/*!

JSZip v3.10.1 - A JavaScript class for generating and reading zip files
<http://stuartk.com/jszip>

(c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>
Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.

JSZip uses the library pako released under the MIT license :
https://github.com/nodeca/pako/blob/main/LICENSE
*/

(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.JSZip = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
"use strict";
var utils = require("./utils");
var support = require("./support");
// private property
var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";


// public method for encoding
exports.encode = function(input) {
    var output = [];
    var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
    var i = 0, len = input.length, remainingBytes = len;

    var isArray = utils.getTypeOf(input) !== "string";
    while (i < input.length) {
        remainingBytes = len - i;

        if (!isArray) {
            chr1 = input.charCodeAt(i++);
            chr2 = i < len ? input.charCodeAt(i++) : 0;
            chr3 = i < len ? input.charCodeAt(i++) : 0;
        } else {
            chr1 = input[i++];
            chr2 = i < len ? input[i++] : 0;
            chr3 = i < len ? input[i++] : 0;
        }

        enc1 = chr1 >> 2;
        enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
        enc3 = remainingBytes > 1 ? (((chr2 & 15) << 2) | (chr3 >> 6)) : 64;
        enc4 = remainingBytes > 2 ? (chr3 & 63) : 64;

        output.push(_keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4));

    }

    return output.join("");
};

// public method for decoding
exports.decode = function(input) {
    var chr1, chr2, chr3;
    var enc1, enc2, enc3, enc4;
    var i = 0, resultIndex = 0;

    var dataUrlPrefix = "data:";

    if (input.substr(0, dataUrlPrefix.length) === dataUrlPrefix) {
        // This is a common error: people give a data url
        // (data:image/png;base64,iVBOR...) with a {base64: true} and
        // wonders why things don't work.
        // We can detect that the string input looks like a data url but we
        // *can't* be sure it is one: removing everything up to the comma would
        // be too dangerous.
        throw new Error("Invalid base64 input, it looks like a data url.");
    }

    input = input.replace(/[^A-Za-z0-9+/=]/g, "");

    var totalLength = input.length * 3 / 4;
    if(input.charAt(input.length - 1) === _keyStr.charAt(64)) {
        totalLength--;
    }
    if(input.charAt(input.length - 2) === _keyStr.charAt(64)) {
        totalLength--;
    }
    if (totalLength % 1 !== 0) {
        // totalLength is not an integer, the length does not match a valid
        // base64 content. That can happen if:
        // - the input is not a base64 content
        // - the input is *almost* a base64 content, with a extra chars at the
        //   beginning or at the end
        // - the input uses a base64 variant (base64url for example)
        throw new Error("Invalid base64 input, bad content length.");
    }
    var output;
    if (support.uint8array) {
        output = new Uint8Array(totalLength|0);
    } else {
        output = new Array(totalLength|0);
    }

    while (i < input.length) {

        enc1 = _keyStr.indexOf(input.charAt(i++));
        enc2 = _keyStr.indexOf(input.charAt(i++));
        enc3 = _keyStr.indexOf(input.charAt(i++));
        enc4 = _keyStr.indexOf(input.charAt(i++));

        chr1 = (enc1 << 2) | (enc2 >> 4);
        chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
        chr3 = ((enc3 & 3) << 6) | enc4;

        output[resultIndex++] = chr1;

        if (enc3 !== 64) {
            output[resultIndex++] = chr2;
        }
        if (enc4 !== 64) {
            output[resultIndex++] = chr3;
        }

    }

    return output;
};

},{"./support":30,"./utils":32}],2:[function(require,module,exports){
"use strict";

var external = require("./external");
var DataWorker = require("./stream/DataWorker");
var Crc32Probe = require("./stream/Crc32Probe");
var DataLengthProbe = require("./stream/DataLengthProbe");

/**
 * Represent a compressed object, with everything needed to decompress it.
 * @constructor
 * @param {number} compressedSize the size of the data compressed.
 * @param {number} uncompressedSize the size of the data after decompression.
 * @param {number} crc32 the crc32 of the decompressed file.
 * @param {object} compression the type of compression, see lib/compressions.js.
 * @param {String|ArrayBuffer|Uint8Array|Buffer} data the compressed data.
 */
function CompressedObject(compressedSize, uncompressedSize, crc32, compression, data) {
    this.compressedSize = compressedSize;
    this.uncompressedSize = uncompressedSize;
    this.crc32 = crc32;
    this.compression = compression;
    this.compressedContent = data;
}

CompressedObject.prototype = {
    /**
     * Create a worker to get the uncompressed content.
     * @return {GenericWorker} the worker.
     */
    getContentWorker: function () {
        var worker = new DataWorker(external.Promise.resolve(this.compressedContent))
            .pipe(this.compression.uncompressWorker())
            .pipe(new DataLengthProbe("data_length"));

        var that = this;
        worker.on("end", function () {
            if (this.streamInfo["data_length"] !== that.uncompressedSize) {
                throw new Error("Bug : uncompressed data size mismatch");
            }
        });
        return worker;
    },
    /**
     * Create a worker to get the compressed content.
     * @return {GenericWorker} the worker.
     */
    getCompressedWorker: function () {
        return new DataWorker(external.Promise.resolve(this.compressedContent))
            .withStreamInfo("compressedSize", this.compressedSize)
            .withStreamInfo("uncompressedSize", this.uncompressedSize)
            .withStreamInfo("crc32", this.crc32)
            .withStreamInfo("compression", this.compression)
        ;
    }
};

/**
 * Chain the given worker with other workers to compress the content with the
 * given compression.
 * @param {GenericWorker} uncompressedWorker the worker to pipe.
 * @param {Object} compression the compression object.
 * @param {Object} compressionOptions the options to use when compressing.
 * @return {GenericWorker} the new worker compressing the content.
 */
CompressedObject.createWorkerFrom = function (uncompressedWorker, compression, compressionOptions) {
    return uncompressedWorker
        .pipe(new Crc32Probe())
        .pipe(new DataLengthProbe("uncompressedSize"))
        .pipe(compression.compressWorker(compressionOptions))
        .pipe(new DataLengthProbe("compressedSize"))
        .withStreamInfo("compression", compression);
};

module.exports = CompressedObject;

},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(require,module,exports){
"use strict";

var GenericWorker = require("./stream/GenericWorker");

exports.STORE = {
    magic: "\x00\x00",
    compressWorker : function () {
        return new GenericWorker("STORE compression");
    },
    uncompressWorker : function () {
        return new GenericWorker("STORE decompression");
    }
};
exports.DEFLATE = require("./flate");

},{"./flate":7,"./stream/GenericWorker":28}],4:[function(require,module,exports){
"use strict";

var utils = require("./utils");

/**
 * The following functions come from pako, from pako/lib/zlib/crc32.js
 * released under the MIT license, see pako https://github.com/nodeca/pako/
 */

// Use ordinary array, since untyped makes no boost here
function makeTable() {
    var c, table = [];

    for(var n =0; n < 256; n++){
        c = n;
        for(var k =0; k < 8; k++){
            c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));
        }
        table[n] = c;
    }

    return table;
}

// Create table on load. Just 255 signed longs. Not a problem.
var crcTable = makeTable();


function crc32(crc, buf, len, pos) {
    var t = crcTable, end = pos + len;

    crc = crc ^ (-1);

    for (var i = pos; i < end; i++ ) {
        crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];
    }

    return (crc ^ (-1)); // >>> 0;
}

// That's all for the pako functions.

/**
 * Compute the crc32 of a string.
 * This is almost the same as the function crc32, but for strings. Using the
 * same function for the two use cases leads to horrible performances.
 * @param {Number} crc the starting value of the crc.
 * @param {String} str the string to use.
 * @param {Number} len the length of the string.
 * @param {Number} pos the starting position for the crc32 computation.
 * @return {Number} the computed crc32.
 */
function crc32str(crc, str, len, pos) {
    var t = crcTable, end = pos + len;

    crc = crc ^ (-1);

    for (var i = pos; i < end; i++ ) {
        crc = (crc >>> 8) ^ t[(crc ^ str.charCodeAt(i)) & 0xFF];
    }

    return (crc ^ (-1)); // >>> 0;
}

module.exports = function crc32wrapper(input, crc) {
    if (typeof input === "undefined" || !input.length) {
        return 0;
    }

    var isArray = utils.getTypeOf(input) !== "string";

    if(isArray) {
        return crc32(crc|0, input, input.length, 0);
    } else {
        return crc32str(crc|0, input, input.length, 0);
    }
};

},{"./utils":32}],5:[function(require,module,exports){
"use strict";
exports.base64 = false;
exports.binary = false;
exports.dir = false;
exports.createFolders = true;
exports.date = null;
exports.compression = null;
exports.compressionOptions = null;
exports.comment = null;
exports.unixPermissions = null;
exports.dosPermissions = null;

},{}],6:[function(require,module,exports){
"use strict";

// load the global object first:
// - it should be better integrated in the system (unhandledRejection in node)
// - the environment may have a custom Promise implementation (see zone.js)
var ES6Promise = null;
if (typeof Promise !== "undefined") {
    ES6Promise = Promise;
} else {
    ES6Promise = require("lie");
}

/**
 * Let the user use/change some implementations.
 */
module.exports = {
    Promise: ES6Promise
};

},{"lie":37}],7:[function(require,module,exports){
"use strict";
var USE_TYPEDARRAY = (typeof Uint8Array !== "undefined") && (typeof Uint16Array !== "undefined") && (typeof Uint32Array !== "undefined");

var pako = require("pako");
var utils = require("./utils");
var GenericWorker = require("./stream/GenericWorker");

var ARRAY_TYPE = USE_TYPEDARRAY ? "uint8array" : "array";

exports.magic = "\x08\x00";

/**
 * Create a worker that uses pako to inflate/deflate.
 * @constructor
 * @param {String} action the name of the pako function to call : either "Deflate" or "Inflate".
 * @param {Object} options the options to use when (de)compressing.
 */
function FlateWorker(action, options) {
    GenericWorker.call(this, "FlateWorker/" + action);

    this._pako = null;
    this._pakoAction = action;
    this._pakoOptions = options;
    // the `meta` object from the last chunk received
    // this allow this worker to pass around metadata
    this.meta = {};
}

utils.inherits(FlateWorker, GenericWorker);

/**
 * @see GenericWorker.processChunk
 */
FlateWorker.prototype.processChunk = function (chunk) {
    this.meta = chunk.meta;
    if (this._pako === null) {
        this._createPako();
    }
    this._pako.push(utils.transformTo(ARRAY_TYPE, chunk.data), false);
};

/**
 * @see GenericWorker.flush
 */
FlateWorker.prototype.flush = function () {
    GenericWorker.prototype.flush.call(this);
    if (this._pako === null) {
        this._createPako();
    }
    this._pako.push([], true);
};
/**
 * @see GenericWorker.cleanUp
 */
FlateWorker.prototype.cleanUp = function () {
    GenericWorker.prototype.cleanUp.call(this);
    this._pako = null;
};

/**
 * Create the _pako object.
 * TODO: lazy-loading this object isn't the best solution but it's the
 * quickest. The best solution is to lazy-load the worker list. See also the
 * issue #446.
 */
FlateWorker.prototype._createPako = function () {
    this._pako = new pako[this._pakoAction]({
        raw: true,
        level: this._pakoOptions.level || -1 // default compression
    });
    var self = this;
    this._pako.onData = function(data) {
        self.push({
            data : data,
            meta : self.meta
        });
    };
};

exports.compressWorker = function (compressionOptions) {
    return new FlateWorker("Deflate", compressionOptions);
};
exports.uncompressWorker = function () {
    return new FlateWorker("Inflate", {});
};

},{"./stream/GenericWorker":28,"./utils":32,"pako":38}],8:[function(require,module,exports){
"use strict";

var utils = require("../utils");
var GenericWorker = require("../stream/GenericWorker");
var utf8 = require("../utf8");
var crc32 = require("../crc32");
var signature = require("../signature");

/**
 * Transform an integer into a string in hexadecimal.
 * @private
 * @param {number} dec the number to convert.
 * @param {number} bytes the number of bytes to generate.
 * @returns {string} the result.
 */
var decToHex = function(dec, bytes) {
    var hex = "", i;
    for (i = 0; i < bytes; i++) {
        hex += String.fromCharCode(dec & 0xff);
        dec = dec >>> 8;
    }
    return hex;
};

/**
 * Generate the UNIX part of the external file attributes.
 * @param {Object} unixPermissions the unix permissions or null.
 * @param {Boolean} isDir true if the entry is a directory, false otherwise.
 * @return {Number} a 32 bit integer.
 *
 * adapted from http://unix.stackexchange.com/questions/14705/the-zip-formats-external-file-attribute :
 *
 * TTTTsstrwxrwxrwx0000000000ADVSHR
 * ^^^^____________________________ file type, see zipinfo.c (UNX_*)
 *     ^^^_________________________ setuid, setgid, sticky
 *        ^^^^^^^^^________________ permissions
 *                 ^^^^^^^^^^______ not used ?
 *                           ^^^^^^ DOS attribute bits : Archive, Directory, Volume label, System file, Hidden, Read only
 */
var generateUnixExternalFileAttr = function (unixPermissions, isDir) {

    var result = unixPermissions;
    if (!unixPermissions) {
        // I can't use octal values in strict mode, hence the hexa.
        //  040775 => 0x41fd
        // 0100664 => 0x81b4
        result = isDir ? 0x41fd : 0x81b4;
    }
    return (result & 0xFFFF) << 16;
};

/**
 * Generate the DOS part of the external file attributes.
 * @param {Object} dosPermissions the dos permissions or null.
 * @param {Boolean} isDir true if the entry is a directory, false otherwise.
 * @return {Number} a 32 bit integer.
 *
 * Bit 0     Read-Only
 * Bit 1     Hidden
 * Bit 2     System
 * Bit 3     Volume Label
 * Bit 4     Directory
 * Bit 5     Archive
 */
var generateDosExternalFileAttr = function (dosPermissions) {
    // the dir flag is already set for compatibility
    return (dosPermissions || 0)  & 0x3F;
};

/**
 * Generate the various parts used in the construction of the final zip file.
 * @param {Object} streamInfo the hash with information about the compressed file.
 * @param {Boolean} streamedContent is the content streamed ?
 * @param {Boolean} streamingEnded is the stream finished ?
 * @param {number} offset the current offset from the start of the zip file.
 * @param {String} platform let's pretend we are this platform (change platform dependents fields)
 * @param {Function} encodeFileName the function to encode the file name / comment.
 * @return {Object} the zip parts.
 */
var generateZipParts = function(streamInfo, streamedContent, streamingEnded, offset, platform, encodeFileName) {
    var file = streamInfo["file"],
        compression = streamInfo["compression"],
        useCustomEncoding = encodeFileName !== utf8.utf8encode,
        encodedFileName = utils.transformTo("string", encodeFileName(file.name)),
        utfEncodedFileName = utils.transformTo("string", utf8.utf8encode(file.name)),
        comment = file.comment,
        encodedComment = utils.transformTo("string", encodeFileName(comment)),
        utfEncodedComment = utils.transformTo("string", utf8.utf8encode(comment)),
        useUTF8ForFileName = utfEncodedFileName.length !== file.name.length,
        useUTF8ForComment = utfEncodedComment.length !== comment.length,
        dosTime,
        dosDate,
        extraFields = "",
        unicodePathExtraField = "",
        unicodeCommentExtraField = "",
        dir = file.dir,
        date = file.date;


    var dataInfo = {
        crc32 : 0,
        compressedSize : 0,
        uncompressedSize : 0
    };

    // if the content is streamed, the sizes/crc32 are only available AFTER
    // the end of the stream.
    if (!streamedContent || streamingEnded) {
        dataInfo.crc32 = streamInfo["crc32"];
        dataInfo.compressedSize = streamInfo["compressedSize"];
        dataInfo.uncompressedSize = streamInfo["uncompressedSize"];
    }

    var bitflag = 0;
    if (streamedContent) {
        // Bit 3: the sizes/crc32 are set to zero in the local header.
        // The correct values are put in the data descriptor immediately
        // following the compressed data.
        bitflag |= 0x0008;
    }
    if (!useCustomEncoding && (useUTF8ForFileName || useUTF8ForComment)) {
        // Bit 11: Language encoding flag (EFS).
        bitflag |= 0x0800;
    }


    var extFileAttr = 0;
    var versionMadeBy = 0;
    if (dir) {
        // dos or unix, we set the dos dir flag
        extFileAttr |= 0x00010;
    }
    if(platform === "UNIX") {
        versionMadeBy = 0x031E; // UNIX, version 3.0
        extFileAttr |= generateUnixExternalFileAttr(file.unixPermissions, dir);
    } else { // DOS or other, fallback to DOS
        versionMadeBy = 0x0014; // DOS, version 2.0
        extFileAttr |= generateDosExternalFileAttr(file.dosPermissions, dir);
    }

    // date
    // @see http://www.delorie.com/djgpp/doc/rbinter/it/52/13.html
    // @see http://www.delorie.com/djgpp/doc/rbinter/it/65/16.html
    // @see http://www.delorie.com/djgpp/doc/rbinter/it/66/16.html

    dosTime = date.getUTCHours();
    dosTime = dosTime << 6;
    dosTime = dosTime | date.getUTCMinutes();
    dosTime = dosTime << 5;
    dosTime = dosTime | date.getUTCSeconds() / 2;

    dosDate = date.getUTCFullYear() - 1980;
    dosDate = dosDate << 4;
    dosDate = dosDate | (date.getUTCMonth() + 1);
    dosDate = dosDate << 5;
    dosDate = dosDate | date.getUTCDate();

    if (useUTF8ForFileName) {
        // set the unicode path extra field. unzip needs at least one extra
        // field to correctly handle unicode path, so using the path is as good
        // as any other information. This could improve the situation with
        // other archive managers too.
        // This field is usually used without the utf8 flag, with a non
        // unicode path in the header (winrar, winzip). This helps (a bit)
        // with the messy Windows' default compressed folders feature but
        // breaks on p7zip which doesn't seek the unicode path extra field.
        // So for now, UTF-8 everywhere !
        unicodePathExtraField =
            // Version
            decToHex(1, 1) +
            // NameCRC32
            decToHex(crc32(encodedFileName), 4) +
            // UnicodeName
            utfEncodedFileName;

        extraFields +=
            // Info-ZIP Unicode Path Extra Field
            "\x75\x70" +
            // size
            decToHex(unicodePathExtraField.length, 2) +
            // content
            unicodePathExtraField;
    }

    if(useUTF8ForComment) {

        unicodeCommentExtraField =
            // Version
            decToHex(1, 1) +
            // CommentCRC32
            decToHex(crc32(encodedComment), 4) +
            // UnicodeName
            utfEncodedComment;

        extraFields +=
            // Info-ZIP Unicode Path Extra Field
            "\x75\x63" +
            // size
            decToHex(unicodeCommentExtraField.length, 2) +
            // content
            unicodeCommentExtraField;
    }

    var header = "";

    // version needed to extract
    header += "\x0A\x00";
    // general purpose bit flag
    header += decToHex(bitflag, 2);
    // compression method
    header += compression.magic;
    // last mod file time
    header += decToHex(dosTime, 2);
    // last mod file date
    header += decToHex(dosDate, 2);
    // crc-32
    header += decToHex(dataInfo.crc32, 4);
    // compressed size
    header += decToHex(dataInfo.compressedSize, 4);
    // uncompressed size
    header += decToHex(dataInfo.uncompressedSize, 4);
    // file name length
    header += decToHex(encodedFileName.length, 2);
    // extra field length
    header += decToHex(extraFields.length, 2);


    var fileRecord = signature.LOCAL_FILE_HEADER + header + encodedFileName + extraFields;

    var dirRecord = signature.CENTRAL_FILE_HEADER +
        // version made by (00: DOS)
        decToHex(versionMadeBy, 2) +
        // file header (common to file and central directory)
        header +
        // file comment length
        decToHex(encodedComment.length, 2) +
        // disk number start
        "\x00\x00" +
        // internal file attributes TODO
        "\x00\x00" +
        // external file attributes
        decToHex(extFileAttr, 4) +
        // relative offset of local header
        decToHex(offset, 4) +
        // file name
        encodedFileName +
        // extra field
        extraFields +
        // file comment
        encodedComment;

    return {
        fileRecord: fileRecord,
        dirRecord: dirRecord
    };
};

/**
 * Generate the EOCD record.
 * @param {Number} entriesCount the number of entries in the zip file.
 * @param {Number} centralDirLength the length (in bytes) of the central dir.
 * @param {Number} localDirLength the length (in bytes) of the local dir.
 * @param {String} comment the zip file comment as a binary string.
 * @param {Function} encodeFileName the function to encode the comment.
 * @return {String} the EOCD record.
 */
var generateCentralDirectoryEnd = function (entriesCount, centralDirLength, localDirLength, comment, encodeFileName) {
    var dirEnd = "";
    var encodedComment = utils.transformTo("string", encodeFileName(comment));

    // end of central dir signature
    dirEnd = signature.CENTRAL_DIRECTORY_END +
        // number of this disk
        "\x00\x00" +
        // number of the disk with the start of the central directory
        "\x00\x00" +
        // total number of entries in the central directory on this disk
        decToHex(entriesCount, 2) +
        // total number of entries in the central directory
        decToHex(entriesCount, 2) +
        // size of the central directory   4 bytes
        decToHex(centralDirLength, 4) +
        // offset of start of central directory with respect to the starting disk number
        decToHex(localDirLength, 4) +
        // .ZIP file comment length
        decToHex(encodedComment.length, 2) +
        // .ZIP file comment
        encodedComment;

    return dirEnd;
};

/**
 * Generate data descriptors for a file entry.
 * @param {Object} streamInfo the hash generated by a worker, containing information
 * on the file entry.
 * @return {String} the data descriptors.
 */
var generateDataDescriptors = function (streamInfo) {
    var descriptor = "";
    descriptor = signature.DATA_DESCRIPTOR +
        // crc-32                          4 bytes
        decToHex(streamInfo["crc32"], 4) +
        // compressed size                 4 bytes
        decToHex(streamInfo["compressedSize"], 4) +
        // uncompressed size               4 bytes
        decToHex(streamInfo["uncompressedSize"], 4);

    return descriptor;
};


/**
 * A worker to concatenate other workers to create a zip file.
 * @param {Boolean} streamFiles `true` to stream the content of the files,
 * `false` to accumulate it.
 * @param {String} comment the comment to use.
 * @param {String} platform the platform to use, "UNIX" or "DOS".
 * @param {Function} encodeFileName the function to encode file names and comments.
 */
function ZipFileWorker(streamFiles, comment, platform, encodeFileName) {
    GenericWorker.call(this, "ZipFileWorker");
    // The number of bytes written so far. This doesn't count accumulated chunks.
    this.bytesWritten = 0;
    // The comment of the zip file
    this.zipComment = comment;
    // The platform "generating" the zip file.
    this.zipPlatform = platform;
    // the function to encode file names and comments.
    this.encodeFileName = encodeFileName;
    // Should we stream the content of the files ?
    this.streamFiles = streamFiles;
    // If `streamFiles` is false, we will need to accumulate the content of the
    // files to calculate sizes / crc32 (and write them *before* the content).
    // This boolean indicates if we are accumulating chunks (it will change a lot
    // during the lifetime of this worker).
    this.accumulate = false;
    // The buffer receiving chunks when accumulating content.
    this.contentBuffer = [];
    // The list of generated directory records.
    this.dirRecords = [];
    // The offset (in bytes) from the beginning of the zip file for the current source.
    this.currentSourceOffset = 0;
    // The total number of entries in this zip file.
    this.entriesCount = 0;
    // the name of the file currently being added, null when handling the end of the zip file.
    // Used for the emitted metadata.
    this.currentFile = null;



    this._sources = [];
}
utils.inherits(ZipFileWorker, GenericWorker);

/**
 * @see GenericWorker.push
 */
ZipFileWorker.prototype.push = function (chunk) {

    var currentFilePercent = chunk.meta.percent || 0;
    var entriesCount = this.entriesCount;
    var remainingFiles = this._sources.length;

    if(this.accumulate) {
        this.contentBuffer.push(chunk);
    } else {
        this.bytesWritten += chunk.data.length;

        GenericWorker.prototype.push.call(this, {
            data : chunk.data,
            meta : {
                currentFile : this.currentFile,
                percent : entriesCount ? (currentFilePercent + 100 * (entriesCount - remainingFiles - 1)) / entriesCount : 100
            }
        });
    }
};

/**
 * The worker started a new source (an other worker).
 * @param {Object} streamInfo the streamInfo object from the new source.
 */
ZipFileWorker.prototype.openedSource = function (streamInfo) {
    this.currentSourceOffset = this.bytesWritten;
    this.currentFile = streamInfo["file"].name;

    var streamedContent = this.streamFiles && !streamInfo["file"].dir;

    // don't stream folders (because they don't have any content)
    if(streamedContent) {
        var record = generateZipParts(streamInfo, streamedContent, false, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);
        this.push({
            data : record.fileRecord,
            meta : {percent:0}
        });
    } else {
        // we need to wait for the whole file before pushing anything
        this.accumulate = true;
    }
};

/**
 * The worker finished a source (an other worker).
 * @param {Object} streamInfo the streamInfo object from the finished source.
 */
ZipFileWorker.prototype.closedSource = function (streamInfo) {
    this.accumulate = false;
    var streamedContent = this.streamFiles && !streamInfo["file"].dir;
    var record = generateZipParts(streamInfo, streamedContent, true, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);

    this.dirRecords.push(record.dirRecord);
    if(streamedContent) {
        // after the streamed file, we put data descriptors
        this.push({
            data : generateDataDescriptors(streamInfo),
            meta : {percent:100}
        });
    } else {
        // the content wasn't streamed, we need to push everything now
        // first the file record, then the content
        this.push({
            data : record.fileRecord,
            meta : {percent:0}
        });
        while(this.contentBuffer.length) {
            this.push(this.contentBuffer.shift());
        }
    }
    this.currentFile = null;
};

/**
 * @see GenericWorker.flush
 */
ZipFileWorker.prototype.flush = function () {

    var localDirLength = this.bytesWritten;
    for(var i = 0; i < this.dirRecords.length; i++) {
        this.push({
            data : this.dirRecords[i],
            meta : {percent:100}
        });
    }
    var centralDirLength = this.bytesWritten - localDirLength;

    var dirEnd = generateCentralDirectoryEnd(this.dirRecords.length, centralDirLength, localDirLength, this.zipComment, this.encodeFileName);

    this.push({
        data : dirEnd,
        meta : {percent:100}
    });
};

/**
 * Prepare the next source to be read.
 */
ZipFileWorker.prototype.prepareNextSource = function () {
    this.previous = this._sources.shift();
    this.openedSource(this.previous.streamInfo);
    if (this.isPaused) {
        this.previous.pause();
    } else {
        this.previous.resume();
    }
};

/**
 * @see GenericWorker.registerPrevious
 */
ZipFileWorker.prototype.registerPrevious = function (previous) {
    this._sources.push(previous);
    var self = this;

    previous.on("data", function (chunk) {
        self.processChunk(chunk);
    });
    previous.on("end", function () {
        self.closedSource(self.previous.streamInfo);
        if(self._sources.length) {
            self.prepareNextSource();
        } else {
            self.end();
        }
    });
    previous.on("error", function (e) {
        self.error(e);
    });
    return this;
};

/**
 * @see GenericWorker.resume
 */
ZipFileWorker.prototype.resume = function () {
    if(!GenericWorker.prototype.resume.call(this)) {
        return false;
    }

    if (!this.previous && this._sources.length) {
        this.prepareNextSource();
        return true;
    }
    if (!this.previous && !this._sources.length && !this.generatedError) {
        this.end();
        return true;
    }
};

/**
 * @see GenericWorker.error
 */
ZipFileWorker.prototype.error = function (e) {
    var sources = this._sources;
    if(!GenericWorker.prototype.error.call(this, e)) {
        return false;
    }
    for(var i = 0; i < sources.length; i++) {
        try {
            sources[i].error(e);
        } catch(e) {
            // the `error` exploded, nothing to do
        }
    }
    return true;
};

/**
 * @see GenericWorker.lock
 */
ZipFileWorker.prototype.lock = function () {
    GenericWorker.prototype.lock.call(this);
    var sources = this._sources;
    for(var i = 0; i < sources.length; i++) {
        sources[i].lock();
    }
};

module.exports = ZipFileWorker;

},{"../crc32":4,"../signature":23,"../stream/GenericWorker":28,"../utf8":31,"../utils":32}],9:[function(require,module,exports){
"use strict";

var compressions = require("../compressions");
var ZipFileWorker = require("./ZipFileWorker");

/**
 * Find the compression to use.
 * @param {String} fileCompression the compression defined at the file level, if any.
 * @param {String} zipCompression the compression defined at the load() level.
 * @return {Object} the compression object to use.
 */
var getCompression = function (fileCompression, zipCompression) {

    var compressionName = fileCompression || zipCompression;
    var compression = compressions[compressionName];
    if (!compression) {
        throw new Error(compressionName + " is not a valid compression method !");
    }
    return compression;
};

/**
 * Create a worker to generate a zip file.
 * @param {JSZip} zip the JSZip instance at the right root level.
 * @param {Object} options to generate the zip file.
 * @param {String} comment the comment to use.
 */
exports.generateWorker = function (zip, options, comment) {

    var zipFileWorker = new ZipFileWorker(options.streamFiles, comment, options.platform, options.encodeFileName);
    var entriesCount = 0;
    try {

        zip.forEach(function (relativePath, file) {
            entriesCount++;
            var compression = getCompression(file.options.compression, options.compression);
            var compressionOptions = file.options.compressionOptions || options.compressionOptions || {};
            var dir = file.dir, date = file.date;

            file._compressWorker(compression, compressionOptions)
                .withStreamInfo("file", {
                    name : relativePath,
                    dir : dir,
                    date : date,
                    comment : file.comment || "",
                    unixPermissions : file.unixPermissions,
                    dosPermissions : file.dosPermissions
                })
                .pipe(zipFileWorker);
        });
        zipFileWorker.entriesCount = entriesCount;
    } catch (e) {
        zipFileWorker.error(e);
    }

    return zipFileWorker;
};

},{"../compressions":3,"./ZipFileWorker":8}],10:[function(require,module,exports){
"use strict";

/**
 * Representation a of zip file in js
 * @constructor
 */
function JSZip() {
    // if this constructor is used without `new`, it adds `new` before itself:
    if(!(this instanceof JSZip)) {
        return new JSZip();
    }

    if(arguments.length) {
        throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");
    }

    // object containing the files :
    // {
    //   "folder/" : {...},
    //   "folder/data.txt" : {...}
    // }
    // NOTE: we use a null prototype because we do not
    // want filenames like "toString" coming from a zip file
    // to overwrite methods and attributes in a normal Object.
    this.files = Object.create(null);

    this.comment = null;

    // Where we are in the hierarchy
    this.root = "";
    this.clone = function() {
        var newObj = new JSZip();
        for (var i in this) {
            if (typeof this[i] !== "function") {
                newObj[i] = this[i];
            }
        }
        return newObj;
    };
}
JSZip.prototype = require("./object");
JSZip.prototype.loadAsync = require("./load");
JSZip.support = require("./support");
JSZip.defaults = require("./defaults");

// TODO find a better way to handle this version,
// a require('package.json').version doesn't work with webpack, see #327
JSZip.version = "3.10.1";

JSZip.loadAsync = function (content, options) {
    return new JSZip().loadAsync(content, options);
};

JSZip.external = require("./external");
module.exports = JSZip;

},{"./defaults":5,"./external":6,"./load":11,"./object":15,"./support":30}],11:[function(require,module,exports){
"use strict";
var utils = require("./utils");
var external = require("./external");
var utf8 = require("./utf8");
var ZipEntries = require("./zipEntries");
var Crc32Probe = require("./stream/Crc32Probe");
var nodejsUtils = require("./nodejsUtils");

/**
 * Check the CRC32 of an entry.
 * @param {ZipEntry} zipEntry the zip entry to check.
 * @return {Promise} the result.
 */
function checkEntryCRC32(zipEntry) {
    return new external.Promise(function (resolve, reject) {
        var worker = zipEntry.decompressed.getContentWorker().pipe(new Crc32Probe());
        worker.on("error", function (e) {
            reject(e);
        })
            .on("end", function () {
                if (worker.streamInfo.crc32 !== zipEntry.decompressed.crc32) {
                    reject(new Error("Corrupted zip : CRC32 mismatch"));
                } else {
                    resolve();
                }
            })
            .resume();
    });
}

module.exports = function (data, options) {
    var zip = this;
    options = utils.extend(options || {}, {
        base64: false,
        checkCRC32: false,
        optimizedBinaryString: false,
        createFolders: false,
        decodeFileName: utf8.utf8decode
    });

    if (nodejsUtils.isNode && nodejsUtils.isStream(data)) {
        return external.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file."));
    }

    return utils.prepareContent("the loaded zip file", data, true, options.optimizedBinaryString, options.base64)
        .then(function (data) {
            var zipEntries = new ZipEntries(options);
            zipEntries.load(data);
            return zipEntries;
        }).then(function checkCRC32(zipEntries) {
            var promises = [external.Promise.resolve(zipEntries)];
            var files = zipEntries.files;
            if (options.checkCRC32) {
                for (var i = 0; i < files.length; i++) {
                    promises.push(checkEntryCRC32(files[i]));
                }
            }
            return external.Promise.all(promises);
        }).then(function addFiles(results) {
            var zipEntries = results.shift();
            var files = zipEntries.files;
            for (var i = 0; i < files.length; i++) {
                var input = files[i];

                var unsafeName = input.fileNameStr;
                var safeName = utils.resolve(input.fileNameStr);

                zip.file(safeName, input.decompressed, {
                    binary: true,
                    optimizedBinaryString: true,
                    date: input.date,
                    dir: input.dir,
                    comment: input.fileCommentStr.length ? input.fileCommentStr : null,
                    unixPermissions: input.unixPermissions,
                    dosPermissions: input.dosPermissions,
                    createFolders: options.createFolders
                });
                if (!input.dir) {
                    zip.file(safeName).unsafeOriginalName = unsafeName;
                }
            }
            if (zipEntries.zipComment.length) {
                zip.comment = zipEntries.zipComment;
            }

            return zip;
        });
};

},{"./external":6,"./nodejsUtils":14,"./stream/Crc32Probe":25,"./utf8":31,"./utils":32,"./zipEntries":33}],12:[function(require,module,exports){
"use strict";

var utils = require("../utils");
var GenericWorker = require("../stream/GenericWorker");

/**
 * A worker that use a nodejs stream as source.
 * @constructor
 * @param {String} filename the name of the file entry for this stream.
 * @param {Readable} stream the nodejs stream.
 */
function NodejsStreamInputAdapter(filename, stream) {
    GenericWorker.call(this, "Nodejs stream input adapter for " + filename);
    this._upstreamEnded = false;
    this._bindStream(stream);
}

utils.inherits(NodejsStreamInputAdapter, GenericWorker);

/**
 * Prepare the stream and bind the callbacks on it.
 * Do this ASAP on node 0.10 ! A lazy binding doesn't always work.
 * @param {Stream} stream the nodejs stream to use.
 */
NodejsStreamInputAdapter.prototype._bindStream = function (stream) {
    var self = this;
    this._stream = stream;
    stream.pause();
    stream
        .on("data", function (chunk) {
            self.push({
                data: chunk,
                meta : {
                    percent : 0
                }
            });
        })
        .on("error", function (e) {
            if(self.isPaused) {
                this.generatedError = e;
            } else {
                self.error(e);
            }
        })
        .on("end", function () {
            if(self.isPaused) {
                self._upstreamEnded = true;
            } else {
                self.end();
            }
        });
};
NodejsStreamInputAdapter.prototype.pause = function () {
    if(!GenericWorker.prototype.pause.call(this)) {
        return false;
    }
    this._stream.pause();
    return true;
};
NodejsStreamInputAdapter.prototype.resume = function () {
    if(!GenericWorker.prototype.resume.call(this)) {
        return false;
    }

    if(this._upstreamEnded) {
        this.end();
    } else {
        this._stream.resume();
    }

    return true;
};

module.exports = NodejsStreamInputAdapter;

},{"../stream/GenericWorker":28,"../utils":32}],13:[function(require,module,exports){
"use strict";

var Readable = require("readable-stream").Readable;

var utils = require("../utils");
utils.inherits(NodejsStreamOutputAdapter, Readable);

/**
* A nodejs stream using a worker as source.
* @see the SourceWrapper in http://nodejs.org/api/stream.html
* @constructor
* @param {StreamHelper} helper the helper wrapping the worker
* @param {Object} options the nodejs stream options
* @param {Function} updateCb the update callback.
*/
function NodejsStreamOutputAdapter(helper, options, updateCb) {
    Readable.call(this, options);
    this._helper = helper;

    var self = this;
    helper.on("data", function (data, meta) {
        if (!self.push(data)) {
            self._helper.pause();
        }
        if(updateCb) {
            updateCb(meta);
        }
    })
        .on("error", function(e) {
            self.emit("error", e);
        })
        .on("end", function () {
            self.push(null);
        });
}


NodejsStreamOutputAdapter.prototype._read = function() {
    this._helper.resume();
};

module.exports = NodejsStreamOutputAdapter;

},{"../utils":32,"readable-stream":16}],14:[function(require,module,exports){
"use strict";

module.exports = {
    /**
     * True if this is running in Nodejs, will be undefined in a browser.
     * In a browser, browserify won't include this file and the whole module
     * will be resolved an empty object.
     */
    isNode : typeof Buffer !== "undefined",
    /**
     * Create a new nodejs Buffer from an existing content.
     * @param {Object} data the data to pass to the constructor.
     * @param {String} encoding the encoding to use.
     * @return {Buffer} a new Buffer.
     */
    newBufferFrom: function(data, encoding) {
        if (Buffer.from && Buffer.from !== Uint8Array.from) {
            return Buffer.from(data, encoding);
        } else {
            if (typeof data === "number") {
                // Safeguard for old Node.js versions. On newer versions,
                // Buffer.from(number) / Buffer(number, encoding) already throw.
                throw new Error("The \"data\" argument must not be a number");
            }
            return new Buffer(data, encoding);
        }
    },
    /**
     * Create a new nodejs Buffer with the specified size.
     * @param {Integer} size the size of the buffer.
     * @return {Buffer} a new Buffer.
     */
    allocBuffer: function (size) {
        if (Buffer.alloc) {
            return Buffer.alloc(size);
        } else {
            var buf = new Buffer(size);
            buf.fill(0);
            return buf;
        }
    },
    /**
     * Find out if an object is a Buffer.
     * @param {Object} b the object to test.
     * @return {Boolean} true if the object is a Buffer, false otherwise.
     */
    isBuffer : function(b){
        return Buffer.isBuffer(b);
    },

    isStream : function (obj) {
        return obj &&
            typeof obj.on === "function" &&
            typeof obj.pause === "function" &&
            typeof obj.resume === "function";
    }
};

},{}],15:[function(require,module,exports){
"use strict";
var utf8 = require("./utf8");
var utils = require("./utils");
var GenericWorker = require("./stream/GenericWorker");
var StreamHelper = require("./stream/StreamHelper");
var defaults = require("./defaults");
var CompressedObject = require("./compressedObject");
var ZipObject = require("./zipObject");
var generate = require("./generate");
var nodejsUtils = require("./nodejsUtils");
var NodejsStreamInputAdapter = require("./nodejs/NodejsStreamInputAdapter");


/**
 * Add a file in the current folder.
 * @private
 * @param {string} name the name of the file
 * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data of the file
 * @param {Object} originalOptions the options of the file
 * @return {Object} the new file.
 */
var fileAdd = function(name, data, originalOptions) {
    // be sure sub folders exist
    var dataType = utils.getTypeOf(data),
        parent;


    /*
     * Correct options.
     */

    var o = utils.extend(originalOptions || {}, defaults);
    o.date = o.date || new Date();
    if (o.compression !== null) {
        o.compression = o.compression.toUpperCase();
    }

    if (typeof o.unixPermissions === "string") {
        o.unixPermissions = parseInt(o.unixPermissions, 8);
    }

    // UNX_IFDIR  0040000 see zipinfo.c
    if (o.unixPermissions && (o.unixPermissions & 0x4000)) {
        o.dir = true;
    }
    // Bit 4    Directory
    if (o.dosPermissions && (o.dosPermissions & 0x0010)) {
        o.dir = true;
    }

    if (o.dir) {
        name = forceTrailingSlash(name);
    }
    if (o.createFolders && (parent = parentFolder(name))) {
        folderAdd.call(this, parent, true);
    }

    var isUnicodeString = dataType === "string" && o.binary === false && o.base64 === false;
    if (!originalOptions || typeof originalOptions.binary === "undefined") {
        o.binary = !isUnicodeString;
    }


    var isCompressedEmpty = (data instanceof CompressedObject) && data.uncompressedSize === 0;

    if (isCompressedEmpty || o.dir || !data || data.length === 0) {
        o.base64 = false;
        o.binary = true;
        data = "";
        o.compression = "STORE";
        dataType = "string";
    }

    /*
     * Convert content to fit.
     */

    var zipObjectContent = null;
    if (data instanceof CompressedObject || data instanceof GenericWorker) {
        zipObjectContent = data;
    } else if (nodejsUtils.isNode && nodejsUtils.isStream(data)) {
        zipObjectContent = new NodejsStreamInputAdapter(name, data);
    } else {
        zipObjectContent = utils.prepareContent(name, data, o.binary, o.optimizedBinaryString, o.base64);
    }

    var object = new ZipObject(name, zipObjectContent, o);
    this.files[name] = object;
    /*
    TODO: we can't throw an exception because we have async promises
    (we can have a promise of a Date() for example) but returning a
    promise is useless because file(name, data) returns the JSZip
    object for chaining. Should we break that to allow the user
    to catch the error ?

    return external.Promise.resolve(zipObjectContent)
    .then(function () {
        return object;
    });
    */
};

/**
 * Find the parent folder of the path.
 * @private
 * @param {string} path the path to use
 * @return {string} the parent folder, or ""
 */
var parentFolder = function (path) {
    if (path.slice(-1) === "/") {
        path = path.substring(0, path.length - 1);
    }
    var lastSlash = path.lastIndexOf("/");
    return (lastSlash > 0) ? path.substring(0, lastSlash) : "";
};

/**
 * Returns the path with a slash at the end.
 * @private
 * @param {String} path the path to check.
 * @return {String} the path with a trailing slash.
 */
var forceTrailingSlash = function(path) {
    // Check the name ends with a /
    if (path.slice(-1) !== "/") {
        path += "/"; // IE doesn't like substr(-1)
    }
    return path;
};

/**
 * Add a (sub) folder in the current folder.
 * @private
 * @param {string} name the folder's name
 * @param {boolean=} [createFolders] If true, automatically create sub
 *  folders. Defaults to false.
 * @return {Object} the new folder.
 */
var folderAdd = function(name, createFolders) {
    createFolders = (typeof createFolders !== "undefined") ? createFolders : defaults.createFolders;

    name = forceTrailingSlash(name);

    // Does this folder already exist?
    if (!this.files[name]) {
        fileAdd.call(this, name, null, {
            dir: true,
            createFolders: createFolders
        });
    }
    return this.files[name];
};

/**
* Cross-window, cross-Node-context regular expression detection
* @param  {Object}  object Anything
* @return {Boolean}        true if the object is a regular expression,
* false otherwise
*/
function isRegExp(object) {
    return Object.prototype.toString.call(object) === "[object RegExp]";
}

// return the actual prototype of JSZip
var out = {
    /**
     * @see loadAsync
     */
    load: function() {
        throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.");
    },


    /**
     * Call a callback function for each entry at this folder level.
     * @param {Function} cb the callback function:
     * function (relativePath, file) {...}
     * It takes 2 arguments : the relative path and the file.
     */
    forEach: function(cb) {
        var filename, relativePath, file;
        // ignore warning about unwanted properties because this.files is a null prototype object
        /* eslint-disable-next-line guard-for-in */
        for (filename in this.files) {
            file = this.files[filename];
            relativePath = filename.slice(this.root.length, filename.length);
            if (relativePath && filename.slice(0, this.root.length) === this.root) { // the file is in the current root
                cb(relativePath, file); // TODO reverse the parameters ? need to be clean AND consistent with the filter search fn...
            }
        }
    },

    /**
     * Filter nested files/folders with the specified function.
     * @param {Function} search the predicate to use :
     * function (relativePath, file) {...}
     * It takes 2 arguments : the relative path and the file.
     * @return {Array} An array of matching elements.
     */
    filter: function(search) {
        var result = [];
        this.forEach(function (relativePath, entry) {
            if (search(relativePath, entry)) { // the file matches the function
                result.push(entry);
            }

        });
        return result;
    },

    /**
     * Add a file to the zip file, or search a file.
     * @param   {string|RegExp} name The name of the file to add (if data is defined),
     * the name of the file to find (if no data) or a regex to match files.
     * @param   {String|ArrayBuffer|Uint8Array|Buffer} data  The file data, either raw or base64 encoded
     * @param   {Object} o     File options
     * @return  {JSZip|Object|Array} this JSZip object (when adding a file),
     * a file (when searching by string) or an array of files (when searching by regex).
     */
    file: function(name, data, o) {
        if (arguments.length === 1) {
            if (isRegExp(name)) {
                var regexp = name;
                return this.filter(function(relativePath, file) {
                    return !file.dir && regexp.test(relativePath);
                });
            }
            else { // text
                var obj = this.files[this.root + name];
                if (obj && !obj.dir) {
                    return obj;
                } else {
                    return null;
                }
            }
        }
        else { // more than one argument : we have data !
            name = this.root + name;
            fileAdd.call(this, name, data, o);
        }
        return this;
    },

    /**
     * Add a directory to the zip file, or search.
     * @param   {String|RegExp} arg The name of the directory to add, or a regex to search folders.
     * @return  {JSZip} an object with the new directory as the root, or an array containing matching folders.
     */
    folder: function(arg) {
        if (!arg) {
            return this;
        }

        if (isRegExp(arg)) {
            return this.filter(function(relativePath, file) {
                return file.dir && arg.test(relativePath);
            });
        }

        // else, name is a new folder
        var name = this.root + arg;
        var newFolder = folderAdd.call(this, name);

        // Allow chaining by returning a new object with this folder as the root
        var ret = this.clone();
        ret.root = newFolder.name;
        return ret;
    },

    /**
     * Delete a file, or a directory and all sub-files, from the zip
     * @param {string} name the name of the file to delete
     * @return {JSZip} this JSZip object
     */
    remove: function(name) {
        name = this.root + name;
        var file = this.files[name];
        if (!file) {
            // Look for any folders
            if (name.slice(-1) !== "/") {
                name += "/";
            }
            file = this.files[name];
        }

        if (file && !file.dir) {
            // file
            delete this.files[name];
        } else {
            // maybe a folder, delete recursively
            var kids = this.filter(function(relativePath, file) {
                return file.name.slice(0, name.length) === name;
            });
            for (var i = 0; i < kids.length; i++) {
                delete this.files[kids[i].name];
            }
        }

        return this;
    },

    /**
     * @deprecated This method has been removed in JSZip 3.0, please check the upgrade guide.
     */
    generate: function() {
        throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.");
    },

    /**
     * Generate the complete zip file as an internal stream.
     * @param {Object} options the options to generate the zip file :
     * - compression, "STORE" by default.
     * - type, "base64" by default. Values are : string, base64, uint8array, arraybuffer, blob.
     * @return {StreamHelper} the streamed zip file.
     */
    generateInternalStream: function(options) {
        var worker, opts = {};
        try {
            opts = utils.extend(options || {}, {
                streamFiles: false,
                compression: "STORE",
                compressionOptions : null,
                type: "",
                platform: "DOS",
                comment: null,
                mimeType: "application/zip",
                encodeFileName: utf8.utf8encode
            });

            opts.type = opts.type.toLowerCase();
            opts.compression = opts.compression.toUpperCase();

            // "binarystring" is preferred but the internals use "string".
            if(opts.type === "binarystring") {
                opts.type = "string";
            }

            if (!opts.type) {
                throw new Error("No output type specified.");
            }

            utils.checkSupport(opts.type);

            // accept nodejs `process.platform`
            if(
                opts.platform === "darwin" ||
                opts.platform === "freebsd" ||
                opts.platform === "linux" ||
                opts.platform === "sunos"
            ) {
                opts.platform = "UNIX";
            }
            if (opts.platform === "win32") {
                opts.platform = "DOS";
            }

            var comment = opts.comment || this.comment || "";
            worker = generate.generateWorker(this, opts, comment);
        } catch (e) {
            worker = new GenericWorker("error");
            worker.error(e);
        }
        return new StreamHelper(worker, opts.type || "string", opts.mimeType);
    },
    /**
     * Generate the complete zip file asynchronously.
     * @see generateInternalStream
     */
    generateAsync: function(options, onUpdate) {
        return this.generateInternalStream(options).accumulate(onUpdate);
    },
    /**
     * Generate the complete zip file asynchronously.
     * @see generateInternalStream
     */
    generateNodeStream: function(options, onUpdate) {
        options = options || {};
        if (!options.type) {
            options.type = "nodebuffer";
        }
        return this.generateInternalStream(options).toNodejsStream(onUpdate);
    }
};
module.exports = out;

},{"./compressedObject":2,"./defaults":5,"./generate":9,"./nodejs/NodejsStreamInputAdapter":12,"./nodejsUtils":14,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31,"./utils":32,"./zipObject":35}],16:[function(require,module,exports){
"use strict";
/*
 * This file is used by module bundlers (browserify/webpack/etc) when
 * including a stream implementation. We use "readable-stream" to get a
 * consistent behavior between nodejs versions but bundlers often have a shim
 * for "stream". Using this shim greatly improve the compatibility and greatly
 * reduce the final size of the bundle (only one stream implementation, not
 * two).
 */
module.exports = require("stream");

},{"stream":undefined}],17:[function(require,module,exports){
"use strict";
var DataReader = require("./DataReader");
var utils = require("../utils");

function ArrayReader(data) {
    DataReader.call(this, data);
    for(var i = 0; i < this.data.length; i++) {
        data[i] = data[i] & 0xFF;
    }
}
utils.inherits(ArrayReader, DataReader);
/**
 * @see DataReader.byteAt
 */
ArrayReader.prototype.byteAt = function(i) {
    return this.data[this.zero + i];
};
/**
 * @see DataReader.lastIndexOfSignature
 */
ArrayReader.prototype.lastIndexOfSignature = function(sig) {
    var sig0 = sig.charCodeAt(0),
        sig1 = sig.charCodeAt(1),
        sig2 = sig.charCodeAt(2),
        sig3 = sig.charCodeAt(3);
    for (var i = this.length - 4; i >= 0; --i) {
        if (this.data[i] === sig0 && this.data[i + 1] === sig1 && this.data[i + 2] === sig2 && this.data[i + 3] === sig3) {
            return i - this.zero;
        }
    }

    return -1;
};
/**
 * @see DataReader.readAndCheckSignature
 */
ArrayReader.prototype.readAndCheckSignature = function (sig) {
    var sig0 = sig.charCodeAt(0),
        sig1 = sig.charCodeAt(1),
        sig2 = sig.charCodeAt(2),
        sig3 = sig.charCodeAt(3),
        data = this.readData(4);
    return sig0 === data[0] && sig1 === data[1] && sig2 === data[2] && sig3 === data[3];
};
/**
 * @see DataReader.readData
 */
ArrayReader.prototype.readData = function(size) {
    this.checkOffset(size);
    if(size === 0) {
        return [];
    }
    var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);
    this.index += size;
    return result;
};
module.exports = ArrayReader;

},{"../utils":32,"./DataReader":18}],18:[function(require,module,exports){
"use strict";
var utils = require("../utils");

function DataReader(data) {
    this.data = data; // type : see implementation
    this.length = data.length;
    this.index = 0;
    this.zero = 0;
}
DataReader.prototype = {
    /**
     * Check that the offset will not go too far.
     * @param {string} offset the additional offset to check.
     * @throws {Error} an Error if the offset is out of bounds.
     */
    checkOffset: function(offset) {
        this.checkIndex(this.index + offset);
    },
    /**
     * Check that the specified index will not be too far.
     * @param {string} newIndex the index to check.
     * @throws {Error} an Error if the index is out of bounds.
     */
    checkIndex: function(newIndex) {
        if (this.length < this.zero + newIndex || newIndex < 0) {
            throw new Error("End of data reached (data length = " + this.length + ", asked index = " + (newIndex) + "). Corrupted zip ?");
        }
    },
    /**
     * Change the index.
     * @param {number} newIndex The new index.
     * @throws {Error} if the new index is out of the data.
     */
    setIndex: function(newIndex) {
        this.checkIndex(newIndex);
        this.index = newIndex;
    },
    /**
     * Skip the next n bytes.
     * @param {number} n the number of bytes to skip.
     * @throws {Error} if the new index is out of the data.
     */
    skip: function(n) {
        this.setIndex(this.index + n);
    },
    /**
     * Get the byte at the specified index.
     * @param {number} i the index to use.
     * @return {number} a byte.
     */
    byteAt: function() {
        // see implementations
    },
    /**
     * Get the next number with a given byte size.
     * @param {number} size the number of bytes to read.
     * @return {number} the corresponding number.
     */
    readInt: function(size) {
        var result = 0,
            i;
        this.checkOffset(size);
        for (i = this.index + size - 1; i >= this.index; i--) {
            result = (result << 8) + this.byteAt(i);
        }
        this.index += size;
        return result;
    },
    /**
     * Get the next string with a given byte size.
     * @param {number} size the number of bytes to read.
     * @return {string} the corresponding string.
     */
    readString: function(size) {
        return utils.transformTo("string", this.readData(size));
    },
    /**
     * Get raw data without conversion, <size> bytes.
     * @param {number} size the number of bytes to read.
     * @return {Object} the raw data, implementation specific.
     */
    readData: function() {
        // see implementations
    },
    /**
     * Find the last occurrence of a zip signature (4 bytes).
     * @param {string} sig the signature to find.
     * @return {number} the index of the last occurrence, -1 if not found.
     */
    lastIndexOfSignature: function() {
        // see implementations
    },
    /**
     * Read the signature (4 bytes) at the current position and compare it with sig.
     * @param {string} sig the expected signature
     * @return {boolean} true if the signature matches, false otherwise.
     */
    readAndCheckSignature: function() {
        // see implementations
    },
    /**
     * Get the next date.
     * @return {Date} the date.
     */
    readDate: function() {
        var dostime = this.readInt(4);
        return new Date(Date.UTC(
            ((dostime >> 25) & 0x7f) + 1980, // year
            ((dostime >> 21) & 0x0f) - 1, // month
            (dostime >> 16) & 0x1f, // day
            (dostime >> 11) & 0x1f, // hour
            (dostime >> 5) & 0x3f, // minute
            (dostime & 0x1f) << 1)); // second
    }
};
module.exports = DataReader;

},{"../utils":32}],19:[function(require,module,exports){
"use strict";
var Uint8ArrayReader = require("./Uint8ArrayReader");
var utils = require("../utils");

function NodeBufferReader(data) {
    Uint8ArrayReader.call(this, data);
}
utils.inherits(NodeBufferReader, Uint8ArrayReader);

/**
 * @see DataReader.readData
 */
NodeBufferReader.prototype.readData = function(size) {
    this.checkOffset(size);
    var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);
    this.index += size;
    return result;
};
module.exports = NodeBufferReader;

},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(require,module,exports){
"use strict";
var DataReader = require("./DataReader");
var utils = require("../utils");

function StringReader(data) {
    DataReader.call(this, data);
}
utils.inherits(StringReader, DataReader);
/**
 * @see DataReader.byteAt
 */
StringReader.prototype.byteAt = function(i) {
    return this.data.charCodeAt(this.zero + i);
};
/**
 * @see DataReader.lastIndexOfSignature
 */
StringReader.prototype.lastIndexOfSignature = function(sig) {
    return this.data.lastIndexOf(sig) - this.zero;
};
/**
 * @see DataReader.readAndCheckSignature
 */
StringReader.prototype.readAndCheckSignature = function (sig) {
    var data = this.readData(4);
    return sig === data;
};
/**
 * @see DataReader.readData
 */
StringReader.prototype.readData = function(size) {
    this.checkOffset(size);
    // this will work because the constructor applied the "& 0xff" mask.
    var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);
    this.index += size;
    return result;
};
module.exports = StringReader;

},{"../utils":32,"./DataReader":18}],21:[function(require,module,exports){
"use strict";
var ArrayReader = require("./ArrayReader");
var utils = require("../utils");

function Uint8ArrayReader(data) {
    ArrayReader.call(this, data);
}
utils.inherits(Uint8ArrayReader, ArrayReader);
/**
 * @see DataReader.readData
 */
Uint8ArrayReader.prototype.readData = function(size) {
    this.checkOffset(size);
    if(size === 0) {
        // in IE10, when using subarray(idx, idx), we get the array [0x00] instead of [].
        return new Uint8Array(0);
    }
    var result = this.data.subarray(this.zero + this.index, this.zero + this.index + size);
    this.index += size;
    return result;
};
module.exports = Uint8ArrayReader;

},{"../utils":32,"./ArrayReader":17}],22:[function(require,module,exports){
"use strict";

var utils = require("../utils");
var support = require("../support");
var ArrayReader = require("./ArrayReader");
var StringReader = require("./StringReader");
var NodeBufferReader = require("./NodeBufferReader");
var Uint8ArrayReader = require("./Uint8ArrayReader");

/**
 * Create a reader adapted to the data.
 * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data to read.
 * @return {DataReader} the data reader.
 */
module.exports = function (data) {
    var type = utils.getTypeOf(data);
    utils.checkSupport(type);
    if (type === "string" && !support.uint8array) {
        return new StringReader(data);
    }
    if (type === "nodebuffer") {
        return new NodeBufferReader(data);
    }
    if (support.uint8array) {
        return new Uint8ArrayReader(utils.transformTo("uint8array", data));
    }
    return new ArrayReader(utils.transformTo("array", data));
};

},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(require,module,exports){
"use strict";
exports.LOCAL_FILE_HEADER = "PK\x03\x04";
exports.CENTRAL_FILE_HEADER = "PK\x01\x02";
exports.CENTRAL_DIRECTORY_END = "PK\x05\x06";
exports.ZIP64_CENTRAL_DIRECTORY_LOCATOR = "PK\x06\x07";
exports.ZIP64_CENTRAL_DIRECTORY_END = "PK\x06\x06";
exports.DATA_DESCRIPTOR = "PK\x07\x08";

},{}],24:[function(require,module,exports){
"use strict";

var GenericWorker = require("./GenericWorker");
var utils = require("../utils");

/**
 * A worker which convert chunks to a specified type.
 * @constructor
 * @param {String} destType the destination type.
 */
function ConvertWorker(destType) {
    GenericWorker.call(this, "ConvertWorker to " + destType);
    this.destType = destType;
}
utils.inherits(ConvertWorker, GenericWorker);

/**
 * @see GenericWorker.processChunk
 */
ConvertWorker.prototype.processChunk = function (chunk) {
    this.push({
        data : utils.transformTo(this.destType, chunk.data),
        meta : chunk.meta
    });
};
module.exports = ConvertWorker;

},{"../utils":32,"./GenericWorker":28}],25:[function(require,module,exports){
"use strict";

var GenericWorker = require("./GenericWorker");
var crc32 = require("../crc32");
var utils = require("../utils");

/**
 * A worker which calculate the crc32 of the data flowing through.
 * @constructor
 */
function Crc32Probe() {
    GenericWorker.call(this, "Crc32Probe");
    this.withStreamInfo("crc32", 0);
}
utils.inherits(Crc32Probe, GenericWorker);

/**
 * @see GenericWorker.processChunk
 */
Crc32Probe.prototype.processChunk = function (chunk) {
    this.streamInfo.crc32 = crc32(chunk.data, this.streamInfo.crc32 || 0);
    this.push(chunk);
};
module.exports = Crc32Probe;

},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(require,module,exports){
"use strict";

var utils = require("../utils");
var GenericWorker = require("./GenericWorker");

/**
 * A worker which calculate the total length of the data flowing through.
 * @constructor
 * @param {String} propName the name used to expose the length
 */
function DataLengthProbe(propName) {
    GenericWorker.call(this, "DataLengthProbe for " + propName);
    this.propName = propName;
    this.withStreamInfo(propName, 0);
}
utils.inherits(DataLengthProbe, GenericWorker);

/**
 * @see GenericWorker.processChunk
 */
DataLengthProbe.prototype.processChunk = function (chunk) {
    if(chunk) {
        var length = this.streamInfo[this.propName] || 0;
        this.streamInfo[this.propName] = length + chunk.data.length;
    }
    GenericWorker.prototype.processChunk.call(this, chunk);
};
module.exports = DataLengthProbe;


},{"../utils":32,"./GenericWorker":28}],27:[function(require,module,exports){
"use strict";

var utils = require("../utils");
var GenericWorker = require("./GenericWorker");

// the size of the generated chunks
// TODO expose this as a public variable
var DEFAULT_BLOCK_SIZE = 16 * 1024;

/**
 * A worker that reads a content and emits chunks.
 * @constructor
 * @param {Promise} dataP the promise of the data to split
 */
function DataWorker(dataP) {
    GenericWorker.call(this, "DataWorker");
    var self = this;
    this.dataIsReady = false;
    this.index = 0;
    this.max = 0;
    this.data = null;
    this.type = "";

    this._tickScheduled = false;

    dataP.then(function (data) {
        self.dataIsReady = true;
        self.data = data;
        self.max = data && data.length || 0;
        self.type = utils.getTypeOf(data);
        if(!self.isPaused) {
            self._tickAndRepeat();
        }
    }, function (e) {
        self.error(e);
    });
}

utils.inherits(DataWorker, GenericWorker);

/**
 * @see GenericWorker.cleanUp
 */
DataWorker.prototype.cleanUp = function () {
    GenericWorker.prototype.cleanUp.call(this);
    this.data = null;
};

/**
 * @see GenericWorker.resume
 */
DataWorker.prototype.resume = function () {
    if(!GenericWorker.prototype.resume.call(this)) {
        return false;
    }

    if (!this._tickScheduled && this.dataIsReady) {
        this._tickScheduled = true;
        utils.delay(this._tickAndRepeat, [], this);
    }
    return true;
};

/**
 * Trigger a tick a schedule an other call to this function.
 */
DataWorker.prototype._tickAndRepeat = function() {
    this._tickScheduled = false;
    if(this.isPaused || this.isFinished) {
        return;
    }
    this._tick();
    if(!this.isFinished) {
        utils.delay(this._tickAndRepeat, [], this);
        this._tickScheduled = true;
    }
};

/**
 * Read and push a chunk.
 */
DataWorker.prototype._tick = function() {

    if(this.isPaused || this.isFinished) {
        return false;
    }

    var size = DEFAULT_BLOCK_SIZE;
    var data = null, nextIndex = Math.min(this.max, this.index + size);
    if (this.index >= this.max) {
        // EOF
        return this.end();
    } else {
        switch(this.type) {
        case "string":
            data = this.data.substring(this.index, nextIndex);
            break;
        case "uint8array":
            data = this.data.subarray(this.index, nextIndex);
            break;
        case "array":
        case "nodebuffer":
            data = this.data.slice(this.index, nextIndex);
            break;
        }
        this.index = nextIndex;
        return this.push({
            data : data,
            meta : {
                percent : this.max ? this.index / this.max * 100 : 0
            }
        });
    }
};

module.exports = DataWorker;

},{"../utils":32,"./GenericWorker":28}],28:[function(require,module,exports){
"use strict";

/**
 * A worker that does nothing but passing chunks to the next one. This is like
 * a nodejs stream but with some differences. On the good side :
 * - it works on IE 6-9 without any issue / polyfill
 * - it weights less than the full dependencies bundled with browserify
 * - it forwards errors (no need to declare an error handler EVERYWHERE)
 *
 * A chunk is an object with 2 attributes : `meta` and `data`. The former is an
 * object containing anything (`percent` for example), see each worker for more
 * details. The latter is the real data (String, Uint8Array, etc).
 *
 * @constructor
 * @param {String} name the name of the stream (mainly used for debugging purposes)
 */
function GenericWorker(name) {
    // the name of the worker
    this.name = name || "default";
    // an object containing metadata about the workers chain
    this.streamInfo = {};
    // an error which happened when the worker was paused
    this.generatedError = null;
    // an object containing metadata to be merged by this worker into the general metadata
    this.extraStreamInfo = {};
    // true if the stream is paused (and should not do anything), false otherwise
    this.isPaused = true;
    // true if the stream is finished (and should not do anything), false otherwise
    this.isFinished = false;
    // true if the stream is locked to prevent further structure updates (pipe), false otherwise
    this.isLocked = false;
    // the event listeners
    this._listeners = {
        "data":[],
        "end":[],
        "error":[]
    };
    // the previous worker, if any
    this.previous = null;
}

GenericWorker.prototype = {
    /**
     * Push a chunk to the next workers.
     * @param {Object} chunk the chunk to push
     */
    push : function (chunk) {
        this.emit("data", chunk);
    },
    /**
     * End the stream.
     * @return {Boolean} true if this call ended the worker, false otherwise.
     */
    end : function () {
        if (this.isFinished) {
            return false;
        }

        this.flush();
        try {
            this.emit("end");
            this.cleanUp();
            this.isFinished = true;
        } catch (e) {
            this.emit("error", e);
        }
        return true;
    },
    /**
     * End the stream with an error.
     * @param {Error} e the error which caused the premature end.
     * @return {Boolean} true if this call ended the worker with an error, false otherwise.
     */
    error : function (e) {
        if (this.isFinished) {
            return false;
        }

        if(this.isPaused) {
            this.generatedError = e;
        } else {
            this.isFinished = true;

            this.emit("error", e);

            // in the workers chain exploded in the middle of the chain,
            // the error event will go downward but we also need to notify
            // workers upward that there has been an error.
            if(this.previous) {
                this.previous.error(e);
            }

            this.cleanUp();
        }
        return true;
    },
    /**
     * Add a callback on an event.
     * @param {String} name the name of the event (data, end, error)
     * @param {Function} listener the function to call when the event is triggered
     * @return {GenericWorker} the current object for chainability
     */
    on : function (name, listener) {
        this._listeners[name].push(listener);
        return this;
    },
    /**
     * Clean any references when a worker is ending.
     */
    cleanUp : function () {
        this.streamInfo = this.generatedError = this.extraStreamInfo = null;
        this._listeners = [];
    },
    /**
     * Trigger an event. This will call registered callback with the provided arg.
     * @param {String} name the name of the event (data, end, error)
     * @param {Object} arg the argument to call the callback with.
     */
    emit : function (name, arg) {
        if (this._listeners[name]) {
            for(var i = 0; i < this._listeners[name].length; i++) {
                this._listeners[name][i].call(this, arg);
            }
        }
    },
    /**
     * Chain a worker with an other.
     * @param {Worker} next the worker receiving events from the current one.
     * @return {worker} the next worker for chainability
     */
    pipe : function (next) {
        return next.registerPrevious(this);
    },
    /**
     * Same as `pipe` in the other direction.
     * Using an API with `pipe(next)` is very easy.
     * Implementing the API with the point of view of the next one registering
     * a source is easier, see the ZipFileWorker.
     * @param {Worker} previous the previous worker, sending events to this one
     * @return {Worker} the current worker for chainability
     */
    registerPrevious : function (previous) {
        if (this.isLocked) {
            throw new Error("The stream '" + this + "' has already been used.");
        }

        // sharing the streamInfo...
        this.streamInfo = previous.streamInfo;
        // ... and adding our own bits
        this.mergeStreamInfo();
        this.previous =  previous;
        var self = this;
        previous.on("data", function (chunk) {
            self.processChunk(chunk);
        });
        previous.on("end", function () {
            self.end();
        });
        previous.on("error", function (e) {
            self.error(e);
        });
        return this;
    },
    /**
     * Pause the stream so it doesn't send events anymore.
     * @return {Boolean} true if this call paused the worker, false otherwise.
     */
    pause : function () {
        if(this.isPaused || this.isFinished) {
            return false;
        }
        this.isPaused = true;

        if(this.previous) {
            this.previous.pause();
        }
        return true;
    },
    /**
     * Resume a paused stream.
     * @return {Boolean} true if this call resumed the worker, false otherwise.
     */
    resume : function () {
        if(!this.isPaused || this.isFinished) {
            return false;
        }
        this.isPaused = false;

        // if true, the worker tried to resume but failed
        var withError = false;
        if(this.generatedError) {
            this.error(this.generatedError);
            withError = true;
        }
        if(this.previous) {
            this.previous.resume();
        }

        return !withError;
    },
    /**
     * Flush any remaining bytes as the stream is ending.
     */
    flush : function () {},
    /**
     * Process a chunk. This is usually the method overridden.
     * @param {Object} chunk the chunk to process.
     */
    processChunk : function(chunk) {
        this.push(chunk);
    },
    /**
     * Add a key/value to be added in the workers chain streamInfo once activated.
     * @param {String} key the key to use
     * @param {Object} value the associated value
     * @return {Worker} the current worker for chainability
     */
    withStreamInfo : function (key, value) {
        this.extraStreamInfo[key] = value;
        this.mergeStreamInfo();
        return this;
    },
    /**
     * Merge this worker's streamInfo into the chain's streamInfo.
     */
    mergeStreamInfo : function () {
        for(var key in this.extraStreamInfo) {
            if (!Object.prototype.hasOwnProperty.call(this.extraStreamInfo, key)) {
                continue;
            }
            this.streamInfo[key] = this.extraStreamInfo[key];
        }
    },

    /**
     * Lock the stream to prevent further updates on the workers chain.
     * After calling this method, all calls to pipe will fail.
     */
    lock: function () {
        if (this.isLocked) {
            throw new Error("The stream '" + this + "' has already been used.");
        }
        this.isLocked = true;
        if (this.previous) {
            this.previous.lock();
        }
    },

    /**
     *
     * Pretty print the workers chain.
     */
    toString : function () {
        var me = "Worker " + this.name;
        if (this.previous) {
            return this.previous + " -> " + me;
        } else {
            return me;
        }
    }
};

module.exports = GenericWorker;

},{}],29:[function(require,module,exports){
"use strict";

var utils = require("../utils");
var ConvertWorker = require("./ConvertWorker");
var GenericWorker = require("./GenericWorker");
var base64 = require("../base64");
var support = require("../support");
var external = require("../external");

var NodejsStreamOutputAdapter = null;
if (support.nodestream) {
    try {
        NodejsStreamOutputAdapter = require("../nodejs/NodejsStreamOutputAdapter");
    } catch(e) {
        // ignore
    }
}

/**
 * Apply the final transformation of the data. If the user wants a Blob for
 * example, it's easier to work with an U8intArray and finally do the
 * ArrayBuffer/Blob conversion.
 * @param {String} type the name of the final type
 * @param {String|Uint8Array|Buffer} content the content to transform
 * @param {String} mimeType the mime type of the content, if applicable.
 * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the content in the right format.
 */
function transformZipOutput(type, content, mimeType) {
    switch(type) {
    case "blob" :
        return utils.newBlob(utils.transformTo("arraybuffer", content), mimeType);
    case "base64" :
        return base64.encode(content);
    default :
        return utils.transformTo(type, content);
    }
}

/**
 * Concatenate an array of data of the given type.
 * @param {String} type the type of the data in the given array.
 * @param {Array} dataArray the array containing the data chunks to concatenate
 * @return {String|Uint8Array|Buffer} the concatenated data
 * @throws Error if the asked type is unsupported
 */
function concat (type, dataArray) {
    var i, index = 0, res = null, totalLength = 0;
    for(i = 0; i < dataArray.length; i++) {
        totalLength += dataArray[i].length;
    }
    switch(type) {
    case "string":
        return dataArray.join("");
    case "array":
        return Array.prototype.concat.apply([], dataArray);
    case "uint8array":
        res = new Uint8Array(totalLength);
        for(i = 0; i < dataArray.length; i++) {
            res.set(dataArray[i], index);
            index += dataArray[i].length;
        }
        return res;
    case "nodebuffer":
        return Buffer.concat(dataArray);
    default:
        throw new Error("concat : unsupported type '"  + type + "'");
    }
}

/**
 * Listen a StreamHelper, accumulate its content and concatenate it into a
 * complete block.
 * @param {StreamHelper} helper the helper to use.
 * @param {Function} updateCallback a callback called on each update. Called
 * with one arg :
 * - the metadata linked to the update received.
 * @return Promise the promise for the accumulation.
 */
function accumulate(helper, updateCallback) {
    return new external.Promise(function (resolve, reject){
        var dataArray = [];
        var chunkType = helper._internalType,
            resultType = helper._outputType,
            mimeType = helper._mimeType;
        helper
            .on("data", function (data, meta) {
                dataArray.push(data);
                if(updateCallback) {
                    updateCallback(meta);
                }
            })
            .on("error", function(err) {
                dataArray = [];
                reject(err);
            })
            .on("end", function (){
                try {
                    var result = transformZipOutput(resultType, concat(chunkType, dataArray), mimeType);
                    resolve(result);
                } catch (e) {
                    reject(e);
                }
                dataArray = [];
            })
            .resume();
    });
}

/**
 * An helper to easily use workers outside of JSZip.
 * @constructor
 * @param {Worker} worker the worker to wrap
 * @param {String} outputType the type of data expected by the use
 * @param {String} mimeType the mime type of the content, if applicable.
 */
function StreamHelper(worker, outputType, mimeType) {
    var internalType = outputType;
    switch(outputType) {
    case "blob":
    case "arraybuffer":
        internalType = "uint8array";
        break;
    case "base64":
        internalType = "string";
        break;
    }

    try {
        // the type used internally
        this._internalType = internalType;
        // the type used to output results
        this._outputType = outputType;
        // the mime type
        this._mimeType = mimeType;
        utils.checkSupport(internalType);
        this._worker = worker.pipe(new ConvertWorker(internalType));
        // the last workers can be rewired without issues but we need to
        // prevent any updates on previous workers.
        worker.lock();
    } catch(e) {
        this._worker = new GenericWorker("error");
        this._worker.error(e);
    }
}

StreamHelper.prototype = {
    /**
     * Listen a StreamHelper, accumulate its content and concatenate it into a
     * complete block.
     * @param {Function} updateCb the update callback.
     * @return Promise the promise for the accumulation.
     */
    accumulate : function (updateCb) {
        return accumulate(this, updateCb);
    },
    /**
     * Add a listener on an event triggered on a stream.
     * @param {String} evt the name of the event
     * @param {Function} fn the listener
     * @return {StreamHelper} the current helper.
     */
    on : function (evt, fn) {
        var self = this;

        if(evt === "data") {
            this._worker.on(evt, function (chunk) {
                fn.call(self, chunk.data, chunk.meta);
            });
        } else {
            this._worker.on(evt, function () {
                utils.delay(fn, arguments, self);
            });
        }
        return this;
    },
    /**
     * Resume the flow of chunks.
     * @return {StreamHelper} the current helper.
     */
    resume : function () {
        utils.delay(this._worker.resume, [], this._worker);
        return this;
    },
    /**
     * Pause the flow of chunks.
     * @return {StreamHelper} the current helper.
     */
    pause : function () {
        this._worker.pause();
        return this;
    },
    /**
     * Return a nodejs stream for this helper.
     * @param {Function} updateCb the update callback.
     * @return {NodejsStreamOutputAdapter} the nodejs stream.
     */
    toNodejsStream : function (updateCb) {
        utils.checkSupport("nodestream");
        if (this._outputType !== "nodebuffer") {
            // an object stream containing blob/arraybuffer/uint8array/string
            // is strange and I don't know if it would be useful.
            // I you find this comment and have a good usecase, please open a
            // bug report !
            throw new Error(this._outputType + " is not supported by this method");
        }

        return new NodejsStreamOutputAdapter(this, {
            objectMode : this._outputType !== "nodebuffer"
        }, updateCb);
    }
};


module.exports = StreamHelper;

},{"../base64":1,"../external":6,"../nodejs/NodejsStreamOutputAdapter":13,"../support":30,"../utils":32,"./ConvertWorker":24,"./GenericWorker":28}],30:[function(require,module,exports){
"use strict";

exports.base64 = true;
exports.array = true;
exports.string = true;
exports.arraybuffer = typeof ArrayBuffer !== "undefined" && typeof Uint8Array !== "undefined";
exports.nodebuffer = typeof Buffer !== "undefined";
// contains true if JSZip can read/generate Uint8Array, false otherwise.
exports.uint8array = typeof Uint8Array !== "undefined";

if (typeof ArrayBuffer === "undefined") {
    exports.blob = false;
}
else {
    var buffer = new ArrayBuffer(0);
    try {
        exports.blob = new Blob([buffer], {
            type: "application/zip"
        }).size === 0;
    }
    catch (e) {
        try {
            var Builder = self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder;
            var builder = new Builder();
            builder.append(buffer);
            exports.blob = builder.getBlob("application/zip").size === 0;
        }
        catch (e) {
            exports.blob = false;
        }
    }
}

try {
    exports.nodestream = !!require("readable-stream").Readable;
} catch(e) {
    exports.nodestream = false;
}

},{"readable-stream":16}],31:[function(require,module,exports){
"use strict";

var utils = require("./utils");
var support = require("./support");
var nodejsUtils = require("./nodejsUtils");
var GenericWorker = require("./stream/GenericWorker");

/**
 * The following functions come from pako, from pako/lib/utils/strings
 * released under the MIT license, see pako https://github.com/nodeca/pako/
 */

// Table with utf8 lengths (calculated by first byte of sequence)
// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,
// because max possible codepoint is 0x10ffff
var _utf8len = new Array(256);
for (var i=0; i<256; i++) {
    _utf8len[i] = (i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);
}
_utf8len[254]=_utf8len[254]=1; // Invalid sequence start

// convert string to array (typed, when possible)
var string2buf = function (str) {
    var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;

    // count binary size
    for (m_pos = 0; m_pos < str_len; m_pos++) {
        c = str.charCodeAt(m_pos);
        if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {
            c2 = str.charCodeAt(m_pos+1);
            if ((c2 & 0xfc00) === 0xdc00) {
                c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
                m_pos++;
            }
        }
        buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;
    }

    // allocate buffer
    if (support.uint8array) {
        buf = new Uint8Array(buf_len);
    } else {
        buf = new Array(buf_len);
    }

    // convert
    for (i=0, m_pos = 0; i < buf_len; m_pos++) {
        c = str.charCodeAt(m_pos);
        if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {
            c2 = str.charCodeAt(m_pos+1);
            if ((c2 & 0xfc00) === 0xdc00) {
                c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
                m_pos++;
            }
        }
        if (c < 0x80) {
            /* one byte */
            buf[i++] = c;
        } else if (c < 0x800) {
            /* two bytes */
            buf[i++] = 0xC0 | (c >>> 6);
            buf[i++] = 0x80 | (c & 0x3f);
        } else if (c < 0x10000) {
            /* three bytes */
            buf[i++] = 0xE0 | (c >>> 12);
            buf[i++] = 0x80 | (c >>> 6 & 0x3f);
            buf[i++] = 0x80 | (c & 0x3f);
        } else {
            /* four bytes */
            buf[i++] = 0xf0 | (c >>> 18);
            buf[i++] = 0x80 | (c >>> 12 & 0x3f);
            buf[i++] = 0x80 | (c >>> 6 & 0x3f);
            buf[i++] = 0x80 | (c & 0x3f);
        }
    }

    return buf;
};

// Calculate max possible position in utf8 buffer,
// that will not break sequence. If that's not possible
// - (very small limits) return max size as is.
//
// buf[] - utf8 bytes array
// max   - length limit (mandatory);
var utf8border = function(buf, max) {
    var pos;

    max = max || buf.length;
    if (max > buf.length) { max = buf.length; }

    // go back from last position, until start of sequence found
    pos = max-1;
    while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }

    // Fuckup - very small and broken sequence,
    // return max, because we should return something anyway.
    if (pos < 0) { return max; }

    // If we came to start of buffer - that means vuffer is too small,
    // return max too.
    if (pos === 0) { return max; }

    return (pos + _utf8len[buf[pos]] > max) ? pos : max;
};

// convert array to string
var buf2string = function (buf) {
    var i, out, c, c_len;
    var len = buf.length;

    // Reserve max possible length (2 words per char)
    // NB: by unknown reasons, Array is significantly faster for
    //     String.fromCharCode.apply than Uint16Array.
    var utf16buf = new Array(len*2);

    for (out=0, i=0; i<len;) {
        c = buf[i++];
        // quick process ascii
        if (c < 0x80) { utf16buf[out++] = c; continue; }

        c_len = _utf8len[c];
        // skip 5 & 6 byte codes
        if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }

        // apply mask on first byte
        c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;
        // join the rest
        while (c_len > 1 && i < len) {
            c = (c << 6) | (buf[i++] & 0x3f);
            c_len--;
        }

        // terminated by end of string?
        if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }

        if (c < 0x10000) {
            utf16buf[out++] = c;
        } else {
            c -= 0x10000;
            utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);
            utf16buf[out++] = 0xdc00 | (c & 0x3ff);
        }
    }

    // shrinkBuf(utf16buf, out)
    if (utf16buf.length !== out) {
        if(utf16buf.subarray) {
            utf16buf = utf16buf.subarray(0, out);
        } else {
            utf16buf.length = out;
        }
    }

    // return String.fromCharCode.apply(null, utf16buf);
    return utils.applyFromCharCode(utf16buf);
};


// That's all for the pako functions.


/**
 * Transform a javascript string into an array (typed if possible) of bytes,
 * UTF-8 encoded.
 * @param {String} str the string to encode
 * @return {Array|Uint8Array|Buffer} the UTF-8 encoded string.
 */
exports.utf8encode = function utf8encode(str) {
    if (support.nodebuffer) {
        return nodejsUtils.newBufferFrom(str, "utf-8");
    }

    return string2buf(str);
};


/**
 * Transform a bytes array (or a representation) representing an UTF-8 encoded
 * string into a javascript string.
 * @param {Array|Uint8Array|Buffer} buf the data de decode
 * @return {String} the decoded string.
 */
exports.utf8decode = function utf8decode(buf) {
    if (support.nodebuffer) {
        return utils.transformTo("nodebuffer", buf).toString("utf-8");
    }

    buf = utils.transformTo(support.uint8array ? "uint8array" : "array", buf);

    return buf2string(buf);
};

/**
 * A worker to decode utf8 encoded binary chunks into string chunks.
 * @constructor
 */
function Utf8DecodeWorker() {
    GenericWorker.call(this, "utf-8 decode");
    // the last bytes if a chunk didn't end with a complete codepoint.
    this.leftOver = null;
}
utils.inherits(Utf8DecodeWorker, GenericWorker);

/**
 * @see GenericWorker.processChunk
 */
Utf8DecodeWorker.prototype.processChunk = function (chunk) {

    var data = utils.transformTo(support.uint8array ? "uint8array" : "array", chunk.data);

    // 1st step, re-use what's left of the previous chunk
    if (this.leftOver && this.leftOver.length) {
        if(support.uint8array) {
            var previousData = data;
            data = new Uint8Array(previousData.length + this.leftOver.length);
            data.set(this.leftOver, 0);
            data.set(previousData, this.leftOver.length);
        } else {
            data = this.leftOver.concat(data);
        }
        this.leftOver = null;
    }

    var nextBoundary = utf8border(data);
    var usableData = data;
    if (nextBoundary !== data.length) {
        if (support.uint8array) {
            usableData = data.subarray(0, nextBoundary);
            this.leftOver = data.subarray(nextBoundary, data.length);
        } else {
            usableData = data.slice(0, nextBoundary);
            this.leftOver = data.slice(nextBoundary, data.length);
        }
    }

    this.push({
        data : exports.utf8decode(usableData),
        meta : chunk.meta
    });
};

/**
 * @see GenericWorker.flush
 */
Utf8DecodeWorker.prototype.flush = function () {
    if(this.leftOver && this.leftOver.length) {
        this.push({
            data : exports.utf8decode(this.leftOver),
            meta : {}
        });
        this.leftOver = null;
    }
};
exports.Utf8DecodeWorker = Utf8DecodeWorker;

/**
 * A worker to endcode string chunks into utf8 encoded binary chunks.
 * @constructor
 */
function Utf8EncodeWorker() {
    GenericWorker.call(this, "utf-8 encode");
}
utils.inherits(Utf8EncodeWorker, GenericWorker);

/**
 * @see GenericWorker.processChunk
 */
Utf8EncodeWorker.prototype.processChunk = function (chunk) {
    this.push({
        data : exports.utf8encode(chunk.data),
        meta : chunk.meta
    });
};
exports.Utf8EncodeWorker = Utf8EncodeWorker;

},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(require,module,exports){
"use strict";

var support = require("./support");
var base64 = require("./base64");
var nodejsUtils = require("./nodejsUtils");
var external = require("./external");
require("setimmediate");


/**
 * Convert a string that pass as a "binary string": it should represent a byte
 * array but may have > 255 char codes. Be sure to take only the first byte
 * and returns the byte array.
 * @param {String} str the string to transform.
 * @return {Array|Uint8Array} the string in a binary format.
 */
function string2binary(str) {
    var result = null;
    if (support.uint8array) {
        result = new Uint8Array(str.length);
    } else {
        result = new Array(str.length);
    }
    return stringToArrayLike(str, result);
}

/**
 * Create a new blob with the given content and the given type.
 * @param {String|ArrayBuffer} part the content to put in the blob. DO NOT use
 * an Uint8Array because the stock browser of android 4 won't accept it (it
 * will be silently converted to a string, "[object Uint8Array]").
 *
 * Use only ONE part to build the blob to avoid a memory leak in IE11 / Edge:
 * when a large amount of Array is used to create the Blob, the amount of
 * memory consumed is nearly 100 times the original data amount.
 *
 * @param {String} type the mime type of the blob.
 * @return {Blob} the created blob.
 */
exports.newBlob = function(part, type) {
    exports.checkSupport("blob");

    try {
        // Blob constructor
        return new Blob([part], {
            type: type
        });
    }
    catch (e) {

        try {
            // deprecated, browser only, old way
            var Builder = self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder;
            var builder = new Builder();
            builder.append(part);
            return builder.getBlob(type);
        }
        catch (e) {

            // well, fuck ?!
            throw new Error("Bug : can't construct the Blob.");
        }
    }


};
/**
 * The identity function.
 * @param {Object} input the input.
 * @return {Object} the same input.
 */
function identity(input) {
    return input;
}

/**
 * Fill in an array with a string.
 * @param {String} str the string to use.
 * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated).
 * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array.
 */
function stringToArrayLike(str, array) {
    for (var i = 0; i < str.length; ++i) {
        array[i] = str.charCodeAt(i) & 0xFF;
    }
    return array;
}

/**
 * An helper for the function arrayLikeToString.
 * This contains static information and functions that
 * can be optimized by the browser JIT compiler.
 */
var arrayToStringHelper = {
    /**
     * Transform an array of int into a string, chunk by chunk.
     * See the performances notes on arrayLikeToString.
     * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.
     * @param {String} type the type of the array.
     * @param {Integer} chunk the chunk size.
     * @return {String} the resulting string.
     * @throws Error if the chunk is too big for the stack.
     */
    stringifyByChunk: function(array, type, chunk) {
        var result = [], k = 0, len = array.length;
        // shortcut
        if (len <= chunk) {
            return String.fromCharCode.apply(null, array);
        }
        while (k < len) {
            if (type === "array" || type === "nodebuffer") {
                result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len))));
            }
            else {
                result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len))));
            }
            k += chunk;
        }
        return result.join("");
    },
    /**
     * Call String.fromCharCode on every item in the array.
     * This is the naive implementation, which generate A LOT of intermediate string.
     * This should be used when everything else fail.
     * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.
     * @return {String} the result.
     */
    stringifyByChar: function(array){
        var resultStr = "";
        for(var i = 0; i < array.length; i++) {
            resultStr += String.fromCharCode(array[i]);
        }
        return resultStr;
    },
    applyCanBeUsed : {
        /**
         * true if the browser accepts to use String.fromCharCode on Uint8Array
         */
        uint8array : (function () {
            try {
                return support.uint8array && String.fromCharCode.apply(null, new Uint8Array(1)).length === 1;
            } catch (e) {
                return false;
            }
        })(),
        /**
         * true if the browser accepts to use String.fromCharCode on nodejs Buffer.
         */
        nodebuffer : (function () {
            try {
                return support.nodebuffer && String.fromCharCode.apply(null, nodejsUtils.allocBuffer(1)).length === 1;
            } catch (e) {
                return false;
            }
        })()
    }
};

/**
 * Transform an array-like object to a string.
 * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.
 * @return {String} the result.
 */
function arrayLikeToString(array) {
    // Performances notes :
    // --------------------
    // String.fromCharCode.apply(null, array) is the fastest, see
    // see http://jsperf.com/converting-a-uint8array-to-a-string/2
    // but the stack is limited (and we can get huge arrays !).
    //
    // result += String.fromCharCode(array[i]); generate too many strings !
    //
    // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2
    // TODO : we now have workers that split the work. Do we still need that ?
    var chunk = 65536,
        type = exports.getTypeOf(array),
        canUseApply = true;
    if (type === "uint8array") {
        canUseApply = arrayToStringHelper.applyCanBeUsed.uint8array;
    } else if (type === "nodebuffer") {
        canUseApply = arrayToStringHelper.applyCanBeUsed.nodebuffer;
    }

    if (canUseApply) {
        while (chunk > 1) {
            try {
                return arrayToStringHelper.stringifyByChunk(array, type, chunk);
            } catch (e) {
                chunk = Math.floor(chunk / 2);
            }
        }
    }

    // no apply or chunk error : slow and painful algorithm
    // default browser on android 4.*
    return arrayToStringHelper.stringifyByChar(array);
}

exports.applyFromCharCode = arrayLikeToString;


/**
 * Copy the data from an array-like to an other array-like.
 * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array.
 * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated.
 * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array.
 */
function arrayLikeToArrayLike(arrayFrom, arrayTo) {
    for (var i = 0; i < arrayFrom.length; i++) {
        arrayTo[i] = arrayFrom[i];
    }
    return arrayTo;
}

// a matrix containing functions to transform everything into everything.
var transform = {};

// string to ?
transform["string"] = {
    "string": identity,
    "array": function(input) {
        return stringToArrayLike(input, new Array(input.length));
    },
    "arraybuffer": function(input) {
        return transform["string"]["uint8array"](input).buffer;
    },
    "uint8array": function(input) {
        return stringToArrayLike(input, new Uint8Array(input.length));
    },
    "nodebuffer": function(input) {
        return stringToArrayLike(input, nodejsUtils.allocBuffer(input.length));
    }
};

// array to ?
transform["array"] = {
    "string": arrayLikeToString,
    "array": identity,
    "arraybuffer": function(input) {
        return (new Uint8Array(input)).buffer;
    },
    "uint8array": function(input) {
        return new Uint8Array(input);
    },
    "nodebuffer": function(input) {
        return nodejsUtils.newBufferFrom(input);
    }
};

// arraybuffer to ?
transform["arraybuffer"] = {
    "string": function(input) {
        return arrayLikeToString(new Uint8Array(input));
    },
    "array": function(input) {
        return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength));
    },
    "arraybuffer": identity,
    "uint8array": function(input) {
        return new Uint8Array(input);
    },
    "nodebuffer": function(input) {
        return nodejsUtils.newBufferFrom(new Uint8Array(input));
    }
};

// uint8array to ?
transform["uint8array"] = {
    "string": arrayLikeToString,
    "array": function(input) {
        return arrayLikeToArrayLike(input, new Array(input.length));
    },
    "arraybuffer": function(input) {
        return input.buffer;
    },
    "uint8array": identity,
    "nodebuffer": function(input) {
        return nodejsUtils.newBufferFrom(input);
    }
};

// nodebuffer to ?
transform["nodebuffer"] = {
    "string": arrayLikeToString,
    "array": function(input) {
        return arrayLikeToArrayLike(input, new Array(input.length));
    },
    "arraybuffer": function(input) {
        return transform["nodebuffer"]["uint8array"](input).buffer;
    },
    "uint8array": function(input) {
        return arrayLikeToArrayLike(input, new Uint8Array(input.length));
    },
    "nodebuffer": identity
};

/**
 * Transform an input into any type.
 * The supported output type are : string, array, uint8array, arraybuffer, nodebuffer.
 * If no output type is specified, the unmodified input will be returned.
 * @param {String} outputType the output type.
 * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert.
 * @throws {Error} an Error if the browser doesn't support the requested output type.
 */
exports.transformTo = function(outputType, input) {
    if (!input) {
        // undefined, null, etc
        // an empty string won't harm.
        input = "";
    }
    if (!outputType) {
        return input;
    }
    exports.checkSupport(outputType);
    var inputType = exports.getTypeOf(input);
    var result = transform[inputType][outputType](input);
    return result;
};

/**
 * Resolve all relative path components, "." and "..", in a path. If these relative components
 * traverse above the root then the resulting path will only contain the final path component.
 *
 * All empty components, e.g. "//", are removed.
 * @param {string} path A path with / or \ separators
 * @returns {string} The path with all relative path components resolved.
 */
exports.resolve = function(path) {
    var parts = path.split("/");
    var result = [];
    for (var index = 0; index < parts.length; index++) {
        var part = parts[index];
        // Allow the first and last component to be empty for trailing slashes.
        if (part === "." || (part === "" && index !== 0 && index !== parts.length - 1)) {
            continue;
        } else if (part === "..") {
            result.pop();
        } else {
            result.push(part);
        }
    }
    return result.join("/");
};

/**
 * Return the type of the input.
 * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer.
 * @param {Object} input the input to identify.
 * @return {String} the (lowercase) type of the input.
 */
exports.getTypeOf = function(input) {
    if (typeof input === "string") {
        return "string";
    }
    if (Object.prototype.toString.call(input) === "[object Array]") {
        return "array";
    }
    if (support.nodebuffer && nodejsUtils.isBuffer(input)) {
        return "nodebuffer";
    }
    if (support.uint8array && input instanceof Uint8Array) {
        return "uint8array";
    }
    if (support.arraybuffer && input instanceof ArrayBuffer) {
        return "arraybuffer";
    }
};

/**
 * Throw an exception if the type is not supported.
 * @param {String} type the type to check.
 * @throws {Error} an Error if the browser doesn't support the requested type.
 */
exports.checkSupport = function(type) {
    var supported = support[type.toLowerCase()];
    if (!supported) {
        throw new Error(type + " is not supported by this platform");
    }
};

exports.MAX_VALUE_16BITS = 65535;
exports.MAX_VALUE_32BITS = -1; // well, "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" is parsed as -1

/**
 * Prettify a string read as binary.
 * @param {string} str the string to prettify.
 * @return {string} a pretty string.
 */
exports.pretty = function(str) {
    var res = "",
        code, i;
    for (i = 0; i < (str || "").length; i++) {
        code = str.charCodeAt(i);
        res += "\\x" + (code < 16 ? "0" : "") + code.toString(16).toUpperCase();
    }
    return res;
};

/**
 * Defer the call of a function.
 * @param {Function} callback the function to call asynchronously.
 * @param {Array} args the arguments to give to the callback.
 */
exports.delay = function(callback, args, self) {
    setImmediate(function () {
        callback.apply(self || null, args || []);
    });
};

/**
 * Extends a prototype with an other, without calling a constructor with
 * side effects. Inspired by nodejs' `utils.inherits`
 * @param {Function} ctor the constructor to augment
 * @param {Function} superCtor the parent constructor to use
 */
exports.inherits = function (ctor, superCtor) {
    var Obj = function() {};
    Obj.prototype = superCtor.prototype;
    ctor.prototype = new Obj();
};

/**
 * Merge the objects passed as parameters into a new one.
 * @private
 * @param {...Object} var_args All objects to merge.
 * @return {Object} a new object with the data of the others.
 */
exports.extend = function() {
    var result = {}, i, attr;
    for (i = 0; i < arguments.length; i++) { // arguments is not enumerable in some browsers
        for (attr in arguments[i]) {
            if (Object.prototype.hasOwnProperty.call(arguments[i], attr) && typeof result[attr] === "undefined") {
                result[attr] = arguments[i][attr];
            }
        }
    }
    return result;
};

/**
 * Transform arbitrary content into a Promise.
 * @param {String} name a name for the content being processed.
 * @param {Object} inputData the content to process.
 * @param {Boolean} isBinary true if the content is not an unicode string
 * @param {Boolean} isOptimizedBinaryString true if the string content only has one byte per character.
 * @param {Boolean} isBase64 true if the string content is encoded with base64.
 * @return {Promise} a promise in a format usable by JSZip.
 */
exports.prepareContent = function(name, inputData, isBinary, isOptimizedBinaryString, isBase64) {

    // if inputData is already a promise, this flatten it.
    var promise = external.Promise.resolve(inputData).then(function(data) {


        var isBlob = support.blob && (data instanceof Blob || ["[object File]", "[object Blob]"].indexOf(Object.prototype.toString.call(data)) !== -1);

        if (isBlob && typeof FileReader !== "undefined") {
            return new external.Promise(function (resolve, reject) {
                var reader = new FileReader();

                reader.onload = function(e) {
                    resolve(e.target.result);
                };
                reader.onerror = function(e) {
                    reject(e.target.error);
                };
                reader.readAsArrayBuffer(data);
            });
        } else {
            return data;
        }
    });

    return promise.then(function(data) {
        var dataType = exports.getTypeOf(data);

        if (!dataType) {
            return external.Promise.reject(
                new Error("Can't read the data of '" + name + "'. Is it " +
                          "in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?")
            );
        }
        // special case : it's way easier to work with Uint8Array than with ArrayBuffer
        if (dataType === "arraybuffer") {
            data = exports.transformTo("uint8array", data);
        } else if (dataType === "string") {
            if (isBase64) {
                data = base64.decode(data);
            }
            else if (isBinary) {
                // optimizedBinaryString === true means that the file has already been filtered with a 0xFF mask
                if (isOptimizedBinaryString !== true) {
                    // this is a string, not in a base64 format.
                    // Be sure that this is a correct "binary string"
                    data = string2binary(data);
                }
            }
        }
        return data;
    });
};

},{"./base64":1,"./external":6,"./nodejsUtils":14,"./support":30,"setimmediate":54}],33:[function(require,module,exports){
"use strict";
var readerFor = require("./reader/readerFor");
var utils = require("./utils");
var sig = require("./signature");
var ZipEntry = require("./zipEntry");
var support = require("./support");
//  class ZipEntries {{{
/**
 * All the entries in the zip file.
 * @constructor
 * @param {Object} loadOptions Options for loading the stream.
 */
function ZipEntries(loadOptions) {
    this.files = [];
    this.loadOptions = loadOptions;
}
ZipEntries.prototype = {
    /**
     * Check that the reader is on the specified signature.
     * @param {string} expectedSignature the expected signature.
     * @throws {Error} if it is an other signature.
     */
    checkSignature: function(expectedSignature) {
        if (!this.reader.readAndCheckSignature(expectedSignature)) {
            this.reader.index -= 4;
            var signature = this.reader.readString(4);
            throw new Error("Corrupted zip or bug: unexpected signature " + "(" + utils.pretty(signature) + ", expected " + utils.pretty(expectedSignature) + ")");
        }
    },
    /**
     * Check if the given signature is at the given index.
     * @param {number} askedIndex the index to check.
     * @param {string} expectedSignature the signature to expect.
     * @return {boolean} true if the signature is here, false otherwise.
     */
    isSignature: function(askedIndex, expectedSignature) {
        var currentIndex = this.reader.index;
        this.reader.setIndex(askedIndex);
        var signature = this.reader.readString(4);
        var result = signature === expectedSignature;
        this.reader.setIndex(currentIndex);
        return result;
    },
    /**
     * Read the end of the central directory.
     */
    readBlockEndOfCentral: function() {
        this.diskNumber = this.reader.readInt(2);
        this.diskWithCentralDirStart = this.reader.readInt(2);
        this.centralDirRecordsOnThisDisk = this.reader.readInt(2);
        this.centralDirRecords = this.reader.readInt(2);
        this.centralDirSize = this.reader.readInt(4);
        this.centralDirOffset = this.reader.readInt(4);

        this.zipCommentLength = this.reader.readInt(2);
        // warning : the encoding depends of the system locale
        // On a linux machine with LANG=en_US.utf8, this field is utf8 encoded.
        // On a windows machine, this field is encoded with the localized windows code page.
        var zipComment = this.reader.readData(this.zipCommentLength);
        var decodeParamType = support.uint8array ? "uint8array" : "array";
        // To get consistent behavior with the generation part, we will assume that
        // this is utf8 encoded unless specified otherwise.
        var decodeContent = utils.transformTo(decodeParamType, zipComment);
        this.zipComment = this.loadOptions.decodeFileName(decodeContent);
    },
    /**
     * Read the end of the Zip 64 central directory.
     * Not merged with the method readEndOfCentral :
     * The end of central can coexist with its Zip64 brother,
     * I don't want to read the wrong number of bytes !
     */
    readBlockZip64EndOfCentral: function() {
        this.zip64EndOfCentralSize = this.reader.readInt(8);
        this.reader.skip(4);
        // this.versionMadeBy = this.reader.readString(2);
        // this.versionNeeded = this.reader.readInt(2);
        this.diskNumber = this.reader.readInt(4);
        this.diskWithCentralDirStart = this.reader.readInt(4);
        this.centralDirRecordsOnThisDisk = this.reader.readInt(8);
        this.centralDirRecords = this.reader.readInt(8);
        this.centralDirSize = this.reader.readInt(8);
        this.centralDirOffset = this.reader.readInt(8);

        this.zip64ExtensibleData = {};
        var extraDataSize = this.zip64EndOfCentralSize - 44,
            index = 0,
            extraFieldId,
            extraFieldLength,
            extraFieldValue;
        while (index < extraDataSize) {
            extraFieldId = this.reader.readInt(2);
            extraFieldLength = this.reader.readInt(4);
            extraFieldValue = this.reader.readData(extraFieldLength);
            this.zip64ExtensibleData[extraFieldId] = {
                id: extraFieldId,
                length: extraFieldLength,
                value: extraFieldValue
            };
        }
    },
    /**
     * Read the end of the Zip 64 central directory locator.
     */
    readBlockZip64EndOfCentralLocator: function() {
        this.diskWithZip64CentralDirStart = this.reader.readInt(4);
        this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8);
        this.disksCount = this.reader.readInt(4);
        if (this.disksCount > 1) {
            throw new Error("Multi-volumes zip are not supported");
        }
    },
    /**
     * Read the local files, based on the offset read in the central part.
     */
    readLocalFiles: function() {
        var i, file;
        for (i = 0; i < this.files.length; i++) {
            file = this.files[i];
            this.reader.setIndex(file.localHeaderOffset);
            this.checkSignature(sig.LOCAL_FILE_HEADER);
            file.readLocalPart(this.reader);
            file.handleUTF8();
            file.processAttributes();
        }
    },
    /**
     * Read the central directory.
     */
    readCentralDir: function() {
        var file;

        this.reader.setIndex(this.centralDirOffset);
        while (this.reader.readAndCheckSignature(sig.CENTRAL_FILE_HEADER)) {
            file = new ZipEntry({
                zip64: this.zip64
            }, this.loadOptions);
            file.readCentralPart(this.reader);
            this.files.push(file);
        }

        if (this.centralDirRecords !== this.files.length) {
            if (this.centralDirRecords !== 0 && this.files.length === 0) {
                // We expected some records but couldn't find ANY.
                // This is really suspicious, as if something went wrong.
                throw new Error("Corrupted zip or bug: expected " + this.centralDirRecords + " records in central dir, got " + this.files.length);
            } else {
                // We found some records but not all.
                // Something is wrong but we got something for the user: no error here.
                // console.warn("expected", this.centralDirRecords, "records in central dir, got", this.files.length);
            }
        }
    },
    /**
     * Read the end of central directory.
     */
    readEndOfCentral: function() {
        var offset = this.reader.lastIndexOfSignature(sig.CENTRAL_DIRECTORY_END);
        if (offset < 0) {
            // Check if the content is a truncated zip or complete garbage.
            // A "LOCAL_FILE_HEADER" is not required at the beginning (auto
            // extractible zip for example) but it can give a good hint.
            // If an ajax request was used without responseType, we will also
            // get unreadable data.
            var isGarbage = !this.isSignature(0, sig.LOCAL_FILE_HEADER);

            if (isGarbage) {
                throw new Error("Can't find end of central directory : is this a zip file ? " +
                                "If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html");
            } else {
                throw new Error("Corrupted zip: can't find end of central directory");
            }

        }
        this.reader.setIndex(offset);
        var endOfCentralDirOffset = offset;
        this.checkSignature(sig.CENTRAL_DIRECTORY_END);
        this.readBlockEndOfCentral();


        /* extract from the zip spec :
            4)  If one of the fields in the end of central directory
                record is too small to hold required data, the field
                should be set to -1 (0xFFFF or 0xFFFFFFFF) and the
                ZIP64 format record should be created.
            5)  The end of central directory record and the
                Zip64 end of central directory locator record must
                reside on the same disk when splitting or spanning
                an archive.
         */
        if (this.diskNumber === utils.MAX_VALUE_16BITS || this.diskWithCentralDirStart === utils.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === utils.MAX_VALUE_16BITS || this.centralDirRecords === utils.MAX_VALUE_16BITS || this.centralDirSize === utils.MAX_VALUE_32BITS || this.centralDirOffset === utils.MAX_VALUE_32BITS) {
            this.zip64 = true;

            /*
            Warning : the zip64 extension is supported, but ONLY if the 64bits integer read from
            the zip file can fit into a 32bits integer. This cannot be solved : JavaScript represents
            all numbers as 64-bit double precision IEEE 754 floating point numbers.
            So, we have 53bits for integers and bitwise operations treat everything as 32bits.
            see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators
            and http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf section 8.5
            */

            // should look for a zip64 EOCD locator
            offset = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);
            if (offset < 0) {
                throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator");
            }
            this.reader.setIndex(offset);
            this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);
            this.readBlockZip64EndOfCentralLocator();

            // now the zip64 EOCD record
            if (!this.isSignature(this.relativeOffsetEndOfZip64CentralDir, sig.ZIP64_CENTRAL_DIRECTORY_END)) {
                // console.warn("ZIP64 end of central directory not where expected.");
                this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_END);
                if (this.relativeOffsetEndOfZip64CentralDir < 0) {
                    throw new Error("Corrupted zip: can't find the ZIP64 end of central directory");
                }
            }
            this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir);
            this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_END);
            this.readBlockZip64EndOfCentral();
        }

        var expectedEndOfCentralDirOffset = this.centralDirOffset + this.centralDirSize;
        if (this.zip64) {
            expectedEndOfCentralDirOffset += 20; // end of central dir 64 locator
            expectedEndOfCentralDirOffset += 12 /* should not include the leading 12 bytes */ + this.zip64EndOfCentralSize;
        }

        var extraBytes = endOfCentralDirOffset - expectedEndOfCentralDirOffset;

        if (extraBytes > 0) {
            // console.warn(extraBytes, "extra bytes at beginning or within zipfile");
            if (this.isSignature(endOfCentralDirOffset, sig.CENTRAL_FILE_HEADER)) {
                // The offsets seem wrong, but we have something at the specified offset.
                // So… we keep it.
            } else {
                // the offset is wrong, update the "zero" of the reader
                // this happens if data has been prepended (crx files for example)
                this.reader.zero = extraBytes;
            }
        } else if (extraBytes < 0) {
            throw new Error("Corrupted zip: missing " + Math.abs(extraBytes) + " bytes.");
        }
    },
    prepareReader: function(data) {
        this.reader = readerFor(data);
    },
    /**
     * Read a zip file and create ZipEntries.
     * @param {String|ArrayBuffer|Uint8Array|Buffer} data the binary string representing a zip file.
     */
    load: function(data) {
        this.prepareReader(data);
        this.readEndOfCentral();
        this.readCentralDir();
        this.readLocalFiles();
    }
};
// }}} end of ZipEntries
module.exports = ZipEntries;

},{"./reader/readerFor":22,"./signature":23,"./support":30,"./utils":32,"./zipEntry":34}],34:[function(require,module,exports){
"use strict";
var readerFor = require("./reader/readerFor");
var utils = require("./utils");
var CompressedObject = require("./compressedObject");
var crc32fn = require("./crc32");
var utf8 = require("./utf8");
var compressions = require("./compressions");
var support = require("./support");

var MADE_BY_DOS = 0x00;
var MADE_BY_UNIX = 0x03;

/**
 * Find a compression registered in JSZip.
 * @param {string} compressionMethod the method magic to find.
 * @return {Object|null} the JSZip compression object, null if none found.
 */
var findCompression = function(compressionMethod) {
    for (var method in compressions) {
        if (!Object.prototype.hasOwnProperty.call(compressions, method)) {
            continue;
        }
        if (compressions[method].magic === compressionMethod) {
            return compressions[method];
        }
    }
    return null;
};

// class ZipEntry {{{
/**
 * An entry in the zip file.
 * @constructor
 * @param {Object} options Options of the current file.
 * @param {Object} loadOptions Options for loading the stream.
 */
function ZipEntry(options, loadOptions) {
    this.options = options;
    this.loadOptions = loadOptions;
}
ZipEntry.prototype = {
    /**
     * say if the file is encrypted.
     * @return {boolean} true if the file is encrypted, false otherwise.
     */
    isEncrypted: function() {
        // bit 1 is set
        return (this.bitFlag & 0x0001) === 0x0001;
    },
    /**
     * say if the file has utf-8 filename/comment.
     * @return {boolean} true if the filename/comment is in utf-8, false otherwise.
     */
    useUTF8: function() {
        // bit 11 is set
        return (this.bitFlag & 0x0800) === 0x0800;
    },
    /**
     * Read the local part of a zip file and add the info in this object.
     * @param {DataReader} reader the reader to use.
     */
    readLocalPart: function(reader) {
        var compression, localExtraFieldsLength;

        // we already know everything from the central dir !
        // If the central dir data are false, we are doomed.
        // On the bright side, the local part is scary  : zip64, data descriptors, both, etc.
        // The less data we get here, the more reliable this should be.
        // Let's skip the whole header and dash to the data !
        reader.skip(22);
        // in some zip created on windows, the filename stored in the central dir contains \ instead of /.
        // Strangely, the filename here is OK.
        // I would love to treat these zip files as corrupted (see http://www.info-zip.org/FAQ.html#backslashes
        // or APPNOTE#4.4.17.1, "All slashes MUST be forward slashes '/'") but there are a lot of bad zip generators...
        // Search "unzip mismatching "local" filename continuing with "central" filename version" on
        // the internet.
        //
        // I think I see the logic here : the central directory is used to display
        // content and the local directory is used to extract the files. Mixing / and \
        // may be used to display \ to windows users and use / when extracting the files.
        // Unfortunately, this lead also to some issues : http://seclists.org/fulldisclosure/2009/Sep/394
        this.fileNameLength = reader.readInt(2);
        localExtraFieldsLength = reader.readInt(2); // can't be sure this will be the same as the central dir
        // the fileName is stored as binary data, the handleUTF8 method will take care of the encoding.
        this.fileName = reader.readData(this.fileNameLength);
        reader.skip(localExtraFieldsLength);

        if (this.compressedSize === -1 || this.uncompressedSize === -1) {
            throw new Error("Bug or corrupted zip : didn't get enough information from the central directory " + "(compressedSize === -1 || uncompressedSize === -1)");
        }

        compression = findCompression(this.compressionMethod);
        if (compression === null) { // no compression found
            throw new Error("Corrupted zip : compression " + utils.pretty(this.compressionMethod) + " unknown (inner file : " + utils.transformTo("string", this.fileName) + ")");
        }
        this.decompressed = new CompressedObject(this.compressedSize, this.uncompressedSize, this.crc32, compression, reader.readData(this.compressedSize));
    },

    /**
     * Read the central part of a zip file and add the info in this object.
     * @param {DataReader} reader the reader to use.
     */
    readCentralPart: function(reader) {
        this.versionMadeBy = reader.readInt(2);
        reader.skip(2);
        // this.versionNeeded = reader.readInt(2);
        this.bitFlag = reader.readInt(2);
        this.compressionMethod = reader.readString(2);
        this.date = reader.readDate();
        this.crc32 = reader.readInt(4);
        this.compressedSize = reader.readInt(4);
        this.uncompressedSize = reader.readInt(4);
        var fileNameLength = reader.readInt(2);
        this.extraFieldsLength = reader.readInt(2);
        this.fileCommentLength = reader.readInt(2);
        this.diskNumberStart = reader.readInt(2);
        this.internalFileAttributes = reader.readInt(2);
        this.externalFileAttributes = reader.readInt(4);
        this.localHeaderOffset = reader.readInt(4);

        if (this.isEncrypted()) {
            throw new Error("Encrypted zip are not supported");
        }

        // will be read in the local part, see the comments there
        reader.skip(fileNameLength);
        this.readExtraFields(reader);
        this.parseZIP64ExtraField(reader);
        this.fileComment = reader.readData(this.fileCommentLength);
    },

    /**
     * Parse the external file attributes and get the unix/dos permissions.
     */
    processAttributes: function () {
        this.unixPermissions = null;
        this.dosPermissions = null;
        var madeBy = this.versionMadeBy >> 8;

        // Check if we have the DOS directory flag set.
        // We look for it in the DOS and UNIX permissions
        // but some unknown platform could set it as a compatibility flag.
        this.dir = this.externalFileAttributes & 0x0010 ? true : false;

        if(madeBy === MADE_BY_DOS) {
            // first 6 bits (0 to 5)
            this.dosPermissions = this.externalFileAttributes & 0x3F;
        }

        if(madeBy === MADE_BY_UNIX) {
            this.unixPermissions = (this.externalFileAttributes >> 16) & 0xFFFF;
            // the octal permissions are in (this.unixPermissions & 0x01FF).toString(8);
        }

        // fail safe : if the name ends with a / it probably means a folder
        if (!this.dir && this.fileNameStr.slice(-1) === "/") {
            this.dir = true;
        }
    },

    /**
     * Parse the ZIP64 extra field and merge the info in the current ZipEntry.
     * @param {DataReader} reader the reader to use.
     */
    parseZIP64ExtraField: function() {
        if (!this.extraFields[0x0001]) {
            return;
        }

        // should be something, preparing the extra reader
        var extraReader = readerFor(this.extraFields[0x0001].value);

        // I really hope that these 64bits integer can fit in 32 bits integer, because js
        // won't let us have more.
        if (this.uncompressedSize === utils.MAX_VALUE_32BITS) {
            this.uncompressedSize = extraReader.readInt(8);
        }
        if (this.compressedSize === utils.MAX_VALUE_32BITS) {
            this.compressedSize = extraReader.readInt(8);
        }
        if (this.localHeaderOffset === utils.MAX_VALUE_32BITS) {
            this.localHeaderOffset = extraReader.readInt(8);
        }
        if (this.diskNumberStart === utils.MAX_VALUE_32BITS) {
            this.diskNumberStart = extraReader.readInt(4);
        }
    },
    /**
     * Read the central part of a zip file and add the info in this object.
     * @param {DataReader} reader the reader to use.
     */
    readExtraFields: function(reader) {
        var end = reader.index + this.extraFieldsLength,
            extraFieldId,
            extraFieldLength,
            extraFieldValue;

        if (!this.extraFields) {
            this.extraFields = {};
        }

        while (reader.index + 4 < end) {
            extraFieldId = reader.readInt(2);
            extraFieldLength = reader.readInt(2);
            extraFieldValue = reader.readData(extraFieldLength);

            this.extraFields[extraFieldId] = {
                id: extraFieldId,
                length: extraFieldLength,
                value: extraFieldValue
            };
        }

        reader.setIndex(end);
    },
    /**
     * Apply an UTF8 transformation if needed.
     */
    handleUTF8: function() {
        var decodeParamType = support.uint8array ? "uint8array" : "array";
        if (this.useUTF8()) {
            this.fileNameStr = utf8.utf8decode(this.fileName);
            this.fileCommentStr = utf8.utf8decode(this.fileComment);
        } else {
            var upath = this.findExtraFieldUnicodePath();
            if (upath !== null) {
                this.fileNameStr = upath;
            } else {
                // ASCII text or unsupported code page
                var fileNameByteArray =  utils.transformTo(decodeParamType, this.fileName);
                this.fileNameStr = this.loadOptions.decodeFileName(fileNameByteArray);
            }

            var ucomment = this.findExtraFieldUnicodeComment();
            if (ucomment !== null) {
                this.fileCommentStr = ucomment;
            } else {
                // ASCII text or unsupported code page
                var commentByteArray =  utils.transformTo(decodeParamType, this.fileComment);
                this.fileCommentStr = this.loadOptions.decodeFileName(commentByteArray);
            }
        }
    },

    /**
     * Find the unicode path declared in the extra field, if any.
     * @return {String} the unicode path, null otherwise.
     */
    findExtraFieldUnicodePath: function() {
        var upathField = this.extraFields[0x7075];
        if (upathField) {
            var extraReader = readerFor(upathField.value);

            // wrong version
            if (extraReader.readInt(1) !== 1) {
                return null;
            }

            // the crc of the filename changed, this field is out of date.
            if (crc32fn(this.fileName) !== extraReader.readInt(4)) {
                return null;
            }

            return utf8.utf8decode(extraReader.readData(upathField.length - 5));
        }
        return null;
    },

    /**
     * Find the unicode comment declared in the extra field, if any.
     * @return {String} the unicode comment, null otherwise.
     */
    findExtraFieldUnicodeComment: function() {
        var ucommentField = this.extraFields[0x6375];
        if (ucommentField) {
            var extraReader = readerFor(ucommentField.value);

            // wrong version
            if (extraReader.readInt(1) !== 1) {
                return null;
            }

            // the crc of the comment changed, this field is out of date.
            if (crc32fn(this.fileComment) !== extraReader.readInt(4)) {
                return null;
            }

            return utf8.utf8decode(extraReader.readData(ucommentField.length - 5));
        }
        return null;
    }
};
module.exports = ZipEntry;

},{"./compressedObject":2,"./compressions":3,"./crc32":4,"./reader/readerFor":22,"./support":30,"./utf8":31,"./utils":32}],35:[function(require,module,exports){
"use strict";

var StreamHelper = require("./stream/StreamHelper");
var DataWorker = require("./stream/DataWorker");
var utf8 = require("./utf8");
var CompressedObject = require("./compressedObject");
var GenericWorker = require("./stream/GenericWorker");

/**
 * A simple object representing a file in the zip file.
 * @constructor
 * @param {string} name the name of the file
 * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data
 * @param {Object} options the options of the file
 */
var ZipObject = function(name, data, options) {
    this.name = name;
    this.dir = options.dir;
    this.date = options.date;
    this.comment = options.comment;
    this.unixPermissions = options.unixPermissions;
    this.dosPermissions = options.dosPermissions;

    this._data = data;
    this._dataBinary = options.binary;
    // keep only the compression
    this.options = {
        compression : options.compression,
        compressionOptions : options.compressionOptions
    };
};

ZipObject.prototype = {
    /**
     * Create an internal stream for the content of this object.
     * @param {String} type the type of each chunk.
     * @return StreamHelper the stream.
     */
    internalStream: function (type) {
        var result = null, outputType = "string";
        try {
            if (!type) {
                throw new Error("No output type specified.");
            }
            outputType = type.toLowerCase();
            var askUnicodeString = outputType === "string" || outputType === "text";
            if (outputType === "binarystring" || outputType === "text") {
                outputType = "string";
            }
            result = this._decompressWorker();

            var isUnicodeString = !this._dataBinary;

            if (isUnicodeString && !askUnicodeString) {
                result = result.pipe(new utf8.Utf8EncodeWorker());
            }
            if (!isUnicodeString && askUnicodeString) {
                result = result.pipe(new utf8.Utf8DecodeWorker());
            }
        } catch (e) {
            result = new GenericWorker("error");
            result.error(e);
        }

        return new StreamHelper(result, outputType, "");
    },

    /**
     * Prepare the content in the asked type.
     * @param {String} type the type of the result.
     * @param {Function} onUpdate a function to call on each internal update.
     * @return Promise the promise of the result.
     */
    async: function (type, onUpdate) {
        return this.internalStream(type).accumulate(onUpdate);
    },

    /**
     * Prepare the content as a nodejs stream.
     * @param {String} type the type of each chunk.
     * @param {Function} onUpdate a function to call on each internal update.
     * @return Stream the stream.
     */
    nodeStream: function (type, onUpdate) {
        return this.internalStream(type || "nodebuffer").toNodejsStream(onUpdate);
    },

    /**
     * Return a worker for the compressed content.
     * @private
     * @param {Object} compression the compression object to use.
     * @param {Object} compressionOptions the options to use when compressing.
     * @return Worker the worker.
     */
    _compressWorker: function (compression, compressionOptions) {
        if (
            this._data instanceof CompressedObject &&
            this._data.compression.magic === compression.magic
        ) {
            return this._data.getCompressedWorker();
        } else {
            var result = this._decompressWorker();
            if(!this._dataBinary) {
                result = result.pipe(new utf8.Utf8EncodeWorker());
            }
            return CompressedObject.createWorkerFrom(result, compression, compressionOptions);
        }
    },
    /**
     * Return a worker for the decompressed content.
     * @private
     * @return Worker the worker.
     */
    _decompressWorker : function () {
        if (this._data instanceof CompressedObject) {
            return this._data.getContentWorker();
        } else if (this._data instanceof GenericWorker) {
            return this._data;
        } else {
            return new DataWorker(this._data);
        }
    }
};

var removedMethods = ["asText", "asBinary", "asNodeBuffer", "asUint8Array", "asArrayBuffer"];
var removedFn = function () {
    throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.");
};

for(var i = 0; i < removedMethods.length; i++) {
    ZipObject.prototype[removedMethods[i]] = removedFn;
}
module.exports = ZipObject;

},{"./compressedObject":2,"./stream/DataWorker":27,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31}],36:[function(require,module,exports){
(function (global){
'use strict';
var Mutation = global.MutationObserver || global.WebKitMutationObserver;

var scheduleDrain;

{
  if (Mutation) {
    var called = 0;
    var observer = new Mutation(nextTick);
    var element = global.document.createTextNode('');
    observer.observe(element, {
      characterData: true
    });
    scheduleDrain = function () {
      element.data = (called = ++called % 2);
    };
  } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {
    var channel = new global.MessageChannel();
    channel.port1.onmessage = nextTick;
    scheduleDrain = function () {
      channel.port2.postMessage(0);
    };
  } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {
    scheduleDrain = function () {

      // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted
      // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.
      var scriptEl = global.document.createElement('script');
      scriptEl.onreadystatechange = function () {
        nextTick();

        scriptEl.onreadystatechange = null;
        scriptEl.parentNode.removeChild(scriptEl);
        scriptEl = null;
      };
      global.document.documentElement.appendChild(scriptEl);
    };
  } else {
    scheduleDrain = function () {
      setTimeout(nextTick, 0);
    };
  }
}

var draining;
var queue = [];
//named nextTick for less confusing stack traces
function nextTick() {
  draining = true;
  var i, oldQueue;
  var len = queue.length;
  while (len) {
    oldQueue = queue;
    queue = [];
    i = -1;
    while (++i < len) {
      oldQueue[i]();
    }
    len = queue.length;
  }
  draining = false;
}

module.exports = immediate;
function immediate(task) {
  if (queue.push(task) === 1 && !draining) {
    scheduleDrain();
  }
}

}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
},{}],37:[function(require,module,exports){
'use strict';
var immediate = require('immediate');

/* istanbul ignore next */
function INTERNAL() {}

var handlers = {};

var REJECTED = ['REJECTED'];
var FULFILLED = ['FULFILLED'];
var PENDING = ['PENDING'];

module.exports = Promise;

function Promise(resolver) {
  if (typeof resolver !== 'function') {
    throw new TypeError('resolver must be a function');
  }
  this.state = PENDING;
  this.queue = [];
  this.outcome = void 0;
  if (resolver !== INTERNAL) {
    safelyResolveThenable(this, resolver);
  }
}

Promise.prototype["finally"] = function (callback) {
  if (typeof callback !== 'function') {
    return this;
  }
  var p = this.constructor;
  return this.then(resolve, reject);

  function resolve(value) {
    function yes () {
      return value;
    }
    return p.resolve(callback()).then(yes);
  }
  function reject(reason) {
    function no () {
      throw reason;
    }
    return p.resolve(callback()).then(no);
  }
};
Promise.prototype["catch"] = function (onRejected) {
  return this.then(null, onRejected);
};
Promise.prototype.then = function (onFulfilled, onRejected) {
  if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||
    typeof onRejected !== 'function' && this.state === REJECTED) {
    return this;
  }
  var promise = new this.constructor(INTERNAL);
  if (this.state !== PENDING) {
    var resolver = this.state === FULFILLED ? onFulfilled : onRejected;
    unwrap(promise, resolver, this.outcome);
  } else {
    this.queue.push(new QueueItem(promise, onFulfilled, onRejected));
  }

  return promise;
};
function QueueItem(promise, onFulfilled, onRejected) {
  this.promise = promise;
  if (typeof onFulfilled === 'function') {
    this.onFulfilled = onFulfilled;
    this.callFulfilled = this.otherCallFulfilled;
  }
  if (typeof onRejected === 'function') {
    this.onRejected = onRejected;
    this.callRejected = this.otherCallRejected;
  }
}
QueueItem.prototype.callFulfilled = function (value) {
  handlers.resolve(this.promise, value);
};
QueueItem.prototype.otherCallFulfilled = function (value) {
  unwrap(this.promise, this.onFulfilled, value);
};
QueueItem.prototype.callRejected = function (value) {
  handlers.reject(this.promise, value);
};
QueueItem.prototype.otherCallRejected = function (value) {
  unwrap(this.promise, this.onRejected, value);
};

function unwrap(promise, func, value) {
  immediate(function () {
    var returnValue;
    try {
      returnValue = func(value);
    } catch (e) {
      return handlers.reject(promise, e);
    }
    if (returnValue === promise) {
      handlers.reject(promise, new TypeError('Cannot resolve promise with itself'));
    } else {
      handlers.resolve(promise, returnValue);
    }
  });
}

handlers.resolve = function (self, value) {
  var result = tryCatch(getThen, value);
  if (result.status === 'error') {
    return handlers.reject(self, result.value);
  }
  var thenable = result.value;

  if (thenable) {
    safelyResolveThenable(self, thenable);
  } else {
    self.state = FULFILLED;
    self.outcome = value;
    var i = -1;
    var len = self.queue.length;
    while (++i < len) {
      self.queue[i].callFulfilled(value);
    }
  }
  return self;
};
handlers.reject = function (self, error) {
  self.state = REJECTED;
  self.outcome = error;
  var i = -1;
  var len = self.queue.length;
  while (++i < len) {
    self.queue[i].callRejected(error);
  }
  return self;
};

function getThen(obj) {
  // Make sure we only access the accessor once as required by the spec
  var then = obj && obj.then;
  if (obj && (typeof obj === 'object' || typeof obj === 'function') && typeof then === 'function') {
    return function appyThen() {
      then.apply(obj, arguments);
    };
  }
}

function safelyResolveThenable(self, thenable) {
  // Either fulfill, reject or reject with error
  var called = false;
  function onError(value) {
    if (called) {
      return;
    }
    called = true;
    handlers.reject(self, value);
  }

  function onSuccess(value) {
    if (called) {
      return;
    }
    called = true;
    handlers.resolve(self, value);
  }

  function tryToUnwrap() {
    thenable(onSuccess, onError);
  }

  var result = tryCatch(tryToUnwrap);
  if (result.status === 'error') {
    onError(result.value);
  }
}

function tryCatch(func, value) {
  var out = {};
  try {
    out.value = func(value);
    out.status = 'success';
  } catch (e) {
    out.status = 'error';
    out.value = e;
  }
  return out;
}

Promise.resolve = resolve;
function resolve(value) {
  if (value instanceof this) {
    return value;
  }
  return handlers.resolve(new this(INTERNAL), value);
}

Promise.reject = reject;
function reject(reason) {
  var promise = new this(INTERNAL);
  return handlers.reject(promise, reason);
}

Promise.all = all;
function all(iterable) {
  var self = this;
  if (Object.prototype.toString.call(iterable) !== '[object Array]') {
    return this.reject(new TypeError('must be an array'));
  }

  var len = iterable.length;
  var called = false;
  if (!len) {
    return this.resolve([]);
  }

  var values = new Array(len);
  var resolved = 0;
  var i = -1;
  var promise = new this(INTERNAL);

  while (++i < len) {
    allResolver(iterable[i], i);
  }
  return promise;
  function allResolver(value, i) {
    self.resolve(value).then(resolveFromAll, function (error) {
      if (!called) {
        called = true;
        handlers.reject(promise, error);
      }
    });
    function resolveFromAll(outValue) {
      values[i] = outValue;
      if (++resolved === len && !called) {
        called = true;
        handlers.resolve(promise, values);
      }
    }
  }
}

Promise.race = race;
function race(iterable) {
  var self = this;
  if (Object.prototype.toString.call(iterable) !== '[object Array]') {
    return this.reject(new TypeError('must be an array'));
  }

  var len = iterable.length;
  var called = false;
  if (!len) {
    return this.resolve([]);
  }

  var i = -1;
  var promise = new this(INTERNAL);

  while (++i < len) {
    resolver(iterable[i]);
  }
  return promise;
  function resolver(value) {
    self.resolve(value).then(function (response) {
      if (!called) {
        called = true;
        handlers.resolve(promise, response);
      }
    }, function (error) {
      if (!called) {
        called = true;
        handlers.reject(promise, error);
      }
    });
  }
}

},{"immediate":36}],38:[function(require,module,exports){
// Top level file is just a mixin of submodules & constants
'use strict';

var assign    = require('./lib/utils/common').assign;

var deflate   = require('./lib/deflate');
var inflate   = require('./lib/inflate');
var constants = require('./lib/zlib/constants');

var pako = {};

assign(pako, deflate, inflate, constants);

module.exports = pako;

},{"./lib/deflate":39,"./lib/inflate":40,"./lib/utils/common":41,"./lib/zlib/constants":44}],39:[function(require,module,exports){
'use strict';


var zlib_deflate = require('./zlib/deflate');
var utils        = require('./utils/common');
var strings      = require('./utils/strings');
var msg          = require('./zlib/messages');
var ZStream      = require('./zlib/zstream');

var toString = Object.prototype.toString;

/* Public constants ==========================================================*/
/* ===========================================================================*/

var Z_NO_FLUSH      = 0;
var Z_FINISH        = 4;

var Z_OK            = 0;
var Z_STREAM_END    = 1;
var Z_SYNC_FLUSH    = 2;

var Z_DEFAULT_COMPRESSION = -1;

var Z_DEFAULT_STRATEGY    = 0;

var Z_DEFLATED  = 8;

/* ===========================================================================*/


/**
 * class Deflate
 *
 * Generic JS-style wrapper for zlib calls. If you don't need
 * streaming behaviour - use more simple functions: [[deflate]],
 * [[deflateRaw]] and [[gzip]].
 **/

/* internal
 * Deflate.chunks -> Array
 *
 * Chunks of output data, if [[Deflate#onData]] not overriden.
 **/

/**
 * Deflate.result -> Uint8Array|Array
 *
 * Compressed result, generated by default [[Deflate#onData]]
 * and [[Deflate#onEnd]] handlers. Filled after you push last chunk
 * (call [[Deflate#push]] with `Z_FINISH` / `true` param)  or if you
 * push a chunk with explicit flush (call [[Deflate#push]] with
 * `Z_SYNC_FLUSH` param).
 **/

/**
 * Deflate.err -> Number
 *
 * Error code after deflate finished. 0 (Z_OK) on success.
 * You will not need it in real life, because deflate errors
 * are possible only on wrong options or bad `onData` / `onEnd`
 * custom handlers.
 **/

/**
 * Deflate.msg -> String
 *
 * Error message, if [[Deflate.err]] != 0
 **/


/**
 * new Deflate(options)
 * - options (Object): zlib deflate options.
 *
 * Creates new deflator instance with specified params. Throws exception
 * on bad params. Supported options:
 *
 * - `level`
 * - `windowBits`
 * - `memLevel`
 * - `strategy`
 * - `dictionary`
 *
 * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
 * for more information on these.
 *
 * Additional options, for internal needs:
 *
 * - `chunkSize` - size of generated data chunks (16K by default)
 * - `raw` (Boolean) - do raw deflate
 * - `gzip` (Boolean) - create gzip wrapper
 * - `to` (String) - if equal to 'string', then result will be "binary string"
 *    (each char code [0..255])
 * - `header` (Object) - custom header for gzip
 *   - `text` (Boolean) - true if compressed data believed to be text
 *   - `time` (Number) - modification time, unix timestamp
 *   - `os` (Number) - operation system code
 *   - `extra` (Array) - array of bytes with extra data (max 65536)
 *   - `name` (String) - file name (binary string)
 *   - `comment` (String) - comment (binary string)
 *   - `hcrc` (Boolean) - true if header crc should be added
 *
 * ##### Example:
 *
 * ```javascript
 * var pako = require('pako')
 *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])
 *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);
 *
 * var deflate = new pako.Deflate({ level: 3});
 *
 * deflate.push(chunk1, false);
 * deflate.push(chunk2, true);  // true -> last chunk
 *
 * if (deflate.err) { throw new Error(deflate.err); }
 *
 * console.log(deflate.result);
 * ```
 **/
function Deflate(options) {
  if (!(this instanceof Deflate)) return new Deflate(options);

  this.options = utils.assign({
    level: Z_DEFAULT_COMPRESSION,
    method: Z_DEFLATED,
    chunkSize: 16384,
    windowBits: 15,
    memLevel: 8,
    strategy: Z_DEFAULT_STRATEGY,
    to: ''
  }, options || {});

  var opt = this.options;

  if (opt.raw && (opt.windowBits > 0)) {
    opt.windowBits = -opt.windowBits;
  }

  else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {
    opt.windowBits += 16;
  }

  this.err    = 0;      // error code, if happens (0 = Z_OK)
  this.msg    = '';     // error message
  this.ended  = false;  // used to avoid multiple onEnd() calls
  this.chunks = [];     // chunks of compressed data

  this.strm = new ZStream();
  this.strm.avail_out = 0;

  var status = zlib_deflate.deflateInit2(
    this.strm,
    opt.level,
    opt.method,
    opt.windowBits,
    opt.memLevel,
    opt.strategy
  );

  if (status !== Z_OK) {
    throw new Error(msg[status]);
  }

  if (opt.header) {
    zlib_deflate.deflateSetHeader(this.strm, opt.header);
  }

  if (opt.dictionary) {
    var dict;
    // Convert data if needed
    if (typeof opt.dictionary === 'string') {
      // If we need to compress text, change encoding to utf8.
      dict = strings.string2buf(opt.dictionary);
    } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {
      dict = new Uint8Array(opt.dictionary);
    } else {
      dict = opt.dictionary;
    }

    status = zlib_deflate.deflateSetDictionary(this.strm, dict);

    if (status !== Z_OK) {
      throw new Error(msg[status]);
    }

    this._dict_set = true;
  }
}

/**
 * Deflate#push(data[, mode]) -> Boolean
 * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be
 *   converted to utf8 byte sequence.
 * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.
 *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` meansh Z_FINISH.
 *
 * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with
 * new compressed chunks. Returns `true` on success. The last data block must have
 * mode Z_FINISH (or `true`). That will flush internal pending buffers and call
 * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you
 * can use mode Z_SYNC_FLUSH, keeping the compression context.
 *
 * On fail call [[Deflate#onEnd]] with error code and return false.
 *
 * We strongly recommend to use `Uint8Array` on input for best speed (output
 * array format is detected automatically). Also, don't skip last param and always
 * use the same type in your code (boolean or number). That will improve JS speed.
 *
 * For regular `Array`-s make sure all elements are [0..255].
 *
 * ##### Example
 *
 * ```javascript
 * push(chunk, false); // push one of data chunks
 * ...
 * push(chunk, true);  // push last chunk
 * ```
 **/
Deflate.prototype.push = function (data, mode) {
  var strm = this.strm;
  var chunkSize = this.options.chunkSize;
  var status, _mode;

  if (this.ended) { return false; }

  _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);

  // Convert data if needed
  if (typeof data === 'string') {
    // If we need to compress text, change encoding to utf8.
    strm.input = strings.string2buf(data);
  } else if (toString.call(data) === '[object ArrayBuffer]') {
    strm.input = new Uint8Array(data);
  } else {
    strm.input = data;
  }

  strm.next_in = 0;
  strm.avail_in = strm.input.length;

  do {
    if (strm.avail_out === 0) {
      strm.output = new utils.Buf8(chunkSize);
      strm.next_out = 0;
      strm.avail_out = chunkSize;
    }
    status = zlib_deflate.deflate(strm, _mode);    /* no bad return value */

    if (status !== Z_STREAM_END && status !== Z_OK) {
      this.onEnd(status);
      this.ended = true;
      return false;
    }
    if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {
      if (this.options.to === 'string') {
        this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));
      } else {
        this.onData(utils.shrinkBuf(strm.output, strm.next_out));
      }
    }
  } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);

  // Finalize on the last chunk.
  if (_mode === Z_FINISH) {
    status = zlib_deflate.deflateEnd(this.strm);
    this.onEnd(status);
    this.ended = true;
    return status === Z_OK;
  }

  // callback interim results if Z_SYNC_FLUSH.
  if (_mode === Z_SYNC_FLUSH) {
    this.onEnd(Z_OK);
    strm.avail_out = 0;
    return true;
  }

  return true;
};


/**
 * Deflate#onData(chunk) -> Void
 * - chunk (Uint8Array|Array|String): ouput data. Type of array depends
 *   on js engine support. When string output requested, each chunk
 *   will be string.
 *
 * By default, stores data blocks in `chunks[]` property and glue
 * those in `onEnd`. Override this handler, if you need another behaviour.
 **/
Deflate.prototype.onData = function (chunk) {
  this.chunks.push(chunk);
};


/**
 * Deflate#onEnd(status) -> Void
 * - status (Number): deflate status. 0 (Z_OK) on success,
 *   other if not.
 *
 * Called once after you tell deflate that the input stream is
 * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)
 * or if an error happened. By default - join collected chunks,
 * free memory and fill `results` / `err` properties.
 **/
Deflate.prototype.onEnd = function (status) {
  // On success - join
  if (status === Z_OK) {
    if (this.options.to === 'string') {
      this.result = this.chunks.join('');
    } else {
      this.result = utils.flattenChunks(this.chunks);
    }
  }
  this.chunks = [];
  this.err = status;
  this.msg = this.strm.msg;
};


/**
 * deflate(data[, options]) -> Uint8Array|Array|String
 * - data (Uint8Array|Array|String): input data to compress.
 * - options (Object): zlib deflate options.
 *
 * Compress `data` with deflate algorithm and `options`.
 *
 * Supported options are:
 *
 * - level
 * - windowBits
 * - memLevel
 * - strategy
 * - dictionary
 *
 * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
 * for more information on these.
 *
 * Sugar (options):
 *
 * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify
 *   negative windowBits implicitly.
 * - `to` (String) - if equal to 'string', then result will be "binary string"
 *    (each char code [0..255])
 *
 * ##### Example:
 *
 * ```javascript
 * var pako = require('pako')
 *   , data = Uint8Array([1,2,3,4,5,6,7,8,9]);
 *
 * console.log(pako.deflate(data));
 * ```
 **/
function deflate(input, options) {
  var deflator = new Deflate(options);

  deflator.push(input, true);

  // That will never happens, if you don't cheat with options :)
  if (deflator.err) { throw deflator.msg || msg[deflator.err]; }

  return deflator.result;
}


/**
 * deflateRaw(data[, options]) -> Uint8Array|Array|String
 * - data (Uint8Array|Array|String): input data to compress.
 * - options (Object): zlib deflate options.
 *
 * The same as [[deflate]], but creates raw data, without wrapper
 * (header and adler32 crc).
 **/
function deflateRaw(input, options) {
  options = options || {};
  options.raw = true;
  return deflate(input, options);
}


/**
 * gzip(data[, options]) -> Uint8Array|Array|String
 * - data (Uint8Array|Array|String): input data to compress.
 * - options (Object): zlib deflate options.
 *
 * The same as [[deflate]], but create gzip wrapper instead of
 * deflate one.
 **/
function gzip(input, options) {
  options = options || {};
  options.gzip = true;
  return deflate(input, options);
}


exports.Deflate = Deflate;
exports.deflate = deflate;
exports.deflateRaw = deflateRaw;
exports.gzip = gzip;

},{"./utils/common":41,"./utils/strings":42,"./zlib/deflate":46,"./zlib/messages":51,"./zlib/zstream":53}],40:[function(require,module,exports){
'use strict';


var zlib_inflate = require('./zlib/inflate');
var utils        = require('./utils/common');
var strings      = require('./utils/strings');
var c            = require('./zlib/constants');
var msg          = require('./zlib/messages');
var ZStream      = require('./zlib/zstream');
var GZheader     = require('./zlib/gzheader');

var toString = Object.prototype.toString;

/**
 * class Inflate
 *
 * Generic JS-style wrapper for zlib calls. If you don't need
 * streaming behaviour - use more simple functions: [[inflate]]
 * and [[inflateRaw]].
 **/

/* internal
 * inflate.chunks -> Array
 *
 * Chunks of output data, if [[Inflate#onData]] not overriden.
 **/

/**
 * Inflate.result -> Uint8Array|Array|String
 *
 * Uncompressed result, generated by default [[Inflate#onData]]
 * and [[Inflate#onEnd]] handlers. Filled after you push last chunk
 * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you
 * push a chunk with explicit flush (call [[Inflate#push]] with
 * `Z_SYNC_FLUSH` param).
 **/

/**
 * Inflate.err -> Number
 *
 * Error code after inflate finished. 0 (Z_OK) on success.
 * Should be checked if broken data possible.
 **/

/**
 * Inflate.msg -> String
 *
 * Error message, if [[Inflate.err]] != 0
 **/


/**
 * new Inflate(options)
 * - options (Object): zlib inflate options.
 *
 * Creates new inflator instance with specified params. Throws exception
 * on bad params. Supported options:
 *
 * - `windowBits`
 * - `dictionary`
 *
 * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
 * for more information on these.
 *
 * Additional options, for internal needs:
 *
 * - `chunkSize` - size of generated data chunks (16K by default)
 * - `raw` (Boolean) - do raw inflate
 * - `to` (String) - if equal to 'string', then result will be converted
 *   from utf8 to utf16 (javascript) string. When string output requested,
 *   chunk length can differ from `chunkSize`, depending on content.
 *
 * By default, when no options set, autodetect deflate/gzip data format via
 * wrapper header.
 *
 * ##### Example:
 *
 * ```javascript
 * var pako = require('pako')
 *   , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])
 *   , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);
 *
 * var inflate = new pako.Inflate({ level: 3});
 *
 * inflate.push(chunk1, false);
 * inflate.push(chunk2, true);  // true -> last chunk
 *
 * if (inflate.err) { throw new Error(inflate.err); }
 *
 * console.log(inflate.result);
 * ```
 **/
function Inflate(options) {
  if (!(this instanceof Inflate)) return new Inflate(options);

  this.options = utils.assign({
    chunkSize: 16384,
    windowBits: 0,
    to: ''
  }, options || {});

  var opt = this.options;

  // Force window size for `raw` data, if not set directly,
  // because we have no header for autodetect.
  if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {
    opt.windowBits = -opt.windowBits;
    if (opt.windowBits === 0) { opt.windowBits = -15; }
  }

  // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate
  if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&
      !(options && options.windowBits)) {
    opt.windowBits += 32;
  }

  // Gzip header has no info about windows size, we can do autodetect only
  // for deflate. So, if window size not set, force it to max when gzip possible
  if ((opt.windowBits > 15) && (opt.windowBits < 48)) {
    // bit 3 (16) -> gzipped data
    // bit 4 (32) -> autodetect gzip/deflate
    if ((opt.windowBits & 15) === 0) {
      opt.windowBits |= 15;
    }
  }

  this.err    = 0;      // error code, if happens (0 = Z_OK)
  this.msg    = '';     // error message
  this.ended  = false;  // used to avoid multiple onEnd() calls
  this.chunks = [];     // chunks of compressed data

  this.strm   = new ZStream();
  this.strm.avail_out = 0;

  var status  = zlib_inflate.inflateInit2(
    this.strm,
    opt.windowBits
  );

  if (status !== c.Z_OK) {
    throw new Error(msg[status]);
  }

  this.header = new GZheader();

  zlib_inflate.inflateGetHeader(this.strm, this.header);
}

/**
 * Inflate#push(data[, mode]) -> Boolean
 * - data (Uint8Array|Array|ArrayBuffer|String): input data
 * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.
 *   See constants. Skipped or `false` means Z_NO_FLUSH, `true` meansh Z_FINISH.
 *
 * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with
 * new output chunks. Returns `true` on success. The last data block must have
 * mode Z_FINISH (or `true`). That will flush internal pending buffers and call
 * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you
 * can use mode Z_SYNC_FLUSH, keeping the decompression context.
 *
 * On fail call [[Inflate#onEnd]] with error code and return false.
 *
 * We strongly recommend to use `Uint8Array` on input for best speed (output
 * format is detected automatically). Also, don't skip last param and always
 * use the same type in your code (boolean or number). That will improve JS speed.
 *
 * For regular `Array`-s make sure all elements are [0..255].
 *
 * ##### Example
 *
 * ```javascript
 * push(chunk, false); // push one of data chunks
 * ...
 * push(chunk, true);  // push last chunk
 * ```
 **/
Inflate.prototype.push = function (data, mode) {
  var strm = this.strm;
  var chunkSize = this.options.chunkSize;
  var dictionary = this.options.dictionary;
  var status, _mode;
  var next_out_utf8, tail, utf8str;
  var dict;

  // Flag to properly process Z_BUF_ERROR on testing inflate call
  // when we check that all output data was flushed.
  var allowBufError = false;

  if (this.ended) { return false; }
  _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);

  // Convert data if needed
  if (typeof data === 'string') {
    // Only binary strings can be decompressed on practice
    strm.input = strings.binstring2buf(data);
  } else if (toString.call(data) === '[object ArrayBuffer]') {
    strm.input = new Uint8Array(data);
  } else {
    strm.input = data;
  }

  strm.next_in = 0;
  strm.avail_in = strm.input.length;

  do {
    if (strm.avail_out === 0) {
      strm.output = new utils.Buf8(chunkSize);
      strm.next_out = 0;
      strm.avail_out = chunkSize;
    }

    status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH);    /* no bad return value */

    if (status === c.Z_NEED_DICT && dictionary) {
      // Convert data if needed
      if (typeof dictionary === 'string') {
        dict = strings.string2buf(dictionary);
      } else if (toString.call(dictionary) === '[object ArrayBuffer]') {
        dict = new Uint8Array(dictionary);
      } else {
        dict = dictionary;
      }

      status = zlib_inflate.inflateSetDictionary(this.strm, dict);

    }

    if (status === c.Z_BUF_ERROR && allowBufError === true) {
      status = c.Z_OK;
      allowBufError = false;
    }

    if (status !== c.Z_STREAM_END && status !== c.Z_OK) {
      this.onEnd(status);
      this.ended = true;
      return false;
    }

    if (strm.next_out) {
      if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH))) {

        if (this.options.to === 'string') {

          next_out_utf8 = strings.utf8border(strm.output, strm.next_out);

          tail = strm.next_out - next_out_utf8;
          utf8str = strings.buf2string(strm.output, next_out_utf8);

          // move tail
          strm.next_out = tail;
          strm.avail_out = chunkSize - tail;
          if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }

          this.onData(utf8str);

        } else {
          this.onData(utils.shrinkBuf(strm.output, strm.next_out));
        }
      }
    }

    // When no more input data, we should check that internal inflate buffers
    // are flushed. The only way to do it when avail_out = 0 - run one more
    // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.
    // Here we set flag to process this error properly.
    //
    // NOTE. Deflate does not return error in this case and does not needs such
    // logic.
    if (strm.avail_in === 0 && strm.avail_out === 0) {
      allowBufError = true;
    }

  } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END);

  if (status === c.Z_STREAM_END) {
    _mode = c.Z_FINISH;
  }

  // Finalize on the last chunk.
  if (_mode === c.Z_FINISH) {
    status = zlib_inflate.inflateEnd(this.strm);
    this.onEnd(status);
    this.ended = true;
    return status === c.Z_OK;
  }

  // callback interim results if Z_SYNC_FLUSH.
  if (_mode === c.Z_SYNC_FLUSH) {
    this.onEnd(c.Z_OK);
    strm.avail_out = 0;
    return true;
  }

  return true;
};


/**
 * Inflate#onData(chunk) -> Void
 * - chunk (Uint8Array|Array|String): ouput data. Type of array depends
 *   on js engine support. When string output requested, each chunk
 *   will be string.
 *
 * By default, stores data blocks in `chunks[]` property and glue
 * those in `onEnd`. Override this handler, if you need another behaviour.
 **/
Inflate.prototype.onData = function (chunk) {
  this.chunks.push(chunk);
};


/**
 * Inflate#onEnd(status) -> Void
 * - status (Number): inflate status. 0 (Z_OK) on success,
 *   other if not.
 *
 * Called either after you tell inflate that the input stream is
 * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)
 * or if an error happened. By default - join collected chunks,
 * free memory and fill `results` / `err` properties.
 **/
Inflate.prototype.onEnd = function (status) {
  // On success - join
  if (status === c.Z_OK) {
    if (this.options.to === 'string') {
      // Glue & convert here, until we teach pako to send
      // utf8 alligned strings to onData
      this.result = this.chunks.join('');
    } else {
      this.result = utils.flattenChunks(this.chunks);
    }
  }
  this.chunks = [];
  this.err = status;
  this.msg = this.strm.msg;
};


/**
 * inflate(data[, options]) -> Uint8Array|Array|String
 * - data (Uint8Array|Array|String): input data to decompress.
 * - options (Object): zlib inflate options.
 *
 * Decompress `data` with inflate/ungzip and `options`. Autodetect
 * format via wrapper header by default. That's why we don't provide
 * separate `ungzip` method.
 *
 * Supported options are:
 *
 * - windowBits
 *
 * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)
 * for more information.
 *
 * Sugar (options):
 *
 * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify
 *   negative windowBits implicitly.
 * - `to` (String) - if equal to 'string', then result will be converted
 *   from utf8 to utf16 (javascript) string. When string output requested,
 *   chunk length can differ from `chunkSize`, depending on content.
 *
 *
 * ##### Example:
 *
 * ```javascript
 * var pako = require('pako')
 *   , input = pako.deflate([1,2,3,4,5,6,7,8,9])
 *   , output;
 *
 * try {
 *   output = pako.inflate(input);
 * } catch (err)
 *   console.log(err);
 * }
 * ```
 **/
function inflate(input, options) {
  var inflator = new Inflate(options);

  inflator.push(input, true);

  // That will never happens, if you don't cheat with options :)
  if (inflator.err) { throw inflator.msg || msg[inflator.err]; }

  return inflator.result;
}


/**
 * inflateRaw(data[, options]) -> Uint8Array|Array|String
 * - data (Uint8Array|Array|String): input data to decompress.
 * - options (Object): zlib inflate options.
 *
 * The same as [[inflate]], but creates raw data, without wrapper
 * (header and adler32 crc).
 **/
function inflateRaw(input, options) {
  options = options || {};
  options.raw = true;
  return inflate(input, options);
}


/**
 * ungzip(data[, options]) -> Uint8Array|Array|String
 * - data (Uint8Array|Array|String): input data to decompress.
 * - options (Object): zlib inflate options.
 *
 * Just shortcut to [[inflate]], because it autodetects format
 * by header.content. Done for convenience.
 **/


exports.Inflate = Inflate;
exports.inflate = inflate;
exports.inflateRaw = inflateRaw;
exports.ungzip  = inflate;

},{"./utils/common":41,"./utils/strings":42,"./zlib/constants":44,"./zlib/gzheader":47,"./zlib/inflate":49,"./zlib/messages":51,"./zlib/zstream":53}],41:[function(require,module,exports){
'use strict';


var TYPED_OK =  (typeof Uint8Array !== 'undefined') &&
                (typeof Uint16Array !== 'undefined') &&
                (typeof Int32Array !== 'undefined');


exports.assign = function (obj /*from1, from2, from3, ...*/) {
  var sources = Array.prototype.slice.call(arguments, 1);
  while (sources.length) {
    var source = sources.shift();
    if (!source) { continue; }

    if (typeof source !== 'object') {
      throw new TypeError(source + 'must be non-object');
    }

    for (var p in source) {
      if (source.hasOwnProperty(p)) {
        obj[p] = source[p];
      }
    }
  }

  return obj;
};


// reduce buffer size, avoiding mem copy
exports.shrinkBuf = function (buf, size) {
  if (buf.length === size) { return buf; }
  if (buf.subarray) { return buf.subarray(0, size); }
  buf.length = size;
  return buf;
};


var fnTyped = {
  arraySet: function (dest, src, src_offs, len, dest_offs) {
    if (src.subarray && dest.subarray) {
      dest.set(src.subarray(src_offs, src_offs + len), dest_offs);
      return;
    }
    // Fallback to ordinary array
    for (var i = 0; i < len; i++) {
      dest[dest_offs + i] = src[src_offs + i];
    }
  },
  // Join array of chunks to single array.
  flattenChunks: function (chunks) {
    var i, l, len, pos, chunk, result;

    // calculate data length
    len = 0;
    for (i = 0, l = chunks.length; i < l; i++) {
      len += chunks[i].length;
    }

    // join chunks
    result = new Uint8Array(len);
    pos = 0;
    for (i = 0, l = chunks.length; i < l; i++) {
      chunk = chunks[i];
      result.set(chunk, pos);
      pos += chunk.length;
    }

    return result;
  }
};

var fnUntyped = {
  arraySet: function (dest, src, src_offs, len, dest_offs) {
    for (var i = 0; i < len; i++) {
      dest[dest_offs + i] = src[src_offs + i];
    }
  },
  // Join array of chunks to single array.
  flattenChunks: function (chunks) {
    return [].concat.apply([], chunks);
  }
};


// Enable/Disable typed arrays use, for testing
//
exports.setTyped = function (on) {
  if (on) {
    exports.Buf8  = Uint8Array;
    exports.Buf16 = Uint16Array;
    exports.Buf32 = Int32Array;
    exports.assign(exports, fnTyped);
  } else {
    exports.Buf8  = Array;
    exports.Buf16 = Array;
    exports.Buf32 = Array;
    exports.assign(exports, fnUntyped);
  }
};

exports.setTyped(TYPED_OK);

},{}],42:[function(require,module,exports){
// String encode/decode helpers
'use strict';


var utils = require('./common');


// Quick check if we can use fast array to bin string conversion
//
// - apply(Array) can fail on Android 2.2
// - apply(Uint8Array) can fail on iOS 5.1 Safary
//
var STR_APPLY_OK = true;
var STR_APPLY_UIA_OK = true;

try { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; }
try { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }


// Table with utf8 lengths (calculated by first byte of sequence)
// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,
// because max possible codepoint is 0x10ffff
var _utf8len = new utils.Buf8(256);
for (var q = 0; q < 256; q++) {
  _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);
}
_utf8len[254] = _utf8len[254] = 1; // Invalid sequence start


// convert string to array (typed, when possible)
exports.string2buf = function (str) {
  var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;

  // count binary size
  for (m_pos = 0; m_pos < str_len; m_pos++) {
    c = str.charCodeAt(m_pos);
    if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {
      c2 = str.charCodeAt(m_pos + 1);
      if ((c2 & 0xfc00) === 0xdc00) {
        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
        m_pos++;
      }
    }
    buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;
  }

  // allocate buffer
  buf = new utils.Buf8(buf_len);

  // convert
  for (i = 0, m_pos = 0; i < buf_len; m_pos++) {
    c = str.charCodeAt(m_pos);
    if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {
      c2 = str.charCodeAt(m_pos + 1);
      if ((c2 & 0xfc00) === 0xdc00) {
        c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);
        m_pos++;
      }
    }
    if (c < 0x80) {
      /* one byte */
      buf[i++] = c;
    } else if (c < 0x800) {
      /* two bytes */
      buf[i++] = 0xC0 | (c >>> 6);
      buf[i++] = 0x80 | (c & 0x3f);
    } else if (c < 0x10000) {
      /* three bytes */
      buf[i++] = 0xE0 | (c >>> 12);
      buf[i++] = 0x80 | (c >>> 6 & 0x3f);
      buf[i++] = 0x80 | (c & 0x3f);
    } else {
      /* four bytes */
      buf[i++] = 0xf0 | (c >>> 18);
      buf[i++] = 0x80 | (c >>> 12 & 0x3f);
      buf[i++] = 0x80 | (c >>> 6 & 0x3f);
      buf[i++] = 0x80 | (c & 0x3f);
    }
  }

  return buf;
};

// Helper (used in 2 places)
function buf2binstring(buf, len) {
  // use fallback for big arrays to avoid stack overflow
  if (len < 65537) {
    if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {
      return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));
    }
  }

  var result = '';
  for (var i = 0; i < len; i++) {
    result += String.fromCharCode(buf[i]);
  }
  return result;
}


// Convert byte array to binary string
exports.buf2binstring = function (buf) {
  return buf2binstring(buf, buf.length);
};


// Convert binary string (typed, when possible)
exports.binstring2buf = function (str) {
  var buf = new utils.Buf8(str.length);
  for (var i = 0, len = buf.length; i < len; i++) {
    buf[i] = str.charCodeAt(i);
  }
  return buf;
};


// convert array to string
exports.buf2string = function (buf, max) {
  var i, out, c, c_len;
  var len = max || buf.length;

  // Reserve max possible length (2 words per char)
  // NB: by unknown reasons, Array is significantly faster for
  //     String.fromCharCode.apply than Uint16Array.
  var utf16buf = new Array(len * 2);

  for (out = 0, i = 0; i < len;) {
    c = buf[i++];
    // quick process ascii
    if (c < 0x80) { utf16buf[out++] = c; continue; }

    c_len = _utf8len[c];
    // skip 5 & 6 byte codes
    if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }

    // apply mask on first byte
    c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;
    // join the rest
    while (c_len > 1 && i < len) {
      c = (c << 6) | (buf[i++] & 0x3f);
      c_len--;
    }

    // terminated by end of string?
    if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }

    if (c < 0x10000) {
      utf16buf[out++] = c;
    } else {
      c -= 0x10000;
      utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);
      utf16buf[out++] = 0xdc00 | (c & 0x3ff);
    }
  }

  return buf2binstring(utf16buf, out);
};


// Calculate max possible position in utf8 buffer,
// that will not break sequence. If that's not possible
// - (very small limits) return max size as is.
//
// buf[] - utf8 bytes array
// max   - length limit (mandatory);
exports.utf8border = function (buf, max) {
  var pos;

  max = max || buf.length;
  if (max > buf.length) { max = buf.length; }

  // go back from last position, until start of sequence found
  pos = max - 1;
  while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }

  // Fuckup - very small and broken sequence,
  // return max, because we should return something anyway.
  if (pos < 0) { return max; }

  // If we came to start of buffer - that means vuffer is too small,
  // return max too.
  if (pos === 0) { return max; }

  return (pos + _utf8len[buf[pos]] > max) ? pos : max;
};

},{"./common":41}],43:[function(require,module,exports){
'use strict';

// Note: adler32 takes 12% for level 0 and 2% for level 6.
// It doesn't worth to make additional optimizationa as in original.
// Small size is preferable.

// (C) 1995-2013 Jean-loup Gailly and Mark Adler
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
//   claim that you wrote the original software. If you use this software
//   in a product, an acknowledgment in the product documentation would be
//   appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
//   misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.

function adler32(adler, buf, len, pos) {
  var s1 = (adler & 0xffff) |0,
      s2 = ((adler >>> 16) & 0xffff) |0,
      n = 0;

  while (len !== 0) {
    // Set limit ~ twice less than 5552, to keep
    // s2 in 31-bits, because we force signed ints.
    // in other case %= will fail.
    n = len > 2000 ? 2000 : len;
    len -= n;

    do {
      s1 = (s1 + buf[pos++]) |0;
      s2 = (s2 + s1) |0;
    } while (--n);

    s1 %= 65521;
    s2 %= 65521;
  }

  return (s1 | (s2 << 16)) |0;
}


module.exports = adler32;

},{}],44:[function(require,module,exports){
'use strict';

// (C) 1995-2013 Jean-loup Gailly and Mark Adler
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
//   claim that you wrote the original software. If you use this software
//   in a product, an acknowledgment in the product documentation would be
//   appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
//   misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.

module.exports = {

  /* Allowed flush values; see deflate() and inflate() below for details */
  Z_NO_FLUSH:         0,
  Z_PARTIAL_FLUSH:    1,
  Z_SYNC_FLUSH:       2,
  Z_FULL_FLUSH:       3,
  Z_FINISH:           4,
  Z_BLOCK:            5,
  Z_TREES:            6,

  /* Return codes for the compression/decompression functions. Negative values
  * are errors, positive values are used for special but normal events.
  */
  Z_OK:               0,
  Z_STREAM_END:       1,
  Z_NEED_DICT:        2,
  Z_ERRNO:           -1,
  Z_STREAM_ERROR:    -2,
  Z_DATA_ERROR:      -3,
  //Z_MEM_ERROR:     -4,
  Z_BUF_ERROR:       -5,
  //Z_VERSION_ERROR: -6,

  /* compression levels */
  Z_NO_COMPRESSION:         0,
  Z_BEST_SPEED:             1,
  Z_BEST_COMPRESSION:       9,
  Z_DEFAULT_COMPRESSION:   -1,


  Z_FILTERED:               1,
  Z_HUFFMAN_ONLY:           2,
  Z_RLE:                    3,
  Z_FIXED:                  4,
  Z_DEFAULT_STRATEGY:       0,

  /* Possible values of the data_type field (though see inflate()) */
  Z_BINARY:                 0,
  Z_TEXT:                   1,
  //Z_ASCII:                1, // = Z_TEXT (deprecated)
  Z_UNKNOWN:                2,

  /* The deflate compression method */
  Z_DEFLATED:               8
  //Z_NULL:                 null // Use -1 or null inline, depending on var type
};

},{}],45:[function(require,module,exports){
'use strict';

// Note: we can't get significant speed boost here.
// So write code to minimize size - no pregenerated tables
// and array tools dependencies.

// (C) 1995-2013 Jean-loup Gailly and Mark Adler
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
//   claim that you wrote the original software. If you use this software
//   in a product, an acknowledgment in the product documentation would be
//   appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
//   misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.

// Use ordinary array, since untyped makes no boost here
function makeTable() {
  var c, table = [];

  for (var n = 0; n < 256; n++) {
    c = n;
    for (var k = 0; k < 8; k++) {
      c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));
    }
    table[n] = c;
  }

  return table;
}

// Create table on load. Just 255 signed longs. Not a problem.
var crcTable = makeTable();


function crc32(crc, buf, len, pos) {
  var t = crcTable,
      end = pos + len;

  crc ^= -1;

  for (var i = pos; i < end; i++) {
    crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];
  }

  return (crc ^ (-1)); // >>> 0;
}


module.exports = crc32;

},{}],46:[function(require,module,exports){
'use strict';

// (C) 1995-2013 Jean-loup Gailly and Mark Adler
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
//   claim that you wrote the original software. If you use this software
//   in a product, an acknowledgment in the product documentation would be
//   appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
//   misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.

var utils   = require('../utils/common');
var trees   = require('./trees');
var adler32 = require('./adler32');
var crc32   = require('./crc32');
var msg     = require('./messages');

/* Public constants ==========================================================*/
/* ===========================================================================*/


/* Allowed flush values; see deflate() and inflate() below for details */
var Z_NO_FLUSH      = 0;
var Z_PARTIAL_FLUSH = 1;
//var Z_SYNC_FLUSH    = 2;
var Z_FULL_FLUSH    = 3;
var Z_FINISH        = 4;
var Z_BLOCK         = 5;
//var Z_TREES         = 6;


/* Return codes for the compression/decompression functions. Negative values
 * are errors, positive values are used for special but normal events.
 */
var Z_OK            = 0;
var Z_STREAM_END    = 1;
//var Z_NEED_DICT     = 2;
//var Z_ERRNO         = -1;
var Z_STREAM_ERROR  = -2;
var Z_DATA_ERROR    = -3;
//var Z_MEM_ERROR     = -4;
var Z_BUF_ERROR     = -5;
//var Z_VERSION_ERROR = -6;


/* compression levels */
//var Z_NO_COMPRESSION      = 0;
//var Z_BEST_SPEED          = 1;
//var Z_BEST_COMPRESSION    = 9;
var Z_DEFAULT_COMPRESSION = -1;


var Z_FILTERED            = 1;
var Z_HUFFMAN_ONLY        = 2;
var Z_RLE                 = 3;
var Z_FIXED               = 4;
var Z_DEFAULT_STRATEGY    = 0;

/* Possible values of the data_type field (though see inflate()) */
//var Z_BINARY              = 0;
//var Z_TEXT                = 1;
//var Z_ASCII               = 1; // = Z_TEXT
var Z_UNKNOWN             = 2;


/* The deflate compression method */
var Z_DEFLATED  = 8;

/*============================================================================*/


var MAX_MEM_LEVEL = 9;
/* Maximum value for memLevel in deflateInit2 */
var MAX_WBITS = 15;
/* 32K LZ77 window */
var DEF_MEM_LEVEL = 8;


var LENGTH_CODES  = 29;
/* number of length codes, not counting the special END_BLOCK code */
var LITERALS      = 256;
/* number of literal bytes 0..255 */
var L_CODES       = LITERALS + 1 + LENGTH_CODES;
/* number of Literal or Length codes, including the END_BLOCK code */
var D_CODES       = 30;
/* number of distance codes */
var BL_CODES      = 19;
/* number of codes used to transfer the bit lengths */
var HEAP_SIZE     = 2 * L_CODES + 1;
/* maximum heap size */
var MAX_BITS  = 15;
/* All codes must not exceed MAX_BITS bits */

var MIN_MATCH = 3;
var MAX_MATCH = 258;
var MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);

var PRESET_DICT = 0x20;

var INIT_STATE = 42;
var EXTRA_STATE = 69;
var NAME_STATE = 73;
var COMMENT_STATE = 91;
var HCRC_STATE = 103;
var BUSY_STATE = 113;
var FINISH_STATE = 666;

var BS_NEED_MORE      = 1; /* block not completed, need more input or more output */
var BS_BLOCK_DONE     = 2; /* block flush performed */
var BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */
var BS_FINISH_DONE    = 4; /* finish done, accept no more input or output */

var OS_CODE = 0x03; // Unix :) . Don't detect, use this default.

function err(strm, errorCode) {
  strm.msg = msg[errorCode];
  return errorCode;
}

function rank(f) {
  return ((f) << 1) - ((f) > 4 ? 9 : 0);
}

function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }


/* =========================================================================
 * Flush as much pending output as possible. All deflate() output goes
 * through this function so some applications may wish to modify it
 * to avoid allocating a large strm->output buffer and copying into it.
 * (See also read_buf()).
 */
function flush_pending(strm) {
  var s = strm.state;

  //_tr_flush_bits(s);
  var len = s.pending;
  if (len > strm.avail_out) {
    len = strm.avail_out;
  }
  if (len === 0) { return; }

  utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);
  strm.next_out += len;
  s.pending_out += len;
  strm.total_out += len;
  strm.avail_out -= len;
  s.pending -= len;
  if (s.pending === 0) {
    s.pending_out = 0;
  }
}


function flush_block_only(s, last) {
  trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);
  s.block_start = s.strstart;
  flush_pending(s.strm);
}


function put_byte(s, b) {
  s.pending_buf[s.pending++] = b;
}


/* =========================================================================
 * Put a short in the pending buffer. The 16-bit value is put in MSB order.
 * IN assertion: the stream state is correct and there is enough room in
 * pending_buf.
 */
function putShortMSB(s, b) {
//  put_byte(s, (Byte)(b >> 8));
//  put_byte(s, (Byte)(b & 0xff));
  s.pending_buf[s.pending++] = (b >>> 8) & 0xff;
  s.pending_buf[s.pending++] = b & 0xff;
}


/* ===========================================================================
 * Read a new buffer from the current input stream, update the adler32
 * and total number of bytes read.  All deflate() input goes through
 * this function so some applications may wish to modify it to avoid
 * allocating a large strm->input buffer and copying from it.
 * (See also flush_pending()).
 */
function read_buf(strm, buf, start, size) {
  var len = strm.avail_in;

  if (len > size) { len = size; }
  if (len === 0) { return 0; }

  strm.avail_in -= len;

  // zmemcpy(buf, strm->next_in, len);
  utils.arraySet(buf, strm.input, strm.next_in, len, start);
  if (strm.state.wrap === 1) {
    strm.adler = adler32(strm.adler, buf, len, start);
  }

  else if (strm.state.wrap === 2) {
    strm.adler = crc32(strm.adler, buf, len, start);
  }

  strm.next_in += len;
  strm.total_in += len;

  return len;
}


/* ===========================================================================
 * Set match_start to the longest match starting at the given string and
 * return its length. Matches shorter or equal to prev_length are discarded,
 * in which case the result is equal to prev_length and match_start is
 * garbage.
 * IN assertions: cur_match is the head of the hash chain for the current
 *   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1
 * OUT assertion: the match length is not greater than s->lookahead.
 */
function longest_match(s, cur_match) {
  var chain_length = s.max_chain_length;      /* max hash chain length */
  var scan = s.strstart; /* current string */
  var match;                       /* matched string */
  var len;                           /* length of current match */
  var best_len = s.prev_length;              /* best match length so far */
  var nice_match = s.nice_match;             /* stop if match long enough */
  var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?
      s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;

  var _win = s.window; // shortcut

  var wmask = s.w_mask;
  var prev  = s.prev;

  /* Stop when cur_match becomes <= limit. To simplify the code,
   * we prevent matches with the string of window index 0.
   */

  var strend = s.strstart + MAX_MATCH;
  var scan_end1  = _win[scan + best_len - 1];
  var scan_end   = _win[scan + best_len];

  /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.
   * It is easy to get rid of this optimization if necessary.
   */
  // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever");

  /* Do not waste too much time if we already have a good match: */
  if (s.prev_length >= s.good_match) {
    chain_length >>= 2;
  }
  /* Do not look for matches beyond the end of the input. This is necessary
   * to make deflate deterministic.
   */
  if (nice_match > s.lookahead) { nice_match = s.lookahead; }

  // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");

  do {
    // Assert(cur_match < s->strstart, "no future");
    match = cur_match;

    /* Skip to next match if the match length cannot increase
     * or if the match length is less than 2.  Note that the checks below
     * for insufficient lookahead only occur occasionally for performance
     * reasons.  Therefore uninitialized memory will be accessed, and
     * conditional jumps will be made that depend on those values.
     * However the length of the match is limited to the lookahead, so
     * the output of deflate is not affected by the uninitialized values.
     */

    if (_win[match + best_len]     !== scan_end  ||
        _win[match + best_len - 1] !== scan_end1 ||
        _win[match]                !== _win[scan] ||
        _win[++match]              !== _win[scan + 1]) {
      continue;
    }

    /* The check at best_len-1 can be removed because it will be made
     * again later. (This heuristic is not always a win.)
     * It is not necessary to compare scan[2] and match[2] since they
     * are always equal when the other bytes match, given that
     * the hash keys are equal and that HASH_BITS >= 8.
     */
    scan += 2;
    match++;
    // Assert(*scan == *match, "match[2]?");

    /* We check for insufficient lookahead only every 8th comparison;
     * the 256th check will be made at strstart+258.
     */
    do {
      /*jshint noempty:false*/
    } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
             _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&
             scan < strend);

    // Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");

    len = MAX_MATCH - (strend - scan);
    scan = strend - MAX_MATCH;

    if (len > best_len) {
      s.match_start = cur_match;
      best_len = len;
      if (len >= nice_match) {
        break;
      }
      scan_end1  = _win[scan + best_len - 1];
      scan_end   = _win[scan + best_len];
    }
  } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);

  if (best_len <= s.lookahead) {
    return best_len;
  }
  return s.lookahead;
}


/* ===========================================================================
 * Fill the window when the lookahead becomes insufficient.
 * Updates strstart and lookahead.
 *
 * IN assertion: lookahead < MIN_LOOKAHEAD
 * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD
 *    At least one byte has been read, or avail_in == 0; reads are
 *    performed for at least two bytes (required for the zip translate_eol
 *    option -- not supported here).
 */
function fill_window(s) {
  var _w_size = s.w_size;
  var p, n, m, more, str;

  //Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead");

  do {
    more = s.window_size - s.lookahead - s.strstart;

    // JS ints have 32 bit, block below not needed
    /* Deal with !@#$% 64K limit: */
    //if (sizeof(int) <= 2) {
    //    if (more == 0 && s->strstart == 0 && s->lookahead == 0) {
    //        more = wsize;
    //
    //  } else if (more == (unsigned)(-1)) {
    //        /* Very unlikely, but possible on 16 bit machine if
    //         * strstart == 0 && lookahead == 1 (input done a byte at time)
    //         */
    //        more--;
    //    }
    //}


    /* If the window is almost full and there is insufficient lookahead,
     * move the upper half to the lower one to make room in the upper half.
     */
    if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {

      utils.arraySet(s.window, s.window, _w_size, _w_size, 0);
      s.match_start -= _w_size;
      s.strstart -= _w_size;
      /* we now have strstart >= MAX_DIST */
      s.block_start -= _w_size;

      /* Slide the hash table (could be avoided with 32 bit values
       at the expense of memory usage). We slide even when level == 0
       to keep the hash table consistent if we switch back to level > 0
       later. (Using level 0 permanently is not an optimal usage of
       zlib, so we don't care about this pathological case.)
       */

      n = s.hash_size;
      p = n;
      do {
        m = s.head[--p];
        s.head[p] = (m >= _w_size ? m - _w_size : 0);
      } while (--n);

      n = _w_size;
      p = n;
      do {
        m = s.prev[--p];
        s.prev[p] = (m >= _w_size ? m - _w_size : 0);
        /* If n is not on any hash chain, prev[n] is garbage but
         * its value will never be used.
         */
      } while (--n);

      more += _w_size;
    }
    if (s.strm.avail_in === 0) {
      break;
    }

    /* If there was no sliding:
     *    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
     *    more == window_size - lookahead - strstart
     * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)
     * => more >= window_size - 2*WSIZE + 2
     * In the BIG_MEM or MMAP case (not yet supported),
     *   window_size == input_size + MIN_LOOKAHEAD  &&
     *   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.
     * Otherwise, window_size == 2*WSIZE so more >= 2.
     * If there was sliding, more >= WSIZE. So in all cases, more >= 2.
     */
    //Assert(more >= 2, "more < 2");
    n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);
    s.lookahead += n;

    /* Initialize the hash value now that we have some input: */
    if (s.lookahead + s.insert >= MIN_MATCH) {
      str = s.strstart - s.insert;
      s.ins_h = s.window[str];

      /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */
      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;
//#if MIN_MATCH != 3
//        Call update_hash() MIN_MATCH-3 more times
//#endif
      while (s.insert) {
        /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */
        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;

        s.prev[str & s.w_mask] = s.head[s.ins_h];
        s.head[s.ins_h] = str;
        str++;
        s.insert--;
        if (s.lookahead + s.insert < MIN_MATCH) {
          break;
        }
      }
    }
    /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,
     * but this is not important since only literal bytes will be emitted.
     */

  } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);

  /* If the WIN_INIT bytes after the end of the current data have never been
   * written, then zero those bytes in order to avoid memory check reports of
   * the use of uninitialized (or uninitialised as Julian writes) bytes by
   * the longest match routines.  Update the high water mark for the next
   * time through here.  WIN_INIT is set to MAX_MATCH since the longest match
   * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.
   */
//  if (s.high_water < s.window_size) {
//    var curr = s.strstart + s.lookahead;
//    var init = 0;
//
//    if (s.high_water < curr) {
//      /* Previous high water mark below current data -- zero WIN_INIT
//       * bytes or up to end of window, whichever is less.
//       */
//      init = s.window_size - curr;
//      if (init > WIN_INIT)
//        init = WIN_INIT;
//      zmemzero(s->window + curr, (unsigned)init);
//      s->high_water = curr + init;
//    }
//    else if (s->high_water < (ulg)curr + WIN_INIT) {
//      /* High water mark at or above current data, but below current data
//       * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up
//       * to end of window, whichever is less.
//       */
//      init = (ulg)curr + WIN_INIT - s->high_water;
//      if (init > s->window_size - s->high_water)
//        init = s->window_size - s->high_water;
//      zmemzero(s->window + s->high_water, (unsigned)init);
//      s->high_water += init;
//    }
//  }
//
//  Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,
//    "not enough room for search");
}

/* ===========================================================================
 * Copy without compression as much as possible from the input stream, return
 * the current block state.
 * This function does not insert new strings in the dictionary since
 * uncompressible data is probably not useful. This function is used
 * only for the level=0 compression option.
 * NOTE: this function should be optimized to avoid extra copying from
 * window to pending_buf.
 */
function deflate_stored(s, flush) {
  /* Stored blocks are limited to 0xffff bytes, pending_buf is limited
   * to pending_buf_size, and each stored block has a 5 byte header:
   */
  var max_block_size = 0xffff;

  if (max_block_size > s.pending_buf_size - 5) {
    max_block_size = s.pending_buf_size - 5;
  }

  /* Copy as much as possible from input to output: */
  for (;;) {
    /* Fill the window as much as possible: */
    if (s.lookahead <= 1) {

      //Assert(s->strstart < s->w_size+MAX_DIST(s) ||
      //  s->block_start >= (long)s->w_size, "slide too late");
//      if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||
//        s.block_start >= s.w_size)) {
//        throw  new Error("slide too late");
//      }

      fill_window(s);
      if (s.lookahead === 0 && flush === Z_NO_FLUSH) {
        return BS_NEED_MORE;
      }

      if (s.lookahead === 0) {
        break;
      }
      /* flush the current block */
    }
    //Assert(s->block_start >= 0L, "block gone");
//    if (s.block_start < 0) throw new Error("block gone");

    s.strstart += s.lookahead;
    s.lookahead = 0;

    /* Emit a stored block if pending_buf will be full: */
    var max_start = s.block_start + max_block_size;

    if (s.strstart === 0 || s.strstart >= max_start) {
      /* strstart == 0 is possible when wraparound on 16-bit machine */
      s.lookahead = s.strstart - max_start;
      s.strstart = max_start;
      /*** FLUSH_BLOCK(s, 0); ***/
      flush_block_only(s, false);
      if (s.strm.avail_out === 0) {
        return BS_NEED_MORE;
      }
      /***/


    }
    /* Flush if we may have to slide, otherwise block_start may become
     * negative and the data will be gone:
     */
    if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {
      /*** FLUSH_BLOCK(s, 0); ***/
      flush_block_only(s, false);
      if (s.strm.avail_out === 0) {
        return BS_NEED_MORE;
      }
      /***/
    }
  }

  s.insert = 0;

  if (flush === Z_FINISH) {
    /*** FLUSH_BLOCK(s, 1); ***/
    flush_block_only(s, true);
    if (s.strm.avail_out === 0) {
      return BS_FINISH_STARTED;
    }
    /***/
    return BS_FINISH_DONE;
  }

  if (s.strstart > s.block_start) {
    /*** FLUSH_BLOCK(s, 0); ***/
    flush_block_only(s, false);
    if (s.strm.avail_out === 0) {
      return BS_NEED_MORE;
    }
    /***/
  }

  return BS_NEED_MORE;
}

/* ===========================================================================
 * Compress as much as possible from the input stream, return the current
 * block state.
 * This function does not perform lazy evaluation of matches and inserts
 * new strings in the dictionary only for unmatched strings or for short
 * matches. It is used only for the fast compression options.
 */
function deflate_fast(s, flush) {
  var hash_head;        /* head of the hash chain */
  var bflush;           /* set if current block must be flushed */

  for (;;) {
    /* Make sure that we always have enough lookahead, except
     * at the end of the input file. We need MAX_MATCH bytes
     * for the next match, plus MIN_MATCH bytes to insert the
     * string following the next match.
     */
    if (s.lookahead < MIN_LOOKAHEAD) {
      fill_window(s);
      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {
        return BS_NEED_MORE;
      }
      if (s.lookahead === 0) {
        break; /* flush the current block */
      }
    }

    /* Insert the string window[strstart .. strstart+2] in the
     * dictionary, and set hash_head to the head of the hash chain:
     */
    hash_head = 0/*NIL*/;
    if (s.lookahead >= MIN_MATCH) {
      /*** INSERT_STRING(s, s.strstart, hash_head); ***/
      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
      s.head[s.ins_h] = s.strstart;
      /***/
    }

    /* Find the longest match, discarding those <= prev_length.
     * At this point we have always match_length < MIN_MATCH
     */
    if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {
      /* To simplify the code, we prevent matches with the string
       * of window index 0 (in particular we have to avoid a match
       * of the string with itself at the start of the input file).
       */
      s.match_length = longest_match(s, hash_head);
      /* longest_match() sets match_start */
    }
    if (s.match_length >= MIN_MATCH) {
      // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only

      /*** _tr_tally_dist(s, s.strstart - s.match_start,
                     s.match_length - MIN_MATCH, bflush); ***/
      bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);

      s.lookahead -= s.match_length;

      /* Insert new strings in the hash table only if the match length
       * is not too large. This saves time but degrades compression.
       */
      if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {
        s.match_length--; /* string at strstart already in table */
        do {
          s.strstart++;
          /*** INSERT_STRING(s, s.strstart, hash_head); ***/
          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
          s.head[s.ins_h] = s.strstart;
          /***/
          /* strstart never exceeds WSIZE-MAX_MATCH, so there are
           * always MIN_MATCH bytes ahead.
           */
        } while (--s.match_length !== 0);
        s.strstart++;
      } else
      {
        s.strstart += s.match_length;
        s.match_length = 0;
        s.ins_h = s.window[s.strstart];
        /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */
        s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;

//#if MIN_MATCH != 3
//                Call UPDATE_HASH() MIN_MATCH-3 more times
//#endif
        /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not
         * matter since it will be recomputed at next deflate call.
         */
      }
    } else {
      /* No match, output a literal byte */
      //Tracevv((stderr,"%c", s.window[s.strstart]));
      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);

      s.lookahead--;
      s.strstart++;
    }
    if (bflush) {
      /*** FLUSH_BLOCK(s, 0); ***/
      flush_block_only(s, false);
      if (s.strm.avail_out === 0) {
        return BS_NEED_MORE;
      }
      /***/
    }
  }
  s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);
  if (flush === Z_FINISH) {
    /*** FLUSH_BLOCK(s, 1); ***/
    flush_block_only(s, true);
    if (s.strm.avail_out === 0) {
      return BS_FINISH_STARTED;
    }
    /***/
    return BS_FINISH_DONE;
  }
  if (s.last_lit) {
    /*** FLUSH_BLOCK(s, 0); ***/
    flush_block_only(s, false);
    if (s.strm.avail_out === 0) {
      return BS_NEED_MORE;
    }
    /***/
  }
  return BS_BLOCK_DONE;
}

/* ===========================================================================
 * Same as above, but achieves better compression. We use a lazy
 * evaluation for matches: a match is finally adopted only if there is
 * no better match at the next window position.
 */
function deflate_slow(s, flush) {
  var hash_head;          /* head of hash chain */
  var bflush;              /* set if current block must be flushed */

  var max_insert;

  /* Process the input block. */
  for (;;) {
    /* Make sure that we always have enough lookahead, except
     * at the end of the input file. We need MAX_MATCH bytes
     * for the next match, plus MIN_MATCH bytes to insert the
     * string following the next match.
     */
    if (s.lookahead < MIN_LOOKAHEAD) {
      fill_window(s);
      if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {
        return BS_NEED_MORE;
      }
      if (s.lookahead === 0) { break; } /* flush the current block */
    }

    /* Insert the string window[strstart .. strstart+2] in the
     * dictionary, and set hash_head to the head of the hash chain:
     */
    hash_head = 0/*NIL*/;
    if (s.lookahead >= MIN_MATCH) {
      /*** INSERT_STRING(s, s.strstart, hash_head); ***/
      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
      hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
      s.head[s.ins_h] = s.strstart;
      /***/
    }

    /* Find the longest match, discarding those <= prev_length.
     */
    s.prev_length = s.match_length;
    s.prev_match = s.match_start;
    s.match_length = MIN_MATCH - 1;

    if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&
        s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {
      /* To simplify the code, we prevent matches with the string
       * of window index 0 (in particular we have to avoid a match
       * of the string with itself at the start of the input file).
       */
      s.match_length = longest_match(s, hash_head);
      /* longest_match() sets match_start */

      if (s.match_length <= 5 &&
         (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {

        /* If prev_match is also MIN_MATCH, match_start is garbage
         * but we will ignore the current match anyway.
         */
        s.match_length = MIN_MATCH - 1;
      }
    }
    /* If there was a match at the previous step and the current
     * match is not better, output the previous match:
     */
    if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {
      max_insert = s.strstart + s.lookahead - MIN_MATCH;
      /* Do not insert strings in hash table beyond this. */

      //check_match(s, s.strstart-1, s.prev_match, s.prev_length);

      /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,
                     s.prev_length - MIN_MATCH, bflush);***/
      bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);
      /* Insert in hash table all strings up to the end of the match.
       * strstart-1 and strstart are already inserted. If there is not
       * enough lookahead, the last two strings are not inserted in
       * the hash table.
       */
      s.lookahead -= s.prev_length - 1;
      s.prev_length -= 2;
      do {
        if (++s.strstart <= max_insert) {
          /*** INSERT_STRING(s, s.strstart, hash_head); ***/
          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;
          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];
          s.head[s.ins_h] = s.strstart;
          /***/
        }
      } while (--s.prev_length !== 0);
      s.match_available = 0;
      s.match_length = MIN_MATCH - 1;
      s.strstart++;

      if (bflush) {
        /*** FLUSH_BLOCK(s, 0); ***/
        flush_block_only(s, false);
        if (s.strm.avail_out === 0) {
          return BS_NEED_MORE;
        }
        /***/
      }

    } else if (s.match_available) {
      /* If there was no match at the previous position, output a
       * single literal. If there was a match but the current match
       * is longer, truncate the previous match to a single literal.
       */
      //Tracevv((stderr,"%c", s->window[s->strstart-1]));
      /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/
      bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);

      if (bflush) {
        /*** FLUSH_BLOCK_ONLY(s, 0) ***/
        flush_block_only(s, false);
        /***/
      }
      s.strstart++;
      s.lookahead--;
      if (s.strm.avail_out === 0) {
        return BS_NEED_MORE;
      }
    } else {
      /* There is no previous match to compare with, wait for
       * the next step to decide.
       */
      s.match_available = 1;
      s.strstart++;
      s.lookahead--;
    }
  }
  //Assert (flush != Z_NO_FLUSH, "no flush?");
  if (s.match_available) {
    //Tracevv((stderr,"%c", s->window[s->strstart-1]));
    /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/
    bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);

    s.match_available = 0;
  }
  s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;
  if (flush === Z_FINISH) {
    /*** FLUSH_BLOCK(s, 1); ***/
    flush_block_only(s, true);
    if (s.strm.avail_out === 0) {
      return BS_FINISH_STARTED;
    }
    /***/
    return BS_FINISH_DONE;
  }
  if (s.last_lit) {
    /*** FLUSH_BLOCK(s, 0); ***/
    flush_block_only(s, false);
    if (s.strm.avail_out === 0) {
      return BS_NEED_MORE;
    }
    /***/
  }

  return BS_BLOCK_DONE;
}


/* ===========================================================================
 * For Z_RLE, simply look for runs of bytes, generate matches only of distance
 * one.  Do not maintain a hash table.  (It will be regenerated if this run of
 * deflate switches away from Z_RLE.)
 */
function deflate_rle(s, flush) {
  var bflush;            /* set if current block must be flushed */
  var prev;              /* byte at distance one to match */
  var scan, strend;      /* scan goes up to strend for length of run */

  var _win = s.window;

  for (;;) {
    /* Make sure that we always have enough lookahead, except
     * at the end of the input file. We need MAX_MATCH bytes
     * for the longest run, plus one for the unrolled loop.
     */
    if (s.lookahead <= MAX_MATCH) {
      fill_window(s);
      if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {
        return BS_NEED_MORE;
      }
      if (s.lookahead === 0) { break; } /* flush the current block */
    }

    /* See how many times the previous byte repeats */
    s.match_length = 0;
    if (s.lookahead >= MIN_MATCH && s.strstart > 0) {
      scan = s.strstart - 1;
      prev = _win[scan];
      if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {
        strend = s.strstart + MAX_MATCH;
        do {
          /*jshint noempty:false*/
        } while (prev === _win[++scan] && prev === _win[++scan] &&
                 prev === _win[++scan] && prev === _win[++scan] &&
                 prev === _win[++scan] && prev === _win[++scan] &&
                 prev === _win[++scan] && prev === _win[++scan] &&
                 scan < strend);
        s.match_length = MAX_MATCH - (strend - scan);
        if (s.match_length > s.lookahead) {
          s.match_length = s.lookahead;
        }
      }
      //Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan");
    }

    /* Emit match if have run of MIN_MATCH or longer, else emit literal */
    if (s.match_length >= MIN_MATCH) {
      //check_match(s, s.strstart, s.strstart - 1, s.match_length);

      /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/
      bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);

      s.lookahead -= s.match_length;
      s.strstart += s.match_length;
      s.match_length = 0;
    } else {
      /* No match, output a literal byte */
      //Tracevv((stderr,"%c", s->window[s->strstart]));
      /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
      bflush = trees._tr_tally(s, 0, s.window[s.strstart]);

      s.lookahead--;
      s.strstart++;
    }
    if (bflush) {
      /*** FLUSH_BLOCK(s, 0); ***/
      flush_block_only(s, false);
      if (s.strm.avail_out === 0) {
        return BS_NEED_MORE;
      }
      /***/
    }
  }
  s.insert = 0;
  if (flush === Z_FINISH) {
    /*** FLUSH_BLOCK(s, 1); ***/
    flush_block_only(s, true);
    if (s.strm.avail_out === 0) {
      return BS_FINISH_STARTED;
    }
    /***/
    return BS_FINISH_DONE;
  }
  if (s.last_lit) {
    /*** FLUSH_BLOCK(s, 0); ***/
    flush_block_only(s, false);
    if (s.strm.avail_out === 0) {
      return BS_NEED_MORE;
    }
    /***/
  }
  return BS_BLOCK_DONE;
}

/* ===========================================================================
 * For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.
 * (It will be regenerated if this run of deflate switches away from Huffman.)
 */
function deflate_huff(s, flush) {
  var bflush;             /* set if current block must be flushed */

  for (;;) {
    /* Make sure that we have a literal to write. */
    if (s.lookahead === 0) {
      fill_window(s);
      if (s.lookahead === 0) {
        if (flush === Z_NO_FLUSH) {
          return BS_NEED_MORE;
        }
        break;      /* flush the current block */
      }
    }

    /* Output a literal byte */
    s.match_length = 0;
    //Tracevv((stderr,"%c", s->window[s->strstart]));
    /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/
    bflush = trees._tr_tally(s, 0, s.window[s.strstart]);
    s.lookahead--;
    s.strstart++;
    if (bflush) {
      /*** FLUSH_BLOCK(s, 0); ***/
      flush_block_only(s, false);
      if (s.strm.avail_out === 0) {
        return BS_NEED_MORE;
      }
      /***/
    }
  }
  s.insert = 0;
  if (flush === Z_FINISH) {
    /*** FLUSH_BLOCK(s, 1); ***/
    flush_block_only(s, true);
    if (s.strm.avail_out === 0) {
      return BS_FINISH_STARTED;
    }
    /***/
    return BS_FINISH_DONE;
  }
  if (s.last_lit) {
    /*** FLUSH_BLOCK(s, 0); ***/
    flush_block_only(s, false);
    if (s.strm.avail_out === 0) {
      return BS_NEED_MORE;
    }
    /***/
  }
  return BS_BLOCK_DONE;
}

/* Values for max_lazy_match, good_match and max_chain_length, depending on
 * the desired pack level (0..9). The values given below have been tuned to
 * exclude worst case performance for pathological files. Better values may be
 * found for specific files.
 */
function Config(good_length, max_lazy, nice_length, max_chain, func) {
  this.good_length = good_length;
  this.max_lazy = max_lazy;
  this.nice_length = nice_length;
  this.max_chain = max_chain;
  this.func = func;
}

var configuration_table;

configuration_table = [
  /*      good lazy nice chain */
  new Config(0, 0, 0, 0, deflate_stored),          /* 0 store only */
  new Config(4, 4, 8, 4, deflate_fast),            /* 1 max speed, no lazy matches */
  new Config(4, 5, 16, 8, deflate_fast),           /* 2 */
  new Config(4, 6, 32, 32, deflate_fast),          /* 3 */

  new Config(4, 4, 16, 16, deflate_slow),          /* 4 lazy matches */
  new Config(8, 16, 32, 32, deflate_slow),         /* 5 */
  new Config(8, 16, 128, 128, deflate_slow),       /* 6 */
  new Config(8, 32, 128, 256, deflate_slow),       /* 7 */
  new Config(32, 128, 258, 1024, deflate_slow),    /* 8 */
  new Config(32, 258, 258, 4096, deflate_slow)     /* 9 max compression */
];


/* ===========================================================================
 * Initialize the "longest match" routines for a new zlib stream
 */
function lm_init(s) {
  s.window_size = 2 * s.w_size;

  /*** CLEAR_HASH(s); ***/
  zero(s.head); // Fill with NIL (= 0);

  /* Set the default configuration parameters:
   */
  s.max_lazy_match = configuration_table[s.level].max_lazy;
  s.good_match = configuration_table[s.level].good_length;
  s.nice_match = configuration_table[s.level].nice_length;
  s.max_chain_length = configuration_table[s.level].max_chain;

  s.strstart = 0;
  s.block_start = 0;
  s.lookahead = 0;
  s.insert = 0;
  s.match_length = s.prev_length = MIN_MATCH - 1;
  s.match_available = 0;
  s.ins_h = 0;
}


function DeflateState() {
  this.strm = null;            /* pointer back to this zlib stream */
  this.status = 0;            /* as the name implies */
  this.pending_buf = null;      /* output still pending */
  this.pending_buf_size = 0;  /* size of pending_buf */
  this.pending_out = 0;       /* next pending byte to output to the stream */
  this.pending = 0;           /* nb of bytes in the pending buffer */
  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */
  this.gzhead = null;         /* gzip header information to write */
  this.gzindex = 0;           /* where in extra, name, or comment */
  this.method = Z_DEFLATED; /* can only be DEFLATED */
  this.last_flush = -1;   /* value of flush param for previous deflate call */

  this.w_size = 0;  /* LZ77 window size (32K by default) */
  this.w_bits = 0;  /* log2(w_size)  (8..16) */
  this.w_mask = 0;  /* w_size - 1 */

  this.window = null;
  /* Sliding window. Input bytes are read into the second half of the window,
   * and move to the first half later to keep a dictionary of at least wSize
   * bytes. With this organization, matches are limited to a distance of
   * wSize-MAX_MATCH bytes, but this ensures that IO is always
   * performed with a length multiple of the block size.
   */

  this.window_size = 0;
  /* Actual size of window: 2*wSize, except when the user input buffer
   * is directly used as sliding window.
   */

  this.prev = null;
  /* Link to older string with same hash index. To limit the size of this
   * array to 64K, this link is maintained only for the last 32K strings.
   * An index in this array is thus a window index modulo 32K.
   */

  this.head = null;   /* Heads of the hash chains or NIL. */

  this.ins_h = 0;       /* hash index of string to be inserted */
  this.hash_size = 0;   /* number of elements in hash table */
  this.hash_bits = 0;   /* log2(hash_size) */
  this.hash_mask = 0;   /* hash_size-1 */

  this.hash_shift = 0;
  /* Number of bits by which ins_h must be shifted at each input
   * step. It must be such that after MIN_MATCH steps, the oldest
   * byte no longer takes part in the hash key, that is:
   *   hash_shift * MIN_MATCH >= hash_bits
   */

  this.block_start = 0;
  /* Window position at the beginning of the current output block. Gets
   * negative when the window is moved backwards.
   */

  this.match_length = 0;      /* length of best match */
  this.prev_match = 0;        /* previous match */
  this.match_available = 0;   /* set if previous match exists */
  this.strstart = 0;          /* start of string to insert */
  this.match_start = 0;       /* start of matching string */
  this.lookahead = 0;         /* number of valid bytes ahead in window */

  this.prev_length = 0;
  /* Length of the best match at previous step. Matches not greater than this
   * are discarded. This is used in the lazy match evaluation.
   */

  this.max_chain_length = 0;
  /* To speed up deflation, hash chains are never searched beyond this
   * length.  A higher limit improves compression ratio but degrades the
   * speed.
   */

  this.max_lazy_match = 0;
  /* Attempt to find a better match only when the current match is strictly
   * smaller than this value. This mechanism is used only for compression
   * levels >= 4.
   */
  // That's alias to max_lazy_match, don't use directly
  //this.max_insert_length = 0;
  /* Insert new strings in the hash table only if the match length is not
   * greater than this length. This saves time but degrades compression.
   * max_insert_length is used only for compression levels <= 3.
   */

  this.level = 0;     /* compression level (1..9) */
  this.strategy = 0;  /* favor or force Huffman coding*/

  this.good_match = 0;
  /* Use a faster search when the previous match is longer than this */

  this.nice_match = 0; /* Stop searching when current match exceeds this */

              /* used by trees.c: */

  /* Didn't use ct_data typedef below to suppress compiler warning */

  // struct ct_data_s dyn_ltree[HEAP_SIZE];   /* literal and length tree */
  // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */
  // struct ct_data_s bl_tree[2*BL_CODES+1];  /* Huffman tree for bit lengths */

  // Use flat array of DOUBLE size, with interleaved fata,
  // because JS does not support effective
  this.dyn_ltree  = new utils.Buf16(HEAP_SIZE * 2);
  this.dyn_dtree  = new utils.Buf16((2 * D_CODES + 1) * 2);
  this.bl_tree    = new utils.Buf16((2 * BL_CODES + 1) * 2);
  zero(this.dyn_ltree);
  zero(this.dyn_dtree);
  zero(this.bl_tree);

  this.l_desc   = null;         /* desc. for literal tree */
  this.d_desc   = null;         /* desc. for distance tree */
  this.bl_desc  = null;         /* desc. for bit length tree */

  //ush bl_count[MAX_BITS+1];
  this.bl_count = new utils.Buf16(MAX_BITS + 1);
  /* number of codes at each bit length for an optimal tree */

  //int heap[2*L_CODES+1];      /* heap used to build the Huffman trees */
  this.heap = new utils.Buf16(2 * L_CODES + 1);  /* heap used to build the Huffman trees */
  zero(this.heap);

  this.heap_len = 0;               /* number of elements in the heap */
  this.heap_max = 0;               /* element of largest frequency */
  /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.
   * The same heap array is used to build all trees.
   */

  this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];
  zero(this.depth);
  /* Depth of each subtree used as tie breaker for trees of equal frequency
   */

  this.l_buf = 0;          /* buffer index for literals or lengths */

  this.lit_bufsize = 0;
  /* Size of match buffer for literals/lengths.  There are 4 reasons for
   * limiting lit_bufsize to 64K:
   *   - frequencies can be kept in 16 bit counters
   *   - if compression is not successful for the first block, all input
   *     data is still in the window so we can still emit a stored block even
   *     when input comes from standard input.  (This can also be done for
   *     all blocks if lit_bufsize is not greater than 32K.)
   *   - if compression is not successful for a file smaller than 64K, we can
   *     even emit a stored file instead of a stored block (saving 5 bytes).
   *     This is applicable only for zip (not gzip or zlib).
   *   - creating new Huffman trees less frequently may not provide fast
   *     adaptation to changes in the input data statistics. (Take for
   *     example a binary file with poorly compressible code followed by
   *     a highly compressible string table.) Smaller buffer sizes give
   *     fast adaptation but have of course the overhead of transmitting
   *     trees more frequently.
   *   - I can't count above 4
   */

  this.last_lit = 0;      /* running index in l_buf */

  this.d_buf = 0;
  /* Buffer index for distances. To simplify the code, d_buf and l_buf have
   * the same number of elements. To use different lengths, an extra flag
   * array would be necessary.
   */

  this.opt_len = 0;       /* bit length of current block with optimal trees */
  this.static_len = 0;    /* bit length of current block with static trees */
  this.matches = 0;       /* number of string matches in current block */
  this.insert = 0;        /* bytes at end of window left to insert */


  this.bi_buf = 0;
  /* Output buffer. bits are inserted starting at the bottom (least
   * significant bits).
   */
  this.bi_valid = 0;
  /* Number of valid bits in bi_buf.  All bits above the last valid bit
   * are always zero.
   */

  // Used for window memory init. We safely ignore it for JS. That makes
  // sense only for pointers and memory check tools.
  //this.high_water = 0;
  /* High water mark offset in window for initialized bytes -- bytes above
   * this are set to zero in order to avoid memory check warnings when
   * longest match routines access bytes past the input.  This is then
   * updated to the new high water mark.
   */
}


function deflateResetKeep(strm) {
  var s;

  if (!strm || !strm.state) {
    return err(strm, Z_STREAM_ERROR);
  }

  strm.total_in = strm.total_out = 0;
  strm.data_type = Z_UNKNOWN;

  s = strm.state;
  s.pending = 0;
  s.pending_out = 0;

  if (s.wrap < 0) {
    s.wrap = -s.wrap;
    /* was made negative by deflate(..., Z_FINISH); */
  }
  s.status = (s.wrap ? INIT_STATE : BUSY_STATE);
  strm.adler = (s.wrap === 2) ?
    0  // crc32(0, Z_NULL, 0)
  :
    1; // adler32(0, Z_NULL, 0)
  s.last_flush = Z_NO_FLUSH;
  trees._tr_init(s);
  return Z_OK;
}


function deflateReset(strm) {
  var ret = deflateResetKeep(strm);
  if (ret === Z_OK) {
    lm_init(strm.state);
  }
  return ret;
}


function deflateSetHeader(strm, head) {
  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
  if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }
  strm.state.gzhead = head;
  return Z_OK;
}


function deflateInit2(strm, level, method, windowBits, memLevel, strategy) {
  if (!strm) { // === Z_NULL
    return Z_STREAM_ERROR;
  }
  var wrap = 1;

  if (level === Z_DEFAULT_COMPRESSION) {
    level = 6;
  }

  if (windowBits < 0) { /* suppress zlib wrapper */
    wrap = 0;
    windowBits = -windowBits;
  }

  else if (windowBits > 15) {
    wrap = 2;           /* write gzip wrapper instead */
    windowBits -= 16;
  }


  if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||
    windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||
    strategy < 0 || strategy > Z_FIXED) {
    return err(strm, Z_STREAM_ERROR);
  }


  if (windowBits === 8) {
    windowBits = 9;
  }
  /* until 256-byte window bug fixed */

  var s = new DeflateState();

  strm.state = s;
  s.strm = strm;

  s.wrap = wrap;
  s.gzhead = null;
  s.w_bits = windowBits;
  s.w_size = 1 << s.w_bits;
  s.w_mask = s.w_size - 1;

  s.hash_bits = memLevel + 7;
  s.hash_size = 1 << s.hash_bits;
  s.hash_mask = s.hash_size - 1;
  s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);

  s.window = new utils.Buf8(s.w_size * 2);
  s.head = new utils.Buf16(s.hash_size);
  s.prev = new utils.Buf16(s.w_size);

  // Don't need mem init magic for JS.
  //s.high_water = 0;  /* nothing written to s->window yet */

  s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */

  s.pending_buf_size = s.lit_bufsize * 4;

  //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);
  //s->pending_buf = (uchf *) overlay;
  s.pending_buf = new utils.Buf8(s.pending_buf_size);

  // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)
  //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);
  s.d_buf = 1 * s.lit_bufsize;

  //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;
  s.l_buf = (1 + 2) * s.lit_bufsize;

  s.level = level;
  s.strategy = strategy;
  s.method = method;

  return deflateReset(strm);
}

function deflateInit(strm, level) {
  return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);
}


function deflate(strm, flush) {
  var old_flush, s;
  var beg, val; // for gzip header write only

  if (!strm || !strm.state ||
    flush > Z_BLOCK || flush < 0) {
    return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;
  }

  s = strm.state;

  if (!strm.output ||
      (!strm.input && strm.avail_in !== 0) ||
      (s.status === FINISH_STATE && flush !== Z_FINISH)) {
    return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);
  }

  s.strm = strm; /* just in case */
  old_flush = s.last_flush;
  s.last_flush = flush;

  /* Write the header */
  if (s.status === INIT_STATE) {

    if (s.wrap === 2) { // GZIP header
      strm.adler = 0;  //crc32(0L, Z_NULL, 0);
      put_byte(s, 31);
      put_byte(s, 139);
      put_byte(s, 8);
      if (!s.gzhead) { // s->gzhead == Z_NULL
        put_byte(s, 0);
        put_byte(s, 0);
        put_byte(s, 0);
        put_byte(s, 0);
        put_byte(s, 0);
        put_byte(s, s.level === 9 ? 2 :
                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?
                     4 : 0));
        put_byte(s, OS_CODE);
        s.status = BUSY_STATE;
      }
      else {
        put_byte(s, (s.gzhead.text ? 1 : 0) +
                    (s.gzhead.hcrc ? 2 : 0) +
                    (!s.gzhead.extra ? 0 : 4) +
                    (!s.gzhead.name ? 0 : 8) +
                    (!s.gzhead.comment ? 0 : 16)
                );
        put_byte(s, s.gzhead.time & 0xff);
        put_byte(s, (s.gzhead.time >> 8) & 0xff);
        put_byte(s, (s.gzhead.time >> 16) & 0xff);
        put_byte(s, (s.gzhead.time >> 24) & 0xff);
        put_byte(s, s.level === 9 ? 2 :
                    (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?
                     4 : 0));
        put_byte(s, s.gzhead.os & 0xff);
        if (s.gzhead.extra && s.gzhead.extra.length) {
          put_byte(s, s.gzhead.extra.length & 0xff);
          put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);
        }
        if (s.gzhead.hcrc) {
          strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);
        }
        s.gzindex = 0;
        s.status = EXTRA_STATE;
      }
    }
    else // DEFLATE header
    {
      var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;
      var level_flags = -1;

      if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {
        level_flags = 0;
      } else if (s.level < 6) {
        level_flags = 1;
      } else if (s.level === 6) {
        level_flags = 2;
      } else {
        level_flags = 3;
      }
      header |= (level_flags << 6);
      if (s.strstart !== 0) { header |= PRESET_DICT; }
      header += 31 - (header % 31);

      s.status = BUSY_STATE;
      putShortMSB(s, header);

      /* Save the adler32 of the preset dictionary: */
      if (s.strstart !== 0) {
        putShortMSB(s, strm.adler >>> 16);
        putShortMSB(s, strm.adler & 0xffff);
      }
      strm.adler = 1; // adler32(0L, Z_NULL, 0);
    }
  }

//#ifdef GZIP
  if (s.status === EXTRA_STATE) {
    if (s.gzhead.extra/* != Z_NULL*/) {
      beg = s.pending;  /* start of bytes to update crc */

      while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {
        if (s.pending === s.pending_buf_size) {
          if (s.gzhead.hcrc && s.pending > beg) {
            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
          }
          flush_pending(strm);
          beg = s.pending;
          if (s.pending === s.pending_buf_size) {
            break;
          }
        }
        put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);
        s.gzindex++;
      }
      if (s.gzhead.hcrc && s.pending > beg) {
        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
      }
      if (s.gzindex === s.gzhead.extra.length) {
        s.gzindex = 0;
        s.status = NAME_STATE;
      }
    }
    else {
      s.status = NAME_STATE;
    }
  }
  if (s.status === NAME_STATE) {
    if (s.gzhead.name/* != Z_NULL*/) {
      beg = s.pending;  /* start of bytes to update crc */
      //int val;

      do {
        if (s.pending === s.pending_buf_size) {
          if (s.gzhead.hcrc && s.pending > beg) {
            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
          }
          flush_pending(strm);
          beg = s.pending;
          if (s.pending === s.pending_buf_size) {
            val = 1;
            break;
          }
        }
        // JS specific: little magic to add zero terminator to end of string
        if (s.gzindex < s.gzhead.name.length) {
          val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;
        } else {
          val = 0;
        }
        put_byte(s, val);
      } while (val !== 0);

      if (s.gzhead.hcrc && s.pending > beg) {
        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
      }
      if (val === 0) {
        s.gzindex = 0;
        s.status = COMMENT_STATE;
      }
    }
    else {
      s.status = COMMENT_STATE;
    }
  }
  if (s.status === COMMENT_STATE) {
    if (s.gzhead.comment/* != Z_NULL*/) {
      beg = s.pending;  /* start of bytes to update crc */
      //int val;

      do {
        if (s.pending === s.pending_buf_size) {
          if (s.gzhead.hcrc && s.pending > beg) {
            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
          }
          flush_pending(strm);
          beg = s.pending;
          if (s.pending === s.pending_buf_size) {
            val = 1;
            break;
          }
        }
        // JS specific: little magic to add zero terminator to end of string
        if (s.gzindex < s.gzhead.comment.length) {
          val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;
        } else {
          val = 0;
        }
        put_byte(s, val);
      } while (val !== 0);

      if (s.gzhead.hcrc && s.pending > beg) {
        strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);
      }
      if (val === 0) {
        s.status = HCRC_STATE;
      }
    }
    else {
      s.status = HCRC_STATE;
    }
  }
  if (s.status === HCRC_STATE) {
    if (s.gzhead.hcrc) {
      if (s.pending + 2 > s.pending_buf_size) {
        flush_pending(strm);
      }
      if (s.pending + 2 <= s.pending_buf_size) {
        put_byte(s, strm.adler & 0xff);
        put_byte(s, (strm.adler >> 8) & 0xff);
        strm.adler = 0; //crc32(0L, Z_NULL, 0);
        s.status = BUSY_STATE;
      }
    }
    else {
      s.status = BUSY_STATE;
    }
  }
//#endif

  /* Flush as much pending output as possible */
  if (s.pending !== 0) {
    flush_pending(strm);
    if (strm.avail_out === 0) {
      /* Since avail_out is 0, deflate will be called again with
       * more output space, but possibly with both pending and
       * avail_in equal to zero. There won't be anything to do,
       * but this is not an error situation so make sure we
       * return OK instead of BUF_ERROR at next call of deflate:
       */
      s.last_flush = -1;
      return Z_OK;
    }

    /* Make sure there is something to do and avoid duplicate consecutive
     * flushes. For repeated and useless calls with Z_FINISH, we keep
     * returning Z_STREAM_END instead of Z_BUF_ERROR.
     */
  } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&
    flush !== Z_FINISH) {
    return err(strm, Z_BUF_ERROR);
  }

  /* User must not provide more input after the first FINISH: */
  if (s.status === FINISH_STATE && strm.avail_in !== 0) {
    return err(strm, Z_BUF_ERROR);
  }

  /* Start a new block or continue the current one.
   */
  if (strm.avail_in !== 0 || s.lookahead !== 0 ||
    (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {
    var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :
      (s.strategy === Z_RLE ? deflate_rle(s, flush) :
        configuration_table[s.level].func(s, flush));

    if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {
      s.status = FINISH_STATE;
    }
    if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {
      if (strm.avail_out === 0) {
        s.last_flush = -1;
        /* avoid BUF_ERROR next call, see above */
      }
      return Z_OK;
      /* If flush != Z_NO_FLUSH && avail_out == 0, the next call
       * of deflate should use the same flush parameter to make sure
       * that the flush is complete. So we don't have to output an
       * empty block here, this will be done at next call. This also
       * ensures that for a very small output buffer, we emit at most
       * one empty block.
       */
    }
    if (bstate === BS_BLOCK_DONE) {
      if (flush === Z_PARTIAL_FLUSH) {
        trees._tr_align(s);
      }
      else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */

        trees._tr_stored_block(s, 0, 0, false);
        /* For a full flush, this empty block will be recognized
         * as a special marker by inflate_sync().
         */
        if (flush === Z_FULL_FLUSH) {
          /*** CLEAR_HASH(s); ***/             /* forget history */
          zero(s.head); // Fill with NIL (= 0);

          if (s.lookahead === 0) {
            s.strstart = 0;
            s.block_start = 0;
            s.insert = 0;
          }
        }
      }
      flush_pending(strm);
      if (strm.avail_out === 0) {
        s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */
        return Z_OK;
      }
    }
  }
  //Assert(strm->avail_out > 0, "bug2");
  //if (strm.avail_out <= 0) { throw new Error("bug2");}

  if (flush !== Z_FINISH) { return Z_OK; }
  if (s.wrap <= 0) { return Z_STREAM_END; }

  /* Write the trailer */
  if (s.wrap === 2) {
    put_byte(s, strm.adler & 0xff);
    put_byte(s, (strm.adler >> 8) & 0xff);
    put_byte(s, (strm.adler >> 16) & 0xff);
    put_byte(s, (strm.adler >> 24) & 0xff);
    put_byte(s, strm.total_in & 0xff);
    put_byte(s, (strm.total_in >> 8) & 0xff);
    put_byte(s, (strm.total_in >> 16) & 0xff);
    put_byte(s, (strm.total_in >> 24) & 0xff);
  }
  else
  {
    putShortMSB(s, strm.adler >>> 16);
    putShortMSB(s, strm.adler & 0xffff);
  }

  flush_pending(strm);
  /* If avail_out is zero, the application will call deflate again
   * to flush the rest.
   */
  if (s.wrap > 0) { s.wrap = -s.wrap; }
  /* write the trailer only once! */
  return s.pending !== 0 ? Z_OK : Z_STREAM_END;
}

function deflateEnd(strm) {
  var status;

  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {
    return Z_STREAM_ERROR;
  }

  status = strm.state.status;
  if (status !== INIT_STATE &&
    status !== EXTRA_STATE &&
    status !== NAME_STATE &&
    status !== COMMENT_STATE &&
    status !== HCRC_STATE &&
    status !== BUSY_STATE &&
    status !== FINISH_STATE
  ) {
    return err(strm, Z_STREAM_ERROR);
  }

  strm.state = null;

  return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;
}


/* =========================================================================
 * Initializes the compression dictionary from the given byte
 * sequence without producing any compressed output.
 */
function deflateSetDictionary(strm, dictionary) {
  var dictLength = dictionary.length;

  var s;
  var str, n;
  var wrap;
  var avail;
  var next;
  var input;
  var tmpDict;

  if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {
    return Z_STREAM_ERROR;
  }

  s = strm.state;
  wrap = s.wrap;

  if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {
    return Z_STREAM_ERROR;
  }

  /* when using zlib wrappers, compute Adler-32 for provided dictionary */
  if (wrap === 1) {
    /* adler32(strm->adler, dictionary, dictLength); */
    strm.adler = adler32(strm.adler, dictionary, dictLength, 0);
  }

  s.wrap = 0;   /* avoid computing Adler-32 in read_buf */

  /* if dictionary would fill window, just replace the history */
  if (dictLength >= s.w_size) {
    if (wrap === 0) {            /* already empty otherwise */
      /*** CLEAR_HASH(s); ***/
      zero(s.head); // Fill with NIL (= 0);
      s.strstart = 0;
      s.block_start = 0;
      s.insert = 0;
    }
    /* use the tail */
    // dictionary = dictionary.slice(dictLength - s.w_size);
    tmpDict = new utils.Buf8(s.w_size);
    utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);
    dictionary = tmpDict;
    dictLength = s.w_size;
  }
  /* insert dictionary into window and hash */
  avail = strm.avail_in;
  next = strm.next_in;
  input = strm.input;
  strm.avail_in = dictLength;
  strm.next_in = 0;
  strm.input = dictionary;
  fill_window(s);
  while (s.lookahead >= MIN_MATCH) {
    str = s.strstart;
    n = s.lookahead - (MIN_MATCH - 1);
    do {
      /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */
      s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;

      s.prev[str & s.w_mask] = s.head[s.ins_h];

      s.head[s.ins_h] = str;
      str++;
    } while (--n);
    s.strstart = str;
    s.lookahead = MIN_MATCH - 1;
    fill_window(s);
  }
  s.strstart += s.lookahead;
  s.block_start = s.strstart;
  s.insert = s.lookahead;
  s.lookahead = 0;
  s.match_length = s.prev_length = MIN_MATCH - 1;
  s.match_available = 0;
  strm.next_in = next;
  strm.input = input;
  strm.avail_in = avail;
  s.wrap = wrap;
  return Z_OK;
}


exports.deflateInit = deflateInit;
exports.deflateInit2 = deflateInit2;
exports.deflateReset = deflateReset;
exports.deflateResetKeep = deflateResetKeep;
exports.deflateSetHeader = deflateSetHeader;
exports.deflate = deflate;
exports.deflateEnd = deflateEnd;
exports.deflateSetDictionary = deflateSetDictionary;
exports.deflateInfo = 'pako deflate (from Nodeca project)';

/* Not implemented
exports.deflateBound = deflateBound;
exports.deflateCopy = deflateCopy;
exports.deflateParams = deflateParams;
exports.deflatePending = deflatePending;
exports.deflatePrime = deflatePrime;
exports.deflateTune = deflateTune;
*/

},{"../utils/common":41,"./adler32":43,"./crc32":45,"./messages":51,"./trees":52}],47:[function(require,module,exports){
'use strict';

// (C) 1995-2013 Jean-loup Gailly and Mark Adler
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
//   claim that you wrote the original software. If you use this software
//   in a product, an acknowledgment in the product documentation would be
//   appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
//   misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.

function GZheader() {
  /* true if compressed data believed to be text */
  this.text       = 0;
  /* modification time */
  this.time       = 0;
  /* extra flags (not used when writing a gzip file) */
  this.xflags     = 0;
  /* operating system */
  this.os         = 0;
  /* pointer to extra field or Z_NULL if none */
  this.extra      = null;
  /* extra field length (valid if extra != Z_NULL) */
  this.extra_len  = 0; // Actually, we don't need it in JS,
                       // but leave for few code modifications

  //
  // Setup limits is not necessary because in js we should not preallocate memory
  // for inflate use constant limit in 65536 bytes
  //

  /* space at extra (only when reading header) */
  // this.extra_max  = 0;
  /* pointer to zero-terminated file name or Z_NULL */
  this.name       = '';
  /* space at name (only when reading header) */
  // this.name_max   = 0;
  /* pointer to zero-terminated comment or Z_NULL */
  this.comment    = '';
  /* space at comment (only when reading header) */
  // this.comm_max   = 0;
  /* true if there was or will be a header crc */
  this.hcrc       = 0;
  /* true when done reading gzip header (not used when writing a gzip file) */
  this.done       = false;
}

module.exports = GZheader;

},{}],48:[function(require,module,exports){
'use strict';

// (C) 1995-2013 Jean-loup Gailly and Mark Adler
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
//   claim that you wrote the original software. If you use this software
//   in a product, an acknowledgment in the product documentation would be
//   appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
//   misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.

// See state defs from inflate.js
var BAD = 30;       /* got a data error -- remain here until reset */
var TYPE = 12;      /* i: waiting for type bits, including last-flag bit */

/*
   Decode literal, length, and distance codes and write out the resulting
   literal and match bytes until either not enough input or output is
   available, an end-of-block is encountered, or a data error is encountered.
   When large enough input and output buffers are supplied to inflate(), for
   example, a 16K input buffer and a 64K output buffer, more than 95% of the
   inflate execution time is spent in this routine.

   Entry assumptions:

        state.mode === LEN
        strm.avail_in >= 6
        strm.avail_out >= 258
        start >= strm.avail_out
        state.bits < 8

   On return, state.mode is one of:

        LEN -- ran out of enough output space or enough available input
        TYPE -- reached end of block code, inflate() to interpret next block
        BAD -- error in block data

   Notes:

    - The maximum input bits used by a length/distance pair is 15 bits for the
      length code, 5 bits for the length extra, 15 bits for the distance code,
      and 13 bits for the distance extra.  This totals 48 bits, or six bytes.
      Therefore if strm.avail_in >= 6, then there is enough input to avoid
      checking for available input while decoding.

    - The maximum bytes that a single length/distance pair can output is 258
      bytes, which is the maximum length that can be coded.  inflate_fast()
      requires strm.avail_out >= 258 for each loop to avoid checking for
      output space.
 */
module.exports = function inflate_fast(strm, start) {
  var state;
  var _in;                    /* local strm.input */
  var last;                   /* have enough input while in < last */
  var _out;                   /* local strm.output */
  var beg;                    /* inflate()'s initial strm.output */
  var end;                    /* while out < end, enough space available */
//#ifdef INFLATE_STRICT
  var dmax;                   /* maximum distance from zlib header */
//#endif
  var wsize;                  /* window size or zero if not using window */
  var whave;                  /* valid bytes in the window */
  var wnext;                  /* window write index */
  // Use `s_window` instead `window`, avoid conflict with instrumentation tools
  var s_window;               /* allocated sliding window, if wsize != 0 */
  var hold;                   /* local strm.hold */
  var bits;                   /* local strm.bits */
  var lcode;                  /* local strm.lencode */
  var dcode;                  /* local strm.distcode */
  var lmask;                  /* mask for first level of length codes */
  var dmask;                  /* mask for first level of distance codes */
  var here;                   /* retrieved table entry */
  var op;                     /* code bits, operation, extra bits, or */
                              /*  window position, window bytes to copy */
  var len;                    /* match length, unused bytes */
  var dist;                   /* match distance */
  var from;                   /* where to copy match from */
  var from_source;


  var input, output; // JS specific, because we have no pointers

  /* copy state to local variables */
  state = strm.state;
  //here = state.here;
  _in = strm.next_in;
  input = strm.input;
  last = _in + (strm.avail_in - 5);
  _out = strm.next_out;
  output = strm.output;
  beg = _out - (start - strm.avail_out);
  end = _out + (strm.avail_out - 257);
//#ifdef INFLATE_STRICT
  dmax = state.dmax;
//#endif
  wsize = state.wsize;
  whave = state.whave;
  wnext = state.wnext;
  s_window = state.window;
  hold = state.hold;
  bits = state.bits;
  lcode = state.lencode;
  dcode = state.distcode;
  lmask = (1 << state.lenbits) - 1;
  dmask = (1 << state.distbits) - 1;


  /* decode literals and length/distances until end-of-block or not enough
     input data or output space */

  top:
  do {
    if (bits < 15) {
      hold += input[_in++] << bits;
      bits += 8;
      hold += input[_in++] << bits;
      bits += 8;
    }

    here = lcode[hold & lmask];

    dolen:
    for (;;) { // Goto emulation
      op = here >>> 24/*here.bits*/;
      hold >>>= op;
      bits -= op;
      op = (here >>> 16) & 0xff/*here.op*/;
      if (op === 0) {                          /* literal */
        //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
        //        "inflate:         literal '%c'\n" :
        //        "inflate:         literal 0x%02x\n", here.val));
        output[_out++] = here & 0xffff/*here.val*/;
      }
      else if (op & 16) {                     /* length base */
        len = here & 0xffff/*here.val*/;
        op &= 15;                           /* number of extra bits */
        if (op) {
          if (bits < op) {
            hold += input[_in++] << bits;
            bits += 8;
          }
          len += hold & ((1 << op) - 1);
          hold >>>= op;
          bits -= op;
        }
        //Tracevv((stderr, "inflate:         length %u\n", len));
        if (bits < 15) {
          hold += input[_in++] << bits;
          bits += 8;
          hold += input[_in++] << bits;
          bits += 8;
        }
        here = dcode[hold & dmask];

        dodist:
        for (;;) { // goto emulation
          op = here >>> 24/*here.bits*/;
          hold >>>= op;
          bits -= op;
          op = (here >>> 16) & 0xff/*here.op*/;

          if (op & 16) {                      /* distance base */
            dist = here & 0xffff/*here.val*/;
            op &= 15;                       /* number of extra bits */
            if (bits < op) {
              hold += input[_in++] << bits;
              bits += 8;
              if (bits < op) {
                hold += input[_in++] << bits;
                bits += 8;
              }
            }
            dist += hold & ((1 << op) - 1);
//#ifdef INFLATE_STRICT
            if (dist > dmax) {
              strm.msg = 'invalid distance too far back';
              state.mode = BAD;
              break top;
            }
//#endif
            hold >>>= op;
            bits -= op;
            //Tracevv((stderr, "inflate:         distance %u\n", dist));
            op = _out - beg;                /* max distance in output */
            if (dist > op) {                /* see if copy from window */
              op = dist - op;               /* distance back in window */
              if (op > whave) {
                if (state.sane) {
                  strm.msg = 'invalid distance too far back';
                  state.mode = BAD;
                  break top;
                }

// (!) This block is disabled in zlib defailts,
// don't enable it for binary compatibility
//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
//                if (len <= op - whave) {
//                  do {
//                    output[_out++] = 0;
//                  } while (--len);
//                  continue top;
//                }
//                len -= op - whave;
//                do {
//                  output[_out++] = 0;
//                } while (--op > whave);
//                if (op === 0) {
//                  from = _out - dist;
//                  do {
//                    output[_out++] = output[from++];
//                  } while (--len);
//                  continue top;
//                }
//#endif
              }
              from = 0; // window index
              from_source = s_window;
              if (wnext === 0) {           /* very common case */
                from += wsize - op;
                if (op < len) {         /* some from window */
                  len -= op;
                  do {
                    output[_out++] = s_window[from++];
                  } while (--op);
                  from = _out - dist;  /* rest from output */
                  from_source = output;
                }
              }
              else if (wnext < op) {      /* wrap around window */
                from += wsize + wnext - op;
                op -= wnext;
                if (op < len) {         /* some from end of window */
                  len -= op;
                  do {
                    output[_out++] = s_window[from++];
                  } while (--op);
                  from = 0;
                  if (wnext < len) {  /* some from start of window */
                    op = wnext;
                    len -= op;
                    do {
                      output[_out++] = s_window[from++];
                    } while (--op);
                    from = _out - dist;      /* rest from output */
                    from_source = output;
                  }
                }
              }
              else {                      /* contiguous in window */
                from += wnext - op;
                if (op < len) {         /* some from window */
                  len -= op;
                  do {
                    output[_out++] = s_window[from++];
                  } while (--op);
                  from = _out - dist;  /* rest from output */
                  from_source = output;
                }
              }
              while (len > 2) {
                output[_out++] = from_source[from++];
                output[_out++] = from_source[from++];
                output[_out++] = from_source[from++];
                len -= 3;
              }
              if (len) {
                output[_out++] = from_source[from++];
                if (len > 1) {
                  output[_out++] = from_source[from++];
                }
              }
            }
            else {
              from = _out - dist;          /* copy direct from output */
              do {                        /* minimum length is three */
                output[_out++] = output[from++];
                output[_out++] = output[from++];
                output[_out++] = output[from++];
                len -= 3;
              } while (len > 2);
              if (len) {
                output[_out++] = output[from++];
                if (len > 1) {
                  output[_out++] = output[from++];
                }
              }
            }
          }
          else if ((op & 64) === 0) {          /* 2nd level distance code */
            here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];
            continue dodist;
          }
          else {
            strm.msg = 'invalid distance code';
            state.mode = BAD;
            break top;
          }

          break; // need to emulate goto via "continue"
        }
      }
      else if ((op & 64) === 0) {              /* 2nd level length code */
        here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];
        continue dolen;
      }
      else if (op & 32) {                     /* end-of-block */
        //Tracevv((stderr, "inflate:         end of block\n"));
        state.mode = TYPE;
        break top;
      }
      else {
        strm.msg = 'invalid literal/length code';
        state.mode = BAD;
        break top;
      }

      break; // need to emulate goto via "continue"
    }
  } while (_in < last && _out < end);

  /* return unused bytes (on entry, bits < 8, so in won't go too far back) */
  len = bits >> 3;
  _in -= len;
  bits -= len << 3;
  hold &= (1 << bits) - 1;

  /* update state and return */
  strm.next_in = _in;
  strm.next_out = _out;
  strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));
  strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));
  state.hold = hold;
  state.bits = bits;
  return;
};

},{}],49:[function(require,module,exports){
'use strict';

// (C) 1995-2013 Jean-loup Gailly and Mark Adler
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
//   claim that you wrote the original software. If you use this software
//   in a product, an acknowledgment in the product documentation would be
//   appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
//   misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.

var utils         = require('../utils/common');
var adler32       = require('./adler32');
var crc32         = require('./crc32');
var inflate_fast  = require('./inffast');
var inflate_table = require('./inftrees');

var CODES = 0;
var LENS = 1;
var DISTS = 2;

/* Public constants ==========================================================*/
/* ===========================================================================*/


/* Allowed flush values; see deflate() and inflate() below for details */
//var Z_NO_FLUSH      = 0;
//var Z_PARTIAL_FLUSH = 1;
//var Z_SYNC_FLUSH    = 2;
//var Z_FULL_FLUSH    = 3;
var Z_FINISH        = 4;
var Z_BLOCK         = 5;
var Z_TREES         = 6;


/* Return codes for the compression/decompression functions. Negative values
 * are errors, positive values are used for special but normal events.
 */
var Z_OK            = 0;
var Z_STREAM_END    = 1;
var Z_NEED_DICT     = 2;
//var Z_ERRNO         = -1;
var Z_STREAM_ERROR  = -2;
var Z_DATA_ERROR    = -3;
var Z_MEM_ERROR     = -4;
var Z_BUF_ERROR     = -5;
//var Z_VERSION_ERROR = -6;

/* The deflate compression method */
var Z_DEFLATED  = 8;


/* STATES ====================================================================*/
/* ===========================================================================*/


var    HEAD = 1;       /* i: waiting for magic header */
var    FLAGS = 2;      /* i: waiting for method and flags (gzip) */
var    TIME = 3;       /* i: waiting for modification time (gzip) */
var    OS = 4;         /* i: waiting for extra flags and operating system (gzip) */
var    EXLEN = 5;      /* i: waiting for extra length (gzip) */
var    EXTRA = 6;      /* i: waiting for extra bytes (gzip) */
var    NAME = 7;       /* i: waiting for end of file name (gzip) */
var    COMMENT = 8;    /* i: waiting for end of comment (gzip) */
var    HCRC = 9;       /* i: waiting for header crc (gzip) */
var    DICTID = 10;    /* i: waiting for dictionary check value */
var    DICT = 11;      /* waiting for inflateSetDictionary() call */
var        TYPE = 12;      /* i: waiting for type bits, including last-flag bit */
var        TYPEDO = 13;    /* i: same, but skip check to exit inflate on new block */
var        STORED = 14;    /* i: waiting for stored size (length and complement) */
var        COPY_ = 15;     /* i/o: same as COPY below, but only first time in */
var        COPY = 16;      /* i/o: waiting for input or output to copy stored block */
var        TABLE = 17;     /* i: waiting for dynamic block table lengths */
var        LENLENS = 18;   /* i: waiting for code length code lengths */
var        CODELENS = 19;  /* i: waiting for length/lit and distance code lengths */
var            LEN_ = 20;      /* i: same as LEN below, but only first time in */
var            LEN = 21;       /* i: waiting for length/lit/eob code */
var            LENEXT = 22;    /* i: waiting for length extra bits */
var            DIST = 23;      /* i: waiting for distance code */
var            DISTEXT = 24;   /* i: waiting for distance extra bits */
var            MATCH = 25;     /* o: waiting for output space to copy string */
var            LIT = 26;       /* o: waiting for output space to write literal */
var    CHECK = 27;     /* i: waiting for 32-bit check value */
var    LENGTH = 28;    /* i: waiting for 32-bit length (gzip) */
var    DONE = 29;      /* finished check, done -- remain here until reset */
var    BAD = 30;       /* got a data error -- remain here until reset */
var    MEM = 31;       /* got an inflate() memory error -- remain here until reset */
var    SYNC = 32;      /* looking for synchronization bytes to restart inflate() */

/* ===========================================================================*/



var ENOUGH_LENS = 852;
var ENOUGH_DISTS = 592;
//var ENOUGH =  (ENOUGH_LENS+ENOUGH_DISTS);

var MAX_WBITS = 15;
/* 32K LZ77 window */
var DEF_WBITS = MAX_WBITS;


function zswap32(q) {
  return  (((q >>> 24) & 0xff) +
          ((q >>> 8) & 0xff00) +
          ((q & 0xff00) << 8) +
          ((q & 0xff) << 24));
}


function InflateState() {
  this.mode = 0;             /* current inflate mode */
  this.last = false;          /* true if processing last block */
  this.wrap = 0;              /* bit 0 true for zlib, bit 1 true for gzip */
  this.havedict = false;      /* true if dictionary provided */
  this.flags = 0;             /* gzip header method and flags (0 if zlib) */
  this.dmax = 0;              /* zlib header max distance (INFLATE_STRICT) */
  this.check = 0;             /* protected copy of check value */
  this.total = 0;             /* protected copy of output count */
  // TODO: may be {}
  this.head = null;           /* where to save gzip header information */

  /* sliding window */
  this.wbits = 0;             /* log base 2 of requested window size */
  this.wsize = 0;             /* window size or zero if not using window */
  this.whave = 0;             /* valid bytes in the window */
  this.wnext = 0;             /* window write index */
  this.window = null;         /* allocated sliding window, if needed */

  /* bit accumulator */
  this.hold = 0;              /* input bit accumulator */
  this.bits = 0;              /* number of bits in "in" */

  /* for string and stored block copying */
  this.length = 0;            /* literal or length of data to copy */
  this.offset = 0;            /* distance back to copy string from */

  /* for table and code decoding */
  this.extra = 0;             /* extra bits needed */

  /* fixed and dynamic code tables */
  this.lencode = null;          /* starting table for length/literal codes */
  this.distcode = null;         /* starting table for distance codes */
  this.lenbits = 0;           /* index bits for lencode */
  this.distbits = 0;          /* index bits for distcode */

  /* dynamic table building */
  this.ncode = 0;             /* number of code length code lengths */
  this.nlen = 0;              /* number of length code lengths */
  this.ndist = 0;             /* number of distance code lengths */
  this.have = 0;              /* number of code lengths in lens[] */
  this.next = null;              /* next available space in codes[] */

  this.lens = new utils.Buf16(320); /* temporary storage for code lengths */
  this.work = new utils.Buf16(288); /* work area for code table building */

  /*
   because we don't have pointers in js, we use lencode and distcode directly
   as buffers so we don't need codes
  */
  //this.codes = new utils.Buf32(ENOUGH);       /* space for code tables */
  this.lendyn = null;              /* dynamic table for length/literal codes (JS specific) */
  this.distdyn = null;             /* dynamic table for distance codes (JS specific) */
  this.sane = 0;                   /* if false, allow invalid distance too far */
  this.back = 0;                   /* bits back of last unprocessed length/lit */
  this.was = 0;                    /* initial length of match */
}

function inflateResetKeep(strm) {
  var state;

  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
  state = strm.state;
  strm.total_in = strm.total_out = state.total = 0;
  strm.msg = ''; /*Z_NULL*/
  if (state.wrap) {       /* to support ill-conceived Java test suite */
    strm.adler = state.wrap & 1;
  }
  state.mode = HEAD;
  state.last = 0;
  state.havedict = 0;
  state.dmax = 32768;
  state.head = null/*Z_NULL*/;
  state.hold = 0;
  state.bits = 0;
  //state.lencode = state.distcode = state.next = state.codes;
  state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);
  state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);

  state.sane = 1;
  state.back = -1;
  //Tracev((stderr, "inflate: reset\n"));
  return Z_OK;
}

function inflateReset(strm) {
  var state;

  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
  state = strm.state;
  state.wsize = 0;
  state.whave = 0;
  state.wnext = 0;
  return inflateResetKeep(strm);

}

function inflateReset2(strm, windowBits) {
  var wrap;
  var state;

  /* get the state */
  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
  state = strm.state;

  /* extract wrap request from windowBits parameter */
  if (windowBits < 0) {
    wrap = 0;
    windowBits = -windowBits;
  }
  else {
    wrap = (windowBits >> 4) + 1;
    if (windowBits < 48) {
      windowBits &= 15;
    }
  }

  /* set number of window bits, free window if different */
  if (windowBits && (windowBits < 8 || windowBits > 15)) {
    return Z_STREAM_ERROR;
  }
  if (state.window !== null && state.wbits !== windowBits) {
    state.window = null;
  }

  /* update state and reset the rest of it */
  state.wrap = wrap;
  state.wbits = windowBits;
  return inflateReset(strm);
}

function inflateInit2(strm, windowBits) {
  var ret;
  var state;

  if (!strm) { return Z_STREAM_ERROR; }
  //strm.msg = Z_NULL;                 /* in case we return an error */

  state = new InflateState();

  //if (state === Z_NULL) return Z_MEM_ERROR;
  //Tracev((stderr, "inflate: allocated\n"));
  strm.state = state;
  state.window = null/*Z_NULL*/;
  ret = inflateReset2(strm, windowBits);
  if (ret !== Z_OK) {
    strm.state = null/*Z_NULL*/;
  }
  return ret;
}

function inflateInit(strm) {
  return inflateInit2(strm, DEF_WBITS);
}


/*
 Return state with length and distance decoding tables and index sizes set to
 fixed code decoding.  Normally this returns fixed tables from inffixed.h.
 If BUILDFIXED is defined, then instead this routine builds the tables the
 first time it's called, and returns those tables the first time and
 thereafter.  This reduces the size of the code by about 2K bytes, in
 exchange for a little execution time.  However, BUILDFIXED should not be
 used for threaded applications, since the rewriting of the tables and virgin
 may not be thread-safe.
 */
var virgin = true;

var lenfix, distfix; // We have no pointers in JS, so keep tables separate

function fixedtables(state) {
  /* build fixed huffman tables if first call (may not be thread safe) */
  if (virgin) {
    var sym;

    lenfix = new utils.Buf32(512);
    distfix = new utils.Buf32(32);

    /* literal/length table */
    sym = 0;
    while (sym < 144) { state.lens[sym++] = 8; }
    while (sym < 256) { state.lens[sym++] = 9; }
    while (sym < 280) { state.lens[sym++] = 7; }
    while (sym < 288) { state.lens[sym++] = 8; }

    inflate_table(LENS,  state.lens, 0, 288, lenfix,   0, state.work, { bits: 9 });

    /* distance table */
    sym = 0;
    while (sym < 32) { state.lens[sym++] = 5; }

    inflate_table(DISTS, state.lens, 0, 32,   distfix, 0, state.work, { bits: 5 });

    /* do this just once */
    virgin = false;
  }

  state.lencode = lenfix;
  state.lenbits = 9;
  state.distcode = distfix;
  state.distbits = 5;
}


/*
 Update the window with the last wsize (normally 32K) bytes written before
 returning.  If window does not exist yet, create it.  This is only called
 when a window is already in use, or when output has been written during this
 inflate call, but the end of the deflate stream has not been reached yet.
 It is also called to create a window for dictionary data when a dictionary
 is loaded.

 Providing output buffers larger than 32K to inflate() should provide a speed
 advantage, since only the last 32K of output is copied to the sliding window
 upon return from inflate(), and since all distances after the first 32K of
 output will fall in the output data, making match copies simpler and faster.
 The advantage may be dependent on the size of the processor's data caches.
 */
function updatewindow(strm, src, end, copy) {
  var dist;
  var state = strm.state;

  /* if it hasn't been done already, allocate space for the window */
  if (state.window === null) {
    state.wsize = 1 << state.wbits;
    state.wnext = 0;
    state.whave = 0;

    state.window = new utils.Buf8(state.wsize);
  }

  /* copy state->wsize or less output bytes into the circular window */
  if (copy >= state.wsize) {
    utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);
    state.wnext = 0;
    state.whave = state.wsize;
  }
  else {
    dist = state.wsize - state.wnext;
    if (dist > copy) {
      dist = copy;
    }
    //zmemcpy(state->window + state->wnext, end - copy, dist);
    utils.arraySet(state.window, src, end - copy, dist, state.wnext);
    copy -= dist;
    if (copy) {
      //zmemcpy(state->window, end - copy, copy);
      utils.arraySet(state.window, src, end - copy, copy, 0);
      state.wnext = copy;
      state.whave = state.wsize;
    }
    else {
      state.wnext += dist;
      if (state.wnext === state.wsize) { state.wnext = 0; }
      if (state.whave < state.wsize) { state.whave += dist; }
    }
  }
  return 0;
}

function inflate(strm, flush) {
  var state;
  var input, output;          // input/output buffers
  var next;                   /* next input INDEX */
  var put;                    /* next output INDEX */
  var have, left;             /* available input and output */
  var hold;                   /* bit buffer */
  var bits;                   /* bits in bit buffer */
  var _in, _out;              /* save starting available input and output */
  var copy;                   /* number of stored or match bytes to copy */
  var from;                   /* where to copy match bytes from */
  var from_source;
  var here = 0;               /* current decoding table entry */
  var here_bits, here_op, here_val; // paked "here" denormalized (JS specific)
  //var last;                   /* parent table entry */
  var last_bits, last_op, last_val; // paked "last" denormalized (JS specific)
  var len;                    /* length to copy for repeats, bits to drop */
  var ret;                    /* return code */
  var hbuf = new utils.Buf8(4);    /* buffer for gzip header crc calculation */
  var opts;

  var n; // temporary var for NEED_BITS

  var order = /* permutation of code lengths */
    [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];


  if (!strm || !strm.state || !strm.output ||
      (!strm.input && strm.avail_in !== 0)) {
    return Z_STREAM_ERROR;
  }

  state = strm.state;
  if (state.mode === TYPE) { state.mode = TYPEDO; }    /* skip check */


  //--- LOAD() ---
  put = strm.next_out;
  output = strm.output;
  left = strm.avail_out;
  next = strm.next_in;
  input = strm.input;
  have = strm.avail_in;
  hold = state.hold;
  bits = state.bits;
  //---

  _in = have;
  _out = left;
  ret = Z_OK;

  inf_leave: // goto emulation
  for (;;) {
    switch (state.mode) {
    case HEAD:
      if (state.wrap === 0) {
        state.mode = TYPEDO;
        break;
      }
      //=== NEEDBITS(16);
      while (bits < 16) {
        if (have === 0) { break inf_leave; }
        have--;
        hold += input[next++] << bits;
        bits += 8;
      }
      //===//
      if ((state.wrap & 2) && hold === 0x8b1f) {  /* gzip header */
        state.check = 0/*crc32(0L, Z_NULL, 0)*/;
        //=== CRC2(state.check, hold);
        hbuf[0] = hold & 0xff;
        hbuf[1] = (hold >>> 8) & 0xff;
        state.check = crc32(state.check, hbuf, 2, 0);
        //===//

        //=== INITBITS();
        hold = 0;
        bits = 0;
        //===//
        state.mode = FLAGS;
        break;
      }
      state.flags = 0;           /* expect zlib header */
      if (state.head) {
        state.head.done = false;
      }
      if (!(state.wrap & 1) ||   /* check if zlib header allowed */
        (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {
        strm.msg = 'incorrect header check';
        state.mode = BAD;
        break;
      }
      if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {
        strm.msg = 'unknown compression method';
        state.mode = BAD;
        break;
      }
      //--- DROPBITS(4) ---//
      hold >>>= 4;
      bits -= 4;
      //---//
      len = (hold & 0x0f)/*BITS(4)*/ + 8;
      if (state.wbits === 0) {
        state.wbits = len;
      }
      else if (len > state.wbits) {
        strm.msg = 'invalid window size';
        state.mode = BAD;
        break;
      }
      state.dmax = 1 << len;
      //Tracev((stderr, "inflate:   zlib header ok\n"));
      strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;
      state.mode = hold & 0x200 ? DICTID : TYPE;
      //=== INITBITS();
      hold = 0;
      bits = 0;
      //===//
      break;
    case FLAGS:
      //=== NEEDBITS(16); */
      while (bits < 16) {
        if (have === 0) { break inf_leave; }
        have--;
        hold += input[next++] << bits;
        bits += 8;
      }
      //===//
      state.flags = hold;
      if ((state.flags & 0xff) !== Z_DEFLATED) {
        strm.msg = 'unknown compression method';
        state.mode = BAD;
        break;
      }
      if (state.flags & 0xe000) {
        strm.msg = 'unknown header flags set';
        state.mode = BAD;
        break;
      }
      if (state.head) {
        state.head.text = ((hold >> 8) & 1);
      }
      if (state.flags & 0x0200) {
        //=== CRC2(state.check, hold);
        hbuf[0] = hold & 0xff;
        hbuf[1] = (hold >>> 8) & 0xff;
        state.check = crc32(state.check, hbuf, 2, 0);
        //===//
      }
      //=== INITBITS();
      hold = 0;
      bits = 0;
      //===//
      state.mode = TIME;
      /* falls through */
    case TIME:
      //=== NEEDBITS(32); */
      while (bits < 32) {
        if (have === 0) { break inf_leave; }
        have--;
        hold += input[next++] << bits;
        bits += 8;
      }
      //===//
      if (state.head) {
        state.head.time = hold;
      }
      if (state.flags & 0x0200) {
        //=== CRC4(state.check, hold)
        hbuf[0] = hold & 0xff;
        hbuf[1] = (hold >>> 8) & 0xff;
        hbuf[2] = (hold >>> 16) & 0xff;
        hbuf[3] = (hold >>> 24) & 0xff;
        state.check = crc32(state.check, hbuf, 4, 0);
        //===
      }
      //=== INITBITS();
      hold = 0;
      bits = 0;
      //===//
      state.mode = OS;
      /* falls through */
    case OS:
      //=== NEEDBITS(16); */
      while (bits < 16) {
        if (have === 0) { break inf_leave; }
        have--;
        hold += input[next++] << bits;
        bits += 8;
      }
      //===//
      if (state.head) {
        state.head.xflags = (hold & 0xff);
        state.head.os = (hold >> 8);
      }
      if (state.flags & 0x0200) {
        //=== CRC2(state.check, hold);
        hbuf[0] = hold & 0xff;
        hbuf[1] = (hold >>> 8) & 0xff;
        state.check = crc32(state.check, hbuf, 2, 0);
        //===//
      }
      //=== INITBITS();
      hold = 0;
      bits = 0;
      //===//
      state.mode = EXLEN;
      /* falls through */
    case EXLEN:
      if (state.flags & 0x0400) {
        //=== NEEDBITS(16); */
        while (bits < 16) {
          if (have === 0) { break inf_leave; }
          have--;
          hold += input[next++] << bits;
          bits += 8;
        }
        //===//
        state.length = hold;
        if (state.head) {
          state.head.extra_len = hold;
        }
        if (state.flags & 0x0200) {
          //=== CRC2(state.check, hold);
          hbuf[0] = hold & 0xff;
          hbuf[1] = (hold >>> 8) & 0xff;
          state.check = crc32(state.check, hbuf, 2, 0);
          //===//
        }
        //=== INITBITS();
        hold = 0;
        bits = 0;
        //===//
      }
      else if (state.head) {
        state.head.extra = null/*Z_NULL*/;
      }
      state.mode = EXTRA;
      /* falls through */
    case EXTRA:
      if (state.flags & 0x0400) {
        copy = state.length;
        if (copy > have) { copy = have; }
        if (copy) {
          if (state.head) {
            len = state.head.extra_len - state.length;
            if (!state.head.extra) {
              // Use untyped array for more conveniend processing later
              state.head.extra = new Array(state.head.extra_len);
            }
            utils.arraySet(
              state.head.extra,
              input,
              next,
              // extra field is limited to 65536 bytes
              // - no need for additional size check
              copy,
              /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/
              len
            );
            //zmemcpy(state.head.extra + len, next,
            //        len + copy > state.head.extra_max ?
            //        state.head.extra_max - len : copy);
          }
          if (state.flags & 0x0200) {
            state.check = crc32(state.check, input, copy, next);
          }
          have -= copy;
          next += copy;
          state.length -= copy;
        }
        if (state.length) { break inf_leave; }
      }
      state.length = 0;
      state.mode = NAME;
      /* falls through */
    case NAME:
      if (state.flags & 0x0800) {
        if (have === 0) { break inf_leave; }
        copy = 0;
        do {
          // TODO: 2 or 1 bytes?
          len = input[next + copy++];
          /* use constant limit because in js we should not preallocate memory */
          if (state.head && len &&
              (state.length < 65536 /*state.head.name_max*/)) {
            state.head.name += String.fromCharCode(len);
          }
        } while (len && copy < have);

        if (state.flags & 0x0200) {
          state.check = crc32(state.check, input, copy, next);
        }
        have -= copy;
        next += copy;
        if (len) { break inf_leave; }
      }
      else if (state.head) {
        state.head.name = null;
      }
      state.length = 0;
      state.mode = COMMENT;
      /* falls through */
    case COMMENT:
      if (state.flags & 0x1000) {
        if (have === 0) { break inf_leave; }
        copy = 0;
        do {
          len = input[next + copy++];
          /* use constant limit because in js we should not preallocate memory */
          if (state.head && len &&
              (state.length < 65536 /*state.head.comm_max*/)) {
            state.head.comment += String.fromCharCode(len);
          }
        } while (len && copy < have);
        if (state.flags & 0x0200) {
          state.check = crc32(state.check, input, copy, next);
        }
        have -= copy;
        next += copy;
        if (len) { break inf_leave; }
      }
      else if (state.head) {
        state.head.comment = null;
      }
      state.mode = HCRC;
      /* falls through */
    case HCRC:
      if (state.flags & 0x0200) {
        //=== NEEDBITS(16); */
        while (bits < 16) {
          if (have === 0) { break inf_leave; }
          have--;
          hold += input[next++] << bits;
          bits += 8;
        }
        //===//
        if (hold !== (state.check & 0xffff)) {
          strm.msg = 'header crc mismatch';
          state.mode = BAD;
          break;
        }
        //=== INITBITS();
        hold = 0;
        bits = 0;
        //===//
      }
      if (state.head) {
        state.head.hcrc = ((state.flags >> 9) & 1);
        state.head.done = true;
      }
      strm.adler = state.check = 0;
      state.mode = TYPE;
      break;
    case DICTID:
      //=== NEEDBITS(32); */
      while (bits < 32) {
        if (have === 0) { break inf_leave; }
        have--;
        hold += input[next++] << bits;
        bits += 8;
      }
      //===//
      strm.adler = state.check = zswap32(hold);
      //=== INITBITS();
      hold = 0;
      bits = 0;
      //===//
      state.mode = DICT;
      /* falls through */
    case DICT:
      if (state.havedict === 0) {
        //--- RESTORE() ---
        strm.next_out = put;
        strm.avail_out = left;
        strm.next_in = next;
        strm.avail_in = have;
        state.hold = hold;
        state.bits = bits;
        //---
        return Z_NEED_DICT;
      }
      strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;
      state.mode = TYPE;
      /* falls through */
    case TYPE:
      if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }
      /* falls through */
    case TYPEDO:
      if (state.last) {
        //--- BYTEBITS() ---//
        hold >>>= bits & 7;
        bits -= bits & 7;
        //---//
        state.mode = CHECK;
        break;
      }
      //=== NEEDBITS(3); */
      while (bits < 3) {
        if (have === 0) { break inf_leave; }
        have--;
        hold += input[next++] << bits;
        bits += 8;
      }
      //===//
      state.last = (hold & 0x01)/*BITS(1)*/;
      //--- DROPBITS(1) ---//
      hold >>>= 1;
      bits -= 1;
      //---//

      switch ((hold & 0x03)/*BITS(2)*/) {
      case 0:                             /* stored block */
        //Tracev((stderr, "inflate:     stored block%s\n",
        //        state.last ? " (last)" : ""));
        state.mode = STORED;
        break;
      case 1:                             /* fixed block */
        fixedtables(state);
        //Tracev((stderr, "inflate:     fixed codes block%s\n",
        //        state.last ? " (last)" : ""));
        state.mode = LEN_;             /* decode codes */
        if (flush === Z_TREES) {
          //--- DROPBITS(2) ---//
          hold >>>= 2;
          bits -= 2;
          //---//
          break inf_leave;
        }
        break;
      case 2:                             /* dynamic block */
        //Tracev((stderr, "inflate:     dynamic codes block%s\n",
        //        state.last ? " (last)" : ""));
        state.mode = TABLE;
        break;
      case 3:
        strm.msg = 'invalid block type';
        state.mode = BAD;
      }
      //--- DROPBITS(2) ---//
      hold >>>= 2;
      bits -= 2;
      //---//
      break;
    case STORED:
      //--- BYTEBITS() ---// /* go to byte boundary */
      hold >>>= bits & 7;
      bits -= bits & 7;
      //---//
      //=== NEEDBITS(32); */
      while (bits < 32) {
        if (have === 0) { break inf_leave; }
        have--;
        hold += input[next++] << bits;
        bits += 8;
      }
      //===//
      if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {
        strm.msg = 'invalid stored block lengths';
        state.mode = BAD;
        break;
      }
      state.length = hold & 0xffff;
      //Tracev((stderr, "inflate:       stored length %u\n",
      //        state.length));
      //=== INITBITS();
      hold = 0;
      bits = 0;
      //===//
      state.mode = COPY_;
      if (flush === Z_TREES) { break inf_leave; }
      /* falls through */
    case COPY_:
      state.mode = COPY;
      /* falls through */
    case COPY:
      copy = state.length;
      if (copy) {
        if (copy > have) { copy = have; }
        if (copy > left) { copy = left; }
        if (copy === 0) { break inf_leave; }
        //--- zmemcpy(put, next, copy); ---
        utils.arraySet(output, input, next, copy, put);
        //---//
        have -= copy;
        next += copy;
        left -= copy;
        put += copy;
        state.length -= copy;
        break;
      }
      //Tracev((stderr, "inflate:       stored end\n"));
      state.mode = TYPE;
      break;
    case TABLE:
      //=== NEEDBITS(14); */
      while (bits < 14) {
        if (have === 0) { break inf_leave; }
        have--;
        hold += input[next++] << bits;
        bits += 8;
      }
      //===//
      state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;
      //--- DROPBITS(5) ---//
      hold >>>= 5;
      bits -= 5;
      //---//
      state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;
      //--- DROPBITS(5) ---//
      hold >>>= 5;
      bits -= 5;
      //---//
      state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;
      //--- DROPBITS(4) ---//
      hold >>>= 4;
      bits -= 4;
      //---//
//#ifndef PKZIP_BUG_WORKAROUND
      if (state.nlen > 286 || state.ndist > 30) {
        strm.msg = 'too many length or distance symbols';
        state.mode = BAD;
        break;
      }
//#endif
      //Tracev((stderr, "inflate:       table sizes ok\n"));
      state.have = 0;
      state.mode = LENLENS;
      /* falls through */
    case LENLENS:
      while (state.have < state.ncode) {
        //=== NEEDBITS(3);
        while (bits < 3) {
          if (have === 0) { break inf_leave; }
          have--;
          hold += input[next++] << bits;
          bits += 8;
        }
        //===//
        state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);
        //--- DROPBITS(3) ---//
        hold >>>= 3;
        bits -= 3;
        //---//
      }
      while (state.have < 19) {
        state.lens[order[state.have++]] = 0;
      }
      // We have separate tables & no pointers. 2 commented lines below not needed.
      //state.next = state.codes;
      //state.lencode = state.next;
      // Switch to use dynamic table
      state.lencode = state.lendyn;
      state.lenbits = 7;

      opts = { bits: state.lenbits };
      ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);
      state.lenbits = opts.bits;

      if (ret) {
        strm.msg = 'invalid code lengths set';
        state.mode = BAD;
        break;
      }
      //Tracev((stderr, "inflate:       code lengths ok\n"));
      state.have = 0;
      state.mode = CODELENS;
      /* falls through */
    case CODELENS:
      while (state.have < state.nlen + state.ndist) {
        for (;;) {
          here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/
          here_bits = here >>> 24;
          here_op = (here >>> 16) & 0xff;
          here_val = here & 0xffff;

          if ((here_bits) <= bits) { break; }
          //--- PULLBYTE() ---//
          if (have === 0) { break inf_leave; }
          have--;
          hold += input[next++] << bits;
          bits += 8;
          //---//
        }
        if (here_val < 16) {
          //--- DROPBITS(here.bits) ---//
          hold >>>= here_bits;
          bits -= here_bits;
          //---//
          state.lens[state.have++] = here_val;
        }
        else {
          if (here_val === 16) {
            //=== NEEDBITS(here.bits + 2);
            n = here_bits + 2;
            while (bits < n) {
              if (have === 0) { break inf_leave; }
              have--;
              hold += input[next++] << bits;
              bits += 8;
            }
            //===//
            //--- DROPBITS(here.bits) ---//
            hold >>>= here_bits;
            bits -= here_bits;
            //---//
            if (state.have === 0) {
              strm.msg = 'invalid bit length repeat';
              state.mode = BAD;
              break;
            }
            len = state.lens[state.have - 1];
            copy = 3 + (hold & 0x03);//BITS(2);
            //--- DROPBITS(2) ---//
            hold >>>= 2;
            bits -= 2;
            //---//
          }
          else if (here_val === 17) {
            //=== NEEDBITS(here.bits + 3);
            n = here_bits + 3;
            while (bits < n) {
              if (have === 0) { break inf_leave; }
              have--;
              hold += input[next++] << bits;
              bits += 8;
            }
            //===//
            //--- DROPBITS(here.bits) ---//
            hold >>>= here_bits;
            bits -= here_bits;
            //---//
            len = 0;
            copy = 3 + (hold & 0x07);//BITS(3);
            //--- DROPBITS(3) ---//
            hold >>>= 3;
            bits -= 3;
            //---//
          }
          else {
            //=== NEEDBITS(here.bits + 7);
            n = here_bits + 7;
            while (bits < n) {
              if (have === 0) { break inf_leave; }
              have--;
              hold += input[next++] << bits;
              bits += 8;
            }
            //===//
            //--- DROPBITS(here.bits) ---//
            hold >>>= here_bits;
            bits -= here_bits;
            //---//
            len = 0;
            copy = 11 + (hold & 0x7f);//BITS(7);
            //--- DROPBITS(7) ---//
            hold >>>= 7;
            bits -= 7;
            //---//
          }
          if (state.have + copy > state.nlen + state.ndist) {
            strm.msg = 'invalid bit length repeat';
            state.mode = BAD;
            break;
          }
          while (copy--) {
            state.lens[state.have++] = len;
          }
        }
      }

      /* handle error breaks in while */
      if (state.mode === BAD) { break; }

      /* check for end-of-block code (better have one) */
      if (state.lens[256] === 0) {
        strm.msg = 'invalid code -- missing end-of-block';
        state.mode = BAD;
        break;
      }

      /* build code tables -- note: do not change the lenbits or distbits
         values here (9 and 6) without reading the comments in inftrees.h
         concerning the ENOUGH constants, which depend on those values */
      state.lenbits = 9;

      opts = { bits: state.lenbits };
      ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);
      // We have separate tables & no pointers. 2 commented lines below not needed.
      // state.next_index = opts.table_index;
      state.lenbits = opts.bits;
      // state.lencode = state.next;

      if (ret) {
        strm.msg = 'invalid literal/lengths set';
        state.mode = BAD;
        break;
      }

      state.distbits = 6;
      //state.distcode.copy(state.codes);
      // Switch to use dynamic table
      state.distcode = state.distdyn;
      opts = { bits: state.distbits };
      ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);
      // We have separate tables & no pointers. 2 commented lines below not needed.
      // state.next_index = opts.table_index;
      state.distbits = opts.bits;
      // state.distcode = state.next;

      if (ret) {
        strm.msg = 'invalid distances set';
        state.mode = BAD;
        break;
      }
      //Tracev((stderr, 'inflate:       codes ok\n'));
      state.mode = LEN_;
      if (flush === Z_TREES) { break inf_leave; }
      /* falls through */
    case LEN_:
      state.mode = LEN;
      /* falls through */
    case LEN:
      if (have >= 6 && left >= 258) {
        //--- RESTORE() ---
        strm.next_out = put;
        strm.avail_out = left;
        strm.next_in = next;
        strm.avail_in = have;
        state.hold = hold;
        state.bits = bits;
        //---
        inflate_fast(strm, _out);
        //--- LOAD() ---
        put = strm.next_out;
        output = strm.output;
        left = strm.avail_out;
        next = strm.next_in;
        input = strm.input;
        have = strm.avail_in;
        hold = state.hold;
        bits = state.bits;
        //---

        if (state.mode === TYPE) {
          state.back = -1;
        }
        break;
      }
      state.back = 0;
      for (;;) {
        here = state.lencode[hold & ((1 << state.lenbits) - 1)];  /*BITS(state.lenbits)*/
        here_bits = here >>> 24;
        here_op = (here >>> 16) & 0xff;
        here_val = here & 0xffff;

        if (here_bits <= bits) { break; }
        //--- PULLBYTE() ---//
        if (have === 0) { break inf_leave; }
        have--;
        hold += input[next++] << bits;
        bits += 8;
        //---//
      }
      if (here_op && (here_op & 0xf0) === 0) {
        last_bits = here_bits;
        last_op = here_op;
        last_val = here_val;
        for (;;) {
          here = state.lencode[last_val +
                  ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];
          here_bits = here >>> 24;
          here_op = (here >>> 16) & 0xff;
          here_val = here & 0xffff;

          if ((last_bits + here_bits) <= bits) { break; }
          //--- PULLBYTE() ---//
          if (have === 0) { break inf_leave; }
          have--;
          hold += input[next++] << bits;
          bits += 8;
          //---//
        }
        //--- DROPBITS(last.bits) ---//
        hold >>>= last_bits;
        bits -= last_bits;
        //---//
        state.back += last_bits;
      }
      //--- DROPBITS(here.bits) ---//
      hold >>>= here_bits;
      bits -= here_bits;
      //---//
      state.back += here_bits;
      state.length = here_val;
      if (here_op === 0) {
        //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
        //        "inflate:         literal '%c'\n" :
        //        "inflate:         literal 0x%02x\n", here.val));
        state.mode = LIT;
        break;
      }
      if (here_op & 32) {
        //Tracevv((stderr, "inflate:         end of block\n"));
        state.back = -1;
        state.mode = TYPE;
        break;
      }
      if (here_op & 64) {
        strm.msg = 'invalid literal/length code';
        state.mode = BAD;
        break;
      }
      state.extra = here_op & 15;
      state.mode = LENEXT;
      /* falls through */
    case LENEXT:
      if (state.extra) {
        //=== NEEDBITS(state.extra);
        n = state.extra;
        while (bits < n) {
          if (have === 0) { break inf_leave; }
          have--;
          hold += input[next++] << bits;
          bits += 8;
        }
        //===//
        state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;
        //--- DROPBITS(state.extra) ---//
        hold >>>= state.extra;
        bits -= state.extra;
        //---//
        state.back += state.extra;
      }
      //Tracevv((stderr, "inflate:         length %u\n", state.length));
      state.was = state.length;
      state.mode = DIST;
      /* falls through */
    case DIST:
      for (;;) {
        here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/
        here_bits = here >>> 24;
        here_op = (here >>> 16) & 0xff;
        here_val = here & 0xffff;

        if ((here_bits) <= bits) { break; }
        //--- PULLBYTE() ---//
        if (have === 0) { break inf_leave; }
        have--;
        hold += input[next++] << bits;
        bits += 8;
        //---//
      }
      if ((here_op & 0xf0) === 0) {
        last_bits = here_bits;
        last_op = here_op;
        last_val = here_val;
        for (;;) {
          here = state.distcode[last_val +
                  ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];
          here_bits = here >>> 24;
          here_op = (here >>> 16) & 0xff;
          here_val = here & 0xffff;

          if ((last_bits + here_bits) <= bits) { break; }
          //--- PULLBYTE() ---//
          if (have === 0) { break inf_leave; }
          have--;
          hold += input[next++] << bits;
          bits += 8;
          //---//
        }
        //--- DROPBITS(last.bits) ---//
        hold >>>= last_bits;
        bits -= last_bits;
        //---//
        state.back += last_bits;
      }
      //--- DROPBITS(here.bits) ---//
      hold >>>= here_bits;
      bits -= here_bits;
      //---//
      state.back += here_bits;
      if (here_op & 64) {
        strm.msg = 'invalid distance code';
        state.mode = BAD;
        break;
      }
      state.offset = here_val;
      state.extra = (here_op) & 15;
      state.mode = DISTEXT;
      /* falls through */
    case DISTEXT:
      if (state.extra) {
        //=== NEEDBITS(state.extra);
        n = state.extra;
        while (bits < n) {
          if (have === 0) { break inf_leave; }
          have--;
          hold += input[next++] << bits;
          bits += 8;
        }
        //===//
        state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;
        //--- DROPBITS(state.extra) ---//
        hold >>>= state.extra;
        bits -= state.extra;
        //---//
        state.back += state.extra;
      }
//#ifdef INFLATE_STRICT
      if (state.offset > state.dmax) {
        strm.msg = 'invalid distance too far back';
        state.mode = BAD;
        break;
      }
//#endif
      //Tracevv((stderr, "inflate:         distance %u\n", state.offset));
      state.mode = MATCH;
      /* falls through */
    case MATCH:
      if (left === 0) { break inf_leave; }
      copy = _out - left;
      if (state.offset > copy) {         /* copy from window */
        copy = state.offset - copy;
        if (copy > state.whave) {
          if (state.sane) {
            strm.msg = 'invalid distance too far back';
            state.mode = BAD;
            break;
          }
// (!) This block is disabled in zlib defailts,
// don't enable it for binary compatibility
//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR
//          Trace((stderr, "inflate.c too far\n"));
//          copy -= state.whave;
//          if (copy > state.length) { copy = state.length; }
//          if (copy > left) { copy = left; }
//          left -= copy;
//          state.length -= copy;
//          do {
//            output[put++] = 0;
//          } while (--copy);
//          if (state.length === 0) { state.mode = LEN; }
//          break;
//#endif
        }
        if (copy > state.wnext) {
          copy -= state.wnext;
          from = state.wsize - copy;
        }
        else {
          from = state.wnext - copy;
        }
        if (copy > state.length) { copy = state.length; }
        from_source = state.window;
      }
      else {                              /* copy from output */
        from_source = output;
        from = put - state.offset;
        copy = state.length;
      }
      if (copy > left) { copy = left; }
      left -= copy;
      state.length -= copy;
      do {
        output[put++] = from_source[from++];
      } while (--copy);
      if (state.length === 0) { state.mode = LEN; }
      break;
    case LIT:
      if (left === 0) { break inf_leave; }
      output[put++] = state.length;
      left--;
      state.mode = LEN;
      break;
    case CHECK:
      if (state.wrap) {
        //=== NEEDBITS(32);
        while (bits < 32) {
          if (have === 0) { break inf_leave; }
          have--;
          // Use '|' insdead of '+' to make sure that result is signed
          hold |= input[next++] << bits;
          bits += 8;
        }
        //===//
        _out -= left;
        strm.total_out += _out;
        state.total += _out;
        if (_out) {
          strm.adler = state.check =
              /*UPDATE(state.check, put - _out, _out);*/
              (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));

        }
        _out = left;
        // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too
        if ((state.flags ? hold : zswap32(hold)) !== state.check) {
          strm.msg = 'incorrect data check';
          state.mode = BAD;
          break;
        }
        //=== INITBITS();
        hold = 0;
        bits = 0;
        //===//
        //Tracev((stderr, "inflate:   check matches trailer\n"));
      }
      state.mode = LENGTH;
      /* falls through */
    case LENGTH:
      if (state.wrap && state.flags) {
        //=== NEEDBITS(32);
        while (bits < 32) {
          if (have === 0) { break inf_leave; }
          have--;
          hold += input[next++] << bits;
          bits += 8;
        }
        //===//
        if (hold !== (state.total & 0xffffffff)) {
          strm.msg = 'incorrect length check';
          state.mode = BAD;
          break;
        }
        //=== INITBITS();
        hold = 0;
        bits = 0;
        //===//
        //Tracev((stderr, "inflate:   length matches trailer\n"));
      }
      state.mode = DONE;
      /* falls through */
    case DONE:
      ret = Z_STREAM_END;
      break inf_leave;
    case BAD:
      ret = Z_DATA_ERROR;
      break inf_leave;
    case MEM:
      return Z_MEM_ERROR;
    case SYNC:
      /* falls through */
    default:
      return Z_STREAM_ERROR;
    }
  }

  // inf_leave <- here is real place for "goto inf_leave", emulated via "break inf_leave"

  /*
     Return from inflate(), updating the total counts and the check value.
     If there was no progress during the inflate() call, return a buffer
     error.  Call updatewindow() to create and/or update the window state.
     Note: a memory error from inflate() is non-recoverable.
   */

  //--- RESTORE() ---
  strm.next_out = put;
  strm.avail_out = left;
  strm.next_in = next;
  strm.avail_in = have;
  state.hold = hold;
  state.bits = bits;
  //---

  if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&
                      (state.mode < CHECK || flush !== Z_FINISH))) {
    if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) {
      state.mode = MEM;
      return Z_MEM_ERROR;
    }
  }
  _in -= strm.avail_in;
  _out -= strm.avail_out;
  strm.total_in += _in;
  strm.total_out += _out;
  state.total += _out;
  if (state.wrap && _out) {
    strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/
      (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));
  }
  strm.data_type = state.bits + (state.last ? 64 : 0) +
                    (state.mode === TYPE ? 128 : 0) +
                    (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);
  if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {
    ret = Z_BUF_ERROR;
  }
  return ret;
}

function inflateEnd(strm) {

  if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {
    return Z_STREAM_ERROR;
  }

  var state = strm.state;
  if (state.window) {
    state.window = null;
  }
  strm.state = null;
  return Z_OK;
}

function inflateGetHeader(strm, head) {
  var state;

  /* check state */
  if (!strm || !strm.state) { return Z_STREAM_ERROR; }
  state = strm.state;
  if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }

  /* save header structure */
  state.head = head;
  head.done = false;
  return Z_OK;
}

function inflateSetDictionary(strm, dictionary) {
  var dictLength = dictionary.length;

  var state;
  var dictid;
  var ret;

  /* check state */
  if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }
  state = strm.state;

  if (state.wrap !== 0 && state.mode !== DICT) {
    return Z_STREAM_ERROR;
  }

  /* check for correct dictionary identifier */
  if (state.mode === DICT) {
    dictid = 1; /* adler32(0, null, 0)*/
    /* dictid = adler32(dictid, dictionary, dictLength); */
    dictid = adler32(dictid, dictionary, dictLength, 0);
    if (dictid !== state.check) {
      return Z_DATA_ERROR;
    }
  }
  /* copy dictionary to window using updatewindow(), which will amend the
   existing dictionary if appropriate */
  ret = updatewindow(strm, dictionary, dictLength, dictLength);
  if (ret) {
    state.mode = MEM;
    return Z_MEM_ERROR;
  }
  state.havedict = 1;
  // Tracev((stderr, "inflate:   dictionary set\n"));
  return Z_OK;
}

exports.inflateReset = inflateReset;
exports.inflateReset2 = inflateReset2;
exports.inflateResetKeep = inflateResetKeep;
exports.inflateInit = inflateInit;
exports.inflateInit2 = inflateInit2;
exports.inflate = inflate;
exports.inflateEnd = inflateEnd;
exports.inflateGetHeader = inflateGetHeader;
exports.inflateSetDictionary = inflateSetDictionary;
exports.inflateInfo = 'pako inflate (from Nodeca project)';

/* Not implemented
exports.inflateCopy = inflateCopy;
exports.inflateGetDictionary = inflateGetDictionary;
exports.inflateMark = inflateMark;
exports.inflatePrime = inflatePrime;
exports.inflateSync = inflateSync;
exports.inflateSyncPoint = inflateSyncPoint;
exports.inflateUndermine = inflateUndermine;
*/

},{"../utils/common":41,"./adler32":43,"./crc32":45,"./inffast":48,"./inftrees":50}],50:[function(require,module,exports){
'use strict';

// (C) 1995-2013 Jean-loup Gailly and Mark Adler
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
//   claim that you wrote the original software. If you use this software
//   in a product, an acknowledgment in the product documentation would be
//   appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
//   misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.

var utils = require('../utils/common');

var MAXBITS = 15;
var ENOUGH_LENS = 852;
var ENOUGH_DISTS = 592;
//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);

var CODES = 0;
var LENS = 1;
var DISTS = 2;

var lbase = [ /* Length codes 257..285 base */
  3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
  35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0
];

var lext = [ /* Length codes 257..285 extra */
  16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
  19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78
];

var dbase = [ /* Distance codes 0..29 base */
  1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
  257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
  8193, 12289, 16385, 24577, 0, 0
];

var dext = [ /* Distance codes 0..29 extra */
  16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,
  23, 23, 24, 24, 25, 25, 26, 26, 27, 27,
  28, 28, 29, 29, 64, 64
];

module.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)
{
  var bits = opts.bits;
      //here = opts.here; /* table entry for duplication */

  var len = 0;               /* a code's length in bits */
  var sym = 0;               /* index of code symbols */
  var min = 0, max = 0;          /* minimum and maximum code lengths */
  var root = 0;              /* number of index bits for root table */
  var curr = 0;              /* number of index bits for current table */
  var drop = 0;              /* code bits to drop for sub-table */
  var left = 0;                   /* number of prefix codes available */
  var used = 0;              /* code entries in table used */
  var huff = 0;              /* Huffman code */
  var incr;              /* for incrementing code, index */
  var fill;              /* index for replicating entries */
  var low;               /* low bits for current root entry */
  var mask;              /* mask for low root bits */
  var next;             /* next available space in table */
  var base = null;     /* base value table to use */
  var base_index = 0;
//  var shoextra;    /* extra bits table to use */
  var end;                    /* use base and extra for symbol > end */
  var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];    /* number of codes of each length */
  var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1];     /* offsets in table for each length */
  var extra = null;
  var extra_index = 0;

  var here_bits, here_op, here_val;

  /*
   Process a set of code lengths to create a canonical Huffman code.  The
   code lengths are lens[0..codes-1].  Each length corresponds to the
   symbols 0..codes-1.  The Huffman code is generated by first sorting the
   symbols by length from short to long, and retaining the symbol order
   for codes with equal lengths.  Then the code starts with all zero bits
   for the first code of the shortest length, and the codes are integer
   increments for the same length, and zeros are appended as the length
   increases.  For the deflate format, these bits are stored backwards
   from their more natural integer increment ordering, and so when the
   decoding tables are built in the large loop below, the integer codes
   are incremented backwards.

   This routine assumes, but does not check, that all of the entries in
   lens[] are in the range 0..MAXBITS.  The caller must assure this.
   1..MAXBITS is interpreted as that code length.  zero means that that
   symbol does not occur in this code.

   The codes are sorted by computing a count of codes for each length,
   creating from that a table of starting indices for each length in the
   sorted table, and then entering the symbols in order in the sorted
   table.  The sorted table is work[], with that space being provided by
   the caller.

   The length counts are used for other purposes as well, i.e. finding
   the minimum and maximum length codes, determining if there are any
   codes at all, checking for a valid set of lengths, and looking ahead
   at length counts to determine sub-table sizes when building the
   decoding tables.
   */

  /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */
  for (len = 0; len <= MAXBITS; len++) {
    count[len] = 0;
  }
  for (sym = 0; sym < codes; sym++) {
    count[lens[lens_index + sym]]++;
  }

  /* bound code lengths, force root to be within code lengths */
  root = bits;
  for (max = MAXBITS; max >= 1; max--) {
    if (count[max] !== 0) { break; }
  }
  if (root > max) {
    root = max;
  }
  if (max === 0) {                     /* no symbols to code at all */
    //table.op[opts.table_index] = 64;  //here.op = (var char)64;    /* invalid code marker */
    //table.bits[opts.table_index] = 1;   //here.bits = (var char)1;
    //table.val[opts.table_index++] = 0;   //here.val = (var short)0;
    table[table_index++] = (1 << 24) | (64 << 16) | 0;


    //table.op[opts.table_index] = 64;
    //table.bits[opts.table_index] = 1;
    //table.val[opts.table_index++] = 0;
    table[table_index++] = (1 << 24) | (64 << 16) | 0;

    opts.bits = 1;
    return 0;     /* no symbols, but wait for decoding to report error */
  }
  for (min = 1; min < max; min++) {
    if (count[min] !== 0) { break; }
  }
  if (root < min) {
    root = min;
  }

  /* check for an over-subscribed or incomplete set of lengths */
  left = 1;
  for (len = 1; len <= MAXBITS; len++) {
    left <<= 1;
    left -= count[len];
    if (left < 0) {
      return -1;
    }        /* over-subscribed */
  }
  if (left > 0 && (type === CODES || max !== 1)) {
    return -1;                      /* incomplete set */
  }

  /* generate offsets into symbol table for each length for sorting */
  offs[1] = 0;
  for (len = 1; len < MAXBITS; len++) {
    offs[len + 1] = offs[len] + count[len];
  }

  /* sort symbols by length, by symbol order within each length */
  for (sym = 0; sym < codes; sym++) {
    if (lens[lens_index + sym] !== 0) {
      work[offs[lens[lens_index + sym]]++] = sym;
    }
  }

  /*
   Create and fill in decoding tables.  In this loop, the table being
   filled is at next and has curr index bits.  The code being used is huff
   with length len.  That code is converted to an index by dropping drop
   bits off of the bottom.  For codes where len is less than drop + curr,
   those top drop + curr - len bits are incremented through all values to
   fill the table with replicated entries.

   root is the number of index bits for the root table.  When len exceeds
   root, sub-tables are created pointed to by the root entry with an index
   of the low root bits of huff.  This is saved in low to check for when a
   new sub-table should be started.  drop is zero when the root table is
   being filled, and drop is root when sub-tables are being filled.

   When a new sub-table is needed, it is necessary to look ahead in the
   code lengths to determine what size sub-table is needed.  The length
   counts are used for this, and so count[] is decremented as codes are
   entered in the tables.

   used keeps track of how many table entries have been allocated from the
   provided *table space.  It is checked for LENS and DIST tables against
   the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in
   the initial root table size constants.  See the comments in inftrees.h
   for more information.

   sym increments through all symbols, and the loop terminates when
   all codes of length max, i.e. all codes, have been processed.  This
   routine permits incomplete codes, so another loop after this one fills
   in the rest of the decoding tables with invalid code markers.
   */

  /* set up for code type */
  // poor man optimization - use if-else instead of switch,
  // to avoid deopts in old v8
  if (type === CODES) {
    base = extra = work;    /* dummy value--not used */
    end = 19;

  } else if (type === LENS) {
    base = lbase;
    base_index -= 257;
    extra = lext;
    extra_index -= 257;
    end = 256;

  } else {                    /* DISTS */
    base = dbase;
    extra = dext;
    end = -1;
  }

  /* initialize opts for loop */
  huff = 0;                   /* starting code */
  sym = 0;                    /* starting code symbol */
  len = min;                  /* starting code length */
  next = table_index;              /* current table to fill in */
  curr = root;                /* current table index bits */
  drop = 0;                   /* current bits to drop from code for index */
  low = -1;                   /* trigger new sub-table when len > root */
  used = 1 << root;          /* use root table entries */
  mask = used - 1;            /* mask for comparing low */

  /* check available table space */
  if ((type === LENS && used > ENOUGH_LENS) ||
    (type === DISTS && used > ENOUGH_DISTS)) {
    return 1;
  }

  /* process all codes and make table entries */
  for (;;) {
    /* create table entry */
    here_bits = len - drop;
    if (work[sym] < end) {
      here_op = 0;
      here_val = work[sym];
    }
    else if (work[sym] > end) {
      here_op = extra[extra_index + work[sym]];
      here_val = base[base_index + work[sym]];
    }
    else {
      here_op = 32 + 64;         /* end of block */
      here_val = 0;
    }

    /* replicate for those indices with low len bits equal to huff */
    incr = 1 << (len - drop);
    fill = 1 << curr;
    min = fill;                 /* save offset to next table */
    do {
      fill -= incr;
      table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;
    } while (fill !== 0);

    /* backwards increment the len-bit code huff */
    incr = 1 << (len - 1);
    while (huff & incr) {
      incr >>= 1;
    }
    if (incr !== 0) {
      huff &= incr - 1;
      huff += incr;
    } else {
      huff = 0;
    }

    /* go to next symbol, update count, len */
    sym++;
    if (--count[len] === 0) {
      if (len === max) { break; }
      len = lens[lens_index + work[sym]];
    }

    /* create new sub-table if needed */
    if (len > root && (huff & mask) !== low) {
      /* if first time, transition to sub-tables */
      if (drop === 0) {
        drop = root;
      }

      /* increment past last table */
      next += min;            /* here min is 1 << curr */

      /* determine length of next table */
      curr = len - drop;
      left = 1 << curr;
      while (curr + drop < max) {
        left -= count[curr + drop];
        if (left <= 0) { break; }
        curr++;
        left <<= 1;
      }

      /* check for enough space */
      used += 1 << curr;
      if ((type === LENS && used > ENOUGH_LENS) ||
        (type === DISTS && used > ENOUGH_DISTS)) {
        return 1;
      }

      /* point entry in root table to sub-table */
      low = huff & mask;
      /*table.op[low] = curr;
      table.bits[low] = root;
      table.val[low] = next - opts.table_index;*/
      table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;
    }
  }

  /* fill in remaining table entry if code is incomplete (guaranteed to have
   at most one remaining entry, since if the code is incomplete, the
   maximum code length that was allowed to get this far is one bit) */
  if (huff !== 0) {
    //table.op[next + huff] = 64;            /* invalid code marker */
    //table.bits[next + huff] = len - drop;
    //table.val[next + huff] = 0;
    table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;
  }

  /* set return parameters */
  //opts.table_index += used;
  opts.bits = root;
  return 0;
};

},{"../utils/common":41}],51:[function(require,module,exports){
'use strict';

// (C) 1995-2013 Jean-loup Gailly and Mark Adler
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
//   claim that you wrote the original software. If you use this software
//   in a product, an acknowledgment in the product documentation would be
//   appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
//   misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.

module.exports = {
  2:      'need dictionary',     /* Z_NEED_DICT       2  */
  1:      'stream end',          /* Z_STREAM_END      1  */
  0:      '',                    /* Z_OK              0  */
  '-1':   'file error',          /* Z_ERRNO         (-1) */
  '-2':   'stream error',        /* Z_STREAM_ERROR  (-2) */
  '-3':   'data error',          /* Z_DATA_ERROR    (-3) */
  '-4':   'insufficient memory', /* Z_MEM_ERROR     (-4) */
  '-5':   'buffer error',        /* Z_BUF_ERROR     (-5) */
  '-6':   'incompatible version' /* Z_VERSION_ERROR (-6) */
};

},{}],52:[function(require,module,exports){
'use strict';

// (C) 1995-2013 Jean-loup Gailly and Mark Adler
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
//   claim that you wrote the original software. If you use this software
//   in a product, an acknowledgment in the product documentation would be
//   appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
//   misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.

var utils = require('../utils/common');

/* Public constants ==========================================================*/
/* ===========================================================================*/


//var Z_FILTERED          = 1;
//var Z_HUFFMAN_ONLY      = 2;
//var Z_RLE               = 3;
var Z_FIXED               = 4;
//var Z_DEFAULT_STRATEGY  = 0;

/* Possible values of the data_type field (though see inflate()) */
var Z_BINARY              = 0;
var Z_TEXT                = 1;
//var Z_ASCII             = 1; // = Z_TEXT
var Z_UNKNOWN             = 2;

/*============================================================================*/


function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }

// From zutil.h

var STORED_BLOCK = 0;
var STATIC_TREES = 1;
var DYN_TREES    = 2;
/* The three kinds of block type */

var MIN_MATCH    = 3;
var MAX_MATCH    = 258;
/* The minimum and maximum match lengths */

// From deflate.h
/* ===========================================================================
 * Internal compression state.
 */

var LENGTH_CODES  = 29;
/* number of length codes, not counting the special END_BLOCK code */

var LITERALS      = 256;
/* number of literal bytes 0..255 */

var L_CODES       = LITERALS + 1 + LENGTH_CODES;
/* number of Literal or Length codes, including the END_BLOCK code */

var D_CODES       = 30;
/* number of distance codes */

var BL_CODES      = 19;
/* number of codes used to transfer the bit lengths */

var HEAP_SIZE     = 2 * L_CODES + 1;
/* maximum heap size */

var MAX_BITS      = 15;
/* All codes must not exceed MAX_BITS bits */

var Buf_size      = 16;
/* size of bit buffer in bi_buf */


/* ===========================================================================
 * Constants
 */

var MAX_BL_BITS = 7;
/* Bit length codes must not exceed MAX_BL_BITS bits */

var END_BLOCK   = 256;
/* end of block literal code */

var REP_3_6     = 16;
/* repeat previous bit length 3-6 times (2 bits of repeat count) */

var REPZ_3_10   = 17;
/* repeat a zero length 3-10 times  (3 bits of repeat count) */

var REPZ_11_138 = 18;
/* repeat a zero length 11-138 times  (7 bits of repeat count) */

/* eslint-disable comma-spacing,array-bracket-spacing */
var extra_lbits =   /* extra bits for each length code */
  [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];

var extra_dbits =   /* extra bits for each distance code */
  [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];

var extra_blbits =  /* extra bits for each bit length code */
  [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];

var bl_order =
  [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];
/* eslint-enable comma-spacing,array-bracket-spacing */

/* The lengths of the bit length codes are sent in order of decreasing
 * probability, to avoid transmitting the lengths for unused bit length codes.
 */

/* ===========================================================================
 * Local data. These are initialized only once.
 */

// We pre-fill arrays with 0 to avoid uninitialized gaps

var DIST_CODE_LEN = 512; /* see definition of array dist_code below */

// !!!! Use flat array insdead of structure, Freq = i*2, Len = i*2+1
var static_ltree  = new Array((L_CODES + 2) * 2);
zero(static_ltree);
/* The static literal tree. Since the bit lengths are imposed, there is no
 * need for the L_CODES extra codes used during heap construction. However
 * The codes 286 and 287 are needed to build a canonical tree (see _tr_init
 * below).
 */

var static_dtree  = new Array(D_CODES * 2);
zero(static_dtree);
/* The static distance tree. (Actually a trivial tree since all codes use
 * 5 bits.)
 */

var _dist_code    = new Array(DIST_CODE_LEN);
zero(_dist_code);
/* Distance codes. The first 256 values correspond to the distances
 * 3 .. 258, the last 256 values correspond to the top 8 bits of
 * the 15 bit distances.
 */

var _length_code  = new Array(MAX_MATCH - MIN_MATCH + 1);
zero(_length_code);
/* length code for each normalized match length (0 == MIN_MATCH) */

var base_length   = new Array(LENGTH_CODES);
zero(base_length);
/* First normalized length for each code (0 = MIN_MATCH) */

var base_dist     = new Array(D_CODES);
zero(base_dist);
/* First normalized distance for each code (0 = distance of 1) */


function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {

  this.static_tree  = static_tree;  /* static tree or NULL */
  this.extra_bits   = extra_bits;   /* extra bits for each code or NULL */
  this.extra_base   = extra_base;   /* base index for extra_bits */
  this.elems        = elems;        /* max number of elements in the tree */
  this.max_length   = max_length;   /* max bit length for the codes */

  // show if `static_tree` has data or dummy - needed for monomorphic objects
  this.has_stree    = static_tree && static_tree.length;
}


var static_l_desc;
var static_d_desc;
var static_bl_desc;


function TreeDesc(dyn_tree, stat_desc) {
  this.dyn_tree = dyn_tree;     /* the dynamic tree */
  this.max_code = 0;            /* largest code with non zero frequency */
  this.stat_desc = stat_desc;   /* the corresponding static tree */
}



function d_code(dist) {
  return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];
}


/* ===========================================================================
 * Output a short LSB first on the stream.
 * IN assertion: there is enough room in pendingBuf.
 */
function put_short(s, w) {
//    put_byte(s, (uch)((w) & 0xff));
//    put_byte(s, (uch)((ush)(w) >> 8));
  s.pending_buf[s.pending++] = (w) & 0xff;
  s.pending_buf[s.pending++] = (w >>> 8) & 0xff;
}


/* ===========================================================================
 * Send a value on a given number of bits.
 * IN assertion: length <= 16 and value fits in length bits.
 */
function send_bits(s, value, length) {
  if (s.bi_valid > (Buf_size - length)) {
    s.bi_buf |= (value << s.bi_valid) & 0xffff;
    put_short(s, s.bi_buf);
    s.bi_buf = value >> (Buf_size - s.bi_valid);
    s.bi_valid += length - Buf_size;
  } else {
    s.bi_buf |= (value << s.bi_valid) & 0xffff;
    s.bi_valid += length;
  }
}


function send_code(s, c, tree) {
  send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);
}


/* ===========================================================================
 * Reverse the first len bits of a code, using straightforward code (a faster
 * method would use a table)
 * IN assertion: 1 <= len <= 15
 */
function bi_reverse(code, len) {
  var res = 0;
  do {
    res |= code & 1;
    code >>>= 1;
    res <<= 1;
  } while (--len > 0);
  return res >>> 1;
}


/* ===========================================================================
 * Flush the bit buffer, keeping at most 7 bits in it.
 */
function bi_flush(s) {
  if (s.bi_valid === 16) {
    put_short(s, s.bi_buf);
    s.bi_buf = 0;
    s.bi_valid = 0;

  } else if (s.bi_valid >= 8) {
    s.pending_buf[s.pending++] = s.bi_buf & 0xff;
    s.bi_buf >>= 8;
    s.bi_valid -= 8;
  }
}


/* ===========================================================================
 * Compute the optimal bit lengths for a tree and update the total bit length
 * for the current block.
 * IN assertion: the fields freq and dad are set, heap[heap_max] and
 *    above are the tree nodes sorted by increasing frequency.
 * OUT assertions: the field len is set to the optimal bit length, the
 *     array bl_count contains the frequencies for each bit length.
 *     The length opt_len is updated; static_len is also updated if stree is
 *     not null.
 */
function gen_bitlen(s, desc)
//    deflate_state *s;
//    tree_desc *desc;    /* the tree descriptor */
{
  var tree            = desc.dyn_tree;
  var max_code        = desc.max_code;
  var stree           = desc.stat_desc.static_tree;
  var has_stree       = desc.stat_desc.has_stree;
  var extra           = desc.stat_desc.extra_bits;
  var base            = desc.stat_desc.extra_base;
  var max_length      = desc.stat_desc.max_length;
  var h;              /* heap index */
  var n, m;           /* iterate over the tree elements */
  var bits;           /* bit length */
  var xbits;          /* extra bits */
  var f;              /* frequency */
  var overflow = 0;   /* number of elements with bit length too large */

  for (bits = 0; bits <= MAX_BITS; bits++) {
    s.bl_count[bits] = 0;
  }

  /* In a first pass, compute the optimal bit lengths (which may
   * overflow in the case of the bit length tree).
   */
  tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */

  for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {
    n = s.heap[h];
    bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;
    if (bits > max_length) {
      bits = max_length;
      overflow++;
    }
    tree[n * 2 + 1]/*.Len*/ = bits;
    /* We overwrite tree[n].Dad which is no longer needed */

    if (n > max_code) { continue; } /* not a leaf node */

    s.bl_count[bits]++;
    xbits = 0;
    if (n >= base) {
      xbits = extra[n - base];
    }
    f = tree[n * 2]/*.Freq*/;
    s.opt_len += f * (bits + xbits);
    if (has_stree) {
      s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);
    }
  }
  if (overflow === 0) { return; }

  // Trace((stderr,"\nbit length overflow\n"));
  /* This happens for example on obj2 and pic of the Calgary corpus */

  /* Find the first bit length which could increase: */
  do {
    bits = max_length - 1;
    while (s.bl_count[bits] === 0) { bits--; }
    s.bl_count[bits]--;      /* move one leaf down the tree */
    s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */
    s.bl_count[max_length]--;
    /* The brother of the overflow item also moves one step up,
     * but this does not affect bl_count[max_length]
     */
    overflow -= 2;
  } while (overflow > 0);

  /* Now recompute all bit lengths, scanning in increasing frequency.
   * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all
   * lengths instead of fixing only the wrong ones. This idea is taken
   * from 'ar' written by Haruhiko Okumura.)
   */
  for (bits = max_length; bits !== 0; bits--) {
    n = s.bl_count[bits];
    while (n !== 0) {
      m = s.heap[--h];
      if (m > max_code) { continue; }
      if (tree[m * 2 + 1]/*.Len*/ !== bits) {
        // Trace((stderr,"code %d bits %d->%d\n", m, tree[m].Len, bits));
        s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;
        tree[m * 2 + 1]/*.Len*/ = bits;
      }
      n--;
    }
  }
}


/* ===========================================================================
 * Generate the codes for a given tree and bit counts (which need not be
 * optimal).
 * IN assertion: the array bl_count contains the bit length statistics for
 * the given tree and the field len is set for all tree elements.
 * OUT assertion: the field code is set for all tree elements of non
 *     zero code length.
 */
function gen_codes(tree, max_code, bl_count)
//    ct_data *tree;             /* the tree to decorate */
//    int max_code;              /* largest code with non zero frequency */
//    ushf *bl_count;            /* number of codes at each bit length */
{
  var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */
  var code = 0;              /* running code value */
  var bits;                  /* bit index */
  var n;                     /* code index */

  /* The distribution counts are first used to generate the code values
   * without bit reversal.
   */
  for (bits = 1; bits <= MAX_BITS; bits++) {
    next_code[bits] = code = (code + bl_count[bits - 1]) << 1;
  }
  /* Check that the bit counts in bl_count are consistent. The last code
   * must be all ones.
   */
  //Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,
  //        "inconsistent bit counts");
  //Tracev((stderr,"\ngen_codes: max_code %d ", max_code));

  for (n = 0;  n <= max_code; n++) {
    var len = tree[n * 2 + 1]/*.Len*/;
    if (len === 0) { continue; }
    /* Now reverse the bits */
    tree[n * 2]/*.Code*/ = bi_reverse(next_code[len]++, len);

    //Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ",
    //     n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));
  }
}


/* ===========================================================================
 * Initialize the various 'constant' tables.
 */
function tr_static_init() {
  var n;        /* iterates over tree elements */
  var bits;     /* bit counter */
  var length;   /* length value */
  var code;     /* code value */
  var dist;     /* distance index */
  var bl_count = new Array(MAX_BITS + 1);
  /* number of codes at each bit length for an optimal tree */

  // do check in _tr_init()
  //if (static_init_done) return;

  /* For some embedded targets, global variables are not initialized: */
/*#ifdef NO_INIT_GLOBAL_POINTERS
  static_l_desc.static_tree = static_ltree;
  static_l_desc.extra_bits = extra_lbits;
  static_d_desc.static_tree = static_dtree;
  static_d_desc.extra_bits = extra_dbits;
  static_bl_desc.extra_bits = extra_blbits;
#endif*/

  /* Initialize the mapping length (0..255) -> length code (0..28) */
  length = 0;
  for (code = 0; code < LENGTH_CODES - 1; code++) {
    base_length[code] = length;
    for (n = 0; n < (1 << extra_lbits[code]); n++) {
      _length_code[length++] = code;
    }
  }
  //Assert (length == 256, "tr_static_init: length != 256");
  /* Note that the length 255 (match length 258) can be represented
   * in two different ways: code 284 + 5 bits or code 285, so we
   * overwrite length_code[255] to use the best encoding:
   */
  _length_code[length - 1] = code;

  /* Initialize the mapping dist (0..32K) -> dist code (0..29) */
  dist = 0;
  for (code = 0; code < 16; code++) {
    base_dist[code] = dist;
    for (n = 0; n < (1 << extra_dbits[code]); n++) {
      _dist_code[dist++] = code;
    }
  }
  //Assert (dist == 256, "tr_static_init: dist != 256");
  dist >>= 7; /* from now on, all distances are divided by 128 */
  for (; code < D_CODES; code++) {
    base_dist[code] = dist << 7;
    for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {
      _dist_code[256 + dist++] = code;
    }
  }
  //Assert (dist == 256, "tr_static_init: 256+dist != 512");

  /* Construct the codes of the static literal tree */
  for (bits = 0; bits <= MAX_BITS; bits++) {
    bl_count[bits] = 0;
  }

  n = 0;
  while (n <= 143) {
    static_ltree[n * 2 + 1]/*.Len*/ = 8;
    n++;
    bl_count[8]++;
  }
  while (n <= 255) {
    static_ltree[n * 2 + 1]/*.Len*/ = 9;
    n++;
    bl_count[9]++;
  }
  while (n <= 279) {
    static_ltree[n * 2 + 1]/*.Len*/ = 7;
    n++;
    bl_count[7]++;
  }
  while (n <= 287) {
    static_ltree[n * 2 + 1]/*.Len*/ = 8;
    n++;
    bl_count[8]++;
  }
  /* Codes 286 and 287 do not exist, but we must include them in the
   * tree construction to get a canonical Huffman tree (longest code
   * all ones)
   */
  gen_codes(static_ltree, L_CODES + 1, bl_count);

  /* The static distance tree is trivial: */
  for (n = 0; n < D_CODES; n++) {
    static_dtree[n * 2 + 1]/*.Len*/ = 5;
    static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);
  }

  // Now data ready and we can init static trees
  static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);
  static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0,          D_CODES, MAX_BITS);
  static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0,         BL_CODES, MAX_BL_BITS);

  //static_init_done = true;
}


/* ===========================================================================
 * Initialize a new block.
 */
function init_block(s) {
  var n; /* iterates over tree elements */

  /* Initialize the trees. */
  for (n = 0; n < L_CODES;  n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }
  for (n = 0; n < D_CODES;  n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }
  for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }

  s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;
  s.opt_len = s.static_len = 0;
  s.last_lit = s.matches = 0;
}


/* ===========================================================================
 * Flush the bit buffer and align the output on a byte boundary
 */
function bi_windup(s)
{
  if (s.bi_valid > 8) {
    put_short(s, s.bi_buf);
  } else if (s.bi_valid > 0) {
    //put_byte(s, (Byte)s->bi_buf);
    s.pending_buf[s.pending++] = s.bi_buf;
  }
  s.bi_buf = 0;
  s.bi_valid = 0;
}

/* ===========================================================================
 * Copy a stored block, storing first the length and its
 * one's complement if requested.
 */
function copy_block(s, buf, len, header)
//DeflateState *s;
//charf    *buf;    /* the input data */
//unsigned len;     /* its length */
//int      header;  /* true if block header must be written */
{
  bi_windup(s);        /* align on byte boundary */

  if (header) {
    put_short(s, len);
    put_short(s, ~len);
  }
//  while (len--) {
//    put_byte(s, *buf++);
//  }
  utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);
  s.pending += len;
}

/* ===========================================================================
 * Compares to subtrees, using the tree depth as tie breaker when
 * the subtrees have equal frequency. This minimizes the worst case length.
 */
function smaller(tree, n, m, depth) {
  var _n2 = n * 2;
  var _m2 = m * 2;
  return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||
         (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));
}

/* ===========================================================================
 * Restore the heap property by moving down the tree starting at node k,
 * exchanging a node with the smallest of its two sons if necessary, stopping
 * when the heap property is re-established (each father smaller than its
 * two sons).
 */
function pqdownheap(s, tree, k)
//    deflate_state *s;
//    ct_data *tree;  /* the tree to restore */
//    int k;               /* node to move down */
{
  var v = s.heap[k];
  var j = k << 1;  /* left son of k */
  while (j <= s.heap_len) {
    /* Set j to the smallest of the two sons: */
    if (j < s.heap_len &&
      smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {
      j++;
    }
    /* Exit if v is smaller than both sons */
    if (smaller(tree, v, s.heap[j], s.depth)) { break; }

    /* Exchange v with the smallest son */
    s.heap[k] = s.heap[j];
    k = j;

    /* And continue down the tree, setting j to the left son of k */
    j <<= 1;
  }
  s.heap[k] = v;
}


// inlined manually
// var SMALLEST = 1;

/* ===========================================================================
 * Send the block data compressed using the given Huffman trees
 */
function compress_block(s, ltree, dtree)
//    deflate_state *s;
//    const ct_data *ltree; /* literal tree */
//    const ct_data *dtree; /* distance tree */
{
  var dist;           /* distance of matched string */
  var lc;             /* match length or unmatched char (if dist == 0) */
  var lx = 0;         /* running index in l_buf */
  var code;           /* the code to send */
  var extra;          /* number of extra bits to send */

  if (s.last_lit !== 0) {
    do {
      dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);
      lc = s.pending_buf[s.l_buf + lx];
      lx++;

      if (dist === 0) {
        send_code(s, lc, ltree); /* send a literal byte */
        //Tracecv(isgraph(lc), (stderr," '%c' ", lc));
      } else {
        /* Here, lc is the match length - MIN_MATCH */
        code = _length_code[lc];
        send_code(s, code + LITERALS + 1, ltree); /* send the length code */
        extra = extra_lbits[code];
        if (extra !== 0) {
          lc -= base_length[code];
          send_bits(s, lc, extra);       /* send the extra length bits */
        }
        dist--; /* dist is now the match distance - 1 */
        code = d_code(dist);
        //Assert (code < D_CODES, "bad d_code");

        send_code(s, code, dtree);       /* send the distance code */
        extra = extra_dbits[code];
        if (extra !== 0) {
          dist -= base_dist[code];
          send_bits(s, dist, extra);   /* send the extra distance bits */
        }
      } /* literal or match pair ? */

      /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
      //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,
      //       "pendingBuf overflow");

    } while (lx < s.last_lit);
  }

  send_code(s, END_BLOCK, ltree);
}


/* ===========================================================================
 * Construct one Huffman tree and assigns the code bit strings and lengths.
 * Update the total bit length for the current block.
 * IN assertion: the field freq is set for all tree elements.
 * OUT assertions: the fields len and code are set to the optimal bit length
 *     and corresponding code. The length opt_len is updated; static_len is
 *     also updated if stree is not null. The field max_code is set.
 */
function build_tree(s, desc)
//    deflate_state *s;
//    tree_desc *desc; /* the tree descriptor */
{
  var tree     = desc.dyn_tree;
  var stree    = desc.stat_desc.static_tree;
  var has_stree = desc.stat_desc.has_stree;
  var elems    = desc.stat_desc.elems;
  var n, m;          /* iterate over heap elements */
  var max_code = -1; /* largest code with non zero frequency */
  var node;          /* new node being created */

  /* Construct the initial heap, with least frequent element in
   * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].
   * heap[0] is not used.
   */
  s.heap_len = 0;
  s.heap_max = HEAP_SIZE;

  for (n = 0; n < elems; n++) {
    if (tree[n * 2]/*.Freq*/ !== 0) {
      s.heap[++s.heap_len] = max_code = n;
      s.depth[n] = 0;

    } else {
      tree[n * 2 + 1]/*.Len*/ = 0;
    }
  }

  /* The pkzip format requires that at least one distance code exists,
   * and that at least one bit should be sent even if there is only one
   * possible code. So to avoid special checks later on we force at least
   * two codes of non zero frequency.
   */
  while (s.heap_len < 2) {
    node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);
    tree[node * 2]/*.Freq*/ = 1;
    s.depth[node] = 0;
    s.opt_len--;

    if (has_stree) {
      s.static_len -= stree[node * 2 + 1]/*.Len*/;
    }
    /* node is 0 or 1 so it does not have extra bits */
  }
  desc.max_code = max_code;

  /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,
   * establish sub-heaps of increasing lengths:
   */
  for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }

  /* Construct the Huffman tree by repeatedly combining the least two
   * frequent nodes.
   */
  node = elems;              /* next internal node of the tree */
  do {
    //pqremove(s, tree, n);  /* n = node of least frequency */
    /*** pqremove ***/
    n = s.heap[1/*SMALLEST*/];
    s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];
    pqdownheap(s, tree, 1/*SMALLEST*/);
    /***/

    m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */

    s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */
    s.heap[--s.heap_max] = m;

    /* Create a new node father of n and m */
    tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;
    s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;
    tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;

    /* and insert the new node in the heap */
    s.heap[1/*SMALLEST*/] = node++;
    pqdownheap(s, tree, 1/*SMALLEST*/);

  } while (s.heap_len >= 2);

  s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];

  /* At this point, the fields freq and dad are set. We can now
   * generate the bit lengths.
   */
  gen_bitlen(s, desc);

  /* The field len is now set, we can generate the bit codes */
  gen_codes(tree, max_code, s.bl_count);
}


/* ===========================================================================
 * Scan a literal or distance tree to determine the frequencies of the codes
 * in the bit length tree.
 */
function scan_tree(s, tree, max_code)
//    deflate_state *s;
//    ct_data *tree;   /* the tree to be scanned */
//    int max_code;    /* and its largest code of non zero frequency */
{
  var n;                     /* iterates over all tree elements */
  var prevlen = -1;          /* last emitted length */
  var curlen;                /* length of current code */

  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */

  var count = 0;             /* repeat count of the current code */
  var max_count = 7;         /* max repeat count */
  var min_count = 4;         /* min repeat count */

  if (nextlen === 0) {
    max_count = 138;
    min_count = 3;
  }
  tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */

  for (n = 0; n <= max_code; n++) {
    curlen = nextlen;
    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;

    if (++count < max_count && curlen === nextlen) {
      continue;

    } else if (count < min_count) {
      s.bl_tree[curlen * 2]/*.Freq*/ += count;

    } else if (curlen !== 0) {

      if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }
      s.bl_tree[REP_3_6 * 2]/*.Freq*/++;

    } else if (count <= 10) {
      s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;

    } else {
      s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;
    }

    count = 0;
    prevlen = curlen;

    if (nextlen === 0) {
      max_count = 138;
      min_count = 3;

    } else if (curlen === nextlen) {
      max_count = 6;
      min_count = 3;

    } else {
      max_count = 7;
      min_count = 4;
    }
  }
}


/* ===========================================================================
 * Send a literal or distance tree in compressed form, using the codes in
 * bl_tree.
 */
function send_tree(s, tree, max_code)
//    deflate_state *s;
//    ct_data *tree; /* the tree to be scanned */
//    int max_code;       /* and its largest code of non zero frequency */
{
  var n;                     /* iterates over all tree elements */
  var prevlen = -1;          /* last emitted length */
  var curlen;                /* length of current code */

  var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */

  var count = 0;             /* repeat count of the current code */
  var max_count = 7;         /* max repeat count */
  var min_count = 4;         /* min repeat count */

  /* tree[max_code+1].Len = -1; */  /* guard already set */
  if (nextlen === 0) {
    max_count = 138;
    min_count = 3;
  }

  for (n = 0; n <= max_code; n++) {
    curlen = nextlen;
    nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;

    if (++count < max_count && curlen === nextlen) {
      continue;

    } else if (count < min_count) {
      do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);

    } else if (curlen !== 0) {
      if (curlen !== prevlen) {
        send_code(s, curlen, s.bl_tree);
        count--;
      }
      //Assert(count >= 3 && count <= 6, " 3_6?");
      send_code(s, REP_3_6, s.bl_tree);
      send_bits(s, count - 3, 2);

    } else if (count <= 10) {
      send_code(s, REPZ_3_10, s.bl_tree);
      send_bits(s, count - 3, 3);

    } else {
      send_code(s, REPZ_11_138, s.bl_tree);
      send_bits(s, count - 11, 7);
    }

    count = 0;
    prevlen = curlen;
    if (nextlen === 0) {
      max_count = 138;
      min_count = 3;

    } else if (curlen === nextlen) {
      max_count = 6;
      min_count = 3;

    } else {
      max_count = 7;
      min_count = 4;
    }
  }
}


/* ===========================================================================
 * Construct the Huffman tree for the bit lengths and return the index in
 * bl_order of the last bit length code to send.
 */
function build_bl_tree(s) {
  var max_blindex;  /* index of last bit length code of non zero freq */

  /* Determine the bit length frequencies for literal and distance trees */
  scan_tree(s, s.dyn_ltree, s.l_desc.max_code);
  scan_tree(s, s.dyn_dtree, s.d_desc.max_code);

  /* Build the bit length tree: */
  build_tree(s, s.bl_desc);
  /* opt_len now includes the length of the tree representations, except
   * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.
   */

  /* Determine the number of bit length codes to send. The pkzip format
   * requires that at least 4 bit length codes be sent. (appnote.txt says
   * 3 but the actual value used is 4.)
   */
  for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {
    if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {
      break;
    }
  }
  /* Update opt_len to include the bit length tree and counts */
  s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;
  //Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld",
  //        s->opt_len, s->static_len));

  return max_blindex;
}


/* ===========================================================================
 * Send the header for a block using dynamic Huffman trees: the counts, the
 * lengths of the bit length codes, the literal tree and the distance tree.
 * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.
 */
function send_all_trees(s, lcodes, dcodes, blcodes)
//    deflate_state *s;
//    int lcodes, dcodes, blcodes; /* number of codes for each tree */
{
  var rank;                    /* index in bl_order */

  //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes");
  //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,
  //        "too many codes");
  //Tracev((stderr, "\nbl counts: "));
  send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */
  send_bits(s, dcodes - 1,   5);
  send_bits(s, blcodes - 4,  4); /* not -3 as stated in appnote.txt */
  for (rank = 0; rank < blcodes; rank++) {
    //Tracev((stderr, "\nbl code %2d ", bl_order[rank]));
    send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);
  }
  //Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent));

  send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */
  //Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent));

  send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */
  //Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent));
}


/* ===========================================================================
 * Check if the data type is TEXT or BINARY, using the following algorithm:
 * - TEXT if the two conditions below are satisfied:
 *    a) There are no non-portable control characters belonging to the
 *       "black list" (0..6, 14..25, 28..31).
 *    b) There is at least one printable character belonging to the
 *       "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
 * - BINARY otherwise.
 * - The following partially-portable control characters form a
 *   "gray list" that is ignored in this detection algorithm:
 *   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).
 * IN assertion: the fields Freq of dyn_ltree are set.
 */
function detect_data_type(s) {
  /* black_mask is the bit mask of black-listed bytes
   * set bits 0..6, 14..25, and 28..31
   * 0xf3ffc07f = binary 11110011111111111100000001111111
   */
  var black_mask = 0xf3ffc07f;
  var n;

  /* Check for non-textual ("black-listed") bytes. */
  for (n = 0; n <= 31; n++, black_mask >>>= 1) {
    if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {
      return Z_BINARY;
    }
  }

  /* Check for textual ("white-listed") bytes. */
  if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||
      s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {
    return Z_TEXT;
  }
  for (n = 32; n < LITERALS; n++) {
    if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {
      return Z_TEXT;
    }
  }

  /* There are no "black-listed" or "white-listed" bytes:
   * this stream either is empty or has tolerated ("gray-listed") bytes only.
   */
  return Z_BINARY;
}


var static_init_done = false;

/* ===========================================================================
 * Initialize the tree data structures for a new zlib stream.
 */
function _tr_init(s)
{

  if (!static_init_done) {
    tr_static_init();
    static_init_done = true;
  }

  s.l_desc  = new TreeDesc(s.dyn_ltree, static_l_desc);
  s.d_desc  = new TreeDesc(s.dyn_dtree, static_d_desc);
  s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);

  s.bi_buf = 0;
  s.bi_valid = 0;

  /* Initialize the first block of the first file: */
  init_block(s);
}


/* ===========================================================================
 * Send a stored block
 */
function _tr_stored_block(s, buf, stored_len, last)
//DeflateState *s;
//charf *buf;       /* input block */
//ulg stored_len;   /* length of input block */
//int last;         /* one if this is the last block for a file */
{
  send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3);    /* send block type */
  copy_block(s, buf, stored_len, true); /* with header */
}


/* ===========================================================================
 * Send one empty static block to give enough lookahead for inflate.
 * This takes 10 bits, of which 7 may remain in the bit buffer.
 */
function _tr_align(s) {
  send_bits(s, STATIC_TREES << 1, 3);
  send_code(s, END_BLOCK, static_ltree);
  bi_flush(s);
}


/* ===========================================================================
 * Determine the best encoding for the current block: dynamic trees, static
 * trees or store, and output the encoded block to the zip file.
 */
function _tr_flush_block(s, buf, stored_len, last)
//DeflateState *s;
//charf *buf;       /* input block, or NULL if too old */
//ulg stored_len;   /* length of input block */
//int last;         /* one if this is the last block for a file */
{
  var opt_lenb, static_lenb;  /* opt_len and static_len in bytes */
  var max_blindex = 0;        /* index of last bit length code of non zero freq */

  /* Build the Huffman trees unless a stored block is forced */
  if (s.level > 0) {

    /* Check if the file is binary or text */
    if (s.strm.data_type === Z_UNKNOWN) {
      s.strm.data_type = detect_data_type(s);
    }

    /* Construct the literal and distance trees */
    build_tree(s, s.l_desc);
    // Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len,
    //        s->static_len));

    build_tree(s, s.d_desc);
    // Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len,
    //        s->static_len));
    /* At this point, opt_len and static_len are the total bit lengths of
     * the compressed block data, excluding the tree representations.
     */

    /* Build the bit length tree for the above two trees, and get the index
     * in bl_order of the last bit length code to send.
     */
    max_blindex = build_bl_tree(s);

    /* Determine the best encoding. Compute the block lengths in bytes. */
    opt_lenb = (s.opt_len + 3 + 7) >>> 3;
    static_lenb = (s.static_len + 3 + 7) >>> 3;

    // Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
    //        opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
    //        s->last_lit));

    if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }

  } else {
    // Assert(buf != (char*)0, "lost buf");
    opt_lenb = static_lenb = stored_len + 5; /* force a stored block */
  }

  if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {
    /* 4: two words for the lengths */

    /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.
     * Otherwise we can't have processed more than WSIZE input bytes since
     * the last block flush, because compression would have been
     * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to
     * transform a block into a stored block.
     */
    _tr_stored_block(s, buf, stored_len, last);

  } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {

    send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);
    compress_block(s, static_ltree, static_dtree);

  } else {
    send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);
    send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);
    compress_block(s, s.dyn_ltree, s.dyn_dtree);
  }
  // Assert (s->compressed_len == s->bits_sent, "bad compressed size");
  /* The above check is made mod 2^32, for files larger than 512 MB
   * and uLong implemented on 32 bits.
   */
  init_block(s);

  if (last) {
    bi_windup(s);
  }
  // Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3,
  //       s->compressed_len-7*last));
}

/* ===========================================================================
 * Save the match info and tally the frequency counts. Return true if
 * the current block must be flushed.
 */
function _tr_tally(s, dist, lc)
//    deflate_state *s;
//    unsigned dist;  /* distance of matched string */
//    unsigned lc;    /* match length-MIN_MATCH or unmatched char (if dist==0) */
{
  //var out_length, in_length, dcode;

  s.pending_buf[s.d_buf + s.last_lit * 2]     = (dist >>> 8) & 0xff;
  s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;

  s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;
  s.last_lit++;

  if (dist === 0) {
    /* lc is the unmatched char */
    s.dyn_ltree[lc * 2]/*.Freq*/++;
  } else {
    s.matches++;
    /* Here, lc is the match length - MIN_MATCH */
    dist--;             /* dist = match distance - 1 */
    //Assert((ush)dist < (ush)MAX_DIST(s) &&
    //       (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&
    //       (ush)d_code(dist) < (ush)D_CODES,  "_tr_tally: bad match");

    s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;
    s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;
  }

// (!) This block is disabled in zlib defailts,
// don't enable it for binary compatibility

//#ifdef TRUNCATE_BLOCK
//  /* Try to guess if it is profitable to stop the current block here */
//  if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {
//    /* Compute an upper bound for the compressed length */
//    out_length = s.last_lit*8;
//    in_length = s.strstart - s.block_start;
//
//    for (dcode = 0; dcode < D_CODES; dcode++) {
//      out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);
//    }
//    out_length >>>= 3;
//    //Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ",
//    //       s->last_lit, in_length, out_length,
//    //       100L - out_length*100L/in_length));
//    if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {
//      return true;
//    }
//  }
//#endif

  return (s.last_lit === s.lit_bufsize - 1);
  /* We avoid equality with lit_bufsize because of wraparound at 64K
   * on 16 bit machines and because stored blocks are restricted to
   * 64K-1 bytes.
   */
}

exports._tr_init  = _tr_init;
exports._tr_stored_block = _tr_stored_block;
exports._tr_flush_block  = _tr_flush_block;
exports._tr_tally = _tr_tally;
exports._tr_align = _tr_align;

},{"../utils/common":41}],53:[function(require,module,exports){
'use strict';

// (C) 1995-2013 Jean-loup Gailly and Mark Adler
// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software.
//
// Permission is granted to anyone to use this software for any purpose,
// including commercial applications, and to alter it and redistribute it
// freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
//   claim that you wrote the original software. If you use this software
//   in a product, an acknowledgment in the product documentation would be
//   appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
//   misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source distribution.

function ZStream() {
  /* next input byte */
  this.input = null; // JS specific, because we have no pointers
  this.next_in = 0;
  /* number of bytes available at input */
  this.avail_in = 0;
  /* total number of input bytes read so far */
  this.total_in = 0;
  /* next output byte should be put there */
  this.output = null; // JS specific, because we have no pointers
  this.next_out = 0;
  /* remaining free space at output */
  this.avail_out = 0;
  /* total number of bytes output so far */
  this.total_out = 0;
  /* last error message, NULL if no error */
  this.msg = ''/*Z_NULL*/;
  /* not visible by applications */
  this.state = null;
  /* best guess about the data type: binary or text */
  this.data_type = 2/*Z_UNKNOWN*/;
  /* adler32 value of the uncompressed data */
  this.adler = 0;
}

module.exports = ZStream;

},{}],54:[function(require,module,exports){
(function (global){
(function (global, undefined) {
    "use strict";

    if (global.setImmediate) {
        return;
    }

    var nextHandle = 1; // Spec says greater than zero
    var tasksByHandle = {};
    var currentlyRunningATask = false;
    var doc = global.document;
    var registerImmediate;

    function setImmediate(callback) {
      // Callback can either be a function or a string
      if (typeof callback !== "function") {
        callback = new Function("" + callback);
      }
      // Copy function arguments
      var args = new Array(arguments.length - 1);
      for (var i = 0; i < args.length; i++) {
          args[i] = arguments[i + 1];
      }
      // Store and register the task
      var task = { callback: callback, args: args };
      tasksByHandle[nextHandle] = task;
      registerImmediate(nextHandle);
      return nextHandle++;
    }

    function clearImmediate(handle) {
        delete tasksByHandle[handle];
    }

    function run(task) {
        var callback = task.callback;
        var args = task.args;
        switch (args.length) {
        case 0:
            callback();
            break;
        case 1:
            callback(args[0]);
            break;
        case 2:
            callback(args[0], args[1]);
            break;
        case 3:
            callback(args[0], args[1], args[2]);
            break;
        default:
            callback.apply(undefined, args);
            break;
        }
    }

    function runIfPresent(handle) {
        // From the spec: "Wait until any invocations of this algorithm started before this one have completed."
        // So if we're currently running a task, we'll need to delay this invocation.
        if (currentlyRunningATask) {
            // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a
            // "too much recursion" error.
            setTimeout(runIfPresent, 0, handle);
        } else {
            var task = tasksByHandle[handle];
            if (task) {
                currentlyRunningATask = true;
                try {
                    run(task);
                } finally {
                    clearImmediate(handle);
                    currentlyRunningATask = false;
                }
            }
        }
    }

    function installNextTickImplementation() {
        registerImmediate = function(handle) {
            process.nextTick(function () { runIfPresent(handle); });
        };
    }

    function canUsePostMessage() {
        // The test against `importScripts` prevents this implementation from being installed inside a web worker,
        // where `global.postMessage` means something completely different and can't be used for this purpose.
        if (global.postMessage && !global.importScripts) {
            var postMessageIsAsynchronous = true;
            var oldOnMessage = global.onmessage;
            global.onmessage = function() {
                postMessageIsAsynchronous = false;
            };
            global.postMessage("", "*");
            global.onmessage = oldOnMessage;
            return postMessageIsAsynchronous;
        }
    }

    function installPostMessageImplementation() {
        // Installs an event handler on `global` for the `message` event: see
        // * https://developer.mozilla.org/en/DOM/window.postMessage
        // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages

        var messagePrefix = "setImmediate$" + Math.random() + "$";
        var onGlobalMessage = function(event) {
            if (event.source === global &&
                typeof event.data === "string" &&
                event.data.indexOf(messagePrefix) === 0) {
                runIfPresent(+event.data.slice(messagePrefix.length));
            }
        };

        if (global.addEventListener) {
            global.addEventListener("message", onGlobalMessage, false);
        } else {
            global.attachEvent("onmessage", onGlobalMessage);
        }

        registerImmediate = function(handle) {
            global.postMessage(messagePrefix + handle, "*");
        };
    }

    function installMessageChannelImplementation() {
        var channel = new MessageChannel();
        channel.port1.onmessage = function(event) {
            var handle = event.data;
            runIfPresent(handle);
        };

        registerImmediate = function(handle) {
            channel.port2.postMessage(handle);
        };
    }

    function installReadyStateChangeImplementation() {
        var html = doc.documentElement;
        registerImmediate = function(handle) {
            // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted
            // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.
            var script = doc.createElement("script");
            script.onreadystatechange = function () {
                runIfPresent(handle);
                script.onreadystatechange = null;
                html.removeChild(script);
                script = null;
            };
            html.appendChild(script);
        };
    }

    function installSetTimeoutImplementation() {
        registerImmediate = function(handle) {
            setTimeout(runIfPresent, 0, handle);
        };
    }

    // If supported, we should attach to the prototype of global, since that is where setTimeout et al. live.
    var attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);
    attachTo = attachTo && attachTo.setTimeout ? attachTo : global;

    // Don't get fooled by e.g. browserify environments.
    if ({}.toString.call(global.process) === "[object process]") {
        // For Node.js before 0.9
        installNextTickImplementation();

    } else if (canUsePostMessage()) {
        // For non-IE10 modern browsers
        installPostMessageImplementation();

    } else if (global.MessageChannel) {
        // For web workers, where supported
        installMessageChannelImplementation();

    } else if (doc && "onreadystatechange" in doc.createElement("script")) {
        // For IE 6–8
        installReadyStateChangeImplementation();

    } else {
        // For older browsers
        installSetTimeoutImplementation();
    }

    attachTo.setImmediate = setImmediate;
    attachTo.clearImmediate = clearImmediate;
}(typeof self === "undefined" ? typeof global === "undefined" ? this : global : self));

}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
},{}]},{},[10])(10)
});
/*!
 * DevExtreme (dx.all.debug.js)
 * Version: 23.2.4
 * Build date: Mon Jan 29 2024
 *
 * Copyright (c) 2012 - 2024 Developer Express Inc. ALL RIGHTS RESERVED
 * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
 */
"use strict";
! function() {
    var __webpack_modules__ = {
        81589:
            /*!****************************************************************************!*\
              !*** ../../node_modules/@devextreme/runtime/cjs/inferno/base_component.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                var __extends = this && this.__extends || (extendStatics = function(d, b) {
                    extendStatics = Object.setPrototypeOf || {
                        __proto__: []
                    }
                    instanceof Array && function(d, b) {
                        d.__proto__ = b
                    } || function(d, b) {
                        for (var p in b) {
                            if (Object.prototype.hasOwnProperty.call(b, p)) {
                                d[p] = b[p]
                            }
                        }
                    };
                    return extendStatics(d, b)
                }, function(d, b) {
                    if ("function" !== typeof b && null !== b) {
                        throw new TypeError("Class extends value " + String(b) + " is not a constructor or null")
                    }
                    extendStatics(d, b);

                    function __() {
                        this.constructor = d
                    }
                    d.prototype = null === b ? Object.create(b) : (__.prototype = b.prototype, new __)
                });
                var extendStatics;
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.InfernoWrapperComponent = exports.InfernoComponent = exports.BaseInfernoComponent = void 0;
                var inferno_1 = __webpack_require__( /*! inferno */ 65414);
                var effect_host_1 = __webpack_require__( /*! ./effect_host */ 53213);
                var areObjectsEqual = function(firstObject, secondObject) {
                    var bothAreObjects = firstObject instanceof Object && secondObject instanceof Object;
                    if (!bothAreObjects) {
                        return firstObject === secondObject
                    }
                    var firstObjectKeys = Object.keys(firstObject);
                    var secondObjectKeys = Object.keys(secondObject);
                    if (firstObjectKeys.length !== secondObjectKeys.length) {
                        return false
                    }
                    var hasDifferentElement = firstObjectKeys.some((function(key) {
                        return firstObject[key] !== secondObject[key]
                    }));
                    return !hasDifferentElement
                };
                var BaseInfernoComponent = function(_super) {
                    __extends(BaseInfernoComponent, _super);

                    function BaseInfernoComponent() {
                        var _this = null !== _super && _super.apply(this, arguments) || this;
                        _this._pendingContext = _this.context;
                        return _this
                    }
                    BaseInfernoComponent.prototype.componentWillReceiveProps = function(_, context) {
                        this._pendingContext = null !== context && void 0 !== context ? context : {}
                    };
                    BaseInfernoComponent.prototype.shouldComponentUpdate = function(nextProps, nextState) {
                        return !areObjectsEqual(this.props, nextProps) || !areObjectsEqual(this.state, nextState) || !areObjectsEqual(this.context, this._pendingContext)
                    };
                    return BaseInfernoComponent
                }(inferno_1.Component);
                exports.BaseInfernoComponent = BaseInfernoComponent;
                var InfernoComponent = function(_super) {
                    __extends(InfernoComponent, _super);

                    function InfernoComponent() {
                        var _this = null !== _super && _super.apply(this, arguments) || this;
                        _this._effects = [];
                        return _this
                    }
                    InfernoComponent.prototype.createEffects = function() {
                        return []
                    };
                    InfernoComponent.prototype.updateEffects = function() {};
                    InfernoComponent.prototype.componentWillMount = function() {
                        effect_host_1.InfernoEffectHost.lock()
                    };
                    InfernoComponent.prototype.componentWillUpdate = function(_nextProps, _nextState, _context) {
                        effect_host_1.InfernoEffectHost.lock()
                    };
                    InfernoComponent.prototype.componentDidMount = function() {
                        var _this = this;
                        effect_host_1.InfernoEffectHost.callbacks.push((function() {
                            _this._effects = _this.createEffects()
                        }));
                        effect_host_1.InfernoEffectHost.callEffects()
                    };
                    InfernoComponent.prototype.componentDidUpdate = function() {
                        var _this = this;
                        effect_host_1.InfernoEffectHost.callbacks.push((function() {
                            return _this.updateEffects()
                        }));
                        effect_host_1.InfernoEffectHost.callEffects()
                    };
                    InfernoComponent.prototype.destroyEffects = function() {
                        this._effects.forEach((function(e) {
                            return e.dispose()
                        }))
                    };
                    InfernoComponent.prototype.componentWillUnmount = function() {
                        this.destroyEffects()
                    };
                    return InfernoComponent
                }(BaseInfernoComponent);
                exports.InfernoComponent = InfernoComponent;
                var InfernoWrapperComponent = function(_super) {
                    __extends(InfernoWrapperComponent, _super);

                    function InfernoWrapperComponent() {
                        var _this = null !== _super && _super.apply(this, arguments) || this;
                        _this.vDomElement = null;
                        return _this
                    }
                    InfernoWrapperComponent.prototype.vDomUpdateClasses = function() {
                        var el = this.vDomElement;
                        var currentClasses = el.className.length ? el.className.split(" ") : [];
                        var addedClasses = currentClasses.filter((function(className) {
                            return el.dxClasses.previous.indexOf(className) < 0
                        }));
                        var removedClasses = el.dxClasses.previous.filter((function(className) {
                            return currentClasses.indexOf(className) < 0
                        }));
                        addedClasses.forEach((function(value) {
                            var indexInRemoved = el.dxClasses.removed.indexOf(value);
                            if (indexInRemoved > -1) {
                                el.dxClasses.removed.splice(indexInRemoved, 1)
                            } else {
                                el.dxClasses.added.push(value)
                            }
                        }));
                        removedClasses.forEach((function(value) {
                            var indexInAdded = el.dxClasses.added.indexOf(value);
                            if (indexInAdded > -1) {
                                el.dxClasses.added.splice(indexInAdded, 1)
                            } else {
                                el.dxClasses.removed.push(value)
                            }
                        }))
                    };
                    InfernoWrapperComponent.prototype.componentDidMount = function() {
                        var el = inferno_1.findDOMfromVNode(this.$LI, true);
                        this.vDomElement = el;
                        _super.prototype.componentDidMount.call(this);
                        el.dxClasses = el.dxClasses || {
                            removed: [],
                            added: [],
                            previous: []
                        };
                        el.dxClasses.previous = (null === el || void 0 === el ? void 0 : el.className.length) ? el.className.split(" ") : []
                    };
                    InfernoWrapperComponent.prototype.componentDidUpdate = function() {
                        _super.prototype.componentDidUpdate.call(this);
                        var el = this.vDomElement;
                        if (null !== el) {
                            el.dxClasses.added.forEach((function(className) {
                                return el.classList.add(className)
                            }));
                            el.dxClasses.removed.forEach((function(className) {
                                return el.classList.remove(className)
                            }));
                            el.dxClasses.previous = el.className.length ? el.className.split(" ") : []
                        }
                    };
                    InfernoWrapperComponent.prototype.shouldComponentUpdate = function(nextProps, nextState) {
                        var shouldUpdate = _super.prototype.shouldComponentUpdate.call(this, nextProps, nextState);
                        if (shouldUpdate) {
                            this.vDomUpdateClasses()
                        }
                        return shouldUpdate
                    };
                    return InfernoWrapperComponent
                }(InfernoComponent);
                exports.InfernoWrapperComponent = InfernoWrapperComponent
            },
        61080:
            /*!****************************************************************************!*\
              !*** ../../node_modules/@devextreme/runtime/cjs/inferno/create_context.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                var __extends = this && this.__extends || (extendStatics = function(d, b) {
                    extendStatics = Object.setPrototypeOf || {
                        __proto__: []
                    }
                    instanceof Array && function(d, b) {
                        d.__proto__ = b
                    } || function(d, b) {
                        for (var p in b) {
                            if (Object.prototype.hasOwnProperty.call(b, p)) {
                                d[p] = b[p]
                            }
                        }
                    };
                    return extendStatics(d, b)
                }, function(d, b) {
                    if ("function" !== typeof b && null !== b) {
                        throw new TypeError("Class extends value " + String(b) + " is not a constructor or null")
                    }
                    extendStatics(d, b);

                    function __() {
                        this.constructor = d
                    }
                    d.prototype = null === b ? Object.create(b) : (__.prototype = b.prototype, new __)
                });
                var extendStatics;
                var __assign = this && this.__assign || function() {
                    __assign = Object.assign || function(t) {
                        for (var s, i = 1, n = arguments.length; i < n; i++) {
                            s = arguments[i];
                            for (var p in s) {
                                if (Object.prototype.hasOwnProperty.call(s, p)) {
                                    t[p] = s[p]
                                }
                            }
                        }
                        return t
                    };
                    return __assign.apply(this, arguments)
                };
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.createContext = void 0;
                var inferno_1 = __webpack_require__( /*! inferno */ 65414);
                var contextId = 0;
                exports.createContext = function(defaultValue) {
                    var id = contextId++;
                    return {
                        id: id,
                        defaultValue: defaultValue,
                        Provider: function(_super) {
                            __extends(class_1, _super);

                            function class_1() {
                                return null !== _super && _super.apply(this, arguments) || this
                            }
                            class_1.prototype.getChildContext = function() {
                                var _a;
                                return __assign(__assign({}, this.context), (_a = {}, _a[id] = this.props.value || defaultValue, _a))
                            };
                            class_1.prototype.render = function() {
                                return this.props.children
                            };
                            return class_1
                        }(inferno_1.Component)
                    }
                }
            },
        43956:
            /*!********************************************************************!*\
              !*** ../../node_modules/@devextreme/runtime/cjs/inferno/effect.js ***!
              \********************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.InfernoEffect = void 0;
                var InfernoEffect = function() {
                    function InfernoEffect(effect, dependency) {
                        this.dependency = dependency;
                        this.effect = effect;
                        this.destroy = effect()
                    }
                    InfernoEffect.prototype.update = function(dependency) {
                        var currentDependency = this.dependency;
                        if (dependency) {
                            this.dependency = dependency
                        }
                        if (!dependency || dependency.some((function(d, i) {
                                return currentDependency[i] !== d
                            }))) {
                            this.dispose();
                            this.destroy = this.effect()
                        }
                    };
                    InfernoEffect.prototype.dispose = function() {
                        if (this.destroy) {
                            this.destroy()
                        }
                    };
                    return InfernoEffect
                }();
                exports.InfernoEffect = InfernoEffect
            },
        53213:
            /*!*************************************************************************!*\
              !*** ../../node_modules/@devextreme/runtime/cjs/inferno/effect_host.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.InfernoEffectHost = void 0;
                exports.InfernoEffectHost = {
                    lockCount: 0,
                    lock: function() {
                        this.lockCount++
                    },
                    callbacks: [],
                    callEffects: function() {
                        this.lockCount--;
                        if (this.lockCount < 0) {
                            throw new Error("Unexpected Effect Call")
                        }
                        if (0 === this.lockCount) {
                            var effects = this.callbacks;
                            this.callbacks = [];
                            effects.forEach((function(callback) {
                                return callback()
                            }))
                        }
                    }
                }
            },
        74219:
            /*!*******************************************************************!*\
              !*** ../../node_modules/@devextreme/runtime/cjs/inferno/index.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                var __createBinding = this && this.__createBinding || (Object.create ? function(o, m, k, k2) {
                    if (void 0 === k2) {
                        k2 = k
                    }
                    Object.defineProperty(o, k2, {
                        enumerable: true,
                        get: function() {
                            return m[k]
                        }
                    })
                } : function(o, m, k, k2) {
                    if (void 0 === k2) {
                        k2 = k
                    }
                    o[k2] = m[k]
                });
                var __exportStar = this && this.__exportStar || function(m, exports) {
                    for (var p in m) {
                        if ("default" !== p && !Object.prototype.hasOwnProperty.call(exports, p)) {
                            __createBinding(exports, m, p)
                        }
                    }
                };
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                __exportStar(__webpack_require__( /*! ./base_component */ 81589), exports);
                __exportStar(__webpack_require__( /*! ./create_context */ 61080), exports);
                __exportStar(__webpack_require__( /*! ./effect */ 43956), exports);
                __exportStar(__webpack_require__( /*! ./effect_host */ 53213), exports);
                __exportStar(__webpack_require__( /*! ./portal */ 53159), exports);
                __exportStar(__webpack_require__( /*! ./ref_object */ 86687), exports);
                __exportStar(__webpack_require__( /*! ./re_render_effect */ 31620), exports);
                __exportStar(__webpack_require__( /*! ./mocked/hydrate */ 67604), exports);
                __exportStar(__webpack_require__( /*! ./render_template */ 32423), exports);
                __exportStar(__webpack_require__( /*! ./normalize_styles */ 73084), exports)
            },
        67604:
            /*!****************************************************************************!*\
              !*** ../../node_modules/@devextreme/runtime/cjs/inferno/mocked/hydrate.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.hydrate = void 0;
                var inferno_1 = __webpack_require__( /*! inferno */ 65414);
                var shared_1 = __webpack_require__( /*! ./shared */ 45786);

                function isSamePropsInnerHTML(dom, props) {
                    return Boolean(props && props.dangerouslySetInnerHTML && props.dangerouslySetInnerHTML.__html && function(dom, innerHTML) {
                        var tempdom = document.createElement("i");
                        tempdom.innerHTML = innerHTML;
                        return tempdom.innerHTML === dom.innerHTML
                    }(dom, props.dangerouslySetInnerHTML.__html))
                }

                function hydrateChildren(parentVNode, parentNode, currentNode, context, isSVG, lifecycle) {
                    var childFlags = parentVNode.childFlags;
                    var children = parentVNode.children;
                    var props = parentVNode.props;
                    var flags = parentVNode.flags;
                    if (1 !== childFlags) {
                        if (2 === childFlags) {
                            if (shared_1.isNull(currentNode)) {
                                inferno_1._M(children, parentNode, context, isSVG, null, lifecycle)
                            } else {
                                currentNode = hydrateVNode(children, parentNode, currentNode, context, isSVG, lifecycle);
                                currentNode = currentNode ? currentNode.nextSibling : null
                            }
                        } else if (16 === childFlags) {
                            if (shared_1.isNull(currentNode)) {
                                parentNode.appendChild(document.createTextNode(children))
                            } else if (1 !== parentNode.childNodes.length || 3 !== currentNode.nodeType) {
                                parentNode.textContent = children
                            } else if (currentNode.nodeValue !== children) {
                                currentNode.nodeValue = children
                            }
                            currentNode = null
                        } else if (12 & childFlags) {
                            var prevVNodeIsTextNode = false;
                            for (var i = 0, len = children.length; i < len; ++i) {
                                var child = children[i];
                                if (shared_1.isNull(currentNode) || prevVNodeIsTextNode && (16 & child.flags) > 0) {
                                    inferno_1._M(child, parentNode, context, isSVG, currentNode, lifecycle)
                                } else {
                                    currentNode = hydrateVNode(child, parentNode, currentNode, context, isSVG, lifecycle);
                                    currentNode = currentNode ? currentNode.nextSibling : null
                                }
                                prevVNodeIsTextNode = (16 & child.flags) > 0
                            }
                        }
                        if (0 === (8192 & flags)) {
                            var nextSibling = null;
                            while (currentNode) {
                                nextSibling = currentNode.nextSibling;
                                parentNode.removeChild(currentNode);
                                currentNode = nextSibling
                            }
                        }
                    } else if (!shared_1.isNull(parentNode.firstChild) && !isSamePropsInnerHTML(parentNode, props)) {
                        parentNode.textContent = "";
                        if (448 & flags) {
                            parentNode.defaultValue = ""
                        }
                    }
                }

                function hydrateText(vNode, parentDOM, dom) {
                    if (3 !== dom.nodeType) {
                        parentDOM.replaceChild(vNode.dom = document.createTextNode(vNode.children), dom)
                    } else {
                        var text = vNode.children;
                        if (dom.nodeValue !== text) {
                            dom.nodeValue = text
                        }
                        vNode.dom = dom
                    }
                    return vNode.dom
                }

                function hydrateVNode(vNode, parentDOM, currentDom, context, isSVG, lifecycle) {
                    var flags = vNode.flags |= 16384;
                    if (14 & flags) {
                        return function(vNode, parentDOM, dom, context, isSVG, isClass, lifecycle) {
                            var type = vNode.type;
                            var ref = vNode.ref;
                            var props = vNode.props || inferno_1.EMPTY_OBJ;
                            var currentNode;
                            if (isClass) {
                                var instance = inferno_1._CI(vNode, type, props, context, isSVG, lifecycle);
                                var input = instance.$LI;
                                currentNode = hydrateVNode(input, parentDOM, dom, instance.$CX, isSVG, lifecycle);
                                inferno_1._MCCC(ref, instance, lifecycle)
                            } else {
                                input = inferno_1._HI(inferno_1._RFC(vNode, context));
                                currentNode = hydrateVNode(input, parentDOM, dom, context, isSVG, lifecycle);
                                vNode.children = input;
                                inferno_1._MFCC(vNode, lifecycle)
                            }
                            return currentNode
                        }(vNode, parentDOM, currentDom, context, isSVG, (4 & flags) > 0, lifecycle)
                    }
                    if (481 & flags) {
                        return function(vNode, parentDOM, dom, context, isSVG, lifecycle) {
                            var props = vNode.props;
                            var className = vNode.className;
                            var flags = vNode.flags;
                            var ref = vNode.ref;
                            isSVG = isSVG || (32 & flags) > 0;
                            if (1 !== dom.nodeType) {
                                inferno_1._ME(vNode, null, context, isSVG, null, lifecycle);
                                parentDOM.replaceChild(vNode.dom, dom)
                            } else {
                                vNode.dom = dom;
                                hydrateChildren(vNode, dom, dom.firstChild, context, isSVG, lifecycle);
                                if (!shared_1.isNull(props)) {
                                    inferno_1._MP(vNode, flags, props, dom, isSVG)
                                }
                                if (shared_1.isNullOrUndef(className)) {
                                    if ("" !== dom.className) {
                                        dom.removeAttribute("class")
                                    }
                                } else if (isSVG) {
                                    dom.setAttribute("class", className)
                                } else {
                                    dom.className = className
                                }
                                inferno_1._MR(ref, dom, lifecycle)
                            }
                            return vNode.dom
                        }(vNode, parentDOM, currentDom, context, isSVG, lifecycle)
                    }
                    if (16 & flags) {
                        return hydrateText(vNode, parentDOM, currentDom)
                    }
                    if (512 & flags) {
                        return vNode.dom = currentDom
                    }
                    if (8192 & flags) {
                        return function(vNode, parentDOM, dom, context, isSVG, lifecycle) {
                            var children = vNode.children;
                            if (2 === vNode.childFlags) {
                                hydrateText(children, parentDOM, dom);
                                return children.dom
                            }
                            hydrateChildren(vNode, parentDOM, dom, context, isSVG, lifecycle);
                            return function(vNode) {
                                var flags;
                                var children;
                                while (vNode) {
                                    flags = vNode.flags;
                                    if (2033 & flags) {
                                        return vNode.dom
                                    }
                                    children = vNode.children;
                                    if (8192 & flags) {
                                        vNode = 2 === vNode.childFlags ? children : children[children.length - 1]
                                    } else if (4 & flags) {
                                        vNode = children.$LI
                                    } else {
                                        vNode = children
                                    }
                                }
                                return null
                            }(children[children.length - 1])
                        }(vNode, parentDOM, currentDom, context, isSVG, lifecycle)
                    }
                    shared_1.throwError();
                    return null
                }
                exports.hydrate = function(input, parentDOM, callback) {
                    var dom = parentDOM.firstChild;
                    if (shared_1.isNull(dom)) {
                        inferno_1.render(input, parentDOM, callback)
                    } else {
                        var lifecycle = [];
                        if (!shared_1.isInvalid(input)) {
                            dom = hydrateVNode(input, parentDOM, dom, {}, false, lifecycle)
                        }
                        while (dom && (dom = dom.nextSibling)) {
                            parentDOM.removeChild(dom)
                        }
                        if (lifecycle.length > 0) {
                            var listener = void 0;
                            while (void 0 !== (listener = lifecycle.shift())) {
                                listener()
                            }
                        }
                    }
                    parentDOM.$V = input;
                    if (shared_1.isFunction(callback)) {
                        callback()
                    }
                }
            },
        45786:
            /*!***************************************************************************!*\
              !*** ../../node_modules/@devextreme/runtime/cjs/inferno/mocked/shared.js ***!
              \***************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.throwError = exports.isNull = exports.isFunction = exports.isInvalid = exports.isNullOrUndef = exports.ERROR_MSG = void 0;
                exports.ERROR_MSG = "a runtime error occured! Use Inferno in development environment to find the error.";
                exports.isNullOrUndef = function(o) {
                    return void 0 === o || null === o
                };
                exports.isInvalid = function(o) {
                    return null === o || false === o || true === o || void 0 === o
                };
                exports.isFunction = function(o) {
                    return "function" === typeof o
                };
                exports.isNull = function(o) {
                    return null === o
                };
                exports.throwError = function(message) {
                    if (!message) {
                        message = exports.ERROR_MSG
                    }
                    throw new Error("Inferno Error: " + message)
                }
            },
        73084:
            /*!******************************************************************************!*\
              !*** ../../node_modules/@devextreme/runtime/cjs/inferno/normalize_styles.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports) {
                var __read = this && this.__read || function(o, n) {
                    var m = "function" === typeof Symbol && o[Symbol.iterator];
                    if (!m) {
                        return o
                    }
                    var r, e, i = m.call(o),
                        ar = [];
                    try {
                        while ((void 0 === n || n-- > 0) && !(r = i.next()).done) {
                            ar.push(r.value)
                        }
                    } catch (error) {
                        e = {
                            error: error
                        }
                    } finally {
                        try {
                            if (r && !r.done && (m = i.return)) {
                                m.call(i)
                            }
                        } finally {
                            if (e) {
                                throw e.error
                            }
                        }
                    }
                    return ar
                };
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.normalizeStyles = void 0;
                var NUMBER_STYLES = new Set(["animationIterationCount", "borderImageOutset", "borderImageSlice", "border-imageWidth", "boxFlex", "boxFlexGroup", "boxOrdinalGroup", "columnCount", "fillOpacity", "flex", "flexGrow", "flexNegative", "flexOrder", "flexPositive", "flexShrink", "floodOpacity", "fontWeight", "gridColumn", "gridRow", "lineClamp", "lineHeight", "opacity", "order", "orphans", "stopOpacity", "strokeDasharray", "strokeDashoffset", "strokeMiterlimit", "strokeOpacity", "strokeWidth", "tabSize", "widows", "zIndex", "zoom"]);
                var uppercasePattern = /[A-Z]/g;
                exports.normalizeStyles = function(styles) {
                    if (!(styles instanceof Object)) {
                        return
                    }
                    return Object.entries(styles).reduce((function(acc, _a) {
                        var _b = __read(_a, 2),
                            key = _b[0],
                            value = _b[1];
                        acc[(str = key, str.replace(uppercasePattern, "-$&").toLowerCase())] = function(value) {
                            if ("number" === typeof value) {
                                return true
                            }
                            return !Number.isNaN(Number(value))
                        }(value) ? function(style, value) {
                            return NUMBER_STYLES.has(style) ? value : value + "px"
                        }(key, value) : value;
                        var str;
                        return acc
                    }), {})
                }
            },
        53159:
            /*!********************************************************************!*\
              !*** ../../node_modules/@devextreme/runtime/cjs/inferno/portal.js ***!
              \********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.Portal = void 0;
                var inferno_1 = __webpack_require__( /*! inferno */ 65414);
                exports.Portal = function(_a) {
                    var container = _a.container,
                        children = _a.children;
                    if (container) {
                        return inferno_1.createPortal(children, container)
                    }
                    return null
                }
            },
        31620:
            /*!******************************************************************************!*\
              !*** ../../node_modules/@devextreme/runtime/cjs/inferno/re_render_effect.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.createReRenderEffect = void 0;
                var inferno_1 = __webpack_require__( /*! inferno */ 65414);
                var effect_1 = __webpack_require__( /*! ./effect */ 43956);
                exports.createReRenderEffect = function() {
                    return new effect_1.InfernoEffect((function() {
                        inferno_1.rerender()
                    }), [])
                }
            },
        86687:
            /*!************************************************************************!*\
              !*** ../../node_modules/@devextreme/runtime/cjs/inferno/ref_object.js ***!
              \************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                })
            },
        32423:
            /*!*****************************************************************************!*\
              !*** ../../node_modules/@devextreme/runtime/cjs/inferno/render_template.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.hasTemplate = exports.renderTemplate = void 0;
                var inferno_1 = __webpack_require__( /*! inferno */ 65414);
                var inferno_create_element_1 = __webpack_require__( /*! inferno-create-element */ 99038);
                exports.renderTemplate = function(template, props, _component) {
                    setTimeout((function() {
                        inferno_1.render(inferno_create_element_1.createElement(template, props), function(props) {
                            var _a, _b;
                            return (null === (_a = props.container) || void 0 === _a ? void 0 : _a.get(0)) || (null === (_b = props.item) || void 0 === _b ? void 0 : _b.get(0))
                        }(props))
                    }), 0)
                };
                exports.hasTemplate = function(name, properties, _component) {
                    var value = properties[name];
                    return !!value && "string" !== typeof value
                }
            },
        99038:
            /*!*******************************************************************!*\
              !*** ../../node_modules/inferno-create-element/dist/index.esm.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
                __webpack_require__.r(__webpack_exports__);
                __webpack_require__.d(__webpack_exports__, {
                    createElement: function() {
                        return createElement
                    }
                });
                var inferno__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__( /*! inferno */ 65414);

                function isNullOrUndef(o) {
                    return void 0 === o || null === o
                }

                function isString(o) {
                    return "string" === typeof o
                }

                function isUndefined(o) {
                    return void 0 === o
                }
                var componentHooks = {
                    onComponentDidMount: 1,
                    onComponentDidUpdate: 1,
                    onComponentShouldUpdate: 1,
                    onComponentWillMount: 1,
                    onComponentWillUnmount: 1,
                    onComponentWillUpdate: 1
                };

                function createElement(type, props, _children) {
                    var arguments$1 = arguments;
                    var children;
                    var ref = null;
                    var key = null;
                    var className = null;
                    var flags = 0;
                    var newProps;
                    var childLen = arguments.length - 2;
                    if (1 === childLen) {
                        children = _children
                    } else if (childLen > 1) {
                        children = [];
                        while (childLen-- > 0) {
                            children[childLen] = arguments$1[childLen + 2]
                        }
                    }
                    if (isString(type)) {
                        flags = (0, inferno__WEBPACK_IMPORTED_MODULE_0__.getFlagsForElementVnode)(type);
                        if (!isNullOrUndef(props)) {
                            newProps = {};
                            for (var prop in props) {
                                if ("className" === prop || "class" === prop) {
                                    className = props[prop]
                                } else if ("key" === prop) {
                                    key = props.key
                                } else if ("children" === prop && isUndefined(children)) {
                                    children = props.children
                                } else if ("ref" === prop) {
                                    ref = props.ref
                                } else {
                                    if ("contenteditable" === prop) {
                                        flags |= 4096
                                    }
                                    newProps[prop] = props[prop]
                                }
                            }
                        }
                    } else {
                        flags = 2;
                        if (!isUndefined(children)) {
                            if (!props) {
                                props = {}
                            }
                            props.children = children
                        }
                        if (!isNullOrUndef(props)) {
                            newProps = {};
                            for (var prop$1 in props) {
                                if ("key" === prop$1) {
                                    key = props.key
                                } else if ("ref" === prop$1) {
                                    ref = props.ref
                                } else if (1 === componentHooks[prop$1]) {
                                    if (!ref) {
                                        ref = {}
                                    }
                                    ref[prop$1] = props[prop$1]
                                } else {
                                    newProps[prop$1] = props[prop$1]
                                }
                            }
                        }
                        return (0, inferno__WEBPACK_IMPORTED_MODULE_0__.createComponentVNode)(flags, type, newProps, key, ref)
                    }
                    if (8192 & flags) {
                        return (0, inferno__WEBPACK_IMPORTED_MODULE_0__.createFragment)(1 === childLen ? [children] : children, 0, key)
                    }
                    return (0, inferno__WEBPACK_IMPORTED_MODULE_0__.createVNode)(flags, type, className, children, 0, newProps, key, ref)
                }
            },
        65414:
            /*!***********************************************************!*\
              !*** ../../node_modules/inferno/index.esm.js + 1 modules ***!
              \***********************************************************/
            function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
                __webpack_require__.r(__webpack_exports__);
                __webpack_require__.d(__webpack_exports__, {
                    Component: function() {
                        return Component
                    },
                    EMPTY_OBJ: function() {
                        return EMPTY_OBJ
                    },
                    Fragment: function() {
                        return Fragment
                    },
                    _CI: function() {
                        return createClassComponentInstance
                    },
                    _HI: function() {
                        return normalizeRoot
                    },
                    _M: function() {
                        return mount
                    },
                    _MCCC: function() {
                        return mountClassComponentCallbacks
                    },
                    _ME: function() {
                        return mountElement
                    },
                    _MFCC: function() {
                        return mountFunctionalComponentCallbacks
                    },
                    _MP: function() {
                        return mountProps
                    },
                    _MR: function() {
                        return mountRef
                    },
                    _RFC: function() {
                        return renderFunctionalComponent
                    },
                    __render: function() {
                        return __render
                    },
                    createComponentVNode: function() {
                        return createComponentVNode
                    },
                    createFragment: function() {
                        return createFragment
                    },
                    createPortal: function() {
                        return createPortal
                    },
                    createRef: function() {
                        return createRef
                    },
                    createRenderer: function() {
                        return createRenderer
                    },
                    createTextVNode: function() {
                        return createTextVNode
                    },
                    createVNode: function() {
                        return createVNode
                    },
                    directClone: function() {
                        return directClone
                    },
                    findDOMfromVNode: function() {
                        return findDOMfromVNode
                    },
                    forwardRef: function() {
                        return forwardRef
                    },
                    getFlagsForElementVnode: function() {
                        return getFlagsForElementVnode
                    },
                    linkEvent: function() {
                        return linkEvent
                    },
                    normalizeProps: function() {
                        return normalizeProps
                    },
                    options: function() {
                        return options
                    },
                    render: function() {
                        return render
                    },
                    rerender: function() {
                        return rerender
                    },
                    version: function() {
                        return version
                    }
                });
                var isArray = Array.isArray;

                function isStringOrNumber(o) {
                    var type = typeof o;
                    return "string" === type || "number" === type
                }

                function isNullOrUndef(o) {
                    return void 0 === o || null === o
                }

                function isInvalid(o) {
                    return null === o || false === o || true === o || void 0 === o
                }

                function isFunction(o) {
                    return "function" === typeof o
                }

                function isString(o) {
                    return "string" === typeof o
                }

                function isNull(o) {
                    return null === o
                }

                function combineFrom(first, second) {
                    var out = {};
                    if (first) {
                        for (var key in first) {
                            out[key] = first[key]
                        }
                    }
                    if (second) {
                        for (var key$1 in second) {
                            out[key$1] = second[key$1]
                        }
                    }
                    return out
                }

                function linkEvent(data, event) {
                    if (isFunction(event)) {
                        return {
                            data: data,
                            event: event
                        }
                    }
                    return null
                }

                function isLinkEventObject(o) {
                    return !isNull(o) && "object" === typeof o
                }
                var EMPTY_OBJ = {};
                var Fragment = "$F";

                function normalizeEventName(name) {
                    return name.substr(2).toLowerCase()
                }

                function appendChild(parentDOM, dom) {
                    parentDOM.appendChild(dom)
                }

                function insertOrAppend(parentDOM, newNode, nextNode) {
                    if (isNull(nextNode)) {
                        appendChild(parentDOM, newNode)
                    } else {
                        parentDOM.insertBefore(newNode, nextNode)
                    }
                }

                function removeChild(parentDOM, childNode) {
                    parentDOM.removeChild(childNode)
                }

                function callAll(arrayFn) {
                    for (var i = 0; i < arrayFn.length; i++) {
                        arrayFn[i]()
                    }
                }

                function findChildVNode(vNode, startEdge, flags) {
                    var children = vNode.children;
                    if (4 & flags) {
                        return children.$LI
                    }
                    if (8192 & flags) {
                        return 2 === vNode.childFlags ? children : children[startEdge ? 0 : children.length - 1]
                    }
                    return children
                }

                function findDOMfromVNode(vNode, startEdge) {
                    var flags;
                    while (vNode) {
                        flags = vNode.flags;
                        if (2033 & flags) {
                            return vNode.dom
                        }
                        vNode = findChildVNode(vNode, startEdge, flags)
                    }
                    return null
                }

                function removeVNodeDOM(vNode, parentDOM) {
                    do {
                        var flags = vNode.flags;
                        if (2033 & flags) {
                            removeChild(parentDOM, vNode.dom);
                            return
                        }
                        var children = vNode.children;
                        if (4 & flags) {
                            vNode = children.$LI
                        }
                        if (8 & flags) {
                            vNode = children
                        }
                        if (8192 & flags) {
                            if (2 === vNode.childFlags) {
                                vNode = children
                            } else {
                                for (var i = 0, len = children.length; i < len; ++i) {
                                    removeVNodeDOM(children[i], parentDOM)
                                }
                                return
                            }
                        }
                    } while (vNode)
                }

                function moveVNodeDOM(vNode, parentDOM, nextNode) {
                    do {
                        var flags = vNode.flags;
                        if (2033 & flags) {
                            insertOrAppend(parentDOM, vNode.dom, nextNode);
                            return
                        }
                        var children = vNode.children;
                        if (4 & flags) {
                            vNode = children.$LI
                        }
                        if (8 & flags) {
                            vNode = children
                        }
                        if (8192 & flags) {
                            if (2 === vNode.childFlags) {
                                vNode = children
                            } else {
                                for (var i = 0, len = children.length; i < len; ++i) {
                                    moveVNodeDOM(children[i], parentDOM, nextNode)
                                }
                                return
                            }
                        }
                    } while (vNode)
                }

                function createDerivedState(instance, nextProps, state) {
                    if (instance.constructor.getDerivedStateFromProps) {
                        return combineFrom(state, instance.constructor.getDerivedStateFromProps(nextProps, state))
                    }
                    return state
                }
                var renderCheck = {
                    v: false
                };
                var options = {
                    componentComparator: null,
                    createVNode: null,
                    renderComplete: null
                };

                function setTextContent(dom, children) {
                    dom.textContent = children
                }

                function isLastValueSameLinkEvent(lastValue, nextValue) {
                    return isLinkEventObject(lastValue) && lastValue.event === nextValue.event && lastValue.data === nextValue.data
                }

                function mergeUnsetProperties(to, from) {
                    for (var propName in from) {
                        if (o = to[propName], void 0 === o) {
                            to[propName] = from[propName]
                        }
                    }
                    var o;
                    return to
                }

                function safeCall1(method, arg1) {
                    return !!isFunction(method) && (method(arg1), true)
                }

                function V(childFlags, children, className, flags, key, props, ref, type) {
                    this.childFlags = childFlags;
                    this.children = children;
                    this.className = className;
                    this.dom = null;
                    this.flags = flags;
                    this.key = void 0 === key ? null : key;
                    this.props = void 0 === props ? null : props;
                    this.ref = void 0 === ref ? null : ref;
                    this.type = type
                }

                function createVNode(flags, type, className, children, childFlags, props, key, ref) {
                    var childFlag = void 0 === childFlags ? 1 : childFlags;
                    var vNode = new V(childFlag, children, className, flags, key, props, ref, type);
                    if (options.createVNode) {
                        options.createVNode(vNode)
                    }
                    if (0 === childFlag) {
                        normalizeChildren(vNode, vNode.children)
                    }
                    return vNode
                }

                function createComponentVNode(flags, type, props, key, ref) {
                    flags = function(flags, type) {
                        if (12 & flags) {
                            return flags
                        }
                        if (type.prototype && type.prototype.render) {
                            return 4
                        }
                        if (type.render) {
                            return 32776
                        }
                        return 8
                    }(flags, type);
                    var vNode = new V(1, null, null, flags, key, function(flags, type, props) {
                        var defaultProps = (32768 & flags ? type.render : type).defaultProps;
                        if (isNullOrUndef(defaultProps)) {
                            return props
                        }
                        if (isNullOrUndef(props)) {
                            return combineFrom(defaultProps, null)
                        }
                        return mergeUnsetProperties(props, defaultProps)
                    }(flags, type, props), function(flags, type, ref) {
                        if (4 & flags) {
                            return ref
                        }
                        var defaultHooks = (32768 & flags ? type.render : type).defaultHooks;
                        if (isNullOrUndef(defaultHooks)) {
                            return ref
                        }
                        if (isNullOrUndef(ref)) {
                            return defaultHooks
                        }
                        return mergeUnsetProperties(ref, defaultHooks)
                    }(flags, type, ref), type);
                    if (options.createVNode) {
                        options.createVNode(vNode)
                    }
                    return vNode
                }

                function createTextVNode(text, key) {
                    return new V(1, isNullOrUndef(text) || true === text || false === text ? "" : text, null, 16, key, null, null, null)
                }

                function createFragment(children, childFlags, key) {
                    var fragment = createVNode(8192, 8192, null, children, childFlags, null, key, null);
                    switch (fragment.childFlags) {
                        case 1:
                            fragment.children = createVoidVNode();
                            fragment.childFlags = 2;
                            break;
                        case 16:
                            fragment.children = [createTextVNode(children)];
                            fragment.childFlags = 4
                    }
                    return fragment
                }

                function normalizeProps(vNode) {
                    var props = vNode.props;
                    if (props) {
                        var flags = vNode.flags;
                        if (481 & flags) {
                            if (void 0 !== props.children && isNullOrUndef(vNode.children)) {
                                normalizeChildren(vNode, props.children)
                            }
                            if (void 0 !== props.className) {
                                if (isNullOrUndef(vNode.className)) {
                                    vNode.className = props.className || null
                                }
                                props.className = void 0
                            }
                        }
                        if (void 0 !== props.key) {
                            vNode.key = props.key;
                            props.key = void 0
                        }
                        if (void 0 !== props.ref) {
                            if (8 & flags) {
                                vNode.ref = combineFrom(vNode.ref, props.ref)
                            } else {
                                vNode.ref = props.ref
                            }
                            props.ref = void 0
                        }
                    }
                    return vNode
                }

                function directClone(vNodeToClone) {
                    var flags = -16385 & vNodeToClone.flags;
                    var props = vNodeToClone.props;
                    if (14 & flags) {
                        if (!isNull(props)) {
                            var propsToClone = props;
                            props = {};
                            for (var key in propsToClone) {
                                props[key] = propsToClone[key]
                            }
                        }
                    }
                    if (0 === (8192 & flags)) {
                        return new V(vNodeToClone.childFlags, vNodeToClone.children, vNodeToClone.className, flags, vNodeToClone.key, props, vNodeToClone.ref, vNodeToClone.type)
                    }
                    return function(vNodeToClone) {
                        var oldChildren = vNodeToClone.children;
                        var childFlags = vNodeToClone.childFlags;
                        return createFragment(2 === childFlags ? directClone(oldChildren) : oldChildren.map(directClone), childFlags, vNodeToClone.key)
                    }(vNodeToClone)
                }

                function createVoidVNode() {
                    return createTextVNode("", null)
                }

                function createPortal(children, container) {
                    var normalizedRoot = normalizeRoot(children);
                    return createVNode(1024, 1024, null, normalizedRoot, 0, null, normalizedRoot.key, container)
                }

                function _normalizeVNodes(nodes, result, index, currentKey) {
                    for (var len = nodes.length; index < len; index++) {
                        var n = nodes[index];
                        if (!isInvalid(n)) {
                            var newKey = currentKey + "$" + index;
                            if (isArray(n)) {
                                _normalizeVNodes(n, result, 0, newKey)
                            } else {
                                if (isStringOrNumber(n)) {
                                    n = createTextVNode(n, newKey)
                                } else {
                                    var oldKey = n.key;
                                    var isPrefixedKey = isString(oldKey) && "$" === oldKey[0];
                                    if (81920 & n.flags || isPrefixedKey) {
                                        n = directClone(n)
                                    }
                                    n.flags |= 65536;
                                    if (!isPrefixedKey) {
                                        if (isNull(oldKey)) {
                                            n.key = newKey
                                        } else {
                                            n.key = currentKey + oldKey
                                        }
                                    } else if (oldKey.substring(0, currentKey.length) !== currentKey) {
                                        n.key = currentKey + oldKey
                                    }
                                }
                                result.push(n)
                            }
                        }
                    }
                }

                function getFlagsForElementVnode(type) {
                    switch (type) {
                        case "svg":
                            return 32;
                        case "input":
                            return 64;
                        case "select":
                            return 256;
                        case "textarea":
                            return 128;
                        case Fragment:
                            return 8192;
                        default:
                            return 1
                    }
                }

                function normalizeChildren(vNode, children) {
                    var newChildren;
                    var newChildFlags = 1;
                    if (isInvalid(children)) {
                        newChildren = children
                    } else if (isStringOrNumber(children)) {
                        newChildFlags = 16;
                        newChildren = children
                    } else if (isArray(children)) {
                        var len = children.length;
                        for (var i = 0; i < len; ++i) {
                            var n = children[i];
                            if (isInvalid(n) || isArray(n)) {
                                newChildren = newChildren || children.slice(0, i);
                                _normalizeVNodes(children, newChildren, i, "");
                                break
                            } else if (isStringOrNumber(n)) {
                                newChildren = newChildren || children.slice(0, i);
                                newChildren.push(createTextVNode(n, "$" + i))
                            } else {
                                var key = n.key;
                                var needsCloning = (81920 & n.flags) > 0;
                                var isNullKey = isNull(key);
                                var isPrefixed = isString(key) && "$" === key[0];
                                if (needsCloning || isNullKey || isPrefixed) {
                                    newChildren = newChildren || children.slice(0, i);
                                    if (needsCloning || isPrefixed) {
                                        n = directClone(n)
                                    }
                                    if (isNullKey || isPrefixed) {
                                        n.key = "$" + i
                                    }
                                    newChildren.push(n)
                                } else if (newChildren) {
                                    newChildren.push(n)
                                }
                                n.flags |= 65536
                            }
                        }
                        newChildren = newChildren || children;
                        if (0 === newChildren.length) {
                            newChildFlags = 1
                        } else {
                            newChildFlags = 8
                        }
                    } else {
                        newChildren = children;
                        newChildren.flags |= 65536;
                        if (81920 & children.flags) {
                            newChildren = directClone(children)
                        }
                        newChildFlags = 2
                    }
                    vNode.children = newChildren;
                    vNode.childFlags = newChildFlags;
                    return vNode
                }

                function normalizeRoot(input) {
                    if (isInvalid(input) || isStringOrNumber(input)) {
                        return createTextVNode(input, null)
                    }
                    if (isArray(input)) {
                        return createFragment(input, 0, null)
                    }
                    return 16384 & input.flags ? directClone(input) : input
                }
                var xlinkNS = "http://www.w3.org/1999/xlink";
                var xmlNS = "http://www.w3.org/XML/1998/namespace";
                var namespaces = {
                    "xlink:actuate": xlinkNS,
                    "xlink:arcrole": xlinkNS,
                    "xlink:href": xlinkNS,
                    "xlink:role": xlinkNS,
                    "xlink:show": xlinkNS,
                    "xlink:title": xlinkNS,
                    "xlink:type": xlinkNS,
                    "xml:base": xmlNS,
                    "xml:lang": xmlNS,
                    "xml:space": xmlNS
                };

                function getDelegatedEventObject(v) {
                    return {
                        onClick: v,
                        onDblClick: v,
                        onFocusIn: v,
                        onFocusOut: v,
                        onKeyDown: v,
                        onKeyPress: v,
                        onKeyUp: v,
                        onMouseDown: v,
                        onMouseMove: v,
                        onMouseUp: v,
                        onTouchEnd: v,
                        onTouchMove: v,
                        onTouchStart: v
                    }
                }
                var attachedEventCounts = getDelegatedEventObject(0);
                var attachedEvents = getDelegatedEventObject(null);
                var syntheticEvents = getDelegatedEventObject(true);

                function updateOrAddSyntheticEvent(name, dom) {
                    var eventsObject = dom.$EV;
                    if (!eventsObject) {
                        eventsObject = dom.$EV = getDelegatedEventObject(null)
                    }
                    if (!eventsObject[name]) {
                        if (1 === ++attachedEventCounts[name]) {
                            attachedEvents[name] = function(name) {
                                var attachedEvent = "onClick" === name || "onDblClick" === name ? function(name) {
                                    return function(event) {
                                        if (0 !== event.button) {
                                            event.stopPropagation();
                                            return
                                        }
                                        dispatchEvents(event, true, name, extendEventProperties(event))
                                    }
                                }(name) : function(name) {
                                    return function(event) {
                                        dispatchEvents(event, false, name, extendEventProperties(event))
                                    }
                                }(name);
                                document.addEventListener(normalizeEventName(name), attachedEvent);
                                return attachedEvent
                            }(name)
                        }
                    }
                    return eventsObject
                }

                function unmountSyntheticEvent(name, dom) {
                    var eventsObject = dom.$EV;
                    if (eventsObject && eventsObject[name]) {
                        if (0 === --attachedEventCounts[name]) {
                            document.removeEventListener(normalizeEventName(name), attachedEvents[name]);
                            attachedEvents[name] = null
                        }
                        eventsObject[name] = null
                    }
                }

                function dispatchEvents(event, isClick, name, eventData) {
                    var dom = function(event) {
                        return isFunction(event.composedPath) ? event.composedPath()[0] : event.target
                    }(event);
                    do {
                        if (isClick && dom.disabled) {
                            return
                        }
                        var eventsObject = dom.$EV;
                        if (eventsObject) {
                            var currentEvent = eventsObject[name];
                            if (currentEvent) {
                                eventData.dom = dom;
                                currentEvent.event ? currentEvent.event(currentEvent.data, event) : currentEvent(event);
                                if (event.cancelBubble) {
                                    return
                                }
                            }
                        }
                        dom = dom.parentNode
                    } while (!isNull(dom))
                }

                function stopPropagation() {
                    this.cancelBubble = true;
                    if (!this.immediatePropagationStopped) {
                        this.stopImmediatePropagation()
                    }
                }

                function isDefaultPrevented() {
                    return this.defaultPrevented
                }

                function isPropagationStopped() {
                    return this.cancelBubble
                }

                function extendEventProperties(event) {
                    var eventData = {
                        dom: document
                    };
                    event.isDefaultPrevented = isDefaultPrevented;
                    event.isPropagationStopped = isPropagationStopped;
                    event.stopPropagation = stopPropagation;
                    Object.defineProperty(event, "currentTarget", {
                        configurable: true,
                        get: function() {
                            return eventData.dom
                        }
                    });
                    return eventData
                }

                function triggerEventListener(props, methodName, e) {
                    if (props[methodName]) {
                        var listener = props[methodName];
                        if (listener.event) {
                            listener.event(listener.data, e)
                        } else {
                            listener(e)
                        }
                    } else {
                        var nativeListenerName = methodName.toLowerCase();
                        if (props[nativeListenerName]) {
                            props[nativeListenerName](e)
                        }
                    }
                }

                function createWrappedFunction(methodName, applyValue) {
                    var fnMethod = function(e) {
                        var vNode = this.$V;
                        if (!vNode) {
                            return
                        }
                        var props = vNode.props || EMPTY_OBJ;
                        var dom = vNode.dom;
                        if (isString(methodName)) {
                            triggerEventListener(props, methodName, e)
                        } else {
                            for (var i = 0; i < methodName.length; ++i) {
                                triggerEventListener(props, methodName[i], e)
                            }
                        }
                        if (isFunction(applyValue)) {
                            var newVNode = this.$V;
                            var newProps = newVNode.props || EMPTY_OBJ;
                            applyValue(newProps, dom, false, newVNode)
                        }
                    };
                    Object.defineProperty(fnMethod, "wrapped", {
                        configurable: false,
                        enumerable: false,
                        value: true,
                        writable: false
                    });
                    return fnMethod
                }

                function attachEvent(dom, eventName, handler) {
                    var previousKey = "$" + eventName;
                    var previousArgs = dom[previousKey];
                    if (previousArgs) {
                        if (previousArgs[1].wrapped) {
                            return
                        }
                        dom.removeEventListener(previousArgs[0], previousArgs[1]);
                        dom[previousKey] = null
                    }
                    if (isFunction(handler)) {
                        dom.addEventListener(eventName, handler);
                        dom[previousKey] = [eventName, handler]
                    }
                }

                function isCheckedType(type) {
                    return "checkbox" === type || "radio" === type
                }
                var onTextInputChange = createWrappedFunction("onInput", applyValueInput);
                var wrappedOnChange = createWrappedFunction(["onClick", "onChange"], applyValueInput);

                function emptywrapper(event) {
                    event.stopPropagation()
                }
                emptywrapper.wrapped = true;

                function applyValueInput(nextPropsOrEmpty, dom) {
                    var type = nextPropsOrEmpty.type;
                    var value = nextPropsOrEmpty.value;
                    var checked = nextPropsOrEmpty.checked;
                    var multiple = nextPropsOrEmpty.multiple;
                    var defaultValue = nextPropsOrEmpty.defaultValue;
                    var hasValue = !isNullOrUndef(value);
                    if (type && type !== dom.type) {
                        dom.setAttribute("type", type)
                    }
                    if (!isNullOrUndef(multiple) && multiple !== dom.multiple) {
                        dom.multiple = multiple
                    }
                    if (!isNullOrUndef(defaultValue) && !hasValue) {
                        dom.defaultValue = defaultValue + ""
                    }
                    if (isCheckedType(type)) {
                        if (hasValue) {
                            dom.value = value
                        }
                        if (!isNullOrUndef(checked)) {
                            dom.checked = checked
                        }
                    } else if (hasValue && dom.value !== value) {
                        dom.defaultValue = value;
                        dom.value = value
                    } else if (!isNullOrUndef(checked)) {
                        dom.checked = checked
                    }
                }

                function updateChildOptions(vNode, value) {
                    if ("option" === vNode.type) {
                        ! function(vNode, value) {
                            var props = vNode.props || EMPTY_OBJ;
                            var dom = vNode.dom;
                            dom.value = props.value;
                            if (props.value === value || isArray(value) && -1 !== value.indexOf(props.value)) {
                                dom.selected = true
                            } else if (!isNullOrUndef(value) || !isNullOrUndef(props.selected)) {
                                dom.selected = props.selected || false
                            }
                        }(vNode, value)
                    } else {
                        var children = vNode.children;
                        var flags = vNode.flags;
                        if (4 & flags) {
                            updateChildOptions(children.$LI, value)
                        } else if (8 & flags) {
                            updateChildOptions(children, value)
                        } else if (2 === vNode.childFlags) {
                            updateChildOptions(children, value)
                        } else if (12 & vNode.childFlags) {
                            for (var i = 0, len = children.length; i < len; ++i) {
                                updateChildOptions(children[i], value)
                            }
                        }
                    }
                }
                var onSelectChange = createWrappedFunction("onChange", applyValueSelect);

                function applyValueSelect(nextPropsOrEmpty, dom, mounting, vNode) {
                    var multiplePropInBoolean = Boolean(nextPropsOrEmpty.multiple);
                    if (!isNullOrUndef(nextPropsOrEmpty.multiple) && multiplePropInBoolean !== dom.multiple) {
                        dom.multiple = multiplePropInBoolean
                    }
                    var index = nextPropsOrEmpty.selectedIndex;
                    if (-1 === index) {
                        dom.selectedIndex = -1
                    }
                    var childFlags = vNode.childFlags;
                    if (1 !== childFlags) {
                        var value = nextPropsOrEmpty.value;
                        if ((o = index, "number" === typeof o) && index > -1 && dom.options[index]) {
                            value = dom.options[index].value
                        }
                        if (mounting && isNullOrUndef(value)) {
                            value = nextPropsOrEmpty.defaultValue
                        }
                        updateChildOptions(vNode, value)
                    }
                    var o
                }
                var onTextareaInputChange = createWrappedFunction("onInput", applyValueTextArea);
                var wrappedOnChange$1 = createWrappedFunction("onChange");

                function applyValueTextArea(nextPropsOrEmpty, dom, mounting) {
                    var value = nextPropsOrEmpty.value;
                    var domValue = dom.value;
                    if (isNullOrUndef(value)) {
                        if (mounting) {
                            var defaultValue = nextPropsOrEmpty.defaultValue;
                            if (!isNullOrUndef(defaultValue) && defaultValue !== domValue) {
                                dom.defaultValue = defaultValue;
                                dom.value = defaultValue
                            }
                        }
                    } else if (domValue !== value) {
                        dom.defaultValue = value;
                        dom.value = value
                    }
                }

                function processElement(flags, vNode, dom, nextPropsOrEmpty, mounting, isControlled) {
                    if (64 & flags) {
                        applyValueInput(nextPropsOrEmpty, dom)
                    } else if (256 & flags) {
                        applyValueSelect(nextPropsOrEmpty, dom, mounting, vNode)
                    } else if (128 & flags) {
                        applyValueTextArea(nextPropsOrEmpty, dom, mounting)
                    }
                    if (isControlled) {
                        dom.$V = vNode
                    }
                }

                function addFormElementEventHandlers(flags, dom, nextPropsOrEmpty) {
                    if (64 & flags) {
                        ! function(dom, nextPropsOrEmpty) {
                            if (isCheckedType(nextPropsOrEmpty.type)) {
                                attachEvent(dom, "change", wrappedOnChange);
                                attachEvent(dom, "click", emptywrapper)
                            } else {
                                attachEvent(dom, "input", onTextInputChange)
                            }
                        }(dom, nextPropsOrEmpty)
                    } else if (256 & flags) {
                        ! function(dom) {
                            attachEvent(dom, "change", onSelectChange)
                        }(dom)
                    } else if (128 & flags) {
                        ! function(dom, nextPropsOrEmpty) {
                            attachEvent(dom, "input", onTextareaInputChange);
                            if (nextPropsOrEmpty.onChange) {
                                attachEvent(dom, "change", wrappedOnChange$1)
                            }
                        }(dom, nextPropsOrEmpty)
                    }
                }

                function isControlledFormElement(nextPropsOrEmpty) {
                    return nextPropsOrEmpty.type && isCheckedType(nextPropsOrEmpty.type) ? !isNullOrUndef(nextPropsOrEmpty.checked) : !isNullOrUndef(nextPropsOrEmpty.value)
                }

                function createRef() {
                    return {
                        current: null
                    }
                }

                function forwardRef(render) {
                    return {
                        render: render
                    }
                }

                function unmountRef(ref) {
                    if (ref) {
                        if (!safeCall1(ref, null) && ref.current) {
                            ref.current = null
                        }
                    }
                }

                function mountRef(ref, value, lifecycle) {
                    if (ref && (isFunction(ref) || void 0 !== ref.current)) {
                        lifecycle.push((function() {
                            if (!safeCall1(ref, value) && void 0 !== ref.current) {
                                ref.current = value
                            }
                        }))
                    }
                }

                function remove(vNode, parentDOM) {
                    unmount(vNode);
                    removeVNodeDOM(vNode, parentDOM)
                }

                function unmount(vNode) {
                    var flags = vNode.flags;
                    var children = vNode.children;
                    var ref;
                    if (481 & flags) {
                        ref = vNode.ref;
                        var props = vNode.props;
                        unmountRef(ref);
                        var childFlags = vNode.childFlags;
                        if (!isNull(props)) {
                            var keys = Object.keys(props);
                            for (var i = 0, len = keys.length; i < len; i++) {
                                var key = keys[i];
                                if (syntheticEvents[key]) {
                                    unmountSyntheticEvent(key, vNode.dom)
                                }
                            }
                        }
                        if (12 & childFlags) {
                            unmountAllChildren(children)
                        } else if (2 === childFlags) {
                            unmount(children)
                        }
                    } else if (children) {
                        if (4 & flags) {
                            if (isFunction(children.componentWillUnmount)) {
                                children.componentWillUnmount()
                            }
                            unmountRef(vNode.ref);
                            children.$UN = true;
                            unmount(children.$LI)
                        } else if (8 & flags) {
                            ref = vNode.ref;
                            if (!isNullOrUndef(ref) && isFunction(ref.onComponentWillUnmount)) {
                                ref.onComponentWillUnmount(findDOMfromVNode(vNode, true), vNode.props || EMPTY_OBJ)
                            }
                            unmount(children)
                        } else if (1024 & flags) {
                            remove(children, vNode.ref)
                        } else if (8192 & flags) {
                            if (12 & vNode.childFlags) {
                                unmountAllChildren(children)
                            }
                        }
                    }
                }

                function unmountAllChildren(children) {
                    for (var i = 0, len = children.length; i < len; ++i) {
                        unmount(children[i])
                    }
                }

                function clearDOM(dom) {
                    dom.textContent = ""
                }

                function removeAllChildren(dom, vNode, children) {
                    unmountAllChildren(children);
                    if (8192 & vNode.flags) {
                        removeVNodeDOM(vNode, dom)
                    } else {
                        clearDOM(dom)
                    }
                }

                function patchDangerInnerHTML(lastValue, nextValue, lastVNode, dom) {
                    var lastHtml = lastValue && lastValue.__html || "";
                    var nextHtml = nextValue && nextValue.__html || "";
                    if (lastHtml !== nextHtml) {
                        if (!isNullOrUndef(nextHtml) && ! function(dom, innerHTML) {
                                var tempdom = document.createElement("i");
                                tempdom.innerHTML = innerHTML;
                                return tempdom.innerHTML === dom.innerHTML
                            }(dom, nextHtml)) {
                            if (!isNull(lastVNode)) {
                                if (12 & lastVNode.childFlags) {
                                    unmountAllChildren(lastVNode.children)
                                } else if (2 === lastVNode.childFlags) {
                                    unmount(lastVNode.children)
                                }
                                lastVNode.children = null;
                                lastVNode.childFlags = 1
                            }
                            dom.innerHTML = nextHtml
                        }
                    }
                }

                function patchProp(prop, lastValue, nextValue, dom, isSVG, hasControlledValue, lastVNode) {
                    switch (prop) {
                        case "children":
                        case "childrenType":
                        case "className":
                        case "defaultValue":
                        case "key":
                        case "multiple":
                        case "ref":
                        case "selectedIndex":
                            break;
                        case "autoFocus":
                            dom.autofocus = !!nextValue;
                            break;
                        case "allowfullscreen":
                        case "autoplay":
                        case "capture":
                        case "checked":
                        case "controls":
                        case "default":
                        case "disabled":
                        case "hidden":
                        case "indeterminate":
                        case "loop":
                        case "muted":
                        case "novalidate":
                        case "open":
                        case "readOnly":
                        case "required":
                        case "reversed":
                        case "scoped":
                        case "seamless":
                        case "selected":
                            dom[prop] = !!nextValue;
                            break;
                        case "defaultChecked":
                        case "value":
                        case "volume":
                            if (hasControlledValue && "value" === prop) {
                                break
                            }
                            var value = isNullOrUndef(nextValue) ? "" : nextValue;
                            if (dom[prop] !== value) {
                                dom[prop] = value
                            }
                            break;
                        case "style":
                            ! function(lastAttrValue, nextAttrValue, dom) {
                                if (isNullOrUndef(nextAttrValue)) {
                                    dom.removeAttribute("style");
                                    return
                                }
                                var domStyle = dom.style;
                                var style;
                                var value;
                                if (isString(nextAttrValue)) {
                                    domStyle.cssText = nextAttrValue;
                                    return
                                }
                                if (!isNullOrUndef(lastAttrValue) && !isString(lastAttrValue)) {
                                    for (style in nextAttrValue) {
                                        value = nextAttrValue[style];
                                        if (value !== lastAttrValue[style]) {
                                            domStyle.setProperty(style, value)
                                        }
                                    }
                                    for (style in lastAttrValue) {
                                        if (isNullOrUndef(nextAttrValue[style])) {
                                            domStyle.removeProperty(style)
                                        }
                                    }
                                } else {
                                    for (style in nextAttrValue) {
                                        value = nextAttrValue[style];
                                        domStyle.setProperty(style, value)
                                    }
                                }
                            }(lastValue, nextValue, dom);
                            break;
                        case "dangerouslySetInnerHTML":
                            patchDangerInnerHTML(lastValue, nextValue, lastVNode, dom);
                            break;
                        default:
                            if (syntheticEvents[prop]) {
                                ! function(name, lastEvent, nextEvent, dom) {
                                    if (isFunction(nextEvent)) {
                                        updateOrAddSyntheticEvent(name, dom)[name] = nextEvent
                                    } else if (isLinkEventObject(nextEvent)) {
                                        if (isLastValueSameLinkEvent(lastEvent, nextEvent)) {
                                            return
                                        }
                                        updateOrAddSyntheticEvent(name, dom)[name] = nextEvent
                                    } else {
                                        unmountSyntheticEvent(name, dom)
                                    }
                                }(prop, lastValue, nextValue, dom)
                            } else if (111 === prop.charCodeAt(0) && 110 === prop.charCodeAt(1)) {
                                ! function(name, lastValue, nextValue, dom) {
                                    if (isLinkEventObject(nextValue)) {
                                        if (isLastValueSameLinkEvent(lastValue, nextValue)) {
                                            return
                                        }
                                        nextValue = function(nextValue) {
                                            var ev = nextValue.event;
                                            return function(e) {
                                                ev(nextValue.data, e)
                                            }
                                        }(nextValue)
                                    }
                                    attachEvent(dom, normalizeEventName(name), nextValue)
                                }(prop, lastValue, nextValue, dom)
                            } else if (isNullOrUndef(nextValue)) {
                                dom.removeAttribute(prop)
                            } else if (isSVG && namespaces[prop]) {
                                dom.setAttributeNS(namespaces[prop], prop, nextValue)
                            } else {
                                dom.setAttribute(prop, nextValue)
                            }
                    }
                }

                function mountProps(vNode, flags, props, dom, isSVG) {
                    var hasControlledValue = false;
                    var isFormElement = (448 & flags) > 0;
                    if (isFormElement) {
                        hasControlledValue = isControlledFormElement(props);
                        if (hasControlledValue) {
                            addFormElementEventHandlers(flags, dom, props)
                        }
                    }
                    for (var prop in props) {
                        patchProp(prop, null, props[prop], dom, isSVG, hasControlledValue, null)
                    }
                    if (isFormElement) {
                        processElement(flags, vNode, dom, props, true, hasControlledValue)
                    }
                }

                function renderNewInput(instance, props, context) {
                    var nextInput = normalizeRoot(instance.render(props, instance.state, context));
                    var childContext = context;
                    if (isFunction(instance.getChildContext)) {
                        childContext = combineFrom(context, instance.getChildContext())
                    }
                    instance.$CX = childContext;
                    return nextInput
                }

                function createClassComponentInstance(vNode, Component, props, context, isSVG, lifecycle) {
                    var instance = new Component(props, context);
                    var usesNewAPI = instance.$N = Boolean(Component.getDerivedStateFromProps || instance.getSnapshotBeforeUpdate);
                    instance.$SVG = isSVG;
                    instance.$L = lifecycle;
                    vNode.children = instance;
                    instance.$BS = false;
                    instance.context = context;
                    if (instance.props === EMPTY_OBJ) {
                        instance.props = props
                    }
                    if (!usesNewAPI) {
                        if (isFunction(instance.componentWillMount)) {
                            instance.$BR = true;
                            instance.componentWillMount();
                            var pending = instance.$PS;
                            if (!isNull(pending)) {
                                var state = instance.state;
                                if (isNull(state)) {
                                    instance.state = pending
                                } else {
                                    for (var key in pending) {
                                        state[key] = pending[key]
                                    }
                                }
                                instance.$PS = null
                            }
                            instance.$BR = false
                        }
                    } else {
                        instance.state = createDerivedState(instance, props, instance.state)
                    }
                    instance.$LI = renderNewInput(instance, props, context);
                    return instance
                }

                function renderFunctionalComponent(vNode, context) {
                    var props = vNode.props || EMPTY_OBJ;
                    return 32768 & vNode.flags ? vNode.type.render(props, vNode.ref, context) : vNode.type(props, context)
                }

                function mount(vNode, parentDOM, context, isSVG, nextNode, lifecycle) {
                    var flags = vNode.flags |= 16384;
                    if (481 & flags) {
                        mountElement(vNode, parentDOM, context, isSVG, nextNode, lifecycle)
                    } else if (4 & flags) {
                        ! function(vNode, parentDOM, context, isSVG, nextNode, lifecycle) {
                            var instance = createClassComponentInstance(vNode, vNode.type, vNode.props || EMPTY_OBJ, context, isSVG, lifecycle);
                            mount(instance.$LI, parentDOM, instance.$CX, isSVG, nextNode, lifecycle);
                            mountClassComponentCallbacks(vNode.ref, instance, lifecycle)
                        }(vNode, parentDOM, context, isSVG, nextNode, lifecycle)
                    } else if (8 & flags) {
                        ! function(vNode, parentDOM, context, isSVG, nextNode, lifecycle) {
                            mount(vNode.children = normalizeRoot(renderFunctionalComponent(vNode, context)), parentDOM, context, isSVG, nextNode, lifecycle)
                        }(vNode, parentDOM, context, isSVG, nextNode, lifecycle);
                        mountFunctionalComponentCallbacks(vNode, lifecycle)
                    } else if (512 & flags || 16 & flags) {
                        mountText(vNode, parentDOM, nextNode)
                    } else if (8192 & flags) {
                        ! function(vNode, context, parentDOM, isSVG, nextNode, lifecycle) {
                            var children = vNode.children;
                            var childFlags = vNode.childFlags;
                            if (12 & childFlags && 0 === children.length) {
                                childFlags = vNode.childFlags = 2;
                                children = vNode.children = createVoidVNode()
                            }
                            if (2 === childFlags) {
                                mount(children, parentDOM, context, isSVG, nextNode, lifecycle)
                            } else {
                                mountArrayChildren(children, parentDOM, context, isSVG, nextNode, lifecycle)
                            }
                        }(vNode, context, parentDOM, isSVG, nextNode, lifecycle)
                    } else if (1024 & flags) {
                        ! function(vNode, context, parentDOM, nextNode, lifecycle) {
                            mount(vNode.children, vNode.ref, context, false, null, lifecycle);
                            var placeHolderVNode = createVoidVNode();
                            mountText(placeHolderVNode, parentDOM, nextNode);
                            vNode.dom = placeHolderVNode.dom
                        }(vNode, context, parentDOM, nextNode, lifecycle)
                    }
                }

                function mountText(vNode, parentDOM, nextNode) {
                    var dom = vNode.dom = document.createTextNode(vNode.children);
                    if (!isNull(parentDOM)) {
                        insertOrAppend(parentDOM, dom, nextNode)
                    }
                }

                function mountElement(vNode, parentDOM, context, isSVG, nextNode, lifecycle) {
                    var flags = vNode.flags;
                    var props = vNode.props;
                    var className = vNode.className;
                    var childFlags = vNode.childFlags;
                    var dom = vNode.dom = function(tag, isSVG) {
                        if (isSVG) {
                            return document.createElementNS("http://www.w3.org/2000/svg", tag)
                        }
                        return document.createElement(tag)
                    }(vNode.type, isSVG = isSVG || (32 & flags) > 0);
                    var children = vNode.children;
                    if (!isNullOrUndef(className) && "" !== className) {
                        if (isSVG) {
                            dom.setAttribute("class", className)
                        } else {
                            dom.className = className
                        }
                    }
                    if (16 === childFlags) {
                        setTextContent(dom, children)
                    } else if (1 !== childFlags) {
                        var childrenIsSVG = isSVG && "foreignObject" !== vNode.type;
                        if (2 === childFlags) {
                            if (16384 & children.flags) {
                                vNode.children = children = directClone(children)
                            }
                            mount(children, dom, context, childrenIsSVG, null, lifecycle)
                        } else if (8 === childFlags || 4 === childFlags) {
                            mountArrayChildren(children, dom, context, childrenIsSVG, null, lifecycle)
                        }
                    }
                    if (!isNull(parentDOM)) {
                        insertOrAppend(parentDOM, dom, nextNode)
                    }
                    if (!isNull(props)) {
                        mountProps(vNode, flags, props, dom, isSVG)
                    }
                    mountRef(vNode.ref, dom, lifecycle)
                }

                function mountArrayChildren(children, dom, context, isSVG, nextNode, lifecycle) {
                    for (var i = 0; i < children.length; ++i) {
                        var child = children[i];
                        if (16384 & child.flags) {
                            children[i] = child = directClone(child)
                        }
                        mount(child, dom, context, isSVG, nextNode, lifecycle)
                    }
                }

                function mountClassComponentCallbacks(ref, instance, lifecycle) {
                    mountRef(ref, instance, lifecycle);
                    if (isFunction(instance.componentDidMount)) {
                        lifecycle.push(function(instance) {
                            return function() {
                                instance.componentDidMount()
                            }
                        }(instance))
                    }
                }

                function mountFunctionalComponentCallbacks(vNode, lifecycle) {
                    var ref = vNode.ref;
                    if (!isNullOrUndef(ref)) {
                        safeCall1(ref.onComponentWillMount, vNode.props || EMPTY_OBJ);
                        if (isFunction(ref.onComponentDidMount)) {
                            lifecycle.push(function(ref, vNode) {
                                return function() {
                                    ref.onComponentDidMount(findDOMfromVNode(vNode, true), vNode.props || EMPTY_OBJ)
                                }
                            }(ref, vNode))
                        }
                    }
                }

                function patch(lastVNode, nextVNode, parentDOM, context, isSVG, nextNode, lifecycle) {
                    var nextFlags = nextVNode.flags |= 16384;
                    if (lastVNode.flags !== nextFlags || lastVNode.type !== nextVNode.type || lastVNode.key !== nextVNode.key || 2048 & nextFlags) {
                        if (16384 & lastVNode.flags) {
                            ! function(lastVNode, nextVNode, parentDOM, context, isSVG, lifecycle) {
                                unmount(lastVNode);
                                if (0 !== (nextVNode.flags & lastVNode.flags & 2033)) {
                                    mount(nextVNode, null, context, isSVG, null, lifecycle);
                                    ! function(parentDOM, newDom, lastDom) {
                                        parentDOM.replaceChild(newDom, lastDom)
                                    }(parentDOM, nextVNode.dom, lastVNode.dom)
                                } else {
                                    mount(nextVNode, parentDOM, context, isSVG, findDOMfromVNode(lastVNode, true), lifecycle);
                                    removeVNodeDOM(lastVNode, parentDOM)
                                }
                            }(lastVNode, nextVNode, parentDOM, context, isSVG, lifecycle)
                        } else {
                            mount(nextVNode, parentDOM, context, isSVG, nextNode, lifecycle)
                        }
                    } else if (481 & nextFlags) {
                        ! function(lastVNode, nextVNode, context, isSVG, nextFlags, lifecycle) {
                            var dom = nextVNode.dom = lastVNode.dom;
                            var lastProps = lastVNode.props;
                            var nextProps = nextVNode.props;
                            var isFormElement = false;
                            var hasControlledValue = false;
                            var nextPropsOrEmpty;
                            isSVG = isSVG || (32 & nextFlags) > 0;
                            if (lastProps !== nextProps) {
                                var lastPropsOrEmpty = lastProps || EMPTY_OBJ;
                                nextPropsOrEmpty = nextProps || EMPTY_OBJ;
                                if (nextPropsOrEmpty !== EMPTY_OBJ) {
                                    isFormElement = (448 & nextFlags) > 0;
                                    if (isFormElement) {
                                        hasControlledValue = isControlledFormElement(nextPropsOrEmpty)
                                    }
                                    for (var prop in nextPropsOrEmpty) {
                                        var lastValue = lastPropsOrEmpty[prop];
                                        var nextValue = nextPropsOrEmpty[prop];
                                        if (lastValue !== nextValue) {
                                            patchProp(prop, lastValue, nextValue, dom, isSVG, hasControlledValue, lastVNode)
                                        }
                                    }
                                }
                                if (lastPropsOrEmpty !== EMPTY_OBJ) {
                                    for (var prop$1 in lastPropsOrEmpty) {
                                        if (isNullOrUndef(nextPropsOrEmpty[prop$1]) && !isNullOrUndef(lastPropsOrEmpty[prop$1])) {
                                            patchProp(prop$1, lastPropsOrEmpty[prop$1], null, dom, isSVG, hasControlledValue, lastVNode)
                                        }
                                    }
                                }
                            }
                            var nextChildren = nextVNode.children;
                            var nextClassName = nextVNode.className;
                            if (lastVNode.className !== nextClassName) {
                                if (isNullOrUndef(nextClassName)) {
                                    dom.removeAttribute("class")
                                } else if (isSVG) {
                                    dom.setAttribute("class", nextClassName)
                                } else {
                                    dom.className = nextClassName
                                }
                            }
                            if (4096 & nextFlags) {
                                ! function(dom, nextChildren) {
                                    if (dom.textContent !== nextChildren) {
                                        dom.textContent = nextChildren
                                    }
                                }(dom, nextChildren)
                            } else {
                                patchChildren(lastVNode.childFlags, nextVNode.childFlags, lastVNode.children, nextChildren, dom, context, isSVG && "foreignObject" !== nextVNode.type, null, lastVNode, lifecycle)
                            }
                            if (isFormElement) {
                                processElement(nextFlags, nextVNode, dom, nextPropsOrEmpty, false, hasControlledValue)
                            }
                            var nextRef = nextVNode.ref;
                            var lastRef = lastVNode.ref;
                            if (lastRef !== nextRef) {
                                unmountRef(lastRef);
                                mountRef(nextRef, dom, lifecycle)
                            }
                        }(lastVNode, nextVNode, context, isSVG, nextFlags, lifecycle)
                    } else if (4 & nextFlags) {
                        ! function(lastVNode, nextVNode, parentDOM, context, isSVG, nextNode, lifecycle) {
                            var instance = nextVNode.children = lastVNode.children;
                            if (isNull(instance)) {
                                return
                            }
                            instance.$L = lifecycle;
                            var nextProps = nextVNode.props || EMPTY_OBJ;
                            var nextRef = nextVNode.ref;
                            var lastRef = lastVNode.ref;
                            var nextState = instance.state;
                            if (!instance.$N) {
                                if (isFunction(instance.componentWillReceiveProps)) {
                                    instance.$BR = true;
                                    instance.componentWillReceiveProps(nextProps, context);
                                    if (instance.$UN) {
                                        return
                                    }
                                    instance.$BR = false
                                }
                                if (!isNull(instance.$PS)) {
                                    nextState = combineFrom(nextState, instance.$PS);
                                    instance.$PS = null
                                }
                            }
                            updateClassComponent(instance, nextState, nextProps, parentDOM, context, isSVG, false, nextNode, lifecycle);
                            if (lastRef !== nextRef) {
                                unmountRef(lastRef);
                                mountRef(nextRef, instance, lifecycle)
                            }
                        }(lastVNode, nextVNode, parentDOM, context, isSVG, nextNode, lifecycle)
                    } else if (8 & nextFlags) {
                        ! function(lastVNode, nextVNode, parentDOM, context, isSVG, nextNode, lifecycle) {
                            var shouldUpdate = true;
                            var nextProps = nextVNode.props || EMPTY_OBJ;
                            var nextRef = nextVNode.ref;
                            var lastProps = lastVNode.props;
                            var nextHooksDefined = !isNullOrUndef(nextRef);
                            var lastInput = lastVNode.children;
                            if (nextHooksDefined && isFunction(nextRef.onComponentShouldUpdate)) {
                                shouldUpdate = nextRef.onComponentShouldUpdate(lastProps, nextProps)
                            }
                            if (false !== shouldUpdate) {
                                if (nextHooksDefined && isFunction(nextRef.onComponentWillUpdate)) {
                                    nextRef.onComponentWillUpdate(lastProps, nextProps)
                                }
                                var nextInput = normalizeRoot(renderFunctionalComponent(nextVNode, context));
                                patch(lastInput, nextInput, parentDOM, context, isSVG, nextNode, lifecycle);
                                nextVNode.children = nextInput;
                                if (nextHooksDefined && isFunction(nextRef.onComponentDidUpdate)) {
                                    nextRef.onComponentDidUpdate(lastProps, nextProps)
                                }
                            } else {
                                nextVNode.children = lastInput
                            }
                        }(lastVNode, nextVNode, parentDOM, context, isSVG, nextNode, lifecycle)
                    } else if (16 & nextFlags) {
                        ! function(lastVNode, nextVNode) {
                            var nextText = nextVNode.children;
                            var dom = nextVNode.dom = lastVNode.dom;
                            if (nextText !== lastVNode.children) {
                                dom.nodeValue = nextText
                            }
                        }(lastVNode, nextVNode)
                    } else if (512 & nextFlags) {
                        nextVNode.dom = lastVNode.dom
                    } else if (8192 & nextFlags) {
                        ! function(lastVNode, nextVNode, parentDOM, context, isSVG, lifecycle) {
                            var lastChildren = lastVNode.children;
                            var nextChildren = nextVNode.children;
                            var lastChildFlags = lastVNode.childFlags;
                            var nextChildFlags = nextVNode.childFlags;
                            var nextNode = null;
                            if (12 & nextChildFlags && 0 === nextChildren.length) {
                                nextChildFlags = nextVNode.childFlags = 2;
                                nextChildren = nextVNode.children = createVoidVNode()
                            }
                            var nextIsSingle = 0 !== (2 & nextChildFlags);
                            if (12 & lastChildFlags) {
                                var lastLen = lastChildren.length;
                                if (8 & lastChildFlags && 8 & nextChildFlags || nextIsSingle || !nextIsSingle && nextChildren.length > lastLen) {
                                    nextNode = findDOMfromVNode(lastChildren[lastLen - 1], false).nextSibling
                                }
                            }
                            patchChildren(lastChildFlags, nextChildFlags, lastChildren, nextChildren, parentDOM, context, isSVG, nextNode, lastVNode, lifecycle)
                        }(lastVNode, nextVNode, parentDOM, context, isSVG, lifecycle)
                    } else {
                        ! function(lastVNode, nextVNode, context, lifecycle) {
                            var lastContainer = lastVNode.ref;
                            var nextContainer = nextVNode.ref;
                            var nextChildren = nextVNode.children;
                            patchChildren(lastVNode.childFlags, nextVNode.childFlags, lastVNode.children, nextChildren, lastContainer, context, false, null, lastVNode, lifecycle);
                            nextVNode.dom = lastVNode.dom;
                            if (lastContainer !== nextContainer && !isInvalid(nextChildren)) {
                                var node = nextChildren.dom;
                                removeChild(lastContainer, node);
                                appendChild(nextContainer, node)
                            }
                        }(lastVNode, nextVNode, context, lifecycle)
                    }
                }

                function patchChildren(lastChildFlags, nextChildFlags, lastChildren, nextChildren, parentDOM, context, isSVG, nextNode, parentVNode, lifecycle) {
                    switch (lastChildFlags) {
                        case 2:
                            switch (nextChildFlags) {
                                case 2:
                                    patch(lastChildren, nextChildren, parentDOM, context, isSVG, nextNode, lifecycle);
                                    break;
                                case 1:
                                    remove(lastChildren, parentDOM);
                                    break;
                                case 16:
                                    unmount(lastChildren);
                                    setTextContent(parentDOM, nextChildren);
                                    break;
                                default:
                                    ! function(lastChildren, nextChildren, parentDOM, context, isSVG, lifecycle) {
                                        unmount(lastChildren);
                                        mountArrayChildren(nextChildren, parentDOM, context, isSVG, findDOMfromVNode(lastChildren, true), lifecycle);
                                        removeVNodeDOM(lastChildren, parentDOM)
                                    }(lastChildren, nextChildren, parentDOM, context, isSVG, lifecycle)
                            }
                            break;
                        case 1:
                            switch (nextChildFlags) {
                                case 2:
                                    mount(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle);
                                    break;
                                case 1:
                                    break;
                                case 16:
                                    setTextContent(parentDOM, nextChildren);
                                    break;
                                default:
                                    mountArrayChildren(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle)
                            }
                            break;
                        case 16:
                            switch (nextChildFlags) {
                                case 16:
                                    ! function(lastChildren, nextChildren, parentDOM) {
                                        if (lastChildren !== nextChildren) {
                                            if ("" !== lastChildren) {
                                                parentDOM.firstChild.nodeValue = nextChildren
                                            } else {
                                                setTextContent(parentDOM, nextChildren)
                                            }
                                        }
                                    }(lastChildren, nextChildren, parentDOM);
                                    break;
                                case 2:
                                    clearDOM(parentDOM);
                                    mount(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle);
                                    break;
                                case 1:
                                    clearDOM(parentDOM);
                                    break;
                                default:
                                    clearDOM(parentDOM);
                                    mountArrayChildren(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle)
                            }
                            break;
                        default:
                            switch (nextChildFlags) {
                                case 16:
                                    unmountAllChildren(lastChildren);
                                    setTextContent(parentDOM, nextChildren);
                                    break;
                                case 2:
                                    removeAllChildren(parentDOM, parentVNode, lastChildren);
                                    mount(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle);
                                    break;
                                case 1:
                                    removeAllChildren(parentDOM, parentVNode, lastChildren);
                                    break;
                                default:
                                    var lastLength = 0 | lastChildren.length;
                                    var nextLength = 0 | nextChildren.length;
                                    if (0 === lastLength) {
                                        if (nextLength > 0) {
                                            mountArrayChildren(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle)
                                        }
                                    } else if (0 === nextLength) {
                                        removeAllChildren(parentDOM, parentVNode, lastChildren)
                                    } else if (8 === nextChildFlags && 8 === lastChildFlags) {
                                        ! function(a, b, dom, context, isSVG, aLength, bLength, outerEdge, parentVNode, lifecycle) {
                                            var aEnd = aLength - 1;
                                            var bEnd = bLength - 1;
                                            var j = 0;
                                            var aNode = a[j];
                                            var bNode = b[j];
                                            var nextPos;
                                            var nextNode;
                                            outer: {
                                                while (aNode.key === bNode.key) {
                                                    if (16384 & bNode.flags) {
                                                        b[j] = bNode = directClone(bNode)
                                                    }
                                                    patch(aNode, bNode, dom, context, isSVG, outerEdge, lifecycle);
                                                    a[j] = bNode;
                                                    ++j;
                                                    if (j > aEnd || j > bEnd) {
                                                        break outer
                                                    }
                                                    aNode = a[j];
                                                    bNode = b[j]
                                                }
                                                aNode = a[aEnd];bNode = b[bEnd];
                                                while (aNode.key === bNode.key) {
                                                    if (16384 & bNode.flags) {
                                                        b[bEnd] = bNode = directClone(bNode)
                                                    }
                                                    patch(aNode, bNode, dom, context, isSVG, outerEdge, lifecycle);
                                                    a[aEnd] = bNode;
                                                    aEnd--;
                                                    bEnd--;
                                                    if (j > aEnd || j > bEnd) {
                                                        break outer
                                                    }
                                                    aNode = a[aEnd];
                                                    bNode = b[bEnd]
                                                }
                                            }
                                            if (j > aEnd) {
                                                if (j <= bEnd) {
                                                    nextPos = bEnd + 1;
                                                    nextNode = nextPos < bLength ? findDOMfromVNode(b[nextPos], true) : outerEdge;
                                                    while (j <= bEnd) {
                                                        bNode = b[j];
                                                        if (16384 & bNode.flags) {
                                                            b[j] = bNode = directClone(bNode)
                                                        }++j;
                                                        mount(bNode, dom, context, isSVG, nextNode, lifecycle)
                                                    }
                                                }
                                            } else if (j > bEnd) {
                                                while (j <= aEnd) {
                                                    remove(a[j++], dom)
                                                }
                                            } else {
                                                ! function(a, b, context, aLength, bLength, aEnd, bEnd, j, dom, isSVG, outerEdge, parentVNode, lifecycle) {
                                                    var aNode;
                                                    var bNode;
                                                    var nextPos;
                                                    var i = 0;
                                                    var aStart = j;
                                                    var bStart = j;
                                                    var aLeft = aEnd - j + 1;
                                                    var bLeft = bEnd - j + 1;
                                                    var sources = new Int32Array(bLeft + 1);
                                                    var canRemoveWholeContent = aLeft === aLength;
                                                    var moved = false;
                                                    var pos = 0;
                                                    var patched = 0;
                                                    if (bLength < 4 || (aLeft | bLeft) < 32) {
                                                        for (i = aStart; i <= aEnd; ++i) {
                                                            aNode = a[i];
                                                            if (patched < bLeft) {
                                                                for (j = bStart; j <= bEnd; j++) {
                                                                    bNode = b[j];
                                                                    if (aNode.key === bNode.key) {
                                                                        sources[j - bStart] = i + 1;
                                                                        if (canRemoveWholeContent) {
                                                                            canRemoveWholeContent = false;
                                                                            while (aStart < i) {
                                                                                remove(a[aStart++], dom)
                                                                            }
                                                                        }
                                                                        if (pos > j) {
                                                                            moved = true
                                                                        } else {
                                                                            pos = j
                                                                        }
                                                                        if (16384 & bNode.flags) {
                                                                            b[j] = bNode = directClone(bNode)
                                                                        }
                                                                        patch(aNode, bNode, dom, context, isSVG, outerEdge, lifecycle);
                                                                        ++patched;
                                                                        break
                                                                    }
                                                                }
                                                                if (!canRemoveWholeContent && j > bEnd) {
                                                                    remove(aNode, dom)
                                                                }
                                                            } else if (!canRemoveWholeContent) {
                                                                remove(aNode, dom)
                                                            }
                                                        }
                                                    } else {
                                                        var keyIndex = {};
                                                        for (i = bStart; i <= bEnd; ++i) {
                                                            keyIndex[b[i].key] = i
                                                        }
                                                        for (i = aStart; i <= aEnd; ++i) {
                                                            aNode = a[i];
                                                            if (patched < bLeft) {
                                                                j = keyIndex[aNode.key];
                                                                if (void 0 !== j) {
                                                                    if (canRemoveWholeContent) {
                                                                        canRemoveWholeContent = false;
                                                                        while (i > aStart) {
                                                                            remove(a[aStart++], dom)
                                                                        }
                                                                    }
                                                                    sources[j - bStart] = i + 1;
                                                                    if (pos > j) {
                                                                        moved = true
                                                                    } else {
                                                                        pos = j
                                                                    }
                                                                    bNode = b[j];
                                                                    if (16384 & bNode.flags) {
                                                                        b[j] = bNode = directClone(bNode)
                                                                    }
                                                                    patch(aNode, bNode, dom, context, isSVG, outerEdge, lifecycle);
                                                                    ++patched
                                                                } else if (!canRemoveWholeContent) {
                                                                    remove(aNode, dom)
                                                                }
                                                            } else if (!canRemoveWholeContent) {
                                                                remove(aNode, dom)
                                                            }
                                                        }
                                                    }
                                                    if (canRemoveWholeContent) {
                                                        removeAllChildren(dom, parentVNode, a);
                                                        mountArrayChildren(b, dom, context, isSVG, outerEdge, lifecycle)
                                                    } else if (moved) {
                                                        var seq = function(arr) {
                                                            var arrI = 0;
                                                            var i = 0;
                                                            var j = 0;
                                                            var k = 0;
                                                            var u = 0;
                                                            var v = 0;
                                                            var c = 0;
                                                            var len = arr.length;
                                                            if (len > maxLen) {
                                                                maxLen = len;
                                                                result = new Int32Array(len);
                                                                p = new Int32Array(len)
                                                            }
                                                            for (; i < len; ++i) {
                                                                arrI = arr[i];
                                                                if (0 !== arrI) {
                                                                    j = result[k];
                                                                    if (arr[j] < arrI) {
                                                                        p[i] = j;
                                                                        result[++k] = i;
                                                                        continue
                                                                    }
                                                                    u = 0;
                                                                    v = k;
                                                                    while (u < v) {
                                                                        c = u + v >> 1;
                                                                        if (arr[result[c]] < arrI) {
                                                                            u = c + 1
                                                                        } else {
                                                                            v = c
                                                                        }
                                                                    }
                                                                    if (arrI < arr[result[u]]) {
                                                                        if (u > 0) {
                                                                            p[i] = result[u - 1]
                                                                        }
                                                                        result[u] = i
                                                                    }
                                                                }
                                                            }
                                                            u = k + 1;
                                                            var seq = new Int32Array(u);
                                                            v = result[u - 1];
                                                            while (u-- > 0) {
                                                                seq[u] = v;
                                                                v = p[v];
                                                                result[u] = 0
                                                            }
                                                            return seq
                                                        }(sources);
                                                        j = seq.length - 1;
                                                        for (i = bLeft - 1; i >= 0; i--) {
                                                            if (0 === sources[i]) {
                                                                pos = i + bStart;
                                                                bNode = b[pos];
                                                                if (16384 & bNode.flags) {
                                                                    b[pos] = bNode = directClone(bNode)
                                                                }
                                                                nextPos = pos + 1;
                                                                mount(bNode, dom, context, isSVG, nextPos < bLength ? findDOMfromVNode(b[nextPos], true) : outerEdge, lifecycle)
                                                            } else if (j < 0 || i !== seq[j]) {
                                                                pos = i + bStart;
                                                                bNode = b[pos];
                                                                nextPos = pos + 1;
                                                                moveVNodeDOM(bNode, dom, nextPos < bLength ? findDOMfromVNode(b[nextPos], true) : outerEdge)
                                                            } else {
                                                                j--
                                                            }
                                                        }
                                                    } else if (patched !== bLeft) {
                                                        for (i = bLeft - 1; i >= 0; i--) {
                                                            if (0 === sources[i]) {
                                                                pos = i + bStart;
                                                                bNode = b[pos];
                                                                if (16384 & bNode.flags) {
                                                                    b[pos] = bNode = directClone(bNode)
                                                                }
                                                                nextPos = pos + 1;
                                                                mount(bNode, dom, context, isSVG, nextPos < bLength ? findDOMfromVNode(b[nextPos], true) : outerEdge, lifecycle)
                                                            }
                                                        }
                                                    }
                                                }(a, b, context, aLength, bLength, aEnd, bEnd, j, dom, isSVG, outerEdge, parentVNode, lifecycle)
                                            }
                                        }(lastChildren, nextChildren, parentDOM, context, isSVG, lastLength, nextLength, nextNode, parentVNode, lifecycle)
                                    } else {
                                        ! function(lastChildren, nextChildren, dom, context, isSVG, lastChildrenLength, nextChildrenLength, nextNode, lifecycle) {
                                            var commonLength = lastChildrenLength > nextChildrenLength ? nextChildrenLength : lastChildrenLength;
                                            var i = 0;
                                            var nextChild;
                                            var lastChild;
                                            for (; i < commonLength; ++i) {
                                                nextChild = nextChildren[i];
                                                lastChild = lastChildren[i];
                                                if (16384 & nextChild.flags) {
                                                    nextChild = nextChildren[i] = directClone(nextChild)
                                                }
                                                patch(lastChild, nextChild, dom, context, isSVG, nextNode, lifecycle);
                                                lastChildren[i] = nextChild
                                            }
                                            if (lastChildrenLength < nextChildrenLength) {
                                                for (i = commonLength; i < nextChildrenLength; ++i) {
                                                    nextChild = nextChildren[i];
                                                    if (16384 & nextChild.flags) {
                                                        nextChild = nextChildren[i] = directClone(nextChild)
                                                    }
                                                    mount(nextChild, dom, context, isSVG, nextNode, lifecycle)
                                                }
                                            } else if (lastChildrenLength > nextChildrenLength) {
                                                for (i = commonLength; i < lastChildrenLength; ++i) {
                                                    remove(lastChildren[i], dom)
                                                }
                                            }
                                        }(lastChildren, nextChildren, parentDOM, context, isSVG, lastLength, nextLength, nextNode, lifecycle)
                                    }
                            }
                    }
                }

                function updateClassComponent(instance, nextState, nextProps, parentDOM, context, isSVG, force, nextNode, lifecycle) {
                    var lastState = instance.state;
                    var lastProps = instance.props;
                    var usesNewAPI = Boolean(instance.$N);
                    var hasSCU = isFunction(instance.shouldComponentUpdate);
                    if (usesNewAPI) {
                        nextState = createDerivedState(instance, nextProps, nextState !== lastState ? combineFrom(lastState, nextState) : nextState)
                    }
                    if (force || !hasSCU || hasSCU && instance.shouldComponentUpdate(nextProps, nextState, context)) {
                        if (!usesNewAPI && isFunction(instance.componentWillUpdate)) {
                            instance.componentWillUpdate(nextProps, nextState, context)
                        }
                        instance.props = nextProps;
                        instance.state = nextState;
                        instance.context = context;
                        var snapshot = null;
                        var nextInput = renderNewInput(instance, nextProps, context);
                        if (usesNewAPI && isFunction(instance.getSnapshotBeforeUpdate)) {
                            snapshot = instance.getSnapshotBeforeUpdate(lastProps, lastState)
                        }
                        patch(instance.$LI, nextInput, parentDOM, instance.$CX, isSVG, nextNode, lifecycle);
                        instance.$LI = nextInput;
                        if (isFunction(instance.componentDidUpdate)) {
                            ! function(instance, lastProps, lastState, snapshot, lifecycle) {
                                lifecycle.push((function() {
                                    instance.componentDidUpdate(lastProps, lastState, snapshot)
                                }))
                            }(instance, lastProps, lastState, snapshot, lifecycle)
                        }
                    } else {
                        instance.props = nextProps;
                        instance.state = nextState;
                        instance.context = context
                    }
                }
                var result;
                var p;
                var maxLen = 0;
                var hasDocumentAvailable = "undefined" !== typeof document;
                if (hasDocumentAvailable) {
                    if (window.Node) {
                        Node.prototype.$EV = null;
                        Node.prototype.$V = null
                    }
                }

                function __render(input, parentDOM, callback, context) {
                    var lifecycle = [];
                    var rootInput = parentDOM.$V;
                    renderCheck.v = true;
                    if (isNullOrUndef(rootInput)) {
                        if (!isNullOrUndef(input)) {
                            if (16384 & input.flags) {
                                input = directClone(input)
                            }
                            mount(input, parentDOM, context, false, null, lifecycle);
                            parentDOM.$V = input;
                            rootInput = input
                        }
                    } else if (isNullOrUndef(input)) {
                        remove(rootInput, parentDOM);
                        parentDOM.$V = null
                    } else {
                        if (16384 & input.flags) {
                            input = directClone(input)
                        }
                        patch(rootInput, input, parentDOM, context, false, null, lifecycle);
                        rootInput = parentDOM.$V = input
                    }
                    callAll(lifecycle);
                    renderCheck.v = false;
                    if (isFunction(callback)) {
                        callback()
                    }
                    if (isFunction(options.renderComplete)) {
                        options.renderComplete(rootInput, parentDOM)
                    }
                }

                function render(input, parentDOM, callback, context) {
                    if (void 0 === callback) {
                        callback = null
                    }
                    if (void 0 === context) {
                        context = EMPTY_OBJ
                    }
                    __render(input, parentDOM, callback, context)
                }

                function createRenderer(parentDOM) {
                    return function(lastInput, nextInput, callback, context) {
                        if (!parentDOM) {
                            parentDOM = lastInput
                        }
                        render(nextInput, parentDOM, callback, context)
                    }
                }
                var QUEUE = [];
                var nextTick = "undefined" !== typeof Promise ? Promise.resolve().then.bind(Promise.resolve()) : function(a) {
                    window.setTimeout(a, 0)
                };
                var microTaskPending = false;

                function queueStateChanges(component, newState, callback, force) {
                    var pending = component.$PS;
                    if (isFunction(newState)) {
                        newState = newState(pending ? combineFrom(component.state, pending) : component.state, component.props, component.context)
                    }
                    if (isNullOrUndef(pending)) {
                        component.$PS = newState
                    } else {
                        for (var stateKey in newState) {
                            pending[stateKey] = newState[stateKey]
                        }
                    }
                    if (!component.$BR) {
                        if (!renderCheck.v) {
                            if (0 === QUEUE.length) {
                                applyState(component, force);
                                if (isFunction(callback)) {
                                    callback.call(component)
                                }
                                return
                            }
                        }
                        if (-1 === QUEUE.indexOf(component)) {
                            QUEUE.push(component)
                        }
                        if (force) {
                            component.$F = true
                        }
                        if (!microTaskPending) {
                            microTaskPending = true;
                            nextTick(rerender)
                        }
                        if (isFunction(callback)) {
                            var QU = component.$QU;
                            if (!QU) {
                                QU = component.$QU = []
                            }
                            QU.push(callback)
                        }
                    } else if (isFunction(callback)) {
                        component.$L.push(callback.bind(component))
                    }
                }

                function callSetStateCallbacks(component) {
                    var queue = component.$QU;
                    for (var i = 0; i < queue.length; ++i) {
                        queue[i].call(component)
                    }
                    component.$QU = null
                }

                function rerender() {
                    var component;
                    microTaskPending = false;
                    while (component = QUEUE.shift()) {
                        if (!component.$UN) {
                            var force = component.$F;
                            component.$F = false;
                            applyState(component, force);
                            if (component.$QU) {
                                callSetStateCallbacks(component)
                            }
                        }
                    }
                }

                function applyState(component, force) {
                    if (force || !component.$BR) {
                        var pendingState = component.$PS;
                        component.$PS = null;
                        var lifecycle = [];
                        renderCheck.v = true;
                        updateClassComponent(component, combineFrom(component.state, pendingState), component.props, findDOMfromVNode(component.$LI, true).parentNode, component.context, component.$SVG, force, null, lifecycle);
                        callAll(lifecycle);
                        renderCheck.v = false
                    } else {
                        component.state = component.$PS;
                        component.$PS = null
                    }
                }
                var Component = function(props, context) {
                    this.state = null;
                    this.$BR = false;
                    this.$BS = true;
                    this.$PS = null;
                    this.$LI = null;
                    this.$UN = false;
                    this.$CX = null;
                    this.$QU = null;
                    this.$N = false;
                    this.$L = null;
                    this.$SVG = false;
                    this.$F = false;
                    this.props = props || EMPTY_OBJ;
                    this.context = context || EMPTY_OBJ
                };
                Component.prototype.forceUpdate = function(callback) {
                    if (this.$UN) {
                        return
                    }
                    queueStateChanges(this, {}, callback, true)
                };
                Component.prototype.setState = function(newState, callback) {
                    if (this.$UN) {
                        return
                    }
                    if (!this.$BS) {
                        queueStateChanges(this, newState, callback, false)
                    }
                };
                Component.prototype.render = function(_nextProps, _nextState, _nextContext) {
                    return null
                };
                var version = "7.4.11";
                if (false) {}
            },
        98919:
            /*!***************************************************************!*\
              !*** ../../node_modules/rrule/dist/esm/index.js + 28 modules ***!
              \***************************************************************/
            function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
                __webpack_require__.r(__webpack_exports__);
                __webpack_require__.d(__webpack_exports__, {
                    Frequency: function() {
                        return Frequency
                    },
                    RRule: function() {
                        return RRule
                    },
                    RRuleSet: function() {
                        return RRuleSet
                    },
                    Weekday: function() {
                        return Weekday
                    },
                    datetime: function() {
                        return datetime
                    },
                    rrulestr: function() {
                        return rrulestr
                    }
                });
                var ALL_WEEKDAYS = ["MO", "TU", "WE", "TH", "FR", "SA", "SU"];
                var Weekday = function() {
                    function Weekday(weekday, n) {
                        if (0 === n) {
                            throw new Error("Can't create weekday with n == 0")
                        }
                        this.weekday = weekday;
                        this.n = n
                    }
                    Weekday.fromStr = function(str) {
                        return new Weekday(ALL_WEEKDAYS.indexOf(str))
                    };
                    Weekday.prototype.nth = function(n) {
                        return this.n === n ? this : new Weekday(this.weekday, n)
                    };
                    Weekday.prototype.equals = function(other) {
                        return this.weekday === other.weekday && this.n === other.n
                    };
                    Weekday.prototype.toString = function() {
                        var s = ALL_WEEKDAYS[this.weekday];
                        if (this.n) {
                            s = (this.n > 0 ? "+" : "") + String(this.n) + s
                        }
                        return s
                    };
                    Weekday.prototype.getJsWeekday = function() {
                        return 6 === this.weekday ? 0 : this.weekday + 1
                    };
                    return Weekday
                }();
                var isPresent = function(value) {
                    return null !== value && void 0 !== value
                };
                var isNumber = function(value) {
                    return "number" === typeof value
                };
                var isWeekdayStr = function(value) {
                    return "string" === typeof value && ALL_WEEKDAYS.includes(value)
                };
                var isArray = Array.isArray;
                var range = function(start, end) {
                    if (void 0 === end) {
                        end = start
                    }
                    if (1 === arguments.length) {
                        end = start;
                        start = 0
                    }
                    var rang = [];
                    for (var i = start; i < end; i++) {
                        rang.push(i)
                    }
                    return rang
                };
                var repeat = function(value, times) {
                    var i = 0;
                    var array = [];
                    if (isArray(value)) {
                        for (; i < times; i++) {
                            array[i] = [].concat(value)
                        }
                    } else {
                        for (; i < times; i++) {
                            array[i] = value
                        }
                    }
                    return array
                };
                var toArray = function(item) {
                    if (isArray(item)) {
                        return item
                    }
                    return [item]
                };

                function padStart(item, targetLength, padString) {
                    if (void 0 === padString) {
                        padString = " "
                    }
                    var str = String(item);
                    targetLength >>= 0;
                    if (str.length > targetLength) {
                        return String(str)
                    }
                    targetLength -= str.length;
                    if (targetLength > padString.length) {
                        padString += repeat(padString, targetLength / padString.length)
                    }
                    return padString.slice(0, targetLength) + String(str)
                }
                var pymod = function(a, b) {
                    var r = a % b;
                    return r * b < 0 ? r + b : r
                };
                var divmod = function(a, b) {
                    return {
                        div: Math.floor(a / b),
                        mod: pymod(a, b)
                    }
                };
                var empty = function(obj) {
                    return !isPresent(obj) || 0 === obj.length
                };
                var notEmpty = function(obj) {
                    return !empty(obj)
                };
                var includes = function(arr, val) {
                    return notEmpty(arr) && -1 !== arr.indexOf(val)
                };
                var datetime = function(y, m, d, h, i, s) {
                    if (void 0 === h) {
                        h = 0
                    }
                    if (void 0 === i) {
                        i = 0
                    }
                    if (void 0 === s) {
                        s = 0
                    }
                    return new Date(Date.UTC(y, m - 1, d, h, i, s))
                };
                var MONTH_DAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
                var ORDINAL_BASE = datetime(1970, 1, 1);
                var PY_WEEKDAYS = [6, 0, 1, 2, 3, 4, 5];
                var isLeapYear = function(year) {
                    return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0
                };
                var isDate = function(value) {
                    return value instanceof Date
                };
                var isValidDate = function(value) {
                    return isDate(value) && !isNaN(value.getTime())
                };
                var tzOffset = function(date) {
                    return 60 * date.getTimezoneOffset() * 1e3
                };
                var toOrdinal = function(date) {
                    return date1 = date, date2 = ORDINAL_BASE, date1ms = date1.getTime() - tzOffset(date1), date2ms = date2.getTime() - tzOffset(date2), differencems = date1ms - date2ms, Math.round(differencems / 864e5);
                    var date1, date2, date1ms, date2ms, differencems
                };
                var fromOrdinal = function(ordinal) {
                    return new Date(ORDINAL_BASE.getTime() + 864e5 * ordinal)
                };
                var getMonthDays = function(date) {
                    var month = date.getUTCMonth();
                    return 1 === month && isLeapYear(date.getUTCFullYear()) ? 29 : MONTH_DAYS[month]
                };
                var getWeekday = function(date) {
                    return PY_WEEKDAYS[date.getUTCDay()]
                };
                var monthRange = function(year, month) {
                    var date = datetime(year, month + 1, 1);
                    return [getWeekday(date), getMonthDays(date)]
                };
                var combine = function(date, time) {
                    time = time || date;
                    return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds()))
                };
                var dateutil_clone = function(date) {
                    var dolly = new Date(date.getTime());
                    return dolly
                };
                var cloneDates = function(dates) {
                    var clones = [];
                    for (var i = 0; i < dates.length; i++) {
                        clones.push(dateutil_clone(dates[i]))
                    }
                    return clones
                };
                var sort = function(dates) {
                    dates.sort((function(a, b) {
                        return a.getTime() - b.getTime()
                    }))
                };
                var timeToUntilString = function(time, utc) {
                    if (void 0 === utc) {
                        utc = true
                    }
                    var date = new Date(time);
                    return [padStart(date.getUTCFullYear().toString(), 4, "0"), padStart(date.getUTCMonth() + 1, 2, "0"), padStart(date.getUTCDate(), 2, "0"), "T", padStart(date.getUTCHours(), 2, "0"), padStart(date.getUTCMinutes(), 2, "0"), padStart(date.getUTCSeconds(), 2, "0"), utc ? "Z" : ""].join("")
                };
                var untilStringToDate = function(until) {
                    var bits = /^(\d{4})(\d{2})(\d{2})(T(\d{2})(\d{2})(\d{2})Z?)?$/.exec(until);
                    if (!bits) {
                        throw new Error("Invalid UNTIL value: ".concat(until))
                    }
                    return new Date(Date.UTC(parseInt(bits[1], 10), parseInt(bits[2], 10) - 1, parseInt(bits[3], 10), parseInt(bits[5], 10) || 0, parseInt(bits[6], 10) || 0, parseInt(bits[7], 10) || 0))
                };
                var dateTZtoISO8601 = function(date, timeZone) {
                    var dateStr = date.toLocaleString("sv-SE", {
                        timeZone: timeZone
                    });
                    return dateStr.replace(" ", "T") + "Z"
                };
                var IterResult = function() {
                    function IterResult(method, args) {
                        this.minDate = null;
                        this.maxDate = null;
                        this._result = [];
                        this.total = 0;
                        this.method = method;
                        this.args = args;
                        if ("between" === method) {
                            this.maxDate = args.inc ? args.before : new Date(args.before.getTime() - 1);
                            this.minDate = args.inc ? args.after : new Date(args.after.getTime() + 1)
                        } else if ("before" === method) {
                            this.maxDate = args.inc ? args.dt : new Date(args.dt.getTime() - 1)
                        } else if ("after" === method) {
                            this.minDate = args.inc ? args.dt : new Date(args.dt.getTime() + 1)
                        }
                    }
                    IterResult.prototype.accept = function(date) {
                        ++this.total;
                        var tooEarly = this.minDate && date < this.minDate;
                        var tooLate = this.maxDate && date > this.maxDate;
                        if ("between" === this.method) {
                            if (tooEarly) {
                                return true
                            }
                            if (tooLate) {
                                return false
                            }
                        } else if ("before" === this.method) {
                            if (tooLate) {
                                return false
                            }
                        } else if ("after" === this.method) {
                            if (tooEarly) {
                                return true
                            }
                            this.add(date);
                            return false
                        }
                        return this.add(date)
                    };
                    IterResult.prototype.add = function(date) {
                        this._result.push(date);
                        return true
                    };
                    IterResult.prototype.getValue = function() {
                        var res = this._result;
                        switch (this.method) {
                            case "all":
                            case "between":
                                return res;
                            case "before":
                            case "after":
                            default:
                                return res.length ? res[res.length - 1] : null
                        }
                    };
                    IterResult.prototype.clone = function() {
                        return new IterResult(this.method, this.args)
                    };
                    return IterResult
                }();
                var iterresult = IterResult;
                var extendStatics = function(d, b) {
                    extendStatics = Object.setPrototypeOf || {
                        __proto__: []
                    }
                    instanceof Array && function(d, b) {
                        d.__proto__ = b
                    } || function(d, b) {
                        for (var p in b) {
                            if (Object.prototype.hasOwnProperty.call(b, p)) {
                                d[p] = b[p]
                            }
                        }
                    };
                    return extendStatics(d, b)
                };

                function __extends(d, b) {
                    if ("function" !== typeof b && null !== b) {
                        throw new TypeError("Class extends value " + String(b) + " is not a constructor or null")
                    }
                    extendStatics(d, b);

                    function __() {
                        this.constructor = d
                    }
                    d.prototype = null === b ? Object.create(b) : (__.prototype = b.prototype, new __)
                }
                var __assign = function() {
                    __assign = Object.assign || function(t) {
                        for (var s, i = 1, n = arguments.length; i < n; i++) {
                            s = arguments[i];
                            for (var p in s) {
                                if (Object.prototype.hasOwnProperty.call(s, p)) {
                                    t[p] = s[p]
                                }
                            }
                        }
                        return t
                    };
                    return __assign.apply(this, arguments)
                };
                Object.create;

                function __spreadArray(to, from, pack) {
                    if (pack || 2 === arguments.length) {
                        for (var ar, i = 0, l = from.length; i < l; i++) {
                            if (ar || !(i in from)) {
                                if (!ar) {
                                    ar = Array.prototype.slice.call(from, 0, i)
                                }
                                ar[i] = from[i]
                            }
                        }
                    }
                    return to.concat(ar || Array.prototype.slice.call(from))
                }
                Object.create;
                "function" === typeof SuppressedError && SuppressedError;
                var CallbackIterResult = function(_super) {
                    __extends(CallbackIterResult, _super);

                    function CallbackIterResult(method, args, iterator) {
                        var _this = _super.call(this, method, args) || this;
                        _this.iterator = iterator;
                        return _this
                    }
                    CallbackIterResult.prototype.add = function(date) {
                        if (this.iterator(date, this._result.length)) {
                            this._result.push(date);
                            return true
                        }
                        return false
                    };
                    return CallbackIterResult
                }(iterresult);
                var callbackiterresult = CallbackIterResult;
                var i18n = {
                    dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
                    monthNames: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
                    tokens: {
                        SKIP: /^[ \r\n\t]+|^\.$/,
                        number: /^[1-9][0-9]*/,
                        numberAsText: /^(one|two|three)/i,
                        every: /^every/i,
                        "day(s)": /^days?/i,
                        "weekday(s)": /^weekdays?/i,
                        "week(s)": /^weeks?/i,
                        "hour(s)": /^hours?/i,
                        "minute(s)": /^minutes?/i,
                        "month(s)": /^months?/i,
                        "year(s)": /^years?/i,
                        on: /^(on|in)/i,
                        at: /^(at)/i,
                        the: /^the/i,
                        first: /^first/i,
                        second: /^second/i,
                        third: /^third/i,
                        nth: /^([1-9][0-9]*)(\.|th|nd|rd|st)/i,
                        last: /^last/i,
                        for: /^for/i,
                        "time(s)": /^times?/i,
                        until: /^(un)?til/i,
                        monday: /^mo(n(day)?)?/i,
                        tuesday: /^tu(e(s(day)?)?)?/i,
                        wednesday: /^we(d(n(esday)?)?)?/i,
                        thursday: /^th(u(r(sday)?)?)?/i,
                        friday: /^fr(i(day)?)?/i,
                        saturday: /^sa(t(urday)?)?/i,
                        sunday: /^su(n(day)?)?/i,
                        january: /^jan(uary)?/i,
                        february: /^feb(ruary)?/i,
                        march: /^mar(ch)?/i,
                        april: /^apr(il)?/i,
                        may: /^may/i,
                        june: /^june?/i,
                        july: /^july?/i,
                        august: /^aug(ust)?/i,
                        september: /^sep(t(ember)?)?/i,
                        october: /^oct(ober)?/i,
                        november: /^nov(ember)?/i,
                        december: /^dec(ember)?/i,
                        comma: /^(,\s*|(and|or)\s*)+/i
                    }
                };
                var contains = function(arr, val) {
                    return -1 !== arr.indexOf(val)
                };
                var defaultGetText = function(id) {
                    return id.toString()
                };
                var defaultDateFormatter = function(year, month, day) {
                    return "".concat(month, " ").concat(day, ", ").concat(year)
                };
                var ToText = function() {
                    function ToText(rrule, gettext, language, dateFormatter) {
                        if (void 0 === gettext) {
                            gettext = defaultGetText
                        }
                        if (void 0 === language) {
                            language = i18n
                        }
                        if (void 0 === dateFormatter) {
                            dateFormatter = defaultDateFormatter
                        }
                        this.text = [];
                        this.language = language || i18n;
                        this.gettext = gettext;
                        this.dateFormatter = dateFormatter;
                        this.rrule = rrule;
                        this.options = rrule.options;
                        this.origOptions = rrule.origOptions;
                        if (this.origOptions.bymonthday) {
                            var bymonthday = [].concat(this.options.bymonthday);
                            var bynmonthday = [].concat(this.options.bynmonthday);
                            bymonthday.sort((function(a, b) {
                                return a - b
                            }));
                            bynmonthday.sort((function(a, b) {
                                return b - a
                            }));
                            this.bymonthday = bymonthday.concat(bynmonthday);
                            if (!this.bymonthday.length) {
                                this.bymonthday = null
                            }
                        }
                        if (isPresent(this.origOptions.byweekday)) {
                            var byweekday = !isArray(this.origOptions.byweekday) ? [this.origOptions.byweekday] : this.origOptions.byweekday;
                            var days = String(byweekday);
                            this.byweekday = {
                                allWeeks: byweekday.filter((function(weekday) {
                                    return !weekday.n
                                })),
                                someWeeks: byweekday.filter((function(weekday) {
                                    return Boolean(weekday.n)
                                })),
                                isWeekdays: -1 !== days.indexOf("MO") && -1 !== days.indexOf("TU") && -1 !== days.indexOf("WE") && -1 !== days.indexOf("TH") && -1 !== days.indexOf("FR") && -1 === days.indexOf("SA") && -1 === days.indexOf("SU"),
                                isEveryDay: -1 !== days.indexOf("MO") && -1 !== days.indexOf("TU") && -1 !== days.indexOf("WE") && -1 !== days.indexOf("TH") && -1 !== days.indexOf("FR") && -1 !== days.indexOf("SA") && -1 !== days.indexOf("SU")
                            };
                            var sortWeekDays = function(a, b) {
                                return a.weekday - b.weekday
                            };
                            this.byweekday.allWeeks.sort(sortWeekDays);
                            this.byweekday.someWeeks.sort(sortWeekDays);
                            if (!this.byweekday.allWeeks.length) {
                                this.byweekday.allWeeks = null
                            }
                            if (!this.byweekday.someWeeks.length) {
                                this.byweekday.someWeeks = null
                            }
                        } else {
                            this.byweekday = null
                        }
                    }
                    ToText.isFullyConvertible = function(rrule) {
                        if (!(rrule.options.freq in ToText.IMPLEMENTED)) {
                            return false
                        }
                        if (rrule.origOptions.until && rrule.origOptions.count) {
                            return false
                        }
                        for (var key in rrule.origOptions) {
                            if (contains(["dtstart", "wkst", "freq"], key)) {
                                return true
                            }
                            if (!contains(ToText.IMPLEMENTED[rrule.options.freq], key)) {
                                return false
                            }
                        }
                        return true
                    };
                    ToText.prototype.isFullyConvertible = function() {
                        return ToText.isFullyConvertible(this.rrule)
                    };
                    ToText.prototype.toString = function() {
                        var gettext = this.gettext;
                        if (!(this.options.freq in ToText.IMPLEMENTED)) {
                            return gettext("RRule error: Unable to fully convert this rrule to text")
                        }
                        this.text = [gettext("every")];
                        this[RRule.FREQUENCIES[this.options.freq]]();
                        if (this.options.until) {
                            this.add(gettext("until"));
                            var until = this.options.until;
                            this.add(this.dateFormatter(until.getUTCFullYear(), this.language.monthNames[until.getUTCMonth()], until.getUTCDate()))
                        } else if (this.options.count) {
                            this.add(gettext("for")).add(this.options.count.toString()).add(this.plural(this.options.count) ? gettext("times") : gettext("time"))
                        }
                        if (!this.isFullyConvertible()) {
                            this.add(gettext("(~ approximate)"))
                        }
                        return this.text.join("")
                    };
                    ToText.prototype.HOURLY = function() {
                        var gettext = this.gettext;
                        if (1 !== this.options.interval) {
                            this.add(this.options.interval.toString())
                        }
                        this.add(this.plural(this.options.interval) ? gettext("hours") : gettext("hour"))
                    };
                    ToText.prototype.MINUTELY = function() {
                        var gettext = this.gettext;
                        if (1 !== this.options.interval) {
                            this.add(this.options.interval.toString())
                        }
                        this.add(this.plural(this.options.interval) ? gettext("minutes") : gettext("minute"))
                    };
                    ToText.prototype.DAILY = function() {
                        var gettext = this.gettext;
                        if (1 !== this.options.interval) {
                            this.add(this.options.interval.toString())
                        }
                        if (this.byweekday && this.byweekday.isWeekdays) {
                            this.add(this.plural(this.options.interval) ? gettext("weekdays") : gettext("weekday"))
                        } else {
                            this.add(this.plural(this.options.interval) ? gettext("days") : gettext("day"))
                        }
                        if (this.origOptions.bymonth) {
                            this.add(gettext("in"));
                            this._bymonth()
                        }
                        if (this.bymonthday) {
                            this._bymonthday()
                        } else if (this.byweekday) {
                            this._byweekday()
                        } else if (this.origOptions.byhour) {
                            this._byhour()
                        }
                    };
                    ToText.prototype.WEEKLY = function() {
                        var gettext = this.gettext;
                        if (1 !== this.options.interval) {
                            this.add(this.options.interval.toString()).add(this.plural(this.options.interval) ? gettext("weeks") : gettext("week"))
                        }
                        if (this.byweekday && this.byweekday.isWeekdays) {
                            if (1 === this.options.interval) {
                                this.add(this.plural(this.options.interval) ? gettext("weekdays") : gettext("weekday"))
                            } else {
                                this.add(gettext("on")).add(gettext("weekdays"))
                            }
                        } else if (this.byweekday && this.byweekday.isEveryDay) {
                            this.add(this.plural(this.options.interval) ? gettext("days") : gettext("day"))
                        } else {
                            if (1 === this.options.interval) {
                                this.add(gettext("week"))
                            }
                            if (this.origOptions.bymonth) {
                                this.add(gettext("in"));
                                this._bymonth()
                            }
                            if (this.bymonthday) {
                                this._bymonthday()
                            } else if (this.byweekday) {
                                this._byweekday()
                            }
                        }
                    };
                    ToText.prototype.MONTHLY = function() {
                        var gettext = this.gettext;
                        if (this.origOptions.bymonth) {
                            if (1 !== this.options.interval) {
                                this.add(this.options.interval.toString()).add(gettext("months"));
                                if (this.plural(this.options.interval)) {
                                    this.add(gettext("in"))
                                }
                            }
                            this._bymonth()
                        } else {
                            if (1 !== this.options.interval) {
                                this.add(this.options.interval.toString())
                            }
                            this.add(this.plural(this.options.interval) ? gettext("months") : gettext("month"))
                        }
                        if (this.bymonthday) {
                            this._bymonthday()
                        } else if (this.byweekday && this.byweekday.isWeekdays) {
                            this.add(gettext("on")).add(gettext("weekdays"))
                        } else if (this.byweekday) {
                            this._byweekday()
                        }
                    };
                    ToText.prototype.YEARLY = function() {
                        var gettext = this.gettext;
                        if (this.origOptions.bymonth) {
                            if (1 !== this.options.interval) {
                                this.add(this.options.interval.toString());
                                this.add(gettext("years"))
                            }
                            this._bymonth()
                        } else {
                            if (1 !== this.options.interval) {
                                this.add(this.options.interval.toString())
                            }
                            this.add(this.plural(this.options.interval) ? gettext("years") : gettext("year"))
                        }
                        if (this.bymonthday) {
                            this._bymonthday()
                        } else if (this.byweekday) {
                            this._byweekday()
                        }
                        if (this.options.byyearday) {
                            this.add(gettext("on the")).add(this.list(this.options.byyearday, this.nth, gettext("and"))).add(gettext("day"))
                        }
                        if (this.options.byweekno) {
                            this.add(gettext("in")).add(this.plural(this.options.byweekno.length) ? gettext("weeks") : gettext("week")).add(this.list(this.options.byweekno, void 0, gettext("and")))
                        }
                    };
                    ToText.prototype._bymonthday = function() {
                        var gettext = this.gettext;
                        if (this.byweekday && this.byweekday.allWeeks) {
                            this.add(gettext("on")).add(this.list(this.byweekday.allWeeks, this.weekdaytext, gettext("or"))).add(gettext("the")).add(this.list(this.bymonthday, this.nth, gettext("or")))
                        } else {
                            this.add(gettext("on the")).add(this.list(this.bymonthday, this.nth, gettext("and")))
                        }
                    };
                    ToText.prototype._byweekday = function() {
                        var gettext = this.gettext;
                        if (this.byweekday.allWeeks && !this.byweekday.isWeekdays) {
                            this.add(gettext("on")).add(this.list(this.byweekday.allWeeks, this.weekdaytext))
                        }
                        if (this.byweekday.someWeeks) {
                            if (this.byweekday.allWeeks) {
                                this.add(gettext("and"))
                            }
                            this.add(gettext("on the")).add(this.list(this.byweekday.someWeeks, this.weekdaytext, gettext("and")))
                        }
                    };
                    ToText.prototype._byhour = function() {
                        var gettext = this.gettext;
                        this.add(gettext("at")).add(this.list(this.origOptions.byhour, void 0, gettext("and")))
                    };
                    ToText.prototype._bymonth = function() {
                        this.add(this.list(this.options.bymonth, this.monthtext, this.gettext("and")))
                    };
                    ToText.prototype.nth = function(n) {
                        n = parseInt(n.toString(), 10);
                        var nth;
                        var gettext = this.gettext;
                        if (-1 === n) {
                            return gettext("last")
                        }
                        var npos = Math.abs(n);
                        switch (npos) {
                            case 1:
                            case 21:
                            case 31:
                                nth = npos + gettext("st");
                                break;
                            case 2:
                            case 22:
                                nth = npos + gettext("nd");
                                break;
                            case 3:
                            case 23:
                                nth = npos + gettext("rd");
                                break;
                            default:
                                nth = npos + gettext("th")
                        }
                        return n < 0 ? nth + " " + gettext("last") : nth
                    };
                    ToText.prototype.monthtext = function(m) {
                        return this.language.monthNames[m - 1]
                    };
                    ToText.prototype.weekdaytext = function(wday) {
                        var weekday = isNumber(wday) ? (wday + 1) % 7 : wday.getJsWeekday();
                        return (wday.n ? this.nth(wday.n) + " " : "") + this.language.dayNames[weekday]
                    };
                    ToText.prototype.plural = function(n) {
                        return n % 100 !== 1
                    };
                    ToText.prototype.add = function(s) {
                        this.text.push(" ");
                        this.text.push(s);
                        return this
                    };
                    ToText.prototype.list = function(arr, callback, finalDelim, delim) {
                        var _this = this;
                        if (void 0 === delim) {
                            delim = ","
                        }
                        if (!isArray(arr)) {
                            arr = [arr]
                        }
                        callback = callback || function(o) {
                            return o.toString()
                        };
                        var realCallback = function(arg) {
                            return callback && callback.call(_this, arg)
                        };
                        if (finalDelim) {
                            return function(array, delimiter, finalDelimiter) {
                                var list = "";
                                for (var i = 0; i < array.length; i++) {
                                    if (0 !== i) {
                                        if (i === array.length - 1) {
                                            list += " " + finalDelimiter + " "
                                        } else {
                                            list += delimiter + " "
                                        }
                                    }
                                    list += array[i]
                                }
                                return list
                            }(arr.map(realCallback), delim, finalDelim)
                        } else {
                            return arr.map(realCallback).join(delim + " ")
                        }
                    };
                    return ToText
                }();
                var totext = ToText;
                var Parser = function() {
                    function Parser(rules) {
                        this.done = true;
                        this.rules = rules
                    }
                    Parser.prototype.start = function(text) {
                        this.text = text;
                        this.done = false;
                        return this.nextSymbol()
                    };
                    Parser.prototype.isDone = function() {
                        return this.done && null === this.symbol
                    };
                    Parser.prototype.nextSymbol = function() {
                        var best;
                        var bestSymbol;
                        this.symbol = null;
                        this.value = null;
                        do {
                            if (this.done) {
                                return false
                            }
                            var rule = void 0;
                            best = null;
                            for (var name_1 in this.rules) {
                                rule = this.rules[name_1];
                                var match = rule.exec(this.text);
                                if (match) {
                                    if (null === best || match[0].length > best[0].length) {
                                        best = match;
                                        bestSymbol = name_1
                                    }
                                }
                            }
                            if (null != best) {
                                this.text = this.text.substr(best[0].length);
                                if ("" === this.text) {
                                    this.done = true
                                }
                            }
                            if (null == best) {
                                this.done = true;
                                this.symbol = null;
                                this.value = null;
                                return
                            }
                        } while ("SKIP" === bestSymbol);
                        this.symbol = bestSymbol;
                        this.value = best;
                        return true
                    };
                    Parser.prototype.accept = function(name) {
                        if (this.symbol === name) {
                            if (this.value) {
                                var v = this.value;
                                this.nextSymbol();
                                return v
                            }
                            this.nextSymbol();
                            return true
                        }
                        return false
                    };
                    Parser.prototype.acceptNumber = function() {
                        return this.accept("number")
                    };
                    Parser.prototype.expect = function(name) {
                        if (this.accept(name)) {
                            return true
                        }
                        throw new Error("expected " + name + " but found " + this.symbol)
                    };
                    return Parser
                }();

                function parseText(text, language) {
                    if (void 0 === language) {
                        language = i18n
                    }
                    var options = {};
                    var ttr = new Parser(language.tokens);
                    if (!ttr.start(text)) {
                        return null
                    }! function() {
                        ttr.expect("every");
                        var n = ttr.acceptNumber();
                        if (n) {
                            options.interval = parseInt(n[0], 10)
                        }
                        if (ttr.isDone()) {
                            throw new Error("Unexpected end")
                        }
                        switch (ttr.symbol) {
                            case "day(s)":
                                options.freq = RRule.DAILY;
                                if (ttr.nextSymbol()) {
                                    ! function() {
                                        var at = ttr.accept("at");
                                        if (!at) {
                                            return
                                        }
                                        do {
                                            var n = ttr.acceptNumber();
                                            if (!n) {
                                                throw new Error("Unexpected symbol " + ttr.symbol + ", expected hour")
                                            }
                                            options.byhour = [parseInt(n[0], 10)];
                                            while (ttr.accept("comma")) {
                                                n = ttr.acceptNumber();
                                                if (!n) {
                                                    throw new Error("Unexpected symbol " + ttr.symbol + "; expected hour")
                                                }
                                                options.byhour.push(parseInt(n[0], 10))
                                            }
                                        } while (ttr.accept("comma") || ttr.accept("at"))
                                    }();
                                    F()
                                }
                                break;
                            case "weekday(s)":
                                options.freq = RRule.WEEKLY;
                                options.byweekday = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR];
                                ttr.nextSymbol();
                                F();
                                break;
                            case "week(s)":
                                options.freq = RRule.WEEKLY;
                                if (ttr.nextSymbol()) {
                                    ON();
                                    F()
                                }
                                break;
                            case "hour(s)":
                                options.freq = RRule.HOURLY;
                                if (ttr.nextSymbol()) {
                                    ON();
                                    F()
                                }
                                break;
                            case "minute(s)":
                                options.freq = RRule.MINUTELY;
                                if (ttr.nextSymbol()) {
                                    ON();
                                    F()
                                }
                                break;
                            case "month(s)":
                                options.freq = RRule.MONTHLY;
                                if (ttr.nextSymbol()) {
                                    ON();
                                    F()
                                }
                                break;
                            case "year(s)":
                                options.freq = RRule.YEARLY;
                                if (ttr.nextSymbol()) {
                                    ON();
                                    F()
                                }
                                break;
                            case "monday":
                            case "tuesday":
                            case "wednesday":
                            case "thursday":
                            case "friday":
                            case "saturday":
                            case "sunday":
                                options.freq = RRule.WEEKLY;
                                var key = ttr.symbol.substr(0, 2).toUpperCase();
                                options.byweekday = [RRule[key]];
                                if (!ttr.nextSymbol()) {
                                    return
                                }
                                while (ttr.accept("comma")) {
                                    if (ttr.isDone()) {
                                        throw new Error("Unexpected end")
                                    }
                                    var wkd = decodeWKD();
                                    if (!wkd) {
                                        throw new Error("Unexpected symbol " + ttr.symbol + ", expected weekday")
                                    }
                                    options.byweekday.push(RRule[wkd]);
                                    ttr.nextSymbol()
                                }! function() {
                                    ttr.accept("on");
                                    ttr.accept("the");
                                    var nth = decodeNTH();
                                    if (!nth) {
                                        return
                                    }
                                    options.bymonthday = [nth];
                                    ttr.nextSymbol();
                                    while (ttr.accept("comma")) {
                                        nth = decodeNTH();
                                        if (!nth) {
                                            throw new Error("Unexpected symbol " + ttr.symbol + "; expected monthday")
                                        }
                                        options.bymonthday.push(nth);
                                        ttr.nextSymbol()
                                    }
                                }();
                                F();
                                break;
                            case "january":
                            case "february":
                            case "march":
                            case "april":
                            case "may":
                            case "june":
                            case "july":
                            case "august":
                            case "september":
                            case "october":
                            case "november":
                            case "december":
                                options.freq = RRule.YEARLY;
                                options.bymonth = [decodeM()];
                                if (!ttr.nextSymbol()) {
                                    return
                                }
                                while (ttr.accept("comma")) {
                                    if (ttr.isDone()) {
                                        throw new Error("Unexpected end")
                                    }
                                    var m = decodeM();
                                    if (!m) {
                                        throw new Error("Unexpected symbol " + ttr.symbol + ", expected month")
                                    }
                                    options.bymonth.push(m);
                                    ttr.nextSymbol()
                                }
                                ON();
                                F();
                                break;
                            default:
                                throw new Error("Unknown symbol")
                        }
                    }();
                    return options;

                    function ON() {
                        var on = ttr.accept("on");
                        var the = ttr.accept("the");
                        if (!(on || the)) {
                            return
                        }
                        do {
                            var nth = decodeNTH();
                            var wkd = decodeWKD();
                            var m = decodeM();
                            if (nth) {
                                if (wkd) {
                                    ttr.nextSymbol();
                                    if (!options.byweekday) {
                                        options.byweekday = []
                                    }
                                    options.byweekday.push(RRule[wkd].nth(nth))
                                } else {
                                    if (!options.bymonthday) {
                                        options.bymonthday = []
                                    }
                                    options.bymonthday.push(nth);
                                    ttr.accept("day(s)")
                                }
                            } else if (wkd) {
                                ttr.nextSymbol();
                                if (!options.byweekday) {
                                    options.byweekday = []
                                }
                                options.byweekday.push(RRule[wkd])
                            } else if ("weekday(s)" === ttr.symbol) {
                                ttr.nextSymbol();
                                if (!options.byweekday) {
                                    options.byweekday = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR]
                                }
                            } else if ("week(s)" === ttr.symbol) {
                                ttr.nextSymbol();
                                var n = ttr.acceptNumber();
                                if (!n) {
                                    throw new Error("Unexpected symbol " + ttr.symbol + ", expected week number")
                                }
                                options.byweekno = [parseInt(n[0], 10)];
                                while (ttr.accept("comma")) {
                                    n = ttr.acceptNumber();
                                    if (!n) {
                                        throw new Error("Unexpected symbol " + ttr.symbol + "; expected monthday")
                                    }
                                    options.byweekno.push(parseInt(n[0], 10))
                                }
                            } else if (m) {
                                ttr.nextSymbol();
                                if (!options.bymonth) {
                                    options.bymonth = []
                                }
                                options.bymonth.push(m)
                            } else {
                                return
                            }
                        } while (ttr.accept("comma") || ttr.accept("the") || ttr.accept("on"))
                    }

                    function decodeM() {
                        switch (ttr.symbol) {
                            case "january":
                                return 1;
                            case "february":
                                return 2;
                            case "march":
                                return 3;
                            case "april":
                                return 4;
                            case "may":
                                return 5;
                            case "june":
                                return 6;
                            case "july":
                                return 7;
                            case "august":
                                return 8;
                            case "september":
                                return 9;
                            case "october":
                                return 10;
                            case "november":
                                return 11;
                            case "december":
                                return 12;
                            default:
                                return false
                        }
                    }

                    function decodeWKD() {
                        switch (ttr.symbol) {
                            case "monday":
                            case "tuesday":
                            case "wednesday":
                            case "thursday":
                            case "friday":
                            case "saturday":
                            case "sunday":
                                return ttr.symbol.substr(0, 2).toUpperCase();
                            default:
                                return false
                        }
                    }

                    function decodeNTH() {
                        switch (ttr.symbol) {
                            case "last":
                                ttr.nextSymbol();
                                return -1;
                            case "first":
                                ttr.nextSymbol();
                                return 1;
                            case "second":
                                ttr.nextSymbol();
                                return ttr.accept("last") ? -2 : 2;
                            case "third":
                                ttr.nextSymbol();
                                return ttr.accept("last") ? -3 : 3;
                            case "nth":
                                var v = parseInt(ttr.value[1], 10);
                                if (v < -366 || v > 366) {
                                    throw new Error("Nth out of range: " + v)
                                }
                                ttr.nextSymbol();
                                return ttr.accept("last") ? -v : v;
                            default:
                                return false
                        }
                    }

                    function F() {
                        if ("until" === ttr.symbol) {
                            var date = Date.parse(ttr.text);
                            if (!date) {
                                throw new Error("Cannot parse until date:" + ttr.text)
                            }
                            options.until = new Date(date)
                        } else if (ttr.accept("for")) {
                            options.count = parseInt(ttr.value[0], 10);
                            ttr.expect("number")
                        }
                    }
                }
                var Frequency;
                ! function(Frequency) {
                    Frequency[Frequency.YEARLY = 0] = "YEARLY";
                    Frequency[Frequency.MONTHLY = 1] = "MONTHLY";
                    Frequency[Frequency.WEEKLY = 2] = "WEEKLY";
                    Frequency[Frequency.DAILY = 3] = "DAILY";
                    Frequency[Frequency.HOURLY = 4] = "HOURLY";
                    Frequency[Frequency.MINUTELY = 5] = "MINUTELY";
                    Frequency[Frequency.SECONDLY = 6] = "SECONDLY"
                }(Frequency || (Frequency = {}));

                function freqIsDailyOrGreater(freq) {
                    return freq < Frequency.HOURLY
                }
                /* !
                 * rrule.js - Library for working with recurrence rules for calendar dates.
                 * https://github.com/jakubroztocil/rrule
                 *
                 * Copyright 2010, Jakub Roztocil and Lars Schoning
                 * Licenced under the BSD licence.
                 * https://github.com/jakubroztocil/rrule/blob/master/LICENCE
                 *
                 */
                var fromText = function(text, language) {
                    if (void 0 === language) {
                        language = i18n
                    }
                    return new RRule(parseText(text, language) || void 0)
                };
                var common = ["count", "until", "interval", "byweekday", "bymonthday", "bymonth"];
                totext.IMPLEMENTED = [];
                totext.IMPLEMENTED[Frequency.HOURLY] = common;
                totext.IMPLEMENTED[Frequency.MINUTELY] = common;
                totext.IMPLEMENTED[Frequency.DAILY] = ["byhour"].concat(common);
                totext.IMPLEMENTED[Frequency.WEEKLY] = common;
                totext.IMPLEMENTED[Frequency.MONTHLY] = common;
                totext.IMPLEMENTED[Frequency.YEARLY] = ["byweekno", "byyearday"].concat(common);
                var isFullyConvertible = totext.isFullyConvertible;
                var Time = function() {
                    function Time(hour, minute, second, millisecond) {
                        this.hour = hour;
                        this.minute = minute;
                        this.second = second;
                        this.millisecond = millisecond || 0
                    }
                    Time.prototype.getHours = function() {
                        return this.hour
                    };
                    Time.prototype.getMinutes = function() {
                        return this.minute
                    };
                    Time.prototype.getSeconds = function() {
                        return this.second
                    };
                    Time.prototype.getMilliseconds = function() {
                        return this.millisecond
                    };
                    Time.prototype.getTime = function() {
                        return 1e3 * (60 * this.hour * 60 + 60 * this.minute + this.second) + this.millisecond
                    };
                    return Time
                }();
                var DateTime = function(_super) {
                    __extends(DateTime, _super);

                    function DateTime(year, month, day, hour, minute, second, millisecond) {
                        var _this = _super.call(this, hour, minute, second, millisecond) || this;
                        _this.year = year;
                        _this.month = month;
                        _this.day = day;
                        return _this
                    }
                    DateTime.fromDate = function(date) {
                        return new this(date.getUTCFullYear(), date.getUTCMonth() + 1, date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.valueOf() % 1e3)
                    };
                    DateTime.prototype.getWeekday = function() {
                        return getWeekday(new Date(this.getTime()))
                    };
                    DateTime.prototype.getTime = function() {
                        return new Date(Date.UTC(this.year, this.month - 1, this.day, this.hour, this.minute, this.second, this.millisecond)).getTime()
                    };
                    DateTime.prototype.getDay = function() {
                        return this.day
                    };
                    DateTime.prototype.getMonth = function() {
                        return this.month
                    };
                    DateTime.prototype.getYear = function() {
                        return this.year
                    };
                    DateTime.prototype.addYears = function(years) {
                        this.year += years
                    };
                    DateTime.prototype.addMonths = function(months) {
                        this.month += months;
                        if (this.month > 12) {
                            var yearDiv = Math.floor(this.month / 12);
                            var monthMod = pymod(this.month, 12);
                            this.month = monthMod;
                            this.year += yearDiv;
                            if (0 === this.month) {
                                this.month = 12;
                                --this.year
                            }
                        }
                    };
                    DateTime.prototype.addWeekly = function(days, wkst) {
                        if (wkst > this.getWeekday()) {
                            this.day += -(this.getWeekday() + 1 + (6 - wkst)) + 7 * days
                        } else {
                            this.day += -(this.getWeekday() - wkst) + 7 * days
                        }
                        this.fixDay()
                    };
                    DateTime.prototype.addDaily = function(days) {
                        this.day += days;
                        this.fixDay()
                    };
                    DateTime.prototype.addHours = function(hours, filtered, byhour) {
                        if (filtered) {
                            this.hour += Math.floor((23 - this.hour) / hours) * hours
                        }
                        for (;;) {
                            this.hour += hours;
                            var _a = divmod(this.hour, 24),
                                dayDiv = _a.div,
                                hourMod = _a.mod;
                            if (dayDiv) {
                                this.hour = hourMod;
                                this.addDaily(dayDiv)
                            }
                            if (empty(byhour) || includes(byhour, this.hour)) {
                                break
                            }
                        }
                    };
                    DateTime.prototype.addMinutes = function(minutes, filtered, byhour, byminute) {
                        if (filtered) {
                            this.minute += Math.floor((1439 - (60 * this.hour + this.minute)) / minutes) * minutes
                        }
                        for (;;) {
                            this.minute += minutes;
                            var _a = divmod(this.minute, 60),
                                hourDiv = _a.div,
                                minuteMod = _a.mod;
                            if (hourDiv) {
                                this.minute = minuteMod;
                                this.addHours(hourDiv, false, byhour)
                            }
                            if ((empty(byhour) || includes(byhour, this.hour)) && (empty(byminute) || includes(byminute, this.minute))) {
                                break
                            }
                        }
                    };
                    DateTime.prototype.addSeconds = function(seconds, filtered, byhour, byminute, bysecond) {
                        if (filtered) {
                            this.second += Math.floor((86399 - (3600 * this.hour + 60 * this.minute + this.second)) / seconds) * seconds
                        }
                        for (;;) {
                            this.second += seconds;
                            var _a = divmod(this.second, 60),
                                minuteDiv = _a.div,
                                secondMod = _a.mod;
                            if (minuteDiv) {
                                this.second = secondMod;
                                this.addMinutes(minuteDiv, false, byhour, byminute)
                            }
                            if ((empty(byhour) || includes(byhour, this.hour)) && (empty(byminute) || includes(byminute, this.minute)) && (empty(bysecond) || includes(bysecond, this.second))) {
                                break
                            }
                        }
                    };
                    DateTime.prototype.fixDay = function() {
                        if (this.day <= 28) {
                            return
                        }
                        var daysinmonth = monthRange(this.year, this.month - 1)[1];
                        if (this.day <= daysinmonth) {
                            return
                        }
                        while (this.day > daysinmonth) {
                            this.day -= daysinmonth;
                            ++this.month;
                            if (13 === this.month) {
                                this.month = 1;
                                ++this.year;
                                if (this.year > 9999) {
                                    return
                                }
                            }
                            daysinmonth = monthRange(this.year, this.month - 1)[1]
                        }
                    };
                    DateTime.prototype.add = function(options, filtered) {
                        var freq = options.freq,
                            interval = options.interval,
                            wkst = options.wkst,
                            byhour = options.byhour,
                            byminute = options.byminute,
                            bysecond = options.bysecond;
                        switch (freq) {
                            case Frequency.YEARLY:
                                return this.addYears(interval);
                            case Frequency.MONTHLY:
                                return this.addMonths(interval);
                            case Frequency.WEEKLY:
                                return this.addWeekly(interval, wkst);
                            case Frequency.DAILY:
                                return this.addDaily(interval);
                            case Frequency.HOURLY:
                                return this.addHours(interval, filtered, byhour);
                            case Frequency.MINUTELY:
                                return this.addMinutes(interval, filtered, byhour, byminute);
                            case Frequency.SECONDLY:
                                return this.addSeconds(interval, filtered, byhour, byminute, bysecond)
                        }
                    };
                    return DateTime
                }(Time);

                function initializeOptions(options) {
                    var invalid = [];
                    var keys = Object.keys(options);
                    for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
                        var key = keys_1[_i];
                        if (!includes(defaultKeys, key)) {
                            invalid.push(key)
                        }
                        if (isDate(options[key]) && !isValidDate(options[key])) {
                            invalid.push(key)
                        }
                    }
                    if (invalid.length) {
                        throw new Error("Invalid options: " + invalid.join(", "))
                    }
                    return __assign({}, options)
                }

                function parseOptions(options) {
                    var opts = __assign(__assign({}, DEFAULT_OPTIONS), initializeOptions(options));
                    if (isPresent(opts.byeaster)) {
                        opts.freq = RRule.YEARLY
                    }
                    if (!(isPresent(opts.freq) && RRule.FREQUENCIES[opts.freq])) {
                        throw new Error("Invalid frequency: ".concat(opts.freq, " ").concat(options.freq))
                    }
                    if (!opts.dtstart) {
                        opts.dtstart = new Date((new Date).setMilliseconds(0))
                    }
                    if (!isPresent(opts.wkst)) {
                        opts.wkst = RRule.MO.weekday
                    } else if (isNumber(opts.wkst)) {} else {
                        opts.wkst = opts.wkst.weekday
                    }
                    if (isPresent(opts.bysetpos)) {
                        if (isNumber(opts.bysetpos)) {
                            opts.bysetpos = [opts.bysetpos]
                        }
                        for (var i = 0; i < opts.bysetpos.length; i++) {
                            var v = opts.bysetpos[i];
                            if (0 === v || !(v >= -366 && v <= 366)) {
                                throw new Error("bysetpos must be between 1 and 366, or between -366 and -1")
                            }
                        }
                    }
                    if (!(Boolean(opts.byweekno) || notEmpty(opts.byweekno) || notEmpty(opts.byyearday) || Boolean(opts.bymonthday) || notEmpty(opts.bymonthday) || isPresent(opts.byweekday) || isPresent(opts.byeaster))) {
                        switch (opts.freq) {
                            case RRule.YEARLY:
                                if (!opts.bymonth) {
                                    opts.bymonth = opts.dtstart.getUTCMonth() + 1
                                }
                                opts.bymonthday = opts.dtstart.getUTCDate();
                                break;
                            case RRule.MONTHLY:
                                opts.bymonthday = opts.dtstart.getUTCDate();
                                break;
                            case RRule.WEEKLY:
                                opts.byweekday = [getWeekday(opts.dtstart)]
                        }
                    }
                    if (isPresent(opts.bymonth) && !isArray(opts.bymonth)) {
                        opts.bymonth = [opts.bymonth]
                    }
                    if (isPresent(opts.byyearday) && !isArray(opts.byyearday) && isNumber(opts.byyearday)) {
                        opts.byyearday = [opts.byyearday]
                    }
                    if (!isPresent(opts.bymonthday)) {
                        opts.bymonthday = [];
                        opts.bynmonthday = []
                    } else if (isArray(opts.bymonthday)) {
                        var bymonthday = [];
                        var bynmonthday = [];
                        for (i = 0; i < opts.bymonthday.length; i++) {
                            v = opts.bymonthday[i];
                            if (v > 0) {
                                bymonthday.push(v)
                            } else if (v < 0) {
                                bynmonthday.push(v)
                            }
                        }
                        opts.bymonthday = bymonthday;
                        opts.bynmonthday = bynmonthday
                    } else if (opts.bymonthday < 0) {
                        opts.bynmonthday = [opts.bymonthday];
                        opts.bymonthday = []
                    } else {
                        opts.bynmonthday = [];
                        opts.bymonthday = [opts.bymonthday]
                    }
                    if (isPresent(opts.byweekno) && !isArray(opts.byweekno)) {
                        opts.byweekno = [opts.byweekno]
                    }
                    if (!isPresent(opts.byweekday)) {
                        opts.bynweekday = null
                    } else if (isNumber(opts.byweekday)) {
                        opts.byweekday = [opts.byweekday];
                        opts.bynweekday = null
                    } else if (isWeekdayStr(opts.byweekday)) {
                        opts.byweekday = [Weekday.fromStr(opts.byweekday).weekday];
                        opts.bynweekday = null
                    } else if (opts.byweekday instanceof Weekday) {
                        if (!opts.byweekday.n || opts.freq > RRule.MONTHLY) {
                            opts.byweekday = [opts.byweekday.weekday];
                            opts.bynweekday = null
                        } else {
                            opts.bynweekday = [
                                [opts.byweekday.weekday, opts.byweekday.n]
                            ];
                            opts.byweekday = null
                        }
                    } else {
                        var byweekday = [];
                        var bynweekday = [];
                        for (i = 0; i < opts.byweekday.length; i++) {
                            var wday = opts.byweekday[i];
                            if (isNumber(wday)) {
                                byweekday.push(wday);
                                continue
                            } else if (isWeekdayStr(wday)) {
                                byweekday.push(Weekday.fromStr(wday).weekday);
                                continue
                            }
                            if (!wday.n || opts.freq > RRule.MONTHLY) {
                                byweekday.push(wday.weekday)
                            } else {
                                bynweekday.push([wday.weekday, wday.n])
                            }
                        }
                        opts.byweekday = notEmpty(byweekday) ? byweekday : null;
                        opts.bynweekday = notEmpty(bynweekday) ? bynweekday : null
                    }
                    if (!isPresent(opts.byhour)) {
                        opts.byhour = opts.freq < RRule.HOURLY ? [opts.dtstart.getUTCHours()] : null
                    } else if (isNumber(opts.byhour)) {
                        opts.byhour = [opts.byhour]
                    }
                    if (!isPresent(opts.byminute)) {
                        opts.byminute = opts.freq < RRule.MINUTELY ? [opts.dtstart.getUTCMinutes()] : null
                    } else if (isNumber(opts.byminute)) {
                        opts.byminute = [opts.byminute]
                    }
                    if (!isPresent(opts.bysecond)) {
                        opts.bysecond = opts.freq < RRule.SECONDLY ? [opts.dtstart.getUTCSeconds()] : null
                    } else if (isNumber(opts.bysecond)) {
                        opts.bysecond = [opts.bysecond]
                    }
                    return {
                        parsedOptions: opts
                    }
                }

                function parseString(rfcString) {
                    var options = rfcString.split("\n").map(parseLine).filter((function(x) {
                        return null !== x
                    }));
                    return __assign(__assign({}, options[0]), options[1])
                }

                function parseDtstart(line) {
                    var options = {};
                    var dtstartWithZone = /DTSTART(?:;TZID=([^:=]+?))?(?::|=)([^;\s]+)/i.exec(line);
                    if (!dtstartWithZone) {
                        return options
                    }
                    var tzid = dtstartWithZone[1],
                        dtstart = dtstartWithZone[2];
                    if (tzid) {
                        options.tzid = tzid
                    }
                    options.dtstart = untilStringToDate(dtstart);
                    return options
                }

                function parseLine(rfcString) {
                    rfcString = rfcString.replace(/^\s+|\s+$/, "");
                    if (!rfcString.length) {
                        return null
                    }
                    var header = /^([A-Z]+?)[:;]/.exec(rfcString.toUpperCase());
                    if (!header) {
                        return parseRrule(rfcString)
                    }
                    var key = header[1];
                    switch (key.toUpperCase()) {
                        case "RRULE":
                        case "EXRULE":
                            return parseRrule(rfcString);
                        case "DTSTART":
                            return parseDtstart(rfcString);
                        default:
                            throw new Error("Unsupported RFC prop ".concat(key, " in ").concat(rfcString))
                    }
                }

                function parseRrule(line) {
                    var strippedLine = line.replace(/^RRULE:/i, "");
                    var options = parseDtstart(strippedLine);
                    var attrs = line.replace(/^(?:RRULE|EXRULE):/i, "").split(";");
                    attrs.forEach((function(attr) {
                        var _a = attr.split("="),
                            key = _a[0],
                            value = _a[1];
                        switch (key.toUpperCase()) {
                            case "FREQ":
                                options.freq = Frequency[value.toUpperCase()];
                                break;
                            case "WKST":
                                options.wkst = Days[value.toUpperCase()];
                                break;
                            case "COUNT":
                            case "INTERVAL":
                            case "BYSETPOS":
                            case "BYMONTH":
                            case "BYMONTHDAY":
                            case "BYYEARDAY":
                            case "BYWEEKNO":
                            case "BYHOUR":
                            case "BYMINUTE":
                            case "BYSECOND":
                                var num = function(value) {
                                    if (-1 !== value.indexOf(",")) {
                                        var values = value.split(",");
                                        return values.map(parseIndividualNumber)
                                    }
                                    return parseIndividualNumber(value)
                                }(value);
                                var optionKey = key.toLowerCase();
                                options[optionKey] = num;
                                break;
                            case "BYWEEKDAY":
                            case "BYDAY":
                                options.byweekday = function(value) {
                                    var days = value.split(",");
                                    return days.map((function(day) {
                                        if (2 === day.length) {
                                            return Days[day]
                                        }
                                        var parts = day.match(/^([+-]?\d{1,2})([A-Z]{2})$/);
                                        if (!parts || parts.length < 3) {
                                            throw new SyntaxError("Invalid weekday string: ".concat(day))
                                        }
                                        var n = Number(parts[1]);
                                        var wdaypart = parts[2];
                                        var wday = Days[wdaypart].weekday;
                                        return new Weekday(wday, n)
                                    }))
                                }(value);
                                break;
                            case "DTSTART":
                            case "TZID":
                                var dtstart = parseDtstart(line);
                                options.tzid = dtstart.tzid;
                                options.dtstart = dtstart.dtstart;
                                break;
                            case "UNTIL":
                                options.until = untilStringToDate(value);
                                break;
                            case "BYEASTER":
                                options.byeaster = Number(value);
                                break;
                            default:
                                throw new Error("Unknown RRULE property '" + key + "'")
                        }
                    }));
                    return options
                }

                function parseIndividualNumber(value) {
                    if (/^[+-]?\d+$/.test(value)) {
                        return Number(value)
                    }
                    return value
                }
                var DateWithZone = function() {
                    function DateWithZone(date, tzid) {
                        if (isNaN(date.getTime())) {
                            throw new RangeError("Invalid date passed to DateWithZone")
                        }
                        this.date = date;
                        this.tzid = tzid
                    }
                    Object.defineProperty(DateWithZone.prototype, "isUTC", {
                        get: function() {
                            return !this.tzid || "UTC" === this.tzid.toUpperCase()
                        },
                        enumerable: false,
                        configurable: true
                    });
                    DateWithZone.prototype.toString = function() {
                        var datestr = timeToUntilString(this.date.getTime(), this.isUTC);
                        if (!this.isUTC) {
                            return ";TZID=".concat(this.tzid, ":").concat(datestr)
                        }
                        return ":".concat(datestr)
                    };
                    DateWithZone.prototype.getTime = function() {
                        return this.date.getTime()
                    };
                    DateWithZone.prototype.rezonedDate = function() {
                        if (this.isUTC) {
                            return this.date
                        }
                        return function(date, timeZone) {
                            var localTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
                            var dateInLocalTZ = new Date(dateTZtoISO8601(date, localTimeZone));
                            var dateInTargetTZ = new Date(dateTZtoISO8601(date, null !== timeZone && void 0 !== timeZone ? timeZone : "UTC"));
                            var tzOffset = dateInTargetTZ.getTime() - dateInLocalTZ.getTime();
                            return new Date(date.getTime() - tzOffset)
                        }(this.date, this.tzid)
                    };
                    return DateWithZone
                }();

                function optionsToString(options) {
                    var rrule = [];
                    var dtstart = "";
                    var keys = Object.keys(options);
                    var defaultKeys = Object.keys(DEFAULT_OPTIONS);
                    for (var i = 0; i < keys.length; i++) {
                        if ("tzid" === keys[i]) {
                            continue
                        }
                        if (!includes(defaultKeys, keys[i])) {
                            continue
                        }
                        var key = keys[i].toUpperCase();
                        var value = options[keys[i]];
                        var outValue = "";
                        if (!isPresent(value) || isArray(value) && !value.length) {
                            continue
                        }
                        switch (key) {
                            case "FREQ":
                                outValue = RRule.FREQUENCIES[options.freq];
                                break;
                            case "WKST":
                                if (isNumber(value)) {
                                    outValue = new Weekday(value).toString()
                                } else {
                                    outValue = value.toString()
                                }
                                break;
                            case "BYWEEKDAY":
                                key = "BYDAY";
                                outValue = toArray(value).map((function(wday) {
                                    if (wday instanceof Weekday) {
                                        return wday
                                    }
                                    if (isArray(wday)) {
                                        return new Weekday(wday[0], wday[1])
                                    }
                                    return new Weekday(wday)
                                })).toString();
                                break;
                            case "DTSTART":
                                dtstart = buildDtstart(value, options.tzid);
                                break;
                            case "UNTIL":
                                outValue = timeToUntilString(value, !options.tzid);
                                break;
                            default:
                                if (isArray(value)) {
                                    var strValues = [];
                                    for (var j = 0; j < value.length; j++) {
                                        strValues[j] = String(value[j])
                                    }
                                    outValue = strValues.toString()
                                } else {
                                    outValue = String(value)
                                }
                        }
                        if (outValue) {
                            rrule.push([key, outValue])
                        }
                    }
                    var rules = rrule.map((function(_a) {
                        var key = _a[0],
                            value = _a[1];
                        return "".concat(key, "=").concat(value.toString())
                    })).join(";");
                    var ruleString = "";
                    if ("" !== rules) {
                        ruleString = "RRULE:".concat(rules)
                    }
                    return [dtstart, ruleString].filter((function(x) {
                        return !!x
                    })).join("\n")
                }

                function buildDtstart(dtstart, tzid) {
                    if (!dtstart) {
                        return ""
                    }
                    return "DTSTART" + new DateWithZone(new Date(dtstart), tzid).toString()
                }

                function argsMatch(left, right) {
                    if (Array.isArray(left)) {
                        if (!Array.isArray(right)) {
                            return false
                        }
                        if (left.length !== right.length) {
                            return false
                        }
                        return left.every((function(date, i) {
                            return date.getTime() === right[i].getTime()
                        }))
                    }
                    if (left instanceof Date) {
                        return right instanceof Date && left.getTime() === right.getTime()
                    }
                    return left === right
                }
                var Cache = function() {
                    function Cache() {
                        this.all = false;
                        this.before = [];
                        this.after = [];
                        this.between = []
                    }
                    Cache.prototype._cacheAdd = function(what, value, args) {
                        if (value) {
                            value = value instanceof Date ? dateutil_clone(value) : cloneDates(value)
                        }
                        if ("all" === what) {
                            this.all = value
                        } else {
                            args._value = value;
                            this[what].push(args)
                        }
                    };
                    Cache.prototype._cacheGet = function(what, args) {
                        var cached = false;
                        var argsKeys = args ? Object.keys(args) : [];
                        var findCacheDiff = function(item) {
                            for (var i = 0; i < argsKeys.length; i++) {
                                var key = argsKeys[i];
                                if (!argsMatch(args[key], item[key])) {
                                    return true
                                }
                            }
                            return false
                        };
                        var cachedObject = this[what];
                        if ("all" === what) {
                            cached = this.all
                        } else if (isArray(cachedObject)) {
                            for (var i = 0; i < cachedObject.length; i++) {
                                var item = cachedObject[i];
                                if (argsKeys.length && findCacheDiff(item)) {
                                    continue
                                }
                                cached = item._value;
                                break
                            }
                        }
                        if (!cached && this.all) {
                            var iterResult = new iterresult(what, args);
                            for (i = 0; i < this.all.length; i++) {
                                if (!iterResult.accept(this.all[i])) {
                                    break
                                }
                            }
                            cached = iterResult.getValue();
                            this._cacheAdd(what, cached, args)
                        }
                        return isArray(cached) ? cloneDates(cached) : cached instanceof Date ? dateutil_clone(cached) : cached
                    };
                    return Cache
                }();
                var M365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], repeat(1, 31), true), repeat(2, 28), true), repeat(3, 31), true), repeat(4, 30), true), repeat(5, 31), true), repeat(6, 30), true), repeat(7, 31), true), repeat(8, 31), true), repeat(9, 30), true), repeat(10, 31), true), repeat(11, 30), true), repeat(12, 31), true), repeat(1, 7), true);
                var M366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], repeat(1, 31), true), repeat(2, 29), true), repeat(3, 31), true), repeat(4, 30), true), repeat(5, 31), true), repeat(6, 30), true), repeat(7, 31), true), repeat(8, 31), true), repeat(9, 30), true), repeat(10, 31), true), repeat(11, 30), true), repeat(12, 31), true), repeat(1, 7), true);
                var M28 = range(1, 29);
                var M29 = range(1, 30);
                var M30 = range(1, 31);
                var M31 = range(1, 32);
                var MDAY366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], M31, true), M29, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31.slice(0, 7), true);
                var MDAY365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], M31, true), M28, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31.slice(0, 7), true);
                var NM28 = range(-28, 0);
                var NM29 = range(-29, 0);
                var NM30 = range(-30, 0);
                var NM31 = range(-31, 0);
                var NMDAY366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], NM31, true), NM29, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31.slice(0, 7), true);
                var NMDAY365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], NM31, true), NM28, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31.slice(0, 7), true);
                var M366RANGE = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366];
                var M365RANGE = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365];
                var WDAYMASK = function() {
                    var wdaymask = [];
                    for (var i = 0; i < 55; i++) {
                        wdaymask = wdaymask.concat(range(7))
                    }
                    return wdaymask
                }();

                function rebuildYear(year, options) {
                    var firstyday = datetime(year, 1, 1);
                    var yearlen = isLeapYear(year) ? 366 : 365;
                    var nextyearlen = isLeapYear(year + 1) ? 366 : 365;
                    var yearordinal = toOrdinal(firstyday);
                    var yearweekday = getWeekday(firstyday);
                    var result = __assign(__assign({
                        yearlen: yearlen,
                        nextyearlen: nextyearlen,
                        yearordinal: yearordinal,
                        yearweekday: yearweekday
                    }, function(year) {
                        var yearlen = isLeapYear(year) ? 366 : 365;
                        var firstyday = datetime(year, 1, 1);
                        var wday = getWeekday(firstyday);
                        if (365 === yearlen) {
                            return {
                                mmask: M365MASK,
                                mdaymask: MDAY365MASK,
                                nmdaymask: NMDAY365MASK,
                                wdaymask: WDAYMASK.slice(wday),
                                mrange: M365RANGE
                            }
                        }
                        return {
                            mmask: M366MASK,
                            mdaymask: MDAY366MASK,
                            nmdaymask: NMDAY366MASK,
                            wdaymask: WDAYMASK.slice(wday),
                            mrange: M366RANGE
                        }
                    }(year)), {
                        wnomask: null
                    });
                    if (empty(options.byweekno)) {
                        return result
                    }
                    result.wnomask = repeat(0, yearlen + 7);
                    var firstwkst;
                    var wyearlen;
                    var no1wkst = firstwkst = pymod(7 - yearweekday + options.wkst, 7);
                    if (no1wkst >= 4) {
                        no1wkst = 0;
                        wyearlen = result.yearlen + pymod(yearweekday - options.wkst, 7)
                    } else {
                        wyearlen = yearlen - no1wkst
                    }
                    var div = Math.floor(wyearlen / 7);
                    var mod = pymod(wyearlen, 7);
                    var numweeks = Math.floor(div + mod / 4);
                    for (var j = 0; j < options.byweekno.length; j++) {
                        var n = options.byweekno[j];
                        if (n < 0) {
                            n += numweeks + 1
                        }
                        if (!(n > 0 && n <= numweeks)) {
                            continue
                        }
                        var i = void 0;
                        if (n > 1) {
                            i = no1wkst + 7 * (n - 1);
                            if (no1wkst !== firstwkst) {
                                i -= 7 - firstwkst
                            }
                        } else {
                            i = no1wkst
                        }
                        for (var k = 0; k < 7; k++) {
                            result.wnomask[i] = 1;
                            i++;
                            if (result.wdaymask[i] === options.wkst) {
                                break
                            }
                        }
                    }
                    if (includes(options.byweekno, 1)) {
                        i = no1wkst + 7 * numweeks;
                        if (no1wkst !== firstwkst) {
                            i -= 7 - firstwkst
                        }
                        if (i < yearlen) {
                            for (j = 0; j < 7; j++) {
                                result.wnomask[i] = 1;
                                i += 1;
                                if (result.wdaymask[i] === options.wkst) {
                                    break
                                }
                            }
                        }
                    }
                    if (no1wkst) {
                        var lnumweeks = void 0;
                        if (!includes(options.byweekno, -1)) {
                            var lyearweekday = getWeekday(datetime(year - 1, 1, 1));
                            var lno1wkst = pymod(7 - lyearweekday.valueOf() + options.wkst, 7);
                            var lyearlen = isLeapYear(year - 1) ? 366 : 365;
                            var weekst = void 0;
                            if (lno1wkst >= 4) {
                                lno1wkst = 0;
                                weekst = lyearlen + pymod(lyearweekday - options.wkst, 7)
                            } else {
                                weekst = yearlen - no1wkst
                            }
                            lnumweeks = Math.floor(52 + pymod(weekst, 7) / 4)
                        } else {
                            lnumweeks = -1
                        }
                        if (includes(options.byweekno, lnumweeks)) {
                            for (i = 0; i < no1wkst; i++) {
                                result.wnomask[i] = 1
                            }
                        }
                    }
                    return result
                }
                var Iterinfo = function() {
                    function Iterinfo(options) {
                        this.options = options
                    }
                    Iterinfo.prototype.rebuild = function(year, month) {
                        var options = this.options;
                        if (year !== this.lastyear) {
                            this.yearinfo = rebuildYear(year, options)
                        }
                        if (notEmpty(options.bynweekday) && (month !== this.lastmonth || year !== this.lastyear)) {
                            var _a = this.yearinfo,
                                yearlen = _a.yearlen,
                                mrange = _a.mrange,
                                wdaymask = _a.wdaymask;
                            this.monthinfo = function(year, month, yearlen, mrange, wdaymask, options) {
                                var result = {
                                    lastyear: year,
                                    lastmonth: month,
                                    nwdaymask: []
                                };
                                var ranges = [];
                                if (options.freq === RRule.YEARLY) {
                                    if (empty(options.bymonth)) {
                                        ranges = [
                                            [0, yearlen]
                                        ]
                                    } else {
                                        for (var j = 0; j < options.bymonth.length; j++) {
                                            month = options.bymonth[j];
                                            ranges.push(mrange.slice(month - 1, month + 1))
                                        }
                                    }
                                } else if (options.freq === RRule.MONTHLY) {
                                    ranges = [mrange.slice(month - 1, month + 1)]
                                }
                                if (empty(ranges)) {
                                    return result
                                }
                                result.nwdaymask = repeat(0, yearlen);
                                for (j = 0; j < ranges.length; j++) {
                                    var rang = ranges[j];
                                    var first = rang[0];
                                    var last = rang[1] - 1;
                                    for (var k = 0; k < options.bynweekday.length; k++) {
                                        var i = void 0;
                                        var _a = options.bynweekday[k],
                                            wday = _a[0],
                                            n = _a[1];
                                        if (n < 0) {
                                            i = last + 7 * (n + 1);
                                            i -= pymod(wdaymask[i] - wday, 7)
                                        } else {
                                            i = first + 7 * (n - 1);
                                            i += pymod(7 - wdaymask[i] + wday, 7)
                                        }
                                        if (first <= i && i <= last) {
                                            result.nwdaymask[i] = 1
                                        }
                                    }
                                }
                                return result
                            }(year, month, yearlen, mrange, wdaymask, options)
                        }
                        if (isPresent(options.byeaster)) {
                            this.eastermask = function(y, offset) {
                                if (void 0 === offset) {
                                    offset = 0
                                }
                                var a = y % 19;
                                var b = Math.floor(y / 100);
                                var c = y % 100;
                                var d = Math.floor(b / 4);
                                var e = b % 4;
                                var f = Math.floor((b + 8) / 25);
                                var g = Math.floor((b - f + 1) / 3);
                                var h = Math.floor(19 * a + b - d - g + 15) % 30;
                                var i = Math.floor(c / 4);
                                var k = c % 4;
                                var l = Math.floor(32 + 2 * e + 2 * i - h - k) % 7;
                                var m = Math.floor((a + 11 * h + 22 * l) / 451);
                                var month = Math.floor((h + l - 7 * m + 114) / 31);
                                var day = (h + l - 7 * m + 114) % 31 + 1;
                                var date = Date.UTC(y, month - 1, day + offset);
                                var yearStart = Date.UTC(y, 0, 1);
                                return [Math.ceil((date - yearStart) / 864e5)]
                            }(year, options.byeaster)
                        }
                    };
                    Object.defineProperty(Iterinfo.prototype, "lastyear", {
                        get: function() {
                            return this.monthinfo ? this.monthinfo.lastyear : null
                        },
                        enumerable: false,
                        configurable: true
                    });
                    Object.defineProperty(Iterinfo.prototype, "lastmonth", {
                        get: function() {
                            return this.monthinfo ? this.monthinfo.lastmonth : null
                        },
                        enumerable: false,
                        configurable: true
                    });
                    Object.defineProperty(Iterinfo.prototype, "yearlen", {
                        get: function() {
                            return this.yearinfo.yearlen
                        },
                        enumerable: false,
                        configurable: true
                    });
                    Object.defineProperty(Iterinfo.prototype, "yearordinal", {
                        get: function() {
                            return this.yearinfo.yearordinal
                        },
                        enumerable: false,
                        configurable: true
                    });
                    Object.defineProperty(Iterinfo.prototype, "mrange", {
                        get: function() {
                            return this.yearinfo.mrange
                        },
                        enumerable: false,
                        configurable: true
                    });
                    Object.defineProperty(Iterinfo.prototype, "wdaymask", {
                        get: function() {
                            return this.yearinfo.wdaymask
                        },
                        enumerable: false,
                        configurable: true
                    });
                    Object.defineProperty(Iterinfo.prototype, "mmask", {
                        get: function() {
                            return this.yearinfo.mmask
                        },
                        enumerable: false,
                        configurable: true
                    });
                    Object.defineProperty(Iterinfo.prototype, "wnomask", {
                        get: function() {
                            return this.yearinfo.wnomask
                        },
                        enumerable: false,
                        configurable: true
                    });
                    Object.defineProperty(Iterinfo.prototype, "nwdaymask", {
                        get: function() {
                            return this.monthinfo ? this.monthinfo.nwdaymask : []
                        },
                        enumerable: false,
                        configurable: true
                    });
                    Object.defineProperty(Iterinfo.prototype, "nextyearlen", {
                        get: function() {
                            return this.yearinfo.nextyearlen
                        },
                        enumerable: false,
                        configurable: true
                    });
                    Object.defineProperty(Iterinfo.prototype, "mdaymask", {
                        get: function() {
                            return this.yearinfo.mdaymask
                        },
                        enumerable: false,
                        configurable: true
                    });
                    Object.defineProperty(Iterinfo.prototype, "nmdaymask", {
                        get: function() {
                            return this.yearinfo.nmdaymask
                        },
                        enumerable: false,
                        configurable: true
                    });
                    Iterinfo.prototype.ydayset = function() {
                        return [range(this.yearlen), 0, this.yearlen]
                    };
                    Iterinfo.prototype.mdayset = function(_, month) {
                        var start = this.mrange[month - 1];
                        var end = this.mrange[month];
                        var set = repeat(null, this.yearlen);
                        for (var i = start; i < end; i++) {
                            set[i] = i
                        }
                        return [set, start, end]
                    };
                    Iterinfo.prototype.wdayset = function(year, month, day) {
                        var set = repeat(null, this.yearlen + 7);
                        var i = toOrdinal(datetime(year, month, day)) - this.yearordinal;
                        var start = i;
                        for (var j = 0; j < 7; j++) {
                            set[i] = i;
                            ++i;
                            if (this.wdaymask[i] === this.options.wkst) {
                                break
                            }
                        }
                        return [set, start, i]
                    };
                    Iterinfo.prototype.ddayset = function(year, month, day) {
                        var set = repeat(null, this.yearlen);
                        var i = toOrdinal(datetime(year, month, day)) - this.yearordinal;
                        set[i] = i;
                        return [set, i, i + 1]
                    };
                    Iterinfo.prototype.htimeset = function(hour, _, second, millisecond) {
                        var _this = this;
                        var set = [];
                        this.options.byminute.forEach((function(minute) {
                            set = set.concat(_this.mtimeset(hour, minute, second, millisecond))
                        }));
                        sort(set);
                        return set
                    };
                    Iterinfo.prototype.mtimeset = function(hour, minute, _, millisecond) {
                        var set = this.options.bysecond.map((function(second) {
                            return new Time(hour, minute, second, millisecond)
                        }));
                        sort(set);
                        return set
                    };
                    Iterinfo.prototype.stimeset = function(hour, minute, second, millisecond) {
                        return [new Time(hour, minute, second, millisecond)]
                    };
                    Iterinfo.prototype.getdayset = function(freq) {
                        switch (freq) {
                            case Frequency.YEARLY:
                                return this.ydayset.bind(this);
                            case Frequency.MONTHLY:
                                return this.mdayset.bind(this);
                            case Frequency.WEEKLY:
                                return this.wdayset.bind(this);
                            case Frequency.DAILY:
                            default:
                                return this.ddayset.bind(this)
                        }
                    };
                    Iterinfo.prototype.gettimeset = function(freq) {
                        switch (freq) {
                            case Frequency.HOURLY:
                                return this.htimeset.bind(this);
                            case Frequency.MINUTELY:
                                return this.mtimeset.bind(this);
                            case Frequency.SECONDLY:
                                return this.stimeset.bind(this)
                        }
                    };
                    return Iterinfo
                }();
                var iterinfo = Iterinfo;

                function buildPoslist(bysetpos, timeset, start, end, ii, dayset) {
                    var poslist = [];
                    for (var j = 0; j < bysetpos.length; j++) {
                        var daypos = void 0;
                        var timepos = void 0;
                        var pos = bysetpos[j];
                        if (pos < 0) {
                            daypos = Math.floor(pos / timeset.length);
                            timepos = pymod(pos, timeset.length)
                        } else {
                            daypos = Math.floor((pos - 1) / timeset.length);
                            timepos = pymod(pos - 1, timeset.length)
                        }
                        var tmp = [];
                        for (var k = start; k < end; k++) {
                            var val = dayset[k];
                            if (!isPresent(val)) {
                                continue
                            }
                            tmp.push(val)
                        }
                        var i = void 0;
                        if (daypos < 0) {
                            i = tmp.slice(daypos)[0]
                        } else {
                            i = tmp[daypos]
                        }
                        var time = timeset[timepos];
                        var date = fromOrdinal(ii.yearordinal + i);
                        var res = combine(date, time);
                        if (!includes(poslist, res)) {
                            poslist.push(res)
                        }
                    }
                    sort(poslist);
                    return poslist
                }

                function iter(iterResult, options) {
                    var dtstart = options.dtstart,
                        freq = options.freq,
                        interval = options.interval,
                        until = options.until,
                        bysetpos = options.bysetpos;
                    var count = options.count;
                    if (0 === count || 0 === interval) {
                        return emitResult(iterResult)
                    }
                    var counterDate = DateTime.fromDate(dtstart);
                    var ii = new iterinfo(options);
                    ii.rebuild(counterDate.year, counterDate.month);
                    var timeset = function(ii, counterDate, options) {
                        var freq = options.freq,
                            byhour = options.byhour,
                            byminute = options.byminute,
                            bysecond = options.bysecond;
                        if (freqIsDailyOrGreater(freq)) {
                            return function(opts) {
                                var millisecondModulo = opts.dtstart.getTime() % 1e3;
                                if (!freqIsDailyOrGreater(opts.freq)) {
                                    return []
                                }
                                var timeset = [];
                                opts.byhour.forEach((function(hour) {
                                    opts.byminute.forEach((function(minute) {
                                        opts.bysecond.forEach((function(second) {
                                            timeset.push(new Time(hour, minute, second, millisecondModulo))
                                        }))
                                    }))
                                }));
                                return timeset
                            }(options)
                        }
                        if (freq >= RRule.HOURLY && notEmpty(byhour) && !includes(byhour, counterDate.hour) || freq >= RRule.MINUTELY && notEmpty(byminute) && !includes(byminute, counterDate.minute) || freq >= RRule.SECONDLY && notEmpty(bysecond) && !includes(bysecond, counterDate.second)) {
                            return []
                        }
                        return ii.gettimeset(freq)(counterDate.hour, counterDate.minute, counterDate.second, counterDate.millisecond)
                    }(ii, counterDate, options);
                    for (;;) {
                        var _a = ii.getdayset(freq)(counterDate.year, counterDate.month, counterDate.day),
                            dayset = _a[0],
                            start = _a[1],
                            end = _a[2];
                        var filtered = removeFilteredDays(dayset, start, end, ii, options);
                        if (notEmpty(bysetpos)) {
                            var poslist = buildPoslist(bysetpos, timeset, start, end, ii, dayset);
                            for (var j = 0; j < poslist.length; j++) {
                                var res = poslist[j];
                                if (until && res > until) {
                                    return emitResult(iterResult)
                                }
                                if (res >= dtstart) {
                                    var rezonedDate = rezoneIfNeeded(res, options);
                                    if (!iterResult.accept(rezonedDate)) {
                                        return emitResult(iterResult)
                                    }
                                    if (count) {
                                        --count;
                                        if (!count) {
                                            return emitResult(iterResult)
                                        }
                                    }
                                }
                            }
                        } else {
                            for (j = start; j < end; j++) {
                                var currentDay = dayset[j];
                                if (!isPresent(currentDay)) {
                                    continue
                                }
                                var date = fromOrdinal(ii.yearordinal + currentDay);
                                for (var k = 0; k < timeset.length; k++) {
                                    var time = timeset[k];
                                    res = combine(date, time);
                                    if (until && res > until) {
                                        return emitResult(iterResult)
                                    }
                                    if (res >= dtstart) {
                                        rezonedDate = rezoneIfNeeded(res, options);
                                        if (!iterResult.accept(rezonedDate)) {
                                            return emitResult(iterResult)
                                        }
                                        if (count) {
                                            --count;
                                            if (!count) {
                                                return emitResult(iterResult)
                                            }
                                        }
                                    }
                                }
                            }
                        }
                        if (0 === options.interval) {
                            return emitResult(iterResult)
                        }
                        counterDate.add(options, filtered);
                        if (counterDate.year > 9999) {
                            return emitResult(iterResult)
                        }
                        if (!freqIsDailyOrGreater(freq)) {
                            timeset = ii.gettimeset(freq)(counterDate.hour, counterDate.minute, counterDate.second, 0)
                        }
                        ii.rebuild(counterDate.year, counterDate.month)
                    }
                }

                function isFiltered(ii, currentDay, options) {
                    var bymonth = options.bymonth,
                        byweekno = options.byweekno,
                        byweekday = options.byweekday,
                        byeaster = options.byeaster,
                        bymonthday = options.bymonthday,
                        bynmonthday = options.bynmonthday,
                        byyearday = options.byyearday;
                    return notEmpty(bymonth) && !includes(bymonth, ii.mmask[currentDay]) || notEmpty(byweekno) && !ii.wnomask[currentDay] || notEmpty(byweekday) && !includes(byweekday, ii.wdaymask[currentDay]) || notEmpty(ii.nwdaymask) && !ii.nwdaymask[currentDay] || null !== byeaster && !includes(ii.eastermask, currentDay) || (notEmpty(bymonthday) || notEmpty(bynmonthday)) && !includes(bymonthday, ii.mdaymask[currentDay]) && !includes(bynmonthday, ii.nmdaymask[currentDay]) || notEmpty(byyearday) && (currentDay < ii.yearlen && !includes(byyearday, currentDay + 1) && !includes(byyearday, -ii.yearlen + currentDay) || currentDay >= ii.yearlen && !includes(byyearday, currentDay + 1 - ii.yearlen) && !includes(byyearday, -ii.nextyearlen + currentDay - ii.yearlen))
                }

                function rezoneIfNeeded(date, options) {
                    return new DateWithZone(date, options.tzid).rezonedDate()
                }

                function emitResult(iterResult) {
                    return iterResult.getValue()
                }

                function removeFilteredDays(dayset, start, end, ii, options) {
                    var filtered = false;
                    for (var dayCounter = start; dayCounter < end; dayCounter++) {
                        var currentDay = dayset[dayCounter];
                        filtered = isFiltered(ii, currentDay, options);
                        if (filtered) {
                            dayset[currentDay] = null
                        }
                    }
                    return filtered
                }
                var Days = {
                    MO: new Weekday(0),
                    TU: new Weekday(1),
                    WE: new Weekday(2),
                    TH: new Weekday(3),
                    FR: new Weekday(4),
                    SA: new Weekday(5),
                    SU: new Weekday(6)
                };
                var DEFAULT_OPTIONS = {
                    freq: Frequency.YEARLY,
                    dtstart: null,
                    interval: 1,
                    wkst: Days.MO,
                    count: null,
                    until: null,
                    tzid: null,
                    bysetpos: null,
                    bymonth: null,
                    bymonthday: null,
                    bynmonthday: null,
                    byyearday: null,
                    byweekno: null,
                    byweekday: null,
                    bynweekday: null,
                    byhour: null,
                    byminute: null,
                    bysecond: null,
                    byeaster: null
                };
                var defaultKeys = Object.keys(DEFAULT_OPTIONS);
                var RRule = function() {
                    function RRule(options, noCache) {
                        if (void 0 === options) {
                            options = {}
                        }
                        if (void 0 === noCache) {
                            noCache = false
                        }
                        this._cache = noCache ? null : new Cache;
                        this.origOptions = initializeOptions(options);
                        var parsedOptions = parseOptions(options).parsedOptions;
                        this.options = parsedOptions
                    }
                    RRule.parseText = function(text, language) {
                        return parseText(text, language)
                    };
                    RRule.fromText = function(text, language) {
                        return fromText(text, language)
                    };
                    RRule.fromString = function(str) {
                        return new RRule(RRule.parseString(str) || void 0)
                    };
                    RRule.prototype._iter = function(iterResult) {
                        return iter(iterResult, this.options)
                    };
                    RRule.prototype._cacheGet = function(what, args) {
                        if (!this._cache) {
                            return false
                        }
                        return this._cache._cacheGet(what, args)
                    };
                    RRule.prototype._cacheAdd = function(what, value, args) {
                        if (!this._cache) {
                            return
                        }
                        return this._cache._cacheAdd(what, value, args)
                    };
                    RRule.prototype.all = function(iterator) {
                        if (iterator) {
                            return this._iter(new callbackiterresult("all", {}, iterator))
                        }
                        var result = this._cacheGet("all");
                        if (false === result) {
                            result = this._iter(new iterresult("all", {}));
                            this._cacheAdd("all", result)
                        }
                        return result
                    };
                    RRule.prototype.between = function(after, before, inc, iterator) {
                        if (void 0 === inc) {
                            inc = false
                        }
                        if (!isValidDate(after) || !isValidDate(before)) {
                            throw new Error("Invalid date passed in to RRule.between")
                        }
                        var args = {
                            before: before,
                            after: after,
                            inc: inc
                        };
                        if (iterator) {
                            return this._iter(new callbackiterresult("between", args, iterator))
                        }
                        var result = this._cacheGet("between", args);
                        if (false === result) {
                            result = this._iter(new iterresult("between", args));
                            this._cacheAdd("between", result, args)
                        }
                        return result
                    };
                    RRule.prototype.before = function(dt, inc) {
                        if (void 0 === inc) {
                            inc = false
                        }
                        if (!isValidDate(dt)) {
                            throw new Error("Invalid date passed in to RRule.before")
                        }
                        var args = {
                            dt: dt,
                            inc: inc
                        };
                        var result = this._cacheGet("before", args);
                        if (false === result) {
                            result = this._iter(new iterresult("before", args));
                            this._cacheAdd("before", result, args)
                        }
                        return result
                    };
                    RRule.prototype.after = function(dt, inc) {
                        if (void 0 === inc) {
                            inc = false
                        }
                        if (!isValidDate(dt)) {
                            throw new Error("Invalid date passed in to RRule.after")
                        }
                        var args = {
                            dt: dt,
                            inc: inc
                        };
                        var result = this._cacheGet("after", args);
                        if (false === result) {
                            result = this._iter(new iterresult("after", args));
                            this._cacheAdd("after", result, args)
                        }
                        return result
                    };
                    RRule.prototype.count = function() {
                        return this.all().length
                    };
                    RRule.prototype.toString = function() {
                        return optionsToString(this.origOptions)
                    };
                    RRule.prototype.toText = function(gettext, language, dateFormatter) {
                        return function(rrule, gettext, language, dateFormatter) {
                            return new totext(rrule, gettext, language, dateFormatter).toString()
                        }(this, gettext, language, dateFormatter)
                    };
                    RRule.prototype.isFullyConvertibleToText = function() {
                        return isFullyConvertible(this)
                    };
                    RRule.prototype.clone = function() {
                        return new RRule(this.origOptions)
                    };
                    RRule.FREQUENCIES = ["YEARLY", "MONTHLY", "WEEKLY", "DAILY", "HOURLY", "MINUTELY", "SECONDLY"];
                    RRule.YEARLY = Frequency.YEARLY;
                    RRule.MONTHLY = Frequency.MONTHLY;
                    RRule.WEEKLY = Frequency.WEEKLY;
                    RRule.DAILY = Frequency.DAILY;
                    RRule.HOURLY = Frequency.HOURLY;
                    RRule.MINUTELY = Frequency.MINUTELY;
                    RRule.SECONDLY = Frequency.SECONDLY;
                    RRule.MO = Days.MO;
                    RRule.TU = Days.TU;
                    RRule.WE = Days.WE;
                    RRule.TH = Days.TH;
                    RRule.FR = Days.FR;
                    RRule.SA = Days.SA;
                    RRule.SU = Days.SU;
                    RRule.parseString = parseString;
                    RRule.optionsToString = optionsToString;
                    return RRule
                }();
                var rrulestr_DEFAULT_OPTIONS = {
                    dtstart: null,
                    cache: false,
                    unfold: false,
                    forceset: false,
                    compatible: false,
                    tzid: null
                };

                function parseInput(s, options) {
                    var rrulevals = [];
                    var rdatevals = [];
                    var exrulevals = [];
                    var exdatevals = [];
                    var parsedDtstart = parseDtstart(s);
                    var dtstart = parsedDtstart.dtstart;
                    var tzid = parsedDtstart.tzid;
                    var lines = function(s, unfold) {
                        if (void 0 === unfold) {
                            unfold = false
                        }
                        s = s && s.trim();
                        if (!s) {
                            throw new Error("Invalid empty string")
                        }
                        if (!unfold) {
                            return s.split(/\s/)
                        }
                        var lines = s.split("\n");
                        var i = 0;
                        while (i < lines.length) {
                            var line = lines[i] = lines[i].replace(/\s+$/g, "");
                            if (!line) {
                                lines.splice(i, 1)
                            } else if (i > 0 && " " === line[0]) {
                                lines[i - 1] += line.slice(1);
                                lines.splice(i, 1)
                            } else {
                                i += 1
                            }
                        }
                        return lines
                    }(s, options.unfold);
                    lines.forEach((function(line) {
                        var _a;
                        if (!line) {
                            return
                        }
                        var _b = function(line) {
                                var _a = function(line) {
                                        if (-1 === line.indexOf(":")) {
                                            return {
                                                name: "RRULE",
                                                value: line
                                            }
                                        }
                                        var _a = (str = line, sep = ":", num = 1, splits = str.split(sep), num ? splits.slice(0, num).concat([splits.slice(num).join(sep)]) : splits),
                                            name = _a[0],
                                            value = _a[1];
                                        var str, sep, num, splits;
                                        return {
                                            name: name,
                                            value: value
                                        }
                                    }(line),
                                    name = _a.name,
                                    value = _a.value;
                                var parms = name.split(";");
                                if (!parms) {
                                    throw new Error("empty property name")
                                }
                                return {
                                    name: parms[0].toUpperCase(),
                                    parms: parms.slice(1),
                                    value: value
                                }
                            }(line),
                            name = _b.name,
                            parms = _b.parms,
                            value = _b.value;
                        switch (name.toUpperCase()) {
                            case "RRULE":
                                if (parms.length) {
                                    throw new Error("unsupported RRULE parm: ".concat(parms.join(",")))
                                }
                                rrulevals.push(parseString(line));
                                break;
                            case "RDATE":
                                var _c = null !== (_a = /RDATE(?:;TZID=([^:=]+))?/i.exec(line)) && void 0 !== _a ? _a : [],
                                    rdateTzid = _c[1];
                                if (rdateTzid && !tzid) {
                                    tzid = rdateTzid
                                }
                                rdatevals = rdatevals.concat(parseRDate(value, parms));
                                break;
                            case "EXRULE":
                                if (parms.length) {
                                    throw new Error("unsupported EXRULE parm: ".concat(parms.join(",")))
                                }
                                exrulevals.push(parseString(value));
                                break;
                            case "EXDATE":
                                exdatevals = exdatevals.concat(parseRDate(value, parms));
                                break;
                            case "DTSTART":
                                break;
                            default:
                                throw new Error("unsupported property: " + name)
                        }
                    }));
                    return {
                        dtstart: dtstart,
                        tzid: tzid,
                        rrulevals: rrulevals,
                        rdatevals: rdatevals,
                        exrulevals: exrulevals,
                        exdatevals: exdatevals
                    }
                }

                function rrulestr(s, options) {
                    if (void 0 === options) {
                        options = {}
                    }
                    return function(s, options) {
                        var _a = parseInput(s, options),
                            rrulevals = _a.rrulevals,
                            rdatevals = _a.rdatevals,
                            exrulevals = _a.exrulevals,
                            exdatevals = _a.exdatevals,
                            dtstart = _a.dtstart,
                            tzid = _a.tzid;
                        var noCache = false === options.cache;
                        if (options.compatible) {
                            options.forceset = true;
                            options.unfold = true
                        }
                        if (options.forceset || rrulevals.length > 1 || rdatevals.length || exrulevals.length || exdatevals.length) {
                            var rset_1 = new RRuleSet(noCache);
                            rset_1.dtstart(dtstart);
                            rset_1.tzid(tzid || void 0);
                            rrulevals.forEach((function(val) {
                                rset_1.rrule(new RRule(groomRruleOptions(val, dtstart, tzid), noCache))
                            }));
                            rdatevals.forEach((function(date) {
                                rset_1.rdate(date)
                            }));
                            exrulevals.forEach((function(val) {
                                rset_1.exrule(new RRule(groomRruleOptions(val, dtstart, tzid), noCache))
                            }));
                            exdatevals.forEach((function(date) {
                                rset_1.exdate(date)
                            }));
                            if (options.compatible && options.dtstart) {
                                rset_1.rdate(dtstart)
                            }
                            return rset_1
                        }
                        var val = rrulevals[0] || {};
                        return new RRule(groomRruleOptions(val, val.dtstart || options.dtstart || dtstart, val.tzid || options.tzid || tzid), noCache)
                    }(s, function(options) {
                        var invalid = [];
                        var keys = Object.keys(options);
                        var defaultKeys = Object.keys(rrulestr_DEFAULT_OPTIONS);
                        keys.forEach((function(key) {
                            if (!includes(defaultKeys, key)) {
                                invalid.push(key)
                            }
                        }));
                        if (invalid.length) {
                            throw new Error("Invalid options: " + invalid.join(", "))
                        }
                        return __assign(__assign({}, rrulestr_DEFAULT_OPTIONS), options)
                    }(options))
                }

                function groomRruleOptions(val, dtstart, tzid) {
                    return __assign(__assign({}, val), {
                        dtstart: dtstart,
                        tzid: tzid
                    })
                }

                function parseRDate(rdateval, parms) {
                    ! function(parms) {
                        parms.forEach((function(parm) {
                            if (!/(VALUE=DATE(-TIME)?)|(TZID=)/.test(parm)) {
                                throw new Error("unsupported RDATE/EXDATE parm: " + parm)
                            }
                        }))
                    }(parms);
                    return rdateval.split(",").map((function(datestr) {
                        return untilStringToDate(datestr)
                    }))
                }

                function createGetterSetter(fieldName) {
                    var _this = this;
                    return function(field) {
                        if (void 0 !== field) {
                            _this["_".concat(fieldName)] = field
                        }
                        if (void 0 !== _this["_".concat(fieldName)]) {
                            return _this["_".concat(fieldName)]
                        }
                        for (var i = 0; i < _this._rrule.length; i++) {
                            var field_1 = _this._rrule[i].origOptions[fieldName];
                            if (field_1) {
                                return field_1
                            }
                        }
                    }
                }
                var RRuleSet = function(_super) {
                    __extends(RRuleSet, _super);

                    function RRuleSet(noCache) {
                        if (void 0 === noCache) {
                            noCache = false
                        }
                        var _this = _super.call(this, {}, noCache) || this;
                        _this.dtstart = createGetterSetter.apply(_this, ["dtstart"]);
                        _this.tzid = createGetterSetter.apply(_this, ["tzid"]);
                        _this._rrule = [];
                        _this._rdate = [];
                        _this._exrule = [];
                        _this._exdate = [];
                        return _this
                    }
                    RRuleSet.prototype._iter = function(iterResult) {
                        return function(iterResult, _rrule, _exrule, _rdate, _exdate, tzid) {
                            var _exdateHash = {};
                            var _accept = iterResult.accept;

                            function evalExdate(after, before) {
                                _exrule.forEach((function(rrule) {
                                    rrule.between(after, before, true).forEach((function(date) {
                                        _exdateHash[Number(date)] = true
                                    }))
                                }))
                            }
                            _exdate.forEach((function(date) {
                                var zonedDate = new DateWithZone(date, tzid).rezonedDate();
                                _exdateHash[Number(zonedDate)] = true
                            }));
                            iterResult.accept = function(date) {
                                var dt = Number(date);
                                if (isNaN(dt)) {
                                    return _accept.call(this, date)
                                }
                                if (!_exdateHash[dt]) {
                                    evalExdate(new Date(dt - 1), new Date(dt + 1));
                                    if (!_exdateHash[dt]) {
                                        _exdateHash[dt] = true;
                                        return _accept.call(this, date)
                                    }
                                }
                                return true
                            };
                            if ("between" === iterResult.method) {
                                evalExdate(iterResult.args.after, iterResult.args.before);
                                iterResult.accept = function(date) {
                                    var dt = Number(date);
                                    if (!_exdateHash[dt]) {
                                        _exdateHash[dt] = true;
                                        return _accept.call(this, date)
                                    }
                                    return true
                                }
                            }
                            for (var i = 0; i < _rdate.length; i++) {
                                var zonedDate = new DateWithZone(_rdate[i], tzid).rezonedDate();
                                if (!iterResult.accept(new Date(zonedDate.getTime()))) {
                                    break
                                }
                            }
                            _rrule.forEach((function(rrule) {
                                iter(iterResult, rrule.options)
                            }));
                            var res = iterResult._result;
                            sort(res);
                            switch (iterResult.method) {
                                case "all":
                                case "between":
                                    return res;
                                case "before":
                                    return res.length && res[res.length - 1] || null;
                                case "after":
                                default:
                                    return res.length && res[0] || null
                            }
                        }(iterResult, this._rrule, this._exrule, this._rdate, this._exdate, this.tzid())
                    };
                    RRuleSet.prototype.rrule = function(rrule) {
                        _addRule(rrule, this._rrule)
                    };
                    RRuleSet.prototype.exrule = function(rrule) {
                        _addRule(rrule, this._exrule)
                    };
                    RRuleSet.prototype.rdate = function(date) {
                        _addDate(date, this._rdate)
                    };
                    RRuleSet.prototype.exdate = function(date) {
                        _addDate(date, this._exdate)
                    };
                    RRuleSet.prototype.rrules = function() {
                        return this._rrule.map((function(e) {
                            return rrulestr(e.toString())
                        }))
                    };
                    RRuleSet.prototype.exrules = function() {
                        return this._exrule.map((function(e) {
                            return rrulestr(e.toString())
                        }))
                    };
                    RRuleSet.prototype.rdates = function() {
                        return this._rdate.map((function(e) {
                            return new Date(e.getTime())
                        }))
                    };
                    RRuleSet.prototype.exdates = function() {
                        return this._exdate.map((function(e) {
                            return new Date(e.getTime())
                        }))
                    };
                    RRuleSet.prototype.valueOf = function() {
                        var result = [];
                        if (!this._rrule.length && this._dtstart) {
                            result = result.concat(optionsToString({
                                dtstart: this._dtstart
                            }))
                        }
                        this._rrule.forEach((function(rrule) {
                            result = result.concat(rrule.toString().split("\n"))
                        }));
                        this._exrule.forEach((function(exrule) {
                            result = result.concat(exrule.toString().split("\n").map((function(line) {
                                return line.replace(/^RRULE:/, "EXRULE:")
                            })).filter((function(line) {
                                return !/^DTSTART/.test(line)
                            })))
                        }));
                        if (this._rdate.length) {
                            result.push(rdatesToString("RDATE", this._rdate, this.tzid()))
                        }
                        if (this._exdate.length) {
                            result.push(rdatesToString("EXDATE", this._exdate, this.tzid()))
                        }
                        return result
                    };
                    RRuleSet.prototype.toString = function() {
                        return this.valueOf().join("\n")
                    };
                    RRuleSet.prototype.clone = function() {
                        var rrs = new RRuleSet(!!this._cache);
                        this._rrule.forEach((function(rule) {
                            return rrs.rrule(rule.clone())
                        }));
                        this._exrule.forEach((function(rule) {
                            return rrs.exrule(rule.clone())
                        }));
                        this._rdate.forEach((function(date) {
                            return rrs.rdate(new Date(date.getTime()))
                        }));
                        this._exdate.forEach((function(date) {
                            return rrs.exdate(new Date(date.getTime()))
                        }));
                        return rrs
                    };
                    return RRuleSet
                }(RRule);

                function _addRule(rrule, collection) {
                    if (!(rrule instanceof RRule)) {
                        throw new TypeError(String(rrule) + " is not RRule instance")
                    }
                    if (!includes(collection.map(String), String(rrule))) {
                        collection.push(rrule)
                    }
                }

                function _addDate(date, collection) {
                    if (!(date instanceof Date)) {
                        throw new TypeError(String(date) + " is not Date instance")
                    }
                    if (!includes(collection.map(Number), Number(date))) {
                        collection.push(date);
                        sort(collection)
                    }
                }

                function rdatesToString(param, rdates, tzid) {
                    var isUTC = !tzid || "UTC" === tzid.toUpperCase();
                    var header = isUTC ? "".concat(param, ":") : "".concat(param, ";TZID=").concat(tzid, ":");
                    var dateString = rdates.map((function(rdate) {
                        return timeToUntilString(rdate.valueOf(), isUTC)
                    })).join(",");
                    return "".concat(header).concat(dateString)
                }
            },
        66798:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/common/m_charts.js ***!
              \***************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.registerPattern = exports.registerGradient = exports.default = void 0;
                var _utils = __webpack_require__( /*! ../../viz/core/utils */ 19157);

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const graphicObjects = {};
                exports.registerPattern = options => {
                    const id = (0, _utils.getNextDefsSvgId)();
                    graphicObjects[id] = _extends({
                        type: "pattern"
                    }, options);
                    return id
                };
                exports.registerGradient = (type, options) => {
                    const id = (0, _utils.getNextDefsSvgId)();
                    graphicObjects[id] = _extends({
                        type: type
                    }, options);
                    return id
                };
                var _default = {
                    getGraphicObjects: () => graphicObjects
                };
                exports.default = _default
            },
        97522:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/license/byte_utils.js ***!
              \***********************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.base64ToBytes = function(base64) {
                    return new Uint8Array(atob(base64).split("").map(s => s.charCodeAt(0)))
                };
                exports.bytesToHex = function(bytes) {
                    return [...bytes].map(b => b.toString(16).padStart(2, "0")).join("")
                };
                exports.bytesToWords = function(bytes) {
                    const words = new Uint32Array(1 + (bytes.length - 1 >> 2));
                    for (let k = 0; k < bytes.length; k += 1) {
                        words[k >> 2] |= bytes[k] << 8 * (3 - k % 4)
                    }
                    return words
                };
                exports.concatBytes = function(a, b) {
                    const result = new Uint8Array(a.length + b.length);
                    result.set(a, 0);
                    result.set(b, a.length);
                    return result
                };
                exports.hexToBytes = function(string) {
                    var _a, _b;
                    return new Uint8Array(null !== (_b = null === (_a = string.match(/.{1,2}/g)) || void 0 === _a ? void 0 : _a.map(byte => parseInt(byte, 16))) && void 0 !== _b ? _b : [])
                };
                exports.leftRotate = function(x, n) {
                    return (x << n | x >>> 32 - n) >>> 0
                };
                exports.stringToBytes = function(string) {
                    const bytes = new Uint8Array(string.length);
                    for (let k = 0; k < string.length; k += 1) {
                        bytes[k] = 255 & string.charCodeAt(k)
                    }
                    return bytes
                };
                exports.wordsToBytes = function(words) {
                    const bytes = new Uint8Array(4 * words.length);
                    for (let k = 0; k < bytes.length; k += 1) {
                        bytes[k] = words[k >> 2] >>> 8 * (3 - k % 4)
                    }
                    return bytes
                };
                exports.wordsToHex = function(words) {
                    return [...words].map(w => w.toString(16).padStart(8, "0")).join("")
                }
            },
        41402:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/license/key.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.PUBLIC_KEY = exports.INTERNAL_USAGE_ID = void 0;
                const PUBLIC_KEY = {
                    e: 65537,
                    n: new Uint8Array([200, 219, 153, 203, 140, 7, 228, 253, 193, 243, 62, 137, 139, 60, 68, 242, 48, 142, 113, 88, 185, 235, 253, 105, 80, 74, 32, 170, 96, 74, 111, 250, 7, 205, 154, 3, 146, 115, 153, 53, 45, 132, 123, 56, 61, 208, 184, 201, 63, 24, 109, 223, 0, 179, 169, 102, 139, 224, 73, 233, 45, 173, 138, 66, 98, 88, 69, 76, 177, 111, 113, 218, 192, 33, 101, 152, 25, 134, 34, 173, 32, 82, 230, 44, 247, 200, 253, 170, 192, 246, 30, 12, 96, 205, 100, 249, 181, 93, 0, 231])
                };
                exports.PUBLIC_KEY = PUBLIC_KEY;
                exports.INTERNAL_USAGE_ID = "2D293FRQFEus9BTrBCkD5A"
            },
        77685:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/license/license_validation.js ***!
              \*******************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                exports.parseLicenseKey = parseLicenseKey;
                exports.peekValidationPerformed = function() {
                    return validationPerformed
                };
                exports.setLicenseCheckSkipCondition = function() {};
                exports.validateLicense = validateLicense;
                var _errors = (obj = __webpack_require__( /*! ../../../core/errors */ 17381), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _version = __webpack_require__( /*! ../../../core/version */ 36739);
                var _byte_utils = __webpack_require__( /*! ./byte_utils */ 97522);
                var _key = __webpack_require__( /*! ./key */ 41402);
                var _pkcs = __webpack_require__( /*! ./pkcs1 */ 95373);
                var _rsa_bigint = __webpack_require__( /*! ./rsa_bigint */ 25746);
                var _sha = __webpack_require__( /*! ./sha1 */ 13082);
                var _types = __webpack_require__( /*! ./types */ 13004);

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                var __rest = (void 0, function(s, e) {
                    var t = {};
                    for (var p in s) {
                        if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) {
                            t[p] = s[p]
                        }
                    }
                    if (null != s && "function" === typeof Object.getOwnPropertySymbols) {
                        var i = 0;
                        for (p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
                            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) {
                                t[p[i]] = s[p[i]]
                            }
                        }
                    }
                    return t
                });
                const GENERAL_ERROR = {
                    kind: _types.TokenKind.corrupted,
                    error: "general"
                };
                const VERIFICATION_ERROR = {
                    kind: _types.TokenKind.corrupted,
                    error: "verification"
                };
                const DECODING_ERROR = {
                    kind: _types.TokenKind.corrupted,
                    error: "decoding"
                };
                const DESERIALIZATION_ERROR = {
                    kind: _types.TokenKind.corrupted,
                    error: "deserialization"
                };
                const PAYLOAD_ERROR = {
                    kind: _types.TokenKind.corrupted,
                    error: "payload"
                };
                const VERSION_ERROR = {
                    kind: _types.TokenKind.corrupted,
                    error: "version"
                };
                let validationPerformed = false;

                function parseLicenseKey(encodedKey) {
                    if (void 0 === encodedKey) {
                        return GENERAL_ERROR
                    }
                    const parts = encodedKey.split(".");
                    if (2 !== parts.length || 0 === parts[0].length || 0 === parts[1].length) {
                        return GENERAL_ERROR
                    }
                    if (! function(_ref) {
                            let {
                                text: text,
                                signature: encodedSignature
                            } = _ref;
                            return (0, _rsa_bigint.compareSignatures)({
                                key: _key.PUBLIC_KEY,
                                signature: (0, _byte_utils.base64ToBytes)(encodedSignature),
                                actual: (0, _pkcs.pad)((0, _sha.sha1)(text))
                            })
                        }({
                            text: parts[0],
                            signature: parts[1]
                        })) {
                        return VERIFICATION_ERROR
                    }
                    let decodedPayload = "";
                    try {
                        decodedPayload = atob(parts[0])
                    } catch (_a) {
                        return DECODING_ERROR
                    }
                    let payload = {};
                    try {
                        payload = JSON.parse(decodedPayload)
                    } catch (_b) {
                        return DESERIALIZATION_ERROR
                    }
                    const {
                        customerId: customerId,
                        maxVersionAllowed: maxVersionAllowed,
                        format: format,
                        internalUsageId: internalUsageId
                    } = payload, rest = __rest(payload, ["customerId", "maxVersionAllowed", "format", "internalUsageId"]);
                    if (void 0 !== internalUsageId) {
                        return {
                            kind: _types.TokenKind.internal,
                            internalUsageId: internalUsageId
                        }
                    }
                    if (void 0 === customerId || void 0 === maxVersionAllowed || void 0 === format) {
                        return PAYLOAD_ERROR
                    }
                    if (1 !== format) {
                        return VERSION_ERROR
                    }
                    return {
                        kind: _types.TokenKind.verified,
                        payload: _extends({
                            customerId: customerId,
                            maxVersionAllowed: maxVersionAllowed
                        }, rest)
                    }
                }

                function getLicenseCheckParams(_ref2) {
                    let {
                        licenseKey: licenseKey,
                        version: version
                    } = _ref2;
                    let preview = false;
                    try {
                        const [major, minor, patch] = version.split(".").map(Number);
                        preview = isNaN(patch) || patch < 3;
                        if (!licenseKey) {
                            return {
                                preview: preview,
                                error: "W0019"
                            }
                        }
                        const license = parseLicenseKey(licenseKey);
                        if (license.kind === _types.TokenKind.corrupted) {
                            return {
                                preview: preview,
                                error: "W0021"
                            }
                        }
                        if (license.kind === _types.TokenKind.internal) {
                            return {
                                preview: preview,
                                internal: true,
                                error: license.internalUsageId === _key.INTERNAL_USAGE_ID ? void 0 : "W0020"
                            }
                        }
                        if (!(major && minor)) {
                            return {
                                preview: preview,
                                error: "W0021"
                            }
                        }
                        if (10 * major + minor > license.payload.maxVersionAllowed) {
                            return {
                                preview: preview,
                                error: "W0020"
                            }
                        }
                        return {
                            preview: preview,
                            error: void 0
                        }
                    } catch (_a) {
                        return {
                            preview: preview,
                            error: "W0021"
                        }
                    }
                }

                function validateLicense(licenseKey) {
                    let version = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : _version.version;
                    if (validationPerformed) {
                        return
                    }
                    validationPerformed = true;
                    const {
                        preview: preview,
                        internal: internal,
                        error: error
                    } = getLicenseCheckParams({
                        licenseKey: licenseKey,
                        version: version
                    });
                    if (error) {
                        _errors.default.log(preview ? "W0022" : error);
                        return
                    }
                    if (preview && !internal) {
                        _errors.default.log("W0022")
                    }
                }
                var _default = {
                    validateLicense: validateLicense
                };
                exports.default = _default
            },
        95373:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/license/pkcs1.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.pad = function(hash) {
                    const dataLength = (8 * _key.PUBLIC_KEY.n.length + 6) / 8;
                    const data = (0, _byte_utils.concatBytes)((0, _byte_utils.hexToBytes)("3021300906052b0e03021a05000414"), hash);
                    if (data.length + 10 > dataLength) {
                        throw Error("Key is too short for SHA1 signing algorithm")
                    }
                    const padding = new Uint8Array(dataLength - data.length);
                    padding.fill(255, 0, padding.length - 1);
                    padding[0] = 0;
                    padding[1] = 1;
                    padding[padding.length - 1] = 0;
                    return (0, _byte_utils.concatBytes)(padding, data)
                };
                var _byte_utils = __webpack_require__( /*! ./byte_utils */ 97522);
                var _key = __webpack_require__( /*! ./key */ 41402)
            },
        25746:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/license/rsa_bigint.js ***!
              \***********************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.compareSignatures = function(args) {
                    try {
                        const zero = BigInt(0);
                        const one = BigInt(1);
                        const eight = BigInt(8);
                        const modExp = (base, exponent, modulus) => {
                            let result = one;
                            let b = base;
                            let e = exponent;
                            while (e) {
                                if (e & one) {
                                    result = result * b % modulus
                                }
                                b = b * b % modulus;
                                e >>= one
                            }
                            return result
                        };
                        const bigIntFromBytes = bytes => bytes.reduce((acc, cur) => (acc << eight) + BigInt(cur), zero);
                        const actual = bigIntFromBytes(args.actual);
                        const signature = bigIntFromBytes(args.signature);
                        const exponent = BigInt(args.key.e);
                        const modulus = bigIntFromBytes(args.key.n);
                        const expected = modExp(signature, exponent, modulus);
                        return expected === actual
                    } catch (_a) {
                        return true
                    }
                }
            },
        13082:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/license/sha1.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.preprocess = preprocess;
                exports.sha1 = function(text) {
                    const message = preprocess(text);
                    const h = new Uint32Array([1732584193, 4023233417, 2562383102, 271733878, 3285377520]);
                    for (let i = 0; i < message.length; i += 16) {
                        const w = new Uint32Array(80);
                        for (let j = 0; j < 16; j += 1) {
                            w[j] = message[i + j]
                        }
                        for (let j = 16; j < 80; j += 1) {
                            const n = w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16];
                            w[j] = n << 1 | n >>> 31
                        }
                        let a = h[0];
                        let b = h[1];
                        let c = h[2];
                        let d = h[3];
                        let e = h[4];
                        for (let j = 0; j < 80; j += 1) {
                            const [f, k] = j < 20 ? [b & c | ~b & d, 1518500249] : j < 40 ? [b ^ c ^ d, 1859775393] : j < 60 ? [b & c | b & d | c & d, 2400959708] : [b ^ c ^ d, 3395469782];
                            const temp = (0, _byte_utils.leftRotate)(a, 5) + f + e + k + w[j];
                            e = d;
                            d = c;
                            c = (0, _byte_utils.leftRotate)(b, 30);
                            b = a;
                            a = temp
                        }
                        h[0] += a;
                        h[1] += b;
                        h[2] += c;
                        h[3] += d;
                        h[4] += e
                    }
                    return (0, _byte_utils.wordsToBytes)(h)
                };
                var _byte_utils = __webpack_require__( /*! ./byte_utils */ 97522);

                function preprocess(text) {
                    const bytes = new Uint8Array(text.length + 1);
                    bytes.set((0, _byte_utils.stringToBytes)(text));
                    bytes[bytes.length - 1] = 128;
                    const words = (0, _byte_utils.bytesToWords)(new Uint8Array(bytes));
                    const result = new Uint32Array(16 * Math.ceil((words.length + 2) / 16));
                    result.set(words, 0);
                    result[result.length - 1] = 8 * (bytes.length - 1);
                    return result
                }
            },
        13004:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/license/types.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.TokenKind = void 0;
                var TokenKind;
                exports.TokenKind = TokenKind;
                ! function(TokenKind) {
                    TokenKind.corrupted = "corrupted";
                    TokenKind.verified = "verified";
                    TokenKind.internal = "internal"
                }(TokenKind || (exports.TokenKind = TokenKind = {}))
            },
        24321:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/date.js ***!
              \***************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.dateUtilsTs = void 0;
                const dateUtilsTs = {
                    addOffsets: (date, offsets) => {
                        const newDateMs = offsets.reduce((result, offset) => result + offset, date.getTime());
                        return new Date(newDateMs)
                    }
                };
                exports.dateUtilsTs = dateUtilsTs
            },
        11390:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/core/utils/math.js ***!
              \***************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.shiftIntegerByModule = void 0;
                exports.shiftIntegerByModule = (integerValue, moduleValue) => {
                    if (!Number.isInteger(integerValue)) {
                        throw Error("Passed integer value ".concat(integerValue, " is not an integer."))
                    }
                    if (!Number.isInteger(moduleValue)) {
                        throw Error("Passed module value ".concat(moduleValue, " is not an integer."))
                    }
                    if (moduleValue <= 0) {
                        throw Error("Passed module value ".concat(moduleValue, " must be > 0."))
                    }
                    const normalizedInteger = integerValue % moduleValue;
                    switch (true) {
                        case 0 === normalizedInteger:
                            return 0;
                        case normalizedInteger > 0:
                            return normalizedInteger;
                        case normalizedInteger < 0:
                            return moduleValue + normalizedInteger;
                        default:
                            throw Error("Unexpected division (".concat(integerValue, " % ").concat(moduleValue, ") occurred."))
                    }
                }
            },
        90102:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/filter_builder/m_between.js ***!
              \************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.getConfig = function(caption, context) {
                    return {
                        name: "between",
                        caption: caption,
                        icon: "range",
                        valueSeparator: "\u2013",
                        dataTypes: ["number", "date", "datetime"],
                        editorTemplate: editorTemplate.bind(context),
                        notForLookup: true
                    }
                };
                var _renderer = (obj = __webpack_require__( /*! ../../core/renderer */ 68374), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                const FILTER_BUILDER_RANGE_START_CLASS = "".concat("dx-filterbuilder-range", "-start");
                const FILTER_BUILDER_RANGE_END_CLASS = "".concat("dx-filterbuilder-range", "-end");
                const FILTER_BUILDER_RANGE_SEPARATOR_CLASS = "".concat("dx-filterbuilder-range", "-separator");

                function editorTemplate(conditionInfo, container) {
                    const $editorStart = (0, _renderer.default)("<div>").addClass(FILTER_BUILDER_RANGE_START_CLASS);
                    const $editorEnd = (0, _renderer.default)("<div>").addClass(FILTER_BUILDER_RANGE_END_CLASS);
                    let values = conditionInfo.value || [];
                    const getStartValue = function(values) {
                        return values && values.length > 0 ? values[0] : null
                    };
                    const getEndValue = function(values) {
                        return values && 2 === values.length ? values[1] : null
                    };
                    container.append($editorStart);
                    container.append((0, _renderer.default)("<span>").addClass(FILTER_BUILDER_RANGE_SEPARATOR_CLASS).text("\u2013"));
                    container.append($editorEnd);
                    container.addClass("dx-filterbuilder-range");
                    this._editorFactory.createEditor.call(this, $editorStart, (0, _extend.extend)({}, conditionInfo.field, conditionInfo, {
                        value: getStartValue(values),
                        parentType: "filterBuilder",
                        setValue(value) {
                            values = [value, getEndValue(values)];
                            conditionInfo.setValue(values)
                        }
                    }));
                    this._editorFactory.createEditor.call(this, $editorEnd, (0, _extend.extend)({}, conditionInfo.field, conditionInfo, {
                        value: getEndValue(values),
                        parentType: "filterBuilder",
                        setValue(value) {
                            values = [getStartValue(values), value];
                            conditionInfo.setValue(values)
                        }
                    }))
                }
            },
        88283:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/filter_builder/m_filter_builder.js ***!
              \*******************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 38377));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _utils = __webpack_require__( /*! ../../ui/overlay/utils */ 13660);
                var _popup = _interopRequireDefault(__webpack_require__( /*! ../../ui/popup */ 39114));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../ui/shared/ui.editor_factory_mixin */ 15653));
                var _tree_view = _interopRequireDefault(__webpack_require__( /*! ../../ui/tree_view */ 30254));
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../../ui/widget/ui.widget */ 14390));
                var _m_utils = __webpack_require__( /*! ./m_utils */ 70474);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const FILTER_BUILDER_GROUP_CLASS = "".concat("dx-filterbuilder", "-group");
                const FILTER_BUILDER_GROUP_ITEM_CLASS = "".concat(FILTER_BUILDER_GROUP_CLASS, "-item");
                const FILTER_BUILDER_GROUP_CONTENT_CLASS = "".concat(FILTER_BUILDER_GROUP_CLASS, "-content");
                const FILTER_BUILDER_GROUP_OPERATIONS_CLASS = "".concat(FILTER_BUILDER_GROUP_CLASS, "-operations");
                const FILTER_BUILDER_GROUP_OPERATION_CLASS = "".concat(FILTER_BUILDER_GROUP_CLASS, "-operation");
                const FILTER_BUILDER_ACTION_CLASS = "".concat("dx-filterbuilder", "-action");
                const FILTER_BUILDER_IMAGE_CLASS = "".concat(FILTER_BUILDER_ACTION_CLASS, "-icon");
                const FILTER_BUILDER_ITEM_TEXT_CLASS = "".concat("dx-filterbuilder", "-text");
                const FILTER_BUILDER_ITEM_FIELD_CLASS = "".concat("dx-filterbuilder", "-item-field");
                const FILTER_BUILDER_ITEM_OPERATION_CLASS = "".concat("dx-filterbuilder", "-item-operation");
                const FILTER_BUILDER_ITEM_VALUE_CLASS = "".concat("dx-filterbuilder", "-item-value");
                const FILTER_BUILDER_ITEM_VALUE_TEXT_CLASS = "".concat("dx-filterbuilder", "-item-value-text");
                const FILTER_BUILDER_OVERLAY_CLASS = "".concat("dx-filterbuilder", "-overlay");
                const FILTER_BUILDER_FILTER_OPERATIONS_CLASS = "".concat("dx-filterbuilder", "-operations");
                const FILTER_BUILDER_FIELDS_CLASS = "".concat("dx-filterbuilder", "-fields");
                const FILTER_BUILDER_ADD_CONDITION_CLASS = "".concat("dx-filterbuilder", "-add-condition");
                const FILTER_BUILDER_MENU_CUSTOM_OPERATION_CLASS = "".concat("dx-filterbuilder", "-menu-custom-operation");
                const ACTIONS = [{
                    name: "onEditorPreparing",
                    config: {
                        excludeValidators: ["disabled", "readOnly"],
                        category: "rendering"
                    }
                }, {
                    name: "onEditorPrepared",
                    config: {
                        excludeValidators: ["disabled", "readOnly"],
                        category: "rendering"
                    }
                }, {
                    name: "onValueChanged",
                    config: {
                        excludeValidators: ["disabled", "readOnly"]
                    }
                }];
                const OPERATORS = {
                    and: "and",
                    or: "or",
                    notAnd: "!and",
                    notOr: "!or"
                };
                const EditorFactory = _class.default.inherit(_ui.default);
                let FilterBuilder = function(_Widget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(FilterBuilder, _Widget);

                    function FilterBuilder() {
                        return _Widget.apply(this, arguments) || this
                    }
                    var _proto = FilterBuilder.prototype;
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_Widget.prototype._getDefaultOptions.call(this), {
                            onEditorPreparing: null,
                            onEditorPrepared: null,
                            onValueChanged: null,
                            fields: [],
                            groupOperations: ["and", "or", "notAnd", "notOr"],
                            maxGroupLevel: void 0,
                            value: null,
                            allowHierarchicalFields: false,
                            groupOperationDescriptions: {
                                and: _message.default.format("dxFilterBuilder-and"),
                                or: _message.default.format("dxFilterBuilder-or"),
                                notAnd: _message.default.format("dxFilterBuilder-notAnd"),
                                notOr: _message.default.format("dxFilterBuilder-notOr")
                            },
                            customOperations: [],
                            closePopupOnTargetScroll: true,
                            filterOperationDescriptions: {
                                between: _message.default.format("dxFilterBuilder-filterOperationBetween"),
                                equal: _message.default.format("dxFilterBuilder-filterOperationEquals"),
                                notEqual: _message.default.format("dxFilterBuilder-filterOperationNotEquals"),
                                lessThan: _message.default.format("dxFilterBuilder-filterOperationLess"),
                                lessThanOrEqual: _message.default.format("dxFilterBuilder-filterOperationLessOrEquals"),
                                greaterThan: _message.default.format("dxFilterBuilder-filterOperationGreater"),
                                greaterThanOrEqual: _message.default.format("dxFilterBuilder-filterOperationGreaterOrEquals"),
                                startsWith: _message.default.format("dxFilterBuilder-filterOperationStartsWith"),
                                contains: _message.default.format("dxFilterBuilder-filterOperationContains"),
                                notContains: _message.default.format("dxFilterBuilder-filterOperationNotContains"),
                                endsWith: _message.default.format("dxFilterBuilder-filterOperationEndsWith"),
                                isBlank: _message.default.format("dxFilterBuilder-filterOperationIsBlank"),
                                isNotBlank: _message.default.format("dxFilterBuilder-filterOperationIsNotBlank")
                            }
                        })
                    };
                    _proto._optionChanged = function(args) {
                        switch (args.name) {
                            case "closePopupOnTargetScroll":
                                break;
                            case "onEditorPreparing":
                            case "onEditorPrepared":
                            case "onValueChanged":
                                this._initActions();
                                break;
                            case "customOperations":
                                this._initCustomOperations();
                                this._invalidate();
                                break;
                            case "fields":
                            case "maxGroupLevel":
                            case "groupOperations":
                            case "allowHierarchicalFields":
                            case "groupOperationDescriptions":
                            case "filterOperationDescriptions":
                                this._invalidate();
                                break;
                            case "value":
                                if (args.value !== args.previousValue) {
                                    const disableInvalidateForValue = this._disableInvalidateForValue;
                                    if (!disableInvalidateForValue) {
                                        this._initModel();
                                        this._invalidate()
                                    }
                                    this._disableInvalidateForValue = false;
                                    this.executeAction("onValueChanged", {
                                        value: args.value,
                                        previousValue: args.previousValue
                                    });
                                    this._disableInvalidateForValue = disableInvalidateForValue
                                }
                                break;
                            default:
                                _Widget.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto.getFilterExpression = function() {
                        const fields = this._getNormalizedFields();
                        const value = (0, _extend.extend)(true, [], this._model);
                        return (0, _m_utils.getFilterExpression)((0, _m_utils.getNormalizedFilter)(value), fields, this._customOperations, "filterBuilder")
                    };
                    _proto._getNormalizedFields = function() {
                        return (0, _m_utils.getNormalizedFields)(this.option("fields"))
                    };
                    _proto._updateFilter = function() {
                        this._disableInvalidateForValue = true;
                        const value = (0, _extend.extend)(true, [], this._model);
                        const normalizedValue = (0, _m_utils.getNormalizedFilter)(value);
                        const oldValue = (0, _m_utils.getNormalizedFilter)(this._getModel(this.option("value")));
                        if (JSON.stringify(oldValue) !== JSON.stringify(normalizedValue)) {
                            this.option("value", normalizedValue)
                        }
                        this._disableInvalidateForValue = false;
                        this._fireContentReadyAction()
                    };
                    _proto._init = function() {
                        this._initCustomOperations();
                        this._initModel();
                        this._initEditorFactory();
                        this._initActions();
                        _Widget.prototype._init.call(this)
                    };
                    _proto._initEditorFactory = function() {
                        this._editorFactory = new EditorFactory
                    };
                    _proto._initCustomOperations = function() {
                        this._customOperations = (0, _m_utils.getMergedOperations)(this.option("customOperations"), this.option("filterOperationDescriptions.between"), this)
                    };
                    _proto._getDefaultGroupOperation = function() {
                        var _a, _b;
                        return null !== (_b = null === (_a = this.option("groupOperations")) || void 0 === _a ? void 0 : _a[0]) && void 0 !== _b ? _b : OPERATORS.and
                    };
                    _proto._getModel = function(value) {
                        return (0, _m_utils.convertToInnerStructure)(value, this._customOperations, this._getDefaultGroupOperation())
                    };
                    _proto._initModel = function() {
                        this._model = this._getModel(this.option("value"))
                    };
                    _proto._initActions = function() {
                        const that = this;
                        that._actions = {};
                        ACTIONS.forEach(action => {
                            const actionConfig = (0, _extend.extend)({}, action.config);
                            that._actions[action.name] = that._createActionByOption(action.name, actionConfig)
                        })
                    };
                    _proto.executeAction = function(actionName, options) {
                        const action = this._actions[actionName];
                        return action && action(options)
                    };
                    _proto._initMarkup = function() {
                        this.$element().addClass("dx-filterbuilder");
                        _Widget.prototype._initMarkup.call(this);
                        this._createGroupElementByCriteria(this._model).appendTo(this.$element())
                    };
                    _proto._createConditionElement = function(condition, parent) {
                        return (0, _renderer.default)("<div>").addClass(FILTER_BUILDER_GROUP_CLASS).append(this._createConditionItem(condition, parent))
                    };
                    _proto._createGroupElementByCriteria = function(criteria, parent) {
                        let groupLevel = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0;
                        const $group = this._createGroupElement(criteria, parent, groupLevel);
                        const $groupContent = $group.find(".".concat(FILTER_BUILDER_GROUP_CONTENT_CLASS));
                        const groupCriteria = (0, _m_utils.getGroupCriteria)(criteria);
                        for (let i = 0; i < groupCriteria.length; i++) {
                            const innerCriteria = groupCriteria[i];
                            if ((0, _m_utils.isGroup)(innerCriteria)) {
                                this._createGroupElementByCriteria(innerCriteria, criteria, groupLevel + 1).appendTo($groupContent)
                            } else if ((0, _m_utils.isCondition)(innerCriteria)) {
                                this._createConditionElement(innerCriteria, criteria).appendTo($groupContent)
                            }
                        }
                        return $group
                    };
                    _proto._createGroupElement = function(criteria, parent, groupLevel) {
                        const $groupItem = (0, _renderer.default)("<div>").addClass(FILTER_BUILDER_GROUP_ITEM_CLASS);
                        const $groupContent = (0, _renderer.default)("<div>").addClass(FILTER_BUILDER_GROUP_CONTENT_CLASS);
                        const $group = (0, _renderer.default)("<div>").addClass(FILTER_BUILDER_GROUP_CLASS).append($groupItem).append($groupContent);
                        if (null != parent) {
                            this._createRemoveButton(() => {
                                (0, _m_utils.removeItem)(parent, criteria);
                                $group.remove();
                                this._updateFilter()
                            }).appendTo($groupItem)
                        }
                        this._createGroupOperationButton(criteria).appendTo($groupItem);
                        this._createAddButton(() => {
                            const newGroup = (0, _m_utils.createEmptyGroup)(this._getDefaultGroupOperation());
                            (0, _m_utils.addItem)(newGroup, criteria);
                            this._createGroupElement(newGroup, criteria, groupLevel + 1).appendTo($groupContent);
                            this._updateFilter()
                        }, () => {
                            const field = this.option("fields")[0];
                            const newCondition = (0, _m_utils.createCondition)(field, this._customOperations);
                            (0, _m_utils.addItem)(newCondition, criteria);
                            this._createConditionElement(newCondition, criteria).appendTo($groupContent);
                            this._updateFilter()
                        }, groupLevel).appendTo($groupItem);
                        return $group
                    };
                    _proto._createButton = function(caption) {
                        return (0, _renderer.default)("<div>").text(caption)
                    };
                    _proto._createGroupOperationButton = function(criteria) {
                        const groupOperations = this._getGroupOperations(criteria);
                        let groupMenuItem = (0, _m_utils.getGroupMenuItem)(criteria, groupOperations);
                        const caption = groupMenuItem.text;
                        const $operationButton = groupOperations && groupOperations.length < 2 ? this._createButton(caption).addClass("dx-state-disabled") : this._createButtonWithMenu({
                            caption: caption,
                            menu: {
                                items: groupOperations,
                                displayExpr: "text",
                                keyExpr: "value",
                                onItemClick: e => {
                                    if (groupMenuItem !== e.itemData) {
                                        (0, _m_utils.setGroupValue)(criteria, e.itemData.value);
                                        $operationButton.text(e.itemData.text);
                                        groupMenuItem = e.itemData;
                                        this._updateFilter()
                                    }
                                },
                                onContentReady(e) {
                                    e.component.selectItem(groupMenuItem)
                                },
                                cssClass: FILTER_BUILDER_GROUP_OPERATIONS_CLASS
                            }
                        });
                        return $operationButton.addClass(FILTER_BUILDER_ITEM_TEXT_CLASS).addClass(FILTER_BUILDER_GROUP_OPERATION_CLASS).attr("tabindex", 0)
                    };
                    _proto._createButtonWithMenu = function(options) {
                        const that = this;
                        const removeMenu = function() {
                            that.$element().find(".".concat("dx-state-active")).removeClass("dx-state-active");
                            that.$element().find(".dx-overlay .dx-treeview").remove();
                            that.$element().find(".dx-overlay").remove()
                        };
                        const rtlEnabled = this.option("rtlEnabled");
                        const position = rtlEnabled ? "right" : "left";
                        const $button = this._createButton(options.caption);
                        (0, _extend.extend)(options.menu, {
                            focusStateEnabled: true,
                            selectionMode: "single",
                            onItemClick: (handler = options.menu.onItemClick, function(e) {
                                handler(e);
                                if ("dxclick" === e.event.type) {
                                    removeMenu()
                                }
                            }),
                            onHiding() {
                                $button.removeClass("dx-state-active")
                            },
                            position: {
                                my: "".concat(position, " top"),
                                at: "".concat(position, " bottom"),
                                offset: "0 1",
                                of: $button,
                                collision: "flip"
                            },
                            animation: null,
                            onHidden() {
                                removeMenu()
                            },
                            cssClass: "".concat(FILTER_BUILDER_OVERLAY_CLASS, " ").concat(options.menu.cssClass),
                            rtlEnabled: rtlEnabled
                        });
                        var handler;
                        options.popup = {
                            onShown(info) {
                                const treeViewElement = (0, _renderer.default)(info.component.content()).find(".dx-treeview");
                                const treeView = treeViewElement.dxTreeView("instance");
                                _events_engine.default.on(treeViewElement, "keyup keydown", e => {
                                    const keyName = (0, _index.normalizeKeyName)(e);
                                    if ("keydown" === e.type && "tab" === keyName || "keyup" === e.type && ("escape" === keyName || "enter" === keyName)) {
                                        info.component.hide();
                                        _events_engine.default.trigger(options.menu.position.of, "focus")
                                    }
                                });
                                treeView.focus();
                                treeView.option("focusedElement", null)
                            }
                        };
                        this._subscribeOnClickAndEnterKey($button, () => {
                            removeMenu();
                            that._createPopupWithTreeView(options, that.$element());
                            $button.addClass("dx-state-active")
                        });
                        return $button
                    };
                    _proto._hasValueButton = function(condition) {
                        const customOperation = (0, _m_utils.getCustomOperation)(this._customOperations, condition[1]);
                        return customOperation ? false !== customOperation.hasValue : null !== condition[2]
                    };
                    _proto._createOperationButtonWithMenu = function(condition, field) {
                        const that = this;
                        const availableOperations = (0, _m_utils.getAvailableOperations)(field, this.option("filterOperationDescriptions"), this._customOperations);
                        let currentOperation = (0, _m_utils.getOperationFromAvailable)((0, _m_utils.getOperationValue)(condition), availableOperations);
                        const $operationButton = this._createButtonWithMenu({
                            caption: currentOperation.text,
                            menu: {
                                items: availableOperations,
                                displayExpr: "text",
                                onItemRendered(e) {
                                    e.itemData.isCustom && (0, _renderer.default)(e.itemElement).addClass(FILTER_BUILDER_MENU_CUSTOM_OPERATION_CLASS)
                                },
                                onContentReady(e) {
                                    e.component.selectItem(currentOperation)
                                },
                                onItemClick: e => {
                                    if (currentOperation !== e.itemData) {
                                        currentOperation = e.itemData;
                                        (0, _m_utils.updateConditionByOperation)(condition, currentOperation.value, that._customOperations);
                                        const $valueButton = $operationButton.siblings().filter(".".concat(FILTER_BUILDER_ITEM_VALUE_CLASS));
                                        if (that._hasValueButton(condition)) {
                                            if (0 !== $valueButton.length) {
                                                $valueButton.remove()
                                            }
                                            that._createValueButton(condition, field).appendTo($operationButton.parent())
                                        } else {
                                            $valueButton.remove()
                                        }
                                        $operationButton.html(currentOperation.text);
                                        this._updateFilter()
                                    }
                                },
                                cssClass: FILTER_BUILDER_FILTER_OPERATIONS_CLASS
                            }
                        }).addClass(FILTER_BUILDER_ITEM_TEXT_CLASS).addClass(FILTER_BUILDER_ITEM_OPERATION_CLASS).attr("tabindex", 0);
                        return $operationButton
                    };
                    _proto._createOperationAndValueButtons = function(condition, field, $item) {
                        this._createOperationButtonWithMenu(condition, field).appendTo($item);
                        if (this._hasValueButton(condition)) {
                            this._createValueButton(condition, field).appendTo($item)
                        }
                    };
                    _proto._createFieldButtonWithMenu = function(fields, condition, field) {
                        const that = this;
                        const allowHierarchicalFields = this.option("allowHierarchicalFields");
                        const items = (0, _m_utils.getItems)(fields, allowHierarchicalFields);
                        let item = (0, _m_utils.getField)(field.name || field.dataField, items);
                        const getFullCaption = function(item, items) {
                            return allowHierarchicalFields ? (0, _m_utils.getCaptionWithParents)(item, items) : item.caption
                        };
                        const $fieldButton = this._createButtonWithMenu({
                            caption: getFullCaption(item, items),
                            menu: {
                                items: items,
                                dataStructure: "plain",
                                keyExpr: "id",
                                parentId: "parentId",
                                displayExpr: "caption",
                                onItemClick: e => {
                                    if (item !== e.itemData) {
                                        item = e.itemData;
                                        condition[0] = item.name || item.dataField;
                                        condition[2] = "object" === item.dataType ? null : "";
                                        (0, _m_utils.updateConditionByOperation)(condition, (0, _m_utils.getDefaultOperation)(item), that._customOperations);
                                        $fieldButton.siblings().filter(".".concat(FILTER_BUILDER_ITEM_TEXT_CLASS)).remove();
                                        that._createOperationAndValueButtons(condition, item, $fieldButton.parent());
                                        const caption = getFullCaption(item, e.component.option("items"));
                                        $fieldButton.html(caption);
                                        this._updateFilter()
                                    }
                                },
                                onContentReady(e) {
                                    e.component.selectItem(item)
                                },
                                cssClass: FILTER_BUILDER_FIELDS_CLASS
                            }
                        }).addClass(FILTER_BUILDER_ITEM_TEXT_CLASS).addClass(FILTER_BUILDER_ITEM_FIELD_CLASS).attr("tabindex", 0);
                        return $fieldButton
                    };
                    _proto._createConditionItem = function(condition, parent) {
                        const $item = (0, _renderer.default)("<div>").addClass(FILTER_BUILDER_GROUP_ITEM_CLASS);
                        const fields = this._getNormalizedFields();
                        const field = (0, _m_utils.getField)(condition[0], fields);
                        this._createRemoveButton(() => {
                            (0, _m_utils.removeItem)(parent, condition);
                            const isSingleChild = 1 === $item.parent().children().length;
                            if (isSingleChild) {
                                $item.parent().remove()
                            } else {
                                $item.remove()
                            }
                            this._updateFilter()
                        }).appendTo($item);
                        this._createFieldButtonWithMenu(fields, condition, field).appendTo($item);
                        this._createOperationAndValueButtons(condition, field, $item);
                        return $item
                    };
                    _proto._getGroupOperations = function(criteria) {
                        let groupOperations = this.option("groupOperations");
                        const groupOperationDescriptions = this.option("groupOperationDescriptions");
                        if (!groupOperations || !groupOperations.length) {
                            groupOperations = [(0, _m_utils.getGroupValue)(criteria).replace("!", "not")]
                        }
                        return groupOperations.map(operation => ({
                            text: groupOperationDescriptions[operation],
                            value: OPERATORS[operation]
                        }))
                    };
                    _proto._createRemoveButton = function(handler) {
                        const $removeButton = (0, _renderer.default)("<div>").addClass(FILTER_BUILDER_IMAGE_CLASS).addClass("dx-icon-remove").addClass(FILTER_BUILDER_ACTION_CLASS).attr("tabindex", 0);
                        this._subscribeOnClickAndEnterKey($removeButton, handler);
                        return $removeButton
                    };
                    _proto._createAddButton = function(addGroupHandler, addConditionHandler, groupLevel) {
                        let $button;
                        const maxGroupLevel = this.option("maxGroupLevel");
                        if ((0, _type.isDefined)(maxGroupLevel) && groupLevel >= maxGroupLevel) {
                            $button = this._createButton();
                            this._subscribeOnClickAndEnterKey($button, addConditionHandler)
                        } else {
                            $button = this._createButtonWithMenu({
                                menu: {
                                    items: [{
                                        caption: _message.default.format("dxFilterBuilder-addCondition"),
                                        click: addConditionHandler
                                    }, {
                                        caption: _message.default.format("dxFilterBuilder-addGroup"),
                                        click: addGroupHandler
                                    }],
                                    displayExpr: "caption",
                                    onItemClick(e) {
                                        e.itemData.click()
                                    },
                                    cssClass: FILTER_BUILDER_ADD_CONDITION_CLASS
                                }
                            })
                        }
                        return $button.addClass(FILTER_BUILDER_IMAGE_CLASS).addClass("dx-icon-plus").addClass(FILTER_BUILDER_ACTION_CLASS).attr("tabindex", 0)
                    };
                    _proto._createValueText = function(item, field, $container) {
                        const that = this;
                        const $text = (0, _renderer.default)("<div>").html("&nbsp;").addClass(FILTER_BUILDER_ITEM_VALUE_TEXT_CLASS).attr("tabindex", 0).appendTo($container);
                        const value = item[2];
                        const customOperation = (0, _m_utils.getCustomOperation)(that._customOperations, item[1]);
                        if (!customOperation && field.lookup) {
                            (0, _m_utils.getCurrentLookupValueText)(field, value, result => {
                                (0, _m_utils.renderValueText)($text, result)
                            })
                        } else {
                            (0, _deferred.when)((0, _m_utils.getCurrentValueText)(field, value, customOperation)).done(result => {
                                (0, _m_utils.renderValueText)($text, result, customOperation)
                            })
                        }
                        that._subscribeOnClickAndEnterKey($text, e => {
                            if ("keyup" === e.type) {
                                e.stopPropagation()
                            }
                            that._createValueEditorWithEvents(item, field, $container)
                        });
                        return $text
                    };
                    _proto._updateConditionValue = function(item, value, callback) {
                        const areValuesDifferent = item[2] !== value;
                        if (areValuesDifferent) {
                            item[2] = value
                        }
                        callback();
                        this._updateFilter()
                    };
                    _proto._addDocumentKeyUp = function($editor, handler) {
                        let isComposing = false;
                        let hasCompositionJustEnded = false;
                        const document = _dom_adapter.default.getDocument();
                        const documentKeyUpHandler = e => {
                            if (isComposing || hasCompositionJustEnded) {
                                hasCompositionJustEnded = false;
                                return
                            }
                            handler(e)
                        };
                        _events_engine.default.on(document, "keyup", documentKeyUpHandler);
                        const input = $editor.find("input");
                        _events_engine.default.on(input, "compositionstart", () => {
                            isComposing = true
                        });
                        _events_engine.default.on(input, "compositionend", () => {
                            isComposing = false;
                            hasCompositionJustEnded = true
                        });
                        _events_engine.default.on(input, "keydown", event => {
                            if (229 !== event.which) {
                                hasCompositionJustEnded = false
                            }
                        });
                        this._documentKeyUpHandler = documentKeyUpHandler
                    };
                    _proto._addDocumentClick = function($editor, closeEditorFunc) {
                        const document = _dom_adapter.default.getDocument();
                        const documentClickHandler = e => {
                            if (!this._isFocusOnEditorParts($editor, e.target)) {
                                _events_engine.default.trigger($editor.find("input"), "change");
                                closeEditorFunc()
                            }
                        };
                        _events_engine.default.on(document, "dxpointerdown", documentClickHandler);
                        this._documentClickHandler = documentClickHandler
                    };
                    _proto._isFocusOnEditorParts = function($editor, target) {
                        const activeElement = target || _dom_adapter.default.getActiveElement();
                        return (0, _renderer.default)(activeElement).closest($editor.children()).length || (0, _renderer.default)(activeElement).closest(".dx-dropdowneditor-overlay").length
                    };
                    _proto._removeEvents = function() {
                        const document = _dom_adapter.default.getDocument();
                        (0, _type.isDefined)(this._documentKeyUpHandler) && _events_engine.default.off(document, "keyup", this._documentKeyUpHandler);
                        (0, _type.isDefined)(this._documentClickHandler) && _events_engine.default.off(document, "dxpointerdown", this._documentClickHandler)
                    };
                    _proto._dispose = function() {
                        this._removeEvents();
                        _Widget.prototype._dispose.call(this)
                    };
                    _proto._createValueEditorWithEvents = function(item, field, $container) {
                        let value = item[2];
                        const createValueText = () => {
                            $container.empty();
                            this._removeEvents();
                            return this._createValueText(item, field, $container)
                        };
                        const closeEditor = () => {
                            this._updateConditionValue(item, value, () => {
                                createValueText()
                            })
                        };
                        const options = {
                            value: "" === value ? null : value,
                            filterOperation: (0, _m_utils.getOperationValue)(item),
                            setValue(data) {
                                value = null === data ? "" : data
                            },
                            closeEditor: closeEditor,
                            text: $container.text()
                        };
                        $container.empty();
                        const $editor = this._createValueEditor($container, field, options);
                        _events_engine.default.trigger($editor.find("input").not(":hidden").eq(0), "focus");
                        this._removeEvents();
                        this._addDocumentClick($editor, closeEditor);
                        this._addDocumentKeyUp($editor, e => {
                            const keyName = (0, _index.normalizeKeyName)(e);
                            if ("tab" === keyName) {
                                if (this._isFocusOnEditorParts($editor)) {
                                    return
                                }
                                this._updateConditionValue(item, value, () => {
                                    createValueText();
                                    if (e.shiftKey) {
                                        _events_engine.default.trigger($container.prev(), "focus")
                                    }
                                })
                            }
                            if ("escape" === keyName) {
                                _events_engine.default.trigger(createValueText(), "focus")
                            }
                            if ("enter" === keyName) {
                                this._updateConditionValue(item, value, () => {
                                    _events_engine.default.trigger(createValueText(), "focus")
                                })
                            }
                        });
                        this._fireContentReadyAction()
                    };
                    _proto._createValueButton = function(item, field) {
                        const $valueButton = (0, _renderer.default)("<div>").addClass(FILTER_BUILDER_ITEM_TEXT_CLASS).addClass(FILTER_BUILDER_ITEM_VALUE_CLASS);
                        this._createValueText(item, field, $valueButton);
                        return $valueButton
                    };
                    _proto._createValueEditor = function($container, field, options) {
                        const $editor = (0, _renderer.default)("<div>").attr("tabindex", 0).appendTo($container);
                        const customOperation = (0, _m_utils.getCustomOperation)(this._customOperations, options.filterOperation);
                        const editorTemplate = customOperation && customOperation.editorTemplate ? customOperation.editorTemplate : field.editorTemplate;
                        if (editorTemplate) {
                            const template = this._getTemplate(editorTemplate);
                            template.render({
                                model: (0, _extend.extend)({
                                    field: field
                                }, options),
                                container: $editor
                            })
                        } else {
                            this._editorFactory.createEditor.call(this, $editor, (0, _extend.extend)({}, field, options, {
                                parentType: "filterBuilder"
                            }))
                        }
                        return $editor
                    };
                    _proto._createPopupWithTreeView = function(options, $container) {
                        const that = this;
                        const $popup = (0, _renderer.default)("<div>").addClass(options.menu.cssClass).appendTo($container);
                        this._createComponent($popup, _popup.default, {
                            onHiding: options.menu.onHiding,
                            onHidden: options.menu.onHidden,
                            rtlEnabled: options.menu.rtlEnabled,
                            position: options.menu.position,
                            animation: options.menu.animation,
                            contentTemplate(contentElement) {
                                const $menuContainer = (0, _renderer.default)("<div>").appendTo(contentElement);
                                that._createComponent($menuContainer, _tree_view.default, options.menu);
                                this.repaint()
                            },
                            _ignoreFunctionValueDeprecation: true,
                            maxHeight: () => (0, _utils.getElementMaxHeightByWindow)(options.menu.position.of),
                            visible: true,
                            focusStateEnabled: false,
                            hideOnParentScroll: this.option("closePopupOnTargetScroll"),
                            hideOnOutsideClick: true,
                            onShown: options.popup.onShown,
                            shading: false,
                            width: "auto",
                            height: "auto",
                            showTitle: false,
                            _wrapperClassExternal: options.menu.cssClass
                        })
                    };
                    _proto._subscribeOnClickAndEnterKey = function($button, handler) {
                        _events_engine.default.on($button, "dxclick", handler);
                        _events_engine.default.on($button, "keyup", e => {
                            if ("enter" === (0, _index.normalizeKeyName)(e)) {
                                handler(e)
                            }
                        })
                    };
                    return FilterBuilder
                }(_ui2.default);
                (0, _component_registrator.default)("dxFilterBuilder", FilterBuilder);
                var _default = FilterBuilder;
                exports.default = _default
            },
        90067:
            /*!*********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/filter_builder/m_filter_operations_dictionary.js ***!
              \*********************************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                const OPERATION_ICONS = {
                    "=": "equal",
                    "<>": "notequal",
                    "<": "less",
                    "<=": "lessorequal",
                    ">": "greater",
                    ">=": "greaterorequal",
                    notcontains: "doesnotcontain",
                    contains: "contains",
                    startswith: "startswith",
                    endswith: "endswith",
                    isblank: "isblank",
                    isnotblank: "isnotblank"
                };
                const OPERATION_NAME = {
                    "=": "equal",
                    "<>": "notEqual",
                    "<": "lessThan",
                    "<=": "lessThanOrEqual",
                    ">": "greaterThan",
                    ">=": "greaterThanOrEqual",
                    startswith: "startsWith",
                    contains: "contains",
                    notcontains: "notContains",
                    endswith: "endsWith",
                    isblank: "isBlank",
                    isnotblank: "isNotBlank",
                    between: "between"
                };
                var _default = {
                    getIconByFilterOperation: filterOperation => OPERATION_ICONS[filterOperation],
                    getNameByFilterOperation: filterOperation => OPERATION_NAME[filterOperation]
                };
                exports.default = _default
            },
        70474:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/filter_builder/m_utils.js ***!
              \**********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.addItem = function(item, group) {
                    const criteria = getGroupCriteria(group);
                    const groupValue = getGroupValue(criteria);
                    1 === criteria.length ? criteria.unshift(item) : criteria.push(item, groupValue);
                    return group
                };
                exports.convertToInnerStructure = convertToInnerStructure;
                exports.createCondition = function(field, customOperations) {
                    const condition = [field.dataField, "", ""];
                    const filterOperation = getDefaultOperation(field);
                    updateConditionByOperation(condition, filterOperation, customOperations);
                    return condition
                };
                exports.createEmptyGroup = createEmptyGroup;
                exports.filterHasField = function filterHasField(filter, dataField) {
                    if (null === filter || 0 === filter.length) {
                        return false
                    }
                    if (isCondition(filter)) {
                        return filter[0] === dataField
                    }
                    return filter.some(item => (isCondition(item) || isGroup(item)) && filterHasField(item, dataField))
                };
                exports.getAvailableOperations = function(field, filterOperationDescriptions, customOperations) {
                    const filterOperations = getFilterOperations(field);
                    const isLookupField = !!field.lookup;
                    customOperations.forEach(customOperation => {
                        if (!field.filterOperations && -1 === filterOperations.indexOf(customOperation.name)) {
                            const dataTypes = customOperation && customOperation.dataTypes;
                            const isOperationForbidden = isLookupField ? !!customOperation.notForLookup : false;
                            if (!isOperationForbidden && dataTypes && dataTypes.indexOf(field.dataType || "string") >= 0) {
                                filterOperations.push(customOperation.name)
                            }
                        }
                    });
                    return filterOperations.map(operation => {
                        const customOperation = getCustomOperation(customOperations, operation);
                        if (customOperation) {
                            return {
                                icon: customOperation.icon || "icon-none",
                                text: customOperation.caption || (0, _inflector.captionize)(customOperation.name),
                                value: customOperation.name,
                                isCustom: true
                            }
                        }
                        return {
                            icon: _m_filter_operations_dictionary.default.getIconByFilterOperation(operation) || "icon-none",
                            text: getCaptionByOperation(operation, filterOperationDescriptions),
                            value: operation
                        }
                    })
                };
                exports.getCaptionByOperation = getCaptionByOperation;
                exports.getCaptionWithParents = function getCaptionWithParents(item, plainItems) {
                    if (hasParent(item.dataField)) {
                        const parentId = getParentIdFromItemDataField(item.dataField);
                        for (let i = 0; i < plainItems.length; i++) {
                            if (plainItems[i].dataField === parentId) {
                                return "".concat(getCaptionWithParents(plainItems[i], plainItems), ".").concat(item.caption)
                            }
                        }
                    }
                    return item.caption
                };
                exports.getCurrentLookupValueText = function(field, value, handler) {
                    if ("" === value) {
                        handler("");
                        return
                    }
                    const {
                        lookup: lookup
                    } = field;
                    if (lookup.items) {
                        handler(lookup.calculateCellValue(value) || "")
                    } else {
                        const lookupDataSource = (0, _type.isFunction)(lookup.dataSource) ? lookup.dataSource({}) : lookup.dataSource;
                        const dataSource = new _data_source.DataSource(lookupDataSource);
                        dataSource.loadSingle(lookup.valueExpr, value).done(result => {
                            let valueText = "";
                            if (result) {
                                valueText = lookup.displayExpr ? (0, _data.compileGetter)(lookup.displayExpr)(result) : result
                            }
                            if (field.customizeText) {
                                valueText = field.customizeText({
                                    value: value,
                                    valueText: valueText
                                })
                            }
                            handler(valueText)
                        }).fail(() => {
                            handler("")
                        })
                    }
                };
                exports.getCurrentValueText = function(field, value, customOperation) {
                    let target = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : "filterBuilder";
                    if (checkDefaultValue(value)) {
                        return ""
                    }
                    if (Array.isArray(value)) {
                        const result = new _deferred.Deferred;
                        _deferred.when.apply(this, getArrayValueText(field, value, customOperation, target)).done((function() {
                            for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
                                args[_key] = arguments[_key]
                            }
                            const text = args.some(item => !checkDefaultValue(item)) ? args.map(item => !checkDefaultValue(item) ? item : "?") : "";
                            result.resolve(text)
                        }));
                        return result
                    }
                    return getPrimitiveValueText(field, value, customOperation, target)
                };
                exports.getCustomOperation = getCustomOperation;
                exports.getDefaultOperation = getDefaultOperation;
                exports.getField = getField;
                exports.getFilterExpression = function getFilterExpression(value, fields, customOperations, target) {
                    if (!(0, _type.isDefined)(value)) {
                        return null
                    }
                    if (isNegationGroup(value)) {
                        const filterExpression = getFilterExpression(value[1], fields, customOperations, target);
                        return ["!", filterExpression]
                    }
                    const criteria = getGroupCriteria(value);
                    if (isCondition(criteria)) {
                        return getConditionFilterExpression(criteria, fields, customOperations, target) || null
                    }
                    let result = [];
                    let filterExpression;
                    const groupValue = getGroupValue(criteria);
                    for (let i = 0; i < criteria.length; i++) {
                        if (isGroup(criteria[i])) {
                            filterExpression = getFilterExpression(criteria[i], fields, customOperations, target);
                            if (filterExpression) {
                                i && result.push(groupValue);
                                result.push(filterExpression)
                            }
                        } else if (isCondition(criteria[i])) {
                            filterExpression = getConditionFilterExpression(criteria[i], fields, customOperations, target);
                            if (filterExpression) {
                                result.length && result.push(groupValue);
                                result.push(filterExpression)
                            }
                        }
                    }
                    if (1 === result.length) {
                        result = result[0]
                    }
                    return result.length ? result : null
                };
                exports.getFilterOperations = getFilterOperations;
                exports.getGroupCriteria = getGroupCriteria;
                exports.getGroupMenuItem = function(group, availableGroups) {
                    const groupValue = getGroupValue(group);
                    return availableGroups.filter(item => item.value === groupValue)[0]
                };
                exports.getGroupValue = getGroupValue;
                exports.getItems = getItems;
                exports.getMatchedConditions = function(filter, dataField) {
                    if (null === filter || 0 === filter.length) {
                        return []
                    }
                    if (isCondition(filter)) {
                        if (isMatchedCondition(filter, dataField)) {
                            return [filter]
                        }
                        return []
                    }
                    const groupValue = getGroupValue(filter);
                    if ("and" !== groupValue) {
                        return []
                    }
                    const result = filter.filter(item => isCondition(item) && isMatchedCondition(item, dataField));
                    return result
                };
                exports.getMergedOperations = function(customOperations, betweenCaption, context) {
                    const result = (0, _extend.extend)(true, [], customOperations);
                    let betweenIndex = -1;
                    result.some((customOperation, index) => {
                        if ("between" === customOperation.name) {
                            betweenIndex = index;
                            return true
                        }
                        return
                    });
                    if (-1 !== betweenIndex) {
                        result[betweenIndex] = (0, _extend.extend)((0, _m_between.getConfig)(betweenCaption, context), result[betweenIndex])
                    } else {
                        result.unshift((0, _m_between.getConfig)(betweenCaption, context))
                    }
                    return result
                };
                exports.getNormalizedFields = function(fields) {
                    return fields.reduce((result, field) => {
                        if ((0, _type.isDefined)(field.dataField)) {
                            const normalizedField = {};
                            for (const key in field) {
                                if (field[key] && AVAILABLE_FIELD_PROPERTIES.includes(key)) {
                                    normalizedField[key] = field[key]
                                }
                            }
                            normalizedField.defaultCalculateFilterExpression = _filtering.default.defaultCalculateFilterExpression;
                            if (!(0, _type.isDefined)(normalizedField.dataType)) {
                                normalizedField.dataType = "string"
                            }
                            if (!(0, _type.isDefined)(normalizedField.trueText)) {
                                normalizedField.trueText = _message.default.format("dxDataGrid-trueText")
                            }
                            if (!(0, _type.isDefined)(normalizedField.falseText)) {
                                normalizedField.falseText = _message.default.format("dxDataGrid-falseText")
                            }
                            result.push(normalizedField)
                        }
                        return result
                    }, [])
                };
                exports.getNormalizedFilter = function getNormalizedFilter(group) {
                    const criteria = getGroupCriteria(group);
                    let i;
                    if (0 === criteria.length) {
                        return null
                    }
                    const itemsForRemove = [];
                    for (i = 0; i < criteria.length; i++) {
                        if (isGroup(criteria[i])) {
                            const normalizedGroupValue = getNormalizedFilter(criteria[i]);
                            if (normalizedGroupValue) {
                                criteria[i] = normalizedGroupValue
                            } else {
                                itemsForRemove.push(criteria[i])
                            }
                        } else if (isCondition(criteria[i])) {
                            if (!isValidCondition(criteria[i])) {
                                itemsForRemove.push(criteria[i])
                            }
                        }
                    }
                    for (i = 0; i < itemsForRemove.length; i++) {
                        removeItem(criteria, itemsForRemove[i])
                    }
                    if (1 === criteria.length) {
                        return null
                    }
                    criteria.splice(criteria.length - 1, 1);
                    if (1 === criteria.length) {
                        group = function(group, criteria) {
                            if (isNegationGroup(group)) {
                                group[1] = criteria
                            } else {
                                group = criteria
                            }
                            return group
                        }(group, criteria[0])
                    }
                    if (0 === group.length) {
                        return null
                    }
                    return group
                };
                exports.getOperationFromAvailable = function(operation, availableOperations) {
                    for (let i = 0; i < availableOperations.length; i++) {
                        if (availableOperations[i].value === operation) {
                            return availableOperations[i]
                        }
                    }
                    throw new _ui.default.Error("E1048", operation)
                };
                exports.getOperationValue = function(condition) {
                    let caption;
                    if (null === condition[2]) {
                        if ("=" === condition[1]) {
                            caption = "isblank"
                        } else {
                            caption = "isnotblank"
                        }
                    } else {
                        caption = condition[1]
                    }
                    return caption
                };
                exports.isCondition = isCondition;
                exports.isEmptyGroup = function(group) {
                    const criteria = getGroupCriteria(group);
                    if (isCondition(criteria)) {
                        return false
                    }
                    const hasConditions = criteria.some(item => isCondition(item));
                    return !hasConditions
                };
                exports.isGroup = isGroup;
                exports.isValidCondition = isValidCondition;
                exports.removeFieldConditionsFromFilter = function(filter, dataField) {
                    if (!filter || 0 === filter.length) {
                        return null
                    }
                    if (isCondition(filter)) {
                        const hasMatchedCondition = isMatchedCondition(filter, dataField);
                        return !hasMatchedCondition ? filter : null
                    }
                    return syncConditionIntoGroup(filter, [dataField], false)
                };
                exports.removeItem = removeItem;
                exports.renderValueText = void 0;
                exports.setGroupValue = function(group, value) {
                    ! function(group, value) {
                        if (function(value) {
                                return -1 !== value.indexOf("!")
                            }(value)) {
                            if (!isNegationGroup(group)) {
                                ! function(group) {
                                    const criteria = group.slice(0);
                                    group.length = 0;
                                    group.push("!", criteria)
                                }(group)
                            }
                        } else if (isNegationGroup(group)) {
                            ! function(group) {
                                const criteria = getGroupCriteria(group);
                                group.length = 0;
                                [].push.apply(group, criteria)
                            }(group)
                        }
                    }(group, value);
                    const criteria = getGroupCriteria(group);
                    let i;
                    value = function(value) {
                        return -1 === value.indexOf("!") ? value : value.substring(1)
                    }(value);
                    ! function(criteria, value) {
                        for (i = 0; i < criteria.length; i++) {
                            if (!Array.isArray(criteria[i])) {
                                criteria[i] = value
                            }
                        }
                    }(criteria, value);
                    return group
                };
                exports.syncFilters = function(filter, addedFilter) {
                    if (null === filter || 0 === filter.length) {
                        return addedFilter
                    }
                    if (isCondition(filter)) {
                        if (isMatchedCondition(filter, addedFilter[0])) {
                            return addedFilter
                        }
                        return [filter, "and", addedFilter]
                    }
                    const groupValue = getGroupValue(filter);
                    if ("and" !== groupValue) {
                        return [addedFilter, "and", filter]
                    }
                    return syncConditionIntoGroup(filter, addedFilter, true)
                };
                exports.updateConditionByOperation = updateConditionByOperation;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _data = __webpack_require__( /*! ../../core/utils/data */ 47617);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _inflector = __webpack_require__( /*! ../../core/utils/inflector */ 78008);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _data_source = __webpack_require__( /*! ../../data/data_source/data_source */ 85273);
                var _errors = __webpack_require__( /*! ../../data/errors */ 18438);
                var _format_helper = _interopRequireDefault(__webpack_require__( /*! ../../format_helper */ 30343));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _filtering = _interopRequireDefault(__webpack_require__( /*! ../../ui/shared/filtering */ 18740));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../ui/widget/ui.errors */ 96688));
                var _m_between = __webpack_require__( /*! ./m_between */ 90102);
                var _m_filter_operations_dictionary = _interopRequireDefault(__webpack_require__( /*! ./m_filter_operations_dictionary */ 90067));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const DATATYPE_OPERATIONS = {
                    number: ["=", "<>", "<", ">", "<=", ">=", "isblank", "isnotblank"],
                    string: ["contains", "notcontains", "startswith", "endswith", "=", "<>", "isblank", "isnotblank"],
                    date: ["=", "<>", "<", ">", "<=", ">=", "isblank", "isnotblank"],
                    datetime: ["=", "<>", "<", ">", "<=", ">=", "isblank", "isnotblank"],
                    boolean: ["=", "<>", "isblank", "isnotblank"],
                    object: ["isblank", "isnotblank"]
                };
                const DEFAULT_FORMAT = {
                    date: "shortDate",
                    datetime: "shortDateShortTime"
                };
                const LOOKUP_OPERATIONS = ["=", "<>", "isblank", "isnotblank"];
                const AVAILABLE_FIELD_PROPERTIES = ["caption", "customizeText", "dataField", "dataType", "editorTemplate", "falseText", "editorOptions", "filterOperations", "format", "lookup", "trueText", "calculateFilterExpression", "name"];
                const FILTER_BUILDER_ITEM_TEXT_CLASS = "".concat("dx-filterbuilder", "-text");
                const FILTER_BUILDER_ITEM_TEXT_PART_CLASS = "".concat(FILTER_BUILDER_ITEM_TEXT_CLASS, "-part");
                const FILTER_BUILDER_ITEM_TEXT_SEPARATOR_CLASS = "".concat(FILTER_BUILDER_ITEM_TEXT_CLASS, "-separator");
                const FILTER_BUILDER_ITEM_TEXT_SEPARATOR_EMPTY_CLASS = "".concat(FILTER_BUILDER_ITEM_TEXT_SEPARATOR_CLASS, "-empty");

                function isNegationGroup(group) {
                    return group && group.length > 1 && "!" === group[0] && !isCondition(group)
                }

                function getGroupCriteria(group) {
                    return isNegationGroup(group) ? group[1] : group
                }

                function getCriteriaOperation(criteria) {
                    if (isCondition(criteria)) {
                        return "and"
                    }
                    let value = "";
                    for (let i = 0; i < criteria.length; i++) {
                        const item = criteria[i];
                        if (!Array.isArray(item)) {
                            if (value && value !== item) {
                                throw new _errors.errors.Error("E4019")
                            }
                            if ("!" !== item) {
                                value = item
                            }
                        }
                    }
                    return value
                }

                function getGroupValue(group) {
                    const criteria = getGroupCriteria(group);
                    let value = getCriteriaOperation(criteria);
                    if (!value) {
                        value = "and"
                    }
                    if (criteria !== group) {
                        value = "!".concat(value)
                    }
                    return value
                }

                function getFilterOperations(field) {
                    const result = (entity = field.filterOperations, Array.isArray(entity) && entity.length) ? field.filterOperations : function(field) {
                        return field.lookup && LOOKUP_OPERATIONS || DATATYPE_OPERATIONS[field.dataType || "string"]
                    }(field);
                    var entity;
                    return (0, _extend.extend)([], result)
                }

                function getCaptionByOperation(operation, filterOperationDescriptions) {
                    const operationName = _m_filter_operations_dictionary.default.getNameByFilterOperation(operation);
                    return filterOperationDescriptions && filterOperationDescriptions[operationName] ? filterOperationDescriptions[operationName] : operationName
                }

                function getCustomOperation(customOperations, name) {
                    const filteredOperations = customOperations.filter(item => item.name === name);
                    return filteredOperations.length ? filteredOperations[0] : null
                }

                function getDefaultOperation(field) {
                    return field.defaultFilterOperation || getFilterOperations(field)[0]
                }

                function removeItem(group, item) {
                    const criteria = getGroupCriteria(group);
                    const index = criteria.indexOf(item);
                    criteria.splice(index, 1);
                    if (1 !== criteria.length) {
                        criteria.splice(index, 1)
                    }
                    return group
                }

                function createEmptyGroup(value) {
                    const isNegation = isNegationGroupOperation(value);
                    const groupOperation = isNegation ? getGroupOperationFromNegationOperation(value) : value;
                    return isNegation ? ["!", [groupOperation]] : [groupOperation]
                }

                function getField(dataField, fields) {
                    for (let i = 0; i < fields.length; i++) {
                        if (fields[i].name === dataField) {
                            return fields[i]
                        }
                        if (fields[i].dataField.toLowerCase() === dataField.toLowerCase()) {
                            return fields[i]
                        }
                    }
                    const extendedFields = getItems(fields, true).filter(item => item.dataField.toLowerCase() === dataField.toLowerCase());
                    if (extendedFields.length > 0) {
                        return extendedFields[0]
                    }
                    throw new _ui.default.Error("E1047", dataField)
                }

                function isGroup(criteria) {
                    if (!Array.isArray(criteria)) {
                        return false
                    }
                    return criteria.length < 2 || Array.isArray(criteria[0]) || Array.isArray(criteria[1])
                }

                function isCondition(criteria) {
                    if (!Array.isArray(criteria)) {
                        return false
                    }
                    return criteria.length > 1 && !Array.isArray(criteria[0]) && !Array.isArray(criteria[1])
                }

                function convertToInnerGroup(group, customOperations, defaultGroupOperation) {
                    defaultGroupOperation = defaultGroupOperation || "and";
                    const groupOperation = getCriteriaOperation(group).toLowerCase() || defaultGroupOperation;
                    let innerGroup = [];
                    for (let i = 0; i < group.length; i++) {
                        if (isGroup(group[i])) {
                            innerGroup.push(convertToInnerStructure(group[i], customOperations, defaultGroupOperation));
                            innerGroup = appendGroupOperationToGroup(innerGroup, groupOperation)
                        } else if (isCondition(group[i])) {
                            innerGroup.push(convertToInnerCondition(group[i], customOperations));
                            innerGroup = appendGroupOperationToGroup(innerGroup, groupOperation)
                        }
                    }
                    if (0 === innerGroup.length) {
                        innerGroup = appendGroupOperationToGroup(innerGroup, groupOperation)
                    }
                    return innerGroup
                }

                function convertToInnerCondition(condition, customOperations) {
                    if (function(condition, customOperations) {
                            const customOperation = getCustomOperation(customOperations, condition[1]);
                            return customOperation && customOperation.name === condition[1]
                        }(condition, customOperations)) {
                        return condition
                    }
                    if (condition.length < 3) {
                        condition[2] = condition[1];
                        condition[1] = "="
                    }
                    return condition
                }

                function isNegationGroupOperation(operation) {
                    return -1 !== operation.indexOf("not")
                }

                function getGroupOperationFromNegationOperation(operation) {
                    return operation.substring(3).toLowerCase()
                }

                function appendGroupOperationToCriteria(criteria, groupOperation) {
                    const isNegation = isNegationGroupOperation(groupOperation);
                    groupOperation = isNegation ? getGroupOperationFromNegationOperation(groupOperation) : groupOperation;
                    return isNegation ? ["!", criteria, groupOperation] : [criteria, groupOperation]
                }

                function appendGroupOperationToGroup(group, groupOperation) {
                    const isNegation = isNegationGroupOperation(groupOperation);
                    groupOperation = isNegation ? getGroupOperationFromNegationOperation(groupOperation) : groupOperation;
                    group.push(groupOperation);
                    let result = group;
                    if (isNegation) {
                        result = ["!", result]
                    }
                    return result
                }

                function convertToInnerStructure(value, customOperations, defaultGroupOperation) {
                    defaultGroupOperation = defaultGroupOperation || "and";
                    if (!value) {
                        return createEmptyGroup(defaultGroupOperation)
                    }
                    value = (0, _extend.extend)(true, [], value);
                    if (isCondition(value)) {
                        return appendGroupOperationToCriteria(convertToInnerCondition(value, customOperations), defaultGroupOperation)
                    }
                    if (isNegationGroup(value)) {
                        return ["!", isCondition(value[1]) ? appendGroupOperationToCriteria(convertToInnerCondition(value[1], customOperations), defaultGroupOperation) : isNegationGroup(value[1]) ? appendGroupOperationToCriteria(convertToInnerStructure(value[1], customOperations), defaultGroupOperation) : convertToInnerGroup(value[1], customOperations, defaultGroupOperation)]
                    }
                    return convertToInnerGroup(value, customOperations, defaultGroupOperation)
                }

                function getConditionFilterExpression(condition, fields, customOperations, target) {
                    const field = getField(condition[0], fields);
                    const filterExpression = convertToInnerCondition(condition, customOperations);
                    const customOperation = customOperations.length && getCustomOperation(customOperations, filterExpression[1]);
                    if (customOperation && customOperation.calculateFilterExpression) {
                        return customOperation.calculateFilterExpression.apply(customOperation, [filterExpression[2], field, fields])
                    }
                    if (field.createFilterExpression) {
                        return field.createFilterExpression.apply(field, [filterExpression[2], filterExpression[1], target])
                    }
                    if (field.calculateFilterExpression) {
                        return field.calculateFilterExpression.apply(field, [filterExpression[2], filterExpression[1], target])
                    }
                    return field.defaultCalculateFilterExpression.apply(field, [filterExpression[2], filterExpression[1], target])
                }

                function getPrimitiveValueText(field, value, customOperation, target, options) {
                    let valueText;
                    if (true === value) {
                        valueText = field.trueText || _message.default.format("dxDataGrid-trueText")
                    } else if (false === value) {
                        valueText = field.falseText || _message.default.format("dxDataGrid-falseText")
                    } else {
                        valueText = function(field, value) {
                            const fieldFormat = field.format || DEFAULT_FORMAT[field.dataType];
                            return _format_helper.default.format(value, fieldFormat)
                        }(field, value)
                    }
                    if (field.customizeText) {
                        valueText = field.customizeText.call(field, {
                            value: value,
                            valueText: valueText,
                            target: target
                        })
                    }
                    if (customOperation && customOperation.customizeText) {
                        valueText = customOperation.customizeText.call(customOperation, {
                            value: value,
                            valueText: valueText,
                            field: field,
                            target: target
                        }, options)
                    }
                    return valueText
                }

                function getArrayValueText(field, value, customOperation, target) {
                    const options = {
                        values: value
                    };
                    return value.map(v => getPrimitiveValueText(field, v, customOperation, target, options))
                }

                function checkDefaultValue(value) {
                    return "" === value || null === value
                }

                function itemExists(plainItems, parentId) {
                    return plainItems.some(item => item.dataField === parentId)
                }

                function pushItemAndCheckParent(originalItems, plainItems, item) {
                    const {
                        dataField: dataField
                    } = item;
                    if (hasParent(dataField)) {
                        item.parentId = getParentIdFromItemDataField(dataField);
                        if (!itemExists(plainItems, item.parentId) && !itemExists(originalItems, item.parentId)) {
                            pushItemAndCheckParent(originalItems, plainItems, {
                                id: item.parentId,
                                dataType: "object",
                                dataField: item.parentId,
                                caption: generateCaptionByDataField(item.parentId, true),
                                filterOperations: ["isblank", "isnotblank"],
                                defaultCalculateFilterExpression: _filtering.default.defaultCalculateFilterExpression
                            })
                        }
                    }
                    plainItems.push(item)
                }

                function generateCaptionByDataField(dataField, allowHierarchicalFields) {
                    let caption = "";
                    if (allowHierarchicalFields) {
                        dataField = dataField.substring(dataField.lastIndexOf(".") + 1)
                    } else if (hasParent(dataField)) {
                        dataField.split(".").forEach((field, index, arr) => {
                            caption += (0, _inflector.captionize)(field);
                            if (index !== arr.length - 1) {
                                caption += "."
                            }
                        });
                        return caption
                    }
                    return (0, _inflector.captionize)(dataField)
                }

                function getItems(fields, allowHierarchicalFields) {
                    const items = [];
                    for (let i = 0; i < fields.length; i++) {
                        const item = (0, _extend.extend)(true, {
                            caption: generateCaptionByDataField(fields[i].dataField, allowHierarchicalFields)
                        }, fields[i]);
                        item.id = item.name || item.dataField;
                        if (allowHierarchicalFields) {
                            pushItemAndCheckParent(fields, items, item)
                        } else {
                            items.push(item)
                        }
                    }
                    return items
                }

                function hasParent(dataField) {
                    return -1 !== dataField.lastIndexOf(".")
                }

                function getParentIdFromItemDataField(dataField) {
                    return dataField.substring(0, dataField.lastIndexOf("."))
                }

                function updateConditionByOperation(condition, operation, customOperations) {
                    let customOperation = getCustomOperation(customOperations, operation);
                    if (customOperation) {
                        if (false === customOperation.hasValue) {
                            condition[1] = operation;
                            condition.length = 2
                        } else {
                            condition[1] = operation;
                            condition[2] = ""
                        }
                        return condition
                    }
                    if ("isblank" === operation) {
                        condition[1] = "=";
                        condition[2] = null
                    } else if ("isnotblank" === operation) {
                        condition[1] = "<>";
                        condition[2] = null
                    } else {
                        customOperation = getCustomOperation(customOperations, condition[1]);
                        if (customOperation || 2 === condition.length || null === condition[2]) {
                            condition[2] = ""
                        }
                        condition[1] = operation
                    }
                    return condition
                }

                function isValidCondition(condition) {
                    return "" !== condition[2]
                }

                function isMatchedCondition(filter, addedFilterDataField) {
                    return filter[0] === addedFilterDataField
                }

                function syncConditionIntoGroup(filter, addedFilter, canPush) {
                    const result = [];
                    filter.forEach(item => {
                        if (isCondition(item)) {
                            if (isMatchedCondition(item, addedFilter[0])) {
                                if (canPush) {
                                    result.push(addedFilter);
                                    canPush = false
                                } else {
                                    result.splice(result.length - 1, 1)
                                }
                            } else {
                                result.push(item)
                            }
                        } else {
                            (result.length || isGroup(item)) && result.push(item)
                        }
                    });
                    if (0 === result.length) {
                        return null
                    }
                    if (canPush) {
                        result.push("and");
                        result.push(addedFilter)
                    }
                    return 1 === result.length ? result[0] : result
                }
                exports.renderValueText = function($container, value, customOperation) {
                    if (Array.isArray(value)) {
                        const lastItemIndex = value.length - 1;
                        $container.empty();
                        value.forEach((t, i) => {
                            (0, _renderer.default)("<span>").addClass(FILTER_BUILDER_ITEM_TEXT_PART_CLASS).text(t).appendTo($container);
                            if (i !== lastItemIndex) {
                                (0, _renderer.default)("<span>").addClass(FILTER_BUILDER_ITEM_TEXT_SEPARATOR_CLASS).text(customOperation && customOperation.valueSeparator ? customOperation.valueSeparator : "|").addClass(FILTER_BUILDER_ITEM_TEXT_SEPARATOR_EMPTY_CLASS).appendTo($container)
                            }
                        })
                    } else if (value) {
                        $container.text(value)
                    } else {
                        $container.text(_message.default.format("dxFilterBuilder-enterValueText"))
                    }
                }
            },
        48252:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/export/m_export.js ***!
              \*******************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.ExportController = exports.DataProvider = void 0;
                __webpack_require__( /*! ../../../../ui/button */ 63008);
                __webpack_require__( /*! ../../../../ui/drop_down_button */ 45231);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _position = __webpack_require__( /*! ../../../../core/utils/position */ 37518);
                var _string = __webpack_require__( /*! ../../../../core/utils/string */ 68752);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/message */ 28109));
                var _list_light = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/list_light */ 56757));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.errors */ 96688));
                var _m_export = __webpack_require__( /*! ../../../grids/grid_core/m_export */ 1229);
                var _m_core = _interopRequireDefault(__webpack_require__( /*! ../m_core */ 74938));

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let DataProvider = function() {
                    function DataProvider(exportController, initialColumnWidthsByColumnIndex, selectedRowsOnly) {
                        this._exportController = exportController;
                        this._initialColumnWidthsByColumnIndex = initialColumnWidthsByColumnIndex;
                        this._selectedRowsOnly = selectedRowsOnly
                    }
                    var _proto = DataProvider.prototype;
                    _proto._getGroupValue = function(item) {
                        const {
                            key: key,
                            data: data,
                            rowType: rowType,
                            groupIndex: groupIndex,
                            summaryCells: summaryCells
                        } = item;
                        const groupColumn = this._options.groupColumns[groupIndex];
                        const value = _m_core.default.getDisplayValue(groupColumn, groupColumn.deserializeValue ? groupColumn.deserializeValue(key[groupIndex]) : key[groupIndex], data, rowType);
                        let result = "".concat(groupColumn.caption, ": ").concat(_m_core.default.formatValue(value, groupColumn));
                        if (summaryCells && summaryCells[0] && summaryCells[0].length) {
                            result += " ".concat(_m_core.default.getGroupRowSummaryText(summaryCells[0], this._options.summaryTexts))
                        }
                        return result
                    };
                    _proto._correctCellIndex = function(cellIndex) {
                        return cellIndex
                    };
                    _proto._initOptions = function() {
                        const exportController = this._exportController;
                        const groupColumns = exportController._columnsController.getGroupColumns();
                        this._options = {
                            columns: exportController._getColumns(this._initialColumnWidthsByColumnIndex),
                            groupColumns: groupColumns,
                            items: this._selectedRowsOnly || exportController._selectionOnly ? exportController._getSelectedItems() : exportController._getAllItems(),
                            isHeadersVisible: exportController.option("showColumnHeaders"),
                            summaryTexts: exportController.option("summary.texts"),
                            rtlEnabled: exportController.option("rtlEnabled")
                        }
                    };
                    _proto.getHeaderStyles = function() {
                        return [{
                            bold: true,
                            alignment: "center"
                        }, {
                            bold: true,
                            alignment: "left"
                        }, {
                            bold: true,
                            alignment: "right"
                        }]
                    };
                    _proto.getGroupRowStyle = function() {
                        return {
                            bold: true,
                            alignment: (0, _position.getDefaultAlignment)(this._options.rtlEnabled)
                        }
                    };
                    _proto.getColumnStyles = function() {
                        const columnStyles = [];
                        this.getColumns().forEach(column => {
                            columnStyles.push({
                                alignment: column.alignment || "left",
                                format: column.format,
                                dataType: column.dataType
                            })
                        });
                        return columnStyles
                    };
                    _proto.getStyles = function() {
                        return [...this.getHeaderStyles(), ...this.getColumnStyles(), this.getGroupRowStyle()]
                    };
                    _proto._getTotalCellStyleId = function(cellIndex) {
                        var _a;
                        const alignment = (null === (_a = this.getColumns()[cellIndex]) || void 0 === _a ? void 0 : _a.alignment) || "right";
                        return this.getHeaderStyles().map(style => style.alignment).indexOf(alignment)
                    };
                    _proto.getStyleId = function(rowIndex, cellIndex) {
                        if (rowIndex < this.getHeaderRowCount()) {
                            return 0
                        }
                        if (this.isTotalCell(rowIndex - this.getHeaderRowCount(), cellIndex)) {
                            return this._getTotalCellStyleId(cellIndex)
                        }
                        if (this.isGroupRow(rowIndex - this.getHeaderRowCount())) {
                            return this.getHeaderStyles().length + this.getColumns().length
                        }
                        return cellIndex + this.getHeaderStyles().length
                    };
                    _proto.getColumns = function(getColumnsByAllRows) {
                        const {
                            columns: columns
                        } = this._options;
                        return getColumnsByAllRows ? columns : columns[columns.length - 1]
                    };
                    _proto.getColumnsWidths = function() {
                        const columns = this.getColumns();
                        return (0, _type.isDefined)(columns) ? columns.map(c => c.width) : void 0
                    };
                    _proto.getRowsCount = function() {
                        return this._options.items.length + this.getHeaderRowCount()
                    };
                    _proto.getHeaderRowCount = function() {
                        if (this.isHeadersVisible()) {
                            return this._options.columns.length - 1
                        }
                        return 0
                    };
                    _proto.isGroupRow = function(rowIndex) {
                        return rowIndex < this._options.items.length && "group" === this._options.items[rowIndex].rowType
                    };
                    _proto.getGroupLevel = function(rowIndex) {
                        const item = this._options.items[rowIndex - this.getHeaderRowCount()];
                        const groupIndex = item && item.groupIndex;
                        if (item && "totalFooter" === item.rowType) {
                            return 0
                        }
                        return (0, _type.isDefined)(groupIndex) ? groupIndex : this._options.groupColumns.length
                    };
                    _proto.getCellType = function(rowIndex, cellIndex) {
                        const columns = this.getColumns();
                        if (rowIndex < this.getHeaderRowCount()) {
                            return "string"
                        }
                        rowIndex -= this.getHeaderRowCount();
                        if (cellIndex < columns.length) {
                            const item = this._options.items.length && this._options.items[rowIndex];
                            const column = columns[cellIndex];
                            if (item && "data" === item.rowType) {
                                if (isFinite(item.values[this._correctCellIndex(cellIndex)]) && !(0, _type.isDefined)(column.customizeText)) {
                                    return (0, _type.isDefined)(column.lookup) ? column.lookup.dataType : column.dataType
                                }
                            }
                            return "string"
                        }
                    };
                    _proto.ready = function() {
                        this._initOptions();
                        const options = this._options;
                        return (0, _deferred.when)(options.items).done(items => {
                            options.items = items
                        }).fail(() => {
                            options.items = []
                        })
                    };
                    _proto._convertFromGridGroupSummaryItems = function(gridGroupSummaryItems) {
                        if ((0, _type.isDefined)(gridGroupSummaryItems) && gridGroupSummaryItems.length > 0) {
                            return gridGroupSummaryItems.map(item => ({
                                value: item.value,
                                name: item.name
                            }))
                        }
                    };
                    _proto.getCellData = function(rowIndex, cellIndex, isExcelJS) {
                        let value;
                        let column;
                        const result = {
                            cellSourceData: {},
                            value: value
                        };
                        const columns = this.getColumns();
                        const correctedCellIndex = this._correctCellIndex(cellIndex);
                        if (rowIndex < this.getHeaderRowCount()) {
                            const columnsRow = this.getColumns(true)[rowIndex];
                            column = columnsRow[cellIndex];
                            result.cellSourceData.rowType = "header";
                            result.cellSourceData.column = column && column.gridColumn;
                            result.value = column && column.caption
                        } else {
                            rowIndex -= this.getHeaderRowCount();
                            const item = this._options.items.length && this._options.items[rowIndex];
                            if (item) {
                                const itemValues = item.values;
                                result.cellSourceData.rowType = item.rowType;
                                result.cellSourceData.column = columns[cellIndex] && columns[cellIndex].gridColumn;
                                switch (item.rowType) {
                                    case "groupFooter":
                                    case "totalFooter":
                                        if (correctedCellIndex < itemValues.length) {
                                            value = itemValues[correctedCellIndex];
                                            if ((0, _type.isDefined)(value)) {
                                                result.cellSourceData.value = value.value;
                                                result.cellSourceData.totalSummaryItemName = value.name;
                                                result.value = _m_core.default.getSummaryText(value, this._options.summaryTexts)
                                            } else {
                                                result.cellSourceData.value = void 0
                                            }
                                        }
                                        break;
                                    case "group":
                                        result.cellSourceData.groupIndex = item.groupIndex;
                                        if (cellIndex < 1) {
                                            result.cellSourceData.column = this._options.groupColumns[item.groupIndex];
                                            result.cellSourceData.value = item.key[item.groupIndex];
                                            result.cellSourceData.groupSummaryItems = this._convertFromGridGroupSummaryItems(item.summaryCells[0]);
                                            result.value = this._getGroupValue(item)
                                        } else {
                                            const summaryItems = item.values[correctedCellIndex];
                                            if (Array.isArray(summaryItems)) {
                                                result.cellSourceData.groupSummaryItems = this._convertFromGridGroupSummaryItems(summaryItems);
                                                value = "";
                                                for (let i = 0; i < summaryItems.length; i++) {
                                                    value += (i > 0 ? isExcelJS ? "\n" : " \n " : "") + _m_core.default.getSummaryText(summaryItems[i], this._options.summaryTexts)
                                                }
                                                result.value = value
                                            } else {
                                                result.cellSourceData.value = void 0
                                            }
                                        }
                                        break;
                                    default:
                                        column = columns[cellIndex];
                                        if (column) {
                                            const value = itemValues[correctedCellIndex];
                                            const displayValue = _m_core.default.getDisplayValue(column, value, item.data, item.rowType);
                                            if (!isFinite(displayValue) || (0, _type.isDefined)(column.customizeText)) {
                                                if (isExcelJS && (0, _type.isDefined)(column.customizeText) && column.customizeText === this._exportController._columnsController.getCustomizeTextByDataType("boolean")) {
                                                    result.value = displayValue
                                                } else {
                                                    result.value = _m_core.default.formatValue(displayValue, column)
                                                }
                                            } else {
                                                result.value = displayValue
                                            }
                                            result.cellSourceData.value = value
                                        }
                                        result.cellSourceData.data = item.data
                                }
                            }
                        }
                        return result
                    };
                    _proto.isHeadersVisible = function() {
                        return this._options.isHeadersVisible
                    };
                    _proto.isTotalCell = function(rowIndex, cellIndex) {
                        const {
                            items: items
                        } = this._options;
                        const item = items[rowIndex];
                        const correctCellIndex = this._correctCellIndex(cellIndex);
                        const isSummaryAlignByColumn = item.summaryCells && item.summaryCells[correctCellIndex] && item.summaryCells[correctCellIndex].length > 0 && item.summaryCells[correctCellIndex][0].alignByColumn;
                        return item && "groupFooter" === item.rowType || "totalFooter" === item.rowType || isSummaryAlignByColumn
                    };
                    _proto.getCellMerging = function(rowIndex, cellIndex) {
                        const {
                            columns: columns
                        } = this._options;
                        const column = columns[rowIndex] && columns[rowIndex][cellIndex];
                        return column ? {
                            colspan: (column.exportColspan || 1) - 1,
                            rowspan: (column.rowspan || 1) - 1
                        } : {
                            colspan: 0,
                            rowspan: 0
                        }
                    };
                    _proto.getFrozenArea = function() {
                        return {
                            x: 0,
                            y: this.getHeaderRowCount()
                        }
                    };
                    return DataProvider
                }();
                exports.DataProvider = DataProvider;
                let ExportController = function(_dataGridCore$ViewCon) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(ExportController, _dataGridCore$ViewCon);

                    function ExportController() {
                        return _dataGridCore$ViewCon.apply(this, arguments) || this
                    }
                    var _proto2 = ExportController.prototype;
                    _proto2._getEmptyCell = function() {
                        return {
                            caption: "",
                            colspan: 1,
                            rowspan: 1
                        }
                    };
                    _proto2._updateColumnWidth = function(column, width) {
                        column.width = width
                    };
                    _proto2._getColumns = function(initialColumnWidthsByColumnIndex) {
                        let result = [];
                        let i;
                        let columns;
                        const columnsController = this._columnsController;
                        const rowCount = columnsController.getRowCount();
                        for (i = 0; i <= rowCount; i++) {
                            const currentHeaderRow = [];
                            columns = columnsController.getVisibleColumns(i, true);
                            let columnWidthsByColumnIndex;
                            if (i === rowCount) {
                                if (this._updateLockCount) {
                                    columnWidthsByColumnIndex = initialColumnWidthsByColumnIndex
                                } else {
                                    const columnWidths = this._getColumnWidths(this._headersView, this._rowsView);
                                    if (columnWidths && columnWidths.length) {
                                        columnWidthsByColumnIndex = {};
                                        for (let i = 0; i < columns.length; i++) {
                                            columnWidthsByColumnIndex[columns[i].index] = columnWidths[i]
                                        }
                                    }
                                }
                            }
                            for (let j = 0; j < columns.length; j++) {
                                const column = (0, _extend.extend)({}, columns[j], {
                                    dataType: "datetime" === columns[j].dataType ? "date" : columns[j].dataType,
                                    gridColumn: columns[j]
                                });
                                if (this._needColumnExporting(column)) {
                                    const currentColspan = this._calculateExportColspan(column);
                                    if ((0, _type.isDefined)(currentColspan)) {
                                        column.exportColspan = currentColspan
                                    }
                                    if (columnWidthsByColumnIndex) {
                                        this._updateColumnWidth(column, columnWidthsByColumnIndex[column.index])
                                    }
                                    currentHeaderRow.push(column)
                                }
                            }
                            result.push(currentHeaderRow)
                        }
                        columns = result[rowCount];
                        result = (0, _m_export.prepareItems)(result.slice(0, -1), this._getEmptyCell());
                        result.push(columns);
                        return result
                    };
                    _proto2._calculateExportColspan = function(column) {
                        if (!column.isBand) {
                            return
                        }
                        const childColumns = this._columnsController.getChildrenByBandColumn(column.index, true);
                        if (!(0, _type.isDefined)(childColumns)) {
                            return
                        }
                        return childColumns.reduce((result, childColumn) => {
                            if (this._needColumnExporting(childColumn)) {
                                return result + (this._calculateExportColspan(childColumn) || 1)
                            }
                            return result
                        }, 0)
                    };
                    _proto2._needColumnExporting = function(column) {
                        return !column.command && (column.allowExporting || void 0 === column.allowExporting)
                    };
                    _proto2._getFooterSummaryItems = function(summaryCells, isTotal) {
                        const result = [];
                        let estimatedItemsCount = 1;
                        let i = 0;
                        do {
                            const values = [];
                            for (let j = 0; j < summaryCells.length; j++) {
                                const summaryCell = summaryCells[j];
                                const itemsLength = summaryCell.length;
                                if (estimatedItemsCount < itemsLength) {
                                    estimatedItemsCount = itemsLength
                                }
                                values.push(summaryCell[i])
                            }
                            result.push({
                                values: values,
                                rowType: isTotal ? "totalFooter" : "groupFooter"
                            })
                        } while (i++ < estimatedItemsCount - 1);
                        return result
                    };
                    _proto2._hasSummaryGroupFooters = function() {
                        const groupItems = this.option("summary.groupItems");
                        if ((0, _type.isDefined)(groupItems)) {
                            for (let i = 0; i < groupItems.length; i++) {
                                if (groupItems[i].showInGroupFooter) {
                                    return true
                                }
                            }
                        }
                        return false
                    };
                    _proto2._getItemsWithSummaryGroupFooters = function(sourceItems) {
                        let result = [];
                        let beforeGroupFooterItems = [];
                        let groupFooterItems = [];
                        for (let i = 0; i < sourceItems.length; i++) {
                            const item = sourceItems[i];
                            if ("groupFooter" === item.rowType) {
                                groupFooterItems = this._getFooterSummaryItems(item.summaryCells);
                                result = result.concat(beforeGroupFooterItems, groupFooterItems);
                                beforeGroupFooterItems = []
                            } else {
                                beforeGroupFooterItems.push(item)
                            }
                        }
                        return result.length ? result : beforeGroupFooterItems
                    };
                    _proto2._updateGroupValuesWithSummaryByColumn = function(sourceItems) {
                        let summaryValues = [];
                        for (let i = 0; i < sourceItems.length; i++) {
                            const item = sourceItems[i];
                            const {
                                summaryCells: summaryCells
                            } = item;
                            if ("group" === item.rowType && summaryCells && summaryCells.length > 1) {
                                const groupColumnCount = item.values.length;
                                for (let j = 1; j < summaryCells.length; j++) {
                                    for (let k = 0; k < summaryCells[j].length; k++) {
                                        const summaryItem = summaryCells[j][k];
                                        if (summaryItem && summaryItem.alignByColumn) {
                                            if (!Array.isArray(summaryValues[j - groupColumnCount])) {
                                                summaryValues[j - groupColumnCount] = []
                                            }
                                            summaryValues[j - groupColumnCount].push(summaryItem)
                                        }
                                    }
                                }
                                if (summaryValues.length > 0) {
                                    item.values.push(...summaryValues);
                                    summaryValues = []
                                }
                            }
                        }
                    };
                    _proto2._processUnExportedItems = function(items) {
                        const columns = this._columnsController.getVisibleColumns(null, true);
                        const groupColumns = this._columnsController.getGroupColumns();
                        let values;
                        let summaryCells;
                        for (let i = 0; i < items.length; i++) {
                            const item = items[i];
                            let isCommand = false;
                            values = [];
                            summaryCells = [];
                            for (let j = 0; j < columns.length; j++) {
                                const column = columns[j];
                                isCommand || (isCommand = ["detailExpand", "buttons"].includes(column.type));
                                if (this._needColumnExporting(column)) {
                                    if (item.values) {
                                        if ("group" === item.rowType && !values.length) {
                                            values.push(item.key[item.groupIndex])
                                        } else {
                                            values.push(item.values[j])
                                        }
                                    }
                                    if (item.summaryCells) {
                                        if ("group" === item.rowType && !summaryCells.length) {
                                            const index = j - groupColumns.length + item.groupIndex;
                                            summaryCells.push(item.summaryCells[isCommand ? index : index + 1])
                                        } else {
                                            summaryCells.push(item.summaryCells[j])
                                        }
                                    }
                                }
                            }
                            if (values.length) {
                                item.values = values
                            }
                            if (summaryCells.length) {
                                item.summaryCells = summaryCells
                            }
                        }
                    };
                    _proto2._getAllItems = function(data) {
                        let skipFilter = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false;
                        const that = this;
                        const d = new _deferred.Deferred;
                        const dataController = this.getController("data");
                        const footerItems = dataController.footerItems();
                        const totalItem = footerItems.length && footerItems[0];
                        const summaryTotalItems = that.option("summary.totalItems");
                        let summaryCells;
                        (0, _deferred.when)(data).done(data => {
                            dataController.loadAll(data, skipFilter).done((sourceItems, totalAggregates) => {
                                that._updateGroupValuesWithSummaryByColumn(sourceItems);
                                if (that._hasSummaryGroupFooters()) {
                                    sourceItems = that._getItemsWithSummaryGroupFooters(sourceItems)
                                }
                                summaryCells = totalItem && totalItem.summaryCells;
                                if ((0, _type.isDefined)(totalAggregates) && summaryTotalItems) {
                                    summaryCells = that._getSummaryCells(summaryTotalItems, totalAggregates)
                                }
                                const summaryItems = totalItem && that._getFooterSummaryItems(summaryCells, true);
                                if (summaryItems) {
                                    sourceItems = sourceItems.concat(summaryItems)
                                }
                                that._processUnExportedItems(sourceItems);
                                d.resolve(sourceItems)
                            }).fail(d.reject)
                        }).fail(d.reject);
                        return d
                    };
                    _proto2._getSummaryCells = function(summaryTotalItems, totalAggregates) {
                        const dataController = this.getController("data");
                        const columnsController = dataController._columnsController;
                        return dataController._calculateSummaryCells(summaryTotalItems, totalAggregates, columnsController.getVisibleColumns(null, true), (summaryItem, column) => dataController._isDataColumn(column) ? column.index : -1)
                    };
                    _proto2._getSelectedItems = function() {
                        const selectionController = this.getController("selection");
                        if (this.needLoadItemsOnExportingSelectedItems()) {
                            return this._getAllItems(selectionController.loadSelectedItemsWithFilter(), true)
                        }
                        return this._getAllItems(selectionController.getSelectedRowsData())
                    };
                    _proto2._getColumnWidths = function(headersView, rowsView) {
                        return headersView && headersView.isVisible() ? headersView.getColumnWidths() : rowsView.getColumnWidths()
                    };
                    _proto2.throwWarningIfNoOnExportingEvent = function() {
                        var _a, _b;
                        const hasOnExporting = null === (_b = (_a = this.component).hasActionSubscription) || void 0 === _b ? void 0 : _b.call(_a, "onExporting");
                        if (this.option("export.enabled") && !hasOnExporting) {
                            _ui.default.log("W1024")
                        }
                    };
                    _proto2.init = function() {
                        this.throwWarningIfNoOnExportingEvent();
                        this._columnsController = this.getController("columns");
                        this._rowsView = this.getView("rowsView");
                        this._headersView = this.getView("columnHeadersView");
                        this.createAction("onExporting", {
                            excludeValidators: ["disabled", "readOnly"]
                        })
                    };
                    _proto2.callbackNames = function() {
                        return ["selectionOnlyChanged"]
                    };
                    _proto2.getDataProvider = function(selectedRowsOnly) {
                        const columnWidths = this._getColumnWidths(this._headersView, this._rowsView);
                        let initialColumnWidthsByColumnIndex;
                        if (columnWidths && columnWidths.length) {
                            initialColumnWidthsByColumnIndex = {};
                            const columnsLastRowVisibleColumns = this._columnsController.getVisibleColumns(this._columnsController.getRowCount(), true);
                            for (let i = 0; i < columnsLastRowVisibleColumns.length; i++) {
                                initialColumnWidthsByColumnIndex[columnsLastRowVisibleColumns[i].index] = columnWidths[i]
                            }
                        }
                        return new DataProvider(this, initialColumnWidthsByColumnIndex, selectedRowsOnly)
                    };
                    _proto2.exportTo = function(selectedRowsOnly, format) {
                        this._selectionOnly = selectedRowsOnly;
                        const onExporting = this.getAction("onExporting");
                        const eventArgs = {
                            rtlEnabled: this.option("rtlEnabled"),
                            selectedRowsOnly: !!selectedRowsOnly,
                            format: format,
                            fileName: "DataGrid",
                            cancel: false
                        };
                        (0, _type.isFunction)(onExporting) && onExporting(eventArgs)
                    };
                    _proto2.publicMethods = function() {
                        return ["getDataProvider"]
                    };
                    _proto2.selectionOnly = function(value) {
                        if ((0, _type.isDefined)(value)) {
                            this._isSelectedRows = value;
                            this.selectionOnlyChanged.fire()
                        } else {
                            return this._isSelectedRows
                        }
                    };
                    _proto2.optionChanged = function(args) {
                        _dataGridCore$ViewCon.prototype.optionChanged.call(this, args);
                        if ("export" === args.name) {
                            this.throwWarningIfNoOnExportingEvent()
                        }
                    };
                    _proto2.needLoadItemsOnExportingSelectedItems = function() {
                        var _a;
                        return null !== (_a = this.option("loadItemsOnExportingSelectedItems")) && void 0 !== _a ? _a : this.getController("data")._dataSource.remoteOperations().filtering
                    };
                    return ExportController
                }(_m_core.default.ViewController);
                exports.ExportController = ExportController;
                _m_core.default.registerModule("export", {
                    defaultOptions: () => ({
                        export: {
                            enabled: false,
                            fileName: "DataGrid",
                            formats: ["xlsx"],
                            allowExportSelectedData: false,
                            texts: {
                                exportTo: _message.default.format("dxDataGrid-exportTo"),
                                exportAll: _message.default.format("dxDataGrid-exportAll"),
                                exportSelectedRows: _message.default.format("dxDataGrid-exportSelectedRows")
                            }
                        }
                    }),
                    controllers: {
                        export: ExportController
                    },
                    extenders: {
                        controllers: {
                            editing: {
                                callbackNames() {
                                    const callbackList = this.callBase();
                                    return (0, _type.isDefined)(callbackList) ? callbackList.push("editingButtonsUpdated") : ["editingButtonsUpdated"]
                                },
                                _updateEditButtons() {
                                    this.callBase();
                                    this.editingButtonsUpdated.fire()
                                }
                            }
                        },
                        views: {
                            headerPanel: {
                                _getToolbarItems() {
                                    const items = this.callBase();
                                    const exportButton = this._getExportToolbarButton();
                                    if (exportButton) {
                                        items.push(exportButton);
                                        this._correctItemsPosition(items)
                                    }
                                    return items
                                },
                                _getExportToolbarButton() {
                                    const items = this._getExportToolbarItems();
                                    if (0 === items.length) {
                                        return null
                                    }
                                    const disabled = this._needDisableExportButton();
                                    const toolbarButtonOptions = {
                                        name: "exportButton",
                                        location: "after",
                                        locateInMenu: "auto",
                                        sortIndex: 30,
                                        options: {
                                            items: items
                                        },
                                        disabled: disabled
                                    };
                                    if (1 === items.length) {
                                        const widgetOptions = _extends(_extends({}, items[0]), {
                                            hint: items[0].text,
                                            elementAttr: {
                                                class: "dx-datagrid-export-button"
                                            }
                                        });
                                        toolbarButtonOptions.widget = "dxButton";
                                        toolbarButtonOptions.showText = "inMenu";
                                        toolbarButtonOptions.options = widgetOptions
                                    } else {
                                        const widgetOptions = {
                                            icon: "export",
                                            displayExpr: "text",
                                            items: items,
                                            hint: this.option("export.texts.exportTo"),
                                            elementAttr: {
                                                class: "dx-datagrid-export-button"
                                            },
                                            dropDownOptions: {
                                                width: "auto",
                                                _wrapperClassExternal: "dx-datagrid-export-menu"
                                            }
                                        };
                                        toolbarButtonOptions.options = widgetOptions;
                                        toolbarButtonOptions.widget = "dxDropDownButton";
                                        toolbarButtonOptions.menuItemTemplate = (_data, _index, container) => {
                                            this._createComponent((0, _renderer.default)(container), _list_light.default, {
                                                items: items
                                            })
                                        }
                                    }
                                    return toolbarButtonOptions
                                },
                                _getExportToolbarItems() {
                                    var _a;
                                    const exportOptions = this.option("export");
                                    const texts = this.option("export.texts");
                                    const formats = null !== (_a = this.option("export.formats")) && void 0 !== _a ? _a : [];
                                    if (!exportOptions.enabled) {
                                        return []
                                    }
                                    const items = [];
                                    formats.forEach(formatType => {
                                        let formatName = formatType.toUpperCase();
                                        let exportAllIcon = "export";
                                        if ("xlsx" === formatType) {
                                            formatName = "Excel";
                                            exportAllIcon = "xlsxfile"
                                        }
                                        if ("pdf" === formatType) {
                                            exportAllIcon = "pdffile"
                                        }
                                        items.push({
                                            text: (0, _string.format)(texts.exportAll, formatName),
                                            icon: exportAllIcon,
                                            onClick: () => {
                                                this._exportController.exportTo(false, formatType)
                                            }
                                        });
                                        if (exportOptions.allowExportSelectedData) {
                                            items.push({
                                                text: (0, _string.format)(texts.exportSelectedRows, formatName),
                                                icon: "exportselected",
                                                onClick: () => {
                                                    this._exportController.exportTo(true, formatType)
                                                }
                                            })
                                        }
                                    });
                                    return items
                                },
                                _correctItemsPosition(items) {
                                    items.sort((itemA, itemB) => itemA.sortIndex - itemB.sortIndex)
                                },
                                _isExportButtonVisible() {
                                    return this.option("export.enabled")
                                },
                                optionChanged(args) {
                                    this.callBase(args);
                                    if ("export" === args.name) {
                                        args.handled = true;
                                        this._invalidate()
                                    }
                                },
                                _needDisableExportButton() {
                                    const isDataColumnsInvisible = !this._columnsController.hasVisibleDataColumns();
                                    const hasUnsavedChanges = this._editingController.hasChanges();
                                    return isDataColumnsInvisible || hasUnsavedChanges
                                },
                                _columnOptionChanged(e) {
                                    this.callBase(e);
                                    const isColumnLocationChanged = _m_core.default.checkChanges(e.optionNames, ["groupIndex", "visible", "all"]);
                                    if (isColumnLocationChanged) {
                                        const disabled = this._needDisableExportButton();
                                        this.setToolbarItemDisabled("exportButton", disabled)
                                    }
                                },
                                init() {
                                    this.callBase();
                                    this._exportController = this.getController("export");
                                    this._editingController = this.getController("editing");
                                    this._editingController.editingButtonsUpdated.add(() => {
                                        const disabled = this._needDisableExportButton();
                                        this.setToolbarItemDisabled("exportButton", disabled)
                                    })
                                },
                                isVisible() {
                                    return this.callBase() || this._isExportButtonVisible()
                                }
                            }
                        }
                    }
                })
            },
        56445:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/focus/m_focus.js ***!
              \*****************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _data = __webpack_require__( /*! ../../../../core/utils/data */ 47617);
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _m_focus = __webpack_require__( /*! ../../../grids/grid_core/focus/m_focus */ 5325);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _m_utils = __webpack_require__( /*! ../m_utils */ 10087);

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
                _m_core.default.registerModule("focus", (0, _extend.extend)(true, {}, _m_focus.focusModule, {
                    extenders: {
                        controllers: {
                            data: Base => function(_Base$inherit) {
                                ! function(subClass, superClass) {
                                    subClass.prototype = Object.create(superClass.prototype);
                                    subClass.prototype.constructor = subClass;
                                    _setPrototypeOf(subClass, superClass)
                                }(FocusDataControllerExtender, _Base$inherit);

                                function FocusDataControllerExtender() {
                                    return _Base$inherit.apply(this, arguments) || this
                                }
                                var _proto = FocusDataControllerExtender.prototype;
                                _proto.changeRowExpand = function(path, isRowClick) {
                                    if (this.option("focusedRowEnabled") && Array.isArray(path) && this.isRowExpanded(path)) {
                                        const keyboardNavigation = this.getController("keyboardNavigation");
                                        if ((!isRowClick || !keyboardNavigation.isKeyboardEnabled()) && this._isFocusedRowInsideGroup(path)) {
                                            this.option("focusedRowKey", path)
                                        }
                                    }
                                    return _Base$inherit.prototype.changeRowExpand.call(this, path, isRowClick)
                                };
                                _proto._isFocusedRowInsideGroup = function(path) {
                                    const columnsController = this.getController("columns");
                                    const focusedRowKey = this.option("focusedRowKey");
                                    const rowIndex = this.getRowIndexByKey(focusedRowKey);
                                    const focusedRow = rowIndex >= 0 && this.getVisibleRows()[rowIndex];
                                    const groups = columnsController.getGroupDataSourceParameters(true);
                                    if (focusedRow) {
                                        for (let i = 0; i < path.length; ++i) {
                                            const getter = (0, _data.compileGetter)(groups[i] && groups[i].selector);
                                            if (getter(focusedRow.data) !== path[i]) {
                                                return false
                                            }
                                        }
                                    }
                                    return true
                                };
                                _proto._getGroupPath = function(groupItem, groupCount) {
                                    const groupPath = [];
                                    let items = [groupItem];
                                    while (items && items[0] && groupCount) {
                                        const item = items[0];
                                        if (void 0 !== item.key) {
                                            groupPath.push(item.key)
                                        }
                                        items = item.items;
                                        groupCount--
                                    }
                                    return groupPath
                                };
                                _proto._expandGroupByPath = function(that, groupPath, level) {
                                    const d = new _deferred.Deferred;
                                    level++;
                                    that.expandRow(groupPath.slice(0, level)).done(() => {
                                        if (level === groupPath.length) {
                                            d.resolve()
                                        } else {
                                            that._expandGroupByPath(that, groupPath, level).done(d.resolve).fail(d.reject)
                                        }
                                    }).fail(d.reject);
                                    return d.promise()
                                };
                                _proto._calculateGlobalRowIndexByGroupedData = function(key) {
                                    const that = this;
                                    const dataSource = that._dataSource;
                                    const filter = that._generateFilterByKey(key);
                                    const deferred = new _deferred.Deferred;
                                    const isGroupKey = Array.isArray(key);
                                    const group = dataSource.group();
                                    if (isGroupKey) {
                                        return deferred.resolve(-1).promise()
                                    }
                                    if (!dataSource._grouping._updatePagingOptions) {
                                        that._calculateGlobalRowIndexByFlatData(key, null, true).done(deferred.resolve).fail(deferred.reject);
                                        return deferred
                                    }
                                    dataSource.load({
                                        filter: that._concatWithCombinedFilter(filter),
                                        group: group
                                    }).done(data => {
                                        if (!data || 0 === data.length || !(0, _type.isDefined)(data[0].key) || -1 === data[0].key) {
                                            return deferred.resolve(-1).promise()
                                        }
                                        const groupPath = that._getGroupPath(data[0], group.length);
                                        that._expandGroupByPath(that, groupPath, 0).done(() => {
                                            that._calculateExpandedRowGlobalIndex(deferred, key, groupPath, group)
                                        }).fail(deferred.reject)
                                    }).fail(deferred.reject);
                                    return deferred.promise()
                                };
                                _proto._calculateExpandedRowGlobalIndex = function(deferred, key, groupPath, group) {
                                    const groupFilter = (0, _m_utils.createGroupFilter)(groupPath, {
                                        group: group
                                    });
                                    const dataSource = this._dataSource;
                                    const scrollingMode = this.option("scrolling.mode");
                                    const isVirtualScrolling = "virtual" === scrollingMode || "infinite" === scrollingMode;
                                    const pageSize = dataSource.pageSize();
                                    let groupOffset;
                                    dataSource._grouping._updatePagingOptions({
                                        skip: 0,
                                        take: MAX_SAFE_INTEGER
                                    }, (groupInfo, totalOffset) => {
                                        if ((0, _common.equalByValue)(groupInfo.path, groupPath)) {
                                            groupOffset = totalOffset
                                        }
                                    });
                                    this._calculateGlobalRowIndexByFlatData(key, groupFilter).done(dataOffset => {
                                        let count;
                                        let groupContinuationCount;
                                        if (dataOffset < 0) {
                                            deferred.resolve(-1);
                                            return
                                        }
                                        const currentPageOffset = groupOffset % pageSize || pageSize;
                                        count = currentPageOffset + dataOffset - groupPath.length;
                                        if (isVirtualScrolling) {
                                            groupContinuationCount = 0
                                        } else {
                                            groupContinuationCount = Math.floor(count / (pageSize - groupPath.length)) * groupPath.length
                                        }
                                        count = groupOffset + dataOffset + groupContinuationCount;
                                        deferred.resolve(count)
                                    }).fail(deferred.reject)
                                };
                                return FocusDataControllerExtender
                            }(Base.inherit(_m_focus.focusModule.extenders.controllers.data))
                        }
                    }
                }))
            },
        72487:
            /*!***********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/grouping/m_grouping.js ***!
              \***********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.GroupingHeaderPanelExtender = void 0;
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../../core/devices */ 20530));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _size = __webpack_require__( /*! ../../../../core/utils/size */ 58664);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/message */ 28109));
                var _accessibility = __webpack_require__( /*! ../../../../ui/shared/accessibility */ 56756);
                var _m_accessibility = __webpack_require__( /*! ../../../grids/grid_core/m_accessibility */ 9130);
                var _m_core = _interopRequireDefault(__webpack_require__( /*! ../m_core */ 74938));
                var _m_data_source_adapter = _interopRequireDefault(__webpack_require__( /*! ../m_data_source_adapter */ 49975));
                var _m_grouping_collapsed = __webpack_require__( /*! ./m_grouping_collapsed */ 2772);
                var _m_grouping_expanded = __webpack_require__( /*! ./m_grouping_expanded */ 4789);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const GroupingDataSourceAdapterExtender = {
                    init() {
                        this.callBase.apply(this, arguments);
                        this._initGroupingHelper()
                    },
                    _initGroupingHelper(options) {
                        const grouping = this._grouping;
                        const isAutoExpandAll = this.option("grouping.autoExpandAll");
                        const isFocusedRowEnabled = this.option("focusedRowEnabled");
                        const remoteOperations = options ? options.remoteOperations : this.remoteOperations();
                        const isODataRemoteOperations = remoteOperations.filtering && remoteOperations.sorting && remoteOperations.paging;
                        if (isODataRemoteOperations && !remoteOperations.grouping && (isAutoExpandAll || !isFocusedRowEnabled)) {
                            if (!grouping || grouping instanceof _m_grouping_collapsed.GroupingHelper) {
                                this._grouping = new _m_grouping_expanded.GroupingHelper(this)
                            }
                        } else if (!grouping || grouping instanceof _m_grouping_expanded.GroupingHelper) {
                            this._grouping = new _m_grouping_collapsed.GroupingHelper(this)
                        }
                    },
                    totalItemsCount() {
                        const totalCount = this.callBase();
                        return totalCount > 0 && this._dataSource.group() && this._dataSource.requireTotalCount() ? totalCount + this._grouping.totalCountCorrection() : totalCount
                    },
                    itemsCount() {
                        return this._dataSource.group() ? this._grouping.itemsCount() || 0 : this.callBase.apply(this, arguments)
                    },
                    allowCollapseAll() {
                        return this._grouping.allowCollapseAll()
                    },
                    isGroupItemCountable(item) {
                        return this._grouping.isGroupItemCountable(item)
                    },
                    isRowExpanded(key) {
                        const groupInfo = this._grouping.findGroupInfo(key);
                        return groupInfo ? groupInfo.isExpanded : !this._grouping.allowCollapseAll()
                    },
                    collapseAll(groupIndex) {
                        return this._collapseExpandAll(groupIndex, false)
                    },
                    expandAll(groupIndex) {
                        return this._collapseExpandAll(groupIndex, true)
                    },
                    _collapseExpandAll(groupIndex, isExpand) {
                        const that = this;
                        const dataSource = that._dataSource;
                        const group = dataSource.group();
                        const groups = _m_core.default.normalizeSortingInfo(group || []);
                        if (groups.length) {
                            for (let i = 0; i < groups.length; i++) {
                                if (void 0 === groupIndex || groupIndex === i) {
                                    groups[i].isExpanded = isExpand
                                } else if (group && group[i]) {
                                    groups[i].isExpanded = group[i].isExpanded
                                }
                            }
                            dataSource.group(groups);
                            that._grouping.foreachGroups((groupInfo, parents) => {
                                if (void 0 === groupIndex || groupIndex === parents.length - 1) {
                                    groupInfo.isExpanded = isExpand
                                }
                            }, false, true);
                            that.resetPagesCache()
                        }
                        return true
                    },
                    refresh() {
                        this.callBase.apply(this, arguments);
                        return this._grouping.refresh.apply(this._grouping, arguments)
                    },
                    changeRowExpand(path) {
                        const that = this;
                        const dataSource = that._dataSource;
                        if (dataSource.group()) {
                            dataSource.beginLoading();
                            if (that._lastLoadOptions) {
                                that._lastLoadOptions.groupExpand = true
                            }
                            return that._changeRowExpandCore(path).always(() => {
                                dataSource.endLoading()
                            })
                        }
                    },
                    _changeRowExpandCore(path) {
                        return this._grouping.changeRowExpand(path)
                    },
                    _hasGroupLevelsExpandState(group, isExpanded) {
                        if (group && Array.isArray(group)) {
                            for (let i = 0; i < group.length; i++) {
                                if (group[i].isExpanded === isExpanded) {
                                    return true
                                }
                            }
                        }
                    },
                    _customizeRemoteOperations(options, operationTypes) {
                        const {
                            remoteOperations: remoteOperations
                        } = options;
                        if (options.storeLoadOptions.group) {
                            if (remoteOperations.grouping && !options.isCustomLoading) {
                                if (!remoteOperations.groupPaging || this._hasGroupLevelsExpandState(options.storeLoadOptions.group, true)) {
                                    remoteOperations.paging = false
                                }
                            }
                            if (!remoteOperations.grouping && (!remoteOperations.sorting || !remoteOperations.filtering || options.isCustomLoading || this._hasGroupLevelsExpandState(options.storeLoadOptions.group, false))) {
                                remoteOperations.paging = false
                            }
                        } else if (!options.isCustomLoading && remoteOperations.paging && operationTypes.grouping) {
                            this.resetCache()
                        }
                        this.callBase.apply(this, arguments)
                    },
                    _handleDataLoading(options) {
                        this.callBase(options);
                        this._initGroupingHelper(options);
                        return this._grouping.handleDataLoading(options)
                    },
                    _handleDataLoaded(options) {
                        return this._grouping.handleDataLoaded(options, this.callBase.bind(this))
                    },
                    _handleDataLoadedCore(options) {
                        return this._grouping.handleDataLoadedCore(options, this.callBase.bind(this))
                    }
                };
                _m_data_source_adapter.default.extend(GroupingDataSourceAdapterExtender);
                const GroupingDataControllerExtender = {
                    init() {
                        this.callBase();
                        this.createAction("onRowExpanding");
                        this.createAction("onRowExpanded");
                        this.createAction("onRowCollapsing");
                        this.createAction("onRowCollapsed")
                    },
                    _beforeProcessItems(items) {
                        const groupColumns = this._columnsController.getGroupColumns();
                        items = this.callBase(items);
                        if (items.length && groupColumns.length) {
                            items = this._processGroupItems(items, groupColumns.length)
                        }
                        return items
                    },
                    _processItem(item, options) {
                        if ((0, _type.isDefined)(item.groupIndex) && (0, _type.isString)(item.rowType) && 0 === item.rowType.indexOf("group")) {
                            item = this._processGroupItem(item, options);
                            options.dataIndex = 0
                        } else {
                            item = this.callBase.apply(this, arguments)
                        }
                        return item
                    },
                    _processGroupItem: item => item,
                    _processGroupItems(items, groupsCount, options) {
                        const that = this;
                        const groupedColumns = that._columnsController.getGroupColumns();
                        const column = groupedColumns[groupedColumns.length - groupsCount];
                        if (!options) {
                            const scrollingMode = that.option("scrolling.mode");
                            options = {
                                collectContinuationItems: "virtual" !== scrollingMode && "infinite" !== scrollingMode,
                                resultItems: [],
                                path: [],
                                values: []
                            }
                        }
                        const {
                            resultItems: resultItems
                        } = options;
                        if (options.data) {
                            if (options.collectContinuationItems || !options.data.isContinuation) {
                                resultItems.push({
                                    rowType: "group",
                                    data: options.data,
                                    groupIndex: options.path.length - 1,
                                    isExpanded: !!options.data.items,
                                    key: options.path.slice(0),
                                    values: options.values.slice(0)
                                })
                            }
                        }
                        if (items) {
                            if (0 === groupsCount) {
                                resultItems.push.apply(resultItems, items)
                            } else {
                                for (let i = 0; i < items.length; i++) {
                                    const item = items[i];
                                    if (item && "items" in item) {
                                        options.data = item;
                                        options.path.push(item.key);
                                        options.values.push(column && column.deserializeValue && !column.calculateDisplayValue ? column.deserializeValue(item.key) : item.key);
                                        that._processGroupItems(item.items, groupsCount - 1, options);
                                        options.data = void 0;
                                        options.path.pop();
                                        options.values.pop()
                                    } else {
                                        resultItems.push(item)
                                    }
                                }
                            }
                        }
                        return resultItems
                    },
                    publicMethods() {
                        return this.callBase().concat(["collapseAll", "expandAll", "isRowExpanded", "expandRow", "collapseRow"])
                    },
                    collapseAll(groupIndex) {
                        const dataSource = this._dataSource;
                        if (dataSource && dataSource.collapseAll(groupIndex)) {
                            dataSource.pageIndex(0);
                            dataSource.reload()
                        }
                    },
                    expandAll(groupIndex) {
                        const dataSource = this._dataSource;
                        if (dataSource && dataSource.expandAll(groupIndex)) {
                            dataSource.pageIndex(0);
                            dataSource.reload()
                        }
                    },
                    changeRowExpand(key) {
                        const that = this;
                        const expanded = that.isRowExpanded(key);
                        const args = {
                            key: key,
                            expanded: expanded
                        };
                        that.executeAction(expanded ? "onRowCollapsing" : "onRowExpanding", args);
                        if (!args.cancel) {
                            return (0, _deferred.when)(that._changeRowExpandCore(key)).done(() => {
                                args.expanded = !expanded;
                                that.executeAction(expanded ? "onRowCollapsed" : "onRowExpanded", args)
                            })
                        }
                        return (new _deferred.Deferred).resolve()
                    },
                    _changeRowExpandCore(key) {
                        const that = this;
                        const dataSource = this._dataSource;
                        const d = new _deferred.Deferred;
                        if (!dataSource) {
                            d.resolve()
                        } else {
                            (0, _deferred.when)(dataSource.changeRowExpand(key)).done(() => {
                                that.load().done(d.resolve).fail(d.reject)
                            }).fail(d.reject)
                        }
                        return d
                    },
                    isRowExpanded(key) {
                        const dataSource = this._dataSource;
                        return dataSource && dataSource.isRowExpanded(key)
                    },
                    expandRow(key) {
                        if (!this.isRowExpanded(key)) {
                            return this.changeRowExpand(key)
                        }
                        return (new _deferred.Deferred).resolve()
                    },
                    collapseRow(key) {
                        if (this.isRowExpanded(key)) {
                            return this.changeRowExpand(key)
                        }
                        return (new _deferred.Deferred).resolve()
                    },
                    optionChanged(args) {
                        if ("grouping" === args.name) {
                            args.name = "dataSource"
                        }
                        this.callBase(args)
                    }
                };
                const onGroupingMenuItemClick = function(column, params) {
                    const columnsController = this._columnsController;
                    switch (params.itemData.value) {
                        case "group": {
                            const groups = columnsController._dataSource.group() || [];
                            columnsController.columnOption(column.dataField, "groupIndex", groups.length);
                            break
                        }
                        case "ungroup":
                            columnsController.columnOption(column.dataField, "groupIndex", -1);
                            break;
                        case "ungroupAll":
                            this.component.clearGrouping()
                    }
                };
                const isGroupPanelVisible = groupPanelOptions => {
                    const visible = null === groupPanelOptions || void 0 === groupPanelOptions ? void 0 : groupPanelOptions.visible;
                    return "auto" === visible ? "desktop" === _devices.default.current().deviceType : !!visible
                };
                const allowDragging = (groupPanelOptions, column) => {
                    const isVisible = isGroupPanelVisible(groupPanelOptions);
                    const canDrag = (null === groupPanelOptions || void 0 === groupPanelOptions ? void 0 : groupPanelOptions.allowColumnDragging) && column.allowGrouping;
                    return isVisible && !!canDrag
                };
                const GroupingHeaderPanelExtender = {
                    _getToolbarItems() {
                        const items = this.callBase();
                        return this._appendGroupingItem(items)
                    },
                    _appendGroupingItem(items) {
                        if (this._isGroupPanelVisible()) {
                            let isRendered = false;
                            const toolbarItem = {
                                template: () => {
                                    const $groupPanel = (0, _renderer.default)("<div>").addClass("dx-datagrid-group-panel");
                                    this._updateGroupPanelContent($groupPanel);
                                    (0, _m_accessibility.registerKeyboardAction)("groupPanel", this, $groupPanel, void 0, this._handleActionKeyDown.bind(this));
                                    return $groupPanel
                                },
                                name: "groupPanel",
                                onItemRendered: () => {
                                    isRendered && this.renderCompleted.fire();
                                    isRendered = true
                                },
                                location: "before",
                                locateInMenu: "never",
                                sortIndex: 1
                            };
                            items.push(toolbarItem);
                            this.updateToolbarDimensions()
                        }
                        return items
                    },
                    _handleActionKeyDown(args) {
                        const {
                            event: event
                        } = args;
                        const $target = (0, _renderer.default)(event.target);
                        const groupColumnIndex = $target.closest(".".concat("dx-group-panel-item")).index();
                        const column = this._columnsController.getGroupColumns()[groupColumnIndex];
                        const columnIndex = column && column.index;
                        if ($target.is(".dx-header-filter")) {
                            this.getController("headerFilter").showHeaderFilterMenu(columnIndex, true)
                        } else {
                            this._processGroupItemAction(columnIndex)
                        }
                        event.preventDefault()
                    },
                    _isGroupPanelVisible() {
                        return isGroupPanelVisible(this.option("groupPanel"))
                    },
                    _renderGroupPanelItems($groupPanel, groupColumns) {
                        const that = this;
                        $groupPanel.empty();
                        (0, _iterator.each)(groupColumns, (index, groupColumn) => {
                            that._createGroupPanelItem($groupPanel, groupColumn)
                        });
                        (0, _accessibility.restoreFocus)(this)
                    },
                    _createGroupPanelItem($rootElement, groupColumn) {
                        const $groupPanelItem = (0, _renderer.default)("<div>").addClass(groupColumn.cssClass).addClass("dx-group-panel-item").data("columnData", groupColumn).appendTo($rootElement).text(groupColumn.caption);
                        (0, _accessibility.setTabIndex)(this, $groupPanelItem);
                        return $groupPanelItem
                    },
                    _columnOptionChanged(e) {
                        if (!this._requireReady && !_m_core.default.checkChanges(e.optionNames, ["width", "visibleWidth"])) {
                            const $toolbarElement = this.element();
                            const $groupPanel = $toolbarElement && $toolbarElement.find(".".concat("dx-datagrid-group-panel"));
                            if ($groupPanel && $groupPanel.length) {
                                this._updateGroupPanelContent($groupPanel);
                                this.updateToolbarDimensions();
                                this.renderCompleted.fire()
                            }
                        }
                        this.callBase()
                    },
                    _updateGroupPanelContent($groupPanel) {
                        const groupColumns = this.getController("columns").getGroupColumns();
                        const groupPanelOptions = this.option("groupPanel");
                        this._renderGroupPanelItems($groupPanel, groupColumns);
                        if (groupPanelOptions.allowColumnDragging && !groupColumns.length) {
                            (0, _renderer.default)("<div>").addClass("dx-group-panel-message").text(groupPanelOptions.emptyPanelText).appendTo($groupPanel);
                            $groupPanel.closest(".".concat("dx-toolbar-item")).addClass("dx-toolbar-label");
                            $groupPanel.closest(".".concat("dx-toolbar-label")).css("maxWidth", "none")
                        }
                    },
                    allowDragging(column) {
                        const groupPanelOptions = this.option("groupPanel");
                        return allowDragging(groupPanelOptions, column)
                    },
                    getColumnElements() {
                        const $element = this.element();
                        return $element && $element.find(".".concat("dx-group-panel-item"))
                    },
                    getColumns() {
                        return this.getController("columns").getGroupColumns()
                    },
                    getBoundingRect() {
                        const $element = this.element();
                        if ($element && $element.find(".".concat("dx-datagrid-group-panel")).length) {
                            const offset = $element.offset();
                            return {
                                top: offset.top,
                                bottom: offset.top + (0, _size.getHeight)($element)
                            }
                        }
                        return null
                    },
                    getName: () => "group",
                    getContextMenuItems(options) {
                        const that = this;
                        const contextMenuEnabled = that.option("grouping.contextMenuEnabled");
                        const $groupedColumnElement = (0, _renderer.default)(options.targetElement).closest(".".concat("dx-group-panel-item"));
                        let items;
                        if ($groupedColumnElement.length) {
                            options.column = $groupedColumnElement.data("columnData")
                        }
                        if (contextMenuEnabled && options.column) {
                            const {
                                column: column
                            } = options;
                            const isGroupingAllowed = (0, _type.isDefined)(column.allowGrouping) ? column.allowGrouping : true;
                            if (isGroupingAllowed) {
                                const isColumnGrouped = (0, _type.isDefined)(column.groupIndex) && column.groupIndex > -1;
                                const groupingTexts = that.option("grouping.texts");
                                const onItemClick = onGroupingMenuItemClick.bind(that, column);
                                items = [{
                                    text: groupingTexts.ungroup,
                                    value: "ungroup",
                                    disabled: !isColumnGrouped,
                                    onItemClick: onItemClick
                                }, {
                                    text: groupingTexts.ungroupAll,
                                    value: "ungroupAll",
                                    onItemClick: onItemClick
                                }]
                            }
                        }
                        return items
                    },
                    isVisible() {
                        return this.callBase() || this._isGroupPanelVisible()
                    },
                    hasGroupedColumns() {
                        return this._isGroupPanelVisible() && !!this.getColumns().length
                    },
                    optionChanged(args) {
                        if ("groupPanel" === args.name) {
                            this._invalidate();
                            args.handled = true
                        } else {
                            this.callBase(args)
                        }
                    }
                };
                exports.GroupingHeaderPanelExtender = GroupingHeaderPanelExtender;
                const GroupingRowsViewExtender = {
                    getContextMenuItems(options) {
                        const that = this;
                        const contextMenuEnabled = that.option("grouping.contextMenuEnabled");
                        let items;
                        if (contextMenuEnabled && options.row && "group" === options.row.rowType) {
                            const columnsController = that._columnsController;
                            const column = columnsController.columnOption("groupIndex:".concat(options.row.groupIndex));
                            if (column && column.allowGrouping) {
                                const groupingTexts = that.option("grouping.texts");
                                const onItemClick = onGroupingMenuItemClick.bind(that, column);
                                items = [];
                                items.push({
                                    text: groupingTexts.ungroup,
                                    value: "ungroup",
                                    onItemClick: onItemClick
                                }, {
                                    text: groupingTexts.ungroupAll,
                                    value: "ungroupAll",
                                    onItemClick: onItemClick
                                })
                            }
                        }
                        return items
                    },
                    _rowClick(e) {
                        const that = this;
                        const expandMode = that.option("grouping.expandMode");
                        const scrollingMode = that.option("scrolling.mode");
                        const isGroupRowStateChanged = "infinite" !== scrollingMode && "rowClick" === expandMode && (0, _renderer.default)(e.event.target).closest(".".concat("dx-group-row")).length;
                        const isExpandButtonClicked = (0, _renderer.default)(e.event.target).closest(".".concat("dx-datagrid-expand")).length;
                        if (isGroupRowStateChanged || isExpandButtonClicked) {
                            that._changeGroupRowState(e)
                        }
                        that.callBase(e)
                    },
                    _changeGroupRowState(e) {
                        const dataController = this.getController("data");
                        const row = dataController.items()[e.rowIndex];
                        const allowCollapsing = this._columnsController.columnOption("groupIndex:".concat(row.groupIndex), "allowCollapsing");
                        if ("data" === row.rowType || "group" === row.rowType && false !== allowCollapsing) {
                            dataController.changeRowExpand(row.key, true);
                            e.event.preventDefault();
                            e.handled = true
                        }
                    }
                };
                const columnHeadersViewExtender = {
                    getContextMenuItems(options) {
                        const that = this;
                        const contextMenuEnabled = that.option("grouping.contextMenuEnabled");
                        let items = that.callBase(options);
                        if (contextMenuEnabled && options.row && ("header" === options.row.rowType || "detailAdaptive" === options.row.rowType)) {
                            const {
                                column: column
                            } = options;
                            if (!column.command && (!(0, _type.isDefined)(column.allowGrouping) || column.allowGrouping)) {
                                const groupingTexts = that.option("grouping.texts");
                                const isColumnGrouped = (0, _type.isDefined)(column.groupIndex) && column.groupIndex > -1;
                                const onItemClick = onGroupingMenuItemClick.bind(that, column);
                                items = items || [];
                                items.push({
                                    text: groupingTexts.groupByThisColumn,
                                    value: "group",
                                    beginGroup: true,
                                    disabled: isColumnGrouped,
                                    onItemClick: onItemClick
                                });
                                if (column.showWhenGrouped) {
                                    items.push({
                                        text: groupingTexts.ungroup,
                                        value: "ungroup",
                                        disabled: !isColumnGrouped,
                                        onItemClick: onItemClick
                                    })
                                }
                                items.push({
                                    text: groupingTexts.ungroupAll,
                                    value: "ungroupAll",
                                    onItemClick: onItemClick
                                })
                            }
                        }
                        return items
                    },
                    allowDragging(column) {
                        const groupPanelOptions = this.option("groupPanel");
                        return allowDragging(groupPanelOptions, column) || this.callBase(column)
                    }
                };
                _m_core.default.registerModule("grouping", {
                    defaultOptions: () => ({
                        grouping: {
                            autoExpandAll: true,
                            allowCollapsing: true,
                            contextMenuEnabled: false,
                            expandMode: "buttonClick",
                            texts: {
                                groupContinuesMessage: _message.default.format("dxDataGrid-groupContinuesMessage"),
                                groupContinuedMessage: _message.default.format("dxDataGrid-groupContinuedMessage"),
                                groupByThisColumn: _message.default.format("dxDataGrid-groupHeaderText"),
                                ungroup: _message.default.format("dxDataGrid-ungroupHeaderText"),
                                ungroupAll: _message.default.format("dxDataGrid-ungroupAllText")
                            }
                        },
                        groupPanel: {
                            visible: false,
                            emptyPanelText: _message.default.format("dxDataGrid-groupPanelEmptyText"),
                            allowColumnDragging: true
                        }
                    }),
                    extenders: {
                        controllers: {
                            data: GroupingDataControllerExtender,
                            columns: {
                                _getExpandColumnOptions() {
                                    const options = this.callBase.apply(this, arguments);
                                    options.cellTemplate = _m_core.default.getExpandCellTemplate();
                                    return options
                                }
                            },
                            editing: {
                                _isProcessedItem: item => (0, _type.isDefined)(item.groupIndex) && (0, _type.isString)(item.rowType) && 0 === item.rowType.indexOf("group")
                            }
                        },
                        views: {
                            headerPanel: GroupingHeaderPanelExtender,
                            rowsView: GroupingRowsViewExtender,
                            columnHeadersView: columnHeadersViewExtender
                        }
                    }
                })
            },
        2772:
            /*!*********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/grouping/m_grouping_collapsed.js ***!
              \*********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.GroupingHelper = void 0;
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _errors = __webpack_require__( /*! ../../../../data/errors */ 18438);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.errors */ 96688));
                var _m_core = _interopRequireDefault(__webpack_require__( /*! ../m_core */ 74938));
                var _m_utils = __webpack_require__( /*! ../m_utils */ 10087);
                var _m_grouping_core = __webpack_require__( /*! ./m_grouping_core */ 8748);

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

                function getContinuationGroupCount(groupOffset, pageSize, groupSize, groupIndex) {
                    groupIndex = groupIndex || 0;
                    if (pageSize > 1 && groupSize > 0) {
                        let pageOffset = groupOffset - Math.floor(groupOffset / pageSize) * pageSize || pageSize;
                        pageOffset += groupSize - groupIndex - 2;
                        if (pageOffset < 0) {
                            pageOffset += pageSize
                        }
                        return Math.floor(pageOffset / (pageSize - groupIndex - 1))
                    }
                    return 0
                }
                const GroupingHelper = _m_grouping_core.GroupingHelper.inherit(function() {
                    const foreachExpandedGroups = function(that, callback, updateGroups) {
                        return that.foreachGroups((groupInfo, parents) => {
                            if (groupInfo.isExpanded) {
                                return callback(groupInfo, parents)
                            }
                        }, true, false, updateGroups, updateGroups)
                    };
                    const processGroupItems = function(that, items, groupsCount, expandedInfo, path, isCustomLoading, isLastGroupExpanded) {
                        let isExpanded;
                        expandedInfo.items = expandedInfo.items || [];
                        expandedInfo.paths = expandedInfo.paths || [];
                        expandedInfo.count = expandedInfo.count || 0;
                        expandedInfo.lastCount = expandedInfo.lastCount || 0;
                        if (!groupsCount) {
                            return
                        }
                        for (let i = 0; i < items.length; i++) {
                            const item = items[i];
                            if (void 0 !== item.items) {
                                path.push(item.key);
                                if (isCustomLoading) {
                                    isExpanded = true
                                } else {
                                    const groupInfo = that.findGroupInfo(path);
                                    isExpanded = groupInfo && groupInfo.isExpanded
                                }
                                if (!isExpanded) {
                                    item.collapsedItems = item.items;
                                    item.items = null
                                } else if (item.items) {
                                    processGroupItems(that, item.items, groupsCount - 1, expandedInfo, path, isCustomLoading, isLastGroupExpanded)
                                } else if (1 === groupsCount && item.count && (!isCustomLoading || isLastGroupExpanded)) {
                                    expandedInfo.items.push(item);
                                    expandedInfo.paths.push(path.slice(0));
                                    expandedInfo.count += expandedInfo.lastCount;
                                    expandedInfo.lastCount = item.count
                                }
                                path.pop()
                            }
                        }
                    };
                    const updateGroupInfoItem = function(that, item, isLastGroupLevel, path, offset) {
                        const groupInfo = that.findGroupInfo(path);
                        let count;
                        if (!groupInfo) {
                            if (isLastGroupLevel) {
                                count = item.count > 0 ? item.count : item.items.length
                            }
                            that.addGroupInfo({
                                isExpanded: that._isGroupExpanded(path.length - 1),
                                path: path.slice(0),
                                offset: offset,
                                count: count || 0
                            })
                        } else {
                            if (isLastGroupLevel) {
                                groupInfo.count = item.count > 0 ? item.count : item.items && item.items.length || 0
                            } else {
                                item.count = groupInfo.count || item.count
                            }
                            groupInfo.offset = offset
                        }
                    };
                    const updateGroupInfos = function(that, options, items, loadedGroupCount, groupIndex, path, parentIndex) {
                        const groupCount = options.group ? options.group.length : 0;
                        const isLastGroupLevel = groupCount === loadedGroupCount;
                        const remotePaging = options.remoteOperations.paging;
                        let offset = 0;
                        let totalCount = 0;
                        let count;
                        groupIndex = groupIndex || 0;
                        path = path || [];
                        if (remotePaging && !parentIndex) {
                            offset = 0 === groupIndex ? options.skip || 0 : options.skips[groupIndex - 1] || 0
                        }
                        if (groupIndex >= loadedGroupCount) {
                            return items.length
                        }
                        for (let i = 0; i < items.length; i++) {
                            const item = items[i];
                            if (item) {
                                path.push(item.key);
                                if (!item.count && !item.items || void 0 === item.items) {
                                    return -1
                                }
                                updateGroupInfoItem(that, item, isLastGroupLevel, path, offset + i);
                                count = item.items ? updateGroupInfos(that, options, item.items, loadedGroupCount, groupIndex + 1, path, i) : item.count || -1;
                                if (count < 0) {
                                    return -1
                                }
                                totalCount += count;
                                path.pop()
                            }
                        }
                        return totalCount
                    };
                    const isGroupExpanded = function(groups, groupIndex) {
                        return groups && groups.length && groups[groupIndex] && !!groups[groupIndex].isExpanded
                    };
                    const getTotalOffset = function(groupInfos, pageSize, offset) {
                        let groupSize;
                        let totalOffset = offset;
                        for (let groupIndex = 0; groupIndex < groupInfos.length; groupIndex++) {
                            groupSize = groupInfos[groupIndex].offset + 1;
                            if (groupIndex > 0) {
                                groupSize += groupInfos[groupIndex - 1].childrenTotalCount;
                                if (pageSize) {
                                    groupSize += getContinuationGroupCount(totalOffset, pageSize, groupSize, groupIndex - 1) * groupIndex
                                }
                            }
                            totalOffset += groupSize
                        }
                        return totalOffset
                    };

                    function applyContinuationToGroupItem(options, expandedInfo, groupLevel, expandedItemIndex) {
                        const item = expandedInfo.items[expandedItemIndex];
                        const skip = options.skips && options.skips[groupLevel];
                        const take = options.takes && options.takes[groupLevel];
                        const isLastExpandedItem = expandedItemIndex === expandedInfo.items.length - 1;
                        const isFirstExpandedItem = 0 === expandedItemIndex;
                        const lastExpandedItemSkip = isFirstExpandedItem && skip || 0;
                        const isItemsTruncatedByTake = item.count > take + lastExpandedItemSkip;
                        if (isFirstExpandedItem && void 0 !== skip) {
                            item.isContinuation = true
                        }
                        if (isLastExpandedItem && void 0 !== take && isItemsTruncatedByTake) {
                            item.isContinuationOnNextPage = true
                        }
                    }

                    function isDataDeferred(data) {
                        return !Array.isArray(data)
                    }

                    function makeDataDeferred(options) {
                        if (!isDataDeferred(options.data)) {
                            options.data = new _deferred.Deferred
                        }
                    }

                    function loadGroupItems(that, options, loadedGroupCount, expandedInfo, groupLevel, data) {
                        if (!options.isCustomLoading) {
                            expandedInfo = {};
                            processGroupItems(that, data, loadedGroupCount, expandedInfo, []);
                            ! function(options, expandedInfo, currentGroupCount) {
                                const currentGroupIndex = currentGroupCount - 1;
                                const groupCount = options.group ? options.group.length : 0;
                                expandedInfo.skip = options.skips && options.skips[currentGroupIndex];
                                if (options.takes && void 0 !== options.takes[currentGroupIndex]) {
                                    if (groupCount === currentGroupCount) {
                                        expandedInfo.take = expandedInfo.count ? expandedInfo.count - (expandedInfo.skip || 0) : 0
                                    } else {
                                        expandedInfo.take = 0
                                    }
                                    expandedInfo.take += options.takes[currentGroupIndex]
                                }
                            }(options, expandedInfo, loadedGroupCount)
                        }
                        const groupCount = options.group ? options.group.length : 0;
                        if (expandedInfo.paths.length && groupCount - loadedGroupCount > 0) {
                            makeDataDeferred(options);
                            ! function(that, options, expandedInfo, loadedGroupCount, groupLevel, data) {
                                const groups = options.group || [];
                                const currentGroup = groups[groupLevel + 1];
                                const deferreds = [];
                                (0, _iterator.each)(expandedInfo.paths, expandedItemIndex => {
                                    var _a;
                                    const loadOptions = {
                                        requireTotalCount: false,
                                        requireGroupCount: true,
                                        group: [currentGroup],
                                        groupSummary: options.storeLoadOptions.groupSummary,
                                        filter: (0, _m_utils.createGroupFilter)(expandedInfo.paths[expandedItemIndex], {
                                            filter: options.storeLoadOptions.filter,
                                            group: groups
                                        }),
                                        select: options.storeLoadOptions.select,
                                        langParams: null === (_a = options.storeLoadOptions) || void 0 === _a ? void 0 : _a.langParams
                                    };
                                    if (0 === expandedItemIndex) {
                                        loadOptions.skip = expandedInfo.skip || 0
                                    }
                                    if (expandedItemIndex === expandedInfo.paths.length - 1) {
                                        loadOptions.take = expandedInfo.take
                                    }
                                    const loadResult = 0 === loadOptions.take ? [] : that._dataSource.loadFromStore(loadOptions);
                                    (0, _deferred.when)(loadResult).done(data => {
                                        const item = expandedInfo.items[expandedItemIndex];
                                        applyContinuationToGroupItem(options, expandedInfo, groupLevel, expandedItemIndex);
                                        item.items = data
                                    });
                                    deferreds.push(loadResult)
                                });
                                _deferred.when.apply(null, deferreds).done(() => {
                                    updateGroupInfos(that, options, data, loadedGroupCount + 1);
                                    loadGroupItems(that, options, loadedGroupCount + 1, expandedInfo, groupLevel + 1, data)
                                })
                            }(that, options, expandedInfo, loadedGroupCount, groupLevel, data)
                        } else if (expandedInfo.paths.length && options.storeLoadOptions.group) {
                            makeDataDeferred(options);
                            ! function(that, options, expandedInfo, data) {
                                const expandedFilters = [];
                                const groups = options.group || [];
                                (0, _iterator.each)(expandedInfo.paths, (_, expandedPath) => {
                                    expandedFilters.push((0, _m_utils.createGroupFilter)(expandedPath, {
                                        group: options.isCustomLoading ? options.storeLoadOptions.group : groups
                                    }))
                                });
                                let {
                                    filter: filter
                                } = options.storeLoadOptions;
                                if (!options.storeLoadOptions.isLoadingAll) {
                                    filter = _m_core.default.combineFilters([filter, _m_core.default.combineFilters(expandedFilters, "or")])
                                }
                                const loadOptions = (0, _extend.extend)({}, options.storeLoadOptions, {
                                    requireTotalCount: false,
                                    requireGroupCount: false,
                                    group: null,
                                    sort: groups.concat(_m_core.default.normalizeSortingInfo(options.storeLoadOptions.sort || [])),
                                    filter: filter
                                });
                                const isPagingLocal = that._dataSource.isLastLevelGroupItemsPagingLocal();
                                if (!isPagingLocal) {
                                    loadOptions.skip = expandedInfo.skip;
                                    loadOptions.take = expandedInfo.take
                                }(0, _deferred.when)(0 === expandedInfo.take ? [] : that._dataSource.loadFromStore(loadOptions)).done(items => {
                                    if (isPagingLocal) {
                                        items = that._dataSource.sortLastLevelGroupItems(items, groups, expandedInfo.paths);
                                        items = expandedInfo.skip ? items.slice(expandedInfo.skip) : items;
                                        items = expandedInfo.take ? items.slice(0, expandedInfo.take) : items
                                    }(0, _iterator.each)(expandedInfo.items, (index, item) => {
                                        const itemCount = item.count - (0 === index && expandedInfo.skip || 0);
                                        const expandedItems = items.splice(0, itemCount);
                                        applyContinuationToGroupItem(options, expandedInfo, groups.length - 1, index);
                                        item.items = expandedItems
                                    });
                                    options.data.resolve(data)
                                }).fail(options.data.reject)
                            }(that, options, expandedInfo, data)
                        } else if (isDataDeferred(options.data)) {
                            options.data.resolve(data)
                        }
                    }
                    const loadGroupTotalCount = function(dataSource, options) {
                        const d = new _deferred.Deferred;
                        const isGrouping = !!(options.group && options.group.length);
                        const loadOptions = (0, _extend.extend)({
                            skip: 0,
                            take: 1,
                            requireGroupCount: isGrouping,
                            requireTotalCount: !isGrouping
                        }, options, {
                            group: isGrouping ? options.group : null
                        });
                        dataSource.load(loadOptions).done((data, extra) => {
                            const count = extra && (isGrouping ? extra.groupCount : extra.totalCount);
                            if (!isFinite(count)) {
                                d.reject(_errors.errors.Error(isGrouping ? "E4022" : "E4021"));
                                return
                            }
                            d.resolve(count)
                        }).fail(d.reject.bind(d));
                        return d
                    };
                    return {
                        updateTotalItemsCount(options) {
                            let totalItemsCount = 0;
                            const totalCount = options.extra && options.extra.totalCount || 0;
                            const groupCount = options.extra && options.extra.groupCount || 0;
                            const pageSize = this._dataSource.pageSize();
                            const isVirtualPaging = this._isVirtualPaging();
                            foreachExpandedGroups(this, groupInfo => {
                                groupInfo.childrenTotalCount = 0
                            });
                            foreachExpandedGroups(this, (groupInfo, parents) => {
                                const totalOffset = getTotalOffset(parents, isVirtualPaging ? 0 : pageSize, totalItemsCount);
                                let count = groupInfo.count + groupInfo.childrenTotalCount;
                                if (!isVirtualPaging) {
                                    count += getContinuationGroupCount(totalOffset, pageSize, count, parents.length - 1)
                                }
                                if (parents[parents.length - 2]) {
                                    parents[parents.length - 2].childrenTotalCount += count
                                } else {
                                    totalItemsCount += count
                                }
                            });
                            this.callBase(totalItemsCount - totalCount + groupCount)
                        },
                        _isGroupExpanded(groupIndex) {
                            const groups = this._dataSource.group();
                            return isGroupExpanded(groups, groupIndex)
                        },
                        _updatePagingOptions(options, callback) {
                            const that = this;
                            const isVirtualPaging = that._isVirtualPaging();
                            const pageSize = that._dataSource.pageSize();
                            const skips = [];
                            const takes = [];
                            let skipChildrenTotalCount = 0;
                            let childrenTotalCount = 0;
                            if (options.take) {
                                foreachExpandedGroups(this, groupInfo => {
                                    groupInfo.childrenTotalCount = 0;
                                    groupInfo.skipChildrenTotalCount = 0
                                });
                                foreachExpandedGroups(that, (groupInfo, parents) => {
                                    let take;
                                    let takeCorrection = 0;
                                    let parentTakeCorrection = 0;
                                    const totalOffset = getTotalOffset(parents, isVirtualPaging ? 0 : pageSize, childrenTotalCount);
                                    let continuationGroupCount = 0;
                                    let skipContinuationGroupCount = 0;
                                    let groupInfoCount = groupInfo.count + groupInfo.childrenTotalCount;
                                    let childrenGroupInfoCount = groupInfoCount;
                                    callback && callback(groupInfo, totalOffset);
                                    const skip = options.skip - totalOffset;
                                    if (totalOffset <= options.skip + options.take && groupInfoCount) {
                                        take = options.take;
                                        if (!isVirtualPaging) {
                                            continuationGroupCount = getContinuationGroupCount(totalOffset, pageSize, groupInfoCount, parents.length - 1);
                                            groupInfoCount += continuationGroupCount * parents.length;
                                            childrenGroupInfoCount += continuationGroupCount;
                                            if (pageSize && skip >= 0) {
                                                takeCorrection = parents.length;
                                                parentTakeCorrection = parents.length - 1;
                                                skipContinuationGroupCount = Math.floor(skip / pageSize)
                                            }
                                        }
                                        if (skip >= 0) {
                                            if (totalOffset + groupInfoCount > options.skip) {
                                                skips.unshift(skip - skipContinuationGroupCount * takeCorrection - groupInfo.skipChildrenTotalCount)
                                            }
                                            if (totalOffset + groupInfoCount >= options.skip + take) {
                                                takes.unshift(take - takeCorrection - groupInfo.childrenTotalCount + groupInfo.skipChildrenTotalCount)
                                            }
                                        } else if (totalOffset + groupInfoCount >= options.skip + take) {
                                            takes.unshift(take + skip - groupInfo.childrenTotalCount)
                                        }
                                    }
                                    if (totalOffset <= options.skip) {
                                        if (parents[parents.length - 2]) {
                                            parents[parents.length - 2].skipChildrenTotalCount += Math.min(childrenGroupInfoCount, skip + 1 - skipContinuationGroupCount * parentTakeCorrection)
                                        } else {
                                            skipChildrenTotalCount += Math.min(childrenGroupInfoCount, skip + 1)
                                        }
                                    }
                                    if (totalOffset <= options.skip + take) {
                                        groupInfoCount = Math.min(childrenGroupInfoCount, skip + take - (skipContinuationGroupCount + 1) * parentTakeCorrection);
                                        if (parents[parents.length - 2]) {
                                            parents[parents.length - 2].childrenTotalCount += groupInfoCount
                                        } else {
                                            childrenTotalCount += groupInfoCount
                                        }
                                    }
                                });
                                options.skip -= skipChildrenTotalCount;
                                options.take -= childrenTotalCount - skipChildrenTotalCount
                            }
                            options.skips = skips;
                            options.takes = takes
                        },
                        changeRowExpand(path) {
                            const groupInfo = this.findGroupInfo(path);
                            const dataSource = this._dataSource;
                            const remoteGroupPaging = dataSource.remoteOperations().groupPaging;
                            const groups = _m_core.default.normalizeSortingInfo(dataSource.group());
                            if (groupInfo) {
                                groupInfo.isExpanded = !groupInfo.isExpanded;
                                if (remoteGroupPaging && groupInfo.isExpanded && path.length < groups.length) {
                                    return loadGroupTotalCount(dataSource, {
                                        filter: (0, _m_utils.createGroupFilter)(path, {
                                            filter: dataSource.lastLoadOptions().filter,
                                            group: dataSource.group()
                                        }),
                                        group: [groups[path.length]],
                                        select: dataSource.select()
                                    }).done(groupCount => {
                                        groupInfo.count = groupCount
                                    })
                                }
                                return (new _deferred.Deferred).resolve()
                            }
                            return (new _deferred.Deferred).reject()
                        },
                        handleDataLoading(options) {
                            const that = this;
                            const {
                                storeLoadOptions: storeLoadOptions
                            } = options;
                            const groups = _m_core.default.normalizeSortingInfo(storeLoadOptions.group || options.loadOptions.group);
                            if (options.isCustomLoading || !groups.length) {
                                return
                            }
                            if (options.remoteOperations.grouping) {
                                const remotePaging = that._dataSource.remoteOperations().paging;
                                storeLoadOptions.group = _m_core.default.normalizeSortingInfo(storeLoadOptions.group);
                                storeLoadOptions.group.forEach((group, index) => {
                                    const isLastGroup = index === storeLoadOptions.group.length - 1;
                                    group.isExpanded = !remotePaging || !isLastGroup
                                })
                            }
                            options.group = options.group || groups;
                            if (options.remoteOperations.paging) {
                                options.skip = storeLoadOptions.skip;
                                options.take = storeLoadOptions.take;
                                storeLoadOptions.requireGroupCount = true;
                                storeLoadOptions.group = groups.slice(0, 1);
                                that._updatePagingOptions(options);
                                storeLoadOptions.skip = options.skip;
                                storeLoadOptions.take = options.take
                            } else {
                                options.skip = options.loadOptions.skip;
                                options.take = options.loadOptions.take;
                                that._updatePagingOptions(options)
                            }
                        },
                        handleDataLoadedCore(options, callBase) {
                            const that = this;
                            const loadedGroupCount = _m_core.default.normalizeSortingInfo(options.storeLoadOptions.group || options.loadOptions.group).length;
                            const groupCount = options.group ? options.group.length : 0;
                            let totalCount;
                            const expandedInfo = {};
                            if (options.isCustomLoading) {
                                callBase(options);
                                processGroupItems(that, options.data, loadedGroupCount, expandedInfo, [], options.isCustomLoading, options.storeLoadOptions.isLoadingAll)
                            } else {
                                if (!options.remoteOperations.paging) {
                                    that.foreachGroups(groupInfo => {
                                        groupInfo.count = 0
                                    })
                                }
                                totalCount = updateGroupInfos(that, options, options.data, loadedGroupCount);
                                if (totalCount < 0) {
                                    options.data = (new _deferred.Deferred).reject(_ui.default.Error("E1037"));
                                    return
                                }
                                if (!options.remoteOperations.paging) {
                                    if (loadedGroupCount && options.extra && options.loadOptions.requireTotalCount) {
                                        options.extra.totalCount = totalCount;
                                        options.extra.groupCount = options.data.length
                                    }
                                }
                                if (groupCount && options.storeLoadOptions.requireGroupCount && !isFinite(options.extra.groupCount)) {
                                    options.data = (new _deferred.Deferred).reject(_errors.errors.Error("E4022"));
                                    return
                                }
                                that.updateTotalItemsCount(options);
                                if (!options.remoteOperations.paging) {
                                    that._updatePagingOptions(options);
                                    options.lastLoadOptions.skips = options.skips;
                                    options.lastLoadOptions.takes = options.takes
                                }
                                callBase(options);
                                if (!options.remoteOperations.paging) {
                                    that._processPaging(options, loadedGroupCount)
                                }
                            }
                            loadGroupItems(that, options, loadedGroupCount, expandedInfo, 0, options.data)
                        },
                        _processSkips(items, skips, groupCount) {
                            if (!groupCount) {
                                return
                            }
                            const firstItem = items[0];
                            const skip = skips[0];
                            const children = firstItem && firstItem.items;
                            if (void 0 !== skip) {
                                firstItem.isContinuation = true;
                                if (children) {
                                    firstItem.items = children.slice(skip);
                                    this._processSkips(firstItem.items, skips.slice(1), groupCount - 1)
                                }
                            }
                        },
                        _processTakes(items, skips, takes, groupCount, parents) {
                            if (!groupCount || !items) {
                                return
                            }
                            parents = parents || [];
                            const lastItem = items[items.length - 1];
                            let children = lastItem && lastItem.items;
                            const take = takes[0];
                            const skip = skips[0];
                            if (lastItem) {
                                const maxTakeCount = lastItem.count - (lastItem.isContinuation && skip || 0) || children.length;
                                if (void 0 !== take && maxTakeCount > take) {
                                    lastItem.isContinuationOnNextPage = true;
                                    parents.forEach(parent => {
                                        parent.isContinuationOnNextPage = true
                                    });
                                    if (children) {
                                        children = children.slice(0, take);
                                        lastItem.items = children
                                    }
                                }
                                parents.push(lastItem);
                                this._processTakes(children, skips.slice(1), takes.slice(1), groupCount - 1, parents)
                            }
                        },
                        _processPaging(options, groupCount) {
                            this._processSkips(options.data, options.skips, groupCount);
                            this._processTakes(options.data, options.skips, options.takes, groupCount)
                        },
                        isLastLevelGroupItemsPagingLocal: () => false,
                        sortLastLevelGroupItems: items => items,
                        refresh(options, operationTypes) {
                            const that = this;
                            const dataSource = that._dataSource;
                            const {
                                storeLoadOptions: storeLoadOptions
                            } = options;
                            const group = options.group || options.storeLoadOptions.group;
                            const oldGroups = _m_core.default.normalizeSortingInfo(that._group);
                            let isExpanded;
                            let groupIndex;

                            function handleGroup(groupInfo, parents) {
                                if (parents.length === groupIndex + 1) {
                                    groupInfo.isExpanded = isExpanded
                                }
                            }
                            for (groupIndex = 0; groupIndex < oldGroups.length; groupIndex++) {
                                isExpanded = isGroupExpanded(group, groupIndex);
                                if (isGroupExpanded(that._group, groupIndex) !== isExpanded) {
                                    that.foreachGroups(handleGroup)
                                }
                            }
                            that.callBase.apply(this, arguments);
                            if (group && options.remoteOperations.paging && operationTypes.reload) {
                                return foreachExpandedGroups(that, groupInfo => {
                                    const groupCountQuery = loadGroupTotalCount(dataSource, {
                                        filter: (0, _m_utils.createGroupFilter)(groupInfo.path, {
                                            filter: storeLoadOptions.filter,
                                            group: group
                                        }),
                                        group: group.slice(groupInfo.path.length),
                                        select: storeLoadOptions.select
                                    });
                                    const groupOffsetQuery = loadGroupTotalCount(dataSource, {
                                        filter: (0, _m_grouping_core.createOffsetFilter)(groupInfo.path, {
                                            filter: storeLoadOptions.filter,
                                            group: group
                                        }, true),
                                        group: group.slice(groupInfo.path.length - 1, groupInfo.path.length),
                                        select: storeLoadOptions.select
                                    });
                                    return (0, _deferred.when)(groupOffsetQuery, groupCountQuery).done((offset, count) => {
                                        offset = parseInt(offset.length ? offset[0] : offset);
                                        count = parseInt(count.length ? count[0] : count);
                                        groupInfo.offset = offset;
                                        if (groupInfo.count !== count) {
                                            groupInfo.count = count;
                                            that.updateTotalItemsCount(options)
                                        }
                                    })
                                }, true)
                            }
                        }
                    }
                }());
                exports.GroupingHelper = GroupingHelper
            },
        8748:
            /*!****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/grouping/m_grouping_core.js ***!
              \****************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.GroupingHelper = void 0;
                exports.createOffsetFilter = function(path, storeLoadOptions, lastLevelOnly) {
                    const groups = (0, _utils.normalizeSortingInfo)(storeLoadOptions.group);
                    let filter = [];
                    for (let i = lastLevelOnly ? path.length - 1 : 0; i < path.length; i++) {
                        const filterElement = [];
                        for (let j = 0; j <= i; j++) {
                            const {
                                selector: selector
                            } = groups[j];
                            if (i === j && (null === path[j] || false === path[j] || true === path[j])) {
                                if (false === path[j]) {
                                    filterElement.push([selector, "=", groups[j].desc ? true : null])
                                } else if (path[j] ? !groups[j].desc : groups[j].desc) {
                                    filterElement.push([selector, "<>", path[j]])
                                } else {
                                    filterElement.push([selector, "<>", null]);
                                    filterElement.push([selector, "=", null])
                                }
                            } else {
                                const currentFilter = [selector, i === j ? groups[j].desc ? ">" : "<" : "=", path[j]];
                                if ("<" === currentFilter[1]) {
                                    filterElement.push([currentFilter, "or", [selector, "=", null]])
                                } else {
                                    filterElement.push(currentFilter)
                                }
                            }
                        }
                        filter.push(_m_core.default.combineFilters(filterElement))
                    }
                    filter = _m_core.default.combineFilters(filter, "or");
                    return _m_core.default.combineFilters([filter, storeLoadOptions.filter])
                };
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../../../core/class */ 38377));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _utils = __webpack_require__( /*! ../../../../data/utils */ 16454);
                var _m_core = _interopRequireDefault(__webpack_require__( /*! ../m_core */ 74938));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const GroupingHelper = _class.default.inherit(function() {
                    const findGroupInfoByKey = function(groupsInfo, key) {
                        const {
                            hash: hash
                        } = groupsInfo;
                        return hash && hash[JSON.stringify(key)]
                    };
                    const getGroupInfoIndexByOffset = function(groupsInfo, offset) {
                        let leftIndex = 0;
                        let rightIndex = groupsInfo.length - 1;
                        if (!groupsInfo.length) {
                            return 0
                        }
                        do {
                            const middleIndex = rightIndex + leftIndex >> 1;
                            if (groupsInfo[middleIndex].offset > offset) {
                                rightIndex = middleIndex
                            } else {
                                leftIndex = middleIndex
                            }
                        } while (rightIndex - leftIndex > 1);
                        let index;
                        for (index = leftIndex; index <= rightIndex; index++) {
                            if (groupsInfo[index].offset > offset) {
                                break
                            }
                        }
                        return index
                    };
                    const cleanGroupsInfo = function(groupsInfo, groupIndex, groupsCount) {
                        for (let i = 0; i < groupsInfo.length; i++) {
                            if (groupIndex + 1 >= groupsCount) {
                                groupsInfo[i].children = []
                            } else {
                                cleanGroupsInfo(groupsInfo[i].children, groupIndex + 1, groupsCount)
                            }
                        }
                    };
                    const calculateItemsCount = function(that, items, groupsCount) {
                        let result = 0;
                        if (items) {
                            if (!groupsCount) {
                                result = items.length
                            } else {
                                for (let i = 0; i < items.length; i++) {
                                    if (that.isGroupItemCountable(items[i])) {
                                        result++
                                    }
                                    result += calculateItemsCount(that, items[i].items, groupsCount - 1)
                                }
                            }
                        }
                        return result
                    };
                    return {
                        ctor(dataSourceAdapter) {
                            this._dataSource = dataSourceAdapter;
                            this.reset()
                        },
                        reset() {
                            this._groupsInfo = [];
                            this._totalCountCorrection = 0
                        },
                        totalCountCorrection() {
                            return this._totalCountCorrection
                        },
                        updateTotalItemsCount(totalCountCorrection) {
                            this._totalCountCorrection = totalCountCorrection || 0
                        },
                        isGroupItemCountable(item) {
                            return !this._isVirtualPaging() || !item.isContinuation
                        },
                        _isVirtualPaging() {
                            const scrollingMode = this._dataSource.option("scrolling.mode");
                            return "virtual" === scrollingMode || "infinite" === scrollingMode
                        },
                        itemsCount() {
                            const dataSourceAdapter = this._dataSource;
                            const dataSource = dataSourceAdapter._dataSource;
                            const groupCount = _m_core.default.normalizeSortingInfo(dataSource.group() || []).length;
                            const itemsCount = calculateItemsCount(this, dataSource.items(), groupCount);
                            return itemsCount
                        },
                        foreachGroups(callback, childrenAtFirst, foreachCollapsedGroups, updateOffsets, updateParentOffsets) {
                            const that = this;
                            return function foreachGroupsCore(groupsInfo, callback, childrenAtFirst, parents) {
                                const callbackResults = [];

                                function executeCallback(callback, data, parents, callbackResults) {
                                    const callbackResult = data && callback(data, parents);
                                    callbackResult && callbackResults.push(callbackResult);
                                    return callbackResult
                                }
                                for (let i = 0; i < groupsInfo.length; i++) {
                                    parents.push(groupsInfo[i].data);
                                    if (!childrenAtFirst && false === executeCallback(callback, groupsInfo[i].data, parents, callbackResults)) {
                                        return false
                                    }
                                    if (!groupsInfo[i].data || groupsInfo[i].data.isExpanded || foreachCollapsedGroups) {
                                        const {
                                            children: children
                                        } = groupsInfo[i];
                                        const callbackResult = children.length && foreachGroupsCore(children, callback, childrenAtFirst, parents);
                                        callbackResult && callbackResults.push(callbackResult);
                                        if (false === callbackResult) {
                                            return false
                                        }
                                    }
                                    if (childrenAtFirst && false === executeCallback(callback, groupsInfo[i].data, parents, callbackResults)) {
                                        return false
                                    }
                                    if (!groupsInfo[i].data || groupsInfo[i].data.offset !== groupsInfo[i].offset) {
                                        updateOffsets = true
                                    }
                                    parents.pop()
                                }
                                const currentParents = updateParentOffsets && parents.slice(0);
                                return updateOffsets && _deferred.when.apply(_renderer.default, callbackResults).always(() => {
                                    that._updateGroupInfoOffsets(groupsInfo, currentParents)
                                })
                            }(that._groupsInfo, callback, childrenAtFirst, [])
                        },
                        _updateGroupInfoOffsets(groupsInfo, parents) {
                            parents = parents || [];
                            for (let index = 0; index < groupsInfo.length; index++) {
                                const groupInfo = groupsInfo[index];
                                if (groupInfo.data && groupInfo.data.offset !== groupInfo.offset) {
                                    groupInfo.offset = groupInfo.data.offset;
                                    for (let parentIndex = 0; parentIndex < parents.length; parentIndex++) {
                                        parents[parentIndex].offset = groupInfo.offset
                                    }
                                }
                            }
                            groupsInfo.sort((a, b) => a.offset - b.offset)
                        },
                        findGroupInfo(path) {
                            let groupInfo;
                            let groupsInfo = this._groupsInfo;
                            for (let pathIndex = 0; groupsInfo && pathIndex < path.length; pathIndex++) {
                                groupInfo = findGroupInfoByKey(groupsInfo, path[pathIndex]);
                                groupsInfo = groupInfo && groupInfo.children
                            }
                            return groupInfo && groupInfo.data
                        },
                        addGroupInfo(groupInfoData) {
                            const that = this;
                            let groupInfo;
                            const {
                                path: path
                            } = groupInfoData;
                            let groupsInfo = that._groupsInfo;
                            for (let pathIndex = 0; pathIndex < path.length; pathIndex++) {
                                groupInfo = findGroupInfoByKey(groupsInfo, path[pathIndex]);
                                if (!groupInfo) {
                                    groupInfo = {
                                        key: path[pathIndex],
                                        offset: groupInfoData.offset,
                                        data: {
                                            offset: groupInfoData.offset,
                                            isExpanded: true,
                                            path: path.slice(0, pathIndex + 1)
                                        },
                                        children: []
                                    };
                                    const index = getGroupInfoIndexByOffset(groupsInfo, groupInfoData.offset);
                                    groupsInfo.splice(index, 0, groupInfo);
                                    groupsInfo.hash = groupsInfo.hash || {};
                                    groupsInfo.hash[JSON.stringify(groupInfo.key)] = groupInfo
                                }
                                if (pathIndex === path.length - 1) {
                                    groupInfo.data = groupInfoData;
                                    if (groupInfo.offset !== groupInfoData.offset) {
                                        that._updateGroupInfoOffsets(groupsInfo)
                                    }
                                }
                                groupsInfo = groupInfo.children
                            }
                        },
                        allowCollapseAll: () => true,
                        refresh(options) {
                            const that = this;
                            const {
                                storeLoadOptions: storeLoadOptions
                            } = options;
                            const groups = (0, _utils.normalizeSortingInfo)(storeLoadOptions.group || []);
                            const oldGroups = "_group" in that ? (0, _utils.normalizeSortingInfo)(that._group || []) : groups;
                            let groupsCount = Math.min(oldGroups.length, groups.length);
                            that._group = storeLoadOptions.group;
                            for (let groupIndex = 0; groupIndex < groupsCount; groupIndex++) {
                                if (oldGroups[groupIndex].selector !== groups[groupIndex].selector) {
                                    groupsCount = groupIndex;
                                    break
                                }
                            }
                            if (!groupsCount) {
                                that.reset()
                            } else {
                                cleanGroupsInfo(that._groupsInfo, 0, groupsCount)
                            }
                        },
                        handleDataLoading() {},
                        handleDataLoaded(options, callBase) {
                            callBase(options)
                        },
                        handleDataLoadedCore(options, callBase) {
                            callBase(options)
                        }
                    }
                }());
                exports.GroupingHelper = GroupingHelper
            },
        4789:
            /*!********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/grouping/m_grouping_expanded.js ***!
              \********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.GroupingHelper = void 0;
                var _data = __webpack_require__( /*! ../../../../core/utils/data */ 47617);
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _query = _interopRequireDefault(__webpack_require__( /*! ../../../../data/query */ 96687));
                var _store_helper = _interopRequireDefault(__webpack_require__( /*! ../../../../data/store_helper */ 99236));
                var _utils = __webpack_require__( /*! ../../../../data/utils */ 16454);
                var _m_core = _interopRequireDefault(__webpack_require__( /*! ../m_core */ 74938));
                var _m_utils = __webpack_require__( /*! ../m_utils */ 10087);
                var _m_grouping_core = __webpack_require__( /*! ./m_grouping_core */ 8748);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const loadTotalCount = function(dataSource, options) {
                    const d = new _deferred.Deferred;
                    const loadOptions = (0, _extend.extend)({
                        skip: 0,
                        take: 1,
                        requireTotalCount: true
                    }, options);
                    dataSource.load(loadOptions).done((data, extra) => {
                        d.resolve(extra && extra.totalCount)
                    }).fail(d.reject.bind(d));
                    return d
                };
                const GroupingHelper = _m_grouping_core.GroupingHelper.inherit(function() {
                    const foreachCollapsedGroups = function(that, callback, updateOffsets) {
                        return that.foreachGroups(groupInfo => {
                            if (!groupInfo.isExpanded) {
                                return callback(groupInfo)
                            }
                        }, false, false, updateOffsets, true)
                    };
                    const correctSkipLoadOption = function(that, skip) {
                        let skipCorrection = 0;
                        let resultSkip = skip || 0;
                        if (skip) {
                            foreachCollapsedGroups(that, groupInfo => {
                                if (groupInfo.offset - skipCorrection >= skip) {
                                    return false
                                }
                                skipCorrection += groupInfo.count - 1
                            });
                            resultSkip += skipCorrection
                        }
                        return resultSkip
                    };
                    const processGroupItems = function(that, items, path, offset, skipFirstItem, take) {
                        let removeLastItemsCount = 0;
                        let needRemoveFirstItem = false;
                        for (let i = 0; i < items.length; i++) {
                            const item = items[i];
                            if (void 0 !== item.items) {
                                path.push(item.key);
                                const groupInfo = that.findGroupInfo(path);
                                if (groupInfo && !groupInfo.isExpanded) {
                                    item.collapsedItems = item.items;
                                    item.items = null;
                                    offset += groupInfo.count;
                                    take--;
                                    if (take < 0) {
                                        removeLastItemsCount++
                                    }
                                    if (skipFirstItem) {
                                        needRemoveFirstItem = true
                                    }
                                } else if (item.items) {
                                    const offsetInfo = processGroupItems(that, item.items, path, offset, skipFirstItem, take);
                                    if (skipFirstItem) {
                                        if (offsetInfo.offset - offset > 1) {
                                            item.isContinuation = true
                                        } else {
                                            needRemoveFirstItem = true
                                        }
                                    }
                                    offset = offsetInfo.offset;
                                    take = offsetInfo.take;
                                    if (take < 0) {
                                        if (item.items.length) {
                                            item.isContinuationOnNextPage = true
                                        } else {
                                            removeLastItemsCount++
                                        }
                                    }
                                }
                                path.pop()
                            } else {
                                if (skipFirstItem) {
                                    needRemoveFirstItem = true
                                }
                                offset++;
                                take--;
                                if (take < 0) {
                                    removeLastItemsCount++
                                }
                            }
                            skipFirstItem = false
                        }
                        if (needRemoveFirstItem) {
                            items.splice(0, 1)
                        }
                        if (removeLastItemsCount) {
                            items.splice(-removeLastItemsCount, removeLastItemsCount)
                        }
                        return {
                            offset: offset,
                            take: take
                        }
                    };
                    const pathEquals = function(path1, path2) {
                        if (path1.length !== path2.length) {
                            return false
                        }
                        for (let i = 0; i < path1.length; i++) {
                            if (!(0, _utils.keysEqual)(null, path1[i], path2[i])) {
                                return false
                            }
                        }
                        return true
                    };
                    const updateGroupOffsets = function(that, items, path, offset, additionalGroupInfo) {
                        if (!items) {
                            return
                        }
                        for (let i = 0; i < items.length; i++) {
                            const item = items[i];
                            if ("key" in item && void 0 !== item.items) {
                                path.push(item.key);
                                if (additionalGroupInfo && pathEquals(additionalGroupInfo.path, path) && !item.isContinuation) {
                                    additionalGroupInfo.offset = offset
                                }
                                const groupInfo = that.findGroupInfo(path);
                                if (groupInfo && !item.isContinuation) {
                                    groupInfo.offset = offset
                                }
                                if (groupInfo && !groupInfo.isExpanded) {
                                    offset += groupInfo.count
                                } else {
                                    offset = updateGroupOffsets(that, item.items, path, offset, additionalGroupInfo)
                                }
                                path.pop()
                            } else {
                                offset++
                            }
                        }
                        return offset
                    };
                    const getGroupCount = function(item, groupCount) {
                        let count = item.count || item.items.length;
                        if (!item.count && groupCount > 1) {
                            count = 0;
                            for (let i = 0; i < item.items.length; i++) {
                                count += getGroupCount(item.items[i], groupCount - 1)
                            }
                        }
                        return count
                    };
                    return {
                        handleDataLoading(options) {
                            const {
                                storeLoadOptions: storeLoadOptions
                            } = options;
                            const collapsedGroups = [];
                            let collapsedItemsCount = 0;
                            let skipFirstItem = false;
                            let take;
                            const {
                                group: group
                            } = options.loadOptions;
                            let skipCorrection = 0;
                            ! function(storeLoadOptions, loadOptions) {
                                if (loadOptions.group) {
                                    const groups = _m_core.default.normalizeSortingInfo(loadOptions.group);
                                    const sorts = _m_core.default.normalizeSortingInfo(storeLoadOptions.sort);
                                    storeLoadOptions.sort = _store_helper.default.arrangeSortingInfo(groups, sorts);
                                    delete loadOptions.group
                                }
                            }(storeLoadOptions, options.loadOptions);
                            options.group = options.group || group;
                            if (options.isCustomLoading) {
                                return
                            }
                            const loadOptions = (0, _extend.extend)({}, storeLoadOptions);
                            loadOptions.skip = correctSkipLoadOption(this, storeLoadOptions.skip);
                            if (loadOptions.skip && loadOptions.take && group) {
                                loadOptions.skip--;
                                loadOptions.take++;
                                skipFirstItem = true
                            }
                            if (loadOptions.take && group) {
                                take = loadOptions.take;
                                loadOptions.take++
                            }
                            foreachCollapsedGroups(this, groupInfo => {
                                if (groupInfo.offset >= loadOptions.skip + loadOptions.take + skipCorrection) {
                                    return false
                                }
                                if (groupInfo.offset >= loadOptions.skip + skipCorrection && groupInfo.count) {
                                    skipCorrection += groupInfo.count - 1;
                                    collapsedGroups.push(groupInfo);
                                    collapsedItemsCount += groupInfo.count
                                }
                            });
                            (0, _iterator.each)(collapsedGroups, (function() {
                                loadOptions.filter = function(path, storeLoadOptions, group) {
                                    const groups = _m_core.default.normalizeSortingInfo(group || storeLoadOptions.group);
                                    let filter = [];
                                    for (let i = 0; i < path.length; i++) {
                                        const filterElement = [];
                                        for (let j = 0; j <= i; j++) {
                                            filterElement.push([groups[j].selector, i === j ? "<>" : "=", path[j]])
                                        }
                                        filter.push(_m_core.default.combineFilters(filterElement))
                                    }
                                    filter = _m_core.default.combineFilters(filter, "or");
                                    return _m_core.default.combineFilters([filter, storeLoadOptions.filter])
                                }(this.path, loadOptions, group)
                            }));
                            options.storeLoadOptions = loadOptions;
                            options.collapsedGroups = collapsedGroups;
                            options.collapsedItemsCount = collapsedItemsCount;
                            options.skip = loadOptions.skip || 0;
                            options.skipFirstItem = skipFirstItem;
                            options.take = take
                        },
                        handleDataLoaded(options, callBase) {
                            const that = this;
                            const {
                                collapsedGroups: collapsedGroups
                            } = options;
                            const groups = _m_core.default.normalizeSortingInfo(options.group);
                            const groupCount = groups.length;

                            function appendCollapsedPath(data, path, groups, collapsedGroup, offset) {
                                if (!data || !path.length || !groups.length) {
                                    return
                                }
                                let keyValue;
                                let i;
                                const pathValue = (0, _data.toComparable)(path[0], true);
                                for (i = 0; i < data.length; i++) {
                                    keyValue = (0, _data.toComparable)(data[i].key, true);
                                    if (offset >= collapsedGroup.offset || pathValue === keyValue) {
                                        break
                                    } else {
                                        offset += getGroupCount(data[i], groups.length)
                                    }
                                }
                                if (!data.length || pathValue !== keyValue) {
                                    data.splice(i, 0, {
                                        key: path[0],
                                        items: [],
                                        count: 1 === path.length ? collapsedGroup.count : void 0
                                    })
                                }
                                appendCollapsedPath(data[i].items, path.slice(1), groups.slice(1), collapsedGroup, offset)
                            }
                            if (options.collapsedItemsCount && options.extra && options.extra.totalCount >= 0) {
                                if (!options.extra._totalCountWasIncreasedByCollapsedItems) {
                                    options.extra.totalCount += options.collapsedItemsCount;
                                    options.extra._totalCountWasIncreasedByCollapsedItems = true
                                }
                            }
                            callBase(options);
                            if (groupCount) {
                                let {
                                    data: data
                                } = options;
                                const query = (0, _query.default)(data);
                                _store_helper.default.multiLevelGroup(query, groups).enumerate().done(groupedData => {
                                    data = groupedData
                                });
                                if (collapsedGroups) {
                                    for (let pathIndex = 0; pathIndex < collapsedGroups.length; pathIndex++) {
                                        appendCollapsedPath(data, collapsedGroups[pathIndex].path, groups, collapsedGroups[pathIndex], options.skip)
                                    }
                                }
                                if (!options.isCustomLoading) {
                                    processGroupItems(that, data, [], options.skip, options.skipFirstItem, options.take)
                                }
                                options.data = data
                            }
                        },
                        isGroupItemCountable: item => null === item.items,
                        updateTotalItemsCount() {
                            let itemsCountCorrection = 0;
                            foreachCollapsedGroups(this, groupInfo => {
                                if (groupInfo.count) {
                                    itemsCountCorrection -= groupInfo.count - 1
                                }
                            });
                            this.callBase(itemsCountCorrection)
                        },
                        changeRowExpand(path) {
                            const that = this;
                            const dataSource = that._dataSource;
                            const beginPageIndex = dataSource.beginPageIndex ? dataSource.beginPageIndex() : dataSource.pageIndex();
                            const dataSourceItems = dataSource.items();
                            const offset = correctSkipLoadOption(that, beginPageIndex * dataSource.pageSize());
                            let groupInfo = that.findGroupInfo(path);
                            let groupCountQuery;
                            if (groupInfo && !groupInfo.isExpanded) {
                                groupCountQuery = (new _deferred.Deferred).resolve(groupInfo.count)
                            } else {
                                groupCountQuery = loadTotalCount(dataSource, {
                                    filter: (0, _m_utils.createGroupFilter)(path, {
                                        filter: dataSource.filter(),
                                        group: dataSource.group()
                                    })
                                })
                            }
                            return (0, _deferred.when)(groupCountQuery).done(count => {
                                count = parseInt(count.length ? count[0] : count);
                                if (groupInfo) {
                                    updateGroupOffsets(that, dataSourceItems, [], offset);
                                    groupInfo.isExpanded = !groupInfo.isExpanded;
                                    groupInfo.count = count
                                } else {
                                    groupInfo = {
                                        offset: -1,
                                        count: count,
                                        path: path,
                                        isExpanded: false
                                    };
                                    updateGroupOffsets(that, dataSourceItems, [], offset, groupInfo);
                                    if (groupInfo.offset >= 0) {
                                        that.addGroupInfo(groupInfo)
                                    }
                                }
                                that.updateTotalItemsCount()
                            }).fail((function() {
                                dataSource._eventsStrategy.fireEvent("loadError", arguments)
                            }))
                        },
                        allowCollapseAll: () => false,
                        refresh(options, operationTypes) {
                            const that = this;
                            const {
                                storeLoadOptions: storeLoadOptions
                            } = options;
                            const dataSource = that._dataSource;
                            this.callBase.apply(this, arguments);
                            if (operationTypes.reload) {
                                return foreachCollapsedGroups(that, groupInfo => {
                                    const groupCountQuery = loadTotalCount(dataSource, {
                                        filter: (0, _m_utils.createGroupFilter)(groupInfo.path, storeLoadOptions)
                                    });
                                    const groupOffsetQuery = loadTotalCount(dataSource, {
                                        filter: (0, _m_grouping_core.createOffsetFilter)(groupInfo.path, storeLoadOptions)
                                    });
                                    return (0, _deferred.when)(groupOffsetQuery, groupCountQuery).done((offset, count) => {
                                        offset = parseInt(offset.length ? offset[0] : offset);
                                        count = parseInt(count.length ? count[0] : count);
                                        groupInfo.offset = offset;
                                        if (groupInfo.count !== count) {
                                            groupInfo.count = count;
                                            that.updateTotalItemsCount()
                                        }
                                    })
                                }, true)
                            }
                        }
                    }
                }());
                exports.GroupingHelper = GroupingHelper
            },
        29593:
            /*!**************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/m_aggregate_calculator.js ***!
              \**************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _class = (obj = __webpack_require__( /*! ../../../core/class */ 38377), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _data = __webpack_require__( /*! ../../../core/utils/data */ 47617);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _errors = __webpack_require__( /*! ../../../data/errors */ 18438);
                var _utils = __webpack_require__( /*! ../../../data/utils */ 16454);

                function depthFirstSearch(i, depth, root, callback) {
                    let j = 0;
                    if (i < depth) {
                        for (; j < root.items.length; j++) {
                            depthFirstSearch(i + 1, depth, root.items[j], callback)
                        }
                    }
                    if (i === depth) {
                        callback(root)
                    }
                }

                function map(array, callback) {
                    let i;
                    if ("map" in array) {
                        return array.map(callback)
                    }
                    const result = new Array(array.length);
                    for (i in array) {
                        result[i] = callback(array[i], i)
                    }
                    return result
                }

                function normalizeAggregate(aggregate) {
                    const selector = (0, _data.compileGetter)(aggregate.selector);
                    const skipEmptyValues = "skipEmptyValues" in aggregate ? aggregate.skipEmptyValues : true;
                    let {
                        aggregator: aggregator
                    } = aggregate;
                    if ("string" === typeof aggregator) {
                        aggregator = _utils.aggregators[aggregator];
                        if (!aggregator) {
                            throw _errors.errors.Error("E4001", aggregate.aggregator)
                        }
                    }
                    return {
                        selector: selector,
                        aggregator: aggregator,
                        skipEmptyValues: skipEmptyValues
                    }
                }
                var _default = _class.default.inherit({
                    ctor(options) {
                        this._data = options.data;
                        this._groupLevel = options.groupLevel || 0;
                        this._totalAggregates = map(options.totalAggregates || [], normalizeAggregate);
                        this._groupAggregates = map(options.groupAggregates || [], normalizeAggregate);
                        this._totals = []
                    },
                    calculate() {
                        if (this._totalAggregates.length) {
                            this._calculateTotals(0, {
                                items: this._data
                            })
                        }
                        if (this._groupAggregates.length && this._groupLevel > 0) {
                            this._calculateGroups({
                                items: this._data
                            })
                        }
                    },
                    totalAggregates() {
                        return this._totals
                    },
                    _aggregate(aggregates, data, container) {
                        const length = data.items ? data.items.length : 0;
                        for (let i = 0; i < aggregates.length; i++) {
                            if (aggregator = aggregates[i].aggregator, aggregator === _utils.aggregators.count) {
                                container[i] = (container[i] || 0) + length;
                                continue
                            }
                            for (let j = 0; j < length; j++) {
                                this._accumulate(i, aggregates[i], container, data.items[j])
                            }
                        }
                        var aggregator
                    },
                    _calculateTotals(level, data) {
                        if (0 === level) {
                            this._totals = this._seed(this._totalAggregates)
                        }
                        if (level === this._groupLevel) {
                            this._aggregate(this._totalAggregates, data, this._totals)
                        } else {
                            for (let i = 0; i < data.items.length; i++) {
                                this._calculateTotals(level + 1, data.items[i])
                            }
                        }
                        if (0 === level) {
                            this._totals = this._finalize(this._totalAggregates, this._totals)
                        }
                    },
                    _calculateGroups(root) {
                        const maxLevel = this._groupLevel;
                        let currentLevel = maxLevel + 1;
                        const seedFn = this._seed.bind(this, this._groupAggregates);
                        const stepFn = this._aggregate.bind(this, this._groupAggregates);
                        const finalizeFn = this._finalize.bind(this, this._groupAggregates);

                        function aggregator(node) {
                            node.aggregates = seedFn(currentLevel - 1);
                            if (currentLevel === maxLevel) {
                                stepFn(node, node.aggregates)
                            } else {
                                depthFirstSearch(currentLevel, maxLevel, node, innerNode => {
                                    stepFn(innerNode, node.aggregates)
                                })
                            }
                            node.aggregates = finalizeFn(node.aggregates)
                        }
                        while (--currentLevel > 0) {
                            depthFirstSearch(0, currentLevel, root, aggregator)
                        }
                    },
                    _seed: (aggregates, groupIndex) => map(aggregates, aggregate => {
                        const {
                            aggregator: aggregator
                        } = aggregate;
                        const seed = "seed" in aggregator ? (0, _type.isFunction)(aggregator.seed) ? aggregator.seed(groupIndex) : aggregator.seed : NaN;
                        return seed
                    }),
                    _accumulate(aggregateIndex, aggregate, results, item) {
                        const value = aggregate.selector(item);
                        const {
                            aggregator: aggregator
                        } = aggregate;
                        const {
                            skipEmptyValues: skipEmptyValues
                        } = aggregate;
                        if (skipEmptyValues && (x = value, x !== x || "" === x || null === x || void 0 === x)) {
                            return
                        }
                        var x;
                        if (results[aggregateIndex] !== results[aggregateIndex]) {
                            results[aggregateIndex] = value
                        } else {
                            results[aggregateIndex] = aggregator.step(results[aggregateIndex], value)
                        }
                    },
                    _finalize: (aggregates, results) => map(aggregates, (aggregate, index) => {
                        const fin = aggregate.aggregator.finalize;
                        return fin ? fin(results[index]) : results[index]
                    })
                });
                exports.default = _default
            },
        96291:
            /*!************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/m_columns_controller.js ***!
              \************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _m_columns_controller = __webpack_require__( /*! ../../grids/grid_core/columns_controller/m_columns_controller */ 10279);
                var _m_core = (obj = __webpack_require__( /*! ./m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("columns", {
                    defaultOptions: () => (0, _extend.extend)(true, {}, _m_columns_controller.columnsControllerModule.defaultOptions(), {
                        commonColumnSettings: {
                            allowExporting: true
                        }
                    }),
                    controllers: _m_columns_controller.columnsControllerModule.controllers
                })
            },
        74938:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/m_core.js ***!
              \**********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../../grids/grid_core/m_modules */ 15943));
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../../grids/grid_core/m_utils */ 60082));

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                var _default = _extends(_extends(_extends({}, _m_modules.default), _m_utils.default), {
                    modules: []
                });
                exports.default = _default
            },
        3263:
            /*!*********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/m_data_controller.js ***!
              \*********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.DataController = void 0;
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.errors */ 96688));
                var _m_data_controller = __webpack_require__( /*! ../../grids/grid_core/data_controller/m_data_controller */ 72119);
                var _m_core = _interopRequireDefault(__webpack_require__( /*! ./m_core */ 74938));
                var _m_data_source_adapter = _interopRequireDefault(__webpack_require__( /*! ./m_data_source_adapter */ 49975));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                var _a, _b;
                const DataController = null === (_b = null === (_a = _m_data_controller.dataControllerModule.controllers) || void 0 === _a ? void 0 : _a.data) || void 0 === _b ? void 0 : _b.inherit({
                    _getDataSourceAdapter: () => _m_data_source_adapter.default,
                    _getSpecificDataSourceOption() {
                        const dataSource = this.option("dataSource");
                        if (dataSource && !Array.isArray(dataSource) && this.option("keyExpr")) {
                            _ui.default.log("W1011")
                        }
                        return this.callBase()
                    }
                });
                exports.DataController = DataController;
                _m_core.default.registerModule("data", {
                    defaultOptions: _m_data_controller.dataControllerModule.defaultOptions,
                    controllers: {
                        data: DataController
                    }
                })
            },
        49975:
            /*!*************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/m_data_source_adapter.js ***!
              \*************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _m_data_source_adapter = (obj = __webpack_require__( /*! ../../grids/grid_core/data_source_adapter/m_data_source_adapter */ 30945), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                let dataSourceAdapterType = _m_data_source_adapter.default;
                var _default = {
                    extend(extender) {
                        dataSourceAdapterType = dataSourceAdapterType.inherit(extender)
                    },
                    create: component => new dataSourceAdapterType(component)
                };
                exports.default = _default
            },
        26949:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/m_editing.js ***!
              \*************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ./module_not_extended/editor_factory */ 98125);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _m_editing = __webpack_require__( /*! ../../grids/grid_core/editing/m_editing */ 22324);
                var _m_core = (obj = __webpack_require__( /*! ./m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("editing", (0, _extend.extend)(true, {}, _m_editing.editingModule, {
                    extenders: {
                        controllers: {
                            data: {
                                _changeRowExpandCore(key) {
                                    const editingController = this._editingController;
                                    if (Array.isArray(key)) {
                                        editingController && editingController.refresh()
                                    }
                                    return this.callBase.apply(this, arguments)
                                }
                            }
                        }
                    }
                }))
            },
        10087:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/m_utils.js ***!
              \***********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.createGroupFilter = function(path, storeLoadOptions) {
                    const groups = (0, _utils.normalizeSortingInfo)(storeLoadOptions.group);
                    const filter = [];
                    for (let i = 0; i < path.length; i++) {
                        filter.push([groups[i].selector, "=", path[i]])
                    }
                    if (storeLoadOptions.filter) {
                        filter.push(storeLoadOptions.filter)
                    }
                    return _m_utils.default.combineFilters(filter)
                };
                var _utils = __webpack_require__( /*! ../../../data/utils */ 16454);
                var _m_utils = (obj = __webpack_require__( /*! ../../grids/grid_core/m_utils */ 60082), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj
            },
        10590:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/m_widget.js ***!
              \************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _m_widget_base = (obj = __webpack_require__( /*! ./m_widget_base */ 26196), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                __webpack_require__( /*! ./module_not_extended/state_storing */ 97847);
                __webpack_require__( /*! ./module_not_extended/selection */ 86006);
                __webpack_require__( /*! ./module_not_extended/column_chooser */ 17663);
                __webpack_require__( /*! ./grouping/m_grouping */ 72487);
                __webpack_require__( /*! ./module_not_extended/master_detail */ 48190);
                __webpack_require__( /*! ./m_editing */ 26949);
                __webpack_require__( /*! ./module_not_extended/editing_row_based */ 42267);
                __webpack_require__( /*! ./module_not_extended/editing_form_based */ 94585);
                __webpack_require__( /*! ./module_not_extended/editing_cell_based */ 82831);
                __webpack_require__( /*! ./module_not_extended/validating */ 41430);
                __webpack_require__( /*! ./module_not_extended/virtual_scrolling */ 98726);
                __webpack_require__( /*! ./module_not_extended/filter_row */ 34622);
                __webpack_require__( /*! ./module_not_extended/header_filter */ 42595);
                __webpack_require__( /*! ./module_not_extended/filter_sync */ 66551);
                __webpack_require__( /*! ./module_not_extended/filter_builder */ 69566);
                __webpack_require__( /*! ./module_not_extended/filter_panel */ 76568);
                __webpack_require__( /*! ./module_not_extended/search */ 20015);
                __webpack_require__( /*! ./module_not_extended/pager */ 70608);
                __webpack_require__( /*! ./module_not_extended/columns_resizing_reordering */ 53489);
                __webpack_require__( /*! ./module_not_extended/keyboard_navigation */ 28294);
                __webpack_require__( /*! ./summary/m_summary */ 15180);
                __webpack_require__( /*! ./module_not_extended/column_fixing */ 68339);
                __webpack_require__( /*! ./module_not_extended/adaptivity */ 26098);
                __webpack_require__( /*! ./module_not_extended/virtual_columns */ 12470);
                __webpack_require__( /*! ./export/m_export */ 48252);
                __webpack_require__( /*! ./focus/m_focus */ 56445);
                __webpack_require__( /*! ./module_not_extended/row_dragging */ 445);
                var _default = _m_widget_base.default;
                exports.default = _default
            },
        26196:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/m_widget_base.js ***!
              \*****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                __webpack_require__( /*! ./module_not_extended/column_headers */ 90130);
                __webpack_require__( /*! ./m_columns_controller */ 96291);
                __webpack_require__( /*! ./m_data_controller */ 3263);
                __webpack_require__( /*! ./module_not_extended/sorting */ 10792);
                __webpack_require__( /*! ./module_not_extended/rows */ 86226);
                __webpack_require__( /*! ./module_not_extended/context_menu */ 74043);
                __webpack_require__( /*! ./module_not_extended/error_handling */ 46950);
                __webpack_require__( /*! ./module_not_extended/grid_view */ 24734);
                __webpack_require__( /*! ./module_not_extended/header_panel */ 63350);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 99393));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/browser */ 47810));
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 20576);
                var _console = __webpack_require__( /*! ../../../core/utils/console */ 30869);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _themes = __webpack_require__( /*! ../../../ui/themes */ 75811);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.widget */ 14390));
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../../grids/grid_core/m_utils */ 60082));
                var _m_core = _interopRequireDefault(__webpack_require__( /*! ./m_core */ 74938));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                _m_core.default.registerModulesOrder(["stateStoring", "columns", "selection", "editorFactory", "columnChooser", "grouping", "editing", "editingRowBased", "editingFormBased", "editingCellBased", "masterDetail", "validating", "adaptivity", "data", "virtualScrolling", "columnHeaders", "filterRow", "headerPanel", "headerFilter", "sorting", "search", "rows", "pager", "columnsResizingReordering", "contextMenu", "keyboardNavigation", "errorHandling", "summary", "columnFixing", "export", "gridView"]);
                const DataGrid = _ui.default.inherit({
                    _activeStateUnit: ".dx-row",
                    _getDefaultOptions() {
                        const result = this.callBase();
                        (0, _iterator.each)(_m_core.default.modules, (function() {
                            if ((0, _type.isFunction)(this.defaultOptions)) {
                                (0, _extend.extend)(true, result, this.defaultOptions())
                            }
                        }));
                        return result
                    },
                    _setDeprecatedOptions() {
                        this.callBase();
                        (0, _extend.extend)(this._deprecatedOptions, {
                            useKeyboard: {
                                since: "19.2",
                                alias: "keyboardNavigation.enabled"
                            },
                            rowTemplate: {
                                since: "21.2",
                                message: 'Use the "dataRowTemplate" option instead'
                            },
                            "columnChooser.allowSearch": {
                                since: "23.1",
                                message: 'Use the "columnChooser.search.enabled" option instead'
                            },
                            "columnChooser.searchTimeout": {
                                since: "23.1",
                                message: 'Use the "columnChooser.search.timeout" option instead'
                            }
                        })
                    },
                    _defaultOptionsRules() {
                        return this.callBase().concat([{
                            device: {
                                platform: "ios"
                            },
                            options: {
                                showRowLines: true
                            }
                        }, {
                            device: () => (0, _themes.isMaterialBased)(),
                            options: {
                                showRowLines: true,
                                showColumnLines: false,
                                headerFilter: {
                                    height: 315
                                },
                                editing: {
                                    useIcons: true
                                },
                                selection: {
                                    showCheckBoxesMode: "always"
                                }
                            }
                        }, {
                            device: () => _browser.default.webkit,
                            options: {
                                loadingTimeout: 30,
                                loadPanel: {
                                    animation: {
                                        show: {
                                            easing: "cubic-bezier(1, 0, 1, 0)",
                                            duration: 500,
                                            from: {
                                                opacity: 0
                                            },
                                            to: {
                                                opacity: 1
                                            }
                                        }
                                    }
                                }
                            }
                        }, {
                            device: device => "desktop" !== device.deviceType,
                            options: {
                                grouping: {
                                    expandMode: "rowClick"
                                }
                            }
                        }])
                    },
                    _init() {
                        this.callBase();
                        _m_utils.default.logHeaderFilterDeprecatedWarningIfNeed(this);
                        _m_core.default.processModules(this, _m_core.default);
                        _m_core.default.callModuleItemsMethod(this, "init")
                    },
                    _clean: _common.noop,
                    _optionChanged(args) {
                        const that = this;
                        _m_core.default.callModuleItemsMethod(that, "optionChanged", [args]);
                        if (!args.handled) {
                            that.callBase(args)
                        }
                    },
                    _dimensionChanged() {
                        this.updateDimensions(true)
                    },
                    _visibilityChanged(visible) {
                        if (visible) {
                            this.updateDimensions()
                        }
                    },
                    _initMarkup() {
                        this.callBase.apply(this, arguments);
                        this.getView("gridView").render(this.$element())
                    },
                    _renderContentImpl() {
                        this.getView("gridView").update()
                    },
                    _renderContent() {
                        const that = this;
                        (0, _common.deferRender)(() => {
                            that._renderContentImpl()
                        })
                    },
                    _getTemplate(templateName) {
                        let template = templateName;
                        if ((0, _type.isString)(template) && template.startsWith("#")) {
                            template = (0, _renderer.default)(templateName);
                            _console.logger.warn("Specifying grid templates with the jQuery selector name is now deprecated. Use the DOM Node or the jQuery object that references this selector instead.")
                        }
                        return this.callBase(template)
                    },
                    _dispose() {
                        this.callBase();
                        _m_core.default.callModuleItemsMethod(this, "dispose")
                    },
                    isReady() {
                        return this.getController("data").isReady()
                    },
                    beginUpdate() {
                        this.callBase();
                        _m_core.default.callModuleItemsMethod(this, "beginUpdate")
                    },
                    endUpdate() {
                        _m_core.default.callModuleItemsMethod(this, "endUpdate");
                        this.callBase()
                    },
                    getController(name) {
                        return this._controllers[name]
                    },
                    getView(name) {
                        return this._views[name]
                    },
                    focus(element) {
                        this.getController("keyboardNavigation").focus(element)
                    }
                });
                DataGrid.registerModule = _m_core.default.registerModule.bind(_m_core.default);
                (0, _component_registrator.default)("dxDataGrid", DataGrid);
                var _default = DataGrid;
                exports.default = _default
            },
        26098:
            /*!**********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/adaptivity.js ***!
              \**********************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_adaptivity = __webpack_require__( /*! ../../../grids/grid_core/adaptivity/m_adaptivity */ 18107);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("adaptivity", _m_adaptivity.adaptivityModule)
            },
        17663:
            /*!**************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/column_chooser.js ***!
              \**************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.ColumnChooserView = exports.ColumnChooserController = void 0;
                var _m_column_chooser = __webpack_require__( /*! ../../../grids/grid_core/column_chooser/m_column_chooser */ 71184);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const ColumnChooserController = _m_column_chooser.columnChooserModule.controllers.columnChooser;
                exports.ColumnChooserController = ColumnChooserController;
                const ColumnChooserView = _m_column_chooser.columnChooserModule.views.columnChooserView;
                exports.ColumnChooserView = ColumnChooserView;
                _m_core.default.registerModule("columnChooser", _m_column_chooser.columnChooserModule)
            },
        68339:
            /*!*************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/column_fixing.js ***!
              \*************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_column_fixing = __webpack_require__( /*! ../../../grids/grid_core/column_fixing/m_column_fixing */ 53424);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("columnFixing", _m_column_fixing.columnFixingModule)
            },
        90130:
            /*!**************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/column_headers.js ***!
              \**************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.ColumnHeadersView = void 0;
                var _m_column_headers = __webpack_require__( /*! ../../../grids/grid_core/column_headers/m_column_headers */ 14509);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const ColumnHeadersView = _m_column_headers.columnHeadersModule.views.columnHeadersView;
                exports.ColumnHeadersView = ColumnHeadersView;
                _m_core.default.registerModule("columnHeaders", _m_column_headers.columnHeadersModule)
            },
        53489:
            /*!***************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/columns_resizing_reordering.js ***!
              \***************************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.TrackerView = exports.TablePositionViewController = exports.DraggingHeaderViewController = exports.DraggingHeaderView = exports.ColumnsSeparatorView = exports.ColumnsResizerViewController = void 0;
                var _m_columns_resizing_reordering = __webpack_require__( /*! ../../../grids/grid_core/columns_resizing_reordering/m_columns_resizing_reordering */ 49505);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const DraggingHeaderView = _m_columns_resizing_reordering.columnsResizingReorderingModule.views.draggingHeaderView;
                exports.DraggingHeaderView = DraggingHeaderView;
                const DraggingHeaderViewController = _m_columns_resizing_reordering.columnsResizingReorderingModule.controllers.draggingHeader;
                exports.DraggingHeaderViewController = DraggingHeaderViewController;
                const ColumnsSeparatorView = _m_columns_resizing_reordering.columnsResizingReorderingModule.views.columnsSeparatorView;
                exports.ColumnsSeparatorView = ColumnsSeparatorView;
                const TablePositionViewController = _m_columns_resizing_reordering.columnsResizingReorderingModule.controllers.tablePosition;
                exports.TablePositionViewController = TablePositionViewController;
                const ColumnsResizerViewController = _m_columns_resizing_reordering.columnsResizingReorderingModule.controllers.columnsResizer;
                exports.ColumnsResizerViewController = ColumnsResizerViewController;
                const TrackerView = _m_columns_resizing_reordering.columnsResizingReorderingModule.views.trackerView;
                exports.TrackerView = TrackerView;
                _m_core.default.registerModule("columnsResizingReordering", _m_columns_resizing_reordering.columnsResizingReorderingModule)
            },
        74043:
            /*!************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/context_menu.js ***!
              \************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_context_menu = __webpack_require__( /*! ../../../grids/grid_core/context_menu/m_context_menu */ 69823);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("contextMenu", _m_context_menu.contextMenuModule)
            },
        82831:
            /*!******************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/editing_cell_based.js ***!
              \******************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_editing_cell_based = __webpack_require__( /*! ../../../grids/grid_core/editing/m_editing_cell_based */ 68802);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("editingCellBased", _m_editing_cell_based.editingCellBasedModule)
            },
        94585:
            /*!******************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/editing_form_based.js ***!
              \******************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_editing_form_based = __webpack_require__( /*! ../../../grids/grid_core/editing/m_editing_form_based */ 99211);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("editingFormBased", _m_editing_form_based.editingFormBasedModule)
            },
        42267:
            /*!*****************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/editing_row_based.js ***!
              \*****************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_editing_row_based = __webpack_require__( /*! ../../../grids/grid_core/editing/m_editing_row_based */ 55597);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("editingRowBased", _m_editing_row_based.editingRowBasedModule)
            },
        98125:
            /*!**************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/editor_factory.js ***!
              \**************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_editor_factory = __webpack_require__( /*! ../../../grids/grid_core/editor_factory/m_editor_factory */ 80070);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("editorFactory", _m_editor_factory.editorFactoryModule)
            },
        46950:
            /*!**************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/error_handling.js ***!
              \**************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_error_handling = __webpack_require__( /*! ../../../grids/grid_core/error_handling/m_error_handling */ 31152);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("errorHandling", _m_error_handling.errorHandlingModule)
            },
        69566:
            /*!**************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/filter_builder.js ***!
              \**************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_filter_builder = __webpack_require__( /*! ../../../grids/grid_core/filter/m_filter_builder */ 62690);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("filterBuilder", _m_filter_builder.filterBuilderModule)
            },
        76568:
            /*!************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/filter_panel.js ***!
              \************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_filter_panel = __webpack_require__( /*! ../../../grids/grid_core/filter/m_filter_panel */ 4062);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("filterPanel", _m_filter_panel.filterPanelModule)
            },
        34622:
            /*!**********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/filter_row.js ***!
              \**********************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_filter_row = __webpack_require__( /*! ../../../grids/grid_core/filter/m_filter_row */ 12302);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("filterRow", _m_filter_row.filterRowModule)
            },
        66551:
            /*!***********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/filter_sync.js ***!
              \***********************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_filter_sync = __webpack_require__( /*! ../../../grids/grid_core/filter/m_filter_sync */ 14407);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("filterSync", _m_filter_sync.filterSyncModule)
            },
        24734:
            /*!*********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/grid_view.js ***!
              \*********************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_grid_view = __webpack_require__( /*! ../../../grids/grid_core/views/m_grid_view */ 28016);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("gridView", _m_grid_view.gridViewModule)
            },
        42595:
            /*!*************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/header_filter.js ***!
              \*************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_header_filter = __webpack_require__( /*! ../../../grids/grid_core/header_filter/m_header_filter */ 68796);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("headerFilter", _m_header_filter.headerFilterModule)
            },
        63350:
            /*!************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/header_panel.js ***!
              \************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.HeaderPanel = void 0;
                var _m_header_panel = __webpack_require__( /*! ../../../grids/grid_core/header_panel/m_header_panel */ 92468);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const HeaderPanel = _m_header_panel.headerPanelModule.views.headerPanel;
                exports.HeaderPanel = HeaderPanel;
                _m_core.default.registerModule("headerPanel", _m_header_panel.headerPanelModule)
            },
        28294:
            /*!*******************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/keyboard_navigation.js ***!
              \*******************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_keyboard_navigation = __webpack_require__( /*! ../../../grids/grid_core/keyboard_navigation/m_keyboard_navigation */ 31822);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("keyboardNavigation", _m_keyboard_navigation.keyboardNavigationModule)
            },
        48190:
            /*!*************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/master_detail.js ***!
              \*************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_master_detail = __webpack_require__( /*! ../../../grids/grid_core/master_detail/m_master_detail */ 82802);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("masterDetail", _m_master_detail.masterDetailModule)
            },
        70608:
            /*!*****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/pager.js ***!
              \*****************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_pager = __webpack_require__( /*! ../../../grids/grid_core/pager/m_pager */ 3990);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("pager", _m_pager.pagerModule)
            },
        445:
            /*!************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/row_dragging.js ***!
              \************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_row_dragging = __webpack_require__( /*! ../../../grids/grid_core/row_dragging/m_row_dragging */ 88351);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("rowDragging", _m_row_dragging.rowDraggingModule)
            },
        86226:
            /*!****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/rows.js ***!
              \****************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.RowsView = void 0;
                var _m_rows_view = __webpack_require__( /*! ../../../grids/grid_core/views/m_rows_view */ 35095);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const RowsView = _m_rows_view.rowsModule.views.rowsView;
                exports.RowsView = RowsView;
                _m_core.default.registerModule("rows", _m_rows_view.rowsModule)
            },
        20015:
            /*!******************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/search.js ***!
              \******************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_search = __webpack_require__( /*! ../../../grids/grid_core/search/m_search */ 92021);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("search", _m_search.searchModule)
            },
        86006:
            /*!*********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/selection.js ***!
              \*********************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_selection = __webpack_require__( /*! ../../../grids/grid_core/selection/m_selection */ 17969);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("selection", _m_selection.selectionModule)
            },
        10792:
            /*!*******************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/sorting.js ***!
              \*******************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_sorting = __webpack_require__( /*! ../../../grids/grid_core/sorting/m_sorting */ 11590);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("sorting", _m_sorting.sortingModule)
            },
        97847:
            /*!*************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/state_storing.js ***!
              \*************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_state_storing = __webpack_require__( /*! ../../../grids/grid_core/state_storing/m_state_storing */ 12440);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("stateStoring", _m_state_storing.stateStoringModule)
            },
        41430:
            /*!**********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/validating.js ***!
              \**********************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_validating = __webpack_require__( /*! ../../../grids/grid_core/validating/m_validating */ 39830);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("validating", _m_validating.validatingModule)
            },
        12470:
            /*!***************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/virtual_columns.js ***!
              \***************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_virtual_columns = __webpack_require__( /*! ../../../grids/grid_core/virtual_columns/m_virtual_columns */ 87482);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 74938), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("virtualColumns", _m_virtual_columns.virtualColumnsModule)
            },
        98726:
            /*!*****************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/module_not_extended/virtual_scrolling.js ***!
              \*****************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_virtual_scrolling = __webpack_require__( /*! ../../../grids/grid_core/virtual_scrolling/m_virtual_scrolling */ 92018);
                var _m_core = _interopRequireDefault(__webpack_require__( /*! ../m_core */ 74938));
                var _m_data_source_adapter = _interopRequireDefault(__webpack_require__( /*! ../m_data_source_adapter */ 49975));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                _m_core.default.registerModule("virtualScrolling", _m_virtual_scrolling.virtualScrollingModule);
                _m_data_source_adapter.default.extend(_m_virtual_scrolling.virtualScrollingModule.extenders.dataSourceAdapter)
            },
        15180:
            /*!*********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/data_grid/summary/m_summary.js ***!
              \*********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.renderSummaryCell = exports.FooterView = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _data = __webpack_require__( /*! ../../../../core/utils/data */ 47617);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _query = _interopRequireDefault(__webpack_require__( /*! ../../../../data/query */ 96687));
                var _store_helper = _interopRequireDefault(__webpack_require__( /*! ../../../../data/store_helper */ 99236));
                var _utils = __webpack_require__( /*! ../../../../data/utils */ 16454);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/message */ 28109));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.errors */ 96688));
                var _m_columns_view = __webpack_require__( /*! ../../../grids/grid_core/views/m_columns_view */ 57318);
                var _m_aggregate_calculator = _interopRequireDefault(__webpack_require__( /*! ../m_aggregate_calculator */ 29593));
                var _m_core = _interopRequireDefault(__webpack_require__( /*! ../m_core */ 74938));
                var _m_data_source_adapter = _interopRequireDefault(__webpack_require__( /*! ../m_data_source_adapter */ 49975));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const renderSummaryCell = function(cell, options) {
                    const $cell = (0, _renderer.default)(cell);
                    const {
                        column: column
                    } = options;
                    const {
                        summaryItems: summaryItems
                    } = options;
                    const $summaryItems = [];
                    if (!column.command && summaryItems) {
                        for (let i = 0; i < summaryItems.length; i++) {
                            const summaryItem = summaryItems[i];
                            const text = _m_core.default.getSummaryText(summaryItem, options.summaryTexts);
                            $summaryItems.push((0, _renderer.default)("<div>").css("textAlign", summaryItem.alignment || column.alignment).addClass("dx-datagrid-summary-item").addClass("dx-datagrid-text-content").addClass(summaryItem.cssClass).toggleClass("dx-datagrid-group-text-content", "group" === options.rowType).text(text).attr("aria-label", "".concat(column.caption, " ").concat(text)))
                        }
                        $cell.append($summaryItems)
                    }
                };
                exports.renderSummaryCell = renderSummaryCell;
                const getSummaryCellOptions = function(that, options) {
                    const summaryTexts = that.option("summary.texts") || {};
                    return {
                        totalItem: options.row,
                        summaryItems: options.row.summaryCells[options.columnIndex],
                        summaryTexts: summaryTexts
                    }
                };
                const getGroupAggregates = function(data) {
                    return data.summary || data.aggregates || []
                };
                const recalculateWhileEditing = function(that) {
                    return that.option("summary.recalculateWhileEditing")
                };
                const FooterView = _m_columns_view.ColumnsView.inherit({
                    _getRows() {
                        return this._dataController.footerItems()
                    },
                    _getCellOptions(options) {
                        return (0, _extend.extend)(this.callBase(options), getSummaryCellOptions(this, options))
                    },
                    _renderCellContent($cell, options) {
                        renderSummaryCell($cell, options);
                        this.callBase.apply(this, arguments)
                    },
                    _renderCore(change) {
                        let needUpdateScrollLeft = false;
                        const totalItem = this._dataController.footerItems()[0];
                        if (!change || !change.columnIndices) {
                            this.element().empty().addClass("dx-datagrid-total-footer").toggleClass("dx-datagrid-nowrap", !this.option("wordWrapEnabled"));
                            needUpdateScrollLeft = true
                        }
                        if (totalItem && totalItem.summaryCells && totalItem.summaryCells.length) {
                            this._updateContent(this._renderTable({
                                change: change
                            }), change);
                            needUpdateScrollLeft && this._updateScrollLeftPosition()
                        }
                    },
                    _updateContent($newTable, change) {
                        if (change && "update" === change.changeType && change.columnIndices) {
                            return this.waitAsyncTemplates().done(() => {
                                const $row = this.getTableElement().find(".dx-row");
                                const $newRow = $newTable.find(".dx-row");
                                this._updateCells($row, $newRow, change.columnIndices[0])
                            })
                        }
                        return this.callBase.apply(this, arguments)
                    },
                    _rowClick(e) {
                        const item = this._dataController.footerItems()[e.rowIndex] || {};
                        this.executeAction("onRowClick", (0, _extend.extend)({}, e, item))
                    },
                    _columnOptionChanged(e) {
                        const {
                            optionNames: optionNames
                        } = e;
                        if (e.changeTypes.grouping) {
                            return
                        }
                        if (optionNames.width || optionNames.visibleWidth) {
                            this.callBase(e)
                        }
                    },
                    _handleDataChanged(e) {
                        const {
                            changeType: changeType
                        } = e;
                        if ("update" === e.changeType && e.repaintChangesOnly) {
                            if (!e.totalColumnIndices) {
                                this.render()
                            } else if (e.totalColumnIndices.length) {
                                this.render(null, {
                                    changeType: "update",
                                    columnIndices: [e.totalColumnIndices]
                                })
                            }
                        } else if ("refresh" === changeType || "append" === changeType || "prepend" === changeType) {
                            this.render()
                        }
                    },
                    _createRow(row) {
                        const $row = this.callBase.apply(this, arguments);
                        if ("totalFooter" === row.rowType) {
                            $row.addClass("dx-footer-row");
                            $row.addClass("dx-cell-focus-disabled");
                            $row.attr("tabindex", 0)
                        }
                        return $row
                    },
                    getHeight() {
                        return this.getElementHeight()
                    },
                    isVisible() {
                        return !!this._dataController.footerItems().length
                    }
                });
                exports.FooterView = FooterView;
                const SummaryDataSourceAdapterExtender = {
                    init() {
                        this.callBase.apply(this, arguments);
                        this._totalAggregates = [];
                        this._summaryGetter = _common.noop
                    },
                    summaryGetter(summaryGetter) {
                        if (!arguments.length) {
                            return this._summaryGetter
                        }
                        if ((0, _type.isFunction)(summaryGetter)) {
                            this._summaryGetter = summaryGetter
                        }
                    },
                    summary(summary) {
                        if (!arguments.length) {
                            return this._summaryGetter()
                        }
                        this._summaryGetter = function() {
                            return summary
                        }
                    },
                    totalAggregates() {
                        return this._totalAggregates
                    },
                    isLastLevelGroupItemsPagingLocal() {
                        const summary = this.summary();
                        const sortByGroupsInfo = summary && summary.sortByGroups();
                        return sortByGroupsInfo && sortByGroupsInfo.length
                    },
                    sortLastLevelGroupItems(items, groups, paths) {
                        const groupedItems = _store_helper.default.multiLevelGroup((0, _query.default)(items), groups).toArray();
                        let result = [];
                        paths.forEach(path => {
                            ! function forEachGroup(groups, groupCount, callback, path) {
                                path = path || [];
                                for (let i = 0; i < groups.length; i++) {
                                    path.push(groups[i].key);
                                    if (1 === groupCount) {
                                        callback(path, groups[i].items)
                                    } else {
                                        forEachGroup(groups[i].items, groupCount - 1, callback, path)
                                    }
                                    path.pop()
                                }
                            }(groupedItems, groups.length, (itemsPath, items) => {
                                if (path.toString() === itemsPath.toString()) {
                                    result = result.concat(items)
                                }
                            })
                        });
                        return result
                    }
                };
                const SummaryDataSourceAdapterClientExtender = function() {
                    const applyAddedData = function(data, insertedData, groupLevel) {
                        if (groupLevel) {
                            return applyAddedData(data, insertedData.map(item => ({
                                items: [item]
                            }), groupLevel - 1))
                        }
                        return data.concat(insertedData)
                    };
                    const applyRemovedData = function(data, removedData, groupLevel) {
                        if (groupLevel) {
                            return data.map(data => {
                                const updatedData = {};
                                const updatedItems = applyRemovedData(data.items || [], removedData, groupLevel - 1);
                                Object.defineProperty(updatedData, "aggregates", {
                                    get: () => data.aggregates,
                                    set: value => {
                                        data.aggregates = value
                                    }
                                });
                                return (0, _extend.extend)(updatedData, data, {
                                    items: updatedItems
                                })
                            })
                        }
                        return data.filter(data => removedData.indexOf(data) < 0)
                    };
                    const calculateAggregates = function(that, summary, data, groupLevel) {
                        let calculator;
                        if (recalculateWhileEditing(that)) {
                            const editingController = that.getController("editing");
                            if (editingController) {
                                const insertedData = editingController.getInsertedData();
                                if (insertedData.length) {
                                    data = applyAddedData(data, insertedData, groupLevel)
                                }
                                const removedData = editingController.getRemovedData();
                                if (removedData.length) {
                                    data = applyRemovedData(data, removedData, groupLevel)
                                }
                            }
                        }
                        if (summary) {
                            calculator = new _m_aggregate_calculator.default({
                                totalAggregates: summary.totalAggregates,
                                groupAggregates: summary.groupAggregates,
                                data: data,
                                groupLevel: groupLevel
                            });
                            calculator.calculate()
                        }
                        return calculator ? calculator.totalAggregates() : []
                    };
                    const sortGroupsBySummaryCore = function(items, groups, sortByGroups) {
                        if (!items || !groups.length) {
                            return items
                        }
                        const group = groups[0];
                        const sorts = sortByGroups[0];
                        let query;
                        if (group && sorts && sorts.length) {
                            query = (0, _query.default)(items);
                            (0, _iterator.each)(sorts, (function(index) {
                                if (0 === index) {
                                    query = query.sortBy(this.selector, this.desc)
                                } else {
                                    query = query.thenBy(this.selector, this.desc)
                                }
                            }));
                            query.enumerate().done(sortedItems => {
                                items = sortedItems
                            })
                        }
                        groups = groups.slice(1);
                        sortByGroups = sortByGroups.slice(1);
                        if (groups.length && sortByGroups.length) {
                            (0, _iterator.each)(items, (function() {
                                this.items = sortGroupsBySummaryCore(this.items, groups, sortByGroups)
                            }))
                        }
                        return items
                    };
                    const sortGroupsBySummary = function(data, group, summary) {
                        const sortByGroups = summary && summary.sortByGroups && summary.sortByGroups();
                        if (sortByGroups && sortByGroups.length) {
                            return sortGroupsBySummaryCore(data, group, sortByGroups)
                        }
                        return data
                    };
                    return {
                        _customizeRemoteOperations(options) {
                            const summary = this.summary();
                            if (summary) {
                                if (options.remoteOperations.summary) {
                                    if (!options.isCustomLoading || options.storeLoadOptions.isLoadingAll) {
                                        if (options.storeLoadOptions.group) {
                                            if (options.remoteOperations.grouping) {
                                                options.storeLoadOptions.groupSummary = summary.groupAggregates
                                            } else if (summary.groupAggregates.length) {
                                                options.remoteOperations.paging = false
                                            }
                                        }
                                        options.storeLoadOptions.totalSummary = summary.totalAggregates
                                    }
                                } else if (summary.totalAggregates.length || summary.groupAggregates.length && options.storeLoadOptions.group) {
                                    options.remoteOperations.paging = false
                                }
                            }
                            this.callBase.apply(this, arguments);
                            const cachedExtra = options.cachedData.extra;
                            if (cachedExtra && cachedExtra.summary && !options.isCustomLoading) {
                                options.storeLoadOptions.totalSummary = void 0
                            }
                        },
                        _handleDataLoadedCore(options) {
                            var _a, _b;
                            const that = this;
                            const groups = (0, _utils.normalizeSortingInfo)(options.storeLoadOptions.group || options.loadOptions.group || []);
                            const remoteOperations = options.remoteOperations || {};
                            const summary = that.summaryGetter()(remoteOperations);
                            if (!options.isCustomLoading || options.storeLoadOptions.isLoadingAll) {
                                if (remoteOperations.summary) {
                                    if (!remoteOperations.paging && groups.length && summary) {
                                        if (!remoteOperations.grouping) {
                                            calculateAggregates(that, {
                                                groupAggregates: summary.groupAggregates
                                            }, options.data, groups.length)
                                        }
                                        options.data = sortGroupsBySummary(options.data, groups, summary)
                                    }
                                } else if (!remoteOperations.paging && summary) {
                                    const operationTypes = options.operationTypes || {};
                                    const hasOperations = Object.keys(operationTypes).some(type => operationTypes[type]);
                                    if (!hasOperations || !(null === (_b = null === (_a = options.cachedData) || void 0 === _a ? void 0 : _a.extra) || void 0 === _b ? void 0 : _b.summary) || groups.length && summary.groupAggregates.length) {
                                        const totalAggregates = calculateAggregates(that, summary, options.data, groups.length);
                                        options.extra = (0, _type.isPlainObject)(options.extra) ? options.extra : {};
                                        options.extra.summary = totalAggregates;
                                        if (options.cachedData) {
                                            options.cachedData.extra = options.extra
                                        }
                                    }
                                    options.data = sortGroupsBySummary(options.data, groups, summary)
                                }
                            }
                            if (!options.isCustomLoading) {
                                that._totalAggregates = options.extra && options.extra.summary || that._totalAggregates
                            }
                            that.callBase(options)
                        }
                    }
                }();
                _m_data_source_adapter.default.extend(SummaryDataSourceAdapterExtender);
                _m_data_source_adapter.default.extend(SummaryDataSourceAdapterClientExtender);
                _m_core.default.registerModule("summary", {
                    defaultOptions: () => ({
                        summary: {
                            groupItems: void 0,
                            totalItems: void 0,
                            calculateCustomSummary: void 0,
                            skipEmptyValues: true,
                            recalculateWhileEditing: false,
                            texts: {
                                sum: _message.default.format("dxDataGrid-summarySum"),
                                sumOtherColumn: _message.default.format("dxDataGrid-summarySumOtherColumn"),
                                min: _message.default.format("dxDataGrid-summaryMin"),
                                minOtherColumn: _message.default.format("dxDataGrid-summaryMinOtherColumn"),
                                max: _message.default.format("dxDataGrid-summaryMax"),
                                maxOtherColumn: _message.default.format("dxDataGrid-summaryMaxOtherColumn"),
                                avg: _message.default.format("dxDataGrid-summaryAvg"),
                                avgOtherColumn: _message.default.format("dxDataGrid-summaryAvgOtherColumn"),
                                count: _message.default.format("dxDataGrid-summaryCount")
                            }
                        },
                        sortByGroupSummaryInfo: void 0
                    }),
                    views: {
                        footerView: FooterView
                    },
                    extenders: {
                        controllers: {
                            data: {
                                _isDataColumn: column => column && (!(0, _type.isDefined)(column.groupIndex) || column.showWhenGrouped),
                                _isGroupFooterVisible() {
                                    const groupItems = this.option("summary.groupItems") || [];
                                    for (let i = 0; i < groupItems.length; i++) {
                                        const groupItem = groupItems[i];
                                        const column = this._columnsController.columnOption(groupItem.showInColumn || groupItem.column);
                                        if (groupItem.showInGroupFooter && this._isDataColumn(column)) {
                                            return true
                                        }
                                    }
                                    return false
                                },
                                _processGroupItems(items, groupCount, options) {
                                    const data = options && options.data;
                                    const result = this.callBase.apply(this, arguments);
                                    if (options) {
                                        if (void 0 === options.isGroupFooterVisible) {
                                            options.isGroupFooterVisible = this._isGroupFooterVisible()
                                        }
                                        if (data && data.items && options.isGroupFooterVisible && (options.collectContinuationItems || !data.isContinuationOnNextPage)) {
                                            result.push({
                                                rowType: "groupFooter",
                                                key: options.path.slice(),
                                                data: data,
                                                groupIndex: options.path.length - 1,
                                                values: []
                                            })
                                        }
                                    }
                                    return result
                                },
                                _processGroupItem(groupItem, options) {
                                    const that = this;
                                    if (!options.summaryGroupItems) {
                                        options.summaryGroupItems = that.option("summary.groupItems") || []
                                    }
                                    if ("group" === groupItem.rowType) {
                                        let groupColumnIndex = -1;
                                        let afterGroupColumnIndex = -1;
                                        (0, _iterator.each)(options.visibleColumns, (function(visibleIndex) {
                                            const prevColumn = options.visibleColumns[visibleIndex - 1];
                                            if (groupItem.groupIndex === this.groupIndex) {
                                                groupColumnIndex = this.index
                                            }
                                            if (visibleIndex > 0 && "expand" === prevColumn.command && "expand" !== this.command) {
                                                afterGroupColumnIndex = this.index
                                            }
                                        }));
                                        groupItem.summaryCells = this._calculateSummaryCells(options.summaryGroupItems, getGroupAggregates(groupItem.data), options.visibleColumns, (summaryItem, column) => {
                                            if (summaryItem.showInGroupFooter) {
                                                return -1
                                            }
                                            if (summaryItem.alignByColumn && column && !(0, _type.isDefined)(column.groupIndex) && column.index !== afterGroupColumnIndex) {
                                                return column.index
                                            }
                                            return groupColumnIndex
                                        }, true)
                                    }
                                    if ("groupFooter" === groupItem.rowType) {
                                        groupItem.summaryCells = this._calculateSummaryCells(options.summaryGroupItems, getGroupAggregates(groupItem.data), options.visibleColumns, (summaryItem, column) => summaryItem.showInGroupFooter && that._isDataColumn(column) ? column.index : -1)
                                    }
                                    return groupItem
                                },
                                _calculateSummaryCells(summaryItems, aggregates, visibleColumns, calculateTargetColumnIndex, isGroupRow) {
                                    const that = this;
                                    const summaryCells = [];
                                    const summaryCellsByColumns = {};
                                    (0, _iterator.each)(summaryItems, (summaryIndex, summaryItem) => {
                                        const column = that._columnsController.columnOption(summaryItem.column);
                                        const showInColumn = summaryItem.showInColumn && that._columnsController.columnOption(summaryItem.showInColumn) || column;
                                        const columnIndex = calculateTargetColumnIndex(summaryItem, showInColumn);
                                        if (columnIndex >= 0) {
                                            if (!summaryCellsByColumns[columnIndex]) {
                                                summaryCellsByColumns[columnIndex] = []
                                            }
                                            const aggregate = aggregates[summaryIndex];
                                            if (aggregate === aggregate) {
                                                let valueFormat;
                                                if ((0, _type.isDefined)(summaryItem.valueFormat)) {
                                                    valueFormat = summaryItem.valueFormat
                                                } else if ("count" !== summaryItem.summaryType) {
                                                    valueFormat = _m_core.default.getFormatByDataType(column && column.dataType)
                                                }
                                                summaryCellsByColumns[columnIndex].push((0, _extend.extend)({}, summaryItem, {
                                                    value: (0, _type.isString)(aggregate) && column && column.deserializeValue ? column.deserializeValue(aggregate) : aggregate,
                                                    valueFormat: valueFormat,
                                                    columnCaption: column && column.index !== columnIndex ? column.caption : void 0
                                                }))
                                            }
                                        }
                                    });
                                    if (!(0, _type.isEmptyObject)(summaryCellsByColumns)) {
                                        visibleColumns.forEach((column, visibleIndex) => {
                                            const prevColumn = visibleColumns[visibleIndex - 1];
                                            const columnIndex = isGroupRow && ("expand" === (null === prevColumn || void 0 === prevColumn ? void 0 : prevColumn.command) || "expand" === column.command) ? null === prevColumn || void 0 === prevColumn ? void 0 : prevColumn.index : column.index;
                                            summaryCells.push(summaryCellsByColumns[columnIndex] || [])
                                        })
                                    }
                                    return summaryCells
                                },
                                _getSummaryCells(summaryTotalItems, totalAggregates) {
                                    const that = this;
                                    const columnsController = that._columnsController;
                                    return that._calculateSummaryCells(summaryTotalItems, totalAggregates, columnsController.getVisibleColumns(), (summaryItem, column) => that._isDataColumn(column) ? column.index : -1)
                                },
                                _updateItemsCore(change) {
                                    const that = this;
                                    let summaryCells;
                                    const dataSource = that._dataSource;
                                    const footerItems = that._footerItems;
                                    const oldSummaryCells = footerItems && footerItems[0] && footerItems[0].summaryCells;
                                    const summaryTotalItems = that.option("summary.totalItems");
                                    that._footerItems = [];
                                    if (dataSource && summaryTotalItems && summaryTotalItems.length) {
                                        const totalAggregates = dataSource.totalAggregates();
                                        summaryCells = that._getSummaryCells(summaryTotalItems, totalAggregates);
                                        if (change && change.repaintChangesOnly && oldSummaryCells) {
                                            change.totalColumnIndices = summaryCells.map((summaryCell, index) => {
                                                if (JSON.stringify(summaryCell) !== JSON.stringify(oldSummaryCells[index])) {
                                                    return index
                                                }
                                                return -1
                                            }).filter(index => index >= 0)
                                        }
                                        if (summaryCells.length) {
                                            that._footerItems.push({
                                                rowType: "totalFooter",
                                                summaryCells: summaryCells
                                            })
                                        }
                                    }
                                    that.callBase(change)
                                },
                                _prepareUnsavedDataSelector(selector) {
                                    const that = this;
                                    if (recalculateWhileEditing(that)) {
                                        const editingController = that.getController("editing");
                                        if (editingController) {
                                            return function(data) {
                                                data = editingController.getUpdatedData(data);
                                                return selector(data)
                                            }
                                        }
                                    }
                                    return selector
                                },
                                _prepareAggregateSelector(selector, aggregator) {
                                    selector = this._prepareUnsavedDataSelector(selector);
                                    if ("avg" === aggregator || "sum" === aggregator) {
                                        return function(data) {
                                            const value = selector(data);
                                            return (0, _type.isDefined)(value) ? Number(value) : value
                                        }
                                    }
                                    return selector
                                },
                                _getAggregates(summaryItems, remoteOperations) {
                                    const that = this;
                                    const columnsController = that.getController("columns");
                                    let calculateCustomSummary = that.option("summary.calculateCustomSummary");
                                    const commonSkipEmptyValues = that.option("summary.skipEmptyValues");
                                    return (0, _iterator.map)(summaryItems || [], summaryItem => {
                                        const column = columnsController.columnOption(summaryItem.column);
                                        const calculateCellValue = column && column.calculateCellValue ? column.calculateCellValue.bind(column) : (0, _data.compileGetter)(column ? column.dataField : summaryItem.column);
                                        let aggregator = summaryItem.summaryType || "count";
                                        const skipEmptyValues = (0, _type.isDefined)(summaryItem.skipEmptyValues) ? summaryItem.skipEmptyValues : commonSkipEmptyValues;
                                        if (remoteOperations) {
                                            return {
                                                selector: summaryItem.column,
                                                summaryType: aggregator
                                            }
                                        }
                                        const selector = that._prepareAggregateSelector(calculateCellValue, aggregator);
                                        if ("custom" === aggregator) {
                                            if (!calculateCustomSummary) {
                                                _ui.default.log("E1026");
                                                calculateCustomSummary = function() {}
                                            }
                                            const options = {
                                                component: that.component,
                                                name: summaryItem.name
                                            };
                                            calculateCustomSummary(options);
                                            options.summaryProcess = "calculate";
                                            aggregator = {
                                                seed(groupIndex) {
                                                    options.summaryProcess = "start";
                                                    options.totalValue = void 0;
                                                    options.groupIndex = groupIndex;
                                                    delete options.value;
                                                    calculateCustomSummary(options);
                                                    return options.totalValue
                                                },
                                                step(totalValue, value) {
                                                    options.summaryProcess = "calculate";
                                                    options.totalValue = totalValue;
                                                    options.value = value;
                                                    calculateCustomSummary(options);
                                                    return options.totalValue
                                                },
                                                finalize(totalValue) {
                                                    options.summaryProcess = "finalize";
                                                    options.totalValue = totalValue;
                                                    delete options.value;
                                                    calculateCustomSummary(options);
                                                    return options.totalValue
                                                }
                                            }
                                        }
                                        return {
                                            selector: selector,
                                            aggregator: aggregator,
                                            skipEmptyValues: skipEmptyValues
                                        }
                                    })
                                },
                                _addSortInfo(sortByGroups, groupColumn, selector, sortOrder) {
                                    if (groupColumn) {
                                        const {
                                            groupIndex: groupIndex
                                        } = groupColumn;
                                        sortOrder = sortOrder || groupColumn.sortOrder;
                                        if ((0, _type.isDefined)(groupIndex)) {
                                            sortByGroups[groupIndex] = sortByGroups[groupIndex] || [];
                                            sortByGroups[groupIndex].push({
                                                selector: selector,
                                                desc: "desc" === sortOrder
                                            })
                                        }
                                    }
                                },
                                _findSummaryItem(summaryItems, name) {
                                    let summaryItemIndex = -1;
                                    if ((0, _type.isDefined)(name)) {
                                        (0, _iterator.each)(summaryItems || [], (function(index) {
                                            if (this.name === name || index === name || this.summaryType === name || this.column === name || function(summaryItem) {
                                                    const {
                                                        summaryType: summaryType
                                                    } = summaryItem;
                                                    const {
                                                        column: column
                                                    } = summaryItem;
                                                    return summaryType && column && "".concat(summaryType, "_").concat(column)
                                                }(this) === name) {
                                                summaryItemIndex = index;
                                                return false
                                            }
                                        }))
                                    }
                                    return summaryItemIndex
                                },
                                _getSummarySortByGroups(sortByGroupSummaryInfo, groupSummaryItems) {
                                    const that = this;
                                    const columnsController = that._columnsController;
                                    const groupColumns = columnsController.getGroupColumns();
                                    const sortByGroups = [];
                                    if (!groupSummaryItems || !groupSummaryItems.length) {
                                        return
                                    }(0, _iterator.each)(sortByGroupSummaryInfo || [], (function() {
                                        const {
                                            sortOrder: sortOrder
                                        } = this;
                                        let {
                                            groupColumn: groupColumn
                                        } = this;
                                        const summaryItemIndex = that._findSummaryItem(groupSummaryItems, this.summaryItem);
                                        if (summaryItemIndex < 0) {
                                            return
                                        }
                                        const selector = function(data) {
                                            return getGroupAggregates(data)[summaryItemIndex]
                                        };
                                        if ((0, _type.isDefined)(groupColumn)) {
                                            groupColumn = columnsController.columnOption(groupColumn);
                                            that._addSortInfo(sortByGroups, groupColumn, selector, sortOrder)
                                        } else {
                                            (0, _iterator.each)(groupColumns, (groupIndex, groupColumn) => {
                                                that._addSortInfo(sortByGroups, groupColumn, selector, sortOrder)
                                            })
                                        }
                                    }));
                                    return sortByGroups
                                },
                                _createDataSourceAdapterCore(dataSource, remoteOperations) {
                                    const that = this;
                                    const dataSourceAdapter = this.callBase(dataSource, remoteOperations);
                                    dataSourceAdapter.summaryGetter(currentRemoteOperations => that._getSummaryOptions(currentRemoteOperations || remoteOperations));
                                    return dataSourceAdapter
                                },
                                _getSummaryOptions(remoteOperations) {
                                    const that = this;
                                    const groupSummaryItems = that.option("summary.groupItems");
                                    const totalSummaryItems = that.option("summary.totalItems");
                                    const sortByGroupSummaryInfo = that.option("sortByGroupSummaryInfo");
                                    const groupAggregates = that._getAggregates(groupSummaryItems, remoteOperations && remoteOperations.grouping && remoteOperations.summary);
                                    const totalAggregates = that._getAggregates(totalSummaryItems, remoteOperations && remoteOperations.summary);
                                    const sortByGroups = function() {
                                        return that._getSummarySortByGroups(sortByGroupSummaryInfo, groupSummaryItems)
                                    };
                                    if (groupAggregates.length || totalAggregates.length) {
                                        return {
                                            groupAggregates: groupAggregates,
                                            totalAggregates: totalAggregates,
                                            sortByGroups: sortByGroups
                                        }
                                    }
                                    return
                                },
                                publicMethods() {
                                    const methods = this.callBase();
                                    methods.push("getTotalSummaryValue");
                                    return methods
                                },
                                getTotalSummaryValue(summaryItemName) {
                                    const summaryItemIndex = this._findSummaryItem(this.option("summary.totalItems"), summaryItemName);
                                    const aggregates = this._dataSource.totalAggregates();
                                    if (aggregates.length && summaryItemIndex > -1) {
                                        return aggregates[summaryItemIndex]
                                    }
                                },
                                optionChanged(args) {
                                    if ("summary" === args.name || "sortByGroupSummaryInfo" === args.name) {
                                        args.name = "dataSource"
                                    }
                                    this.callBase(args)
                                },
                                init() {
                                    this._footerItems = [];
                                    this.callBase()
                                },
                                footerItems() {
                                    return this._footerItems
                                }
                            },
                            editing: {
                                _refreshSummary() {
                                    if (recalculateWhileEditing(this) && !this.isSaving()) {
                                        this._dataController.refresh({
                                            load: true,
                                            changesOnly: true
                                        })
                                    }
                                },
                                _addChange(params) {
                                    const result = this.callBase.apply(this, arguments);
                                    if (params.type) {
                                        this._refreshSummary()
                                    }
                                    return result
                                },
                                _removeChange() {
                                    const result = this.callBase.apply(this, arguments);
                                    this._refreshSummary();
                                    return result
                                },
                                cancelEditData() {
                                    const result = this.callBase.apply(this, arguments);
                                    this._refreshSummary();
                                    return result
                                }
                            }
                        },
                        views: {
                            rowsView: {
                                _createRow(row) {
                                    const $row = this.callBase.apply(this, arguments);
                                    row && $row.addClass("groupFooter" === row.rowType ? "dx-datagrid-group-footer" : "");
                                    return $row
                                },
                                _renderCells($row, options) {
                                    this.callBase.apply(this, arguments);
                                    if ("group" === options.row.rowType && options.row.summaryCells && options.row.summaryCells.length) {
                                        this._renderGroupSummaryCells($row, options)
                                    }
                                },
                                _hasAlignByColumnSummaryItems: (columnIndex, options) => !(0, _type.isDefined)(options.columns[columnIndex].groupIndex) && options.row.summaryCells[columnIndex].length,
                                _getAlignByColumnCellCount(groupCellColSpan, options) {
                                    let alignByColumnCellCount = 0;
                                    for (let i = 1; i < groupCellColSpan; i++) {
                                        const columnIndex = options.row.summaryCells.length - i;
                                        alignByColumnCellCount = this._hasAlignByColumnSummaryItems(columnIndex, options) ? i : alignByColumnCellCount
                                    }
                                    return alignByColumnCellCount
                                },
                                _renderGroupSummaryCells($row, options) {
                                    const $groupCell = $row.children().last();
                                    const groupCellColSpan = Number($groupCell.attr("colSpan")) || 1;
                                    const alignByColumnCellCount = this._getAlignByColumnCellCount(groupCellColSpan, options);
                                    this._renderGroupSummaryCellsCore($groupCell, options, groupCellColSpan, alignByColumnCellCount)
                                },
                                _renderGroupSummaryCellsCore($groupCell, options, groupCellColSpan, alignByColumnCellCount) {
                                    if (alignByColumnCellCount > 0) {
                                        $groupCell.attr("colSpan", groupCellColSpan - alignByColumnCellCount);
                                        for (let i = 0; i < alignByColumnCellCount; i++) {
                                            const columnIndex = options.columns.length - alignByColumnCellCount + i;
                                            this._renderCell($groupCell.parent(), (0, _extend.extend)({
                                                column: options.columns[columnIndex],
                                                columnIndex: this._getSummaryCellIndex(columnIndex, options.columns)
                                            }, options))
                                        }
                                    }
                                },
                                _getSummaryCellIndex: columnIndex => columnIndex,
                                _getCellTemplate(options) {
                                    if (!options.column.command && !(0, _type.isDefined)(options.column.groupIndex) && options.summaryItems && options.summaryItems.length) {
                                        return renderSummaryCell
                                    }
                                    return this.callBase(options)
                                },
                                _getCellOptions(options) {
                                    const that = this;
                                    const parameters = that.callBase(options);
                                    if (options.row.summaryCells) {
                                        return (0, _extend.extend)(parameters, getSummaryCellOptions(that, options))
                                    }
                                    return parameters
                                }
                            }
                        }
                    }
                })
            },
        18107:
            /*!***************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/adaptivity/m_adaptivity.js ***!
              \***************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.adaptivityModule = void 0;
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../../core/guid */ 73176));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _dom = __webpack_require__( /*! ../../../../core/utils/dom */ 3532);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _size = __webpack_require__( /*! ../../../../core/utils/size */ 58664);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _click = __webpack_require__( /*! ../../../../events/click */ 95429);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../events/core/events_engine */ 55994));
                var _remove = __webpack_require__( /*! ../../../../events/remove */ 29007);
                var _index = __webpack_require__( /*! ../../../../events/utils/index */ 39611);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/message */ 28109));
                var _form = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/form */ 17737));
                var _themes = __webpack_require__( /*! ../../../../ui/themes */ 75811);
                var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 15943));
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 60082));

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

                function _inheritsLoose(subClass, superClass) {
                    subClass.prototype = Object.create(superClass.prototype);
                    subClass.prototype.constructor = subClass;
                    _setPrototypeOf(subClass, superClass)
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const COLUMN_VIEWS = ["columnHeadersView", "rowsView", "footerView"];

                function getColumnId(that, column) {
                    return that._columnsController.getColumnId(column)
                }

                function adaptiveCellTemplate(container, options) {
                    let $adaptiveColumnButton;
                    const $container = (0, _renderer.default)(container);
                    const adaptiveColumnsController = options.component.getController("adaptiveColumns");
                    if ("data" === options.rowType) {
                        $adaptiveColumnButton = (0, _renderer.default)("<span>").addClass(adaptiveColumnsController.addWidgetPrefix("adaptive-more"));
                        _events_engine.default.on($adaptiveColumnButton, (0, _index.addNamespace)(_click.name, "dxDataGridAdaptivity"), adaptiveColumnsController.createAction(() => {
                            adaptiveColumnsController.toggleExpandAdaptiveDetailRow(options.key)
                        }));
                        $adaptiveColumnButton.appendTo($container)
                    } else {
                        _m_utils.default.setEmptyText($container)
                    }
                }

                function focusCellHandler(e) {
                    var _a;
                    const $nextCell = null === (_a = e.data) || void 0 === _a ? void 0 : _a.$nextCell;
                    _events_engine.default.off($nextCell, "focus", focusCellHandler);
                    _events_engine.default.trigger($nextCell, "dxclick")
                }
                let AdaptiveColumnsController = function(_modules$ViewControll) {
                    _inheritsLoose(AdaptiveColumnsController, _modules$ViewControll);

                    function AdaptiveColumnsController() {
                        return _modules$ViewControll.apply(this, arguments) || this
                    }
                    var _proto = AdaptiveColumnsController.prototype;
                    _proto._isRowEditMode = function() {
                        const editMode = this._getEditMode();
                        return "row" === editMode
                    };
                    _proto._isItemModified = function(item, cellOptions) {
                        const columnIndex = this._columnsController.getVisibleIndex(item.column.index);
                        const rowIndex = this._dataController.getRowIndexByKey(cellOptions.key);
                        const row = this._dataController.items()[rowIndex + 1];
                        return row && row.modifiedValues && (0, _type.isDefined)(row.modifiedValues[columnIndex])
                    };
                    _proto._renderFormViewTemplate = function(item, cellOptions, $container) {
                        const that = this;
                        const {
                            column: column
                        } = item;
                        const focusAction = that.createAction(() => {
                            if (that._editingController.isEditing()) {
                                _events_engine.default.trigger($container, _click.name)
                            }
                        });
                        const rowData = cellOptions.row.data;
                        const value = column.calculateCellValue(rowData);
                        const displayValue = _m_utils.default.getDisplayValue(column, value, rowData, cellOptions.rowType);
                        const text = _m_utils.default.formatValue(displayValue, column);
                        const isCellOrBatchEditMode = this._editingController.isCellOrBatchEditMode();
                        const rowsView = that._rowsView;
                        if (column.allowEditing && that.getController("keyboardNavigation").isKeyboardEnabled()) {
                            $container.attr("tabIndex", that.option("tabIndex"));
                            if (isCellOrBatchEditMode) {
                                _events_engine.default.off($container, "focus", focusAction);
                                _events_engine.default.on($container, "focus", focusAction)
                            }
                        }
                        if (column.cellTemplate) {
                            const templateOptions = (0, _extend.extend)({}, cellOptions, {
                                value: value,
                                displayValue: displayValue,
                                text: text,
                                column: column
                            });
                            rowsView.renderTemplate($container, column.cellTemplate, templateOptions, (0, _dom.isElementInDom)($container)).done(() => {
                                rowsView._cellPrepared($container, cellOptions)
                            })
                        } else {
                            const container = $container.get(0);
                            if (column.encodeHtml) {
                                container.textContent = text
                            } else {
                                container.innerHTML = text
                            }
                            $container.addClass("dx-adaptive-item-text");
                            if (!(0, _type.isDefined)(text) || "" === text) {
                                $container.html("&nbsp;")
                            }
                            if (!that._isRowEditMode()) {
                                if (that._isItemModified(item, cellOptions)) {
                                    $container.addClass("dx-item-modified")
                                }
                            }
                            rowsView._cellPrepared($container, cellOptions)
                        }
                    };
                    _proto._getTemplate = function(item, cellOptions, updateForm) {
                        const that = this;
                        const {
                            column: column
                        } = item;
                        const editingController = this.getController("editing");
                        return function(options, container) {
                            const $container = (0, _renderer.default)(container);
                            const columnIndex = that._columnsController.getVisibleIndex(column.index);
                            const templateOptions = (0, _extend.extend)({}, cellOptions);
                            const renderFormTemplate = function() {
                                const isItemEdited = that._isItemEdited(item);
                                templateOptions.value = cellOptions.row.values[columnIndex];
                                if (isItemEdited || column.showEditorAlways) {
                                    editingController.renderFormEditorTemplate(templateOptions, item, options, $container, !isItemEdited)
                                } else {
                                    templateOptions.column = column;
                                    templateOptions.columnIndex = columnIndex;
                                    that._renderFormViewTemplate(item, templateOptions, $container)
                                }
                            };
                            renderFormTemplate();
                            if (templateOptions.watch) {
                                const dispose = templateOptions.watch(() => ({
                                    isItemEdited: that._isItemEdited(item),
                                    value: cellOptions.row.values[columnIndex]
                                }), () => {
                                    $container.contents().remove();
                                    $container.removeClass("dx-adaptive-item-text");
                                    renderFormTemplate()
                                });
                                _events_engine.default.on($container, _remove.removeEvent, dispose)
                            }
                        }
                    };
                    _proto._isVisibleColumnsValid = function(visibleColumns) {
                        if (visibleColumns < 2) {
                            return false
                        }
                        if (visibleColumns.length - function() {
                                let result = 0;
                                for (let j = 0; j < visibleColumns.length; j++) {
                                    const visibleColumn = visibleColumns[j];
                                    if (visibleColumn.command) {
                                        result++
                                    }
                                }
                                return result
                            }() <= 1) {
                            return false
                        }
                        return true
                    };
                    _proto._calculatePercentWidths = function(widths, visibleColumns) {
                        const that = this;
                        let percentWidths = 0;
                        visibleColumns.forEach((item, index) => {
                            if ("adaptiveHidden" !== widths[index]) {
                                percentWidths += that._getItemPercentWidth(item)
                            }
                        });
                        return percentWidths
                    };
                    _proto._isPercentWidth = function(width) {
                        return (0, _type.isString)(width) && width.endsWith("%")
                    };
                    _proto._isColumnHidden = function(column) {
                        return this._hiddenColumns.filter(hiddenColumn => hiddenColumn.index === column.index).length > 0
                    };
                    _proto._getAverageColumnsWidth = function(containerWidth, columns, columnsCanFit) {
                        const that = this;
                        let fixedColumnsWidth = 0;
                        let columnsWithoutFixedWidthCount = 0;
                        columns.forEach(column => {
                            if (!that._isColumnHidden(column)) {
                                const {
                                    width: width
                                } = column;
                                if ((0, _type.isDefined)(width) && !isNaN(parseFloat(width))) {
                                    fixedColumnsWidth += that._isPercentWidth(width) ? that._calculatePercentWidth({
                                        visibleIndex: column.visibleIndex,
                                        columnsCount: columns.length,
                                        columnsCanFit: columnsCanFit,
                                        bestFitWidth: column.bestFitWidth,
                                        columnWidth: width,
                                        containerWidth: containerWidth
                                    }) : parseFloat(width)
                                } else {
                                    columnsWithoutFixedWidthCount++
                                }
                            }
                        });
                        return (containerWidth - fixedColumnsWidth) / columnsWithoutFixedWidthCount
                    };
                    _proto._calculateColumnWidth = function(column, containerWidth, contentColumns, columnsCanFit) {
                        const columnId = getColumnId(this, column);
                        const widthOption = this._columnsController.columnOption(columnId, "width");
                        const bestFitWidth = this._columnsController.columnOption(columnId, "bestFitWidth");
                        const columnsCount = contentColumns.length;
                        let colWidth;
                        if (widthOption && "auto" !== widthOption) {
                            if (this._isPercentWidth(widthOption)) {
                                colWidth = this._calculatePercentWidth({
                                    visibleIndex: column.visibleIndex,
                                    columnsCount: columnsCount,
                                    columnsCanFit: columnsCanFit,
                                    bestFitWidth: bestFitWidth,
                                    columnWidth: widthOption,
                                    containerWidth: containerWidth
                                })
                            } else {
                                return parseFloat(widthOption)
                            }
                        } else {
                            const columnAutoWidth = this.option("columnAutoWidth");
                            colWidth = columnAutoWidth || !!column.command ? bestFitWidth : this._getAverageColumnsWidth(containerWidth, contentColumns, columnsCanFit)
                        }
                        return colWidth
                    };
                    _proto._calculatePercentWidth = function(options) {
                        const columnFitted = options.visibleIndex < options.columnsCount - 1 && options.columnsCanFit;
                        const partialWidth = options.containerWidth * parseFloat(options.columnWidth) / 100;
                        const resultWidth = options.columnsCanFit && partialWidth < options.bestFitWidth ? options.bestFitWidth : partialWidth;
                        return columnFitted ? options.containerWidth * parseFloat(options.columnWidth) / 100 : resultWidth
                    };
                    _proto._getNotTruncatedColumnWidth = function(column, containerWidth, contentColumns, columnsCanFit) {
                        const columnId = getColumnId(this, column);
                        const widthOption = this._columnsController.columnOption(columnId, "width");
                        const bestFitWidth = this._columnsController.columnOption(columnId, "bestFitWidth");
                        if (widthOption && "auto" !== widthOption && !this._isPercentWidth(widthOption)) {
                            return parseFloat(widthOption)
                        }
                        const colWidth = this._calculateColumnWidth(column, containerWidth, contentColumns, columnsCanFit);
                        return colWidth < bestFitWidth ? null : colWidth
                    };
                    _proto._getItemPercentWidth = function(item) {
                        let result = 0;
                        if (item.width && this._isPercentWidth(item.width)) {
                            result = parseFloat(item.width)
                        }
                        return result
                    };
                    _proto._getCommandColumnsWidth = function() {
                        const that = this;
                        const columns = that._columnsController.getVisibleColumns();
                        let colWidth = 0;
                        (0, _iterator.each)(columns, (index, column) => {
                            if (column.index < 0 || column.command) {
                                colWidth += that._columnsController.columnOption(getColumnId(that, column), "bestFitWidth") || 0
                            }
                        });
                        return colWidth
                    };
                    _proto._isItemEdited = function(item) {
                        if (this.isFormOrPopupEditMode()) {
                            return false
                        }
                        if (this._isRowEditMode()) {
                            const editRowKey = this.option("editing.editRowKey");
                            if ((0, _common.equalByValue)(editRowKey, this._dataController.adaptiveExpandedKey())) {
                                return true
                            }
                        } else {
                            const rowIndex = this._dataController.getRowIndexByKey(this._dataController.adaptiveExpandedKey()) + 1;
                            const columnIndex = this._columnsController.getVisibleIndex(item.column.index);
                            return this._editingController.isEditCell(rowIndex, columnIndex)
                        }
                    };
                    _proto._getFormItemsByHiddenColumns = function(hiddenColumns) {
                        const items = [];
                        (0, _iterator.each)(hiddenColumns, (_, column) => {
                            items.push({
                                column: column,
                                name: column.name,
                                dataField: column.dataField,
                                visibleIndex: column.visibleIndex
                            })
                        });
                        return items
                    };
                    _proto._getAdaptiveColumnVisibleIndex = function(visibleColumns) {
                        for (let i = 0; i < visibleColumns.length; i++) {
                            const column = visibleColumns[i];
                            if ("adaptive" === column.command) {
                                return i
                            }
                        }
                        return
                    };
                    _proto._hideAdaptiveColumn = function(resultWidths, visibleColumns) {
                        const visibleIndex = this._getAdaptiveColumnVisibleIndex(visibleColumns);
                        if ((0, _type.isDefined)(visibleIndex)) {
                            resultWidths[visibleIndex] = "adaptiveHidden";
                            this._hideVisibleColumn({
                                isCommandColumn: true,
                                visibleIndex: visibleIndex
                            })
                        }
                    };
                    _proto._showHiddenCellsInView = function(_ref) {
                        let {
                            $cells: $cells,
                            isCommandColumn: isCommandColumn
                        } = _ref;
                        let cssClassNameToRemove = this.addWidgetPrefix("hidden-column");
                        if (isCommandColumn) {
                            cssClassNameToRemove = "dx-command-adaptive-hidden";
                            $cells.attr({
                                tabIndex: 0,
                                "aria-hidden": null
                            }).removeClass(cssClassNameToRemove)
                        } else {
                            $cells.removeClass(cssClassNameToRemove)
                        }
                    };
                    _proto._showHiddenColumns = function() {
                        for (let i = 0; i < COLUMN_VIEWS.length; i++) {
                            const view = this.getView(COLUMN_VIEWS[i]);
                            if (view && view.isVisible() && view.element()) {
                                const viewName = view.name;
                                const $hiddenCommandCells = view.element().find(".".concat("dx-command-adaptive-hidden"));
                                this._showHiddenCellsInView({
                                    viewName: viewName,
                                    $cells: $hiddenCommandCells,
                                    isCommandColumn: true
                                });
                                const $hiddenCells = view.element().find(".".concat(this.addWidgetPrefix("hidden-column")));
                                this._showHiddenCellsInView({
                                    viewName: viewName,
                                    $cells: $hiddenCells
                                })
                            }
                        }
                    };
                    _proto._isCellValid = function($cell) {
                        return $cell && $cell.length && !$cell.hasClass("dx-master-detail-cell") && !$cell.hasClass("dx-group-cell")
                    };
                    _proto._hideVisibleColumn = function(_ref2) {
                        let {
                            isCommandColumn: isCommandColumn,
                            visibleIndex: visibleIndex
                        } = _ref2;
                        const that = this;
                        COLUMN_VIEWS.forEach(viewName => {
                            const view = that.getView(viewName);
                            view && that._hideVisibleColumnInView({
                                view: view,
                                isCommandColumn: isCommandColumn,
                                visibleIndex: visibleIndex
                            })
                        })
                    };
                    _proto._hideVisibleColumnInView = function(_ref3) {
                        let {
                            view: view,
                            isCommandColumn: isCommandColumn,
                            visibleIndex: visibleIndex
                        } = _ref3;
                        const viewName = view.name;
                        let $cellElement;
                        const column = this._columnsController.getVisibleColumns()[visibleIndex];
                        const editFormRowIndex = this._editingController && this._editingController.getEditFormRowIndex();
                        if (view && view.isVisible() && column) {
                            const rowsCount = view.getRowsCount();
                            const $rowElements = view._getRowElements();
                            for (let rowIndex = 0; rowIndex < rowsCount; rowIndex++) {
                                const cancelClassAdding = rowIndex === editFormRowIndex && "rowsView" === viewName && "popup" !== this.option("editing.mode");
                                if (!cancelClassAdding) {
                                    const currentVisibleIndex = "columnHeadersView" === viewName ? this._columnsController.getVisibleIndex(column.index, rowIndex) : visibleIndex;
                                    if (currentVisibleIndex >= 0) {
                                        const $rowElement = $rowElements.eq(rowIndex);
                                        $cellElement = this._findCellElementInRow($rowElement, currentVisibleIndex);
                                        this._isCellValid($cellElement) && this._hideVisibleCellInView({
                                            viewName: viewName,
                                            isCommandColumn: isCommandColumn,
                                            $cell: $cellElement
                                        })
                                    }
                                }
                            }
                        }
                    };
                    _proto._findCellElementInRow = function($rowElement, visibleColumnIndex) {
                        const $rowCells = $rowElement.children();
                        let visibleIndex = visibleColumnIndex;
                        let cellIsInsideGroup = false;
                        if ($rowElement.hasClass("dx-group-row")) {
                            const $groupCell = $rowElement.find(".".concat("dx-group-cell"));
                            const colSpan = $groupCell.attr("colspan");
                            if ($groupCell.length && (0, _type.isDefined)(colSpan)) {
                                const groupCellLength = parseInt(colSpan);
                                const endGroupIndex = $groupCell.index() + groupCellLength - 1;
                                if (visibleColumnIndex > endGroupIndex) {
                                    visibleIndex = visibleColumnIndex - groupCellLength + 1
                                } else {
                                    cellIsInsideGroup = true
                                }
                            }
                        }
                        const $cellElement = !cellIsInsideGroup ? $rowCells.eq(visibleIndex) : void 0;
                        return $cellElement
                    };
                    _proto._hideVisibleCellInView = function(_ref4) {
                        let {
                            $cell: $cell,
                            isCommandColumn: isCommandColumn
                        } = _ref4;
                        const cssClassNameToAdd = isCommandColumn ? "dx-command-adaptive-hidden" : this.addWidgetPrefix("hidden-column");
                        $cell.attr({
                            tabIndex: -1,
                            "aria-hidden": true
                        }).addClass(cssClassNameToAdd)
                    };
                    _proto._getEditMode = function() {
                        return this._editingController.getEditMode()
                    };
                    _proto.isFormOrPopupEditMode = function() {
                        const editMode = this._getEditMode();
                        return "form" === editMode || "popup" === editMode
                    };
                    _proto.hideRedundantColumns = function(resultWidths, visibleColumns, hiddenQueue) {
                        const that = this;
                        this._hiddenColumns = [];
                        if (that._isVisibleColumnsValid(visibleColumns) && hiddenQueue.length) {
                            let totalWidth = 0;
                            const $rootElement = that.component.$element();
                            let rootElementWidth = (0, _size.getWidth)($rootElement) - that._getCommandColumnsWidth();
                            const getVisibleContentColumns = function() {
                                return visibleColumns.filter(item => !item.command && 0 === this._hiddenColumns.filter(i => i.index === item.index).length)
                            }.bind(this);
                            let visibleContentColumns = getVisibleContentColumns();
                            const contentColumnsCount = visibleContentColumns.length;
                            let i;
                            let hasHiddenColumns;
                            let needHideColumn;
                            do {
                                needHideColumn = false;
                                totalWidth = 0;
                                const percentWidths = that._calculatePercentWidths(resultWidths, visibleColumns);
                                const columnsCanFit = percentWidths < 100 && 0 !== percentWidths;
                                for (i = 0; i < visibleColumns.length; i++) {
                                    const visibleColumn = visibleColumns[i];
                                    let columnWidth = that._getNotTruncatedColumnWidth(visibleColumn, rootElementWidth, visibleContentColumns, columnsCanFit);
                                    const columnId = getColumnId(that, visibleColumn);
                                    const widthOption = that._columnsController.columnOption(columnId, "width");
                                    const minWidth = that._columnsController.columnOption(columnId, "minWidth");
                                    const columnBestFitWidth = that._columnsController.columnOption(columnId, "bestFitWidth");
                                    if ("adaptiveHidden" === resultWidths[i]) {
                                        hasHiddenColumns = true;
                                        continue
                                    }
                                    if (!columnWidth && !visibleColumn.command && !visibleColumn.fixed) {
                                        needHideColumn = true;
                                        break
                                    }
                                    if (!widthOption || "auto" === widthOption) {
                                        columnWidth = Math.max(columnBestFitWidth || 0, minWidth || 0)
                                    }
                                    if ("adaptive" !== visibleColumn.command || hasHiddenColumns) {
                                        totalWidth += columnWidth
                                    }
                                }
                                needHideColumn = needHideColumn || totalWidth > (0, _size.getWidth)($rootElement);
                                if (needHideColumn) {
                                    const column = hiddenQueue.pop();
                                    const visibleIndex = that._columnsController.getVisibleIndex(column.index);
                                    rootElementWidth += that._calculateColumnWidth(column, rootElementWidth, visibleContentColumns, columnsCanFit);
                                    that._hideVisibleColumn({
                                        visibleIndex: visibleIndex
                                    });
                                    resultWidths[visibleIndex] = "adaptiveHidden";
                                    this._hiddenColumns.push(column);
                                    visibleContentColumns = getVisibleContentColumns()
                                }
                            } while (needHideColumn && visibleContentColumns.length > 1 && hiddenQueue.length);
                            if (contentColumnsCount === visibleContentColumns.length) {
                                that._hideAdaptiveColumn(resultWidths, visibleColumns)
                            }
                        } else {
                            that._hideAdaptiveColumn(resultWidths, visibleColumns)
                        }
                    };
                    _proto.getAdaptiveDetailItems = function() {
                        return this._$itemContents
                    };
                    _proto.getItemContentByColumnIndex = function(visibleColumnIndex) {
                        let $itemContent;
                        for (let i = 0; i < this._$itemContents.length; i++) {
                            $itemContent = this._$itemContents.eq(i);
                            const item = $itemContent.data("dx-form-item");
                            if (item && item.column && this._columnsController.getVisibleIndex(item.column.index) === visibleColumnIndex) {
                                return $itemContent
                            }
                        }
                    };
                    _proto.toggleExpandAdaptiveDetailRow = function(key, alwaysExpanded) {
                        if (!(this.isFormOrPopupEditMode() && this._editingController.isEditing())) {
                            this.getController("data").toggleExpandAdaptiveDetailRow(key, alwaysExpanded)
                        }
                    };
                    _proto.createFormByHiddenColumns = function(container, options) {
                        const that = this;
                        const $container = (0, _renderer.default)(container);
                        const userFormOptions = {
                            items: that._getFormItemsByHiddenColumns(that._hiddenColumns),
                            formID: "dx-".concat(new _guid.default)
                        };
                        const defaultFormOptions = (0, _themes.isMaterial)() ? {
                            colCount: 2
                        } : {};
                        this.executeAction("onAdaptiveDetailRowPreparing", {
                            formOptions: userFormOptions
                        });
                        that._$itemContents = null;
                        that._form = that._createComponent((0, _renderer.default)("<div>").appendTo($container), _form.default, (0, _extend.extend)(defaultFormOptions, userFormOptions, {
                            customizeItem(item) {
                                const column = item.column || that._columnsController.columnOption(item.name || item.dataField);
                                if (column) {
                                    item.label = item.label || {};
                                    item.label.text = item.label.text || column.caption;
                                    item.column = column;
                                    item.template = that._getTemplate(item, options, that.updateForm.bind(that))
                                }
                                userFormOptions.customizeItem && userFormOptions.customizeItem.call(this, item)
                            },
                            onContentReady(e) {
                                userFormOptions.onContentReady && userFormOptions.onContentReady.call(this, e);
                                that._$itemContents = $container.find(".".concat("dx-field-item-content"))
                            }
                        }))
                    };
                    _proto.hasAdaptiveDetailRowExpanded = function() {
                        return (0, _type.isDefined)(this._dataController.adaptiveExpandedKey())
                    };
                    _proto.updateForm = function(hiddenColumns) {
                        if (this.hasAdaptiveDetailRowExpanded()) {
                            if (this._form && (0, _type.isDefined)(this._form._contentReadyAction)) {
                                if (hiddenColumns && hiddenColumns.length) {
                                    this._form.option("items", this._getFormItemsByHiddenColumns(hiddenColumns))
                                } else {
                                    this._form.repaint()
                                }
                            }
                        }
                    };
                    _proto.updateHidingQueue = function(columns) {
                        const that = this;
                        const hideableColumns = columns.filter(column => column.visible && !column.type && !column.fixed && !((0, _type.isDefined)(column.groupIndex) && column.groupIndex >= 0));
                        let columnsHasHidingPriority;
                        let i;
                        that._hidingColumnsQueue = [];
                        if (that.option("allowColumnResizing") && "widget" === that.option("columnResizingMode")) {
                            return that._hidingColumnsQueue
                        }
                        for (i = 0; i < hideableColumns.length; i++) {
                            if ((0, _type.isDefined)(hideableColumns[i].hidingPriority) && hideableColumns[i].hidingPriority >= 0) {
                                columnsHasHidingPriority = true;
                                that._hidingColumnsQueue[hideableColumns[i].hidingPriority] = hideableColumns[i]
                            }
                        }
                        if (columnsHasHidingPriority) {
                            that._hidingColumnsQueue.reverse()
                        } else if (that.option("columnHidingEnabled")) {
                            for (i = 0; i < hideableColumns.length; i++) {
                                const visibleIndex = that._columnsController.getVisibleIndex(hideableColumns[i].index);
                                that._hidingColumnsQueue[visibleIndex] = hideableColumns[i]
                            }
                        }
                        that._hidingColumnsQueue = that._hidingColumnsQueue.filter(Object);
                        return that._hidingColumnsQueue
                    };
                    _proto.getHiddenColumns = function() {
                        return this._hiddenColumns
                    };
                    _proto.hasHiddenColumns = function() {
                        return this._hiddenColumns.length > 0
                    };
                    _proto.getHidingColumnsQueue = function() {
                        return this._hidingColumnsQueue
                    };
                    _proto.init = function() {
                        const that = this;
                        that._columnsController = that.getController("columns");
                        that._dataController = that.getController("data");
                        that._rowsView = that.getView("rowsView");
                        that._columnsController.addCommandColumn({
                            type: "adaptive",
                            command: "adaptive",
                            visible: true,
                            adaptiveHidden: true,
                            cssClass: "dx-command-adaptive",
                            alignment: "center",
                            width: "auto",
                            cellTemplate: adaptiveCellTemplate,
                            fixedPosition: "right"
                        });
                        that._columnsController.columnsChanged.add(() => {
                            const isAdaptiveVisible = !!that.updateHidingQueue(that._columnsController.getColumns()).length;
                            that._columnsController.columnOption("command:adaptive", "adaptiveHidden", !isAdaptiveVisible, true)
                        });
                        that._editingController = that.getController("editing");
                        that._hidingColumnsQueue = [];
                        that._hiddenColumns = [];
                        that.createAction("onAdaptiveDetailRowPreparing");
                        _modules$ViewControll.prototype.init.call(this)
                    };
                    _proto.optionChanged = function(args) {
                        if ("columnHidingEnabled" === args.name) {
                            this._columnsController.columnOption("command:adaptive", "adaptiveHidden", !args.value)
                        }
                        _modules$ViewControll.prototype.optionChanged.call(this, args)
                    };
                    _proto.publicMethods = function() {
                        return ["isAdaptiveDetailRowExpanded", "expandAdaptiveDetailRow", "collapseAdaptiveDetailRow"]
                    };
                    _proto.isAdaptiveDetailRowExpanded = function(key) {
                        const dataController = this._dataController;
                        return dataController.adaptiveExpandedKey() && (0, _common.equalByValue)(dataController.adaptiveExpandedKey(), key)
                    };
                    _proto.expandAdaptiveDetailRow = function(key) {
                        if (!this.hasAdaptiveDetailRowExpanded()) {
                            this.toggleExpandAdaptiveDetailRow(key)
                        }
                    };
                    _proto.collapseAdaptiveDetailRow = function() {
                        if (this.hasAdaptiveDetailRowExpanded()) {
                            this.toggleExpandAdaptiveDetailRow()
                        }
                    };
                    _proto.updateCommandAdaptiveAriaLabel = function(key, label) {
                        const rowIndex = this._dataController.getRowIndexByKey(key);
                        if (-1 === rowIndex) {
                            return
                        }
                        const $row = (0, _renderer.default)(this.component.getRowElement(rowIndex));
                        this.setCommandAdaptiveAriaLabel($row, label)
                    };
                    _proto.setCommandAdaptiveAriaLabel = function($row, labelName) {
                        const $adaptiveCommand = $row.find(".dx-command-adaptive");
                        $adaptiveCommand.attr("aria-label", _message.default.format(labelName))
                    };
                    return AdaptiveColumnsController
                }(_m_modules.default.ViewController);
                const adaptivityModule = {
                    defaultOptions: () => ({
                        columnHidingEnabled: false,
                        onAdaptiveDetailRowPreparing: null
                    }),
                    controllers: {
                        adaptiveColumns: AdaptiveColumnsController
                    },
                    extenders: {
                        views: {
                            rowsView: Base => function(_Base2) {
                                _inheritsLoose(AdaptivityRowsViewExtender, _Base2);

                                function AdaptivityRowsViewExtender() {
                                    return _Base2.apply(this, arguments) || this
                                }
                                var _proto3 = AdaptivityRowsViewExtender.prototype;
                                _proto3._getCellTemplate = function(options) {
                                    const that = this;
                                    const {
                                        column: column
                                    } = options;
                                    if ("detailAdaptive" === options.rowType && "detail" === column.command) {
                                        return function(container, options) {
                                            that._adaptiveColumnsController.createFormByHiddenColumns((0, _renderer.default)(container), options)
                                        }
                                    }
                                    return _Base2.prototype._getCellTemplate.call(this, options)
                                };
                                _proto3._createRow = function(row) {
                                    const $row = _Base2.prototype._createRow.apply(this, arguments);
                                    if (row && "detailAdaptive" === row.rowType && row.key === this._dataController.adaptiveExpandedKey()) {
                                        $row.addClass("dx-adaptive-detail-row")
                                    }
                                    return $row
                                };
                                _proto3._renderCells = function($row, options) {
                                    _Base2.prototype._renderCells.call(this, $row, options);
                                    const adaptiveColumnsController = this._adaptiveColumnsController;
                                    const hidingColumnsQueueLength = adaptiveColumnsController.getHidingColumnsQueue().length;
                                    const hiddenColumnsLength = adaptiveColumnsController.getHiddenColumns().length;
                                    if (hidingColumnsQueueLength && !hiddenColumnsLength) {
                                        (function($row) {
                                            return $row.find("td:not(.dx-datagrid-hidden-column):not([class*='dx-command-'])")
                                        })($row).last().addClass("dx-last-data-cell")
                                    }
                                    if ("data" === options.row.rowType) {
                                        adaptiveColumnsController.setCommandAdaptiveAriaLabel($row, "dxDataGrid-ariaAdaptiveExpand")
                                    }
                                };
                                _proto3._getColumnIndexByElementCore = function($element) {
                                    const $itemContent = $element.closest(".".concat("dx-field-item-content"));
                                    if ($itemContent.length && $itemContent.closest(this.component.$element()).length) {
                                        const formItem = $itemContent.length ? $itemContent.first().data("dx-form-item") : null;
                                        return formItem && formItem.column && this._columnsController.getVisibleIndex(formItem.column.index)
                                    }
                                    return _Base2.prototype._getColumnIndexByElementCore.call(this, $element)
                                };
                                _proto3._cellPrepared = function($cell, options) {
                                    _Base2.prototype._cellPrepared.apply(this, arguments);
                                    if ("detailAdaptive" !== options.row.rowType && "adaptiveHidden" === options.column.visibleWidth) {
                                        $cell.addClass(this.addWidgetPrefix("hidden-column"))
                                    }
                                };
                                _proto3.getCell = function(cellPosition, rows) {
                                    const item = this._dataController.items()[null === cellPosition || void 0 === cellPosition ? void 0 : cellPosition.rowIndex];
                                    if ("detailAdaptive" === (null === item || void 0 === item ? void 0 : item.rowType)) {
                                        const $adaptiveDetailItems = this._adaptiveColumnsController.getAdaptiveDetailItems();
                                        return _Base2.prototype.getCell.call(this, cellPosition, rows, $adaptiveDetailItems)
                                    }
                                    return _Base2.prototype.getCell.apply(this, arguments)
                                };
                                _proto3._getCellElement = function(rowIndex, columnIdentifier) {
                                    const item = this._dataController.items()[rowIndex];
                                    if (item && "detailAdaptive" === item.rowType) {
                                        return this._adaptiveColumnsController.getItemContentByColumnIndex(columnIdentifier)
                                    }
                                    return _Base2.prototype._getCellElement.apply(this, arguments)
                                };
                                _proto3.getContextMenuItems = function(options) {
                                    var _a;
                                    if (options.row && "detailAdaptive" === options.row.rowType) {
                                        const view = this.component.getView("columnHeadersView");
                                        const formItem = (0, _renderer.default)(options.targetElement).closest(".dx-field-item-label").next().data("dx-form-item");
                                        options.column = formItem ? formItem.column : options.column;
                                        return view.getContextMenuItems && view.getContextMenuItems(options)
                                    }
                                    return null === (_a = _Base2.prototype.getContextMenuItems) || void 0 === _a ? void 0 : _a.call(this, options)
                                };
                                _proto3.isClickableElement = function($target) {
                                    var _a, _b;
                                    const isClickable = null !== (_b = null === (_a = _Base2.prototype.isClickableElement) || void 0 === _a ? void 0 : _a.call(this, $target)) && void 0 !== _b ? _b : false;
                                    return isClickable || !!$target.closest(".".concat("dx-command-adaptive")).length
                                };
                                _proto3.init = function() {
                                    _Base2.prototype.init.call(this);
                                    this._adaptiveColumnsController = this.getController("adaptiveColumns")
                                };
                                return AdaptivityRowsViewExtender
                            }(Base)
                        },
                        controllers: {
                            export: Base => function(_Base3) {
                                _inheritsLoose(AdaptivityExportExtender, _Base3);

                                function AdaptivityExportExtender() {
                                    return _Base3.apply(this, arguments) || this
                                }
                                var _proto4 = AdaptivityExportExtender.prototype;
                                _proto4._updateColumnWidth = function(column, width) {
                                    _Base3.prototype._updateColumnWidth.call(this, column, "adaptiveHidden" === column.visibleWidth ? column.bestFitWidth : width)
                                };
                                return AdaptivityExportExtender
                            }(Base),
                            columnsResizer: Base => function(_Base4) {
                                _inheritsLoose(AdaptivityColumnsResizerExtender, _Base4);

                                function AdaptivityColumnsResizerExtender() {
                                    return _Base4.apply(this, arguments) || this
                                }
                                var _proto5 = AdaptivityColumnsResizerExtender.prototype;
                                _proto5._pointCreated = function(point, cellsLength, columns) {
                                    const result = _Base4.prototype._pointCreated.call(this, point, cellsLength, columns);
                                    const currentColumn = columns[point.columnIndex] || {};
                                    const nextColumnIndex = this._getNextColumnIndex(point.columnIndex);
                                    const nextColumn = columns[nextColumnIndex] || {};
                                    const hasHiddenColumnsOnly = nextColumnIndex !== point.columnIndex + 1 && nextColumn.command;
                                    const hasAdaptiveHiddenWidth = "adaptiveHidden" === currentColumn.visibleWidth || hasHiddenColumnsOnly;
                                    return result || hasAdaptiveHiddenWidth
                                };
                                _proto5._getNextColumnIndex = function(currentColumnIndex) {
                                    const visibleColumns = this._columnsController.getVisibleColumns();
                                    let index = _Base4.prototype._getNextColumnIndex.call(this, currentColumnIndex);
                                    while (visibleColumns[index] && "adaptiveHidden" === visibleColumns[index].visibleWidth) {
                                        index++
                                    }
                                    return index
                                };
                                return AdaptivityColumnsResizerExtender
                            }(Base),
                            draggingHeader: Base => function(_Base5) {
                                _inheritsLoose(AdaptivityDraggingHeaderExtender, _Base5);

                                function AdaptivityDraggingHeaderExtender() {
                                    return _Base5.apply(this, arguments) || this
                                }
                                var _proto6 = AdaptivityDraggingHeaderExtender.prototype;
                                _proto6._pointCreated = function(point, columns, location, sourceColumn) {
                                    const result = _Base5.prototype._pointCreated.call(this, point, columns, location, sourceColumn);
                                    const column = columns[point.columnIndex - 1] || {};
                                    const hasAdaptiveHiddenWidth = "adaptiveHidden" === column.visibleWidth;
                                    return result || hasAdaptiveHiddenWidth
                                };
                                return AdaptivityDraggingHeaderExtender
                            }(Base),
                            editing: Base => function(_Base6) {
                                _inheritsLoose(AdaptivityEditingExtender, _Base6);

                                function AdaptivityEditingExtender() {
                                    return _Base6.apply(this, arguments) || this
                                }
                                var _proto7 = AdaptivityEditingExtender.prototype;
                                _proto7._isRowEditMode = function() {
                                    return "row" === this.getEditMode()
                                };
                                _proto7._getFormEditItemTemplate = function(cellOptions, column) {
                                    if ("row" !== this.getEditMode() && "detailAdaptive" === cellOptions.rowType) {
                                        cellOptions.columnIndex = this._columnsController.getVisibleIndex(column.index);
                                        return this.getColumnTemplate(cellOptions)
                                    }
                                    return _Base6.prototype._getFormEditItemTemplate.call(this, cellOptions, column)
                                };
                                _proto7._closeEditItem = function($targetElement) {
                                    const $itemContents = $targetElement.closest(".".concat("dx-field-item-content"));
                                    const rowIndex = this._dataController.getRowIndexByKey(this._dataController.adaptiveExpandedKey()) + 1;
                                    const formItem = $itemContents.length ? $itemContents.first().data("dx-form-item") : null;
                                    const columnIndex = formItem && formItem.column && this._columnsController.getVisibleIndex(formItem.column.index);
                                    if (!this.isEditCell(rowIndex, columnIndex)) {
                                        _Base6.prototype._closeEditItem.call(this, $targetElement)
                                    }
                                };
                                _proto7._beforeUpdateItems = function(rowIndices, rowIndex) {
                                    if (!this._adaptiveController.isFormOrPopupEditMode() && this._adaptiveController.hasHiddenColumns()) {
                                        const items = this._dataController.items();
                                        const item = items[rowIndex];
                                        const oldExpandRowIndex = _m_utils.default.getIndexByKey(this._dataController.adaptiveExpandedKey(), items);
                                        this._isForceRowAdaptiveExpand = !this._adaptiveController.hasAdaptiveDetailRowExpanded();
                                        if (oldExpandRowIndex >= 0) {
                                            rowIndices.push(oldExpandRowIndex + 1)
                                        }
                                        rowIndices.push(rowIndex + 1);
                                        this._dataController.adaptiveExpandedKey(item.key)
                                    }
                                };
                                _proto7._afterInsertRow = function(key) {
                                    _Base6.prototype._afterInsertRow.apply(this, arguments);
                                    if (this._adaptiveController.hasHiddenColumns()) {
                                        this._adaptiveController.toggleExpandAdaptiveDetailRow(key, this.isRowEditMode());
                                        this._isForceRowAdaptiveExpand = true
                                    }
                                };
                                _proto7._collapseAdaptiveDetailRow = function() {
                                    if (this._isRowEditMode() && this._isForceRowAdaptiveExpand) {
                                        this._adaptiveController.collapseAdaptiveDetailRow();
                                        this._isForceRowAdaptiveExpand = false
                                    }
                                };
                                _proto7._cancelEditAdaptiveDetailRow = function() {
                                    if (this._adaptiveController.hasHiddenColumns()) {
                                        this._collapseAdaptiveDetailRow()
                                    }
                                };
                                _proto7._afterSaveEditData = function() {
                                    _Base6.prototype._afterSaveEditData.apply(this, arguments);
                                    const deferred = new _deferred.Deferred;
                                    if (this._isRowEditMode() && this._adaptiveController.hasHiddenColumns()) {
                                        (0, _deferred.when)(this.getController("validating").validate(true)).done(isValid => {
                                            if (isValid) {
                                                this._cancelEditAdaptiveDetailRow()
                                            }
                                            deferred.resolve()
                                        })
                                    } else {
                                        deferred.resolve()
                                    }
                                    return deferred.promise()
                                };
                                _proto7._beforeCancelEditData = function() {
                                    _Base6.prototype._beforeCancelEditData.call(this);
                                    this._cancelEditAdaptiveDetailRow()
                                };
                                _proto7._getRowIndicesForCascadeUpdating = function(row) {
                                    const rowIndices = _Base6.prototype._getRowIndicesForCascadeUpdating.apply(this, arguments);
                                    if (this._adaptiveController.isAdaptiveDetailRowExpanded(row.key)) {
                                        rowIndices.push("detailAdaptive" === row.rowType ? row.rowIndex - 1 : row.rowIndex + 1)
                                    }
                                    return rowIndices
                                };
                                _proto7._beforeCloseEditCellInBatchMode = function(rowIndices) {
                                    const expandedKey = this._dataController._adaptiveExpandedKey;
                                    if (expandedKey) {
                                        const rowIndex = _m_utils.default.getIndexByKey(expandedKey, this._dataController.items());
                                        if (rowIndex > -1) {
                                            rowIndices.unshift(rowIndex)
                                        }
                                    }
                                };
                                _proto7.editRow = function(rowIndex) {
                                    if (this._adaptiveController.isFormOrPopupEditMode()) {
                                        this._adaptiveController.collapseAdaptiveDetailRow()
                                    }
                                    return _Base6.prototype.editRow.call(this, rowIndex)
                                };
                                _proto7.deleteRow = function(rowIndex) {
                                    const rowKey = this._dataController.getKeyByRowIndex(rowIndex);
                                    if ("batch" === this.getEditMode() && this._adaptiveController.isAdaptiveDetailRowExpanded(rowKey)) {
                                        this._adaptiveController.collapseAdaptiveDetailRow()
                                    }
                                    _Base6.prototype.deleteRow.call(this, rowIndex)
                                };
                                _proto7.init = function() {
                                    _Base6.prototype.init.call(this);
                                    this._adaptiveController = this.getController("adaptiveColumns")
                                };
                                return AdaptivityEditingExtender
                            }(Base),
                            resizing: {
                                _needBestFit() {
                                    return this.callBase() || !!this._adaptiveColumnsController.getHidingColumnsQueue().length
                                },
                                _correctColumnWidths(resultWidths, visibleColumns) {
                                    const adaptiveController = this._adaptiveColumnsController;
                                    const oldHiddenColumns = adaptiveController.getHiddenColumns();
                                    const hidingColumnsQueue = adaptiveController.updateHidingQueue(this._columnsController.getColumns());
                                    adaptiveController.hideRedundantColumns(resultWidths, visibleColumns, hidingColumnsQueue);
                                    const hiddenColumns = adaptiveController.getHiddenColumns();
                                    if (adaptiveController.hasAdaptiveDetailRowExpanded()) {
                                        if (oldHiddenColumns.length !== hiddenColumns.length) {
                                            adaptiveController.updateForm(hiddenColumns)
                                        }
                                    }!hiddenColumns.length && adaptiveController.collapseAdaptiveDetailRow();
                                    return this.callBase.apply(this, arguments)
                                },
                                _toggleBestFitMode(isBestFit) {
                                    isBestFit && this._adaptiveColumnsController._showHiddenColumns();
                                    this.callBase(isBestFit)
                                },
                                _needStretch() {
                                    const adaptiveColumnsController = this._adaptiveColumnsController;
                                    return this.callBase.apply(this, arguments) || adaptiveColumnsController.getHidingColumnsQueue().length || adaptiveColumnsController.hasHiddenColumns()
                                },
                                init() {
                                    this._adaptiveColumnsController = this.getController("adaptiveColumns");
                                    this.callBase()
                                },
                                dispose() {
                                    this.callBase.apply(this, arguments);
                                    clearTimeout(this._updateScrollableTimeoutID)
                                }
                            },
                            data: Base => function(_Base7) {
                                _inheritsLoose(AdaptivityDataControllerExtender, _Base7);

                                function AdaptivityDataControllerExtender() {
                                    return _Base7.apply(this, arguments) || this
                                }
                                var _proto8 = AdaptivityDataControllerExtender.prototype;
                                _proto8._processItems = function(items, change) {
                                    const {
                                        changeType: changeType
                                    } = change;
                                    items = _Base7.prototype._processItems.apply(this, arguments);
                                    if ("loadingAll" === changeType || !(0, _type.isDefined)(this._adaptiveExpandedKey)) {
                                        return items
                                    }
                                    const expandRowIndex = _m_utils.default.getIndexByKey(this._adaptiveExpandedKey, items);
                                    const newMode = false === this.option("scrolling.legacyMode");
                                    if (expandRowIndex >= 0) {
                                        const item = items[expandRowIndex];
                                        items.splice(expandRowIndex + 1, 0, {
                                            visible: true,
                                            rowType: "detailAdaptive",
                                            key: item.key,
                                            data: item.data,
                                            node: item.node,
                                            modifiedValues: item.modifiedValues,
                                            isNewRow: item.isNewRow,
                                            values: item.values
                                        })
                                    } else if ("refresh" === changeType && !(newMode && change.repaintChangesOnly)) {
                                        this._adaptiveExpandedKey = void 0
                                    }
                                    return items
                                };
                                _proto8._getRowIndicesForExpand = function(key) {
                                    const rowIndices = _Base7.prototype._getRowIndicesForExpand.apply(this, arguments);
                                    if (this.getController("adaptiveColumns").isAdaptiveDetailRowExpanded(key)) {
                                        const lastRowIndex = rowIndices[rowIndices.length - 1];
                                        rowIndices.push(lastRowIndex + 1)
                                    }
                                    return rowIndices
                                };
                                _proto8.adaptiveExpandedKey = function(value) {
                                    if ((0, _type.isDefined)(value)) {
                                        this._adaptiveExpandedKey = value
                                    } else {
                                        return this._adaptiveExpandedKey
                                    }
                                };
                                _proto8.toggleExpandAdaptiveDetailRow = function(key, alwaysExpanded) {
                                    let oldExpandLoadedRowIndex = _m_utils.default.getIndexByKey(this._adaptiveExpandedKey, this._items);
                                    let newExpandLoadedRowIndex = _m_utils.default.getIndexByKey(key, this._items);
                                    if (oldExpandLoadedRowIndex >= 0 && oldExpandLoadedRowIndex === newExpandLoadedRowIndex && !alwaysExpanded) {
                                        key = void 0;
                                        newExpandLoadedRowIndex = -1
                                    }
                                    const oldKey = this._adaptiveExpandedKey;
                                    this._adaptiveExpandedKey = key;
                                    if (oldExpandLoadedRowIndex >= 0) {
                                        oldExpandLoadedRowIndex++
                                    }
                                    if (newExpandLoadedRowIndex >= 0) {
                                        newExpandLoadedRowIndex++
                                    }
                                    const rowIndexDelta = this.getRowIndexDelta();
                                    this.updateItems({
                                        allowInvisibleRowIndices: true,
                                        changeType: "update",
                                        rowIndices: [oldExpandLoadedRowIndex - rowIndexDelta, newExpandLoadedRowIndex - rowIndexDelta]
                                    });
                                    const adaptiveColumnsController = this.getController("adaptiveColumns");
                                    adaptiveColumnsController.updateCommandAdaptiveAriaLabel(key, "dxDataGrid-ariaAdaptiveCollapse");
                                    adaptiveColumnsController.updateCommandAdaptiveAriaLabel(oldKey, "dxDataGrid-ariaAdaptiveExpand")
                                };
                                _proto8.init = function() {
                                    _Base7.prototype.init.call(this);
                                    this._adaptiveExpandedKey = void 0
                                };
                                return AdaptivityDataControllerExtender
                            }(Base),
                            editorFactory: Base => function(_Base8) {
                                _inheritsLoose(AdaptivityEditorFactoryExtender, _Base8);

                                function AdaptivityEditorFactoryExtender() {
                                    return _Base8.apply(this, arguments) || this
                                }
                                var _proto9 = AdaptivityEditorFactoryExtender.prototype;
                                _proto9._needHideBorder = function($element) {
                                    return _Base8.prototype._needHideBorder.call(this, $element) || (null === $element || void 0 === $element ? void 0 : $element.hasClass("dx-field-item-content")) && (null === $element || void 0 === $element ? void 0 : $element.find(".dx-checkbox").length)
                                };
                                _proto9._getFocusCellSelector = function() {
                                    return "".concat(_Base8.prototype._getFocusCellSelector.call(this), ", .dx-adaptive-detail-row .dx-field-item > .dx-field-item-content")
                                };
                                _proto9._getRevertTooltipsSelector = function() {
                                    return "".concat(_Base8.prototype._getRevertTooltipsSelector.call(this), ", .dx-field-item-content .").concat(this.addWidgetPrefix("revert-tooltip"))
                                };
                                return AdaptivityEditorFactoryExtender
                            }(Base),
                            columns: Base => function(_Base9) {
                                _inheritsLoose(AdaptivityColumnsExtender, _Base9);

                                function AdaptivityColumnsExtender() {
                                    return _Base9.apply(this, arguments) || this
                                }
                                var _proto10 = AdaptivityColumnsExtender.prototype;
                                _proto10._isColumnVisible = function(column) {
                                    return _Base9.prototype._isColumnVisible.call(this, column) && !column.adaptiveHidden
                                };
                                return AdaptivityColumnsExtender
                            }(Base),
                            keyboardNavigation: Base => function(_Base) {
                                _inheritsLoose(AdaptivityKeyboardNavigationExtender, _Base);

                                function AdaptivityKeyboardNavigationExtender() {
                                    return _Base.apply(this, arguments) || this
                                }
                                var _proto2 = AdaptivityKeyboardNavigationExtender.prototype;
                                _proto2._isCellValid = function($cell, isClick) {
                                    return _Base.prototype._isCellValid.call(this, $cell, isClick) && !$cell.hasClass(this.addWidgetPrefix("hidden-column")) && !$cell.hasClass("dx-command-adaptive-hidden")
                                };
                                _proto2._processNextCellInMasterDetail = function($nextCell, $cell) {
                                    _Base.prototype._processNextCellInMasterDetail.call(this, $nextCell, $cell);
                                    const isCellOrBatchMode = this._editingController.isCellOrBatchEditMode();
                                    const isEditing = this._editingController.isEditing();
                                    if (isEditing && $nextCell && isCellOrBatchMode && !this._isInsideEditForm($nextCell)) {
                                        _events_engine.default.off($nextCell, "focus", focusCellHandler);
                                        _events_engine.default.on($nextCell, "focus", {
                                            $nextCell: $nextCell
                                        }, focusCellHandler);
                                        _events_engine.default.trigger($cell, "focus")
                                    }
                                };
                                _proto2._isCellElement = function($cell) {
                                    return _Base.prototype._isCellElement.call(this, $cell) || $cell.hasClass("dx-adaptive-item-text")
                                };
                                _proto2.init = function() {
                                    _Base.prototype.init.call(this);
                                    this._adaptiveController = this.getController("adaptiveColumns")
                                };
                                return AdaptivityKeyboardNavigationExtender
                            }(Base)
                        }
                    }
                };
                exports.adaptivityModule = adaptivityModule
            },
        71184:
            /*!***********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/column_chooser/m_column_chooser.js ***!
              \***********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.columnChooserModule = void 0;
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../../core/devices */ 20530));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _size = __webpack_require__( /*! ../../../../core/utils/size */ 58664);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/message */ 28109));
                var _button = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/button */ 63008));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/popup/ui.popup */ 51495));
                var _themes = __webpack_require__( /*! ../../../../ui/themes */ 75811);
                var _tree_view = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/tree_view */ 30254));
                var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 15943));
                var _m_columns_view = __webpack_require__( /*! ../views/m_columns_view */ 57318);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const COLUMN_OPTIONS_USED_IN_ITEMS = ["showInColumnChooser", "caption", "allowHiding", "visible", "cssClass", "ownerBand"];
                const columnChooserControllerMembers = {
                    renderShowColumnChooserButton($element) {
                        const that = this;
                        const columnChooserButtonClass = that.addWidgetPrefix("column-chooser-button");
                        const columnChooserEnabled = that.option("columnChooser.enabled");
                        const $showColumnChooserButton = $element.find(".".concat(columnChooserButtonClass));
                        let $columnChooserButton;
                        if (columnChooserEnabled) {
                            if (!$showColumnChooserButton.length) {
                                $columnChooserButton = (0, _renderer.default)("<div>").addClass(columnChooserButtonClass).appendTo($element);
                                that._createComponent($columnChooserButton, _button.default, {
                                    icon: "column-chooser",
                                    onClick() {
                                        that.getView("columnChooserView").showColumnChooser()
                                    },
                                    hint: that.option("columnChooser.title"),
                                    integrationOptions: {}
                                })
                            } else {
                                $showColumnChooserButton.show()
                            }
                        } else {
                            $showColumnChooserButton.hide()
                        }
                    },
                    getPosition() {
                        const rowsView = this.getView("rowsView");
                        const position = this.option("columnChooser.position");
                        return (0, _type.isDefined)(position) ? position : {
                            my: "right bottom",
                            at: "right bottom",
                            of: rowsView && rowsView.element(),
                            collision: "fit",
                            offset: "-2 -2",
                            boundaryOffset: "2 2"
                        }
                    }
                };
                const ColumnChooserController = _m_modules.default.ViewController.inherit(columnChooserControllerMembers);
                const columnChooserMembers = {
                    _resizeCore: _common.noop,
                    _isWinDevice: () => !!_devices.default.real().win,
                    _initializePopupContainer() {
                        const that = this;
                        const columnChooserClass = that.addWidgetPrefix("column-chooser");
                        const $element = that.element().addClass(columnChooserClass);
                        const columnChooserOptions = that.option("columnChooser");
                        const themeName = (0, _themes.current)();
                        const isGenericTheme = (0, _themes.isGeneric)(themeName);
                        const isMaterial = (0, _themes.isMaterial)(themeName);
                        const dxPopupOptions = {
                            visible: false,
                            shading: false,
                            showCloseButton: false,
                            dragEnabled: true,
                            resizeEnabled: true,
                            wrapperAttr: {
                                class: columnChooserClass
                            },
                            toolbarItems: [{
                                text: columnChooserOptions.title,
                                toolbar: "top",
                                location: isGenericTheme || isMaterial ? "before" : "center"
                            }],
                            position: that.getController("columnChooser").getPosition(),
                            width: columnChooserOptions.width,
                            height: columnChooserOptions.height,
                            rtlEnabled: that.option("rtlEnabled"),
                            onHidden() {
                                if (that._isWinDevice()) {
                                    (0, _renderer.default)("body").removeClass(that.addWidgetPrefix("notouch-action"))
                                }
                            },
                            container: columnChooserOptions.container
                        };
                        if (isGenericTheme || isMaterial) {
                            (0, _extend.extend)(dxPopupOptions, {
                                showCloseButton: true
                            })
                        } else {
                            dxPopupOptions.toolbarItems[dxPopupOptions.toolbarItems.length] = {
                                shortcut: "cancel"
                            }
                        }
                        if (!(0, _type.isDefined)(this._popupContainer)) {
                            that._popupContainer = that._createComponent($element, _ui.default, dxPopupOptions);
                            that._popupContainer.on("optionChanged", args => {
                                if ("visible" === args.name) {
                                    that.renderCompleted.fire()
                                }
                            })
                        } else {
                            this._popupContainer.option(dxPopupOptions)
                        }
                        this.setPopupAttributes()
                    },
                    setPopupAttributes() {
                        const isSelectMode = this.isSelectMode();
                        const isBandColumnsUsed = this._columnsController.isBandColumnsUsed();
                        this._popupContainer.setAria({
                            role: "dialog",
                            label: _message.default.format("dxDataGrid-columnChooserTitle")
                        });
                        this._popupContainer.$wrapper().toggleClass(this.addWidgetPrefix("column-chooser-mode-drag"), !isSelectMode).toggleClass(this.addWidgetPrefix("column-chooser-mode-select"), isSelectMode);
                        this._popupContainer.$content().addClass(this.addWidgetPrefix("column-chooser-list"));
                        if (isSelectMode && !isBandColumnsUsed) {
                            this._popupContainer.$content().addClass(this.addWidgetPrefix("column-chooser-plain"))
                        }
                    },
                    _renderCore(change) {
                        if (this._popupContainer) {
                            const isDragMode = !this.isSelectMode();
                            if (!this._columnChooserList || "full" === change) {
                                this._renderTreeView()
                            } else if (isDragMode) {
                                this._updateItems()
                            }
                        }
                    },
                    _renderTreeView() {
                        var _a, _b, _c;
                        const that = this;
                        const $container = this._popupContainer.$content();
                        const columnChooser = this.option("columnChooser");
                        const isSelectMode = this.isSelectMode();
                        const searchEnabled = (0, _type.isDefined)(columnChooser.allowSearch) ? columnChooser.allowSearch : null === (_a = columnChooser.search) || void 0 === _a ? void 0 : _a.enabled;
                        const searchTimeout = (0, _type.isDefined)(columnChooser.searchTimeout) ? columnChooser.searchTimeout : null === (_b = columnChooser.search) || void 0 === _b ? void 0 : _b.timeout;
                        const treeViewConfig = {
                            dataStructure: "plain",
                            activeStateEnabled: true,
                            focusStateEnabled: true,
                            hoverStateEnabled: true,
                            itemTemplate: "item",
                            showCheckBoxesMode: "none",
                            rootValue: null,
                            searchEnabled: searchEnabled,
                            searchTimeout: searchTimeout,
                            searchEditorOptions: null === (_c = columnChooser.search) || void 0 === _c ? void 0 : _c.editorOptions
                        };
                        if (this._isWinDevice()) {
                            treeViewConfig.useNativeScrolling = false
                        }(0, _extend.extend)(treeViewConfig, isSelectMode ? this._prepareSelectModeConfig() : this._prepareDragModeConfig());
                        if (this._columnChooserList) {
                            if (!treeViewConfig.searchEnabled) {
                                treeViewConfig.searchValue = ""
                            }
                            this._columnChooserList.option(treeViewConfig);
                            this._updateItems()
                        } else {
                            this._columnChooserList = this._createComponent($container, _tree_view.default, treeViewConfig);
                            this._updateItems();
                            let scrollTop = 0;
                            this._columnChooserList.on("optionChanged", e => {
                                const scrollable = e.component.getScrollable();
                                scrollTop = scrollable.scrollTop()
                            });
                            this._columnChooserList.on("contentReady", e => {
                                (0, _common.deferUpdate)(() => {
                                    const scrollable = e.component.getScrollable();
                                    scrollable.scrollTo({
                                        y: scrollTop
                                    });
                                    that.renderCompleted.fire()
                                })
                            })
                        }
                    },
                    _prepareDragModeConfig() {
                        const columnChooserOptions = this.option("columnChooser");
                        return {
                            noDataText: columnChooserOptions.emptyPanelText,
                            activeStateEnabled: false,
                            focusStateEnabled: false,
                            hoverStateEnabled: false,
                            itemTemplate(data, index, item) {
                                (0, _renderer.default)(item).text(data.text).parent().addClass(data.cssClass).addClass("dx-column-chooser-item")
                            }
                        }
                    },
                    _prepareSelectModeConfig() {
                        const that = this;
                        const selectionOptions = this.option("columnChooser.selection") || {};
                        let isUpdatingSelection = false;
                        return {
                            selectByClick: selectionOptions.selectByClick,
                            selectNodesRecursive: selectionOptions.recursive,
                            showCheckBoxesMode: selectionOptions.allowSelectAll ? "selectAll" : "normal",
                            onSelectionChanged: e => {
                                if (isUpdatingSelection) {
                                    return
                                }
                                const nodes = (nodes => {
                                    const addNodesToArray = (nodes, flatNodesArray) => nodes.reduce((result, node) => {
                                        result.push(node);
                                        if (node.children.length) {
                                            addNodesToArray(node.children, result)
                                        }
                                        return result
                                    }, flatNodesArray);
                                    return addNodesToArray(nodes, [])
                                })(e.component.getNodes());
                                e.component.beginUpdate();
                                isUpdatingSelection = true;
                                ((e, nodes) => {
                                    nodes.filter(node => false === node.itemData.allowHiding).forEach(node => e.component.selectItem(node.key))
                                })(e, nodes);
                                e.component.endUpdate();
                                isUpdatingSelection = false;
                                that.component.beginUpdate();
                                this._isUpdatingColumnVisibility = true;
                                (nodes => {
                                    nodes.forEach(node => {
                                        const columnIndex = node.itemData.id;
                                        const isVisible = false !== node.selected;
                                        that._columnsController.columnOption(columnIndex, "visible", isVisible)
                                    })
                                })(nodes);
                                that.component.endUpdate();
                                this._isUpdatingColumnVisibility = false
                            }
                        }
                    },
                    _updateItems() {
                        const isSelectMode = this.isSelectMode();
                        const chooserColumns = this._columnsController.getChooserColumns(isSelectMode);
                        const items = function(that, chooserColumns) {
                            const items = [];
                            const isSelectMode = that.isSelectMode();
                            const isRecursive = that.option("columnChooser.selection.recursive");
                            if (chooserColumns.length) {
                                (0, _iterator.each)(chooserColumns, (index, column) => {
                                    const item = {
                                        text: column.caption,
                                        cssClass: column.cssClass,
                                        allowHiding: column.allowHiding,
                                        expanded: true,
                                        id: column.index,
                                        disabled: false === column.allowHiding,
                                        parentId: (0, _type.isDefined)(column.ownerBand) ? column.ownerBand : null
                                    };
                                    const isRecursiveWithColumns = isRecursive && column.hasColumns;
                                    if (isSelectMode && !isRecursiveWithColumns) {
                                        item.selected = column.visible
                                    }
                                    items.push(item)
                                })
                            }
                            return items
                        }(this, chooserColumns);
                        this._columnChooserList.option("items", items)
                    },
                    _updateItemsSelection(columnIndices) {
                        const changedColumns = null === columnIndices || void 0 === columnIndices ? void 0 : columnIndices.map(columnIndex => this._columnsController.columnOption(columnIndex));
                        this._columnChooserList.beginUpdate();
                        null === changedColumns || void 0 === changedColumns ? void 0 : changedColumns.forEach(_ref => {
                            let {
                                visible: visible,
                                index: index
                            } = _ref;
                            if (visible) {
                                this._columnChooserList.selectItem(index)
                            } else {
                                this._columnChooserList.unselectItem(index)
                            }
                        });
                        this._columnChooserList.endUpdate()
                    },
                    _columnOptionChanged(e) {
                        this.callBase(e);
                        const isSelectMode = this.isSelectMode();
                        if (isSelectMode && this._columnChooserList && true !== this._isUpdatingColumnVisibility) {
                            const {
                                optionNames: optionNames
                            } = e;
                            const onlyVisibleChanged = optionNames.visible && 1 === optionNames.length;
                            const columnIndices = (0, _type.isDefined)(e.columnIndex) ? [e.columnIndex] : e.columnIndices;
                            const needUpdate = COLUMN_OPTIONS_USED_IN_ITEMS.some(optionName => optionNames[optionName]) || e.changeTypes.columns && optionNames.all;
                            if (needUpdate) {
                                this._updateItemsSelection(columnIndices);
                                if (!onlyVisibleChanged) {
                                    this._updateItems()
                                }
                            }
                        }
                    },
                    optionChanged(args) {
                        switch (args.name) {
                            case "columnChooser":
                                this._initializePopupContainer();
                                this.render(null, "full");
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    getColumnElements() {
                        const result = [];
                        const isSelectMode = this.isSelectMode();
                        const chooserColumns = this._columnsController.getChooserColumns(isSelectMode);
                        const $content = this._popupContainer && this._popupContainer.$content();
                        const $nodes = $content && $content.find(".dx-treeview-node");
                        if ($nodes) {
                            chooserColumns.forEach(column => {
                                const $node = $nodes.filter("[data-item-id = '".concat(column.index, "']"));
                                const item = $node.length ? $node.children(".".concat("dx-column-chooser-item")).get(0) : null;
                                result.push(item)
                            })
                        }
                        return (0, _renderer.default)(result)
                    },
                    getName: () => "columnChooser",
                    getColumns() {
                        return this._columnsController.getChooserColumns()
                    },
                    allowDragging(column) {
                        const isParentColumnVisible = this._columnsController.isParentColumnVisible(column.index);
                        const isColumnHidden = !column.visible && column.allowHiding;
                        return this.isColumnChooserVisible() && isParentColumnVisible && isColumnHidden
                    },
                    allowColumnHeaderDragging(column) {
                        const isDragMode = !this.isSelectMode();
                        return isDragMode && this.isColumnChooserVisible() && column.allowHiding
                    },
                    getBoundingRect() {
                        const container = this._popupContainer && this._popupContainer.$overlayContent();
                        if (container && container.is(":visible")) {
                            const offset = container.offset();
                            return {
                                left: offset.left,
                                top: offset.top,
                                right: offset.left + (0, _size.getOuterWidth)(container),
                                bottom: offset.top + (0, _size.getOuterHeight)(container)
                            }
                        }
                        return null
                    },
                    showColumnChooser() {
                        if (!this._popupContainer) {
                            this._initializePopupContainer();
                            this.render()
                        }
                        this._popupContainer.show();
                        if (this._isWinDevice()) {
                            (0, _renderer.default)("body").addClass(this.addWidgetPrefix("notouch-action"))
                        }
                    },
                    hideColumnChooser() {
                        if (this._popupContainer) {
                            this._popupContainer.hide()
                        }
                    },
                    isColumnChooserVisible() {
                        const popupContainer = this._popupContainer;
                        return popupContainer && popupContainer.option("visible")
                    },
                    isSelectMode() {
                        return "select" === this.option("columnChooser.mode")
                    },
                    hasHiddenColumns() {
                        const isEnabled = this.option("columnChooser.enabled");
                        const hiddenColumns = this.getColumns().filter(column => !column.visible);
                        return isEnabled && hiddenColumns.length
                    },
                    publicMethods: () => ["showColumnChooser", "hideColumnChooser"]
                };
                const ColumnChooserView = _m_columns_view.ColumnsView.inherit(columnChooserMembers);
                const columnChooserModule = {
                    defaultOptions: () => ({
                        columnChooser: {
                            enabled: false,
                            search: {
                                enabled: false,
                                timeout: 500,
                                editorOptions: {}
                            },
                            selection: {
                                allowSelectAll: false,
                                selectByClick: false,
                                recursive: false
                            },
                            position: void 0,
                            mode: "dragAndDrop",
                            width: 250,
                            height: 260,
                            title: _message.default.format("dxDataGrid-columnChooserTitle"),
                            emptyPanelText: _message.default.format("dxDataGrid-columnChooserEmptyText"),
                            container: void 0
                        }
                    }),
                    controllers: {
                        columnChooser: ColumnChooserController
                    },
                    views: {
                        columnChooserView: ColumnChooserView
                    },
                    extenders: {
                        views: {
                            headerPanel: {
                                _getToolbarItems() {
                                    const items = this.callBase();
                                    return this._appendColumnChooserItem(items)
                                },
                                _appendColumnChooserItem(items) {
                                    const that = this;
                                    const columnChooserEnabled = that.option("columnChooser.enabled");
                                    if (columnChooserEnabled) {
                                        const onClickHandler = function() {
                                            that.component.getView("columnChooserView").showColumnChooser()
                                        };
                                        const onInitialized = function(e) {
                                            (0, _renderer.default)(e.element).addClass(that._getToolbarButtonClass(that.addWidgetPrefix("column-chooser-button")))
                                        };
                                        const hintText = that.option("columnChooser.title");
                                        const toolbarItem = {
                                            widget: "dxButton",
                                            options: {
                                                icon: "column-chooser",
                                                onClick: onClickHandler,
                                                hint: hintText,
                                                text: hintText,
                                                onInitialized: onInitialized,
                                                elementAttr: {
                                                    "aria-haspopup": "dialog"
                                                }
                                            },
                                            showText: "inMenu",
                                            location: "after",
                                            name: "columnChooserButton",
                                            locateInMenu: "auto",
                                            sortIndex: 40
                                        };
                                        items.push(toolbarItem)
                                    }
                                    return items
                                },
                                optionChanged(args) {
                                    switch (args.name) {
                                        case "columnChooser":
                                            this._invalidate();
                                            args.handled = true;
                                            break;
                                        default:
                                            this.callBase(args)
                                    }
                                },
                                isVisible() {
                                    const columnChooserEnabled = this.option("columnChooser.enabled");
                                    return this.callBase() || columnChooserEnabled
                                }
                            },
                            columnHeadersView: {
                                allowDragging(column) {
                                    const columnChooserView = this.component.getView("columnChooserView");
                                    const isDragMode = !columnChooserView.isSelectMode();
                                    const isColumnChooserVisible = columnChooserView.isColumnChooserVisible();
                                    return isDragMode && isColumnChooserVisible && column.allowHiding || this.callBase(column)
                                }
                            }
                        },
                        controllers: {
                            columns: {
                                allowMoveColumn(fromVisibleIndex, toVisibleIndex, sourceLocation, targetLocation) {
                                    const isSelectMode = "select" === this.option("columnChooser.mode");
                                    const isMoveColumnDisallowed = isSelectMode && "columnChooser" === targetLocation;
                                    return isMoveColumnDisallowed ? false : this.callBase(fromVisibleIndex, toVisibleIndex, sourceLocation, targetLocation)
                                }
                            }
                        }
                    }
                };
                exports.columnChooserModule = columnChooserModule
            },
        53424:
            /*!*********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/column_fixing/m_column_fixing.js ***!
              \*********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.columnFixingModule = void 0;
                var _translator = __webpack_require__( /*! ../../../../animation/translator */ 31648);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/browser */ 47810));
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _position = __webpack_require__( /*! ../../../../core/utils/position */ 37518);
                var _size = __webpack_require__( /*! ../../../../core/utils/size */ 58664);
                var _style = __webpack_require__( /*! ../../../../core/utils/style */ 80968);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../events/core/events_engine */ 55994));
                var _wheel = __webpack_require__( /*! ../../../../events/core/wheel */ 765);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/message */ 28109));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/scroll_view/ui.scrollable */ 41183));
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 60082));
                var _m_columns_view = __webpack_require__( /*! ../views/m_columns_view */ 57318);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const getTransparentColumnIndex = function(fixedColumns) {
                    let transparentColumnIndex = -1;
                    (0, _iterator.each)(fixedColumns, (index, column) => {
                        if ("transparent" === column.command) {
                            transparentColumnIndex = index;
                            return false
                        }
                        return
                    });
                    return transparentColumnIndex
                };
                const normalizeColumnWidths = function(fixedColumns, widths, fixedWidths) {
                    let fixedColumnIndex = 0;
                    if (fixedColumns && widths && fixedWidths) {
                        for (let i = 0; i < fixedColumns.length; i++) {
                            if ("transparent" === fixedColumns[i].command) {
                                fixedColumnIndex += fixedColumns[i].colspan
                            } else {
                                if (widths[fixedColumnIndex] < fixedWidths[i]) {
                                    widths[fixedColumnIndex] = fixedWidths[i]
                                }
                                fixedColumnIndex++
                            }
                        }
                    }
                    return widths
                };
                const baseFixedColumns = {
                    init() {
                        this.callBase();
                        this._isFixedTableRendering = false;
                        this._isFixedColumns = false
                    },
                    _createCol(column) {
                        return this.callBase(column).toggleClass("dx-col-fixed", !!(this._isFixedTableRendering && (column.fixed || column.command && "transparent" !== column.command)))
                    },
                    _correctColumnIndicesForFixedColumns(fixedColumns, change) {
                        const transparentColumnIndex = getTransparentColumnIndex(fixedColumns);
                        const transparentColspan = fixedColumns[transparentColumnIndex].colspan;
                        const columnIndices = change && change.columnIndices;
                        if (columnIndices) {
                            change.columnIndices = columnIndices.map(columnIndices => {
                                if (columnIndices) {
                                    return columnIndices.map(columnIndex => {
                                        if (columnIndex < transparentColumnIndex) {
                                            return columnIndex
                                        }
                                        if (columnIndex >= transparentColumnIndex + transparentColspan) {
                                            return columnIndex - transparentColspan + 1
                                        }
                                        return -1
                                    }).filter(columnIndex => columnIndex >= 0)
                                }
                            })
                        }
                    },
                    _partialUpdateFixedTable(fixedColumns) {
                        const fixedTableElement = this._fixedTableElement;
                        const $rows = this._getRowElementsCore(fixedTableElement);
                        const $colgroup = fixedTableElement.children("colgroup");
                        $colgroup.replaceWith(this._createColGroup(fixedColumns));
                        for (let i = 0; i < $rows.length; i++) {
                            this._partialUpdateFixedRow((0, _renderer.default)($rows[i]), fixedColumns)
                        }
                    },
                    _partialUpdateFixedRow($row, fixedColumns) {
                        var _a;
                        const cellElements = $row.get(0).childNodes;
                        const transparentColumnIndex = getTransparentColumnIndex(fixedColumns);
                        const transparentColumn = fixedColumns[transparentColumnIndex];
                        const columnIndexOffset = this._columnsController.getColumnIndexOffset();
                        let groupCellOptions;
                        let colIndex = columnIndexOffset + 1;
                        let {
                            colspan: colspan
                        } = transparentColumn;
                        if ($row.hasClass("dx-master-detail-row")) {
                            cellElements[0].setAttribute("colspan", null === (_a = this._columnsController.getVisibleColumns()) || void 0 === _a ? void 0 : _a.length);
                            return
                        }
                        if ($row.hasClass("dx-group-row")) {
                            groupCellOptions = this._getGroupCellOptions({
                                row: $row.data("options"),
                                columns: this._columnsController.getVisibleColumns()
                            });
                            colspan = groupCellOptions.colspan - Math.max(0, cellElements.length - (groupCellOptions.columnIndex + 2))
                        }
                        for (let j = 0; j < cellElements.length; j++) {
                            const needUpdateColspan = groupCellOptions ? j === groupCellOptions.columnIndex + 1 : j === transparentColumnIndex;
                            cellElements[j].setAttribute("aria-colindex", colIndex);
                            if (needUpdateColspan) {
                                cellElements[j].setAttribute("colspan", colspan);
                                colIndex += colspan
                            } else {
                                colIndex++
                            }
                        }
                    },
                    _renderTable(options) {
                        var _a;
                        let $fixedTable;
                        const fixedColumns = this.getFixedColumns();
                        this._isFixedColumns = !!fixedColumns.length;
                        const $table = this.callBase(options);
                        if (this._isFixedColumns) {
                            const change = null === options || void 0 === options ? void 0 : options.change;
                            const $fixedDataRows = this._getRowElements(this._fixedTableElement);
                            const needPartialUpdate = (null === change || void 0 === change ? void 0 : change.virtualColumnsScrolling) && $fixedDataRows.length === (null === (_a = null === change || void 0 === change ? void 0 : change.items) || void 0 === _a ? void 0 : _a.length);
                            this._isFixedTableRendering = true;
                            if (needPartialUpdate && true !== this.option("scrolling.legacyMode")) {
                                this._partialUpdateFixedTable(fixedColumns);
                                this._isFixedTableRendering = false
                            } else {
                                const columnIndices = null === change || void 0 === change ? void 0 : change.columnIndices;
                                this._correctColumnIndicesForFixedColumns(fixedColumns, change);
                                $fixedTable = this._createTable(fixedColumns);
                                this._renderRows($fixedTable, (0, _extend.extend)({}, options, {
                                    columns: fixedColumns
                                }));
                                this._updateContent($fixedTable, change, true);
                                if (columnIndices) {
                                    change.columnIndices = columnIndices
                                }
                                this._isFixedTableRendering = false
                            }
                        } else {
                            this._fixedTableElement && this._fixedTableElement.parent().remove();
                            this._fixedTableElement = null
                        }
                        return $table
                    },
                    _renderRow($table, options) {
                        let fixedCorrection;
                        let {
                            cells: cells
                        } = options.row;
                        this.callBase.apply(this, arguments);
                        if (this._isFixedTableRendering && cells && cells.length) {
                            fixedCorrection = 0;
                            const fixedCells = options.row.cells || [];
                            cells = cells.slice();
                            options.row.cells = cells;
                            for (let i = 0; i < fixedCells.length; i++) {
                                if (fixedCells[i].column && "transparent" === fixedCells[i].column.command) {
                                    fixedCorrection = (fixedCells[i].column.colspan || 1) - 1;
                                    continue
                                }
                                cells[i + fixedCorrection] = fixedCells[i]
                            }
                        }
                    },
                    _createCell(options) {
                        const that = this;
                        const {
                            column: column
                        } = options;
                        const columnCommand = column && column.command;
                        const {
                            rowType: rowType
                        } = options;
                        const $cell = that.callBase.apply(that, arguments);
                        let fixedColumns;
                        let prevFixedColumn;
                        let transparentColumnIndex;
                        if (that._isFixedTableRendering || "filter" === rowType) {
                            fixedColumns = that.getFixedColumns();
                            transparentColumnIndex = getTransparentColumnIndex(fixedColumns);
                            prevFixedColumn = fixedColumns[transparentColumnIndex - 1]
                        }
                        if (that._isFixedTableRendering) {
                            if ("transparent" === columnCommand) {
                                $cell.addClass("dx-pointer-events-none").toggleClass("dx-first-cell", 0 === transparentColumnIndex || prevFixedColumn && "expand" === prevFixedColumn.command).toggleClass("dx-last-cell", fixedColumns.length && transparentColumnIndex === fixedColumns.length - 1);
                                if ("freeSpace" !== rowType) {
                                    _m_utils.default.setEmptyText($cell)
                                }
                            }
                        } else if ("filter" === rowType) {
                            $cell.toggleClass("dx-first-cell", options.columnIndex === transparentColumnIndex)
                        }
                        const isRowAltStyle = that.option("rowAlternationEnabled") && options.isAltRow;
                        const isSelectAllCell = "multiple" === that.option("selection.mode") && 0 === options.columnIndex && "header" === options.rowType;
                        if (_browser.default.mozilla && options.column.fixed && "group" !== options.rowType && !isRowAltStyle && !isSelectAllCell) {
                            $cell.addClass("dx-col-fixed")
                        }
                        return $cell
                    },
                    _getContent(isFixedTableRendering) {
                        var _a;
                        return isFixedTableRendering ? null === (_a = this._fixedTableElement) || void 0 === _a ? void 0 : _a.parent() : this.callBase.apply(this, arguments)
                    },
                    _wrapTableInScrollContainer($table, isFixedTableRendering) {
                        const $scrollContainer = this.callBase.apply(this, arguments);
                        if (this._isFixedTableRendering || isFixedTableRendering) {
                            $scrollContainer.addClass(this.addWidgetPrefix("content-fixed"))
                        }
                        return $scrollContainer
                    },
                    _renderCellContent($cell, options) {
                        let isEmptyCell;
                        const {
                            column: column
                        } = options;
                        const isFixedTableRendering = this._isFixedTableRendering;
                        const isGroupCell = "group" === options.rowType && (0, _type.isDefined)(column.groupIndex);
                        if (isFixedTableRendering && isGroupCell && !column.command && !column.groupCellTemplate) {
                            $cell.css("pointerEvents", "none")
                        }
                        if (!isFixedTableRendering && this._isFixedColumns) {
                            isEmptyCell = column.fixed || column.command && false !== column.fixed;
                            if (isGroupCell) {
                                isEmptyCell = false;
                                if (options.row.summaryCells && options.row.summaryCells.length) {
                                    const columns = this._columnsController.getVisibleColumns();
                                    const alignByFixedColumnCellCount = this._getAlignByColumnCellCount ? this._getAlignByColumnCellCount(column.colspan, {
                                        columns: columns,
                                        row: options.row,
                                        isFixed: true
                                    }) : 0;
                                    if (alignByFixedColumnCellCount > 0) {
                                        const transparentColumnIndex = getTransparentColumnIndex(this._columnsController.getFixedColumns());
                                        isEmptyCell = columns.length - alignByFixedColumnCellCount < transparentColumnIndex
                                    }
                                }
                            }
                            if (isEmptyCell) {
                                if (column.command && "buttons" !== column.type || "group" === options.rowType) {
                                    $cell.html("&nbsp;").addClass(column.cssClass);
                                    return
                                }
                                $cell.addClass("dx-hidden-cell")
                            }
                        }
                        if ("transparent" !== column.command) {
                            this.callBase.apply(this, arguments)
                        }
                    },
                    _getCellElementsCore(rowIndex) {
                        const cellElements = this.callBase.apply(this, arguments);
                        const isGroupRow = null === cellElements || void 0 === cellElements ? void 0 : cellElements.parent().hasClass("dx-group-row");
                        const headerRowIndex = "columnHeadersView" === this.name ? rowIndex : void 0;
                        if (this._fixedTableElement && cellElements) {
                            const fixedColumns = this.getFixedColumns(headerRowIndex);
                            const fixedCellElements = this._getRowElements(this._fixedTableElement).eq(rowIndex).children("td");
                            (0, _iterator.each)(fixedCellElements, (columnIndex, cell) => {
                                if (isGroupRow) {
                                    if (cellElements[columnIndex] && "hidden" !== cell.style.visibility) {
                                        cellElements[columnIndex] = cell
                                    }
                                } else {
                                    const fixedColumn = fixedColumns[columnIndex];
                                    if (fixedColumn) {
                                        if ("transparent" === fixedColumn.command) {
                                            if (fixedCellElements.eq(columnIndex).hasClass("dx-master-detail-cell")) {
                                                cellElements[columnIndex] = cell || cellElements[columnIndex]
                                            }
                                        } else {
                                            const fixedColumnIndex = this._columnsController.getVisibleIndexByColumn(fixedColumn, headerRowIndex);
                                            cellElements[fixedColumnIndex] = cell || cellElements[fixedColumnIndex]
                                        }
                                    }
                                }
                            })
                        }
                        return cellElements
                    },
                    getColumnWidths() {
                        const result = this.callBase();
                        const fixedColumns = this.getFixedColumns();
                        const fixedWidths = this._fixedTableElement && result.length ? this.callBase(this._fixedTableElement) : void 0;
                        return normalizeColumnWidths(fixedColumns, result, fixedWidths)
                    },
                    getTableElement(isFixedTableRendering) {
                        isFixedTableRendering = this._isFixedTableRendering || isFixedTableRendering;
                        const tableElement = isFixedTableRendering ? this._fixedTableElement : this.callBase();
                        return tableElement
                    },
                    setTableElement(tableElement, isFixedTableRendering) {
                        if (this._isFixedTableRendering || isFixedTableRendering) {
                            this._fixedTableElement = tableElement.addClass("dx-pointer-events-none")
                        } else {
                            this.callBase(tableElement)
                        }
                    },
                    getColumns(rowIndex) {
                        const $tableElement = this.getTableElement();
                        if (this._isFixedTableRendering) {
                            return this.getFixedColumns(rowIndex)
                        }
                        return this.callBase(rowIndex, $tableElement)
                    },
                    getRowIndex($row) {
                        const $fixedTable = this._fixedTableElement;
                        if ($fixedTable && $fixedTable.find($row).length) {
                            return this._getRowElements($fixedTable).index($row)
                        }
                        return this.callBase($row)
                    },
                    getTableElements() {
                        let result = this.callBase.apply(this, arguments);
                        if (this._fixedTableElement) {
                            result = (0, _renderer.default)([result.get(0), this._fixedTableElement.get(0)])
                        }
                        return result
                    },
                    getFixedColumns(rowIndex) {
                        return this._columnsController.getFixedColumns(rowIndex)
                    },
                    getFixedColumnsOffset() {
                        let offset = {
                            left: 0,
                            right: 0
                        };
                        let $transparentColumn;
                        if (this._fixedTableElement) {
                            $transparentColumn = this.getTransparentColumnElement();
                            const positionTransparentColumn = $transparentColumn.position();
                            offset = {
                                left: positionTransparentColumn.left,
                                right: (0, _size.getOuterWidth)(this.element(), true) - ((0, _size.getOuterWidth)($transparentColumn, true) + positionTransparentColumn.left)
                            }
                        }
                        return offset
                    },
                    getTransparentColumnElement() {
                        return this._fixedTableElement && this._fixedTableElement.find(".".concat("dx-pointer-events-none")).first()
                    },
                    getFixedTableElement() {
                        return this._fixedTableElement
                    },
                    isFixedColumns() {
                        return this._isFixedColumns
                    },
                    _resizeCore() {
                        this.callBase();
                        this.synchronizeRows()
                    },
                    setColumnWidths(options) {
                        var _a;
                        const {
                            widths: widths
                        } = options;
                        const visibleColumns = this._columnsController.getVisibleColumns();
                        const isColumnWidthsSynced = (null === widths || void 0 === widths ? void 0 : widths.length) && visibleColumns.some(column => (0, _type.isDefined)(column.visibleWidth));
                        const isColumnWidthChanged = null === (_a = options.optionNames) || void 0 === _a ? void 0 : _a.width;
                        this.callBase(options);
                        if (this._fixedTableElement) {
                            const hasAutoWidth = null === widths || void 0 === widths ? void 0 : widths.some(width => "auto" === width || !(0, _type.isDefined)(width));
                            const needVisibleColumns = hasAutoWidth && (!isColumnWidthsSynced || !this.isScrollbarVisible(true));
                            const columns = needVisibleColumns ? visibleColumns : this.getFixedColumns();
                            this.setFixedTableColumnWidths(columns, widths)
                        }
                        const wordWrapEnabled = this.option("wordWrapEnabled");
                        const needSynchronizeRows = isColumnWidthsSynced || isColumnWidthChanged && wordWrapEnabled;
                        if (needSynchronizeRows) {
                            this.synchronizeRows()
                        }
                    },
                    setFixedTableColumnWidths(columns, widths) {
                        if (!this._fixedTableElement || !widths) {
                            return
                        }
                        const $cols = this._fixedTableElement.children("colgroup").children("col");
                        $cols.toArray().forEach(col => col.removeAttribute("style"));
                        let columnIndex = 0;
                        columns.forEach(column => {
                            if (column.colspan) {
                                columnIndex += column.colspan;
                                return
                            }
                            const colWidth = (0, _m_columns_view.normalizeWidth)(widths[columnIndex]);
                            if ((0, _type.isDefined)(colWidth)) {
                                (0, _style.setWidth)($cols.eq(columnIndex), colWidth)
                            }
                            columnIndex += 1
                        })
                    },
                    _getClientHeight(element) {
                        const boundingClientRectElement = element.getBoundingClientRect && (0, _position.getBoundingRect)(element);
                        return boundingClientRectElement && boundingClientRectElement.height ? boundingClientRectElement.height : element.clientHeight
                    },
                    synchronizeRows() {
                        const rowHeights = [];
                        const fixedRowHeights = [];
                        let rowIndex;
                        let $rowElements;
                        let $fixedRowElements;
                        let $contentElement;
                        this.waitAsyncTemplates(true).done(() => {
                            if (this._isFixedColumns && this._tableElement && this._fixedTableElement) {
                                const heightTable = this._getClientHeight(this._tableElement.get(0));
                                const heightFixedTable = this._getClientHeight(this._fixedTableElement.get(0));
                                $rowElements = this._getRowElements(this._tableElement);
                                $fixedRowElements = this._getRowElements(this._fixedTableElement);
                                $contentElement = this._findContentElement();
                                if (heightTable !== heightFixedTable) {
                                    $contentElement && $contentElement.css("height", heightTable);
                                    $rowElements.css("height", "");
                                    $fixedRowElements.css("height", "");
                                    for (rowIndex = 0; rowIndex < $rowElements.length; rowIndex++) {
                                        rowHeights.push(this._getClientHeight($rowElements.get(rowIndex)));
                                        fixedRowHeights.push(this._getClientHeight($fixedRowElements.get(rowIndex)))
                                    }
                                    for (rowIndex = 0; rowIndex < $rowElements.length; rowIndex++) {
                                        const rowHeight = rowHeights[rowIndex];
                                        const fixedRowHeight = fixedRowHeights[rowIndex];
                                        if (rowHeight > fixedRowHeight) {
                                            $fixedRowElements.eq(rowIndex).css("height", rowHeight)
                                        } else if (rowHeight < fixedRowHeight) {
                                            $rowElements.eq(rowIndex).css("height", fixedRowHeight)
                                        }
                                    }
                                    $contentElement && $contentElement.css("height", "")
                                }
                            }
                        })
                    },
                    setScrollerSpacing(width) {
                        const rtlEnabled = this.option("rtlEnabled");
                        this.callBase(width);
                        this.element().children(".".concat(this.addWidgetPrefix("content-fixed"))).css({
                            paddingLeft: rtlEnabled ? width : "",
                            paddingRight: !rtlEnabled ? width : ""
                        })
                    }
                };
                const ColumnHeadersViewFixedColumnsExtender = (0, _extend.extend)({}, baseFixedColumns, {
                    _getRowVisibleColumns(rowIndex) {
                        if (this._isFixedTableRendering) {
                            return this.getFixedColumns(rowIndex)
                        }
                        return this.callBase(rowIndex)
                    },
                    getContextMenuItems(options) {
                        const {
                            column: column
                        } = options;
                        const columnFixingOptions = this.option("columnFixing");
                        let items = this.callBase(options);
                        if (options.row && "header" === options.row.rowType) {
                            if (true === columnFixingOptions.enabled && column && column.allowFixing) {
                                const onItemClick = params => {
                                    switch (params.itemData.value) {
                                        case "none":
                                            this._columnsController.columnOption(column.index, "fixed", false);
                                            break;
                                        case "left":
                                            this._columnsController.columnOption(column.index, {
                                                fixed: true,
                                                fixedPosition: "left"
                                            });
                                            break;
                                        case "right":
                                            this._columnsController.columnOption(column.index, {
                                                fixed: true,
                                                fixedPosition: "right"
                                            })
                                    }
                                };
                                items = items || [];
                                items.push({
                                    text: columnFixingOptions.texts.fix,
                                    beginGroup: true,
                                    items: [{
                                        text: columnFixingOptions.texts.leftPosition,
                                        value: "left",
                                        disabled: column.fixed && (!column.fixedPosition || "left" === column.fixedPosition),
                                        onItemClick: onItemClick
                                    }, {
                                        text: columnFixingOptions.texts.rightPosition,
                                        value: "right",
                                        disabled: column.fixed && "right" === column.fixedPosition,
                                        onItemClick: onItemClick
                                    }]
                                }, {
                                    text: columnFixingOptions.texts.unfix,
                                    value: "none",
                                    disabled: !column.fixed,
                                    onItemClick: onItemClick
                                })
                            }
                        }
                        return items
                    },
                    getFixedColumnElements(rowIndex) {
                        const that = this;
                        if ((0, _type.isDefined)(rowIndex)) {
                            return this._fixedTableElement && this._getRowElements(this._fixedTableElement).eq(rowIndex).children()
                        }
                        const columnElements = that.getColumnElements();
                        const $transparentColumnElement = that.getTransparentColumnElement();
                        if (columnElements && $transparentColumnElement && $transparentColumnElement.length) {
                            const transparentColumnIndex = getTransparentColumnIndex(that.getFixedColumns());
                            columnElements.splice(transparentColumnIndex, $transparentColumnElement.get(0).colSpan, $transparentColumnElement.get(0))
                        }
                        return columnElements
                    },
                    getColumnWidths() {
                        const that = this;
                        let fixedWidths;
                        const result = that.callBase();
                        const $fixedColumnElements = that.getFixedColumnElements();
                        const fixedColumns = that.getFixedColumns();
                        if (that._fixedTableElement) {
                            if ($fixedColumnElements && $fixedColumnElements.length) {
                                fixedWidths = that._getWidths($fixedColumnElements)
                            } else {
                                fixedWidths = that.callBase(that._fixedTableElement)
                            }
                        }
                        return normalizeColumnWidths(fixedColumns, result, fixedWidths)
                    }
                });
                const RowsViewFixedColumnsExtender = (0, _extend.extend)({}, baseFixedColumns, {
                    _detachHoverEvents() {
                        const element = this.element();
                        if (this._fixedTableElement && this._tableElement) {
                            _events_engine.default.off(element, "mouseover mouseout", ".dx-data-row")
                        }
                    },
                    _attachHoverEvents() {
                        if (this._fixedTableElement && this._tableElement) {
                            _events_engine.default.on(this.element(), "mouseover mouseout", ".dx-data-row", this.createAction(args => {
                                const {
                                    event: event
                                } = args;
                                const rowIndex = this.getRowIndex((0, _renderer.default)(event.target).closest(".dx-row"));
                                const isHover = "mouseover" === event.type;
                                if (rowIndex >= 0) {
                                    this._tableElement && this._getRowElements(this._tableElement).eq(rowIndex).toggleClass("dx-state-hover", isHover);
                                    this._fixedTableElement && this._getRowElements(this._fixedTableElement).eq(rowIndex).toggleClass("dx-state-hover", isHover)
                                }
                            }))
                        }
                    },
                    _getScrollDelay() {
                        var _a;
                        const hasResizeTimeout = null === (_a = this.getController("resizing")) || void 0 === _a ? void 0 : _a.hasResizeTimeout();
                        if (hasResizeTimeout) {
                            return this.option("scrolling.updateTimeout")
                        }
                        return _browser.default.mozilla ? 60 : 0
                    },
                    _findContentElement(isFixedTableRendering) {
                        let $content;
                        let scrollTop;
                        const contentClass = this.addWidgetPrefix("content");
                        const element = this.element();
                        isFixedTableRendering = this._isFixedTableRendering || isFixedTableRendering;
                        if (element && isFixedTableRendering) {
                            $content = element.children(".".concat(contentClass));
                            const scrollable = this.getScrollable();
                            if (!$content.length && scrollable) {
                                $content = (0, _renderer.default)("<div>").addClass(contentClass);
                                _events_engine.default.on($content, "scroll", e => {
                                    const {
                                        target: target
                                    } = e;
                                    const scrollDelay = this._getScrollDelay();
                                    clearTimeout(this._fixedScrollTimeout);
                                    this._fixedScrollTimeout = setTimeout(() => {
                                        scrollTop = (0, _renderer.default)(target).scrollTop();
                                        scrollable.scrollTo({
                                            y: scrollTop
                                        })
                                    }, scrollDelay)
                                });
                                _events_engine.default.on($content, _wheel.name, e => {
                                    const $nearestScrollable = (0, _renderer.default)(e.target).closest(".dx-scrollable");
                                    let shouldScroll = false;
                                    if (scrollable && scrollable.$element().is($nearestScrollable)) {
                                        shouldScroll = true
                                    } else {
                                        const nearestScrollableInstance = $nearestScrollable.length && _ui.default.getInstance($nearestScrollable.get(0));
                                        const nearestScrollableHasVerticalScrollbar = nearestScrollableInstance && nearestScrollableInstance.scrollHeight() - nearestScrollableInstance.clientHeight() > 0;
                                        shouldScroll = nearestScrollableInstance && !nearestScrollableHasVerticalScrollbar
                                    }
                                    if (shouldScroll) {
                                        scrollTop = scrollable.scrollTop();
                                        scrollable.scrollTo({
                                            y: scrollTop - e.delta
                                        });
                                        const scrollableTop = scrollable.scrollTop() + scrollable.clientHeight();
                                        const scrollableHeight = scrollable.scrollHeight() + this.getScrollbarWidth();
                                        const isPreventDefault = scrollable.scrollTop() > 0 && scrollableTop < scrollableHeight;
                                        if (isPreventDefault) {
                                            return false
                                        }
                                    }
                                    return
                                });
                                $content.appendTo(element)
                            }
                            return $content
                        }
                        return this.callBase()
                    },
                    _updateScrollable() {
                        this.callBase();
                        const scrollable = this.getScrollable();
                        if (null === scrollable || void 0 === scrollable ? void 0 : scrollable._disposed) {
                            return
                        }
                        const scrollTop = scrollable && scrollable.scrollOffset().top;
                        this._updateFixedTablePosition(scrollTop)
                    },
                    _renderContent(contentElement, tableElement, isFixedTableRendering) {
                        if (this._isFixedTableRendering || isFixedTableRendering) {
                            return contentElement.empty().addClass("".concat(this.addWidgetPrefix("content"), " ").concat(this.addWidgetPrefix("content-fixed"))).append(tableElement)
                        }
                        return this.callBase(contentElement, tableElement)
                    },
                    _getGroupCellOptions(options) {
                        if (this._isFixedTableRendering) {
                            return this.callBase((0, _extend.extend)({}, options, {
                                columns: this._columnsController.getVisibleColumns()
                            }))
                        }
                        return this.callBase(options)
                    },
                    _renderGroupedCells($row, options) {
                        return this.callBase($row, (0, _extend.extend)({}, options, {
                            columns: this._columnsController.getVisibleColumns()
                        }))
                    },
                    _renderGroupSummaryCells($row, options) {
                        if (this._isFixedTableRendering) {
                            this.callBase($row, (0, _extend.extend)({}, options, {
                                columns: this._columnsController.getVisibleColumns()
                            }))
                        } else {
                            this.callBase($row, options)
                        }
                    },
                    _hasAlignByColumnSummaryItems(columnIndex, options) {
                        const result = this.callBase.apply(this, arguments);
                        const column = options.columns[columnIndex];
                        if (options.isFixed) {
                            return column.fixed && (result || "right" === column.fixedPosition)
                        }
                        return result && (!this._isFixedColumns || !column.fixed)
                    },
                    _renderGroupSummaryCellsCore($groupCell, options, groupCellColSpan, alignByColumnCellCount) {
                        let alignByFixedColumnCellCount;
                        if (this._isFixedTableRendering) {
                            options.isFixed = true;
                            alignByFixedColumnCellCount = this._getAlignByColumnCellCount(groupCellColSpan, options);
                            options.isFixed = false;
                            const startColumnIndex = options.columns.length - alignByFixedColumnCellCount;
                            options = (0, _extend.extend)({}, options, {
                                columns: this.getFixedColumns()
                            });
                            const transparentColumnIndex = getTransparentColumnIndex(options.columns);
                            if (startColumnIndex < transparentColumnIndex) {
                                alignByFixedColumnCellCount -= options.columns[transparentColumnIndex].colspan - 1 || 0;
                                groupCellColSpan -= options.columns[transparentColumnIndex].colspan - 1 || 0
                            } else if (alignByColumnCellCount > 0) {
                                $groupCell.css("visibility", "hidden")
                            }
                            alignByColumnCellCount = alignByFixedColumnCellCount
                        }
                        this.callBase($groupCell, options, groupCellColSpan, alignByColumnCellCount)
                    },
                    _getSummaryCellIndex(columnIndex, columns) {
                        if (this._isFixedTableRendering) {
                            const transparentColumnIndex = getTransparentColumnIndex(columns);
                            if (columnIndex > transparentColumnIndex) {
                                columnIndex += columns[transparentColumnIndex].colspan - 1
                            }
                            return columnIndex
                        }
                        return this.callBase.apply(this, arguments)
                    },
                    _renderCore(change) {
                        this._detachHoverEvents();
                        const deferred = this.callBase(change);
                        const isFixedColumns = this._isFixedColumns;
                        this.element().toggleClass("dx-fixed-columns", isFixedColumns);
                        if (this.option("hoverStateEnabled") && isFixedColumns) {
                            this._attachHoverEvents()
                        }
                        return deferred
                    },
                    setAriaOwns(headerTableId, footerTableId, isFixed) {
                        var _a, _b;
                        if (isFixed) {
                            const contentFixedClass = this.addWidgetPrefix("content-fixed");
                            const $contentFixedElement = null === (_a = this.element()) || void 0 === _a ? void 0 : _a.children(".".concat(contentFixedClass));
                            const $fixedTableElement = this.getFixedTableElement();
                            if ($contentFixedElement.length && (null === $fixedTableElement || void 0 === $fixedTableElement ? void 0 : $fixedTableElement.length)) {
                                this.setAria("owns", "".concat(null !== headerTableId && void 0 !== headerTableId ? headerTableId : "", " ").concat(null !== (_b = $fixedTableElement.attr("id")) && void 0 !== _b ? _b : "", " ").concat(null !== footerTableId && void 0 !== footerTableId ? footerTableId : "").trim(), $contentFixedElement)
                            }
                        } else {
                            this.callBase.apply(this, arguments)
                        }
                    },
                    setRowsOpacity(columnIndex, value) {
                        this.callBase(columnIndex, value);
                        const $rows = this._getRowElements(this._fixedTableElement);
                        this._setRowsOpacityCore($rows, this.getFixedColumns(), columnIndex, value)
                    },
                    optionChanged(args) {
                        this.callBase(args);
                        if ("hoverStateEnabled" === args.name && this._isFixedColumns) {
                            args.value ? this._attachHoverEvents() : this._detachHoverEvents()
                        }
                    },
                    getCellIndex($cell) {
                        const $fixedTable = this._fixedTableElement;
                        let cellIndex = 0;
                        if ($fixedTable && $cell.is("td") && $cell.closest($fixedTable).length) {
                            const columns = this.getFixedColumns();
                            (0, _iterator.each)(columns, (index, column) => {
                                if (index === $cell[0].cellIndex) {
                                    return false
                                }
                                if (column.colspan) {
                                    cellIndex += column.colspan;
                                    return
                                }
                                cellIndex++;
                                return
                            });
                            return cellIndex
                        }
                        return this.callBase.apply(this, arguments)
                    },
                    _updateFixedTablePosition(scrollTop, needFocus) {
                        if (this._fixedTableElement && this._tableElement) {
                            let $focusedElement;
                            const editorFactory = this.getController("editorFactory");
                            this._fixedTableElement.parent().scrollTop(scrollTop);
                            if (needFocus && editorFactory) {
                                $focusedElement = editorFactory.focus();
                                $focusedElement && editorFactory.focus($focusedElement)
                            }
                        }
                    },
                    setScrollerSpacing(vWidth, hWidth) {
                        const that = this;
                        const styles = {
                            marginBottom: 0
                        };
                        const $fixedContent = that.element().children(".".concat(this.addWidgetPrefix("content-fixed")));
                        if ($fixedContent.length && that._fixedTableElement) {
                            $fixedContent.css(styles);
                            that._fixedTableElement.css(styles);
                            styles[that.option("rtlEnabled") ? "marginLeft" : "marginRight"] = vWidth;
                            styles.marginBottom = hWidth;
                            const useNativeScrolling = that._scrollable && that._scrollable.option("useNative");
                            (useNativeScrolling ? $fixedContent : that._fixedTableElement).css(styles)
                        }
                    },
                    _getElasticScrollTop(e) {
                        let elasticScrollTop = 0;
                        if (e.scrollOffset.top < 0) {
                            elasticScrollTop = -e.scrollOffset.top
                        } else if (e.reachedBottom) {
                            const $scrollableContent = (0, _renderer.default)(e.component.content());
                            const $scrollableContainer = (0, _renderer.default)(e.component.container());
                            const maxScrollTop = Math.max($scrollableContent.get(0).clientHeight - $scrollableContainer.get(0).clientHeight, 0);
                            elasticScrollTop = Math.min(maxScrollTop - e.scrollOffset.top, 0)
                        }
                        return Math.floor(elasticScrollTop)
                    },
                    _applyElasticScrolling(e) {
                        if (this._fixedTableElement) {
                            const elasticScrollTop = this._getElasticScrollTop(e);
                            if (0 !== Math.ceil(elasticScrollTop)) {
                                (0, _translator.move)(this._fixedTableElement, {
                                    top: elasticScrollTop
                                })
                            } else {
                                this._fixedTableElement.css("transform", "")
                            }
                        }
                    },
                    _handleScroll(e) {
                        this._updateFixedTablePosition(e.scrollOffset.top, true);
                        this._applyElasticScrolling(e);
                        this.callBase(e)
                    },
                    _updateContentPosition(isRender) {
                        this.callBase.apply(this, arguments);
                        if (!isRender) {
                            this._updateFixedTablePosition(this._scrollTop)
                        }
                    },
                    _afterRowPrepared(e) {
                        if (this._isFixedTableRendering) {
                            return
                        }
                        this.callBase(e)
                    },
                    _scrollToElement($element) {
                        this.callBase($element, this.getFixedColumnsOffset())
                    },
                    dispose() {
                        this.callBase.apply(this, arguments);
                        clearTimeout(this._fixedScrollTimeout)
                    }
                });
                const FooterViewFixedColumnsExtender = baseFixedColumns;
                const columnFixingModule = {
                    defaultOptions: () => ({
                        columnFixing: {
                            enabled: false,
                            texts: {
                                fix: _message.default.format("dxDataGrid-columnFixingFix"),
                                unfix: _message.default.format("dxDataGrid-columnFixingUnfix"),
                                leftPosition: _message.default.format("dxDataGrid-columnFixingLeftPosition"),
                                rightPosition: _message.default.format("dxDataGrid-columnFixingRightPosition")
                            }
                        }
                    }),
                    extenders: {
                        views: {
                            columnHeadersView: ColumnHeadersViewFixedColumnsExtender,
                            rowsView: RowsViewFixedColumnsExtender,
                            footerView: FooterViewFixedColumnsExtender
                        },
                        controllers: {
                            draggingHeader: {
                                _generatePointsByColumns(options) {
                                    const visibleColumns = options.columns;
                                    const {
                                        targetDraggingPanel: targetDraggingPanel
                                    } = options;
                                    if (targetDraggingPanel && "headers" === targetDraggingPanel.getName() && targetDraggingPanel.isFixedColumns()) {
                                        if (options.sourceColumn.fixed) {
                                            if (!options.rowIndex) {
                                                options.columnElements = targetDraggingPanel.getFixedColumnElements(0)
                                            }
                                            options.columns = targetDraggingPanel.getFixedColumns(options.rowIndex);
                                            const pointsByColumns = this.callBase(options);
                                            ! function(columns, fixedColumns, pointsByColumns) {
                                                const transparentColumnIndex = getTransparentColumnIndex(fixedColumns);
                                                const correctIndex = columns.length - fixedColumns.length;
                                                (0, _iterator.each)(pointsByColumns, (_, point) => {
                                                    if (point.index > transparentColumnIndex) {
                                                        point.columnIndex += correctIndex;
                                                        point.index += correctIndex
                                                    }
                                                });
                                                return pointsByColumns
                                            }(visibleColumns, options.columns, pointsByColumns);
                                            return pointsByColumns
                                        }
                                    }
                                    return this.callBase(options)
                                },
                                _pointCreated(point, columns, location, sourceColumn) {
                                    const result = this.callBase.apply(this, arguments);
                                    const targetColumn = columns[point.columnIndex];
                                    const $transparentColumn = this._columnHeadersView.getTransparentColumnElement();
                                    if (!result && "headers" === location && $transparentColumn && $transparentColumn.length) {
                                        const boundingRect = (0, _position.getBoundingRect)($transparentColumn.get(0));
                                        if (sourceColumn && sourceColumn.fixed) {
                                            return "right" === sourceColumn.fixedPosition ? point.x < boundingRect.right : point.x > boundingRect.left
                                        }
                                        if (targetColumn && targetColumn.fixed && "right" !== targetColumn.fixedPosition) {
                                            return true
                                        }
                                        return point.x < boundingRect.left || point.x > boundingRect.right
                                    }
                                    return result
                                }
                            },
                            columnsResizer: {
                                _generatePointsByColumns() {
                                    const that = this;
                                    const columnsController = that._columnsController;
                                    const columns = columnsController && that._columnsController.getVisibleColumns();
                                    const fixedColumns = columnsController && that._columnsController.getFixedColumns();
                                    const transparentColumnIndex = getTransparentColumnIndex(fixedColumns);
                                    const correctIndex = columns.length - fixedColumns.length;
                                    const cells = that._columnHeadersView.getFixedColumnElements();
                                    that.callBase();
                                    if (cells && cells.length > 0) {
                                        that._pointsByFixedColumns = _m_utils.default.getPointsByColumns(cells, point => {
                                            if (point.index > transparentColumnIndex) {
                                                point.columnIndex += correctIndex;
                                                point.index += correctIndex
                                            }
                                            return that._pointCreated(point, columns.length, columns)
                                        })
                                    }
                                },
                                _getTargetPoint(pointsByColumns, currentX, deltaX) {
                                    const $transparentColumn = this._columnHeadersView.getTransparentColumnElement();
                                    if ($transparentColumn && $transparentColumn.length) {
                                        const boundingRect = (0, _position.getBoundingRect)($transparentColumn.get(0));
                                        if (currentX <= boundingRect.left || currentX >= boundingRect.right) {
                                            return this.callBase(this._pointsByFixedColumns, currentX, deltaX)
                                        }
                                    }
                                    return this.callBase(pointsByColumns, currentX, deltaX)
                                }
                            },
                            resizing: {
                                _setAriaOwns() {
                                    var _a, _b, _c;
                                    this.callBase.apply(this, arguments);
                                    const headerFixedTable = null === (_a = this._columnHeadersView) || void 0 === _a ? void 0 : _a.getFixedTableElement();
                                    const footerFixedTable = null === (_b = this._footerView) || void 0 === _b ? void 0 : _b.getFixedTableElement();
                                    null === (_c = this._rowsView) || void 0 === _c ? void 0 : _c.setAriaOwns(null === headerFixedTable || void 0 === headerFixedTable ? void 0 : headerFixedTable.attr("id"), null === footerFixedTable || void 0 === footerFixedTable ? void 0 : footerFixedTable.attr("id"), true)
                                }
                            }
                        }
                    }
                };
                exports.columnFixingModule = columnFixingModule
            },
        14509:
            /*!***********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/column_headers/m_column_headers.js ***!
              \***********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.columnHeadersModule = void 0;
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../../core/dom_adapter */ 73349));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _size = __webpack_require__( /*! ../../../../core/utils/size */ 58664);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../events/core/events_engine */ 55994));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/message */ 28109));
                var _m_accessibility = __webpack_require__( /*! ../m_accessibility */ 9130);
                var _m_columns_view = __webpack_require__( /*! ../views/m_columns_view */ 57318);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const columnHeadersModule = {
                    defaultOptions: () => ({
                        showColumnHeaders: true,
                        cellHintEnabled: true
                    }),
                    views: {
                        columnHeadersView: _m_columns_view.ColumnsView.inherit(function() {
                            const createCellContent = function(that, $cell, options) {
                                const $cellContent = (0, _renderer.default)("<div>").addClass(that.addWidgetPrefix("text-content"));
                                that.setAria("role", "presentation", $cellContent);
                                addCssClassesToCellContent(that, $cell, options.column, $cellContent);
                                const showColumnLines = that.option("showColumnLines");
                                const contentAlignment = that.getController("columns").getHeaderContentAlignment(options.column.alignment);
                                return $cellContent[showColumnLines || "right" === contentAlignment ? "appendTo" : "prependTo"]($cell)
                            };

                            function addCssClassesToCellContent(that, $cell, column, $cellContent) {
                                const $indicatorElements = that._getIndicatorElements($cell, true);
                                const $visibleIndicatorElements = that._getIndicatorElements($cell);
                                const indicatorCount = $indicatorElements && $indicatorElements.length;
                                const columnAlignment = that._getColumnAlignment(column.alignment);
                                const sortIndicatorClassName = ".".concat(that._getIndicatorClassName("sort"));
                                const sortIndexIndicatorClassName = ".".concat(that._getIndicatorClassName("sortIndex"));
                                const $sortIndicator = $visibleIndicatorElements.filter(sortIndicatorClassName);
                                const $sortIndexIndicator = $visibleIndicatorElements.children().filter(sortIndexIndicatorClassName);
                                $cellContent = $cellContent || $cell.children(".".concat(that.addWidgetPrefix("text-content")));
                                $cellContent.toggleClass("dx-text-content-alignment-" + columnAlignment, indicatorCount > 0).toggleClass("dx-text-content-alignment-" + ("left" === columnAlignment ? "right" : "left"), indicatorCount > 0 && "center" === column.alignment).toggleClass("dx-sort-indicator", !!$sortIndicator.length).toggleClass("dx-sort-index-indicator", !!$sortIndexIndicator.length).toggleClass("dx-header-filter-indicator", !!$visibleIndicatorElements.filter(".".concat(that._getIndicatorClassName("headerFilter"))).length)
                            }
                            const members = {
                                _createTable() {
                                    const $table = this.callBase.apply(this, arguments);
                                    _events_engine.default.on($table, "mousedown selectstart", this.createAction(e => {
                                        const {
                                            event: event
                                        } = e;
                                        if (event.shiftKey) {
                                            event.preventDefault()
                                        }
                                    }));
                                    return $table
                                },
                                _isLegacyKeyboardNavigation() {
                                    return this.option("useLegacyKeyboardNavigation")
                                },
                                _getDefaultTemplate(column) {
                                    const that = this;
                                    return function($container, options) {
                                        const {
                                            caption: caption
                                        } = column;
                                        const needCellContent = !column.command || caption && "expand" !== column.command;
                                        if ("empty" === column.command) {
                                            that._renderEmptyMessage($container, options)
                                        } else if (needCellContent) {
                                            const $content = createCellContent(that, $container, options);
                                            $content.text(caption)
                                        } else if (column.command) {
                                            $container.html("&nbsp;")
                                        }
                                    }
                                },
                                _renderEmptyMessage($container, options) {
                                    const textEmpty = this._getEmptyHeaderText();
                                    if (!textEmpty) {
                                        $container.html("&nbsp;");
                                        return
                                    }
                                    const $cellContent = createCellContent(this, $container, options);
                                    const needSplit = textEmpty.includes("{0}");
                                    if (needSplit) {
                                        const [leftPart, rightPart] = textEmpty.split("{0}");
                                        const columnChooserTitle = _message.default.format("dxDataGrid-emptyHeaderColumnChooserText");
                                        const columnChooserView = this.component.getView("columnChooserView");
                                        const $link = (0, _renderer.default)("<a>").text(columnChooserTitle).addClass("dx-link");
                                        _events_engine.default.on($link, "click", this.createAction(() => columnChooserView.showColumnChooser()));
                                        $cellContent.append(_dom_adapter.default.createTextNode(leftPart)).append($link).append(_dom_adapter.default.createTextNode(rightPart))
                                    } else {
                                        $cellContent.text(textEmpty)
                                    }
                                },
                                _getEmptyHeaderText() {
                                    const hasHiddenColumns = !!this.component.getView("columnChooserView").hasHiddenColumns();
                                    const hasGroupedColumns = !!this.component.getView("headerPanel").hasGroupedColumns();
                                    switch (true) {
                                        case hasHiddenColumns && hasGroupedColumns:
                                            return _message.default.format("dxDataGrid-emptyHeaderWithColumnChooserAndGroupPanelText");
                                        case hasGroupedColumns:
                                            return _message.default.format("dxDataGrid-emptyHeaderWithGroupPanelText");
                                        case hasHiddenColumns:
                                            return _message.default.format("dxDataGrid-emptyHeaderWithColumnChooserText");
                                        default:
                                            return ""
                                    }
                                },
                                _getHeaderTemplate(column) {
                                    return column.headerCellTemplate || {
                                        allowRenderToDetachedContainer: true,
                                        render: this._getDefaultTemplate(column)
                                    }
                                },
                                _processTemplate(template, options) {
                                    const that = this;
                                    let resultTemplate;
                                    const {
                                        column: column
                                    } = options;
                                    const renderingTemplate = that.callBase(template);
                                    if ("header" === options.rowType && renderingTemplate && column.headerCellTemplate && !column.command) {
                                        resultTemplate = {
                                            render(options) {
                                                const $content = createCellContent(that, options.container, options.model);
                                                renderingTemplate.render((0, _extend.extend)({}, options, {
                                                    container: $content
                                                }))
                                            }
                                        }
                                    } else {
                                        resultTemplate = renderingTemplate
                                    }
                                    return resultTemplate
                                },
                                _handleDataChanged(e) {
                                    if ("refresh" !== e.changeType) {
                                        return
                                    }
                                    if (this._isGroupingChanged || this._requireReady) {
                                        this._isGroupingChanged = false;
                                        this.render()
                                    }
                                },
                                _renderCell($row, options) {
                                    const $cell = this.callBase($row, options);
                                    if ("header" === options.row.rowType) {
                                        $cell.addClass("dx-cell-focus-disabled");
                                        if (!this._isLegacyKeyboardNavigation()) {
                                            if (options.column && !options.column.type) {
                                                $cell.attr("tabindex", this.option("tabindex") || 0)
                                            }
                                        }
                                    }
                                    return $cell
                                },
                                _setCellAriaAttributes($cell, cellOptions) {
                                    this.callBase($cell, cellOptions);
                                    if ("header" === cellOptions.rowType) {
                                        if (!cellOptions.column.type) {
                                            this.setAria("role", "columnheader", $cell)
                                        }
                                        if (cellOptions.column && !cellOptions.column.command && !cellOptions.column.isBand) {
                                            $cell.attr("id", cellOptions.column.headerId);
                                            this.setAria("label", "".concat(_message.default.format("dxDataGrid-ariaColumn"), " ").concat(cellOptions.column.caption), $cell)
                                        }
                                    }
                                },
                                _createRow(row) {
                                    const $row = this.callBase.apply(this, arguments);
                                    $row.toggleClass("dx-column-lines", this.option("showColumnLines"));
                                    if ("header" === row.rowType) {
                                        $row.addClass("dx-header-row");
                                        if (!this._isLegacyKeyboardNavigation()) {
                                            (0, _m_accessibility.registerKeyboardAction)("columnHeaders", this, $row, "td", this._handleActionKeyDown.bind(this))
                                        }
                                    }
                                    return $row
                                },
                                _handleActionKeyDown(args) {
                                    const {
                                        event: event
                                    } = args;
                                    const $target = (0, _renderer.default)(event.target);
                                    this._lastActionElement = event.target;
                                    if ($target.is(".dx-header-filter")) {
                                        const headerFilterController = this.getController("headerFilter");
                                        const $column = $target.closest("td");
                                        const columnIndex = this.getColumnIndexByElement($column);
                                        if (columnIndex >= 0) {
                                            headerFilterController.showHeaderFilterMenu(columnIndex, false)
                                        }
                                    } else {
                                        const $row = $target.closest(".dx-row");
                                        this._processHeaderAction(event, $row)
                                    }
                                    event.preventDefault()
                                },
                                _renderCore() {
                                    const $container = this.element();
                                    const change = {};
                                    if (this._tableElement && !this._dataController.isLoaded() && !this._hasRowElements) {
                                        return
                                    }
                                    $container.addClass(this.addWidgetPrefix("headers")).toggleClass(this.addWidgetPrefix("nowrap"), !this.option("wordWrapEnabled")).empty();
                                    this.setAria("role", "presentation", $container);
                                    const deferred = this._updateContent(this._renderTable({
                                        change: change
                                    }), change);
                                    if (this.getRowCount() > 1) {
                                        $container.addClass("dx-header-multi-row")
                                    }
                                    this.callBase.apply(this, arguments);
                                    return deferred
                                },
                                _renderRows() {
                                    const that = this;
                                    if (that._dataController.isLoaded() || that._hasRowElements) {
                                        that.callBase.apply(that, arguments);
                                        that._hasRowElements = true
                                    }
                                },
                                _renderRow($table, options) {
                                    const rowIndex = 1 === this.getRowCount() ? null : options.row.rowIndex;
                                    options.columns = this.getColumns(rowIndex);
                                    this.callBase($table, options)
                                },
                                _createCell(options) {
                                    const {
                                        column: column
                                    } = options;
                                    const $cellElement = this.callBase.apply(this, arguments);
                                    column.rowspan > 1 && "header" === options.rowType && $cellElement.attr("rowSpan", column.rowspan);
                                    return $cellElement
                                },
                                _getRows() {
                                    const result = [];
                                    const rowCount = this.getRowCount();
                                    if (this.option("showColumnHeaders")) {
                                        for (let i = 0; i < rowCount; i++) {
                                            result.push({
                                                rowType: "header",
                                                rowIndex: i
                                            })
                                        }
                                    }
                                    return result
                                },
                                _getCellTemplate(options) {
                                    if ("header" === options.rowType) {
                                        return this._getHeaderTemplate(options.column)
                                    }
                                },
                                _columnOptionChanged(e) {
                                    const {
                                        changeTypes: changeTypes
                                    } = e;
                                    const {
                                        optionNames: optionNames
                                    } = e;
                                    if (changeTypes.grouping || changeTypes.groupExpanding) {
                                        if (changeTypes.grouping) {
                                            this._isGroupingChanged = true
                                        }
                                        return
                                    }
                                    this.callBase(e);
                                    if (optionNames.width || optionNames.visible) {
                                        this.resizeCompleted.fire()
                                    }
                                },
                                _isElementVisible: elementOptions => elementOptions && elementOptions.visible,
                                _alignCaptionByCenter($cell) {
                                    let $indicatorsContainer = this._getIndicatorContainer($cell, true);
                                    if ($indicatorsContainer && $indicatorsContainer.length) {
                                        $indicatorsContainer.filter(".".concat("dx-visibility-hidden")).remove();
                                        $indicatorsContainer = this._getIndicatorContainer($cell);
                                        $indicatorsContainer.clone().addClass("dx-visibility-hidden").css("float", "").insertBefore($cell.children(".".concat(this.addWidgetPrefix("text-content"))))
                                    }
                                },
                                _updateCell($cell, options) {
                                    if ("header" === options.rowType && "center" === options.column.alignment) {
                                        this._alignCaptionByCenter($cell)
                                    }
                                    this.callBase.apply(this, arguments)
                                },
                                _updateIndicator($cell, column, indicatorName) {
                                    const $indicatorElement = this.callBase.apply(this, arguments);
                                    if ("center" === column.alignment) {
                                        this._alignCaptionByCenter($cell)
                                    }
                                    addCssClassesToCellContent(this, $cell, column);
                                    return $indicatorElement
                                },
                                _getIndicatorContainer($cell, returnAll) {
                                    const $indicatorsContainer = this.callBase($cell);
                                    return returnAll ? $indicatorsContainer : $indicatorsContainer.filter(":not(.".concat("dx-visibility-hidden", ")"))
                                },
                                _isSortableElement: () => true,
                                getHeadersRowHeight() {
                                    const $tableElement = this.getTableElement();
                                    const $headerRows = $tableElement && $tableElement.find(".".concat("dx-header-row"));
                                    return $headerRows && $headerRows.toArray().reduce((sum, headerRow) => sum + (0, _size.getHeight)(headerRow), 0) || 0
                                },
                                getHeaderElement(index) {
                                    const columnElements = this.getColumnElements();
                                    return columnElements && columnElements.eq(index)
                                },
                                getColumnElements(index, bandColumnIndex) {
                                    const that = this;
                                    let $cellElement;
                                    const columnsController = that._columnsController;
                                    const rowCount = that.getRowCount();
                                    if (that.option("showColumnHeaders")) {
                                        if (rowCount > 1 && (!(0, _type.isDefined)(index) || (0, _type.isDefined)(bandColumnIndex))) {
                                            const result = [];
                                            const visibleColumns = (0, _type.isDefined)(bandColumnIndex) ? columnsController.getChildrenByBandColumn(bandColumnIndex, true) : columnsController.getVisibleColumns();
                                            (0, _iterator.each)(visibleColumns, (_, column) => {
                                                const rowIndex = (0, _type.isDefined)(index) ? index : columnsController.getRowIndex(column.index);
                                                $cellElement = that._getCellElement(rowIndex, columnsController.getVisibleIndex(column.index, rowIndex));
                                                $cellElement && result.push($cellElement.get(0))
                                            });
                                            return (0, _renderer.default)(result)
                                        }
                                        if (!index || index < rowCount) {
                                            return that.getCellElements(index || 0)
                                        }
                                    }
                                },
                                getColumnIndexByElement($cell) {
                                    const cellIndex = this.getCellIndex($cell);
                                    const $row = $cell.closest(".dx-row");
                                    const {
                                        rowIndex: rowIndex
                                    } = $row[0];
                                    const column = this.getColumns(rowIndex)[cellIndex];
                                    return column ? column.index : -1
                                },
                                getVisibleColumnIndex(columnIndex, rowIndex) {
                                    const column = this.getColumns()[columnIndex];
                                    return column ? this._columnsController.getVisibleIndex(column.index, rowIndex) : -1
                                },
                                getColumnWidths() {
                                    const $columnElements = this.getColumnElements();
                                    if ($columnElements && $columnElements.length) {
                                        return this._getWidths($columnElements)
                                    }
                                    return this.callBase.apply(this, arguments)
                                },
                                allowDragging(column) {
                                    const rowIndex = column && this._columnsController.getRowIndex(column.index);
                                    const columns = this.getColumns(rowIndex);
                                    const isReorderingEnabled = this.option("allowColumnReordering") || this._columnsController.isColumnOptionUsed("allowReordering");
                                    return isReorderingEnabled && column.allowReordering && columns.length > 1
                                },
                                getBoundingRect() {
                                    const that = this;
                                    const $columnElements = that.getColumnElements();
                                    if ($columnElements && $columnElements.length) {
                                        const offset = that.getTableElement().offset();
                                        return {
                                            top: offset.top
                                        }
                                    }
                                    return null
                                },
                                getName: () => "headers",
                                getColumnCount() {
                                    const $columnElements = this.getColumnElements();
                                    return $columnElements ? $columnElements.length : 0
                                },
                                isVisible() {
                                    return this.option("showColumnHeaders")
                                },
                                optionChanged(args) {
                                    const that = this;
                                    switch (args.name) {
                                        case "showColumnHeaders":
                                        case "wordWrapEnabled":
                                        case "showColumnLines":
                                            that._invalidate(true, true);
                                            args.handled = true;
                                            break;
                                        default:
                                            that.callBase(args)
                                    }
                                },
                                getHeight() {
                                    return this.getElementHeight()
                                },
                                getContextMenuItems(options) {
                                    const that = this;
                                    const {
                                        column: column
                                    } = options;
                                    if (options.row && ("header" === options.row.rowType || "detailAdaptive" === options.row.rowType)) {
                                        const sortingOptions = that.option("sorting");
                                        if (sortingOptions && "none" !== sortingOptions.mode && column && column.allowSorting) {
                                            const onItemClick = function(params) {
                                                setTimeout(() => {
                                                    that._columnsController.changeSortOrder(column.index, params.itemData.value)
                                                })
                                            };
                                            return [{
                                                text: sortingOptions.ascendingText,
                                                value: "asc",
                                                disabled: "asc" === column.sortOrder,
                                                icon: "context-menu-sort-asc",
                                                onItemClick: onItemClick
                                            }, {
                                                text: sortingOptions.descendingText,
                                                value: "desc",
                                                disabled: "desc" === column.sortOrder,
                                                icon: "context-menu-sort-desc",
                                                onItemClick: onItemClick
                                            }, {
                                                text: sortingOptions.clearText,
                                                value: "none",
                                                disabled: !column.sortOrder,
                                                icon: "context-menu-sort-none",
                                                onItemClick: onItemClick
                                            }]
                                        }
                                    }
                                    return
                                },
                                getRowCount() {
                                    return this._columnsController && this._columnsController.getRowCount()
                                },
                                setRowsOpacity(columnIndex, value, rowIndex) {
                                    let i;
                                    let columnElements;
                                    const rowCount = this.getRowCount();
                                    const columns = this._columnsController.getColumns();
                                    const column = columns && columns[columnIndex];
                                    const columnID = column && column.isBand && column.index;
                                    const setColumnOpacity = (column, index) => {
                                        if (column.ownerBand === columnID) {
                                            columnElements.eq(index).css({
                                                opacity: value
                                            });
                                            if (column.isBand) {
                                                this.setRowsOpacity(column.index, value, i + 1)
                                            }
                                        }
                                    };
                                    if ((0, _type.isDefined)(columnID)) {
                                        rowIndex = rowIndex || 0;
                                        for (i = rowIndex; i < rowCount; i++) {
                                            columnElements = this.getCellElements(i);
                                            if (columnElements) {
                                                const rowColumns = this.getColumns(i);
                                                rowColumns.forEach(setColumnOpacity)
                                            }
                                        }
                                    }
                                }
                            };
                            return members
                        }())
                    }
                };
                exports.columnHeadersModule = columnHeadersModule
            },
        51255:
            /*!*******************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/column_state_mixin/m_column_state_mixin.js ***!
              \*******************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _renderer = (obj = __webpack_require__( /*! ../../../../core/renderer */ 68374), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _position = __webpack_require__( /*! ../../../../core/utils/position */ 37518);
                var _default = {
                    _applyColumnState(options) {
                        var _a;
                        const rtlEnabled = this.option("rtlEnabled");
                        const columnAlignment = this._getColumnAlignment(options.column.alignment, rtlEnabled);
                        const parameters = (0, _extend.extend)(true, {
                            columnAlignment: columnAlignment
                        }, options);
                        const isGroupPanelItem = parameters.rootElement.hasClass("dx-group-panel-item");
                        const $indicatorsContainer = this._createIndicatorContainer(parameters, isGroupPanelItem);
                        const $span = (0, _renderer.default)("<span>").addClass(this._getIndicatorClassName(options.name));
                        const columnsController = null === (_a = this.component) || void 0 === _a ? void 0 : _a.getController("columns");
                        const indicatorAlignment = (null === columnsController || void 0 === columnsController ? void 0 : columnsController.getHeaderContentAlignment(columnAlignment)) || columnAlignment;
                        parameters.container = $indicatorsContainer;
                        parameters.indicator = $span;
                        this._renderIndicator(parameters);
                        $indicatorsContainer[(isGroupPanelItem || !options.showColumnLines) && "left" === indicatorAlignment ? "appendTo" : "prependTo"](options.rootElement);
                        return $span
                    },
                    _getIndicatorClassName: _common.noop,
                    _getColumnAlignment(alignment, rtlEnabled) {
                        rtlEnabled = rtlEnabled || this.option("rtlEnabled");
                        return alignment && "center" !== alignment ? alignment : (0, _position.getDefaultAlignment)(rtlEnabled)
                    },
                    _createIndicatorContainer(options, ignoreIndicatorAlignment) {
                        let $indicatorsContainer = this._getIndicatorContainer(options.rootElement);
                        const indicatorAlignment = "left" === options.columnAlignment ? "right" : "left";
                        if (!$indicatorsContainer.length) {
                            $indicatorsContainer = (0, _renderer.default)("<div>").addClass("dx-column-indicators")
                        }
                        this.setAria("role", "presentation", $indicatorsContainer);
                        return $indicatorsContainer.css("float", options.showColumnLines && !ignoreIndicatorAlignment ? indicatorAlignment : null)
                    },
                    _getIndicatorContainer: $cell => $cell && $cell.find(".".concat("dx-column-indicators")),
                    _getIndicatorElements($cell) {
                        const $indicatorContainer = this._getIndicatorContainer($cell);
                        return $indicatorContainer && $indicatorContainer.children()
                    },
                    _renderIndicator(options) {
                        const $container = options.container;
                        const $indicator = options.indicator;
                        $container && $indicator && $container.append($indicator)
                    },
                    _updateIndicators(indicatorName) {
                        const that = this;
                        const columns = that.getColumns();
                        const $cells = that.getColumnElements();
                        let $cell;
                        if (!$cells || columns.length !== $cells.length) {
                            return
                        }
                        for (let i = 0; i < columns.length; i++) {
                            $cell = $cells.eq(i);
                            that._updateIndicator($cell, columns[i], indicatorName);
                            const rowOptions = $cell.parent().data("options");
                            if (rowOptions && rowOptions.cells) {
                                rowOptions.cells[$cell.index()].column = columns[i]
                            }
                        }
                    },
                    _updateIndicator($cell, column, indicatorName) {
                        if (!column.command) {
                            return this._applyColumnState({
                                name: indicatorName,
                                rootElement: $cell,
                                column: column,
                                showColumnLines: this.option("showColumnLines")
                            })
                        }
                    }
                };
                exports.default = _default
            },
        54057:
            /*!****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/columns_controller/const.js ***!
              \****************************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.USER_STATE_FIELD_NAMES_15_1 = exports.USER_STATE_FIELD_NAMES = exports.MAX_SAFE_INTEGER = exports.IGNORE_COLUMN_OPTION_NAMES = exports.GROUP_LOCATION = exports.GROUP_COMMAND_COLUMN_NAME = exports.DETAIL_COMMAND_COLUMN_NAME = exports.DEFAULT_COLUMN_OPTIONS = exports.DATATYPE_OPERATIONS = exports.COMMAND_EXPAND_CLASS = exports.COLUMN_OPTION_REGEXP = exports.COLUMN_INDEX_OPTIONS = exports.COLUMN_CHOOSER_LOCATION = void 0;
                const USER_STATE_FIELD_NAMES_15_1 = ["filterValues", "filterType", "fixed", "fixedPosition"];
                exports.USER_STATE_FIELD_NAMES_15_1 = USER_STATE_FIELD_NAMES_15_1;
                const USER_STATE_FIELD_NAMES = ["visibleIndex", "dataField", "name", "dataType", "width", "visible", "sortOrder", "lastSortOrder", "sortIndex", "groupIndex", "filterValue", "bufferedFilterValue", "selectedFilterOperation", "bufferedSelectedFilterOperation", "added"].concat(USER_STATE_FIELD_NAMES_15_1);
                exports.USER_STATE_FIELD_NAMES = USER_STATE_FIELD_NAMES;
                exports.IGNORE_COLUMN_OPTION_NAMES = {
                    visibleWidth: true,
                    bestFitWidth: true,
                    bufferedFilterValue: true
                };
                exports.COMMAND_EXPAND_CLASS = "dx-command-expand";
                const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
                exports.MAX_SAFE_INTEGER = MAX_SAFE_INTEGER;
                exports.GROUP_COMMAND_COLUMN_NAME = "groupExpand";
                exports.DETAIL_COMMAND_COLUMN_NAME = "detailExpand";
                exports.COLUMN_OPTION_REGEXP = /columns\[(\d+)\]\.?/gi;
                exports.DEFAULT_COLUMN_OPTIONS = {
                    visible: true,
                    showInColumnChooser: true
                };
                exports.DATATYPE_OPERATIONS = {
                    number: ["=", "<>", "<", ">", "<=", ">=", "between"],
                    string: ["contains", "notcontains", "startswith", "endswith", "=", "<>"],
                    date: ["=", "<>", "<", ">", "<=", ">=", "between"],
                    datetime: ["=", "<>", "<", ">", "<=", ">=", "between"]
                };
                exports.COLUMN_INDEX_OPTIONS = {
                    visibleIndex: true,
                    groupIndex: true,
                    grouped: true,
                    sortIndex: true,
                    sortOrder: true
                };
                exports.GROUP_LOCATION = "group";
                exports.COLUMN_CHOOSER_LOCATION = "columnChooser"
            },
        10279:
            /*!*******************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/columns_controller/m_columns_controller.js ***!
              \*******************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.columnsControllerModule = exports.ColumnsController = void 0;
                var _config = _interopRequireDefault(__webpack_require__( /*! ../../../../core/config */ 80209));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/callbacks */ 44504));
                var _data = __webpack_require__( /*! ../../../../core/utils/data */ 47617);
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _inflector = __webpack_require__( /*! ../../../../core/utils/inflector */ 78008);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _object = __webpack_require__( /*! ../../../../core/utils/object */ 48013);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _variable_wrapper = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/variable_wrapper */ 26974));
                var _abstract_store = _interopRequireDefault(__webpack_require__( /*! ../../../../data/abstract_store */ 67403));
                var _data_source = __webpack_require__( /*! ../../../../data/data_source/data_source */ 85273);
                var _utils = __webpack_require__( /*! ../../../../data/data_source/utils */ 9234);
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/date */ 91500));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/message */ 28109));
                var _filtering = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/shared/filtering */ 18740));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.errors */ 96688));
                var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 15943));
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 60082));
                var _const = __webpack_require__( /*! ./const */ 54057);
                var _m_columns_controller_utils = __webpack_require__( /*! ./m_columns_controller_utils */ 22732);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let ColumnsController = function(_modules$Controller) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(ColumnsController, _modules$Controller);

                    function ColumnsController() {
                        return _modules$Controller.apply(this, arguments) || this
                    }
                    var _proto = ColumnsController.prototype;
                    _proto._getExpandColumnOptions = function() {
                        return {
                            type: "expand",
                            command: "expand",
                            width: "auto",
                            cssClass: _const.COMMAND_EXPAND_CLASS,
                            allowEditing: false,
                            allowGrouping: false,
                            allowSorting: false,
                            allowResizing: false,
                            allowReordering: false,
                            allowHiding: false
                        }
                    };
                    _proto._getFirstItems = function(dataSource) {
                        let groupsCount;
                        let items = [];
                        const getFirstItemsCore = function(items, groupsCount) {
                            if (!items || !groupsCount) {
                                return items
                            }
                            for (let i = 0; i < items.length; i++) {
                                const childItems = getFirstItemsCore(items[i].items || items[i].collapsedItems, groupsCount - 1);
                                if (childItems && childItems.length) {
                                    return childItems
                                }
                            }
                        };
                        if (dataSource && dataSource.items().length > 0) {
                            groupsCount = _m_utils.default.normalizeSortingInfo(dataSource.group()).length;
                            items = getFirstItemsCore(dataSource.items(), groupsCount) || []
                        }
                        return items
                    };
                    _proto._endUpdateCore = function() {
                        !this._skipProcessingColumnsChange && (0, _m_columns_controller_utils.fireColumnsChanged)(this)
                    };
                    _proto.init = function(isApplyingUserState) {
                        const that = this;
                        const columns = that.option("columns");
                        that._commandColumns = that._commandColumns || [];
                        that._columns = that._columns || [];
                        that._isColumnsFromOptions = !!columns;
                        if (that._isColumnsFromOptions) {
                            (0, _m_columns_controller_utils.assignColumns)(that, columns ? (0, _m_columns_controller_utils.createColumnsFromOptions)(that, columns) : []);
                            (0, _m_columns_controller_utils.applyUserState)(that)
                        } else {
                            (0, _m_columns_controller_utils.assignColumns)(that, that._columnsUserState ? (0, _m_columns_controller_utils.createColumnsFromOptions)(that, that._columnsUserState) : that._columns)
                        }(0, _m_columns_controller_utils.addExpandColumn)(that);
                        if (that._dataSourceApplied) {
                            that.applyDataSource(that._dataSource, true, isApplyingUserState)
                        } else {
                            (0, _m_columns_controller_utils.updateIndexes)(that)
                        }
                        that._checkColumns()
                    };
                    _proto.callbackNames = function() {
                        return ["columnsChanged"]
                    };
                    _proto.getColumnByPath = function(path, columns) {
                        const that = this;
                        let column;
                        const columnIndexes = [];
                        path.replace(_const.COLUMN_OPTION_REGEXP, (_, columnIndex) => {
                            columnIndexes.push(parseInt(columnIndex));
                            return ""
                        });
                        if (columnIndexes.length) {
                            if (columns) {
                                column = columnIndexes.reduce((column, index) => column && column.columns && column.columns[index], {
                                    columns: columns
                                })
                            } else {
                                column = (0, _m_columns_controller_utils.getColumnByIndexes)(that, columnIndexes)
                            }
                        }
                        return column
                    };
                    _proto.optionChanged = function(args) {
                        let needUpdateRequireResize;
                        switch (args.name) {
                            case "adaptColumnWidthByRatio":
                                args.handled = true;
                                break;
                            case "dataSource":
                                if (args.value !== args.previousValue && !this.option("columns") && (!Array.isArray(args.value) || !Array.isArray(args.previousValue))) {
                                    this._columns = []
                                }
                                break;
                            case "columns":
                                needUpdateRequireResize = this._skipProcessingColumnsChange;
                                args.handled = true;
                                if (!this._skipProcessingColumnsChange) {
                                    if (args.name === args.fullName) {
                                        this._columnsUserState = null;
                                        this._ignoreColumnOptionNames = null;
                                        this.init()
                                    } else {
                                        this._columnOptionChanged(args);
                                        needUpdateRequireResize = true
                                    }
                                }
                                if (needUpdateRequireResize) {
                                    this._updateRequireResize(args)
                                }
                                break;
                            case "commonColumnSettings":
                            case "columnAutoWidth":
                            case "allowColumnResizing":
                            case "allowColumnReordering":
                            case "columnFixing":
                            case "grouping":
                            case "groupPanel":
                            case "regenerateColumnsByVisibleItems":
                            case "customizeColumns":
                            case "columnHidingEnabled":
                            case "dateSerializationFormat":
                            case "columnResizingMode":
                            case "columnMinWidth":
                            case "columnWidth": {
                                args.handled = true;
                                const ignoreColumnOptionNames = "columnWidth" === args.fullName && ["width"];
                                this.reinit(ignoreColumnOptionNames);
                                break
                            }
                            case "rtlEnabled":
                                this.reinit();
                                break;
                            default:
                                _modules$Controller.prototype.optionChanged.call(this, args)
                        }
                    };
                    _proto._columnOptionChanged = function(args) {
                        let columnOptionValue = {};
                        const column = this.getColumnByPath(args.fullName);
                        const columnOptionName = args.fullName.replace(_const.COLUMN_OPTION_REGEXP, "");
                        if (column) {
                            if (columnOptionName) {
                                columnOptionValue[columnOptionName] = args.value
                            } else {
                                columnOptionValue = args.value
                            }
                            this._skipProcessingColumnsChange = args.fullName;
                            this.columnOption(column.index, columnOptionValue);
                            this._skipProcessingColumnsChange = false
                        }
                    };
                    _proto._updateRequireResize = function(args) {
                        const {
                            component: component
                        } = this;
                        if ("width" === args.fullName.replace(_const.COLUMN_OPTION_REGEXP, "") && component._updateLockCount) {
                            component._requireResize = true
                        }
                    };
                    _proto.publicMethods = function() {
                        return ["addColumn", "deleteColumn", "columnOption", "columnCount", "clearSorting", "clearGrouping", "getVisibleColumns", "getVisibleColumnIndex"]
                    };
                    _proto.applyDataSource = function(dataSource, forceApplying, isApplyingUserState) {
                        const that = this;
                        const isDataSourceLoaded = dataSource && dataSource.isLoaded();
                        that._dataSource = dataSource;
                        if (!that._dataSourceApplied || 0 === that._dataSourceColumnsCount || forceApplying || that.option("regenerateColumnsByVisibleItems")) {
                            if (isDataSourceLoaded) {
                                if (!that._isColumnsFromOptions) {
                                    const columnsFromDataSource = (0, _m_columns_controller_utils.createColumnsFromDataSource)(that, dataSource);
                                    if (columnsFromDataSource.length) {
                                        (0, _m_columns_controller_utils.assignColumns)(that, columnsFromDataSource);
                                        that._dataSourceColumnsCount = that._columns.length;
                                        (0, _m_columns_controller_utils.applyUserState)(that)
                                    }
                                }
                                return that.updateColumns(dataSource, forceApplying, isApplyingUserState)
                            }
                            that._dataSourceApplied = false;
                            (0, _m_columns_controller_utils.updateIndexes)(that)
                        } else if (isDataSourceLoaded && !that.isAllDataTypesDefined(true) && that.updateColumnDataTypes(dataSource)) {
                            (0, _m_columns_controller_utils.updateColumnChanges)(that, "columns");
                            (0, _m_columns_controller_utils.fireColumnsChanged)(that);
                            return (new _deferred.Deferred).reject().promise()
                        }
                    };
                    _proto.reset = function() {
                        this._dataSource = null;
                        this._dataSourceApplied = false;
                        this._dataSourceColumnsCount = void 0;
                        this.reinit()
                    };
                    _proto.resetColumnsCache = function() {
                        this._visibleColumns = void 0;
                        this._fixedColumns = void 0;
                        this._rowCount = void 0;
                        (0, _m_columns_controller_utils.resetBandColumnsCache)(this)
                    };
                    _proto.reinit = function(ignoreColumnOptionNames) {
                        this._columnsUserState = this.getUserState();
                        this._ignoreColumnOptionNames = ignoreColumnOptionNames || null;
                        this.init();
                        if (ignoreColumnOptionNames) {
                            this._ignoreColumnOptionNames = null
                        }
                    };
                    _proto.isInitialized = function() {
                        return !!this._columns.length || !!this.option("columns")
                    };
                    _proto.isDataSourceApplied = function() {
                        return this._dataSourceApplied
                    };
                    _proto.getCommonSettings = function(column) {
                        var _a, _b;
                        const commonColumnSettings = (!column || !column.type) && this.option("commonColumnSettings") || {};
                        const groupingOptions = null !== (_a = this.option("grouping")) && void 0 !== _a ? _a : {};
                        const groupPanelOptions = null !== (_b = this.option("groupPanel")) && void 0 !== _b ? _b : {};
                        return (0, _extend.extend)({
                            allowFixing: this.option("columnFixing.enabled"),
                            allowResizing: this.option("allowColumnResizing") || void 0,
                            allowReordering: this.option("allowColumnReordering"),
                            minWidth: this.option("columnMinWidth"),
                            width: this.option("columnWidth"),
                            autoExpandGroup: groupingOptions.autoExpandAll,
                            allowCollapsing: groupingOptions.allowCollapsing,
                            allowGrouping: groupPanelOptions.allowColumnDragging && groupPanelOptions.visible || groupingOptions.contextMenuEnabled
                        }, commonColumnSettings)
                    };
                    _proto.isColumnOptionUsed = function(optionName) {
                        for (let i = 0; i < this._columns.length; i++) {
                            if (this._columns[i][optionName]) {
                                return true
                            }
                        }
                    };
                    _proto.isAllDataTypesDefined = function(checkSerializers) {
                        const columns = this._columns;
                        if (!columns.length) {
                            return false
                        }
                        for (let i = 0; i < columns.length; i++) {
                            if (!columns[i].dataField && columns[i].calculateCellValue === columns[i].defaultCalculateCellValue) {
                                continue
                            }
                            if (!columns[i].dataType || checkSerializers && columns[i].deserializeValue && void 0 === columns[i].serializationFormat) {
                                return false
                            }
                        }
                        return true
                    };
                    _proto.getColumns = function() {
                        return this._columns
                    };
                    _proto.isBandColumnsUsed = function() {
                        return this.getColumns().some(column => column.isBand)
                    };
                    _proto.getGroupColumns = function() {
                        const result = [];
                        (0, _iterator.each)(this._columns, (function() {
                            const column = this;
                            if ((0, _type.isDefined)(column.groupIndex)) {
                                result[column.groupIndex] = column
                            }
                        }));
                        return result
                    };
                    _proto._shouldReturnVisibleColumns = function() {
                        return true
                    };
                    _proto._compileVisibleColumns = function(rowIndex) {
                        this._visibleColumns = this._visibleColumns || this._compileVisibleColumnsCore();
                        rowIndex = (0, _type.isDefined)(rowIndex) ? rowIndex : this._visibleColumns.length - 1;
                        return this._visibleColumns[rowIndex] || []
                    };
                    _proto.getVisibleColumns = function(rowIndex, isBase) {
                        if (!this._shouldReturnVisibleColumns()) {
                            return []
                        }
                        return this._compileVisibleColumns.apply(this, arguments)
                    };
                    _proto.getFixedColumns = function(rowIndex) {
                        this._fixedColumns = this._fixedColumns || this._getFixedColumnsCore();
                        rowIndex = (0, _type.isDefined)(rowIndex) ? rowIndex : this._fixedColumns.length - 1;
                        return this._fixedColumns[rowIndex] || []
                    };
                    _proto.getFilteringColumns = function() {
                        return this.getColumns().filter(item => (item.dataField || item.name) && (item.allowFiltering || item.allowHeaderFiltering)).map(item => {
                            const field = (0, _extend.extend)(true, {}, item);
                            if (!(0, _type.isDefined)(field.dataField)) {
                                field.dataField = field.name
                            }
                            field.filterOperations = item.filterOperations !== item.defaultFilterOperations ? field.filterOperations : null;
                            return field
                        })
                    };
                    _proto.getColumnIndexOffset = function() {
                        return 0
                    };
                    _proto._getFixedColumnsCore = function() {
                        const that = this;
                        const result = [];
                        const rowCount = that.getRowCount();
                        const isColumnFixing = that._isColumnFixing();
                        const transparentColumn = {
                            command: "transparent"
                        };
                        let transparentColspan = 0;
                        let notFixedColumnCount;
                        let transparentColumnIndex;
                        let lastFixedPosition;
                        if (isColumnFixing) {
                            for (let i = 0; i <= rowCount; i++) {
                                notFixedColumnCount = 0;
                                lastFixedPosition = null;
                                transparentColumnIndex = null;
                                const visibleColumns = that.getVisibleColumns(i, true);
                                for (let j = 0; j < visibleColumns.length; j++) {
                                    const prevColumn = visibleColumns[j - 1];
                                    const column = visibleColumns[j];
                                    if (!column.fixed) {
                                        if (0 === i) {
                                            if (column.isBand && column.colspan) {
                                                transparentColspan += column.colspan
                                            } else {
                                                transparentColspan++
                                            }
                                        }
                                        notFixedColumnCount++;
                                        if (!(0, _type.isDefined)(transparentColumnIndex)) {
                                            transparentColumnIndex = j
                                        }
                                    } else if (prevColumn && prevColumn.fixed && (0, _m_columns_controller_utils.getFixedPosition)(that, prevColumn) !== (0, _m_columns_controller_utils.getFixedPosition)(that, column)) {
                                        if (!(0, _type.isDefined)(transparentColumnIndex)) {
                                            transparentColumnIndex = j
                                        }
                                    } else {
                                        lastFixedPosition = column.fixedPosition
                                    }
                                }
                                if (0 === i && (0 === notFixedColumnCount || notFixedColumnCount >= visibleColumns.length)) {
                                    return []
                                }
                                if (!(0, _type.isDefined)(transparentColumnIndex)) {
                                    transparentColumnIndex = "right" === lastFixedPosition ? 0 : visibleColumns.length
                                }
                                result[i] = visibleColumns.slice(0);
                                if (!transparentColumn.colspan) {
                                    transparentColumn.colspan = transparentColspan
                                }
                                result[i].splice(transparentColumnIndex, notFixedColumnCount, transparentColumn)
                            }
                        }
                        return result.map(columns => columns.map(column => {
                            const newColumn = _extends({}, column);
                            if (newColumn.headerId) {
                                newColumn.headerId += "-fixed"
                            }
                            return newColumn
                        }))
                    };
                    _proto._isColumnFixing = function() {
                        let isColumnFixing = this.option("columnFixing.enabled");
                        !isColumnFixing && (0, _iterator.each)(this._columns, (_, column) => {
                            if (column.fixed) {
                                isColumnFixing = true;
                                return false
                            }
                        });
                        return isColumnFixing
                    };
                    _proto._getExpandColumnsCore = function() {
                        return this.getGroupColumns()
                    };
                    _proto.getExpandColumns = function() {
                        let expandColumns = this._getExpandColumnsCore();
                        let expandColumn;
                        const firstGroupColumn = expandColumns.filter(column => 0 === column.groupIndex)[0];
                        const isFixedFirstGroupColumn = firstGroupColumn && firstGroupColumn.fixed;
                        const isColumnFixing = this._isColumnFixing();
                        const rtlEnabled = this.option("rtlEnabled");
                        if (expandColumns.length) {
                            expandColumn = this.columnOption("command:expand")
                        }
                        expandColumns = (0, _iterator.map)(expandColumns, column => (0, _extend.extend)({}, column, {
                            visibleWidth: null,
                            minWidth: null,
                            cellTemplate: !(0, _type.isDefined)(column.groupIndex) ? column.cellTemplate : null,
                            headerCellTemplate: null,
                            fixed: !(0, _type.isDefined)(column.groupIndex) || !isFixedFirstGroupColumn ? isColumnFixing : true,
                            fixedPosition: rtlEnabled ? "right" : "left"
                        }, expandColumn, {
                            index: column.index,
                            type: column.type || _const.GROUP_COMMAND_COLUMN_NAME
                        }));
                        return expandColumns
                    };
                    _proto.getBandColumnsCache = function() {
                        if (!this._bandColumnsCache) {
                            const columns = this._columns;
                            const columnChildrenByIndex = {};
                            const columnParentByIndex = {};
                            let isPlain = true;
                            columns.forEach(column => {
                                const {
                                    ownerBand: ownerBand
                                } = column;
                                let parentIndex = (0, _type.isObject)(ownerBand) ? ownerBand.index : ownerBand;
                                const parent = columns[parentIndex];
                                if (column.hasColumns) {
                                    isPlain = false
                                }
                                if (column.colspan) {
                                    column.colspan = void 0
                                }
                                if (column.rowspan) {
                                    column.rowspan = void 0
                                }
                                if (parent) {
                                    columnParentByIndex[column.index] = parent
                                } else {
                                    parentIndex = -1
                                }
                                columnChildrenByIndex[parentIndex] = columnChildrenByIndex[parentIndex] || [];
                                columnChildrenByIndex[parentIndex].push(column)
                            });
                            this._bandColumnsCache = {
                                isPlain: isPlain,
                                columnChildrenByIndex: columnChildrenByIndex,
                                columnParentByIndex: columnParentByIndex
                            }
                        }
                        return this._bandColumnsCache
                    };
                    _proto._isColumnVisible = function(column) {
                        return column.visible && this.isParentColumnVisible(column.index)
                    };
                    _proto._isColumnInGroupPanel = function(column) {
                        return (0, _type.isDefined)(column.groupIndex) && !column.showWhenGrouped
                    };
                    _proto.hasVisibleDataColumns = function() {
                        const columns = this._columns;
                        return columns.some(column => {
                            const isVisible = this._isColumnVisible(column);
                            const isInGroupPanel = this._isColumnInGroupPanel(column);
                            const isCommand = !!column.command;
                            return isVisible && !isInGroupPanel && !isCommand
                        })
                    };
                    _proto._compileVisibleColumnsCore = function() {
                        const bandColumnsCache = this.getBandColumnsCache();
                        const columns = (0, _m_columns_controller_utils.mergeColumns)(this, this._columns, this._commandColumns, true);
                        (0, _m_columns_controller_utils.processBandColumns)(this, columns, bandColumnsCache);
                        const indexedColumns = this._getIndexedColumns(columns);
                        const visibleColumns = this._getVisibleColumnsFromIndexed(indexedColumns);
                        const isDataColumnsInvisible = !this.hasVisibleDataColumns();
                        if (isDataColumnsInvisible && this._columns.length) {
                            visibleColumns[visibleColumns.length - 1].push({
                                command: "empty"
                            })
                        }
                        return visibleColumns
                    };
                    _proto._getIndexedColumns = function(columns) {
                        const rtlEnabled = this.option("rtlEnabled");
                        const rowCount = this.getRowCount();
                        const columnDigitsCount = (0, _m_columns_controller_utils.digitsCount)(columns.length);
                        const bandColumnsCache = this.getBandColumnsCache();
                        const positiveIndexedColumns = [];
                        const negativeIndexedColumns = [];
                        for (let i = 0; i < rowCount; i += 1) {
                            negativeIndexedColumns[i] = [{}];
                            positiveIndexedColumns[i] = [{}, {}, {}]
                        }
                        columns.forEach(column => {
                            var _a, _b, _c, _d;
                            let {
                                visibleIndex: visibleIndex
                            } = column;
                            let indexedColumns;
                            const parentBandColumns = (0, _m_columns_controller_utils.getParentBandColumns)(column.index, bandColumnsCache.columnParentByIndex);
                            const isVisible = this._isColumnVisible(column);
                            const isInGroupPanel = this._isColumnInGroupPanel(column);
                            if (isVisible && !isInGroupPanel) {
                                const rowIndex = parentBandColumns.length;
                                if (visibleIndex < 0) {
                                    visibleIndex = -visibleIndex;
                                    indexedColumns = negativeIndexedColumns[rowIndex]
                                } else {
                                    column.fixed = null !== (_b = null === (_a = parentBandColumns[0]) || void 0 === _a ? void 0 : _a.fixed) && void 0 !== _b ? _b : column.fixed;
                                    column.fixedPosition = null !== (_d = null === (_c = parentBandColumns[0]) || void 0 === _c ? void 0 : _c.fixedPosition) && void 0 !== _d ? _d : column.fixedPosition;
                                    if (column.fixed) {
                                        const isDefaultCommandColumn = !!column.command && !(0, _m_columns_controller_utils.isCustomCommandColumn)(this, column);
                                        let isFixedToEnd = "right" === column.fixedPosition;
                                        if (rtlEnabled && !isDefaultCommandColumn) {
                                            isFixedToEnd = !isFixedToEnd
                                        }
                                        indexedColumns = isFixedToEnd ? positiveIndexedColumns[rowIndex][2] : positiveIndexedColumns[rowIndex][0]
                                    } else {
                                        indexedColumns = positiveIndexedColumns[rowIndex][1]
                                    }
                                }
                                if (parentBandColumns.length) {
                                    visibleIndex = (0, _m_columns_controller_utils.numberToString)(visibleIndex, columnDigitsCount);
                                    for (let i = parentBandColumns.length - 1; i >= 0; i -= 1) {
                                        visibleIndex = (0, _m_columns_controller_utils.numberToString)(parentBandColumns[i].visibleIndex, columnDigitsCount) + visibleIndex
                                    }
                                }
                                indexedColumns[visibleIndex] = indexedColumns[visibleIndex] || [];
                                indexedColumns[visibleIndex].push(column)
                            }
                        });
                        return {
                            positiveIndexedColumns: positiveIndexedColumns,
                            negativeIndexedColumns: negativeIndexedColumns
                        }
                    };
                    _proto._getVisibleColumnsFromIndexed = function(_ref) {
                        let {
                            positiveIndexedColumns: positiveIndexedColumns,
                            negativeIndexedColumns: negativeIndexedColumns
                        } = _ref;
                        const result = [];
                        const rowCount = this.getRowCount();
                        const expandColumns = (0, _m_columns_controller_utils.mergeColumns)(this, this.getExpandColumns(), this._columns);
                        let rowspanGroupColumns = 0;
                        let rowspanExpandColumns = 0;
                        for (let rowIndex = 0; rowIndex < rowCount; rowIndex += 1) {
                            result.push([]);
                            (0, _object.orderEach)(negativeIndexedColumns[rowIndex], (_, columns) => {
                                result[rowIndex].unshift.apply(result[rowIndex], columns)
                            });
                            const firstPositiveIndexColumn = result[rowIndex].length;
                            const positiveIndexedRowColumns = positiveIndexedColumns[rowIndex];
                            positiveIndexedRowColumns.forEach(columnsByFixing => {
                                (0, _object.orderEach)(columnsByFixing, (_, columnsByVisibleIndex) => {
                                    result[rowIndex].push.apply(result[rowIndex], columnsByVisibleIndex)
                                })
                            });
                            if (rowspanExpandColumns <= rowIndex) {
                                rowspanExpandColumns += _m_columns_controller_utils.processExpandColumns.call(this, result[rowIndex], expandColumns, _const.DETAIL_COMMAND_COLUMN_NAME, firstPositiveIndexColumn)
                            }
                            if (rowspanGroupColumns <= rowIndex) {
                                rowspanGroupColumns += _m_columns_controller_utils.processExpandColumns.call(this, result[rowIndex], expandColumns, _const.GROUP_COMMAND_COLUMN_NAME, firstPositiveIndexColumn)
                            }
                        }
                        result.push((0, _m_columns_controller_utils.getDataColumns)(result));
                        return result
                    };
                    _proto.getInvisibleColumns = function(columns, bandColumnIndex) {
                        const that = this;
                        let result = [];
                        let hiddenColumnsByBand;
                        columns = columns || that._columns;
                        (0, _iterator.each)(columns, (_, column) => {
                            if (column.ownerBand !== bandColumnIndex) {
                                return
                            }
                            if (column.isBand) {
                                if (!column.visible) {
                                    hiddenColumnsByBand = that.getChildrenByBandColumn(column.index)
                                } else {
                                    hiddenColumnsByBand = that.getInvisibleColumns(that.getChildrenByBandColumn(column.index), column.index)
                                }
                                if (hiddenColumnsByBand.length) {
                                    result.push(column);
                                    result = result.concat(hiddenColumnsByBand)
                                }
                                return
                            }
                            if (!column.visible) {
                                result.push(column)
                            }
                        });
                        return result
                    };
                    _proto.getChooserColumns = function(getAllColumns) {
                        const columns = getAllColumns ? this.getColumns() : this.getInvisibleColumns();
                        const columnChooserColumns = columns.filter(column => column.showInColumnChooser);
                        const sortOrder = this.option("columnChooser.sortOrder");
                        return (0, _m_columns_controller_utils.sortColumns)(columnChooserColumns, sortOrder)
                    };
                    _proto.allowMoveColumn = function(fromVisibleIndex, toVisibleIndex, sourceLocation, targetLocation) {
                        const columnIndex = (0, _m_columns_controller_utils.getColumnIndexByVisibleIndex)(this, fromVisibleIndex, sourceLocation);
                        const sourceColumn = this._columns[columnIndex];
                        if (sourceColumn && (sourceColumn.allowReordering || sourceColumn.allowGrouping || sourceColumn.allowHiding)) {
                            if (sourceLocation === targetLocation) {
                                if (sourceLocation === _const.COLUMN_CHOOSER_LOCATION) {
                                    return false
                                }
                                fromVisibleIndex = (0, _type.isObject)(fromVisibleIndex) ? fromVisibleIndex.columnIndex : fromVisibleIndex;
                                toVisibleIndex = (0, _type.isObject)(toVisibleIndex) ? toVisibleIndex.columnIndex : toVisibleIndex;
                                return fromVisibleIndex !== toVisibleIndex && fromVisibleIndex + 1 !== toVisibleIndex
                            }
                            if (sourceLocation === _const.GROUP_LOCATION && targetLocation !== _const.COLUMN_CHOOSER_LOCATION || targetLocation === _const.GROUP_LOCATION) {
                                return sourceColumn && sourceColumn.allowGrouping
                            }
                            if (sourceLocation === _const.COLUMN_CHOOSER_LOCATION || targetLocation === _const.COLUMN_CHOOSER_LOCATION) {
                                return sourceColumn && sourceColumn.allowHiding
                            }
                            return true
                        }
                        return false
                    };
                    _proto.moveColumn = function(fromVisibleIndex, toVisibleIndex, sourceLocation, targetLocation) {
                        const that = this;
                        const options = {};
                        let prevGroupIndex;
                        const fromIndex = (0, _m_columns_controller_utils.getColumnIndexByVisibleIndex)(that, fromVisibleIndex, sourceLocation);
                        const toIndex = (0, _m_columns_controller_utils.getColumnIndexByVisibleIndex)(that, toVisibleIndex, targetLocation);
                        let targetGroupIndex;
                        if (fromIndex >= 0) {
                            const column = that._columns[fromIndex];
                            toVisibleIndex = (0, _type.isObject)(toVisibleIndex) ? toVisibleIndex.columnIndex : toVisibleIndex;
                            targetGroupIndex = toIndex >= 0 ? that._columns[toIndex].groupIndex : -1;
                            if ((0, _type.isDefined)(column.groupIndex) && sourceLocation === _const.GROUP_LOCATION) {
                                if (targetGroupIndex > column.groupIndex) {
                                    targetGroupIndex--
                                }
                                if (targetLocation !== _const.GROUP_LOCATION) {
                                    options.groupIndex = void 0
                                } else {
                                    prevGroupIndex = column.groupIndex;
                                    delete column.groupIndex;
                                    (0, _m_columns_controller_utils.updateColumnGroupIndexes)(that)
                                }
                            }
                            if (targetLocation === _const.GROUP_LOCATION) {
                                options.groupIndex = (0, _m_columns_controller_utils.moveColumnToGroup)(that, column, targetGroupIndex);
                                column.groupIndex = prevGroupIndex
                            } else if (toVisibleIndex >= 0) {
                                const targetColumn = that._columns[toIndex];
                                if (!targetColumn || column.ownerBand !== targetColumn.ownerBand) {
                                    options.visibleIndex = _const.MAX_SAFE_INTEGER
                                } else if ((0, _m_columns_controller_utils.isColumnFixed)(that, column) ^ (0, _m_columns_controller_utils.isColumnFixed)(that, targetColumn)) {
                                    options.visibleIndex = _const.MAX_SAFE_INTEGER
                                } else {
                                    options.visibleIndex = targetColumn.visibleIndex
                                }
                            }
                            const isVisible = targetLocation !== _const.COLUMN_CHOOSER_LOCATION;
                            if (column.visible !== isVisible) {
                                options.visible = isVisible
                            }
                            that.columnOption(column.index, options)
                        }
                    };
                    _proto.changeSortOrder = function(columnIndex, sortOrder) {
                        const that = this;
                        const options = {};
                        const sortingOptions = that.option("sorting");
                        const sortingMode = sortingOptions && sortingOptions.mode;
                        const needResetSorting = "single" === sortingMode || !sortOrder;
                        const allowSorting = "single" === sortingMode || "multiple" === sortingMode;
                        const column = that._columns[columnIndex];
                        if (allowSorting && column && column.allowSorting) {
                            if (needResetSorting && !(0, _type.isDefined)(column.groupIndex)) {
                                (0, _iterator.each)(that._columns, (function(index) {
                                    if (index !== columnIndex && this.sortOrder) {
                                        if (!(0, _type.isDefined)(this.groupIndex)) {
                                            delete this.sortOrder
                                        }
                                        delete this.sortIndex
                                    }
                                }))
                            }
                            if ((0, _m_columns_controller_utils.isSortOrderValid)(sortOrder)) {
                                if (column.sortOrder !== sortOrder) {
                                    options.sortOrder = sortOrder
                                }
                            } else if ("none" === sortOrder) {
                                if (column.sortOrder) {
                                    options.sortIndex = void 0;
                                    options.sortOrder = void 0
                                }
                            } else {
                                ! function(column) {
                                    if ("ctrl" === sortOrder) {
                                        if (!("sortOrder" in column && "sortIndex" in column)) {
                                            return false
                                        }
                                        options.sortOrder = void 0;
                                        options.sortIndex = void 0
                                    } else if ((0, _type.isDefined)(column.groupIndex) || (0, _type.isDefined)(column.sortIndex)) {
                                        options.sortOrder = "desc" === column.sortOrder ? "asc" : "desc"
                                    } else {
                                        options.sortOrder = "asc"
                                    }
                                    return true
                                }(column)
                            }
                        }
                        that.columnOption(column.index, options)
                    };
                    _proto.getSortDataSourceParameters = function(useLocalSelector) {
                        const sortColumns = [];
                        const sort = [];
                        (0, _iterator.each)(this._columns, (function() {
                            if ((this.dataField || this.selector || this.calculateCellValue) && (0, _type.isDefined)(this.sortIndex) && !(0, _type.isDefined)(this.groupIndex)) {
                                sortColumns[this.sortIndex] = this
                            }
                        }));
                        (0, _iterator.each)(sortColumns, (function() {
                            const sortOrder = this && this.sortOrder;
                            if ((0, _m_columns_controller_utils.isSortOrderValid)(sortOrder)) {
                                const sortItem = {
                                    selector: this.calculateSortValue || this.displayField || this.calculateDisplayValue || useLocalSelector && this.selector || this.dataField || this.calculateCellValue,
                                    desc: "desc" === this.sortOrder
                                };
                                if (this.sortingMethod) {
                                    sortItem.compare = this.sortingMethod.bind(this)
                                }
                                sort.push(sortItem)
                            }
                        }));
                        return sort.length > 0 ? sort : null
                    };
                    _proto.getGroupDataSourceParameters = function(useLocalSelector) {
                        const group = [];
                        (0, _iterator.each)(this.getGroupColumns(), (function() {
                            const selector = this.calculateGroupValue || this.displayField || this.calculateDisplayValue || useLocalSelector && this.selector || this.dataField || this.calculateCellValue;
                            if (selector) {
                                const groupItem = {
                                    selector: selector,
                                    desc: "desc" === this.sortOrder,
                                    isExpanded: !!this.autoExpandGroup
                                };
                                if (this.sortingMethod) {
                                    groupItem.compare = this.sortingMethod.bind(this)
                                }
                                group.push(groupItem)
                            }
                        }));
                        return group.length > 0 ? group : null
                    };
                    _proto.refresh = function(updateNewLookupsOnly) {
                        const deferreds = [];
                        (0, _iterator.each)(this._columns, (function() {
                            const {
                                lookup: lookup
                            } = this;
                            if (lookup && !this.calculateDisplayValue) {
                                if (updateNewLookupsOnly && lookup.valueMap) {
                                    return
                                }
                                if (lookup.update) {
                                    deferreds.push(lookup.update())
                                }
                            }
                        }));
                        return _deferred.when.apply(_renderer.default, deferreds).done(_m_columns_controller_utils.resetColumnsCache.bind(null, this))
                    };
                    _proto._updateColumnOptions = function(column, columnIndex) {
                        column.selector = column.selector || function(data) {
                            return column.calculateCellValue(data)
                        };
                        if (this._reinitAfterLookupChanges && this._previousColumns) {
                            column.selector.columnIndex = columnIndex;
                            column.selector.originalCallback = this._previousColumns[columnIndex].selector.originalCallback
                        } else {
                            column.selector.columnIndex = columnIndex;
                            column.selector.originalCallback = column.selector
                        }(0, _iterator.each)(["calculateSortValue", "calculateGroupValue", "calculateDisplayValue"], (_, calculateCallbackName) => {
                            const calculateCallback = column[calculateCallbackName];
                            if ((0, _type.isFunction)(calculateCallback)) {
                                if (!calculateCallback.originalCallback) {
                                    const context = {
                                        column: column
                                    };
                                    column[calculateCallbackName] = function(data) {
                                        return calculateCallback.call(context.column, data)
                                    };
                                    column[calculateCallbackName].originalCallback = calculateCallback;
                                    column[calculateCallbackName].columnIndex = columnIndex;
                                    column[calculateCallbackName].context = context
                                } else {
                                    column[calculateCallbackName].context.column = column
                                }
                            }
                        });
                        if ((0, _type.isString)(column.calculateDisplayValue)) {
                            column.displayField = column.calculateDisplayValue;
                            column.calculateDisplayValue = (0, _data.compileGetter)(column.displayField)
                        }
                        if (column.calculateDisplayValue) {
                            column.displayValueMap = column.displayValueMap || {}
                        }(0, _m_columns_controller_utils.updateSerializers)(column, column.dataType);
                        const {
                            lookup: lookup
                        } = column;
                        if (lookup) {
                            (0, _m_columns_controller_utils.updateSerializers)(lookup, lookup.dataType)
                        }
                        const dataType = lookup ? lookup.dataType : column.dataType;
                        if (dataType) {
                            column.alignment = column.alignment || (0, _m_columns_controller_utils.getAlignmentByDataType)(dataType, this.option("rtlEnabled"));
                            column.format = column.format || _m_utils.default.getFormatByDataType(dataType);
                            column.customizeText = column.customizeText || (0, _m_columns_controller_utils.getCustomizeTextByDataType)(dataType);
                            column.defaultFilterOperations = column.defaultFilterOperations || !lookup && _const.DATATYPE_OPERATIONS[dataType] || [];
                            if (!(0, _type.isDefined)(column.filterOperations)) {
                                (0, _m_columns_controller_utils.setFilterOperationsAsDefaultValues)(column)
                            }
                            column.defaultFilterOperation = column.filterOperations && column.filterOperations[0] || "=";
                            column.showEditorAlways = (0, _type.isDefined)(column.showEditorAlways) ? column.showEditorAlways : "boolean" === dataType && !column.cellTemplate && !column.lookup
                        }
                    };
                    _proto.updateColumnDataTypes = function(dataSource) {
                        const that = this;
                        const dateSerializationFormat = that.option("dateSerializationFormat");
                        const firstItems = that._getFirstItems(dataSource);
                        let isColumnDataTypesUpdated = false;
                        (0, _iterator.each)(that._columns, (index, column) => {
                            let i;
                            let value;
                            let dataType;
                            let lookupDataType;
                            let valueDataType;
                            const {
                                lookup: lookup
                            } = column;
                            if (_m_utils.default.isDateType(column.dataType) && void 0 === column.serializationFormat) {
                                column.serializationFormat = dateSerializationFormat
                            }
                            if (lookup && _m_utils.default.isDateType(lookup.dataType) && void 0 === column.serializationFormat) {
                                lookup.serializationFormat = dateSerializationFormat
                            }
                            if (column.calculateCellValue && firstItems.length) {
                                if (!column.dataType || lookup && !lookup.dataType) {
                                    for (i = 0; i < firstItems.length; i++) {
                                        value = column.calculateCellValue(firstItems[i]);
                                        if (!column.dataType) {
                                            valueDataType = (0, _m_columns_controller_utils.getValueDataType)(value);
                                            dataType = dataType || valueDataType;
                                            if (dataType && valueDataType && dataType !== valueDataType) {
                                                dataType = "string"
                                            }
                                        }
                                        if (lookup && !lookup.dataType) {
                                            valueDataType = (0, _m_columns_controller_utils.getValueDataType)(_m_utils.default.getDisplayValue(column, value, firstItems[i]));
                                            lookupDataType = lookupDataType || valueDataType;
                                            if (lookupDataType && valueDataType && lookupDataType !== valueDataType) {
                                                lookupDataType = "string"
                                            }
                                        }
                                    }
                                    if (dataType || lookupDataType) {
                                        if (dataType) {
                                            column.dataType = dataType
                                        }
                                        if (lookup && lookupDataType) {
                                            lookup.dataType = lookupDataType
                                        }
                                        isColumnDataTypesUpdated = true
                                    }
                                }
                                if (void 0 === column.serializationFormat || lookup && void 0 === lookup.serializationFormat) {
                                    for (i = 0; i < firstItems.length; i++) {
                                        value = column.calculateCellValue(firstItems[i], true);
                                        if (void 0 === column.serializationFormat) {
                                            column.serializationFormat = (0, _m_columns_controller_utils.getSerializationFormat)(column.dataType, value)
                                        }
                                        if (lookup && void 0 === lookup.serializationFormat) {
                                            lookup.serializationFormat = (0, _m_columns_controller_utils.getSerializationFormat)(lookup.dataType, lookup.calculateCellValue(value, true))
                                        }
                                    }
                                }
                            }
                            that._updateColumnOptions(column, index)
                        });
                        return isColumnDataTypesUpdated
                    };
                    _proto._customizeColumns = function(columns) {
                        const that = this;
                        const customizeColumns = that.option("customizeColumns");
                        if (customizeColumns) {
                            const hasOwnerBand = columns.some(column => (0, _type.isObject)(column.ownerBand));
                            if (hasOwnerBand) {
                                (0, _m_columns_controller_utils.updateIndexes)(that)
                            }
                            customizeColumns(columns);
                            (0, _m_columns_controller_utils.assignColumns)(that, (0, _m_columns_controller_utils.createColumnsFromOptions)(that, columns))
                        }
                    };
                    _proto.updateColumns = function(dataSource, forceApplying, isApplyingUserState) {
                        if (!forceApplying) {
                            this.updateSortingGrouping(dataSource)
                        }
                        if (!dataSource || dataSource.isLoaded()) {
                            const sortParameters = dataSource ? dataSource.sort() || [] : this.getSortDataSourceParameters();
                            const groupParameters = dataSource ? dataSource.group() || [] : this.getGroupDataSourceParameters();
                            const filterParameters = null === dataSource || void 0 === dataSource ? void 0 : dataSource.lastLoadOptions().filter;
                            if (!isApplyingUserState) {
                                this._customizeColumns(this._columns)
                            }(0, _m_columns_controller_utils.updateIndexes)(this);
                            const columns = this._columns;
                            return (0, _deferred.when)(this.refresh(true)).always(() => {
                                if (this._columns !== columns) {
                                    return
                                }
                                this._updateChanges(dataSource, {
                                    sorting: sortParameters,
                                    grouping: groupParameters,
                                    filtering: filterParameters
                                });
                                (0, _m_columns_controller_utils.fireColumnsChanged)(this)
                            })
                        }
                    };
                    _proto._updateChanges = function(dataSource, parameters) {
                        if (dataSource) {
                            this.updateColumnDataTypes(dataSource);
                            this._dataSourceApplied = true
                        }
                        if (!_m_utils.default.equalSortParameters(parameters.sorting, this.getSortDataSourceParameters())) {
                            (0, _m_columns_controller_utils.updateColumnChanges)(this, "sorting")
                        }
                        if (!_m_utils.default.equalSortParameters(parameters.grouping, this.getGroupDataSourceParameters())) {
                            (0, _m_columns_controller_utils.updateColumnChanges)(this, "grouping")
                        }
                        const dataController = this.getController("data");
                        if (dataController && !_m_utils.default.equalFilterParameters(parameters.filtering, dataController.getCombinedFilter())) {
                            (0, _m_columns_controller_utils.updateColumnChanges)(this, "filtering")
                        }(0, _m_columns_controller_utils.updateColumnChanges)(this, "columns")
                    };
                    _proto.updateSortingGrouping = function(dataSource, fromDataSource) {
                        const that = this;
                        let sortParameters;
                        let isColumnsChanged;
                        const updateSortGroupParameterIndexes = function(columns, sortParameters, indexParameterName) {
                            (0, _iterator.each)(columns, (index, column) => {
                                delete column[indexParameterName];
                                if (sortParameters) {
                                    for (let i = 0; i < sortParameters.length; i++) {
                                        const {
                                            selector: selector
                                        } = sortParameters[i];
                                        const {
                                            isExpanded: isExpanded
                                        } = sortParameters[i];
                                        if (selector === column.dataField || selector === column.name || selector === column.selector || selector === column.calculateCellValue || selector === column.calculateGroupValue || selector === column.calculateDisplayValue) {
                                            if (fromDataSource) {
                                                column.sortOrder = "sortOrder" in column ? column.sortOrder : sortParameters[i].desc ? "desc" : "asc"
                                            } else {
                                                column.sortOrder = column.sortOrder || (sortParameters[i].desc ? "desc" : "asc")
                                            }
                                            if (void 0 !== isExpanded) {
                                                column.autoExpandGroup = isExpanded
                                            }
                                            column[indexParameterName] = i;
                                            break
                                        }
                                    }
                                }
                            })
                        };
                        if (dataSource) {
                            sortParameters = _m_utils.default.normalizeSortingInfo(dataSource.sort());
                            const groupParameters = _m_utils.default.normalizeSortingInfo(dataSource.group());
                            const columnsGroupParameters = that.getGroupDataSourceParameters();
                            const columnsSortParameters = that.getSortDataSourceParameters();
                            const groupingChanged = !_m_utils.default.equalSortParameters(groupParameters, columnsGroupParameters, true);
                            const groupExpandingChanged = !groupingChanged && !_m_utils.default.equalSortParameters(groupParameters, columnsGroupParameters);
                            if (!that._columns.length) {
                                (0, _iterator.each)(groupParameters, (index, group) => {
                                    that._columns.push(group.selector)
                                });
                                (0, _iterator.each)(sortParameters, (index, sort) => {
                                    if (!(0, _type.isFunction)(sort.selector)) {
                                        that._columns.push(sort.selector)
                                    }
                                });
                                (0, _m_columns_controller_utils.assignColumns)(that, (0, _m_columns_controller_utils.createColumnsFromOptions)(that, that._columns))
                            }
                            if ((fromDataSource || !columnsGroupParameters && !that._hasUserState) && (groupingChanged || groupExpandingChanged)) {
                                updateSortGroupParameterIndexes(that._columns, groupParameters, "groupIndex");
                                if (fromDataSource) {
                                    groupingChanged && (0, _m_columns_controller_utils.updateColumnChanges)(that, "grouping");
                                    groupExpandingChanged && (0, _m_columns_controller_utils.updateColumnChanges)(that, "groupExpanding");
                                    isColumnsChanged = true
                                }
                            }
                            if ((fromDataSource || !columnsSortParameters && !that._hasUserState) && !_m_utils.default.equalSortParameters(sortParameters, columnsSortParameters)) {
                                updateSortGroupParameterIndexes(that._columns, sortParameters, "sortIndex");
                                if (fromDataSource) {
                                    (0, _m_columns_controller_utils.updateColumnChanges)(that, "sorting");
                                    isColumnsChanged = true
                                }
                            }
                            if (isColumnsChanged) {
                                (0, _m_columns_controller_utils.fireColumnsChanged)(that)
                            }
                        }
                    };
                    _proto.updateFilter = function(filter, remoteFiltering, columnIndex, filterValue) {
                        const that = this;
                        if (!Array.isArray(filter)) {
                            return filter
                        }
                        filter = (0, _extend.extend)([], filter);
                        columnIndex = void 0 !== filter.columnIndex ? filter.columnIndex : columnIndex;
                        filterValue = void 0 !== filter.filterValue ? filter.filterValue : filterValue;
                        if ((0, _type.isString)(filter[0]) && "!" !== filter[0]) {
                            const column = that.columnOption(filter[0]);
                            if (remoteFiltering) {
                                if ((0, _config.default)().forceIsoDateParsing && column && column.serializeValue && filter.length > 1) {
                                    filter[filter.length - 1] = column.serializeValue(filter[filter.length - 1], "filter")
                                }
                            } else if (column && column.selector) {
                                filter[0] = column.selector;
                                filter[0].columnIndex = column.index
                            }
                        } else if ((0, _type.isFunction)(filter[0])) {
                            filter[0].columnIndex = columnIndex;
                            filter[0].filterValue = filterValue;
                            filter[0].selectedFilterOperation = filter.selectedFilterOperation
                        }
                        for (let i = 0; i < filter.length; i++) {
                            filter[i] = that.updateFilter(filter[i], remoteFiltering, columnIndex, filterValue)
                        }
                        return filter
                    };
                    _proto.columnCount = function() {
                        return this._columns ? this._columns.length : 0
                    };
                    _proto.columnOption = function(identifier, option, value, notFireEvent) {
                        const that = this;
                        const columns = that._columns.concat(that._commandColumns);
                        const column = (0, _m_columns_controller_utils.findColumn)(columns, identifier);
                        if (column) {
                            if (1 === arguments.length) {
                                return (0, _extend.extend)({}, column)
                            }
                            if ((0, _type.isString)(option)) {
                                if (2 === arguments.length) {
                                    return (0, _m_columns_controller_utils.columnOptionCore)(that, column, option)
                                }(0, _m_columns_controller_utils.columnOptionCore)(that, column, option, value, notFireEvent)
                            } else if ((0, _type.isObject)(option)) {
                                (0, _iterator.each)(option, (optionName, value) => {
                                    (0, _m_columns_controller_utils.columnOptionCore)(that, column, optionName, value, notFireEvent)
                                })
                            }(0, _m_columns_controller_utils.fireColumnsChanged)(that)
                        }
                    };
                    _proto.clearSorting = function() {
                        const that = this;
                        const columnCount = this.columnCount();
                        that.beginUpdate();
                        for (let i = 0; i < columnCount; i++) {
                            that.columnOption(i, "sortOrder", void 0);
                            delete(0, _m_columns_controller_utils.findColumn)(that._columns, i).sortOrder
                        }
                        that.endUpdate()
                    };
                    _proto.clearGrouping = function() {
                        const that = this;
                        const columnCount = this.columnCount();
                        that.beginUpdate();
                        for (let i = 0; i < columnCount; i++) {
                            that.columnOption(i, "groupIndex", void 0)
                        }
                        that.endUpdate()
                    };
                    _proto.getVisibleIndex = function(index, rowIndex) {
                        const columns = this.getVisibleColumns(rowIndex);
                        for (let i = columns.length - 1; i >= 0; i--) {
                            if (columns[i].index === index) {
                                return i
                            }
                        }
                        return -1
                    };
                    _proto.getVisibleIndexByColumn = function(column, rowIndex) {
                        const visibleColumns = this.getVisibleColumns(rowIndex);
                        const visibleColumn = visibleColumns.filter(col => col.index === column.index && col.command === column.command)[0];
                        return visibleColumns.indexOf(visibleColumn)
                    };
                    _proto.getVisibleColumnIndex = function(id, rowIndex) {
                        const index = this.columnOption(id, "index");
                        return this.getVisibleIndex(index, rowIndex)
                    };
                    _proto.addColumn = function(options) {
                        const that = this;
                        let column = (0, _m_columns_controller_utils.createColumn)(that, options);
                        const index = that._columns.length;
                        that._columns.push(column);
                        if (column.isBand) {
                            that._columns = (0, _m_columns_controller_utils.createColumnsFromOptions)(that, that._columns);
                            column = that._columns[index]
                        }
                        column.added = options;
                        (0, _m_columns_controller_utils.updateIndexes)(that, column);
                        that.updateColumns(that._dataSource);
                        that._checkColumns()
                    };
                    _proto.deleteColumn = function(id) {
                        const that = this;
                        const column = that.columnOption(id);
                        if (column && column.index >= 0) {
                            (0, _m_columns_controller_utils.convertOwnerBandToColumnReference)(that._columns);
                            that._columns.splice(column.index, 1);
                            if (column.isBand) {
                                const childIndexes = that.getChildrenByBandColumn(column.index).map(column => column.index);
                                that._columns = that._columns.filter(column => childIndexes.indexOf(column.index) < 0)
                            }(0, _m_columns_controller_utils.updateIndexes)(that);
                            that.updateColumns(that._dataSource)
                        }
                    };
                    _proto.addCommandColumn = function(options) {
                        let commandColumn = this._commandColumns.filter(column => column.command === options.command)[0];
                        if (!commandColumn) {
                            commandColumn = options;
                            this._commandColumns.push(commandColumn)
                        }
                    };
                    _proto.getUserState = function() {
                        const columns = this._columns;
                        const result = [];
                        let i;

                        function handleStateField(index, value) {
                            if (void 0 !== columns[i][value]) {
                                result[i][value] = columns[i][value]
                            }
                        }
                        for (i = 0; i < columns.length; i++) {
                            result[i] = {};
                            (0, _iterator.each)(_const.USER_STATE_FIELD_NAMES, handleStateField)
                        }
                        return result
                    };
                    _proto.setName = function(column) {
                        column.name = column.name || column.dataField || column.type
                    };
                    _proto.setUserState = function(state) {
                        const that = this;
                        const dataSource = that._dataSource;
                        let ignoreColumnOptionNames = that.option("stateStoring.ignoreColumnOptionNames");
                        null === state || void 0 === state ? void 0 : state.forEach(this.setName);
                        if (!ignoreColumnOptionNames) {
                            ignoreColumnOptionNames = [];
                            const commonColumnSettings = that.getCommonSettings();
                            if (!that.option("columnChooser.enabled")) {
                                ignoreColumnOptionNames.push("visible")
                            }
                            if ("none" === that.option("sorting.mode")) {
                                ignoreColumnOptionNames.push("sortIndex", "sortOrder")
                            }
                            if (!commonColumnSettings.allowGrouping) {
                                ignoreColumnOptionNames.push("groupIndex")
                            }
                            if (!commonColumnSettings.allowFixing) {
                                ignoreColumnOptionNames.push("fixed", "fixedPosition")
                            }
                            if (!commonColumnSettings.allowResizing) {
                                ignoreColumnOptionNames.push("width", "visibleWidth")
                            }
                            const isFilterPanelHidden = !that.option("filterPanel.visible");
                            if (!that.option("filterRow.visible") && isFilterPanelHidden) {
                                ignoreColumnOptionNames.push("filterValue", "selectedFilterOperation")
                            }
                            if (!that.option("headerFilter.visible") && isFilterPanelHidden) {
                                ignoreColumnOptionNames.push("filterValues", "filterType")
                            }
                        }
                        that._columnsUserState = state;
                        that._ignoreColumnOptionNames = ignoreColumnOptionNames;
                        that._hasUserState = !!state;
                        (0, _m_columns_controller_utils.updateColumnChanges)(that, "filtering");
                        that.init(true);
                        if (dataSource) {
                            dataSource.sort(that.getSortDataSourceParameters());
                            dataSource.group(that.getGroupDataSourceParameters())
                        }
                    };
                    _proto._checkColumns = function() {
                        const usedNames = {};
                        let hasEditableColumnWithoutName = false;
                        const duplicatedNames = [];
                        this._columns.forEach(column => {
                            var _a;
                            const {
                                name: name
                            } = column;
                            const isBand = null === (_a = column.columns) || void 0 === _a ? void 0 : _a.length;
                            const isEditable = column.allowEditing && (column.dataField || column.setCellValue) && !isBand;
                            if (name) {
                                if (usedNames[name]) {
                                    duplicatedNames.push('"'.concat(name, '"'))
                                }
                                usedNames[name] = true
                            } else if (isEditable) {
                                hasEditableColumnWithoutName = true
                            }
                        });
                        if (duplicatedNames.length) {
                            _ui.default.log("E1059", duplicatedNames.join(", "))
                        }
                        if (hasEditableColumnWithoutName) {
                            _ui.default.log("E1060")
                        }
                    };
                    _proto._createCalculatedColumnOptions = function(columnOptions, bandColumn) {
                        let calculatedColumnOptions = {};
                        let {
                            dataField: dataField
                        } = columnOptions;
                        if (Array.isArray(columnOptions.columns) && columnOptions.columns.length || columnOptions.isBand) {
                            calculatedColumnOptions.isBand = true;
                            dataField = null
                        }
                        if (dataField) {
                            if ((0, _type.isString)(dataField)) {
                                const getter = (0, _data.compileGetter)(dataField);
                                calculatedColumnOptions = {
                                    caption: (0, _inflector.captionize)(dataField),
                                    calculateCellValue(data, skipDeserialization) {
                                        const value = getter(data);
                                        return this.deserializeValue && !skipDeserialization ? this.deserializeValue(value) : value
                                    },
                                    setCellValue: _m_columns_controller_utils.defaultSetCellValue,
                                    parseValue(text) {
                                        const column = this;
                                        let result;
                                        let parsedValue;
                                        if ("number" === column.dataType) {
                                            if ((0, _type.isString)(text) && column.format) {
                                                result = (0, _m_columns_controller_utils.strictParseNumber)(text.trim(), column.format)
                                            } else if ((0, _type.isDefined)(text) && (0, _type.isNumeric)(text)) {
                                                result = Number(text)
                                            }
                                        } else if ("boolean" === column.dataType) {
                                            if (text === column.trueText) {
                                                result = true
                                            } else if (text === column.falseText) {
                                                result = false
                                            }
                                        } else if (_m_utils.default.isDateType(column.dataType)) {
                                            parsedValue = _date.default.parse(text, column.format);
                                            if (parsedValue) {
                                                result = parsedValue
                                            }
                                        } else {
                                            result = text
                                        }
                                        return result
                                    }
                                }
                            }
                            calculatedColumnOptions.allowFiltering = true
                        } else {
                            calculatedColumnOptions.allowFiltering = !!columnOptions.calculateFilterExpression
                        }
                        calculatedColumnOptions.calculateFilterExpression = function() {
                            return _filtering.default.defaultCalculateFilterExpression.apply(this, arguments)
                        };
                        calculatedColumnOptions.defaultFilterOperation = "=";
                        calculatedColumnOptions.createFilterExpression = function(filterValue, selectedFilterOperation) {
                            let result;
                            if (this.calculateFilterExpression) {
                                result = this.calculateFilterExpression.apply(this, arguments)
                            }
                            if ((0, _type.isFunction)(result)) {
                                result = [result, "=", true]
                            }
                            if (result) {
                                result.columnIndex = this.index;
                                result.filterValue = filterValue;
                                result.selectedFilterOperation = selectedFilterOperation
                            }
                            return result
                        };
                        if (!dataField || !(0, _type.isString)(dataField)) {
                            (0, _extend.extend)(true, calculatedColumnOptions, {
                                allowSorting: false,
                                allowGrouping: false,
                                calculateCellValue: () => null
                            })
                        }
                        if (bandColumn) {
                            calculatedColumnOptions.allowFixing = false
                        }
                        if (columnOptions.dataType) {
                            calculatedColumnOptions.userDataType = columnOptions.dataType
                        }
                        if (columnOptions.selectedFilterOperation && !("defaultSelectedFilterOperation" in calculatedColumnOptions)) {
                            calculatedColumnOptions.defaultSelectedFilterOperation = columnOptions.selectedFilterOperation
                        }
                        if (columnOptions.lookup) {
                            calculatedColumnOptions.lookup = {
                                calculateCellValue(value, skipDeserialization) {
                                    if (this.valueExpr) {
                                        value = this.valueMap && this.valueMap[value]
                                    }
                                    return this.deserializeValue && !skipDeserialization ? this.deserializeValue(value) : value
                                },
                                updateValueMap() {
                                    this.valueMap = {};
                                    if (this.items) {
                                        const calculateValue = (0, _data.compileGetter)(this.valueExpr);
                                        const calculateDisplayValue = (0, _data.compileGetter)(this.displayExpr);
                                        for (let i = 0; i < this.items.length; i++) {
                                            const item = this.items[i];
                                            const displayValue = calculateDisplayValue(item);
                                            this.valueMap[calculateValue(item)] = displayValue;
                                            this.dataType = this.dataType || (0, _m_columns_controller_utils.getValueDataType)(displayValue)
                                        }
                                    }
                                },
                                update() {
                                    const that = this;
                                    let {
                                        dataSource: dataSource
                                    } = that;
                                    if (dataSource) {
                                        if ((0, _type.isFunction)(dataSource) && !_variable_wrapper.default.isWrapped(dataSource)) {
                                            dataSource = dataSource({})
                                        }
                                        if ((0, _type.isPlainObject)(dataSource) || dataSource instanceof _abstract_store.default || Array.isArray(dataSource)) {
                                            if (that.valueExpr) {
                                                const dataSourceOptions = (0, _utils.normalizeDataSourceOptions)(dataSource);
                                                dataSourceOptions.paginate = false;
                                                dataSource = new _data_source.DataSource(dataSourceOptions);
                                                return dataSource.load().done(data => {
                                                    that.items = data;
                                                    that.updateValueMap && that.updateValueMap()
                                                })
                                            }
                                        } else {
                                            _ui.default.log("E1016")
                                        }
                                    } else {
                                        that.updateValueMap && that.updateValueMap()
                                    }
                                }
                            }
                        }
                        calculatedColumnOptions.resizedCallbacks = (0, _callbacks.default)();
                        if (columnOptions.resized) {
                            calculatedColumnOptions.resizedCallbacks.add(columnOptions.resized.bind(columnOptions))
                        }(0, _iterator.each)(calculatedColumnOptions, optionName => {
                            if ((0, _type.isFunction)(calculatedColumnOptions[optionName]) && 0 !== optionName.indexOf("default")) {
                                const defaultOptionName = "default".concat(optionName.charAt(0).toUpperCase()).concat(optionName.substr(1));
                                calculatedColumnOptions[defaultOptionName] = calculatedColumnOptions[optionName]
                            }
                        });
                        return calculatedColumnOptions
                    };
                    _proto.getRowCount = function() {
                        this._rowCount = this._rowCount || (0, _m_columns_controller_utils.getRowCount)(this);
                        return this._rowCount
                    };
                    _proto.getRowIndex = function(columnIndex, alwaysGetRowIndex) {
                        const column = this._columns[columnIndex];
                        const bandColumnsCache = this.getBandColumnsCache();
                        return column && (alwaysGetRowIndex || column.visible && !(column.command || (0, _type.isDefined)(column.groupIndex))) ? (0, _m_columns_controller_utils.getParentBandColumns)(columnIndex, bandColumnsCache.columnParentByIndex).length : 0
                    };
                    _proto.getChildrenByBandColumn = function(bandColumnIndex, onlyVisibleDirectChildren) {
                        const bandColumnsCache = this.getBandColumnsCache();
                        const result = (0, _m_columns_controller_utils.getChildrenByBandColumn)(bandColumnIndex, bandColumnsCache.columnChildrenByIndex, !onlyVisibleDirectChildren);
                        if (onlyVisibleDirectChildren) {
                            return result.filter(column => column.visible && !column.command).sort((column1, column2) => column1.visibleIndex - column2.visibleIndex)
                        }
                        return result
                    };
                    _proto.isParentBandColumn = function(columnIndex, bandColumnIndex) {
                        let result = false;
                        const column = this._columns[columnIndex];
                        const bandColumnsCache = this.getBandColumnsCache();
                        const parentBandColumns = column && (0, _m_columns_controller_utils.getParentBandColumns)(columnIndex, bandColumnsCache.columnParentByIndex);
                        if (parentBandColumns) {
                            (0, _iterator.each)(parentBandColumns, (_, bandColumn) => {
                                if (bandColumn.index === bandColumnIndex) {
                                    result = true;
                                    return false
                                }
                            })
                        }
                        return result
                    };
                    _proto.isParentColumnVisible = function(columnIndex) {
                        let result = true;
                        const bandColumnsCache = this.getBandColumnsCache();
                        const bandColumns = columnIndex >= 0 && (0, _m_columns_controller_utils.getParentBandColumns)(columnIndex, bandColumnsCache.columnParentByIndex);
                        bandColumns && (0, _iterator.each)(bandColumns, (_, bandColumn) => {
                            result = result && bandColumn.visible;
                            return result
                        });
                        return result
                    };
                    _proto.getColumnId = function(column) {
                        if (column.command && column.type === _const.GROUP_COMMAND_COLUMN_NAME) {
                            if ((0, _m_columns_controller_utils.isCustomCommandColumn)(this, column)) {
                                return "type:".concat(column.type)
                            }
                            return "command:".concat(column.command)
                        }
                        return column.index
                    };
                    _proto.getCustomizeTextByDataType = function(dataType) {
                        return (0, _m_columns_controller_utils.getCustomizeTextByDataType)(dataType)
                    };
                    _proto.getHeaderContentAlignment = function(columnAlignment) {
                        const rtlEnabled = this.option("rtlEnabled");
                        if (rtlEnabled) {
                            return "left" === columnAlignment ? "right" : "left"
                        }
                        return columnAlignment
                    };
                    return ColumnsController
                }(_m_modules.default.Controller);
                exports.ColumnsController = ColumnsController;
                const columnsControllerModule = {
                    defaultOptions: () => ({
                        commonColumnSettings: {
                            allowFiltering: true,
                            allowHiding: true,
                            allowSorting: true,
                            allowEditing: true,
                            encodeHtml: true,
                            trueText: _message.default.format("dxDataGrid-trueText"),
                            falseText: _message.default.format("dxDataGrid-falseText")
                        },
                        allowColumnReordering: false,
                        allowColumnResizing: false,
                        columnResizingMode: "nextColumn",
                        columnMinWidth: void 0,
                        columnWidth: void 0,
                        adaptColumnWidthByRatio: true,
                        columns: void 0,
                        regenerateColumnsByVisibleItems: false,
                        customizeColumns: null,
                        dateSerializationFormat: void 0
                    }),
                    controllers: {
                        columns: ColumnsController
                    }
                };
                exports.columnsControllerModule = columnsControllerModule
            },
        22732:
            /*!*************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/columns_controller/m_columns_controller_utils.js ***!
              \*************************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.applyUserState = exports.addExpandColumn = void 0;
                exports.assignColumns = assignColumns;
                exports.isCustomCommandColumn = exports.isColumnFixed = exports.getValueDataType = exports.getSerializationFormat = exports.getRowCount = exports.getParentBandColumns = exports.getFixedPosition = exports.getDataColumns = exports.getCustomizeTextByDataType = exports.getColumnIndexByVisibleIndex = exports.getColumnFullPath = exports.getColumnByIndexes = exports.getChildrenByBandColumn = exports.getAlignmentByDataType = exports.fireOptionChanged = exports.fireColumnsChanged = exports.findColumn = exports.digitsCount = exports.defaultSetCellValue = exports.customizeTextForBooleanDataType = exports.createColumnsFromOptions = exports.createColumnsFromDataSource = exports.createColumn = exports.convertOwnerBandToColumnReference = exports.columnOptionCore = exports.calculateColspan = void 0;
                exports.isSortOrderValid = isSortOrderValid;
                exports.updateSortOrderWhenGrouping = exports.updateSerializers = exports.updateIndexes = exports.updateColumnVisibleIndexes = exports.updateColumnSortIndexes = exports.updateColumnIndexes = exports.updateColumnGroupIndexes = exports.updateColumnChanges = exports.strictParseNumber = exports.sortColumns = exports.setFilterOperationsAsDefaultValues = exports.resetColumnsCache = exports.resetBandColumnsCache = exports.processExpandColumns = exports.processBandColumns = exports.numberToString = exports.moveColumnToGroup = exports.mergeColumns = void 0;
                var _array = __webpack_require__( /*! ../../../../core/utils/array */ 89386);
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _data = __webpack_require__( /*! ../../../../core/utils/data */ 47617);
                var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date_serialization */ 69434));
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _object = __webpack_require__( /*! ../../../../core/utils/object */ 48013);
                var _position = __webpack_require__( /*! ../../../../core/utils/position */ 37518);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _variable_wrapper = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/variable_wrapper */ 26974));
                var _number = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/number */ 18016));
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 60082));
                var _const = __webpack_require__( /*! ./const */ 54057);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const setFilterOperationsAsDefaultValues = function(column) {
                    column.filterOperations = column.defaultFilterOperations
                };
                exports.setFilterOperationsAsDefaultValues = setFilterOperationsAsDefaultValues;
                let globalColumnId = 1;
                const createColumn = function(that, columnOptions, userStateColumnOptions, bandColumn) {
                    let commonColumnOptions = {};
                    if (columnOptions) {
                        if ((0, _type.isString)(columnOptions)) {
                            columnOptions = {
                                dataField: columnOptions
                            }
                        }
                        that.setName(columnOptions);
                        let result = {};
                        if (columnOptions.command) {
                            result = (0, _object.deepExtendArraySafe)(commonColumnOptions, columnOptions)
                        } else {
                            commonColumnOptions = that.getCommonSettings(columnOptions);
                            if (userStateColumnOptions && userStateColumnOptions.name && userStateColumnOptions.dataField) {
                                columnOptions = (0, _extend.extend)({}, columnOptions, {
                                    dataField: userStateColumnOptions.dataField
                                })
                            }
                            const calculatedColumnOptions = that._createCalculatedColumnOptions(columnOptions, bandColumn);
                            if (!columnOptions.type) {
                                result = {
                                    headerId: "dx-col-".concat(globalColumnId++)
                                }
                            }
                            result = (0, _object.deepExtendArraySafe)(result, _const.DEFAULT_COLUMN_OPTIONS);
                            (0, _object.deepExtendArraySafe)(result, commonColumnOptions);
                            (0, _object.deepExtendArraySafe)(result, calculatedColumnOptions);
                            (0, _object.deepExtendArraySafe)(result, columnOptions);
                            (0, _object.deepExtendArraySafe)(result, {
                                selector: null
                            })
                        }
                        if (columnOptions.filterOperations === columnOptions.defaultFilterOperations) {
                            setFilterOperationsAsDefaultValues(result)
                        }
                        return result
                    }
                };
                exports.createColumn = createColumn;
                const createColumnsFromOptions = function(that, columnsOptions, bandColumn) {
                    let result = [];
                    if (columnsOptions) {
                        (0, _iterator.each)(columnsOptions, (index, columnOptions) => {
                            const userStateColumnOptions = that._columnsUserState && checkUserStateColumn(columnOptions, that._columnsUserState[index]) && that._columnsUserState[index];
                            const column = createColumn(that, columnOptions, userStateColumnOptions, bandColumn);
                            if (column) {
                                if (bandColumn) {
                                    column.ownerBand = bandColumn
                                }
                                result.push(column);
                                if (column.columns) {
                                    result = result.concat(createColumnsFromOptions(that, column.columns, column));
                                    delete column.columns;
                                    column.hasColumns = true
                                }
                            }
                        })
                    }
                    return result
                };
                exports.createColumnsFromOptions = createColumnsFromOptions;
                const getParentBandColumns = function(columnIndex, columnParentByIndex) {
                    const result = [];
                    let parent = columnParentByIndex[columnIndex];
                    while (parent) {
                        result.unshift(parent);
                        columnIndex = parent.index;
                        parent = columnParentByIndex[columnIndex]
                    }
                    return result
                };
                exports.getParentBandColumns = getParentBandColumns;
                const getChildrenByBandColumn = function(columnIndex, columnChildrenByIndex, recursive) {
                    let result = [];
                    const children = columnChildrenByIndex[columnIndex];
                    if (children) {
                        for (let i = 0; i < children.length; i++) {
                            const column = children[i];
                            if (!(0, _type.isDefined)(column.groupIndex) || column.showWhenGrouped) {
                                result.push(column);
                                if (recursive && column.isBand) {
                                    result = result.concat(getChildrenByBandColumn(column.index, columnChildrenByIndex, recursive))
                                }
                            }
                        }
                    }
                    return result
                };
                exports.getChildrenByBandColumn = getChildrenByBandColumn;
                exports.getColumnByIndexes = function(that, columnIndexes) {
                    let result;
                    let columns;
                    const bandColumnsCache = that.getBandColumnsCache();
                    const callbackFilter = function(column) {
                        const ownerBand = result ? result.index : void 0;
                        return column.ownerBand === ownerBand
                    };
                    if (bandColumnsCache.isPlain) {
                        result = that._columns[columnIndexes[0]]
                    } else {
                        columns = that._columns.filter(callbackFilter);
                        for (let i = 0; i < columnIndexes.length; i++) {
                            result = columns[columnIndexes[i]];
                            if (result) {
                                columns = that._columns.filter(callbackFilter)
                            }
                        }
                    }
                    return result
                };
                const getColumnFullPath = function(that, column) {
                    let result = [];
                    let columns;
                    const bandColumnsCache = that.getBandColumnsCache();
                    const callbackFilter = function(item) {
                        return item.ownerBand === column.ownerBand
                    };
                    if (bandColumnsCache.isPlain) {
                        const columnIndex = that._columns.indexOf(column);
                        if (columnIndex >= 0) {
                            result = ["columns[".concat(columnIndex, "]")]
                        }
                    } else {
                        columns = that._columns.filter(callbackFilter);
                        while (columns.length && -1 !== columns.indexOf(column)) {
                            result.unshift("columns[".concat(columns.indexOf(column), "]"));
                            column = bandColumnsCache.columnParentByIndex[column.index];
                            columns = column ? that._columns.filter(callbackFilter) : []
                        }
                    }
                    return result.join(".")
                };
                exports.getColumnFullPath = getColumnFullPath;
                const calculateColspan = function(that, columnID) {
                    let colspan = 0;
                    const columns = that.getChildrenByBandColumn(columnID, true);
                    (0, _iterator.each)(columns, (_, column) => {
                        if (column.isBand) {
                            column.colspan = column.colspan || calculateColspan(that, column.index);
                            colspan += column.colspan || 1
                        } else {
                            colspan += 1
                        }
                    });
                    return colspan
                };
                exports.calculateColspan = calculateColspan;
                exports.processBandColumns = function(that, columns, bandColumnsCache) {
                    let rowspan;
                    for (let i = 0; i < columns.length; i++) {
                        const column = columns[i];
                        if (column.visible || column.command) {
                            if (column.isBand) {
                                column.colspan = column.colspan || calculateColspan(that, column.index)
                            }
                            if (!column.isBand || !column.colspan) {
                                rowspan = that.getRowCount();
                                if (!column.command && (!(0, _type.isDefined)(column.groupIndex) || column.showWhenGrouped)) {
                                    rowspan -= getParentBandColumns(column.index, bandColumnsCache.columnParentByIndex).length
                                }
                                if (rowspan > 1) {
                                    column.rowspan = rowspan
                                }
                            }
                        }
                    }
                };
                exports.getValueDataType = function(value) {
                    let dataType = (0, _type.type)(value);
                    if ("string" !== dataType && "boolean" !== dataType && "number" !== dataType && "date" !== dataType && "object" !== dataType) {
                        dataType = void 0
                    }
                    return dataType
                };
                exports.getSerializationFormat = function(dataType, value) {
                    switch (dataType) {
                        case "date":
                        case "datetime":
                            return _date_serialization.default.getDateSerializationFormat(value);
                        case "number":
                            if ((0, _type.isString)(value)) {
                                return "string"
                            }
                            if ((0, _type.isNumeric)(value)) {
                                return null
                            }
                    }
                };
                exports.updateSerializers = function(options, dataType) {
                    if (!options.deserializeValue) {
                        if (_m_utils.default.isDateType(dataType)) {
                            options.deserializeValue = function(value) {
                                return _date_serialization.default.deserializeDate(value)
                            };
                            options.serializeValue = function(value) {
                                return (0, _type.isString)(value) ? value : _date_serialization.default.serializeDate(value, this.serializationFormat)
                            }
                        }
                        if ("number" === dataType) {
                            options.deserializeValue = function(value) {
                                const parsedValue = parseFloat(value);
                                return isNaN(parsedValue) ? value : parsedValue
                            };
                            options.serializeValue = function(value, target) {
                                if ("filter" === target) {
                                    return value
                                }
                                return (0, _type.isDefined)(value) && "string" === this.serializationFormat ? value.toString() : value
                            }
                        }
                    }
                };
                exports.getAlignmentByDataType = function(dataType, isRTL) {
                    switch (dataType) {
                        case "number":
                            return "right";
                        case "boolean":
                            return "center";
                        default:
                            return (0, _position.getDefaultAlignment)(isRTL)
                    }
                };
                const customizeTextForBooleanDataType = function(e) {
                    if (true === e.value) {
                        return this.trueText || "true"
                    }
                    if (false === e.value) {
                        return this.falseText || "false"
                    }
                    return e.valueText || ""
                };
                exports.customizeTextForBooleanDataType = customizeTextForBooleanDataType;
                exports.getCustomizeTextByDataType = function(dataType) {
                    if ("boolean" === dataType) {
                        return customizeTextForBooleanDataType
                    }
                };
                exports.createColumnsFromDataSource = function(that, dataSource) {
                    const firstItems = that._getFirstItems(dataSource);
                    let fieldName;
                    const processedFields = {};
                    const result = [];
                    for (let i = 0; i < firstItems.length; i++) {
                        if (firstItems[i]) {
                            for (fieldName in firstItems[i]) {
                                if (!(0, _type.isFunction)(firstItems[i][fieldName]) || _variable_wrapper.default.isWrapped(firstItems[i][fieldName])) {
                                    processedFields[fieldName] = true
                                }
                            }
                        }
                    }
                    for (fieldName in processedFields) {
                        if (0 !== fieldName.indexOf("__")) {
                            const column = createColumn(that, fieldName);
                            result.push(column)
                        }
                    }
                    return result
                };
                const updateColumnIndexes = function(that) {
                    (0, _iterator.each)(that._columns, (index, column) => {
                        column.index = index
                    });
                    (0, _iterator.each)(that._columns, (index, column) => {
                        if ((0, _type.isObject)(column.ownerBand)) {
                            column.ownerBand = column.ownerBand.index
                        }
                    });
                    (0, _iterator.each)(that._commandColumns, (index, column) => {
                        column.index = -(index + 1)
                    })
                };
                exports.updateColumnIndexes = updateColumnIndexes;
                const updateColumnGroupIndexes = function(that, currentColumn) {
                    (0, _array.normalizeIndexes)(that._columns, "groupIndex", currentColumn, column => {
                        const {
                            grouped: grouped
                        } = column;
                        delete column.grouped;
                        return grouped
                    })
                };
                exports.updateColumnGroupIndexes = updateColumnGroupIndexes;
                const updateColumnSortIndexes = function(that, currentColumn) {
                    (0, _iterator.each)(that._columns, (index, column) => {
                        if ((0, _type.isDefined)(column.sortIndex) && !isSortOrderValid(column.sortOrder)) {
                            delete column.sortIndex
                        }
                    });
                    (0, _array.normalizeIndexes)(that._columns, "sortIndex", currentColumn, column => !(0, _type.isDefined)(column.groupIndex) && isSortOrderValid(column.sortOrder))
                };
                exports.updateColumnSortIndexes = updateColumnSortIndexes;
                const updateColumnVisibleIndexes = function(that, currentColumn) {
                    let column;
                    const result = [];
                    const bandColumnsCache = that.getBandColumnsCache();
                    const bandedColumns = [];
                    const columns = that._columns.filter(column => !column.command);
                    for (let i = 0; i < columns.length; i++) {
                        column = columns[i];
                        const parentBandColumns = getParentBandColumns(i, bandColumnsCache.columnParentByIndex);
                        if (parentBandColumns.length) {
                            bandedColumns.push(column)
                        } else {
                            result.push(column)
                        }
                    }(0, _array.normalizeIndexes)(bandedColumns, "visibleIndex", currentColumn);
                    (0, _array.normalizeIndexes)(result, "visibleIndex", currentColumn)
                };
                exports.updateColumnVisibleIndexes = updateColumnVisibleIndexes;
                exports.getColumnIndexByVisibleIndex = function(that, visibleIndex, location) {
                    const rowIndex = (0, _type.isObject)(visibleIndex) ? visibleIndex.rowIndex : null;
                    const columns = location === _const.GROUP_LOCATION ? that.getGroupColumns() : location === _const.COLUMN_CHOOSER_LOCATION ? that.getChooserColumns() : that.getVisibleColumns(rowIndex);
                    let column;
                    visibleIndex = (0, _type.isObject)(visibleIndex) ? visibleIndex.columnIndex : visibleIndex;
                    column = columns[visibleIndex];
                    if (column && column.type === _const.GROUP_COMMAND_COLUMN_NAME) {
                        column = that._columns.filter(col => column.type === col.type)[0] || column
                    }
                    return column && (0, _type.isDefined)(column.index) ? column.index : -1
                };
                exports.moveColumnToGroup = function(that, column, groupIndex) {
                    const groupColumns = that.getGroupColumns();
                    let i;
                    if (groupIndex >= 0) {
                        for (i = 0; i < groupColumns.length; i++) {
                            if (groupColumns[i].groupIndex >= groupIndex) {
                                groupColumns[i].groupIndex++
                            }
                        }
                    } else {
                        groupIndex = 0;
                        for (i = 0; i < groupColumns.length; i++) {
                            groupIndex = Math.max(groupIndex, groupColumns[i].groupIndex + 1)
                        }
                    }
                    return groupIndex
                };

                function checkUserStateColumn(column, userStateColumn) {
                    return column && userStateColumn && userStateColumn.name === (column.name || column.dataField) && (userStateColumn.dataField === column.dataField || column.name)
                }
                exports.applyUserState = function(that) {
                    const columnsUserState = that._columnsUserState;
                    const ignoreColumnOptionNames = that._ignoreColumnOptionNames || [];
                    const columns = that._columns;
                    const columnCountById = {};
                    let resultColumns = [];
                    let allColumnsHaveState = true;
                    const userStateColumnIndexes = [];
                    let column;
                    let userStateColumnIndex;
                    let i;

                    function applyFieldsState(column, userStateColumn) {
                        if (!userStateColumn) {
                            return
                        }
                        for (let index = 0; index < _const.USER_STATE_FIELD_NAMES.length; index++) {
                            const fieldName = _const.USER_STATE_FIELD_NAMES[index];
                            if (ignoreColumnOptionNames.includes(fieldName)) {
                                continue
                            }
                            if ("dataType" === fieldName) {
                                column[fieldName] = column[fieldName] || userStateColumn[fieldName]
                            } else if (_const.USER_STATE_FIELD_NAMES_15_1.includes(fieldName)) {
                                if (fieldName in userStateColumn) {
                                    column[fieldName] = userStateColumn[fieldName]
                                }
                            } else {
                                if ("selectedFilterOperation" === fieldName && userStateColumn[fieldName]) {
                                    column.defaultSelectedFilterOperation = column[fieldName] || null
                                }
                                column[fieldName] = userStateColumn[fieldName]
                            }
                        }
                    }

                    function findUserStateColumn(columnsUserState, column) {
                        const id = column.name || column.dataField;
                        let count = columnCountById[id] || 0;
                        for (let j = 0; j < columnsUserState.length; j++) {
                            if (checkUserStateColumn(column, columnsUserState[j])) {
                                if (count) {
                                    count--
                                } else {
                                    columnCountById[id] = columnCountById[id] || 0;
                                    columnCountById[id]++;
                                    return j
                                }
                            }
                        }
                        return -1
                    }
                    if (columnsUserState) {
                        for (i = 0; i < columns.length; i++) {
                            userStateColumnIndex = findUserStateColumn(columnsUserState, columns[i]);
                            allColumnsHaveState = allColumnsHaveState && userStateColumnIndex >= 0;
                            userStateColumnIndexes.push(userStateColumnIndex)
                        }
                        for (i = 0; i < columns.length; i++) {
                            column = columns[i];
                            userStateColumnIndex = userStateColumnIndexes[i];
                            if (that._hasUserState || allColumnsHaveState) {
                                applyFieldsState(column, columnsUserState[userStateColumnIndex])
                            }
                            if (userStateColumnIndex >= 0 && (0, _type.isDefined)(columnsUserState[userStateColumnIndex].initialIndex)) {
                                resultColumns[userStateColumnIndex] = column
                            } else {
                                resultColumns.push(column)
                            }
                        }
                        let hasAddedBands = false;
                        for (i = 0; i < columnsUserState.length; i++) {
                            const columnUserState = columnsUserState[i];
                            if (columnUserState.added && findUserStateColumn(columns, columnUserState) < 0) {
                                column = createColumn(that, columnUserState.added);
                                applyFieldsState(column, columnUserState);
                                resultColumns.push(column);
                                if (columnUserState.added.columns) {
                                    hasAddedBands = true
                                }
                            }
                        }
                        if (hasAddedBands) {
                            updateColumnIndexes(that);
                            resultColumns = createColumnsFromOptions(that, resultColumns)
                        }
                        assignColumns(that, resultColumns)
                    }
                };
                const updateIndexes = function(that, column) {
                    updateColumnIndexes(that);
                    updateColumnGroupIndexes(that, column);
                    updateColumnSortIndexes(that, column);
                    resetBandColumnsCache(that);
                    updateColumnVisibleIndexes(that, column)
                };
                exports.updateIndexes = updateIndexes;
                const resetColumnsCache = function(that) {
                    that.resetColumnsCache()
                };
                exports.resetColumnsCache = resetColumnsCache;

                function assignColumns(that, columns) {
                    that._previousColumns = that._columns;
                    that._columns = columns;
                    resetColumnsCache(that);
                    that.updateColumnDataTypes()
                }
                const updateColumnChanges = function(that, changeType, optionName, columnIndex) {
                    var _a;
                    const columnChanges = that._columnChanges || {
                        optionNames: {
                            length: 0
                        },
                        changeTypes: {
                            length: 0
                        },
                        columnIndex: columnIndex
                    };
                    optionName = optionName || "all";
                    optionName = optionName.split(".")[0];
                    const {
                        changeTypes: changeTypes
                    } = columnChanges;
                    if (changeType && !changeTypes[changeType]) {
                        changeTypes[changeType] = true;
                        changeTypes.length++
                    }
                    const {
                        optionNames: optionNames
                    } = columnChanges;
                    if (optionName && !optionNames[optionName]) {
                        optionNames[optionName] = true;
                        optionNames.length++
                    }
                    if (void 0 === columnIndex || columnIndex !== columnChanges.columnIndex) {
                        if ((0, _type.isDefined)(columnIndex)) {
                            null !== (_a = columnChanges.columnIndices) && void 0 !== _a ? _a : columnChanges.columnIndices = [];
                            if ((0, _type.isDefined)(columnChanges.columnIndex)) {
                                columnChanges.columnIndices.push(columnChanges.columnIndex)
                            }
                            columnChanges.columnIndices.push(columnIndex)
                        }
                        delete columnChanges.columnIndex
                    }
                    that._columnChanges = columnChanges;
                    resetColumnsCache(that)
                };
                exports.updateColumnChanges = updateColumnChanges;
                exports.fireColumnsChanged = function(that) {
                    const onColumnsChanging = that.option("onColumnsChanging");
                    const columnChanges = that._columnChanges;
                    const reinitOptionNames = ["dataField", "lookup", "dataType", "columns"];
                    if (that.isInitialized() && !that._updateLockCount && columnChanges) {
                        if (onColumnsChanging) {
                            that._updateLockCount++;
                            onColumnsChanging((0, _extend.extend)({
                                component: that.component
                            }, columnChanges));
                            that._updateLockCount--
                        }
                        that._columnChanges = void 0;
                        if (options = columnChanges.optionNames, options && reinitOptionNames.some(name => options[name])) {
                            that._reinitAfterLookupChanges = null === columnChanges || void 0 === columnChanges ? void 0 : columnChanges.optionNames.lookup;
                            that.reinit();
                            that._reinitAfterLookupChanges = void 0
                        } else {
                            that.columnsChanged.fire(columnChanges)
                        }
                    }
                    var options
                };
                const updateSortOrderWhenGrouping = function(that, column, groupIndex, prevGroupIndex) {
                    const columnWasGrouped = prevGroupIndex >= 0;
                    if (groupIndex >= 0) {
                        if (!columnWasGrouped) {
                            column.lastSortOrder = column.sortOrder
                        }
                    } else {
                        const sortMode = that.option("sorting.mode");
                        let sortOrder = column.lastSortOrder;
                        if ("single" === sortMode) {
                            const sortedByAnotherColumn = that._columns.some(col => col !== column && (0, _type.isDefined)(col.sortIndex));
                            if (sortedByAnotherColumn) {
                                sortOrder = void 0
                            }
                        }
                        column.sortOrder = sortOrder
                    }
                };
                exports.updateSortOrderWhenGrouping = updateSortOrderWhenGrouping;
                const fireOptionChanged = function(that, options) {
                    const {
                        value: value
                    } = options;
                    const {
                        optionName: optionName
                    } = options;
                    const {
                        prevValue: prevValue
                    } = options;
                    const {
                        fullOptionName: fullOptionName
                    } = options;
                    const fullOptionPath = "".concat(fullOptionName, ".").concat(optionName);
                    if (!_const.IGNORE_COLUMN_OPTION_NAMES[optionName] && that._skipProcessingColumnsChange !== fullOptionPath) {
                        that._skipProcessingColumnsChange = fullOptionPath;
                        that.component._notifyOptionChanged(fullOptionPath, value, prevValue);
                        that._skipProcessingColumnsChange = false
                    }
                };
                exports.fireOptionChanged = fireOptionChanged;
                exports.columnOptionCore = function(that, column, optionName, value, notFireEvent) {
                    const optionGetter = (0, _data.compileGetter)(optionName);
                    const columnIndex = column.index;
                    let columns;
                    let changeType;
                    let initialColumn;
                    if (3 === arguments.length) {
                        return optionGetter(column, {
                            functionsAsIs: true
                        })
                    }
                    const prevValue = optionGetter(column, {
                        functionsAsIs: true
                    });
                    if (!(0, _common.equalByValue)(prevValue, value, {
                            maxDepth: 5
                        })) {
                        if ("groupIndex" === optionName || "calculateGroupValue" === optionName) {
                            changeType = "grouping";
                            updateSortOrderWhenGrouping(that, column, value, prevValue)
                        } else if ("sortIndex" === optionName || "sortOrder" === optionName || "calculateSortValue" === optionName) {
                            changeType = "sorting"
                        } else {
                            changeType = "columns"
                        }
                        const optionSetter = (0, _data.compileSetter)(optionName);
                        optionSetter(column, value, {
                            functionsAsIs: true
                        });
                        const fullOptionName = getColumnFullPath(that, column);
                        if (_const.COLUMN_INDEX_OPTIONS[optionName]) {
                            updateIndexes(that, column);
                            value = optionGetter(column)
                        }
                        if ("name" === optionName || "allowEditing" === optionName) {
                            that._checkColumns()
                        }
                        if (!(0, _type.isDefined)(prevValue) && !(0, _type.isDefined)(value) && 0 !== optionName.indexOf("buffer")) {
                            notFireEvent = true
                        }
                        if (!notFireEvent) {
                            if (!_const.USER_STATE_FIELD_NAMES.includes(optionName) && "visibleWidth" !== optionName) {
                                columns = that.option("columns");
                                initialColumn = that.getColumnByPath(fullOptionName, columns);
                                if ((0, _type.isString)(initialColumn)) {
                                    initialColumn = columns[columnIndex] = {
                                        dataField: initialColumn
                                    }
                                }
                                if (initialColumn && checkUserStateColumn(initialColumn, column)) {
                                    optionSetter(initialColumn, value, {
                                        functionsAsIs: true
                                    })
                                }
                            }
                            updateColumnChanges(that, changeType, optionName, columnIndex)
                        } else {
                            resetColumnsCache(that)
                        }
                        fullOptionName && fireOptionChanged(that, {
                            fullOptionName: fullOptionName,
                            optionName: optionName,
                            value: value,
                            prevValue: prevValue
                        })
                    }
                };

                function isSortOrderValid(sortOrder) {
                    return "asc" === sortOrder || "desc" === sortOrder
                }
                exports.addExpandColumn = function(that) {
                    const options = that._getExpandColumnOptions();
                    that.addCommandColumn(options)
                };
                exports.defaultSetCellValue = function(data, value) {
                    if (!this.dataField) {
                        return
                    }
                    const path = this.dataField.split(".");
                    const dotCount = path.length - 1;
                    if (this.serializeValue) {
                        value = this.serializeValue(value)
                    }
                    for (let i = 0; i < dotCount; i++) {
                        const name = path[i];
                        data = data[name] = data[name] || {}
                    }
                    data[path[dotCount]] = value
                };
                const getDataColumns = function(columns, rowIndex, bandColumnID) {
                    const result = [];
                    rowIndex = rowIndex || 0;
                    columns[rowIndex] && (0, _iterator.each)(columns[rowIndex], (_, column) => {
                        if (column.ownerBand === bandColumnID || column.type === _const.GROUP_COMMAND_COLUMN_NAME) {
                            if (!column.isBand || !column.colspan) {
                                if (!column.command || rowIndex < 1) {
                                    result.push(column)
                                }
                            } else {
                                result.push.apply(result, getDataColumns(columns, rowIndex + 1, column.index))
                            }
                        }
                    });
                    return result
                };
                exports.getDataColumns = getDataColumns;
                exports.getRowCount = function(that) {
                    let rowCount = 1;
                    const bandColumnsCache = that.getBandColumnsCache();
                    const {
                        columnParentByIndex: columnParentByIndex
                    } = bandColumnsCache;
                    that._columns.forEach(column => {
                        const parents = getParentBandColumns(column.index, columnParentByIndex);
                        const invisibleParents = parents.filter(column => !column.visible);
                        if (column.visible && !invisibleParents.length) {
                            rowCount = Math.max(rowCount, parents.length + 1)
                        }
                    });
                    return rowCount
                };
                const isCustomCommandColumn = (that, commandColumn) => {
                    const customCommandColumns = that._columns.filter(column => column.type === commandColumn.type);
                    return !!customCommandColumns.length
                };
                exports.isCustomCommandColumn = isCustomCommandColumn;
                exports.getFixedPosition = function(that, column) {
                    const rtlEnabled = that.option("rtlEnabled");
                    if (column.command && !isCustomCommandColumn(that, column) || !column.fixedPosition) {
                        return rtlEnabled ? "right" : "left"
                    }
                    return column.fixedPosition
                };
                exports.processExpandColumns = function(columns, expandColumns, type, columnIndex) {
                    let customColumnIndex;
                    const rowCount = this.getRowCount();
                    let rowspan = columns[columnIndex] && columns[columnIndex].rowspan;
                    let expandColumnsByType = expandColumns.filter(column => column.type === type);
                    columns.forEach((column, index) => {
                        if (column.type === type) {
                            customColumnIndex = index;
                            rowspan = columns[index + 1] ? columns[index + 1].rowspan : rowCount
                        }
                    });
                    if (rowspan > 1) {
                        expandColumnsByType = (0, _iterator.map)(expandColumnsByType, expandColumn => (0, _extend.extend)({}, expandColumn, {
                            rowspan: rowspan
                        }))
                    }
                    expandColumnsByType.unshift.apply(expandColumnsByType, (0, _type.isDefined)(customColumnIndex) ? [customColumnIndex, 1] : [columnIndex, 0]);
                    columns.splice.apply(columns, expandColumnsByType);
                    return rowspan || 1
                };
                exports.digitsCount = function(number) {
                    let i;
                    for (i = 0; number > 1; i++) {
                        number /= 10
                    }
                    return i
                };
                exports.numberToString = function(number, digitsCount) {
                    let str = number ? number.toString() : "0";
                    while (str.length < digitsCount) {
                        str = "0".concat(str)
                    }
                    return str
                };
                exports.mergeColumns = (that, columns, commandColumns, needToExtend) => {
                    let column;
                    let commandColumnIndex;
                    let result = columns.slice().map(column => (0, _extend.extend)({}, column));
                    const isColumnFixing = that._isColumnFixing();
                    let defaultCommandColumns = commandColumns.slice().map(column => (0, _extend.extend)({
                        fixed: isColumnFixing
                    }, column));
                    const getCommandColumnIndex = column => commandColumns.reduce((result, commandColumn, index) => {
                        const columnType = needToExtend && column.type === _const.GROUP_COMMAND_COLUMN_NAME ? "expand" : column.type;
                        return commandColumn.type === columnType || commandColumn.command === column.command ? index : result
                    }, -1);
                    const callbackFilter = commandColumn => commandColumn.command !== commandColumns[commandColumnIndex].command;
                    for (let i = 0; i < columns.length; i++) {
                        column = columns[i];
                        commandColumnIndex = column && (column.type || column.command) ? getCommandColumnIndex(column) : -1;
                        if (commandColumnIndex >= 0) {
                            if (needToExtend) {
                                result[i] = (0, _extend.extend)({
                                    fixed: isColumnFixing
                                }, commandColumns[commandColumnIndex], column);
                                if (column.type !== _const.GROUP_COMMAND_COLUMN_NAME) {
                                    defaultCommandColumns = defaultCommandColumns.filter(callbackFilter)
                                }
                            } else {
                                const columnOptions = {
                                    visibleIndex: column.visibleIndex,
                                    index: column.index,
                                    headerId: column.headerId,
                                    allowFixing: 0 === column.groupIndex,
                                    allowReordering: 0 === column.groupIndex,
                                    groupIndex: column.groupIndex
                                };
                                result[i] = (0, _extend.extend)({}, column, commandColumns[commandColumnIndex], column.type === _const.GROUP_COMMAND_COLUMN_NAME && columnOptions)
                            }
                        }
                    }
                    if (columns.length && needToExtend && defaultCommandColumns.length) {
                        result = result.concat(defaultCommandColumns)
                    }
                    return result
                };
                exports.isColumnFixed = (that, column) => (0, _type.isDefined)(column.fixed) || !column.type ? column.fixed : that._isColumnFixing();
                exports.convertOwnerBandToColumnReference = columns => {
                    columns.forEach(column => {
                        if ((0, _type.isDefined)(column.ownerBand)) {
                            column.ownerBand = columns[column.ownerBand]
                        }
                    })
                };
                const resetBandColumnsCache = that => {
                    that._bandColumnsCache = void 0
                };
                exports.resetBandColumnsCache = resetBandColumnsCache;
                exports.findColumn = (columns, identifier) => {
                    const identifierOptionName = (0, _type.isString)(identifier) && identifier.substr(0, identifier.indexOf(":"));
                    let column;
                    if (void 0 === identifier) {
                        return
                    }
                    if (identifierOptionName) {
                        identifier = identifier.substr(identifierOptionName.length + 1)
                    }
                    if (identifierOptionName) {
                        column = columns.filter(column => "".concat(column[identifierOptionName]) === identifier)[0]
                    } else {
                        ["index", "name", "dataField", "caption"].some(optionName => {
                            column = columns.filter(column => column[optionName] === identifier)[0];
                            return !!column
                        })
                    }
                    return column
                };
                exports.sortColumns = (columns, sortOrder) => {
                    if ("asc" !== sortOrder && "desc" !== sortOrder) {
                        return columns
                    }
                    const sign = "asc" === sortOrder ? 1 : -1;
                    columns.sort((column1, column2) => {
                        const caption1 = column1.caption || "";
                        const caption2 = column2.caption || "";
                        return sign * caption1.localeCompare(caption2)
                    });
                    return columns
                };
                exports.strictParseNumber = function(text, format) {
                    const parsedValue = _number.default.parse(text);
                    if ((0, _type.isNumeric)(parsedValue)) {
                        const formattedValue = _number.default.format(parsedValue, format);
                        const formattedValueWithDefaultFormat = _number.default.format(parsedValue, "decimal");
                        if (formattedValue === text || formattedValueWithDefaultFormat === text) {
                            return parsedValue
                        }
                    }
                }
            },
        49505:
            /*!*************************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/columns_resizing_reordering/m_columns_resizing_reordering.js ***!
              \*************************************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.columnsResizingReorderingModule = exports.DraggingHeaderViewController = exports.ColumnsResizerViewController = void 0;
                var _fx = _interopRequireDefault(__webpack_require__( /*! ../../../../animation/fx */ 87209));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../../core/dom_adapter */ 73349));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/callbacks */ 44504));
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _position = __webpack_require__( /*! ../../../../core/utils/position */ 37518);
                var _size = __webpack_require__( /*! ../../../../core/utils/size */ 58664);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../events/core/events_engine */ 55994));
                var _drag = __webpack_require__( /*! ../../../../events/drag */ 23174);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../../events/pointer */ 93786));
                var _index = __webpack_require__( /*! ../../../../events/utils/index */ 39611);
                var _swatch_container = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/swatch_container */ 92591));
                var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 15943));
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 60082));

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

                function _inheritsLoose(subClass, superClass) {
                    subClass.prototype = Object.create(superClass.prototype);
                    subClass.prototype.constructor = subClass;
                    _setPrototypeOf(subClass, superClass)
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const MODULE_NAMESPACE = "dxDataGridResizingReordering";
                const allowResizing = function(that) {
                    return that.option("allowColumnResizing") || that.getController("columns").isColumnOptionUsed("allowResizing")
                };
                const allowReordering = function(that) {
                    return that.option("allowColumnReordering") || that.getController("columns").isColumnOptionUsed("allowReordering")
                };
                let TrackerView = function(_modules$View) {
                    _inheritsLoose(TrackerView, _modules$View);

                    function TrackerView() {
                        return _modules$View.apply(this, arguments) || this
                    }
                    var _proto = TrackerView.prototype;
                    _proto._renderCore = function() {
                        const deferred = _modules$View.prototype._renderCore.call(this);
                        this.element().addClass(this.addWidgetPrefix("tracker"));
                        this.hide();
                        return deferred
                    };
                    _proto._unsubscribeFromCallback = function() {
                        if (this._positionChanged) {
                            this._tablePositionController.positionChanged.remove(this._positionChanged)
                        }
                    };
                    _proto._subscribeToCallback = function() {
                        const that = this;
                        that._positionChanged = function(position) {
                            const $element = that.element();
                            if ($element && $element.hasClass(that.addWidgetPrefix("tracker"))) {
                                $element.css({
                                    top: position.top
                                });
                                (0, _size.setHeight)($element, position.height)
                            }
                        };
                        this._tablePositionController.positionChanged.add(that._positionChanged)
                    };
                    _proto.optionChanged = function(args) {
                        if ("allowColumnResizing" === args.name) {
                            this._unsubscribeFromCallback();
                            if (args.value) {
                                this._subscribeToCallback();
                                this._invalidate()
                            }
                        }
                        _modules$View.prototype.optionChanged.call(this, args)
                    };
                    _proto.init = function() {
                        _modules$View.prototype.init.call(this);
                        this._tablePositionController = this.getController("tablePosition");
                        this._subscribeToCallback()
                    };
                    _proto.isVisible = function() {
                        return allowResizing(this)
                    };
                    _proto.show = function() {
                        this.element().show()
                    };
                    _proto.hide = function() {
                        this.element() && this.element().hide()
                    };
                    _proto.setHeight = function(value) {
                        (0, _size.setHeight)(this.element(), value)
                    };
                    _proto.dispose = function() {
                        this._unsubscribeFromCallback();
                        _modules$View.prototype.dispose.call(this)
                    };
                    return TrackerView
                }(_m_modules.default.View);
                let SeparatorView = function(_modules$View2) {
                    _inheritsLoose(SeparatorView, _modules$View2);

                    function SeparatorView() {
                        return _modules$View2.apply(this, arguments) || this
                    }
                    var _proto2 = SeparatorView.prototype;
                    _proto2._renderSeparator = function() {};
                    _proto2._renderCore = function(options) {
                        const deferred = _modules$View2.prototype._renderCore.call(this, options);
                        this._isShown = true;
                        this._renderSeparator();
                        this.hide();
                        return deferred
                    };
                    _proto2.show = function() {
                        this._isShown = true
                    };
                    _proto2.hide = function() {
                        this._isShown = false
                    };
                    _proto2.height = function(value) {
                        const $element = this.element();
                        if ($element) {
                            if ((0, _type.isDefined)(value)) {
                                (0, _size.setHeight)($element, value)
                            } else {
                                return (0, _size.getHeight)($element)
                            }
                        }
                    };
                    _proto2.width = function(value) {
                        const $element = this.element();
                        if ($element) {
                            if ((0, _type.isDefined)(value)) {
                                (0, _size.setWidth)($element, value)
                            } else {
                                return (0, _size.getWidth)($element)
                            }
                        }
                    };
                    return SeparatorView
                }(_m_modules.default.View);
                let ColumnsSeparatorView = function(_SeparatorView) {
                    _inheritsLoose(ColumnsSeparatorView, _SeparatorView);

                    function ColumnsSeparatorView() {
                        return _SeparatorView.apply(this, arguments) || this
                    }
                    var _proto3 = ColumnsSeparatorView.prototype;
                    _proto3._renderSeparator = function() {
                        _SeparatorView.prototype._renderSeparator.call(this);
                        const $element = this.element();
                        $element.addClass(this.addWidgetPrefix("columns-separator"))
                    };
                    _proto3._subscribeToCallback = function() {
                        const that = this;
                        let $element;
                        that._positionChanged = function(position) {
                            $element = that.element();
                            if ($element) {
                                $element.css({
                                    top: position.top
                                });
                                (0, _size.setHeight)($element, position.height)
                            }
                        };
                        that._tablePositionController.positionChanged.add(that._positionChanged)
                    };
                    _proto3._unsubscribeFromCallback = function() {
                        this._positionChanged && this._tablePositionController.positionChanged.remove(this._positionChanged)
                    };
                    _proto3._init = function() {
                        this._isTransparent = allowResizing(this);
                        if (this.isVisible()) {
                            this._subscribeToCallback()
                        }
                    };
                    _proto3.isVisible = function() {
                        return this.option("showColumnHeaders") && (allowReordering(this) || allowResizing(this))
                    };
                    _proto3.optionChanged = function(args) {
                        if ("allowColumnResizing" === args.name) {
                            if (args.value) {
                                this._init();
                                this._invalidate();
                                this.hide(true)
                            } else {
                                this._unsubscribeFromCallback();
                                this._isTransparent = allowResizing(this);
                                this.hide(true)
                            }
                        }
                        _SeparatorView.prototype.optionChanged.call(this, args)
                    };
                    _proto3.init = function() {
                        _SeparatorView.prototype.init.call(this);
                        this._tablePositionController = this.getController("tablePosition");
                        this._init()
                    };
                    _proto3.show = function() {
                        const that = this;
                        const $element = this.element();
                        if ($element && !that._isShown) {
                            if (that._isTransparent) {
                                $element.removeClass(that.addWidgetPrefix("columns-separator-transparent"))
                            } else {
                                $element.show()
                            }
                        }
                        _SeparatorView.prototype.show.call(this)
                    };
                    _proto3.hide = function(force) {
                        const $element = this.element();
                        const columnsSeparatorTransparent = this.addWidgetPrefix("columns-separator-transparent");
                        if ($element && (this._isShown || force)) {
                            if (this._isTransparent) {
                                $element.addClass(columnsSeparatorTransparent);
                                $element.css("left", "");
                                $element.show()
                            } else {
                                if ($element.hasClass(columnsSeparatorTransparent)) {
                                    $element.removeClass(columnsSeparatorTransparent)
                                }
                                $element.hide()
                            }
                        }
                        _SeparatorView.prototype.hide.call(this)
                    };
                    _proto3.moveByX = function(outerX) {
                        const $element = this.element();
                        if ($element) {
                            $element.css("left", null === outerX ? 0 : outerX - this._parentElement().offset().left)
                        }
                    };
                    _proto3.changeCursor = function(cursorName) {
                        cursorName = (0, _type.isDefined)(cursorName) ? cursorName : "";
                        const $element = this.element();
                        if ($element) {
                            $element.css("cursor", cursorName)
                        }
                    };
                    _proto3.dispose = function() {
                        this._unsubscribeFromCallback();
                        _SeparatorView.prototype.dispose.call(this)
                    };
                    return ColumnsSeparatorView
                }(SeparatorView);
                let BlockSeparatorView = function(_SeparatorView2) {
                    _inheritsLoose(BlockSeparatorView, _SeparatorView2);

                    function BlockSeparatorView() {
                        return _SeparatorView2.apply(this, arguments) || this
                    }
                    var _proto4 = BlockSeparatorView.prototype;
                    _proto4.init = function() {
                        const that = this;
                        _SeparatorView2.prototype.init.call(this);
                        this.getController("data").loadingChanged.add(isLoading => {
                            if (!isLoading) {
                                that.hide()
                            }
                        })
                    };
                    _proto4._renderSeparator = function() {
                        _SeparatorView2.prototype._renderSeparator.call(this);
                        this.element().addClass("dx-block-separator").html("&nbsp;")
                    };
                    _proto4.hide = function() {
                        const that = this;
                        const $parent = this._parentElement();
                        const $element = this.element();
                        if ($element && this._isShown) {
                            $element.css("display", "none")
                        }
                        if ($parent && !$parent.children(".".concat("dx-block-separator")).length) {
                            $parent.prepend(that.element())
                        }
                        _SeparatorView2.prototype.hide.call(this)
                    };
                    _proto4.isVisible = function() {
                        const groupPanelOptions = this.option("groupPanel");
                        const columnChooserOptions = this.option("columnChooser");
                        return groupPanelOptions && groupPanelOptions.visible || columnChooserOptions && columnChooserOptions.enabled
                    };
                    _proto4.show = function(targetLocation) {
                        const $element = this.element();
                        if ($element && !this._isShown) {
                            switch (targetLocation) {
                                case "group":
                                    this.element().css("display", "block");
                                    break;
                                case "columnChooser":
                                    ! function(toOptions) {
                                        _fx.default.stop($element, true);
                                        _fx.default.animate($element, {
                                            type: "slide",
                                            from: {
                                                width: 0,
                                                display: toOptions.display
                                            },
                                            to: toOptions,
                                            duration: 300,
                                            easing: "swing"
                                        })
                                    }({
                                        width: "100%",
                                        display: "block"
                                    });
                                    break;
                                default:
                                    $element.css("display", "")
                            }
                        }
                        _SeparatorView2.prototype.show.call(this)
                    };
                    return BlockSeparatorView
                }(SeparatorView);
                let DraggingHeaderView = function(_modules$View3) {
                    _inheritsLoose(DraggingHeaderView, _modules$View3);

                    function DraggingHeaderView() {
                        return _modules$View3.apply(this, arguments) || this
                    }
                    var _proto5 = DraggingHeaderView.prototype;
                    _proto5.isDragging = function() {
                        return this._isDragging
                    };
                    _proto5._getDraggingPanelByPos = function(pos) {
                        let result;
                        (0, _iterator.each)(this._dragOptions.draggingPanels, (index, draggingPanel) => {
                            if (draggingPanel) {
                                const boundingRect = draggingPanel.getBoundingRect();
                                if (boundingRect && (void 0 === boundingRect.bottom || pos.y < boundingRect.bottom) && (void 0 === boundingRect.top || pos.y > boundingRect.top) && (void 0 === boundingRect.left || pos.x > boundingRect.left) && (void 0 === boundingRect.right || pos.x < boundingRect.right)) {
                                    result = draggingPanel;
                                    return false
                                }
                            }
                            return
                        });
                        return result
                    };
                    _proto5._renderCore = function() {
                        this.element().addClass("".concat(this.addWidgetPrefix("drag-header"), " ").concat(this.addWidgetPrefix("text-content"), " ").concat("dx-widget")).hide()
                    };
                    _proto5._resetTargetColumnOptions = function() {
                        const params = this._dropOptions;
                        params.targetColumnIndex = -1;
                        delete params.targetColumnElement;
                        delete params.isLast;
                        delete params.posX;
                        delete params.posY
                    };
                    _proto5._getVisibleIndexObject = function(rowIndex, visibleIndex) {
                        if ((0, _type.isDefined)(rowIndex)) {
                            return {
                                columnIndex: visibleIndex,
                                rowIndex: rowIndex
                            }
                        }
                        return visibleIndex
                    };
                    _proto5.dispose = function() {
                        const element = this.element();
                        this._dragOptions = null;
                        element && element.parent().find(".".concat(this.addWidgetPrefix("drag-header"))).remove()
                    };
                    _proto5.isVisible = function() {
                        const columnsController = this.getController("columns");
                        const commonColumnSettings = columnsController.getCommonSettings();
                        return this.option("showColumnHeaders") && (allowReordering(this) || commonColumnSettings.allowGrouping || commonColumnSettings.allowHiding)
                    };
                    _proto5.init = function() {
                        const that = this;
                        _modules$View3.prototype.init.call(this);
                        this._controller = this.getController("draggingHeader");
                        this._columnsResizerViewController = this.getController("columnsResizer");
                        this._isDragging = false;
                        this.getController("data").loadingChanged.add(isLoading => {
                            const element = that.element();
                            if (!isLoading && element) {
                                element.hide()
                            }
                        })
                    };
                    _proto5.dragHeader = function(options) {
                        const {
                            columnElement: columnElement
                        } = options;
                        const isCommandColumn = !!options.sourceColumn.type;
                        this._isDragging = true;
                        this._dragOptions = options;
                        this._dropOptions = {
                            sourceIndex: options.index,
                            sourceColumnIndex: this._getVisibleIndexObject(options.rowIndex, options.columnIndex),
                            sourceColumnElement: options.columnElement,
                            sourceLocation: options.sourceLocation
                        };
                        const document = _dom_adapter.default.getDocument();
                        this._onSelectStart = document.onselectstart;
                        document.onselectstart = function() {
                            return false
                        };
                        this._controller.drag(this._dropOptions);
                        this.element().css({
                            textAlign: columnElement && columnElement.css("textAlign"),
                            height: columnElement && (isCommandColumn && columnElement.get(0).clientHeight || (0, _size.getHeight)(columnElement)),
                            width: columnElement && (isCommandColumn && columnElement.get(0).clientWidth || (0, _size.getWidth)(columnElement)),
                            whiteSpace: columnElement && columnElement.css("whiteSpace")
                        }).addClass(this.addWidgetPrefix("drag-action")).toggleClass("dx-drag-command-cell", isCommandColumn).text(isCommandColumn ? "" : options.sourceColumn.caption);
                        this.element().appendTo(_swatch_container.default.getSwatchContainer(columnElement))
                    };
                    _proto5.moveHeader = function(args) {
                        const e = args.event;
                        const {
                            that: that
                        } = e.data;
                        const eventData = (0, _index.eventData)(e);
                        const isResizing = that._columnsResizerViewController ? that._columnsResizerViewController.isResizing() : false;
                        const dragOptions = that._dragOptions;
                        if (that._isDragging && !isResizing) {
                            const $element = that.element();
                            const moveDeltaX = Math.abs(eventData.x - dragOptions.columnElement.offset().left - dragOptions.deltaX);
                            const moveDeltaY = Math.abs(eventData.y - dragOptions.columnElement.offset().top - dragOptions.deltaY);
                            if ($element.is(":visible") || moveDeltaX > 5 || moveDeltaY > 5) {
                                $element.show();
                                const newLeft = eventData.x - dragOptions.deltaX;
                                const newTop = eventData.y - dragOptions.deltaY;
                                $element.css({
                                    left: newLeft,
                                    top: newTop
                                });
                                that.dockHeader(eventData)
                            }
                            e.preventDefault()
                        }
                    };
                    _proto5.dockHeader = function(eventData) {
                        const that = this;
                        const targetDraggingPanel = that._getDraggingPanelByPos(eventData);
                        const controller = that._controller;
                        const params = that._dropOptions;
                        const dragOptions = that._dragOptions;
                        if (targetDraggingPanel) {
                            const rtlEnabled = that.option("rtlEnabled");
                            const isVerticalOrientation = "columnChooser" === targetDraggingPanel.getName();
                            const axisName = isVerticalOrientation ? "y" : "x";
                            const targetLocation = targetDraggingPanel.getName();
                            const rowIndex = "headers" === targetLocation ? dragOptions.rowIndex : void 0;
                            const {
                                sourceColumn: sourceColumn
                            } = dragOptions;
                            const columnElements = targetDraggingPanel.getColumnElements(rowIndex, null === sourceColumn || void 0 === sourceColumn ? void 0 : sourceColumn.ownerBand) || [];
                            const pointsByTarget = dragOptions.pointsByTarget = dragOptions.pointsByTarget || {};
                            const pointsByColumns = "columnChooser" === targetLocation ? [] : pointsByTarget[targetLocation] || controller._generatePointsByColumns((0, _extend.extend)({}, dragOptions, {
                                targetDraggingPanel: targetDraggingPanel,
                                columns: targetDraggingPanel.getColumns(rowIndex),
                                columnElements: columnElements,
                                isVerticalOrientation: isVerticalOrientation,
                                startColumnIndex: "headers" === targetLocation && (0, _renderer.default)(columnElements[0]).index()
                            }));
                            pointsByTarget[targetLocation] = pointsByColumns;
                            params.targetLocation = targetLocation;
                            if (pointsByColumns.length > 0) {
                                for (let i = 0; i < pointsByColumns.length; i++) {
                                    const centerPosition = pointsByColumns[i + 1] && (pointsByColumns[i][axisName] + pointsByColumns[i + 1][axisName]) / 2;
                                    if (void 0 === centerPosition || (rtlEnabled && "x" === axisName ? eventData[axisName] > centerPosition : eventData[axisName] < centerPosition)) {
                                        params.targetColumnIndex = that._getVisibleIndexObject(rowIndex, pointsByColumns[i].columnIndex);
                                        if (columnElements[i]) {
                                            params.targetColumnElement = columnElements.eq(i);
                                            params.isLast = false
                                        } else {
                                            params.targetColumnElement = columnElements.last();
                                            params.isLast = true
                                        }
                                        params.posX = pointsByColumns[i].x;
                                        params.posY = pointsByColumns[i].y;
                                        controller.dock(params);
                                        break
                                    }
                                }
                            } else {
                                that._resetTargetColumnOptions();
                                controller.dock(params)
                            }
                        }
                    };
                    _proto5.dropHeader = function(args) {
                        const e = args.event;
                        const {
                            that: that
                        } = e.data;
                        const controller = that._controller;
                        that.element().hide();
                        if (controller && that._isDragging) {
                            controller.drop(that._dropOptions)
                        }
                        that.element().appendTo(that._parentElement());
                        that._dragOptions = null;
                        that._dropOptions = null;
                        that._isDragging = false;
                        _dom_adapter.default.getDocument().onselectstart = that._onSelectStart || null
                    };
                    return DraggingHeaderView
                }(_m_modules.default.View);
                const isNextColumnResizingMode = function(that) {
                    return "widget" !== that.option("columnResizingMode")
                };
                let ColumnsResizerViewController = function(_modules$ViewControll) {
                    _inheritsLoose(ColumnsResizerViewController, _modules$ViewControll);

                    function ColumnsResizerViewController() {
                        return _modules$ViewControll.apply(this, arguments) || this
                    }
                    var _proto6 = ColumnsResizerViewController.prototype;
                    _proto6._isHeadersRowArea = function(posY) {
                        if (this._columnHeadersView) {
                            const element = this._columnHeadersView.element();
                            if (element) {
                                const offsetTop = element.offset().top;
                                const headersRowHeight = this._columnHeadersView.getHeadersRowHeight();
                                return posY >= offsetTop && posY <= offsetTop + headersRowHeight
                            }
                        }
                        return false
                    };
                    _proto6._isRtlParentStyle = function() {
                        var _a;
                        return this.option("rtlEnabled") && "rtl" === (null === (_a = this._$parentContainer) || void 0 === _a ? void 0 : _a.parent().css("direction"))
                    };
                    _proto6._pointCreated = function(point, cellsLength, columns) {
                        const isNextColumnMode = isNextColumnResizingMode(this);
                        const rtlEnabled = this.option("rtlEnabled");
                        const isRtlParentStyle = this._isRtlParentStyle();
                        const firstPointColumnIndex = !isNextColumnMode && rtlEnabled && !isRtlParentStyle ? 0 : 1;
                        if (point.index >= firstPointColumnIndex && point.index < cellsLength + (!isNextColumnMode && (!rtlEnabled || isRtlParentStyle) ? 1 : 0)) {
                            point.columnIndex -= firstPointColumnIndex;
                            const currentColumn = columns[point.columnIndex] || {};
                            const nextColumn = columns[point.columnIndex + 1] || {};
                            return !(isNextColumnMode ? currentColumn.allowResizing && nextColumn.allowResizing : currentColumn.allowResizing)
                        }
                        return true
                    };
                    _proto6._getTargetPoint = function(pointsByColumns, currentX, deltaX) {
                        if (pointsByColumns) {
                            for (let i = 0; i < pointsByColumns.length; i++) {
                                if (pointsByColumns[i].x === pointsByColumns[0].x && pointsByColumns[i + 1] && pointsByColumns[i].x === pointsByColumns[i + 1].x) {
                                    continue
                                }
                                if (pointsByColumns[i].x - deltaX <= currentX && currentX <= pointsByColumns[i].x + deltaX) {
                                    return pointsByColumns[i]
                                }
                            }
                        }
                        return null
                    };
                    _proto6._moveSeparator = function(args) {
                        var _a;
                        const e = args.event;
                        const that = e.data;
                        const columnsSeparatorWidth = that._columnsSeparatorView.width();
                        const isNextColumnMode = isNextColumnResizingMode(that);
                        const deltaX = columnsSeparatorWidth / 2;
                        const parentOffset = that._$parentContainer.offset();
                        const parentOffsetLeft = parentOffset.left;
                        const eventData = (0, _index.eventData)(e);
                        const rtlEnabled = that.option("rtlEnabled");
                        const isRtlParentStyle = this._isRtlParentStyle();
                        const isDragging = null === (_a = that._draggingHeaderView) || void 0 === _a ? void 0 : _a.isDragging();
                        if (that._isResizing && that._resizingInfo) {
                            if ((parentOffsetLeft <= eventData.x || !isNextColumnMode && isRtlParentStyle) && (!isNextColumnMode || eventData.x <= parentOffsetLeft + (0, _size.getWidth)(that._$parentContainer))) {
                                if (that._updateColumnsWidthIfNeeded(eventData.x)) {
                                    const $cell = that._columnHeadersView.getColumnElements().eq(that._resizingInfo.currentColumnIndex);
                                    const cell = $cell[0];
                                    if (cell) {
                                        const outerWidth = cell.getBoundingClientRect().width;
                                        that._columnsSeparatorView.moveByX($cell.offset().left + ((isNextColumnMode || isRtlParentStyle) && rtlEnabled ? 0 : outerWidth));
                                        that._tablePositionController.update(that._targetPoint.y);
                                        e.preventDefault()
                                    }
                                }
                            }
                        } else if (!isDragging) {
                            if (that._isHeadersRowArea(eventData.y)) {
                                if (that._previousParentOffset) {
                                    if (that._previousParentOffset.left !== parentOffset.left || that._previousParentOffset.top !== parentOffset.top) {
                                        that.pointsByColumns(null)
                                    }
                                }
                                that._targetPoint = that._getTargetPoint(that.pointsByColumns(), eventData.x, columnsSeparatorWidth);
                                that._previousParentOffset = parentOffset;
                                that._isReadyResizing = false;
                                if (that._targetPoint) {
                                    that._columnsSeparatorView.changeCursor("col-resize");
                                    that._columnsSeparatorView.moveByX(that._targetPoint.x - deltaX);
                                    that._tablePositionController.update(that._targetPoint.y);
                                    that._isReadyResizing = true;
                                    e.preventDefault()
                                } else {
                                    that._columnsSeparatorView.changeCursor();
                                    that._columnsSeparatorView.moveByX(null)
                                }
                            } else {
                                that.pointsByColumns(null);
                                that._isReadyResizing = false;
                                that._columnsSeparatorView.changeCursor();
                                that._columnsSeparatorView.moveByX(null)
                            }
                        }
                    };
                    _proto6._endResizing = function(args) {
                        const e = args.event;
                        const that = e.data;
                        if (that._isResizing) {
                            that.pointsByColumns(null);
                            that._resizingInfo = null;
                            that._columnsSeparatorView.hide();
                            that._columnsSeparatorView.changeCursor();
                            that._trackerView.hide();
                            that._isReadyResizing = false;
                            that._isResizing = false
                        }
                    };
                    _proto6._getNextColumnIndex = function(currentColumnIndex) {
                        return currentColumnIndex + 1
                    };
                    _proto6._setupResizingInfo = function(posX) {
                        const currentColumnIndex = this._targetPoint.columnIndex;
                        const nextColumnIndex = this._getNextColumnIndex(currentColumnIndex);
                        const currentHeader = this._columnHeadersView.getHeaderElement(currentColumnIndex);
                        const nextHeader = this._columnHeadersView.getHeaderElement(nextColumnIndex);
                        this._resizingInfo = {
                            startPosX: posX,
                            currentColumnIndex: currentColumnIndex,
                            currentColumnWidth: currentHeader && currentHeader.length > 0 ? (0, _position.getBoundingRect)(currentHeader[0]).width : 0,
                            nextColumnIndex: nextColumnIndex,
                            nextColumnWidth: nextHeader && nextHeader.length > 0 ? (0, _position.getBoundingRect)(nextHeader[0]).width : 0
                        }
                    };
                    _proto6._startResizing = function(args) {
                        const e = args.event;
                        const that = e.data;
                        const eventData = (0, _index.eventData)(e);
                        if ((0, _index.isTouchEvent)(e)) {
                            if (that._isHeadersRowArea(eventData.y)) {
                                that._targetPoint = that._getTargetPoint(that.pointsByColumns(), eventData.x, 10);
                                if (that._targetPoint) {
                                    that._columnsSeparatorView.moveByX(that._targetPoint.x - that._columnsSeparatorView.width() / 2);
                                    that._isReadyResizing = true
                                }
                            } else {
                                that._isReadyResizing = false
                            }
                        }
                        if (that._isReadyResizing) {
                            that._setupResizingInfo(eventData.x);
                            that._isResizing = true;
                            that._tablePositionController.update(that._targetPoint.y);
                            that._columnsSeparatorView.show();
                            that._trackerView.show();
                            const scrollable = that.component.getScrollable();
                            if (scrollable && that._isRtlParentStyle()) {
                                that._scrollRight = (0, _size.getWidth)(scrollable.$content()) - (0, _size.getWidth)(scrollable.container()) - scrollable.scrollLeft()
                            }
                            e.preventDefault();
                            e.stopPropagation()
                        }
                        if (this.isResizing()) {
                            this.getController("editorFactory").loseFocus()
                        }
                    };
                    _proto6._generatePointsByColumns = function() {
                        const that = this;
                        const columns = that._columnsController ? that._columnsController.getVisibleColumns() : [];
                        const cells = that._columnHeadersView.getColumnElements();
                        let pointsByColumns = [];
                        if (cells && cells.length > 0) {
                            pointsByColumns = _m_utils.default.getPointsByColumns(cells, point => that._pointCreated(point, cells.length, columns))
                        }
                        that._pointsByColumns = pointsByColumns
                    };
                    _proto6._unsubscribeFromEvents = function() {
                        this._moveSeparatorHandler && _events_engine.default.off(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.move, MODULE_NAMESPACE), this._moveSeparatorHandler);
                        this._startResizingHandler && _events_engine.default.off(this._$parentContainer, (0, _index.addNamespace)(_pointer.default.down, MODULE_NAMESPACE), this._startResizingHandler);
                        if (this._endResizingHandler) {
                            _events_engine.default.off(this._columnsSeparatorView.element(), (0, _index.addNamespace)(_pointer.default.up, MODULE_NAMESPACE), this._endResizingHandler);
                            _events_engine.default.off(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.up, MODULE_NAMESPACE), this._endResizingHandler)
                        }
                    };
                    _proto6._subscribeToEvents = function() {
                        this._moveSeparatorHandler = this.createAction(this._moveSeparator);
                        this._startResizingHandler = this.createAction(this._startResizing);
                        this._endResizingHandler = this.createAction(this._endResizing);
                        _events_engine.default.on(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.move, MODULE_NAMESPACE), this, this._moveSeparatorHandler);
                        _events_engine.default.on(this._$parentContainer, (0, _index.addNamespace)(_pointer.default.down, MODULE_NAMESPACE), this, this._startResizingHandler);
                        _events_engine.default.on(this._columnsSeparatorView.element(), (0, _index.addNamespace)(_pointer.default.up, MODULE_NAMESPACE), this, this._endResizingHandler);
                        _events_engine.default.on(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.up, MODULE_NAMESPACE), this, this._endResizingHandler)
                    };
                    _proto6._updateColumnsWidthIfNeeded = function(posX) {
                        let deltaX;
                        let needUpdate = false;
                        let contentWidth = this._rowsView.contentWidth();
                        const resizingInfo = this._resizingInfo;
                        const columnsController = this._columnsController;
                        const visibleColumns = columnsController.getVisibleColumns();
                        const columnsSeparatorWidth = this._columnsSeparatorView.width();
                        const isNextColumnMode = isNextColumnResizingMode(this);
                        const adaptColumnWidthByRatio = isNextColumnMode && this.option("adaptColumnWidthByRatio") && !this.option("columnAutoWidth");
                        const rtlEnabled = this.option("rtlEnabled");
                        const isRtlParentStyle = this._isRtlParentStyle();
                        const column = visibleColumns[resizingInfo.currentColumnIndex];
                        const nextColumn = visibleColumns[resizingInfo.nextColumnIndex];

                        function isPercentWidth(width) {
                            return (0, _type.isString)(width) && width.endsWith("%")
                        }

                        function setColumnWidth(column, columnWidth, contentWidth, adaptColumnWidthByRatio) {
                            if (column) {
                                const oldColumnWidth = column.width;
                                if (oldColumnWidth) {
                                    adaptColumnWidthByRatio = isPercentWidth(oldColumnWidth)
                                }
                                if (adaptColumnWidthByRatio) {
                                    columnsController.columnOption(column.index, "visibleWidth", columnWidth);
                                    columnsController.columnOption(column.index, "width", "".concat((columnWidth / contentWidth * 100).toFixed(3), "%"))
                                } else {
                                    columnsController.columnOption(column.index, "visibleWidth", null);
                                    columnsController.columnOption(column.index, "width", columnWidth)
                                }
                            }
                        }
                        deltaX = posX - resizingInfo.startPosX;
                        if ((isNextColumnMode || isRtlParentStyle) && rtlEnabled) {
                            deltaX = -deltaX
                        }
                        let {
                            cellWidth: cellWidth,
                            nextCellWidth: nextCellWidth
                        } = function(delta) {
                            let nextMinWidth;
                            let nextCellWidth;
                            let needCorrectionNextCellWidth;
                            const cellWidth = resizingInfo.currentColumnWidth + delta;
                            const minWidth = column && column.minWidth || columnsSeparatorWidth;
                            const result = {};
                            if (cellWidth >= minWidth) {
                                result.cellWidth = cellWidth
                            } else {
                                result.cellWidth = minWidth;
                                needCorrectionNextCellWidth = true
                            }
                            if (isNextColumnMode) {
                                nextCellWidth = resizingInfo.nextColumnWidth - delta;
                                nextMinWidth = nextColumn && nextColumn.minWidth || columnsSeparatorWidth;
                                if (nextCellWidth >= nextMinWidth) {
                                    if (needCorrectionNextCellWidth) {
                                        result.nextCellWidth = resizingInfo.nextColumnWidth - (delta + minWidth - cellWidth)
                                    } else {
                                        result.nextCellWidth = nextCellWidth
                                    }
                                } else {
                                    result.nextCellWidth = nextMinWidth;
                                    result.cellWidth = resizingInfo.currentColumnWidth + (delta - nextMinWidth + nextCellWidth)
                                }
                            }
                            return result
                        }(deltaX);
                        needUpdate = column.width !== cellWidth;
                        if (needUpdate) {
                            columnsController.beginUpdate();
                            cellWidth = Math.floor(cellWidth);
                            contentWidth = function(contentWidth, visibleColumns) {
                                const allColumnsHaveWidth = visibleColumns.every(column => column.width);
                                if (allColumnsHaveWidth) {
                                    const totalPercent = visibleColumns.reduce((sum, column) => {
                                        if (isPercentWidth(column.width)) {
                                            sum += parseFloat(column.width)
                                        }
                                        return sum
                                    }, 0);
                                    if (totalPercent > 100) {
                                        contentWidth = contentWidth / totalPercent * 100
                                    }
                                }
                                return contentWidth
                            }(contentWidth, visibleColumns);
                            setColumnWidth(column, cellWidth, contentWidth, adaptColumnWidthByRatio);
                            if (isNextColumnMode) {
                                nextCellWidth = Math.floor(nextCellWidth);
                                setColumnWidth(nextColumn, nextCellWidth, contentWidth, adaptColumnWidthByRatio)
                            } else {
                                const columnWidths = this._columnHeadersView.getColumnWidths();
                                columnWidths[resizingInfo.currentColumnIndex] = cellWidth;
                                const hasScroll = columnWidths.reduce((totalWidth, width) => totalWidth + width, 0) > this._rowsView.contentWidth();
                                if (!hasScroll) {
                                    const lastColumnIndex = _m_utils.default.getLastResizableColumnIndex(visibleColumns);
                                    if (lastColumnIndex >= 0) {
                                        columnsController.columnOption(visibleColumns[lastColumnIndex].index, "visibleWidth", "auto")
                                    }
                                }
                                for (let i = 0; i < columnWidths.length; i++) {
                                    if (visibleColumns[i] && visibleColumns[i] !== column && void 0 === visibleColumns[i].width) {
                                        columnsController.columnOption(visibleColumns[i].index, "width", columnWidths[i])
                                    }
                                }
                            }
                            columnsController.endUpdate();
                            if (!isNextColumnMode) {
                                this.component.updateDimensions();
                                const scrollable = this.component.getScrollable();
                                if (scrollable && isRtlParentStyle) {
                                    const left = (0, _size.getWidth)(scrollable.$content()) - (0, _size.getWidth)(scrollable.container()) - this._scrollRight;
                                    scrollable.scrollTo({
                                        left: left
                                    })
                                }
                            }
                        }
                        return needUpdate
                    };
                    _proto6._subscribeToCallback = function(callback, handler) {
                        callback.add(handler);
                        this._subscribesToCallbacks.push({
                            callback: callback,
                            handler: handler
                        })
                    };
                    _proto6._unsubscribeFromCallbacks = function() {
                        for (let i = 0; i < this._subscribesToCallbacks.length; i++) {
                            const subscribe = this._subscribesToCallbacks[i];
                            subscribe.callback.remove(subscribe.handler)
                        }
                        this._subscribesToCallbacks = []
                    };
                    _proto6._unsubscribes = function() {
                        this._unsubscribeFromEvents();
                        this._unsubscribeFromCallbacks()
                    };
                    _proto6._init = function() {
                        const that = this;
                        const generatePointsByColumnsHandler = function() {
                            if (!that._isResizing) {
                                that.pointsByColumns(null)
                            }
                        };
                        const generatePointsByColumnsScrollHandler = function(offset) {
                            if (that._scrollLeft !== offset.left) {
                                that._scrollLeft = offset.left;
                                that.pointsByColumns(null)
                            }
                        };
                        that._columnsSeparatorView = that.getView("columnsSeparatorView");
                        that._columnHeadersView = that.getView("columnHeadersView");
                        that._trackerView = that.getView("trackerView");
                        that._rowsView = that.getView("rowsView");
                        that._columnsController = that.getController("columns");
                        that._tablePositionController = that.getController("tablePosition");
                        that._$parentContainer = that.component.$element();
                        that._draggingHeaderView = that.component.getView("draggingHeaderView");
                        that._subscribeToCallback(that._columnHeadersView.renderCompleted, generatePointsByColumnsHandler);
                        that._subscribeToCallback(that._columnHeadersView.resizeCompleted, generatePointsByColumnsHandler);
                        that._subscribeToCallback(that._columnsSeparatorView.renderCompleted, () => {
                            that._unsubscribeFromEvents();
                            that._subscribeToEvents()
                        });
                        that._subscribeToCallback(that._rowsView.renderCompleted, () => {
                            that._rowsView.scrollChanged.remove(generatePointsByColumnsScrollHandler);
                            that._rowsView.scrollChanged.add(generatePointsByColumnsScrollHandler)
                        });
                        let previousScrollbarVisibility = 0 !== that._rowsView.getScrollbarWidth();
                        let previousTableHeight = 0;
                        that._subscribeToCallback(that.getController("tablePosition").positionChanged, e => {
                            if (that._isResizing && !that._rowsView.isResizing) {
                                const scrollbarVisibility = 0 !== that._rowsView.getScrollbarWidth();
                                if (previousScrollbarVisibility !== scrollbarVisibility || previousTableHeight && previousTableHeight !== e.height) {
                                    previousScrollbarVisibility = scrollbarVisibility;
                                    previousTableHeight = e.height;
                                    that.component.updateDimensions()
                                } else {
                                    that._rowsView.updateFreeSpaceRowHeight()
                                }
                            }
                            previousTableHeight = e.height
                        })
                    };
                    _proto6.optionChanged = function(args) {
                        _modules$ViewControll.prototype.optionChanged.call(this, args);
                        if ("allowColumnResizing" === args.name) {
                            if (args.value) {
                                this._init();
                                this._subscribeToEvents()
                            } else {
                                this._unsubscribes()
                            }
                        }
                    };
                    _proto6.isResizing = function() {
                        return this._isResizing
                    };
                    _proto6.init = function() {
                        this._subscribesToCallbacks = [];
                        if (allowResizing(this)) {
                            this._init()
                        }
                    };
                    _proto6.pointsByColumns = function(value) {
                        if (void 0 !== value) {
                            this._pointsByColumns = value
                        } else {
                            if (!this._pointsByColumns) {
                                this._generatePointsByColumns()
                            }
                            return this._pointsByColumns
                        }
                    };
                    _proto6.dispose = function() {
                        this._unsubscribes();
                        _modules$ViewControll.prototype.dispose.call(this)
                    };
                    return ColumnsResizerViewController
                }(_m_modules.default.ViewController);
                exports.ColumnsResizerViewController = ColumnsResizerViewController;
                let TablePositionViewController = function(_modules$ViewControll2) {
                    _inheritsLoose(TablePositionViewController, _modules$ViewControll2);

                    function TablePositionViewController(component) {
                        var _this;
                        _this = _modules$ViewControll2.call(this, component) || this;
                        _this.positionChanged = (0, _callbacks.default)();
                        return _this
                    }
                    var _proto7 = TablePositionViewController.prototype;
                    _proto7.update = function(top) {
                        const params = {};
                        const $element = this._columnHeadersView.element();
                        const offset = $element && $element.offset();
                        const offsetTop = offset && offset.top || 0;
                        const diffOffsetTop = (0, _type.isDefined)(top) ? Math.abs(top - offsetTop) : 0;
                        const columnsHeadersHeight = this._columnHeadersView ? this._columnHeadersView.getHeight() : 0;
                        const scrollBarWidth = this._rowsView.getScrollbarWidth(true);
                        const rowsHeight = this._rowsView ? this._rowsView.height() - scrollBarWidth : 0;
                        const columnsResizerController = this.component.getController("columnsResizer");
                        const draggingHeaderView = this.component.getView("draggingHeaderView");
                        params.height = columnsHeadersHeight;
                        const isDraggingOrResizing = columnsResizerController.isResizing() || draggingHeaderView.isDragging();
                        if (isDraggingOrResizing) {
                            params.height += rowsHeight - diffOffsetTop
                        }
                        if (null !== top && $element && $element.length) {
                            params.top = $element[0].offsetTop + diffOffsetTop
                        }
                        this.positionChanged.fire(params)
                    };
                    _proto7.init = function() {
                        const that = this;
                        _modules$ViewControll2.prototype.init.call(this);
                        that._columnHeadersView = this.getView("columnHeadersView");
                        that._rowsView = this.getView("rowsView");
                        that._pagerView = this.getView("pagerView");
                        that._rowsView.resizeCompleted.add(() => {
                            if (that.option("allowColumnResizing")) {
                                const targetPoint = that.getController("columnsResizer")._targetPoint;
                                that.update(targetPoint ? targetPoint.y : null)
                            }
                        })
                    };
                    return TablePositionViewController
                }(_m_modules.default.ViewController);
                let DraggingHeaderViewController = function(_modules$ViewControll3) {
                    _inheritsLoose(DraggingHeaderViewController, _modules$ViewControll3);

                    function DraggingHeaderViewController() {
                        return _modules$ViewControll3.apply(this, arguments) || this
                    }
                    var _proto8 = DraggingHeaderViewController.prototype;
                    _proto8._generatePointsByColumns = function(options) {
                        const that = this;
                        this.isCustomGroupColumnPosition = this.checkIsCustomGroupColumnPosition(options);
                        const points = _m_utils.default.getPointsByColumns(options.columnElements, point => that._pointCreated(point, options.columns, options.targetDraggingPanel.getName(), options.sourceColumn), options.isVerticalOrientation, options.startColumnIndex);
                        return points
                    };
                    _proto8.checkIsCustomGroupColumnPosition = function(options) {
                        let wasOnlyCommandColumns = true;
                        for (let i = 0; i < options.columns.length; i += 1) {
                            const col = options.columns[i];
                            if ("expand" === col.command && !wasOnlyCommandColumns) {
                                return true
                            }
                            if (!col.command) {
                                wasOnlyCommandColumns = false
                            }
                        }
                        return false
                    };
                    _proto8._pointCreated = function(point, columns, location, sourceColumn) {
                        var _a;
                        const targetColumn = columns[point.columnIndex];
                        const prevColumn = columns[point.columnIndex - 1];
                        const isColumnAfterExpandColumn = "expand" === (null === prevColumn || void 0 === prevColumn ? void 0 : prevColumn.command);
                        const isFirstExpandColumn = "expand" === (null === targetColumn || void 0 === targetColumn ? void 0 : targetColumn.command) && "expand" !== (null === prevColumn || void 0 === prevColumn ? void 0 : prevColumn.command);
                        const sourceColumnReorderingDisabled = sourceColumn && !sourceColumn.allowReordering;
                        const otherColumnsReorderingDisabled = !(null === targetColumn || void 0 === targetColumn ? void 0 : targetColumn.allowReordering) && !(null === prevColumn || void 0 === prevColumn ? void 0 : prevColumn.allowReordering);
                        switch (location) {
                            case "columnChooser":
                                return true;
                            case "headers":
                                if (sourceColumnReorderingDisabled) {
                                    return true
                                }
                                if (!isFirstExpandColumn) {
                                    return isColumnAfterExpandColumn || otherColumnsReorderingDisabled
                                }
                                if (this.isCustomGroupColumnPosition) {
                                    return false
                                }
                                while ("expand" === (null === (_a = columns[point.columnIndex]) || void 0 === _a ? void 0 : _a.command)) {
                                    point.columnIndex += 1
                                }
                                return false;
                            default:
                                return 0 === columns.length
                        }
                    };
                    _proto8._subscribeToEvents = function(draggingHeader, draggingPanels) {
                        const that = this;
                        (0, _iterator.each)(draggingPanels, (_, draggingPanel) => {
                            if (draggingPanel) {
                                let columns;
                                const rowCount = draggingPanel.getRowCount ? draggingPanel.getRowCount() : 1;
                                const nameDraggingPanel = draggingPanel.getName();
                                const subscribeToEvents = function(index, columnElement) {
                                    if (!columnElement) {
                                        return
                                    }
                                    const $columnElement = (0, _renderer.default)(columnElement);
                                    const column = columns[index];
                                    if (column && draggingPanel.allowDragging(column)) {
                                        $columnElement.addClass(that.addWidgetPrefix("drag-action"));
                                        _events_engine.default.on($columnElement, (0, _index.addNamespace)(_drag.start, MODULE_NAMESPACE), that.createAction(args => {
                                            const e = args.event;
                                            const eventData = (0, _index.eventData)(e);
                                            draggingHeader.dragHeader({
                                                deltaX: eventData.x - (0, _renderer.default)(e.currentTarget).offset().left,
                                                deltaY: eventData.y - (0, _renderer.default)(e.currentTarget).offset().top,
                                                sourceColumn: column,
                                                index: column.index,
                                                columnIndex: index,
                                                columnElement: $columnElement,
                                                sourceLocation: nameDraggingPanel,
                                                draggingPanels: draggingPanels,
                                                rowIndex: that._columnsController.getRowIndex(column.index, true)
                                            })
                                        }));
                                        _events_engine.default.on($columnElement, (0, _index.addNamespace)(_drag.move, MODULE_NAMESPACE), {
                                            that: draggingHeader
                                        }, that.createAction(draggingHeader.moveHeader));
                                        _events_engine.default.on($columnElement, (0, _index.addNamespace)(_drag.end, MODULE_NAMESPACE), {
                                            that: draggingHeader
                                        }, that.createAction(draggingHeader.dropHeader))
                                    }
                                };
                                for (let i = 0; i < rowCount; i++) {
                                    const columnElements = draggingPanel.getColumnElements(i) || [];
                                    if (columnElements.length) {
                                        columns = draggingPanel.getColumns(i) || [];
                                        (0, _iterator.each)(columnElements, subscribeToEvents)
                                    }
                                }
                            }
                        })
                    };
                    _proto8._unsubscribeFromEvents = function(draggingHeader, draggingPanels) {
                        const that = this;
                        (0, _iterator.each)(draggingPanels, (_, draggingPanel) => {
                            if (draggingPanel) {
                                const columnElements = draggingPanel.getColumnElements() || [];
                                (0, _iterator.each)(columnElements, (index, columnElement) => {
                                    const $columnElement = (0, _renderer.default)(columnElement);
                                    _events_engine.default.off($columnElement, (0, _index.addNamespace)(_drag.start, MODULE_NAMESPACE));
                                    _events_engine.default.off($columnElement, (0, _index.addNamespace)(_drag.move, MODULE_NAMESPACE));
                                    _events_engine.default.off($columnElement, (0, _index.addNamespace)(_drag.end, MODULE_NAMESPACE));
                                    $columnElement.removeClass(that.addWidgetPrefix("drag-action"))
                                })
                            }
                        })
                    };
                    _proto8._getSeparator = function(targetLocation) {
                        return "headers" === targetLocation ? this._columnsSeparatorView : this._blockSeparatorView
                    };
                    _proto8.hideSeparators = function(type) {
                        const blockSeparator = this._blockSeparatorView;
                        const columnsSeparator = this._columnsSeparatorView;
                        this._animationColumnIndex = void 0;
                        blockSeparator && blockSeparator.hide();
                        "block" !== type && columnsSeparator && columnsSeparator.hide()
                    };
                    _proto8.init = function() {
                        const that = this;
                        _modules$ViewControll3.prototype.init.call(this);
                        that._columnsController = that.getController("columns");
                        that._columnHeadersView = that.getView("columnHeadersView");
                        that._columnsSeparatorView = that.getView("columnsSeparatorView");
                        that._draggingHeaderView = that.getView("draggingHeaderView");
                        that._rowsView = that.getView("rowsView");
                        that._blockSeparatorView = that.getView("blockSeparatorView");
                        that._headerPanelView = that.getView("headerPanel");
                        that._columnChooserView = that.getView("columnChooserView");
                        const subscribeToEvents = function() {
                            if (that._draggingHeaderView) {
                                const draggingPanels = [that._columnChooserView, that._columnHeadersView, that._headerPanelView];
                                that._unsubscribeFromEvents(that._draggingHeaderView, draggingPanels);
                                that._subscribeToEvents(that._draggingHeaderView, draggingPanels)
                            }
                        };
                        that._columnHeadersView.renderCompleted.add(subscribeToEvents);
                        that._headerPanelView && that._headerPanelView.renderCompleted.add(subscribeToEvents);
                        that._columnChooserView && that._columnChooserView.renderCompleted.add(subscribeToEvents)
                    };
                    _proto8.allowDrop = function(parameters) {
                        return this._columnsController.allowMoveColumn(parameters.sourceColumnIndex, parameters.targetColumnIndex, parameters.sourceLocation, parameters.targetLocation)
                    };
                    _proto8.drag = function(parameters) {
                        const {
                            sourceIndex: sourceIndex
                        } = parameters;
                        const {
                            sourceLocation: sourceLocation
                        } = parameters;
                        const {
                            sourceColumnElement: sourceColumnElement
                        } = parameters;
                        const headersView = this._columnHeadersView;
                        const rowsView = this._rowsView;
                        if (sourceColumnElement) {
                            sourceColumnElement.css({
                                opacity: .5
                            });
                            if ("headers" === sourceLocation) {
                                headersView && headersView.setRowsOpacity(sourceIndex, .5);
                                rowsView && rowsView.setRowsOpacity(sourceIndex, .5)
                            }
                        }
                    };
                    _proto8.dock = function(parameters) {
                        const that = this;
                        const targetColumnIndex = (0, _type.isObject)(parameters.targetColumnIndex) ? parameters.targetColumnIndex.columnIndex : parameters.targetColumnIndex;
                        const {
                            sourceLocation: sourceLocation
                        } = parameters;
                        const {
                            targetLocation: targetLocation
                        } = parameters;
                        const separator = that._getSeparator(targetLocation);
                        const hasTargetVisibleIndex = targetColumnIndex >= 0;
                        that._columnHeadersView.element().find(".".concat("dx-header-row")).toggleClass(that.addWidgetPrefix("drop-highlight"), "headers" !== sourceLocation && "headers" === targetLocation && !hasTargetVisibleIndex);
                        if (separator) {
                            if (that.allowDrop(parameters) && hasTargetVisibleIndex) {
                                if ("group" === targetLocation || "columnChooser" === targetLocation) {
                                    ! function() {
                                        if (that._animationColumnIndex !== targetColumnIndex) {
                                            that.hideSeparators();
                                            separator.element()[parameters.isLast ? "insertAfter" : "insertBefore"](parameters.targetColumnElement);
                                            that._animationColumnIndex = targetColumnIndex;
                                            separator.show(targetLocation)
                                        }
                                    }()
                                } else {
                                    that.hideSeparators("block");
                                    that.getController("tablePosition").update(parameters.posY);
                                    separator.moveByX(parameters.posX - separator.width());
                                    separator.show()
                                }
                            } else {
                                that.hideSeparators()
                            }
                        }
                    };
                    _proto8.drop = function(parameters) {
                        const {
                            sourceColumnElement: sourceColumnElement
                        } = parameters;
                        if (sourceColumnElement) {
                            sourceColumnElement.css({
                                opacity: ""
                            });
                            this._columnHeadersView.setRowsOpacity(parameters.sourceIndex, "");
                            this._rowsView.setRowsOpacity(parameters.sourceIndex, "");
                            this._columnHeadersView.element().find(".".concat("dx-header-row")).removeClass(this.addWidgetPrefix("drop-highlight"))
                        }
                        if (this.allowDrop(parameters)) {
                            const separator = this._getSeparator(parameters.targetLocation);
                            if (separator) {
                                separator.hide()
                            }
                            this._columnsController.moveColumn(parameters.sourceColumnIndex, parameters.targetColumnIndex, parameters.sourceLocation, parameters.targetLocation)
                        }
                    };
                    _proto8.dispose = function() {
                        if (this._draggingHeaderView) {
                            this._unsubscribeFromEvents(this._draggingHeaderView, [this._columnChooserView, this._columnHeadersView, this._headerPanelView])
                        }
                    };
                    return DraggingHeaderViewController
                }(_m_modules.default.ViewController);
                exports.DraggingHeaderViewController = DraggingHeaderViewController;
                const columnsResizingReorderingModule = {
                    views: {
                        columnsSeparatorView: ColumnsSeparatorView,
                        blockSeparatorView: BlockSeparatorView,
                        draggingHeaderView: DraggingHeaderView,
                        trackerView: TrackerView
                    },
                    controllers: {
                        draggingHeader: DraggingHeaderViewController,
                        tablePosition: TablePositionViewController,
                        columnsResizer: ColumnsResizerViewController
                    },
                    extenders: {
                        views: {
                            rowsView: {
                                _needUpdateRowHeight(itemCount) {
                                    const wordWrapEnabled = this.option("wordWrapEnabled");
                                    const columnsResizerController = this.getController("columnsResizer");
                                    const isResizing = columnsResizerController.isResizing();
                                    return this.callBase.apply(this, arguments) || itemCount > 0 && wordWrapEnabled && isResizing
                                }
                            }
                        },
                        controllers: {
                            editorFactory: {
                                renderFocusOverlay() {
                                    if (this.getController("columnsResizer").isResizing()) {
                                        return
                                    }
                                    return this.callBase.apply(this, arguments)
                                }
                            }
                        }
                    }
                };
                exports.columnsResizingReorderingModule = columnsResizingReorderingModule
            },
        69823:
            /*!*******************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/context_menu/m_context_menu.js ***!
              \*******************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.contextMenuModule = void 0;
                var _element = __webpack_require__( /*! ../../../../core/element */ 6415);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _context_menu = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/context_menu */ 10042));
                var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 15943));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const viewName = {
                    columnHeadersView: "header",
                    rowsView: "content",
                    footerView: "footer",
                    headerPanel: "headerPanel"
                };
                const VIEW_NAMES = ["columnHeadersView", "rowsView", "footerView", "headerPanel"];
                const ContextMenuController = _m_modules.default.ViewController.inherit({
                    init() {
                        this.createAction("onContextMenuPreparing")
                    },
                    getContextMenuItems(dxEvent) {
                        if (!dxEvent) {
                            return false
                        }
                        const that = this;
                        const $targetElement = (0, _renderer.default)(dxEvent.target);
                        let $element;
                        let $targetRowElement;
                        let $targetCellElement;
                        let menuItems;
                        (0, _iterator.each)(VIEW_NAMES, (function() {
                            var _a, _b;
                            const view = that.getView(this);
                            $element = view && view.element();
                            if ($element && ($element.is($targetElement) || $element.find($targetElement).length)) {
                                $targetCellElement = $targetElement.closest(".dx-row > td, .dx-row > tr");
                                $targetRowElement = $targetCellElement.parent();
                                const rowIndex = view.getRowIndex($targetRowElement);
                                const columnIndex = $targetCellElement[0] && $targetCellElement[0].cellIndex;
                                const rowOptions = $targetRowElement.data("options");
                                const options = {
                                    event: dxEvent,
                                    targetElement: (0, _element.getPublicElement)($targetElement),
                                    target: viewName[this],
                                    rowIndex: rowIndex,
                                    row: view._getRows()[rowIndex],
                                    columnIndex: columnIndex,
                                    column: null === (_b = null === (_a = null === rowOptions || void 0 === rowOptions ? void 0 : rowOptions.cells) || void 0 === _a ? void 0 : _a[columnIndex]) || void 0 === _b ? void 0 : _b.column
                                };
                                options.items = view.getContextMenuItems && view.getContextMenuItems(options);
                                that.executeAction("onContextMenuPreparing", options);
                                that._contextMenuPrepared(options);
                                menuItems = options.items;
                                if (menuItems) {
                                    return false
                                }
                            }
                            return
                        }));
                        return menuItems
                    },
                    _contextMenuPrepared: _common.noop
                });
                const ContextMenuView = _m_modules.default.View.inherit({
                    _renderCore() {
                        const that = this;
                        const $element = that.element().addClass("dx-context-menu");
                        this.setAria("role", "presentation", $element);
                        this._createComponent($element, _context_menu.default, {
                            onPositioning(actionArgs) {
                                const {
                                    event: event
                                } = actionArgs;
                                const contextMenuInstance = actionArgs.component;
                                const items = that.getController("contextMenu").getContextMenuItems(event);
                                if (items) {
                                    contextMenuInstance.option("items", items);
                                    event.stopPropagation()
                                } else {
                                    actionArgs.cancel = true
                                }
                            },
                            onItemClick(params) {
                                params.itemData.onItemClick && params.itemData.onItemClick(params)
                            },
                            cssClass: that.getWidgetContainerClass(),
                            target: that.component.$element()
                        })
                    }
                });
                const contextMenuModule = {
                    defaultOptions: () => ({
                        onContextMenuPreparing: null
                    }),
                    controllers: {
                        contextMenu: ContextMenuController
                    },
                    views: {
                        contextMenuView: ContextMenuView
                    }
                };
                exports.contextMenuModule = contextMenuModule
            },
        72119:
            /*!*************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/data_controller/m_data_controller.js ***!
              \*************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.dataControllerModule = exports.DataController = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _array_compare = __webpack_require__( /*! ../../../../core/utils/array_compare */ 34671);
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _array_store = _interopRequireDefault(__webpack_require__( /*! ../../../../data/array_store */ 26562));
                var _custom_store = _interopRequireDefault(__webpack_require__( /*! ../../../../data/custom_store */ 88036));
                var _data_helper = _interopRequireDefault(__webpack_require__( /*! ../../../../data_helper */ 53305));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.errors */ 96688));
                var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 15943));
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 60082));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const changePaging = function(that, optionName, value) {
                    const dataSource = that._dataSource;
                    if (dataSource) {
                        if (void 0 !== value) {
                            const oldValue = that._getPagingOptionValue(optionName);
                            if (oldValue !== value) {
                                if ("pageSize" === optionName) {
                                    dataSource.pageIndex(0)
                                }
                                dataSource[optionName](value);
                                that._skipProcessingPagingChange = true;
                                that.option("paging.".concat(optionName), value);
                                that._skipProcessingPagingChange = false;
                                const pageIndex = dataSource.pageIndex();
                                that._isPaging = "pageIndex" === optionName;
                                return dataSource["pageIndex" === optionName ? "load" : "reload"]().done(() => {
                                    that._isPaging = false;
                                    that.pageChanged.fire(pageIndex)
                                })
                            }
                            return (0, _deferred.Deferred)().resolve().promise()
                        }
                        return dataSource[optionName]()
                    }
                    return 0
                };
                const ControllerWithDataMixin = _m_modules.default.Controller.inherit(_data_helper.default);
                let DataController = function(_ControllerWithDataMi) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(DataController, _ControllerWithDataMi);

                    function DataController() {
                        return _ControllerWithDataMi.apply(this, arguments) || this
                    }
                    var _proto = DataController.prototype;
                    _proto.init = function() {
                        const that = this;
                        that._items = [];
                        that._cachedProcessedItems = null;
                        that._columnsController = this.getController("columns");
                        that._isPaging = false;
                        that._currentOperationTypes = null;
                        that._dataChangedHandler = e => {
                            that._currentOperationTypes = this._dataSource.operationTypes();
                            that._handleDataChanged(e);
                            that._currentOperationTypes = null
                        };
                        that._columnsChangedHandler = that._handleColumnsChanged.bind(that);
                        that._loadingChangedHandler = that._handleLoadingChanged.bind(that);
                        that._loadErrorHandler = that._handleLoadError.bind(that);
                        that._customizeStoreLoadOptionsHandler = that._handleCustomizeStoreLoadOptions.bind(that);
                        that._changingHandler = that._handleChanging.bind(that);
                        that._dataPushedHandler = that._handleDataPushed.bind(that);
                        that._columnsController.columnsChanged.add(that._columnsChangedHandler);
                        that._isLoading = false;
                        that._isCustomLoading = false;
                        that._repaintChangesOnly = void 0;
                        that._changes = [];
                        that.createAction("onDataErrorOccurred");
                        that.dataErrorOccurred.add(error => that.executeAction("onDataErrorOccurred", {
                            error: error
                        }));
                        that._refreshDataSource();
                        this.postCtor()
                    };
                    _proto._getPagingOptionValue = function(optionName) {
                        return this._dataSource[optionName]()
                    };
                    _proto.callbackNames = function() {
                        return ["changed", "loadingChanged", "dataErrorOccurred", "pageChanged", "dataSourceChanged", "pushed"]
                    };
                    _proto.callbackFlags = function(name) {
                        if ("dataErrorOccurred" === name) {
                            return {
                                stopOnFalse: true
                            }
                        }
                        return
                    };
                    _proto.publicMethods = function() {
                        return ["beginCustomLoading", "endCustomLoading", "refresh", "filter", "clearFilter", "getCombinedFilter", "keyOf", "byKey", "getDataByKeys", "pageIndex", "pageSize", "pageCount", "totalCount", "_disposeDataSource", "getKeyByRowIndex", "getRowIndexByKey", "getDataSource", "getVisibleRows", "repaintRows"]
                    };
                    _proto.reset = function() {
                        this._columnsController.reset();
                        this._items = [];
                        this._refreshDataSource()
                    };
                    _proto._handleDataSourceChange = function(args) {
                        if (args.value === args.previousValue || this.option("columns") && Array.isArray(args.value) && Array.isArray(args.previousValue)) {
                            const isValueChanged = args.value !== args.previousValue;
                            if (isValueChanged) {
                                const store = this.store();
                                if (store) {
                                    store._array = args.value
                                }
                            }
                            if (this.needToRefreshOnDataSourceChange(args)) {
                                this.refresh(this.option("repaintChangesOnly"))
                            }
                            return true
                        }
                        return false
                    };
                    _proto.needToRefreshOnDataSourceChange = function(args) {
                        return true
                    };
                    _proto.optionChanged = function(args) {
                        const that = this;
                        let dataSource;
                        let changedPagingOptions;

                        function handled() {
                            args.handled = true
                        }
                        if ("dataSource" === args.name && args.name === args.fullName && this._handleDataSourceChange(args)) {
                            handled();
                            return
                        }
                        switch (args.name) {
                            case "cacheEnabled":
                            case "repaintChangesOnly":
                            case "highlightChanges":
                            case "loadingTimeout":
                                handled();
                                break;
                            case "remoteOperations":
                            case "keyExpr":
                            case "dataSource":
                            case "scrolling":
                                handled();
                                that.reset();
                                break;
                            case "paging":
                                dataSource = that.dataSource();
                                if (dataSource) {
                                    changedPagingOptions = that._setPagingOptions(dataSource);
                                    if (changedPagingOptions) {
                                        const pageIndex = dataSource.pageIndex();
                                        this._isPaging = changedPagingOptions.isPageIndexChanged;
                                        dataSource.load().done(() => {
                                            this._isPaging = false;
                                            that.pageChanged.fire(pageIndex)
                                        })
                                    }
                                }
                                handled();
                                break;
                            case "rtlEnabled":
                                that.reset();
                                break;
                            case "columns":
                                dataSource = that.dataSource();
                                if (dataSource && dataSource.isLoading() && args.name === args.fullName) {
                                    this._useSortingGroupingFromColumns = true;
                                    dataSource.load()
                                }
                                break;
                            default:
                                _ControllerWithDataMi.prototype.optionChanged.call(this, args)
                        }
                    };
                    _proto.isReady = function() {
                        return !this._isLoading
                    };
                    _proto.getDataSource = function() {
                        return this._dataSource && this._dataSource._dataSource
                    };
                    _proto.getCombinedFilter = function(returnDataField) {
                        return this.combinedFilter(void 0, returnDataField)
                    };
                    _proto.combinedFilter = function(filter, returnDataField) {
                        if (!this._dataSource) {
                            return filter
                        }
                        let combined = null !== filter && void 0 !== filter ? filter : this._dataSource.filter();
                        const isColumnsTypesDefined = this._columnsController.isDataSourceApplied() || this._columnsController.isAllDataTypesDefined();
                        if (isColumnsTypesDefined) {
                            const additionalFilter = this._calculateAdditionalFilter();
                            combined = additionalFilter ? _m_utils.default.combineFilters([additionalFilter, combined]) : combined
                        }
                        const isRemoteFiltering = this._dataSource.remoteOperations().filtering || returnDataField;
                        combined = this._columnsController.updateFilter(combined, isRemoteFiltering);
                        return combined
                    };
                    _proto.waitReady = function() {
                        if (this._updateLockCount) {
                            this._readyDeferred = new _deferred.Deferred;
                            return this._readyDeferred
                        }
                        return (0, _deferred.when)()
                    };
                    _proto._endUpdateCore = function() {
                        const changes = this._changes;
                        if (changes.length) {
                            this._changes = [];
                            const repaintChangesOnly = changes.every(change => change.repaintChangesOnly);
                            this.updateItems(1 === changes.length ? changes[0] : {
                                repaintChangesOnly: repaintChangesOnly
                            })
                        }
                        if (this._readyDeferred) {
                            this._readyDeferred.resolve();
                            this._readyDeferred = null
                        }
                    };
                    _proto._handleCustomizeStoreLoadOptions = function(e) {
                        var _a;
                        const columnsController = this._columnsController;
                        const dataSource = this._dataSource;
                        const {
                            storeLoadOptions: storeLoadOptions
                        } = e;
                        if (e.isCustomLoading && !storeLoadOptions.isLoadingAll) {
                            return
                        }
                        storeLoadOptions.filter = this.combinedFilter(storeLoadOptions.filter);
                        if (1 === (null === (_a = storeLoadOptions.filter) || void 0 === _a ? void 0 : _a.length) && "!" === storeLoadOptions.filter[0]) {
                            e.data = [];
                            e.extra = e.extra || {};
                            e.extra.totalCount = 0
                        }
                        if (!columnsController.isDataSourceApplied()) {
                            columnsController.updateColumnDataTypes(dataSource)
                        }
                        this._columnsUpdating = true;
                        columnsController.updateSortingGrouping(dataSource, !this._useSortingGroupingFromColumns);
                        this._columnsUpdating = false;
                        storeLoadOptions.sort = columnsController.getSortDataSourceParameters();
                        storeLoadOptions.group = columnsController.getGroupDataSourceParameters();
                        dataSource.sort(storeLoadOptions.sort);
                        dataSource.group(storeLoadOptions.group);
                        storeLoadOptions.sort = columnsController.getSortDataSourceParameters(!dataSource.remoteOperations().sorting);
                        e.group = columnsController.getGroupDataSourceParameters(!dataSource.remoteOperations().grouping)
                    };
                    _proto._handleColumnsChanged = function(e) {
                        const that = this;
                        const {
                            changeTypes: changeTypes
                        } = e;
                        const {
                            optionNames: optionNames
                        } = e;
                        let filterValue;
                        let filterValues;
                        let filterApplied;
                        const updateItemsHandler = function(change) {
                            var _a;
                            that._columnsController.columnsChanged.remove(updateItemsHandler);
                            that.updateItems({
                                repaintChangesOnly: false,
                                virtualColumnsScrolling: null === (_a = null === change || void 0 === change ? void 0 : change.changeTypes) || void 0 === _a ? void 0 : _a.virtualColumnsScrolling
                            })
                        };
                        if (changeTypes.sorting || changeTypes.grouping) {
                            if (that._dataSource && !that._columnsUpdating) {
                                that._dataSource.group(that._columnsController.getGroupDataSourceParameters());
                                that._dataSource.sort(that._columnsController.getSortDataSourceParameters());
                                that.reload()
                            }
                        } else if (changeTypes.columns) {
                            filterValues = that._columnsController.columnOption(e.columnIndex, "filterValues");
                            if (optionNames.filterValues || optionNames.filterType && Array.isArray(filterValues) || optionNames.filterValue || optionNames.selectedFilterOperation || optionNames.allowFiltering) {
                                filterValue = that._columnsController.columnOption(e.columnIndex, "filterValue");
                                if (Array.isArray(filterValues) || void 0 === e.columnIndex || (0, _type.isDefined)(filterValue) || !optionNames.selectedFilterOperation || optionNames.filterValue) {
                                    that._applyFilter();
                                    filterApplied = true
                                }
                            }
                            if (!that._needApplyFilter && !_m_utils.default.checkChanges(optionNames, ["width", "visibleWidth", "filterValue", "bufferedFilterValue", "selectedFilterOperation", "filterValues", "filterType"])) {
                                that._columnsController.columnsChanged.add(updateItemsHandler)
                            }
                            if ((0, _type.isDefined)(optionNames.visible)) {
                                const column = that._columnsController.columnOption(e.columnIndex);
                                if (column && ((0, _type.isDefined)(column.filterValue) || (0, _type.isDefined)(column.filterValues))) {
                                    that._applyFilter();
                                    filterApplied = true
                                }
                            }
                        }
                        if (!filterApplied && changeTypes.filtering && !this._needApplyFilter) {
                            that.reload()
                        }
                    };
                    _proto._handleDataChanged = function(e) {
                        const that = this;
                        const dataSource = that._dataSource;
                        const columnsController = that._columnsController;
                        let isAsyncDataSourceApplying = false;
                        this._useSortingGroupingFromColumns = false;
                        if (dataSource && !that._isDataSourceApplying) {
                            that._isDataSourceApplying = true;
                            (0, _deferred.when)(that._columnsController.applyDataSource(dataSource)).done(() => {
                                if (that._isLoading) {
                                    that._handleLoadingChanged(false)
                                }
                                if (isAsyncDataSourceApplying && e && e.isDelayed) {
                                    e.isDelayed = false
                                }
                                that._isDataSourceApplying = false;
                                const needApplyFilter = that._needApplyFilter;
                                that._needApplyFilter = false;
                                if (needApplyFilter && !that._isAllDataTypesDefined && (() => {
                                        const additionalFilter = that._calculateAdditionalFilter();
                                        return additionalFilter && additionalFilter.length
                                    })()) {
                                    _ui.default.log("W1005", that.component.NAME);
                                    that._applyFilter()
                                } else {
                                    that.updateItems(e, true)
                                }
                            }).fail(() => {
                                that._isDataSourceApplying = false
                            });
                            if (that._isDataSourceApplying) {
                                isAsyncDataSourceApplying = true;
                                that._handleLoadingChanged(true)
                            }
                            that._needApplyFilter = !that._columnsController.isDataSourceApplied();
                            that._isAllDataTypesDefined = columnsController.isAllDataTypesDefined()
                        }
                    };
                    _proto._handleLoadingChanged = function(isLoading) {
                        this._isLoading = isLoading;
                        this._fireLoadingChanged()
                    };
                    _proto._handleLoadError = function(e) {
                        this.dataErrorOccurred.fire(e)
                    };
                    _proto._handleDataPushed = function(changes) {
                        this.pushed.fire(changes)
                    };
                    _proto.fireError = function() {
                        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
                            args[_key] = arguments[_key]
                        }
                        this.dataErrorOccurred.fire(_ui.default.Error.apply(_ui.default, args))
                    };
                    _proto._setPagingOptions = function(dataSource) {
                        const pageIndex = this.option("paging.pageIndex");
                        const pageSize = this.option("paging.pageSize");
                        const pagingEnabled = this.option("paging.enabled");
                        const scrollingMode = this.option("scrolling.mode");
                        const appendMode = "infinite" === scrollingMode;
                        const virtualMode = "virtual" === scrollingMode;
                        const paginate = pagingEnabled || virtualMode || appendMode;
                        let isPaginateChanged = false;
                        let isPageSizeChanged = false;
                        let isPageIndexChanged = false;
                        dataSource.requireTotalCount(!appendMode);
                        if (void 0 !== pagingEnabled && dataSource.paginate() !== paginate) {
                            dataSource.paginate(paginate);
                            isPaginateChanged = true
                        }
                        if (void 0 !== pageSize && dataSource.pageSize() !== pageSize) {
                            dataSource.pageSize(pageSize);
                            isPageSizeChanged = true
                        }
                        if (void 0 !== pageIndex && dataSource.pageIndex() !== pageIndex) {
                            dataSource.pageIndex(pageIndex);
                            isPageIndexChanged = true
                        }
                        if (isPaginateChanged || isPageSizeChanged || isPageIndexChanged) {
                            return {
                                isPaginateChanged: isPaginateChanged,
                                isPageSizeChanged: isPageSizeChanged,
                                isPageIndexChanged: isPageIndexChanged
                            }
                        }
                        return false
                    };
                    _proto._getSpecificDataSourceOption = function() {
                        const dataSource = this.option("dataSource");
                        if (Array.isArray(dataSource)) {
                            return {
                                store: {
                                    type: "array",
                                    data: dataSource,
                                    key: this.option("keyExpr")
                                }
                            }
                        }
                        return dataSource
                    };
                    _proto._initDataSource = function() {
                        const that = this;
                        const oldDataSource = this._dataSource;
                        _ControllerWithDataMi.prototype._initDataSource.call(this);
                        const dataSource = that._dataSource;
                        that._useSortingGroupingFromColumns = true;
                        that._cachedProcessedItems = null;
                        if (dataSource) {
                            const changedPagingOptions = that._setPagingOptions(dataSource);
                            this._isPaging = null === changedPagingOptions || void 0 === changedPagingOptions ? void 0 : changedPagingOptions.isPageIndexChanged;
                            that.setDataSource(dataSource)
                        } else if (oldDataSource) {
                            that.updateItems()
                        }
                    };
                    _proto._loadDataSource = function() {
                        const that = this;
                        const dataSource = that._dataSource;
                        const result = new _deferred.Deferred;
                        (0, _deferred.when)(this._columnsController.refresh(true)).always(() => {
                            if (dataSource) {
                                dataSource.load().done((function() {
                                    that._isPaging = false;
                                    result.resolve.apply(result, arguments)
                                })).fail(result.reject)
                            } else {
                                result.resolve()
                            }
                        });
                        return result.promise()
                    };
                    _proto._beforeProcessItems = function(items) {
                        return items.slice(0)
                    };
                    _proto.getRowIndexDelta = function() {
                        return 0
                    };
                    _proto.getDataIndex = function(change) {
                        const visibleItems = this._items;
                        const lastVisibleItem = "append" === change.changeType && visibleItems.length > 0 ? visibleItems[visibleItems.length - 1] : null;
                        return (0, _type.isDefined)(null === lastVisibleItem || void 0 === lastVisibleItem ? void 0 : lastVisibleItem.dataIndex) ? lastVisibleItem.dataIndex + 1 : 0
                    };
                    _proto._processItems = function(items, change) {
                        const that = this;
                        const rowIndexDelta = that.getRowIndexDelta();
                        const {
                            changeType: changeType
                        } = change;
                        const visibleColumns = that._columnsController.getVisibleColumns(null, "loadingAll" === changeType);
                        const dataIndex = this.getDataIndex(change);
                        const options = {
                            visibleColumns: visibleColumns,
                            dataIndex: dataIndex
                        };
                        const result = [];
                        (0, _iterator.each)(items, (index, item) => {
                            if ((0, _type.isDefined)(item)) {
                                options.rowIndex = index - rowIndexDelta;
                                item = that._processItem(item, options);
                                result.push(item)
                            }
                        });
                        return result
                    };
                    _proto._processItem = function(item, options) {
                        item = this._generateDataItem(item, options);
                        item = this._processDataItem(item, options);
                        item.dataIndex = options.dataIndex++;
                        return item
                    };
                    _proto._generateDataItem = function(data, options) {
                        return {
                            rowType: "data",
                            data: data,
                            key: this.keyOf(data)
                        }
                    };
                    _proto._processDataItem = function(dataItem, options) {
                        dataItem.values = this.generateDataValues(dataItem.data, options.visibleColumns);
                        return dataItem
                    };
                    _proto.generateDataValues = function(data, columns, isModified) {
                        const values = [];
                        let value;
                        for (let i = 0; i < columns.length; i++) {
                            const column = columns[i];
                            value = isModified ? void 0 : null;
                            if (!column.command) {
                                if (column.calculateCellValue) {
                                    value = column.calculateCellValue(data)
                                } else if (column.dataField) {
                                    value = data[column.dataField]
                                }
                            }
                            values.push(value)
                        }
                        return values
                    };
                    _proto._applyChange = function(change) {
                        const that = this;
                        if ("update" === change.changeType) {
                            that._applyChangeUpdate(change)
                        } else if (that.items().length && change.repaintChangesOnly && "refresh" === change.changeType) {
                            that._applyChangesOnly(change)
                        } else if ("refresh" === change.changeType) {
                            that._applyChangeFull(change)
                        }
                    };
                    _proto._applyChangeFull = function(change) {
                        this._items = change.items.slice(0)
                    };
                    _proto._getRowIndices = function(change) {
                        const rowIndices = change.rowIndices.slice(0);
                        const rowIndexDelta = this.getRowIndexDelta();
                        rowIndices.sort((a, b) => a - b);
                        for (let i = 0; i < rowIndices.length; i++) {
                            let correctedRowIndex = rowIndices[i];
                            if (change.allowInvisibleRowIndices) {
                                correctedRowIndex += rowIndexDelta
                            }
                            if (correctedRowIndex < 0) {
                                rowIndices.splice(i, 1);
                                i--
                            }
                        }
                        return rowIndices
                    };
                    _proto._applyChangeUpdate = function(change) {
                        const that = this;
                        const {
                            items: items
                        } = change;
                        const rowIndices = that._getRowIndices(change);
                        const rowIndexDelta = that.getRowIndexDelta();
                        const repaintChangesOnly = that.option("repaintChangesOnly");
                        let prevIndex = -1;
                        let rowIndexCorrection = 0;
                        let changeType;
                        change.items = [];
                        change.rowIndices = [];
                        change.columnIndices = [];
                        change.changeTypes = [];
                        const equalItems = function(item1, item2, strict) {
                            let result = item1 && item2 && (0, _common.equalByValue)(item1.key, item2.key);
                            if (result && strict) {
                                result = item1.rowType === item2.rowType && ("detail" !== item2.rowType || item1.isEditing === item2.isEditing)
                            }
                            return result
                        };
                        (0, _iterator.each)(rowIndices, (index, rowIndex) => {
                            let columnIndices;
                            rowIndex += rowIndexCorrection + rowIndexDelta;
                            if (prevIndex === rowIndex) {
                                return
                            }
                            prevIndex = rowIndex;
                            const oldItem = that._items[rowIndex];
                            const oldNextItem = that._items[rowIndex + 1];
                            const newItem = items[rowIndex];
                            const newNextItem = items[rowIndex + 1];
                            const strict = equalItems(oldItem, oldNextItem) || equalItems(newItem, newNextItem);
                            if (newItem) {
                                newItem.rowIndex = rowIndex;
                                change.items.push(newItem)
                            }
                            if (oldItem && newItem && equalItems(oldItem, newItem, strict)) {
                                changeType = "update";
                                that._items[rowIndex] = newItem;
                                if (oldItem.visible !== newItem.visible) {
                                    change.items.splice(-1, 1, {
                                        visible: newItem.visible
                                    })
                                } else if (repaintChangesOnly && !change.isFullUpdate) {
                                    columnIndices = that._partialUpdateRow(oldItem, newItem, rowIndex - rowIndexDelta)
                                }
                            } else if (newItem && !oldItem || newNextItem && equalItems(oldItem, newNextItem, strict)) {
                                changeType = "insert";
                                that._items.splice(rowIndex, 0, newItem);
                                rowIndexCorrection++
                            } else if (oldItem && !newItem || oldNextItem && equalItems(newItem, oldNextItem, strict)) {
                                changeType = "remove";
                                that._items.splice(rowIndex, 1);
                                rowIndexCorrection--;
                                prevIndex = -1
                            } else if (newItem) {
                                changeType = "update";
                                that._items[rowIndex] = newItem
                            } else {
                                return
                            }
                            change.rowIndices.push(rowIndex - rowIndexDelta);
                            change.changeTypes.push(changeType);
                            change.columnIndices.push(columnIndices)
                        })
                    };
                    _proto._isCellChanged = function(oldRow, newRow, visibleRowIndex, columnIndex, isLiveUpdate) {
                        if (JSON.stringify(oldRow.values[columnIndex]) !== JSON.stringify(newRow.values[columnIndex])) {
                            return true
                        }

                        function isCellModified(row, columnIndex) {
                            return row.modifiedValues ? void 0 !== row.modifiedValues[columnIndex] : false
                        }
                        if (isCellModified(oldRow, columnIndex) !== isCellModified(newRow, columnIndex)) {
                            return true
                        }
                        return false
                    };
                    _proto._getChangedColumnIndices = function(oldItem, newItem, visibleRowIndex, isLiveUpdate) {
                        let columnIndices;
                        if (oldItem.rowType === newItem.rowType) {
                            if ("group" !== newItem.rowType && "groupFooter" !== newItem.rowType) {
                                columnIndices = [];
                                if ("detail" !== newItem.rowType) {
                                    for (let columnIndex = 0; columnIndex < oldItem.values.length; columnIndex++) {
                                        if (this._isCellChanged(oldItem, newItem, visibleRowIndex, columnIndex, isLiveUpdate)) {
                                            columnIndices.push(columnIndex)
                                        }
                                    }
                                }
                            }
                            if ("group" === newItem.rowType && oldItem.cells) {
                                const isRowStateEquals = newItem.isExpanded === oldItem.isExpanded && newItem.data.isContinuation === oldItem.data.isContinuation && newItem.data.isContinuationOnNextPage === oldItem.data.isContinuationOnNextPage;
                                if (isRowStateEquals) {
                                    columnIndices = oldItem.cells.map((cell, index) => {
                                        var _a;
                                        return "groupExpand" !== (null === (_a = cell.column) || void 0 === _a ? void 0 : _a.type) ? index : -1
                                    }).filter(index => index >= 0)
                                }
                            }
                        }
                        return columnIndices
                    };
                    _proto._partialUpdateRow = function(oldItem, newItem, visibleRowIndex, isLiveUpdate) {
                        let changedColumnIndices = this._getChangedColumnIndices(oldItem, newItem, visibleRowIndex, isLiveUpdate);
                        if ((null === changedColumnIndices || void 0 === changedColumnIndices ? void 0 : changedColumnIndices.length) && this.option("dataRowTemplate")) {
                            changedColumnIndices = void 0
                        }
                        if (changedColumnIndices) {
                            oldItem.cells && oldItem.cells.forEach((cell, columnIndex) => {
                                const isCellChanged = changedColumnIndices.indexOf(columnIndex) >= 0;
                                if (!isCellChanged && cell && cell.update) {
                                    cell.update(newItem)
                                }
                            });
                            newItem.update = oldItem.update;
                            newItem.watch = oldItem.watch;
                            newItem.cells = oldItem.cells;
                            if (isLiveUpdate) {
                                newItem.oldValues = oldItem.values
                            }
                            oldItem.update && oldItem.update(newItem)
                        }
                        return changedColumnIndices
                    };
                    _proto._isItemEquals = function(item1, item2) {
                        var _a, _b, _c, _d;
                        if (JSON.stringify(item1.values) !== JSON.stringify(item2.values)) {
                            return false
                        }
                        if (["modified", "isNewRow", "removed", "isEditing"].some(field => item1[field] !== item2[field])) {
                            return false
                        }
                        if ("group" === item1.rowType || "groupFooter" === item1.rowType) {
                            const expandedMatch = item1.isExpanded === item2.isExpanded;
                            const summaryCellsMatch = JSON.stringify(item1.summaryCells) === JSON.stringify(item2.summaryCells);
                            const continuationMatch = (null === (_a = item1.data) || void 0 === _a ? void 0 : _a.isContinuation) === (null === (_b = item2.data) || void 0 === _b ? void 0 : _b.isContinuation) && (null === (_c = item1.data) || void 0 === _c ? void 0 : _c.isContinuationOnNextPage) === (null === (_d = item2.data) || void 0 === _d ? void 0 : _d.isContinuationOnNextPage);
                            if (!expandedMatch || !summaryCellsMatch || !continuationMatch) {
                                return false
                            }
                        }
                        return true
                    };
                    _proto._applyChangesOnly = function(change) {
                        var _a;
                        const rowIndices = [];
                        const columnIndices = [];
                        const changeTypes = [];
                        const items = [];
                        const newIndexByKey = {};
                        const isLiveUpdate = null !== (_a = null === change || void 0 === change ? void 0 : change.isLiveUpdate) && void 0 !== _a ? _a : true;

                        function getRowKey(row) {
                            if (row) {
                                return "".concat(row.rowType, ",").concat(JSON.stringify(row.key))
                            }
                            return
                        }
                        const currentItems = this._items;
                        const oldItems = currentItems.slice();
                        change.items.forEach((item, index) => {
                            const key = getRowKey(item);
                            newIndexByKey[key] = index;
                            item.rowIndex = index
                        });
                        const result = (0, _array_compare.findChanges)(oldItems, change.items, getRowKey, (item1, item2) => {
                            if (!this._isItemEquals(item1, item2)) {
                                return false
                            }
                            if (item1.cells) {
                                item1.update && item1.update(item2);
                                item1.cells.forEach(cell => {
                                    if (cell && cell.update) {
                                        cell.update(item2, true)
                                    }
                                })
                            }
                            return true
                        });
                        if (!result) {
                            this._applyChangeFull(change);
                            return
                        }
                        result.forEach(change => {
                            switch (change.type) {
                                case "update": {
                                    const {
                                        index: index
                                    } = change;
                                    const newItem = change.data;
                                    const {
                                        oldItem: oldItem
                                    } = change;
                                    const changedColumnIndices = this._partialUpdateRow(oldItem, newItem, index, isLiveUpdate);
                                    rowIndices.push(index);
                                    changeTypes.push("update");
                                    items.push(newItem);
                                    currentItems[index] = newItem;
                                    columnIndices.push(changedColumnIndices);
                                    break
                                }
                                case "insert":
                                    rowIndices.push(change.index);
                                    changeTypes.push("insert");
                                    items.push(change.data);
                                    columnIndices.push(void 0);
                                    currentItems.splice(change.index, 0, change.data);
                                    break;
                                case "remove":
                                    rowIndices.push(change.index);
                                    changeTypes.push("remove");
                                    currentItems.splice(change.index, 1);
                                    items.push(change.oldItem);
                                    columnIndices.push(void 0)
                            }
                        });
                        change.repaintChangesOnly = true;
                        change.changeType = "update";
                        change.rowIndices = rowIndices;
                        change.columnIndices = columnIndices;
                        change.changeTypes = changeTypes;
                        change.items = items;
                        if (oldItems.length) {
                            change.isLiveUpdate = true
                        }
                        this._correctRowIndices(rowIndex => {
                            const oldRowIndexOffset = this._rowIndexOffset || 0;
                            const rowIndexOffset = this.getRowIndexOffset();
                            const oldItem = oldItems[rowIndex - oldRowIndexOffset];
                            const key = getRowKey(oldItem);
                            const newVisibleRowIndex = newIndexByKey[key];
                            return newVisibleRowIndex >= 0 ? newVisibleRowIndex + rowIndexOffset - rowIndex : 0
                        })
                    };
                    _proto._correctRowIndices = function(rowIndex) {};
                    _proto._afterProcessItems = function(items, change) {
                        return items
                    };
                    _proto._updateItemsCore = function(change) {
                        let items;
                        const dataSource = this._dataSource;
                        const changeType = change.changeType || "refresh";
                        change.changeType = changeType;
                        if (dataSource) {
                            const cachedProcessedItems = this._cachedProcessedItems;
                            if (change.useProcessedItemsCache && cachedProcessedItems) {
                                items = cachedProcessedItems
                            } else {
                                items = change.items || dataSource.items();
                                items = this._beforeProcessItems(items);
                                items = this._processItems(items, change);
                                this._cachedProcessedItems = items
                            }
                            items = this._afterProcessItems(items, change);
                            change.items = items;
                            const oldItems = this._items.length === items.length && this._items;
                            this._applyChange(change);
                            const rowIndexDelta = this.getRowIndexDelta();
                            (0, _iterator.each)(this._items, (index, item) => {
                                var _a;
                                item.rowIndex = index - rowIndexDelta;
                                if (oldItems) {
                                    item.cells = null !== (_a = oldItems[index].cells) && void 0 !== _a ? _a : []
                                }
                                const newItem = items[index];
                                if (newItem) {
                                    item.loadIndex = newItem.loadIndex
                                }
                            });
                            this._rowIndexOffset = this.getRowIndexOffset()
                        } else {
                            this._items = []
                        }
                    };
                    _proto._handleChanging = function(e) {
                        const rows = this.getVisibleRows();
                        const dataSource = this.dataSource();
                        if (dataSource) {
                            e.changes.forEach(change => {
                                if ("insert" === change.type && change.index >= 0) {
                                    let dataIndex = 0;
                                    for (let i = 0; i < change.index; i++) {
                                        const row = rows[i];
                                        if (row && ("data" === row.rowType || "group" === row.rowType)) {
                                            dataIndex++
                                        }
                                    }
                                    change.index = dataIndex
                                }
                            })
                        }
                    };
                    _proto.updateItems = function(change, isDataChanged) {
                        var _a;
                        change = change || {};
                        const that = this;
                        if (void 0 !== that._repaintChangesOnly) {
                            change.repaintChangesOnly = null !== (_a = change.repaintChangesOnly) && void 0 !== _a ? _a : that._repaintChangesOnly;
                            change.needUpdateDimensions = change.needUpdateDimensions || that._needUpdateDimensions
                        } else if (change.changes) {
                            change.repaintChangesOnly = that.option("repaintChangesOnly")
                        } else if (isDataChanged) {
                            const operationTypes = that.dataSource().operationTypes();
                            change.repaintChangesOnly = operationTypes && !operationTypes.grouping && !operationTypes.filtering && that.option("repaintChangesOnly");
                            change.isDataChanged = true;
                            if (operationTypes && (operationTypes.reload || operationTypes.paging || operationTypes.groupExpanding)) {
                                change.needUpdateDimensions = true
                            }
                        }
                        if (that._updateLockCount && !change.cancel) {
                            that._changes.push(change);
                            return
                        }
                        that._updateItemsCore(change);
                        if (change.cancel) {
                            return
                        }
                        that._fireChanged(change)
                    };
                    _proto.loadingOperationTypes = function() {
                        const dataSource = this.dataSource();
                        return dataSource && dataSource.loadingOperationTypes() || {}
                    };
                    _proto._fireChanged = function(change) {
                        if (this._currentOperationTypes) {
                            change.operationTypes = this._currentOperationTypes;
                            this._currentOperationTypes = null
                        }(0, _common.deferRender)(() => {
                            this.changed.fire(change)
                        })
                    };
                    _proto.isLoading = function() {
                        return this._isLoading || this._isCustomLoading
                    };
                    _proto._fireLoadingChanged = function() {
                        this.loadingChanged.fire(this.isLoading(), this._loadingText)
                    };
                    _proto._calculateAdditionalFilter = function() {
                        return null
                    };
                    _proto._applyFilter = function() {
                        const dataSource = this._dataSource;
                        if (dataSource) {
                            dataSource.pageIndex(0);
                            this._isFilterApplying = true;
                            return this.reload().done(() => {
                                if (this._isFilterApplying) {
                                    this.pageChanged.fire()
                                }
                            })
                        }
                        return (new _deferred.Deferred).resolve()
                    };
                    _proto.resetFilterApplying = function() {
                        this._isFilterApplying = false
                    };
                    _proto.filter = function(filterExpr) {
                        const dataSource = this._dataSource;
                        const filter = dataSource && dataSource.filter();
                        if (0 === arguments.length) {
                            return filter
                        }
                        filterExpr = arguments.length > 1 ? Array.prototype.slice.call(arguments, 0) : filterExpr;
                        if (_m_utils.default.equalFilterParameters(filter, filterExpr)) {
                            return
                        }
                        if (dataSource) {
                            dataSource.filter(filterExpr)
                        }
                        this._applyFilter()
                    };
                    _proto.clearFilter = function(filterName) {
                        const that = this;
                        const columnsController = that._columnsController;
                        const clearColumnOption = function(optionName) {
                            const columnCount = columnsController.columnCount();
                            for (let index = 0; index < columnCount; index++) {
                                columnsController.columnOption(index, optionName, void 0)
                            }
                        };
                        that.component.beginUpdate();
                        if (arguments.length > 0) {
                            switch (filterName) {
                                case "dataSource":
                                    that.filter(null);
                                    break;
                                case "search":
                                    that.searchByText("");
                                    break;
                                case "header":
                                    clearColumnOption("filterValues");
                                    break;
                                case "row":
                                    clearColumnOption("filterValue")
                            }
                        } else {
                            that.filter(null);
                            that.searchByText("");
                            clearColumnOption("filterValue");
                            clearColumnOption("bufferedFilterValue");
                            clearColumnOption("filterValues")
                        }
                        that.component.endUpdate()
                    };
                    _proto._fireDataSourceChanged = function() {
                        const that = this;
                        const changedHandler = function() {
                            that.changed.remove(changedHandler);
                            that.dataSourceChanged.fire()
                        };
                        that.changed.add(changedHandler)
                    };
                    _proto._getDataSourceAdapter = function() {};
                    _proto._createDataSourceAdapterCore = function(dataSource, remoteOperations) {
                        const dataSourceAdapterProvider = this._getDataSourceAdapter();
                        const dataSourceAdapter = dataSourceAdapterProvider.create(this.component);
                        dataSourceAdapter.init(dataSource, remoteOperations);
                        return dataSourceAdapter
                    };
                    _proto.isLocalStore = function() {
                        let store = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.store();
                        return store instanceof _array_store.default
                    };
                    _proto.isCustomStore = function(store) {
                        store = store || this.store();
                        return store instanceof _custom_store.default
                    };
                    _proto._createDataSourceAdapter = function(dataSource) {
                        let remoteOperations = this.option("remoteOperations");
                        const store = dataSource.store();
                        const enabledRemoteOperations = {
                            filtering: true,
                            sorting: true,
                            paging: true,
                            grouping: true,
                            summary: true
                        };
                        if ((0, _type.isObject)(remoteOperations) && remoteOperations.groupPaging) {
                            remoteOperations = (0, _extend.extend)({}, enabledRemoteOperations, remoteOperations)
                        }
                        if ("auto" === remoteOperations) {
                            remoteOperations = this.isLocalStore(store) || this.isCustomStore(store) ? {} : {
                                filtering: true,
                                sorting: true,
                                paging: true
                            }
                        }
                        if (true === remoteOperations) {
                            remoteOperations = enabledRemoteOperations
                        }
                        return this._createDataSourceAdapterCore(dataSource, remoteOperations)
                    };
                    _proto.setDataSource = function(dataSource) {
                        const that = this;
                        const oldDataSource = that._dataSource;
                        if (!dataSource && oldDataSource) {
                            oldDataSource.cancelAll();
                            oldDataSource.changed.remove(that._dataChangedHandler);
                            oldDataSource.loadingChanged.remove(that._loadingChangedHandler);
                            oldDataSource.loadError.remove(that._loadErrorHandler);
                            oldDataSource.customizeStoreLoadOptions.remove(that._customizeStoreLoadOptionsHandler);
                            oldDataSource.changing.remove(that._changingHandler);
                            oldDataSource.pushed.remove(that._dataPushedHandler);
                            oldDataSource.dispose(that._isSharedDataSource)
                        }
                        if (dataSource) {
                            dataSource = that._createDataSourceAdapter(dataSource)
                        }
                        that._dataSource = dataSource;
                        if (dataSource) {
                            that._fireDataSourceChanged();
                            that._isLoading = !dataSource.isLoaded();
                            that._needApplyFilter = true;
                            that._isAllDataTypesDefined = that._columnsController.isAllDataTypesDefined();
                            dataSource.changed.add(that._dataChangedHandler);
                            dataSource.loadingChanged.add(that._loadingChangedHandler);
                            dataSource.loadError.add(that._loadErrorHandler);
                            dataSource.customizeStoreLoadOptions.add(that._customizeStoreLoadOptionsHandler);
                            dataSource.changing.add(that._changingHandler);
                            dataSource.pushed.add(that._dataPushedHandler)
                        }
                    };
                    _proto.items = function(byLoaded) {
                        return this._items
                    };
                    _proto.isEmpty = function() {
                        return !this.items().length
                    };
                    _proto.pageCount = function() {
                        return this._dataSource ? this._dataSource.pageCount() : 1
                    };
                    _proto.dataSource = function() {
                        return this._dataSource
                    };
                    _proto.store = function() {
                        const dataSource = this._dataSource;
                        return dataSource && dataSource.store()
                    };
                    _proto.loadAll = function(data) {
                        let skipFilter = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false;
                        const that = this;
                        const d = new _deferred.Deferred;
                        const dataSource = that._dataSource;
                        if (dataSource) {
                            if (data) {
                                const options = {
                                    data: data,
                                    isCustomLoading: true,
                                    storeLoadOptions: {
                                        isLoadingAll: true
                                    },
                                    loadOptions: {
                                        filter: skipFilter ? null : that.getCombinedFilter(),
                                        group: dataSource.group(),
                                        sort: dataSource.sort()
                                    }
                                };
                                dataSource._handleDataLoaded(options);
                                (0, _deferred.when)(options.data).done(data => {
                                    var _a;
                                    data = that._beforeProcessItems(data);
                                    d.resolve(that._processItems(data, {
                                        changeType: "loadingAll"
                                    }), null === (_a = options.extra) || void 0 === _a ? void 0 : _a.summary)
                                }).fail(d.reject)
                            } else if (!dataSource.isLoading()) {
                                const loadOptions = (0, _extend.extend)({}, dataSource.loadOptions(), {
                                    isLoadingAll: true,
                                    requireTotalCount: false
                                });
                                dataSource.load(loadOptions).done((items, extra) => {
                                    items = that._beforeProcessItems(items);
                                    items = that._processItems(items, {
                                        changeType: "loadingAll"
                                    });
                                    d.resolve(items, extra && extra.summary)
                                }).fail(d.reject)
                            } else {
                                d.reject()
                            }
                        } else {
                            d.resolve([])
                        }
                        return d
                    };
                    _proto.getKeyByRowIndex = function(rowIndex, byLoaded) {
                        const item = this.items(byLoaded)[rowIndex];
                        if (item) {
                            return item.key
                        }
                    };
                    _proto.getRowIndexByKey = function(key, byLoaded) {
                        return _m_utils.default.getIndexByKey(key, this.items(byLoaded))
                    };
                    _proto.keyOf = function(data) {
                        const store = this.store();
                        if (store) {
                            return store.keyOf(data)
                        }
                    };
                    _proto.byKey = function(key) {
                        const store = this.store();
                        const rowIndex = this.getRowIndexByKey(key);
                        let result;
                        if (!store) {
                            return
                        }
                        if (rowIndex >= 0) {
                            result = (new _deferred.Deferred).resolve(this.items()[rowIndex].data)
                        }
                        return result || store.byKey(key)
                    };
                    _proto.key = function() {
                        const store = this.store();
                        if (store) {
                            return store.key()
                        }
                    };
                    _proto.getRowIndexOffset = function(byLoadedRows) {
                        return 0
                    };
                    _proto.getDataByKeys = function(rowKeys) {
                        const that = this;
                        const result = new _deferred.Deferred;
                        const deferreds = [];
                        const data = [];
                        (0, _iterator.each)(rowKeys, (index, key) => {
                            deferreds.push(that.byKey(key).done(keyData => {
                                data[index] = keyData
                            }))
                        });
                        _deferred.when.apply(_renderer.default, deferreds).always(() => {
                            result.resolve(data)
                        });
                        return result
                    };
                    _proto.pageIndex = function(value) {
                        return changePaging(this, "pageIndex", value)
                    };
                    _proto.pageSize = function(value) {
                        return changePaging(this, "pageSize", value)
                    };
                    _proto.beginCustomLoading = function(messageText) {
                        this._isCustomLoading = true;
                        this._loadingText = messageText || "";
                        this._fireLoadingChanged()
                    };
                    _proto.endCustomLoading = function() {
                        this._isCustomLoading = false;
                        this._loadingText = void 0;
                        this._fireLoadingChanged()
                    };
                    _proto.refresh = function(options) {
                        if (true === options) {
                            options = {
                                reload: true,
                                changesOnly: true
                            }
                        } else if (!options) {
                            options = {
                                lookup: true,
                                selection: true,
                                reload: true
                            }
                        }
                        const that = this;
                        const dataSource = that.getDataSource();
                        const {
                            changesOnly: changesOnly
                        } = options;
                        const d = new _deferred.Deferred;
                        const customizeLoadResult = function() {
                            that._repaintChangesOnly = !!changesOnly
                        };
                        (0, _deferred.when)(!options.lookup || that._columnsController.refresh()).always(() => {
                            if (options.load || options.reload) {
                                dataSource && dataSource.on("customizeLoadResult", customizeLoadResult);
                                (0, _deferred.when)(that.reload(options.reload, changesOnly)).always(() => {
                                    dataSource && dataSource.off("customizeLoadResult", customizeLoadResult);
                                    that._repaintChangesOnly = void 0
                                }).done(d.resolve).fail(d.reject)
                            } else {
                                that.updateItems({
                                    repaintChangesOnly: options.changesOnly
                                });
                                d.resolve()
                            }
                        });
                        return d.promise()
                    };
                    _proto.getVisibleRows = function() {
                        return this.items()
                    };
                    _proto._disposeDataSource = function() {
                        if (this._dataSource && this._dataSource._eventsStrategy) {
                            this._dataSource._eventsStrategy.off("loadingChanged", this.readyWatcher)
                        }
                        this.setDataSource(null)
                    };
                    _proto.dispose = function() {
                        this._disposeDataSource();
                        _ControllerWithDataMi.prototype.dispose.call(this)
                    };
                    _proto.repaintRows = function(rowIndexes, changesOnly) {
                        rowIndexes = Array.isArray(rowIndexes) ? rowIndexes : [rowIndexes];
                        if (rowIndexes.length > 1 || (0, _type.isDefined)(rowIndexes[0])) {
                            this.updateItems({
                                changeType: "update",
                                rowIndices: rowIndexes,
                                isFullUpdate: !changesOnly
                            })
                        }
                    };
                    _proto.skipProcessingPagingChange = function(fullName) {
                        return this._skipProcessingPagingChange && ("paging.pageIndex" === fullName || "paging.pageSize" === fullName)
                    };
                    _proto.getUserState = function() {
                        return {
                            searchText: this.option("searchPanel.text"),
                            pageIndex: this.pageIndex(),
                            pageSize: this.pageSize()
                        }
                    };
                    _proto.getCachedStoreData = function() {
                        return this._dataSource && this._dataSource.getCachedStoreData()
                    };
                    _proto.isLastPageLoaded = function() {
                        const pageIndex = this.pageIndex();
                        const pageCount = this.pageCount();
                        return pageIndex === pageCount - 1
                    };
                    _proto.load = function() {
                        var _a;
                        return null === (_a = this._dataSource) || void 0 === _a ? void 0 : _a.load()
                    };
                    _proto.reload = function(_reload, changesOnly) {
                        var _a;
                        return null === (_a = this._dataSource) || void 0 === _a ? void 0 : _a.reload(_reload, changesOnly)
                    };
                    _proto.push = function() {
                        var _a;
                        return null === (_a = this._dataSource) || void 0 === _a ? void 0 : _a.push(...arguments)
                    };
                    _proto.itemsCount = function() {
                        var _a;
                        return this._dataSource ? null === (_a = this._dataSource) || void 0 === _a ? void 0 : _a.itemsCount() : 0
                    };
                    _proto.totalItemsCount = function() {
                        var _a;
                        return this._dataSource ? null === (_a = this._dataSource) || void 0 === _a ? void 0 : _a.totalItemsCount() : 0
                    };
                    _proto.hasKnownLastPage = function() {
                        var _a;
                        return this._dataSource ? null === (_a = this._dataSource) || void 0 === _a ? void 0 : _a.hasKnownLastPage() : true
                    };
                    _proto.isLoaded = function() {
                        var _a;
                        return this._dataSource ? null === (_a = this._dataSource) || void 0 === _a ? void 0 : _a.isLoaded() : true
                    };
                    _proto.totalCount = function() {
                        var _a;
                        return this._dataSource ? null === (_a = this._dataSource) || void 0 === _a ? void 0 : _a.totalCount() : 0
                    };
                    return DataController
                }(ControllerWithDataMixin);
                exports.DataController = DataController;
                const dataControllerModule = {
                    defaultOptions: () => ({
                        loadingTimeout: 0,
                        dataSource: null,
                        cacheEnabled: true,
                        repaintChangesOnly: false,
                        highlightChanges: false,
                        onDataErrorOccurred: null,
                        remoteOperations: "auto",
                        paging: {
                            enabled: true,
                            pageSize: void 0,
                            pageIndex: void 0
                        }
                    }),
                    controllers: {
                        data: DataController
                    }
                };
                exports.dataControllerModule = dataControllerModule
            },
        30945:
            /*!*********************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/data_source_adapter/m_data_source_adapter.js ***!
              \*********************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/callbacks */ 44504));
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _array_store = _interopRequireDefault(__webpack_require__( /*! ../../../../data/array_store */ 26562));
                var _array_utils = __webpack_require__( /*! ../../../../data/array_utils */ 60637);
                var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 15943));
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 60082));

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                var _default = _m_modules.default.Controller.inherit(function() {
                    function cloneItems(items, groupCount) {
                        if (items) {
                            items = items.slice(0);
                            if (groupCount) {
                                for (let i = 0; i < items.length; i++) {
                                    items[i] = (0, _extend.extend)({
                                        key: items[i].key
                                    }, items[i]);
                                    items[i].items = cloneItems(items[i].items, groupCount - 1)
                                }
                            }
                        }
                        return items
                    }

                    function calculateOperationTypes(loadOptions, lastLoadOptions, isFullReload) {
                        let operationTypes = {
                            reload: true,
                            fullReload: true
                        };
                        if (lastLoadOptions) {
                            operationTypes = {
                                sorting: !_m_utils.default.equalSortParameters(loadOptions.sort, lastLoadOptions.sort),
                                grouping: !_m_utils.default.equalSortParameters(loadOptions.group, lastLoadOptions.group, true),
                                groupExpanding: !_m_utils.default.equalSortParameters(loadOptions.group, lastLoadOptions.group) || lastLoadOptions.groupExpand,
                                filtering: !_m_utils.default.equalFilterParameters(loadOptions.filter, lastLoadOptions.filter),
                                pageIndex: loadOptions.pageIndex !== lastLoadOptions.pageIndex,
                                skip: loadOptions.skip !== lastLoadOptions.skip,
                                take: loadOptions.take !== lastLoadOptions.take,
                                pageSize: loadOptions.pageSize !== lastLoadOptions.pageSize,
                                fullReload: isFullReload,
                                reload: false,
                                paging: false
                            };
                            operationTypes.reload = isFullReload || operationTypes.sorting || operationTypes.grouping || operationTypes.filtering;
                            operationTypes.paging = operationTypes.pageIndex || operationTypes.pageSize || operationTypes.take
                        }
                        return operationTypes
                    }

                    function getPageDataFromCache(options, updatePaging) {
                        const groupCount = _m_utils.default.normalizeSortingInfo(options.group || options.storeLoadOptions.group || options.loadOptions.group).length;
                        const items = [];
                        if (fillItemsFromCache(items, options, groupCount)) {
                            return items
                        }
                        if (updatePaging) {
                            ! function(cacheItemsFromBegin, options, groupCount) {
                                var _a, _b;
                                const cacheItemBeginCount = cacheItemsFromBegin.length;
                                const {
                                    storeLoadOptions: storeLoadOptions
                                } = options;
                                if (void 0 !== storeLoadOptions.skip && storeLoadOptions.take && !groupCount) {
                                    const cacheItemsFromEnd = [];
                                    fillItemsFromCache(cacheItemsFromEnd, options, groupCount, true);
                                    const cacheItemEndCount = cacheItemsFromEnd.length;
                                    if (cacheItemBeginCount || cacheItemEndCount) {
                                        options.skip = null !== (_a = options.skip) && void 0 !== _a ? _a : storeLoadOptions.skip;
                                        options.take = null !== (_b = options.take) && void 0 !== _b ? _b : storeLoadOptions.take
                                    }
                                    if (cacheItemBeginCount) {
                                        storeLoadOptions.skip += cacheItemBeginCount;
                                        storeLoadOptions.take -= cacheItemBeginCount;
                                        options.cachedDataPartBegin = cacheItemsFromBegin
                                    }
                                    if (cacheItemEndCount) {
                                        storeLoadOptions.take -= cacheItemEndCount;
                                        options.cachedDataPartEnd = cacheItemsFromEnd.reverse()
                                    }
                                }
                            }(items, options, groupCount)
                        }
                    }

                    function fillItemsFromCache(items, options, groupCount, fromEnd) {
                        var _a, _b, _c, _d, _e;
                        const {
                            storeLoadOptions: storeLoadOptions
                        } = options;
                        const take = null !== (_b = null !== (_a = options.take) && void 0 !== _a ? _a : storeLoadOptions.take) && void 0 !== _b ? _b : 0;
                        const cachedItems = null === (_c = options.cachedData) || void 0 === _c ? void 0 : _c.items;
                        if (take && cachedItems) {
                            const skip = null !== (_e = null !== (_d = options.skip) && void 0 !== _d ? _d : storeLoadOptions.skip) && void 0 !== _e ? _e : 0;
                            for (let i = 0; i < take; i++) {
                                const localIndex = fromEnd ? take - 1 - i : i;
                                const cacheItemIndex = localIndex + skip;
                                const cacheItem = cachedItems[cacheItemIndex];
                                if (void 0 === cacheItem && cacheItemIndex in cachedItems) {
                                    return true
                                }
                                const item = getItemFromCache(options, cacheItem, groupCount, localIndex, take);
                                if (item) {
                                    items.push(item)
                                } else {
                                    return false
                                }
                            }
                            return true
                        }
                        return false
                    }

                    function getItemFromCache(options, cacheItem, groupCount, index, take) {
                        if (groupCount && cacheItem) {
                            const skips = 0 === index && options.skips || [];
                            const takes = index === take - 1 && options.takes || [];
                            return function getGroupItemFromCache(cacheItem, groupCount, skips, takes) {
                                if (groupCount && cacheItem) {
                                    const result = _extends({}, cacheItem);
                                    const skip = skips[0] || 0;
                                    const take = takes[0];
                                    const {
                                        items: items
                                    } = cacheItem;
                                    if (items) {
                                        if (void 0 === take && !items[skip]) {
                                            return
                                        }
                                        result.items = [];
                                        if (skips.length) {
                                            result.isContinuation = true
                                        }
                                        if (take) {
                                            result.isContinuationOnNextPage = cacheItem.count > take
                                        }
                                        for (let i = 0; void 0 === take ? items[i + skip] : i < take; i++) {
                                            const childCacheItem = items[i + skip];
                                            const isLast = i + 1 === take;
                                            const item = getGroupItemFromCache(childCacheItem, groupCount - 1, 0 === i ? skips.slice(1) : [], isLast ? takes.slice(1) : []);
                                            if (void 0 !== item) {
                                                result.items.push(item)
                                            } else {
                                                return
                                            }
                                        }
                                    }
                                    return result
                                }
                                return cacheItem
                            }(cacheItem, groupCount, skips, takes)
                        }
                        return cacheItem
                    }

                    function getCacheItem(cacheItem, loadedItem, groupCount, skips) {
                        if (groupCount && loadedItem) {
                            const result = _extends({}, loadedItem);
                            delete result.isContinuation;
                            delete result.isContinuationOnNextPage;
                            const skip = skips[0] || 0;
                            if (loadedItem.items) {
                                result.items = (null === cacheItem || void 0 === cacheItem ? void 0 : cacheItem.items) || {};
                                loadedItem.items.forEach((item, index) => {
                                    const globalIndex = index + skip;
                                    const childSkips = 0 === index ? skips.slice(1) : [];
                                    result.items[globalIndex] = getCacheItem(result.items[globalIndex], item, groupCount - 1, childSkips)
                                })
                            }
                            return result
                        }
                        return loadedItem
                    }
                    const members = {
                        init(dataSource, remoteOperations) {
                            const that = this;
                            that._dataSource = dataSource;
                            that._remoteOperations = remoteOperations || {};
                            that._isLastPage = !dataSource.isLastPage();
                            that._hasLastPage = false;
                            that._currentTotalCount = 0;
                            that._cachedData = {
                                items: {}
                            };
                            that._lastOperationTypes = {};
                            that._eventsStrategy = dataSource._eventsStrategy;
                            that._totalCountCorrection = 0;
                            that._isLoadingAll = false;
                            that.changed = (0, _callbacks.default)();
                            that.loadingChanged = (0, _callbacks.default)();
                            that.loadError = (0, _callbacks.default)();
                            that.customizeStoreLoadOptions = (0, _callbacks.default)();
                            that.changing = (0, _callbacks.default)();
                            that.pushed = (0, _callbacks.default)();
                            that._dataChangedHandler = that._handleDataChanged.bind(that);
                            that._customizeStoreLoadOptionsHandler = that._handleCustomizeStoreLoadOptions.bind(that);
                            that._dataLoadedHandler = that._handleDataLoaded.bind(that);
                            that._loadingChangedHandler = that._handleLoadingChanged.bind(that);
                            that._loadErrorHandler = that._handleLoadError.bind(that);
                            that._pushHandler = that._handlePush.bind(that);
                            that._changingHandler = that._handleChanging.bind(that);
                            dataSource.on("changed", that._dataChangedHandler);
                            dataSource.on("customizeStoreLoadOptions", that._customizeStoreLoadOptionsHandler);
                            dataSource.on("customizeLoadResult", that._dataLoadedHandler);
                            dataSource.on("loadingChanged", that._loadingChangedHandler);
                            dataSource.on("loadError", that._loadErrorHandler);
                            dataSource.on("changing", that._changingHandler);
                            dataSource.store().on("beforePush", that._pushHandler);
                            (0, _iterator.each)(dataSource, (memberName, member) => {
                                if (!that[memberName] && (0, _type.isFunction)(member)) {
                                    that[memberName] = function() {
                                        return this._dataSource[memberName].apply(this._dataSource, arguments)
                                    }
                                }
                            })
                        },
                        remoteOperations() {
                            return this._remoteOperations
                        },
                        dispose(isSharedDataSource) {
                            const dataSource = this._dataSource;
                            const store = dataSource.store();
                            dataSource.off("changed", this._dataChangedHandler);
                            dataSource.off("customizeStoreLoadOptions", this._customizeStoreLoadOptionsHandler);
                            dataSource.off("customizeLoadResult", this._dataLoadedHandler);
                            dataSource.off("loadingChanged", this._loadingChangedHandler);
                            dataSource.off("loadError", this._loadErrorHandler);
                            dataSource.off("changing", this._changingHandler);
                            store && store.off("beforePush", this._pushHandler);
                            if (!isSharedDataSource) {
                                dataSource.dispose()
                            }
                        },
                        refresh(options, operationTypes) {
                            const that = this;
                            const dataSource = that._dataSource;
                            if (operationTypes.reload) {
                                that.resetCurrentTotalCount();
                                that._isLastPage = !dataSource.paginate();
                                that._hasLastPage = that._isLastPage
                            }
                        },
                        resetCurrentTotalCount() {
                            this._currentTotalCount = 0;
                            this._totalCountCorrection = 0
                        },
                        resetCache() {
                            this._cachedStoreData = void 0;
                            this._cachedPagingData = void 0
                        },
                        resetPagesCache() {
                            this._cachedData = {
                                items: {}
                            }
                        },
                        _needClearStoreDataCache() {
                            const remoteOperations = this.remoteOperations();
                            const operationTypes = calculateOperationTypes(this._lastLoadOptions || {}, {});
                            const isLocalOperations = Object.keys(remoteOperations).every(operationName => !operationTypes[operationName] || !remoteOperations[operationName]);
                            return !isLocalOperations
                        },
                        push(changes, fromStore) {
                            const store = this.store();
                            if (this._needClearStoreDataCache()) {
                                this._cachedStoreData = void 0
                            }
                            this._cachedPagingData = void 0;
                            this.resetPagesCache(true);
                            if (this._cachedStoreData) {
                                (0, _array_utils.applyBatch)({
                                    keyInfo: store,
                                    data: this._cachedStoreData,
                                    changes: changes
                                })
                            }
                            if (!fromStore) {
                                this._applyBatch(changes)
                            }
                            this.pushed.fire(changes)
                        },
                        getDataIndexGetter() {
                            if (!this._dataIndexGetter) {
                                let indexByKey;
                                let storeData;
                                const store = this.store();
                                this._dataIndexGetter = data => {
                                    const isCacheUpdated = storeData && storeData !== this._cachedStoreData;
                                    if (!indexByKey || isCacheUpdated) {
                                        storeData = this._cachedStoreData || [];
                                        indexByKey = {};
                                        for (let i = 0; i < storeData.length; i++) {
                                            indexByKey[(0, _common.getKeyHash)(store.keyOf(storeData[i]))] = i
                                        }
                                    }
                                    return indexByKey[(0, _common.getKeyHash)(store.keyOf(data))]
                                }
                            }
                            return this._dataIndexGetter
                        },
                        _getKeyInfo() {
                            return this.store()
                        },
                        _needToCopyDataObject: () => true,
                        _applyBatch(changes, fromStore) {
                            const keyInfo = this._getKeyInfo();
                            const dataSource = this._dataSource;
                            const groupCount = _m_utils.default.normalizeSortingInfo(this.group()).length;
                            const isReshapeMode = "reshape" === this.option("editing.refreshMode");
                            const isVirtualMode = "virtual" === this.option("scrolling.mode");
                            changes = changes.filter(change => !dataSource.paginate() || "insert" !== change.type || void 0 !== change.index);
                            const getItemCount = () => groupCount ? this.itemsCount() : this.items().length;
                            const oldItemCount = getItemCount();
                            (0, _array_utils.applyBatch)({
                                keyInfo: keyInfo,
                                data: this._items,
                                changes: changes,
                                groupCount: groupCount,
                                useInsertIndex: true,
                                skipCopying: !this._needToCopyDataObject()
                            });
                            (0, _array_utils.applyBatch)({
                                keyInfo: keyInfo,
                                data: dataSource.items(),
                                changes: changes,
                                groupCount: groupCount,
                                useInsertIndex: true,
                                skipCopying: !this._needToCopyDataObject()
                            });
                            const needUpdateTotalCountCorrection = this._currentTotalCount > 0 || (fromStore || !isReshapeMode) && isVirtualMode;
                            if (needUpdateTotalCountCorrection) {
                                this._totalCountCorrection += getItemCount() - oldItemCount
                            }
                            changes.splice(0, changes.length)
                        },
                        _handlePush(_ref) {
                            let {
                                changes: changes
                            } = _ref;
                            this.push(changes, true)
                        },
                        _handleChanging(e) {
                            this.changing.fire(e);
                            this._applyBatch(e.changes, true)
                        },
                        _needCleanCacheByOperation(operationType, remoteOperations) {
                            const operationTypesByOrder = ["filtering", "sorting", "paging"];
                            const operationTypeIndex = operationTypesByOrder.indexOf(operationType);
                            const currentOperationTypes = operationTypeIndex >= 0 ? operationTypesByOrder.slice(operationTypeIndex) : [operationType];
                            return currentOperationTypes.some(operationType => remoteOperations[operationType])
                        },
                        _customizeRemoteOperations(options, operationTypes) {
                            let cachedStoreData = this._cachedStoreData;
                            let cachedPagingData = this._cachedPagingData;
                            let cachedData = this._cachedData;
                            if (options.storeLoadOptions.filter && !options.remoteOperations.filtering || options.storeLoadOptions.sort && !options.remoteOperations.sorting) {
                                options.remoteOperations = {
                                    filtering: options.remoteOperations.filtering,
                                    summary: options.remoteOperations.summary
                                }
                            }
                            if (operationTypes.fullReload) {
                                cachedStoreData = void 0;
                                cachedPagingData = void 0;
                                cachedData = {
                                    items: {}
                                }
                            } else {
                                if (operationTypes.reload) {
                                    cachedPagingData = void 0;
                                    cachedData = {
                                        items: {}
                                    }
                                } else if (operationTypes.groupExpanding) {
                                    cachedData = {
                                        items: {}
                                    }
                                }(0, _iterator.each)(operationTypes, (operationType, value) => {
                                    if (value && this._needCleanCacheByOperation(operationType, options.remoteOperations)) {
                                        cachedStoreData = void 0;
                                        cachedPagingData = void 0
                                    }
                                })
                            }
                            if (cachedPagingData) {
                                options.remoteOperations.paging = false
                            }
                            options.cachedStoreData = cachedStoreData;
                            options.cachedPagingData = cachedPagingData;
                            options.cachedData = cachedData;
                            if (!options.isCustomLoading) {
                                this._cachedStoreData = cachedStoreData;
                                this._cachedPagingData = cachedPagingData;
                                this._cachedData = cachedData
                            }
                        },
                        _handleCustomizeStoreLoadOptions(options) {
                            var _a;
                            this._handleDataLoading(options);
                            if (!(0 === (null === (_a = options.data) || void 0 === _a ? void 0 : _a.length))) {
                                options.data = getPageDataFromCache(options, true) || options.cachedStoreData
                            }
                        },
                        _handleDataLoading(options) {
                            const dataSource = this._dataSource;
                            const lastLoadOptions = this._lastLoadOptions;
                            this.customizeStoreLoadOptions.fire(options);
                            options.delay = this.option("loadingTimeout");
                            options.originalStoreLoadOptions = options.storeLoadOptions;
                            options.remoteOperations = (0, _extend.extend)({}, this.remoteOperations());
                            const isFullReload = !this.isLoaded() && !this._isRefreshing;
                            if (this.option("integrationOptions.renderedOnServer") && !this.isLoaded()) {
                                options.delay = void 0
                            }
                            const loadOptions = (0, _extend.extend)({
                                pageIndex: this.pageIndex(),
                                pageSize: this.pageSize()
                            }, options.storeLoadOptions);
                            const operationTypes = calculateOperationTypes(loadOptions, lastLoadOptions, isFullReload);
                            this._customizeRemoteOperations(options, operationTypes);
                            if (!options.isCustomLoading) {
                                const isRefreshing = this._isRefreshing;
                                options.pageIndex = dataSource.pageIndex();
                                options.lastLoadOptions = loadOptions;
                                options.operationTypes = operationTypes;
                                this._loadingOperationTypes = operationTypes;
                                this._isRefreshing = true;
                                (0, _deferred.when)(isRefreshing || this._isRefreshed || this.refresh(options, operationTypes)).done(() => {
                                    if (this._lastOperationId === options.operationId) {
                                        this._isRefreshed = true;
                                        this.load().always(() => {
                                            this._isRefreshed = false
                                        })
                                    }
                                }).fail(() => {
                                    dataSource.cancel(options.operationId)
                                }).always(() => {
                                    this._isRefreshing = false
                                });
                                dataSource.cancel(this._lastOperationId);
                                this._lastOperationId = options.operationId;
                                if (this._isRefreshing) {
                                    dataSource.cancel(this._lastOperationId)
                                }
                            }
                            this._handleDataLoadingCore(options)
                        },
                        _handleDataLoadingCore(options) {
                            const {
                                remoteOperations: remoteOperations
                            } = options;
                            options.loadOptions = {};
                            const cachedExtra = options.cachedData.extra;
                            const localLoadOptionNames = {
                                filter: !remoteOperations.filtering,
                                sort: !remoteOperations.sorting,
                                group: !remoteOperations.grouping,
                                summary: !remoteOperations.summary,
                                skip: !remoteOperations.paging,
                                take: !remoteOperations.paging,
                                requireTotalCount: cachedExtra && "totalCount" in cachedExtra || !remoteOperations.paging,
                                langParams: !remoteOperations.filtering || !remoteOperations.sorting
                            };
                            (0, _iterator.each)(options.storeLoadOptions, (optionName, optionValue) => {
                                if (localLoadOptionNames[optionName]) {
                                    options.loadOptions[optionName] = optionValue;
                                    delete options.storeLoadOptions[optionName]
                                }
                            });
                            if (cachedExtra) {
                                options.extra = cachedExtra
                            }
                        },
                        _handleDataLoaded(options) {
                            var _a, _b;
                            const {
                                loadOptions: loadOptions
                            } = options;
                            const localPaging = options.remoteOperations && !options.remoteOperations.paging;
                            const {
                                cachedData: cachedData
                            } = options;
                            const {
                                storeLoadOptions: storeLoadOptions
                            } = options;
                            const needCache = false !== this.option("cacheEnabled") && storeLoadOptions;
                            const needPageCache = needCache && !options.isCustomLoading && cachedData && (!localPaging || storeLoadOptions.group);
                            const needPagingCache = needCache && localPaging;
                            const needStoreCache = needPagingCache && !options.isCustomLoading;
                            if (!loadOptions) {
                                this._dataSource.cancel(options.operationId);
                                return
                            }
                            if (localPaging) {
                                options.skip = loadOptions.skip;
                                options.take = loadOptions.take;
                                delete loadOptions.skip;
                                delete loadOptions.take
                            }
                            if (loadOptions.group) {
                                loadOptions.group = options.group || loadOptions.group
                            }
                            const groupCount = _m_utils.default.normalizeSortingInfo(options.group || storeLoadOptions.group || loadOptions.group).length;
                            if (options.cachedDataPartBegin) {
                                options.data = options.cachedDataPartBegin.concat(options.data)
                            }
                            if (options.cachedDataPartEnd) {
                                options.data = options.data.concat(options.cachedDataPartEnd)
                            }
                            if (!needPageCache || !getPageDataFromCache(options)) {
                                if (needPagingCache && options.cachedPagingData) {
                                    options.data = cloneItems(options.cachedPagingData, groupCount)
                                } else {
                                    if (needStoreCache) {
                                        if (!this._cachedStoreData) {
                                            this._cachedStoreData = cloneItems(options.data, _m_utils.default.normalizeSortingInfo(storeLoadOptions.group).length)
                                        } else if (options.mergeStoreLoadData) {
                                            options.data = this._cachedStoreData = this._cachedStoreData.concat(options.data)
                                        }
                                    }
                                    new _array_store.default(options.data).load(loadOptions).done(data => {
                                        options.data = data;
                                        if (needStoreCache) {
                                            this._cachedPagingData = cloneItems(options.data, groupCount)
                                        }
                                    }).fail(error => {
                                        options.data = (new _deferred.Deferred).reject(error)
                                    })
                                }
                                if (loadOptions.requireTotalCount && localPaging) {
                                    options.extra = (0, _type.isPlainObject)(options.extra) ? options.extra : {};
                                    options.extra.totalCount = options.data.length
                                }
                                if (options.extra && options.extra.totalCount >= 0 && (false === storeLoadOptions.requireTotalCount || false === loadOptions.requireTotalCount)) {
                                    options.extra.totalCount = -1
                                }
                                if (!loadOptions.data && (storeLoadOptions.requireTotalCount || (null !== (_b = null === (_a = options.extra) || void 0 === _a ? void 0 : _a.totalCount) && void 0 !== _b ? _b : -1) >= 0)) {
                                    this._totalCountCorrection = 0
                                }
                                this._handleDataLoadedCore(options);
                                if (needPageCache) {
                                    cachedData.extra = cachedData.extra || (0, _extend.extend)({}, options.extra);
                                    (0, _deferred.when)(options.data).done(data => {
                                        ! function(options, data, groupCount) {
                                            var _a, _b, _c, _d;
                                            const {
                                                storeLoadOptions: storeLoadOptions
                                            } = options;
                                            const skip = null !== (_b = null !== (_a = options.skip) && void 0 !== _a ? _a : storeLoadOptions.skip) && void 0 !== _b ? _b : 0;
                                            const take = null !== (_d = null !== (_c = options.take) && void 0 !== _c ? _c : storeLoadOptions.take) && void 0 !== _d ? _d : 0;
                                            for (let i = 0; i < take; i++) {
                                                const globalIndex = i + skip;
                                                const cacheItems = options.cachedData.items;
                                                const skips = 0 === i && options.skips || [];
                                                cacheItems[globalIndex] = getCacheItem(cacheItems[globalIndex], data[i], groupCount, skips)
                                            }
                                        }(options, data, groupCount)
                                    })
                                }
                            }(0, _deferred.when)(options.data).done(() => {
                                if (options.lastLoadOptions) {
                                    this._lastLoadOptions = options.lastLoadOptions;
                                    Object.keys(options.operationTypes).forEach(operationType => {
                                        this._lastOperationTypes[operationType] = this._lastOperationTypes[operationType] || options.operationTypes[operationType]
                                    })
                                }
                            });
                            options.storeLoadOptions = options.originalStoreLoadOptions
                        },
                        _handleDataLoadedCore(options) {
                            if (options.remoteOperations && !options.remoteOperations.paging && Array.isArray(options.data)) {
                                if (void 0 !== options.skip) {
                                    options.data = options.data.slice(options.skip)
                                }
                                if (void 0 !== options.take) {
                                    options.data = options.data.slice(0, options.take)
                                }
                            }
                        },
                        _handleLoadingChanged(isLoading) {
                            this.loadingChanged.fire(isLoading)
                        },
                        _handleLoadError(error) {
                            this.loadError.fire(error);
                            this.changed.fire({
                                changeType: "loadError",
                                error: error
                            })
                        },
                        _loadPageSize() {
                            return this.pageSize()
                        },
                        _handleDataChanged(args) {
                            let currentTotalCount;
                            const dataSource = this._dataSource;
                            let isLoading = false;
                            const isDataLoading = !args || (0, _type.isDefined)(args.changeType);
                            const itemsCount = this.itemsCount();
                            if (isDataLoading) {
                                this._isLastPage = !itemsCount || !this._loadPageSize() || itemsCount < this._loadPageSize();
                                if (this._isLastPage) {
                                    this._hasLastPage = true
                                }
                            }
                            if (dataSource.totalCount() >= 0) {
                                if (dataSource.pageIndex() >= this.pageCount()) {
                                    dataSource.pageIndex(this.pageCount() - 1);
                                    this.pageIndex(dataSource.pageIndex());
                                    this.resetPagesCache();
                                    dataSource.load();
                                    isLoading = true
                                }
                            } else if (isDataLoading) {
                                currentTotalCount = dataSource.pageIndex() * this.pageSize() + itemsCount;
                                if (currentTotalCount > this._currentTotalCount) {
                                    this._currentTotalCount = currentTotalCount;
                                    if (0 === dataSource.pageIndex() || !this.option("scrolling.legacyMode")) {
                                        this._totalCountCorrection = 0
                                    }
                                }
                                if (0 === itemsCount && dataSource.pageIndex() >= this.pageCount()) {
                                    dataSource.pageIndex(this.pageCount() - 1);
                                    if ("infinite" !== this.option("scrolling.mode")) {
                                        dataSource.load();
                                        isLoading = true
                                    }
                                }
                            }
                            if (!isLoading) {
                                this._operationTypes = this._lastOperationTypes;
                                this._lastOperationTypes = {};
                                this.component._optionCache = {};
                                this.changed.fire(args);
                                this.component._optionCache = void 0
                            }
                        },
                        _scheduleCustomLoadCallbacks(deferred) {
                            const that = this;
                            that._isCustomLoading = true;
                            deferred.always(() => {
                                that._isCustomLoading = false
                            })
                        },
                        loadingOperationTypes() {
                            return this._loadingOperationTypes
                        },
                        operationTypes() {
                            return this._operationTypes
                        },
                        lastLoadOptions() {
                            return this._lastLoadOptions || {}
                        },
                        isLastPage() {
                            return this._isLastPage
                        },
                        _dataSourceTotalCount() {
                            return this._dataSource.totalCount()
                        },
                        totalCount() {
                            return parseInt((this._currentTotalCount || this._dataSourceTotalCount()) + this._totalCountCorrection)
                        },
                        totalCountCorrection() {
                            return this._totalCountCorrection
                        },
                        itemsCount() {
                            return this._dataSource.items().length
                        },
                        totalItemsCount() {
                            return this.totalCount()
                        },
                        pageSize() {
                            const dataSource = this._dataSource;
                            if (!arguments.length && !dataSource.paginate()) {
                                return 0
                            }
                            return dataSource.pageSize.apply(dataSource, arguments)
                        },
                        pageCount() {
                            const count = this.totalItemsCount() - this._totalCountCorrection;
                            const pageSize = this.pageSize();
                            if (pageSize && count > 0) {
                                return Math.max(1, Math.ceil(count / pageSize))
                            }
                            return 1
                        },
                        hasKnownLastPage() {
                            return this._hasLastPage || this._dataSource.totalCount() >= 0
                        },
                        loadFromStore(loadOptions, store) {
                            const dataSource = this._dataSource;
                            const d = new _deferred.Deferred;
                            if (!dataSource) {
                                return
                            }
                            store = store || dataSource.store();
                            store.load(loadOptions).done((data, extra) => {
                                if (data && !Array.isArray(data) && Array.isArray(data.data)) {
                                    extra = data;
                                    data = data.data
                                }
                                d.resolve(data, extra)
                            }).fail(d.reject);
                            return d
                        },
                        isCustomLoading() {
                            return !!this._isCustomLoading
                        },
                        load(options) {
                            const that = this;
                            const dataSource = that._dataSource;
                            const d = new _deferred.Deferred;
                            if (options) {
                                const store = dataSource.store();
                                const dataSourceLoadOptions = dataSource.loadOptions();
                                const loadResult = {
                                    storeLoadOptions: (0, _extend.extend)({}, options, {
                                        langParams: null === dataSourceLoadOptions || void 0 === dataSourceLoadOptions ? void 0 : dataSourceLoadOptions.langParams
                                    }),
                                    isCustomLoading: true
                                };
                                (0, _iterator.each)(store._customLoadOptions() || [], (_, optionName) => {
                                    if (!(optionName in loadResult.storeLoadOptions)) {
                                        loadResult.storeLoadOptions[optionName] = dataSourceLoadOptions[optionName]
                                    }
                                });
                                this._isLoadingAll = options.isLoadingAll;
                                that._scheduleCustomLoadCallbacks(d);
                                dataSource._scheduleLoadCallbacks(d);
                                that._handleCustomizeStoreLoadOptions(loadResult);
                                ! function(action, timeout) {
                                    if ((0, _type.isDefined)(timeout)) {
                                        (0, _common.executeAsync)(action, timeout)
                                    } else {
                                        action()
                                    }
                                }(() => {
                                    if (!dataSource.store()) {
                                        return d.reject("canceled")
                                    }(0, _deferred.when)(loadResult.data || that.loadFromStore(loadResult.storeLoadOptions)).done((data, extra) => {
                                        loadResult.data = data;
                                        loadResult.extra = extra || {};
                                        that._handleDataLoaded(loadResult);
                                        if (options.requireTotalCount && void 0 === loadResult.extra.totalCount) {
                                            loadResult.extra.totalCount = store.totalCount(loadResult.storeLoadOptions)
                                        }(0, _deferred.when)(loadResult.data, loadResult.extra.totalCount).done((data, totalCount) => {
                                            loadResult.extra.totalCount = totalCount;
                                            d.resolve(data, loadResult.extra)
                                        }).fail(d.reject)
                                    }).fail(d.reject)
                                }, that.option("loadingTimeout"));
                                return d.fail((function() {
                                    that._eventsStrategy.fireEvent("loadError", arguments)
                                })).always(() => {
                                    this._isLoadingAll = false
                                }).promise()
                            }
                            return dataSource.load()
                        },
                        reload(full) {
                            return full ? this._dataSource.reload() : this._dataSource.load()
                        },
                        getCachedStoreData() {
                            return this._cachedStoreData
                        }
                    };
                    return members
                }());
                exports.default = _default
            },
        72313:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/editing/const.js ***!
              \*****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.VIEWPORT_TOP_NEW_ROW_POSITION = exports.VIEWPORT_BOTTOM_NEW_ROW_POSITION = exports.TARGET_COMPONENT_NAME = exports.ROW_SELECTED_CLASS = exports.ROW_SELECTED = exports.ROW_REMOVED = exports.ROW_MODIFIED = exports.ROW_INSERTED = exports.ROW_CLASS = exports.ROW_BASED_MODES = exports.REQUIRED_EDITOR_LABELLEDBY_MODES = exports.READONLY_CLASS = exports.PAGE_TOP_NEW_ROW_POSITION = exports.PAGE_BOTTOM_NEW_ROW_POSITION = exports.MODES_WITH_DELAYED_FOCUS = exports.METHOD_NAMES = exports.LINK_ICON_CLASS = exports.LINK_CLASS = exports.LAST_NEW_ROW_POSITION = exports.INSERT_INDEX = exports.FORM_BUTTONS_CONTAINER_CLASS = exports.FOCUS_OVERLAY_CLASS = exports.FOCUSABLE_ELEMENT_SELECTOR = exports.FOCUSABLE_ELEMENT_CLASS = exports.FIRST_NEW_ROW_POSITION = exports.EDIT_ROW = exports.EDIT_POPUP_FORM_CLASS = exports.EDIT_POPUP_CLASS = exports.EDIT_MODE_ROW = exports.EDIT_MODE_POPUP = exports.EDIT_MODE_FORM = exports.EDIT_MODE_CELL = exports.EDIT_MODE_BATCH = exports.EDIT_MODES = exports.EDIT_LINK_CLASS = exports.EDIT_ICON_CLASS = exports.EDIT_FORM_ITEM_CLASS = exports.EDIT_FORM_CLASS = exports.EDIT_BUTTON_CLASS = exports.EDITOR_CELL_CLASS = exports.EDITORS_INPUT_SELECTOR = exports.EDITING_POPUP_OPTION_NAME = exports.EDITING_NAMESPACE = exports.EDITING_FORM_OPTION_NAME = exports.EDITING_EDITROWKEY_OPTION_NAME = exports.EDITING_EDITCOLUMNNAME_OPTION_NAME = exports.EDITING_CHANGES_OPTION_NAME = exports.DROPDOWN_EDITOR_OVERLAY_CLASS = exports.DEFAULT_START_EDIT_ACTION = exports.DATA_ROW_CLASS = exports.DATA_EDIT_DATA_UPDATE_TYPE = exports.DATA_EDIT_DATA_REMOVE_TYPE = exports.DATA_EDIT_DATA_INSERT_TYPE = exports.COMMAND_EDIT_WITH_ICONS_CLASS = exports.COMMAND_EDIT_CLASS = exports.CELL_MODIFIED_CLASS = exports.CELL_MODIFIED = exports.CELL_FOCUS_DISABLED_CLASS = exports.CELL_BASED_MODES = exports.BUTTON_NAMES = exports.BUTTON_CLASS = exports.ADD_ROW_BUTTON_CLASS = exports.ACTION_OPTION_NAMES = void 0;
                var _ui = (obj = __webpack_require__( /*! ../../../../ui/scroll_view/ui.scrollable */ 41183), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                exports.EDITOR_CELL_CLASS = "dx-editor-cell";
                exports.ROW_CLASS = "dx-row";
                exports.CELL_MODIFIED_CLASS = "dx-cell-modified";
                exports.ROW_SELECTED_CLASS = "dx-selection";
                exports.EDIT_FORM_CLASS = "edit-form";
                exports.DATA_EDIT_DATA_INSERT_TYPE = "insert";
                exports.DATA_EDIT_DATA_REMOVE_TYPE = "remove";
                exports.EDITING_POPUP_OPTION_NAME = "editing.popup";
                exports.EDITING_FORM_OPTION_NAME = "editing.form";
                exports.EDITING_EDITROWKEY_OPTION_NAME = "editing.editRowKey";
                exports.EDITING_EDITCOLUMNNAME_OPTION_NAME = "editing.editColumnName";
                exports.TARGET_COMPONENT_NAME = "targetComponent";
                exports.EDITORS_INPUT_SELECTOR = "input:not([type='hidden'])";
                const FOCUSABLE_ELEMENT_SELECTOR = "[tabindex]:not([disabled]), ".concat("input:not([type='hidden'])", ":not([disabled])");
                exports.FOCUSABLE_ELEMENT_SELECTOR = FOCUSABLE_ELEMENT_SELECTOR;
                exports.EDIT_MODE_BATCH = "batch";
                exports.EDIT_MODE_ROW = "row";
                exports.EDIT_MODE_CELL = "cell";
                exports.EDIT_MODE_FORM = "form";
                exports.EDIT_MODE_POPUP = "popup";
                exports.FIRST_NEW_ROW_POSITION = "first";
                exports.LAST_NEW_ROW_POSITION = "last";
                exports.PAGE_BOTTOM_NEW_ROW_POSITION = "pageBottom";
                exports.PAGE_TOP_NEW_ROW_POSITION = "pageTop";
                exports.VIEWPORT_BOTTOM_NEW_ROW_POSITION = "viewportBottom";
                exports.VIEWPORT_TOP_NEW_ROW_POSITION = "viewportTop";
                const EDIT_MODES = ["batch", "row", "cell", "form", "popup"];
                exports.EDIT_MODES = EDIT_MODES;
                const ROW_BASED_MODES = ["row", "form", "popup"];
                exports.ROW_BASED_MODES = ROW_BASED_MODES;
                const CELL_BASED_MODES = ["batch", "cell"];
                exports.CELL_BASED_MODES = CELL_BASED_MODES;
                const REQUIRED_EDITOR_LABELLEDBY_MODES = ["batch", "row", "cell"];
                exports.REQUIRED_EDITOR_LABELLEDBY_MODES = REQUIRED_EDITOR_LABELLEDBY_MODES;
                const MODES_WITH_DELAYED_FOCUS = ["row", "form"];
                exports.MODES_WITH_DELAYED_FOCUS = MODES_WITH_DELAYED_FOCUS;
                exports.READONLY_CLASS = "readonly";
                exports.LINK_CLASS = "dx-link";
                exports.LINK_ICON_CLASS = "dx-link-icon";
                exports.ROW_SELECTED = "dx-selection";
                exports.EDIT_BUTTON_CLASS = "dx-edit-button";
                exports.COMMAND_EDIT_CLASS = "dx-command-edit";
                const COMMAND_EDIT_WITH_ICONS_CLASS = "".concat("dx-command-edit", "-with-icons");
                exports.COMMAND_EDIT_WITH_ICONS_CLASS = COMMAND_EDIT_WITH_ICONS_CLASS;
                exports.INSERT_INDEX = "__DX_INSERT_INDEX__";
                exports.ROW_INSERTED = "dx-row-inserted";
                exports.ROW_MODIFIED = "dx-row-modified";
                exports.CELL_MODIFIED = "dx-cell-modified";
                exports.EDITING_NAMESPACE = "dxDataGridEditing";
                exports.CELL_FOCUS_DISABLED_CLASS = "dx-cell-focus-disabled";
                exports.DATA_EDIT_DATA_UPDATE_TYPE = "update";
                exports.DEFAULT_START_EDIT_ACTION = "click";
                exports.EDIT_LINK_CLASS = {
                    save: "dx-link-save",
                    cancel: "dx-link-cancel",
                    edit: "dx-link-edit",
                    undelete: "dx-link-undelete",
                    delete: "dx-link-delete",
                    add: "dx-link-add"
                };
                exports.EDIT_ICON_CLASS = {
                    save: "save",
                    cancel: "revert",
                    edit: "edit",
                    undelete: "revert",
                    delete: "trash",
                    add: "add"
                };
                exports.METHOD_NAMES = {
                    edit: "editRow",
                    delete: "deleteRow",
                    undelete: "undeleteRow",
                    save: "saveEditData",
                    cancel: "cancelEditData",
                    add: "addRowByRowIndex"
                };
                exports.ACTION_OPTION_NAMES = {
                    add: "allowAdding",
                    edit: "allowUpdating",
                    delete: "allowDeleting"
                };
                exports.BUTTON_NAMES = ["edit", "save", "cancel", "delete", "undelete"];
                exports.EDITING_CHANGES_OPTION_NAME = "editing.changes";
                exports.FOCUS_OVERLAY_CLASS = "focus-overlay";
                exports.ADD_ROW_BUTTON_CLASS = "addrow-button";
                exports.DROPDOWN_EDITOR_OVERLAY_CLASS = "dx-dropdowneditor-overlay";
                exports.DATA_ROW_CLASS = "dx-data-row";
                exports.ROW_REMOVED = "dx-row-removed";
                const isRenovatedScrollable = !!_ui.default.IS_RENOVATED_WIDGET;
                exports.EDIT_FORM_ITEM_CLASS = "edit-form-item";
                exports.EDIT_POPUP_CLASS = "edit-popup";
                exports.EDIT_POPUP_FORM_CLASS = "edit-popup-form";
                const FOCUSABLE_ELEMENT_CLASS = isRenovatedScrollable ? "dx-scrollable" : "dx-scrollable-container";
                exports.FOCUSABLE_ELEMENT_CLASS = FOCUSABLE_ELEMENT_CLASS;
                exports.BUTTON_CLASS = "dx-button";
                exports.FORM_BUTTONS_CONTAINER_CLASS = "form-buttons-container";
                exports.EDIT_ROW = "dx-edit-row"
            },
        22324:
            /*!*********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/editing/m_editing.js ***!
              \*********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.editingModule = void 0;
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../../core/devices */ 20530));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../../core/dom_adapter */ 73349));
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../../core/guid */ 73176));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _dom = __webpack_require__( /*! ../../../../core/utils/dom */ 3532);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var iconUtils = function(obj, nodeInterop) {
                    if (!nodeInterop && obj && obj.__esModule) {
                        return obj
                    }
                    if (null === obj || "object" !== typeof obj && "function" !== typeof obj) {
                        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 ("default" !== key && 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
                }(__webpack_require__( /*! ../../../../core/utils/icon */ 44899));
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _object = __webpack_require__( /*! ../../../../core/utils/object */ 48013);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _array_utils = __webpack_require__( /*! ../../../../data/array_utils */ 60637);
                var _click = __webpack_require__( /*! ../../../../events/click */ 95429);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../events/core/events_engine */ 55994));
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../../events/pointer */ 93786));
                var _remove = __webpack_require__( /*! ../../../../events/remove */ 29007);
                var _index = __webpack_require__( /*! ../../../../events/utils/index */ 39611);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/message */ 28109));
                var _dialog = __webpack_require__( /*! ../../../../ui/dialog */ 15029);
                var _themes = __webpack_require__( /*! ../../../../ui/themes */ 75811);
                var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 15943));
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 60082));
                var _const = __webpack_require__( /*! ./const */ 72313);
                var _m_editing_utils = __webpack_require__( /*! ./m_editing_utils */ 89237);

                function _getRequireWildcardCache(nodeInterop) {
                    if ("function" !== typeof WeakMap) {
                        return null
                    }
                    var cacheBabelInterop = new WeakMap;
                    var cacheNodeInterop = new WeakMap;
                    return (_getRequireWildcardCache = function(nodeInterop) {
                        return nodeInterop ? cacheNodeInterop : cacheBabelInterop
                    })(nodeInterop)
                }

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let EditingControllerImpl = function(_modules$ViewControll) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(EditingControllerImpl, _modules$ViewControll);

                    function EditingControllerImpl() {
                        return _modules$ViewControll.apply(this, arguments) || this
                    }
                    var _proto = EditingControllerImpl.prototype;
                    _proto.init = function() {
                        this._columnsController = this.getController("columns");
                        this._dataController = this.getController("data");
                        this._rowsView = this.getView("rowsView");
                        this._lastOperation = null;
                        this._changes = [];
                        if (this._deferreds) {
                            this._deferreds.forEach(d => {
                                d.reject("cancel")
                            })
                        }
                        this._deferreds = [];
                        if (!this._dataChangedHandler) {
                            this._dataChangedHandler = this._handleDataChanged.bind(this);
                            this._dataController.changed.add(this._dataChangedHandler)
                        }
                        if (!this._saveEditorHandler) {
                            this.createAction("onInitNewRow", {
                                excludeValidators: ["disabled", "readOnly"]
                            });
                            this.createAction("onRowInserting", {
                                excludeValidators: ["disabled", "readOnly"]
                            });
                            this.createAction("onRowInserted", {
                                excludeValidators: ["disabled", "readOnly"]
                            });
                            this.createAction("onEditingStart", {
                                excludeValidators: ["disabled", "readOnly"]
                            });
                            this.createAction("onRowUpdating", {
                                excludeValidators: ["disabled", "readOnly"]
                            });
                            this.createAction("onRowUpdated", {
                                excludeValidators: ["disabled", "readOnly"]
                            });
                            this.createAction("onRowRemoving", {
                                excludeValidators: ["disabled", "readOnly"]
                            });
                            this.createAction("onRowRemoved", {
                                excludeValidators: ["disabled", "readOnly"]
                            });
                            this.createAction("onSaved", {
                                excludeValidators: ["disabled", "readOnly"]
                            });
                            this.createAction("onSaving", {
                                excludeValidators: ["disabled", "readOnly"]
                            });
                            this.createAction("onEditCanceling", {
                                excludeValidators: ["disabled", "readOnly"]
                            });
                            this.createAction("onEditCanceled", {
                                excludeValidators: ["disabled", "readOnly"]
                            })
                        }
                        this._updateEditColumn();
                        this._updateEditButtons();
                        if (!this._internalState) {
                            this._internalState = []
                        }
                        this.component._optionsByReference[_const.EDITING_EDITROWKEY_OPTION_NAME] = true;
                        this.component._optionsByReference[_const.EDITING_CHANGES_OPTION_NAME] = true
                    };
                    _proto.getEditMode = function() {
                        var _a;
                        const editMode = null !== (_a = this.option("editing.mode")) && void 0 !== _a ? _a : _const.EDIT_MODE_ROW;
                        if (_const.EDIT_MODES.includes(editMode)) {
                            return editMode
                        }
                        return _const.EDIT_MODE_ROW
                    };
                    _proto.isCellBasedEditMode = function() {
                        const editMode = this.getEditMode();
                        return _const.CELL_BASED_MODES.includes(editMode)
                    };
                    _proto._getDefaultEditorTemplate = function() {
                        return (container, options) => {
                            const $editor = (0, _renderer.default)("<div>").appendTo(container);
                            const editorOptions = (0, _extend.extend)({}, options.column, {
                                value: options.value,
                                setValue: options.setValue,
                                row: options.row,
                                parentType: "dataRow",
                                width: null,
                                readOnly: !options.setValue,
                                isOnForm: options.isOnForm,
                                id: options.id
                            });
                            const needLabel = _const.REQUIRED_EDITOR_LABELLEDBY_MODES.includes(this.getEditMode());
                            if (needLabel) {
                                editorOptions["aria-labelledby"] = options.column.headerId
                            }
                            this.getController("editorFactory").createEditor($editor, editorOptions)
                        }
                    };
                    _proto._getNewRowPosition = function() {
                        const newRowPosition = this.option("editing.newRowPosition");
                        const scrollingMode = this.option("scrolling.mode");
                        if ("virtual" === scrollingMode) {
                            switch (newRowPosition) {
                                case _const.PAGE_TOP_NEW_ROW_POSITION:
                                    return _const.VIEWPORT_TOP_NEW_ROW_POSITION;
                                case _const.PAGE_BOTTOM_NEW_ROW_POSITION:
                                    return _const.VIEWPORT_BOTTOM_NEW_ROW_POSITION;
                                default:
                                    return newRowPosition
                            }
                        }
                        return newRowPosition
                    };
                    _proto.getChanges = function() {
                        return this.option(_const.EDITING_CHANGES_OPTION_NAME)
                    };
                    _proto.getInsertRowCount = function() {
                        const changes = this.option(_const.EDITING_CHANGES_OPTION_NAME);
                        return changes.filter(change => "insert" === change.type).length
                    };
                    _proto.resetChanges = function() {
                        const changes = this.getChanges();
                        const needReset = null === changes || void 0 === changes ? void 0 : changes.length;
                        if (needReset) {
                            this._silentOption(_const.EDITING_CHANGES_OPTION_NAME, [])
                        }
                    };
                    _proto._getInternalData = function(key) {
                        return this._internalState.filter(item => (0, _common.equalByValue)(item.key, key))[0]
                    };
                    _proto._addInternalData = function(params) {
                        const internalData = this._getInternalData(params.key);
                        if (internalData) {
                            return (0, _extend.extend)(internalData, params)
                        }
                        this._internalState.push(params);
                        return params
                    };
                    _proto._getOldData = function(key) {
                        var _a;
                        return null === (_a = this._getInternalData(key)) || void 0 === _a ? void 0 : _a.oldData
                    };
                    _proto.getUpdatedData = function(data) {
                        const key = this._dataController.keyOf(data);
                        const changes = this.getChanges();
                        const editIndex = _m_utils.default.getIndexByKey(key, changes);
                        if (changes[editIndex]) {
                            return (0, _array_utils.createObjectWithChanges)(data, changes[editIndex].data)
                        }
                        return data
                    };
                    _proto.getInsertedData = function() {
                        return this.getChanges().filter(change => change.data && change.type === _const.DATA_EDIT_DATA_INSERT_TYPE).map(change => change.data)
                    };
                    _proto.getRemovedData = function() {
                        return this.getChanges().filter(change => this._getOldData(change.key) && change.type === _const.DATA_EDIT_DATA_REMOVE_TYPE).map(change => this._getOldData(change.key))
                    };
                    _proto._fireDataErrorOccurred = function(arg) {
                        if ("cancel" === arg) {
                            return
                        }
                        const $popupContent = this.getPopupContent();
                        this._dataController.dataErrorOccurred.fire(arg, $popupContent)
                    };
                    _proto._needToCloseEditableCell = function($targetElement) {};
                    _proto._closeEditItem = function($targetElement) {};
                    _proto._handleDataChanged = function(args) {};
                    _proto._isDefaultButtonVisible = function(button, options) {
                        let result = true;
                        switch (button.name) {
                            case "delete":
                                result = this.allowDeleting(options);
                                break;
                            case "undelete":
                                result = false
                        }
                        return result
                    };
                    _proto._isButtonVisible = function(button, options) {
                        const {
                            visible: visible
                        } = button;
                        if (!(0, _type.isDefined)(visible)) {
                            return this._isDefaultButtonVisible(button, options)
                        }
                        return (0, _type.isFunction)(visible) ? visible.call(button, {
                            component: options.component,
                            row: options.row,
                            column: options.column
                        }) : visible
                    };
                    _proto._isButtonDisabled = function(button, options) {
                        const {
                            disabled: disabled
                        } = button;
                        return (0, _type.isFunction)(disabled) ? disabled.call(button, {
                            component: options.component,
                            row: options.row,
                            column: options.column
                        }) : !!disabled
                    };
                    _proto._getButtonConfig = function(button, options) {
                        const config = (0, _type.isObject)(button) ? button : {};
                        const buttonName = (0, _m_editing_utils.getButtonName)(button);
                        const editingTexts = (0, _m_editing_utils.getEditingTexts)(options);
                        const methodName = _const.METHOD_NAMES[buttonName];
                        const editingOptions = this.option("editing");
                        const actionName = _const.ACTION_OPTION_NAMES[buttonName];
                        const allowAction = actionName ? editingOptions[actionName] : true;
                        return (0, _extend.extend)({
                            name: buttonName,
                            text: editingTexts[buttonName],
                            cssClass: _const.EDIT_LINK_CLASS[buttonName]
                        }, {
                            onClick: methodName && (e => {
                                const {
                                    event: event
                                } = e;
                                event.stopPropagation();
                                event.preventDefault();
                                setTimeout(() => {
                                    options.row && allowAction && this[methodName] && this[methodName](options.row.rowIndex)
                                })
                            })
                        }, config)
                    };
                    _proto._getEditingButtons = function(options) {
                        let buttonIndex;
                        const haveCustomButtons = !!options.column.buttons;
                        let buttons = (options.column.buttons || []).slice();
                        if (haveCustomButtons) {
                            buttonIndex = (0, _m_editing_utils.getButtonIndex)(buttons, "edit");
                            if (buttonIndex >= 0) {
                                if ((0, _m_editing_utils.getButtonIndex)(buttons, "save") < 0) {
                                    buttons.splice(buttonIndex + 1, 0, "save")
                                }
                                if ((0, _m_editing_utils.getButtonIndex)(buttons, "cancel") < 0) {
                                    buttons.splice((0, _m_editing_utils.getButtonIndex)(buttons, "save") + 1, 0, "cancel")
                                }
                            }
                            buttonIndex = (0, _m_editing_utils.getButtonIndex)(buttons, "delete");
                            if (buttonIndex >= 0 && (0, _m_editing_utils.getButtonIndex)(buttons, "undelete") < 0) {
                                buttons.splice(buttonIndex + 1, 0, "undelete")
                            }
                        } else {
                            buttons = _const.BUTTON_NAMES.slice()
                        }
                        return buttons.map(button => this._getButtonConfig(button, options))
                    };
                    _proto._renderEditingButtons = function($container, buttons, options, change) {
                        buttons.forEach(button => {
                            if (this._isButtonVisible(button, options)) {
                                this._createButton($container, button, options, change)
                            }
                        })
                    };
                    _proto._getEditCommandCellTemplate = function() {
                        return (container, options, change) => {
                            const $container = (0, _renderer.default)(container);
                            if ("data" === options.rowType) {
                                const buttons = this._getEditingButtons(options);
                                this._renderEditingButtons($container, buttons, options, change);
                                if (options.watch) {
                                    const dispose = options.watch(() => buttons.map(button => ({
                                        visible: this._isButtonVisible(button, options),
                                        disabled: this._isButtonDisabled(button, options)
                                    })), () => {
                                        $container.empty();
                                        this._renderEditingButtons($container, buttons, options)
                                    });
                                    _events_engine.default.on($container, _remove.removeEvent, dispose)
                                }
                            } else {
                                _m_utils.default.setEmptyText($container)
                            }
                        }
                    };
                    _proto.isRowBasedEditMode = function() {
                        const editMode = this.getEditMode();
                        return _const.ROW_BASED_MODES.includes(editMode)
                    };
                    _proto.getFirstEditableColumnIndex = function() {
                        const columnsController = this.getController("columns");
                        let columnIndex;
                        const visibleColumns = columnsController.getVisibleColumns();
                        (0, _iterator.each)(visibleColumns, (index, column) => {
                            if (column.allowEditing) {
                                columnIndex = index;
                                return false
                            }
                        });
                        return columnIndex
                    };
                    _proto.getFirstEditableCellInRow = function(rowIndex) {
                        const rowsView = this.getView("rowsView");
                        const columnIndex = this.getFirstEditableColumnIndex();
                        return null === rowsView || void 0 === rowsView ? void 0 : rowsView._getCellElement(rowIndex || 0, columnIndex)
                    };
                    _proto.getFocusedCellInRow = function(rowIndex) {
                        return this.getFirstEditableCellInRow(rowIndex)
                    };
                    _proto.getIndexByKey = function(key, items) {
                        return _m_utils.default.getIndexByKey(key, items)
                    };
                    _proto.hasChanges = function(rowIndex) {
                        const changes = this.getChanges();
                        let result = false;
                        for (let i = 0; i < (null === changes || void 0 === changes ? void 0 : changes.length); i++) {
                            if (changes[i].type && (!(0, _type.isDefined)(rowIndex) || this._dataController.getRowIndexByKey(changes[i].key) === rowIndex)) {
                                result = true;
                                break
                            }
                        }
                        return result
                    };
                    _proto.dispose = function() {
                        _modules$ViewControll.prototype.dispose.call(this);
                        clearTimeout(this._inputFocusTimeoutID);
                        _events_engine.default.off(_dom_adapter.default.getDocument(), _pointer.default.up, this._pointerUpEditorHandler);
                        _events_engine.default.off(_dom_adapter.default.getDocument(), _pointer.default.down, this._pointerDownEditorHandler);
                        _events_engine.default.off(_dom_adapter.default.getDocument(), _click.name, this._saveEditorHandler)
                    };
                    _proto._silentOption = function(name, value) {
                        if ("editing.changes" === name) {
                            this._changes = (0, _object.deepExtendArraySafe)([], value)
                        }
                        _modules$ViewControll.prototype._silentOption.call(this, name, value)
                    };
                    _proto.optionChanged = function(args) {
                        if ("editing" === args.name) {
                            const {
                                fullName: fullName
                            } = args;
                            if (fullName === _const.EDITING_EDITROWKEY_OPTION_NAME) {
                                this._handleEditRowKeyChange(args)
                            } else if (fullName === _const.EDITING_CHANGES_OPTION_NAME) {
                                const isEqual = (0, _common.equalByValue)(args.value, this._changes, {
                                    maxDepth: 4
                                });
                                if (!isEqual) {
                                    this._changes = (0, _object.deepExtendArraySafe)([], args.value);
                                    this._handleChangesChange(args)
                                }
                            } else if (!args.handled) {
                                this._columnsController.reinit();
                                this.init();
                                this.resetChanges();
                                this._resetEditColumnName();
                                this._resetEditRowKey()
                            }
                            args.handled = true
                        } else {
                            _modules$ViewControll.prototype.optionChanged.call(this, args)
                        }
                    };
                    _proto._handleEditRowKeyChange = function(args) {
                        const rowIndex = this._dataController.getRowIndexByKey(args.value);
                        const oldRowIndexCorrection = this._getEditRowIndexCorrection();
                        const oldRowIndex = this._dataController.getRowIndexByKey(args.previousValue) + oldRowIndexCorrection;
                        if ((0, _type.isDefined)(args.value)) {
                            if (args.value !== args.previousValue) {
                                this._editRowFromOptionChanged(rowIndex, oldRowIndex)
                            }
                        } else {
                            this.cancelEditData()
                        }
                    };
                    _proto._handleChangesChange = function(args) {
                        const dataController = this._dataController;
                        const changes = args.value;
                        if (!args.value.length && !args.previousValue.length) {
                            return
                        }
                        changes.forEach(change => {
                            var _a;
                            if ("insert" === change.type) {
                                this._addInsertInfo(change)
                            } else {
                                const items = dataController.getCachedStoreData() || (null === (_a = dataController.items()) || void 0 === _a ? void 0 : _a.map(item => item.data));
                                const rowIndex = _m_utils.default.getIndexByKey(change.key, items, dataController.key());
                                this._addInternalData({
                                    key: change.key,
                                    oldData: items[rowIndex]
                                })
                            }
                        });
                        dataController.updateItems({
                            repaintChangesOnly: true,
                            isLiveUpdate: false,
                            isOptionChanged: true
                        })
                    };
                    _proto.publicMethods = function() {
                        return ["addRow", "deleteRow", "undeleteRow", "editRow", "saveEditData", "cancelEditData", "hasEditData"]
                    };
                    _proto.refresh = function() {
                        if (!(0, _type.isDefined)(this._pageIndex)) {
                            return
                        }
                        this._refreshCore.apply(this, arguments)
                    };
                    _proto._refreshCore = function(params) {};
                    _proto.isEditing = function() {
                        const isEditRowKeyDefined = (0, _type.isDefined)(this.option(_const.EDITING_EDITROWKEY_OPTION_NAME));
                        return isEditRowKeyDefined
                    };
                    _proto.isEditRow = function(rowIndex) {
                        return false
                    };
                    _proto._setEditRowKey = function(value, silent) {
                        if (silent) {
                            this._silentOption(_const.EDITING_EDITROWKEY_OPTION_NAME, value)
                        } else {
                            this.option(_const.EDITING_EDITROWKEY_OPTION_NAME, value)
                        }
                        if (this._refocusEditCell) {
                            this._refocusEditCell = false;
                            this._focusEditingCell()
                        }
                    };
                    _proto._setEditRowKeyByIndex = function(rowIndex, silent) {
                        const key = this._dataController.getKeyByRowIndex(rowIndex);
                        if (void 0 === key) {
                            this._dataController.fireError("E1043");
                            return
                        }
                        this._setEditRowKey(key, silent)
                    };
                    _proto.getEditRowIndex = function() {
                        return this._getVisibleEditRowIndex()
                    };
                    _proto.getEditFormRowIndex = function() {
                        return -1
                    };
                    _proto.isEditRowByIndex = function(rowIndex) {
                        const key = this._dataController.getKeyByRowIndex(rowIndex);
                        const isKeyEqual = (0, _type.isDefined)(key) && (0, _common.equalByValue)(this.option(_const.EDITING_EDITROWKEY_OPTION_NAME), key);
                        if (isKeyEqual) {
                            return this._getVisibleEditRowIndex() === rowIndex
                        }
                        return isKeyEqual
                    };
                    _proto.isEditCell = function(visibleRowIndex, columnIndex) {
                        return this.isEditRowByIndex(visibleRowIndex) && this._getVisibleEditColumnIndex() === columnIndex
                    };
                    _proto.getPopupContent = function() {};
                    _proto._isProcessedItem = function(item) {
                        return false
                    };
                    _proto._getInsertRowIndex = function(items, change, isProcessedItems) {
                        let result = -1;
                        const dataController = this._dataController;
                        const key = this._getInsertAfterOrBeforeKey(change);
                        if (!(0, _type.isDefined)(key) && 0 === items.length) {
                            result = 0
                        } else if ((0, _type.isDefined)(key)) {
                            items.some((item, index) => {
                                const isProcessedItem = isProcessedItems || this._isProcessedItem(item);
                                if ((0, _type.isObject)(item)) {
                                    if (isProcessedItem || (0, _type.isDefined)(item[_const.INSERT_INDEX])) {
                                        if ((0, _common.equalByValue)(item.key, key)) {
                                            result = index
                                        }
                                    } else if ((0, _common.equalByValue)(dataController.keyOf(item), key)) {
                                        result = index
                                    }
                                }
                                if (result >= 0) {
                                    const nextItem = items[result + 1];
                                    if (nextItem && ("detail" === nextItem.rowType || "detailAdaptive" === nextItem.rowType) && (0, _type.isDefined)(change.insertAfterKey)) {
                                        return
                                    }
                                    if ((0, _type.isDefined)(change.insertAfterKey)) {
                                        result += 1
                                    }
                                    return true
                                }
                            })
                        }
                        return result
                    };
                    _proto._generateNewItem = function(key) {
                        var _a;
                        const item = {
                            key: key
                        };
                        const insertInfo = null === (_a = this._getInternalData(key)) || void 0 === _a ? void 0 : _a.insertInfo;
                        if (null === insertInfo || void 0 === insertInfo ? void 0 : insertInfo[_const.INSERT_INDEX]) {
                            item[_const.INSERT_INDEX] = insertInfo[_const.INSERT_INDEX]
                        }
                        return item
                    };
                    _proto._getLoadedRowIndex = function(items, change, isProcessedItems) {
                        let loadedRowIndex = this._getInsertRowIndex(items, change, isProcessedItems);
                        const dataController = this._dataController;
                        if (loadedRowIndex < 0) {
                            const newRowPosition = this._getNewRowPosition();
                            const pageIndex = dataController.pageIndex();
                            const insertAfterOrBeforeKey = this._getInsertAfterOrBeforeKey(change);
                            if (newRowPosition !== _const.LAST_NEW_ROW_POSITION && 0 === pageIndex && !(0, _type.isDefined)(insertAfterOrBeforeKey)) {
                                loadedRowIndex = 0
                            } else if (newRowPosition === _const.LAST_NEW_ROW_POSITION && dataController.isLastPageLoaded()) {
                                loadedRowIndex = items.length
                            }
                        }
                        return loadedRowIndex
                    };
                    _proto.processItems = function(items, e) {
                        const {
                            changeType: changeType
                        } = e;
                        this.update(changeType);
                        const changes = this.getChanges();
                        changes.forEach(change => {
                            var _a;
                            const isInsert = change.type === _const.DATA_EDIT_DATA_INSERT_TYPE;
                            if (!isInsert) {
                                return
                            }
                            let {
                                key: key
                            } = change;
                            let insertInfo = null === (_a = this._getInternalData(key)) || void 0 === _a ? void 0 : _a.insertInfo;
                            if (!(0, _type.isDefined)(key) || !(0, _type.isDefined)(insertInfo)) {
                                insertInfo = this._addInsertInfo(change);
                                key = insertInfo.key
                            }
                            const loadedRowIndex = this._getLoadedRowIndex(items, change);
                            const item = this._generateNewItem(key);
                            if (loadedRowIndex >= 0) {
                                items.splice(loadedRowIndex, 0, item)
                            }
                        });
                        return items
                    };
                    _proto.processDataItem = function(item, options, generateDataValues) {
                        const columns = options.visibleColumns;
                        const key = item.data[_const.INSERT_INDEX] ? item.data.key : item.key;
                        const changes = this.getChanges();
                        const editIndex = _m_utils.default.getIndexByKey(key, changes);
                        item.isEditing = false;
                        if (editIndex >= 0) {
                            this._processDataItemCore(item, changes[editIndex], key, columns, generateDataValues)
                        }
                    };
                    _proto._processDataItemCore = function(item, change, key, columns, generateDataValues) {
                        const {
                            data: data,
                            type: type
                        } = change;
                        switch (type) {
                            case _const.DATA_EDIT_DATA_INSERT_TYPE:
                                item.isNewRow = true;
                                item.key = key;
                                item.data = data;
                                break;
                            case _const.DATA_EDIT_DATA_UPDATE_TYPE:
                                item.modified = true;
                                item.oldData = item.data;
                                item.data = (0, _array_utils.createObjectWithChanges)(item.data, data);
                                item.modifiedValues = generateDataValues(data, columns, true);
                                break;
                            case _const.DATA_EDIT_DATA_REMOVE_TYPE:
                                item.removed = true
                        }
                    };
                    _proto._initNewRow = function(options) {
                        this.executeAction("onInitNewRow", options);
                        if (options.promise) {
                            const deferred = new _deferred.Deferred;
                            (0, _deferred.when)((0, _deferred.fromPromise)(options.promise)).done(deferred.resolve).fail((0, _m_editing_utils.createFailureHandler)(deferred)).fail(arg => this._fireDataErrorOccurred(arg));
                            return deferred
                        }
                    };
                    _proto._createInsertInfo = function() {
                        const insertInfo = {};
                        insertInfo[_const.INSERT_INDEX] = this._getInsertIndex();
                        return insertInfo
                    };
                    _proto._addInsertInfo = function(change, parentKey) {
                        var _a;
                        let insertInfo;
                        change.key = this.getChangeKeyValue(change);
                        const {
                            key: key
                        } = change;
                        insertInfo = null === (_a = this._getInternalData(key)) || void 0 === _a ? void 0 : _a.insertInfo;
                        if (!(0, _type.isDefined)(insertInfo)) {
                            const insertAfterOrBeforeKey = this._getInsertAfterOrBeforeKey(change);
                            insertInfo = this._createInsertInfo();
                            if (!(0, _type.isDefined)(insertAfterOrBeforeKey)) {
                                this._setInsertAfterOrBeforeKey(change, parentKey)
                            }
                        }
                        this._addInternalData({
                            insertInfo: insertInfo,
                            key: key
                        });
                        return {
                            insertInfo: insertInfo,
                            key: key
                        }
                    };
                    _proto.getChangeKeyValue = function(change) {
                        if ((0, _type.isDefined)(change.key)) {
                            return change.key
                        }
                        const keyExpr = this._dataController.key();
                        let keyValue;
                        if (change.data && keyExpr && !Array.isArray(keyExpr)) {
                            keyValue = change.data[keyExpr]
                        }
                        if (!(0, _type.isDefined)(keyValue)) {
                            keyValue = (0, _m_editing_utils.generateNewRowTempKey)()
                        }
                        return keyValue
                    };
                    _proto._setInsertAfterOrBeforeKey = function(change, parentKey) {
                        const dataController = this._dataController;
                        const allItems = dataController.items(true);
                        const rowsView = this.getView("rowsView");
                        const newRowPosition = this._getNewRowPosition();
                        switch (newRowPosition) {
                            case _const.FIRST_NEW_ROW_POSITION:
                            case _const.LAST_NEW_ROW_POSITION:
                                break;
                            case _const.PAGE_TOP_NEW_ROW_POSITION:
                            case _const.PAGE_BOTTOM_NEW_ROW_POSITION:
                                if (allItems.length) {
                                    const itemIndex = newRowPosition === _const.PAGE_TOP_NEW_ROW_POSITION ? 0 : allItems.length - 1;
                                    change[0 === itemIndex ? "insertBeforeKey" : "insertAfterKey"] = allItems[itemIndex].key
                                }
                                break;
                            default: {
                                const isViewportBottom = newRowPosition === _const.VIEWPORT_BOTTOM_NEW_ROW_POSITION;
                                let visibleItemIndex = isViewportBottom ? null === rowsView || void 0 === rowsView ? void 0 : rowsView.getBottomVisibleItemIndex() : null === rowsView || void 0 === rowsView ? void 0 : rowsView.getTopVisibleItemIndex();
                                const row = dataController.getVisibleRows()[visibleItemIndex];
                                if (row && (!row.isEditing && "detail" === row.rowType || "detailAdaptive" === row.rowType)) {
                                    visibleItemIndex++
                                }
                                const insertKey = dataController.getKeyByRowIndex(visibleItemIndex);
                                if ((0, _type.isDefined)(insertKey)) {
                                    change.insertBeforeKey = insertKey
                                }
                            }
                        }
                    };
                    _proto._getInsertIndex = function() {
                        let maxInsertIndex = 0;
                        this.getChanges().forEach(editItem => {
                            var _a;
                            const insertInfo = null === (_a = this._getInternalData(editItem.key)) || void 0 === _a ? void 0 : _a.insertInfo;
                            if ((0, _type.isDefined)(insertInfo) && editItem.type === _const.DATA_EDIT_DATA_INSERT_TYPE && insertInfo[_const.INSERT_INDEX] > maxInsertIndex) {
                                maxInsertIndex = insertInfo[_const.INSERT_INDEX]
                            }
                        });
                        return maxInsertIndex + 1
                    };
                    _proto._getInsertAfterOrBeforeKey = function(insertChange) {
                        var _a;
                        return null !== (_a = insertChange.insertAfterKey) && void 0 !== _a ? _a : insertChange.insertBeforeKey
                    };
                    _proto._getPageIndexToInsertRow = function() {
                        const newRowPosition = this._getNewRowPosition();
                        const dataController = this._dataController;
                        const pageIndex = dataController.pageIndex();
                        const lastPageIndex = dataController.pageCount() - 1;
                        if (newRowPosition === _const.FIRST_NEW_ROW_POSITION && 0 !== pageIndex) {
                            return 0
                        }
                        if (newRowPosition === _const.LAST_NEW_ROW_POSITION && pageIndex !== lastPageIndex) {
                            return lastPageIndex
                        }
                        return -1
                    };
                    _proto.addRow = function(parentKey) {
                        const dataController = this._dataController;
                        const store = dataController.store();
                        if (!store) {
                            dataController.fireError("E1052", this.component.NAME);
                            return (new _deferred.Deferred).reject()
                        }
                        return this._addRow(parentKey)
                    };
                    _proto._addRow = function(parentKey) {
                        const dataController = this._dataController;
                        const store = dataController.store();
                        const key = store && store.key();
                        const param = {
                            data: {}
                        };
                        const oldEditRowIndex = this._getVisibleEditRowIndex();
                        const deferred = new _deferred.Deferred;
                        this.refresh({
                            allowCancelEditing: true
                        });
                        if (!this._allowRowAdding()) {
                            (0, _deferred.when)(this._navigateToNewRow(oldEditRowIndex)).done(deferred.resolve).fail(deferred.reject);
                            return deferred.promise()
                        }
                        if (!key) {
                            param.data.__KEY__ = String(new _guid.default)
                        }(0, _deferred.when)(this._initNewRow(param, parentKey)).done(() => {
                            if (this._allowRowAdding()) {
                                (0, _deferred.when)(this._addRowCore(param.data, parentKey, oldEditRowIndex)).done(deferred.resolve).fail(deferred.reject)
                            } else {
                                deferred.reject("cancel")
                            }
                        }).fail(deferred.reject);
                        return deferred.promise()
                    };
                    _proto._allowRowAdding = function(params) {
                        const insertIndex = this._getInsertIndex();
                        if (insertIndex > 1) {
                            return false
                        }
                        return true
                    };
                    _proto._addRowCore = function(data, parentKey, initialOldEditRowIndex) {
                        const change = {
                            data: data,
                            type: _const.DATA_EDIT_DATA_INSERT_TYPE
                        };
                        const editRowIndex = this._getVisibleEditRowIndex();
                        const insertInfo = this._addInsertInfo(change, parentKey);
                        const {
                            key: key
                        } = insertInfo;
                        this._setEditRowKey(key, true);
                        this._addChange(change);
                        return this._navigateToNewRow(initialOldEditRowIndex, change, editRowIndex)
                    };
                    _proto._navigateToNewRow = function(oldEditRowIndex, change, editRowIndex) {
                        const d = new _deferred.Deferred;
                        const dataController = this._dataController;
                        const focusController = this.getController("focus");
                        editRowIndex = null !== editRowIndex && void 0 !== editRowIndex ? editRowIndex : -1;
                        change = null !== change && void 0 !== change ? change : this.getChanges().filter(c => c.type === _const.DATA_EDIT_DATA_INSERT_TYPE)[0];
                        if (!change) {
                            return d.reject("cancel").promise()
                        }
                        const pageIndexToInsertRow = this._getPageIndexToInsertRow();
                        let rowIndex = this._getLoadedRowIndex(dataController.items(), change, true);
                        const navigateToRowByKey = key => {
                            (0, _deferred.when)(null === focusController || void 0 === focusController ? void 0 : focusController.navigateToRow(key)).done(() => {
                                rowIndex = dataController.getRowIndexByKey(change.key);
                                d.resolve()
                            })
                        };
                        const insertAfterOrBeforeKey = this._getInsertAfterOrBeforeKey(change);
                        if (pageIndexToInsertRow >= 0) {
                            dataController.pageIndex(pageIndexToInsertRow).done(() => {
                                navigateToRowByKey(change.key)
                            }).fail(d.reject)
                        } else if (rowIndex < 0 && (0, _type.isDefined)(insertAfterOrBeforeKey)) {
                            navigateToRowByKey(insertAfterOrBeforeKey)
                        } else {
                            dataController.updateItems({
                                changeType: "update",
                                rowIndices: [oldEditRowIndex, editRowIndex, rowIndex]
                            });
                            rowIndex = dataController.getRowIndexByKey(change.key);
                            if (rowIndex < 0) {
                                navigateToRowByKey(change.key)
                            } else {
                                d.resolve()
                            }
                        }
                        d.done(() => {
                            var _a;
                            null === (_a = this._rowsView) || void 0 === _a ? void 0 : _a.waitAsyncTemplates(true).done(() => {
                                this._showAddedRow(rowIndex);
                                this._afterInsertRow(change.key)
                            })
                        });
                        return d.promise()
                    };
                    _proto._showAddedRow = function(rowIndex) {
                        this._focusFirstEditableCellInRow(rowIndex)
                    };
                    _proto._beforeFocusElementInRow = function(rowIndex) {};
                    _proto._focusFirstEditableCellInRow = function(rowIndex) {
                        const dataController = this._dataController;
                        const keyboardController = this.getController("keyboardNavigation");
                        const key = dataController.getKeyByRowIndex(rowIndex);
                        const $firstCell = this.getFirstEditableCellInRow(rowIndex);
                        null === keyboardController || void 0 === keyboardController ? void 0 : keyboardController.focus($firstCell);
                        this.option("focusedRowKey", key);
                        this._editCellInProgress = true;
                        this._delayedInputFocus($firstCell, () => {
                            rowIndex = dataController.getRowIndexByKey(key);
                            this._editCellInProgress = false;
                            this._beforeFocusElementInRow(rowIndex)
                        })
                    };
                    _proto._isEditingStart = function(options) {
                        this.executeAction("onEditingStart", options);
                        return options.cancel
                    };
                    _proto._beforeUpdateItems = function(rowIndices, rowIndex) {};
                    _proto._getVisibleEditColumnIndex = function() {
                        const editColumnName = this.option(_const.EDITING_EDITCOLUMNNAME_OPTION_NAME);
                        if (!(0, _type.isDefined)(editColumnName)) {
                            return -1
                        }
                        return this._columnsController.getVisibleColumnIndex(editColumnName)
                    };
                    _proto._setEditColumnNameByIndex = function(index, silent) {
                        var _a;
                        const visibleColumns = this._columnsController.getVisibleColumns();
                        this._setEditColumnName(null === (_a = visibleColumns[index]) || void 0 === _a ? void 0 : _a.name, silent)
                    };
                    _proto._setEditColumnName = function(name, silent) {
                        if (silent) {
                            this._silentOption(_const.EDITING_EDITCOLUMNNAME_OPTION_NAME, name)
                        } else {
                            this.option(_const.EDITING_EDITCOLUMNNAME_OPTION_NAME, name)
                        }
                    };
                    _proto._resetEditColumnName = function() {
                        this._setEditColumnName(null, true)
                    };
                    _proto._getEditColumn = function() {
                        const editColumnName = this.option(_const.EDITING_EDITCOLUMNNAME_OPTION_NAME);
                        return this._getColumnByName(editColumnName)
                    };
                    _proto._getColumnByName = function(name) {
                        const visibleColumns = this._columnsController.getVisibleColumns();
                        let editColumn;
                        (0, _type.isDefined)(name) && visibleColumns.some(column => {
                            if (column.name === name) {
                                editColumn = column;
                                return true
                            }
                        });
                        return editColumn
                    };
                    _proto._getVisibleEditRowIndex = function(columnName) {
                        const dataController = this._dataController;
                        const editRowKey = this.option(_const.EDITING_EDITROWKEY_OPTION_NAME);
                        const rowIndex = dataController.getRowIndexByKey(editRowKey);
                        if (-1 === rowIndex) {
                            return rowIndex
                        }
                        return rowIndex + this._getEditRowIndexCorrection(columnName)
                    };
                    _proto._getEditRowIndexCorrection = function(columnName) {
                        const editColumn = columnName ? this._getColumnByName(columnName) : this._getEditColumn();
                        const isColumnHidden = "adaptiveHidden" === (null === editColumn || void 0 === editColumn ? void 0 : editColumn.visibleWidth);
                        return isColumnHidden ? 1 : 0
                    };
                    _proto._resetEditRowKey = function() {
                        this._refocusEditCell = false;
                        this._setEditRowKey(null, true)
                    };
                    _proto._resetEditIndices = function() {
                        this._resetEditColumnName();
                        this._resetEditRowKey()
                    };
                    _proto.editRow = function(rowIndex) {
                        var _a;
                        const dataController = this._dataController;
                        const items = dataController.items();
                        const item = items[rowIndex];
                        const params = {
                            data: item && item.data,
                            cancel: false
                        };
                        const oldRowIndex = this._getVisibleEditRowIndex();
                        if (!item) {
                            return
                        }
                        if (rowIndex === oldRowIndex) {
                            return true
                        }
                        if (void 0 === item.key) {
                            this._dataController.fireError("E1043");
                            return
                        }
                        if (!item.isNewRow) {
                            params.key = item.key
                        }
                        if (this._isEditingStart(params)) {
                            return
                        }
                        this.resetChanges();
                        this.init();
                        this._resetEditColumnName();
                        this._pageIndex = dataController.pageIndex();
                        this._addInternalData({
                            key: item.key,
                            oldData: null !== (_a = item.oldData) && void 0 !== _a ? _a : item.data
                        });
                        this._setEditRowKey(item.key)
                    };
                    _proto._editRowFromOptionChanged = function(rowIndex, oldRowIndex) {
                        const rowIndices = [oldRowIndex, rowIndex];
                        this._beforeUpdateItems(rowIndices, rowIndex, oldRowIndex);
                        this._editRowFromOptionChangedCore(rowIndices, rowIndex)
                    };
                    _proto._editRowFromOptionChangedCore = function(rowIndices, rowIndex, preventRendering) {
                        this._needFocusEditor = true;
                        this._dataController.updateItems({
                            changeType: "update",
                            rowIndices: rowIndices,
                            cancel: preventRendering
                        })
                    };
                    _proto._focusEditorIfNeed = function() {};
                    _proto._showEditPopup = function(rowIndex, repaintForm) {};
                    _proto._repaintEditPopup = function() {};
                    _proto._getEditPopupHiddenHandler = function() {
                        return e => {
                            if (this.isEditing()) {
                                this.cancelEditData()
                            }
                        }
                    };
                    _proto._getPopupEditFormTemplate = function(rowIndex) {};
                    _proto._getSaveButtonConfig = function() {
                        const buttonConfig = {
                            text: this.option("editing.texts.saveRowChanges"),
                            onClick: this.saveEditData.bind(this)
                        };
                        if ((0, _themes.isFluent)((0, _themes.current)())) {
                            buttonConfig.stylingMode = "contained";
                            buttonConfig.type = "default"
                        }
                        return buttonConfig
                    };
                    _proto._getCancelButtonConfig = function() {
                        const buttonConfig = {
                            text: this.option("editing.texts.cancelRowChanges"),
                            onClick: this.cancelEditData.bind(this)
                        };
                        if ((0, _themes.isFluent)((0, _themes.current)())) {
                            buttonConfig.stylingMode = "outlined"
                        }
                        return buttonConfig
                    };
                    _proto._removeInternalData = function(key) {
                        const internalData = this._getInternalData(key);
                        const index = this._internalState.indexOf(internalData);
                        if (index > -1) {
                            this._internalState.splice(index, 1)
                        }
                    };
                    _proto._updateInsertAfterOrBeforeKeys = function(changes, index) {
                        const removeChange = changes[index];
                        changes.forEach(change => {
                            const insertAfterOrBeforeKey = this._getInsertAfterOrBeforeKey(change);
                            if ((0, _common.equalByValue)(insertAfterOrBeforeKey, removeChange.key)) {
                                change[(0, _type.isDefined)(change.insertAfterKey) ? "insertAfterKey" : "insertBeforeKey"] = this._getInsertAfterOrBeforeKey(removeChange)
                            }
                        })
                    };
                    _proto._removeChange = function(index) {
                        if (index >= 0) {
                            const changes = [...this.getChanges()];
                            const {
                                key: key
                            } = changes[index];
                            this._removeInternalData(key);
                            this._updateInsertAfterOrBeforeKeys(changes, index);
                            changes.splice(index, 1);
                            this._silentOption(_const.EDITING_CHANGES_OPTION_NAME, changes);
                            if ((0, _common.equalByValue)(this.option(_const.EDITING_EDITROWKEY_OPTION_NAME), key)) {
                                this._resetEditIndices()
                            }
                        }
                    };
                    _proto.executeOperation = function(deferred, func) {
                        this._lastOperation && this._lastOperation.reject();
                        this._lastOperation = deferred;
                        this.waitForDeferredOperations().done(() => {
                            if ("rejected" === deferred.state()) {
                                return
                            }
                            func();
                            this._lastOperation = null
                        }).fail(() => {
                            deferred.reject();
                            this._lastOperation = null
                        })
                    };
                    _proto.waitForDeferredOperations = function() {
                        return (0, _deferred.when)(...this._deferreds)
                    };
                    _proto._processCanceledEditingCell = function() {};
                    _proto._repaintEditCell = function(column, oldColumn, oldEditRowIndex) {
                        if (!column || !column.showEditorAlways || oldColumn && !oldColumn.showEditorAlways) {
                            this._editCellInProgress = true;
                            this._needFocusEditor = true;
                            this.getController("editorFactory").loseFocus();
                            this._dataController.updateItems({
                                changeType: "update",
                                rowIndices: [oldEditRowIndex, this._getVisibleEditRowIndex()]
                            })
                        } else if (column !== oldColumn) {
                            this._needFocusEditor = true;
                            this._dataController.updateItems({
                                changeType: "update",
                                rowIndices: []
                            })
                        }
                    };
                    _proto._delayedInputFocus = function($cell, beforeFocusCallback, callBeforeFocusCallbackAlways) {
                        const inputFocus = () => {
                            if (beforeFocusCallback) {
                                beforeFocusCallback()
                            }
                            if ($cell) {
                                const $focusableElement = $cell.find(_const.FOCUSABLE_ELEMENT_SELECTOR).first();
                                _m_utils.default.focusAndSelectElement(this, $focusableElement)
                            }
                            this._beforeFocusCallback = null
                        };
                        if (_devices.default.real().ios || _devices.default.real().android) {
                            inputFocus()
                        } else {
                            if (this._beforeFocusCallback) {
                                this._beforeFocusCallback()
                            }
                            clearTimeout(this._inputFocusTimeoutID);
                            if (callBeforeFocusCallbackAlways) {
                                this._beforeFocusCallback = beforeFocusCallback
                            }
                            this._inputFocusTimeoutID = setTimeout(inputFocus)
                        }
                    };
                    _proto._focusEditingCell = function(beforeFocusCallback, $editCell, callBeforeFocusCallbackAlways) {
                        const rowsView = this.getView("rowsView");
                        const editColumnIndex = this._getVisibleEditColumnIndex();
                        $editCell = $editCell || rowsView && rowsView._getCellElement(this._getVisibleEditRowIndex(), editColumnIndex);
                        if ($editCell) {
                            this._delayedInputFocus($editCell, beforeFocusCallback, callBeforeFocusCallbackAlways)
                        }
                    };
                    _proto.deleteRow = function(rowIndex) {
                        this._checkAndDeleteRow(rowIndex)
                    };
                    _proto._checkAndDeleteRow = function(rowIndex) {
                        const editingOptions = this.option("editing");
                        const editingTexts = null === editingOptions || void 0 === editingOptions ? void 0 : editingOptions.texts;
                        const confirmDelete = null === editingOptions || void 0 === editingOptions ? void 0 : editingOptions.confirmDelete;
                        const confirmDeleteMessage = null === editingTexts || void 0 === editingTexts ? void 0 : editingTexts.confirmDeleteMessage;
                        const item = this._dataController.items()[rowIndex];
                        const allowDeleting = !this.isEditing() || item.isNewRow;
                        if (item && allowDeleting) {
                            if (!confirmDelete || !confirmDeleteMessage) {
                                this._deleteRowCore(rowIndex)
                            } else {
                                const confirmDeleteTitle = editingTexts && editingTexts.confirmDeleteTitle;
                                const showDialogTitle = (0, _type.isDefined)(confirmDeleteTitle) && confirmDeleteTitle.length > 0;
                                (0, _dialog.confirm)(confirmDeleteMessage, confirmDeleteTitle, showDialogTitle).done(confirmResult => {
                                    if (confirmResult) {
                                        this._deleteRowCore(rowIndex)
                                    }
                                })
                            }
                        }
                    };
                    _proto._deleteRowCore = function(rowIndex) {
                        const dataController = this._dataController;
                        const item = dataController.items()[rowIndex];
                        const key = item && item.key;
                        const oldEditRowIndex = this._getVisibleEditRowIndex();
                        this.refresh();
                        const changes = this.getChanges();
                        const editIndex = _m_utils.default.getIndexByKey(key, changes);
                        if (editIndex >= 0) {
                            if (changes[editIndex].type === _const.DATA_EDIT_DATA_INSERT_TYPE) {
                                this._removeChange(editIndex)
                            } else {
                                this._addChange({
                                    key: key,
                                    type: _const.DATA_EDIT_DATA_REMOVE_TYPE
                                })
                            }
                        } else {
                            this._addChange({
                                key: key,
                                oldData: item.data,
                                type: _const.DATA_EDIT_DATA_REMOVE_TYPE
                            })
                        }
                        return this._afterDeleteRow(rowIndex, oldEditRowIndex)
                    };
                    _proto._afterDeleteRow = function(rowIndex, oldEditRowIndex) {
                        return this.saveEditData()
                    };
                    _proto.undeleteRow = function(rowIndex) {
                        const dataController = this._dataController;
                        const item = dataController.items()[rowIndex];
                        const oldEditRowIndex = this._getVisibleEditRowIndex();
                        const key = item && item.key;
                        const changes = this.getChanges();
                        if (item) {
                            const editIndex = _m_utils.default.getIndexByKey(key, changes);
                            if (editIndex >= 0) {
                                const {
                                    data: data
                                } = changes[editIndex];
                                if ((0, _type.isEmptyObject)(data)) {
                                    this._removeChange(editIndex)
                                } else {
                                    this._addChange({
                                        key: key,
                                        type: _const.DATA_EDIT_DATA_UPDATE_TYPE
                                    })
                                }
                                dataController.updateItems({
                                    changeType: "update",
                                    rowIndices: [oldEditRowIndex, rowIndex]
                                })
                            }
                        }
                    };
                    _proto._fireOnSaving = function() {
                        const onSavingParams = {
                            cancel: false,
                            promise: null,
                            changes: [...this.getChanges()]
                        };
                        this.executeAction("onSaving", onSavingParams);
                        const d = new _deferred.Deferred;
                        (0, _deferred.when)((0, _deferred.fromPromise)(onSavingParams.promise)).done(() => {
                            d.resolve(onSavingParams)
                        }).fail(arg => {
                            (0, _m_editing_utils.createFailureHandler)(d);
                            this._fireDataErrorOccurred(arg);
                            d.resolve({
                                cancel: true
                            })
                        });
                        return d
                    };
                    _proto._executeEditingAction = function(actionName, params, func) {
                        if (this.component._disposed) {
                            return null
                        }
                        const deferred = new _deferred.Deferred;
                        this.executeAction(actionName, params);
                        (0, _deferred.when)((0, _deferred.fromPromise)(params.cancel)).done(cancel => {
                            if (cancel) {
                                setTimeout(() => {
                                    deferred.resolve("cancel")
                                })
                            } else {
                                func(params).done(deferred.resolve).fail((0, _m_editing_utils.createFailureHandler)(deferred))
                            }
                        }).fail((0, _m_editing_utils.createFailureHandler)(deferred));
                        return deferred
                    };
                    _proto._processChanges = function(deferreds, results, dataChanges, changes) {
                        const store = this._dataController.store();
                        (0, _iterator.each)(changes, (index, change) => {
                            const oldData = this._getOldData(change.key);
                            const {
                                data: data,
                                type: type
                            } = change;
                            const changeCopy = _extends({}, change);
                            let deferred;
                            let params;
                            if (this._beforeSaveEditData(change, index)) {
                                return
                            }
                            switch (type) {
                                case _const.DATA_EDIT_DATA_REMOVE_TYPE:
                                    params = {
                                        data: oldData,
                                        key: change.key,
                                        cancel: false
                                    };
                                    deferred = this._executeEditingAction("onRowRemoving", params, () => store.remove(change.key).done(key => {
                                        dataChanges.push({
                                            type: "remove",
                                            key: key
                                        })
                                    }));
                                    break;
                                case _const.DATA_EDIT_DATA_INSERT_TYPE:
                                    params = {
                                        data: data,
                                        cancel: false
                                    };
                                    deferred = this._executeEditingAction("onRowInserting", params, () => store.insert(params.data).done((data, key) => {
                                        if ((0, _type.isDefined)(key)) {
                                            changeCopy.key = key
                                        }
                                        if (data && (0, _type.isObject)(data) && data !== params.data) {
                                            changeCopy.data = data
                                        }
                                        dataChanges.push({
                                            type: "insert",
                                            data: data,
                                            index: 0
                                        })
                                    }));
                                    break;
                                case _const.DATA_EDIT_DATA_UPDATE_TYPE:
                                    params = {
                                        newData: data,
                                        oldData: oldData,
                                        key: change.key,
                                        cancel: false
                                    };
                                    deferred = this._executeEditingAction("onRowUpdating", params, () => store.update(change.key, params.newData).done((data, key) => {
                                        if (data && (0, _type.isObject)(data) && data !== params.newData) {
                                            changeCopy.data = data
                                        }
                                        dataChanges.push({
                                            type: "update",
                                            key: key,
                                            data: data
                                        })
                                    }))
                            }
                            changes[index] = changeCopy;
                            if (deferred) {
                                const doneDeferred = new _deferred.Deferred;
                                deferred.always(data => {
                                    results.push({
                                        key: change.key,
                                        result: data
                                    })
                                }).always(doneDeferred.resolve);
                                deferreds.push(doneDeferred.promise())
                            }
                        })
                    };
                    _proto._processRemoveIfError = function(changes, editIndex) {
                        const change = changes[editIndex];
                        if ((null === change || void 0 === change ? void 0 : change.type) === _const.DATA_EDIT_DATA_REMOVE_TYPE) {
                            if (editIndex >= 0) {
                                changes.splice(editIndex, 1)
                            }
                        }
                        return true
                    };
                    _proto._processRemove = function(changes, editIndex, cancel) {
                        const change = changes[editIndex];
                        if (!cancel || !change || change.type === _const.DATA_EDIT_DATA_REMOVE_TYPE) {
                            return this._processRemoveCore(changes, editIndex, !cancel || !change)
                        }
                    };
                    _proto._processRemoveCore = function(changes, editIndex, processIfBatch) {
                        if (editIndex >= 0) {
                            changes.splice(editIndex, 1)
                        }
                        return true
                    };
                    _proto._processSaveEditDataResult = function(results) {
                        let hasSavedData = false;
                        const changes = [...this.getChanges()];
                        const changesLength = changes.length;
                        for (let i = 0; i < results.length; i++) {
                            const arg = results[i].result;
                            const cancel = "cancel" === arg;
                            const editIndex = _m_utils.default.getIndexByKey(results[i].key, changes);
                            const change = changes[editIndex];
                            const isError = arg && arg instanceof Error;
                            if (isError) {
                                if (change) {
                                    this._addInternalData({
                                        key: change.key,
                                        error: arg
                                    })
                                }
                                this._fireDataErrorOccurred(arg);
                                if (this._processRemoveIfError(changes, editIndex)) {
                                    break
                                }
                            } else if (this._processRemove(changes, editIndex, cancel)) {
                                hasSavedData = !cancel
                            }
                        }
                        if (changes.length < changesLength) {
                            this._silentOption(_const.EDITING_CHANGES_OPTION_NAME, changes)
                        }
                        return hasSavedData
                    };
                    _proto._fireSaveEditDataEvents = function(changes) {
                        (0, _iterator.each)(changes, (_, _ref) => {
                            let {
                                data: data,
                                key: key,
                                type: type
                            } = _ref;
                            const internalData = this._addInternalData({
                                key: key
                            });
                            const params = {
                                key: key,
                                data: data
                            };
                            if (internalData.error) {
                                params.error = internalData.error
                            }
                            switch (type) {
                                case _const.DATA_EDIT_DATA_REMOVE_TYPE:
                                    this.executeAction("onRowRemoved", (0, _extend.extend)({}, params, {
                                        data: internalData.oldData
                                    }));
                                    break;
                                case _const.DATA_EDIT_DATA_INSERT_TYPE:
                                    this.executeAction("onRowInserted", params);
                                    break;
                                case _const.DATA_EDIT_DATA_UPDATE_TYPE:
                                    this.executeAction("onRowUpdated", params)
                            }
                        });
                        this.executeAction("onSaved", {
                            changes: changes
                        })
                    };
                    _proto.saveEditData = function() {
                        const deferred = new _deferred.Deferred;
                        this.waitForDeferredOperations().done(() => {
                            if (this.isSaving()) {
                                this._resolveAfterSave(deferred);
                                return
                            }(0, _deferred.when)(this._beforeSaveEditData()).done(cancel => {
                                if (cancel) {
                                    this._resolveAfterSave(deferred, {
                                        cancel: cancel
                                    });
                                    return
                                }
                                this._saving = true;
                                this._saveEditDataInner().always(() => {
                                    this._saving = false;
                                    if (this._refocusEditCell) {
                                        this._focusEditingCell()
                                    }
                                }).done(deferred.resolve).fail(deferred.reject)
                            }).fail(deferred.reject)
                        }).fail(deferred.reject);
                        return deferred.promise()
                    };
                    _proto._resolveAfterSave = function(deferred) {
                        let {
                            cancel: cancel,
                            error: error
                        } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                        (0, _deferred.when)(this._afterSaveEditData(cancel)).done(() => {
                            deferred.resolve(error)
                        }).fail(deferred.reject)
                    };
                    _proto._saveEditDataInner = function() {
                        const result = new _deferred.Deferred;
                        const results = [];
                        const deferreds = [];
                        const dataChanges = [];
                        const dataSource = this._dataController.dataSource();
                        (0, _deferred.when)(this._fireOnSaving()).done(_ref2 => {
                            let {
                                cancel: cancel,
                                changes: changes
                            } = _ref2;
                            if (cancel) {
                                return result.resolve().promise()
                            }
                            this._processChanges(deferreds, results, dataChanges, changes);
                            if (deferreds.length) {
                                this._refocusEditCell = true;
                                null === dataSource || void 0 === dataSource ? void 0 : dataSource.beginLoading();
                                (0, _deferred.when)(...deferreds).done(() => {
                                    if (this._processSaveEditDataResult(results)) {
                                        this._endSaving(dataChanges, changes, result)
                                    } else {
                                        null === dataSource || void 0 === dataSource ? void 0 : dataSource.endLoading();
                                        result.resolve()
                                    }
                                }).fail(error => {
                                    null === dataSource || void 0 === dataSource ? void 0 : dataSource.endLoading();
                                    result.resolve(error)
                                });
                                return result.always(() => {
                                    this._refocusEditCell = true
                                }).promise()
                            }
                            this._cancelSaving(result)
                        }).fail(result.reject);
                        return result.promise()
                    };
                    _proto._beforeEndSaving = function(changes) {
                        this._resetEditIndices()
                    };
                    _proto._endSaving = function(dataChanges, changes, deferred) {
                        const dataSource = this._dataController.dataSource();
                        this._beforeEndSaving(changes);
                        null === dataSource || void 0 === dataSource ? void 0 : dataSource.endLoading();
                        this._refreshDataAfterSave(dataChanges, changes, deferred)
                    };
                    _proto._cancelSaving = function(result) {
                        this.executeAction("onSaved", {
                            changes: []
                        });
                        this._resolveAfterSave(result)
                    };
                    _proto._refreshDataAfterSave = function(dataChanges, changes, deferred) {
                        const dataController = this._dataController;
                        const refreshMode = this.option("editing.refreshMode");
                        const isFullRefresh = "reshape" !== refreshMode && "repaint" !== refreshMode;
                        if (!isFullRefresh) {
                            dataController.push(dataChanges)
                        }(0, _deferred.when)(dataController.refresh({
                            selection: isFullRefresh,
                            reload: isFullRefresh,
                            load: "reshape" === refreshMode,
                            changesOnly: this.option("repaintChangesOnly")
                        })).always(() => {
                            this._fireSaveEditDataEvents(changes)
                        }).done(() => {
                            this._resolveAfterSave(deferred)
                        }).fail(error => {
                            this._resolveAfterSave(deferred, {
                                error: error
                            })
                        })
                    };
                    _proto.isSaving = function() {
                        return this._saving
                    };
                    _proto._updateEditColumn = function() {
                        const isEditColumnVisible = this._isEditColumnVisible();
                        const useIcons = this.option("editing.useIcons");
                        const cssClass = _const.COMMAND_EDIT_CLASS + (useIcons ? " ".concat(_const.COMMAND_EDIT_WITH_ICONS_CLASS) : "");
                        this._columnsController.addCommandColumn({
                            type: "buttons",
                            command: "edit",
                            visible: isEditColumnVisible,
                            cssClass: cssClass,
                            width: "auto",
                            alignment: "center",
                            cellTemplate: this._getEditCommandCellTemplate(),
                            fixedPosition: "right"
                        });
                        this._columnsController.columnOption("command:edit", {
                            visible: isEditColumnVisible,
                            cssClass: cssClass
                        })
                    };
                    _proto._isEditColumnVisible = function() {
                        const editingOptions = this.option("editing");
                        return editingOptions.allowDeleting
                    };
                    _proto._isEditButtonDisabled = function() {
                        const hasChanges = this.hasChanges();
                        const isEditRowDefined = (0, _type.isDefined)(this.option("editing.editRowKey"));
                        return !(isEditRowDefined || hasChanges)
                    };
                    _proto._updateEditButtons = function() {
                        const headerPanel = this.getView("headerPanel");
                        const isButtonDisabled = this._isEditButtonDisabled();
                        if (headerPanel) {
                            headerPanel.setToolbarItemDisabled("saveButton", isButtonDisabled);
                            headerPanel.setToolbarItemDisabled("revertButton", isButtonDisabled)
                        }
                    };
                    _proto._applyModified = function($element, options) {
                        $element && $element.addClass(_const.CELL_MODIFIED)
                    };
                    _proto._beforeCloseEditCellInBatchMode = function(rowIndices) {};
                    _proto.cancelEditData = function() {
                        const changes = this.getChanges();
                        const params = {
                            cancel: false,
                            changes: changes
                        };
                        this.executeAction("onEditCanceling", params);
                        if (!params.cancel) {
                            this._cancelEditDataCore();
                            this.executeAction("onEditCanceled", {
                                changes: changes
                            })
                        }
                    };
                    _proto._cancelEditDataCore = function() {
                        const rowIndex = this._getVisibleEditRowIndex();
                        this._beforeCancelEditData();
                        this.init();
                        this.resetChanges();
                        this._resetEditColumnName();
                        this._resetEditRowKey();
                        this._afterCancelEditData(rowIndex)
                    };
                    _proto._afterCancelEditData = function(rowIndex) {
                        const dataController = this._dataController;
                        dataController.updateItems({
                            repaintChangesOnly: this.option("repaintChangesOnly")
                        })
                    };
                    _proto._hideEditPopup = function() {};
                    _proto.hasEditData = function() {
                        return this.hasChanges()
                    };
                    _proto.update = function(changeType) {
                        const dataController = this._dataController;
                        if (dataController && this._pageIndex !== dataController.pageIndex()) {
                            if ("refresh" === changeType) {
                                this.refresh({
                                    isPageChanged: true
                                })
                            }
                            this._pageIndex = dataController.pageIndex()
                        }
                        this._updateEditButtons()
                    };
                    _proto._getRowIndicesForCascadeUpdating = function(row, skipCurrentRow) {
                        return skipCurrentRow ? [] : [row.rowIndex]
                    };
                    _proto.addDeferred = function(deferred) {
                        if (!this._deferreds.includes(deferred)) {
                            this._deferreds.push(deferred);
                            deferred.always(() => {
                                const index = this._deferreds.indexOf(deferred);
                                if (index >= 0) {
                                    this._deferreds.splice(index, 1)
                                }
                            })
                        }
                    };
                    _proto._prepareChange = function(options, value, text) {
                        var _a;
                        const newData = {};
                        const oldData = null === (_a = options.row) || void 0 === _a ? void 0 : _a.data;
                        const rowKey = options.key;
                        const deferred = new _deferred.Deferred;
                        if (void 0 !== rowKey) {
                            options.value = value;
                            const setCellValueResult = (0, _deferred.fromPromise)(options.column.setCellValue(newData, value, (0, _extend.extend)(true, {}, oldData), text));
                            setCellValueResult.done(() => {
                                deferred.resolve({
                                    data: newData,
                                    key: rowKey,
                                    oldData: oldData,
                                    type: _const.DATA_EDIT_DATA_UPDATE_TYPE
                                })
                            }).fail((0, _m_editing_utils.createFailureHandler)(deferred)).fail(arg => this._fireDataErrorOccurred(arg));
                            if ((0, _type.isDefined)(text) && options.column.displayValueMap) {
                                options.column.displayValueMap[value] = text
                            }
                            this._updateRowValues(options);
                            this.addDeferred(deferred)
                        }
                        return deferred
                    };
                    _proto._updateRowValues = function(options) {
                        if (options.values) {
                            const dataController = this._dataController;
                            const rowIndex = dataController.getRowIndexByKey(options.key);
                            const row = dataController.getVisibleRows()[rowIndex];
                            if (row) {
                                options.row.values = row.values;
                                options.values = row.values
                            }
                            options.values[options.columnIndex] = options.value
                        }
                    };
                    _proto.updateFieldValue = function(options, value, text, forceUpdateRow) {
                        const rowKey = options.key;
                        const deferred = new _deferred.Deferred;
                        if (void 0 === rowKey) {
                            this._dataController.fireError("E1043")
                        }
                        if (options.column.setCellValue) {
                            this._prepareChange(options, value, text).done(params => {
                                (0, _deferred.when)(this._applyChange(options, params, forceUpdateRow)).always(() => {
                                    deferred.resolve()
                                })
                            })
                        } else {
                            deferred.resolve()
                        }
                        return deferred.promise()
                    };
                    _proto._focusPreviousEditingCellIfNeed = function(options) {
                        if (this.hasEditData() && !this.isEditCell(options.rowIndex, options.columnIndex)) {
                            this._focusEditingCell();
                            this._updateEditRow(options.row, true);
                            return true
                        }
                    };
                    _proto._needUpdateRow = function(column) {
                        const visibleColumns = this._columnsController.getVisibleColumns();
                        if (!column) {
                            column = this._getEditColumn()
                        }
                        const isCustomSetCellValue = column && column.setCellValue !== column.defaultSetCellValue;
                        const isCustomCalculateCellValue = visibleColumns.some(visibleColumn => visibleColumn.calculateCellValue !== visibleColumn.defaultCalculateCellValue);
                        return isCustomSetCellValue || isCustomCalculateCellValue
                    };
                    _proto._applyChange = function(options, params, forceUpdateRow) {
                        const changeOptions = _extends(_extends({}, options), {
                            forceUpdateRow: forceUpdateRow
                        });
                        this._addChange(params, changeOptions);
                        this._updateEditButtons();
                        return this._applyChangeCore(options, changeOptions.forceUpdateRow)
                    };
                    _proto._applyChangeCore = function(options, forceUpdateRow) {
                        const isCustomSetCellValue = options.column.setCellValue !== options.column.defaultSetCellValue;
                        const {
                            row: row
                        } = options;
                        if (row) {
                            if (forceUpdateRow || isCustomSetCellValue) {
                                this._updateEditRow(row, forceUpdateRow, isCustomSetCellValue)
                            } else if (row.update) {
                                row.update()
                            }
                        }
                    };
                    _proto._updateEditRowCore = function(row, skipCurrentRow, isCustomSetCellValue) {
                        this._dataController.updateItems({
                            changeType: "update",
                            rowIndices: this._getRowIndicesForCascadeUpdating(row, skipCurrentRow)
                        })
                    };
                    _proto._updateEditRow = function(row, forceUpdateRow, isCustomSetCellValue) {
                        if (forceUpdateRow) {
                            this._updateRowImmediately(row, forceUpdateRow, isCustomSetCellValue)
                        } else {
                            this._updateRowWithDelay(row, isCustomSetCellValue)
                        }
                    };
                    _proto._updateRowImmediately = function(row, forceUpdateRow, isCustomSetCellValue) {
                        this._updateEditRowCore(row, !forceUpdateRow, isCustomSetCellValue);
                        this._validateEditFormAfterUpdate(row, isCustomSetCellValue);
                        if (!forceUpdateRow) {
                            this._focusEditingCell()
                        }
                    };
                    _proto._updateRowWithDelay = function(row, isCustomSetCellValue) {
                        const deferred = new _deferred.Deferred;
                        this.addDeferred(deferred);
                        setTimeout(() => {
                            var _a;
                            const elementContainer = (null === (_a = this._editForm) || void 0 === _a ? void 0 : _a.element()) || this.component.$element().get(0);
                            const $focusedElement = (0, _renderer.default)(_dom_adapter.default.getActiveElement(elementContainer));
                            const columnIndex = this._rowsView.getCellIndex($focusedElement, row.rowIndex);
                            let focusedElement = $focusedElement.get(0);
                            const selectionRange = _m_utils.default.getSelectionRange(focusedElement);
                            this._updateEditRowCore(row, false, isCustomSetCellValue);
                            this._validateEditFormAfterUpdate(row, isCustomSetCellValue);
                            if (columnIndex >= 0) {
                                const $focusedItem = this._rowsView._getCellElement(row.rowIndex, columnIndex);
                                this._delayedInputFocus($focusedItem, () => {
                                    setTimeout(() => {
                                        var _a;
                                        focusedElement = _dom_adapter.default.getActiveElement(null === (_a = this.component.$element()) || void 0 === _a ? void 0 : _a.get(0));
                                        if (selectionRange.selectionStart >= 0) {
                                            _m_utils.default.setSelectionRange(focusedElement, selectionRange)
                                        }
                                    })
                                })
                            }
                            deferred.resolve()
                        })
                    };
                    _proto._validateEditFormAfterUpdate = function() {};
                    _proto._addChange = function(changeParams, options) {
                        var _a;
                        const row = null === options || void 0 === options ? void 0 : options.row;
                        const changes = [...this.getChanges()];
                        let index = _m_utils.default.getIndexByKey(changeParams.key, changes);
                        if (index < 0) {
                            index = changes.length;
                            this._addInternalData({
                                key: changeParams.key,
                                oldData: changeParams.oldData
                            });
                            delete changeParams.oldData;
                            changes.push(changeParams)
                        }
                        const change = _extends({}, changes[index]);
                        if (change) {
                            if (changeParams.data) {
                                change.data = (0, _array_utils.createObjectWithChanges)(change.data, changeParams.data)
                            }
                            if ((!change.type || !changeParams.data) && changeParams.type) {
                                change.type = changeParams.type
                            }
                            if (row) {
                                row.oldData = this._getOldData(row.key);
                                row.data = (0, _array_utils.createObjectWithChanges)(row.data, changeParams.data)
                            }
                        }
                        changes[index] = change;
                        this._silentOption(_const.EDITING_CHANGES_OPTION_NAME, changes);
                        if (options && change !== (null === (_a = this.getChanges()) || void 0 === _a ? void 0 : _a[index])) {
                            options.forceUpdateRow = true
                        }
                        return change
                    };
                    _proto._getFormEditItemTemplate = function(cellOptions, column) {
                        return column.editCellTemplate || this._getDefaultEditorTemplate()
                    };
                    _proto.getColumnTemplate = function(options) {
                        const {
                            column: column
                        } = options;
                        const rowIndex = options.row && options.row.rowIndex;
                        let template;
                        const isRowMode = this.isRowBasedEditMode();
                        const isRowEditing = this.isEditRow(rowIndex);
                        const isCellEditing = this.isEditCell(rowIndex, options.columnIndex);
                        let editingStartOptions;
                        if ((column.showEditorAlways || column.setCellValue && (isRowEditing && column.allowEditing || isCellEditing)) && ("data" === options.rowType || "detailAdaptive" === options.rowType) && !column.command) {
                            const allowUpdating = this.allowUpdating(options);
                            if (((allowUpdating || isRowEditing) && column.allowEditing || isCellEditing) && (isRowEditing || !isRowMode)) {
                                if (column.showEditorAlways && !isRowMode) {
                                    editingStartOptions = {
                                        cancel: false,
                                        key: options.row.isNewRow ? void 0 : options.row.key,
                                        data: options.row.data,
                                        column: column
                                    };
                                    this._isEditingStart(editingStartOptions)
                                }
                                if (!editingStartOptions || !editingStartOptions.cancel) {
                                    options.setValue = (value, text) => {
                                        this.updateFieldValue(options, value, text)
                                    }
                                }
                            }
                            template = column.editCellTemplate || this._getDefaultEditorTemplate()
                        } else if ("detail" === column.command && "detail" === options.rowType && isRowEditing) {
                            template = null === this || void 0 === this ? void 0 : this.getEditFormTemplate(options)
                        }
                        return template
                    };
                    _proto._createButton = function($container, button, options, change) {
                        let icon = _const.EDIT_ICON_CLASS[button.name];
                        const useIcons = this.option("editing.useIcons");
                        const useLegacyColumnButtonTemplate = this.option("useLegacyColumnButtonTemplate");
                        let $button = (0, _renderer.default)("<a>").attr("href", "#").addClass(_const.LINK_CLASS).addClass(button.cssClass);
                        if (button.template && useLegacyColumnButtonTemplate) {
                            this._rowsView.renderTemplate($container, button.template, options, true)
                        } else {
                            if (button.template) {
                                $button = (0, _renderer.default)("<span>").addClass(button.cssClass)
                            } else if (useIcons && icon || button.icon) {
                                icon = button.icon || icon;
                                const iconType = iconUtils.getImageSourceType(icon);
                                if ("image" === iconType || "svg" === iconType) {
                                    $button = iconUtils.getImageContainer(icon).addClass(button.cssClass)
                                } else {
                                    $button.addClass("dx-icon".concat("dxIcon" === iconType ? "-" : " ").concat(icon)).attr("title", button.text)
                                }
                                $button.addClass(_const.LINK_ICON_CLASS);
                                $container.addClass(_const.COMMAND_EDIT_WITH_ICONS_CLASS);
                                const localizationName = this.getButtonLocalizationNames()[button.name];
                                localizationName && $button.attr("aria-label", _message.default.format(localizationName))
                            } else {
                                $button.text(button.text)
                            }
                            if ((0, _type.isDefined)(button.hint)) {
                                $button.attr("title", button.hint)
                            }
                            if (this._isButtonDisabled(button, options)) {
                                $button.addClass("dx-state-disabled")
                            } else if (!button.template || button.onClick) {
                                _events_engine.default.on($button, (0, _index.addNamespace)("click", _const.EDITING_NAMESPACE), this.createAction(e => {
                                    var _a;
                                    null === (_a = button.onClick) || void 0 === _a ? void 0 : _a.call(button, (0, _extend.extend)({}, e, {
                                        row: options.row,
                                        column: options.column
                                    }));
                                    e.event.preventDefault();
                                    e.event.stopPropagation()
                                }))
                            }
                            $container.append($button, "&nbsp;");
                            if (button.template) {
                                options.renderAsync = false;
                                this._rowsView.renderTemplate($button, button.template, options, true, change)
                            }
                        }
                    };
                    _proto.getButtonLocalizationNames = function() {
                        return {
                            edit: "dxDataGrid-editingEditRow",
                            save: "dxDataGrid-editingSaveRowChanges",
                            delete: "dxDataGrid-editingDeleteRow",
                            undelete: "dxDataGrid-editingUndeleteRow",
                            cancel: "dxDataGrid-editingCancelRowChanges"
                        }
                    };
                    _proto.prepareButtonItem = function(headerPanel, name, methodName, sortIndex) {
                        var _a;
                        const editingTexts = null !== (_a = this.option("editing.texts")) && void 0 !== _a ? _a : {};
                        const titleButtonTextByClassNames = {
                            revert: editingTexts.cancelAllChanges,
                            save: editingTexts.saveAllChanges,
                            addRow: editingTexts.addRow
                        };
                        const className = {
                            revert: "cancel",
                            save: "save",
                            addRow: "addrow"
                        } [name];
                        const hintText = titleButtonTextByClassNames[name];
                        const isButtonDisabled = ("save" === className || "cancel" === className) && this._isEditButtonDisabled();
                        return {
                            widget: "dxButton",
                            options: {
                                onInitialized: e => {
                                    (0, _renderer.default)(e.element).addClass(headerPanel._getToolbarButtonClass("".concat(_const.EDIT_BUTTON_CLASS, " ").concat(this.addWidgetPrefix(className), "-button")))
                                },
                                icon: "edit-button-".concat(className),
                                disabled: isButtonDisabled,
                                onClick: () => {
                                    setTimeout(() => {
                                        this[methodName]()
                                    })
                                },
                                text: hintText,
                                hint: hintText
                            },
                            showText: "inMenu",
                            name: "".concat(name, "Button"),
                            location: "after",
                            locateInMenu: "auto",
                            sortIndex: sortIndex
                        }
                    };
                    _proto.prepareEditButtons = function(headerPanel) {
                        var _a;
                        const editingOptions = null !== (_a = this.option("editing")) && void 0 !== _a ? _a : {};
                        const buttonItems = [];
                        if (editingOptions.allowAdding) {
                            buttonItems.push(this.prepareButtonItem(headerPanel, "addRow", "addRow", 20))
                        }
                        return buttonItems
                    };
                    _proto.highlightDataCell = function($cell, params) {
                        this.shouldHighlightCell(params) && $cell.addClass(_const.CELL_MODIFIED)
                    };
                    _proto._afterInsertRow = function(key) {};
                    _proto._beforeSaveEditData = function(change) {
                        if (change && !(0, _type.isDefined)(change.key) && (0, _type.isDefined)(change.type)) {
                            return true
                        }
                    };
                    _proto._afterSaveEditData = function() {};
                    _proto._beforeCancelEditData = function() {};
                    _proto._allowEditAction = function(actionName, options) {
                        let allowEditAction = this.option("editing.".concat(actionName));
                        if ((0, _type.isFunction)(allowEditAction)) {
                            allowEditAction = allowEditAction({
                                component: this.component,
                                row: options.row
                            })
                        }
                        return allowEditAction
                    };
                    _proto.allowUpdating = function(options, eventName) {
                        var _a;
                        const startEditAction = null !== (_a = this.option("editing.startEditAction")) && void 0 !== _a ? _a : _const.DEFAULT_START_EDIT_ACTION;
                        const needCallback = arguments.length > 1 ? startEditAction === eventName || "down" === eventName : true;
                        return needCallback && this._allowEditAction("allowUpdating", options)
                    };
                    _proto.allowDeleting = function(options) {
                        return this._allowEditAction("allowDeleting", options)
                    };
                    _proto.isCellModified = function(parameters) {
                        var _a, _b, _c;
                        const {
                            columnIndex: columnIndex
                        } = parameters;
                        let modifiedValue = null === (_b = null === (_a = null === parameters || void 0 === parameters ? void 0 : parameters.row) || void 0 === _a ? void 0 : _a.modifiedValues) || void 0 === _b ? void 0 : _b[columnIndex];
                        if (null === (_c = null === parameters || void 0 === parameters ? void 0 : parameters.row) || void 0 === _c ? void 0 : _c.isNewRow) {
                            modifiedValue = parameters.value
                        }
                        return void 0 !== modifiedValue
                    };
                    _proto.isNewRowInEditMode = function() {
                        const visibleEditRowIndex = this._getVisibleEditRowIndex();
                        const rows = this._dataController.items();
                        return visibleEditRowIndex >= 0 ? rows[visibleEditRowIndex].isNewRow : false
                    };
                    _proto._isRowDeleteAllowed = function() {};
                    _proto.shouldHighlightCell = function(parameters) {
                        const cellModified = this.isCellModified(parameters);
                        return cellModified && parameters.column.setCellValue && (this.getEditMode() !== _const.EDIT_MODE_ROW || !parameters.row.isEditing)
                    };
                    return EditingControllerImpl
                }(_m_modules.default.ViewController);
                const editingModule = {
                    defaultOptions: () => ({
                        editing: {
                            mode: "row",
                            refreshMode: "full",
                            newRowPosition: _const.VIEWPORT_TOP_NEW_ROW_POSITION,
                            allowAdding: false,
                            allowUpdating: false,
                            allowDeleting: false,
                            useIcons: false,
                            selectTextOnEditStart: false,
                            confirmDelete: true,
                            texts: {
                                editRow: _message.default.format("dxDataGrid-editingEditRow"),
                                saveAllChanges: _message.default.format("dxDataGrid-editingSaveAllChanges"),
                                saveRowChanges: _message.default.format("dxDataGrid-editingSaveRowChanges"),
                                cancelAllChanges: _message.default.format("dxDataGrid-editingCancelAllChanges"),
                                cancelRowChanges: _message.default.format("dxDataGrid-editingCancelRowChanges"),
                                addRow: _message.default.format("dxDataGrid-editingAddRow"),
                                deleteRow: _message.default.format("dxDataGrid-editingDeleteRow"),
                                undeleteRow: _message.default.format("dxDataGrid-editingUndeleteRow"),
                                confirmDeleteMessage: _message.default.format("dxDataGrid-editingConfirmDeleteMessage"),
                                confirmDeleteTitle: ""
                            },
                            form: {
                                colCount: 2
                            },
                            popup: {},
                            startEditAction: "click",
                            editRowKey: null,
                            editColumnName: null,
                            changes: []
                        },
                        useLegacyColumnButtonTemplate: false
                    }),
                    controllers: {
                        editing: EditingControllerImpl
                    },
                    extenders: {
                        controllers: {
                            data: {
                                init() {
                                    this._editingController = this.getController("editing");
                                    this.callBase()
                                },
                                reload(full, repaintChangesOnly) {
                                    !repaintChangesOnly && this._editingController.refresh();
                                    return this.callBase.apply(this, arguments)
                                },
                                repaintRows() {
                                    if (this.getController("editing").isSaving()) {
                                        return
                                    }
                                    return this.callBase.apply(this, arguments)
                                },
                                _updateEditRow(items) {
                                    var _a;
                                    const editRowKey = this.option(_const.EDITING_EDITROWKEY_OPTION_NAME);
                                    const editRowIndex = _m_utils.default.getIndexByKey(editRowKey, items);
                                    const editItem = items[editRowIndex];
                                    if (editItem) {
                                        editItem.isEditing = true;
                                        null === (_a = this._updateEditItem) || void 0 === _a ? void 0 : _a.call(this, editItem)
                                    }
                                },
                                _updateItemsCore(change) {
                                    this.callBase(change);
                                    this._updateEditRow(this.items(true))
                                },
                                _applyChangeUpdate(change) {
                                    this._updateEditRow(change.items);
                                    this.callBase(change)
                                },
                                _applyChangesOnly(change) {
                                    this._updateEditRow(change.items);
                                    this.callBase(change)
                                },
                                _processItems(items, change) {
                                    items = this._editingController.processItems(items, change);
                                    return this.callBase(items, change)
                                },
                                _processDataItem(dataItem, options) {
                                    this._editingController.processDataItem(dataItem, options, this.generateDataValues);
                                    return this.callBase(dataItem, options)
                                },
                                _processItem(item, options) {
                                    item = this.callBase(item, options);
                                    if (item.isNewRow) {
                                        options.dataIndex--;
                                        delete item.dataIndex
                                    }
                                    return item
                                },
                                _getChangedColumnIndices(oldItem, newItem, rowIndex, isLiveUpdate) {
                                    if (oldItem.isNewRow !== newItem.isNewRow || oldItem.removed !== newItem.removed) {
                                        return
                                    }
                                    return this.callBase.apply(this, arguments)
                                },
                                _isCellChanged(oldRow, newRow, visibleRowIndex, columnIndex, isLiveUpdate) {
                                    const editingController = this.getController("editing");
                                    const cell = oldRow.cells && oldRow.cells[columnIndex];
                                    const isEditing = editingController && editingController.isEditCell(visibleRowIndex, columnIndex);
                                    if (isLiveUpdate && isEditing) {
                                        return false
                                    }
                                    if (cell && cell.column && !cell.column.showEditorAlways && cell.isEditing !== isEditing) {
                                        return true
                                    }
                                    return this.callBase.apply(this, arguments)
                                },
                                needToRefreshOnDataSourceChange(args) {
                                    const editingController = this.getController("editing");
                                    const isParasiteChange = Array.isArray(args.value) && args.value === args.previousValue && editingController.isSaving();
                                    return !isParasiteChange
                                },
                                _handleDataSourceChange(args) {
                                    const result = this.callBase(args);
                                    const changes = this.option("editing.changes");
                                    const dataSource = args.value;
                                    if (Array.isArray(dataSource) && changes.length) {
                                        const dataSourceKeys = dataSource.map(item => this.keyOf(item));
                                        const newChanges = changes.filter(change => "insert" === change.type || dataSourceKeys.some(key => (0, _common.equalByValue)(change.key, key)));
                                        if (newChanges.length !== changes.length) {
                                            this.option("editing.changes", newChanges)
                                        }
                                        const editRowKey = this.option("editing.editRowKey");
                                        const isEditNewItem = newChanges.some(change => "insert" === change.type && (0, _common.equalByValue)(editRowKey, change.key));
                                        if (!isEditNewItem && dataSourceKeys.every(key => !(0, _common.equalByValue)(editRowKey, key))) {
                                            this.option("editing.editRowKey", null)
                                        }
                                    }
                                    return result
                                }
                            }
                        },
                        views: {
                            rowsView: {
                                init() {
                                    this.callBase();
                                    this._editingController = this.getController("editing")
                                },
                                getCellIndex($cell, rowIndex) {
                                    if (!$cell.is("td") && rowIndex >= 0) {
                                        const $cellElements = this.getCellElements(rowIndex);
                                        let cellIndex = -1;
                                        (0, _iterator.each)($cellElements, (index, cellElement) => {
                                            if ((0, _renderer.default)(cellElement).find($cell).length) {
                                                cellIndex = index
                                            }
                                        });
                                        return cellIndex
                                    }
                                    return this.callBase.apply(this, arguments)
                                },
                                publicMethods() {
                                    return this.callBase().concat(["cellValue"])
                                },
                                _getCellTemplate(options) {
                                    const template = this._editingController.getColumnTemplate(options);
                                    return template || this.callBase(options)
                                },
                                _createRow(row) {
                                    const $row = this.callBase.apply(this, arguments);
                                    if (row) {
                                        const isRowRemoved = !!row.removed;
                                        const isRowInserted = !!row.isNewRow;
                                        const isRowModified = !!row.modified;
                                        isRowInserted && $row.addClass(_const.ROW_INSERTED);
                                        isRowModified && $row.addClass(_const.ROW_MODIFIED);
                                        if (isRowInserted || isRowRemoved) {
                                            $row.removeClass(_const.ROW_SELECTED)
                                        }
                                    }
                                    return $row
                                },
                                _getColumnIndexByElement($element) {
                                    let $tableElement = $element.closest("table");
                                    const $tableElements = this.getTableElements();
                                    while ($tableElement.length && !$tableElements.filter($tableElement).length) {
                                        $element = $tableElement.closest("td");
                                        $tableElement = $element.closest("table")
                                    }
                                    return this._getColumnIndexByElementCore($element)
                                },
                                _getColumnIndexByElementCore($element) {
                                    const $targetElement = $element.closest(".".concat(_const.ROW_CLASS, "> td:not(.dx-master-detail-cell)"));
                                    return this.getCellIndex($targetElement)
                                },
                                _editCellByClick(e, eventName) {
                                    const editingController = this._editingController;
                                    const $targetElement = (0, _renderer.default)(e.event.target);
                                    const columnIndex = this._getColumnIndexByElement($targetElement);
                                    const row = this._dataController.items()[e.rowIndex];
                                    const allowUpdating = editingController.allowUpdating({
                                        row: row
                                    }, eventName) || row && row.isNewRow;
                                    const column = this._columnsController.getVisibleColumns()[columnIndex];
                                    const isEditedCell = editingController.isEditCell(e.rowIndex, columnIndex);
                                    const allowEditing = allowUpdating && column && (column.allowEditing || isEditedCell);
                                    const startEditAction = this.option("editing.startEditAction") || "click";
                                    const isShowEditorAlways = column && column.showEditorAlways;
                                    if (isEditedCell) {
                                        return true
                                    }
                                    if ("down" === eventName) {
                                        if (_devices.default.real().ios || _devices.default.real().android) {
                                            (0, _dom.resetActiveElement)()
                                        }
                                        return isShowEditorAlways && allowEditing && editingController.editCell(e.rowIndex, columnIndex)
                                    }
                                    if ("click" === eventName && "dblClick" === startEditAction && this._pointerDownTarget === $targetElement.get(0)) {
                                        const isError = false;
                                        const withoutSaveEditData = null === row || void 0 === row ? void 0 : row.isNewRow;
                                        editingController.closeEditCell(isError, withoutSaveEditData)
                                    }
                                    if (allowEditing && eventName === startEditAction) {
                                        return editingController.editCell(e.rowIndex, columnIndex) || editingController.isEditRow(e.rowIndex)
                                    }
                                },
                                _rowPointerDown(e) {
                                    this._pointerDownTarget = e.event.target;
                                    this._pointerDownTimeout = setTimeout(() => {
                                        this._editCellByClick(e, "down")
                                    })
                                },
                                _rowClick(e) {
                                    const isEditForm = (0, _renderer.default)(e.rowElement).hasClass(this.addWidgetPrefix(_const.EDIT_FORM_CLASS));
                                    e.event[_const.TARGET_COMPONENT_NAME] = this.component;
                                    if (!this._editCellByClick(e, "click") && !isEditForm) {
                                        this.callBase.apply(this, arguments)
                                    }
                                },
                                _rowDblClick(e) {
                                    if (!this._editCellByClick(e, "dblClick")) {
                                        this.callBase.apply(this, arguments)
                                    }
                                },
                                _cellPrepared($cell, parameters) {
                                    var _a;
                                    const editingController = this._editingController;
                                    const isCommandCell = !!parameters.column.command;
                                    const isEditableCell = parameters.setValue;
                                    const isEditRow = editingController.isEditRow(parameters.rowIndex);
                                    const isEditing = (0, _m_editing_utils.isEditingCell)(isEditRow, parameters);
                                    if ((0, _m_editing_utils.isEditingOrShowEditorAlwaysDataCell)(isEditRow, parameters)) {
                                        const {
                                            alignment: alignment
                                        } = parameters.column;
                                        $cell.toggleClass(this.addWidgetPrefix(_const.READONLY_CLASS), !isEditableCell).toggleClass(_const.CELL_FOCUS_DISABLED_CLASS, !isEditableCell);
                                        if (alignment) {
                                            $cell.find(_const.EDITORS_INPUT_SELECTOR).first().css("textAlign", alignment)
                                        }
                                    }
                                    if (isEditing) {
                                        this._editCellPrepared($cell)
                                    }
                                    const hasTemplate = !!(null === (_a = parameters.column) || void 0 === _a ? void 0 : _a.cellTemplate);
                                    if (parameters.column && !isCommandCell && (!hasTemplate || editingController.shouldHighlightCell(parameters))) {
                                        editingController.highlightDataCell($cell, parameters)
                                    }
                                    this.callBase.apply(this, arguments)
                                },
                                _editCellPrepared: _common.noop,
                                _formItemPrepared: _common.noop,
                                _getCellOptions(options) {
                                    const cellOptions = this.callBase(options);
                                    const {
                                        columnIndex: columnIndex,
                                        row: row
                                    } = options;
                                    cellOptions.isEditing = this._editingController.isEditCell(cellOptions.rowIndex, cellOptions.columnIndex);
                                    cellOptions.removed = row.removed;
                                    if (row.modified) {
                                        cellOptions.modified = void 0 !== row.modifiedValues[columnIndex]
                                    }
                                    return cellOptions
                                },
                                _setCellAriaAttributes($cell, cellOptions) {
                                    this.callBase($cell, cellOptions);
                                    if (cellOptions.removed) {
                                        this.setAria("roledescription", _message.default.format("dxDataGrid-ariaDeletedCell"), $cell)
                                    }
                                    if (cellOptions.modified) {
                                        this.setAria("roledescription", _message.default.format("dxDataGrid-ariaModifiedCell"), $cell)
                                    }
                                    const isEditableCell = cellOptions.column.allowEditing && !cellOptions.removed && !cellOptions.modified && "data" === cellOptions.rowType && cellOptions.column.calculateCellValue === cellOptions.column.defaultCalculateCellValue && this._editingController.isCellBasedEditMode();
                                    if (isEditableCell) {
                                        this.setAria("roledescription", _message.default.format("dxDataGrid-ariaEditableCell"), $cell)
                                    }
                                },
                                _createCell(options) {
                                    const $cell = this.callBase(options);
                                    const isEditRow = this._editingController.isEditRow(options.rowIndex);
                                    (0, _m_editing_utils.isEditingOrShowEditorAlwaysDataCell)(isEditRow, options) && $cell.addClass(_const.EDITOR_CELL_CLASS);
                                    return $cell
                                },
                                cellValue(rowIndex, columnIdentifier, value, text) {
                                    const cellOptions = this.getCellOptions(rowIndex, columnIdentifier);
                                    if (cellOptions) {
                                        if (void 0 === value) {
                                            return cellOptions.value
                                        }
                                        this._editingController.updateFieldValue(cellOptions, value, text, true)
                                    }
                                },
                                dispose() {
                                    this.callBase.apply(this, arguments);
                                    clearTimeout(this._pointerDownTimeout)
                                },
                                _renderCore() {
                                    this.callBase.apply(this, arguments);
                                    return this.waitAsyncTemplates(true).done(() => {
                                        this._editingController._focusEditorIfNeed()
                                    })
                                }
                            },
                            headerPanel: {
                                _getToolbarItems() {
                                    const items = this.callBase();
                                    const editButtonItems = this.getController("editing").prepareEditButtons(this);
                                    return editButtonItems.concat(items)
                                },
                                optionChanged(args) {
                                    const {
                                        fullName: fullName
                                    } = args;
                                    switch (args.name) {
                                        case "editing": {
                                            const excludedOptions = [_const.EDITING_POPUP_OPTION_NAME, _const.EDITING_CHANGES_OPTION_NAME, _const.EDITING_EDITCOLUMNNAME_OPTION_NAME, _const.EDITING_EDITROWKEY_OPTION_NAME];
                                            const shouldInvalidate = fullName && !excludedOptions.some(optionName => optionName === fullName);
                                            shouldInvalidate && this._invalidate();
                                            this.callBase(args);
                                            break
                                        }
                                        case "useLegacyColumnButtonTemplate":
                                            args.handled = true;
                                            break;
                                        default:
                                            this.callBase(args)
                                    }
                                },
                                isVisible() {
                                    const editingOptions = this.getController("editing").option("editing");
                                    return this.callBase() || (null === editingOptions || void 0 === editingOptions ? void 0 : editingOptions.allowAdding)
                                }
                            }
                        }
                    }
                };
                exports.editingModule = editingModule
            },
        68802:
            /*!********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/editing/m_editing_cell_based.js ***!
              \********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.editingCellBasedModule = void 0;
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../../core/dom_adapter */ 73349));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _dom = __webpack_require__( /*! ../../../../core/utils/dom */ 3532);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _array_utils = __webpack_require__( /*! ../../../../data/array_utils */ 60637);
                var _click = __webpack_require__( /*! ../../../../events/click */ 95429);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../events/core/events_engine */ 55994));
                var _hold = _interopRequireDefault(__webpack_require__( /*! ../../../../events/hold */ 11699));
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../../events/pointer */ 93786));
                var _index = __webpack_require__( /*! ../../../../events/utils/index */ 39611);
                var _const = __webpack_require__( /*! ./const */ 72313);
                var _m_editing_utils = __webpack_require__( /*! ./m_editing_utils */ 89237);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const editingCellBasedModule = {
                    extenders: {
                        controllers: {
                            editing: Base => function(_Base) {
                                ! function(subClass, superClass) {
                                    subClass.prototype = Object.create(superClass.prototype);
                                    subClass.prototype.constructor = subClass;
                                    _setPrototypeOf(subClass, superClass)
                                }(CellBasedEditingControllerExtender, _Base);

                                function CellBasedEditingControllerExtender() {
                                    return _Base.apply(this, arguments) || this
                                }
                                var _proto = CellBasedEditingControllerExtender.prototype;
                                _proto.init = function() {
                                    const needCreateHandlers = !this._saveEditorHandler;
                                    _Base.prototype.init.call(this);
                                    if (needCreateHandlers) {
                                        let $pointerDownTarget;
                                        let isResizing;
                                        this._pointerUpEditorHandler = () => {
                                            var _a;
                                            isResizing = null === (_a = this.getController("columnsResizer")) || void 0 === _a ? void 0 : _a.isResizing()
                                        };
                                        this._pointerDownEditorHandler = e => $pointerDownTarget = (0, _renderer.default)(e.target);
                                        this._saveEditorHandler = this.createAction((function(e) {
                                            const {
                                                event: event
                                            } = e;
                                            const $target = (0, _renderer.default)(event.target);
                                            const targetComponent = event[_const.TARGET_COMPONENT_NAME];
                                            const {
                                                component: component
                                            } = this;
                                            if ((0, _m_editing_utils.isEditable)($pointerDownTarget) && !$pointerDownTarget.is($target)) {
                                                return
                                            }

                                            function checkEditorPopup($element) {
                                                if (!$element) {
                                                    return false
                                                }
                                                const $dropDownEditorOverlay = $element.closest(".".concat(_const.DROPDOWN_EDITOR_OVERLAY_CLASS));
                                                const $componentElement = component.$element();
                                                return $dropDownEditorOverlay.length > 0 && 0 === $componentElement.closest($dropDownEditorOverlay).length
                                            }
                                            if (this.isCellOrBatchEditMode() && !this._editCellInProgress) {
                                                const isEditorPopup = checkEditorPopup($target) || checkEditorPopup(null === targetComponent || void 0 === targetComponent ? void 0 : targetComponent.$element());
                                                const isAnotherComponent = targetComponent && !targetComponent._disposed && targetComponent !== this.component;
                                                const isAddRowButton = !!$target.closest(".".concat(this.addWidgetPrefix(_const.ADD_ROW_BUTTON_CLASS))).length;
                                                const isFocusOverlay = $target.hasClass(this.addWidgetPrefix(_const.FOCUS_OVERLAY_CLASS));
                                                const isCellEditMode = this.isCellEditMode();
                                                if (!isResizing && !isEditorPopup && !isFocusOverlay && !(isAddRowButton && isCellEditMode && this.isEditing()) && ((0, _dom.isElementInDom)($target) || isAnotherComponent)) {
                                                    this._closeEditItem.bind(this)($target)
                                                }
                                            }
                                        }));
                                        _events_engine.default.on(_dom_adapter.default.getDocument(), _pointer.default.up, this._pointerUpEditorHandler);
                                        _events_engine.default.on(_dom_adapter.default.getDocument(), _pointer.default.down, this._pointerDownEditorHandler);
                                        _events_engine.default.on(_dom_adapter.default.getDocument(), _click.name, this._saveEditorHandler)
                                    }
                                };
                                _proto.isCellEditMode = function() {
                                    return this.option("editing.mode") === _const.EDIT_MODE_CELL
                                };
                                _proto.isBatchEditMode = function() {
                                    return this.option("editing.mode") === _const.EDIT_MODE_BATCH
                                };
                                _proto.isCellOrBatchEditMode = function() {
                                    return this.isCellEditMode() || this.isBatchEditMode()
                                };
                                _proto._needToCloseEditableCell = function($targetElement) {
                                    var _a;
                                    const $element = this.component.$element();
                                    let result = this.isEditing();
                                    const isCurrentComponentElement = !$element || !!$targetElement.closest($element).length;
                                    if (isCurrentComponentElement) {
                                        const isDataRow = $targetElement.closest(".".concat(_const.DATA_ROW_CLASS)).length;
                                        if (isDataRow) {
                                            const rowsView = this.getView("rowsView");
                                            const $targetCell = $targetElement.closest(".".concat(_const.ROW_CLASS, "> td"));
                                            const rowIndex = rowsView.getRowIndex($targetCell.parent());
                                            const cellElements = rowsView.getCellElements(rowIndex);
                                            if (null === cellElements || void 0 === cellElements ? void 0 : cellElements.length) {
                                                const columnIndex = cellElements.index($targetCell);
                                                const visibleColumns = this._columnsController.getVisibleColumns();
                                                const allowEditing = null === (_a = visibleColumns[columnIndex]) || void 0 === _a ? void 0 : _a.allowEditing;
                                                const isEditingCell = this.isEditCell(rowIndex, columnIndex);
                                                result = result && !allowEditing && !isEditingCell
                                            }
                                        }
                                    }
                                    return result || _Base.prototype._needToCloseEditableCell.call(this, $targetElement)
                                };
                                _proto._closeEditItem = function($targetElement) {
                                    if (this._needToCloseEditableCell($targetElement)) {
                                        this.closeEditCell()
                                    }
                                };
                                _proto._focusEditorIfNeed = function() {
                                    var _a;
                                    if (this._needFocusEditor && this.isCellOrBatchEditMode()) {
                                        const editColumnIndex = this._getVisibleEditColumnIndex();
                                        const $cell = null === (_a = this._rowsView) || void 0 === _a ? void 0 : _a._getCellElement(this._getVisibleEditRowIndex(), editColumnIndex);
                                        if ($cell && !$cell.find(":focus").length) {
                                            this._focusEditingCell(() => {
                                                this._editCellInProgress = false
                                            }, $cell, true)
                                        } else {
                                            this._editCellInProgress = false
                                        }
                                        this._needFocusEditor = false
                                    } else {
                                        _Base.prototype._focusEditorIfNeed.call(this)
                                    }
                                };
                                _proto.isEditing = function() {
                                    if (this.isCellOrBatchEditMode()) {
                                        const isEditRowKeyDefined = (0, _type.isDefined)(this.option(_const.EDITING_EDITROWKEY_OPTION_NAME));
                                        const isEditColumnNameDefined = (0, _type.isDefined)(this.option(_const.EDITING_EDITCOLUMNNAME_OPTION_NAME));
                                        return isEditRowKeyDefined && isEditColumnNameDefined
                                    }
                                    return _Base.prototype.isEditing.call(this)
                                };
                                _proto._handleEditColumnNameChange = function(args) {
                                    const oldRowIndex = this._getVisibleEditRowIndex(args.previousValue);
                                    if (this.isCellOrBatchEditMode() && -1 !== oldRowIndex && (0, _type.isDefined)(args.value) && args.value !== args.previousValue) {
                                        const columnIndex = this._columnsController.getVisibleColumnIndex(args.value);
                                        const oldColumnIndex = this._columnsController.getVisibleColumnIndex(args.previousValue);
                                        this._editCellFromOptionChanged(columnIndex, oldColumnIndex, oldRowIndex)
                                    }
                                };
                                _proto._addRow = function(parentKey) {
                                    if (this.isCellEditMode() && this.hasChanges()) {
                                        const deferred = new _deferred.Deferred;
                                        this.saveEditData().done(() => {
                                            if (!this.hasChanges()) {
                                                this.addRow(parentKey).done(deferred.resolve).fail(deferred.reject)
                                            } else {
                                                deferred.reject("cancel")
                                            }
                                        });
                                        return deferred.promise()
                                    }
                                    return _Base.prototype._addRow.call(this, parentKey)
                                };
                                _proto.editCell = function(rowIndex, columnIndex) {
                                    return this._editCell({
                                        rowIndex: rowIndex,
                                        columnIndex: columnIndex
                                    })
                                };
                                _proto._editCell = function(options) {
                                    const d = new _deferred.Deferred;
                                    let coreResult;
                                    this.executeOperation(d, () => {
                                        coreResult = this._editCellCore(options);
                                        (0, _deferred.when)(coreResult).done(d.resolve).fail(d.reject)
                                    });
                                    return void 0 !== coreResult ? coreResult : d.promise()
                                };
                                _proto._editCellCore = function(options) {
                                    const dataController = this._dataController;
                                    const isEditByOptionChanged = (0, _type.isDefined)(options.oldColumnIndex) || (0, _type.isDefined)(options.oldRowIndex);
                                    const {
                                        columnIndex: columnIndex,
                                        rowIndex: rowIndex,
                                        column: column,
                                        item: item
                                    } = this._getNormalizedEditCellOptions(options);
                                    const params = {
                                        data: null === item || void 0 === item ? void 0 : item.data,
                                        cancel: false,
                                        column: column
                                    };
                                    if (void 0 === item.key) {
                                        this._dataController.fireError("E1043");
                                        return
                                    }
                                    if (column && ("data" === item.rowType || "detailAdaptive" === item.rowType) && !item.removed && this.isCellOrBatchEditMode()) {
                                        if (!isEditByOptionChanged && this.isEditCell(rowIndex, columnIndex)) {
                                            return true
                                        }
                                        const editRowIndex = rowIndex + dataController.getRowIndexOffset();
                                        return (0, _deferred.when)(this._beforeEditCell(rowIndex, columnIndex, item)).done(cancel => {
                                            if (cancel) {
                                                return
                                            }
                                            if (!this._prepareEditCell(params, item, columnIndex, editRowIndex)) {
                                                this._processCanceledEditingCell()
                                            }
                                        })
                                    }
                                    return false
                                };
                                _proto._beforeEditCell = function(rowIndex, columnIndex, item) {
                                    if (this.isCellEditMode() && !item.isNewRow && this.hasChanges()) {
                                        const isSaving = new _deferred.Deferred;
                                        this.saveEditData().always(() => {
                                            isSaving.resolve(this.hasChanges())
                                        });
                                        this.addDeferred(isSaving);
                                        return isSaving
                                    }
                                    return false
                                };
                                _proto.publicMethods = function() {
                                    const publicMethods = _Base.prototype.publicMethods.call(this);
                                    return publicMethods.concat(["editCell", "closeEditCell"])
                                };
                                _proto._getNormalizedEditCellOptions = function(_ref) {
                                    let {
                                        oldColumnIndex: oldColumnIndex,
                                        oldRowIndex: oldRowIndex,
                                        columnIndex: columnIndex,
                                        rowIndex: rowIndex
                                    } = _ref;
                                    const columnsController = this._columnsController;
                                    const visibleColumns = columnsController.getVisibleColumns();
                                    const items = this._dataController.items();
                                    const item = items[rowIndex];
                                    let oldColumn;
                                    if ((0, _type.isDefined)(oldColumnIndex)) {
                                        oldColumn = visibleColumns[oldColumnIndex]
                                    } else {
                                        oldColumn = this._getEditColumn()
                                    }
                                    if (!(0, _type.isDefined)(oldRowIndex)) {
                                        oldRowIndex = this._getVisibleEditRowIndex()
                                    }
                                    if ((0, _type.isString)(columnIndex)) {
                                        columnIndex = columnsController.columnOption(columnIndex, "index");
                                        columnIndex = columnsController.getVisibleIndex(columnIndex)
                                    }
                                    const column = visibleColumns[columnIndex];
                                    return {
                                        oldColumn: oldColumn,
                                        columnIndex: columnIndex,
                                        oldRowIndex: oldRowIndex,
                                        rowIndex: rowIndex,
                                        column: column,
                                        item: item
                                    }
                                };
                                _proto._prepareEditCell = function(params, item, editColumnIndex, editRowIndex) {
                                    var _a;
                                    if (!item.isNewRow) {
                                        params.key = item.key
                                    }
                                    if (this._isEditingStart(params)) {
                                        return false
                                    }
                                    this._pageIndex = this._dataController.pageIndex();
                                    this._setEditRowKey(item.key);
                                    this._setEditColumnNameByIndex(editColumnIndex);
                                    if (!params.column.showEditorAlways) {
                                        this._addInternalData({
                                            key: item.key,
                                            oldData: null !== (_a = item.oldData) && void 0 !== _a ? _a : item.data
                                        })
                                    }
                                    return true
                                };
                                _proto.closeEditCell = function(isError, withoutSaveEditData) {
                                    let result = (0, _deferred.when)();
                                    const oldEditRowIndex = this._getVisibleEditRowIndex();
                                    if (this.isCellOrBatchEditMode()) {
                                        const deferred = new _deferred.Deferred;
                                        result = new _deferred.Deferred;
                                        this.executeOperation(deferred, () => {
                                            this._closeEditCellCore(isError, oldEditRowIndex, withoutSaveEditData).always(result.resolve)
                                        })
                                    }
                                    return result.promise()
                                };
                                _proto._closeEditCellCore = function(isError, oldEditRowIndex, withoutSaveEditData) {
                                    const dataController = this._dataController;
                                    const deferred = new _deferred.Deferred;
                                    const promise = deferred.promise();
                                    if (this.isCellEditMode() && this.hasChanges()) {
                                        if (!withoutSaveEditData) {
                                            this.saveEditData().done(error => {
                                                if (!this.hasChanges()) {
                                                    this.closeEditCell(!!error).always(deferred.resolve);
                                                    return
                                                }
                                                deferred.resolve()
                                            });
                                            return promise
                                        }
                                    } else {
                                        this._resetEditRowKey();
                                        this._resetEditColumnName();
                                        if (oldEditRowIndex >= 0) {
                                            const rowIndices = [oldEditRowIndex];
                                            this._beforeCloseEditCellInBatchMode(rowIndices);
                                            if (!isError) {
                                                dataController.updateItems({
                                                    changeType: "update",
                                                    rowIndices: rowIndices
                                                })
                                            }
                                        }
                                    }
                                    deferred.resolve();
                                    return promise
                                };
                                _proto._resetModifiedClassCells = function(changes) {
                                    if (this.isBatchEditMode()) {
                                        const columnsCount = this._columnsController.getVisibleColumns().length;
                                        changes.forEach(_ref2 => {
                                            let {
                                                key: key
                                            } = _ref2;
                                            const rowIndex = this._dataController.getRowIndexByKey(key);
                                            for (let columnIndex = 0; columnIndex < columnsCount; columnIndex++) {
                                                const cellElement = this._rowsView._getCellElement(rowIndex, columnIndex);
                                                null === cellElement || void 0 === cellElement ? void 0 : cellElement.removeClass(_const.CELL_MODIFIED_CLASS)
                                            }
                                        })
                                    }
                                };
                                _proto._prepareChange = function(options, value, text) {
                                    const $cellElement = (0, _renderer.default)(options.cellElement);
                                    if (this.isBatchEditMode() && void 0 !== options.key) {
                                        this._applyModified($cellElement, options)
                                    }
                                    return _Base.prototype._prepareChange.call(this, options, value, text)
                                };
                                _proto._cancelSaving = function(result) {
                                    const dataController = this._dataController;
                                    if (this.isCellOrBatchEditMode()) {
                                        if (this.isBatchEditMode()) {
                                            this._resetEditIndices()
                                        }
                                        dataController.updateItems()
                                    }
                                    _Base.prototype._cancelSaving.call(this, result)
                                };
                                _proto.optionChanged = function(args) {
                                    const {
                                        fullName: fullName
                                    } = args;
                                    if ("editing" === args.name && fullName === _const.EDITING_EDITCOLUMNNAME_OPTION_NAME) {
                                        this._handleEditColumnNameChange(args);
                                        args.handled = true
                                    } else {
                                        _Base.prototype.optionChanged.call(this, args)
                                    }
                                };
                                _proto._editCellFromOptionChanged = function(columnIndex, oldColumnIndex, oldRowIndex) {
                                    const columns = this._columnsController.getVisibleColumns();
                                    if (columnIndex > -1) {
                                        (0, _common.deferRender)(() => {
                                            this._repaintEditCell(columns[columnIndex], columns[oldColumnIndex], oldRowIndex)
                                        })
                                    }
                                };
                                _proto._handleEditRowKeyChange = function(args) {
                                    var _a;
                                    if (this.isCellOrBatchEditMode()) {
                                        const columnIndex = this._getVisibleEditColumnIndex();
                                        const oldRowIndexCorrection = this._getEditRowIndexCorrection();
                                        const oldRowIndex = this._dataController.getRowIndexByKey(args.previousValue) + oldRowIndexCorrection;
                                        if ((0, _type.isDefined)(args.value) && args.value !== args.previousValue) {
                                            null === (_a = this._editCellFromOptionChanged) || void 0 === _a ? void 0 : _a.call(this, columnIndex, columnIndex, oldRowIndex)
                                        }
                                    } else {
                                        _Base.prototype._handleEditRowKeyChange.call(this, args)
                                    }
                                };
                                _proto.deleteRow = function(rowIndex) {
                                    if (this.isCellEditMode() && this.isEditing()) {
                                        const {
                                            isNewRow: isNewRow
                                        } = this._dataController.items()[rowIndex];
                                        const rowKey = this._dataController.getKeyByRowIndex(rowIndex);
                                        this.closeEditCell(null, isNewRow).always(() => {
                                            rowIndex = this._dataController.getRowIndexByKey(rowKey);
                                            this._checkAndDeleteRow(rowIndex)
                                        })
                                    } else {
                                        _Base.prototype.deleteRow.call(this, rowIndex)
                                    }
                                };
                                _proto._checkAndDeleteRow = function(rowIndex) {
                                    if (this.isBatchEditMode()) {
                                        this._deleteRowCore(rowIndex)
                                    } else {
                                        _Base.prototype._checkAndDeleteRow.call(this, rowIndex)
                                    }
                                };
                                _proto._refreshCore = function(params) {
                                    const {
                                        isPageChanged: isPageChanged
                                    } = null !== params && void 0 !== params ? params : {};
                                    const needResetIndexes = this.isBatchEditMode() || isPageChanged && "virtual" !== this.option("scrolling.mode");
                                    if (this.isCellOrBatchEditMode()) {
                                        if (needResetIndexes) {
                                            this._resetEditColumnName();
                                            this._resetEditRowKey()
                                        }
                                    } else {
                                        _Base.prototype._refreshCore.call(this, params)
                                    }
                                };
                                _proto._allowRowAdding = function(params) {
                                    if (this.isBatchEditMode()) {
                                        return true
                                    }
                                    return _Base.prototype._allowRowAdding.call(this, params)
                                };
                                _proto._afterDeleteRow = function(rowIndex, oldEditRowIndex) {
                                    const dataController = this._dataController;
                                    if (this.isBatchEditMode()) {
                                        dataController.updateItems({
                                            changeType: "update",
                                            rowIndices: [oldEditRowIndex, rowIndex]
                                        });
                                        return (new _deferred.Deferred).resolve()
                                    }
                                    return _Base.prototype._afterDeleteRow.call(this, rowIndex, oldEditRowIndex)
                                };
                                _proto._updateEditRow = function(row, forceUpdateRow, isCustomSetCellValue) {
                                    if (this.isCellOrBatchEditMode()) {
                                        this._updateRowImmediately(row, forceUpdateRow, isCustomSetCellValue)
                                    } else {
                                        _Base.prototype._updateEditRow.call(this, row, forceUpdateRow, isCustomSetCellValue)
                                    }
                                };
                                _proto._isDefaultButtonVisible = function(button, options) {
                                    if (this.isCellOrBatchEditMode()) {
                                        const isBatchMode = this.isBatchEditMode();
                                        switch (button.name) {
                                            case "save":
                                            case "cancel":
                                            case "edit":
                                                return false;
                                            case "delete":
                                                return _Base.prototype._isDefaultButtonVisible.call(this, button, options) && (!isBatchMode || !options.row.removed);
                                            case "undelete":
                                                return isBatchMode && this.allowDeleting(options) && options.row.removed;
                                            default:
                                                return _Base.prototype._isDefaultButtonVisible.call(this, button, options)
                                        }
                                    }
                                    return _Base.prototype._isDefaultButtonVisible.call(this, button, options)
                                };
                                _proto._isRowDeleteAllowed = function() {
                                    const callBaseResult = _Base.prototype._isRowDeleteAllowed.call(this);
                                    return callBaseResult || this.isBatchEditMode()
                                };
                                _proto._beforeEndSaving = function(changes) {
                                    var _a;
                                    if (this.isCellEditMode()) {
                                        if ("update" !== (null === (_a = changes[0]) || void 0 === _a ? void 0 : _a.type)) {
                                            _Base.prototype._beforeEndSaving.call(this, changes)
                                        }
                                    } else {
                                        if (this.isBatchEditMode()) {
                                            this._resetModifiedClassCells(changes)
                                        }
                                        _Base.prototype._beforeEndSaving.call(this, changes)
                                    }
                                };
                                _proto.prepareEditButtons = function(headerPanel) {
                                    var _a;
                                    const editingOptions = null !== (_a = this.option("editing")) && void 0 !== _a ? _a : {};
                                    const buttonItems = _Base.prototype.prepareEditButtons.call(this, headerPanel);
                                    const needEditingButtons = editingOptions.allowUpdating || editingOptions.allowAdding || editingOptions.allowDeleting;
                                    if (needEditingButtons && this.isBatchEditMode()) {
                                        buttonItems.push(this.prepareButtonItem(headerPanel, "save", "saveEditData", 21));
                                        buttonItems.push(this.prepareButtonItem(headerPanel, "revert", "cancelEditData", 22))
                                    }
                                    return buttonItems
                                };
                                _proto._saveEditDataInner = function() {
                                    const editRow = this._dataController.getVisibleRows()[this.getEditRowIndex()];
                                    const editColumn = this._getEditColumn();
                                    const showEditorAlways = null === editColumn || void 0 === editColumn ? void 0 : editColumn.showEditorAlways;
                                    const isUpdateInCellMode = this.isCellEditMode() && !(null === editRow || void 0 === editRow ? void 0 : editRow.isNewRow);
                                    let deferred;
                                    if (isUpdateInCellMode && showEditorAlways) {
                                        deferred = new _deferred.Deferred;
                                        this.addDeferred(deferred)
                                    }
                                    return _Base.prototype._saveEditDataInner.call(this).always(null === deferred || void 0 === deferred ? void 0 : deferred.resolve)
                                };
                                _proto._applyChange = function(options, params, forceUpdateRow) {
                                    const isUpdateInCellMode = this.isCellEditMode() && options.row && !options.row.isNewRow;
                                    const {
                                        showEditorAlways: showEditorAlways
                                    } = options.column;
                                    const isCustomSetCellValue = options.column.setCellValue !== options.column.defaultSetCellValue;
                                    const focusPreviousEditingCell = showEditorAlways && !forceUpdateRow && isUpdateInCellMode && this.hasEditData() && !this.isEditCell(options.rowIndex, options.columnIndex);
                                    if (focusPreviousEditingCell) {
                                        this._focusEditingCell();
                                        this._updateEditRow(options.row, true, isCustomSetCellValue);
                                        return
                                    }
                                    return _Base.prototype._applyChange.call(this, options, params, forceUpdateRow)
                                };
                                _proto._applyChangeCore = function(options, forceUpdateRow) {
                                    const {
                                        showEditorAlways: showEditorAlways
                                    } = options.column;
                                    const isUpdateInCellMode = this.isCellEditMode() && options.row && !options.row.isNewRow;
                                    if (showEditorAlways && !forceUpdateRow) {
                                        if (isUpdateInCellMode) {
                                            this._setEditRowKey(options.row.key, true);
                                            this._setEditColumnNameByIndex(options.columnIndex, true);
                                            return this.saveEditData()
                                        }
                                        if (this.isBatchEditMode()) {
                                            forceUpdateRow = this._needUpdateRow(options.column);
                                            return _Base.prototype._applyChangeCore.call(this, options, forceUpdateRow)
                                        }
                                    }
                                    return _Base.prototype._applyChangeCore.call(this, options, forceUpdateRow)
                                };
                                _proto._processDataItemCore = function(item, change, key, columns, generateDataValues) {
                                    const {
                                        data: data,
                                        type: type
                                    } = change;
                                    if (this.isBatchEditMode() && type === _const.DATA_EDIT_DATA_REMOVE_TYPE) {
                                        item.data = (0, _array_utils.createObjectWithChanges)(item.data, data)
                                    }
                                    _Base.prototype._processDataItemCore.call(this, item, change, key, columns, generateDataValues)
                                };
                                _proto._processRemoveCore = function(changes, editIndex, processIfBatch) {
                                    if (this.isBatchEditMode() && !processIfBatch) {
                                        return
                                    }
                                    return _Base.prototype._processRemoveCore.call(this, changes, editIndex, processIfBatch)
                                };
                                _proto._processRemoveIfError = function(changes, editIndex) {
                                    if (this.isBatchEditMode()) {
                                        return
                                    }
                                    return _Base.prototype._processRemoveIfError.call(this, changes, editIndex)
                                };
                                _proto._beforeFocusElementInRow = function(rowIndex) {
                                    _Base.prototype._beforeFocusElementInRow.call(this, rowIndex);
                                    const editRowIndex = rowIndex >= 0 ? rowIndex : 0;
                                    const columnIndex = this.getFirstEditableColumnIndex();
                                    columnIndex >= 0 && this.editCell(editRowIndex, columnIndex)
                                };
                                return CellBasedEditingControllerExtender
                            }(Base)
                        },
                        views: {
                            rowsView: {
                                _createTable() {
                                    const $table = this.callBase.apply(this, arguments);
                                    const editingController = this._editingController;
                                    if (editingController.isCellOrBatchEditMode() && this.option("editing.allowUpdating")) {
                                        _events_engine.default.on($table, (0, _index.addNamespace)(_hold.default.name, "dxDataGridRowsView"), "td:not(.".concat(_const.EDITOR_CELL_CLASS, ")"), this.createAction(() => {
                                            if (editingController.isEditing()) {
                                                editingController.closeEditCell()
                                            }
                                        }))
                                    }
                                    return $table
                                },
                                _createRow(row) {
                                    const $row = this.callBase.apply(this, arguments);
                                    if (row) {
                                        const editingController = this._editingController;
                                        const isRowRemoved = !!row.removed;
                                        if (editingController.isBatchEditMode()) {
                                            isRowRemoved && $row.addClass(_const.ROW_REMOVED)
                                        }
                                    }
                                    return $row
                                }
                            },
                            headerPanel: {
                                isVisible() {
                                    const editingOptions = this.getController("editing").option("editing");
                                    return this.callBase() || editingOptions && (editingOptions.allowUpdating || editingOptions.allowDeleting) && editingOptions.mode === _const.EDIT_MODE_BATCH
                                }
                            }
                        }
                    }
                };
                exports.editingCellBasedModule = editingCellBasedModule
            },
        99211:
            /*!********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/editing/m_editing_form_based.js ***!
              \********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.editingFormBasedModule = void 0;
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../../core/devices */ 20530));
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../../core/guid */ 73176));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _dom = __webpack_require__( /*! ../../../../core/utils/dom */ 3532);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../events/core/events_engine */ 55994));
                var _remove = __webpack_require__( /*! ../../../../events/remove */ 29007);
                var _button = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/button */ 63008));
                var _form = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/form */ 17737));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/popup/ui.popup */ 51495));
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/scroll_view/ui.scrollable */ 41183));
                var _const = __webpack_require__( /*! ./const */ 72313);
                var _m_editing_utils = __webpack_require__( /*! ./m_editing_utils */ 89237);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const editingFormBasedModule = {
                    extenders: {
                        controllers: {
                            editing: Base => function(_Base) {
                                ! function(subClass, superClass) {
                                    subClass.prototype = Object.create(superClass.prototype);
                                    subClass.prototype.constructor = subClass;
                                    _setPrototypeOf(subClass, superClass)
                                }(FormBasedEditingControllerExtender, _Base);

                                function FormBasedEditingControllerExtender() {
                                    return _Base.apply(this, arguments) || this
                                }
                                var _proto = FormBasedEditingControllerExtender.prototype;
                                _proto.init = function() {
                                    this._editForm = null;
                                    this._updateEditFormDeferred = null;
                                    _Base.prototype.init.call(this)
                                };
                                _proto.isFormOrPopupEditMode = function() {
                                    return this.isPopupEditMode() || this.isFormEditMode()
                                };
                                _proto.isPopupEditMode = function() {
                                    const editMode = this.option("editing.mode");
                                    return editMode === _const.EDIT_MODE_POPUP
                                };
                                _proto.isFormEditMode = function() {
                                    const editMode = this.option("editing.mode");
                                    return editMode === _const.EDIT_MODE_FORM
                                };
                                _proto.getFirstEditableColumnIndex = function() {
                                    const firstFormItem = this._firstFormItem;
                                    if (this.isFormEditMode() && firstFormItem) {
                                        const editRowKey = this.option(_const.EDITING_EDITROWKEY_OPTION_NAME);
                                        const editRowIndex = this._dataController.getRowIndexByKey(editRowKey);
                                        const $editFormElements = this._rowsView.getCellElements(editRowIndex);
                                        return this._rowsView._getEditFormEditorVisibleIndex($editFormElements, firstFormItem.column)
                                    }
                                    return _Base.prototype.getFirstEditableColumnIndex.call(this)
                                };
                                _proto.getEditFormRowIndex = function() {
                                    return this.isFormOrPopupEditMode() ? this._getVisibleEditRowIndex() : _Base.prototype.getEditFormRowIndex.call(this)
                                };
                                _proto._isEditColumnVisible = function() {
                                    const result = _Base.prototype._isEditColumnVisible.call(this);
                                    const editingOptions = this.option("editing");
                                    return this.isFormOrPopupEditMode() ? editingOptions.allowUpdating || result : result
                                };
                                _proto._handleDataChanged = function(args) {
                                    var _a, _b;
                                    if (this.isPopupEditMode()) {
                                        const editRowKey = this.option("editing.editRowKey");
                                        const hasEditRow = null === (_a = null === args || void 0 === args ? void 0 : args.items) || void 0 === _a ? void 0 : _a.some(item => (0, _common.equalByValue)(item.key, editRowKey));
                                        const onlyInsertChanges = (null === (_b = args.changeTypes) || void 0 === _b ? void 0 : _b.length) && args.changeTypes.every(item => "insert" === item);
                                        if (("refresh" === args.changeType || hasEditRow && args.isOptionChanged) && !onlyInsertChanges) {
                                            this._repaintEditPopup()
                                        }
                                    }
                                    _Base.prototype._handleDataChanged.call(this, args)
                                };
                                _proto.getPopupContent = function() {
                                    var _a;
                                    const popupVisible = null === (_a = this._editPopup) || void 0 === _a ? void 0 : _a.option("visible");
                                    if (this.isPopupEditMode() && popupVisible) {
                                        return this._$popupContent
                                    }
                                };
                                _proto._showAddedRow = function(rowIndex) {
                                    if (this.isPopupEditMode()) {
                                        this._showEditPopup(rowIndex)
                                    } else {
                                        _Base.prototype._showAddedRow.call(this, rowIndex)
                                    }
                                };
                                _proto._cancelEditDataCore = function() {
                                    _Base.prototype._cancelEditDataCore.call(this);
                                    if (this.isPopupEditMode()) {
                                        this._hideEditPopup()
                                    }
                                };
                                _proto._updateEditRowCore = function(row, skipCurrentRow, isCustomSetCellValue) {
                                    var _a;
                                    const editForm = this._editForm;
                                    if (this.isPopupEditMode()) {
                                        if (this.option("repaintChangesOnly")) {
                                            null === (_a = row.update) || void 0 === _a ? void 0 : _a.call(row, row);
                                            this._rowsView.renderDelayedTemplates()
                                        } else if (editForm) {
                                            this._updateEditFormDeferred = (new _deferred.Deferred).done(() => editForm.repaint());
                                            if (!this._updateLockCount) {
                                                this._updateEditFormDeferred.resolve()
                                            }
                                        }
                                    } else {
                                        _Base.prototype._updateEditRowCore.call(this, row, skipCurrentRow, isCustomSetCellValue)
                                    }
                                };
                                _proto._showEditPopup = function(rowIndex, repaintForm) {
                                    const isMobileDevice = "desktop" !== _devices.default.current().deviceType;
                                    const editPopupClass = this.addWidgetPrefix(_const.EDIT_POPUP_CLASS);
                                    const popupOptions = (0, _extend.extend)({
                                        showTitle: false,
                                        fullScreen: isMobileDevice,
                                        wrapperAttr: {
                                            class: editPopupClass
                                        },
                                        toolbarItems: [{
                                            toolbar: "bottom",
                                            location: "after",
                                            widget: "dxButton",
                                            options: this._getSaveButtonConfig()
                                        }, {
                                            toolbar: "bottom",
                                            location: "after",
                                            widget: "dxButton",
                                            options: this._getCancelButtonConfig()
                                        }],
                                        contentTemplate: this._getPopupEditFormTemplate(rowIndex)
                                    }, this.option(_const.EDITING_POPUP_OPTION_NAME));
                                    if (!this._editPopup) {
                                        const $popupContainer = (0, _renderer.default)("<div>").appendTo(this.component.$element()).addClass(editPopupClass);
                                        this._editPopup = this._createComponent($popupContainer, _ui.default);
                                        this._editPopup.on("hiding", this._getEditPopupHiddenHandler());
                                        this._editPopup.on("shown", e => {
                                            var _a;
                                            _events_engine.default.trigger(e.component.$content().find(_const.FOCUSABLE_ELEMENT_SELECTOR).not(".".concat(_const.FOCUSABLE_ELEMENT_CLASS)).first(), "focus");
                                            if (repaintForm) {
                                                null === (_a = this._editForm) || void 0 === _a ? void 0 : _a.repaint()
                                            }
                                        })
                                    }
                                    this._editPopup.option(popupOptions);
                                    this._editPopup.show();
                                    _Base.prototype._showEditPopup.call(this, rowIndex, repaintForm)
                                };
                                _proto._getPopupEditFormTemplate = function(rowIndex) {
                                    const row = this.component.getVisibleRows()[rowIndex];
                                    const templateOptions = {
                                        row: row,
                                        values: row.values,
                                        rowType: row.rowType,
                                        key: row.key,
                                        rowIndex: rowIndex
                                    };
                                    this._rowsView._addWatchMethod(templateOptions, row);
                                    return container => {
                                        const formTemplate = this.getEditFormTemplate();
                                        const scrollable = this._createComponent((0, _renderer.default)("<div>").appendTo(container), _ui2.default);
                                        this._$popupContent = (0, _renderer.default)(scrollable.content());
                                        formTemplate(this._$popupContent, templateOptions, {
                                            isPopupForm: true
                                        });
                                        this._rowsView.renderDelayedTemplates();
                                        (0, _renderer.default)(container).parent().attr("aria-label", this.localize("dxDataGrid-ariaEditForm"))
                                    }
                                };
                                _proto._repaintEditPopup = function() {
                                    var _a, _b;
                                    const rowIndex = this._getVisibleEditRowIndex();
                                    if (rowIndex >= 0) {
                                        const defaultAnimation = null === (_a = this._editPopup) || void 0 === _a ? void 0 : _a.option("animation");
                                        null === (_b = this._editPopup) || void 0 === _b ? void 0 : _b.option("animation", null);
                                        this._showEditPopup(rowIndex, true);
                                        if (void 0 !== defaultAnimation) {
                                            this._editPopup.option("animation", defaultAnimation)
                                        }
                                    }
                                };
                                _proto._hideEditPopup = function() {
                                    var _a;
                                    null === (_a = this._editPopup) || void 0 === _a ? void 0 : _a.option("visible", false)
                                };
                                _proto.optionChanged = function(args) {
                                    if ("editing" === args.name && this.isFormOrPopupEditMode()) {
                                        const {
                                            fullName: fullName
                                        } = args;
                                        if (0 === fullName.indexOf(_const.EDITING_FORM_OPTION_NAME)) {
                                            this._handleFormOptionChange(args);
                                            args.handled = true
                                        } else if (0 === fullName.indexOf(_const.EDITING_POPUP_OPTION_NAME)) {
                                            this._handlePopupOptionChange(args);
                                            args.handled = true
                                        }
                                    }
                                    _Base.prototype.optionChanged.call(this, args)
                                };
                                _proto._handleFormOptionChange = function(args) {
                                    var _a;
                                    if (this.isFormEditMode()) {
                                        const editRowIndex = this._getVisibleEditRowIndex();
                                        if (editRowIndex >= 0) {
                                            this._dataController.updateItems({
                                                changeType: "update",
                                                rowIndices: [editRowIndex]
                                            })
                                        }
                                    } else if ((null === (_a = this._editPopup) || void 0 === _a ? void 0 : _a.option("visible")) && 0 === args.fullName.indexOf(_const.EDITING_FORM_OPTION_NAME)) {
                                        this._repaintEditPopup()
                                    }
                                };
                                _proto._handlePopupOptionChange = function(args) {
                                    const editPopup = this._editPopup;
                                    if (editPopup) {
                                        const popupOptionName = args.fullName.slice(_const.EDITING_POPUP_OPTION_NAME.length + 1);
                                        if (popupOptionName) {
                                            editPopup.option(popupOptionName, args.value)
                                        } else {
                                            editPopup.option(args.value)
                                        }
                                    }
                                };
                                _proto.renderFormEditorTemplate = function(detailCellOptions, item, formTemplateOptions, container, isReadOnly) {
                                    const that = this;
                                    const $container = (0, _renderer.default)(container);
                                    const {
                                        column: column
                                    } = item;
                                    const editorType = (0, _m_editing_utils.getEditorType)(item);
                                    const rowData = null === detailCellOptions || void 0 === detailCellOptions ? void 0 : detailCellOptions.row.data;
                                    const form = formTemplateOptions.component;
                                    const {
                                        label: label,
                                        labelMark: labelMark,
                                        labelMode: labelMode
                                    } = formTemplateOptions.editorOptions || {};
                                    const cellOptions = (0, _extend.extend)({}, detailCellOptions, {
                                        data: rowData,
                                        cellElement: null,
                                        isOnForm: true,
                                        item: item,
                                        id: form.getItemID(item.name || item.dataField),
                                        column: (0, _extend.extend)({}, column, {
                                            editorType: editorType,
                                            editorOptions: (0, _extend.extend)({
                                                label: label,
                                                labelMark: labelMark,
                                                labelMode: labelMode
                                            }, column.editorOptions, item.editorOptions)
                                        }),
                                        columnIndex: column.index,
                                        setValue: !isReadOnly && column.allowEditing && function(value, text) {
                                            that.updateFieldValue(cellOptions, value, text)
                                        }
                                    });
                                    cellOptions.value = column.calculateCellValue(rowData);
                                    const template = this._getFormEditItemTemplate.bind(this)(cellOptions, column);
                                    this._rowsView.renderTemplate($container, template, cellOptions, !!(0, _dom.isElementInDom)($container)).done(() => {
                                        this._rowsView._updateCell($container, cellOptions)
                                    });
                                    return cellOptions
                                };
                                _proto.getFormEditorTemplate = function(cellOptions, item) {
                                    const column = this.component.columnOption(item.name || item.dataField);
                                    return (options, container) => {
                                        const $container = (0, _renderer.default)(container);
                                        const {
                                            row: row
                                        } = cellOptions;
                                        if (null === row || void 0 === row ? void 0 : row.watch) {
                                            const dispose = row.watch(() => column.selector(row.data), () => {
                                                let $editorElement = $container.find(".dx-widget").first();
                                                let validator = $editorElement.data("dxValidator");
                                                const validatorOptions = null === validator || void 0 === validator ? void 0 : validator.option();
                                                $container.contents().remove();
                                                cellOptions = this.renderFormEditorTemplate.bind(this)(cellOptions, item, options, $container);
                                                $editorElement = $container.find(".dx-widget").first();
                                                validator = $editorElement.data("dxValidator");
                                                if (validatorOptions && !validator) {
                                                    $editorElement.dxValidator({
                                                        validationRules: validatorOptions.validationRules,
                                                        validationGroup: validatorOptions.validationGroup,
                                                        dataGetter: validatorOptions.dataGetter
                                                    })
                                                }
                                            });
                                            _events_engine.default.on($container, _remove.removeEvent, dispose)
                                        }
                                        cellOptions = this.renderFormEditorTemplate.bind(this)(cellOptions, item, options, $container)
                                    }
                                };
                                _proto.getEditFormOptions = function(detailOptions) {
                                    var _b;
                                    const editFormOptions = null === (_b = this._getValidationGroupsInForm) || void 0 === _b ? void 0 : _b.call(this, detailOptions);
                                    const userCustomizeItem = this.option("editing.form.customizeItem");
                                    const editFormItemClass = this.addWidgetPrefix(_const.EDIT_FORM_ITEM_CLASS);
                                    let items = this.option("editing.form.items");
                                    const isCustomEditorType = {};
                                    if (!items) {
                                        const columns = this.getController("columns").getColumns();
                                        items = [];
                                        (0, _iterator.each)(columns, (_, column) => {
                                            if (!column.isBand && !column.type) {
                                                items.push({
                                                    column: column,
                                                    name: column.name,
                                                    dataField: column.dataField
                                                })
                                            }
                                        })
                                    } else {
                                        (0, _m_editing_utils.forEachFormItems)(items, item => {
                                            const itemId = (null === item || void 0 === item ? void 0 : item.name) || (null === item || void 0 === item ? void 0 : item.dataField);
                                            if (itemId) {
                                                isCustomEditorType[itemId] = !!item.editorType
                                            }
                                        })
                                    }
                                    return (0, _extend.extend)({}, editFormOptions, {
                                        items: items,
                                        formID: "dx-".concat(new _guid.default),
                                        customizeItem: item => {
                                            let column;
                                            const itemId = item.name || item.dataField;
                                            if (item.column || itemId) {
                                                column = item.column || this._columnsController.columnOption(item.name ? "name:".concat(item.name) : "dataField:".concat(item.dataField))
                                            }
                                            if (column) {
                                                item.label = item.label || {};
                                                item.label.text = item.label.text || column.caption;
                                                if ("boolean" === column.dataType && void 0 === item.label.visible) {
                                                    const labelMode = this.option("editing.form.labelMode");
                                                    if ("floating" === labelMode || "static" === labelMode) {
                                                        item.label.visible = true
                                                    }
                                                }
                                                item.template = item.template || this.getFormEditorTemplate(detailOptions, item);
                                                item.column = column;
                                                item.isCustomEditorType = isCustomEditorType[itemId];
                                                if (column.formItem) {
                                                    (0, _extend.extend)(item, column.formItem)
                                                }
                                                if (void 0 === item.isRequired && column.validationRules) {
                                                    item.isRequired = column.validationRules.some(rule => "required" === rule.type);
                                                    item.validationRules = []
                                                }
                                                const itemVisible = (0, _type.isDefined)(item.visible) ? item.visible : true;
                                                if (!this._firstFormItem && itemVisible) {
                                                    this._firstFormItem = item
                                                }
                                            }
                                            null === userCustomizeItem || void 0 === userCustomizeItem ? void 0 : userCustomizeItem.call(this, item);
                                            item.cssClass = (0, _type.isString)(item.cssClass) ? "".concat(item.cssClass, " ").concat(editFormItemClass) : editFormItemClass
                                        }
                                    })
                                };
                                _proto.getEditFormTemplate = function() {
                                    return ($container, detailOptions, options) => {
                                        const editFormOptions = this.option(_const.EDITING_FORM_OPTION_NAME);
                                        const baseEditFormOptions = this.getEditFormOptions(detailOptions);
                                        const $formContainer = (0, _renderer.default)("<div>").appendTo($container);
                                        const isPopupForm = null === options || void 0 === options ? void 0 : options.isPopupForm;
                                        this._firstFormItem = void 0;
                                        if (isPopupForm) {
                                            $formContainer.addClass(this.addWidgetPrefix(_const.EDIT_POPUP_FORM_CLASS))
                                        }
                                        this._editForm = this._createComponent($formContainer, _form.default, (0, _extend.extend)({}, editFormOptions, baseEditFormOptions));
                                        if (!isPopupForm) {
                                            const $buttonsContainer = (0, _renderer.default)("<div>").addClass(this.addWidgetPrefix(_const.FORM_BUTTONS_CONTAINER_CLASS)).appendTo($container);
                                            this._createComponent((0, _renderer.default)("<div>").appendTo($buttonsContainer), _button.default, this._getSaveButtonConfig());
                                            this._createComponent((0, _renderer.default)("<div>").appendTo($buttonsContainer), _button.default, this._getCancelButtonConfig())
                                        }
                                        this._editForm.on("contentReady", () => {
                                            var _a;
                                            this._rowsView.renderDelayedTemplates();
                                            null === (_a = this._editPopup) || void 0 === _a ? void 0 : _a.repaint()
                                        })
                                    }
                                };
                                _proto.getEditForm = function() {
                                    return this._editForm
                                };
                                _proto._endUpdateCore = function() {
                                    var _a;
                                    null === (_a = this._updateEditFormDeferred) || void 0 === _a ? void 0 : _a.resolve()
                                };
                                _proto._beforeEndSaving = function(changes) {
                                    var _a;
                                    _Base.prototype._beforeEndSaving.call(this, changes);
                                    if (this.isPopupEditMode()) {
                                        null === (_a = this._editPopup) || void 0 === _a ? void 0 : _a.hide()
                                    }
                                };
                                _proto._processDataItemCore = function(item, change, key, columns, generateDataValues) {
                                    const {
                                        type: type
                                    } = change;
                                    if (this.isPopupEditMode() && type === _const.DATA_EDIT_DATA_INSERT_TYPE) {
                                        item.visible = false
                                    }
                                    _Base.prototype._processDataItemCore.call(this, item, change, key, columns, generateDataValues)
                                };
                                _proto._editRowFromOptionChangedCore = function(rowIndices, rowIndex) {
                                    const isPopupEditMode = this.isPopupEditMode();
                                    _Base.prototype._editRowFromOptionChangedCore.call(this, rowIndices, rowIndex, isPopupEditMode);
                                    if (isPopupEditMode) {
                                        this._showEditPopup(rowIndex)
                                    }
                                };
                                return FormBasedEditingControllerExtender
                            }(Base),
                            data: {
                                _updateEditItem(item) {
                                    if (this._editingController.isFormEditMode()) {
                                        item.rowType = "detail"
                                    }
                                },
                                _getChangedColumnIndices(oldItem, newItem, visibleRowIndex, isLiveUpdate) {
                                    if (false === isLiveUpdate && newItem.isEditing && this._editingController.isFormEditMode()) {
                                        return
                                    }
                                    return this.callBase.apply(this, arguments)
                                }
                            }
                        },
                        views: {
                            rowsView: {
                                _renderCellContent($cell, options) {
                                    if ("data" === options.rowType && this._editingController.isPopupEditMode() && false === options.row.visible) {
                                        return
                                    }
                                    this.callBase.apply(this, arguments)
                                },
                                getCellElements(rowIndex) {
                                    const $cellElements = this.callBase(rowIndex);
                                    const editingController = this._editingController;
                                    const editForm = editingController.getEditForm();
                                    const editFormRowIndex = editingController.getEditFormRowIndex();
                                    if (editFormRowIndex === rowIndex && $cellElements && editForm) {
                                        return editForm.$element().find(".".concat(this.addWidgetPrefix(_const.EDIT_FORM_ITEM_CLASS), ", .").concat(_const.BUTTON_CLASS))
                                    }
                                    return $cellElements
                                },
                                _getVisibleColumnIndex($cells, rowIndex, columnIdentifier) {
                                    const editFormRowIndex = this._editingController.getEditFormRowIndex();
                                    if (editFormRowIndex === rowIndex && (0, _type.isString)(columnIdentifier)) {
                                        const column = this._columnsController.columnOption(columnIdentifier);
                                        return this._getEditFormEditorVisibleIndex($cells, column)
                                    }
                                    return this.callBase.apply(this, arguments)
                                },
                                _getEditFormEditorVisibleIndex($cells, column) {
                                    let visibleIndex = -1;
                                    (0, _iterator.each)($cells, (index, cellElement) => {
                                        const item = (0, _renderer.default)(cellElement).find(".dx-field-item-content").data("dx-form-item");
                                        if ((null === item || void 0 === item ? void 0 : item.column) && column && item.column.index === column.index) {
                                            visibleIndex = index;
                                            return false
                                        }
                                    });
                                    return visibleIndex
                                },
                                _isFormItem(parameters) {
                                    const isDetailRow = "detail" === parameters.rowType || "detailAdaptive" === parameters.rowType;
                                    const isPopupEditing = "data" === parameters.rowType && this._editingController.isPopupEditMode();
                                    return (isDetailRow || isPopupEditing) && parameters.item
                                },
                                _updateCell($cell, parameters) {
                                    if (this._isFormItem(parameters)) {
                                        this._formItemPrepared(parameters, $cell)
                                    } else {
                                        this.callBase($cell, parameters)
                                    }
                                },
                                _updateContent() {
                                    const editingController = this._editingController;
                                    const oldEditForm = editingController.getEditForm();
                                    const validationGroup = null === oldEditForm || void 0 === oldEditForm ? void 0 : oldEditForm.option("validationGroup");
                                    const deferred = this.callBase.apply(this, arguments);
                                    return deferred.done(() => {
                                        const newEditForm = editingController.getEditForm();
                                        if (validationGroup && newEditForm && newEditForm !== oldEditForm) {
                                            newEditForm.option("validationGroup", validationGroup)
                                        }
                                    })
                                }
                            }
                        }
                    }
                };
                exports.editingFormBasedModule = editingFormBasedModule
            },
        55597:
            /*!*******************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/editing/m_editing_row_based.js ***!
              \*******************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.editingRowBasedModule = void 0;
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _const = __webpack_require__( /*! ./const */ 72313);

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const editingRowBasedModule = {
                    extenders: {
                        controllers: {
                            editing: Base => function(_Base) {
                                ! function(subClass, superClass) {
                                    subClass.prototype = Object.create(superClass.prototype);
                                    subClass.prototype.constructor = subClass;
                                    _setPrototypeOf(subClass, superClass)
                                }(RowBasedEditingControllerExtender, _Base);

                                function RowBasedEditingControllerExtender() {
                                    return _Base.apply(this, arguments) || this
                                }
                                var _proto = RowBasedEditingControllerExtender.prototype;
                                _proto.isRowEditMode = function() {
                                    return this.getEditMode() === _const.EDIT_MODE_ROW
                                };
                                _proto._afterCancelEditData = function(rowIndex) {
                                    const dataController = this._dataController;
                                    if (this.isRowBasedEditMode() && rowIndex >= 0) {
                                        dataController.updateItems({
                                            changeType: "update",
                                            rowIndices: [rowIndex, rowIndex + 1]
                                        })
                                    } else {
                                        _Base.prototype._afterCancelEditData.call(this, rowIndex)
                                    }
                                };
                                _proto._isDefaultButtonVisible = function(button, options) {
                                    const isRowMode = this.isRowBasedEditMode();
                                    const isEditRow = options.row && (0, _common.equalByValue)(options.row.key, this.option(_const.EDITING_EDITROWKEY_OPTION_NAME));
                                    if (isRowMode) {
                                        switch (button.name) {
                                            case "edit":
                                                return !isEditRow && this.allowUpdating(options);
                                            case "delete":
                                                return _Base.prototype._isDefaultButtonVisible.call(this, button, options) && !isEditRow;
                                            case "save":
                                            case "cancel":
                                                return isEditRow;
                                            default:
                                                return _Base.prototype._isDefaultButtonVisible.call(this, button, options)
                                        }
                                    }
                                    return _Base.prototype._isDefaultButtonVisible.call(this, button, options)
                                };
                                _proto.isEditRow = function(rowIndex) {
                                    return this.isRowBasedEditMode() && this.isEditRowByIndex(rowIndex)
                                };
                                _proto._cancelSaving = function(result) {
                                    if (this.isRowBasedEditMode()) {
                                        if (!this.hasChanges()) {
                                            this._cancelEditDataCore()
                                        }
                                    }
                                    _Base.prototype._cancelSaving.call(this, result)
                                };
                                _proto._refreshCore = function(params) {
                                    const {
                                        allowCancelEditing: allowCancelEditing
                                    } = null !== params && void 0 !== params ? params : {};
                                    if (this.isRowBasedEditMode()) {
                                        const hasUpdateChanges = this.getChanges().filter(it => "update" === it.type).length > 0;
                                        this.init();
                                        allowCancelEditing && hasUpdateChanges && this._cancelEditDataCore()
                                    }
                                    _Base.prototype._refreshCore.call(this, params)
                                };
                                _proto._isEditColumnVisible = function() {
                                    const result = _Base.prototype._isEditColumnVisible.call(this);
                                    const editingOptions = this.option("editing");
                                    const isRowEditMode = this.isRowEditMode();
                                    const isVisibleInRowEditMode = editingOptions.allowUpdating || editingOptions.allowAdding;
                                    return result || isRowEditMode && isVisibleInRowEditMode
                                };
                                _proto._focusEditorIfNeed = function() {
                                    const editMode = this.getEditMode();
                                    if (this._needFocusEditor) {
                                        if (_const.MODES_WITH_DELAYED_FOCUS.includes(editMode)) {
                                            const $editingCell = this.getFocusedCellInRow(this._getVisibleEditRowIndex());
                                            this._delayedInputFocus($editingCell, () => {
                                                $editingCell && this.component.focus($editingCell)
                                            })
                                        }
                                        this._needFocusEditor = false
                                    }
                                };
                                return RowBasedEditingControllerExtender
                            }(Base),
                            data: {
                                _getChangedColumnIndices(oldItem, newItem, rowIndex, isLiveUpdate) {
                                    const editingController = this.getController("editing");
                                    if (editingController.isRowBasedEditMode() && oldItem.isEditing !== newItem.isEditing) {
                                        return
                                    }
                                    return this.callBase.apply(this, arguments)
                                }
                            }
                        },
                        views: {
                            rowsView: {
                                _createRow(row) {
                                    const $row = this.callBase.apply(this, arguments);
                                    if (row) {
                                        const editingController = this._editingController;
                                        const isEditRow = editingController.isEditRow(row.rowIndex);
                                        if (isEditRow) {
                                            $row.addClass(_const.EDIT_ROW);
                                            $row.removeClass(_const.ROW_SELECTED_CLASS);
                                            if ("detail" === row.rowType) {
                                                $row.addClass(this.addWidgetPrefix(_const.EDIT_FORM_CLASS))
                                            }
                                        }
                                    }
                                    return $row
                                },
                                _update(change) {
                                    this.callBase(change);
                                    if ("updateSelection" === change.changeType) {
                                        this.getTableElements().children("tbody").children(".".concat(_const.EDIT_ROW)).removeClass(_const.ROW_SELECTED_CLASS)
                                    }
                                }
                            }
                        }
                    }
                };
                exports.editingRowBasedModule = editingRowBasedModule
            },
        89237:
            /*!***************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/editing/m_editing_utils.js ***!
              \***************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.getButtonIndex = exports.generateNewRowTempKey = exports.forEachFormItems = exports.createFailureHandler = void 0;
                exports.getButtonName = getButtonName;
                exports.getEditorType = exports.getEditingTexts = void 0;
                exports.isEditable = function($element) {
                    return $element && ($element.is("input") || $element.is("textarea"))
                };
                exports.isNewRowTempKey = exports.isEditingOrShowEditorAlwaysDataCell = exports.isEditingCell = void 0;
                var _guid = (obj = __webpack_require__( /*! ../../../../core/guid */ 73176), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                exports.createFailureHandler = function(deferred) {
                    return function(arg) {
                        const error = arg instanceof Error ? arg : new Error(arg && String(arg) || "Unknown error");
                        deferred.reject(error)
                    }
                };
                const isEditingCell = function(isEditRow, cellOptions) {
                    return cellOptions.isEditing || isEditRow && cellOptions.column.allowEditing
                };
                exports.isEditingCell = isEditingCell;
                exports.isEditingOrShowEditorAlwaysDataCell = function(isEditRow, cellOptions) {
                    const isCommandCell = !!cellOptions.column.command;
                    const isEditing = isEditingCell(isEditRow, cellOptions);
                    const isEditorCell = !isCommandCell && (isEditing || cellOptions.column.showEditorAlways);
                    return "data" === cellOptions.rowType && isEditorCell
                };
                exports.getEditingTexts = options => {
                    const editingTexts = options.component.option("editing.texts") || {};
                    return {
                        save: editingTexts.saveRowChanges,
                        cancel: editingTexts.cancelRowChanges,
                        edit: editingTexts.editRow,
                        undelete: editingTexts.undeleteRow,
                        delete: editingTexts.deleteRow,
                        add: editingTexts.addRowToNode
                    }
                };
                exports.generateNewRowTempKey = () => "".concat("_DX_KEY_").concat(new _guid.default);
                exports.isNewRowTempKey = key => "string" === typeof key && key.startsWith("_DX_KEY_") && key.length === "_DX_KEY_".length + 36;
                exports.getButtonIndex = (buttons, name) => {
                    let result = -1;
                    buttons.some((button, index) => {
                        if (getButtonName(button) === name) {
                            result = index;
                            return true
                        }
                    });
                    return result
                };

                function getButtonName(button) {
                    return (0, _type.isObject)(button) ? button.name : button
                }
                exports.getEditorType = item => {
                    var _a;
                    const {
                        column: column
                    } = item;
                    return item.isCustomEditorType ? item.editorType : null === (_a = column.formItem) || void 0 === _a ? void 0 : _a.editorType
                };
                const forEachFormItems = (items, callBack) => {
                    items.forEach(item => {
                        if (item.items || item.tabs) {
                            forEachFormItems(item.items || item.tabs, callBack)
                        } else {
                            callBack(item)
                        }
                    })
                };
                exports.forEachFormItems = forEachFormItems
            },
        80070:
            /*!***********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/editor_factory/m_editor_factory.js ***!
              \***********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.editorFactoryModule = exports.EditorFactory = void 0;
                var _position = _interopRequireDefault(__webpack_require__( /*! ../../../../animation/position */ 49387));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../../core/dom_adapter */ 73349));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/browser */ 47810));
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _position2 = __webpack_require__( /*! ../../../../core/utils/position */ 37518);
                var _size = __webpack_require__( /*! ../../../../core/utils/size */ 58664);
                var _click = __webpack_require__( /*! ../../../../events/click */ 95429);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../events/core/events_engine */ 55994));
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../../events/pointer */ 93786));
                var _index = __webpack_require__( /*! ../../../../events/utils/index */ 39611);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/shared/ui.editor_factory_mixin */ 15653));
                var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 15943));
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 60082));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const UPDATE_FOCUS_EVENTS = (0, _index.addNamespace)([_pointer.default.down, "focusin", _click.name].join(" "), "dxDataGridEditorFactory");
                const ViewControllerWithMixin = _m_modules.default.ViewController.inherit(_ui.default);
                let EditorFactory = function(_ViewControllerWithMi) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(EditorFactory, _ViewControllerWithMi);

                    function EditorFactory() {
                        return _ViewControllerWithMi.apply(this, arguments) || this
                    }
                    var _proto = EditorFactory.prototype;
                    _proto._getFocusedElement = function($dataGridElement) {
                        const rowSelector = this.option("focusedRowEnabled") ? "tr[tabindex]:focus" : "tr[tabindex]:not(.dx-data-row):focus";
                        const focusedElementSelector = "td[tabindex]:focus, ".concat(rowSelector, ", input:focus, textarea:focus, .dx-lookup-field:focus, .dx-checkbox:focus, .dx-switch:focus, .dx-dropdownbutton .dx-buttongroup:focus, .dx-adaptive-item-text:focus");
                        const $focusedElement = $dataGridElement.find(focusedElementSelector);
                        return this.elementIsInsideGrid($focusedElement) && $focusedElement
                    };
                    _proto._getFocusCellSelector = function() {
                        return ".dx-row > td"
                    };
                    _proto._updateFocusCore = function() {
                        const $dataGridElement = this.component && this.component.$element();
                        if ($dataGridElement) {
                            let $focus = this._getFocusedElement($dataGridElement);
                            if ($focus && $focus.length) {
                                let isHideBorder;
                                if (!$focus.hasClass("dx-cell-focus-disabled") && !$focus.hasClass("dx-row")) {
                                    const $focusCell = $focus.closest("".concat(this._getFocusCellSelector(), ", .").concat("dx-cell-focus-disabled"));
                                    if ($focusCell.get(0) !== $focus.get(0)) {
                                        isHideBorder = this._needHideBorder($focusCell);
                                        $focus = $focusCell
                                    }
                                }
                                if ($focus.length && !$focus.hasClass("dx-cell-focus-disabled")) {
                                    this.focus($focus, isHideBorder);
                                    return
                                }
                            }
                        }
                        this.loseFocus()
                    };
                    _proto._needHideBorder = function($element) {
                        return $element.hasClass("dx-editor-inline-block")
                    };
                    _proto._updateFocus = function(e) {
                        const that = this;
                        const isFocusOverlay = e && e.event && (0, _renderer.default)(e.event.target).hasClass(that.addWidgetPrefix("focus-overlay"));
                        that._isFocusOverlay = that._isFocusOverlay || isFocusOverlay;
                        clearTimeout(that._updateFocusTimeoutID);
                        that._updateFocusTimeoutID = setTimeout(() => {
                            delete that._updateFocusTimeoutID;
                            if (!that._isFocusOverlay) {
                                that._updateFocusCore()
                            }
                            that._isFocusOverlay = false
                        })
                    };
                    _proto._updateFocusOverlaySize = function($element, position) {
                        $element.hide();
                        const location = _position.default.calculate($element, (0, _extend.extend)({
                            collision: "fit"
                        }, position));
                        if (location.h.oversize > 0) {
                            (0, _size.setOuterWidth)($element, (0, _size.getOuterWidth)($element) - location.h.oversize)
                        }
                        if (location.v.oversize > 0) {
                            (0, _size.setOuterHeight)($element, (0, _size.getOuterHeight)($element) - location.v.oversize)
                        }
                        $element.show()
                    };
                    _proto.callbackNames = function() {
                        return ["focused"]
                    };
                    _proto.focus = function($element, isHideBorder) {
                        const that = this;
                        if (void 0 === $element) {
                            return that._$focusedElement
                        }
                        if ($element) {
                            if (!$element.is(that._$focusedElement)) {
                                that._$focusedElement && that._$focusedElement.removeClass("dx-focused")
                            }
                            that._$focusedElement = $element;
                            clearTimeout(that._focusTimeoutID);
                            that._focusTimeoutID = setTimeout(() => {
                                delete that._focusTimeoutID;
                                that.renderFocusOverlay($element, isHideBorder);
                                $element.addClass("dx-focused");
                                that.focused.fire($element)
                            })
                        }
                    };
                    _proto.refocus = function() {
                        const $focus = this.focus();
                        this.focus($focus)
                    };
                    _proto.renderFocusOverlay = function($element, isHideBorder) {
                        const that = this;
                        if (!_m_utils.default.isElementInCurrentGrid(this, $element)) {
                            return
                        }
                        if (!that._$focusOverlay) {
                            that._$focusOverlay = (0, _renderer.default)("<div>").addClass(that.addWidgetPrefix("focus-overlay"))
                        }
                        if (isHideBorder) {
                            that._$focusOverlay.addClass("dx-hidden")
                        } else if ($element.length) {
                            const align = _browser.default.mozilla ? "right bottom" : "left top";
                            const $content = $element.closest(".".concat(that.addWidgetPrefix("content")));
                            const elemCoord = (0, _position2.getBoundingRect)($element.get(0));
                            const isFocusedCellInvalid = $element.hasClass(this.addWidgetPrefix("invalid"));
                            const isFocusedCellModified = $element.hasClass("dx-cell-modified") && !isFocusedCellInvalid;
                            that._$focusOverlay.removeClass("dx-hidden").toggleClass("dx-focused-cell-invalid", isFocusedCellInvalid).toggleClass("dx-focused-cell-modified", isFocusedCellModified).appendTo($content);
                            (0, _size.setOuterHeight)(that._$focusOverlay, elemCoord.bottom - elemCoord.top + 1);
                            (0, _size.setOuterWidth)(that._$focusOverlay, elemCoord.right - elemCoord.left + 1);
                            const focusOverlayPosition = {
                                precise: true,
                                my: align,
                                at: align,
                                of: $element,
                                boundary: $content.length && $content
                            };
                            that._updateFocusOverlaySize(that._$focusOverlay, focusOverlayPosition);
                            _position.default.setup(that._$focusOverlay, focusOverlayPosition);
                            that._$focusOverlay.css("visibility", "visible")
                        }
                    };
                    _proto.resize = function() {
                        const $focusedElement = this._$focusedElement;
                        if ($focusedElement) {
                            this.focus($focusedElement)
                        }
                    };
                    _proto.loseFocus = function() {
                        this._$focusedElement && this._$focusedElement.removeClass("dx-focused");
                        this._$focusedElement = null;
                        this._$focusOverlay && this._$focusOverlay.addClass("dx-hidden")
                    };
                    _proto.init = function() {
                        this.createAction("onEditorPreparing", {
                            excludeValidators: ["disabled", "readOnly"],
                            category: "rendering"
                        });
                        this.createAction("onEditorPrepared", {
                            excludeValidators: ["disabled", "readOnly"],
                            category: "rendering"
                        });
                        this._updateFocusHandler = this._updateFocusHandler || this.createAction(this._updateFocus.bind(this));
                        this._subscribedContainerRoot = this._getContainerRoot();
                        _events_engine.default.on(this._subscribedContainerRoot, UPDATE_FOCUS_EVENTS, this._updateFocusHandler);
                        this._attachContainerEventHandlers()
                    };
                    _proto._getContainerRoot = function() {
                        var _a;
                        const $container = null === (_a = this.component) || void 0 === _a ? void 0 : _a.$element();
                        const root = _dom_adapter.default.getRootNode(null === $container || void 0 === $container ? void 0 : $container.get(0));
                        if (root.nodeType === Node.DOCUMENT_FRAGMENT_NODE && !root.host) {
                            return _dom_adapter.default.getDocument()
                        }
                        return root
                    };
                    _proto._attachContainerEventHandlers = function() {
                        const that = this;
                        const $container = that.component && that.component.$element();
                        if ($container) {
                            _events_engine.default.on($container, (0, _index.addNamespace)("keydown", "dxDataGridEditorFactory"), e => {
                                if ("tab" === (0, _index.normalizeKeyName)(e)) {
                                    that._updateFocusHandler(e)
                                }
                            })
                        }
                    };
                    _proto.dispose = function() {
                        clearTimeout(this._focusTimeoutID);
                        clearTimeout(this._updateFocusTimeoutID);
                        _events_engine.default.off(this._subscribedContainerRoot, UPDATE_FOCUS_EVENTS, this._updateFocusHandler)
                    };
                    return EditorFactory
                }(ViewControllerWithMixin);
                exports.EditorFactory = EditorFactory;
                const editorFactoryModule = {
                    defaultOptions: () => ({}),
                    controllers: {
                        editorFactory: EditorFactory
                    }
                };
                exports.editorFactoryModule = editorFactoryModule
            },
        31152:
            /*!***********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/error_handling/m_error_handling.js ***!
              \***********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.errorHandlingModule = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _click = __webpack_require__( /*! ../../../../events/click */ 95429);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../events/core/events_engine */ 55994));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/message */ 28109));
                var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 15943));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const ErrorHandlingController = _m_modules.default.ViewController.inherit({
                    init() {
                        this._columnHeadersView = this.getView("columnHeadersView");
                        this._rowsView = this.getView("rowsView")
                    },
                    _createErrorRow(error, $tableElements) {
                        const that = this;
                        let $errorRow;
                        let $closeButton;
                        const $errorMessage = this._renderErrorMessage(error);
                        if ($tableElements) {
                            $errorRow = (0, _renderer.default)("<tr>").attr("role", "row").addClass("dx-error-row");
                            $closeButton = (0, _renderer.default)("<div>").addClass("dx-closebutton").addClass(that.addWidgetPrefix("action"));
                            _events_engine.default.on($closeButton, _click.name, that.createAction(args => {
                                const e = args.event;
                                let $errorRow;
                                const errorRowIndex = (0, _renderer.default)(e.currentTarget).closest(".".concat("dx-error-row")).index();
                                e.stopPropagation();
                                (0, _iterator.each)($tableElements, (_, tableElement) => {
                                    $errorRow = (0, _renderer.default)(tableElement).children("tbody").children("tr").eq(errorRowIndex);
                                    that.removeErrorRow($errorRow)
                                });
                                that.getController("resizing") && that.getController("resizing").fireContentReadyAction()
                            }));
                            (0, _renderer.default)("<td>").attr({
                                colSpan: that.getController("columns").getVisibleColumns().length,
                                role: "gridcell"
                            }).prepend($closeButton).append($errorMessage).appendTo($errorRow);
                            return $errorRow
                        }
                        return $errorMessage
                    },
                    _renderErrorMessage(error) {
                        const message = error.url ? error.message.replace(error.url, "") : error.message || error;
                        const $message = (0, _renderer.default)("<div>").attr("role", "alert").attr("aria-roledescription", _message.default.format("dxDataGrid-ariaError")).addClass("dx-error-message").text(message);
                        if (error.url) {
                            (0, _renderer.default)("<a>").attr("href", error.url).text(error.url).appendTo($message)
                        }
                        return $message
                    },
                    renderErrorRow(error, rowIndex, $popupContent) {
                        const that = this;
                        let $errorMessageElement;
                        let $firstErrorRow;
                        if ($popupContent) {
                            $popupContent.find(".".concat("dx-error-message")).remove();
                            $errorMessageElement = that._createErrorRow(error);
                            $popupContent.prepend($errorMessageElement);
                            return $errorMessageElement
                        }
                        const viewElement = rowIndex >= 0 || !that._columnHeadersView.isVisible() ? that._rowsView : that._columnHeadersView;
                        const $tableElements = viewElement.getTableElements();
                        (0, _iterator.each)($tableElements, (_, tableElement) => {
                            $errorMessageElement = that._createErrorRow(error, $tableElements);
                            $firstErrorRow = $firstErrorRow || $errorMessageElement;
                            if (rowIndex >= 0) {
                                const $row = viewElement._getRowElements((0, _renderer.default)(tableElement)).eq(rowIndex);
                                that.removeErrorRow($row.next());
                                $errorMessageElement.insertAfter($row)
                            } else {
                                const $tbody = (0, _renderer.default)(tableElement).children("tbody");
                                const rowElements = $tbody.children("tr");
                                if (that._columnHeadersView.isVisible()) {
                                    that.removeErrorRow(rowElements.last());
                                    (0, _renderer.default)(tableElement).append($errorMessageElement)
                                } else {
                                    that.removeErrorRow(rowElements.first());
                                    $tbody.first().prepend($errorMessageElement)
                                }
                            }
                        });
                        const resizingController = that.getController("resizing");
                        resizingController && resizingController.fireContentReadyAction();
                        return $firstErrorRow
                    },
                    removeErrorRow($row) {
                        if (!$row) {
                            const $columnHeaders = this._columnHeadersView && this._columnHeadersView.element();
                            $row = $columnHeaders && $columnHeaders.find(".".concat("dx-error-row"));
                            if (!$row || !$row.length) {
                                const $rowsViewElement = this._rowsView.element();
                                $row = $rowsViewElement && $rowsViewElement.find(".".concat("dx-error-row"))
                            }
                        }
                        $row && $row.hasClass("dx-error-row") && $row.remove()
                    },
                    optionChanged(args) {
                        const that = this;
                        switch (args.name) {
                            case "errorRowEnabled":
                                args.handled = true;
                                break;
                            default:
                                that.callBase(args)
                        }
                    }
                });
                const errorHandlingModule = {
                    defaultOptions: () => ({
                        errorRowEnabled: true
                    }),
                    controllers: {
                        errorHandling: ErrorHandlingController
                    },
                    extenders: {
                        controllers: {
                            data: {
                                init() {
                                    const that = this;
                                    const errorHandlingController = that.getController("errorHandling");
                                    that.callBase();
                                    that.dataErrorOccurred.add((error, $popupContent) => {
                                        if (that.option("errorRowEnabled")) {
                                            errorHandlingController.renderErrorRow(error, void 0, $popupContent)
                                        }
                                    });
                                    that.changed.add(e => {
                                        if (e && "loadError" === e.changeType) {
                                            return
                                        }
                                        const errorHandlingController = that.getController("errorHandling");
                                        const editingController = that.getController("editing");
                                        if (editingController && !editingController.hasChanges()) {
                                            errorHandlingController && errorHandlingController.removeErrorRow()
                                        }
                                    })
                                }
                            }
                        }
                    }
                };
                exports.errorHandlingModule = errorHandlingModule
            },
        62690:
            /*!***************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/filter/m_filter_builder.js ***!
              \***************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.filterBuilderModule = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/message */ 28109));
                var _filter_builder = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/filter_builder */ 20301));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/popup/ui.popup */ 51495));
                var _scroll_view = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/scroll_view */ 4741));
                var _accessibility = __webpack_require__( /*! ../../../../ui/shared/accessibility */ 56756);
                var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 15943));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const FilterBuilderView = _m_modules.default.View.inherit({
                    _renderCore() {
                        this._updatePopupOptions()
                    },
                    _updatePopupOptions() {
                        if (this.option("filterBuilderPopup.visible")) {
                            this._initPopup()
                        } else if (this._filterBuilderPopup) {
                            this._filterBuilderPopup.hide()
                        }
                    },
                    _disposePopup() {
                        if (this._filterBuilderPopup) {
                            this._filterBuilderPopup.dispose();
                            this._filterBuilderPopup = void 0
                        }
                        if (this._filterBuilder) {
                            this._filterBuilder.dispose();
                            this._filterBuilder = void 0
                        }
                    },
                    _initPopup() {
                        const that = this;
                        that._disposePopup();
                        that._filterBuilderPopup = that._createComponent(that.element(), _ui.default, (0, _extend.extend)({
                            title: _message.default.format("dxDataGrid-filterBuilderPopupTitle"),
                            contentTemplate: $contentElement => that._getPopupContentTemplate($contentElement),
                            onOptionChanged(args) {
                                if ("visible" === args.name) {
                                    that.option("filterBuilderPopup.visible", args.value)
                                }
                            },
                            toolbarItems: that._getPopupToolbarItems()
                        }, that.option("filterBuilderPopup"), {
                            onHidden() {
                                (0, _accessibility.restoreFocus)(that);
                                that._disposePopup()
                            }
                        }))
                    },
                    _getPopupContentTemplate(contentElement) {
                        const $contentElement = (0, _renderer.default)(contentElement);
                        const $filterBuilderContainer = (0, _renderer.default)("<div>").appendTo((0, _renderer.default)(contentElement));
                        this._filterBuilder = this._createComponent($filterBuilderContainer, _filter_builder.default, (0, _extend.extend)({
                            value: this.option("filterValue"),
                            fields: this.getController("columns").getFilteringColumns()
                        }, this.option("filterBuilder"), {
                            customOperations: this.getController("filterSync").getCustomFilterOperations()
                        }));
                        this._createComponent($contentElement, _scroll_view.default, {
                            direction: "both"
                        })
                    },
                    _getPopupToolbarItems() {
                        const that = this;
                        return [{
                            toolbar: "bottom",
                            location: "after",
                            widget: "dxButton",
                            options: {
                                text: _message.default.format("OK"),
                                onClick() {
                                    const filter = that._filterBuilder.option("value");
                                    that.option("filterValue", filter);
                                    that._filterBuilderPopup.hide()
                                }
                            }
                        }, {
                            toolbar: "bottom",
                            location: "after",
                            widget: "dxButton",
                            options: {
                                text: _message.default.format("Cancel"),
                                onClick() {
                                    that._filterBuilderPopup.hide()
                                }
                            }
                        }]
                    },
                    optionChanged(args) {
                        switch (args.name) {
                            case "filterBuilder":
                            case "filterBuilderPopup":
                                this._invalidate();
                                args.handled = true;
                                break;
                            default:
                                this.callBase(args)
                        }
                    }
                });
                const filterBuilderModule = {
                    defaultOptions: () => ({
                        filterBuilder: {
                            groupOperationDescriptions: {
                                and: _message.default.format("dxFilterBuilder-and"),
                                or: _message.default.format("dxFilterBuilder-or"),
                                notAnd: _message.default.format("dxFilterBuilder-notAnd"),
                                notOr: _message.default.format("dxFilterBuilder-notOr")
                            },
                            filterOperationDescriptions: {
                                between: _message.default.format("dxFilterBuilder-filterOperationBetween"),
                                equal: _message.default.format("dxFilterBuilder-filterOperationEquals"),
                                notEqual: _message.default.format("dxFilterBuilder-filterOperationNotEquals"),
                                lessThan: _message.default.format("dxFilterBuilder-filterOperationLess"),
                                lessThanOrEqual: _message.default.format("dxFilterBuilder-filterOperationLessOrEquals"),
                                greaterThan: _message.default.format("dxFilterBuilder-filterOperationGreater"),
                                greaterThanOrEqual: _message.default.format("dxFilterBuilder-filterOperationGreaterOrEquals"),
                                startsWith: _message.default.format("dxFilterBuilder-filterOperationStartsWith"),
                                contains: _message.default.format("dxFilterBuilder-filterOperationContains"),
                                notContains: _message.default.format("dxFilterBuilder-filterOperationNotContains"),
                                endsWith: _message.default.format("dxFilterBuilder-filterOperationEndsWith"),
                                isBlank: _message.default.format("dxFilterBuilder-filterOperationIsBlank"),
                                isNotBlank: _message.default.format("dxFilterBuilder-filterOperationIsNotBlank")
                            }
                        },
                        filterBuilderPopup: {}
                    }),
                    views: {
                        filterBuilderView: FilterBuilderView
                    }
                };
                exports.filterBuilderModule = filterBuilderModule
            },
        9622:
            /*!*************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/filter/m_filter_custom_operations.js ***!
              \*************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.anyOf = function(grid) {
                    return (0, _extend.extend)(baseOperation(grid), {
                        name: "anyof",
                        icon: "selectall",
                        caption: _message.default.format("dxFilterBuilder-filterOperationAnyOf")
                    })
                };
                exports.noneOf = function(grid) {
                    const baseOp = baseOperation(grid);
                    return (0, _extend.extend)({}, baseOp, {
                        calculateFilterExpression(filterValue, field, fields) {
                            const baseFilter = baseOp.calculateFilterExpression(filterValue, field, fields);
                            if (!baseFilter || 0 === baseFilter.length) {
                                return null
                            }
                            return "!" === baseFilter[0] ? baseFilter : ["!", baseFilter]
                        },
                        name: "noneof",
                        icon: "unselectall",
                        caption: _message.default.format("dxFilterBuilder-filterOperationNoneOf")
                    })
                };
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _data_source = __webpack_require__( /*! ../../../../data/data_source/data_source */ 85273);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/message */ 28109));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.errors */ 96688));
                var _m_utils = __webpack_require__( /*! ../../../filter_builder/m_utils */ 70474);

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

                function baseOperation(grid) {
                    const getFullText = function(itemText, parentText) {
                        return parentText ? "".concat(parentText, "/").concat(itemText) : itemText
                    };
                    const getSelectedItemsTexts = function(items, parentText) {
                        let result = [];
                        items.forEach(item => {
                            if (item.items) {
                                const selectedItemsTexts = getSelectedItemsTexts(item.items, getFullText(item.text, parentText));
                                result = result.concat(selectedItemsTexts)
                            }
                            item.selected && result.push(getFullText(item.text, parentText))
                        });
                        return result
                    };
                    const headerFilterController = grid && grid.getController("headerFilter");
                    return {
                        dataTypes: ["string", "date", "datetime", "number", "boolean", "object"],
                        calculateFilterExpression: function(filterValue, field, fields) {
                            const result = [];
                            const lastIndex = filterValue.length - 1;
                            filterValue && filterValue.forEach((value, index) => {
                                if ((0, _m_utils.isCondition)(value) || (0, _m_utils.isGroup)(value)) {
                                    const filterExpression = (0, _m_utils.getFilterExpression)(value, fields, [], "headerFilter");
                                    result.push(filterExpression)
                                } else {
                                    const filterExpression = (0, _m_utils.getFilterExpression)([field.dataField, "=", value], fields, [], "headerFilter");
                                    result.push(filterExpression)
                                }
                                index !== lastIndex && result.push("or")
                            });
                            if (1 === result.length) {
                                return result[0]
                            }
                            return result
                        },
                        editorTemplate(conditionInfo, container) {
                            const div = (0, _renderer.default)("<div>").addClass("dx-filterbuilder-item-value-text").appendTo(container);
                            const column = (0, _extend.extend)(true, {}, grid.columnOption(conditionInfo.field.dataField));
                            (0, _m_utils.renderValueText)(div, conditionInfo.text && conditionInfo.text.split("|"));
                            column.filterType = "include";
                            column.filterValues = conditionInfo.value ? conditionInfo.value.slice() : [];
                            headerFilterController.showHeaderFilterMenuBase({
                                columnElement: div,
                                column: column,
                                apply() {
                                    value = this.filterValues, void conditionInfo.setValue(value);
                                    var value;
                                    headerFilterController.hideHeaderFilterMenu();
                                    conditionInfo.closeEditor()
                                },
                                onHidden() {
                                    conditionInfo.closeEditor()
                                },
                                isFilterBuilder: true
                            });
                            return container
                        },
                        customizeText: function(fieldInfo, options) {
                            options = options || {};
                            const {
                                value: value
                            } = fieldInfo;
                            let column = grid.columnOption(fieldInfo.field.dataField);
                            const headerFilter = column && column.headerFilter;
                            const lookup = column && column.lookup;
                            const values = options.values || [value];
                            if (headerFilter && headerFilter.dataSource || lookup && lookup.dataSource) {
                                const result = new _deferred.Deferred;
                                const itemsDeferred = options.items || new _deferred.Deferred;
                                if (!options.items) {
                                    column = (0, _extend.extend)({}, column, {
                                        filterType: "include",
                                        filterValues: values
                                    });
                                    const dataSourceOptions = headerFilterController.getDataSource(column);
                                    dataSourceOptions.paginate = false;
                                    const dataSource = new _data_source.DataSource(dataSourceOptions);
                                    const key = dataSource.store().key();
                                    if (key) {
                                        const {
                                            values: values
                                        } = options;
                                        if (values && values.length > 1) {
                                            const filter = values.reduce((result, value) => {
                                                if (result.length) {
                                                    result.push("or")
                                                }
                                                result.push([key, "=", value]);
                                                return result
                                            }, []);
                                            dataSource.filter(filter)
                                        } else {
                                            dataSource.filter([key, "=", fieldInfo.value])
                                        }
                                    } else if (fieldInfo.field.calculateDisplayValue) {
                                        _ui.default.log("W1017")
                                    }
                                    options.items = itemsDeferred;
                                    dataSource.load().done(itemsDeferred.resolve)
                                }
                                itemsDeferred.done(items => {
                                    const index = values.indexOf(fieldInfo.value);
                                    result.resolve(getSelectedItemsTexts(items, null)[index])
                                });
                                return result
                            }
                            const text = headerFilterController.getHeaderItemText(value, column, 0, grid.option("headerFilter"));
                            return text
                        }
                    }
                }
            },
        4062:
            /*!*************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/filter/m_filter_panel.js ***!
              \*************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.filterPanelModule = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _inflector = __webpack_require__( /*! ../../../../core/utils/inflector */ 78008);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../events/core/events_engine */ 55994));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/message */ 28109));
                var _check_box = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/check_box */ 18859));
                var _m_utils = __webpack_require__( /*! ../../../filter_builder/m_utils */ 70474);
                var _m_accessibility = __webpack_require__( /*! ../m_accessibility */ 9130);
                var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 15943));
                var _m_utils2 = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 60082));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const FILTER_PANEL_TEXT_CLASS = "".concat("filter-panel", "-text");
                const FILTER_PANEL_CHECKBOX_CLASS = "".concat("filter-panel", "-checkbox");
                const FILTER_PANEL_CLEAR_FILTER_CLASS = "".concat("filter-panel", "-clear-filter");
                const FILTER_PANEL_LEFT_CONTAINER = "".concat("filter-panel", "-left");
                const FilterPanelView = _m_modules.default.View.inherit({
                    isVisible() {
                        return this.option("filterPanel.visible") && this.getController("data").dataSource()
                    },
                    init() {
                        this.getController("data").dataSourceChanged.add(() => this.render());
                        this._columnsController = this.getController("columns")
                    },
                    _renderCore() {
                        const $element = this.element();
                        $element.empty();
                        const isColumnsDefined = !!this._columnsController.getColumns().length;
                        if (!isColumnsDefined) {
                            return
                        }
                        $element.addClass(this.addWidgetPrefix("filter-panel"));
                        const $leftContainer = (0, _renderer.default)("<div>").addClass(this.addWidgetPrefix(FILTER_PANEL_LEFT_CONTAINER)).appendTo($element);
                        this._renderFilterBuilderText($element, $leftContainer)
                    },
                    _renderFilterBuilderText($element, $leftContainer) {
                        const $filterElement = this._getFilterElement();
                        const $textElement = this._getTextElement();
                        if (this.option("filterValue") || this._filterValueBuffer) {
                            const $checkElement = this._getCheckElement();
                            const $removeButtonElement = this._getRemoveButtonElement();
                            $leftContainer.append($checkElement).append($filterElement).append($textElement);
                            $element.append($removeButtonElement);
                            return
                        }
                        $leftContainer.append($filterElement).append($textElement)
                    },
                    _getCheckElement() {
                        const that = this;
                        const $element = (0, _renderer.default)("<div>").addClass(this.addWidgetPrefix(FILTER_PANEL_CHECKBOX_CLASS));
                        that._createComponent($element, _check_box.default, {
                            value: that.option("filterPanel.filterEnabled"),
                            onValueChanged(e) {
                                that.option("filterPanel.filterEnabled", e.value)
                            }
                        });
                        $element.attr("title", this.option("filterPanel.texts.filterEnabledHint"));
                        return $element
                    },
                    _getFilterElement() {
                        const that = this;
                        const $element = (0, _renderer.default)("<div>").addClass("dx-icon-filter");
                        _events_engine.default.on($element, "click", () => that._showFilterBuilder());
                        (0, _m_accessibility.registerKeyboardAction)("filterPanel", that, $element, void 0, () => that._showFilterBuilder());
                        that._addTabIndexToElement($element);
                        return $element
                    },
                    _getTextElement() {
                        const that = this;
                        const $textElement = (0, _renderer.default)("<div>").addClass(that.addWidgetPrefix(FILTER_PANEL_TEXT_CLASS));
                        let filterText;
                        const filterValue = that.option("filterValue");
                        if (filterValue) {
                            (0, _deferred.when)(that.getFilterText(filterValue, that.getController("filterSync").getCustomFilterOperations())).done(filterText => {
                                const customizeText = that.option("filterPanel.customizeText");
                                if (customizeText) {
                                    const customText = customizeText({
                                        component: that.component,
                                        filterValue: filterValue,
                                        text: filterText
                                    });
                                    if ("string" === typeof customText) {
                                        filterText = customText
                                    }
                                }
                                $textElement.text(filterText)
                            })
                        } else {
                            filterText = that.option("filterPanel.texts.createFilter");
                            $textElement.text(filterText)
                        }
                        _events_engine.default.on($textElement, "click", () => that._showFilterBuilder());
                        (0, _m_accessibility.registerKeyboardAction)("filterPanel", that, $textElement, void 0, () => that._showFilterBuilder());
                        that._addTabIndexToElement($textElement);
                        return $textElement
                    },
                    _showFilterBuilder() {
                        this.option("filterBuilderPopup.visible", true)
                    },
                    _getRemoveButtonElement() {
                        const that = this;
                        const clearFilterValue = () => that.option("filterValue", null);
                        const $element = (0, _renderer.default)("<div>").addClass(that.addWidgetPrefix(FILTER_PANEL_CLEAR_FILTER_CLASS)).text(that.option("filterPanel.texts.clearFilter"));
                        _events_engine.default.on($element, "click", clearFilterValue);
                        (0, _m_accessibility.registerKeyboardAction)("filterPanel", this, $element, void 0, clearFilterValue);
                        that._addTabIndexToElement($element);
                        return $element
                    },
                    _addTabIndexToElement($element) {
                        if (!this.option("useLegacyKeyboardNavigation")) {
                            const tabindex = this.option("tabindex") || 0;
                            $element.attr("tabindex", tabindex)
                        }
                    },
                    optionChanged(args) {
                        switch (args.name) {
                            case "filterValue":
                                this._invalidate();
                                this.option("filterPanel.filterEnabled", true);
                                args.handled = true;
                                break;
                            case "filterPanel":
                                this._invalidate();
                                args.handled = true;
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _getConditionText(fieldText, operationText, valueText) {
                        let result = "[".concat(fieldText, "] ").concat(operationText);
                        if ((0, _type.isDefined)(valueText)) {
                            result += valueText
                        }
                        return result
                    },
                    _getValueMaskedText: value => Array.isArray(value) ? "('".concat(value.join("', '"), "')") : " '".concat(value, "'"),
                    _getValueText(field, customOperation, value) {
                        const deferred = new _deferred.Deferred;
                        const hasCustomOperation = customOperation && customOperation.customizeText;
                        if ((0, _type.isDefined)(value) || hasCustomOperation) {
                            if (!hasCustomOperation && field.lookup) {
                                (0, _m_utils.getCurrentLookupValueText)(field, value, data => {
                                    deferred.resolve(this._getValueMaskedText(data))
                                })
                            } else {
                                const displayValue = Array.isArray(value) ? value : _m_utils2.default.getDisplayValue(field, value, null);
                                (0, _deferred.when)((0, _m_utils.getCurrentValueText)(field, displayValue, customOperation, "filterPanel")).done(data => {
                                    deferred.resolve(this._getValueMaskedText(data))
                                })
                            }
                        } else {
                            deferred.resolve("")
                        }
                        return deferred.promise()
                    },
                    getConditionText(filterValue, options) {
                        const that = this;
                        const operation = filterValue[1];
                        const deferred = new _deferred.Deferred;
                        const customOperation = (0, _m_utils.getCustomOperation)(options.customOperations, operation);
                        let operationText;
                        const field = (0, _m_utils.getField)(filterValue[0], options.columns);
                        const fieldText = field.caption || "";
                        const value = filterValue[2];
                        if (customOperation) {
                            operationText = customOperation.caption || (0, _inflector.captionize)(customOperation.name)
                        } else if (null === value) {
                            operationText = (0, _m_utils.getCaptionByOperation)("=" === operation ? "isblank" : "isnotblank", options.filterOperationDescriptions)
                        } else {
                            operationText = (0, _m_utils.getCaptionByOperation)(operation, options.filterOperationDescriptions)
                        }
                        this._getValueText(field, customOperation, value).done(valueText => {
                            deferred.resolve(that._getConditionText(fieldText, operationText, valueText))
                        });
                        return deferred
                    },
                    getGroupText(filterValue, options, isInnerGroup) {
                        const that = this;
                        const result = new _deferred.Deferred;
                        const textParts = [];
                        const groupValue = (0, _m_utils.getGroupValue)(filterValue);
                        filterValue.forEach(item => {
                            if ((0, _m_utils.isCondition)(item)) {
                                textParts.push(that.getConditionText(item, options))
                            } else if ((0, _m_utils.isGroup)(item)) {
                                textParts.push(that.getGroupText(item, options, true))
                            }
                        });
                        _deferred.when.apply(this, textParts).done((function() {
                            let text;
                            for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
                                args[_key] = arguments[_key]
                            }
                            if (groupValue.startsWith("!")) {
                                const groupText = options.groupOperationDescriptions["not".concat(groupValue.substring(1, 2).toUpperCase()).concat(groupValue.substring(2))].split(" ");
                                text = "".concat(groupText[0], " ").concat(args[0])
                            } else {
                                text = args.join(" ".concat(options.groupOperationDescriptions[groupValue], " "))
                            }
                            if (isInnerGroup) {
                                text = "(".concat(text, ")")
                            }
                            result.resolve(text)
                        }));
                        return result
                    },
                    getFilterText(filterValue, customOperations) {
                        const options = {
                            customOperations: customOperations,
                            columns: this.getController("columns").getFilteringColumns(),
                            filterOperationDescriptions: this.option("filterBuilder.filterOperationDescriptions"),
                            groupOperationDescriptions: this.option("filterBuilder.groupOperationDescriptions")
                        };
                        return (0, _m_utils.isCondition)(filterValue) ? this.getConditionText(filterValue, options) : this.getGroupText(filterValue, options)
                    }
                });
                const filterPanelModule = {
                    defaultOptions: () => ({
                        filterPanel: {
                            visible: false,
                            filterEnabled: true,
                            texts: {
                                createFilter: _message.default.format("dxDataGrid-filterPanelCreateFilter"),
                                clearFilter: _message.default.format("dxDataGrid-filterPanelClearFilter"),
                                filterEnabledHint: _message.default.format("dxDataGrid-filterPanelFilterEnabledHint")
                            }
                        }
                    }),
                    views: {
                        filterPanelView: FilterPanelView
                    },
                    extenders: {
                        controllers: {
                            data: {
                                optionChanged(args) {
                                    switch (args.name) {
                                        case "filterPanel":
                                            this._applyFilter();
                                            args.handled = true;
                                            break;
                                        default:
                                            this.callBase(args)
                                    }
                                }
                            }
                        }
                    }
                };
                exports.filterPanelModule = filterPanelModule
            },
        12302:
            /*!***********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/filter/m_filter_row.js ***!
              \***********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.filterRowModule = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _size = __webpack_require__( /*! ../../../../core/utils/size */ 58664);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../events/core/events_engine */ 55994));
                var _index = __webpack_require__( /*! ../../../../events/utils/index */ 39611);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/message */ 28109));
                var _editor = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/editor/editor */ 96452));
                var _menu = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/menu */ 76995));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/overlay/ui.overlay */ 89799));
                var _accessibility = __webpack_require__( /*! ../../../../ui/shared/accessibility */ 56756);
                var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 15943));
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 60082));

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const OPERATION_ICONS = {
                    "=": "filter-operation-equals",
                    "<>": "filter-operation-not-equals",
                    "<": "filter-operation-less",
                    "<=": "filter-operation-less-equal",
                    ">": "filter-operation-greater",
                    ">=": "filter-operation-greater-equal",
                    default: "filter-operation-default",
                    notcontains: "filter-operation-not-contains",
                    contains: "filter-operation-contains",
                    startswith: "filter-operation-starts-with",
                    endswith: "filter-operation-ends-with",
                    between: "filter-operation-between"
                };
                const OPERATION_DESCRIPTORS = {
                    "=": "equal",
                    "<>": "notEqual",
                    "<": "lessThan",
                    "<=": "lessThanOrEqual",
                    ">": "greaterThan",
                    ">=": "greaterThanOrEqual",
                    startswith: "startsWith",
                    contains: "contains",
                    notcontains: "notContains",
                    endswith: "endsWith",
                    between: "between"
                };
                const BETWEEN_OPERATION_DATA_TYPES = ["date", "datetime", "number"];
                const ARIA_SEARCH_BOX = _message.default.format("dxDataGrid-ariaSearchBox");

                function isOnClickApplyFilterMode(that) {
                    return "onClick" === that.option("filterRow.applyFilter")
                }
                const getEditorInstance = function($editorContainer) {
                    const $editor = $editorContainer && $editorContainer.children();
                    const componentNames = $editor && $editor.data("dxComponents");
                    const editor = componentNames && componentNames.length && $editor.data(componentNames[0]);
                    if (editor instanceof _editor.default) {
                        return editor
                    }
                    return null
                };
                const ColumnHeadersViewFilterRowExtender = function() {
                    const getRangeTextByFilterValue = function(that, column) {
                        let result = "";
                        let rangeEnd = "";
                        const filterValue = getColumnFilterValue(that, column);
                        const formatOptions = _m_utils.default.getFormatOptionsByColumn(column, "filterRow");
                        if (Array.isArray(filterValue)) {
                            result = _m_utils.default.formatValue(filterValue[0], formatOptions);
                            rangeEnd = _m_utils.default.formatValue(filterValue[1], formatOptions);
                            if ("" !== rangeEnd) {
                                result += " - ".concat(rangeEnd)
                            }
                        } else if ((0, _type.isDefined)(filterValue)) {
                            result = _m_utils.default.formatValue(filterValue, formatOptions)
                        }
                        return result
                    };

                    function getColumnFilterValue(that, column) {
                        if (column) {
                            return isOnClickApplyFilterMode(that) && void 0 !== column.bufferedFilterValue ? column.bufferedFilterValue : column.filterValue
                        }
                    }
                    const getColumnSelectedFilterOperation = function(that, column) {
                        if (column) {
                            return isOnClickApplyFilterMode(that) && void 0 !== column.bufferedSelectedFilterOperation ? column.bufferedSelectedFilterOperation : column.selectedFilterOperation
                        }
                    };
                    const getFilterValue = function(that, columnIndex, $editorContainer) {
                        const column = that._columnsController.columnOption(columnIndex);
                        const filterValue = getColumnFilterValue(that, column);
                        const isFilterRange = $editorContainer.closest(".".concat(that.addWidgetPrefix("filter-range-overlay"))).length;
                        const isRangeStart = $editorContainer.hasClass(that.addWidgetPrefix("filter-range-start"));
                        if (filterValue && Array.isArray(filterValue) && "between" === getColumnSelectedFilterOperation(that, column)) {
                            if (isRangeStart) {
                                return filterValue[0]
                            }
                            return filterValue[1]
                        }
                        return !isFilterRange && function(filterValue, column) {
                            if (column && BETWEEN_OPERATION_DATA_TYPES.includes(column.dataType) && Array.isArray(filterValue)) {
                                return false
                            }
                            return void 0 !== filterValue
                        }(filterValue, column) ? filterValue : null
                    };
                    const updateFilterValue = function(that, options) {
                        const value = "" === options.value ? null : options.value;
                        const $editorContainer = options.container;
                        const column = that._columnsController.columnOption(options.column.index);
                        const filterValue = getFilterValue(that, column.index, $editorContainer);
                        if (!(0, _type.isDefined)(filterValue) && !(0, _type.isDefined)(value)) {
                            return
                        }
                        that._applyFilterViewController.setHighLight($editorContainer, filterValue !== value);
                        const columnOptionName = isOnClickApplyFilterMode(that) ? "bufferedFilterValue" : "filterValue";
                        const normalizedValue = function(that, filterValue, column, $editorContainer) {
                            if ("between" === getColumnSelectedFilterOperation(that, column)) {
                                const columnFilterValue = getColumnFilterValue(that, column);
                                if ($editorContainer.hasClass(that.addWidgetPrefix("filter-range-start"))) {
                                    return [filterValue, Array.isArray(columnFilterValue) ? columnFilterValue[1] : void 0]
                                }
                                return [Array.isArray(columnFilterValue) ? columnFilterValue[0] : columnFilterValue, filterValue]
                            }
                            return filterValue
                        }(that, value, column, $editorContainer);
                        const isBetween = "between" === getColumnSelectedFilterOperation(that, column);
                        const notFireEvent = options.notFireEvent || isBetween && Array.isArray(normalizedValue) && normalizedValue.includes(void 0);
                        that._columnsController.columnOption(column.index, columnOptionName, normalizedValue, notFireEvent)
                    };
                    return {
                        _updateEditorValue(column, $editorContainer) {
                            const editor = getEditorInstance($editorContainer);
                            editor && editor.option("value", getFilterValue(this, column.index, $editorContainer))
                        },
                        _columnOptionChanged(e) {
                            const that = this;
                            const {
                                optionNames: optionNames
                            } = e;
                            let $cell;
                            let $editorContainer;
                            let $editorRangeElements;
                            let $menu;
                            if (_m_utils.default.checkChanges(optionNames, ["filterValue", "bufferedFilterValue", "selectedFilterOperation", "bufferedSelectedFilterOperation", "filterValues", "filterType"]) && void 0 !== e.columnIndex) {
                                const visibleIndex = that._columnsController.getVisibleIndex(e.columnIndex);
                                const column = that._columnsController.columnOption(e.columnIndex);
                                $cell = that._getCellElement(that.element().find(".".concat(that.addWidgetPrefix("filter-row"))).index(), visibleIndex) || (0, _renderer.default)();
                                $editorContainer = $cell.find(".".concat("dx-editor-container")).first();
                                if (optionNames.filterValue || optionNames.bufferedFilterValue) {
                                    that._updateEditorValue(column, $editorContainer);
                                    const overlayInstance = $cell.find(".".concat(that.addWidgetPrefix("filter-range-overlay"))).data("dxOverlay");
                                    if (overlayInstance) {
                                        $editorRangeElements = overlayInstance.$content().find(".".concat("dx-editor-container"));
                                        that._updateEditorValue(column, $editorRangeElements.first());
                                        that._updateEditorValue(column, $editorRangeElements.last())
                                    }
                                    if (!overlayInstance || !overlayInstance.option("visible")) {
                                        that._updateFilterRangeContent($cell, getRangeTextByFilterValue(that, column))
                                    }
                                }
                                if (optionNames.selectedFilterOperation || optionNames.bufferedSelectedFilterOperation) {
                                    if (visibleIndex >= 0 && column) {
                                        $menu = $cell.find(".".concat("dx-menu"));
                                        if ($menu.length) {
                                            that._updateFilterOperationChooser($menu, column, $editorContainer);
                                            if ("between" === getColumnSelectedFilterOperation(that, column)) {
                                                that._renderFilterRangeContent($cell, column)
                                            } else if ($editorContainer.find(".".concat("dx-filter-range-content")).length) {
                                                that._renderEditor($editorContainer, that._getEditorOptions($editorContainer, column));
                                                that._hideFilterRange()
                                            }
                                        }
                                    }
                                }
                                return
                            }
                            that.callBase(e)
                        },
                        _renderCore() {
                            this._filterRangeOverlayInstance = null;
                            return this.callBase.apply(this, arguments)
                        },
                        _resizeCore() {
                            this.callBase.apply(this, arguments);
                            this._filterRangeOverlayInstance && this._filterRangeOverlayInstance.repaint()
                        },
                        isFilterRowVisible() {
                            return this._isElementVisible(this.option("filterRow"))
                        },
                        isVisible() {
                            return this.callBase() || this.isFilterRowVisible()
                        },
                        init() {
                            this.callBase();
                            this._applyFilterViewController = this.getController("applyFilter")
                        },
                        _initFilterRangeOverlay($cell, column) {
                            const that = this;
                            const sharedData = {};
                            const $editorContainer = $cell.find(".dx-editor-container");
                            const filterRangeOverlayClass = that.addWidgetPrefix("filter-range-overlay");
                            const $overlay = (0, _renderer.default)("<div>").addClass(filterRangeOverlayClass).appendTo($cell);
                            return that._createComponent($overlay, _ui.default, {
                                height: "auto",
                                shading: false,
                                showTitle: false,
                                focusStateEnabled: false,
                                hideOnOutsideClick: true,
                                wrapperAttr: {
                                    class: filterRangeOverlayClass
                                },
                                animation: false,
                                position: {
                                    my: "top",
                                    at: "top",
                                    of: $editorContainer.length && $editorContainer || $cell,
                                    offset: "0 -1"
                                },
                                contentTemplate(contentElement) {
                                    let editorOptions;
                                    let $editor = (0, _renderer.default)("<div>").addClass("".concat("dx-editor-container", " ").concat(that.addWidgetPrefix("filter-range-start"))).appendTo(contentElement);
                                    column = that._columnsController.columnOption(column.index);
                                    editorOptions = that._getEditorOptions($editor, column);
                                    editorOptions.sharedData = sharedData;
                                    that._renderEditor($editor, editorOptions);
                                    _events_engine.default.on($editor.find("input:not([type='hidden'])"), "keydown", e => {
                                        let $prevElement = $cell.find("[tabindex]").not(e.target).first();
                                        if ("tab" === (0, _index.normalizeKeyName)(e) && e.shiftKey) {
                                            e.preventDefault();
                                            that._hideFilterRange();
                                            if (!$prevElement.length) {
                                                $prevElement = $cell.prev().find("[tabindex]").last()
                                            }
                                            _events_engine.default.trigger($prevElement, "focus")
                                        }
                                    });
                                    $editor = (0, _renderer.default)("<div>").addClass("".concat("dx-editor-container", " ").concat(that.addWidgetPrefix("filter-range-end"))).appendTo(contentElement);
                                    editorOptions = that._getEditorOptions($editor, column);
                                    editorOptions.sharedData = sharedData;
                                    that._renderEditor($editor, editorOptions);
                                    _events_engine.default.on($editor.find("input:not([type='hidden'])"), "keydown", e => {
                                        if ("tab" === (0, _index.normalizeKeyName)(e) && !e.shiftKey) {
                                            e.preventDefault();
                                            that._hideFilterRange();
                                            _events_engine.default.trigger($cell.next().find("[tabindex]").first(), "focus")
                                        }
                                    });
                                    return (0, _renderer.default)(contentElement).addClass(that.getWidgetContainerClass())
                                },
                                onShown(e) {
                                    const $editor = e.component.$content().find(".".concat("dx-editor-container")).first();
                                    _events_engine.default.trigger($editor.find("input:not([type='hidden'])"), "focus")
                                },
                                onHidden() {
                                    column = that._columnsController.columnOption(column.index);
                                    $cell.find(".".concat("dx-menu")).parent().addClass("dx-editor-with-menu");
                                    if ("between" === getColumnSelectedFilterOperation(that, column)) {
                                        that._updateFilterRangeContent($cell, getRangeTextByFilterValue(that, column));
                                        that.component.updateDimensions()
                                    }
                                }
                            })
                        },
                        _updateFilterRangeOverlay(options) {
                            const overlayInstance = this._filterRangeOverlayInstance;
                            overlayInstance && overlayInstance.option(options)
                        },
                        _showFilterRange($cell, column) {
                            const that = this;
                            const $overlay = $cell.children(".".concat(that.addWidgetPrefix("filter-range-overlay")));
                            let overlayInstance = $overlay.length && $overlay.data("dxOverlay");
                            if (!overlayInstance && column) {
                                overlayInstance = that._initFilterRangeOverlay($cell, column)
                            }
                            if (!overlayInstance.option("visible")) {
                                that._filterRangeOverlayInstance && that._filterRangeOverlayInstance.hide();
                                that._filterRangeOverlayInstance = overlayInstance;
                                that._updateFilterRangeOverlay({
                                    width: (0, _size.getOuterWidth)($cell, true) + 1
                                });
                                that._filterRangeOverlayInstance && that._filterRangeOverlayInstance.show()
                            }
                        },
                        _hideFilterRange() {
                            const overlayInstance = this._filterRangeOverlayInstance;
                            overlayInstance && overlayInstance.hide()
                        },
                        getFilterRangeOverlayInstance() {
                            return this._filterRangeOverlayInstance
                        },
                        _createRow(row) {
                            const $row = this.callBase(row);
                            if ("filter" === row.rowType) {
                                $row.addClass(this.addWidgetPrefix("filter-row"));
                                if (!this.option("useLegacyKeyboardNavigation")) {
                                    _events_engine.default.on($row, "keydown", event => (0, _accessibility.selectView)("filterRow", this, event))
                                }
                            }
                            return $row
                        },
                        _getRows() {
                            const result = this.callBase();
                            if (this.isFilterRowVisible()) {
                                result.push({
                                    rowType: "filter"
                                })
                            }
                            return result
                        },
                        _renderFilterCell(cell, options) {
                            const that = this;
                            const {
                                column: column
                            } = options;
                            const $cell = (0, _renderer.default)(cell);
                            if (that.component.option("showColumnHeaders")) {
                                that.setAria("describedby", column.headerId, $cell)
                            }
                            that.setAria("label", _message.default.format("dxDataGrid-ariaFilterCell"), $cell);
                            $cell.addClass("dx-editor-cell");
                            const $container = (0, _renderer.default)("<div>").appendTo($cell);
                            const $editorContainer = (0, _renderer.default)("<div>").addClass("dx-editor-container").appendTo($container);
                            if ("between" === getColumnSelectedFilterOperation(that, column)) {
                                that._renderFilterRangeContent($cell, column)
                            } else {
                                const editorOptions = that._getEditorOptions($editorContainer, column);
                                that._renderEditor($editorContainer, editorOptions)
                            }
                            const {
                                alignment: alignment
                            } = column;
                            if (alignment && "center" !== alignment) {
                                $cell.find("input:not([type='hidden'])").first().css("textAlign", column.alignment)
                            }
                            if (column.filterOperations && column.filterOperations.length) {
                                that._renderFilterOperationChooser($container, column, $editorContainer)
                            }
                        },
                        _renderCellContent($cell, options) {
                            const that = this;
                            const {
                                column: column
                            } = options;
                            if ("filter" === options.rowType) {
                                if (column.command) {
                                    $cell.html("&nbsp;")
                                } else if (column.allowFiltering) {
                                    that.renderTemplate($cell, that._renderFilterCell.bind(that), options).done(() => {
                                        that._updateCell($cell, options)
                                    });
                                    return
                                }
                            }
                            this.callBase.apply(this, arguments)
                        },
                        _getEditorOptions($editorContainer, column) {
                            const that = this;
                            const accessibilityOptions = {
                                editorOptions: {
                                    inputAttr: that._getFilterInputAccessibilityAttributes(column)
                                }
                            };
                            const result = (0, _extend.extend)(accessibilityOptions, column, {
                                value: getFilterValue(that, column.index, $editorContainer),
                                parentType: "filterRow",
                                showAllText: that.option("filterRow.showAllText"),
                                updateValueTimeout: "onClick" === that.option("filterRow.applyFilter") ? 0 : 700,
                                width: null,
                                setValue(value, notFireEvent) {
                                    updateFilterValue(that, {
                                        column: column,
                                        value: value,
                                        container: $editorContainer,
                                        notFireEvent: notFireEvent
                                    })
                                }
                            });
                            if ("between" === getColumnSelectedFilterOperation(that, column)) {
                                if ($editorContainer.hasClass(that.addWidgetPrefix("filter-range-start"))) {
                                    result.placeholder = that.option("filterRow.betweenStartText")
                                } else {
                                    result.placeholder = that.option("filterRow.betweenEndText")
                                }
                            }
                            return result
                        },
                        _getFilterInputAccessibilityAttributes(column) {
                            const columnAriaLabel = _message.default.format("dxDataGrid-ariaFilterCell");
                            if (this.component.option("showColumnHeaders")) {
                                return {
                                    "aria-label": columnAriaLabel,
                                    "aria-describedby": column.headerId
                                }
                            }
                            return {
                                "aria-label": columnAriaLabel
                            }
                        },
                        _renderEditor($editorContainer, options) {
                            $editorContainer.empty();
                            const $element = (0, _renderer.default)("<div>").appendTo($editorContainer);
                            const editorController = this.getController("editorFactory");
                            const dataSource = this.getController("data").dataSource();
                            const filterRowController = this.getController("applyFilter");
                            if (options.lookup && this.option("syncLookupFilterValues")) {
                                filterRowController.setCurrentColumnForFiltering(options);
                                const filter = this.getController("data").getCombinedFilter();
                                filterRowController.setCurrentColumnForFiltering(null);
                                const lookupDataSource = _m_utils.default.getWrappedLookupDataSource(options, dataSource, filter);
                                const lookupOptions = _extends(_extends({}, options), {
                                    lookup: _extends(_extends({}, options.lookup), {
                                        dataSource: lookupDataSource
                                    })
                                });
                                return editorController.createEditor($element, lookupOptions)
                            }
                            return editorController.createEditor($element, options)
                        },
                        _renderFilterRangeContent($cell, column) {
                            const that = this;
                            const $editorContainer = $cell.find(".".concat("dx-editor-container")).first();
                            $editorContainer.empty();
                            const $filterRangeContent = (0, _renderer.default)("<div>").addClass("dx-filter-range-content").attr("tabindex", this.option("tabIndex"));
                            _events_engine.default.on($filterRangeContent, "focusin", () => {
                                that._showFilterRange($cell, column)
                            });
                            $filterRangeContent.appendTo($editorContainer);
                            that._updateFilterRangeContent($cell, getRangeTextByFilterValue(that, column))
                        },
                        _updateFilterRangeContent($cell, value) {
                            const $filterRangeContent = $cell.find(".".concat("dx-filter-range-content"));
                            if ($filterRangeContent.length) {
                                if ("" === value) {
                                    $filterRangeContent.html("&nbsp;")
                                } else {
                                    $filterRangeContent.text(value)
                                }
                            }
                        },
                        _updateFilterOperationChooser($menu, column, $editorContainer) {
                            const that = this;
                            let isCellWasFocused;
                            const restoreFocus = function() {
                                const menu = _menu.default.getInstance($menu);
                                menu && menu.option("focusedElement", null);
                                isCellWasFocused && that._focusEditor($editorContainer)
                            };
                            that._createComponent($menu, _menu.default, {
                                integrationOptions: {},
                                activeStateEnabled: false,
                                selectionMode: "single",
                                cssClass: "".concat(that.getWidgetContainerClass(), " ").concat("dx-cell-focus-disabled", " ").concat("dx-filter-menu"),
                                showFirstSubmenuMode: "onHover",
                                hideSubmenuOnMouseLeave: true,
                                items: [{
                                    disabled: !(column.filterOperations && column.filterOperations.length),
                                    icon: OPERATION_ICONS[getColumnSelectedFilterOperation(that, column) || "default"],
                                    selectable: false,
                                    items: that._getFilterOperationMenuItems(column)
                                }],
                                onItemRendered: _ref => {
                                    let {
                                        itemElement: itemElement
                                    } = _ref;
                                    this.setAria("label", ARIA_SEARCH_BOX, (0, _renderer.default)(itemElement))
                                },
                                onItemClick(properties) {
                                    const selectedFilterOperation = properties.itemData.name;
                                    const columnSelectedFilterOperation = getColumnSelectedFilterOperation(that, column);
                                    let notFocusEditor = false;
                                    const isOnClickMode = isOnClickApplyFilterMode(that);
                                    const options = {};
                                    if (properties.itemData.items || selectedFilterOperation && selectedFilterOperation === columnSelectedFilterOperation) {
                                        return
                                    }
                                    if (selectedFilterOperation) {
                                        options[isOnClickMode ? "bufferedSelectedFilterOperation" : "selectedFilterOperation"] = selectedFilterOperation;
                                        if ("between" === selectedFilterOperation || "between" === columnSelectedFilterOperation) {
                                            notFocusEditor = "between" === selectedFilterOperation;
                                            options[isOnClickMode ? "bufferedFilterValue" : "filterValue"] = null
                                        }
                                    } else {
                                        options[isOnClickMode ? "bufferedFilterValue" : "filterValue"] = null;
                                        options[isOnClickMode ? "bufferedSelectedFilterOperation" : "selectedFilterOperation"] = column.defaultSelectedFilterOperation || null
                                    }
                                    that._columnsController.columnOption(column.index, options);
                                    that._applyFilterViewController.setHighLight($editorContainer, true);
                                    if (!selectedFilterOperation) {
                                        const editor = getEditorInstance($editorContainer);
                                        if (editor && "dxDateBox" === editor.NAME && !editor.option("isValid")) {
                                            editor.clear();
                                            editor.option("isValid", true)
                                        }
                                    }
                                    if (!notFocusEditor) {
                                        that._focusEditor($editorContainer)
                                    } else {
                                        that._showFilterRange($editorContainer.closest(".".concat("dx-editor-cell")), column)
                                    }
                                },
                                onSubmenuShowing() {
                                    isCellWasFocused = that._isEditorFocused($editorContainer);
                                    that.getController("editorFactory").loseFocus()
                                },
                                onSubmenuHiding() {
                                    _events_engine.default.trigger($menu, "blur");
                                    restoreFocus()
                                },
                                onContentReady(e) {
                                    _events_engine.default.on($menu, "blur", () => {
                                        const menu = e.component;
                                        menu._hideSubmenuAfterTimeout();
                                        restoreFocus()
                                    })
                                },
                                rtlEnabled: that.option("rtlEnabled")
                            })
                        },
                        _isEditorFocused: $container => $container.hasClass("dx-focused") || $container.parents(".".concat("dx-focused")).length,
                        _focusEditor($container) {
                            this.getController("editorFactory").focus($container);
                            _events_engine.default.trigger($container.find("input:not([type='hidden'])"), "focus")
                        },
                        _renderFilterOperationChooser($container, column, $editorContainer) {
                            const that = this;
                            let $menu;
                            if (that.option("filterRow.showOperationChooser")) {
                                $container.addClass("dx-editor-with-menu");
                                $menu = (0, _renderer.default)("<div>").prependTo($container);
                                that._updateFilterOperationChooser($menu, column, $editorContainer)
                            }
                        },
                        _getFilterOperationMenuItems(column) {
                            const that = this;
                            let result = [{}];
                            const filterRowOptions = that.option("filterRow");
                            const operationDescriptions = filterRowOptions && filterRowOptions.operationDescriptions || {};
                            if (column.filterOperations && column.filterOperations.length) {
                                const availableFilterOperations = column.filterOperations.filter(value => (0, _type.isDefined)(OPERATION_DESCRIPTORS[value]));
                                result = (0, _iterator.map)(availableFilterOperations, value => {
                                    const descriptionName = OPERATION_DESCRIPTORS[value];
                                    return {
                                        name: value,
                                        selected: (getColumnSelectedFilterOperation(that, column) || column.defaultFilterOperation) === value,
                                        text: operationDescriptions[descriptionName],
                                        icon: OPERATION_ICONS[value]
                                    }
                                });
                                result.push({
                                    name: null,
                                    text: filterRowOptions && filterRowOptions.resetOperationText,
                                    icon: OPERATION_ICONS.default
                                })
                            }
                            return result
                        },
                        _handleDataChanged(e) {
                            var _a, _b, _c, _d, _e, _f;
                            const dataSource = null === (_b = null === (_a = this._dataController) || void 0 === _a ? void 0 : _a.dataSource) || void 0 === _b ? void 0 : _b.call(_a);
                            const lastLoadOptions = null === (_c = null === dataSource || void 0 === dataSource ? void 0 : dataSource.lastLoadOptions) || void 0 === _c ? void 0 : _c.call(dataSource);
                            this.callBase.apply(this, arguments);
                            if ((null === (_d = e.operationTypes) || void 0 === _d ? void 0 : _d.filtering) || (null === (_e = e.operationTypes) || void 0 === _e ? void 0 : _e.fullReload)) {
                                this.updateLookupDataSource((null === (_f = e.operationTypes) || void 0 === _f ? void 0 : _f.filtering) || (null === lastLoadOptions || void 0 === lastLoadOptions ? void 0 : lastLoadOptions.filter))
                            }
                        },
                        updateLookupDataSource(filterChanged) {
                            if (!this.option("syncLookupFilterValues")) {
                                return
                            }
                            if (!this.element()) {
                                return
                            }
                            const columns = this._columnsController.getVisibleColumns();
                            const dataSource = this._dataController.dataSource();
                            const applyFilterViewController = this._applyFilterViewController;
                            const rowIndex = this.element().find(".".concat(this.addWidgetPrefix("filter-row"))).index();
                            if (-1 === rowIndex) {
                                return
                            }
                            columns.forEach((column, index) => {
                                if (!column.lookup || column.calculateCellValue !== column.defaultCalculateCellValue) {
                                    return
                                }
                                const $cell = this._getCellElement(rowIndex, index);
                                const editor = getEditorInstance(null === $cell || void 0 === $cell ? void 0 : $cell.find(".dx-editor-container"));
                                if (editor) {
                                    applyFilterViewController.setCurrentColumnForFiltering(column);
                                    const filter = this._dataController.getCombinedFilter() || null;
                                    applyFilterViewController.setCurrentColumnForFiltering(null);
                                    const editorDataSource = editor.option("dataSource");
                                    const shouldUpdateFilter = !filterChanged || !(0, _common.equalByValue)(editorDataSource.__dataGridSourceFilter || null, filter);
                                    if (shouldUpdateFilter) {
                                        const lookupDataSource = _m_utils.default.getWrappedLookupDataSource(column, dataSource, filter);
                                        editor.option("dataSource", lookupDataSource)
                                    }
                                }
                            })
                        },
                        optionChanged(args) {
                            const that = this;
                            switch (args.name) {
                                case "filterRow":
                                case "showColumnLines":
                                    this._invalidate(true, true);
                                    args.handled = true;
                                    break;
                                case "syncLookupFilterValues":
                                    if (args.value) {
                                        this.updateLookupDataSource()
                                    } else {
                                        this.render()
                                    }
                                    args.handled = true;
                                    break;
                                default:
                                    that.callBase(args)
                            }
                        }
                    }
                }();
                const DataControllerFilterRowExtender = {
                    skipCalculateColumnFilters: () => false,
                    _calculateAdditionalFilter() {
                        if (this.skipCalculateColumnFilters()) {
                            return this.callBase()
                        }
                        const filters = [this.callBase()];
                        const columns = this._columnsController.getVisibleColumns(null, true);
                        const filterRowController = this.getController("applyFilter");
                        (0, _iterator.each)(columns, (function() {
                            var _a;
                            const shouldSkip = (null === (_a = filterRowController.getCurrentColumnForFiltering()) || void 0 === _a ? void 0 : _a.index) === this.index;
                            if (this.allowFiltering && this.calculateFilterExpression && (0, _type.isDefined)(this.filterValue) && !shouldSkip) {
                                const filter = this.createFilterExpression(this.filterValue, this.selectedFilterOperation || this.defaultFilterOperation, "filterRow");
                                filters.push(filter)
                            }
                        }));
                        return _m_utils.default.combineFilters(filters)
                    }
                };
                const ApplyFilterViewController = _m_modules.default.ViewController.inherit({
                    _getHeaderPanel() {
                        if (!this._headerPanel) {
                            this._headerPanel = this.getView("headerPanel")
                        }
                        return this._headerPanel
                    },
                    setHighLight($element, value) {
                        if (isOnClickApplyFilterMode(this)) {
                            $element && $element.toggleClass("dx-highlight-outline", value) && $element.closest(".".concat("dx-editor-cell")).toggleClass("dx-filter-modified", value);
                            this._getHeaderPanel().enableApplyButton(value)
                        }
                    },
                    applyFilter() {
                        const columnsController = this.getController("columns");
                        const columns = columnsController.getColumns();
                        columnsController.beginUpdate();
                        for (let i = 0; i < columns.length; i++) {
                            const column = columns[i];
                            if (void 0 !== column.bufferedFilterValue) {
                                columnsController.columnOption(i, "filterValue", column.bufferedFilterValue);
                                column.bufferedFilterValue = void 0
                            }
                            if (void 0 !== column.bufferedSelectedFilterOperation) {
                                columnsController.columnOption(i, "selectedFilterOperation", column.bufferedSelectedFilterOperation);
                                column.bufferedSelectedFilterOperation = void 0
                            }
                        }
                        columnsController.endUpdate();
                        this.removeHighLights()
                    },
                    removeHighLights() {
                        if (isOnClickApplyFilterMode(this)) {
                            const columnHeadersViewElement = this.getView("columnHeadersView").element();
                            columnHeadersViewElement.find(".".concat(this.addWidgetPrefix("filter-row"), " .").concat("dx-highlight-outline")).removeClass("dx-highlight-outline");
                            columnHeadersViewElement.find(".".concat(this.addWidgetPrefix("filter-row"), " .").concat("dx-filter-modified")).removeClass("dx-filter-modified");
                            this._getHeaderPanel().enableApplyButton(false)
                        }
                    },
                    setCurrentColumnForFiltering(column) {
                        this._currentColumn = column
                    },
                    getCurrentColumnForFiltering() {
                        return this._currentColumn
                    }
                });
                const filterRowModule = {
                    defaultOptions: () => ({
                        syncLookupFilterValues: true,
                        filterRow: {
                            visible: false,
                            showOperationChooser: true,
                            showAllText: _message.default.format("dxDataGrid-filterRowShowAllText"),
                            resetOperationText: _message.default.format("dxDataGrid-filterRowResetOperationText"),
                            applyFilter: "auto",
                            applyFilterText: _message.default.format("dxDataGrid-applyFilterText"),
                            operationDescriptions: {
                                equal: _message.default.format("dxDataGrid-filterRowOperationEquals"),
                                notEqual: _message.default.format("dxDataGrid-filterRowOperationNotEquals"),
                                lessThan: _message.default.format("dxDataGrid-filterRowOperationLess"),
                                lessThanOrEqual: _message.default.format("dxDataGrid-filterRowOperationLessOrEquals"),
                                greaterThan: _message.default.format("dxDataGrid-filterRowOperationGreater"),
                                greaterThanOrEqual: _message.default.format("dxDataGrid-filterRowOperationGreaterOrEquals"),
                                startsWith: _message.default.format("dxDataGrid-filterRowOperationStartsWith"),
                                contains: _message.default.format("dxDataGrid-filterRowOperationContains"),
                                notContains: _message.default.format("dxDataGrid-filterRowOperationNotContains"),
                                endsWith: _message.default.format("dxDataGrid-filterRowOperationEndsWith"),
                                between: _message.default.format("dxDataGrid-filterRowOperationBetween"),
                                isBlank: _message.default.format("dxFilterBuilder-filterOperationIsBlank"),
                                isNotBlank: _message.default.format("dxFilterBuilder-filterOperationIsNotBlank")
                            },
                            betweenStartText: _message.default.format("dxDataGrid-filterRowOperationBetweenStartText"),
                            betweenEndText: _message.default.format("dxDataGrid-filterRowOperationBetweenEndText")
                        }
                    }),
                    controllers: {
                        applyFilter: ApplyFilterViewController
                    },
                    extenders: {
                        controllers: {
                            data: DataControllerFilterRowExtender,
                            columnsResizer: {
                                _startResizing() {
                                    const that = this;
                                    that.callBase.apply(that, arguments);
                                    if (that.isResizing()) {
                                        const overlayInstance = that._columnHeadersView.getFilterRangeOverlayInstance();
                                        if (overlayInstance) {
                                            const cellIndex = overlayInstance.$element().closest("td").index();
                                            if (cellIndex === that._targetPoint.columnIndex || cellIndex === that._targetPoint.columnIndex + 1) {
                                                overlayInstance.$content().hide()
                                            }
                                        }
                                    }
                                },
                                _endResizing() {
                                    const that = this;
                                    let $cell;
                                    if (that.isResizing()) {
                                        const overlayInstance = that._columnHeadersView.getFilterRangeOverlayInstance();
                                        if (overlayInstance) {
                                            $cell = overlayInstance.$element().closest("td");
                                            that._columnHeadersView._updateFilterRangeOverlay({
                                                width: (0, _size.getOuterWidth)($cell, true) + 1
                                            });
                                            overlayInstance.$content().show()
                                        }
                                    }
                                    that.callBase.apply(that, arguments)
                                }
                            },
                            editing: {
                                updateFieldValue(options) {
                                    if (options.column.lookup) {
                                        this._needUpdateLookupDataSource = true
                                    }
                                    return this.callBase.apply(this, arguments)
                                },
                                _afterSaveEditData(cancel) {
                                    var _a;
                                    if (this._needUpdateLookupDataSource && !cancel) {
                                        null === (_a = this.getView("columnHeadersView")) || void 0 === _a ? void 0 : _a.updateLookupDataSource()
                                    }
                                    this._needUpdateLookupDataSource = false;
                                    return this.callBase.apply(this, arguments)
                                },
                                _afterCancelEditData() {
                                    this._needUpdateLookupDataSource = false;
                                    return this.callBase.apply(this, arguments)
                                }
                            }
                        },
                        views: {
                            columnHeadersView: ColumnHeadersViewFilterRowExtender,
                            headerPanel: {
                                _getToolbarItems() {
                                    const items = this.callBase();
                                    const filterItem = this._prepareFilterItem(items);
                                    return filterItem.concat(items)
                                },
                                _prepareFilterItem() {
                                    const that = this;
                                    const filterItem = [];
                                    if (that._isShowApplyFilterButton()) {
                                        const hintText = that.option("filterRow.applyFilterText");
                                        const columns = that._columnsController.getColumns();
                                        const disabled = !columns.filter(column => void 0 !== column.bufferedFilterValue).length;
                                        const onInitialized = function(e) {
                                            (0, _renderer.default)(e.element).addClass(that._getToolbarButtonClass("dx-apply-button"))
                                        };
                                        const onClickHandler = function() {
                                            that._applyFilterViewController.applyFilter()
                                        };
                                        const toolbarItem = {
                                            widget: "dxButton",
                                            options: {
                                                icon: "apply-filter",
                                                disabled: disabled,
                                                onClick: onClickHandler,
                                                hint: hintText,
                                                text: hintText,
                                                onInitialized: onInitialized
                                            },
                                            showText: "inMenu",
                                            name: "applyFilterButton",
                                            location: "after",
                                            locateInMenu: "auto",
                                            sortIndex: 10
                                        };
                                        filterItem.push(toolbarItem)
                                    }
                                    return filterItem
                                },
                                _isShowApplyFilterButton() {
                                    const filterRowOptions = this.option("filterRow");
                                    return filterRowOptions && filterRowOptions.visible && "onClick" === filterRowOptions.applyFilter
                                },
                                init() {
                                    this.callBase();
                                    this._dataController = this.getController("data");
                                    this._applyFilterViewController = this.getController("applyFilter")
                                },
                                enableApplyButton(value) {
                                    this.setToolbarItemDisabled("applyFilterButton", !value)
                                },
                                isVisible() {
                                    return this.callBase() || this._isShowApplyFilterButton()
                                },
                                optionChanged(args) {
                                    if ("filterRow" === args.name) {
                                        this._invalidate();
                                        args.handled = true
                                    } else {
                                        this.callBase(args)
                                    }
                                }
                            }
                        }
                    }
                };
                exports.filterRowModule = filterRowModule
            },
        14407:
            /*!************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/filter/m_filter_sync.js ***!
              \************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.filterSyncModule = void 0;
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _filtering = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/shared/filtering */ 18740));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.errors */ 96688));
                var _m_utils = __webpack_require__( /*! ../../../filter_builder/m_utils */ 70474);
                var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 15943));
                var _m_utils2 = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 60082));
                var _m_filter_custom_operations = __webpack_require__( /*! ./m_filter_custom_operations */ 9622);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const FILTER_ROW_OPERATIONS = ["=", "<>", "<", "<=", ">", ">=", "notcontains", "contains", "startswith", "endswith", "between"];

                function getColumnIdentifier(column) {
                    return column.name || column.dataField
                }
                const FilterSyncController = _m_modules.default.Controller.inherit(function() {
                    const canSyncHeaderFilterWithFilterRow = function(column) {
                        const filterValues = column.filterValues || [];
                        return !_filtering.default.getGroupInterval(column) && !(column.headerFilter && column.headerFilter.dataSource) || 1 === filterValues.length && null === filterValues[0]
                    };
                    const getConditionFromFilterRow = function(column) {
                        const value = column.filterValue;
                        if ((0, _type.isDefined)(value)) {
                            const operation = column.selectedFilterOperation || column.defaultFilterOperation || (0, _m_utils.getDefaultOperation)(column);
                            const filter = [getColumnIdentifier(column), operation, column.filterValue];
                            return filter
                        }
                        return null
                    };
                    const getConditionFromHeaderFilter = function(column) {
                        let selectedOperation;
                        let value;
                        const {
                            filterValues: filterValues
                        } = column;
                        if (!filterValues) {
                            return null
                        }
                        if (1 === filterValues.length && canSyncHeaderFilterWithFilterRow(column) && !Array.isArray(filterValues[0])) {
                            "exclude" === column.filterType ? selectedOperation = "<>" : selectedOperation = "=";
                            value = filterValues[0]
                        } else {
                            "exclude" === column.filterType ? selectedOperation = "noneof" : selectedOperation = "anyof";
                            value = filterValues
                        }
                        return [getColumnIdentifier(column), selectedOperation, value]
                    };
                    const updateHeaderFilterCondition = function(columnsController, column, headerFilterCondition) {
                        const headerFilter = function(headerFilterCondition, column) {
                            if (!headerFilterCondition) {
                                return {
                                    filterType: "include",
                                    filterValues: void 0
                                }
                            }
                            let filterType;
                            const selectedFilterOperation = headerFilterCondition[1];
                            const value = headerFilterCondition[2];
                            const hasArrayValue = Array.isArray(value);
                            if (!hasArrayValue) {
                                if (!canSyncHeaderFilterWithFilterRow(column)) {
                                    return {
                                        filterType: "include",
                                        filterValues: void 0
                                    }
                                }
                            }
                            switch (selectedFilterOperation) {
                                case "anyof":
                                case "=":
                                    filterType = "include";
                                    break;
                                case "noneof":
                                case "<>":
                                    filterType = "exclude";
                                    break;
                                default:
                                    return {
                                        filterType: "include", filterValues: void 0
                                    }
                            }
                            return {
                                filterType: filterType,
                                filterValues: hasArrayValue ? value : [value]
                            }
                        }(headerFilterCondition, column);
                        columnsController.columnOption(getColumnIdentifier(column), headerFilter)
                    };
                    const updateFilterRowCondition = function(columnsController, column, condition) {
                        let filterRowOptions;
                        let selectedFilterOperation = null === condition || void 0 === condition ? void 0 : condition[1];
                        const filterValue = null === condition || void 0 === condition ? void 0 : condition[2];
                        const filterOperations = column.filterOperations || column.defaultFilterOperations;
                        if ((!filterOperations || filterOperations.indexOf(selectedFilterOperation) >= 0 || selectedFilterOperation === column.defaultFilterOperation) && FILTER_ROW_OPERATIONS.includes(selectedFilterOperation) && null !== filterValue) {
                            if (selectedFilterOperation === column.defaultFilterOperation && !(0, _type.isDefined)(column.selectedFilterOperation)) {
                                selectedFilterOperation = column.selectedFilterOperation
                            }
                            filterRowOptions = {
                                filterValue: filterValue,
                                selectedFilterOperation: selectedFilterOperation
                            }
                        } else {
                            filterRowOptions = {
                                filterValue: void 0,
                                selectedFilterOperation: void 0
                            }
                        }
                        columnsController.columnOption(getColumnIdentifier(column), filterRowOptions)
                    };
                    return {
                        syncFilterValue() {
                            const that = this;
                            const columnsController = that.getController("columns");
                            const columns = columnsController.getFilteringColumns();
                            this._skipSyncColumnOptions = true;
                            columns.forEach(column => {
                                const filterConditions = (0, _m_utils.getMatchedConditions)(that.option("filterValue"), getColumnIdentifier(column));
                                if (1 === filterConditions.length) {
                                    const filterCondition = filterConditions[0];
                                    updateHeaderFilterCondition(columnsController, column, filterCondition);
                                    updateFilterRowCondition(columnsController, column, filterCondition)
                                } else {
                                    (0, _type.isDefined)(column.filterValues) && updateHeaderFilterCondition(columnsController, column, null);
                                    (0, _type.isDefined)(column.filterValue) && updateFilterRowCondition(columnsController, column, null)
                                }
                            });
                            this._skipSyncColumnOptions = false
                        },
                        _initSync() {
                            const columns = this.getController("columns").getColumns();
                            const dataController = this.getController("data");
                            const pageIndex = dataController.pageIndex();
                            ! function(columns) {
                                columns.forEach(column => {
                                    const identifier = getColumnIdentifier(column);
                                    if (!(0, _type.isDefined)(identifier) && column.allowFiltering) {
                                        throw new _ui.default.Error("E1049", column.caption)
                                    }
                                })
                            }(columns);
                            if (!this.option("filterValue")) {
                                const filteringColumns = this.getController("columns").getFilteringColumns();
                                const filterValue = this.getFilterValueFromColumns(filteringColumns);
                                this._silentOption("filterValue", filterValue)
                            }
                            this.syncFilterValue();
                            dataController.pageIndex(pageIndex)
                        },
                        init() {
                            const dataController = this.getController("data");
                            if (dataController.isFilterSyncActive()) {
                                if (this.getController("columns").isAllDataTypesDefined()) {
                                    this._initSync()
                                } else {
                                    dataController.dataSourceChanged.add(() => this._initSync())
                                }
                            }
                        },
                        _getSyncFilterRow(filterValue, column) {
                            const filter = getConditionFromFilterRow(column);
                            if ((0, _type.isDefined)(filter)) {
                                return (0, _m_utils.syncFilters)(filterValue, filter)
                            }
                            return (0, _m_utils.removeFieldConditionsFromFilter)(filterValue, getColumnIdentifier(column))
                        },
                        _getSyncHeaderFilter(filterValue, column) {
                            const filter = getConditionFromHeaderFilter(column);
                            if (filter) {
                                return (0, _m_utils.syncFilters)(filterValue, filter)
                            }
                            return (0, _m_utils.removeFieldConditionsFromFilter)(filterValue, getColumnIdentifier(column))
                        },
                        getFilterValueFromColumns(columns) {
                            if (!this.getController("data").isFilterSyncActive()) {
                                return null
                            }
                            const filterValue = ["and"];
                            columns && columns.forEach(column => {
                                const headerFilter = getConditionFromHeaderFilter(column);
                                const filterRow = getConditionFromFilterRow(column);
                                headerFilter && (0, _m_utils.addItem)(headerFilter, filterValue);
                                filterRow && (0, _m_utils.addItem)(filterRow, filterValue)
                            });
                            return (0, _m_utils.getNormalizedFilter)(filterValue)
                        },
                        syncFilterRow(column) {
                            this.option("filterValue", this._getSyncFilterRow(this.option("filterValue"), column))
                        },
                        syncHeaderFilter(column) {
                            this.option("filterValue", this._getSyncHeaderFilter(this.option("filterValue"), column))
                        },
                        getCustomFilterOperations() {
                            const filterBuilderCustomOperations = this.option("filterBuilder.customOperations") || [];
                            return [(0, _m_filter_custom_operations.anyOf)(this.component), (0, _m_filter_custom_operations.noneOf)(this.component)].concat(filterBuilderCustomOperations)
                        },
                        publicMethods: () => ["getCustomFilterOperations"]
                    }
                }());
                const DataControllerFilterSyncExtender = {
                    isFilterSyncActive() {
                        const filterSyncEnabledValue = this.option("filterSyncEnabled");
                        return "auto" === filterSyncEnabledValue ? this.option("filterPanel.visible") : filterSyncEnabledValue
                    },
                    skipCalculateColumnFilters() {
                        const filterSyncController = this.getController("filterSync");
                        return ((0, _type.isDefined)(this.option("filterValue")) || filterSyncController._skipSyncColumnOptions) && this.isFilterSyncActive()
                    },
                    _calculateAdditionalFilter() {
                        if (false === this.option("filterPanel.filterEnabled")) {
                            return this.callBase()
                        }
                        const filters = [this.callBase()];
                        const columns = this.getController("columns").getFilteringColumns();
                        let filterValue = this.option("filterValue");
                        if (this.isFilterSyncActive()) {
                            const currentColumnForHeaderFilter = this.getController("headerFilter").getCurrentColumn();
                            const currentColumnForFilterRow = this.getController("applyFilter").getCurrentColumnForFiltering();
                            const currentColumn = currentColumnForHeaderFilter || currentColumnForFilterRow;
                            const needRemoveCurrentColumnFilter = currentColumnForHeaderFilter || (0, _type.isDefined)(null === currentColumnForFilterRow || void 0 === currentColumnForFilterRow ? void 0 : currentColumnForFilterRow.filterValue);
                            if (needRemoveCurrentColumnFilter && filterValue) {
                                filterValue = (0, _m_utils.removeFieldConditionsFromFilter)(filterValue, getColumnIdentifier(currentColumn))
                            }
                        }
                        const customOperations = this.getController("filterSync").getCustomFilterOperations();
                        const calculatedFilterValue = (0, _m_utils.getFilterExpression)(filterValue, columns, customOperations, "filterBuilder");
                        if (calculatedFilterValue) {
                            filters.push(calculatedFilterValue)
                        }
                        return _m_utils2.default.combineFilters(filters)
                    },
                    _parseColumnPropertyName(fullName) {
                        const matched = fullName.match(/.*\.(.*)/);
                        if (matched) {
                            return matched[1]
                        }
                        return null
                    },
                    clearFilter(filterName) {
                        this.component.beginUpdate();
                        if (arguments.length > 0) {
                            if ("filterValue" === filterName) {
                                this.option("filterValue", null)
                            }
                            this.callBase(filterName)
                        } else {
                            this.option("filterValue", null);
                            this.callBase()
                        }
                        this.component.endUpdate()
                    },
                    optionChanged(args) {
                        switch (args.name) {
                            case "filterValue":
                                this._applyFilter();
                                this.isFilterSyncActive() && this.getController("filterSync").syncFilterValue();
                                args.handled = true;
                                break;
                            case "filterSyncEnabled":
                                args.handled = true;
                                break;
                            case "columns":
                                if (this.isFilterSyncActive()) {
                                    const column = this.getController("columns").getColumnByPath(args.fullName);
                                    const filterSyncController = this.getController("filterSync");
                                    if (column && !filterSyncController._skipSyncColumnOptions) {
                                        const propertyName = this._parseColumnPropertyName(args.fullName);
                                        filterSyncController._skipSyncColumnOptions = true;
                                        if ("filterType" === propertyName) {
                                            if ("exclude" === args.value || "exclude" === args.previousValue) {
                                                filterSyncController.syncHeaderFilter(column)
                                            }
                                        } else if ("filterValues" === propertyName) {
                                            filterSyncController.syncHeaderFilter(column)
                                        } else if (["filterValue", "selectedFilterOperation"].includes(propertyName)) {
                                            filterSyncController.syncFilterRow(column, column.filterValue)
                                        }
                                        filterSyncController._skipSyncColumnOptions = false
                                    }
                                }
                                this.callBase(args);
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _applyFilter() {
                        const filterSyncController = this.getController("filterSync");
                        if (filterSyncController._skipSyncColumnOptions) {
                            return (new _deferred.Deferred).resolve()
                        }
                        return this.callBase.apply(this, arguments)
                    }
                };
                const ColumnHeadersViewFilterSyncExtender = {
                    _isHeaderFilterEmpty(column) {
                        if (this.getController("data").isFilterSyncActive()) {
                            return !(0, _m_utils.filterHasField)(this.option("filterValue"), getColumnIdentifier(column))
                        }
                        return this.callBase(column)
                    },
                    _needUpdateFilterIndicators() {
                        return !this.getController("data").isFilterSyncActive()
                    },
                    optionChanged(args) {
                        if ("filterValue" === args.name) {
                            this._updateHeaderFilterIndicators()
                        } else {
                            this.callBase(args)
                        }
                    }
                };
                const filterSyncModule = {
                    defaultOptions: () => ({
                        filterValue: null,
                        filterSyncEnabled: "auto"
                    }),
                    controllers: {
                        filterSync: FilterSyncController
                    },
                    extenders: {
                        controllers: {
                            data: DataControllerFilterSyncExtender
                        },
                        views: {
                            columnHeadersView: ColumnHeadersViewFilterSyncExtender
                        }
                    }
                };
                exports.filterSyncModule = filterSyncModule
            },
        5325:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/focus/m_focus.js ***!
              \*****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.focusModule = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _m_editing_utils = __webpack_require__( /*! ../editing/m_editing_utils */ 89237);
                var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 15943));
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 60082));
                var _m_focus_utils = __webpack_require__( /*! ./m_focus_utils */ 32710);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const FOCUSED_ROW_SELECTOR = ".dx-row.".concat("dx-row-focused");
                const FocusController = _m_modules.default.ViewController.inherit(function() {
                    const members = {
                        init() {
                            this._dataController = this.getController("data");
                            this._keyboardController = this.getController("keyboardNavigation");
                            this.component._optionsByReference.focusedRowKey = true
                        },
                        optionChanged(args) {
                            const {
                                name: name,
                                value: value,
                                previousValue: previousValue
                            } = args;
                            switch (name) {
                                case "focusedRowIndex":
                                    this._focusRowByIndex(value);
                                    this._keyboardController._fireFocusedRowChanged();
                                    args.handled = true;
                                    break;
                                case "focusedRowKey":
                                    if (Array.isArray(value) && JSON.stringify(value) === JSON.stringify(previousValue)) {
                                        return
                                    }
                                    this._focusRowByKey(value);
                                    this._keyboardController._fireFocusedRowChanged();
                                    args.handled = true;
                                    break;
                                case "focusedColumnIndex":
                                case "focusedRowEnabled":
                                case "autoNavigateToFocusedRow":
                                    args.handled = true;
                                    break;
                                default:
                                    this.callBase(args)
                            }
                        },
                        isAutoNavigateToFocusedRow() {
                            return "infinite" !== this.option("scrolling.mode") && this.option("autoNavigateToFocusedRow")
                        },
                        _focusRowByIndex(index, operationTypes) {
                            if (!this.option("focusedRowEnabled")) {
                                return
                            }
                            index = void 0 !== index ? index : this.option("focusedRowIndex");
                            if (index < 0) {
                                if (this.isAutoNavigateToFocusedRow()) {
                                    this._resetFocusedRow()
                                }
                            } else {
                                this._focusRowByIndexCore(index, operationTypes)
                            }
                        },
                        _focusRowByIndexCore(index, operationTypes) {
                            const dataController = this.getController("data");
                            const pageSize = dataController.pageSize();
                            const setKeyByIndex = () => {
                                if (this._isValidFocusedRowIndex(index)) {
                                    let rowIndex = index - dataController.getRowIndexOffset(true);
                                    if (!operationTypes || operationTypes.paging && !operationTypes.filtering) {
                                        const lastItemIndex = dataController._getLastItemIndex();
                                        rowIndex = Math.min(rowIndex, lastItemIndex)
                                    }
                                    const focusedRowKey = dataController.getKeyByRowIndex(rowIndex, true);
                                    if ((0, _type.isDefined)(focusedRowKey) && !this.isRowFocused(focusedRowKey)) {
                                        this.option("focusedRowKey", focusedRowKey)
                                    }
                                }
                            };
                            if (pageSize >= 0) {
                                if (!this._isLocalRowIndex(index)) {
                                    const pageIndex = Math.floor(index / dataController.pageSize());
                                    (0, _deferred.when)(dataController.pageIndex(pageIndex), dataController.waitReady()).done(() => {
                                        setKeyByIndex()
                                    })
                                } else {
                                    setKeyByIndex()
                                }
                            }
                        },
                        _isLocalRowIndex(index) {
                            const dataController = this.getController("data");
                            const isVirtualScrolling = this.getController("keyboardNavigation")._isVirtualScrolling();
                            if (isVirtualScrolling) {
                                const pageIndex = Math.floor(index / dataController.pageSize());
                                const virtualItems = dataController.virtualItemsCount();
                                const virtualItemsBegin = virtualItems ? virtualItems.begin : -1;
                                const visibleRowsCount = dataController.getVisibleRows().length + dataController.getRowIndexOffset();
                                const visiblePagesCount = Math.ceil(visibleRowsCount / dataController.pageSize());
                                return virtualItemsBegin <= index && visiblePagesCount > pageIndex
                            }
                            return true
                        },
                        _setFocusedRowKeyByIndex(index) {
                            const dataController = this.getController("data");
                            if (this._isValidFocusedRowIndex(index)) {
                                const rowIndex = Math.min(index - dataController.getRowIndexOffset(), dataController.items().length - 1);
                                const focusedRowKey = dataController.getKeyByRowIndex(rowIndex);
                                if ((0, _type.isDefined)(focusedRowKey) && !this.isRowFocused(focusedRowKey)) {
                                    this.option("focusedRowKey", focusedRowKey)
                                }
                            }
                        },
                        _focusRowByKey(key) {
                            if (!(0, _type.isDefined)(key)) {
                                this._resetFocusedRow()
                            } else {
                                this._navigateToRow(key, true)
                            }
                        },
                        _resetFocusedRow() {
                            const focusedRowKey = this.option("focusedRowKey");
                            const isFocusedRowKeyDefined = (0, _type.isDefined)(focusedRowKey);
                            if (!isFocusedRowKeyDefined && this.option("focusedRowIndex") < 0) {
                                return
                            }
                            const keyboardController = this.getController("keyboardNavigation");
                            if (isFocusedRowKeyDefined) {
                                this.option("focusedRowKey", null)
                            }
                            keyboardController.setFocusedRowIndex(-1);
                            this.option("focusedRowIndex", -1);
                            this.getController("data").updateItems({
                                changeType: "updateFocusedRow",
                                focusedRowKey: null
                            });
                            keyboardController._fireFocusedRowChanged(void 0, -1)
                        },
                        _isValidFocusedRowIndex(rowIndex) {
                            const dataController = this.getController("data");
                            const row = dataController.getVisibleRows()[rowIndex];
                            return !row || "data" === row.rowType || "group" === row.rowType
                        },
                        publicMethods: () => ["navigateToRow", "isRowFocused"],
                        navigateToRow(key) {
                            if (!this.isAutoNavigateToFocusedRow()) {
                                this.option("focusedRowIndex", -1)
                            }
                            return this._navigateToRow(key)
                        },
                        _navigateToRow(key, needFocusRow) {
                            const that = this;
                            const dataController = that.getController("data");
                            const isAutoNavigate = that.isAutoNavigateToFocusedRow();
                            const d = new _deferred.Deferred;
                            if (void 0 === key || !dataController.dataSource()) {
                                return d.reject().promise()
                            }
                            const rowIndexByKey = that.getFocusedRowIndexByKey(key);
                            if (!isAutoNavigate && needFocusRow || rowIndexByKey >= 0) {
                                that._navigateTo(key, d, needFocusRow)
                            } else {
                                dataController.getPageIndexByKey(key).done(pageIndex => {
                                    if (pageIndex < 0) {
                                        d.resolve(-1);
                                        return
                                    }
                                    if (pageIndex === dataController.pageIndex()) {
                                        dataController.reload().done(() => {
                                            if (that.isRowFocused(key) && dataController.getRowIndexByKey(key) >= 0) {
                                                d.resolve(that.getFocusedRowIndexByKey(key))
                                            } else {
                                                that._navigateTo(key, d, needFocusRow)
                                            }
                                        }).fail(d.reject)
                                    } else {
                                        dataController.pageIndex(pageIndex).done(() => {
                                            that._navigateTo(key, d, needFocusRow)
                                        }).fail(d.reject)
                                    }
                                }).fail(d.reject)
                            }
                            return d.promise()
                        },
                        _navigateTo(key, deferred, needFocusRow) {
                            const visibleRowIndex = this.getController("data").getRowIndexByKey(key);
                            const isVirtualRowRenderingMode = _m_utils.default.isVirtualRowRendering(this);
                            const isAutoNavigate = this.isAutoNavigateToFocusedRow();
                            if (isAutoNavigate && isVirtualRowRenderingMode && visibleRowIndex < 0) {
                                this._navigateToVirtualRow(key, deferred, needFocusRow)
                            } else {
                                this._navigateToVisibleRow(key, deferred, needFocusRow)
                            }
                        },
                        _navigateToVisibleRow(key, deferred, needFocusRow) {
                            if (needFocusRow) {
                                this._triggerUpdateFocusedRow(key, deferred)
                            } else {
                                const focusedRowIndex = this.getFocusedRowIndexByKey(key);
                                this.getView("rowsView").scrollToRowElement(key, deferred).done(() => {
                                    deferred.resolve(focusedRowIndex)
                                })
                            }
                        },
                        _navigateToVirtualRow(key, deferred, needFocusRow) {
                            const dataController = this.getController("data");
                            const rowsScrollController = dataController._rowsScrollController;
                            const rowIndex = _m_utils.default.getIndexByKey(key, dataController.items(true));
                            const scrollable = this.getView("rowsView").getScrollable();
                            if (rowsScrollController && scrollable && rowIndex >= 0) {
                                const focusedRowIndex = rowIndex + dataController.getRowIndexOffset(true);
                                const offset = rowsScrollController.getItemOffset(focusedRowIndex);
                                const triggerUpdateFocusedRow = () => {
                                    if (dataController.totalCount() && !dataController.items().length) {
                                        return
                                    }
                                    this.component.off("contentReady", triggerUpdateFocusedRow);
                                    if (needFocusRow) {
                                        this._triggerUpdateFocusedRow(key, deferred)
                                    } else {
                                        deferred.resolve(focusedRowIndex)
                                    }
                                };
                                this.component.on("contentReady", triggerUpdateFocusedRow);
                                this.getView("rowsView").scrollTopPosition(offset)
                            } else {
                                deferred.resolve(-1)
                            }
                        },
                        _triggerUpdateFocusedRow(key, deferred) {
                            const dataController = this.getController("data");
                            const focusedRowIndex = this.getFocusedRowIndexByKey(key);
                            if (this._isValidFocusedRowIndex(focusedRowIndex)) {
                                let d;
                                if (this.option("focusedRowEnabled")) {
                                    dataController.updateItems({
                                        changeType: "updateFocusedRow",
                                        focusedRowKey: key
                                    })
                                } else {
                                    d = this.getView("rowsView").scrollToRowElement(key)
                                }(0, _deferred.when)(d).done(() => {
                                    this.getController("keyboardNavigation").setFocusedRowIndex(focusedRowIndex);
                                    deferred && deferred.resolve(focusedRowIndex)
                                })
                            } else {
                                deferred && deferred.resolve(-1)
                            }
                        },
                        getFocusedRowIndexByKey(key) {
                            const dataController = this.getController("data");
                            const loadedRowIndex = dataController.getRowIndexByKey(key, true);
                            return loadedRowIndex >= 0 ? loadedRowIndex + dataController.getRowIndexOffset(true) : -1
                        },
                        _focusRowByKeyOrIndex() {
                            const focusedRowKey = this.option("focusedRowKey");
                            let currentFocusedRowIndex = this.option("focusedRowIndex");
                            const keyboardController = this.getController("keyboardNavigation");
                            const dataController = this.getController("data");
                            if ((0, _type.isDefined)(focusedRowKey)) {
                                const visibleRowIndex = dataController.getRowIndexByKey(focusedRowKey);
                                if (visibleRowIndex >= 0) {
                                    if (keyboardController._isVirtualScrolling()) {
                                        currentFocusedRowIndex = visibleRowIndex + dataController.getRowIndexOffset()
                                    }
                                    keyboardController.setFocusedRowIndex(currentFocusedRowIndex);
                                    this._triggerUpdateFocusedRow(focusedRowKey)
                                } else {
                                    this._navigateToRow(focusedRowKey, true).done(focusedRowIndex => {
                                        if (currentFocusedRowIndex >= 0 && focusedRowIndex < 0) {
                                            this._focusRowByIndex()
                                        } else if (currentFocusedRowIndex < 0 && focusedRowIndex >= 0) {
                                            keyboardController.setFocusedRowIndex(focusedRowIndex)
                                        }
                                    })
                                }
                            } else if (currentFocusedRowIndex >= 0) {
                                this.getController("focus")._focusRowByIndex(currentFocusedRowIndex)
                            }
                        },
                        isRowFocused(key) {
                            const focusedRowKey = this.option("focusedRowKey");
                            if ((0, _type.isDefined)(focusedRowKey)) {
                                return (0, _common.equalByValue)(key, this.option("focusedRowKey"))
                            }
                            return
                        },
                        updateFocusedRow(_ref) {
                            let {
                                focusedRowKey: focusedRowKey
                            } = _ref;
                            const that = this;
                            const focusedRowIndex = that._dataController.getRowIndexByKey(focusedRowKey);
                            const rowsView = that.getView("rowsView");
                            let $tableElement;
                            let $mainRow;
                            (0, _iterator.each)(rowsView.getTableElements(), (index, element) => {
                                const isMainTable = 0 === index;
                                $tableElement = (0, _renderer.default)(element);
                                that._clearPreviousFocusedRow($tableElement, focusedRowIndex);
                                const $row = that._prepareFocusedRow({
                                    changedItem: that._dataController.getVisibleRows()[focusedRowIndex],
                                    $tableElement: $tableElement,
                                    focusedRowIndex: focusedRowIndex
                                });
                                if (isMainTable) {
                                    $mainRow = $row
                                }
                            });
                            $mainRow && rowsView.scrollToElementVertically($mainRow)
                        },
                        _clearPreviousFocusedRow($tableElement, focusedRowIndex) {
                            const $prevRowFocusedElement = $tableElement.find(FOCUSED_ROW_SELECTOR).filter((_, focusedRow) => {
                                const $focusedRowTable = (0, _renderer.default)(focusedRow).closest(".".concat(this.addWidgetPrefix("table")));
                                return $tableElement.is($focusedRowTable)
                            });
                            $prevRowFocusedElement.removeClass("dx-row-focused").removeClass("dx-cell-focus-disabled").removeAttr("tabindex");
                            $prevRowFocusedElement.children("td").removeAttr("tabindex");
                            if (0 !== focusedRowIndex) {
                                const $firstRow = (0, _renderer.default)(this.getView("rowsView").getRowElement(0));
                                $firstRow.removeClass("dx-cell-focus-disabled").removeAttr("tabIndex")
                            }
                        },
                        _prepareFocusedRow(options) {
                            let $row;
                            const {
                                changedItem: changedItem
                            } = options;
                            if (changedItem && ("data" === changedItem.rowType || "group" === changedItem.rowType)) {
                                const {
                                    focusedRowIndex: focusedRowIndex
                                } = options;
                                const {
                                    $tableElement: $tableElement
                                } = options;
                                const tabIndex = this.option("tabindex") || 0;
                                const rowsView = this.getView("rowsView");
                                $row = (0, _renderer.default)(rowsView._getRowElements($tableElement).eq(focusedRowIndex));
                                $row.addClass("dx-row-focused").attr("tabindex", tabIndex)
                            }
                            return $row
                        }
                    };
                    return members
                }());
                const focusModule = {
                    defaultOptions: () => ({
                        focusedRowEnabled: false,
                        autoNavigateToFocusedRow: true,
                        focusedRowKey: null,
                        focusedRowIndex: -1,
                        focusedColumnIndex: -1
                    }),
                    controllers: {
                        focus: FocusController
                    },
                    extenders: {
                        controllers: {
                            keyboardNavigation: {
                                init() {
                                    const rowIndex = this.option("focusedRowIndex");
                                    const columnIndex = this.option("focusedColumnIndex");
                                    this.createAction("onFocusedRowChanging", {
                                        excludeValidators: ["disabled", "readOnly"]
                                    });
                                    this.createAction("onFocusedRowChanged", {
                                        excludeValidators: ["disabled", "readOnly"]
                                    });
                                    this.createAction("onFocusedCellChanging", {
                                        excludeValidators: ["disabled", "readOnly"]
                                    });
                                    this.createAction("onFocusedCellChanged", {
                                        excludeValidators: ["disabled", "readOnly"]
                                    });
                                    this.callBase();
                                    this.setRowFocusType();
                                    this._focusedCellPosition = {};
                                    if ((0, _type.isDefined)(rowIndex) && rowIndex >= 0) {
                                        this._focusedCellPosition.rowIndex = rowIndex
                                    }
                                    if ((0, _type.isDefined)(columnIndex) && columnIndex >= 0) {
                                        this._focusedCellPosition.columnIndex = columnIndex
                                    }
                                },
                                setFocusedRowIndex(rowIndex) {
                                    this.callBase(rowIndex);
                                    this.option("focusedRowIndex", rowIndex)
                                },
                                setFocusedColumnIndex(columnIndex) {
                                    this.callBase(columnIndex);
                                    this.option("focusedColumnIndex", columnIndex)
                                },
                                _escapeKeyHandler(eventArgs, isEditing) {
                                    if (isEditing || !this.option("focusedRowEnabled")) {
                                        return this.callBase(eventArgs, isEditing)
                                    }
                                    if (this.isCellFocusType()) {
                                        this.setRowFocusType();
                                        this._focus(this._getCellElementFromTarget(eventArgs.originalEvent.target), true);
                                        return true
                                    }
                                    return false
                                },
                                _updateFocusedCellPosition($cell, direction) {
                                    const position = this.callBase($cell, direction);
                                    if (position && position.columnIndex >= 0) {
                                        this._fireFocusedCellChanged($cell)
                                    }
                                }
                            },
                            editorFactory: {
                                renderFocusOverlay($element, isHideBorder) {
                                    const keyboardController = this.getController("keyboardNavigation");
                                    const focusedRowEnabled = this.option("focusedRowEnabled");
                                    const editingController = this.getController("editing");
                                    let $cell;
                                    if (!focusedRowEnabled || !(null === keyboardController || void 0 === keyboardController ? void 0 : keyboardController.isRowFocusType()) || editingController.isEditing()) {
                                        this.callBase($element, isHideBorder)
                                    } else if (focusedRowEnabled) {
                                        const isRowElement = "row" === keyboardController._getElementType($element);
                                        if (isRowElement && !$element.hasClass("dx-row-focused")) {
                                            $cell = keyboardController.getFirstValidCellInRow($element);
                                            keyboardController.focus($cell)
                                        }
                                    }
                                }
                            },
                            columns: {
                                getSortDataSourceParameters(_, sortByKey) {
                                    let result = this.callBase.apply(this, arguments);
                                    const dataController = this.getController("data");
                                    const dataSource = dataController._dataSource;
                                    const store = dataController.store();
                                    let key = store && store.key();
                                    const remoteOperations = dataSource && dataSource.remoteOperations() || {};
                                    const isLocalOperations = Object.keys(remoteOperations).every(operationName => !remoteOperations[operationName]);
                                    if (key && (this.option("focusedRowEnabled") && false !== this.getController("focus").isAutoNavigateToFocusedRow() || sortByKey)) {
                                        key = Array.isArray(key) ? key : [key];
                                        const notSortedKeys = key.filter(key => !this.columnOption(key, "sortOrder"));
                                        if (notSortedKeys.length) {
                                            result = result || [];
                                            if (isLocalOperations) {
                                                result.push({
                                                    selector: dataSource.getDataIndexGetter(),
                                                    desc: false
                                                })
                                            } else {
                                                notSortedKeys.forEach(notSortedKey => result.push({
                                                    selector: notSortedKey,
                                                    desc: false
                                                }))
                                            }
                                        }
                                    }
                                    return result
                                }
                            },
                            data: {
                                _applyChange(change) {
                                    if (change && "updateFocusedRow" === change.changeType) {
                                        return
                                    }
                                    return this.callBase.apply(this, arguments)
                                },
                                _fireChanged(e) {
                                    this.callBase(e);
                                    if (this.option("focusedRowEnabled") && this._dataSource) {
                                        const isPartialUpdate = "update" === e.changeType && e.repaintChangesOnly;
                                        const isPartialUpdateWithDeleting = isPartialUpdate && e.changeTypes && e.changeTypes.indexOf("remove") >= 0;
                                        if ("refresh" === e.changeType && e.items.length || isPartialUpdateWithDeleting) {
                                            this._updatePageIndexes();
                                            this._updateFocusedRow(e)
                                        } else if ("append" === e.changeType || "prepend" === e.changeType) {
                                            this._updatePageIndexes()
                                        } else if ("update" === e.changeType && e.repaintChangesOnly) {
                                            this._updateFocusedRow(e)
                                        }
                                    }
                                },
                                _updatePageIndexes() {
                                    const prevRenderingPageIndex = this._lastRenderingPageIndex || 0;
                                    const renderingPageIndex = this._rowsScrollController ? this._rowsScrollController.pageIndex() : 0;
                                    this._lastRenderingPageIndex = renderingPageIndex;
                                    this._isPagingByRendering = renderingPageIndex !== prevRenderingPageIndex
                                },
                                isPagingByRendering() {
                                    return this._isPagingByRendering
                                },
                                _updateFocusedRow(e) {
                                    const operationTypes = e.operationTypes || {};
                                    const focusController = this.getController("focus");
                                    const {
                                        reload: reload,
                                        fullReload: fullReload,
                                        pageIndex: pageIndex,
                                        paging: paging
                                    } = operationTypes;
                                    const keyboardController = this.getController("keyboardNavigation");
                                    const isVirtualScrolling = keyboardController._isVirtualScrolling();
                                    const pagingWithoutVirtualScrolling = paging && !isVirtualScrolling;
                                    const focusedRowKey = this.option("focusedRowKey");
                                    const isAutoNavigate = focusController.isAutoNavigateToFocusedRow();
                                    const isReload = reload && false === pageIndex;
                                    if (isReload && !fullReload && (0, _type.isDefined)(focusedRowKey)) {
                                        focusController._navigateToRow(focusedRowKey, true).done(focusedRowIndex => {
                                            if (focusedRowIndex < 0) {
                                                focusController._focusRowByIndex(void 0, operationTypes)
                                            }
                                        })
                                    } else if (pagingWithoutVirtualScrolling && isAutoNavigate) {
                                        const rowIndexByKey = this.getRowIndexByKey(focusedRowKey);
                                        const focusedRowIndex = this.option("focusedRowIndex");
                                        const isValidRowIndexByKey = rowIndexByKey >= 0;
                                        const isValidFocusedRowIndex = focusedRowIndex >= 0;
                                        const isSameRowIndex = focusedRowIndex === rowIndexByKey;
                                        if (isValidFocusedRowIndex && (isSameRowIndex || !isValidRowIndexByKey)) {
                                            focusController._focusRowByIndex(focusedRowIndex, operationTypes)
                                        }
                                    } else if (pagingWithoutVirtualScrolling && !isAutoNavigate && this.getRowIndexByKey(focusedRowKey) < 0) {
                                        this.option("focusedRowIndex", -1)
                                    } else if (operationTypes.fullReload) {
                                        focusController._focusRowByKeyOrIndex()
                                    }
                                },
                                getPageIndexByKey(key) {
                                    const that = this;
                                    const d = new _deferred.Deferred;
                                    that.getGlobalRowIndexByKey(key).done(globalIndex => {
                                        d.resolve(globalIndex >= 0 ? Math.floor(globalIndex / that.pageSize()) : -1)
                                    }).fail(d.reject);
                                    return d.promise()
                                },
                                getGlobalRowIndexByKey(key) {
                                    if (this._dataSource.group()) {
                                        return this._calculateGlobalRowIndexByGroupedData(key)
                                    }
                                    return this._calculateGlobalRowIndexByFlatData(key)
                                },
                                _calculateGlobalRowIndexByFlatData(key, groupFilter, useGroup) {
                                    const that = this;
                                    const deferred = new _deferred.Deferred;
                                    const dataSource = that._dataSource;
                                    if (Array.isArray(key) || (0, _m_editing_utils.isNewRowTempKey)(key)) {
                                        return deferred.resolve(-1).promise()
                                    }
                                    let filter = that._generateFilterByKey(key);
                                    dataSource.load({
                                        filter: that._concatWithCombinedFilter(filter),
                                        skip: 0,
                                        take: 1
                                    }).done(data => {
                                        if (data.length > 0) {
                                            filter = that._generateOperationFilterByKey(key, data[0], useGroup);
                                            dataSource.load({
                                                filter: that._concatWithCombinedFilter(filter, groupFilter),
                                                skip: 0,
                                                take: 1,
                                                requireTotalCount: true
                                            }).done((_, extra) => {
                                                deferred.resolve(extra.totalCount)
                                            })
                                        } else {
                                            deferred.resolve(-1)
                                        }
                                    });
                                    return deferred.promise()
                                },
                                _concatWithCombinedFilter(filter, groupFilter) {
                                    const combinedFilter = this.getCombinedFilter();
                                    return _m_utils.default.combineFilters([filter, combinedFilter, groupFilter])
                                },
                                _generateBooleanFilter(selector, value, sortInfo) {
                                    const {
                                        desc: desc
                                    } = sortInfo;
                                    switch (true) {
                                        case false === value && desc:
                                            return [selector, "=", true];
                                        case false === value && !desc:
                                            return [selector, "=", null];
                                        case true === value && !desc:
                                        case !(0, _type.isBoolean)(value) && desc:
                                            return [selector, "<>", value];
                                        default:
                                            return
                                    }
                                },
                                _generateOperationFilterByKey(key, rowData, useGroup) {
                                    const that = this;
                                    const dateSerializationFormat = that.option("dateSerializationFormat");
                                    const isRemoteFiltering = that._dataSource.remoteOperations().filtering;
                                    const isRemoteSorting = that._dataSource.remoteOperations().sorting;
                                    let filter = that._generateFilterByKey(key, "<");
                                    let sort = that._columnsController.getSortDataSourceParameters(!isRemoteFiltering, true);
                                    if (useGroup) {
                                        const group = that._columnsController.getGroupDataSourceParameters(!isRemoteFiltering);
                                        if (group) {
                                            sort = sort ? group.concat(sort) : group
                                        }
                                    }
                                    if (sort) {
                                        sort.slice().reverse().forEach(sortInfo => {
                                            const {
                                                selector: selector,
                                                desc: desc,
                                                compare: compare
                                            } = sortInfo;
                                            const {
                                                getter: getter,
                                                rawValue: rawValue,
                                                safeValue: safeValue
                                            } = _m_focus_utils.UiGridCoreFocusUtils.getSortFilterValue(sortInfo, rowData, {
                                                isRemoteFiltering: isRemoteFiltering,
                                                dateSerializationFormat: dateSerializationFormat,
                                                getSelector: selector => that._columnsController.columnOption(selector, "selector")
                                            });
                                            filter = [
                                                [selector, "=", safeValue], "and", filter
                                            ];
                                            if (null === rawValue || (0, _type.isBoolean)(rawValue)) {
                                                const booleanFilter = that._generateBooleanFilter(selector, safeValue, desc);
                                                if (booleanFilter) {
                                                    filter = [booleanFilter, "or", filter]
                                                }
                                            } else {
                                                const filterOperation = desc ? ">" : "<";
                                                let sortFilter;
                                                if (compare && !isRemoteSorting) {
                                                    sortFilter = data => {
                                                        if ("<" === filterOperation) {
                                                            return compare(rawValue, getter(data)) >= 1
                                                        }
                                                        return compare(rawValue, getter(data)) <= -1
                                                    }
                                                } else {
                                                    sortFilter = [selector, filterOperation, safeValue];
                                                    if (!desc) {
                                                        sortFilter = [sortFilter, "or", [selector, "=", null]]
                                                    }
                                                }
                                                filter = [sortFilter, "or", filter]
                                            }
                                        })
                                    }
                                    return filter
                                },
                                _generateFilterByKey(key, operation) {
                                    const dataSourceKey = this._dataSource.key();
                                    let filter = [];
                                    if (!operation) {
                                        operation = "="
                                    }
                                    if (Array.isArray(dataSourceKey)) {
                                        for (let i = 0; i < dataSourceKey.length; ++i) {
                                            const keyPart = key[dataSourceKey[i]];
                                            if (keyPart) {
                                                if (filter.length > 0) {
                                                    filter.push("and")
                                                }
                                                filter.push([dataSourceKey[i], operation, keyPart])
                                            }
                                        }
                                    } else {
                                        filter = [dataSourceKey, operation, key]
                                    }
                                    return filter
                                },
                                _getLastItemIndex() {
                                    return this.items(true).length - 1
                                }
                            },
                            editing: {
                                _deleteRowCore(rowIndex) {
                                    const deferred = this.callBase.apply(this, arguments);
                                    const dataController = this.getController("data");
                                    const rowKey = dataController.getKeyByRowIndex(rowIndex);
                                    deferred.done(() => {
                                        const rowIndex = dataController.getRowIndexByKey(rowKey);
                                        const visibleRows = dataController.getVisibleRows();
                                        if (-1 === rowIndex && !visibleRows.length) {
                                            this.getController("focus")._resetFocusedRow()
                                        }
                                    })
                                }
                            }
                        },
                        views: {
                            rowsView: {
                                _createRow(row) {
                                    const $row = this.callBase.apply(this, arguments);
                                    if (this.option("focusedRowEnabled") && row) {
                                        if (this.getController("focus").isRowFocused(row.key)) {
                                            $row.addClass("dx-row-focused")
                                        }
                                    }
                                    return $row
                                },
                                _checkRowKeys(options) {
                                    this.callBase.apply(this, arguments);
                                    if (this.option("focusedRowEnabled") && this.option("dataSource")) {
                                        const store = this._dataController.store();
                                        if (store && !store.key()) {
                                            this._dataController.fireError("E1042", "Row focusing")
                                        }
                                    }
                                },
                                _update(change) {
                                    if ("updateFocusedRow" === change.changeType) {
                                        if (this.option("focusedRowEnabled")) {
                                            this.getController("focus").updateFocusedRow(change)
                                        }
                                    } else {
                                        this.callBase(change)
                                    }
                                },
                                updateFocusElementTabIndex($cellElements, preventScroll) {
                                    if (this.option("focusedRowEnabled")) {
                                        this._setFocusedRowElementTabIndex(preventScroll)
                                    } else {
                                        this.callBase($cellElements)
                                    }
                                },
                                _setFocusedRowElementTabIndex(preventScroll) {
                                    const focusedRowKey = this.option("focusedRowKey");
                                    const tabIndex = this.option("tabIndex") || 0;
                                    const dataController = this._dataController;
                                    const columnsController = this._columnsController;
                                    let rowIndex = dataController.getRowIndexByKey(focusedRowKey);
                                    let columnIndex = this.option("focusedColumnIndex");
                                    const $row = this._findRowElementForTabIndex();
                                    if (!(0, _type.isDefined)(this._scrollToFocusOnResize)) {
                                        this._scrollToFocusOnResize = () => {
                                            this.scrollToElementVertically(this._findRowElementForTabIndex());
                                            this.resizeCompleted.remove(this._scrollToFocusOnResize)
                                        }
                                    }
                                    $row.attr("tabIndex", tabIndex);
                                    if (rowIndex >= 0 && !preventScroll) {
                                        if (columnIndex < 0) {
                                            columnIndex = 0
                                        }
                                        rowIndex += dataController.getRowIndexOffset();
                                        columnIndex += columnsController.getColumnIndexOffset();
                                        this.getController("keyboardNavigation").setFocusedCellPosition(rowIndex, columnIndex);
                                        if (this.getController("focus").isAutoNavigateToFocusedRow()) {
                                            const dataSource = dataController.dataSource();
                                            const operationTypes = dataSource && dataSource.operationTypes();
                                            if (operationTypes && !operationTypes.paging && !dataController.isPagingByRendering()) {
                                                this.resizeCompleted.remove(this._scrollToFocusOnResize);
                                                this.resizeCompleted.add(this._scrollToFocusOnResize)
                                            }
                                        }
                                    }
                                },
                                _findRowElementForTabIndex() {
                                    const focusedRowKey = this.option("focusedRowKey");
                                    const rowIndex = this._dataController.getRowIndexByKey(focusedRowKey);
                                    return (0, _renderer.default)(this.getRowElement(rowIndex >= 0 ? rowIndex : 0))
                                },
                                scrollToRowElement(key) {
                                    const rowIndex = this.getController("data").getRowIndexByKey(key);
                                    const $row = (0, _renderer.default)(this.getRow(rowIndex));
                                    return this.scrollToElementVertically($row)
                                },
                                scrollToElementVertically($row) {
                                    const scrollable = this.getScrollable();
                                    if (scrollable && $row.length) {
                                        const position = scrollable.getScrollElementPosition($row, "vertical");
                                        return this.scrollTopPosition(position)
                                    }
                                    return (new _deferred.Deferred).resolve()
                                },
                                scrollTopPosition(scrollTop) {
                                    const d = new _deferred.Deferred;
                                    const scrollable = this.getScrollable();
                                    if (scrollable) {
                                        const currentScrollTop = scrollable.scrollTop();
                                        const scrollHandler = () => {
                                            scrollable.off("scroll", scrollHandler);
                                            d.resolve()
                                        };
                                        if (scrollTop !== currentScrollTop) {
                                            scrollable.on("scroll", scrollHandler);
                                            this._dataController.resetFilterApplying();
                                            scrollable.scrollTo({
                                                top: scrollTop
                                            });
                                            return d.promise()
                                        }
                                    }
                                    return d.resolve()
                                }
                            }
                        }
                    }
                };
                exports.focusModule = focusModule
            },
        32710:
            /*!***********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/focus/m_focus_utils.js ***!
              \***********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.UiGridCoreFocusUtils = void 0;
                var _date_serialization = (obj = __webpack_require__( /*! ../../../../core/utils/date_serialization */ 69434), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                const UiGridCoreFocusUtils = {
                    getSortFilterValue: (sortInfo, rowData, _ref) => {
                        let {
                            isRemoteFiltering: isRemoteFiltering,
                            dateSerializationFormat: dateSerializationFormat,
                            getSelector: getSelector
                        } = _ref;
                        const {
                            selector: selector
                        } = sortInfo;
                        const getter = (0, _type.isFunction)(selector) ? selector : getSelector(selector);
                        const rawValue = getter ? getter(rowData) : rowData[selector];
                        const safeValue = isRemoteFiltering && (0, _type.isDate)(rawValue) ? _date_serialization.default.serializeDate(rawValue, dateSerializationFormat) : rawValue;
                        return {
                            getter: getter,
                            rawValue: rawValue,
                            safeValue: safeValue
                        }
                    }
                };
                exports.UiGridCoreFocusUtils = UiGridCoreFocusUtils
            },
        68796:
            /*!*********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/header_filter/m_header_filter.js ***!
              \*********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.headerFilterModule = void 0;
                exports.invertFilterExpression = function(filter) {
                    return ["!", filter]
                };
                var _data = __webpack_require__( /*! ../../../../core/utils/data */ 47617);
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _position = __webpack_require__( /*! ../../../../core/utils/position */ 37518);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _utils = __webpack_require__( /*! ../../../../data/data_source/utils */ 9234);
                var _query = _interopRequireDefault(__webpack_require__( /*! ../../../../data/query */ 96687));
                var _store_helper = _interopRequireDefault(__webpack_require__( /*! ../../../../data/store_helper */ 99236));
                var _click = __webpack_require__( /*! ../../../../events/click */ 95429);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../events/core/events_engine */ 55994));
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/date */ 91500));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/message */ 28109));
                var _accessibility = __webpack_require__( /*! ../../../../ui/shared/accessibility */ 56756);
                var _filtering = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/shared/filtering */ 18740));
                var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 15943));
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 60082));
                var _m_header_filter_core = __webpack_require__( /*! ./m_header_filter_core */ 37565);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const DATE_INTERVAL_FORMATS = {
                    month: value => _date.default.getMonthNames()[value - 1],
                    quarter: value => _date.default.format(new Date(2e3, 3 * value - 1), "quarter")
                };

                function convertDataFromUTCToLocal(data, column) {
                    const dates = function ungroupUTCDates(items, dateParts, dates) {
                        dateParts = dateParts || [];
                        dates = dates || [];
                        items.forEach(item => {
                            if ((0, _type.isDefined)(item.key)) {
                                const isMonthPart = 1 === dateParts.length;
                                dateParts.push(isMonthPart ? item.key - 1 : item.key);
                                if (item.items) {
                                    ungroupUTCDates(item.items, dateParts, dates)
                                } else {
                                    const date = new Date(Date.UTC.apply(Date, dateParts));
                                    dates.push(date)
                                }
                                dateParts.pop()
                            } else {
                                dates.push(null)
                            }
                        });
                        return dates
                    }(data);
                    const query = (0, _query.default)(dates);
                    const group = _m_utils.default.getHeaderFilterGroupParameters(_extends(_extends({}, column), {
                        calculateCellValue: date => date
                    }));
                    return _store_helper.default.queryByOptions(query, {
                        group: group
                    }).toArray()
                }
                const HeaderFilterController = _m_modules.default.ViewController.inherit({
                    init() {
                        this._columnsController = this.getController("columns");
                        this._dataController = this.getController("data");
                        this._headerFilterView = this.getView("headerFilterView")
                    },
                    _updateSelectedState(items, column) {
                        let i = items.length;
                        const isExclude = "exclude" === column.filterType;
                        while (i--) {
                            const item = items[i];
                            if ("items" in items[i]) {
                                this._updateSelectedState(items[i].items, column)
                            }(0, _m_header_filter_core.updateHeaderFilterItemSelectionState)(item, _m_utils.default.getIndexByKey(items[i].value, column.filterValues, null) > -1, isExclude)
                        }
                    },
                    _normalizeGroupItem(item, currentLevel, options) {
                        let value;
                        let displayValue;
                        const {
                            path: path
                        } = options;
                        const {
                            valueSelector: valueSelector
                        } = options;
                        const {
                            displaySelector: displaySelector
                        } = options;
                        const {
                            column: column
                        } = options;
                        if (valueSelector && displaySelector) {
                            value = valueSelector(item);
                            displayValue = displaySelector(item)
                        } else {
                            value = item.key;
                            displayValue = value
                        }
                        if (!(0, _type.isObject)(item)) {
                            item = {}
                        } else {
                            item = (0, _extend.extend)({}, item)
                        }
                        path.push(value);
                        if (1 === path.length) {
                            item.value = path[0]
                        } else {
                            item.value = path.join("/")
                        }
                        item.text = this.getHeaderItemText(displayValue, column, currentLevel, options.headerFilterOptions);
                        return item
                    },
                    getHeaderItemText(displayValue, column, currentLevel, headerFilterOptions) {
                        let text = _m_utils.default.formatValue(displayValue, function(value, column, currentLevel) {
                            const groupInterval = _filtering.default.getGroupInterval(column);
                            const result = _m_utils.default.getFormatOptionsByColumn(column, "headerFilter");
                            if (groupInterval) {
                                result.groupInterval = groupInterval[currentLevel];
                                if (_m_utils.default.isDateType(column.dataType)) {
                                    result.format = DATE_INTERVAL_FORMATS[groupInterval[currentLevel]]
                                } else if ("number" === column.dataType) {
                                    result.getDisplayFormat = function() {
                                        const formatOptions = {
                                            format: column.format,
                                            target: "headerFilter"
                                        };
                                        const firstValueText = _m_utils.default.formatValue(value, formatOptions);
                                        const secondValue = value + groupInterval[currentLevel];
                                        const secondValueText = _m_utils.default.formatValue(secondValue, formatOptions);
                                        return firstValueText && secondValueText ? "".concat(firstValueText, " - ").concat(secondValueText) : ""
                                    }
                                }
                            }
                            return result
                        }(displayValue, column, currentLevel));
                        if (!text) {
                            text = headerFilterOptions.texts.emptyValue
                        }
                        return text
                    },
                    _processGroupItems(groupItems, currentLevel, path, options) {
                        const that = this;
                        let displaySelector;
                        let valueSelector;
                        const {
                            column: column
                        } = options;
                        const {
                            lookup: lookup
                        } = column;
                        const {
                            level: level
                        } = options;
                        path = path || [];
                        currentLevel = currentLevel || 0;
                        if (lookup) {
                            displaySelector = (0, _data.compileGetter)(lookup.displayExpr);
                            valueSelector = (0, _data.compileGetter)(lookup.valueExpr)
                        }
                        for (let i = 0; i < groupItems.length; i++) {
                            groupItems[i] = that._normalizeGroupItem(groupItems[i], currentLevel, {
                                column: options.column,
                                headerFilterOptions: options.headerFilterOptions,
                                displaySelector: displaySelector,
                                valueSelector: valueSelector,
                                path: path
                            });
                            if ("items" in groupItems[i]) {
                                if (currentLevel === level || !(0, _type.isDefined)(groupItems[i].value)) {
                                    delete groupItems[i].items
                                } else {
                                    that._processGroupItems(groupItems[i].items, currentLevel + 1, path, options)
                                }
                            }
                            path.pop()
                        }
                    },
                    getDataSource(column) {
                        var _a;
                        const dataSource = this._dataController.dataSource();
                        const remoteGrouping = null === dataSource || void 0 === dataSource ? void 0 : dataSource.remoteOperations().grouping;
                        const group = _m_utils.default.getHeaderFilterGroupParameters(column, remoteGrouping);
                        const headerFilterDataSource = null === (_a = column.headerFilter) || void 0 === _a ? void 0 : _a.dataSource;
                        const headerFilterOptions = this.option("headerFilter");
                        let isLookup = false;
                        const options = {
                            component: this.component
                        };
                        if (!dataSource) {
                            return
                        }
                        if ((0, _type.isDefined)(headerFilterDataSource) && !(0, _type.isFunction)(headerFilterDataSource)) {
                            options.dataSource = (0, _utils.normalizeDataSourceOptions)(headerFilterDataSource)
                        } else if (column.lookup) {
                            isLookup = true;
                            if (this.option("syncLookupFilterValues")) {
                                this._currentColumn = column;
                                const filter = this._dataController.getCombinedFilter();
                                this._currentColumn = null;
                                options.dataSource = _m_utils.default.getWrappedLookupDataSource(column, dataSource, filter)
                            } else {
                                options.dataSource = _m_utils.default.normalizeLookupDataSource(column.lookup)
                            }
                        } else {
                            const cutoffLevel = Array.isArray(group) ? group.length - 1 : 0;
                            this._currentColumn = column;
                            const filter = this._dataController.getCombinedFilter();
                            this._currentColumn = null;
                            options.dataSource = {
                                filter: filter,
                                group: group,
                                useDefaultSearch: true,
                                load: options => {
                                    const d = new _deferred.Deferred;
                                    options.dataField = column.dataField || column.name;
                                    dataSource.load(options).done(data => {
                                        const convertUTCDates = remoteGrouping && (format = column.serializationFormat, "Z" === (null === format || void 0 === format ? void 0 : format.slice(-1)) || "'Z'" === (null === format || void 0 === format ? void 0 : format.slice(-3))) && cutoffLevel > 3;
                                        var format;
                                        if (convertUTCDates) {
                                            data = convertDataFromUTCToLocal(data, column)
                                        }
                                        that._processGroupItems(data, null, null, {
                                            level: cutoffLevel,
                                            column: column,
                                            headerFilterOptions: headerFilterOptions
                                        });
                                        d.resolve(data)
                                    }).fail(d.reject);
                                    return d
                                }
                            }
                        }
                        if ((0, _type.isFunction)(headerFilterDataSource)) {
                            headerFilterDataSource.call(column, options)
                        }
                        const origPostProcess = options.dataSource.postProcess;
                        const that = this;
                        options.dataSource.postProcess = function(data) {
                            let items = data;
                            if (isLookup) {
                                items = items.filter(item => null !== item[column.lookup.valueExpr]);
                                if (0 === this.pageIndex() && !this.searchValue()) {
                                    items = items.slice(0);
                                    items.unshift(null)
                                }
                                that._processGroupItems(items, null, null, {
                                    level: 0,
                                    column: column,
                                    headerFilterOptions: headerFilterOptions
                                })
                            }
                            items = origPostProcess && origPostProcess.call(this, items) || items;
                            that._updateSelectedState(items, column);
                            return items
                        };
                        return options.dataSource
                    },
                    getCurrentColumn() {
                        return this._currentColumn
                    },
                    showHeaderFilterMenu(columnIndex, isGroupPanel) {
                        const columnsController = this._columnsController;
                        const column = (0, _extend.extend)(true, {}, this._columnsController.getColumns()[columnIndex]);
                        if (column) {
                            const visibleIndex = columnsController.getVisibleIndex(columnIndex);
                            const view = isGroupPanel ? this.getView("headerPanel") : this.getView("columnHeadersView");
                            const $columnElement = view.getColumnElements().eq(isGroupPanel ? column.groupIndex : visibleIndex);
                            this.showHeaderFilterMenuBase({
                                columnElement: $columnElement,
                                column: column,
                                applyFilter: true,
                                apply() {
                                    columnsController.columnOption(columnIndex, {
                                        filterValues: this.filterValues,
                                        filterType: this.filterType
                                    })
                                }
                            })
                        }
                    },
                    showHeaderFilterMenuBase(options) {
                        const that = this;
                        const {
                            column: column
                        } = options;
                        if (column) {
                            const groupInterval = _filtering.default.getGroupInterval(column);
                            const dataSource = that._dataController.dataSource();
                            const remoteFiltering = dataSource && dataSource.remoteOperations().filtering;
                            const previousOnHidden = options.onHidden;
                            (0, _extend.extend)(options, column, {
                                type: groupInterval && groupInterval.length > 1 ? "tree" : "list",
                                remoteFiltering: remoteFiltering,
                                onShowing(e) {
                                    const dxResizableInstance = e.component.$overlayContent().dxResizable("instance");
                                    dxResizableInstance && dxResizableInstance.option("onResizeEnd", e => {
                                        const columnsController = that.getController("columns");
                                        let headerFilterByColumn = columnsController.columnOption(options.dataField, "headerFilter");
                                        headerFilterByColumn = headerFilterByColumn || {};
                                        headerFilterByColumn.width = e.width;
                                        headerFilterByColumn.height = e.height;
                                        columnsController.columnOption(options.dataField, "headerFilter", headerFilterByColumn, true)
                                    })
                                },
                                onHidden: () => {
                                    null === previousOnHidden || void 0 === previousOnHidden ? void 0 : previousOnHidden();
                                    (0, _accessibility.restoreFocus)(this)
                                }
                            });
                            options.dataSource = that.getDataSource(options);
                            if (options.isFilterBuilder) {
                                options.dataSource.filter = null;
                                options.alignment = "right"
                            }
                            that._headerFilterView.showHeaderFilterMenu(options.columnElement, options)
                        }
                    },
                    hideHeaderFilterMenu() {
                        this._headerFilterView.hideHeaderFilterMenu()
                    }
                });
                const ColumnHeadersViewHeaderFilterExtender = (0, _extend.extend)({}, _m_header_filter_core.headerFilterMixin, {
                    _renderCellContent($cell, options) {
                        const that = this;
                        let $headerFilterIndicator;
                        const {
                            column: column
                        } = options;
                        if (!column.command && (0, _m_header_filter_core.allowHeaderFiltering)(column) && that.option("headerFilter.visible") && "header" === options.rowType) {
                            $headerFilterIndicator = that._applyColumnState({
                                name: "headerFilter",
                                rootElement: $cell,
                                column: column,
                                showColumnLines: that.option("showColumnLines")
                            });
                            $headerFilterIndicator && that._subscribeToIndicatorEvent($headerFilterIndicator, column, "headerFilter")
                        }
                        this.callBase.apply(this, arguments)
                    },
                    _subscribeToIndicatorEvent($indicator, column, indicatorName) {
                        if ("headerFilter" === indicatorName) {
                            _events_engine.default.on($indicator, _click.name, this.createAction(e => {
                                e.event.stopPropagation();
                                (0, _accessibility.saveFocusedElementInfo)($indicator, this);
                                this.getController("headerFilter").showHeaderFilterMenu(column.index, false)
                            }))
                        }
                    },
                    _updateIndicator($cell, column, indicatorName) {
                        const $indicator = this.callBase($cell, column, indicatorName);
                        $indicator && this._subscribeToIndicatorEvent($indicator, column, indicatorName)
                    },
                    _updateHeaderFilterIndicators() {
                        if (this.option("headerFilter.visible")) {
                            this._updateIndicators("headerFilter")
                        }
                    },
                    _needUpdateFilterIndicators: () => true,
                    _columnOptionChanged(e) {
                        const {
                            optionNames: optionNames
                        } = e;
                        const isFilterRowAndHeaderFilterValuesChanged = _m_utils.default.checkChanges(optionNames, ["filterValues", "filterValue"]);
                        const isHeaderFilterValuesAndTypeChanged = _m_utils.default.checkChanges(optionNames, ["filterValues", "filterType"]);
                        const shouldUpdateFilterIndicators = (isFilterRowAndHeaderFilterValuesChanged || isHeaderFilterValuesAndTypeChanged) && this._needUpdateFilterIndicators();
                        if (shouldUpdateFilterIndicators) {
                            this._updateHeaderFilterIndicators()
                        }
                        if (!isHeaderFilterValuesAndTypeChanged) {
                            this.callBase(e)
                        }
                    }
                });
                const HeaderPanelHeaderFilterExtender = (0, _extend.extend)({}, _m_header_filter_core.headerFilterMixin, {
                    _createGroupPanelItem($rootElement, groupColumn) {
                        const that = this;
                        const $item = that.callBase.apply(that, arguments);
                        let $headerFilterIndicator;
                        if (!groupColumn.command && (0, _m_header_filter_core.allowHeaderFiltering)(groupColumn) && that.option("headerFilter.visible")) {
                            $headerFilterIndicator = that._applyColumnState({
                                name: "headerFilter",
                                rootElement: $item,
                                column: {
                                    alignment: (0, _position.getDefaultAlignment)(that.option("rtlEnabled")),
                                    filterValues: groupColumn.filterValues,
                                    allowHeaderFiltering: true,
                                    caption: groupColumn.caption
                                },
                                showColumnLines: true
                            });
                            $headerFilterIndicator && _events_engine.default.on($headerFilterIndicator, _click.name, that.createAction(e => {
                                const {
                                    event: event
                                } = e;
                                event.stopPropagation();
                                that.getController("headerFilter").showHeaderFilterMenu(groupColumn.index, true)
                            }))
                        }
                        return $item
                    }
                });
                const DataControllerFilterRowExtender = {
                    skipCalculateColumnFilters: () => false,
                    _calculateAdditionalFilter() {
                        if (this.skipCalculateColumnFilters()) {
                            return this.callBase()
                        }
                        const filters = [this.callBase()];
                        const columns = this._columnsController.getVisibleColumns(null, true);
                        const headerFilterController = this.getController("headerFilter");
                        const currentColumn = headerFilterController.getCurrentColumn();
                        (0, _iterator.each)(columns, (_, column) => {
                            let filter;
                            if (currentColumn && currentColumn.index === column.index) {
                                return
                            }
                            if ((0, _m_header_filter_core.allowHeaderFiltering)(column) && column.calculateFilterExpression && Array.isArray(column.filterValues) && column.filterValues.length) {
                                let filterValues = [];
                                (0, _iterator.each)(column.filterValues, (_, filterValue) => {
                                    if (Array.isArray(filterValue)) {
                                        filter = filterValue
                                    } else {
                                        if (column.deserializeValue && !_m_utils.default.isDateType(column.dataType) && "number" !== column.dataType) {
                                            filterValue = column.deserializeValue(filterValue)
                                        }
                                        filter = column.createFilterExpression(filterValue, "=", "headerFilter")
                                    }
                                    if (filter) {
                                        filter.columnIndex = column.index
                                    }
                                    filterValues.push(filter)
                                });
                                filterValues = _m_utils.default.combineFilters(filterValues, "or");
                                filters.push("exclude" === column.filterType ? ["!", filterValues] : filterValues)
                            }
                        });
                        return _m_utils.default.combineFilters(filters)
                    }
                };
                const headerFilterModule = {
                    defaultOptions: () => ({
                        syncLookupFilterValues: true,
                        headerFilter: {
                            visible: false,
                            width: 252,
                            height: 325,
                            allowSelectAll: true,
                            search: {
                                enabled: false,
                                timeout: 500,
                                mode: "contains",
                                editorOptions: {}
                            },
                            texts: {
                                emptyValue: _message.default.format("dxDataGrid-headerFilterEmptyValue"),
                                ok: _message.default.format("dxDataGrid-headerFilterOK"),
                                cancel: _message.default.format("dxDataGrid-headerFilterCancel")
                            }
                        }
                    }),
                    controllers: {
                        headerFilter: HeaderFilterController
                    },
                    views: {
                        headerFilterView: _m_header_filter_core.HeaderFilterView
                    },
                    extenders: {
                        controllers: {
                            data: DataControllerFilterRowExtender
                        },
                        views: {
                            columnHeadersView: ColumnHeadersViewHeaderFilterExtender,
                            headerPanel: HeaderPanelHeaderFilterExtender
                        }
                    }
                };
                exports.headerFilterModule = headerFilterModule
            },
        37565:
            /*!**************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/header_filter/m_header_filter_core.js ***!
              \**************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.headerFilterMixin = exports.allowHeaderFiltering = exports.HeaderFilterView = void 0;
                exports.updateHeaderFilterItemSelectionState = function(item, filterValuesMatch, isExcludeFilter) {
                    if (filterValuesMatch ^ isExcludeFilter) {
                        item.selected = true;
                        if (isExcludeFilter && item.items) {
                            for (let j = 0; j < item.items.length; j++) {
                                if (!item.items[j].selected) {
                                    item.selected = void 0;
                                    break
                                }
                            }
                        }
                    } else if (isExcludeFilter || item.selected) {
                        item.selected = false;
                        ! function resetChildrenItemSelection(items) {
                            items = items || [];
                            for (let i = 0; i < items.length; i++) {
                                items[i].selected = false;
                                resetChildrenItemSelection(items[i].items)
                            }
                        }(item.items)
                    }
                };
                __webpack_require__( /*! ../../../../ui/list/modules/search */ 68724);
                __webpack_require__( /*! ../../../../ui/list/modules/selection */ 20551);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/message */ 28109));
                var _list_light = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/list_light */ 56757));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/popup/ui.popup */ 51495));
                var _tree_view = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/tree_view */ 30254));
                var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 15943));
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 60082));

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

                function getSelectAllCheckBox(listComponent) {
                    const selector = "dxTreeView" === listComponent.NAME ? ".dx-treeview-select-all-item" : ".dx-list-select-all-checkbox";
                    return listComponent.$element().find(selector).dxCheckBox("instance")
                }

                function updateListSelectAllState(e, filterValues) {
                    if (e.component.option("searchValue")) {
                        return
                    }
                    const selectAllCheckBox = getSelectAllCheckBox(e.component);
                    if (selectAllCheckBox && filterValues && filterValues.length) {
                        selectAllCheckBox.option("value", void 0)
                    }
                }
                const HeaderFilterView = _m_modules.default.View.inherit({
                    getPopupContainer() {
                        return this._popupContainer
                    },
                    getListComponent() {
                        return this._listComponent
                    },
                    applyHeaderFilter(options) {
                        const list = this.getListComponent();
                        const searchValue = list.option("searchValue");
                        const selectAllCheckBox = getSelectAllCheckBox(list);
                        const isAllSelected = !searchValue && !options.isFilterBuilder && (null === selectAllCheckBox || void 0 === selectAllCheckBox ? void 0 : selectAllCheckBox.option("value"));
                        const filterValues = [];
                        const fillSelectedItemKeys = function(filterValues, items, isExclude) {
                            (0, _iterator.each)(items, (_, item) => {
                                if (void 0 !== item.selected && !!item.selected ^ isExclude) {
                                    const node = list._getNode(item);
                                    const hasChildren = list._hasChildren(node);
                                    const hasChildrenWithSelection = hasChildren && item.items && item.items.some(item => item.selected);
                                    if (!searchValue || !hasChildrenWithSelection) {
                                        filterValues.push(item.value);
                                        return
                                    }
                                }
                                if (item.items && item.items.length) {
                                    fillSelectedItemKeys(filterValues, item.items, isExclude)
                                }
                            })
                        };
                        if (!isAllSelected) {
                            if ("tree" === options.type) {
                                if (options.filterType) {
                                    options.filterType = "include"
                                }
                                fillSelectedItemKeys(filterValues, list.option("items"), false);
                                options.filterValues = filterValues
                            }
                        } else {
                            if ("tree" === options.type) {
                                options.filterType = "exclude"
                            }
                            if (Array.isArray(options.filterValues)) {
                                options.filterValues = []
                            }
                        }
                        if (options.filterValues && !options.filterValues.length) {
                            options.filterValues = null
                        }
                        options.apply();
                        this.hideHeaderFilterMenu()
                    },
                    showHeaderFilterMenu($columnElement, options) {
                        const that = this;
                        if (options) {
                            that._initializePopupContainer(options);
                            const popupContainer = that.getPopupContainer();
                            that.hideHeaderFilterMenu();
                            that.updatePopup($columnElement, options);
                            popupContainer.show()
                        }
                    },
                    hideHeaderFilterMenu() {
                        const headerFilterMenu = this.getPopupContainer();
                        headerFilterMenu && headerFilterMenu.hide()
                    },
                    updatePopup($element, options) {
                        const that = this;
                        const showColumnLines = this.option("showColumnLines");
                        const alignment = "right" === options.alignment ^ !showColumnLines ? "left" : "right";
                        that._popupContainer.setAria({
                            role: "dialog",
                            label: _message.default.format("dxDataGrid-headerFilterLabel")
                        });
                        if (that._popupContainer) {
                            that._cleanPopupContent();
                            that._popupContainer.option("position", {
                                my: "".concat(alignment, " top"),
                                at: "".concat(alignment, " bottom"),
                                of: $element,
                                collision: "fit fit"
                            })
                        }
                    },
                    _getSearchExpr(options, headerFilterOptions) {
                        const {
                            lookup: lookup
                        } = options;
                        const {
                            useDefaultSearchExpr: useDefaultSearchExpr
                        } = options;
                        const headerFilterDataSource = headerFilterOptions.dataSource;
                        const filterSearchExpr = headerFilterOptions.search.searchExpr;
                        if (filterSearchExpr) {
                            return filterSearchExpr
                        }
                        if (useDefaultSearchExpr || (0, _type.isDefined)(headerFilterDataSource) && !(0, _type.isFunction)(headerFilterDataSource)) {
                            return "text"
                        }
                        if (lookup) {
                            return lookup.displayExpr || "this"
                        }
                        if (options.dataSource) {
                            const {
                                group: group
                            } = options.dataSource;
                            if (Array.isArray(group) && group.length > 0) {
                                return group[0].selector
                            }
                            if ((0, _type.isFunction)(group) && !options.remoteFiltering) {
                                return group
                            }
                        }
                        return options.dataField || options.selector
                    },
                    _cleanPopupContent() {
                        this._popupContainer && this._popupContainer.$content().empty()
                    },
                    _initializePopupContainer(options) {
                        const that = this;
                        const $element = that.element();
                        const headerFilterOptions = this._normalizeHeaderFilterOptions(options);
                        const {
                            height: height,
                            width: width
                        } = headerFilterOptions;
                        const dxPopupOptions = {
                            width: width,
                            height: height,
                            visible: false,
                            shading: false,
                            showTitle: false,
                            showCloseButton: false,
                            hideOnParentScroll: false,
                            dragEnabled: false,
                            hideOnOutsideClick: true,
                            wrapperAttr: {
                                class: "dx-header-filter-menu"
                            },
                            focusStateEnabled: false,
                            toolbarItems: [{
                                toolbar: "bottom",
                                location: "after",
                                widget: "dxButton",
                                options: {
                                    text: headerFilterOptions.texts.ok,
                                    onClick() {
                                        that.applyHeaderFilter(options)
                                    }
                                }
                            }, {
                                toolbar: "bottom",
                                location: "after",
                                widget: "dxButton",
                                options: {
                                    text: headerFilterOptions.texts.cancel,
                                    onClick() {
                                        that.hideHeaderFilterMenu()
                                    }
                                }
                            }],
                            resizeEnabled: true,
                            onShowing(e) {
                                e.component.$content().parent().addClass("dx-dropdowneditor-overlay");
                                that._initializeListContainer(options, headerFilterOptions);
                                options.onShowing && options.onShowing(e)
                            },
                            onShown() {
                                that.getListComponent().focus()
                            },
                            onHidden: options.onHidden,
                            onInitialized(e) {
                                const {
                                    component: component
                                } = e;
                                component.option("animation", component._getDefaultOptions().animation)
                            }
                        };
                        if (!(0, _type.isDefined)(that._popupContainer)) {
                            that._popupContainer = that._createComponent($element, _ui.default, dxPopupOptions)
                        } else {
                            that._popupContainer.option(dxPopupOptions)
                        }
                    },
                    _initializeListContainer(options, headerFilterOptions) {
                        const that = this;
                        const $content = that._popupContainer.$content();
                        const needShowSelectAllCheckbox = !options.isFilterBuilder && headerFilterOptions.allowSelectAll;
                        const widgetOptions = {
                            searchEnabled: headerFilterOptions.search.enabled,
                            searchTimeout: headerFilterOptions.search.timeout,
                            searchEditorOptions: headerFilterOptions.search.editorOptions,
                            searchMode: headerFilterOptions.search.mode || "",
                            dataSource: options.dataSource,
                            onContentReady() {
                                that.renderCompleted.fire()
                            },
                            itemTemplate(data, _, element) {
                                const $element = (0, _renderer.default)(element);
                                if (options.encodeHtml) {
                                    return $element.text(data.text)
                                }
                                return $element.html(data.text)
                            }
                        };

                        function onOptionChanged(e) {
                            if ("searchValue" === e.fullName && needShowSelectAllCheckbox && false !== that.option("headerFilter.hideSelectAllOnSearch")) {
                                if ("tree" === options.type) {
                                    e.component.option("showCheckBoxesMode", e.value ? "normal" : "selectAll")
                                } else {
                                    e.component.option("selectionMode", e.value ? "multiple" : "all")
                                }
                            }
                        }
                        if ("tree" === options.type) {
                            that._listComponent = that._createComponent((0, _renderer.default)("<div>").appendTo($content), _tree_view.default, (0, _extend.extend)(widgetOptions, {
                                showCheckBoxesMode: needShowSelectAllCheckbox ? "selectAll" : "normal",
                                onOptionChanged: onOptionChanged,
                                keyExpr: "id"
                            }))
                        } else {
                            that._listComponent = that._createComponent((0, _renderer.default)("<div>").appendTo($content), _list_light.default, (0, _extend.extend)(widgetOptions, {
                                searchExpr: that._getSearchExpr(options, headerFilterOptions),
                                pageLoadMode: "scrollBottom",
                                showSelectionControls: true,
                                selectionMode: needShowSelectAllCheckbox ? "all" : "multiple",
                                onOptionChanged: onOptionChanged,
                                onSelectionChanged(e) {
                                    const items = e.component.option("items");
                                    const selectedItems = e.component.option("selectedItems");
                                    if (!e.component._selectedItemsUpdating && !e.component.option("searchValue") && !options.isFilterBuilder) {
                                        const filterValues = options.filterValues || [];
                                        const isExclude = "exclude" === options.filterType;
                                        if (0 === selectedItems.length && items.length && (filterValues.length <= 1 || isExclude && filterValues.length === items.length - 1)) {
                                            options.filterType = "include";
                                            options.filterValues = []
                                        } else if (selectedItems.length === items.length) {
                                            options.filterType = "exclude";
                                            options.filterValues = []
                                        }
                                    }(0, _iterator.each)(items, (index, item) => {
                                        const selected = _m_utils.default.getIndexByKey(item, selectedItems, null) >= 0;
                                        const oldSelected = !!item.selected;
                                        if (oldSelected !== selected) {
                                            item.selected = selected;
                                            options.filterValues = options.filterValues || [];
                                            const filterValueIndex = _m_utils.default.getIndexByKey(item.value, options.filterValues, null);
                                            if (filterValueIndex >= 0) {
                                                options.filterValues.splice(filterValueIndex, 1)
                                            }
                                            const isExcludeFilterType = "exclude" === options.filterType;
                                            if (selected ^ isExcludeFilterType) {
                                                options.filterValues.push(item.value)
                                            }
                                        }
                                    });
                                    updateListSelectAllState(e, options.filterValues)
                                },
                                onContentReady(e) {
                                    const {
                                        component: component
                                    } = e;
                                    const items = component.option("items");
                                    const selectedItems = [];
                                    (0, _iterator.each)(items, (function() {
                                        if (this.selected) {
                                            selectedItems.push(this)
                                        }
                                    }));
                                    component._selectedItemsUpdating = true;
                                    component.option("selectedItems", selectedItems);
                                    component._selectedItemsUpdating = false;
                                    updateListSelectAllState(e, options.filterValues)
                                }
                            }))
                        }
                    },
                    _normalizeHeaderFilterOptions(options) {
                        const generalHeaderFilter = this.option("headerFilter") || {};
                        const specificHeaderFilter = options.headerFilter || {};
                        const generalDeprecated = {
                            search: {
                                enabled: generalHeaderFilter.allowSearch,
                                timeout: generalHeaderFilter.searchTimeout
                            }
                        };
                        const specificDeprecated = {
                            search: {
                                enabled: specificHeaderFilter.allowSearch,
                                mode: specificHeaderFilter.searchMode,
                                timeout: specificHeaderFilter.searchTimeout
                            }
                        };
                        return (0, _extend.extend)(true, {}, generalHeaderFilter, generalDeprecated, specificHeaderFilter, specificDeprecated)
                    },
                    _renderCore() {
                        this.element().addClass("dx-header-filter-menu")
                    }
                });
                exports.HeaderFilterView = HeaderFilterView;
                const allowHeaderFiltering = function(column) {
                    return (0, _type.isDefined)(column.allowHeaderFiltering) ? column.allowHeaderFiltering : column.allowFiltering
                };
                exports.allowHeaderFiltering = allowHeaderFiltering;
                const headerFilterMixin = {
                    _applyColumnState(options) {
                        let $headerFilterIndicator;
                        const {
                            rootElement: rootElement
                        } = options;
                        const {
                            column: column
                        } = options;
                        if ("headerFilter" === options.name) {
                            rootElement.find(".".concat("dx-header-filter")).remove();
                            if (allowHeaderFiltering(column)) {
                                $headerFilterIndicator = this.callBase(options).toggleClass("dx-header-filter-empty", this._isHeaderFilterEmpty(column));
                                if (!this.option("useLegacyKeyboardNavigation")) {
                                    $headerFilterIndicator.attr("tabindex", this.option("tabindex") || 0)
                                }
                                const indicatorLabel = _message.default.format("dxDataGrid-headerFilterIndicatorLabel", column.caption);
                                $headerFilterIndicator.attr("aria-label", indicatorLabel);
                                $headerFilterIndicator.attr("aria-haspopup", "dialog");
                                $headerFilterIndicator.attr("role", "button")
                            }
                            return $headerFilterIndicator
                        }
                        return this.callBase(options)
                    },
                    _isHeaderFilterEmpty: column => !column.filterValues || !column.filterValues.length,
                    _getIndicatorClassName(name) {
                        if ("headerFilter" === name) {
                            return "dx-header-filter"
                        }
                        return this.callBase(name)
                    },
                    _renderIndicator(options) {
                        const $container = options.container;
                        const $indicator = options.indicator;
                        if ("headerFilter" === options.name) {
                            const rtlEnabled = this.option("rtlEnabled");
                            if ($container.children().length && (!rtlEnabled && "right" === options.columnAlignment || rtlEnabled && "left" === options.columnAlignment)) {
                                $container.prepend($indicator);
                                return
                            }
                        }
                        this.callBase(options)
                    },
                    optionChanged(args) {
                        if ("headerFilter" === args.name) {
                            const requireReady = "columnHeadersView" === this.name;
                            this._invalidate(requireReady, requireReady);
                            args.handled = true
                        } else {
                            this.callBase(args)
                        }
                    }
                };
                exports.headerFilterMixin = headerFilterMixin
            },
        92468:
            /*!*******************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/header_panel/m_header_panel.js ***!
              \*******************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.headerPanelModule = exports.HeaderPanel = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _data = __webpack_require__( /*! ../../../../core/utils/data */ 47617);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/message */ 28109));
                var _toolbar = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/toolbar */ 71042));
                var _m_columns_view = __webpack_require__( /*! ../views/m_columns_view */ 57318);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const DEFAULT_TOOLBAR_ITEM_NAMES = ["addRowButton", "applyFilterButton", "columnChooserButton", "exportButton", "groupPanel", "revertButton", "saveButton", "searchPanel"];
                let HeaderPanel = function(_ColumnsView) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(HeaderPanel, _ColumnsView);

                    function HeaderPanel() {
                        return _ColumnsView.apply(this, arguments) || this
                    }
                    var _proto = HeaderPanel.prototype;
                    _proto._getToolbarItems = function() {
                        return []
                    };
                    _proto._getButtonContainer = function() {
                        return (0, _renderer.default)("<div>").addClass(this.addWidgetPrefix("toolbar-button"))
                    };
                    _proto._getToolbarButtonClass = function(specificClass) {
                        const secondClass = specificClass ? " ".concat(specificClass) : "";
                        return this.addWidgetPrefix("toolbar-button") + secondClass
                    };
                    _proto._getToolbarOptions = function() {
                        const userToolbarOptions = this.option("toolbar");
                        const options = {
                            toolbarOptions: {
                                items: this._getToolbarItems(),
                                visible: null === userToolbarOptions || void 0 === userToolbarOptions ? void 0 : userToolbarOptions.visible,
                                disabled: null === userToolbarOptions || void 0 === userToolbarOptions ? void 0 : userToolbarOptions.disabled,
                                onItemRendered(e) {
                                    const itemRenderedCallback = e.itemData.onItemRendered;
                                    if (itemRenderedCallback) {
                                        itemRenderedCallback(e)
                                    }
                                }
                            }
                        };
                        const userItems = null === userToolbarOptions || void 0 === userToolbarOptions ? void 0 : userToolbarOptions.items;
                        options.toolbarOptions.items = this._normalizeToolbarItems(options.toolbarOptions.items, userItems);
                        this.executeAction("onToolbarPreparing", options);
                        if (options.toolbarOptions && !(0, _type.isDefined)(options.toolbarOptions.visible)) {
                            const toolbarItems = options.toolbarOptions.items;
                            options.toolbarOptions.visible = !!(null === toolbarItems || void 0 === toolbarItems ? void 0 : toolbarItems.length)
                        }
                        return options.toolbarOptions
                    };
                    _proto._normalizeToolbarItems = function(defaultItems, userItems) {
                        defaultItems.forEach(button => {
                            if (!DEFAULT_TOOLBAR_ITEM_NAMES.includes(button.name)) {
                                throw new Error("Default toolbar item '".concat(button.name, "' is not added to DEFAULT_TOOLBAR_ITEM_NAMES"))
                            }
                        });
                        const defaultProps = {
                            location: "after"
                        };
                        const isArray = Array.isArray(userItems);
                        if (!(0, _type.isDefined)(userItems)) {
                            return defaultItems
                        }
                        if (!isArray) {
                            userItems = [userItems]
                        }
                        const defaultButtonsByNames = {};
                        defaultItems.forEach(button => {
                            defaultButtonsByNames[button.name] = button
                        });
                        const normalizedItems = userItems.map(button => {
                            if ((0, _type.isString)(button)) {
                                button = {
                                    name: button
                                }
                            }
                            if ((0, _type.isDefined)(button.name)) {
                                if ((0, _type.isDefined)(defaultButtonsByNames[button.name])) {
                                    button = (0, _extend.extend)(true, {}, defaultButtonsByNames[button.name], button)
                                } else if (DEFAULT_TOOLBAR_ITEM_NAMES.includes(button.name)) {
                                    button = _extends(_extends({}, button), {
                                        visible: false
                                    })
                                }
                            }
                            return (0, _extend.extend)(true, {}, defaultProps, button)
                        });
                        return isArray ? normalizedItems : normalizedItems[0]
                    };
                    _proto._renderCore = function() {
                        if (!this._toolbar) {
                            const $headerPanel = this.element();
                            $headerPanel.addClass(this.addWidgetPrefix("header-panel"));
                            const label = _message.default.format(this.component.NAME + "-ariaToolbar");
                            const $toolbar = (0, _renderer.default)("<div>").attr("aria-label", label).appendTo($headerPanel);
                            this._toolbar = this._createComponent($toolbar, _toolbar.default, this._toolbarOptions)
                        } else {
                            this._toolbar.option(this._toolbarOptions)
                        }
                    };
                    _proto._columnOptionChanged = function() {};
                    _proto._handleDataChanged = function() {
                        if (this._requireReady) {
                            this.render()
                        }
                    };
                    _proto._isDisabledDefinedByUser = function(name) {
                        var _a;
                        const userItems = null === (_a = this.option("toolbar")) || void 0 === _a ? void 0 : _a.items;
                        const userItem = null === userItems || void 0 === userItems ? void 0 : userItems.find(item => (null === item || void 0 === item ? void 0 : item.name) === name);
                        return (0, _type.isDefined)(null === userItem || void 0 === userItem ? void 0 : userItem.disabled)
                    };
                    _proto.init = function() {
                        _ColumnsView.prototype.init.call(this);
                        this.createAction("onToolbarPreparing", {
                            excludeValidators: ["disabled", "readOnly"]
                        })
                    };
                    _proto.render = function() {
                        this._toolbarOptions = this._getToolbarOptions();
                        _ColumnsView.prototype.render.apply(this, arguments)
                    };
                    _proto.setToolbarItemDisabled = function(name, disabled) {
                        var _a;
                        const toolbar = this._toolbar;
                        const isDefinedByUser = this._isDisabledDefinedByUser(name);
                        if (!toolbar || isDefinedByUser) {
                            return
                        }
                        const items = null !== (_a = toolbar.option("items")) && void 0 !== _a ? _a : [];
                        const itemIndex = items.findIndex(item => item.name === name);
                        if (itemIndex < 0) {
                            return
                        }
                        const item = toolbar.option("items[".concat(itemIndex, "]"));
                        toolbar.option("items[".concat(itemIndex, "].disabled"), disabled);
                        if (item.options) {
                            toolbar.option("items[".concat(itemIndex, "].options.disabled"), disabled)
                        }
                    };
                    _proto.updateToolbarDimensions = function() {
                        var _a;
                        null === (_a = this._toolbar) || void 0 === _a ? void 0 : _a.updateDimensions()
                    };
                    _proto.getHeaderPanel = function() {
                        return this.element()
                    };
                    _proto.getHeight = function() {
                        return this.getElementHeight()
                    };
                    _proto.optionChanged = function(args) {
                        if ("onToolbarPreparing" === args.name) {
                            this._invalidate();
                            args.handled = true
                        }
                        if ("toolbar" === args.name) {
                            args.handled = true;
                            if (this._toolbar) {
                                const parts = (0, _data.getPathParts)(args.fullName);
                                const optionName = args.fullName.replace(/^toolbar\./, "");
                                if (1 === parts.length) {
                                    const toolbarOptions = this._getToolbarOptions();
                                    this._toolbar.option(toolbarOptions)
                                } else if ("items" === parts[1]) {
                                    if (2 === parts.length) {
                                        const toolbarOptions = this._getToolbarOptions();
                                        this._toolbar.option("items", toolbarOptions.items)
                                    } else if (3 === parts.length) {
                                        const normalizedItem = this._normalizeToolbarItems(this._getToolbarItems(), args.value);
                                        this._toolbar.option(optionName, normalizedItem)
                                    } else if (parts.length >= 4) {
                                        this._toolbar.option(optionName, args.value)
                                    }
                                } else {
                                    this._toolbar.option(optionName, args.value)
                                }
                            }
                        }
                        _ColumnsView.prototype.optionChanged.call(this, args)
                    };
                    _proto.isVisible = function() {
                        return !!(this._toolbarOptions && this._toolbarOptions.visible)
                    };
                    _proto.allowDragging = function() {};
                    _proto.hasGroupedColumns = function() {};
                    return HeaderPanel
                }(_m_columns_view.ColumnsView);
                exports.HeaderPanel = HeaderPanel;
                const headerPanelModule = {
                    defaultOptions: () => ({}),
                    views: {
                        headerPanel: HeaderPanel
                    },
                    extenders: {
                        controllers: {
                            resizing: {
                                _updateDimensionsCore() {
                                    this.callBase.apply(this, arguments);
                                    this.getView("headerPanel").updateToolbarDimensions()
                                }
                            }
                        }
                    }
                };
                exports.headerPanelModule = headerPanelModule
            },
        67004:
            /*!*****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/keyboard_navigation/const.js ***!
              \*****************************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.WIDGET_CLASS = exports.VIRTUAL_ROW_CLASS = exports.ROW_CLASS = exports.ROWS_VIEW_CLASS = exports.REVERT_BUTTON_CLASS = exports.NON_FOCUSABLE_ELEMENTS_SELECTOR = exports.MASTER_DETAIL_ROW_CLASS = exports.MASTER_DETAIL_CELL_CLASS = exports.INTERACTIVE_ELEMENTS_SELECTOR = exports.HEADER_ROW_CLASS = exports.GROUP_ROW_CLASS = exports.GROUP_FOOTER_CLASS = exports.FUNCTIONAL_KEYS = exports.FREESPACE_ROW_CLASS = exports.FOCUS_TYPE_ROW = exports.FOCUS_TYPE_CELL = exports.FOCUS_STATE_CLASS = exports.FOCUSED_CLASS = exports.FAST_EDITING_DELETE_KEY = exports.EDIT_MODE_FORM = exports.EDIT_FORM_ITEM_CLASS = exports.EDIT_FORM_CLASS = exports.EDITOR_CELL_CLASS = exports.DROPDOWN_EDITOR_OVERLAY_CLASS = exports.DATEBOX_WIDGET_NAME = exports.DATA_ROW_CLASS = exports.COMMAND_SELECT_CLASS = exports.COMMAND_EXPAND_CLASS = exports.COMMAND_EDIT_CLASS = exports.COMMAND_CELL_SELECTOR = exports.COLUMN_HEADERS_VIEW = exports.CELL_FOCUS_DISABLED_CLASS = exports.ATTRIBUTES = exports.ADAPTIVE_COLUMN_NAME_CLASS = void 0;
                exports.ATTRIBUTES = {
                    ariaColIndex: "aria-colindex",
                    dragCell: "dx-drag-cell"
                };
                exports.ROWS_VIEW_CLASS = "rowsview";
                exports.EDIT_FORM_CLASS = "edit-form";
                exports.GROUP_FOOTER_CLASS = "group-footer";
                exports.ROW_CLASS = "dx-row";
                exports.DATA_ROW_CLASS = "dx-data-row";
                exports.GROUP_ROW_CLASS = "dx-group-row";
                exports.HEADER_ROW_CLASS = "dx-header-row";
                exports.EDIT_FORM_ITEM_CLASS = "edit-form-item";
                exports.MASTER_DETAIL_ROW_CLASS = "dx-master-detail-row";
                exports.FREESPACE_ROW_CLASS = "dx-freespace-row";
                exports.VIRTUAL_ROW_CLASS = "dx-virtual-row";
                exports.MASTER_DETAIL_CELL_CLASS = "dx-master-detail-cell";
                exports.EDITOR_CELL_CLASS = "dx-editor-cell";
                exports.DROPDOWN_EDITOR_OVERLAY_CLASS = "dx-dropdowneditor-overlay";
                exports.COMMAND_EXPAND_CLASS = "dx-command-expand";
                exports.ADAPTIVE_COLUMN_NAME_CLASS = "dx-command-adaptive";
                exports.COMMAND_SELECT_CLASS = "dx-command-select";
                exports.COMMAND_EDIT_CLASS = "dx-command-edit";
                exports.COMMAND_CELL_SELECTOR = "[class^=dx-command]";
                exports.CELL_FOCUS_DISABLED_CLASS = "dx-cell-focus-disabled";
                exports.DATEBOX_WIDGET_NAME = "dxDateBox";
                exports.FOCUS_STATE_CLASS = "dx-state-focused";
                exports.WIDGET_CLASS = "dx-widget";
                exports.REVERT_BUTTON_CLASS = "dx-revert-button";
                exports.FOCUSED_CLASS = "dx-focused";
                exports.FAST_EDITING_DELETE_KEY = "delete";
                const INTERACTIVE_ELEMENTS_SELECTOR = '\n  input:not([type="hidden"]):not([disabled]),\n  textarea:not([disabled]),\n  a:not([disabled]),\n  select:not([disabled]),\n  button:not([disabled]),\n  [tabindex]:not([disabled]),\n  .dx-checkbox:not([disabled],.dx-state-readonly)\n';
                exports.INTERACTIVE_ELEMENTS_SELECTOR = INTERACTIVE_ELEMENTS_SELECTOR;
                const NON_FOCUSABLE_ELEMENTS_SELECTOR = "".concat(INTERACTIVE_ELEMENTS_SELECTOR, ", .dx-dropdowneditor-icon");
                exports.NON_FOCUSABLE_ELEMENTS_SELECTOR = NON_FOCUSABLE_ELEMENTS_SELECTOR;
                exports.EDIT_MODE_FORM = "form";
                exports.FOCUS_TYPE_ROW = "row";
                exports.FOCUS_TYPE_CELL = "cell";
                exports.COLUMN_HEADERS_VIEW = "columnHeadersView";
                exports.FUNCTIONAL_KEYS = ["shift", "control", "alt"]
            },
        83066:
            /*!***************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/keyboard_navigation/dom.js ***!
              \***************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.GridCoreKeyboardNavigationDom = void 0;
                var _const = __webpack_require__( /*! ./const */ 67004);
                const GridCoreKeyboardNavigationDom = {
                    isDragCell: $cell => void 0 !== $cell.attr(_const.ATTRIBUTES.dragCell),
                    getCellToFocus: ($cellElements, columnIndex) => $cellElements.filter("[".concat(_const.ATTRIBUTES.ariaColIndex, '="').concat(columnIndex + 1, '"]:not([').concat(_const.ATTRIBUTES.dragCell, "])")).first()
                };
                exports.GridCoreKeyboardNavigationDom = GridCoreKeyboardNavigationDom
            },
        31822:
            /*!*********************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/keyboard_navigation/m_keyboard_navigation.js ***!
              \*********************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.keyboardNavigationModule = exports.KeyboardNavigationController = void 0;
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../../core/dom_adapter */ 73349));
                var _element = __webpack_require__( /*! ../../../../core/element */ 6415);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/browser */ 47810));
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _size = __webpack_require__( /*! ../../../../core/utils/size */ 58664);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _click = __webpack_require__( /*! ../../../../events/click */ 95429);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../events/core/events_engine */ 55994));
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../../events/pointer */ 93786));
                var _short = __webpack_require__( /*! ../../../../events/short */ 72918);
                var _index = __webpack_require__( /*! ../../../../events/utils/index */ 39611);
                var accessibility = function(obj, nodeInterop) {
                    if (!nodeInterop && obj && obj.__esModule) {
                        return obj
                    }
                    if (null === obj || "object" !== typeof obj && "function" !== typeof obj) {
                        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 ("default" !== key && 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
                }(__webpack_require__( /*! ../../../../ui/shared/accessibility */ 56756));
                var _selectors = __webpack_require__( /*! ../../../../ui/widget/selectors */ 31421);
                var _memoize = __webpack_require__( /*! ../../../utils/memoize */ 18945);
                var _const = __webpack_require__( /*! ../editing/const */ 72313);
                var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 15943));
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 60082));
                var _const2 = __webpack_require__( /*! ./const */ 67004);
                var _dom = __webpack_require__( /*! ./dom */ 83066);
                var _m_keyboard_navigation_utils = __webpack_require__( /*! ./m_keyboard_navigation_utils */ 67250);
                var _scrollable_a11y = __webpack_require__( /*! ./scrollable_a11y */ 91355);

                function _getRequireWildcardCache(nodeInterop) {
                    if ("function" !== typeof WeakMap) {
                        return null
                    }
                    var cacheBabelInterop = new WeakMap;
                    var cacheNodeInterop = new WeakMap;
                    return (_getRequireWildcardCache = function(nodeInterop) {
                        return nodeInterop ? cacheNodeInterop : cacheBabelInterop
                    })(nodeInterop)
                }

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let KeyboardNavigationController = function(_modules$ViewControll) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(KeyboardNavigationController, _modules$ViewControll);

                    function KeyboardNavigationController() {
                        return _modules$ViewControll.apply(this, arguments) || this
                    }
                    var _proto = KeyboardNavigationController.prototype;
                    _proto.init = function() {
                        var _a, _b;
                        this._dataController = this.getController("data");
                        this._selectionController = this.getController("selection");
                        this._editingController = this.getController("editing");
                        this._headerPanel = this.getView("headerPanel");
                        this._rowsView = this.getView("rowsView");
                        this._columnsController = this.getController("columns");
                        this._editorFactory = this.getController("editorFactory");
                        this._focusController = this.getController("focus");
                        this._adaptiveColumnsController = this.getController("adaptiveColumns");
                        this._memoFireFocusedCellChanged = (0, _memoize.memoize)(this._memoFireFocusedCellChanged.bind(this), {
                            compareType: "value"
                        });
                        this._memoFireFocusedRowChanged = (0, _memoize.memoize)(this._memoFireFocusedRowChanged.bind(this), {
                            compareType: "value"
                        });
                        this.focusedHandlerWithContext = this.focusedHandlerWithContext || this.focusedHandler.bind(this);
                        this.renderCompletedWithContext = this.renderCompletedWithContext || this.renderCompleted.bind(this);
                        this.rowsViewFocusHandlerContext = this.rowsViewFocusHandlerContext || this.rowsViewFocusHandler.bind(this);
                        this._updateFocusTimeout = null;
                        this._fastEditingStarted = false;
                        this._focusedCellPosition = {};
                        this._canceledCellPosition = null;
                        if (this.isKeyboardEnabled()) {
                            accessibility.subscribeVisibilityChange();
                            null === (_a = this._editorFactory) || void 0 === _a ? void 0 : _a.focused.add(this.focusedHandlerWithContext);
                            this.createAction("onKeyDown")
                        } else {
                            accessibility.unsubscribeVisibilityChange();
                            null === (_b = this._editorFactory) || void 0 === _b ? void 0 : _b.focused.remove(this.focusedHandlerWithContext)
                        }
                        this.initViewHandlers();
                        this.initDocumentHandlers()
                    };
                    _proto.focusedHandler = function($element) {
                        this.setupFocusedView();
                        if (this._isNeedScroll) {
                            if ($element.is(":visible") && this._focusedView && this._focusedView.getScrollable) {
                                this._focusedView._scrollToElement($element);
                                this._isNeedScroll = false
                            }
                        }
                    };
                    _proto.rowsViewFocusHandler = function(event) {
                        var _a;
                        const $element = (0, _renderer.default)(event.target);
                        const isRelatedTargetInRowsView = (0, _renderer.default)(event.relatedTarget).closest(this._rowsView.element()).length;
                        const isLink = $element.is("a");
                        if (event.relatedTarget && isLink && !isRelatedTargetInRowsView && this._isEventInCurrentGrid(event)) {
                            let $focusedCell = this._getFocusedCell();
                            $focusedCell = !(0, _m_keyboard_navigation_utils.isElementDefined)($focusedCell) ? this._rowsView.getCellElements(0).filter("[tabindex]").eq(0) : $focusedCell;
                            if (!$element.closest($focusedCell).length) {
                                event.preventDefault();
                                _events_engine.default.trigger($focusedCell, "focus")
                            }
                        }
                        const isCell = $element.is("td");
                        const needSetFocusPosition = (null !== (_a = this.option("focusedRowIndex")) && void 0 !== _a ? _a : -1) < 0;
                        if (isCell && needSetFocusPosition) {
                            this._updateFocusedCellPosition($element)
                        }
                    };
                    _proto.subscribeToRowsViewFocusEvent = function() {
                        var _a;
                        const $rowsView = null === (_a = this._rowsView) || void 0 === _a ? void 0 : _a.element();
                        _events_engine.default.on($rowsView, "focusin", this.rowsViewFocusHandlerContext)
                    };
                    _proto.unsubscribeFromRowsViewFocusEvent = function() {
                        var _a;
                        const $rowsView = null === (_a = this._rowsView) || void 0 === _a ? void 0 : _a.element();
                        _events_engine.default.off($rowsView, "focusin", this.rowsViewFocusHandlerContext)
                    };
                    _proto.renderCompleted = function(e) {
                        const $rowsView = this._rowsView.element();
                        const isFullUpdate = !e || "refresh" === e.changeType;
                        const isFocusedViewCorrect = this._focusedView && this._focusedView.name === this._rowsView.name;
                        let needUpdateFocus = false;
                        const isAppend = e && ("append" === e.changeType || "prepend" === e.changeType);
                        const root = (0, _renderer.default)(_dom_adapter.default.getRootNode($rowsView.get && $rowsView.get(0)));
                        const $focusedElement = root.find(":focus");
                        const isFocusedElementCorrect = !$focusedElement.length || $focusedElement.closest($rowsView).length;
                        this.unsubscribeFromRowsViewFocusEvent();
                        this.subscribeToRowsViewFocusEvent();
                        this.initPointerEventHandler();
                        this.initKeyDownHandler();
                        this._setRowsViewAttributes();
                        if (isFocusedViewCorrect && isFocusedElementCorrect) {
                            needUpdateFocus = this._isNeedFocus ? !isAppend : this._isHiddenFocus && isFullUpdate && !(null === e || void 0 === e ? void 0 : e.virtualColumnsScrolling);
                            needUpdateFocus && this._updateFocus(true)
                        }
                    };
                    _proto.initViewHandlers = function() {
                        var _a, _b;
                        this.unsubscribeFromRowsViewFocusEvent();
                        this.unsubscribeFromPointerEvent();
                        this.unsubscribeFromKeyDownEvent();
                        null === (_b = null === (_a = this._rowsView) || void 0 === _a ? void 0 : _a.renderCompleted) || void 0 === _b ? void 0 : _b.remove(this.renderCompletedWithContext);
                        if (this.isKeyboardEnabled()) {
                            this._rowsView.renderCompleted.add(this.renderCompletedWithContext)
                        }
                    };
                    _proto.initDocumentHandlers = function() {
                        const document = _dom_adapter.default.getDocument();
                        this._documentClickHandler = this._documentClickHandler || this.createAction(e => {
                            const $target = (0, _renderer.default)(e.event.target);
                            const isCurrentRowsViewClick = this._isEventInCurrentGrid(e.event) && $target.closest(".".concat(this.addWidgetPrefix(_const2.ROWS_VIEW_CLASS))).length;
                            const isEditorOverlay = $target.closest(".".concat(_const2.DROPDOWN_EDITOR_OVERLAY_CLASS)).length;
                            const columnsResizerController = this.getController("columnsResizer");
                            const isColumnResizing = !!columnsResizerController && columnsResizerController.isResizing();
                            if (!isCurrentRowsViewClick && !isEditorOverlay && !isColumnResizing) {
                                const targetInsideFocusedView = this._focusedView ? $target.parents().filter(this._focusedView.element()).length > 0 : false;
                                !targetInsideFocusedView && this._resetFocusedCell(true);
                                this._resetFocusedView()
                            }
                        });
                        _events_engine.default.off(document, (0, _index.addNamespace)(_pointer.default.down, "dxDataGridKeyboardNavigation"), this._documentClickHandler);
                        if (this.isKeyboardEnabled()) {
                            _events_engine.default.on(document, (0, _index.addNamespace)(_pointer.default.down, "dxDataGridKeyboardNavigation"), this._documentClickHandler)
                        }
                    };
                    _proto._setRowsViewAttributes = function() {
                        const $rowsView = this._getRowsViewElement();
                        const isGridEmpty = !this._dataController.getVisibleRows().length;
                        if (isGridEmpty) {
                            this._applyTabIndexToElement($rowsView)
                        }
                    };
                    _proto.unsubscribeFromPointerEvent = function() {
                        const pointerEventName = !(0, _m_keyboard_navigation_utils.isMobile)() ? _pointer.default.down : _click.name;
                        const $rowsView = this._getRowsViewElement();
                        this._pointerEventAction && _events_engine.default.off($rowsView, (0, _index.addNamespace)(pointerEventName, "dxDataGridKeyboardNavigation"), this._pointerEventAction)
                    };
                    _proto.subscribeToPointerEvent = function() {
                        const pointerEventName = !(0, _m_keyboard_navigation_utils.isMobile)() ? _pointer.default.down : _click.name;
                        const $rowsView = this._getRowsViewElement();
                        const clickSelector = ".".concat(_const.ROW_CLASS, " > td, .").concat(_const.ROW_CLASS);
                        _events_engine.default.on($rowsView, (0, _index.addNamespace)(pointerEventName, "dxDataGridKeyboardNavigation"), clickSelector, this._pointerEventAction)
                    };
                    _proto.initPointerEventHandler = function() {
                        this._pointerEventAction = this._pointerEventAction || this.createAction(this._pointerEventHandler);
                        this.unsubscribeFromPointerEvent();
                        this.subscribeToPointerEvent()
                    };
                    _proto.unsubscribeFromKeyDownEvent = function() {
                        _short.keyboard.off(this._keyDownListener)
                    };
                    _proto.subscribeToKeyDownEvent = function() {
                        const $rowsView = this._getRowsViewElement();
                        this._keyDownListener = _short.keyboard.on($rowsView, null, e => this._keyDownHandler(e))
                    };
                    _proto.initKeyDownHandler = function() {
                        this._keyDownListener && this.unsubscribeFromKeyDownEvent();
                        this.subscribeToKeyDownEvent()
                    };
                    _proto.dispose = function() {
                        _modules$ViewControll.prototype.dispose.call(this);
                        this._resetFocusedView();
                        _short.keyboard.off(this._keyDownListener);
                        _events_engine.default.off(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.down, "dxDataGridKeyboardNavigation"), this._documentClickHandler);
                        clearTimeout(this._updateFocusTimeout);
                        accessibility.unsubscribeVisibilityChange()
                    };
                    _proto.optionChanged = function(args) {
                        switch (args.name) {
                            case "keyboardNavigation":
                            case "useLegacyKeyboardNavigation":
                                this.init();
                                args.handled = true;
                                break;
                            default:
                                _modules$ViewControll.prototype.optionChanged.call(this, args)
                        }
                    };
                    _proto.isRowFocusType = function() {
                        return this.focusType === _const2.FOCUS_TYPE_ROW
                    };
                    _proto.isCellFocusType = function() {
                        return this.focusType === _const2.FOCUS_TYPE_CELL
                    };
                    _proto.setRowFocusType = function() {
                        if (this.option("focusedRowEnabled")) {
                            this.focusType = _const2.FOCUS_TYPE_ROW
                        }
                    };
                    _proto.setCellFocusType = function() {
                        this.focusType = _const2.FOCUS_TYPE_CELL
                    };
                    _proto._keyDownHandler = function(e) {
                        var _a;
                        let needStopPropagation = true;
                        this._isNeedFocus = true;
                        this._isNeedScroll = true;
                        let isHandled = this._processOnKeyDown(e);
                        const isEditing = null === (_a = this._editingController) || void 0 === _a ? void 0 : _a.isEditing();
                        const {
                            originalEvent: originalEvent
                        } = e;
                        if (originalEvent.isDefaultPrevented()) {
                            this._isNeedFocus = false;
                            this._isNeedScroll = false;
                            return
                        }!_const2.FUNCTIONAL_KEYS.includes(e.keyName) && this._updateFocusedCellPositionByTarget(originalEvent.target);
                        if (!isHandled) {
                            switch (e.keyName) {
                                case "leftArrow":
                                case "rightArrow":
                                    this._leftRightKeysHandler(e, isEditing);
                                    isHandled = true;
                                    break;
                                case "upArrow":
                                case "downArrow":
                                    if (e.ctrl) {
                                        accessibility.selectView("rowsView", this, originalEvent)
                                    } else {
                                        this._upDownKeysHandler(e, isEditing)
                                    }
                                    isHandled = true;
                                    break;
                                case "pageUp":
                                case "pageDown":
                                    this._pageUpDownKeyHandler(e);
                                    isHandled = true;
                                    break;
                                case "space":
                                    isHandled = this._spaceKeyHandler(e, isEditing);
                                    break;
                                case "A":
                                    if ((0, _index.isCommandKeyPressed)(e.originalEvent)) {
                                        this._ctrlAKeyHandler(e, isEditing);
                                        isHandled = true
                                    } else {
                                        isHandled = this._beginFastEditing(e.originalEvent)
                                    }
                                    break;
                                case "tab":
                                    this._tabKeyHandler(e, isEditing);
                                    isHandled = true;
                                    break;
                                case "enter":
                                    this._enterKeyHandler(e, isEditing);
                                    isHandled = true;
                                    break;
                                case "escape":
                                    isHandled = this._escapeKeyHandler(e, isEditing);
                                    break;
                                case "F":
                                    if ((0, _index.isCommandKeyPressed)(e.originalEvent)) {
                                        this._ctrlFKeyHandler(e);
                                        isHandled = true
                                    } else {
                                        isHandled = this._beginFastEditing(e.originalEvent)
                                    }
                                    break;
                                case "F2":
                                    this._f2KeyHandler();
                                    isHandled = true;
                                    break;
                                case "del":
                                case "backspace":
                                    if (this._isFastEditingAllowed() && !this._isFastEditingStarted()) {
                                        isHandled = this._beginFastEditing(originalEvent, true)
                                    }
                            }
                            if (!isHandled && !this._beginFastEditing(originalEvent)) {
                                this._isNeedFocus = false;
                                this._isNeedScroll = false;
                                needStopPropagation = false
                            }
                            if (needStopPropagation) {
                                originalEvent.stopPropagation()
                            }
                        }
                    };
                    _proto._processOnKeyDown = function(eventArgs) {
                        const {
                            originalEvent: originalEvent
                        } = eventArgs;
                        const args = {
                            handled: false,
                            event: originalEvent
                        };
                        this.executeAction("onKeyDown", args);
                        eventArgs.ctrl = originalEvent.ctrlKey;
                        eventArgs.alt = originalEvent.altKey;
                        eventArgs.shift = originalEvent.shiftKey;
                        return !!args.handled
                    };
                    _proto._closeEditCell = function() {
                        setTimeout(() => {
                            this._editingController.closeEditCell()
                        })
                    };
                    _proto._leftRightKeysHandler = function(eventArgs, isEditing) {
                        const rowIndex = this.getVisibleRowIndex();
                        const $event = eventArgs.originalEvent;
                        const $row = this._focusedView && this._focusedView.getRow(rowIndex);
                        const directionCode = this._getDirectionCodeByKey(eventArgs.keyName);
                        const isEditingNavigationMode = this._isFastEditingStarted();
                        const allowNavigate = (!isEditing || isEditingNavigationMode) && (0, _m_keyboard_navigation_utils.isDataRow)($row);
                        if (allowNavigate) {
                            this.setCellFocusType();
                            isEditingNavigationMode && this._closeEditCell();
                            if (this._isVirtualColumnRender()) {
                                this._processVirtualHorizontalPosition(directionCode)
                            }
                            const $cell = this._getNextCell(directionCode);
                            if ((0, _m_keyboard_navigation_utils.isElementDefined)($cell)) {
                                this._arrowKeysHandlerFocusCell($event, $cell, directionCode)
                            }
                            $event && $event.preventDefault()
                        }
                    };
                    _proto._upDownKeysHandler = function(eventArgs, isEditing) {
                        var _a, _b;
                        const visibleRowIndex = this.getVisibleRowIndex();
                        const $row = this._focusedView && this._focusedView.getRow(visibleRowIndex);
                        const $event = eventArgs.originalEvent;
                        const isUpArrow = "upArrow" === eventArgs.keyName;
                        const dataSource = this._dataController.dataSource();
                        const isRowEditingInCurrentRow = null === (_b = null === (_a = this._editingController) || void 0 === _a ? void 0 : _a.isEditRowByIndex) || void 0 === _b ? void 0 : _b.call(_a, visibleRowIndex);
                        const isEditingNavigationMode = this._isFastEditingStarted();
                        const allowNavigate = (!isRowEditingInCurrentRow || !isEditing || isEditingNavigationMode) && $row && !(0, _m_keyboard_navigation_utils.isDetailRow)($row);
                        if (allowNavigate) {
                            isEditingNavigationMode && this._closeEditCell();
                            if (!this._navigateNextCell($event, eventArgs.keyName)) {
                                if (this._isVirtualRowRender() && isUpArrow && dataSource && !dataSource.isLoading()) {
                                    const rowHeight = (0, _size.getOuterHeight)($row);
                                    const rowIndex = this._focusedCellPosition.rowIndex - 1;
                                    this._scrollBy(0, -rowHeight, rowIndex, $event)
                                }
                            }
                            $event && $event.preventDefault()
                        }
                    };
                    _proto._pageUpDownKeyHandler = function(eventArgs) {
                        const pageIndex = this._dataController.pageIndex();
                        const pageCount = this._dataController.pageCount();
                        const pagingEnabled = this.option("paging.enabled");
                        const isPageUp = "pageUp" === eventArgs.keyName;
                        const pageStep = isPageUp ? -1 : 1;
                        const scrollable = this._rowsView.getScrollable();
                        if (pagingEnabled && !this._isVirtualScrolling()) {
                            if ((isPageUp ? pageIndex > 0 : pageIndex < pageCount - 1) && !this._isVirtualScrolling()) {
                                this._dataController.pageIndex(pageIndex + pageStep);
                                eventArgs.originalEvent.preventDefault()
                            }
                        } else if (scrollable && (0, _size.getHeight)(scrollable.container()) < (0, _size.getHeight)(scrollable.$content())) {
                            this._scrollBy(0, (0, _size.getHeight)(scrollable.container()) * pageStep);
                            eventArgs.originalEvent.preventDefault()
                        }
                    };
                    _proto._spaceKeyHandler = function(eventArgs, isEditing) {
                        const rowIndex = this.getVisibleRowIndex();
                        const $target = (0, _renderer.default)(eventArgs.originalEvent && eventArgs.originalEvent.target);
                        if (this.option("selection") && "none" !== this.option("selection").mode && !isEditing) {
                            const isFocusedRowElement = "row" === this._getElementType($target) && this.isRowFocusType() && (0, _m_keyboard_navigation_utils.isDataRow)($target);
                            const isFocusedSelectionCell = $target.hasClass(_const2.COMMAND_SELECT_CLASS);
                            if (isFocusedSelectionCell && "onClick" === this.option("selection.showCheckBoxesMode")) {
                                this._selectionController.startSelectionWithCheckboxes()
                            }
                            if (isFocusedRowElement || $target.parent().hasClass(_const2.DATA_ROW_CLASS) || $target.hasClass(this.addWidgetPrefix(_const2.ROWS_VIEW_CLASS))) {
                                this._selectionController.changeItemSelection(rowIndex, {
                                    shift: eventArgs.shift,
                                    control: eventArgs.ctrl
                                });
                                eventArgs.originalEvent.preventDefault();
                                return true
                            }
                            return false
                        }
                        return this._beginFastEditing(eventArgs.originalEvent)
                    };
                    _proto._ctrlAKeyHandler = function(eventArgs, isEditing) {
                        if (!isEditing && !eventArgs.alt && "multiple" === this.option("selection.mode") && this.option("selection.allowSelectAll")) {
                            this._selectionController.selectAll();
                            eventArgs.originalEvent.preventDefault()
                        }
                    };
                    _proto._tabKeyHandler = function(eventArgs, isEditing) {
                        const editingOptions = this.option("editing");
                        const direction = eventArgs.shift ? "previous" : "next";
                        const isCellPositionDefined = (0, _type.isDefined)(this._focusedCellPosition) && !(0, _type.isEmptyObject)(this._focusedCellPosition);
                        let isOriginalHandlerRequired = !isCellPositionDefined || !eventArgs.shift && this._isLastValidCell(this._focusedCellPosition) || eventArgs.shift && this._isFirstValidCell(this._focusedCellPosition);
                        const eventTarget = eventArgs.originalEvent.target;
                        const focusedViewElement = this._focusedView && this._focusedView.element();
                        if (this._handleTabKeyOnMasterDetailCell(eventTarget, direction)) {
                            return
                        }(0, _renderer.default)(focusedViewElement).addClass(_const2.FOCUS_STATE_CLASS);
                        if (editingOptions && eventTarget && !isOriginalHandlerRequired) {
                            if ((0, _renderer.default)(eventTarget).hasClass(this.addWidgetPrefix(_const2.ROWS_VIEW_CLASS))) {
                                this._resetFocusedCell()
                            }
                            if (this._isVirtualColumnRender()) {
                                this._processVirtualHorizontalPosition(direction)
                            }
                            if (isEditing) {
                                if (!this._editingCellTabHandler(eventArgs, direction)) {
                                    return
                                }
                            } else if (this._targetCellTabHandler(eventArgs, direction)) {
                                isOriginalHandlerRequired = true
                            }
                        }
                        if (isOriginalHandlerRequired) {
                            this._editorFactory.loseFocus();
                            if (this._editingController.isEditing() && !this._isRowEditMode()) {
                                this._resetFocusedCell(true);
                                this._resetFocusedView();
                                this._closeEditCell()
                            }
                        } else {
                            eventArgs.originalEvent.preventDefault()
                        }
                    };
                    _proto._getMaxHorizontalOffset = function() {
                        const scrollable = this.component.getScrollable();
                        return scrollable ? scrollable.scrollWidth() - (0, _size.getWidth)(this._rowsView.element()) : 0
                    };
                    _proto._isColumnRendered = function(columnIndex) {
                        const allVisibleColumns = this._columnsController.getVisibleColumns(null, true);
                        const renderedVisibleColumns = this._columnsController.getVisibleColumns();
                        const column = allVisibleColumns[columnIndex];
                        let result = false;
                        if (column) {
                            result = renderedVisibleColumns.indexOf(column) >= 0
                        }
                        return result
                    };
                    _proto._isFixedColumn = function(columnIndex) {
                        const allVisibleColumns = this._columnsController.getVisibleColumns(null, true);
                        const column = allVisibleColumns[columnIndex];
                        return !!column && !!column.fixed
                    };
                    _proto._isColumnVirtual = function(columnIndex) {
                        const localColumnIndex = columnIndex - this._columnsController.getColumnIndexOffset();
                        const visibleColumns = this._columnsController.getVisibleColumns();
                        const column = visibleColumns[localColumnIndex];
                        return !!column && "virtual" === column.command
                    };
                    _proto._processVirtualHorizontalPosition = function(direction) {
                        const scrollable = this.component.getScrollable();
                        const columnIndex = this.getColumnIndex();
                        let nextColumnIndex;
                        let horizontalScrollPosition = 0;
                        let needToScroll = false;
                        switch (direction) {
                            case "next":
                            case "nextInRow": {
                                const columnsCount = this._getVisibleColumnCount();
                                nextColumnIndex = columnIndex + 1;
                                horizontalScrollPosition = this.option("rtlEnabled") ? this._getMaxHorizontalOffset() : 0;
                                if ("next" === direction) {
                                    needToScroll = columnsCount === nextColumnIndex || this._isFixedColumn(columnIndex) && !this._isColumnRendered(nextColumnIndex)
                                } else {
                                    needToScroll = columnsCount > nextColumnIndex && this._isFixedColumn(columnIndex) && !this._isColumnRendered(nextColumnIndex)
                                }
                                break
                            }
                            case "previous":
                            case "previousInRow":
                                nextColumnIndex = columnIndex - 1;
                                horizontalScrollPosition = this.option("rtlEnabled") ? 0 : this._getMaxHorizontalOffset();
                                if ("previous" === direction) {
                                    const columnIndexOffset = this._columnsController.getColumnIndexOffset();
                                    const leftEdgePosition = nextColumnIndex < 0 && 0 === columnIndexOffset;
                                    needToScroll = leftEdgePosition || this._isFixedColumn(columnIndex) && !this._isColumnRendered(nextColumnIndex)
                                } else {
                                    needToScroll = nextColumnIndex >= 0 && this._isFixedColumn(columnIndex) && !this._isColumnRendered(nextColumnIndex)
                                }
                        }
                        if (needToScroll) {
                            scrollable.scrollTo({
                                left: horizontalScrollPosition
                            })
                        } else if ((0, _type.isDefined)(nextColumnIndex) && (0, _type.isDefined)(direction) && this._isColumnVirtual(nextColumnIndex)) {
                            horizontalScrollPosition = this._getHorizontalScrollPositionOffset(direction);
                            0 !== horizontalScrollPosition && scrollable.scrollBy({
                                left: horizontalScrollPosition,
                                top: 0
                            })
                        }
                    };
                    _proto._getHorizontalScrollPositionOffset = function(direction) {
                        let positionOffset = 0;
                        const $currentCell = this._getCell(this._focusedCellPosition);
                        const currentCellWidth = $currentCell && (0, _size.getOuterWidth)($currentCell);
                        if (currentCellWidth > 0) {
                            const rtlMultiplier = this.option("rtlEnabled") ? -1 : 1;
                            positionOffset = "nextInRow" === direction || "next" === direction ? currentCellWidth * rtlMultiplier : currentCellWidth * rtlMultiplier * -1
                        }
                        return positionOffset
                    };
                    _proto._editingCellTabHandler = function(eventArgs, direction) {
                        const eventTarget = eventArgs.originalEvent.target;
                        let $cell = this._getCellElementFromTarget(eventTarget);
                        let isEditingAllowed;
                        const $event = eventArgs.originalEvent;
                        const elementType = this._getElementType(eventTarget);
                        if ($cell.is(_const2.COMMAND_CELL_SELECTOR)) {
                            return !this._targetCellTabHandler(eventArgs, direction)
                        }
                        this._updateFocusedCellPosition($cell);
                        const nextCellInfo = this._getNextCellByTabKey($event, direction, elementType);
                        $cell = nextCellInfo.$cell;
                        if (!$cell || this._handleTabKeyOnMasterDetailCell($cell, direction)) {
                            return false
                        }
                        const column = this._getColumnByCellElement($cell);
                        const $row = $cell.parent();
                        const rowIndex = this._getRowIndex($row);
                        const row = this._dataController.items()[rowIndex];
                        const editingController = this._editingController;
                        if (column && column.allowEditing) {
                            const isDataRow = !row || "data" === row.rowType;
                            isEditingAllowed = editingController.allowUpdating({
                                row: row
                            }) ? isDataRow : row && row.isNewRow
                        }
                        if (!isEditingAllowed) {
                            this._closeEditCell()
                        }
                        if (this._focusCell($cell, !nextCellInfo.isHighlighted)) {
                            if (!this._isRowEditMode() && isEditingAllowed) {
                                this._editFocusedCell()
                            } else {
                                this._focusInteractiveElement($cell, eventArgs.shift)
                            }
                        }
                        return true
                    };
                    _proto._targetCellTabHandler = function(eventArgs, direction) {
                        const $event = eventArgs.originalEvent;
                        let eventTarget = $event.target;
                        let elementType = this._getElementType(eventTarget);
                        let $cell = this._getCellElementFromTarget(eventTarget);
                        const $lastInteractiveElement = "cell" === elementType && this._getInteractiveElement($cell, !eventArgs.shift);
                        let isOriginalHandlerRequired = false;
                        if (!(0, _m_keyboard_navigation_utils.isEditorCell)(this, $cell) && (null === $lastInteractiveElement || void 0 === $lastInteractiveElement ? void 0 : $lastInteractiveElement.length) && eventTarget !== $lastInteractiveElement.get(0)) {
                            isOriginalHandlerRequired = true
                        } else {
                            if (void 0 === this._focusedCellPosition.rowIndex && (0, _renderer.default)(eventTarget).hasClass(_const.ROW_CLASS)) {
                                this._updateFocusedCellPosition($cell)
                            }
                            elementType = this._getElementType(eventTarget);
                            if (this.isRowFocusType()) {
                                this.setCellFocusType();
                                if ("row" === elementType && (0, _m_keyboard_navigation_utils.isDataRow)((0, _renderer.default)(eventTarget))) {
                                    eventTarget = this.getFirstValidCellInRow((0, _renderer.default)(eventTarget));
                                    elementType = this._getElementType(eventTarget)
                                }
                            }
                            const nextCellInfo = this._getNextCellByTabKey($event, direction, elementType);
                            $cell = nextCellInfo.$cell;
                            if (!$cell) {
                                return false
                            }
                            $cell = this._checkNewLineTransition($event, $cell);
                            if (!$cell) {
                                return false
                            }
                            this._focusCell($cell, !nextCellInfo.isHighlighted);
                            if (!(0, _m_keyboard_navigation_utils.isEditorCell)(this, $cell)) {
                                this._focusInteractiveElement($cell, eventArgs.shift)
                            }
                        }
                        return isOriginalHandlerRequired
                    };
                    _proto._getNextCellByTabKey = function($event, direction, elementType) {
                        let $cell = this._getNextCell(direction, elementType);
                        const args = $cell && this._fireFocusedCellChanging($event, $cell, true);
                        if (!args || args.cancel) {
                            return {}
                        }
                        if (args.$newCellElement) {
                            $cell = args.$newCellElement
                        }
                        return {
                            $cell: $cell,
                            isHighlighted: args.isHighlighted
                        }
                    };
                    _proto._checkNewLineTransition = function($event, $cell) {
                        const rowIndex = this.getVisibleRowIndex();
                        const $row = $cell.parent();
                        if (rowIndex !== this._getRowIndex($row)) {
                            const cellPosition = this._getCellPosition($cell);
                            const args = this._fireFocusedRowChanging($event, $row);
                            if (args.cancel) {
                                return
                            }
                            if (args.rowIndexChanged && cellPosition) {
                                this.setFocusedColumnIndex(cellPosition.columnIndex);
                                $cell = this._getFocusedCell()
                            }
                        }
                        return $cell
                    };
                    _proto._enterKeyHandler = function(eventArgs, isEditing) {
                        var _a;
                        const rowIndex = this.getVisibleRowIndex();
                        const key = this._dataController.getKeyByRowIndex(rowIndex);
                        const $row = null === (_a = this._focusedView) || void 0 === _a ? void 0 : _a.getRow(rowIndex);
                        const $cell = this._getFocusedCell();
                        const needExpandGroupRow = this.option("grouping.allowCollapsing") && (0, _m_keyboard_navigation_utils.isGroupRow)($row);
                        const needExpandMasterDetailRow = this.option("masterDetail.enabled") && (null === $cell || void 0 === $cell ? void 0 : $cell.hasClass(_const2.COMMAND_EXPAND_CLASS));
                        const needExpandAdaptiveRow = null === $cell || void 0 === $cell ? void 0 : $cell.hasClass(_const2.ADAPTIVE_COLUMN_NAME_CLASS);
                        if (needExpandGroupRow || needExpandMasterDetailRow) {
                            const item = this._dataController.items()[rowIndex];
                            const isNotContinuation = (null === item || void 0 === item ? void 0 : item.data) && !item.data.isContinuation;
                            if ((0, _type.isDefined)(key) && isNotContinuation) {
                                this._dataController.changeRowExpand(key)
                            }
                        } else if (needExpandAdaptiveRow) {
                            this._adaptiveColumnsController.toggleExpandAdaptiveDetailRow(key);
                            this._updateFocusedCellPosition($cell)
                        } else if (!(null === $cell || void 0 === $cell ? void 0 : $cell.hasClass(_const2.COMMAND_EDIT_CLASS))) {
                            this._processEnterKeyForDataCell(eventArgs, isEditing)
                        }
                    };
                    _proto._processEnterKeyForDataCell = function(eventArgs, isEditing) {
                        const direction = this._getEnterKeyDirection(eventArgs);
                        const allowEditingOnEnterKey = this._allowEditingOnEnterKey();
                        if (isEditing || !allowEditingOnEnterKey && direction) {
                            this._handleEnterKeyEditingCell(eventArgs.originalEvent);
                            if ("next" === direction || "previous" === direction) {
                                this._targetCellTabHandler(eventArgs, direction)
                            } else if ("upArrow" === direction || "downArrow" === direction) {
                                this._navigateNextCell(eventArgs.originalEvent, direction)
                            }
                        } else if (allowEditingOnEnterKey) {
                            this._startEditing(eventArgs)
                        }
                    };
                    _proto._getEnterKeyDirection = function(eventArgs) {
                        const enterKeyDirection = this.option("keyboardNavigation.enterKeyDirection");
                        const isShift = eventArgs.shift;
                        if ("column" === enterKeyDirection) {
                            return isShift ? "upArrow" : "downArrow"
                        }
                        if ("row" === enterKeyDirection) {
                            return isShift ? "previous" : "next"
                        }
                        return
                    };
                    _proto._handleEnterKeyEditingCell = function(event) {
                        const {
                            target: target
                        } = event;
                        const $cell = this._getCellElementFromTarget(target);
                        const isRowEditMode = this._isRowEditMode();
                        this._updateFocusedCellPosition($cell);
                        if (isRowEditMode) {
                            this._focusEditFormCell($cell);
                            setTimeout(this._editingController.saveEditData.bind(this._editingController))
                        } else {
                            _events_engine.default.trigger((0, _renderer.default)(target), "change");
                            this._closeEditCell();
                            event.preventDefault()
                        }
                    };
                    _proto._escapeKeyHandler = function(eventArgs, isEditing) {
                        const $cell = this._getCellElementFromTarget(eventArgs.originalEvent.target);
                        if (isEditing) {
                            this._updateFocusedCellPosition($cell);
                            if (!this._isRowEditMode()) {
                                if ("cell" === this._editingController.getEditMode()) {
                                    this._editingController.cancelEditData()
                                } else {
                                    this._closeEditCell()
                                }
                            } else {
                                this._focusEditFormCell($cell);
                                this._editingController.cancelEditData();
                                if (0 === this._dataController.items().length) {
                                    this._resetFocusedCell();
                                    this._editorFactory.loseFocus()
                                }
                            }
                            eventArgs.originalEvent.preventDefault();
                            return true
                        }
                        return false
                    };
                    _proto._ctrlFKeyHandler = function(eventArgs) {
                        if (this.option("searchPanel.visible")) {
                            const searchTextEditor = this._headerPanel.getSearchTextEditor();
                            if (searchTextEditor) {
                                searchTextEditor.focus();
                                eventArgs.originalEvent.preventDefault()
                            }
                        }
                    };
                    _proto._f2KeyHandler = function() {
                        const isEditing = this._editingController.isEditing();
                        const rowIndex = this.getVisibleRowIndex();
                        const $row = this._focusedView && this._focusedView.getRow(rowIndex);
                        if (!isEditing && (0, _m_keyboard_navigation_utils.isDataRow)($row)) {
                            this._startEditing()
                        }
                    };
                    _proto._navigateNextCell = function($event, keyCode) {
                        const $cell = this._getNextCell(keyCode);
                        const directionCode = this._getDirectionCodeByKey(keyCode);
                        const isCellValid = $cell && this._isCellValid($cell);
                        const result = isCellValid ? this._arrowKeysHandlerFocusCell($event, $cell, directionCode) : false;
                        return result
                    };
                    _proto._arrowKeysHandlerFocusCell = function($event, $nextCell, direction) {
                        const isVerticalDirection = "prevRow" === direction || "nextRow" === direction;
                        const args = this._fireFocusChangingEvents($event, $nextCell, isVerticalDirection, true);
                        $nextCell = args.$newCellElement;
                        if (!args.cancel && this._isCellValid($nextCell)) {
                            this._focus($nextCell, !args.isHighlighted);
                            return true
                        }
                        return false
                    };
                    _proto._beginFastEditing = function(originalEvent, isDeleting) {
                        if (!this._isFastEditingAllowed() || originalEvent.altKey || originalEvent.ctrlKey || this._editingController.isEditing()) {
                            return false
                        }
                        if (isDeleting) {
                            this._startEditing(originalEvent, _const2.FAST_EDITING_DELETE_KEY)
                        } else {
                            const {
                                key: key
                            } = originalEvent;
                            const keyCode = originalEvent.keyCode || originalEvent.which;
                            const fastEditingKey = key || keyCode && String.fromCharCode(keyCode);
                            if (fastEditingKey && (1 === fastEditingKey.length || fastEditingKey === _const2.FAST_EDITING_DELETE_KEY)) {
                                this._startEditing(originalEvent, fastEditingKey)
                            }
                        }
                        return true
                    };
                    _proto._pointerEventHandler = function(e) {
                        var _a;
                        const event = e.event || e;
                        let $target = (0, _renderer.default)(event.currentTarget);
                        const focusedViewElement = null === (_a = this._rowsView) || void 0 === _a ? void 0 : _a.element();
                        const $parent = $target.parent();
                        const isInteractiveElement = (0, _renderer.default)(event.target).is(_const2.INTERACTIVE_ELEMENTS_SELECTOR);
                        const isRevertButton = !!(0, _renderer.default)(event.target).closest(".".concat(_const2.REVERT_BUTTON_CLASS)).length;
                        const isExpandCommandCell = $target.hasClass(_const2.COMMAND_EXPAND_CLASS);
                        if (!this._isEventInCurrentGrid(event)) {
                            return
                        }
                        if (!isRevertButton && (this._isCellValid($target, !isInteractiveElement) || isExpandCommandCell)) {
                            $target = this._isInsideEditForm($target) ? (0, _renderer.default)(event.target) : $target;
                            this._focusView();
                            (0, _renderer.default)(focusedViewElement).removeClass(_const2.FOCUS_STATE_CLASS);
                            if ($parent.hasClass(_const2.FREESPACE_ROW_CLASS)) {
                                this._updateFocusedCellPosition($target);
                                this._applyTabIndexToElement(this._focusedView.element());
                                this._focusedView.focus(true)
                            } else if (!this._isMasterDetailCell($target)) {
                                this._clickTargetCellHandler(event, $target)
                            } else {
                                this._updateFocusedCellPosition($target)
                            }
                        } else if ($target.is("td")) {
                            this._resetFocusedCell()
                        }
                    };
                    _proto._clickTargetCellHandler = function(event, $cell) {
                        const column = this._getColumnByCellElement($cell);
                        const isCellEditMode = this._isCellEditMode();
                        this.setCellFocusType();
                        const args = this._fireFocusChangingEvents(event, $cell, true);
                        $cell = args.$newCellElement;
                        if (!args.cancel) {
                            if (args.resetFocusedRow) {
                                this.getController("focus")._resetFocusedRow();
                                return
                            }
                            if (args.rowIndexChanged) {
                                $cell = this._getFocusedCell()
                            }
                            if (!args.isHighlighted && !isCellEditMode) {
                                this.setRowFocusType()
                            }
                            this._updateFocusedCellPosition($cell);
                            if (this._allowRowUpdating() && isCellEditMode && column && column.allowEditing) {
                                this._isNeedFocus = false;
                                this._isHiddenFocus = false
                            } else {
                                $cell = this._getFocusedCell();
                                const $target = event && (0, _renderer.default)(event.target).closest("".concat(_const2.NON_FOCUSABLE_ELEMENTS_SELECTOR, ", td"));
                                const skipFocusEvent = $target && $target.not($cell).is(_const2.NON_FOCUSABLE_ELEMENTS_SELECTOR);
                                const isEditor = !!column && !column.command && $cell.hasClass(_const.EDITOR_CELL_CLASS);
                                const isDisabled = !isEditor && (!args.isHighlighted || skipFocusEvent);
                                this._focus($cell, isDisabled, skipFocusEvent)
                            }
                        } else {
                            this.setRowFocusType();
                            this.setFocusedRowIndex(args.prevRowIndex);
                            if (this._editingController.isEditing() && isCellEditMode) {
                                this._closeEditCell()
                            }
                        }
                    };
                    _proto._allowRowUpdating = function() {
                        const rowIndex = this.getVisibleRowIndex();
                        const row = this._dataController.items()[rowIndex];
                        return this._editingController.allowUpdating({
                            row: row
                        }, "click")
                    };
                    _proto.focus = function(element) {
                        let activeElementSelector;
                        const focusedRowEnabled = this.option("focusedRowEnabled");
                        const isHighlighted = this._isCellElement((0, _renderer.default)(element));
                        if (!element) {
                            activeElementSelector = ".dx-datagrid-rowsview .dx-row[tabindex]";
                            if (!focusedRowEnabled) {
                                activeElementSelector += ", .dx-datagrid-rowsview .dx-row > td[tabindex]"
                            }
                            element = this.component.$element().find(activeElementSelector).first()
                        }
                        element && this._focusElement((0, _renderer.default)(element), isHighlighted)
                    };
                    _proto.getFocusedView = function() {
                        return this._focusedView
                    };
                    _proto.setupFocusedView = function() {
                        if (this.isKeyboardEnabled() && !(0, _type.isDefined)(this._focusedView)) {
                            this._focusView()
                        }
                    };
                    _proto._focusElement = function($element, isHighlighted) {
                        const rowsViewElement = (0, _renderer.default)(this._getRowsViewElement());
                        const $focusedView = $element.closest(rowsViewElement);
                        const isRowFocusType = this.isRowFocusType();
                        let args = {};
                        if (!$focusedView.length || this._isCellElement($element) && !this._isCellValid($element)) {
                            return
                        }
                        this._focusView();
                        this._isNeedFocus = true;
                        this._isNeedScroll = true;
                        if (this._isCellElement($element) || (0, _m_keyboard_navigation_utils.isGroupRow)($element)) {
                            this.setCellFocusType();
                            args = this._fireFocusChangingEvents(null, $element, true, isHighlighted);
                            $element = args.$newCellElement;
                            if (isRowFocusType && !args.isHighlighted) {
                                this.setRowFocusType()
                            }
                        }
                        if (!args.cancel) {
                            this._focus($element, !args.isHighlighted);
                            this._focusInteractiveElement($element)
                        }
                    };
                    _proto._getFocusedViewByElement = function($element) {
                        const view = this.getFocusedView();
                        const $view = view && (0, _renderer.default)(view.element());
                        return $element && 0 !== $element.closest($view).length
                    };
                    _proto._focusView = function() {
                        this._focusedView = this._rowsView
                    };
                    _proto._resetFocusedView = function() {
                        this.setRowFocusType();
                        this._focusedView = null
                    };
                    _proto._focusInteractiveElement = function($cell, isLast) {
                        if (!$cell) {
                            return
                        }
                        const $focusedElement = this._getInteractiveElement($cell, isLast);
                        _m_utils.default.focusAndSelectElement(this, $focusedElement)
                    };
                    _proto._focus = function($cell, disableFocus, skipFocusEvent) {
                        const $row = $cell && !$cell.hasClass(_const.ROW_CLASS) ? $cell.closest(".".concat(_const.ROW_CLASS)) : $cell;
                        if ($row && (0, _m_keyboard_navigation_utils.isNotFocusedRow)($row)) {
                            return
                        }
                        const focusedView = this._focusedView;
                        const $focusViewElement = focusedView && focusedView.element();
                        let $focusElement;
                        this._isHiddenFocus = disableFocus;
                        const isRowFocus = (0, _m_keyboard_navigation_utils.isGroupRow)($row) || (0, _m_keyboard_navigation_utils.isGroupFooterRow)($row) || this.isRowFocusType();
                        if (isRowFocus) {
                            $focusElement = $row;
                            if (focusedView) {
                                this.setFocusedRowIndex(this._getRowIndex($row))
                            }
                        } else if (this._isCellElement($cell)) {
                            $focusElement = $cell;
                            this._updateFocusedCellPosition($cell)
                        }
                        if ($focusElement) {
                            if ($focusViewElement) {
                                $focusViewElement.find(".dx-row[tabindex], .dx-row > td[tabindex]").not($focusElement).removeClass(_const2.CELL_FOCUS_DISABLED_CLASS).removeClass(_const2.FOCUSED_CLASS).removeAttr("tabindex")
                            }
                            _events_engine.default.one($focusElement, "blur", e => {
                                if (e.relatedTarget) {
                                    $focusElement.removeClass(_const2.CELL_FOCUS_DISABLED_CLASS).removeClass(_const2.FOCUSED_CLASS)
                                }
                            });
                            if (!skipFocusEvent) {
                                this._applyTabIndexToElement($focusElement);
                                _events_engine.default.trigger($focusElement, "focus")
                            }
                            if (disableFocus) {
                                $focusElement.addClass(_const2.CELL_FOCUS_DISABLED_CLASS);
                                if (isRowFocus) {
                                    $cell.addClass(_const2.CELL_FOCUS_DISABLED_CLASS)
                                }
                            } else {
                                this._editorFactory.focus($focusElement)
                            }
                        }
                    };
                    _proto._updateFocus = function(isRenderView) {
                        this._updateFocusTimeout = setTimeout(() => {
                            if (this._needFocusEditingCell()) {
                                this._editingController._focusEditingCell();
                                return
                            }
                            let $cell = this._getFocusedCell();
                            const isEditing = this._editingController.isEditing();
                            if (!this._isMasterDetailCell($cell) || this._isRowEditMode()) {
                                if (this._hasSkipRow($cell.parent())) {
                                    const direction = this._focusedCellPosition && this._focusedCellPosition.rowIndex > 0 ? "upArrow" : "downArrow";
                                    $cell = this._getNextCell(direction)
                                }
                                if ((0, _m_keyboard_navigation_utils.isElementDefined)($cell)) {
                                    if ($cell.is("td") || $cell.hasClass(this.addWidgetPrefix(_const2.EDIT_FORM_ITEM_CLASS))) {
                                        const isCommandCell = $cell.is(_const2.COMMAND_CELL_SELECTOR);
                                        const $focusedElementInsideCell = $cell.find(":focus");
                                        const isFocusedElementDefined = (0, _m_keyboard_navigation_utils.isElementDefined)($focusedElementInsideCell);
                                        const column = this._getColumnByCellElement($cell);
                                        if ((isRenderView || !isCommandCell) && this._editorFactory.focus()) {
                                            if (isCommandCell && isFocusedElementDefined) {
                                                _m_utils.default.focusAndSelectElement(this, $focusedElementInsideCell);
                                                return
                                            }!isFocusedElementDefined && this._focus($cell)
                                        } else if (!isFocusedElementDefined && (this._isNeedFocus || this._isHiddenFocus)) {
                                            this._focus($cell, this._isHiddenFocus)
                                        }
                                        if (isEditing && !(null === column || void 0 === column ? void 0 : column.showEditorAlways)) {
                                            this._focusInteractiveElement.bind(this)($cell)
                                        }
                                    } else {
                                        _events_engine.default.trigger($cell, "focus")
                                    }
                                }
                            }
                        })
                    };
                    _proto._getColumnByCellElement = function($cell) {
                        const cellIndex = this._rowsView.getCellIndex($cell);
                        const columnIndex = cellIndex + this._columnsController.getColumnIndexOffset();
                        return this._columnsController.getVisibleColumns(null, true)[columnIndex]
                    };
                    _proto._needFocusEditingCell = function() {
                        const isCellEditMode = this._editingController.getEditMode() === _const.EDIT_MODE_CELL;
                        const isBatchEditMode = this._editingController.getEditMode() === _const.EDIT_MODE_BATCH;
                        const cellEditModeHasChanges = isCellEditMode && this._editingController.hasChanges();
                        const isNewRowBatchEditMode = isBatchEditMode && this._editingController.isNewRowInEditMode();
                        const $cell = this._getFocusedCell();
                        return (0 === $cell.children().length || $cell.find(_const.FOCUSABLE_ELEMENT_SELECTOR).length > 0) && (cellEditModeHasChanges || isNewRowBatchEditMode)
                    };
                    _proto._getFocusedCell = function() {
                        return (0, _renderer.default)(this._getCell(this._focusedCellPosition))
                    };
                    _proto._updateFocusedCellPositionByTarget = function(target) {
                        var _a;
                        const elementType = this._getElementType(target);
                        if ("row" === elementType && (0, _type.isDefined)(null === (_a = this._focusedCellPosition) || void 0 === _a ? void 0 : _a.columnIndex)) {
                            const $row = (0, _renderer.default)(target);
                            this._focusedView && (0, _m_keyboard_navigation_utils.isGroupRow)($row) && this.setFocusedRowIndex(this._getRowIndex($row))
                        } else {
                            this._updateFocusedCellPosition(this._getCellElementFromTarget(target))
                        }
                    };
                    _proto._updateFocusedCellPosition = function($cell, direction) {
                        const position = this._getCellPosition($cell, direction);
                        if (position) {
                            if (!$cell.length || position.rowIndex >= 0 && position.columnIndex >= 0) {
                                this.setFocusedCellPosition(position.rowIndex, position.columnIndex)
                            }
                        }
                        return position
                    };
                    _proto._getFocusedColumnIndexOffset = function(columnIndex) {
                        let offset = 0;
                        const column = this._columnsController.getVisibleColumns()[columnIndex];
                        if (column && column.fixed) {
                            offset = this._getFixedColumnIndexOffset(column)
                        } else if (columnIndex >= 0) {
                            offset = this._columnsController.getColumnIndexOffset()
                        }
                        return offset
                    };
                    _proto._getFixedColumnIndexOffset = function(column) {
                        const offset = (0, _m_keyboard_navigation_utils.isFixedColumnIndexOffsetRequired)(this, column) ? this._getVisibleColumnCount() - this._columnsController.getVisibleColumns().length : 0;
                        return offset
                    };
                    _proto._getCellPosition = function($cell, direction) {
                        let columnIndex;
                        const $row = (0, _m_keyboard_navigation_utils.isElementDefined)($cell) && $cell.closest("tr");
                        if ((0, _m_keyboard_navigation_utils.isElementDefined)($row)) {
                            const rowIndex = this._getRowIndex($row);
                            columnIndex = this._rowsView.getCellIndex($cell, rowIndex);
                            columnIndex += this._getFocusedColumnIndexOffset(columnIndex);
                            if (direction) {
                                columnIndex = "previous" === direction ? columnIndex - 1 : columnIndex + 1;
                                columnIndex = this._applyColumnIndexBoundaries(columnIndex)
                            }
                            return {
                                rowIndex: rowIndex,
                                columnIndex: columnIndex
                            }
                        }
                        return
                    };
                    _proto._focusCell = function($cell, isDisabled) {
                        if (this._isCellValid($cell)) {
                            this._focus($cell, isDisabled);
                            return true
                        }
                        return
                    };
                    _proto._focusEditFormCell = function($cell) {
                        if ($cell.hasClass(_const2.MASTER_DETAIL_CELL_CLASS)) {
                            this._editorFactory.focus($cell, true)
                        }
                    };
                    _proto._resetFocusedCell = function(preventScroll) {
                        var _a;
                        const $cell = this._getFocusedCell();
                        (0, _m_keyboard_navigation_utils.isElementDefined)($cell) && $cell.removeAttr("tabindex");
                        this._isNeedFocus = false;
                        this._isNeedScroll = false;
                        this._focusedCellPosition = {};
                        clearTimeout(this._updateFocusTimeout);
                        null === (_a = this._focusedView) || void 0 === _a ? void 0 : _a.renderFocusState({
                            preventScroll: preventScroll
                        })
                    };
                    _proto.restoreFocusableElement = function(rowIndex, $event) {
                        const that = this;
                        let args;
                        let $rowElement;
                        const isUpArrow = (0, _type.isDefined)(rowIndex);
                        const $rowsViewElement = this._rowsView.element();
                        const {
                            columnIndex: columnIndex
                        } = that._focusedCellPosition;
                        const rowIndexOffset = that._dataController.getRowIndexOffset();
                        rowIndex = isUpArrow ? rowIndex : this._rowsView.getTopVisibleItemIndex() + rowIndexOffset;
                        if (!isUpArrow) {
                            that._editorFactory.loseFocus();
                            that._applyTabIndexToElement($rowsViewElement);
                            _events_engine.default.trigger($rowsViewElement, "focus")
                        } else {
                            $rowElement = this._rowsView.getRow(rowIndex - rowIndexOffset);
                            args = that._fireFocusedRowChanging($event, $rowElement);
                            if (!args.cancel && args.rowIndexChanged) {
                                rowIndex = args.newRowIndex
                            }
                        }
                        if (!isUpArrow || !args.cancel) {
                            that.setFocusedCellPosition(rowIndex, columnIndex)
                        }
                        isUpArrow && that._updateFocus()
                    };
                    _proto._getNewPositionByCode = function(cellPosition, elementType, code) {
                        let {
                            columnIndex: columnIndex
                        } = cellPosition;
                        let {
                            rowIndex: rowIndex
                        } = cellPosition;
                        let visibleColumnsCount;
                        if (void 0 === cellPosition.rowIndex && "next" === code) {
                            return {
                                columnIndex: 0,
                                rowIndex: 0
                            }
                        }
                        switch (code) {
                            case "nextInRow":
                            case "next":
                                visibleColumnsCount = this._getVisibleColumnCount();
                                if (columnIndex < visibleColumnsCount - 1 && "row" !== elementType && this._hasValidCellAfterPosition({
                                        columnIndex: columnIndex,
                                        rowIndex: rowIndex
                                    })) {
                                    columnIndex++
                                } else if (!this._isLastRow(rowIndex) && "next" === code) {
                                    columnIndex = 0;
                                    rowIndex++
                                }
                                break;
                            case "previousInRow":
                            case "previous":
                                if (columnIndex > 0 && "row" !== elementType && this._hasValidCellBeforePosition({
                                        columnIndex: columnIndex,
                                        rowIndex: rowIndex
                                    })) {
                                    columnIndex--
                                } else if (rowIndex > 0 && "previous" === code) {
                                    rowIndex--;
                                    visibleColumnsCount = this._getVisibleColumnCount();
                                    columnIndex = visibleColumnsCount - 1
                                }
                                break;
                            case "upArrow":
                                rowIndex = rowIndex > 0 ? rowIndex - 1 : rowIndex;
                                break;
                            case "downArrow":
                                rowIndex = !this._isLastRow(rowIndex) ? rowIndex + 1 : rowIndex
                        }
                        return {
                            columnIndex: columnIndex,
                            rowIndex: rowIndex
                        }
                    };
                    _proto.setFocusedCellPosition = function(rowIndex, columnIndex) {
                        this.setFocusedRowIndex(rowIndex);
                        this.setFocusedColumnIndex(columnIndex)
                    };
                    _proto.setFocusedRowIndex = function(rowIndex) {
                        if (!this._focusedCellPosition) {
                            this._focusedCellPosition = {}
                        }
                        this._focusedCellPosition.rowIndex = rowIndex
                    };
                    _proto.setFocusedColumnIndex = function(columnIndex) {
                        if (!this._focusedCellPosition) {
                            this._focusedCellPosition = {}
                        }
                        this._focusedCellPosition.columnIndex = columnIndex
                    };
                    _proto.getRowIndex = function() {
                        return this._focusedCellPosition ? this._focusedCellPosition.rowIndex : -1
                    };
                    _proto.getColumnIndex = function() {
                        return this._focusedCellPosition ? this._focusedCellPosition.columnIndex : -1
                    };
                    _proto.getVisibleRowIndex = function() {
                        var _a;
                        const rowIndex = null === (_a = this._focusedCellPosition) || void 0 === _a ? void 0 : _a.rowIndex;
                        return !(0, _type.isDefined)(rowIndex) || rowIndex < 0 ? -1 : rowIndex - this._dataController.getRowIndexOffset()
                    };
                    _proto.getVisibleColumnIndex = function() {
                        var _a;
                        const columnIndex = null === (_a = this._focusedCellPosition) || void 0 === _a ? void 0 : _a.columnIndex;
                        return !(0, _type.isDefined)(columnIndex) ? -1 : columnIndex - this._columnsController.getColumnIndexOffset()
                    };
                    _proto._applyColumnIndexBoundaries = function(columnIndex) {
                        const visibleColumnsCount = this._getVisibleColumnCount();
                        if (columnIndex < 0) {
                            columnIndex = 0
                        } else if (columnIndex >= visibleColumnsCount) {
                            columnIndex = visibleColumnsCount - 1
                        }
                        return columnIndex
                    };
                    _proto._isCellByPositionValid = function(cellPosition) {
                        const $cell = (0, _renderer.default)(this._getCell(cellPosition));
                        return this._isCellValid($cell)
                    };
                    _proto._isLastRow = function(rowIndex) {
                        const dataController = this._dataController;
                        if (this._isVirtualRowRender()) {
                            return rowIndex >= dataController.getMaxRowIndex()
                        }
                        const lastVisibleIndex = Math.max(...dataController.items().map((item, index) => false !== item.visible ? index : -1));
                        return rowIndex === lastVisibleIndex
                    };
                    _proto._isFirstValidCell = function(cellPosition) {
                        let isFirstValidCell = false;
                        if (0 === cellPosition.rowIndex && cellPosition.columnIndex >= 0) {
                            isFirstValidCell = isFirstValidCell || !this._hasValidCellBeforePosition(cellPosition)
                        }
                        return isFirstValidCell
                    };
                    _proto._hasValidCellBeforePosition = function(cellPosition) {
                        let {
                            columnIndex: columnIndex
                        } = cellPosition;
                        let hasValidCells = false;
                        while (columnIndex > 0 && !hasValidCells) {
                            const checkingPosition = {
                                columnIndex: --columnIndex,
                                rowIndex: cellPosition.rowIndex
                            };
                            hasValidCells = this._isCellByPositionValid(checkingPosition)
                        }
                        return hasValidCells
                    };
                    _proto._hasValidCellAfterPosition = function(cellPosition) {
                        let {
                            columnIndex: columnIndex
                        } = cellPosition;
                        let hasValidCells = false;
                        const visibleColumnCount = this._getVisibleColumnCount();
                        while (columnIndex < visibleColumnCount - 1 && !hasValidCells) {
                            const checkingPosition = {
                                columnIndex: ++columnIndex,
                                rowIndex: cellPosition.rowIndex
                            };
                            hasValidCells = this._isCellByPositionValid(checkingPosition)
                        }
                        return hasValidCells
                    };
                    _proto._isLastValidCell = function(cellPosition) {
                        const nextColumnIndex = cellPosition.columnIndex >= 0 ? cellPosition.columnIndex + 1 : 0;
                        const {
                            rowIndex: rowIndex
                        } = cellPosition;
                        const checkingPosition = {
                            columnIndex: nextColumnIndex,
                            rowIndex: rowIndex
                        };
                        const visibleRows = this._dataController.getVisibleRows();
                        const row = visibleRows && visibleRows[rowIndex];
                        const isLastRow = this._isLastRow(rowIndex);
                        if (!isLastRow) {
                            return false
                        }
                        const isFullRowFocus = "group" === (null === row || void 0 === row ? void 0 : row.rowType) || "groupFooter" === (null === row || void 0 === row ? void 0 : row.rowType);
                        if (isFullRowFocus && cellPosition.columnIndex > 0) {
                            return true
                        }
                        if (cellPosition.columnIndex === this._getVisibleColumnCount() - 1) {
                            return true
                        }
                        if (this._isCellByPositionValid(checkingPosition)) {
                            return false
                        }
                        return this._isLastValidCell(checkingPosition)
                    };
                    _proto._isCellValid = function($cell, isClick) {
                        if ((0, _m_keyboard_navigation_utils.isElementDefined)($cell)) {
                            const $row = $cell.parent();
                            const columnIndex = this._rowsView.getCellIndex($cell) + this._columnsController.getColumnIndexOffset();
                            const column = this._getColumnByCellElement($cell);
                            const visibleColumnCount = this._getVisibleColumnCount();
                            const editingController = this._editingController;
                            const isMasterDetailRow = (0, _m_keyboard_navigation_utils.isDetailRow)($row);
                            const isShowWhenGrouped = column && column.showWhenGrouped;
                            const isDataCell = column && !$cell.hasClass(_const2.COMMAND_EXPAND_CLASS) && (0, _m_keyboard_navigation_utils.isDataRow)($row);
                            const isValidGroupSpaceColumn = function() {
                                return !isMasterDetailRow && column && (!(0, _type.isDefined)(column.groupIndex) || isShowWhenGrouped && isDataCell) || parseInt($cell.attr("colspan"), 10) > 1
                            };
                            const isDragCell = _dom.GridCoreKeyboardNavigationDom.isDragCell($cell);
                            if (isDragCell) {
                                return false
                            }
                            if (this._isMasterDetailCell($cell)) {
                                return true
                            }
                            if (visibleColumnCount > columnIndex && isValidGroupSpaceColumn()) {
                                const rowItems = this._dataController.items();
                                const visibleRowIndex = this._rowsView.getRowIndex($row);
                                const row = rowItems[visibleRowIndex];
                                const isCellEditing = editingController && this._isCellEditMode() && editingController.isEditing();
                                const isRowEditingInCurrentRow = editingController && editingController.isEditRow(visibleRowIndex);
                                const isEditing = isRowEditingInCurrentRow || isCellEditing;
                                if (column.command) {
                                    if (this._isLegacyNavigation()) {
                                        return !isEditing && "expand" === column.command
                                    }
                                    if (isCellEditing) {
                                        return false
                                    }
                                    if (isRowEditingInCurrentRow) {
                                        return "select" !== column.command
                                    }
                                    return !isEditing
                                }
                                if (isCellEditing && row && "data" !== row.rowType) {
                                    return false
                                }
                                return !isEditing || column.allowEditing || isClick
                            }
                        }
                    };
                    _proto.getFirstValidCellInRow = function($row, columnIndex) {
                        const that = this;
                        const $cells = $row.find("> td");
                        let $cell;
                        let $result;
                        columnIndex = columnIndex || 0;
                        for (let i = columnIndex; i < $cells.length; ++i) {
                            $cell = $cells.eq(i);
                            if (that._isCellValid($cell)) {
                                $result = $cell;
                                break
                            }
                        }
                        return $result
                    };
                    _proto._getNextCell = function(keyCode, elementType, cellPosition) {
                        const focusedCellPosition = cellPosition || this._focusedCellPosition;
                        const isRowFocusType = this.isRowFocusType();
                        const includeCommandCells = isRowFocusType || ["next", "previous"].includes(keyCode);
                        let $cell;
                        let $row;
                        if (this._focusedView && focusedCellPosition) {
                            const newFocusedCellPosition = this._getNewPositionByCode(focusedCellPosition, elementType, keyCode);
                            $cell = (0, _renderer.default)(this._getCell(newFocusedCellPosition));
                            const isLastCellOnDirection = "previous" === keyCode ? this._isFirstValidCell(newFocusedCellPosition) : this._isLastValidCell(newFocusedCellPosition);
                            if ((0, _m_keyboard_navigation_utils.isElementDefined)($cell) && !this._isCellValid($cell) && this._isCellInRow(newFocusedCellPosition, includeCommandCells) && !isLastCellOnDirection) {
                                if (isRowFocusType) {
                                    $cell = this.getFirstValidCellInRow($cell.parent(), newFocusedCellPosition.columnIndex)
                                } else {
                                    $cell = this._getNextCell(keyCode, "cell", newFocusedCellPosition)
                                }
                            }
                            $row = (0, _m_keyboard_navigation_utils.isElementDefined)($cell) && $cell.parent();
                            if (this._hasSkipRow($row)) {
                                const rowIndex = this._getRowIndex($row);
                                if (!this._isLastRow(rowIndex)) {
                                    $cell = this._getNextCell(keyCode, "row", {
                                        columnIndex: focusedCellPosition.columnIndex,
                                        rowIndex: rowIndex
                                    })
                                } else {
                                    return null
                                }
                            }
                            return (0, _m_keyboard_navigation_utils.isElementDefined)($cell) ? $cell : null
                        }
                        return null
                    };
                    _proto._startEditing = function(eventArgs, fastEditingKey) {
                        const focusedCellPosition = this._focusedCellPosition;
                        const visibleRowIndex = this.getVisibleRowIndex();
                        const visibleColumnIndex = this.getVisibleColumnIndex();
                        const row = this._dataController.items()[visibleRowIndex];
                        const column = this._columnsController.getVisibleColumns()[visibleColumnIndex];
                        if (this._isAllowEditing(row, column)) {
                            if (this._isRowEditMode()) {
                                this._editingController.editRow(visibleRowIndex)
                            } else if (focusedCellPosition) {
                                this._startEditCell(eventArgs, fastEditingKey)
                            }
                        }
                    };
                    _proto._isAllowEditing = function(row, column) {
                        return this._editingController.allowUpdating({
                            row: row
                        }) && column && column.allowEditing
                    };
                    _proto._editFocusedCell = function() {
                        const rowIndex = this.getVisibleRowIndex();
                        const colIndex = this.getVisibleColumnIndex();
                        return this._editingController.editCell(rowIndex, colIndex)
                    };
                    _proto._startEditCell = function(eventArgs, fastEditingKey) {
                        this._fastEditingStarted = (0, _type.isDefined)(fastEditingKey);
                        const editResult = this._editFocusedCell();
                        const isEditResultDeferred = (0, _type.isDeferred)(editResult);
                        const isFastEditingStarted = this._isFastEditingStarted();
                        if (!isFastEditingStarted || !isEditResultDeferred && !editResult) {
                            return
                        }
                        const editorValue = isEditResultDeferred && fastEditingKey === _const2.FAST_EDITING_DELETE_KEY ? "" : fastEditingKey;
                        const editResultDeferred = isEditResultDeferred ? editResult : (0, _deferred.Deferred)().resolve();
                        const waitTemplatesDeferred = this._rowsView.waitAsyncTemplates(true);
                        (0, _deferred.when)(editResultDeferred, waitTemplatesDeferred).done(() => {
                            this._editingCellHandler(eventArgs, editorValue)
                        })
                    };
                    _proto._editingCellHandler = function(eventArgs, editorValue) {
                        var _a, _b;
                        const $input = this._getFocusedCell().find(_const2.INTERACTIVE_ELEMENTS_SELECTOR).eq(0);
                        const $inputElement = $input.get(0);
                        if (!$inputElement) {
                            return
                        }
                        const keyDownEvent = (0, _index.createEvent)(eventArgs, {
                            type: "keydown",
                            target: $inputElement
                        });
                        const keyPressEvent = (0, _index.createEvent)(eventArgs, {
                            type: "keypress",
                            target: $inputElement
                        });
                        const inputEvent = (0, _index.createEvent)(eventArgs, {
                            type: "input",
                            target: $inputElement
                        });
                        if (inputEvent.originalEvent) {
                            inputEvent.originalEvent = (0, _index.createEvent)(inputEvent.originalEvent, {
                                data: editorValue
                            })
                        }
                        null === (_b = (_a = $inputElement).select) || void 0 === _b ? void 0 : _b.call(_a);
                        _events_engine.default.trigger($input, keyDownEvent);
                        if (!keyDownEvent.isDefaultPrevented()) {
                            _events_engine.default.trigger($input, keyPressEvent);
                            if (!keyPressEvent.isDefaultPrevented()) {
                                const timeout = _browser.default.mozilla ? 25 : 0;
                                setTimeout(() => {
                                    const inputValue = this._getKeyPressInputValue($input, editorValue);
                                    $input.val(inputValue);
                                    const $widgetContainer = $input.closest(".".concat(_const2.WIDGET_CLASS));
                                    _events_engine.default.off($widgetContainer, "focusout");
                                    _events_engine.default.one($widgetContainer, "focusout", () => {
                                        _events_engine.default.trigger($input, "change")
                                    });
                                    _events_engine.default.trigger($input, inputEvent)
                                }, timeout)
                            }
                        }
                    };
                    _proto._getKeyPressInputValue = function($input, editorValue) {
                        const inputCurrentValue = $input.val();
                        return "-" === editorValue && "-0" === inputCurrentValue ? "-0" : editorValue
                    };
                    _proto._fireFocusChangingEvents = function($event, $cell, fireRowEvent, isHighlighted) {
                        var _a;
                        let args = {};
                        const cellPosition = null !== (_a = this._getCellPosition($cell)) && void 0 !== _a ? _a : {};
                        if (this.isCellFocusType()) {
                            args = this._fireFocusedCellChanging($event, $cell, isHighlighted);
                            if (!args.cancel) {
                                cellPosition.columnIndex = args.newColumnIndex;
                                cellPosition.rowIndex = args.newRowIndex;
                                isHighlighted = args.isHighlighted;
                                $cell = (0, _renderer.default)(this._getCell(cellPosition))
                            }
                        }
                        if (!args.cancel && fireRowEvent && $cell) {
                            args = this._fireFocusedRowChanging($event, $cell.parent());
                            if (!args.cancel) {
                                cellPosition.rowIndex = args.newRowIndex;
                                args.isHighlighted = isHighlighted
                            }
                        }
                        args.$newCellElement = (0, _renderer.default)(this._getCell(cellPosition));
                        if (!args.$newCellElement.length) {
                            args.$newCellElement = $cell
                        }
                        return args
                    };
                    _proto._fireFocusedCellChanging = function($event, $cellElement, isHighlighted) {
                        const prevColumnIndex = this.option("focusedColumnIndex");
                        const prevRowIndex = this.option("focusedRowIndex");
                        const cellPosition = this._getCellPosition($cellElement);
                        const columnIndex = cellPosition ? cellPosition.columnIndex : -1;
                        const rowIndex = cellPosition ? cellPosition.rowIndex : -1;
                        const visibleRows = this._dataController.getVisibleRows();
                        const visibleColumns = this._columnsController.getVisibleColumns();
                        const args = {
                            cellElement: $cellElement,
                            prevColumnIndex: prevColumnIndex,
                            prevRowIndex: prevRowIndex,
                            newColumnIndex: columnIndex,
                            newRowIndex: rowIndex,
                            rows: visibleRows,
                            columns: visibleColumns,
                            event: $event,
                            isHighlighted: isHighlighted || false,
                            cancel: false
                        };
                        this._canceledCellPosition = null;
                        this.executeAction("onFocusedCellChanging", args);
                        if (args.newColumnIndex !== columnIndex || args.newRowIndex !== rowIndex) {
                            args.$newCellElement = (0, _renderer.default)(this._getCell({
                                columnIndex: args.newColumnIndex,
                                rowIndex: args.newRowIndex
                            }))
                        }
                        if (args.cancel) {
                            this._canceledCellPosition = {
                                rowIndex: rowIndex,
                                columnIndex: columnIndex
                            }
                        }
                        return args
                    };
                    _proto._fireFocusedCellChanged = function($cell) {
                        const columnIndex = this._rowsView.getCellIndex($cell);
                        const rowOptions = null === $cell || void 0 === $cell ? void 0 : $cell.parent().data("options");
                        const focusedRowKey = null === rowOptions || void 0 === rowOptions ? void 0 : rowOptions.key;
                        this._memoFireFocusedCellChanged(focusedRowKey, columnIndex)
                    };
                    _proto._memoFireFocusedCellChanged = function(rowKey, columnIndex) {
                        const $cell = this._getFocusedCell();
                        const rowIndex = this._getRowIndex(null === $cell || void 0 === $cell ? void 0 : $cell.parent());
                        const localRowIndex = Math.min(rowIndex - this._dataController.getRowIndexOffset(), this._dataController.items().length - 1);
                        const isEditingCell = this._editingController.isEditCell(localRowIndex, columnIndex);
                        if (isEditingCell) {
                            return
                        }
                        const row = this._dataController.items()[localRowIndex];
                        const column = this._columnsController.getVisibleColumns()[columnIndex];
                        this.executeAction("onFocusedCellChanged", {
                            cellElement: $cell ? (0, _element.getPublicElement)($cell) : void 0,
                            columnIndex: columnIndex,
                            rowIndex: rowIndex,
                            row: row,
                            column: column
                        })
                    };
                    _proto._fireFocusedRowChanging = function(eventArgs, $newFocusedRow) {
                        const newRowIndex = this._getRowIndex($newFocusedRow);
                        const prevFocusedRowIndex = this.option("focusedRowIndex");
                        const loadingOperationTypes = this._dataController.loadingOperationTypes();
                        const args = {
                            rowElement: $newFocusedRow,
                            prevRowIndex: prevFocusedRowIndex,
                            newRowIndex: newRowIndex,
                            event: eventArgs,
                            rows: this._dataController.getVisibleRows(),
                            cancel: false
                        };
                        const loadingOperations = loadingOperationTypes.sorting || loadingOperationTypes.grouping || loadingOperationTypes.filtering || loadingOperationTypes.paging;
                        if (!this._dataController || this._dataController.isLoading() && loadingOperations) {
                            args.cancel = true;
                            return args
                        }
                        if (this.option("focusedRowEnabled")) {
                            this.executeAction("onFocusedRowChanging", args);
                            if (!args.cancel && args.newRowIndex !== newRowIndex) {
                                args.resetFocusedRow = args.newRowIndex < 0;
                                if (!args.resetFocusedRow) {
                                    this.setFocusedRowIndex(args.newRowIndex)
                                }
                                args.rowIndexChanged = true
                            }
                        }
                        return args
                    };
                    _proto._fireFocusedRowChanged = function() {
                        var _a;
                        const focusedRowEnabled = this.option("focusedRowEnabled");
                        const focusedRowKey = this.option("focusedRowKey");
                        const focusedRowIndex = null === (_a = this._focusController) || void 0 === _a ? void 0 : _a.getFocusedRowIndexByKey(focusedRowKey);
                        if (!focusedRowEnabled || (0, _type.isDefined)(focusedRowKey) && focusedRowIndex < 0) {
                            return
                        }
                        this._memoFireFocusedRowChanged(focusedRowKey, focusedRowIndex)
                    };
                    _proto._memoFireFocusedRowChanged = function(focusedRowKey, focusedRowIndex) {
                        const localRowIndex = focusedRowIndex - this._dataController.getRowIndexOffset();
                        this.executeAction("onFocusedRowChanged", {
                            rowElement: focusedRowIndex < 0 ? void 0 : this._rowsView.getRowElement(localRowIndex),
                            rowIndex: focusedRowIndex,
                            row: focusedRowIndex < 0 ? void 0 : this._dataController.getVisibleRows()[localRowIndex]
                        })
                    };
                    _proto._isEventInCurrentGrid = function(event) {
                        return _m_utils.default.isElementInCurrentGrid(this, (0, _renderer.default)(event.target))
                    };
                    _proto._isRowEditMode = function() {
                        const editMode = this._editingController.getEditMode();
                        return editMode === _const.EDIT_MODE_ROW || editMode === _const.EDIT_MODE_FORM
                    };
                    _proto._isCellEditMode = function() {
                        const editMode = this._editingController.getEditMode();
                        return editMode === _const.EDIT_MODE_CELL || editMode === _const.EDIT_MODE_BATCH
                    };
                    _proto._isFastEditingAllowed = function() {
                        return this._isCellEditMode() && this.option("keyboardNavigation.editOnKeyPress")
                    };
                    _proto._getInteractiveElement = function($cell, isLast) {
                        const $focusedElement = $cell.find(_const2.INTERACTIVE_ELEMENTS_SELECTOR).filter(":visible");
                        return isLast ? $focusedElement.last() : $focusedElement.first()
                    };
                    _proto._applyTabIndexToElement = function($element) {
                        var _a;
                        const tabIndex = null !== (_a = this.option("tabIndex")) && void 0 !== _a ? _a : 0;
                        $element.attr("tabindex", tabIndex)
                    };
                    _proto._getCell = function(cellPosition) {
                        if (this._focusedView && cellPosition) {
                            const rowIndexOffset = this._dataController.getRowIndexOffset();
                            const column = this._columnsController.getVisibleColumns(null, true)[cellPosition.columnIndex];
                            const columnIndexOffset = column && column.fixed ? this._getFixedColumnIndexOffset(column) : this._columnsController.getColumnIndexOffset();
                            const rowIndex = cellPosition.rowIndex >= 0 ? cellPosition.rowIndex - rowIndexOffset : -1;
                            const columnIndex = cellPosition.columnIndex >= 0 ? cellPosition.columnIndex - columnIndexOffset : -1;
                            return this._focusedView.getCell({
                                rowIndex: rowIndex,
                                columnIndex: columnIndex
                            })
                        }
                    };
                    _proto._getRowIndex = function($row) {
                        let rowIndex = this._rowsView.getRowIndex($row);
                        if (rowIndex >= 0) {
                            rowIndex += this._dataController.getRowIndexOffset()
                        }
                        return rowIndex
                    };
                    _proto._hasSkipRow = function($row) {
                        const row = $row && $row.get(0);
                        return row && ("none" === row.style.display || (0, _m_keyboard_navigation_utils.isDetailRow)($row) && !$row.hasClass(this.addWidgetPrefix(_const.EDIT_FORM_CLASS)))
                    };
                    _proto._allowEditingOnEnterKey = function() {
                        return "startEdit" === this.option("keyboardNavigation.enterKeyAction")
                    };
                    _proto._isLegacyNavigation = function() {
                        return this.option("useLegacyKeyboardNavigation")
                    };
                    _proto._getDirectionCodeByKey = function(key) {
                        let directionCode;
                        switch (key) {
                            case "upArrow":
                                directionCode = "prevRow";
                                break;
                            case "downArrow":
                                directionCode = "nextRow";
                                break;
                            case "leftArrow":
                                directionCode = this.option("rtlEnabled") ? "nextInRow" : "previousInRow";
                                break;
                            case "rightArrow":
                                directionCode = this.option("rtlEnabled") ? "previousInRow" : "nextInRow"
                        }
                        return directionCode
                    };
                    _proto._isVirtualScrolling = function() {
                        const scrollingMode = this.option("scrolling.mode");
                        return "virtual" === scrollingMode || "infinite" === scrollingMode
                    };
                    _proto._isVirtualRowRender = function() {
                        return this._isVirtualScrolling() || _m_utils.default.isVirtualRowRendering(this)
                    };
                    _proto._isVirtualColumnRender = function() {
                        return "virtual" === this.option("scrolling.columnRenderingMode")
                    };
                    _proto._scrollBy = function(left, top, rowIndex, $event) {
                        const that = this;
                        const scrollable = this._rowsView.getScrollable();
                        if (that._focusedCellPosition) {
                            const scrollHandler = function() {
                                scrollable.off("scroll", scrollHandler);
                                setTimeout(that.restoreFocusableElement.bind(that, rowIndex, $event))
                            };
                            scrollable.on("scroll", scrollHandler)
                        }
                        return scrollable.scrollBy({
                            left: left,
                            top: top
                        })
                    };
                    _proto._isInsideEditForm = function(element) {
                        const $editForm = (0, _renderer.default)(element).closest(".".concat(this.addWidgetPrefix(_const.EDIT_FORM_CLASS)));
                        return $editForm.length && this.elementIsInsideGrid($editForm)
                    };
                    _proto._isMasterDetailCell = function(element) {
                        const $masterDetailCell = (0, _renderer.default)(element).closest(".".concat(_const2.MASTER_DETAIL_CELL_CLASS));
                        return $masterDetailCell.length && this.elementIsInsideGrid($masterDetailCell)
                    };
                    _proto._processNextCellInMasterDetail = function($nextCell, _$cell) {
                        if (!this._isInsideEditForm($nextCell) && $nextCell) {
                            this._applyTabIndexToElement($nextCell)
                        }
                    };
                    _proto._handleTabKeyOnMasterDetailCell = function(target, direction) {
                        if (this._isMasterDetailCell(target)) {
                            this._updateFocusedCellPosition((0, _renderer.default)(target), direction);
                            const $nextCell = this._getNextCell(direction, "row");
                            this._processNextCellInMasterDetail($nextCell, (0, _renderer.default)(target));
                            return true
                        }
                        return false
                    };
                    _proto._getElementType = function(target) {
                        return (0, _renderer.default)(target).is("tr") ? "row" : "cell"
                    };
                    _proto._isFastEditingStarted = function() {
                        return this._isFastEditingAllowed() && this._fastEditingStarted
                    };
                    _proto._getVisibleColumnCount = function() {
                        return this._columnsController.getVisibleColumns(null, true).length
                    };
                    _proto._isCellInRow = function(cellPosition, includeCommandCells) {
                        const {
                            columnIndex: columnIndex
                        } = cellPosition;
                        const visibleColumnsCount = this._getVisibleColumnCount();
                        return includeCommandCells ? columnIndex >= 0 && columnIndex <= visibleColumnsCount - 1 : columnIndex > 0 && columnIndex < visibleColumnsCount - 1
                    };
                    _proto._isCellElement = function($element) {
                        return $element.length && "TD" === $element[0].tagName
                    };
                    _proto._getCellElementFromTarget = function(target) {
                        const elementType = this._getElementType(target);
                        const $targetElement = (0, _renderer.default)(target);
                        let $cell;
                        if ("cell" === elementType) {
                            $cell = $targetElement.closest(".".concat(_const.ROW_CLASS, " > td"))
                        } else {
                            $cell = $targetElement.children().not(".".concat(_const2.COMMAND_EXPAND_CLASS)).first()
                        }
                        return $cell
                    };
                    _proto._getRowsViewElement = function() {
                        var _a;
                        return null === (_a = this._rowsView) || void 0 === _a ? void 0 : _a.element()
                    };
                    _proto.isKeyboardEnabled = function() {
                        return this.option("keyboardNavigation.enabled")
                    };
                    _proto._processCanceledEditCellPosition = function(rowIndex, columnIndex) {
                        if (this._canceledCellPosition) {
                            const isCanceled = this._canceledCellPosition.rowIndex === rowIndex && this._canceledCellPosition.columnIndex === columnIndex;
                            this._canceledCellPosition = null;
                            return isCanceled
                        }
                        return
                    };
                    _proto.updateFocusedRowIndex = function() {
                        const dataController = this._dataController;
                        const visibleRowIndex = this.getVisibleRowIndex();
                        const visibleItems = dataController.items();
                        const lastVisibleIndex = visibleItems.length ? visibleItems.length - 1 : -1;
                        const rowIndexOffset = dataController.getRowIndexOffset();
                        if (lastVisibleIndex >= 0 && visibleRowIndex > lastVisibleIndex) {
                            this.setFocusedRowIndex(lastVisibleIndex + rowIndexOffset)
                        }
                    };
                    return KeyboardNavigationController
                }(_m_modules.default.ViewController);
                exports.KeyboardNavigationController = KeyboardNavigationController;
                const keyboardNavigationModule = {
                    defaultOptions: () => ({
                        useLegacyKeyboardNavigation: false,
                        keyboardNavigation: {
                            enabled: true,
                            enterKeyAction: "startEdit",
                            enterKeyDirection: "none",
                            editOnKeyPress: false
                        }
                    }),
                    controllers: {
                        keyboardNavigation: KeyboardNavigationController
                    },
                    extenders: {
                        views: {
                            rowsView: {
                                init() {
                                    this.callBase();
                                    this._keyboardController = this.getController("keyboardNavigation")
                                },
                                _rowClick(e) {
                                    const editRowIndex = this.getController("editing").getEditRowIndex();
                                    const isKeyboardEnabled = this._keyboardController.isKeyboardEnabled();
                                    if (editRowIndex === e.rowIndex) {
                                        this._keyboardController.setCellFocusType()
                                    }
                                    const needTriggerPointerEventHandler = ((0, _m_keyboard_navigation_utils.isMobile)() || !isKeyboardEnabled) && this.option("focusedRowEnabled");
                                    if (needTriggerPointerEventHandler) {
                                        this._triggerPointerDownEventHandler(e, !isKeyboardEnabled)
                                    }
                                    this.callBase.apply(this, arguments)
                                },
                                _triggerPointerDownEventHandler(e, force) {
                                    const {
                                        originalEvent: originalEvent
                                    } = e.event;
                                    if (originalEvent) {
                                        const $cell = (0, _renderer.default)(originalEvent.target);
                                        const columnIndex = this.getCellIndex($cell);
                                        const column = this.getController("columns").getVisibleColumns()[columnIndex];
                                        const row = this.getController("data").items()[e.rowIndex];
                                        if (this._keyboardController._isAllowEditing(row, column) || force) {
                                            const eventArgs = (0, _index.createEvent)(originalEvent, {
                                                currentTarget: originalEvent.target
                                            });
                                            this._keyboardController._pointerEventHandler(eventArgs)
                                        }
                                    }
                                },
                                renderFocusState(params) {
                                    const {
                                        preventScroll: preventScroll,
                                        pageSizeChanged: pageSizeChanged
                                    } = null !== params && void 0 !== params ? params : {};
                                    const $rowsViewElement = this.element();
                                    if ($rowsViewElement && !(0, _selectors.focused)($rowsViewElement)) {
                                        $rowsViewElement.attr("tabindex", null)
                                    }
                                    pageSizeChanged && this._keyboardController.updateFocusedRowIndex();
                                    let rowIndex = this._keyboardController.getVisibleRowIndex();
                                    if (!(0, _type.isDefined)(rowIndex) || rowIndex < 0) {
                                        rowIndex = 0
                                    }
                                    const cellElements = this.getCellElements(rowIndex);
                                    if (this._keyboardController.isKeyboardEnabled() && (null === cellElements || void 0 === cellElements ? void 0 : cellElements.length)) {
                                        this.updateFocusElementTabIndex(cellElements, preventScroll)
                                    }
                                },
                                updateFocusElementTabIndex(cellElements) {
                                    const $row = cellElements.eq(0).parent();
                                    if ((0, _m_keyboard_navigation_utils.isGroupRow)($row)) {
                                        this._keyboardController._applyTabIndexToElement($row)
                                    } else {
                                        let columnIndex = this._keyboardController.getColumnIndex();
                                        if (!(0, _type.isDefined)(columnIndex) || columnIndex < 0) {
                                            columnIndex = 0
                                        }
                                        this._updateFocusedCellTabIndex(cellElements, columnIndex)
                                    }
                                },
                                _updateFocusedCellTabIndex(cellElements, columnIndex) {
                                    const keyboardController = this._keyboardController;
                                    const cellElementsLength = cellElements ? cellElements.length : -1;
                                    const updateCellTabIndex = function($cell) {
                                        const isMasterDetailCell = keyboardController._isMasterDetailCell($cell);
                                        const isValidCell = keyboardController._isCellValid($cell);
                                        if (!isMasterDetailCell && isValidCell && keyboardController._isCellElement($cell)) {
                                            keyboardController._applyTabIndexToElement($cell);
                                            keyboardController.setCellFocusType();
                                            return true
                                        }
                                        return
                                    };
                                    const $cell = _dom.GridCoreKeyboardNavigationDom.getCellToFocus(cellElements, columnIndex);
                                    if ($cell.length) {
                                        updateCellTabIndex($cell)
                                    } else {
                                        if (cellElementsLength <= columnIndex) {
                                            columnIndex = cellElementsLength - 1
                                        }
                                        for (let i = columnIndex; i < cellElementsLength; ++i) {
                                            if (updateCellTabIndex((0, _renderer.default)(cellElements[i]))) {
                                                break
                                            }
                                        }
                                    }
                                },
                                renderDelayedTemplates(change) {
                                    this.callBase.apply(this, arguments);
                                    this._renderFocusByChange(change)
                                },
                                _renderFocusByChange(change) {
                                    var _a;
                                    const {
                                        operationTypes: operationTypes,
                                        repaintChangesOnly: repaintChangesOnly
                                    } = null !== change && void 0 !== change ? change : {};
                                    const {
                                        fullReload: fullReload,
                                        pageSize: pageSize
                                    } = null !== operationTypes && void 0 !== operationTypes ? operationTypes : {};
                                    const hasInsertsOrRemoves = !!(null === (_a = null === change || void 0 === change ? void 0 : change.changeTypes) || void 0 === _a ? void 0 : _a.find(changeType => "insert" === changeType || "remove" === changeType));
                                    if (!change || !repaintChangesOnly || fullReload || pageSize || hasInsertsOrRemoves) {
                                        const preventScroll = (0, _m_keyboard_navigation_utils.shouldPreventScroll)(this);
                                        this.renderFocusState({
                                            preventScroll: preventScroll,
                                            pageSizeChanged: pageSize
                                        })
                                    }
                                },
                                _renderCore(change) {
                                    const deferred = this.callBase.apply(this, arguments);
                                    this._renderFocusByChange(change);
                                    return deferred
                                },
                                _editCellPrepared($cell) {
                                    var _a;
                                    const editorInstance = this._getEditorInstance($cell);
                                    const isEditingNavigationMode = null === (_a = this._keyboardController) || void 0 === _a ? void 0 : _a._isFastEditingStarted();
                                    if (editorInstance && isEditingNavigationMode) {
                                        this._handleEditingNavigationMode(editorInstance)
                                    }
                                    this.callBase.apply(this, arguments)
                                },
                                _handleEditingNavigationMode(editorInstance) {
                                    ["downArrow", "upArrow"].forEach(keyName => {
                                        const originalKeyHandler = editorInstance._supportedKeys()[keyName];
                                        editorInstance.registerKeyHandler(keyName, e => {
                                            const isDropDownOpened = "true" === editorInstance._input().attr("aria-expanded");
                                            if (isDropDownOpened) {
                                                return originalKeyHandler && originalKeyHandler.call(editorInstance, e)
                                            }
                                        })
                                    });
                                    editorInstance.registerKeyHandler("leftArrow", _common.noop);
                                    editorInstance.registerKeyHandler("rightArrow", _common.noop);
                                    const isDateBoxWithMask = editorInstance.NAME === _const2.DATEBOX_WIDGET_NAME && editorInstance.option("useMaskBehavior");
                                    if (isDateBoxWithMask) {
                                        editorInstance.registerKeyHandler("enter", _common.noop)
                                    }
                                },
                                _getEditorInstance($cell) {
                                    const $editor = $cell.find(".dx-texteditor").eq(0);
                                    return _m_utils.default.getWidgetInstance($editor)
                                }
                            }
                        },
                        controllers: {
                            editing: {
                                editCell(rowIndex, columnIndex) {
                                    const keyboardController = this.getController("keyboardNavigation");
                                    if (keyboardController._processCanceledEditCellPosition(rowIndex, columnIndex)) {
                                        return false
                                    }
                                    const isCellEditing = this.callBase(rowIndex, columnIndex);
                                    if (isCellEditing) {
                                        keyboardController.setupFocusedView()
                                    }
                                    return isCellEditing
                                },
                                editRow(rowIndex) {
                                    const keyboardController = this.getController("keyboardNavigation");
                                    const visibleColumnIndex = keyboardController.getVisibleColumnIndex();
                                    const column = this._columnsController.getVisibleColumns()[visibleColumnIndex];
                                    if (column && column.type || this.option("editing.mode") === _const.EDIT_MODE_FORM) {
                                        keyboardController._resetFocusedCell()
                                    }
                                    this.callBase(rowIndex)
                                },
                                addRow(parentKey) {
                                    const keyboardController = this.getController("keyboardNavigation");
                                    keyboardController.setupFocusedView();
                                    keyboardController.setCellFocusType();
                                    return this.callBase.apply(this, arguments)
                                },
                                getFocusedCellInRow(rowIndex) {
                                    const keyboardNavigationController = this.getController("keyboardNavigation");
                                    let $cell = this.callBase(rowIndex);
                                    const rowIndexOffset = this._dataController.getRowIndexOffset();
                                    const focusedRowIndex = keyboardNavigationController._focusedCellPosition.rowIndex - rowIndexOffset;
                                    if (keyboardNavigationController.isKeyboardEnabled() && focusedRowIndex === rowIndex) {
                                        const $focusedCell = keyboardNavigationController._getFocusedCell();
                                        if ((0, _m_keyboard_navigation_utils.isElementDefined)($focusedCell) && !$focusedCell.hasClass(_const2.COMMAND_EDIT_CLASS)) {
                                            $cell = $focusedCell
                                        }
                                    }
                                    return $cell
                                },
                                _processCanceledEditingCell() {
                                    this.closeEditCell().done(() => {
                                        const keyboardNavigation = this.getController("keyboardNavigation");
                                        keyboardNavigation._updateFocus()
                                    })
                                },
                                init() {
                                    this.callBase();
                                    this._keyboardNavigationController = this.getController("keyboardNavigation")
                                },
                                closeEditCell() {
                                    const keyboardNavigation = this._keyboardNavigationController;
                                    keyboardNavigation._fastEditingStarted = false;
                                    const result = this.callBase.apply(this, arguments);
                                    keyboardNavigation._updateFocus();
                                    return result
                                },
                                _delayedInputFocus() {
                                    this._keyboardNavigationController._isNeedScroll = true;
                                    this.callBase.apply(this, arguments)
                                },
                                _isEditingStart() {
                                    const keyboardNavigation = this.getController("keyboardNavigation");
                                    const cancel = this.callBase.apply(this, arguments);
                                    if (cancel && !keyboardNavigation._isNeedFocus) {
                                        const $cell = keyboardNavigation._getFocusedCell();
                                        keyboardNavigation._focus($cell, true)
                                    }
                                    return cancel
                                }
                            },
                            data: {
                                _correctRowIndices(getRowIndexCorrection) {
                                    const keyboardNavigationController = this.getController("keyboardNavigation");
                                    const editorFactory = this.getController("editorFactory");
                                    const focusedCellPosition = keyboardNavigationController._focusedCellPosition;
                                    this.callBase.apply(this, arguments);
                                    if (focusedCellPosition && focusedCellPosition.rowIndex >= 0) {
                                        const focusedRowIndexCorrection = getRowIndexCorrection(focusedCellPosition.rowIndex);
                                        if (focusedRowIndexCorrection) {
                                            focusedCellPosition.rowIndex += focusedRowIndexCorrection;
                                            editorFactory.refocus()
                                        }
                                    }
                                },
                                getMaxRowIndex() {
                                    let result = this.items().length - 1;
                                    const virtualItemsCount = this.virtualItemsCount();
                                    if (virtualItemsCount) {
                                        const rowIndexOffset = this.getRowIndexOffset();
                                        result += rowIndexOffset + virtualItemsCount.end
                                    }
                                    return result
                                }
                            },
                            adaptiveColumns: {
                                _showHiddenCellsInView(_ref) {
                                    let {
                                        viewName: viewName,
                                        $cells: $cells,
                                        isCommandColumn: isCommandColumn
                                    } = _ref;
                                    this.callBase.apply(this, arguments);
                                    viewName === _const2.COLUMN_HEADERS_VIEW && !isCommandColumn && $cells.each((_, cellElement) => {
                                        const $cell = (0, _renderer.default)(cellElement);
                                        (0, _m_keyboard_navigation_utils.isCellInHeaderRow)($cell) && $cell.attr("tabindex", 0)
                                    })
                                },
                                _hideVisibleCellInView(_ref2) {
                                    let {
                                        viewName: viewName,
                                        $cell: $cell,
                                        isCommandColumn: isCommandColumn
                                    } = _ref2;
                                    this.callBase.apply(this, arguments);
                                    if (viewName === _const2.COLUMN_HEADERS_VIEW && !isCommandColumn && (0, _m_keyboard_navigation_utils.isCellInHeaderRow)($cell)) {
                                        $cell.removeAttr("tabindex")
                                    }
                                }
                            },
                            keyboardNavigation: _scrollable_a11y.keyboardNavigationScrollableA11yExtender
                        }
                    }
                };
                exports.keyboardNavigationModule = keyboardNavigationModule
            },
        67250:
            /*!***************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/keyboard_navigation/m_keyboard_navigation_utils.js ***!
              \***************************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.isCellInHeaderRow = function($cell) {
                    return !!$cell.parent(".".concat(_const2.HEADER_ROW_CLASS)).length
                };
                exports.isDataRow = function($row) {
                    return $row && $row.hasClass(_const2.DATA_ROW_CLASS)
                };
                exports.isDetailRow = function($row) {
                    return $row && $row.hasClass(_const2.MASTER_DETAIL_ROW_CLASS)
                };
                exports.isEditorCell = function(that, $cell) {
                    return !that._isRowEditMode() && $cell && !$cell.hasClass(_const2.COMMAND_SELECT_CLASS) && $cell.hasClass(_const.EDITOR_CELL_CLASS)
                };
                exports.isElementDefined = function($element) {
                    return (0, _type.isDefined)($element) && $element.length > 0
                };
                exports.isFixedColumnIndexOffsetRequired = function(that, column) {
                    const rtlEnabled = that.option("rtlEnabled");
                    if (rtlEnabled) {
                        return !("right" === column.fixedPosition || (0, _type.isDefined)(column.command) && !(0, _type.isDefined)(column.fixedPosition))
                    }
                    return !(!(0, _type.isDefined)(column.fixedPosition) || "left" === column.fixedPosition)
                };
                exports.isGroupFooterRow = function($row) {
                    return $row && $row.hasClass("dx-datagrid-group-footer")
                };
                exports.isGroupRow = function($row) {
                    return $row && $row.hasClass(_const2.GROUP_ROW_CLASS)
                };
                exports.isMobile = function() {
                    return "desktop" !== _devices.default.current().deviceType
                };
                exports.isNotFocusedRow = function($row) {
                    return !$row || $row.hasClass(_const2.FREESPACE_ROW_CLASS) || $row.hasClass(_const2.VIRTUAL_ROW_CLASS)
                };
                exports.shouldPreventScroll = function(that) {
                    const keyboardController = that.getController("keyboardNavigation");
                    return keyboardController._isVirtualScrolling() ? that.option("focusedRowIndex") === keyboardController.getRowIndex() : false
                };
                var _devices = (obj = __webpack_require__( /*! ../../../../core/devices */ 20530), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _const = __webpack_require__( /*! ../editing/const */ 72313);
                var _const2 = __webpack_require__( /*! ./const */ 67004)
            },
        91355:
            /*!***************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/keyboard_navigation/scrollable_a11y.js ***!
              \***************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.keyboardNavigationScrollableA11yExtender = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../events/core/events_engine */ 55994));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                exports.keyboardNavigationScrollableA11yExtender = Base => function(_Base) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(ScrollableA11yExtender, _Base);

                    function ScrollableA11yExtender() {
                        return _Base.apply(this, arguments) || this
                    }
                    var _proto = ScrollableA11yExtender.prototype;
                    _proto.init = function() {
                        var _a;
                        _Base.prototype.init.call(this);
                        this.rowsViewFocusOutHandlerContext = null !== (_a = this.rowsViewFocusOutHandlerContext) && void 0 !== _a ? _a : this.rowsViewFocusOutHandler.bind(this)
                    };
                    _proto.subscribeToRowsViewFocusEvent = function() {
                        var _a;
                        _Base.prototype.subscribeToRowsViewFocusEvent.call(this);
                        const $rowsView = null === (_a = this._rowsView) || void 0 === _a ? void 0 : _a.element();
                        _events_engine.default.on($rowsView, "focusout", this.rowsViewFocusOutHandlerContext)
                    };
                    _proto.unsubscribeFromRowsViewFocusEvent = function() {
                        var _a;
                        _Base.prototype.unsubscribeFromRowsViewFocusEvent.call(this);
                        const $rowsView = null === (_a = this._rowsView) || void 0 === _a ? void 0 : _a.element();
                        _events_engine.default.off($rowsView, "focusout", this.rowsViewFocusOutHandlerContext)
                    };
                    _proto.rowsViewFocusHandler = function(event) {
                        const $target = (0, _renderer.default)(event.target);
                        this.translateFocusIfNeed(event, $target);
                        _Base.prototype.rowsViewFocusHandler.call(this, event)
                    };
                    _proto.rowsViewFocusOutHandler = function() {
                        this.makeScrollableFocusableIfNeed()
                    };
                    _proto.translateFocusIfNeed = function(event, $target) {
                        const needTranslateFocus = this.isScrollableNeedFocusable();
                        const isFirstCellFixed = this._isFixedColumn(0);
                        if (!needTranslateFocus || !isFirstCellFixed) {
                            return
                        }
                        const $firstCell = this._rowsView.getCell({
                            rowIndex: 0,
                            columnIndex: 0
                        });
                        const firstCellHasTabIndex = !!$firstCell.attr("tabindex");
                        const notFixedCellIsTarget = $target.is(this._$firstNotFixedCell);
                        if (firstCellHasTabIndex && notFixedCellIsTarget) {
                            event.preventDefault();
                            this._focus($firstCell)
                        }
                    };
                    _proto.renderCompleted = function(e) {
                        this._$firstNotFixedCell = this.getFirstNotFixedCell();
                        this.makeScrollableFocusableIfNeed();
                        _Base.prototype.renderCompleted.call(this, e)
                    };
                    _proto._focus = function($cell, disableFocus, skipFocusEvent) {
                        _Base.prototype._focus.call(this, $cell, disableFocus, skipFocusEvent);
                        this.makeScrollableFocusableIfNeed()
                    };
                    _proto._tabKeyHandler = function(eventArgs, isEditing) {
                        var _a;
                        const isCellPositionDefined = (0, _type.isDefined)(this._focusedCellPosition) && !(0, _type.isEmptyObject)(this._focusedCellPosition);
                        const isOriginalHandlerRequired = !isCellPositionDefined || !eventArgs.shift && this._isLastValidCell(this._focusedCellPosition) || eventArgs.shift && this._isFirstValidCell(this._focusedCellPosition);
                        const isNeedFocusable = this.isScrollableNeedFocusable();
                        if (isOriginalHandlerRequired && isNeedFocusable) {
                            null === (_a = this._$firstNotFixedCell) || void 0 === _a ? void 0 : _a.removeAttr("tabIndex")
                        }
                        _Base.prototype._tabKeyHandler.call(this, eventArgs, isEditing)
                    };
                    _proto.getFirstNotFixedCell = function() {
                        const columns = this._columnsController.getVisibleColumns();
                        const columnIndex = columns.findIndex(_ref => {
                            let {
                                fixed: fixed
                            } = _ref;
                            return !fixed
                        });
                        return -1 === columnIndex ? void 0 : this._rowsView._getCellElement(0, columnIndex)
                    };
                    _proto.isScrollableNeedFocusable = function() {
                        var _a, _b;
                        const hasScrollable = !!this._rowsView.getScrollable();
                        const hasFixedTable = !!(null === (_a = this._rowsView._fixedTableElement) || void 0 === _a ? void 0 : _a.length);
                        const isCellsRendered = !!(null === (_b = this._rowsView.getCellElements(0)) || void 0 === _b ? void 0 : _b.length);
                        return hasScrollable && hasFixedTable && isCellsRendered
                    };
                    _proto.makeScrollableFocusableIfNeed = function() {
                        const needFocusable = this.isScrollableNeedFocusable();
                        if (!needFocusable || !this._$firstNotFixedCell) {
                            return
                        }
                        this._applyTabIndexToElement(this._$firstNotFixedCell)
                    };
                    return ScrollableA11yExtender
                }(Base)
            },
        9130:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/m_accessibility.js ***!
              \*******************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.registerKeyboardAction = void 0;
                var accessibility = function(obj, nodeInterop) {
                    if (!nodeInterop && obj && obj.__esModule) {
                        return obj
                    }
                    if (null === obj || "object" !== typeof obj && "function" !== typeof obj) {
                        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 ("default" !== key && 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
                }(__webpack_require__( /*! ../../../ui/shared/accessibility */ 56756));

                function _getRequireWildcardCache(nodeInterop) {
                    if ("function" !== typeof WeakMap) {
                        return null
                    }
                    var cacheBabelInterop = new WeakMap;
                    var cacheNodeInterop = new WeakMap;
                    return (_getRequireWildcardCache = function(nodeInterop) {
                        return nodeInterop ? cacheNodeInterop : cacheBabelInterop
                    })(nodeInterop)
                }
                exports.registerKeyboardAction = function(viewName, instance, $element, selector, action) {
                    const keyboardController = instance.getController("keyboardNavigation");
                    if (instance.option("useLegacyKeyboardNavigation") || keyboardController && !keyboardController.isKeyboardEnabled()) {
                        return
                    }
                    instance.createAction("onKeyDown");
                    accessibility.registerKeyboardAction(viewName, instance, $element, selector, action, args => {
                        instance.executeAction("onKeyDown", args)
                    })
                }
            },
        1229:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/m_export.js ***!
              \************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.prepareItems = function(items, emptyCell) {
                    const defaultSetter = value => !value ? 1 : value;
                    const resultItems = [];
                    const cols = (items[0] || []).reduce((sum, item) => sum + defaultSetter(item.colspan), 0);
                    const getItem = (items => {
                        let rowIndex = 0;
                        let cellIndex = 0;
                        return () => {
                            const row = items[rowIndex] || [];
                            const item = row[cellIndex++];
                            if (cellIndex >= row.length) {
                                rowIndex++;
                                cellIndex = 0
                            }
                            if (item) {
                                item.colspan = defaultSetter(item.colspan);
                                item.rowspan = defaultSetter(item.rowspan)
                            }
                            return item
                        }
                    })(items);
                    const addItem = (rowIndex, cellIndex, item) => {
                        const row = resultItems[rowIndex] = resultItems[rowIndex] || [];
                        row[cellIndex] = item;
                        if (item.colspan > 1 || item.rowspan > 1) {
                            const clone = (item => (0, _extend.extend)({}, item, emptyCell))(item);
                            for (let c = 1; c < item.colspan; c++) {
                                addItem(rowIndex, cellIndex + c, clone)
                            }
                            for (let r = 1; r < item.rowspan; r++) {
                                for (let c = 0; c < item.colspan; c++) {
                                    addItem(rowIndex + r, cellIndex + c, clone)
                                }
                            }
                        }
                    };
                    let item = getItem();
                    let rowIndex = 0;
                    while (item) {
                        for (let cellIndex = 0; cellIndex < cols; cellIndex++) {
                            if (!item) {
                                break
                            }
                            if (resultItems[rowIndex] && resultItems[rowIndex][cellIndex]) {
                                continue
                            }
                            addItem(rowIndex, cellIndex, item);
                            cellIndex += item.colspan - 1;
                            item = getItem()
                        }
                        rowIndex++
                    }
                    return resultItems
                };
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306)
            },
        15943:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/m_modules.js ***!
              \*************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                exports.processModules = processModules;
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../../core/class */ 38377));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/callbacks */ 44504));
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 20576);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 58201);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../localization/message */ 28109));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.errors */ 96688));
                var _update_views_borders = __webpack_require__( /*! ./views/utils/update_views_borders */ 46958);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const ModuleItem = _class.default.inherit({
                    _endUpdateCore() {},
                    ctor(component) {
                        const that = this;
                        that._updateLockCount = 0;
                        that.component = component;
                        that._actions = {};
                        that._actionConfigs = {};
                        (0, _iterator.each)(this.callbackNames() || [], (function(index, name) {
                            const flags = that.callbackFlags(name) || {};
                            flags.unique = true;
                            flags.syncStrategy = true;
                            that[this] = (0, _callbacks.default)(flags)
                        }))
                    },
                    init() {},
                    callbackNames() {},
                    callbackFlags() {},
                    publicMethods() {},
                    beginUpdate() {
                        this._updateLockCount++
                    },
                    endUpdate() {
                        if (this._updateLockCount > 0) {
                            this._updateLockCount--;
                            if (!this._updateLockCount) {
                                this._endUpdateCore()
                            }
                        }
                    },
                    option(name) {
                        const {
                            component: component
                        } = this;
                        const optionCache = component._optionCache;
                        if (1 === arguments.length && optionCache) {
                            if (!(name in optionCache)) {
                                optionCache[name] = component.option(name)
                            }
                            return optionCache[name]
                        }
                        return component.option.apply(component, arguments)
                    },
                    _silentOption(name, value) {
                        const {
                            component: component
                        } = this;
                        const optionCache = component._optionCache;
                        if (optionCache) {
                            optionCache[name] = value
                        }
                        return component._setOptionWithoutOptionChange(name, value)
                    },
                    localize(name) {
                        const optionCache = this.component._optionCache;
                        if (optionCache) {
                            if (!(name in optionCache)) {
                                optionCache[name] = _message.default.format(name)
                            }
                            return optionCache[name]
                        }
                        return _message.default.format(name)
                    },
                    on() {
                        return this.component.on.apply(this.component, arguments)
                    },
                    off() {
                        return this.component.off.apply(this.component, arguments)
                    },
                    optionChanged(args) {
                        if (args.name in this._actions) {
                            this.createAction(args.name, this._actionConfigs[args.name]);
                            args.handled = true
                        }
                    },
                    getAction(actionName) {
                        return this._actions[actionName]
                    },
                    setAria(name, value, $target) {
                        const target = $target.get(0);
                        const prefix = "role" !== name && "id" !== name ? "aria-" : "";
                        if (target.setAttribute) {
                            target.setAttribute(prefix + name, value)
                        } else {
                            $target.attr(prefix + name, value)
                        }
                    },
                    _createComponent() {
                        return this.component._createComponent.apply(this.component, arguments)
                    },
                    getController(name) {
                        return this.component._controllers[name]
                    },
                    createAction(actionName, config) {
                        if ((0, _type.isFunction)(actionName)) {
                            const action = this.component._createAction(actionName.bind(this), config);
                            return function(e) {
                                action({
                                    event: e
                                })
                            }
                        }
                        this._actions[actionName] = this.component._createActionByOption(actionName, config);
                        this._actionConfigs[actionName] = config;
                        return
                    },
                    executeAction(actionName, options) {
                        const action = this._actions[actionName];
                        return action && action(options)
                    },
                    dispose() {
                        const that = this;
                        (0, _iterator.each)(that.callbackNames() || [], (function() {
                            that[this].empty()
                        }))
                    },
                    addWidgetPrefix(className) {
                        const componentName = this.component.NAME;
                        return "dx-".concat(componentName.slice(2).toLowerCase()).concat(className ? "-".concat(className) : "")
                    },
                    getWidgetContainerClass() {
                        const containerName = "dxDataGrid" === this.component.NAME ? null : "container";
                        return this.addWidgetPrefix(containerName)
                    },
                    elementIsInsideGrid($element) {
                        const $gridElement = $element.closest(".".concat(this.getWidgetContainerClass())).parent();
                        return $gridElement.is(this.component.$element())
                    }
                });
                const Controller = ModuleItem;
                const ViewController = Controller.inherit({
                    getView(name) {
                        return this.component._views[name]
                    },
                    getViews() {
                        return this.component._views
                    }
                });
                const View = ModuleItem.inherit({
                    _isReady() {
                        return this.component.isReady()
                    },
                    _endUpdateCore() {
                        this.callBase();
                        if (!this._isReady() && this._requireReady) {
                            this._requireRender = false;
                            this.component._requireResize = false
                        }
                        if (this._requireRender) {
                            this._requireRender = false;
                            this.render(this._$parent)
                        }
                    },
                    _invalidate(requireResize, requireReady) {
                        this._requireRender = true;
                        this.component._requireResize = (0, _window.hasWindow)() && (this.component._requireResize || requireResize);
                        this._requireReady = this._requireReady || requireReady
                    },
                    _renderCore() {},
                    _resizeCore() {},
                    _parentElement() {
                        return this._$parent
                    },
                    ctor(component) {
                        this.callBase(component);
                        this.renderCompleted = (0, _callbacks.default)();
                        this.resizeCompleted = (0, _callbacks.default)()
                    },
                    element() {
                        return this._$element
                    },
                    getElementHeight() {
                        const $element = this.element();
                        if (!$element) {
                            return 0
                        }
                        const marginTop = parseFloat($element.css("marginTop")) || 0;
                        const marginBottom = parseFloat($element.css("marginBottom")) || 0;
                        const {
                            offsetHeight: offsetHeight
                        } = $element.get(0);
                        return offsetHeight + marginTop + marginBottom
                    },
                    isVisible: () => true,
                    getTemplate(name) {
                        return this.component._getTemplate(name)
                    },
                    getView(name) {
                        return this.component._views[name]
                    },
                    _getBorderedViews() {
                        return {
                            columnHeadersView: this.component._views.columnHeadersView,
                            rowsView: this.component._views.rowsView,
                            filterPanelView: this.component._views.filterPanelView,
                            footerView: this.component._views.footerView
                        }
                    },
                    render($parent, options) {
                        let $element = this._$element;
                        const isVisible = this.isVisible();
                        if (!$element && !$parent) {
                            return
                        }
                        this._requireReady = false;
                        if (!$element) {
                            $element = this._$element = (0, _renderer.default)("<div>").appendTo($parent);
                            this._$parent = $parent
                        }
                        $element.toggleClass("dx-hidden", !isVisible);
                        if (this.component._views) {
                            (0, _update_views_borders.updateViewsBorders)(this.name, this._getBorderedViews())
                        }
                        if (isVisible) {
                            this.component._optionCache = {};
                            const deferred = this._renderCore(options);
                            this.component._optionCache = void 0;
                            if (deferred) {
                                deferred.done(() => {
                                    this.renderCompleted.fire(options)
                                })
                            } else {
                                this.renderCompleted.fire(options)
                            }
                        }
                    },
                    resize() {
                        this.isResizing = true;
                        this._resizeCore();
                        this.resizeCompleted.fire();
                        this.isResizing = false
                    },
                    focus(preventScroll) {
                        this.element().get(0).focus({
                            preventScroll: preventScroll
                        })
                    }
                });

                function getExtendedTypes(types) {
                    let moduleExtenders = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                    const extendTypes = {};
                    Object.entries(moduleExtenders).forEach(_ref => {
                        let [name, extender] = _ref;
                        const currentType = types[name];
                        if (currentType) {
                            if ((0, _type.isFunction)(extender)) {
                                extendTypes[name] = extender(currentType)
                            } else {
                                const classType = currentType;
                                extendTypes[name] = classType.inherit(extender)
                            }
                        }
                    });
                    return extendTypes
                }

                function processModules(componentInstance, componentClass) {
                    const {
                        modules: modules
                    } = componentClass;
                    const {
                        modulesOrder: modulesOrder
                    } = componentClass;

                    function createModuleItems(moduleTypes) {
                        const moduleItems = {};
                        (0, _iterator.each)(moduleTypes, (name, moduleType) => {
                            const moduleItem = new moduleType(componentInstance);
                            moduleItem.name = name;
                            ! function(componentInstance, name, moduleItem) {
                                const publicMethods = moduleItem.publicMethods();
                                if (publicMethods) {
                                    (0, _iterator.each)(publicMethods, (_, methodName) => {
                                        if (moduleItem[methodName]) {
                                            if (!componentInstance[methodName]) {
                                                componentInstance[methodName] = function() {
                                                    return moduleItem[methodName](...arguments)
                                                }
                                            } else {
                                                throw _ui.default.Error("E1005", methodName)
                                            }
                                        } else {
                                            throw _ui.default.Error("E1006", name, methodName)
                                        }
                                    })
                                }
                            }(componentInstance, name, moduleItem);
                            moduleItems[name] = moduleItem
                        });
                        return moduleItems
                    }
                    if (modulesOrder) {
                        modules.sort((module1, module2) => {
                            let orderIndex1 = modulesOrder.indexOf(module1.name);
                            let orderIndex2 = modulesOrder.indexOf(module2.name);
                            if (orderIndex1 < 0) {
                                orderIndex1 = 1e6
                            }
                            if (orderIndex2 < 0) {
                                orderIndex2 = 1e6
                            }
                            return orderIndex1 - orderIndex2
                        })
                    }
                    const rootControllerTypes = {};
                    const rootViewTypes = {};
                    modules.forEach(_ref2 => {
                        let {
                            name: moduleName,
                            controllers: controllers = {},
                            views: views = {}
                        } = _ref2;
                        Object.entries(controllers).forEach(_ref3 => {
                            let [name, type] = _ref3;
                            var _a;
                            if (rootControllerTypes[name]) {
                                throw _ui.default.Error("E1001", moduleName, name)
                            } else if (!(null === (_a = null === type || void 0 === type ? void 0 : type.subclassOf) || void 0 === _a ? void 0 : _a.call(type, Controller))) {
                                throw _ui.default.Error("E1002", moduleName, name)
                            }
                            rootControllerTypes[name] = type
                        });
                        Object.entries(views).forEach(_ref4 => {
                            let [name, type] = _ref4;
                            var _a;
                            if (rootViewTypes[name]) {
                                throw _ui.default.Error("E1003", moduleName, name)
                            } else if (!(null === (_a = null === type || void 0 === type ? void 0 : type.subclassOf) || void 0 === _a ? void 0 : _a.call(type, View))) {
                                throw _ui.default.Error("E1004", moduleName, name)
                            }
                            rootViewTypes[name] = type
                        })
                    });
                    const moduleExtenders = modules.filter(_ref5 => {
                        let {
                            extenders: extenders
                        } = _ref5;
                        return !!extenders
                    });
                    const controllerTypes = moduleExtenders.reduce((types, _ref6) => {
                        let {
                            extenders: extenders
                        } = _ref6;
                        return _extends(_extends({}, types), getExtendedTypes(types, null === extenders || void 0 === extenders ? void 0 : extenders.controllers))
                    }, rootControllerTypes);
                    const viewTypes = moduleExtenders.reduce((types, _ref7) => {
                        let {
                            extenders: extenders
                        } = _ref7;
                        return _extends(_extends({}, types), getExtendedTypes(types, null === extenders || void 0 === extenders ? void 0 : extenders.views))
                    }, rootViewTypes);
                    componentInstance._controllers = createModuleItems(controllerTypes);
                    componentInstance._views = createModuleItems(viewTypes)
                }
                var _default = {
                    modules: [],
                    View: View,
                    ViewController: ViewController,
                    Controller: Controller,
                    registerModule(name, module) {
                        const {
                            modules: modules
                        } = this;
                        for (let i = 0; i < modules.length; i++) {
                            if (modules[i].name === name) {
                                return
                            }
                        }
                        module.name = name;
                        modules.push(module)
                    },
                    registerModulesOrder(moduleNames) {
                        this.modulesOrder = moduleNames
                    },
                    unregisterModule(name) {
                        this.modules = (0, _common.grep)(this.modules, module => module.name !== name)
                    },
                    processModules: processModules,
                    callModuleItemsMethod: function(that, methodName, args) {
                        args = args || [];
                        if (that._controllers) {
                            (0, _iterator.each)(that._controllers, (function() {
                                this[methodName] && this[methodName].apply(this, args)
                            }))
                        }
                        if (that._views) {
                            (0, _iterator.each)(that._views, (function() {
                                this[methodName] && this[methodName].apply(this, args)
                            }))
                        }
                    }
                };
                exports.default = _default
            },
        60082:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/m_utils.js ***!
              \***********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 20576);
                var _data = __webpack_require__( /*! ../../../core/utils/data */ 47617);
                var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 95479);
                var _position = __webpack_require__( /*! ../../../core/utils/position */ 37518);
                var _size = __webpack_require__( /*! ../../../core/utils/size */ 58664);
                var _string = __webpack_require__( /*! ../../../core/utils/string */ 68752);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _variable_wrapper = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/variable_wrapper */ 26974));
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 58201);
                var _data_source = __webpack_require__( /*! ../../../data/data_source/data_source */ 85273);
                var _utils = __webpack_require__( /*! ../../../data/data_source/utils */ 9234);
                var _utils2 = __webpack_require__( /*! ../../../data/utils */ 16454);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../events/core/events_engine */ 55994));
                var _format_helper = _interopRequireDefault(__webpack_require__( /*! ../../../format_helper */ 30343));
                var _load_panel = _interopRequireDefault(__webpack_require__( /*! ../../../ui/load_panel */ 97218));
                var _filtering = _interopRequireDefault(__webpack_require__( /*! ../../../ui/shared/filtering */ 18740));

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const DATE_INTERVAL_SELECTORS = {
                    year: value => value && value.getFullYear(),
                    month: value => value && value.getMonth() + 1,
                    day: value => value && value.getDate(),
                    quarter: value => value && Math.floor(value.getMonth() / 3) + 1,
                    hour: value => value && value.getHours(),
                    minute: value => value && value.getMinutes(),
                    second: value => value && value.getSeconds()
                };
                const getIntervalSelector = function() {
                    const data = arguments[1];
                    const value = this.calculateCellValue(data);
                    if (!(0, _type.isDefined)(value)) {
                        return null
                    }
                    if (isDateType(this.dataType)) {
                        const nameIntervalSelector = arguments[0];
                        return DATE_INTERVAL_SELECTORS[nameIntervalSelector](value)
                    }
                    if ("number" === this.dataType) {
                        const groupInterval = arguments[0];
                        return Math.floor(Number(value) / groupInterval) * groupInterval
                    }
                };
                const equalSelectors = function(selector1, selector2) {
                    if ((0, _type.isFunction)(selector1) && (0, _type.isFunction)(selector2)) {
                        if (selector1.originalCallback && selector2.originalCallback) {
                            return selector1.originalCallback === selector2.originalCallback && selector1.columnIndex === selector2.columnIndex
                        }
                    }
                    return selector1 === selector2
                };

                function isDateType(dataType) {
                    return "date" === dataType || "datetime" === dataType
                }
                const setEmptyText = function($container) {
                    $container.get(0).textContent = "\xa0"
                };
                const normalizeSortingInfo = function(sort) {
                    sort = sort || [];
                    const result = (0, _utils2.normalizeSortingInfo)(sort);
                    for (let i = 0; i < sort.length; i++) {
                        if (sort && sort[i] && void 0 !== sort[i].isExpanded) {
                            result[i].isExpanded = sort[i].isExpanded
                        }
                        if (sort && sort[i] && void 0 !== sort[i].groupInterval) {
                            result[i].groupInterval = sort[i].groupInterval
                        }
                    }
                    return result
                };
                const formatValue = function(value, options) {
                    const valueText = _format_helper.default.format(value, options.format) || value && value.toString() || "";
                    const formatObject = {
                        value: value,
                        valueText: options.getDisplayFormat ? options.getDisplayFormat(valueText) : valueText,
                        target: options.target || "row",
                        groupInterval: options.groupInterval
                    };
                    return options.customizeText ? options.customizeText.call(options, formatObject) : formatObject.valueText
                };
                const getSummaryText = function(summaryItem, summaryTexts) {
                    const displayFormat = summaryItem.displayFormat || summaryItem.columnCaption && summaryTexts["".concat(summaryItem.summaryType, "OtherColumn")] || summaryTexts[summaryItem.summaryType];
                    return formatValue(summaryItem.value, {
                        format: summaryItem.valueFormat,
                        getDisplayFormat: valueText => displayFormat ? (0, _string.format)(displayFormat, valueText, summaryItem.columnCaption) : valueText,
                        customizeText: summaryItem.customizeText
                    })
                };
                const getWidgetInstance = function($element) {
                    const editorData = $element.data && $element.data();
                    const dxComponents = editorData && editorData.dxComponents;
                    const widgetName = dxComponents && dxComponents[0];
                    return widgetName && editorData[widgetName]
                };
                const equalFilterParameters = function(filter1, filter2) {
                    if (Array.isArray(filter1) && Array.isArray(filter2)) {
                        if (filter1.length !== filter2.length) {
                            return false
                        }
                        for (let i = 0; i < filter1.length; i++) {
                            if (!equalFilterParameters(filter1[i], filter2[i])) {
                                return false
                            }
                        }
                        return true
                    }
                    if ((0, _type.isFunction)(filter1) && filter1.columnIndex >= 0 && (0, _type.isFunction)(filter2) && filter2.columnIndex >= 0) {
                        return filter1.columnIndex === filter2.columnIndex && (0, _data.toComparable)(filter1.filterValue) === (0, _data.toComparable)(filter2.filterValue) && (0, _data.toComparable)(filter1.selectedFilterOperation) === (0, _data.toComparable)(filter2.selectedFilterOperation)
                    }
                    return (0, _data.toComparable)(filter1) == (0, _data.toComparable)(filter2)
                };
                var _default = {
                    renderNoDataText($element) {
                        const that = this;
                        $element = $element || this.element();
                        if (!$element) {
                            return
                        }
                        const noDataClass = that.addWidgetPrefix("nodata");
                        let noDataElement = $element.find(".".concat(noDataClass)).last();
                        const isVisible = this._dataController.isEmpty();
                        const isLoading = this._dataController.isLoading();
                        if (!noDataElement.length) {
                            noDataElement = (0, _renderer.default)("<span>").addClass(noDataClass)
                        }
                        if (!noDataElement.parent().is($element)) {
                            noDataElement.appendTo($element)
                        }
                        if (isVisible && !isLoading) {
                            noDataElement.removeClass("dx-hidden").text(that._getNoDataText())
                        } else {
                            noDataElement.addClass("dx-hidden")
                        }
                    },
                    renderLoadPanel($element, $container, isLocalStore) {
                        const that = this;
                        let loadPanelOptions;
                        that._loadPanel && that._loadPanel.$element().remove();
                        loadPanelOptions = that.option("loadPanel");
                        if (loadPanelOptions && ("auto" === loadPanelOptions.enabled ? !isLocalStore : loadPanelOptions.enabled)) {
                            loadPanelOptions = (0, _extend.extend)({
                                shading: false,
                                message: loadPanelOptions.text,
                                container: $container
                            }, loadPanelOptions);
                            that._loadPanel = that._createComponent((0, _renderer.default)("<div>").appendTo($container), _load_panel.default, loadPanelOptions)
                        } else {
                            that._loadPanel = null
                        }
                    },
                    calculateLoadPanelPosition($element) {
                        const $window = (0, _renderer.default)((0, _window.getWindow)());
                        if ((0, _size.getHeight)($element) > (0, _size.getHeight)($window)) {
                            return {
                                of: $window,
                                boundary: $element,
                                collision: "fit"
                            }
                        }
                        return {
                            of: $element
                        }
                    },
                    getIndexByKey(key, items, keyName) {
                        let index = -1;
                        if (void 0 !== key && Array.isArray(items)) {
                            keyName = arguments.length <= 2 ? "key" : keyName;
                            for (let i = 0; i < items.length; i++) {
                                const item = (0, _type.isDefined)(keyName) ? items[i][keyName] : items[i];
                                if ((0, _common.equalByValue)(key, item)) {
                                    index = i;
                                    break
                                }
                            }
                        }
                        return index
                    },
                    combineFilters(filters, operation) {
                        var _a;
                        let resultFilter = [];
                        operation = operation || "and";
                        for (let i = 0; i < filters.length; i++) {
                            if (!filters[i]) {
                                continue
                            }
                            if (1 === (null === (_a = filters[i]) || void 0 === _a ? void 0 : _a.length) && "!" === filters[i][0]) {
                                if ("and" === operation) {
                                    return ["!"]
                                }
                                if ("or" === operation) {
                                    continue
                                }
                            }
                            if (resultFilter.length) {
                                resultFilter.push(operation)
                            }
                            resultFilter.push(filters[i])
                        }
                        if (1 === resultFilter.length) {
                            resultFilter = resultFilter[0]
                        }
                        if (resultFilter.length) {
                            return resultFilter
                        }
                        return
                    },
                    checkChanges(changes, changeNames) {
                        let changesWithChangeNamesCount = 0;
                        for (let i = 0; i < changeNames.length; i++) {
                            if (changes[changeNames[i]]) {
                                changesWithChangeNamesCount++
                            }
                        }
                        return changes.length && changes.length === changesWithChangeNamesCount
                    },
                    equalFilterParameters: equalFilterParameters,
                    proxyMethod(instance, methodName, defaultResult) {
                        if (!instance[methodName]) {
                            instance[methodName] = function() {
                                const dataSource = this._dataSource;
                                return dataSource ? dataSource[methodName].apply(dataSource, arguments) : defaultResult
                            }
                        }
                    },
                    formatValue: formatValue,
                    getFormatOptionsByColumn: (column, target) => ({
                        format: column.format,
                        getDisplayFormat: column.getDisplayFormat,
                        customizeText: column.customizeText,
                        target: target,
                        trueText: column.trueText,
                        falseText: column.falseText
                    }),
                    getDisplayValue(column, value, data, rowType) {
                        if (column.displayValueMap && void 0 !== column.displayValueMap[value]) {
                            return column.displayValueMap[value]
                        }
                        if (column.calculateDisplayValue && data && "group" !== rowType) {
                            return column.calculateDisplayValue(data)
                        }
                        if (column.lookup && !("group" === rowType && (column.calculateGroupValue || column.calculateDisplayValue))) {
                            return column.lookup.calculateCellValue(value)
                        }
                        return value
                    },
                    getGroupRowSummaryText(summaryItems, summaryTexts) {
                        let result = "(";
                        for (let i = 0; i < summaryItems.length; i++) {
                            const summaryItem = summaryItems[i];
                            result += (i > 0 ? ", " : "") + getSummaryText(summaryItem, summaryTexts)
                        }
                        return result + ")"
                    },
                    getSummaryText: getSummaryText,
                    normalizeSortingInfo: normalizeSortingInfo,
                    getFormatByDataType(dataType) {
                        switch (dataType) {
                            case "date":
                                return "shortDate";
                            case "datetime":
                                return "shortDateShortTime";
                            default:
                                return
                        }
                    },
                    getHeaderFilterGroupParameters(column, remoteGrouping) {
                        let result = [];
                        const dataField = column.dataField || column.name;
                        const groupInterval = _filtering.default.getGroupInterval(column);
                        if (groupInterval) {
                            (0, _iterator.each)(groupInterval, (index, interval) => {
                                result.push(remoteGrouping ? {
                                    selector: dataField,
                                    groupInterval: interval,
                                    isExpanded: index < groupInterval.length - 1
                                } : getIntervalSelector.bind(column, interval))
                            });
                            return result
                        }
                        if (remoteGrouping) {
                            result = [{
                                selector: dataField,
                                isExpanded: false
                            }]
                        } else {
                            result = function(data) {
                                let result = column.calculateCellValue(data);
                                if (void 0 === result || "" === result) {
                                    result = null
                                }
                                return result
                            };
                            if (column.sortingMethod) {
                                result = [{
                                    selector: result,
                                    compare: column.sortingMethod.bind(column)
                                }]
                            }
                        }
                        return result
                    },
                    equalSortParameters(sortParameters1, sortParameters2, ignoreIsExpanded) {
                        sortParameters1 = normalizeSortingInfo(sortParameters1);
                        sortParameters2 = normalizeSortingInfo(sortParameters2);
                        if (Array.isArray(sortParameters1) && Array.isArray(sortParameters2)) {
                            if (sortParameters1.length !== sortParameters2.length) {
                                return false
                            }
                            for (let i = 0; i < sortParameters1.length; i++) {
                                if (!equalSelectors(sortParameters1[i].selector, sortParameters2[i].selector) || sortParameters1[i].desc !== sortParameters2[i].desc || sortParameters1[i].groupInterval !== sortParameters2[i].groupInterval || !ignoreIsExpanded && Boolean(sortParameters1[i].isExpanded) !== Boolean(sortParameters2[i].isExpanded)) {
                                    return false
                                }
                            }
                            return true
                        }
                        return (!sortParameters1 || !sortParameters1.length) === (!sortParameters2 || !sortParameters2.length)
                    },
                    getPointsByColumns(items, pointCreated, isVertical, startColumnIndex) {
                        const cellsLength = items.length;
                        let notCreatePoint = false;
                        let item;
                        let offset;
                        let columnIndex = startColumnIndex || 0;
                        const result = [];
                        let rtlEnabled;
                        for (let i = 0; i <= cellsLength; i++) {
                            if (i < cellsLength) {
                                item = items.eq(i);
                                offset = item.offset();
                                rtlEnabled = "rtl" === item.css("direction")
                            }
                            const point = {
                                index: columnIndex,
                                x: offset ? offset.left + (!isVertical && rtlEnabled ^ i === cellsLength ? (0, _position.getBoundingRect)(item[0]).width : 0) : 0,
                                y: offset ? offset.top + (isVertical && i === cellsLength ? (0, _position.getBoundingRect)(item[0]).height : 0) : 0,
                                columnIndex: columnIndex
                            };
                            if (!isVertical && i > 0) {
                                const prevItemOffset = items.eq(i - 1).offset();
                                if (prevItemOffset.top < point.y) {
                                    point.y = prevItemOffset.top
                                }
                            }
                            if (pointCreated) {
                                notCreatePoint = pointCreated(point)
                            }
                            if (!notCreatePoint) {
                                result.push(point)
                            }
                            columnIndex++
                        }
                        return result
                    },
                    getExpandCellTemplate: () => ({
                        allowRenderToDetachedContainer: true,
                        render(container, options) {
                            const $container = (0, _renderer.default)(container);
                            if ((0, _type.isDefined)(options.value) && !(options.data && options.data.isContinuation) && !options.row.isNewRow) {
                                const rowsView = options.component.getView("rowsView");
                                $container.addClass("dx-datagrid-expand").addClass("dx-selection-disabled");
                                (0, _renderer.default)("<div>").addClass(options.value ? "dx-datagrid-group-opened" : "dx-datagrid-group-closed").appendTo($container);
                                rowsView.setAria("label", options.value ? rowsView.localize("dxDataGrid-ariaCollapse") : rowsView.localize("dxDataGrid-ariaExpand"), $container)
                            } else {
                                setEmptyText($container)
                            }
                        }
                    }),
                    setEmptyText: setEmptyText,
                    isDateType: isDateType,
                    getSelectionRange(focusedElement) {
                        try {
                            if (focusedElement) {
                                return {
                                    selectionStart: focusedElement.selectionStart,
                                    selectionEnd: focusedElement.selectionEnd
                                }
                            }
                        } catch (e) {}
                        return {}
                    },
                    setSelectionRange(focusedElement, selectionRange) {
                        try {
                            if (focusedElement && focusedElement.setSelectionRange) {
                                focusedElement.setSelectionRange(selectionRange.selectionStart, selectionRange.selectionEnd)
                            }
                        } catch (e) {}
                    },
                    focusAndSelectElement(component, $element) {
                        const isFocused = $element.is(":focus");
                        _events_engine.default.trigger($element, "focus");
                        const isSelectTextOnEditingStart = component.option("editing.selectTextOnEditStart");
                        const element = $element.get(0);
                        if (!isFocused && isSelectTextOnEditingStart && $element.is(".dx-texteditor-input") && !$element.is("[readonly]")) {
                            const editor = getWidgetInstance($element.closest(".dx-texteditor"));
                            (0, _deferred.when)(editor && editor._loadItemDeferred).done(() => {
                                element.select()
                            })
                        }
                    },
                    getWidgetInstance: getWidgetInstance,
                    getLastResizableColumnIndex(columns, resultWidths) {
                        const hasResizableColumns = columns.some(column => column && !column.command && !column.fixed && false !== column.allowResizing);
                        let lastColumnIndex;
                        for (lastColumnIndex = columns.length - 1; columns[lastColumnIndex]; lastColumnIndex--) {
                            const column = columns[lastColumnIndex];
                            const width = resultWidths && resultWidths[lastColumnIndex];
                            const allowResizing = !hasResizableColumns || false !== column.allowResizing;
                            if (!column.command && !column.fixed && "adaptiveHidden" !== width && allowResizing) {
                                break
                            }
                        }
                        return lastColumnIndex
                    },
                    isElementInCurrentGrid(controller, $element) {
                        if ($element && $element.length) {
                            const $grid = $element.closest(".".concat(controller.getWidgetContainerClass())).parent();
                            return $grid.is(controller.component.$element())
                        }
                        return false
                    },
                    isVirtualRowRendering(that) {
                        const rowRenderingMode = that.option("scrolling.rowRenderingMode");
                        const isVirtualMode = "virtual" === that.option("scrolling.mode");
                        const isAppendMode = "infinite" === that.option("scrolling.mode");
                        if (false === that.option("scrolling.legacyMode") && (isVirtualMode || isAppendMode)) {
                            return true
                        }
                        return "virtual" === rowRenderingMode
                    },
                    getPixelRatio: window => window.devicePixelRatio || 1,
                    getContentHeightLimit(browser) {
                        if (browser.mozilla) {
                            return 8e6
                        }
                        return 15e6 / this.getPixelRatio((0, _window.getWindow)())
                    },
                    normalizeLookupDataSource(lookup) {
                        let lookupDataSourceOptions;
                        if (lookup.items) {
                            lookupDataSourceOptions = lookup.items
                        } else {
                            lookupDataSourceOptions = lookup.dataSource;
                            if ((0, _type.isFunction)(lookupDataSourceOptions) && !_variable_wrapper.default.isWrapped(lookupDataSourceOptions)) {
                                lookupDataSourceOptions = lookupDataSourceOptions({})
                            }
                        }
                        return (0, _utils.normalizeDataSourceOptions)(lookupDataSourceOptions)
                    },
                    getWrappedLookupDataSource(column, dataSource, filter) {
                        if (!dataSource) {
                            return []
                        }
                        const lookupDataSourceOptions = this.normalizeLookupDataSource(column.lookup);
                        if (column.calculateCellValue !== column.defaultCalculateCellValue) {
                            return lookupDataSourceOptions
                        }
                        const hasGroupPaging = dataSource.remoteOperations().groupPaging;
                        const hasLookupOptimization = column.displayField && (0, _type.isString)(column.displayField);
                        let cachedUniqueRelevantItems;
                        let previousTake;
                        let previousSkip;
                        const sliceItems = (items, loadOptions) => {
                            var _a;
                            const start = null !== (_a = loadOptions.skip) && void 0 !== _a ? _a : 0;
                            const end = loadOptions.take ? start + loadOptions.take : items.length;
                            return items.slice(start, end)
                        };
                        const loadUniqueRelevantItems = loadOptions => {
                            const group = function(group) {
                                if (!Array.isArray(group)) {
                                    group = [group]
                                }
                                return group.map((item, i) => {
                                    if ((0, _type.isString)(item)) {
                                        return {
                                            selector: item,
                                            isExpanded: i < group.length - 1
                                        }
                                    }
                                    return item
                                })
                            }(hasLookupOptimization ? [column.dataField, column.displayField] : column.dataField);
                            const d = new _deferred.Deferred;
                            const canUseCache = cachedUniqueRelevantItems && (!hasGroupPaging || loadOptions.skip === previousSkip && loadOptions.take === previousTake);
                            if (canUseCache) {
                                d.resolve(sliceItems(cachedUniqueRelevantItems, loadOptions))
                            } else {
                                previousSkip = loadOptions.skip;
                                previousTake = loadOptions.take;
                                dataSource.load({
                                    filter: filter,
                                    group: group,
                                    take: hasGroupPaging ? loadOptions.take : void 0,
                                    skip: hasGroupPaging ? loadOptions.skip : void 0
                                }).done(items => {
                                    cachedUniqueRelevantItems = items;
                                    d.resolve(hasGroupPaging ? items : sliceItems(items, loadOptions))
                                }).fail(d.fail)
                            }
                            return d
                        };
                        const lookupDataSource = _extends(_extends({}, lookupDataSourceOptions), {
                            __dataGridSourceFilter: filter,
                            load: loadOptions => {
                                const d = new _deferred.Deferred;
                                loadUniqueRelevantItems(loadOptions).done(items => {
                                    if (0 === items.length) {
                                        d.resolve([]);
                                        return
                                    }
                                    const filter = this.combineFilters(items.flatMap(data => data.key).map(key => [column.lookup.valueExpr, key]), "or");
                                    const newDataSource = new _data_source.DataSource(_extends(_extends(_extends({}, lookupDataSourceOptions), loadOptions), {
                                        filter: this.combineFilters([filter, loadOptions.filter], "and"),
                                        paginate: false
                                    }));
                                    newDataSource.load().done(d.resolve).fail(d.fail)
                                }).fail(d.fail);
                                return d
                            },
                            key: column.lookup.valueExpr,
                            byKey(key) {
                                const d = (0, _deferred.Deferred)();
                                this.load({
                                    filter: [column.lookup.valueExpr, "=", key]
                                }).done(arr => {
                                    d.resolve(arr[0])
                                });
                                return d.promise()
                            }
                        });
                        return lookupDataSource
                    },
                    logHeaderFilterDeprecatedWarningIfNeed(component) {
                        const logWarning = component._logDeprecatedOptionWarning.bind(component);
                        if ((0, _type.isDefined)(component.option("headerFilter.allowSearch"))) {
                            logWarning("headerFilter.allowSearch", {
                                since: "23.1",
                                alias: "headerFilter.search.enabled"
                            })
                        }
                        if ((0, _type.isDefined)(component.option("headerFilter.searchTimeout"))) {
                            logWarning("headerFilter.searchTimeout", {
                                since: "23.1",
                                alias: "headerFilter.search.timeout"
                            })
                        }
                        const specificName = "dxPivotGrid" === component.NAME ? "dataSource.fields" : "columns";
                        const columns = component.option(specificName);
                        if (!Array.isArray(columns)) {
                            return
                        }
                        const logSpecificDeprecatedWarningIfNeed = columns => {
                            columns.forEach(column => {
                                var _a;
                                const headerFilter = column.headerFilter || {};
                                if ((0, _type.isDefined)(headerFilter.allowSearch)) {
                                    logWarning("".concat(specificName, "[].headerFilter.allowSearch"), {
                                        since: "23.1",
                                        alias: "".concat(specificName, "[].headerFilter.search.enabled")
                                    })
                                }
                                if ((0, _type.isDefined)(headerFilter.searchMode)) {
                                    logWarning("".concat(specificName, "[].headerFilter.searchMode"), {
                                        since: "23.1",
                                        alias: "".concat(specificName, "[].headerFilter.search.mode")
                                    })
                                }
                                if (null === (_a = column.columns) || void 0 === _a ? void 0 : _a.length) {
                                    logSpecificDeprecatedWarningIfNeed(column.columns)
                                }
                            })
                        };
                        logSpecificDeprecatedWarningIfNeed(columns)
                    }
                };
                exports.default = _default
            },
        82802:
            /*!*********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/master_detail/m_master_detail.js ***!
              \*********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.masterDetailModule = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _size = __webpack_require__( /*! ../../../../core/utils/size */ 58664);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 60082));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const masterDetailModule = {
                    defaultOptions: () => ({
                        masterDetail: {
                            enabled: false,
                            autoExpandAll: false,
                            template: null
                        }
                    }),
                    extenders: {
                        controllers: {
                            columns: {
                                _getExpandColumnsCore() {
                                    const expandColumns = this.callBase();
                                    if (this.option("masterDetail.enabled")) {
                                        expandColumns.push({
                                            type: "detailExpand",
                                            cellTemplate: _m_utils.default.getExpandCellTemplate()
                                        })
                                    }
                                    return expandColumns
                                }
                            },
                            data: function() {
                                const initMasterDetail = function(that) {
                                    that._expandedItems = [];
                                    that._isExpandAll = that.option("masterDetail.autoExpandAll")
                                };
                                return {
                                    init() {
                                        initMasterDetail(this);
                                        this.callBase()
                                    },
                                    expandAll(groupIndex) {
                                        const that = this;
                                        if (groupIndex < 0) {
                                            that._isExpandAll = true;
                                            that._expandedItems = [];
                                            that.updateItems()
                                        } else {
                                            that.callBase.apply(that, arguments)
                                        }
                                    },
                                    collapseAll(groupIndex) {
                                        const that = this;
                                        if (groupIndex < 0) {
                                            that._isExpandAll = false;
                                            that._expandedItems = [];
                                            that.updateItems()
                                        } else {
                                            that.callBase.apply(that, arguments)
                                        }
                                    },
                                    isRowExpanded(key) {
                                        const that = this;
                                        const expandIndex = _m_utils.default.getIndexByKey(key, that._expandedItems);
                                        if (Array.isArray(key)) {
                                            return that.callBase.apply(that, arguments)
                                        }
                                        return !!(that._isExpandAll ^ (expandIndex >= 0 && that._expandedItems[expandIndex].visible))
                                    },
                                    _getRowIndicesForExpand(key) {
                                        const rowIndex = this.getRowIndexByKey(key);
                                        return [rowIndex, rowIndex + 1]
                                    },
                                    _changeRowExpandCore(key) {
                                        const that = this;
                                        let result;
                                        if (Array.isArray(key)) {
                                            result = that.callBase.apply(that, arguments)
                                        } else {
                                            const expandIndex = _m_utils.default.getIndexByKey(key, that._expandedItems);
                                            if (expandIndex >= 0) {
                                                const {
                                                    visible: visible
                                                } = that._expandedItems[expandIndex];
                                                that._expandedItems[expandIndex].visible = !visible
                                            } else {
                                                that._expandedItems.push({
                                                    key: key,
                                                    visible: true
                                                })
                                            }
                                            that.updateItems({
                                                changeType: "update",
                                                rowIndices: that._getRowIndicesForExpand(key)
                                            });
                                            result = (new _deferred.Deferred).resolve()
                                        }
                                        return result
                                    },
                                    _processDataItem(data, options) {
                                        const dataItem = this.callBase.apply(this, arguments);
                                        dataItem.isExpanded = this.isRowExpanded(dataItem.key);
                                        if (void 0 === options.detailColumnIndex) {
                                            options.detailColumnIndex = -1;
                                            (0, _iterator.each)(options.visibleColumns, (index, column) => {
                                                if ("expand" === column.command && !(0, _type.isDefined)(column.groupIndex)) {
                                                    options.detailColumnIndex = index;
                                                    return false
                                                }
                                                return
                                            })
                                        }
                                        if (options.detailColumnIndex >= 0) {
                                            dataItem.values[options.detailColumnIndex] = dataItem.isExpanded
                                        }
                                        return dataItem
                                    },
                                    _processItems(items, change) {
                                        const that = this;
                                        const {
                                            changeType: changeType
                                        } = change;
                                        const result = [];
                                        items = that.callBase.apply(that, arguments);
                                        if ("loadingAll" === changeType) {
                                            return items
                                        }
                                        if ("refresh" === changeType) {
                                            that._expandedItems = (0, _common.grep)(that._expandedItems, item => item.visible)
                                        }(0, _iterator.each)(items, (index, item) => {
                                            result.push(item);
                                            const expandIndex = _m_utils.default.getIndexByKey(item.key, that._expandedItems);
                                            if ("data" === item.rowType && (item.isExpanded || expandIndex >= 0) && !item.isNewRow) {
                                                result.push({
                                                    visible: item.isExpanded,
                                                    rowType: "detail",
                                                    key: item.key,
                                                    data: item.data,
                                                    values: []
                                                })
                                            }
                                        });
                                        return result
                                    },
                                    optionChanged(args) {
                                        const that = this;
                                        let isEnabledChanged;
                                        let isAutoExpandAllChanged;
                                        if ("masterDetail" === args.name) {
                                            args.name = "dataSource";
                                            switch (args.fullName) {
                                                case "masterDetail": {
                                                    const value = args.value || {};
                                                    const previousValue = args.previousValue || {};
                                                    isEnabledChanged = value.enabled !== previousValue.enabled;
                                                    isAutoExpandAllChanged = value.autoExpandAll !== previousValue.autoExpandAll;
                                                    break
                                                }
                                                case "masterDetail.template":
                                                    initMasterDetail(that);
                                                    break;
                                                case "masterDetail.enabled":
                                                    isEnabledChanged = true;
                                                    break;
                                                case "masterDetail.autoExpandAll":
                                                    isAutoExpandAllChanged = true
                                            }
                                            if (isEnabledChanged || isAutoExpandAllChanged) {
                                                initMasterDetail(that)
                                            }
                                        }
                                        that.callBase(args)
                                    }
                                }
                            }(),
                            resizing: {
                                fireContentReadyAction() {
                                    this.callBase.apply(this, arguments);
                                    this._updateParentDataGrids(this.component.$element())
                                },
                                _updateParentDataGrids($element) {
                                    const $masterDetailRow = $element.closest(".".concat("dx-master-detail-row"));
                                    if ($masterDetailRow.length) {
                                        (0, _deferred.when)(this._updateMasterDataGrid($masterDetailRow, $element)).done(() => {
                                            this._updateParentDataGrids($masterDetailRow.parent())
                                        })
                                    }
                                },
                                _updateMasterDataGrid($masterDetailRow, $detailElement) {
                                    const masterRowOptions = (0, _renderer.default)($masterDetailRow).data("options");
                                    const masterDataGrid = (0, _renderer.default)($masterDetailRow).closest(".".concat(this.getWidgetContainerClass())).parent().data("dxDataGrid");
                                    if (masterRowOptions && masterDataGrid) {
                                        return this._updateMasterDataGridCore(masterDataGrid, masterRowOptions)
                                    }
                                },
                                _updateMasterDataGridCore(masterDataGrid, masterRowOptions) {
                                    const d = (0, _deferred.Deferred)();
                                    if (masterDataGrid.getView("rowsView").isFixedColumns()) {
                                        this._updateFixedMasterDetailGrids(masterDataGrid, masterRowOptions.rowIndex, (0, _renderer.default)(masterRowOptions.rowElement)).done(d.resolve)
                                    } else {
                                        if (true === masterDataGrid.option("scrolling.useNative")) {
                                            masterDataGrid.updateDimensions().done(() => d.resolve(true));
                                            return
                                        }
                                        const scrollable = masterDataGrid.getScrollable();
                                        if (scrollable) {
                                            null === scrollable || void 0 === scrollable ? void 0 : scrollable.update().done(() => d.resolve())
                                        } else {
                                            d.resolve()
                                        }
                                    }
                                    return d.promise()
                                },
                                _updateFixedMasterDetailGrids(masterDataGrid, masterRowIndex, $detailElement) {
                                    const d = (0, _deferred.Deferred)();
                                    const $rows = (0, _renderer.default)(masterDataGrid.getRowElement(masterRowIndex));
                                    const $tables = (0, _renderer.default)(masterDataGrid.getView("rowsView").getTableElements());
                                    const rowsNotEqual = 2 === (null === $rows || void 0 === $rows ? void 0 : $rows.length) && (0, _size.getHeight)($rows.eq(0)) !== (0, _size.getHeight)($rows.eq(1));
                                    const tablesNotEqual = 2 === (null === $tables || void 0 === $tables ? void 0 : $tables.length) && (0, _size.getHeight)($tables.eq(0)) !== (0, _size.getHeight)($tables.eq(1));
                                    if (rowsNotEqual || tablesNotEqual) {
                                        const detailElementWidth = (0, _size.getWidth)($detailElement);
                                        masterDataGrid.updateDimensions().done(() => {
                                            const isDetailHorizontalScrollCanBeShown = this.option("columnAutoWidth") && true === masterDataGrid.option("scrolling.useNative");
                                            const isDetailGridWidthChanged = isDetailHorizontalScrollCanBeShown && detailElementWidth !== (0, _size.getWidth)($detailElement);
                                            if (isDetailHorizontalScrollCanBeShown && isDetailGridWidthChanged) {
                                                this.updateDimensions().done(() => d.resolve(true))
                                            } else {
                                                d.resolve(true)
                                            }
                                        });
                                        return d.promise()
                                    }
                                    return (0, _deferred.Deferred)().resolve()
                                },
                                _toggleBestFitMode(isBestFit) {
                                    this.callBase.apply(this, arguments);
                                    if (this.option("masterDetail.template")) {
                                        const $rowsTable = this._rowsView.getTableElement();
                                        if ($rowsTable) {
                                            $rowsTable.find(".dx-master-detail-cell").css("maxWidth", isBestFit ? 0 : "")
                                        }
                                    }
                                }
                            }
                        },
                        views: {
                            rowsView: {
                                _getCellTemplate(options) {
                                    const that = this;
                                    const {
                                        column: column
                                    } = options;
                                    const editingController = that.getController("editing");
                                    const isEditRow = editingController && editingController.isEditRow(options.rowIndex);
                                    let template;
                                    if ("detail" === column.command && !isEditRow) {
                                        template = that.option("masterDetail.template") || {
                                            allowRenderToDetachedContainer: false,
                                            render: that._getDefaultTemplate(column)
                                        }
                                    } else {
                                        template = that.callBase.apply(that, arguments)
                                    }
                                    return template
                                },
                                _isDetailRow: row => row && row.rowType && 0 === row.rowType.indexOf("detail"),
                                _createRow(row) {
                                    const $row = this.callBase.apply(this, arguments);
                                    if (row && this._isDetailRow(row)) {
                                        this.option("showRowLines") && $row.addClass("dx-row-lines");
                                        $row.addClass("dx-master-detail-row");
                                        if ((0, _type.isDefined)(row.visible)) {
                                            $row.toggle(row.visible)
                                        }
                                    }
                                    return $row
                                },
                                _renderCells($row, options) {
                                    const {
                                        row: row
                                    } = options;
                                    let $detailCell;
                                    const visibleColumns = this._columnsController.getVisibleColumns();
                                    if (row.rowType && this._isDetailRow(row)) {
                                        if (this._needRenderCell(0, options.columnIndices)) {
                                            $detailCell = this._renderCell($row, {
                                                value: null,
                                                row: row,
                                                rowIndex: row.rowIndex,
                                                column: {
                                                    command: "detail"
                                                },
                                                columnIndex: 0,
                                                change: options.change
                                            });
                                            $detailCell.addClass("dx-cell-focus-disabled").addClass("dx-master-detail-cell").attr("colSpan", visibleColumns.length)
                                        }
                                    } else {
                                        this.callBase.apply(this, arguments)
                                    }
                                }
                            }
                        }
                    }
                };
                exports.masterDetailModule = masterDetailModule
            },
        3990:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/pager/m_pager.js ***!
              \*****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.pagerModule = void 0;
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _window = __webpack_require__( /*! ../../../../core/utils/window */ 58201);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/message */ 28109));
                var _pager = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/pager */ 79383));
                var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 15943));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const getPageIndex = function(dataController) {
                    return 1 + (parseInt(dataController.pageIndex()) || 0)
                };
                const PagerView = _m_modules.default.View.inherit({
                    init() {
                        const dataController = this.getController("data");
                        dataController.changed.add(e => {
                            if (e && e.repaintChangesOnly) {
                                const pager = this._pager;
                                if (pager) {
                                    pager.option({
                                        pageIndex: getPageIndex(dataController),
                                        pageSize: dataController.pageSize(),
                                        pageCount: dataController.pageCount(),
                                        totalCount: dataController.totalCount(),
                                        hasKnownLastPage: dataController.hasKnownLastPage()
                                    })
                                } else {
                                    this.render()
                                }
                            } else if (!e || "update" !== e.changeType && "updateSelection" !== e.changeType && "updateFocusedRow" !== e.changeType) {
                                this._pager = null;
                                this.render()
                            }
                        })
                    },
                    _renderCore() {
                        const that = this;
                        const $element = that.element().addClass(that.addWidgetPrefix("pager"));
                        const pagerOptions = that.option("pager") || {};
                        const dataController = that.getController("data");
                        const keyboardController = that.getController("keyboardNavigation");
                        const options = {
                            maxPagesCount: 10,
                            pageIndex: getPageIndex(dataController),
                            pageCount: dataController.pageCount(),
                            pageSize: dataController.pageSize(),
                            showPageSizes: pagerOptions.showPageSizeSelector,
                            showInfo: pagerOptions.showInfo,
                            displayMode: pagerOptions.displayMode,
                            pagesNavigatorVisible: pagerOptions.visible,
                            showNavigationButtons: pagerOptions.showNavigationButtons,
                            label: pagerOptions.label,
                            pageSizes: that.getPageSizes(),
                            totalCount: dataController.totalCount(),
                            hasKnownLastPage: dataController.hasKnownLastPage(),
                            pageIndexChanged(pageIndex) {
                                if (dataController.pageIndex() !== pageIndex - 1) {
                                    dataController.pageIndex(pageIndex - 1)
                                }
                            },
                            pageSizeChanged(pageSize) {
                                dataController.pageSize(pageSize)
                            },
                            onKeyDown: e => keyboardController && keyboardController.executeAction("onKeyDown", e),
                            useLegacyKeyboardNavigation: this.option("useLegacyKeyboardNavigation"),
                            useKeyboard: this.option("keyboardNavigation.enabled")
                        };
                        if ((0, _type.isDefined)(pagerOptions.infoText)) {
                            options.infoText = pagerOptions.infoText
                        }
                        if (this._pager) {
                            this._pager.repaint();
                            return
                        }
                        if ((0, _window.hasWindow)()) {
                            this._pager = that._createComponent($element, _pager.default, options)
                        } else {
                            $element.addClass("dx-pager").html('<div class="dx-pages"><div class="dx-page"></div></div>')
                        }
                    },
                    getPager() {
                        return this._pager
                    },
                    getPageSizes() {
                        const that = this;
                        const dataController = that.getController("data");
                        const pagerOptions = that.option("pager");
                        const allowedPageSizes = pagerOptions && pagerOptions.allowedPageSizes;
                        const pageSize = dataController.pageSize();
                        if (!(0, _type.isDefined)(that._pageSizes) || !that._pageSizes.includes(pageSize)) {
                            that._pageSizes = [];
                            if (pagerOptions) {
                                if (Array.isArray(allowedPageSizes)) {
                                    that._pageSizes = allowedPageSizes
                                } else if (allowedPageSizes && pageSize > 1) {
                                    that._pageSizes = [Math.floor(pageSize / 2), pageSize, 2 * pageSize]
                                }
                            }
                        }
                        return that._pageSizes
                    },
                    isVisible() {
                        const dataController = this.getController("data");
                        const pagerOptions = this.option("pager");
                        let pagerVisible = pagerOptions && pagerOptions.visible;
                        const scrolling = this.option("scrolling");
                        if ("auto" === pagerVisible) {
                            if (scrolling && ("virtual" === scrolling.mode || "infinite" === scrolling.mode)) {
                                pagerVisible = false
                            } else {
                                pagerVisible = dataController.pageCount() > 1 || dataController.isLoaded() && !dataController.hasKnownLastPage()
                            }
                        }
                        return pagerVisible
                    },
                    getHeight() {
                        return this.getElementHeight()
                    },
                    optionChanged(args) {
                        const {
                            name: name
                        } = args;
                        const isPager = "pager" === name;
                        const isPaging = "paging" === name;
                        const isDataSource = "dataSource" === name;
                        const isScrolling = "scrolling" === name;
                        const dataController = this.getController("data");
                        if (isPager || isPaging || isScrolling || isDataSource) {
                            args.handled = true;
                            if (dataController.skipProcessingPagingChange(args.fullName)) {
                                return
                            }
                            if (isPager || isPaging) {
                                this._pageSizes = null
                            }
                            if (!isDataSource) {
                                this._pager = null;
                                this._invalidate();
                                if ((0, _window.hasWindow)() && isPager && this.component) {
                                    this.component.resize()
                                }
                            }
                        }
                    },
                    dispose() {
                        this._pager = null
                    }
                });
                const pagerModule = {
                    defaultOptions: () => ({
                        pager: {
                            visible: "auto",
                            showPageSizeSelector: false,
                            allowedPageSizes: "auto",
                            label: _message.default.format("dxPager-ariaLabel")
                        }
                    }),
                    views: {
                        pagerView: PagerView
                    }
                };
                exports.pagerModule = pagerModule
            },
        92794:
            /*!**********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/row_dragging/const.js ***!
              \**********************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.CLASSES = exports.ATTRIBUTES = void 0;
                exports.ATTRIBUTES = {
                    dragCell: "dx-drag-cell"
                };
                exports.CLASSES = {
                    cellFocusDisabled: "dx-cell-focus-disabled",
                    handleIcon: "drag-icon",
                    commandDrag: "dx-command-drag",
                    sortableWithoutHandle: "dx-sortable-without-handle",
                    rowsView: "rowsview",
                    dragView: "dragview"
                }
            },
        5172:
            /*!********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/row_dragging/dom.js ***!
              \********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.GridCoreRowDraggingDom = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 60082));
                var _const = __webpack_require__( /*! ./const */ 92794);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const GridCoreRowDraggingDom = {
                    createHandleTemplateFunc: addWidgetPrefix => (container, options) => {
                        const $container = (0, _renderer.default)(container);
                        if ("data" === options.rowType) {
                            $container.addClass(_const.CLASSES.cellFocusDisabled);
                            return (0, _renderer.default)("<span>").addClass(addWidgetPrefix(_const.CLASSES.handleIcon))
                        }
                        _m_utils.default.setEmptyText($container);
                        return
                    }
                };
                exports.GridCoreRowDraggingDom = GridCoreRowDraggingDom
            },
        88351:
            /*!*******************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/row_dragging/m_row_dragging.js ***!
              \*******************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.rowDraggingModule = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../../../core/../core/utils/extend */ 13306);
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _size = __webpack_require__( /*! ../../../../core/utils/size */ 58664);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _sortable = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/sortable */ 66843));
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 60082));
                var _const = __webpack_require__( /*! ./const */ 92794);
                var _dom = __webpack_require__( /*! ./dom */ 5172);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const RowDraggingExtender = {
                    init() {
                        this.callBase.apply(this, arguments);
                        this._updateHandleColumn()
                    },
                    _allowReordering() {
                        const rowDragging = this.option("rowDragging");
                        return !!(rowDragging && (rowDragging.allowReordering || rowDragging.allowDropInsideItem || rowDragging.group))
                    },
                    _updateHandleColumn() {
                        const rowDragging = this.option("rowDragging");
                        const allowReordering = this._allowReordering();
                        const columnsController = this._columnsController;
                        const isHandleColumnVisible = allowReordering && rowDragging.showDragIcons;
                        null === columnsController || void 0 === columnsController ? void 0 : columnsController.addCommandColumn({
                            type: "drag",
                            command: "drag",
                            visibleIndex: -2,
                            alignment: "center",
                            elementAttr: [{
                                name: _const.ATTRIBUTES.dragCell,
                                value: ""
                            }],
                            cssClass: _const.CLASSES.commandDrag,
                            width: "auto",
                            cellTemplate: this._getHandleTemplate(),
                            visible: isHandleColumnVisible
                        });
                        null === columnsController || void 0 === columnsController ? void 0 : columnsController.columnOption("type:drag", "visible", isHandleColumnVisible)
                    },
                    _renderContent() {
                        const rowDragging = this.option("rowDragging");
                        const allowReordering = this._allowReordering();
                        const $content = this.callBase.apply(this, arguments);
                        const isFixedTableRendering = this._isFixedTableRendering;
                        const currentSortableName = isFixedTableRendering ? "_sortableFixed" : "_sortable";
                        const anotherSortableName = isFixedTableRendering ? "_sortable" : "_sortableFixed";
                        const togglePointerEventsStyle = toggle => {
                            var _a;
                            null === (_a = this._sortableFixed) || void 0 === _a ? void 0 : _a.$element().css("pointerEvents", toggle ? "auto" : "")
                        };
                        const rowSelector = ".dx-row:not(.dx-freespace-row):not(.dx-virtual-row):not(.dx-header-row):not(.dx-footer-row)";
                        const filter = this.option("dataRowTemplate") ? "> table > tbody".concat(rowSelector) : "> table > tbody > ".concat(rowSelector);
                        if ((allowReordering || this[currentSortableName]) && $content.length) {
                            this[currentSortableName] = this._createComponent($content, _sortable.default, (0, _extend.extend)({
                                component: this.component,
                                contentTemplate: null,
                                filter: filter,
                                cursorOffset: options => {
                                    const {
                                        event: event
                                    } = options;
                                    const rowsViewOffset = (0, _renderer.default)(this.element()).offset();
                                    return {
                                        x: event.pageX - rowsViewOffset.left
                                    }
                                },
                                onDraggableElementShown: e => {
                                    if (rowDragging.dragTemplate) {
                                        return
                                    }
                                    const $dragElement = (0, _renderer.default)(e.dragElement);
                                    const gridInstance = $dragElement.children(".dx-widget").data(this.component.NAME);
                                    this._synchronizeScrollLeftPosition(gridInstance)
                                },
                                dragTemplate: this._getDraggableRowTemplate(),
                                handle: rowDragging.showDragIcons && ".".concat(_const.CLASSES.commandDrag),
                                dropFeedbackMode: "indicate"
                            }, rowDragging, {
                                onDragStart: e => {
                                    var _a, _b;
                                    null === (_a = this.getController("keyboardNavigation")) || void 0 === _a ? void 0 : _a._resetFocusedCell();
                                    const row = e.component.getVisibleRows()[e.fromIndex];
                                    e.itemData = row && row.data;
                                    const isDataRow = row && "data" === row.rowType;
                                    e.cancel = !allowReordering || !isDataRow;
                                    null === (_b = rowDragging.onDragStart) || void 0 === _b ? void 0 : _b.call(rowDragging, e)
                                },
                                onDragEnter: () => {
                                    togglePointerEventsStyle(true)
                                },
                                onDragLeave: () => {
                                    togglePointerEventsStyle(false)
                                },
                                onDragEnd: e => {
                                    var _a;
                                    togglePointerEventsStyle(false);
                                    null === (_a = rowDragging.onDragEnd) || void 0 === _a ? void 0 : _a.call(rowDragging, e)
                                },
                                onAdd: e => {
                                    var _a;
                                    togglePointerEventsStyle(false);
                                    null === (_a = rowDragging.onAdd) || void 0 === _a ? void 0 : _a.call(rowDragging, e)
                                },
                                dropFeedbackMode: rowDragging.dropFeedbackMode,
                                onOptionChanged: e => {
                                    const hasFixedSortable = this._sortableFixed;
                                    if (hasFixedSortable) {
                                        if ("fromIndex" === e.name || "toIndex" === e.name) {
                                            this[anotherSortableName].option(e.name, e.value)
                                        }
                                    }
                                }
                            }));
                            $content.toggleClass("dx-scrollable-container", isFixedTableRendering);
                            $content.toggleClass(_const.CLASSES.sortableWithoutHandle, allowReordering && !rowDragging.showDragIcons)
                        }
                        return $content
                    },
                    _renderCore(e) {
                        this.callBase.apply(this, arguments);
                        if (e && "update" === e.changeType && e.repaintChangesOnly && _m_utils.default.isVirtualRowRendering(this)) {
                            (0, _common.deferUpdate)(() => {
                                this._updateSortable()
                            })
                        }
                    },
                    _updateSortable() {
                        const offset = this._dataController.getRowIndexOffset();
                        const offsetDiff = offset - this._previousOffset;
                        [this._sortable, this._sortableFixed].forEach(sortable => {
                            const toIndex = null === sortable || void 0 === sortable ? void 0 : sortable.option("toIndex");
                            if ((0, _type.isDefined)(toIndex) && (0, _type.isDefined)(this._previousOffset)) {
                                null === sortable || void 0 === sortable ? void 0 : sortable.option("toIndex", toIndex - offsetDiff)
                            }
                            null === sortable || void 0 === sortable ? void 0 : sortable.option("offset", offset);
                            null === sortable || void 0 === sortable ? void 0 : sortable.update()
                        });
                        this._previousOffset = offset
                    },
                    _resizeCore() {
                        this.callBase.apply(this, arguments);
                        this._updateSortable()
                    },
                    _getDraggableGridOptions(options) {
                        const gridOptions = this.option();
                        const columns = this.getColumns();
                        const $rowElement = (0, _renderer.default)(this.getRowElement(options.rowIndex));
                        return {
                            dataSource: [{
                                id: 1,
                                parentId: 0
                            }],
                            showBorders: true,
                            showColumnHeaders: false,
                            scrolling: {
                                useNative: false,
                                showScrollbar: "never"
                            },
                            pager: {
                                visible: false
                            },
                            loadingTimeout: null,
                            columnFixing: gridOptions.columnFixing,
                            columnAutoWidth: gridOptions.columnAutoWidth,
                            showColumnLines: gridOptions.showColumnLines,
                            columns: columns.map(column => ({
                                width: column.width || column.visibleWidth,
                                fixed: column.fixed,
                                fixedPosition: column.fixedPosition
                            })),
                            onRowPrepared: e => {
                                const rowsView = e.component.getView("rowsView");
                                (0, _renderer.default)(e.rowElement).replaceWith($rowElement.eq(rowsView._isFixedTableRendering ? 1 : 0).clone())
                            }
                        }
                    },
                    _synchronizeScrollLeftPosition(gridInstance) {
                        const scrollable = null === gridInstance || void 0 === gridInstance ? void 0 : gridInstance.getScrollable();
                        null === scrollable || void 0 === scrollable ? void 0 : scrollable.scrollTo({
                            x: this._scrollLeft
                        })
                    },
                    _getDraggableRowTemplate() {
                        return options => {
                            const $rootElement = this.component.$element();
                            const $dataGridContainer = (0, _renderer.default)("<div>");
                            (0, _size.setWidth)($dataGridContainer, (0, _size.getWidth)($rootElement));
                            const items = this._dataController.items();
                            const row = items && items[options.fromIndex];
                            const gridOptions = this._getDraggableGridOptions(row);
                            this._createComponent($dataGridContainer, this.component.NAME, gridOptions);
                            $dataGridContainer.find(".dx-gridbase-container").children(":not(.".concat(this.addWidgetPrefix(_const.CLASSES.rowsView), ")")).hide();
                            $dataGridContainer.addClass(this.addWidgetPrefix(_const.CLASSES.dragView));
                            return $dataGridContainer
                        }
                    },
                    _getHandleTemplate() {
                        return _dom.GridCoreRowDraggingDom.createHandleTemplateFunc(string => this.addWidgetPrefix(string))
                    },
                    optionChanged(args) {
                        if ("rowDragging" === args.name) {
                            this._updateHandleColumn();
                            this._invalidate(true, true);
                            args.handled = true
                        }
                        this.callBase.apply(this, arguments)
                    }
                };
                const rowDraggingModule = {
                    defaultOptions: () => ({
                        rowDragging: {
                            showDragIcons: true,
                            dropFeedbackMode: "indicate",
                            allowReordering: false,
                            allowDropInsideItem: false
                        }
                    }),
                    extenders: {
                        views: {
                            rowsView: RowDraggingExtender
                        }
                    }
                };
                exports.rowDraggingModule = rowDraggingModule
            },
        92021:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/search/m_search.js ***!
              \*******************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.searchModule = void 0;
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../../core/dom_adapter */ 73349));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _data = __webpack_require__( /*! ../../../../core/utils/data */ 47617);
                var _query = _interopRequireDefault(__webpack_require__( /*! ../../../../data/query */ 96687));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/message */ 28109));
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 60082));

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

                function _inheritsLoose(subClass, superClass) {
                    subClass.prototype = Object.create(superClass.prototype);
                    subClass.prototype.constructor = subClass;
                    _setPrototypeOf(subClass, superClass)
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function allowSearch(column) {
                    var _a;
                    return !!(null !== (_a = column.allowSearch) && void 0 !== _a ? _a : column.allowFiltering)
                }

                function parseValue(column, text) {
                    const {
                        lookup: lookup
                    } = column;
                    if (!column.parseValue) {
                        return text
                    }
                    if (lookup) {
                        return column.parseValue.call(lookup, text)
                    }
                    return column.parseValue(text)
                }
                const searchModule = {
                    defaultOptions: () => ({
                        searchPanel: {
                            visible: false,
                            width: 160,
                            placeholder: _message.default.format("dxDataGrid-searchPanelPlaceholder"),
                            highlightSearchText: true,
                            highlightCaseSensitive: false,
                            text: "",
                            searchVisibleColumnsOnly: false
                        }
                    }),
                    extenders: {
                        controllers: {
                            data: base => function(_base) {
                                _inheritsLoose(SearchDataControllerExtender, _base);

                                function SearchDataControllerExtender() {
                                    return _base.apply(this, arguments) || this
                                }
                                var _proto = SearchDataControllerExtender.prototype;
                                _proto.publicMethods = function() {
                                    return _base.prototype.publicMethods.call(this).concat(["searchByText"])
                                };
                                _proto._calculateAdditionalFilter = function() {
                                    const filter = _base.prototype._calculateAdditionalFilter.call(this);
                                    const searchFilter = this.calculateSearchFilter(this.option("searchPanel.text"));
                                    return _m_utils.default.combineFilters([filter, searchFilter])
                                };
                                _proto.searchByText = function(text) {
                                    this.option("searchPanel.text", text)
                                };
                                _proto.optionChanged = function(args) {
                                    switch (args.fullName) {
                                        case "searchPanel.text":
                                        case "searchPanel":
                                            this._applyFilter();
                                            args.handled = true;
                                            break;
                                        default:
                                            _base.prototype.optionChanged.call(this, args)
                                    }
                                };
                                _proto.calculateSearchFilter = function(text) {
                                    let i;
                                    let column;
                                    const columns = this._columnsController.getColumns();
                                    const searchVisibleColumnsOnly = this.option("searchPanel.searchVisibleColumnsOnly");
                                    let lookup;
                                    const filters = [];
                                    if (!text) {
                                        return null
                                    }

                                    function onQueryDone(items) {
                                        const valueGetter = (0, _data.compileGetter)(lookup.valueExpr);
                                        for (let i = 0; i < items.length; i++) {
                                            const value = valueGetter(items[i]);
                                            filters.push(column.createFilterExpression(value, null, "search"))
                                        }
                                    }
                                    for (i = 0; i < columns.length; i++) {
                                        column = columns[i];
                                        if (searchVisibleColumnsOnly && !column.visible) {
                                            continue
                                        }
                                        if (allowSearch(column) && column.calculateFilterExpression) {
                                            lookup = column.lookup;
                                            const filterValue = parseValue(column, text);
                                            if (lookup && lookup.items) {
                                                (0, _query.default)(lookup.items).filter(column.createFilterExpression.call({
                                                    dataField: lookup.displayExpr,
                                                    dataType: lookup.dataType,
                                                    calculateFilterExpression: column.calculateFilterExpression
                                                }, filterValue, null, "search")).enumerate().done(onQueryDone)
                                            } else if (void 0 !== filterValue) {
                                                filters.push(column.createFilterExpression(filterValue, null, "search"))
                                            }
                                        }
                                    }
                                    if (0 === filters.length) {
                                        return ["!"]
                                    }
                                    return _m_utils.default.combineFilters(filters, "or")
                                };
                                return SearchDataControllerExtender
                            }(base)
                        },
                        views: {
                            headerPanel: Base => function(_Base) {
                                _inheritsLoose(SearchHeaderPanelExtender, _Base);

                                function SearchHeaderPanelExtender() {
                                    return _Base.apply(this, arguments) || this
                                }
                                var _proto2 = SearchHeaderPanelExtender.prototype;
                                _proto2._getToolbarItems = function() {
                                    const items = _Base.prototype._getToolbarItems.call(this);
                                    return this._prepareSearchItem(items)
                                };
                                _proto2._prepareSearchItem = function(items) {
                                    const that = this;
                                    const dataController = that.getController("data");
                                    const searchPanelOptions = this.option("searchPanel");
                                    if (searchPanelOptions && searchPanelOptions.visible) {
                                        const toolbarItem = {
                                            template(data, index, container) {
                                                const $search = (0, _renderer.default)("<div>").addClass(that.addWidgetPrefix("search-panel")).appendTo(container);
                                                that.getController("editorFactory").createEditor($search, {
                                                    width: searchPanelOptions.width,
                                                    placeholder: searchPanelOptions.placeholder,
                                                    parentType: "searchPanel",
                                                    value: that.option("searchPanel.text"),
                                                    updateValueTimeout: 700,
                                                    setValue(value) {
                                                        dataController.searchByText(value)
                                                    },
                                                    editorOptions: {
                                                        inputAttr: {
                                                            "aria-label": _message.default.format("".concat(that.component.NAME, "-ariaSearchInGrid"))
                                                        }
                                                    }
                                                });
                                                that.resize()
                                            },
                                            name: "searchPanel",
                                            location: "after",
                                            locateInMenu: "never",
                                            sortIndex: 40
                                        };
                                        items.push(toolbarItem)
                                    }
                                    return items
                                };
                                _proto2.getSearchTextEditor = function() {
                                    const that = this;
                                    const $element = that.element();
                                    const $searchPanel = $element.find(".".concat(that.addWidgetPrefix("search-panel"))).filter((function() {
                                        return (0, _renderer.default)(this).closest(".".concat(that.addWidgetPrefix("header-panel"))).is($element)
                                    }));
                                    if ($searchPanel.length) {
                                        return $searchPanel.dxTextBox("instance")
                                    }
                                    return null
                                };
                                _proto2.isVisible = function() {
                                    const searchPanelOptions = this.option("searchPanel");
                                    return _Base.prototype.isVisible.call(this) || !!(null === searchPanelOptions || void 0 === searchPanelOptions ? void 0 : searchPanelOptions.visible)
                                };
                                _proto2.optionChanged = function(args) {
                                    if ("searchPanel" === args.name) {
                                        if ("searchPanel.text" === args.fullName) {
                                            const editor = this.getSearchTextEditor();
                                            if (editor) {
                                                editor.option("value", args.value)
                                            }
                                        } else {
                                            this._invalidate()
                                        }
                                        args.handled = true
                                    } else {
                                        _Base.prototype.optionChanged.call(this, args)
                                    }
                                };
                                return SearchHeaderPanelExtender
                            }(Base),
                            rowsView: Base => function(_Base2) {
                                _inheritsLoose(SearchRowsViewExtender, _Base2);

                                function SearchRowsViewExtender() {
                                    return _Base2.apply(this, arguments) || this
                                }
                                var _proto3 = SearchRowsViewExtender.prototype;
                                _proto3.init = function() {
                                    _Base2.prototype.init.apply(this, arguments);
                                    this._searchParams = [];
                                    this._dataController = this.getController("data")
                                };
                                _proto3._getFormattedSearchText = function(column, searchText) {
                                    const value = parseValue(column, searchText);
                                    const formatOptions = _m_utils.default.getFormatOptionsByColumn(column, "search");
                                    return _m_utils.default.formatValue(value, formatOptions)
                                };
                                _proto3._getStringNormalizer = function() {
                                    var _a, _b, _c, _d;
                                    const isCaseSensitive = this.option("searchPanel.highlightCaseSensitive");
                                    const dataSource = null === (_b = null === (_a = this._dataController) || void 0 === _a ? void 0 : _a.getDataSource) || void 0 === _b ? void 0 : _b.call(_a);
                                    const langParams = null === (_d = null === (_c = null === dataSource || void 0 === dataSource ? void 0 : dataSource.loadOptions) || void 0 === _c ? void 0 : _c.call(dataSource)) || void 0 === _d ? void 0 : _d.langParams;
                                    return str => (0, _data.toComparable)(str, isCaseSensitive, langParams)
                                };
                                _proto3._findHighlightingTextNodes = function(column, cellElement, searchText) {
                                    const that = this;
                                    let $parent = cellElement.parent();
                                    let $items;
                                    const stringNormalizer = this._getStringNormalizer();
                                    const normalizedSearchText = stringNormalizer(searchText);
                                    const resultTextNodes = [];
                                    if (!$parent.length) {
                                        $parent = (0, _renderer.default)("<div>").append(cellElement)
                                    } else if (column) {
                                        if (column.groupIndex >= 0 && !column.showWhenGrouped) {
                                            $items = cellElement
                                        } else {
                                            const columnIndex = that._columnsController.getVisibleIndex(column.index);
                                            $items = $parent.children("td").eq(columnIndex).find("*")
                                        }
                                    }
                                    $items = (null === $items || void 0 === $items ? void 0 : $items.length) ? $items : $parent.find("*");
                                    $items.each((_, element) => {
                                        var _a, _b;
                                        const $contents = (0, _renderer.default)(element).contents();
                                        for (let i = 0; i < $contents.length; i++) {
                                            const node = $contents.get(i);
                                            if (3 === node.nodeType) {
                                                const normalizedText = stringNormalizer(null !== (_b = null !== (_a = node.textContent) && void 0 !== _a ? _a : node.nodeValue) && void 0 !== _b ? _b : "");
                                                if (normalizedText.includes(normalizedSearchText)) {
                                                    resultTextNodes.push(node)
                                                }
                                            }
                                        }
                                    });
                                    return resultTextNodes
                                };
                                _proto3._highlightSearchTextCore = function($textNode, searchText) {
                                    const that = this;
                                    const $searchTextSpan = (0, _renderer.default)("<span>").addClass(that.addWidgetPrefix("search-text"));
                                    const text = $textNode.text();
                                    const firstContentElement = $textNode[0];
                                    const stringNormalizer = this._getStringNormalizer();
                                    const index = stringNormalizer(text).indexOf(stringNormalizer(searchText));
                                    if (index >= 0) {
                                        if (firstContentElement.textContent) {
                                            firstContentElement.textContent = text.substr(0, index)
                                        } else {
                                            firstContentElement.nodeValue = text.substr(0, index)
                                        }
                                        $textNode.after($searchTextSpan.text(text.substr(index, searchText.length)));
                                        $textNode = (0, _renderer.default)(_dom_adapter.default.createTextNode(text.substr(index + searchText.length))).insertAfter($searchTextSpan);
                                        return that._highlightSearchTextCore($textNode, searchText)
                                    }
                                };
                                _proto3._highlightSearchText = function(cellElement, isEquals, column) {
                                    const that = this;
                                    const stringNormalizer = this._getStringNormalizer();
                                    let searchText = that.option("searchPanel.text");
                                    if (isEquals && column) {
                                        searchText = searchText && that._getFormattedSearchText(column, searchText)
                                    }
                                    if (searchText && that.option("searchPanel.highlightSearchText")) {
                                        const textNodes = that._findHighlightingTextNodes(column, cellElement, searchText);
                                        textNodes.forEach(textNode => {
                                            if (isEquals) {
                                                if (stringNormalizer((0, _renderer.default)(textNode).text()) === stringNormalizer(null !== searchText && void 0 !== searchText ? searchText : "")) {
                                                    (0, _renderer.default)(textNode).replaceWith((0, _renderer.default)("<span>").addClass(that.addWidgetPrefix("search-text")).text((0, _renderer.default)(textNode).text()))
                                                }
                                            } else {
                                                that._highlightSearchTextCore((0, _renderer.default)(textNode), searchText)
                                            }
                                        })
                                    }
                                };
                                _proto3._renderCore = function() {
                                    const deferred = _Base2.prototype._renderCore.apply(this, arguments);
                                    if (this.option().rowTemplate || this.option("dataRowTemplate")) {
                                        if (this.option("templatesRenderAsynchronously")) {
                                            clearTimeout(this._highlightTimer);
                                            this._highlightTimer = setTimeout(() => {
                                                this._highlightSearchText(this.getTableElement())
                                            })
                                        } else {
                                            this._highlightSearchText(this.getTableElement())
                                        }
                                    }
                                    return deferred
                                };
                                _proto3._updateCell = function($cell, parameters) {
                                    const {
                                        column: column
                                    } = parameters;
                                    const dataType = column.lookup && column.lookup.dataType || column.dataType;
                                    const isEquals = "string" !== dataType;
                                    if (allowSearch(column) && !parameters.isOnForm) {
                                        if (this.option("templatesRenderAsynchronously")) {
                                            if (!this._searchParams.length) {
                                                clearTimeout(this._highlightTimer);
                                                this._highlightTimer = setTimeout(() => {
                                                    this._searchParams.forEach(params => {
                                                        this._highlightSearchText.apply(this, params)
                                                    });
                                                    this._searchParams = []
                                                })
                                            }
                                            this._searchParams.push([$cell, isEquals, column])
                                        } else {
                                            this._highlightSearchText($cell, isEquals, column)
                                        }
                                    }
                                    _Base2.prototype._updateCell.call(this, $cell, parameters)
                                };
                                _proto3.dispose = function() {
                                    clearTimeout(this._highlightTimer);
                                    _Base2.prototype.dispose.call(this)
                                };
                                return SearchRowsViewExtender
                            }(Base)
                        }
                    }
                };
                exports.searchModule = searchModule
            },
        17969:
            /*!*************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/selection/m_selection.js ***!
              \*************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.selectionModule = exports.SelectionController = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _support = __webpack_require__( /*! ../../../../core/utils/support */ 60137);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _array_utils = __webpack_require__( /*! ../../../../data/array_utils */ 60637);
                var _click = __webpack_require__( /*! ../../../../events/click */ 95429);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../events/core/events_engine */ 55994));
                var _hold = _interopRequireDefault(__webpack_require__( /*! ../../../../events/hold */ 11699));
                var _index = __webpack_require__( /*! ../../../../events/utils/index */ 39611);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/message */ 28109));
                var _selection = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/selection/selection */ 68198));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.errors */ 96688));
                var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 15943));
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 60082));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const SHOW_CHECKBOXES_MODE = "selection.showCheckBoxesMode";
                const processLongTap = function(that, dxEvent) {
                    const selectionController = that.getController("selection");
                    const rowsView = that.getView("rowsView");
                    const $row = (0, _renderer.default)(dxEvent.target).closest(".".concat("dx-data-row"));
                    const rowIndex = rowsView.getRowIndex($row);
                    if (rowIndex < 0) {
                        return
                    }
                    if ("onLongTap" === that.option(SHOW_CHECKBOXES_MODE)) {
                        if (selectionController.isSelectionWithCheckboxes()) {
                            selectionController.stopSelectionWithCheckboxes()
                        } else {
                            selectionController.startSelectionWithCheckboxes()
                        }
                    } else {
                        if ("onClick" === that.option(SHOW_CHECKBOXES_MODE)) {
                            selectionController.startSelectionWithCheckboxes()
                        }
                        if ("always" !== that.option(SHOW_CHECKBOXES_MODE)) {
                            selectionController.changeItemSelection(rowIndex, {
                                control: true
                            })
                        }
                    }
                };
                const selectionCellTemplate = (container, options) => {
                    const {
                        component: component
                    } = options;
                    const rowsView = component.getView("rowsView");
                    if (component.option("renderAsync") && !component.option("selection.deferred")) {
                        options.value = component.isRowSelected(options.row.key)
                    }
                    rowsView.renderSelectCheckBoxContainer((0, _renderer.default)(container), options)
                };
                const selectionHeaderTemplate = (container, options) => {
                    const {
                        column: column
                    } = options;
                    const $cellElement = (0, _renderer.default)(container);
                    const columnHeadersView = options.component.getView("columnHeadersView");
                    $cellElement.addClass("dx-editor-cell");
                    columnHeadersView._renderSelectAllCheckBox($cellElement, column);
                    columnHeadersView._attachSelectAllCheckBoxClickEvent($cellElement)
                };
                let SelectionController = function(_modules$Controller) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(SelectionController, _modules$Controller);

                    function SelectionController() {
                        return _modules$Controller.apply(this, arguments) || this
                    }
                    var _proto = SelectionController.prototype;
                    _proto.init = function() {
                        var _a;
                        const {
                            deferred: deferred,
                            selectAllMode: selectAllMode,
                            mode: mode
                        } = null !== (_a = this.option("selection")) && void 0 !== _a ? _a : {};
                        if ("infinite" === this.option("scrolling.mode") && !deferred && "multiple" === mode && "allPages" === selectAllMode) {
                            _ui.default.log("W1018")
                        }
                        this._dataController = this.getController("data");
                        this._selectionMode = mode;
                        this._isSelectionWithCheckboxes = false;
                        this._selection = this._createSelection();
                        this._updateSelectColumn();
                        this.createAction("onSelectionChanged", {
                            excludeValidators: ["disabled", "readOnly"]
                        });
                        if (!this._dataPushedHandler) {
                            this._dataPushedHandler = this._handleDataPushed.bind(this);
                            this._dataController.pushed.add(this._dataPushedHandler)
                        }
                    };
                    _proto._handleDataPushed = function(changes) {
                        this._deselectRemovedOnPush(changes);
                        this._updateSelectedOnPush(changes)
                    };
                    _proto._deselectRemovedOnPush = function(changes) {
                        const isDeferredSelection = this.option("selection.deferred");
                        let removedKeys = changes.filter(change => "remove" === change.type).map(change => change.key);
                        if (isDeferredSelection) {
                            const selectedKeys = this._dataController.items().filter(item => item.isSelected).map(item => item.key);
                            removedKeys = removedKeys.filter(key => selectedKeys.find(selectedKey => (0, _common.equalByValue)(selectedKey, key)))
                        }
                        removedKeys.length && this.deselectRows(removedKeys)
                    };
                    _proto._updateSelectedOnPush = function(changes) {
                        const isDeferredSelection = this.option("selection.deferred");
                        if (isDeferredSelection) {
                            return
                        }
                        const updateChanges = changes.filter(change => "update" === change.type);
                        const data = this.getSelectedRowsData();
                        (0, _array_utils.applyBatch)({
                            keyInfo: this._selection.options,
                            data: data,
                            changes: updateChanges
                        })
                    };
                    _proto._getSelectionConfig = function() {
                        var _a;
                        const dataController = this._dataController;
                        const columnsController = this.getController("columns");
                        const selectionOptions = null !== (_a = this.option("selection")) && void 0 !== _a ? _a : {};
                        const {
                            deferred: deferred
                        } = selectionOptions;
                        const scrollingMode = this.option("scrolling.mode");
                        const virtualPaging = "virtual" === scrollingMode || "infinite" === scrollingMode;
                        const allowSelectAll = this.option("selection.allowSelectAll");
                        const legacyScrollingMode = this.option("scrolling.legacyMode");
                        return {
                            selectedKeys: this.option("selectedRowKeys"),
                            mode: this._selectionMode,
                            deferred: deferred,
                            maxFilterLengthInRequest: selectionOptions.maxFilterLengthInRequest,
                            selectionFilter: this.option("selectionFilter"),
                            ignoreDisabledItems: true,
                            allowLoadByRange() {
                                const hasGroupColumns = columnsController.getGroupColumns().length > 0;
                                return virtualPaging && !legacyScrollingMode && !hasGroupColumns && allowSelectAll && !deferred
                            },
                            key: () => null === dataController || void 0 === dataController ? void 0 : dataController.key(),
                            keyOf: item => null === dataController || void 0 === dataController ? void 0 : dataController.keyOf(item),
                            dataFields() {
                                var _a;
                                return null === (_a = dataController.dataSource()) || void 0 === _a ? void 0 : _a.select()
                            },
                            load(options) {
                                var _a;
                                return (null === (_a = dataController.dataSource()) || void 0 === _a ? void 0 : _a.load(options)) || (new _deferred.Deferred).resolve([])
                            },
                            plainItems: () => dataController.items(true),
                            isItemSelected: item => item.selected,
                            isSelectableItem: item => "data" === (null === item || void 0 === item ? void 0 : item.rowType) && !item.isNewRow,
                            getItemData: item => (0, _type.isDefined)(null === item || void 0 === item ? void 0 : item.rowType) ? (null === item || void 0 === item ? void 0 : item.oldData) || (null === item || void 0 === item ? void 0 : item.data) : item,
                            filter: () => dataController.getCombinedFilter(deferred),
                            totalCount: () => dataController.totalCount(),
                            getLoadOptions(loadItemIndex, focusedItemIndex, shiftItemIndex) {
                                var _a, _b;
                                const {
                                    sort: sort,
                                    filter: filter
                                } = null !== (_b = null === (_a = dataController.dataSource()) || void 0 === _a ? void 0 : _a.lastLoadOptions()) && void 0 !== _b ? _b : {};
                                let minIndex = Math.min(loadItemIndex, focusedItemIndex);
                                let maxIndex = Math.max(loadItemIndex, focusedItemIndex);
                                if ((0, _type.isDefined)(shiftItemIndex)) {
                                    minIndex = Math.min(shiftItemIndex, minIndex);
                                    maxIndex = Math.max(shiftItemIndex, maxIndex)
                                }
                                const take = maxIndex - minIndex + 1;
                                return {
                                    skip: minIndex,
                                    take: take,
                                    filter: filter,
                                    sort: sort
                                }
                            },
                            onSelectionChanged: this._updateSelectedItems.bind(this)
                        }
                    };
                    _proto._updateSelectColumn = function() {
                        const columnsController = this.getController("columns");
                        const isSelectColumnVisible = this.isSelectColumnVisible();
                        columnsController.addCommandColumn({
                            type: "selection",
                            command: "select",
                            visible: isSelectColumnVisible,
                            visibleIndex: -1,
                            dataType: "boolean",
                            alignment: "center",
                            cssClass: "dx-command-select",
                            width: "auto",
                            cellTemplate: selectionCellTemplate,
                            headerCellTemplate: selectionHeaderTemplate
                        });
                        columnsController.columnOption("command:select", "visible", isSelectColumnVisible)
                    };
                    _proto._createSelection = function() {
                        const options = this._getSelectionConfig();
                        return new _selection.default(options)
                    };
                    _proto._fireSelectionChanged = function(options) {
                        const argument = this.option("selection.deferred") ? {
                            selectionFilter: this.option("selectionFilter")
                        } : {
                            selectedRowKeys: this.option("selectedRowKeys")
                        };
                        this.selectionChanged.fire(argument);
                        if (options) {
                            this.executeAction("onSelectionChanged", options)
                        }
                    };
                    _proto._updateCheckboxesState = function(options) {
                        const {
                            isDeferredMode: isDeferredMode
                        } = options;
                        const {
                            selectionFilter: selectionFilter
                        } = options;
                        const {
                            selectedItemKeys: selectedItemKeys
                        } = options;
                        const {
                            removedItemKeys: removedItemKeys
                        } = options;
                        if ("onClick" === this.option(SHOW_CHECKBOXES_MODE)) {
                            if (isDeferredMode ? selectionFilter && function(that, selectionFilter) {
                                    let keyIndex = 0;
                                    const store = that._dataController.store();
                                    const key = store && store.key();
                                    const isComplexKey = Array.isArray(key);
                                    if (!selectionFilter.length) {
                                        return false
                                    }
                                    if (isComplexKey && Array.isArray(selectionFilter[0]) && "and" === selectionFilter[1]) {
                                        for (let i = 0; i < selectionFilter.length; i++) {
                                            if (Array.isArray(selectionFilter[i])) {
                                                if (selectionFilter[i][0] !== key[keyIndex] || "=" !== selectionFilter[i][1]) {
                                                    return true
                                                }
                                                keyIndex++
                                            }
                                        }
                                        return false
                                    }
                                    return key !== selectionFilter[0]
                                }(this, selectionFilter) : selectedItemKeys.length > 1) {
                                this.startSelectionWithCheckboxes()
                            } else if (isDeferredMode ? selectionFilter && !selectionFilter.length : 0 === selectedItemKeys.length && removedItemKeys.length) {
                                this.stopSelectionWithCheckboxes()
                            }
                        }
                    };
                    _proto._updateSelectedItems = function(args) {
                        const that = this;
                        let selectionChangedOptions;
                        const isDeferredMode = that.option("selection.deferred");
                        const selectionFilter = that._selection.selectionFilter();
                        const dataController = that._dataController;
                        const items = dataController.items(true);
                        const visibleItems = dataController.items();
                        if (!items) {
                            return
                        }
                        const isSelectionWithCheckboxes = that.isSelectionWithCheckboxes();
                        const changedItemIndexes = that.getChangedItemIndexes(items);
                        const visibleChangedItemIndexes = that.getChangedItemIndexes(visibleItems);
                        that._updateCheckboxesState({
                            selectedItemKeys: args.selectedItemKeys,
                            removedItemKeys: args.removedItemKeys,
                            selectionFilter: selectionFilter,
                            isDeferredMode: isDeferredMode
                        });
                        if (changedItemIndexes.length || isSelectionWithCheckboxes !== that.isSelectionWithCheckboxes()) {
                            dataController.updateItems({
                                changeType: "updateSelection",
                                itemIndexes: visibleChangedItemIndexes
                            })
                        }
                        if (isDeferredMode) {
                            that.option("selectionFilter", selectionFilter);
                            selectionChangedOptions = {}
                        } else if (args.addedItemKeys.length || args.removedItemKeys.length) {
                            that._selectedItemsInternalChange = true;
                            that.option("selectedRowKeys", args.selectedItemKeys.slice(0));
                            that._selectedItemsInternalChange = false;
                            selectionChangedOptions = {
                                selectedRowsData: args.selectedItems.slice(0),
                                selectedRowKeys: args.selectedItemKeys.slice(0),
                                currentSelectedRowKeys: args.addedItemKeys.slice(0),
                                currentDeselectedRowKeys: args.removedItemKeys.slice(0)
                            }
                        }
                        that._fireSelectionChanged(selectionChangedOptions)
                    };
                    _proto.getChangedItemIndexes = function(items) {
                        const that = this;
                        const itemIndexes = [];
                        const isDeferredSelection = this.option("selection.deferred");
                        for (let i = 0, {
                                length: length
                            } = items; i < length; i++) {
                            const row = items[i];
                            const isItemSelected = that.isRowSelected(isDeferredSelection ? row.data : row.key);
                            if (that._selection.isDataItem(row) && row.isSelected !== isItemSelected) {
                                itemIndexes.push(i)
                            }
                        }
                        return itemIndexes
                    };
                    _proto.callbackNames = function() {
                        return ["selectionChanged"]
                    };
                    _proto.optionChanged = function(args) {
                        _modules$Controller.prototype.optionChanged.call(this, args);
                        switch (args.name) {
                            case "selection": {
                                const oldSelectionMode = this._selectionMode;
                                this.init();
                                if ("selection.showCheckBoxesMode" !== args.fullName) {
                                    const selectionMode = this._selectionMode;
                                    let selectedRowKeys = this.option("selectedRowKeys");
                                    if (oldSelectionMode !== selectionMode) {
                                        if ("single" === selectionMode) {
                                            if (selectedRowKeys.length > 1) {
                                                selectedRowKeys = [selectedRowKeys[0]]
                                            }
                                        } else if ("multiple" !== selectionMode) {
                                            selectedRowKeys = []
                                        }
                                    }
                                    this.selectRows(selectedRowKeys).always(() => {
                                        this._fireSelectionChanged()
                                    })
                                }
                                this.getController("columns").updateColumns();
                                args.handled = true;
                                break
                            }
                            case "selectionFilter":
                                this._selection.selectionFilter(args.value);
                                args.handled = true;
                                break;
                            case "selectedRowKeys": {
                                const value = args.value || [];
                                if (Array.isArray(value) && !this._selectedItemsInternalChange && (this.component.getDataSource() || !value.length)) {
                                    this.selectRows(value)
                                }
                                args.handled = true;
                                break
                            }
                        }
                    };
                    _proto.publicMethods = function() {
                        return ["selectRows", "deselectRows", "selectRowsByIndexes", "getSelectedRowKeys", "getSelectedRowsData", "clearSelection", "selectAll", "deselectAll", "startSelectionWithCheckboxes", "stopSelectionWithCheckboxes", "isRowSelected"]
                    };
                    _proto.isRowSelected = function(arg) {
                        return this._selection.isItemSelected(arg)
                    };
                    _proto.isSelectColumnVisible = function() {
                        return "multiple" === this.option("selection.mode") && ("always" === this.option(SHOW_CHECKBOXES_MODE) || "onClick" === this.option(SHOW_CHECKBOXES_MODE) || this._isSelectionWithCheckboxes)
                    };
                    _proto._isOnePageSelectAll = function() {
                        return "page" === this.option("selection.selectAllMode")
                    };
                    _proto.isSelectAll = function() {
                        return this._selection.getSelectAllState(this._isOnePageSelectAll())
                    };
                    _proto.selectAll = function() {
                        if ("onClick" === this.option(SHOW_CHECKBOXES_MODE)) {
                            this.startSelectionWithCheckboxes()
                        }
                        return this._selection.selectAll(this._isOnePageSelectAll())
                    };
                    _proto.deselectAll = function() {
                        return this._selection.deselectAll(this._isOnePageSelectAll())
                    };
                    _proto.clearSelection = function() {
                        return this.selectedItemKeys([])
                    };
                    _proto.refresh = function() {
                        var _a;
                        const selectedRowKeys = null !== (_a = this.option("selectedRowKeys")) && void 0 !== _a ? _a : [];
                        if (!this.option("selection.deferred") && selectedRowKeys.length) {
                            return this.selectedItemKeys(selectedRowKeys)
                        }
                        return (new _deferred.Deferred).resolve().promise()
                    };
                    _proto.selectedItemKeys = function(value, preserve, isDeselect, isSelectAll) {
                        return this._selection.selectedItemKeys(value, preserve, isDeselect, isSelectAll)
                    };
                    _proto.getSelectedRowKeys = function() {
                        return this._selection.getSelectedItemKeys()
                    };
                    _proto.selectRows = function(keys, preserve) {
                        return this.selectedItemKeys(keys, preserve)
                    };
                    _proto.deselectRows = function(keys) {
                        return this.selectedItemKeys(keys, true, true)
                    };
                    _proto.selectRowsByIndexes = function(indexes) {
                        const items = this._dataController.items();
                        const keys = [];
                        if (!Array.isArray(indexes)) {
                            indexes = Array.prototype.slice.call(arguments, 0)
                        }(0, _iterator.each)(indexes, (function() {
                            const item = items[this];
                            if (item && "data" === item.rowType) {
                                keys.push(item.key)
                            }
                        }));
                        return this.selectRows(keys)
                    };
                    _proto.getSelectedRowsData = function() {
                        return this._selection.getSelectedItems()
                    };
                    _proto.loadSelectedItemsWithFilter = function() {
                        return this._selection.loadSelectedItemsWithFilter()
                    };
                    _proto.changeItemSelection = function(visibleItemIndex, keys, setFocusOnly) {
                        keys = keys || {};
                        if (this.isSelectionWithCheckboxes()) {
                            keys.control = true
                        }
                        const loadedItemIndex = visibleItemIndex + this._dataController.getRowIndexOffset() - this._dataController.getRowIndexOffset(true);
                        return this._selection.changeItemSelection(loadedItemIndex, keys, setFocusOnly)
                    };
                    _proto.focusedItemIndex = function(itemIndex) {
                        const that = this;
                        if ((0, _type.isDefined)(itemIndex)) {
                            that._selection._focusedItemIndex = itemIndex
                        } else {
                            return that._selection._focusedItemIndex
                        }
                        return
                    };
                    _proto.isSelectionWithCheckboxes = function() {
                        return "multiple" === this.option("selection.mode") && ("always" === this.option(SHOW_CHECKBOXES_MODE) || this._isSelectionWithCheckboxes)
                    };
                    _proto.startSelectionWithCheckboxes = function() {
                        const that = this;
                        if ("multiple" === that.option("selection.mode") && !that.isSelectionWithCheckboxes()) {
                            that._isSelectionWithCheckboxes = true;
                            that._updateSelectColumn();
                            return true
                        }
                        return false
                    };
                    _proto.stopSelectionWithCheckboxes = function() {
                        const that = this;
                        if (that._isSelectionWithCheckboxes) {
                            that._isSelectionWithCheckboxes = false;
                            that._updateSelectColumn();
                            return true
                        }
                        return false
                    };
                    return SelectionController
                }(_m_modules.default.Controller);
                exports.SelectionController = SelectionController;
                const selectionModule = {
                    defaultOptions: () => ({
                        selection: {
                            mode: "none",
                            showCheckBoxesMode: "onClick",
                            allowSelectAll: true,
                            selectAllMode: "allPages",
                            maxFilterLengthInRequest: 1500,
                            deferred: false
                        },
                        selectionFilter: [],
                        selectedRowKeys: []
                    }),
                    controllers: {
                        selection: SelectionController
                    },
                    extenders: {
                        controllers: {
                            data: {
                                init() {
                                    const selectionController = this.getController("selection");
                                    const isDeferredMode = this.option("selection.deferred");
                                    this.callBase.apply(this, arguments);
                                    if (isDeferredMode) {
                                        selectionController._updateCheckboxesState({
                                            isDeferredMode: true,
                                            selectionFilter: this.option("selectionFilter")
                                        })
                                    }
                                },
                                _loadDataSource() {
                                    const that = this;
                                    return that.callBase().always(() => {
                                        that.getController("selection").refresh()
                                    })
                                },
                                _processDataItem(item, options) {
                                    const selectionController = this.getController("selection");
                                    const hasSelectColumn = selectionController.isSelectColumnVisible();
                                    const isDeferredSelection = options.isDeferredSelection = void 0 === options.isDeferredSelection ? this.option("selection.deferred") : options.isDeferredSelection;
                                    const dataItem = this.callBase.apply(this, arguments);
                                    dataItem.isSelected = selectionController.isRowSelected(isDeferredSelection ? dataItem.data : dataItem.key);
                                    if (hasSelectColumn && dataItem.values) {
                                        for (let i = 0; i < options.visibleColumns.length; i++) {
                                            if ("select" === options.visibleColumns[i].command) {
                                                dataItem.values[i] = dataItem.isSelected;
                                                break
                                            }
                                        }
                                    }
                                    return dataItem
                                },
                                refresh(options) {
                                    const that = this;
                                    const d = new _deferred.Deferred;
                                    this.callBase.apply(this, arguments).done(() => {
                                        if (!options || options.selection) {
                                            that.getController("selection").refresh().done(d.resolve).fail(d.reject)
                                        } else {
                                            d.resolve()
                                        }
                                    }).fail(d.reject);
                                    return d.promise()
                                },
                                _handleDataChanged(e) {
                                    this.callBase.apply(this, arguments);
                                    if ((!e || "refresh" === e.changeType) && !this._repaintChangesOnly) {
                                        this.getController("selection").focusedItemIndex(-1)
                                    }
                                },
                                _applyChange(change) {
                                    if (change && "updateSelection" === change.changeType) {
                                        change.items.forEach((item, index) => {
                                            const currentItem = this._items[index];
                                            if (currentItem) {
                                                currentItem.isSelected = item.isSelected;
                                                currentItem.values = item.values
                                            }
                                        });
                                        return
                                    }
                                    return this.callBase.apply(this, arguments)
                                },
                                _endUpdateCore() {
                                    const changes = this._changes;
                                    const isUpdateSelection = changes.length > 1 && changes.every(change => "updateSelection" === change.changeType);
                                    if (isUpdateSelection) {
                                        const itemIndexes = changes.map(change => change.itemIndexes || []).reduce((a, b) => a.concat(b));
                                        this._changes = [{
                                            changeType: "updateSelection",
                                            itemIndexes: itemIndexes
                                        }]
                                    }
                                    this.callBase.apply(this, arguments)
                                }
                            },
                            contextMenu: {
                                _contextMenuPrepared(options) {
                                    const dxEvent = options.event;
                                    if (dxEvent.originalEvent && "dxhold" !== dxEvent.originalEvent.type || options.items && options.items.length > 0) {
                                        return
                                    }
                                    processLongTap(this, dxEvent)
                                }
                            }
                        },
                        views: {
                            columnHeadersView: {
                                init() {
                                    this.callBase();
                                    this.getController("selection").selectionChanged.add(this._updateSelectAllValue.bind(this))
                                },
                                _updateSelectAllValue() {
                                    const that = this;
                                    const $element = that.element();
                                    const $editor = $element && $element.find(".".concat("dx-select-checkbox"));
                                    if ($element && $editor.length && "multiple" === that.option("selection.mode")) {
                                        const selectAllValue = that.getController("selection").isSelectAll();
                                        const hasSelection = false !== selectAllValue;
                                        const isVisible = that.option("selection.allowSelectAll") ? !that.getController("data").isEmpty() : hasSelection;
                                        $editor.dxCheckBox("instance").option({
                                            visible: isVisible,
                                            value: selectAllValue
                                        })
                                    }
                                },
                                _handleDataChanged(e) {
                                    this.callBase(e);
                                    if (!e || "refresh" === e.changeType || e.repaintChangesOnly && "update" === e.changeType) {
                                        this.waitAsyncTemplates().done(() => {
                                            this._updateSelectAllValue()
                                        })
                                    }
                                },
                                _renderSelectAllCheckBox($container, column) {
                                    const that = this;
                                    const selectionController = that.getController("selection");
                                    const isEmptyData = that.getController("data").isEmpty();
                                    const groupElement = (0, _renderer.default)("<div>").appendTo($container).addClass("dx-select-checkbox");
                                    that.setAria("label", _message.default.format("dxDataGrid-ariaSelectAll"), groupElement);
                                    that.getController("editorFactory").createEditor(groupElement, (0, _extend.extend)({}, column, {
                                        parentType: "headerRow",
                                        dataType: "boolean",
                                        value: selectionController.isSelectAll(),
                                        editorOptions: {
                                            visible: !isEmptyData && (that.option("selection.allowSelectAll") || false !== selectionController.isSelectAll())
                                        },
                                        tabIndex: that.option("useLegacyKeyboardNavigation") ? -1 : that.option("tabIndex") || 0,
                                        setValue(value, e) {
                                            const allowSelectAll = that.option("selection.allowSelectAll");
                                            e.component.option("visible", allowSelectAll || false !== e.component.option("value"));
                                            if (!e.event || selectionController.isSelectAll() === value) {
                                                return
                                            }
                                            if (e.value && !allowSelectAll) {
                                                e.component.option("value", false)
                                            } else {
                                                e.value ? selectionController.selectAll() : selectionController.deselectAll()
                                            }
                                            e.event.preventDefault()
                                        }
                                    }));
                                    return groupElement
                                },
                                _attachSelectAllCheckBoxClickEvent($element) {
                                    _events_engine.default.on($element, _click.name, this.createAction(e => {
                                        const {
                                            event: event
                                        } = e;
                                        if (!(0, _renderer.default)(event.target).closest(".".concat("dx-select-checkbox")).length) {
                                            _events_engine.default.trigger((0, _renderer.default)(event.currentTarget).children(".".concat("dx-select-checkbox")), _click.name)
                                        }
                                        event.preventDefault()
                                    }))
                                }
                            },
                            rowsView: {
                                renderSelectCheckBoxContainer($container, options) {
                                    if ("data" === options.rowType && !options.row.isNewRow) {
                                        $container.addClass("dx-editor-cell");
                                        this._attachCheckBoxClickEvent($container);
                                        this._renderSelectCheckBox($container, options)
                                    } else {
                                        _m_utils.default.setEmptyText($container)
                                    }
                                },
                                _renderSelectCheckBox(container, options) {
                                    const groupElement = (0, _renderer.default)("<div>").addClass("dx-select-checkbox").appendTo(container);
                                    this.setAria("label", _message.default.format("dxDataGrid-ariaSelectRow"), groupElement);
                                    this.getController("editorFactory").createEditor(groupElement, (0, _extend.extend)({}, options.column, {
                                        parentType: "dataRow",
                                        dataType: "boolean",
                                        lookup: null,
                                        value: options.value,
                                        setValue(value, e) {
                                            var _a;
                                            if ("keydown" === (null === (_a = null === e || void 0 === e ? void 0 : e.event) || void 0 === _a ? void 0 : _a.type)) {
                                                _events_engine.default.trigger(e.element, _click.name, e)
                                            }
                                        },
                                        row: options.row
                                    }));
                                    return groupElement
                                },
                                _attachCheckBoxClickEvent($element) {
                                    _events_engine.default.on($element, _click.name, this.createAction((function(e) {
                                        const selectionController = this.getController("selection");
                                        const {
                                            event: event
                                        } = e;
                                        const rowIndex = this.getRowIndex((0, _renderer.default)(event.currentTarget).closest(".".concat("dx-row")));
                                        if (rowIndex >= 0) {
                                            selectionController.startSelectionWithCheckboxes();
                                            selectionController.changeItemSelection(rowIndex, {
                                                shift: event.shiftKey
                                            });
                                            if ((0, _renderer.default)(event.target).closest(".".concat("dx-select-checkbox")).length) {
                                                this.getController("data").updateItems({
                                                    changeType: "updateSelection",
                                                    itemIndexes: [rowIndex]
                                                })
                                            }
                                        }
                                    })))
                                },
                                _update(change) {
                                    const that = this;
                                    const tableElements = that.getTableElements();
                                    if ("updateSelection" === change.changeType) {
                                        if (tableElements.length > 0) {
                                            (0, _iterator.each)(tableElements, (_, tableElement) => {
                                                (0, _iterator.each)(change.itemIndexes || [], (_, index) => {
                                                    let $row;
                                                    if (change.items[index]) {
                                                        $row = that._getRowElements((0, _renderer.default)(tableElement)).eq(index);
                                                        if ($row.length) {
                                                            const {
                                                                isSelected: isSelected
                                                            } = change.items[index];
                                                            $row.toggleClass("dx-selection", void 0 === isSelected ? false : isSelected).find(".".concat("dx-select-checkbox")).dxCheckBox("option", "value", isSelected);
                                                            that.setAria("selected", isSelected, $row)
                                                        }
                                                    }
                                                })
                                            });
                                            that._updateCheckboxesClass()
                                        }
                                    } else {
                                        that.callBase(change)
                                    }
                                },
                                _createTable() {
                                    const that = this;
                                    const selectionMode = that.option("selection.mode");
                                    const $table = that.callBase.apply(that, arguments);
                                    if ("none" !== selectionMode) {
                                        if ("onLongTap" === that.option(SHOW_CHECKBOXES_MODE) || !_support.touch) {
                                            _events_engine.default.on($table, (0, _index.addNamespace)(_hold.default.name, "dxDataGridRowsView"), ".".concat("dx-data-row"), that.createAction(e => {
                                                processLongTap(that.component, e.event);
                                                e.event.stopPropagation()
                                            }))
                                        }
                                        _events_engine.default.on($table, "mousedown selectstart", that.createAction(e => {
                                            const {
                                                event: event
                                            } = e;
                                            if (event.shiftKey) {
                                                event.preventDefault()
                                            }
                                        }))
                                    }
                                    return $table
                                },
                                _createRow(row) {
                                    const $row = this.callBase.apply(this, arguments);
                                    if (row) {
                                        const {
                                            isSelected: isSelected
                                        } = row;
                                        if (isSelected) {
                                            $row.addClass("dx-selection")
                                        }
                                        const selectionMode = this.option("selection.mode");
                                        if ("none" !== selectionMode) {
                                            this.setAria("selected", isSelected, $row)
                                        }
                                    }
                                    return $row
                                },
                                _rowClick(e) {
                                    const that = this;
                                    const dxEvent = e.event;
                                    const isSelectionDisabled = (0, _renderer.default)(dxEvent.target).closest(".".concat("dx-selection-disabled")).length;
                                    if (!that.isClickableElement((0, _renderer.default)(dxEvent.target))) {
                                        if (!isSelectionDisabled && ("multiple" !== that.option("selection.mode") || "always" !== that.option(SHOW_CHECKBOXES_MODE))) {
                                            if (that.getController("selection").changeItemSelection(e.rowIndex, {
                                                    control: (0, _index.isCommandKeyPressed)(dxEvent),
                                                    shift: dxEvent.shiftKey
                                                })) {
                                                dxEvent.preventDefault();
                                                e.handled = true
                                            }
                                        }
                                        that.callBase(e)
                                    }
                                },
                                isClickableElement($target) {
                                    const isCommandSelect = $target.closest(".".concat("dx-command-select")).length;
                                    return !!isCommandSelect
                                },
                                _renderCore(change) {
                                    const deferred = this.callBase(change);
                                    this._updateCheckboxesClass();
                                    return deferred
                                },
                                _updateCheckboxesClass() {
                                    const tableElements = this.getTableElements();
                                    const selectionController = this.getController("selection");
                                    const isCheckBoxesHidden = selectionController.isSelectColumnVisible() && !selectionController.isSelectionWithCheckboxes();
                                    (0, _iterator.each)(tableElements, (_, tableElement) => {
                                        (0, _renderer.default)(tableElement).toggleClass("dx-select-checkboxes-hidden", isCheckBoxesHidden)
                                    })
                                }
                            }
                        }
                    }
                };
                exports.selectionModule = selectionModule
            },
        11590:
            /*!*********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/sorting/m_sorting.js ***!
              \*********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.sortingModule = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _click = __webpack_require__( /*! ../../../../events/click */ 95429);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../events/core/events_engine */ 55994));
                var _index = __webpack_require__( /*! ../../../../events/utils/index */ 39611);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/message */ 28109));
                var _m_sorting_mixin = _interopRequireDefault(__webpack_require__( /*! ./m_sorting_mixin */ 62930));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const ColumnHeadersViewSortingExtender = (0, _extend.extend)({}, _m_sorting_mixin.default, {
                    _createRow(row) {
                        const $row = this.callBase(row);
                        if ("header" === row.rowType) {
                            _events_engine.default.on($row, (0, _index.addNamespace)(_click.name, "dxDataGridColumnHeadersView"), "td", this.createAction(e => {
                                this._processHeaderAction(e.event, $row)
                            }))
                        }
                        return $row
                    },
                    _processHeaderAction(event, $row) {
                        if ((0, _renderer.default)(event.currentTarget).parent().get(0) !== $row.get(0)) {
                            return
                        }
                        const that = this;
                        let keyName = null;
                        const $cellElementFromEvent = (0, _renderer.default)(event.currentTarget);
                        const rowIndex = $cellElementFromEvent.parent().index();
                        let columnIndex = -1;
                        [].slice.call(that.getCellElements(rowIndex)).some(($cellElement, index) => {
                            if ($cellElement === $cellElementFromEvent.get(0)) {
                                columnIndex = index;
                                return true
                            }
                            return
                        });
                        const visibleColumns = that._columnsController.getVisibleColumns(rowIndex);
                        const column = visibleColumns[columnIndex];
                        const editingController = that.getController("editing");
                        const editingMode = that.option("editing.mode");
                        const isCellEditing = editingController && editingController.isEditing() && ("batch" === editingMode || "cell" === editingMode);
                        if (isCellEditing || !that._isSortableElement((0, _renderer.default)(event.target))) {
                            return
                        }
                        if (column && !(0, _type.isDefined)(column.groupIndex) && !column.command) {
                            if (event.shiftKey) {
                                keyName = "shift"
                            } else if ((0, _index.isCommandKeyPressed)(event)) {
                                keyName = "ctrl"
                            }
                            setTimeout(() => {
                                that._columnsController.changeSortOrder(column.index, keyName)
                            })
                        }
                    },
                    _renderCellContent($cell, options) {
                        const that = this;
                        const {
                            column: column
                        } = options;
                        if (!column.command && "header" === options.rowType) {
                            that._applyColumnState({
                                name: "sort",
                                rootElement: $cell,
                                column: column,
                                showColumnLines: that.option("showColumnLines")
                            })
                        }
                        this.callBase.apply(this, arguments)
                    },
                    _columnOptionChanged(e) {
                        const {
                            changeTypes: changeTypes
                        } = e;
                        if (1 === changeTypes.length && changeTypes.sorting) {
                            this._updateIndicators("sort");
                            return
                        }
                        this.callBase(e)
                    },
                    optionChanged(args) {
                        const that = this;
                        switch (args.name) {
                            case "sorting":
                                that._invalidate();
                                args.handled = true;
                                break;
                            default:
                                that.callBase(args)
                        }
                    }
                });
                const HeaderPanelSortingExtender = (0, _extend.extend)({}, _m_sorting_mixin.default, {
                    _createGroupPanelItem($rootElement, groupColumn) {
                        const that = this;
                        const $item = that.callBase(...arguments);
                        _events_engine.default.on($item, (0, _index.addNamespace)(_click.name, "dxDataGridHeaderPanel"), that.createAction(() => {
                            that._processGroupItemAction(groupColumn.index)
                        }));
                        that._applyColumnState({
                            name: "sort",
                            rootElement: $item,
                            column: {
                                alignment: that.option("rtlEnabled") ? "right" : "left",
                                allowSorting: groupColumn.allowSorting,
                                sortOrder: "desc" === groupColumn.sortOrder ? "desc" : "asc",
                                isGrouped: true
                            },
                            showColumnLines: true
                        });
                        return $item
                    },
                    _processGroupItemAction(groupColumnIndex) {
                        setTimeout(() => this.getController("columns").changeSortOrder(groupColumnIndex))
                    },
                    optionChanged(args) {
                        const that = this;
                        switch (args.name) {
                            case "sorting":
                                that._invalidate();
                                args.handled = true;
                                break;
                            default:
                                that.callBase(args)
                        }
                    }
                });
                const sortingModule = {
                    defaultOptions: () => ({
                        sorting: {
                            mode: "single",
                            ascendingText: _message.default.format("dxDataGrid-sortingAscendingText"),
                            descendingText: _message.default.format("dxDataGrid-sortingDescendingText"),
                            clearText: _message.default.format("dxDataGrid-sortingClearText"),
                            showSortIndexes: true
                        }
                    }),
                    extenders: {
                        views: {
                            columnHeadersView: ColumnHeadersViewSortingExtender,
                            headerPanel: HeaderPanelSortingExtender
                        }
                    }
                };
                exports.sortingModule = sortingModule
            },
        62930:
            /*!***************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/sorting/m_sorting_mixin.js ***!
              \***************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/message */ 28109));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                var _default = {
                    _applyColumnState(options) {
                        const that = this;
                        let ariaSortState;
                        let $sortIndicator;
                        const sortingMode = that.option("sorting.mode");
                        const {
                            rootElement: rootElement
                        } = options;
                        const {
                            column: column
                        } = options;
                        const $indicatorsContainer = that._getIndicatorContainer(rootElement);
                        if ("sort" === options.name) {
                            rootElement.find(".".concat("dx-sort")).remove();
                            !$indicatorsContainer.children().length && $indicatorsContainer.remove();
                            const isSortingAllowed = "none" !== sortingMode && column.allowSorting;
                            const hasSeveralSortIndexes = that.getController && !!that.getController("columns").columnOption("sortIndex:1");
                            if (!(0, _type.isDefined)(column.groupIndex) && (isSortingAllowed || (0, _type.isDefined)(column.sortOrder))) {
                                ariaSortState = "asc" === column.sortOrder ? "ascending" : "descending";
                                $sortIndicator = that.callBase(options).toggleClass("dx-sort-up", "asc" === column.sortOrder).toggleClass("dx-sort-down", "desc" === column.sortOrder);
                                if (hasSeveralSortIndexes && that.option("sorting.showSortIndexes") && column.sortIndex >= 0) {
                                    (0, _renderer.default)("<span>").addClass("dx-sort-index-icon").text(column.sortIndex + 1).appendTo($sortIndicator);
                                    $sortIndicator.addClass("dx-sort-index")
                                }
                                if (isSortingAllowed) {
                                    options.rootElement.addClass(that.addWidgetPrefix("action"))
                                }
                            }
                            this._setAriaSortAttribute(column, ariaSortState, rootElement, hasSeveralSortIndexes);
                            return $sortIndicator
                        }
                        return that.callBase(options)
                    },
                    _setAriaSortAttribute(column, ariaSortState, $rootElement, hasSeveralSortIndexes) {
                        $rootElement.removeAttr("aria-roledescription");
                        if (column.isGrouped) {
                            let description = this.localize("dxDataGrid-ariaNotSortedColumn");
                            if ((0, _type.isDefined)(column.sortOrder)) {
                                description = "asc" === column.sortOrder ? this.localize("dxDataGrid-ariaSortedAscendingColumn") : this.localize("dxDataGrid-ariaSortedDescendingColumn")
                            }
                            this.setAria("roledescription", description, $rootElement)
                        } else if (!(0, _type.isDefined)(column.sortOrder)) {
                            this.setAria("sort", "none", $rootElement)
                        } else {
                            this.setAria("sort", ariaSortState, $rootElement);
                            if (hasSeveralSortIndexes && column.sortIndex >= 0) {
                                const ariaColumnHeader = _message.default.format("dxDataGrid-ariaColumnHeader");
                                const ariaSortIndex = _message.default.format("dxDataGrid-ariaSortIndex", column.sortIndex + 1);
                                const description = "".concat(ariaColumnHeader, ", ").concat(ariaSortIndex);
                                this.setAria("roledescription", description, $rootElement)
                            }
                        }
                    },
                    _getIndicatorClassName(name) {
                        if ("sort" === name) {
                            return "dx-sort"
                        }
                        if ("sortIndex" === name) {
                            return "dx-sort-index-icon"
                        }
                        return this.callBase(name)
                    },
                    _renderIndicator(options) {
                        const {
                            column: column
                        } = options;
                        const $container = options.container;
                        const $indicator = options.indicator;
                        if ("sort" === options.name) {
                            const rtlEnabled = this.option("rtlEnabled");
                            if (!(0, _type.isDefined)(column.sortOrder)) {
                                $indicator && $indicator.addClass("dx-sort-none")
                            }
                            if ($container.children().length && (!rtlEnabled && "left" === options.columnAlignment || rtlEnabled && "right" === options.columnAlignment)) {
                                $container.prepend($indicator);
                                return
                            }
                        }
                        this.callBase(options)
                    },
                    _updateIndicator($cell, column, indicatorName) {
                        if ("sort" === indicatorName && (0, _type.isDefined)(column.groupIndex)) {
                            return
                        }
                        return this.callBase.apply(this, arguments)
                    },
                    _getIndicatorElements($cell, returnAll) {
                        const $indicatorElements = this.callBase($cell);
                        return returnAll ? $indicatorElements : $indicatorElements && $indicatorElements.not(".".concat("dx-sort-none"))
                    }
                };
                exports.default = _default
            },
        12440:
            /*!*********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/state_storing/m_state_storing.js ***!
              \*********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.stateStoringModule = void 0;
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _m_state_storing_core = (obj = __webpack_require__( /*! ./m_state_storing_core */ 84651), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const processLoadState = that => {
                    const columnsController = that.getController("columns");
                    const selectionController = that.getController("selection");
                    const exportController = that.getController("export");
                    const dataController = that.getController("data");
                    if (columnsController) {
                        columnsController.columnsChanged.add(() => {
                            that.updateState({
                                columns: columnsController.getUserState()
                            })
                        })
                    }
                    if (selectionController) {
                        selectionController.selectionChanged.add(e => {
                            that.updateState({
                                selectedRowKeys: e.selectedRowKeys,
                                selectionFilter: e.selectionFilter
                            })
                        })
                    }
                    if (dataController) {
                        that._initialPageSize = that.option("paging.pageSize");
                        that._initialFilterValue = that.option("filterValue");
                        dataController.changed.add(() => {
                            const state = (that => {
                                const pagerView = that.getView("pagerView");
                                const dataController = that.getController("data");
                                const state = {
                                    allowedPageSizes: pagerView ? pagerView.getPageSizes() : void 0,
                                    filterPanel: {
                                        filterEnabled: that.option("filterPanel.filterEnabled")
                                    },
                                    filterValue: that.option("filterValue"),
                                    focusedRowKey: that.option("focusedRowEnabled") ? that.option("focusedRowKey") : void 0
                                };
                                return (0, _extend.extend)(state, dataController.getUserState())
                            })(that);
                            that.updateState(state)
                        })
                    }
                    if (exportController) {
                        exportController.selectionOnlyChanged.add(() => {
                            that.updateState({
                                exportSelectionOnly: exportController.selectionOnly()
                            })
                        })
                    }
                };
                const stateStoringModule = {
                    defaultOptions: () => ({
                        stateStoring: {
                            enabled: false,
                            storageKey: null,
                            type: "localStorage",
                            customLoad: null,
                            customSave: null,
                            savingTimeout: 2e3
                        }
                    }),
                    controllers: {
                        stateStoring: _m_state_storing_core.default.StateStoringController
                    },
                    extenders: {
                        views: {
                            rowsView: {
                                init() {
                                    const that = this;
                                    const dataController = that.getController("data");
                                    that.callBase();
                                    dataController.stateLoaded.add(() => {
                                        if (dataController.isLoaded() && !dataController.getDataSource()) {
                                            that.setLoading(false);
                                            that.renderNoDataText();
                                            const columnHeadersView = that.component.getView("columnHeadersView");
                                            columnHeadersView && columnHeadersView.render();
                                            that.component._fireContentReadyAction()
                                        }
                                    })
                                }
                            }
                        },
                        controllers: {
                            stateStoring: {
                                init() {
                                    this.callBase.apply(this, arguments);
                                    processLoadState(this)
                                },
                                isLoading() {
                                    return this.callBase() || this.getController("data").isStateLoading()
                                },
                                state(state) {
                                    const result = this.callBase.apply(this, arguments);
                                    if (void 0 !== state) {
                                        this.applyState((0, _extend.extend)(true, {}, state))
                                    }
                                    return result
                                },
                                updateState(state) {
                                    if (this.isEnabled()) {
                                        const oldState = this.state();
                                        const newState = (0, _extend.extend)({}, oldState, state);
                                        const oldStateHash = (0, _common.getKeyHash)(oldState);
                                        const newStateHash = (0, _common.getKeyHash)(newState);
                                        if (!(0, _common.equalByValue)(oldStateHash, newStateHash)) {
                                            state = (0, _extend.extend)(true, {}, state);
                                            (0, _extend.extend)(this._state, state);
                                            this.save()
                                        }
                                    } else {
                                        (0, _extend.extend)(this._state, state)
                                    }
                                },
                                applyState(state) {
                                    var _a;
                                    const {
                                        allowedPageSizes: allowedPageSizes
                                    } = state;
                                    const {
                                        searchText: searchText
                                    } = state;
                                    const {
                                        selectedRowKeys: selectedRowKeys
                                    } = state;
                                    const {
                                        selectionFilter: selectionFilter
                                    } = state;
                                    const exportController = this.getController("export");
                                    const columnsController = this.getController("columns");
                                    const dataController = this.getController("data");
                                    const scrollingMode = this.option("scrolling.mode");
                                    const isVirtualScrollingMode = "virtual" === scrollingMode || "infinite" === scrollingMode;
                                    const showPageSizeSelector = true === this.option("pager.visible") && this.option("pager.showPageSizeSelector");
                                    const hasHeight = null === (_a = this.getView("rowsView")) || void 0 === _a ? void 0 : _a.hasHeight();
                                    this.component.beginUpdate();
                                    if (columnsController) {
                                        columnsController.setUserState(state.columns)
                                    }
                                    if (exportController) {
                                        exportController.selectionOnly(state.exportSelectionOnly)
                                    }
                                    if (!this.option("selection.deferred")) {
                                        this.option("selectedRowKeys", selectedRowKeys || [])
                                    }
                                    this.option("selectionFilter", selectionFilter);
                                    if (allowedPageSizes && "auto" === this.option("pager.allowedPageSizes")) {
                                        this.option("pager").allowedPageSizes = allowedPageSizes
                                    }
                                    if (this.option("focusedRowEnabled")) {
                                        this.option("focusedRowIndex", -1);
                                        this.option("focusedRowKey", state.focusedRowKey || null)
                                    }
                                    this.component.endUpdate();
                                    this.option("searchPanel.text", searchText || "");
                                    this.option("filterValue", ((that, state) => {
                                        const filterSyncController = that.getController("filterSync");
                                        const columnsController = that.getController("columns");
                                        const hasFilterState = state.columns || void 0 !== state.filterValue;
                                        if (filterSyncController) {
                                            if (hasFilterState) {
                                                return state.filterValue || filterSyncController.getFilterValueFromColumns(state.columns)
                                            }
                                            return that._initialFilterValue || filterSyncController.getFilterValueFromColumns(columnsController.getColumns())
                                        }
                                        return null
                                    })(this, state));
                                    this.option("filterPanel.filterEnabled", state.filterPanel ? state.filterPanel.filterEnabled : true);
                                    this.option("paging.pageIndex", (!isVirtualScrollingMode || hasHeight) && state.pageIndex || 0);
                                    this.option("paging.pageSize", (!isVirtualScrollingMode || showPageSizeSelector) && (0, _type.isDefined)(state.pageSize) ? state.pageSize : this._initialPageSize);
                                    dataController && dataController.reset()
                                }
                            },
                            columns: {
                                _shouldReturnVisibleColumns() {
                                    const result = this.callBase.apply(this, arguments);
                                    const stateStoringController = this.getController("stateStoring");
                                    return result && (!stateStoringController.isEnabled() || stateStoringController.isLoaded())
                                }
                            },
                            data: {
                                callbackNames() {
                                    return this.callBase().concat(["stateLoaded"])
                                },
                                _refreshDataSource() {
                                    const {
                                        callBase: callBase
                                    } = this;
                                    const stateStoringController = this.getController("stateStoring");
                                    if (stateStoringController.isEnabled() && !stateStoringController.isLoaded()) {
                                        clearTimeout(this._restoreStateTimeoutID);
                                        const deferred = new _deferred.Deferred;
                                        this._restoreStateTimeoutID = setTimeout(() => {
                                            stateStoringController.load().always(() => {
                                                this._restoreStateTimeoutID = null
                                            }).done(() => {
                                                callBase.call(this);
                                                this.stateLoaded.fire();
                                                deferred.resolve()
                                            }).fail(error => {
                                                this.stateLoaded.fire();
                                                this._handleLoadError(error || "Unknown error");
                                                deferred.reject()
                                            })
                                        });
                                        return deferred.promise()
                                    }
                                    if (!this.isStateLoading()) {
                                        callBase.call(this)
                                    }
                                },
                                isLoading() {
                                    const stateStoringController = this.getController("stateStoring");
                                    return this.callBase() || stateStoringController.isLoading()
                                },
                                isStateLoading() {
                                    return (0, _type.isDefined)(this._restoreStateTimeoutID)
                                },
                                isLoaded() {
                                    return this.callBase() && !this.isStateLoading()
                                },
                                dispose() {
                                    clearTimeout(this._restoreStateTimeoutID);
                                    this.callBase()
                                }
                            },
                            selection: {
                                _fireSelectionChanged(options) {
                                    const stateStoringController = this.getController("stateStoring");
                                    const isDeferredSelection = this.option("selection.deferred");
                                    if (stateStoringController.isLoading() && isDeferredSelection) {
                                        return
                                    }
                                    this.callBase.apply(this, arguments)
                                }
                            }
                        }
                    }
                };
                exports.stateStoringModule = stateStoringModule
            },
        84651:
            /*!**************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/state_storing/m_state_storing_core.js ***!
              \**************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _storage = __webpack_require__( /*! ../../../../core/utils/storage */ 36613);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _window = __webpack_require__( /*! ../../../../core/utils/window */ 58201);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../events/core/events_engine */ 55994));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.errors */ 96688));
                var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 15943));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const DATE_REGEX = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/;
                const parseDates = function(state) {
                    if (!state) {
                        return
                    }(0, _iterator.each)(state, (key, value) => {
                        if ((0, _type.isPlainObject)(value) || Array.isArray(value)) {
                            parseDates(value)
                        } else if ("string" === typeof value) {
                            const date = DATE_REGEX.exec(value);
                            if (date) {
                                state[key] = new Date(Date.UTC(+date[1], +date[2] - 1, +date[3], +date[4], +date[5], +date[6]))
                            }
                        }
                    })
                };
                const StateStoringController = _m_modules.default.ViewController.inherit(function() {
                    const getStorage = function(options) {
                        const storage = "sessionStorage" === options.type ? (0, _storage.sessionStorage)() : (0, _window.getWindow)().localStorage;
                        if (!storage) {
                            throw new Error("E1007")
                        }
                        return storage
                    };
                    const getUniqueStorageKey = function(options) {
                        return (0, _type.isDefined)(options.storageKey) ? options.storageKey : "storage"
                    };
                    return {
                        _loadState() {
                            const options = this.option("stateStoring");
                            if ("custom" === options.type) {
                                return options.customLoad && options.customLoad()
                            }
                            try {
                                return JSON.parse(getStorage(options).getItem(getUniqueStorageKey(options)))
                            } catch (e) {
                                _ui.default.log("W1022", "State storing", e.message)
                            }
                        },
                        _saveState(state) {
                            const options = this.option("stateStoring");
                            if ("custom" === options.type) {
                                options.customSave && options.customSave(state);
                                return
                            }
                            try {
                                getStorage(options).setItem(getUniqueStorageKey(options), JSON.stringify(state))
                            } catch (e) {
                                _ui.default.log(e.message)
                            }
                        },
                        publicMethods: () => ["state"],
                        isEnabled() {
                            return this.option("stateStoring.enabled")
                        },
                        init() {
                            const that = this;
                            that._state = {};
                            that._isLoaded = false;
                            that._isLoading = false;
                            that._windowUnloadHandler = function() {
                                if (void 0 !== that._savingTimeoutID) {
                                    that._saveState(that.state())
                                }
                            };
                            _events_engine.default.on((0, _window.getWindow)(), "unload", that._windowUnloadHandler);
                            return that
                        },
                        isLoaded() {
                            return this._isLoaded
                        },
                        isLoading() {
                            return this._isLoading
                        },
                        load() {
                            this._isLoading = true;
                            const loadResult = (0, _deferred.fromPromise)(this._loadState());
                            loadResult.always(() => {
                                this._isLoaded = true;
                                this._isLoading = false
                            }).done(state => {
                                if (null !== state && !(0, _type.isEmptyObject)(state)) {
                                    this.state(state)
                                }
                            });
                            return loadResult
                        },
                        state(state) {
                            const that = this;
                            if (!arguments.length) {
                                return (0, _extend.extend)(true, {}, that._state)
                            }
                            that._state = (0, _extend.extend)({}, state);
                            parseDates(that._state)
                        },
                        save() {
                            const that = this;
                            clearTimeout(that._savingTimeoutID);
                            that._savingTimeoutID = setTimeout(() => {
                                that._saveState(that.state());
                                that._savingTimeoutID = void 0
                            }, that.option("stateStoring.savingTimeout"))
                        },
                        optionChanged(args) {
                            const that = this;
                            switch (args.name) {
                                case "stateStoring":
                                    if (that.isEnabled() && !that.isLoading()) {
                                        that.load()
                                    }
                                    args.handled = true;
                                    break;
                                default:
                                    that.callBase(args)
                            }
                        },
                        dispose() {
                            clearTimeout(this._savingTimeoutID);
                            _events_engine.default.off((0, _window.getWindow)(), "unload", this._windowUnloadHandler)
                        }
                    }
                }());
                var _default = {
                    StateStoringController: StateStoringController
                };
                exports.default = _default
            },
        39830:
            /*!***************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/validating/m_validating.js ***!
              \***************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.validatingModule = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/browser */ 47810));
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _size = __webpack_require__( /*! ../../../../core/utils/size */ 58664);
                var _string = __webpack_require__( /*! ../../../../core/utils/string */ 68752);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _array_utils = __webpack_require__( /*! ../../../../data/array_utils */ 60637);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../events/core/events_engine */ 55994));
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../../events/pointer */ 93786));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/message */ 28109));
                var _button = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/button */ 63008));
                var _load_indicator = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/load_indicator */ 2492));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/overlay/ui.overlay */ 89799));
                var _themes = __webpack_require__( /*! ../../../../ui/themes */ 75811);
                var _validation_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/validation_engine */ 90964));
                var _validator = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/validator */ 39562));
                var _selectors = __webpack_require__( /*! ../../../../ui/widget/selectors */ 31421);
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.errors */ 96688));
                var _const = __webpack_require__( /*! ../editing/const */ 72313);
                var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 15943));
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 60082));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const EDIT_MODE_ROW = "row";
                const EDIT_MODE_BATCH = "batch";
                const EDIT_MODE_CELL = "cell";
                const FORM_BASED_MODES = ["popup", "form"];
                const VALIDATION_STATUS_valid = "valid",
                    VALIDATION_STATUS_invalid = "invalid",
                    VALIDATION_STATUS_pending = "pending";
                const validationResultIsValid = function(result) {
                    return (0, _type.isDefined)(result) && "cancel" !== result
                };
                const cellValueShouldBeValidated = function(value, rowOptions) {
                    return void 0 !== value || void 0 === value && rowOptions && !rowOptions.isNewRow
                };
                const ValidatingController = _m_modules.default.Controller.inherit({
                    init() {
                        this._editingController = this.getController("editing");
                        this.createAction("onRowValidating");
                        if (!this._validationState) {
                            this.initValidationState()
                        }
                    },
                    initValidationState() {
                        this._validationState = [];
                        this._validationStateCache = {}
                    },
                    _rowIsValidated(change) {
                        const validationData = this._getValidationData(null === change || void 0 === change ? void 0 : change.key);
                        return !!validationData && !!validationData.validated
                    },
                    _getValidationData(key, create) {
                        const keyHash = (0, _common.getKeyHash)(key);
                        const isObjectKeyHash = (0, _type.isObject)(keyHash);
                        let validationData;
                        if (isObjectKeyHash) {
                            validationData = this._validationState.filter(data => (0, _common.equalByValue)(data.key, key))[0]
                        } else {
                            validationData = this._validationStateCache[keyHash]
                        }
                        if (!validationData && create) {
                            validationData = {
                                key: key,
                                isValid: true
                            };
                            this._validationState.push(validationData);
                            if (!isObjectKeyHash) {
                                this._validationStateCache[keyHash] = validationData
                            }
                        }
                        return validationData
                    },
                    _getBrokenRules(validationData, validationResults) {
                        let brokenRules;
                        if (validationResults) {
                            brokenRules = validationResults.brokenRules || validationResults.brokenRule && [validationResults.brokenRule]
                        } else {
                            brokenRules = validationData.brokenRules || []
                        }
                        return brokenRules
                    },
                    _rowValidating(validationData, validationResults) {
                        const deferred = new _deferred.Deferred;
                        const change = this._editingController.getChangeByKey(null === validationData || void 0 === validationData ? void 0 : validationData.key);
                        const brokenRules = this._getBrokenRules(validationData, validationResults);
                        const isValid = validationResults ? validationResults.isValid : validationData.isValid;
                        const parameters = {
                            brokenRules: brokenRules,
                            isValid: isValid,
                            key: change.key,
                            newData: change.data,
                            oldData: this._editingController._getOldData(change.key),
                            promise: null,
                            errorText: this.getHiddenValidatorsErrorText(brokenRules)
                        };
                        this.executeAction("onRowValidating", parameters);
                        (0, _deferred.when)((0, _deferred.fromPromise)(parameters.promise)).always(() => {
                            validationData.isValid = parameters.isValid;
                            validationData.errorText = parameters.errorText;
                            deferred.resolve(parameters)
                        });
                        return deferred.promise()
                    },
                    getHiddenValidatorsErrorText(brokenRules) {
                        const brokenRulesMessages = [];
                        (0, _iterator.each)(brokenRules, (_, brokenRule) => {
                            const {
                                column: column
                            } = brokenRule;
                            const isGroupExpandColumn = column && void 0 !== column.groupIndex && !column.showWhenGrouped;
                            const isVisibleColumn = column && column.visible;
                            if (!brokenRule.validator.$element().parent().length && (!isVisibleColumn || isGroupExpandColumn)) {
                                brokenRulesMessages.push(brokenRule.message)
                            }
                        });
                        return brokenRulesMessages.join(", ")
                    },
                    validate(isFull) {
                        let isValid = true;
                        const editingController = this._editingController;
                        const deferred = new _deferred.Deferred;
                        const completeList = [];
                        const editMode = editingController.getEditMode();
                        isFull = isFull || editMode === EDIT_MODE_ROW;
                        if (this._isValidationInProgress) {
                            return deferred.resolve(false).promise()
                        }
                        this._isValidationInProgress = true;
                        if (isFull) {
                            editingController.addDeferred(deferred);
                            const changes = editingController.getChanges();
                            (0, _iterator.each)(changes, (index, _ref) => {
                                let {
                                    type: type,
                                    key: key
                                } = _ref;
                                if ("remove" !== type) {
                                    const validationData = this._getValidationData(key, true);
                                    const validationResult = this.validateGroup(validationData);
                                    completeList.push(validationResult);
                                    validationResult.done(validationResult => {
                                        validationData.validated = true;
                                        isValid = isValid && validationResult.isValid
                                    })
                                }
                            })
                        } else if (this._currentCellValidator) {
                            const validationResult = this.validateGroup(this._currentCellValidator._findGroup());
                            completeList.push(validationResult);
                            validationResult.done(validationResult => {
                                isValid = validationResult.isValid
                            })
                        }(0, _deferred.when)(...completeList).done(() => {
                            this._isValidationInProgress = false;
                            deferred.resolve(isValid)
                        });
                        return deferred.promise()
                    },
                    validateGroup(validationData) {
                        const result = new _deferred.Deferred;
                        const validateGroup = validationData && _validation_engine.default.getGroupConfig(validationData);
                        let validationResult;
                        if (null === validateGroup || void 0 === validateGroup ? void 0 : validateGroup.validators.length) {
                            this.resetRowValidationResults(validationData);
                            validationResult = _validation_engine.default.validateGroup(validationData)
                        }(0, _deferred.when)((null === validationResult || void 0 === validationResult ? void 0 : validationResult.complete) || validationResult).done(validationResult => {
                            (0, _deferred.when)(this._rowValidating(validationData, validationResult)).done(result.resolve)
                        });
                        return result.promise()
                    },
                    isRowDataModified: change => !(0, _type.isEmptyObject)(change.data),
                    updateValidationState(change) {
                        const editMode = this._editingController.getEditMode();
                        const {
                            key: key
                        } = change;
                        const validationData = this._getValidationData(key, true);
                        if (!FORM_BASED_MODES.includes(editMode)) {
                            if ("insert" === change.type && !this.isRowDataModified(change)) {
                                validationData.isValid = true;
                                return
                            }
                            this.setDisableApplyValidationResults(true);
                            const groupConfig = _validation_engine.default.getGroupConfig(validationData);
                            if (groupConfig) {
                                const validationResult = _validation_engine.default.validateGroup(validationData);
                                (0, _deferred.when)(validationResult.complete || validationResult).done(validationResult => {
                                    validationData.isValid = validationResult.isValid;
                                    validationData.brokenRules = validationResult.brokenRules
                                })
                            } else if (!validationData.brokenRules || !validationData.brokenRules.length) {
                                validationData.isValid = true
                            }
                            this.setDisableApplyValidationResults(false)
                        } else {
                            validationData.isValid = true
                        }
                    },
                    setValidator(validator) {
                        this._currentCellValidator = validator
                    },
                    renderCellPendingIndicator($container) {
                        let $indicator = $container.find(".".concat("dx-pending-indicator"));
                        if (!$indicator.length) {
                            const $indicatorContainer = $container;
                            $indicator = (0, _renderer.default)("<div>").appendTo($indicatorContainer).addClass("dx-pending-indicator");
                            this._createComponent($indicator, _load_indicator.default);
                            $container.addClass("dx-validation-pending")
                        }
                    },
                    disposeCellPendingIndicator($container) {
                        const $indicator = $container.find(".".concat("dx-pending-indicator"));
                        if ($indicator.length) {
                            const indicator = _load_indicator.default.getInstance($indicator);
                            if (indicator) {
                                indicator.dispose();
                                indicator.$element().remove()
                            }
                            $container.removeClass("dx-validation-pending")
                        }
                    },
                    validationStatusChanged(result) {
                        const {
                            validator: validator
                        } = result;
                        const validationGroup = validator.option("validationGroup");
                        const {
                            column: column
                        } = validator.option("dataGetter")();
                        this.updateCellValidationResult({
                            rowKey: validationGroup.key,
                            columnIndex: column.index,
                            validationResult: result
                        })
                    },
                    validatorInitialized(arg) {
                        arg.component.on("validating", this.validationStatusChanged.bind(this));
                        arg.component.on("validated", this.validationStatusChanged.bind(this))
                    },
                    validatorDisposing(arg) {
                        const validator = arg.component;
                        const validationGroup = validator.option("validationGroup");
                        const {
                            column: column
                        } = validator.option("dataGetter")();
                        const result = this.getCellValidationResult({
                            rowKey: null === validationGroup || void 0 === validationGroup ? void 0 : validationGroup.key,
                            columnIndex: column.index
                        });
                        if (validationResultIsValid(result) && result.status === VALIDATION_STATUS_pending) {
                            this.cancelCellValidationResult({
                                change: validationGroup,
                                columnIndex: column.index
                            })
                        }
                    },
                    applyValidationResult($container, result) {
                        const {
                            validator: validator
                        } = result;
                        const validationGroup = validator.option("validationGroup");
                        const {
                            column: column
                        } = validator.option("dataGetter")();
                        result.brokenRules && result.brokenRules.forEach(rule => {
                            rule.columnIndex = column.index;
                            rule.column = column
                        });
                        if ($container) {
                            const validationResult = this.getCellValidationResult({
                                rowKey: validationGroup.key,
                                columnIndex: column.index
                            });
                            const requestIsDisabled = validationResultIsValid(validationResult) && validationResult.disabledPendingId === result.id;
                            if (this._disableApplyValidationResults || requestIsDisabled) {
                                return
                            }
                            if (result.status === VALIDATION_STATUS_invalid) {
                                const $focus = $container.find(":focus");
                                if (!(0, _selectors.focused)($focus)) {
                                    _events_engine.default.trigger($focus, "focus");
                                    _events_engine.default.trigger($focus, _pointer.default.down)
                                }
                            }
                            const editor = !column.editCellTemplate && this.getController("editorFactory").getEditorInstance($container);
                            if (result.status === VALIDATION_STATUS_pending) {
                                if (editor) {
                                    editor.option("validationStatus", VALIDATION_STATUS_pending)
                                } else {
                                    this.renderCellPendingIndicator($container)
                                }
                            } else if (editor) {
                                editor.option("validationStatus", VALIDATION_STATUS_valid)
                            } else {
                                this.disposeCellPendingIndicator($container)
                            }
                            $container.toggleClass(this.addWidgetPrefix("invalid"), result.status === VALIDATION_STATUS_invalid)
                        }
                    },
                    _syncInternalEditingData(parameters) {
                        var _a;
                        const editingController = this._editingController;
                        const change = editingController.getChangeByKey(parameters.key);
                        const oldDataFromState = editingController._getOldData(parameters.key);
                        const oldData = null === (_a = parameters.row) || void 0 === _a ? void 0 : _a.oldData;
                        if (change && oldData && !oldDataFromState) {
                            editingController._addInternalData({
                                key: parameters.key,
                                oldData: oldData
                            })
                        }
                    },
                    createValidator(parameters, $container) {
                        var _a, _b;
                        const editingController = this._editingController;
                        const {
                            column: column
                        } = parameters;
                        let {
                            showEditorAlways: showEditorAlways
                        } = column;
                        if ((0, _type.isDefined)(column.command) || !column.validationRules || !Array.isArray(column.validationRules) || !column.validationRules.length) {
                            return
                        }
                        const editIndex = editingController.getIndexByKey(parameters.key, editingController.getChanges());
                        let needCreateValidator = editIndex > -1;
                        if (!needCreateValidator) {
                            if (!showEditorAlways) {
                                const columnsController = this.getController("columns");
                                const visibleColumns = (null === columnsController || void 0 === columnsController ? void 0 : columnsController.getVisibleColumns()) || [];
                                showEditorAlways = visibleColumns.some(column => column.showEditorAlways)
                            }
                            const isEditRow = (0, _common.equalByValue)(this.option("editing.editRowKey"), parameters.key);
                            const isCellOrBatchEditingAllowed = editingController.isCellOrBatchEditMode() && editingController.allowUpdating({
                                row: parameters.row
                            });
                            needCreateValidator = isEditRow || isCellOrBatchEditingAllowed && showEditorAlways;
                            if (isCellOrBatchEditingAllowed && showEditorAlways) {
                                editingController._addInternalData({
                                    key: parameters.key,
                                    oldData: null !== (_b = null === (_a = parameters.row) || void 0 === _a ? void 0 : _a.oldData) && void 0 !== _b ? _b : parameters.data
                                })
                            }
                        }
                        if (needCreateValidator) {
                            if ($container && !$container.length) {
                                _ui2.default.log("E1050");
                                return
                            }
                            this._syncInternalEditingData(parameters);
                            const validationData = this._getValidationData(parameters.key, true);
                            const getValue = () => {
                                const change = editingController.getChangeByKey(null === validationData || void 0 === validationData ? void 0 : validationData.key);
                                const value = column.calculateCellValue((null === change || void 0 === change ? void 0 : change.data) || {});
                                return void 0 !== value ? value : parameters.value
                            };
                            const useDefaultValidator = $container && $container.hasClass("dx-widget");
                            $container && $container.addClass(this.addWidgetPrefix("validator"));
                            const validator = new _validator.default($container || (0, _renderer.default)("<div>"), {
                                name: column.caption,
                                validationRules: (0, _extend.extend)(true, [], column.validationRules),
                                validationGroup: validationData,
                                adapter: useDefaultValidator ? null : {
                                    getValue: getValue,
                                    applyValidationResults: result => {
                                        this.applyValidationResult($container, result)
                                    }
                                },
                                dataGetter() {
                                    const key = null === validationData || void 0 === validationData ? void 0 : validationData.key;
                                    const change = editingController.getChangeByKey(key);
                                    const oldData = editingController._getOldData(key);
                                    return {
                                        data: (0, _array_utils.createObjectWithChanges)(oldData, null === change || void 0 === change ? void 0 : change.data),
                                        column: column
                                    }
                                },
                                onInitialized: this.validatorInitialized.bind(this),
                                onDisposing: this.validatorDisposing.bind(this)
                            });
                            if (useDefaultValidator) {
                                const adapter = validator.option("adapter");
                                if (adapter) {
                                    const originBypass = adapter.bypass;
                                    const defaultAdapterBypass = () => parameters.row.isNewRow && !this._isValidationInProgress && !editingController.isCellModified(parameters);
                                    adapter.getValue = getValue;
                                    adapter.validationRequestsCallbacks = [];
                                    adapter.bypass = () => originBypass.call(adapter) || defaultAdapterBypass()
                                }
                            }
                            return validator
                        }
                        return
                    },
                    setDisableApplyValidationResults(flag) {
                        this._disableApplyValidationResults = flag
                    },
                    getDisableApplyValidationResults() {
                        return this._disableApplyValidationResults
                    },
                    isCurrentValidatorProcessing(_ref2) {
                        let {
                            rowKey: rowKey,
                            columnIndex: columnIndex
                        } = _ref2;
                        return this._currentCellValidator && (0, _common.equalByValue)(this._currentCellValidator.option("validationGroup").key, rowKey) && this._currentCellValidator.option("dataGetter")().column.index === columnIndex
                    },
                    validateCell(validator) {
                        const cellParams = {
                            rowKey: validator.option("validationGroup").key,
                            columnIndex: validator.option("dataGetter")().column.index
                        };
                        let validationResult = this.getCellValidationResult(cellParams);
                        const stateRestored = validationResultIsValid(validationResult);
                        const adapter = validator.option("adapter");
                        if (!stateRestored) {
                            validationResult = validator.validate()
                        } else {
                            const currentCellValue = adapter.getValue();
                            if (!(0, _common.equalByValue)(currentCellValue, validationResult.value)) {
                                validationResult = validator.validate()
                            }
                        }
                        const deferred = new _deferred.Deferred;
                        if (stateRestored && validationResult.status === VALIDATION_STATUS_pending) {
                            this.updateCellValidationResult(cellParams);
                            adapter.applyValidationResults(validationResult)
                        }(0, _deferred.when)(validationResult.complete || validationResult).done(validationResult => {
                            stateRestored && adapter.applyValidationResults(validationResult);
                            deferred.resolve(validationResult)
                        });
                        return deferred.promise()
                    },
                    updateCellValidationResult(_ref3) {
                        let {
                            rowKey: rowKey,
                            columnIndex: columnIndex,
                            validationResult: validationResult
                        } = _ref3;
                        const validationData = this._getValidationData(rowKey);
                        if (!validationData) {
                            return
                        }
                        if (!validationData.validationResults) {
                            validationData.validationResults = {}
                        }
                        let result;
                        if (validationResult) {
                            result = (0, _extend.extend)({}, validationResult);
                            validationData.validationResults[columnIndex] = result;
                            if (validationResult.status === VALIDATION_STATUS_pending) {
                                if (this._editingController.getEditMode() === EDIT_MODE_CELL) {
                                    result.deferred = new _deferred.Deferred;
                                    result.complete.always(() => {
                                        result.deferred.resolve()
                                    });
                                    this._editingController.addDeferred(result.deferred)
                                }
                                if (this._disableApplyValidationResults) {
                                    result.disabledPendingId = validationResult.id;
                                    return
                                }
                            }
                        } else {
                            result = validationData.validationResults[columnIndex]
                        }
                        if (result && result.disabledPendingId) {
                            delete result.disabledPendingId
                        }
                    },
                    getCellValidationResult(_ref4) {
                        let {
                            rowKey: rowKey,
                            columnIndex: columnIndex
                        } = _ref4;
                        var _a;
                        const validationData = this._getValidationData(rowKey, true);
                        return null === (_a = null === validationData || void 0 === validationData ? void 0 : validationData.validationResults) || void 0 === _a ? void 0 : _a[columnIndex]
                    },
                    removeCellValidationResult(_ref5) {
                        let {
                            change: change,
                            columnIndex: columnIndex
                        } = _ref5;
                        const validationData = this._getValidationData(null === change || void 0 === change ? void 0 : change.key);
                        if (validationData && validationData.validationResults) {
                            this.cancelCellValidationResult({
                                change: change,
                                columnIndex: columnIndex
                            });
                            delete validationData.validationResults[columnIndex]
                        }
                    },
                    cancelCellValidationResult(_ref6) {
                        let {
                            change: change,
                            columnIndex: columnIndex
                        } = _ref6;
                        const validationData = this._getValidationData(change.key);
                        if (change && validationData.validationResults) {
                            const result = validationData.validationResults[columnIndex];
                            if (result) {
                                result.deferred && result.deferred.reject("cancel");
                                validationData.validationResults[columnIndex] = "cancel"
                            }
                        }
                    },
                    resetRowValidationResults(validationData) {
                        if (validationData) {
                            validationData.validationResults && delete validationData.validationResults;
                            delete validationData.validated
                        }
                    },
                    isInvalidCell(_ref7) {
                        let {
                            rowKey: rowKey,
                            columnIndex: columnIndex
                        } = _ref7;
                        const result = this.getCellValidationResult({
                            rowKey: rowKey,
                            columnIndex: columnIndex
                        });
                        return validationResultIsValid(result) && result.status === VALIDATION_STATUS_invalid
                    },
                    getCellValidator(_ref8) {
                        let {
                            rowKey: rowKey,
                            columnIndex: columnIndex
                        } = _ref8;
                        const validationData = this._getValidationData(rowKey);
                        const groupConfig = validationData && _validation_engine.default.getGroupConfig(validationData);
                        const validators = groupConfig && groupConfig.validators;
                        return validators && validators.filter(v => {
                            const {
                                column: column
                            } = v.option("dataGetter")();
                            return column ? column.index === columnIndex : false
                        })[0]
                    },
                    setCellValidationStatus(cellOptions) {
                        const validationResult = this.getCellValidationResult({
                            rowKey: cellOptions.key,
                            columnIndex: cellOptions.column.index
                        });
                        if ((0, _type.isDefined)(validationResult)) {
                            cellOptions.validationStatus = "cancel" !== validationResult ? validationResult.status : "cancel"
                        } else {
                            delete cellOptions.validationStatus
                        }
                    }
                });
                const validatingModule = {
                    defaultOptions: () => ({
                        editing: {
                            texts: {
                                validationCancelChanges: _message.default.format("dxDataGrid-validationCancelChanges")
                            }
                        }
                    }),
                    controllers: {
                        validating: ValidatingController
                    },
                    extenders: {
                        controllers: {
                            editing: {
                                _addChange(changeParams) {
                                    const change = this.callBase.apply(this, arguments);
                                    const validatingController = this.getController("validating");
                                    if (change && "remove" !== changeParams.type) {
                                        validatingController.updateValidationState(change)
                                    }
                                    return change
                                },
                                _handleChangesChange(args) {
                                    this.callBase.apply(this, arguments);
                                    const validatingController = this.getController("validating");
                                    args.value.forEach(change => {
                                        if (void 0 === validatingController._getValidationData(change.key)) {
                                            validatingController.updateValidationState(change)
                                        }
                                    })
                                },
                                _updateRowAndPageIndices() {
                                    const that = this;
                                    const startInsertIndex = that.getView("rowsView").getTopVisibleItemIndex();
                                    let rowIndex = startInsertIndex;
                                    (0, _iterator.each)(that.getChanges(), (_, _ref9) => {
                                        let {
                                            key: key,
                                            type: type
                                        } = _ref9;
                                        const validationData = this.getController("validating")._getValidationData(key);
                                        if (validationData && !validationData.isValid && validationData.pageIndex !== that._pageIndex) {
                                            validationData.pageIndex = that._pageIndex;
                                            if ("insert" === type) {
                                                validationData.rowIndex = startInsertIndex
                                            } else {
                                                validationData.rowIndex = rowIndex
                                            }
                                            rowIndex++
                                        }
                                    })
                                },
                                _getValidationGroupsInForm(detailOptions) {
                                    const validatingController = this.getController("validating");
                                    const validationData = validatingController._getValidationData(detailOptions.key, true);
                                    return {
                                        validationGroup: validationData
                                    }
                                },
                                _validateEditFormAfterUpdate(row, isCustomSetCellValue) {
                                    if (isCustomSetCellValue && this._editForm) {
                                        this._editForm.validate()
                                    }
                                    this.callBase.apply(this, arguments)
                                },
                                _prepareEditCell(params) {
                                    const isNotCanceled = this.callBase.apply(this, arguments);
                                    const validatingController = this.getController("validating");
                                    if (isNotCanceled && params.column.showEditorAlways) {
                                        validatingController.updateValidationState({
                                            key: params.key
                                        })
                                    }
                                    return isNotCanceled
                                },
                                processItems(items, changeType) {
                                    const changes = this.getChanges();
                                    const dataController = this.getController("data");
                                    const validatingController = this.getController("validating");
                                    items = this.callBase(items, changeType);
                                    const itemsCount = items.length;
                                    const addInValidItem = function(change, validationData) {
                                        const data = {
                                            key: change.key
                                        };
                                        const index = function(change, items) {
                                            let index = -1;
                                            const isInsert = "insert" === change.type;
                                            const {
                                                key: key
                                            } = change;
                                            (0, _iterator.each)(items, (i, item) => {
                                                if ((0, _common.equalByValue)(key, isInsert ? item.key : dataController.keyOf(item))) {
                                                    index = i;
                                                    return false
                                                }
                                                return
                                            });
                                            return index
                                        }(change, items);
                                        if (index >= 0) {
                                            return
                                        }
                                        validationData.rowIndex = validationData.rowIndex > itemsCount ? validationData.rowIndex % itemsCount : validationData.rowIndex;
                                        const {
                                            rowIndex: rowIndex
                                        } = validationData;
                                        data.__DX_INSERT_INDEX__ = 1;
                                        items.splice(rowIndex, 0, data)
                                    };
                                    if (this.getEditMode() === EDIT_MODE_BATCH && "prepend" !== changeType && "append" !== changeType) {
                                        changes.forEach(change => {
                                            const {
                                                key: key
                                            } = change;
                                            const validationData = validatingController._getValidationData(key);
                                            if (validationData && change.type && validationData.pageIndex === this._pageIndex && (null === change || void 0 === change ? void 0 : change.pageIndex) !== this._pageIndex) {
                                                addInValidItem(change, validationData)
                                            }
                                        })
                                    }
                                    return items
                                },
                                processDataItem(item) {
                                    const isInserted = item.data.__DX_INSERT_INDEX__;
                                    const key = isInserted ? item.data.key : item.key;
                                    const editMode = this.getEditMode();
                                    if (editMode === EDIT_MODE_BATCH && isInserted && key) {
                                        const changes = this.getChanges();
                                        const editIndex = _m_utils.default.getIndexByKey(key, changes);
                                        if (editIndex >= 0) {
                                            const change = changes[editIndex];
                                            if ("insert" !== change.type) {
                                                const oldData = this._getOldData(change.key);
                                                item.data = (0, _extend.extend)(true, {}, oldData, change.data);
                                                item.key = key
                                            }
                                        }
                                    }
                                    this.callBase.apply(this, arguments)
                                },
                                _createInvisibleColumnValidators(changes) {
                                    const that = this;
                                    const validatingController = this.getController("validating");
                                    const columnsController = this.getController("columns");
                                    const columns = columnsController.getColumns();
                                    const invisibleColumns = columnsController.getInvisibleColumns().filter(column => !column.isBand);
                                    const groupColumns = columnsController.getGroupColumns().filter(column => !column.showWhenGrouped && -1 === invisibleColumns.indexOf(column));
                                    const invisibleColumnValidators = [];
                                    const isCellVisible = (column, rowKey) => this._dataController.getRowIndexByKey(rowKey) >= 0 && invisibleColumns.indexOf(column) < 0;
                                    invisibleColumns.push(...groupColumns);
                                    if (!FORM_BASED_MODES.includes(this.getEditMode())) {
                                        (0, _iterator.each)(columns, (_, column) => {
                                            changes.forEach(change => {
                                                let data;
                                                if (isCellVisible(column, change.key)) {
                                                    return
                                                }
                                                if ("insert" === change.type) {
                                                    data = change.data
                                                } else if ("update" === change.type) {
                                                    const oldData = that._getOldData(change.key);
                                                    if (!(0, _type.isDefined)(oldData)) {
                                                        return
                                                    }
                                                    data = (0, _array_utils.createObjectWithChanges)(oldData, change.data)
                                                }
                                                if (data) {
                                                    const validator = validatingController.createValidator({
                                                        column: column,
                                                        key: change.key,
                                                        value: column.calculateCellValue(data)
                                                    });
                                                    if (validator) {
                                                        invisibleColumnValidators.push(validator)
                                                    }
                                                }
                                            })
                                        })
                                    }
                                    return function() {
                                        invisibleColumnValidators.forEach(validator => {
                                            validator.dispose()
                                        })
                                    }
                                },
                                _beforeSaveEditData(change, editIndex) {
                                    let result = this.callBase.apply(this, arguments);
                                    const validatingController = this.getController("validating");
                                    const validationData = validatingController._getValidationData(null === change || void 0 === change ? void 0 : change.key);
                                    if (change) {
                                        const isValid = "remove" === change.type || validationData.isValid;
                                        result = result || !isValid
                                    } else {
                                        const disposeValidators = this._createInvisibleColumnValidators(this.getChanges());
                                        result = new _deferred.Deferred;
                                        this.executeOperation(result, () => {
                                            validatingController.validate(true).done(isFullValid => {
                                                disposeValidators();
                                                this._updateRowAndPageIndices();
                                                switch (this.getEditMode()) {
                                                    case EDIT_MODE_CELL:
                                                        if (!isFullValid) {
                                                            this._focusEditingCell()
                                                        }
                                                        break;
                                                    case EDIT_MODE_BATCH:
                                                        if (!isFullValid) {
                                                            this._resetEditRowKey();
                                                            this._resetEditColumnName();
                                                            this.getController("data").updateItems()
                                                        }
                                                }
                                                result.resolve(!isFullValid)
                                            })
                                        })
                                    }
                                    return result.promise ? result.promise() : result
                                },
                                _beforeEditCell(rowIndex, columnIndex, item) {
                                    const result = this.callBase(rowIndex, columnIndex, item);
                                    if (this.getEditMode() === EDIT_MODE_CELL) {
                                        const $cell = this._rowsView._getCellElement(rowIndex, columnIndex);
                                        const validator = $cell && $cell.data("dxValidator");
                                        const rowOptions = $cell && $cell.closest(".dx-row").data("options");
                                        const value = validator && validator.option("adapter").getValue();
                                        if (validator && cellValueShouldBeValidated(value, rowOptions)) {
                                            const validatingController = this.getController("validating");
                                            const deferred = new _deferred.Deferred;
                                            (0, _deferred.when)(validatingController.validateCell(validator), result).done((validationResult, result) => {
                                                deferred.resolve(validationResult.status === VALIDATION_STATUS_valid && result)
                                            });
                                            return deferred.promise()
                                        }
                                        if (!validator) {
                                            return result
                                        }
                                    }
                                    return false
                                },
                                _afterSaveEditData(cancel) {
                                    let $firstErrorRow;
                                    const isCellEditMode = this.getEditMode() === EDIT_MODE_CELL;
                                    (0, _iterator.each)(this.getChanges(), (_, change) => {
                                        const $errorRow = this._showErrorRow(change);
                                        $firstErrorRow = $firstErrorRow || $errorRow
                                    });
                                    if ($firstErrorRow) {
                                        const scrollable = this._rowsView.getScrollable();
                                        if (scrollable) {
                                            scrollable.update();
                                            scrollable.scrollToElement($firstErrorRow)
                                        }
                                    }
                                    if (cancel && isCellEditMode && this._needUpdateRow()) {
                                        const editRowIndex = this.getEditRowIndex();
                                        this._dataController.updateItems({
                                            changeType: "update",
                                            rowIndices: [editRowIndex]
                                        });
                                        this._focusEditingCell()
                                    } else if (!cancel) {
                                        let shouldResetValidationState = true;
                                        if (isCellEditMode) {
                                            const columns = this.getController("columns").getColumns();
                                            const columnsWithValidatingEditors = columns.filter(col => {
                                                var _a;
                                                return col.showEditorAlways && (null === (_a = col.validationRules) || void 0 === _a ? void 0 : _a.length) > 0
                                            }).length > 0;
                                            shouldResetValidationState = !columnsWithValidatingEditors
                                        }
                                        if (shouldResetValidationState) {
                                            this.getController("validating").initValidationState()
                                        }
                                    }
                                },
                                _handleDataChanged(args) {
                                    const validationState = this.getController("validating")._validationState;
                                    if ("standard" === this.option("scrolling.mode")) {
                                        this.resetRowAndPageIndices()
                                    }
                                    if ("prepend" === args.changeType) {
                                        (0, _iterator.each)(validationState, (_, validationData) => {
                                            validationData.rowIndex += args.items.length
                                        })
                                    }
                                    this.callBase(args)
                                },
                                resetRowAndPageIndices() {
                                    const validationState = this.getController("validating")._validationState;
                                    (0, _iterator.each)(validationState, (_, validationData) => {
                                        if (validationData.pageIndex !== this._pageIndex) {
                                            delete validationData.pageIndex;
                                            delete validationData.rowIndex
                                        }
                                    })
                                },
                                _beforeCancelEditData() {
                                    this.getController("validating").initValidationState();
                                    this.callBase()
                                },
                                _showErrorRow(change) {
                                    let $popupContent;
                                    const errorHandling = this.getController("errorHandling");
                                    const items = this.getController("data").items();
                                    const rowIndex = this.getIndexByKey(change.key, items);
                                    const validationData = this.getController("validating")._getValidationData(change.key);
                                    if (!(null === validationData || void 0 === validationData ? void 0 : validationData.isValid) && (null === validationData || void 0 === validationData ? void 0 : validationData.errorText) && rowIndex >= 0) {
                                        $popupContent = this.getPopupContent();
                                        return errorHandling && errorHandling.renderErrorRow(null === validationData || void 0 === validationData ? void 0 : validationData.errorText, rowIndex, $popupContent)
                                    }
                                },
                                updateFieldValue(e) {
                                    const validatingController = this.getController("validating");
                                    const deferred = new _deferred.Deferred;
                                    validatingController.removeCellValidationResult({
                                        change: this.getChangeByKey(e.key),
                                        columnIndex: e.column.index
                                    });
                                    this.callBase.apply(this, arguments).done(() => {
                                        const currentValidator = validatingController.getCellValidator({
                                            rowKey: e.key,
                                            columnIndex: e.column.index
                                        });
                                        (0, _deferred.when)(currentValidator && validatingController.validateCell(currentValidator)).done(validationResult => {
                                            this.getController("editorFactory").refocus();
                                            deferred.resolve(validationResult)
                                        })
                                    });
                                    return deferred.promise()
                                },
                                highlightDataCell($cell, parameters) {
                                    this.callBase.apply(this, arguments);
                                    const validatingController = this.getController("validating");
                                    validatingController.setCellValidationStatus(parameters);
                                    const isEditableCell = !!parameters.setValue;
                                    const cellModified = this.isCellModified(parameters);
                                    const isValidated = (0, _type.isDefined)(parameters.validationStatus);
                                    const needValidation = cellModified && parameters.column.setCellValue || isEditableCell && !cellModified && !(parameters.row.isNewRow || !isValidated);
                                    if (needValidation) {
                                        const validator = $cell.data("dxValidator");
                                        if (validator) {
                                            (0, _deferred.when)(this.getController("validating").validateCell(validator)).done(() => {
                                                validatingController.setCellValidationStatus(parameters)
                                            })
                                        }
                                    }
                                },
                                getChangeByKey(key) {
                                    const changes = this.getChanges();
                                    return changes[_m_utils.default.getIndexByKey(key, changes)]
                                },
                                isCellModified(parameters) {
                                    const cellModified = this.callBase(parameters);
                                    const change = this.getChangeByKey(parameters.key);
                                    const isCellInvalid = !!parameters.row && this.getController("validating").isInvalidCell({
                                        rowKey: parameters.key,
                                        columnIndex: parameters.column.index
                                    });
                                    return cellModified || this.getController("validating")._rowIsValidated(change) && isCellInvalid
                                }
                            },
                            editorFactory: {
                                _showRevertButton($container) {
                                    var _a;
                                    let $tooltipElement = null === (_a = this._revertTooltip) || void 0 === _a ? void 0 : _a.$element();
                                    if (!$container || !$container.length) {
                                        null === $tooltipElement || void 0 === $tooltipElement ? void 0 : $tooltipElement.remove();
                                        this._revertTooltip = void 0;
                                        return
                                    }
                                    if ($container.find($tooltipElement).length) {
                                        return
                                    }
                                    const $overlayContainer = $container.closest(".".concat(this.addWidgetPrefix("content"))).parent();
                                    const revertTooltipClass = this.addWidgetPrefix("revert-tooltip");
                                    null === $tooltipElement || void 0 === $tooltipElement ? void 0 : $tooltipElement.remove();
                                    $tooltipElement = (0, _renderer.default)("<div>").addClass(revertTooltipClass).appendTo($container);
                                    const tooltipOptions = {
                                        animation: null,
                                        visible: true,
                                        width: "auto",
                                        height: "auto",
                                        shading: false,
                                        container: $overlayContainer,
                                        propagateOutsideClick: true,
                                        hideOnOutsideClick: false,
                                        wrapperAttr: {
                                            class: revertTooltipClass
                                        },
                                        contentTemplate: () => {
                                            const $buttonElement = (0, _renderer.default)("<div>").addClass("dx-revert-button");
                                            const buttonOptions = {
                                                icon: "revert",
                                                hint: this.option("editing.texts.validationCancelChanges"),
                                                elementAttr: {
                                                    id: "dxRevertButton",
                                                    "aria-label": _message.default.format("dxDataGrid-ariaRevertButton")
                                                },
                                                onClick: () => {
                                                    this._editingController.cancelEditData()
                                                }
                                            };
                                            return new _button.default($buttonElement, buttonOptions).$element()
                                        },
                                        position: {
                                            my: "left top",
                                            at: "right top",
                                            offset: "1 0",
                                            collision: "flip",
                                            boundaryOffset: "0 0",
                                            boundary: this._rowsView.element(),
                                            of: $container
                                        },
                                        onPositioned: this._positionedHandler.bind(this)
                                    };
                                    this._revertTooltip = new _ui.default($tooltipElement, tooltipOptions)
                                },
                                _hideFixedGroupCell($cell, overlayOptions) {
                                    let $nextFixedRowElement;
                                    let $groupCellElement;
                                    const isFixedColumns = this._rowsView.isFixedColumns();
                                    const isFormOrPopupEditMode = this._editingController.isFormOrPopupEditMode();
                                    if (isFixedColumns && !isFormOrPopupEditMode) {
                                        const nextRowOptions = $cell.closest(".dx-row").next().data("options");
                                        if (nextRowOptions && "group" === nextRowOptions.rowType) {
                                            $nextFixedRowElement = (0, _renderer.default)(this._rowsView.getRowElement(nextRowOptions.rowIndex)).last();
                                            $groupCellElement = $nextFixedRowElement.find(".".concat("dx-group-cell"));
                                            if ($groupCellElement.length && "hidden" !== $groupCellElement.get(0).style.visibility) {
                                                $groupCellElement.css("visibility", "hidden");
                                                overlayOptions.onDisposing = function() {
                                                    $groupCellElement.css("visibility", "")
                                                }
                                            }
                                        }
                                    }
                                },
                                _positionedHandler(e, isOverlayVisible) {
                                    if (!e.component.__skipPositionProcessing) {
                                        const isRevertButton = (0, _renderer.default)(e.element).hasClass(this.addWidgetPrefix("revert-tooltip"));
                                        const needRepaint = !isRevertButton && this._rowsView.updateFreeSpaceRowHeight();
                                        const normalizedPosition = this._normalizeValidationMessagePositionAndMaxWidth(e, isRevertButton, isOverlayVisible);
                                        e.component.__skipPositionProcessing = !!(needRepaint || normalizedPosition);
                                        if (normalizedPosition) {
                                            e.component.option(normalizedPosition)
                                        } else if (needRepaint) {
                                            e.component.repaint()
                                        }
                                    }
                                },
                                _showValidationMessage($cell, messages, alignment) {
                                    var _a;
                                    const editorPopup = $cell.find(".dx-dropdowneditor-overlay").data("dxPopup");
                                    const isOverlayVisible = editorPopup && editorPopup.option("visible");
                                    const myPosition = isOverlayVisible ? "top right" : "top ".concat(alignment);
                                    const atPosition = isOverlayVisible ? "top left" : "bottom ".concat(alignment);
                                    const hasFixedColumns = (null === (_a = this._columnsController.getFixedColumns()) || void 0 === _a ? void 0 : _a.length) > 0;
                                    const $overlayContainer = hasFixedColumns ? this.getView("rowsView").element() : $cell.closest(".".concat(this.addWidgetPrefix("content")));
                                    let errorMessageText = "";
                                    messages && messages.forEach(message => {
                                        errorMessageText += (errorMessageText.length ? "<br/>" : "") + (0, _string.encodeHtml)(message)
                                    });
                                    const invalidMessageClass = this.addWidgetPrefix("invalid-message");
                                    this._rowsView.element().find(".".concat(invalidMessageClass)).remove();
                                    const $overlayElement = (0, _renderer.default)("<div>").addClass("dx-invalid-message").addClass("dx-invalid-message-always").addClass(invalidMessageClass).html(errorMessageText).appendTo($cell);
                                    const overlayOptions = {
                                        container: $overlayContainer,
                                        shading: false,
                                        width: "auto",
                                        height: "auto",
                                        visible: true,
                                        animation: false,
                                        propagateOutsideClick: true,
                                        hideOnOutsideClick: false,
                                        wrapperAttr: {
                                            id: "dxInvalidMessage",
                                            class: "".concat("dx-invalid-message", " ").concat("dx-invalid-message-always", " ").concat(invalidMessageClass)
                                        },
                                        position: {
                                            collision: "flip",
                                            boundary: this._rowsView.element(),
                                            boundaryOffset: "0 0",
                                            offset: {
                                                x: 0,
                                                y: !isOverlayVisible && _browser.default.mozilla ? -1 : 0
                                            },
                                            my: myPosition,
                                            at: atPosition,
                                            of: $cell
                                        },
                                        onPositioned: e => {
                                            this._positionedHandler(e, isOverlayVisible);
                                            this._shiftValidationMessageIfNeed(e.component.$content(), $cell)
                                        }
                                    };
                                    this._hideFixedGroupCell($cell, overlayOptions);
                                    new _ui.default($overlayElement, overlayOptions)
                                },
                                _hideValidationMessage() {
                                    var _a;
                                    const validationMessages = null === (_a = this._rowsView.element()) || void 0 === _a ? void 0 : _a.find(this._getValidationMessagesSelector());
                                    null === validationMessages || void 0 === validationMessages ? void 0 : validationMessages.remove()
                                },
                                _normalizeValidationMessagePositionAndMaxWidth(options, isRevertButton, isOverlayVisible) {
                                    const fixedColumns = this._columnsController.getFixedColumns();
                                    if (!fixedColumns || !fixedColumns.length) {
                                        return
                                    }
                                    let position;
                                    const visibleTableWidth = !isRevertButton && function(that, element) {
                                        const rowIndex = (0, _renderer.default)(element).closest("tr").index();
                                        const $cellElements = (0, _renderer.default)(that._rowsView.getRowElement(rowIndex)).first().children().filter(":not(.dx-hidden-cell)");
                                        return that._rowsView._getWidths($cellElements).reduce((w1, w2) => w1 + w2, 0)
                                    }(this, options.element);
                                    const $overlayContentElement = options.component.$content();
                                    const validationMessageWidth = (0, _size.getOuterWidth)($overlayContentElement, true);
                                    const needMaxWidth = !isRevertButton && validationMessageWidth > visibleTableWidth;
                                    const columnIndex = this._rowsView.getCellIndex((0, _renderer.default)(options.element).closest("td"));
                                    const boundaryNonFixedColumnsInfo = function(fixedColumns) {
                                        let firstNonFixedColumnIndex;
                                        let lastNonFixedColumnIndex;
                                        fixedColumns.some((column, index) => {
                                            if ("transparent" === column.command) {
                                                firstNonFixedColumnIndex = 0 === index ? -1 : index;
                                                lastNonFixedColumnIndex = index === fixedColumns.length - 1 ? -1 : index + column.colspan - 1;
                                                return true
                                            }
                                            return
                                        });
                                        return {
                                            startColumnIndex: firstNonFixedColumnIndex,
                                            endColumnIndex: lastNonFixedColumnIndex
                                        }
                                    }(fixedColumns);
                                    if (!isRevertButton && (columnIndex === boundaryNonFixedColumnsInfo.startColumnIndex || needMaxWidth)) {
                                        position = {
                                            collision: "none flip",
                                            my: "top left",
                                            at: isOverlayVisible ? "top right" : "bottom left"
                                        }
                                    } else if (columnIndex === boundaryNonFixedColumnsInfo.endColumnIndex) {
                                        position = {
                                            collision: "none flip",
                                            my: "top right",
                                            at: isRevertButton || isOverlayVisible ? "top left" : "bottom right"
                                        };
                                        if (isRevertButton) {
                                            position.offset = "-1 0"
                                        }
                                    }
                                    return position && {
                                        position: position,
                                        maxWidth: needMaxWidth ? visibleTableWidth - 2 : void 0
                                    }
                                },
                                _shiftValidationMessageIfNeed($content, $cell) {
                                    const $revertContent = this._revertTooltip && this._revertTooltip.$content();
                                    if (!$revertContent) {
                                        return
                                    }
                                    const contentOffset = $content.offset();
                                    const revertContentOffset = $revertContent.offset();
                                    if (contentOffset.top === revertContentOffset.top && contentOffset.left + (0, _size.getWidth)($content) > revertContentOffset.left) {
                                        const left = (0, _size.getWidth)($revertContent) + 2;
                                        $content.css("left", revertContentOffset.left < $cell.offset().left ? -left : left)
                                    }
                                },
                                _getRevertTooltipsSelector() {
                                    const revertTooltipClass = this.addWidgetPrefix("revert-tooltip");
                                    return ".dx-editor-cell .".concat(revertTooltipClass)
                                },
                                _getValidationMessagesSelector() {
                                    const invalidMessageClass = this.addWidgetPrefix("invalid-message");
                                    return ".dx-editor-cell .".concat(invalidMessageClass, ", .dx-cell-modified .").concat(invalidMessageClass)
                                },
                                init() {
                                    this.callBase();
                                    this._editingController = this.getController("editing");
                                    this._columnsController = this.getController("columns");
                                    this._rowsView = this.getView("rowsView")
                                },
                                loseFocus(skipValidator) {
                                    if (!skipValidator) {
                                        this.getController("validating").setValidator(null)
                                    }
                                    this.callBase()
                                },
                                updateCellState($element, validationResult, isHideBorder) {
                                    var _a;
                                    const $focus = null === $element || void 0 === $element ? void 0 : $element.closest(this._getFocusCellSelector());
                                    const $cell = (null === $focus || void 0 === $focus ? void 0 : $focus.is("td")) ? $focus : null;
                                    const rowOptions = null === $focus || void 0 === $focus ? void 0 : $focus.closest(".dx-row").data("options");
                                    const change = rowOptions ? this.getController("editing").getChangeByKey(rowOptions.key) : null;
                                    const column = $cell && this.getController("columns").getVisibleColumns()[$cell.index()];
                                    const isCellModified = void 0 !== (null === (_a = null === change || void 0 === change ? void 0 : change.data) || void 0 === _a ? void 0 : _a[null === column || void 0 === column ? void 0 : column.name]) && !this._editingController.isSaving();
                                    const validationDescriptionValues = [];
                                    if (this._editingController.getEditMode() === EDIT_MODE_CELL) {
                                        if ((null === validationResult || void 0 === validationResult ? void 0 : validationResult.status) === VALIDATION_STATUS_invalid || isCellModified) {
                                            this._showRevertButton($focus);
                                            validationDescriptionValues.push("dxRevertButton")
                                        } else {
                                            this._revertTooltip && this._revertTooltip.$element().remove()
                                        }
                                    }
                                    const showValidationMessage = validationResult && validationResult.status === VALIDATION_STATUS_invalid;
                                    if (showValidationMessage && $cell && column && validationResult && validationResult.brokenRules) {
                                        const errorMessages = [];
                                        validationResult.brokenRules.forEach(rule => {
                                            if (rule.message) {
                                                errorMessages.push(rule.message)
                                            }
                                        });
                                        if (errorMessages.length) {
                                            this._showValidationMessage($focus, errorMessages, column.alignment || "left");
                                            validationDescriptionValues.push("dxInvalidMessage")
                                        }
                                    }
                                    this._updateAriaValidationAttributes($focus, validationDescriptionValues);
                                    !isHideBorder && this._rowsView.element() && this._rowsView.updateFreeSpaceRowHeight()
                                },
                                _updateAriaValidationAttributes($focus, inputDescriptionValues) {
                                    if (0 === inputDescriptionValues.length) {
                                        return
                                    }
                                    const editMode = this._editingController.getEditMode();
                                    const shouldSetValidationAriaAttributes = [EDIT_MODE_CELL, EDIT_MODE_BATCH, EDIT_MODE_ROW].includes(editMode);
                                    if (shouldSetValidationAriaAttributes) {
                                        const $focusElement = this._getCurrentFocusElement($focus);
                                        $focusElement.attr("aria-labelledby", inputDescriptionValues.join(" "));
                                        $focusElement.attr("aria-invalid", true)
                                    }
                                },
                                _getCurrentFocusElement($focus) {
                                    if (this._editingController.isEditing()) {
                                        return $focus.find(_const.EDITORS_INPUT_SELECTOR).first()
                                    }
                                    return $focus
                                },
                                focus($element, isHideBorder) {
                                    if (!arguments.length) {
                                        return this.callBase()
                                    }
                                    this._hideValidationMessage();
                                    if ((null === $element || void 0 === $element ? void 0 : $element.hasClass("dx-row")) || (null === $element || void 0 === $element ? void 0 : $element.hasClass("dx-master-detail-cell"))) {
                                        return this.callBase($element, isHideBorder)
                                    }
                                    const $focus = null === $element || void 0 === $element ? void 0 : $element.closest(this._getFocusCellSelector());
                                    const {
                                        callBase: callBase
                                    } = this;
                                    const validator = $focus && ($focus.data("dxValidator") || $element.find(".".concat(this.addWidgetPrefix("validator"))).eq(0).data("dxValidator"));
                                    const rowOptions = $focus && $focus.closest(".dx-row").data("options");
                                    const editingController = this.getController("editing");
                                    const change = rowOptions ? editingController.getChangeByKey(rowOptions.key) : null;
                                    const validatingController = this.getController("validating");
                                    let validationResult;
                                    if (validator) {
                                        validatingController.setValidator(validator);
                                        const value = validator.option("adapter").getValue();
                                        if (cellValueShouldBeValidated(value, rowOptions) || validatingController._rowIsValidated(change)) {
                                            editingController.waitForDeferredOperations().done(() => {
                                                (0, _deferred.when)(validatingController.validateCell(validator)).done(result => {
                                                    validationResult = result;
                                                    const {
                                                        column: column
                                                    } = validationResult.validator.option("dataGetter")();
                                                    if (change && column && !validatingController.isCurrentValidatorProcessing({
                                                            rowKey: change.key,
                                                            columnIndex: column.index
                                                        })) {
                                                        return
                                                    }
                                                    if (!(0, _themes.isFluent)((0, _themes.current)()) && validationResult.status === VALIDATION_STATUS_invalid) {
                                                        isHideBorder = true
                                                    }
                                                    this.updateCellState($element, validationResult, isHideBorder);
                                                    callBase.call(this, $element, isHideBorder)
                                                })
                                            });
                                            return this.callBase($element, isHideBorder)
                                        }
                                    }
                                    this.updateCellState($element, validationResult, isHideBorder);
                                    return this.callBase($element, isHideBorder)
                                },
                                getEditorInstance($container) {
                                    const $editor = $container.find(".dx-texteditor").eq(0);
                                    return _m_utils.default.getWidgetInstance($editor)
                                }
                            },
                            data: {
                                _getValidationStatus(validationResult) {
                                    const validationStatus = validationResultIsValid(validationResult) ? validationResult.status : validationResult;
                                    return validationStatus || VALIDATION_STATUS_valid
                                },
                                _isCellChanged(oldRow, newRow, visibleRowIndex, columnIndex, isLiveUpdate) {
                                    var _a, _b;
                                    const cell = null === (_a = oldRow.cells) || void 0 === _a ? void 0 : _a[columnIndex];
                                    const oldValidationStatus = this._getValidationStatus({
                                        status: null === cell || void 0 === cell ? void 0 : cell.validationStatus
                                    });
                                    const validatingController = this.getController("validating");
                                    const validationResult = validatingController.getCellValidationResult({
                                        rowKey: oldRow.key,
                                        columnIndex: columnIndex
                                    });
                                    const validationData = validatingController._getValidationData(oldRow.key);
                                    const newValidationStatus = this._getValidationStatus(validationResult);
                                    const rowIsModified = JSON.stringify(newRow.modifiedValues) !== JSON.stringify(oldRow.modifiedValues);
                                    const validationStatusChanged = oldValidationStatus !== newValidationStatus && rowIsModified;
                                    const cellIsMarkedAsInvalid = (0, _renderer.default)(null === cell || void 0 === cell ? void 0 : cell.cellElement).hasClass(this.addWidgetPrefix("invalid"));
                                    const hasValidationRules = null === (_b = null === cell || void 0 === cell ? void 0 : cell.column.validationRules) || void 0 === _b ? void 0 : _b.length;
                                    const rowEditStateChanged = oldRow.isEditing !== newRow.isEditing && hasValidationRules;
                                    const cellValidationStateChanged = validationStatusChanged || validationData.isValid && cellIsMarkedAsInvalid;
                                    if (rowEditStateChanged || cellValidationStateChanged) {
                                        return true
                                    }
                                    return this.callBase.apply(this, arguments)
                                }
                            }
                        },
                        views: {
                            rowsView: {
                                updateFreeSpaceRowHeight($table) {
                                    const that = this;
                                    let $rowElements;
                                    let $freeSpaceRowElement;
                                    let $freeSpaceRowElements;
                                    const $element = that.element();
                                    const $tooltipContent = $element && $element.find(".".concat(that.addWidgetPrefix("invalid-message"), " .dx-overlay-content"));
                                    that.callBase($table);
                                    if ($tooltipContent && $tooltipContent.length) {
                                        $rowElements = that._getRowElements();
                                        $freeSpaceRowElements = that._getFreeSpaceRowElements($table);
                                        $freeSpaceRowElement = $freeSpaceRowElements.first();
                                        if ($freeSpaceRowElement && 1 === $rowElements.length && (!$freeSpaceRowElement.is(":visible") || (0, _size.getOuterHeight)($tooltipContent) > (0, _size.getOuterHeight)($freeSpaceRowElement))) {
                                            $freeSpaceRowElements.show();
                                            (0, _size.setHeight)($freeSpaceRowElements, (0, _size.getOuterHeight)($tooltipContent));
                                            return true
                                        }
                                    }
                                    return
                                },
                                _formItemPrepared(cellOptions, $container) {
                                    this.callBase.apply(this, arguments);
                                    (0, _common.deferUpdate)(() => {
                                        const $editor = $container.find(".dx-widget").first();
                                        const isEditorDisposed = $editor.length && !$editor.children().length;
                                        if (!isEditorDisposed) {
                                            this.getController("validating").createValidator(cellOptions, $editor)
                                        }
                                    })
                                },
                                _cellPrepared($cell, parameters) {
                                    if (!this.getController("editing").isFormOrPopupEditMode()) {
                                        this.getController("validating").createValidator(parameters, $cell)
                                    }
                                    this.callBase.apply(this, arguments)
                                },
                                _restoreErrorRow(contentTable) {
                                    const editingController = this.getController("editing");
                                    editingController && editingController.hasChanges() && this._getRowElements(contentTable).each((_, item) => {
                                        const rowOptions = (0, _renderer.default)(item).data("options");
                                        if (rowOptions) {
                                            const change = editingController.getChangeByKey(rowOptions.key);
                                            change && editingController._showErrorRow(change)
                                        }
                                    })
                                }
                            }
                        }
                    }
                };
                exports.validatingModule = validatingModule
            },
        57318:
            /*!************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/views/m_columns_view.js ***!
              \************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.normalizeWidth = exports.ColumnsView = void 0;
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../../core/dom_adapter */ 73349));
                var _element = __webpack_require__( /*! ../../../../core/element */ 6415);
                var _element_data = __webpack_require__( /*! ../../../../core/element_data */ 97906);
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../../../../core/guid */ 73176));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/browser */ 47810));
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var iteratorUtils = function(obj, nodeInterop) {
                    if (!nodeInterop && obj && obj.__esModule) {
                        return obj
                    }
                    if (null === obj || "object" !== typeof obj && "function" !== typeof obj) {
                        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 ("default" !== key && 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
                }(__webpack_require__( /*! ../../../../core/utils/iterator */ 95479));
                var _position = __webpack_require__( /*! ../../../../core/utils/position */ 37518);
                var _size = __webpack_require__( /*! ../../../../core/utils/size */ 58664);
                var _style = __webpack_require__( /*! ../../../../core/utils/style */ 80968);
                var _support = __webpack_require__( /*! ../../../../core/utils/support */ 60137);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _window = __webpack_require__( /*! ../../../../core/utils/window */ 58201);
                var _click = __webpack_require__( /*! ../../../../events/click */ 95429);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../events/core/events_engine */ 55994));
                var _double_click = __webpack_require__( /*! ../../../../events/double_click */ 85272);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../../events/pointer */ 93786));
                var _remove = __webpack_require__( /*! ../../../../events/remove */ 29007);
                var _m_column_state_mixin = _interopRequireDefault(__webpack_require__( /*! ../../../grids/grid_core/column_state_mixin/m_column_state_mixin */ 51255));
                var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 15943));
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 60082));

                function _getRequireWildcardCache(nodeInterop) {
                    if ("function" !== typeof WeakMap) {
                        return null
                    }
                    var cacheBabelInterop = new WeakMap;
                    var cacheNodeInterop = new WeakMap;
                    return (_getRequireWildcardCache = function(nodeInterop) {
                        return nodeInterop ? cacheNodeInterop : cacheBabelInterop
                    })(nodeInterop)
                }

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const appendElementTemplate = {
                    render(options) {
                        options.container.append(options.content)
                    }
                };
                const getWidthStyle = function(width) {
                    if ("auto" === width) {
                        return ""
                    }
                    return (0, _type.isNumeric)(width) ? "".concat(width, "px") : width
                };
                const setCellWidth = function(cell, column, width) {
                    cell.style.width = cell.style.maxWidth = "auto" === column.width ? "" : width
                };
                const removeHandler = function(templateDeferred) {
                    templateDeferred.resolve()
                };
                const normalizeWidth = width => {
                    if ("number" === typeof width) {
                        return "".concat(width.toFixed(3), "px")
                    }
                    if ("adaptiveHidden" === width) {
                        return "0.0001px"
                    }
                    return width
                };
                exports.normalizeWidth = normalizeWidth;
                const viewWithColumnStateMixin = _m_modules.default.View.inherit(_m_column_state_mixin.default);
                let ColumnsView = function(_viewWithColumnStateM) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(ColumnsView, _viewWithColumnStateM);

                    function ColumnsView() {
                        return _viewWithColumnStateM.apply(this, arguments) || this
                    }
                    var _proto = ColumnsView.prototype;
                    _proto._createScrollableOptions = function() {
                        const scrollingOptions = this.option("scrolling");
                        let useNativeScrolling = this.option("scrolling.useNative");
                        const options = (0, _extend.extend)({}, scrollingOptions, {
                            direction: "both",
                            bounceEnabled: false,
                            useKeyboard: false
                        });
                        if (void 0 === useNativeScrolling) {
                            useNativeScrolling = true
                        }
                        if ("auto" === useNativeScrolling) {
                            delete options.useNative;
                            delete options.useSimulatedScrollbar
                        } else {
                            options.useNative = !!useNativeScrolling;
                            options.useSimulatedScrollbar = !useNativeScrolling
                        }
                        return options
                    };
                    _proto._updateCell = function($cell, parameters) {
                        if (parameters.rowType) {
                            this._cellPrepared($cell, parameters)
                        }
                    };
                    _proto._createCell = function(options) {
                        const {
                            column: column
                        } = options;
                        const alignment = column.alignment || (0, _position.getDefaultAlignment)(this.option("rtlEnabled"));
                        const cell = _dom_adapter.default.createElement("td");
                        cell.style.textAlign = alignment;
                        const $cell = (0, _renderer.default)(cell);
                        if ("data" === options.rowType && column.headerId && !column.type) {
                            if (this.component.option("showColumnHeaders")) {
                                this.setAria("describedby", column.headerId, $cell)
                            }
                        }
                        if (column.cssClass) {
                            $cell.addClass(column.cssClass)
                        }
                        if (Array.isArray(column.elementAttr)) {
                            column.elementAttr.forEach(_ref => {
                                let {
                                    name: name,
                                    value: value
                                } = _ref;
                                $cell.attr(name, value)
                            })
                        }
                        if ("expand" === column.command) {
                            $cell.addClass(column.cssClass);
                            $cell.addClass(this.addWidgetPrefix("group-space"))
                        }
                        if (column.colspan > 1) {
                            $cell.attr("colSpan", column.colspan)
                        } else if (!column.isBand && "auto" !== column.visibleWidth && this.option("columnAutoWidth")) {
                            if (column.width || column.minWidth) {
                                cell.style.minWidth = getWidthStyle(column.minWidth || column.width)
                            }
                            if (column.width) {
                                setCellWidth(cell, column, getWidthStyle(column.width))
                            }
                        }
                        return $cell
                    };
                    _proto._createRow = function(rowObject, tagName) {
                        tagName = tagName || "tr";
                        const $element = (0, _renderer.default)("<".concat(tagName, ">")).addClass("dx-row");
                        this.setAria("role", "row", $element);
                        return $element
                    };
                    _proto._isAltRow = function(row) {
                        return row && row.dataIndex % 2 === 1
                    };
                    _proto._createTable = function(columns, isAppend) {
                        const $table = (0, _renderer.default)("<table>").addClass(this.addWidgetPrefix("table")).addClass(this.addWidgetPrefix("table-fixed"));
                        if (columns && !isAppend) {
                            $table.attr("id", "dx-".concat(new _guid.default)).append(this._createColGroup(columns));
                            if (_browser.default.safari) {
                                $table.append((0, _renderer.default)("<thead>").append("<tr>"))
                            }
                            this.setAria("role", "presentation", $table)
                        } else {
                            this.setAria("hidden", true, $table)
                        }
                        this.setAria("role", "presentation", (0, _renderer.default)("<tbody>").appendTo($table));
                        if (isAppend) {
                            return $table
                        }
                        if (_browser.default.mozilla) {
                            _events_engine.default.on($table, "mousedown", "td", e => {
                                if (e.ctrlKey) {
                                    e.preventDefault()
                                }
                            })
                        }
                        if (this.option("cellHintEnabled")) {
                            _events_engine.default.on($table, "mousemove", ".dx-row > td", this.createAction(args => {
                                const e = args.event;
                                const $element = (0, _renderer.default)(e.target);
                                const $cell = (0, _renderer.default)(e.currentTarget);
                                const $row = $cell.parent();
                                const visibleColumns = this._columnsController.getVisibleColumns();
                                const rowOptions = $row.data("options");
                                const columnIndex = $cell.index();
                                const cellOptions = rowOptions && rowOptions.cells && rowOptions.cells[columnIndex];
                                const column = cellOptions ? cellOptions.column : visibleColumns[columnIndex];
                                const isHeaderRow = $row.hasClass("dx-header-row");
                                const isDataRow = $row.hasClass("dx-data-row");
                                const isMasterDetailRow = $row.hasClass("dx-master-detail-row");
                                const isGroupRow = $row.hasClass("dx-group-row");
                                const isFilterRow = $row.hasClass(this.addWidgetPrefix("filter-row"));
                                const isDataRowWithTemplate = isDataRow && (!column || column.cellTemplate);
                                const isEditorShown = isDataRow && cellOptions && (rowOptions.isEditing || cellOptions.isEditing || (null === column || void 0 === column ? void 0 : column.showEditorAlways));
                                const isHeaderRowWithTemplate = isHeaderRow && (!column || column.headerCellTemplate);
                                const isGroupCellWithTemplate = isGroupRow && (!column || column.groupIndex && column.groupCellTemplate);
                                const shouldShowHint = !isMasterDetailRow && !isFilterRow && !isEditorShown && !isDataRowWithTemplate && !isHeaderRowWithTemplate && !isGroupCellWithTemplate;
                                if (shouldShowHint) {
                                    if ($element.data("dxCellHintVisible")) {
                                        $element.removeAttr("title");
                                        $element.data("dxCellHintVisible", false)
                                    }
                                    const difference = $element[0].scrollWidth - $element[0].clientWidth;
                                    if (difference > 0 && !(0, _type.isDefined)($element.attr("title"))) {
                                        $element.attr("title", $element.text());
                                        $element.data("dxCellHintVisible", true)
                                    }
                                }
                            }))
                        }
                        const getOptions = event => {
                            const $cell = (0, _renderer.default)(event.currentTarget);
                            const $fieldItemContent = (0, _renderer.default)(event.target).closest(".".concat("dx-field-item-content"));
                            const $row = $cell.parent();
                            const rowOptions = $row.data("options");
                            const options = rowOptions && rowOptions.cells && rowOptions.cells[$cell.index()];
                            if (!$cell.closest("table").is(event.delegateTarget)) {
                                return
                            }
                            const resultOptions = (0, _extend.extend)({}, options, {
                                cellElement: (0, _element.getPublicElement)($cell),
                                event: event,
                                eventType: event.type
                            });
                            resultOptions.rowIndex = this.getRowIndex($row);
                            if ($fieldItemContent.length) {
                                const formItemOptions = $fieldItemContent.data("dx-form-item");
                                if (formItemOptions.column) {
                                    resultOptions.column = formItemOptions.column;
                                    resultOptions.columnIndex = this._columnsController.getVisibleIndex(resultOptions.column.index)
                                }
                            }
                            return resultOptions
                        };
                        _events_engine.default.on($table, "mouseover", ".dx-row > td", e => {
                            const options = getOptions(e);
                            options && this.executeAction("onCellHoverChanged", options)
                        });
                        _events_engine.default.on($table, "mouseout", ".dx-row > td", e => {
                            const options = getOptions(e);
                            options && this.executeAction("onCellHoverChanged", options)
                        });
                        _events_engine.default.on($table, _click.name, ".dx-row > td", e => {
                            const options = getOptions(e);
                            options && this.executeAction("onCellClick", options)
                        });
                        _events_engine.default.on($table, _double_click.name, ".dx-row > td", e => {
                            const options = getOptions(e);
                            options && this.executeAction("onCellDblClick", options)
                        });
                        ! function(that, $table) {
                            let touchTarget;
                            let touchCurrentTarget;
                            let timeoutId;

                            function clearTouchTargets(timeout) {
                                return setTimeout(() => {
                                    touchTarget = touchCurrentTarget = null
                                }, timeout)
                            }
                            _events_engine.default.on($table, "touchstart touchend", ".dx-row", e => {
                                clearTimeout(timeoutId);
                                if ("touchstart" === e.type) {
                                    touchTarget = e.target;
                                    touchCurrentTarget = e.currentTarget;
                                    timeoutId = clearTouchTargets(1e3)
                                } else {
                                    timeoutId = clearTouchTargets()
                                }
                            });
                            _events_engine.default.on($table, [_click.name, _double_click.name, _pointer.default.down].join(" "), ".dx-row", that.createAction(e => {
                                const {
                                    event: event
                                } = e;
                                if (touchTarget) {
                                    event.target = touchTarget;
                                    event.currentTarget = touchCurrentTarget
                                }
                                if (!(0, _renderer.default)(event.target).closest("a").length) {
                                    e.rowIndex = that.getRowIndex(event.currentTarget);
                                    if (e.rowIndex >= 0) {
                                        e.rowElement = (0, _element.getPublicElement)((0, _renderer.default)(event.currentTarget));
                                        e.columns = that.getColumns();
                                        if (event.type === _pointer.default.down) {
                                            that._rowPointerDown(e)
                                        } else if (event.type === _click.name) {
                                            that._rowClick(e)
                                        } else {
                                            that._rowDblClick(e)
                                        }
                                    }
                                }
                            }))
                        }(this, $table);
                        return $table
                    };
                    _proto._rowPointerDown = function() {};
                    _proto._rowClick = function() {};
                    _proto._rowDblClick = function() {};
                    _proto._createColGroup = function(columns) {
                        const colgroupElement = (0, _renderer.default)("<colgroup>");
                        for (let i = 0; i < columns.length; i++) {
                            const colspan = columns[i].colspan || 1;
                            for (let j = 0; j < colspan; j++) {
                                colgroupElement.append(this._createCol(columns[i]))
                            }
                        }
                        return colgroupElement
                    };
                    _proto._createCol = function(column) {
                        let width = column.visibleWidth || column.width;
                        if ("adaptiveHidden" === width) {
                            width = "0.0001px"
                        }
                        const col = (0, _renderer.default)("<col>");
                        (0, _style.setWidth)(col, width);
                        return col
                    };
                    _proto.renderDelayedTemplates = function(change) {
                        const delayedTemplates = this._delayedTemplates;
                        const syncTemplates = delayedTemplates.filter(template => !template.async);
                        const asyncTemplates = delayedTemplates.filter(template => template.async);
                        this._delayedTemplates = [];
                        this._renderDelayedTemplatesCore(syncTemplates, false, change);
                        this._renderDelayedTemplatesCoreAsync(asyncTemplates)
                    };
                    _proto._renderDelayedTemplatesCoreAsync = function(templates) {
                        if (templates.length) {
                            const templateTimeout = (0, _window.getWindow)().setTimeout(() => {
                                this._templateTimeouts.delete(templateTimeout);
                                this._renderDelayedTemplatesCore(templates, true)
                            });
                            this._templateTimeouts.add(templateTimeout)
                        }
                    };
                    _proto._renderDelayedTemplatesCore = function(templates, isAsync, change) {
                        const date = new Date;
                        while (templates.length) {
                            const templateParameters = templates.shift();
                            const {
                                options: options
                            } = templateParameters;
                            const doc = _dom_adapter.default.getRootNode((0, _renderer.default)(options.container).get(0));
                            const needWaitAsyncTemplates = this.needWaitAsyncTemplates();
                            if (!isAsync || (0, _renderer.default)(options.container).closest(doc).length || needWaitAsyncTemplates) {
                                if (change) {
                                    options.change = change
                                }
                                templateParameters.template.render(options)
                            }
                            if (isAsync && new Date - date > 30) {
                                this._renderDelayedTemplatesCoreAsync(templates);
                                break
                            }
                        }
                        if (!templates.length && this._delayedTemplates.length) {
                            this.renderDelayedTemplates()
                        }
                    };
                    _proto._processTemplate = function(template, options) {
                        const that = this;
                        let renderingTemplate;
                        if (template && template.render && !(0, _type.isRenderer)(template)) {
                            renderingTemplate = {
                                allowRenderToDetachedContainer: template.allowRenderToDetachedContainer,
                                render(options) {
                                    template.render(options.container, options.model, options.change);
                                    options.deferred && options.deferred.resolve()
                                }
                            }
                        } else if ((0, _type.isFunction)(template)) {
                            renderingTemplate = {
                                render(options) {
                                    const renderedTemplate = template((0, _element.getPublicElement)(options.container), options.model, options.change);
                                    if (renderedTemplate && (renderedTemplate.nodeType || (0, _type.isRenderer)(renderedTemplate))) {
                                        options.container.append(renderedTemplate)
                                    }
                                    options.deferred && options.deferred.resolve()
                                }
                            }
                        } else {
                            const templateID = (0, _type.isString)(template) ? template : (0, _renderer.default)(template).attr("id");
                            if (!templateID) {
                                renderingTemplate = that.getTemplate(template)
                            } else {
                                if (!that._templatesCache[templateID]) {
                                    that._templatesCache[templateID] = that.getTemplate(template)
                                }
                                renderingTemplate = that._templatesCache[templateID]
                            }
                        }
                        return renderingTemplate
                    };
                    _proto.renderTemplate = function(container, template, options, allowRenderToDetachedContainer, change) {
                        var _a;
                        const renderingTemplate = this._processTemplate(template, options);
                        const {
                            column: column
                        } = options;
                        const isDataRow = "data" === options.rowType;
                        const templateDeferred = new _deferred.Deferred;
                        const templateOptions = {
                            container: container,
                            model: options,
                            deferred: templateDeferred,
                            onRendered: () => {
                                if (this.isDisposed()) {
                                    templateDeferred.reject()
                                } else {
                                    templateDeferred.resolve()
                                }
                            }
                        };
                        if (renderingTemplate) {
                            options.component = this.component;
                            const columnAsync = column && (column.renderAsync && isDataRow || this.option("renderAsync") && (false !== column.renderAsync && (column.command || column.showEditorAlways) && isDataRow || "filter" === options.rowType));
                            const async = null !== (_a = options.renderAsync) && void 0 !== _a ? _a : columnAsync;
                            if ((renderingTemplate.allowRenderToDetachedContainer || allowRenderToDetachedContainer) && !async) {
                                renderingTemplate.render(templateOptions)
                            } else {
                                this._delayedTemplates.push({
                                    template: renderingTemplate,
                                    options: templateOptions,
                                    async: async
                                })
                            }
                            this._templateDeferreds.add(templateDeferred);
                            _events_engine.default.on(container, _remove.removeEvent, removeHandler.bind(null, templateDeferred))
                        } else {
                            templateDeferred.reject()
                        }
                        return templateDeferred.promise().always(() => {
                            this._templateDeferreds.delete(templateDeferred)
                        })
                    };
                    _proto._getBodies = function(tableElement) {
                        return (0, _renderer.default)(tableElement).children("tbody").not(".dx-header").not(".dx-footer")
                    };
                    _proto._needWrapRow = function($tableElement) {
                        var _a;
                        const hasRowTemplate = !!this.option().rowTemplate;
                        return hasRowTemplate && !!(null === (_a = this._getBodies($tableElement)) || void 0 === _a ? void 0 : _a.filter(".".concat("dx-row")).length)
                    };
                    _proto._wrapRowIfNeed = function($table, $row, isRefreshing) {
                        const $tableElement = isRefreshing ? $table || this._tableElement : this._tableElement || $table;
                        const needWrapRow = this._needWrapRow($tableElement);
                        if (needWrapRow) {
                            const $tbody = (0, _renderer.default)("<tbody>").addClass($row.attr("class"));
                            this.setAria("role", "presentation", $tbody);
                            return $tbody.append($row)
                        }
                        return $row
                    };
                    _proto._appendRow = function($table, $row, appendTemplate) {
                        appendTemplate = appendTemplate || appendElementTemplate;
                        appendTemplate.render({
                            content: $row,
                            container: $table
                        })
                    };
                    _proto._resizeCore = function() {
                        const scrollLeft = this._scrollLeft;
                        if (scrollLeft >= 0) {
                            this._scrollLeft = 0;
                            this.scrollTo({
                                left: scrollLeft
                            })
                        }
                    };
                    _proto._renderCore = function(e) {
                        const $root = this.element().parent();
                        if (!$root || $root.parent().length) {
                            this.renderDelayedTemplates(e)
                        }
                    };
                    _proto._renderTable = function(options) {
                        options = options || {};
                        options.columns = this._columnsController.getVisibleColumns();
                        const changeType = options.change && options.change.changeType;
                        const $table = this._createTable(options.columns, "append" === changeType || "prepend" === changeType || "update" === changeType);
                        this._renderRows($table, options);
                        return $table
                    };
                    _proto._renderRows = function($table, options) {
                        const that = this;
                        const rows = that._getRows(options.change);
                        const columnIndices = options.change && options.change.columnIndices || [];
                        const changeTypes = options.change && options.change.changeTypes || [];
                        for (let i = 0; i < rows.length; i++) {
                            that._renderRow($table, (0, _extend.extend)({
                                row: rows[i],
                                columnIndices: columnIndices[i],
                                changeType: changeTypes[i]
                            }, options))
                        }
                    };
                    _proto._renderRow = function($table, options) {
                        if (!options.columnIndices) {
                            options.row.cells = []
                        }
                        const $row = this._createRow(options.row);
                        const $wrappedRow = this._wrapRowIfNeed($table, $row);
                        if ("remove" !== options.changeType) {
                            this._renderCells($row, options)
                        }
                        this._appendRow($table, $wrappedRow);
                        const rowOptions = (0, _extend.extend)({
                            columns: options.columns
                        }, options.row);
                        this._addWatchMethod(rowOptions, options.row);
                        this._rowPrepared($wrappedRow, rowOptions, options.row)
                    };
                    _proto._needRenderCell = function(columnIndex, columnIndices) {
                        return !columnIndices || columnIndices.indexOf(columnIndex) >= 0
                    };
                    _proto._renderCells = function($row, options) {
                        const that = this;
                        let columnIndex = 0;
                        const {
                            row: row
                        } = options;
                        const {
                            columns: columns
                        } = options;
                        for (let i = 0; i < columns.length; i++) {
                            if (this._needRenderCell(i, options.columnIndices)) {
                                that._renderCell($row, (0, _extend.extend)({
                                    column: columns[i],
                                    columnIndex: columnIndex,
                                    value: row.values && row.values[columnIndex],
                                    oldValue: row.oldValues && row.oldValues[columnIndex]
                                }, options))
                            }
                            if (columns[i].colspan > 1) {
                                columnIndex += columns[i].colspan
                            } else {
                                columnIndex++
                            }
                        }
                    };
                    _proto._updateCells = function($rowElement, $newRowElement, columnIndices) {
                        const $cells = $rowElement.children();
                        const $newCells = $newRowElement.children();
                        const highlightChanges = this.option("highlightChanges");
                        const cellUpdatedClass = this.addWidgetPrefix("cell-updated-animation");
                        columnIndices.forEach((columnIndex, index) => {
                            const $cell = $cells.eq(columnIndex);
                            const $newCell = $newCells.eq(index);
                            $cell.replaceWith($newCell);
                            if (highlightChanges && !$newCell.hasClass("dx-command-expand")) {
                                $newCell.addClass(cellUpdatedClass)
                            }
                        });
                        ! function(element, newElement) {
                            if (!element || !newElement) {
                                return
                            }
                            const oldAttributes = element.attributes;
                            const newAttributes = newElement.attributes;
                            let i;
                            for (i = 0; i < oldAttributes.length; i++) {
                                const name = oldAttributes[i].nodeName;
                                if (!newElement.hasAttribute(name)) {
                                    element.removeAttribute(name)
                                }
                            }
                            for (i = 0; i < newAttributes.length; i++) {
                                element.setAttribute(newAttributes[i].nodeName, newAttributes[i].nodeValue)
                            }
                        }($rowElement.get(0), $newRowElement.get(0))
                    };
                    _proto._setCellAriaAttributes = function($cell, cellOptions) {
                        if ("freeSpace" !== cellOptions.rowType) {
                            this.setAria("role", "gridcell", $cell);
                            const columnIndexOffset = this._columnsController.getColumnIndexOffset();
                            const ariaColIndex = cellOptions.columnIndex + columnIndexOffset + 1;
                            this.setAria("colindex", ariaColIndex, $cell)
                        }
                    };
                    _proto._renderCell = function($row, options) {
                        const cellOptions = this._getCellOptions(options);
                        if (options.columnIndices) {
                            if (options.row.cells) {
                                const cellIndex = options.row.cells.findIndex(cell => cell.columnIndex === cellOptions.columnIndex);
                                options.row.cells[cellIndex] = cellOptions
                            }
                        } else {
                            options.row.cells.push(cellOptions)
                        }
                        const $cell = this._createCell(cellOptions);
                        this._setCellAriaAttributes($cell, cellOptions);
                        this._renderCellContent($cell, cellOptions, options);
                        $row.get(0).appendChild($cell.get(0));
                        return $cell
                    };
                    _proto._renderCellContent = function($cell, options, renderOptions) {
                        const template = this._getCellTemplate(options);
                        (0, _deferred.when)(!template || this.renderTemplate($cell, template, options, void 0, renderOptions.change)).done(() => {
                            this._updateCell($cell, options)
                        })
                    };
                    _proto._getCellTemplate = function(options) {};
                    _proto._getRows = function(change) {
                        return []
                    };
                    _proto._getCellOptions = function(options) {
                        const cellOptions = {
                            column: options.column,
                            columnIndex: options.columnIndex,
                            rowType: options.row.rowType,
                            isAltRow: this._isAltRow(options.row)
                        };
                        this._addWatchMethod(cellOptions);
                        return cellOptions
                    };
                    _proto._addWatchMethod = function(options, source) {
                        if (!this.option("repaintChangesOnly")) {
                            return
                        }
                        const watchers = [];
                        source = source || options;
                        source.watch = source.watch || function(getter, updateValueFunc, updateRowFunc) {
                            let oldValue = getter(source.data);
                            const watcher = function(row) {
                                if (row && updateRowFunc) {
                                    updateRowFunc(row)
                                }
                                const newValue = getter(source.data);
                                if (JSON.stringify(oldValue) !== JSON.stringify(newValue)) {
                                    if (row) {
                                        updateValueFunc(newValue)
                                    }
                                    oldValue = newValue
                                }
                            };
                            watchers.push(watcher);
                            return function() {
                                const index = watchers.indexOf(watcher);
                                if (index >= 0) {
                                    watchers.splice(index, 1)
                                }
                            }
                        };
                        source.update = source.update || function(row, keepRow) {
                            if (row) {
                                this.data = options.data = row.data;
                                this.rowIndex = options.rowIndex = row.rowIndex;
                                this.dataIndex = options.dataIndex = row.dataIndex;
                                this.isExpanded = options.isExpanded = row.isExpanded;
                                if (options.row && !keepRow) {
                                    options.row = row
                                }
                            }
                            watchers.forEach(watcher => {
                                watcher(row)
                            })
                        };
                        if (source !== options) {
                            options.watch = source.watch.bind(source)
                        }
                        return options
                    };
                    _proto._cellPrepared = function(cell, options) {
                        options.cellElement = (0, _element.getPublicElement)((0, _renderer.default)(cell));
                        this.executeAction("onCellPrepared", options)
                    };
                    _proto._rowPrepared = function($row, options, row) {
                        (0, _element_data.data)($row.get(0), "options", options);
                        options.rowElement = (0, _element.getPublicElement)($row);
                        this.executeAction("onRowPrepared", options)
                    };
                    _proto._columnOptionChanged = function(e) {
                        const {
                            optionNames: optionNames
                        } = e;
                        if (_m_utils.default.checkChanges(optionNames, ["width", "visibleWidth"])) {
                            const visibleColumns = this._columnsController.getVisibleColumns();
                            const widths = visibleColumns.map(column => column.visibleWidth || column.width);
                            this.setColumnWidths({
                                widths: widths,
                                optionNames: optionNames
                            });
                            return
                        }
                        if (!this._requireReady) {
                            this.render()
                        }
                    };
                    _proto.getCellIndex = function($cell) {
                        const cellIndex = $cell.length ? $cell[0].cellIndex : -1;
                        return cellIndex
                    };
                    _proto.getTableElements = function() {
                        return this._tableElement || (0, _renderer.default)()
                    };
                    _proto.getTableElement = function(isFixedTableRendering) {
                        return this._tableElement
                    };
                    _proto.setTableElement = function(tableElement, isFixedTableRendering) {
                        this._tableElement = tableElement
                    };
                    _proto.optionChanged = function(args) {
                        _viewWithColumnStateM.prototype.optionChanged.call(this, args);
                        switch (args.name) {
                            case "cellHintEnabled":
                            case "onCellPrepared":
                            case "onRowPrepared":
                            case "onCellHoverChanged":
                            case "keyboardNavigation":
                                this._invalidate(true, true);
                                args.handled = true
                        }
                    };
                    _proto.init = function() {
                        this._scrollLeft = -1;
                        this._columnsController = this.getController("columns");
                        this._dataController = this.getController("data");
                        this._delayedTemplates = [];
                        this._templateDeferreds = new Set;
                        this._templatesCache = {};
                        this._templateTimeouts = new Set;
                        this.createAction("onCellClick");
                        this.createAction("onRowClick");
                        this.createAction("onCellDblClick");
                        this.createAction("onRowDblClick");
                        this.createAction("onCellHoverChanged", {
                            excludeValidators: ["disabled", "readOnly"]
                        });
                        this.createAction("onCellPrepared", {
                            excludeValidators: ["disabled", "readOnly"],
                            category: "rendering"
                        });
                        this.createAction("onRowPrepared", {
                            excludeValidators: ["disabled", "readOnly"],
                            category: "rendering",
                            afterExecute: e => {
                                this._afterRowPrepared(e)
                            }
                        });
                        this._columnsController.columnsChanged.add(this._columnOptionChanged.bind(this));
                        this._dataController && this._dataController.changed.add(this._handleDataChanged.bind(this))
                    };
                    _proto._afterRowPrepared = function(e) {};
                    _proto._handleDataChanged = function() {};
                    _proto.callbackNames = function() {
                        return ["scrollChanged"]
                    };
                    _proto._updateScrollLeftPosition = function() {
                        const scrollLeft = this._scrollLeft;
                        if (scrollLeft >= 0) {
                            this._scrollLeft = 0;
                            this.scrollTo({
                                left: scrollLeft
                            })
                        }
                    };
                    _proto.scrollTo = function(pos) {
                        const $element = this.element();
                        const $scrollContainer = $element && $element.children(".".concat(this.addWidgetPrefix("scroll-container"))).not(".".concat(this.addWidgetPrefix("content-fixed")));
                        if ((0, _type.isDefined)(pos) && (0, _type.isDefined)(pos.left) && this._scrollLeft !== pos.left) {
                            this._scrollLeft = pos.left;
                            $scrollContainer && $scrollContainer.scrollLeft(pos.left)
                        }
                    };
                    _proto._getContent = function(isFixedTableRendering) {
                        var _a;
                        return null === (_a = this._tableElement) || void 0 === _a ? void 0 : _a.parent()
                    };
                    _proto._removeContent = function(isFixedTableRendering) {
                        const $scrollContainer = this._getContent(isFixedTableRendering);
                        if (null === $scrollContainer || void 0 === $scrollContainer ? void 0 : $scrollContainer.length) {
                            $scrollContainer.remove()
                        }
                    };
                    _proto._wrapTableInScrollContainer = function($table, isFixedTableRendering) {
                        const $scrollContainer = (0, _renderer.default)("<div>");
                        const useNative = this.option("scrolling.useNative");
                        if (false === useNative || "auto" === useNative && !_support.nativeScrolling) {
                            $scrollContainer.addClass(this.addWidgetPrefix("scrollable-simulated"))
                        }
                        _events_engine.default.on($scrollContainer, "scroll", () => {
                            const scrollLeft = $scrollContainer.scrollLeft();
                            if (scrollLeft !== this._scrollLeft) {
                                this.scrollChanged.fire({
                                    left: scrollLeft
                                }, this.name)
                            }
                        });
                        $scrollContainer.addClass(this.addWidgetPrefix("content")).addClass(this.addWidgetPrefix("scroll-container")).append($table).appendTo(this.element());
                        this.setAria("role", "presentation", $scrollContainer);
                        return $scrollContainer
                    };
                    _proto.needWaitAsyncTemplates = function() {
                        return this.option("templatesRenderAsynchronously") && false === this.option("renderAsync")
                    };
                    _proto.waitAsyncTemplates = function() {
                        let forceWaiting = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false;
                        const result = new _deferred.Deferred;
                        const needWaitAsyncTemplates = forceWaiting || this.needWaitAsyncTemplates();
                        if (!needWaitAsyncTemplates) {
                            return result.resolve()
                        }
                        const waitTemplatesRecursion = () => _deferred.when.apply(this, Array.from(this._templateDeferreds)).done(() => {
                            if (this.isDisposed()) {
                                result.reject()
                            } else if (this._templateDeferreds.size > 0) {
                                waitTemplatesRecursion()
                            } else {
                                result.resolve()
                            }
                        }).fail(result.reject);
                        waitTemplatesRecursion();
                        return result.promise()
                    };
                    _proto._updateContent = function($newTableElement, change, isFixedTableRendering) {
                        return this.waitAsyncTemplates().done(() => {
                            this._removeContent(isFixedTableRendering);
                            this.setTableElement($newTableElement, isFixedTableRendering);
                            this._wrapTableInScrollContainer($newTableElement, isFixedTableRendering)
                        })
                    };
                    _proto._findContentElement = function() {};
                    _proto._getWidths = function($cellElements) {
                        if (!$cellElements) {
                            return []
                        }
                        const result = [];
                        const cellElements = $cellElements.toArray();
                        cellElements.forEach(cell => {
                            let width = cell.offsetWidth;
                            if (cell.getBoundingClientRect) {
                                const rect = (0, _position.getBoundingRect)(cell);
                                if (rect.width > cell.offsetWidth - 1) {
                                    width = rect.width
                                }
                            }
                            result.push(width)
                        });
                        return result
                    };
                    _proto.getColumnWidths = function($tableElement) {
                        (this.option("forceApplyBindings") || _common.noop)();
                        $tableElement = null !== $tableElement && void 0 !== $tableElement ? $tableElement : this.getTableElement();
                        if ($tableElement) {
                            const $rows = $tableElement.children("tbody:not(.dx-header)").children();
                            for (let i = 0; i < $rows.length; i++) {
                                const $row = $rows.eq(i);
                                const isGroupRow = $row.hasClass("dx-group-row");
                                const isDetailRow = $row.hasClass("dx-master-detail-row");
                                const isErrorRow = $row.hasClass("dx-error-row");
                                const isRowVisible = "none" !== $row.get(0).style.display && !$row.hasClass("dx-state-invisible");
                                const isRelevantRow = !isGroupRow && !isDetailRow && !isErrorRow;
                                if (isRowVisible && isRelevantRow) {
                                    const $cells = $row.children("td");
                                    const result = this._getWidths($cells);
                                    return result
                                }
                            }
                        }
                        return []
                    };
                    _proto.getVisibleColumnIndex = function(columnIndex, rowIndex) {
                        return columnIndex
                    };
                    _proto.setColumnWidths = function(_ref2) {
                        let {
                            widths: widths,
                            optionNames: optionNames
                        } = _ref2;
                        const $tableElement = this.getTableElement();
                        if (!(null === $tableElement || void 0 === $tableElement ? void 0 : $tableElement.length) || !widths) {
                            return
                        }
                        const columns = this.getColumns();
                        const columnAutoWidth = this.option("columnAutoWidth");
                        const $cols = $tableElement.children("colgroup").children("col");
                        $cols.toArray().forEach(col => col.removeAttribute("style"));
                        columns.forEach((column, columnIndex) => {
                            if (columnAutoWidth && column.width && !column.command) {
                                const width = getWidthStyle(column.visibleWidth || column.width);
                                const minWidth = getWidthStyle(column.minWidth || width);
                                const $rows = $tableElement.children().children(".dx-row").not(".".concat("dx-master-detail-row"));
                                for (let rowIndex = 0; rowIndex < $rows.length; rowIndex++) {
                                    const visibleIndex = this.getVisibleColumnIndex(columnIndex, rowIndex);
                                    if (visibleIndex >= 0) {
                                        const $row = $rows.eq(rowIndex);
                                        const $cell = $row.hasClass("dx-group-row") ? $row.find("td[aria-colindex='".concat(visibleIndex + 1, "']:not(.").concat("dx-group-cell", ")")) : $row.find("td").eq(visibleIndex);
                                        if ($cell.length) {
                                            const cell = $cell.get(0);
                                            setCellWidth(cell, column, width);
                                            cell.style.minWidth = minWidth
                                        }
                                    }
                                }
                            }
                            const colWidth = normalizeWidth(widths[columnIndex]);
                            if ((0, _type.isDefined)(colWidth)) {
                                (0, _style.setWidth)($cols.eq(columnIndex), colWidth)
                            }
                        })
                    };
                    _proto.getCellElements = function(rowIndex) {
                        return this._getCellElementsCore(rowIndex)
                    };
                    _proto._getCellElementsCore = function(rowIndex) {
                        if (rowIndex < 0) {
                            return
                        }
                        const $row = this._getRowElements().eq(rowIndex);
                        return $row.children()
                    };
                    _proto._getCellElement = function(rowIndex, columnIdentifier) {
                        const $cells = this.getCellElements(rowIndex);
                        const columnVisibleIndex = this._getVisibleColumnIndex($cells, rowIndex, columnIdentifier);
                        if (!(null === $cells || void 0 === $cells ? void 0 : $cells.length) || columnVisibleIndex < 0) {
                            return
                        }
                        const $cell = $cells.eq(columnVisibleIndex);
                        return $cell.length > 0 ? $cell : void 0
                    };
                    _proto._getRowElement = function(rowIndex) {
                        const that = this;
                        let $rowElement = (0, _renderer.default)();
                        const $tableElements = that.getTableElements();
                        iteratorUtils.each($tableElements, (_, tableElement) => {
                            $rowElement = $rowElement.add(that._getRowElements((0, _renderer.default)(tableElement)).eq(rowIndex))
                        });
                        if ($rowElement.length) {
                            return $rowElement
                        }
                        return
                    };
                    _proto.getCellElement = function(rowIndex, columnIdentifier) {
                        const $cell = this._getCellElement(rowIndex, columnIdentifier);
                        if ($cell) {
                            return (0, _element.getPublicElement)($cell)
                        }
                        return
                    };
                    _proto.getRowElement = function(rowIndex) {
                        const $rows = this._getRowElement(rowIndex);
                        let elements = [];
                        if ($rows && !(0, _element.getPublicElement)($rows).get) {
                            for (let i = 0; i < $rows.length; i++) {
                                elements.push($rows[i])
                            }
                        } else {
                            elements = $rows
                        }
                        return elements
                    };
                    _proto._getVisibleColumnIndex = function($cells, rowIndex, columnIdentifier) {
                        if ((0, _type.isString)(columnIdentifier)) {
                            const columnIndex = this._columnsController.columnOption(columnIdentifier, "index");
                            return this._columnsController.getVisibleIndex(columnIndex)
                        }
                        return columnIdentifier
                    };
                    _proto.getColumnElements = function() {};
                    _proto.getColumns = function(rowIndex) {
                        return this._columnsController.getVisibleColumns(rowIndex)
                    };
                    _proto.getCell = function(cellPosition, rows, cells) {
                        const $rows = rows || this._getRowElements();
                        let $cells;
                        if ($rows.length > 0 && cellPosition.rowIndex >= 0) {
                            if ("virtual" !== this.option("scrolling.mode") && "virtual" !== this.option("scrolling.rowRenderingMode")) {
                                cellPosition.rowIndex = cellPosition.rowIndex < $rows.length ? cellPosition.rowIndex : $rows.length - 1
                            }
                            $cells = cells || this.getCellElements(cellPosition.rowIndex);
                            if ((null === $cells || void 0 === $cells ? void 0 : $cells.length) > 0) {
                                return $cells.eq($cells.length > cellPosition.columnIndex ? cellPosition.columnIndex : $cells.length - 1)
                            }
                        }
                    };
                    _proto.getRowsCount = function() {
                        const tableElement = this.getTableElement();
                        if (tableElement && 1 === tableElement.length) {
                            return tableElement[0].rows.length
                        }
                        return 0
                    };
                    _proto._getRowElementsCore = function(tableElement) {
                        tableElement = tableElement || this.getTableElement();
                        if (tableElement) {
                            const hasRowTemplate = this.option().rowTemplate || this.option("dataRowTemplate");
                            const tBodies = hasRowTemplate && tableElement.find("> tbody.".concat("dx-row"));
                            return tBodies && tBodies.length ? tBodies : tableElement.find("> tbody > " + ".".concat("dx-row", ", > .").concat("dx-row"))
                        }
                        return (0, _renderer.default)()
                    };
                    _proto._getRowElements = function(tableElement) {
                        return this._getRowElementsCore(tableElement)
                    };
                    _proto.getRowIndex = function($row) {
                        return this._getRowElements().index($row)
                    };
                    _proto.getBoundingRect = function() {};
                    _proto.getName = function() {};
                    _proto.setScrollerSpacing = function(width) {
                        const $element = this.element();
                        const rtlEnabled = this.option("rtlEnabled");
                        $element && $element.css({
                            paddingLeft: rtlEnabled ? width : "",
                            paddingRight: !rtlEnabled ? width : ""
                        })
                    };
                    _proto.isScrollbarVisible = function(isHorizontal) {
                        const $element = this.element();
                        const $tableElement = this._tableElement;
                        if ($element && $tableElement) {
                            return isHorizontal ? (0, _size.getOuterWidth)($tableElement) - (0, _size.getWidth)($element) > 0 : (0, _size.getOuterHeight)($tableElement) - (0, _size.getHeight)($element) > 0
                        }
                        return false
                    };
                    _proto.isDisposed = function() {
                        var _a;
                        return null === (_a = this.component) || void 0 === _a ? void 0 : _a._disposed
                    };
                    _proto.dispose = function() {
                        var _a, _b;
                        if ((0, _window.hasWindow)()) {
                            const window = (0, _window.getWindow)();
                            null === (_a = this._templateTimeouts) || void 0 === _a ? void 0 : _a.forEach(templateTimeout => window.clearTimeout(templateTimeout));
                            null === (_b = this._templateTimeouts) || void 0 === _b ? void 0 : _b.clear()
                        }
                    };
                    return ColumnsView
                }(viewWithColumnStateMixin);
                exports.ColumnsView = ColumnsView
            },
        28016:
            /*!*********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/views/m_grid_view.js ***!
              \*********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.gridViewModule = void 0;
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../../core/dom_adapter */ 73349));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/browser */ 47810));
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _position = __webpack_require__( /*! ../../../../core/utils/position */ 37518);
                var _size = __webpack_require__( /*! ../../../../core/utils/size */ 58664);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _window = __webpack_require__( /*! ../../../../core/utils/window */ 58201);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/message */ 28109));
                var accessibility = function(obj, nodeInterop) {
                    if (!nodeInterop && obj && obj.__esModule) {
                        return obj
                    }
                    if (null === obj || "object" !== typeof obj && "function" !== typeof obj) {
                        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 ("default" !== key && 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
                }(__webpack_require__( /*! ../../../../ui/shared/accessibility */ 56756));
                var _m_modules = _interopRequireDefault(__webpack_require__( /*! ../m_modules */ 15943));
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 60082));

                function _getRequireWildcardCache(nodeInterop) {
                    if ("function" !== typeof WeakMap) {
                        return null
                    }
                    var cacheBabelInterop = new WeakMap;
                    var cacheNodeInterop = new WeakMap;
                    return (_getRequireWildcardCache = function(nodeInterop) {
                        return nodeInterop ? cacheNodeInterop : cacheBabelInterop
                    })(nodeInterop)
                }

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const VIEW_NAMES = ["columnsSeparatorView", "blockSeparatorView", "trackerView", "headerPanel", "columnHeadersView", "rowsView", "footerView", "columnChooserView", "filterPanelView", "pagerView", "draggingHeaderView", "contextMenuView", "errorView", "headerFilterView", "filterBuilderView"];
                const isPercentWidth = function(width) {
                    return (0, _type.isString)(width) && width.endsWith("%")
                };
                const calculateFreeWidth = function(that, widths) {
                    const contentWidth = that._rowsView.contentWidth();
                    const totalWidth = that._getTotalWidth(widths, contentWidth);
                    return contentWidth - totalWidth
                };
                const calculateFreeWidthWithCurrentMinWidth = function(that, columnIndex, currentMinWidth, widths) {
                    return calculateFreeWidth(that, widths.map((width, index) => index === columnIndex ? currentMinWidth : width))
                };
                const resizingControllerMembers = {
                    _initPostRenderHandlers() {
                        if (!this._refreshSizesHandler) {
                            this._refreshSizesHandler = e => {
                                let resizeDeferred = (new _deferred.Deferred).resolve(null);
                                const changeType = null === e || void 0 === e ? void 0 : e.changeType;
                                const isDelayed = null === e || void 0 === e ? void 0 : e.isDelayed;
                                const needFireContentReady = changeType && "updateSelection" !== changeType && "updateFocusedRow" !== changeType && "pageIndex" !== changeType && !isDelayed;
                                this._dataController.changed.remove(this._refreshSizesHandler);
                                if (this._checkSize()) {
                                    resizeDeferred = this._refreshSizes(e)
                                }
                                if (needFireContentReady) {
                                    (0, _deferred.when)(resizeDeferred).done(() => {
                                        this._setAriaLabel();
                                        this.fireContentReadyAction()
                                    })
                                }
                            };
                            this._dataController.changed.add(() => {
                                this._dataController.changed.add(this._refreshSizesHandler)
                            })
                        }
                    },
                    _refreshSizes(e) {
                        var _a;
                        let resizeDeferred = (new _deferred.Deferred).resolve(null);
                        const changeType = null === e || void 0 === e ? void 0 : e.changeType;
                        const isDelayed = null === e || void 0 === e ? void 0 : e.isDelayed;
                        const items = this._dataController.items();
                        if (!e || "refresh" === changeType || "prepend" === changeType || "append" === changeType) {
                            if (!isDelayed) {
                                resizeDeferred = this.resize()
                            }
                        } else if ("update" === changeType) {
                            if (0 === (null === (_a = e.changeTypes) || void 0 === _a ? void 0 : _a.length)) {
                                return resizeDeferred
                            }
                            if ((items.length > 1 || "insert" !== e.changeTypes[0]) && !(0 === items.length && "remove" === e.changeTypes[0]) && !e.needUpdateDimensions) {
                                resizeDeferred = new _deferred.Deferred;
                                this._waitAsyncTemplates().done(() => {
                                    (0, _common.deferUpdate)(() => (0, _common.deferRender)(() => (0, _common.deferUpdate)(() => {
                                        this._setScrollerSpacing();
                                        this._rowsView.resize();
                                        resizeDeferred.resolve()
                                    })))
                                }).fail(resizeDeferred.reject)
                            } else {
                                resizeDeferred = this.resize()
                            }
                        }
                        return resizeDeferred
                    },
                    fireContentReadyAction() {
                        this.component._fireContentReadyAction()
                    },
                    _getWidgetAriaLabel: () => "dxDataGrid-ariaDataGrid",
                    _setAriaLabel() {
                        const totalItemsCount = Math.max(0, this._dataController.totalItemsCount());
                        this.component.setAria("label", _message.default.format(this._getWidgetAriaLabel(), totalItemsCount, this.component.columnCount()), this.component.$element().children(".".concat("dx-gridbase-container")))
                    },
                    _getBestFitWidths() {
                        var _a;
                        const rowsView = this._rowsView;
                        const columnHeadersView = this._columnHeadersView;
                        let widths = rowsView.getColumnWidths();
                        if (!(null === widths || void 0 === widths ? void 0 : widths.length)) {
                            const headersTableElement = columnHeadersView.getTableElement();
                            columnHeadersView.setTableElement(null === (_a = rowsView.getTableElement()) || void 0 === _a ? void 0 : _a.children(".dx-header"));
                            widths = columnHeadersView.getColumnWidths();
                            columnHeadersView.setTableElement(headersTableElement)
                        }
                        return widths
                    },
                    _setVisibleWidths(visibleColumns, widths) {
                        const columnsController = this._columnsController;
                        columnsController.beginUpdate();
                        (0, _iterator.each)(visibleColumns, (index, column) => {
                            const columnId = columnsController.getColumnId(column);
                            columnsController.columnOption(columnId, "visibleWidth", widths[index])
                        });
                        columnsController.endUpdate()
                    },
                    _toggleBestFitModeForView(view, className, isBestFit) {
                        if (!view || !view.isVisible()) {
                            return
                        }
                        const $rowsTables = this._rowsView.getTableElements();
                        const $viewTables = view.getTableElements();
                        (0, _iterator.each)($rowsTables, (index, tableElement) => {
                            let $tableBody;
                            const $rowsTable = (0, _renderer.default)(tableElement);
                            const $viewTable = $viewTables.eq(index);
                            if ($viewTable && $viewTable.length) {
                                if (isBestFit) {
                                    $tableBody = $viewTable.children("tbody").appendTo($rowsTable)
                                } else {
                                    $tableBody = $rowsTable.children(".".concat(className)).appendTo($viewTable)
                                }
                                $tableBody.toggleClass(className, isBestFit);
                                $tableBody.toggleClass(this.addWidgetPrefix("best-fit"), isBestFit)
                            }
                        })
                    },
                    _toggleBestFitMode(isBestFit) {
                        const $rowsTable = this._rowsView.getTableElement();
                        const $rowsFixedTable = this._rowsView.getTableElements().eq(1);
                        if (!$rowsTable) {
                            return
                        }
                        $rowsTable.css("tableLayout", isBestFit ? "auto" : "fixed");
                        $rowsTable.children("colgroup").css("display", isBestFit ? "none" : "");
                        (0, _iterator.each)($rowsFixedTable.find("tr.dx-group-row"), (idx, item) => {
                            (0, _renderer.default)(item).css("display", isBestFit ? "none" : "")
                        });
                        $rowsFixedTable.toggleClass(this.addWidgetPrefix("table-fixed"), !isBestFit);
                        this._toggleBestFitModeForView(this._columnHeadersView, "dx-header", isBestFit);
                        this._toggleBestFitModeForView(this._footerView, "dx-footer", isBestFit);
                        if (this._needStretch()) {
                            $rowsTable.get(0).style.width = isBestFit ? "auto" : ""
                        }
                    },
                    _toggleContentMinHeight(value) {
                        const scrollable = this._rowsView.getScrollable();
                        const $contentElement = this._rowsView._findContentElement();
                        if (false === (null === scrollable || void 0 === scrollable ? void 0 : scrollable.option("useNative"))) {
                            if (true === value) {
                                this._prevContentMinHeight = $contentElement.get(0).style.minHeight
                            }
                            if ((0, _type.isDefined)(this._prevContentMinHeight)) {
                                $contentElement.css({
                                    minHeight: value ? _m_utils.default.getContentHeightLimit(_browser.default) : this._prevContentMinHeight
                                })
                            }
                        }
                    },
                    _synchronizeColumns() {
                        const columnsController = this._columnsController;
                        const visibleColumns = columnsController.getVisibleColumns();
                        const columnAutoWidth = this.option("columnAutoWidth");
                        const wordWrapEnabled = this.option("wordWrapEnabled");
                        const hasUndefinedColumnWidth = visibleColumns.some(column => !(0, _type.isDefined)(column.width));
                        let needBestFit = this._needBestFit();
                        let hasMinWidth = false;
                        let resetBestFitMode;
                        let isColumnWidthsCorrected = false;
                        let resultWidths = [];
                        let focusedElement;
                        let selectionRange;
                        !needBestFit && (0, _iterator.each)(visibleColumns, (index, column) => {
                            if ("auto" === column.width) {
                                needBestFit = true;
                                return false
                            }
                            return
                        });
                        (0, _iterator.each)(visibleColumns, (index, column) => {
                            if (column.minWidth) {
                                hasMinWidth = true;
                                return false
                            }
                            return
                        });
                        this._setVisibleWidths(visibleColumns, []);
                        const $element = this.component.$element();
                        if (needBestFit) {
                            focusedElement = _dom_adapter.default.getActiveElement($element.get(0));
                            selectionRange = _m_utils.default.getSelectionRange(focusedElement);
                            this._toggleBestFitMode(true);
                            resetBestFitMode = true
                        }
                        this._toggleContentMinHeight(wordWrapEnabled);
                        if ($element && $element.get(0) && this._maxWidth) {
                            delete this._maxWidth;
                            $element[0].style.maxWidth = ""
                        }(0, _common.deferUpdate)(() => {
                            if (needBestFit) {
                                resultWidths = this._getBestFitWidths();
                                (0, _iterator.each)(visibleColumns, (index, column) => {
                                    const columnId = columnsController.getColumnId(column);
                                    columnsController.columnOption(columnId, "bestFitWidth", resultWidths[index], true)
                                })
                            } else if (hasMinWidth) {
                                resultWidths = this._getBestFitWidths()
                            }(0, _iterator.each)(visibleColumns, (function(index) {
                                const {
                                    width: width
                                } = this;
                                if ("auto" !== width) {
                                    if ((0, _type.isDefined)(width)) {
                                        resultWidths[index] = (0, _type.isNumeric)(width) || function(width) {
                                            return (0, _type.isString)(width) && width.endsWith("px")
                                        }(width) ? parseFloat(width) : width
                                    } else if (!columnAutoWidth) {
                                        resultWidths[index] = void 0
                                    }
                                }
                            }));
                            if (resetBestFitMode) {
                                this._toggleBestFitMode(false);
                                resetBestFitMode = false;
                                if (focusedElement && focusedElement !== _dom_adapter.default.getActiveElement()) {
                                    const isFocusOutsideWindow = (0, _position.getBoundingRect)(focusedElement).bottom < 0;
                                    if (!isFocusOutsideWindow) {
                                        ! function(focusedElement, selectionRange) {
                                            accessibility.hiddenFocus(focusedElement, true);
                                            _m_utils.default.setSelectionRange(focusedElement, selectionRange)
                                        }(focusedElement, selectionRange)
                                    }
                                }
                            }
                            isColumnWidthsCorrected = this._correctColumnWidths(resultWidths, visibleColumns);
                            if (columnAutoWidth) {
                                ! function() {
                                    let expandColumnWidth;
                                    (0, _iterator.each)(visibleColumns, (index, column) => {
                                        if ("groupExpand" === column.type) {
                                            expandColumnWidth = resultWidths[index]
                                        }
                                    });
                                    (0, _iterator.each)(visibleColumns, (index, column) => {
                                        if ("groupExpand" === column.type && expandColumnWidth) {
                                            resultWidths[index] = expandColumnWidth
                                        }
                                    })
                                }();
                                if (this._needStretch()) {
                                    this._processStretch(resultWidths, visibleColumns)
                                }
                            }(0, _common.deferRender)(() => {
                                if (needBestFit || isColumnWidthsCorrected || hasUndefinedColumnWidth) {
                                    this._setVisibleWidths(visibleColumns, resultWidths)
                                }
                                if (wordWrapEnabled) {
                                    this._toggleContentMinHeight(false)
                                }
                            })
                        })
                    },
                    _needBestFit() {
                        return this.option("columnAutoWidth")
                    },
                    _needStretch() {
                        return this._columnsController.getVisibleColumns().some(c => "auto" === c.width && !c.command)
                    },
                    _getAverageColumnsWidth(resultWidths) {
                        const freeWidth = calculateFreeWidth(this, resultWidths);
                        const columnCountWithoutWidth = resultWidths.filter(width => void 0 === width).length;
                        return freeWidth / columnCountWithoutWidth
                    },
                    _correctColumnWidths(resultWidths, visibleColumns) {
                        const that = this;
                        let i;
                        let hasPercentWidth = false;
                        let hasAutoWidth = false;
                        let isColumnWidthsCorrected = false;
                        const $element = that.component.$element();
                        const hasWidth = that._hasWidth;
                        for (i = 0; i < visibleColumns.length; i++) {
                            const index = i;
                            const column = visibleColumns[index];
                            const isHiddenColumn = "adaptiveHidden" === resultWidths[index];
                            let width = resultWidths[index];
                            const {
                                minWidth: minWidth
                            } = column;
                            if (minWidth) {
                                if (void 0 === width) {
                                    const averageColumnsWidth = that._getAverageColumnsWidth(resultWidths);
                                    width = averageColumnsWidth
                                } else if (isPercentWidth(width)) {
                                    const freeWidth = calculateFreeWidthWithCurrentMinWidth(that, index, minWidth, resultWidths);
                                    if (freeWidth < 0) {
                                        width = -1
                                    }
                                }
                            }
                            const realColumnWidth = that._getRealColumnWidth(index, resultWidths.map((columnWidth, columnIndex) => index === columnIndex ? width : columnWidth));
                            if (minWidth && !isHiddenColumn && realColumnWidth < minWidth) {
                                resultWidths[index] = minWidth;
                                isColumnWidthsCorrected = true;
                                i = -1
                            }
                            if (!(0, _type.isDefined)(column.width)) {
                                hasAutoWidth = true
                            }
                            if (isPercentWidth(column.width)) {
                                hasPercentWidth = true
                            }
                        }
                        if (!hasAutoWidth && resultWidths.length) {
                            const $rowsViewElement = that._rowsView.element();
                            const contentWidth = that._rowsView.contentWidth();
                            const scrollbarWidth = that._rowsView.getScrollbarWidth();
                            const totalWidth = that._getTotalWidth(resultWidths, contentWidth);
                            if (totalWidth < contentWidth) {
                                const lastColumnIndex = _m_utils.default.getLastResizableColumnIndex(visibleColumns, resultWidths);
                                if (lastColumnIndex >= 0) {
                                    resultWidths[lastColumnIndex] = "auto";
                                    isColumnWidthsCorrected = true;
                                    if (false === hasWidth && !hasPercentWidth) {
                                        const borderWidth = that.option("showBorders") ? Math.ceil((0, _size.getOuterWidth)($rowsViewElement) - (0, _size.getInnerWidth)($rowsViewElement)) : 0;
                                        that._maxWidth = totalWidth + scrollbarWidth + borderWidth;
                                        $element.css("maxWidth", that._maxWidth)
                                    }
                                }
                            }
                        }
                        return isColumnWidthsCorrected
                    },
                    _processStretch(resultSizes, visibleColumns) {
                        const groupSize = this._rowsView.contentWidth();
                        const tableSize = this._getTotalWidth(resultSizes, groupSize);
                        const unusedIndexes = {
                            length: 0
                        };
                        if (!resultSizes.length) {
                            return
                        }(0, _iterator.each)(visibleColumns, (function(index) {
                            if (this.width || "adaptiveHidden" === resultSizes[index]) {
                                unusedIndexes[index] = true;
                                unusedIndexes.length++
                            }
                        }));
                        const diff = groupSize - tableSize;
                        const diffElement = Math.floor(diff / (resultSizes.length - unusedIndexes.length));
                        let onePixelElementsCount = diff - diffElement * (resultSizes.length - unusedIndexes.length);
                        if (diff >= 0) {
                            for (let i = 0; i < resultSizes.length; i++) {
                                if (unusedIndexes[i]) {
                                    continue
                                }
                                resultSizes[i] += diffElement;
                                if (onePixelElementsCount > 0) {
                                    if (onePixelElementsCount < 1) {
                                        resultSizes[i] += onePixelElementsCount;
                                        onePixelElementsCount = 0
                                    } else {
                                        resultSizes[i]++;
                                        onePixelElementsCount--
                                    }
                                }
                            }
                        }
                    },
                    _getRealColumnWidth(columnIndex, columnWidths, groupWidth) {
                        let ratio = 1;
                        const width = columnWidths[columnIndex];
                        if (!isPercentWidth(width)) {
                            return parseFloat(width)
                        }
                        const percentTotalWidth = columnWidths.reduce((sum, width, index) => {
                            if (!isPercentWidth(width)) {
                                return sum
                            }
                            return sum + parseFloat(width)
                        }, 0);
                        const pixelTotalWidth = columnWidths.reduce((sum, width) => {
                            if (!width || "adaptiveHidden" === width || isPercentWidth(width)) {
                                return sum
                            }
                            return sum + parseFloat(width)
                        }, 0);
                        groupWidth = groupWidth || this._rowsView.contentWidth();
                        const freeSpace = groupWidth - pixelTotalWidth;
                        const percentTotalWidthInPixel = percentTotalWidth * groupWidth / 100;
                        if (pixelTotalWidth > 0 && percentTotalWidthInPixel + pixelTotalWidth >= groupWidth) {
                            ratio = percentTotalWidthInPixel > freeSpace ? freeSpace / percentTotalWidthInPixel : 1
                        }
                        return parseFloat(width) * groupWidth * ratio / 100
                    },
                    _getTotalWidth(widths, groupWidth) {
                        let result = 0;
                        for (let i = 0; i < widths.length; i++) {
                            const width = widths[i];
                            if (width && "adaptiveHidden" !== width) {
                                result += this._getRealColumnWidth(i, widths, groupWidth)
                            }
                        }
                        return Math.ceil(result)
                    },
                    _getGroupElement() {
                        return this.component.$element().children().get(0)
                    },
                    updateSize(rootElement) {
                        const that = this;
                        const $rootElement = (0, _renderer.default)(rootElement);
                        const importantMarginClass = that.addWidgetPrefix("important-margin");
                        if (void 0 === that._hasHeight && $rootElement && $rootElement.is(":visible") && (0, _size.getWidth)($rootElement)) {
                            const $groupElement = $rootElement.children(".".concat(that.getWidgetContainerClass()));
                            if ($groupElement.length) {
                                $groupElement.detach()
                            }
                            that._hasHeight = !!(0, _size.getHeight)($rootElement);
                            const width = (0, _size.getWidth)($rootElement);
                            $rootElement.addClass(importantMarginClass);
                            that._hasWidth = (0, _size.getWidth)($rootElement) === width;
                            $rootElement.removeClass(importantMarginClass);
                            if ($groupElement.length) {
                                $groupElement.appendTo($rootElement)
                            }
                        }
                    },
                    publicMethods: () => ["resize", "updateDimensions"],
                    _waitAsyncTemplates() {
                        var _a, _b, _c;
                        return (0, _deferred.when)(null === (_a = this._columnHeadersView) || void 0 === _a ? void 0 : _a.waitAsyncTemplates(true), null === (_b = this._rowsView) || void 0 === _b ? void 0 : _b.waitAsyncTemplates(true), null === (_c = this._footerView) || void 0 === _c ? void 0 : _c.waitAsyncTemplates(true))
                    },
                    resize() {
                        if (this.component._requireResize) {
                            return
                        }
                        const d = new _deferred.Deferred;
                        this._waitAsyncTemplates().done(() => {
                            (0, _deferred.when)(this.updateDimensions()).done(d.resolve).fail(d.reject)
                        }).fail(d.reject);
                        return d.promise()
                    },
                    updateDimensions(checkSize) {
                        const that = this;
                        that._initPostRenderHandlers();
                        if (!that._checkSize(checkSize)) {
                            return
                        }
                        const prevResult = that._resizeDeferred;
                        const result = that._resizeDeferred = new _deferred.Deferred;
                        (0, _deferred.when)(prevResult).always(() => {
                            (0, _common.deferRender)(() => {
                                if (that._dataController.isLoaded()) {
                                    that._synchronizeColumns()
                                }
                                that._resetGroupElementHeight();
                                (0, _common.deferUpdate)(() => {
                                    (0, _common.deferRender)(() => {
                                        (0, _common.deferUpdate)(() => {
                                            that._updateDimensionsCore()
                                        })
                                    })
                                })
                            }).done(result.resolve).fail(result.reject)
                        });
                        return result.promise()
                    },
                    _resetGroupElementHeight() {
                        const groupElement = this._getGroupElement();
                        const scrollable = this._rowsView.getScrollable();
                        if (groupElement && groupElement.style.height && (!scrollable || !scrollable.scrollTop())) {
                            groupElement.style.height = ""
                        }
                    },
                    _checkSize(checkSize) {
                        const $rootElement = this.component.$element();
                        const isWidgetVisible = $rootElement.is(":visible");
                        const isGridSizeChanged = this._lastWidth !== (0, _size.getWidth)($rootElement) || this._lastHeight !== (0, _size.getHeight)($rootElement) || this._devicePixelRatio !== (0, _window.getWindow)().devicePixelRatio;
                        return isWidgetVisible && (!checkSize || isGridSizeChanged)
                    },
                    _setScrollerSpacingCore() {
                        const that = this;
                        const vScrollbarWidth = that._rowsView.getScrollbarWidth();
                        const hScrollbarWidth = that._rowsView.getScrollbarWidth(true);
                        (0, _common.deferRender)(() => {
                            that._columnHeadersView && that._columnHeadersView.setScrollerSpacing(vScrollbarWidth);
                            that._footerView && that._footerView.setScrollerSpacing(vScrollbarWidth);
                            that._rowsView.setScrollerSpacing(vScrollbarWidth, hScrollbarWidth)
                        })
                    },
                    _setScrollerSpacing() {
                        const scrollable = this._rowsView.getScrollable();
                        const isNativeScrolling = true === this.option("scrolling.useNative");
                        if (!scrollable || isNativeScrolling) {
                            (0, _common.deferRender)(() => {
                                (0, _common.deferUpdate)(() => {
                                    this._setScrollerSpacingCore()
                                })
                            })
                        } else {
                            this._setScrollerSpacingCore()
                        }
                    },
                    _setAriaOwns() {
                        var _a, _b, _c;
                        const headerTable = null === (_a = this._columnHeadersView) || void 0 === _a ? void 0 : _a.getTableElement();
                        const footerTable = null === (_b = this._footerView) || void 0 === _b ? void 0 : _b.getTableElement();
                        null === (_c = this._rowsView) || void 0 === _c ? void 0 : _c.setAriaOwns(null === headerTable || void 0 === headerTable ? void 0 : headerTable.attr("id"), null === footerTable || void 0 === footerTable ? void 0 : footerTable.attr("id"))
                    },
                    _updateDimensionsCore() {
                        const that = this;
                        const dataController = that._dataController;
                        const editorFactory = that.getController("editorFactory");
                        const rowsView = that._rowsView;
                        const $rootElement = that.component.$element();
                        const groupElement = this._getGroupElement();
                        const rootElementHeight = (0, _size.getHeight)($rootElement);
                        const height = that.option("height") || $rootElement.get(0).style.height;
                        const isHeightSpecified = !!height && "auto" !== height;
                        const maxHeight = parseInt($rootElement.css("maxHeight"));
                        const maxHeightHappened = maxHeight && rootElementHeight >= maxHeight;
                        const isMaxHeightApplied = groupElement && groupElement.scrollHeight === groupElement.offsetHeight;
                        that.updateSize($rootElement);
                        (0, _common.deferRender)(() => {
                            const hasHeight = that._hasHeight || !!maxHeight || isHeightSpecified;
                            rowsView.hasHeight(hasHeight);
                            this._setAriaOwns();
                            if (maxHeightHappened && !isMaxHeightApplied) {
                                (0, _renderer.default)(groupElement).css("height", maxHeight)
                            }
                            if (!dataController.isLoaded()) {
                                rowsView.setLoading(dataController.isLoading());
                                return
                            }(0, _common.deferUpdate)(() => {
                                that._updateLastSizes($rootElement);
                                that._setScrollerSpacing();
                                (0, _iterator.each)(VIEW_NAMES, (index, viewName) => {
                                    const view = that.getView(viewName);
                                    if (view) {
                                        view.resize()
                                    }
                                });
                                editorFactory && editorFactory.resize()
                            })
                        })
                    },
                    _updateLastSizes($rootElement) {
                        this._lastWidth = (0, _size.getWidth)($rootElement);
                        this._lastHeight = (0, _size.getHeight)($rootElement);
                        this._devicePixelRatio = (0, _window.getWindow)().devicePixelRatio
                    },
                    optionChanged(args) {
                        switch (args.name) {
                            case "width":
                            case "height":
                                this.component._renderDimensions();
                                this.resize();
                            case "renderAsync":
                                args.handled = true;
                                return;
                            default:
                                this.callBase(args)
                        }
                    },
                    init() {
                        this._prevContentMinHeight = null;
                        this._dataController = this.getController("data");
                        this._columnsController = this.getController("columns");
                        this._columnHeadersView = this.getView("columnHeadersView");
                        this._footerView = this.getView("footerView");
                        this._rowsView = this.getView("rowsView")
                    }
                };
                const ResizingController = _m_modules.default.ViewController.inherit(resizingControllerMembers);
                const SynchronizeScrollingController = _m_modules.default.ViewController.inherit({
                    _scrollChangedHandler(views, pos, viewName) {
                        for (let j = 0; j < views.length; j++) {
                            if (views[j] && views[j].name !== viewName) {
                                views[j].scrollTo({
                                    left: pos.left,
                                    top: pos.top
                                })
                            }
                        }
                    },
                    init() {
                        const views = [this.getView("columnHeadersView"), this.getView("footerView"), this.getView("rowsView")];
                        for (let i = 0; i < views.length; i++) {
                            const view = views[i];
                            if (view) {
                                view.scrollChanged.add(this._scrollChangedHandler.bind(this, views))
                            }
                        }
                    }
                });
                const GridView = _m_modules.default.View.inherit({
                    _endUpdateCore() {
                        if (this.component._requireResize) {
                            this.component._requireResize = false;
                            this._resizingController.resize()
                        }
                    },
                    init() {
                        this._resizingController = this.getController("resizing");
                        this._dataController = this.getController("data")
                    },
                    getView(name) {
                        return this.component._views[name]
                    },
                    element() {
                        return this._groupElement
                    },
                    optionChanged(args) {
                        const that = this;
                        if ((0, _type.isDefined)(that._groupElement) && "showBorders" === args.name) {
                            that._groupElement.toggleClass(that.addWidgetPrefix("borders"), !!args.value);
                            args.handled = true
                        } else {
                            that.callBase(args)
                        }
                    },
                    _renderViews($groupElement) {
                        const that = this;
                        (0, _iterator.each)(VIEW_NAMES, (index, viewName) => {
                            const view = that.getView(viewName);
                            if (view) {
                                view.render($groupElement)
                            }
                        })
                    },
                    _getTableRoleName: () => "group",
                    render($rootElement) {
                        const isFirstRender = !this._groupElement;
                        const $groupElement = this._groupElement || (0, _renderer.default)("<div>").addClass(this.getWidgetContainerClass());
                        $groupElement.addClass("dx-gridbase-container");
                        $groupElement.toggleClass(this.addWidgetPrefix("borders"), !!this.option("showBorders"));
                        this.setAria("role", "presentation", $rootElement);
                        this.component.setAria("role", this._getTableRoleName(), $groupElement);
                        this._rootElement = $rootElement || this._rootElement;
                        if (isFirstRender) {
                            this._groupElement = $groupElement;
                            (0, _window.hasWindow)() && this.getController("resizing").updateSize($rootElement);
                            $groupElement.appendTo($rootElement)
                        }
                        this._renderViews($groupElement)
                    },
                    update() {
                        const that = this;
                        const $rootElement = that._rootElement;
                        const $groupElement = that._groupElement;
                        const resizingController = that.getController("resizing");
                        if ($rootElement && $groupElement) {
                            resizingController.resize();
                            if (that._dataController.isLoaded()) {
                                that._resizingController.fireContentReadyAction()
                            }
                        }
                    }
                });
                const gridViewModule = {
                    defaultOptions: () => ({
                        showBorders: false,
                        renderAsync: false
                    }),
                    controllers: {
                        resizing: ResizingController,
                        synchronizeScrolling: SynchronizeScrollingController
                    },
                    views: {
                        gridView: GridView
                    },
                    VIEW_NAMES: VIEW_NAMES
                };
                exports.gridViewModule = gridViewModule
            },
        35095:
            /*!*********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/views/m_rows_view.js ***!
              \*********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.rowsModule = exports.RowsView = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/browser */ 47810));
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _data = __webpack_require__( /*! ../../../../core/utils/data */ 47617);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _position = __webpack_require__( /*! ../../../../core/utils/position */ 37518);
                var _size = __webpack_require__( /*! ../../../../core/utils/size */ 58664);
                var _string = __webpack_require__( /*! ../../../../core/utils/string */ 68752);
                var _style = __webpack_require__( /*! ../../../../core/utils/style */ 80968);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _window = __webpack_require__( /*! ../../../../core/utils/window */ 58201);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../events/core/events_engine */ 55994));
                var _remove = __webpack_require__( /*! ../../../../events/remove */ 29007);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/message */ 28109));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/scroll_view/ui.scrollable */ 41183));
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 60082));
                var _m_columns_view = __webpack_require__( /*! ./m_columns_view */ 57318);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function getMaxHorizontalScrollOffset(scrollable) {
                    return scrollable ? Math.round(scrollable.scrollWidth() - scrollable.clientWidth()) : 0
                }

                function isGroupRow(_ref) {
                    let {
                        rowType: rowType,
                        column: column
                    } = _ref;
                    return "group" === rowType && (0, _type.isDefined)(column.groupIndex) && !column.showWhenGrouped && !column.command
                }

                function setWatcher(_ref2) {
                    let {
                        element: element,
                        watch: watch,
                        getter: getter,
                        callBack: callBack
                    } = _ref2;
                    if (watch) {
                        const dispose = watch(getter, callBack);
                        _events_engine.default.on(element, _remove.removeEvent, dispose)
                    }
                }
                const defaultCellTemplate = function($container, options) {
                    const isDataTextEmpty = (0, _string.isEmpty)(options.text) && "data" === options.rowType;
                    const {
                        text: text
                    } = options;
                    const container = $container.get(0);
                    if (isDataTextEmpty) {
                        _m_utils.default.setEmptyText($container)
                    } else if (options.column.encodeHtml) {
                        container.textContent = text
                    } else {
                        container.innerHTML = text
                    }
                };
                let RowsView = function(_ColumnsView) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(RowsView, _ColumnsView);

                    function RowsView() {
                        return _ColumnsView.apply(this, arguments) || this
                    }
                    var _proto = RowsView.prototype;
                    _proto._getDefaultTemplate = function(column) {
                        switch (column.command) {
                            case "empty":
                                return function(container) {
                                    container.html("&nbsp;")
                                };
                            default:
                                return defaultCellTemplate
                        }
                    };
                    _proto._getDefaultGroupTemplate = function(column) {
                        const summaryTexts = this.option("summary.texts");
                        return function($container, options) {
                            const {
                                data: data
                            } = options;
                            let text = "".concat(options.column.caption, ": ").concat(options.text);
                            const container = $container.get(0);
                            if (options.summaryItems && options.summaryItems.length) {
                                text += " ".concat(_m_utils.default.getGroupRowSummaryText(options.summaryItems, summaryTexts))
                            }
                            if (data) {
                                if (options.groupContinuedMessage && options.groupContinuesMessage) {
                                    text += " (".concat(options.groupContinuedMessage, ". ").concat(options.groupContinuesMessage, ")")
                                } else if (options.groupContinuesMessage) {
                                    text += " (".concat(options.groupContinuesMessage, ")")
                                } else if (options.groupContinuedMessage) {
                                    text += " (".concat(options.groupContinuedMessage, ")")
                                }
                            }
                            if (column.encodeHtml) {
                                container.textContent = text
                            } else {
                                container.innerHTML = text
                            }
                        }
                    };
                    _proto._update = function(change) {};
                    _proto._updateCell = function($cell, options) {
                        if (isGroupRow(options)) {
                            $cell.addClass("dx-group-cell")
                        }
                        _ColumnsView.prototype._updateCell.apply(this, arguments)
                    };
                    _proto._getCellTemplate = function(options) {
                        const that = this;
                        const {
                            column: column
                        } = options;
                        let template;
                        if (isGroupRow(options)) {
                            template = column.groupCellTemplate || {
                                allowRenderToDetachedContainer: true,
                                render: that._getDefaultGroupTemplate(column)
                            }
                        } else if (("data" === options.rowType || column.command) && column.cellTemplate) {
                            template = column.cellTemplate
                        } else {
                            template = {
                                allowRenderToDetachedContainer: true,
                                render: that._getDefaultTemplate(column)
                            }
                        }
                        return template
                    };
                    _proto._createRow = function(row, tag) {
                        const $row = _ColumnsView.prototype._createRow.apply(this, arguments);
                        if (row) {
                            const isGroup = "group" === row.rowType;
                            const isDataRow = "data" === row.rowType;
                            isDataRow && $row.addClass("dx-data-row");
                            isDataRow && this.option("showRowLines") && $row.addClass("dx-row-lines");
                            this.option("showColumnLines") && $row.addClass("dx-column-lines");
                            if (false === row.visible) {
                                $row.hide()
                            }
                            if (isGroup) {
                                $row.addClass("dx-group-row");
                                this.setAria("role", "row", $row);
                                this.setAriaExpandedAttribute($row, row)
                            }
                        }
                        return $row
                    };
                    _proto._rowPrepared = function($row, rowOptions, row) {
                        if ("data" === rowOptions.rowType) {
                            if (this.option("rowAlternationEnabled")) {
                                this._isAltRow(row) && $row.addClass("dx-row-alt");
                                setWatcher({
                                    element: $row.get(0),
                                    watch: rowOptions.watch,
                                    getter: () => this._isAltRow(row),
                                    callBack: value => {
                                        $row.toggleClass("dx-row-alt", value)
                                    }
                                })
                            }
                            this._setAriaRowIndex(rowOptions, $row);
                            setWatcher({
                                element: $row.get(0),
                                watch: rowOptions.watch,
                                getter: () => rowOptions.rowIndex,
                                callBack: () => this._setAriaRowIndex(rowOptions, $row)
                            })
                        }
                        _ColumnsView.prototype._rowPrepared.apply(this, arguments)
                    };
                    _proto._setAriaRowIndex = function(row, $row) {
                        const {
                            component: component
                        } = this;
                        const isPagerMode = "standard" === component.option("scrolling.mode") && !_m_utils.default.isVirtualRowRendering(component);
                        let rowIndex = row.rowIndex + 1;
                        if (isPagerMode) {
                            rowIndex = component.pageIndex() * component.pageSize() + rowIndex
                        } else {
                            rowIndex += this._dataController.getRowIndexOffset()
                        }
                        this.setAria("rowindex", rowIndex, $row)
                    };
                    _proto.setAriaExpandedAttribute = function($row, row) {
                        const description = row.isExpanded ? this.localize("dxDataGrid-ariaExpandedRow") : this.localize("dxDataGrid-ariaCollapsedRow");
                        this.setAria("roledescription", description, $row)
                    };
                    _proto._afterRowPrepared = function(e) {
                        const arg = e.args[0];
                        const dataController = this._dataController;
                        const row = dataController.getVisibleRows()[arg.rowIndex];
                        const watch = this.option("integrationOptions.watchMethod");
                        if (!arg.data || "data" !== arg.rowType || arg.isNewRow || !this.option("twoWayBindingEnabled") || !watch || !row) {
                            return
                        }
                        const dispose = watch(() => dataController.generateDataValues(arg.data, arg.columns), () => {
                            dataController.repaintRows([row.rowIndex], this.option("repaintChangesOnly"))
                        }, {
                            deep: true,
                            skipImmediate: true
                        });
                        _events_engine.default.on(arg.rowElement, _remove.removeEvent, dispose)
                    };
                    _proto._renderScrollable = function(force) {
                        const that = this;
                        const $element = that.element();
                        if (!$element.children().length) {
                            $element.append("<div>")
                        }
                        if (force || !that._loadPanel) {
                            that._renderLoadPanel($element, $element.parent(), that._dataController.isLocalStore())
                        }
                        if ((force || !that.getScrollable()) && that._dataController.isLoaded()) {
                            const columns = that.getColumns();
                            let allColumnsHasWidth = true;
                            for (let i = 0; i < columns.length; i++) {
                                if (!columns[i].width && !columns[i].minWidth) {
                                    allColumnsHasWidth = false;
                                    break
                                }
                            }
                            if (that.option("columnAutoWidth") || that._hasHeight || allColumnsHasWidth || that._columnsController._isColumnFixing()) {
                                that._renderScrollableCore($element)
                            }
                        }
                    };
                    _proto._handleScroll = function(e) {
                        const rtlEnabled = this.option("rtlEnabled");
                        const isNativeScrolling = e.component.option("useNative");
                        this._scrollTop = e.scrollOffset.top;
                        this._scrollLeft = e.scrollOffset.left;
                        let scrollLeft = e.scrollOffset.left;
                        if (rtlEnabled) {
                            this._scrollRight = getMaxHorizontalScrollOffset(e.component) - this._scrollLeft;
                            if (isNativeScrolling) {
                                scrollLeft = -this._scrollRight
                            }
                            if (!this.isScrollbarVisible(true)) {
                                this._scrollLeft = -1
                            }
                        }
                        this.scrollChanged.fire(_extends(_extends({}, e.scrollOffset), {
                            left: scrollLeft
                        }), this.name)
                    };
                    _proto._renderScrollableCore = function($element) {
                        const dxScrollableOptions = this._createScrollableOptions();
                        const scrollHandler = this._handleScroll.bind(this);
                        dxScrollableOptions.onScroll = scrollHandler;
                        this._scrollable = this._createComponent($element, _ui.default, dxScrollableOptions);
                        this._scrollableContainer = this._scrollable && (0, _renderer.default)(this._scrollable.container())
                    };
                    _proto._renderLoadPanel = function() {
                        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
                            args[_key] = arguments[_key]
                        }
                        return _m_utils.default.renderLoadPanel.apply(this, arguments)
                    };
                    _proto._renderContent = function(contentElement, tableElement, isFixedTableRendering) {
                        contentElement.empty().append(tableElement);
                        return this._findContentElement()
                    };
                    _proto._updateContent = function(newTableElement, change, isFixedTableRendering) {
                        this._contentChanges.push({
                            newTableElement: newTableElement,
                            change: change,
                            isFixedTableRendering: isFixedTableRendering
                        });
                        return this.waitAsyncTemplates().done(() => {
                            const contentChanges = this._contentChanges;
                            this._contentChanges = [];
                            contentChanges.forEach(_ref3 => {
                                let {
                                    newTableElement: newTableElement,
                                    change: change,
                                    isFixedTableRendering: isFixedTableRendering
                                } = _ref3;
                                const tableElement = this.getTableElement(isFixedTableRendering);
                                const contentElement = this._findContentElement(isFixedTableRendering);
                                const changeType = null === change || void 0 === change ? void 0 : change.changeType;
                                const executors = [];
                                const highlightChanges = this.option("highlightChanges");
                                const rowInsertedClass = this.addWidgetPrefix("row-inserted-animation");
                                switch (changeType) {
                                    case "update":
                                        (0, _iterator.each)(change.rowIndices, (index, rowIndex) => {
                                            var _a;
                                            const $newRowElement = this._getRowElements(newTableElement).eq(index);
                                            const dataChangeType = null === (_a = change.changeTypes) || void 0 === _a ? void 0 : _a[index];
                                            const item = change.items && change.items[index];
                                            executors.push(() => {
                                                var _a;
                                                const $rowElements = this._getRowElements(tableElement);
                                                const $rowElement = $rowElements.eq(rowIndex);
                                                switch (dataChangeType) {
                                                    case "update":
                                                        if (item) {
                                                            const columnIndices = null === (_a = change.columnIndices) || void 0 === _a ? void 0 : _a[index];
                                                            if ((0, _type.isDefined)(item.visible) && item.visible !== $rowElement.is(":visible")) {
                                                                $rowElement.toggle(item.visible)
                                                            } else if (columnIndices) {
                                                                this._updateCells($rowElement, $newRowElement, columnIndices)
                                                            } else {
                                                                $rowElement.replaceWith($newRowElement)
                                                            }
                                                        }
                                                        break;
                                                    case "insert":
                                                        if (!$rowElements.length) {
                                                            if (tableElement) {
                                                                const target = $newRowElement.is("tbody") ? tableElement : tableElement.children("tbody");
                                                                $newRowElement.prependTo(target)
                                                            }
                                                        } else if ($rowElement.length) {
                                                            $newRowElement.insertBefore($rowElement)
                                                        } else {
                                                            $newRowElement.insertAfter($rowElements.last())
                                                        }
                                                        if (highlightChanges && change.isLiveUpdate) {
                                                            $newRowElement.addClass(rowInsertedClass)
                                                        }
                                                        break;
                                                    case "remove":
                                                        $rowElement.remove()
                                                }
                                            })
                                        });
                                        (0, _iterator.each)(executors, (function() {
                                            this()
                                        }));
                                        newTableElement.remove();
                                        break;
                                    default:
                                        this.setTableElement(newTableElement, isFixedTableRendering);
                                        contentElement.addClass(this.addWidgetPrefix("content"));
                                        this._setGridRole(contentElement);
                                        this._renderContent(contentElement, newTableElement, isFixedTableRendering)
                                }
                            })
                        }).fail(() => {
                            this._contentChanges = []
                        })
                    };
                    _proto._getGridRoleName = function() {
                        return "grid"
                    };
                    _proto._setGridRole = function($element) {
                        var _a;
                        const hasData = !(null === (_a = this._dataController) || void 0 === _a ? void 0 : _a.isEmpty());
                        const gridRoleName = this._getGridRoleName();
                        if ((null === $element || void 0 === $element ? void 0 : $element.length) && hasData) {
                            this.setAria("role", gridRoleName, $element)
                        }
                    };
                    _proto._createEmptyRow = function(className, isFixed, height) {
                        const that = this;
                        let $cell;
                        const $row = that._createRow();
                        const columns = isFixed ? this.getFixedColumns() : this.getColumns();
                        $row.addClass(className).toggleClass("dx-column-lines", that.option("showColumnLines"));
                        for (let i = 0; i < columns.length; i++) {
                            $cell = that._createCell({
                                column: columns[i],
                                rowType: "freeSpace",
                                columnIndex: i,
                                columns: columns
                            });
                            (0, _type.isNumeric)(height) && $cell.css("height", height);
                            $row.append($cell)
                        }
                        that.setAria("role", "presentation", $row);
                        return $row
                    };
                    _proto.getFixedColumns = function() {
                        throw new Error("Method not implemented.")
                    };
                    _proto._appendEmptyRow = function($table, $emptyRow, location) {
                        const $tBodies = this._getBodies($table);
                        const isTableContainer = !$tBodies.length || $emptyRow.is("tbody");
                        const $container = isTableContainer ? $table : $tBodies;
                        if ("top" === location) {
                            $container.first().prepend($emptyRow);
                            if (isTableContainer) {
                                const $colgroup = $container.children("colgroup");
                                $container.prepend($colgroup)
                            }
                        } else {
                            $container.last().append($emptyRow)
                        }
                    };
                    _proto._renderFreeSpaceRow = function($tableElement, change) {
                        let $freeSpaceRowElement = this._createEmptyRow("dx-freespace-row");
                        $freeSpaceRowElement = this._wrapRowIfNeed($tableElement, $freeSpaceRowElement, "refresh" === (null === change || void 0 === change ? void 0 : change.changeType));
                        this._appendEmptyRow($tableElement, $freeSpaceRowElement)
                    };
                    _proto._checkRowKeys = function(options) {
                        const that = this;
                        const rows = that._getRows(options);
                        const keyExpr = that._dataController.store() && that._dataController.store().key();
                        keyExpr && rows.some(row => {
                            if ("data" === row.rowType && void 0 === row.key) {
                                that._dataController.fireError("E1046", keyExpr);
                                return true
                            }
                            return
                        })
                    };
                    _proto._needUpdateRowHeight = function(itemsCount) {
                        return itemsCount > 0 && !this._rowHeight
                    };
                    _proto._getRowsHeight = function($tableElement) {
                        $tableElement = $tableElement || this._tableElement;
                        const $rowElements = $tableElement.children("tbody").children().not(".dx-virtual-row").not(".".concat("dx-freespace-row"));
                        return $rowElements.toArray().reduce((sum, row) => sum + (0, _position.getBoundingRect)(row).height, 0)
                    };
                    _proto._updateRowHeight = function() {
                        const that = this;
                        const $tableElement = that.getTableElement();
                        const itemsCount = that._dataController.items().length;
                        if ($tableElement && that._needUpdateRowHeight(itemsCount)) {
                            const rowsHeight = that._getRowsHeight($tableElement);
                            that._rowHeight = rowsHeight / itemsCount
                        }
                    };
                    _proto._findContentElement = function(isFixedTableRendering) {
                        let $content = this.element();
                        const scrollable = this.getScrollable();
                        if ($content) {
                            if (scrollable) {
                                $content = (0, _renderer.default)(scrollable.content())
                            }
                            return $content.children().first()
                        }
                    };
                    _proto._getRowElements = function(tableElement) {
                        const $rows = _ColumnsView.prototype._getRowElements.call(this, tableElement);
                        return $rows && $rows.not(".".concat("dx-freespace-row"))
                    };
                    _proto._getFreeSpaceRowElements = function($table) {
                        const tableElements = $table || this.getTableElements();
                        return tableElements && tableElements.children("tbody").children(".".concat("dx-freespace-row"))
                    };
                    _proto._getNoDataText = function() {
                        return this.option("noDataText")
                    };
                    _proto._rowClick = function(e) {
                        const item = this._dataController.items()[e.rowIndex] || {};
                        this.executeAction("onRowClick", (0, _extend.extend)({
                            evaluate(expr) {
                                const getter = (0, _data.compileGetter)(expr);
                                return getter(item.data)
                            }
                        }, e, item))
                    };
                    _proto._rowDblClick = function(e) {
                        const item = this._dataController.items()[e.rowIndex] || {};
                        this.executeAction("onRowDblClick", (0, _extend.extend)({}, e, item))
                    };
                    _proto._getColumnsCountBeforeGroups = function(columns) {
                        for (let i = 0; i < columns.length; i++) {
                            if ("groupExpand" === columns[i].type) {
                                return i
                            }
                        }
                        return 0
                    };
                    _proto._getGroupCellOptions = function(options) {
                        const columnsCountBeforeGroups = this._getColumnsCountBeforeGroups(options.columns);
                        const columnIndex = (options.row.groupIndex || 0) + columnsCountBeforeGroups;
                        return {
                            columnIndex: columnIndex,
                            colspan: options.columns.length - columnIndex - 1
                        }
                    };
                    _proto._needWrapRow = function() {
                        return _ColumnsView.prototype._needWrapRow.apply(this, arguments) || !!this.option("dataRowTemplate")
                    };
                    _proto._renderCells = function($row, options) {
                        if ("group" === options.row.rowType) {
                            this._renderGroupedCells($row, options)
                        } else if (options.row.values) {
                            _ColumnsView.prototype._renderCells.call(this, $row, options)
                        }
                    };
                    _proto._renderGroupedCells = function($row, options) {
                        const {
                            row: row
                        } = options;
                        let expandColumn;
                        const {
                            columns: columns
                        } = options;
                        const {
                            rowIndex: rowIndex
                        } = row;
                        let isExpanded;
                        const groupCellOptions = this._getGroupCellOptions(options);
                        for (let i = 0; i <= groupCellOptions.columnIndex; i++) {
                            if (i === groupCellOptions.columnIndex && columns[i].allowCollapsing && "infinite" !== options.scrollingMode) {
                                isExpanded = !!row.isExpanded;
                                expandColumn = columns[i]
                            } else {
                                isExpanded = null;
                                expandColumn = {
                                    command: "expand",
                                    cssClass: columns[i].cssClass
                                }
                            }
                            if (this._needRenderCell(i, options.columnIndices)) {
                                this._renderCell($row, {
                                    value: isExpanded,
                                    row: row,
                                    rowIndex: rowIndex,
                                    column: expandColumn,
                                    columnIndex: i,
                                    columnIndices: options.columnIndices,
                                    change: options.change
                                })
                            }
                        }
                        const groupColumnAlignment = (0, _position.getDefaultAlignment)(this.option("rtlEnabled"));
                        const groupColumn = (0, _extend.extend)({}, columns[groupCellOptions.columnIndex], {
                            command: null,
                            type: null,
                            cssClass: null,
                            width: null,
                            showWhenGrouped: false,
                            alignment: groupColumnAlignment
                        });
                        if (groupCellOptions.colspan > 1) {
                            groupColumn.colspan = groupCellOptions.colspan
                        }
                        if (this._needRenderCell(groupCellOptions.columnIndex + 1, options.columnIndices)) {
                            this._renderCell($row, {
                                value: row.values[row.groupIndex],
                                row: row,
                                rowIndex: rowIndex,
                                column: groupColumn,
                                columnIndex: groupCellOptions.columnIndex + 1,
                                columnIndices: options.columnIndices,
                                change: options.change
                            })
                        }
                    };
                    _proto._renderRows = function($table, options) {
                        const that = this;
                        const scrollingMode = that.option("scrolling.mode");
                        _ColumnsView.prototype._renderRows.call(this, $table, (0, _extend.extend)({
                            scrollingMode: scrollingMode
                        }, options));
                        that._checkRowKeys(options.change);
                        that._renderFreeSpaceRow($table, options.change);
                        if (!that._hasHeight) {
                            that.updateFreeSpaceRowHeight($table)
                        }
                    };
                    _proto._renderDataRowByTemplate = function($table, options, dataRowTemplate) {
                        const {
                            row: row
                        } = options;
                        const rowOptions = (0, _extend.extend)({
                            columns: options.columns
                        }, row);
                        const $tbody = this._createRow(row, "tbody");
                        $tbody.appendTo($table);
                        this.renderTemplate($tbody, dataRowTemplate, rowOptions, true, options.change);
                        this._rowPrepared($tbody, rowOptions, options.row)
                    };
                    _proto._renderRow = function($table, options) {
                        const {
                            row: row
                        } = options;
                        const {
                            rowTemplate: rowTemplate
                        } = this.option();
                        const dataRowTemplate = this.option("dataRowTemplate");
                        if ("data" === row.rowType && dataRowTemplate) {
                            this._renderDataRowByTemplate($table, options, dataRowTemplate)
                        } else if (("data" === row.rowType || "group" === row.rowType) && !(0, _type.isDefined)(row.groupIndex) && rowTemplate) {
                            this.renderTemplate($table, rowTemplate, (0, _extend.extend)({
                                columns: options.columns
                            }, row), true)
                        } else {
                            _ColumnsView.prototype._renderRow.call(this, $table, options)
                        }
                    };
                    _proto._renderTable = function(options) {
                        const that = this;
                        const $table = _ColumnsView.prototype._renderTable.call(this, options);
                        const resizeCompletedHandler = function() {
                            const scrollableInstance = that.getScrollable();
                            if (scrollableInstance && that.element().closest((0, _window.getWindow)().document).length) {
                                that.resizeCompleted.remove(resizeCompletedHandler);
                                scrollableInstance._visibilityChanged(true)
                            }
                        };
                        if (!(0, _type.isDefined)(that.getTableElement())) {
                            that.setTableElement($table);
                            that._renderScrollable(true);
                            that.resizeCompleted.add(resizeCompletedHandler)
                        } else {
                            that._renderScrollable()
                        }
                        return $table
                    };
                    _proto._createTable = function() {
                        const $table = _ColumnsView.prototype._createTable.apply(this, arguments);
                        if (this.option().rowTemplate || this.option().dataRowTemplate) {
                            $table.appendTo(this.component.$element())
                        }
                        return $table
                    };
                    _proto._renderCore = function(change) {
                        const $element = this.element();
                        $element.addClass(this.addWidgetPrefix("rowsview")).toggleClass(this.addWidgetPrefix("nowrap"), !this.option("wordWrapEnabled"));
                        $element.toggleClass("dx-empty", this._dataController.isEmpty());
                        this.setAria("role", "presentation", $element);
                        const $table = this._renderTable({
                            change: change
                        });
                        const deferred = this._updateContent($table, change);
                        _ColumnsView.prototype._renderCore.call(this, change);
                        this._lastColumnWidths = null;
                        return deferred
                    };
                    _proto._getRows = function(change) {
                        return change && change.items || this._dataController.items()
                    };
                    _proto._getCellOptions = function(options) {
                        const that = this;
                        const {
                            column: column
                        } = options;
                        const {
                            row: row
                        } = options;
                        const {
                            data: data
                        } = row;
                        const summaryCells = row && row.summaryCells;
                        const {
                            value: value
                        } = options;
                        const displayValue = _m_utils.default.getDisplayValue(column, value, data, row.rowType);
                        const parameters = _ColumnsView.prototype._getCellOptions.call(this, options);
                        parameters.value = value;
                        parameters.oldValue = options.oldValue;
                        parameters.displayValue = displayValue;
                        parameters.row = row;
                        parameters.key = row.key;
                        parameters.data = data;
                        parameters.rowType = row.rowType;
                        parameters.values = row.values;
                        parameters.text = !column.command ? _m_utils.default.formatValue(displayValue, column) : "";
                        parameters.rowIndex = row.rowIndex;
                        parameters.summaryItems = summaryCells && summaryCells[options.columnIndex];
                        parameters.resized = column.resizedCallbacks;
                        if ((0, _type.isDefined)(column.groupIndex) && !column.command) {
                            const groupingTextsOptions = that.option("grouping.texts");
                            const scrollingMode = that.option("scrolling.mode");
                            if ("virtual" !== scrollingMode && "infinite" !== scrollingMode) {
                                parameters.groupContinuesMessage = data && data.isContinuationOnNextPage && groupingTextsOptions && groupingTextsOptions.groupContinuesMessage;
                                parameters.groupContinuedMessage = data && data.isContinuation && groupingTextsOptions && groupingTextsOptions.groupContinuedMessage
                            }
                        }
                        return parameters
                    };
                    _proto._setRowsOpacityCore = function($rows, visibleColumns, columnIndex, value) {
                        const columnsController = this._columnsController;
                        const columns = columnsController.getColumns();
                        const column = columns && columns[columnIndex];
                        const columnID = column && column.isBand && column.index;
                        (0, _iterator.each)($rows, (rowIndex, row) => {
                            if (!(0, _renderer.default)(row).hasClass("dx-group-row")) {
                                for (let i = 0; i < visibleColumns.length; i++) {
                                    if ((0, _type.isNumeric)(columnID) && columnsController.isParentBandColumn(visibleColumns[i].index, columnID) || visibleColumns[i].index === columnIndex) {
                                        $rows.eq(rowIndex).children().eq(i).css({
                                            opacity: value
                                        });
                                        if (!(0, _type.isNumeric)(columnID)) {
                                            break
                                        }
                                    }
                                }
                            }
                        })
                    };
                    _proto._getDevicePixelRatio = function() {
                        return (0, _window.getWindow)().devicePixelRatio
                    };
                    _proto.renderNoDataText = function() {
                        return _m_utils.default.renderNoDataText.apply(this, arguments)
                    };
                    _proto.getCellOptions = function(rowIndex, columnIdentifier) {
                        const rowOptions = this._dataController.items()[rowIndex];
                        let cellOptions;
                        let column;
                        if (rowOptions) {
                            if ((0, _type.isString)(columnIdentifier)) {
                                column = this._columnsController.columnOption(columnIdentifier)
                            } else {
                                column = this._columnsController.getVisibleColumns()[columnIdentifier]
                            }
                            if (column) {
                                cellOptions = this._getCellOptions({
                                    value: column.calculateCellValue(rowOptions.data),
                                    rowIndex: rowOptions.rowIndex,
                                    row: rowOptions,
                                    column: column
                                })
                            }
                        }
                        return cellOptions
                    };
                    _proto.getRow = function(index) {
                        if (index >= 0) {
                            const rows = this._getRowElements();
                            if (rows.length > index) {
                                return (0, _renderer.default)(rows[index])
                            }
                        }
                        return
                    };
                    _proto.updateFreeSpaceRowHeight = function($table) {
                        const dataController = this._dataController;
                        const itemCount = dataController.items(true).length;
                        const contentElement = this._findContentElement();
                        const freeSpaceRowElements = this._getFreeSpaceRowElements($table);
                        if (freeSpaceRowElements && contentElement && dataController.totalCount() >= 0) {
                            let isFreeSpaceRowVisible = false;
                            if (itemCount > 0) {
                                if (!this._hasHeight) {
                                    const freeSpaceRowCount = dataController.pageSize() - itemCount;
                                    const scrollingMode = this.option("scrolling.mode");
                                    if (freeSpaceRowCount > 0 && dataController.pageCount() > 1 && "virtual" !== scrollingMode && "infinite" !== scrollingMode) {
                                        (0, _style.setHeight)(freeSpaceRowElements, freeSpaceRowCount * this._rowHeight);
                                        isFreeSpaceRowVisible = true
                                    }
                                    if (!isFreeSpaceRowVisible && $table) {
                                        (0, _style.setHeight)(freeSpaceRowElements, 0)
                                    } else {
                                        freeSpaceRowElements.toggle(isFreeSpaceRowVisible)
                                    }
                                    this._updateLastRowBorder(isFreeSpaceRowVisible)
                                } else {
                                    freeSpaceRowElements.hide();
                                    (0, _common.deferUpdate)(() => {
                                        const scrollbarWidth = this.getScrollbarWidth(true);
                                        const elementHeightWithoutScrollbar = (0, _size.getHeight)(this.element()) - scrollbarWidth;
                                        const contentHeight = (0, _size.getOuterHeight)(contentElement);
                                        const showFreeSpaceRow = elementHeightWithoutScrollbar - contentHeight > 0;
                                        const rowsHeight = this._getRowsHeight(contentElement.children().first());
                                        const $tableElement = $table || this.getTableElements();
                                        const borderTopWidth = Math.ceil(parseFloat($tableElement.css("borderTopWidth")));
                                        const heightCorrection = this._getHeightCorrection();
                                        const resultHeight = elementHeightWithoutScrollbar - rowsHeight - borderTopWidth - heightCorrection;
                                        if (showFreeSpaceRow) {
                                            (0, _common.deferRender)(() => {
                                                freeSpaceRowElements.css("height", resultHeight);
                                                isFreeSpaceRowVisible = true;
                                                freeSpaceRowElements.show()
                                            })
                                        }(0, _common.deferRender)(() => this._updateLastRowBorder(isFreeSpaceRowVisible))
                                    })
                                }
                            } else {
                                freeSpaceRowElements.css("height", 0);
                                freeSpaceRowElements.show();
                                this._updateLastRowBorder(true)
                            }
                        }
                    };
                    _proto._getHeightCorrection = function() {
                        const isZoomedWebkit = _browser.default.webkit && this._getDevicePixelRatio() >= 2;
                        const isChromeLatest = _browser.default.chrome && _browser.default.version >= 91;
                        const hasExtraBorderTop = _browser.default.mozilla && _browser.default.version >= 70 && !this.option("showRowLines");
                        return isZoomedWebkit || hasExtraBorderTop || isChromeLatest ? 1 : 0
                    };
                    _proto._columnOptionChanged = function(e) {
                        const {
                            optionNames: optionNames
                        } = e;
                        if (e.changeTypes.grouping) {
                            return
                        }
                        if (optionNames.width || optionNames.visibleWidth) {
                            _ColumnsView.prototype._columnOptionChanged.call(this, e);
                            this._fireColumnResizedCallbacks()
                        }
                    };
                    _proto.getScrollable = function() {
                        return this._scrollable
                    };
                    _proto.init = function() {
                        const that = this;
                        const dataController = that.getController("data");
                        _ColumnsView.prototype.init.call(this);
                        that._editorFactoryController = that.getController("editorFactory");
                        that._rowHeight = 0;
                        that._scrollTop = 0;
                        that._scrollLeft = -1;
                        that._scrollRight = 0;
                        that._hasHeight = void 0;
                        that._contentChanges = [];
                        dataController.loadingChanged.add((isLoading, messageText) => {
                            that.setLoading(isLoading, messageText)
                        });
                        dataController.dataSourceChanged.add(() => {
                            if (this._scrollLeft >= 0 && !this._dataController.isLoading()) {
                                this._handleScroll({
                                    component: this.getScrollable(),
                                    forceUpdateScrollPosition: true,
                                    scrollOffset: {
                                        top: this._scrollTop,
                                        left: this._scrollLeft
                                    }
                                })
                            }
                        })
                    };
                    _proto._handleDataChanged = function(change) {
                        const that = this;
                        switch (change.changeType) {
                            case "refresh":
                            case "prepend":
                            case "append":
                            case "update":
                                that.render(null, change);
                                break;
                            default:
                                that._update(change)
                        }
                    };
                    _proto.publicMethods = function() {
                        return ["isScrollbarVisible", "getTopVisibleRowData", "getScrollbarWidth", "getCellElement", "getRowElement", "getScrollable"]
                    };
                    _proto.contentWidth = function() {
                        return (0, _size.getWidth)(this.element()) - this.getScrollbarWidth()
                    };
                    _proto.getScrollbarWidth = function(isHorizontal) {
                        const scrollableContainer = this._scrollableContainer && this._scrollableContainer.get(0);
                        let scrollbarWidth = 0;
                        if (scrollableContainer) {
                            if (!isHorizontal) {
                                scrollbarWidth = scrollableContainer.clientWidth ? scrollableContainer.offsetWidth - scrollableContainer.clientWidth : 0
                            } else {
                                scrollbarWidth = scrollableContainer.clientHeight ? scrollableContainer.offsetHeight - scrollableContainer.clientHeight : 0;
                                scrollbarWidth += function(that) {
                                    const scrollable = that.getScrollable();
                                    return scrollable ? Math.ceil(parseFloat((0, _renderer.default)(scrollable.content()).css("paddingBottom"))) : 0
                                }(this)
                            }
                        }
                        return scrollbarWidth > 0 ? scrollbarWidth : 0
                    };
                    _proto._fireColumnResizedCallbacks = function() {
                        const lastColumnWidths = this._lastColumnWidths || [];
                        const columnWidths = [];
                        const columns = this.getColumns();
                        for (let i = 0; i < columns.length; i++) {
                            columnWidths[i] = columns[i].visibleWidth;
                            if (columns[i].resizedCallbacks && !(0, _type.isDefined)(columns[i].groupIndex) && lastColumnWidths[i] !== columnWidths[i]) {
                                columns[i].resizedCallbacks.fire(columnWidths[i])
                            }
                        }
                        this._lastColumnWidths = columnWidths
                    };
                    _proto._updateLastRowBorder = function(isFreeSpaceRowVisible) {
                        if (this.option("showBorders") && this.option("showRowLines") && !isFreeSpaceRowVisible) {
                            this.element().addClass("dx-last-row-border")
                        } else {
                            this.element().removeClass("dx-last-row-border")
                        }
                    };
                    _proto._updateScrollable = function() {
                        const scrollable = _ui.default.getInstance(this.element());
                        if (scrollable) {
                            scrollable.update();
                            if (scrollable.option("useNative") || !(null === scrollable || void 0 === scrollable ? void 0 : scrollable.isRenovated())) {
                                this._updateHorizontalScrollPosition()
                            }
                        }
                    };
                    _proto._updateHorizontalScrollPosition = function() {
                        const scrollable = this.getScrollable();
                        const scrollLeft = scrollable && scrollable.scrollOffset().left;
                        const rtlEnabled = this.option("rtlEnabled");
                        if (rtlEnabled) {
                            const maxHorizontalScrollOffset = getMaxHorizontalScrollOffset(scrollable);
                            const scrollRight = maxHorizontalScrollOffset - scrollLeft;
                            if (scrollRight !== this._scrollRight) {
                                this._scrollLeft = maxHorizontalScrollOffset - this._scrollRight
                            }
                        }
                        if (this._scrollLeft >= 0 && scrollLeft !== this._scrollLeft) {
                            scrollable.scrollTo({
                                x: this._scrollLeft
                            })
                        }
                    };
                    _proto._resizeCore = function() {
                        const that = this;
                        that._fireColumnResizedCallbacks();
                        that._updateRowHeight();
                        (0, _common.deferRender)(() => {
                            that._renderScrollable();
                            that.renderNoDataText();
                            that.updateFreeSpaceRowHeight();
                            (0, _common.deferUpdate)(() => {
                                that._updateScrollable()
                            })
                        })
                    };
                    _proto.scrollTo = function(location) {
                        const $element = this.element();
                        const dxScrollable = $element && _ui.default.getInstance($element);
                        if (dxScrollable) {
                            dxScrollable.scrollTo(location)
                        }
                    };
                    _proto.height = function(_height) {
                        const that = this;
                        const $element = this.element();
                        if (0 === arguments.length) {
                            return $element ? (0, _size.getOuterHeight)($element, true) : 0
                        }
                        if ((0, _type.isDefined)(_height) && $element) {
                            that.hasHeight("auto" !== _height);
                            (0, _style.setHeight)($element, _height)
                        }
                    };
                    _proto.hasHeight = function(_hasHeight) {
                        if (0 === arguments.length) {
                            return !!this._hasHeight
                        }
                        this._hasHeight = _hasHeight;
                        return
                    };
                    _proto.setLoading = function(isLoading, messageText) {
                        const that = this;
                        let loadPanel = that._loadPanel;
                        const dataController = that._dataController;
                        const loadPanelOptions = that.option("loadPanel") || {};
                        const animation = dataController.isLoaded() ? loadPanelOptions.animation : null;
                        const $element = that.element();
                        if (!(0, _window.hasWindow)()) {
                            return
                        }
                        if (!loadPanel && void 0 !== messageText && dataController.isLocalStore() && "auto" === loadPanelOptions.enabled && $element) {
                            that._renderLoadPanel($element, $element.parent());
                            loadPanel = that._loadPanel
                        }
                        if (loadPanel) {
                            const visibilityOptions = {
                                message: messageText || loadPanelOptions.text,
                                animation: animation,
                                visible: isLoading
                            };
                            if (isLoading) {
                                visibilityOptions.position = _m_utils.default.calculateLoadPanelPosition($element)
                            }
                            clearTimeout(that._hideLoadingTimeoutID);
                            if (loadPanel.option("visible") && !isLoading) {
                                that._hideLoadingTimeoutID = setTimeout(() => {
                                    loadPanel.option(visibilityOptions)
                                }, 200)
                            } else {
                                loadPanel.option(visibilityOptions)
                            }
                        }
                    };
                    _proto.setRowsOpacity = function(columnIndex, value) {
                        const $rows = this._getRowElements().not(".".concat("dx-group-row")) || [];
                        this._setRowsOpacityCore($rows, this.getColumns(), columnIndex, value)
                    };
                    _proto._getCellElementsCore = function(rowIndex) {
                        const $cells = _ColumnsView.prototype._getCellElementsCore.apply(this, arguments);
                        if ($cells) {
                            const groupCellIndex = $cells.filter(".".concat("dx-group-cell")).index();
                            if (groupCellIndex >= 0 && $cells.length > groupCellIndex + 1) {
                                return $cells.slice(0, groupCellIndex + 1)
                            }
                        }
                        return $cells
                    };
                    _proto._getBoundaryVisibleItemIndex = function(isTop, isFloor) {
                        const that = this;
                        let itemIndex = 0;
                        let prevOffset = 0;
                        let offset = 0;
                        let viewportBoundary = that._scrollTop;
                        const $contentElement = that._findContentElement();
                        const contentElementOffsetTop = $contentElement && $contentElement.offset().top;
                        const dataController = this.getController("data");
                        const items = dataController.items();
                        const tableElement = that.getTableElement();
                        if (items.length && tableElement) {
                            const rowElements = that._getRowElements(tableElement).filter(":visible");
                            if (!isTop) {
                                const height = (0, _size.getOuterHeight)(this._hasHeight ? this.element() : (0, _window.getWindow)());
                                viewportBoundary += height
                            }
                            for (itemIndex = 0; itemIndex < items.length; itemIndex++) {
                                prevOffset = offset;
                                const $rowElement = (0, _renderer.default)(rowElements).eq(itemIndex);
                                if ($rowElement.length) {
                                    offset = $rowElement.offset();
                                    offset = (isTop ? offset.top : offset.top + (0, _size.getOuterHeight)($rowElement)) - contentElementOffsetTop;
                                    if (offset > viewportBoundary) {
                                        if (itemIndex) {
                                            if (isFloor || 2 * viewportBoundary < Math.round(offset + prevOffset)) {
                                                itemIndex--
                                            }
                                        }
                                        break
                                    }
                                }
                            }
                            if (itemIndex && itemIndex === items.length) {
                                itemIndex--
                            }
                        }
                        return itemIndex
                    };
                    _proto.getTopVisibleItemIndex = function(isFloor) {
                        return this._getBoundaryVisibleItemIndex(true, isFloor)
                    };
                    _proto.getBottomVisibleItemIndex = function(isFloor) {
                        return this._getBoundaryVisibleItemIndex(false, isFloor)
                    };
                    _proto.getTopVisibleRowData = function() {
                        const itemIndex = this.getTopVisibleItemIndex();
                        const items = this._dataController.items();
                        if (items[itemIndex]) {
                            return items[itemIndex].data
                        }
                        return
                    };
                    _proto._scrollToElement = function($element, offset) {
                        const scrollable = this.getScrollable();
                        scrollable && scrollable.scrollToElement($element, offset)
                    };
                    _proto.optionChanged = function(args) {
                        const that = this;
                        _ColumnsView.prototype.optionChanged.call(this, args);
                        switch (args.name) {
                            case "wordWrapEnabled":
                            case "showColumnLines":
                            case "showRowLines":
                            case "rowAlternationEnabled":
                            case "rowTemplate":
                            case "dataRowTemplate":
                            case "twoWayBindingEnabled":
                                that._invalidate(true, true);
                                args.handled = true;
                                break;
                            case "scrolling":
                                that._rowHeight = null;
                                that._tableElement = null;
                                args.handled = true;
                                break;
                            case "rtlEnabled":
                                that._rowHeight = null;
                                that._tableElement = null;
                                break;
                            case "loadPanel":
                                that._tableElement = null;
                                that._invalidate(true, "loadPanel.enabled" !== args.fullName);
                                args.handled = true;
                                break;
                            case "noDataText":
                                that.renderNoDataText();
                                args.handled = true
                        }
                    };
                    _proto.setAriaOwns = function(headerTableId, footerTableId) {
                        var _a;
                        const $contentElement = this._findContentElement();
                        const $tableElement = this.getTableElement();
                        if (null === $tableElement || void 0 === $tableElement ? void 0 : $tableElement.length) {
                            this.setAria("owns", "".concat(null !== headerTableId && void 0 !== headerTableId ? headerTableId : "", " ").concat(null !== (_a = $tableElement.attr("id")) && void 0 !== _a ? _a : "", " ").concat(null !== footerTableId && void 0 !== footerTableId ? footerTableId : "").trim(), $contentElement)
                        }
                    };
                    _proto.dispose = function() {
                        _ColumnsView.prototype.dispose.call(this);
                        clearTimeout(this._hideLoadingTimeoutID);
                        this._scrollable && this._scrollable.dispose()
                    };
                    _proto.setScrollerSpacing = function() {};
                    _proto._restoreErrorRow = function() {};
                    return RowsView
                }(_m_columns_view.ColumnsView);
                exports.RowsView = RowsView;
                const rowsModule = {
                    defaultOptions: () => ({
                        hoverStateEnabled: false,
                        scrolling: {
                            useNative: "auto"
                        },
                        loadPanel: {
                            enabled: "auto",
                            text: _message.default.format("Loading"),
                            width: 200,
                            height: 90,
                            showIndicator: true,
                            indicatorSrc: "",
                            showPane: true
                        },
                        dataRowTemplate: null,
                        columnAutoWidth: false,
                        noDataText: _message.default.format("dxDataGrid-noDataText"),
                        wordWrapEnabled: false,
                        showColumnLines: true,
                        showRowLines: false,
                        rowAlternationEnabled: false,
                        activeStateEnabled: false,
                        twoWayBindingEnabled: true
                    }),
                    views: {
                        rowsView: RowsView
                    }
                };
                exports.rowsModule = rowsModule
            },
        46958:
            /*!************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/views/utils/update_views_borders.js ***!
              \************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.updateViewsBorders = void 0;
                var _type = __webpack_require__( /*! ../../../../../core/utils/type */ 35922);
                var __rest = (void 0, function(s, e) {
                    var t = {};
                    for (var p in s) {
                        if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) {
                            t[p] = s[p]
                        }
                    }
                    if (null != s && "function" === typeof Object.getOwnPropertySymbols) {
                        var i = 0;
                        for (p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
                            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) {
                                t[p[i]] = s[p[i]]
                            }
                        }
                    }
                    return t
                });
                const CLASSES_borderedTop = "dx-bordered-top-view",
                    CLASSES_borderedBottom = "dx-bordered-bottom-view";
                const getViewElementWithClass = (viewsWithBorder, className) => {
                    var _a;
                    const borderedView = Object.values(viewsWithBorder).find(view => {
                        var _a;
                        return null === (_a = null === view || void 0 === view ? void 0 : view.element()) || void 0 === _a ? void 0 : _a.hasClass(className)
                    });
                    return null !== (_a = null === borderedView || void 0 === borderedView ? void 0 : borderedView.element()) && void 0 !== _a ? _a : null
                };
                exports.updateViewsBorders = (viewName, viewsWithBorder) => {
                    if (!((viewName, viewsWithBorder) => {
                            var _a;
                            if (!Object.keys(viewsWithBorder).includes(viewName)) {
                                return false
                            }
                            const {
                                rowsView: rowsView
                            } = viewsWithBorder, otherViews = __rest(viewsWithBorder, ["rowsView"]);
                            if (!(0, _type.isDefined)(null === (_a = null === rowsView || void 0 === rowsView ? void 0 : rowsView.element) || void 0 === _a ? void 0 : _a.call(rowsView))) {
                                return false
                            }
                            return Object.values(otherViews).filter(view => {
                                var _a;
                                return null === (_a = null === view || void 0 === view ? void 0 : view.isVisible) || void 0 === _a ? void 0 : _a.call(view)
                            }).every(view => (0, _type.isDefined)(null === view || void 0 === view ? void 0 : view.element()))
                        })(viewName, viewsWithBorder)) {
                        return
                    }
                    const $oldFirst = getViewElementWithClass(viewsWithBorder, CLASSES_borderedTop);
                    const $oldLast = getViewElementWithClass(viewsWithBorder, CLASSES_borderedBottom);
                    const $newFirst = (_ref => {
                        let {
                            columnHeadersView: columnHeadersView,
                            rowsView: rowsView
                        } = _ref;
                        if (null === columnHeadersView || void 0 === columnHeadersView ? void 0 : columnHeadersView.isVisible()) {
                            return columnHeadersView.element()
                        }
                        return rowsView.element()
                    })(viewsWithBorder);
                    const $newLast = (_ref2 => {
                        let {
                            filterPanelView: filterPanelView,
                            footerView: footerView,
                            rowsView: rowsView
                        } = _ref2;
                        if (null === filterPanelView || void 0 === filterPanelView ? void 0 : filterPanelView.isVisible()) {
                            return filterPanelView.element()
                        }
                        if (null === footerView || void 0 === footerView ? void 0 : footerView.isVisible()) {
                            return footerView.element()
                        }
                        return rowsView.element()
                    })(viewsWithBorder);
                    if ($oldFirst && !$oldFirst.is($newFirst)) {
                        $oldFirst.removeClass(CLASSES_borderedTop)
                    }
                    if ($oldLast && !$oldLast.is($newLast)) {
                        $oldLast.removeClass(CLASSES_borderedBottom)
                    }
                    if (!$newFirst.hasClass(CLASSES_borderedTop)) {
                        $newFirst.addClass(CLASSES_borderedTop)
                    }
                    if (!$newLast.hasClass(CLASSES_borderedBottom)) {
                        $newLast.addClass(CLASSES_borderedBottom)
                    }
                }
            },
        87482:
            /*!*************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/virtual_columns/m_virtual_columns.js ***!
              \*************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.virtualColumnsModule = void 0;
                var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/browser */ 47810));
                var _size = __webpack_require__( /*! ../../../../core/utils/size */ 58664);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _window = __webpack_require__( /*! ../../../../core/utils/window */ 58201);
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 60082));
                var _m_virtual_columns_core = __webpack_require__( /*! ./m_virtual_columns_core */ 44980);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const VirtualScrollingRowsViewExtender = {
                    _resizeCore() {
                        this.callBase.apply(this, arguments);
                        this._columnsController.resize()
                    },
                    _handleScroll(e) {
                        const scrollable = this.getScrollable();
                        let {
                            left: left
                        } = e.scrollOffset;
                        this.callBase.apply(this, arguments);
                        if (this.option("rtlEnabled") && scrollable) {
                            left = (0, _size.getWidth)(scrollable.$content()) - (0, _size.getWidth)(scrollable.$element()) - left
                        }
                        this._columnsController.setScrollPosition(left)
                    },
                    _renderCore(e) {
                        var _a, _b;
                        if (null === e || void 0 === e ? void 0 : e.virtualColumnsScrolling) {
                            const $contentElement = this._findContentElement();
                            const fixedColumns = null === (_a = this._columnsController) || void 0 === _a ? void 0 : _a.getFixedColumns();
                            const useNativeScrolling = null === (_b = this._scrollable) || void 0 === _b ? void 0 : _b.option("useNative");
                            if (null === fixedColumns || void 0 === fixedColumns ? void 0 : fixedColumns.length) {
                                $contentElement.css({
                                    minHeight: useNativeScrolling ? (0, _size.getHeight)($contentElement) : _m_utils.default.getContentHeightLimit(_browser.default)
                                });
                                const resizeCompletedHandler = () => {
                                    this.resizeCompleted.remove(resizeCompletedHandler);
                                    $contentElement.css({
                                        minHeight: ""
                                    })
                                };
                                this.resizeCompleted.add(resizeCompletedHandler)
                            }
                        }
                        return this.callBase.apply(this, arguments)
                    }
                };
                const HeaderViewExtender = {
                    _renderCore() {
                        const deferred = this.callBase.apply(this, arguments);
                        if (this._columnsController.isVirtualMode()) {
                            this._updateScrollLeftPosition()
                        }
                        return deferred
                    }
                };
                const ColumnsControllerExtender = function() {
                    const getWidths = function(columns) {
                        return columns.map(column => column.visibleWidth || parseFloat(column.width) || 50)
                    };
                    const members = {
                        init() {
                            this.callBase.apply(this, arguments);
                            this._beginPageIndex = null;
                            this._endPageIndex = null;
                            this._position = 0;
                            this._virtualVisibleColumns = {}
                        },
                        resetColumnsCache() {
                            this.callBase();
                            this._virtualVisibleColumns = {}
                        },
                        getBeginPageIndex(position) {
                            const visibleColumns = this.getVisibleColumns(void 0, true);
                            const widths = getWidths(visibleColumns);
                            let currentPosition = 0;
                            for (let index = 0; index < widths.length; index++) {
                                if (currentPosition >= position) {
                                    return Math.floor(index / this.getColumnPageSize())
                                }
                                currentPosition += widths[index]
                            }
                            return 0
                        },
                        getTotalWidth() {
                            const width = this.option("width");
                            if ("number" === typeof width) {
                                return width
                            }
                            return this.getController("resizing")._lastWidth || (0, _size.getOuterWidth)(this.component.$element())
                        },
                        getEndPageIndex(position) {
                            const visibleColumns = this.getVisibleColumns(void 0, true);
                            const widths = getWidths(visibleColumns);
                            let currentPosition = 0;
                            position += this.getTotalWidth();
                            for (let index = 0; index < widths.length; index++) {
                                if (currentPosition >= position) {
                                    return Math.ceil(index / this.getColumnPageSize())
                                }
                                currentPosition += widths[index]
                            }
                            return Math.ceil(widths.length / this.getColumnPageSize())
                        },
                        getColumnPageSize() {
                            return this.option("scrolling.columnPageSize")
                        },
                        _fireColumnsChanged() {
                            const date = new Date;
                            this.columnsChanged.fire({
                                optionNames: {
                                    all: true,
                                    length: 1
                                },
                                changeTypes: {
                                    columns: true,
                                    virtualColumnsScrolling: true,
                                    length: 2
                                }
                            });
                            this._renderTime = new Date - date
                        },
                        getScrollingTimeout() {
                            const renderingThreshold = this.option("scrolling.columnRenderingThreshold");
                            const renderAsync = this.option("scrolling.renderAsync");
                            let scrollingTimeout = 0;
                            if (!(0, _type.isDefined)(renderAsync) && this._renderTime > renderingThreshold || renderAsync) {
                                scrollingTimeout = this.option("scrolling.timeout")
                            }
                            return scrollingTimeout
                        },
                        setScrollPosition(position) {
                            const scrollingTimeout = this.getScrollingTimeout();
                            if (scrollingTimeout > 0) {
                                clearTimeout(this._changedTimeout);
                                this._changedTimeout = setTimeout(() => {
                                    this._setScrollPositionCore(position)
                                }, scrollingTimeout)
                            } else {
                                this._setScrollPositionCore(position)
                            }
                        },
                        isVirtualMode() {
                            return (0, _window.hasWindow)() && "virtual" === this.option("scrolling.columnRenderingMode")
                        },
                        resize() {
                            this._setScrollPositionCore(this._position)
                        },
                        _setScrollPositionCore(position) {
                            const that = this;
                            if (that.isVirtualMode()) {
                                const beginPageIndex = that.getBeginPageIndex(position);
                                const endPageIndex = that.getEndPageIndex(position);
                                const needColumnsChanged = position < that._position ? that._beginPageIndex > beginPageIndex : that._endPageIndex < endPageIndex;
                                that._position = position;
                                if (needColumnsChanged) {
                                    that._beginPageIndex = beginPageIndex;
                                    that._endPageIndex = endPageIndex;
                                    that._fireColumnsChanged()
                                }
                            }
                        },
                        getFixedColumns(rowIndex, isBase) {
                            const fixedColumns = this.callBase(rowIndex);
                            if (this.isVirtualMode() && !isBase && fixedColumns.length) {
                                const transparentColumnIndex = fixedColumns.map(c => c.command).indexOf("transparent");
                                fixedColumns[transparentColumnIndex].colspan = this.getVisibleColumns().length - this.callBase().length + 1;
                                return fixedColumns
                            }
                            return fixedColumns
                        },
                        _compileVisibleColumns(rowIndex, isBase) {
                            var _a;
                            if (isBase || !this.isVirtualMode() || !this._shouldReturnVisibleColumns()) {
                                return this.callBase(rowIndex)
                            }
                            if ((null === (_a = this._columns) || void 0 === _a ? void 0 : _a.length) && !(0, _type.isDefined)(this._beginPageIndex) && !(0, _type.isDefined)(this._endPageIndex)) {
                                this._beginPageIndex = this.getBeginPageIndex(this._position);
                                this._endPageIndex = this.getEndPageIndex(this._position)
                            }
                            const beginPageIndex = this._beginPageIndex;
                            const endPageIndex = this._endPageIndex;
                            const visibleColumnsHash = "".concat(rowIndex, "-").concat(beginPageIndex, "-").concat(endPageIndex);
                            if (this._virtualVisibleColumns[visibleColumnsHash]) {
                                return this._virtualVisibleColumns[visibleColumnsHash]
                            }
                            let visibleColumns = this.callBase();
                            const rowCount = this.getRowCount();
                            const pageSize = this.getColumnPageSize();
                            let startIndex = beginPageIndex * pageSize;
                            let endIndex = endPageIndex * pageSize;
                            const fixedColumns = this.getFixedColumns(void 0, true);
                            const transparentColumnIndex = fixedColumns.map(c => c.command).indexOf("transparent");
                            const beginFixedColumnCount = fixedColumns.length ? transparentColumnIndex : 0;
                            let beginFixedColumns = visibleColumns.slice(0, beginFixedColumnCount);
                            const beginColumns = visibleColumns.slice(beginFixedColumnCount, startIndex);
                            const beginWidth = getWidths(beginColumns).reduce((a, b) => a + b, 0);
                            if (!beginWidth) {
                                startIndex = 0
                            }
                            const endFixedColumnCount = fixedColumns.length ? fixedColumns.length - transparentColumnIndex - 1 : 0;
                            let endFixedColumns = visibleColumns.slice(visibleColumns.length - endFixedColumnCount);
                            const endColumns = visibleColumns.slice(endIndex, visibleColumns.length - endFixedColumnCount);
                            const endWidth = getWidths(endColumns).reduce((a, b) => a + b, 0);
                            if (!endWidth) {
                                endIndex = visibleColumns.length
                            }
                            if (rowCount > 1 && "number" === typeof rowIndex) {
                                const columnsInfo = [];
                                for (let i = 0; i <= rowCount; i++) {
                                    columnsInfo.push(this.callBase(i))
                                }
                                beginFixedColumns = (0, _m_virtual_columns_core.createColumnsInfo)(columnsInfo, 0, beginFixedColumns.length)[rowIndex] || [];
                                endFixedColumns = (0, _m_virtual_columns_core.createColumnsInfo)(columnsInfo, visibleColumns.length - endFixedColumns.length, visibleColumns.length)[rowIndex] || [];
                                visibleColumns = (0, _m_virtual_columns_core.createColumnsInfo)(columnsInfo, startIndex, endIndex)[rowIndex] || []
                            } else {
                                visibleColumns = visibleColumns.slice(startIndex, endIndex)
                            }
                            if (beginWidth) {
                                visibleColumns.unshift({
                                    command: "virtual",
                                    width: beginWidth
                                });
                                visibleColumns = beginFixedColumns.concat(visibleColumns)
                            }
                            if (endWidth) {
                                visibleColumns.push({
                                    command: "virtual",
                                    width: endWidth
                                });
                                visibleColumns = visibleColumns.concat(endFixedColumns)
                            }
                            this._virtualVisibleColumns[visibleColumnsHash] = visibleColumns;
                            return visibleColumns
                        },
                        getColumnIndexOffset() {
                            let offset = 0;
                            if (this._beginPageIndex > 0) {
                                const fixedColumns = this.getFixedColumns();
                                const transparentColumnIndex = fixedColumns.map(c => c.command).indexOf("transparent");
                                const leftFixedColumnCount = transparentColumnIndex >= 0 ? transparentColumnIndex : 0;
                                offset = this._beginPageIndex * this.getColumnPageSize() - leftFixedColumnCount - 1
                            }
                            return offset > 0 ? offset : 0
                        },
                        dispose() {
                            clearTimeout(this._changedTimeout);
                            this.callBase.apply(this, arguments)
                        }
                    };
                    return members
                }();
                const virtualColumnsModule = {
                    defaultOptions: () => ({
                        scrolling: {
                            columnRenderingMode: "standard",
                            columnPageSize: 5,
                            columnRenderingThreshold: 300
                        }
                    }),
                    extenders: {
                        controllers: {
                            columns: ColumnsControllerExtender
                        },
                        views: {
                            columnHeadersView: HeaderViewExtender,
                            rowsView: VirtualScrollingRowsViewExtender
                        }
                    }
                };
                exports.virtualColumnsModule = virtualColumnsModule
            },
        44980:
            /*!******************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/virtual_columns/m_virtual_columns_core.js ***!
              \******************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.createColumnsInfo = function(info, startIndex, endIndex) {
                    const newInfo = [];
                    foreachColumnInfo(info, (columnInfo, visibleIndex, rowIndex) => {
                        let cell = columnInfo;
                        let colspan;
                        const cellColspan = cell.colspan || 1;
                        const isVisible = visibleIndex + cellColspan - 1 >= startIndex && visibleIndex < endIndex;
                        newInfo[rowIndex] = newInfo[rowIndex] || [];
                        if (isVisible) {
                            if (visibleIndex < startIndex) {
                                colspan = cellColspan - (startIndex - visibleIndex);
                                visibleIndex = startIndex
                            } else {
                                colspan = cellColspan
                            }
                            if (visibleIndex + colspan > endIndex) {
                                colspan = endIndex - visibleIndex
                            }
                            if (colspan !== cellColspan) {
                                cell = (0, _extend.extend)({}, cell, {
                                    colspan: colspan
                                })
                            }
                            newInfo[rowIndex].push(cell)
                        } else if (visibleIndex > endIndex) {
                            return false
                        }
                        return
                    });
                    for (let i = 0; i < newInfo.length; i++) {
                        newInfo[i] = newInfo[i] || []
                    }
                    return newInfo
                };
                exports.foreachColumnInfo = foreachColumnInfo;
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);

                function foreachColumnInfo(info, callback, rowIndex, offsets, columnCount, lastProcessedIndexes) {
                    rowIndex = rowIndex || 0;
                    offsets = offsets || [];
                    lastProcessedIndexes = lastProcessedIndexes || [];
                    offsets[rowIndex] = offsets[rowIndex] || 0;
                    const row = info[rowIndex];
                    const startIndex = lastProcessedIndexes[rowIndex] + 1 || 0;
                    let processedColumnCount = 0;
                    let colIndex;
                    if (!row) {
                        return
                    }
                    for (colIndex = startIndex; colIndex < row.length; colIndex++) {
                        const cell = row[colIndex];
                        const visibleIndex = colIndex + offsets[rowIndex];
                        const colspan = cell.colspan || 1;
                        foreachColumnInfo(info, callback, rowIndex + (cell.rowspan || 1), offsets, colspan, lastProcessedIndexes);
                        offsets[rowIndex] += colspan - 1;
                        processedColumnCount += colspan;
                        if (cell.rowspan) {
                            for (let i = rowIndex + 1; i < rowIndex + cell.rowspan; i++) {
                                offsets[i] = offsets[i] || 0;
                                offsets[i] += cell.colspan || 1
                            }
                        }
                        if (false === callback(cell, visibleIndex, rowIndex, colIndex)) {
                            break
                        }
                        if (void 0 !== columnCount && processedColumnCount >= columnCount) {
                            break
                        }
                    }
                    lastProcessedIndexes[rowIndex] = colIndex
                }
            },
        20488:
            /*!*********************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/virtual_data_loader/m_virtual_data_loader.js ***!
              \*********************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.VirtualDataLoader = void 0;
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                const needTwoPagesLoading = that => that.option("scrolling.loadTwoPagesOnStart") || that._controller.isVirtual() || that._controller.getViewportItemIndex() > 0;
                const getBeginPageIndex = that => that._cache.length ? that._cache[0].pageIndex : -1;
                const getEndPageIndex = that => that._cache.length ? that._cache[that._cache.length - 1].pageIndex : -1;
                const fireChanged = (that, changed, args) => {
                    that._isChangedFiring = true;
                    changed(args);
                    that._isChangedFiring = false
                };
                const processDelayChanged = (that, changed, args) => {
                    if (that._isDelayChanged) {
                        that._isDelayChanged = false;
                        fireChanged(that, changed, args);
                        return true
                    }
                };
                const getPreloadPageCount = (that, previous) => {
                    const preloadEnabled = that.option("scrolling.preloadEnabled");
                    let pageCount = (that => {
                        const pageSize = that._dataOptions.pageSize();
                        const preventPreload = that.option("scrolling.preventPreload");
                        if (preventPreload) {
                            return 0
                        }
                        let realViewportSize = that._controller.viewportSize();
                        if (that._controller.isVirtualMode() && that.option("scrolling.removeInvisiblePages")) {
                            realViewportSize = 0;
                            const viewportSize = that._controller.viewportSize() * that._controller.viewportItemSize();
                            let offset = that._controller.getContentOffset();
                            const position = that._controller.getViewportPosition();
                            const virtualItemsCount = that._controller.virtualItemsCount();
                            const totalItemsCount = that._dataOptions.totalItemsCount();
                            for (let itemIndex = virtualItemsCount.begin; itemIndex < totalItemsCount; itemIndex++) {
                                if (offset >= position + viewportSize) {
                                    break
                                }
                                const itemSize = that._controller.getItemSizes()[itemIndex] || that._controller.viewportItemSize();
                                offset += itemSize;
                                if (offset >= position) {
                                    realViewportSize++
                                }
                            }
                        }
                        return pageSize && realViewportSize > 0 ? Math.ceil(realViewportSize / pageSize) : 1
                    })(that);
                    const isAppendMode = that._controller.isAppendMode();
                    if (pageCount) {
                        if (previous) {
                            pageCount = preloadEnabled ? 1 : 0
                        } else {
                            if (preloadEnabled) {
                                pageCount++
                            }
                            if (isAppendMode || !needTwoPagesLoading(that)) {
                                pageCount--
                            }
                        }
                    }
                    return pageCount
                };
                const processChanged = (that, changed, changeType, isDelayChanged, removeCacheItem) => {
                    const dataOptions = that._dataOptions;
                    const items = dataOptions.items().slice();
                    let change = (0, _type.isObject)(changeType) ? changeType : void 0;
                    const isPrepend = "prepend" === changeType;
                    const viewportItems = dataOptions.viewportItems();
                    if (changeType && (0, _type.isString)(changeType) && !that._isDelayChanged) {
                        change = {
                            changeType: changeType,
                            items: items
                        };
                        if (removeCacheItem) {
                            change.removeCount = removeCacheItem.itemsCount;
                            if (change.removeCount && dataOptions.correctCount) {
                                change.removeCount = dataOptions.correctCount(viewportItems, change.removeCount, isPrepend)
                            }
                        }
                    }
                    let removeItemCount = removeCacheItem ? removeCacheItem.itemsLength : 0;
                    if (removeItemCount && dataOptions.correctCount) {
                        removeItemCount = dataOptions.correctCount(viewportItems, removeItemCount, isPrepend)
                    }
                    if ("append" === changeType) {
                        viewportItems.push.apply(viewportItems, items);
                        if (removeCacheItem) {
                            viewportItems.splice(0, removeItemCount)
                        }
                    } else if (isPrepend) {
                        viewportItems.unshift.apply(viewportItems, items);
                        if (removeCacheItem) {
                            viewportItems.splice(-removeItemCount)
                        }
                    } else {
                        that._dataOptions.viewportItems(items)
                    }
                    dataOptions.updateLoading();
                    that._lastPageIndex = that.pageIndex();
                    that._isDelayChanged = isDelayChanged;
                    if (!isDelayChanged) {
                        fireChanged(that, changed, change)
                    }
                };
                let VirtualDataLoader = function() {
                    function VirtualDataLoader(controller, dataOptions) {
                        this._dataOptions = dataOptions;
                        this._controller = controller;
                        this._pageIndex = this._lastPageIndex = dataOptions.pageIndex();
                        this._cache = [];
                        this._loadingPageIndexes = {}
                    }
                    var _proto = VirtualDataLoader.prototype;
                    _proto.option = function() {
                        return this._controller.option.apply(this._controller, arguments)
                    };
                    _proto.viewportItemIndexChanged = function(itemIndex) {
                        const pageSize = this._dataOptions.pageSize();
                        const pageCount = this._dataOptions.pageCount();
                        const virtualMode = this._controller.isVirtualMode();
                        const appendMode = this._controller.isAppendMode();
                        const totalItemsCount = this._dataOptions.totalItemsCount();
                        let newPageIndex;
                        if (pageSize && (virtualMode || appendMode) && totalItemsCount >= 0) {
                            const viewportSize = this._controller.viewportSize();
                            if (viewportSize && itemIndex + viewportSize >= totalItemsCount && !this._controller.isVirtual()) {
                                if (this._dataOptions.hasKnownLastPage()) {
                                    newPageIndex = pageCount - 1;
                                    const lastPageSize = totalItemsCount % pageSize;
                                    if (newPageIndex > 0 && lastPageSize > 0 && lastPageSize < viewportSize) {
                                        newPageIndex--
                                    }
                                } else {
                                    newPageIndex = pageCount
                                }
                            } else {
                                newPageIndex = Math.floor(itemIndex / pageSize);
                                const maxPageIndex = pageCount - 1;
                                newPageIndex = Math.max(newPageIndex, 0);
                                newPageIndex = Math.min(newPageIndex, maxPageIndex)
                            }
                            this.pageIndex(newPageIndex);
                            return this.load()
                        }
                    };
                    _proto.pageIndex = function(_pageIndex) {
                        const isVirtualMode = this._controller.isVirtualMode();
                        const isAppendMode = this._controller.isAppendMode();
                        if (false !== this.option("scrolling.legacyMode") && (isVirtualMode || isAppendMode)) {
                            if (void 0 !== _pageIndex) {
                                this._pageIndex = _pageIndex
                            }
                            return this._pageIndex
                        }
                        return this._dataOptions.pageIndex(_pageIndex)
                    };
                    _proto.beginPageIndex = function(defaultPageIndex) {
                        let index = getBeginPageIndex(this);
                        if (index < 0) {
                            index = void 0 !== defaultPageIndex ? defaultPageIndex : this.pageIndex()
                        }
                        return index
                    };
                    _proto.endPageIndex = function() {
                        const endPageIndex = getEndPageIndex(this);
                        return endPageIndex > 0 ? endPageIndex : this._lastPageIndex
                    };
                    _proto.pageSize = function() {
                        return this._dataOptions.pageSize()
                    };
                    _proto.load = function() {
                        const dataOptions = this._dataOptions;
                        let result;
                        const isVirtualMode = this._controller.isVirtualMode();
                        const isAppendMode = this._controller.isAppendMode();
                        if (false !== this.option("scrolling.legacyMode") && (isVirtualMode || isAppendMode)) {
                            const pageIndexForLoad = (that => {
                                let result = -1;
                                const beginPageIndex = getBeginPageIndex(that);
                                const dataOptions = that._dataOptions;
                                if (beginPageIndex < 0) {
                                    result = that._pageIndex
                                } else if (!that._cache[that._pageIndex - beginPageIndex]) {
                                    result = that._pageIndex
                                } else if (beginPageIndex >= 0 && that._controller.viewportSize() >= 0) {
                                    if (beginPageIndex > 0) {
                                        const needToLoadPageBeforeLast = getEndPageIndex(that) + 1 === dataOptions.pageCount() && that._cache.length < getPreloadPageCount(that) + 1;
                                        const needToLoadPrevPage = needToLoadPageBeforeLast || that._pageIndex === beginPageIndex && getPreloadPageCount(that, true);
                                        if (needToLoadPrevPage) {
                                            result = beginPageIndex - 1
                                        }
                                    }
                                    if (result < 0) {
                                        const needToLoadNextPage = beginPageIndex + that._cache.length <= that._pageIndex + getPreloadPageCount(that);
                                        if (needToLoadNextPage) {
                                            result = beginPageIndex + that._cache.length
                                        }
                                    }
                                }
                                if (that._loadingPageIndexes[result]) {
                                    result = -1
                                }
                                return result
                            })(this);
                            if (pageIndexForLoad >= 0) {
                                const loadResult = ((that, pageIndex) => {
                                    const dataOptions = that._dataOptions;
                                    if (pageIndex === that.pageIndex() || !dataOptions.isLoading() && pageIndex < dataOptions.pageCount() || !dataOptions.hasKnownLastPage() && pageIndex === dataOptions.pageCount()) {
                                        dataOptions.pageIndex(pageIndex);
                                        that._loadingPageIndexes[pageIndex] = true;
                                        return (0, _deferred.when)(dataOptions.load()).always(() => {
                                            that._loadingPageIndexes[pageIndex] = false
                                        })
                                    }
                                })(this, pageIndexForLoad);
                                if (loadResult) {
                                    result = new _deferred.Deferred;
                                    loadResult.done(() => {
                                        const delayDeferred = this._delayDeferred;
                                        if (delayDeferred) {
                                            delayDeferred.done(result.resolve).fail(result.reject)
                                        } else {
                                            result.resolve()
                                        }
                                    }).fail(result.reject);
                                    dataOptions.updateLoading()
                                }
                            }
                        } else {
                            result = dataOptions.load()
                        }
                        if (!result && this._lastPageIndex !== this.pageIndex()) {
                            this._dataOptions.onChanged({
                                changeType: "pageIndex"
                            })
                        }
                        return result || (new _deferred.Deferred).resolve()
                    };
                    _proto.loadIfNeed = function() {
                        const isVirtualMode = this._controller.isVirtualMode();
                        const isAppendMode = this._controller.isAppendMode();
                        if ((isVirtualMode || isAppendMode) && !this._dataOptions.isLoading() && (!this._isChangedFiring || this._controller.isVirtual())) {
                            const position = this._controller.getViewportPosition();
                            if (position > 0) {
                                this._controller._setViewportPositionCore(position)
                            } else {
                                this.load()
                            }
                        }
                    };
                    _proto.handleDataChanged = function(callBase, e) {
                        const dataOptions = this._dataOptions;
                        let lastCacheLength = this._cache.length;
                        let changeType;
                        let removeInvisiblePages;
                        const isVirtualMode = this._controller.isVirtualMode();
                        const isAppendMode = this._controller.isAppendMode();
                        if (e && e.changes) {
                            fireChanged(this, callBase, e)
                        } else if (false !== this.option("scrolling.legacyMode") && (isVirtualMode || isAppendMode)) {
                            const beginPageIndex = getBeginPageIndex(this);
                            if (beginPageIndex >= 0) {
                                if (isVirtualMode && beginPageIndex + this._cache.length !== dataOptions.pageIndex() && beginPageIndex - 1 !== dataOptions.pageIndex()) {
                                    lastCacheLength = 0;
                                    this._cache = []
                                }
                                if (isAppendMode) {
                                    if (0 === dataOptions.pageIndex()) {
                                        this._cache = []
                                    } else if (dataOptions.pageIndex() < getEndPageIndex(this)) {
                                        fireChanged(this, callBase, {
                                            changeType: "append",
                                            items: []
                                        });
                                        return
                                    }
                                }
                            }
                            const cacheItem = {
                                pageIndex: dataOptions.pageIndex(),
                                itemsLength: dataOptions.items(true).length,
                                itemsCount: this.itemsCount(true)
                            };
                            if (this.option("scrolling.removeInvisiblePages") && isVirtualMode) {
                                removeInvisiblePages = this._cache.length > Math.max(getPreloadPageCount(this) + (this.option("scrolling.preloadEnabled") ? 1 : 0), 2)
                            } else {
                                processDelayChanged(this, callBase, {
                                    isDelayed: true
                                })
                            }
                            let removeCacheItem;
                            if (beginPageIndex === dataOptions.pageIndex() + 1) {
                                if (removeInvisiblePages) {
                                    removeCacheItem = this._cache.pop()
                                }
                                changeType = "prepend";
                                this._cache.unshift(cacheItem)
                            } else {
                                if (removeInvisiblePages) {
                                    removeCacheItem = this._cache.shift()
                                }
                                changeType = "append";
                                this._cache.push(cacheItem)
                            }
                            const isDelayChanged = isVirtualMode && 0 === lastCacheLength && needTwoPagesLoading(this);
                            processChanged(this, callBase, this._cache.length > 1 ? changeType : void 0, isDelayChanged, removeCacheItem);
                            this._delayDeferred = this.load().done(() => {
                                if (processDelayChanged(this, callBase)) {
                                    this.load()
                                }
                            })
                        } else {
                            processChanged(this, callBase, e)
                        }
                    };
                    _proto.getDelayDeferred = function() {
                        return this._delayDeferred
                    };
                    _proto.itemsCount = function(isBase) {
                        let count = 0;
                        const isVirtualMode = this._controller.isVirtualMode();
                        if (!isBase && isVirtualMode) {
                            this._cache.forEach(cacheItem => {
                                count += cacheItem.itemsCount
                            })
                        } else {
                            count = this._dataOptions.itemsCount()
                        }
                        return count
                    };
                    _proto.virtualItemsCount = function() {
                        let pageIndex = getBeginPageIndex(this);
                        if (pageIndex < 0) {
                            pageIndex = this._dataOptions.pageIndex()
                        }
                        const beginItemsCount = pageIndex * this._dataOptions.pageSize();
                        const itemsCount = this._cache.length * this._dataOptions.pageSize();
                        const endItemsCount = Math.max(0, this._dataOptions.totalItemsCount() - itemsCount - beginItemsCount);
                        return {
                            begin: beginItemsCount,
                            end: endItemsCount
                        }
                    };
                    _proto.reset = function() {
                        this._loadingPageIndexes = {};
                        this._cache = []
                    };
                    return VirtualDataLoader
                }();
                exports.VirtualDataLoader = VirtualDataLoader
            },
        92018:
            /*!*****************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/virtual_scrolling/m_virtual_scrolling.js ***!
              \*****************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.virtualScrollingModule = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/browser */ 47810));
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _dom = __webpack_require__( /*! ../../../../core/utils/dom */ 3532);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _position = __webpack_require__( /*! ../../../../core/utils/position */ 37518);
                var _size = __webpack_require__( /*! ../../../../core/utils/size */ 58664);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _window = __webpack_require__( /*! ../../../../core/utils/window */ 58201);
                var _load_indicator = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/load_indicator */ 2492));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.errors */ 96688));
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 60082));
                var _m_virtual_scrolling_core = __webpack_require__( /*! ./m_virtual_scrolling_core */ 86770);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const LEGACY_SCROLLING_MODE = "scrolling.legacyMode";
                const isVirtualMode = function(that) {
                    return "virtual" === that.option("scrolling.mode")
                };
                const isAppendMode = function(that) {
                    return "infinite" === that.option("scrolling.mode")
                };
                const isVirtualPaging = function(that) {
                    return isVirtualMode(that) || isAppendMode(that)
                };
                const correctCount = function(items, count, fromEnd, isItemCountableFunc) {
                    for (let i = 0; i < count + 1; i++) {
                        const item = items[fromEnd ? items.length - 1 - i : i];
                        if (item && !isItemCountableFunc(item, i === count, fromEnd)) {
                            count++
                        }
                    }
                    return count
                };
                const isItemCountableByDataSource = function(item, dataSource) {
                    return "data" === item.rowType && !item.isNewRow || "group" === item.rowType && dataSource.isGroupItemCountable(item.data)
                };
                const VirtualScrollingDataSourceAdapterExtender = function() {
                    const updateLoading = function(that) {
                        const beginPageIndex = that._virtualScrollController.beginPageIndex(-1);
                        if (isVirtualMode(that)) {
                            if (beginPageIndex < 0 || that.viewportSize() >= 0 && that.getViewportItemIndex() >= 0 && (beginPageIndex * that.pageSize() > that.getViewportItemIndex() || beginPageIndex * that.pageSize() + that.itemsCount() < that.getViewportItemIndex() + that.viewportSize()) && that._dataSource.isLoading()) {
                                if (!that._isLoading) {
                                    that._isLoading = true;
                                    that.loadingChanged.fire(true)
                                }
                            } else if (that._isLoading) {
                                that._isLoading = false;
                                that.loadingChanged.fire(false)
                            }
                        }
                    };
                    const result = {
                        init() {
                            this.callBase.apply(this, arguments);
                            this._items = [];
                            this._totalCount = -1;
                            this._isLoaded = true;
                            this._loadPageCount = 1;
                            this._virtualScrollController = new _m_virtual_scrolling_core.VirtualScrollController(this.component, this._getVirtualScrollDataOptions())
                        },
                        _getVirtualScrollDataOptions() {
                            const that = this;
                            return {
                                pageSize: () => that.pageSize(),
                                totalItemsCount: () => that.totalItemsCount(),
                                hasKnownLastPage: () => that.hasKnownLastPage(),
                                pageIndex: index => that._dataSource.pageIndex(index),
                                isLoading: () => that._dataSource.isLoading() && !that.isCustomLoading(),
                                pageCount: () => that.pageCount(),
                                load: () => that._dataSource.load(),
                                updateLoading() {
                                    updateLoading(that)
                                },
                                itemsCount: () => that.itemsCount(true),
                                items: () => that._dataSource.items(),
                                viewportItems(items) {
                                    if (items) {
                                        that._items = items
                                    }
                                    return that._items
                                },
                                onChanged(e) {
                                    that.changed.fire(e)
                                },
                                changingDuration() {
                                    if (that.isLoading()) {
                                        return 300
                                    }
                                    return that._renderTime || 0
                                }
                            }
                        },
                        _handleLoadingChanged(isLoading) {
                            if (false === this.option(LEGACY_SCROLLING_MODE)) {
                                this.callBase.apply(this, arguments);
                                return
                            }
                            if (!isVirtualMode(this) || this._isLoadingAll) {
                                this._isLoading = isLoading;
                                this.callBase.apply(this, arguments)
                            }
                            if (isLoading) {
                                this._startLoadTime = new Date
                            } else {
                                this._startLoadTime = void 0
                            }
                        },
                        _handleLoadError() {
                            if (false !== this.option(LEGACY_SCROLLING_MODE)) {
                                this._isLoading = false;
                                this.loadingChanged.fire(false)
                            }
                            this.callBase.apply(this, arguments)
                        },
                        _handleDataChanged(e) {
                            if (false === this.option(LEGACY_SCROLLING_MODE)) {
                                this._items = this._dataSource.items().slice();
                                this._totalCount = this._dataSourceTotalCount(true);
                                this.callBase.apply(this, arguments);
                                return
                            }
                            const callBase = this.callBase.bind(this);
                            this._virtualScrollController.handleDataChanged(callBase, e)
                        },
                        _customizeRemoteOperations(options, operationTypes) {
                            const newMode = false === this.option(LEGACY_SCROLLING_MODE);
                            let renderAsync = this.option("scrolling.renderAsync");
                            if (!(0, _type.isDefined)(renderAsync)) {
                                renderAsync = this._renderTime >= this.option("scrolling.renderingThreshold")
                            }
                            if ((isVirtualMode(this) || isAppendMode(this) && newMode) && !operationTypes.reload && (operationTypes.skip || newMode) && !renderAsync) {
                                options.delay = void 0
                            }
                            this.callBase.apply(this, arguments)
                        },
                        items() {
                            return this._items
                        },
                        _dataSourceTotalCount(isBase) {
                            return false === this.option(LEGACY_SCROLLING_MODE) && isVirtualMode(this) && !isBase ? this._totalCount : this.callBase()
                        },
                        itemsCount(isBase) {
                            if (isBase || false === this.option(LEGACY_SCROLLING_MODE)) {
                                return this.callBase()
                            }
                            return this._virtualScrollController.itemsCount()
                        },
                        load(loadOptions) {
                            if (false === this.option(LEGACY_SCROLLING_MODE) || loadOptions) {
                                return this.callBase(loadOptions)
                            }
                            return this._virtualScrollController.load()
                        },
                        isLoading() {
                            return false === this.option(LEGACY_SCROLLING_MODE) ? this._dataSource.isLoading() : this._isLoading
                        },
                        isLoaded() {
                            return this._dataSource.isLoaded() && this._isLoaded
                        },
                        resetPagesCache(isLiveUpdate) {
                            if (!isLiveUpdate) {
                                this._virtualScrollController.reset(true)
                            }
                            this.callBase.apply(this, arguments)
                        },
                        _changeRowExpandCore() {
                            const result = this.callBase.apply(this, arguments);
                            if (false === this.option(LEGACY_SCROLLING_MODE)) {
                                return result
                            }
                            this.resetPagesCache();
                            updateLoading(this);
                            return result
                        },
                        reload() {
                            this._dataSource.pageIndex(this.pageIndex());
                            const virtualScrollController = this._virtualScrollController;
                            if (false !== this.option(LEGACY_SCROLLING_MODE) && virtualScrollController) {
                                const d = new _deferred.Deferred;
                                this.callBase.apply(this, arguments).done(r => {
                                    const delayDeferred = virtualScrollController.getDelayDeferred();
                                    if (delayDeferred) {
                                        delayDeferred.done(d.resolve).fail(d.reject)
                                    } else {
                                        d.resolve(r)
                                    }
                                }).fail(d.reject);
                                return d
                            }
                            return this.callBase.apply(this, arguments)
                        },
                        refresh(options, operationTypes) {
                            if (false !== this.option(LEGACY_SCROLLING_MODE)) {
                                const {
                                    storeLoadOptions: storeLoadOptions
                                } = options;
                                const dataSource = this._dataSource;
                                if (operationTypes.reload) {
                                    this._virtualScrollController.reset();
                                    dataSource.items().length = 0;
                                    this._isLoaded = false;
                                    updateLoading(this);
                                    this._isLoaded = true;
                                    if (isAppendMode(this)) {
                                        this.pageIndex(0);
                                        dataSource.pageIndex(0);
                                        storeLoadOptions.pageIndex = 0;
                                        options.pageIndex = 0;
                                        storeLoadOptions.skip = 0
                                    } else {
                                        dataSource.pageIndex(this.pageIndex());
                                        if (dataSource.paginate()) {
                                            options.pageIndex = this.pageIndex();
                                            storeLoadOptions.skip = this.pageIndex() * this.pageSize()
                                        }
                                    }
                                } else if (isAppendMode(this) && storeLoadOptions.skip && this._totalCountCorrection < 0) {
                                    storeLoadOptions.skip += this._totalCountCorrection
                                }
                            }
                            return this.callBase.apply(this, arguments)
                        },
                        dispose() {
                            this._virtualScrollController.dispose();
                            this.callBase.apply(this, arguments)
                        },
                        loadPageCount(count) {
                            if (!(0, _type.isDefined)(count)) {
                                return this._loadPageCount
                            }
                            this._loadPageCount = count
                        },
                        _handleDataLoading(options) {
                            const loadPageCount = this.loadPageCount();
                            const pageSize = this.pageSize();
                            const newMode = false === this.option(LEGACY_SCROLLING_MODE);
                            const {
                                storeLoadOptions: storeLoadOptions
                            } = options;
                            const takeIsDefined = (0, _type.isDefined)(storeLoadOptions.take);
                            options.loadPageCount = loadPageCount;
                            if (!options.isCustomLoading && newMode && takeIsDefined && loadPageCount > 1 && pageSize > 0) {
                                storeLoadOptions.take = loadPageCount * pageSize
                            }
                            this.callBase.apply(this, arguments)
                        },
                        _loadPageSize() {
                            return this.callBase.apply(this, arguments) * this.loadPageCount()
                        }
                    };
                    ["beginPageIndex", "endPageIndex", "pageIndex"].forEach(name => {
                        result[name] = function() {
                            if (false === this.option(LEGACY_SCROLLING_MODE)) {
                                const dataSource = this._dataSource;
                                return dataSource.pageIndex.apply(dataSource, arguments)
                            }
                            const virtualScrollController = this._virtualScrollController;
                            return virtualScrollController[name].apply(virtualScrollController, arguments)
                        }
                    });
                    ["virtualItemsCount", "getContentOffset", "getVirtualContentSize", "setContentItemSizes", "setViewportPosition", "getViewportItemIndex", "setViewportItemIndex", "getItemIndexByPosition", "viewportSize", "viewportItemSize", "getItemSize", "getItemSizes", "loadIfNeed"].forEach(name => {
                        result[name] = function() {
                            const virtualScrollController = this._virtualScrollController;
                            return virtualScrollController[name].apply(virtualScrollController, arguments)
                        }
                    });
                    return result
                }();
                const VirtualScrollingRowsViewExtender = function() {
                    const removeEmptyRows = function($emptyRows, className) {
                        const tBodies = $emptyRows.toArray().map(row => (0, _renderer.default)(row).parent(".".concat(className)).get(0)).filter(row => row);
                        if (tBodies.length) {
                            $emptyRows = (0, _renderer.default)(tBodies)
                        }
                        const rowCount = "dx-freespace-row" === className ? $emptyRows.length - 1 : $emptyRows.length;
                        for (let i = 0; i < rowCount; i++) {
                            $emptyRows.eq(i).remove()
                        }
                    };
                    return {
                        init() {
                            var _a;
                            const dataController = this.getController("data");
                            this.callBase();
                            dataController.pageChanged.add(pageIndex => {
                                const scrollTop = this._scrollTop;
                                this.scrollToPage(null !== pageIndex && void 0 !== pageIndex ? pageIndex : dataController.pageIndex());
                                if (false === this.option(LEGACY_SCROLLING_MODE) && this._scrollTop === scrollTop) {
                                    dataController.updateViewport()
                                }
                            });
                            dataController.dataSourceChanged.add(() => {
                                !this._scrollTop && this._scrollToCurrentPageOnResize()
                            });
                            null === (_a = dataController.stateLoaded) || void 0 === _a ? void 0 : _a.add(() => {
                                this._scrollToCurrentPageOnResize()
                            });
                            this._scrollToCurrentPageOnResize()
                        },
                        _scrollToCurrentPageOnResize() {
                            const dataController = this.getController("data");
                            if (dataController.pageIndex() > 0) {
                                const resizeHandler = () => {
                                    this.resizeCompleted.remove(resizeHandler);
                                    this.scrollToPage(dataController.pageIndex())
                                };
                                this.resizeCompleted.add(resizeHandler)
                            }
                        },
                        scrollToPage(pageIndex) {
                            const dataController = this._dataController;
                            const pageSize = dataController ? dataController.pageSize() : 0;
                            let scrollPosition;
                            if (isVirtualMode(this) || isAppendMode(this)) {
                                const itemSize = dataController.getItemSize();
                                const itemSizes = dataController.getItemSizes();
                                const itemIndex = pageIndex * pageSize;
                                scrollPosition = itemIndex * itemSize;
                                for (const index in itemSizes) {
                                    if (parseInt(index) < itemIndex) {
                                        scrollPosition += itemSizes[index] - itemSize
                                    }
                                }
                            } else {
                                scrollPosition = 0
                            }
                            this.scrollTo({
                                y: scrollPosition,
                                x: this._scrollLeft
                            })
                        },
                        renderDelayedTemplates() {
                            this.waitAsyncTemplates().done(() => {
                                this._updateContentPosition(true)
                            });
                            this.callBase.apply(this, arguments)
                        },
                        _renderCore(e) {
                            const startRenderTime = new Date;
                            const deferred = this.callBase.apply(this, arguments);
                            const dataSource = this._dataController._dataSource;
                            if (dataSource && e) {
                                const itemCount = e.items ? e.items.length : 20;
                                const viewportSize = this._dataController.viewportSize() || 20;
                                if (_m_utils.default.isVirtualRowRendering(this) && itemCount > 0 && false !== this.option(LEGACY_SCROLLING_MODE)) {
                                    dataSource._renderTime = (new Date - startRenderTime) * viewportSize / itemCount
                                } else {
                                    dataSource._renderTime = new Date - startRenderTime
                                }
                            }
                            return deferred
                        },
                        _getRowElements(tableElement) {
                            const $rows = this.callBase(tableElement);
                            return $rows && $rows.not(".".concat("dx-virtual-row"))
                        },
                        _removeRowsElements(contentTable, removeCount, changeType) {
                            let rowElements = this._getRowElements(contentTable).toArray();
                            if ("append" === changeType) {
                                rowElements = rowElements.slice(0, removeCount)
                            } else {
                                rowElements = rowElements.slice(-removeCount)
                            }
                            const errorHandlingController = this.getController("errorHandling");
                            rowElements.map(rowElement => {
                                const $rowElement = (0, _renderer.default)(rowElement);
                                errorHandlingController && errorHandlingController.removeErrorRow($rowElement.next());
                                $rowElement.remove()
                            })
                        },
                        _updateContent(tableElement, change) {
                            let $freeSpaceRowElements;
                            const contentElement = this._findContentElement();
                            const changeType = change && change.changeType;
                            const d = (0, _deferred.Deferred)();
                            const contentTable = contentElement.children().first();
                            if ("append" === changeType || "prepend" === changeType) {
                                this.waitAsyncTemplates().done(() => {
                                    const $tBodies = this._getBodies(tableElement);
                                    if (1 === $tBodies.length) {
                                        this._getBodies(contentTable)["append" === changeType ? "append" : "prepend"]($tBodies.children())
                                    } else {
                                        $tBodies["append" === changeType ? "appendTo" : "prependTo"](contentTable)
                                    }
                                    tableElement.remove();
                                    $freeSpaceRowElements = this._getFreeSpaceRowElements(contentTable);
                                    removeEmptyRows($freeSpaceRowElements, "dx-freespace-row");
                                    if (change.removeCount) {
                                        this._removeRowsElements(contentTable, change.removeCount, changeType)
                                    }
                                    this._restoreErrorRow(contentTable);
                                    d.resolve()
                                }).fail(d.reject)
                            } else {
                                this.callBase.apply(this, arguments).done(() => {
                                    if ("update" === changeType) {
                                        this._restoreErrorRow(contentTable)
                                    }
                                    d.resolve()
                                }).fail(d.reject)
                            }
                            return d.promise().done(() => {
                                this._updateBottomLoading()
                            })
                        },
                        _addVirtualRow($table, isFixed, location, position) {
                            if (!position) {
                                return
                            }
                            let $virtualRow = this._createEmptyRow("dx-virtual-row", isFixed, position);
                            $virtualRow = this._wrapRowIfNeed($table, $virtualRow);
                            this._appendEmptyRow($table, $virtualRow, location)
                        },
                        _updateContentItemSizes() {
                            const rowHeights = this._getRowHeights();
                            const correctedRowHeights = this._correctRowHeights(rowHeights);
                            this._dataController.setContentItemSizes(correctedRowHeights)
                        },
                        _updateViewportSize(viewportHeight, scrollTop) {
                            if (!(0, _type.isDefined)(viewportHeight)) {
                                viewportHeight = this._hasHeight ? (0, _size.getOuterHeight)(this.element()) : (0, _size.getOuterHeight)((0, _window.getWindow)())
                            }
                            this._dataController.viewportHeight(viewportHeight, scrollTop)
                        },
                        _getRowHeights() {
                            var _a, _b;
                            const isPopupEditMode = null === (_b = null === (_a = this.getController("editing")) || void 0 === _a ? void 0 : _a.isPopupEditMode) || void 0 === _b ? void 0 : _b.call(_a);
                            let rowElements = this._getRowElements(this._tableElement).toArray();
                            if (isPopupEditMode) {
                                rowElements = rowElements.filter(row => !(0, _renderer.default)(row).hasClass("dx-row-inserted"))
                            }
                            return rowElements.map(row => (0, _position.getBoundingRect)(row).height)
                        },
                        _correctRowHeights(rowHeights) {
                            const dataController = this._dataController;
                            const dataSource = dataController._dataSource;
                            const correctedRowHeights = [];
                            const visibleRows = dataController.getVisibleRows();
                            let itemSize = 0;
                            let firstCountableItem = true;
                            let lastLoadIndex = -1;
                            for (let i = 0; i < rowHeights.length; i++) {
                                const currentItem = visibleRows[i];
                                if (!(0, _type.isDefined)(currentItem)) {
                                    continue
                                }
                                if (false === this.option(LEGACY_SCROLLING_MODE)) {
                                    if (lastLoadIndex >= 0 && lastLoadIndex !== currentItem.loadIndex) {
                                        correctedRowHeights.push(itemSize);
                                        itemSize = 0
                                    }
                                    lastLoadIndex = currentItem.loadIndex
                                } else if (isItemCountableByDataSource(currentItem, dataSource)) {
                                    if (firstCountableItem) {
                                        firstCountableItem = false
                                    } else {
                                        correctedRowHeights.push(itemSize);
                                        itemSize = 0
                                    }
                                }
                                itemSize += rowHeights[i]
                            }
                            itemSize > 0 && correctedRowHeights.push(itemSize);
                            return correctedRowHeights
                        },
                        _updateContentPosition(isRender) {
                            const dataController = this._dataController;
                            const rowHeight = this._rowHeight || 20;
                            dataController.viewportItemSize(rowHeight);
                            if (isVirtualMode(this) || _m_utils.default.isVirtualRowRendering(this)) {
                                if (!isRender) {
                                    this._updateContentItemSizes()
                                }
                                const top = dataController.getContentOffset("begin");
                                const bottom = dataController.getContentOffset("end");
                                const $tables = this.getTableElements();
                                const $virtualRows = $tables.children("tbody").children(".".concat("dx-virtual-row"));
                                removeEmptyRows($virtualRows, "dx-virtual-row");
                                $tables.each((index, element) => {
                                    const isFixed = index > 0;
                                    const prevFixed = this._isFixedTableRendering;
                                    this._isFixedTableRendering = isFixed;
                                    this._addVirtualRow((0, _renderer.default)(element), isFixed, "top", top);
                                    this._addVirtualRow((0, _renderer.default)(element), isFixed, "bottom", bottom);
                                    this._isFixedTableRendering = prevFixed
                                })
                            }
                        },
                        _isTableLinesDisplaysCorrect(table) {
                            const hasColumnLines = table.find(".".concat("dx-column-lines")).length > 0;
                            return hasColumnLines === this.option("showColumnLines")
                        },
                        _isColumnElementsEqual($columns, $virtualColumns) {
                            let result = $columns.length === $virtualColumns.length;
                            if (result) {
                                (0, _iterator.each)($columns, (index, element) => {
                                    if (element.style.width !== $virtualColumns[index].style.width) {
                                        result = false;
                                        return result
                                    }
                                    return
                                })
                            }
                            return result
                        },
                        _getCellClasses(column) {
                            const classes = [];
                            const {
                                cssClass: cssClass
                            } = column;
                            const isExpandColumn = "expand" === column.command;
                            cssClass && classes.push(cssClass);
                            isExpandColumn && classes.push(this.addWidgetPrefix("group-space"));
                            return classes
                        },
                        _findBottomLoadPanel($contentElement) {
                            const $element = $contentElement || this.element();
                            const $bottomLoadPanel = $element && $element.find(".".concat(this.addWidgetPrefix("bottom-load-panel")));
                            if ($bottomLoadPanel && $bottomLoadPanel.length) {
                                return $bottomLoadPanel
                            }
                        },
                        _updateBottomLoading() {
                            const that = this;
                            const virtualMode = isVirtualMode(this);
                            const appendMode = isAppendMode(this);
                            const showBottomLoading = !that._dataController.hasKnownLastPage() && that._dataController.isLoaded() && (virtualMode || appendMode);
                            const $contentElement = that._findContentElement();
                            const bottomLoadPanelElement = that._findBottomLoadPanel($contentElement);
                            if (showBottomLoading) {
                                if (!bottomLoadPanelElement) {
                                    (0, _renderer.default)("<div>").addClass(that.addWidgetPrefix("bottom-load-panel")).append(that._createComponent((0, _renderer.default)("<div>"), _load_indicator.default).$element()).appendTo($contentElement)
                                }
                            } else if (bottomLoadPanelElement) {
                                bottomLoadPanelElement.remove()
                            }
                        },
                        _handleScroll(e) {
                            const legacyScrollingMode = true === this.option(LEGACY_SCROLLING_MODE);
                            const zeroTopPosition = 0 === e.scrollOffset.top;
                            const isScrollTopChanged = this._scrollTop !== e.scrollOffset.top;
                            const hasScrolled = isScrollTopChanged || e.forceUpdateScrollPosition;
                            const isValidScrollTarget = this._hasHeight || !legacyScrollingMode && zeroTopPosition;
                            if (hasScrolled && isValidScrollTarget && this._rowHeight) {
                                this._scrollTop = e.scrollOffset.top;
                                const isVirtualRowRendering = isVirtualMode(this) || "standard" !== this.option("scrolling.rowRenderingMode");
                                if (isVirtualRowRendering && false === this.option(LEGACY_SCROLLING_MODE)) {
                                    this._updateContentItemSizes();
                                    this._updateViewportSize(null, this._scrollTop)
                                }
                                this._dataController.setViewportPosition(e.scrollOffset.top)
                            }
                            this.callBase.apply(this, arguments)
                        },
                        _needUpdateRowHeight(itemsCount) {
                            return this.callBase.apply(this, arguments) || itemsCount > 0 && isAppendMode(this) && !_m_utils.default.isVirtualRowRendering(this)
                        },
                        _updateRowHeight() {
                            this.callBase.apply(this, arguments);
                            if (this._rowHeight) {
                                this._updateContentPosition();
                                const viewportHeight = this._hasHeight ? (0, _size.getOuterHeight)(this.element()) : (0, _size.getOuterHeight)((0, _window.getWindow)());
                                const dataController = this._dataController;
                                if (false === this.option(LEGACY_SCROLLING_MODE)) {
                                    this._updateViewportSize(viewportHeight);
                                    dataController.updateViewport()
                                } else {
                                    dataController.viewportSize(Math.ceil(viewportHeight / this._rowHeight))
                                }
                            }
                        },
                        updateFreeSpaceRowHeight() {
                            const result = this.callBase.apply(this, arguments);
                            if (result) {
                                this._updateContentPosition()
                            }
                            return result
                        },
                        setLoading(isLoading, messageText) {
                            const dataController = this._dataController;
                            const hasBottomLoadPanel = dataController.pageIndex() > 0 && dataController.isLoaded() && !!this._findBottomLoadPanel();
                            if (false === this.option(LEGACY_SCROLLING_MODE) && isLoading && dataController.isViewportChanging()) {
                                return
                            }
                            if (hasBottomLoadPanel) {
                                isLoading = false
                            }
                            this.callBase.call(this, isLoading, messageText)
                        },
                        throwHeightWarningIfNeed() {
                            if (void 0 === this._hasHeight) {
                                return
                            }
                            const needToThrow = !this._hasHeight && isVirtualPaging(this);
                            if (needToThrow && !this._heightWarningIsThrown) {
                                this._heightWarningIsThrown = true;
                                _ui.default.log("W1025")
                            }
                        },
                        _resizeCore() {
                            const that = this;
                            const $element = that.element();
                            that.callBase();
                            this.throwHeightWarningIfNeed();
                            if (that.component.$element() && !that._windowScroll && (0, _dom.isElementInDom)($element)) {
                                that._windowScroll = (0, _m_virtual_scrolling_core.subscribeToExternalScrollers)($element, scrollPos => {
                                    if (!that._hasHeight && that._rowHeight) {
                                        that._dataController.setViewportPosition(scrollPos)
                                    }
                                }, that.component.$element());
                                that.on("disposing", () => {
                                    that._windowScroll.dispose()
                                })
                            }
                            if (false !== this.option(LEGACY_SCROLLING_MODE)) {
                                that.loadIfNeed()
                            }
                        },
                        loadIfNeed() {
                            var _a;
                            const dataController = this._dataController;
                            null === (_a = null === dataController || void 0 === dataController ? void 0 : dataController.loadIfNeed) || void 0 === _a ? void 0 : _a.call(dataController)
                        },
                        _restoreErrorRow() {
                            if (false === this.option(LEGACY_SCROLLING_MODE)) {
                                const errorHandling = this.getController("errorHandling");
                                null === errorHandling || void 0 === errorHandling ? void 0 : errorHandling.removeErrorRow()
                            }
                            this.callBase.apply(this, arguments)
                        },
                        dispose() {
                            clearTimeout(this._scrollTimeoutID);
                            this.callBase()
                        }
                    }
                }();
                const virtualScrollingModule = {
                    defaultOptions: () => ({
                        scrolling: {
                            timeout: 300,
                            updateTimeout: 300,
                            minTimeout: 0,
                            renderingThreshold: 100,
                            removeInvisiblePages: true,
                            rowPageSize: 5,
                            prerenderedRowChunkSize: 1,
                            mode: "standard",
                            preloadEnabled: false,
                            rowRenderingMode: "standard",
                            loadTwoPagesOnStart: false,
                            legacyMode: false,
                            prerenderedRowCount: 1
                        }
                    }),
                    extenders: {
                        dataSourceAdapter: VirtualScrollingDataSourceAdapterExtender,
                        controllers: {
                            data: function() {
                                const members = {
                                    _refreshDataSource() {
                                        const baseResult = this.callBase.apply(this, arguments) || (new _deferred.Deferred).resolve().promise();
                                        baseResult.done(this.initVirtualRows.bind(this));
                                        return baseResult
                                    },
                                    _loadDataSource() {
                                        var _a;
                                        if (this._rowsScrollController && isVirtualPaging(this)) {
                                            const {
                                                loadPageCount: loadPageCount
                                            } = (0, _type.isDefined)(this._loadViewportParams) ? this.getLoadPageParams(): {
                                                loadPageCount: void 0
                                            };
                                            loadPageCount >= 1 && (null === (_a = this._dataSource) || void 0 === _a ? void 0 : _a.loadPageCount(loadPageCount))
                                        }
                                        return this.callBase.apply(this, arguments)
                                    },
                                    getRowPageSize() {
                                        const rowPageSize = this.option("scrolling.rowPageSize");
                                        const pageSize = this.pageSize();
                                        return pageSize && pageSize < rowPageSize ? pageSize : rowPageSize
                                    },
                                    reload() {
                                        const rowsScrollController = this._rowsScrollController || this._dataSource;
                                        const itemIndex = rowsScrollController && rowsScrollController.getItemIndexByPosition();
                                        const result = this.callBase.apply(this, arguments);
                                        return result && result.done(() => {
                                            var _a;
                                            if (isVirtualMode(this) || _m_utils.default.isVirtualRowRendering(this)) {
                                                const rowIndexOffset = this.getRowIndexOffset();
                                                const rowIndex = Math.floor(itemIndex) - rowIndexOffset;
                                                const {
                                                    component: component
                                                } = this;
                                                const scrollable = component.getScrollable && component.getScrollable();
                                                const isSortingOperation = this.dataSource().operationTypes().sorting;
                                                if (scrollable && !isSortingOperation && rowIndex >= 0) {
                                                    const rowElement = component.getRowElement(rowIndex);
                                                    const $rowElement = rowElement && rowElement[0] && (0, _renderer.default)(rowElement[0]);
                                                    let top = $rowElement && $rowElement.position().top;
                                                    const isChromeLatest = _browser.default.chrome && Number(null !== (_a = _browser.default.version) && void 0 !== _a ? _a : 0) >= 91;
                                                    const allowedTopOffset = _browser.default.mozilla || isChromeLatest ? 1 : 0;
                                                    if (top > allowedTopOffset) {
                                                        top = Math.round(top + (0, _size.getOuterHeight)($rowElement) * (itemIndex % 1));
                                                        scrollable.scrollTo({
                                                            y: top
                                                        })
                                                    }
                                                }
                                            }
                                        })
                                    },
                                    initVirtualRows() {
                                        const virtualRowsRendering = _m_utils.default.isVirtualRowRendering(this);
                                        this._allItems = null;
                                        this._loadViewportParams = null;
                                        if ("virtual" !== this.option("scrolling.mode") && !virtualRowsRendering || !virtualRowsRendering || false !== this.option(LEGACY_SCROLLING_MODE) && !this.option("scrolling.rowPageSize")) {
                                            this._visibleItems = null;
                                            this._rowsScrollController = null;
                                            return
                                        }
                                        const pageIndex = !isVirtualMode(this) && this.pageIndex() >= this.pageCount() ? this.pageCount() - 1 : this.pageIndex();
                                        this._rowPageIndex = Math.ceil(pageIndex * this.pageSize() / this.getRowPageSize());
                                        this._visibleItems = false === this.option(LEGACY_SCROLLING_MODE) ? null : [];
                                        this._viewportChanging = false;
                                        this._needUpdateViewportAfterLoading = false;
                                        if (!this._rowsScrollController) {
                                            this._rowsScrollController = new _m_virtual_scrolling_core.VirtualScrollController(this.component, this._getRowsScrollDataOptions(), true);
                                            this._rowsScrollController.positionChanged.add(() => {
                                                var _a;
                                                if (false === this.option(LEGACY_SCROLLING_MODE)) {
                                                    this._viewportChanging = true;
                                                    this.loadViewport();
                                                    this._viewportChanging = false;
                                                    return
                                                }
                                                null === (_a = this._dataSource) || void 0 === _a ? void 0 : _a.setViewportItemIndex(this._rowsScrollController.getViewportItemIndex())
                                            })
                                        }
                                        if (false === this.option(LEGACY_SCROLLING_MODE)) {
                                            this._updateLoadViewportParams()
                                        }
                                        if (this.isLoaded() && false !== this.option(LEGACY_SCROLLING_MODE)) {
                                            this._rowsScrollController.load()
                                        }
                                    },
                                    isViewportChanging() {
                                        return this._viewportChanging
                                    },
                                    _getRowsScrollDataOptions() {
                                        const that = this;
                                        const isItemCountable = function(item) {
                                            return isItemCountableByDataSource(item, that._dataSource)
                                        };
                                        return {
                                            pageSize: () => that.getRowPageSize(),
                                            loadedOffset() {
                                                var _a;
                                                return isVirtualMode(that) && (null === (_a = that._dataSource) || void 0 === _a ? void 0 : _a.lastLoadOptions().skip) || 0
                                            },
                                            loadedItemCount: () => that._itemCount,
                                            totalItemsCount() {
                                                if (isVirtualPaging(that)) {
                                                    return that.totalItemsCount()
                                                }
                                                return false === that.option(LEGACY_SCROLLING_MODE) ? that._itemCount : that._items.filter(isItemCountable).length
                                            },
                                            hasKnownLastPage: () => false === that.option(LEGACY_SCROLLING_MODE) ? that.hasKnownLastPage() : true,
                                            pageIndex(index) {
                                                if (void 0 !== index) {
                                                    that._rowPageIndex = index
                                                }
                                                return that._rowPageIndex
                                            },
                                            isLoading: () => that.isLoading(),
                                            pageCount() {
                                                const pageCount = Math.ceil(this.totalItemsCount() / this.pageSize());
                                                return pageCount || 1
                                            },
                                            load() {
                                                if (that._rowsScrollController.pageIndex() >= this.pageCount()) {
                                                    that._rowPageIndex = this.pageCount() - 1;
                                                    that._rowsScrollController.pageIndex(that._rowPageIndex)
                                                }
                                                if (!this.items().length && this.totalItemsCount()) {
                                                    return
                                                }
                                                that._rowsScrollController.handleDataChanged(change => {
                                                    change = change || {};
                                                    change.changeType = change.changeType || "refresh";
                                                    change.items = change.items || that._visibleItems;
                                                    that._visibleItems.forEach((item, index) => {
                                                        item.rowIndex = index
                                                    });
                                                    that._fireChanged(change)
                                                })
                                            },
                                            updateLoading() {},
                                            itemsCount() {
                                                return this.items(true).length
                                            },
                                            correctCount: (items, count, fromEnd) => correctCount(items, count, fromEnd, (item, isNextAfterLast, fromEnd) => {
                                                if (item.isNewRow) {
                                                    return isNextAfterLast && !fromEnd
                                                }
                                                if (isNextAfterLast && fromEnd) {
                                                    return !item.isNewRow
                                                }
                                                return isItemCountable(item)
                                            }),
                                            items(countableOnly) {
                                                let result = that._items;
                                                if (that.option(LEGACY_SCROLLING_MODE)) {
                                                    const dataSource = that.dataSource();
                                                    const virtualItemsCount = null === dataSource || void 0 === dataSource ? void 0 : dataSource.virtualItemsCount();
                                                    const begin = virtualItemsCount ? virtualItemsCount.begin : 0;
                                                    const rowPageSize = that.getRowPageSize();
                                                    let skip = that._rowPageIndex * rowPageSize - begin;
                                                    let take = rowPageSize;
                                                    if (skip < 0) {
                                                        return []
                                                    }
                                                    if (skip) {
                                                        skip = this.correctCount(result, skip);
                                                        result = result.slice(skip)
                                                    }
                                                    if (take) {
                                                        take = this.correctCount(result, take);
                                                        result = result.slice(0, take)
                                                    }
                                                }
                                                return countableOnly ? result.filter(isItemCountable) : result
                                            },
                                            viewportItems(items) {
                                                if (items && false !== that.option(LEGACY_SCROLLING_MODE)) {
                                                    that._visibleItems = items
                                                }
                                                return that._visibleItems
                                            },
                                            onChanged() {},
                                            changingDuration() {
                                                const dataSource = that.dataSource();
                                                if ((null === dataSource || void 0 === dataSource ? void 0 : dataSource.isLoading()) && false !== that.option(LEGACY_SCROLLING_MODE)) {
                                                    return 300
                                                }
                                                return (null === dataSource || void 0 === dataSource ? void 0 : dataSource._renderTime) || 0
                                            }
                                        }
                                    },
                                    _updateItemsCore(change) {
                                        const delta = this.getRowIndexDelta();
                                        this.callBase.apply(this, arguments);
                                        if (false === this.option(LEGACY_SCROLLING_MODE) && _m_utils.default.isVirtualRowRendering(this)) {
                                            if ("update" === change.changeType && 0 === change.rowIndices.length && change.cancelEmptyChanges) {
                                                change.cancel = true
                                            }
                                            return
                                        }
                                        const rowsScrollController = this._rowsScrollController;
                                        if (rowsScrollController) {
                                            const visibleItems = this._visibleItems;
                                            const isRefresh = "refresh" === change.changeType || change.isLiveUpdate;
                                            if ("append" === change.changeType && change.items && !change.items.length) {
                                                return
                                            }
                                            if (isRefresh || "append" === change.changeType || "prepend" === change.changeType) {
                                                change.cancel = true;
                                                isRefresh && rowsScrollController.reset(true);
                                                rowsScrollController.load()
                                            } else {
                                                if ("update" === change.changeType) {
                                                    change.rowIndices.forEach((rowIndex, index) => {
                                                        const changeType = change.changeTypes[index];
                                                        const newItem = change.items[index];
                                                        if ("update" === changeType) {
                                                            visibleItems[rowIndex] = newItem
                                                        } else if ("insert" === changeType) {
                                                            visibleItems.splice(rowIndex, 0, newItem)
                                                        } else if ("remove" === changeType) {
                                                            visibleItems.splice(rowIndex, 1)
                                                        }
                                                    })
                                                } else {
                                                    visibleItems.forEach((item, index) => {
                                                        visibleItems[index] = this._items[index + delta] || visibleItems[index]
                                                    });
                                                    change.items = visibleItems
                                                }! function(items) {
                                                    items.forEach((item, index) => {
                                                        item.rowIndex = index
                                                    });
                                                    return items
                                                }(visibleItems)
                                            }
                                        }
                                    },
                                    _updateLoadViewportParams() {
                                        const viewportParams = this._rowsScrollController.getViewportParams();
                                        const pageSize = this.pageSize();
                                        if (viewportParams && !isVirtualPaging(this) && pageSize > 0) {
                                            const pageOffset = this.pageIndex() * pageSize;
                                            viewportParams.skip += pageOffset
                                        }
                                        this._loadViewportParams = viewportParams
                                    },
                                    _processItems() {
                                        var _a;
                                        const resultItems = this.callBase.apply(this, arguments);
                                        if (false === this.option(LEGACY_SCROLLING_MODE)) {
                                            const dataSource = this._dataSource;
                                            let currentIndex = null !== (_a = null === dataSource || void 0 === dataSource ? void 0 : dataSource.lastLoadOptions().skip) && void 0 !== _a ? _a : 0;
                                            let prevCountable;
                                            let prevRowType;
                                            let isPrevRowNew;
                                            let wasCountableItem = false;
                                            let newRows = [];
                                            resultItems.forEach(item => {
                                                const {
                                                    rowType: rowType
                                                } = item;
                                                const itemCountable = isItemCountableByDataSource(item, dataSource);
                                                const isNextGroupItem = "group" === rowType && (prevCountable || itemCountable || "group" !== prevRowType && currentIndex > 0);
                                                const isNextDataItem = "data" === rowType && itemCountable && (prevCountable || "group" !== prevRowType);
                                                if (!item.isNewRow && (0, _type.isDefined)(prevCountable)) {
                                                    const isPrevNewRowFirst = isPrevRowNew && !wasCountableItem;
                                                    if ((isNextGroupItem || isNextDataItem) && !isPrevNewRowFirst) {
                                                        currentIndex++
                                                    }
                                                }
                                                if (isNextGroupItem || isNextDataItem) {
                                                    wasCountableItem = true
                                                }
                                                if (item.isNewRow) {
                                                    newRows.push(item)
                                                } else {
                                                    newRows.forEach(it => {
                                                        it.loadIndex = currentIndex
                                                    });
                                                    newRows = []
                                                }
                                                item.loadIndex = currentIndex;
                                                prevCountable = itemCountable;
                                                prevRowType = rowType;
                                                isPrevRowNew = item.isNewRow
                                            });
                                            newRows.forEach(it => {
                                                it.loadIndex = currentIndex
                                            })
                                        }
                                        return resultItems
                                    },
                                    _afterProcessItems(items) {
                                        this._itemCount = items.filter(item => isItemCountableByDataSource(item, this._dataSource)).length;
                                        if ((0, _type.isDefined)(this._loadViewportParams)) {
                                            this._updateLoadViewportParams();
                                            let result = items;
                                            this._allItems = items;
                                            if (items.length) {
                                                const {
                                                    skipForCurrentPage: skipForCurrentPage
                                                } = this.getLoadPageParams(true);
                                                const skip = items[0].loadIndex + skipForCurrentPage;
                                                const {
                                                    take: take
                                                } = this._loadViewportParams;
                                                result = items.filter(it => {
                                                    const isNewRowInEmptyData = it.isNewRow && it.loadIndex === skip && 0 === take;
                                                    const isLoadIndexGreaterStart = it.loadIndex >= skip;
                                                    const isLoadIndexLessEnd = it.loadIndex < skip + take || isNewRowInEmptyData;
                                                    return isLoadIndexGreaterStart && isLoadIndexLessEnd
                                                })
                                            }
                                            return result
                                        }
                                        return this.callBase.apply(this, arguments)
                                    },
                                    _applyChange(change) {
                                        const that = this;
                                        const {
                                            items: items
                                        } = change;
                                        const {
                                            changeType: changeType
                                        } = change;
                                        let {
                                            removeCount: removeCount
                                        } = change;
                                        if (removeCount) {
                                            const fromEnd = "prepend" === changeType;
                                            removeCount = correctCount(that._items, removeCount, fromEnd, (item, isNextAfterLast) => "data" === item.rowType && !item.isNewRow || "group" === item.rowType && (that._dataSource.isGroupItemCountable(item.data) || isNextAfterLast));
                                            change.removeCount = removeCount
                                        }
                                        switch (changeType) {
                                            case "prepend":
                                                that._items.unshift.apply(that._items, items);
                                                if (removeCount) {
                                                    that._items.splice(-removeCount)
                                                }
                                                break;
                                            case "append":
                                                that._items.push.apply(that._items, items);
                                                if (removeCount) {
                                                    that._items.splice(0, removeCount)
                                                }
                                                break;
                                            default:
                                                that.callBase(change)
                                        }
                                    },
                                    items(allItems) {
                                        return allItems ? this._allItems || this._items : this._visibleItems || this._items
                                    },
                                    getRowIndexDelta() {
                                        let delta = 0;
                                        if (this.option(LEGACY_SCROLLING_MODE)) {
                                            const visibleItems = this._visibleItems;
                                            if (visibleItems && visibleItems[0]) {
                                                delta = this._items.indexOf(visibleItems[0])
                                            }
                                        }
                                        return delta < 0 ? 0 : delta
                                    },
                                    getRowIndexOffset(byLoadedRows, needGroupOffset) {
                                        var _a, _b;
                                        let offset = 0;
                                        const dataSource = this.dataSource();
                                        const rowsScrollController = this._rowsScrollController;
                                        const newMode = false === this.option(LEGACY_SCROLLING_MODE);
                                        const virtualPaging = isVirtualPaging(this);
                                        if (rowsScrollController && !byLoadedRows) {
                                            if (newMode && (0, _type.isDefined)(this._loadViewportParams)) {
                                                const {
                                                    skipForCurrentPage: skipForCurrentPage,
                                                    pageIndex: pageIndex
                                                } = this.getLoadPageParams(true);
                                                const items = this.items(true);
                                                offset = virtualPaging ? pageIndex * this.pageSize() : 0;
                                                if (items.length) {
                                                    const firstLoadIndex = items[0].loadIndex;
                                                    offset += items.filter(item => item.loadIndex < firstLoadIndex + skipForCurrentPage).length
                                                }
                                            } else {
                                                offset = rowsScrollController.beginPageIndex() * rowsScrollController.pageSize()
                                            }
                                        } else if (virtualPaging && newMode && dataSource) {
                                            const lastLoadOptions = dataSource.lastLoadOptions();
                                            if (needGroupOffset && (null === (_a = lastLoadOptions.skips) || void 0 === _a ? void 0 : _a.length)) {
                                                offset = lastLoadOptions.skips.reduce((res, skip) => res + skip, 0)
                                            } else {
                                                offset = null !== (_b = lastLoadOptions.skip) && void 0 !== _b ? _b : 0
                                            }
                                        } else if (isVirtualMode(this) && dataSource) {
                                            offset = dataSource.beginPageIndex() * dataSource.pageSize()
                                        }
                                        return offset
                                    },
                                    getDataIndex() {
                                        if (false === this.option(LEGACY_SCROLLING_MODE)) {
                                            return this.getRowIndexOffset(true, true)
                                        }
                                        return this.callBase.apply(this, arguments)
                                    },
                                    viewportSize() {
                                        const rowsScrollController = this._rowsScrollController;
                                        const dataSource = this._dataSource;
                                        const result = null === rowsScrollController || void 0 === rowsScrollController ? void 0 : rowsScrollController.viewportSize.apply(rowsScrollController, arguments);
                                        if (false === this.option(LEGACY_SCROLLING_MODE)) {
                                            return result
                                        }
                                        return null === dataSource || void 0 === dataSource ? void 0 : dataSource.viewportSize.apply(dataSource, arguments)
                                    },
                                    viewportHeight(height, scrollTop) {
                                        var _a;
                                        null === (_a = this._rowsScrollController) || void 0 === _a ? void 0 : _a.viewportHeight(height, scrollTop)
                                    },
                                    viewportItemSize() {
                                        const rowsScrollController = this._rowsScrollController;
                                        const dataSource = this._dataSource;
                                        const result = null === rowsScrollController || void 0 === rowsScrollController ? void 0 : rowsScrollController.viewportItemSize.apply(rowsScrollController, arguments);
                                        if (false === this.option(LEGACY_SCROLLING_MODE)) {
                                            return result
                                        }
                                        return null === dataSource || void 0 === dataSource ? void 0 : dataSource.viewportItemSize.apply(dataSource, arguments)
                                    },
                                    setViewportPosition() {
                                        const rowsScrollController = this._rowsScrollController;
                                        const dataSource = this._dataSource;
                                        this._isPaging = false;
                                        if (rowsScrollController) {
                                            rowsScrollController.setViewportPosition.apply(rowsScrollController, arguments)
                                        } else {
                                            null === dataSource || void 0 === dataSource ? void 0 : dataSource.setViewportPosition.apply(dataSource, arguments)
                                        }
                                    },
                                    setContentItemSizes(sizes) {
                                        const rowsScrollController = this._rowsScrollController;
                                        const dataSource = this._dataSource;
                                        const result = null === rowsScrollController || void 0 === rowsScrollController ? void 0 : rowsScrollController.setContentItemSizes(sizes);
                                        if (false === this.option(LEGACY_SCROLLING_MODE)) {
                                            return result
                                        }
                                        return null === dataSource || void 0 === dataSource ? void 0 : dataSource.setContentItemSizes(sizes)
                                    },
                                    getPreloadedRowCount() {
                                        const preloadCount = this.option("scrolling.preloadedRowCount");
                                        const preloadEnabled = this.option("scrolling.preloadEnabled");
                                        if ((0, _type.isDefined)(preloadCount)) {
                                            return preloadCount
                                        }
                                        const viewportSize = this.viewportSize();
                                        return preloadEnabled ? 2 * viewportSize : viewportSize
                                    },
                                    getLoadPageParams(byLoadedPage) {
                                        var _a, _b;
                                        const pageSize = this.pageSize();
                                        const viewportParams = this._loadViewportParams;
                                        const lastLoadOptions = null === (_a = this._dataSource) || void 0 === _a ? void 0 : _a.lastLoadOptions();
                                        const loadedPageIndex = (null === lastLoadOptions || void 0 === lastLoadOptions ? void 0 : lastLoadOptions.pageIndex) || 0;
                                        const loadedTake = (null === lastLoadOptions || void 0 === lastLoadOptions ? void 0 : lastLoadOptions.take) || 0;
                                        const isScrollingBack = this._rowsScrollController.isScrollingBack();
                                        const topPreloadCount = isScrollingBack ? this.getPreloadedRowCount() : 0;
                                        const bottomPreloadCount = isScrollingBack ? 0 : this.getPreloadedRowCount();
                                        const totalCountCorrection = (null === (_b = this._dataSource) || void 0 === _b ? void 0 : _b.totalCountCorrection()) || 0;
                                        const skipWithPreload = Math.max(0, viewportParams.skip - topPreloadCount);
                                        const pageIndex = byLoadedPage ? loadedPageIndex : Math.floor(pageSize ? skipWithPreload / pageSize : 0);
                                        const pageOffset = pageIndex * pageSize;
                                        const skipForCurrentPage = viewportParams.skip - pageOffset;
                                        const loadingTake = viewportParams.take + skipForCurrentPage + bottomPreloadCount - totalCountCorrection;
                                        const take = byLoadedPage ? loadedTake : loadingTake;
                                        const loadPageCount = Math.ceil(pageSize ? take / pageSize : 0);
                                        return {
                                            pageIndex: pageIndex,
                                            loadPageCount: Math.max(1, loadPageCount),
                                            skipForCurrentPage: Math.max(0, skipForCurrentPage)
                                        }
                                    },
                                    _updateVisiblePageIndex(currentPageIndex) {
                                        if (!this._rowsScrollController) {
                                            return
                                        }
                                        if ((0, _type.isDefined)(currentPageIndex)) {
                                            this._silentOption("paging.pageIndex", currentPageIndex);
                                            this.pageChanged.fire();
                                            return
                                        }
                                        const viewPortItemIndex = this._rowsScrollController.getViewportItemIndex();
                                        const newPageIndex = Math.floor(viewPortItemIndex / this.pageSize());
                                        if (this.pageIndex() !== newPageIndex) {
                                            this._silentOption("paging.pageIndex", newPageIndex);
                                            this.updateItems({
                                                changeType: "pageIndex"
                                            })
                                        }
                                    },
                                    _getChangedLoadParams() {
                                        const loadedPageParams = this.getLoadPageParams(true);
                                        const {
                                            pageIndex: pageIndex,
                                            loadPageCount: loadPageCount
                                        } = this.getLoadPageParams();
                                        const pageIndexIsValid = this._pageIndexIsValid(pageIndex);
                                        let result = null;
                                        if (!this._isLoading && pageIndexIsValid && (pageIndex !== loadedPageParams.pageIndex || loadPageCount !== loadedPageParams.loadPageCount)) {
                                            result = {
                                                pageIndex: pageIndex,
                                                loadPageCount: loadPageCount
                                            }
                                        }
                                        return result
                                    },
                                    _pageIndexIsValid(pageIndex) {
                                        let result = true;
                                        if (isAppendMode(this) && this.hasKnownLastPage() || isVirtualMode(this)) {
                                            result = pageIndex * this.pageSize() < this.totalItemsCount()
                                        }
                                        return result
                                    },
                                    _loadItems(checkLoading, viewportIsFilled) {
                                        var _a, _b;
                                        const virtualPaging = isVirtualPaging(this);
                                        const dataSourceAdapter = this._dataSource;
                                        const changedParams = this._getChangedLoadParams();
                                        const currentLoadPageCount = null !== (_a = null === dataSourceAdapter || void 0 === dataSourceAdapter ? void 0 : dataSourceAdapter.loadPageCount()) && void 0 !== _a ? _a : 0;
                                        const lastRequiredItemCount = this.pageSize() * currentLoadPageCount;
                                        const currentPageIndex = null !== (_b = null === dataSourceAdapter || void 0 === dataSourceAdapter ? void 0 : dataSourceAdapter.pageIndex()) && void 0 !== _b ? _b : 0;
                                        const pageIndexNotChanged = (null === changedParams || void 0 === changedParams ? void 0 : changedParams.pageIndex) === currentPageIndex;
                                        const allLoadedInAppendMode = isAppendMode(this) && this.totalItemsCount() < lastRequiredItemCount;
                                        const isRepaintMode = "repaint" === this.option("editing.refreshMode");
                                        const pageIndexIncreased = (null === changedParams || void 0 === changedParams ? void 0 : changedParams.pageIndex) > currentPageIndex;
                                        let result = false;
                                        if (!dataSourceAdapter || virtualPaging && checkLoading && (isRepaintMode && viewportIsFilled || pageIndexIncreased || pageIndexNotChanged && allLoadedInAppendMode)) {
                                            return result
                                        }
                                        if (virtualPaging && this._isLoading) {
                                            this._needUpdateViewportAfterLoading = true
                                        }
                                        if (virtualPaging && changedParams) {
                                            result = true;
                                            dataSourceAdapter.pageIndex(changedParams.pageIndex);
                                            dataSourceAdapter.loadPageCount(changedParams.loadPageCount);
                                            this._repaintChangesOnly = true;
                                            this._needUpdateDimensions = true;
                                            const viewportChanging = this._viewportChanging;
                                            this.load().always(() => {
                                                this._repaintChangesOnly = void 0;
                                                this._needUpdateDimensions = void 0
                                            }).done(() => {
                                                const isLastPage = this.pageCount() > 0 && this.pageIndex() === this.pageCount() - 1;
                                                (viewportChanging || isLastPage) && this._updateVisiblePageIndex();
                                                if (this._needUpdateViewportAfterLoading) {
                                                    this._needUpdateViewportAfterLoading = false;
                                                    this.loadViewport({
                                                        checkLoadedParamsOnly: true
                                                    })
                                                }
                                            })
                                        }
                                        return result
                                    },
                                    loadViewport(params) {
                                        var _a, _b, _c;
                                        const {
                                            checkLoadedParamsOnly: checkLoadedParamsOnly,
                                            checkLoading: checkLoading,
                                            viewportIsNotFilled: viewportIsNotFilled
                                        } = null !== params && void 0 !== params ? params : {};
                                        const virtualPaging = isVirtualPaging(this);
                                        if (virtualPaging || _m_utils.default.isVirtualRowRendering(this)) {
                                            this._updateLoadViewportParams();
                                            const loadingItemsStarted = this._loadItems(checkLoading, !viewportIsNotFilled);
                                            const isCustomLoading = null === (_a = this._dataSource) || void 0 === _a ? void 0 : _a.isCustomLoading();
                                            const isLoading = checkLoading && !isCustomLoading && this._isLoading;
                                            const needToUpdateItems = !(loadingItemsStarted || isLoading || checkLoadedParamsOnly);
                                            if (needToUpdateItems) {
                                                const noPendingChangesInEditing = !(null === (_c = null === (_b = this.getController("editing")) || void 0 === _b ? void 0 : _b.getChanges()) || void 0 === _c ? void 0 : _c.length);
                                                this.updateItems({
                                                    repaintChangesOnly: true,
                                                    needUpdateDimensions: true,
                                                    useProcessedItemsCache: noPendingChangesInEditing,
                                                    cancelEmptyChanges: true
                                                })
                                            }
                                        }
                                    },
                                    updateViewport() {
                                        var _a, _b;
                                        const viewportSize = this.viewportSize();
                                        const itemCount = this.items().length;
                                        const viewportIsNotFilled = viewportSize > itemCount;
                                        const currentTake = null !== (_b = null === (_a = this._loadViewportParams) || void 0 === _a ? void 0 : _a.take) && void 0 !== _b ? _b : 0;
                                        const rowsScrollController = this._rowsScrollController;
                                        const newTake = null === rowsScrollController || void 0 === rowsScrollController ? void 0 : rowsScrollController.getViewportParams().take;
                                        (viewportIsNotFilled || currentTake < newTake) && !this._isPaging && itemCount && this.loadViewport({
                                            checkLoading: true,
                                            viewportIsNotFilled: viewportIsNotFilled
                                        })
                                    },
                                    loadIfNeed() {
                                        if (false === this.option(LEGACY_SCROLLING_MODE)) {
                                            return
                                        }
                                        const rowsScrollController = this._rowsScrollController;
                                        rowsScrollController && rowsScrollController.loadIfNeed();
                                        const dataSource = this._dataSource;
                                        return dataSource && dataSource.loadIfNeed()
                                    },
                                    getItemSize() {
                                        const rowsScrollController = this._rowsScrollController;
                                        if (rowsScrollController) {
                                            return rowsScrollController.getItemSize.apply(rowsScrollController, arguments)
                                        }
                                        const dataSource = this._dataSource;
                                        return dataSource && dataSource.getItemSize.apply(dataSource, arguments)
                                    },
                                    getItemSizes() {
                                        const rowsScrollController = this._rowsScrollController;
                                        if (rowsScrollController) {
                                            return rowsScrollController.getItemSizes.apply(rowsScrollController, arguments)
                                        }
                                        const dataSource = this._dataSource;
                                        return dataSource && dataSource.getItemSizes.apply(dataSource, arguments)
                                    },
                                    getContentOffset() {
                                        const rowsScrollController = this._rowsScrollController;
                                        if (rowsScrollController) {
                                            return rowsScrollController.getContentOffset.apply(rowsScrollController, arguments)
                                        }
                                        const dataSource = this._dataSource;
                                        return dataSource && dataSource.getContentOffset.apply(dataSource, arguments)
                                    },
                                    refresh(options) {
                                        const dataSource = this._dataSource;
                                        if (dataSource && options && options.load && isAppendMode(this)) {
                                            dataSource.resetCurrentTotalCount()
                                        }
                                        return this.callBase.apply(this, arguments)
                                    },
                                    dispose() {
                                        const rowsScrollController = this._rowsScrollController;
                                        rowsScrollController && rowsScrollController.dispose();
                                        this.callBase.apply(this, arguments)
                                    },
                                    topItemIndex() {
                                        var _a;
                                        return null === (_a = this._loadViewportParams) || void 0 === _a ? void 0 : _a.skip
                                    },
                                    bottomItemIndex() {
                                        const viewportParams = this._loadViewportParams;
                                        return viewportParams && viewportParams.skip + viewportParams.take
                                    },
                                    virtualItemsCount() {
                                        const rowsScrollController = this._rowsScrollController;
                                        if (rowsScrollController) {
                                            return rowsScrollController.virtualItemsCount.apply(rowsScrollController, arguments)
                                        }
                                        const dataSource = this._dataSource;
                                        return null === dataSource || void 0 === dataSource ? void 0 : dataSource.virtualItemsCount.apply(dataSource, arguments)
                                    },
                                    pageIndex(pageIndex) {
                                        var _a;
                                        const virtualPaging = isVirtualPaging(this);
                                        const rowsScrollController = this._rowsScrollController;
                                        if (false === this.option(LEGACY_SCROLLING_MODE) && virtualPaging && rowsScrollController) {
                                            if (void 0 === pageIndex) {
                                                return null !== (_a = this.option("paging.pageIndex")) && void 0 !== _a ? _a : 0
                                            }
                                        }
                                        return this.callBase.apply(this, arguments)
                                    },
                                    _fireChanged(e) {
                                        this.callBase.apply(this, arguments);
                                        const {
                                            operationTypes: operationTypes
                                        } = e;
                                        if (false === this.option(LEGACY_SCROLLING_MODE) && isVirtualPaging(this) && operationTypes) {
                                            const {
                                                fullReload: fullReload,
                                                pageIndex: pageIndex
                                            } = operationTypes;
                                            if (e.isDataChanged && !fullReload && pageIndex) {
                                                this._updateVisiblePageIndex(this._dataSource.pageIndex())
                                            }
                                        }
                                    },
                                    _getPagingOptionValue(optionName) {
                                        let result = this.callBase.apply(this, arguments);
                                        if (false === this.option(LEGACY_SCROLLING_MODE) && isVirtualPaging(this)) {
                                            result = this[optionName]()
                                        }
                                        return result
                                    },
                                    isEmpty() {
                                        return false === this.option(LEGACY_SCROLLING_MODE) ? !this.items(true).length : this.callBase(this, arguments)
                                    },
                                    isLastPageLoaded() {
                                        let result = false;
                                        if (false === this.option(LEGACY_SCROLLING_MODE) && isVirtualPaging(this)) {
                                            const {
                                                pageIndex: pageIndex,
                                                loadPageCount: loadPageCount
                                            } = this.getLoadPageParams(true);
                                            const pageCount = this.pageCount();
                                            result = pageIndex + loadPageCount >= pageCount
                                        } else {
                                            result = this.callBase.apply(this, arguments)
                                        }
                                        return result
                                    },
                                    reset() {
                                        this._itemCount = 0;
                                        this._allItems = null;
                                        this.callBase.apply(this, arguments)
                                    },
                                    _applyFilter() {
                                        var _a;
                                        null === (_a = this._dataSource) || void 0 === _a ? void 0 : _a.loadPageCount(1);
                                        return this.callBase.apply(this, arguments)
                                    }
                                };
                                _m_utils.default.proxyMethod(members, "getVirtualContentSize");
                                _m_utils.default.proxyMethod(members, "setViewportItemIndex");
                                return members
                            }(),
                            resizing: {
                                _updateMasterDataGridCore(masterDataGrid) {
                                    return (0, _deferred.when)(this.callBase.apply(this, arguments)).done(masterDataGridUpdated => {
                                        const isNewVirtualMode = isVirtualMode(masterDataGrid) && false === masterDataGrid.option(LEGACY_SCROLLING_MODE);
                                        if (!masterDataGridUpdated && isNewVirtualMode) {
                                            const scrollable = masterDataGrid.getScrollable();
                                            if (scrollable) {
                                                masterDataGrid.updateDimensions()
                                            }
                                        }
                                    })
                                },
                                hasResizeTimeout() {
                                    return !!this._resizeTimeout
                                },
                                resize() {
                                    const {
                                        callBase: callBase
                                    } = this;
                                    let result;
                                    if (isVirtualMode(this) || _m_utils.default.isVirtualRowRendering(this)) {
                                        clearTimeout(this._resizeTimeout);
                                        this._resizeTimeout = null;
                                        const diff = new Date - this._lastTime;
                                        const updateTimeout = this.option("scrolling.updateTimeout");
                                        if (this._lastTime && diff < updateTimeout) {
                                            result = new _deferred.Deferred;
                                            this._resizeTimeout = setTimeout(() => {
                                                this._resizeTimeout = null;
                                                callBase.apply(this).done(result.resolve).fail(result.reject);
                                                this._lastTime = new Date
                                            }, updateTimeout);
                                            this._lastTime = new Date
                                        } else {
                                            result = callBase.apply(this);
                                            if (this._dataController.isLoaded()) {
                                                this._lastTime = new Date
                                            }
                                        }
                                    } else {
                                        result = callBase.apply(this)
                                    }
                                    return result
                                },
                                dispose() {
                                    this.callBase.apply(this, arguments);
                                    clearTimeout(this._resizeTimeout)
                                }
                            }
                        },
                        views: {
                            rowsView: VirtualScrollingRowsViewExtender
                        }
                    }
                };
                exports.virtualScrollingModule = virtualScrollingModule
            },
        86770:
            /*!**********************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/grid_core/virtual_scrolling/m_virtual_scrolling_core.js ***!
              \**********************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = exports.VirtualScrollController = void 0;
                exports.subscribeToExternalScrollers = subscribeToExternalScrollers;
                var _position = _interopRequireDefault(__webpack_require__( /*! ../../../../animation/position */ 49387));
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../../../core/class */ 38377));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/browser */ 47810));
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/callbacks */ 44504));
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _window = __webpack_require__( /*! ../../../../core/utils/window */ 58201);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../events/core/events_engine */ 55994));
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../m_utils */ 60082));
                var _m_virtual_data_loader = __webpack_require__( /*! ../virtual_data_loader/m_virtual_data_loader */ 20488);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const isVirtualMode = that => "virtual" === that.option("scrolling.mode") || that._isVirtual;

                function subscribeToExternalScrollers($element, scrollChangedHandler, $targetElement) {
                    let $scrollElement;
                    const scrollableArray = [];
                    const scrollToArray = [];
                    const disposeArray = [];
                    $targetElement = $targetElement || $element;

                    function getElementOffset(scrollable) {
                        const $scrollableElement = scrollable.element ? scrollable.$element() : scrollable;
                        const scrollableOffset = _position.default.offset($scrollableElement);
                        if (!scrollableOffset) {
                            return $element.offset().top
                        }
                        return scrollable.scrollTop() - (scrollableOffset.top - $element.offset().top)
                    }
                    const widgetScrollStrategy = {
                        on(scrollable, eventName, handler) {
                            scrollable.on("scroll", handler)
                        },
                        off(scrollable, eventName, handler) {
                            scrollable.off("scroll", handler)
                        }
                    };

                    function subscribeToScrollEvents($scrollElement) {
                        const isDocument = "#document" === $scrollElement.get(0).nodeName;
                        const isElement = $scrollElement.get(0).nodeType === (0, _window.getWindow)().Node.ELEMENT_NODE;
                        let scrollable = $scrollElement.data("dxScrollable");
                        let eventsStrategy = widgetScrollStrategy;
                        if (!scrollable) {
                            scrollable = isDocument && (0, _renderer.default)((0, _window.getWindow)()) || isElement && "auto" === $scrollElement.css("overflowY") && $scrollElement;
                            eventsStrategy = _events_engine.default;
                            if (!scrollable) {
                                return
                            }
                        }
                        const handler = function(scrollable) {
                            return function() {
                                let scrollTop = scrollable.scrollTop() - getElementOffset(scrollable);
                                scrollTop = scrollTop > 0 ? scrollTop : 0;
                                scrollChangedHandler(scrollTop)
                            }
                        }(scrollable);
                        eventsStrategy.on(scrollable, "scroll", handler);
                        scrollToArray.push(pos => {
                            const topOffset = getElementOffset(scrollable);
                            const scrollMethod = scrollable.scrollTo ? "scrollTo" : "scrollTop";
                            if (pos - topOffset >= 0) {
                                scrollable[scrollMethod](pos + topOffset)
                            }
                        });
                        scrollableArray.push(scrollable);
                        disposeArray.push(() => {
                            eventsStrategy.off(scrollable, "scroll", handler)
                        })
                    }
                    const getScrollElementParent = $element => {
                        var _a;
                        return (0, _renderer.default)(null !== (_a = $element.get(0).parentNode) && void 0 !== _a ? _a : $element.get(0).host)
                    };
                    for ($scrollElement = $targetElement.parent(); $scrollElement.length; $scrollElement = getScrollElementParent($scrollElement)) {
                        subscribeToScrollEvents($scrollElement)
                    }
                    return {
                        scrollTo(pos) {
                            (0, _iterator.each)(scrollToArray, (_, scrollTo) => {
                                scrollTo(pos)
                            })
                        },
                        dispose() {
                            (0, _iterator.each)(disposeArray, (_, dispose) => {
                                dispose()
                            })
                        }
                    }
                }
                const VirtualScrollController = _class.default.inherit(function() {
                    const members = {
                        ctor(component, dataOptions, isVirtual) {
                            this._dataOptions = dataOptions;
                            this.component = component;
                            this._viewportSize = false === component.option("scrolling.legacyMode") ? 15 : 0;
                            this._viewportItemSize = 20;
                            this._viewportItemIndex = 0;
                            this._position = 0;
                            this._isScrollingBack = false;
                            this._contentSize = 0;
                            this._itemSizes = {};
                            this._sizeRatio = 1;
                            this._isVirtual = isVirtual;
                            this.positionChanged = (0, _callbacks.default)();
                            this._dataLoader = new _m_virtual_data_loader.VirtualDataLoader(this, this._dataOptions)
                        },
                        getItemSizes() {
                            return this._itemSizes
                        },
                        option() {
                            return this.component.option.apply(this.component, arguments)
                        },
                        isVirtual() {
                            return this._isVirtual
                        },
                        virtualItemsCount() {
                            if (isVirtualMode(this)) {
                                const dataOptions = this._dataOptions;
                                const totalItemsCount = dataOptions.totalItemsCount();
                                if (false === this.option("scrolling.legacyMode") && -1 !== totalItemsCount) {
                                    const viewportParams = this.getViewportParams();
                                    const loadedOffset = dataOptions.loadedOffset();
                                    const loadedItemCount = dataOptions.loadedItemCount();
                                    const skip = Math.max(viewportParams.skip, loadedOffset);
                                    const take = Math.min(viewportParams.take, loadedItemCount);
                                    const endItemsCount = Math.max(totalItemsCount - (skip + take), 0);
                                    return {
                                        begin: skip,
                                        end: endItemsCount
                                    }
                                }
                                return this._dataLoader.virtualItemsCount.apply(this._dataLoader, arguments)
                            }
                        },
                        getScrollingTimeout() {
                            var _a;
                            const renderAsync = this.option("scrolling.renderAsync");
                            let scrollingTimeout = 0;
                            if (!(0, _type.isDefined)(renderAsync)) {
                                scrollingTimeout = Math.min(this.option("scrolling.timeout") || 0, this._dataOptions.changingDuration());
                                if (scrollingTimeout < this.option("scrolling.renderingThreshold")) {
                                    scrollingTimeout = this.option("scrolling.minTimeout") || 0
                                }
                            } else if (renderAsync) {
                                scrollingTimeout = null !== (_a = this.option("scrolling.timeout")) && void 0 !== _a ? _a : 0
                            }
                            return scrollingTimeout
                        },
                        setViewportPosition(position) {
                            const result = new _deferred.Deferred;
                            const scrollingTimeout = this.getScrollingTimeout();
                            clearTimeout(this._scrollTimeoutID);
                            if (scrollingTimeout > 0) {
                                this._scrollTimeoutID = setTimeout(() => {
                                    this._setViewportPositionCore(position);
                                    result.resolve()
                                }, scrollingTimeout)
                            } else {
                                this._setViewportPositionCore(position);
                                result.resolve()
                            }
                            return result.promise()
                        },
                        getViewportPosition() {
                            return this._position
                        },
                        getItemIndexByPosition(position, viewportItemIndex, height) {
                            position = null !== position && void 0 !== position ? position : this._position;
                            const defaultItemSize = this.getItemSize();
                            let offset = 0;
                            let itemOffset = 0;
                            const itemOffsetsWithSize = Object.keys(this._itemSizes).concat(-1);
                            for (let i = 0; i < itemOffsetsWithSize.length && offset < position; i++) {
                                const itemOffsetWithSize = parseInt(itemOffsetsWithSize[i]);
                                let itemOffsetDiff = (position - offset) / defaultItemSize;
                                if (itemOffsetWithSize < 0 || itemOffset + itemOffsetDiff < itemOffsetWithSize) {
                                    itemOffset += itemOffsetDiff;
                                    if (this._sizeRatio < 1 && (0, _type.isDefined)(viewportItemIndex)) {
                                        itemOffset = viewportItemIndex + height / this._viewportItemSize
                                    }
                                    break
                                } else {
                                    itemOffsetDiff = itemOffsetWithSize - itemOffset;
                                    offset += itemOffsetDiff * defaultItemSize;
                                    itemOffset += itemOffsetDiff
                                }
                                const itemSize = this._itemSizes[itemOffsetWithSize];
                                offset += itemSize;
                                itemOffset += offset < position ? 1 : (position - offset + itemSize) / itemSize
                            }
                            return Math.round(50 * itemOffset) / 50
                        },
                        isScrollingBack() {
                            return this._isScrollingBack
                        },
                        _setViewportPositionCore(position) {
                            const prevPosition = this._position || 0;
                            this._position = position;
                            if (prevPosition !== this._position) {
                                this._isScrollingBack = this._position < prevPosition
                            }
                            const itemIndex = this.getItemIndexByPosition();
                            const result = this.setViewportItemIndex(itemIndex);
                            this.positionChanged.fire();
                            return result
                        },
                        setContentItemSizes(sizes) {
                            const virtualItemsCount = this.virtualItemsCount();
                            this._contentSize = sizes.reduce((a, b) => a + b, 0);
                            if (virtualItemsCount) {
                                sizes.forEach((size, index) => {
                                    this._itemSizes[virtualItemsCount.begin + index] = size
                                });
                                const virtualContentSize = (virtualItemsCount.begin + virtualItemsCount.end + this.itemsCount()) * this._viewportItemSize;
                                const contentHeightLimit = _m_utils.default.getContentHeightLimit(_browser.default);
                                if (virtualContentSize > contentHeightLimit) {
                                    this._sizeRatio = contentHeightLimit / virtualContentSize
                                } else {
                                    this._sizeRatio = 1
                                }
                            }
                        },
                        getItemSize() {
                            return this._viewportItemSize * this._sizeRatio
                        },
                        getItemOffset(itemIndex, isEnd) {
                            const virtualItemsCount = this.virtualItemsCount();
                            let itemCount = itemIndex;
                            if (!virtualItemsCount) {
                                return 0
                            }
                            let offset = 0;
                            const totalItemsCount = this._dataOptions.totalItemsCount();
                            Object.keys(this._itemSizes).forEach(currentItemIndex => {
                                if (!itemCount) {
                                    return
                                }
                                if (isEnd ? currentItemIndex >= totalItemsCount - itemIndex : currentItemIndex < itemIndex) {
                                    offset += this._itemSizes[currentItemIndex];
                                    itemCount--
                                }
                            });
                            return Math.floor(offset + itemCount * this._viewportItemSize * this._sizeRatio)
                        },
                        getContentOffset(type) {
                            const isEnd = "end" === type;
                            const virtualItemsCount = this.virtualItemsCount();
                            if (!virtualItemsCount) {
                                return 0
                            }
                            return this.getItemOffset(isEnd ? virtualItemsCount.end : virtualItemsCount.begin, isEnd)
                        },
                        getVirtualContentSize() {
                            const virtualItemsCount = this.virtualItemsCount();
                            return virtualItemsCount ? this.getContentOffset("begin") + this.getContentOffset("end") + this._contentSize : 0
                        },
                        getViewportItemIndex() {
                            return this._viewportItemIndex
                        },
                        setViewportItemIndex(itemIndex) {
                            this._viewportItemIndex = itemIndex;
                            if (false === this.option("scrolling.legacyMode")) {
                                return
                            }
                            return this._dataLoader.viewportItemIndexChanged.apply(this._dataLoader, arguments)
                        },
                        viewportItemSize(size) {
                            if (void 0 !== size) {
                                this._viewportItemSize = size
                            }
                            return this._viewportItemSize
                        },
                        viewportSize(size) {
                            if (void 0 !== size) {
                                this._viewportSize = size
                            }
                            return this._viewportSize
                        },
                        viewportHeight(height, scrollTop) {
                            const position = null !== scrollTop && void 0 !== scrollTop ? scrollTop : this._position;
                            const begin = this.getItemIndexByPosition(position);
                            const end = this.getItemIndexByPosition(position + height, begin, height);
                            this.viewportSize(Math.ceil(end - begin));
                            if (!(0, _type.isDefined)(scrollTop) && this._viewportItemIndex !== begin) {
                                this._setViewportPositionCore(position)
                            }
                        },
                        reset(isRefresh) {
                            this._dataLoader.reset();
                            if (!isRefresh) {
                                this._itemSizes = {}
                            }
                        },
                        subscribeToWindowScrollEvents($element) {
                            this._windowScroll = this._windowScroll || subscribeToExternalScrollers($element, scrollTop => {
                                if (this.viewportItemSize()) {
                                    this.setViewportPosition(scrollTop)
                                }
                            })
                        },
                        dispose() {
                            clearTimeout(this._scrollTimeoutID);
                            this._windowScroll && this._windowScroll.dispose();
                            this._windowScroll = null
                        },
                        scrollTo(pos) {
                            this._windowScroll && this._windowScroll.scrollTo(pos)
                        },
                        isVirtualMode() {
                            return isVirtualMode(this)
                        },
                        isAppendMode() {
                            return that = this, "infinite" === that.option("scrolling.mode") && !that._isVirtual;
                            var that
                        },
                        getViewportParams() {
                            var _a;
                            const virtualMode = "virtual" === this.option("scrolling.mode");
                            const totalItemsCount = this._dataOptions.totalItemsCount();
                            const hasKnownLastPage = this._dataOptions.hasKnownLastPage();
                            const topIndex = hasKnownLastPage && this._viewportItemIndex > totalItemsCount ? totalItemsCount : this._viewportItemIndex;
                            const bottomIndex = this._viewportSize + topIndex;
                            const maxGap = this.option("scrolling.prerenderedRowChunkSize") || 1;
                            const isScrollingBack = this.isScrollingBack();
                            const minGap = null !== (_a = this.option("scrolling.prerenderedRowCount")) && void 0 !== _a ? _a : 1;
                            const topMinGap = isScrollingBack ? minGap : 0;
                            const bottomMinGap = isScrollingBack ? 0 : minGap;
                            const skip = Math.floor(Math.max(0, topIndex - topMinGap) / maxGap) * maxGap;
                            let take = Math.ceil((bottomIndex + bottomMinGap - skip) / maxGap) * maxGap;
                            if (virtualMode) {
                                const remainedItems = Math.max(0, totalItemsCount - skip);
                                take = Math.min(take, remainedItems)
                            }
                            return {
                                skip: skip,
                                take: take
                            }
                        },
                        itemsCount() {
                            let result = 0;
                            if (this.option("scrolling.legacyMode")) {
                                result = this._dataLoader.itemsCount.apply(this._dataLoader, arguments)
                            } else {
                                result = this._dataOptions.itemsCount()
                            }
                            return result
                        }
                    };
                    ["pageIndex", "beginPageIndex", "endPageIndex", "pageSize", "load", "loadIfNeed", "handleDataChanged", "getDelayDeferred"].forEach(name => {
                        members[name] = function() {
                            return this._dataLoader[name].apply(this._dataLoader, arguments)
                        }
                    });
                    return members
                }());
                exports.VirtualScrollController = VirtualScrollController;
                var _default = {
                    VirtualScrollController: VirtualScrollController
                };
                exports.default = _default
            },
        74305:
            /*!**************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/area_item/m_area_item.js ***!
              \**************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.getRealElementWidth = exports.default = exports.AreaItem = void 0;
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../../../core/class */ 38377));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../../core/dom_adapter */ 73349));
                var _element = __webpack_require__( /*! ../../../../core/element */ 6415);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _position = __webpack_require__( /*! ../../../../core/utils/position */ 37518);
                var _size = __webpack_require__( /*! ../../../../core/utils/size */ 58664);
                var _style = __webpack_require__( /*! ../../../../core/utils/style */ 80968);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _getMemoizeScrollTo = __webpack_require__( /*! ../../../../renovation/ui/common/utils/scroll/getMemoizeScrollTo */ 41672);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const getRealElementWidth = function(element) {
                    let width = 0;
                    const {
                        offsetWidth: offsetWidth
                    } = element;
                    if (element.getBoundingClientRect) {
                        const clientRect = (0, _position.getBoundingRect)(element);
                        width = clientRect.width;
                        if (!width) {
                            width = clientRect.right - clientRect.left
                        }
                        if (width <= offsetWidth - 1) {
                            width = offsetWidth
                        }
                    }
                    return width > 0 ? width : offsetWidth
                };
                exports.getRealElementWidth = getRealElementWidth;

                function getFakeTableOffset(scrollPos, elementOffset, tableSize, viewPortSize) {
                    let offset = 0;
                    let halfTableCount = 0;
                    const halfTableSize = tableSize / 2;
                    if (scrollPos + viewPortSize - (elementOffset + tableSize) > 1) {
                        if (scrollPos >= elementOffset + tableSize + halfTableSize) {
                            halfTableCount = parseInt((scrollPos - (elementOffset + tableSize)) / halfTableSize, 10)
                        }
                        offset = elementOffset + tableSize + halfTableSize * halfTableCount
                    } else if (scrollPos < elementOffset) {
                        if (scrollPos <= elementOffset - halfTableSize) {
                            halfTableCount = parseInt((scrollPos - (elementOffset - halfTableSize)) / halfTableSize, 10)
                        }
                        offset = elementOffset - (tableSize - halfTableSize * halfTableCount)
                    } else {
                        offset = elementOffset
                    }
                    return offset
                }
                const AreaItem = _class.default.inherit({
                    ctor(component) {
                        this.component = component
                    },
                    option() {
                        return this.component.option.apply(this.component, arguments)
                    },
                    _getRowElement(index) {
                        const that = this;
                        if (that._tableElement && that._tableElement.length > 0) {
                            return that._tableElement[0].rows[index]
                        }
                        return null
                    },
                    _createGroupElement: () => (0, _renderer.default)("<div>"),
                    _createTableElement: () => (0, _renderer.default)("<table>"),
                    _getCellText(cell, encodeHtml) {
                        let cellText = cell.isWhiteSpace ? "&nbsp" : cell.text || "&nbsp";
                        if (encodeHtml && (-1 !== cellText.indexOf("<") || -1 !== cellText.indexOf(">"))) {
                            cellText = (0, _renderer.default)("<div>").text(cellText).html()
                        }
                        return cellText
                    },
                    _getRowClassNames() {},
                    _applyCustomStyles(options) {
                        if (options.cell.width) {
                            options.cssArray.push("min-width:".concat(options.cell.width, "px"))
                        }
                        if (options.cell.sorted) {
                            options.classArray.push("dx-pivotgrid-sorted")
                        }
                    },
                    _getMainElementMarkup: () => _dom_adapter.default.createElement("tbody"),
                    _getCloseMainElementMarkup: () => "</tbody>",
                    _renderTableContent(tableElement, data) {
                        const that = this;
                        const rowsCount = data.length;
                        let row;
                        let cell;
                        let i;
                        let j;
                        let cellText;
                        const rtlEnabled = that.option("rtlEnabled");
                        const encodeHtml = that.option("encodeHtml");
                        let rowClassNames;
                        tableElement.data("area", that._getAreaName());
                        tableElement.data("data", data);
                        tableElement.css("width", "");
                        const tbody = this._getMainElementMarkup();
                        for (i = 0; i < rowsCount; i += 1) {
                            row = data[i];
                            rowClassNames = [];
                            const tr = _dom_adapter.default.createElement("tr");
                            for (j = 0; j < row.length; j += 1) {
                                cell = row[j];
                                this._getRowClassNames(i, cell, rowClassNames);
                                const td = _dom_adapter.default.createElement("td");
                                if (cell) {
                                    cell.rowspan && td.setAttribute("rowspan", cell.rowspan || 1);
                                    cell.colspan && td.setAttribute("colspan", cell.colspan || 1);
                                    const styleOptions = {
                                        cellElement: void 0,
                                        cell: cell,
                                        cellsCount: row.length,
                                        cellIndex: j,
                                        rowElement: void 0,
                                        rowIndex: i,
                                        rowsCount: rowsCount,
                                        rtlEnabled: rtlEnabled,
                                        classArray: [],
                                        cssArray: []
                                    };
                                    that._applyCustomStyles(styleOptions);
                                    if (styleOptions.cssArray.length) {
                                        (0, _style.setStyle)(td, styleOptions.cssArray.join(";"))
                                    }
                                    if (styleOptions.classArray.length) {
                                        td.setAttribute("class", styleOptions.classArray.join(" "))
                                    }
                                    if ((0, _type.isDefined)(cell.expanded)) {
                                        const div = _dom_adapter.default.createElement("div");
                                        div.classList.add("dx-expand-icon-container");
                                        const span = _dom_adapter.default.createElement("span");
                                        span.classList.add("dx-expand");
                                        div.appendChild(span);
                                        td.appendChild(div)
                                    }
                                    cellText = this._getCellText(cell, encodeHtml)
                                } else {
                                    cellText = ""
                                }
                                const span = _dom_adapter.default.createElement("span");
                                if ((0, _type.isDefined)(cell.wordWrapEnabled)) {
                                    span.style.whiteSpace = cell.wordWrapEnabled ? "normal" : "nowrap"
                                }
                                span.innerHTML = cellText;
                                td.appendChild(span);
                                if (cell.sorted) {
                                    const span = _dom_adapter.default.createElement("span");
                                    span.classList.add("dx-icon-sorted");
                                    td.appendChild(span)
                                }
                                tr.appendChild(td)
                            }
                            if (rowClassNames.length) {
                                tr.setAttribute("class", rowClassNames.join(" "))
                            }
                            tbody.appendChild(tr)
                        }
                        tableElement.append(tbody);
                        this._triggerOnCellPrepared(tableElement, data)
                    },
                    _triggerOnCellPrepared(tableElement, data) {
                        const that = this;
                        const rowElements = tableElement.find("tr");
                        const areaName = that._getAreaName();
                        const onCellPrepared = that.option("onCellPrepared");
                        const hasEvent = that.component._eventsStrategy.hasEvent("cellPrepared");
                        let rowElement;
                        let $cellElement;
                        let onCellPreparedArgs;
                        const defaultActionArgs = this.component._defaultActionArgs();
                        let row;
                        let cell;
                        let rowIndex;
                        let columnIndex;
                        if (onCellPrepared || hasEvent) {
                            for (rowIndex = 0; rowIndex < data.length; rowIndex += 1) {
                                row = data[rowIndex];
                                rowElement = rowElements.eq(rowIndex);
                                for (columnIndex = 0; columnIndex < row.length; columnIndex += 1) {
                                    cell = row[columnIndex];
                                    $cellElement = rowElement.children().eq(columnIndex);
                                    onCellPreparedArgs = {
                                        area: areaName,
                                        rowIndex: rowIndex,
                                        columnIndex: columnIndex,
                                        cellElement: (0, _element.getPublicElement)($cellElement),
                                        cell: cell
                                    };
                                    if (hasEvent) {
                                        that.component._trigger("onCellPrepared", onCellPreparedArgs)
                                    } else {
                                        onCellPrepared((0, _extend.extend)(onCellPreparedArgs, defaultActionArgs))
                                    }
                                }
                            }
                        }
                    },
                    _getRowHeight(index) {
                        const row = this._getRowElement(index);
                        let height = 0;
                        const {
                            offsetHeight: offsetHeight
                        } = row;
                        if (row && row.lastChild) {
                            if (row.getBoundingClientRect) {
                                const clientRect = (0, _position.getBoundingRect)(row);
                                height = clientRect.height;
                                if (height <= offsetHeight - 1) {
                                    height = offsetHeight
                                }
                            }
                            return height > 0 ? height : offsetHeight
                        }
                        return 0
                    },
                    _setRowHeight(index, value) {
                        const row = this._getRowElement(index);
                        if (row) {
                            row.style.height = "".concat(value, "px")
                        }
                    },
                    getRowsLength() {
                        const that = this;
                        if (that._tableElement && that._tableElement.length > 0) {
                            return that._tableElement[0].rows.length
                        }
                        return 0
                    },
                    getRowsHeight() {
                        const that = this;
                        const result = [];
                        const rowsLength = that.getRowsLength();
                        for (let i = 0; i < rowsLength; i += 1) {
                            result.push(that._getRowHeight(i))
                        }
                        return result
                    },
                    setRowsHeight(values) {
                        const that = this;
                        let totalHeight = 0;
                        const valuesLength = values.length;
                        for (let i = 0; i < valuesLength; i += 1) {
                            totalHeight += values[i];
                            that._setRowHeight(i, values[i])
                        }
                        this._tableHeight = totalHeight;
                        this._tableElement[0].style.height = "".concat(totalHeight, "px")
                    },
                    getColumnsWidth() {
                        const rowsLength = this.getRowsLength();
                        let rowIndex;
                        let row;
                        let i;
                        let columnIndex;
                        const processedCells = [];
                        const result = [];
                        const fillCells = function(cells, rowIndex, columnIndex, rowSpan, colSpan) {
                            let rowOffset;
                            let columnOffset;
                            for (rowOffset = 0; rowOffset < rowSpan; rowOffset += 1) {
                                for (columnOffset = 0; columnOffset < colSpan; columnOffset += 1) {
                                    cells[rowIndex + rowOffset] = cells[rowIndex + rowOffset] || [];
                                    cells[rowIndex + rowOffset][columnIndex + columnOffset] = true
                                }
                            }
                        };
                        if (rowsLength) {
                            for (rowIndex = 0; rowIndex < rowsLength; rowIndex += 1) {
                                processedCells[rowIndex] = processedCells[rowIndex] || [];
                                row = this._getRowElement(rowIndex);
                                for (i = 0; i < row.cells.length; i += 1) {
                                    for (columnIndex = 0; processedCells[rowIndex][columnIndex]; columnIndex += 1) {}
                                    fillCells(processedCells, rowIndex, columnIndex, row.cells[i].rowSpan, row.cells[i].colSpan);
                                    if (1 === row.cells[i].colSpan) {
                                        result[columnIndex] = result[columnIndex] || getRealElementWidth(row.cells[i])
                                    }
                                }
                            }
                        }
                        return result
                    },
                    setColumnsWidth(values) {
                        let i;
                        const tableElement = this._tableElement[0];
                        this._colgroupElement.html("");
                        const columnsCount = this.getColumnsCount();
                        const columnWidth = [];
                        for (i = 0; i < columnsCount; i += 1) {
                            columnWidth.push(values[i] || 0)
                        }
                        for (i = columnsCount; i < values.length && values; i += 1) {
                            columnWidth[columnsCount - 1] += values[i]
                        }
                        for (i = 0; i < columnsCount; i += 1) {
                            const col = _dom_adapter.default.createElement("col");
                            col.style.width = "".concat(columnWidth[i], "px");
                            this._colgroupElement.append(col)
                        }
                        this._tableWidth = columnWidth.reduce((sum, width) => sum + width, 0);
                        tableElement.style.width = "".concat(this._tableWidth, "px");
                        tableElement.style.tableLayout = "fixed"
                    },
                    resetColumnsWidth() {
                        (0, _size.setWidth)(this._colgroupElement.find("col"), "auto");
                        this._tableElement.css({
                            width: "",
                            tableLayout: ""
                        })
                    },
                    setGroupWidth(value) {
                        this._getScrollable().option("width", value)
                    },
                    setGroupHeight(value) {
                        this._getScrollable().option("height", value)
                    },
                    getGroupHeight() {
                        return this._getGroupElementSize("height")
                    },
                    getGroupWidth() {
                        return this._getGroupElementSize("width")
                    },
                    _getGroupElementSize(dimension) {
                        const size = this.groupElement()[0].style[dimension];
                        if (size.indexOf("px") > 0) {
                            return parseFloat(size)
                        }
                        return null
                    },
                    groupElement() {
                        return this._groupElement
                    },
                    tableElement() {
                        return this._tableElement
                    },
                    element() {
                        return this._rootElement
                    },
                    headElement() {
                        return this._tableElement.find("thead")
                    },
                    _setTableCss(styles) {
                        if (this.option("rtlEnabled")) {
                            styles.right = styles.left;
                            delete styles.left
                        }
                        this.tableElement().css(styles)
                    },
                    setVirtualContentParams(params) {
                        this._virtualContent.css({
                            width: params.width,
                            height: params.height
                        });
                        const scrollable = this._getScrollable();
                        if (null === scrollable || void 0 === scrollable ? void 0 : scrollable.isRenovated()) {
                            this._getScrollable().option("classes", "dx-virtual-mode")
                        } else {
                            this.groupElement().addClass("dx-virtual-mode")
                        }
                    },
                    disableVirtualMode() {
                        const scrollable = this._getScrollable();
                        if (null === scrollable || void 0 === scrollable ? void 0 : scrollable.isRenovated()) {
                            this._getScrollable().option("classes", "")
                        } else {
                            this.groupElement().removeClass("dx-virtual-mode")
                        }
                    },
                    _renderVirtualContent() {
                        const that = this;
                        if (!that._virtualContent && "virtual" === that.option("scrolling.mode")) {
                            that._virtualContent = (0, _renderer.default)("<div>").addClass("dx-virtual-content").insertBefore(that._tableElement)
                        }
                    },
                    reset() {
                        const tableElement = this._tableElement[0];
                        this._fakeTable && this._fakeTable.detach();
                        this._fakeTable = null;
                        this.disableVirtualMode();
                        this.setGroupWidth("100%");
                        this.setGroupHeight("auto");
                        this.resetColumnsWidth();
                        if (tableElement) {
                            for (let i = 0; i < tableElement.rows.length; i += 1) {
                                tableElement.rows[i].style.height = ""
                            }
                            tableElement.style.height = "";
                            tableElement.style.width = "100%"
                        }
                    },
                    _updateFakeTableVisibility() {
                        const that = this;
                        const tableElement = that.tableElement()[0];
                        const horizontalOffsetName = that.option("rtlEnabled") ? "right" : "left";
                        const fakeTableElement = that._fakeTable[0];
                        if (tableElement.style.top === fakeTableElement.style.top && fakeTableElement.style[horizontalOffsetName] === tableElement.style[horizontalOffsetName]) {
                            that._fakeTable.addClass("dx-hidden")
                        } else {
                            that._fakeTable.removeClass("dx-hidden")
                        }
                    },
                    _moveFakeTableHorizontally(scrollPos) {
                        const that = this;
                        const rtlEnabled = that.option("rtlEnabled");
                        const offsetStyleName = rtlEnabled ? "right" : "left";
                        const tableElementOffset = parseFloat(that.tableElement()[0].style[offsetStyleName]);
                        const offset = getFakeTableOffset(scrollPos, tableElementOffset, that._tableWidth, that.getGroupWidth());
                        if (parseFloat(that._fakeTable[0].style[offsetStyleName]) !== offset) {
                            that._fakeTable[0].style[offsetStyleName] = "".concat(offset, "px")
                        }
                    },
                    _moveFakeTableTop(scrollPos) {
                        const that = this;
                        const tableElementOffsetTop = parseFloat(that.tableElement()[0].style.top);
                        const offsetTop = getFakeTableOffset(scrollPos, tableElementOffsetTop, that._tableHeight, that.getGroupHeight());
                        if (parseFloat(that._fakeTable[0].style.top) !== offsetTop) {
                            that._fakeTable[0].style.top = "".concat(offsetTop, "px")
                        }
                    },
                    _moveFakeTable() {
                        this._updateFakeTableVisibility()
                    },
                    _createFakeTable() {
                        const that = this;
                        if (!that._fakeTable) {
                            that._fakeTable = that.tableElement().clone().addClass("dx-pivot-grid-fake-table").appendTo(that._virtualContent)
                        }
                    },
                    render(rootElement, data) {
                        const that = this;
                        if (that._tableElement) {
                            try {
                                that._tableElement[0].innerHTML = ""
                            } catch (e) {
                                that._tableElement.empty()
                            }
                            that._tableElement.removeAttr("style")
                        } else {
                            that._groupElement = that._createGroupElement();
                            that._tableElement = that._createTableElement();
                            that._tableElement.appendTo(that._groupElement);
                            that._groupElement.appendTo(rootElement);
                            that._rootElement = rootElement
                        }
                        that._colgroupElement = (0, _renderer.default)("<colgroup>").appendTo(that._tableElement);
                        that._renderTableContent(that._tableElement, data);
                        that._renderVirtualContent()
                    },
                    _getScrollable() {
                        return this.groupElement().data("dxScrollable")
                    },
                    _getMemoizeScrollTo() {
                        var _a;
                        this._memoizeScrollTo = null !== (_a = this._memoizeScrollTo) && void 0 !== _a ? _a : (0, _getMemoizeScrollTo.getMemoizeScrollTo)(() => this._getScrollable());
                        return this._memoizeScrollTo
                    },
                    _getMaxLeftOffset(scrollable) {
                        const containerElement = (0, _renderer.default)(scrollable.container()).get(0);
                        return containerElement.scrollWidth - containerElement.clientWidth
                    },
                    on(eventName, handler) {
                        const that = this;
                        const scrollable = that._getScrollable();
                        if (scrollable) {
                            scrollable.on(eventName, e => {
                                if (that.option("rtlEnabled") && (0, _type.isDefined)(e.scrollOffset.left)) {
                                    e.scrollOffset.left = that._getMaxLeftOffset(scrollable) - e.scrollOffset.left
                                }
                                handler(e)
                            })
                        }
                        return this
                    },
                    off(eventName) {
                        const scrollable = this._getScrollable();
                        if (scrollable) {
                            scrollable.off(eventName)
                        }
                        return this
                    },
                    scrollTo(pos) {
                        let force = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false;
                        const scrollable = this._getScrollable();
                        if (!scrollable) {
                            return
                        }
                        const rtlEnabled = this.option("rtlEnabled");
                        const areaName = this._getAreaName();
                        const scrollablePos = _extends(_extends({}, pos), {
                            left: rtlEnabled && ("column" === areaName || "data" === areaName) ? this._getMaxLeftOffset(scrollable) - pos.left : pos.left
                        });
                        const memoizeScrollTo = this._getMemoizeScrollTo();
                        memoizeScrollTo(scrollablePos, force);
                        if (this._virtualContent) {
                            this._createFakeTable();
                            this._moveFakeTable(pos)
                        }
                    },
                    updateScrollable() {
                        const scrollable = this._getScrollable();
                        if (scrollable) {
                            return scrollable.update()
                        }
                        return
                    },
                    getColumnsCount() {
                        let columnCount = 0;
                        const row = this._getRowElement(0);
                        let cells;
                        if (row) {
                            cells = row.cells;
                            for (let i = 0, len = cells.length; i < len; ++i) {
                                columnCount += cells[i].colSpan
                            }
                        }
                        return columnCount
                    },
                    getData() {
                        const tableElement = this._tableElement;
                        return tableElement ? tableElement.data("data") : []
                    }
                });
                exports.AreaItem = AreaItem;
                var _default = {
                    AreaItem: AreaItem,
                    getRealElementWidth: getRealElementWidth
                };
                exports.default = _default
            },
        85654:
            /*!******************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/chart_integration/m_chart_integration.js ***!
              \******************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = exports.ChartIntegrationMixin = void 0;
                var _renderer = (obj = __webpack_require__( /*! ../../../../core/renderer */ 68374), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _m_widget_utils = __webpack_require__( /*! ../m_widget_utils */ 28580);
                const FORMAT_DICTIONARY = {
                    number: "numeric",
                    date: "datetime"
                };
                const UNBIND_KEY = "dxPivotGridUnbinding";

                function getFormattedValue(path, fields) {
                    const value = [];
                    const lastFieldIndex = fields.length - 1;
                    (0, _iterator.each)(path, (i, item) => {
                        value.push(item.text || (0, _m_widget_utils.formatValue)(item.value, fields[lastFieldIndex - i]))
                    });
                    return value.reverse()
                }

                function getExpandedLevel(node) {
                    let level = 0;
                    (0, _m_widget_utils.foreachTree)(node, members => {
                        level = Math.max(level, members.length - 1)
                    });
                    return level
                }

                function createChartDataSource(pivotGridDataSource, mapOptions, axisDictionary) {
                    const data = pivotGridDataSource.getData();
                    const dataSource = [];
                    const dataFields = pivotGridDataSource.getAreaFields("data");
                    const rowFields = pivotGridDataSource.getAreaFields("row");
                    const columnFields = pivotGridDataSource.getAreaFields("column");
                    const columnElements = [{
                        index: data.grandTotalColumnIndex,
                        children: data.columns
                    }];
                    const rowElements = [{
                        index: data.grandTotalRowIndex,
                        children: data.rows
                    }];
                    const rowLevel = getExpandedLevel(rowElements);
                    const columnLevel = getExpandedLevel(columnElements);
                    let measureIndex;
                    let dataField;
                    let rowMemberIndex;
                    let rowVisibility;
                    let rowPathFormatted;
                    let rowPath;
                    let columnMemberIndex;
                    let columnVisibility;
                    let columnPath;
                    let columnPathFormatted;

                    function createDataItem() {
                        const dataCell = (data.values[rowMemberIndex] || [])[columnMemberIndex] || [];
                        const value = dataCell[measureIndex];
                        let axis;
                        let processCellArgs = {
                            rowPath: rowPath,
                            maxRowLevel: rowLevel,
                            rowPathFormatted: rowPathFormatted,
                            rowFields: rowFields,
                            columnPathFormatted: columnPathFormatted,
                            maxColumnLevel: columnLevel,
                            columnPath: columnPath,
                            columnFields: columnFields,
                            dataFields: dataFields,
                            dataIndex: measureIndex,
                            dataValues: dataCell,
                            visible: columnVisibility && rowVisibility
                        };
                        let seriesName = (mapOptions.inverted ? columnPathFormatted : rowPathFormatted).join(" - ");
                        let argument = (mapOptions.inverted ? rowPathFormatted : columnPathFormatted).join("/");
                        if (dataFields.length > 1) {
                            if ("args" === mapOptions.putDataFieldsInto || "both" === mapOptions.putDataFieldsInto) {
                                argument += " | ".concat(dataField.caption)
                            }
                            if ("args" !== mapOptions.putDataFieldsInto) {
                                seriesName += " | ".concat(dataField.caption);
                                if ("singleAxis" !== mapOptions.dataFieldsDisplayMode) {
                                    axis = dataField.caption
                                }
                            }
                        }
                        processCellArgs.chartDataItem = {
                            val: void 0 === value ? null : value,
                            series: seriesName,
                            arg: argument
                        };
                        processCellArgs = function(processCellArgs, processCell) {
                            let {
                                chartDataItem: chartDataItem
                            } = processCellArgs;
                            let processedCell = processCell && processCell(processCellArgs);
                            if (processedCell) {
                                chartDataItem = (0, _extend.extend)({}, chartDataItem, processedCell.chartDataItem);
                                processedCell = (0, _extend.extend)({}, processCellArgs, processedCell, {
                                    chartDataItem: chartDataItem
                                });
                                return processedCell
                            }
                            return processCellArgs
                        }(processCellArgs, mapOptions.processCell);
                        if (processCellArgs.visible) {
                            axisDictionary[processCellArgs.chartDataItem.series] = axisDictionary[processCellArgs.chartDataItem.series] || axis;
                            dataSource.push(processCellArgs.chartDataItem)
                        }
                    }

                    function foreachRowColumn(callBack) {
                        (0, _m_widget_utils.foreachTree)(rowElements, rowMembers => {
                            rowMemberIndex = rowMembers[0].index;
                            rowMembers = rowMembers.slice(0, rowMembers.length - 1);
                            rowVisibility = rowLevel === rowMembers.length;
                            rowPath = (0, _m_widget_utils.createPath)(rowMembers);
                            rowPathFormatted = getFormattedValue(rowMembers, rowFields);
                            if (0 === rowPath.length) {
                                rowPathFormatted = [mapOptions.grandTotalText]
                            }(0, _m_widget_utils.foreachTree)(columnElements, columnMembers => {
                                columnMemberIndex = columnMembers[0].index;
                                columnMembers = columnMembers.slice(0, columnMembers.length - 1);
                                columnVisibility = columnLevel === columnMembers.length;
                                columnPath = (0, _m_widget_utils.createPath)(columnMembers);
                                columnPathFormatted = getFormattedValue(columnMembers, columnFields);
                                if (0 === columnPath.length) {
                                    columnPathFormatted = [mapOptions.grandTotalText]
                                }
                                callBack()
                            })
                        })
                    }

                    function foreachDataField(callback) {
                        (0, _iterator.each)(dataFields, (index, field) => {
                            dataField = field;
                            measureIndex = index;
                            callback()
                        })
                    }
                    if (false === mapOptions.alternateDataFields) {
                        foreachDataField(() => {
                            foreachRowColumn(createDataItem)
                        })
                    } else {
                        foreachRowColumn(() => {
                            foreachDataField(createDataItem)
                        })
                    }
                    return dataSource
                }

                function createValueAxisOptions(dataSource, options) {
                    const dataFields = dataSource.getAreaFields("data");
                    if ("args" !== options.putDataFieldsInto && "singleAxis" !== options.dataFieldsDisplayMode || 1 === dataFields.length) {
                        const valueAxisSettings = [];
                        (0, _iterator.each)(dataFields, (_, dataField) => {
                            const valueAxisOptions = {
                                name: dataField.caption,
                                title: dataField.caption,
                                valueType: FORMAT_DICTIONARY[dataField.dataType] || dataField.dataType,
                                label: {
                                    format: dataField.format
                                }
                            };
                            if (dataField.customizeText) {
                                valueAxisOptions.label.customizeText = function(formatObject) {
                                    return dataField.customizeText.call(dataField, formatObject)
                                }
                            }
                            if ("splitPanes" === options.dataFieldsDisplayMode) {
                                valueAxisOptions.pane = dataField.caption
                            }
                            valueAxisSettings.push(valueAxisOptions)
                        });
                        return valueAxisSettings
                    }
                    return [{}]
                }

                function createPanesOptions(dataSource, options) {
                    const panes = [];
                    const dataFields = dataSource.getAreaFields("data");
                    if (dataFields.length > 1 && "splitPanes" === options.dataFieldsDisplayMode && "args" !== options.putDataFieldsInto) {
                        (0, _iterator.each)(dataFields, (_, dataField) => {
                            panes.push({
                                name: dataField.caption
                            })
                        })
                    }
                    if (!panes.length) {
                        panes.push({})
                    }
                    return panes
                }
                const ChartIntegrationMixin = {
                    bindChart(chart, integrationOptions) {
                        integrationOptions = (0, _extend.extend)({}, integrationOptions);
                        const that = this;
                        const updateChart = function() {
                            integrationOptions.grandTotalText = that.option("texts.grandTotal");
                            const chartOptions = function(dataSource, options) {
                                const {
                                    customizeSeries: customizeSeries
                                } = options;
                                const {
                                    customizeChart: customizeChart
                                } = options;
                                let chartOptions = {
                                    valueAxis: createValueAxisOptions(dataSource, options),
                                    panes: createPanesOptions(dataSource, options)
                                };
                                const axisDictionary = {};
                                if (customizeChart) {
                                    chartOptions = (0, _extend.extend)(true, {}, chartOptions, customizeChart(chartOptions))
                                }
                                chartOptions.dataSource = createChartDataSource(dataSource, options, axisDictionary);
                                chartOptions.seriesTemplate = {
                                    nameField: "series",
                                    customizeSeries(seriesName) {
                                        let seriesOptions = {};
                                        if ("splitPanes" === options.dataFieldsDisplayMode) {
                                            seriesOptions.pane = axisDictionary[seriesName]
                                        } else if ("singleAxis" !== options.dataFieldsDisplayMode) {
                                            seriesOptions.axis = axisDictionary[seriesName]
                                        }
                                        if (customizeSeries) {
                                            seriesOptions = (0, _extend.extend)(seriesOptions, customizeSeries(seriesName, seriesOptions))
                                        }
                                        return seriesOptions
                                    }
                                };
                                return chartOptions
                            }(that.getDataSource(), integrationOptions);
                            chart.option(chartOptions)
                        };
                        chart = function(chartElement) {
                            if (!chartElement) {
                                return false
                            }
                            if (chartElement.NAME) {
                                return "dxChart" === chartElement.NAME && chartElement
                            }
                            const element = (0, _renderer.default)(chartElement);
                            return element.data("dxChart") && element.dxChart("instance")
                        }(chart);
                        if (!chart) {
                            return null
                        }! function(chart) {
                            const unbind = chart.$element().data(UNBIND_KEY);
                            unbind && unbind()
                        }(chart);
                        that.on("changed", updateChart);
                        updateChart();
                        const disposeBinding = function() {
                            chart.$element().removeData(UNBIND_KEY);
                            that.off("changed", updateChart)
                        };
                        chart.on("disposing", disposeBinding);
                        this.on("disposing", disposeBinding);
                        chart.$element().data(UNBIND_KEY, disposeBinding);
                        return disposeBinding
                    }
                };
                exports.ChartIntegrationMixin = ChartIntegrationMixin;
                var _default = {
                    ChartIntegrationMixin: ChartIntegrationMixin
                };
                exports.default = _default
            },
        18813:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/const.js ***!
              \**********************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.CLASSES = void 0;
                exports.CLASSES = {
                    scrollBarMeasureElement: "dx-pivotgrid-scrollbar-measure-element"
                }
            },
        64318:
            /*!**************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/data_area/m_data_area.js ***!
              \**************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = exports.DataArea = void 0;
                var _renderer = (obj = __webpack_require__( /*! ../../../../core/renderer */ 68374), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _support = __webpack_require__( /*! ../../../../core/utils/support */ 60137);
                var _m_area_item = __webpack_require__( /*! ../area_item/m_area_item */ 74305);
                var _m_widget_utils = __webpack_require__( /*! ../m_widget_utils */ 28580);
                const DataArea = _m_area_item.AreaItem.inherit({
                    _getAreaName: () => "data",
                    _createGroupElement: () => (0, _renderer.default)("<div>").addClass("dx-pivotgrid-area").addClass("dx-pivotgrid-area-data").css("borderTopWidth", 0),
                    _applyCustomStyles(options) {
                        const {
                            cell: cell
                        } = options;
                        const {
                            classArray: classArray
                        } = options;
                        if ("T" === cell.rowType || "T" === cell.columnType) {
                            classArray.push("dx-total")
                        }
                        if ("GT" === cell.rowType || "GT" === cell.columnType) {
                            classArray.push("dx-grandtotal")
                        }
                        if ("T" === cell.rowType || "GT" === cell.rowType) {
                            classArray.push("dx-row-total")
                        }
                        if (options.rowIndex === options.rowsCount - 1) {
                            options.cssArray.push("border-bottom: 0px")
                        }
                        this.callBase(options)
                    },
                    _moveFakeTable(scrollPos) {
                        this._moveFakeTableHorizontally(scrollPos.x);
                        this._moveFakeTableTop(scrollPos.y);
                        this.callBase()
                    },
                    renderScrollable() {
                        this._groupElement.dxScrollable({
                            useNative: this.getUseNativeValue(),
                            useSimulatedScrollbar: false,
                            rtlEnabled: this.component.option("rtlEnabled"),
                            bounceEnabled: false,
                            updateManually: true
                        })
                    },
                    getUseNativeValue() {
                        const {
                            useNative: useNative
                        } = this.component.option("scrolling");
                        return "auto" === useNative ? !!_support.nativeScrolling : !!useNative
                    },
                    getScrollbarWidth() {
                        return this.getUseNativeValue() ? (0, _m_widget_utils.calculateScrollbarWidth)() : 0
                    },
                    updateScrollableOptions(_ref) {
                        let {
                            direction: direction,
                            rtlEnabled: rtlEnabled
                        } = _ref;
                        const scrollable = this._getScrollable();
                        scrollable.option("useNative", this.getUseNativeValue());
                        scrollable.option({
                            direction: direction,
                            rtlEnabled: rtlEnabled
                        })
                    },
                    getScrollableDirection(horizontal, vertical) {
                        if (horizontal && !vertical) {
                            return "horizontal"
                        }
                        if (!horizontal && vertical) {
                            return "vertical"
                        }
                        return "both"
                    },
                    reset() {
                        this.callBase();
                        if (this._virtualContent) {
                            this._virtualContent.parent().css("height", "auto")
                        }
                    },
                    setVirtualContentParams(params) {
                        this.callBase(params);
                        this._virtualContent.parent().css("height", params.height);
                        this._setTableCss({
                            top: params.top,
                            left: params.left
                        })
                    }
                });
                exports.DataArea = DataArea;
                var _default = {
                    DataArea: DataArea
                };
                exports.default = _default
            },
        9517:
            /*!**************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/data_controller/m_data_controller.js ***!
              \**************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = exports.DataController__internals = exports.DataController = void 0;
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../../../core/class */ 38377));
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/callbacks */ 44504));
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _string = __webpack_require__( /*! ../../../../core/utils/string */ 68752);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _m_state_storing_core = _interopRequireDefault(__webpack_require__( /*! ../../../grids/grid_core/state_storing/m_state_storing_core */ 84651));
                var _m_virtual_columns_core = __webpack_require__( /*! ../../../grids/grid_core/virtual_columns/m_virtual_columns_core */ 44980);
                var _m_virtual_scrolling_core = _interopRequireDefault(__webpack_require__( /*! ../../../grids/grid_core/virtual_scrolling/m_virtual_scrolling_core */ 86770));
                var _m_data_source = __webpack_require__( /*! ../data_source/m_data_source */ 16710);
                var _m_widget_utils = __webpack_require__( /*! ../m_widget_utils */ 28580);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const math = Math;
                const proxyMethod = function(instance, methodName, defaultResult) {
                    if (!instance[methodName]) {
                        instance[methodName] = function() {
                            const dataSource = this._dataSource;
                            return dataSource ? dataSource[methodName].apply(dataSource, arguments) : defaultResult
                        }
                    }
                };
                const DataController = _class.default.inherit(function() {
                    function formatCellValue(value, dataField, errorText) {
                        return "#N/A" === value ? errorText : (0, _m_widget_utils.formatValue)(value, dataField)
                    }
                    const createHeaderInfo = function() {
                        const addInfoItem = function(info, options) {
                            const breadth = options.lastIndex - options.index || 1;
                            const itemInfo = function(headerItem, breadth, isHorizontal, isTree) {
                                const infoItem = {
                                    type: headerItem.type,
                                    text: headerItem.text
                                };
                                if (headerItem.path) {
                                    infoItem.path = headerItem.path
                                }
                                if (headerItem.width) {
                                    infoItem.width = headerItem.width
                                }
                                if ((0, _type.isDefined)(headerItem.wordWrapEnabled)) {
                                    infoItem.wordWrapEnabled = headerItem.wordWrapEnabled
                                }
                                if (headerItem.isLast) {
                                    infoItem.isLast = true
                                }
                                if (headerItem.sorted) {
                                    infoItem.sorted = true
                                }
                                if (headerItem.isMetric) {
                                    infoItem.dataIndex = headerItem.dataIndex
                                }
                                if ((0, _type.isDefined)(headerItem.expanded)) {
                                    infoItem.expanded = headerItem.expanded
                                }
                                if (breadth > 1) {
                                    infoItem[isHorizontal ? "colspan" : "rowspan"] = breadth
                                }
                                if (headerItem.depthSize && headerItem.depthSize > 1) {
                                    infoItem[isHorizontal ? "rowspan" : "colspan"] = headerItem.depthSize
                                }
                                if (headerItem.index >= 0) {
                                    infoItem.dataSourceIndex = headerItem.index
                                }
                                if (isTree && headerItem.children && headerItem.children.length && !headerItem.children[0].isMetric) {
                                    infoItem.width = null;
                                    infoItem.isWhiteSpace = true
                                }
                                return infoItem
                            }(options.headerItem, breadth, options.isHorizontal, options.isTree);
                            ! function(info, infoItem, itemIndex, depthIndex, isHorizontal) {
                                const index = isHorizontal ? depthIndex : itemIndex;
                                while (!info[index]) {
                                    info.push([])
                                }
                                if (isHorizontal) {
                                    info[index].push(infoItem)
                                } else {
                                    info[index].unshift(infoItem)
                                }
                            }(info, itemInfo, options.index, options.depth, options.isHorizontal);
                            if (!options.headerItem.children || 0 === options.headerItem.children.length) {
                                return options.lastIndex + 1
                            }
                            return options.lastIndex
                        };
                        const getViewHeaderItems = function(headerItems, headerDescriptions, cellDescriptions, depthSize, options) {
                            const cellDescriptionsCount = cellDescriptions.length;
                            const viewHeaderItems = function(headerItems, headerDescriptions) {
                                const headerDescriptionsCount = headerDescriptions && headerDescriptions.length || 0;
                                const childrenStack = [];
                                const d = new _deferred.Deferred;
                                let headerItem;
                                (0, _deferred.when)((0, _m_widget_utils.foreachTreeAsync)(headerItems, (items, index) => {
                                    const item = items[0];
                                    const path = (0, _m_widget_utils.createPath)(items);
                                    headerItem = createHeaderItem(childrenStack, path.length, index);
                                    headerItem.type = "D";
                                    headerItem.value = item.value;
                                    headerItem.path = path;
                                    headerItem.text = item.text;
                                    headerItem.index = item.index;
                                    headerItem.displayText = item.displayText;
                                    headerItem.key = item.key;
                                    headerItem.isEmpty = item.isEmpty;
                                    if (path.length < headerDescriptionsCount && (!item.children || 0 !== item.children.length)) {
                                        headerItem.expanded = !!item.children
                                    }
                                })).done(() => {
                                    d.resolve(createHeaderItem(childrenStack, 0, 0).children || [])
                                });
                                return d
                            }(headerItems, headerDescriptions);
                            const {
                                dataFields: dataFields
                            } = options;
                            const d = new _deferred.Deferred;
                            (0, _deferred.when)(viewHeaderItems).done(viewHeaderItems => {
                                options.notifyProgress(.5);
                                if (options.showGrandTotals) {
                                    viewHeaderItems[!options.showTotalsPrior ? "push" : "unshift"]({
                                        type: "GT",
                                        isEmpty: options.isEmptyGrandTotal
                                    })
                                }
                                const hideTotals = false === options.showTotals || dataFields.length > 0 && dataFields.length === options.hiddenTotals.length;
                                const hideData = dataFields.length > 0 && options.hiddenValues.length === dataFields.length;
                                if (hideData && hideTotals) {
                                    depthSize = 1
                                }
                                if (!hideTotals || "tree" === options.layout) {
                                    ! function(headerItems, headerDescriptions, showTotalsPrior, isTree) {
                                        showTotalsPrior = showTotalsPrior || isTree;
                                        (0, _m_widget_utils.foreachTree)(headerItems, (items, index) => {
                                            const item = items[0];
                                            const parentChildren = (items[1] ? items[1].children : headerItems) || [];
                                            const dataField = headerDescriptions[items.length - 1];
                                            if ("D" === item.type && item.expanded && (false !== dataField.showTotals || isTree)) {
                                                -1 !== index && parentChildren.splice(showTotalsPrior ? index : index + 1, 0, (0, _extend.extend)({}, item, {
                                                    children: null,
                                                    type: "T",
                                                    expanded: showTotalsPrior ? true : null,
                                                    isAdditionalTotal: true
                                                }));
                                                if (showTotalsPrior) {
                                                    item.expanded = null
                                                }
                                            }
                                        })
                                    }(viewHeaderItems, headerDescriptions, options.showTotalsPrior, "tree" === options.layout)
                                }(0, _deferred.when)((0, _m_widget_utils.foreachTreeAsync)(viewHeaderItems, items => {
                                    const item = items[0];
                                    if (!item.children || 0 === item.children.length) {
                                        item.depthSize = depthSize - items.length + 1
                                    }
                                })).done(() => {
                                    if (cellDescriptionsCount > 1) {
                                        ! function(headerItems, cellDescriptions, options) {
                                            (0, _m_widget_utils.foreachTree)(headerItems, items => {
                                                const item = items[0];
                                                let i;
                                                if (!item.children || 0 === item.children.length) {
                                                    item.children = [];
                                                    for (i = 0; i < cellDescriptions.length; i += 1) {
                                                        const isGrandTotal = "GT" === item.type;
                                                        const isTotal = "T" === item.type;
                                                        const isValue = "D" === item.type;
                                                        const columnIsHidden = false === cellDescriptions[i].visible || isGrandTotal && options.hiddenGrandTotals.includes(i) || isTotal && options.hiddenTotals.includes(i) || isValue && options.hiddenValues.includes(i);
                                                        if (columnIsHidden) {
                                                            continue
                                                        }
                                                        item.children.push({
                                                            caption: cellDescriptions[i].caption,
                                                            path: item.path,
                                                            type: item.type,
                                                            value: i,
                                                            index: item.index,
                                                            dataIndex: i,
                                                            isMetric: true,
                                                            isEmpty: item.isEmpty && item.isEmpty[i]
                                                        })
                                                    }
                                                }
                                            })
                                        }(viewHeaderItems, cellDescriptions, options)
                                    }!options.showEmpty && function(headerItems) {
                                        (0, _m_widget_utils.foreachTree)([{
                                            children: headerItems
                                        }], (items, index) => {
                                            const item = items[0];
                                            const parentChildren = (items[1] ? items[1].children : headerItems) || [];
                                            let {
                                                isEmpty: isEmpty
                                            } = item;
                                            if (isEmpty && isEmpty.length) {
                                                isEmpty = item.isEmpty.filter(isEmpty => isEmpty).length === isEmpty.length
                                            }
                                            if (item && !item.children && isEmpty) {
                                                parentChildren.splice(index, 1);
                                                removeEmptyParent(items, 1)
                                            }
                                        })
                                    }(viewHeaderItems);
                                    options.notifyProgress(.75);
                                    (0, _deferred.when)((0, _m_widget_utils.foreachTreeAsync)(viewHeaderItems, items => {
                                        const item = items[0];
                                        const {
                                            isMetric: isMetric
                                        } = item;
                                        const field = headerDescriptions[items.length - 1] || {};
                                        if ("D" === item.type && !isMetric) {
                                            item.width = field.width
                                        }
                                        if (hideData && "D" === item.type) {
                                            const parentChildren = (items[1] ? items[1].children : viewHeaderItems) || [];
                                            parentChildren.splice(parentChildren.indexOf(item), 1);
                                            return
                                        }
                                        if (isMetric) {
                                            item.wordWrapEnabled = cellDescriptions[item.dataIndex].wordWrapEnabled
                                        } else {
                                            item.wordWrapEnabled = field.wordWrapEnabled
                                        }
                                        item.isLast = !item.children || !item.children.length;
                                        if (item.isLast) {
                                            (0, _iterator.each)(options.sortBySummaryPaths, (_, sortBySummaryPath) => {
                                                if (!(0, _type.isDefined)(item.dataIndex)) {
                                                    sortBySummaryPath = sortBySummaryPath.slice(0);
                                                    sortBySummaryPath.pop()
                                                }
                                                if (function(items, sortBySummaryPath) {
                                                        let path;
                                                        const item = items[0];
                                                        const stringValuesUsed = (0, _type.isString)(sortBySummaryPath[0]);
                                                        const headerItem = item.dataIndex >= 0 ? items[1] : item;
                                                        if (stringValuesUsed && -1 !== sortBySummaryPath[0].indexOf("&[") && headerItem.key || !headerItem.key) {
                                                            path = (0, _m_widget_utils.createPath)(items)
                                                        } else {
                                                            path = (0, _iterator.map)(items, item => item.dataIndex >= 0 ? item.value : item.text).reverse()
                                                        }
                                                        if ("GT" === item.type) {
                                                            path = path.slice(1)
                                                        }
                                                        return path.join("/") === sortBySummaryPath.join("/")
                                                    }(items, sortBySummaryPath)) {
                                                    item.sorted = true;
                                                    return false
                                                }
                                                return
                                            })
                                        }
                                        item.text = function(item, description, options) {
                                            let {
                                                text: text
                                            } = item;
                                            if ((0, _type.isDefined)(item.displayText)) {
                                                text = item.displayText
                                            } else if ((0, _type.isDefined)(item.caption)) {
                                                text = item.caption
                                            } else if ("GT" === item.type) {
                                                text = options.texts.grandTotal
                                            }
                                            if (item.isAdditionalTotal) {
                                                text = (0, _string.format)(options.texts.total || "", text)
                                            }
                                            return text
                                        }(item, 0, options)
                                    })).done(() => {
                                        if (!viewHeaderItems.length) {
                                            viewHeaderItems.push({})
                                        }
                                        options.notifyProgress(1);
                                        d.resolve(viewHeaderItems)
                                    })
                                })
                            });
                            return d
                        };

                        function createHeaderItem(childrenStack, depth, index) {
                            const parent = childrenStack[depth] = childrenStack[depth] || [];
                            const node = parent[index] = {};
                            if (childrenStack[depth + 1]) {
                                node.children = childrenStack[depth + 1];
                                for (let i = depth + 1; i < childrenStack.length; i += 1) {
                                    childrenStack[i] = void 0
                                }
                                childrenStack.length = depth + 1
                            }
                            return node
                        }
                        const removeEmptyParent = function(items, index) {
                            const parent = items[index + 1];
                            if (!items[index].children.length && parent && parent.children) {
                                parent.children.splice(parent.children.indexOf(items[index]), 1);
                                removeEmptyParent(items, index + 1)
                            }
                        };
                        return function(headerItems, headerDescriptions, cellDescriptions, isHorizontal, options) {
                            const info = [];
                            const depthSize = function(headerItems) {
                                let depth = 0;
                                (0, _m_widget_utils.foreachTree)(headerItems, items => {
                                    depth = math.max(depth, items.length)
                                });
                                return depth
                            }(headerItems) || 1;
                            const d = new _deferred.Deferred;
                            getViewHeaderItems(headerItems, headerDescriptions, cellDescriptions, depthSize, options).done(viewHeaderItems => {
                                ! function(info, viewHeaderItems, depthSize, isHorizontal, isTree) {
                                    let lastIndex = 0;
                                    let index;
                                    let depth;
                                    const indexesByDepth = [0];
                                    (0, _m_widget_utils.foreachTree)(viewHeaderItems, items => {
                                        const headerItem = items[0];
                                        depth = headerItem.isMetric ? depthSize : items.length - 1;
                                        while (indexesByDepth.length - 1 < depth) {
                                            indexesByDepth.push(indexesByDepth[indexesByDepth.length - 1])
                                        }
                                        index = indexesByDepth[depth] || 0;
                                        lastIndex = addInfoItem(info, {
                                            headerItem: headerItem,
                                            index: index,
                                            lastIndex: lastIndex,
                                            depth: depth,
                                            isHorizontal: isHorizontal,
                                            isTree: isTree
                                        });
                                        indexesByDepth.length = depth;
                                        indexesByDepth.push(lastIndex)
                                    })
                                }(info, viewHeaderItems, depthSize, isHorizontal, "tree" === options.layout);
                                options.notifyProgress(1);
                                d.resolve(info)
                            });
                            return d
                        }
                    }();

                    function createSortPaths(headerFields, dataFields) {
                        const sortBySummaryPaths = [];
                        (0, _iterator.each)(headerFields, (_, headerField) => {
                            const fieldIndex = (0, _m_widget_utils.findField)(dataFields, headerField.sortBySummaryField);
                            if (fieldIndex >= 0) {
                                sortBySummaryPaths.push((headerField.sortBySummaryPath || []).concat([fieldIndex]))
                            }
                        });
                        return sortBySummaryPaths
                    }

                    function foreachRowInfo(rowsInfo, callback) {
                        let columnOffset = 0;
                        const columnOffsetResetIndexes = [];
                        for (let i = 0; i < rowsInfo.length; i += 1) {
                            for (let j = 0; j < rowsInfo[i].length; j += 1) {
                                const rowSpanOffset = (rowsInfo[i][j].rowspan || 1) - 1;
                                const visibleIndex = i + rowSpanOffset;
                                if (columnOffsetResetIndexes[i]) {
                                    columnOffset -= columnOffsetResetIndexes[i];
                                    columnOffsetResetIndexes[i] = 0
                                }
                                if (false === callback(rowsInfo[i][j], visibleIndex, i, j, columnOffset)) {
                                    break
                                }
                                columnOffsetResetIndexes[i + (rowsInfo[i][j].rowspan || 1)] = (columnOffsetResetIndexes[i + (rowsInfo[i][j].rowspan || 1)] || 0) + 1;
                                columnOffset += 1
                            }
                        }
                    }

                    function getHeaderIndexedItems(headerItems, options) {
                        let visibleIndex = 0;
                        const indexedItems = [];
                        (0, _m_widget_utils.foreachTree)(headerItems, items => {
                            const headerItem = items[0];
                            const path = (0, _m_widget_utils.createPath)(items);
                            if (headerItem.children && false === options.showTotals) {
                                return
                            }
                            const indexedItem = (0, _extend.extend)(true, {}, headerItem, {
                                visibleIndex: visibleIndex += 1,
                                path: path
                            });
                            if ((0, _type.isDefined)(indexedItem.index)) {
                                indexedItems[indexedItem.index] = indexedItem
                            } else {
                                indexedItems.push(indexedItem)
                            }
                        });
                        return indexedItems
                    }

                    function createScrollController(dataController, component, dataAdapter) {
                        return new _m_virtual_scrolling_core.default.VirtualScrollController(component, (0, _extend.extend)({
                            hasKnownLastPage: () => true,
                            pageCount() {
                                return math.ceil(this.totalItemsCount() / this.pageSize())
                            },
                            updateLoading() {},
                            itemsCount() {
                                if (this.pageIndex() < this.pageCount() - 1) {
                                    return this.pageSize()
                                }
                                return this.totalItemsCount() % this.pageSize()
                            },
                            items: () => [],
                            viewportItems: () => [],
                            onChanged() {},
                            isLoading: () => dataController.isLoading(),
                            changingDuration() {
                                const dataSource = dataController._dataSource;
                                if (dataSource.paginate()) {
                                    return 300
                                }
                                return dataController._changingDuration || 0
                            }
                        }, dataAdapter))
                    }
                    const members = {
                        ctor(options) {
                            const that = this;
                            const virtualScrollControllerChanged = that._fireChanged.bind(that);
                            options = that._options = options || {};
                            that.dataSourceChanged = (0, _callbacks.default)();
                            that._dataSource = that._createDataSource(options);
                            if (options.component && "virtual" === options.component.option("scrolling.mode")) {
                                that._rowsScrollController = createScrollController(that, options.component, {
                                    totalItemsCount: () => that.totalRowCount(),
                                    pageIndex: index => that.rowPageIndex(index),
                                    pageSize: () => that.rowPageSize(),
                                    load() {
                                        if (that._rowsScrollController.pageIndex() >= this.pageCount()) {
                                            that._rowsScrollController.pageIndex(this.pageCount() - 1)
                                        }
                                        return that._rowsScrollController.handleDataChanged((function() {
                                            if (that._dataSource.paginate()) {
                                                that._dataSource.load()
                                            } else {
                                                virtualScrollControllerChanged.apply(this, arguments)
                                            }
                                        }))
                                    }
                                });
                                that._columnsScrollController = createScrollController(that, options.component, {
                                    totalItemsCount: () => that.totalColumnCount(),
                                    pageIndex: index => that.columnPageIndex(index),
                                    pageSize: () => that.columnPageSize(),
                                    load() {
                                        if (that._columnsScrollController.pageIndex() >= this.pageCount()) {
                                            that._columnsScrollController.pageIndex(this.pageCount() - 1)
                                        }
                                        return that._columnsScrollController.handleDataChanged((function() {
                                            if (that._dataSource.paginate()) {
                                                that._dataSource.load()
                                            } else {
                                                virtualScrollControllerChanged.apply(this, arguments)
                                            }
                                        }))
                                    }
                                })
                            }
                            that._stateStoringController = new _m_state_storing_core.default.StateStoringController(options.component).init();
                            that._columnsInfo = [];
                            that._rowsInfo = [];
                            that._cellsInfo = [];
                            that.expandValueChanging = (0, _callbacks.default)();
                            that.loadingChanged = (0, _callbacks.default)();
                            that.progressChanged = (0, _callbacks.default)();
                            that.scrollChanged = (0, _callbacks.default)();
                            that.load();
                            that._update();
                            that.changed = (0, _callbacks.default)()
                        },
                        _fireChanged() {
                            const startChanging = new Date;
                            this.changed && !this._lockChanged && this.changed.fire();
                            this._changingDuration = new Date - startChanging
                        },
                        _correctSkipsTakes(rowIndex, rowSkip, rowSpan, levels, skips, takes) {
                            const endIndex = rowSpan ? rowIndex + rowSpan - 1 : rowIndex;
                            skips[levels.length] = skips[levels.length] || 0;
                            takes[levels.length] = takes[levels.length] || 0;
                            if (endIndex < rowSkip) {
                                skips[levels.length] += 1
                            } else {
                                takes[levels.length] += 1
                            }
                        },
                        _calculatePagingForRowExpandedPaths(options, skips, takes, rowExpandedSkips, rowExpandedTakes) {
                            const rows = this._rowsInfo;
                            const rowCount = Math.min(options.rowSkip + options.rowTake, rows.length);
                            const {
                                rowExpandedPaths: rowExpandedPaths
                            } = options;
                            let levels = [];
                            const expandedPathIndexes = {};
                            let i;
                            let j;
                            let path;
                            rowExpandedPaths.forEach((path, index) => {
                                expandedPathIndexes[path] = index
                            });
                            for (i = 0; i < rowCount; i += 1) {
                                takes.length = skips.length = levels.length + 1;
                                for (j = 0; j < rows[i].length; j += 1) {
                                    const cell = rows[i][j];
                                    if ("D" === cell.type) {
                                        this._correctSkipsTakes(i, options.rowSkip, cell.rowspan, levels, skips, takes);
                                        path = cell.path || path;
                                        const expandIndex = path && path.length > 1 ? expandedPathIndexes[path.slice(0, -1)] : -1;
                                        if (expandIndex >= 0) {
                                            rowExpandedSkips[expandIndex] = skips[levels.length] || 0;
                                            rowExpandedTakes[expandIndex] = takes[levels.length] || 0
                                        }
                                        if (cell.rowspan) {
                                            levels.push(cell.rowspan)
                                        }
                                    }
                                }
                                levels = levels.map(level => level - 1).filter(level => level > 0)
                            }
                        },
                        _calculatePagingForColumnExpandedPaths(options, skips, takes, expandedSkips, expandedTakes) {
                            const skipByPath = {};
                            const takeByPath = {};
                            (0, _m_virtual_columns_core.foreachColumnInfo)(this._columnsInfo, (columnInfo, columnIndex) => {
                                if ("D" === columnInfo.type && columnInfo.path && void 0 === columnInfo.dataIndex) {
                                    const colspan = columnInfo.colspan || 1;
                                    const path = columnInfo.path.slice(0, -1).toString();
                                    skipByPath[path] = skipByPath[path] || 0;
                                    takeByPath[path] = takeByPath[path] || 0;
                                    if (columnIndex + colspan <= options.columnSkip) {
                                        skipByPath[path] += 1
                                    } else if (columnIndex < options.columnSkip + options.columnTake) {
                                        takeByPath[path] += 1
                                    }
                                }
                            });
                            skips[0] = skipByPath[""];
                            takes[0] = takeByPath[""];
                            options.columnExpandedPaths.forEach((path, index) => {
                                const skip = skipByPath[path];
                                const take = takeByPath[path];
                                if (void 0 !== skip) {
                                    expandedSkips[index] = skip
                                }
                                if (void 0 !== take) {
                                    expandedTakes[index] = take
                                }
                            })
                        },
                        _processPagingForExpandedPaths(options, area, storeLoadOptions, reload) {
                            const expandedPaths = options["".concat(area, "ExpandedPaths")];
                            const expandedSkips = expandedPaths.map(() => 0);
                            const expandedTakes = expandedPaths.map(() => reload ? options.pageSize : 0);
                            const skips = [];
                            const takes = [];
                            if (!reload) {
                                if ("row" === area) {
                                    this._calculatePagingForRowExpandedPaths(options, skips, takes, expandedSkips, expandedTakes)
                                } else {
                                    this._calculatePagingForColumnExpandedPaths(options, skips, takes, expandedSkips, expandedTakes)
                                }
                            }
                            this._savePagingForExpandedPaths(options, area, storeLoadOptions, skips[0], takes[0], expandedSkips, expandedTakes)
                        },
                        _savePagingForExpandedPaths(options, area, storeLoadOptions, skip, take, expandedSkips, expandedTakes) {
                            const expandedPaths = options["".concat(area, "ExpandedPaths")];
                            options["".concat(area, "ExpandedPaths")] = [];
                            options["".concat(area, "Skip")] = void 0 !== skip ? skip : options["".concat(area, "Skip")];
                            options["".concat(area, "Take")] = void 0 !== take ? take : options["".concat(area, "Take")];
                            for (let i = 0; i < expandedPaths.length; i += 1) {
                                if (expandedTakes[i]) {
                                    const isOppositeArea = options.area && options.area !== area;
                                    storeLoadOptions.push((0, _extend.extend)({
                                        area: area,
                                        headerName: "".concat(area, "s")
                                    }, options, {
                                        ["".concat(area, "Skip")]: expandedSkips[i],
                                        ["".concat(area, "Take")]: expandedTakes[i],
                                        [isOppositeArea ? "oppositePath" : "path"]: expandedPaths[i]
                                    }))
                                }
                            }
                        },
                        _handleCustomizeStoreLoadOptions(storeLoadOptions, reload) {
                            const options = storeLoadOptions[0];
                            const rowsScrollController = this._rowsScrollController;
                            if (this._dataSource.paginate() && rowsScrollController) {
                                const rowPageSize = rowsScrollController.pageSize();
                                if ("rows" === options.headerName) {
                                    options.rowSkip = 0;
                                    options.rowTake = rowPageSize;
                                    options.rowExpandedPaths = []
                                } else {
                                    options.rowSkip = rowsScrollController.beginPageIndex() * rowPageSize;
                                    options.rowTake = (rowsScrollController.endPageIndex() - rowsScrollController.beginPageIndex() + 1) * rowPageSize;
                                    this._processPagingForExpandedPaths(options, "row", storeLoadOptions, reload)
                                }
                            }
                            const columnsScrollController = this._columnsScrollController;
                            if (this._dataSource.paginate() && columnsScrollController) {
                                const columnPageSize = columnsScrollController.pageSize();
                                storeLoadOptions.forEach(options => {
                                    if ("columns" === options.headerName) {
                                        options.columnSkip = 0;
                                        options.columnTake = columnPageSize;
                                        options.columnExpandedPaths = []
                                    } else {
                                        options.columnSkip = columnsScrollController.beginPageIndex() * columnPageSize;
                                        options.columnTake = (columnsScrollController.endPageIndex() - columnsScrollController.beginPageIndex() + 1) * columnPageSize;
                                        this._processPagingForExpandedPaths(options, "column", storeLoadOptions, reload)
                                    }
                                })
                            }
                        },
                        load() {
                            const that = this;
                            const stateStoringController = this._stateStoringController;
                            if (stateStoringController.isEnabled() && !stateStoringController.isLoaded()) {
                                stateStoringController.load().always(state => {
                                    if (state) {
                                        that._dataSource.state(state)
                                    } else {
                                        that._dataSource.load()
                                    }
                                })
                            } else {
                                that._dataSource.load()
                            }
                        },
                        calculateVirtualContentParams(contentParams) {
                            const that = this;
                            const rowsScrollController = that._rowsScrollController;
                            const columnsScrollController = that._columnsScrollController;
                            if (rowsScrollController && columnsScrollController) {
                                rowsScrollController.viewportItemSize(contentParams.virtualRowHeight);
                                rowsScrollController.viewportSize(contentParams.viewportHeight / rowsScrollController.viewportItemSize());
                                rowsScrollController.setContentItemSizes(contentParams.itemHeights);
                                columnsScrollController.viewportItemSize(contentParams.virtualColumnWidth);
                                columnsScrollController.viewportSize(contentParams.viewportWidth / columnsScrollController.viewportItemSize());
                                columnsScrollController.setContentItemSizes(contentParams.itemWidths);
                                (0, _common.deferUpdate)(() => {
                                    columnsScrollController.loadIfNeed();
                                    rowsScrollController.loadIfNeed()
                                });
                                that.scrollChanged.fire({
                                    left: columnsScrollController.getViewportPosition(),
                                    top: rowsScrollController.getViewportPosition()
                                });
                                return {
                                    contentTop: rowsScrollController.getContentOffset(),
                                    contentLeft: columnsScrollController.getContentOffset(),
                                    width: columnsScrollController.getVirtualContentSize(),
                                    height: rowsScrollController.getVirtualContentSize()
                                }
                            }
                            return
                        },
                        setViewportPosition(left, top) {
                            this._rowsScrollController.setViewportPosition(top || 0);
                            this._columnsScrollController.setViewportPosition(left || 0)
                        },
                        subscribeToWindowScrollEvents($element) {
                            var _a;
                            null === (_a = this._rowsScrollController) || void 0 === _a ? void 0 : _a.subscribeToWindowScrollEvents($element)
                        },
                        updateWindowScrollPosition(position) {
                            var _a;
                            null === (_a = this._rowsScrollController) || void 0 === _a ? void 0 : _a.scrollTo(position)
                        },
                        updateViewOptions(options) {
                            (0, _extend.extend)(this._options, options);
                            this._update()
                        },
                        _handleExpandValueChanging(e) {
                            this.expandValueChanging.fire(e)
                        },
                        _handleLoadingChanged(isLoading) {
                            this.loadingChanged.fire(isLoading)
                        },
                        _handleProgressChanged(progress) {
                            this.progressChanged.fire(progress)
                        },
                        _handleFieldsPrepared(e) {
                            this._options.onFieldsPrepared && this._options.onFieldsPrepared(e)
                        },
                        _createDataSource(options) {
                            const that = this;
                            const dataSourceOptions = options.dataSource;
                            let dataSource;
                            that._isSharedDataSource = dataSourceOptions instanceof _m_data_source.PivotGridDataSource;
                            if (that._isSharedDataSource) {
                                dataSource = dataSourceOptions
                            } else {
                                dataSource = new _m_data_source.PivotGridDataSource(dataSourceOptions)
                            }
                            that._expandValueChangingHandler = that._handleExpandValueChanging.bind(that);
                            that._loadingChangedHandler = that._handleLoadingChanged.bind(that);
                            that._fieldsPreparedHandler = that._handleFieldsPrepared.bind(that);
                            that._customizeStoreLoadOptionsHandler = that._handleCustomizeStoreLoadOptions.bind(that);
                            that._changedHandler = function() {
                                that._update();
                                that.dataSourceChanged.fire()
                            };
                            that._progressChangedHandler = function(progress) {
                                that._handleProgressChanged(.8 * progress)
                            };
                            dataSource.on("changed", that._changedHandler);
                            dataSource.on("expandValueChanging", that._expandValueChangingHandler);
                            dataSource.on("loadingChanged", that._loadingChangedHandler);
                            dataSource.on("progressChanged", that._progressChangedHandler);
                            dataSource.on("fieldsPrepared", that._fieldsPreparedHandler);
                            dataSource.on("customizeStoreLoadOptions", that._customizeStoreLoadOptionsHandler);
                            return dataSource
                        },
                        getDataSource() {
                            return this._dataSource
                        },
                        isLoading() {
                            return this._dataSource.isLoading()
                        },
                        beginLoading() {
                            this._dataSource.beginLoading()
                        },
                        endLoading() {
                            this._dataSource.endLoading()
                        },
                        _update() {
                            const that = this;
                            const dataSource = that._dataSource;
                            const options = that._options;
                            const columnFields = dataSource.getAreaFields("column");
                            const rowFields = dataSource.getAreaFields("row");
                            const dataFields = dataSource.getAreaFields("data");
                            const dataFieldsForRows = "row" === options.dataFieldArea ? dataFields : [];
                            const dataFieldsForColumns = "row" !== options.dataFieldArea ? dataFields : [];
                            const data = dataSource.getData();
                            const hiddenTotals = function(dataFields) {
                                const result = [];
                                (0, _iterator.each)(dataFields, (index, field) => {
                                    if (false === field.showTotals) {
                                        result.push(index)
                                    }
                                });
                                return result
                            }(dataFields);
                            const hiddenValues = function(dataFields) {
                                const result = [];
                                dataFields.forEach((field, index) => {
                                    if (void 0 === field.showValues && false === field.showTotals || false === field.showValues) {
                                        result.push(index)
                                    }
                                });
                                return result
                            }(dataFields);
                            const hiddenGrandTotals = function(dataFields, columnFields) {
                                let result = [];
                                (0, _iterator.each)(dataFields, (index, field) => {
                                    if (false === field.showGrandTotals) {
                                        result.push(index)
                                    }
                                });
                                if (0 === columnFields.length && result.length === dataFields.length) {
                                    result = []
                                }
                                return result
                            }(dataFields, columnFields);
                            const grandTotalsAreHiddenForNotAllDataFields = dataFields.length > 0 ? hiddenGrandTotals.length !== dataFields.length : true;
                            const rowOptions = {
                                isEmptyGrandTotal: data.isEmptyGrandTotalRow,
                                texts: options.texts || {},
                                hiddenTotals: hiddenTotals,
                                hiddenValues: hiddenValues,
                                hiddenGrandTotals: [],
                                showTotals: options.showRowTotals,
                                showGrandTotals: false !== options.showRowGrandTotals && grandTotalsAreHiddenForNotAllDataFields,
                                sortBySummaryPaths: createSortPaths(columnFields, dataFields),
                                showTotalsPrior: "rows" === options.showTotalsPrior || "both" === options.showTotalsPrior,
                                showEmpty: !options.hideEmptySummaryCells,
                                layout: options.rowHeaderLayout,
                                fields: rowFields,
                                dataFields: dataFields,
                                progress: 0
                            };
                            const columnOptions = {
                                isEmptyGrandTotal: data.isEmptyGrandTotalColumn,
                                texts: options.texts || {},
                                hiddenTotals: hiddenTotals,
                                hiddenValues: hiddenValues,
                                hiddenGrandTotals: hiddenGrandTotals,
                                showTotals: options.showColumnTotals,
                                showTotalsPrior: "columns" === options.showTotalsPrior || "both" === options.showTotalsPrior,
                                showGrandTotals: false !== options.showColumnGrandTotals && grandTotalsAreHiddenForNotAllDataFields,
                                sortBySummaryPaths: createSortPaths(rowFields, dataFields),
                                showEmpty: !options.hideEmptySummaryCells,
                                fields: columnFields,
                                dataFields: dataFields,
                                progress: 0
                            };
                            const notifyProgress = function(progress) {
                                this.progress = progress;
                                that._handleProgressChanged(.8 + .1 * rowOptions.progress + .1 * columnOptions.progress)
                            };
                            rowOptions.notifyProgress = notifyProgress;
                            columnOptions.notifyProgress = notifyProgress;
                            if (!(0, _type.isDefined)(data.grandTotalRowIndex)) {
                                data.grandTotalRowIndex = getHeaderIndexedItems(data.rows, rowOptions).length
                            }
                            if (!(0, _type.isDefined)(data.grandTotalColumnIndex)) {
                                data.grandTotalColumnIndex = getHeaderIndexedItems(data.columns, columnOptions).length
                            }
                            dataSource._changeLoadingCount(1);
                            (0, _deferred.when)(createHeaderInfo(data.columns, columnFields, dataFieldsForColumns, true, columnOptions), createHeaderInfo(data.rows, rowFields, dataFieldsForRows, false, rowOptions)).always(() => {
                                dataSource._changeLoadingCount(-1)
                            }).done((columnsInfo, rowsInfo) => {
                                that._columnsInfo = columnsInfo;
                                that._rowsInfo = rowsInfo;
                                if (that._rowsScrollController && that._columnsScrollController && that.changed && !that._dataSource.paginate()) {
                                    that._rowsScrollController.reset(true);
                                    that._columnsScrollController.reset(true);
                                    that._lockChanged = true;
                                    that._rowsScrollController.load();
                                    that._columnsScrollController.load();
                                    that._lockChanged = false
                                }
                            }).done(() => {
                                that._fireChanged();
                                if (that._stateStoringController.isEnabled() && !that._dataSource.isLoading()) {
                                    that._stateStoringController.state(that._dataSource.state());
                                    that._stateStoringController.save()
                                }
                            })
                        },
                        getRowsInfo(getAllData) {
                            const that = this;
                            const rowsInfo = that._rowsInfo;
                            const scrollController = that._rowsScrollController;
                            let rowspan;
                            if (scrollController && !getAllData) {
                                const startIndex = scrollController.beginPageIndex() * that.rowPageSize();
                                const endIndex = scrollController.endPageIndex() * that.rowPageSize() + that.rowPageSize();
                                const newRowsInfo = [];
                                let maxDepth = 1;
                                foreachRowInfo(rowsInfo, (rowInfo, visibleIndex, rowIndex, _, columnIndex) => {
                                    const isVisible = visibleIndex >= startIndex && rowIndex < endIndex;
                                    const index = rowIndex < startIndex ? 0 : rowIndex - startIndex;
                                    let cell = rowInfo;
                                    if (isVisible) {
                                        newRowsInfo[index] = newRowsInfo[index] || [];
                                        rowspan = rowIndex < startIndex ? rowInfo.rowspan - (startIndex - rowIndex) || 1 : rowInfo.rowspan;
                                        if (startIndex + index + rowspan > endIndex) {
                                            rowspan = endIndex - (index + startIndex) || 1
                                        }
                                        if (rowspan !== rowInfo.rowspan) {
                                            cell = (0, _extend.extend)({}, cell, {
                                                rowspan: rowspan
                                            })
                                        }
                                        newRowsInfo[index].push(cell);
                                        maxDepth = math.max(maxDepth, columnIndex + 1)
                                    } else {
                                        return false
                                    }
                                    return
                                });
                                foreachRowInfo(newRowsInfo, (rowInfo, visibleIndex, rowIndex, columnIndex, realColumnIndex) => {
                                    const colspan = rowInfo.colspan || 1;
                                    if (realColumnIndex + colspan > maxDepth) {
                                        newRowsInfo[rowIndex][columnIndex] = (0, _extend.extend)({}, rowInfo, {
                                            colspan: maxDepth - realColumnIndex || 1
                                        })
                                    }
                                });
                                return newRowsInfo
                            }
                            return rowsInfo
                        },
                        getColumnsInfo(getAllData) {
                            const that = this;
                            let info = that._columnsInfo;
                            const scrollController = that._columnsScrollController;
                            if (scrollController && !getAllData) {
                                const startIndex = scrollController.beginPageIndex() * that.columnPageSize();
                                const endIndex = scrollController.endPageIndex() * that.columnPageSize() + that.columnPageSize();
                                info = (0, _m_virtual_columns_core.createColumnsInfo)(info, startIndex, endIndex)
                            }
                            return info
                        },
                        totalRowCount() {
                            return this._rowsInfo.length
                        },
                        rowPageIndex(index) {
                            if (void 0 !== index) {
                                this._rowPageIndex = index
                            }
                            return this._rowPageIndex || 0
                        },
                        totalColumnCount() {
                            let count = 0;
                            if (this._columnsInfo && this._columnsInfo.length) {
                                for (let i = 0; i < this._columnsInfo[0].length; i += 1) {
                                    count += this._columnsInfo[0][i].colspan || 1
                                }
                            }
                            return count
                        },
                        rowPageSize(size) {
                            if (void 0 !== size) {
                                this._rowPageSize = size
                            }
                            return this._rowPageSize || 20
                        },
                        columnPageSize(size) {
                            if (void 0 !== size) {
                                this._columnPageSize = size
                            }
                            return this._columnPageSize || 20
                        },
                        columnPageIndex(index) {
                            if (void 0 !== index) {
                                this._columnPageIndex = index
                            }
                            return this._columnPageIndex || 0
                        },
                        getCellsInfo(getAllData) {
                            const rowsInfo = this.getRowsInfo(getAllData);
                            const columnsInfo = this.getColumnsInfo(getAllData);
                            const data = this._dataSource.getData();
                            const texts = this._options.texts || {};
                            return function(rowsInfo, columnsInfo, data, dataFields, dataFieldArea, errorText) {
                                const info = [];
                                const dataFieldAreaInRows = "row" === dataFieldArea;
                                const dataSourceCells = data.values;
                                dataSourceCells.length && foreachRowInfo(rowsInfo, (rowInfo, rowIndex) => {
                                    const row = info[rowIndex] = [];
                                    const dataRow = dataSourceCells[rowInfo.dataSourceIndex >= 0 ? rowInfo.dataSourceIndex : data.grandTotalRowIndex] || [];
                                    rowInfo.isLast && (0, _m_virtual_columns_core.foreachColumnInfo)(columnsInfo, (columnInfo, columnIndex) => {
                                        const dataIndex = (dataFieldAreaInRows ? rowInfo.dataIndex : columnInfo.dataIndex) || 0;
                                        const dataField = dataFields[dataIndex];
                                        if (columnInfo.isLast && dataField && false !== dataField.visible) {
                                            let cell = dataRow[columnInfo.dataSourceIndex >= 0 ? columnInfo.dataSourceIndex : data.grandTotalColumnIndex];
                                            if (!Array.isArray(cell)) {
                                                cell = [cell]
                                            }
                                            const cellValue = cell[dataIndex];
                                            row[columnIndex] = {
                                                text: formatCellValue(cellValue, dataField, errorText),
                                                value: cellValue,
                                                format: dataField.format,
                                                dataType: dataField.dataType,
                                                columnType: columnInfo.type,
                                                rowType: rowInfo.type,
                                                rowPath: rowInfo.path || [],
                                                columnPath: columnInfo.path || [],
                                                dataIndex: dataIndex
                                            };
                                            if (dataField.width) {
                                                row[columnIndex].width = dataField.width
                                            }
                                        }
                                    })
                                });
                                return info
                            }(rowsInfo, columnsInfo, data, this._dataSource.getAreaFields("data"), this._options.dataFieldArea, texts.dataNotAvailable)
                        },
                        dispose() {
                            const that = this;
                            if (that._isSharedDataSource) {
                                that._dataSource.off("changed", that._changedHandler);
                                that._dataSource.off("expandValueChanging", that._expandValueChangingHandler);
                                that._dataSource.off("loadingChanged", that._loadingChangedHandler);
                                that._dataSource.off("progressChanged", that._progressChangedHandler);
                                that._dataSource.off("fieldsPrepared", that._fieldsPreparedHandler);
                                that._dataSource.off("customizeStoreLoadOptions", that._customizeStoreLoadOptionsHandler)
                            } else {
                                that._dataSource.dispose()
                            }
                            that._columnsScrollController && that._columnsScrollController.dispose();
                            that._rowsScrollController && that._rowsScrollController.dispose();
                            that._stateStoringController.dispose();
                            that.expandValueChanging.empty();
                            that.changed.empty();
                            that.loadingChanged.empty();
                            that.progressChanged.empty();
                            that.scrollChanged.empty();
                            that.dataSourceChanged.empty()
                        }
                    };
                    proxyMethod(members, "applyPartialDataSource");
                    proxyMethod(members, "collapseHeaderItem");
                    proxyMethod(members, "expandHeaderItem");
                    proxyMethod(members, "getData");
                    proxyMethod(members, "isEmpty");
                    return members
                }());
                exports.DataController = DataController;
                const DataController__internals = {
                    NO_DATA_AVAILABLE_TEXT: "#N/A"
                };
                exports.DataController__internals = DataController__internals;
                var _default = {
                    DataController: DataController,
                    DataController__internals: DataController__internals
                };
                exports.default = _default
            },
        16710:
            /*!******************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/data_source/m_data_source.js ***!
              \******************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = exports.PivotGridDataSource = void 0;
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../../../core/class */ 38377));
                var _events_strategy = __webpack_require__( /*! ../../../../core/events_strategy */ 80566);
                var _array = __webpack_require__( /*! ../../../../core/utils/array */ 89386);
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _inflector = __webpack_require__( /*! ../../../../core/utils/inflector */ 78008);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _abstract_store = _interopRequireDefault(__webpack_require__( /*! ../../../../data/abstract_store */ 67403));
                var _utils = __webpack_require__( /*! ../../../../data/data_source/utils */ 9234);
                var _m_local_store = __webpack_require__( /*! ../local_store/m_local_store */ 16564);
                var _m_widget_utils = __webpack_require__( /*! ../m_widget_utils */ 28580);
                var _m_remote_store = __webpack_require__( /*! ../remote_store/m_remote_store */ 2166);
                var _m_summary_display_modes = _interopRequireDefault(__webpack_require__( /*! ../summary_display_modes/m_summary_display_modes */ 42717));
                var _m_xmla_store = _interopRequireDefault(__webpack_require__( /*! ../xmla_store/m_xmla_store */ 79755));
                var _m_data_source_utils = __webpack_require__( /*! ./m_data_source_utils */ 91629);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const DESCRIPTION_NAME_BY_AREA = {
                    row: "rows",
                    column: "columns",
                    data: "values",
                    filter: "filters"
                };
                const STATE_PROPERTIES = ["area", "areaIndex", "sortOrder", "filterType", "filterValues", "sortBy", "sortBySummaryField", "sortBySummaryPath", "expanded", "summaryType", "summaryDisplayMode"];
                const CALCULATED_PROPERTIES = ["format", "selector", "customizeText", "caption"];
                const ALL_CALCULATED_PROPERTIES = CALCULATED_PROPERTIES.concat(["allowSorting", "allowSortingBySummary", "allowFiltering", "allowExpandAll"]);

                function resetFieldState(field, properties) {
                    const initialProperties = field._initProperties || {};
                    (0, _iterator.each)(properties, (_, prop) => {
                        if (Object.prototype.hasOwnProperty.call(initialProperties, prop)) {
                            field[prop] = initialProperties[prop]
                        }
                    })
                }

                function updateCalculatedFieldProperties(field, calculatedProperties) {
                    resetFieldState(field, calculatedProperties);
                    if (!(0, _type.isDefined)(field.caption)) {
                        (0, _m_widget_utils.setFieldProperty)(field, "caption", function(field) {
                            let caption = field.dataField || field.groupName || "";
                            let summaryType = (field.summaryType || "").toLowerCase();
                            if ((0, _type.isString)(field.groupInterval)) {
                                caption += "_".concat(field.groupInterval)
                            }
                            if (summaryType && "custom" !== summaryType) {
                                summaryType = summaryType.replace(/^./, summaryType[0].toUpperCase());
                                if (caption.length) {
                                    summaryType = " (".concat(summaryType, ")")
                                }
                            } else {
                                summaryType = ""
                            }
                            return (0, _inflector.titleize)(caption) + summaryType
                        }(field))
                    }
                }

                function isDataExists(data) {
                    return data.rows.length || data.columns.length || data.values.length
                }
                const PivotGridDataSource = _class.default.inherit(function() {
                    const findHeaderItem = function(headerItems, path) {
                        if (headerItems._cacheByPath) {
                            return headerItems._cacheByPath[path.join(".")] || null
                        }
                        return
                    };
                    const getHeaderItemsLastIndex = function(headerItems, grandTotalIndex) {
                        let i;
                        let lastIndex = -1;
                        let headerItem;
                        if (headerItems) {
                            for (i = 0; i < headerItems.length; i += 1) {
                                headerItem = headerItems[i];
                                if (void 0 !== headerItem.index) {
                                    lastIndex = Math.max(lastIndex, headerItem.index)
                                }
                                if (headerItem.children) {
                                    lastIndex = Math.max(lastIndex, getHeaderItemsLastIndex(headerItem.children))
                                } else if (headerItem.collapsedChildren) {
                                    lastIndex = Math.max(lastIndex, getHeaderItemsLastIndex(headerItem.collapsedChildren))
                                }
                            }
                        }
                        if ((0, _type.isDefined)(grandTotalIndex)) {
                            lastIndex = Math.max(lastIndex, grandTotalIndex)
                        }
                        return lastIndex
                    };
                    const updateHeaderItemChildren = function(headerItems, headerItem, children, grandTotalIndex) {
                        const applyingHeaderItemsCount = getHeaderItemsLastIndex(children) + 1;
                        let emptyIndex = getHeaderItemsLastIndex(headerItems, grandTotalIndex) + 1;
                        let index;
                        const applyingItemIndexesToCurrent = [];
                        let needIndexUpdate = false;
                        const d = new _deferred.Deferred;
                        if (headerItem.children && headerItem.children.length === children.length) {
                            for (let i = 0; i < children.length; i += 1) {
                                const child = children[i];
                                if (void 0 !== child.index) {
                                    if (void 0 === headerItem.children[i].index) {
                                        child.index = applyingItemIndexesToCurrent[child.index] = emptyIndex++;
                                        headerItem.children[i] = child
                                    } else {
                                        applyingItemIndexesToCurrent[child.index] = headerItem.children[i].index
                                    }
                                }
                            }
                        } else {
                            needIndexUpdate = true;
                            for (index = 0; index < applyingHeaderItemsCount; index += 1) {
                                applyingItemIndexesToCurrent[index] = emptyIndex++
                            }
                            headerItem.children = children
                        }(0, _deferred.when)((0, _m_widget_utils.foreachTreeAsync)(headerItem.children, items => {
                            if (needIndexUpdate) {
                                items[0].index = applyingItemIndexesToCurrent[items[0].index]
                            }
                        })).done(() => {
                            d.resolve(applyingItemIndexesToCurrent)
                        });
                        return d
                    };
                    const updateHeaderItems = function(headerItems, newHeaderItems, grandTotalIndex) {
                        const d = new _deferred.Deferred;
                        let emptyIndex = grandTotalIndex >= 0 && getHeaderItemsLastIndex(headerItems, grandTotalIndex) + 1;
                        const applyingItemIndexesToCurrent = [];
                        (0, _deferred.when)((0, _m_widget_utils.foreachTreeAsync)(headerItems, items => {
                            delete items[0].collapsedChildren
                        })).done(() => {
                            (0, _deferred.when)((0, _m_widget_utils.foreachTreeAsync)(newHeaderItems, (newItems, index) => {
                                const newItem = newItems[0];
                                if (newItem.index >= 0) {
                                    let headerItem = findHeaderItem(headerItems, (0, _m_widget_utils.createPath)(newItems));
                                    if (headerItem && headerItem.index >= 0) {
                                        applyingItemIndexesToCurrent[newItem.index] = headerItem.index
                                    } else if (emptyIndex) {
                                        const path = (0, _m_widget_utils.createPath)(newItems.slice(1));
                                        headerItem = findHeaderItem(headerItems, path);
                                        const parentItems = path.length ? headerItem && headerItem.children : headerItems;
                                        if (parentItems) {
                                            parentItems[index] = newItem;
                                            newItem.index = applyingItemIndexesToCurrent[newItem.index] = emptyIndex++
                                        }
                                    }
                                }
                            })).done(() => {
                                d.resolve(applyingItemIndexesToCurrent)
                            })
                        });
                        return d
                    };
                    const updateDataSourceCells = function(dataSource, newDataSourceCells, newRowItemIndexesToCurrent, newColumnItemIndexesToCurrent) {
                        let newRowIndex;
                        let newColumnIndex;
                        let newRowCells;
                        let newCell;
                        let rowIndex;
                        let columnIndex;
                        const dataSourceCells = dataSource.values;
                        if (newDataSourceCells) {
                            for (newRowIndex = 0; newRowIndex < newDataSourceCells.length; newRowIndex += 1) {
                                newRowCells = newDataSourceCells[newRowIndex];
                                rowIndex = newRowItemIndexesToCurrent[newRowIndex];
                                if (!(0, _type.isDefined)(rowIndex)) {
                                    rowIndex = dataSource.grandTotalRowIndex
                                }
                                if (newRowCells && (0, _type.isDefined)(rowIndex)) {
                                    if (!dataSourceCells[rowIndex]) {
                                        dataSourceCells[rowIndex] = []
                                    }
                                    for (newColumnIndex = 0; newColumnIndex < newRowCells.length; newColumnIndex += 1) {
                                        newCell = newRowCells[newColumnIndex];
                                        columnIndex = newColumnItemIndexesToCurrent[newColumnIndex];
                                        if (!(0, _type.isDefined)(columnIndex)) {
                                            columnIndex = dataSource.grandTotalColumnIndex
                                        }
                                        if ((0, _type.isDefined)(newCell) && (0, _type.isDefined)(columnIndex)) {
                                            dataSourceCells[rowIndex][columnIndex] = newCell
                                        }
                                    }
                                }
                            }
                        }
                    };

                    function createLocalOrRemoteStore(dataSourceOptions, notifyProgress) {
                        const StoreConstructor = dataSourceOptions.remoteOperations || dataSourceOptions.paginate ? _m_remote_store.RemoteStore : _m_local_store.LocalStore;
                        return new StoreConstructor((0, _extend.extend)((0, _utils.normalizeDataSourceOptions)(dataSourceOptions), {
                            onChanged: null,
                            onLoadingChanged: null,
                            onProgressChanged: notifyProgress
                        }))
                    }

                    function getExpandedPaths(dataSource, loadOptions, dimensionName, prevLoadOptions) {
                        const result = [];
                        const fields = loadOptions && loadOptions[dimensionName] || [];
                        const prevFields = prevLoadOptions && prevLoadOptions[dimensionName] || [];
                        (0, _m_widget_utils.foreachTree)(dataSource[dimensionName], items => {
                            const item = items[0];
                            const path = (0, _m_widget_utils.createPath)(items);
                            if (item.children && fields[path.length - 1] && !fields[path.length - 1].expanded) {
                                if (path.length < fields.length && (!prevLoadOptions || function(fields, prevFields, count) {
                                        for (let i = 0; i < count; i += 1) {
                                            if (!fields[i] || !prevFields[i] || fields[i].index !== prevFields[i].index) {
                                                return false
                                            }
                                        }
                                        return true
                                    }(fields, prevFields, path.length))) {
                                    result.push(path.slice())
                                }
                            }
                        }, true);
                        return result
                    }

                    function setFieldProperties(field, srcField, skipInitPropertySave, properties) {
                        if (srcField) {
                            (0, _iterator.each)(properties, (_, name) => {
                                if (skipInitPropertySave) {
                                    field[name] = srcField[name]
                                } else {
                                    if (("summaryType" === name || "summaryDisplayMode" === name) && void 0 === srcField[name]) {
                                        return
                                    }(0, _m_widget_utils.setFieldProperty)(field, name, srcField[name])
                                }
                            })
                        } else {
                            resetFieldState(field, properties)
                        }
                        return field
                    }

                    function getFieldsState(fields, properties) {
                        const result = [];
                        (0, _iterator.each)(fields, (_, field) => {
                            result.push(setFieldProperties({
                                dataField: field.dataField,
                                name: field.name
                            }, field, true, properties))
                        });
                        return result
                    }

                    function getFieldStateId(field) {
                        if (field.name) {
                            return field.name
                        }
                        return "".concat(field.dataField)
                    }

                    function getFieldsById(fields, id) {
                        const result = [];
                        (0, _iterator.each)(fields || [], (_, field) => {
                            if (getFieldStateId(field) === id) {
                                result.push(field)
                            }
                        });
                        return result
                    }

                    function setFieldsState(stateFields, fields) {
                        stateFields = stateFields || [];
                        const fieldsById = {};
                        let id;
                        (0, _iterator.each)(fields, (_, field) => {
                            id = getFieldStateId(field);
                            if (!fieldsById[id]) {
                                fieldsById[id] = getFieldsById(fields, getFieldStateId(field))
                            }
                        });
                        (0, _iterator.each)(fieldsById, (id, fields) => {
                            ! function(stateFields, fields) {
                                stateFields = stateFields || [];
                                (0, _iterator.each)(fields, (index, field) => {
                                    setFieldProperties(field, stateFields[index], false, STATE_PROPERTIES);
                                    updateCalculatedFieldProperties(field, CALCULATED_PROPERTIES)
                                });
                                return fields
                            }(getFieldsById(stateFields, id), fields)
                        });
                        return fields
                    }

                    function sortFieldsByAreaIndex(fields) {
                        fields.sort((field1, field2) => field1.areaIndex - field2.areaIndex || field1.groupIndex - field2.groupIndex)
                    }

                    function getFieldId(field, retrieveFieldsOptionValue) {
                        const groupName = field.groupName || "";
                        return (field.dataField || groupName) + (field.groupInterval ? groupName + field.groupInterval : "NOGROUP") + (retrieveFieldsOptionValue ? "" : groupName)
                    }

                    function mergeFields(fields, storeFields, retrieveFieldsOptionValue) {
                        let result = [];
                        const fieldsDictionary = {};
                        const removedFields = {};
                        const dataTypes = (0, _m_widget_utils.getFieldsDataType)(fields);
                        if (storeFields) {
                            (0, _iterator.each)(storeFields, (_, field) => {
                                fieldsDictionary[getFieldId(field, retrieveFieldsOptionValue)] = field
                            });
                            (0, _iterator.each)(fields, (_, field) => {
                                const fieldKey = getFieldId(field, retrieveFieldsOptionValue);
                                const storeField = fieldsDictionary[fieldKey] || removedFields[fieldKey];
                                let mergedField;
                                if (storeField) {
                                    if (storeField._initProperties) {
                                        resetFieldState(storeField, ALL_CALCULATED_PROPERTIES)
                                    }
                                    mergedField = (0, _extend.extend)({}, storeField, field, {
                                        _initProperties: null
                                    })
                                } else {
                                    fieldsDictionary[fieldKey] = mergedField = field
                                }
                                if (!mergedField.dataType && dataTypes[field.dataField]) {
                                    mergedField.dataType = dataTypes[field.dataField]
                                }
                                delete fieldsDictionary[fieldKey];
                                removedFields[fieldKey] = storeField;
                                result.push(mergedField)
                            });
                            if (retrieveFieldsOptionValue) {
                                (0, _iterator.each)(fieldsDictionary, (_, field) => {
                                    result.push(field)
                                })
                            }
                        } else {
                            result = fields
                        }
                        result.push.apply(result, []);
                        ! function(fields) {
                            fields.forEach(field => {
                                if (field.groupName && field.groupInterval && void 0 === field.groupIndex) {
                                    const maxGroupIndex = fields.filter(f => f.groupName === field.groupName && (0, _type.isNumeric)(f.groupIndex)).map(f => f.groupIndex).reduce((prev, current) => Math.max(prev, current), -1);
                                    field.groupIndex = maxGroupIndex + 1
                                }
                            })
                        }(result);
                        return result
                    }

                    function getFields(that) {
                        const result = new _deferred.Deferred;
                        const store = that._store;
                        const storeFields = store && store.getFields(that._fields);
                        let mergedFields;
                        (0, _deferred.when)(storeFields).done(storeFields => {
                            that._storeFields = storeFields;
                            mergedFields = mergeFields(that._fields, storeFields, that._retrieveFields);
                            result.resolve(mergedFields)
                        }).fail(result.reject);
                        return result
                    }

                    function formatHeaderItems(data, loadOptions, headerName) {
                        return (0, _m_widget_utils.foreachTreeAsync)(data[headerName], items => {
                            const item = items[0];
                            item.text = item.text || (0, _m_widget_utils.formatValue)(item.value, loadOptions[headerName][(0, _m_widget_utils.createPath)(items).length - 1])
                        })
                    }

                    function formatHeaders(loadOptions, data) {
                        return (0, _deferred.when)(formatHeaderItems(data, loadOptions, "columns"), formatHeaderItems(data, loadOptions, "rows"))
                    }

                    function updateCache(headerItems) {
                        const d = new _deferred.Deferred;
                        const cacheByPath = {};
                        (0, _deferred.when)((0, _m_widget_utils.foreachTreeAsync)(headerItems, items => {
                            const path = (0, _m_widget_utils.createPath)(items).join(".");
                            cacheByPath[path] = items[0]
                        })).done(d.resolve);
                        headerItems._cacheByPath = cacheByPath;
                        return d
                    }

                    function getAreaFields(fields, area) {
                        const areaFields = [];
                        (0, _iterator.each)(fields, (function() {
                            if (function(field, area) {
                                    const canAddFieldInArea = "data" === area || false !== field.visible;
                                    return field.area === area && !(0, _type.isDefined)(field.groupIndex) && canAddFieldInArea
                                }(this, area)) {
                                areaFields.push(this)
                            }
                        }));
                        return areaFields
                    }
                    return {
                        ctor(options) {
                            options = options || {};
                            this._eventsStrategy = new _events_strategy.EventsStrategy(this);
                            const that = this;
                            const store = function(dataSourceOptions, notifyProgress) {
                                let store;
                                let storeOptions;
                                if ((0, _type.isPlainObject)(dataSourceOptions) && dataSourceOptions.load) {
                                    store = createLocalOrRemoteStore(dataSourceOptions, notifyProgress)
                                } else {
                                    if (dataSourceOptions && !dataSourceOptions.store) {
                                        dataSourceOptions = {
                                            store: dataSourceOptions
                                        }
                                    }
                                    storeOptions = dataSourceOptions.store;
                                    if ("xmla" === storeOptions.type) {
                                        store = new _m_xmla_store.default.XmlaStore(storeOptions)
                                    } else if ((0, _type.isPlainObject)(storeOptions) && storeOptions.type || storeOptions instanceof _abstract_store.default || Array.isArray(storeOptions)) {
                                        store = createLocalOrRemoteStore(dataSourceOptions, notifyProgress)
                                    } else if (storeOptions instanceof _class.default) {
                                        store = storeOptions
                                    }
                                }
                                return store
                            }(options, progress => {
                                that._eventsStrategy.fireEvent("progressChanged", [progress])
                            });
                            that._store = store;
                            that._paginate = !!options.paginate;
                            that._pageSize = options.pageSize || 40;
                            that._data = {
                                rows: [],
                                columns: [],
                                values: []
                            };
                            that._loadingCount = 0;
                            that._isFieldsModified = false;
                            (0, _iterator.each)(["changed", "loadError", "loadingChanged", "progressChanged", "fieldsPrepared", "expandValueChanging"], (_, eventName) => {
                                const optionName = "on".concat(eventName[0].toUpperCase()).concat(eventName.slice(1));
                                if (Object.prototype.hasOwnProperty.call(options, optionName)) {
                                    this.on(eventName, options[optionName])
                                }
                            });
                            that._retrieveFields = (0, _type.isDefined)(options.retrieveFields) ? options.retrieveFields : true;
                            that._fields = options.fields || [];
                            that._descriptions = options.descriptions ? (0, _extend.extend)(that._createDescriptions(), options.descriptions) : void 0;
                            if (!store) {
                                (0, _extend.extend)(true, that._data, options.store || options)
                            }
                        },
                        getData() {
                            return this._data
                        },
                        getAreaFields(area, collectGroups) {
                            let areaFields = [];
                            let descriptions;
                            if (collectGroups || "data" === area) {
                                areaFields = getAreaFields(this._fields, area);
                                sortFieldsByAreaIndex(areaFields)
                            } else {
                                descriptions = this._descriptions || {};
                                areaFields = descriptions[DESCRIPTION_NAME_BY_AREA[area]] || []
                            }
                            return areaFields
                        },
                        fields(fields) {
                            const that = this;
                            if (fields) {
                                that._fields = mergeFields(fields, that._storeFields, that._retrieveFields);
                                that._fieldsPrepared(that._fields)
                            }
                            return that._fields
                        },
                        field(id, options) {
                            const that = this;
                            const fields = that._fields;
                            const field = fields && fields[(0, _type.isNumeric)(id) ? id : (0, _m_widget_utils.findField)(fields, id)];
                            let levels;
                            if (field && options) {
                                (0, _iterator.each)(options, (optionName, optionValue) => {
                                    const isInitialization = !STATE_PROPERTIES.includes(optionName);
                                    (0, _m_widget_utils.setFieldProperty)(field, optionName, optionValue, isInitialization);
                                    if ("sortOrder" === optionName) {
                                        levels = field.levels || [];
                                        for (let i = 0; i < levels.length; i += 1) {
                                            levels[i][optionName] = optionValue
                                        }
                                    }
                                });
                                updateCalculatedFieldProperties(field, CALCULATED_PROPERTIES);
                                that._descriptions = that._createDescriptions(field);
                                that._isFieldsModified = true;
                                that._eventsStrategy.fireEvent("fieldChanged", [field])
                            }
                            return field
                        },
                        getFieldValues(index, applyFilters, options) {
                            const that = this;
                            const field = this._fields && this._fields[index];
                            const store = this.store();
                            const loadFields = [];
                            const loadOptions = {
                                columns: loadFields,
                                rows: [],
                                values: this.getAreaFields("data"),
                                filters: applyFilters ? this._fields.filter(f => f !== field && f.area && f.filterValues && f.filterValues.length) : [],
                                skipValues: true
                            };
                            let searchValue;
                            const d = new _deferred.Deferred;
                            if (options) {
                                searchValue = options.searchValue;
                                loadOptions.columnSkip = options.skip;
                                loadOptions.columnTake = options.take
                            }
                            if (field && store) {
                                (0, _iterator.each)(field.levels || [field], (function() {
                                    loadFields.push((0, _extend.extend)({}, this, {
                                        expanded: true,
                                        filterValues: null,
                                        sortOrder: "asc",
                                        sortBySummaryField: null,
                                        searchValue: searchValue
                                    }))
                                }));
                                store.load(loadOptions).done(data => {
                                    if (loadOptions.columnSkip) {
                                        data.columns = data.columns.slice(loadOptions.columnSkip)
                                    }
                                    if (loadOptions.columnTake) {
                                        data.columns = data.columns.slice(0, loadOptions.columnTake)
                                    }
                                    formatHeaders(loadOptions, data);
                                    if (!loadOptions.columnTake) {
                                        that._sort(loadOptions, data)
                                    }
                                    d.resolve(data.columns)
                                }).fail(d)
                            } else {
                                d.reject()
                            }
                            return d
                        },
                        reload() {
                            return this.load({
                                reload: true
                            })
                        },
                        filter() {
                            const store = this._store;
                            return store.filter.apply(store, arguments)
                        },
                        load: function(options) {
                            const that = this;
                            const d = new _deferred.Deferred;
                            options = options || {};
                            that.beginLoading();
                            d.fail(e => {
                                that._eventsStrategy.fireEvent("loadError", [e])
                            }).always(() => {
                                that.endLoading()
                            });

                            function loadTask() {
                                that._delayedLoadTask = void 0;
                                if (!that._descriptions) {
                                    (0, _deferred.when)(getFields(that)).done(fields => {
                                        that._fieldsPrepared(fields);
                                        that._loadCore(options, d)
                                    }).fail(d.reject).fail(that._loadErrorHandler)
                                } else {
                                    that._loadCore(options, d)
                                }
                            }
                            if (that.store()) {
                                that._delayedLoadTask = (0, _common.executeAsync)(loadTask)
                            } else {
                                loadTask()
                            }
                            return d
                        },
                        createDrillDownDataSource(params) {
                            return this._store.createDrillDownDataSource(this._descriptions, params)
                        },
                        _createDescriptions(currentField) {
                            const fields = this.fields();
                            const descriptions = {
                                rows: [],
                                columns: [],
                                values: [],
                                filters: []
                            };
                            (0, _iterator.each)(["row", "column", "data", "filter"], (_, areaName) => {
                                (0, _array.normalizeIndexes)(getAreaFields(fields, areaName), "areaIndex", currentField)
                            });
                            (0, _iterator.each)(fields || [], (_, field) => {
                                const descriptionName = DESCRIPTION_NAME_BY_AREA[field.area];
                                const dimension = descriptions[descriptionName];
                                const {
                                    groupName: groupName
                                } = field;
                                if (groupName && !(0, _type.isNumeric)(field.groupIndex)) {
                                    field.levels = function(fields, groupingField) {
                                        return fields.filter(field => field.groupName === groupingField.groupName && (0, _type.isNumeric)(field.groupIndex) && false !== field.visible).map(field => (0, _extend.extend)(field, {
                                            areaIndex: groupingField.areaIndex,
                                            area: groupingField.area,
                                            expanded: (0, _type.isDefined)(field.expanded) ? field.expanded : groupingField.expanded,
                                            dataField: field.dataField || groupingField.dataField,
                                            dataType: field.dataType || groupingField.dataType,
                                            sortBy: field.sortBy || groupingField.sortBy,
                                            sortOrder: field.sortOrder || groupingField.sortOrder,
                                            sortBySummaryField: field.sortBySummaryField || groupingField.sortBySummaryField,
                                            sortBySummaryPath: field.sortBySummaryPath || groupingField.sortBySummaryPath,
                                            visible: field.visible || groupingField.visible,
                                            showTotals: (0, _type.isDefined)(field.showTotals) ? field.showTotals : groupingField.showTotals,
                                            showGrandTotals: (0, _type.isDefined)(field.showGrandTotals) ? field.showGrandTotals : groupingField.showGrandTotals
                                        })).sort((a, b) => a.groupIndex - b.groupIndex)
                                    }(fields, field)
                                }
                                if (!dimension || groupName && (0, _type.isNumeric)(field.groupIndex) || false === field.visible && "data" !== field.area && "filter" !== field.area) {
                                    return
                                }
                                if (field.levels && dimension !== descriptions.filters && dimension !== descriptions.values) {
                                    dimension.push.apply(dimension, field.levels);
                                    if (field.filterValues && field.filterValues.length) {
                                        descriptions.filters.push(field)
                                    }
                                } else {
                                    dimension.push(field)
                                }
                            });
                            (0, _iterator.each)(descriptions, (_, fields) => {
                                sortFieldsByAreaIndex(fields)
                            });
                            const indices = {};
                            (0, _iterator.each)(descriptions.values, (_, field) => {
                                const expression = field.calculateSummaryValue;
                                if ((0, _type.isFunction)(expression)) {
                                    const summaryCell = _m_summary_display_modes.default.createMockSummaryCell(descriptions, fields, indices);
                                    expression(summaryCell)
                                }
                            });
                            return descriptions
                        },
                        _fieldsPrepared(fields) {
                            this._fields = fields;
                            (0, _iterator.each)(fields, (index, field) => {
                                field.index = index;
                                updateCalculatedFieldProperties(field, ALL_CALCULATED_PROPERTIES)
                            });
                            const currentFieldState = getFieldsState(fields, ["caption"]);
                            this._eventsStrategy.fireEvent("fieldsPrepared", [fields]);
                            for (let i = 0; i < fields.length; i += 1) {
                                if (fields[i].caption !== currentFieldState[i].caption) {
                                    (0, _m_widget_utils.setFieldProperty)(fields[i], "caption", fields[i].caption, true)
                                }
                            }
                            this._descriptions = this._createDescriptions()
                        },
                        isLoading() {
                            return this._loadingCount > 0
                        },
                        state(state, skipLoading) {
                            const that = this;
                            if (arguments.length) {
                                state = (0, _extend.extend)({
                                    rowExpandedPaths: [],
                                    columnExpandedPaths: []
                                }, state);
                                if (!that._descriptions) {
                                    that.beginLoading();
                                    (0, _deferred.when)(getFields(that)).done(fields => {
                                        that._fields = setFieldsState(state.fields, fields);
                                        that._fieldsPrepared(fields);
                                        !skipLoading && that.load(state)
                                    }).always(() => {
                                        that.endLoading()
                                    })
                                } else {
                                    that._fields = setFieldsState(state.fields, that._fields);
                                    that._descriptions = that._createDescriptions();
                                    !skipLoading && that.load(state)
                                }
                                return
                            }
                            return {
                                fields: getFieldsState(that._fields, STATE_PROPERTIES),
                                columnExpandedPaths: getExpandedPaths(that._data, that._descriptions, "columns", that._lastLoadOptions),
                                rowExpandedPaths: getExpandedPaths(that._data, that._descriptions, "rows", that._lastLoadOptions)
                            }
                        },
                        beginLoading() {
                            this._changeLoadingCount(1)
                        },
                        endLoading() {
                            this._changeLoadingCount(-1)
                        },
                        _changeLoadingCount(increment) {
                            const oldLoading = this.isLoading();
                            this._loadingCount += increment;
                            const newLoading = this.isLoading();
                            if (oldLoading ^ newLoading) {
                                this._eventsStrategy.fireEvent("loadingChanged", [newLoading])
                            }
                        },
                        _hasPagingValues(options, area, oppositeIndex) {
                            const takeField = "".concat(area, "Take");
                            const skipField = "".concat(area, "Skip");
                            const {
                                values: values
                            } = this._data;
                            let items = this._data["".concat(area, "s")];
                            const oppositeArea = "row" === area ? "column" : "row";
                            const indices = [];
                            if (options.path && options.area === area) {
                                const headerItem = findHeaderItem(items, options.path);
                                items = headerItem && headerItem.children;
                                if (!items) {
                                    return false
                                }
                            }
                            if (options.oppositePath && options.area === oppositeArea) {
                                const headerItem = findHeaderItem(items, options.oppositePath);
                                items = headerItem && headerItem.children;
                                if (!items) {
                                    return false
                                }
                            }
                            for (let i = options[skipField]; i < options[skipField] + options[takeField]; i += 1) {
                                if (items[i]) {
                                    indices.push(items[i].index)
                                }
                            }
                            return indices.every(index => {
                                if (void 0 !== index) {
                                    if ("row" === area) {
                                        return (values[index] || [])[oppositeIndex]
                                    }
                                    return (values[oppositeIndex] || [])[index]
                                }
                                return
                            })
                        },
                        _processPagingCacheByArea(options, pageSize, area) {
                            const takeField = "".concat(area, "Take");
                            const skipField = "".concat(area, "Skip");
                            let items = this._data["".concat(area, "s")];
                            const oppositeArea = "row" === area ? "column" : "row";
                            let item;
                            if (options[takeField]) {
                                if (options.path && options.area === area) {
                                    const headerItem = findHeaderItem(items, options.path);
                                    items = headerItem && headerItem.children || []
                                }
                                if (options.oppositePath && options.area === oppositeArea) {
                                    const headerItem = findHeaderItem(items, options.oppositePath);
                                    items = headerItem && headerItem.children || []
                                }
                                do {
                                    item = items[options[skipField]];
                                    if (item && void 0 !== item.index) {
                                        if (this._hasPagingValues(options, oppositeArea, item.index)) {
                                            options[skipField]++;
                                            options[takeField]--
                                        } else {
                                            break
                                        }
                                    }
                                } while (item && void 0 !== item.index && options[takeField]);
                                if (options[takeField]) {
                                    const start = Math.floor(options[skipField] / pageSize) * pageSize;
                                    const end = Math.ceil((options[skipField] + options[takeField]) / pageSize) * pageSize;
                                    options[skipField] = start;
                                    options[takeField] = end - start
                                }
                            }
                        },
                        _processPagingCache(storeLoadOptions) {
                            const pageSize = this._pageSize;
                            if (pageSize < 0) {
                                return
                            }
                            for (let i = 0; i < storeLoadOptions.length; i += 1) {
                                this._processPagingCacheByArea(storeLoadOptions[i], pageSize, "row");
                                this._processPagingCacheByArea(storeLoadOptions[i], pageSize, "column")
                            }
                        },
                        _loadCore(options, deferred) {
                            const that = this;
                            const store = this._store;
                            const descriptions = this._descriptions;
                            const reload = options.reload || this.paginate() && that._isFieldsModified;
                            const paginate = this.paginate();
                            const headerName = DESCRIPTION_NAME_BY_AREA[options.area];
                            options = options || {};
                            if (store) {
                                (0, _extend.extend)(options, descriptions);
                                options.columnExpandedPaths = options.columnExpandedPaths || getExpandedPaths(this._data, options, "columns", that._lastLoadOptions);
                                options.rowExpandedPaths = options.rowExpandedPaths || getExpandedPaths(this._data, options, "rows", that._lastLoadOptions);
                                if (paginate) {
                                    options.pageSize = this._pageSize
                                }
                                if (headerName) {
                                    options.headerName = headerName
                                }
                                that.beginLoading();
                                deferred.always(() => {
                                    that.endLoading()
                                });
                                let storeLoadOptions = [options];
                                that._eventsStrategy.fireEvent("customizeStoreLoadOptions", [storeLoadOptions, reload]);
                                if (!reload) {
                                    that._processPagingCache(storeLoadOptions)
                                }
                                storeLoadOptions = storeLoadOptions.filter(options => !(options.rows.length && 0 === options.rowTake) && !(options.columns.length && 0 === options.columnTake));
                                if (!storeLoadOptions.length) {
                                    that._update(deferred);
                                    return
                                }
                                const results = storeLoadOptions.map(options => store.load(options));
                                _deferred.when.apply(null, results).done((function() {
                                    const results = arguments;
                                    for (let i = 0; i < results.length; i += 1) {
                                        const options = storeLoadOptions[i];
                                        const data = results[i];
                                        const isLast = i === results.length - 1;
                                        if (options.path) {
                                            that.applyPartialDataSource(options.area, options.path, data, isLast ? deferred : false, options.oppositePath)
                                        } else if (paginate && !reload && isDataExists(that._data)) {
                                            that.mergePartialDataSource(data, isLast ? deferred : false)
                                        } else {
                                            (0, _extend.extend)(that._data, data);
                                            that._lastLoadOptions = options;
                                            that._update(isLast ? deferred : false)
                                        }
                                    }
                                })).fail(deferred.reject)
                            } else {
                                that._update(deferred)
                            }
                        },
                        _sort(descriptions, data, getAscOrder) {
                            const store = this._store;
                            if (store && !this._paginate) {
                                (0, _m_data_source_utils.sort)(descriptions, data, getAscOrder)
                            }
                        },
                        sortLocal() {
                            this._sort(this._descriptions, this._data);
                            this._eventsStrategy.fireEvent("changed")
                        },
                        paginate() {
                            return this._paginate && this._store && this._store.supportPaging()
                        },
                        isEmpty() {
                            const dataFields = this.getAreaFields("data").filter(f => false !== f.visible);
                            const data = this.getData();
                            return !dataFields.length || !data.values.length
                        },
                        _update(deferred) {
                            const that = this;
                            const descriptions = that._descriptions;
                            const loadedData = that._data;
                            const dataFields = descriptions.values;
                            const expressionsUsed = function(dataFields) {
                                return dataFields.some(field => field.summaryDisplayMode || field.calculateSummaryValue)
                            }(dataFields);
                            (0, _deferred.when)(formatHeaders(descriptions, loadedData), updateCache(loadedData.rows), updateCache(loadedData.columns)).done(() => {
                                if (expressionsUsed) {
                                    that._sort(descriptions, loadedData, expressionsUsed);
                                    !that.isEmpty() && _m_summary_display_modes.default.applyDisplaySummaryMode(descriptions, loadedData)
                                }
                                that._sort(descriptions, loadedData);
                                !that.isEmpty() && function(dataFields) {
                                    return dataFields.some(field => !!field.runningTotal)
                                }(dataFields) && _m_summary_display_modes.default.applyRunningTotal(descriptions, loadedData);
                                that._data = loadedData;
                                false !== deferred && (0, _deferred.when)(deferred).done(() => {
                                    that._isFieldsModified = false;
                                    that._eventsStrategy.fireEvent("changed");
                                    if ((0, _type.isDefined)(that._data.grandTotalRowIndex)) {
                                        loadedData.grandTotalRowIndex = that._data.grandTotalRowIndex
                                    }
                                    if ((0, _type.isDefined)(that._data.grandTotalColumnIndex)) {
                                        loadedData.grandTotalColumnIndex = that._data.grandTotalColumnIndex
                                    }
                                });
                                deferred && deferred.resolve(that._data)
                            });
                            return deferred
                        },
                        store() {
                            return this._store
                        },
                        collapseHeaderItem(area, path) {
                            const that = this;
                            const headerItems = "column" === area ? that._data.columns : that._data.rows;
                            const headerItem = findHeaderItem(headerItems, path);
                            const field = that.getAreaFields(area)[path.length - 1];
                            if (headerItem && headerItem.children) {
                                that._eventsStrategy.fireEvent("expandValueChanging", [{
                                    area: area,
                                    path: path,
                                    expanded: false
                                }]);
                                if (field) {
                                    field.expanded = false
                                }
                                headerItem.collapsedChildren = headerItem.children;
                                delete headerItem.children;
                                that._update();
                                if (that.paginate()) {
                                    that.load()
                                }
                                return true
                            }
                            return false
                        },
                        collapseAll(id) {
                            let dataChanged = false;
                            const field = this.field(id) || {};
                            let areaOffsets = [this.getAreaFields(field.area).indexOf(field)];
                            field.expanded = false;
                            if (field && field.levels) {
                                areaOffsets = [];
                                field.levels.forEach(f => {
                                    areaOffsets.push(this.getAreaFields(field.area).indexOf(f));
                                    f.expanded = false
                                })
                            }(0, _m_widget_utils.foreachTree)(this._data["".concat(field.area, "s")], items => {
                                const item = items[0];
                                const path = (0, _m_widget_utils.createPath)(items);
                                if (item && item.children && areaOffsets.includes(path.length - 1)) {
                                    item.collapsedChildren = item.children;
                                    delete item.children;
                                    dataChanged = true
                                }
                            }, true);
                            dataChanged && this._update()
                        },
                        expandAll(id) {
                            const field = this.field(id);
                            if (field && field.area) {
                                field.expanded = true;
                                if (field && field.levels) {
                                    field.levels.forEach(f => {
                                        f.expanded = true
                                    })
                                }
                                this.load()
                            }
                        },
                        expandHeaderItem(area, path) {
                            const that = this;
                            const headerItems = "column" === area ? that._data.columns : that._data.rows;
                            const headerItem = findHeaderItem(headerItems, path);
                            if (headerItem && !headerItem.children) {
                                const hasCache = !!headerItem.collapsedChildren;
                                const options = {
                                    area: area,
                                    path: path,
                                    expanded: true,
                                    needExpandData: !hasCache
                                };
                                that._eventsStrategy.fireEvent("expandValueChanging", [options]);
                                if (hasCache) {
                                    headerItem.children = headerItem.collapsedChildren;
                                    delete headerItem.collapsedChildren;
                                    that._update()
                                } else if (this.store()) {
                                    that.load(options)
                                }
                                return hasCache
                            }
                            return false
                        },
                        mergePartialDataSource(dataSource, deferred) {
                            const that = this;
                            const loadedData = that._data;
                            let newRowItemIndexesToCurrent;
                            let newColumnItemIndexesToCurrent;
                            if (dataSource && dataSource.values) {
                                dataSource.rows = dataSource.rows || [];
                                dataSource.columns = dataSource.columns || [];
                                newRowItemIndexesToCurrent = updateHeaderItems(loadedData.rows, dataSource.rows, loadedData.grandTotalColumnIndex);
                                newColumnItemIndexesToCurrent = updateHeaderItems(loadedData.columns, dataSource.columns, loadedData.grandTotalColumnIndex);
                                (0, _deferred.when)(newRowItemIndexesToCurrent, newColumnItemIndexesToCurrent).done((newRowItemIndexesToCurrent, newColumnItemIndexesToCurrent) => {
                                    if (newRowItemIndexesToCurrent.length || newColumnItemIndexesToCurrent.length) {
                                        updateDataSourceCells(loadedData, dataSource.values, newRowItemIndexesToCurrent, newColumnItemIndexesToCurrent)
                                    }
                                    that._update(deferred)
                                })
                            }
                        },
                        applyPartialDataSource(area, path, dataSource, deferred, oppositePath) {
                            const that = this;
                            const loadedData = that._data;
                            const headerItems = "column" === area ? loadedData.columns : loadedData.rows;
                            let headerItem;
                            const oppositeHeaderItems = "column" === area ? loadedData.rows : loadedData.columns;
                            let oppositeHeaderItem;
                            let newRowItemIndexesToCurrent;
                            let newColumnItemIndexesToCurrent;
                            if (dataSource && dataSource.values) {
                                dataSource.rows = dataSource.rows || [];
                                dataSource.columns = dataSource.columns || [];
                                headerItem = findHeaderItem(headerItems, path);
                                oppositeHeaderItem = oppositePath && findHeaderItem(oppositeHeaderItems, oppositePath);
                                if (headerItem) {
                                    if ("column" === area) {
                                        newColumnItemIndexesToCurrent = updateHeaderItemChildren(headerItems, headerItem, dataSource.columns, loadedData.grandTotalColumnIndex);
                                        if (oppositeHeaderItem) {
                                            newRowItemIndexesToCurrent = updateHeaderItemChildren(oppositeHeaderItems, oppositeHeaderItem, dataSource.rows, loadedData.grandTotalRowIndex)
                                        } else {
                                            newRowItemIndexesToCurrent = updateHeaderItems(loadedData.rows, dataSource.rows, loadedData.grandTotalRowIndex)
                                        }
                                    } else {
                                        newRowItemIndexesToCurrent = updateHeaderItemChildren(headerItems, headerItem, dataSource.rows, loadedData.grandTotalRowIndex);
                                        if (oppositeHeaderItem) {
                                            newColumnItemIndexesToCurrent = updateHeaderItemChildren(oppositeHeaderItems, oppositeHeaderItem, dataSource.columns, loadedData.grandTotalColumnIndex)
                                        } else {
                                            newColumnItemIndexesToCurrent = updateHeaderItems(loadedData.columns, dataSource.columns, loadedData.grandTotalColumnIndex)
                                        }
                                    }(0, _deferred.when)(newRowItemIndexesToCurrent, newColumnItemIndexesToCurrent).done((newRowItemIndexesToCurrent, newColumnItemIndexesToCurrent) => {
                                        if ("row" === area && newRowItemIndexesToCurrent.length || "column" === area && newColumnItemIndexesToCurrent.length) {
                                            updateDataSourceCells(loadedData, dataSource.values, newRowItemIndexesToCurrent, newColumnItemIndexesToCurrent)
                                        }
                                        that._update(deferred)
                                    })
                                }
                            }
                        },
                        on(eventName, eventHandler) {
                            this._eventsStrategy.on(eventName, eventHandler);
                            return this
                        },
                        off(eventName, eventHandler) {
                            this._eventsStrategy.off(eventName, eventHandler);
                            return this
                        },
                        dispose() {
                            const delayedLoadTask = this._delayedLoadTask;
                            this._eventsStrategy.dispose();
                            if (delayedLoadTask) {
                                delayedLoadTask.abort()
                            }
                            this._isDisposed = true
                        },
                        isDisposed() {
                            return !!this._isDisposed
                        }
                    }
                }());
                exports.PivotGridDataSource = PivotGridDataSource;
                var _default = {
                    PivotGridDataSource: PivotGridDataSource
                };
                exports.default = _default
            },
        91629:
            /*!************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/data_source/m_data_source_utils.js ***!
              \************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                exports.sort = sort;
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _m_widget_utils = __webpack_require__( /*! ../m_widget_utils */ 28580);

                function sort(loadOptions, dataSource, getAscOrder) {
                    sortDimension(dataSource, loadOptions, "rows", getAscOrder);
                    sortDimension(dataSource, loadOptions, "columns", getAscOrder)
                }

                function sortDimension(dataSource, loadOptions, dimensionName, getAscOrder) {
                    const fields = loadOptions[dimensionName] || [];
                    const baseIndex = loadOptions.headerName === dimensionName ? loadOptions.path.length : 0;
                    const sortingMethodByLevel = [];
                    (0, _m_widget_utils.foreachDataLevel)(dataSource[dimensionName], (item, index) => {
                        const field = fields[index] || {};
                        const sortingMethod = sortingMethodByLevel[index] = sortingMethodByLevel[index] || function(field, dataSource, loadOptions, dimensionName, getAscOrder) {
                            const sortOrder = getAscOrder ? "asc" : field.sortOrder;
                            const sortBy = function(sortBy, getAscOrder) {
                                let member = "text";
                                if ("none" === sortBy) {
                                    member = "index"
                                } else if (getAscOrder || "displayText" !== sortBy) {
                                    member = "value"
                                }
                                return member
                            }(field.sortBy, getAscOrder);
                            const defaultCompare = field.sortingMethod ? function(a, b) {
                                return field.sortingMethod(a, b)
                            } : (0, _m_widget_utils.getCompareFunction)(item => item[sortBy]);
                            const summaryValueSelector = !getAscOrder && function(field, dataSource, loadOptions, dimensionName) {
                                const {
                                    values: values
                                } = dataSource;
                                const sortBySummaryFieldIndex = (0, _m_widget_utils.findField)(loadOptions.values, field.sortBySummaryField);
                                const areRows = "rows" === dimensionName;
                                const sortByDimension = areRows ? dataSource.columns : dataSource.rows;
                                const grandTotalIndex = areRows ? dataSource.grandTotalRowIndex : dataSource.grandTotalColumnIndex;
                                const sortBySummaryPath = field.sortBySummaryPath || [];
                                const sliceIndex = sortBySummaryPath.length ? function(items, path) {
                                    let index = null;
                                    const pathValue = (path || []).join(".");
                                    if (pathValue.length) {
                                        (0, _m_widget_utils.foreachTree)(items, items => {
                                            const item = items[0];
                                            const itemPath = (0, _m_widget_utils.createPath)(items).join(".");
                                            const textPath = (0, _iterator.map)(items, item => item.text).reverse().join(".");
                                            if (pathValue === itemPath || item.key && textPath === pathValue) {
                                                index = items[0].index;
                                                return false
                                            }
                                            return
                                        })
                                    }
                                    return index
                                }(sortByDimension, sortBySummaryPath) : grandTotalIndex;
                                if (values && values.length && sortBySummaryFieldIndex >= 0 && (0, _type.isDefined)(sliceIndex)) {
                                    return function(field) {
                                        const rowIndex = areRows ? field.index : sliceIndex;
                                        const columnIndex = areRows ? sliceIndex : field.index;
                                        const value = ((values[rowIndex] || [
                                            []
                                        ])[columnIndex] || [])[sortBySummaryFieldIndex];
                                        return (0, _type.isDefined)(value) ? value : null
                                    }
                                }
                                return
                            }(field, dataSource, loadOptions, dimensionName);
                            const summaryCompare = summaryValueSelector && (0, _m_widget_utils.getCompareFunction)(summaryValueSelector);
                            return function(a, b) {
                                const result = summaryCompare && summaryCompare(a, b) || defaultCompare(a, b);
                                return "desc" === sortOrder ? -result : result
                            }
                        }(field, dataSource, loadOptions, dimensionName, getAscOrder);
                        item.sort(sortingMethod)
                    }, baseIndex)
                }
                var _default = {
                    sort: sort
                };
                exports.default = _default
            },
        75705:
            /*!********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/export/m_export.js ***!
              \********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = exports.PivotGridExport = exports.ExportController = exports.DataProvider = void 0;
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../../../core/class */ 38377));
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _position = __webpack_require__( /*! ../../../../core/utils/position */ 37518);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _window = __webpack_require__( /*! ../../../../core/utils/window */ 58201);
                var _format_helper = _interopRequireDefault(__webpack_require__( /*! ../../../../format_helper */ 30343));
                var _number = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/number */ 18016));
                var _m_export = __webpack_require__( /*! ../../../grids/grid_core/m_export */ 1229);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const ExportController = {
                    exportTo() {
                        const onExporting = this._createActionByOption("onExporting");
                        const eventArgs = {
                            rtlEnabled: this.option("rtlEnabled"),
                            fileName: "PivotGrid",
                            cancel: false
                        };
                        (0, _type.isFunction)(onExporting) && onExporting(eventArgs)
                    },
                    _getLength(items) {
                        let i;
                        const itemCount = items[0].length;
                        let cellCount = 0;
                        for (i = 0; i < itemCount; i += 1) {
                            cellCount += items[0][i].colspan || 1
                        }
                        return cellCount
                    },
                    _correctCellsInfoItemLengths(cellsInfo, expectedLength) {
                        for (let i = 0; i < cellsInfo.length; i += 1) {
                            while (cellsInfo[i].length < expectedLength) {
                                cellsInfo[i].push({})
                            }
                        }
                        return cellsInfo
                    },
                    _calculateCellInfoItemLength(columnsRow) {
                        let result = 0;
                        for (let columnIndex = 0; columnIndex < columnsRow.length; columnIndex += 1) {
                            result += (0, _type.isDefined)(columnsRow[columnIndex].colspan) ? columnsRow[columnIndex].colspan : 1
                        }
                        return result
                    },
                    _getEmptyCell: () => ({
                        text: "",
                        value: void 0,
                        colspan: 1,
                        rowspan: 1
                    }),
                    _getAllItems(columnsInfo, rowsInfoItems, cellsInfo) {
                        let cellIndex;
                        let rowIndex;
                        let correctedCellsInfo = cellsInfo;
                        const rowsLength = this._getLength(rowsInfoItems);
                        const headerRowsCount = columnsInfo.length;
                        if (columnsInfo.length > 0 && columnsInfo[0].length > 0 && cellsInfo.length > 0 && 0 === cellsInfo[0].length) {
                            const cellInfoItemLength = this._calculateCellInfoItemLength(columnsInfo[0]);
                            if (cellInfoItemLength > 0) {
                                correctedCellsInfo = this._correctCellsInfoItemLengths(cellsInfo, cellInfoItemLength)
                            }
                        }
                        if (0 === correctedCellsInfo.length) {
                            const rowsCount = rowsInfoItems.length;
                            const collapsedColumnCount = columnsInfo.map(headerRowWithColumns => headerRowWithColumns.filter(row => !row.expanded).length).reduce((result, collapsedCount) => result + collapsedCount, 0);
                            for (let rowIdx = 0; rowIdx < rowsCount; rowIdx += 1) {
                                correctedCellsInfo[rowIdx] = [];
                                for (let colIdx = 0; colIdx < collapsedColumnCount; colIdx += 1) {
                                    correctedCellsInfo[rowIdx][colIdx] = this._getEmptyCell()
                                }
                            }
                        }
                        const sourceItems = columnsInfo.concat(correctedCellsInfo);
                        for (rowIndex = 0; rowIndex < rowsInfoItems.length; rowIndex += 1) {
                            for (cellIndex = rowsInfoItems[rowIndex].length - 1; cellIndex >= 0; cellIndex -= 1) {
                                if (!(0, _type.isDefined)(sourceItems[rowIndex + headerRowsCount])) {
                                    sourceItems[rowIndex + headerRowsCount] = []
                                }
                                sourceItems[rowIndex + headerRowsCount].splice(0, 0, (0, _extend.extend)({}, rowsInfoItems[rowIndex][cellIndex]))
                            }
                        }
                        sourceItems[0].splice(0, 0, (0, _extend.extend)({}, this._getEmptyCell(), {
                            alignment: (0, _position.getDefaultAlignment)(this._options.rtlEnabled),
                            colspan: rowsLength,
                            rowspan: headerRowsCount
                        }));
                        return (0, _m_export.prepareItems)(sourceItems, this._getEmptyCell())
                    },
                    getDataProvider() {
                        return new DataProvider(this)
                    }
                };
                exports.ExportController = ExportController;
                const DataProvider = _class.default.inherit({
                    ctor(exportController) {
                        this._exportController = exportController
                    },
                    ready() {
                        this._initOptions();
                        const options = this._options;
                        return (0, _deferred.when)(options.items).done(items => {
                            const headerSize = items[0][0].rowspan;
                            const columns = items[headerSize - 1];
                            (0, _iterator.each)(columns, (_, column) => {
                                column.width = 100
                            });
                            options.columns = columns;
                            options.items = items
                        })
                    },
                    _initOptions() {
                        const exportController = this._exportController;
                        const dataController = exportController._dataController;
                        const items = new _deferred.Deferred;
                        dataController.beginLoading();
                        setTimeout(() => {
                            const columnsInfo = (0, _extend.extend)(true, [], dataController.getColumnsInfo(true));
                            const rowsInfoItems = (0, _extend.extend)(true, [], dataController.getRowsInfo(true));
                            const cellsInfo = dataController.getCellsInfo(true);
                            items.resolve(exportController._getAllItems(columnsInfo, rowsInfoItems, cellsInfo));
                            dataController.endLoading()
                        });
                        this._options = {
                            items: items,
                            rtlEnabled: exportController.option("rtlEnabled"),
                            dataFields: exportController.getDataSource().getAreaFields("data"),
                            rowsArea: exportController._rowsArea,
                            columnsArea: exportController._columnsArea
                        }
                    },
                    getColumns() {
                        return this._options.columns
                    },
                    getColumnsWidths() {
                        const colsArea = this._options.columnsArea;
                        const {
                            rowsArea: rowsArea
                        } = this._options;
                        const {
                            columns: columns
                        } = this._options;
                        const useDefaultWidth = !(0, _window.hasWindow)() || "virtual" === colsArea.option("scrolling.mode") || colsArea.element().is(":hidden");
                        return useDefaultWidth ? columns.map(() => 100) : rowsArea.getColumnsWidth().concat(colsArea.getColumnsWidth())
                    },
                    getRowsCount() {
                        return this._options.items.length
                    },
                    getGroupLevel: () => 0,
                    getCellMerging(rowIndex, cellIndex) {
                        const {
                            items: items
                        } = this._options;
                        const item = items[rowIndex] && items[rowIndex][cellIndex];
                        return item ? {
                            colspan: item.colspan - 1,
                            rowspan: item.rowspan - 1
                        } : {
                            colspan: 0,
                            rowspan: 0
                        }
                    },
                    getFrozenArea() {
                        return {
                            x: this.getRowAreaColCount(),
                            y: this.getColumnAreaRowCount()
                        }
                    },
                    getCellType(rowIndex, cellIndex) {
                        const style = this.getStyles()[this.getStyleId(rowIndex, cellIndex)];
                        return style && style.dataType || "string"
                    },
                    getCellData(rowIndex, cellIndex, isExcelJS) {
                        const result = {};
                        const {
                            items: items
                        } = this._options;
                        const item = items[rowIndex] && items[rowIndex][cellIndex] || {};
                        if (isExcelJS) {
                            result.cellSourceData = item;
                            const areaName = this._tryGetAreaName(item, rowIndex, cellIndex);
                            if (areaName) {
                                result.cellSourceData.area = areaName
                            }
                            result.cellSourceData.rowIndex = rowIndex;
                            result.cellSourceData.columnIndex = cellIndex
                        }
                        if ("string" === this.getCellType(rowIndex, cellIndex)) {
                            result.value = item.text
                        } else {
                            result.value = item.value
                        }
                        if (result.cellSourceData && result.cellSourceData.isWhiteSpace) {
                            result.value = ""
                        }
                        return result
                    },
                    _tryGetAreaName(item, rowIndex, cellIndex) {
                        if (this.isColumnAreaCell(rowIndex, cellIndex)) {
                            return "column"
                        }
                        if (this.isRowAreaCell(rowIndex, cellIndex)) {
                            return "row"
                        }
                        if ((0, _type.isDefined)(item.dataIndex)) {
                            return "data"
                        }
                        return
                    },
                    isRowAreaCell(rowIndex, cellIndex) {
                        return rowIndex >= this.getColumnAreaRowCount() && cellIndex < this.getRowAreaColCount()
                    },
                    isColumnAreaCell(rowIndex, cellIndex) {
                        return cellIndex >= this.getRowAreaColCount() && rowIndex < this.getColumnAreaRowCount()
                    },
                    getColumnAreaRowCount() {
                        return this._options.items[0][0].rowspan
                    },
                    getRowAreaColCount() {
                        return this._options.items[0][0].colspan
                    },
                    getHeaderStyles() {
                        return [{
                            alignment: "center",
                            dataType: "string"
                        }, {
                            alignment: (0, _position.getDefaultAlignment)(this._options.rtlEnabled),
                            dataType: "string"
                        }]
                    },
                    getDataFieldStyles() {
                        const {
                            dataFields: dataFields
                        } = this._options;
                        const dataItemStyle = {
                            alignment: this._options.rtlEnabled ? "left" : "right"
                        };
                        const dataFieldStyles = [];
                        if (dataFields.length) {
                            dataFields.forEach(dataField => {
                                dataFieldStyles.push(_extends(_extends({}, dataItemStyle), {
                                    format: dataField.format,
                                    dataType: this.getCellDataType(dataField)
                                }))
                            });
                            return dataFieldStyles
                        }
                        return [dataItemStyle]
                    },
                    getStyles() {
                        if (this._styles) {
                            return this._styles
                        }
                        this._styles = [...this.getHeaderStyles(), ...this.getDataFieldStyles()];
                        return this._styles
                    },
                    getCellDataType(field) {
                        if (field && field.customizeText) {
                            return "string"
                        }
                        if (field.dataType) {
                            return field.dataType
                        }
                        if (field.format) {
                            if (1 === _number.default.parse(_format_helper.default.format(1, field.format))) {
                                return "number"
                            }
                            if (_format_helper.default.format(new Date, field.format)) {
                                return "date"
                            }
                        }
                        return "string"
                    },
                    getStyleId(rowIndex, cellIndex) {
                        const {
                            items: items
                        } = this._options;
                        const item = items[rowIndex] && items[rowIndex][cellIndex] || {};
                        if (0 === cellIndex && 0 === rowIndex || this.isColumnAreaCell(rowIndex, cellIndex)) {
                            return 0
                        }
                        if (this.isRowAreaCell(rowIndex, cellIndex)) {
                            return 1
                        }
                        return this.getHeaderStyles().length + (item.dataIndex || 0)
                    }
                });
                exports.DataProvider = DataProvider;
                const PivotGridExport = {
                    DEFAUL_COLUMN_WIDTH: 100
                };
                exports.PivotGridExport = PivotGridExport;
                var _default = {
                    ExportController: ExportController,
                    PivotGridExport: PivotGridExport,
                    DataProvider: DataProvider
                };
                exports.default = _default
            },
        98591:
            /*!************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/field_chooser/const.js ***!
              \************************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.SORT_ORDER = exports.SORTABLE_CONST = exports.ICONS = exports.CLASSES = exports.ATTRIBUTES = void 0;
                exports.ATTRIBUTES = {
                    treeViewItem: "tree-view-item",
                    allowScrolling: "allow-scrolling",
                    itemGroup: "item-group"
                };
                exports.CLASSES = {
                    area: {
                        self: "dx-area",
                        box: "dx-area-box",
                        caption: "dx-area-caption",
                        icon: "dx-area-icon",
                        field: "dx-area-field",
                        fieldContainer: "dx-area-field-container",
                        fieldContent: "dx-area-field-content",
                        fieldList: "dx-area-fields",
                        fieldListHeader: "dx-area-fields-header"
                    },
                    pivotGrid: {
                        dragAction: "dx-pivotgrid-drag-action",
                        fieldsContainer: "dx-pivotgrid-fields-container"
                    },
                    fieldChooser: {
                        self: "dx-pivotgridfieldchooser",
                        container: "dx-pivotgridfieldchooser-container",
                        contextMenu: "dx-pivotgridfieldchooser-context-menu"
                    },
                    layout: {
                        zero: "dx-layout-0",
                        second: "dx-layout-2"
                    },
                    treeView: {
                        self: "dx-treeview",
                        borderVisible: "dx-treeview-border-visible"
                    },
                    scrollable: {
                        self: "dx-scrollable"
                    },
                    allFields: "dx-all-fields",
                    col: "dx-col",
                    headerFilter: "dx-header-filter",
                    row: "dx-row",
                    widget: "dx-widget"
                };
                exports.ICONS = {
                    all: "smalliconslayout",
                    column: "columnfield",
                    row: "rowfield",
                    filter: "filter",
                    data: "formula",
                    measure: "formula",
                    hierarchy: "hierarchy",
                    dimension: "detailslayout"
                };
                exports.SORTABLE_CONST = {
                    targets: {
                        drag: "drag"
                    }
                };
                exports.SORT_ORDER = {
                    descending: "desc",
                    ascending: "asc"
                }
            },
        72182:
            /*!**********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/field_chooser/dom.js ***!
              \**********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.dragAndDropItemRender = function($sourceItem, target) {
                    const $itemArray = function($sourceItem, target) {
                        const isAreaBox = $sourceItem.hasClass(_const.CLASSES.area.box);
                        const isTreeList = $sourceItem.attr(_const.ATTRIBUTES.treeViewItem);
                        if (isAreaBox) {
                            return function($sourceItem, target) {
                                const $itemArray = $sourceItem.clone();
                                if (target === _const.SORTABLE_CONST.targets.drag) {
                                    $sourceItem.each((idx, sourceItem) => {
                                        const width = parseFloat((0, _size.getOuterWidth)(sourceItem));
                                        $itemArray.eq(idx).css("width", width);
                                        return true
                                    })
                                }
                                return $itemArray
                            }($sourceItem, target)
                        }
                        if (isTreeList) {
                            return function($sourceItem) {
                                return $sourceItem.clone().addClass(_const.CLASSES.area.box).css("width", parseFloat((0, _size.getOuterWidth)($sourceItem)))
                            }($sourceItem)
                        }
                        return function($sourceItem) {
                            return (0, _renderer.default)("<div>").addClass(_const.CLASSES.area.field).addClass(_const.CLASSES.area.box).text($sourceItem.text())
                        }($sourceItem)
                    }($sourceItem, target);
                    if (target === _const.SORTABLE_CONST.targets.drag) {
                        return function($itemArray) {
                            const $wrappedTmpContainer = (0, _renderer.default)("<div>");
                            $itemArray.each((_, item) => {
                                const $wrappedItem = (0, _renderer.default)("<div>").addClass(_const.CLASSES.pivotGrid.fieldsContainer).addClass(_const.CLASSES.widget).append((0, _renderer.default)(item));
                                $wrappedTmpContainer.append($wrappedItem);
                                return true
                            });
                            return $wrappedTmpContainer.children()
                        }($itemArray)
                    }
                    return $itemArray
                };
                var _renderer = (obj = __webpack_require__( /*! ../../../../core/renderer */ 68374), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _size = __webpack_require__( /*! ../../../../core/utils/size */ 58664);
                var _const = __webpack_require__( /*! ./const */ 98591)
            },
        63857:
            /*!**********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/field_chooser/m_field_chooser.js ***!
              \**********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = exports.FieldChooser = void 0;
                __webpack_require__( /*! ../data_source/m_data_source */ 16710);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../../core/component_registrator */ 99393));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _icon = __webpack_require__( /*! ../../../../core/utils/icon */ 44899);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _window = __webpack_require__( /*! ../../../../core/utils/window */ 58201);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/message */ 28109));
                var _context_menu = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/context_menu */ 10042));
                var _tree_view = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/tree_view */ 30254));
                var _m_widget_utils = __webpack_require__( /*! ../m_widget_utils */ 28580);
                var _const = __webpack_require__( /*! ./const */ 98591);
                var _m_field_chooser_base = __webpack_require__( /*! ./m_field_chooser_base */ 16491);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const DIV = "<div>";
                const hasWindow = (0, _window.hasWindow)();

                function getFirstItem(item, condition) {
                    if (item.items) {
                        for (let i = 0; i < item.items.length; i += 1) {
                            const childrenItem = getFirstItem(item.items[i], condition);
                            if (childrenItem) {
                                return childrenItem
                            }
                        }
                    }
                    if (condition(item)) {
                        return item
                    }
                    return
                }
                const compareOrder = [function(a, b) {
                    const aValue = -!!a.isMeasure;
                    const bValue = +!!b.isMeasure;
                    return aValue + bValue
                }, function(a, b) {
                    const aValue = -!!(a.items && a.items.length);
                    const bValue = +!!(b.items && b.items.length);
                    return aValue + bValue
                }, function(a, b) {
                    const aValue = +!!(false === a.isMeasure && a.field && a.field.levels && a.field.levels.length);
                    const bValue = -!!(false === b.isMeasure && b.field && b.field.levels && b.field.levels.length);
                    return aValue + bValue
                }, (0, _m_widget_utils.getCompareFunction)(item => item.text)];

                function compareItems(a, b) {
                    let result = 0;
                    let i = 0;
                    while (!result && compareOrder[i]) {
                        result = compareOrder[i++](a, b)
                    }
                    return result
                }

                function getScrollable(container) {
                    return container.find(".".concat(_const.CLASSES.scrollable.self)).dxScrollable("instance")
                }
                const FieldChooser = _m_field_chooser_base.FieldChooserBase.inherit({
                    _getDefaultOptions() {
                        return (0, _extend.extend)(this.callBase(), {
                            height: 400,
                            layout: 0,
                            dataSource: null,
                            encodeHtml: true,
                            onContextMenuPreparing: null,
                            allowSearch: false,
                            searchTimeout: 500,
                            texts: {
                                columnFields: _message.default.format("dxPivotGrid-columnFields"),
                                rowFields: _message.default.format("dxPivotGrid-rowFields"),
                                dataFields: _message.default.format("dxPivotGrid-dataFields"),
                                filterFields: _message.default.format("dxPivotGrid-filterFields"),
                                allFields: _message.default.format("dxPivotGrid-allFields")
                            }
                        })
                    },
                    _refreshDataSource() {
                        const that = this;
                        that._expandedPaths = [];
                        that._changedHandler = that._changedHandler || function() {
                            (0, _iterator.each)(that._dataChangedHandlers, (_, func) => {
                                func()
                            });
                            that._fireContentReadyAction();
                            that._skipStateChange = true;
                            that.option("state", that._dataSource.state());
                            that._skipStateChange = false
                        };
                        that._disposeDataSource();
                        that.callBase();
                        that._dataSource && that._dataSource.on("changed", that._changedHandler)
                    },
                    _disposeDataSource() {
                        const that = this;
                        const dataSource = that._dataSource;
                        if (dataSource) {
                            dataSource.off("changed", that._changedHandler);
                            that._dataSource = void 0
                        }
                    },
                    _dispose() {
                        this._disposeDataSource();
                        this.callBase.apply(this, arguments)
                    },
                    _init() {
                        this.callBase();
                        this._refreshDataSource();
                        this._dataChangedHandlers = [];
                        this._initActions()
                    },
                    _initActions() {
                        this._actions = {
                            onContextMenuPreparing: this._createActionByOption("onContextMenuPreparing")
                        }
                    },
                    _trigger(eventName, eventArg) {
                        this._actions[eventName](eventArg)
                    },
                    _setOptionsByReference() {
                        this.callBase();
                        (0, _extend.extend)(this._optionsByReference, {
                            dataSource: true
                        })
                    },
                    _optionChanged(args) {
                        const that = this;
                        switch (args.name) {
                            case "dataSource":
                                that._refreshDataSource();
                                that._invalidate();
                                break;
                            case "layout":
                            case "texts":
                            case "allowSearch":
                            case "searchTimeout":
                            case "encodeHtml":
                                that._invalidate();
                                break;
                            case "onContextMenuPreparing":
                                that._actions[args.name] = that._createActionByOption(args.name);
                                break;
                            default:
                                that.callBase(args)
                        }
                    },
                    _clean(skipStateSetting) {
                        !skipStateSetting && this._dataSource && this.option("state", this._dataSource.state());
                        this.$element().children(".".concat(_const.CLASSES.fieldChooser.container)).remove()
                    },
                    _renderLayout0($container) {
                        $container.addClass(_const.CLASSES.layout.zero);
                        const $row1 = (0, _renderer.default)(DIV).addClass(_const.CLASSES.row).appendTo($container);
                        const $row2 = (0, _renderer.default)(DIV).addClass(_const.CLASSES.row).appendTo($container);
                        const $col1 = (0, _renderer.default)(DIV).addClass(_const.CLASSES.col).appendTo($row1);
                        const $col2 = (0, _renderer.default)(DIV).addClass(_const.CLASSES.col).appendTo($row1);
                        const $col3 = (0, _renderer.default)(DIV).addClass(_const.CLASSES.col).appendTo($row2);
                        const $col4 = (0, _renderer.default)(DIV).addClass(_const.CLASSES.col).appendTo($row2);
                        this._renderArea($col1, "all");
                        this._renderArea($col2, "row");
                        this._renderArea($col2, "column");
                        this._renderArea($col3, "filter");
                        this._renderArea($col4, "data")
                    },
                    _renderLayout1($container) {
                        const $col1 = (0, _renderer.default)(DIV).addClass(_const.CLASSES.col).appendTo($container);
                        const $col2 = (0, _renderer.default)(DIV).addClass(_const.CLASSES.col).appendTo($container);
                        this._renderArea($col1, "all");
                        this._renderArea($col2, "filter");
                        this._renderArea($col2, "row");
                        this._renderArea($col2, "column");
                        this._renderArea($col2, "data")
                    },
                    _renderLayout2($container) {
                        $container.addClass(_const.CLASSES.layout.second);
                        const $row1 = (0, _renderer.default)(DIV).addClass(_const.CLASSES.row).appendTo($container);
                        this._renderArea($row1, "all");
                        const $row2 = (0, _renderer.default)(DIV).addClass(_const.CLASSES.row).appendTo($container);
                        const $col1 = (0, _renderer.default)(DIV).addClass(_const.CLASSES.col).appendTo($row2);
                        const $col2 = (0, _renderer.default)(DIV).addClass(_const.CLASSES.col).appendTo($row2);
                        this._renderArea($col1, "filter");
                        this._renderArea($col1, "row");
                        this._renderArea($col2, "column");
                        this._renderArea($col2, "data")
                    },
                    _initMarkup() {
                        const that = this;
                        const $element = this.$element();
                        const $container = (0, _renderer.default)(DIV).addClass(_const.CLASSES.fieldChooser.container).appendTo($element);
                        const layout = that.option("layout");
                        that.callBase();
                        $element.addClass(_const.CLASSES.fieldChooser.self).addClass(_const.CLASSES.pivotGrid.fieldsContainer);
                        that._dataChangedHandlers = [];
                        const dataSource = this._dataSource;
                        const currentState = "instantly" !== that.option("applyChangesMode") && dataSource && dataSource.state();
                        currentState && that.option("state") && dataSource.state(that.option("state"), true);
                        if (0 === layout) {
                            that._renderLayout0($container)
                        } else if (1 === layout) {
                            that._renderLayout1($container)
                        } else {
                            that._renderLayout2($container)
                        }
                        currentState && dataSource.state(currentState, true)
                    },
                    _renderContentImpl() {
                        this.callBase();
                        this.renderSortable();
                        this._renderContextMenu();
                        this.updateDimensions()
                    },
                    _fireContentReadyAction() {
                        if (!this._dataSource || !this._dataSource.isLoading()) {
                            this.callBase()
                        }
                    },
                    _getContextMenuArgs(dxEvent) {
                        const targetFieldElement = (0, _renderer.default)(dxEvent.target).closest(".".concat(_const.CLASSES.area.field));
                        const targetGroupElement = (0, _renderer.default)(dxEvent.target).closest(".".concat(_const.CLASSES.area.fieldList));
                        let field;
                        let area;
                        if (targetFieldElement.length) {
                            const fieldCopy = targetFieldElement.data("field");
                            if (fieldCopy) {
                                field = this.getDataSource().field(fieldCopy.index) || fieldCopy
                            }
                        }
                        if (targetGroupElement.length) {
                            area = targetGroupElement.attr("group")
                        }
                        return {
                            event: dxEvent,
                            field: field,
                            area: area,
                            items: []
                        }
                    },
                    _renderContextMenu() {
                        const that = this;
                        const $container = that.$element();
                        if (that._contextMenu) {
                            that._contextMenu.$element().remove()
                        }
                        that._contextMenu = that._createComponent((0, _renderer.default)(DIV).appendTo($container), _context_menu.default, {
                            onPositioning(actionArgs) {
                                const {
                                    event: event
                                } = actionArgs;
                                if (!event) {
                                    return
                                }
                                const args = that._getContextMenuArgs(event);
                                that._trigger("onContextMenuPreparing", args);
                                if (args.items && args.items.length) {
                                    actionArgs.component.option("items", args.items)
                                } else {
                                    actionArgs.cancel = true
                                }
                            },
                            target: $container,
                            onItemClick(params) {
                                params.itemData.onItemClick && params.itemData.onItemClick(params)
                            },
                            cssClass: _const.CLASSES.fieldChooser.contextMenu
                        })
                    },
                    _createTreeItems(fields, groupFieldNames, path) {
                        const that = this;
                        let isMeasure;
                        let resultItems = [];
                        const groupedItems = [];
                        const groupFieldName = groupFieldNames[0];
                        const fieldsByGroup = {};
                        if (!groupFieldName) {
                            (0, _iterator.each)(fields, (_, field) => {
                                let icon;
                                if (true === field.isMeasure) {
                                    icon = _const.ICONS.measure
                                }
                                if (false === field.isMeasure) {
                                    icon = field.groupName ? _const.ICONS.hierarchy : _const.ICONS.dimension
                                }
                                resultItems.push({
                                    index: field.index,
                                    field: field,
                                    key: field.dataField,
                                    selected: (0, _type.isDefined)(field.area),
                                    text: field.caption || field.dataField,
                                    icon: icon,
                                    isMeasure: field.isMeasure,
                                    isDefault: field.isDefault
                                })
                            })
                        } else {
                            (0, _iterator.each)(fields, (_, field) => {
                                const groupName = field[groupFieldName] || "";
                                fieldsByGroup[groupName] = fieldsByGroup[groupName] || [];
                                fieldsByGroup[groupName].push(field);
                                if (void 0 === isMeasure) {
                                    isMeasure = true
                                }
                                isMeasure = isMeasure && true === field.isMeasure
                            });
                            (0, _iterator.each)(fieldsByGroup, (groupName, fields) => {
                                const currentPath = path ? "".concat(path, ".").concat(groupName) : groupName;
                                const items = that._createTreeItems(fields, groupFieldNames.slice(1), currentPath);
                                if (groupName) {
                                    groupedItems.push({
                                        key: groupName,
                                        text: groupName,
                                        path: currentPath,
                                        isMeasure: items.isMeasure,
                                        expanded: that._expandedPaths.includes(currentPath),
                                        items: items
                                    })
                                } else {
                                    resultItems = items
                                }
                            });
                            resultItems = groupedItems.concat(resultItems);
                            resultItems.isMeasure = isMeasure
                        }
                        return resultItems
                    },
                    _createFieldsDataSource(dataSource) {
                        let fields = dataSource && dataSource.fields() || [];
                        fields = fields.filter(field => false !== field.visible && !(0, _type.isDefined)(field.groupIndex));
                        const treeItems = this._createTreeItems(fields, ["dimension", "displayFolder"]);
                        (0, _m_widget_utils.foreachDataLevel)(treeItems, items => {
                            items.sort(compareItems)
                        }, 0, "items");
                        return treeItems
                    },
                    _renderFieldsTreeView(container) {
                        const that = this;
                        const dataSource = that._dataSource;
                        const treeView = that._createComponent(container, _tree_view.default, {
                            dataSource: that._createFieldsDataSource(dataSource),
                            showCheckBoxesMode: "normal",
                            expandNodesRecursive: false,
                            searchEnabled: that.option("allowSearch"),
                            searchTimeout: that.option("searchTimeout"),
                            useNativeScrolling: false,
                            itemTemplate(itemData, itemIndex, itemElement) {
                                var _a;
                                const $item = (0, _renderer.default)("<div>").toggleClass(_const.CLASSES.area.field, !itemData.items).attr(_const.ATTRIBUTES.treeViewItem, true).data("field", itemData.field).appendTo(itemElement);
                                if (itemData.icon) {
                                    null === (_a = (0, _icon.getImageContainer)(itemData.icon)) || void 0 === _a ? void 0 : _a.appendTo($item)
                                }(0, _renderer.default)("<span>").text(itemData.text).appendTo($item)
                            },
                            onItemCollapsed(e) {
                                const index = that._expandedPaths.indexOf(e.itemData.path);
                                if (index >= 0) {
                                    that._expandedPaths.splice(index, 1)
                                }
                            },
                            onItemExpanded(e) {
                                const index = that._expandedPaths.indexOf(e.itemData.path);
                                if (index < 0) {
                                    that._expandedPaths.push(e.itemData.path)
                                }
                            },
                            onItemSelectionChanged(e) {
                                const data = e.itemData;
                                let field;
                                let fields;
                                let needSelectDefaultItem = true;
                                let area;
                                if (data.items) {
                                    if (data.selected) {
                                        treeView.unselectItem(data);
                                        return
                                    }
                                    that._processDemandState(() => {
                                        fields = function getDimensionFields(item, fields) {
                                            const result = [];
                                            if (item.items) {
                                                for (let i = 0; i < item.items.length; i += 1) {
                                                    result.push.apply(result, getDimensionFields(item.items[i], fields))
                                                }
                                            } else if ((0, _type.isDefined)(item.index)) {
                                                result.push(fields[item.index])
                                            }
                                            return result
                                        }(data, dataSource.fields());
                                        for (let i = 0; i < fields.length; i += 1) {
                                            if (fields[i].area) {
                                                needSelectDefaultItem = false;
                                                break
                                            }
                                        }
                                    });
                                    if (needSelectDefaultItem) {
                                        const item = getFirstItem(data, item => item.isDefault) || getFirstItem(data, item => (0, _type.isDefined)(item.index));
                                        item && treeView.selectItem(item);
                                        return
                                    }
                                } else {
                                    field = dataSource.fields()[data.index];
                                    if (data.selected) {
                                        area = field.isMeasure ? "data" : "column"
                                    }
                                    if (field) {
                                        fields = [field]
                                    }
                                }
                                that._applyChanges(fields, {
                                    area: area,
                                    areaIndex: void 0
                                })
                            }
                        });
                        that._dataChangedHandlers.push((function() {
                            let scrollable = getScrollable(container);
                            const scrollTop = scrollable ? scrollable.scrollTop() : 0;
                            treeView.option({
                                dataSource: that._createFieldsDataSource(dataSource)
                            });
                            scrollable = getScrollable(container);
                            if (scrollable) {
                                scrollable.scrollTo({
                                    y: scrollTop
                                });
                                scrollable.update()
                            }
                        }))
                    },
                    _renderAreaFields($container, area) {
                        const that = this;
                        const dataSource = that._dataSource;
                        const fields = dataSource ? (0, _extend.extend)(true, [], dataSource.getAreaFields(area, true)) : [];
                        $container.empty();
                        (0, _iterator.each)(fields, (_, field) => {
                            if (false !== field.visible) {
                                that.renderField(field, true).appendTo($container)
                            }
                        })
                    },
                    _renderArea(container, area) {
                        const that = this;
                        const $areaContainer = (0, _renderer.default)(DIV).addClass(_const.CLASSES.area.self).appendTo(container);
                        const $fieldsHeaderContainer = (0, _renderer.default)(DIV).addClass(_const.CLASSES.area.fieldListHeader).appendTo($areaContainer);
                        const caption = that.option("texts.".concat(area, "Fields"));
                        let $fieldsContent;
                        let render;
                        (0, _renderer.default)("<span>").addClass(_const.CLASSES.area.icon).addClass("dx-icon-".concat(_const.ICONS[area])).appendTo($fieldsHeaderContainer);
                        (0, _renderer.default)("<span>").html("&nbsp;").appendTo($fieldsHeaderContainer);
                        (0, _renderer.default)("<span>").addClass(_const.CLASSES.area.caption).text(caption).appendTo($fieldsHeaderContainer);
                        const $fieldsContainer = (0, _renderer.default)(DIV).addClass(_const.CLASSES.area.fieldList).addClass(_const.CLASSES.pivotGrid.dragAction).appendTo($areaContainer);
                        if ("all" !== area) {
                            $fieldsContainer.attr("group", area).attr(_const.ATTRIBUTES.allowScrolling, true);
                            $fieldsContent = (0, _renderer.default)(DIV).addClass(_const.CLASSES.area.fieldContainer).appendTo($fieldsContainer);
                            render = function() {
                                that._renderAreaFields($fieldsContent, area)
                            };
                            that._dataChangedHandlers.push(render);
                            render();
                            $fieldsContainer.dxScrollable({
                                useNative: false
                            })
                        } else {
                            $areaContainer.addClass(_const.CLASSES.allFields);
                            $fieldsContainer.addClass(_const.CLASSES.treeView.borderVisible);
                            that._renderFieldsTreeView($fieldsContainer)
                        }
                    },
                    _getSortableOptions: () => ({}),
                    _adjustSortableOnChangedArgs() {},
                    resetTreeView() {
                        const treeView = this.$element().find(".".concat(_const.CLASSES.treeView.self)).dxTreeView("instance");
                        if (treeView) {
                            treeView.option("searchValue", "");
                            treeView.collapseAll()
                        }
                    },
                    applyChanges() {
                        const state = this.option("state");
                        if ((0, _type.isDefined)(state)) {
                            this._dataSource.state(state)
                        }
                    },
                    cancelChanges() {
                        const dataSource = this._dataSource;
                        if (!dataSource.isLoading()) {
                            this.option("state", dataSource.state());
                            return true
                        }
                        return false
                    },
                    getDataSource() {
                        return this._dataSource
                    },
                    updateDimensions() {
                        const $scrollableElements = this.$element().find(".".concat(_const.CLASSES.area.self, " .").concat(_const.CLASSES.scrollable.self));
                        $scrollableElements.dxScrollable("update")
                    },
                    _visibilityChanged(visible) {
                        if (visible && hasWindow) {
                            this.updateDimensions()
                        }
                    }
                });
                exports.FieldChooser = FieldChooser;
                (0, _component_registrator.default)("dxPivotGridFieldChooser", FieldChooser);
                var _default = {
                    FieldChooser: FieldChooser
                };
                exports.default = _default
            },
        16491:
            /*!***************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/field_chooser/m_field_chooser_base.js ***!
              \***************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = exports.FieldChooserBase = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../../core/component_registrator */ 99393));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _array_store = _interopRequireDefault(__webpack_require__( /*! ../../../../data/array_store */ 26562));
                var _click = __webpack_require__( /*! ../../../../events/click */ 95429);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../events/core/events_engine */ 55994));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/message */ 28109));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.widget */ 14390));
                var _m_column_state_mixin = _interopRequireDefault(__webpack_require__( /*! ../../../grids/grid_core/column_state_mixin/m_column_state_mixin */ 51255));
                var _m_header_filter_core = __webpack_require__( /*! ../../../grids/grid_core/header_filter/m_header_filter_core */ 37565);
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../../../grids/grid_core/m_utils */ 60082));
                var _m_sorting_mixin = _interopRequireDefault(__webpack_require__( /*! ../../../grids/grid_core/sorting/m_sorting_mixin */ 62930));
                var _m_widget_utils = __webpack_require__( /*! ../m_widget_utils */ 28580);
                var _m_sortable = _interopRequireDefault(__webpack_require__( /*! ../sortable/m_sortable */ 71442));
                var _const = __webpack_require__( /*! ./const */ 98591);
                var _dom = __webpack_require__( /*! ./dom */ 72182);
                var _utils = __webpack_require__( /*! ./utils */ 95670);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const {
                    Sortable: Sortable
                } = _m_sortable.default;
                const HeaderFilterView = _m_header_filter_core.HeaderFilterView.inherit({
                    _getSearchExpr(options, headerFilterOptions) {
                        options.useDefaultSearchExpr = true;
                        return this.callBase(options, headerFilterOptions)
                    }
                });

                function getMainGroupField(dataSource, sourceField) {
                    let field = sourceField;
                    if ((0, _type.isDefined)(sourceField.groupIndex)) {
                        field = dataSource.getAreaFields(sourceField.area, true)[sourceField.areaIndex]
                    }
                    return field
                }

                function getStringState(state) {
                    state = state || {};
                    return JSON.stringify([state.fields, state.columnExpandedPaths, state.rowExpandedPaths])
                }
                const FieldChooserBase = _ui.default.inherit(_m_column_state_mixin.default).inherit(_m_sorting_mixin.default).inherit(_m_header_filter_core.headerFilterMixin).inherit({
                    _getDefaultOptions() {
                        return (0, _extend.extend)(this.callBase(), {
                            allowFieldDragging: true,
                            applyChangesMode: "instantly",
                            state: null,
                            headerFilter: {
                                width: 252,
                                height: 325,
                                allowSelectAll: true,
                                showRelevantValues: false,
                                search: {
                                    enabled: false,
                                    timeout: 500,
                                    editorOptions: {},
                                    mode: "contains"
                                },
                                texts: {
                                    emptyValue: _message.default.format("dxDataGrid-headerFilterEmptyValue"),
                                    ok: _message.default.format("dxDataGrid-headerFilterOK"),
                                    cancel: _message.default.format("dxDataGrid-headerFilterCancel")
                                }
                            },
                            remoteSort: false
                        })
                    },
                    _init() {
                        this.callBase();
                        this._headerFilterView = new HeaderFilterView(this);
                        this._refreshDataSource();
                        this.subscribeToEvents();
                        _m_utils.default.logHeaderFilterDeprecatedWarningIfNeed(this)
                    },
                    _refreshDataSource() {
                        const dataSource = this.option("dataSource");
                        if (dataSource && dataSource.fields && dataSource.load) {
                            this._dataSource = dataSource
                        }
                    },
                    _optionChanged(args) {
                        switch (args.name) {
                            case "dataSource":
                                this._refreshDataSource();
                                break;
                            case "applyChangesMode":
                            case "remoteSort":
                                break;
                            case "state":
                                if (this._skipStateChange || !this._dataSource) {
                                    break
                                }
                                if ("instantly" === this.option("applyChangesMode") && getStringState(this._dataSource.state()) !== getStringState(args.value)) {
                                    this._dataSource.state(args.value)
                                } else {
                                    this._clean(true);
                                    this._renderComponent()
                                }
                                break;
                            case "headerFilter":
                            case "allowFieldDragging":
                                this._invalidate();
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    renderField(field, showColumnLines) {
                        const that = this;
                        const $fieldContent = (0, _renderer.default)("<div>").addClass(_const.CLASSES.area.fieldContent).text(field.caption || field.dataField);
                        const $fieldElement = (0, _renderer.default)("<div>").addClass(_const.CLASSES.area.field).addClass(_const.CLASSES.area.box).data("field", field).append($fieldContent);
                        const mainGroupField = getMainGroupField(that._dataSource, field);
                        if ("data" !== field.area) {
                            if (field.allowSorting) {
                                that._applyColumnState({
                                    name: "sort",
                                    rootElement: $fieldElement,
                                    column: {
                                        alignment: that.option("rtlEnabled") ? "right" : "left",
                                        sortOrder: "desc" === field.sortOrder ? "desc" : "asc",
                                        allowSorting: field.allowSorting
                                    },
                                    showColumnLines: showColumnLines
                                })
                            }
                            that._applyColumnState({
                                name: "headerFilter",
                                rootElement: $fieldElement,
                                column: {
                                    alignment: that.option("rtlEnabled") ? "right" : "left",
                                    filterValues: mainGroupField.filterValues,
                                    allowFiltering: mainGroupField.allowFiltering && !field.groupIndex,
                                    allowSorting: field.allowSorting
                                },
                                showColumnLines: showColumnLines
                            })
                        }
                        if (field.groupName) {
                            $fieldElement.attr(_const.ATTRIBUTES.itemGroup, field.groupName)
                        }
                        return $fieldElement
                    },
                    _clean() {},
                    _render() {
                        this.callBase();
                        this._headerFilterView.render(this.$element())
                    },
                    renderSortable() {
                        const that = this;
                        that._createComponent(that.$element(), Sortable, (0, _extend.extend)({
                            allowDragging: that.option("allowFieldDragging"),
                            itemSelector: ".".concat(_const.CLASSES.area.field),
                            itemContainerSelector: ".".concat(_const.CLASSES.area.fieldContainer),
                            groupSelector: ".".concat(_const.CLASSES.area.fieldList),
                            groupFilter() {
                                const dataSource = that._dataSource;
                                const $sortable = (0, _renderer.default)(this).closest(".dx-sortable-old");
                                const pivotGrid = $sortable.data("dxPivotGrid");
                                const pivotGridFieldChooser = $sortable.data("dxPivotGridFieldChooser");
                                if (pivotGrid) {
                                    return pivotGrid.getDataSource() === dataSource
                                }
                                if (pivotGridFieldChooser) {
                                    return pivotGridFieldChooser.option("dataSource") === dataSource
                                }
                                return false
                            },
                            itemRender: _dom.dragAndDropItemRender,
                            onDragging(e) {
                                const field = e.sourceElement.data("field");
                                const {
                                    targetGroup: targetGroup
                                } = e;
                                e.cancel = false;
                                if (true === field.isMeasure) {
                                    if ("column" === targetGroup || "row" === targetGroup || "filter" === targetGroup) {
                                        e.cancel = true
                                    }
                                } else if (false === field.isMeasure && "data" === targetGroup) {
                                    e.cancel = true
                                }
                            },
                            useIndicator: true,
                            onChanged(e) {
                                const field = e.sourceElement.data("field");
                                e.removeSourceElement = !!e.sourceGroup;
                                that._adjustSortableOnChangedArgs(e);
                                if (field) {
                                    const {
                                        targetIndex: targetIndex
                                    } = e;
                                    let mainGroupField;
                                    let invisibleFieldsIndexOffset = 0;
                                    that._processDemandState(dataSource => {
                                        const fields = dataSource.getAreaFields(field.area, true);
                                        mainGroupField = getMainGroupField(dataSource, field);
                                        const visibleFields = fields.filter(f => false !== f.visible);
                                        const fieldBeforeTarget = visibleFields[targetIndex - 1];
                                        if (fieldBeforeTarget) {
                                            invisibleFieldsIndexOffset = fields.filter(f => false === f.visible && f.areaIndex <= fieldBeforeTarget.areaIndex).length
                                        }
                                    });
                                    that._applyChanges([mainGroupField], {
                                        area: e.targetGroup,
                                        areaIndex: targetIndex + invisibleFieldsIndexOffset
                                    })
                                }
                            }
                        }, that._getSortableOptions()))
                    },
                    _processDemandState(func) {
                        const that = this;
                        const isInstantlyMode = "instantly" === that.option("applyChangesMode");
                        const dataSource = that._dataSource;
                        if (isInstantlyMode) {
                            func(dataSource, isInstantlyMode)
                        } else {
                            const currentState = dataSource.state();
                            const pivotGridState = that.option("state");
                            if (pivotGridState) {
                                dataSource.state(pivotGridState, true)
                            }
                            func(dataSource, isInstantlyMode);
                            dataSource.state(currentState, true)
                        }
                    },
                    _applyChanges(fields, props) {
                        const that = this;
                        that._processDemandState((dataSource, isInstantlyMode) => {
                            fields.forEach(_ref => {
                                let {
                                    index: index
                                } = _ref;
                                dataSource.field(index, props)
                            });
                            if (isInstantlyMode) {
                                dataSource.load()
                            } else {
                                that._changedHandler()
                            }
                        })
                    },
                    _applyLocalSortChanges(fieldIdx, sortOrder) {
                        this._processDemandState(dataSource => {
                            dataSource.field(fieldIdx, {
                                sortOrder: sortOrder
                            });
                            dataSource.sortLocal()
                        })
                    },
                    _adjustSortableOnChangedArgs(e) {
                        e.removeSourceElement = false;
                        e.removeTargetElement = true;
                        e.removeSourceClass = false
                    },
                    _getSortableOptions: () => ({
                        direction: "auto"
                    }),
                    subscribeToEvents(element) {
                        const that = this;
                        const func = function(e) {
                            const field = (0, _renderer.default)(e.currentTarget).data("field");
                            const mainGroupField = (0, _extend.extend)(true, {}, getMainGroupField(that._dataSource, field));
                            const isHeaderFilter = (0, _renderer.default)(e.target).hasClass(_const.CLASSES.headerFilter);
                            const dataSource = that._dataSource;
                            const type = mainGroupField.groupName ? "tree" : "list";
                            const paginate = dataSource.paginate() && "list" === type;
                            if (isHeaderFilter) {
                                that._headerFilterView.showHeaderFilterMenu((0, _renderer.default)(e.currentTarget), (0, _extend.extend)(mainGroupField, {
                                    type: type,
                                    encodeHtml: that.option("encodeHtml"),
                                    dataSource: {
                                        useDefaultSearch: !paginate,
                                        load(options) {
                                            const {
                                                userData: userData
                                            } = options;
                                            if (userData.store) {
                                                return userData.store.load(options)
                                            }
                                            const d = new _deferred.Deferred;
                                            dataSource.getFieldValues(mainGroupField.index, that.option("headerFilter.showRelevantValues"), paginate ? options : void 0).done(data => {
                                                const emptyValue = that.option("headerFilter.texts.emptyValue");
                                                data.forEach(element => {
                                                    if (!element.text) {
                                                        element.text = emptyValue
                                                    }
                                                });
                                                if (paginate) {
                                                    d.resolve(data)
                                                } else {
                                                    userData.store = new _array_store.default(data);
                                                    userData.store.load(options).done(d.resolve).fail(d.reject)
                                                }
                                            }).fail(d.reject);
                                            return d
                                        },
                                        postProcess(data) {
                                            ! function(groupItems, field) {
                                                const filterValues = [];
                                                const isTree = !!field.groupName;
                                                const isExcludeFilterType = "exclude" === field.filterType;
                                                if (field.filterValues) {
                                                    (0, _iterator.each)(field.filterValues, (_, filterValue) => {
                                                        filterValues.push(Array.isArray(filterValue) ? filterValue.join("/") : filterValue && filterValue.valueOf())
                                                    })
                                                }(0, _m_widget_utils.foreachTree)(groupItems, items => {
                                                    const item = items[0];
                                                    const path = (0, _m_widget_utils.createPath)(items);
                                                    const preparedFilterValueByText = isTree ? (0, _iterator.map)(items, item => item.text).reverse().join("/") : item.text;
                                                    item.value = isTree ? path.slice(0) : item.key || item.value;
                                                    const preparedFilterValue = isTree ? path.join("/") : item.value && item.value.valueOf();
                                                    if (item.children) {
                                                        item.items = item.children;
                                                        item.children = null
                                                    }(0, _m_header_filter_core.updateHeaderFilterItemSelectionState)(item, item.key && filterValues.includes(preparedFilterValueByText) || filterValues.includes(preparedFilterValue), isExcludeFilterType)
                                                })
                                            }(data, mainGroupField);
                                            return data
                                        }
                                    },
                                    apply() {
                                        that._applyChanges([mainGroupField], {
                                            filterValues: this.filterValues,
                                            filterType: this.filterType
                                        })
                                    }
                                }))
                            } else if (field.allowSorting && "data" !== field.area) {
                                const isRemoteSort = that.option("remoteSort");
                                const sortOrder = (0, _utils.reverseSortOrder)(field.sortOrder);
                                if (isRemoteSort) {
                                    that._applyChanges([field], {
                                        sortOrder: sortOrder
                                    })
                                } else {
                                    that._applyLocalSortChanges(field.index, sortOrder)
                                }
                            }
                        };
                        if (element) {
                            _events_engine.default.on(element, _click.name, ".".concat(_const.CLASSES.area.field, ".").concat(_const.CLASSES.area.box), func);
                            return
                        }
                        _events_engine.default.on(that.$element(), _click.name, ".".concat(_const.CLASSES.area.field, ".").concat(_const.CLASSES.area.box), func)
                    },
                    _initTemplates: _common.noop,
                    addWidgetPrefix: className => "dx-pivotgrid-".concat(className)
                });
                exports.FieldChooserBase = FieldChooserBase;
                (0, _component_registrator.default)("dxPivotGridFieldChooserBase", FieldChooserBase);
                var _default = {
                    FieldChooserBase: FieldChooserBase
                };
                exports.default = _default
            },
        95670:
            /*!************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/field_chooser/utils.js ***!
              \************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.reverseSortOrder = void 0;
                var _const = __webpack_require__( /*! ./const */ 98591);
                exports.reverseSortOrder = sortOrder => sortOrder === _const.SORT_ORDER.descending ? _const.SORT_ORDER.ascending : _const.SORT_ORDER.descending
            },
        70513:
            /*!******************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/fields_area/m_fields_area.js ***!
              \******************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = exports.FieldsArea = void 0;
                __webpack_require__( /*! ../field_chooser/m_field_chooser_base */ 16491);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _style = __webpack_require__( /*! ../../../../core/utils/style */ 80968);
                var _button = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/button */ 63008));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/popup/ui.popup */ 51495));
                var _m_area_item = __webpack_require__( /*! ../area_item/m_area_item */ 74305);
                var _m_widget_utils = __webpack_require__( /*! ../m_widget_utils */ 28580);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const DIV = "<div>";
                const FieldsArea = _m_area_item.AreaItem.inherit({
                    ctor(component, area) {
                        this.callBase(component);
                        this._area = area
                    },
                    _getAreaName: () => "fields",
                    _createGroupElement() {
                        return (0, _renderer.default)(DIV).addClass("dx-pivotgrid-fields-area").addClass("dx-area-fields").addClass("dx-pivotgrid-drag-action").attr("group", this._area)
                    },
                    isVisible() {
                        return !!this.option("fieldPanel.visible") && this.option("fieldPanel.show".concat((0, _m_widget_utils.capitalizeFirstLetter)(this._area), "Fields"))
                    },
                    _renderButton(element) {
                        const that = this;
                        const container = (0, _renderer.default)("<td>").appendTo((0, _renderer.default)("<tr>").appendTo(element));
                        const button = that.component._createComponent((0, _renderer.default)(DIV).appendTo(container), _button.default, {
                            text: "Fields",
                            icon: "menu",
                            width: "auto",
                            onClick() {
                                const popup = that.tableElement().find(".dx-fields-area-popup").dxPopup("instance");
                                if (!popup.option("visible")) {
                                    popup.show()
                                }
                            }
                        });
                        button.$element().addClass("dx-pivotgrid-fields-area-hamburger")
                    },
                    _getPopupOptions: (row, button) => ({
                        contentTemplate: () => (0, _renderer.default)("<table>").addClass("dx-area-field-container").append((0, _renderer.default)("<thead>").addClass("dx-pivotgrid-fields-area-head").append(row)),
                        height: "auto",
                        width: "auto",
                        position: {
                            at: "left",
                            my: "left",
                            of: button
                        },
                        dragEnabled: false,
                        animation: {
                            show: {
                                type: "pop",
                                duration: 200
                            }
                        },
                        shading: false,
                        showTitle: false,
                        hideOnOutsideClick: true,
                        container: button.parent()
                    }),
                    _renderPopup(tableElement, row) {
                        const that = this;
                        const button = tableElement.find(".dx-button");
                        const popupOptions = that._getPopupOptions(row, button);
                        const FieldChooserBase = that.component.$element().dxPivotGridFieldChooserBase("instance");
                        if (that._rowPopup) {
                            that._rowPopup.$element().remove()
                        }
                        that._rowPopup = that.component._createComponent((0, _renderer.default)(DIV).appendTo(tableElement), _ui.default, popupOptions);
                        that._rowPopup.$element().addClass("dx-fields-area-popup");
                        that._rowPopup.content().addClass("dx-pivotgrid-fields-container");
                        that._rowPopup.content().parent().attr("group", "row");
                        FieldChooserBase.subscribeToEvents(that._rowPopup.content());
                        FieldChooserBase.renderSortable(that._rowPopup.content())
                    },
                    _shouldCreateButton: () => false,
                    _renderTableContent(tableElement, data) {
                        const that = this;
                        const groupElement = this.groupElement();
                        const isVisible = this.isVisible();
                        const fieldChooserBase = that.component.$element().dxPivotGridFieldChooserBase("instance");
                        const head = (0, _renderer.default)("<thead>").addClass("dx-pivotgrid-fields-area-head").appendTo(tableElement);
                        const area = that._area;
                        const row = (0, _renderer.default)("<tr>");
                        groupElement.toggleClass("dx-hidden", !isVisible);
                        tableElement.addClass("dx-area-field-container");
                        if (!isVisible) {
                            return
                        }(0, _iterator.each)(data, (index, field) => {
                            if (field.area === area && false !== field.visible) {
                                const td = (0, _renderer.default)("<td>").append(fieldChooserBase.renderField(field, "row" === field.area));
                                const indicators = td.find(".dx-column-indicators");
                                if (indicators.length && that._shouldCreateButton()) {
                                    indicators.insertAfter(indicators.next())
                                }
                                td.appendTo(row);
                                ! function(field, nextField, prevField, $container) {
                                    if (prevField && prevField.groupName && prevField.groupName === field.groupName) {
                                        (0, _renderer.default)(DIV).addClass("dx-group-connector").addClass("dx-group-connector-prev").appendTo($container)
                                    }
                                    if (nextField && nextField.groupName && nextField.groupName === field.groupName) {
                                        (0, _renderer.default)(DIV).addClass("dx-group-connector").addClass("dx-group-connector-next").appendTo($container)
                                    }
                                }(field, data[index + 1], data[index - 1], td)
                            }
                        });
                        if (!row.children().length) {
                            (0, _renderer.default)("<td>").append((0, _renderer.default)(DIV).addClass("dx-empty-area-text").text(this.option("fieldPanel.texts.".concat(area, "FieldArea")))).appendTo(row)
                        }
                        if (that._shouldCreateButton()) {
                            that._renderButton(head);
                            that._renderPopup(tableElement, row)
                        } else {
                            head.append(row)
                        }
                    },
                    setGroupWidth(value) {
                        (0, _style.setWidth)(this.groupElement(), value)
                    },
                    setGroupHeight(value) {
                        (0, _style.setHeight)(this.groupElement(), value)
                    },
                    reset() {
                        this.callBase();
                        this.groupElement().css("marginTop", 0)
                    },
                    _renderVirtualContent: _common.noop
                });
                exports.FieldsArea = FieldsArea;
                var _default = {
                    FieldsArea: FieldsArea
                };
                exports.default = _default
            },
        95578:
            /*!********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/headers_area/m_headers_area.js ***!
              \********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = exports.VerticalHeadersArea = exports.HorizontalHeadersArea = void 0;
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../../core/dom_adapter */ 73349));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _size = __webpack_require__( /*! ../../../../core/utils/size */ 58664);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/scroll_view/ui.scrollable */ 41183));
                var _m_area_item = __webpack_require__( /*! ../area_item/m_area_item */ 74305);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const isRenovatedScrollable = !!_ui.default.IS_RENOVATED_WIDGET;

                function getCellPath(tableElement, cell) {
                    if (cell) {
                        const {
                            data: data
                        } = tableElement.data();
                        const {
                            rowIndex: rowIndex
                        } = cell.parentNode;
                        const {
                            cellIndex: cellIndex
                        } = cell;
                        return data[rowIndex] && data[rowIndex][cellIndex] && data[rowIndex][cellIndex].path
                    }
                    return
                }
                const HorizontalHeadersArea = _m_area_item.AreaItem.inherit({
                    ctor(component) {
                        this.callBase(component);
                        this._scrollBarWidth = 0
                    },
                    _getAreaName: () => "column",
                    _getAreaClassName: () => "dx-pivotgrid-horizontal-headers",
                    _createGroupElement() {
                        return (0, _renderer.default)("<div>").addClass(this._getAreaClassName()).addClass("dx-pivotgrid-area")
                    },
                    _applyCustomStyles(options) {
                        const {
                            cssArray: cssArray
                        } = options;
                        const {
                            cell: cell
                        } = options;
                        const {
                            rowsCount: rowsCount
                        } = options;
                        const {
                            classArray: classArray
                        } = options;
                        if (options.cellIndex === options.cellsCount - 1) {
                            cssArray.push("".concat(options.rtlEnabled ? "border-left:" : "border-right:", "0px"))
                        }
                        if (cell.rowspan === rowsCount - options.rowIndex || options.rowIndex + 1 === rowsCount) {
                            cssArray.push("border-bottom-width:0px")
                        }
                        if ("T" === cell.type || "GT" === cell.type) {
                            classArray.push("dx-row-total")
                        }
                        if ("T" === options.cell.type) {
                            classArray.push("dx-total")
                        }
                        if ("GT" === options.cell.type) {
                            classArray.push("dx-grandtotal")
                        }
                        if ((0, _type.isDefined)(cell.expanded)) {
                            classArray.push(cell.expanded ? "dx-pivotgrid-expanded" : "dx-pivotgrid-collapsed")
                        }
                        this.callBase(options)
                    },
                    _getMainElementMarkup() {
                        const thead = _dom_adapter.default.createElement("thead");
                        thead.setAttribute("class", this._getAreaClassName());
                        return thead
                    },
                    _getCloseMainElementMarkup: () => "</thead>",
                    setVirtualContentParams(params) {
                        this.callBase(params);
                        this._setTableCss({
                            left: params.left,
                            top: 0
                        });
                        this._virtualContentWidth = params.width
                    },
                    hasScroll() {
                        const tableWidth = this._virtualContent ? this._virtualContentWidth : this._tableWidth;
                        const groupWidth = this.getGroupWidth();
                        if (groupWidth && tableWidth) {
                            return tableWidth - groupWidth >= 1
                        }
                        return false
                    },
                    renderScrollable() {
                        this._groupElement.dxScrollable({
                            useNative: false,
                            useSimulatedScrollbar: false,
                            showScrollbar: "never",
                            bounceEnabled: false,
                            direction: "horizontal",
                            rtlEnabled: isRenovatedScrollable ? this.component.option("rtlEnabled") : false,
                            updateManually: true
                        })
                    },
                    updateScrollableOptions(_ref) {
                        let {
                            rtlEnabled: rtlEnabled
                        } = _ref;
                        const scrollable = this._getScrollable();
                        isRenovatedScrollable && scrollable.option({
                            rtlEnabled: rtlEnabled
                        })
                    },
                    processScrollBarSpacing(scrollBarWidth) {
                        const groupAlignment = this.option("rtlEnabled") ? "right" : "left";
                        const groupWidth = this.getGroupWidth();
                        if (groupWidth) {
                            this.setGroupWidth(groupWidth - scrollBarWidth)
                        }
                        if (this._scrollBarWidth) {
                            this._groupElement.next().remove()
                        }
                        this._groupElement.toggleClass("dx-vertical-scroll", scrollBarWidth > 0);
                        (0, _size.setWidth)(this._groupElement.css("float", groupAlignment), this.getGroupHeight());
                        this._scrollBarWidth = scrollBarWidth
                    },
                    getScrollPath(offset) {
                        const tableElement = this.tableElement();
                        let cell;
                        offset -= parseInt(tableElement[0].style.left, 10) || 0;
                        (0, _iterator.each)(tableElement.find("td"), (_, td) => {
                            if (1 === td.colSpan && td.offsetLeft <= offset && td.offsetWidth + td.offsetLeft > offset) {
                                cell = td;
                                return false
                            }
                            return
                        });
                        return getCellPath(tableElement, cell)
                    },
                    _moveFakeTable(scrollPos) {
                        this._moveFakeTableHorizontally(scrollPos);
                        this.callBase()
                    }
                });
                exports.HorizontalHeadersArea = HorizontalHeadersArea;
                const VerticalHeadersArea = HorizontalHeadersArea.inherit({
                    _getAreaClassName: () => "dx-pivotgrid-vertical-headers",
                    _applyCustomStyles(options) {
                        this.callBase(options);
                        if (options.cellIndex === options.cellsCount - 1) {
                            options.classArray.push("dx-last-cell")
                        }
                        if (options.rowIndex === options.rowsCount - 1) {
                            options.cssArray.push("border-bottom: 0px")
                        }
                        if (options.cell.isWhiteSpace) {
                            options.classArray.push("dx-white-space-column")
                        }
                    },
                    _getAreaName: () => "row",
                    setVirtualContentParams(params) {
                        this.callBase(params);
                        this._setTableCss({
                            top: params.top,
                            left: 0
                        });
                        this._virtualContentHeight = params.height
                    },
                    hasScroll() {
                        const tableHeight = this._virtualContent ? this._virtualContentHeight : this._tableHeight;
                        const groupHeight = this.getGroupHeight();
                        if (groupHeight && tableHeight) {
                            return tableHeight - groupHeight >= 1
                        }
                        return false
                    },
                    renderScrollable() {
                        this._groupElement.dxScrollable({
                            useNative: false,
                            useSimulatedScrollbar: false,
                            showScrollbar: "never",
                            bounceEnabled: false,
                            direction: "vertical",
                            updateManually: true
                        })
                    },
                    processScrollBarSpacing(scrollBarWidth) {
                        const groupHeight = this.getGroupHeight();
                        if (groupHeight) {
                            this.setGroupHeight(groupHeight - scrollBarWidth)
                        }
                        if (this._scrollBarWidth) {
                            this._groupElement.next().remove()
                        }
                        if (scrollBarWidth) {
                            const $div = (0, _renderer.default)("<div>");
                            (0, _size.setWidth)($div, "100%");
                            (0, _size.setHeight)($div, scrollBarWidth - 1);
                            this._groupElement.after($div)
                        }
                        this._scrollBarWidth = scrollBarWidth
                    },
                    getScrollPath(offset) {
                        const tableElement = this.tableElement();
                        let cell;
                        offset -= parseInt(tableElement[0].style.top, 10) || 0;
                        (0, _iterator.each)(tableElement.find("tr"), (_, tr) => {
                            const td = tr.childNodes[tr.childNodes.length - 1];
                            if (td && 1 === td.rowSpan && td.offsetTop <= offset && td.offsetHeight + td.offsetTop > offset) {
                                cell = td;
                                return false
                            }
                            return
                        });
                        return getCellPath(tableElement, cell)
                    },
                    _moveFakeTable(scrollPos) {
                        this._moveFakeTableTop(scrollPos);
                        this.callBase()
                    },
                    _getRowClassNames(rowIndex, cell, rowClassNames) {
                        if (0 !== rowIndex & cell.expanded && !rowClassNames.includes("dx-expand-border")) {
                            rowClassNames.push("dx-expand-border")
                        }
                    },
                    _getMainElementMarkup() {
                        const tbody = _dom_adapter.default.createElement("tbody");
                        tbody.classList.add(this._getAreaClassName());
                        return tbody
                    },
                    _getCloseMainElementMarkup: () => "</tbody>",
                    updateColspans(columnCount) {
                        const {
                            rows: rows
                        } = this.tableElement()[0];
                        let columnOffset = 0;
                        const columnOffsetResetIndexes = [];
                        if (this.getColumnsCount() - columnCount > 0) {
                            return
                        }
                        for (let i = 0; i < rows.length; i += 1) {
                            for (let j = 0; j < rows[i].cells.length; j += 1) {
                                const cell = rows[i].cells[j];
                                const {
                                    rowSpan: rowSpan
                                } = cell;
                                if (columnOffsetResetIndexes[i]) {
                                    columnOffset -= columnOffsetResetIndexes[i];
                                    columnOffsetResetIndexes[i] = 0
                                }
                                const diff = columnCount - (columnOffset + cell.colSpan);
                                if (j === rows[i].cells.length - 1 && diff > 0) {
                                    cell.colSpan += diff
                                }
                                columnOffsetResetIndexes[i + rowSpan] = (columnOffsetResetIndexes[i + rowSpan] || 0) + cell.colSpan;
                                columnOffset += cell.colSpan
                            }
                        }
                    }
                });
                exports.VerticalHeadersArea = VerticalHeadersArea;
                var _default = {
                    HorizontalHeadersArea: HorizontalHeadersArea,
                    VerticalHeadersArea: VerticalHeadersArea
                };
                exports.default = _default
            },
        16564:
            /*!******************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/local_store/m_local_store.js ***!
              \******************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = exports.LocalStore = void 0;
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../../../core/class */ 38377));
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _data = __webpack_require__( /*! ../../../../core/utils/data */ 47617);
                var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date_serialization */ 69434));
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _array_store = _interopRequireDefault(__webpack_require__( /*! ../../../../data/array_store */ 26562));
                var _custom_store = _interopRequireDefault(__webpack_require__( /*! ../../../../data/custom_store */ 88036));
                var _data_source = __webpack_require__( /*! ../../../../data/data_source/data_source */ 85273);
                var _query = _interopRequireDefault(__webpack_require__( /*! ../../../../data/query */ 96687));
                var _utils = __webpack_require__( /*! ../../../../data/utils */ 16454);
                var _m_widget_utils = __webpack_require__( /*! ../m_widget_utils */ 28580);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const LocalStore = _class.default.inherit(function() {
                    const DATE_INTERVAL_SELECTORS = {
                        year: date => date && date.getFullYear(),
                        quarter: date => date && Math.floor(date.getMonth() / 3) + 1,
                        month: date => date && date.getMonth() + 1,
                        day: date => date && date.getDate(),
                        dayOfWeek: date => date && date.getDay()
                    };

                    function getDataSelector(dataField) {
                        return -1 !== dataField.indexOf(".") ? (0, _data.compileGetter)(dataField) : function(data) {
                            return data[dataField]
                        }
                    }

                    function getDateValue(dataSelector) {
                        return function(data) {
                            let value = dataSelector(data);
                            if (value && !(value instanceof Date)) {
                                value = _date_serialization.default.deserializeDate(value)
                            }
                            return value
                        }
                    }

                    function prepareFields(fields) {
                        (0, _iterator.each)(fields || [], (_, field) => {
                            let fieldSelector;
                            let intervalSelector;
                            const {
                                dataField: dataField
                            } = field;
                            let groupInterval;
                            const {
                                levels: levels
                            } = field;
                            let dataSelector;
                            if (!field.selector) {
                                if (!dataField) {
                                    dataSelector = function(data) {
                                        return data
                                    }
                                } else {
                                    dataSelector = getDataSelector(dataField)
                                }
                                if (levels) {
                                    prepareFields(levels)
                                }
                                if ("date" === field.dataType) {
                                    intervalSelector = DATE_INTERVAL_SELECTORS[field.groupInterval];
                                    const valueSelector = getDateValue(dataSelector);
                                    fieldSelector = function(data) {
                                        const value = valueSelector(data);
                                        return intervalSelector ? intervalSelector(value) : value
                                    }
                                } else if ("number" === field.dataType) {
                                    groupInterval = (0, _type.isNumeric)(field.groupInterval) && field.groupInterval > 0 && field.groupInterval;
                                    fieldSelector = function(data) {
                                        let value = dataSelector(data);
                                        if ((0, _type.isString)(value)) {
                                            value = Number(value)
                                        }
                                        return groupInterval ? Math.floor(value / groupInterval) * groupInterval : value
                                    }
                                } else {
                                    fieldSelector = dataSelector
                                }(0, _m_widget_utils.setDefaultFieldValueFormatting)(field);
                                (0, _m_widget_utils.setFieldProperty)(field, "selector", fieldSelector)
                            }
                        })
                    }

                    function generateHierarchyItems(data, loadOptions, headers, headerName) {
                        const result = [0];
                        const expandIndex = loadOptions.headerName === headerName ? loadOptions.path.length : 0;
                        const expandedPaths = "rows" === headerName ? loadOptions.rowExpandedPaths : loadOptions.columnExpandedPaths;
                        const options = {
                            data: data,
                            childrenHash: headers["".concat(headerName, "Hash")],
                            dimensions: loadOptions[headerName],
                            expandedPathsHash: loadOptions.headerName !== headerName && expandedPaths && expandedPaths.hash
                        };
                        ! function fillHierarchyItemIndexesCore(indexes, options, children, expandIndex, pathHash) {
                            const dimension = options.dimensions[expandIndex];
                            const {
                                expandedPathsHash: expandedPathsHash
                            } = options;
                            let dimensionValue;
                            let hierarchyItem;
                            if (dimension) {
                                dimensionValue = dimension.selector(options.data);
                                pathHash = void 0 !== pathHash ? pathHash + "/./" + dimensionValue : "".concat(dimensionValue);
                                hierarchyItem = function(value, hierarchyItems, pathHash, childrenHash) {
                                    let hierarchyItem = childrenHash[pathHash];
                                    if (!hierarchyItem) {
                                        hierarchyItem = {
                                            value: value,
                                            index: childrenHash.length++
                                        };
                                        childrenHash[pathHash] = hierarchyItem;
                                        hierarchyItems.push(hierarchyItem)
                                    }
                                    return hierarchyItem
                                }(dimensionValue, children, pathHash, options.childrenHash);
                                indexes.push(hierarchyItem.index);
                                if (expandedPathsHash && expandedPathsHash[pathHash] || dimension.expanded) {
                                    if (!hierarchyItem.children) {
                                        hierarchyItem.children = []
                                    }
                                    fillHierarchyItemIndexesCore(indexes, options, hierarchyItem.children, expandIndex + 1, pathHash)
                                }
                            }
                        }(result, options, headers[headerName], expandIndex);
                        return result
                    }

                    function generateAggregationCells(data, cells, headers, options) {
                        const cellSet = [];
                        let x;
                        let y;
                        let rowIndex;
                        let columnIndex;
                        const rowIndexes = generateHierarchyItems(data, options, headers, "rows");
                        const columnIndexes = generateHierarchyItems(data, options, headers, "columns");
                        for (y = 0; y < rowIndexes.length; y += 1) {
                            rowIndex = rowIndexes[y];
                            cells[rowIndex] = cells[rowIndex] || [];
                            for (x = 0; x < columnIndexes.length; x += 1) {
                                columnIndex = columnIndexes[x];
                                cellSet.push(cells[rowIndex][columnIndex] = cells[rowIndex][columnIndex] || [])
                            }
                        }
                        return cellSet
                    }

                    function fillHashExpandedPath(expandedPaths) {
                        if (expandedPaths) {
                            const hash = expandedPaths.hash = {};
                            expandedPaths.forEach(path => {
                                const pathValue = path.map(value => "".concat(value)).join("/./");
                                hash[pathValue] = true
                            })
                        }
                    }

                    function prepareLoadOption(options) {
                        options.rows = options.rows || [];
                        options.columns = options.columns || [];
                        options.filters = options.filters || [];
                        fillHashExpandedPath(options.columnExpandedPaths);
                        fillHashExpandedPath(options.rowExpandedPaths);
                        prepareFields(options.columns);
                        prepareFields(options.rows);
                        prepareFields(options.values);
                        prepareFields(options.filters)
                    }

                    function getAggregator(field) {
                        if ("custom" === field.summaryType) {
                            field.calculateCustomSummary = field.calculateCustomSummary || _common.noop;
                            return {
                                seed() {
                                    const options = {
                                        summaryProcess: "start",
                                        totalValue: void 0
                                    };
                                    field.calculateCustomSummary(options);
                                    return options
                                },
                                step(options, value) {
                                    options.summaryProcess = "calculate";
                                    options.value = value;
                                    field.calculateCustomSummary(options);
                                    return options
                                },
                                finalize(options) {
                                    options.summaryProcess = "finalize";
                                    delete options.value;
                                    field.calculateCustomSummary(options);
                                    return options.totalValue
                                }
                            }
                        }
                        return _utils.aggregators[field.summaryType] || _utils.aggregators.count
                    }

                    function aggregationStep(measures, aggregationCells, data) {
                        for (let aggregatorIndex = 0; aggregatorIndex < measures.length; aggregatorIndex += 1) {
                            const cellField = measures[aggregatorIndex];
                            const cellValue = cellField.selector(data);
                            const aggregator = getAggregator(cellField);
                            const isAggregatorSeedFunction = "function" === typeof aggregator.seed;
                            for (let cellSetIndex = 0; cellSetIndex < aggregationCells.length; cellSetIndex += 1) {
                                const cell = aggregationCells[cellSetIndex];
                                if (cell.length <= aggregatorIndex) {
                                    cell[aggregatorIndex] = isAggregatorSeedFunction ? aggregator.seed() : aggregator.seed
                                }
                                if (void 0 === cell[aggregatorIndex]) {
                                    cell[aggregatorIndex] = cellValue
                                } else if ((0, _type.isDefined)(cellValue)) {
                                    cell[aggregatorIndex] = aggregator.step(cell[aggregatorIndex], cellValue)
                                }
                            }
                        }
                    }

                    function areValuesEqual(filterValue, fieldValue) {
                        let valueOfFilter = filterValue && filterValue.valueOf();
                        let valueOfField = fieldValue && fieldValue.valueOf();
                        if (Array.isArray(filterValue)) {
                            fieldValue = fieldValue || [];
                            for (let i = 0; i < filterValue.length; i += 1) {
                                valueOfFilter = filterValue[i] && filterValue[i].valueOf();
                                valueOfField = fieldValue[i] && fieldValue[i].valueOf();
                                if (valueOfFilter !== valueOfField) {
                                    return false
                                }
                            }
                            return true
                        }
                        return valueOfFilter === valueOfField
                    }

                    function createDimensionFilters(dimension) {
                        const filters = [];
                        (0, _iterator.each)(dimension, (_, field) => {
                            const filterValues = field.filterValues || [];
                            const {
                                groupName: groupName
                            } = field;
                            if (groupName && (0, _type.isNumeric)(field.groupIndex)) {
                                return
                            }
                            filterValues.length && filters.push((function(dataItem) {
                                const value = field.levels ? function(levels, data) {
                                    const value = [];
                                    (0, _iterator.each)(levels, (_, field) => {
                                        value.push(field.selector(data))
                                    });
                                    return value
                                }(field.levels, dataItem) : field.selector(dataItem);
                                let result = false;
                                for (let i = 0; i < filterValues.length; i += 1) {
                                    if (areValuesEqual(filterValues[i], value)) {
                                        result = true;
                                        break
                                    }
                                }
                                return "exclude" === field.filterType ? !result : result
                            }))
                        });
                        return filters
                    }

                    function createFilter(options) {
                        const filters = createDimensionFilters(options.rows).concat(createDimensionFilters(options.columns)).concat(createDimensionFilters(options.filters));
                        const expandedDimensions = options[options.headerName];
                        const {
                            path: path
                        } = options;
                        if (expandedDimensions) {
                            filters.push(dataItem => {
                                let expandValue;
                                for (let i = 0; i < path.length; i += 1) {
                                    expandValue = expandedDimensions[i].selector(dataItem);
                                    if ((0, _data.toComparable)(expandValue, true) !== (0, _data.toComparable)(path[i], true)) {
                                        return false
                                    }
                                }
                                return true
                            })
                        }
                        return function(dataItem) {
                            for (let i = 0; i < filters.length; i += 1) {
                                if (!filters[i](dataItem)) {
                                    return false
                                }
                            }
                            return true
                        }
                    }

                    function loadCore(items, options, notifyProgress) {
                        const headers = {
                            columns: [],
                            rows: [],
                            columnsHash: {
                                length: 1
                            },
                            rowsHash: {
                                length: 1
                            }
                        };
                        const values = [];
                        let aggregationCells;
                        let data;
                        const d = new _deferred.Deferred;
                        let i = 0;
                        const filter = createFilter(options);
                        ! function processData() {
                            const t = new Date;
                            const startIndex = i;
                            for (; i < items.length; i += 1) {
                                if (i > startIndex && i % 1e4 === 0) {
                                    if (new Date - t >= 300) {
                                        notifyProgress(i / items.length);
                                        setTimeout(processData, 0);
                                        return
                                    }
                                }
                                data = items[i];
                                if (filter(data)) {
                                    aggregationCells = generateAggregationCells(data, values, headers, options);
                                    aggregationStep(options.values, aggregationCells, data)
                                }
                            }
                            measures = options.values, cells = values, void(0, _iterator.each)(measures, (aggregatorIndex, cellField) => {
                                const aggregator = getAggregator(cellField);
                                if (aggregator.finalize) {
                                    (0, _iterator.each)(cells, (_, row) => {
                                        (0, _iterator.each)(row, (_, cell) => {
                                            if (cell && void 0 !== cell[aggregatorIndex]) {
                                                cell[aggregatorIndex] = aggregator.finalize(cell[aggregatorIndex])
                                            }
                                        })
                                    })
                                }
                            });
                            var measures, cells;
                            notifyProgress(1);
                            d.resolve({
                                rows: headers.rows,
                                columns: headers.columns,
                                values: values,
                                grandTotalRowIndex: 0,
                                grandTotalColumnIndex: 0
                            })
                        }();
                        return d
                    }

                    function filterDataSource(dataSource, fieldSelectors) {
                        let filter = dataSource.filter();
                        if (dataSource.store() instanceof _custom_store.default && filter) {
                            filter = processFilter(filter, fieldSelectors);
                            return (0, _query.default)(dataSource.items()).filter(filter).toArray()
                        }
                        return dataSource.items()
                    }

                    function loadDataSource(dataSource, fieldSelectors, reload) {
                        const d = new _deferred.Deferred;
                        const customizeStoreLoadOptionsHandler = function(options) {
                            if (dataSource.store() instanceof _array_store.default) {
                                options.storeLoadOptions.filter = processFilter(options.storeLoadOptions.filter, fieldSelectors)
                            }
                        };
                        dataSource.on("customizeStoreLoadOptions", customizeStoreLoadOptionsHandler);
                        if (!dataSource.isLoaded() || reload) {
                            const loadDeferred = reload ? dataSource.load() : dataSource.reload();
                            (0, _deferred.when)(loadDeferred).done(() => {
                                loadDataSource(dataSource, fieldSelectors).done(() => {
                                    d.resolve(filterDataSource(dataSource, fieldSelectors))
                                }).fail(d.reject)
                            }).fail(d.reject)
                        } else {
                            d.resolve(filterDataSource(dataSource, fieldSelectors))
                        }
                        return d.always(() => {
                            dataSource.off("customizeStoreLoadOptions", customizeStoreLoadOptionsHandler)
                        })
                    }

                    function fillSelectorsByFields(selectors, fields) {
                        fields.forEach(field => {
                            if (field.dataField && "date" === field.dataType) {
                                const valueSelector = getDateValue(getDataSelector(field.dataField));
                                selectors[field.dataField] = function(data) {
                                    return valueSelector(data)
                                }
                            }
                        })
                    }

                    function getFieldSelectors(options) {
                        const selectors = {};
                        if (Array.isArray(options)) {
                            fillSelectorsByFields(selectors, options)
                        } else if (options) {
                            ["rows", "columns", "filters"].forEach(area => {
                                options[area] && fillSelectorsByFields(selectors, options[area])
                            })
                        }
                        return selectors
                    }

                    function processFilter(filter, fieldSelectors) {
                        if (!Array.isArray(filter)) {
                            return filter
                        }
                        filter = filter.slice(0);
                        if ((0, _type.isString)(filter[0]) && (filter[1] instanceof Date || filter[2] instanceof Date)) {
                            filter[0] = fieldSelectors[filter[0]]
                        }
                        for (let i = 0; i < filter.length; i += 1) {
                            filter[i] = processFilter(filter[i], fieldSelectors)
                        }
                        return filter
                    }
                    return {
                        ctor(options) {
                            this._progressChanged = options.onProgressChanged || _common.noop;
                            this._dataSource = new _data_source.DataSource(options);
                            this._dataSource.paginate(false)
                        },
                        getFields(fields) {
                            const dataSource = this._dataSource;
                            const d = new _deferred.Deferred;
                            loadDataSource(dataSource, getFieldSelectors(fields)).done(data => {
                                d.resolve((0, _m_widget_utils.discoverObjectFields)(data, fields))
                            }).fail(d.reject);
                            return d
                        },
                        key() {
                            return this._dataSource.key()
                        },
                        load(options) {
                            const that = this;
                            const dataSource = that._dataSource;
                            const d = new _deferred.Deferred;
                            prepareLoadOption(options);
                            loadDataSource(dataSource, getFieldSelectors(options), options.reload).done(data => {
                                (0, _deferred.when)(loadCore(data, options, that._progressChanged)).done(d.resolve)
                            }).fail(d.reject);
                            return d
                        },
                        filter() {
                            const dataSource = this._dataSource;
                            return dataSource.filter.apply(dataSource, arguments)
                        },
                        supportPaging: () => false,
                        getDrillDownItems(loadOptions, params) {
                            loadOptions = loadOptions || {};
                            params = params || {};
                            prepareLoadOption(loadOptions);
                            const drillDownItems = [];
                            const items = this._dataSource.items();
                            let item;
                            const {
                                maxRowCount: maxRowCount
                            } = params;
                            const {
                                customColumns: customColumns
                            } = params;
                            const filter = createFilter(loadOptions);
                            const pathFilter = createFilter({
                                rows: (0, _m_widget_utils.getFiltersByPath)(loadOptions.rows, params.rowPath),
                                columns: (0, _m_widget_utils.getFiltersByPath)(loadOptions.columns, params.columnPath),
                                filters: []
                            });
                            for (let i = 0; i < items.length; i += 1) {
                                if (pathFilter(items[i]) && filter(items[i])) {
                                    if (customColumns) {
                                        item = {};
                                        for (let j = 0; j < customColumns.length; j += 1) {
                                            item[customColumns[j]] = items[i][customColumns[j]]
                                        }
                                    } else {
                                        item = items[i]
                                    }
                                    drillDownItems.push(item)
                                }
                                if (maxRowCount > 0 && drillDownItems.length === maxRowCount) {
                                    break
                                }
                            }
                            return drillDownItems
                        }
                    }
                }()).include(_m_widget_utils.storeDrillDownMixin);
                exports.LocalStore = LocalStore;
                var _default = {
                    LocalStore: LocalStore
                };
                exports.default = _default
            },
        61550:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/m_widget.js ***!
              \*************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = exports.PivotGrid = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 99393));
                var _element = __webpack_require__( /*! ../../../core/element */ 6415);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 20576);
                var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 95479);
                var _size = __webpack_require__( /*! ../../../core/utils/size */ 58664);
                var _string = __webpack_require__( /*! ../../../core/utils/string */ 68752);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 58201);
                var _click = __webpack_require__( /*! ../../../events/click */ 95429);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../events/core/events_engine */ 55994));
                var _index = __webpack_require__( /*! ../../../events/utils/index */ 39611);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../localization/message */ 28109));
                var _button = _interopRequireDefault(__webpack_require__( /*! ../../../ui/button */ 63008));
                var _context_menu = _interopRequireDefault(__webpack_require__( /*! ../../../ui/context_menu */ 10042));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/popup/ui.popup */ 51495));
                var _themes = __webpack_require__( /*! ../../../ui/themes */ 75811);
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.widget */ 14390));
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../../grids/grid_core/m_utils */ 60082));
                var _m_chart_integration = __webpack_require__( /*! ./chart_integration/m_chart_integration */ 85654);
                var _m_data_area = _interopRequireDefault(__webpack_require__( /*! ./data_area/m_data_area */ 64318));
                var _m_data_controller = _interopRequireDefault(__webpack_require__( /*! ./data_controller/m_data_controller */ 9517));
                var _m_export = __webpack_require__( /*! ./export/m_export */ 75705);
                var _m_field_chooser = __webpack_require__( /*! ./field_chooser/m_field_chooser */ 63857);
                var _m_field_chooser_base = __webpack_require__( /*! ./field_chooser/m_field_chooser_base */ 16491);
                var _m_fields_area = __webpack_require__( /*! ./fields_area/m_fields_area */ 70513);
                var _m_headers_area = _interopRequireDefault(__webpack_require__( /*! ./headers_area/m_headers_area */ 95578));
                var _m_widget_utils = __webpack_require__( /*! ./m_widget_utils */ 28580);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();
                const TR = "<tr>";
                const TD = "<td>";
                const DIV = "<div>";
                const FIELD_CALCULATED_OPTIONS = ["allowSorting", "allowSortingBySummary", "allowFiltering", "allowExpandAll"];

                function getArraySum(array) {
                    let sum = 0;
                    (0, _iterator.each)(array, (_, value) => {
                        sum += value || 0
                    });
                    return sum
                }

                function adjustSizeArray(sizeArray, space) {
                    const delta = space / sizeArray.length;
                    for (let i = 0; i < sizeArray.length; i += 1) {
                        sizeArray[i] -= delta
                    }
                }

                function unsubscribeScrollEvents(area) {
                    area.off("scroll").off("stop")
                }

                function getCommonBorderWidth(elements, direction) {
                    const borderStyleNames = "width" === direction ? ["borderLeftWidth", "borderRightWidth"] : ["borderTopWidth", "borderBottomWidth"];
                    let width = 0;
                    (0, _iterator.each)(elements, (_, elem) => {
                        const computedStyle = window.getComputedStyle(elem.get(0));
                        borderStyleNames.forEach(borderStyleName => {
                            width += parseFloat(computedStyle[borderStyleName]) || 0
                        })
                    });
                    return width
                }
                const PivotGrid = _ui2.default.inherit({
                    _getDefaultOptions() {
                        return (0, _extend.extend)(this.callBase(), {
                            scrolling: {
                                timeout: 300,
                                renderingThreshold: 150,
                                minTimeout: 10,
                                mode: "standard",
                                useNative: "auto",
                                removeInvisiblePages: true,
                                virtualRowHeight: 50,
                                virtualColumnWidth: 100,
                                loadTwoPagesOnStart: true
                            },
                            encodeHtml: true,
                            dataSource: null,
                            activeStateEnabled: false,
                            fieldChooser: {
                                minWidth: 250,
                                minHeight: 250,
                                enabled: true,
                                allowSearch: false,
                                searchTimeout: 500,
                                layout: 0,
                                title: _message.default.format("dxPivotGrid-fieldChooserTitle"),
                                width: 600,
                                height: 600,
                                applyChangesMode: "instantly"
                            },
                            onContextMenuPreparing: null,
                            allowSorting: false,
                            allowSortingBySummary: false,
                            allowFiltering: false,
                            allowExpandAll: false,
                            wordWrapEnabled: true,
                            fieldPanel: {
                                showColumnFields: true,
                                showFilterFields: true,
                                showDataFields: true,
                                showRowFields: true,
                                allowFieldDragging: true,
                                visible: false,
                                texts: {
                                    columnFieldArea: _message.default.format("dxPivotGrid-columnFieldArea"),
                                    rowFieldArea: _message.default.format("dxPivotGrid-rowFieldArea"),
                                    filterFieldArea: _message.default.format("dxPivotGrid-filterFieldArea"),
                                    dataFieldArea: _message.default.format("dxPivotGrid-dataFieldArea")
                                }
                            },
                            dataFieldArea: "column",
                            export: {
                                enabled: false,
                                fileName: "PivotGrid"
                            },
                            showRowTotals: true,
                            showRowGrandTotals: true,
                            showColumnTotals: true,
                            showColumnGrandTotals: true,
                            hideEmptySummaryCells: true,
                            showTotalsPrior: "none",
                            rowHeaderLayout: "standard",
                            loadPanel: {
                                enabled: true,
                                text: _message.default.format("Loading"),
                                width: 200,
                                height: 70,
                                showIndicator: true,
                                indicatorSrc: "",
                                showPane: true
                            },
                            texts: {
                                grandTotal: _message.default.format("dxPivotGrid-grandTotal"),
                                total: _message.default.getFormatter("dxPivotGrid-total"),
                                noData: _message.default.format("dxDataGrid-noDataText"),
                                showFieldChooser: _message.default.format("dxPivotGrid-showFieldChooser"),
                                expandAll: _message.default.format("dxPivotGrid-expandAll"),
                                collapseAll: _message.default.format("dxPivotGrid-collapseAll"),
                                sortColumnBySummary: _message.default.getFormatter("dxPivotGrid-sortColumnBySummary"),
                                sortRowBySummary: _message.default.getFormatter("dxPivotGrid-sortRowBySummary"),
                                removeAllSorting: _message.default.format("dxPivotGrid-removeAllSorting"),
                                exportToExcel: _message.default.format("dxDataGrid-exportToExcel"),
                                dataNotAvailable: _message.default.format("dxPivotGrid-dataNotAvailable")
                            },
                            onCellClick: null,
                            onCellPrepared: null,
                            showBorders: false,
                            stateStoring: {
                                enabled: false,
                                storageKey: null,
                                type: "localStorage",
                                customLoad: null,
                                customSave: null,
                                savingTimeout: 2e3
                            },
                            onExpandValueChanging: null,
                            renderCellCountLimit: 2e4,
                            onExporting: null,
                            headerFilter: {
                                width: 252,
                                height: 325,
                                allowSelectAll: true,
                                showRelevantValues: false,
                                search: {
                                    enabled: false,
                                    timeout: 500,
                                    editorOptions: {},
                                    mode: "contains"
                                },
                                texts: {
                                    emptyValue: _message.default.format("dxDataGrid-headerFilterEmptyValue"),
                                    ok: _message.default.format("dxDataGrid-headerFilterOK"),
                                    cancel: _message.default.format("dxDataGrid-headerFilterCancel")
                                }
                            }
                        })
                    },
                    _updateCalculatedOptions(fields) {
                        const that = this;
                        (0, _iterator.each)(fields, (_, field) => {
                            (0, _iterator.each)(FIELD_CALCULATED_OPTIONS, (_, optionName) => {
                                const isCalculated = field._initProperties && optionName in field._initProperties && void 0 === field._initProperties[optionName];
                                const needUpdate = void 0 === field[optionName] || isCalculated;
                                if (needUpdate) {
                                    (0, _m_widget_utils.setFieldProperty)(field, optionName, that.option(optionName))
                                }
                            })
                        })
                    },
                    _getDataControllerOptions() {
                        const that = this;
                        return {
                            component: that,
                            dataSource: that.option("dataSource"),
                            texts: that.option("texts"),
                            showRowTotals: that.option("showRowTotals"),
                            showRowGrandTotals: that.option("showRowGrandTotals"),
                            showColumnTotals: that.option("showColumnTotals"),
                            showTotalsPrior: that.option("showTotalsPrior"),
                            showColumnGrandTotals: that.option("showColumnGrandTotals"),
                            dataFieldArea: that.option("dataFieldArea"),
                            rowHeaderLayout: that.option("rowHeaderLayout"),
                            hideEmptySummaryCells: that.option("hideEmptySummaryCells"),
                            onFieldsPrepared(fields) {
                                that._updateCalculatedOptions(fields)
                            }
                        }
                    },
                    _initDataController() {
                        const that = this;
                        that._dataController && that._dataController.dispose();
                        that._dataController = new _m_data_controller.default.DataController(that._getDataControllerOptions());
                        if ((0, _window.hasWindow)()) {
                            that._dataController.changed.add(() => {
                                that._render()
                            })
                        }
                        that._dataController.scrollChanged.add(options => {
                            that._scrollLeft = options.left;
                            that._scrollTop = options.top
                        });
                        that._dataController.loadingChanged.add(() => {
                            that._updateLoading()
                        });
                        that._dataController.progressChanged.add(that._updateLoading.bind(that));
                        that._dataController.dataSourceChanged.add(() => {
                            that._trigger("onChanged")
                        });
                        const expandValueChanging = that.option("onExpandValueChanging");
                        if (expandValueChanging) {
                            that._dataController.expandValueChanging.add(e => {
                                expandValueChanging(e)
                            })
                        }
                    },
                    _init() {
                        this.callBase();
                        this._initDataController();
                        _m_utils.default.logHeaderFilterDeprecatedWarningIfNeed(this);
                        this._scrollLeft = this._scrollTop = null;
                        this._initActions()
                    },
                    _initActions() {
                        this._actions = {
                            onChanged: this._createActionByOption("onChanged"),
                            onContextMenuPreparing: this._createActionByOption("onContextMenuPreparing"),
                            onCellClick: this._createActionByOption("onCellClick"),
                            onExporting: this._createActionByOption("onExporting"),
                            onCellPrepared: this._createActionByOption("onCellPrepared")
                        }
                    },
                    _trigger(eventName, eventArg) {
                        this._actions[eventName](eventArg)
                    },
                    _optionChanged(args) {
                        const that = this;
                        if (FIELD_CALCULATED_OPTIONS.includes(args.name)) {
                            const fields = this.getDataSource().fields();
                            this._updateCalculatedOptions(fields)
                        }
                        switch (args.name) {
                            case "dataSource":
                            case "allowSorting":
                            case "allowFiltering":
                            case "allowExpandAll":
                            case "allowSortingBySummary":
                            case "scrolling":
                            case "stateStoring":
                                that._initDataController();
                                that._fieldChooserPopup.hide();
                                that._renderFieldChooser();
                                that._invalidate();
                                break;
                            case "texts":
                            case "showTotalsPrior":
                            case "showRowTotals":
                            case "showRowGrandTotals":
                            case "showColumnTotals":
                            case "showColumnGrandTotals":
                            case "hideEmptySummaryCells":
                            case "dataFieldArea":
                                that._dataController.updateViewOptions(that._getDataControllerOptions());
                                break;
                            case "useNativeScrolling":
                            case "encodeHtml":
                            case "renderCellCountLimit":
                                break;
                            case "rtlEnabled":
                                that.callBase(args);
                                that._renderFieldChooser();
                                that._renderContextMenu();
                                (0, _window.hasWindow)() && that._renderLoadPanel(that._dataArea.groupElement(), that.$element());
                                that._invalidate();
                                break;
                            case "export":
                                that._renderDescriptionArea();
                                break;
                            case "onExpandValueChanging":
                                break;
                            case "onCellClick":
                            case "onContextMenuPreparing":
                            case "onExporting":
                            case "onExported":
                            case "onFileSaving":
                            case "onCellPrepared":
                                that._actions[args.name] = that._createActionByOption(args.name);
                                break;
                            case "fieldChooser":
                                that._renderFieldChooser();
                                that._renderDescriptionArea();
                                break;
                            case "loadPanel":
                                if ((0, _window.hasWindow)()) {
                                    if ("loadPanel.enabled" === args.fullName) {
                                        clearTimeout(this._hideLoadingTimeoutID);
                                        that._renderLoadPanel(that._dataArea.groupElement(), that.$element())
                                    } else {
                                        that._renderLoadPanel(that._dataArea.groupElement(), that.$element());
                                        that._invalidate()
                                    }
                                }
                                break;
                            case "fieldPanel":
                                that._renderDescriptionArea();
                                that._invalidate();
                                break;
                            case "headerFilter":
                                that._renderFieldChooser();
                                that._invalidate();
                                break;
                            case "showBorders":
                                that._tableElement().toggleClass("dx-pivotgrid-border", !!args.value);
                                that.updateDimensions();
                                break;
                            case "wordWrapEnabled":
                                that._tableElement().toggleClass("dx-word-wrap", !!args.value);
                                that.updateDimensions();
                                break;
                            case "rowHeaderLayout":
                                that._tableElement().find(".".concat("dx-area-row-cell")).toggleClass("dx-area-tree-view", "tree" === args.value);
                                that._dataController.updateViewOptions(that._getDataControllerOptions());
                                break;
                            case "height":
                            case "width":
                                that._hasHeight = null;
                                that.callBase(args);
                                that.resize();
                                break;
                            default:
                                that.callBase(args)
                        }
                    },
                    _updateScrollPosition(columnsArea, rowsArea, dataArea) {
                        let force = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : false;
                        const that = this;
                        let scrollTop;
                        let scrollLeft;
                        const scrolled = that._scrollTop || that._scrollLeft;
                        if (that._scrollUpdating) {
                            return
                        }
                        that._scrollUpdating = true;
                        if (rowsArea && !rowsArea.hasScroll() && that._hasHeight) {
                            that._scrollTop = null
                        }
                        if (columnsArea && !columnsArea.hasScroll()) {
                            that._scrollLeft = null
                        }
                        if (null !== that._scrollTop || null !== that._scrollLeft || scrolled || that.option("rtlEnabled")) {
                            scrollTop = that._scrollTop || 0;
                            scrollLeft = that._scrollLeft || 0;
                            dataArea.scrollTo({
                                left: scrollLeft,
                                top: scrollTop
                            }, force);
                            columnsArea.scrollTo({
                                left: scrollLeft
                            }, force);
                            rowsArea.scrollTo({
                                top: scrollTop
                            }, force);
                            that._dataController.updateWindowScrollPosition(that._scrollTop)
                        }
                        that._scrollUpdating = false
                    },
                    _subscribeToEvents(columnsArea, rowsArea, dataArea) {
                        const that = this;
                        (0, _iterator.each)([columnsArea, rowsArea, dataArea], (_, area) => {
                            ! function(area, handler) {
                                unsubscribeScrollEvents(area);
                                area.on("scroll", handler).on("stop", handler)
                            }(area, e => function(e, area) {
                                const {
                                    scrollOffset: scrollOffset
                                } = e;
                                const scrollable = area._getScrollable();
                                const leftOffset = "vertical" !== scrollable.option("direction") ? scrollOffset.left : that._scrollLeft;
                                const topOffset = "horizontal" !== scrollable.option("direction") && that._hasHeight ? scrollOffset.top : that._scrollTop;
                                if ((that._scrollLeft || 0) !== (leftOffset || 0) || (that._scrollTop || 0) !== (topOffset || 0)) {
                                    that._scrollLeft = leftOffset;
                                    that._scrollTop = topOffset;
                                    that._updateScrollPosition(columnsArea, rowsArea, dataArea);
                                    if ("virtual" === that.option("scrolling.mode")) {
                                        that._dataController.setViewportPosition(that._scrollLeft, that._scrollTop)
                                    }
                                }
                            }(e, area))
                        });
                        !that._hasHeight && that._dataController.subscribeToWindowScrollEvents(dataArea.groupElement())
                    },
                    _clean: _common.noop,
                    _needDelayResizing(cellsInfo) {
                        const cellsCount = cellsInfo.length * (cellsInfo.length ? cellsInfo[0].length : 0);
                        return cellsCount > this.option("renderCellCountLimit")
                    },
                    _renderFieldChooser() {
                        var _a;
                        const that = this;
                        const container = that._pivotGridContainer;
                        const fieldChooserOptions = that.option("fieldChooser") || {};
                        const toolbarItems = "onDemand" === fieldChooserOptions.applyChangesMode ? [{
                            toolbar: "bottom",
                            location: "after",
                            widget: "dxButton",
                            options: {
                                text: _message.default.format("OK"),
                                onClick() {
                                    that._fieldChooserPopup.$content().dxPivotGridFieldChooser("applyChanges");
                                    that._fieldChooserPopup.hide()
                                }
                            }
                        }, {
                            toolbar: "bottom",
                            location: "after",
                            widget: "dxButton",
                            options: {
                                text: _message.default.format("Cancel"),
                                onClick() {
                                    that._fieldChooserPopup.hide()
                                }
                            }
                        }] : [];
                        const fieldChooserComponentOptions = {
                            layout: fieldChooserOptions.layout,
                            texts: fieldChooserOptions.texts || {},
                            dataSource: that.getDataSource(),
                            allowSearch: fieldChooserOptions.allowSearch,
                            searchTimeout: fieldChooserOptions.searchTimeout,
                            width: void 0,
                            height: void 0,
                            headerFilter: that.option("headerFilter"),
                            encodeHtml: null !== (_a = that.option("fieldChooser.encodeHtml")) && void 0 !== _a ? _a : that.option("encodeHtml"),
                            applyChangesMode: fieldChooserOptions.applyChangesMode,
                            onContextMenuPreparing(e) {
                                that._trigger("onContextMenuPreparing", e)
                            }
                        };
                        const popupOptions = {
                            shading: false,
                            title: fieldChooserOptions.title,
                            width: fieldChooserOptions.width,
                            height: fieldChooserOptions.height,
                            showCloseButton: true,
                            resizeEnabled: true,
                            minWidth: fieldChooserOptions.minWidth,
                            minHeight: fieldChooserOptions.minHeight,
                            toolbarItems: toolbarItems,
                            onResize(e) {
                                e.component.$content().dxPivotGridFieldChooser("updateDimensions")
                            },
                            onShown(e) {
                                that._createComponent(e.component.content(), _m_field_chooser.FieldChooser, fieldChooserComponentOptions)
                            },
                            onHidden(e) {
                                const fieldChooser = e.component.$content().dxPivotGridFieldChooser("instance");
                                fieldChooser.resetTreeView();
                                fieldChooser.cancelChanges()
                            }
                        };
                        if (that._fieldChooserPopup) {
                            that._fieldChooserPopup.option(popupOptions);
                            that._fieldChooserPopup.$content().dxPivotGridFieldChooser(fieldChooserComponentOptions)
                        } else {
                            that._fieldChooserPopup = that._createComponent((0, _renderer.default)(DIV).addClass("dx-fieldchooser-popup").appendTo(container), _ui.default, popupOptions)
                        }
                    },
                    _renderContextMenu() {
                        const that = this;
                        const $container = that._pivotGridContainer;
                        if (that._contextMenu) {
                            that._contextMenu.$element().remove()
                        }
                        that._contextMenu = that._createComponent((0, _renderer.default)(DIV).appendTo($container), _context_menu.default, {
                            onPositioning(actionArgs) {
                                const {
                                    event: event
                                } = actionArgs;
                                actionArgs.cancel = true;
                                if (!event) {
                                    return
                                }
                                const targetElement = event.target.cellIndex >= 0 ? event.target : (0, _renderer.default)(event.target).closest("td").get(0);
                                if (!targetElement) {
                                    return
                                }
                                const args = that._createEventArgs(targetElement, event);
                                const items = that._getContextMenuItems(args);
                                if (items) {
                                    actionArgs.component.option("items", items);
                                    actionArgs.cancel = false
                                }
                            },
                            onItemClick(params) {
                                params.itemData.onItemClick && params.itemData.onItemClick(params)
                            },
                            cssClass: "dx-pivotgrid",
                            target: that.$element()
                        })
                    },
                    _getContextMenuItems(e) {
                        const that = this;
                        let items = [];
                        const texts = that.option("texts");
                        if ("row" === e.area || "column" === e.area) {
                            const areaFields = e["".concat(e.area, "Fields")];
                            const oppositeAreaFields = e["column" === e.area ? "rowFields" : "columnFields"];
                            const field = e.cell.path && areaFields[e.cell.path.length - 1];
                            const dataSource = that.getDataSource();
                            if (field && field.allowExpandAll && e.cell.path.length < e["".concat(e.area, "Fields")].length && !dataSource.paginate()) {
                                items.push({
                                    beginGroup: true,
                                    icon: "none",
                                    text: texts.expandAll,
                                    onItemClick() {
                                        dataSource.expandAll(field.index)
                                    }
                                });
                                items.push({
                                    text: texts.collapseAll,
                                    icon: "none",
                                    onItemClick() {
                                        dataSource.collapseAll(field.index)
                                    }
                                })
                            }
                            if (e.cell.isLast && !dataSource.paginate()) {
                                let sortingBySummaryItemCount = 0;
                                (0, _iterator.each)(oppositeAreaFields, (_, field) => {
                                    if (!field.allowSortingBySummary) {
                                        return
                                    }(0, _iterator.each)(e.dataFields, (dataIndex, dataField) => {
                                        if ((0, _type.isDefined)(e.cell.dataIndex) && e.cell.dataIndex !== dataIndex) {
                                            return
                                        }
                                        const showDataFieldCaption = !(0, _type.isDefined)(e.cell.dataIndex) && e.dataFields.length > 1;
                                        const textFormat = "column" === e.area ? texts.sortColumnBySummary : texts.sortRowBySummary;
                                        const checked = (0, _m_widget_utils.findField)(e.dataFields, field.sortBySummaryField) === dataIndex && (e.cell.path || []).join("/") === (field.sortBySummaryPath || []).join("/");
                                        const text = (0, _string.format)(textFormat, showDataFieldCaption ? "".concat(field.caption, " - ").concat(dataField.caption) : field.caption);
                                        items.push({
                                            beginGroup: 0 === sortingBySummaryItemCount,
                                            icon: checked ? "desc" === field.sortOrder ? "sortdowntext" : "sortuptext" : "none",
                                            text: text,
                                            onItemClick() {
                                                dataSource.field(field.index, {
                                                    sortBySummaryField: dataField.name || dataField.caption || dataField.dataField,
                                                    sortBySummaryPath: e.cell.path,
                                                    sortOrder: "desc" === field.sortOrder ? "asc" : "desc"
                                                });
                                                dataSource.load()
                                            }
                                        });
                                        sortingBySummaryItemCount += 1
                                    })
                                });
                                (0, _iterator.each)(oppositeAreaFields, (_, field) => {
                                    if (!field.allowSortingBySummary || !(0, _type.isDefined)(field.sortBySummaryField)) {
                                        return
                                    }
                                    items.push({
                                        beginGroup: 0 === sortingBySummaryItemCount,
                                        icon: "none",
                                        text: texts.removeAllSorting,
                                        onItemClick() {
                                            (0, _iterator.each)(oppositeAreaFields, (_, field) => {
                                                dataSource.field(field.index, {
                                                    sortBySummaryField: void 0,
                                                    sortBySummaryPath: void 0,
                                                    sortOrder: void 0
                                                })
                                            });
                                            dataSource.load()
                                        }
                                    });
                                    return false
                                })
                            }
                        }
                        if (that.option("fieldChooser.enabled")) {
                            items.push({
                                beginGroup: true,
                                icon: "columnchooser",
                                text: texts.showFieldChooser,
                                onItemClick() {
                                    that._fieldChooserPopup.show()
                                }
                            })
                        }
                        if (that.option("export.enabled")) {
                            items.push({
                                beginGroup: true,
                                icon: "xlsxfile",
                                text: texts.exportToExcel,
                                onItemClick() {
                                    that.exportTo()
                                }
                            })
                        }
                        e.items = items;
                        that._trigger("onContextMenuPreparing", e);
                        items = e.items;
                        if (items && items.length) {
                            return items
                        }
                        return
                    },
                    _createEventArgs(targetElement, dxEvent) {
                        const that = this;
                        const dataSource = that.getDataSource();
                        const args = {
                            rowFields: dataSource.getAreaFields("row"),
                            columnFields: dataSource.getAreaFields("column"),
                            dataFields: dataSource.getAreaFields("data"),
                            event: dxEvent
                        };
                        if ($targetElement = (0, _renderer.default)(targetElement), $targetElement.closest(".".concat("dx-area-fields")).length || $targetElement.find(".".concat("dx-area-fields")).length) {
                            return (0, _extend.extend)(that._createFieldArgs(targetElement), args)
                        }
                        var $targetElement;
                        return (0, _extend.extend)(that._createCellArgs(targetElement), args)
                    },
                    _createFieldArgs(targetElement) {
                        const field = (0, _renderer.default)(targetElement).children().data("field");
                        const args = {
                            field: field
                        };
                        return (0, _type.isDefined)(field) ? args : {}
                    },
                    _createCellArgs(cellElement) {
                        const $cellElement = (0, _renderer.default)(cellElement);
                        const columnIndex = cellElement.cellIndex;
                        const {
                            rowIndex: rowIndex
                        } = cellElement.parentElement;
                        const $table = $cellElement.closest("table");
                        const data = $table.data("data");
                        const cell = data && data[rowIndex] && data[rowIndex][columnIndex];
                        const args = {
                            area: $table.data("area"),
                            rowIndex: rowIndex,
                            columnIndex: columnIndex,
                            cellElement: (0, _element.getPublicElement)($cellElement),
                            cell: cell
                        };
                        return args
                    },
                    _handleCellClick(e) {
                        const that = this;
                        const args = that._createEventArgs(e.currentTarget, e);
                        const {
                            cell: cell
                        } = args;
                        if (!cell || !args.area && (args.rowIndex || args.columnIndex)) {
                            return
                        }
                        that._trigger("onCellClick", args);
                        cell && !args.cancel && (0, _type.isDefined)(cell.expanded) && setTimeout(() => {
                            that._dataController[cell.expanded ? "collapseHeaderItem" : "expandHeaderItem"](args.area, cell.path)
                        })
                    },
                    _getNoDataText() {
                        return this.option("texts.noData")
                    },
                    _renderNoDataText: _m_utils.default.renderNoDataText,
                    _renderLoadPanel: _m_utils.default.renderLoadPanel,
                    _updateLoading(progress) {
                        const that = this;
                        const isLoading = that._dataController.isLoading();
                        if (!that._loadPanel) {
                            return
                        }
                        const loadPanelVisible = that._loadPanel.option("visible");
                        if (!loadPanelVisible) {
                            that._startLoadingTime = new Date
                        }
                        if (isLoading) {
                            if (progress) {
                                if (new Date - that._startLoadingTime >= 1e3) {
                                    that._loadPanel.option("message", "".concat(Math.floor(100 * progress), "%"))
                                }
                            } else {
                                that._loadPanel.option("message", that.option("loadPanel.text"))
                            }
                        }
                        clearTimeout(that._hideLoadingTimeoutID);
                        if (loadPanelVisible && !isLoading) {
                            that._hideLoadingTimeoutID = setTimeout(() => {
                                that._loadPanel.option("visible", false);
                                that.$element().removeClass("dx-overflow-hidden")
                            })
                        } else {
                            const visibilityOptions = {
                                visible: isLoading
                            };
                            if (isLoading) {
                                visibilityOptions.position = _m_utils.default.calculateLoadPanelPosition(that._dataArea.groupElement())
                            }
                            that._loadPanel.option(visibilityOptions);
                            that.$element().toggleClass("dx-overflow-hidden", !isLoading)
                        }
                    },
                    _renderDescriptionArea() {
                        const $element = this.$element();
                        const $descriptionCell = $element.find(".".concat("dx-area-description-cell"));
                        const $toolbarContainer = (0, _renderer.default)(DIV).addClass("dx-pivotgrid-toolbar");
                        const fieldPanel = this.option("fieldPanel");
                        const $filterHeader = $element.find(".dx-filter-header");
                        const $columnHeader = $element.find(".dx-column-header");
                        let $targetContainer;
                        if (fieldPanel.visible && fieldPanel.showFilterFields) {
                            $targetContainer = $filterHeader
                        } else if (fieldPanel.visible && (fieldPanel.showDataFields || fieldPanel.showColumnFields)) {
                            $targetContainer = $columnHeader
                        } else {
                            $targetContainer = $descriptionCell
                        }
                        $columnHeader.toggleClass("dx-bottom-border", !!(fieldPanel.visible && (fieldPanel.showDataFields || fieldPanel.showColumnFields)));
                        $filterHeader.toggleClass("dx-bottom-border", !!(fieldPanel.visible && fieldPanel.showFilterFields));
                        $descriptionCell.toggleClass("dx-pivotgrid-background", fieldPanel.visible && (fieldPanel.showDataFields || fieldPanel.showColumnFields || fieldPanel.showRowFields));
                        this.$element().find(".dx-pivotgrid-toolbar").remove();
                        $toolbarContainer.prependTo($targetContainer);
                        const stylingMode = (0, _themes.isFluent)((0, _themes.current)()) ? "text" : "contained";
                        if (this.option("fieldChooser.enabled")) {
                            const $buttonElement = (0, _renderer.default)(DIV).appendTo($toolbarContainer).addClass("dx-pivotgrid-field-chooser-button");
                            const buttonOptions = {
                                icon: "columnchooser",
                                hint: this.option("texts.showFieldChooser"),
                                stylingMode: stylingMode,
                                onClick: () => {
                                    this.getFieldChooserPopup().show()
                                }
                            };
                            this._createComponent($buttonElement, _button.default, buttonOptions)
                        }
                        if (this.option("export.enabled")) {
                            const $buttonElement = (0, _renderer.default)(DIV).appendTo($toolbarContainer).addClass("dx-pivotgrid-export-button");
                            const buttonOptions = {
                                icon: "xlsxfile",
                                hint: this.option("texts.exportToExcel"),
                                stylingMode: stylingMode,
                                onClick: () => {
                                    this.exportTo()
                                }
                            };
                            this._createComponent($buttonElement, _button.default, buttonOptions)
                        }
                    },
                    _detectHasContainerHeight() {
                        const that = this;
                        const element = that.$element();
                        if ((0, _type.isDefined)(that._hasHeight)) {
                            const height = that.option("height") || that.$element().get(0).style.height;
                            if (height && that._hasHeight ^ "auto" !== height) {
                                that._hasHeight = null
                            }
                        }
                        if ((0, _type.isDefined)(that._hasHeight) || element.is(":hidden")) {
                            return
                        }
                        that._pivotGridContainer.addClass("dx-hidden");
                        const testElement = (0, _renderer.default)(DIV);
                        (0, _size.setHeight)(testElement, 66666);
                        element.append(testElement);
                        that._hasHeight = 66666 !== (0, _size.getHeight)(element);
                        that._pivotGridContainer.removeClass("dx-hidden");
                        testElement.remove()
                    },
                    _renderHeaders(rowHeaderContainer, columnHeaderContainer, filterHeaderContainer, dataHeaderContainer) {
                        const dataSource = this.getDataSource();
                        this._rowFields = this._rowFields || new _m_fields_area.FieldsArea(this, "row");
                        this._rowFields.render(rowHeaderContainer, dataSource.getAreaFields("row"));
                        this._columnFields = this._columnFields || new _m_fields_area.FieldsArea(this, "column");
                        this._columnFields.render(columnHeaderContainer, dataSource.getAreaFields("column"));
                        this._filterFields = this._filterFields || new _m_fields_area.FieldsArea(this, "filter");
                        this._filterFields.render(filterHeaderContainer, dataSource.getAreaFields("filter"));
                        this._dataFields = this._dataFields || new _m_fields_area.FieldsArea(this, "data");
                        this._dataFields.render(dataHeaderContainer, dataSource.getAreaFields("data"));
                        this.$element().dxPivotGridFieldChooserBase("instance").renderSortable()
                    },
                    _createTableElement() {
                        const $table = (0, _renderer.default)("<table>").css({
                            width: "100%"
                        }).toggleClass("dx-pivotgrid-border", !!this.option("showBorders")).toggleClass("dx-word-wrap", !!this.option("wordWrapEnabled"));
                        _events_engine.default.on($table, (0, _index.addNamespace)(_click.name, "dxPivotGrid"), "td", this._handleCellClick.bind(this));
                        return $table
                    },
                    _renderDataArea(dataAreaElement) {
                        const dataArea = this._dataArea || new _m_data_area.default.DataArea(this);
                        this._dataArea = dataArea;
                        dataArea.render(dataAreaElement, this._dataController.getCellsInfo());
                        return dataArea
                    },
                    _renderRowsArea(rowsAreaElement) {
                        const rowsArea = this._rowsArea || new _m_headers_area.default.VerticalHeadersArea(this);
                        this._rowsArea = rowsArea;
                        rowsArea.render(rowsAreaElement, this._dataController.getRowsInfo());
                        return rowsArea
                    },
                    _renderColumnsArea(columnsAreaElement) {
                        const columnsArea = this._columnsArea || new _m_headers_area.default.HorizontalHeadersArea(this);
                        this._columnsArea = columnsArea;
                        columnsArea.render(columnsAreaElement, this._dataController.getColumnsInfo());
                        return columnsArea
                    },
                    _initMarkup() {
                        this.callBase.apply(this, arguments);
                        this.$element().addClass("dx-pivotgrid")
                    },
                    _renderContentImpl() {
                        const that = this;
                        let columnsAreaElement;
                        let rowsAreaElement;
                        let dataAreaElement;
                        let tableElement;
                        const isFirstDrawing = !that._pivotGridContainer;
                        let rowHeaderContainer;
                        let columnHeaderContainer;
                        let filterHeaderContainer;
                        let dataHeaderContainer;
                        tableElement = !isFirstDrawing && that._tableElement();
                        if (!tableElement) {
                            that.$element().addClass("dx-row-lines").addClass("dx-pivotgrid-fields-container");
                            that._pivotGridContainer = (0, _renderer.default)(DIV).addClass("dx-pivotgrid-container");
                            that._renderFieldChooser();
                            that._renderContextMenu();
                            columnsAreaElement = (0, _renderer.default)(TD).addClass("dx-area-column-cell");
                            rowsAreaElement = (0, _renderer.default)(TD).addClass("dx-area-row-cell");
                            dataAreaElement = (0, _renderer.default)(TD).addClass("dx-area-data-cell");
                            tableElement = that._createTableElement();
                            dataHeaderContainer = (0, _renderer.default)(TD).addClass("dx-data-header");
                            filterHeaderContainer = (0, _renderer.default)("<td>").attr("colspan", "2").addClass("dx-filter-header");
                            columnHeaderContainer = (0, _renderer.default)(TD).addClass("dx-column-header");
                            rowHeaderContainer = (0, _renderer.default)(TD).addClass("dx-area-description-cell");
                            (0, _renderer.default)(TR).append(filterHeaderContainer).appendTo(tableElement);
                            (0, _renderer.default)(TR).append(dataHeaderContainer).append(columnHeaderContainer).appendTo(tableElement);
                            (0, _renderer.default)(TR).append(rowHeaderContainer).append(columnsAreaElement).appendTo(tableElement);
                            (0, _renderer.default)(TR).addClass("dx-bottom-row").append(rowsAreaElement).append(dataAreaElement).appendTo(tableElement);
                            that._pivotGridContainer.append(tableElement);
                            that.$element().append(that._pivotGridContainer);
                            if ("tree" === that.option("rowHeaderLayout")) {
                                rowsAreaElement.addClass("dx-area-tree-view")
                            }
                        }
                        that.$element().addClass("dx-overflow-hidden");
                        that._createComponent(that.$element(), _m_field_chooser_base.FieldChooserBase, {
                            dataSource: that.getDataSource(),
                            encodeHtml: that.option("encodeHtml"),
                            allowFieldDragging: that.option("fieldPanel.allowFieldDragging"),
                            headerFilter: that.option("headerFilter"),
                            visible: that.option("visible"),
                            remoteSort: "virtual" === that.option("scrolling.mode")
                        });
                        const dataArea = that._renderDataArea(dataAreaElement);
                        const rowsArea = that._renderRowsArea(rowsAreaElement);
                        const columnsArea = that._renderColumnsArea(columnsAreaElement);
                        dataArea.tableElement().prepend(columnsArea.headElement());
                        if (isFirstDrawing) {
                            that._renderLoadPanel(dataArea.groupElement().parent(), that.$element());
                            that._renderDescriptionArea();
                            rowsArea.renderScrollable();
                            columnsArea.renderScrollable();
                            dataArea.renderScrollable()
                        } [dataArea, rowsArea, columnsArea].forEach(area => {
                            unsubscribeScrollEvents(area)
                        });
                        that._renderHeaders(rowHeaderContainer, columnHeaderContainer, filterHeaderContainer, dataHeaderContainer);
                        that._update(isFirstDrawing)
                    },
                    _update(isFirstDrawing) {
                        const that = this;
                        const updateHandler = function() {
                            that.updateDimensions()
                        };
                        if (that._needDelayResizing(that._dataArea.getData()) && isFirstDrawing) {
                            setTimeout(updateHandler)
                        } else {
                            updateHandler()
                        }
                    },
                    _fireContentReadyAction() {
                        if (!this._dataController.isLoading()) {
                            this.callBase()
                        }
                    },
                    getScrollPath(area) {
                        const that = this;
                        if ("column" === area) {
                            return that._columnsArea.getScrollPath(that._scrollLeft)
                        }
                        return that._rowsArea.getScrollPath(that._scrollTop)
                    },
                    getDataSource() {
                        return this._dataController.getDataSource()
                    },
                    getFieldChooserPopup() {
                        return this._fieldChooserPopup
                    },
                    hasScroll(area) {
                        return "column" === area ? this._columnsArea.hasScroll() : this._rowsArea.hasScroll()
                    },
                    _dimensionChanged() {
                        this.updateDimensions()
                    },
                    _visibilityChanged(visible) {
                        if (visible) {
                            this.updateDimensions()
                        }
                    },
                    _dispose() {
                        const that = this;
                        clearTimeout(that._hideLoadingTimeoutID);
                        that.callBase.apply(that, arguments);
                        if (that._dataController) {
                            that._dataController.dispose()
                        }
                    },
                    _tableElement() {
                        return this.$element().find("table").first()
                    },
                    addWidgetPrefix: className => "dx-pivotgrid-".concat(className),
                    resize() {
                        this.updateDimensions()
                    },
                    isReady() {
                        return this.callBase() && !this._dataController.isLoading()
                    },
                    updateDimensions() {
                        const that = this;
                        let groupWidth;
                        const tableElement = that._tableElement();
                        let bordersWidth;
                        let totalWidth = 0;
                        let totalHeight = 0;
                        let rowsAreaWidth = 0;
                        let hasRowsScroll;
                        let hasColumnsScroll;
                        const dataAreaCell = tableElement.find(".".concat("dx-area-data-cell"));
                        const rowAreaCell = tableElement.find(".".concat("dx-area-row-cell"));
                        const columnAreaCell = tableElement.find(".".concat("dx-area-column-cell"));
                        const descriptionCell = tableElement.find(".".concat("dx-area-description-cell"));
                        const filterHeaderCell = tableElement.find(".dx-filter-header");
                        const columnHeaderCell = tableElement.find(".dx-column-header");
                        const rowFieldsHeader = that._rowFields;
                        const d = new _deferred.Deferred;
                        if (!(0, _window.hasWindow)()) {
                            return
                        }
                        const needSynchronizeFieldPanel = rowFieldsHeader.isVisible() && "tree" !== that.option("rowHeaderLayout");
                        that._detectHasContainerHeight();
                        if (!that._dataArea.headElement().length) {
                            that._dataArea.tableElement().prepend(that._columnsArea.headElement())
                        }
                        if (needSynchronizeFieldPanel) {
                            that._rowsArea.updateColspans(rowFieldsHeader.getColumnsCount());
                            that._rowsArea.tableElement().prepend(rowFieldsHeader.headElement())
                        }
                        tableElement.addClass("dx-incompressible-fields");
                        that._dataArea.reset();
                        that._rowsArea.reset();
                        that._columnsArea.reset();
                        rowFieldsHeader.reset();
                        const calculateHasScroll = (areaSize, totalSize) => totalSize - areaSize >= 1;
                        const calculateGroupHeight = (dataAreaHeight, totalHeight, hasRowsScroll, hasColumnsScroll, scrollBarWidth) => hasRowsScroll ? dataAreaHeight : totalHeight + (hasColumnsScroll ? scrollBarWidth : 0);
                        (0, _common.deferUpdate)(() => {
                            const rowHeights = that._rowsArea.getRowsHeight();
                            const descriptionCellHeight = (0, _size.getOuterHeight)(descriptionCell[0], true) + (needSynchronizeFieldPanel ? rowHeights[0] : 0);
                            let filterAreaHeight = 0;
                            let dataAreaHeight = 0;
                            if (that._hasHeight) {
                                filterAreaHeight = (0, _size.getHeight)(filterHeaderCell);
                                const $dataHeader = tableElement.find(".dx-data-header");
                                const dataHeaderHeight = (0, _size.getHeight)($dataHeader);
                                bordersWidth = getCommonBorderWidth([columnAreaCell, dataAreaCell, tableElement, columnHeaderCell, filterHeaderCell], "height");
                                dataAreaHeight = (0, _size.getHeight)(that.$element()) - filterAreaHeight - dataHeaderHeight - (Math.max((0, _size.getHeight)(that._dataArea.headElement()), (0, _size.getHeight)(columnAreaCell), descriptionCellHeight) + bordersWidth)
                            }
                            const scrollBarWidth = that._dataArea.getScrollbarWidth();
                            const hasVerticalScrollbar = calculateHasScroll(dataAreaHeight, (0, _size.getHeight)(that._dataArea.tableElement()));
                            that._dataArea.tableElement().css({
                                width: that._hasHeight && hasVerticalScrollbar && scrollBarWidth ? "calc(100% - ".concat(scrollBarWidth, "px)") : "100%"
                            });
                            const resultWidths = that._dataArea.getColumnsWidth();
                            const rowsAreaHeights = needSynchronizeFieldPanel ? rowHeights.slice(1) : rowHeights;
                            const dataAreaHeights = that._dataArea.getRowsHeight();
                            const columnsAreaRowCount = that._dataController.getColumnsInfo().length;
                            const resultHeights = (0, _m_widget_utils.mergeArraysByMaxValue)(rowsAreaHeights, dataAreaHeights.slice(columnsAreaRowCount));
                            const columnsAreaRowHeights = dataAreaHeights.slice(0, columnsAreaRowCount);
                            const columnsAreaHeight = getArraySum(columnsAreaRowHeights);
                            const rowsAreaColumnWidths = that._rowsArea.getColumnsWidth();
                            totalWidth = (0, _size.getWidth)(that._dataArea.tableElement());
                            totalHeight = getArraySum(resultHeights);
                            if (!totalWidth || !totalHeight) {
                                d.resolve();
                                return
                            }
                            rowsAreaWidth = getArraySum(rowsAreaColumnWidths);
                            const elementWidth = (0, _size.getWidth)(that.$element());
                            bordersWidth = getCommonBorderWidth([rowAreaCell, dataAreaCell, tableElement], "width");
                            groupWidth = elementWidth - rowsAreaWidth - bordersWidth;
                            groupWidth = groupWidth > 0 ? groupWidth : totalWidth;
                            const diff = totalWidth - groupWidth;
                            const needAdjustWidthOnZoom = diff >= 0 && diff <= 2;
                            if (needAdjustWidthOnZoom) {
                                adjustSizeArray(resultWidths, diff);
                                totalWidth = groupWidth
                            }
                            hasRowsScroll = that._hasHeight && calculateHasScroll(dataAreaHeight, totalHeight);
                            hasColumnsScroll = calculateHasScroll(groupWidth, totalWidth);
                            const groupHeight = calculateGroupHeight(dataAreaHeight, totalHeight, hasRowsScroll, hasColumnsScroll, scrollBarWidth);
                            (0, _common.deferRender)(() => {
                                that._columnsArea.tableElement().append(that._dataArea.headElement());
                                rowFieldsHeader.tableElement().append(that._rowsArea.headElement());
                                if (descriptionCellHeight > columnsAreaHeight) {
                                    adjustSizeArray(columnsAreaRowHeights, columnsAreaHeight - descriptionCellHeight);
                                    that._columnsArea.setRowsHeight(columnsAreaRowHeights)
                                }
                                tableElement.removeClass("dx-incompressible-fields");
                                columnHeaderCell.children().css("maxWidth", groupWidth);
                                that._columnsArea.setGroupWidth(groupWidth);
                                that._columnsArea.processScrollBarSpacing(hasRowsScroll ? scrollBarWidth : 0);
                                that._columnsArea.setColumnsWidth(resultWidths);
                                that._rowsArea.setGroupHeight(that._hasHeight ? groupHeight : "auto");
                                that._rowsArea.processScrollBarSpacing(hasColumnsScroll ? scrollBarWidth : 0);
                                that._rowsArea.setColumnsWidth(rowsAreaColumnWidths);
                                that._rowsArea.setRowsHeight(resultHeights);
                                that._dataArea.setColumnsWidth(resultWidths);
                                that._dataArea.setRowsHeight(resultHeights);
                                that._dataArea.setGroupWidth(groupWidth);
                                that._dataArea.setGroupHeight(that._hasHeight ? groupHeight : "auto");
                                needSynchronizeFieldPanel && rowFieldsHeader.setColumnsWidth(rowsAreaColumnWidths);
                                dataAreaCell.toggleClass("dx-bottom-border", !hasRowsScroll);
                                rowAreaCell.toggleClass("dx-bottom-border", !hasRowsScroll);
                                if (!that._hasHeight && elementWidth !== (0, _size.getWidth)(that.$element())) {
                                    const diff = elementWidth - (0, _size.getWidth)(that.$element());
                                    if (!hasColumnsScroll) {
                                        adjustSizeArray(resultWidths, diff);
                                        that._columnsArea.setColumnsWidth(resultWidths);
                                        that._dataArea.setColumnsWidth(resultWidths)
                                    }
                                    that._dataArea.setGroupWidth(groupWidth - diff);
                                    that._columnsArea.setGroupWidth(groupWidth - diff)
                                }
                                if (that._hasHeight && that._filterFields.isVisible() && (0, _size.getHeight)(filterHeaderCell) !== filterAreaHeight) {
                                    const diff = (0, _size.getHeight)(filterHeaderCell) - filterAreaHeight;
                                    if (diff > 0) {
                                        hasRowsScroll = calculateHasScroll(dataAreaHeight - diff, totalHeight);
                                        const groupHeight = calculateGroupHeight(dataAreaHeight - diff, totalHeight, hasRowsScroll, hasColumnsScroll, scrollBarWidth);
                                        that._dataArea.setGroupHeight(groupHeight);
                                        that._rowsArea.setGroupHeight(groupHeight)
                                    }
                                }
                                const scrollingOptions = that.option("scrolling");
                                if ("virtual" === scrollingOptions.mode) {
                                    that._setVirtualContentParams(scrollingOptions, resultWidths, resultHeights, groupWidth, groupHeight, that._hasHeight, rowsAreaWidth)
                                }
                                const updateScrollableResults = [];
                                that._dataArea.updateScrollableOptions({
                                    direction: that._dataArea.getScrollableDirection(hasColumnsScroll, hasRowsScroll),
                                    rtlEnabled: that.option("rtlEnabled")
                                });
                                that._columnsArea.updateScrollableOptions({
                                    rtlEnabled: that.option("rtlEnabled")
                                });
                                (0, _iterator.each)([that._columnsArea, that._rowsArea, that._dataArea], (_, area) => {
                                    updateScrollableResults.push(area && area.updateScrollable())
                                });
                                that._updateLoading();
                                that._renderNoDataText(dataAreaCell);
                                _deferred.when.apply(_renderer.default, updateScrollableResults).done(() => {
                                    that._updateScrollPosition(that._columnsArea, that._rowsArea, that._dataArea, true);
                                    that._subscribeToEvents(that._columnsArea, that._rowsArea, that._dataArea);
                                    d.resolve()
                                })
                            })
                        });
                        return d
                    },
                    _setVirtualContentParams(scrollingOptions, resultWidths, resultHeights, groupWidth, groupHeight, hasHeight, rowsAreaWidth) {
                        const virtualContentParams = this._dataController.calculateVirtualContentParams({
                            virtualRowHeight: scrollingOptions.virtualRowHeight,
                            virtualColumnWidth: scrollingOptions.virtualColumnWidth,
                            itemWidths: resultWidths,
                            itemHeights: resultHeights,
                            rowCount: resultHeights.length,
                            columnCount: resultWidths.length,
                            viewportWidth: groupWidth,
                            viewportHeight: hasHeight ? groupHeight : (0, _size.getOuterHeight)(window)
                        });
                        this._dataArea.setVirtualContentParams({
                            top: virtualContentParams.contentTop,
                            left: virtualContentParams.contentLeft,
                            width: virtualContentParams.width,
                            height: virtualContentParams.height
                        });
                        this._rowsArea.setVirtualContentParams({
                            top: virtualContentParams.contentTop,
                            width: rowsAreaWidth,
                            height: virtualContentParams.height
                        });
                        this._columnsArea.setVirtualContentParams({
                            left: virtualContentParams.contentLeft,
                            width: virtualContentParams.width,
                            height: (0, _size.getHeight)(this._columnsArea.groupElement())
                        })
                    },
                    applyPartialDataSource(area, path, dataSource) {
                        this._dataController.applyPartialDataSource(area, path, dataSource)
                    }
                }).inherit(_m_export.ExportController).include(_m_chart_integration.ChartIntegrationMixin);
                exports.PivotGrid = PivotGrid;
                (0, _component_registrator.default)("dxPivotGrid", PivotGrid);
                var _default = {
                    PivotGrid: PivotGrid
                };
                exports.default = _default
            },
        28580:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/m_widget_utils.js ***!
              \*******************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.calculateScrollbarWidth = void 0;
                exports.capitalizeFirstLetter = capitalizeFirstLetter;
                exports.createPath = createPath;
                exports.default = void 0;
                exports.discoverObjectFields = discoverObjectFields;
                exports.findField = findField;
                exports.foreachDataLevel = foreachDataLevel;
                exports.foreachTreeAsync = exports.foreachTree = void 0;
                exports.formatValue = formatValue;
                exports.getCompareFunction = getCompareFunction;
                exports.getExpandedLevel = getExpandedLevel;
                exports.getFieldsDataType = getFieldsDataType;
                exports.getFiltersByPath = getFiltersByPath;
                exports.getScrollbarWidth = void 0;
                exports.mergeArraysByMaxValue = mergeArraysByMaxValue;
                exports.sendRequest = sendRequest;
                exports.setDefaultFieldValueFormatting = setDefaultFieldValueFormatting;
                exports.storeDrillDownMixin = exports.setFieldProperty = void 0;
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 73349));
                var _ajax = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/ajax */ 37208));
                var _call_once = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/call_once */ 39618));
                var _data = __webpack_require__( /*! ../../../core/utils/data */ 47617);
                var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _array_store = _interopRequireDefault(__webpack_require__( /*! ../../../data/array_store */ 26562));
                var _data_source = __webpack_require__( /*! ../../../data/data_source/data_source */ 85273);
                var _format_helper = _interopRequireDefault(__webpack_require__( /*! ../../../format_helper */ 30343));
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../localization/date */ 91500));
                var _const = __webpack_require__( /*! ./const */ 18813);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const setFieldProperty = function(field, property, value, isInitialization) {
                    const initProperties = field._initProperties = field._initProperties || {};
                    const initValue = isInitialization ? value : field[property];
                    const needInitProperty = !Object.prototype.hasOwnProperty.call(initProperties, property) || isInitialization;
                    if (needInitProperty && "_initProperties" !== property) {
                        initProperties[property] = initValue
                    }
                    field[property] = value
                };
                exports.setFieldProperty = setFieldProperty;

                function sendRequest(options) {
                    return _ajax.default.sendRequest(options)
                }
                let foreachTreeAsyncDate = new Date;

                function createForeachTreeFunc(isAsync) {
                    const foreachTreeFunc = function(items, callback, parentAtFirst, members, index, isChildrenProcessing) {
                        members = members || [];
                        items = items || [];
                        let i;
                        let deferred;
                        index = index || 0;

                        function createForeachTreeAsyncHandler(deferred, i, isChildrenProcessing) {
                            (0, _deferred.when)(foreachTreeFunc(items, callback, parentAtFirst, members, i, isChildrenProcessing)).done(deferred.resolve)
                        }
                        for (i = index; i < items.length; i += 1) {
                            if (isAsync && i > index && i % 1e4 === 0 && new Date - foreachTreeAsyncDate >= 300) {
                                foreachTreeAsyncDate = new Date;
                                deferred = new _deferred.Deferred;
                                createForeachTreeAsyncHandler(deferred, i, false);
                                return deferred
                            }
                            const item = items[i];
                            if (!isChildrenProcessing) {
                                members.unshift(item);
                                if (parentAtFirst && false === callback(members, i)) {
                                    return
                                }
                                if (item.children) {
                                    const childrenDeferred = foreachTreeFunc(item.children, callback, parentAtFirst, members);
                                    if (isAsync && childrenDeferred) {
                                        deferred = new _deferred.Deferred;
                                        childrenDeferred.done(createForeachTreeAsyncHandler(deferred, i, true));
                                        return deferred
                                    }
                                }
                            }
                            isChildrenProcessing = false;
                            if (!parentAtFirst && false === callback(members, i)) {
                                return
                            }
                            members.shift();
                            if (items[i] !== item) {
                                i -= 1
                            }
                        }
                        return
                    };
                    return foreachTreeFunc
                }
                const foreachTree = createForeachTreeFunc(false);
                exports.foreachTree = foreachTree;
                const foreachTreeAsync = createForeachTreeFunc(true);
                exports.foreachTreeAsync = foreachTreeAsync;

                function findField(fields, id) {
                    if (fields && (0, _type.isDefined)(id)) {
                        for (let i = 0; i < fields.length; i += 1) {
                            const field = fields[i];
                            if (field.name === id || field.caption === id || field.dataField === id || field.index === id) {
                                return i
                            }
                        }
                    }
                    return -1
                }

                function formatValue(value, options) {
                    const valueText = value === value && _format_helper.default.format(value, options.format);
                    const formatObject = {
                        value: value,
                        valueText: valueText || ""
                    };
                    return options.customizeText ? options.customizeText.call(options, formatObject) : formatObject.valueText
                }

                function getCompareFunction(valueSelector) {
                    return function(a, b) {
                        let result = 0;
                        const valueA = valueSelector(a);
                        const valueB = valueSelector(b);
                        const aIsDefined = (0, _type.isDefined)(valueA);
                        const bIsDefined = (0, _type.isDefined)(valueB);
                        if (aIsDefined && bIsDefined) {
                            if (valueA > valueB) {
                                result = 1
                            } else if (valueA < valueB) {
                                result = -1
                            }
                        }
                        if (aIsDefined && !bIsDefined) {
                            result = 1
                        }
                        if (!aIsDefined && bIsDefined) {
                            result = -1
                        }
                        return result
                    }
                }

                function createPath(items) {
                    const result = [];
                    for (let i = items.length - 1; i >= 0; i -= 1) {
                        result.push(items[i].key || items[i].value)
                    }
                    return result
                }

                function foreachDataLevel(data, callback, index, childrenField) {
                    index = index || 0;
                    childrenField = childrenField || "children";
                    if (data.length) {
                        callback(data, index)
                    }
                    for (let i = 0; i < data.length; i += 1) {
                        const item = data[i];
                        if (item[childrenField] && item[childrenField].length) {
                            foreachDataLevel(item[childrenField], callback, index + 1, childrenField)
                        }
                    }
                }

                function mergeArraysByMaxValue(values1, values2) {
                    const result = [];
                    for (let i = 0; i < values1.length; i += 1) {
                        result.push(Math.max(values1[i] || 0, values2[i] || 0))
                    }
                    return result
                }

                function getExpandedLevel(options, axisName) {
                    const dimensions = options[axisName];
                    let expandLevel = 0;
                    const expandedPaths = ("columns" === axisName ? options.columnExpandedPaths : options.rowExpandedPaths) || [];
                    if (options.headerName === axisName) {
                        expandLevel = options.path.length
                    } else if (options.headerName && options.headerName !== axisName && options.oppositePath) {
                        expandLevel = options.oppositePath.length
                    } else {
                        (0, _iterator.each)(expandedPaths, (_, path) => {
                            expandLevel = Math.max(expandLevel, path.length)
                        })
                    }
                    while (dimensions[expandLevel + 1] && dimensions[expandLevel].expanded) {
                        expandLevel += 1
                    }
                    return expandLevel
                }

                function parseFields(dataSource, fieldsList, path, fieldsDataType) {
                    const result = [];
                    Object.keys(fieldsList || []).forEach(field => {
                        if (field && field.startsWith("__")) {
                            return
                        }
                        let dataIndex = 1;
                        const currentPath = path.length ? "".concat(path, ".").concat(field) : field;
                        let dataType = fieldsDataType[currentPath];
                        const getter = (0, _data.compileGetter)(currentPath);
                        let value = fieldsList[field];
                        let items;
                        while (!(0, _type.isDefined)(value) && dataSource[dataIndex]) {
                            value = getter(dataSource[dataIndex]);
                            dataIndex += 1
                        }
                        if (!dataType && (0, _type.isDefined)(value)) {
                            dataType = (0, _type.type)(value)
                        }
                        items = [{
                            dataField: currentPath,
                            dataType: dataType,
                            groupName: "date" === dataType ? field : void 0,
                            groupInterval: void 0,
                            displayFolder: path
                        }];
                        if ("date" === dataType) {
                            items = items.concat((item = items[0], (0, _iterator.map)(["year", "quarter", "month"], (value, index) => (0, _extend.extend)({}, item, {
                                groupInterval: value,
                                groupIndex: index
                            }))))
                        } else if ("object" === dataType) {
                            items = parseFields(dataSource, value, currentPath, fieldsDataType)
                        }
                        var item;
                        result.push.apply(result, items)
                    });
                    return result
                }

                function discoverObjectFields(items, fields) {
                    const fieldsDataType = getFieldsDataType(fields);
                    return parseFields(items, items[0], "", fieldsDataType)
                }

                function getFieldsDataType(fields) {
                    const result = {};
                    (0, _iterator.each)(fields, (_, field) => {
                        result[field.dataField] = result[field.dataField] || field.dataType
                    });
                    return result
                }
                const DATE_INTERVAL_FORMATS = {
                    month: value => _date.default.getMonthNames()[value - 1],
                    quarter: value => _date.default.format(new Date(2e3, 3 * value - 1), "quarter"),
                    dayOfWeek: value => _date.default.getDayNames()[value]
                };

                function setDefaultFieldValueFormatting(field) {
                    if ("date" === field.dataType) {
                        if (!field.format) {
                            setFieldProperty(field, "format", DATE_INTERVAL_FORMATS[field.groupInterval])
                        }
                    } else if ("number" === field.dataType) {
                        const groupInterval = (0, _type.isNumeric)(field.groupInterval) && field.groupInterval > 0 && field.groupInterval;
                        if (groupInterval && !field.customizeText) {
                            setFieldProperty(field, "customizeText", formatObject => {
                                const secondValue = formatObject.value + groupInterval;
                                const secondValueText = _format_helper.default.format(secondValue, field.format);
                                return formatObject.valueText && secondValueText ? "".concat(formatObject.valueText, " - ").concat(secondValueText) : ""
                            })
                        }
                    }
                }

                function getFiltersByPath(fields, path) {
                    const result = [];
                    path = path || [];
                    for (let i = 0; i < path.length; i += 1) {
                        result.push((0, _extend.extend)({}, fields[i], {
                            groupIndex: null,
                            groupName: null,
                            filterType: "include",
                            filterValues: [path[i]]
                        }))
                    }
                    return result
                }
                const storeDrillDownMixin = {
                    createDrillDownDataSource(descriptions, params) {
                        const items = this.getDrillDownItems(descriptions, params);

                        function createCustomStoreMethod(methodName) {
                            return function(options) {
                                let d;
                                if (void 0) {
                                    d = (void 0)[methodName](options)
                                } else {
                                    d = new _deferred.Deferred;
                                    (0, _deferred.when)(items).done(data => {
                                        const arrayStore = new _array_store.default(data);
                                        arrayStore[methodName](options).done(d.resolve).fail(d.reject)
                                    }).fail(d.reject)
                                }
                                return d
                            }
                        }
                        const dataSource = new _data_source.DataSource({
                            load: createCustomStoreMethod("load"),
                            totalCount: createCustomStoreMethod("totalCount"),
                            key: this.key()
                        });
                        return dataSource
                    }
                };
                exports.storeDrillDownMixin = storeDrillDownMixin;

                function capitalizeFirstLetter(string) {
                    return string.charAt(0).toUpperCase() + string.slice(1)
                }
                const getScrollbarWidth = containerElement => containerElement.offsetWidth - containerElement.clientWidth;
                exports.getScrollbarWidth = getScrollbarWidth;
                const calculateScrollbarWidth = (0, _call_once.default)(() => {
                    const document = _dom_adapter.default.getDocument();
                    document.body.insertAdjacentHTML("beforeend", '<div class="'.concat(_const.CLASSES.scrollBarMeasureElement, '"></div>'));
                    const scrollbar = document.body.lastElementChild;
                    const scrollbarWidth = getScrollbarWidth(scrollbar);
                    if (scrollbar) {
                        document.body.removeChild(scrollbar)
                    }
                    return scrollbarWidth
                });
                exports.calculateScrollbarWidth = calculateScrollbarWidth;
                var _default = {
                    setFieldProperty: setFieldProperty,
                    sendRequest: sendRequest,
                    foreachTree: foreachTree,
                    foreachTreeAsync: foreachTreeAsync,
                    findField: findField,
                    formatValue: formatValue,
                    getCompareFunction: getCompareFunction,
                    createPath: createPath,
                    foreachDataLevel: foreachDataLevel,
                    mergeArraysByMaxValue: mergeArraysByMaxValue,
                    getExpandedLevel: getExpandedLevel,
                    discoverObjectFields: discoverObjectFields,
                    getFieldsDataType: getFieldsDataType,
                    setDefaultFieldValueFormatting: setDefaultFieldValueFormatting,
                    getFiltersByPath: getFiltersByPath,
                    storeDrillDownMixin: storeDrillDownMixin,
                    capitalizeFirstLetter: capitalizeFirstLetter,
                    getScrollbarWidth: getScrollbarWidth,
                    calculateScrollbarWidth: calculateScrollbarWidth
                };
                exports.default = _default
            },
        2166:
            /*!********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/remote_store/m_remote_store.js ***!
              \********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = exports.RemoteStore = void 0;
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../../../core/class */ 38377));
                var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date_serialization */ 69434));
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _data_source = __webpack_require__( /*! ../../../../data/data_source/data_source */ 85273);
                var _utils = __webpack_require__( /*! ../../../../data/data_source/utils */ 9234);
                var _m_widget_utils = function(obj, nodeInterop) {
                    if (!nodeInterop && obj && obj.__esModule) {
                        return obj
                    }
                    if (null === obj || "object" !== typeof obj && "function" !== typeof obj) {
                        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 ("default" !== key && 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
                }(__webpack_require__( /*! ../m_widget_utils */ 28580));
                var _m_remote_store_utils = __webpack_require__( /*! ./m_remote_store_utils */ 98413);

                function _getRequireWildcardCache(nodeInterop) {
                    if ("function" !== typeof WeakMap) {
                        return null
                    }
                    var cacheBabelInterop = new WeakMap;
                    var cacheNodeInterop = new WeakMap;
                    return (_getRequireWildcardCache = function(nodeInterop) {
                        return nodeInterop ? cacheNodeInterop : cacheBabelInterop
                    })(nodeInterop)
                }

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

                function createGroupingOptions(dimensionOptions, useSortOrder) {
                    const groupingOptions = [];
                    (0, _iterator.each)(dimensionOptions, (index, dimensionOption) => {
                        groupingOptions.push({
                            selector: dimensionOption.dataField,
                            groupInterval: dimensionOption.groupInterval,
                            desc: useSortOrder && "desc" === dimensionOption.sortOrder,
                            isExpanded: index < dimensionOptions.length - 1
                        })
                    });
                    return groupingOptions
                }

                function getIntervalFilterExpression(selector, numericInterval, numericValue, isExcludedFilterType) {
                    const startFilterValue = [selector, isExcludedFilterType ? "<" : ">=", numericValue];
                    const endFilterValue = [selector, isExcludedFilterType ? ">=" : "<", numericValue + numericInterval];
                    return [startFilterValue, isExcludedFilterType ? "or" : "and", endFilterValue]
                }

                function getFilterExpressionForFilterValue(field, filterValue) {
                    const selector = function(field) {
                        let selector = field.dataField;
                        let {
                            groupInterval: groupInterval
                        } = field;
                        if ("date" === field.dataType && "string" === typeof groupInterval) {
                            if ("quarter" === groupInterval.toLowerCase()) {
                                groupInterval = "Month"
                            }
                            selector = "".concat(selector, ".").concat((0, _m_widget_utils.capitalizeFirstLetter)(groupInterval))
                        }
                        return selector
                    }(field);
                    const isExcludedFilterType = "exclude" === field.filterType;
                    let expression = [selector, isExcludedFilterType ? "<>" : "=", filterValue];
                    if ((0, _type.isDefined)(field.groupInterval)) {
                        if ("string" === typeof field.groupInterval && "quarter" === field.groupInterval.toLowerCase()) {
                            expression = getIntervalFilterExpression(selector, 3, 3 * (filterValue - 1) + 1, isExcludedFilterType)
                        } else if ("number" === typeof field.groupInterval && "date" !== field.dataType) {
                            expression = getIntervalFilterExpression(selector, field.groupInterval, filterValue, isExcludedFilterType)
                        }
                    }
                    return expression
                }

                function createFilterExpressions(fields) {
                    let filterExpressions = [];
                    (0, _iterator.each)(fields, (_, field) => {
                        const fieldExpressions = function createFieldFilterExpressions(field, operation) {
                            const fieldFilterExpressions = [];
                            if (field.searchValue) {
                                return [field.dataField, "contains", field.searchValue]
                            }
                            if ("exclude" === field.filterType) {
                                operation = operation || "and"
                            } else {
                                operation = operation || "or"
                            }(0, _iterator.each)(field.filterValues, (index, filterValue) => {
                                let currentExpression = [];
                                if (Array.isArray(filterValue)) {
                                    const parseLevelsRecursive = field.levels && field.levels.length;
                                    if (parseLevelsRecursive) {
                                        currentExpression = createFieldFilterExpressions({
                                            filterValues: filterValue,
                                            filterType: field.filterType,
                                            levels: field.levels
                                        }, "and")
                                    }
                                } else {
                                    const currentField = field.levels ? field.levels[index] : field;
                                    currentExpression = getFilterExpressionForFilterValue(currentField, filterValue)
                                }
                                if (!currentExpression.length) {
                                    return
                                }
                                if (fieldFilterExpressions.length) {
                                    fieldFilterExpressions.push(operation)
                                }
                                fieldFilterExpressions.push(currentExpression)
                            });
                            return fieldFilterExpressions
                        }(field);
                        if (!fieldExpressions.length) {
                            return []
                        }
                        if (filterExpressions.length) {
                            filterExpressions.push("and")
                        }
                        filterExpressions.push(fieldExpressions);
                        return
                    });
                    if (1 === filterExpressions.length) {
                        filterExpressions = filterExpressions[0]
                    }
                    return filterExpressions
                }

                function mergeFilters(filter1, filter2) {
                    let mergedFilter;
                    const notEmpty = function(filter) {
                        return filter && filter.length
                    };
                    if (notEmpty(filter1) && notEmpty(filter2)) {
                        mergedFilter = [filter1, "and", filter2]
                    } else {
                        mergedFilter = notEmpty(filter1) ? filter1 : filter2
                    }
                    return mergedFilter
                }

                function setValue(valuesArray, value, rowIndex, columnIndex, dataIndex) {
                    valuesArray[rowIndex] = valuesArray[rowIndex] || [];
                    valuesArray[rowIndex][columnIndex] = valuesArray[rowIndex][columnIndex] || [];
                    if (!(0, _type.isDefined)(valuesArray[rowIndex][columnIndex][dataIndex])) {
                        valuesArray[rowIndex][columnIndex][dataIndex] = value
                    }
                }

                function parseValue(value, field) {
                    if (field && "number" === field.dataType && (0, _type.isString)(value)) {
                        return Number(value)
                    }
                    if (field && "date" === field.dataType && !field.groupInterval && !(value instanceof Date)) {
                        return _date_serialization.default.deserializeDate(value)
                    }
                    return value
                }

                function parseResult(data, total, descriptions, result) {
                    const rowPath = [];
                    let columnPath = [];
                    const {
                        rowHash: rowHash
                    } = result;
                    const {
                        columnHash: columnHash
                    } = result;
                    if (total && total.summary) {
                        (0, _iterator.each)(total.summary, (index, summary) => {
                            setValue(result.values, summary, result.grandTotalRowIndex, result.grandTotalColumnIndex, index)
                        })
                    }
                    if (total && total.groupCount >= 0) {
                        const skip = descriptions.rows.length ? descriptions.rowSkip : descriptions.columnSkip;
                        data = [...Array(skip)].concat(data);
                        data.length = total.groupCount
                    }

                    function getItem(dataItem, dimensionName, path, level, field) {
                        const dimensionHash = result["".concat(dimensionName, "Hash")];
                        let parentItem;
                        let parentItemChildren;
                        let item;
                        const pathValue = path.slice(0, level + 1).join("/");
                        let parentPathValue;
                        if (void 0 !== dimensionHash[pathValue]) {
                            item = dimensionHash[pathValue]
                        } else {
                            item = {
                                value: parseValue(dataItem.key, field),
                                index: result["".concat(dimensionName, "Index")]++,
                                displayText: dataItem.displayText
                            };
                            parentPathValue = path.slice(0, level).join("/");
                            if (level > 0 && void 0 !== dimensionHash[parentPathValue]) {
                                parentItem = dimensionHash[parentPathValue];
                                parentItemChildren = parentItem.children = parentItem.children || []
                            } else {
                                parentItemChildren = result["".concat(dimensionName, "s")]
                            }
                            parentItemChildren.push(item);
                            dimensionHash[pathValue] = item
                        }
                        return item
                    }(0, _m_remote_store_utils.forEachGroup)(data, (item, level) => {
                        const rowLevel = level >= descriptions.rows.length ? descriptions.rows.length : level;
                        const columnLevel = level >= descriptions.rows.length ? level - descriptions.rows.length : 0;
                        let columnItem;
                        let rowItem;
                        if (level >= descriptions.rows.length && columnLevel >= descriptions.columns.length) {
                            return
                        }
                        if (level < descriptions.rows.length) {
                            columnPath = []
                        }
                        if (level >= descriptions.rows.length) {
                            if (item) {
                                columnPath[columnLevel] = "".concat(item.key);
                                columnItem = getItem(item, "column", columnPath, columnLevel, descriptions.columns[columnLevel]);
                                rowItem = rowHash[rowPath.slice(0, rowLevel + 1).join("/")]
                            } else {
                                result.columns.push({})
                            }
                        } else if (item) {
                            rowPath[rowLevel] = "".concat(item.key);
                            rowItem = getItem(item, "row", rowPath, rowLevel, descriptions.rows[rowLevel]);
                            columnItem = columnHash[columnPath.slice(0, columnLevel + 1).join("/")]
                        } else {
                            result.rows.push({})
                        }
                        const currentRowIndex = rowItem && rowItem.index || result.grandTotalRowIndex;
                        const currentColumnIndex = columnItem && columnItem.index || result.grandTotalColumnIndex;
                        (0, _iterator.each)(item && item.summary || [], (i, summary) => {
                            setValue(result.values, summary, currentRowIndex, currentColumnIndex, i)
                        })
                    });
                    return result
                }

                function getFiltersForDimension(fields) {
                    return (fields || []).filter(f => f.filterValues && f.filterValues.length || f.searchValue)
                }

                function getExpandedIndex(options, axis) {
                    if (options.headerName) {
                        if (axis === options.headerName) {
                            return options.path.length
                        }
                        if (options.oppositePath) {
                            return options.oppositePath.length
                        }
                    }
                    return 0
                }

                function getExpandedPathSliceFilter(options, dimensionName, level, firstCollapsedFieldIndex) {
                    const result = [];
                    const startSliceIndex = level > firstCollapsedFieldIndex ? 0 : firstCollapsedFieldIndex;
                    const fields = options.headerName !== dimensionName ? options[dimensionName].slice(startSliceIndex, level) : [];
                    const paths = "rows" === dimensionName ? options.rowExpandedPaths : options.columnExpandedPaths;
                    (0, _iterator.each)(fields, (index, field) => {
                        const filterValues = [];
                        (0, _iterator.each)(paths, (_, path) => {
                            path = path.slice(startSliceIndex, level);
                            if (index < path.length) {
                                const filterValue = path[index];
                                if (!filterValues.includes(filterValue)) {
                                    filterValues.push(filterValue)
                                }
                            }
                        });
                        if (filterValues.length) {
                            result.push((0, _extend.extend)({}, field, {
                                filterType: "include",
                                filterValues: filterValues
                            }))
                        }
                    });
                    return result
                }

                function getGrandTotalRequest(options, dimensionName, expandedIndex, expandedLevel, commonFilters, firstCollapsedFieldIndex) {
                    const expandedPaths = ("columns" === dimensionName ? options.columnExpandedPaths : options.rowExpandedPaths) || [];
                    const oppositeDimensionName = "columns" === dimensionName ? "rows" : "columns";
                    const fields = options[dimensionName];
                    const result = [];
                    let newOptions;
                    if (expandedPaths.length) {
                        for (let i = expandedIndex; i < expandedLevel + 1; i += 1) {
                            newOptions = {
                                filters: commonFilters.concat(getExpandedPathSliceFilter(options, dimensionName, i, firstCollapsedFieldIndex))
                            };
                            newOptions[dimensionName] = fields.slice(expandedIndex, i + 1);
                            newOptions[oppositeDimensionName] = [];
                            result.push((0, _extend.extend)({}, options, newOptions))
                        }
                    } else {
                        newOptions = {
                            filters: commonFilters
                        };
                        newOptions[dimensionName] = fields.slice(expandedIndex, expandedLevel + 1);
                        newOptions[oppositeDimensionName] = [];
                        result.push((0, _extend.extend)({}, options, newOptions))
                    }
                    result[0].includeTotalSummary = true;
                    return result
                }

                function getFirstCollapsedIndex(fields) {
                    let firstCollapsedIndex = 0;
                    (0, _iterator.each)(fields, (index, field) => {
                        if (!field.expanded) {
                            firstCollapsedIndex = index;
                            return false
                        }
                        return
                    });
                    return firstCollapsedIndex
                }

                function getRequestsData(options) {
                    const rowExpandedLevel = (0, _m_widget_utils.getExpandedLevel)(options, "rows");
                    const columnExpandedLevel = (0, _m_widget_utils.getExpandedLevel)(options, "columns");
                    let filters = options.filters || [];
                    const columnExpandedIndex = getExpandedIndex(options, "columns");
                    const firstCollapsedColumnIndex = getFirstCollapsedIndex(options.columns);
                    const firstCollapsedRowIndex = getFirstCollapsedIndex(options.rows);
                    const rowExpandedIndex = getExpandedIndex(options, "rows");
                    let data = [];
                    filters = filters.concat(getFiltersForDimension(options.rows)).concat(getFiltersForDimension(options.columns)).concat(function(options) {
                        return (0, _m_widget_utils.getFiltersByPath)(options[options.headerName], options.path).concat((0, _m_widget_utils.getFiltersByPath)(options["rows" === options.headerName ? "columns" : "rows"], options.oppositePath || []))
                    }(options));
                    const columnTotalsOptions = getGrandTotalRequest(options, "columns", columnExpandedIndex, columnExpandedLevel, filters, firstCollapsedColumnIndex);
                    if (options.rows.length && options.columns.length) {
                        if ("rows" !== options.headerName) {
                            data = data.concat(columnTotalsOptions)
                        }
                        for (let i = rowExpandedIndex; i < rowExpandedLevel + 1; i += 1) {
                            const rows = options.rows.slice(rowExpandedIndex, i + 1);
                            const rowFilterByExpandedPaths = getExpandedPathSliceFilter(options, "rows", i, firstCollapsedRowIndex);
                            for (let j = columnExpandedIndex; j < columnExpandedLevel + 1; j += 1) {
                                const preparedOptions = (0, _extend.extend)({}, options, {
                                    columns: options.columns.slice(columnExpandedIndex, j + 1),
                                    rows: rows,
                                    filters: filters.concat(getExpandedPathSliceFilter(options, "columns", j, firstCollapsedColumnIndex)).concat(rowFilterByExpandedPaths)
                                });
                                data.push(preparedOptions)
                            }
                        }
                    } else {
                        data = options.columns.length ? columnTotalsOptions : getGrandTotalRequest(options, "rows", rowExpandedIndex, rowExpandedLevel, filters, firstCollapsedRowIndex)
                    }
                    return data
                }

                function prepareFields(fields) {
                    (0, _iterator.each)(fields || [], (_, field) => {
                        const {
                            levels: levels
                        } = field;
                        if (levels) {
                            prepareFields(levels)
                        }(0, _m_widget_utils.setDefaultFieldValueFormatting)(field)
                    })
                }
                const RemoteStore = _class.default.inherit({
                    ctor(options) {
                        this._dataSource = new _data_source.DataSource(options);
                        this._store = this._dataSource.store()
                    },
                    getFields(fields) {
                        const d = new _deferred.Deferred;
                        this._store.load({
                            skip: 0,
                            take: 20
                        }).done(data => {
                            const normalizedArguments = (0, _utils.normalizeLoadResult)(data);
                            d.resolve(_m_widget_utils.default.discoverObjectFields(normalizedArguments.data, fields))
                        }).fail(d.reject);
                        return d
                    },
                    key() {
                        return this._store.key()
                    },
                    load(options) {
                        const that = this;
                        const d = new _deferred.Deferred;
                        const result = {
                            rows: [],
                            columns: [],
                            values: [],
                            grandTotalRowIndex: 0,
                            grandTotalColumnIndex: 0,
                            rowHash: {},
                            columnHash: {},
                            rowIndex: 1,
                            columnIndex: 1
                        };
                        const requestsData = getRequestsData(options);
                        const deferreds = [];
                        prepareFields(options.rows);
                        prepareFields(options.columns);
                        prepareFields(options.filters);
                        (0, _iterator.each)(requestsData, (_, dataItem) => {
                            deferreds.push(that._store.load(function(options, externalFilterExpr, hasRows) {
                                let filterExpressions = createFilterExpressions(options.filters);
                                const groupingOptions = createGroupingOptions(options.rows, options.rowTake).concat(createGroupingOptions(options.columns, options.columnTake));
                                const loadOptions = {
                                    groupSummary: [],
                                    totalSummary: [],
                                    group: groupingOptions.length ? groupingOptions : void 0,
                                    take: groupingOptions.length ? void 0 : 1
                                };
                                if (options.rows.length && options.rowTake) {
                                    loadOptions.skip = options.rowSkip;
                                    loadOptions.take = options.rowTake;
                                    loadOptions.requireGroupCount = true
                                } else if (options.columns.length && options.columnTake && !hasRows) {
                                    loadOptions.skip = options.columnSkip;
                                    loadOptions.take = options.columnTake;
                                    loadOptions.requireGroupCount = true
                                }
                                if (externalFilterExpr) {
                                    filterExpressions = mergeFilters(filterExpressions, externalFilterExpr)
                                }
                                if (filterExpressions.length) {
                                    loadOptions.filter = filterExpressions
                                }(0, _iterator.each)(options.values, (_, value) => {
                                    const summaryOption = {
                                        selector: value.dataField,
                                        summaryType: value.summaryType || "count"
                                    };
                                    loadOptions.groupSummary.push(summaryOption);
                                    options.includeTotalSummary && loadOptions.totalSummary.push(summaryOption)
                                });
                                return loadOptions
                            }(dataItem, that.filter(), options.rows.length)))
                        });
                        _deferred.when.apply(null, deferreds).done((function() {
                            const args = deferreds.length > 1 ? arguments : [arguments];
                            (0, _iterator.each)(args, (index, argument) => {
                                const normalizedArguments = (0, _utils.normalizeLoadResult)(argument[0], argument[1]);
                                parseResult(normalizedArguments.data, normalizedArguments.extra, requestsData[index], result)
                            });
                            d.resolve({
                                rows: result.rows,
                                columns: result.columns,
                                values: result.values,
                                grandTotalRowIndex: result.grandTotalRowIndex,
                                grandTotalColumnIndex: result.grandTotalColumnIndex
                            })
                        })).fail(d.reject);
                        return d
                    },
                    filter() {
                        return this._dataSource.filter.apply(this._dataSource, arguments)
                    },
                    supportPaging: () => false,
                    createDrillDownDataSource(loadOptions, params) {
                        loadOptions = loadOptions || {};
                        params = params || {};
                        const store = this._store;
                        const filters = (0, _m_widget_utils.getFiltersByPath)(loadOptions.rows, params.rowPath).concat((0, _m_widget_utils.getFiltersByPath)(loadOptions.columns, params.columnPath)).concat(getFiltersForDimension(loadOptions.rows)).concat(loadOptions.filters || []).concat(getFiltersForDimension(loadOptions.columns));
                        const filterExp = createFilterExpressions(filters);
                        return new _data_source.DataSource({
                            load: loadOptions => store.load((0, _extend.extend)({}, loadOptions, {
                                filter: mergeFilters(filterExp, loadOptions.filter),
                                select: params.customColumns
                            }))
                        })
                    }
                });
                exports.RemoteStore = RemoteStore;
                var _default = {
                    RemoteStore: RemoteStore
                };
                exports.default = _default
            },
        98413:
            /*!**************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/remote_store/m_remote_store_utils.js ***!
              \**************************************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.forEachGroup = exports.default = void 0;
                const forEachGroup = function(data, callback, level) {
                    data = data || [];
                    level = level || 0;
                    for (let i = 0; i < data.length; i += 1) {
                        const group = data[i];
                        callback(group, level);
                        if (group && group.items && group.items.length) {
                            forEachGroup(group.items, callback, level + 1)
                        }
                    }
                };
                exports.forEachGroup = forEachGroup;
                var _default = {
                    forEachGroup: forEachGroup
                };
                exports.default = _default
            },
        71442:
            /*!************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/sortable/m_sortable.js ***!
              \************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = exports.Sortable = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../../core/component_registrator */ 99393));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../../core/dom_adapter */ 73349));
                var _dom_component = _interopRequireDefault(__webpack_require__( /*! ../../../../core/dom_component */ 13046));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _size = __webpack_require__( /*! ../../../../core/utils/size */ 58664);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../events/core/events_engine */ 55994));
                var _drag = __webpack_require__( /*! ../../../../events/drag */ 23174);
                var _index = __webpack_require__( /*! ../../../../events/utils/index */ 39611);
                var _swatch_container = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/swatch_container */ 92591));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const {
                    getSwatchContainer: getSwatchContainer
                } = _swatch_container.default;

                function checkHorizontalPosition(position, itemOffset, rtl) {
                    if ((0, _type.isDefined)(itemOffset.posHorizontal)) {
                        return rtl ? position > itemOffset.posHorizontal : position < itemOffset.posHorizontal
                    }
                    return true
                }

                function getTargetGroup(e, $groups) {
                    let result;
                    (0, _iterator.each)($groups, (function() {
                        if (function(element, x, y) {
                                const $item = (0, _renderer.default)(element);
                                const offset = $item.offset();
                                if (x >= offset.left && x <= offset.left + (0, _size.getOuterWidth)($item, true)) {
                                    if (y >= offset.top && y <= offset.top + (0, _size.getOuterHeight)($item, true)) {
                                        return true
                                    }
                                }
                                return
                            }(this, e.pageX, e.pageY)) {
                            result = (0, _renderer.default)(this)
                        }
                    }));
                    return result
                }
                const Sortable = _dom_component.default.inherit({
                    _getDefaultOptions() {
                        return (0, _extend.extend)(this.callBase(), {
                            onChanged: null,
                            onDragging: null,
                            itemRender: null,
                            groupSelector: null,
                            itemSelector: ".dx-sort-item",
                            itemContainerSelector: ".dx-sortable-old",
                            sourceClass: "dx-drag-source",
                            dragClass: "dx-drag",
                            targetClass: "dx-drag-target",
                            direction: "vertical",
                            allowDragging: true,
                            groupFilter: null,
                            useIndicator: false
                        })
                    },
                    _renderItem($sourceItem, target) {
                        const itemRender = this.option("itemRender");
                        let $item;
                        if (itemRender) {
                            $item = itemRender($sourceItem, target)
                        } else {
                            $item = $sourceItem.clone();
                            $item.css({
                                width: (0, _size.getWidth)($sourceItem),
                                height: (0, _size.getHeight)($sourceItem)
                            })
                        }
                        return $item
                    },
                    _renderIndicator($item, isVertical, $targetGroup, isLast) {
                        const height = (0, _size.getOuterHeight)($item, true);
                        const width = (0, _size.getOuterWidth)($item, true);
                        const top = $item.offset().top - $targetGroup.offset().top;
                        const left = $item.offset().left - $targetGroup.offset().left;
                        this._indicator.css({
                            position: "absolute",
                            top: isLast && isVertical ? top + height : top,
                            left: isLast && !isVertical ? left + width : left
                        }).toggleClass("dx-position-indicator-horizontal", !isVertical).toggleClass("dx-position-indicator-vertical", !!isVertical).toggleClass("dx-position-indicator-last", !!isLast).appendTo($targetGroup);
                        (0, _size.setHeight)(this._indicator, "");
                        (0, _size.setWidth)(this._indicator, "");
                        if (isVertical) {
                            (0, _size.setWidth)(this._indicator, width)
                        } else {
                            (0, _size.setHeight)(this._indicator, height)
                        }
                    },
                    _renderDraggable($sourceItem) {
                        this._$draggable && this._$draggable.remove();
                        this._$draggable = this._renderItem($sourceItem, "drag").addClass(this.option("dragClass")).appendTo(getSwatchContainer($sourceItem)).css({
                            zIndex: 1e6,
                            position: "absolute"
                        })
                    },
                    _detachEventHandlers() {
                        const dragEventsString = [_drag.move, _drag.start, _drag.end, _drag.enter, _drag.leave, _drag.drop].join(" ");
                        _events_engine.default.off(this._getEventListener(), (0, _index.addNamespace)(dragEventsString, "dxSortable"), void 0)
                    },
                    _getItemOffset(isVertical, itemsOffset, e) {
                        for (let i = 0; i < itemsOffset.length; i += 1) {
                            let shouldInsert;
                            const sameLine = e.pageY < itemsOffset[i].posVertical;
                            if (isVertical) {
                                shouldInsert = sameLine
                            } else if (sameLine) {
                                shouldInsert = checkHorizontalPosition(e.pageX, itemsOffset[i], this.option("rtlEnabled"));
                                if (!shouldInsert && itemsOffset[i + 1] && itemsOffset[i + 1].posVertical > itemsOffset[i].posVertical) {
                                    shouldInsert = true
                                }
                            }
                            if (shouldInsert) {
                                return itemsOffset[i]
                            }
                        }
                        return
                    },
                    _getEventListener() {
                        const groupSelector = this.option("groupSelector");
                        const element = this.$element();
                        return groupSelector ? element.find(groupSelector) : element
                    },
                    _attachEventHandlers() {
                        const that = this;
                        const itemSelector = that.option("itemSelector");
                        const itemContainerSelector = that.option("itemContainerSelector");
                        const groupSelector = that.option("groupSelector");
                        const sourceClass = that.option("sourceClass");
                        const targetClass = that.option("targetClass");
                        const onDragging = that.option("onDragging");
                        const groupFilter = that.option("groupFilter");
                        let $sourceItem;
                        let sourceIndex;
                        let $targetItem;
                        let $targetGroup;
                        let startPositions;
                        let sourceGroup;
                        const element = that.$element();
                        let $groups;
                        let scrollWrapper = null;
                        let targetIndex = -1;
                        const disposeScrollWrapper = function() {
                            null === scrollWrapper || void 0 === scrollWrapper ? void 0 : scrollWrapper.dispose();
                            scrollWrapper = null
                        };
                        that._detachEventHandlers();
                        if (that.option("allowDragging")) {
                            const $eventListener = that._getEventListener();
                            _events_engine.default.on($eventListener, (0, _index.addNamespace)(_drag.start, "dxSortable"), itemSelector, e => {
                                $sourceItem = (0, _renderer.default)(e.currentTarget);
                                const $sourceGroup = $sourceItem.closest(groupSelector);
                                sourceGroup = $sourceGroup.attr("group");
                                sourceIndex = function($items, $item) {
                                    let index = -1;
                                    const itemElement = $item.get(0);
                                    (0, _iterator.each)($items, (elementIndex, element) => {
                                        const $element = (0, _renderer.default)(element);
                                        if (!($element.attr("item-group") && $element.attr("item-group") === $items.eq(elementIndex - 1).attr("item-group"))) {
                                            index += 1
                                        }
                                        if (element === itemElement) {
                                            return false
                                        }
                                        return
                                    });
                                    return index === $items.length ? -1 : index
                                }((groupSelector ? $sourceGroup : element).find(itemSelector), $sourceItem);
                                if ($sourceItem.attr("item-group")) {
                                    $sourceItem = $sourceGroup.find("[item-group='".concat($sourceItem.attr("item-group"), "']"))
                                }
                                that._renderDraggable($sourceItem);
                                $targetItem = that._renderItem($sourceItem, "target").addClass(targetClass);
                                $sourceItem.addClass(sourceClass);
                                ! function() {
                                    startPositions = [];
                                    (0, _iterator.each)($sourceItem, (_, item) => {
                                        startPositions.push((0, _renderer.default)(item).offset())
                                    })
                                }();
                                $groups = function() {
                                    const root = _dom_adapter.default.getRootNode(that.$element().get(0));
                                    if (!groupSelector) {
                                        return element
                                    }
                                    return groupFilter ? (0, _renderer.default)(root).find(groupSelector).filter(groupFilter) : element.find(groupSelector)
                                }();
                                that._indicator = (0, _renderer.default)("<div>").addClass("dx-position-indicator")
                            });
                            _events_engine.default.on($eventListener, (0, _index.addNamespace)(_drag.move, "dxSortable"), e => {
                                let $item;
                                let $lastItem;
                                let $prevItem;
                                if (!$sourceItem) {
                                    return
                                }
                                targetIndex = -1;
                                that._indicator.detach();
                                (0, _iterator.each)(that._$draggable, (index, draggableElement) => {
                                    (0, _renderer.default)(draggableElement).css({
                                        top: startPositions[index].top + e.offset.y,
                                        left: startPositions[index].left + e.offset.x
                                    })
                                });
                                $targetGroup && $targetGroup.removeClass(targetClass);
                                $targetGroup = getTargetGroup(e, $groups);
                                $targetGroup && function() {
                                    const draggingArgs = {
                                        sourceGroup: sourceGroup,
                                        sourceIndex: sourceIndex,
                                        sourceElement: $sourceItem,
                                        targetGroup: $targetGroup.attr("group"),
                                        targetIndex: $targetGroup.find(itemSelector).index($targetItem)
                                    };
                                    onDragging && onDragging(draggingArgs);
                                    if (draggingArgs.cancel) {
                                        $targetGroup = void 0
                                    }
                                }();
                                if ($targetGroup && scrollWrapper && $targetGroup.get(0) !== scrollWrapper.element().get(0)) {
                                    disposeScrollWrapper()
                                }
                                scrollWrapper && scrollWrapper.moveIfNeed(e);
                                if (!$targetGroup) {
                                    $targetItem.detach();
                                    return
                                }
                                if (!scrollWrapper && $targetGroup.attr("allow-scrolling")) {
                                    scrollWrapper = function(scrollable) {
                                        let timeout;
                                        let scrollTop = scrollable.scrollTop();
                                        const $element = scrollable.$element();
                                        const {
                                            top: top
                                        } = $element.offset();
                                        const height = (0, _size.getHeight)($element);
                                        let delta = 0;

                                        function onScroll(e) {
                                            scrollTop = e.scrollOffset.top
                                        }
                                        scrollable.on("scroll", onScroll);

                                        function move() {
                                            stop();
                                            scrollable.scrollTo(scrollTop += delta);
                                            timeout = setTimeout(move, 10)
                                        }

                                        function stop() {
                                            clearTimeout(timeout)
                                        }
                                        return {
                                            moveIfNeed: function(event) {
                                                if (event.pageY <= top + 20) {
                                                    delta = -2
                                                } else if (event.pageY >= top + height - 20) {
                                                    delta = 2
                                                } else {
                                                    delta = 0;
                                                    stop();
                                                    return
                                                }
                                                move()
                                            },
                                            element: () => $element,
                                            dispose() {
                                                stop();
                                                scrollable.off("scroll", onScroll)
                                            }
                                        }
                                    }($targetGroup.dxScrollable("instance"))
                                }
                                $targetGroup.addClass(targetClass);
                                const $itemContainer = $targetGroup.find(itemContainerSelector);
                                const $items = $itemContainer.find(itemSelector);
                                const targetSortable = $targetGroup.closest(".".concat("dx-sortable-old")).data("dxSortableOld");
                                const useIndicator = targetSortable.option("useIndicator");
                                const isVertical = "vertical" === (targetSortable || that).option("direction");
                                const itemsOffset = function($elements, isVertical, $itemsContainer) {
                                    const result = [];
                                    let $item = [];
                                    for (let i = 0; i < $elements.length; i += $item.length) {
                                        $item = $elements.eq(i);
                                        if ($item.attr("item-group")) {
                                            $item = $itemsContainer.find("[item-group='".concat($item.attr("item-group"), "']"))
                                        }
                                        if ($item.is(":visible")) {
                                            const offset = {
                                                item: $item,
                                                index: result.length,
                                                posVertical: isVertical ? ($item.last().offset().top + $item.offset().top + (0, _size.getOuterHeight)($item.last(), true)) / 2 : (0, _size.getOuterHeight)($item.last(), true) + $item.last().offset().top,
                                                posHorizontal: isVertical ? void 0 : ((0, _size.getOuterWidth)($item.last(), true) + $item.last().offset().left + $item.offset().left) / 2
                                            };
                                            result.push(offset)
                                        }
                                    }
                                    return result
                                }($items, isVertical, $itemContainer);
                                const itemOffset = that._getItemOffset(isVertical, itemsOffset, e);
                                if (itemOffset) {
                                    $item = itemOffset.item;
                                    $prevItem = itemsOffset[itemOffset.index - 1] && itemsOffset[itemOffset.index - 1].item;
                                    if ($item.hasClass(sourceClass) || $prevItem && $prevItem.hasClass(sourceClass) && $prevItem.is(":visible")) {
                                        $targetItem.detach();
                                        return
                                    }
                                    targetIndex = itemOffset.index;
                                    if (!useIndicator) {
                                        $targetItem.insertBefore($item);
                                        return
                                    }
                                    const isAnotherGroup = $targetGroup.attr("group") !== sourceGroup;
                                    const isSameIndex = targetIndex === sourceIndex;
                                    const isNextIndex = targetIndex === sourceIndex + 1;
                                    if (isAnotherGroup) {
                                        that._renderIndicator($item, isVertical, $targetGroup, that.option("rtlEnabled") && !isVertical);
                                        return
                                    }
                                    if (!isSameIndex && !isNextIndex) {
                                        that._renderIndicator($item, isVertical, $targetGroup, that.option("rtlEnabled") && !isVertical)
                                    }
                                } else {
                                    $lastItem = $items.last();
                                    if ($lastItem.is(":visible") && $lastItem.hasClass(sourceClass)) {
                                        return
                                    }
                                    if ($itemContainer.length) {
                                        targetIndex = itemsOffset.length ? itemsOffset[itemsOffset.length - 1].index + 1 : 0
                                    }
                                    if (useIndicator) {
                                        $items.length && that._renderIndicator($lastItem, isVertical, $targetGroup, !that.option("rtlEnabled") || isVertical)
                                    } else {
                                        $targetItem.appendTo($itemContainer)
                                    }
                                }
                            });
                            _events_engine.default.on($eventListener, (0, _index.addNamespace)(_drag.end, "dxSortable"), () => {
                                disposeScrollWrapper();
                                if (!$sourceItem) {
                                    return
                                }
                                const onChanged = that.option("onChanged");
                                const changedArgs = {
                                    sourceIndex: sourceIndex,
                                    sourceElement: $sourceItem,
                                    sourceGroup: sourceGroup,
                                    targetIndex: targetIndex,
                                    removeSourceElement: true,
                                    removeTargetElement: false,
                                    removeSourceClass: true
                                };
                                if ($targetGroup) {
                                    $targetGroup.removeClass(targetClass);
                                    changedArgs.targetGroup = $targetGroup.attr("group");
                                    if (sourceGroup !== changedArgs.targetGroup || targetIndex > -1) {
                                        onChanged && onChanged(changedArgs);
                                        changedArgs.removeSourceElement && $sourceItem.remove()
                                    }
                                }
                                that._indicator.detach();
                                changedArgs.removeSourceClass && $sourceItem.removeClass(sourceClass);
                                $sourceItem = null;
                                that._$draggable.remove();
                                that._$draggable = null;
                                changedArgs.removeTargetElement && $targetItem.remove();
                                $targetItem.removeClass(targetClass);
                                $targetItem = null
                            })
                        }
                    },
                    _init() {
                        this.callBase();
                        this._attachEventHandlers()
                    },
                    _render() {
                        this.callBase();
                        this.$element().addClass("dx-sortable-old")
                    },
                    _dispose() {
                        this.callBase.apply(this, arguments);
                        this._$draggable && this._$draggable.detach();
                        this._indicator && this._indicator.detach()
                    },
                    _optionChanged(args) {
                        const that = this;
                        switch (args.name) {
                            case "onDragging":
                            case "onChanged":
                            case "itemRender":
                            case "groupSelector":
                            case "itemSelector":
                            case "itemContainerSelector":
                            case "sourceClass":
                            case "targetClass":
                            case "dragClass":
                            case "allowDragging":
                            case "groupFilter":
                            case "useIndicator":
                                that._attachEventHandlers();
                                break;
                            case "direction":
                                break;
                            default:
                                that.callBase(args)
                        }
                    },
                    _useTemplates: () => false
                });
                exports.Sortable = Sortable;
                (0, _component_registrator.default)("dxSortableOld", Sortable);
                var _default = {
                    Sortable: Sortable
                };
                exports.default = _default
            },
        42717:
            /*!**************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/summary_display_modes/m_summary_display_modes.js ***!
              \**************************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.Cell = void 0;
                exports.applyDisplaySummaryMode = applyDisplaySummaryMode;
                exports.applyRunningTotal = applyRunningTotal;
                exports.createMockSummaryCell = createMockSummaryCell;
                exports.default = void 0;
                exports.getExpression = getExpression;
                exports.summaryDictionary = void 0;
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _m_widget_utils = function(obj, nodeInterop) {
                    if (!nodeInterop && obj && obj.__esModule) {
                        return obj
                    }
                    if (null === obj || "object" !== typeof obj && "function" !== typeof obj) {
                        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 ("default" !== key && 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
                }(__webpack_require__( /*! ../m_widget_utils */ 28580));

                function _getRequireWildcardCache(nodeInterop) {
                    if ("function" !== typeof WeakMap) {
                        return null
                    }
                    var cacheBabelInterop = new WeakMap;
                    var cacheNodeInterop = new WeakMap;
                    return (_getRequireWildcardCache = function(nodeInterop) {
                        return nodeInterop ? cacheNodeInterop : cacheBabelInterop
                    })(nodeInterop)
                }
                const ROW = "row";
                const calculatePercentValue = function(value, totalValue) {
                    let result = value / totalValue;
                    if (!(0, _type.isDefined)(value) || isNaN(result)) {
                        result = null
                    }
                    return result
                };
                const percentOfGrandTotal = function(e, dimension) {
                    return calculatePercentValue(e.value(), e.grandTotal(dimension).value())
                };
                const percentOfParent = function(e, dimension) {
                    const parent = e.parent(dimension);
                    const parentValue = parent ? parent.value() : e.value();
                    return calculatePercentValue(e.value(), parentValue)
                };
                const createAbsoluteVariationExp = function(allowCrossGroup) {
                    return function(e) {
                        const prevCell = e.prev("column", allowCrossGroup);
                        const prevValue = prevCell && prevCell.value();
                        if ((0, _type.isDefined)(prevValue) && (0, _type.isDefined)(e.value())) {
                            return e.value() - prevValue
                        }
                        return null
                    }
                };
                const summaryDictionary = {
                    percentOfColumnTotal: e => percentOfParent(e, ROW),
                    percentOfRowTotal: e => percentOfParent(e, "column"),
                    percentOfColumnGrandTotal: e => percentOfGrandTotal(e, ROW),
                    percentOfRowGrandTotal: e => percentOfGrandTotal(e, "column"),
                    percentOfGrandTotal: e => percentOfGrandTotal(e)
                };
                exports.summaryDictionary = summaryDictionary;
                const getPrevCellCrossGroup = function(cell, direction) {
                    if (!cell || !cell.parent(direction)) {
                        return
                    }
                    let prevCell = cell.prev(direction);
                    if (!prevCell) {
                        prevCell = getPrevCellCrossGroup(cell.parent(direction), direction)
                    }
                    return prevCell
                };
                const createRunningTotalExpr = function(field) {
                    if (!field.runningTotal) {
                        return
                    }
                    const direction = "column" === field.runningTotal ? ROW : "column";
                    return function(e) {
                        const prevCell = field.allowCrossGroupCalculation ? getPrevCellCrossGroup(e, direction) : e.prev(direction, false);
                        let value = e.value(true);
                        const prevValue = prevCell && prevCell.value(true);
                        if ((0, _type.isDefined)(prevValue) && (0, _type.isDefined)(value)) {
                            value = prevValue + value
                        } else if ((0, _type.isDefined)(prevValue)) {
                            value = prevValue
                        }
                        return value
                    }
                };

                function getFieldPos(descriptions, field, cache) {
                    let fieldParams = {
                        index: -1
                    };
                    if (!(0, _type.isObject)(field)) {
                        if (cache.fields[field]) {
                            field = cache[field]
                        } else {
                            const allFields = descriptions.columns.concat(descriptions.rows).concat(descriptions.values);
                            const fieldIndex = (0, _m_widget_utils.findField)(allFields, field);
                            field = cache[field] = allFields[fieldIndex]
                        }
                    }
                    if (field) {
                        const area = field.area || "data";
                        fieldParams = cache.positions[field.index] = cache.positions[field.index] || {
                            area: area,
                            index: descriptions["data" === area ? "values" : "".concat(area, "s")].indexOf(field)
                        }
                    }
                    return fieldParams
                }

                function getPathFieldName(dimension) {
                    return dimension === ROW ? "_rowPath" : "_columnPath"
                }
                const SummaryCell = function(columnPath, rowPath, data, descriptions, fieldIndex, fieldsCache) {
                    this._columnPath = columnPath;
                    this._rowPath = rowPath;
                    this._fieldIndex = fieldIndex;
                    this._fieldsCache = fieldsCache || {
                        fields: {},
                        positions: {}
                    };
                    this._data = data;
                    this._descriptions = descriptions;
                    const cell = data.values && data.values[rowPath[0].index] && data.values[rowPath[0].index][columnPath[0].index];
                    if (cell) {
                        cell.originalCell = cell.originalCell || cell.slice();
                        cell.postProcessedFlags = cell.postProcessedFlags || [];
                        this._cell = cell
                    }
                };
                exports.Cell = SummaryCell;
                SummaryCell.prototype = (0, _extend.extend)(SummaryCell.prototype, {
                    _getPath(dimension) {
                        return this[getPathFieldName(dimension)]
                    },
                    _getDimension(dimension) {
                        dimension = dimension === ROW ? "rows" : "columns";
                        return this._descriptions[dimension]
                    },
                    _createCell(config) {
                        return new SummaryCell(config._columnPath || this._columnPath, config._rowPath || this._rowPath, this._data, this._descriptions, this._fieldIndex)
                    },
                    parent(direction) {
                        const path = this._getPath(direction).slice();
                        const config = {};
                        path.shift();
                        if (path.length) {
                            config[getPathFieldName(direction)] = path;
                            return this._createCell(config)
                        }
                        return null
                    },
                    children(direction) {
                        const path = this._getPath(direction).slice();
                        const item = path[0];
                        const result = [];
                        const cellConfig = {};
                        if (item.children) {
                            for (let i = 0; i < item.children.length; i += 1) {
                                cellConfig[getPathFieldName(direction)] = [item.children[i]].concat(path.slice());
                                result.push(this._createCell(cellConfig))
                            }
                        }
                        return result
                    },
                    grandTotal(direction) {
                        const config = {};
                        const rowPath = this._rowPath;
                        const columnPath = this._columnPath;
                        const dimensionPath = this._getPath(direction);
                        const pathFieldName = getPathFieldName(direction);
                        if (!direction) {
                            config._rowPath = [rowPath[rowPath.length - 1]];
                            config._columnPath = [columnPath[columnPath.length - 1]]
                        } else {
                            config[pathFieldName] = [dimensionPath[dimensionPath.length - 1]]
                        }
                        return this._createCell(config)
                    },
                    next(direction, allowCrossGroup) {
                        const currentPath = this._getPath(direction);
                        const item = currentPath[0];
                        let parent = this.parent(direction);
                        let siblings;
                        if (parent) {
                            const index = currentPath[1].children.indexOf(item);
                            siblings = parent.children(direction);
                            if (siblings[index + 1]) {
                                return siblings[index + 1]
                            }
                        }
                        if (allowCrossGroup && parent) {
                            do {
                                parent = parent.next(direction, allowCrossGroup);
                                siblings = parent ? parent.children(direction) : []
                            } while (parent && !siblings.length);
                            return siblings[0] || null
                        }
                        return null
                    },
                    prev(direction, allowCrossGroup) {
                        const currentPath = this._getPath(direction);
                        const item = currentPath[0];
                        let parent = this.parent(direction);
                        let siblings;
                        if (parent) {
                            const index = currentPath[1].children.indexOf(item);
                            siblings = parent.children(direction);
                            if (siblings[index - 1]) {
                                return siblings[index - 1]
                            }
                        }
                        if (allowCrossGroup && parent) {
                            do {
                                parent = parent.prev(direction, allowCrossGroup);
                                siblings = parent ? parent.children(direction) : []
                            } while (parent && !siblings.length);
                            return siblings[siblings.length - 1] || null
                        }
                        return null
                    },
                    cell() {
                        return this._cell
                    },
                    field(area) {
                        if ("data" === area) {
                            return this._descriptions.values[this._fieldIndex]
                        }
                        const path = this._getPath(area);
                        const descriptions = this._getDimension(area);
                        const field = descriptions[path.length - 2];
                        return field || null
                    },
                    child(direction, fieldValue) {
                        let childLevelField;
                        const children = this.children(direction);
                        for (let i = 0; i < children.length; i += 1) {
                            childLevelField = childLevelField || children[i].field(direction);
                            if (children[i].value(childLevelField) === fieldValue) {
                                return children[i]
                            }
                        }
                        return null
                    },
                    slice(field, value) {
                        const that = this;
                        const config = {};
                        const fieldPos = getFieldPos(this._descriptions, field, this._fieldsCache);
                        const {
                            area: area
                        } = fieldPos;
                        const fieldIndex = fieldPos.index;
                        let sliceCell = null;
                        const newPath = [];
                        if (area === ROW || "column" === area) {
                            const path = this._getPath(area).slice();
                            const level = -1 !== fieldIndex && path.length - 2 - fieldIndex;
                            if (path[level]) {
                                newPath[path.length - 1] = path[path.length - 1];
                                for (let i = level; i >= 0; i -= 1) {
                                    if (path[i + 1]) {
                                        const childItems = path[i + 1].children || [];
                                        const currentValue = i === level ? value : path[i].value;
                                        path[i] = void 0;
                                        for (let childIndex = 0; childIndex < childItems.length; childIndex += 1) {
                                            if (childItems[childIndex].value === currentValue) {
                                                path[i] = childItems[childIndex];
                                                break
                                            }
                                        }
                                    }
                                    if (void 0 === path[i]) {
                                        return sliceCell
                                    }
                                }
                                config[getPathFieldName(area)] = path;
                                sliceCell = that._createCell(config)
                            }
                        }
                        return sliceCell
                    },
                    value(arg1, arg2) {
                        const cell = this._cell;
                        let fieldIndex = this._fieldIndex;
                        const fistArgIsBoolean = true === arg1 || false === arg1;
                        const field = !fistArgIsBoolean ? arg1 : null;
                        const needCalculatedValue = fistArgIsBoolean && arg1 || arg2;
                        if ((0, _type.isDefined)(field)) {
                            const fieldPos = getFieldPos(this._descriptions, field, this._fieldsCache);
                            fieldIndex = fieldPos.index;
                            if ("data" !== fieldPos.area) {
                                const path = this._getPath(fieldPos.area);
                                const level = -1 !== fieldIndex && path.length - 2 - fieldIndex;
                                return path[level] && path[level].value
                            }
                        }
                        if (cell && cell.originalCell) {
                            return needCalculatedValue ? cell[fieldIndex] : cell.originalCell[fieldIndex]
                        }
                        return null
                    },
                    isPostProcessed(field) {
                        let fieldIndex = this._fieldIndex;
                        if ((0, _type.isDefined)(field)) {
                            const fieldPos = getFieldPos(this._descriptions, field, this._fieldsCache);
                            fieldIndex = fieldPos.index;
                            if ("data" !== fieldPos.area) {
                                return false
                            }
                        }
                        return !!(this._cell && this._cell.postProcessedFlags[fieldIndex])
                    }
                });

                function getExpression(field) {
                    const {
                        summaryDisplayMode: summaryDisplayMode
                    } = field;
                    const crossGroupCalculation = field.allowCrossGroupCalculation;
                    let expression = null;
                    if ((0, _type.isFunction)(field.calculateSummaryValue)) {
                        expression = field.calculateSummaryValue
                    } else if (summaryDisplayMode) {
                        if ("absoluteVariation" === summaryDisplayMode) {
                            expression = createAbsoluteVariationExp(crossGroupCalculation)
                        } else if ("percentVariation" === summaryDisplayMode) {
                            expression = function(allowCrossGroup) {
                                const absoluteExp = createAbsoluteVariationExp(allowCrossGroup);
                                return function(e) {
                                    const absVar = absoluteExp(e);
                                    const prevCell = e.prev("column", allowCrossGroup);
                                    const prevValue = prevCell && prevCell.value();
                                    return null !== absVar && prevValue ? absVar / prevValue : null
                                }
                            }(crossGroupCalculation)
                        } else {
                            expression = summaryDictionary[summaryDisplayMode]
                        }
                        if (expression && !field.format && -1 !== summaryDisplayMode.indexOf("percent")) {
                            _m_widget_utils.default.setFieldProperty(field, "format", "percent")
                        }
                    }
                    return expression
                }

                function processDataCell(data, rowIndex, columnIndex, isRunningTotalCalculation) {
                    const values = data.values[rowIndex][columnIndex] = data.values[rowIndex][columnIndex] || [];
                    const {
                        originalCell: originalCell
                    } = values;
                    if (!originalCell) {
                        return
                    }
                    if (values.allowResetting || !isRunningTotalCalculation) {
                        data.values[rowIndex][columnIndex] = originalCell.slice()
                    }
                    data.values[rowIndex][columnIndex].allowResetting = isRunningTotalCalculation
                }

                function applyDisplaySummaryMode(descriptions, data) {
                    const expressions = [];
                    const columnElements = [{
                        index: data.grandTotalColumnIndex,
                        children: data.columns
                    }];
                    const rowElements = [{
                        index: data.grandTotalRowIndex,
                        children: data.rows
                    }];
                    const valueFields = descriptions.values;
                    const fieldsCache = {
                        fields: {},
                        positions: {}
                    };
                    data.values = data.values || [];
                    (0, _m_widget_utils.foreachTree)(columnElements, columnPath => {
                        columnPath[0].isEmpty = []
                    }, false);
                    (0, _m_widget_utils.foreachTree)(rowElements, rowPath => {
                        const rowItem = rowPath[0];
                        rowItem.isEmpty = [];
                        data.values[rowItem.index] = data.values[rowItem.index] || [];
                        (0, _m_widget_utils.foreachTree)(columnElements, columnPath => {
                            const columnItem = columnPath[0];
                            let isEmptyCell;
                            processDataCell(data, rowItem.index, columnItem.index, false);
                            for (let i = 0; i < valueFields.length; i += 1) {
                                const field = valueFields[i];
                                const expression = expressions[i] = void 0 === expressions[i] ? getExpression(field) : expressions[i];
                                isEmptyCell = false;
                                if (expression) {
                                    const expressionArg = new SummaryCell(columnPath, rowPath, data, descriptions, i, fieldsCache);
                                    const cell = expressionArg.cell();
                                    const value = cell[i] = expression(expressionArg);
                                    cell.postProcessedFlags[i] = true;
                                    isEmptyCell = null === value || void 0 === value
                                }
                                if (void 0 === columnItem.isEmpty[i]) {
                                    columnItem.isEmpty[i] = true
                                }
                                if (void 0 === rowItem.isEmpty[i]) {
                                    rowItem.isEmpty[i] = true
                                }
                                if (!isEmptyCell) {
                                    rowItem.isEmpty[i] = columnItem.isEmpty[i] = false
                                }
                            }
                        }, false)
                    }, false);
                    data.isEmptyGrandTotalRow = rowElements[0].isEmpty;
                    data.isEmptyGrandTotalColumn = columnElements[0].isEmpty
                }

                function applyRunningTotal(descriptions, data) {
                    const expressions = [];
                    const columnElements = [{
                        index: data.grandTotalColumnIndex,
                        children: data.columns
                    }];
                    const rowElements = [{
                        index: data.grandTotalRowIndex,
                        children: data.rows
                    }];
                    const valueFields = descriptions.values;
                    const fieldsCache = {
                        fields: {},
                        positions: {}
                    };
                    data.values = data.values || [];
                    (0, _m_widget_utils.foreachTree)(rowElements, rowPath => {
                        const rowItem = rowPath[0];
                        data.values[rowItem.index] = data.values[rowItem.index] || [];
                        (0, _m_widget_utils.foreachTree)(columnElements, columnPath => {
                            const columnItem = columnPath[0];
                            processDataCell(data, rowItem.index, columnItem.index, true);
                            for (let i = 0; i < valueFields.length; i += 1) {
                                const field = valueFields[i];
                                const expression = expressions[i] = void 0 === expressions[i] ? createRunningTotalExpr(field) : expressions[i];
                                if (expression) {
                                    const expressionArg = new SummaryCell(columnPath, rowPath, data, descriptions, i, fieldsCache);
                                    const cell = expressionArg.cell();
                                    cell[i] = expression(expressionArg);
                                    cell.postProcessedFlags[i] = true
                                }
                            }
                        }, false)
                    }, false)
                }

                function createMockSummaryCell(descriptions, fields, indices) {
                    const summaryCell = new SummaryCell([], [], {}, descriptions, 0);
                    summaryCell.value = function(fieldId) {
                        if ((0, _type.isDefined)(fieldId)) {
                            const index = (0, _m_widget_utils.findField)(fields, fieldId);
                            const field = fields[index];
                            if (!indices[index] && field && !(0, _type.isDefined)(field.area)) {
                                descriptions.values.push(field);
                                indices[index] = true
                            }
                        }
                    };
                    summaryCell.grandTotal = function() {
                        return this
                    };
                    summaryCell.children = function() {
                        return []
                    };
                    return summaryCell
                }
                var _default = {
                    Cell: SummaryCell,
                    summaryDictionary: summaryDictionary,
                    getExpression: getExpression,
                    applyRunningTotal: applyRunningTotal,
                    createMockSummaryCell: createMockSummaryCell,
                    applyDisplaySummaryMode: applyDisplaySummaryMode
                };
                exports.default = _default
            },
        79755:
            /*!****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/pivot_grid/xmla_store/m_xmla_store.js ***!
              \****************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = exports.XmlaStore = void 0;
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../../../core/class */ 38377));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _string = __webpack_require__( /*! ../../../../core/utils/string */ 68752);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _window = __webpack_require__( /*! ../../../../core/utils/window */ 58201);
                var _errors = __webpack_require__( /*! ../../../../data/errors */ 18438);
                var _language_codes = __webpack_require__( /*! ../../../../localization/language_codes */ 9821);
                var _m_widget_utils = function(obj, nodeInterop) {
                    if (!nodeInterop && obj && obj.__esModule) {
                        return obj
                    }
                    if (null === obj || "object" !== typeof obj && "function" !== typeof obj) {
                        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 ("default" !== key && 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
                }(__webpack_require__( /*! ../m_widget_utils */ 28580));

                function _getRequireWildcardCache(nodeInterop) {
                    if ("function" !== typeof WeakMap) {
                        return null
                    }
                    var cacheBabelInterop = new WeakMap;
                    var cacheNodeInterop = new WeakMap;
                    return (_getRequireWildcardCache = function(nodeInterop) {
                        return nodeInterop ? cacheNodeInterop : cacheBabelInterop
                    })(nodeInterop)
                }

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();
                const XmlaStore = _class.default.inherit(function() {
                    const discover = '<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"><Body><Discover xmlns="urn:schemas-microsoft-com:xml-analysis"><RequestType>{2}</RequestType><Restrictions><RestrictionList><CATALOG_NAME>{0}</CATALOG_NAME><CUBE_NAME>{1}</CUBE_NAME></RestrictionList></Restrictions><Properties><PropertyList><Catalog>{0}</Catalog>{3}</PropertyList></Properties></Discover></Body></Envelope>';
                    const mdx = "SELECT {2} FROM {0} {1} CELL PROPERTIES VALUE, FORMAT_STRING, LANGUAGE, BACK_COLOR, FORE_COLOR, FONT_FLAGS";

                    function execXMLA(requestOptions, data) {
                        const deferred = new _deferred.Deferred;
                        const {
                            beforeSend: beforeSend
                        } = requestOptions;
                        const ajaxSettings = {
                            url: requestOptions.url,
                            dataType: "text",
                            data: data,
                            headers: {
                                "Content-Type": "text/xml"
                            },
                            xhrFields: {},
                            method: "POST"
                        };
                        if ((0, _type.isFunction)(beforeSend)) {
                            beforeSend(ajaxSettings)
                        }
                        _m_widget_utils.default.sendRequest(ajaxSettings).fail((function() {
                            deferred.reject(arguments)
                        })).done(text => {
                            const parser = new window.DOMParser;
                            let xml;
                            try {
                                try {
                                    xml = parser.parseFromString(text, "text/xml")
                                } catch (e) {
                                    xml = void 0
                                }
                                if (!xml || xml.getElementsByTagName("parsererror").length || 0 === xml.childNodes.length) {
                                    throw new _errors.errors.Error("E4023", text)
                                }
                            } catch (e) {
                                deferred.reject({
                                    statusText: e.message,
                                    stack: e.stack,
                                    responseText: text
                                })
                            }
                            deferred.resolve(xml)
                        });
                        return deferred
                    }

                    function getLocaleIdProperty() {
                        const languageId = (0, _language_codes.getLanguageId)();
                        if (void 0 !== languageId) {
                            return (0, _string.format)("<LocaleIdentifier>{0}</LocaleIdentifier>", languageId)
                        }
                        return ""
                    }

                    function mdxDescendants(level, levelMember, nextLevel) {
                        const memberExpression = levelMember || level;
                        return "Descendants({".concat(memberExpression, "}, ").concat(nextLevel, ", SELF_AND_BEFORE)")
                    }

                    function getAllMember(dimension) {
                        return "".concat(dimension.hierarchyName || dimension.dataField, ".[All]")
                    }

                    function getAllMembers(field) {
                        let result = "".concat(field.dataField, ".allMembers");
                        let {
                            searchValue: searchValue
                        } = field;
                        if (searchValue) {
                            searchValue = searchValue.replace(/'/g, "''");
                            result = "Filter(".concat(result, ", instr(").concat(field.dataField, ".currentmember.member_caption,'").concat(searchValue, "') > 0)")
                        }
                        return result
                    }

                    function crossJoinElements(elements) {
                        const elementsString = elements.join(",");
                        return elements.length > 1 ? (0, _string.format)("CrossJoin({0})", elementsString) : elementsString
                    }

                    function generateCrossJoin(path, expandLevel, expandAllCount, expandIndex, slicePath, options, axisName, take) {
                        const crossJoinArgs = [];
                        const dimensions = options[axisName];
                        const fields = [];
                        let arg;
                        let prevDimension;
                        let member;
                        for (let i = expandIndex; i <= expandLevel; i += 1) {
                            const field = dimensions[i];
                            const {
                                dataField: dataField
                            } = field;
                            const prevHierarchyName = dimensions[i - 1] && dimensions[i - 1].hierarchyName;
                            const {
                                hierarchyName: hierarchyName
                            } = field;
                            const isLastDimensionInGroup = !hierarchyName || !dimensions[i + 1] || dimensions[i + 1].hierarchyName !== hierarchyName;
                            const expandAllIndex = path.length + expandAllCount + expandIndex;
                            arg = null;
                            fields.push(field);
                            if (i < path.length) {
                                if (isLastDimensionInGroup) {
                                    arg = "(".concat(dataField, ".").concat(preparePathValue(path[i], dataField), ")")
                                }
                            } else if (i <= expandAllIndex) {
                                if (0 === i && 0 === expandAllCount) {
                                    const allMember = getAllMember(dimensions[expandIndex]);
                                    if (!hierarchyName) {
                                        arg = getAllMembers(dimensions[expandIndex])
                                    } else {
                                        arg = "".concat(allMember, ",").concat(dimensions[expandIndex].dataField)
                                    }
                                } else if (hierarchyName) {
                                    member = preparePathValue(slicePath[slicePath.length - 1]);
                                    if (isLastDimensionInGroup || i === expandAllIndex) {
                                        if (prevHierarchyName === hierarchyName) {
                                            if (slicePath.length) {
                                                prevDimension = dimensions[slicePath.length - 1]
                                            }
                                            if (!prevDimension || prevDimension.hierarchyName !== hierarchyName) {
                                                prevDimension = dimensions[i - 1];
                                                member = ""
                                            }
                                            arg = mdxDescendants(prevDimension.dataField, member, dataField)
                                        } else {
                                            arg = getAllMembers(field)
                                        }
                                    }
                                } else {
                                    arg = getAllMembers(field)
                                }
                            } else {
                                const isFirstDimensionInGroup = !hierarchyName || prevHierarchyName !== hierarchyName;
                                if (isFirstDimensionInGroup) {
                                    arg = "(".concat(getAllMember(field), ")")
                                }
                            }
                            if (arg) {
                                arg = (0, _string.format)("{{0}}", arg);
                                if (take) {
                                    const sortBy = (field.hierarchyName || field.dataField) + ("displayText" === field.sortBy ? ".MEMBER_CAPTION" : ".MEMBER_VALUE");
                                    arg = (0, _string.format)("Order({0}, {1}, {2})", arg, sortBy, "desc" === field.sortOrder ? "DESC" : "ASC")
                                }
                                crossJoinArgs.push(arg)
                            }
                        }
                        return crossJoinElements(crossJoinArgs)
                    }

                    function fillCrossJoins(crossJoins, path, expandLevel, expandIndex, slicePath, options, axisName, cellsString, take, totalsOnly) {
                        let expandAllCount = -1;
                        const dimensions = options[axisName];
                        let dimensionIndex;
                        do {
                            expandAllCount += 1;
                            dimensionIndex = path.length + expandAllCount + expandIndex;
                            let crossJoin = generateCrossJoin(path, expandLevel, expandAllCount, expandIndex, slicePath, options, axisName, take);
                            if (!take && !totalsOnly) {
                                crossJoin = (0, _string.format)("NonEmpty({0}, {1})", crossJoin, cellsString)
                            }
                            crossJoins.push(crossJoin)
                        } while (dimensions[dimensionIndex] && dimensions[dimensionIndex + 1] && dimensions[dimensionIndex].expanded)
                    }

                    function declare(expression, withArray, name, type) {
                        name = name || "[DX_Set_".concat(withArray.length, "]");
                        type = type || "set";
                        withArray.push((0, _string.format)("{0} {1} as {2}", type, name, expression));
                        return name
                    }

                    function generateAxisMdx(options, axisName, cells, withArray, parseOptions) {
                        const dimensions = options[axisName];
                        const crossJoins = [];
                        let path = [];
                        let expandedPaths = [];
                        let expandIndex = 0;
                        let expandLevel = 0;
                        const result = [];
                        const cellsString = (0, _string.format)("{{0}}", cells.join(","));
                        if (dimensions && dimensions.length) {
                            if (options.headerName === axisName) {
                                path = options.path;
                                expandIndex = path.length
                            } else if (options.headerName && options.oppositePath) {
                                path = options.oppositePath;
                                expandIndex = path.length
                            } else {
                                expandedPaths = ("columns" === axisName ? options.columnExpandedPaths : options.rowExpandedPaths) || expandedPaths
                            }
                            expandLevel = (0, _m_widget_utils.getExpandedLevel)(options, axisName);
                            fillCrossJoins(crossJoins, [], expandLevel, expandIndex, path, options, axisName, cellsString, "rows" === axisName ? options.rowTake : options.columnTake, options.totalsOnly);
                            (0, _iterator.each)(expandedPaths, (_, expandedPath) => {
                                fillCrossJoins(crossJoins, expandedPath, expandLevel, expandIndex, expandedPath, options, axisName, cellsString)
                            });
                            for (let i = expandLevel; i >= path.length; i -= 1) {
                                if (dimensions[i].hierarchyName) {
                                    parseOptions.visibleLevels[dimensions[i].hierarchyName] = parseOptions.visibleLevels[dimensions[i].hierarchyName] || [];
                                    parseOptions.visibleLevels[dimensions[i].hierarchyName].push(dimensions[i].dataField)
                                }
                            }
                        }
                        if (crossJoins.length) {
                            let expression = function(elements) {
                                const elementsString = elements.join(",");
                                return elements.length > 1 ? "Union(".concat(elementsString, ")") : elementsString
                            }(crossJoins);
                            if ("rows" === axisName && options.rowTake) {
                                expression = (0, _string.format)("Subset({0}, {1}, {2})", expression, options.rowSkip > 0 ? options.rowSkip + 1 : 0, options.rowSkip > 0 ? options.rowTake : options.rowTake + 1)
                            }
                            if ("columns" === axisName && options.columnTake) {
                                expression = (0, _string.format)("Subset({0}, {1}, {2})", expression, options.columnSkip > 0 ? options.columnSkip + 1 : 0, options.columnSkip > 0 ? options.columnTake : options.columnTake + 1)
                            }
                            const axisSet = "[DX_".concat(axisName, "]");
                            result.push(declare(expression, withArray, axisSet));
                            if (options.totalsOnly) {
                                result.push(declare("COUNT(".concat(axisSet, ")"), withArray, "[DX_".concat(axisName, "_count]"), "member"))
                            }
                        }
                        if ("columns" === axisName && cells.length && !options.skipValues) {
                            result.push(cellsString)
                        }
                        return (0, _string.format)("{0} DIMENSION PROPERTIES PARENT_UNIQUE_NAME,HIERARCHY_UNIQUE_NAME, MEMBER_VALUE ON {1}", crossJoinElements(result), axisName)
                    }

                    function generateAxisFieldsFilter(fields) {
                        const filterMembers = [];
                        (0, _iterator.each)(fields, (_, field) => {
                            const {
                                dataField: dataField
                            } = field;
                            const filterExpression = [];
                            const filterValues = field.filterValues || [];
                            let filterStringExpression;
                            if (field.hierarchyName && (0, _type.isNumeric)(field.groupIndex)) {
                                return
                            }(0, _iterator.each)(filterValues, (_, filterValue) => {
                                let filterMdx = "".concat(dataField, ".").concat(preparePathValue(Array.isArray(filterValue) ? filterValue[filterValue.length - 1] : filterValue, dataField));
                                if ("exclude" === field.filterType) {
                                    filterExpression.push("".concat(filterMdx, ".parent"));
                                    filterMdx = "Descendants(".concat(filterMdx, ")")
                                }
                                filterExpression.push(filterMdx)
                            });
                            if (filterValues.length) {
                                filterStringExpression = (0, _string.format)("{{0}}", filterExpression.join(","));
                                if ("exclude" === field.filterType) {
                                    filterStringExpression = "Except(".concat(getAllMembers(field), ",").concat(filterStringExpression, ")")
                                }
                                filterMembers.push(filterStringExpression)
                            }
                        });
                        return filterMembers.length ? crossJoinElements(filterMembers) : ""
                    }

                    function generateFrom(columnsFilter, rowsFilter, filter, cubeName) {
                        let from = "[".concat(cubeName, "]");
                        (0, _iterator.each)([columnsFilter, rowsFilter, filter], (_, filter) => {
                            if (filter) {
                                from = (0, _string.format)("(SELECT {0} FROM {1})", "".concat(filter, "on 0"), from)
                            }
                        });
                        return from
                    }

                    function generateMdxCore(axisStrings, withArray, columns, rows, filters, slice, cubeName) {
                        let options = arguments.length > 7 && void 0 !== arguments[7] ? arguments[7] : {};
                        let mdxString = "";
                        const withString = "".concat(withArray.length ? "with ".concat(withArray.join(" ")) : "", " ");
                        if (axisStrings.length) {
                            let select;
                            if (options.totalsOnly) {
                                const countMembers = [];
                                if (rows.length) {
                                    countMembers.push("[DX_rows_count]")
                                }
                                if (columns.length) {
                                    countMembers.push("[DX_columns_count]")
                                }
                                select = "{".concat(countMembers.join(","), "} on columns")
                            } else {
                                select = axisStrings.join(",")
                            }
                            mdxString = withString + (0, _string.format)(mdx, generateFrom(generateAxisFieldsFilter(columns), generateAxisFieldsFilter(rows), generateAxisFieldsFilter(filters || []), cubeName), slice.length ? (0, _string.format)("WHERE ({0})", slice.join(",")) : "", select)
                        }
                        return mdxString
                    }

                    function prepareDataFields(withArray, valueFields) {
                        return (0, _iterator.map)(valueFields, cell => {
                            if ((0, _type.isString)(cell.expression)) {
                                declare(cell.expression, withArray, cell.dataField, "member")
                            }
                            return cell.dataField
                        })
                    }

                    function addSlices(slices, options, headerName, path) {
                        (0, _iterator.each)(path, (index, value) => {
                            const dimension = options[headerName][index];
                            if (!dimension.hierarchyName || dimension.hierarchyName !== options[headerName][index + 1].hierarchyName) {
                                slices.push("".concat(dimension.dataField, ".").concat(preparePathValue(value, dimension.dataField)))
                            }
                        })
                    }

                    function generateMDX(options, cubeName, parseOptions) {
                        const columns = options.columns || [];
                        const rows = options.rows || [];
                        const values = options.values && options.values.length ? options.values : [{
                            dataField: "[Measures]"
                        }];
                        const slice = [];
                        const withArray = [];
                        const axisStrings = [];
                        const dataFields = prepareDataFields(withArray, values);
                        parseOptions.measureCount = options.skipValues ? 1 : values.length;
                        parseOptions.visibleLevels = {};
                        if (options.headerName && options.path) {
                            addSlices(slice, options, options.headerName, options.path)
                        }
                        if (options.headerName && options.oppositePath) {
                            addSlices(slice, options, "rows" === options.headerName ? "columns" : "rows", options.oppositePath)
                        }
                        if (columns.length || dataFields.length) {
                            axisStrings.push(generateAxisMdx(options, "columns", dataFields, withArray, parseOptions))
                        }
                        if (rows.length) {
                            axisStrings.push(generateAxisMdx(options, "rows", dataFields, withArray, parseOptions))
                        }
                        return generateMdxCore(axisStrings, withArray, columns, rows, options.filters, slice, cubeName, options)
                    }

                    function createDrillDownAxisSlice(slice, fields, path) {
                        (0, _iterator.each)(path, (index, value) => {
                            const field = fields[index];
                            if (field.hierarchyName && (fields[index + 1] || {}).hierarchyName === field.hierarchyName) {
                                return
                            }
                            slice.push("".concat(field.dataField, ".").concat(preparePathValue(value, field.dataField)))
                        })
                    }

                    function getNumber(str) {
                        return parseInt(str, 10)
                    }

                    function getFirstChildText(node, childTagName) {
                        return getNodeText(function(node, tagName) {
                            return (node.getElementsByTagName(tagName) || [])[0]
                        }(node, childTagName))
                    }

                    function getNodeText(node) {
                        return node && (node.textContent || node.text || node.innerHTML) || ""
                    }

                    function parseCells(xml, axes, measureCount) {
                        const cells = [];
                        let cell = [];
                        let index = 0;
                        const cellsOriginal = [];
                        const cellElements = xml.getElementsByTagName("Cell");
                        const errorDictionary = {};
                        for (let i = 0; i < cellElements.length; i += 1) {
                            const xmlCell = cellElements[i];
                            const valueElement = xmlCell.getElementsByTagName("Value")[0];
                            const errorElements = valueElement && valueElement.getElementsByTagName("Error") || [];
                            const text = 0 === errorElements.length ? getNodeText(valueElement) : "#N/A";
                            const value = parseFloat(text);
                            const isNumeric = text - value + 1 > 0;
                            const cellOrdinal = getNumber(xmlCell.getAttribute("CellOrdinal"));
                            if (errorElements.length) {
                                errorDictionary[getNodeText(errorElements[0].getElementsByTagName("ErrorCode")[0])] = getNodeText(errorElements[0].getElementsByTagName("Description")[0])
                            }
                            cellsOriginal[cellOrdinal] = {
                                value: isNumeric ? value : text || null
                            }
                        }(0, _iterator.each)(axes[1], () => {
                            const row = [];
                            cells.push(row);
                            (0, _iterator.each)(axes[0], () => {
                                const measureIndex = index % measureCount;
                                if (0 === measureIndex) {
                                    cell = [];
                                    row.push(cell)
                                }
                                cell.push(cellsOriginal[index] ? cellsOriginal[index].value : null);
                                index += 1
                            })
                        });
                        Object.keys(errorDictionary).forEach(key => {
                            _errors.errors.log("W4002", errorDictionary[key])
                        });
                        return cells
                    }

                    function preparePathValue(pathValue, dataField) {
                        if (pathValue) {
                            pathValue = (0, _type.isString)(pathValue) && pathValue.includes("&") ? pathValue : "[".concat(pathValue, "]");
                            if (dataField && 0 === pathValue.indexOf("".concat(dataField, "."))) {
                                pathValue = pathValue.slice(dataField.length + 1, pathValue.length)
                            }
                        }
                        return pathValue
                    }

                    function getItem(hash, name, member, index) {
                        let item = hash[name];
                        if (!item) {
                            item = {};
                            hash[name] = item
                        }
                        if (!(0, _type.isDefined)(item.value) && member) {
                            item.text = member.caption;
                            item.value = member.value;
                            item.key = name || "";
                            item.levelName = member.levelName;
                            item.hierarchyName = member.hierarchyName;
                            item.parentName = member.parentName;
                            item.index = index;
                            item.level = member.level
                        }
                        return item
                    }

                    function getVisibleChildren(item, visibleLevels) {
                        const result = [];
                        const children = item.children && (item.children.length ? item.children : Object.keys(item.children.grandTotalHash || {}).reduce((result, name) => result.concat(item.children.grandTotalHash[name].children), []));
                        const firstChild = children && children[0];
                        if (firstChild && (visibleLevels[firstChild.hierarchyName] && visibleLevels[firstChild.hierarchyName].includes(firstChild.levelName) || !visibleLevels[firstChild.hierarchyName] || 0 === firstChild.level)) {
                            const newChildren = children.filter(child => child.hierarchyName === firstChild.hierarchyName);
                            newChildren.grandTotalHash = children.grandTotalHash;
                            return newChildren
                        }
                        if (firstChild) {
                            for (let i = 0; i < children.length; i += 1) {
                                if (children[i].hierarchyName === firstChild.hierarchyName) {
                                    result.push.apply(result, getVisibleChildren(children[i], visibleLevels))
                                }
                            }
                        }
                        return result
                    }

                    function fillDataSourceAxes(dataSourceAxis, axisTuples, measureCount, visibleLevels) {
                        const result = [];
                        (0, _iterator.each)(axisTuples, (tupleIndex, members) => {
                            let parentItem = {
                                children: result
                            };
                            const dataIndex = (0, _type.isDefined)(measureCount) ? Math.floor(tupleIndex / measureCount) : tupleIndex;
                            (0, _iterator.each)(members, (_, member) => {
                                parentItem = function(dataIndex, member, parentItem) {
                                    let children = parentItem.children = parentItem.children || [];
                                    const hash = children.hash = children.hash || {};
                                    const grandTotalHash = children.grandTotalHash = children.grandTotalHash || {};
                                    if (member.parentName) {
                                        parentItem = getItem(hash, member.parentName);
                                        children = parentItem.children = parentItem.children || []
                                    }
                                    const currentItem = getItem(hash, member.name, member, dataIndex);
                                    if (member.hasValue && !currentItem.added) {
                                        currentItem.index = dataIndex;
                                        currentItem.added = true;
                                        children.push(currentItem)
                                    }
                                    if ((!parentItem.value || !parentItem.parentName) && member.parentName) {
                                        grandTotalHash[member.parentName] = parentItem
                                    } else if (grandTotalHash[parentItem.name]) {
                                        delete grandTotalHash[member.parentName]
                                    }
                                    return currentItem
                                }(dataIndex, member, parentItem)
                            })
                        });
                        const parentItem = {
                            children: result
                        };
                        parentItem.children = getVisibleChildren(parentItem, visibleLevels);
                        const grandTotalIndex = function(parentItem, visibleLevels) {
                            let grandTotalIndex;
                            if (1 === parentItem.children.length && "" === parentItem.children[0].parentName) {
                                grandTotalIndex = parentItem.children[0].index;
                                const {
                                    grandTotalHash: grandTotalHash
                                } = parentItem.children;
                                parentItem.children = parentItem.children[0].children || [];
                                parentItem.children.grandTotalHash = grandTotalHash;
                                parentItem.children = getVisibleChildren(parentItem, visibleLevels)
                            } else if (0 === parentItem.children.length) {
                                grandTotalIndex = 0
                            }
                            return grandTotalIndex
                        }(parentItem, visibleLevels);
                        (0, _m_widget_utils.foreachTree)(parentItem.children, items => {
                            const item = items[0];
                            const children = getVisibleChildren(item, visibleLevels);
                            if (children.length) {
                                item.children = children
                            } else {
                                delete item.children
                            }
                            delete item.levelName;
                            delete item.hierarchyName;
                            delete item.added;
                            delete item.parentName;
                            delete item.level
                        }, true);
                        (0, _iterator.each)(parentItem.children || [], (_, e) => {
                            dataSourceAxis.push(e)
                        });
                        return grandTotalIndex
                    }

                    function checkError(xml) {
                        const faultElementNS = xml.getElementsByTagName("soap:Fault");
                        const faultElement = xml.getElementsByTagName("Fault");
                        const errorElement = (0, _renderer.default)([].slice.call(faultElement.length ? faultElement : faultElementNS)).find("Error");
                        if (errorElement.length) {
                            const description = errorElement.attr("Description");
                            const error = new _errors.errors.Error("E4000", description);
                            _errors.errors.log("E4000", description);
                            return error
                        }
                        return null
                    }

                    function parseResult(xml, parseOptions) {
                        const dataSource = {
                            columns: [],
                            rows: []
                        };
                        const {
                            measureCount: measureCount
                        } = parseOptions;
                        const axes = function(xml, skipValues) {
                            const axes = [];
                            (0, _iterator.each)(xml.getElementsByTagName("Axis"), (_, axisElement) => {
                                const name = axisElement.getAttribute("name");
                                const axis = [];
                                let index = 0;
                                if (0 === name.indexOf("Axis") && (0, _type.isNumeric)(getNumber(name.substr(4)))) {
                                    axes.push(axis);
                                    (0, _iterator.each)(axisElement.getElementsByTagName("Tuple"), (_, tupleElement) => {
                                        const tupleMembers = tupleElement.childNodes;
                                        let levelSum = 0;
                                        const members = [];
                                        let membersCount = skipValues ? tupleMembers.length : tupleMembers.length - 1;
                                        const isAxisWithMeasure = 1 === axes.length;
                                        if (isAxisWithMeasure) {
                                            membersCount -= 1
                                        }
                                        axis.push(members);
                                        for (let i = membersCount; i >= 0; i -= 1) {
                                            const tuple = tupleMembers[i];
                                            const level = getNumber(getFirstChildText(tuple, "LNum"));
                                            members[i] = {
                                                caption: getFirstChildText(tuple, "Caption"),
                                                value: (valueText = getFirstChildText(tuple, "MEMBER_VALUE"), (0, _type.isNumeric)(valueText) ? parseFloat(valueText) : valueText),
                                                level: level,
                                                index: index++,
                                                hasValue: !levelSum && (!!level || 0 === i),
                                                name: getFirstChildText(tuple, "UName"),
                                                hierarchyName: tupleMembers[i].getAttribute("Hierarchy"),
                                                parentName: getFirstChildText(tuple, "PARENT_UNIQUE_NAME"),
                                                levelName: getFirstChildText(tuple, "LName")
                                            };
                                            levelSum += level
                                        }
                                        var valueText
                                    })
                                }
                            });
                            while (axes.length < 2) {
                                axes.push([
                                    [{
                                        level: 0
                                    }]
                                ])
                            }
                            return axes
                        }(xml, parseOptions.skipValues);
                        dataSource.grandTotalColumnIndex = fillDataSourceAxes(dataSource.columns, axes[0], measureCount, parseOptions.visibleLevels);
                        dataSource.grandTotalRowIndex = fillDataSourceAxes(dataSource.rows, axes[1], void 0, parseOptions.visibleLevels);
                        dataSource.values = parseCells(xml, axes, measureCount);
                        return dataSource
                    }

                    function parseDiscoverRowSet(xml, schema, dimensions, translatedDisplayFolders) {
                        const result = [];
                        const isMeasure = "MEASURE" === schema;
                        const displayFolderField = isMeasure ? "MEASUREGROUP_NAME" : "".concat(schema, "_DISPLAY_FOLDER");
                        (0, _iterator.each)(xml.getElementsByTagName("row"), (_, row) => {
                            const hierarchyName = "LEVEL" === schema ? getFirstChildText(row, "HIERARCHY_UNIQUE_NAME") : void 0;
                            const levelNumber = getFirstChildText(row, "LEVEL_NUMBER");
                            let displayFolder = getFirstChildText(row, displayFolderField);
                            if (isMeasure) {
                                displayFolder = translatedDisplayFolders[displayFolder] || displayFolder
                            }
                            if (("0" !== levelNumber || "true" !== getFirstChildText(row, "".concat(schema, "_IS_VISIBLE"))) && "2" !== getFirstChildText(row, "DIMENSION_TYPE")) {
                                const dimension = isMeasure ? "DX_MEASURES" : getFirstChildText(row, "DIMENSION_UNIQUE_NAME");
                                const dataField = getFirstChildText(row, "".concat(schema, "_UNIQUE_NAME"));
                                result.push({
                                    dimension: dimensions.names[dimension] || dimension,
                                    groupIndex: levelNumber ? getNumber(levelNumber) - 1 : void 0,
                                    dataField: dataField,
                                    caption: getFirstChildText(row, "".concat(schema, "_CAPTION")),
                                    hierarchyName: hierarchyName,
                                    groupName: hierarchyName,
                                    displayFolder: displayFolder,
                                    isMeasure: isMeasure,
                                    isDefault: !!dimensions.defaultHierarchies[dataField]
                                })
                            }
                        });
                        return result
                    }

                    function parseStringWithUnicodeSymbols(str) {
                        str = str.replace(/_x(....)_/g, (_, group1) => String.fromCharCode(parseInt(group1, 16)));
                        const stringArray = str.match(/\[.+?\]/gi);
                        if (stringArray && stringArray.length) {
                            str = stringArray[stringArray.length - 1]
                        }
                        return str.replace(/\[/gi, "").replace(/\]/gi, "").replace(/\$/gi, "").replace(/\./gi, " ")
                    }

                    function sendQuery(storeOptions, mdxString) {
                        mdxString = (0, _renderer.default)("<div>").text(mdxString).html();
                        return execXMLA(storeOptions, (0, _string.format)('<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"><Body><Execute xmlns="urn:schemas-microsoft-com:xml-analysis"><Command><Statement>{0}</Statement></Command><Properties><PropertyList><Catalog>{1}</Catalog><ShowHiddenCubes>True</ShowHiddenCubes><SspropInitAppName>Microsoft SQL Server Management Studio</SspropInitAppName><Timeout>3600</Timeout>{2}</PropertyList></Properties></Execute></Body></Envelope>', mdxString, storeOptions.catalog, getLocaleIdProperty()))
                    }
                    return {
                        ctor(options) {
                            this._options = options
                        },
                        getFields() {
                            const options = this._options;
                            const {
                                catalog: catalog
                            } = options;
                            const {
                                cube: cube
                            } = options;
                            const localeIdProperty = getLocaleIdProperty();
                            const dimensionsRequest = execXMLA(options, (0, _string.format)(discover, catalog, cube, "MDSCHEMA_DIMENSIONS", localeIdProperty));
                            const measuresRequest = execXMLA(options, (0, _string.format)(discover, catalog, cube, "MDSCHEMA_MEASURES", localeIdProperty));
                            const hierarchiesRequest = execXMLA(options, (0, _string.format)(discover, catalog, cube, "MDSCHEMA_HIERARCHIES", localeIdProperty));
                            const levelsRequest = execXMLA(options, (0, _string.format)(discover, catalog, cube, "MDSCHEMA_LEVELS", localeIdProperty));
                            const result = new _deferred.Deferred;
                            (0, _deferred.when)(dimensionsRequest, measuresRequest, hierarchiesRequest, levelsRequest).then((dimensionsResponse, measuresResponse, hierarchiesResponse, levelsResponse) => {
                                execXMLA(options, (0, _string.format)(discover, catalog, cube, "MDSCHEMA_MEASUREGROUPS", localeIdProperty)).done(measureGroupsResponse => {
                                    const dimensions = function(xml) {
                                        const result = {
                                            names: {},
                                            defaultHierarchies: {}
                                        };
                                        (0, _iterator.each)((0, _renderer.default)(xml).find("row"), (function() {
                                            const $row = (0, _renderer.default)(this);
                                            const type = $row.children("DIMENSION_TYPE").text();
                                            const dimensionName = "2" === type ? "DX_MEASURES" : $row.children("DIMENSION_UNIQUE_NAME").text();
                                            result.names[dimensionName] = $row.children("DIMENSION_CAPTION").text();
                                            result.defaultHierarchies[$row.children("DEFAULT_HIERARCHY").text()] = true
                                        }));
                                        return result
                                    }(dimensionsResponse);
                                    const hierarchies = parseDiscoverRowSet(hierarchiesResponse, "HIERARCHY", dimensions);
                                    const levels = parseDiscoverRowSet(levelsResponse, "LEVEL", dimensions);
                                    const measureGroups = function(xml) {
                                        const measureGroups = {};
                                        (0, _iterator.each)(xml.getElementsByTagName("row"), (_, row) => {
                                            measureGroups[getFirstChildText(row, "MEASUREGROUP_NAME")] = getFirstChildText(row, "MEASUREGROUP_CAPTION")
                                        });
                                        return measureGroups
                                    }(measureGroupsResponse);
                                    const fields = parseDiscoverRowSet(measuresResponse, "MEASURE", dimensions, measureGroups).concat(hierarchies);
                                    const levelsByHierarchy = {};
                                    (0, _iterator.each)(levels, (_, level) => {
                                        levelsByHierarchy[level.hierarchyName] = levelsByHierarchy[level.hierarchyName] || [];
                                        levelsByHierarchy[level.hierarchyName].push(level)
                                    });
                                    (0, _iterator.each)(hierarchies, (_, hierarchy) => {
                                        if (levelsByHierarchy[hierarchy.dataField] && levelsByHierarchy[hierarchy.dataField].length > 1) {
                                            hierarchy.groupName = hierarchy.hierarchyName = hierarchy.dataField;
                                            fields.push.apply(fields, levelsByHierarchy[hierarchy.hierarchyName])
                                        }
                                    });
                                    result.resolve(fields)
                                }).fail(result.reject)
                            }).fail(result.reject);
                            return result
                        },
                        load(options) {
                            const result = new _deferred.Deferred;
                            const storeOptions = this._options;
                            const parseOptions = {
                                skipValues: options.skipValues
                            };
                            const mdxString = generateMDX(options, storeOptions.cube, parseOptions);
                            let rowCountMdx;
                            if (options.rowSkip || options.rowTake || options.columnTake || options.columnSkip) {
                                rowCountMdx = generateMDX((0, _extend.extend)({}, options, {
                                    totalsOnly: true,
                                    rowSkip: null,
                                    rowTake: null,
                                    columnSkip: null,
                                    columnTake: null
                                }), storeOptions.cube, {})
                            }
                            const load = () => {
                                if (mdxString) {
                                    (0, _deferred.when)(sendQuery(storeOptions, mdxString), rowCountMdx && sendQuery(storeOptions, rowCountMdx)).done((executeXml, rowCountXml) => {
                                        const error = checkError(executeXml) || rowCountXml && checkError(rowCountXml);
                                        if (!error) {
                                            const response = parseResult(executeXml, parseOptions);
                                            if (rowCountXml) {
                                                ! function(data, options, totalCountXml) {
                                                    const axes = [];
                                                    const columnOptions = options.columns || [];
                                                    const rowOptions = options.rows || [];
                                                    if (columnOptions.length) {
                                                        axes.push({})
                                                    }
                                                    if (rowOptions.length) {
                                                        axes.push({})
                                                    }
                                                    const cells = parseCells(totalCountXml, [
                                                        [{}],
                                                        [{}, {}]
                                                    ], 1);
                                                    if (!columnOptions.length && rowOptions.length) {
                                                        data.rowCount = Math.max(cells[0][0][0] - 1, 0)
                                                    }
                                                    if (!rowOptions.length && columnOptions.length) {
                                                        data.columnCount = Math.max(cells[0][0][0] - 1, 0)
                                                    }
                                                    if (rowOptions.length && columnOptions.length) {
                                                        data.rowCount = Math.max(cells[0][0][0] - 1, 0);
                                                        data.columnCount = Math.max(cells[1][0][0] - 1, 0)
                                                    }
                                                    if (void 0 !== data.rowCount && options.rowTake) {
                                                        data.rows = [...Array(options.rowSkip)].concat(data.rows);
                                                        data.rows.length = data.rowCount;
                                                        for (let i = 0; i < data.rows.length; i += 1) {
                                                            data.rows[i] = data.rows[i] || {}
                                                        }
                                                    }
                                                    if (void 0 !== data.columnCount && options.columnTake) {
                                                        data.columns = [...Array(options.columnSkip)].concat(data.columns);
                                                        data.columns.length = data.columnCount;
                                                        for (let i = 0; i < data.columns.length; i += 1) {
                                                            data.columns[i] = data.columns[i] || {}
                                                        }
                                                    }
                                                }(response, options, rowCountXml)
                                            }
                                            result.resolve(response)
                                        } else {
                                            result.reject(error)
                                        }
                                    }).fail(result.reject)
                                } else {
                                    result.resolve({
                                        columns: [],
                                        rows: [],
                                        values: [],
                                        grandTotalColumnIndex: 0,
                                        grandTotalRowIndex: 0
                                    })
                                }
                            };
                            if (options.delay) {
                                setTimeout(load, options.delay)
                            } else {
                                load()
                            }
                            return result
                        },
                        supportPaging: () => true,
                        getDrillDownItems(options, params) {
                            const result = new _deferred.Deferred;
                            const storeOptions = this._options;
                            const mdxString = function(options, cubeName, params) {
                                const columns = options.columns || [];
                                const rows = options.rows || [];
                                const values = options.values && options.values.length ? options.values : [{
                                    dataField: "[Measures]"
                                }];
                                const slice = [];
                                const withArray = [];
                                const axisStrings = [];
                                const dataFields = prepareDataFields(withArray, values);
                                const {
                                    maxRowCount: maxRowCount
                                } = params;
                                const customColumns = params.customColumns || [];
                                const customColumnsString = customColumns.length > 0 ? " return ".concat(customColumns.join(",")) : "";
                                createDrillDownAxisSlice(slice, columns, params.columnPath || []);
                                createDrillDownAxisSlice(slice, rows, params.rowPath || []);
                                if (columns.length || dataFields.length) {
                                    axisStrings.push(["".concat(dataFields[params.dataIndex] || dataFields[0], " on 0")])
                                }
                                const coreMDX = generateMdxCore(axisStrings, withArray, columns, rows, options.filters, slice, cubeName);
                                return coreMDX ? "drillthrough".concat(maxRowCount > 0 ? " maxrows ".concat(maxRowCount) : "").concat(coreMDX).concat(customColumnsString) : coreMDX
                            }(options, storeOptions.cube, params);
                            if (mdxString) {
                                (0, _deferred.when)(sendQuery(storeOptions, mdxString)).done(executeXml => {
                                    const error = checkError(executeXml);
                                    if (!error) {
                                        result.resolve(function(xml) {
                                            const rows = xml.getElementsByTagName("row");
                                            const result = [];
                                            const columnNames = {};
                                            for (let i = 0; i < rows.length; i += 1) {
                                                const children = rows[i].childNodes;
                                                const item = {};
                                                for (let j = 0; j < children.length; j += 1) {
                                                    const {
                                                        tagName: tagName
                                                    } = children[j];
                                                    const name = columnNames[tagName] = columnNames[tagName] || parseStringWithUnicodeSymbols(tagName);
                                                    item[name] = getNodeText(children[j])
                                                }
                                                result.push(item)
                                            }
                                            return result
                                        }(executeXml))
                                    } else {
                                        result.reject(error)
                                    }
                                }).fail(result.reject)
                            } else {
                                result.resolve([])
                            }
                            return result
                        },
                        key: _common.noop,
                        filter: _common.noop
                    }
                }()).include(_m_widget_utils.storeDrillDownMixin);
                exports.XmlaStore = XmlaStore;
                var _default = {
                    XmlaStore: XmlaStore
                };
                exports.default = _default
            },
        26686:
            /*!*************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/data_controller/m_data_controller.js ***!
              \*************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.DataController = void 0;
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _m_data_controller = __webpack_require__( /*! ../../../grids/grid_core/data_controller/m_data_controller */ 72119);
                var _m_data_source_adapter = _interopRequireDefault(__webpack_require__( /*! ../data_source_adapter/m_data_source_adapter */ 22821));
                var _m_core = _interopRequireDefault(__webpack_require__( /*! ../m_core */ 12500));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const DataController = _m_data_controller.dataControllerModule.controllers.data.inherit({
                    _getDataSourceAdapter: () => _m_data_source_adapter.default,
                    _getNodeLevel(node) {
                        let level = -1;
                        while (node.parent) {
                            if (node.visible) {
                                level++
                            }
                            node = node.parent
                        }
                        return level
                    },
                    _generateDataItem(node, options) {
                        return {
                            rowType: "data",
                            node: node,
                            key: node.key,
                            data: node.data,
                            isExpanded: this.isRowExpanded(node.key, options),
                            level: this._getNodeLevel(node)
                        }
                    },
                    _loadOnOptionChange() {
                        this._dataSource.load()
                    },
                    _isItemEquals(item1, item2) {
                        if (item1.isSelected !== item2.isSelected) {
                            return false
                        }
                        if (item1.node && item2.node && item1.node.hasChildren !== item2.node.hasChildren) {
                            return false
                        }
                        if (item1.level !== item2.level || item1.isExpanded !== item2.isExpanded) {
                            return false
                        }
                        return this.callBase.apply(this, arguments)
                    },
                    _isCellChanged(oldRow, newRow, visibleRowIndex, columnIndex, isLiveUpdate) {
                        const firstDataColumnIndex = this._columnsController.getFirstDataColumnIndex();
                        if (columnIndex === firstDataColumnIndex && oldRow.isSelected !== newRow.isSelected) {
                            return true
                        }
                        return this.callBase.apply(this, arguments)
                    },
                    init() {
                        this.createAction("onRowExpanding");
                        this.createAction("onRowExpanded");
                        this.createAction("onRowCollapsing");
                        this.createAction("onRowCollapsed");
                        this.callBase.apply(this, arguments)
                    },
                    keyOf(data) {
                        const dataSource = this._dataSource;
                        if (dataSource) {
                            return dataSource.keyOf(data)
                        }
                    },
                    key() {
                        const dataSource = this._dataSource;
                        if (dataSource) {
                            return dataSource.getKeyExpr()
                        }
                    },
                    publicMethods() {
                        return this.callBase().concat(["expandRow", "collapseRow", "isRowExpanded", "getRootNode", "getNodeByKey", "loadDescendants", "forEachNode"])
                    },
                    changeRowExpand(key) {
                        if (this._dataSource) {
                            const args = {
                                key: key
                            };
                            const isExpanded = this.isRowExpanded(key);
                            this.executeAction(isExpanded ? "onRowCollapsing" : "onRowExpanding", args);
                            if (!args.cancel) {
                                return this._dataSource.changeRowExpand(key).done(() => {
                                    this.executeAction(isExpanded ? "onRowCollapsed" : "onRowExpanded", args)
                                })
                            }
                        }
                        return (new _deferred.Deferred).resolve()
                    },
                    isRowExpanded(key, cache) {
                        return this._dataSource && this._dataSource.isRowExpanded(key, cache)
                    },
                    expandRow(key) {
                        if (!this.isRowExpanded(key)) {
                            return this.changeRowExpand(key)
                        }
                        return (new _deferred.Deferred).resolve()
                    },
                    collapseRow(key) {
                        if (this.isRowExpanded(key)) {
                            return this.changeRowExpand(key)
                        }
                        return (new _deferred.Deferred).resolve()
                    },
                    getRootNode() {
                        return this._dataSource && this._dataSource.getRootNode()
                    },
                    optionChanged(args) {
                        switch (args.name) {
                            case "rootValue":
                            case "parentIdExpr":
                            case "itemsExpr":
                            case "filterMode":
                            case "expandNodesOnFiltering":
                            case "autoExpandAll":
                            case "hasItemsExpr":
                            case "dataStructure":
                                this._columnsController.reset();
                                this._items = [];
                                this._refreshDataSource();
                                args.handled = true;
                                break;
                            case "expandedRowKeys":
                            case "onNodesInitialized":
                                if (this._dataSource && !this._dataSource._isNodesInitializing && !(0, _common.equalByValue)(args.value, args.previousValue)) {
                                    this._loadOnOptionChange()
                                }
                                args.handled = true;
                                break;
                            case "maxFilterLengthInRequest":
                                args.handled = true;
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    getNodeByKey(key) {
                        if (!this._dataSource) {
                            return
                        }
                        return this._dataSource.getNodeByKey(key)
                    },
                    getChildNodeKeys(parentKey) {
                        if (!this._dataSource) {
                            return
                        }
                        return this._dataSource.getChildNodeKeys(parentKey)
                    },
                    loadDescendants(keys, childrenOnly) {
                        if (!this._dataSource) {
                            return
                        }
                        return this._dataSource.loadDescendants(keys, childrenOnly)
                    },
                    forEachNode() {
                        this._dataSource.forEachNode.apply(this, arguments)
                    }
                });
                exports.DataController = DataController;
                _m_core.default.registerModule("data", {
                    defaultOptions: () => (0, _extend.extend)({}, _m_data_controller.dataControllerModule.defaultOptions(), {
                        itemsExpr: "items",
                        parentIdExpr: "parentId",
                        rootValue: 0,
                        dataStructure: "plain",
                        expandedRowKeys: [],
                        filterMode: "withAncestors",
                        expandNodesOnFiltering: true,
                        autoExpandAll: false,
                        onNodesInitialized: null,
                        maxFilterLengthInRequest: 1500,
                        paging: {
                            enabled: false
                        }
                    }),
                    controllers: {
                        data: DataController
                    }
                })
            },
        22821:
            /*!*********************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/data_source_adapter/m_data_source_adapter.js ***!
              \*********************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _data = __webpack_require__( /*! ../../../../core/utils/data */ 47617);
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _array_store = _interopRequireDefault(__webpack_require__( /*! ../../../../data/array_store */ 26562));
                var _array_utils = __webpack_require__( /*! ../../../../data/array_utils */ 60637);
                var _query = _interopRequireDefault(__webpack_require__( /*! ../../../../data/query */ 96687));
                var _store_helper = _interopRequireDefault(__webpack_require__( /*! ../../../../data/store_helper */ 99236));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.errors */ 96688));
                var _m_data_source_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../grids/grid_core/data_source_adapter/m_data_source_adapter */ 30945));
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../../../grids/grid_core/m_utils */ 60082));
                var _m_core = _interopRequireDefault(__webpack_require__( /*! ../m_core */ 12500));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const {
                    queryByOptions: queryByOptions
                } = _store_helper.default;
                const isFullBranchFilterMode = that => "fullBranch" === that.option("filterMode");
                let DataSourceAdapterTreeList = _m_data_source_adapter.default.inherit(function() {
                    const applySorting = (data, sort) => queryByOptions((0, _query.default)(data), {
                        sort: sort
                    }).toArray();
                    return {
                        _createKeyGetter() {
                            const keyExpr = this.getKeyExpr();
                            return (0, _data.compileGetter)(keyExpr)
                        },
                        _createKeySetter() {
                            const keyExpr = this.getKeyExpr();
                            if ((0, _type.isFunction)(keyExpr)) {
                                return keyExpr
                            }
                            return (0, _data.compileSetter)(keyExpr)
                        },
                        createParentIdGetter() {
                            return (0, _data.compileGetter)(this.option("parentIdExpr"))
                        },
                        createParentIdSetter() {
                            const parentIdExpr = this.option("parentIdExpr");
                            if ((0, _type.isFunction)(parentIdExpr)) {
                                return parentIdExpr
                            }
                            return (0, _data.compileSetter)(parentIdExpr)
                        },
                        _createItemsGetter() {
                            return (0, _data.compileGetter)(this.option("itemsExpr"))
                        },
                        _createHasItemsGetter() {
                            const hasItemsExpr = this.option("hasItemsExpr");
                            return hasItemsExpr && (0, _data.compileGetter)(hasItemsExpr)
                        },
                        _createHasItemsSetter() {
                            const hasItemsExpr = this.option("hasItemsExpr");
                            if ((0, _type.isFunction)(hasItemsExpr)) {
                                return hasItemsExpr
                            }
                            return hasItemsExpr && (0, _data.compileSetter)(hasItemsExpr)
                        },
                        _updateIndexByKeyObject(items) {
                            const that = this;
                            that._indexByKey = {};
                            (0, _iterator.each)(items, (index, item) => {
                                that._indexByKey[item.key] = index
                            })
                        },
                        _calculateHasItems(node, options) {
                            const that = this;
                            const {
                                parentIds: parentIds
                            } = options.storeLoadOptions;
                            let hasItems;
                            const isFullBranch = isFullBranchFilterMode(that);
                            if (that._hasItemsGetter && (parentIds || !options.storeLoadOptions.filter || isFullBranch)) {
                                hasItems = that._hasItemsGetter(node.data)
                            }
                            if (void 0 === hasItems) {
                                if (!that._isChildrenLoaded[node.key] && options.remoteOperations.filtering && (parentIds || isFullBranch)) {
                                    hasItems = true
                                } else if (options.loadOptions.filter && !options.remoteOperations.filtering && isFullBranch) {
                                    hasItems = node.children.length
                                } else {
                                    hasItems = node.hasChildren
                                }
                            }
                            return !!hasItems
                        },
                        _fillVisibleItemsByNodes(nodes, options, result) {
                            for (let i = 0; i < nodes.length; i++) {
                                if (nodes[i].visible) {
                                    result.push(nodes[i])
                                }
                                if ((this.isRowExpanded(nodes[i].key, options) || !nodes[i].visible) && nodes[i].hasChildren && nodes[i].children.length) {
                                    this._fillVisibleItemsByNodes(nodes[i].children, options, result)
                                }
                            }
                        },
                        _convertItemToNode(item, rootValue, nodeByKey) {
                            const key = this._keyGetter(item);
                            let parentId = this._parentIdGetter(item);
                            parentId = (0, _type.isDefined)(parentId) ? parentId : rootValue;
                            const parentNode = nodeByKey[parentId] = nodeByKey[parentId] || {
                                key: parentId,
                                children: []
                            };
                            const node = nodeByKey[key] = nodeByKey[key] || {
                                key: key,
                                children: []
                            };
                            node.data = item;
                            node.parent = parentNode;
                            return node
                        },
                        _createNodesByItems(items, visibleItems) {
                            const that = this;
                            const rootValue = that.option("rootValue");
                            const visibleByKey = {};
                            const nodeByKey = that._nodeByKey = {};
                            let i;
                            if (visibleItems) {
                                for (i = 0; i < visibleItems.length; i++) {
                                    visibleByKey[this._keyGetter(visibleItems[i])] = true
                                }
                            }
                            for (i = 0; i < items.length; i++) {
                                const node = that._convertItemToNode(items[i], rootValue, nodeByKey);
                                if (void 0 === node.key) {
                                    return
                                }
                                node.visible = !visibleItems || !!visibleByKey[node.key];
                                if (node.parent) {
                                    node.parent.children.push(node)
                                }
                            }
                            const rootNode = nodeByKey[rootValue] || {
                                key: rootValue,
                                children: []
                            };
                            rootNode.level = -1;
                            return rootNode
                        },
                        _convertDataToPlainStructure(data, parentId, result) {
                            let key;
                            if (this._itemsGetter && !data.isConverted) {
                                result = result || [];
                                for (let i = 0; i < data.length; i++) {
                                    const item = (0, _array_utils.createObjectWithChanges)(data[i]);
                                    key = this._keyGetter(item);
                                    if (void 0 === key) {
                                        key = result.length + 1;
                                        this._keySetter(item, key)
                                    }
                                    this._parentIdSetter(item, void 0 === parentId ? this.option("rootValue") : parentId);
                                    result.push(item);
                                    const childItems = this._itemsGetter(item);
                                    if (childItems && childItems.length) {
                                        this._convertDataToPlainStructure(childItems, key, result);
                                        const itemsExpr = this.option("itemsExpr");
                                        if (!(0, _type.isFunction)(itemsExpr)) {
                                            delete item[itemsExpr]
                                        }
                                    }
                                }
                                result.isConverted = true;
                                return result
                            }
                            return data
                        },
                        _createIdFilter(field, keys) {
                            const parentIdFilters = [];
                            for (let i = 0; i < keys.length; i++) {
                                parentIdFilters.push([field, "=", keys[i]])
                            }
                            return _m_utils.default.combineFilters(parentIdFilters, "or")
                        },
                        _customizeRemoteOperations(options, operationTypes) {
                            this.callBase.apply(this, arguments);
                            options.remoteOperations.paging = false;
                            let expandVisibleNodes = false;
                            if (this.option("autoExpandAll")) {
                                options.remoteOperations.sorting = false;
                                options.remoteOperations.filtering = false;
                                if ((!this._lastLoadOptions || operationTypes.filtering && !options.storeLoadOptions.filter) && !options.isCustomLoading) {
                                    expandVisibleNodes = true
                                }
                            }
                            if (!options.isCustomLoading) {
                                this._isReload = this._isReload || operationTypes.reload;
                                if (!options.cachedStoreData) {
                                    this._isChildrenLoaded = {};
                                    if (this._isReload) {
                                        this._nodeByKey = {}
                                    }
                                }
                                if (this.option("expandNodesOnFiltering") && (operationTypes.filtering || this._isReload && options.storeLoadOptions.filter)) {
                                    if (options.storeLoadOptions.filter) {
                                        expandVisibleNodes = true
                                    } else {
                                        options.collapseVisibleNodes = true
                                    }
                                }
                            }
                            options.expandVisibleNodes = expandVisibleNodes
                        },
                        _getParentIdsToLoad(parentIds) {
                            const parentIdsToLoad = [];
                            for (let i = 0; i < parentIds.length; i++) {
                                const node = this.getNodeByKey(parentIds[i]);
                                if (!node || node.hasChildren && !node.children.length) {
                                    parentIdsToLoad.push(parentIds[i])
                                }
                            }
                            return parentIdsToLoad
                        },
                        _handleCustomizeStoreLoadOptions(options) {
                            const rootValue = this.option("rootValue");
                            const parentIdExpr = this.option("parentIdExpr");
                            let {
                                parentIds: parentIds
                            } = options.storeLoadOptions;
                            if (parentIds) {
                                options.isCustomLoading = false
                            }
                            this.callBase.apply(this, arguments);
                            if (options.remoteOperations.filtering && !options.isCustomLoading) {
                                if (isFullBranchFilterMode(this) && options.cachedStoreData || !options.storeLoadOptions.filter) {
                                    const expandedRowKeys = options.collapseVisibleNodes ? [] : this.option("expandedRowKeys");
                                    parentIds = [rootValue].concat(expandedRowKeys).concat(parentIds || []);
                                    const parentIdsToLoad = options.data ? this._getParentIdsToLoad(parentIds) : parentIds;
                                    if (parentIdsToLoad.length) {
                                        options.cachedPagingData = void 0;
                                        options.data = void 0;
                                        options.mergeStoreLoadData = true;
                                        options.delay = this.option("loadingTimeout")
                                    }
                                    options.storeLoadOptions.parentIds = parentIdsToLoad;
                                    options.storeLoadOptions.filter = this._createIdFilter(parentIdExpr, parentIdsToLoad)
                                }
                            }
                        },
                        _generateInfoToLoad(data, needChildren) {
                            const that = this;
                            let key;
                            const keyMap = {};
                            const resultKeyMap = {};
                            const resultKeys = [];
                            const rootValue = that.option("rootValue");
                            let i;
                            for (i = 0; i < data.length; i++) {
                                key = needChildren ? that._parentIdGetter(data[i]) : that._keyGetter(data[i]);
                                keyMap[key] = true
                            }
                            for (i = 0; i < data.length; i++) {
                                key = needChildren ? that._keyGetter(data[i]) : that._parentIdGetter(data[i]);
                                const needToLoad = needChildren ? that.isRowExpanded(key) : key !== rootValue;
                                if (!keyMap[key] && !resultKeyMap[key] && needToLoad) {
                                    resultKeyMap[key] = true;
                                    resultKeys.push(key)
                                }
                            }
                            return {
                                keyMap: resultKeyMap,
                                keys: resultKeys
                            }
                        },
                        _loadParentsOrChildren(data, options, needChildren) {
                            var _a, _b, _c;
                            let filter;
                            let needLocalFiltering;
                            const {
                                keys: keys,
                                keyMap: keyMap
                            } = this._generateInfoToLoad(data, needChildren);
                            const d = new _deferred.Deferred;
                            const isRemoteFiltering = options.remoteOperations.filtering;
                            const maxFilterLengthInRequest = this.option("maxFilterLengthInRequest");
                            const sort = null !== (_b = null === (_a = options.storeLoadOptions) || void 0 === _a ? void 0 : _a.sort) && void 0 !== _b ? _b : null === (_c = options.loadOptions) || void 0 === _c ? void 0 : _c.sort;
                            let loadOptions = isRemoteFiltering ? options.storeLoadOptions : options.loadOptions;
                            const concatLoadedData = loadedData => {
                                if (isRemoteFiltering) {
                                    this._cachedStoreData = applySorting(this._cachedStoreData.concat(loadedData), sort)
                                }
                                return applySorting(data.concat(loadedData), sort)
                            };
                            if (!keys.length) {
                                return d.resolve(data)
                            }
                            let cachedNodes = keys.map(id => this.getNodeByKey(id)).filter(node => node && node.data);
                            if (cachedNodes.length === keys.length) {
                                if (needChildren) {
                                    cachedNodes = cachedNodes.reduce((result, node) => result.concat(node.children), [])
                                }
                                if (cachedNodes.length) {
                                    return this._loadParentsOrChildren(concatLoadedData(cachedNodes.map(node => node.data)), options, needChildren)
                                }
                            }
                            const keyExpr = needChildren ? this.option("parentIdExpr") : this.getKeyExpr();
                            filter = this._createIdFilter(keyExpr, keys);
                            const filterLength = encodeURI(JSON.stringify(filter)).length;
                            if (filterLength > maxFilterLengthInRequest) {
                                filter = itemData => keyMap[needChildren ? this._parentIdGetter(itemData) : this._keyGetter(itemData)];
                                needLocalFiltering = isRemoteFiltering
                            }
                            loadOptions = (0, _extend.extend)({}, loadOptions, {
                                filter: !needLocalFiltering ? filter : null
                            });
                            const store = options.fullData ? new _array_store.default(options.fullData) : this._dataSource.store();
                            this.loadFromStore(loadOptions, store).done(loadedData => {
                                if (loadedData.length) {
                                    if (needLocalFiltering) {
                                        loadedData = (0, _query.default)(loadedData).filter(filter).toArray()
                                    }
                                    this._loadParentsOrChildren(concatLoadedData(loadedData), options, needChildren).done(d.resolve).fail(d.reject)
                                } else {
                                    d.resolve(data)
                                }
                            }).fail(d.reject);
                            return d
                        },
                        _loadParents(data, options) {
                            return this._loadParentsOrChildren(data, options)
                        },
                        _loadChildrenIfNeed(data, options) {
                            if (isFullBranchFilterMode(this)) {
                                return this._loadParentsOrChildren(data, options, true)
                            }
                            return (0, _deferred.when)(data)
                        },
                        _updateHasItemsMap(options) {
                            const {
                                parentIds: parentIds
                            } = options.storeLoadOptions;
                            if (parentIds) {
                                for (let i = 0; i < parentIds.length; i++) {
                                    this._isChildrenLoaded[parentIds[i]] = true
                                }
                            }
                        },
                        _getKeyInfo: () => ({
                            key: () => "key",
                            keyOf: data => data.key
                        }),
                        _processChanges(changes) {
                            let processedChanges = [];
                            changes.forEach(change => {
                                if ("insert" === change.type) {
                                    processedChanges = processedChanges.concat(this._applyInsert(change))
                                } else if ("remove" === change.type) {
                                    processedChanges = processedChanges.concat(this._applyRemove(change))
                                } else if ("update" === change.type) {
                                    processedChanges.push({
                                        type: change.type,
                                        key: change.key,
                                        data: {
                                            data: change.data
                                        }
                                    })
                                }
                            });
                            return processedChanges
                        },
                        _handleChanging(e) {
                            this.callBase.apply(this, arguments);
                            e.postProcessChanges = changes => {
                                const changesToProcess = changes.filter(item => "update" === item.type);
                                return this._processChanges(changesToProcess)
                            }
                        },
                        _applyBatch(changes) {
                            const processedChanges = this._processChanges(changes);
                            this.callBase(processedChanges)
                        },
                        _setHasItems(node, value) {
                            const hasItemsSetter = this._hasItemsSetter;
                            node.hasChildren = value;
                            if (hasItemsSetter && node.data) {
                                hasItemsSetter(node.data, value)
                            }
                        },
                        _applyInsert(change) {
                            const that = this;
                            const baseChanges = [];
                            const parentId = that.parentKeyOf(change.data);
                            const parentNode = that.getNodeByKey(parentId);
                            if (parentNode) {
                                const rootValue = that.option("rootValue");
                                const node = that._convertItemToNode(change.data, rootValue, that._nodeByKey);
                                node.hasChildren = false;
                                node.level = parentNode.level + 1;
                                node.visible = true;
                                parentNode.children.push(node);
                                that._isChildrenLoaded[node.key] = true;
                                that._setHasItems(parentNode, true);
                                if ((!parentNode.parent || that.isRowExpanded(parentNode.key)) && void 0 !== change.index) {
                                    let index = that.items().indexOf(parentNode) + 1;
                                    index += change.index >= 0 ? Math.min(change.index, parentNode.children.length) : parentNode.children.length;
                                    baseChanges.push({
                                        type: change.type,
                                        data: node,
                                        index: index
                                    })
                                }
                            }
                            return baseChanges
                        },
                        _needToCopyDataObject: () => false,
                        _applyRemove(change) {
                            let baseChanges = [];
                            const node = this.getNodeByKey(change.key);
                            const parentNode = node && node.parent;
                            if (parentNode) {
                                const index = parentNode.children.indexOf(node);
                                if (index >= 0) {
                                    parentNode.children.splice(index, 1);
                                    if (!parentNode.children.length) {
                                        this._setHasItems(parentNode, false)
                                    }
                                    baseChanges.push(change);
                                    baseChanges = baseChanges.concat(this.getChildNodeKeys(change.key).map(key => ({
                                        type: change.type,
                                        key: key
                                    })))
                                }
                            }
                            return baseChanges
                        },
                        _handleDataLoaded(options) {
                            const data = options.data = this._convertDataToPlainStructure(options.data);
                            if (!options.remoteOperations.filtering && options.loadOptions.filter) {
                                options.fullData = queryByOptions((0, _query.default)(options.data), {
                                    sort: options.loadOptions && options.loadOptions.sort
                                }).toArray()
                            }
                            this._updateHasItemsMap(options);
                            this.callBase(options);
                            if (data.isConverted && this._cachedStoreData) {
                                this._cachedStoreData.isConverted = true
                            }
                        },
                        _fillNodes(nodes, options, expandedRowKeys, level) {
                            const isFullBranch = isFullBranchFilterMode(this);
                            level = level || 0;
                            for (let i = 0; i < nodes.length; i++) {
                                const node = nodes[i];
                                let needToExpand = false;
                                this._fillNodes(nodes[i].children, options, expandedRowKeys, level + 1);
                                node.level = level;
                                node.hasChildren = this._calculateHasItems(node, options);
                                if (node.visible && node.hasChildren) {
                                    if (isFullBranch) {
                                        if (node.children.filter(node => node.visible).length) {
                                            needToExpand = true
                                        } else if (node.children.length) {
                                            _m_core.default.foreachNodes(node.children, node => {
                                                node.visible = true
                                            })
                                        }
                                    } else {
                                        needToExpand = true
                                    }
                                    if (options.expandVisibleNodes && needToExpand) {
                                        expandedRowKeys.push(node.key)
                                    }
                                }
                                if (node.visible || node.hasChildren) {
                                    node.parent.hasChildren = true
                                }
                            }
                        },
                        _processTreeStructure(options, visibleItems) {
                            let {
                                data: data
                            } = options;
                            const {
                                parentIds: parentIds
                            } = options.storeLoadOptions;
                            const expandedRowKeys = [];
                            if (parentIds && parentIds.length || this._isReload) {
                                if (options.fullData && options.fullData.length > options.data.length) {
                                    data = options.fullData;
                                    visibleItems = visibleItems || options.data
                                }
                                this._rootNode = this._createNodesByItems(data, visibleItems);
                                if (!this._rootNode) {
                                    options.data = (new _deferred.Deferred).reject(_ui.default.Error("E1046", this.getKeyExpr()));
                                    return
                                }
                                this._fillNodes(this._rootNode.children, options, expandedRowKeys);
                                this._isNodesInitializing = true;
                                if (options.collapseVisibleNodes || expandedRowKeys.length) {
                                    this.option("expandedRowKeys", expandedRowKeys)
                                }
                                this._isReload = false;
                                this.executeAction("onNodesInitialized", {
                                    root: this._rootNode
                                });
                                this._isNodesInitializing = false
                            }
                            const resultData = [];
                            this._fillVisibleItemsByNodes(this._rootNode.children, options, resultData);
                            options.data = resultData;
                            this._totalItemsCount = resultData.length
                        },
                        _handleDataLoadedCore(options) {
                            const that = this;
                            const {
                                data: data
                            } = options;
                            const {
                                callBase: callBase
                            } = that;
                            const filter = options.storeLoadOptions.filter || options.loadOptions.filter;
                            const filterMode = that.option("filterMode");
                            let visibleItems;
                            const {
                                parentIds: parentIds
                            } = options.storeLoadOptions;
                            const needLoadParents = filter && (!parentIds || !parentIds.length) && "standard" !== filterMode;
                            if (!options.isCustomLoading) {
                                if (needLoadParents) {
                                    const d = options.data = new _deferred.Deferred;
                                    if ("matchOnly" === filterMode) {
                                        visibleItems = data
                                    }
                                    return that._loadParents(data, options).done(data => {
                                        that._loadChildrenIfNeed(data, options).done(data => {
                                            options.data = data;
                                            that._processTreeStructure(options, visibleItems);
                                            callBase.call(that, options);
                                            d.resolve(options.data)
                                        })
                                    }).fail(d.reject)
                                }
                                that._processTreeStructure(options)
                            }
                            that.callBase(options)
                        },
                        _handlePush(_ref) {
                            let {
                                changes: changes
                            } = _ref;
                            const reshapeOnPush = this._dataSource._reshapeOnPush;
                            const isNeedReshape = reshapeOnPush && !!changes.length;
                            if (isNeedReshape) {
                                this._isReload = true
                            }
                            changes.forEach(change => {
                                var _a;
                                null !== (_a = change.index) && void 0 !== _a ? _a : change.index = -1
                            });
                            this.callBase.apply(this, arguments)
                        },
                        init(dataSource, remoteOperations) {
                            this.callBase.apply(this, arguments);
                            const dataStructure = this.option("dataStructure");
                            this._keyGetter = this._createKeyGetter();
                            this._parentIdGetter = this.createParentIdGetter();
                            this._hasItemsGetter = this._createHasItemsGetter();
                            this._hasItemsSetter = this._createHasItemsSetter();
                            if ("tree" === dataStructure) {
                                this._itemsGetter = this._createItemsGetter();
                                this._keySetter = this._createKeySetter();
                                this._parentIdSetter = this.createParentIdSetter()
                            }
                            this._nodeByKey = {};
                            this._isChildrenLoaded = {};
                            this._totalItemsCount = 0;
                            this.createAction("onNodesInitialized")
                        },
                        getKeyExpr() {
                            const store = this.store();
                            const key = store && store.key();
                            const keyExpr = this.option("keyExpr");
                            if ((0, _type.isDefined)(key) && (0, _type.isDefined)(keyExpr)) {
                                if (!(0, _common.equalByValue)(key, keyExpr)) {
                                    throw _ui.default.Error("E1044")
                                }
                            }
                            return key || keyExpr || "id"
                        },
                        keyOf(data) {
                            return this._keyGetter && this._keyGetter(data)
                        },
                        parentKeyOf(data) {
                            return this._parentIdGetter && this._parentIdGetter(data)
                        },
                        getRootNode() {
                            return this._rootNode
                        },
                        totalItemsCount() {
                            return this._totalItemsCount + this._totalCountCorrection
                        },
                        isRowExpanded(key, cache) {
                            if (cache) {
                                let {
                                    isExpandedByKey: isExpandedByKey
                                } = cache;
                                if (!isExpandedByKey) {
                                    isExpandedByKey = cache.isExpandedByKey = {};
                                    this.option("expandedRowKeys").forEach(key => {
                                        isExpandedByKey[key] = true
                                    })
                                }
                                return !!isExpandedByKey[key]
                            }
                            const indexExpandedNodeKey = _m_utils.default.getIndexByKey(key, this.option("expandedRowKeys"), null);
                            return indexExpandedNodeKey >= 0
                        },
                        _changeRowExpandCore(key) {
                            const expandedRowKeys = this.option("expandedRowKeys").slice();
                            const indexExpandedNodeKey = _m_utils.default.getIndexByKey(key, expandedRowKeys, null);
                            if (indexExpandedNodeKey < 0) {
                                expandedRowKeys.push(key)
                            } else {
                                expandedRowKeys.splice(indexExpandedNodeKey, 1)
                            }
                            this.option("expandedRowKeys", expandedRowKeys)
                        },
                        changeRowExpand(key) {
                            this._changeRowExpandCore(key);
                            return this._isNodesInitializing ? (new _deferred.Deferred).resolve() : this.load()
                        },
                        getNodeByKey(key) {
                            if (this._nodeByKey) {
                                return this._nodeByKey[key]
                            }
                        },
                        getNodeLeafKeys() {
                            const that = this;
                            const result = [];
                            const keys = that._rootNode ? [that._rootNode.key] : [];
                            keys.forEach(key => {
                                const node = that.getNodeByKey(key);
                                node && _m_core.default.foreachNodes([node], childNode => {
                                    !childNode.children.length && result.push(childNode.key)
                                })
                            });
                            return result
                        },
                        getChildNodeKeys(parentKey) {
                            const node = this.getNodeByKey(parentKey);
                            const childrenKeys = [];
                            node && _m_core.default.foreachNodes(node.children, childNode => {
                                childrenKeys.push(childNode.key)
                            });
                            return childrenKeys
                        },
                        loadDescendants(keys, childrenOnly) {
                            const that = this;
                            const d = new _deferred.Deferred;
                            const remoteOperations = that.remoteOperations();
                            if ((0, _type.isDefined)(keys)) {
                                keys = Array.isArray(keys) ? keys : [keys]
                            } else {
                                keys = that.getNodeLeafKeys()
                            }
                            if (!remoteOperations.filtering || !keys.length) {
                                return d.resolve()
                            }
                            const loadOptions = that._dataSource._createStoreLoadOptions();
                            loadOptions.parentIds = keys;
                            that.load(loadOptions).done(() => {
                                if (!childrenOnly) {
                                    const childKeys = function(that, keys) {
                                        const childKeys = [];
                                        keys.forEach(key => {
                                            const node = that.getNodeByKey(key);
                                            node && node.children.forEach(child => {
                                                childKeys.push(child.key)
                                            })
                                        });
                                        return childKeys
                                    }(that, keys);
                                    if (childKeys.length) {
                                        that.loadDescendants(childKeys, childrenOnly).done(d.resolve).fail(d.reject);
                                        return
                                    }
                                }
                                d.resolve()
                            }).fail(d.reject);
                            return d.promise()
                        },
                        forEachNode() {
                            let nodes = [];
                            let callback;
                            if (1 === arguments.length) {
                                callback = arguments[0];
                                const rootNode = this.getRootNode();
                                nodes = rootNode && rootNode.children || []
                            } else if (2 === arguments.length) {
                                callback = arguments[1];
                                nodes = arguments[0];
                                nodes = Array.isArray(nodes) ? nodes : [nodes]
                            }
                            _m_core.default.foreachNodes(nodes, callback)
                        }
                    }
                }());
                var _default = {
                    extend(extender) {
                        DataSourceAdapterTreeList = DataSourceAdapterTreeList.inherit(extender)
                    },
                    create: component => new DataSourceAdapterTreeList(component)
                };
                exports.default = _default
            },
        17629:
            /*!*********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/editing/m_editing.js ***!
              \*********************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ../module_not_extended/editor_factory */ 29900);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/message */ 28109));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/widget/ui.errors */ 96688));
                var _m_editing = __webpack_require__( /*! ../../../grids/grid_core/editing/m_editing */ 22324);
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../../../grids/grid_core/m_utils */ 60082));
                var _m_core = _interopRequireDefault(__webpack_require__( /*! ../m_core */ 12500));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const EditingController = _m_editing.editingModule.controllers.editing.inherit({
                    _generateNewItem(key) {
                        const item = this.callBase(key);
                        item.data = {
                            key: key
                        };
                        item.children = [];
                        item.level = 0;
                        item.parentKey = this.option("rootValue");
                        return item
                    },
                    _isProcessedItem: () => true,
                    _setInsertAfterOrBeforeKey(change, parentKey) {
                        if (void 0 !== parentKey && parentKey !== this.option("rootValue")) {
                            change.insertAfterKey = parentKey
                        } else {
                            this.callBase.apply(this, arguments)
                        }
                    },
                    _getLoadedRowIndex(items, change) {
                        const dataController = this.getController("data");
                        const dataSourceAdapter = dataController.dataSource();
                        const parentKey = null === dataSourceAdapter || void 0 === dataSourceAdapter ? void 0 : dataSourceAdapter.parentKeyOf(change.data);
                        if (void 0 !== parentKey && parentKey !== this.option("rootValue")) {
                            const rowIndex = _m_utils.default.getIndexByKey(parentKey, items);
                            if (rowIndex >= 0 && this._dataController.isRowExpanded(parentKey)) {
                                return rowIndex + 1
                            }
                            return -1
                        }
                        return this.callBase.apply(this, arguments)
                    },
                    _isEditColumnVisible() {
                        const result = this.callBase.apply(this, arguments);
                        const editingOptions = this.option("editing");
                        return result || editingOptions.allowAdding
                    },
                    _isDefaultButtonVisible(button, options) {
                        const result = this.callBase.apply(this, arguments);
                        const {
                            row: row
                        } = options;
                        if ("add" === button.name) {
                            return this.allowAdding(options) && row.rowIndex !== this._getVisibleEditRowIndex() && !(row.removed || row.isNewRow)
                        }
                        return result
                    },
                    _getEditingButtons(options) {
                        const buttons = this.callBase.apply(this, arguments);
                        if (!options.column.buttons) {
                            buttons.unshift(this._getButtonConfig("add", options))
                        }
                        return buttons
                    },
                    _beforeSaveEditData(change) {
                        const dataController = this._dataController;
                        const result = this.callBase.apply(this, arguments);
                        if (change && "insert" !== change.type) {
                            const store = null === dataController || void 0 === dataController ? void 0 : dataController.store();
                            const key = null === store || void 0 === store ? void 0 : store.key();
                            if (!(0, _type.isDefined)(key)) {
                                throw _ui.default.Error("E1045")
                            }
                        }
                        return result
                    },
                    addRowByRowIndex(rowIndex) {
                        const dataController = this.getController("data");
                        const row = dataController.getVisibleRows()[rowIndex];
                        return this.addRow(row ? row.key : void 0)
                    },
                    addRow(key) {
                        if (void 0 === key) {
                            key = this.option("rootValue")
                        }
                        return this.callBase.call(this, key)
                    },
                    _addRowCore(data, parentKey, oldEditRowIndex) {
                        const {
                            callBase: callBase
                        } = this;
                        const rootValue = this.option("rootValue");
                        const dataController = this.getController("data");
                        const dataSourceAdapter = dataController.dataSource();
                        const parentKeyGetter = dataSourceAdapter.createParentIdGetter();
                        parentKey = parentKeyGetter(data);
                        if (void 0 !== parentKey && parentKey !== rootValue && !dataController.isRowExpanded(parentKey)) {
                            const deferred = new _deferred.Deferred;
                            dataController.expandRow(parentKey).done(() => {
                                setTimeout(() => {
                                    callBase.call(this, data, parentKey, oldEditRowIndex).done(deferred.resolve).fail(deferred.reject)
                                })
                            }).fail(deferred.reject);
                            return deferred.promise()
                        }
                        return callBase.call(this, data, parentKey, oldEditRowIndex)
                    },
                    _initNewRow(options, parentKey) {
                        const dataController = this.getController("data");
                        const dataSourceAdapter = dataController.dataSource();
                        const parentIdSetter = dataSourceAdapter.createParentIdSetter();
                        parentIdSetter(options.data, parentKey);
                        return this.callBase.apply(this, arguments)
                    },
                    allowAdding(options) {
                        return this._allowEditAction("allowAdding", options)
                    },
                    _needToCloseEditableCell($targetElement) {
                        return this.callBase.apply(this, arguments) || $targetElement.closest(".".concat("dx-treelist-icon-container")).length && this.isEditing()
                    },
                    getButtonLocalizationNames() {
                        const names = this.callBase.apply(this);
                        names.add = "dxTreeList-editingAddRowToNode";
                        return names
                    }
                });
                const originalRowClick = _m_editing.editingModule.extenders.views.rowsView._rowClick;
                const originalRowDblClick = _m_editing.editingModule.extenders.views.rowsView._rowDblClick;
                const validateClick = function(e) {
                    const $targetElement = (0, _renderer.default)(e.event.target);
                    const originalClickHandler = "dxdblclick" === e.event.type ? originalRowDblClick : originalRowClick;
                    if ($targetElement.closest(".".concat("dx-select-checkbox")).length) {
                        return false
                    }
                    return !needToCallOriginalClickHandler.call(this, e, originalClickHandler)
                };

                function needToCallOriginalClickHandler(e, originalClickHandler) {
                    const $targetElement = (0, _renderer.default)(e.event.target);
                    if (!$targetElement.closest(".".concat("dx-treelist-icon-container")).length) {
                        originalClickHandler.call(this, e);
                        return true
                    }
                    return false
                }
                const RowsViewExtender = (0, _extend.extend)({}, _m_editing.editingModule.extenders.views.rowsView, {
                    _renderCellCommandContent($container, options) {
                        const editingController = this._editingController;
                        const isEditRow = options.row && editingController.isEditRow(options.row.rowIndex);
                        const isEditing = options.isEditing || isEditRow;
                        if (!isEditing) {
                            return this.callBase.apply(this, arguments)
                        }
                        return false
                    },
                    _rowClick(e) {
                        if (validateClick.call(this, e)) {
                            this.callBase.apply(this, arguments)
                        }
                    },
                    _rowDblClick(e) {
                        if (validateClick.call(this, e)) {
                            this.callBase.apply(this, arguments)
                        }
                    }
                });
                _m_core.default.registerModule("editing", {
                    defaultOptions: () => (0, _extend.extend)(true, _m_editing.editingModule.defaultOptions(), {
                        editing: {
                            texts: {
                                addRowToNode: _message.default.format("dxTreeList-editingAddRowToNode")
                            }
                        }
                    }),
                    controllers: {
                        editing: EditingController
                    },
                    extenders: {
                        controllers: (0, _extend.extend)(true, {}, _m_editing.editingModule.extenders.controllers, {
                            data: {
                                changeRowExpand() {
                                    this._editingController.refresh();
                                    return this.callBase.apply(this, arguments)
                                }
                            }
                        }),
                        views: {
                            rowsView: RowsViewExtender,
                            headerPanel: _m_editing.editingModule.extenders.views.headerPanel
                        }
                    }
                })
            },
        79873:
            /*!************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/m_columns_controller.js ***!
              \************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.ColumnsController = void 0;
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _m_columns_controller = __webpack_require__( /*! ../../grids/grid_core/columns_controller/m_columns_controller */ 10279);
                var _m_core = (obj = __webpack_require__( /*! ./m_core */ 12500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const ColumnsController = _m_columns_controller.columnsControllerModule.controllers.columns.inherit({
                    _getFirstItems(dataSourceAdapter) {
                        return this.callBase(dataSourceAdapter).map(node => node.data)
                    },
                    getFirstDataColumnIndex() {
                        const visibleColumns = this.getVisibleColumns();
                        const visibleColumnsLength = visibleColumns.length;
                        let firstDataColumnIndex = 0;
                        for (let i = 0; i <= visibleColumnsLength - 1; i++) {
                            if (!(0, _type.isDefined)(visibleColumns[i].command)) {
                                firstDataColumnIndex = visibleColumns[i].index;
                                break
                            }
                        }
                        return firstDataColumnIndex
                    }
                });
                exports.ColumnsController = ColumnsController;
                _m_core.default.registerModule("columns", {
                    defaultOptions: _m_columns_controller.columnsControllerModule.defaultOptions,
                    controllers: {
                        columns: ColumnsController
                    }
                })
            },
        12500:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/m_core.js ***!
              \**********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _m_modules = (obj = __webpack_require__( /*! ../../grids/grid_core/m_modules */ 15943), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = (0, _extend.extend)({}, _m_modules.default, {
                    modules: [],
                    foreachNodes(nodes, callBack, ignoreHasChildren) {
                        for (let i = 0; i < nodes.length; i++) {
                            if (false !== callBack(nodes[i]) && (ignoreHasChildren || nodes[i].hasChildren) && nodes[i].children.length) {
                                this.foreachNodes(nodes[i].children, callBack, ignoreHasChildren)
                            }
                        }
                    }
                });
                exports.default = _default
            },
        50226:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/m_focus.js ***!
              \***********************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _m_focus = __webpack_require__( /*! ../../grids/grid_core/focus/m_focus */ 5325);
                var _m_core = (obj = __webpack_require__( /*! ./m_core */ 12500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("focus", (0, _extend.extend)(true, {}, _m_focus.focusModule, {
                    extenders: {
                        controllers: {
                            data: {
                                changeRowExpand(key) {
                                    if (this.option("focusedRowEnabled") && this.isRowExpanded(key)) {
                                        if (this._isFocusedRowInside(key)) {
                                            this.option("focusedRowKey", key)
                                        }
                                    }
                                    return this.callBase.apply(this, arguments)
                                },
                                _isFocusedRowInside(parentKey) {
                                    const focusedRowKey = this.option("focusedRowKey");
                                    const rowIndex = this.getRowIndexByKey(focusedRowKey);
                                    const focusedRow = rowIndex >= 0 && this.getVisibleRows()[rowIndex];
                                    let parent = focusedRow && focusedRow.node.parent;
                                    while (parent) {
                                        if (parent.key === parentKey) {
                                            return true
                                        }
                                        parent = parent.parent
                                    }
                                    return false
                                },
                                getParentKey(key) {
                                    const dataSource = this._dataSource;
                                    const node = this.getNodeByKey(key);
                                    const d = new _deferred.Deferred;
                                    if (node) {
                                        d.resolve(node.parent ? node.parent.key : void 0)
                                    } else {
                                        dataSource.load({
                                            filter: [dataSource.getKeyExpr(), "=", key]
                                        }).done(items => {
                                            const parentData = items[0];
                                            if (parentData) {
                                                d.resolve(dataSource.parentKeyOf(parentData))
                                            } else {
                                                d.resolve()
                                            }
                                        }).fail(d.reject)
                                    }
                                    return d.promise()
                                },
                                expandAscendants(key) {
                                    const that = this;
                                    const dataSource = that._dataSource;
                                    const d = new _deferred.Deferred;
                                    that.getParentKey(key).done(parentKey => {
                                        if (dataSource && void 0 !== parentKey && parentKey !== that.option("rootValue")) {
                                            dataSource._isNodesInitializing = true;
                                            that.expandRow(parentKey);
                                            dataSource._isNodesInitializing = false;
                                            that.expandAscendants(parentKey).done(d.resolve).fail(d.reject)
                                        } else {
                                            d.resolve()
                                        }
                                    }).fail(d.reject);
                                    return d.promise()
                                },
                                getPageIndexByKey(key) {
                                    const that = this;
                                    const dataSource = that._dataSource;
                                    const d = new _deferred.Deferred;
                                    that.expandAscendants(key).done(() => {
                                        dataSource.load({
                                            parentIds: []
                                        }).done(nodes => {
                                            const offset = function(items, callback) {
                                                let result = -1;
                                                items.forEach((node, index) => {
                                                    if (callback(node)) {
                                                        result = index
                                                    }
                                                });
                                                return result
                                            }(nodes, node => that.keyOf(node.data) === key);
                                            let pageIndex = -1;
                                            if (offset >= 0) {
                                                pageIndex = Math.floor(offset / that.pageSize())
                                            }
                                            d.resolve(pageIndex)
                                        }).fail(d.reject)
                                    }).fail(d.reject);
                                    return d.promise()
                                }
                            }
                        }
                    }
                }))
            },
        94907:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/m_grid_view.js ***!
              \***************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_grid_view = __webpack_require__( /*! ../../grids/grid_core/views/m_grid_view */ 28016);
                var _m_core = (obj = __webpack_require__( /*! ./m_core */ 12500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const ResizingController = _m_grid_view.gridViewModule.controllers.resizing.inherit({
                    _getWidgetAriaLabel: () => "dxTreeList-ariaTreeList",
                    _toggleBestFitMode(isBestFit) {
                        this.callBase(isBestFit);
                        const $rowsTable = this._rowsView.getTableElement();
                        $rowsTable.find(".dx-treelist-cell-expandable").toggleClass(this.addWidgetPrefix("best-fit"), isBestFit)
                    }
                });
                _m_core.default.registerModule("gridView", {
                    defaultOptions: _m_grid_view.gridViewModule.defaultOptions,
                    controllers: _extends(_extends({}, _m_grid_view.gridViewModule.controllers), {
                        resizing: ResizingController
                    }),
                    views: _m_grid_view.gridViewModule.views
                })
            },
        38886:
            /*!*************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/m_keyboard_navigation.js ***!
              \*************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _m_keyboard_navigation = __webpack_require__( /*! ../../grids/grid_core/keyboard_navigation/m_keyboard_navigation */ 31822);
                var _m_core = (obj = __webpack_require__( /*! ./m_core */ 12500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("keyboardNavigation", (0, _extend.extend)(true, {}, _m_keyboard_navigation.keyboardNavigationModule, {
                    extenders: {
                        controllers: {
                            keyboardNavigation: {
                                _leftRightKeysHandler(eventArgs, isEditing) {
                                    const rowIndex = this.getVisibleRowIndex();
                                    const dataController = this._dataController;
                                    if (eventArgs.ctrl) {
                                        const directionCode = this._getDirectionCodeByKey(eventArgs.keyName);
                                        const key = dataController.getKeyByRowIndex(rowIndex);
                                        if ("nextInRow" === directionCode) {
                                            dataController.expandRow(key)
                                        } else {
                                            dataController.collapseRow(key)
                                        }
                                    } else {
                                        return this.callBase.apply(this, arguments)
                                    }
                                }
                            }
                        }
                    }
                }))
            },
        31580:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/m_master_detail.js ***!
              \*******************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _m_master_detail = __webpack_require__( /*! ../../grids/grid_core/master_detail/m_master_detail */ 82802);
                var _m_core = (obj = __webpack_require__( /*! ./m_core */ 12500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("masterDetail", (0, _extend.extend)(true, {}, _m_master_detail.masterDetailModule, {
                    extenders: {
                        controllers: {
                            data: {
                                isRowExpanded() {
                                    return this.callBase.apply(this, arguments)
                                },
                                _processItems() {
                                    return this.callBase.apply(this, arguments)
                                },
                                _processDataItem() {
                                    return this.callBase.apply(this, arguments)
                                }
                            }
                        }
                    }
                }))
            },
        13477:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/m_state_storing.js ***!
              \*******************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _m_state_storing = __webpack_require__( /*! ../../grids/grid_core/state_storing/m_state_storing */ 12440);
                var _m_core = (obj = __webpack_require__( /*! ./m_core */ 12500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const origApplyState = _m_state_storing.stateStoringModule.extenders.controllers.stateStoring.applyState;
                _m_core.default.registerModule("stateStoring", (0, _extend.extend)(true, {}, _m_state_storing.stateStoringModule, {
                    extenders: {
                        controllers: {
                            stateStoring: {
                                applyState(state) {
                                    origApplyState.apply(this, arguments);
                                    this.option("expandedRowKeys", state.expandedRowKeys ? state.expandedRowKeys.slice() : [])
                                }
                            },
                            data: {
                                getUserState() {
                                    const state = this.callBase.apply(this, arguments);
                                    if (!this.option("autoExpandAll")) {
                                        state.expandedRowKeys = this.option("expandedRowKeys")
                                    }
                                    return state
                                }
                            }
                        }
                    }
                }))
            },
        99751:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/m_validating.js ***!
              \****************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _m_validating = __webpack_require__( /*! ../../grids/grid_core/validating/m_validating */ 39830);
                var _m_core = (obj = __webpack_require__( /*! ./m_core */ 12500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const EditingControllerExtender = (0, _extend.extend)({}, _m_validating.validatingModule.extenders.controllers.editing);
                delete EditingControllerExtender.processItems;
                delete EditingControllerExtender.processDataItem;
                _m_core.default.registerModule("validating", {
                    defaultOptions: _m_validating.validatingModule.defaultOptions,
                    controllers: _m_validating.validatingModule.controllers,
                    extenders: {
                        controllers: {
                            editing: EditingControllerExtender,
                            editorFactory: _m_validating.validatingModule.extenders.controllers.editorFactory
                        },
                        views: _m_validating.validatingModule.extenders.views
                    }
                })
            },
        26058:
            /*!***********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/m_virtual_scrolling.js ***!
              \***********************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _m_virtual_scrolling = __webpack_require__( /*! ../../grids/grid_core/virtual_scrolling/m_virtual_scrolling */ 92018);
                var _m_data_source_adapter = _interopRequireDefault(__webpack_require__( /*! ./data_source_adapter/m_data_source_adapter */ 22821));
                var _m_core = _interopRequireDefault(__webpack_require__( /*! ./m_core */ 12500));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const oldDefaultOptions = _m_virtual_scrolling.virtualScrollingModule.defaultOptions;
                const originalDataControllerExtender = _m_virtual_scrolling.virtualScrollingModule.extenders.controllers.data;
                const originalDataSourceAdapterExtender = _m_virtual_scrolling.virtualScrollingModule.extenders.dataSourceAdapter;
                _m_virtual_scrolling.virtualScrollingModule.extenders.controllers.data = (0, _extend.extend)({}, originalDataControllerExtender, {
                    _loadOnOptionChange() {
                        const virtualScrollController = this._dataSource && this._dataSource._virtualScrollController;
                        virtualScrollController && virtualScrollController.reset();
                        this.callBase()
                    }
                });
                _m_virtual_scrolling.virtualScrollingModule.extenders.dataSourceAdapter = (0, _extend.extend)({}, originalDataSourceAdapterExtender, {
                    changeRowExpand() {
                        return this.callBase.apply(this, arguments).done(() => {
                            const viewportItemIndex = this.getViewportItemIndex();
                            viewportItemIndex >= 0 && this.setViewportItemIndex(viewportItemIndex)
                        })
                    }
                });
                _m_core.default.registerModule("virtualScrolling", (0, _extend.extend)({}, _m_virtual_scrolling.virtualScrollingModule, {
                    defaultOptions: () => (0, _extend.extend)(true, oldDefaultOptions(), {
                        scrolling: {
                            mode: "virtual"
                        }
                    })
                }));
                _m_data_source_adapter.default.extend(_m_virtual_scrolling.virtualScrollingModule.extenders.dataSourceAdapter)
            },
        1977:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/m_widget.js ***!
              \************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _m_widget_base = (obj = __webpack_require__( /*! ./m_widget_base */ 14126), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                __webpack_require__( /*! ./m_state_storing */ 13477);
                __webpack_require__( /*! ./module_not_extended/column_chooser */ 92026);
                __webpack_require__( /*! ./m_master_detail */ 31580);
                __webpack_require__( /*! ./editing/m_editing */ 17629);
                __webpack_require__( /*! ./module_not_extended/editing_row_based */ 64757);
                __webpack_require__( /*! ./module_not_extended/editing_form_based */ 45998);
                __webpack_require__( /*! ./module_not_extended/editing_cell_based */ 7446);
                __webpack_require__( /*! ./m_validating */ 99751);
                __webpack_require__( /*! ./m_virtual_scrolling */ 26058);
                __webpack_require__( /*! ./module_not_extended/filter_row */ 98439);
                __webpack_require__( /*! ./module_not_extended/header_filter */ 26763);
                __webpack_require__( /*! ./module_not_extended/filter_sync */ 1440);
                __webpack_require__( /*! ./module_not_extended/filter_builder */ 49248);
                __webpack_require__( /*! ./module_not_extended/filter_panel */ 86737);
                __webpack_require__( /*! ./module_not_extended/pager */ 84214);
                __webpack_require__( /*! ./module_not_extended/columns_resizing_reordering */ 43468);
                __webpack_require__( /*! ./module_not_extended/column_fixing */ 50776);
                __webpack_require__( /*! ./module_not_extended/adaptivity */ 43301);
                __webpack_require__( /*! ./selection/m_selection */ 91445);
                __webpack_require__( /*! ./module_not_extended/search */ 1272);
                __webpack_require__( /*! ./m_keyboard_navigation */ 38886);
                __webpack_require__( /*! ./module_not_extended/virtual_columns */ 75188);
                __webpack_require__( /*! ./m_focus */ 50226);
                __webpack_require__( /*! ./module_not_extended/row_dragging */ 31937);
                var _default = _m_widget_base.default;
                exports.default = _default
            },
        14126:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/m_widget_base.js ***!
              \*****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                __webpack_require__( /*! ./module_not_extended/column_headers */ 25052);
                __webpack_require__( /*! ./m_columns_controller */ 79873);
                __webpack_require__( /*! ./data_controller/m_data_controller */ 26686);
                __webpack_require__( /*! ./module_not_extended/sorting */ 7138);
                __webpack_require__( /*! ./rows/m_rows */ 31397);
                __webpack_require__( /*! ./module_not_extended/context_menu */ 87454);
                __webpack_require__( /*! ./module_not_extended/error_handling */ 84973);
                __webpack_require__( /*! ./m_grid_view */ 94907);
                __webpack_require__( /*! ./module_not_extended/header_panel */ 37980);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 99393));
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 20576);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _themes = __webpack_require__( /*! ../../../ui/themes */ 75811);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.widget */ 14390));
                var _m_utils = _interopRequireDefault(__webpack_require__( /*! ../../grids/grid_core/m_utils */ 60082));
                var _m_core = _interopRequireDefault(__webpack_require__( /*! ./m_core */ 12500));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const {
                    callModuleItemsMethod: callModuleItemsMethod
                } = _m_core.default;
                _m_core.default.registerModulesOrder(["stateStoring", "columns", "selection", "editorFactory", "columnChooser", "editingRowBased", "editingFormBased", "editingCellBased", "editing", "grouping", "masterDetail", "validating", "adaptivity", "data", "virtualScrolling", "columnHeaders", "filterRow", "headerPanel", "headerFilter", "sorting", "search", "rows", "pager", "columnsResizingReordering", "contextMenu", "keyboardNavigation", "errorHandling", "summary", "columnFixing", "export", "gridView"]);
                const TreeList = _ui.default.inherit({
                    _activeStateUnit: ".dx-row",
                    _getDefaultOptions() {
                        const result = this.callBase();
                        (0, _iterator.each)(_m_core.default.modules, (function() {
                            if ((0, _type.isFunction)(this.defaultOptions)) {
                                (0, _extend.extend)(true, result, this.defaultOptions())
                            }
                        }));
                        return result
                    },
                    _setDeprecatedOptions() {
                        this.callBase();
                        (0, _extend.extend)(this._deprecatedOptions, {
                            "columnChooser.allowSearch": {
                                since: "23.1",
                                message: 'Use the "columnChooser.search.enabled" option instead'
                            },
                            "columnChooser.searchTimeout": {
                                since: "23.1",
                                message: 'Use the "columnChooser.search.timeout" option instead'
                            }
                        })
                    },
                    _defaultOptionsRules() {
                        return this.callBase().concat([{
                            device: () => (0, _themes.isMaterialBased)(),
                            options: {
                                showRowLines: true,
                                showColumnLines: false,
                                headerFilter: {
                                    height: 315
                                },
                                editing: {
                                    useIcons: true
                                }
                            }
                        }])
                    },
                    _init() {
                        this.callBase();
                        if (!this.option("_disableDeprecationWarnings")) {
                            _m_utils.default.logHeaderFilterDeprecatedWarningIfNeed(this)
                        }
                        _m_core.default.processModules(this, _m_core.default);
                        callModuleItemsMethod(this, "init")
                    },
                    _clean: _common.noop,
                    _optionChanged(args) {
                        const that = this;
                        callModuleItemsMethod(that, "optionChanged", [args]);
                        if (!args.handled) {
                            that.callBase(args)
                        }
                    },
                    _dimensionChanged() {
                        this.updateDimensions(true)
                    },
                    _visibilityChanged(visible) {
                        if (visible) {
                            this.updateDimensions()
                        }
                    },
                    _initMarkup() {
                        this.callBase.apply(this, arguments);
                        this.$element().addClass("dx-treelist");
                        this.getView("gridView").render(this.$element())
                    },
                    _renderContentImpl() {
                        this.getView("gridView").update()
                    },
                    _renderContent() {
                        const that = this;
                        (0, _common.deferRender)(() => {
                            that._renderContentImpl()
                        })
                    },
                    _dispose() {
                        this.callBase();
                        callModuleItemsMethod(this, "dispose")
                    },
                    isReady() {
                        return this.getController("data").isReady()
                    },
                    beginUpdate() {
                        this.callBase();
                        callModuleItemsMethod(this, "beginUpdate")
                    },
                    endUpdate() {
                        callModuleItemsMethod(this, "endUpdate");
                        this.callBase()
                    },
                    getController(name) {
                        return this._controllers[name]
                    },
                    getView(name) {
                        return this._views[name]
                    },
                    focus(element) {
                        this.callBase();
                        if ((0, _type.isDefined)(element)) {
                            this.getController("keyboardNavigation").focus(element)
                        }
                    }
                });
                TreeList.registerModule = _m_core.default.registerModule.bind(_m_core.default);
                (0, _component_registrator.default)("dxTreeList", TreeList);
                var _default = TreeList;
                exports.default = _default
            },
        43301:
            /*!**********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/adaptivity.js ***!
              \**********************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_adaptivity = __webpack_require__( /*! ../../../grids/grid_core/adaptivity/m_adaptivity */ 18107);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 12500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("adaptivity", _m_adaptivity.adaptivityModule)
            },
        92026:
            /*!**************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/column_chooser.js ***!
              \**************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_column_chooser = __webpack_require__( /*! ../../../grids/grid_core/column_chooser/m_column_chooser */ 71184);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 12500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("columnChooser", _m_column_chooser.columnChooserModule)
            },
        50776:
            /*!*************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/column_fixing.js ***!
              \*************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_column_fixing = __webpack_require__( /*! ../../../grids/grid_core/column_fixing/m_column_fixing */ 53424);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 12500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("columnFixing", _m_column_fixing.columnFixingModule)
            },
        25052:
            /*!**************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/column_headers.js ***!
              \**************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_column_headers = __webpack_require__( /*! ../../../grids/grid_core/column_headers/m_column_headers */ 14509);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 12500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("columnHeaders", _m_column_headers.columnHeadersModule)
            },
        43468:
            /*!***************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/columns_resizing_reordering.js ***!
              \***************************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_columns_resizing_reordering = __webpack_require__( /*! ../../../grids/grid_core/columns_resizing_reordering/m_columns_resizing_reordering */ 49505);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 12500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("columnsResizingReordering", _m_columns_resizing_reordering.columnsResizingReorderingModule)
            },
        87454:
            /*!************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/context_menu.js ***!
              \************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_context_menu = __webpack_require__( /*! ../../../grids/grid_core/context_menu/m_context_menu */ 69823);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 12500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("contextMenu", _m_context_menu.contextMenuModule)
            },
        7446:
            /*!******************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/editing_cell_based.js ***!
              \******************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_editing_cell_based = __webpack_require__( /*! ../../../grids/grid_core/editing/m_editing_cell_based */ 68802);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 12500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("editingCellBased", _m_editing_cell_based.editingCellBasedModule)
            },
        45998:
            /*!******************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/editing_form_based.js ***!
              \******************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_editing_form_based = __webpack_require__( /*! ../../../grids/grid_core/editing/m_editing_form_based */ 99211);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 12500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("editingFormBased", _m_editing_form_based.editingFormBasedModule)
            },
        64757:
            /*!*****************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/editing_row_based.js ***!
              \*****************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_editing_row_based = __webpack_require__( /*! ../../../grids/grid_core/editing/m_editing_row_based */ 55597);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 12500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("editingRowBased", _m_editing_row_based.editingRowBasedModule)
            },
        29900:
            /*!**************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/editor_factory.js ***!
              \**************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_editor_factory = __webpack_require__( /*! ../../../grids/grid_core/editor_factory/m_editor_factory */ 80070);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 12500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("editorFactory", _m_editor_factory.editorFactoryModule)
            },
        84973:
            /*!**************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/error_handling.js ***!
              \**************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_error_handling = __webpack_require__( /*! ../../../grids/grid_core/error_handling/m_error_handling */ 31152);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 12500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("errorHandling", _m_error_handling.errorHandlingModule)
            },
        49248:
            /*!**************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/filter_builder.js ***!
              \**************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_filter_builder = __webpack_require__( /*! ../../../grids/grid_core/filter/m_filter_builder */ 62690);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 12500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("filterBuilder", _m_filter_builder.filterBuilderModule)
            },
        86737:
            /*!************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/filter_panel.js ***!
              \************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_filter_panel = __webpack_require__( /*! ../../../grids/grid_core/filter/m_filter_panel */ 4062);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 12500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("filterPanel", _m_filter_panel.filterPanelModule)
            },
        98439:
            /*!**********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/filter_row.js ***!
              \**********************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_filter_row = __webpack_require__( /*! ../../../grids/grid_core/filter/m_filter_row */ 12302);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 12500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("filterRow", _m_filter_row.filterRowModule)
            },
        1440:
            /*!***********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/filter_sync.js ***!
              \***********************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_filter_sync = __webpack_require__( /*! ../../../grids/grid_core/filter/m_filter_sync */ 14407);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 12500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("filterSync", _m_filter_sync.filterSyncModule)
            },
        26763:
            /*!*************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/header_filter.js ***!
              \*************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_header_filter = __webpack_require__( /*! ../../../grids/grid_core/header_filter/m_header_filter */ 68796);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 12500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("headerFilter", _m_header_filter.headerFilterModule)
            },
        37980:
            /*!************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/header_panel.js ***!
              \************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_header_panel = __webpack_require__( /*! ../../../grids/grid_core/header_panel/m_header_panel */ 92468);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 12500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("headerPanel", _m_header_panel.headerPanelModule)
            },
        84214:
            /*!*****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/pager.js ***!
              \*****************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_pager = __webpack_require__( /*! ../../../grids/grid_core/pager/m_pager */ 3990);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 12500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("pager", _m_pager.pagerModule)
            },
        31937:
            /*!************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/row_dragging.js ***!
              \************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_row_dragging = __webpack_require__( /*! ../../../grids/grid_core/row_dragging/m_row_dragging */ 88351);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 12500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("rowDragging", _m_row_dragging.rowDraggingModule)
            },
        1272:
            /*!******************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/search.js ***!
              \******************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_search = __webpack_require__( /*! ../../../grids/grid_core/search/m_search */ 92021);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 12500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("search", _m_search.searchModule)
            },
        7138:
            /*!*******************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/sorting.js ***!
              \*******************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_sorting = __webpack_require__( /*! ../../../grids/grid_core/sorting/m_sorting */ 11590);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 12500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("sorting", _m_sorting.sortingModule)
            },
        75188:
            /*!***************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/module_not_extended/virtual_columns.js ***!
              \***************************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _m_virtual_columns = __webpack_require__( /*! ../../../grids/grid_core/virtual_columns/m_virtual_columns */ 87482);
                var _m_core = (obj = __webpack_require__( /*! ../m_core */ 12500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                _m_core.default.registerModule("virtualColumns", _m_virtual_columns.virtualColumnsModule)
            },
        31397:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/rows/m_rows.js ***!
              \***************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.RowsView = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../../events/core/events_engine */ 55994));
                var _remove = __webpack_require__( /*! ../../../../events/remove */ 29007);
                var _m_rows_view = __webpack_require__( /*! ../../../grids/grid_core/views/m_rows_view */ 35095);
                var _m_core = _interopRequireDefault(__webpack_require__( /*! ../m_core */ 12500));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const RowsView = _m_rows_view.rowsModule.views.rowsView.inherit(function() {
                    const createIcon = function(hasIcon, isExpanded) {
                        const $iconElement = (0, _renderer.default)("<div>").addClass("dx-treelist-empty-space");
                        if (hasIcon) {
                            $iconElement.toggleClass("dx-treelist-expanded", isExpanded).toggleClass("dx-treelist-collapsed", !isExpanded).append((0, _renderer.default)("<span>"))
                        }
                        return $iconElement
                    };
                    return {
                        _renderIconContainer($container, options) {
                            const $iconContainer = (0, _renderer.default)("<div>").addClass("dx-treelist-icon-container").appendTo($container);
                            if (options.watch) {
                                const dispose = options.watch(() => [options.row.level, options.row.isExpanded, options.row.node.hasChildren], () => {
                                    $iconContainer.empty();
                                    this._renderIcons($iconContainer, options)
                                });
                                _events_engine.default.on($iconContainer, _remove.removeEvent, dispose)
                            }
                            $container.addClass("dx-treelist-cell-expandable");
                            return this._renderIcons($iconContainer, options)
                        },
                        _renderIcons($iconContainer, options) {
                            const {
                                row: row
                            } = options;
                            const {
                                level: level
                            } = row;
                            for (let i = 0; i <= level; i++) {
                                $iconContainer.append(createIcon(i === level && row.node.hasChildren, row.isExpanded))
                            }
                            return $iconContainer
                        },
                        _renderCellCommandContent(container, model) {
                            this._renderIconContainer(container, model);
                            return true
                        },
                        _processTemplate(template, options) {
                            var _a;
                            const that = this;
                            let resultTemplate;
                            const renderingTemplate = this.callBase(template);
                            const firstDataColumnIndex = that._columnsController.getFirstDataColumnIndex();
                            if (renderingTemplate && (null === (_a = options.column) || void 0 === _a ? void 0 : _a.index) === firstDataColumnIndex) {
                                resultTemplate = {
                                    render(options) {
                                        const $container = options.container;
                                        if (that._renderCellCommandContent($container, options.model)) {
                                            options.container = function($container) {
                                                return (0, _renderer.default)("<div>").addClass("dx-treelist-text-content").appendTo($container)
                                            }($container)
                                        }
                                        renderingTemplate.render(options)
                                    }
                                }
                            } else {
                                resultTemplate = renderingTemplate
                            }
                            return resultTemplate
                        },
                        _updateCell($cell, options) {
                            $cell = $cell.hasClass("dx-treelist-text-content") ? $cell.parent() : $cell;
                            this.callBase($cell, options)
                        },
                        _rowClick(e) {
                            const dataController = this._dataController;
                            const $targetElement = (0, _renderer.default)(e.event.target);
                            const isExpandIcon = this.isExpandIcon($targetElement);
                            const item = dataController && dataController.items()[e.rowIndex];
                            if (isExpandIcon && item) {
                                dataController.changeRowExpand(item.key)
                            }
                            this.callBase(e)
                        },
                        _createRow(row) {
                            const node = row && row.node;
                            const $rowElement = this.callBase.apply(this, arguments);
                            if (node) {
                                this.setAria("level", row.level + 1, $rowElement);
                                if (node.hasChildren) {
                                    this.setAria("expanded", row.isExpanded, $rowElement)
                                }
                            }
                            return $rowElement
                        },
                        _getGridRoleName: () => "treegrid",
                        isExpandIcon: $targetElement => !!$targetElement.closest(".".concat("dx-treelist-expanded", ", .").concat("dx-treelist-collapsed")).length,
                        setAriaExpandedAttribute($row, row) {
                            const isRowExpanded = row.isExpanded;
                            this.setAria("expanded", (0, _type.isDefined)(isRowExpanded) && isRowExpanded.toString(), $row)
                        }
                    }
                }());
                exports.RowsView = RowsView;
                _m_core.default.registerModule("rows", {
                    defaultOptions: _m_rows_view.rowsModule.defaultOptions,
                    views: {
                        rowsView: RowsView
                    }
                })
            },
        91445:
            /*!*************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/grids/tree_list/selection/m_selection.js ***!
              \*************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _m_selection = __webpack_require__( /*! ../../../grids/grid_core/selection/m_selection */ 17969);
                var _m_core = _interopRequireDefault(__webpack_require__( /*! ../m_core */ 12500));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const originalRowClick = _m_selection.selectionModule.extenders.views.rowsView._rowClick;
                const originalHandleDataChanged = _m_selection.selectionModule.extenders.controllers.data._handleDataChanged;
                const nodeExists = function(array, currentKey) {
                    return !!array.filter(key => key === currentKey).length
                };
                _m_core.default.registerModule("selection", (0, _extend.extend)(true, {}, _m_selection.selectionModule, {
                    defaultOptions: () => (0, _extend.extend)(true, _m_selection.selectionModule.defaultOptions(), {
                        selection: {
                            showCheckBoxesMode: "always",
                            recursive: false
                        }
                    }),
                    extenders: {
                        controllers: {
                            data: {
                                _handleDataChanged(e) {
                                    const selectionController = this.getController("selection");
                                    const isRecursiveSelection = selectionController.isRecursiveSelection();
                                    if (isRecursiveSelection && (!e || "updateSelectionState" !== e.changeType)) {
                                        selectionController.updateSelectionState({
                                            selectedItemKeys: this.option("selectedRowKeys")
                                        })
                                    }
                                    originalHandleDataChanged.apply(this, arguments)
                                },
                                loadDescendants() {
                                    const that = this;
                                    const d = that.callBase.apply(that, arguments);
                                    const selectionController = that.getController("selection");
                                    const isRecursiveSelection = selectionController.isRecursiveSelection();
                                    if (isRecursiveSelection) {
                                        d.done(() => {
                                            selectionController.updateSelectionState({
                                                selectedItemKeys: that.option("selectedRowKeys")
                                            })
                                        })
                                    }
                                    return d
                                }
                            },
                            selection: {
                                init() {
                                    this.callBase.apply(this, arguments);
                                    this._selectionStateByKey = {}
                                },
                                _getSelectionConfig() {
                                    const config = this.callBase.apply(this, arguments);
                                    const {
                                        plainItems: plainItems
                                    } = config;
                                    config.plainItems = cached => {
                                        let result;
                                        if (cached) {
                                            result = this._dataController.getCachedStoreData()
                                        }
                                        result || (result = plainItems.apply(this, arguments).map(item => item.data));
                                        return result || []
                                    };
                                    config.isItemSelected = item => {
                                        const key = this._dataController.keyOf(item);
                                        return this.isRowSelected(key)
                                    };
                                    config.isSelectableItem = item => !!item;
                                    config.getItemData = item => item;
                                    config.allowLoadByRange = () => false;
                                    return config
                                },
                                renderSelectCheckBoxContainer($container, model) {
                                    const rowsView = this.component.getView("rowsView");
                                    $container.addClass("dx-cell-focus-disabled");
                                    const $checkbox = rowsView._renderSelectCheckBox($container, {
                                        value: model.row.isSelected,
                                        row: model.row,
                                        column: model.column
                                    });
                                    rowsView._attachCheckBoxClickEvent($checkbox)
                                },
                                _updateSelectColumn: _common.noop,
                                _getSelectAllNodeKeys() {
                                    const {
                                        component: component
                                    } = this;
                                    const root = component.getRootNode();
                                    const cache = {};
                                    const keys = [];
                                    const isRecursiveSelection = this.isRecursiveSelection();
                                    root && _m_core.default.foreachNodes(root.children, node => {
                                        if (void 0 !== node.key && (node.visible || isRecursiveSelection)) {
                                            keys.push(node.key)
                                        }
                                        if (!node.visible) {
                                            return true
                                        }
                                        return isRecursiveSelection ? false : component.isRowExpanded(node.key, cache)
                                    });
                                    return keys
                                },
                                isSelectAll() {
                                    const selectedRowKeys = this.option("selectedRowKeys") || [];
                                    if (0 === selectedRowKeys.length) {
                                        return false
                                    }
                                    const {
                                        component: component
                                    } = this;
                                    const visibleKeys = this._getSelectAllNodeKeys();
                                    const isRecursiveSelection = this.isRecursiveSelection();
                                    let hasIndeterminateState = false;
                                    const selectedVisibleKeys = visibleKeys.filter(key => {
                                        const isRowSelected = component.isRowSelected(key, isRecursiveSelection);
                                        if (void 0 === isRowSelected) {
                                            hasIndeterminateState = true
                                        }
                                        return isRowSelected
                                    });
                                    if (!selectedVisibleKeys.length) {
                                        return hasIndeterminateState ? void 0 : false
                                    }
                                    if (selectedVisibleKeys.length === visibleKeys.length) {
                                        return true
                                    }
                                    return
                                },
                                selectAll() {
                                    const visibleKeys = this._getSelectAllNodeKeys().filter(key => !this.isRowSelected(key));
                                    this.focusedItemIndex(-1);
                                    return this.selectRows(visibleKeys, true)
                                },
                                deselectAll() {
                                    const visibleKeys = this._getSelectAllNodeKeys();
                                    this.focusedItemIndex(-1);
                                    return this.deselectRows(visibleKeys)
                                },
                                selectedItemKeys(value, preserve, isDeselect, isSelectAll) {
                                    const that = this;
                                    const selectedRowKeys = that.option("selectedRowKeys");
                                    const isRecursiveSelection = this.isRecursiveSelection();
                                    const normalizedArgs = isRecursiveSelection && that._normalizeSelectionArgs({
                                        keys: (0, _type.isDefined)(value) ? value : []
                                    }, preserve, !isDeselect);
                                    if (normalizedArgs && !(0, _common.equalByValue)(normalizedArgs.selectedRowKeys, selectedRowKeys)) {
                                        that._isSelectionNormalizing = true;
                                        return this.callBase(normalizedArgs.selectedRowKeys, false, false, false).always(() => {
                                            that._isSelectionNormalizing = false
                                        }).done(items => {
                                            normalizedArgs.selectedRowsData = items;
                                            that._fireSelectionChanged(normalizedArgs)
                                        })
                                    }
                                    return this.callBase(value, preserve, isDeselect, isSelectAll)
                                },
                                changeItemSelection(itemIndex, keyboardKeys) {
                                    const isRecursiveSelection = this.isRecursiveSelection();
                                    const callBase = this.callBase.bind(this);
                                    if (isRecursiveSelection && !keyboardKeys.shift) {
                                        const key = this._dataController.getKeyByRowIndex(itemIndex);
                                        return this.selectedItemKeys(key, true, this.isRowSelected(key)).done(() => {
                                            this.isRowSelected(key) && callBase(itemIndex, keyboardKeys, true)
                                        })
                                    }
                                    return this.callBase.apply(this, arguments)
                                },
                                _updateParentSelectionState(node, isSelected) {
                                    const that = this;
                                    let state = isSelected;
                                    const parentNode = node.parent;
                                    if (parentNode) {
                                        if (parentNode.children.length > 1) {
                                            if (false === isSelected) {
                                                const hasSelectedState = parentNode.children.some(childNode => that._selectionStateByKey[childNode.key]);
                                                state = hasSelectedState ? void 0 : false
                                            } else if (true === isSelected) {
                                                const hasNonSelectedState = parentNode.children.some(childNode => !that._selectionStateByKey[childNode.key]);
                                                state = hasNonSelectedState ? void 0 : true
                                            }
                                        }
                                        this._selectionStateByKey[parentNode.key] = state;
                                        if (parentNode.parent && parentNode.parent.level >= 0) {
                                            this._updateParentSelectionState(parentNode, state)
                                        }
                                    }
                                },
                                _updateChildrenSelectionState(node, isSelected) {
                                    const that = this;
                                    const {
                                        children: children
                                    } = node;
                                    children && children.forEach(childNode => {
                                        that._selectionStateByKey[childNode.key] = isSelected;
                                        if (childNode.children.length > 0) {
                                            that._updateChildrenSelectionState(childNode, isSelected)
                                        }
                                    })
                                },
                                _updateSelectionStateCore(keys, isSelected) {
                                    const dataController = this._dataController;
                                    for (let i = 0; i < keys.length; i++) {
                                        this._selectionStateByKey[keys[i]] = isSelected;
                                        const node = dataController.getNodeByKey(keys[i]);
                                        if (node) {
                                            this._updateParentSelectionState(node, isSelected);
                                            this._updateChildrenSelectionState(node, isSelected)
                                        }
                                    }
                                },
                                _getSelectedParentKeys(key, selectedItemKeys, useCash) {
                                    let selectedParentNode;
                                    const node = this._dataController.getNodeByKey(key);
                                    let parentNode = node && node.parent;
                                    let result = [];
                                    while (parentNode && parentNode.level >= 0) {
                                        result.unshift(parentNode.key);
                                        const isSelected = useCash ? !nodeExists(selectedItemKeys, parentNode.key) && this.isRowSelected(parentNode.key) : selectedItemKeys.indexOf(parentNode.key) >= 0;
                                        if (isSelected) {
                                            selectedParentNode = parentNode;
                                            result = this._getSelectedParentKeys(selectedParentNode.key, selectedItemKeys, useCash).concat(result);
                                            break
                                        } else if (useCash) {
                                            break
                                        }
                                        parentNode = parentNode.parent
                                    }
                                    return selectedParentNode && result || []
                                },
                                _getSelectedChildKeys(key, keysToIgnore) {
                                    const childKeys = [];
                                    const node = this._dataController.getNodeByKey(key);
                                    node && _m_core.default.foreachNodes(node.children, childNode => {
                                        const ignoreKeyIndex = keysToIgnore.indexOf(childNode.key);
                                        if (ignoreKeyIndex < 0) {
                                            childKeys.push(childNode.key)
                                        }
                                        return ignoreKeyIndex > 0 || ignoreKeyIndex < 0 && void 0 === this._selectionStateByKey[childNode.key]
                                    });
                                    return childKeys
                                },
                                _normalizeParentKeys(key, args) {
                                    const that = this;
                                    let keysToIgnore = [key];
                                    const parentNodeKeys = that._getSelectedParentKeys(key, args.selectedRowKeys);
                                    if (parentNodeKeys.length) {
                                        keysToIgnore = keysToIgnore.concat(parentNodeKeys);
                                        keysToIgnore.forEach(key => {
                                            const index = args.selectedRowKeys.indexOf(key);
                                            if (index >= 0) {
                                                args.selectedRowKeys.splice(index, 1)
                                            }
                                        });
                                        const childKeys = that._getSelectedChildKeys(parentNodeKeys[0], keysToIgnore);
                                        args.selectedRowKeys = args.selectedRowKeys.concat(childKeys)
                                    }
                                },
                                _normalizeChildrenKeys(key, args) {
                                    const node = this._dataController.getNodeByKey(key);
                                    node && node.children.forEach(childNode => {
                                        const index = args.selectedRowKeys.indexOf(childNode.key);
                                        if (index >= 0) {
                                            args.selectedRowKeys.splice(index, 1)
                                        }
                                        this._normalizeChildrenKeys(childNode.key, args)
                                    })
                                },
                                _normalizeSelectedRowKeysCore(keys, args, preserve, isSelect) {
                                    const that = this;
                                    keys.forEach(key => {
                                        if (preserve && that.isRowSelected(key) === isSelect) {
                                            return
                                        }
                                        that._normalizeChildrenKeys(key, args);
                                        const index = args.selectedRowKeys.indexOf(key);
                                        if (isSelect) {
                                            if (index < 0) {
                                                args.selectedRowKeys.push(key)
                                            }
                                            args.currentSelectedRowKeys.push(key)
                                        } else {
                                            if (index >= 0) {
                                                args.selectedRowKeys.splice(index, 1)
                                            }
                                            args.currentDeselectedRowKeys.push(key);
                                            that._normalizeParentKeys(key, args)
                                        }
                                    })
                                },
                                _normalizeSelectionArgs(args, preserve, isSelect) {
                                    let result;
                                    const keys = Array.isArray(args.keys) ? args.keys : [args.keys];
                                    const selectedRowKeys = this.option("selectedRowKeys") || [];
                                    if (keys.length) {
                                        result = {
                                            currentSelectedRowKeys: [],
                                            currentDeselectedRowKeys: [],
                                            selectedRowKeys: preserve ? selectedRowKeys.slice(0) : []
                                        };
                                        this._normalizeSelectedRowKeysCore(keys, result, preserve, isSelect)
                                    }
                                    return result
                                },
                                _updateSelectedItems(args) {
                                    this.updateSelectionState(args);
                                    this.callBase(args)
                                },
                                _fireSelectionChanged() {
                                    if (!this._isSelectionNormalizing) {
                                        this.callBase.apply(this, arguments)
                                    }
                                },
                                _isModeLeavesOnly: mode => "leavesOnly" === mode,
                                _removeDuplicatedKeys(keys) {
                                    const result = [];
                                    const processedKeys = {};
                                    keys.forEach(key => {
                                        if (!processedKeys[key]) {
                                            processedKeys[key] = true;
                                            result.push(key)
                                        }
                                    });
                                    return result
                                },
                                _getAllChildKeys(key) {
                                    const childKeys = [];
                                    const node = this._dataController.getNodeByKey(key);
                                    node && _m_core.default.foreachNodes(node.children, childNode => {
                                        childKeys.push(childNode.key)
                                    }, true);
                                    return childKeys
                                },
                                _getAllSelectedRowKeys(keys) {
                                    let result = [];
                                    keys.forEach(key => {
                                        const parentKeys = this._getSelectedParentKeys(key, [], true);
                                        const childKeys = this._getAllChildKeys(key);
                                        result.push.apply(result, parentKeys.concat([key], childKeys))
                                    });
                                    result = this._removeDuplicatedKeys(result);
                                    return result
                                },
                                _getParentSelectedRowKeys(keys) {
                                    const that = this;
                                    const result = [];
                                    keys.forEach(key => {
                                        const parentKeys = that._getSelectedParentKeys(key, keys);
                                        !parentKeys.length && result.push(key)
                                    });
                                    return result
                                },
                                _getLeafSelectedRowKeys(keys) {
                                    const result = [];
                                    const dataController = this._dataController;
                                    keys.forEach(key => {
                                        const node = dataController.getNodeByKey(key);
                                        node && !node.hasChildren && result.push(key)
                                    });
                                    return result
                                },
                                isRecursiveSelection() {
                                    const selectionMode = this.option("selection.mode");
                                    const isRecursive = this.option("selection.recursive");
                                    return "multiple" === selectionMode && isRecursive
                                },
                                updateSelectionState(options) {
                                    const removedItemKeys = options.removedItemKeys || [];
                                    const selectedItemKeys = options.selectedItemKeys || [];
                                    if (this.isRecursiveSelection()) {
                                        this._updateSelectionStateCore(removedItemKeys, false);
                                        this._updateSelectionStateCore(selectedItemKeys, true)
                                    }
                                },
                                isRowSelected(key, isRecursiveSelection) {
                                    const result = this.callBase.apply(this, arguments);
                                    isRecursiveSelection = null !== isRecursiveSelection && void 0 !== isRecursiveSelection ? isRecursiveSelection : this.isRecursiveSelection();
                                    if (!result && isRecursiveSelection) {
                                        if (key in this._selectionStateByKey) {
                                            return this._selectionStateByKey[key]
                                        }
                                        return false
                                    }
                                    return result
                                },
                                getSelectedRowKeys(mode) {
                                    const that = this;
                                    if (!that._dataController) {
                                        return []
                                    }
                                    let selectedRowKeys = that.callBase.apply(that, arguments);
                                    if (mode) {
                                        if (this.isRecursiveSelection()) {
                                            selectedRowKeys = this._getAllSelectedRowKeys(selectedRowKeys)
                                        }
                                        if ("all" !== mode) {
                                            if ("excludeRecursive" === mode) {
                                                selectedRowKeys = that._getParentSelectedRowKeys(selectedRowKeys)
                                            } else if (that._isModeLeavesOnly(mode)) {
                                                selectedRowKeys = that._getLeafSelectedRowKeys(selectedRowKeys)
                                            }
                                        }
                                    }
                                    return selectedRowKeys
                                },
                                getSelectedRowsData(mode) {
                                    const dataController = this._dataController;
                                    const selectedKeys = this.getSelectedRowKeys(mode) || [];
                                    const selectedRowsData = [];
                                    selectedKeys.forEach(key => {
                                        const node = dataController.getNodeByKey(key);
                                        node && selectedRowsData.push(node.data)
                                    });
                                    return selectedRowsData
                                },
                                refresh() {
                                    this._selectionStateByKey = {};
                                    return this.callBase.apply(this, arguments)
                                }
                            }
                        },
                        views: {
                            columnHeadersView: {
                                _processTemplate(template, options) {
                                    const that = this;
                                    let resultTemplate;
                                    const renderingTemplate = this.callBase(template, options);
                                    const firstDataColumnIndex = that._columnsController.getFirstDataColumnIndex();
                                    if (renderingTemplate && "header" === options.rowType && options.column.index === firstDataColumnIndex) {
                                        resultTemplate = {
                                            render(options) {
                                                if ("multiple" === that.option("selection.mode")) {
                                                    that.renderSelectAll(options.container, options.model)
                                                }
                                                renderingTemplate.render(options)
                                            }
                                        }
                                    } else {
                                        resultTemplate = renderingTemplate
                                    }
                                    return resultTemplate
                                },
                                renderSelectAll($cell, options) {
                                    $cell.addClass("dx-treelist-select-all");
                                    this._renderSelectAllCheckBox($cell)
                                },
                                _isSortableElement($target) {
                                    return this.callBase($target) && !$target.closest(".".concat("dx-select-checkbox")).length
                                }
                            },
                            rowsView: {
                                _renderIcons($iconContainer, options) {
                                    this.callBase.apply(this, arguments);
                                    if (!options.row.isNewRow && "multiple" === this.option("selection.mode")) {
                                        this.getController("selection").renderSelectCheckBoxContainer($iconContainer, options)
                                    }
                                    return $iconContainer
                                },
                                _rowClick(e) {
                                    const $targetElement = (0, _renderer.default)(e.event.target);
                                    if (this.isExpandIcon($targetElement)) {
                                        this.callBase.apply(this, arguments)
                                    } else {
                                        originalRowClick.apply(this, arguments)
                                    }
                                }
                            }
                        }
                    }
                }))
            },
        86988:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/m_draggable.js ***!
              \***********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _position = _interopRequireDefault(__webpack_require__( /*! ../animation/position */ 49387));
                var _translator = __webpack_require__( /*! ../animation/translator */ 31648);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../core/dom_adapter */ 73349));
                var _dom_component = _interopRequireDefault(__webpack_require__( /*! ../core/dom_component */ 13046));
                var _element = __webpack_require__( /*! ../core/element */ 6415);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _empty_template = __webpack_require__( /*! ../core/templates/empty_template */ 10688);
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _inflector = __webpack_require__( /*! ../core/utils/inflector */ 78008);
                var _position2 = __webpack_require__( /*! ../core/utils/position */ 37518);
                var _size = __webpack_require__( /*! ../core/utils/size */ 58664);
                var _string = __webpack_require__( /*! ../core/utils/string */ 68752);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _view_port = __webpack_require__( /*! ../core/utils/view_port */ 77695);
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../events/core/events_engine */ 55994));
                var _drag = __webpack_require__( /*! ../events/drag */ 23174);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../events/pointer */ 93786));
                var _index = __webpack_require__( /*! ../events/utils/index */ 39611);
                var _animator = _interopRequireDefault(__webpack_require__( /*! ../ui/scroll_view/animator */ 6866));

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const window = (0, _window.getWindow)();
                const DRAGGABLE = "dxDraggable";
                const DRAGSTART_EVENT_NAME = (0, _index.addNamespace)(_drag.start, DRAGGABLE);
                const DRAG_EVENT_NAME = (0, _index.addNamespace)(_drag.move, DRAGGABLE);
                const DRAGEND_EVENT_NAME = (0, _index.addNamespace)(_drag.end, DRAGGABLE);
                const DRAG_ENTER_EVENT_NAME = (0, _index.addNamespace)(_drag.enter, DRAGGABLE);
                const DRAGEND_LEAVE_EVENT_NAME = (0, _index.addNamespace)(_drag.leave, DRAGGABLE);
                const POINTERDOWN_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.down, DRAGGABLE);
                const KEYDOWN_EVENT_NAME = (0, _index.addNamespace)("keydown", DRAGGABLE);
                let targetDraggable;
                let sourceDraggable;
                const getMousePosition = event => ({
                    x: event.pageX - (0, _renderer.default)(window).scrollLeft(),
                    y: event.pageY - (0, _renderer.default)(window).scrollTop()
                });
                let ScrollHelper = function() {
                    function ScrollHelper(orientation, component) {
                        this._$scrollableAtPointer = null;
                        this._preventScroll = true;
                        this._component = component;
                        if ("vertical" === orientation) {
                            this._scrollValue = "scrollTop";
                            this._overFlowAttr = "overflowY";
                            this._sizeAttr = "height";
                            this._scrollSizeProp = "scrollHeight";
                            this._clientSizeProp = "clientHeight";
                            this._limitProps = {
                                start: "top",
                                end: "bottom"
                            }
                        } else {
                            this._scrollValue = "scrollLeft";
                            this._overFlowAttr = "overflowX";
                            this._sizeAttr = "width";
                            this._scrollSizeProp = "scrollWidth";
                            this._clientSizeProp = "clientWidth";
                            this._limitProps = {
                                start: "left",
                                end: "right"
                            }
                        }
                    }
                    var _proto = ScrollHelper.prototype;
                    _proto.updateScrollable = function(elements, mousePosition) {
                        let isScrollableFound = false;
                        elements.some(element => {
                            const $element = (0, _renderer.default)(element);
                            const isTargetOverOverlayWrapper = $element.hasClass("dx-overlay-wrapper");
                            const isTargetOverOverlayContent = $element.hasClass("dx-overlay-content");
                            if (isTargetOverOverlayWrapper || isTargetOverOverlayContent) {
                                return true
                            }
                            isScrollableFound = this._trySetScrollable(element, mousePosition);
                            return isScrollableFound
                        });
                        if (!isScrollableFound) {
                            this._$scrollableAtPointer = null;
                            this._scrollSpeed = 0
                        }
                    };
                    _proto.isScrolling = function() {
                        return !!this._scrollSpeed
                    };
                    _proto.isScrollable = function($element) {
                        return ("auto" === $element.css(this._overFlowAttr) || $element.hasClass("dx-scrollable-container")) && $element.prop(this._scrollSizeProp) > Math.ceil("width" === this._sizeAttr ? (0, _size.getWidth)($element) : (0, _size.getHeight)($element))
                    };
                    _proto._trySetScrollable = function(element, mousePosition) {
                        const that = this;
                        const $element = (0, _renderer.default)(element);
                        let distanceToBorders;
                        const sensitivity = that._component.option("scrollSensitivity");
                        let isScrollable = that.isScrollable($element);
                        if (isScrollable) {
                            distanceToBorders = that._calculateDistanceToBorders($element, mousePosition);
                            if (sensitivity > distanceToBorders[that._limitProps.start]) {
                                if (!that._preventScroll) {
                                    that._scrollSpeed = -that._calculateScrollSpeed(distanceToBorders[that._limitProps.start]);
                                    that._$scrollableAtPointer = $element
                                }
                            } else if (sensitivity > distanceToBorders[that._limitProps.end]) {
                                if (!that._preventScroll) {
                                    that._scrollSpeed = that._calculateScrollSpeed(distanceToBorders[that._limitProps.end]);
                                    that._$scrollableAtPointer = $element
                                }
                            } else {
                                isScrollable = false;
                                that._preventScroll = false
                            }
                        }
                        return isScrollable
                    };
                    _proto._calculateDistanceToBorders = function($area, mousePosition) {
                        const area = $area.get(0);
                        let areaBoundingRect;
                        if (area) {
                            areaBoundingRect = (0, _position2.getBoundingRect)(area);
                            return {
                                left: mousePosition.x - areaBoundingRect.left,
                                top: mousePosition.y - areaBoundingRect.top,
                                right: areaBoundingRect.right - mousePosition.x,
                                bottom: areaBoundingRect.bottom - mousePosition.y
                            }
                        }
                        return {}
                    };
                    _proto._calculateScrollSpeed = function(distance) {
                        const component = this._component;
                        const sensitivity = component.option("scrollSensitivity");
                        const maxSpeed = component.option("scrollSpeed");
                        return Math.ceil(((sensitivity - distance) / sensitivity) ** 2 * maxSpeed)
                    };
                    _proto.scrollByStep = function() {
                        const that = this;
                        if (that._$scrollableAtPointer && that._scrollSpeed) {
                            if (that._$scrollableAtPointer.hasClass("dx-scrollable-container")) {
                                const $scrollable = that._$scrollableAtPointer.closest(".dx-scrollable");
                                const scrollableInstance = $scrollable.data("dxScrollable") || $scrollable.data("dxScrollView");
                                if (scrollableInstance) {
                                    const nextScrollPosition = scrollableInstance.scrollOffset()[that._limitProps.start] + that._scrollSpeed;
                                    scrollableInstance.scrollTo({
                                        [that._limitProps.start]: nextScrollPosition
                                    })
                                }
                            } else {
                                const nextScrollPosition = that._$scrollableAtPointer[that._scrollValue]() + that._scrollSpeed;
                                that._$scrollableAtPointer[that._scrollValue](nextScrollPosition)
                            }
                            const dragMoveArgs = that._component._dragMoveArgs;
                            if (dragMoveArgs) {
                                that._component._dragMoveHandler(dragMoveArgs)
                            }
                        }
                    };
                    _proto.reset = function() {
                        this._$scrollableAtPointer = null;
                        this._scrollSpeed = 0;
                        this._preventScroll = true
                    };
                    _proto.isOutsideScrollable = function($scrollable, event) {
                        if (!$scrollable) {
                            return false
                        }
                        const scrollableSize = (0, _position2.getBoundingRect)($scrollable.get(0));
                        const start = scrollableSize[this._limitProps.start];
                        const size = scrollableSize[this._sizeAttr];
                        const mousePosition = getMousePosition(event);
                        const location = "width" === this._sizeAttr ? mousePosition.x : mousePosition.y;
                        return location < start || location > start + size
                    };
                    return ScrollHelper
                }();
                const ScrollAnimator = _animator.default.inherit({
                    ctor(strategy) {
                        this.callBase();
                        this._strategy = strategy
                    },
                    _step() {
                        const horizontalScrollHelper = this._strategy._horizontalScrollHelper;
                        const verticalScrollHelper = this._strategy._verticalScrollHelper;
                        horizontalScrollHelper && horizontalScrollHelper.scrollByStep();
                        verticalScrollHelper && verticalScrollHelper.scrollByStep()
                    }
                });
                const Draggable = _dom_component.default.inherit({
                    reset: _common.noop,
                    dragMove: _common.noop,
                    dragEnter: _common.noop,
                    dragLeave: _common.noop,
                    dragEnd(sourceEvent) {
                        const sourceDraggable = this._getSourceDraggable();
                        sourceDraggable._fireRemoveEvent(sourceEvent);
                        return (0, _deferred.Deferred)().resolve()
                    },
                    _fireRemoveEvent: _common.noop,
                    _getDefaultOptions() {
                        return (0, _extend.extend)(this.callBase(), {
                            onDragStart: null,
                            onDragMove: null,
                            onDragEnd: null,
                            onDragEnter: null,
                            onDragLeave: null,
                            onDragCancel: null,
                            onCancelByEsc: false,
                            onDrop: null,
                            immediate: true,
                            dragDirection: "both",
                            boundary: void 0,
                            boundOffset: 0,
                            allowMoveByClick: false,
                            itemData: null,
                            container: void 0,
                            dragTemplate: void 0,
                            contentTemplate: "content",
                            handle: "",
                            filter: "",
                            clone: false,
                            autoScroll: true,
                            scrollSpeed: 30,
                            scrollSensitivity: 60,
                            group: void 0,
                            data: void 0
                        })
                    },
                    _setOptionsByReference() {
                        this.callBase.apply(this, arguments);
                        (0, _extend.extend)(this._optionsByReference, {
                            component: true,
                            group: true,
                            itemData: true,
                            data: true
                        })
                    },
                    _init() {
                        this.callBase();
                        this._attachEventHandlers();
                        this._scrollAnimator = new ScrollAnimator(this);
                        this._horizontalScrollHelper = new ScrollHelper("horizontal", this);
                        this._verticalScrollHelper = new ScrollHelper("vertical", this);
                        this._initScrollTop = 0;
                        this._initScrollLeft = 0
                    },
                    _normalizeCursorOffset(offset) {
                        if ((0, _type.isObject)(offset)) {
                            offset = {
                                h: offset.x,
                                v: offset.y
                            }
                        }
                        offset = (0, _common.splitPair)(offset).map(value => parseFloat(value));
                        return {
                            left: offset[0],
                            top: 1 === offset.length ? offset[0] : offset[1]
                        }
                    },
                    _getNormalizedCursorOffset(offset, options) {
                        if ((0, _type.isFunction)(offset)) {
                            offset = offset.call(this, options)
                        }
                        return this._normalizeCursorOffset(offset)
                    },
                    _calculateElementOffset(options) {
                        let elementOffset;
                        let dragElementOffset;
                        const {
                            event: event
                        } = options;
                        const $element = (0, _renderer.default)(options.itemElement);
                        const $dragElement = (0, _renderer.default)(options.dragElement);
                        const isCloned = this._dragElementIsCloned();
                        const cursorOffset = this.option("cursorOffset");
                        let normalizedCursorOffset = {
                            left: 0,
                            top: 0
                        };
                        const currentLocate = this._initialLocate = (0, _translator.locate)($dragElement);
                        if (isCloned || options.initialOffset || cursorOffset) {
                            elementOffset = options.initialOffset || $element.offset();
                            if (cursorOffset) {
                                normalizedCursorOffset = this._getNormalizedCursorOffset(cursorOffset, options);
                                if (isFinite(normalizedCursorOffset.left)) {
                                    elementOffset.left = event.pageX
                                }
                                if (isFinite(normalizedCursorOffset.top)) {
                                    elementOffset.top = event.pageY
                                }
                            }
                            dragElementOffset = $dragElement.offset();
                            elementOffset.top -= dragElementOffset.top + (normalizedCursorOffset.top || 0) - currentLocate.top;
                            elementOffset.left -= dragElementOffset.left + (normalizedCursorOffset.left || 0) - currentLocate.left
                        }
                        return elementOffset
                    },
                    _initPosition(options) {
                        const $dragElement = (0, _renderer.default)(options.dragElement);
                        const elementOffset = this._calculateElementOffset(options);
                        if (elementOffset) {
                            this._move(elementOffset, $dragElement)
                        }
                        this._startPosition = (0, _translator.locate)($dragElement)
                    },
                    _startAnimator() {
                        if (!this._scrollAnimator.inProgress()) {
                            this._scrollAnimator.start()
                        }
                    },
                    _stopAnimator() {
                        this._scrollAnimator.stop()
                    },
                    _addWidgetPrefix(className) {
                        const componentName = this.NAME;
                        return (0, _inflector.dasherize)(componentName) + (className ? "-".concat(className) : "")
                    },
                    _getItemsSelector() {
                        return this.option("filter") || ""
                    },
                    _$content() {
                        const $element = this.$element();
                        const $wrapper = $element.children(".dx-template-wrapper");
                        return $wrapper.length ? $wrapper : $element
                    },
                    _attachEventHandlers() {
                        if (this.option("disabled")) {
                            return
                        }
                        let $element = this._$content();
                        let itemsSelector = this._getItemsSelector();
                        const allowMoveByClick = this.option("allowMoveByClick");
                        const data = {
                            direction: this.option("dragDirection"),
                            immediate: this.option("immediate"),
                            checkDropTarget: ($target, event) => {
                                const targetGroup = this.option("group");
                                const sourceGroup = this._getSourceDraggable().option("group");
                                const $scrollable = this._getScrollable($target);
                                if (this._verticalScrollHelper.isOutsideScrollable($scrollable, event) || this._horizontalScrollHelper.isOutsideScrollable($scrollable, event)) {
                                    return false
                                }
                                return sourceGroup && sourceGroup === targetGroup
                            }
                        };
                        if (allowMoveByClick) {
                            $element = this._getArea();
                            _events_engine.default.on($element, POINTERDOWN_EVENT_NAME, data, this._pointerDownHandler.bind(this))
                        }
                        if (">" === itemsSelector[0]) {
                            itemsSelector = itemsSelector.slice(1)
                        }
                        _events_engine.default.on($element, DRAGSTART_EVENT_NAME, itemsSelector, data, this._dragStartHandler.bind(this));
                        _events_engine.default.on($element, DRAG_EVENT_NAME, data, this._dragMoveHandler.bind(this));
                        _events_engine.default.on($element, DRAGEND_EVENT_NAME, data, this._dragEndHandler.bind(this));
                        _events_engine.default.on($element, DRAG_ENTER_EVENT_NAME, data, this._dragEnterHandler.bind(this));
                        _events_engine.default.on($element, DRAGEND_LEAVE_EVENT_NAME, data, this._dragLeaveHandler.bind(this));
                        if (this.option("onCancelByEsc")) {
                            _events_engine.default.on($element, KEYDOWN_EVENT_NAME, this._keydownHandler.bind(this))
                        }
                    },
                    _dragElementIsCloned() {
                        return this._$dragElement && this._$dragElement.hasClass(this._addWidgetPrefix("clone"))
                    },
                    _getDragTemplateArgs($element, $container) {
                        return {
                            container: (0, _element.getPublicElement)($container),
                            model: {
                                itemData: this.option("itemData"),
                                itemElement: (0, _element.getPublicElement)($element)
                            }
                        }
                    },
                    _createDragElement($element) {
                        let result = $element;
                        const clone = this.option("clone");
                        const $container = this._getContainer();
                        let template = this.option("dragTemplate");
                        if (template) {
                            template = this._getTemplate(template);
                            result = (0, _renderer.default)("<div>").appendTo($container);
                            template.render(this._getDragTemplateArgs($element, result))
                        } else if (clone) {
                            result = (0, _renderer.default)("<div>").appendTo($container);
                            $element.clone().css({
                                width: $element.css("width"),
                                height: $element.css("height")
                            }).appendTo(result)
                        }
                        return result.toggleClass(this._addWidgetPrefix("clone"), result.get(0) !== $element.get(0)).toggleClass("dx-rtl", this.option("rtlEnabled"))
                    },
                    _resetDragElement() {
                        if (this._dragElementIsCloned()) {
                            this._$dragElement.remove()
                        } else {
                            this._toggleDraggingClass(false)
                        }
                        this._$dragElement = null
                    },
                    _resetSourceElement() {
                        this._toggleDragSourceClass(false);
                        this._$sourceElement = null
                    },
                    _detachEventHandlers() {
                        _events_engine.default.off(this._$content(), ".".concat(DRAGGABLE));
                        _events_engine.default.off(this._getArea(), ".".concat(DRAGGABLE))
                    },
                    _move(position, $element) {
                        (0, _translator.move)($element || this._$dragElement, position)
                    },
                    _getDraggableElement(e) {
                        const $sourceElement = this._getSourceElement();
                        if ($sourceElement) {
                            return $sourceElement
                        }
                        const allowMoveByClick = this.option("allowMoveByClick");
                        if (allowMoveByClick) {
                            return this.$element()
                        }
                        let $target = (0, _renderer.default)(e && e.target);
                        const itemsSelector = this._getItemsSelector();
                        if (">" === itemsSelector[0]) {
                            const $items = this._$content().find(itemsSelector);
                            if (!$items.is($target)) {
                                $target = $target.closest($items)
                            }
                        }
                        return $target
                    },
                    _getSourceElement() {
                        const draggable = this._getSourceDraggable();
                        return draggable._$sourceElement
                    },
                    _pointerDownHandler(e) {
                        if ((0, _index.needSkipEvent)(e)) {
                            return
                        }
                        const position = {};
                        const $element = this.$element();
                        const dragDirection = this.option("dragDirection");
                        if ("horizontal" === dragDirection || "both" === dragDirection) {
                            position.left = e.pageX - $element.offset().left + (0, _translator.locate)($element).left - (0, _size.getWidth)($element) / 2
                        }
                        if ("vertical" === dragDirection || "both" === dragDirection) {
                            position.top = e.pageY - $element.offset().top + (0, _translator.locate)($element).top - (0, _size.getHeight)($element) / 2
                        }
                        this._move(position, $element);
                        this._getAction("onDragMove")(this._getEventArgs(e))
                    },
                    _isValidElement(event, $element) {
                        const handle = this.option("handle");
                        const $target = (0, _renderer.default)(event.originalEvent && event.originalEvent.target);
                        if (handle && !$target.closest(handle).length) {
                            return false
                        }
                        if (!$element.length) {
                            return false
                        }
                        return !$element.is(".dx-state-disabled, .dx-state-disabled *")
                    },
                    _dragStartHandler(e) {
                        const $element = this._getDraggableElement(e);
                        this.dragInProgress = true;
                        if (!this._isValidElement(e, $element)) {
                            e.cancel = true;
                            return
                        }
                        if (this._$sourceElement) {
                            return
                        }
                        const dragStartArgs = this._getDragStartArgs(e, $element);
                        this._getAction("onDragStart")(dragStartArgs);
                        if (dragStartArgs.cancel) {
                            e.cancel = true;
                            return
                        }
                        this.option("itemData", dragStartArgs.itemData);
                        this._setSourceDraggable();
                        this._$sourceElement = $element;
                        let initialOffset = $element.offset();
                        if (!this._hasClonedDraggable() && this.option("autoScroll")) {
                            this._initScrollTop = this._getScrollableScrollTop();
                            this._initScrollLeft = this._getScrollableScrollLeft();
                            initialOffset = this._getDraggableElementOffset(initialOffset.left, initialOffset.top)
                        }
                        const $dragElement = this._$dragElement = this._createDragElement($element);
                        this._toggleDraggingClass(true);
                        this._toggleDragSourceClass(true);
                        this._setGestureCoverCursor($dragElement.children());
                        const isFixedPosition = "fixed" === $dragElement.css("position");
                        this._initPosition((0, _extend.extend)({}, dragStartArgs, {
                            dragElement: $dragElement.get(0),
                            initialOffset: isFixedPosition && initialOffset
                        }));
                        this._getAction("onDraggableElementShown")(_extends(_extends({}, dragStartArgs), {
                            dragElement: $dragElement
                        }));
                        const $area = this._getArea();
                        const areaOffset = this._getAreaOffset($area);
                        const boundOffset = this._getBoundOffset();
                        const areaWidth = (0, _size.getOuterWidth)($area);
                        const areaHeight = (0, _size.getOuterHeight)($area);
                        const elementWidth = (0, _size.getWidth)($dragElement);
                        const elementHeight = (0, _size.getHeight)($dragElement);
                        const startOffset_left = $dragElement.offset().left - areaOffset.left,
                            startOffset_top = $dragElement.offset().top - areaOffset.top;
                        if ($area.length) {
                            e.maxLeftOffset = startOffset_left - boundOffset.left;
                            e.maxRightOffset = areaWidth - startOffset_left - elementWidth - boundOffset.right;
                            e.maxTopOffset = startOffset_top - boundOffset.top;
                            e.maxBottomOffset = areaHeight - startOffset_top - elementHeight - boundOffset.bottom
                        }
                        if (this.option("autoScroll")) {
                            this._startAnimator()
                        }
                    },
                    _getAreaOffset($area) {
                        const offset = $area && _position.default.offset($area);
                        return offset || {
                            left: 0,
                            top: 0
                        }
                    },
                    _toggleDraggingClass(value) {
                        this._$dragElement && this._$dragElement.toggleClass(this._addWidgetPrefix("dragging"), value)
                    },
                    _toggleDragSourceClass(value, $element) {
                        const $sourceElement = $element || this._$sourceElement;
                        $sourceElement && $sourceElement.toggleClass(this._addWidgetPrefix("source"), value)
                    },
                    _setGestureCoverCursor($element) {
                        (0, _renderer.default)(".".concat("dx-gesture-cover")).css("cursor", $element.css("cursor"))
                    },
                    _getBoundOffset() {
                        let boundOffset = this.option("boundOffset");
                        if ((0, _type.isFunction)(boundOffset)) {
                            boundOffset = boundOffset.call(this)
                        }
                        return (0, _string.quadToObject)(boundOffset)
                    },
                    _getArea() {
                        let area = this.option("boundary");
                        if ((0, _type.isFunction)(area)) {
                            area = area.call(this)
                        }
                        return (0, _renderer.default)(area)
                    },
                    _getContainer() {
                        let container = this.option("container");
                        if (void 0 === container) {
                            container = (0, _view_port.value)()
                        }
                        return (0, _renderer.default)(container)
                    },
                    _getDraggableElementOffset(initialOffsetX, initialOffsetY) {
                        var _a, _b, _c, _d;
                        const initScrollTop = this._initScrollTop;
                        const initScrollLeft = this._initScrollLeft;
                        const scrollTop = this._getScrollableScrollTop();
                        const scrollLeft = this._getScrollableScrollLeft();
                        const elementPosition = (0, _renderer.default)(this.element()).css("position");
                        const isFixedPosition = "fixed" === elementPosition;
                        const result = {
                            left: (null !== (_b = null === (_a = this._startPosition) || void 0 === _a ? void 0 : _a.left) && void 0 !== _b ? _b : 0) + initialOffsetX,
                            top: (null !== (_d = null === (_c = this._startPosition) || void 0 === _c ? void 0 : _c.top) && void 0 !== _d ? _d : 0) + initialOffsetY
                        };
                        if (isFixedPosition || this._hasClonedDraggable()) {
                            return result
                        }
                        return {
                            left: (0, _type.isNumeric)(scrollLeft) ? result.left + scrollLeft - initScrollLeft : result.left,
                            top: (0, _type.isNumeric)(scrollTop) ? result.top + scrollTop - initScrollTop : result.top
                        }
                    },
                    _hasClonedDraggable() {
                        return this.option("clone") || this.option("dragTemplate")
                    },
                    _dragMoveHandler(e) {
                        this._dragMoveArgs = e;
                        if (!this._$dragElement) {
                            e.cancel = true;
                            return
                        }
                        const offset = this._getDraggableElementOffset(e.offset.x, e.offset.y);
                        this._move(offset);
                        this._updateScrollable(e);
                        const eventArgs = this._getEventArgs(e);
                        this._getAction("onDragMove")(eventArgs);
                        if (true === eventArgs.cancel) {
                            return
                        }
                        const targetDraggable = this._getTargetDraggable();
                        targetDraggable.dragMove(e, scrollBy)
                    },
                    _updateScrollable(e) {
                        const that = this;
                        if (that.option("autoScroll")) {
                            const mousePosition = getMousePosition(e);
                            const allObjects = _dom_adapter.default.elementsFromPoint(mousePosition.x, mousePosition.y, this.$element().get(0));
                            that._verticalScrollHelper.updateScrollable(allObjects, mousePosition);
                            that._horizontalScrollHelper.updateScrollable(allObjects, mousePosition)
                        }
                    },
                    _getScrollable($element) {
                        let $scrollable;
                        $element.parents().toArray().some(parent => {
                            const $parent = (0, _renderer.default)(parent);
                            if (this._horizontalScrollHelper.isScrollable($parent) || this._verticalScrollHelper.isScrollable($parent)) {
                                $scrollable = $parent;
                                return true
                            }
                            return false
                        });
                        return $scrollable
                    },
                    _getScrollableScrollTop() {
                        var _a, _b;
                        return null !== (_b = null === (_a = this._getScrollable((0, _renderer.default)(this.element()))) || void 0 === _a ? void 0 : _a.scrollTop()) && void 0 !== _b ? _b : 0
                    },
                    _getScrollableScrollLeft() {
                        var _a, _b;
                        return null !== (_b = null === (_a = this._getScrollable((0, _renderer.default)(this.element()))) || void 0 === _a ? void 0 : _a.scrollLeft()) && void 0 !== _b ? _b : 0
                    },
                    _defaultActionArgs() {
                        const args = this.callBase.apply(this, arguments);
                        const component = this.option("component");
                        if (component) {
                            args.component = component;
                            args.element = component.element()
                        }
                        return args
                    },
                    _getEventArgs(e) {
                        const sourceDraggable = this._getSourceDraggable();
                        const targetDraggable = this._getTargetDraggable();
                        return {
                            event: e,
                            itemData: sourceDraggable.option("itemData"),
                            itemElement: (0, _element.getPublicElement)(sourceDraggable._$sourceElement),
                            fromComponent: sourceDraggable.option("component") || sourceDraggable,
                            toComponent: targetDraggable.option("component") || targetDraggable,
                            fromData: sourceDraggable.option("data"),
                            toData: targetDraggable.option("data")
                        }
                    },
                    _getDragStartArgs(e, $itemElement) {
                        const args = this._getEventArgs(e);
                        return {
                            event: args.event,
                            itemData: args.itemData,
                            itemElement: $itemElement,
                            fromData: args.fromData
                        }
                    },
                    _revertItemToInitialPosition() {
                        !this._dragElementIsCloned() && this._move(this._initialLocate, this._$sourceElement)
                    },
                    _dragEndHandler(e) {
                        const d = (0, _deferred.Deferred)();
                        const dragEndEventArgs = this._getEventArgs(e);
                        const dropEventArgs = this._getEventArgs(e);
                        const targetDraggable = this._getTargetDraggable();
                        let needRevertPosition = true;
                        this.dragInProgress = false;
                        try {
                            this._getAction("onDragEnd")(dragEndEventArgs)
                        } finally {
                            (0, _deferred.when)((0, _deferred.fromPromise)(dragEndEventArgs.cancel)).done(cancel => {
                                if (!cancel) {
                                    if (targetDraggable !== this) {
                                        targetDraggable._getAction("onDrop")(dropEventArgs)
                                    }
                                    if (!dropEventArgs.cancel) {
                                        needRevertPosition = false;
                                        (0, _deferred.when)((0, _deferred.fromPromise)(targetDraggable.dragEnd(dragEndEventArgs))).always(d.resolve);
                                        return
                                    }
                                }
                                d.resolve()
                            }).fail(d.resolve);
                            d.done(() => {
                                if (needRevertPosition) {
                                    this._revertItemToInitialPosition()
                                }
                                this._resetDragOptions(targetDraggable)
                            })
                        }
                    },
                    _isTargetOverAnotherDraggable(e) {
                        const sourceDraggable = this._getSourceDraggable();
                        if (this === sourceDraggable) {
                            return false
                        }
                        const $dragElement = sourceDraggable._$dragElement;
                        const $sourceDraggableElement = sourceDraggable.$element();
                        const $targetDraggableElement = this.$element();
                        const mousePosition = getMousePosition(e);
                        const elements = _dom_adapter.default.elementsFromPoint(mousePosition.x, mousePosition.y, this.element());
                        const firstWidgetElement = elements.filter(element => {
                            const $element = (0, _renderer.default)(element);
                            if ($element.hasClass(this._addWidgetPrefix())) {
                                return !$element.closest($dragElement).length
                            }
                            return false
                        })[0];
                        const $sourceElement = this._getSourceElement();
                        const isTargetOverItself = firstWidgetElement === $sourceDraggableElement.get(0);
                        const isTargetOverNestedDraggable = (0, _renderer.default)(firstWidgetElement).closest($sourceElement).length;
                        return !firstWidgetElement || firstWidgetElement === $targetDraggableElement.get(0) && !isTargetOverItself && !isTargetOverNestedDraggable
                    },
                    _dragEnterHandler(e) {
                        this._fireDragEnterEvent(e);
                        if (this._isTargetOverAnotherDraggable(e)) {
                            this._setTargetDraggable()
                        }
                        const sourceDraggable = this._getSourceDraggable();
                        sourceDraggable.dragEnter(e)
                    },
                    _dragLeaveHandler(e) {
                        this._fireDragLeaveEvent(e);
                        this._resetTargetDraggable();
                        if (this !== this._getSourceDraggable()) {
                            this.reset()
                        }
                        const sourceDraggable = this._getSourceDraggable();
                        sourceDraggable.dragLeave(e)
                    },
                    _keydownHandler(e) {
                        if (this.dragInProgress && "Escape" === e.key) {
                            this._keydownEscapeHandler(e)
                        }
                    },
                    _keydownEscapeHandler(e) {
                        const $sourceElement = this._getSourceElement();
                        if (!$sourceElement) {
                            return
                        }
                        const dragCancelEventArgs = this._getEventArgs(e);
                        this._getAction("onDragCancel")(dragCancelEventArgs);
                        if (dragCancelEventArgs.cancel) {
                            return
                        }
                        this.dragInProgress = false;
                        null === sourceDraggable || void 0 === sourceDraggable ? void 0 : sourceDraggable._toggleDraggingClass(false);
                        this._detachEventHandlers();
                        this._revertItemToInitialPosition();
                        const targetDraggable = this._getTargetDraggable();
                        this._resetDragOptions(targetDraggable);
                        this._attachEventHandlers()
                    },
                    _getAction(name) {
                        return this["_".concat(name, "Action")] || this._createActionByOption(name)
                    },
                    _getAnonymousTemplateName: () => "content",
                    _initTemplates() {
                        if (!this.option("contentTemplate")) {
                            return
                        }
                        this._templateManager.addDefaultTemplates({
                            content: new _empty_template.EmptyTemplate
                        });
                        this.callBase.apply(this, arguments)
                    },
                    _render() {
                        this.callBase();
                        this.$element().addClass(this._addWidgetPrefix());
                        const transclude = this._templateManager.anonymousTemplateName === this.option("contentTemplate");
                        const template = this._getTemplateByOption("contentTemplate");
                        if (template) {
                            (0, _renderer.default)(template.render({
                                container: this.element(),
                                transclude: transclude
                            }))
                        }
                    },
                    _optionChanged(args) {
                        const {
                            name: name
                        } = args;
                        switch (name) {
                            case "onDragStart":
                            case "onDragMove":
                            case "onDragEnd":
                            case "onDrop":
                            case "onDragEnter":
                            case "onDragLeave":
                            case "onDragCancel":
                            case "onDraggableElementShown":
                                this["_".concat(name, "Action")] = this._createActionByOption(name);
                                break;
                            case "dragTemplate":
                            case "contentTemplate":
                            case "container":
                            case "clone":
                                break;
                            case "allowMoveByClick":
                            case "dragDirection":
                            case "disabled":
                            case "boundary":
                            case "filter":
                            case "immediate":
                                this._resetDragElement();
                                this._detachEventHandlers();
                                this._attachEventHandlers();
                                break;
                            case "onCancelByEsc":
                                this._keydownHandler();
                                break;
                            case "autoScroll":
                                this._verticalScrollHelper.reset();
                                this._horizontalScrollHelper.reset();
                                break;
                            case "scrollSensitivity":
                            case "scrollSpeed":
                            case "boundOffset":
                            case "handle":
                            case "group":
                            case "data":
                            case "itemData":
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _getTargetDraggable() {
                        return targetDraggable || this
                    },
                    _getSourceDraggable() {
                        return sourceDraggable || this
                    },
                    _setTargetDraggable() {
                        const currentGroup = this.option("group");
                        const sourceDraggable = this._getSourceDraggable();
                        if (currentGroup && currentGroup === sourceDraggable.option("group")) {
                            targetDraggable = this
                        }
                    },
                    _setSourceDraggable() {
                        sourceDraggable = this
                    },
                    _resetSourceDraggable() {
                        sourceDraggable = null
                    },
                    _resetTargetDraggable() {
                        targetDraggable = null
                    },
                    _resetDragOptions(targetDraggable) {
                        this.reset();
                        targetDraggable.reset();
                        this._stopAnimator();
                        this._horizontalScrollHelper.reset();
                        this._verticalScrollHelper.reset();
                        this._resetDragElement();
                        this._resetSourceElement();
                        this._resetTargetDraggable();
                        this._resetSourceDraggable()
                    },
                    _dispose() {
                        this.callBase();
                        this._detachEventHandlers();
                        this._resetDragElement();
                        this._resetTargetDraggable();
                        this._resetSourceDraggable();
                        this._$sourceElement = null;
                        this._stopAnimator()
                    },
                    _fireDragEnterEvent(sourceEvent) {
                        const args = this._getEventArgs(sourceEvent);
                        this._getAction("onDragEnter")(args)
                    },
                    _fireDragLeaveEvent(sourceEvent) {
                        const args = this._getEventArgs(sourceEvent);
                        this._getAction("onDragLeave")(args)
                    }
                });
                (0, _component_registrator.default)(DRAGGABLE, Draggable);
                var _default = Draggable;
                exports.default = _default
            },
        75500:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/m_sortable.js ***!
              \**********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _fx = _interopRequireDefault(__webpack_require__( /*! ../animation/fx */ 87209));
                var _translator = __webpack_require__( /*! ../animation/translator */ 31648);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _element = __webpack_require__( /*! ../core/element */ 6415);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _position = __webpack_require__( /*! ../core/utils/position */ 37518);
                var _size = __webpack_require__( /*! ../core/utils/size */ 58664);
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../events/core/events_engine */ 55994));
                var _m_draggable = _interopRequireDefault(__webpack_require__( /*! ./m_draggable */ 86988));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();
                const isElementVisible = itemElement => (0, _renderer.default)(itemElement).is(":visible");
                const animate = (element, config) => {
                    var _a, _b;
                    if (!element) {
                        return
                    }
                    const left = (null === (_a = config.to) || void 0 === _a ? void 0 : _a.left) || 0;
                    const top = (null === (_b = config.to) || void 0 === _b ? void 0 : _b.top) || 0;
                    element.style.transform = "translate(".concat(left, "px,").concat(top, "px)");
                    element.style.transition = _fx.default.off ? "" : "transform ".concat(config.duration, "ms ").concat(config.easing)
                };
                const stopAnimation = element => {
                    if (!element) {
                        return
                    }
                    element.style.transform = "";
                    element.style.transition = ""
                };
                const Sortable = _m_draggable.default.inherit({
                    _init() {
                        this.callBase();
                        this._sourceScrollHandler = this._handleSourceScroll.bind(this);
                        this._sourceScrollableInfo = null
                    },
                    _getDefaultOptions() {
                        return (0, _extend.extend)(this.callBase(), {
                            clone: true,
                            filter: "> *",
                            itemOrientation: "vertical",
                            dropFeedbackMode: "push",
                            allowDropInsideItem: false,
                            allowReordering: true,
                            moveItemOnDrop: false,
                            onDragChange: null,
                            onAdd: null,
                            onRemove: null,
                            onReorder: null,
                            onPlaceholderPrepared: null,
                            animation: {
                                type: "slide",
                                duration: 300,
                                easing: "ease"
                            },
                            fromIndex: null,
                            toIndex: null,
                            dropInsideItem: false,
                            itemPoints: null,
                            fromIndexOffset: 0,
                            offset: 0,
                            autoUpdate: false,
                            draggableElementSize: 0
                        })
                    },
                    reset() {
                        this.option({
                            dropInsideItem: false,
                            toIndex: null,
                            fromIndex: null,
                            itemPoints: null,
                            fromIndexOffset: 0,
                            draggableElementSize: 0
                        });
                        if (this._$placeholderElement) {
                            this._$placeholderElement.remove()
                        }
                        this._$placeholderElement = null;
                        if (!this._isIndicateMode() && this._$modifiedItem) {
                            this._$modifiedItem.css("marginBottom", this._modifiedItemMargin);
                            this._$modifiedItem = null
                        }
                    },
                    _getPrevVisibleItem: (items, index) => items.slice(0, index).reverse().filter(isElementVisible)[0],
                    _dragStartHandler(e) {
                        this.callBase.apply(this, arguments);
                        if (true === e.cancel) {
                            return
                        }
                        const $sourceElement = this._getSourceElement();
                        this._updateItemPoints();
                        this._subscribeToSourceScroll(e);
                        this.option("fromIndex", this._getElementIndex($sourceElement));
                        this.option("fromIndexOffset", this.option("offset"))
                    },
                    _subscribeToSourceScroll(e) {
                        const $scrollable = this._getScrollable((0, _renderer.default)(e.target));
                        if ($scrollable) {
                            this._sourceScrollableInfo = {
                                element: $scrollable,
                                scrollLeft: $scrollable.scrollLeft(),
                                scrollTop: $scrollable.scrollTop()
                            };
                            _events_engine.default.off($scrollable, "scroll", this._sourceScrollHandler);
                            _events_engine.default.on($scrollable, "scroll", this._sourceScrollHandler)
                        }
                    },
                    _unsubscribeFromSourceScroll() {
                        if (this._sourceScrollableInfo) {
                            _events_engine.default.off(this._sourceScrollableInfo.element, "scroll", this._sourceScrollHandler);
                            this._sourceScrollableInfo = null
                        }
                    },
                    _handleSourceScroll(e) {
                        const sourceScrollableInfo = this._sourceScrollableInfo;
                        if (sourceScrollableInfo) {
                            ["scrollLeft", "scrollTop"].forEach(scrollProp => {
                                if (e.target[scrollProp] !== sourceScrollableInfo[scrollProp]) {
                                    const scrollBy = e.target[scrollProp] - sourceScrollableInfo[scrollProp];
                                    this._correctItemPoints(scrollBy);
                                    this._movePlaceholder();
                                    sourceScrollableInfo[scrollProp] = e.target[scrollProp]
                                }
                            })
                        }
                    },
                    _dragEnterHandler(e) {
                        this.callBase.apply(this, arguments);
                        if (this === this._getSourceDraggable()) {
                            return
                        }
                        this._subscribeToSourceScroll(e);
                        this._updateItemPoints();
                        this.option("fromIndex", -1);
                        if (!this._isIndicateMode()) {
                            const itemPoints = this.option("itemPoints");
                            const lastItemPoint = itemPoints[itemPoints.length - 1];
                            if (lastItemPoint) {
                                const $element = this.$element();
                                const $sourceElement = this._getSourceElement();
                                const isVertical = this._isVerticalOrientation();
                                const sourceElementSize = isVertical ? (0, _size.getOuterHeight)($sourceElement, true) : (0, _size.getOuterWidth)($sourceElement, true);
                                const scrollSize = $element.get(0)[isVertical ? "scrollHeight" : "scrollWidth"];
                                const scrollPosition = $element.get(0)[isVertical ? "scrollTop" : "scrollLeft"];
                                const positionProp = isVertical ? "top" : "left";
                                const lastPointPosition = lastItemPoint[positionProp];
                                const elementPosition = $element.offset()[positionProp];
                                const freeSize = elementPosition + scrollSize - scrollPosition - lastPointPosition;
                                if (freeSize < sourceElementSize) {
                                    if (isVertical) {
                                        const items = this._getItems();
                                        const $lastItem = (0, _renderer.default)(this._getPrevVisibleItem(items));
                                        this._$modifiedItem = $lastItem;
                                        this._modifiedItemMargin = $lastItem.get(0).style.marginBottom;
                                        $lastItem.css("marginBottom", sourceElementSize - freeSize);
                                        const $sortable = $lastItem.closest(".dx-sortable");
                                        const sortable = $sortable.data("dxScrollable") || $sortable.data("dxScrollView");
                                        sortable && sortable.update()
                                    }
                                }
                            }
                        }
                    },
                    _dragLeaveHandler() {
                        this.callBase.apply(this, arguments);
                        if (this !== this._getSourceDraggable()) {
                            this._unsubscribeFromSourceScroll()
                        }
                    },
                    dragEnter() {
                        if (this !== this._getTargetDraggable()) {
                            this.option("toIndex", -1)
                        }
                    },
                    dragLeave() {
                        if (this !== this._getTargetDraggable()) {
                            this.option("toIndex", this.option("fromIndex"))
                        }
                    },
                    _allowDrop(event) {
                        const targetDraggable = this._getTargetDraggable();
                        const $targetDraggable = targetDraggable.$element();
                        const $scrollable = this._getScrollable($targetDraggable);
                        if ($scrollable) {
                            const {
                                left: left,
                                right: right,
                                top: top,
                                bottom: bottom
                            } = function($scrollable) {
                                const offset = $scrollable.offset();
                                const {
                                    style: style
                                } = $scrollable[0];
                                const paddingLeft = parseFloat(style.paddingLeft) || 0;
                                const paddingRight = parseFloat(style.paddingRight) || 0;
                                const paddingTop = parseFloat(style.paddingTop) || 0;
                                const width = $scrollable[0].clientWidth - (paddingLeft + paddingRight);
                                const height = (0, _size.getHeight)($scrollable);
                                const left = offset.left + paddingLeft;
                                const top = offset.top + paddingTop;
                                return {
                                    left: left,
                                    right: left + width,
                                    top: top,
                                    bottom: top + height
                                }
                            }($scrollable);
                            const toIndex = this.option("toIndex");
                            const itemPoints = this.option("itemPoints");
                            const itemPoint = null === itemPoints || void 0 === itemPoints ? void 0 : itemPoints.filter(item => item.index === toIndex)[0];
                            if (itemPoint && void 0 !== itemPoint.top) {
                                const isVertical = this._isVerticalOrientation();
                                if (isVertical) {
                                    return top <= Math.ceil(itemPoint.top) && Math.floor(itemPoint.top) <= bottom
                                }
                                return left <= Math.ceil(itemPoint.left) && Math.floor(itemPoint.left) <= right
                            }
                        }
                        return true
                    },
                    dragEnd(sourceEvent) {
                        this._unsubscribeFromSourceScroll();
                        const $sourceElement = this._getSourceElement();
                        const sourceDraggable = this._getSourceDraggable();
                        const isSourceDraggable = sourceDraggable.NAME !== this.NAME;
                        const toIndex = this.option("toIndex");
                        const {
                            event: event
                        } = sourceEvent;
                        const allowDrop = this._allowDrop(event);
                        if (null !== toIndex && toIndex >= 0 && allowDrop) {
                            let cancelAdd;
                            let cancelRemove;
                            if (sourceDraggable !== this) {
                                cancelAdd = this._fireAddEvent(event);
                                if (!cancelAdd) {
                                    cancelRemove = this._fireRemoveEvent(event)
                                }
                            }
                            if (isSourceDraggable) {
                                (0, _translator.resetPosition)($sourceElement)
                            }
                            if (this.option("moveItemOnDrop")) {
                                !cancelAdd && this._moveItem($sourceElement, toIndex, cancelRemove)
                            }
                            if (sourceDraggable === this) {
                                return this._fireReorderEvent(event)
                            }
                        }
                        return (0, _deferred.Deferred)().resolve()
                    },
                    dragMove(e) {
                        const itemPoints = this.option("itemPoints");
                        if (!itemPoints) {
                            return
                        }
                        const isVertical = this._isVerticalOrientation();
                        const axisName = isVertical ? "top" : "left";
                        const cursorPosition = isVertical ? e.pageY : e.pageX;
                        const rtlEnabled = this.option("rtlEnabled");
                        let itemPoint;
                        for (let i = itemPoints.length - 1; i >= 0; i--) {
                            const centerPosition = itemPoints[i + 1] && (itemPoints[i][axisName] + itemPoints[i + 1][axisName]) / 2;
                            if ((!isVertical && rtlEnabled ? cursorPosition > centerPosition : centerPosition > cursorPosition) || void 0 === centerPosition) {
                                itemPoint = itemPoints[i]
                            } else {
                                break
                            }
                        }
                        if (itemPoint) {
                            this._updatePlaceholderPosition(e, itemPoint);
                            if (this._verticalScrollHelper.isScrolling() && this._isIndicateMode()) {
                                this._movePlaceholder()
                            }
                        }
                    },
                    _isIndicateMode() {
                        return "indicate" === this.option("dropFeedbackMode") || this.option("allowDropInsideItem")
                    },
                    _createPlaceholder() {
                        let $placeholderContainer;
                        if (this._isIndicateMode()) {
                            $placeholderContainer = (0, _renderer.default)("<div>").addClass(this._addWidgetPrefix("placeholder")).insertBefore(this._getSourceDraggable()._$dragElement)
                        }
                        this._$placeholderElement = $placeholderContainer;
                        return $placeholderContainer
                    },
                    _getItems() {
                        const itemsSelector = this._getItemsSelector();
                        return this._$content().find(itemsSelector).not(".".concat(this._addWidgetPrefix("placeholder"))).not(".".concat(this._addWidgetPrefix("clone"))).toArray()
                    },
                    _allowReordering() {
                        const sourceDraggable = this._getSourceDraggable();
                        const targetDraggable = this._getTargetDraggable();
                        return sourceDraggable !== targetDraggable || this.option("allowReordering")
                    },
                    _isValidPoint(visibleIndex, draggableVisibleIndex, dropInsideItem) {
                        const allowDropInsideItem = this.option("allowDropInsideItem");
                        const allowReordering = dropInsideItem || this._allowReordering();
                        if (!allowReordering && (0 !== visibleIndex || !allowDropInsideItem)) {
                            return false
                        }
                        if (!this._isIndicateMode()) {
                            return true
                        }
                        return -1 === draggableVisibleIndex || visibleIndex !== draggableVisibleIndex && (dropInsideItem || visibleIndex !== draggableVisibleIndex + 1)
                    },
                    _getItemPoints() {
                        const that = this;
                        let result = [];
                        let $item;
                        let offset;
                        let itemWidth;
                        const rtlEnabled = that.option("rtlEnabled");
                        const isVertical = that._isVerticalOrientation();
                        const itemElements = that._getItems();
                        const visibleItemElements = itemElements.filter(isElementVisible);
                        const visibleItemCount = visibleItemElements.length;
                        const $draggableItem = this._getDraggableElement();
                        const draggableVisibleIndex = visibleItemElements.indexOf($draggableItem.get(0));
                        if (visibleItemCount) {
                            for (let i = 0; i <= visibleItemCount; i++) {
                                const needCorrectLeftPosition = !isVertical && rtlEnabled ^ i === visibleItemCount;
                                const needCorrectTopPosition = isVertical && i === visibleItemCount;
                                if (i < visibleItemCount) {
                                    $item = (0, _renderer.default)(visibleItemElements[i]);
                                    offset = $item.offset();
                                    itemWidth = (0, _size.getOuterWidth)($item)
                                }
                                result.push({
                                    dropInsideItem: false,
                                    left: offset.left + (needCorrectLeftPosition ? itemWidth : 0),
                                    top: offset.top + (needCorrectTopPosition ? result[i - 1].height : 0),
                                    index: i === visibleItemCount ? itemElements.length : itemElements.indexOf($item.get(0)),
                                    $item: $item,
                                    width: (0, _size.getOuterWidth)($item),
                                    height: (0, _size.getOuterHeight)($item),
                                    isValid: that._isValidPoint(i, draggableVisibleIndex)
                                })
                            }
                            if (this.option("allowDropInsideItem")) {
                                const points = result;
                                result = [];
                                for (let i = 0; i < points.length; i++) {
                                    result.push(points[i]);
                                    if (points[i + 1]) {
                                        result.push((0, _extend.extend)({}, points[i], {
                                            dropInsideItem: true,
                                            top: Math.floor((points[i].top + points[i + 1].top) / 2),
                                            left: Math.floor((points[i].left + points[i + 1].left) / 2),
                                            isValid: this._isValidPoint(i, draggableVisibleIndex, true)
                                        }))
                                    }
                                }
                            }
                        } else {
                            result.push({
                                dropInsideItem: false,
                                index: 0,
                                isValid: true
                            })
                        }
                        return result
                    },
                    _updateItemPoints(forceUpdate) {
                        if (forceUpdate || this.option("autoUpdate") || !this.option("itemPoints")) {
                            this.option("itemPoints", this._getItemPoints())
                        }
                    },
                    _correctItemPoints(scrollBy) {
                        const itemPoints = this.option("itemPoints");
                        if (scrollBy && itemPoints && !this.option("autoUpdate")) {
                            const isVertical = this._isVerticalOrientation();
                            const positionPropName = isVertical ? "top" : "left";
                            itemPoints.forEach(itemPoint => {
                                itemPoint[positionPropName] -= scrollBy
                            })
                        }
                    },
                    _getElementIndex($itemElement) {
                        return this._getItems().indexOf($itemElement.get(0))
                    },
                    _getDragTemplateArgs($element) {
                        const args = this.callBase.apply(this, arguments);
                        args.model.fromIndex = this._getElementIndex($element);
                        return args
                    },
                    _togglePlaceholder(value) {
                        this._$placeholderElement && this._$placeholderElement.toggle(value)
                    },
                    _isVerticalOrientation() {
                        return "vertical" === this.option("itemOrientation")
                    },
                    _normalizeToIndex(toIndex, skipOffsetting) {
                        const isAnotherDraggable = this._getSourceDraggable() !== this._getTargetDraggable();
                        const fromIndex = this._getActualFromIndex();
                        if (null === toIndex) {
                            return fromIndex
                        }
                        return Math.max(isAnotherDraggable || fromIndex >= toIndex || skipOffsetting ? toIndex : toIndex - 1, 0)
                    },
                    _updatePlaceholderPosition(e, itemPoint) {
                        const sourceDraggable = this._getSourceDraggable();
                        const toIndex = this._normalizeToIndex(itemPoint.index, itemPoint.dropInsideItem);
                        const eventArgs = (0, _extend.extend)(this._getEventArgs(e), {
                            toIndex: toIndex,
                            dropInsideItem: itemPoint.dropInsideItem
                        });
                        itemPoint.isValid && this._getAction("onDragChange")(eventArgs);
                        if (eventArgs.cancel || !itemPoint.isValid) {
                            if (!itemPoint.isValid) {
                                this.option({
                                    dropInsideItem: false,
                                    toIndex: null
                                })
                            }
                            return
                        }
                        this.option({
                            dropInsideItem: itemPoint.dropInsideItem,
                            toIndex: itemPoint.index
                        });
                        this._getAction("onPlaceholderPrepared")((0, _extend.extend)(this._getEventArgs(e), {
                            placeholderElement: (0, _element.getPublicElement)(this._$placeholderElement),
                            dragElement: (0, _element.getPublicElement)(sourceDraggable._$dragElement)
                        }));
                        this._updateItemPoints()
                    },
                    _makeWidthCorrection($item, width) {
                        this._$scrollable = this._getScrollable($item);
                        if (this._$scrollable) {
                            const scrollableWidth = (0, _size.getWidth)(this._$scrollable);
                            const overflowLeft = this._$scrollable.offset().left - $item.offset().left;
                            const overflowRight = (0, _size.getOuterWidth)($item) - overflowLeft - scrollableWidth;
                            if (overflowLeft > 0) {
                                width -= overflowLeft
                            }
                            if (overflowRight > 0) {
                                width -= overflowRight
                            }
                        }
                        return width
                    },
                    _updatePlaceholderSizes($placeholderElement, itemElement) {
                        const dropInsideItem = this.option("dropInsideItem");
                        const $item = (0, _renderer.default)(itemElement);
                        const isVertical = this._isVerticalOrientation();
                        let width = "";
                        let height = "";
                        $placeholderElement.toggleClass(this._addWidgetPrefix("placeholder-inside"), dropInsideItem);
                        if (isVertical || dropInsideItem) {
                            width = (0, _size.getOuterWidth)($item)
                        }
                        if (!isVertical || dropInsideItem) {
                            height = (0, _size.getOuterHeight)($item)
                        }
                        width = this._makeWidthCorrection($item, width);
                        $placeholderElement.css({
                            width: width,
                            height: height
                        })
                    },
                    _moveItem($itemElement, index, cancelRemove) {
                        let $prevTargetItemElement;
                        const $itemElements = this._getItems();
                        const $targetItemElement = $itemElements[index];
                        const sourceDraggable = this._getSourceDraggable();
                        if (cancelRemove) {
                            $itemElement = $itemElement.clone();
                            sourceDraggable._toggleDragSourceClass(false, $itemElement)
                        }
                        if (!$targetItemElement) {
                            $prevTargetItemElement = $itemElements[index - 1]
                        }
                        this._moveItemCore($itemElement, $targetItemElement, $prevTargetItemElement)
                    },
                    _moveItemCore($targetItem, item, prevItem) {
                        if (!item && !prevItem) {
                            $targetItem.appendTo(this.$element())
                        } else if (prevItem) {
                            $targetItem.insertAfter((0, _renderer.default)(prevItem))
                        } else {
                            $targetItem.insertBefore((0, _renderer.default)(item))
                        }
                    },
                    _getDragStartArgs(e, $itemElement) {
                        return (0, _extend.extend)(this.callBase.apply(this, arguments), {
                            fromIndex: this._getElementIndex($itemElement)
                        })
                    },
                    _getEventArgs(e) {
                        const sourceDraggable = this._getSourceDraggable();
                        const targetDraggable = this._getTargetDraggable();
                        const dropInsideItem = targetDraggable.option("dropInsideItem");
                        return (0, _extend.extend)(this.callBase.apply(this, arguments), {
                            fromIndex: sourceDraggable.option("fromIndex"),
                            toIndex: this._normalizeToIndex(targetDraggable.option("toIndex"), dropInsideItem),
                            dropInsideItem: dropInsideItem
                        })
                    },
                    _optionChanged(args) {
                        const {
                            name: name
                        } = args;
                        switch (name) {
                            case "onDragChange":
                            case "onPlaceholderPrepared":
                            case "onAdd":
                            case "onRemove":
                            case "onReorder":
                                this["_".concat(name, "Action")] = this._createActionByOption(name);
                                break;
                            case "itemOrientation":
                            case "allowDropInsideItem":
                            case "moveItemOnDrop":
                            case "dropFeedbackMode":
                            case "itemPoints":
                            case "animation":
                            case "allowReordering":
                            case "fromIndexOffset":
                            case "offset":
                            case "draggableElementSize":
                            case "autoUpdate":
                                break;
                            case "fromIndex":
                                [false, true].forEach(isDragSource => {
                                    const fromIndex = isDragSource ? args.value : args.previousValue;
                                    if (null !== fromIndex) {
                                        const $fromElement = (0, _renderer.default)(this._getItems()[fromIndex]);
                                        this._toggleDragSourceClass(isDragSource, $fromElement)
                                    }
                                });
                                break;
                            case "dropInsideItem":
                                this._optionChangedDropInsideItem(args);
                                break;
                            case "toIndex":
                                this._optionChangedToIndex(args);
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _optionChangedDropInsideItem() {
                        if (this._isIndicateMode() && this._$placeholderElement) {
                            this._movePlaceholder()
                        }
                    },
                    _isPositionVisible(position) {
                        const $element = this.$element();
                        let scrollContainer;
                        if ("hidden" !== $element.css("overflow")) {
                            scrollContainer = $element.get(0)
                        } else {
                            $element.parents().each((function() {
                                if ("visible" !== (0, _renderer.default)(this).css("overflow")) {
                                    scrollContainer = this;
                                    return false
                                }
                                return
                            }))
                        }
                        if (scrollContainer) {
                            const clientRect = (0, _position.getBoundingRect)(scrollContainer);
                            const isVerticalOrientation = this._isVerticalOrientation();
                            const start = isVerticalOrientation ? "top" : "left";
                            const end = isVerticalOrientation ? "bottom" : "right";
                            const pageOffset = isVerticalOrientation ? window.pageYOffset : window.pageXOffset;
                            if (position[start] < clientRect[start] + pageOffset || position[start] > clientRect[end] + pageOffset) {
                                return false
                            }
                        }
                        return true
                    },
                    _optionChangedToIndex(args) {
                        const toIndex = args.value;
                        if (this._isIndicateMode()) {
                            const showPlaceholder = null !== toIndex && toIndex >= 0;
                            this._togglePlaceholder(showPlaceholder);
                            if (showPlaceholder) {
                                this._movePlaceholder()
                            }
                        } else {
                            this._moveItems(args.previousValue, args.value, args.fullUpdate)
                        }
                    },
                    update() {
                        if (null === this.option("fromIndex") && null === this.option("toIndex")) {
                            return
                        }
                        this._updateItemPoints(true);
                        this._updateDragSourceClass();
                        const toIndex = this.option("toIndex");
                        this._optionChangedToIndex({
                            value: toIndex,
                            fullUpdate: true
                        })
                    },
                    _updateDragSourceClass() {
                        const fromIndex = this._getActualFromIndex();
                        const $fromElement = (0, _renderer.default)(this._getItems()[fromIndex]);
                        if ($fromElement.length) {
                            this._$sourceElement = $fromElement;
                            this._toggleDragSourceClass(true, $fromElement)
                        }
                    },
                    _makeLeftCorrection(left) {
                        const $scrollable = this._$scrollable;
                        if ($scrollable && this._isVerticalOrientation()) {
                            const overflowLeft = $scrollable.offset().left - left;
                            if (overflowLeft > 0) {
                                left += overflowLeft
                            }
                        }
                        return left
                    },
                    _movePlaceholder() {
                        const that = this;
                        const $placeholderElement = that._$placeholderElement || that._createPlaceholder();
                        if (!$placeholderElement) {
                            return
                        }
                        const items = that._getItems();
                        const toIndex = that.option("toIndex");
                        const isVerticalOrientation = that._isVerticalOrientation();
                        const rtlEnabled = this.option("rtlEnabled");
                        const dropInsideItem = that.option("dropInsideItem");
                        let position = null;
                        let itemElement = items[toIndex];
                        if (itemElement) {
                            const $itemElement = (0, _renderer.default)(itemElement);
                            position = $itemElement.offset();
                            if (!isVerticalOrientation && rtlEnabled && !dropInsideItem) {
                                position.left += (0, _size.getOuterWidth)($itemElement, true)
                            }
                        } else {
                            const prevVisibleItemElement = itemElement = this._getPrevVisibleItem(items, toIndex);
                            if (prevVisibleItemElement) {
                                position = (0, _renderer.default)(prevVisibleItemElement).offset();
                                if (isVerticalOrientation) {
                                    position.top += (0, _size.getOuterHeight)(prevVisibleItemElement, true)
                                } else if (!rtlEnabled) {
                                    position.left += (0, _size.getOuterWidth)(prevVisibleItemElement, true)
                                }
                            }
                        }
                        that._updatePlaceholderSizes($placeholderElement, itemElement);
                        if (position && !that._isPositionVisible(position)) {
                            position = null
                        }
                        if (position) {
                            const isLastVerticalPosition = isVerticalOrientation && toIndex === items.length;
                            const outerPlaceholderHeight = (0, _size.getOuterHeight)($placeholderElement);
                            position.left = that._makeLeftCorrection(position.left);
                            position.top = isLastVerticalPosition && position.top >= outerPlaceholderHeight ? position.top - outerPlaceholderHeight : position.top;
                            that._move(position, $placeholderElement)
                        }
                        $placeholderElement.toggle(!!position)
                    },
                    _getPositions(items, elementSize, fromIndex, toIndex) {
                        const positions = [];
                        for (let i = 0; i < items.length; i++) {
                            let position = 0;
                            if (null === toIndex || null === fromIndex) {
                                positions.push(position);
                                continue
                            }
                            if (-1 === fromIndex) {
                                if (i >= toIndex) {
                                    position = elementSize
                                }
                            } else if (-1 === toIndex) {
                                if (i > fromIndex) {
                                    position = -elementSize
                                }
                            } else if (fromIndex < toIndex) {
                                if (i > fromIndex && i < toIndex) {
                                    position = -elementSize
                                }
                            } else if (fromIndex > toIndex) {
                                if (i >= toIndex && i < fromIndex) {
                                    position = elementSize
                                }
                            }
                            positions.push(position)
                        }
                        return positions
                    },
                    _getDraggableElementSize(isVerticalOrientation) {
                        const $draggableItem = this._getDraggableElement();
                        let size = this.option("draggableElementSize");
                        if (!size) {
                            size = isVerticalOrientation ? ((0, _size.getOuterHeight)($draggableItem) + (0, _size.getOuterHeight)($draggableItem, true)) / 2 : ((0, _size.getOuterWidth)($draggableItem) + (0, _size.getOuterWidth)($draggableItem, true)) / 2;
                            if (!this.option("autoUpdate")) {
                                this.option("draggableElementSize", size)
                            }
                        }
                        return size
                    },
                    _getActualFromIndex() {
                        const {
                            fromIndex: fromIndex,
                            fromIndexOffset: fromIndexOffset,
                            offset: offset
                        } = this.option();
                        return null == fromIndex ? null : fromIndex + fromIndexOffset - offset
                    },
                    _moveItems(prevToIndex, toIndex, fullUpdate) {
                        const fromIndex = this._getActualFromIndex();
                        const isVerticalOrientation = this._isVerticalOrientation();
                        const positionPropName = isVerticalOrientation ? "top" : "left";
                        const elementSize = this._getDraggableElementSize(isVerticalOrientation);
                        const items = this._getItems();
                        const prevPositions = this._getPositions(items, elementSize, fromIndex, prevToIndex);
                        const positions = this._getPositions(items, elementSize, fromIndex, toIndex);
                        const animationConfig = this.option("animation");
                        const rtlEnabled = this.option("rtlEnabled");
                        for (let i = 0; i < items.length; i++) {
                            const itemElement = items[i];
                            const prevPosition = prevPositions[i];
                            const position = positions[i];
                            if (null === toIndex || null === fromIndex) {
                                stopAnimation(itemElement)
                            } else if (prevPosition !== position || fullUpdate && position) {
                                animate(itemElement, (0, _extend.extend)({}, animationConfig, {
                                    to: {
                                        [positionPropName]: !isVerticalOrientation && rtlEnabled ? -position : position
                                    }
                                }))
                            }
                        }
                    },
                    _toggleDragSourceClass(value, $element) {
                        const $sourceElement = $element || this._$sourceElement;
                        this.callBase.apply(this, arguments);
                        if (!this._isIndicateMode()) {
                            $sourceElement && $sourceElement.toggleClass(this._addWidgetPrefix("source-hidden"), value)
                        }
                    },
                    _dispose() {
                        this.reset();
                        this.callBase()
                    },
                    _fireAddEvent(sourceEvent) {
                        const args = this._getEventArgs(sourceEvent);
                        this._getAction("onAdd")(args);
                        return args.cancel
                    },
                    _fireRemoveEvent(sourceEvent) {
                        const sourceDraggable = this._getSourceDraggable();
                        const args = this._getEventArgs(sourceEvent);
                        sourceDraggable._getAction("onRemove")(args);
                        return args.cancel
                    },
                    _fireReorderEvent(sourceEvent) {
                        const args = this._getEventArgs(sourceEvent);
                        this._getAction("onReorder")(args);
                        return args.promise || (0, _deferred.Deferred)().resolve()
                    }
                });
                (0, _component_registrator.default)("dxSortable", Sortable);
                var _default = Sortable;
                exports.default = _default
            },
        25387:
            /*!**********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointment_popup/m_form.js ***!
              \**********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.AppointmentForm = exports.APPOINTMENT_FORM_GROUP_NAMES = void 0;
                __webpack_require__( /*! ../m_recurrence_editor */ 70184);
                __webpack_require__( /*! ../../../ui/text_area */ 51237);
                __webpack_require__( /*! ../../../ui/tag_box */ 31362);
                __webpack_require__( /*! ../../../ui/switch */ 31609);
                __webpack_require__( /*! ../../../ui/select_box */ 78665);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 20530));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 91198));
                var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date_serialization */ 69434));
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _data_source = _interopRequireDefault(__webpack_require__( /*! ../../../data/data_source */ 33546));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../localization/message */ 28109));
                var _semaphore = __webpack_require__( /*! ../../../renovation/ui/scheduler/utils/semaphore/semaphore */ 86303);
                var _form = _interopRequireDefault(__webpack_require__( /*! ../../../ui/form */ 17737));
                var _themes = __webpack_require__( /*! ../../../ui/themes */ 75811);
                var _m_expression_utils = __webpack_require__( /*! ../../scheduler/m_expression_utils */ 30906);
                var _m_appointment_adapter = __webpack_require__( /*! ../m_appointment_adapter */ 72734);
                var _m_utils_timezones_data = _interopRequireDefault(__webpack_require__( /*! ../timezones/m_utils_timezones_data */ 23778));

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }
                const APPOINTMENT_FORM_GROUP_NAMES = {
                    Main: "mainGroup",
                    Recurrence: "recurrenceGroup"
                };
                exports.APPOINTMENT_FORM_GROUP_NAMES = APPOINTMENT_FORM_GROUP_NAMES;
                const E2E_TEST_CLASSES_form = "e2e-dx-scheduler-form",
                    E2E_TEST_CLASSES_textEditor = "e2e-dx-scheduler-form-text",
                    E2E_TEST_CLASSES_descriptionEditor = "e2e-dx-scheduler-form-description",
                    E2E_TEST_CLASSES_startDateEditor = "e2e-dx-scheduler-form-start-date",
                    E2E_TEST_CLASSES_endDateEditor = "e2e-dx-scheduler-form-end-date",
                    E2E_TEST_CLASSES_startDateTimeZoneEditor = "e2e-dx-scheduler-form-start-date-timezone",
                    E2E_TEST_CLASSES_endDateTimeZoneEditor = "e2e-dx-scheduler-form-end-date-timezone",
                    E2E_TEST_CLASSES_allDaySwitch = "e2e-dx-scheduler-form-all-day-switch",
                    E2E_TEST_CLASSES_recurrenceSwitch = "e2e-dx-scheduler-form-recurrence-switch";
                const getStylingModeFunc = () => (0, _themes.isFluent)((0, _themes.current)()) ? "filled" : void 0;
                let AppointmentForm = function() {
                    function AppointmentForm(scheduler) {
                        this.scheduler = scheduler;
                        this.form = null;
                        this.semaphore = new _semaphore.Semaphore
                    }
                    var _proto = AppointmentForm.prototype;
                    _proto.create = function(triggerResize, changeSize, formData) {
                        const {
                            allowTimeZoneEditing: allowTimeZoneEditing
                        } = this.scheduler.getEditingConfig();
                        const dataAccessors = this.scheduler.getDataAccessors();
                        const {
                            expr: expr
                        } = dataAccessors;
                        const isRecurrence = !!_m_expression_utils.ExpressionUtils.getField(dataAccessors, "recurrenceRule", formData);
                        const colSpan = isRecurrence ? 1 : 2;
                        const mainItems = [...this._createMainItems(expr, triggerResize, changeSize, allowTimeZoneEditing), ...this.scheduler.createResourceEditorModel()];
                        changeSize(isRecurrence);
                        const items = [{
                            itemType: "group",
                            name: APPOINTMENT_FORM_GROUP_NAMES.Main,
                            colCountByScreen: {
                                lg: 2,
                                xs: 1
                            },
                            colSpan: colSpan,
                            items: mainItems
                        }, {
                            itemType: "group",
                            name: APPOINTMENT_FORM_GROUP_NAMES.Recurrence,
                            visible: isRecurrence,
                            colSpan: colSpan,
                            items: this._createRecurrenceEditor(expr)
                        }];
                        const element = (0, _renderer.default)("<div>");
                        this.scheduler.createComponent(element, _form.default, {
                            items: items,
                            showValidationSummary: true,
                            scrollingEnabled: true,
                            colCount: "auto",
                            colCountByScreen: {
                                lg: 2,
                                xs: 1
                            },
                            formData: formData,
                            showColonAfterLabel: false,
                            labelLocation: "top",
                            onInitialized: e => {
                                this.form = e.component
                            },
                            customizeItem: e => {
                                if (this.form && "group" === e.itemType) {
                                    const dataExprs = this.scheduler.getDataAccessors().expr;
                                    const startDate = new Date(this.formData[dataExprs.startDateExpr]);
                                    const endDate = new Date(this.formData[dataExprs.endDateExpr]);
                                    const startTimeZoneEditor = e.items.find(i => i.dataField === dataExprs.startDateTimeZoneExpr);
                                    const endTimeZoneEditor = e.items.find(i => i.dataField === dataExprs.endDateTimeZoneExpr);
                                    if (startTimeZoneEditor) {
                                        startTimeZoneEditor.editorOptions.dataSource = this.createTimeZoneDataSource(startDate)
                                    }
                                    if (endTimeZoneEditor) {
                                        endTimeZoneEditor.editorOptions.dataSource = this.createTimeZoneDataSource(endDate)
                                    }
                                }
                            },
                            screenByWidth: width => width < 600 || "desktop" !== _devices.default.current().deviceType ? "xs" : "lg",
                            elementAttr: {
                                class: E2E_TEST_CLASSES_form
                            }
                        })
                    };
                    _proto.createTimeZoneDataSource = function(date) {
                        return new _data_source.default({
                            store: _m_utils_timezones_data.default.getDisplayedTimeZones(date),
                            paginate: true,
                            pageSize: 10
                        })
                    };
                    _proto._createAppointmentAdapter = function(rawAppointment) {
                        return (0, _m_appointment_adapter.createAppointmentAdapter)(rawAppointment, this.scheduler.getDataAccessors())
                    };
                    _proto._dateBoxValueChanged = function(args, dateExpr, isNeedCorrect) {
                        ((editor, value, previousValue) => {
                            const isCurrentDateCorrect = null === value || !!value;
                            const isPreviousDateCorrect = null === previousValue || !!previousValue;
                            if (!isCurrentDateCorrect && isPreviousDateCorrect) {
                                editor.option("value", previousValue)
                            }
                        })(args.component, args.value, args.previousValue);
                        const value = _date_serialization.default.deserializeDate(args.value);
                        const previousValue = _date_serialization.default.deserializeDate(args.previousValue);
                        const dateEditor = this.form.getEditor(dateExpr);
                        const dateValue = _date_serialization.default.deserializeDate(dateEditor.option("value"));
                        if (this.semaphore.isFree() && dateValue && value && isNeedCorrect(dateValue, value)) {
                            const duration = previousValue ? dateValue.getTime() - previousValue.getTime() : 0;
                            dateEditor.option("value", new Date(value.getTime() + duration))
                        }
                    };
                    _proto._createTimezoneEditor = function(timeZoneExpr, secondTimeZoneExpr, visibleIndex, colSpan, isMainTimeZone, cssClass) {
                        let visible = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : false;
                        const noTzTitle = _message.default.format("dxScheduler-noTimezoneTitle");
                        return {
                            name: this.normalizeEditorName(timeZoneExpr),
                            dataField: timeZoneExpr,
                            editorType: "dxSelectBox",
                            visibleIndex: visibleIndex,
                            colSpan: colSpan,
                            cssClass: cssClass,
                            label: {
                                text: " "
                            },
                            editorOptions: {
                                displayExpr: "title",
                                valueExpr: "id",
                                placeholder: noTzTitle,
                                searchEnabled: true,
                                onValueChanged: args => {
                                    const {
                                        form: form
                                    } = this;
                                    const secondTimezoneEditor = form.getEditor(secondTimeZoneExpr);
                                    if (isMainTimeZone) {
                                        secondTimezoneEditor.option("value", args.value)
                                    }
                                }
                            },
                            visible: visible
                        }
                    };
                    _proto._createDateBoxItems = function(dataExprs, allowTimeZoneEditing) {
                        const colSpan = allowTimeZoneEditing ? 2 : 1;
                        const firstDayOfWeek = this.scheduler.getFirstDayOfWeek();
                        return [this.createDateBoxEditor(dataExprs.startDateExpr, colSpan, firstDayOfWeek, "dxScheduler-editorLabelStartDate", E2E_TEST_CLASSES_startDateEditor, args => {
                            this._dateBoxValueChanged(args, dataExprs.endDateExpr, (endValue, startValue) => endValue < startValue)
                        }), this._createTimezoneEditor(dataExprs.startDateTimeZoneExpr, dataExprs.endDateTimeZoneExpr, 1, colSpan, true, E2E_TEST_CLASSES_startDateTimeZoneEditor, allowTimeZoneEditing), this.createDateBoxEditor(dataExprs.endDateExpr, colSpan, firstDayOfWeek, "dxScheduler-editorLabelEndDate", E2E_TEST_CLASSES_endDateEditor, args => {
                            this._dateBoxValueChanged(args, dataExprs.startDateExpr, (startValue, endValue) => endValue < startValue)
                        }), this._createTimezoneEditor(dataExprs.endDateTimeZoneExpr, dataExprs.startDateTimeZoneExpr, 3, colSpan, false, E2E_TEST_CLASSES_endDateTimeZoneEditor, allowTimeZoneEditing)]
                    };
                    _proto._changeFormItemDateType = function(name, groupName, isAllDay) {
                        const editorPath = this.getEditorPath(name, groupName);
                        const itemEditorOptions = this.form.itemOption(editorPath).editorOptions;
                        const type = isAllDay ? "date" : "datetime";
                        const newEditorOption = _extends(_extends({}, itemEditorOptions), {
                            type: type
                        });
                        this.form.itemOption(editorPath, "editorOptions", newEditorOption)
                    };
                    _proto._createMainItems = function(dataExprs, triggerResize, changeSize, allowTimeZoneEditing) {
                        return [{
                            name: this.normalizeEditorName(dataExprs.textExpr),
                            dataField: dataExprs.textExpr,
                            cssClass: E2E_TEST_CLASSES_textEditor,
                            editorType: "dxTextBox",
                            colSpan: 2,
                            label: {
                                text: _message.default.format("dxScheduler-editorLabelTitle")
                            },
                            editorOptions: {
                                stylingMode: getStylingModeFunc()
                            }
                        }, {
                            itemType: "group",
                            colSpan: 2,
                            colCountByScreen: {
                                lg: 2,
                                xs: 1
                            },
                            items: this._createDateBoxItems(dataExprs, allowTimeZoneEditing)
                        }, {
                            itemType: "group",
                            colSpan: 2,
                            colCountByScreen: {
                                lg: 2,
                                xs: 2
                            },
                            items: [{
                                name: this.normalizeEditorName(dataExprs.allDayExpr),
                                dataField: dataExprs.allDayExpr,
                                cssClass: "dx-appointment-form-switch ".concat(E2E_TEST_CLASSES_allDaySwitch),
                                editorType: "dxSwitch",
                                label: {
                                    text: _message.default.format("dxScheduler-allDay"),
                                    location: "right"
                                },
                                editorOptions: {
                                    onValueChanged: args => {
                                        const {
                                            value: value
                                        } = args;
                                        const startDateEditor = this.form.getEditor(dataExprs.startDateExpr);
                                        const endDateEditor = this.form.getEditor(dataExprs.endDateExpr);
                                        const startDate = _date_serialization.default.deserializeDate(startDateEditor.option("value"));
                                        if (this.semaphore.isFree() && startDate) {
                                            if (value) {
                                                const allDayStartDate = _date.default.trimTime(startDate);
                                                startDateEditor.option("value", new Date(allDayStartDate));
                                                endDateEditor.option("value", new Date(allDayStartDate))
                                            } else {
                                                const startDateWithStartHour = ((startDate, startDayHour) => new Date(new Date(startDate).setHours(startDayHour)))(startDate, this.scheduler.getStartDayHour());
                                                const endDate = this.scheduler.getCalculatedEndDate(startDateWithStartHour);
                                                startDateEditor.option("value", startDateWithStartHour);
                                                endDateEditor.option("value", endDate)
                                            }
                                        }
                                        this._changeFormItemDateType(dataExprs.startDateExpr, "Main", value);
                                        this._changeFormItemDateType(dataExprs.endDateExpr, "Main", value)
                                    }
                                }
                            }, {
                                editorType: "dxSwitch",
                                dataField: "repeat",
                                cssClass: "dx-appointment-form-switch ".concat(E2E_TEST_CLASSES_recurrenceSwitch),
                                name: "visibilityChanged",
                                label: {
                                    text: _message.default.format("dxScheduler-editorLabelRecurrence"),
                                    location: "right"
                                },
                                editorOptions: {
                                    onValueChanged: args => {
                                        const {
                                            form: form
                                        } = this;
                                        const colSpan = args.value ? 1 : 2;
                                        form.itemOption(APPOINTMENT_FORM_GROUP_NAMES.Main, "colSpan", colSpan);
                                        form.itemOption(APPOINTMENT_FORM_GROUP_NAMES.Recurrence, "colSpan", colSpan);
                                        ((recurrenceRuleExpr, value, form) => {
                                            var _a;
                                            form.itemOption(APPOINTMENT_FORM_GROUP_NAMES.Recurrence, "visible", value);
                                            !value && form.updateData(recurrenceRuleExpr, "");
                                            null === (_a = form.getEditor(recurrenceRuleExpr)) || void 0 === _a ? void 0 : _a.changeValueByVisibility(value)
                                        })(dataExprs.recurrenceRuleExpr, args.value, form);
                                        changeSize(args.value);
                                        triggerResize()
                                    }
                                }
                            }]
                        }, {
                            itemType: "empty",
                            colSpan: 2
                        }, {
                            name: this.normalizeEditorName(dataExprs.descriptionExpr),
                            dataField: dataExprs.descriptionExpr,
                            cssClass: E2E_TEST_CLASSES_descriptionEditor,
                            editorType: "dxTextArea",
                            colSpan: 2,
                            label: {
                                text: _message.default.format("dxScheduler-editorLabelDescription")
                            },
                            editorOptions: {
                                stylingMode: getStylingModeFunc()
                            }
                        }, {
                            itemType: "empty",
                            colSpan: 2
                        }]
                    };
                    _proto._createRecurrenceEditor = function(dataExprs) {
                        return [{
                            name: this.normalizeEditorName(dataExprs.recurrenceRuleExpr),
                            dataField: dataExprs.recurrenceRuleExpr,
                            editorType: "dxRecurrenceEditor",
                            editorOptions: {
                                firstDayOfWeek: this.scheduler.getFirstDayOfWeek(),
                                timeZoneCalculator: this.scheduler.getTimeZoneCalculator(),
                                getStartDateTimeZone: () => this._createAppointmentAdapter(this.formData).startDateTimeZone
                            },
                            label: {
                                text: " ",
                                visible: false
                            }
                        }]
                    };
                    _proto.setEditorsType = function(allDay) {
                        const {
                            startDateExpr: startDateExpr,
                            endDateExpr: endDateExpr
                        } = this.scheduler.getDataAccessors().expr;
                        const startDateItemPath = this.getEditorPath(startDateExpr, "Main");
                        const endDateItemPath = this.getEditorPath(endDateExpr, "Main");
                        const startDateFormItem = this.form.itemOption(startDateItemPath);
                        const endDateFormItem = this.form.itemOption(endDateItemPath);
                        if (startDateFormItem && endDateFormItem) {
                            const startDateEditorOptions = startDateFormItem.editorOptions;
                            const endDateEditorOptions = endDateFormItem.editorOptions;
                            startDateEditorOptions.type = endDateEditorOptions.type = allDay ? "date" : "datetime";
                            this.form.itemOption(startDateItemPath, "editorOptions", startDateEditorOptions);
                            this.form.itemOption(endDateItemPath, "editorOptions", endDateEditorOptions)
                        }
                    };
                    _proto.updateRecurrenceEditorStartDate = function(date, expression) {
                        const options = {
                            startDate: date
                        };
                        this.setEditorOptions(expression, "Recurrence", options)
                    };
                    _proto.setEditorOptions = function(name, groupName, options) {
                        const editorPath = this.getEditorPath(name, groupName);
                        const editor = this.form.itemOption(editorPath);
                        editor && this.form.itemOption(editorPath, "editorOptions", (0, _extend.extend)({}, editor.editorOptions, options))
                    };
                    _proto.setTimeZoneEditorDataSource = function(date, name) {
                        const dataSource = this.createTimeZoneDataSource(date);
                        this.setEditorOptions(name, "Main", {
                            dataSource: dataSource
                        })
                    };
                    _proto.updateFormData = function(formData) {
                        this.semaphore.take();
                        this.form.option("formData", formData);
                        const dataAccessors = this.scheduler.getDataAccessors();
                        const {
                            expr: expr
                        } = dataAccessors;
                        const rawStartDate = _m_expression_utils.ExpressionUtils.getField(dataAccessors, "startDate", formData);
                        const rawEndDate = _m_expression_utils.ExpressionUtils.getField(dataAccessors, "endDate", formData);
                        const allDay = _m_expression_utils.ExpressionUtils.getField(dataAccessors, "allDay", formData);
                        const startDate = new Date(rawStartDate);
                        const endDate = new Date(rawEndDate);
                        this.setTimeZoneEditorDataSource(startDate, expr.startDateTimeZoneExpr);
                        this.setTimeZoneEditorDataSource(endDate, expr.endDateTimeZoneExpr);
                        this.updateRecurrenceEditorStartDate(startDate, expr.recurrenceRuleExpr);
                        this.setEditorsType(allDay);
                        this.semaphore.release()
                    };
                    _proto.createDateBoxEditor = function(dataField, colSpan, firstDayOfWeek, label, cssClass, onValueChanged) {
                        return {
                            editorType: "dxDateBox",
                            name: this.normalizeEditorName(dataField),
                            dataField: dataField,
                            colSpan: colSpan,
                            cssClass: cssClass,
                            label: {
                                text: _message.default.format(label)
                            },
                            validationRules: [{
                                type: "required"
                            }],
                            editorOptions: {
                                stylingMode: getStylingModeFunc(),
                                width: "100%",
                                calendarOptions: {
                                    firstDayOfWeek: firstDayOfWeek
                                },
                                onValueChanged: onValueChanged,
                                useMaskBehavior: true
                            }
                        }
                    };
                    _proto.getEditorPath = function(name, groupName) {
                        const normalizedName = this.normalizeEditorName(name);
                        return "".concat(APPOINTMENT_FORM_GROUP_NAMES[groupName], ".").concat(normalizedName)
                    };
                    _proto.normalizeEditorName = function(name) {
                        return name ? name.replace(/\./g, "_") : name
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(AppointmentForm, [{
                        key: "dxForm",
                        get: function() {
                            return this.form
                        }
                    }, {
                        key: "readOnly",
                        set: function(value) {
                            this.form.option("readOnly", value);
                            const {
                                recurrenceRuleExpr: recurrenceRuleExpr
                            } = this.scheduler.getDataAccessors().expr;
                            const recurrenceEditor = this.form.getEditor(recurrenceRuleExpr);
                            null === recurrenceEditor || void 0 === recurrenceEditor ? void 0 : recurrenceEditor.option("readOnly", value)
                        }
                    }, {
                        key: "formData",
                        get: function() {
                            return this.form.option("formData")
                        },
                        set: function(value) {
                            this.form.option("formData", value)
                        }
                    }]);
                    return AppointmentForm
                }();
                exports.AppointmentForm = AppointmentForm
            },
        77135:
            /*!***********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointment_popup/m_popup.js ***!
              \***********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.AppointmentPopup = exports.ACTION_TO_APPOINTMENT = void 0;
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 20530));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 91198));
                var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 62754);
                var _visibility_change = __webpack_require__( /*! ../../../events/visibility_change */ 80506);
                var _popup_config = __webpack_require__( /*! ../../../renovation/ui/scheduler/appointment_edit_form/popup_config */ 51113);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/popup/ui.popup */ 51495));
                var _m_expression_utils = __webpack_require__( /*! ../../scheduler/m_expression_utils */ 30906);
                var _m_appointment_adapter = __webpack_require__( /*! ../m_appointment_adapter */ 72734);
                var _m_loading = __webpack_require__( /*! ../m_loading */ 28066);
                var _m_utils = __webpack_require__( /*! ../resources/m_utils */ 31359);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }
                const toMs = _date.default.dateToMilliseconds;
                const DAY_IN_MS = toMs("day");
                const POPUP_CONFIG = {
                    height: "auto",
                    maxHeight: "100%",
                    showCloseButton: false,
                    showTitle: false,
                    preventScrollEvents: false,
                    enableBodyScroll: false,
                    defaultOptionsRules: [{
                        device: () => _devices.default.current().android,
                        options: {
                            showTitle: false
                        }
                    }],
                    _ignorePreventScrollEventsDeprecation: true
                };
                const ACTION_TO_APPOINTMENT = {
                    CREATE: 0,
                    UPDATE: 1,
                    EXCLUDE_FROM_SERIES: 2
                };
                exports.ACTION_TO_APPOINTMENT = ACTION_TO_APPOINTMENT;
                let AppointmentPopup = function() {
                    function AppointmentPopup(scheduler, form) {
                        this.scheduler = scheduler;
                        this.form = form;
                        this.popup = null;
                        this.state = {
                            action: null,
                            lastEditData: null,
                            saveChangesLocker: false,
                            appointment: {
                                data: null
                            }
                        }
                    }
                    var _proto = AppointmentPopup.prototype;
                    _proto.show = function(appointment, config) {
                        this.state.appointment.data = appointment;
                        this.state.action = config.action;
                        this.state.excludeInfo = config.excludeInfo;
                        if (!this.popup) {
                            const popupConfig = this._createPopupConfig();
                            this.popup = this._createPopup(popupConfig)
                        }
                        this.popup.option("toolbarItems", (0, _popup_config.getPopupToolbarItems)(config.isToolbarVisible, e => this._doneButtonClickHandler(e)));
                        this.popup.show()
                    };
                    _proto.hide = function() {
                        this.popup.hide()
                    };
                    _proto.dispose = function() {
                        var _a;
                        null === (_a = this.popup) || void 0 === _a ? void 0 : _a.$element().remove()
                    };
                    _proto._createPopup = function(options) {
                        const popupElement = (0, _renderer.default)("<div>").addClass("dx-scheduler-appointment-popup").appendTo(this.scheduler.getElement());
                        return this.scheduler.createComponent(popupElement, _ui.default, options)
                    };
                    _proto._createPopupConfig = function() {
                        return _extends(_extends({}, POPUP_CONFIG), {
                            onHiding: () => this.scheduler.focus(),
                            contentTemplate: () => this._createPopupContent(),
                            onShowing: e => this._onShowing(e),
                            wrapperAttr: {
                                class: "dx-scheduler-appointment-popup"
                            }
                        })
                    };
                    _proto._onShowing = function(e) {
                        this._updateForm();
                        const arg = {
                            form: this.form.dxForm,
                            popup: this.popup,
                            appointmentData: this.state.appointment.data,
                            cancel: false
                        };
                        this.scheduler.getAppointmentFormOpening()(arg);
                        this.scheduler.processActionResult(arg, canceled => {
                            if (canceled) {
                                e.cancel = true
                            } else {
                                this.updatePopupFullScreenMode()
                            }
                        })
                    };
                    _proto._createPopupContent = function() {
                        this._createForm();
                        return this.form.dxForm.$element()
                    };
                    _proto._createFormData = function(rawAppointment) {
                        const appointment = this._createAppointmentAdapter(rawAppointment);
                        const dataAccessors = this.scheduler.getDataAccessors();
                        const resources = this.scheduler.getResources();
                        const normalizedResources = (0, _m_utils.getNormalizedResources)(rawAppointment, dataAccessors, resources);
                        return _extends(_extends(_extends({}, rawAppointment), normalizedResources), {
                            repeat: !!appointment.recurrenceRule
                        })
                    };
                    _proto._createForm = function() {
                        const rawAppointment = this.state.appointment.data;
                        const formData = this._createFormData(rawAppointment);
                        this.form.create(this.triggerResize.bind(this), this.changeSize.bind(this), formData)
                    };
                    _proto._isReadOnly = function(rawAppointment) {
                        const appointment = this._createAppointmentAdapter(rawAppointment);
                        if (rawAppointment && appointment.disabled) {
                            return true
                        }
                        if (this.state.action === ACTION_TO_APPOINTMENT.CREATE) {
                            return false
                        }
                        return !this.scheduler.getEditingConfig().allowUpdating
                    };
                    _proto._createAppointmentAdapter = function(rawAppointment) {
                        return (0, _m_appointment_adapter.createAppointmentAdapter)(rawAppointment, this.scheduler.getDataAccessors(), this.scheduler.getTimeZoneCalculator())
                    };
                    _proto._updateForm = function() {
                        const {
                            data: data
                        } = this.state.appointment;
                        const appointment = this._createAppointmentAdapter(this._createFormData(data));
                        if (appointment.startDate) {
                            appointment.startDate = appointment.calculateStartDate("toAppointment")
                        }
                        if (appointment.endDate) {
                            appointment.endDate = appointment.calculateEndDate("toAppointment")
                        }
                        const formData = appointment.source();
                        this.form.readOnly = this._isReadOnly(formData);
                        this.form.updateFormData(formData)
                    };
                    _proto.triggerResize = function() {
                        if (this.popup) {
                            (0, _visibility_change.triggerResizeEvent)(this.popup.$element())
                        }
                    };
                    _proto.changeSize = function(isRecurrence) {
                        if (this.popup) {
                            const isFullScreen = (0, _popup_config.isPopupFullScreenNeeded)();
                            const maxWidth = isFullScreen ? "100%" : (0, _popup_config.getMaxWidth)(isRecurrence);
                            this.popup.option("fullScreen", isFullScreen);
                            this.popup.option("maxWidth", maxWidth)
                        }
                    };
                    _proto.updatePopupFullScreenMode = function() {
                        if (this.form.dxForm && this.visible) {
                            const {
                                formData: formData
                            } = this.form;
                            const dataAccessors = this.scheduler.getDataAccessors();
                            const isRecurrence = _m_expression_utils.ExpressionUtils.getField(dataAccessors, "recurrenceRule", formData);
                            this.changeSize(isRecurrence)
                        }
                    };
                    _proto.saveChangesAsync = function(isShowLoadPanel) {
                        const deferred = new _deferred.Deferred;
                        const validation = this.form.dxForm.validate();
                        isShowLoadPanel && this._showLoadPanel();
                        (0, _deferred.when)(validation && validation.complete || validation).done(validation => {
                            if (validation && !validation.isValid) {
                                (0, _m_loading.hide)();
                                deferred.resolve(false);
                                return
                            }
                            const adapter = this._createAppointmentAdapter(this.form.formData);
                            const clonedAdapter = adapter.clone({
                                pathTimeZone: "fromAppointment"
                            });
                            this._addMissingDSTTime(adapter, clonedAdapter);
                            const appointment = clonedAdapter.source();
                            delete appointment.repeat;
                            switch (this.state.action) {
                                case ACTION_TO_APPOINTMENT.CREATE:
                                    this.scheduler.addAppointment(appointment).done(deferred.resolve);
                                    break;
                                case ACTION_TO_APPOINTMENT.UPDATE:
                                    this.scheduler.updateAppointment(this.state.appointment.data, appointment).done(deferred.resolve);
                                    break;
                                case ACTION_TO_APPOINTMENT.EXCLUDE_FROM_SERIES:
                                    this.scheduler.updateAppointment(this.state.excludeInfo.sourceAppointment, this.state.excludeInfo.updatedAppointment);
                                    this.scheduler.addAppointment(appointment).done(deferred.resolve)
                            }
                            deferred.done(() => {
                                (0, _m_loading.hide)();
                                this.state.lastEditData = appointment
                            })
                        });
                        return deferred.promise()
                    };
                    _proto._doneButtonClickHandler = function(e) {
                        e.cancel = true;
                        this.saveEditDataAsync()
                    };
                    _proto.saveEditDataAsync = function() {
                        const deferred = new _deferred.Deferred;
                        if (this._tryLockSaveChanges()) {
                            (0, _deferred.when)(this.saveChangesAsync(true)).done(() => {
                                if (this.state.lastEditData) {
                                    const adapter = this._createAppointmentAdapter(this.state.lastEditData);
                                    const {
                                        startDate: startDate,
                                        endDate: endDate,
                                        allDay: allDay
                                    } = adapter;
                                    const startTime = startDate.getTime();
                                    const endTime = endDate.getTime();
                                    const inAllDayRow = allDay || endTime - startTime >= DAY_IN_MS;
                                    const dataAccessors = this.scheduler.getDataAccessors();
                                    const resourceList = this.scheduler.getResources();
                                    const normalizedResources = (0, _m_utils.getNormalizedResources)(this.state.lastEditData, dataAccessors, resourceList);
                                    this.scheduler.updateScrollPosition(startDate, normalizedResources, inAllDayRow);
                                    this.state.lastEditData = null
                                }
                                this._unlockSaveChanges();
                                deferred.resolve()
                            })
                        }
                        return deferred.promise()
                    };
                    _proto._showLoadPanel = function() {
                        const container = this.popup.$overlayContent();
                        (0, _m_loading.show)({
                            container: container,
                            position: {
                                of: container
                            }
                        })
                    };
                    _proto._tryLockSaveChanges = function() {
                        if (false === this.state.saveChangesLocker) {
                            this.state.saveChangesLocker = true;
                            return true
                        }
                        return false
                    };
                    _proto._unlockSaveChanges = function() {
                        this.state.saveChangesLocker = false
                    };
                    _proto._addMissingDSTTime = function(formAppointmentAdapter, clonedAppointmentAdapter) {
                        const timeZoneCalculator = this.scheduler.getTimeZoneCalculator();
                        clonedAppointmentAdapter.startDate = this._addMissingDSTShiftToDate(timeZoneCalculator, formAppointmentAdapter.startDate, clonedAppointmentAdapter.startDate);
                        if (clonedAppointmentAdapter.endDate) {
                            clonedAppointmentAdapter.endDate = this._addMissingDSTShiftToDate(timeZoneCalculator, formAppointmentAdapter.endDate, clonedAppointmentAdapter.endDate)
                        }
                    };
                    _proto._addMissingDSTShiftToDate = function(timeZoneCalculator, originFormDate, clonedDate) {
                        var _a, _b;
                        const originTimezoneShift = null === (_a = timeZoneCalculator.getOffsets(originFormDate)) || void 0 === _a ? void 0 : _a.common;
                        const clonedTimezoneShift = null === (_b = timeZoneCalculator.getOffsets(clonedDate)) || void 0 === _b ? void 0 : _b.common;
                        const shiftDifference = originTimezoneShift - clonedTimezoneShift;
                        return shiftDifference ? new Date(clonedDate.getTime() + shiftDifference * toMs("hour")) : clonedDate
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(AppointmentPopup, [{
                        key: "visible",
                        get: function() {
                            return this.popup ? this.popup.option("visible") : false
                        }
                    }]);
                    return AppointmentPopup
                }();
                exports.AppointmentPopup = AppointmentPopup
            },
        92823:
            /*!****************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/data_provider/m_appointment_data_provider.js ***!
              \****************************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.AppointmentDataProvider = void 0;
                var _config = _interopRequireDefault(__webpack_require__( /*! ../../../../core/config */ 80209));
                var _remote = _interopRequireDefault(__webpack_require__( /*! ../../../../renovation/ui/scheduler/utils/filtering/remote */ 17200));
                var _m_appointment_data_source = __webpack_require__( /*! ./m_appointment_data_source */ 93074);
                var _m_appointment_filter = __webpack_require__( /*! ./m_appointment_filter */ 30256);

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

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }
                const FilterStrategies_virtual = "virtual",
                    FilterStrategies_standard = "standard";
                let AppointmentDataProvider = function() {
                    function AppointmentDataProvider(options) {
                        this.options = options;
                        this.dataSource = this.options.dataSource;
                        this.dataAccessors = this.options.dataAccessors;
                        this.timeZoneCalculator = this.options.timeZoneCalculator;
                        this.appointmentDataSource = new _m_appointment_data_source.AppointmentDataSource(this.dataSource);
                        this.initFilterStrategy()
                    }
                    var _proto = AppointmentDataProvider.prototype;
                    _proto.getFilterStrategy = function() {
                        if (!this.filterStrategy || this.filterStrategy.strategyName !== this.filterStrategyName) {
                            this.initFilterStrategy()
                        }
                        return this.filterStrategy
                    };
                    _proto.initFilterStrategy = function() {
                        const filterOptions = {
                            resources: this.options.resources,
                            dataAccessors: this.dataAccessors,
                            startDayHour: this.options.startDayHour,
                            endDayHour: this.options.endDayHour,
                            viewOffset: this.options.viewOffset,
                            showAllDayPanel: this.options.showAllDayPanel,
                            timeZoneCalculator: this.options.timeZoneCalculator,
                            loadedResources: this.options.getLoadedResources,
                            supportAllDayRow: this.options.getSupportAllDayRow,
                            viewType: this.options.getViewType,
                            viewDirection: this.options.getViewDirection,
                            dateRange: this.options.getDateRange,
                            groupCount: this.options.getGroupCount,
                            viewDataProvider: this.options.getViewDataProvider,
                            allDayPanelMode: this.options.allDayPanelMode
                        };
                        this.filterStrategy = this.filterStrategyName === FilterStrategies_virtual ? new _m_appointment_filter.AppointmentFilterVirtualStrategy(filterOptions) : new _m_appointment_filter.AppointmentFilterBaseStrategy(filterOptions)
                    };
                    _proto.setDataSource = function(dataSource) {
                        this.dataSource = dataSource;
                        this.initFilterStrategy();
                        this.appointmentDataSource.setDataSource(this.dataSource)
                    };
                    _proto.updateDataAccessors = function(dataAccessors) {
                        this.dataAccessors = dataAccessors;
                        this.initFilterStrategy()
                    };
                    _proto.filter = function(preparedItems) {
                        return this.getFilterStrategy().filter(preparedItems)
                    };
                    _proto.filterByDate = function(min, max, remoteFiltering, dateSerializationFormat) {
                        if (!this.dataSource || !remoteFiltering) {
                            return
                        }
                        const dataSourceFilter = this.dataSource.filter();
                        const filter = (0, _remote.default)({
                            dataSourceFilter: dataSourceFilter,
                            dataAccessors: this.dataAccessors,
                            min: min,
                            max: max,
                            dateSerializationFormat: dateSerializationFormat,
                            forceIsoDateParsing: (0, _config.default)().forceIsoDateParsing
                        });
                        this.dataSource.filter(filter)
                    };
                    _proto.hasAllDayAppointments = function(filteredItems, preparedItems) {
                        return this.getFilterStrategy().hasAllDayAppointments(filteredItems, preparedItems)
                    };
                    _proto.filterLoadedAppointments = function(filterOption, preparedItems) {
                        return this.getFilterStrategy().filterLoadedAppointments(filterOption, preparedItems)
                    };
                    _proto.calculateAppointmentEndDate = function(isAllDay, startDate) {
                        return this.getFilterStrategy().calculateAppointmentEndDate(isAllDay, startDate)
                    };
                    _proto.cleanState = function() {
                        this.appointmentDataSource.cleanState()
                    };
                    _proto.getUpdatedAppointment = function() {
                        return this.appointmentDataSource._updatedAppointment
                    };
                    _proto.getUpdatedAppointmentKeys = function() {
                        return this.appointmentDataSource._updatedAppointmentKeys
                    };
                    _proto.add = function(rawAppointment) {
                        return this.appointmentDataSource.add(rawAppointment)
                    };
                    _proto.update = function(target, rawAppointment) {
                        return this.appointmentDataSource.update(target, rawAppointment)
                    };
                    _proto.remove = function(rawAppointment) {
                        return this.appointmentDataSource.remove(rawAppointment)
                    };
                    _proto.destroy = function() {
                        this.appointmentDataSource.destroy()
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(AppointmentDataProvider, [{
                        key: "keyName",
                        get: function() {
                            return this.appointmentDataSource.keyName
                        }
                    }, {
                        key: "isDataSourceInit",
                        get: function() {
                            return !!this.dataSource
                        }
                    }, {
                        key: "filterStrategyName",
                        get: function() {
                            return this.options.getIsVirtualScrolling() ? FilterStrategies_virtual : FilterStrategies_standard
                        }
                    }]);
                    return AppointmentDataProvider
                }();
                exports.AppointmentDataProvider = AppointmentDataProvider
            },
        93074:
            /*!**************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/data_provider/m_appointment_data_source.js ***!
              \**************************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.AppointmentDataSource = void 0;
                var _deferred = __webpack_require__( /*! ../../../../core/utils/deferred */ 62754);

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }
                const STORE_EVENTS_updating = "updating",
                    STORE_EVENTS_push = "push";
                let AppointmentDataSource = function() {
                    function AppointmentDataSource(dataSource) {
                        this.setDataSource(dataSource);
                        this._updatedAppointmentKeys = []
                    }
                    var _proto = AppointmentDataSource.prototype;
                    _proto._getStoreKey = function(target) {
                        const store = this._dataSource.store();
                        return store.keyOf(target)
                    };
                    _proto.setDataSource = function(dataSource) {
                        this._dataSource = dataSource;
                        this.cleanState();
                        this._initStoreChangeHandlers()
                    };
                    _proto._initStoreChangeHandlers = function() {
                        const dataSource = this._dataSource;
                        const store = null === dataSource || void 0 === dataSource ? void 0 : dataSource.store();
                        if (store) {
                            store.on(STORE_EVENTS_updating, key => {
                                const keyName = store.key();
                                if (keyName) {
                                    this._updatedAppointmentKeys.push({
                                        key: keyName,
                                        value: key
                                    })
                                } else {
                                    this._updatedAppointment = key
                                }
                            });
                            store.on(STORE_EVENTS_push, pushItems => {
                                const items = dataSource.items();
                                const keyName = store.key();
                                pushItems.forEach(pushItem => {
                                    const itemExists = 0 !== items.filter(item => item[keyName] === pushItem.key).length;
                                    if (itemExists) {
                                        this._updatedAppointmentKeys.push({
                                            key: keyName,
                                            value: pushItem.key
                                        })
                                    } else {
                                        const {
                                            data: data
                                        } = pushItem;
                                        data && items.push(data)
                                    }
                                });
                                dataSource.load()
                            })
                        }
                    };
                    _proto.getUpdatedAppointment = function() {
                        return this._updatedAppointment
                    };
                    _proto.getUpdatedAppointmentKeys = function() {
                        return this._updatedAppointmentKeys
                    };
                    _proto.cleanState = function() {
                        this._updatedAppointment = null;
                        this._updatedAppointmentKeys = []
                    };
                    _proto.add = function(rawAppointment) {
                        return this._dataSource.store().insert(rawAppointment).done(() => this._dataSource.load())
                    };
                    _proto.update = function(target, data) {
                        const key = this._getStoreKey(target);
                        const d = new _deferred.Deferred;
                        this._dataSource.store().update(key, data).done(result => this._dataSource.load().done(() => d.resolve(result)).fail(d.reject)).fail(d.reject);
                        return d.promise()
                    };
                    _proto.remove = function(rawAppointment) {
                        const key = this._getStoreKey(rawAppointment);
                        return this._dataSource.store().remove(key).done(() => this._dataSource.load())
                    };
                    _proto.destroy = function() {
                        var _a;
                        const store = null === (_a = this._dataSource) || void 0 === _a ? void 0 : _a.store();
                        if (store) {
                            store.off(STORE_EVENTS_updating);
                            store.off(STORE_EVENTS_push)
                        }
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(AppointmentDataSource, [{
                        key: "keyName",
                        get: function() {
                            const store = this._dataSource.store();
                            return store.key()
                        }
                    }, {
                        key: "isDataSourceInit",
                        get: function() {
                            return !!this._dataSource
                        }
                    }]);
                    return AppointmentDataSource
                }();
                exports.AppointmentDataSource = AppointmentDataSource
            },
        30256:
            /*!*********************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/data_provider/m_appointment_filter.js ***!
              \*********************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.AppointmentFilterVirtualStrategy = exports.AppointmentFilterBaseStrategy = void 0;
                var _array = __webpack_require__( /*! ../../../../core/utils/array */ 89386);
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 91198));
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _query = _interopRequireDefault(__webpack_require__( /*! ../../../../data/query */ 96687));
                var _getAppointmentTakesAllDay = __webpack_require__( /*! ../../../../renovation/ui/scheduler/appointment/utils/getAppointmentTakesAllDay */ 96801);
                var _hasResourceValue = __webpack_require__( /*! ../../../../renovation/ui/scheduler/resources/hasResourceValue */ 31486);
                var _getDatesWithoutTime = _interopRequireDefault(__webpack_require__( /*! ../../../../renovation/ui/scheduler/utils/filtering/getDatesWithoutTime */ 97601));
                var _base = __webpack_require__( /*! ../../../../renovation/ui/scheduler/view_model/to_test/views/utils/base */ 45985);
                var _date2 = __webpack_require__( /*! ../../../core/utils/date */ 24321);
                var _m_appointment_adapter = __webpack_require__( /*! ../../m_appointment_adapter */ 72734);
                var _m_recurrence = __webpack_require__( /*! ../../m_recurrence */ 38227);
                var _m_utils = __webpack_require__( /*! ../../resources/m_utils */ 31359);
                var _m_utils2 = __webpack_require__( /*! ./m_utils */ 55523);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _createClass(Constructor, protoProps, staticProps) {
                    if (protoProps) {
                        _defineProperties(Constructor.prototype, protoProps)
                    }
                    if (staticProps) {
                        _defineProperties(Constructor, staticProps)
                    }
                    Object.defineProperty(Constructor, "prototype", {
                        writable: false
                    });
                    return Constructor
                }
                const toMs = _date.default.dateToMilliseconds;
                const FilterStrategies_virtual = "virtual",
                    FilterStrategies_standard = "standard";
                let AppointmentFilterBaseStrategy = function() {
                    function AppointmentFilterBaseStrategy(options) {
                        this.options = options;
                        this.dataAccessors = this.options.dataAccessors;
                        this._init()
                    }
                    var _proto = AppointmentFilterBaseStrategy.prototype;
                    _proto._resolveOption = function(name) {
                        const result = this.options[name];
                        return "function" === typeof result ? result() : result
                    };
                    _proto._init = function() {
                        this.setDataAccessors(this.dataAccessors)
                    };
                    _proto.filter = function(preparedItems) {
                        const [min, max] = this.dateRange;
                        const {
                            viewOffset: viewOffset
                        } = this.options;
                        const allDay = !this.showAllDayPanel && this.supportAllDayRow ? false : void 0;
                        return this.filterLoadedAppointments({
                            startDayHour: this.viewStartDayHour,
                            endDayHour: this.viewEndDayHour,
                            viewOffset: viewOffset,
                            viewStartDayHour: this.viewStartDayHour,
                            viewEndDayHour: this.viewEndDayHour,
                            min: min,
                            max: max,
                            resources: this.loadedResources,
                            allDay: allDay,
                            supportMultiDayAppointments: (0, _base.isTimelineView)(this.viewType),
                            firstDayOfWeek: this.firstDayOfWeek
                        }, preparedItems)
                    };
                    _proto.hasAllDayAppointments = function(filteredItems, preparedItems) {
                        const adapters = filteredItems.map(item => (0, _m_appointment_adapter.createAppointmentAdapter)(item, this.dataAccessors, this.timeZoneCalculator));
                        let result = false;
                        (0, _iterator.each)(adapters, (_, item) => {
                            if ((0, _getAppointmentTakesAllDay.getAppointmentTakesAllDay)(item, this.allDayPanelMode)) {
                                result = true;
                                return false
                            }
                        });
                        return result
                    };
                    _proto.setDataAccessors = function(dataAccessors) {
                        this.dataAccessors = dataAccessors
                    };
                    _proto._createAllDayAppointmentFilter = function() {
                        return [
                            [appointment => (0, _getAppointmentTakesAllDay.getAppointmentTakesAllDay)(appointment, this.allDayPanelMode)]
                        ]
                    };
                    _proto._createCombinedFilter = function(filterOptions) {
                        const min = new Date(filterOptions.min);
                        const max = new Date(filterOptions.max);
                        const {
                            startDayHour: startDayHour,
                            endDayHour: endDayHour,
                            viewOffset: viewOffset,
                            viewStartDayHour: viewStartDayHour,
                            viewEndDayHour: viewEndDayHour,
                            resources: resources,
                            firstDayOfWeek: firstDayOfWeek,
                            checkIntersectViewport: checkIntersectViewport,
                            supportMultiDayAppointments: supportMultiDayAppointments
                        } = filterOptions;
                        const [trimMin, trimMax] = (0, _getDatesWithoutTime.default)(min, max);
                        const useRecurrence = (0, _type.isDefined)(this.dataAccessors.getter.recurrenceRule);
                        return [
                            [appointment => {
                                var _a;
                                const appointmentVisible = null !== (_a = appointment.visible) && void 0 !== _a ? _a : true;
                                if (!appointmentVisible) {
                                    return false
                                }
                                const {
                                    allDay: isAllDay,
                                    hasRecurrenceRule: hasRecurrenceRule
                                } = appointment;
                                const startDate = _date2.dateUtilsTs.addOffsets(appointment.startDate, [-viewOffset]);
                                const endDate = _date2.dateUtilsTs.addOffsets(appointment.endDate, [-viewOffset]);
                                const appointmentTakesAllDay = (0, _getAppointmentTakesAllDay.getAppointmentTakesAllDay)(appointment, this.allDayPanelMode);
                                if (!hasRecurrenceRule) {
                                    if (!(endDate >= trimMin && startDate < trimMax || _date.default.sameDate(endDate, trimMin) && _date.default.sameDate(startDate, trimMin))) {
                                        return false
                                    }
                                }
                                const appointmentTakesSeveralDays = (0, _m_utils2.getAppointmentTakesSeveralDays)(appointment);
                                const isLongAppointment = appointmentTakesSeveralDays || appointmentTakesAllDay;
                                if ((null === resources || void 0 === resources ? void 0 : resources.length) && !this._filterAppointmentByResources(appointment.rawAppointment, resources)) {
                                    return false
                                }
                                if (appointmentTakesAllDay && false === filterOptions.allDay) {
                                    return false
                                }
                                if (hasRecurrenceRule) {
                                    const recurrenceException = (0, _m_utils2.getRecurrenceException)(appointment, this.timeZoneCalculator, this.timezone);
                                    if (!this._filterAppointmentByRRule(_extends(_extends({}, appointment), {
                                            recurrenceException: recurrenceException,
                                            allDay: appointmentTakesAllDay
                                        }), min, max, startDayHour, endDayHour, firstDayOfWeek)) {
                                        return false
                                    }
                                }
                                if (!isAllDay && supportMultiDayAppointments && isLongAppointment) {
                                    if (endDate < min && (!useRecurrence || useRecurrence && !hasRecurrenceRule)) {
                                        return false
                                    }
                                }
                                if (!isAllDay && (0, _type.isDefined)(startDayHour) && (!useRecurrence || !filterOptions.isVirtualScrolling)) {
                                    if (!(0, _m_utils2.compareDateWithStartDayHour)(startDate, endDate, startDayHour, appointmentTakesAllDay, appointmentTakesSeveralDays)) {
                                        return false
                                    }
                                }
                                if (!isAllDay && (0, _type.isDefined)(endDayHour)) {
                                    if (!(0, _m_utils2.compareDateWithEndDayHour)({
                                            startDate: startDate,
                                            endDate: endDate,
                                            startDayHour: startDayHour,
                                            endDayHour: endDayHour,
                                            viewOffset: viewOffset,
                                            viewStartDayHour: viewStartDayHour,
                                            viewEndDayHour: viewEndDayHour,
                                            allDay: appointmentTakesAllDay,
                                            severalDays: appointmentTakesSeveralDays,
                                            min: min,
                                            max: max,
                                            checkIntersectViewport: checkIntersectViewport
                                        })) {
                                        return false
                                    }
                                }
                                if (!isAllDay && (!isLongAppointment || supportMultiDayAppointments)) {
                                    if (endDate < min && useRecurrence && !hasRecurrenceRule) {
                                        return false
                                    }
                                }
                                return true
                            }]
                        ]
                    };
                    _proto._createAppointmentFilter = function(filterOptions) {
                        return this._createCombinedFilter(filterOptions)
                    };
                    _proto._filterAppointmentByResources = function(appointment, resources) {
                        const checkAppointmentResourceValues = (resourceName, resourceIndex) => {
                            const resourceGetter = this.dataAccessors.resources.getter[resourceName];
                            let resource;
                            if ((0, _type.isFunction)(resourceGetter)) {
                                resource = resourceGetter(appointment)
                            }
                            const appointmentResourceValues = (0, _array.wrapToArray)(resource);
                            const resourceData = (0, _iterator.map)(resources[resourceIndex].items, _ref => {
                                let {
                                    id: id
                                } = _ref;
                                return id
                            });
                            for (let i = 0; i < appointmentResourceValues.length; i++) {
                                if ((0, _hasResourceValue.hasResourceValue)(resourceData, appointmentResourceValues[i])) {
                                    return true
                                }
                            }
                            return false
                        };
                        let result = false;
                        for (let i = 0; i < resources.length; i++) {
                            const resourceName = resources[i].name;
                            result = checkAppointmentResourceValues(resourceName, i);
                            if (!result) {
                                return false
                            }
                        }
                        return result
                    };
                    _proto._filterAppointmentByRRule = function(appointment, min, max, startDayHour, endDayHour, firstDayOfWeek) {
                        const {
                            recurrenceRule: recurrenceRule
                        } = appointment;
                        const {
                            recurrenceException: recurrenceException
                        } = appointment;
                        const {
                            allDay: allDay
                        } = appointment;
                        let result = true;
                        const appointmentStartDate = appointment.startDate;
                        const appointmentEndDate = appointment.endDate;
                        const recurrenceProcessor = (0, _m_recurrence.getRecurrenceProcessor)();
                        if (allDay || (0, _m_utils2._appointmentPartInInterval)(appointmentStartDate, appointmentEndDate, startDayHour, endDayHour)) {
                            const [trimMin, trimMax] = (0, _getDatesWithoutTime.default)(min, max);
                            min = trimMin;
                            max = new Date(trimMax.getTime() - toMs("minute"))
                        }
                        if (recurrenceRule && !recurrenceProcessor.isValidRecurrenceRule(recurrenceRule)) {
                            result = appointmentEndDate > min && appointmentStartDate <= max
                        }
                        if (result && recurrenceProcessor.isValidRecurrenceRule(recurrenceRule)) {
                            const {
                                viewOffset: viewOffset
                            } = this.options;
                            result = recurrenceProcessor.hasRecurrence({
                                rule: recurrenceRule,
                                exception: recurrenceException,
                                start: appointmentStartDate,
                                end: appointmentEndDate,
                                min: _date2.dateUtilsTs.addOffsets(min, [viewOffset]),
                                max: _date2.dateUtilsTs.addOffsets(max, [viewOffset]),
                                firstDayOfWeek: firstDayOfWeek,
                                appointmentTimezoneOffset: this.timeZoneCalculator.getOriginStartDateOffsetInMs(appointmentStartDate, appointment.startDateTimeZone, false)
                            })
                        }
                        return result
                    };
                    _proto.filterLoadedAppointments = function(filterOptions, preparedItems) {
                        const filteredItems = this.filterPreparedItems(filterOptions, preparedItems);
                        return filteredItems.map(_ref2 => {
                            let {
                                rawAppointment: rawAppointment
                            } = _ref2;
                            return rawAppointment
                        })
                    };
                    _proto.filterPreparedItems = function(filterOptions, preparedItems) {
                        const combinedFilter = this._createAppointmentFilter(filterOptions);
                        return (0, _query.default)(preparedItems).filter(combinedFilter).toArray()
                    };
                    _proto.filterAllDayAppointments = function(preparedItems) {
                        const combinedFilter = this._createAllDayAppointmentFilter();
                        return (0, _query.default)(preparedItems).filter(combinedFilter).toArray().map(_ref3 => {
                            let {
                                rawAppointment: rawAppointment
                            } = _ref3;
                            return rawAppointment
                        })
                    };
                    _createClass(AppointmentFilterBaseStrategy, [{
                        key: "strategyName",
                        get: function() {
                            return FilterStrategies_standard
                        }
                    }, {
                        key: "timeZoneCalculator",
                        get: function() {
                            return this.options.timeZoneCalculator
                        }
                    }, {
                        key: "viewStartDayHour",
                        get: function() {
                            return this.options.startDayHour
                        }
                    }, {
                        key: "viewEndDayHour",
                        get: function() {
                            return this.options.endDayHour
                        }
                    }, {
                        key: "timezone",
                        get: function() {
                            return this.options.timezone
                        }
                    }, {
                        key: "firstDayOfWeek",
                        get: function() {
                            return this.options.firstDayOfWeek
                        }
                    }, {
                        key: "showAllDayPanel",
                        get: function() {
                            return this.options.showAllDayPanel
                        }
                    }, {
                        key: "loadedResources",
                        get: function() {
                            return this._resolveOption("loadedResources")
                        }
                    }, {
                        key: "supportAllDayRow",
                        get: function() {
                            return this._resolveOption("supportAllDayRow")
                        }
                    }, {
                        key: "viewType",
                        get: function() {
                            return this._resolveOption("viewType")
                        }
                    }, {
                        key: "viewDirection",
                        get: function() {
                            return this._resolveOption("viewDirection")
                        }
                    }, {
                        key: "dateRange",
                        get: function() {
                            return this._resolveOption("dateRange")
                        }
                    }, {
                        key: "groupCount",
                        get: function() {
                            return this._resolveOption("groupCount")
                        }
                    }, {
                        key: "viewDataProvider",
                        get: function() {
                            return this._resolveOption("viewDataProvider")
                        }
                    }, {
                        key: "allDayPanelMode",
                        get: function() {
                            return this._resolveOption("allDayPanelMode")
                        }
                    }]);
                    return AppointmentFilterBaseStrategy
                }();
                exports.AppointmentFilterBaseStrategy = AppointmentFilterBaseStrategy;
                let AppointmentFilterVirtualStrategy = function(_AppointmentFilterBas) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(AppointmentFilterVirtualStrategy, _AppointmentFilterBas);

                    function AppointmentFilterVirtualStrategy() {
                        return _AppointmentFilterBas.apply(this, arguments) || this
                    }
                    var _proto2 = AppointmentFilterVirtualStrategy.prototype;
                    _proto2.filter = function(preparedItems) {
                        const {
                            viewOffset: viewOffset
                        } = this.options;
                        const hourMs = toMs("hour");
                        const isCalculateStartAndEndDayHour = (0, _base.isDateAndTimeView)(this.viewType);
                        const checkIntersectViewport = isCalculateStartAndEndDayHour && "horizontal" === this.viewDirection;
                        const isAllDayWorkspace = !this.supportAllDayRow;
                        const showAllDayAppointments = this.showAllDayPanel || isAllDayWorkspace;
                        const endViewDate = this.viewDataProvider.getLastViewDateByEndDayHour(this.viewEndDayHour);
                        const shiftedEndViewDate = _date2.dateUtilsTs.addOffsets(endViewDate, [viewOffset]);
                        const filterOptions = [];
                        const groupsInfo = this.viewDataProvider.getCompletedGroupsInfo();
                        groupsInfo.forEach(item => {
                            const {
                                groupIndex: groupIndex
                            } = item;
                            const groupStartDate = item.startDate;
                            const groupEndDate = new Date(Math.min(item.endDate.getTime(), shiftedEndViewDate.getTime()));
                            const startDayHour = isCalculateStartAndEndDayHour ? groupStartDate.getHours() : this.viewStartDayHour;
                            const endDayHour = isCalculateStartAndEndDayHour ? startDayHour + groupStartDate.getMinutes() / 60 + (groupEndDate.getTime() - groupStartDate.getTime()) / hourMs : this.viewEndDayHour;
                            const resources = this._getPrerenderFilterResources(groupIndex);
                            const hasAllDayPanel = this.viewDataProvider.hasGroupAllDayPanel(groupIndex);
                            const supportAllDayAppointment = isAllDayWorkspace || !!showAllDayAppointments && hasAllDayPanel;
                            filterOptions.push({
                                isVirtualScrolling: true,
                                startDayHour: startDayHour,
                                endDayHour: endDayHour,
                                viewOffset: viewOffset,
                                viewStartDayHour: this.viewStartDayHour,
                                viewEndDayHour: this.viewEndDayHour,
                                min: _date2.dateUtilsTs.addOffsets(groupStartDate, [-viewOffset]),
                                max: _date2.dateUtilsTs.addOffsets(groupEndDate, [-viewOffset]),
                                supportMultiDayAppointments: (0, _base.isTimelineView)(this.viewType),
                                allDay: supportAllDayAppointment,
                                resources: resources,
                                firstDayOfWeek: this.firstDayOfWeek,
                                checkIntersectViewport: checkIntersectViewport
                            })
                        });
                        return this.filterLoadedAppointments({
                            filterOptions: filterOptions,
                            groupCount: this.groupCount
                        }, preparedItems)
                    };
                    _proto2.filterPreparedItems = function(_ref4, preparedItems) {
                        let {
                            filterOptions: filterOptions,
                            groupCount: groupCount
                        } = _ref4;
                        const combinedFilters = [];
                        let itemsToFilter = preparedItems;
                        const needPreFilter = groupCount > 0;
                        if (needPreFilter) {
                            itemsToFilter = itemsToFilter.filter(_ref5 => {
                                let {
                                    rawAppointment: rawAppointment
                                } = _ref5;
                                for (let i = 0; i < filterOptions.length; ++i) {
                                    const {
                                        resources: resources
                                    } = filterOptions[i];
                                    if (this._filterAppointmentByResources(rawAppointment, resources)) {
                                        return true
                                    }
                                }
                            })
                        }
                        filterOptions.forEach(option => {
                            combinedFilters.length && combinedFilters.push("or");
                            const filter = this._createAppointmentFilter(option);
                            combinedFilters.push(filter)
                        });
                        return (0, _query.default)(itemsToFilter).filter(combinedFilters).toArray()
                    };
                    _proto2.hasAllDayAppointments = function(filteredItems, preparedItems) {
                        return this.filterAllDayAppointments(preparedItems).length > 0
                    };
                    _proto2._getPrerenderFilterResources = function(groupIndex) {
                        const cellGroup = this.viewDataProvider.getCellsGroup(groupIndex);
                        return (0, _m_utils.getResourcesDataByGroups)(this.loadedResources, this.resources, [cellGroup])
                    };
                    _createClass(AppointmentFilterVirtualStrategy, [{
                        key: "strategyName",
                        get: function() {
                            return FilterStrategies_virtual
                        }
                    }, {
                        key: "resources",
                        get: function() {
                            return this.options.resources
                        }
                    }]);
                    return AppointmentFilterVirtualStrategy
                }(AppointmentFilterBaseStrategy);
                exports.AppointmentFilterVirtualStrategy = AppointmentFilterVirtualStrategy
            },
        55523:
            /*!********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/data_provider/m_utils.js ***!
              \********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.sortAppointmentsByStartDate = exports.replaceWrongEndDate = exports.getRecurrenceException = exports.getAppointmentTakesSeveralDays = exports.compareDateWithStartDayHour = exports.compareDateWithEndDayHour = exports._isEndDateWrong = exports._convertRecurrenceException = exports._appointmentPartInInterval = void 0;
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 91198));
                var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date_serialization */ 69434));
                var _utils = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/scheduler/utils.timeZone */ 32511));
                var _m_expression_utils = __webpack_require__( /*! ../../m_expression_utils */ 30906);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const toMs = _date.default.dateToMilliseconds;
                exports.compareDateWithStartDayHour = (startDate, endDate, startDayHour, allDay, severalDays) => {
                    const startTime = _date.default.dateTimeFromDecimal(startDayHour);
                    const result = startDate.getHours() >= startTime.hours && startDate.getMinutes() >= startTime.minutes || endDate.getHours() === startTime.hours && endDate.getMinutes() > startTime.minutes || endDate.getHours() > startTime.hours || severalDays || allDay;
                    return result
                };
                exports.compareDateWithEndDayHour = options => {
                    const {
                        startDate: startDate,
                        endDate: endDate,
                        startDayHour: startDayHour,
                        endDayHour: endDayHour,
                        viewStartDayHour: viewStartDayHour,
                        viewEndDayHour: viewEndDayHour,
                        allDay: allDay,
                        severalDays: severalDays,
                        min: min,
                        max: max,
                        checkIntersectViewport: checkIntersectViewport
                    } = options;
                    const hiddenInterval = (24 - viewEndDayHour + viewStartDayHour) * toMs("hour");
                    const apptDuration = endDate.getTime() - startDate.getTime();
                    const delta = (hiddenInterval - apptDuration) / toMs("hour");
                    const apptStartHour = startDate.getHours();
                    const apptStartMinutes = startDate.getMinutes();
                    let result;
                    const endTime = _date.default.dateTimeFromDecimal(endDayHour);
                    const startTime = _date.default.dateTimeFromDecimal(startDayHour);
                    const apptIntersectViewport = startDate < max && endDate > min;
                    result = checkIntersectViewport && apptIntersectViewport || apptStartHour < endTime.hours || apptStartHour === endTime.hours && apptStartMinutes < endTime.minutes || allDay && startDate <= max || severalDays && apptIntersectViewport && (apptStartHour < endTime.hours || 60 * endDate.getHours() + endDate.getMinutes() > 60 * startTime.hours);
                    if (apptDuration < hiddenInterval) {
                        if (apptStartHour > endTime.hours && apptStartMinutes > endTime.minutes && delta <= apptStartHour - endDayHour) {
                            result = false
                        }
                    }
                    return result
                };
                exports.getAppointmentTakesSeveralDays = adapter => !_date.default.sameDate(adapter.startDate, adapter.endDate);
                const _isEndDateWrong = (startDate, endDate) => !endDate || isNaN(endDate.getTime()) || startDate.getTime() > endDate.getTime();
                exports._isEndDateWrong = _isEndDateWrong;
                exports._appointmentPartInInterval = (startDate, endDate, startDayHour, endDayHour) => {
                    const apptStartDayHour = startDate.getHours();
                    const apptEndDayHour = endDate.getHours();
                    return apptStartDayHour <= startDayHour && apptEndDayHour <= endDayHour && apptEndDayHour >= startDayHour || apptEndDayHour >= endDayHour && apptStartDayHour <= endDayHour && apptStartDayHour >= startDayHour
                };
                exports.getRecurrenceException = (appointmentAdapter, timeZoneCalculator, timeZone) => {
                    const {
                        recurrenceException: recurrenceException
                    } = appointmentAdapter;
                    if (recurrenceException) {
                        const exceptions = recurrenceException.split(",");
                        for (let i = 0; i < exceptions.length; i++) {
                            exceptions[i] = _convertRecurrenceException(exceptions[i], appointmentAdapter.startDate, timeZoneCalculator, timeZone)
                        }
                        return exceptions.join()
                    }
                    return recurrenceException
                };
                const _convertRecurrenceException = (exceptionString, startDate, timeZoneCalculator, timeZone) => {
                    exceptionString = exceptionString.replace(/\s/g, "");
                    const getConvertedToTimeZone = date => timeZoneCalculator.createDate(date, {
                        path: "toGrid"
                    });
                    const exceptionDate = _date_serialization.default.deserializeDate(exceptionString);
                    const convertedStartDate = getConvertedToTimeZone(startDate);
                    let convertedExceptionDate = getConvertedToTimeZone(exceptionDate);
                    convertedExceptionDate = _utils.default.correctRecurrenceExceptionByTimezone(convertedExceptionDate, convertedStartDate, timeZone);
                    exceptionString = _date_serialization.default.serializeDate(convertedExceptionDate, "yyyyMMddTHHmmss");
                    return exceptionString
                };
                exports._convertRecurrenceException = _convertRecurrenceException;
                exports.replaceWrongEndDate = (rawAppointment, startDate, endDate, appointmentDuration, dataAccessors) => {
                    if (_isEndDateWrong(startDate, endDate)) {
                        const isAllDay = _m_expression_utils.ExpressionUtils.getField(dataAccessors, "allDay", rawAppointment);
                        const calculatedEndDate = ((isAllDay, startDate) => {
                            if (isAllDay) {
                                return _date.default.setToDayEnd(new Date(startDate))
                            }
                            return new Date(startDate.getTime() + appointmentDuration * toMs("minute"))
                        })(isAllDay, startDate);
                        dataAccessors.setter.endDate(rawAppointment, calculatedEndDate)
                    }
                };
                exports.sortAppointmentsByStartDate = (appointments, dataAccessors) => {
                    appointments.sort((a, b) => {
                        const firstDate = new Date(_m_expression_utils.ExpressionUtils.getField(dataAccessors, "startDate", a.settings || a));
                        const secondDate = new Date(_m_expression_utils.ExpressionUtils.getField(dataAccessors, "startDate", b.settings || b));
                        return Math.sign(firstDate.getTime() - secondDate.getTime())
                    })
                }
            },
        99423:
            /*!************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/m_appointment.js ***!
              \************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.Appointment = exports.AgendaAppointment = void 0;
                var _translator = __webpack_require__( /*! ../../../animation/translator */ 31648);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 99393));
                var _dom_component = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_component */ 13046));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../events/core/events_engine */ 55994));
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../events/pointer */ 93786));
                var _index = __webpack_require__( /*! ../../../events/utils/index */ 39611);
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../localization/date */ 91500));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../localization/message */ 28109));
                var _resizable = _interopRequireDefault(__webpack_require__( /*! ../../../ui/resizable */ 46743));
                var _ui = __webpack_require__( /*! ../../../ui/tooltip/ui.tooltip */ 63898);
                var _m_classes = __webpack_require__( /*! ../m_classes */ 43600);
                var _m_expression_utils = __webpack_require__( /*! ../m_expression_utils */ 30906);
                var _m_recurrence = __webpack_require__( /*! ../m_recurrence */ 38227);

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

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                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 _inheritsLoose(subClass, superClass) {
                    subClass.prototype = Object.create(superClass.prototype);
                    subClass.prototype.constructor = subClass;
                    _setPrototypeOf(subClass, superClass)
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const REDUCED_APPOINTMENT_POINTERENTER_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.enter, "dxSchedulerAppointment");
                const REDUCED_APPOINTMENT_POINTERLEAVE_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.leave, "dxSchedulerAppointment");
                let Appointment = function(_DOMComponent) {
                    _inheritsLoose(Appointment, _DOMComponent);

                    function Appointment() {
                        return _DOMComponent.apply(this, arguments) || this
                    }
                    var _proto = Appointment.prototype;
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_DOMComponent.prototype._getDefaultOptions.call(this), {
                            data: {},
                            groupIndex: -1,
                            groups: [],
                            geometry: {
                                top: 0,
                                left: 0,
                                width: 0,
                                height: 0
                            },
                            allowDrag: true,
                            allowResize: true,
                            reduced: null,
                            isCompact: false,
                            direction: "vertical",
                            resizableConfig: {
                                keepAspectRatio: false
                            },
                            cellHeight: 0,
                            cellWidth: 0,
                            isDragSource: false
                        })
                    };
                    _proto.notifyObserver = function(subject, args) {
                        const observer = this.option("observer");
                        if (observer) {
                            observer.fire(subject, args)
                        }
                    };
                    _proto.invoke = function(funcName) {
                        const observer = this.option("observer");
                        if (observer) {
                            return observer.fire.apply(observer, arguments)
                        }
                    };
                    _proto._optionChanged = function(args) {
                        switch (args.name) {
                            case "data":
                            case "groupIndex":
                            case "geometry":
                            case "allowDrag":
                            case "allowResize":
                            case "reduced":
                            case "sortedIndex":
                            case "isCompact":
                            case "direction":
                            case "resizableConfig":
                            case "cellHeight":
                            case "cellWidth":
                                this._invalidate();
                                break;
                            case "isDragSource":
                                this._renderDragSourceClass();
                                break;
                            default:
                                _DOMComponent.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto._getHorizontalResizingRule = function() {
                        const reducedHandles = {
                            head: this.option("rtlEnabled") ? "right" : "left",
                            body: "",
                            tail: this.option("rtlEnabled") ? "left" : "right"
                        };
                        const getResizableStep = this.option("getResizableStep");
                        const step = getResizableStep ? getResizableStep() : 0;
                        return {
                            handles: this.option("reduced") ? reducedHandles[this.option("reduced")] : "left right",
                            minHeight: 0,
                            minWidth: this.invoke("getCellWidth"),
                            step: step,
                            roundStepValue: false
                        }
                    };
                    _proto._getVerticalResizingRule = function() {
                        const height = Math.round(this.invoke("getCellHeight"));
                        return {
                            handles: "top bottom",
                            minWidth: 0,
                            minHeight: height,
                            step: height,
                            roundStepValue: true
                        }
                    };
                    _proto._render = function() {
                        _DOMComponent.prototype._render.call(this);
                        this._renderAppointmentGeometry();
                        this._renderEmptyClass();
                        this._renderReducedAppointment();
                        this._renderAllDayClass();
                        this._renderDragSourceClass();
                        this._renderDirection();
                        this.$element().data("dxAppointmentStartDate", this.option("startDate"));
                        const text = _m_expression_utils.ExpressionUtils.getField(this.option("dataAccessors"), "text", this.rawAppointment);
                        this.$element().attr("title", text);
                        this.$element().attr("role", "button");
                        this._renderRecurrenceClass();
                        this._renderResizable();
                        this._setResourceColor()
                    };
                    _proto._setResourceColor = function() {
                        const appointmentConfig = {
                            itemData: this.rawAppointment,
                            groupIndex: this.option("groupIndex"),
                            groups: this.option("groups")
                        };
                        const deferredColor = this.option("getAppointmentColor")(appointmentConfig);
                        deferredColor.done(color => {
                            if (color) {
                                this.coloredElement.css("backgroundColor", color);
                                this.coloredElement.addClass(_m_classes.APPOINTMENT_HAS_RESOURCE_COLOR_CLASS)
                            }
                        })
                    };
                    _proto._renderAppointmentGeometry = function() {
                        const geometry = this.option("geometry");
                        const $element = this.$element();
                        (0, _translator.move)($element, {
                            top: geometry.top,
                            left: geometry.left
                        });
                        $element.css({
                            width: geometry.width < 0 ? 0 : geometry.width,
                            height: geometry.height < 0 ? 0 : geometry.height
                        })
                    };
                    _proto._renderEmptyClass = function() {
                        const geometry = this.option("geometry");
                        if (geometry.empty || this.option("isCompact")) {
                            this.$element().addClass(_m_classes.EMPTY_APPOINTMENT_CLASS)
                        }
                    };
                    _proto._renderReducedAppointment = function() {
                        const reducedPart = this.option("reduced");
                        if (!reducedPart) {
                            return
                        }
                        this.$element().toggleClass(_m_classes.REDUCED_APPOINTMENT_CLASS, true).toggleClass(_m_classes.REDUCED_APPOINTMENT_PARTS_CLASSES[reducedPart], true);
                        this._renderAppointmentReducedIcon()
                    };
                    _proto._renderAppointmentReducedIcon = function() {
                        const $icon = (0, _renderer.default)("<div>").addClass(_m_classes.REDUCED_APPOINTMENT_ICON).appendTo(this.$element());
                        const endDate = this._getEndDate();
                        const tooltipLabel = _message.default.format("dxScheduler-editorLabelEndDate");
                        const tooltipText = [tooltipLabel, ": ", _date.default.format(endDate, "monthAndDay"), ", ", _date.default.format(endDate, "year")].join("");
                        _events_engine.default.off($icon, REDUCED_APPOINTMENT_POINTERENTER_EVENT_NAME);
                        _events_engine.default.on($icon, REDUCED_APPOINTMENT_POINTERENTER_EVENT_NAME, () => {
                            (0, _ui.show)({
                                target: $icon,
                                content: tooltipText
                            })
                        });
                        _events_engine.default.off($icon, REDUCED_APPOINTMENT_POINTERLEAVE_EVENT_NAME);
                        _events_engine.default.on($icon, REDUCED_APPOINTMENT_POINTERLEAVE_EVENT_NAME, () => {
                            (0, _ui.hide)()
                        })
                    };
                    _proto._getEndDate = function() {
                        const result = _m_expression_utils.ExpressionUtils.getField(this.option("dataAccessors"), "endDate", this.rawAppointment);
                        if (result) {
                            return new Date(result)
                        }
                        return result
                    };
                    _proto._renderAllDayClass = function() {
                        this.$element().toggleClass(_m_classes.ALL_DAY_APPOINTMENT_CLASS, !!this.option("allDay"))
                    };
                    _proto._renderDragSourceClass = function() {
                        this.$element().toggleClass(_m_classes.APPOINTMENT_DRAG_SOURCE_CLASS, !!this.option("isDragSource"))
                    };
                    _proto._renderRecurrenceClass = function() {
                        const rule = _m_expression_utils.ExpressionUtils.getField(this.option("dataAccessors"), "recurrenceRule", this.rawAppointment);
                        if ((0, _m_recurrence.getRecurrenceProcessor)().isValidRecurrenceRule(rule)) {
                            this.$element().addClass(_m_classes.RECURRENCE_APPOINTMENT_CLASS)
                        }
                    };
                    _proto._renderDirection = function() {
                        this.$element().addClass(_m_classes.DIRECTION_APPOINTMENT_CLASSES[this.option("direction")])
                    };
                    _proto._createResizingConfig = function() {
                        const config = "vertical" === this.option("direction") ? this._getVerticalResizingRule() : this._getHorizontalResizingRule();
                        if (!this.invoke("isGroupedByDate")) {
                            config.stepPrecision = "strict"
                        }
                        return config
                    };
                    _proto._renderResizable = function() {
                        if (this.option("allowResize")) {
                            this._createComponent(this.$element(), _resizable.default, (0, _extend.extend)(this._createResizingConfig(), this.option("resizableConfig")))
                        }
                    };
                    _proto._useTemplates = function() {
                        return false
                    };
                    _createClass(Appointment, [{
                        key: "coloredElement",
                        get: function() {
                            return this.$element()
                        }
                    }, {
                        key: "rawAppointment",
                        get: function() {
                            return this.option("data")
                        }
                    }]);
                    return Appointment
                }(_dom_component.default);
                exports.Appointment = Appointment;
                (0, _component_registrator.default)("dxSchedulerAppointment", Appointment);
                let AgendaAppointment = function(_Appointment) {
                    _inheritsLoose(AgendaAppointment, _Appointment);

                    function AgendaAppointment() {
                        return _Appointment.apply(this, arguments) || this
                    }
                    var _proto2 = AgendaAppointment.prototype;
                    _proto2._getDefaultOptions = function() {
                        return (0, _extend.extend)(_Appointment.prototype._getDefaultOptions.call(this), {
                            createPlainResourceListAsync: new _deferred.Deferred
                        })
                    };
                    _proto2._renderResourceList = function(container, list) {
                        list.forEach(item => {
                            const itemContainer = (0, _renderer.default)("<div>").addClass(_m_classes.APPOINTMENT_CONTENT_CLASSES.AGENDA_RESOURCE_LIST_ITEM).appendTo(container);
                            (0, _renderer.default)("<div>").text("".concat(item.label, ":")).appendTo(itemContainer);
                            (0, _renderer.default)("<div>").addClass(_m_classes.APPOINTMENT_CONTENT_CLASSES.AGENDA_RESOURCE_LIST_ITEM_VALUE).text(item.values.join(", ")).appendTo(itemContainer)
                        })
                    };
                    _proto2._render = function() {
                        _Appointment.prototype._render.call(this);
                        const createPlainResourceListAsync = this.option("createPlainResourceListAsync");
                        createPlainResourceListAsync(this.rawAppointment).done(list => {
                            const parent = this.$element().find(".".concat(_m_classes.APPOINTMENT_CONTENT_CLASSES.APPOINTMENT_CONTENT_DETAILS));
                            const container = (0, _renderer.default)("<div>").addClass(_m_classes.APPOINTMENT_CONTENT_CLASSES.AGENDA_RESOURCE_LIST).appendTo(parent);
                            this._renderResourceList(container, list)
                        })
                    };
                    _createClass(AgendaAppointment, [{
                        key: "coloredElement",
                        get: function() {
                            return this.$element().find(".".concat(_m_classes.APPOINTMENT_CONTENT_CLASSES.AGENDA_MARKER))
                        }
                    }]);
                    return AgendaAppointment
                }(Appointment);
                exports.AgendaAppointment = AgendaAppointment
            },
        16993:
            /*!***********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/m_appointment_collection.js ***!
              \***********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _translator = __webpack_require__( /*! ../../../animation/translator */ 31648);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 99393));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 73349));
                var _element = __webpack_require__( /*! ../../../core/element */ 6415);
                var _element_data = __webpack_require__( /*! ../../../core/element_data */ 97906);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _array = __webpack_require__( /*! ../../../core/utils/array */ 89386);
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 20576);
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 91198));
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 95479);
                var _object = __webpack_require__( /*! ../../../core/utils/object */ 48013);
                var _position = __webpack_require__( /*! ../../../core/utils/position */ 37518);
                var _size = __webpack_require__( /*! ../../../core/utils/size */ 58664);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../events/core/events_engine */ 55994));
                var _double_click = __webpack_require__( /*! ../../../events/double_click */ 85272);
                var _index = __webpack_require__( /*! ../../../events/utils/index */ 39611);
                var _uiCollection_widget = _interopRequireDefault(__webpack_require__( /*! ../../../ui/collection/ui.collection_widget.edit */ 11050));
                var _utils = _interopRequireDefault(__webpack_require__( /*! ../../../ui/scheduler/utils.timeZone */ 32511));
                var _date2 = __webpack_require__( /*! ../../core/utils/date */ 24321);
                var _m_appointment_adapter = __webpack_require__( /*! ../m_appointment_adapter */ 72734);
                var _m_classes = __webpack_require__( /*! ../m_classes */ 43600);
                var _m_constants = __webpack_require__( /*! ../m_constants */ 6324);
                var _m_expression_utils = __webpack_require__( /*! ../m_expression_utils */ 30906);
                var _m_recurrence = __webpack_require__( /*! ../m_recurrence */ 38227);
                var _m_utils = __webpack_require__( /*! ./data_provider/m_utils */ 55523);
                var _m_appointment = __webpack_require__( /*! ./m_appointment */ 99423);
                var _m_appointment_layout = __webpack_require__( /*! ./m_appointment_layout */ 72417);
                var _m_core = __webpack_require__( /*! ./resizing/m_core */ 71687);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const DBLCLICK_EVENT_NAME = (0, _index.addNamespace)(_double_click.name, "dxSchedulerAppointment");
                const toMs = _date.default.dateToMilliseconds;
                let SchedulerAppointments = function(_CollectionWidget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(SchedulerAppointments, _CollectionWidget);

                    function SchedulerAppointments(element, options) {
                        var _this;
                        _this = _CollectionWidget.call(this, element, options) || this;
                        _this._virtualAppointments = {};
                        return _this
                    }
                    var _proto = SchedulerAppointments.prototype;
                    _proto.option = function(optionName, value) {
                        return _CollectionWidget.prototype.option.apply(this, arguments)
                    };
                    _proto.notifyObserver = function(subject, args) {
                        const observer = this.option("observer");
                        if (observer) {
                            observer.fire(subject, args)
                        }
                    };
                    _proto.invoke = function(funcName) {
                        for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
                            args[_key - 1] = arguments[_key]
                        }
                        const observer = this.option("observer");
                        if (observer) {
                            return observer.fire.apply(observer, arguments)
                        }
                    };
                    _proto._dispose = function() {
                        clearTimeout(this._appointmentClickTimeout);
                        _CollectionWidget.prototype._dispose.call(this)
                    };
                    _proto._supportedKeys = function() {
                        const parent = _CollectionWidget.prototype._supportedKeys.call(this);
                        const currentAppointment = this._$currentAppointment;
                        return (0, _extend.extend)(parent, {
                            escape: function() {
                                var _a, _b, _c;
                                if (this.resizeOccur) {
                                    this.moveAppointmentBack();
                                    this.resizeOccur = false;
                                    null === (_a = currentAppointment.dxResizable("instance")) || void 0 === _a ? void 0 : _a._detachEventHandlers();
                                    null === (_b = currentAppointment.dxResizable("instance")) || void 0 === _b ? void 0 : _b._attachEventHandlers();
                                    null === (_c = currentAppointment.dxResizable("instance")) || void 0 === _c ? void 0 : _c._toggleResizingClass(false)
                                }
                            }.bind(this),
                            del: function(e) {
                                if (this.option("allowDelete")) {
                                    e.preventDefault();
                                    const data = this._getItemData(e.target);
                                    this.notifyObserver("onDeleteButtonPress", {
                                        data: data,
                                        target: e.target
                                    })
                                }
                            }.bind(this),
                            tab: function(e) {
                                const appointments = this._getAccessAppointments();
                                const focusedAppointment = appointments.filter(".dx-state-focused");
                                let index = focusedAppointment.data(_m_constants.APPOINTMENT_SETTINGS_KEY).sortedIndex;
                                const lastIndex = appointments.length - 1;
                                if (index > 0 && e.shiftKey || index < lastIndex && !e.shiftKey) {
                                    e.preventDefault();
                                    e.shiftKey ? index-- : index++;
                                    const $nextAppointment = this._getAppointmentByIndex(index);
                                    this._resetTabIndex($nextAppointment);
                                    _events_engine.default.trigger($nextAppointment, "focus")
                                }
                            }
                        })
                    };
                    _proto._getAppointmentByIndex = function(sortedIndex) {
                        const appointments = this._getAccessAppointments();
                        return appointments.filter((_, $item) => (0, _element_data.data)($item, _m_constants.APPOINTMENT_SETTINGS_KEY).sortedIndex === sortedIndex).eq(0)
                    };
                    _proto._getAccessAppointments = function() {
                        return this._itemElements().filter(":visible").not(".dx-state-disabled")
                    };
                    _proto._resetTabIndex = function($appointment) {
                        this._focusTarget().attr("tabIndex", -1);
                        $appointment.attr("tabIndex", this.option("tabIndex"))
                    };
                    _proto._moveFocus = function() {};
                    _proto._focusTarget = function() {
                        return this._itemElements()
                    };
                    _proto._renderFocusTarget = function() {
                        const $appointment = this._getAppointmentByIndex(0);
                        this._resetTabIndex($appointment)
                    };
                    _proto._focusInHandler = function(e) {
                        _CollectionWidget.prototype._focusInHandler.call(this, e);
                        this._$currentAppointment = (0, _renderer.default)(e.target);
                        this.option("focusedElement", (0, _element.getPublicElement)((0, _renderer.default)(e.target)))
                    };
                    _proto._focusOutHandler = function(e) {
                        const $appointment = this._getAppointmentByIndex(0);
                        this.option("focusedElement", (0, _element.getPublicElement)($appointment));
                        _CollectionWidget.prototype._focusOutHandler.call(this, e)
                    };
                    _proto._eventBindingTarget = function() {
                        return this._itemContainer()
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_CollectionWidget.prototype._getDefaultOptions.call(this), {
                            noDataText: null,
                            activeStateEnabled: true,
                            hoverStateEnabled: true,
                            tabIndex: 0,
                            fixedContainer: null,
                            allDayContainer: null,
                            allowDrag: true,
                            allowResize: true,
                            allowAllDayResize: true,
                            onAppointmentDblClick: null,
                            _collectorOffset: 0,
                            groups: [],
                            resources: []
                        })
                    };
                    _proto._optionChanged = function(args) {
                        if (this.option("isRenovatedAppointments")) {
                            return
                        }
                        switch (args.name) {
                            case "items":
                                this._cleanFocusState();
                                this._clearDropDownItems();
                                this._clearDropDownItemsElements();
                                this._repaintAppointments(args.value);
                                this._renderDropDownAppointments();
                                this._attachAppointmentsEvents();
                                break;
                            case "fixedContainer":
                            case "allDayContainer":
                            case "onAppointmentDblClick":
                                break;
                            case "allowDrag":
                            case "allowResize":
                            case "allowAllDayResize":
                                this._invalidate();
                                break;
                            case "focusedElement":
                                this._resetTabIndex((0, _renderer.default)(args.value));
                                _CollectionWidget.prototype._optionChanged.call(this, args);
                                break;
                            case "allowDelete":
                                break;
                            case "focusStateEnabled":
                                this._clearDropDownItemsElements();
                                this._renderDropDownAppointments();
                                _CollectionWidget.prototype._optionChanged.call(this, args);
                                break;
                            default:
                                _CollectionWidget.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto._isAllDayAppointment = function(appointment) {
                        return appointment.settings.length && appointment.settings[0].allDay || false
                    };
                    _proto._isRepaintAppointment = function(appointment) {
                        return !(0, _type.isDefined)(appointment.needRepaint) || true === appointment.needRepaint
                    };
                    _proto._isRepaintAll = function(appointments) {
                        if (this.isAgendaView) {
                            return true
                        }
                        for (let i = 0; i < appointments.length; i++) {
                            if (!this._isRepaintAppointment(appointments[i])) {
                                return false
                            }
                        }
                        return true
                    };
                    _proto._applyFragment = function(fragment, allDay) {
                        if (fragment.children().length > 0) {
                            this._getAppointmentContainer(allDay).append(fragment)
                        }
                    };
                    _proto._onEachAppointment = function(appointment, index, container, isRepaintAll) {
                        const repaintAppointment = () => {
                            appointment.needRepaint = false;
                            this._clearItem(appointment);
                            this._renderItem(index, appointment, container)
                        };
                        if (true === (null === appointment || void 0 === appointment ? void 0 : appointment.needRemove)) {
                            this._clearItem(appointment)
                        } else if (isRepaintAll || this._isRepaintAppointment(appointment)) {
                            repaintAppointment()
                        }
                    };
                    _proto._repaintAppointments = function(appointments) {
                        this._renderByFragments(($commonFragment, $allDayFragment) => {
                            const isRepaintAll = this._isRepaintAll(appointments);
                            if (isRepaintAll) {
                                this._getAppointmentContainer(true).html("");
                                this._getAppointmentContainer(false).html("")
                            }!appointments.length && this._cleanItemContainer();
                            appointments.forEach((appointment, index) => {
                                const container = this._isAllDayAppointment(appointment) ? $allDayFragment : $commonFragment;
                                this._onEachAppointment(appointment, index, container, isRepaintAll)
                            })
                        })
                    };
                    _proto._renderByFragments = function(renderFunction) {
                        if (this.isVirtualScrolling) {
                            const $commonFragment = (0, _renderer.default)(_dom_adapter.default.createDocumentFragment());
                            const $allDayFragment = (0, _renderer.default)(_dom_adapter.default.createDocumentFragment());
                            renderFunction($commonFragment, $allDayFragment);
                            this._applyFragment($commonFragment, false);
                            this._applyFragment($allDayFragment, true)
                        } else {
                            renderFunction(this._getAppointmentContainer(false), this._getAppointmentContainer(true))
                        }
                    };
                    _proto._attachAppointmentsEvents = function() {
                        this._attachClickEvent();
                        this._attachHoldEvent();
                        this._attachContextMenuEvent();
                        this._attachAppointmentDblClick();
                        this._renderFocusState();
                        this._attachFeedbackEvents();
                        this._attachHoverEvents()
                    };
                    _proto._clearItem = function(item) {
                        const $items = this._findItemElementByItem(item.itemData);
                        if (!$items.length) {
                            return
                        }(0, _iterator.each)($items, (_, $item) => {
                            $item.detach();
                            $item.remove()
                        })
                    };
                    _proto._clearDropDownItems = function() {
                        this._virtualAppointments = {}
                    };
                    _proto._clearDropDownItemsElements = function() {
                        this.invoke("clearCompactAppointments")
                    };
                    _proto._findItemElementByItem = function(item) {
                        const result = [];
                        const that = this;
                        this.itemElements().each((function() {
                            const $item = (0, _renderer.default)(this);
                            if ($item.data(that._itemDataKey()) === item) {
                                result.push($item)
                            }
                        }));
                        return result
                    };
                    _proto._itemClass = function() {
                        return _m_classes.APPOINTMENT_ITEM_CLASS
                    };
                    _proto._itemContainer = function() {
                        const $container = _CollectionWidget.prototype._itemContainer.call(this);
                        let $result = $container;
                        const $allDayContainer = this.option("allDayContainer");
                        if ($allDayContainer) {
                            $result = $container.add($allDayContainer)
                        }
                        return $result
                    };
                    _proto._cleanItemContainer = function() {
                        _CollectionWidget.prototype._cleanItemContainer.call(this);
                        const $allDayContainer = this.option("allDayContainer");
                        if ($allDayContainer) {
                            $allDayContainer.empty()
                        }
                        this._virtualAppointments = {}
                    };
                    _proto._clean = function() {
                        _CollectionWidget.prototype._clean.call(this);
                        delete this._$currentAppointment;
                        delete this._initialSize;
                        delete this._initialCoordinates
                    };
                    _proto._init = function() {
                        _CollectionWidget.prototype._init.call(this);
                        this.$element().addClass("dx-scheduler-scrollable-appointments");
                        this._preventSingleAppointmentClick = false
                    };
                    _proto._renderAppointmentTemplate = function($container, appointment, model) {
                        var _a;
                        const config = {
                            isAllDay: appointment.allDay,
                            isRecurrence: appointment.recurrenceRule,
                            html: (0, _type.isPlainObject)(appointment) && appointment.html ? appointment.html : void 0
                        };
                        const formatText = this.invoke("getTextAndFormatDate", model.appointmentData, (null === (_a = this._currentAppointmentSettings) || void 0 === _a ? void 0 : _a.agendaSettings) || model.targetedAppointmentData, "TIME");
                        $container.append(this.isAgendaView ? (0, _m_appointment_layout.createAgendaAppointmentLayout)(formatText, config) : (0, _m_appointment_layout.createAppointmentLayout)(formatText, config));
                        if (!this.isAgendaView) {
                            $container.parent().prepend((0, _renderer.default)("<div>").addClass(_m_classes.APPOINTMENT_CONTENT_CLASSES.STRIP))
                        }
                    };
                    _proto._executeItemRenderAction = function(index, itemData, itemElement) {
                        const action = this._getItemRenderAction();
                        if (action) {
                            action(this.invoke("mapAppointmentFields", {
                                itemData: itemData,
                                itemElement: itemElement
                            }))
                        }
                        delete this._currentAppointmentSettings
                    };
                    _proto._itemClickHandler = function(e) {
                        _CollectionWidget.prototype._itemClickHandler.call(this, e, {}, {
                            afterExecute: function(e) {
                                this._processItemClick(e.args[0].event)
                            }.bind(this)
                        })
                    };
                    _proto._processItemClick = function(e) {
                        const $target = (0, _renderer.default)(e.currentTarget);
                        const data = this._getItemData($target);
                        if ("keydown" === e.type || (0, _index.isFakeClickEvent)(e)) {
                            this.notifyObserver("showEditAppointmentPopup", {
                                data: data,
                                target: $target
                            });
                            return
                        }
                        this._appointmentClickTimeout = setTimeout(() => {
                            if (!this._preventSingleAppointmentClick && _dom_adapter.default.getBody().contains($target[0])) {
                                this.notifyObserver("showAppointmentTooltip", {
                                    data: data,
                                    target: $target
                                })
                            }
                            this._preventSingleAppointmentClick = false
                        }, 300)
                    };
                    _proto._extendActionArgs = function($itemElement) {
                        const args = _CollectionWidget.prototype._extendActionArgs.call(this, $itemElement);
                        return this.invoke("mapAppointmentFields", args)
                    };
                    _proto._render = function() {
                        _CollectionWidget.prototype._render.call(this);
                        this._attachAppointmentDblClick()
                    };
                    _proto._attachAppointmentDblClick = function() {
                        const that = this;
                        const itemSelector = that._itemSelector();
                        const itemContainer = this._itemContainer();
                        _events_engine.default.off(itemContainer, DBLCLICK_EVENT_NAME, itemSelector);
                        _events_engine.default.on(itemContainer, DBLCLICK_EVENT_NAME, itemSelector, e => {
                            that._itemDXEventHandler(e, "onAppointmentDblClick", {}, {
                                afterExecute(e) {
                                    that._dblClickHandler(e.args[0].event)
                                }
                            })
                        })
                    };
                    _proto._dblClickHandler = function(e) {
                        const $targetAppointment = (0, _renderer.default)(e.currentTarget);
                        const appointmentData = this._getItemData($targetAppointment);
                        clearTimeout(this._appointmentClickTimeout);
                        this._preventSingleAppointmentClick = true;
                        this.notifyObserver("showEditAppointmentPopup", {
                            data: appointmentData,
                            target: $targetAppointment
                        })
                    };
                    _proto._renderItem = function(index, item, container) {
                        const {
                            itemData: itemData
                        } = item;
                        const $items = [];
                        for (let i = 0; i < item.settings.length; i++) {
                            const setting = item.settings[i];
                            this._currentAppointmentSettings = setting;
                            const $item = _CollectionWidget.prototype._renderItem.call(this, index, itemData, container);
                            $item.data(_m_constants.APPOINTMENT_SETTINGS_KEY, setting);
                            $items.push($item)
                        }
                        return $items
                    };
                    _proto._getItemContent = function($itemFrame) {
                        $itemFrame.data(_m_constants.APPOINTMENT_SETTINGS_KEY, this._currentAppointmentSettings);
                        const $itemContent = _CollectionWidget.prototype._getItemContent.call(this, $itemFrame);
                        return $itemContent
                    };
                    _proto._createItemByTemplate = function(itemTemplate, renderArgs) {
                        const {
                            itemData: itemData,
                            container: container,
                            index: index
                        } = renderArgs;
                        return itemTemplate.render({
                            model: {
                                appointmentData: itemData,
                                targetedAppointmentData: this.invoke("getTargetedAppointmentData", itemData, (0, _renderer.default)(container).parent())
                            },
                            container: container,
                            index: index
                        })
                    };
                    _proto._getAppointmentContainer = function(allDay) {
                        const $allDayContainer = this.option("allDayContainer");
                        let $container = this.itemsContainer().not($allDayContainer);
                        if (allDay && $allDayContainer) {
                            $container = $allDayContainer
                        }
                        return $container
                    };
                    _proto._postprocessRenderItem = function(args) {
                        this._renderAppointment(args.itemElement, this._currentAppointmentSettings)
                    };
                    _proto._renderAppointment = function(element, settings) {
                        var _a;
                        element.data(_m_constants.APPOINTMENT_SETTINGS_KEY, settings);
                        this._applyResourceDataAttr(element);
                        const rawAppointment = this._getItemData(element);
                        const geometry = this.invoke("getAppointmentGeometry", settings);
                        const allowResize = this.option("allowResize") && (!(0, _type.isDefined)(settings.skipResizing) || (0, _type.isString)(settings.skipResizing));
                        const allowDrag = this.option("allowDrag");
                        const {
                            allDay: allDay
                        } = settings;
                        this.invoke("setCellDataCacheAlias", this._currentAppointmentSettings, geometry);
                        if (settings.virtual) {
                            const appointmentConfig = {
                                itemData: rawAppointment,
                                groupIndex: settings.groupIndex,
                                groups: this.option("groups")
                            };
                            const deferredColor = this.option("getAppointmentColor")(appointmentConfig);
                            this._processVirtualAppointment(settings, element, rawAppointment, deferredColor)
                        } else {
                            const config = {
                                data: rawAppointment,
                                groupIndex: settings.groupIndex,
                                observer: this.option("observer"),
                                geometry: geometry,
                                direction: settings.direction || "vertical",
                                allowResize: allowResize,
                                allowDrag: allowDrag,
                                allDay: allDay,
                                reduced: settings.appointmentReduced,
                                isCompact: settings.isCompact,
                                startDate: new Date(null === (_a = settings.info) || void 0 === _a ? void 0 : _a.appointment.startDate),
                                cellWidth: this.invoke("getCellWidth"),
                                cellHeight: this.invoke("getCellHeight"),
                                resizableConfig: this._resizableConfig(rawAppointment, settings),
                                groups: this.option("groups"),
                                getAppointmentColor: this.option("getAppointmentColor"),
                                getResourceDataAccessors: this.option("getResourceDataAccessors")
                            };
                            if (this.isAgendaView) {
                                const agendaResourceProcessor = this.option("getAgendaResourceProcessor")();
                                config.createPlainResourceListAsync = rawAppointment => agendaResourceProcessor.createListAsync(rawAppointment)
                            }
                            this._createComponent(element, this.isAgendaView ? _m_appointment.AgendaAppointment : _m_appointment.Appointment, _extends(_extends({}, config), {
                                dataAccessors: this.option("dataAccessors"),
                                getResizableStep: this.option("getResizableStep")
                            }))
                        }
                    };
                    _proto._applyResourceDataAttr = function($appointment) {
                        const dataAccessors = this.option("getResourceDataAccessors")();
                        const rawAppointment = this._getItemData($appointment);
                        (0, _iterator.each)(dataAccessors.getter, key => {
                            const value = dataAccessors.getter[key](rawAppointment);
                            if ((0, _type.isDefined)(value)) {
                                const prefix = "data-".concat((0, _common.normalizeKey)(key.toLowerCase()), "-");
                                (0, _array.wrapToArray)(value).forEach(value => $appointment.attr(prefix + (0, _common.normalizeKey)(value), true))
                            }
                        })
                    };
                    _proto._resizableConfig = function(appointmentData, itemSetting) {
                        return {
                            area: this._calculateResizableArea(itemSetting, appointmentData),
                            onResizeStart: function(e) {
                                this.resizeOccur = true;
                                this._$currentAppointment = (0, _renderer.default)(e.element);
                                if (this.invoke("needRecalculateResizableArea")) {
                                    const updatedArea = this._calculateResizableArea(this._$currentAppointment.data(_m_constants.APPOINTMENT_SETTINGS_KEY), this._$currentAppointment.data("dxItemData"));
                                    e.component.option("area", updatedArea);
                                    e.component._renderDragOffsets(e.event)
                                }
                                this._initialSize = {
                                    width: e.width,
                                    height: e.height
                                };
                                this._initialCoordinates = (0, _translator.locate)(this._$currentAppointment)
                            }.bind(this),
                            onResizeEnd: function(e) {
                                this.resizeOccur = false;
                                this._resizeEndHandler(e)
                            }.bind(this)
                        }
                    };
                    _proto._calculateResizableArea = function(itemSetting, appointmentData) {
                        const area = this.$element().closest(".dx-scrollable-content");
                        return this.invoke("getResizableAppointmentArea", {
                            coordinates: {
                                left: itemSetting.left,
                                top: 0,
                                groupIndex: itemSetting.groupIndex
                            },
                            allDay: itemSetting.allDay
                        }) || area
                    };
                    _proto._resizeEndHandler = function(e) {
                        const $element = (0, _renderer.default)(e.element);
                        const {
                            allDay: allDay,
                            info: info
                        } = $element.data("dxAppointmentSettings");
                        const sourceAppointment = this._getItemData($element);
                        const viewOffset = this.invoke("getViewOffsetMs");
                        let dateRange;
                        if (allDay) {
                            dateRange = this.resizeAllDay(e)
                        } else {
                            const startDate = this._getEndResizeAppointmentStartDate(e, sourceAppointment, info.appointment);
                            const {
                                endDate: endDate
                            } = info.appointment;
                            const shiftedStartDate = _date2.dateUtilsTs.addOffsets(startDate, [-viewOffset]);
                            const shiftedEndDate = _date2.dateUtilsTs.addOffsets(endDate, [-viewOffset]);
                            dateRange = this._getDateRange(e, shiftedStartDate, shiftedEndDate);
                            dateRange.startDate = _date2.dateUtilsTs.addOffsets(dateRange.startDate, [viewOffset]);
                            dateRange.endDate = _date2.dateUtilsTs.addOffsets(dateRange.endDate, [viewOffset])
                        }
                        this.updateResizedAppointment($element, dateRange, this.option("dataAccessors"), this.option("timeZoneCalculator"))
                    };
                    _proto.resizeAllDay = function(e) {
                        const $element = (0, _renderer.default)(e.element);
                        const timeZoneCalculator = this.option("timeZoneCalculator");
                        const dataAccessors = this.option("dataAccessors");
                        return (0, _m_core.getAppointmentDateRange)({
                            handles: e.handles,
                            appointmentSettings: $element.data("dxAppointmentSettings"),
                            isVerticalViewDirection: this.option("isVerticalViewDirection")(),
                            isVerticalGroupedWorkSpace: this.option("isVerticalGroupedWorkSpace")(),
                            appointmentRect: (0, _position.getBoundingRect)($element[0]),
                            parentAppointmentRect: (0, _position.getBoundingRect)($element.parent()[0]),
                            viewDataProvider: this.option("getViewDataProvider")(),
                            isDateAndTimeView: this.option("isDateAndTimeView")(),
                            startDayHour: this.invoke("getStartDayHour"),
                            endDayHour: this.invoke("getEndDayHour"),
                            timeZoneCalculator: timeZoneCalculator,
                            dataAccessors: dataAccessors,
                            rtlEnabled: this.option("rtlEnabled"),
                            DOMMetaData: this.option("getDOMElementsMetaData")(),
                            viewOffset: this.invoke("getViewOffsetMs")
                        })
                    };
                    _proto.updateResizedAppointment = function($element, dateRange, dataAccessors, timeZoneCalculator) {
                        const sourceAppointment = this._getItemData($element);
                        const modifiedAppointmentAdapter = (0, _m_appointment_adapter.createAppointmentAdapter)(sourceAppointment, dataAccessors, timeZoneCalculator).clone();
                        modifiedAppointmentAdapter.startDate = new Date(dateRange.startDate);
                        modifiedAppointmentAdapter.endDate = new Date(dateRange.endDate);
                        this.notifyObserver("updateAppointmentAfterResize", {
                            target: sourceAppointment,
                            data: modifiedAppointmentAdapter.clone({
                                pathTimeZone: "fromGrid"
                            }).source(),
                            $appointment: $element
                        })
                    };
                    _proto._getEndResizeAppointmentStartDate = function(e, rawAppointment, appointmentInfo) {
                        const timeZoneCalculator = this.option("timeZoneCalculator");
                        const appointmentAdapter = (0, _m_appointment_adapter.createAppointmentAdapter)(rawAppointment, this.option("dataAccessors"), timeZoneCalculator);
                        let {
                            startDate: startDate
                        } = appointmentInfo;
                        const recurrenceProcessor = (0, _m_recurrence.getRecurrenceProcessor)();
                        const {
                            recurrenceRule: recurrenceRule,
                            startDateTimeZone: startDateTimeZone
                        } = appointmentAdapter;
                        const isAllDay = this.invoke("isAllDay", rawAppointment);
                        const isRecurrent = recurrenceProcessor.isValidRecurrenceRule(recurrenceRule);
                        if (!e.handles.top && !isRecurrent && !isAllDay) {
                            startDate = timeZoneCalculator.createDate(appointmentAdapter.startDate, {
                                appointmentTimeZone: startDateTimeZone,
                                path: "toGrid"
                            })
                        }
                        return startDate
                    };
                    _proto._getDateRange = function(e, startDate, endDate) {
                        const itemData = this._getItemData(e.element);
                        const deltaTime = this.invoke("getDeltaTime", e, this._initialSize, itemData);
                        const renderingStrategyDirection = this.invoke("getRenderingStrategyDirection");
                        let isStartDateChanged = false;
                        const isAllDay = this.invoke("isAllDay", itemData);
                        const needCorrectDates = this.invoke("needCorrectAppointmentDates") && !isAllDay;
                        let startTime;
                        let endTime;
                        if ("vertical" !== renderingStrategyDirection || isAllDay) {
                            isStartDateChanged = this.option("rtlEnabled") ? e.handles.right : e.handles.left
                        } else {
                            isStartDateChanged = e.handles.top
                        }
                        if (isStartDateChanged) {
                            startTime = needCorrectDates ? this._correctStartDateByDelta(startDate, deltaTime) : startDate.getTime() - deltaTime;
                            startTime += _utils.default.getTimezoneOffsetChangeInMs(startDate, endDate, startTime, endDate);
                            endTime = endDate.getTime()
                        } else {
                            startTime = startDate.getTime();
                            endTime = needCorrectDates ? this._correctEndDateByDelta(endDate, deltaTime) : endDate.getTime() + deltaTime;
                            endTime -= _utils.default.getTimezoneOffsetChangeInMs(startDate, endDate, startDate, endTime)
                        }
                        return {
                            startDate: new Date(startTime),
                            endDate: new Date(endTime)
                        }
                    };
                    _proto._correctEndDateByDelta = function(endDate, deltaTime) {
                        const endDayHour = this.invoke("getEndDayHour");
                        const startDayHour = this.invoke("getStartDayHour");
                        const maxDate = new Date(endDate);
                        const minDate = new Date(endDate);
                        const correctEndDate = new Date(endDate);
                        minDate.setHours(startDayHour, 0, 0, 0);
                        maxDate.setHours(endDayHour, 0, 0, 0);
                        if (correctEndDate > maxDate) {
                            correctEndDate.setHours(endDayHour, 0, 0, 0)
                        }
                        let result = correctEndDate.getTime() + deltaTime;
                        const visibleDayDuration = (endDayHour - startDayHour) * toMs("hour");
                        const daysCount = deltaTime > 0 ? Math.ceil(deltaTime / visibleDayDuration) : Math.floor(deltaTime / visibleDayDuration);
                        if (result > maxDate.getTime() || result <= minDate.getTime()) {
                            const tailOfCurrentDay = maxDate.getTime() - correctEndDate.getTime();
                            const tailOfPrevDays = deltaTime - tailOfCurrentDay;
                            const correctedEndDate = new Date(correctEndDate).setDate(correctEndDate.getDate() + daysCount);
                            const lastDay = new Date(correctedEndDate);
                            lastDay.setHours(startDayHour, 0, 0, 0);
                            result = lastDay.getTime() + tailOfPrevDays - visibleDayDuration * (daysCount - 1)
                        }
                        return result
                    };
                    _proto._correctStartDateByDelta = function(startDate, deltaTime) {
                        const endDayHour = this.invoke("getEndDayHour");
                        const startDayHour = this.invoke("getStartDayHour");
                        const maxDate = new Date(startDate);
                        const minDate = new Date(startDate);
                        const correctStartDate = new Date(startDate);
                        minDate.setHours(startDayHour, 0, 0, 0);
                        maxDate.setHours(endDayHour, 0, 0, 0);
                        if (correctStartDate < minDate) {
                            correctStartDate.setHours(startDayHour, 0, 0, 0)
                        }
                        let result = correctStartDate.getTime() - deltaTime;
                        const visibleDayDuration = (endDayHour - startDayHour) * toMs("hour");
                        const daysCount = deltaTime > 0 ? Math.ceil(deltaTime / visibleDayDuration) : Math.floor(deltaTime / visibleDayDuration);
                        if (result < minDate.getTime() || result >= maxDate.getTime()) {
                            const tailOfCurrentDay = correctStartDate.getTime() - minDate.getTime();
                            const tailOfPrevDays = deltaTime - tailOfCurrentDay;
                            const firstDay = new Date(correctStartDate.setDate(correctStartDate.getDate() - daysCount));
                            firstDay.setHours(endDayHour, 0, 0, 0);
                            result = firstDay.getTime() - tailOfPrevDays + visibleDayDuration * (daysCount - 1)
                        }
                        return result
                    };
                    _proto._processVirtualAppointment = function(appointmentSetting, $appointment, appointmentData, color) {
                        const virtualAppointment = appointmentSetting.virtual;
                        const virtualGroupIndex = virtualAppointment.index;
                        if (!(0, _type.isDefined)(this._virtualAppointments[virtualGroupIndex])) {
                            this._virtualAppointments[virtualGroupIndex] = {
                                coordinates: {
                                    top: virtualAppointment.top,
                                    left: virtualAppointment.left
                                },
                                items: {
                                    data: [],
                                    colors: [],
                                    settings: []
                                },
                                isAllDay: !!virtualAppointment.isAllDay,
                                buttonColor: color
                            }
                        }
                        appointmentSetting.targetedAppointmentData = this.invoke("getTargetedAppointmentData", appointmentData, $appointment);
                        this._virtualAppointments[virtualGroupIndex].items.settings.push(appointmentSetting);
                        this._virtualAppointments[virtualGroupIndex].items.data.push(appointmentData);
                        this._virtualAppointments[virtualGroupIndex].items.colors.push(color);
                        $appointment.remove()
                    };
                    _proto._renderContentImpl = function() {
                        _CollectionWidget.prototype._renderContentImpl.call(this);
                        this._renderDropDownAppointments()
                    };
                    _proto._renderDropDownAppointments = function() {
                        this._renderByFragments(($commonFragment, $allDayFragment) => {
                            (0, _iterator.each)(this._virtualAppointments, groupIndex => {
                                const virtualGroup = this._virtualAppointments[groupIndex];
                                const virtualItems = virtualGroup.items;
                                const virtualCoordinates = virtualGroup.coordinates;
                                const $fragment = virtualGroup.isAllDay ? $allDayFragment : $commonFragment;
                                const {
                                    left: left
                                } = virtualCoordinates;
                                const buttonWidth = this.invoke("getDropDownAppointmentWidth", virtualGroup.isAllDay);
                                const buttonHeight = this.invoke("getDropDownAppointmentHeight");
                                const rtlOffset = this.option("rtlEnabled") ? buttonWidth : 0;
                                this.notifyObserver("renderCompactAppointments", {
                                    $container: $fragment,
                                    coordinates: {
                                        top: virtualCoordinates.top,
                                        left: left + rtlOffset
                                    },
                                    items: virtualItems,
                                    buttonColor: virtualGroup.buttonColor,
                                    width: buttonWidth - this.option("_collectorOffset"),
                                    height: buttonHeight,
                                    onAppointmentClick: this.option("onItemClick"),
                                    allowDrag: this.option("allowDrag"),
                                    cellWidth: this.invoke("getCellWidth"),
                                    isCompact: this.invoke("isAdaptive") || this._isGroupCompact(virtualGroup)
                                })
                            })
                        })
                    };
                    _proto._isGroupCompact = function(virtualGroup) {
                        return !virtualGroup.isAllDay && this.invoke("supportCompactDropDownAppointments")
                    };
                    _proto._sortAppointmentsByStartDate = function(appointments) {
                        return (0, _m_utils.sortAppointmentsByStartDate)(appointments, this.option("dataAccessors"))
                    };
                    _proto._processRecurrenceAppointment = function(appointment, index, skipLongAppointments) {
                        const recurrenceRule = _m_expression_utils.ExpressionUtils.getField(this.option("dataAccessors"), "recurrenceRule", appointment);
                        const result = {
                            parts: [],
                            indexes: []
                        };
                        if (recurrenceRule) {
                            const dates = appointment.settings || appointment;
                            const startDate = new Date(_m_expression_utils.ExpressionUtils.getField(this.option("dataAccessors"), "startDate", dates));
                            const startDateTimeZone = _m_expression_utils.ExpressionUtils.getField(this.option("dataAccessors"), "startDateTimeZone", appointment);
                            const endDate = new Date(_m_expression_utils.ExpressionUtils.getField(this.option("dataAccessors"), "endDate", dates));
                            const appointmentDuration = endDate.getTime() - startDate.getTime();
                            const recurrenceException = _m_expression_utils.ExpressionUtils.getField(this.option("dataAccessors"), "recurrenceException", appointment);
                            const startViewDate = this.invoke("getStartViewDate");
                            const endViewDate = this.invoke("getEndViewDate");
                            const timezoneCalculator = this.option("timeZoneCalculator");
                            const recurrentDates = (0, _m_recurrence.getRecurrenceProcessor)().generateDates({
                                rule: recurrenceRule,
                                exception: recurrenceException,
                                start: startDate,
                                end: endDate,
                                min: startViewDate,
                                max: endViewDate,
                                appointmentTimezoneOffset: timezoneCalculator.getOriginStartDateOffsetInMs(startDate, startDateTimeZone, false)
                            });
                            const recurrentDateCount = appointment.settings ? 1 : recurrentDates.length;
                            for (let i = 0; i < recurrentDateCount; i++) {
                                const appointmentPart = (0, _extend.extend)({}, appointment, true);
                                if (recurrentDates[i]) {
                                    const appointmentSettings = this._applyStartDateToObj(recurrentDates[i], {});
                                    this._applyEndDateToObj(new Date(recurrentDates[i].getTime() + appointmentDuration), appointmentSettings);
                                    appointmentPart.settings = appointmentSettings
                                } else {
                                    appointmentPart.settings = dates
                                }
                                result.parts.push(appointmentPart);
                                if (!skipLongAppointments) {
                                    this._processLongAppointment(appointmentPart, result)
                                }
                            }
                            result.indexes.push(index)
                        }
                        return result
                    };
                    _proto._processLongAppointment = function(appointment, result) {
                        const parts = this.splitAppointmentByDay(appointment);
                        const partCount = parts.length;
                        const endViewDate = this.invoke("getEndViewDate").getTime();
                        const startViewDate = this.invoke("getStartViewDate").getTime();
                        const timeZoneCalculator = this.option("timeZoneCalculator");
                        result = result || {
                            parts: []
                        };
                        if (partCount > 1) {
                            (0, _extend.extend)(appointment, parts[0]);
                            for (let i = 1; i < partCount; i++) {
                                let startDate = _m_expression_utils.ExpressionUtils.getField(this.option("dataAccessors"), "startDate", parts[i].settings).getTime();
                                startDate = timeZoneCalculator.createDate(startDate, {
                                    path: "toGrid"
                                });
                                if (startDate < endViewDate && startDate > startViewDate) {
                                    result.parts.push(parts[i])
                                }
                            }
                        }
                        return result
                    };
                    _proto._reduceRecurrenceAppointments = function(recurrenceIndexes, appointments) {
                        (0, _iterator.each)(recurrenceIndexes, (i, index) => {
                            appointments.splice(index - i, 1)
                        })
                    };
                    _proto._combineAppointments = function(appointments, additionalAppointments) {
                        if (additionalAppointments.length) {
                            appointments.push(...additionalAppointments)
                        }
                        this._sortAppointmentsByStartDate(appointments)
                    };
                    _proto._applyStartDateToObj = function(startDate, obj) {
                        _m_expression_utils.ExpressionUtils.setField(this.option("dataAccessors"), "startDate", obj, startDate);
                        return obj
                    };
                    _proto._applyEndDateToObj = function(endDate, obj) {
                        _m_expression_utils.ExpressionUtils.setField(this.option("dataAccessors"), "endDate", obj, endDate);
                        return obj
                    };
                    _proto.moveAppointmentBack = function(dragEvent) {
                        const $appointment = this._$currentAppointment;
                        const size = this._initialSize;
                        const coords = this._initialCoordinates;
                        if (dragEvent) {
                            this._removeDragSourceClassFromDraggedAppointment();
                            if ((0, _type.isDeferred)(dragEvent.cancel)) {
                                dragEvent.cancel.resolve(true)
                            } else {
                                dragEvent.cancel = true
                            }
                        }
                        if ($appointment && !dragEvent) {
                            if (coords) {
                                (0, _translator.move)($appointment, coords);
                                delete this._initialSize
                            }
                            if (size) {
                                (0, _size.setOuterWidth)($appointment, size.width);
                                (0, _size.setOuterHeight)($appointment, size.height);
                                delete this._initialCoordinates
                            }
                        }
                    };
                    _proto.focus = function() {
                        if (this._$currentAppointment) {
                            const focusedElement = (0, _element.getPublicElement)(this._$currentAppointment);
                            this.option("focusedElement", focusedElement);
                            _events_engine.default.trigger(focusedElement, "focus")
                        }
                    };
                    _proto.splitAppointmentByDay = function(appointment) {
                        const dates = appointment.settings || appointment;
                        const dataAccessors = this.option("dataAccessors");
                        const originalStartDate = new Date(_m_expression_utils.ExpressionUtils.getField(dataAccessors, "startDate", dates));
                        let startDate = _date.default.makeDate(originalStartDate);
                        let endDate = _date.default.makeDate(_m_expression_utils.ExpressionUtils.getField(dataAccessors, "endDate", dates));
                        const maxAllowedDate = this.invoke("getEndViewDate");
                        const startDayHour = this.invoke("getStartDayHour");
                        const endDayHour = this.invoke("getEndDayHour");
                        const timeZoneCalculator = this.option("timeZoneCalculator");
                        const adapter = (0, _m_appointment_adapter.createAppointmentAdapter)(appointment, dataAccessors, timeZoneCalculator);
                        const appointmentIsLong = (0, _m_utils.getAppointmentTakesSeveralDays)(adapter);
                        const result = [];
                        startDate = timeZoneCalculator.createDate(startDate, {
                            path: "toGrid"
                        });
                        endDate = timeZoneCalculator.createDate(endDate, {
                            path: "toGrid"
                        });
                        if (startDate.getHours() <= endDayHour && startDate.getHours() >= startDayHour && !appointmentIsLong) {
                            result.push(this._applyStartDateToObj(new Date(startDate), {
                                appointmentData: appointment
                            }));
                            startDate.setDate(startDate.getDate() + 1)
                        }
                        while (appointmentIsLong && startDate.getTime() < endDate.getTime() && startDate < maxAllowedDate) {
                            const currentStartDate = new Date(startDate);
                            const currentEndDate = new Date(startDate);
                            this._checkStartDate(currentStartDate, originalStartDate, startDayHour);
                            this._checkEndDate(currentEndDate, endDate, endDayHour);
                            const appointmentData = (0, _object.deepExtendArraySafe)({}, appointment, true);
                            const appointmentSettings = {};
                            this._applyStartDateToObj(currentStartDate, appointmentSettings);
                            this._applyEndDateToObj(currentEndDate, appointmentSettings);
                            appointmentData.settings = appointmentSettings;
                            result.push(appointmentData);
                            startDate = _date.default.trimTime(startDate);
                            startDate.setDate(startDate.getDate() + 1);
                            startDate.setHours(startDayHour)
                        }
                        return result
                    };
                    _proto._checkStartDate = function(currentDate, originalDate, startDayHour) {
                        if (!_date.default.sameDate(currentDate, originalDate) || currentDate.getHours() <= startDayHour) {
                            currentDate.setHours(startDayHour, 0, 0, 0)
                        } else {
                            currentDate.setHours(originalDate.getHours(), originalDate.getMinutes(), originalDate.getSeconds(), originalDate.getMilliseconds())
                        }
                    };
                    _proto._checkEndDate = function(currentDate, originalDate, endDayHour) {
                        if (!_date.default.sameDate(currentDate, originalDate) || currentDate.getHours() > endDayHour) {
                            currentDate.setHours(endDayHour, 0, 0, 0)
                        } else {
                            currentDate.setHours(originalDate.getHours(), originalDate.getMinutes(), originalDate.getSeconds(), originalDate.getMilliseconds())
                        }
                    };
                    _proto._removeDragSourceClassFromDraggedAppointment = function() {
                        const $appointments = this._itemElements().filter(".".concat(_m_classes.APPOINTMENT_DRAG_SOURCE_CLASS));
                        $appointments.each((_, element) => {
                            const appointmentInstance = (0, _renderer.default)(element).dxSchedulerAppointment("instance");
                            appointmentInstance.option("isDragSource", false)
                        })
                    };
                    _proto._setDragSourceAppointment = function(appointment, settings) {
                        const $appointments = this._findItemElementByItem(appointment);
                        const {
                            startDate: startDate,
                            endDate: endDate
                        } = settings.info.sourceAppointment;
                        const {
                            groupIndex: groupIndex
                        } = settings;
                        $appointments.forEach($item => {
                            const {
                                info: itemInfo,
                                groupIndex: itemGroupIndex
                            } = $item.data(_m_constants.APPOINTMENT_SETTINGS_KEY);
                            const {
                                startDate: itemStartDate,
                                endDate: itemEndDate
                            } = itemInfo.sourceAppointment;
                            const appointmentInstance = $item.dxSchedulerAppointment("instance");
                            const isDragSource = startDate.getTime() === itemStartDate.getTime() && endDate.getTime() === itemEndDate.getTime() && groupIndex === itemGroupIndex;
                            appointmentInstance.option("isDragSource", isDragSource)
                        })
                    };
                    _proto.updateResizableArea = function() {
                        const $allResizableElements = this.$element().find(".dx-scheduler-appointment.dx-resizable");
                        const horizontalResizables = (0, _common.grep)($allResizableElements, el => {
                            const $el = (0, _renderer.default)(el);
                            const resizableInst = $el.dxResizable("instance");
                            const {
                                area: area,
                                handles: handles
                            } = resizableInst.option();
                            return ("right left" === handles || "left right" === handles) && (0, _type.isPlainObject)(area)
                        });
                        (0, _iterator.each)(horizontalResizables, (_, el) => {
                            const $el = (0, _renderer.default)(el);
                            const position = (0, _translator.locate)($el);
                            const appointmentData = this._getItemData($el);
                            const area = this._calculateResizableArea({
                                left: position.left
                            }, appointmentData);
                            $el.dxResizable("instance").option("area", area)
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(SchedulerAppointments, [{
                        key: "isAgendaView",
                        get: function() {
                            return this.invoke("isCurrentViewAgenda")
                        }
                    }, {
                        key: "isVirtualScrolling",
                        get: function() {
                            return this.invoke("isVirtualScrolling")
                        }
                    }, {
                        key: "appointmentDataProvider",
                        get: function() {
                            return this.option("getAppointmentDataProvider")()
                        }
                    }]);
                    return SchedulerAppointments
                }(_uiCollection_widget.default);
                (0, _component_registrator.default)("dxSchedulerAppointments", SchedulerAppointments);
                var _default = SchedulerAppointments;
                exports.default = _default
            },
        72417:
            /*!*******************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/m_appointment_layout.js ***!
              \*******************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.createAppointmentLayout = exports.createAgendaAppointmentLayout = void 0;
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 73349));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../localization/message */ 28109));
                var _m_classes = __webpack_require__( /*! ../m_classes */ 43600);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const allDayText = " ".concat(_message.default.format("dxScheduler-allDay"), ": ");
                exports.createAppointmentLayout = (formatText, config) => {
                    const result = (0, _renderer.default)(_dom_adapter.default.createDocumentFragment());
                    (0, _renderer.default)("<div>").text(formatText.text).addClass(_m_classes.APPOINTMENT_CONTENT_CLASSES.APPOINTMENT_TITLE).appendTo(result);
                    if (config.html) {
                        result.html(config.html)
                    }
                    const $contentDetails = (0, _renderer.default)("<div>").addClass(_m_classes.APPOINTMENT_CONTENT_CLASSES.APPOINTMENT_CONTENT_DETAILS).appendTo(result);
                    (0, _renderer.default)("<div>").addClass(_m_classes.APPOINTMENT_CONTENT_CLASSES.APPOINTMENT_DATE).text(formatText.formatDate).appendTo($contentDetails);
                    config.isRecurrence && (0, _renderer.default)("<span>").addClass("".concat(_m_classes.APPOINTMENT_CONTENT_CLASSES.RECURRING_ICON, " dx-icon-repeat")).appendTo(result);
                    config.isAllDay && (0, _renderer.default)("<div>").text(allDayText).addClass(_m_classes.APPOINTMENT_CONTENT_CLASSES.ALL_DAY_CONTENT).prependTo($contentDetails);
                    return result
                };
                exports.createAgendaAppointmentLayout = (formatText, config) => {
                    const result = (0, _renderer.default)(_dom_adapter.default.createDocumentFragment());
                    const leftLayoutContainer = (0, _renderer.default)("<div>").addClass("dx-scheduler-agenda-appointment-left-layout").appendTo(result);
                    const rightLayoutContainer = (0, _renderer.default)("<div>").addClass("dx-scheduler-agenda-appointment-right-layout").appendTo(result);
                    const marker = (0, _renderer.default)("<div>").addClass(_m_classes.APPOINTMENT_CONTENT_CLASSES.AGENDA_MARKER).appendTo(leftLayoutContainer);
                    config.isRecurrence && (0, _renderer.default)("<span>").addClass("".concat(_m_classes.APPOINTMENT_CONTENT_CLASSES.RECURRING_ICON, " dx-icon-repeat")).appendTo(marker);
                    (0, _renderer.default)("<div>").addClass(_m_classes.APPOINTMENT_CONTENT_CLASSES.APPOINTMENT_TITLE).text(formatText.text).appendTo(rightLayoutContainer);
                    const additionalContainer = (0, _renderer.default)("<div>").addClass(_m_classes.APPOINTMENT_CONTENT_CLASSES.APPOINTMENT_CONTENT_DETAILS).appendTo(rightLayoutContainer);
                    (0, _renderer.default)("<div>").addClass(_m_classes.APPOINTMENT_CONTENT_CLASSES.APPOINTMENT_DATE).text(formatText.formatDate).appendTo(additionalContainer);
                    if (config.isAllDay) {
                        (0, _renderer.default)("<div>").text(allDayText).addClass(_m_classes.APPOINTMENT_CONTENT_CLASSES.ALL_DAY_CONTENT).prependTo(additionalContainer)
                    }
                    return result
                }
            },
        70325:
            /*!*************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/m_cell_position_calculator.js ***!
              \*************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.CellPositionCalculator = void 0;
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _date = __webpack_require__( /*! ../../core/utils/date */ 24321);

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }
                let BaseStrategy = function() {
                    function BaseStrategy(options) {
                        this.isVirtualScrolling = false;
                        this.options = options
                    }
                    var _proto = BaseStrategy.prototype;
                    _proto.calculateCellPositions = function(groupIndices, isAllDayRowAppointment, isRecurrentAppointment) {
                        const result = [];
                        this.appointments.forEach((dateSetting, index) => {
                            const coordinates = this.getCoordinateInfos({
                                appointment: dateSetting,
                                groupIndices: groupIndices,
                                isAllDayRowAppointment: isAllDayRowAppointment,
                                isRecurrentAppointment: isRecurrentAppointment
                            });
                            coordinates.forEach(item => {
                                !!item && result.push(this._prepareObject(item, index))
                            })
                        });
                        return result
                    };
                    _proto.getCoordinateInfos = function(options) {
                        const {
                            appointment: appointment,
                            isAllDayRowAppointment: isAllDayRowAppointment,
                            groupIndices: groupIndices,
                            recurrent: recurrent
                        } = options;
                        const {
                            startDate: startDate
                        } = appointment;
                        const groupIndex = !recurrent ? appointment.source.groupIndex : void 0;
                        return this.getCoordinatesByDateInGroup(startDate, groupIndices, isAllDayRowAppointment, groupIndex)
                    };
                    _proto._prepareObject = function(position, dateSettingIndex) {
                        position.dateSettingIndex = dateSettingIndex;
                        return {
                            coordinates: position,
                            dateSettingIndex: dateSettingIndex
                        }
                    };
                    _proto.getCoordinatesByDate = function(date, groupIndex, inAllDayRow) {
                        const validGroupIndex = groupIndex || 0;
                        const cellInfo = {
                            groupIndex: validGroupIndex,
                            startDate: date,
                            isAllDay: inAllDayRow
                        };
                        const positionByMap = this.viewDataProvider.findCellPositionInMap(cellInfo, true);
                        if (!positionByMap) {
                            return
                        }
                        const position = this.getCellPosition(positionByMap, inAllDayRow && !this.isVerticalGrouping);
                        const timeShift = inAllDayRow ? 0 : this.getTimeShiftRatio(positionByMap, date);
                        const shift = this.getPositionShift(timeShift, inAllDayRow);
                        const horizontalHMax = this.positionHelper.getHorizontalMax(validGroupIndex, date);
                        const verticalMax = this.positionHelper.getVerticalMax({
                            groupIndex: validGroupIndex,
                            isVirtualScrolling: this.isVirtualScrolling,
                            showAllDayPanel: this.showAllDayPanel,
                            supportAllDayRow: this.supportAllDayRow,
                            isGroupedAllDayPanel: this.isGroupedAllDayPanel,
                            isVerticalGrouping: this.isVerticalGrouping
                        });
                        return {
                            positionByMap: positionByMap,
                            cellPosition: position.left + shift.cellPosition,
                            top: position.top + shift.top,
                            left: position.left + shift.left,
                            rowIndex: position.rowIndex,
                            columnIndex: position.columnIndex,
                            hMax: horizontalHMax,
                            vMax: verticalMax,
                            groupIndex: validGroupIndex
                        }
                    };
                    _proto.getCoordinatesByDateInGroup = function(startDate, groupIndices, inAllDayRow, groupIndex) {
                        const result = [];
                        if (this.viewDataProvider.isSkippedDate(startDate)) {
                            return result
                        }
                        let validGroupIndices = [groupIndex];
                        if (!(0, _type.isDefined)(groupIndex)) {
                            validGroupIndices = this.groupCount ? groupIndices : [0]
                        }
                        validGroupIndices.forEach(groupIndex => {
                            const coordinates = this.getCoordinatesByDate(startDate, groupIndex, inAllDayRow);
                            if (coordinates) {
                                result.push(coordinates)
                            }
                        });
                        return result
                    };
                    _proto.getCellPosition = function(cellCoordinates, isAllDayPanel) {
                        const {
                            dateTableCellsMeta: dateTableCellsMeta,
                            allDayPanelCellsMeta: allDayPanelCellsMeta
                        } = this.DOMMetaData;
                        const {
                            columnIndex: columnIndex,
                            rowIndex: rowIndex
                        } = cellCoordinates;
                        const position = isAllDayPanel ? allDayPanelCellsMeta[columnIndex] : dateTableCellsMeta[rowIndex][columnIndex];
                        const validPosition = _extends({}, position);
                        if (this.rtlEnabled) {
                            validPosition.left += position.width
                        }
                        if (validPosition) {
                            validPosition.rowIndex = cellCoordinates.rowIndex;
                            validPosition.columnIndex = cellCoordinates.columnIndex
                        }
                        return validPosition
                    };
                    _proto.getTimeShiftRatio = function(positionByMap, appointmentDate) {
                        const {
                            cellDuration: cellDuration,
                            viewOffset: viewOffset
                        } = this.options;
                        const {
                            rowIndex: rowIndex,
                            columnIndex: columnIndex
                        } = positionByMap;
                        const matchedCell = this.viewDataProvider.viewDataMap.dateTableMap[rowIndex][columnIndex];
                        const matchedCellStartDate = _date.dateUtilsTs.addOffsets(matchedCell.cellData.startDate, [-viewOffset]);
                        return (appointmentDate.getTime() - matchedCellStartDate.getTime()) / cellDuration
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(BaseStrategy, [{
                        key: "DOMMetaData",
                        get: function() {
                            return this.options.DOMMetaData
                        }
                    }, {
                        key: "appointments",
                        get: function() {
                            return this.options.dateSettings
                        }
                    }, {
                        key: "viewDataProvider",
                        get: function() {
                            return this.options.viewDataProvider
                        }
                    }, {
                        key: "positionHelper",
                        get: function() {
                            return this.options.positionHelper
                        }
                    }, {
                        key: "startViewDate",
                        get: function() {
                            return this.options.startViewDate
                        }
                    }, {
                        key: "viewStartDayHour",
                        get: function() {
                            return this.options.viewStartDayHour
                        }
                    }, {
                        key: "viewEndDayHour",
                        get: function() {
                            return this.options.viewEndDayHour
                        }
                    }, {
                        key: "cellDuration",
                        get: function() {
                            return this.options.cellDuration
                        }
                    }, {
                        key: "getPositionShift",
                        get: function() {
                            return this.options.getPositionShiftCallback
                        }
                    }, {
                        key: "groupCount",
                        get: function() {
                            return this.options.groupCount
                        }
                    }, {
                        key: "rtlEnabled",
                        get: function() {
                            return this.options.rtlEnabled
                        }
                    }, {
                        key: "isVerticalGrouping",
                        get: function() {
                            return this.options.isVerticalGroupOrientation
                        }
                    }, {
                        key: "showAllDayPanel",
                        get: function() {
                            return this.options.showAllDayPanel
                        }
                    }, {
                        key: "supportAllDayRow",
                        get: function() {
                            return this.options.supportAllDayRow
                        }
                    }, {
                        key: "isGroupedAllDayPanel",
                        get: function() {
                            return this.options.isGroupedAllDayPanel
                        }
                    }]);
                    return BaseStrategy
                }();
                let VirtualStrategy = function(_BaseStrategy) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(VirtualStrategy, _BaseStrategy);

                    function VirtualStrategy() {
                        var _this;
                        _this = _BaseStrategy.apply(this, arguments) || this;
                        _this.isVirtualScrolling = true;
                        return _this
                    }
                    var _proto2 = VirtualStrategy.prototype;
                    _proto2.calculateCellPositions = function(groupIndices, isAllDayRowAppointment, isRecurrentAppointment) {
                        const appointments = isAllDayRowAppointment ? this.appointments : this.appointments.filter(_ref => {
                            let {
                                source: source,
                                startDate: startDate,
                                endDate: endDate
                            } = _ref;
                            return this.viewDataProvider.isGroupIntersectDateInterval(source.groupIndex, startDate, endDate)
                        });
                        if (isRecurrentAppointment) {
                            return this.createRecurrentAppointmentInfos(appointments, isAllDayRowAppointment)
                        }
                        return _BaseStrategy.prototype.calculateCellPositions.call(this, groupIndices, isAllDayRowAppointment, isRecurrentAppointment)
                    };
                    _proto2.createRecurrentAppointmentInfos = function(dateSettings, isAllDayRowAppointment) {
                        const result = [];
                        dateSettings.forEach((_ref2, index) => {
                            let {
                                source: source,
                                startDate: startDate
                            } = _ref2;
                            const coordinate = this.getCoordinatesByDate(startDate, source.groupIndex, isAllDayRowAppointment);
                            if (coordinate) {
                                result.push(this._prepareObject(coordinate, index))
                            }
                        });
                        return result
                    };
                    return VirtualStrategy
                }(BaseStrategy);
                let CellPositionCalculator = function() {
                    function CellPositionCalculator(options) {
                        this.options = options
                    }
                    var _proto3 = CellPositionCalculator.prototype;
                    _proto3.calculateCellPositions = function(groupIndices, isAllDayRowAppointment, isRecurrentAppointment) {
                        const strategy = this.options.isVirtualScrolling ? new VirtualStrategy(this.options) : new BaseStrategy(this.options);
                        return strategy.calculateCellPositions(groupIndices, isAllDayRowAppointment, isRecurrentAppointment)
                    };
                    return CellPositionCalculator
                }();
                exports.CellPositionCalculator = CellPositionCalculator
            },
        97938:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/m_render.js ***!
              \*******************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.renderAppointments = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _layout = _interopRequireDefault(__webpack_require__( /*! ../../../renovation/ui/scheduler/appointment/layout.j */ 55304));
                var _m_utils = __webpack_require__( /*! ../m_utils */ 84110);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                exports.renderAppointments = options => {
                    const {
                        instance: instance,
                        $dateTable: $dateTable,
                        viewModel: viewModel
                    } = options;
                    const container = getAppointmentsContainer($dateTable);
                    _m_utils.utils.renovation.renderComponent(instance, container, _layout.default, "renovatedAppointments", viewModel)
                };
                const getAppointmentsContainer = $dateTable => {
                    let container = (0, _renderer.default)(".dx-appointments-container");
                    if (0 === container.length) {
                        container = (0, _renderer.default)("<div>").addClass("dx-appointments-container").appendTo($dateTable)
                    }
                    return container
                }
            },
        24099:
            /*!*******************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/m_settings_generator.js ***!
              \*******************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.DateGeneratorVirtualStrategy = exports.DateGeneratorBaseStrategy = exports.AppointmentSettingsGenerator = void 0;
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 91198));
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _base = __webpack_require__( /*! ../../../renovation/ui/scheduler/view_model/to_test/views/utils/base */ 45985);
                var _utils = _interopRequireDefault(__webpack_require__( /*! ../../../ui/scheduler/utils.timeZone */ 32511));
                var _date2 = __webpack_require__( /*! ../../core/utils/date */ 24321);
                var _m_appointment_adapter = __webpack_require__( /*! ../m_appointment_adapter */ 72734);
                var _m_expression_utils = __webpack_require__( /*! ../m_expression_utils */ 30906);
                var _m_recurrence = __webpack_require__( /*! ../m_recurrence */ 38227);
                var _m_utils = __webpack_require__( /*! ../resources/m_utils */ 31359);
                var _m_cell_position_calculator = __webpack_require__( /*! ./m_cell_position_calculator */ 70325);
                var _m_text_utils = __webpack_require__( /*! ./m_text_utils */ 18775);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _createClass(Constructor, protoProps, staticProps) {
                    if (protoProps) {
                        _defineProperties(Constructor.prototype, protoProps)
                    }
                    if (staticProps) {
                        _defineProperties(Constructor, staticProps)
                    }
                    Object.defineProperty(Constructor, "prototype", {
                        writable: false
                    });
                    return Constructor
                }
                const toMs = _date.default.dateToMilliseconds;
                let DateGeneratorBaseStrategy = function() {
                    function DateGeneratorBaseStrategy(options) {
                        this.options = options
                    }
                    var _proto = DateGeneratorBaseStrategy.prototype;
                    _proto.getIntervalDuration = function() {
                        return this.appointmentTakesAllDay ? this.options.allDayIntervalDuration : this.options.intervalDuration
                    };
                    _proto.generate = function(appointmentAdapter) {
                        const {
                            isRecurrent: isRecurrent
                        } = appointmentAdapter;
                        const itemGroupIndices = this._getGroupIndices(this.rawAppointment);
                        let appointmentList = this._createAppointments(appointmentAdapter, itemGroupIndices);
                        appointmentList = this._getProcessedByAppointmentTimeZone(appointmentList, appointmentAdapter);
                        if (this._canProcessNotNativeTimezoneDates(appointmentAdapter)) {
                            appointmentList = this._getProcessedNotNativeTimezoneDates(appointmentList, appointmentAdapter)
                        }
                        let dateSettings = this._createGridAppointmentList(appointmentList, appointmentAdapter);
                        const firstViewDates = this._getAppointmentsFirstViewDate(dateSettings);
                        dateSettings = this._fillNormalizedStartDate(dateSettings, firstViewDates);
                        dateSettings = this._cropAppointmentsByStartDayHour(dateSettings, firstViewDates);
                        dateSettings = this._fillNormalizedEndDate(dateSettings, this.rawAppointment);
                        if (this._needSeparateLongParts()) {
                            dateSettings = this._separateLongParts(dateSettings, appointmentAdapter)
                        }
                        dateSettings = this.shiftSourceAppointmentDates(dateSettings);
                        return {
                            dateSettings: dateSettings,
                            itemGroupIndices: itemGroupIndices,
                            isRecurrent: isRecurrent
                        }
                    };
                    _proto.shiftSourceAppointmentDates = function(dateSettings) {
                        const {
                            viewOffset: viewOffset
                        } = this.options;
                        return dateSettings.map(item => _extends(_extends({}, item), {
                            source: _extends(_extends({}, item.source), {
                                startDate: _date2.dateUtilsTs.addOffsets(item.source.startDate, [viewOffset]),
                                endDate: _date2.dateUtilsTs.addOffsets(item.source.endDate, [viewOffset])
                            })
                        }))
                    };
                    _proto._getProcessedByAppointmentTimeZone = function(appointmentList, appointment) {
                        const hasAppointmentTimeZone = !(0, _type.isEmptyObject)(appointment.startDateTimeZone) || !(0, _type.isEmptyObject)(appointment.endDateTimeZone);
                        if (hasAppointmentTimeZone) {
                            const appointmentOffsets = {
                                startDate: this.timeZoneCalculator.getOffsets(appointment.startDate, appointment.startDateTimeZone),
                                endDate: this.timeZoneCalculator.getOffsets(appointment.endDate, appointment.endDateTimeZone)
                            };
                            appointmentList.forEach(a => {
                                const sourceOffsets_startDate = this.timeZoneCalculator.getOffsets(a.startDate, appointment.startDateTimeZone),
                                    sourceOffsets_endDate = this.timeZoneCalculator.getOffsets(a.endDate, appointment.endDateTimeZone);
                                const startDateOffsetDiff = appointmentOffsets.startDate.appointment - sourceOffsets_startDate.appointment;
                                const endDateOffsetDiff = appointmentOffsets.endDate.appointment - sourceOffsets_endDate.appointment;
                                if (sourceOffsets_startDate.appointment !== sourceOffsets_startDate.common) {
                                    a.startDate = new Date(a.startDate.getTime() + startDateOffsetDiff * toMs("hour"))
                                }
                                if (sourceOffsets_endDate.appointment !== sourceOffsets_endDate.common) {
                                    a.endDate = new Date(a.endDate.getTime() + endDateOffsetDiff * toMs("hour"))
                                }
                            })
                        }
                        return appointmentList
                    };
                    _proto._createAppointments = function(appointment, groupIndices) {
                        let appointments = this._createRecurrenceAppointments(appointment, groupIndices);
                        if (!appointment.isRecurrent && 0 === appointments.length) {
                            appointments.push({
                                startDate: appointment.startDate,
                                endDate: appointment.endDate
                            })
                        }
                        appointments = appointments.map(item => {
                            var _a;
                            const resultEndTime = null === (_a = item.endDate) || void 0 === _a ? void 0 : _a.getTime();
                            if (item.startDate.getTime() === resultEndTime) {
                                item.endDate.setTime(resultEndTime + toMs("minute"))
                            }
                            return _extends(_extends({}, item), {
                                exceptionDate: new Date(item.startDate)
                            })
                        });
                        return appointments
                    };
                    _proto._canProcessNotNativeTimezoneDates = function(appointment) {
                        const isTimeZoneSet = !(0, _type.isEmptyObject)(this.timeZone);
                        if (!isTimeZoneSet) {
                            return false
                        }
                        if (!appointment.isRecurrent) {
                            return false
                        }
                        return !_utils.default.isEqualLocalTimeZone(this.timeZone, appointment.startDate)
                    };
                    _proto._getProcessedNotNativeDateIfCrossDST = function(date, offset) {
                        if (offset < 0) {
                            const newDate = new Date(date);
                            const newDateMinusOneHour = new Date(newDate);
                            newDateMinusOneHour.setHours(newDateMinusOneHour.getHours() - 1);
                            const newDateOffset = this.timeZoneCalculator.getOffsets(newDate).common;
                            const newDateMinusOneHourOffset = this.timeZoneCalculator.getOffsets(newDateMinusOneHour).common;
                            if (newDateOffset !== newDateMinusOneHourOffset) {
                                return 0
                            }
                        }
                        return offset
                    };
                    _proto._getCommonOffset = function(date) {
                        return this.timeZoneCalculator.getOffsets(date).common
                    };
                    _proto._getProcessedNotNativeTimezoneDates = function(appointmentList, appointment) {
                        return appointmentList.map(item => {
                            let diffStartDateOffset = this._getCommonOffset(appointment.startDate) - this._getCommonOffset(item.startDate);
                            let diffEndDateOffset = this._getCommonOffset(appointment.endDate) - this._getCommonOffset(item.endDate);
                            if (0 === diffStartDateOffset && 0 === diffEndDateOffset) {
                                return item
                            }
                            diffStartDateOffset = this._getProcessedNotNativeDateIfCrossDST(item.startDate, diffStartDateOffset);
                            diffEndDateOffset = this._getProcessedNotNativeDateIfCrossDST(item.endDate, diffEndDateOffset);
                            const newStartDate = new Date(item.startDate.getTime() + diffStartDateOffset * toMs("hour"));
                            let newEndDate = new Date(item.endDate.getTime() + diffEndDateOffset * toMs("hour"));
                            const testNewStartDate = this.timeZoneCalculator.createDate(newStartDate, {
                                path: "toGrid"
                            });
                            const testNewEndDate = this.timeZoneCalculator.createDate(newEndDate, {
                                path: "toGrid"
                            });
                            if (appointment.duration > testNewEndDate.getTime() - testNewStartDate.getTime()) {
                                newEndDate = new Date(newStartDate.getTime() + appointment.duration)
                            }
                            return _extends(_extends({}, item), {
                                startDate: newStartDate,
                                endDate: newEndDate,
                                exceptionDate: new Date(newStartDate)
                            })
                        })
                    };
                    _proto._needSeparateLongParts = function() {
                        return this.isVerticalOrientation ? this.isGroupedByDate : this.isGroupedByDate && this.appointmentTakesAllDay
                    };
                    _proto.normalizeEndDateByViewEnd = function(rawAppointment, endDate) {
                        let result = new Date(endDate.getTime());
                        const isAllDay = (0, _base.isDateAndTimeView)(this.viewType) && this.appointmentTakesAllDay;
                        if (!isAllDay) {
                            const roundedEndViewDate = _date.default.roundToHour(this.endViewDate);
                            if (result > roundedEndViewDate) {
                                result = roundedEndViewDate
                            }
                        }
                        const endDayHour = this.viewEndDayHour;
                        const allDay = _m_expression_utils.ExpressionUtils.getField(this.dataAccessors, "allDay", rawAppointment);
                        const currentViewEndTime = new Date(new Date(endDate.getTime()).setHours(endDayHour, 0, 0, 0));
                        if (result.getTime() > currentViewEndTime.getTime() || allDay && result.getHours() < endDayHour) {
                            result = currentViewEndTime
                        }
                        return result
                    };
                    _proto._fillNormalizedEndDate = function(dateSettings, rawAppointment) {
                        return dateSettings.map(item => _extends(_extends({}, item), {
                            normalizedEndDate: this.normalizeEndDateByViewEnd(rawAppointment, item.endDate)
                        }))
                    };
                    _proto._separateLongParts = function(gridAppointmentList, appointmentAdapter) {
                        let result = [];
                        gridAppointmentList.forEach(gridAppointment => {
                            const maxDate = new Date(this.dateRange[1]);
                            const {
                                startDate: startDate,
                                normalizedEndDate: endDateOfPart
                            } = gridAppointment;
                            const longStartDateParts = _date.default.getDatesOfInterval(startDate, endDateOfPart, {
                                milliseconds: this.getIntervalDuration()
                            });
                            const list = longStartDateParts.filter(startDatePart => new Date(startDatePart) < maxDate).map(date => {
                                const endDate = new Date(new Date(date).setMilliseconds(appointmentAdapter.duration));
                                const normalizedEndDate = this.normalizeEndDateByViewEnd(this.rawAppointment, endDate);
                                return {
                                    startDate: date,
                                    endDate: endDate,
                                    normalizedEndDate: normalizedEndDate,
                                    source: gridAppointment.source
                                }
                            });
                            result = result.concat(list)
                        });
                        return result
                    };
                    _proto._createGridAppointmentList = function(appointmentList, appointmentAdapter) {
                        return appointmentList.map(source => {
                            const offsetDifference = appointmentAdapter.startDate.getTimezoneOffset() - source.startDate.getTimezoneOffset();
                            if (0 !== offsetDifference && this._canProcessNotNativeTimezoneDates(appointmentAdapter)) {
                                source.startDate = new Date(source.startDate.getTime() + offsetDifference * toMs("minute"));
                                source.endDate = new Date(source.endDate.getTime() + offsetDifference * toMs("minute"));
                                source.exceptionDate = new Date(source.startDate)
                            }
                            const startDate = this.timeZoneCalculator.createDate(source.startDate, {
                                path: "toGrid"
                            });
                            const endDate = this.timeZoneCalculator.createDate(source.endDate, {
                                path: "toGrid"
                            });
                            return {
                                startDate: startDate,
                                endDate: endDate,
                                allDay: appointmentAdapter.allDay || false,
                                source: source
                            }
                        })
                    };
                    _proto._createExtremeRecurrenceDates = function(groupIndex) {
                        let startViewDate = this.appointmentTakesAllDay ? _date.default.trimTime(this.dateRange[0]) : this.dateRange[0];
                        let endViewDateByEndDayHour = this.dateRange[1];
                        if (this.timeZone) {
                            startViewDate = this.timeZoneCalculator.createDate(startViewDate, {
                                path: "fromGrid"
                            });
                            endViewDateByEndDayHour = this.timeZoneCalculator.createDate(endViewDateByEndDayHour, {
                                path: "fromGrid"
                            });
                            const daylightOffset = _utils.default.getDaylightOffsetInMs(startViewDate, endViewDateByEndDayHour);
                            if (daylightOffset) {
                                endViewDateByEndDayHour = new Date(endViewDateByEndDayHour.getTime() + daylightOffset)
                            }
                        }
                        return [startViewDate, endViewDateByEndDayHour]
                    };
                    _proto._createRecurrenceOptions = function(appointment, groupIndex) {
                        const {
                            viewOffset: viewOffset
                        } = this.options;
                        const originalAppointmentStartDate = _date2.dateUtilsTs.addOffsets(appointment.startDate, [viewOffset]);
                        const originalAppointmentEndDate = _date2.dateUtilsTs.addOffsets(appointment.endDate, [viewOffset]);
                        const [minRecurrenceDate, maxRecurrenceDate] = this._createExtremeRecurrenceDates(groupIndex);
                        const shiftedMinRecurrenceDate = _date2.dateUtilsTs.addOffsets(minRecurrenceDate, [viewOffset]);
                        const shiftedMaxRecurrenceDate = _date2.dateUtilsTs.addOffsets(maxRecurrenceDate, [viewOffset]);
                        return {
                            rule: appointment.recurrenceRule,
                            exception: appointment.recurrenceException,
                            min: shiftedMinRecurrenceDate,
                            max: shiftedMaxRecurrenceDate,
                            firstDayOfWeek: this.firstDayOfWeek,
                            start: originalAppointmentStartDate,
                            end: originalAppointmentEndDate,
                            appointmentTimezoneOffset: this.timeZoneCalculator.getOriginStartDateOffsetInMs(originalAppointmentStartDate, appointment.rawAppointment.startDateTimeZone, true),
                            getPostProcessedException: date => {
                                if ((0, _type.isEmptyObject)(this.timeZone) || _utils.default.isEqualLocalTimeZone(this.timeZone, date)) {
                                    return date
                                }
                                const appointmentOffset = this.timeZoneCalculator.getOffsets(originalAppointmentStartDate).common;
                                const exceptionAppointmentOffset = this.timeZoneCalculator.getOffsets(date).common;
                                let diff = appointmentOffset - exceptionAppointmentOffset;
                                diff = this._getProcessedNotNativeDateIfCrossDST(date, diff);
                                return new Date(date.getTime() - diff * _date.default.dateToMilliseconds("hour"))
                            }
                        }
                    };
                    _proto._createRecurrenceAppointments = function(appointment, groupIndices) {
                        const {
                            duration: duration
                        } = appointment;
                        const {
                            viewOffset: viewOffset
                        } = this.options;
                        const option = this._createRecurrenceOptions(appointment);
                        const generatedStartDates = (0, _m_recurrence.getRecurrenceProcessor)().generateDates(option);
                        return generatedStartDates.map(date => {
                            const utcDate = _utils.default.createUTCDateWithLocalOffset(date);
                            utcDate.setTime(utcDate.getTime() + duration);
                            const endDate = _utils.default.createDateFromUTCWithLocalOffset(utcDate);
                            return {
                                startDate: new Date(date),
                                endDate: endDate
                            }
                        }).map(_ref => {
                            let {
                                startDate: startDate,
                                endDate: endDate
                            } = _ref;
                            return {
                                startDate: _date2.dateUtilsTs.addOffsets(startDate, [-viewOffset]),
                                endDate: _date2.dateUtilsTs.addOffsets(endDate, [-viewOffset])
                            }
                        })
                    };
                    _proto._getAppointmentsFirstViewDate = function(appointments) {
                        const {
                            viewOffset: viewOffset
                        } = this.options;
                        return appointments.map(appointment => {
                            const tableFirstDate = this._getAppointmentFirstViewDate(_extends(_extends({}, appointment), {
                                startDate: _date2.dateUtilsTs.addOffsets(appointment.startDate, [viewOffset]),
                                endDate: _date2.dateUtilsTs.addOffsets(appointment.endDate, [viewOffset])
                            }));
                            if (!tableFirstDate) {
                                return appointment.startDate
                            }
                            const firstDate = _date2.dateUtilsTs.addOffsets(tableFirstDate, [-viewOffset]);
                            return firstDate > appointment.startDate ? firstDate : appointment.startDate
                        })
                    };
                    _proto._fillNormalizedStartDate = function(appointments, firstViewDates, rawAppointment) {
                        return appointments.map((item, idx) => _extends(_extends({}, item), {
                            startDate: this._getAppointmentResultDate({
                                appointment: item,
                                rawAppointment: rawAppointment,
                                startDate: new Date(item.startDate),
                                startDayHour: this.viewStartDayHour,
                                firstViewDate: firstViewDates[idx]
                            })
                        }))
                    };
                    _proto._cropAppointmentsByStartDayHour = function(appointments, firstViewDates) {
                        return appointments.filter((appointment, idx) => {
                            if (!firstViewDates[idx]) {
                                return false
                            }
                            if (this.appointmentTakesAllDay) {
                                return true
                            }
                            return appointment.endDate > appointment.startDate
                        })
                    };
                    _proto._getAppointmentResultDate = function(options) {
                        const {
                            appointment: appointment,
                            startDayHour: startDayHour,
                            firstViewDate: firstViewDate
                        } = options;
                        let {
                            startDate: startDate
                        } = options;
                        let resultDate;
                        if (this.appointmentTakesAllDay) {
                            resultDate = _date.default.normalizeDate(startDate, firstViewDate)
                        } else {
                            if (startDate < firstViewDate) {
                                startDate = firstViewDate
                            }
                            resultDate = _date.default.normalizeDate(appointment.startDate, startDate)
                        }
                        return !this.isDateAppointment ? _date.default.roundDateByStartDayHour(resultDate, startDayHour) : resultDate
                    };
                    _proto._getAppointmentFirstViewDate = function(appointment) {
                        const groupIndex = appointment.source.groupIndex || 0;
                        const {
                            startDate: startDate,
                            endDate: endDate
                        } = appointment;
                        if (this.isAllDayRowAppointment || appointment.allDay) {
                            return this.viewDataProvider.findAllDayGroupCellStartDate(groupIndex)
                        }
                        return this.viewDataProvider.findGroupCellStartDate(groupIndex, startDate, endDate, this.isDateAppointment)
                    };
                    _proto._getGroupIndices = function(rawAppointment) {
                        let result = [];
                        if (rawAppointment && this.loadedResources.length) {
                            const tree = (0, _m_utils.createResourcesTree)(this.loadedResources);
                            result = (0, _m_utils.getResourceTreeLeaves)((field, action) => (0, _m_utils.getDataAccessors)(this.options.dataAccessors.resources, field, action), tree, rawAppointment)
                        }
                        return result
                    };
                    _createClass(DateGeneratorBaseStrategy, [{
                        key: "rawAppointment",
                        get: function() {
                            return this.options.rawAppointment
                        }
                    }, {
                        key: "timeZoneCalculator",
                        get: function() {
                            return this.options.timeZoneCalculator
                        }
                    }, {
                        key: "viewDataProvider",
                        get: function() {
                            return this.options.viewDataProvider
                        }
                    }, {
                        key: "appointmentTakesAllDay",
                        get: function() {
                            return this.options.appointmentTakesAllDay
                        }
                    }, {
                        key: "supportAllDayRow",
                        get: function() {
                            return this.options.supportAllDayRow
                        }
                    }, {
                        key: "isAllDayRowAppointment",
                        get: function() {
                            return this.options.isAllDayRowAppointment
                        }
                    }, {
                        key: "timeZone",
                        get: function() {
                            return this.options.timeZone
                        }
                    }, {
                        key: "dateRange",
                        get: function() {
                            return this.options.dateRange
                        }
                    }, {
                        key: "firstDayOfWeek",
                        get: function() {
                            return this.options.firstDayOfWeek
                        }
                    }, {
                        key: "viewStartDayHour",
                        get: function() {
                            return this.options.viewStartDayHour
                        }
                    }, {
                        key: "viewEndDayHour",
                        get: function() {
                            return this.options.viewEndDayHour
                        }
                    }, {
                        key: "endViewDate",
                        get: function() {
                            return this.options.endViewDate
                        }
                    }, {
                        key: "viewType",
                        get: function() {
                            return this.options.viewType
                        }
                    }, {
                        key: "isGroupedByDate",
                        get: function() {
                            return this.options.isGroupedByDate
                        }
                    }, {
                        key: "isVerticalOrientation",
                        get: function() {
                            return this.options.isVerticalGroupOrientation
                        }
                    }, {
                        key: "dataAccessors",
                        get: function() {
                            return this.options.dataAccessors
                        }
                    }, {
                        key: "loadedResources",
                        get: function() {
                            return this.options.loadedResources
                        }
                    }, {
                        key: "isDateAppointment",
                        get: function() {
                            return !(0, _base.isDateAndTimeView)(this.viewType) && this.appointmentTakesAllDay
                        }
                    }]);
                    return DateGeneratorBaseStrategy
                }();
                exports.DateGeneratorBaseStrategy = DateGeneratorBaseStrategy;
                let DateGeneratorVirtualStrategy = function(_DateGeneratorBaseStr) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(DateGeneratorVirtualStrategy, _DateGeneratorBaseStr);

                    function DateGeneratorVirtualStrategy() {
                        return _DateGeneratorBaseStr.apply(this, arguments) || this
                    }
                    var _proto2 = DateGeneratorVirtualStrategy.prototype;
                    _proto2._createRecurrenceAppointments = function(appointment, groupIndices) {
                        const {
                            duration: duration
                        } = appointment;
                        const result = [];
                        const validGroupIndices = this.groupCount ? groupIndices : [0];
                        validGroupIndices.forEach(groupIndex => {
                            const option = this._createRecurrenceOptions(appointment, groupIndex);
                            const generatedStartDates = (0, _m_recurrence.getRecurrenceProcessor)().generateDates(option);
                            const recurrentInfo = generatedStartDates.map(date => {
                                const startDate = new Date(date);
                                const utcDate = _utils.default.createUTCDateWithLocalOffset(date);
                                utcDate.setTime(utcDate.getTime() + duration);
                                const endDate = _utils.default.createDateFromUTCWithLocalOffset(utcDate);
                                return {
                                    startDate: startDate,
                                    endDate: endDate,
                                    groupIndex: groupIndex
                                }
                            });
                            result.push(...recurrentInfo)
                        });
                        return result
                    };
                    _proto2._updateGroupIndices = function(appointments, groupIndices) {
                        const result = [];
                        groupIndices.forEach(groupIndex => {
                            const groupStartDate = this.viewDataProvider.getGroupStartDate(groupIndex);
                            if (groupStartDate) {
                                appointments.forEach(appointment => {
                                    const appointmentCopy = (0, _extend.extend)({}, appointment);
                                    appointmentCopy.groupIndex = groupIndex;
                                    result.push(appointmentCopy)
                                })
                            }
                        });
                        return result
                    };
                    _proto2._getGroupIndices = function(resources) {
                        let groupIndices = _DateGeneratorBaseStr.prototype._getGroupIndices.call(this, resources);
                        const viewDataGroupIndices = this.viewDataProvider.getGroupIndices();
                        if (!(null === groupIndices || void 0 === groupIndices ? void 0 : groupIndices.length)) {
                            groupIndices = [0]
                        }
                        return groupIndices.filter(groupIndex => -1 !== viewDataGroupIndices.indexOf(groupIndex))
                    };
                    _proto2._createAppointments = function(appointment, groupIndices) {
                        const appointments = _DateGeneratorBaseStr.prototype._createAppointments.call(this, appointment, groupIndices);
                        return !appointment.isRecurrent ? this._updateGroupIndices(appointments, groupIndices) : appointments
                    };
                    _createClass(DateGeneratorVirtualStrategy, [{
                        key: "groupCount",
                        get: function() {
                            return (0, _m_utils.getGroupCount)(this.loadedResources)
                        }
                    }]);
                    return DateGeneratorVirtualStrategy
                }(DateGeneratorBaseStrategy);
                exports.DateGeneratorVirtualStrategy = DateGeneratorVirtualStrategy;
                let AppointmentSettingsGenerator = function() {
                    function AppointmentSettingsGenerator(options) {
                        this.options = options;
                        this.appointmentAdapter = (0, _m_appointment_adapter.createAppointmentAdapter)(this.rawAppointment, this.dataAccessors, this.timeZoneCalculator)
                    }
                    var _proto3 = AppointmentSettingsGenerator.prototype;
                    _proto3.create = function() {
                        const {
                            dateSettings: dateSettings,
                            itemGroupIndices: itemGroupIndices,
                            isRecurrent: isRecurrent
                        } = this._generateDateSettings();
                        const cellPositions = this._calculateCellPositions(dateSettings, itemGroupIndices);
                        const result = this._prepareAppointmentInfos(dateSettings, cellPositions, isRecurrent);
                        return result
                    };
                    _proto3._generateDateSettings = function() {
                        return this.dateSettingsStrategy.generate(this.appointmentAdapter)
                    };
                    _proto3._calculateCellPositions = function(dateSettings, itemGroupIndices) {
                        const cellPositionCalculator = new _m_cell_position_calculator.CellPositionCalculator(_extends(_extends({}, this.options), {
                            dateSettings: dateSettings
                        }));
                        return cellPositionCalculator.calculateCellPositions(itemGroupIndices, this.isAllDayRowAppointment, this.appointmentAdapter.isRecurrent)
                    };
                    _proto3._prepareAppointmentInfos = function(dateSettings, cellPositions, isRecurrent) {
                        const infos = [];
                        cellPositions.forEach(_ref2 => {
                            let {
                                coordinates: coordinates,
                                dateSettingIndex: dateSettingIndex
                            } = _ref2;
                            const dateSetting = dateSettings[dateSettingIndex];
                            const dateText = this._getAppointmentDateText(dateSetting);
                            const info = {
                                appointment: dateSetting,
                                sourceAppointment: dateSetting.source,
                                dateText: dateText,
                                isRecurrent: isRecurrent
                            };
                            infos.push(_extends(_extends({}, coordinates), {
                                info: info
                            }))
                        });
                        return infos
                    };
                    _proto3._getAppointmentDateText = function(sourceAppointment) {
                        const {
                            startDate: startDate,
                            endDate: endDate,
                            allDay: allDay
                        } = sourceAppointment;
                        return (0, _m_text_utils.createFormattedDateText)({
                            startDate: startDate,
                            endDate: endDate,
                            allDay: allDay,
                            format: "TIME"
                        })
                    };
                    _createClass(AppointmentSettingsGenerator, [{
                        key: "rawAppointment",
                        get: function() {
                            return this.options.rawAppointment
                        }
                    }, {
                        key: "dataAccessors",
                        get: function() {
                            return this.options.dataAccessors
                        }
                    }, {
                        key: "timeZoneCalculator",
                        get: function() {
                            return this.options.timeZoneCalculator
                        }
                    }, {
                        key: "isAllDayRowAppointment",
                        get: function() {
                            return this.options.appointmentTakesAllDay && this.options.supportAllDayRow
                        }
                    }, {
                        key: "groups",
                        get: function() {
                            return this.options.groups
                        }
                    }, {
                        key: "dateSettingsStrategy",
                        get: function() {
                            const options = _extends(_extends({}, this.options), {
                                isAllDayRowAppointment: this.isAllDayRowAppointment
                            });
                            return this.options.isVirtualScrolling ? new DateGeneratorVirtualStrategy(options) : new DateGeneratorBaseStrategy(options)
                        }
                    }]);
                    return AppointmentSettingsGenerator
                }();
                exports.AppointmentSettingsGenerator = AppointmentSettingsGenerator
            },
        18775:
            /*!***********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/m_text_utils.js ***!
              \***********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.getFormatType = exports.formatDates = exports.createFormattedDateText = void 0;
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 91198));
                var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../../localization/date */ 91500));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                exports.createFormattedDateText = options => {
                    const {
                        startDate: startDate,
                        endDate: endDate,
                        allDay: allDay,
                        format: format
                    } = options;
                    const formatType = format || getFormatType(startDate, endDate, allDay);
                    return formatDates(startDate, endDate, formatType)
                };
                const getFormatType = (startDate, endDate, isAllDay, isDateAndTimeView) => {
                    if (isAllDay) {
                        return "DATE"
                    }
                    if (isDateAndTimeView && _date.default.sameDate(startDate, endDate)) {
                        return "TIME"
                    }
                    return "DATETIME"
                };
                exports.getFormatType = getFormatType;
                const formatDates = (startDate, endDate, formatType) => {
                    const isSameDate = startDate.getDate() === endDate.getDate();
                    switch (formatType) {
                        case "DATETIME":
                            return [_date2.default.format(startDate, "monthandday"), " ", _date2.default.format(startDate, "shorttime"), " - ", isSameDate ? "" : "".concat(_date2.default.format(endDate, "monthandday"), " "), _date2.default.format(endDate, "shorttime")].join("");
                        case "TIME":
                            return "".concat(_date2.default.format(startDate, "shorttime"), " - ").concat(_date2.default.format(endDate, "shorttime"));
                        case "DATE":
                            return "".concat(_date2.default.format(startDate, "monthandday")).concat(isSameDate ? "" : " - ".concat(_date2.default.format(endDate, "monthandday")))
                    }
                };
                exports.formatDates = formatDates
            },
        62386:
            /*!*********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/m_view_model_generator.js ***!
              \*********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.AppointmentViewModelGenerator = void 0;
                var _utils = __webpack_require__( /*! ../../../renovation/ui/scheduler/appointment/utils */ 84154);
                var _date = __webpack_require__( /*! ../../core/utils/date */ 24321);
                var _m_strategy_agenda = _interopRequireDefault(__webpack_require__( /*! ./rendering_strategies/m_strategy_agenda */ 87241));
                var _m_strategy_horizontal = _interopRequireDefault(__webpack_require__( /*! ./rendering_strategies/m_strategy_horizontal */ 50323));
                var _m_strategy_horizontal_month = _interopRequireDefault(__webpack_require__( /*! ./rendering_strategies/m_strategy_horizontal_month */ 92888));
                var _m_strategy_horizontal_month_line = _interopRequireDefault(__webpack_require__( /*! ./rendering_strategies/m_strategy_horizontal_month_line */ 24049));
                var _m_strategy_vertical = _interopRequireDefault(__webpack_require__( /*! ./rendering_strategies/m_strategy_vertical */ 20523));
                var _m_strategy_week = _interopRequireDefault(__webpack_require__( /*! ./rendering_strategies/m_strategy_week */ 25410));

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const RENDERING_STRATEGIES = {
                    horizontal: _m_strategy_horizontal.default,
                    horizontalMonth: _m_strategy_horizontal_month.default,
                    horizontalMonthLine: _m_strategy_horizontal_month_line.default,
                    vertical: _m_strategy_vertical.default,
                    week: _m_strategy_week.default,
                    agenda: _m_strategy_agenda.default
                };
                let AppointmentViewModelGenerator = function() {
                    function AppointmentViewModelGenerator() {}
                    var _proto = AppointmentViewModelGenerator.prototype;
                    _proto.initRenderingStrategy = function(options) {
                        const RenderingStrategy = RENDERING_STRATEGIES[options.appointmentRenderingStrategyName];
                        this.renderingStrategy = new RenderingStrategy(options)
                    };
                    _proto.generate = function(filteredItems, options) {
                        const {
                            isRenovatedAppointments: isRenovatedAppointments,
                            viewOffset: viewOffset
                        } = options;
                        const appointments = filteredItems ? filteredItems.slice() : [];
                        this.initRenderingStrategy(options);
                        const renderingStrategy = this.getRenderingStrategy();
                        const positionMap = renderingStrategy.createTaskPositionMap(appointments);
                        const shiftedViewModel = this.postProcess(appointments, positionMap, isRenovatedAppointments);
                        const viewModel = this.unshiftViewModelAppointmentsByViewOffset(shiftedViewModel, viewOffset);
                        if (isRenovatedAppointments) {
                            return this.makeRenovatedViewModels(viewModel, options.supportAllDayRow, options.isVerticalGroupOrientation)
                        }
                        return {
                            positionMap: positionMap,
                            viewModel: viewModel
                        }
                    };
                    _proto.postProcess = function(filteredItems, positionMap, isRenovatedAppointments) {
                        const renderingStrategy = this.getRenderingStrategy();
                        return filteredItems.map((data, index) => {
                            if (!renderingStrategy.keepAppointmentSettings()) {
                                delete data.settings
                            }
                            const appointmentSettings = positionMap[index];
                            appointmentSettings.forEach(item => {
                                item.direction = "vertical" === renderingStrategy.getDirection() && !item.allDay ? "vertical" : "horizontal"
                            });
                            const item = {
                                itemData: data,
                                settings: appointmentSettings
                            };
                            if (!isRenovatedAppointments) {
                                item.needRepaint = true;
                                item.needRemove = false
                            }
                            return item
                        })
                    };
                    _proto.makeRenovatedViewModels = function(viewModel, supportAllDayRow, isVerticalGrouping) {
                        const strategy = this.getRenderingStrategy();
                        const regularViewModels = [];
                        const allDayViewModels = [];
                        const compactOptions = [];
                        const isAllDayPanel = supportAllDayRow && !isVerticalGrouping;
                        viewModel.forEach(_ref => {
                            let {
                                itemData: itemData,
                                settings: settings
                            } = _ref;
                            settings.forEach(options => {
                                const item = this.prepareViewModel(options, strategy, itemData);
                                if (options.isCompact) {
                                    compactOptions.push({
                                        compactViewModel: options.virtual,
                                        appointmentViewModel: item
                                    })
                                } else if (options.allDay && isAllDayPanel) {
                                    allDayViewModels.push(item)
                                } else {
                                    regularViewModels.push(item)
                                }
                            })
                        });
                        const compactViewModels = this.prepareCompactViewModels(compactOptions, supportAllDayRow);
                        const result = _extends({
                            allDay: allDayViewModels,
                            regular: regularViewModels
                        }, compactViewModels);
                        return result
                    };
                    _proto.prepareViewModel = function(options, strategy, itemData) {
                        const geometry = strategy.getAppointmentGeometry(options);
                        const viewModel = {
                            key: (0, _utils.getAppointmentKey)(geometry),
                            appointment: itemData,
                            geometry: _extends(_extends({}, geometry), {
                                leftVirtualWidth: options.leftVirtualWidth,
                                topVirtualHeight: options.topVirtualHeight
                            }),
                            info: _extends(_extends({}, options.info), {
                                allDay: options.allDay,
                                direction: options.direction,
                                appointmentReduced: options.appointmentReduced,
                                groupIndex: options.groupIndex
                            })
                        };
                        return viewModel
                    };
                    _proto.getCompactViewModelFrame = function(compactViewModel) {
                        return {
                            isAllDay: !!compactViewModel.isAllDay,
                            isCompact: compactViewModel.isCompact,
                            groupIndex: compactViewModel.groupIndex,
                            geometry: {
                                left: compactViewModel.left,
                                top: compactViewModel.top,
                                width: compactViewModel.width,
                                height: compactViewModel.height
                            },
                            items: {
                                colors: [],
                                data: [],
                                settings: []
                            }
                        }
                    };
                    _proto.prepareCompactViewModels = function(compactOptions, supportAllDayRow) {
                        const regularCompact = {};
                        const allDayCompact = {};
                        compactOptions.forEach(_ref2 => {
                            let {
                                compactViewModel: compactViewModel,
                                appointmentViewModel: appointmentViewModel
                            } = _ref2;
                            const {
                                index: index,
                                isAllDay: isAllDay
                            } = compactViewModel;
                            const viewModel = isAllDay && supportAllDayRow ? allDayCompact : regularCompact;
                            if (!viewModel[index]) {
                                viewModel[index] = this.getCompactViewModelFrame(compactViewModel)
                            }
                            const {
                                settings: settings,
                                data: data,
                                colors: colors
                            } = viewModel[index].items;
                            settings.push(appointmentViewModel);
                            data.push(appointmentViewModel.appointment);
                            colors.push(appointmentViewModel.info.resourceColor)
                        });
                        const toArray = items => Object.keys(items).map(key => _extends({
                            key: key
                        }, items[key]));
                        const allDayViewModels = toArray(allDayCompact);
                        const regularViewModels = toArray(regularCompact);
                        return {
                            allDayCompact: allDayViewModels,
                            regularCompact: regularViewModels
                        }
                    };
                    _proto.getRenderingStrategy = function() {
                        return this.renderingStrategy
                    };
                    _proto.unshiftViewModelAppointmentsByViewOffset = function(viewModel, viewOffset) {
                        var _a, _b;
                        const processedAppointments = new Set;
                        for (const model of viewModel) {
                            for (const setting of null !== (_a = model.settings) && void 0 !== _a ? _a : []) {
                                const appointment = null === (_b = null === setting || void 0 === setting ? void 0 : setting.info) || void 0 === _b ? void 0 : _b.appointment;
                                if (appointment && !processedAppointments.has(appointment)) {
                                    appointment.startDate = _date.dateUtilsTs.addOffsets(appointment.startDate, [viewOffset]);
                                    appointment.endDate = _date.dateUtilsTs.addOffsets(appointment.endDate, [viewOffset]);
                                    appointment.normalizedEndDate = _date.dateUtilsTs.addOffsets(appointment.normalizedEndDate, [viewOffset]);
                                    processedAppointments.add(appointment)
                                }
                            }
                        }
                        return viewModel
                    };
                    return AppointmentViewModelGenerator
                }();
                exports.AppointmentViewModelGenerator = AppointmentViewModelGenerator
            },
        66040:
            /*!****************************************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/rendering_strategies/m_appointments_positioning_strategy_adaptive.js ***!
              \****************************************************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _m_appointments_positioning_strategy_base = (obj = __webpack_require__( /*! ./m_appointments_positioning_strategy_base */ 72115), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let AdaptivePositioningStrategy = function(_AppointmentPositioni) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(AdaptivePositioningStrategy, _AppointmentPositioni);

                    function AdaptivePositioningStrategy() {
                        return _AppointmentPositioni.apply(this, arguments) || this
                    }
                    var _proto = AdaptivePositioningStrategy.prototype;
                    _proto.getDropDownAppointmentWidth = function(intervalCount, isAllDay) {
                        return this.getDropDownButtonAdaptiveSize()
                    };
                    _proto.getDropDownButtonAdaptiveSize = function() {
                        return 28
                    };
                    _proto.getCollectorTopOffset = function(allDay) {
                        const renderingStrategy = this._renderingStrategy;
                        if (renderingStrategy.allDaySupported() && allDay) {
                            return (renderingStrategy.allDayHeight - renderingStrategy.getDropDownButtonAdaptiveSize()) / 2
                        }
                        return this._renderingStrategy.cellHeight - 40
                    };
                    _proto.getCollectorLeftOffset = function() {
                        const collectorWidth = this._renderingStrategy.getDropDownAppointmentWidth();
                        return (this._renderingStrategy.cellWidth - collectorWidth) / 2
                    };
                    _proto.getAppointmentDefaultOffset = function() {
                        return 35
                    };
                    _proto.getDynamicAppointmentCountPerCell = function() {
                        const renderingStrategy = this._renderingStrategy;
                        if (renderingStrategy.allDaySupported()) {
                            return {
                                allDay: 0,
                                simple: this._calculateDynamicAppointmentCountPerCell() || this._getAppointmentMinCount()
                            }
                        }
                        return 0
                    };
                    _proto.getDropDownAppointmentHeight = function() {
                        return 28
                    };
                    _proto._getAppointmentMinCount = function() {
                        return 0
                    };
                    _proto._getAppointmentDefaultWidth = function() {
                        const renderingStrategy = this._renderingStrategy;
                        if (renderingStrategy.allDaySupported()) {
                            return 30
                        }
                        return _AppointmentPositioni.prototype._getAppointmentDefaultWidth.call(this)
                    };
                    _proto._calculateDynamicAppointmentCountPerCell = function() {
                        return Math.floor(this._renderingStrategy._getAppointmentMaxWidth() / this._renderingStrategy._getAppointmentDefaultWidth())
                    };
                    return AdaptivePositioningStrategy
                }(_m_appointments_positioning_strategy_base.default);
                var _default = AdaptivePositioningStrategy;
                exports.default = _default
            },
        72115:
            /*!************************************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/rendering_strategies/m_appointments_positioning_strategy_base.js ***!
              \************************************************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                let AppointmentPositioningStrategy = function() {
                    function AppointmentPositioningStrategy(renderingStrategy) {
                        this._renderingStrategy = renderingStrategy
                    }
                    var _proto = AppointmentPositioningStrategy.prototype;
                    _proto.getDropDownAppointmentWidth = function(intervalCount, isAllDay) {
                        if (isAllDay || !(0, _type.isDefined)(isAllDay)) {
                            return 75 * this._renderingStrategy.cellWidth / 100
                        }
                        return 24
                    };
                    _proto.getCollectorTopOffset = function(allDay) {
                        return 3
                    };
                    _proto.getCollectorLeftOffset = function() {
                        return 3
                    };
                    _proto.getAppointmentDefaultOffset = function() {
                        if (this._renderingStrategy._isCompactTheme()) {
                            return 22
                        }
                        return this._renderingStrategy.appointmentOffset
                    };
                    _proto.getDynamicAppointmentCountPerCell = function() {
                        const renderingStrategy = this._renderingStrategy;
                        const {
                            cellHeight: cellHeight
                        } = renderingStrategy;
                        const allDayCount = Math.floor((cellHeight - renderingStrategy._getAppointmentDefaultOffset()) / renderingStrategy._getAppointmentDefaultHeight()) || this._getAppointmentMinCount();
                        if (renderingStrategy.allDaySupported()) {
                            return {
                                allDay: "vertical" === renderingStrategy.groupOrientation ? allDayCount : this._renderingStrategy.appointmentCountPerCell,
                                simple: this._calculateDynamicAppointmentCountPerCell() || this._getAppointmentMinCount()
                            }
                        }
                        return allDayCount
                    };
                    _proto.getDropDownAppointmentHeight = function() {
                        return
                    };
                    _proto._getAppointmentMinCount = function() {
                        return 1
                    };
                    _proto._calculateDynamicAppointmentCountPerCell = function() {
                        return Math.floor(this._renderingStrategy._getAppointmentMaxWidth() / 50)
                    };
                    _proto._getAppointmentDefaultWidth = function() {
                        return 40
                    };
                    return AppointmentPositioningStrategy
                }();
                var _default = AppointmentPositioningStrategy;
                exports.default = _default
            },
        87241:
            /*!*************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/rendering_strategies/m_strategy_agenda.js ***!
              \*************************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 91198));
                var _iterator = __webpack_require__( /*! ../../../../core/utils/iterator */ 95479);
                var _m_appointment_adapter = __webpack_require__( /*! ../../m_appointment_adapter */ 72734);
                var _m_expression_utils = __webpack_require__( /*! ../../m_expression_utils */ 30906);
                var _m_utils = __webpack_require__( /*! ../../resources/m_utils */ 31359);
                var _m_utils2 = __webpack_require__( /*! ../data_provider/m_utils */ 55523);
                var _m_strategy_base = _interopRequireDefault(__webpack_require__( /*! ./m_strategy_base */ 64173));

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

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let AgendaRenderingStrategy = function(_BaseRenderingStrateg) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(AgendaRenderingStrategy, _BaseRenderingStrateg);

                    function AgendaRenderingStrategy() {
                        return _BaseRenderingStrateg.apply(this, arguments) || this
                    }
                    var _proto = AgendaRenderingStrategy.prototype;
                    _proto.getAppointmentMinSize = function() {};
                    _proto.getDeltaTime = function() {};
                    _proto.keepAppointmentSettings = function() {
                        return true
                    };
                    _proto.getAppointmentGeometry = function(geometry) {
                        return geometry
                    };
                    _proto.groupAppointmentByResources = function(appointments) {
                        const groups = this.instance._getCurrentViewOption("groups");
                        const config = {
                            loadedResources: this.options.loadedResources,
                            resources: this.options.resources,
                            dataAccessors: this.dataAccessors.resources
                        };
                        return (0, _m_utils.groupAppointmentsByResources)(config, appointments, groups)
                    };
                    _proto.createTaskPositionMap = function(appointments) {
                        let height;
                        let appointmentsByResources;
                        this.calculateRows(appointments, this.agendaDuration, this.currentDate);
                        if (appointments.length) {
                            height = this.instance.fire("getAgendaVerticalStepHeight");
                            appointmentsByResources = this.groupAppointmentByResources(appointments);
                            let groupedAppts = [];
                            (0, _iterator.each)(appointmentsByResources, (i, appts) => {
                                let additionalAppointments = [];
                                let recurrentIndexes = [];
                                (0, _iterator.each)(appts, (index, appointment) => {
                                    const recurrenceBatch = this.instance.getAppointmentsInstance()._processRecurrenceAppointment(appointment, index);
                                    let appointmentBatch = null;
                                    if (!recurrenceBatch.indexes.length) {
                                        appointmentBatch = this.instance.getAppointmentsInstance()._processLongAppointment(appointment);
                                        additionalAppointments = additionalAppointments.concat(appointmentBatch.parts)
                                    }
                                    additionalAppointments = additionalAppointments.concat(recurrenceBatch.parts);
                                    recurrentIndexes = recurrentIndexes.concat(recurrenceBatch.indexes)
                                });
                                this.instance.getAppointmentsInstance()._reduceRecurrenceAppointments(recurrentIndexes, appts);
                                this.instance.getAppointmentsInstance()._combineAppointments(appts, additionalAppointments);
                                groupedAppts = groupedAppts.concat(appts)
                            });
                            Array.prototype.splice.apply(appointments, [0, appointments.length].concat(groupedAppts))
                        }
                        const result = [];
                        let sortedIndex = 0;
                        appointments.forEach((appt, index) => {
                            result.push([{
                                height: height,
                                width: "100%",
                                sortedIndex: sortedIndex++,
                                groupIndex: this._calculateGroupIndex(index, appointmentsByResources),
                                agendaSettings: appt.settings
                            }]);
                            delete appt.settings
                        });
                        return result
                    };
                    _proto._calculateGroupIndex = function(apptIndex, appointmentsByResources) {
                        let resultInd;
                        let counter = 0;
                        for (const i in appointmentsByResources) {
                            const countApptInGroup = appointmentsByResources[i].length;
                            if (apptIndex >= counter && apptIndex < counter + countApptInGroup) {
                                resultInd = Number(i);
                                break
                            }
                            counter += countApptInGroup
                        }
                        return resultInd
                    };
                    _proto._getDeltaWidth = function(args, initialSize) {};
                    _proto._getAppointmentMaxWidth = function() {
                        return this.cellWidth
                    };
                    _proto._needVerifyItemSize = function() {
                        return false
                    };
                    _proto._getAppointmentParts = function(geometry, settings) {};
                    _proto._reduceMultiWeekAppointment = function() {};
                    _proto.calculateAppointmentHeight = function() {
                        return 0
                    };
                    _proto.calculateAppointmentWidth = function() {
                        return 0
                    };
                    _proto.isAppointmentGreaterThan = function(etalon, comparisonParameters) {};
                    _proto.isAllDay = function() {
                        return false
                    };
                    _proto._sortCondition = function() {};
                    _proto._rowCondition = function(a, b) {};
                    _proto._columnCondition = function(a, b) {};
                    _proto._findIndexByKey = function(arr, iKey, jKey, iValue, jValue) {};
                    _proto._markAppointmentAsVirtual = function() {};
                    _proto.getDropDownAppointmentWidth = function() {};
                    _proto.getCollectorLeftOffset = function() {};
                    _proto.getCollectorTopOffset = function() {};
                    _proto.replaceWrongAppointmentEndDate = function(rawAppointment, startDate, endDate) {
                        const adapter = (0, _m_appointment_adapter.createAppointmentAdapter)(rawAppointment, this.dataAccessors, this.timeZoneCalculator);
                        (0, _m_utils2.replaceWrongEndDate)(adapter, startDate, endDate, this.cellDuration, this.dataAccessors)
                    };
                    _proto.calculateRows = function(appointments, agendaDuration, currentDate, needClearSettings) {
                        this._rows = [];
                        currentDate = _date.default.trimTime(new Date(currentDate));
                        const groupedAppointments = this.groupAppointmentByResources(appointments);
                        (0, _iterator.each)(groupedAppointments, (_, currentAppointments) => {
                            const groupResult = [];
                            const appts = {
                                indexes: [],
                                parts: []
                            };
                            if (!currentAppointments.length) {
                                this._rows.push([]);
                                return true
                            }(0, _iterator.each)(currentAppointments, (index, appointment) => {
                                const startDate = _m_expression_utils.ExpressionUtils.getField(this.dataAccessors, "startDate", appointment);
                                const endDate = _m_expression_utils.ExpressionUtils.getField(this.dataAccessors, "endDate", appointment);
                                this.replaceWrongAppointmentEndDate(appointment, startDate, endDate);
                                needClearSettings && delete appointment.settings;
                                const result = this.instance.getAppointmentsInstance()._processRecurrenceAppointment(appointment, index, false);
                                appts.parts = appts.parts.concat(result.parts);
                                appts.indexes = appts.indexes.concat(result.indexes)
                            });
                            this.instance.getAppointmentsInstance()._reduceRecurrenceAppointments(appts.indexes, currentAppointments);
                            currentAppointments.push(...appts.parts);
                            const appointmentCount = currentAppointments.length;
                            for (let i = 0; i < agendaDuration; i++) {
                                const day = new Date(currentDate);
                                day.setMilliseconds(day.getMilliseconds() + 864e5 * i);
                                if (void 0 === groupResult[i]) {
                                    groupResult[i] = 0
                                }
                                for (let j = 0; j < appointmentCount; j++) {
                                    const appointmentData = currentAppointments[j].settings || currentAppointments[j];
                                    const adapter = (0, _m_appointment_adapter.createAppointmentAdapter)(currentAppointments[j], this.dataAccessors, this.timeZoneCalculator);
                                    const appointmentIsLong = (0, _m_utils2.getAppointmentTakesSeveralDays)(adapter);
                                    const appointmentIsRecurrence = _m_expression_utils.ExpressionUtils.getField(this.dataAccessors, "recurrenceRule", currentAppointments[j]);
                                    if (this.instance.fire("dayHasAppointment", day, appointmentData, true) || !appointmentIsRecurrence && appointmentIsLong && this.instance.fire("dayHasAppointment", day, currentAppointments[j], true)) {
                                        groupResult[i] += 1
                                    }
                                }
                            }
                            this._rows.push(groupResult)
                        });
                        return this._rows
                    };
                    _proto._iterateRow = function(row, obj, index) {
                        for (let i = 0; i < row.length; i++) {
                            obj.counter += row[i];
                            if (obj.counter >= index) {
                                obj.indexInRow = i;
                                break
                            }
                        }
                    };
                    _proto.getDateByIndex = function(index, rows, startViewDate) {
                        const obj = {
                            counter: 0,
                            indexInRow: 0
                        };
                        index++;
                        for (let i = 0; i < rows.length; i++) {
                            this._iterateRow(rows[i], obj, index);
                            if (obj.indexInRow) {
                                break
                            }
                        }
                        return new Date(new Date(startViewDate).setDate(startViewDate.getDate() + obj.indexInRow))
                    };
                    _proto.getAppointmentDataCalculator = function() {
                        return ($appointment, originalStartDate) => {
                            const apptIndex = $appointment.index();
                            const startViewDate = this.instance.getStartViewDate();
                            const calculatedStartDate = this.getDateByIndex(apptIndex, this._rows, startViewDate);
                            const wrappedOriginalStartDate = new Date(originalStartDate);
                            return {
                                startDate: new Date(calculatedStartDate.setHours(wrappedOriginalStartDate.getHours(), wrappedOriginalStartDate.getMinutes(), wrappedOriginalStartDate.getSeconds(), wrappedOriginalStartDate.getMilliseconds()))
                            }
                        }
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(AgendaRenderingStrategy, [{
                        key: "instance",
                        get: function() {
                            return this.options.instance
                        }
                    }, {
                        key: "agendaDuration",
                        get: function() {
                            return this.options.agendaDuration
                        }
                    }]);
                    return AgendaRenderingStrategy
                }(_m_strategy_base.default);
                var _default = AgendaRenderingStrategy;
                exports.default = _default
            },
        64173:
            /*!***********************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/rendering_strategies/m_strategy_base.js ***!
              \***********************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 91198));
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _getAppointmentTakesAllDay = __webpack_require__( /*! ../../../../renovation/ui/scheduler/appointment/utils/getAppointmentTakesAllDay */ 96801);
                var _utils = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/scheduler/utils.timeZone */ 32511));
                var _themes = __webpack_require__( /*! ../../../../ui/themes */ 75811);
                var _date2 = __webpack_require__( /*! ../../../core/utils/date */ 24321);
                var _m_expression_utils = __webpack_require__( /*! ../../../scheduler/m_expression_utils */ 30906);
                var _m_appointment_adapter = __webpack_require__( /*! ../../m_appointment_adapter */ 72734);
                var _m_settings_generator = __webpack_require__( /*! ../m_settings_generator */ 24099);
                var _m_appointments_positioning_strategy_adaptive = _interopRequireDefault(__webpack_require__( /*! ./m_appointments_positioning_strategy_adaptive */ 66040));
                var _m_appointments_positioning_strategy_base = _interopRequireDefault(__webpack_require__( /*! ./m_appointments_positioning_strategy_base */ 72115));

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }
                const toMs = _date.default.dateToMilliseconds;
                let BaseRenderingStrategy = function() {
                    function BaseRenderingStrategy(options) {
                        this.options = options;
                        this._initPositioningStrategy()
                    }
                    var _proto = BaseRenderingStrategy.prototype;
                    _proto._correctCollectorCoordinatesInAdaptive = function(coordinates, isAllDay) {
                        coordinates.top += this.getCollectorTopOffset(isAllDay);
                        coordinates.left += this.getCollectorLeftOffset()
                    };
                    _proto._initPositioningStrategy = function() {
                        this._positioningStrategy = this.isAdaptive ? new _m_appointments_positioning_strategy_adaptive.default(this) : new _m_appointments_positioning_strategy_base.default(this)
                    };
                    _proto.getPositioningStrategy = function() {
                        return this._positioningStrategy
                    };
                    _proto.getAppointmentMinSize = function() {
                        return 2
                    };
                    _proto.keepAppointmentSettings = function() {
                        return false
                    };
                    _proto.getDeltaTime = function(args, initialSize, appointment) {};
                    _proto.getAppointmentGeometry = function(coordinates) {
                        return coordinates
                    };
                    _proto.needCorrectAppointmentDates = function() {
                        return true
                    };
                    _proto.getDirection = function() {
                        return "horizontal"
                    };
                    _proto.createTaskPositionMap = function(items, skipSorting) {
                        delete this._maxAppointmentCountPerCell;
                        const length = null === items || void 0 === items ? void 0 : items.length;
                        if (!length) {
                            return
                        }
                        const map = [];
                        for (let i = 0; i < length; i++) {
                            let coordinates = this._getItemPosition(items[i]);
                            if (coordinates.length && this.rtlEnabled) {
                                coordinates = this._correctRtlCoordinates(coordinates)
                            }
                            coordinates.forEach(item => {
                                item.leftVirtualCellCount = this.leftVirtualCellCount;
                                item.topVirtualCellCount = this.topVirtualCellCount;
                                item.leftVirtualWidth = this.leftVirtualCellCount * this.cellWidth;
                                item.topVirtualHeight = this.topVirtualCellCount * this.cellHeight
                            });
                            map.push(coordinates)
                        }
                        const positionArray = this._getSortedPositions(map);
                        const resultPositions = this._getResultPositions(positionArray);
                        return this._getExtendedPositionMap(map, resultPositions)
                    };
                    _proto._getDeltaWidth = function(args, initialSize) {
                        const intervalWidth = this.resizableStep || this.getAppointmentMinSize();
                        const initialWidth = initialSize.width;
                        return Math.round((args.width - initialWidth) / intervalWidth)
                    };
                    _proto._correctRtlCoordinates = function(coordinates) {
                        const width = coordinates[0].width || this._getAppointmentMaxWidth();
                        coordinates.forEach(coordinate => {
                            if (!coordinate.appointmentReduced) {
                                coordinate.left -= width
                            }
                        });
                        return coordinates
                    };
                    _proto._getAppointmentMaxWidth = function() {
                        return this.cellWidth
                    };
                    _proto._getItemPosition = function(initialAppointment) {
                        const appointment = this.shiftAppointmentByViewOffset(initialAppointment);
                        const position = this.generateAppointmentSettings(appointment);
                        const allDay = this.isAllDay(appointment);
                        let result = [];
                        for (let j = 0; j < position.length; j++) {
                            const height = this.calculateAppointmentHeight(appointment, position[j]);
                            const width = this.calculateAppointmentWidth(appointment, position[j]);
                            let resultWidth = width;
                            let appointmentReduced = null;
                            let multiWeekAppointmentParts = [];
                            let initialRowIndex = position[j].rowIndex;
                            let initialColumnIndex = position[j].columnIndex;
                            if (this._needVerifyItemSize() || allDay) {
                                const currentMaxAllowedPosition = position[j].hMax;
                                if (this.isAppointmentGreaterThan(currentMaxAllowedPosition, {
                                        left: position[j].left,
                                        width: width
                                    })) {
                                    appointmentReduced = "head";
                                    initialRowIndex = position[j].rowIndex;
                                    initialColumnIndex = position[j].columnIndex;
                                    resultWidth = this._reduceMultiWeekAppointment(width, {
                                        left: position[j].left,
                                        right: currentMaxAllowedPosition
                                    });
                                    multiWeekAppointmentParts = this._getAppointmentParts({
                                        sourceAppointmentWidth: width,
                                        reducedWidth: resultWidth,
                                        height: height
                                    }, position[j]);
                                    if (this.rtlEnabled) {
                                        position[j].left = currentMaxAllowedPosition
                                    }
                                }
                            }(0, _extend.extend)(position[j], {
                                height: height,
                                width: resultWidth,
                                allDay: allDay,
                                rowIndex: initialRowIndex,
                                columnIndex: initialColumnIndex,
                                appointmentReduced: appointmentReduced
                            });
                            result = this._getAppointmentPartsPosition(multiWeekAppointmentParts, position[j], result)
                        }
                        return result
                    };
                    _proto._getAppointmentPartsPosition = function(appointmentParts, position, result) {
                        if (appointmentParts.length) {
                            appointmentParts.unshift(position);
                            result = result.concat(appointmentParts)
                        } else {
                            result.push(position)
                        }
                        return result
                    };
                    _proto.getAppointmentSettingsGenerator = function(rawAppointment) {
                        return new _m_settings_generator.AppointmentSettingsGenerator(_extends({
                            rawAppointment: rawAppointment,
                            appointmentTakesAllDay: this.isAppointmentTakesAllDay(rawAppointment),
                            getPositionShiftCallback: this.getPositionShift.bind(this)
                        }, this.options))
                    };
                    _proto.generateAppointmentSettings = function(rawAppointment) {
                        return this.getAppointmentSettingsGenerator(rawAppointment).create()
                    };
                    _proto.isAppointmentTakesAllDay = function(rawAppointment) {
                        const adapter = (0, _m_appointment_adapter.createAppointmentAdapter)(rawAppointment, this.dataAccessors, this.timeZoneCalculator);
                        return (0, _getAppointmentTakesAllDay.getAppointmentTakesAllDay)(adapter, this.allDayPanelMode)
                    };
                    _proto._getAppointmentParts = function(geometry, settings) {
                        return []
                    };
                    _proto._getCompactAppointmentParts = function(appointmentWidth) {
                        const cellWidth = this.cellWidth || this.getAppointmentMinSize();
                        return Math.round(appointmentWidth / cellWidth)
                    };
                    _proto._reduceMultiWeekAppointment = function(sourceAppointmentWidth, bound) {
                        if (this.rtlEnabled) {
                            sourceAppointmentWidth = Math.floor(bound.left - bound.right)
                        } else {
                            sourceAppointmentWidth = bound.right - Math.floor(bound.left)
                        }
                        return sourceAppointmentWidth
                    };
                    _proto.calculateAppointmentHeight = function(appointment, position) {
                        return 0
                    };
                    _proto.calculateAppointmentWidth = function(appointment, position) {
                        return 0
                    };
                    _proto.isAppointmentGreaterThan = function(etalon, comparisonParameters) {
                        let result = comparisonParameters.left + comparisonParameters.width - etalon;
                        if (this.rtlEnabled) {
                            result = etalon + comparisonParameters.width - comparisonParameters.left
                        }
                        return result > this.cellWidth / 2
                    };
                    _proto.isAllDay = function(appointment) {
                        return false
                    };
                    _proto.cropAppointmentWidth = function(width, cellWidth) {
                        return this.isGroupedByDate ? cellWidth : width
                    };
                    _proto._getSortedPositions = function(positionList, skipSorting) {
                        const result = [];
                        const round = value => Math.round(100 * value) / 100;
                        const createItem = (rowIndex, columnIndex, top, left, bottom, right, position, allDay) => ({
                            i: rowIndex,
                            j: columnIndex,
                            top: round(top),
                            left: round(left),
                            bottom: round(bottom),
                            right: round(right),
                            cellPosition: position,
                            allDay: allDay
                        });
                        for (let rowIndex = 0, rowCount = positionList.length; rowIndex < rowCount; rowIndex++) {
                            for (let columnIndex = 0, cellCount = positionList[rowIndex].length; columnIndex < cellCount; columnIndex++) {
                                const {
                                    top: top,
                                    left: left,
                                    height: height,
                                    width: width,
                                    cellPosition: cellPosition,
                                    allDay: allDay
                                } = positionList[rowIndex][columnIndex];
                                result.push(createItem(rowIndex, columnIndex, top, left, top + height, left + width, cellPosition, allDay))
                            }
                        }
                        return result.sort((a, b) => this._sortCondition(a, b))
                    };
                    _proto._sortCondition = function(a, b) {};
                    _proto._getConditions = function(a, b) {
                        const isSomeEdge = this._isSomeEdge(a, b);
                        return {
                            columnCondition: isSomeEdge || this._normalizeCondition(a.left, b.left),
                            rowCondition: isSomeEdge || this._normalizeCondition(a.top, b.top),
                            cellPositionCondition: isSomeEdge || this._normalizeCondition(a.cellPosition, b.cellPosition)
                        }
                    };
                    _proto._rowCondition = function(a, b) {
                        const conditions = this._getConditions(a, b);
                        return conditions.columnCondition || conditions.rowCondition
                    };
                    _proto._columnCondition = function(a, b) {
                        const conditions = this._getConditions(a, b);
                        return conditions.rowCondition || conditions.columnCondition
                    };
                    _proto._isSomeEdge = function(a, b) {
                        return a.i === b.i && a.j === b.j
                    };
                    _proto._normalizeCondition = function(first, second) {
                        const result = first - second;
                        return Math.abs(result) > 1 ? result : 0
                    };
                    _proto._isItemsCross = function(firstItem, secondItem) {
                        const areItemsInTheSameTable = !!firstItem.allDay === !!secondItem.allDay;
                        const areItemsAllDay = firstItem.allDay && secondItem.allDay;
                        if (areItemsInTheSameTable) {
                            const orientation = this._getOrientation(areItemsAllDay);
                            return this._checkItemsCrossing(firstItem, secondItem, orientation)
                        }
                        return false
                    };
                    _proto._checkItemsCrossing = function(firstItem, secondItem, orientation) {
                        const firstItemSide1 = Math.floor(firstItem[orientation[0]]);
                        const firstItemSide2 = Math.floor(firstItem[orientation[1]]);
                        const secondItemSide1 = Math.ceil(secondItem[orientation[0]]);
                        const secondItemSide2 = Math.ceil(secondItem[orientation[1]]);
                        const isItemCross = Math.abs(firstItem[orientation[2]] - secondItem[orientation[2]]) <= 1;
                        return isItemCross && (firstItemSide1 <= secondItemSide1 && firstItemSide2 > secondItemSide1 || firstItemSide1 < secondItemSide2 && firstItemSide2 >= secondItemSide2 || firstItemSide1 === secondItemSide1 && firstItemSide2 === secondItemSide2)
                    };
                    _proto._getOrientation = function(isAllDay) {
                        return isAllDay ? ["left", "right", "top"] : ["top", "bottom", "left"]
                    };
                    _proto._getResultPositions = function(sortedArray) {
                        const result = [];
                        let i;
                        let sortedIndex = 0;
                        let currentItem;
                        let indexes;
                        let itemIndex;
                        let maxIndexInStack = 0;
                        let stack = {};
                        const findFreeIndex = (indexes, index) => {
                            const isFind = indexes.some(item => item === index);
                            if (isFind) {
                                return findFreeIndex(indexes, ++index)
                            }
                            return index
                        };
                        const createItem = (currentItem, index) => {
                            const currentIndex = index || 0;
                            return {
                                index: currentIndex,
                                i: currentItem.i,
                                j: currentItem.j,
                                left: currentItem.left,
                                right: currentItem.right,
                                top: currentItem.top,
                                bottom: currentItem.bottom,
                                allDay: currentItem.allDay,
                                sortedIndex: this._skipSortedIndex(currentIndex) ? null : sortedIndex++
                            }
                        };
                        const startNewStack = currentItem => {
                            stack.items = [createItem(currentItem)];
                            stack.left = currentItem.left;
                            stack.right = currentItem.right;
                            stack.top = currentItem.top;
                            stack.bottom = currentItem.bottom;
                            stack.allDay = currentItem.allDay
                        };
                        const pushItemsInResult = items => {
                            items.forEach(item => {
                                result.push({
                                    index: item.index,
                                    count: maxIndexInStack + 1,
                                    i: item.i,
                                    j: item.j,
                                    sortedIndex: item.sortedIndex
                                })
                            })
                        };
                        for (i = 0; i < sortedArray.length; i++) {
                            currentItem = sortedArray[i];
                            indexes = [];
                            if (!stack.items) {
                                startNewStack(currentItem)
                            } else if (this._isItemsCross(stack, currentItem)) {
                                stack.items.forEach(item => {
                                    if (this._isItemsCross(item, currentItem)) {
                                        indexes.push(item.index)
                                    }
                                });
                                itemIndex = indexes.length ? findFreeIndex(indexes, 0) : 0;
                                stack.items.push(createItem(currentItem, itemIndex));
                                maxIndexInStack = Math.max(itemIndex, maxIndexInStack);
                                stack.left = Math.min(stack.left, currentItem.left);
                                stack.right = Math.max(stack.right, currentItem.right);
                                stack.top = Math.min(stack.top, currentItem.top);
                                stack.bottom = Math.max(stack.bottom, currentItem.bottom);
                                stack.allDay = currentItem.allDay
                            } else {
                                pushItemsInResult(stack.items);
                                stack = {};
                                startNewStack(currentItem);
                                maxIndexInStack = 0
                            }
                        }
                        if (stack.items) {
                            pushItemsInResult(stack.items)
                        }
                        return result.sort((a, b) => {
                            const columnCondition = a.j - b.j;
                            const rowCondition = a.i - b.i;
                            return rowCondition || columnCondition
                        })
                    };
                    _proto._skipSortedIndex = function(index) {
                        return index > this._getMaxAppointmentCountPerCell() - 1
                    };
                    _proto._findIndexByKey = function(arr, iKey, jKey, iValue, jValue) {
                        let result = 0;
                        for (let i = 0, len = arr.length; i < len; i++) {
                            if (arr[i][iKey] === iValue && arr[i][jKey] === jValue) {
                                result = i;
                                break
                            }
                        }
                        return result
                    };
                    _proto._getExtendedPositionMap = function(map, positions) {
                        let positionCounter = 0;
                        const result = [];
                        for (let i = 0, mapLength = map.length; i < mapLength; i++) {
                            const resultString = [];
                            for (let j = 0, itemLength = map[i].length; j < itemLength; j++) {
                                map[i][j].index = positions[positionCounter].index;
                                map[i][j].sortedIndex = positions[positionCounter].sortedIndex;
                                map[i][j].count = positions[positionCounter++].count;
                                resultString.push(map[i][j]);
                                this._checkLongCompactAppointment(map[i][j], resultString)
                            }
                            result.push(resultString)
                        }
                        return result
                    };
                    _proto._checkLongCompactAppointment = function(item, result) {
                        this._splitLongCompactAppointment(item, result);
                        return result
                    };
                    _proto._splitLongCompactAppointment = function(item, result) {
                        const appointmentCountPerCell = this._getMaxAppointmentCountPerCellByType(item.allDay);
                        let compactCount = 0;
                        if (void 0 !== appointmentCountPerCell && item.index > appointmentCountPerCell - 1) {
                            item.isCompact = true;
                            compactCount = this._getCompactAppointmentParts(item.width);
                            for (let k = 1; k < compactCount; k++) {
                                const compactPart = (0, _extend.extend)(true, {}, item);
                                compactPart.left = this._getCompactLeftCoordinate(item.left, k);
                                compactPart.columnIndex += k;
                                compactPart.sortedIndex = null;
                                result.push(compactPart)
                            }
                        }
                        return result
                    };
                    _proto._adjustDurationByDaylightDiff = function(duration, startDate, endDate) {
                        const daylightDiff = _utils.default.getDaylightOffset(startDate, endDate);
                        return this._needAdjustDuration(daylightDiff) ? this._calculateDurationByDaylightDiff(duration, daylightDiff) : duration
                    };
                    _proto._needAdjustDuration = function(diff) {
                        return 0 !== diff
                    };
                    _proto._calculateDurationByDaylightDiff = function(duration, diff) {
                        return duration + diff * toMs("minute")
                    };
                    _proto._getCollectorLeftOffset = function(isAllDay) {
                        if (isAllDay || !this.isApplyCompactAppointmentOffset()) {
                            return 0
                        }
                        const dropDownButtonWidth = this.getDropDownAppointmentWidth(this.intervalCount, isAllDay);
                        const rightOffset = this._isCompactTheme() ? 1 : 5;
                        return this.cellWidth - dropDownButtonWidth - rightOffset
                    };
                    _proto._markAppointmentAsVirtual = function(coordinates) {
                        let isAllDay = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false;
                        const countFullWidthAppointmentInCell = this._getMaxAppointmentCountPerCellByType(isAllDay);
                        if (coordinates.count - countFullWidthAppointmentInCell > 0) {
                            const {
                                top: top,
                                left: left
                            } = coordinates;
                            const compactRender = this.isAdaptive || !isAllDay && this.supportCompactDropDownAppointments();
                            coordinates.virtual = {
                                left: left + this._getCollectorLeftOffset(isAllDay),
                                top: top,
                                width: this.getDropDownAppointmentWidth(this.intervalCount, isAllDay),
                                height: this.getDropDownAppointmentHeight(),
                                index: this._generateAppointmentCollectorIndex(coordinates, isAllDay),
                                isAllDay: isAllDay,
                                groupIndex: coordinates.groupIndex,
                                isCompact: compactRender
                            }
                        }
                    };
                    _proto.isApplyCompactAppointmentOffset = function() {
                        return this.supportCompactDropDownAppointments()
                    };
                    _proto.supportCompactDropDownAppointments = function() {
                        return true
                    };
                    _proto._generateAppointmentCollectorIndex = function(_ref, isAllDay) {
                        let {
                            groupIndex: groupIndex,
                            rowIndex: rowIndex,
                            columnIndex: columnIndex
                        } = _ref;
                        return "".concat(groupIndex, "-").concat(rowIndex, "-").concat(columnIndex, "-").concat(isAllDay)
                    };
                    _proto._getMaxAppointmentCountPerCellByType = function(isAllDay) {
                        const appointmentCountPerCell = this._getMaxAppointmentCountPerCell();
                        if ((0, _type.isObject)(appointmentCountPerCell)) {
                            return isAllDay ? appointmentCountPerCell.allDay : appointmentCountPerCell.simple
                        }
                        return appointmentCountPerCell
                    };
                    _proto.getDropDownAppointmentWidth = function(intervalCount, isAllDay) {
                        return this.getPositioningStrategy().getDropDownAppointmentWidth(intervalCount, isAllDay)
                    };
                    _proto.getDropDownAppointmentHeight = function() {
                        return this.getPositioningStrategy().getDropDownAppointmentHeight()
                    };
                    _proto.getDropDownButtonAdaptiveSize = function() {
                        return 28
                    };
                    _proto.getCollectorTopOffset = function(allDay) {
                        return this.getPositioningStrategy().getCollectorTopOffset(allDay)
                    };
                    _proto.getCollectorLeftOffset = function() {
                        return this.getPositioningStrategy().getCollectorLeftOffset()
                    };
                    _proto.getAppointmentDataCalculator = function() {};
                    _proto.getVerticalAppointmentHeight = function(cellHeight, currentAppointmentCountInCell, maxAppointmentsPerCell) {
                        let resultMaxAppointmentsPerCell = maxAppointmentsPerCell;
                        if ((0, _type.isNumeric)(this.maxAppointmentsPerCell)) {
                            const dynamicAppointmentCountPerCell = this._getDynamicAppointmentCountPerCell();
                            const maxAppointmentCountDisplayedInCell = dynamicAppointmentCountPerCell.allDay || dynamicAppointmentCountPerCell;
                            const maxAppointmentsCount = Math.max(currentAppointmentCountInCell, maxAppointmentCountDisplayedInCell);
                            resultMaxAppointmentsPerCell = Math.min(maxAppointmentsCount, maxAppointmentsPerCell)
                        }
                        return cellHeight / resultMaxAppointmentsPerCell
                    };
                    _proto._customizeCoordinates = function(coordinates, cellHeight, appointmentCountPerCell, topOffset, isAllDay) {
                        const {
                            index: index,
                            count: count
                        } = coordinates;
                        const appointmentHeight = this.getVerticalAppointmentHeight(cellHeight, count, appointmentCountPerCell);
                        const appointmentTop = coordinates.top + index * appointmentHeight;
                        const top = appointmentTop + topOffset;
                        const {
                            width: width
                        } = coordinates;
                        const {
                            left: left
                        } = coordinates;
                        if (coordinates.isCompact) {
                            this.isAdaptive && this._correctCollectorCoordinatesInAdaptive(coordinates, isAllDay);
                            this._markAppointmentAsVirtual(coordinates, isAllDay)
                        }
                        return {
                            height: appointmentHeight,
                            width: width,
                            top: top,
                            left: left,
                            empty: this._isAppointmentEmpty(cellHeight, width)
                        }
                    };
                    _proto._isAppointmentEmpty = function(height, width) {
                        return height < this._getAppointmentMinHeight() || width < this._getAppointmentMinWidth()
                    };
                    _proto._calculateGeometryConfig = function(coordinates) {
                        const overlappingMode = this.maxAppointmentsPerCell;
                        const offsets = this._getOffsets();
                        const appointmentDefaultOffset = this._getAppointmentDefaultOffset();
                        let appointmentCountPerCell = this._getAppointmentCount(overlappingMode, coordinates);
                        let ratio = this._getDefaultRatio(coordinates, appointmentCountPerCell);
                        let maxHeight = this._getMaxHeight();
                        if (!(0, _type.isNumeric)(appointmentCountPerCell)) {
                            appointmentCountPerCell = coordinates.count;
                            ratio = (maxHeight - offsets.unlimited) / maxHeight
                        }
                        let topOffset = (1 - ratio) * maxHeight;
                        if ("auto" === overlappingMode || (0, _type.isNumeric)(overlappingMode)) {
                            ratio = 1;
                            maxHeight -= appointmentDefaultOffset;
                            topOffset = appointmentDefaultOffset
                        }
                        return {
                            height: ratio * maxHeight,
                            appointmentCountPerCell: appointmentCountPerCell,
                            offset: topOffset
                        }
                    };
                    _proto._getAppointmentCount = function(overlappingMode, coordinates) {};
                    _proto._getDefaultRatio = function(coordinates, appointmentCountPerCell) {};
                    _proto._getOffsets = function() {};
                    _proto._getMaxHeight = function() {};
                    _proto._needVerifyItemSize = function() {
                        return false
                    };
                    _proto._getMaxAppointmentCountPerCell = function() {
                        if (!this._maxAppointmentCountPerCell) {
                            const overlappingMode = this.maxAppointmentsPerCell;
                            let appointmentCountPerCell;
                            if ((0, _type.isNumeric)(overlappingMode)) {
                                appointmentCountPerCell = overlappingMode
                            }
                            if ("auto" === overlappingMode) {
                                appointmentCountPerCell = this._getDynamicAppointmentCountPerCell()
                            }
                            if ("unlimited" === overlappingMode) {
                                appointmentCountPerCell = void 0
                            }
                            this._maxAppointmentCountPerCell = appointmentCountPerCell
                        }
                        return this._maxAppointmentCountPerCell
                    };
                    _proto._getDynamicAppointmentCountPerCell = function() {
                        return this.getPositioningStrategy().getDynamicAppointmentCountPerCell()
                    };
                    _proto.allDaySupported = function() {
                        return false
                    };
                    _proto._isCompactTheme = function() {
                        return "compact" === ((0, _themes.current)() || "").split(".").pop()
                    };
                    _proto._getAppointmentDefaultOffset = function() {
                        return this.getPositioningStrategy().getAppointmentDefaultOffset()
                    };
                    _proto._getAppointmentDefaultHeight = function() {
                        return this._getAppointmentHeightByTheme()
                    };
                    _proto._getAppointmentMinHeight = function() {
                        return this._getAppointmentDefaultHeight()
                    };
                    _proto._getAppointmentHeightByTheme = function() {
                        return this._isCompactTheme() ? 18 : 20
                    };
                    _proto._getAppointmentDefaultWidth = function() {
                        return this.getPositioningStrategy()._getAppointmentDefaultWidth()
                    };
                    _proto._getAppointmentMinWidth = function() {
                        return this._getAppointmentDefaultWidth()
                    };
                    _proto._needVerticalGroupBounds = function(allDay) {
                        return false
                    };
                    _proto._needHorizontalGroupBounds = function() {
                        return false
                    };
                    _proto.getAppointmentDurationInMs = function(apptStartDate, apptEndDate, allDay) {
                        if (allDay) {
                            const appointmentDuration = apptEndDate.getTime() - apptStartDate.getTime();
                            const ceilQuantityOfDays = Math.ceil(appointmentDuration / toMs("day"));
                            return ceilQuantityOfDays * this.visibleDayDuration
                        }
                        const msInHour = toMs("hour");
                        const trimmedStartDate = _date.default.trimTime(apptStartDate);
                        const trimmedEndDate = _date.default.trimTime(apptEndDate);
                        const deltaDate = trimmedEndDate - trimmedStartDate;
                        const quantityOfDays = deltaDate / toMs("day") + 1;
                        const dayVisibleHours = this.endDayHour - this.startDayHour;
                        const appointmentDayHours = dayVisibleHours * quantityOfDays;
                        const startHours = (apptStartDate - trimmedStartDate) / msInHour;
                        const apptStartDelta = Math.max(0, startHours - this.startDayHour);
                        const endHours = Math.max(0, (apptEndDate - trimmedEndDate) / msInHour - this.startDayHour);
                        const apptEndDelta = Math.max(0, dayVisibleHours - endHours);
                        const result = (appointmentDayHours - (apptStartDelta + apptEndDelta)) * msInHour;
                        return result
                    };
                    _proto.getPositionShift = function(timeShift, isAllDay) {
                        return {
                            top: timeShift * this.cellHeight,
                            left: 0,
                            cellPosition: 0
                        }
                    };
                    _proto.shiftAppointmentByViewOffset = function(appointment) {
                        const {
                            viewOffset: viewOffset
                        } = this.options;
                        const startDateField = this.dataAccessors.expr.startDateExpr;
                        const endDateField = this.dataAccessors.expr.endDateExpr;
                        let startDate = new Date(_m_expression_utils.ExpressionUtils.getField(this.dataAccessors, "startDate", appointment));
                        startDate = _date2.dateUtilsTs.addOffsets(startDate, [-viewOffset]);
                        let endDate = new Date(_m_expression_utils.ExpressionUtils.getField(this.dataAccessors, "endDate", appointment));
                        endDate = _date2.dateUtilsTs.addOffsets(endDate, [-viewOffset]);
                        return _extends(_extends({}, appointment), {
                            [startDateField]: startDate,
                            [endDateField]: endDate
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(BaseRenderingStrategy, [{
                        key: "isAdaptive",
                        get: function() {
                            return this.options.adaptivityEnabled
                        }
                    }, {
                        key: "rtlEnabled",
                        get: function() {
                            return this.options.rtlEnabled
                        }
                    }, {
                        key: "startDayHour",
                        get: function() {
                            return this.options.startDayHour
                        }
                    }, {
                        key: "endDayHour",
                        get: function() {
                            return this.options.endDayHour
                        }
                    }, {
                        key: "maxAppointmentsPerCell",
                        get: function() {
                            return this.options.maxAppointmentsPerCell
                        }
                    }, {
                        key: "cellWidth",
                        get: function() {
                            return this.options.cellWidth
                        }
                    }, {
                        key: "cellHeight",
                        get: function() {
                            return this.options.cellHeight
                        }
                    }, {
                        key: "allDayHeight",
                        get: function() {
                            return this.options.allDayHeight
                        }
                    }, {
                        key: "resizableStep",
                        get: function() {
                            return this.options.resizableStep
                        }
                    }, {
                        key: "isGroupedByDate",
                        get: function() {
                            return this.options.isGroupedByDate
                        }
                    }, {
                        key: "visibleDayDuration",
                        get: function() {
                            return this.options.visibleDayDuration
                        }
                    }, {
                        key: "viewStartDayHour",
                        get: function() {
                            return this.options.viewStartDayHour
                        }
                    }, {
                        key: "viewEndDayHour",
                        get: function() {
                            return this.options.viewEndDayHour
                        }
                    }, {
                        key: "cellDuration",
                        get: function() {
                            return this.options.cellDuration
                        }
                    }, {
                        key: "cellDurationInMinutes",
                        get: function() {
                            return this.options.cellDurationInMinutes
                        }
                    }, {
                        key: "leftVirtualCellCount",
                        get: function() {
                            return this.options.leftVirtualCellCount
                        }
                    }, {
                        key: "topVirtualCellCount",
                        get: function() {
                            return this.options.topVirtualCellCount
                        }
                    }, {
                        key: "positionHelper",
                        get: function() {
                            return this.options.positionHelper
                        }
                    }, {
                        key: "showAllDayPanel",
                        get: function() {
                            return this.options.showAllDayPanel
                        }
                    }, {
                        key: "isGroupedAllDayPanel",
                        get: function() {
                            return this.options.isGroupedAllDayPanel
                        }
                    }, {
                        key: "groupOrientation",
                        get: function() {
                            return this.options.groupOrientation
                        }
                    }, {
                        key: "rowCount",
                        get: function() {
                            return this.options.rowCount
                        }
                    }, {
                        key: "groupCount",
                        get: function() {
                            return this.options.groupCount
                        }
                    }, {
                        key: "currentDate",
                        get: function() {
                            return this.options.currentDate
                        }
                    }, {
                        key: "appointmentCountPerCell",
                        get: function() {
                            return this.options.appointmentCountPerCell
                        }
                    }, {
                        key: "appointmentOffset",
                        get: function() {
                            return this.options.appointmentOffset
                        }
                    }, {
                        key: "allowResizing",
                        get: function() {
                            return this.options.allowResizing
                        }
                    }, {
                        key: "allowAllDayResizing",
                        get: function() {
                            return this.options.allowAllDayResizing
                        }
                    }, {
                        key: "viewDataProvider",
                        get: function() {
                            return this.options.viewDataProvider
                        }
                    }, {
                        key: "dataAccessors",
                        get: function() {
                            return this.options.dataAccessors
                        }
                    }, {
                        key: "timeZoneCalculator",
                        get: function() {
                            return this.options.timeZoneCalculator
                        }
                    }, {
                        key: "intervalCount",
                        get: function() {
                            return this.options.intervalCount
                        }
                    }, {
                        key: "allDayPanelMode",
                        get: function() {
                            return this.options.allDayPanelMode
                        }
                    }, {
                        key: "isVirtualScrolling",
                        get: function() {
                            return this.options.isVirtualScrolling
                        }
                    }]);
                    return BaseRenderingStrategy
                }();
                var _default = BaseRenderingStrategy;
                exports.default = _default
            },
        50323:
            /*!*****************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/rendering_strategies/m_strategy_horizontal.js ***!
              \*****************************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 91198));
                var _getSkippedHoursInRange = _interopRequireDefault(__webpack_require__( /*! ../../../../renovation/ui/scheduler/view_model/appointments/utils/getSkippedHoursInRange */ 37009));
                var _m_expression_utils = __webpack_require__( /*! ../../m_expression_utils */ 30906);
                var _m_strategy_base = _interopRequireDefault(__webpack_require__( /*! ./m_strategy_base */ 64173));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const toMs = _date.default.dateToMilliseconds;
                let HorizontalRenderingStrategy = function(_BaseAppointmentsStra) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(HorizontalRenderingStrategy, _BaseAppointmentsStra);

                    function HorizontalRenderingStrategy() {
                        return _BaseAppointmentsStra.apply(this, arguments) || this
                    }
                    var _proto = HorizontalRenderingStrategy.prototype;
                    _proto._needVerifyItemSize = function() {
                        return true
                    };
                    _proto.calculateAppointmentWidth = function(appointment, position) {
                        const cellWidth = this.cellWidth || this.getAppointmentMinSize();
                        const allDay = _m_expression_utils.ExpressionUtils.getField(this.dataAccessors, "allDay", appointment);
                        const {
                            startDate: startDate,
                            endDate: endDate,
                            normalizedEndDate: normalizedEndDate
                        } = position.info.appointment;
                        let duration = this.getAppointmentDurationInMs(startDate, normalizedEndDate, allDay);
                        duration = this._adjustDurationByDaylightDiff(duration, startDate, normalizedEndDate);
                        const cellDuration = this.cellDurationInMinutes * toMs("minute");
                        const skippedHours = (0, _getSkippedHoursInRange.default)(startDate, endDate, this.viewDataProvider);
                        const durationInCells = (duration - skippedHours * toMs("hour")) / cellDuration;
                        const width = this.cropAppointmentWidth(durationInCells * cellWidth, cellWidth);
                        return width
                    };
                    _proto._needAdjustDuration = function(diff) {
                        return diff < 0
                    };
                    _proto.getAppointmentGeometry = function(coordinates) {
                        const result = this._customizeAppointmentGeometry(coordinates);
                        return _BaseAppointmentsStra.prototype.getAppointmentGeometry.call(this, result)
                    };
                    _proto._customizeAppointmentGeometry = function(coordinates) {
                        const config = this._calculateGeometryConfig(coordinates);
                        return this._customizeCoordinates(coordinates, config.height, config.appointmentCountPerCell, config.offset)
                    };
                    _proto._getOffsets = function() {
                        return {
                            unlimited: 0,
                            auto: 0
                        }
                    };
                    _proto._getCompactLeftCoordinate = function(itemLeft, index) {
                        const cellWidth = this.cellWidth || this.getAppointmentMinSize();
                        return itemLeft + cellWidth * index
                    };
                    _proto._getMaxHeight = function() {
                        return this.cellHeight || this.getAppointmentMinSize()
                    };
                    _proto._getAppointmentCount = function(overlappingMode, coordinates) {
                        return this._getMaxAppointmentCountPerCellByType(false)
                    };
                    _proto._getAppointmentDefaultHeight = function() {
                        return 60
                    };
                    _proto._getAppointmentMinHeight = function() {
                        return 35
                    };
                    _proto._sortCondition = function(a, b) {
                        return this._columnCondition(a, b)
                    };
                    _proto._getOrientation = function() {
                        return ["left", "right", "top"]
                    };
                    _proto.getDropDownAppointmentWidth = function(intervalCount, isAllDay) {
                        return this.cellWidth - 4
                    };
                    _proto.getDeltaTime = function(args, initialSize) {
                        let deltaTime = 0;
                        const deltaWidth = args.width - initialSize.width;
                        deltaTime = toMs("minute") * Math.round(deltaWidth / this.cellWidth * this.cellDurationInMinutes);
                        return deltaTime
                    };
                    _proto.isAllDay = function(appointmentData) {
                        return _m_expression_utils.ExpressionUtils.getField(this.dataAccessors, "allDay", appointmentData)
                    };
                    _proto._isItemsCross = function(firstItem, secondItem) {
                        const orientation = this._getOrientation();
                        return this._checkItemsCrossing(firstItem, secondItem, orientation)
                    };
                    _proto.getPositionShift = function(timeShift) {
                        const positionShift = _BaseAppointmentsStra.prototype.getPositionShift.call(this, timeShift);
                        let left = this.cellWidth * timeShift;
                        if (this.rtlEnabled) {
                            left *= -1
                        }
                        left += positionShift.left;
                        return {
                            top: 0,
                            left: left,
                            cellPosition: left
                        }
                    };
                    _proto.supportCompactDropDownAppointments = function() {
                        return false
                    };
                    return HorizontalRenderingStrategy
                }(_m_strategy_base.default);
                var _default = HorizontalRenderingStrategy;
                exports.default = _default
            },
        92888:
            /*!***********************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/rendering_strategies/m_strategy_horizontal_month.js ***!
              \***********************************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 91198));
                var _m_position_helper = __webpack_require__( /*! ../../workspaces/helpers/m_position_helper */ 94654);
                var _m_strategy_horizontal_month_line = _interopRequireDefault(__webpack_require__( /*! ./m_strategy_horizontal_month_line */ 24049));

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const toMs = _date.default.dateToMilliseconds;
                let HorizontalMonthRenderingStrategy = function(_HorizontalMonthLineR) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(HorizontalMonthRenderingStrategy, _HorizontalMonthLineR);

                    function HorizontalMonthRenderingStrategy() {
                        return _HorizontalMonthLineR.apply(this, arguments) || this
                    }
                    var _proto = HorizontalMonthRenderingStrategy.prototype;
                    _proto._getLeftPosition = function(settings) {
                        const fullWeekAppointmentWidth = this.getGroupWidth(settings.groupIndex);
                        return this._calculateMultiWeekAppointmentLeftOffset(settings.hMax, fullWeekAppointmentWidth)
                    };
                    _proto._getChunkCount = function(fullChunksWidth, firstChunkWidth, weekWidth, settings) {
                        const {
                            groupIndex: groupIndex,
                            info: {
                                appointment: {
                                    startDate: startDate
                                }
                            }
                        } = settings;
                        const rawFullChunksWidth = fullChunksWidth - firstChunkWidth + weekWidth;
                        const allChunksCount = Math.ceil(rawFullChunksWidth / weekWidth);
                        const viewRowIndex = this._tryGetRowIndexInView(startDate);
                        if (void 0 !== viewRowIndex) {
                            const viewChunksCount = this.viewDataProvider.getRowCountInGroup(groupIndex);
                            const allowedChunksCount = viewChunksCount - viewRowIndex;
                            return allChunksCount <= allowedChunksCount ? allChunksCount : allowedChunksCount
                        }
                        return allChunksCount
                    };
                    _proto._tryGetRowIndexInView = function(positionStartDate) {
                        var _a;
                        const columnsCount = this.viewDataProvider.getColumnsCount();
                        if ((null === (_a = this.options.dataRange) || void 0 === _a ? void 0 : _a.length) < 1 || !columnsCount) {
                            return
                        }
                        const [startViewDate] = this.options.dateRange;
                        const dayDurationMs = toMs("day");
                        const timeFromStart = positionStartDate.getTime() - startViewDate.getTime();
                        return Math.floor(timeFromStart / dayDurationMs / columnsCount)
                    };
                    _proto._getChunkWidths = function(geometry, settings, weekWidth) {
                        const firstChunkWidth = geometry.reducedWidth;
                        const fullChunksWidth = Math.floor(geometry.sourceAppointmentWidth);
                        const widthWithoutFirstChunk = fullChunksWidth - firstChunkWidth;
                        return [firstChunkWidth, fullChunksWidth, widthWithoutFirstChunk]
                    };
                    _proto._getTailChunkSettings = function(withoutFirstChunkWidth, weekWidth, leftPosition) {
                        const tailChunkWidth = withoutFirstChunkWidth % weekWidth || weekWidth;
                        const rtlPosition = leftPosition + (weekWidth - tailChunkWidth);
                        const tailChunkLeftPosition = this.rtlEnabled ? rtlPosition : leftPosition;
                        return [tailChunkWidth, tailChunkLeftPosition]
                    };
                    _proto._getAppointmentParts = function(geometry, settings) {
                        const result = [];
                        const weekWidth = Math.round(this.getGroupWidth(settings.groupIndex));
                        const [firstChunkWidth, fullChunksWidth, withoutFirstChunkWidth] = this._getChunkWidths(geometry, settings, weekWidth);
                        const leftPosition = this._getLeftPosition(settings);
                        const {
                            endDate: endDate
                        } = settings.info.appointment;
                        const hasTailChunk = this.endViewDate > endDate;
                        const chunkCount = this._getChunkCount(fullChunksWidth, firstChunkWidth, weekWidth, settings);
                        const [tailChunkWidth, tailChunkLeftPosition] = this._getTailChunkSettings(withoutFirstChunkWidth, weekWidth, leftPosition);
                        for (let chunkIndex = 1; chunkIndex < chunkCount; chunkIndex++) {
                            const topPosition = settings.top + this.cellHeight * chunkIndex;
                            const isTailChunk = hasTailChunk && chunkIndex === chunkCount - 1;
                            result.push(_extends(_extends({}, settings), {
                                top: topPosition,
                                left: isTailChunk ? tailChunkLeftPosition : leftPosition,
                                height: geometry.height,
                                width: isTailChunk ? tailChunkWidth : weekWidth,
                                appointmentReduced: isTailChunk ? "tail" : "body",
                                rowIndex: ++settings.rowIndex,
                                columnIndex: 0
                            }))
                        }
                        return result
                    };
                    _proto._calculateMultiWeekAppointmentLeftOffset = function(max, width) {
                        return this.rtlEnabled ? max : max - width
                    };
                    _proto.getGroupWidth = function(groupIndex) {
                        return (0, _m_position_helper.getGroupWidth)(groupIndex, this.viewDataProvider, {
                            intervalCount: this.options.intervalCount,
                            currentDate: this.options.currentDate,
                            viewType: this.options.viewType,
                            hoursInterval: this.options.hoursInterval,
                            startDayHour: this.options.startDayHour,
                            endDayHour: this.options.endDayHour,
                            isVirtualScrolling: this.isVirtualScrolling,
                            rtlEnabled: this.rtlEnabled,
                            DOMMetaData: this.DOMMetaData
                        })
                    };
                    _proto._getAppointmentDefaultHeight = function() {
                        return this._getAppointmentHeightByTheme()
                    };
                    _proto._getAppointmentMinHeight = function() {
                        return this._getAppointmentDefaultHeight()
                    };
                    _proto._columnCondition = function(a, b) {
                        const conditions = this._getConditions(a, b);
                        return conditions.rowCondition || conditions.columnCondition || conditions.cellPositionCondition
                    };
                    _proto.createTaskPositionMap = function(items) {
                        return _HorizontalMonthLineR.prototype.createTaskPositionMap.call(this, items, true)
                    };
                    _proto._getSortedPositions = function(map) {
                        return _HorizontalMonthLineR.prototype._getSortedPositions.call(this, map, true)
                    };
                    _proto._getDefaultRatio = function() {
                        return .6
                    };
                    _proto._getOffsets = function() {
                        return {
                            unlimited: 26,
                            auto: 30
                        }
                    };
                    _proto.getDropDownAppointmentWidth = function(intervalCount, isAllDay) {
                        if (this.adaptivityEnabled) {
                            return this.getDropDownButtonAdaptiveSize()
                        }
                        const offset = intervalCount > 1 ? 60 : 36;
                        return this.cellWidth - offset
                    };
                    _proto.needCorrectAppointmentDates = function() {
                        return false
                    };
                    _proto._needVerticalGroupBounds = function() {
                        return false
                    };
                    _proto._needHorizontalGroupBounds = function() {
                        return true
                    };
                    _proto.getPositionShift = function(timeShift) {
                        return {
                            cellPosition: timeShift * this.cellWidth,
                            top: 0,
                            left: 0
                        }
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(HorizontalMonthRenderingStrategy, [{
                        key: "endViewDate",
                        get: function() {
                            return this.options.endViewDate
                        }
                    }, {
                        key: "adaptivityEnabled",
                        get: function() {
                            return this.options.adaptivityEnabled
                        }
                    }, {
                        key: "DOMMetaData",
                        get: function() {
                            return this.options.DOMMetaData
                        }
                    }]);
                    return HorizontalMonthRenderingStrategy
                }(_m_strategy_horizontal_month_line.default);
                var _default = HorizontalMonthRenderingStrategy;
                exports.default = _default
            },
        24049:
            /*!****************************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/rendering_strategies/m_strategy_horizontal_month_line.js ***!
              \****************************************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 91198));
                var _query = _interopRequireDefault(__webpack_require__( /*! ../../../../data/query */ 96687));
                var _m_utils = __webpack_require__( /*! ../data_provider/m_utils */ 55523);
                var _m_strategy_horizontal = _interopRequireDefault(__webpack_require__( /*! ./m_strategy_horizontal */ 50323));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let HorizontalMonthLineRenderingStrategy = function(_HorizontalAppointmen) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(HorizontalMonthLineRenderingStrategy, _HorizontalAppointmen);

                    function HorizontalMonthLineRenderingStrategy() {
                        return _HorizontalAppointmen.apply(this, arguments) || this
                    }
                    var _proto = HorizontalMonthLineRenderingStrategy.prototype;
                    _proto.calculateAppointmentWidth = function(_, position) {
                        const {
                            startDate: startDateWithTime,
                            normalizedEndDate: normalizedEndDate
                        } = position.info.appointment;
                        const startDate = _date.default.trimTime(startDateWithTime);
                        const cellWidth = this.cellWidth || this.getAppointmentMinSize();
                        const duration = Math.ceil(this._getDurationInDays(startDate, normalizedEndDate));
                        let width = this.cropAppointmentWidth(duration * cellWidth, cellWidth);
                        if (this.isVirtualScrolling) {
                            const skippedDays = this.viewDataProvider.getSkippedDaysCount(position.groupIndex, startDate, normalizedEndDate, duration);
                            width -= skippedDays * cellWidth
                        }
                        return width
                    };
                    _proto._getDurationInDays = function(startDate, endDate) {
                        const adjustedDuration = this._adjustDurationByDaylightDiff(endDate.getTime() - startDate.getTime(), startDate, endDate);
                        return adjustedDuration / _date.default.dateToMilliseconds("day") || 1
                    };
                    _proto.getDeltaTime = function(args, initialSize) {
                        return 864e5 * this._getDeltaWidth(args, initialSize)
                    };
                    _proto.isAllDay = function() {
                        return false
                    };
                    _proto.createTaskPositionMap = function(items, skipSorting) {
                        if (!skipSorting) {
                            (0, _m_utils.sortAppointmentsByStartDate)(items, this.dataAccessors)
                        }
                        return _HorizontalAppointmen.prototype.createTaskPositionMap.call(this, items)
                    };
                    _proto._getSortedPositions = function(map, skipSorting) {
                        let result = _HorizontalAppointmen.prototype._getSortedPositions.call(this, map);
                        if (!skipSorting) {
                            result = (0, _query.default)(result).sortBy("top").thenBy("left").thenBy("cellPosition").thenBy("i").toArray()
                        }
                        return result
                    };
                    _proto.needCorrectAppointmentDates = function() {
                        return false
                    };
                    _proto.getPositionShift = function(timeShift) {
                        return {
                            top: 0,
                            left: 0,
                            cellPosition: 0
                        }
                    };
                    return HorizontalMonthLineRenderingStrategy
                }(_m_strategy_horizontal.default);
                var _default = HorizontalMonthLineRenderingStrategy;
                exports.default = _default
            },
        20523:
            /*!***************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/rendering_strategies/m_strategy_vertical.js ***!
              \***************************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 91198));
                var _extend = __webpack_require__( /*! ../../../../core/utils/extend */ 13306);
                var _math = __webpack_require__( /*! ../../../../core/utils/math */ 60810);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _getAppointmentTakesAllDay = __webpack_require__( /*! ../../../../renovation/ui/scheduler/appointment/utils/getAppointmentTakesAllDay */ 96801);
                var _getSkippedHoursInRange = _interopRequireDefault(__webpack_require__( /*! ../../../../renovation/ui/scheduler/view_model/appointments/utils/getSkippedHoursInRange */ 37009));
                var _utils = _interopRequireDefault(__webpack_require__( /*! ../../../../ui/scheduler/utils.timeZone */ 32511));
                var _m_appointment_adapter = __webpack_require__( /*! ../../m_appointment_adapter */ 72734);
                var _m_expression_utils = __webpack_require__( /*! ../../m_expression_utils */ 30906);
                var _m_strategy_base = _interopRequireDefault(__webpack_require__( /*! ./m_strategy_base */ 64173));

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const toMs = _date.default.dateToMilliseconds;
                let VerticalRenderingStrategy = function(_BaseAppointmentsStra) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(VerticalRenderingStrategy, _BaseAppointmentsStra);

                    function VerticalRenderingStrategy() {
                        return _BaseAppointmentsStra.apply(this, arguments) || this
                    }
                    var _proto = VerticalRenderingStrategy.prototype;
                    _proto.getDeltaTime = function(args, initialSize, appointment) {
                        let deltaTime = 0;
                        if (this.isAllDay(appointment)) {
                            deltaTime = this._getDeltaWidth(args, initialSize) * toMs("day")
                        } else {
                            const deltaHeight = args.height - initialSize.height;
                            deltaTime = toMs("minute") * Math.round(deltaHeight / this.cellHeight * this.cellDurationInMinutes)
                        }
                        return deltaTime
                    };
                    _proto._correctCollectorCoordinatesInAdaptive = function(coordinates, isAllDay) {
                        if (isAllDay) {
                            _BaseAppointmentsStra.prototype._correctCollectorCoordinatesInAdaptive.call(this, coordinates, isAllDay)
                        } else if (0 === this._getMaxAppointmentCountPerCellByType()) {
                            const {
                                cellHeight: cellHeight
                            } = this;
                            const {
                                cellWidth: cellWidth
                            } = this;
                            coordinates.top += (cellHeight - this.getDropDownButtonAdaptiveSize()) / 2;
                            coordinates.left += (cellWidth - this.getDropDownButtonAdaptiveSize()) / 2
                        }
                    };
                    _proto.getAppointmentGeometry = function(coordinates) {
                        let geometry = null;
                        if (coordinates.allDay) {
                            geometry = this._getAllDayAppointmentGeometry(coordinates)
                        } else {
                            geometry = this.isAdaptive && coordinates.isCompact ? this._getAdaptiveGeometry(coordinates) : this._getVerticalAppointmentGeometry(coordinates)
                        }
                        return _BaseAppointmentsStra.prototype.getAppointmentGeometry.call(this, geometry)
                    };
                    _proto._getAdaptiveGeometry = function(coordinates) {
                        const config = this._calculateGeometryConfig(coordinates);
                        return this._customizeCoordinates(coordinates, config.height, config.appointmentCountPerCell, config.offset)
                    };
                    _proto._getItemPosition = function(initialAppointment) {
                        const allDay = this.isAllDay(initialAppointment);
                        if (allDay) {
                            return _BaseAppointmentsStra.prototype._getItemPosition.call(this, initialAppointment)
                        }
                        const appointment = _BaseAppointmentsStra.prototype.shiftAppointmentByViewOffset.call(this, initialAppointment);
                        const adapter = (0, _m_appointment_adapter.createAppointmentAdapter)(appointment, this.dataAccessors, this.timeZoneCalculator);
                        const isRecurring = !!adapter.recurrenceRule;
                        const appointmentStartDate = adapter.calculateStartDate("toGrid");
                        const appointmentEndDate = adapter.calculateEndDate("toGrid");
                        const appointmentDuration = appointmentEndDate - appointmentStartDate;
                        const appointmentBeginInCurrentView = this.options.startViewDate < appointmentStartDate;
                        const isAppointmentTakesSeveralDays = !_utils.default.isSameAppointmentDates(appointmentStartDate, appointmentEndDate);
                        const settings = this.generateAppointmentSettings(appointment);
                        let result = [];
                        for (let j = 0; j < settings.length; j++) {
                            const currentSetting = settings[j];
                            const height = this.calculateAppointmentHeight(appointment, currentSetting);
                            const width = this.calculateAppointmentWidth(appointment, currentSetting);
                            let resultHeight = height;
                            let appointmentReduced = null;
                            let multiDaysAppointmentParts = [];
                            const currentMaxAllowedPosition = currentSetting.vMax;
                            if (this._isMultiViewAppointment(currentSetting, height) || isAppointmentTakesSeveralDays && !isRecurring) {
                                const trimmedStartDate = _date.default.trimTime(appointmentStartDate);
                                const trimmedSettingStartDate = _date.default.trimTime(currentSetting.info.appointment.startDate);
                                const reduceHead = trimmedStartDate <= trimmedSettingStartDate || isRecurring;
                                if (reduceHead) {
                                    resultHeight = this._reduceMultiDayAppointment(height, {
                                        top: currentSetting.top,
                                        bottom: currentMaxAllowedPosition
                                    });
                                    multiDaysAppointmentParts = this._getAppointmentParts({
                                        sourceAppointmentHeight: height,
                                        reducedHeight: resultHeight,
                                        width: width
                                    }, currentSetting)
                                }
                                const {
                                    startDate: currentSettingStartDate,
                                    normalizedEndDate: currentSettingNormalizedEndDate
                                } = currentSetting.info.appointment;
                                const currentSettingDuration = currentSettingNormalizedEndDate - currentSettingStartDate;
                                const hasNextParts = currentSettingDuration < appointmentDuration;
                                appointmentReduced = hasNextParts ? appointmentBeginInCurrentView ? "head" : "body" : appointmentBeginInCurrentView ? "head" : "tail"
                            }(0, _extend.extend)(currentSetting, {
                                height: resultHeight,
                                width: width,
                                allDay: allDay,
                                appointmentReduced: appointmentReduced
                            });
                            result = this._getAppointmentPartsPosition(multiDaysAppointmentParts, currentSetting, result)
                        }
                        return result
                    };
                    _proto._isMultiViewAppointment = function(_ref, height) {
                        let {
                            vMax: vMax,
                            top: top
                        } = _ref;
                        const fullAppointmentHeight = (0, _math.roundFloatPart)(height, 2);
                        const remainingHeight = (0, _math.roundFloatPart)(vMax - top, 2);
                        return fullAppointmentHeight > remainingHeight
                    };
                    _proto._reduceMultiDayAppointment = function(sourceAppointmentHeight, bound) {
                        return Math.min(sourceAppointmentHeight, bound.bottom - Math.floor(bound.top))
                    };
                    _proto._getGroupHeight = function() {
                        return this.cellHeight * this.rowCount
                    };
                    _proto._getGroupTopOffset = function(appointmentSettings) {
                        const {
                            groupIndex: groupIndex
                        } = appointmentSettings;
                        const groupTop = Math.max(0, this.positionHelper.getGroupTop({
                            groupIndex: groupIndex,
                            showAllDayPanel: this.showAllDayPanel,
                            isGroupedAllDayPanel: this.isGroupedAllDayPanel
                        }));
                        const allDayPanelOffset = this.positionHelper.getOffsetByAllDayPanel({
                            groupIndex: groupIndex,
                            supportAllDayRow: this.allDaySupported(),
                            showAllDayPanel: this.showAllDayPanel
                        });
                        const appointmentGroupTopOffset = appointmentSettings.top - groupTop - allDayPanelOffset;
                        return appointmentGroupTopOffset
                    };
                    _proto._getTailHeight = function(appointmentGeometry, appointmentSettings) {
                        if (!this.isVirtualScrolling) {
                            return appointmentGeometry.sourceAppointmentHeight - appointmentGeometry.reducedHeight
                        }
                        const appointmentGroupTopOffset = this._getGroupTopOffset(appointmentSettings);
                        const {
                            sourceAppointmentHeight: sourceAppointmentHeight
                        } = appointmentGeometry;
                        const groupHeight = this._getGroupHeight();
                        const tailHeight = appointmentGroupTopOffset + sourceAppointmentHeight - groupHeight;
                        return tailHeight
                    };
                    _proto._getAppointmentParts = function(appointmentGeometry, appointmentSettings) {
                        const {
                            width: width
                        } = appointmentGeometry;
                        const result = [];
                        let currentPartTop = Math.max(0, this.positionHelper.getGroupTop({
                            groupIndex: appointmentSettings.groupIndex,
                            showAllDayPanel: this.showAllDayPanel,
                            isGroupedAllDayPanel: this.isGroupedAllDayPanel
                        }));
                        const cellsDiff = this.isGroupedByDate ? this.groupCount : 1;
                        const offset = this.cellWidth * cellsDiff;
                        const allDayPanelOffset = this.positionHelper.getOffsetByAllDayPanel({
                            groupIndex: appointmentSettings.groupIndex,
                            supportAllDayRow: this.allDaySupported(),
                            showAllDayPanel: this.showAllDayPanel
                        });
                        currentPartTop += allDayPanelOffset;
                        const minHeight = this.getAppointmentMinSize();
                        const {
                            vMax: vMax,
                            hMax: hMax
                        } = appointmentSettings;
                        const hasTailPart = this.options.endViewDate > appointmentSettings.info.appointment.endDate;
                        let left = Math.round(appointmentSettings.left + offset);
                        let tailHeight = this._getTailHeight(appointmentGeometry, appointmentSettings);
                        while (tailHeight > 0 && left < hMax) {
                            tailHeight = Math.max(minHeight, tailHeight);
                            const columnIndex = appointmentSettings.columnIndex + cellsDiff;
                            const height = Math.min(tailHeight, vMax);
                            result.push(_extends(_extends({}, appointmentSettings), {
                                top: currentPartTop,
                                left: left,
                                height: height,
                                width: width,
                                appointmentReduced: "body",
                                rowIndex: 0,
                                columnIndex: columnIndex
                            }));
                            left += offset;
                            tailHeight -= vMax
                        }
                        if (hasTailPart && result.length > 0) {
                            result[result.length - 1].appointmentReduced = "tail"
                        }
                        return result
                    };
                    _proto._getMinuteHeight = function() {
                        return this.cellHeight / this.cellDurationInMinutes
                    };
                    _proto._getCompactLeftCoordinate = function(itemLeft, index) {
                        const cellWidth = this.cellWidth || this.getAppointmentMinSize();
                        return itemLeft + (1 + cellWidth) * index
                    };
                    _proto._getVerticalAppointmentGeometry = function(coordinates) {
                        const config = this._calculateVerticalGeometryConfig(coordinates);
                        return this._customizeVerticalCoordinates(coordinates, config.width, config.appointmentCountPerCell, config.offset)
                    };
                    _proto._customizeVerticalCoordinates = function(coordinates, width, appointmentCountPerCell, topOffset, isAllDay) {
                        const appointmentWidth = Math.max(width / appointmentCountPerCell, width / coordinates.count);
                        const {
                            height: height
                        } = coordinates;
                        const appointmentLeft = coordinates.left + coordinates.index * appointmentWidth;
                        const {
                            top: top
                        } = coordinates;
                        if (coordinates.isCompact) {
                            this._markAppointmentAsVirtual(coordinates, isAllDay)
                        }
                        return {
                            height: height,
                            width: appointmentWidth,
                            top: top,
                            left: appointmentLeft,
                            empty: this._isAppointmentEmpty(height, width)
                        }
                    };
                    _proto._calculateVerticalGeometryConfig = function(coordinates) {
                        const overlappingMode = this.maxAppointmentsPerCell;
                        const offsets = this._getOffsets();
                        const appointmentDefaultOffset = this._getAppointmentDefaultOffset();
                        let appointmentCountPerCell = this._getAppointmentCount(overlappingMode, coordinates);
                        let ratio = this._getDefaultRatio(coordinates, appointmentCountPerCell);
                        let maxWidth = this._getMaxWidth();
                        if (!appointmentCountPerCell) {
                            appointmentCountPerCell = coordinates.count;
                            ratio = (maxWidth - offsets.unlimited) / maxWidth
                        }
                        let topOffset = (1 - ratio) * maxWidth;
                        if ("auto" === overlappingMode || (0, _type.isNumeric)(overlappingMode)) {
                            ratio = 1;
                            maxWidth -= appointmentDefaultOffset;
                            topOffset = 0
                        }
                        return {
                            width: ratio * maxWidth,
                            appointmentCountPerCell: appointmentCountPerCell,
                            offset: topOffset
                        }
                    };
                    _proto._getMaxWidth = function() {
                        return this.cellWidth
                    };
                    _proto.isAllDay = function(appointmentData) {
                        return (0, _getAppointmentTakesAllDay.getAppointmentTakesAllDay)((0, _m_appointment_adapter.createAppointmentAdapter)(appointmentData, this.dataAccessors, this.timeZoneCalculator), this.allDayPanelMode)
                    };
                    _proto._getAppointmentMaxWidth = function() {
                        return this.cellWidth - this._getAppointmentDefaultOffset()
                    };
                    _proto.calculateAppointmentWidth = function(appointment, position) {
                        if (!this.isAllDay(appointment)) {
                            return 0
                        }
                        const {
                            startDate: startDateWithTime,
                            endDate: endDate,
                            normalizedEndDate: normalizedEndDate
                        } = position.info.appointment;
                        const startDate = _date.default.trimTime(startDateWithTime);
                        const cellWidth = this.cellWidth || this.getAppointmentMinSize();
                        const durationInHours = (normalizedEndDate.getTime() - startDate.getTime()) / toMs("hour");
                        const skippedHours = (0, _getSkippedHoursInRange.default)(startDate, endDate, this.viewDataProvider);
                        let width = Math.ceil((durationInHours - skippedHours) / 24) * cellWidth;
                        width = this.cropAppointmentWidth(width, cellWidth);
                        return width
                    };
                    _proto.calculateAppointmentHeight = function(appointment, position) {
                        if (this.isAllDay(appointment)) {
                            return 0
                        }
                        const {
                            startDate: startDate,
                            normalizedEndDate: normalizedEndDate
                        } = position.info.appointment;
                        const allDay = _m_expression_utils.ExpressionUtils.getField(this.dataAccessors, "allDay", appointment);
                        const duration = this.getAppointmentDurationInMs(startDate, normalizedEndDate, allDay);
                        const durationInMinutes = this._adjustDurationByDaylightDiff(duration, startDate, normalizedEndDate) / toMs("minute");
                        const height = durationInMinutes * this._getMinuteHeight();
                        return height
                    };
                    _proto.getDirection = function() {
                        return "vertical"
                    };
                    _proto._sortCondition = function(a, b) {
                        if (!!a.allDay !== !!b.allDay) {
                            return a.allDay ? 1 : -1
                        }
                        const isAllDay = a.allDay && b.allDay;
                        return "vertical" === this.groupOrientation && isAllDay ? this._columnCondition(a, b) : this._rowCondition(a, b)
                    };
                    _proto.allDaySupported = function() {
                        return true
                    };
                    _proto._getAllDayAppointmentGeometry = function(coordinates) {
                        const config = this._calculateGeometryConfig(coordinates);
                        return this._customizeCoordinates(coordinates, config.height, config.appointmentCountPerCell, config.offset, true)
                    };
                    _proto._calculateGeometryConfig = function(coordinates) {
                        if (!this.allowResizing || !this.allowAllDayResizing) {
                            coordinates.skipResizing = true
                        }
                        const config = _BaseAppointmentsStra.prototype._calculateGeometryConfig.call(this, coordinates);
                        const minAppointmentCountPerCell = Math.min(config.appointmentCountPerCell, this._getDynamicAppointmentCountPerCell().allDay);
                        if (coordinates.allDay && coordinates.count <= minAppointmentCountPerCell) {
                            config.offset = 0
                        }
                        return config
                    };
                    _proto._getAppointmentCount = function(overlappingMode, coordinates) {
                        return "auto" !== overlappingMode && 1 === coordinates.count && !(0, _type.isNumeric)(overlappingMode) ? coordinates.count : this._getMaxAppointmentCountPerCellByType(coordinates.allDay)
                    };
                    _proto._getDefaultRatio = function(coordinates, appointmentCountPerCell) {
                        return coordinates.count > this.appointmentCountPerCell ? .65 : 1
                    };
                    _proto._getOffsets = function() {
                        return {
                            unlimited: 5,
                            auto: 20
                        }
                    };
                    _proto._getMaxHeight = function() {
                        return this.allDayHeight || this.getAppointmentMinSize()
                    };
                    _proto._needVerticalGroupBounds = function(allDay) {
                        return !allDay
                    };
                    _proto._needHorizontalGroupBounds = function() {
                        return false
                    };
                    _proto.getPositionShift = function(timeShift, isAllDay) {
                        if (!isAllDay && this.isAdaptive && 0 === this._getMaxAppointmentCountPerCellByType(isAllDay)) {
                            return {
                                top: 0,
                                left: 0,
                                cellPosition: 0
                            }
                        }
                        return _BaseAppointmentsStra.prototype.getPositionShift.call(this, timeShift, isAllDay)
                    };
                    return VerticalRenderingStrategy
                }(_m_strategy_base.default);
                var _default = VerticalRenderingStrategy;
                exports.default = _default
            },
        25410:
            /*!***********************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/rendering_strategies/m_strategy_week.js ***!
              \***********************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _m_strategy_vertical = (obj = __webpack_require__( /*! ./m_strategy_vertical */ 20523), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let WeekAppointmentRenderingStrategy = function(_VerticalRenderingStr) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(WeekAppointmentRenderingStrategy, _VerticalRenderingStr);

                    function WeekAppointmentRenderingStrategy() {
                        return _VerticalRenderingStr.apply(this, arguments) || this
                    }
                    var _proto = WeekAppointmentRenderingStrategy.prototype;
                    _proto.isApplyCompactAppointmentOffset = function() {
                        if (this.isAdaptive && 0 === this._getMaxAppointmentCountPerCellByType()) {
                            return false
                        }
                        return this.supportCompactDropDownAppointments()
                    };
                    return WeekAppointmentRenderingStrategy
                }(_m_strategy_vertical.default);
                var _default = WeekAppointmentRenderingStrategy;
                exports.default = _default
            },
        71687:
            /*!**************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/appointments/resizing/m_core.js ***!
              \**************************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.getAppointmentDateRange = void 0;

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const getAppointmentLeftCell = options => {
                    const {
                        cellHeight: cellHeight,
                        cellWidth: cellWidth,
                        viewDataProvider: viewDataProvider,
                        relativeAppointmentRect: relativeAppointmentRect,
                        appointmentSettings: appointmentSettings,
                        rtlEnabled: rtlEnabled
                    } = options;
                    const cellRowIndex = Math.floor(relativeAppointmentRect.top / cellHeight);
                    const cellColumnIndex = Math.round(relativeAppointmentRect.left / cellWidth);
                    const leftCell = viewDataProvider.getCellData(cellRowIndex, cellColumnIndex, appointmentSettings.allDay, rtlEnabled);
                    return leftCell
                };
                exports.getAppointmentDateRange = options => {
                    const {
                        appointmentSettings: appointmentSettings
                    } = options;
                    const relativeAppointmentRect = ((appointmentRect, parentAppointmentRect) => {
                        const left = appointmentRect.left - parentAppointmentRect.left;
                        const top = appointmentRect.top - parentAppointmentRect.top;
                        const width = left < 0 ? appointmentRect.width + left : appointmentRect.width;
                        const height = top < 0 ? appointmentRect.height + top : appointmentRect.height;
                        return {
                            left: Math.max(0, left),
                            top: Math.max(0, top),
                            width: width,
                            height: height
                        }
                    })(options.appointmentRect, options.parentAppointmentRect);
                    const cellInfo = (options => {
                        const {
                            appointmentSettings: appointmentSettings,
                            isVerticalGroupedWorkSpace: isVerticalGroupedWorkSpace,
                            DOMMetaData: DOMMetaData
                        } = options;
                        const DOMMetaTable = appointmentSettings.allDay && !isVerticalGroupedWorkSpace ? [DOMMetaData.allDayPanelCellsMeta] : DOMMetaData.dateTableCellsMeta;
                        const {
                            positionByMap: positionByMap
                        } = appointmentSettings;
                        const {
                            height: cellHeight,
                            width: cellWidth
                        } = DOMMetaTable[positionByMap.rowIndex][positionByMap.columnIndex];
                        const cellCountInRow = DOMMetaTable[positionByMap.rowIndex].length;
                        return {
                            cellWidth: cellWidth,
                            cellHeight: cellHeight,
                            cellCountInRow: cellCountInRow
                        }
                    })(options);
                    const considerTime = !options.isDateAndTimeView || appointmentSettings.allDay;
                    const extendedOptions = _extends(_extends(_extends({}, options), cellInfo), {
                        considerTime: considerTime,
                        relativeAppointmentRect: relativeAppointmentRect
                    });
                    return !options.rtlEnabled ? (options => {
                        const {
                            cellWidth: cellWidth,
                            cellCountInRow: cellCountInRow,
                            relativeAppointmentRect: relativeAppointmentRect,
                            viewDataProvider: viewDataProvider,
                            appointmentSettings: appointmentSettings,
                            handles: handles
                        } = options;
                        const appointmentFirstCell = getAppointmentLeftCell(options);
                        const appointmentCellsAmount = Math.round(relativeAppointmentRect.width / cellWidth);
                        const appointmentLastCellIndex = appointmentFirstCell.index + (appointmentCellsAmount - 1);
                        const {
                            sourceAppointment: sourceAppointment
                        } = appointmentSettings.info;
                        const {
                            allDay: allDay
                        } = appointmentSettings.info.appointment;
                        if (handles.left) {
                            return {
                                startDate: appointmentFirstCell.startDate,
                                endDate: appointmentFirstCell.startDate > sourceAppointment.endDate ? appointmentFirstCell.startDate : sourceAppointment.endDate
                            }
                        }
                        const appointmentRowIndex = Math.floor(appointmentLastCellIndex / cellCountInRow);
                        const appointmentColumnIndex = appointmentLastCellIndex % cellCountInRow;
                        const appointmentLastCell = viewDataProvider.getCellData(appointmentRowIndex, appointmentColumnIndex, allDay);
                        const endDate = !options.considerTime ? appointmentLastCell.endDate : appointmentLastCell.startDate;
                        return {
                            startDate: endDate < sourceAppointment.startDate ? endDate : sourceAppointment.startDate,
                            endDate: endDate
                        }
                    })(extendedOptions) : (options => {
                        const {
                            viewDataProvider: viewDataProvider,
                            cellCountInRow: cellCountInRow,
                            appointmentSettings: appointmentSettings,
                            handles: handles,
                            cellWidth: cellWidth,
                            relativeAppointmentRect: relativeAppointmentRect
                        } = options;
                        const appointmentLastCell = getAppointmentLeftCell(options);
                        const {
                            sourceAppointment: sourceAppointment
                        } = appointmentSettings.info;
                        const {
                            allDay: allDay
                        } = appointmentSettings.info.appointment;
                        if (handles.right) {
                            const appointmentLastCellIndex = appointmentLastCell.index;
                            const appointmentCellsAmount = Math.round(relativeAppointmentRect.width / cellWidth);
                            const appointmentFirstCellIndex = appointmentLastCellIndex - appointmentCellsAmount + 1;
                            const appointmentRowIndex = Math.floor(appointmentLastCellIndex / cellCountInRow);
                            const appointmentFirstCell = viewDataProvider.getCellData(appointmentRowIndex, appointmentFirstCellIndex, allDay, true);
                            return {
                                startDate: appointmentFirstCell.startDate,
                                endDate: appointmentFirstCell.startDate > sourceAppointment.endDate ? appointmentFirstCell.startDate : sourceAppointment.endDate
                            }
                        }
                        const endDate = !options.considerTime ? appointmentLastCell.endDate : appointmentLastCell.startDate;
                        return {
                            startDate: endDate < sourceAppointment.startDate ? endDate : sourceAppointment.startDate,
                            endDate: endDate
                        }
                    })(extendedOptions)
                }
            },
        79427:
            /*!********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/base/m_widget_observer.js ***!
              \********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _ui = (obj = __webpack_require__( /*! ../../../ui/widget/ui.widget */ 14390), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let WidgetObserver = function(_Widget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(WidgetObserver, _Widget);

                    function WidgetObserver() {
                        return _Widget.apply(this, arguments) || this
                    }
                    var _proto = WidgetObserver.prototype;
                    _proto.notifyObserver = function(subject, args) {
                        const observer = this.option("observer");
                        if (observer) {
                            observer.fire(subject, args)
                        }
                    };
                    _proto.invoke = function() {
                        const observer = this.option("observer");
                        if (observer) {
                            return observer.fire.apply(observer, arguments)
                        }
                    };
                    return WidgetObserver
                }(_ui.default);
                var _default = WidgetObserver;
                exports.default = _default
            },
        20332:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/header/m_calendar.js ***!
              \***************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 99393));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 20530));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _calendar = _interopRequireDefault(__webpack_require__( /*! ../../../ui/calendar */ 26559));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/popover/ui.popover */ 17287));
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../../../ui/popup/ui.popup */ 51495));
                var _ui3 = _interopRequireDefault(__webpack_require__( /*! ../../../ui/scroll_view/ui.scrollable */ 41183));
                var _ui4 = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.widget */ 14390));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let SchedulerCalendar = function(_Widget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(SchedulerCalendar, _Widget);

                    function SchedulerCalendar() {
                        return _Widget.apply(this, arguments) || this
                    }
                    var _proto = SchedulerCalendar.prototype;
                    _proto.show = function(target) {
                        if (!this._isMobileLayout()) {
                            this._overlay.option("target", target)
                        }
                        this._overlay.show()
                    };
                    _proto.hide = function() {
                        this._overlay.hide()
                    };
                    _proto._keyboardHandler = function(opts) {
                        var _a;
                        null === (_a = this._calendar) || void 0 === _a ? void 0 : _a._keyboardHandler(opts)
                    };
                    _proto._init = function() {
                        _Widget.prototype._init.call(this);
                        this.$element()
                    };
                    _proto._render = function() {
                        _Widget.prototype._render.call(this);
                        this._renderOverlay()
                    };
                    _proto._renderOverlay = function() {
                        this.$element().addClass("dx-scheduler-navigator-calendar-popover");
                        const isMobileLayout = this._isMobileLayout();
                        const overlayType = isMobileLayout ? _ui2.default : _ui.default;
                        this._overlay = this._createComponent(this.$element(), overlayType, {
                            contentTemplate: () => this._createOverlayContent(),
                            onShown: () => this._calendar.focus(),
                            defaultOptionsRules: [{
                                device: () => isMobileLayout,
                                options: {
                                    fullScreen: true,
                                    showCloseButton: false,
                                    toolbarItems: [{
                                        shortcut: "cancel"
                                    }]
                                }
                            }]
                        })
                    };
                    _proto._createOverlayContent = function() {
                        const result = (0, _renderer.default)("<div>").addClass("dx-scheduler-navigator-calendar");
                        this._calendar = this._createComponent(result, _calendar.default, this._getCalendarOptions());
                        if (this._isMobileLayout()) {
                            const scrollable = this._createScrollable(result);
                            return scrollable.$element()
                        }
                        return result
                    };
                    _proto._createScrollable = function(content) {
                        const result = this._createComponent("<div>", _ui3.default, {
                            direction: "vertical"
                        });
                        result.$content().append(content);
                        return result
                    };
                    _proto._optionChanged = function(_ref) {
                        let {
                            name: name,
                            value: value
                        } = _ref;
                        var _a;
                        switch (name) {
                            case "value":
                                null === (_a = this._calendar) || void 0 === _a ? void 0 : _a.option("value", value)
                        }
                    };
                    _proto._getCalendarOptions = function() {
                        return {
                            value: this.option("value"),
                            min: this.option("min"),
                            max: this.option("max"),
                            firstDayOfWeek: this.option("firstDayOfWeek"),
                            focusStateEnabled: this.option("focusStateEnabled"),
                            onValueChanged: this.option("onValueChanged"),
                            skipFocusCheck: true,
                            tabIndex: this.option("tabIndex")
                        }
                    };
                    _proto._isMobileLayout = function() {
                        return !_devices.default.current().generic
                    };
                    return SchedulerCalendar
                }(_ui4.default);
                exports.default = SchedulerCalendar;
                (0, _component_registrator.default)("dxSchedulerCalendarPopup", SchedulerCalendar)
            },
        76310:
            /*!*********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/header/m_date_navigator.js ***!
              \*********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.getDateNavigator = void 0;
                var _date = (obj = __webpack_require__( /*! ../../../core/utils/date */ 91198), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _themes = __webpack_require__( /*! ../../../ui/themes */ 75811);

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const {
                    trimTime: trimTime
                } = _date.default;
                exports.getDateNavigator = (header, item) => {
                    const items = [getPreviousButtonOptions(header), getCalendarButtonOptions(header), getNextButtonOptions(header)];
                    const stylingMode = (0, _themes.isMaterialBased)() ? "text" : "contained";
                    return _extends({
                        widget: "dxButtonGroup",
                        cssClass: "dx-scheduler-navigator",
                        options: {
                            items: items,
                            stylingMode: stylingMode,
                            selectionMode: "none",
                            onItemClick: e => {
                                e.itemData.clickHandler(e)
                            }
                        }
                    }, item)
                };
                const getPreviousButtonOptions = header => ({
                    key: "previous",
                    icon: "chevronprev",
                    elementAttr: {
                        class: "dx-scheduler-navigator-previous"
                    },
                    clickHandler: () => header._updateDateByDirection(-1),
                    onContentReady: e => {
                        const previousButton = e.component;
                        previousButton.option("disabled", isPreviousButtonDisabled(header));
                        header._addEvent("min", () => {
                            previousButton.option("disabled", isPreviousButtonDisabled(header))
                        });
                        header._addEvent("currentDate", () => {
                            previousButton.option("disabled", isPreviousButtonDisabled(header))
                        });
                        header._addEvent("startViewDate", () => {
                            previousButton.option("disabled", isPreviousButtonDisabled(header))
                        })
                    }
                });
                const getCalendarButtonOptions = header => ({
                    key: "calendar",
                    text: header.captionText,
                    elementAttr: {
                        class: "dx-scheduler-navigator-caption"
                    },
                    clickHandler: e => header._showCalendar(e),
                    onContentReady: e => {
                        const calendarButton = e.component;
                        header._addEvent("currentView", () => {
                            calendarButton.option("text", header.captionText)
                        });
                        header._addEvent("currentDate", () => {
                            calendarButton.option("text", header.captionText)
                        });
                        header._addEvent("startViewDate", () => {
                            calendarButton.option("text", header.captionText)
                        });
                        header._addEvent("views", () => {
                            calendarButton.option("text", header.captionText)
                        });
                        header._addEvent("firstDayOfWeek", () => {
                            calendarButton.option("text", header.captionText)
                        })
                    }
                });
                const getNextButtonOptions = header => ({
                    key: "next",
                    icon: "chevronnext",
                    elementAttr: {
                        class: "dx-scheduler-navigator-next"
                    },
                    clickHandler: () => header._updateDateByDirection(1),
                    onContentReady: e => {
                        const nextButton = e.component;
                        nextButton.option("disabled", isNextButtonDisabled(header));
                        header._addEvent("min", () => {
                            nextButton.option("disabled", isNextButtonDisabled(header))
                        });
                        header._addEvent("currentDate", () => {
                            nextButton.option("disabled", isNextButtonDisabled(header))
                        });
                        header._addEvent("startViewDate", () => {
                            nextButton.option("disabled", isNextButtonDisabled(header))
                        })
                    }
                });
                const isPreviousButtonDisabled = header => {
                    let min = header.option("min");
                    if (!min) {
                        return false
                    }
                    min = new Date(min);
                    const caption = header._getCaption();
                    min = trimTime(min);
                    const previousDate = header._getNextDate(-1, caption.endDate);
                    return previousDate < min
                };
                const isNextButtonDisabled = header => {
                    let max = header.option("max");
                    if (!max) {
                        return false
                    }
                    max = new Date(max);
                    const caption = header._getCaption();
                    max = max.setHours(23, 59, 59);
                    const nextDate = header._getNextDate(1, caption.startDate);
                    return nextDate > max
                }
            },
        5757:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/header/m_header.js ***!
              \*************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.SchedulerHeader = void 0;
                __webpack_require__( /*! ../../../ui/button_group */ 28236);
                __webpack_require__( /*! ../../../ui/drop_down_button */ 45231);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 99393));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 20530));
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../core/errors */ 17381));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 91198));
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _untyped_getCurrentView = __webpack_require__( /*! ../../../renovation/ui/scheduler/model/untyped_getCurrentView */ 75837);
                var _toolbar = _interopRequireDefault(__webpack_require__( /*! ../../../ui/toolbar */ 71042));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.widget */ 14390));
                var _m_calendar = _interopRequireDefault(__webpack_require__( /*! ./m_calendar */ 20332));
                var _m_date_navigator = __webpack_require__( /*! ./m_date_navigator */ 76310);
                var _m_utils = __webpack_require__( /*! ./m_utils */ 31047);
                var _m_view_switcher = __webpack_require__( /*! ./m_view_switcher */ 93327);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let SchedulerHeader = function(_Widget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(SchedulerHeader, _Widget);

                    function SchedulerHeader() {
                        return _Widget.apply(this, arguments) || this
                    }
                    var _proto = SchedulerHeader.prototype;
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_Widget.prototype._getDefaultOptions.call(this), {
                            _useShortDateFormat: !_devices.default.real().generic || _devices.default.isSimulator()
                        })
                    };
                    _proto._createEventMap = function() {
                        this.eventMap = new Map([
                            ["currentView", [view => {
                                this.currentView = (0, _untyped_getCurrentView.renovationGetCurrentView)((0, _m_utils.getViewName)(view), this.option("views"))
                            }]],
                            ["items", [this.repaint.bind(this)]],
                            ["views", [_m_utils.validateViews]],
                            ["currentDate", [this._getCalendarOptionUpdater("value")]],
                            ["min", [this._getCalendarOptionUpdater("min")]],
                            ["max", [this._getCalendarOptionUpdater("max")]],
                            ["tabIndex", [this.repaint.bind(this)]],
                            ["focusStateEnabled", [this.repaint.bind(this)]],
                            ["useDropDownViewSwitcher", [this.repaint.bind(this)]]
                        ])
                    };
                    _proto._addEvent = function(name, event) {
                        if (!this.eventMap.has(name)) {
                            this.eventMap.set(name, [])
                        }
                        const events = this.eventMap.get(name);
                        this.eventMap.set(name, [...events, event])
                    };
                    _proto._optionChanged = function(args) {
                        const {
                            name: name,
                            value: value
                        } = args;
                        if (this.eventMap.has(name)) {
                            const events = this.eventMap.get(name);
                            events.forEach(event => {
                                event(value)
                            })
                        }
                    };
                    _proto._init = function() {
                        _Widget.prototype._init.call(this);
                        this._createEventMap();
                        this.$element().addClass("dx-scheduler-header");
                        this.currentView = (0, _untyped_getCurrentView.renovationGetCurrentView)((0, _m_utils.getViewName)(this.option("currentView")), this.option("views"))
                    };
                    _proto._render = function() {
                        _Widget.prototype._render.call(this);
                        this._createEventMap();
                        this._renderToolbar()
                    };
                    _proto._renderToolbar = function() {
                        const config = this._createToolbarConfig();
                        const toolbarElement = (0, _renderer.default)("<div>");
                        toolbarElement.appendTo(this.$element());
                        this._toolbar = this._createComponent(toolbarElement, _toolbar.default, config)
                    };
                    _proto._createToolbarConfig = function() {
                        const items = this.option("items");
                        const parsedItems = items.map(element => this._parseItem(element));
                        return {
                            items: parsedItems
                        }
                    };
                    _proto._parseItem = function(item) {
                        const isDefaultElement = this._isDefaultItem(item);
                        if (isDefaultElement) {
                            const defaultElementType = item.defaultElement;
                            switch (defaultElementType) {
                                case "viewSwitcher":
                                    if (this.option("useDropDownViewSwitcher")) {
                                        return (0, _m_view_switcher.getDropDownViewSwitcher)(this, item)
                                    }
                                    return (0, _m_view_switcher.getViewSwitcher)(this, item);
                                case "dateNavigator":
                                    this._renderCalendar();
                                    return (0, _m_date_navigator.getDateNavigator)(this, item);
                                default:
                                    _errors.default.log("Unknown default element type: ".concat(defaultElementType))
                            }
                        }
                        return item
                    };
                    _proto._callEvent = function(event, arg) {
                        if (this.eventMap.has(event)) {
                            const events = this.eventMap.get(event);
                            events.forEach(event => event(arg))
                        }
                    };
                    _proto._updateCurrentView = function(view) {
                        const onCurrentViewChange = this.option("onCurrentViewChange");
                        onCurrentViewChange(view.name);
                        this._callEvent("currentView", view)
                    };
                    _proto._updateCalendarValueAndCurrentDate = function(date) {
                        this._updateCurrentDate(date);
                        this._calendar.option("value", date)
                    };
                    _proto._updateCurrentDate = function(date) {
                        const onCurrentDateChange = this.option("onCurrentDateChange");
                        onCurrentDateChange(date);
                        this._callEvent("currentDate", date)
                    };
                    _proto._renderCalendar = function() {
                        this._calendar = this._createComponent("<div>", _m_calendar.default, {
                            value: this.option("currentDate"),
                            min: this.option("min"),
                            max: this.option("max"),
                            firstDayOfWeek: this.option("firstDayOfWeek"),
                            focusStateEnabled: this.option("focusStateEnabled"),
                            tabIndex: this.option("tabIndex"),
                            onValueChanged: e => {
                                this._updateCurrentDate(e.value);
                                this._calendar.hide()
                            }
                        });
                        this._calendar.$element().appendTo(this.$element())
                    };
                    _proto._getCalendarOptionUpdater = function(name) {
                        return value => {
                            if (this._calendar) {
                                this._calendar.option(name, value)
                            }
                        }
                    };
                    _proto._getNextDate = function(direction) {
                        let initialDate = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;
                        const date = null !== initialDate && void 0 !== initialDate ? initialDate : this.option("currentDate");
                        const options = _extends(_extends({}, this.intervalOptions), {
                            date: date
                        });
                        return (0, _m_utils.getNextIntervalDate)(options, direction)
                    };
                    _proto._isMonth = function() {
                        const {
                            currentView: currentView
                        } = this;
                        return "month" === (0, _m_utils.getViewType)(currentView)
                    };
                    _proto._getDisplayedDate = function() {
                        const startViewDate = this.option("startViewDate");
                        if (this._isMonth()) {
                            return (0, _m_utils.nextWeek)(startViewDate)
                        }
                        return new Date(startViewDate)
                    };
                    _proto._getCaption = function() {
                        let date = this.option("currentDate");
                        if (this.option("startViewDate")) {
                            date = this._getDisplayedDate()
                        }
                        date = _date.default.trimTime(date);
                        const options = _extends(_extends({}, this.intervalOptions), {
                            date: date
                        });
                        const customizationFunction = this.option("customizeDateNavigatorText");
                        const useShortDateFormat = this.option("_useShortDateFormat");
                        return (0, _m_utils.getCaption)(options, useShortDateFormat, customizationFunction)
                    };
                    _proto._updateDateByDirection = function(direction) {
                        const date = this._getNextDate(direction);
                        this._updateCalendarValueAndCurrentDate(date)
                    };
                    _proto._showCalendar = function(e) {
                        this._calendar.show(e.element)
                    };
                    _proto._hideCalendar = function() {
                        this._calendar.hide()
                    };
                    _proto._isDefaultItem = function(item) {
                        return Object.prototype.hasOwnProperty.call(item, "defaultElement")
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(SchedulerHeader, [{
                        key: "views",
                        get: function() {
                            return this.option("views")
                        }
                    }, {
                        key: "captionText",
                        get: function() {
                            return this._getCaption().text
                        }
                    }, {
                        key: "intervalOptions",
                        get: function() {
                            const step = (0, _m_utils.getStep)(this.currentView);
                            const intervalCount = this.option("intervalCount");
                            const firstDayOfWeek = this.option("firstDayOfWeek");
                            const agendaDuration = this.option("agendaDuration");
                            return {
                                step: step,
                                intervalCount: intervalCount,
                                firstDayOfWeek: firstDayOfWeek,
                                agendaDuration: agendaDuration
                            }
                        }
                    }]);
                    return SchedulerHeader
                }(_ui.default);
                exports.SchedulerHeader = SchedulerHeader;
                (0, _component_registrator.default)("dxSchedulerHeader", SchedulerHeader)
            },
        31047:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/header/m_utils.js ***!
              \************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.validateViews = exports.nextWeek = exports.isOneView = exports.getViewType = exports.getViewText = exports.getViewName = exports.getStep = exports.getNextIntervalDate = exports.getCaption = exports.formatViews = void 0;
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../core/errors */ 17381));
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 91198));
                var _inflector = __webpack_require__( /*! ../../../core/utils/inflector */ 78008);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../../localization/date */ 91500));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../localization/message */ 28109));
                var _m_constants = __webpack_require__( /*! ../m_constants */ 6324);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const {
                    correctDateWithUnitBeginning: getPeriodStart,
                    getFirstWeekDate: getWeekStart,
                    getLastMonthDay: getLastMonthDay,
                    addDateInterval: addDateInterval
                } = _date.default;
                const {
                    format: formatDate
                } = _date2.default;
                const MS_DURATION = {
                    milliseconds: 1
                };
                const DAY_DURATION = {
                    days: 1
                };
                const WEEK_DURATION = {
                    days: 7
                };
                const nextDay = date => addDateInterval(date, DAY_DURATION, 1);
                const nextWeek = date => addDateInterval(date, WEEK_DURATION, 1);
                exports.nextWeek = nextWeek;
                const isWeekend = date => 6 === date.getDay() || 0 === date.getDay();
                const getIntervalStartDate = options => {
                    const {
                        date: date,
                        step: step,
                        firstDayOfWeek: firstDayOfWeek
                    } = options;
                    switch (step) {
                        case "day":
                        case "week":
                        case "month":
                            return getPeriodStart(date, step, false, firstDayOfWeek);
                        case "workWeek":
                            const firstWeekDay = getWeekStart(date, firstDayOfWeek);
                            return (firstDayOfWeek => {
                                let date = new Date(firstDayOfWeek);
                                while (isWeekend(date)) {
                                    date = nextDay(date)
                                }
                                return date
                            })(firstWeekDay);
                        case "agenda":
                            return new Date(date)
                    }
                };
                const getIntervalEndDate = (startDate, options) => {
                    const {
                        intervalCount: intervalCount,
                        step: step,
                        agendaDuration: agendaDuration
                    } = options;
                    let periodStartDate;
                    let periodEndDate;
                    let nextPeriodStartDate = new Date(startDate);
                    for (let i = 0; i < intervalCount; i++) {
                        periodStartDate = nextPeriodStartDate;
                        periodEndDate = getPeriodEndDate(periodStartDate, step, agendaDuration);
                        nextPeriodStartDate = getNextPeriodStartDate(periodEndDate, step)
                    }
                    return periodEndDate
                };
                const getPeriodEndDate = (currentPeriodStartDate, step, agendaDuration) => {
                    let date;
                    switch (step) {
                        case "day":
                            date = nextDay(currentPeriodStartDate);
                            break;
                        case "week":
                            date = nextWeek(currentPeriodStartDate);
                            break;
                        case "month":
                            date = (date => {
                                const days = getLastMonthDay(date);
                                return addDateInterval(date, {
                                    days: days
                                }, 1)
                            })(currentPeriodStartDate);
                            break;
                        case "workWeek":
                            date = (workWeekStart => {
                                let date = new Date(workWeekStart);
                                let workDaysCount = 0;
                                while (workDaysCount < 5) {
                                    if (!isWeekend(date)) {
                                        workDaysCount++
                                    }
                                    date = nextDay(date)
                                }
                                return date
                            })(currentPeriodStartDate);
                            break;
                        case "agenda":
                            date = ((date, agendaDuration) => addDateInterval(date, {
                                days: agendaDuration
                            }, 1))(currentPeriodStartDate, agendaDuration)
                    }
                    return (date => addDateInterval(date, MS_DURATION, -1))(date)
                };
                const getNextPeriodStartDate = (currentPeriodEndDate, step) => {
                    let date = (date => addDateInterval(date, MS_DURATION, 1))(currentPeriodEndDate);
                    if ("workWeek" === step) {
                        while (isWeekend(date)) {
                            date = nextDay(date)
                        }
                    }
                    return date
                };
                exports.getNextIntervalDate = (options, direction) => {
                    const {
                        date: date,
                        step: step,
                        intervalCount: intervalCount,
                        agendaDuration: agendaDuration
                    } = options;
                    let dayDuration;
                    switch (step) {
                        case "day":
                            dayDuration = 1 * intervalCount;
                            break;
                        case "week":
                        case "workWeek":
                            dayDuration = 7 * intervalCount;
                            break;
                        case "agenda":
                            dayDuration = agendaDuration;
                            break;
                        case "month":
                            return getNextMonthDate(date, intervalCount, direction)
                    }
                    return addDateInterval(date, {
                        days: dayDuration
                    }, direction)
                };
                const getNextMonthDate = (date, intervalCount, direction) => {
                    const currentDate = date.getDate();
                    const currentMonthFirstDate = new Date(new Date(date.getTime()).setDate(1));
                    const thatMonthFirstDate = new Date(currentMonthFirstDate.setMonth(currentMonthFirstDate.getMonth() + intervalCount * direction));
                    const thatMonthDuration = getLastMonthDay(thatMonthFirstDate);
                    const minDate = currentDate < thatMonthDuration ? currentDate : thatMonthDuration;
                    const currentMonthMinDate = new Date(new Date(date.getTime()).setDate(minDate));
                    const thatMonthMinDate = new Date(currentMonthMinDate.setMonth(currentMonthMinDate.getMonth() + intervalCount * direction));
                    return thatMonthMinDate
                };
                const getDateMonthFormatter = isShort => {
                    const monthType = isShort ? "abbreviated" : "wide";
                    const months = _date2.default.getMonthNames(monthType);
                    return date => {
                        const day = formatDate(date, "day");
                        const month = months[date.getMonth()];
                        return "".concat(day, " ").concat(month)
                    }
                };
                const formatMonthYear = date => {
                    const months = _date2.default.getMonthNames("abbreviated");
                    const month = months[date.getMonth()];
                    const year = formatDate(date, "year");
                    return "".concat(month, " ").concat(year)
                };
                const getDateMonthYearFormatter = isShort => date => {
                    const dateMonthFormat = getDateMonthFormatter(isShort);
                    const dateMonth = dateMonthFormat(date);
                    const year = formatDate(date, "year");
                    return "".concat(dateMonth, " ").concat(year)
                };
                const formatCaptionByMonths = (startDate, endDate, isShort) => {
                    const isDifferentYears = startDate.getFullYear() !== endDate.getFullYear();
                    if (isDifferentYears) {
                        return ((startDate, endDate) => {
                            const firstDateText = formatDate(startDate, getDateMonthYearFormatter(true));
                            const lastDateDateText = formatDate(endDate, getDateMonthYearFormatter(true));
                            return "".concat(firstDateText, "-").concat(lastDateDateText)
                        })(startDate, endDate)
                    }
                    return ((startDate, endDate, isShort) => {
                        const isDifferentMonthDates = startDate.getMonth() !== endDate.getMonth();
                        const useShortFormat = isDifferentMonthDates || isShort;
                        const firstDateFormat = isDifferentMonthDates ? getDateMonthFormatter(useShortFormat) : "d";
                        const firstDateText = formatDate(startDate, firstDateFormat);
                        const lastDateText = formatDate(endDate, getDateMonthYearFormatter(useShortFormat));
                        return "".concat(firstDateText, "-").concat(lastDateText)
                    })(startDate, endDate, isShort)
                };
                const getCaptionText = (startDate, endDate, isShort, step) => {
                    if (_date.default.sameDate(startDate, endDate)) {
                        return ((date, step, isShort) => {
                            const useShortFormat = "agenda" === step ? isShort : false;
                            const dateMonthFormat = getDateMonthFormatter(useShortFormat);
                            const dateMonth = dateMonthFormat(date);
                            const year = formatDate(date, "year");
                            return "".concat(dateMonth, " ").concat(year)
                        })(startDate, step, isShort)
                    }
                    if ("month" === step) {
                        return ((startDate, endDate) => {
                            if (_date.default.sameMonth(startDate, endDate)) {
                                return formatDate(startDate, "monthandyear")
                            }
                            const isSameYear = _date.default.sameYear(startDate, endDate);
                            const firstDateText = isSameYear ? _date2.default.getMonthNames("abbreviated")[startDate.getMonth()] : formatMonthYear(startDate);
                            const lastDateText = formatMonthYear(endDate);
                            return "".concat(firstDateText, "-").concat(lastDateText)
                        })(startDate, endDate)
                    }
                    return formatCaptionByMonths(startDate, endDate, isShort)
                };
                exports.getCaption = (options, isShort, customizationFunction) => {
                    const {
                        startDate: startDate,
                        endDate: endDate
                    } = (options => {
                        const startDate = getIntervalStartDate(options);
                        const endDate = getIntervalEndDate(startDate, options);
                        return {
                            startDate: startDate,
                            endDate: endDate
                        }
                    })(options);
                    let text = getCaptionText(startDate, endDate, isShort, options.step);
                    if ((0, _type.isFunction)(customizationFunction)) {
                        text = customizationFunction({
                            startDate: startDate,
                            endDate: endDate,
                            text: text
                        })
                    }
                    return {
                        startDate: startDate,
                        endDate: endDate,
                        text: text
                    }
                };
                const STEP_MAP = {
                    day: "day",
                    week: "week",
                    workWeek: "workWeek",
                    month: "month",
                    timelineDay: "day",
                    timelineWeek: "week",
                    timelineWorkWeek: "workWeek",
                    timelineMonth: "month",
                    agenda: "agenda"
                };
                exports.getStep = view => STEP_MAP[getViewType(view)];
                const getViewType = view => {
                    if ((0, _type.isObject)(view) && view.type) {
                        return view.type
                    }
                    return view
                };
                exports.getViewType = getViewType;
                const getViewName = view => {
                    if ((0, _type.isObject)(view)) {
                        return view.name ? view.name : view.type
                    }
                    return view
                };
                exports.getViewName = getViewName;
                const getViewText = view => {
                    if (view.name) {
                        return view.name
                    }
                    const viewName = (0, _inflector.camelize)(view.type || view, true);
                    return _message.default.format("dxScheduler-switcher".concat(viewName))
                };
                exports.getViewText = getViewText;
                const validateViews = views => {
                    views.forEach(view => {
                        const viewType = getViewType(view);
                        if (!(view => Object.values(_m_constants.VIEWS).includes(view))(viewType)) {
                            _errors.default.log("W0008", viewType)
                        }
                    })
                };
                exports.validateViews = validateViews;
                exports.formatViews = views => {
                    validateViews(views);
                    return views.map(view => {
                        const text = getViewText(view);
                        const type = getViewType(view);
                        const name = getViewName(view);
                        return {
                            text: text,
                            name: name,
                            view: {
                                text: text,
                                type: type,
                                name: name
                            }
                        }
                    })
                };
                exports.isOneView = (views, selectedView) => 1 === views.length && views[0].name === selectedView
            },
        93327:
            /*!********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/header/m_view_switcher.js ***!
              \********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.getViewSwitcher = exports.getDropDownViewSwitcher = void 0;
                var _themes = __webpack_require__( /*! ../../../ui/themes */ 75811);
                var _m_utils = __webpack_require__( /*! ./m_utils */ 31047);

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const getViewsAndSelectedView = header => {
                    const views = (0, _m_utils.formatViews)(header.views);
                    let selectedView = (0, _m_utils.getViewName)(header.currentView);
                    const isSelectedViewInViews = views.some(view => view.name === selectedView);
                    selectedView = isSelectedViewInViews ? selectedView : void 0;
                    return {
                        selectedView: selectedView,
                        views: views
                    }
                };
                exports.getViewSwitcher = (header, item) => {
                    const {
                        selectedView: selectedView,
                        views: views
                    } = getViewsAndSelectedView(header);
                    const stylingMode = (0, _themes.isFluent)() ? "outlined" : "contained";
                    return _extends({
                        widget: "dxButtonGroup",
                        locateInMenu: "auto",
                        cssClass: "dx-scheduler-view-switcher",
                        options: {
                            items: views,
                            keyExpr: "name",
                            selectedItemKeys: [selectedView],
                            stylingMode: stylingMode,
                            onItemClick: e => {
                                const {
                                    view: view
                                } = e.itemData;
                                header._updateCurrentView(view)
                            },
                            onContentReady: e => {
                                const viewSwitcher = e.component;
                                header._addEvent("currentView", view => {
                                    viewSwitcher.option("selectedItemKeys", [(0, _m_utils.getViewName)(view)])
                                })
                            }
                        }
                    }, item)
                };
                exports.getDropDownViewSwitcher = (header, item) => {
                    const {
                        selectedView: selectedView,
                        views: views
                    } = getViewsAndSelectedView(header);
                    const oneView = (0, _m_utils.isOneView)(views, selectedView);
                    return _extends({
                        widget: "dxDropDownButton",
                        locateInMenu: "never",
                        cssClass: "dx-scheduler-view-switcher",
                        options: {
                            items: views,
                            useSelectMode: true,
                            keyExpr: "name",
                            selectedItemKey: selectedView,
                            displayExpr: "text",
                            showArrowIcon: !oneView,
                            elementAttr: {
                                class: "dx-scheduler-view-switcher-dropdown-button"
                            },
                            onItemClick: e => {
                                const {
                                    view: view
                                } = e.itemData;
                                header._updateCurrentView(view)
                            },
                            onContentReady: e => {
                                const viewSwitcher = e.component;
                                header._addEvent("currentView", view => {
                                    const views = (0, _m_utils.formatViews)(header.views);
                                    if ((0, _m_utils.isOneView)(views, view)) {
                                        header.repaint()
                                    }
                                    viewSwitcher.option("selectedItemKey", (0, _m_utils.getViewName)(view))
                                })
                            },
                            dropDownOptions: {
                                onShowing: e => {
                                    if (oneView) {
                                        e.cancel = true
                                    }
                                },
                                width: "max-content",
                                _wrapperClassExternal: "dx-scheduler-view-switcher-dropdown-button-content"
                            }
                        }
                    }, item)
                }
            },
        72734:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_appointment_adapter.js ***!
              \*******************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = exports.createAppointmentAdapter = void 0;
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _object = __webpack_require__( /*! ../../core/utils/object */ 48013);
                var _ui = (obj = __webpack_require__( /*! ../../ui/widget/ui.errors */ 96688), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _m_expression_utils = __webpack_require__( /*! ./m_expression_utils */ 30906);
                var _m_recurrence = __webpack_require__( /*! ./m_recurrence */ 38227);

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }
                const PROPERTY_NAMES_startDate = "startDate",
                    PROPERTY_NAMES_endDate = "endDate",
                    PROPERTY_NAMES_allDay = "allDay",
                    PROPERTY_NAMES_text = "text",
                    PROPERTY_NAMES_description = "description",
                    PROPERTY_NAMES_startDateTimeZone = "startDateTimeZone",
                    PROPERTY_NAMES_endDateTimeZone = "endDateTimeZone",
                    PROPERTY_NAMES_recurrenceRule = "recurrenceRule",
                    PROPERTY_NAMES_recurrenceException = "recurrenceException",
                    PROPERTY_NAMES_disabled = "disabled";
                let AppointmentAdapter = function() {
                    function AppointmentAdapter(rawAppointment, dataAccessors, timeZoneCalculator, options) {
                        this.rawAppointment = rawAppointment;
                        this.dataAccessors = dataAccessors;
                        this.timeZoneCalculator = timeZoneCalculator;
                        this.options = options
                    }
                    var _proto = AppointmentAdapter.prototype;
                    _proto.getField = function(property) {
                        return _m_expression_utils.ExpressionUtils.getField(this.dataAccessors, property, this.rawAppointment)
                    };
                    _proto.setField = function(property, value) {
                        return _m_expression_utils.ExpressionUtils.setField(this.dataAccessors, property, this.rawAppointment, value)
                    };
                    _proto.calculateStartDate = function(pathTimeZoneConversion) {
                        if (!this.startDate || isNaN(this.startDate.getTime())) {
                            throw _ui.default.Error("E1032", this.text)
                        }
                        return this.calculateDate(this.startDate, this.startDateTimeZone, pathTimeZoneConversion)
                    };
                    _proto.calculateEndDate = function(pathTimeZoneConversion) {
                        return this.calculateDate(this.endDate, this.endDateTimeZone, pathTimeZoneConversion)
                    };
                    _proto.calculateDate = function(date, appointmentTimeZone, pathTimeZoneConversion) {
                        if (!date) {
                            return
                        }
                        return this.timeZoneCalculator.createDate(date, {
                            appointmentTimeZone: appointmentTimeZone,
                            path: pathTimeZoneConversion
                        })
                    };
                    _proto.clone = function() {
                        let options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : void 0;
                        const result = new AppointmentAdapter((0, _object.deepExtendArraySafe)({}, this.rawAppointment), this.dataAccessors, this.timeZoneCalculator, options);
                        if (null === options || void 0 === options ? void 0 : options.pathTimeZone) {
                            result.startDate = result.calculateStartDate(options.pathTimeZone);
                            result.endDate = result.calculateEndDate(options.pathTimeZone)
                        }
                        return result
                    };
                    _proto.source = function() {
                        let serializeDate = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false;
                        if (serializeDate) {
                            const clonedAdapter = this.clone();
                            clonedAdapter.startDate = this.startDate;
                            clonedAdapter.endDate = this.endDate;
                            return clonedAdapter.source()
                        }
                        return (0, _extend.extend)({}, this.rawAppointment)
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(AppointmentAdapter, [{
                        key: "duration",
                        get: function() {
                            return this.endDate ? this.endDate - this.startDate : 0
                        }
                    }, {
                        key: "startDate",
                        get: function() {
                            const result = this.getField(PROPERTY_NAMES_startDate);
                            return void 0 === result ? result : new Date(result)
                        },
                        set: function(value) {
                            this.setField(PROPERTY_NAMES_startDate, value)
                        }
                    }, {
                        key: "endDate",
                        get: function() {
                            const result = this.getField(PROPERTY_NAMES_endDate);
                            return void 0 === result ? result : new Date(result)
                        },
                        set: function(value) {
                            this.setField(PROPERTY_NAMES_endDate, value)
                        }
                    }, {
                        key: "allDay",
                        get: function() {
                            return this.getField(PROPERTY_NAMES_allDay)
                        },
                        set: function(value) {
                            this.setField(PROPERTY_NAMES_allDay, value)
                        }
                    }, {
                        key: "text",
                        get: function() {
                            return this.getField(PROPERTY_NAMES_text)
                        },
                        set: function(value) {
                            this.setField(PROPERTY_NAMES_text, value)
                        }
                    }, {
                        key: "description",
                        get: function() {
                            return this.getField(PROPERTY_NAMES_description)
                        },
                        set: function(value) {
                            this.setField(PROPERTY_NAMES_description, value)
                        }
                    }, {
                        key: "startDateTimeZone",
                        get: function() {
                            return this.getField(PROPERTY_NAMES_startDateTimeZone)
                        }
                    }, {
                        key: "endDateTimeZone",
                        get: function() {
                            return this.getField(PROPERTY_NAMES_endDateTimeZone)
                        }
                    }, {
                        key: "recurrenceRule",
                        get: function() {
                            return this.getField(PROPERTY_NAMES_recurrenceRule)
                        },
                        set: function(value) {
                            this.setField(PROPERTY_NAMES_recurrenceRule, value)
                        }
                    }, {
                        key: "recurrenceException",
                        get: function() {
                            return this.getField(PROPERTY_NAMES_recurrenceException)
                        },
                        set: function(value) {
                            this.setField(PROPERTY_NAMES_recurrenceException, value)
                        }
                    }, {
                        key: "disabled",
                        get: function() {
                            return !!this.getField(PROPERTY_NAMES_disabled)
                        }
                    }, {
                        key: "isRecurrent",
                        get: function() {
                            return (0, _m_recurrence.getRecurrenceProcessor)().isValidRecurrenceRule(this.recurrenceRule)
                        }
                    }]);
                    return AppointmentAdapter
                }();
                var _default = AppointmentAdapter;
                exports.default = _default;
                exports.createAppointmentAdapter = (rawAppointment, dataAccessors, timeZoneCalculator, options) => new AppointmentAdapter(rawAppointment, dataAccessors, timeZoneCalculator, options)
            },
        54915:
            /*!*************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_appointment_drag_behavior.js ***!
              \*************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _draggable = _interopRequireDefault(__webpack_require__( /*! ../../ui/draggable */ 42160));
                var _m_constants = __webpack_require__( /*! ./m_constants */ 6324);
                var _is_scheduler_component = __webpack_require__( /*! ./utils/is_scheduler_component */ 79456);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                let AppointmentDragBehavior = function() {
                    function AppointmentDragBehavior(scheduler) {
                        this.scheduler = scheduler;
                        this.workspace = this.scheduler._workSpace;
                        this.appointments = this.scheduler._appointments;
                        this.initialPosition = {
                            left: 0,
                            top: 0
                        };
                        this.appointmentInfo = null;
                        this.dragBetweenComponentsPromise = null
                    }
                    var _proto = AppointmentDragBehavior.prototype;
                    _proto.isAllDay = function(appointment) {
                        return appointment.data("dxAppointmentSettings").allDay
                    };
                    _proto.onDragStart = function(e) {
                        const {
                            itemSettings: itemSettings,
                            itemData: itemData,
                            initialPosition: initialPosition
                        } = e;
                        this.initialPosition = initialPosition;
                        this.appointmentInfo = {
                            appointment: itemData,
                            settings: itemSettings
                        };
                        this.appointments.notifyObserver("hideAppointmentTooltip")
                    };
                    _proto.onDragMove = function(e) {
                        if (e.fromComponent !== e.toComponent) {
                            this.appointments.notifyObserver("removeDroppableCellClass")
                        }
                    };
                    _proto.getAppointmentElement = function(e) {
                        const itemElement = e.event.data && e.event.data.itemElement || e.itemElement;
                        return (0, _renderer.default)(itemElement)
                    };
                    _proto.onDragEnd = function(event) {
                        const element = this.getAppointmentElement(event);
                        const rawAppointment = this.appointments._getItemData(element);
                        const container = this.appointments._getAppointmentContainer(this.isAllDay(element));
                        container.append(element);
                        const newCellIndex = this.workspace.getDroppableCellIndex();
                        const oldCellIndex = this.workspace.getCellIndexByCoordinates(this.initialPosition);
                        this.appointments.notifyObserver("updateAppointmentAfterDrag", {
                            event: event,
                            element: element,
                            rawAppointment: rawAppointment,
                            newCellIndex: newCellIndex,
                            oldCellIndex: oldCellIndex
                        })
                    };
                    _proto.onDragCancel = function() {
                        this.removeDroppableClasses()
                    };
                    _proto.getItemData = function(appointmentElement) {
                        const dataFromTooltip = (0, _renderer.default)(appointmentElement).data(_m_constants.LIST_ITEM_DATA_KEY);
                        const itemDataFromTooltip = null === dataFromTooltip || void 0 === dataFromTooltip ? void 0 : dataFromTooltip.appointment;
                        const itemDataFromGrid = this.appointments._getItemData(appointmentElement);
                        return itemDataFromTooltip || itemDataFromGrid
                    };
                    _proto.getItemSettings = function(appointment) {
                        const itemData = (0, _renderer.default)(appointment).data(_m_constants.LIST_ITEM_DATA_KEY);
                        return itemData && itemData.settings || []
                    };
                    _proto.createDragStartHandler = function(options, appointmentDragging) {
                        return e => {
                            e.itemData = this.getItemData(e.itemElement);
                            e.itemSettings = this.getItemSettings(e.itemElement);
                            appointmentDragging.onDragStart && appointmentDragging.onDragStart(e);
                            if (!e.cancel) {
                                options.onDragStart(e)
                            }
                        }
                    };
                    _proto.createDragMoveHandler = function(options, appointmentDragging) {
                        return e => {
                            appointmentDragging.onDragMove && appointmentDragging.onDragMove(e);
                            if (!e.cancel) {
                                options.onDragMove(e)
                            }
                        }
                    };
                    _proto.createDragEndHandler = function(options, appointmentDragging) {
                        return e => {
                            const updatedData = this.appointments.invoke("getUpdatedData", e.itemData);
                            this.appointmentInfo = null;
                            e.toItemData = (0, _extend.extend)({}, e.itemData, updatedData);
                            appointmentDragging.onDragEnd && appointmentDragging.onDragEnd(e);
                            if (!e.cancel) {
                                options.onDragEnd(e);
                                if (e.fromComponent !== e.toComponent) {
                                    appointmentDragging.onRemove && appointmentDragging.onRemove(e)
                                }
                            }
                            if (true === e.cancel) {
                                this.removeDroppableClasses()
                            }
                            if (true !== e.cancel && (0, _is_scheduler_component.isSchedulerComponent)(e.toComponent)) {
                                const targetDragBehavior = e.toComponent._getDragBehavior();
                                targetDragBehavior.dragBetweenComponentsPromise = new _deferred.Deferred
                            }
                        }
                    };
                    _proto.createDropHandler = function(appointmentDragging) {
                        return e => {
                            const updatedData = this.appointments.invoke("getUpdatedData", e.itemData);
                            e.itemData = (0, _extend.extend)({}, e.itemData, updatedData);
                            if (e.fromComponent !== e.toComponent) {
                                appointmentDragging.onAdd && appointmentDragging.onAdd(e)
                            }
                            if (this.dragBetweenComponentsPromise) {
                                this.dragBetweenComponentsPromise.resolve()
                            }
                        }
                    };
                    _proto.addTo = function(container, config) {
                        const appointmentDragging = this.scheduler.option("appointmentDragging") || {};
                        const options = (0, _extend.extend)({
                            component: this.scheduler,
                            contentTemplate: null,
                            filter: ".".concat("dx-scheduler-appointment"),
                            immediate: false,
                            onDragStart: this.onDragStart.bind(this),
                            onDragMove: this.onDragMove.bind(this),
                            onDragEnd: this.onDragEnd.bind(this),
                            onDragCancel: this.onDragCancel.bind(this)
                        }, config);
                        this.appointments._createComponent(container, _draggable.default, (0, _extend.extend)({}, options, appointmentDragging, {
                            onDragStart: this.createDragStartHandler(options, appointmentDragging),
                            onDragMove: this.createDragMoveHandler(options, appointmentDragging),
                            onDragEnd: this.createDragEndHandler(options, appointmentDragging),
                            onDrop: this.createDropHandler(appointmentDragging),
                            onCancelByEsc: true
                        }))
                    };
                    _proto.updateDragSource = function(appointment, settings) {
                        const {
                            appointmentInfo: appointmentInfo
                        } = this;
                        if (appointmentInfo || appointment) {
                            const currentAppointment = appointment || appointmentInfo.appointment;
                            const currentSettings = settings || appointmentInfo.settings;
                            this.appointments._setDragSourceAppointment(currentAppointment, currentSettings)
                        }
                    };
                    _proto.removeDroppableClasses = function() {
                        this.appointments._removeDragSourceClassFromDraggedAppointment();
                        this.workspace.removeDroppableCellClass()
                    };
                    return AppointmentDragBehavior
                }();
                exports.default = AppointmentDragBehavior
            },
        43919:
            /*!***************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_appointments_layout_manager.js ***!
              \***************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _date = (obj = __webpack_require__( /*! ../../core/utils/date */ 91198), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _utils = __webpack_require__( /*! ../../renovation/ui/scheduler/model/utils */ 27569);
                var _base = __webpack_require__( /*! ../../renovation/ui/scheduler/view_model/to_test/views/utils/base */ 45985);
                var _m_view_model_generator = __webpack_require__( /*! ./appointments/m_view_model_generator */ 62386);
                var _m_utils = __webpack_require__( /*! ./resources/m_utils */ 31359);
                var _m_position_helper = __webpack_require__( /*! ./workspaces/helpers/m_position_helper */ 94654);

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }
                const toMs = _date.default.dateToMilliseconds;
                let AppointmentLayoutManager = function() {
                    function AppointmentLayoutManager(instance) {
                        this.instance = instance;
                        this.appointmentViewModel = new _m_view_model_generator.AppointmentViewModelGenerator
                    }
                    var _proto = AppointmentLayoutManager.prototype;
                    _proto.getCellDimensions = function(options) {
                        if (this.instance._workSpace) {
                            return {
                                width: this.instance._workSpace.getCellWidth(),
                                height: this.instance._workSpace.getCellHeight(),
                                allDayHeight: this.instance._workSpace.getAllDayHeight()
                            }
                        }
                        return
                    };
                    _proto._getRenderingStrategyOptions = function() {
                        const workspace = this.instance.getWorkSpace();
                        const {
                            virtualScrollingDispatcher: virtualScrollingDispatcher
                        } = this.instance.getWorkSpace();
                        const {
                            cellCountInsideLeftVirtualCell: cellCountInsideLeftVirtualCell,
                            cellCountInsideTopVirtualRow: cellCountInsideTopVirtualRow
                        } = virtualScrollingDispatcher;
                        const groupCount = (0, _m_utils.getGroupCount)(this.instance.option("loadedResources"));
                        const DOMMetaData = workspace.getDOMElementsMetaData();
                        const allDayHeight = (0, _m_position_helper.getAllDayHeight)(workspace.option("showAllDayPanel"), workspace._isVerticalGroupedWorkSpace(), DOMMetaData);
                        const rowCount = workspace._getRowCount();
                        const {
                            positionHelper: positionHelper,
                            viewDataProvider: viewDataProvider
                        } = workspace;
                        const visibleDayDuration = viewDataProvider.getVisibleDayDuration(workspace.option("startDayHour"), workspace.option("endDayHour"), workspace.option("hoursInterval"));
                        const cellDuration = (0, _base.getCellDuration)(workspace.type, workspace.option("startDayHour"), workspace.option("endDayHour"), workspace.option("hoursInterval"));
                        return {
                            resources: this.instance.option("resources"),
                            loadedResources: this.instance.option("loadedResources"),
                            getAppointmentColor: this.instance.createGetAppointmentColor(),
                            dataAccessors: this.instance._dataAccessors,
                            isRenovatedAppointments: this.instance.option("isRenovatedAppointments"),
                            appointmentRenderingStrategyName: this.appointmentRenderingStrategyName,
                            adaptivityEnabled: this.instance.option("adaptivityEnabled"),
                            rtlEnabled: this.instance.option("rtlEnabled"),
                            startDayHour: this.instance._getCurrentViewOption("startDayHour"),
                            endDayHour: this.instance._getCurrentViewOption("endDayHour"),
                            viewOffset: this.instance._getCurrentViewOption("offset") * toMs("minute"),
                            maxAppointmentsPerCell: this.instance._getCurrentViewOption("maxAppointmentsPerCell"),
                            currentDate: this.instance.option("currentDate"),
                            isVirtualScrolling: this.instance.isVirtualScrolling(),
                            leftVirtualCellCount: cellCountInsideLeftVirtualCell,
                            topVirtualCellCount: cellCountInsideTopVirtualRow,
                            intervalCount: workspace.option("intervalCount"),
                            hoursInterval: workspace.option("hoursInterval"),
                            showAllDayPanel: workspace.option("showAllDayPanel"),
                            isGroupedAllDayPanel: workspace.isGroupedAllDayPanel(),
                            groups: this.instance._getCurrentViewOption("groups"),
                            groupCount: groupCount,
                            rowCount: rowCount,
                            appointmentCountPerCell: this.instance.option("_appointmentCountPerCell"),
                            appointmentOffset: this.instance.option("_appointmentOffset"),
                            allowResizing: this.instance._allowResizing(),
                            allowAllDayResizing: this.instance._allowAllDayResizing(),
                            startViewDate: workspace.getStartViewDate(),
                            groupOrientation: workspace._getRealGroupOrientation(),
                            cellWidth: (0, _m_position_helper.getCellWidth)(DOMMetaData),
                            cellHeight: (0, _m_position_helper.getCellHeight)(DOMMetaData),
                            allDayHeight: allDayHeight,
                            resizableStep: positionHelper.getResizableStep(),
                            visibleDayDuration: visibleDayDuration,
                            allDayPanelMode: this.instance._getCurrentViewOption("allDayPanelMode"),
                            timeZoneCalculator: this.instance.timeZoneCalculator,
                            timeZone: this.instance.option("timeZone"),
                            firstDayOfWeek: this.instance.getFirstDayOfWeek(),
                            viewStartDayHour: this.instance._getCurrentViewOption("startDayHour"),
                            viewEndDayHour: this.instance._getCurrentViewOption("endDayHour"),
                            viewType: workspace.type,
                            endViewDate: workspace.getEndViewDate(),
                            positionHelper: positionHelper,
                            isGroupedByDate: workspace.isGroupedByDate(),
                            cellDuration: cellDuration,
                            cellDurationInMinutes: workspace.option("cellDuration"),
                            viewDataProvider: workspace.viewDataProvider,
                            supportAllDayRow: workspace.supportAllDayRow(),
                            dateRange: workspace.getDateRange(),
                            intervalDuration: workspace.getIntervalDuration(),
                            allDayIntervalDuration: workspace.getIntervalDuration(true),
                            isVerticalGroupOrientation: workspace.isVerticalOrientation(),
                            DOMMetaData: DOMMetaData,
                            instance: this.instance,
                            agendaDuration: workspace.option("agendaDuration")
                        }
                    };
                    _proto.createAppointmentsMap = function(items) {
                        const renderingStrategyOptions = this._getRenderingStrategyOptions();
                        const {
                            viewModel: viewModel,
                            positionMap: positionMap
                        } = this.appointmentViewModel.generate(items, renderingStrategyOptions);
                        this._positionMap = positionMap;
                        return viewModel
                    };
                    _proto._isDataChanged = function(data) {
                        const {
                            appointmentDataProvider: appointmentDataProvider
                        } = this.instance;
                        const updatedData = appointmentDataProvider.getUpdatedAppointment();
                        return updatedData === data || appointmentDataProvider.getUpdatedAppointmentKeys().some(item => data[item.key] === item.value)
                    };
                    _proto._isAppointmentShouldAppear = function(currentAppointment, sourceAppointment) {
                        return currentAppointment.needRepaint && sourceAppointment.needRemove
                    };
                    _proto._isSettingChanged = function(settings, sourceSetting) {
                        if (settings.length !== sourceSetting.length) {
                            return true
                        }
                        const createSettingsToCompare = (settings, index) => {
                            const currentSetting = settings[index];
                            const leftVirtualCellCount = currentSetting.leftVirtualCellCount || 0;
                            const topVirtualCellCount = currentSetting.topVirtualCellCount || 0;
                            const columnIndex = currentSetting.columnIndex + leftVirtualCellCount;
                            const rowIndex = currentSetting.rowIndex + topVirtualCellCount;
                            const hMax = currentSetting.reduced ? currentSetting.hMax : void 0;
                            const vMax = currentSetting.reduced ? currentSetting.vMax : void 0;
                            return _extends(_extends({}, currentSetting), {
                                columnIndex: columnIndex,
                                rowIndex: rowIndex,
                                positionByMap: void 0,
                                topVirtualCellCount: void 0,
                                leftVirtualCellCount: void 0,
                                leftVirtualWidth: void 0,
                                topVirtualHeight: void 0,
                                hMax: hMax,
                                vMax: vMax,
                                info: {}
                            })
                        };
                        for (let i = 0; i < settings.length; i++) {
                            const newSettings = createSettingsToCompare(settings, i);
                            const oldSettings = createSettingsToCompare(sourceSetting, i);
                            if (oldSettings) {
                                oldSettings.sortedIndex = newSettings.sortedIndex
                            }
                            if (!(0, _common.equalByValue)(newSettings, oldSettings)) {
                                return true
                            }
                        }
                        return false
                    };
                    _proto._getAssociatedSourceAppointment = function(currentAppointment, sourceAppointments) {
                        for (let i = 0; i < sourceAppointments.length; i++) {
                            const item = sourceAppointments[i];
                            if (item.itemData === currentAppointment.itemData) {
                                return item
                            }
                        }
                        return null
                    };
                    _proto._getDeletedAppointments = function(currentAppointments, sourceAppointments) {
                        const result = [];
                        for (let i = 0; i < sourceAppointments.length; i++) {
                            const sourceAppointment = sourceAppointments[i];
                            const currentAppointment = this._getAssociatedSourceAppointment(sourceAppointment, currentAppointments);
                            if (!currentAppointment) {
                                sourceAppointment.needRemove = true;
                                result.push(sourceAppointment)
                            }
                        }
                        return result
                    };
                    _proto.getRepaintedAppointments = function(currentAppointments, sourceAppointments) {
                        if (0 === sourceAppointments.length || "agenda" === this.appointmentRenderingStrategyName) {
                            return currentAppointments
                        }
                        currentAppointments.forEach(appointment => {
                            const sourceAppointment = this._getAssociatedSourceAppointment(appointment, sourceAppointments);
                            if (sourceAppointment) {
                                const isDataChanged = this._isDataChanged(appointment.itemData);
                                const isSettingChanged = this._isSettingChanged(appointment.settings, sourceAppointment.settings);
                                const isAppointmentShouldAppear = this._isAppointmentShouldAppear(appointment, sourceAppointment);
                                appointment.needRepaint = isDataChanged || isSettingChanged || isAppointmentShouldAppear
                            }
                        });
                        return currentAppointments.concat(this._getDeletedAppointments(currentAppointments, sourceAppointments))
                    };
                    _proto.getRenderingStrategyInstance = function() {
                        const renderingStrategy = this.appointmentViewModel.getRenderingStrategy();
                        if (!renderingStrategy) {
                            const options = this._getRenderingStrategyOptions();
                            this.appointmentViewModel.initRenderingStrategy(options)
                        }
                        return this.appointmentViewModel.getRenderingStrategy()
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(AppointmentLayoutManager, [{
                        key: "appointmentRenderingStrategyName",
                        get: function() {
                            return (0, _utils.getAppointmentRenderingStrategyName)(this.instance.currentViewType)
                        }
                    }]);
                    return AppointmentLayoutManager
                }();
                var _default = AppointmentLayoutManager;
                exports.default = _default
            },
        43600:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_classes.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.VIRTUAL_CELL_CLASS = exports.VERTICAL_GROUP_COUNT_CLASSES = exports.TIME_PANEL_CLASS = exports.REDUCED_APPOINTMENT_PARTS_CLASSES = exports.REDUCED_APPOINTMENT_ICON = exports.REDUCED_APPOINTMENT_CLASS = exports.RECURRENCE_APPOINTMENT_CLASS = exports.LAST_GROUP_CELL_CLASS = exports.HEADER_CURRENT_TIME_CELL_CLASS = exports.GROUP_ROW_CLASS = exports.GROUP_HEADER_CONTENT_CLASS = exports.FIXED_CONTAINER_CLASS = exports.FIRST_GROUP_CELL_CLASS = exports.EMPTY_APPOINTMENT_CLASS = exports.DIRECTION_APPOINTMENT_CLASSES = exports.DATE_TABLE_ROW_CLASS = exports.DATE_TABLE_CLASS = exports.APPOINTMENT_ITEM_CLASS = exports.APPOINTMENT_HAS_RESOURCE_COLOR_CLASS = exports.APPOINTMENT_DRAG_SOURCE_CLASS = exports.APPOINTMENT_CONTENT_CLASSES = exports.ALL_DAY_APPOINTMENT_CLASS = exports.AGENDA_LAST_IN_DATE_APPOINTMENT_CLASS = void 0;
                exports.FIXED_CONTAINER_CLASS = "dx-scheduler-fixed-appointments";
                exports.REDUCED_APPOINTMENT_CLASS = "dx-scheduler-appointment-reduced";
                exports.REDUCED_APPOINTMENT_ICON = "dx-scheduler-appointment-reduced-icon";
                exports.RECURRENCE_APPOINTMENT_CLASS = "dx-scheduler-appointment-recurrence";
                exports.EMPTY_APPOINTMENT_CLASS = "dx-scheduler-appointment-empty";
                exports.ALL_DAY_APPOINTMENT_CLASS = "dx-scheduler-all-day-appointment";
                exports.REDUCED_APPOINTMENT_PARTS_CLASSES = {
                    head: "dx-scheduler-appointment-head",
                    body: "dx-scheduler-appointment-body",
                    tail: "dx-scheduler-appointment-tail"
                };
                exports.DIRECTION_APPOINTMENT_CLASSES = {
                    horizontal: "dx-scheduler-appointment-horizontal",
                    vertical: "dx-scheduler-appointment-vertical"
                };
                exports.APPOINTMENT_DRAG_SOURCE_CLASS = "dx-scheduler-appointment-drag-source";
                exports.APPOINTMENT_ITEM_CLASS = "dx-scheduler-appointment";
                exports.APPOINTMENT_CONTENT_CLASSES = {
                    APPOINTMENT_CONTENT_DETAILS: "dx-scheduler-appointment-content-details",
                    RECURRING_ICON: "dx-scheduler-appointment-recurrence-icon",
                    APPOINTMENT_TITLE: "dx-scheduler-appointment-title",
                    APPOINTMENT_DATE: "dx-scheduler-appointment-content-date",
                    ALL_DAY_CONTENT: "dx-scheduler-appointment-content-allday",
                    ITEM: "dx-scheduler-appointment",
                    STRIP: "dx-scheduler-appointment-strip",
                    AGENDA_MARKER: "dx-scheduler-agenda-appointment-marker",
                    AGENDA_RESOURCE_LIST: "dx-scheduler-appointment-resource-list",
                    AGENDA_RESOURCE_LIST_ITEM: "dx-scheduler-appointment-resource-item",
                    AGENDA_RESOURCE_LIST_ITEM_VALUE: "dx-scheduler-appointment-resource-item-value"
                };
                exports.AGENDA_LAST_IN_DATE_APPOINTMENT_CLASS = "dx-scheduler-last-in-date-agenda-appointment";
                exports.APPOINTMENT_HAS_RESOURCE_COLOR_CLASS = "dx-scheduler-appointment-has-resource-color";
                exports.HEADER_CURRENT_TIME_CELL_CLASS = "dx-scheduler-header-panel-current-time-cell";
                exports.VIRTUAL_CELL_CLASS = "dx-scheduler-virtual-cell";
                exports.TIME_PANEL_CLASS = "dx-scheduler-time-panel";
                exports.DATE_TABLE_CLASS = "dx-scheduler-date-table";
                exports.DATE_TABLE_ROW_CLASS = "dx-scheduler-date-table-row";
                exports.GROUP_ROW_CLASS = "dx-scheduler-group-row";
                exports.GROUP_HEADER_CONTENT_CLASS = "dx-scheduler-group-header-content";
                exports.LAST_GROUP_CELL_CLASS = "dx-scheduler-last-group-cell";
                exports.FIRST_GROUP_CELL_CLASS = "dx-scheduler-first-group-cell";
                exports.VERTICAL_GROUP_COUNT_CLASSES = ["dx-scheduler-group-column-count-one", "dx-scheduler-group-column-count-two", "dx-scheduler-group-column-count-three"]
            },
        38088:
            /*!***************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_compact_appointments_helper.js ***!
              \***************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.CompactAppointmentsHelper = void 0;
                var _translator = __webpack_require__( /*! ../../animation/translator */ 31648);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _function_template = __webpack_require__( /*! ../../core/templates/function_template */ 68494);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _position = __webpack_require__( /*! ../../core/utils/position */ 37518);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _utils = __webpack_require__( /*! ../../renovation/ui/scheduler/appointment/overflow_indicator/utils */ 86553);
                var _button = _interopRequireDefault(__webpack_require__( /*! ../../ui/button */ 63008));
                var _m_appointment_adapter = __webpack_require__( /*! ./m_appointment_adapter */ 72734);
                var _m_constants = __webpack_require__( /*! ./m_constants */ 6324);
                var _m_data_structures = __webpack_require__( /*! ./m_data_structures */ 98865);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const COMPACT_APPOINTMENT_COLLECTOR_CLASS = "".concat("dx-scheduler-appointment-collector", "-compact");
                const APPOINTMENT_COLLECTOR_CONTENT_CLASS = "".concat("dx-scheduler-appointment-collector", "-content");
                let CompactAppointmentsHelper = function() {
                    function CompactAppointmentsHelper(instance) {
                        this.instance = instance;
                        this.elements = []
                    }
                    var _proto = CompactAppointmentsHelper.prototype;
                    _proto.render = function(options) {
                        const {
                            isCompact: isCompact,
                            items: items,
                            buttonColor: buttonColor
                        } = options;
                        const template = this._createTemplate(items.data.length, isCompact);
                        const button = this._createCompactButton(template, options);
                        const $button = button.$element();
                        this._makeBackgroundColor($button, items.colors, buttonColor);
                        this._makeBackgroundDarker($button);
                        this.elements.push($button);
                        $button.data("items", this._createTooltipInfos(items));
                        return $button
                    };
                    _proto.clear = function() {
                        this.elements.forEach(button => {
                            button.detach();
                            button.remove()
                        });
                        this.elements = []
                    };
                    _proto._createTooltipInfos = function(items) {
                        return items.data.map((appointment, index) => {
                            var _a;
                            const targetedAdapter = (0, _m_appointment_adapter.createAppointmentAdapter)(appointment, this.instance._dataAccessors, this.instance.timeZoneCalculator).clone();
                            if ((null === (_a = items.settings) || void 0 === _a ? void 0 : _a.length) > 0) {
                                const {
                                    info: info
                                } = items.settings[index];
                                targetedAdapter.startDate = info.sourceAppointment.startDate;
                                targetedAdapter.endDate = info.sourceAppointment.endDate
                            }
                            return new _m_data_structures.AppointmentTooltipInfo(appointment, targetedAdapter.source(), items.colors[index], items.settings[index])
                        })
                    };
                    _proto._onButtonClick = function(e, options) {
                        const $button = (0, _renderer.default)(e.element);
                        this.instance.showAppointmentTooltipCore($button, $button.data("items"), this._getExtraOptionsForTooltip(options, $button))
                    };
                    _proto._getExtraOptionsForTooltip = function(options, $appointmentCollector) {
                        return {
                            clickEvent: this._clickEvent(options.onAppointmentClick).bind(this),
                            dragBehavior: options.allowDrag && this._createTooltipDragBehavior($appointmentCollector).bind(this),
                            dropDownAppointmentTemplate: this.instance.option().dropDownAppointmentTemplate,
                            isButtonClick: true
                        }
                    };
                    _proto._clickEvent = function(onAppointmentClick) {
                        return e => {
                            const clickEventArgs = this.instance._createEventArgs(e);
                            onAppointmentClick(clickEventArgs)
                        }
                    };
                    _proto._createTooltipDragBehavior = function($appointmentCollector) {
                        return e => {
                            const $element = (0, _renderer.default)(e.element);
                            const $schedulerElement = (0, _renderer.default)(this.instance.element());
                            const workSpace = this.instance.getWorkSpace();
                            const initialPosition = (0, _translator.locate)($appointmentCollector);
                            const options = {
                                filter: ".".concat(_m_constants.LIST_ITEM_CLASS),
                                isSetCursorOffset: true,
                                initialPosition: initialPosition,
                                getItemData: itemElement => {
                                    var _a;
                                    return null === (_a = (0, _renderer.default)(itemElement).data(_m_constants.LIST_ITEM_DATA_KEY)) || void 0 === _a ? void 0 : _a.appointment
                                },
                                getItemSettings: (_, event) => event.itemSettings
                            };
                            workSpace._createDragBehaviorBase($element, $schedulerElement, options)
                        }
                    };
                    _proto._getCollectorOffset = function(width, cellWidth) {
                        return cellWidth - width - this._getCollectorRightOffset()
                    };
                    _proto._getCollectorRightOffset = function() {
                        return this.instance.getRenderingStrategyInstance()._isCompactTheme() ? 1 : 5
                    };
                    _proto._makeBackgroundDarker = function(button) {
                        button.css("boxShadow", "inset ".concat((0, _position.getBoundingRect)(button.get(0)).width, "px 0 0 0 rgba(0, 0, 0, 0.3)"))
                    };
                    _proto._makeBackgroundColor = function($button, colors, color) {
                        _deferred.when.apply(null, colors).done(function() {
                            this._makeBackgroundColorCore($button, color, [...arguments])
                        }.bind(this))
                    };
                    _proto._makeBackgroundColorCore = function($button, color, itemColors) {
                        color && color.done(color => {
                            const backgroundColor = (0, _utils.getOverflowIndicatorColor)(color, itemColors);
                            if (backgroundColor) {
                                $button.css("backgroundColor", backgroundColor)
                            }
                        })
                    };
                    _proto._setPosition = function(element, position) {
                        (0, _translator.move)(element, {
                            top: position.top,
                            left: position.left
                        })
                    };
                    _proto._createCompactButton = function(template, options) {
                        const $button = this._createCompactButtonElement(options);
                        return this.instance._createComponent($button, _button.default, {
                            type: "default",
                            width: options.width,
                            height: options.height,
                            onClick: e => this._onButtonClick(e, options),
                            template: this._renderTemplate(template, options.items, options.isCompact)
                        })
                    };
                    _proto._createCompactButtonElement = function(_ref) {
                        let {
                            isCompact: isCompact,
                            $container: $container,
                            coordinates: coordinates
                        } = _ref;
                        const result = (0, _renderer.default)("<div>").addClass("dx-scheduler-appointment-collector").toggleClass(COMPACT_APPOINTMENT_COLLECTOR_CLASS, isCompact).appendTo($container);
                        this._setPosition(result, coordinates);
                        return result
                    };
                    _proto._renderTemplate = function(template, items, isCompact) {
                        return new _function_template.FunctionTemplate(options => template.render({
                            model: {
                                appointmentCount: items.data.length,
                                isCompact: isCompact
                            },
                            container: options.container
                        }))
                    };
                    _proto._createTemplate = function(count, isCompact) {
                        this._initButtonTemplate(count, isCompact);
                        return this.instance._getAppointmentTemplate("appointmentCollectorTemplate")
                    };
                    _proto._initButtonTemplate = function(count, isCompact) {
                        this.instance._templateManager.addDefaultTemplates({
                            appointmentCollector: new _function_template.FunctionTemplate(options => this._createButtonTemplate(count, (0, _renderer.default)(options.container), isCompact))
                        })
                    };
                    _proto._createButtonTemplate = function(appointmentCount, element, isCompact) {
                        const text = isCompact ? appointmentCount : _message.default.getFormatter("dxScheduler-moreAppointments")(appointmentCount);
                        return element.append((0, _renderer.default)("<span>").text(text)).addClass(APPOINTMENT_COLLECTOR_CONTENT_CLASS)
                    };
                    return CompactAppointmentsHelper
                }();
                exports.CompactAppointmentsHelper = CompactAppointmentsHelper
            },
        6324:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_constants.js ***!
              \*********************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.VIEWS = exports.LIST_ITEM_DATA_KEY = exports.LIST_ITEM_CLASS = exports.HORIZONTAL_GROUP_ORIENTATION = exports.APPOINTMENT_SETTINGS_KEY = void 0;
                exports.LIST_ITEM_DATA_KEY = "dxListItemData";
                exports.LIST_ITEM_CLASS = "dx-list-item";
                exports.APPOINTMENT_SETTINGS_KEY = "dxAppointmentSettings";
                exports.HORIZONTAL_GROUP_ORIENTATION = "horizontal";
                exports.VIEWS = {
                    DAY: "day",
                    WEEK: "week",
                    WORK_WEEK: "workWeek",
                    MONTH: "month",
                    TIMELINE_DAY: "timelineDay",
                    TIMELINE_WEEK: "timelineWeek",
                    TIMELINE_WORK_WEEK: "timelineWorkWeek",
                    TIMELINE_MONTH: "timelineMonth",
                    AGENDA: "agenda"
                }
            },
        98865:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_data_structures.js ***!
              \***************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.AppointmentTooltipInfo = void 0;
                exports.AppointmentTooltipInfo = function(appointment) {
                    let targetedAppointment = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : void 0;
                    let color = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : [];
                    let settings = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : [];
                    this.appointment = appointment;
                    this.targetedAppointment = targetedAppointment;
                    this.color = color;
                    this.settings = settings
                }
            },
        90006:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_date_adapter.js ***!
              \************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _date = (obj = __webpack_require__( /*! ../../core/utils/date */ 91198), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }
                const toMs = _date.default.dateToMilliseconds;
                let DateAdapterCore = function() {
                    function DateAdapterCore(source) {
                        this._source = new Date(source.getTime ? source.getTime() : source)
                    }
                    var _proto = DateAdapterCore.prototype;
                    _proto.result = function() {
                        return this._source
                    };
                    _proto.getTimezoneOffset = function() {
                        let format = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : void 0;
                        const value = this._source.getTimezoneOffset();
                        if ("minute" === format) {
                            return value * toMs("minute")
                        }
                        return value
                    };
                    _proto.getTime = function() {
                        return this._source.getTime()
                    };
                    _proto.setTime = function(value) {
                        this._source.setTime(value);
                        return this
                    };
                    _proto.addTime = function(value) {
                        this._source.setTime(this._source.getTime() + value);
                        return this
                    };
                    _proto.setMinutes = function(value) {
                        this._source.setMinutes(value);
                        return this
                    };
                    _proto.addMinutes = function(value) {
                        this._source.setMinutes(this._source.getMinutes() + value);
                        return this
                    };
                    _proto.subtractMinutes = function(value) {
                        this._source.setMinutes(this._source.getMinutes() - value);
                        return this
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(DateAdapterCore, [{
                        key: "source",
                        get: function() {
                            return this._source
                        }
                    }]);
                    return DateAdapterCore
                }();
                var _default = date => new DateAdapterCore(date);
                exports.default = _default
            },
        30906:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_expression_utils.js ***!
              \****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.ExpressionUtils = void 0;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                const ExpressionUtils = {
                    getField: (dataAccessors, field, obj) => {
                        if (!(0, _type.isDefined)(dataAccessors.getter[field])) {
                            return
                        }
                        return dataAccessors.getter[field](obj)
                    },
                    setField: (dataAccessors, field, obj, value) => {
                        if (!(0, _type.isDefined)(dataAccessors.setter[field])) {
                            return
                        }
                        dataAccessors.setter[field](obj, value);
                        return obj
                    }
                };
                exports.ExpressionUtils = ExpressionUtils
            },
        28066:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_loading.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.hide = function() {
                    if (!loading) {
                        return (new _deferred.Deferred).resolve()
                    }
                    return loading.hide().done(removeLoadPanel).promise()
                };
                exports.show = function(options) {
                    removeLoadPanel();
                    loading = function(options) {
                        return new _load_panel.default((0, _renderer.default)("<div>").appendTo(options && options.container || (0, _view_port.value)()), options)
                    }(options);
                    return loading.show()
                };
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _view_port = __webpack_require__( /*! ../../core/utils/view_port */ 77695);
                var _load_panel = _interopRequireDefault(__webpack_require__( /*! ../../ui/load_panel */ 97218));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                let loading = null;
                const removeLoadPanel = function() {
                    if (!loading) {
                        return
                    }
                    loading.$element().remove();
                    loading = null
                }
            },
        38227:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_recurrence.js ***!
              \**********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.getRecurrenceProcessor = getRecurrenceProcessor;
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../core/errors */ 17381));
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 91198));
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _rrule = __webpack_require__( /*! rrule */ 98919);
                var _m_utils_time_zone = _interopRequireDefault(__webpack_require__( /*! ./m_utils_time_zone */ 57880));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const toMs = _date.default.dateToMilliseconds;
                const ruleNames = ["freq", "interval", "byday", "byweekno", "byyearday", "bymonth", "bymonthday", "count", "until", "byhour", "byminute", "bysecond", "bysetpos", "wkst"];
                const freqNames = ["DAILY", "WEEKLY", "MONTHLY", "YEARLY", "SECONDLY", "MINUTELY", "HOURLY"];
                const days = {
                    SU: 0,
                    MO: 1,
                    TU: 2,
                    WE: 3,
                    TH: 4,
                    FR: 5,
                    SA: 6
                };
                const loggedWarnings = [];
                const RRULE_BROKEN_TIMEZONES = ["Etc/GMT-13", "MIT", "Pacific/Apia", "Pacific/Enderbury", "Pacific/Tongatapu", "Etc/GMT-14", "Pacific/Kiritimati"];
                let recurrence = null;

                function getRecurrenceProcessor() {
                    if (!recurrence) {
                        recurrence = new RecurrenceProcessor
                    }
                    return recurrence
                }
                let RecurrenceProcessor = function() {
                    function RecurrenceProcessor() {
                        this.rRule = null;
                        this.rRuleSet = null;
                        this.validator = new RecurrenceValidator
                    }
                    var _proto = RecurrenceProcessor.prototype;
                    _proto.generateDates = function(options) {
                        const recurrenceRule = this.evalRecurrenceRule(options.rule);
                        const {
                            rule: rule
                        } = recurrenceRule;
                        if (!recurrenceRule.isValid || !rule.freq) {
                            return []
                        }
                        const rruleIntervalParams = this._createRruleIntervalParams(options);
                        this._initializeRRule(options, rruleIntervalParams.startIntervalDate, rule.until);
                        return this.rRuleSet.between(rruleIntervalParams.minViewDate, rruleIntervalParams.maxViewDate, true).filter(date => date.getTime() + rruleIntervalParams.appointmentDuration >= rruleIntervalParams.minViewTime).map(date => this._convertRruleResult(rruleIntervalParams, options, date))
                    };
                    _proto._createRruleIntervalParams = function(options) {
                        const {
                            start: start,
                            min: min,
                            max: max,
                            appointmentTimezoneOffset: appointmentTimezoneOffset
                        } = options;
                        const clientOffsets_startDate = _m_utils_time_zone.default.getClientTimezoneOffset(start),
                            clientOffsets_minViewDate = _m_utils_time_zone.default.getClientTimezoneOffset(min),
                            clientOffsets_maxViewDate = _m_utils_time_zone.default.getClientTimezoneOffset(max);
                        const duration = options.end ? options.end.getTime() - options.start.getTime() : 0;
                        const startIntervalDate = _m_utils_time_zone.default.setOffsetsToDate(options.start, [-clientOffsets_startDate, appointmentTimezoneOffset]);
                        const minViewTime = options.min.getTime() - clientOffsets_minViewDate + appointmentTimezoneOffset;
                        const minViewDate = new Date(minViewTime - duration);
                        const maxViewDate = _m_utils_time_zone.default.setOffsetsToDate(options.max, [-clientOffsets_maxViewDate, appointmentTimezoneOffset]);
                        const startDateDSTDifferenceMs = _m_utils_time_zone.default.getDiffBetweenClientTimezoneOffsets(options.start, startIntervalDate);
                        const switchToSummerTime = startDateDSTDifferenceMs < 0;
                        return {
                            startIntervalDate: startIntervalDate,
                            minViewTime: minViewTime,
                            minViewDate: minViewDate,
                            maxViewDate: maxViewDate,
                            startIntervalDateDSTShift: switchToSummerTime ? 0 : startDateDSTDifferenceMs,
                            appointmentDuration: duration
                        }
                    };
                    _proto._convertRruleResult = function(rruleIntervalParams, options, rruleDate) {
                        const convertedBackDate = _m_utils_time_zone.default.setOffsetsToDate(rruleDate, [...this._getLocalMachineOffset(rruleDate), -options.appointmentTimezoneOffset, rruleIntervalParams.startIntervalDateDSTShift]);
                        const convertedDateDSTShift = _m_utils_time_zone.default.getDiffBetweenClientTimezoneOffsets(convertedBackDate, rruleDate);
                        const switchToSummerTime = convertedDateDSTShift < 0;
                        const resultDate = _m_utils_time_zone.default.setOffsetsToDate(convertedBackDate, [convertedDateDSTShift]);
                        const resultDateDSTShift = _m_utils_time_zone.default.getDiffBetweenClientTimezoneOffsets(resultDate, convertedBackDate);
                        if (resultDateDSTShift && switchToSummerTime) {
                            return new Date(resultDate.getTime() + resultDateDSTShift)
                        }
                        return resultDate
                    };
                    _proto._getLocalMachineOffset = function(rruleDate) {
                        const machineTimezoneOffset = _m_utils_time_zone.default.getClientTimezoneOffset(rruleDate);
                        const machineTimezoneName = _date.default.getMachineTimezoneName();
                        const result = [machineTimezoneOffset];
                        const isTimezoneOffsetInBrokenRange = machineTimezoneOffset / 36e5 <= -13;
                        const isTimezoneNameInBrokenNames = !machineTimezoneName || RRULE_BROKEN_TIMEZONES.some(timezone => machineTimezoneName.includes(timezone));
                        if (isTimezoneOffsetInBrokenRange && isTimezoneNameInBrokenNames) {
                            result.push(-864e5)
                        }
                        return result
                    };
                    _proto.hasRecurrence = function(options) {
                        return !!this.generateDates(options).length
                    };
                    _proto.evalRecurrenceRule = function(rule) {
                        const result = {
                            rule: {},
                            isValid: false
                        };
                        if (rule) {
                            result.rule = this._parseRecurrenceRule(rule);
                            result.isValid = this.validator.validateRRule(result.rule, rule)
                        }
                        return result
                    };
                    _proto.isValidRecurrenceRule = function(rule) {
                        return this.evalRecurrenceRule(rule).isValid
                    };
                    _proto.daysFromByDayRule = function(rule) {
                        let result = [];
                        if (rule.byday) {
                            if (Array.isArray(rule.byday)) {
                                result = rule.byday
                            } else {
                                result = rule.byday.split(",")
                            }
                        }
                        return result.map(item => {
                            const match = item.match(/[A-Za-z]+/);
                            return !!match && match[0]
                        }).filter(item => !!item)
                    };
                    _proto.getAsciiStringByDate = function(date) {
                        const currentOffset = date.getTimezoneOffset() * toMs("minute");
                        const offsetDate = new Date(date.getTime() + currentOffset);
                        return "".concat(offsetDate.getFullYear() + "0".concat(offsetDate.getMonth() + 1).slice(-2) + "0".concat(offsetDate.getDate()).slice(-2), "T").concat("0".concat(offsetDate.getHours()).slice(-2)).concat("0".concat(offsetDate.getMinutes()).slice(-2)).concat("0".concat(offsetDate.getSeconds()).slice(-2), "Z")
                    };
                    _proto.getRecurrenceString = function(object) {
                        if (!object || !object.freq) {
                            return
                        }
                        let result = "";
                        for (const field in object) {
                            let value = object[field];
                            if ("interval" === field && value < 2) {
                                continue
                            }
                            if ("until" === field) {
                                value = this.getAsciiStringByDate(value)
                            }
                            result += "".concat(field, "=").concat(value, ";")
                        }
                        result = result.substring(0, result.length - 1);
                        return result.toUpperCase()
                    };
                    _proto._parseExceptionToRawArray = function(value) {
                        return value.match(/(\d{4})(\d{2})(\d{2})(T(\d{2})(\d{2})(\d{2}))?(Z)?/)
                    };
                    _proto.getDateByAsciiString = function(exceptionText) {
                        if ("string" !== typeof exceptionText) {
                            return exceptionText
                        }
                        const result = this._parseExceptionToRawArray(exceptionText);
                        if (!result) {
                            return null
                        }
                        const [year, month, date, hours, minutes, seconds, isUtc] = this._createDateTuple(result);
                        if (isUtc) {
                            return new Date(Date.UTC(year, month, date, hours, minutes, seconds))
                        }
                        return new Date(year, month, date, hours, minutes, seconds)
                    };
                    _proto._dispose = function() {
                        if (this.rRuleSet) {
                            delete this.rRuleSet;
                            this.rRuleSet = null
                        }
                        if (this.rRule) {
                            delete this.rRule;
                            this.rRule = null
                        }
                    };
                    _proto._getTimeZoneOffset = function() {
                        return (new Date).getTimezoneOffset()
                    };
                    _proto._initializeRRule = function(options, startDateUtc, until) {
                        const ruleOptions = _rrule.RRule.parseString(options.rule);
                        const {
                            firstDayOfWeek: firstDayOfWeek
                        } = options;
                        ruleOptions.dtstart = startDateUtc;
                        if (!ruleOptions.wkst && firstDayOfWeek) {
                            const weekDayNumbers = [6, 0, 1, 2, 3, 4, 5];
                            ruleOptions.wkst = weekDayNumbers[firstDayOfWeek]
                        }
                        if (until) {
                            ruleOptions.until = _m_utils_time_zone.default.setOffsetsToDate(until, [-_m_utils_time_zone.default.getClientTimezoneOffset(until), options.appointmentTimezoneOffset])
                        }
                        this._createRRule(ruleOptions);
                        if (options.exception) {
                            const exceptionStrings = options.exception;
                            const exceptionDates = exceptionStrings.split(",").map(rule => this.getDateByAsciiString(rule));
                            exceptionDates.forEach(date => {
                                if (options.getPostProcessedException) {
                                    date = options.getPostProcessedException(date)
                                }
                                const utcDate = _m_utils_time_zone.default.setOffsetsToDate(date, [-_m_utils_time_zone.default.getClientTimezoneOffset(date), options.appointmentTimezoneOffset]);
                                this.rRuleSet.exdate(utcDate)
                            })
                        }
                    };
                    _proto._createRRule = function(ruleOptions) {
                        this._dispose();
                        this.rRuleSet = new _rrule.RRuleSet;
                        this.rRule = new _rrule.RRule(ruleOptions);
                        this.rRuleSet.rrule(this.rRule)
                    };
                    _proto._parseRecurrenceRule = function(recurrence) {
                        const ruleObject = {};
                        const ruleParts = recurrence.split(";");
                        for (let i = 0, len = ruleParts.length; i < len; i++) {
                            const rule = ruleParts[i].split("=");
                            const ruleName = rule[0].toLowerCase();
                            const ruleValue = rule[1];
                            ruleObject[ruleName] = ruleValue
                        }
                        const count = parseInt(ruleObject.count);
                        if (!isNaN(count)) {
                            ruleObject.count = count
                        }
                        if (ruleObject.interval) {
                            const interval = parseInt(ruleObject.interval);
                            if (!isNaN(interval)) {
                                ruleObject.interval = interval
                            }
                        } else {
                            ruleObject.interval = 1
                        }
                        if (ruleObject.freq && ruleObject.until) {
                            ruleObject.until = this.getDateByAsciiString(ruleObject.until)
                        }
                        return ruleObject
                    };
                    _proto._createDateTuple = function(parseResult) {
                        const isUtc = void 0 !== parseResult[8];
                        parseResult.shift();
                        if (void 0 === parseResult[3]) {
                            parseResult.splice(3)
                        } else {
                            parseResult.splice(3, 1);
                            parseResult.splice(6)
                        }
                        parseResult[1]--;
                        parseResult.unshift(null);
                        return [parseInt(parseResult[1]), parseInt(parseResult[2]), parseInt(parseResult[3]), parseInt(parseResult[4]) || 0, parseInt(parseResult[5]) || 0, parseInt(parseResult[6]) || 0, isUtc]
                    };
                    return RecurrenceProcessor
                }();
                let RecurrenceValidator = function() {
                    function RecurrenceValidator() {}
                    var _proto2 = RecurrenceValidator.prototype;
                    _proto2.validateRRule = function(rule, recurrence) {
                        if (this._brokenRuleNameExists(rule) || !freqNames.includes(rule.freq) || this._wrongCountRule(rule) || this._wrongIntervalRule(rule) || this._wrongDayOfWeek(rule) || this._wrongByMonthDayRule(rule) || this._wrongByMonth(rule) || this._wrongUntilRule(rule)) {
                            this._logBrokenRule(recurrence);
                            return false
                        }
                        return true
                    };
                    _proto2._wrongUntilRule = function(rule) {
                        let wrongUntil = false;
                        const {
                            until: until
                        } = rule;
                        if (void 0 !== until && !(until instanceof Date)) {
                            wrongUntil = true
                        }
                        return wrongUntil
                    };
                    _proto2._wrongCountRule = function(rule) {
                        let wrongCount = false;
                        const {
                            count: count
                        } = rule;
                        if (count && "string" === typeof count) {
                            wrongCount = true
                        }
                        return wrongCount
                    };
                    _proto2._wrongByMonthDayRule = function(rule) {
                        let wrongByMonthDay = false;
                        const byMonthDay = rule.bymonthday;
                        if (byMonthDay && isNaN(parseInt(byMonthDay))) {
                            wrongByMonthDay = true
                        }
                        return wrongByMonthDay
                    };
                    _proto2._wrongByMonth = function(rule) {
                        let wrongByMonth = false;
                        const byMonth = rule.bymonth;
                        if (byMonth && isNaN(parseInt(byMonth))) {
                            wrongByMonth = true
                        }
                        return wrongByMonth
                    };
                    _proto2._wrongIntervalRule = function(rule) {
                        let wrongInterval = false;
                        const {
                            interval: interval
                        } = rule;
                        if (interval && "string" === typeof interval) {
                            wrongInterval = true
                        }
                        return wrongInterval
                    };
                    _proto2._wrongDayOfWeek = function(rule) {
                        const byDay = rule.byday;
                        const daysByRule = getRecurrenceProcessor().daysFromByDayRule(rule);
                        let brokenDaysExist = false;
                        if ("" === byDay) {
                            brokenDaysExist = true
                        }(0, _iterator.each)(daysByRule, (_, day) => {
                            if (!Object.prototype.hasOwnProperty.call(days, day)) {
                                brokenDaysExist = true;
                                return false
                            }
                            return
                        });
                        return brokenDaysExist
                    };
                    _proto2._brokenRuleNameExists = function(rule) {
                        let brokenRuleExists = false;
                        (0, _iterator.each)(rule, ruleName => {
                            if (!ruleNames.includes(ruleName)) {
                                brokenRuleExists = true;
                                return false
                            }
                            return
                        });
                        return brokenRuleExists
                    };
                    _proto2._logBrokenRule = function(recurrence) {
                        if (!loggedWarnings.includes(recurrence)) {
                            _errors.default.log("W0006", recurrence);
                            loggedWarnings.push(recurrence)
                        }
                    };
                    return RecurrenceValidator
                }()
            },
        70184:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_recurrence_editor.js ***!
              \*****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                __webpack_require__( /*! ../../ui/radio_group */ 14305);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 73176));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 91198));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../localization/date */ 91500));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _types = __webpack_require__( /*! ../../renovation/ui/scheduler/timeZoneCalculator/types */ 75296);
                var _button_group = _interopRequireDefault(__webpack_require__( /*! ../../ui/button_group */ 28236));
                var _date_box = _interopRequireDefault(__webpack_require__( /*! ../../ui/date_box */ 29589));
                var _editor = _interopRequireDefault(__webpack_require__( /*! ../../ui/editor/editor */ 96452));
                var _form = _interopRequireDefault(__webpack_require__( /*! ../../ui/form */ 17737));
                var _number_box = _interopRequireDefault(__webpack_require__( /*! ../../ui/number_box */ 34171));
                var _themes = __webpack_require__( /*! ../../ui/themes */ 75811);
                var _m_recurrence = __webpack_require__( /*! ./m_recurrence */ 38227);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const REPEAT_END_EDITOR = "dx-recurrence-repeat-end";
                const INTERVAL_EDITOR = "dx-recurrence-numberbox-interval";
                const frequenciesMessages = [{
                    recurrence: "dxScheduler-recurrenceHourly",
                    value: "hourly"
                }, {
                    recurrence: "dxScheduler-recurrenceDaily",
                    value: "daily"
                }, {
                    recurrence: "dxScheduler-recurrenceWeekly",
                    value: "weekly"
                }, {
                    recurrence: "dxScheduler-recurrenceMonthly",
                    value: "monthly"
                }, {
                    recurrence: "dxScheduler-recurrenceYearly",
                    value: "yearly"
                }];
                const frequencies = frequenciesMessages.map(item => ({
                    text: () => _message.default.format(item.recurrence),
                    value: item.value
                }));
                const repeatEndTypes = [{
                    type: "never"
                }, {
                    type: "until"
                }, {
                    type: "count"
                }];
                const days = ["SU", "MO", "TU", "WE", "TH", "FR", "SA"];
                const getStylingModeFunc = () => (0, _themes.isFluent)((0, _themes.current)()) ? "filled" : void 0;
                let RecurrenceRule = function() {
                    function RecurrenceRule(rule) {
                        this._recurrenceProcessor = (0, _m_recurrence.getRecurrenceProcessor)();
                        this._recurrenceProcessor = (0, _m_recurrence.getRecurrenceProcessor)();
                        this._recurrenceRule = this._recurrenceProcessor.evalRecurrenceRule(rule).rule
                    }
                    var _proto = RecurrenceRule.prototype;
                    _proto.makeRules = function(string) {
                        this._recurrenceRule = this._recurrenceProcessor.evalRecurrenceRule(string).rule
                    };
                    _proto.makeRule = function(field, value) {
                        if (!value || Array.isArray(value) && !value.length) {
                            delete this._recurrenceRule[field];
                            return
                        }
                        if ((0, _type.isDefined)(field)) {
                            if ("until" === field) {
                                delete this._recurrenceRule.count
                            }
                            if ("count" === field) {
                                delete this._recurrenceRule.until
                            }
                            this._recurrenceRule[field] = value
                        }
                    };
                    _proto.getRepeatEndRule = function() {
                        const rules = this._recurrenceRule;
                        if ("count" in rules) {
                            return "count"
                        }
                        if ("until" in rules) {
                            return "until"
                        }
                        return "never"
                    };
                    _proto.getRecurrenceString = function() {
                        return this._recurrenceProcessor.getRecurrenceString(this._recurrenceRule)
                    };
                    _proto.getRules = function() {
                        return this._recurrenceRule
                    };
                    _proto.getDaysFromByDayRule = function() {
                        return this._recurrenceProcessor.daysFromByDayRule(this._recurrenceRule)
                    };
                    return RecurrenceRule
                }();
                let RecurrenceEditor = function(_Editor) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(RecurrenceEditor, _Editor);

                    function RecurrenceEditor() {
                        return _Editor.apply(this, arguments) || this
                    }
                    var _proto2 = RecurrenceEditor.prototype;
                    _proto2._getDefaultOptions = function() {
                        const defaultOptions = _Editor.prototype._getDefaultOptions.call(this);
                        return (0, _extend.extend)(defaultOptions, {
                            value: null,
                            startDate: new Date,
                            firstDayOfWeek: void 0
                        })
                    };
                    _proto2._getFirstDayOfWeek = function() {
                        const firstDayOfWeek = this.option("firstDayOfWeek");
                        return (0, _type.isDefined)(firstDayOfWeek) ? firstDayOfWeek : _date2.default.firstDayOfWeekIndex()
                    };
                    _proto2._createComponent = function(element, name) {
                        let config = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                        this._extendConfig(config, {
                            readOnly: this.option("readOnly")
                        });
                        return _Editor.prototype._createComponent.call(this, element, name, config)
                    };
                    _proto2._init = function() {
                        _Editor.prototype._init.call(this);
                        this._recurrenceRule = new RecurrenceRule(this.option("value"))
                    };
                    _proto2._render = function() {
                        _Editor.prototype._render.call(this);
                        this.$element().addClass("dx-recurrence-editor");
                        this._$container = (0, _renderer.default)("<div>").addClass("dx-recurrence-editor-container").appendTo(this.$element());
                        this._prepareEditors();
                        this._renderEditors(this._$container)
                    };
                    _proto2.getEditorByField = function(fieldName) {
                        let editor = this.getRecurrenceForm().getEditor(fieldName);
                        if (!(0, _type.isDefined)(editor)) {
                            switch (fieldName) {
                                case "byday":
                                    editor = this._weekEditor;
                                    break;
                                case "count":
                                    editor = this._repeatCountEditor;
                                    break;
                                case "until":
                                    editor = this._repeatUntilDate
                            }
                        }
                        return editor
                    };
                    _proto2._prepareEditors = function() {
                        const freq = (this._recurrenceRule.getRules().freq || frequenciesMessages[1].value).toLowerCase();
                        this._editors = [this._createFreqEditor(freq), this._createIntervalEditor(freq), this._createRepeatOnLabel(freq), {
                            itemType: "group",
                            cssClass: "dx-recurrence-repeat-on",
                            colCount: 2,
                            colCountByScreen: {
                                xs: 2
                            },
                            items: this._createRepeatOnEditor(freq)
                        }, {
                            itemType: "group",
                            items: this._createRepeatEndEditor()
                        }];
                        return this._editors
                    };
                    _proto2._createFreqEditor = function(freq) {
                        return {
                            dataField: "freq",
                            name: "FREQ",
                            editorType: "dxSelectBox",
                            cssClass: "dx-recurrence-selectbox-freq",
                            editorOptions: {
                                stylingMode: getStylingModeFunc(),
                                items: frequencies,
                                value: freq,
                                field: "freq",
                                valueExpr: "value",
                                displayExpr: "text",
                                layout: "horizontal",
                                elementAttr: {
                                    class: "dx-recurrence-selectbox-freq"
                                },
                                onValueChanged: args => this._valueChangedHandler(args)
                            },
                            label: {
                                text: _message.default.format("dxScheduler-editorLabelRecurrence")
                            }
                        }
                    };
                    _proto2._createIntervalEditor = function(freq) {
                        const interval = this._recurrenceRule.getRules().interval || 1;
                        return {
                            itemType: "group",
                            colCount: 2,
                            cssClass: "".concat(INTERVAL_EDITOR).concat("-wrapper"),
                            colCountByScreen: {
                                xs: 2
                            },
                            items: [{
                                dataField: "interval",
                                editorType: "dxNumberBox",
                                editorOptions: {
                                    stylingMode: getStylingModeFunc(),
                                    format: "#",
                                    width: 70,
                                    min: 1,
                                    field: "interval",
                                    value: interval,
                                    showSpinButtons: true,
                                    useLargeSpinButtons: false,
                                    elementAttr: {
                                        class: INTERVAL_EDITOR
                                    },
                                    onValueChanged: args => this._valueChangedHandler(args)
                                },
                                label: {
                                    text: _message.default.format("dxScheduler-recurrenceRepeatEvery")
                                }
                            }, {
                                name: "intervalLabel",
                                cssClass: "".concat(INTERVAL_EDITOR).concat("-label"),
                                template: () => _message.default.format("dxScheduler-recurrenceRepeat".concat(freq.charAt(0).toUpperCase()).concat(freq.substr(1).toLowerCase()))
                            }]
                        }
                    };
                    _proto2._createRepeatOnLabel = function(freq) {
                        return {
                            itemType: "group",
                            cssClass: "".concat("dx-recurrence-repeat-on").concat("-label"),
                            items: [{
                                name: "repeatOnLabel",
                                colSpan: 2,
                                template: () => _message.default.format("dxScheduler-recurrenceRepeatOn"),
                                visible: freq && "daily" !== freq && "hourly" !== freq
                            }]
                        }
                    };
                    _proto2._createRepeatOnEditor = function(freq) {
                        return [this._createByDayEditor(freq), this._createByMonthEditor(freq), this._createByMonthDayEditor(freq)]
                    };
                    _proto2._createByDayEditor = function(freq) {
                        return {
                            dataField: "byday",
                            colSpan: 2,
                            template: (_, itemElement) => {
                                const firstDayOfWeek = this._getFirstDayOfWeek();
                                const byDay = this._daysOfWeekByRules();
                                const localDaysNames = _date2.default.getDayNames("abbreviated");
                                const dayNames = days.slice(firstDayOfWeek).concat(days.slice(0, firstDayOfWeek));
                                const itemsButtonGroup = localDaysNames.slice(firstDayOfWeek).concat(localDaysNames.slice(0, firstDayOfWeek)).map((item, index) => ({
                                    text: item,
                                    key: dayNames[index]
                                }));
                                this._$repeatOnWeek = (0, _renderer.default)("<div>").addClass("dx-recurrence-button-group").appendTo(itemElement);
                                this._weekEditor = this._createComponent(this._$repeatOnWeek, _button_group.default, {
                                    items: itemsButtonGroup,
                                    field: "byday",
                                    selectionMode: "multiple",
                                    selectedItemKeys: byDay,
                                    keyExpr: "key",
                                    onSelectionChanged: e => {
                                        const selectedItemKeys = e.component.option("selectedItemKeys");
                                        const selectedKeys = (null === selectedItemKeys || void 0 === selectedItemKeys ? void 0 : selectedItemKeys.length) ? selectedItemKeys : this._getDefaultByDayValue();
                                        this._recurrenceRule.makeRule("byday", selectedKeys);
                                        this._changeEditorValue()
                                    }
                                })
                            },
                            visible: "weekly" === freq,
                            label: {
                                visible: false
                            }
                        }
                    };
                    _proto2._createByMonthEditor = function(freq) {
                        const monthsName = _date2.default.getMonthNames("wide");
                        const months = [...Array(12)].map((_, i) => ({
                            value: "".concat(i + 1),
                            text: monthsName[i]
                        }));
                        return {
                            dataField: "bymonth",
                            editorType: "dxSelectBox",
                            editorOptions: {
                                stylingMode: getStylingModeFunc(),
                                field: "bymonth",
                                items: months,
                                value: this._monthOfYearByRules(),
                                width: 120,
                                displayExpr: "text",
                                valueExpr: "value",
                                elementAttr: {
                                    class: "dx-recurrence-selectbox-month-of-year"
                                },
                                onValueChanged: args => this._valueChangedHandler(args)
                            },
                            visible: "yearly" === freq,
                            label: {
                                visible: false
                            }
                        }
                    };
                    _proto2._createByMonthDayEditor = function(freq) {
                        return {
                            dataField: "bymonthday",
                            editorType: "dxNumberBox",
                            editorOptions: {
                                stylingMode: getStylingModeFunc(),
                                min: 1,
                                max: 31,
                                format: "#",
                                width: 70,
                                field: "bymonthday",
                                showSpinButtons: true,
                                useLargeSpinButtons: false,
                                value: this._dayOfMonthByRules(),
                                elementAttr: {
                                    class: "dx-recurrence-numberbox-day-of-month"
                                },
                                onValueChanged: args => this._valueChangedHandler(args)
                            },
                            visible: "monthly" === freq || "yearly" === freq,
                            label: {
                                visible: false
                            }
                        }
                    };
                    _proto2._createRepeatEndEditor = function() {
                        const repeatType = this._recurrenceRule.getRepeatEndRule();
                        return [{
                            dataField: "repeatEnd",
                            editorType: "dxRadioGroup",
                            editorOptions: {
                                items: repeatEndTypes,
                                value: repeatType,
                                valueExpr: "type",
                                field: "repeatEnd",
                                itemTemplate: itemData => {
                                    if ("count" === itemData.type) {
                                        return this._renderRepeatCountEditor()
                                    }
                                    if ("until" === itemData.type) {
                                        return this._renderRepeatUntilEditor()
                                    }
                                    return this._renderDefaultRepeatEnd()
                                },
                                layout: "vertical",
                                elementAttr: {
                                    class: "dx-recurrence-radiogroup-repeat-type"
                                },
                                onValueChanged: args => this._repeatEndValueChangedHandler(args)
                            },
                            label: {
                                text: _message.default.format("dxScheduler-recurrenceEnd")
                            }
                        }]
                    };
                    _proto2._renderEditors = function($container) {
                        this._recurrenceForm = this._createComponent($container, _form.default, {
                            items: this._editors,
                            showValidationSummary: false,
                            scrollingEnabled: true,
                            showColonAfterLabel: false,
                            labelLocation: "top"
                        });
                        this._disableRepeatEndParts()
                    };
                    _proto2._setAriaDescribedBy = function(editor, $label) {
                        const labelId = "label-".concat(new _guid.default);
                        editor.setAria("describedby", labelId);
                        editor.setAria("id", labelId, $label)
                    };
                    _proto2.getRecurrenceForm = function() {
                        return this._recurrenceForm
                    };
                    _proto2.changeValueByVisibility = function(value) {
                        if (value) {
                            if (!this.option("value")) {
                                this._handleDefaults()
                            }
                        } else {
                            this._recurrenceRule.makeRules("");
                            this.option("value", "")
                        }
                    };
                    _proto2._handleDefaults = function() {
                        this._recurrenceRule.makeRule("freq", frequenciesMessages[1].value);
                        this._changeEditorValue()
                    };
                    _proto2._changeEditorValue = function() {
                        this.option("value", this._recurrenceRule.getRecurrenceString() || "")
                    };
                    _proto2._daysOfWeekByRules = function() {
                        let daysByRule = this._recurrenceRule.getDaysFromByDayRule();
                        if (!daysByRule.length) {
                            daysByRule = this._getDefaultByDayValue()
                        }
                        return daysByRule
                    };
                    _proto2._getDefaultByDayValue = function() {
                        const startDate = this.option("startDate");
                        const startDay = startDate.getDay();
                        return [days[startDay]]
                    };
                    _proto2._dayOfMonthByRules = function() {
                        let dayByRule = this._recurrenceRule.getRules().bymonthday;
                        if (!dayByRule) {
                            dayByRule = this.option("startDate").getDate()
                        }
                        return dayByRule
                    };
                    _proto2._monthOfYearByRules = function() {
                        let monthByRule = this._recurrenceRule.getRules().bymonth;
                        if (!monthByRule) {
                            monthByRule = this.option("startDate").getMonth() + 1
                        }
                        return String(monthByRule)
                    };
                    _proto2._renderDefaultRepeatEnd = function() {
                        const $editorTemplate = (0, _renderer.default)("<div>").addClass(REPEAT_END_EDITOR + "-wrapper");
                        (0, _renderer.default)("<div>").text(_message.default.format("dxScheduler-recurrenceNever")).addClass(REPEAT_END_EDITOR + "-label").appendTo($editorTemplate);
                        return $editorTemplate
                    };
                    _proto2._repeatEndValueChangedHandler = function(args) {
                        const {
                            value: value
                        } = args;
                        this._disableRepeatEndParts(value);
                        if ("until" === value) {
                            this._recurrenceRule.makeRule(value, this._getUntilValue())
                        }
                        if ("count" === value) {
                            this._recurrenceRule.makeRule(value, this._repeatCountEditor.option("value"))
                        }
                        if ("never" === value) {
                            this._recurrenceRule.makeRule("count", "");
                            this._recurrenceRule.makeRule("until", "")
                        }
                        this._changeEditorValue()
                    };
                    _proto2._disableRepeatEndParts = function() {
                        let value = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._recurrenceRule.getRepeatEndRule();
                        if ("until" === value) {
                            this._repeatCountEditor.option("disabled", true);
                            this._repeatUntilDate.option("disabled", false)
                        }
                        if ("count" === value) {
                            this._repeatCountEditor.option("disabled", false);
                            this._repeatUntilDate.option("disabled", true)
                        }
                        if ("never" === value) {
                            this._repeatCountEditor.option("disabled", true);
                            this._repeatUntilDate.option("disabled", true)
                        }
                    };
                    _proto2._renderRepeatCountEditor = function() {
                        const repeatCount = this._recurrenceRule.getRules().count || 1;
                        const $editorWrapper = (0, _renderer.default)("<div>").addClass(REPEAT_END_EDITOR + "-wrapper");
                        (0, _renderer.default)("<div>").text(_message.default.format("dxScheduler-recurrenceAfter")).addClass(REPEAT_END_EDITOR + "-label").appendTo($editorWrapper);
                        this._$repeatCountEditor = (0, _renderer.default)("<div>").addClass("dx-recurrence-numberbox-repeat-count").appendTo($editorWrapper);
                        (0, _renderer.default)("<div>").text(_message.default.format("dxScheduler-recurrenceRepeatCount")).addClass(REPEAT_END_EDITOR + "-label").appendTo($editorWrapper);
                        this._repeatCountEditor = this._createComponent(this._$repeatCountEditor, _number_box.default, {
                            stylingMode: getStylingModeFunc(),
                            field: "count",
                            format: "#",
                            width: 70,
                            min: 1,
                            showSpinButtons: true,
                            useLargeSpinButtons: false,
                            value: repeatCount,
                            onValueChanged: this._repeatCountValueChangeHandler.bind(this)
                        });
                        return $editorWrapper
                    };
                    _proto2._repeatCountValueChangeHandler = function(args) {
                        if ("count" === this._recurrenceRule.getRepeatEndRule()) {
                            const {
                                value: value
                            } = args;
                            this._recurrenceRule.makeRule("count", value);
                            this._changeEditorValue()
                        }
                    };
                    _proto2._formatUntilDate = function(date) {
                        if (this._recurrenceRule.getRules().until && _date.default.sameDate(this._recurrenceRule.getRules().until, date)) {
                            return date
                        }
                        return _date.default.setToDayEnd(date)
                    };
                    _proto2._renderRepeatUntilEditor = function() {
                        const repeatUntil = this._getUntilValue();
                        const $editorWrapper = (0, _renderer.default)("<div>").addClass(REPEAT_END_EDITOR + "-wrapper");
                        (0, _renderer.default)("<div>").text(_message.default.format("dxScheduler-recurrenceOn")).addClass(REPEAT_END_EDITOR + "-label").appendTo($editorWrapper);
                        this._$repeatDateEditor = (0, _renderer.default)("<div>").addClass("dx-recurrence-datebox-until-date").appendTo($editorWrapper);
                        this._repeatUntilDate = this._createComponent(this._$repeatDateEditor, _date_box.default, {
                            stylingMode: getStylingModeFunc(),
                            field: "until",
                            value: repeatUntil,
                            type: "date",
                            onValueChanged: this._repeatUntilValueChangeHandler.bind(this),
                            calendarOptions: {
                                firstDayOfWeek: this._getFirstDayOfWeek()
                            },
                            useMaskBehavior: true
                        });
                        return $editorWrapper
                    };
                    _proto2._repeatUntilValueChangeHandler = function(args) {
                        if ("until" === this._recurrenceRule.getRepeatEndRule()) {
                            const dateInTimeZone = this._formatUntilDate(new Date(args.value));
                            const getStartDateTimeZone = this.option("getStartDateTimeZone");
                            const appointmentTimeZone = getStartDateTimeZone();
                            const path = appointmentTimeZone ? _types.PathTimeZoneConversion.fromAppointmentToSource : _types.PathTimeZoneConversion.fromGridToSource;
                            const dateInLocaleTimeZone = this.option("timeZoneCalculator").createDate(dateInTimeZone, {
                                path: path,
                                appointmentTimeZone: appointmentTimeZone
                            });
                            this._recurrenceRule.makeRule("until", dateInLocaleTimeZone);
                            this._changeEditorValue()
                        }
                    };
                    _proto2._valueChangedHandler = function(args) {
                        const {
                            value: value,
                            previousValue: previousValue
                        } = args;
                        const field = args.component.option("field");
                        if (!this.option("visible")) {
                            this.option("value", "")
                        } else {
                            this._recurrenceRule.makeRule(field, value);
                            if ("freq" === field) {
                                this._makeRepeatOnRule(value);
                                this._changeRepeatOnVisibility(value, previousValue)
                            }
                            this._changeEditorValue()
                        }
                    };
                    _proto2._makeRepeatOnRule = function(value) {
                        if ("daily" === value || "hourly" === value) {
                            this._recurrenceRule.makeRule("byday", "");
                            this._recurrenceRule.makeRule("bymonth", "");
                            this._recurrenceRule.makeRule("bymonthday", "")
                        }
                        if ("weekly" === value) {
                            this._recurrenceRule.makeRule("byday", this._daysOfWeekByRules());
                            this._recurrenceRule.makeRule("bymonth", "");
                            this._recurrenceRule.makeRule("bymonthday", "")
                        }
                        if ("monthly" === value) {
                            this._recurrenceRule.makeRule("bymonthday", this._dayOfMonthByRules());
                            this._recurrenceRule.makeRule("bymonth", "");
                            this._recurrenceRule.makeRule("byday", "")
                        }
                        if ("yearly" === value) {
                            this._recurrenceRule.makeRule("bymonthday", this._dayOfMonthByRules());
                            this._recurrenceRule.makeRule("bymonth", this._monthOfYearByRules());
                            this._recurrenceRule.makeRule("byday", "")
                        }
                    };
                    _proto2._optionChanged = function(args) {
                        var _a, _b, _c, _d;
                        switch (args.name) {
                            case "readOnly":
                                null === (_a = this._recurrenceForm) || void 0 === _a ? void 0 : _a.option("readOnly", args.value);
                                null === (_b = this._repeatCountEditor) || void 0 === _b ? void 0 : _b.option("readOnly", args.value);
                                null === (_c = this._weekEditor) || void 0 === _c ? void 0 : _c.option("readOnly", args.value);
                                null === (_d = this._repeatUntilDate) || void 0 === _d ? void 0 : _d.option("readOnly", args.value);
                                _Editor.prototype._optionChanged.call(this, args);
                                break;
                            case "value":
                                this._recurrenceRule.makeRules(args.value);
                                this._changeRepeatIntervalLabel();
                                this._disableRepeatEndParts();
                                this._changeEditorsValue(this._recurrenceRule.getRules());
                                _Editor.prototype._optionChanged.call(this, args);
                                break;
                            case "startDate":
                                this._makeRepeatOnRule(this._recurrenceRule.getRules().freq);
                                if ((0, _type.isDefined)(this._recurrenceRule.getRecurrenceString())) {
                                    this._changeEditorValue()
                                }
                                break;
                            case "firstDayOfWeek":
                                if (this._weekEditor) {
                                    const localDaysNames = _date2.default.getDayNames("abbreviated");
                                    const dayNames = days.slice(args.value).concat(days.slice(0, args.value));
                                    const itemsButtonGroup = localDaysNames.slice(args.value).concat(localDaysNames.slice(0, args.value)).map((item, index) => ({
                                        text: item,
                                        key: dayNames[index]
                                    }));
                                    this._weekEditor.option("items", itemsButtonGroup)
                                }
                                if (this._$repeatDateEditor) {
                                    this._repeatUntilDate.option("calendarOptions.firstDayOfWeek", this._getFirstDayOfWeek())
                                }
                                break;
                            default:
                                _Editor.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto2._changeRepeatOnVisibility = function(freq, previousFreq) {
                        if (freq !== previousFreq) {
                            this._recurrenceForm.itemOption("byday", "visible", false);
                            this._recurrenceForm.itemOption("bymonthday", "visible", false);
                            this._recurrenceForm.itemOption("bymonth", "visible", false);
                            this._recurrenceForm.itemOption("repeatOnLabel", "visible", freq && "daily" !== freq && "hourly" !== freq);
                            if ("weekly" === freq) {
                                this._recurrenceForm.itemOption("byday", "visible", true)
                            }
                            if ("monthly" === freq) {
                                this._recurrenceForm.itemOption("bymonthday", "visible", true)
                            }
                            if ("yearly" === freq) {
                                this._recurrenceForm.itemOption("bymonthday", "visible", true);
                                this._recurrenceForm.itemOption("bymonth", "visible", true)
                            }
                        }
                    };
                    _proto2._changeRepeatIntervalLabel = function() {
                        const {
                            freq: freq
                        } = this._recurrenceRule.getRules();
                        freq && this._recurrenceForm.itemOption("intervalLabel", "template", _message.default.format("dxScheduler-recurrenceRepeat".concat(freq.charAt(0).toUpperCase()).concat(freq.substr(1).toLowerCase())))
                    };
                    _proto2._changeEditorsValue = function(rules) {
                        this._recurrenceForm.getEditor("freq").option("value", (rules.freq || frequenciesMessages[1].value).toLowerCase());
                        this._changeDayOfWeekValue();
                        this._changeDayOfMonthValue();
                        this._changeMonthOfYearValue();
                        this._changeIntervalValue(rules.interval);
                        this._changeRepeatCountValue();
                        this._changeRepeatEndValue();
                        this._changeRepeatUntilValue()
                    };
                    _proto2._changeIntervalValue = function(value) {
                        this._recurrenceForm.getEditor("interval").option("value", value || 1)
                    };
                    _proto2._changeRepeatEndValue = function() {
                        const repeatType = this._recurrenceRule.getRepeatEndRule();
                        this._recurrenceForm.getEditor("repeatEnd").option("value", repeatType)
                    };
                    _proto2._changeDayOfWeekValue = function() {
                        const isEditorVisible = this._recurrenceForm.itemOption("byday").visible;
                        if (isEditorVisible) {
                            const days = this._daysOfWeekByRules();
                            this.getEditorByField("byday").option("selectedItemKeys", days)
                        }
                    };
                    _proto2._changeDayOfMonthValue = function() {
                        const isEditorVisible = this._recurrenceForm.itemOption("bymonthday").visible;
                        if (isEditorVisible) {
                            const day = this._dayOfMonthByRules();
                            this._recurrenceForm.getEditor("bymonthday").option("value", day)
                        }
                    };
                    _proto2._changeMonthOfYearValue = function() {
                        const isEditorVisible = this._recurrenceForm.itemOption("bymonth").visible;
                        if (isEditorVisible) {
                            const month = this._monthOfYearByRules();
                            this._recurrenceForm.getEditor("bymonth").option("value", month)
                        }
                    };
                    _proto2._changeRepeatCountValue = function() {
                        const count = this._recurrenceRule.getRules().count || 1;
                        this._repeatCountEditor.option("value", count)
                    };
                    _proto2._changeRepeatUntilValue = function() {
                        this._repeatUntilDate.option("value", this._getUntilValue())
                    };
                    _proto2._getUntilValue = function() {
                        const untilDate = this._recurrenceRule.getRules().until;
                        if (!untilDate) {
                            return this._formatUntilDate(new Date)
                        }
                        const getStartDateTimeZone = this.option("getStartDateTimeZone");
                        const appointmentTimeZone = getStartDateTimeZone();
                        const path = appointmentTimeZone ? _types.PathTimeZoneConversion.fromSourceToAppointment : _types.PathTimeZoneConversion.fromSourceToGrid;
                        return this.option("timeZoneCalculator").createDate(untilDate, {
                            path: path,
                            appointmentTimeZone: appointmentTimeZone
                        })
                    };
                    _proto2.toggle = function() {
                        this._freqEditor.focus()
                    };
                    _proto2.setAria = function() {
                        if (this._switchEditor) {
                            this._switchEditor.setAria(arguments.length <= 0 ? void 0 : arguments[0], arguments.length <= 1 ? void 0 : arguments[1])
                        }
                    };
                    return RecurrenceEditor
                }(_editor.default);
                (0, _component_registrator.default)("dxRecurrenceEditor", RecurrenceEditor);
                var _default = RecurrenceEditor;
                exports.default = _default
            },
        97468:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_scheduler.js ***!
              \*********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _config = _interopRequireDefault(__webpack_require__( /*! ../../core/config */ 80209));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _bindable_template = __webpack_require__( /*! ../../core/templates/bindable_template */ 93280);
                var _empty_template = __webpack_require__( /*! ../../core/templates/empty_template */ 10688);
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/callbacks */ 44504));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _data = __webpack_require__( /*! ../../core/utils/data */ 47617);
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 91198));
                var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date_serialization */ 69434));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _position = __webpack_require__( /*! ../../core/utils/position */ 37518);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _data_helper = _interopRequireDefault(__webpack_require__( /*! ../../data_helper */ 53305));
                var _visibility_change = __webpack_require__( /*! ../../events/visibility_change */ 80506);
                var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../localization/date */ 91500));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _getAppointmentTakesAllDay = __webpack_require__( /*! ../../renovation/ui/scheduler/appointment/utils/getAppointmentTakesAllDay */ 96801);
                var _untyped_getCurrentView = __webpack_require__( /*! ../../renovation/ui/scheduler/model/untyped_getCurrentView */ 75837);
                var _createTimeZoneCalculator = __webpack_require__( /*! ../../renovation/ui/scheduler/timeZoneCalculator/createTimeZoneCalculator */ 92198);
                var _data2 = __webpack_require__( /*! ../../renovation/ui/scheduler/utils/data */ 46858);
                var _excludeFromRecurrence = __webpack_require__( /*! ../../renovation/ui/scheduler/utils/recurrence/excludeFromRecurrence */ 74951);
                var _base = __webpack_require__( /*! ../../renovation/ui/scheduler/view_model/to_test/views/utils/base */ 45985);
                var _dialog = __webpack_require__( /*! ../../ui/dialog */ 15029);
                var _themes = __webpack_require__( /*! ../../ui/themes */ 75811);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../ui/widget/ui.errors */ 96688));
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../../ui/widget/ui.widget */ 14390));
                var _date3 = __webpack_require__( /*! ../core/utils/date */ 24321);
                var _m_form = __webpack_require__( /*! ./appointment_popup/m_form */ 25387);
                var _m_popup = __webpack_require__( /*! ./appointment_popup/m_popup */ 77135);
                var _m_appointment_data_provider = __webpack_require__( /*! ./appointments/data_provider/m_appointment_data_provider */ 92823);
                var _m_appointment_collection = _interopRequireDefault(__webpack_require__( /*! ./appointments/m_appointment_collection */ 16993));
                var _m_render = __webpack_require__( /*! ./appointments/m_render */ 97938);
                var _m_header = __webpack_require__( /*! ./header/m_header */ 5757);
                var _m_appointment_adapter = __webpack_require__( /*! ./m_appointment_adapter */ 72734);
                var _m_appointments_layout_manager = _interopRequireDefault(__webpack_require__( /*! ./m_appointments_layout_manager */ 43919));
                var _m_compact_appointments_helper = __webpack_require__( /*! ./m_compact_appointments_helper */ 38088);
                var _m_constants = __webpack_require__( /*! ./m_constants */ 6324);
                var _m_data_structures = __webpack_require__( /*! ./m_data_structures */ 98865);
                var _m_expression_utils = __webpack_require__( /*! ./m_expression_utils */ 30906);
                var _m_loading = __webpack_require__( /*! ./m_loading */ 28066);
                var _m_recurrence = __webpack_require__( /*! ./m_recurrence */ 38227);
                var _m_subscribes = _interopRequireDefault(__webpack_require__( /*! ./m_subscribes */ 86681));
                var _m_utils = __webpack_require__( /*! ./m_utils */ 84110);
                var _m_utils_time_zone = _interopRequireDefault(__webpack_require__( /*! ./m_utils_time_zone */ 57880));
                var _index = __webpack_require__( /*! ./options_validator/index */ 18397);
                var _m_agenda_resource_processor = __webpack_require__( /*! ./resources/m_agenda_resource_processor */ 547);
                var _m_utils2 = __webpack_require__( /*! ./resources/m_utils */ 31359);
                var _m_desktop_tooltip_strategy = __webpack_require__( /*! ./tooltip_strategies/m_desktop_tooltip_strategy */ 48158);
                var _m_mobile_tooltip_strategy = __webpack_require__( /*! ./tooltip_strategies/m_mobile_tooltip_strategy */ 60737);
                var _m_agenda = _interopRequireDefault(__webpack_require__( /*! ./workspaces/m_agenda */ 32316));
                var _m_timeline_day = _interopRequireDefault(__webpack_require__( /*! ./workspaces/m_timeline_day */ 10356));
                var _m_timeline_month = _interopRequireDefault(__webpack_require__( /*! ./workspaces/m_timeline_month */ 91274));
                var _m_timeline_week = _interopRequireDefault(__webpack_require__( /*! ./workspaces/m_timeline_week */ 32414));
                var _m_timeline_work_week = _interopRequireDefault(__webpack_require__( /*! ./workspaces/m_timeline_work_week */ 23855));
                var _m_work_space_day = _interopRequireDefault(__webpack_require__( /*! ./workspaces/m_work_space_day */ 74228));
                var _m_work_space_month = _interopRequireDefault(__webpack_require__( /*! ./workspaces/m_work_space_month */ 50011));
                var _m_work_space_week = _interopRequireDefault(__webpack_require__( /*! ./workspaces/m_work_space_week */ 36828));
                var _m_work_space_work_week = _interopRequireDefault(__webpack_require__( /*! ./workspaces/m_work_space_work_week */ 29544));

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const toMs = _date.default.dateToMilliseconds;
                const WIDGET_SMALL_CLASS = "".concat("dx-scheduler", "-small");
                const WIDGET_ADAPTIVE_CLASS = "".concat("dx-scheduler", "-adaptive");
                const WIDGET_READONLY_CLASS = "".concat("dx-scheduler", "-readonly");
                const UTC_FULL_DATE_FORMAT = "".concat("yyyyMMddTHHmmss", "Z");
                const VIEWS_CONFIG = {
                    day: {
                        workSpace: _m_work_space_day.default,
                        renderingStrategy: "vertical"
                    },
                    week: {
                        workSpace: _m_work_space_week.default,
                        renderingStrategy: "vertical"
                    },
                    workWeek: {
                        workSpace: _m_work_space_work_week.default,
                        renderingStrategy: "vertical"
                    },
                    month: {
                        workSpace: _m_work_space_month.default,
                        renderingStrategy: "horizontalMonth"
                    },
                    timelineDay: {
                        workSpace: _m_timeline_day.default,
                        renderingStrategy: "horizontal"
                    },
                    timelineWeek: {
                        workSpace: _m_timeline_week.default,
                        renderingStrategy: "horizontal"
                    },
                    timelineWorkWeek: {
                        workSpace: _m_timeline_work_week.default,
                        renderingStrategy: "horizontal"
                    },
                    timelineMonth: {
                        workSpace: _m_timeline_month.default,
                        renderingStrategy: "horizontalMonthLine"
                    },
                    agenda: {
                        workSpace: _m_agenda.default,
                        renderingStrategy: "agenda"
                    }
                };
                const StoreEventNames_ADDING = "onAppointmentAdding",
                    StoreEventNames_ADDED = "onAppointmentAdded",
                    StoreEventNames_DELETING = "onAppointmentDeleting",
                    StoreEventNames_DELETED = "onAppointmentDeleted",
                    StoreEventNames_UPDATING = "onAppointmentUpdating",
                    StoreEventNames_UPDATED = "onAppointmentUpdated";
                const RECURRENCE_EDITING_MODE_SERIES = "editSeries",
                    RECURRENCE_EDITING_MODE_OCCURENCE = "editOccurence",
                    RECURRENCE_EDITING_MODE_CANCEL = "cancel";
                let Scheduler = function(_Widget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(Scheduler, _Widget);

                    function Scheduler() {
                        return _Widget.apply(this, arguments) || this
                    }
                    var _proto = Scheduler.prototype;
                    _proto._getDefaultOptions = function() {
                        const defaultOptions = (0, _extend.extend)(_Widget.prototype._getDefaultOptions.call(this), {
                            views: ["day", "week"],
                            currentView: "day",
                            currentDate: _date.default.trimTime(new Date),
                            min: void 0,
                            max: void 0,
                            dateSerializationFormat: void 0,
                            firstDayOfWeek: void 0,
                            groups: [],
                            resources: [],
                            loadedResources: [],
                            resourceLoaderMap: new Map,
                            dataSource: null,
                            customizeDateNavigatorText: void 0,
                            appointmentTemplate: "item",
                            dropDownAppointmentTemplate: "dropDownAppointment",
                            appointmentCollectorTemplate: "appointmentCollector",
                            dataCellTemplate: null,
                            timeCellTemplate: null,
                            resourceCellTemplate: null,
                            dateCellTemplate: null,
                            startDayHour: 0,
                            endDayHour: 24,
                            offset: 0,
                            editing: {
                                allowAdding: true,
                                allowDeleting: true,
                                allowDragging: true,
                                allowResizing: true,
                                allowUpdating: true,
                                allowTimeZoneEditing: false
                            },
                            showAllDayPanel: true,
                            showCurrentTimeIndicator: true,
                            shadeUntilCurrentTime: false,
                            indicatorUpdateInterval: 3e5,
                            indicatorTime: void 0,
                            recurrenceEditMode: "dialog",
                            cellDuration: 30,
                            maxAppointmentsPerCell: "auto",
                            selectedCellData: [],
                            groupByDate: false,
                            onAppointmentRendered: null,
                            onAppointmentClick: null,
                            onAppointmentDblClick: null,
                            onAppointmentContextMenu: null,
                            onCellClick: null,
                            onCellContextMenu: null,
                            onAppointmentAdding: null,
                            onAppointmentAdded: null,
                            onAppointmentUpdating: null,
                            onAppointmentUpdated: null,
                            onAppointmentDeleting: null,
                            onAppointmentDeleted: null,
                            onAppointmentFormOpening: null,
                            onAppointmentTooltipShowing: null,
                            appointmentTooltipTemplate: "appointmentTooltip",
                            appointmentPopupTemplate: "appointmentPopup",
                            crossScrollingEnabled: false,
                            useDropDownViewSwitcher: false,
                            startDateExpr: "startDate",
                            endDateExpr: "endDate",
                            textExpr: "text",
                            descriptionExpr: "description",
                            allDayExpr: "allDay",
                            recurrenceRuleExpr: "recurrenceRule",
                            recurrenceExceptionExpr: "recurrenceException",
                            disabledExpr: "disabled",
                            remoteFiltering: false,
                            timeZone: "",
                            startDateTimeZoneExpr: "startDateTimeZone",
                            endDateTimeZoneExpr: "endDateTimeZone",
                            noDataText: _message.default.format("dxCollectionWidget-noDataText"),
                            adaptivityEnabled: false,
                            allowMultipleCellSelection: true,
                            scrolling: {
                                mode: "standard"
                            },
                            allDayPanelMode: "all",
                            renovateRender: true,
                            _draggingMode: "outlook",
                            _appointmentTooltipOffset: {
                                x: 0,
                                y: 0
                            },
                            _appointmentTooltipButtonsPosition: "bottom",
                            _appointmentTooltipOpenButtonText: _message.default.format("dxScheduler-openAppointment"),
                            _appointmentCountPerCell: 2,
                            _collectorOffset: 0,
                            _appointmentOffset: 26,
                            toolbar: [{
                                location: "before",
                                defaultElement: "dateNavigator"
                            }, {
                                location: "after",
                                defaultElement: "viewSwitcher"
                            }]
                        });
                        return (0, _extend.extend)(true, defaultOptions, {
                            integrationOptions: {
                                useDeferUpdateForTemplates: false
                            }
                        })
                    };
                    _proto._setDeprecatedOptions = function() {
                        _Widget.prototype._setDeprecatedOptions.call(this);
                        (0, _extend.extend)(this._deprecatedOptions, {
                            dropDownAppointmentTemplate: {
                                since: "19.2",
                                message: "appointmentTooltipTemplate"
                            }
                        })
                    };
                    _proto._defaultOptionsRules = function() {
                        return _Widget.prototype._defaultOptionsRules.call(this).concat([{
                            device: () => "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator(),
                            options: {
                                focusStateEnabled: true
                            }
                        }, {
                            device: () => !_devices.default.current().generic,
                            options: {
                                useDropDownViewSwitcher: true,
                                editing: {
                                    allowDragging: false,
                                    allowResizing: false
                                }
                            }
                        }, {
                            device: () => (0, _themes.isMaterialBased)(),
                            options: {
                                useDropDownViewSwitcher: true,
                                dateCellTemplate(data, index, element) {
                                    const {
                                        text: text
                                    } = data;
                                    text.split(" ").forEach((text, index) => {
                                        const span = (0, _renderer.default)("<span>").text(text).addClass("dx-scheduler-header-panel-cell-date");
                                        (0, _renderer.default)(element).append(span);
                                        if (!index) {
                                            (0, _renderer.default)(element).append(" ")
                                        }
                                    })
                                },
                                _appointmentTooltipButtonsPosition: "top",
                                _appointmentTooltipOpenButtonText: null,
                                _appointmentCountPerCell: 1,
                                _collectorOffset: 20,
                                _appointmentOffset: 30
                            }
                        }, {
                            device: () => (0, _themes.isMaterial)(),
                            options: {
                                _appointmentTooltipOffset: {
                                    x: 0,
                                    y: 11
                                }
                            }
                        }])
                    };
                    _proto._postponeDataSourceLoading = function(promise) {
                        this.postponedOperations.add("_reloadDataSource", this._reloadDataSource.bind(this), promise)
                    };
                    _proto._postponeResourceLoading = function() {
                        const whenLoaded = this.postponedOperations.add("loadResources", () => {
                            const groups = this._getCurrentViewOption("groups");
                            return (0, _m_utils2.loadResources)(groups, this.option("resources"), this.option("resourceLoaderMap"))
                        });
                        const resolveCallbacks = new _deferred.Deferred;
                        whenLoaded.done(resources => {
                            this.option("loadedResources", resources);
                            resolveCallbacks.resolve(resources)
                        });
                        this._postponeDataSourceLoading(whenLoaded);
                        return resolveCallbacks.promise()
                    };
                    _proto._optionChanged = function(args) {
                        var _a, _b, _c, _d;
                        this.validateOptions();
                        let {
                            value: value
                        } = args;
                        const {
                            name: name
                        } = args;
                        switch (args.name) {
                            case "customizeDateNavigatorText":
                                this._updateOption("header", name, value);
                                break;
                            case "firstDayOfWeek":
                                this._updateOption("workSpace", name, value);
                                this._updateOption("header", name, value);
                                break;
                            case "currentDate":
                                value = this._dateOption(name);
                                value = _date.default.trimTime(new Date(value));
                                this.option("selectedCellData", []);
                                this._workSpace.option(name, new Date(value));
                                null === (_a = this._header) || void 0 === _a ? void 0 : _a.option(name, new Date(value));
                                null === (_b = this._header) || void 0 === _b ? void 0 : _b.option("startViewDate", this.getStartViewDate());
                                this._appointments.option("items", []);
                                this._filterAppointmentsByDate();
                                this._postponeDataSourceLoading();
                                break;
                            case "dataSource":
                                this._initDataSource();
                                this.appointmentDataProvider.setDataSource(this._dataSource);
                                this._postponeResourceLoading().done(() => {
                                    this._filterAppointmentsByDate();
                                    this._updateOption("workSpace", "showAllDayPanel", this.option("showAllDayPanel"))
                                });
                                break;
                            case "min":
                            case "max":
                                value = this._dateOption(name);
                                this._updateOption("header", name, new Date(value));
                                this._updateOption("workSpace", name, new Date(value));
                                break;
                            case "views":
                                if (this._getCurrentViewOptions()) {
                                    this.repaint()
                                } else {
                                    null === (_c = this._header) || void 0 === _c ? void 0 : _c.option(name, value)
                                }
                                break;
                            case "useDropDownViewSwitcher":
                                null === (_d = this._header) || void 0 === _d ? void 0 : _d.option(name, value);
                                break;
                            case "currentView":
                                this._appointments.option({
                                    items: [],
                                    allowDrag: this._allowDragging(),
                                    allowResize: this._allowResizing(),
                                    itemTemplate: this._getAppointmentTemplate("appointmentTemplate")
                                });
                                this._postponeResourceLoading().done(resources => {
                                    var _a;
                                    this._refreshWorkSpace(resources);
                                    null === (_a = this._header) || void 0 === _a ? void 0 : _a.option(this._headerConfig());
                                    this._filterAppointmentsByDate();
                                    this._appointments.option("allowAllDayResize", "day" !== value)
                                });
                                this.postponedOperations.callPostponedOperations();
                                break;
                            case "appointmentTemplate":
                                this._appointments.option("itemTemplate", value);
                                break;
                            case "dateCellTemplate":
                            case "resourceCellTemplate":
                            case "dataCellTemplate":
                            case "timeCellTemplate":
                                this.repaint();
                                break;
                            case "groups":
                                this._postponeResourceLoading().done(resources => {
                                    this._refreshWorkSpace(resources);
                                    this._filterAppointmentsByDate()
                                });
                                break;
                            case "resources":
                                this._dataAccessors.resources = (0, _m_utils2.createExpressions)(this.option("resources"));
                                this.agendaResourceProcessor.initializeState(this.option("resources"));
                                this.updateInstances();
                                this._postponeResourceLoading().done(resources => {
                                    this._appointments.option("items", []);
                                    this._refreshWorkSpace(resources);
                                    this._filterAppointmentsByDate();
                                    this._createAppointmentPopupForm()
                                });
                                break;
                            case "startDayHour":
                            case "endDayHour":
                                this.updateInstances();
                                this._appointments.option("items", []);
                                this._updateOption("workSpace", name, value);
                                this._appointments.repaint();
                                this._filterAppointmentsByDate();
                                this._postponeDataSourceLoading();
                                break;
                            case "offset":
                                this.updateInstances();
                                this._appointments.option("items", []);
                                this._updateOption("workSpace", "viewOffset", this.normalizeViewOffsetValue(value));
                                this._appointments.repaint();
                                this._filterAppointmentsByDate();
                                this._postponeDataSourceLoading();
                                break;
                            case StoreEventNames_ADDING:
                            case StoreEventNames_ADDED:
                            case StoreEventNames_UPDATING:
                            case StoreEventNames_UPDATED:
                            case StoreEventNames_DELETING:
                            case StoreEventNames_DELETED:
                            case "onAppointmentFormOpening":
                            case "onAppointmentTooltipShowing":
                                this._actions[name] = this._createActionByOption(name);
                                break;
                            case "onAppointmentRendered":
                                this._appointments.option("onItemRendered", this._getAppointmentRenderedAction());
                                break;
                            case "onAppointmentClick":
                                this._appointments.option("onItemClick", this._createActionByOption(name));
                                break;
                            case "onAppointmentDblClick":
                                this._appointments.option(name, this._createActionByOption(name));
                                break;
                            case "onAppointmentContextMenu":
                                this._appointments.option("onItemContextMenu", this._createActionByOption(name));
                                this._appointmentTooltip._options.onItemContextMenu = this._createActionByOption(name);
                                break;
                            case "noDataText":
                            case "allowMultipleCellSelection":
                            case "selectedCellData":
                            case "accessKey":
                            case "onCellClick":
                            case "onCellContextMenu":
                                this._workSpace.option(name, value);
                                break;
                            case "crossScrollingEnabled":
                                this._postponeResourceLoading().done(resources => {
                                    this._appointments.option("items", []);
                                    this._refreshWorkSpace(resources);
                                    if (this._readyToRenderAppointments) {
                                        this._appointments.option("items", this._getAppointmentsToRepaint())
                                    }
                                });
                                break;
                            case "cellDuration":
                                this._updateOption("workSpace", name, value);
                                this._appointments.option("items", []);
                                if (this._readyToRenderAppointments) {
                                    this._updateOption("workSpace", "hoursInterval", value / 60);
                                    this._appointments.option("items", this._getAppointmentsToRepaint())
                                }
                                break;
                            case "tabIndex":
                            case "focusStateEnabled":
                                this._updateOption("header", name, value);
                                this._updateOption("workSpace", name, value);
                                this._appointments.option(name, value);
                                _Widget.prototype._optionChanged.call(this, args);
                                break;
                            case "width":
                                this._updateOption("header", name, value);
                                if (this.option("crossScrollingEnabled")) {
                                    this._updateOption("workSpace", "width", value)
                                }
                                this._updateOption("workSpace", "schedulerWidth", value);
                                _Widget.prototype._optionChanged.call(this, args);
                                this._dimensionChanged(null, true);
                                break;
                            case "height":
                                _Widget.prototype._optionChanged.call(this, args);
                                this._dimensionChanged(null, true);
                                this._updateOption("workSpace", "schedulerHeight", value);
                                break;
                            case "editing": {
                                this._initEditing();
                                const editing = this._editing;
                                this._bringEditingModeToAppointments(editing);
                                this.hideAppointmentTooltip();
                                this._cleanPopup();
                                break
                            }
                            case "showAllDayPanel":
                                this.updateInstances();
                                this.repaint();
                                break;
                            case "showCurrentTimeIndicator":
                            case "indicatorTime":
                            case "indicatorUpdateInterval":
                            case "shadeUntilCurrentTime":
                            case "groupByDate":
                                this._updateOption("workSpace", name, value);
                                this.repaint();
                                break;
                            case "appointmentDragging":
                            case "appointmentTooltipTemplate":
                            case "appointmentPopupTemplate":
                            case "recurrenceEditMode":
                            case "remoteFiltering":
                            case "timeZone":
                                this.updateInstances();
                                this.repaint();
                                break;
                            case "dropDownAppointmentTemplate":
                            case "appointmentCollectorTemplate":
                            case "_appointmentTooltipOffset":
                            case "_appointmentTooltipButtonsPosition":
                            case "_appointmentTooltipOpenButtonText":
                            case "_appointmentCountPerCell":
                            case "_collectorOffset":
                            case "_appointmentOffset":
                                this.repaint();
                                break;
                            case "dateSerializationFormat":
                            case "maxAppointmentsPerCell":
                                break;
                            case "startDateExpr":
                            case "endDateExpr":
                            case "startDateTimeZoneExpr":
                            case "endDateTimeZoneExpr":
                            case "textExpr":
                            case "descriptionExpr":
                            case "allDayExpr":
                            case "recurrenceRuleExpr":
                            case "recurrenceExceptionExpr":
                            case "disabledExpr":
                                this._updateExpression(name, value);
                                this.appointmentDataProvider.updateDataAccessors(this._dataAccessors);
                                this._initAppointmentTemplate();
                                this.repaint();
                                break;
                            case "adaptivityEnabled":
                                this._toggleAdaptiveClass();
                                this.repaint();
                                break;
                            case "scrolling":
                                this.option("crossScrollingEnabled", this._isHorizontalVirtualScrolling() || this.option("crossScrollingEnabled"));
                                this._updateOption("workSpace", args.fullName, value);
                                break;
                            case "allDayPanelMode":
                                this.updateInstances();
                                this._updateOption("workSpace", args.fullName, value);
                                break;
                            case "renovateRender":
                                this._updateOption("workSpace", name, value);
                                break;
                            case "_draggingMode":
                                this._workSpace.option("draggingMode", value);
                                break;
                            case "toolbar":
                                this._header ? this._header.option("items", value) : this.repaint();
                                break;
                            case "loadedResources":
                            case "resourceLoaderMap":
                                break;
                            default:
                                _Widget.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto._dateOption = function(optionName) {
                        const optionValue = this._getCurrentViewOption(optionName);
                        return _date_serialization.default.deserializeDate(optionValue)
                    };
                    _proto._getSerializationFormat = function(optionName) {
                        const value = this._getCurrentViewOption(optionName);
                        if ("number" === typeof value) {
                            return "number"
                        }
                        if (!(0, _type.isString)(value)) {
                            return
                        }
                        return _date_serialization.default.getDateSerializationFormat(value)
                    };
                    _proto._bringEditingModeToAppointments = function(editing) {
                        const editingConfig = {
                            allowDelete: editing.allowUpdating && editing.allowDeleting
                        };
                        if (!this._isAgenda()) {
                            editingConfig.allowDrag = editing.allowDragging;
                            editingConfig.allowResize = editing.allowResizing;
                            editingConfig.allowAllDayResize = editing.allowResizing && this._supportAllDayResizing()
                        }
                        this._appointments.option(editingConfig);
                        this.repaint()
                    };
                    _proto._isAgenda = function() {
                        return "agenda" === this.getLayoutManager().appointmentRenderingStrategyName
                    };
                    _proto._allowDragging = function() {
                        return this._editing.allowDragging && !this._isAgenda()
                    };
                    _proto._allowResizing = function() {
                        return this._editing.allowResizing && !this._isAgenda()
                    };
                    _proto._allowAllDayResizing = function() {
                        return this._editing.allowResizing && this._supportAllDayResizing()
                    };
                    _proto._supportAllDayResizing = function() {
                        return "day" !== this.currentViewType || this.currentView.intervalCount > 1
                    };
                    _proto._isAllDayExpanded = function() {
                        return this.option("showAllDayPanel") && this.appointmentDataProvider.hasAllDayAppointments(this.filteredItems, this.preparedItems)
                    };
                    _proto._getTimezoneOffsetByOption = function(date) {
                        return _m_utils_time_zone.default.calculateTimezoneByValue(this.option("timeZone"), date)
                    };
                    _proto._filterAppointmentsByDate = function() {
                        const dateRange = this._workSpace.getDateRange();
                        const startDate = this.timeZoneCalculator.createDate(dateRange[0], {
                            path: "fromGrid"
                        });
                        const endDate = this.timeZoneCalculator.createDate(dateRange[1], {
                            path: "fromGrid"
                        });
                        this.appointmentDataProvider.filterByDate(startDate, endDate, this.option("remoteFiltering"), this.option("dateSerializationFormat"))
                    };
                    _proto._reloadDataSource = function() {
                        const result = new _deferred.Deferred;
                        if (this._dataSource) {
                            this._dataSource.load().done(() => {
                                (0, _m_loading.hide)();
                                this._fireContentReadyAction(result)
                            }).fail(() => {
                                (0, _m_loading.hide)();
                                result.reject()
                            });
                            this._dataSource.isLoading() && (0, _m_loading.show)({
                                container: this.$element(),
                                position: {
                                    of: this.$element()
                                }
                            })
                        } else {
                            this._fireContentReadyAction(result)
                        }
                        return result.promise()
                    };
                    _proto._fireContentReadyAction = function(result) {
                        var _a;
                        const contentReadyBase = _Widget.prototype._fireContentReadyAction.bind(this);
                        const fireContentReady = () => {
                            contentReadyBase();
                            null === result || void 0 === result ? void 0 : result.resolve()
                        };
                        if (this._workSpaceRecalculation) {
                            null === (_a = this._workSpaceRecalculation) || void 0 === _a ? void 0 : _a.done(() => {
                                fireContentReady()
                            })
                        } else {
                            fireContentReady()
                        }
                    };
                    _proto._dimensionChanged = function(value) {
                        let isForce = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false;
                        const isFixedHeight = "number" === typeof this.option("height");
                        const isFixedWidth = "number" === typeof this.option("width");
                        if (!this._isVisible()) {
                            return
                        }
                        this._toggleSmallClass();
                        const workspace = this.getWorkSpace();
                        if (!this._isAgenda() && this.filteredItems && workspace) {
                            if (isForce || !isFixedHeight || !isFixedWidth) {
                                workspace.option("allDayExpanded", this._isAllDayExpanded());
                                workspace._dimensionChanged();
                                const appointments = this.getLayoutManager().createAppointmentsMap(this.filteredItems);
                                this._appointments.option("items", appointments)
                            }
                        }
                        this.hideAppointmentTooltip();
                        this._appointmentPopup.triggerResize();
                        this._appointmentPopup.updatePopupFullScreenMode()
                    };
                    _proto._clean = function() {
                        this._cleanPopup();
                        _Widget.prototype._clean.call(this)
                    };
                    _proto._toggleSmallClass = function() {
                        const {
                            width: width
                        } = (0, _position.getBoundingRect)(this.$element().get(0));
                        this.$element().toggleClass(WIDGET_SMALL_CLASS, width < 400)
                    };
                    _proto._toggleAdaptiveClass = function() {
                        this.$element().toggleClass(WIDGET_ADAPTIVE_CLASS, this.option("adaptivityEnabled"))
                    };
                    _proto._visibilityChanged = function(visible) {
                        visible && this._dimensionChanged(null, true)
                    };
                    _proto._dataSourceOptions = function() {
                        return {
                            paginate: false
                        }
                    };
                    _proto._initAllDayPanel = function() {
                        if ("hidden" === this.option("allDayPanelMode")) {
                            this.option("showAllDayPanel", false)
                        }
                    };
                    _proto._init = function() {
                        this._initExpressions({
                            startDate: this.option("startDateExpr"),
                            endDate: this.option("endDateExpr"),
                            startDateTimeZone: this.option("startDateTimeZoneExpr"),
                            endDateTimeZone: this.option("endDateTimeZoneExpr"),
                            allDay: this.option("allDayExpr"),
                            text: this.option("textExpr"),
                            description: this.option("descriptionExpr"),
                            recurrenceRule: this.option("recurrenceRuleExpr"),
                            recurrenceException: this.option("recurrenceExceptionExpr"),
                            disabled: this.option("disabledExpr")
                        });
                        _Widget.prototype._init.call(this);
                        this._initAllDayPanel();
                        this._initDataSource();
                        this._customizeDataSourceLoadOptions();
                        this.$element().addClass("dx-scheduler");
                        this._initEditing();
                        this.updateInstances();
                        this._initActions();
                        this._compactAppointmentsHelper = new _m_compact_appointments_helper.CompactAppointmentsHelper(this);
                        this._asyncTemplatesTimers = [];
                        this._dataSourceLoadedCallback = (0, _callbacks.default)();
                        this._subscribes = _m_subscribes.default;
                        this.agendaResourceProcessor = new _m_agenda_resource_processor.AgendaResourceProcessor(this.option("resources"));
                        this._optionsValidator = new _index.SchedulerOptionsValidator;
                        this._optionsValidatorErrorHandler = new _index.SchedulerOptionsValidatorErrorsHandler
                    };
                    _proto.createAppointmentDataProvider = function() {
                        var _a;
                        null === (_a = this.appointmentDataProvider) || void 0 === _a ? void 0 : _a.destroy();
                        this.appointmentDataProvider = new _m_appointment_data_provider.AppointmentDataProvider({
                            dataSource: this._dataSource,
                            dataAccessors: this._dataAccessors,
                            timeZoneCalculator: this.timeZoneCalculator,
                            dateSerializationFormat: this.option("dateSerializationFormat"),
                            resources: this.option("resources"),
                            startDayHour: this._getCurrentViewOption("startDayHour"),
                            endDayHour: this._getCurrentViewOption("endDayHour"),
                            viewOffset: this.getViewOffsetMs(),
                            appointmentDuration: this._getCurrentViewOption("cellDuration"),
                            allDayPanelMode: this._getCurrentViewOption("allDayPanelMode"),
                            showAllDayPanel: this.option("showAllDayPanel"),
                            getLoadedResources: () => this.option("loadedResources"),
                            getIsVirtualScrolling: () => this.isVirtualScrolling(),
                            getSupportAllDayRow: () => this._workSpace.supportAllDayRow(),
                            getViewType: () => this._workSpace.type,
                            getViewDirection: () => this._workSpace.viewDirection,
                            getDateRange: () => this._workSpace.getDateRange(),
                            getGroupCount: () => this._workSpace._getGroupCount(),
                            getViewDataProvider: () => this._workSpace.viewDataProvider
                        })
                    };
                    _proto.updateInstances = function() {
                        this._timeZoneCalculator = null;
                        if (this.getWorkSpace()) {
                            this.createAppointmentDataProvider()
                        }
                    };
                    _proto._customizeDataSourceLoadOptions = function() {
                        var _a;
                        null === (_a = this._dataSource) || void 0 === _a ? void 0 : _a.on("customizeStoreLoadOptions", _ref => {
                            let {
                                storeLoadOptions: storeLoadOptions
                            } = _ref;
                            storeLoadOptions.startDate = this.getStartViewDate();
                            storeLoadOptions.endDate = this.getEndViewDate()
                        })
                    };
                    _proto._initTemplates = function() {
                        this._initAppointmentTemplate();
                        this._templateManager.addDefaultTemplates({
                            appointmentTooltip: new _empty_template.EmptyTemplate,
                            dropDownAppointment: new _empty_template.EmptyTemplate
                        });
                        _Widget.prototype._initTemplates.call(this)
                    };
                    _proto._initAppointmentTemplate = function() {
                        const {
                            expr: expr
                        } = this._dataAccessors;
                        const createGetter = property => (0, _data.compileGetter)("appointmentData.".concat(property));
                        const getDate = getter => data => {
                            const value = getter(data);
                            if (value instanceof Date) {
                                return value.valueOf()
                            }
                            return value
                        };
                        this._templateManager.addDefaultTemplates({
                            item: new _bindable_template.BindableTemplate(($container, data, model) => this.getAppointmentsInstance()._renderAppointmentTemplate($container, data, model), ["html", "text", "startDate", "endDate", "allDay", "description", "recurrenceRule", "recurrenceException", "startDateTimeZone", "endDateTimeZone"], this.option("integrationOptions.watchMethod"), {
                                text: createGetter(expr.textExpr),
                                startDate: getDate(createGetter(expr.startDateExpr)),
                                endDate: getDate(createGetter(expr.endDateExpr)),
                                startDateTimeZone: createGetter(expr.startDateTimeZoneExpr),
                                endDateTimeZone: createGetter(expr.endDateTimeZoneExpr),
                                allDay: createGetter(expr.allDayExpr),
                                recurrenceRule: createGetter(expr.recurrenceRuleExpr)
                            })
                        })
                    };
                    _proto._renderContent = function() {
                        this._renderContentImpl()
                    };
                    _proto._updatePreparedItems = function(items) {
                        this.preparedItems = (0, _data2.getPreparedDataItems)(items, this._dataAccessors, this._getCurrentViewOption("cellDuration"), this.timeZoneCalculator)
                    };
                    _proto._dataSourceChangedHandler = function(result) {
                        if (this._readyToRenderAppointments) {
                            this._workSpaceRecalculation.done(() => {
                                this._updatePreparedItems(result);
                                this._renderAppointments();
                                this.getWorkSpace().onDataSourceChanged(this.filteredItems)
                            })
                        }
                    };
                    _proto.isVirtualScrolling = function() {
                        var _a;
                        const workspace = this.getWorkSpace();
                        if (workspace) {
                            return workspace.isVirtualScrolling()
                        }
                        const currentViewOptions = this._getCurrentViewOptions();
                        const scrolling = this.option("scrolling");
                        return "virtual" === (null === scrolling || void 0 === scrolling ? void 0 : scrolling.mode) || "virtual" === (null === (_a = null === currentViewOptions || void 0 === currentViewOptions ? void 0 : currentViewOptions.scrolling) || void 0 === _a ? void 0 : _a.mode)
                    };
                    _proto._filterAppointments = function() {
                        this.filteredItems = this.appointmentDataProvider.filter(this.preparedItems)
                    };
                    _proto._renderAppointments = function() {
                        const workspace = this.getWorkSpace();
                        this._filterAppointments();
                        workspace.option("allDayExpanded", this._isAllDayExpanded());
                        let viewModel = [];
                        if (this._isVisible()) {
                            viewModel = this._getAppointmentsToRepaint()
                        }
                        if (this.option("isRenovatedAppointments")) {
                            (0, _m_render.renderAppointments)({
                                instance: this,
                                $dateTable: this.getWorkSpace()._getDateTable(),
                                viewModel: viewModel
                            })
                        } else {
                            this._appointments.option("items", viewModel)
                        }
                        this.appointmentDataProvider.cleanState()
                    };
                    _proto._getAppointmentsToRepaint = function() {
                        const layoutManager = this.getLayoutManager();
                        const appointmentsMap = layoutManager.createAppointmentsMap(this.filteredItems);
                        if (this.option("isRenovatedAppointments")) {
                            const appointmentTemplate = "item" !== this.option("appointmentTemplate") ? this.option("appointmentTemplate") : void 0;
                            return {
                                appointments: appointmentsMap,
                                appointmentTemplate: appointmentTemplate
                            }
                        }
                        return layoutManager.getRepaintedAppointments(appointmentsMap, this.getAppointmentsInstance().option("items"))
                    };
                    _proto._initExpressions = function(fields) {
                        this._dataAccessors = _m_utils.utils.dataAccessors.create(fields, this._dataAccessors, (0, _config.default)().forceIsoDateParsing, this.option("dateSerializationFormat"));
                        this._dataAccessors.resources = (0, _m_utils2.createExpressions)(this.option("resources"))
                    };
                    _proto._updateExpression = function(name, value) {
                        const exprObj = {};
                        exprObj[name.replace("Expr", "")] = value;
                        this._initExpressions(exprObj)
                    };
                    _proto.getResourceDataAccessors = function() {
                        return this._dataAccessors.resources
                    };
                    _proto._initEditing = function() {
                        const editing = this.option("editing");
                        this._editing = {
                            allowAdding: !!editing,
                            allowUpdating: !!editing,
                            allowDeleting: !!editing,
                            allowResizing: !!editing,
                            allowDragging: !!editing
                        };
                        if ((0, _type.isObject)(editing)) {
                            this._editing = (0, _extend.extend)(this._editing, editing)
                        }
                        this._editing.allowDragging = this._editing.allowDragging && this._editing.allowUpdating;
                        this._editing.allowResizing = this._editing.allowResizing && this._editing.allowUpdating;
                        this.$element().toggleClass(WIDGET_READONLY_CLASS, this._isReadOnly())
                    };
                    _proto._isReadOnly = function() {
                        let result = true;
                        const editing = this._editing;
                        for (const prop in editing) {
                            if (Object.prototype.hasOwnProperty.call(editing, prop)) {
                                result = result && !editing[prop]
                            }
                        }
                        return result
                    };
                    _proto._dispose = function() {
                        var _a;
                        this._appointmentTooltip && this._appointmentTooltip.dispose();
                        null === (_a = this._recurrenceDialog) || void 0 === _a ? void 0 : _a.hide(RECURRENCE_EDITING_MODE_CANCEL);
                        this.hideAppointmentPopup();
                        this.hideAppointmentTooltip();
                        this._asyncTemplatesTimers.forEach(clearTimeout);
                        this._asyncTemplatesTimers = [];
                        _Widget.prototype._dispose.call(this)
                    };
                    _proto._initActions = function() {
                        this._actions = {
                            onAppointmentAdding: this._createActionByOption(StoreEventNames_ADDING),
                            onAppointmentAdded: this._createActionByOption(StoreEventNames_ADDED),
                            onAppointmentUpdating: this._createActionByOption(StoreEventNames_UPDATING),
                            onAppointmentUpdated: this._createActionByOption(StoreEventNames_UPDATED),
                            onAppointmentDeleting: this._createActionByOption(StoreEventNames_DELETING),
                            onAppointmentDeleted: this._createActionByOption(StoreEventNames_DELETED),
                            onAppointmentFormOpening: this._createActionByOption("onAppointmentFormOpening"),
                            onAppointmentTooltipShowing: this._createActionByOption("onAppointmentTooltipShowing")
                        }
                    };
                    _proto._getAppointmentRenderedAction = function() {
                        return this._createActionByOption("onAppointmentRendered", {
                            excludeValidators: ["disabled", "readOnly"]
                        })
                    };
                    _proto._renderFocusTarget = function() {
                        return (0, _common.noop)()
                    };
                    _proto._initMarkup = function() {
                        _Widget.prototype._initMarkup.call(this);
                        this._renderMainContainer();
                        this._renderHeader();
                        this._layoutManager = new _m_appointments_layout_manager.default(this);
                        this._appointments = this._createComponent("<div>", _m_appointment_collection.default, this._appointmentsConfig());
                        this._appointments.option("itemTemplate", this._getAppointmentTemplate("appointmentTemplate"));
                        this._appointmentTooltip = new(this.option("adaptivityEnabled") ? _m_mobile_tooltip_strategy.MobileTooltipStrategy : _m_desktop_tooltip_strategy.DesktopTooltipStrategy)(this._getAppointmentTooltipOptions());
                        this._createAppointmentPopupForm();
                        if (this._isDataSourceLoaded() || this._isDataSourceLoading()) {
                            this._initMarkupCore(this.option("loadedResources"));
                            this._dataSourceChangedHandler(this._dataSource.items());
                            this._fireContentReadyAction()
                        } else {
                            const groups = this._getCurrentViewOption("groups");
                            (0, _m_utils2.loadResources)(groups, this.option("resources"), this.option("resourceLoaderMap")).done(resources => {
                                this.option("loadedResources", resources);
                                this._initMarkupCore(resources);
                                this._reloadDataSource()
                            })
                        }
                    };
                    _proto._createAppointmentPopupForm = function() {
                        var _a, _b;
                        if (this._appointmentForm) {
                            null === (_a = this._appointmentForm.form) || void 0 === _a ? void 0 : _a.dispose()
                        }
                        this._appointmentForm = this.createAppointmentForm();
                        null === (_b = this._appointmentPopup) || void 0 === _b ? void 0 : _b.dispose();
                        this._appointmentPopup = this.createAppointmentPopup(this._appointmentForm)
                    };
                    _proto._renderMainContainer = function() {
                        this._mainContainer = (0, _renderer.default)("<div>").addClass("dx-scheduler-container");
                        this.$element().append(this._mainContainer)
                    };
                    _proto.createAppointmentForm = function() {
                        const scheduler = {
                            createResourceEditorModel: () => (0, _m_utils2.createResourceEditorModel)(this.option("resources"), this.option("loadedResources")),
                            getDataAccessors: () => this._dataAccessors,
                            createComponent: (element, component, options) => this._createComponent(element, component, options),
                            getEditingConfig: () => this._editing,
                            getFirstDayOfWeek: () => this.option("firstDayOfWeek"),
                            getStartDayHour: () => this.option("startDayHour"),
                            getCalculatedEndDate: startDateWithStartHour => this._workSpace.calculateEndDate(startDateWithStartHour),
                            getTimeZoneCalculator: () => this.timeZoneCalculator
                        };
                        return new _m_form.AppointmentForm(scheduler)
                    };
                    _proto.createAppointmentPopup = function(form) {
                        const scheduler = {
                            getElement: () => this.$element(),
                            createComponent: (element, component, options) => this._createComponent(element, component, options),
                            focus: () => this.focus(),
                            getResources: () => this.option("resources"),
                            getEditingConfig: () => this._editing,
                            getTimeZoneCalculator: () => this.timeZoneCalculator,
                            getDataAccessors: () => this._dataAccessors,
                            getAppointmentFormOpening: () => this._actions.onAppointmentFormOpening,
                            processActionResult: (arg, canceled) => this._processActionResult(arg, canceled),
                            addAppointment: appointment => this.addAppointment(appointment),
                            updateAppointment: (sourceAppointment, updatedAppointment) => this.updateAppointment(sourceAppointment, updatedAppointment),
                            updateScrollPosition: (startDate, resourceItem, inAllDayRow) => {
                                this._workSpace.updateScrollPosition(startDate, resourceItem, inAllDayRow)
                            }
                        };
                        return new _m_popup.AppointmentPopup(scheduler, form)
                    };
                    _proto._getAppointmentTooltipOptions = function() {
                        return {
                            createComponent: this._createComponent.bind(this),
                            container: this.$element(),
                            getScrollableContainer: this.getWorkSpaceScrollableContainer.bind(this),
                            addDefaultTemplates: this._templateManager.addDefaultTemplates.bind(this._templateManager),
                            getAppointmentTemplate: this._getAppointmentTemplate.bind(this),
                            showAppointmentPopup: this.showAppointmentPopup.bind(this),
                            checkAndDeleteAppointment: this.checkAndDeleteAppointment.bind(this),
                            isAppointmentInAllDayPanel: this.isAppointmentInAllDayPanel.bind(this),
                            createFormattedDateText: (appointment, targetedAppointment, format) => this.fire("getTextAndFormatDate", appointment, targetedAppointment, format),
                            getAppointmentDisabled: appointment => (0, _m_appointment_adapter.createAppointmentAdapter)(appointment, this._dataAccessors, this.timeZoneCalculator).disabled,
                            onItemContextMenu: this._createActionByOption("onAppointmentContextMenu"),
                            createEventArgs: this._createEventArgs.bind(this)
                        }
                    };
                    _proto._createEventArgs = function(e) {
                        const config = {
                            itemData: e.itemData.appointment,
                            itemElement: e.itemElement,
                            targetedAppointment: e.itemData.targetedAppointment
                        };
                        return (0, _extend.extend)({}, this.fire("mapAppointmentFields", config), {
                            component: e.component,
                            element: e.element,
                            event: e.event,
                            model: e.model
                        })
                    };
                    _proto.checkAndDeleteAppointment = function(appointment, targetedAppointment) {
                        const targetedAdapter = (0, _m_appointment_adapter.createAppointmentAdapter)(targetedAppointment, this._dataAccessors, this.timeZoneCalculator);
                        const deletingOptions = this.fireOnAppointmentDeleting(appointment, targetedAdapter);
                        this._checkRecurringAppointment(appointment, targetedAppointment, targetedAdapter.startDate, () => {
                            this.processDeleteAppointment(appointment, deletingOptions)
                        }, true)
                    };
                    _proto._getExtraAppointmentTooltipOptions = function() {
                        return {
                            rtlEnabled: this.option("rtlEnabled"),
                            focusStateEnabled: this.option("focusStateEnabled"),
                            editing: this.option("editing"),
                            offset: this.option("_appointmentTooltipOffset")
                        }
                    };
                    _proto.isAppointmentInAllDayPanel = function(appointmentData) {
                        const workSpace = this._workSpace;
                        const itTakesAllDay = this.appointmentTakesAllDay(appointmentData);
                        return itTakesAllDay && workSpace.supportAllDayRow() && workSpace.option("showAllDayPanel")
                    };
                    _proto._initMarkupCore = function(resources) {
                        this._readyToRenderAppointments = (0, _window.hasWindow)();
                        this._workSpace && this._cleanWorkspace();
                        this._renderWorkSpace(resources);
                        this._appointments.option({
                            fixedContainer: this._workSpace.getFixedContainer(),
                            allDayContainer: this._workSpace.getAllDayContainer()
                        });
                        this._waitAsyncTemplate(() => {
                            var _a;
                            return null === (_a = this._workSpaceRecalculation) || void 0 === _a ? void 0 : _a.resolve()
                        });
                        this.createAppointmentDataProvider();
                        this._filterAppointmentsByDate();
                        this._validateKeyFieldIfAgendaExist()
                    };
                    _proto._isDataSourceLoaded = function() {
                        return this._dataSource && this._dataSource.isLoaded()
                    };
                    _proto._render = function() {
                        var _a;
                        this._toggleSmallClass();
                        this._toggleAdaptiveClass();
                        null === (_a = this.getWorkSpace()) || void 0 === _a ? void 0 : _a.updateHeaderEmptyCellWidth();
                        _Widget.prototype._render.call(this)
                    };
                    _proto._renderHeader = function() {
                        if (0 !== this.option("toolbar").length) {
                            const $header = (0, _renderer.default)("<div>").appendTo(this._mainContainer);
                            this._header = this._createComponent($header, _m_header.SchedulerHeader, this._headerConfig())
                        }
                    };
                    _proto._headerConfig = function() {
                        const currentViewOptions = this._getCurrentViewOptions();
                        const countConfig = this._getViewCountConfig();
                        const result = (0, _extend.extend)({
                            firstDayOfWeek: this.getFirstDayOfWeek(),
                            currentView: this.option("currentView"),
                            isAdaptive: this.option("adaptivityEnabled"),
                            tabIndex: this.option("tabIndex"),
                            focusStateEnabled: this.option("focusStateEnabled"),
                            rtlEnabled: this.option("rtlEnabled"),
                            useDropDownViewSwitcher: this.option("useDropDownViewSwitcher"),
                            customizeDateNavigatorText: this.option("customizeDateNavigatorText"),
                            agendaDuration: currentViewOptions.agendaDuration || 7
                        }, currentViewOptions);
                        result.intervalCount = countConfig.intervalCount;
                        result.views = this.option("views");
                        result.min = new Date(this._dateOption("min"));
                        result.max = new Date(this._dateOption("max"));
                        result.currentDate = _date.default.trimTime(new Date(this._dateOption("currentDate")));
                        result.onCurrentViewChange = name => {
                            this.option("currentView", name)
                        };
                        result.onCurrentDateChange = date => {
                            this.option("currentDate", date)
                        };
                        result.items = this.option("toolbar");
                        result.startViewDate = this.getStartViewDate();
                        result.todayDate = () => {
                            const result = this.timeZoneCalculator.createDate(new Date, {
                                path: "toGrid"
                            });
                            return result
                        };
                        return result
                    };
                    _proto._appointmentsConfig = function() {
                        const config = {
                            getResources: () => this.option("resources"),
                            getResourceDataAccessors: this.getResourceDataAccessors.bind(this),
                            getAgendaResourceProcessor: () => this.agendaResourceProcessor,
                            getAppointmentColor: this.createGetAppointmentColor(),
                            getAppointmentDataProvider: () => this.appointmentDataProvider,
                            dataAccessors: this._dataAccessors,
                            observer: this,
                            onItemRendered: this._getAppointmentRenderedAction(),
                            onItemClick: this._createActionByOption("onAppointmentClick"),
                            onItemContextMenu: this._createActionByOption("onAppointmentContextMenu"),
                            onAppointmentDblClick: this._createActionByOption("onAppointmentDblClick"),
                            tabIndex: this.option("tabIndex"),
                            focusStateEnabled: this.option("focusStateEnabled"),
                            allowDrag: this._allowDragging(),
                            allowDelete: this._editing.allowUpdating && this._editing.allowDeleting,
                            allowResize: this._allowResizing(),
                            allowAllDayResize: this._allowAllDayResizing(),
                            rtlEnabled: this.option("rtlEnabled"),
                            currentView: this.currentView,
                            groups: this._getCurrentViewOption("groups"),
                            isRenovatedAppointments: this.option("isRenovatedAppointments"),
                            timeZoneCalculator: this.timeZoneCalculator,
                            getResizableStep: () => this._workSpace ? this._workSpace.positionHelper.getResizableStep() : 0,
                            getDOMElementsMetaData: () => {
                                var _a;
                                return null === (_a = this._workSpace) || void 0 === _a ? void 0 : _a.getDOMElementsMetaData()
                            },
                            getViewDataProvider: () => {
                                var _a;
                                return null === (_a = this._workSpace) || void 0 === _a ? void 0 : _a.viewDataProvider
                            },
                            isVerticalViewDirection: () => "vertical" === this.getRenderingStrategyInstance().getDirection(),
                            isVerticalGroupedWorkSpace: () => this._workSpace._isVerticalGroupedWorkSpace(),
                            isDateAndTimeView: () => (0, _base.isDateAndTimeView)(this._workSpace.type),
                            onContentReady: () => {
                                var _a;
                                null === (_a = this._workSpace) || void 0 === _a ? void 0 : _a.option("allDayExpanded", this._isAllDayExpanded())
                            }
                        };
                        return config
                    };
                    _proto.getCollectorOffset = function() {
                        if (this._workSpace.needApplyCollectorOffset() && !this.option("adaptivityEnabled")) {
                            return this.option("_collectorOffset")
                        }
                        return 0
                    };
                    _proto.getAppointmentDurationInMinutes = function() {
                        return this._getCurrentViewOption("cellDuration")
                    };
                    _proto._getCurrentViewType = function() {
                        return this.currentViewType
                    };
                    _proto._renderWorkSpace = function(groups) {
                        var _a;
                        this._readyToRenderAppointments && this._toggleSmallClass();
                        const $workSpace = (0, _renderer.default)("<div>").appendTo(this._mainContainer);
                        const countConfig = this._getViewCountConfig();
                        const workSpaceComponent = VIEWS_CONFIG[this._getCurrentViewType()].workSpace;
                        const workSpaceConfig = this._workSpaceConfig(groups, countConfig);
                        this._workSpace = this._createComponent($workSpace, workSpaceComponent, workSpaceConfig);
                        this._allowDragging() && this._workSpace.initDragBehavior(this, this._all);
                        this._workSpace._attachTablesEvents();
                        this._workSpace.getWorkArea().append(this._appointments.$element());
                        this._recalculateWorkspace();
                        countConfig.startDate && (null === (_a = this._header) || void 0 === _a ? void 0 : _a.option("currentDate", this._workSpace._getHeaderDate()));
                        this._appointments.option("_collectorOffset", this.getCollectorOffset())
                    };
                    _proto._getViewCountConfig = function() {
                        const currentView = this.option("currentView");
                        const view = this._getViewByName(currentView);
                        const viewCount = view && view.intervalCount || 1;
                        const startDate = view && view.startDate || null;
                        return {
                            intervalCount: viewCount,
                            startDate: startDate
                        }
                    };
                    _proto._getViewByName = function(name) {
                        const views = this.option("views");
                        for (let i = 0; i < views.length; i++) {
                            if (views[i].name === name || views[i].type === name || views[i] === name) {
                                return views[i]
                            }
                        }
                    };
                    _proto._recalculateWorkspace = function() {
                        this._workSpaceRecalculation = new _deferred.Deferred;
                        this._waitAsyncTemplate(() => {
                            (0, _visibility_change.triggerResizeEvent)(this._workSpace.$element());
                            this._workSpace.renderCurrentDateTimeLineAndShader()
                        })
                    };
                    _proto._workSpaceConfig = function(groups, countConfig) {
                        var _a;
                        const currentViewOptions = this._getCurrentViewOptions();
                        const scrolling = this.option("scrolling");
                        const isVirtualScrolling = "virtual" === scrolling.mode || "virtual" === (null === (_a = currentViewOptions.scrolling) || void 0 === _a ? void 0 : _a.mode);
                        const horizontalVirtualScrollingAllowed = isVirtualScrolling && (!(0, _type.isDefined)(scrolling.orientation) || ["horizontal", "both"].filter(item => {
                            var _a;
                            return scrolling.orientation === item || (null === (_a = currentViewOptions.scrolling) || void 0 === _a ? void 0 : _a.orientation) === item
                        }).length > 0);
                        const crossScrollingEnabled = this.option("crossScrollingEnabled") || horizontalVirtualScrollingAllowed || (0, _base.isTimelineView)(this.currentViewType);
                        const result = (0, _extend.extend)({
                            resources: this.option("resources"),
                            loadedResources: this.option("loadedResources"),
                            getFilteredItems: () => this.filteredItems,
                            getResourceDataAccessors: this.getResourceDataAccessors.bind(this),
                            noDataText: this.option("noDataText"),
                            firstDayOfWeek: this.option("firstDayOfWeek"),
                            startDayHour: this.option("startDayHour"),
                            endDayHour: this.option("endDayHour"),
                            viewOffset: this.getViewOffsetMs(),
                            tabIndex: this.option("tabIndex"),
                            accessKey: this.option("accessKey"),
                            focusStateEnabled: this.option("focusStateEnabled"),
                            cellDuration: this.option("cellDuration"),
                            showAllDayPanel: this.option("showAllDayPanel"),
                            showCurrentTimeIndicator: this.option("showCurrentTimeIndicator"),
                            indicatorTime: this.option("indicatorTime"),
                            indicatorUpdateInterval: this.option("indicatorUpdateInterval"),
                            shadeUntilCurrentTime: this.option("shadeUntilCurrentTime"),
                            allDayExpanded: this._appointments.option("items"),
                            crossScrollingEnabled: crossScrollingEnabled,
                            dataCellTemplate: this.option("dataCellTemplate"),
                            timeCellTemplate: this.option("timeCellTemplate"),
                            resourceCellTemplate: this.option("resourceCellTemplate"),
                            dateCellTemplate: this.option("dateCellTemplate"),
                            allowMultipleCellSelection: this.option("allowMultipleCellSelection"),
                            selectedCellData: this.option("selectedCellData"),
                            onSelectionChanged: args => {
                                this.option("selectedCellData", args.selectedCellData)
                            },
                            groupByDate: this._getCurrentViewOption("groupByDate"),
                            scrolling: scrolling,
                            draggingMode: this.option("_draggingMode"),
                            timeZoneCalculator: this.timeZoneCalculator,
                            schedulerHeight: this.option("height"),
                            schedulerWidth: this.option("width"),
                            allDayPanelMode: this.option("allDayPanelMode"),
                            onSelectedCellsClick: this.showAddAppointmentPopup.bind(this),
                            onRenderAppointments: this._renderAppointments.bind(this),
                            onShowAllDayPanel: value => this.option("showAllDayPanel", value),
                            getHeaderHeight: () => _m_utils.utils.DOM.getHeaderHeight(this._header),
                            onScrollEnd: () => this._appointments.updateResizableArea(),
                            renovateRender: this._isRenovatedRender(isVirtualScrolling),
                            isRenovatedAppointments: this.option("isRenovatedAppointments")
                        }, currentViewOptions);
                        result.observer = this;
                        result.intervalCount = countConfig.intervalCount;
                        result.startDate = countConfig.startDate;
                        result.groups = groups;
                        result.onCellClick = this._createActionByOption("onCellClick");
                        result.onCellContextMenu = this._createActionByOption("onCellContextMenu");
                        result.currentDate = _date.default.trimTime(new Date(this._dateOption("currentDate")));
                        result.hoursInterval = result.cellDuration / 60;
                        result.allDayExpanded = false;
                        result.dataCellTemplate = result.dataCellTemplate ? this._getTemplate(result.dataCellTemplate) : null;
                        result.timeCellTemplate = result.timeCellTemplate ? this._getTemplate(result.timeCellTemplate) : null;
                        result.resourceCellTemplate = result.resourceCellTemplate ? this._getTemplate(result.resourceCellTemplate) : null;
                        result.dateCellTemplate = result.dateCellTemplate ? this._getTemplate(result.dateCellTemplate) : null;
                        result.getAppointmentDataProvider = () => this.appointmentDataProvider;
                        return result
                    };
                    _proto._isRenovatedRender = function(isVirtualScrolling) {
                        return this.option("renovateRender") && (0, _window.hasWindow)() || isVirtualScrolling
                    };
                    _proto._waitAsyncTemplate = function(callback) {
                        if (this._options.silent("templatesRenderAsynchronously")) {
                            const timer = setTimeout(() => {
                                callback();
                                clearTimeout(timer)
                            });
                            this._asyncTemplatesTimers.push(timer)
                        } else {
                            callback()
                        }
                    };
                    _proto._getCurrentViewOptions = function() {
                        return this.currentView
                    };
                    _proto._getCurrentViewOption = function(optionName) {
                        if (this.currentView && void 0 !== this.currentView[optionName]) {
                            return this.currentView[optionName]
                        }
                        return this.option(optionName)
                    };
                    _proto._getAppointmentTemplate = function(optionName) {
                        const currentViewOptions = this._getCurrentViewOptions();
                        if (currentViewOptions && currentViewOptions[optionName]) {
                            return this._getTemplate(currentViewOptions[optionName])
                        }
                        return this._getTemplateByOption(optionName)
                    };
                    _proto._updateOption = function(viewName, optionName, value) {
                        const currentViewOptions = this._getCurrentViewOptions();
                        if (!currentViewOptions || !(0, _type.isDefined)(currentViewOptions[optionName])) {
                            this["_".concat(viewName)].option(optionName, value)
                        }
                    };
                    _proto._refreshWorkSpace = function(groups) {
                        this._cleanWorkspace();
                        delete this._workSpace;
                        this._renderWorkSpace(groups);
                        if (this._readyToRenderAppointments) {
                            this._appointments.option({
                                fixedContainer: this._workSpace.getFixedContainer(),
                                allDayContainer: this._workSpace.getAllDayContainer()
                            });
                            this._waitAsyncTemplate(() => this._workSpaceRecalculation.resolve())
                        }
                    };
                    _proto._cleanWorkspace = function() {
                        this._appointments.$element().detach();
                        this._workSpace._dispose();
                        this._workSpace.$element().remove();
                        this.option("selectedCellData", [])
                    };
                    _proto.getWorkSpaceScrollable = function() {
                        return this._workSpace.getScrollable()
                    };
                    _proto.getWorkSpaceScrollableContainer = function() {
                        return this._workSpace.getScrollableContainer()
                    };
                    _proto.getWorkSpace = function() {
                        return this._workSpace
                    };
                    _proto.getHeader = function() {
                        return this._header
                    };
                    _proto._cleanPopup = function() {
                        var _a;
                        null === (_a = this._appointmentPopup) || void 0 === _a ? void 0 : _a.dispose()
                    };
                    _proto._checkRecurringAppointment = function(rawAppointment, singleAppointment, exceptionDate, callback, isDeleted, isPopupEditing, dragEvent, recurrenceEditMode) {
                        const recurrenceRule = _m_expression_utils.ExpressionUtils.getField(this._dataAccessors, "recurrenceRule", rawAppointment);
                        if (!(0, _m_recurrence.getRecurrenceProcessor)().evalRecurrenceRule(recurrenceRule).isValid || !this._editing.allowUpdating) {
                            callback();
                            return
                        }
                        const editMode = recurrenceEditMode || this.option("recurrenceEditMode");
                        switch (editMode) {
                            case "series":
                                callback();
                                break;
                            case "occurrence":
                                this._excludeAppointmentFromSeries(rawAppointment, singleAppointment, exceptionDate, isDeleted, isPopupEditing, dragEvent);
                                break;
                            default:
                                if (dragEvent) {
                                    dragEvent.cancel = new _deferred.Deferred
                                }
                                this._showRecurrenceChangeConfirm(isDeleted).done(editingMode => {
                                    editingMode === RECURRENCE_EDITING_MODE_SERIES && callback();
                                    editingMode === RECURRENCE_EDITING_MODE_OCCURENCE && this._excludeAppointmentFromSeries(rawAppointment, singleAppointment, exceptionDate, isDeleted, isPopupEditing, dragEvent)
                                }).fail(() => this._appointments.moveAppointmentBack(dragEvent))
                        }
                    };
                    _proto._excludeAppointmentFromSeries = function(rawAppointment, newRawAppointment, exceptionDate, isDeleted, isPopupEditing, dragEvent) {
                        const appointment = (0, _excludeFromRecurrence.excludeFromRecurrence)(rawAppointment, exceptionDate, this._dataAccessors, this._timeZoneCalculator);
                        const singleRawAppointment = _extends({}, newRawAppointment);
                        delete singleRawAppointment[this._dataAccessors.expr.recurrenceExceptionExpr];
                        delete singleRawAppointment[this._dataAccessors.expr.recurrenceRuleExpr];
                        const keyPropertyName = this.appointmentDataProvider.keyName;
                        delete singleRawAppointment[keyPropertyName];
                        const canCreateNewAppointment = !isDeleted && !isPopupEditing;
                        if (canCreateNewAppointment) {
                            this.addAppointment(singleRawAppointment)
                        }
                        if (isPopupEditing) {
                            this._appointmentPopup.show(singleRawAppointment, {
                                isToolbarVisible: true,
                                action: _m_popup.ACTION_TO_APPOINTMENT.EXCLUDE_FROM_SERIES,
                                excludeInfo: {
                                    sourceAppointment: rawAppointment,
                                    updatedAppointment: appointment.source()
                                }
                            });
                            this._editAppointmentData = rawAppointment
                        } else {
                            this._updateAppointment(rawAppointment, appointment.source(), () => {
                                this._appointments.moveAppointmentBack(dragEvent)
                            }, dragEvent)
                        }
                    };
                    _proto._createRecurrenceException = function(appointment, exceptionDate) {
                        const result = [];
                        if (appointment.recurrenceException) {
                            result.push(appointment.recurrenceException)
                        }
                        result.push(this._getSerializedDate(exceptionDate, appointment.startDate, appointment.allDay));
                        return result.join()
                    };
                    _proto._getSerializedDate = function(date, startDate, isAllDay) {
                        isAllDay && date.setHours(startDate.getHours(), startDate.getMinutes(), startDate.getSeconds(), startDate.getMilliseconds());
                        return _date_serialization.default.serializeDate(date, UTC_FULL_DATE_FORMAT)
                    };
                    _proto._showRecurrenceChangeConfirm = function(isDeleted) {
                        const title = _message.default.format(isDeleted ? "dxScheduler-confirmRecurrenceDeleteTitle" : "dxScheduler-confirmRecurrenceEditTitle");
                        const message = _message.default.format(isDeleted ? "dxScheduler-confirmRecurrenceDeleteMessage" : "dxScheduler-confirmRecurrenceEditMessage");
                        const seriesText = _message.default.format(isDeleted ? "dxScheduler-confirmRecurrenceDeleteSeries" : "dxScheduler-confirmRecurrenceEditSeries");
                        const occurrenceText = _message.default.format(isDeleted ? "dxScheduler-confirmRecurrenceDeleteOccurrence" : "dxScheduler-confirmRecurrenceEditOccurrence");
                        this._recurrenceDialog = (0, _dialog.custom)({
                            title: title,
                            messageHtml: message,
                            showCloseButton: true,
                            showTitle: true,
                            buttons: [{
                                text: seriesText,
                                onClick: () => RECURRENCE_EDITING_MODE_SERIES
                            }, {
                                text: occurrenceText,
                                onClick: () => RECURRENCE_EDITING_MODE_OCCURENCE
                            }],
                            popupOptions: {
                                wrapperAttr: {
                                    class: "dx-dialog"
                                }
                            }
                        });
                        return this._recurrenceDialog.show()
                    };
                    _proto._getUpdatedData = function(rawAppointment) {
                        const viewOffset = this.getViewOffsetMs();
                        const getConvertedFromGrid = date => {
                            if (!date) {
                                return
                            }
                            const result = this.timeZoneCalculator.createDate(date, {
                                path: "fromGrid"
                            });
                            return _date3.dateUtilsTs.addOffsets(result, [-viewOffset])
                        };
                        const isValidDate = date => !isNaN(new Date(date).getTime());
                        const targetCell = this.getTargetCellData();
                        const appointment = (0, _m_appointment_adapter.createAppointmentAdapter)(rawAppointment, this._dataAccessors, this.timeZoneCalculator);
                        const cellStartDate = getConvertedFromGrid(targetCell.startDate);
                        const cellEndDate = getConvertedFromGrid(targetCell.endDate);
                        let appointmentStartDate = new Date(appointment.startDate);
                        appointmentStartDate = _date3.dateUtilsTs.addOffsets(appointmentStartDate, [-viewOffset]);
                        let appointmentEndDate = new Date(appointment.endDate);
                        appointmentEndDate = _date3.dateUtilsTs.addOffsets(appointmentEndDate, [-viewOffset]);
                        let resultedStartDate = null !== cellStartDate && void 0 !== cellStartDate ? cellStartDate : appointmentStartDate;
                        if (!isValidDate(appointmentStartDate)) {
                            appointmentStartDate = resultedStartDate
                        }
                        if (!isValidDate(appointmentEndDate)) {
                            appointmentEndDate = cellEndDate
                        }
                        const duration = appointmentEndDate.getTime() - appointmentStartDate.getTime();
                        const isKeepAppointmentHours = this._workSpace.keepOriginalHours() && isValidDate(appointment.startDate) && isValidDate(cellStartDate);
                        if (isKeepAppointmentHours) {
                            const startDate = this.timeZoneCalculator.createDate(appointmentStartDate, {
                                path: "toGrid"
                            });
                            const timeInMs = startDate.getTime() - _date.default.trimTime(startDate).getTime();
                            const targetCellStartDate = _date3.dateUtilsTs.addOffsets(targetCell.startDate, [-viewOffset]);
                            resultedStartDate = new Date(_date.default.trimTime(targetCellStartDate).getTime() + timeInMs);
                            resultedStartDate = this.timeZoneCalculator.createDate(resultedStartDate, {
                                path: "fromGrid"
                            })
                        }
                        const result = (0, _m_appointment_adapter.createAppointmentAdapter)({}, this._dataAccessors, this.timeZoneCalculator);
                        if (void 0 !== targetCell.allDay) {
                            result.allDay = targetCell.allDay
                        }
                        result.startDate = resultedStartDate;
                        let resultedEndDate = new Date(resultedStartDate.getTime() + duration);
                        if (this.appointmentTakesAllDay(rawAppointment) && !result.allDay && this._workSpace.supportAllDayRow()) {
                            resultedEndDate = this._workSpace.calculateEndDate(resultedStartDate)
                        }
                        if (appointment.allDay && !this._workSpace.supportAllDayRow() && !this._workSpace.keepOriginalHours()) {
                            const dateCopy = new Date(resultedStartDate);
                            dateCopy.setHours(0);
                            resultedEndDate = new Date(dateCopy.getTime() + duration);
                            if (0 !== resultedEndDate.getHours()) {
                                resultedEndDate.setHours(this._getCurrentViewOption("endDayHour"))
                            }
                        }
                        const timeZoneOffset = _m_utils_time_zone.default.getTimezoneOffsetChangeInMs(appointmentStartDate, appointmentEndDate, resultedStartDate, resultedEndDate);
                        result.endDate = new Date(resultedEndDate.getTime() - timeZoneOffset);
                        result.startDate = _date3.dateUtilsTs.addOffsets(result.startDate, [viewOffset]);
                        result.endDate = _date3.dateUtilsTs.addOffsets(result.endDate, [viewOffset]);
                        const rawResult = result.source();
                        (0, _m_utils2.setResourceToAppointment)(this.option("resources"), this.getResourceDataAccessors(), rawResult, targetCell.groups);
                        return rawResult
                    };
                    _proto.getTargetedAppointment = function(appointment, element) {
                        const settings = _m_utils.utils.dataAccessors.getAppointmentSettings(element);
                        const info = _m_utils.utils.dataAccessors.getAppointmentInfo(element);
                        const appointmentIndex = (0, _renderer.default)(element).data(this._appointments._itemIndexKey());
                        const adapter = (0, _m_appointment_adapter.createAppointmentAdapter)(appointment, this._dataAccessors, this.timeZoneCalculator);
                        const targetedAdapter = adapter.clone();
                        if (this._isAgenda() && adapter.isRecurrent) {
                            const {
                                agendaSettings: agendaSettings
                            } = settings;
                            targetedAdapter.startDate = _m_expression_utils.ExpressionUtils.getField(this._dataAccessors, "startDate", agendaSettings);
                            targetedAdapter.endDate = _m_expression_utils.ExpressionUtils.getField(this._dataAccessors, "endDate", agendaSettings)
                        } else if (settings) {
                            targetedAdapter.startDate = info ? info.sourceAppointment.startDate : adapter.startDate;
                            targetedAdapter.endDate = info ? info.sourceAppointment.endDate : adapter.endDate
                        }
                        const rawTargetedAppointment = targetedAdapter.source();
                        if (element) {
                            this.setTargetedAppointmentResources(rawTargetedAppointment, element, appointmentIndex)
                        }
                        if (info) {
                            rawTargetedAppointment.displayStartDate = new Date(info.appointment.startDate);
                            rawTargetedAppointment.displayEndDate = new Date(info.appointment.endDate)
                        }
                        return rawTargetedAppointment
                    };
                    _proto.subscribe = function(subject, action) {
                        this._subscribes[subject] = _m_subscribes.default[subject] = action
                    };
                    _proto.fire = function(subject) {
                        const callback = this._subscribes[subject];
                        const args = Array.prototype.slice.call(arguments);
                        if (!(0, _type.isFunction)(callback)) {
                            throw _ui.default.Error("E1031", subject)
                        }
                        return callback.apply(this, args.slice(1))
                    };
                    _proto.getTargetCellData = function() {
                        return this._workSpace.getDataByDroppableCell()
                    };
                    _proto._updateAppointment = function(target, rawAppointment, onUpdatePrevented, dragEvent) {
                        const updatingOptions = {
                            newData: rawAppointment,
                            oldData: (0, _extend.extend)({}, target),
                            cancel: false
                        };
                        const performFailAction = function(err) {
                            if (onUpdatePrevented) {
                                onUpdatePrevented.call(this)
                            }
                            if (err && "Error" === err.name) {
                                throw err
                            }
                        }.bind(this);
                        this._actions[StoreEventNames_UPDATING](updatingOptions);
                        if (dragEvent && !(0, _type.isDeferred)(dragEvent.cancel)) {
                            dragEvent.cancel = new _deferred.Deferred
                        }
                        return this._processActionResult(updatingOptions, (function(canceled) {
                            let deferred = new _deferred.Deferred;
                            if (!canceled) {
                                this._expandAllDayPanel(rawAppointment);
                                try {
                                    deferred = this.appointmentDataProvider.update(target, rawAppointment).done(() => {
                                        dragEvent && dragEvent.cancel.resolve(false)
                                    }).always(storeAppointment => this._onDataPromiseCompleted(StoreEventNames_UPDATED, storeAppointment)).fail(() => performFailAction())
                                } catch (err) {
                                    performFailAction(err);
                                    deferred.resolve()
                                }
                            } else {
                                performFailAction();
                                deferred.resolve()
                            }
                            return deferred.promise()
                        }))
                    };
                    _proto._processActionResult = function(actionOptions, callback) {
                        const deferred = new _deferred.Deferred;
                        const resolveCallback = callbackResult => {
                            (0, _deferred.when)((0, _deferred.fromPromise)(callbackResult)).always(deferred.resolve)
                        };
                        if ((0, _type.isPromise)(actionOptions.cancel)) {
                            (0, _deferred.when)((0, _deferred.fromPromise)(actionOptions.cancel)).always(cancel => {
                                if (!(0, _type.isDefined)(cancel)) {
                                    cancel = "rejected" === actionOptions.cancel.state()
                                }
                                resolveCallback(callback.call(this, cancel))
                            })
                        } else {
                            resolveCallback(callback.call(this, actionOptions.cancel))
                        }
                        return deferred.promise()
                    };
                    _proto._expandAllDayPanel = function(appointment) {
                        if (!this._isAllDayExpanded() && this.appointmentTakesAllDay(appointment)) {
                            this._workSpace.option("allDayExpanded", true)
                        }
                    };
                    _proto._onDataPromiseCompleted = function(handlerName, storeAppointment, appointment) {
                        const args = {
                            appointmentData: appointment || storeAppointment
                        };
                        if (storeAppointment instanceof Error) {
                            args.error = storeAppointment
                        } else {
                            this._appointmentPopup.visible && this._appointmentPopup.hide()
                        }
                        this._actions[handlerName](args);
                        this._fireContentReadyAction()
                    };
                    _proto.getAppointmentsInstance = function() {
                        return this._appointments
                    };
                    _proto.getLayoutManager = function() {
                        return this._layoutManager
                    };
                    _proto.getRenderingStrategyInstance = function() {
                        return this.getLayoutManager().getRenderingStrategyInstance()
                    };
                    _proto.getActions = function() {
                        return this._actions
                    };
                    _proto.appointmentTakesAllDay = function(rawAppointment) {
                        const appointment = (0, _m_appointment_adapter.createAppointmentAdapter)(rawAppointment, this._dataAccessors, this.timeZoneCalculator);
                        return (0, _getAppointmentTakesAllDay.getAppointmentTakesAllDay)(appointment, this._getCurrentViewOption("allDayPanelMode"))
                    };
                    _proto.dayHasAppointment = function(day, rawAppointment, trimTime) {
                        const getConvertedToTimeZone = date => this.timeZoneCalculator.createDate(date, {
                            path: "toGrid"
                        });
                        const appointment = (0, _m_appointment_adapter.createAppointmentAdapter)(rawAppointment, this._dataAccessors, this.timeZoneCalculator);
                        let startDate = new Date(appointment.startDate);
                        let endDate = new Date(appointment.endDate);
                        startDate = getConvertedToTimeZone(startDate);
                        endDate = getConvertedToTimeZone(endDate);
                        if (day.getTime() === endDate.getTime()) {
                            return startDate.getTime() === endDate.getTime()
                        }
                        if (trimTime) {
                            day = _date.default.trimTime(day);
                            startDate = _date.default.trimTime(startDate);
                            endDate = _date.default.trimTime(endDate)
                        }
                        const dayTimeStamp = day.getTime();
                        const startDateTimeStamp = startDate.getTime();
                        const endDateTimeStamp = endDate.getTime();
                        return startDateTimeStamp <= dayTimeStamp && dayTimeStamp <= endDateTimeStamp
                    };
                    _proto.setTargetedAppointmentResources = function(rawAppointment, element, appointmentIndex) {
                        const groups = this._getCurrentViewOption("groups");
                        if (null === groups || void 0 === groups ? void 0 : groups.length) {
                            const resourcesSetter = this.getResourceDataAccessors().setter;
                            const workSpace = this._workSpace;
                            let getGroups;
                            let setResourceCallback;
                            if (this._isAgenda()) {
                                getGroups = function() {
                                    const apptSettings = this.getLayoutManager()._positionMap[appointmentIndex];
                                    return (0, _m_utils2.getCellGroups)(apptSettings[0].groupIndex, this.getWorkSpace().option("groups"))
                                };
                                setResourceCallback = function(_, group) {
                                    resourcesSetter[group.name](rawAppointment, group.id)
                                }
                            } else {
                                getGroups = function() {
                                    const setting = _m_utils.utils.dataAccessors.getAppointmentSettings(element) || {};
                                    return workSpace.getCellDataByCoordinates({
                                        left: setting.left,
                                        top: setting.top
                                    }).groups
                                };
                                setResourceCallback = function(field, value) {
                                    resourcesSetter[field](rawAppointment, value)
                                }
                            }(0, _iterator.each)(getGroups.call(this), setResourceCallback)
                        }
                    };
                    _proto.getStartViewDate = function() {
                        var _a;
                        return null === (_a = this._workSpace) || void 0 === _a ? void 0 : _a.getStartViewDate()
                    };
                    _proto.getEndViewDate = function() {
                        return this._workSpace.getEndViewDate()
                    };
                    _proto.showAddAppointmentPopup = function(cellData, cellGroups) {
                        const appointmentAdapter = (0, _m_appointment_adapter.createAppointmentAdapter)({}, this._dataAccessors, this.timeZoneCalculator);
                        appointmentAdapter.allDay = cellData.allDay;
                        appointmentAdapter.startDate = this.timeZoneCalculator.createDate(cellData.startDate, {
                            path: "fromGrid"
                        });
                        appointmentAdapter.endDate = this.timeZoneCalculator.createDate(cellData.endDate, {
                            path: "fromGrid"
                        });
                        const resultAppointment = (0, _extend.extend)(appointmentAdapter.source(), cellGroups);
                        this.showAppointmentPopup(resultAppointment, true)
                    };
                    _proto.showAppointmentPopup = function(rawAppointment, createNewAppointment, rawTargetedAppointment) {
                        const newRawTargetedAppointment = _extends({}, rawTargetedAppointment);
                        if (newRawTargetedAppointment) {
                            delete newRawTargetedAppointment.displayStartDate;
                            delete newRawTargetedAppointment.displayEndDate
                        }
                        const appointment = (0, _m_appointment_adapter.createAppointmentAdapter)(newRawTargetedAppointment || rawAppointment, this._dataAccessors, this.timeZoneCalculator);
                        const newTargetedAppointment = (0, _extend.extend)({}, rawAppointment, newRawTargetedAppointment);
                        const isCreateAppointment = null !== createNewAppointment && void 0 !== createNewAppointment ? createNewAppointment : (0, _type.isEmptyObject)(rawAppointment);
                        if ((0, _type.isEmptyObject)(rawAppointment)) {
                            rawAppointment = this.createPopupAppointment()
                        }
                        if (isCreateAppointment) {
                            delete this._editAppointmentData;
                            this._editing.allowAdding && this._appointmentPopup.show(rawAppointment, {
                                isToolbarVisible: true,
                                action: _m_popup.ACTION_TO_APPOINTMENT.CREATE
                            })
                        } else {
                            this._checkRecurringAppointment(rawAppointment, newTargetedAppointment, appointment.startDate, () => {
                                this._editAppointmentData = rawAppointment;
                                this._appointmentPopup.show(rawAppointment, {
                                    isToolbarVisible: this._editing.allowUpdating,
                                    action: _m_popup.ACTION_TO_APPOINTMENT.UPDATE
                                })
                            }, false, true)
                        }
                    };
                    _proto.createPopupAppointment = function() {
                        const result = {};
                        const toMs = _date.default.dateToMilliseconds;
                        const startDate = new Date(this.option("currentDate"));
                        const endDate = new Date(startDate.getTime() + this.option("cellDuration") * toMs("minute"));
                        _m_expression_utils.ExpressionUtils.setField(this._dataAccessors, "startDate", result, startDate);
                        _m_expression_utils.ExpressionUtils.setField(this._dataAccessors, "endDate", result, endDate);
                        return result
                    };
                    _proto.hideAppointmentPopup = function(saveChanges) {
                        var _a;
                        if (null === (_a = this._appointmentPopup) || void 0 === _a ? void 0 : _a.visible) {
                            saveChanges && this._appointmentPopup.saveChangesAsync();
                            this._appointmentPopup.hide()
                        }
                    };
                    _proto.showAppointmentTooltip = function(appointment, element, targetedAppointment) {
                        if (appointment) {
                            const settings = _m_utils.utils.dataAccessors.getAppointmentSettings(element);
                            const appointmentConfig = {
                                itemData: targetedAppointment || appointment,
                                groupIndex: null === settings || void 0 === settings ? void 0 : settings.groupIndex,
                                groups: this.option("groups")
                            };
                            const getAppointmentColor = this.createGetAppointmentColor();
                            const deferredColor = getAppointmentColor(appointmentConfig);
                            const info = new _m_data_structures.AppointmentTooltipInfo(appointment, targetedAppointment, deferredColor);
                            this.showAppointmentTooltipCore(element, [info])
                        }
                    };
                    _proto.createGetAppointmentColor = function() {
                        return appointmentConfig => {
                            const resourceConfig = {
                                resources: this.option("resources"),
                                dataAccessors: this.getResourceDataAccessors(),
                                loadedResources: this.option("loadedResources"),
                                resourceLoaderMap: this.option("resourceLoaderMap")
                            };
                            return (0, _m_utils2.getAppointmentColor)(resourceConfig, appointmentConfig)
                        }
                    };
                    _proto.showAppointmentTooltipCore = function(target, data, options) {
                        const arg = {
                            cancel: false,
                            appointments: data.map(item => {
                                const result = {
                                    appointmentData: item.appointment,
                                    currentAppointmentData: _extends({}, item.targetedAppointment),
                                    color: item.color
                                };
                                if (item.settings.info) {
                                    const {
                                        startDate: startDate,
                                        endDate: endDate
                                    } = item.settings.info.appointment;
                                    result.currentAppointmentData.displayStartDate = startDate;
                                    result.currentAppointmentData.displayEndDate = endDate
                                }
                                return result
                            }),
                            targetElement: target
                        };
                        this._createActionByOption("onAppointmentTooltipShowing")(arg);
                        if (this._appointmentTooltip.isAlreadyShown(target)) {
                            this.hideAppointmentTooltip()
                        } else {
                            this._processActionResult(arg, canceled => {
                                !canceled && this._appointmentTooltip.show(target, data, _extends(_extends({}, this._getExtraAppointmentTooltipOptions()), options))
                            })
                        }
                    };
                    _proto.hideAppointmentTooltip = function() {
                        this._appointmentTooltip && this._appointmentTooltip.hide()
                    };
                    _proto.scrollToTime = function(hours, minutes, date) {
                        _ui.default.log("W0002", "dxScheduler", "scrollToTime", "21.1", 'Use the "scrollTo" method instead');
                        this._workSpace.scrollToTime(hours, minutes, date)
                    };
                    _proto.scrollTo = function(date, groups, allDay) {
                        this._workSpace.scrollTo(date, groups, allDay)
                    };
                    _proto._isHorizontalVirtualScrolling = function() {
                        const scrolling = this.option("scrolling");
                        const {
                            orientation: orientation,
                            mode: mode
                        } = scrolling;
                        const isVirtualScrolling = "virtual" === mode;
                        return isVirtualScrolling && ("horizontal" === orientation || "both" === orientation)
                    };
                    _proto.addAppointment = function(rawAppointment) {
                        const appointment = (0, _m_appointment_adapter.createAppointmentAdapter)(rawAppointment, this._dataAccessors, this.timeZoneCalculator);
                        appointment.text = appointment.text || "";
                        const serializedAppointment = appointment.source(true);
                        const addingOptions = {
                            appointmentData: serializedAppointment,
                            cancel: false
                        };
                        this._actions[StoreEventNames_ADDING](addingOptions);
                        return this._processActionResult(addingOptions, canceled => {
                            if (canceled) {
                                return (new _deferred.Deferred).resolve()
                            }
                            this._expandAllDayPanel(serializedAppointment);
                            return this.appointmentDataProvider.add(serializedAppointment).always(storeAppointment => this._onDataPromiseCompleted(StoreEventNames_ADDED, storeAppointment))
                        })
                    };
                    _proto.updateAppointment = function(target, appointment) {
                        return this._updateAppointment(target, appointment)
                    };
                    _proto.deleteAppointment = function(rawAppointment) {
                        const deletingOptions = this.fireOnAppointmentDeleting(rawAppointment);
                        this.processDeleteAppointment(rawAppointment, deletingOptions)
                    };
                    _proto.fireOnAppointmentDeleting = function(rawAppointment, targetedAppointmentData) {
                        const deletingOptions = {
                            appointmentData: rawAppointment,
                            targetedAppointmentData: targetedAppointmentData,
                            cancel: false
                        };
                        this._actions[StoreEventNames_DELETING](deletingOptions);
                        return deletingOptions
                    };
                    _proto.processDeleteAppointment = function(rawAppointment, deletingOptions) {
                        this._processActionResult(deletingOptions, (function(canceled) {
                            if (!canceled) {
                                this.appointmentDataProvider.remove(rawAppointment).always(storeAppointment => this._onDataPromiseCompleted(StoreEventNames_DELETED, storeAppointment, rawAppointment))
                            }
                        }))
                    };
                    _proto.deleteRecurrence = function(appointment, date, recurrenceEditMode) {
                        this._checkRecurringAppointment(appointment, {}, date, () => {
                            this.processDeleteAppointment(appointment, {
                                cancel: false
                            })
                        }, true, false, null, recurrenceEditMode)
                    };
                    _proto.focus = function() {
                        if (this._editAppointmentData) {
                            this._appointments.focus()
                        } else {
                            this._workSpace.focus()
                        }
                    };
                    _proto.getFirstDayOfWeek = function() {
                        return (0, _type.isDefined)(this.option("firstDayOfWeek")) ? this.option("firstDayOfWeek") : _date2.default.firstDayOfWeekIndex()
                    };
                    _proto._validateKeyFieldIfAgendaExist = function() {
                        if (!this.appointmentDataProvider.isDataSourceInit) {
                            return
                        }
                        const hasAgendaView = !!this._getViewByName("agenda");
                        const isKeyExist = !!this.appointmentDataProvider.keyName;
                        if (hasAgendaView && !isKeyExist) {
                            _ui.default.log("W1023")
                        }
                    };
                    _proto._getDragBehavior = function() {
                        return this._workSpace.dragBehavior
                    };
                    _proto.getViewOffsetMs = function() {
                        const offsetFromOptions = this._getCurrentViewOption("offset");
                        return this.normalizeViewOffsetValue(offsetFromOptions)
                    };
                    _proto.normalizeViewOffsetValue = function(viewOffset) {
                        if (!(0, _type.isDefined)(viewOffset) || this.currentViewType === _m_constants.VIEWS.AGENDA) {
                            return 0
                        }
                        return viewOffset * toMs("minute")
                    };
                    _proto.validateOptions = function() {
                        const currentViewOptions = _extends(_extends({}, this.option()), {
                            startDayHour: this._getCurrentViewOption("startDayHour"),
                            endDayHour: this._getCurrentViewOption("endDayHour"),
                            offset: this._getCurrentViewOption("offset"),
                            cellDuration: this._getCurrentViewOption("cellDuration")
                        });
                        const validationResult = this._optionsValidator.validate(currentViewOptions);
                        this._optionsValidatorErrorHandler.handleValidationResult(validationResult)
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(Scheduler, [{
                        key: "filteredItems",
                        get: function() {
                            if (!this._filteredItems) {
                                this._filteredItems = []
                            }
                            return this._filteredItems
                        },
                        set: function(value) {
                            this._filteredItems = value
                        }
                    }, {
                        key: "preparedItems",
                        get: function() {
                            if (!this._preparedItems) {
                                this._preparedItems = []
                            }
                            return this._preparedItems
                        },
                        set: function(value) {
                            this._preparedItems = value
                        }
                    }, {
                        key: "currentView",
                        get: function() {
                            return (0, _untyped_getCurrentView.renovationGetCurrentView)(this.option("currentView"), this.option("views"))
                        }
                    }, {
                        key: "currentViewType",
                        get: function() {
                            return (0, _type.isObject)(this.currentView) ? this.currentView.type : this.currentView
                        }
                    }, {
                        key: "timeZoneCalculator",
                        get: function() {
                            if (!this._timeZoneCalculator) {
                                this._timeZoneCalculator = (0, _createTimeZoneCalculator.createTimeZoneCalculator)(this.option("timeZone"))
                            }
                            return this._timeZoneCalculator
                        }
                    }]);
                    return Scheduler
                }(_ui2.default);
                Scheduler.include(_data_helper.default);
                (0, _component_registrator.default)("dxScheduler", Scheduler);
                var _default = Scheduler;
                exports.default = _default
            },
        86681:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_subscribes.js ***!
              \**********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 91198));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _m_text_utils = __webpack_require__( /*! ./appointments/m_text_utils */ 18775);
                var _m_appointment_adapter = __webpack_require__( /*! ./m_appointment_adapter */ 72734);
                var _m_classes = __webpack_require__( /*! ./m_classes */ 43600);
                var _m_utils = __webpack_require__( /*! ./m_utils */ 84110);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const toMs = _date.default.dateToMilliseconds;
                const subscribes = {
                    isCurrentViewAgenda() {
                        return "agenda" === this.currentViewType
                    },
                    currentViewUpdated(currentView) {
                        this.option("currentView", currentView)
                    },
                    currentDateUpdated(date) {
                        this.option("currentDate", date)
                    },
                    getOption(name) {
                        return this.option(name)
                    },
                    getWorkspaceOption(name) {
                        return this.getWorkSpace().option(name)
                    },
                    isVirtualScrolling() {
                        return this.isVirtualScrolling()
                    },
                    setCellDataCacheAlias(appointment, geometry) {
                        this._workSpace.setCellDataCacheAlias(appointment, geometry)
                    },
                    isGroupedByDate() {
                        return this.getWorkSpace().isGroupedByDate()
                    },
                    showAppointmentTooltip(options) {
                        const targetedAppointment = this.getTargetedAppointment(options.data, options.target);
                        this.showAppointmentTooltip(options.data, options.target, targetedAppointment)
                    },
                    hideAppointmentTooltip() {
                        this.hideAppointmentTooltip()
                    },
                    showEditAppointmentPopup(options) {
                        const targetedData = this.getTargetedAppointment(options.data, options.target);
                        this.showAppointmentPopup(options.data, false, targetedData)
                    },
                    updateAppointmentAfterResize(options) {
                        const info = _m_utils.utils.dataAccessors.getAppointmentInfo(options.$appointment);
                        const {
                            exceptionDate: exceptionDate
                        } = info.sourceAppointment;
                        this._checkRecurringAppointment(options.target, options.data, exceptionDate, () => {
                            this._updateAppointment(options.target, options.data, (function() {
                                this._appointments.moveAppointmentBack()
                            }))
                        })
                    },
                    getUpdatedData(rawAppointment) {
                        return this._getUpdatedData(rawAppointment)
                    },
                    updateAppointmentAfterDrag(_ref) {
                        let {
                            event: event,
                            element: element,
                            rawAppointment: rawAppointment,
                            newCellIndex: newCellIndex,
                            oldCellIndex: oldCellIndex
                        } = _ref;
                        const info = _m_utils.utils.dataAccessors.getAppointmentInfo(element);
                        const appointment = (0, _m_appointment_adapter.createAppointmentAdapter)(rawAppointment, this._dataAccessors, this.timeZoneCalculator);
                        const targetedAppointment = (0, _m_appointment_adapter.createAppointmentAdapter)((0, _extend.extend)({}, rawAppointment, this._getUpdatedData(rawAppointment)), this._dataAccessors, this.timeZoneCalculator);
                        const targetedRawAppointment = targetedAppointment.source();
                        const becomeAllDay = targetedAppointment.allDay;
                        const wasAllDay = appointment.allDay;
                        const movedBetweenAllDayAndSimple = this._workSpace.supportAllDayRow() && (wasAllDay && !becomeAllDay || !wasAllDay && becomeAllDay);
                        const isDragAndDropBetweenComponents = event.fromComponent !== event.toComponent;
                        if (-1 === newCellIndex) {
                            if (!isDragAndDropBetweenComponents) {
                                this._appointments.moveAppointmentBack(event)
                            }
                            return
                        }
                        if (newCellIndex !== oldCellIndex || isDragAndDropBetweenComponents || movedBetweenAllDayAndSimple) {
                            this._checkRecurringAppointment(rawAppointment, targetedRawAppointment, info.sourceAppointment.exceptionDate, () => {
                                this._updateAppointment(rawAppointment, targetedRawAppointment, (function() {
                                    this._appointments.moveAppointmentBack(event)
                                }), event)
                            }, void 0, void 0, event)
                        } else {
                            this._appointments.moveAppointmentBack(event)
                        }
                    },
                    onDeleteButtonPress(options) {
                        const targetedData = this.getTargetedAppointment(options.data, (0, _renderer.default)(options.target));
                        this.checkAndDeleteAppointment(options.data, targetedData);
                        this.hideAppointmentTooltip()
                    },
                    getTextAndFormatDate(appointmentRaw, targetedAppointmentRaw, format) {
                        const appointmentAdapter = (0, _m_appointment_adapter.createAppointmentAdapter)(appointmentRaw, this._dataAccessors, this.timeZoneCalculator);
                        const targetedAdapter = (0, _m_appointment_adapter.createAppointmentAdapter)(targetedAppointmentRaw || appointmentRaw, this._dataAccessors, this.timeZoneCalculator);
                        const startDate = this.timeZoneCalculator.createDate(targetedAdapter.startDate, {
                            path: "toGrid"
                        });
                        const endDate = this.timeZoneCalculator.createDate(targetedAdapter.endDate, {
                            path: "toGrid"
                        });
                        const formatType = format || (0, _m_text_utils.getFormatType)(startDate, endDate, targetedAdapter.allDay, "month" !== this.currentViewType);
                        return {
                            text: targetedAdapter.text || appointmentAdapter.text,
                            formatDate: (0, _m_text_utils.formatDates)(startDate, endDate, formatType)
                        }
                    },
                    _createAppointmentTitle(data) {
                        if ((0, _type.isPlainObject)(data)) {
                            return data.text
                        }
                        return String(data)
                    },
                    getResizableAppointmentArea(options) {
                        const {
                            allDay: allDay
                        } = options;
                        const groups = this._getCurrentViewOption("groups");
                        if (groups && groups.length) {
                            if (allDay || this.getLayoutManager().getRenderingStrategyInstance()._needHorizontalGroupBounds()) {
                                const horizontalGroupBounds = this._workSpace.getGroupBounds(options.coordinates);
                                return {
                                    left: horizontalGroupBounds.left,
                                    right: horizontalGroupBounds.right,
                                    top: 0,
                                    bottom: 0
                                }
                            }
                            if (this.getLayoutManager().getRenderingStrategyInstance()._needVerticalGroupBounds(allDay) && this._workSpace._isVerticalGroupedWorkSpace()) {
                                const verticalGroupBounds = this._workSpace.getGroupBounds(options.coordinates);
                                return {
                                    left: 0,
                                    right: 0,
                                    top: verticalGroupBounds.top,
                                    bottom: verticalGroupBounds.bottom
                                }
                            }
                        }
                        return
                    },
                    needRecalculateResizableArea() {
                        return this.getWorkSpace().needRecalculateResizableArea()
                    },
                    getAppointmentGeometry(settings) {
                        return this.getLayoutManager().getRenderingStrategyInstance().getAppointmentGeometry(settings)
                    },
                    isAllDay(appointmentData) {
                        return this.getLayoutManager().getRenderingStrategyInstance().isAllDay(appointmentData)
                    },
                    getDeltaTime(e, initialSize, itemData) {
                        return this.getLayoutManager().getRenderingStrategyInstance().getDeltaTime(e, initialSize, itemData)
                    },
                    getDropDownAppointmentWidth(isAllDay) {
                        return this.getLayoutManager().getRenderingStrategyInstance().getDropDownAppointmentWidth(this._getViewCountConfig().intervalCount, isAllDay)
                    },
                    getDropDownAppointmentHeight() {
                        return this.getLayoutManager().getRenderingStrategyInstance().getDropDownAppointmentHeight()
                    },
                    getCellWidth() {
                        return this.getWorkSpace().getCellWidth()
                    },
                    getCellHeight() {
                        return this.getWorkSpace().getCellHeight()
                    },
                    getMaxAppointmentCountPerCellByType(isAllDay) {
                        return this.getRenderingStrategyInstance()._getMaxAppointmentCountPerCellByType(isAllDay)
                    },
                    needCorrectAppointmentDates() {
                        return this.getRenderingStrategyInstance().needCorrectAppointmentDates()
                    },
                    getRenderingStrategyDirection() {
                        return this.getRenderingStrategyInstance().getDirection()
                    },
                    updateAppointmentEndDate(options) {
                        const {
                            endDate: endDate
                        } = options;
                        const endDayHour = this._getCurrentViewOption("endDayHour");
                        const startDayHour = this._getCurrentViewOption("startDayHour");
                        let updatedEndDate = endDate;
                        if (endDate.getHours() >= endDayHour) {
                            updatedEndDate.setHours(endDayHour, 0, 0, 0)
                        } else if (!options.isSameDate && startDayHour > 0 && 60 * endDate.getHours() + endDate.getMinutes() < 60 * startDayHour) {
                            updatedEndDate = new Date(updatedEndDate.getTime() - toMs("day"));
                            updatedEndDate.setHours(endDayHour, 0, 0, 0)
                        }
                        return updatedEndDate
                    },
                    renderCompactAppointments(options) {
                        this._compactAppointmentsHelper.render(options)
                    },
                    clearCompactAppointments() {
                        this._compactAppointmentsHelper.clear()
                    },
                    supportCompactDropDownAppointments() {
                        return this.getLayoutManager().getRenderingStrategyInstance().supportCompactDropDownAppointments()
                    },
                    getGroupCount() {
                        return this._workSpace._getGroupCount()
                    },
                    mapAppointmentFields(config) {
                        const {
                            itemData: itemData,
                            itemElement: itemElement,
                            targetedAppointment: targetedAppointment
                        } = config;
                        const targetedData = targetedAppointment || this.getTargetedAppointment(itemData, itemElement);
                        return {
                            appointmentData: config.itemData,
                            appointmentElement: config.itemElement,
                            targetedAppointmentData: targetedData
                        }
                    },
                    dayHasAppointment(day, appointment, trimTime) {
                        return this.dayHasAppointment(day, appointment, trimTime)
                    },
                    getLayoutManager() {
                        return this._layoutManager
                    },
                    getAgendaVerticalStepHeight() {
                        return this.getWorkSpace().getAgendaVerticalStepHeight()
                    },
                    getAgendaDuration() {
                        return this._getCurrentViewOption("agendaDuration")
                    },
                    getStartViewDate() {
                        return this.getStartViewDate()
                    },
                    getEndViewDate() {
                        return this.getEndViewDate()
                    },
                    forceMaxAppointmentPerCell() {
                        return this.forceMaxAppointmentPerCell()
                    },
                    onAgendaReady(rows) {
                        const $appts = this.getAppointmentsInstance()._itemElements();
                        let total = 0;
                        const applyClass = function(_, count) {
                            const index = count + total - 1;
                            $appts.eq(index).addClass(_m_classes.AGENDA_LAST_IN_DATE_APPOINTMENT_CLASS);
                            total += count
                        };
                        for (let i = 0; i < rows.length; i++) {
                            (0, _iterator.each)(rows[i], applyClass)
                        }
                    },
                    getTimezone() {
                        return this._getTimezoneOffsetByOption()
                    },
                    getTargetedAppointmentData(appointment, element) {
                        return this.getTargetedAppointment(appointment, element)
                    },
                    getEndDayHour() {
                        return this._workSpace.option("endDayHour") || this.option("endDayHour")
                    },
                    getStartDayHour() {
                        return this._workSpace.option("startDayHour") || this.option("startDayHour")
                    },
                    getViewOffsetMs() {
                        return this.getViewOffsetMs()
                    },
                    isAdaptive() {
                        return this.option("adaptivityEnabled")
                    },
                    removeDroppableCellClass() {
                        this._workSpace.removeDroppableCellClass()
                    }
                };
                var _default = subscribes;
                exports.default = _default
            },
        82215:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_table_creator.js ***!
              \*************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _element = __webpack_require__( /*! ../../core/element */ 6415);
                var _element_data = __webpack_require__( /*! ../../core/element_data */ 97906);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                let SchedulerTableCreator = function() {
                    function SchedulerTableCreator() {
                        this.VERTICAL = "vertical";
                        this.HORIZONTAL = "horizontal"
                    }
                    var _proto = SchedulerTableCreator.prototype;
                    _proto.insertAllDayRow = function(allDayElements, tableBody, index) {
                        if (allDayElements[index]) {
                            let row = allDayElements[index].find("tr");
                            if (!row.length) {
                                row = (0, _renderer.default)(_dom_adapter.default.createElement("tr"));
                                row.append(allDayElements[index].get(0))
                            }
                            tableBody.appendChild(row.get ? row.get(0) : row)
                        }
                    };
                    _proto.makeTable = function(options) {
                        var _a;
                        const tableBody = _dom_adapter.default.createElement("tbody");
                        const templateCallbacks = [];
                        let row;
                        const rowCountInGroup = options.groupCount ? options.rowCount / options.groupCount : options.rowCount;
                        let allDayElementIndex = 0;
                        const {
                            allDayElements: allDayElements
                        } = options;
                        const {
                            groupIndex: groupIndex
                        } = options;
                        const {
                            rowCount: rowCount
                        } = options;
                        (0, _renderer.default)(options.container).append(tableBody);
                        if (allDayElements) {
                            this.insertAllDayRow(allDayElements, tableBody, 0);
                            allDayElementIndex++
                        }
                        for (let rowIndex = 0; rowIndex < rowCount; rowIndex++) {
                            row = _dom_adapter.default.createElement("tr");
                            tableBody.appendChild(row);
                            const isLastRowInGroup = (rowIndex + 1) % rowCountInGroup === 0;
                            if (options.rowClass) {
                                row.className = options.rowClass
                            }
                            for (let columnIndex = 0; columnIndex < options.cellCount; columnIndex++) {
                                const td = _dom_adapter.default.createElement("td");
                                row.appendChild(td);
                                if (options.cellClass) {
                                    if ((0, _type.isFunction)(options.cellClass)) {
                                        td.className = options.cellClass(rowIndex, columnIndex)
                                    } else {
                                        td.className = options.cellClass
                                    }
                                }
                                let cellDataObject;
                                let dataKey;
                                let dataValue;
                                if (options.getCellData) {
                                    cellDataObject = options.getCellData(td, rowIndex, columnIndex, groupIndex);
                                    dataKey = cellDataObject.key;
                                    dataValue = cellDataObject.value;
                                    dataKey && (0, _element_data.data)(td, dataKey, dataValue)
                                }
                                null === (_a = options.setAdditionalClasses) || void 0 === _a ? void 0 : _a.call(options, (0, _renderer.default)(td), dataValue);
                                if (options.cellTemplate && options.cellTemplate.render) {
                                    const additionalTemplateData = options.getTemplateData ? options.getTemplateData(rowIndex) : {};
                                    const templateOptions = {
                                        model: _extends({
                                            text: options.getCellText ? options.getCellText(rowIndex, columnIndex) : "",
                                            date: options.getCellDate ? options.getCellDate(rowIndex) : void 0
                                        }, additionalTemplateData),
                                        container: (0, _element.getPublicElement)((0, _renderer.default)(td)),
                                        index: rowIndex * options.cellCount + columnIndex
                                    };
                                    if (dataValue) {
                                        if (dataValue.startDate) {
                                            templateOptions.model.startDate = dataValue.startDate
                                        }
                                        if (dataValue.endDate) {
                                            templateOptions.model.endDate = dataValue.endDate
                                        }
                                        if (dataValue.groups) {
                                            templateOptions.model.groups = dataValue.groups
                                        }
                                        if (dataValue.allDay) {
                                            templateOptions.model.allDay = dataValue.allDay
                                        }
                                    }
                                    templateCallbacks.push(options.cellTemplate.render.bind(options.cellTemplate, templateOptions))
                                } else if (options.getCellText) {
                                    (0, _renderer.default)("<div>").text(options.getCellText(rowIndex, columnIndex)).addClass(options.getCellTextClass).appendTo((0, _renderer.default)(td))
                                }
                            }
                            if (allDayElements && isLastRowInGroup) {
                                this.insertAllDayRow(allDayElements, tableBody, allDayElementIndex);
                                allDayElementIndex++
                            }
                        }
                        return templateCallbacks
                    };
                    _proto.makeGroupedTable = function(type, groups, cssClasses, cellCount, cellTemplate, rowCount, groupByDate) {
                        let rows = [];
                        if (type === this.VERTICAL) {
                            rows = this._makeVerticalGroupedRows(groups, cssClasses, cellTemplate, rowCount)
                        } else {
                            rows = this._makeHorizontalGroupedRows(groups, cssClasses, cellCount, cellTemplate, groupByDate)
                        }
                        return rows
                    };
                    _proto.makeGroupedTableFromJSON = function(type, data, config) {
                        let table;
                        const cellStorage = [];
                        let rowIndex = 0;
                        config = config || {};
                        const cellTag = config.cellTag || "td";
                        const childrenField = config.childrenField || "children";
                        const titleField = config.titleField || "title";
                        const {
                            groupTableClass: groupTableClass
                        } = config;
                        const {
                            groupRowClass: groupRowClass
                        } = config;
                        const {
                            groupCellClass: groupCellClass
                        } = config;
                        const {
                            groupCellCustomContent: groupCellCustomContent
                        } = config;

                        function getChildCount(item) {
                            if (item[childrenField]) {
                                return item[childrenField].length
                            }
                            return 0
                        }

                        function createCell(text, childCount, index, data) {
                            const cell = {
                                element: _dom_adapter.default.createElement(cellTag),
                                childCount: childCount
                            };
                            if (groupCellClass) {
                                cell.element.className = groupCellClass
                            }
                            const cellText = _dom_adapter.default.createTextNode(text);
                            if ("function" === typeof groupCellCustomContent) {
                                groupCellCustomContent(cell.element, cellText, index, data)
                            } else {
                                cell.element.appendChild(cellText)
                            }
                            return cell
                        }! function() {
                            table = _dom_adapter.default.createElement("table");
                            if (groupTableClass) {
                                table.className = groupTableClass
                            }
                        }();
                        ! function generateCells(data) {
                            for (let i = 0; i < data.length; i++) {
                                const childCount = getChildCount(data[i]);
                                const cell = createCell(data[i][titleField], childCount, i, data[i]);
                                if (!cellStorage[rowIndex]) {
                                    cellStorage[rowIndex] = []
                                }
                                cellStorage[rowIndex].push(cell);
                                if (childCount) {
                                    generateCells(data[i][childrenField])
                                } else {
                                    rowIndex++
                                }
                            }
                        }(data);
                        void cellStorage.forEach(cells => {
                            const row = _dom_adapter.default.createElement("tr");
                            if (groupRowClass) {
                                row.className = groupRowClass
                            }
                            const rowspans = [];
                            for (let i = cells.length - 1; i >= 0; i--) {
                                const prev = cells[i + 1];
                                let rowspan = cells[i].childCount;
                                if (prev && prev.childCount) {
                                    rowspan *= prev.childCount
                                }
                                rowspans.push(rowspan)
                            }
                            rowspans.reverse();
                            cells.forEach((cell, index) => {
                                if (rowspans[index]) {
                                    cell.element.setAttribute("rowSpan", rowspans[index])
                                }
                                row.appendChild(cell.element)
                            });
                            table.appendChild(row)
                        });
                        return table
                    };
                    _proto._makeFlexGroupedRowCells = function(group, repeatCount, cssClasses, cellTemplate) {
                        let repeatByDate = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 1;
                        const cells = [];
                        const {
                            items: items
                        } = group;
                        const itemCount = items.length;
                        for (let i = 0; i < repeatCount * repeatByDate; i++) {
                            for (let j = 0; j < itemCount; j++) {
                                let $container = (0, _renderer.default)("<div>");
                                const cell = {};
                                if (cellTemplate && cellTemplate.render) {
                                    const templateOptions = {
                                        model: items[j],
                                        container: (0, _element.getPublicElement)($container),
                                        index: i * itemCount + j
                                    };
                                    if (group.data) {
                                        templateOptions.model.data = group.data[j]
                                    }
                                    cell.template = cellTemplate.render.bind(cellTemplate, templateOptions)
                                } else {
                                    $container.text(items[j].text).attr("title", items[j].text).addClass("dx-scheduler-group-header-content");
                                    $container = (0, _renderer.default)("<div>").append($container)
                                }
                                const cssClass = (0, _type.isFunction)(cssClasses.groupHeaderClass) ? cssClasses.groupHeaderClass(j) : cssClasses.groupHeaderClass;
                                cell.element = $container.addClass(cssClass);
                                cells.push(cell)
                            }
                        }
                        return cells
                    };
                    _proto._makeVerticalGroupedRows = function(groups, cssClasses, cellTemplate, rowCount) {
                        const cellTemplates = [];
                        let repeatCount = 1;
                        const cellsArray = [];
                        const cellIterator = function(cell) {
                            if (cell.template) {
                                cellTemplates.push(cell.template)
                            }
                        };
                        for (let i = 0; i < groups.length; i++) {
                            if (i > 0) {
                                repeatCount = groups[i - 1].items.length * repeatCount
                            }
                            const cells = this._makeFlexGroupedRowCells(groups[i], repeatCount, cssClasses, cellTemplate);
                            cells.forEach(cellIterator);
                            cellsArray.push(cells)
                        }
                        const rows = [];
                        const groupCount = cellsArray.length;
                        for (let i = 0; i < groupCount; i++) {
                            rows.push((0, _renderer.default)("<div>").addClass(cssClasses.groupHeaderRowClass))
                        }
                        for (let i = groupCount - 1; i >= 0; i--) {
                            const currentColumnLength = cellsArray[i].length;
                            for (let j = 0; j < currentColumnLength; j++) {
                                rows[i].append(cellsArray[i][j].element)
                            }
                        }
                        return {
                            elements: (0, _renderer.default)("<div>").addClass("dx-scheduler-group-flex-container").append(rows),
                            cellTemplates: cellTemplates
                        }
                    };
                    _proto._makeHorizontalGroupedRows = function(groups, cssClasses, cellCount, cellTemplate, groupByDate) {
                        let repeatCount = 1;
                        const groupCount = groups.length;
                        const rows = [];
                        const cellTemplates = [];
                        const repeatByDate = groupByDate ? cellCount : 1;
                        const cellIterator = function(cell) {
                            if (cell.template) {
                                cellTemplates.push(cell.template)
                            }
                            return cell.element
                        };
                        for (let i = 0; i < groupCount; i++) {
                            if (i > 0) {
                                repeatCount = groups[i - 1].items.length * repeatCount
                            }
                            const cells = this._makeGroupedRowCells(groups[i], repeatCount, cssClasses, cellTemplate, repeatByDate);
                            rows.push((0, _renderer.default)("<tr>").addClass(cssClasses.groupRowClass).append(cells.map(cellIterator)))
                        }
                        const maxCellCount = rows[groupCount - 1].find("th").length;
                        for (let j = 0; j < groupCount; j++) {
                            const $cell = rows[j].find("th");
                            let colspan = maxCellCount / $cell.length;
                            if (!groupByDate) {
                                colspan *= cellCount
                            }
                            if (colspan > 1 && 1 === repeatByDate || groupByDate && groupCount > 1) {
                                $cell.attr("colSpan", colspan)
                            }
                        }
                        return {
                            elements: rows,
                            cellTemplates: cellTemplates
                        }
                    };
                    _proto._makeGroupedRowCells = function(group, repeatCount, cssClasses, cellTemplate, repeatByDate) {
                        repeatByDate = repeatByDate || 1;
                        repeatCount *= repeatByDate;
                        const cells = [];
                        const {
                            items: items
                        } = group;
                        const itemCount = items.length;
                        for (let i = 0; i < repeatCount; i++) {
                            for (let j = 0; j < itemCount; j++) {
                                let $container = (0, _renderer.default)("<div>");
                                const cell = {};
                                if (cellTemplate && cellTemplate.render) {
                                    const templateOptions = {
                                        model: items[j],
                                        container: (0, _element.getPublicElement)($container),
                                        index: i * itemCount + j
                                    };
                                    if (group.data) {
                                        templateOptions.model.data = group.data[j]
                                    }
                                    cell.template = cellTemplate.render.bind(cellTemplate, templateOptions)
                                } else {
                                    $container.text(items[j].text);
                                    $container = (0, _renderer.default)("<div>").append($container)
                                }
                                $container.addClass(cssClasses.groupHeaderContentClass);
                                let cssClass;
                                if ((0, _type.isFunction)(cssClasses.groupHeaderClass)) {
                                    cssClass = cssClasses.groupHeaderClass(j)
                                } else {
                                    cssClass = cssClasses.groupHeaderClass
                                }
                                cell.element = (0, _renderer.default)("<th>").addClass(cssClass).append($container);
                                cells.push(cell)
                            }
                        }
                        return cells
                    };
                    return SchedulerTableCreator
                }();
                var _default = {
                    tableCreator: new SchedulerTableCreator
                };
                exports.default = _default
            },
        84110:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_utils.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.utils = void 0;
                var _element = __webpack_require__( /*! ../../core/element */ 6415);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _data = __webpack_require__( /*! ../../core/utils/data */ 47617);
                var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date_serialization */ 69434));
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _m_constants = __webpack_require__( /*! ./m_constants */ 6324);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const utils = {
                    dataAccessors: {
                        getAppointmentSettings: element => (0, _renderer.default)(element).data(_m_constants.APPOINTMENT_SETTINGS_KEY),
                        getAppointmentInfo: element => {
                            const settings = utils.dataAccessors.getAppointmentSettings(element);
                            return null === settings || void 0 === settings ? void 0 : settings.info
                        },
                        create: (fields, currentDataAccessors, forceIsoDateParsing, dateSerializationFormat) => {
                            const dataAccessors = currentDataAccessors ? _extends({}, currentDataAccessors) : {
                                getter: {},
                                setter: {},
                                expr: {}
                            };
                            (0, _iterator.each)(fields, (name, expr) => {
                                if (expr) {
                                    const getter = (0, _data.compileGetter)(expr);
                                    const setter = (0, _data.compileSetter)(expr);
                                    let dateGetter;
                                    let dateSetter;
                                    let serializationFormat;
                                    if (field = name, "startDate" === field || "endDate" === field) {
                                        dateGetter = object => {
                                            let value = getter(object);
                                            if (forceIsoDateParsing) {
                                                value = _date_serialization.default.deserializeDate(value)
                                            }
                                            return value
                                        };
                                        dateSetter = (object, value) => {
                                            if (dateSerializationFormat) {
                                                serializationFormat = dateSerializationFormat
                                            } else if (forceIsoDateParsing && !serializationFormat) {
                                                const oldValue = getter(object);
                                                serializationFormat = _date_serialization.default.getDateSerializationFormat(oldValue)
                                            }
                                            const newValue = _date_serialization.default.serializeDate(value, serializationFormat);
                                            setter(object, newValue)
                                        }
                                    }
                                    dataAccessors.getter[name] = dateGetter || getter;
                                    dataAccessors.setter[name] = dateSetter || setter;
                                    dataAccessors.expr["".concat(name, "Expr")] = expr
                                } else {
                                    delete dataAccessors.getter[name];
                                    delete dataAccessors.setter[name];
                                    delete dataAccessors.expr["".concat(name, "Expr")]
                                }
                                var field
                            });
                            return dataAccessors
                        }
                    },
                    DOM: {
                        getHeaderHeight: header => header ? header._$element && parseInt((0, _size.getOuterHeight)(header._$element), 10) : 0
                    },
                    renovation: {
                        renderComponent: (widget, parentElement, componentClass, componentName, viewModel) => {
                            let component = widget[componentName];
                            if (!component) {
                                const container = (0, _element.getPublicElement)(parentElement);
                                component = widget._createComponent(container, componentClass, viewModel);
                                widget[componentName] = component
                            } else {
                                const $element = component.$element();
                                const elementStyle = $element.get(0).style;
                                const {
                                    height: height
                                } = elementStyle;
                                const {
                                    width: width
                                } = elementStyle;
                                component.option(viewModel);
                                if (height) {
                                    (0, _size.setHeight)($element, height)
                                }
                                if (width) {
                                    (0, _size.setWidth)($element, width)
                                }
                            }
                        }
                    }
                };
                exports.utils = utils
            },
        57880:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/m_utils_time_zone.js ***!
              \***************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _date = __webpack_require__( /*! ../core/utils/date */ 24321);
                var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 91198));
                var _m_date_adapter = _interopRequireDefault(__webpack_require__( /*! ./m_date_adapter */ 90006));
                var _m_utils_timezones_data = _interopRequireDefault(__webpack_require__( /*! ./timezones/m_utils_timezones_data */ 23778));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const toMs = _date2.default.dateToMilliseconds;
                const createUTCDate = date => new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes()));
                const getTimezoneOffsetChangeInMinutes = (startDate, endDate, updatedStartDate, updatedEndDate) => getDaylightOffset(updatedStartDate, updatedEndDate) - getDaylightOffset(startDate, endDate);
                const getDaylightOffset = (startDate, endDate) => new Date(startDate).getTimezoneOffset() - new Date(endDate).getTimezoneOffset();
                const getDaylightOffsetInMs = (startDate, endDate) => getDaylightOffset(startDate, endDate) * toMs("minute");
                const calculateTimezoneByValue = function(timezone) {
                    let date = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : new Date;
                    if ("string" === typeof timezone) {
                        const dateUtc = createUTCDate(date);
                        return _m_utils_timezones_data.default.getTimeZoneOffsetById(timezone, dateUtc.getTime())
                    }
                    return timezone
                };
                const _getDaylightOffsetByTimezone = (startDate, endDate, timeZone) => calculateTimezoneByValue(timeZone, startDate) - calculateTimezoneByValue(timeZone, endDate);
                const isTimezoneChangeInDate = date => {
                    const startDayDate = new Date(new Date(date).setHours(0, 0, 0, 0));
                    const endDayDate = new Date(new Date(date).setHours(23, 59, 59, 0));
                    return startDayDate.getTimezoneOffset() - endDayDate.getTimezoneOffset() !== 0
                };
                const getClientTimezoneOffset = function() {
                    let date = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : new Date;
                    return 6e4 * date.getTimezoneOffset()
                };
                const hasDSTInLocalTimeZone = () => {
                    const [startDate, endDate] = getExtremeDates();
                    return startDate.getTimezoneOffset() !== endDate.getTimezoneOffset()
                };
                const isEqualLocalTimeZoneByDeclaration = (timeZoneName, date) => {
                    const year = date.getFullYear();
                    const getOffset = date => -date.getTimezoneOffset() / 60;
                    const getDateAndMoveHourBack = dateStamp => new Date(dateStamp - 36e5);
                    const configTuple = _m_utils_timezones_data.default.getTimeZoneDeclarationTuple(timeZoneName, year);
                    const [summerTime, winterTime] = configTuple;
                    const noDSTInTargetTimeZone = configTuple.length < 2;
                    if (noDSTInTargetTimeZone) {
                        const targetTimeZoneOffset = _m_utils_timezones_data.default.getTimeZoneOffsetById(timeZoneName, date);
                        const localTimeZoneOffset = getOffset(date);
                        if (targetTimeZoneOffset !== localTimeZoneOffset) {
                            return false
                        }
                        return !hasDSTInLocalTimeZone()
                    }
                    const localSummerOffset = getOffset(new Date(summerTime.date));
                    const localWinterOffset = getOffset(new Date(winterTime.date));
                    if (localSummerOffset !== summerTime.offset) {
                        return false
                    }
                    if (localSummerOffset === getOffset(getDateAndMoveHourBack(summerTime.date))) {
                        return false
                    }
                    if (localWinterOffset !== winterTime.offset) {
                        return false
                    }
                    if (localWinterOffset === getOffset(getDateAndMoveHourBack(winterTime.date))) {
                        return false
                    }
                    return true
                };
                const getExtremeDates = () => {
                    const nowDate = new Date(Date.now());
                    const startDate = new Date;
                    const endDate = new Date;
                    startDate.setFullYear(nowDate.getFullYear(), 0, 1);
                    endDate.setFullYear(nowDate.getFullYear(), 6, 1);
                    return [startDate, endDate]
                };
                const utils = {
                    getDaylightOffset: getDaylightOffset,
                    getDaylightOffsetInMs: getDaylightOffsetInMs,
                    getTimezoneOffsetChangeInMinutes: getTimezoneOffsetChangeInMinutes,
                    getTimezoneOffsetChangeInMs: (startDate, endDate, updatedStartDate, updatedEndDate) => getTimezoneOffsetChangeInMinutes(startDate, endDate, updatedStartDate, updatedEndDate) * toMs("minute"),
                    calculateTimezoneByValue: calculateTimezoneByValue,
                    getCorrectedDateByDaylightOffsets: (convertedOriginalStartDate, convertedDate, date, timeZone, startDateTimezone) => {
                        const daylightOffsetByCommonTimezone = _getDaylightOffsetByTimezone(convertedOriginalStartDate, convertedDate, timeZone);
                        const daylightOffsetByAppointmentTimezone = _getDaylightOffsetByTimezone(convertedOriginalStartDate, convertedDate, startDateTimezone);
                        const diff = daylightOffsetByCommonTimezone - daylightOffsetByAppointmentTimezone;
                        return new Date(date.getTime() - diff * toMs("hour"))
                    },
                    isSameAppointmentDates: (startDate, endDate) => {
                        endDate = new Date(endDate.getTime() - 1);
                        return _date2.default.sameDate(startDate, endDate)
                    },
                    correctRecurrenceExceptionByTimezone: function(exception, exceptionByStartDate, timeZone, startDateTimeZone) {
                        let isBackConversion = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : false;
                        let timezoneOffset = (exception.getTimezoneOffset() - exceptionByStartDate.getTimezoneOffset()) / 60;
                        if (startDateTimeZone) {
                            timezoneOffset = _getDaylightOffsetByTimezone(exceptionByStartDate, exception, startDateTimeZone)
                        } else if (timeZone) {
                            timezoneOffset = _getDaylightOffsetByTimezone(exceptionByStartDate, exception, timeZone)
                        }
                        return new Date(exception.getTime() + (isBackConversion ? -1 : 1) * timezoneOffset * toMs("hour"))
                    },
                    getClientTimezoneOffset: getClientTimezoneOffset,
                    getDiffBetweenClientTimezoneOffsets: function() {
                        let firstDate = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : new Date;
                        let secondDate = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : new Date;
                        return getClientTimezoneOffset(firstDate) - getClientTimezoneOffset(secondDate)
                    },
                    createUTCDateWithLocalOffset: date => {
                        if (!date) {
                            return null
                        }
                        return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds()))
                    },
                    createDateFromUTCWithLocalOffset: date => {
                        const result = (0, _m_date_adapter.default)(date);
                        const timezoneOffsetBeforeInMin = result.getTimezoneOffset();
                        result.addTime(result.getTimezoneOffset("minute"));
                        result.subtractMinutes(timezoneOffsetBeforeInMin - result.getTimezoneOffset());
                        return result.source
                    },
                    createUTCDate: createUTCDate,
                    isTimezoneChangeInDate: isTimezoneChangeInDate,
                    getDateWithoutTimezoneChange: date => {
                        const clonedDate = new Date(date);
                        if (isTimezoneChangeInDate(clonedDate)) {
                            const result = new Date(clonedDate);
                            return new Date(result.setDate(result.getDate() + 1))
                        }
                        return clonedDate
                    },
                    hasDSTInLocalTimeZone: hasDSTInLocalTimeZone,
                    isEqualLocalTimeZone: function(timeZoneName) {
                        let date = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : new Date;
                        if (Intl) {
                            const localTimeZoneName = Intl.DateTimeFormat().resolvedOptions().timeZone;
                            if (localTimeZoneName === timeZoneName) {
                                return true
                            }
                        }
                        return isEqualLocalTimeZoneByDeclaration(timeZoneName, date)
                    },
                    isEqualLocalTimeZoneByDeclaration: isEqualLocalTimeZoneByDeclaration,
                    getTimeZones: function() {
                        let date = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : new Date;
                        const dateInUTC = createUTCDate(date);
                        return _m_utils_timezones_data.default.getDisplayedTimeZones(dateInUTC.getTime())
                    },
                    setOffsetsToDate: (targetDate, offsetsArray) => {
                        const newDateMs = offsetsArray.reduce((result, offset) => result + offset, targetDate.getTime());
                        return new Date(newDateMs)
                    },
                    addOffsetsWithoutDST: function(date) {
                        for (var _len = arguments.length, offsets = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
                            offsets[_key - 1] = arguments[_key]
                        }
                        const newDate = _date.dateUtilsTs.addOffsets(date, offsets);
                        const daylightShift = getDaylightOffsetInMs(date, newDate);
                        if (!daylightShift) {
                            return newDate
                        }
                        const correctLocalDate = _date.dateUtilsTs.addOffsets(newDate, [-daylightShift]);
                        const daylightSecondShift = getDaylightOffsetInMs(newDate, correctLocalDate);
                        return !daylightSecondShift ? correctLocalDate : newDate
                    }
                };
                var _default = utils;
                exports.default = _default
            },
        39146:
            /*!****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/options_validator/common/index.js ***!
              \****************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                var _validation_functions = __webpack_require__( /*! ./validation_functions */ 52257);
                Object.keys(_validation_functions).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _validation_functions[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _validation_functions[key]
                        }
                    })
                }));
                var _validator_rules = __webpack_require__( /*! ./validator_rules */ 63974);
                Object.keys(_validator_rules).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _validator_rules[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _validator_rules[key]
                        }
                    })
                }))
            },
        52257:
            /*!*******************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/options_validator/common/validation_functions.js ***!
              \*******************************************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.lessThan = exports.isInteger = exports.inRange = exports.greaterThan = exports.divisibleBy = void 0;
                exports.isInteger = value => Number.isInteger(value);
                exports.greaterThan = function(value, minimalValue) {
                    let strict = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : true;
                    return strict ? value > minimalValue : value >= minimalValue
                };
                exports.lessThan = function(value, maximalValue) {
                    let strict = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : true;
                    return strict ? value < maximalValue : value <= maximalValue
                };
                exports.inRange = (value, _ref) => {
                    let [from, to] = _ref;
                    return value >= from && value <= to
                };
                exports.divisibleBy = (value, divider) => value % divider === 0
            },
        63974:
            /*!**************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/options_validator/common/validator_rules.js ***!
              \**************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.mustBeLessThan = exports.mustBeInteger = exports.mustBeInRange = exports.mustBeGreaterThan = exports.mustBeDivisibleBy = void 0;
                var _index = __webpack_require__( /*! ../core/index */ 28410);
                var _validation_functions = __webpack_require__( /*! ./validation_functions */ 52257);
                const mustBeInteger = (0, _index.createValidatorRule)("mustBeInteger", value => (0, _validation_functions.isInteger)(value) || "".concat(value, " must be an integer."));
                exports.mustBeInteger = mustBeInteger;
                exports.mustBeGreaterThan = function(minimalValue) {
                    let strict = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : true;
                    return (0, _index.createValidatorRule)("mustBeGreaterThan", value => (0, _validation_functions.greaterThan)(value, minimalValue, strict) || "".concat(value, " must be ").concat(strict ? ">" : ">=", " than ").concat(minimalValue, "."))
                };
                exports.mustBeLessThan = function(maximalValue) {
                    let strict = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : true;
                    return (0, _index.createValidatorRule)("mustBeLessThan", value => (0, _validation_functions.lessThan)(value, maximalValue, strict) || "".concat(value, " must be ").concat(strict ? "<" : "<=", " than ").concat(maximalValue, "."))
                };
                exports.mustBeInRange = range => (0, _index.createValidatorRule)("mustBeInRange", value => (0, _validation_functions.inRange)(value, range) || "".concat(value, " must be in range [").concat(range[0], ", ").concat(range[1], "]."));
                exports.mustBeDivisibleBy = divider => (0, _index.createValidatorRule)("mustBeDivisibleBy", value => (0, _validation_functions.divisibleBy)(value, divider) || "".concat(value, " must be divisible by ").concat(divider, "."))
            },
        28410:
            /*!**************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/options_validator/core/index.js ***!
              \**************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                var _exportNames = {
                    OptionsValidator: true,
                    OptionsValidatorErrorHandler: true,
                    Validator: true
                };
                Object.defineProperty(exports, "OptionsValidator", {
                    enumerable: true,
                    get: function() {
                        return _options_validator.OptionsValidator
                    }
                });
                Object.defineProperty(exports, "OptionsValidatorErrorHandler", {
                    enumerable: true,
                    get: function() {
                        return _options_validator_error_handler.OptionsValidatorErrorHandler
                    }
                });
                Object.defineProperty(exports, "Validator", {
                    enumerable: true,
                    get: function() {
                        return _validator.Validator
                    }
                });
                var _options_validator = __webpack_require__( /*! ./options_validator */ 88942);
                var _options_validator_error_handler = __webpack_require__( /*! ./options_validator_error_handler */ 2572);
                var _types = __webpack_require__( /*! ./types */ 56007);
                Object.keys(_types).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (Object.prototype.hasOwnProperty.call(_exportNames, key)) {
                        return
                    }
                    if (key in exports && exports[key] === _types[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _types[key]
                        }
                    })
                }));
                var _validator = __webpack_require__( /*! ./validator */ 61614);
                var _validator_rules = __webpack_require__( /*! ./validator_rules */ 28396);
                Object.keys(_validator_rules).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (Object.prototype.hasOwnProperty.call(_exportNames, key)) {
                        return
                    }
                    if (key in exports && exports[key] === _validator_rules[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _validator_rules[key]
                        }
                    })
                }))
            },
        88942:
            /*!**************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/options_validator/core/options_validator.js ***!
              \**************************************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.OptionsValidator = void 0;
                let OptionsValidator = function() {
                    function OptionsValidator(validators) {
                        this.validators = validators
                    }
                    var _proto = OptionsValidator.prototype;
                    _proto.validate = function(options) {
                        const errors = Object.entries(this.validators).reduce((result, _ref) => {
                            let [validatorName, validator] = _ref;
                            const validatorResult = validator.validate(options);
                            if (true !== validatorResult) {
                                result[validatorName] = validatorResult
                            }
                            return result
                        }, {});
                        return Object.keys(errors).length > 0 ? errors : true
                    };
                    return OptionsValidator
                }();
                exports.OptionsValidator = OptionsValidator
            },
        2572:
            /*!****************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/options_validator/core/options_validator_error_handler.js ***!
              \****************************************************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.OptionsValidatorErrorHandler = void 0;
                let OptionsValidatorErrorHandler = function() {
                    function OptionsValidatorErrorHandler(validatorNameToErrorCodeMap, globalErrorHandler) {
                        this.validatorNameToErrorCodeMap = validatorNameToErrorCodeMap;
                        this.globalErrorHandler = globalErrorHandler
                    }
                    var _proto = OptionsValidatorErrorHandler.prototype;
                    _proto.handleValidationResult = function(optionsValidatorResult) {
                        if (true === optionsValidatorResult) {
                            return
                        }
                        const uniqErrorCodes = Object.keys(optionsValidatorResult).reduce((set, validatorName) => {
                            const errorCode = this.validatorNameToErrorCodeMap[validatorName];
                            if (errorCode) {
                                set.add(errorCode)
                            }
                            return set
                        }, new Set);
                        const errorCodeArray = [...uniqErrorCodes];
                        errorCodeArray.forEach((errorCode, idx) => {
                            const isLastErrorCode = idx === errorCodeArray.length - 1;
                            if (!isLastErrorCode) {
                                this.globalErrorHandler.logError(errorCode)
                            } else {
                                this.globalErrorHandler.throwError(errorCode)
                            }
                        })
                    };
                    return OptionsValidatorErrorHandler
                }();
                exports.OptionsValidatorErrorHandler = OptionsValidatorErrorHandler
            },
        56007:
            /*!**************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/options_validator/core/types.js ***!
              \**************************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.REDUNDANT_EXPORT = void 0;
                exports.REDUNDANT_EXPORT = void 0
            },
        61614:
            /*!******************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/options_validator/core/validator.js ***!
              \******************************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.Validator = void 0;
                let Validator = function() {
                    function Validator(valueSelector, rules) {
                        this.valueSelector = valueSelector;
                        this.rules = rules
                    }
                    var _proto = Validator.prototype;
                    _proto.validate = function(options) {
                        const value = this.valueSelector(options);
                        const errors = this.rules.reduce((result, rule) => {
                            const validationResult = rule(value);
                            if (true !== validationResult) {
                                result[rule.name] = validationResult
                            }
                            return result
                        }, {});
                        return Object.keys(errors).length ? errors : true
                    };
                    return Validator
                }();
                exports.Validator = Validator
            },
        28396:
            /*!************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/options_validator/core/validator_rules.js ***!
              \************************************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.createValidatorRule = void 0;
                exports.createValidatorRule = (name, ruleFunc) => {
                    Object.defineProperty(ruleFunc, "name", {
                        value: name,
                        writable: false
                    });
                    return ruleFunc
                }
            },
        18397:
            /*!*********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/options_validator/index.js ***!
              \*********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                Object.defineProperty(exports, "SchedulerOptionsValidator", {
                    enumerable: true,
                    get: function() {
                        return _options_validator.SchedulerOptionsValidator
                    }
                });
                Object.defineProperty(exports, "SchedulerOptionsValidatorErrorsHandler", {
                    enumerable: true,
                    get: function() {
                        return _options_validator_errors_handler.SchedulerOptionsValidatorErrorsHandler
                    }
                });
                var _options_validator = __webpack_require__( /*! ./options_validator */ 8226);
                var _options_validator_errors_handler = __webpack_require__( /*! ./options_validator_errors_handler */ 39452)
            },
        8226:
            /*!*********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/options_validator/options_validator.js ***!
              \*********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.SchedulerOptionsValidator = void 0;
                var _index = __webpack_require__( /*! ./common/index */ 39146);
                var _index2 = __webpack_require__( /*! ./core/index */ 28410);
                var _validator_rules = __webpack_require__( /*! ./validator_rules */ 1603);

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let SchedulerOptionsValidator = function(_OptionsValidator) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(SchedulerOptionsValidator, _OptionsValidator);

                    function SchedulerOptionsValidator() {
                        return _OptionsValidator.call(this, {
                            startDayHour: new _index2.Validator(_ref => {
                                let {
                                    startDayHour: startDayHour
                                } = _ref;
                                return startDayHour
                            }, [_index.mustBeInteger, (0, _index.mustBeInRange)([0, 24])]),
                            endDayHour: new _index2.Validator(_ref2 => {
                                let {
                                    endDayHour: endDayHour
                                } = _ref2;
                                return endDayHour
                            }, [_index.mustBeInteger, (0, _index.mustBeInRange)([0, 24])]),
                            offset: new _index2.Validator(_ref3 => {
                                let {
                                    offset: offset
                                } = _ref3;
                                return offset
                            }, [_index.mustBeInteger, (0, _index.mustBeInRange)([-1440, 1440]), (0, _index.mustBeDivisibleBy)(5)]),
                            cellDuration: new _index2.Validator(_ref4 => {
                                let {
                                    cellDuration: cellDuration
                                } = _ref4;
                                return cellDuration
                            }, [_index.mustBeInteger, (0, _index.mustBeGreaterThan)(0)]),
                            startDayHourAndEndDayHour: new _index2.Validator(options => options, [_validator_rules.endDayHourMustBeGreaterThanStartDayHour]),
                            cellDurationAndVisibleInterval: new _index2.Validator(options => options, [_validator_rules.visibleIntervalMustBeDivisibleByCellDuration, _validator_rules.cellDurationMustBeLessThanVisibleInterval])
                        }) || this
                    }
                    return SchedulerOptionsValidator
                }(_index2.OptionsValidator);
                exports.SchedulerOptionsValidator = SchedulerOptionsValidator
            },
        39452:
            /*!************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/options_validator/options_validator_errors_handler.js ***!
              \************************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.SchedulerOptionsValidatorErrorsHandler = void 0;
                var _ui = (obj = __webpack_require__( /*! ../../../ui/widget/ui.errors */ 96688), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _index = __webpack_require__( /*! ./core/index */ 28410);

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const GLOBAL_ERROR_HANDLER = {
                    logError: errorCode => {
                        _ui.default.log(errorCode)
                    },
                    throwError: errorCode => {
                        throw _ui.default.Error(errorCode)
                    }
                };
                let SchedulerOptionsValidatorErrorsHandler = function(_OptionsValidatorErro) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(SchedulerOptionsValidatorErrorsHandler, _OptionsValidatorErro);

                    function SchedulerOptionsValidatorErrorsHandler() {
                        return _OptionsValidatorErro.call(this, {
                            startDayHour: "E1058",
                            endDayHour: "E1058",
                            startDayHourAndEndDayHour: "E1058",
                            offset: "E1061",
                            cellDuration: "E1062",
                            cellDurationAndVisibleInterval: "E1062"
                        }, GLOBAL_ERROR_HANDLER) || this
                    }
                    return SchedulerOptionsValidatorErrorsHandler
                }(_index.OptionsValidatorErrorHandler);
                exports.SchedulerOptionsValidatorErrorsHandler = SchedulerOptionsValidatorErrorsHandler
            },
        1603:
            /*!*******************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/options_validator/validator_rules.js ***!
              \*******************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.visibleIntervalMustBeDivisibleByCellDuration = exports.endDayHourMustBeGreaterThanStartDayHour = exports.cellDurationMustBeLessThanVisibleInterval = void 0;
                var _index = __webpack_require__( /*! ./common/index */ 39146);
                var _index2 = __webpack_require__( /*! ./core/index */ 28410);
                const endDayHourMustBeGreaterThanStartDayHour = (0, _index2.createValidatorRule)("endDayHourGreaterThanStartDayHour", _ref => {
                    let {
                        startDayHour: startDayHour,
                        endDayHour: endDayHour
                    } = _ref;
                    return (0, _index.greaterThan)(endDayHour, startDayHour) || "endDayHour: ".concat(endDayHour, " must be greater that startDayHour: ").concat(startDayHour, ".")
                });
                exports.endDayHourMustBeGreaterThanStartDayHour = endDayHourMustBeGreaterThanStartDayHour;
                const visibleIntervalMustBeDivisibleByCellDuration = (0, _index2.createValidatorRule)("visibleIntervalMustBeDivisibleByCellDuration", _ref2 => {
                    let {
                        cellDuration: cellDuration,
                        startDayHour: startDayHour,
                        endDayHour: endDayHour
                    } = _ref2;
                    const visibleInterval = 60 * (endDayHour - startDayHour);
                    return (0, _index.divisibleBy)(visibleInterval, cellDuration) || "endDayHour - startDayHour: ".concat(visibleInterval, " (minutes), must be divisible by cellDuration: ").concat(cellDuration, " (minutes).")
                });
                exports.visibleIntervalMustBeDivisibleByCellDuration = visibleIntervalMustBeDivisibleByCellDuration;
                const cellDurationMustBeLessThanVisibleInterval = (0, _index2.createValidatorRule)("cellDurationMustBeLessThanVisibleInterval", _ref3 => {
                    let {
                        cellDuration: cellDuration,
                        startDayHour: startDayHour,
                        endDayHour: endDayHour
                    } = _ref3;
                    const visibleInterval = 60 * (endDayHour - startDayHour);
                    return (0, _index.lessThan)(cellDuration, visibleInterval, false) || "endDayHour - startDayHour: ".concat(visibleInterval, " (minutes), must be greater or equal the cellDuration: ").concat(cellDuration, " (minutes).")
                });
                exports.cellDurationMustBeLessThanVisibleInterval = cellDurationMustBeLessThanVisibleInterval
            },
        547:
            /*!***********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/resources/m_agenda_resource_processor.js ***!
              \***********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.AgendaResourceProcessor = void 0;
                var _array = __webpack_require__( /*! ../../../core/utils/array */ 89386);
                var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 62754);
                var _m_utils = __webpack_require__( /*! ./m_utils */ 31359);

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }
                let PromiseItem = function(rawAppointment, promise) {
                    this.rawAppointment = rawAppointment;
                    this.promise = promise
                };
                let AgendaResourceProcessor = function() {
                    function AgendaResourceProcessor() {
                        let resourceDeclarations = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];
                        this._resourceDeclarations = resourceDeclarations;
                        this.isLoaded = false;
                        this.isLoading = false;
                        this.resourceMap = new Map;
                        this.appointmentPromiseQueue = []
                    }
                    var _proto = AgendaResourceProcessor.prototype;
                    _proto._pushAllResources = function() {
                        this.appointmentPromiseQueue.forEach(_ref => {
                            let {
                                promise: promise,
                                rawAppointment: rawAppointment
                            } = _ref;
                            const result = [];
                            this.resourceMap.forEach((resource, fieldName) => {
                                const item = {
                                    label: resource.label,
                                    values: []
                                };
                                if (fieldName in rawAppointment) {
                                    (0, _array.wrapToArray)(rawAppointment[fieldName]).forEach(value => item.values.push(resource.map.get(value)))
                                }
                                if (item.values.length) {
                                    result.push(item)
                                }
                            });
                            promise.resolve(result)
                        });
                        this.appointmentPromiseQueue = []
                    };
                    _proto._onPullResource = function(fieldName, valueName, displayName, label, items) {
                        const map = new Map;
                        items.forEach(item => map.set(item[valueName], item[displayName]));
                        this.resourceMap.set(fieldName, {
                            label: label,
                            map: map
                        })
                    };
                    _proto._hasResourceDeclarations = function(resources) {
                        if (0 === resources.length) {
                            this.appointmentPromiseQueue.forEach(_ref2 => {
                                let {
                                    promise: promise
                                } = _ref2;
                                return promise.resolve([])
                            });
                            this.appointmentPromiseQueue = [];
                            return false
                        }
                        return true
                    };
                    _proto._tryPullResources = function(resources, resultAsync) {
                        if (!this.isLoading) {
                            this.isLoading = true;
                            const promises = [];
                            resources.forEach(resource => {
                                const promise = (new _deferred.Deferred).done(items => this._onPullResource((0, _m_utils.getFieldExpr)(resource), (0, _m_utils.getValueExpr)(resource), (0, _m_utils.getDisplayExpr)(resource), resource.label, items));
                                promises.push(promise);
                                const dataSource = (0, _m_utils.getWrappedDataSource)(resource.dataSource);
                                if (dataSource.isLoaded()) {
                                    promise.resolve(dataSource.items())
                                } else {
                                    dataSource.load().done(list => promise.resolve(list)).fail(() => promise.reject())
                                }
                            });
                            _deferred.when.apply(null, promises).done(() => {
                                this.isLoaded = true;
                                this.isLoading = false;
                                this._pushAllResources()
                            }).fail(() => resultAsync.reject())
                        }
                    };
                    _proto.initializeState = function() {
                        let resourceDeclarations = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];
                        this.resourceDeclarations = resourceDeclarations
                    };
                    _proto.createListAsync = function(rawAppointment) {
                        const resultAsync = new _deferred.Deferred;
                        this.appointmentPromiseQueue.push(new PromiseItem(rawAppointment, resultAsync));
                        if (this._hasResourceDeclarations(this.resourceDeclarations)) {
                            if (this.isLoaded) {
                                this._pushAllResources()
                            } else {
                                this._tryPullResources(this.resourceDeclarations, resultAsync)
                            }
                        }
                        return resultAsync.promise()
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(AgendaResourceProcessor, [{
                        key: "resourceDeclarations",
                        get: function() {
                            return this._resourceDeclarations
                        },
                        set: function(value) {
                            this._resourceDeclarations = value;
                            this.isLoaded = false;
                            this.isLoading = false;
                            this.resourceMap.clear();
                            this.appointmentPromiseQueue = []
                        }
                    }]);
                    return AgendaResourceProcessor
                }();
                exports.AgendaResourceProcessor = AgendaResourceProcessor
            },
        31359:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/resources/m_utils.js ***!
              \***************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.setResourceToAppointment = exports.reduceResourcesTree = exports.loadResources = exports.isResourceMultiple = exports.groupAppointmentsByResourcesCore = exports.groupAppointmentsByResources = exports.getWrappedDataSource = exports.getValueExpr = exports.getResourcesDataByGroups = exports.getResourceTreeLeaves = exports.getResourceColor = exports.getResourceByField = exports.getPathToLeaf = exports.getPaintedResources = exports.getOrLoadResourceItem = exports.getNormalizedResources = exports.getGroupsObjectFromGroupsArray = exports.getGroupCount = exports.getFieldExpr = exports.getDisplayExpr = exports.getDataAccessors = exports.getCellGroups = exports.getAppointmentColor = exports.getAllGroups = exports.filterResources = exports.createResourcesTree = exports.createResourceEditorModel = exports.createReducedResourcesTree = exports.createExpressions = void 0;
                var _array = __webpack_require__( /*! ../../../core/utils/array */ 89386);
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 20576);
                var _data = __webpack_require__( /*! ../../../core/utils/data */ 47617);
                var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 95479);
                var _object = __webpack_require__( /*! ../../../core/utils/object */ 48013);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _data_source = __webpack_require__( /*! ../../../data/data_source/data_source */ 85273);
                var _utils = __webpack_require__( /*! ../../../data/data_source/utils */ 9234);
                var _hasResourceValue = __webpack_require__( /*! ../../../renovation/ui/scheduler/resources/hasResourceValue */ 31486);
                var _themes = __webpack_require__( /*! ../../../ui/themes */ 75811);

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const getValueExpr = resource => resource.valueExpr || "id";
                exports.getValueExpr = getValueExpr;
                const getDisplayExpr = resource => resource.displayExpr || "text";
                exports.getDisplayExpr = getDisplayExpr;
                const getFieldExpr = resource => resource.fieldExpr || resource.field;
                exports.getFieldExpr = getFieldExpr;
                const getWrappedDataSource = dataSource => {
                    if (dataSource instanceof _data_source.DataSource) {
                        return dataSource
                    }
                    const result = _extends(_extends({}, (0, _utils.normalizeDataSourceOptions)(dataSource)), {
                        pageSize: 0
                    });
                    if (!Array.isArray(dataSource)) {
                        result.filter = dataSource.filter
                    }
                    return new _data_source.DataSource(result)
                };
                exports.getWrappedDataSource = getWrappedDataSource;
                const createResourcesTree = groups => {
                    let leafIndex = 0;
                    const make = (group, groupIndex, result, parent) => {
                        var _a;
                        result = result || [];
                        for (let itemIndex = 0; itemIndex < group.items.length; itemIndex++) {
                            const currentGroupItem = group.items[itemIndex];
                            const resultItem = {
                                name: group.name,
                                value: currentGroupItem.id,
                                title: currentGroupItem.text,
                                data: null === (_a = group.data) || void 0 === _a ? void 0 : _a[itemIndex],
                                children: [],
                                parent: parent || null
                            };
                            const nextGroupIndex = groupIndex + 1;
                            if (groups[nextGroupIndex]) {
                                make(groups[nextGroupIndex], nextGroupIndex, resultItem.children, resultItem)
                            }
                            if (!resultItem.children.length) {
                                resultItem.leafIndex = leafIndex;
                                leafIndex++
                            }
                            result.push(resultItem)
                        }
                        return result
                    };
                    return make(groups[0], 0)
                };
                exports.createResourcesTree = createResourcesTree;
                const getPathToLeaf = (leafIndex, groups) => {
                    const tree = createResourcesTree(groups);
                    const findLeafByIndex = (data, index) => {
                        for (let i = 0; i < data.length; i++) {
                            if (data[i].leafIndex === index) {
                                return data[i]
                            }
                            const leaf = findLeafByIndex(data[i].children, index);
                            if (leaf) {
                                return leaf
                            }
                        }
                    };
                    const makeBranch = (leaf, result) => {
                        result = result || [];
                        result.push(leaf.value);
                        if (leaf.parent) {
                            makeBranch(leaf.parent, result)
                        }
                        return result
                    };
                    const leaf = findLeafByIndex(tree, leafIndex);
                    return makeBranch(leaf).reverse()
                };
                exports.getPathToLeaf = getPathToLeaf;
                const getCellGroups = (groupIndex, groups) => {
                    const result = [];
                    if (getGroupCount(groups)) {
                        if (groupIndex < 0) {
                            return
                        }
                        const path = getPathToLeaf(groupIndex, groups);
                        for (let i = 0; i < groups.length; i++) {
                            result.push({
                                name: groups[i].name,
                                id: path[i]
                            })
                        }
                    }
                    return result
                };
                exports.getCellGroups = getCellGroups;
                const getGroupCount = groups => {
                    let result = 0;
                    for (let i = 0, len = groups.length; i < len; i++) {
                        if (!i) {
                            result = groups[i].items.length
                        } else {
                            result *= groups[i].items.length
                        }
                    }
                    return result
                };
                exports.getGroupCount = getGroupCount;
                const getGroupsObjectFromGroupsArray = groupsArray => groupsArray.reduce((currentGroups, _ref) => {
                    let {
                        name: name,
                        id: id
                    } = _ref;
                    return _extends(_extends({}, currentGroups), {
                        [name]: id
                    })
                }, {});
                exports.getGroupsObjectFromGroupsArray = getGroupsObjectFromGroupsArray;
                exports.getAllGroups = groups => {
                    const groupCount = getGroupCount(groups);
                    return [...new Array(groupCount)].map((_, groupIndex) => {
                        const groupsArray = getCellGroups(groupIndex, groups);
                        return getGroupsObjectFromGroupsArray(groupsArray)
                    })
                };
                const getResourceByField = (fieldName, loadedResources) => {
                    for (let i = 0; i < loadedResources.length; i++) {
                        const resource = loadedResources[i];
                        if (resource.name === fieldName) {
                            return resource.data
                        }
                    }
                    return []
                };
                exports.getResourceByField = getResourceByField;
                exports.createResourceEditorModel = (resources, loadedResources) => resources.map(resource => {
                    const dataField = getFieldExpr(resource);
                    const dataSource = getResourceByField(dataField, loadedResources);
                    return {
                        editorOptions: {
                            dataSource: dataSource.length ? dataSource : getWrappedDataSource(resource.dataSource),
                            displayExpr: getDisplayExpr(resource),
                            valueExpr: getValueExpr(resource),
                            stylingMode: (0, _themes.isFluent)((0, _themes.current)()) ? "filled" : "outlined"
                        },
                        dataField: dataField,
                        editorType: resource.allowMultiple ? "dxTagBox" : "dxSelectBox",
                        label: {
                            text: resource.label || dataField
                        }
                    }
                });
                const isResourceMultiple = (resources, resourceField) => {
                    const resource = resources.find(resource => {
                        const field = getFieldExpr(resource);
                        return field === resourceField
                    });
                    return !!(null === resource || void 0 === resource ? void 0 : resource.allowMultiple)
                };
                exports.isResourceMultiple = isResourceMultiple;
                const filterResources = (resources, fields) => resources.filter(resource => {
                    const field = getFieldExpr(resource);
                    return fields.indexOf(field) > -1
                });
                exports.filterResources = filterResources;
                const getPaintedResources = (resources, groups) => {
                    const newGroups = groups || [];
                    const result = resources.find(resource => resource.useColorAsDefault);
                    if (result) {
                        return result
                    }
                    const newResources = newGroups.length ? filterResources(resources, newGroups) : resources;
                    return newResources[newResources.length - 1]
                };
                exports.getPaintedResources = getPaintedResources;
                const getOrLoadResourceItem = (resources, resourceLoaderMap, field, value) => {
                    const result = new _deferred.Deferred;
                    resources.filter(resource => getFieldExpr(resource) === field && (0, _type.isDefined)(resource.dataSource)).forEach(resource => {
                        const wrappedDataSource = getWrappedDataSource(resource.dataSource);
                        const valueExpr = getValueExpr(resource);
                        if (!resourceLoaderMap.has(field)) {
                            resourceLoaderMap.set(field, wrappedDataSource.load())
                        }
                        resourceLoaderMap.get(field).done(data => {
                            const getter = (0, _data.compileGetter)(valueExpr);
                            const filteredData = data.filter(resource => (0, _common.equalByValue)(getter(resource), value));
                            result.resolve(filteredData[0])
                        }).fail(() => {
                            resourceLoaderMap.delete(field);
                            result.reject()
                        })
                    });
                    return result.promise()
                };
                exports.getOrLoadResourceItem = getOrLoadResourceItem;
                const getDataAccessors = (dataAccessors, fieldName, type) => {
                    const actions = dataAccessors[type];
                    return actions[fieldName]
                };
                exports.getDataAccessors = getDataAccessors;
                exports.groupAppointmentsByResources = function(config, appointments) {
                    let groups = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : [];
                    let result = {
                        0: appointments
                    };
                    if (groups.length && config.loadedResources.length) {
                        result = groupAppointmentsByResourcesCore(config, appointments, config.loadedResources)
                    }
                    let totalResourceCount = 0;
                    config.loadedResources.forEach((resource, index) => {
                        if (!index) {
                            totalResourceCount = resource.items.length
                        } else {
                            totalResourceCount *= resource.items.length
                        }
                    });
                    for (let index = 0; index < totalResourceCount; index++) {
                        const key = index.toString();
                        if (result[key]) {
                            continue
                        }
                        result[key] = []
                    }
                    return result
                };
                const groupAppointmentsByResourcesCore = (config, appointments, resources) => {
                    const tree = createResourcesTree(resources);
                    const result = {};
                    appointments.forEach(appointment => {
                        const treeLeaves = getResourceTreeLeaves((field, action) => getDataAccessors(config.dataAccessors, field, action), tree, appointment);
                        for (let i = 0; i < treeLeaves.length; i++) {
                            if (!result[treeLeaves[i]]) {
                                result[treeLeaves[i]] = []
                            }
                            result[treeLeaves[i]].push((0, _object.deepExtendArraySafe)({}, appointment, true))
                        }
                    });
                    return result
                };
                exports.groupAppointmentsByResourcesCore = groupAppointmentsByResourcesCore;
                const getResourceTreeLeaves = (getDataAccessors, tree, rawAppointment, result) => {
                    result = result || [];
                    for (let i = 0; i < tree.length; i++) {
                        if (!hasGroupItem(getDataAccessors, rawAppointment, tree[i].name, tree[i].value)) {
                            continue
                        }
                        if ((0, _type.isDefined)(tree[i].leafIndex)) {
                            result.push(tree[i].leafIndex)
                        }
                        if (tree[i].children) {
                            getResourceTreeLeaves(getDataAccessors, tree[i].children, rawAppointment, result)
                        }
                    }
                    return result
                };
                exports.getResourceTreeLeaves = getResourceTreeLeaves;
                const hasGroupItem = (getDataAccessors, rawAppointment, groupName, itemValue) => {
                    const resourceValue = getDataAccessors(groupName, "getter")(rawAppointment);
                    return (0, _hasResourceValue.hasResourceValue)((0, _array.wrapToArray)(resourceValue), itemValue)
                };
                exports.createReducedResourcesTree = (loadedResources, getDataAccessors, appointments) => {
                    const tree = createResourcesTree(loadedResources);
                    return reduceResourcesTree(getDataAccessors, tree, appointments)
                };
                const reduceResourcesTree = (getDataAccessors, tree, existingAppointments, _result) => {
                    _result = _result ? _result.children : [];
                    tree.forEach((node, index) => {
                        let ok = false;
                        const resourceName = node.name;
                        const resourceValue = node.value;
                        const resourceTitle = node.title;
                        const resourceData = node.data;
                        const resourceGetter = getDataAccessors(resourceName, "getter");
                        existingAppointments.forEach(appointment => {
                            if (!ok) {
                                const resourceFromAppointment = resourceGetter(appointment);
                                if (Array.isArray(resourceFromAppointment)) {
                                    if (resourceFromAppointment.includes(resourceValue)) {
                                        _result.push({
                                            name: resourceName,
                                            value: resourceValue,
                                            title: resourceTitle,
                                            data: resourceData,
                                            children: []
                                        });
                                        ok = true
                                    }
                                } else if (resourceFromAppointment === resourceValue) {
                                    _result.push({
                                        name: resourceName,
                                        value: resourceValue,
                                        title: resourceTitle,
                                        data: resourceData,
                                        children: []
                                    });
                                    ok = true
                                }
                            }
                        });
                        if (ok && node.children && node.children.length) {
                            reduceResourcesTree(getDataAccessors, node.children, existingAppointments, _result[index])
                        }
                    });
                    return _result
                };
                exports.reduceResourcesTree = reduceResourcesTree;
                exports.getResourcesDataByGroups = (loadedResources, resources, groups) => {
                    if (!groups || !groups.length) {
                        return loadedResources
                    }
                    const fieldNames = {};
                    const currentResourcesData = [];
                    groups.forEach(group => {
                        (0, _iterator.each)(group, (name, value) => {
                            fieldNames[name] = value
                        })
                    });
                    const resourceData = loadedResources.filter(_ref2 => {
                        let {
                            name: name
                        } = _ref2;
                        return (0, _type.isDefined)(fieldNames[name])
                    });
                    resourceData.forEach(data => currentResourcesData.push((0, _extend.extend)({}, data)));
                    currentResourcesData.forEach(currentResource => {
                        const {
                            items: items,
                            data: data,
                            name: resourceName
                        } = currentResource;
                        const resource = filterResources(resources, [resourceName])[0] || {};
                        const valueExpr = getValueExpr(resource);
                        const filteredItems = [];
                        const filteredData = [];
                        groups.filter(group => (0, _type.isDefined)(group[resourceName])).forEach(group => {
                            (0, _iterator.each)(group, (name, value) => {
                                if (!filteredItems.filter(item => item.id === value && item[valueExpr] === name).length) {
                                    const currentItems = items.filter(item => item.id === value);
                                    const currentData = data.filter(item => item[valueExpr] === value);
                                    filteredItems.push(...currentItems);
                                    filteredData.push(...currentData)
                                }
                            })
                        });
                        currentResource.items = filteredItems;
                        currentResource.data = filteredData
                    });
                    return currentResourcesData
                };
                exports.setResourceToAppointment = (resources, dataAccessors, appointment, groups) => {
                    const resourcesSetter = dataAccessors.setter;
                    for (const name in groups) {
                        const resourceData = groups[name];
                        const value = isResourceMultiple(resources, name) ? (0, _array.wrapToArray)(resourceData) : resourceData;
                        resourcesSetter[name](appointment, value)
                    }
                };
                const getResourceColor = (resources, resourceLoaderMap, field, value) => {
                    const result = new _deferred.Deferred;
                    const resource = filterResources(resources, [field])[0] || {};
                    const colorExpr = resource.colorExpr || "color";
                    const colorGetter = (0, _data.compileGetter)(colorExpr);
                    getOrLoadResourceItem(resources, resourceLoaderMap, field, value).done(resource => result.resolve(colorGetter(resource))).fail(() => result.reject());
                    return result.promise()
                };
                exports.getResourceColor = getResourceColor;
                exports.getAppointmentColor = (resourceConfig, appointmentConfig) => {
                    const {
                        resources: resources,
                        dataAccessors: dataAccessors,
                        loadedResources: loadedResources,
                        resourceLoaderMap: resourceLoaderMap
                    } = resourceConfig;
                    const {
                        groupIndex: groupIndex,
                        groups: groups,
                        itemData: itemData
                    } = appointmentConfig;
                    const paintedResources = getPaintedResources(resources || [], groups);
                    if (paintedResources) {
                        const field = getFieldExpr(paintedResources);
                        const cellGroups = getCellGroups(groupIndex, loadedResources);
                        const resourcesDataAccessors = getDataAccessors(dataAccessors, field, "getter");
                        const resourceValues = (0, _array.wrapToArray)(resourcesDataAccessors(itemData));
                        let groupId = resourceValues[0];
                        for (let i = 0; i < cellGroups.length; i++) {
                            if (cellGroups[i].name === field) {
                                groupId = cellGroups[i].id;
                                break
                            }
                        }
                        return getResourceColor(resources, resourceLoaderMap, field, groupId)
                    }
                    return (new _deferred.Deferred).resolve().promise()
                };
                exports.createExpressions = function() {
                    let resources = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];
                    const result = {
                        getter: {},
                        setter: {}
                    };
                    resources.forEach(resource => {
                        const field = getFieldExpr(resource);
                        result.getter[field] = (0, _data.compileGetter)(field);
                        result.setter[field] = (0, _data.compileSetter)(field)
                    });
                    return result
                };
                exports.loadResources = (groups, resources, resourceLoaderMap) => {
                    const result = new _deferred.Deferred;
                    const deferreds = [];
                    const newGroups = groups || [];
                    const newResources = resources || [];
                    let loadedResources = [];
                    filterResources(newResources, newGroups).forEach(resource => {
                        const deferred = new _deferred.Deferred;
                        const name = getFieldExpr(resource);
                        deferreds.push(deferred);
                        const dataSourcePromise = getWrappedDataSource(resource.dataSource).load();
                        resourceLoaderMap.set(name, dataSourcePromise);
                        dataSourcePromise.done(data => {
                            const items = ((resource, data) => {
                                const valueGetter = (0, _data.compileGetter)(getValueExpr(resource));
                                const displayGetter = (0, _data.compileGetter)(getDisplayExpr(resource));
                                return data.map(item => {
                                    const result = {
                                        id: valueGetter(item),
                                        text: displayGetter(item)
                                    };
                                    if (item.color) {
                                        result.color = item.color
                                    }
                                    return result
                                })
                            })(resource, data);
                            deferred.resolve({
                                name: name,
                                items: items,
                                data: data
                            })
                        }).fail(() => deferred.reject())
                    });
                    if (!deferreds.length) {
                        return result.resolve(loadedResources)
                    }
                    _deferred.when.apply(null, deferreds).done((function() {
                        for (var _len = arguments.length, resources = new Array(_len), _key = 0; _key < _len; _key++) {
                            resources[_key] = arguments[_key]
                        }
                        const hasEmpty = resources.some(r => 0 === r.items.length);
                        loadedResources = hasEmpty ? [] : resources;
                        result.resolve(loadedResources)
                    })).fail(() => result.reject());
                    return result.promise()
                };
                exports.getNormalizedResources = (rawAppointment, dataAccessors, resources) => {
                    const result = {};
                    (0, _iterator.each)(dataAccessors.resources.getter, fieldName => {
                        const value = dataAccessors.resources.getter[fieldName](rawAppointment);
                        if ((0, _type.isDefined)(value)) {
                            const isMultiple = isResourceMultiple(resources, fieldName);
                            const resourceValue = isMultiple ? (0, _array.wrapToArray)(value) : value;
                            result[fieldName] = resourceValue
                        }
                    });
                    return result
                }
            },
        60544:
            /*!***************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/shaders/m_current_time_shader.js ***!
              \***************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _renderer = (obj = __webpack_require__( /*! ../../../core/renderer */ 68374), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                let CurrentTimeShader = function() {
                    function CurrentTimeShader(_workSpace) {
                        this._workSpace = _workSpace;
                        this._$container = this._workSpace._dateTableScrollable.$content()
                    }
                    var _proto = CurrentTimeShader.prototype;
                    _proto.render = function() {
                        this.initShaderElements();
                        this.renderShader();
                        this._shader.forEach(shader => {
                            this._$container.append(shader)
                        })
                    };
                    _proto.initShaderElements = function() {
                        this._$shader = this.createShader();
                        this._shader = [];
                        this._shader.push(this._$shader)
                    };
                    _proto.renderShader = function() {};
                    _proto.createShader = function() {
                        return (0, _renderer.default)("<div>").addClass("dx-scheduler-date-time-shader")
                    };
                    _proto.clean = function() {
                        this._$container && this._$container.find(".".concat("dx-scheduler-date-time-shader")).remove()
                    };
                    return CurrentTimeShader
                }();
                var _default = CurrentTimeShader;
                exports.default = _default
            },
        65295:
            /*!**************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/shaders/m_current_time_shader_horizontal.js ***!
              \**************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _position = __webpack_require__( /*! ../../../core/utils/position */ 37518);
                var _size = __webpack_require__( /*! ../../../core/utils/size */ 58664);
                var _m_current_time_shader = (obj = __webpack_require__( /*! ./m_current_time_shader */ 60544), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let HorizontalCurrentTimeShader = function(_CurrentTimeShader) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(HorizontalCurrentTimeShader, _CurrentTimeShader);

                    function HorizontalCurrentTimeShader() {
                        return _CurrentTimeShader.apply(this, arguments) || this
                    }
                    var _proto = HorizontalCurrentTimeShader.prototype;
                    _proto.renderShader = function() {
                        const groupCount = this._workSpace._isHorizontalGroupedWorkSpace() ? this._workSpace._getGroupCount() : 1;
                        for (let i = 0; i < groupCount; i += 1) {
                            const isFirstShader = 0 === i;
                            const $shader = isFirstShader ? this._$shader : this.createShader();
                            if (this._workSpace.isGroupedByDate()) {
                                this._customizeGroupedByDateShader($shader, i)
                            } else {
                                this._customizeShader($shader, i)
                            }!isFirstShader && this._shader.push($shader)
                        }
                    };
                    _proto._customizeShader = function($shader, groupIndex) {
                        const shaderWidth = this._workSpace.getIndicationWidth();
                        this._applyShaderWidth($shader, shaderWidth);
                        if (groupIndex >= 1) {
                            const workSpace = this._workSpace;
                            const indicationWidth = workSpace._getCellCount() * workSpace.getCellWidth();
                            $shader.css("left", indicationWidth)
                        } else {
                            $shader.css("left", 0)
                        }
                    };
                    _proto._applyShaderWidth = function($shader, width) {
                        const maxWidth = (0, _position.getBoundingRect)(this._$container.get(0)).width;
                        if (width > maxWidth) {
                            width = maxWidth
                        }
                        if (width > 0) {
                            (0, _size.setWidth)($shader, width)
                        }
                    };
                    _proto._customizeGroupedByDateShader = function($shader, groupIndex) {
                        const cellCount = this._workSpace.getIndicationCellCount();
                        const integerPart = Math.floor(cellCount);
                        const fractionPart = cellCount - integerPart;
                        const isFirstShaderPart = 0 === groupIndex;
                        const workSpace = this._workSpace;
                        const shaderWidth = isFirstShaderPart ? workSpace.getIndicationWidth() : fractionPart * workSpace.getCellWidth();
                        let shaderLeft;
                        this._applyShaderWidth($shader, shaderWidth);
                        if (isFirstShaderPart) {
                            shaderLeft = workSpace._getCellCount() * workSpace.getCellWidth() * groupIndex
                        } else {
                            shaderLeft = workSpace.getCellWidth() * integerPart * workSpace._getGroupCount() + groupIndex * workSpace.getCellWidth()
                        }
                        $shader.css("left", shaderLeft)
                    };
                    return HorizontalCurrentTimeShader
                }(_m_current_time_shader.default);
                var _default = HorizontalCurrentTimeShader;
                exports.default = _default
            },
        11029:
            /*!************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/shaders/m_current_time_shader_vertical.js ***!
              \************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _size = __webpack_require__( /*! ../../../core/utils/size */ 58664);
                var _m_current_time_shader = _interopRequireDefault(__webpack_require__( /*! ./m_current_time_shader */ 60544));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let VerticalCurrentTimeShader = function(_CurrentTimeShader) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(VerticalCurrentTimeShader, _CurrentTimeShader);

                    function VerticalCurrentTimeShader() {
                        return _CurrentTimeShader.apply(this, arguments) || this
                    }
                    var _proto = VerticalCurrentTimeShader.prototype;
                    _proto.renderShader = function() {
                        let shaderHeight = this._getShaderHeight();
                        const maxHeight = this._getShaderMaxHeight();
                        const isSolidShader = shaderHeight > maxHeight;
                        if (shaderHeight > maxHeight) {
                            shaderHeight = maxHeight
                        }(0, _size.setHeight)(this._$shader, shaderHeight);
                        const groupCount = this._workSpace._getGroupCount() || 1;
                        if (this._workSpace.isGroupedByDate()) {
                            this._renderGroupedByDateShaderParts(groupCount, shaderHeight, maxHeight, isSolidShader)
                        } else {
                            this._renderShaderParts(groupCount, shaderHeight, maxHeight, isSolidShader)
                        }
                    };
                    _proto._renderShaderParts = function(groupCount, shaderHeight, maxHeight, isSolidShader) {
                        for (let i = 0; i < groupCount; i++) {
                            const shaderWidth = this._getShaderWidth(i);
                            this._renderTopShader(this._$shader, shaderHeight, shaderWidth, i);
                            !isSolidShader && this._renderBottomShader(this._$shader, maxHeight, shaderHeight, shaderWidth, i);
                            this._renderAllDayShader(shaderWidth, i)
                        }
                    };
                    _proto._renderGroupedByDateShaderParts = function(groupCount, shaderHeight, maxHeight, isSolidShader) {
                        const shaderWidth = this._getShaderWidth(0);
                        let bottomShaderWidth = shaderWidth - this._workSpace.getCellWidth();
                        if (shaderHeight < 0) {
                            shaderHeight = 0;
                            bottomShaderWidth = shaderWidth
                        }
                        this._renderTopShader(this._$shader, shaderHeight, shaderWidth * groupCount, 0);
                        !isSolidShader && this._renderBottomShader(this._$shader, maxHeight, shaderHeight, bottomShaderWidth * groupCount + this._workSpace.getCellWidth(), 0);
                        this._renderAllDayShader(shaderWidth * groupCount, 0)
                    };
                    _proto._renderTopShader = function($shader, height, width, i) {
                        this._$topShader = (0, _renderer.default)("<div>").addClass("dx-scheduler-date-time-shader-top");
                        if (width) {
                            (0, _size.setWidth)(this._$topShader, width)
                        }
                        if (height) {
                            (0, _size.setHeight)(this._$topShader, height)
                        }
                        this._$topShader.css("marginTop", this._getShaderTopOffset(i));
                        this._$topShader.css("left", this._getShaderOffset(i, width));
                        $shader.append(this._$topShader)
                    };
                    _proto._renderBottomShader = function($shader, maxHeight, height, width, i) {
                        this._$bottomShader = (0, _renderer.default)("<div>").addClass("dx-scheduler-date-time-shader-bottom");
                        const shaderWidth = height < 0 ? width : width - this._workSpace.getCellWidth();
                        const shaderHeight = height < 0 ? maxHeight : maxHeight - height;
                        (0, _size.setWidth)(this._$bottomShader, shaderWidth);
                        (0, _size.setHeight)(this._$bottomShader, shaderHeight);
                        this._$bottomShader.css("left", this._getShaderOffset(i, width - this._workSpace.getCellWidth()));
                        $shader.append(this._$bottomShader)
                    };
                    _proto._renderAllDayShader = function(shaderWidth, i) {
                        if (this._workSpace.option("showAllDayPanel")) {
                            this._$allDayIndicator = (0, _renderer.default)("<div>").addClass("dx-scheduler-date-time-shader-all-day");
                            (0, _size.setHeight)(this._$allDayIndicator, this._workSpace.getAllDayHeight());
                            (0, _size.setWidth)(this._$allDayIndicator, shaderWidth);
                            this._$allDayIndicator.css("left", this._getShaderOffset(i, shaderWidth));
                            this._workSpace._$allDayPanel.prepend(this._$allDayIndicator)
                        }
                    };
                    _proto._getShaderOffset = function(i, width) {
                        return this._workSpace.getGroupedStrategy().getShaderOffset(i, width)
                    };
                    _proto._getShaderTopOffset = function(i) {
                        return this._workSpace.getGroupedStrategy().getShaderTopOffset(i)
                    };
                    _proto._getShaderHeight = function() {
                        return this._workSpace.getGroupedStrategy().getShaderHeight()
                    };
                    _proto._getShaderMaxHeight = function() {
                        return this._workSpace.getGroupedStrategy().getShaderMaxHeight()
                    };
                    _proto._getShaderWidth = function(i) {
                        return this._workSpace.getGroupedStrategy().getShaderWidth(i)
                    };
                    _proto.clean = function() {
                        _CurrentTimeShader.prototype.clean.call(this);
                        this._workSpace && this._workSpace._$allDayPanel && this._workSpace._$allDayPanel.find(".".concat("dx-scheduler-date-time-shader-all-day")).remove()
                    };
                    return VerticalCurrentTimeShader
                }(_m_current_time_shader.default);
                var _default = VerticalCurrentTimeShader;
                exports.default = _default
            },
        23778:
            /*!******************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/timezones/m_utils_timezones_data.js ***!
              \******************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../core/errors */ 17381));
                var _math = __webpack_require__( /*! ../../../core/utils/math */ 60810);
                var _query = _interopRequireDefault(__webpack_require__( /*! ../../../data/query */ 96687));
                var _timezones_data = _interopRequireDefault(__webpack_require__( /*! ./timezones_data */ 28882));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const parseTimezone = timeZoneConfig => {
                    const {
                        offsets: offsets
                    } = timeZoneConfig;
                    const {
                        offsetIndices: offsetIndices
                    } = timeZoneConfig;
                    const {
                        untils: untils
                    } = timeZoneConfig;
                    const offsetList = offsets.split("|").map(value => parseInt(value));
                    const offsetIndexList = offsetIndices.split("").map(value => parseInt(value));
                    const dateList = (value = untils, value.split("|").map(until => {
                        if ("Infinity" === until) {
                            return null
                        }
                        return 1e3 * parseInt(until, 36)
                    })).map((accumulator = 0, value => accumulator += value));
                    var accumulator;
                    var value;
                    return {
                        offsetList: offsetList,
                        offsetIndexList: offsetIndexList,
                        dateList: dateList
                    }
                };
                let TimeZoneCache = function() {
                    function TimeZoneCache() {
                        this.map = new Map
                    }
                    var _proto = TimeZoneCache.prototype;
                    _proto.tryGet = function(id) {
                        if (!this.map.get(id)) {
                            const config = timeZoneDataUtils.getTimezoneById(id);
                            if (!config) {
                                return false
                            }
                            const timeZoneInfo = parseTimezone(config);
                            this.map.set(id, timeZoneInfo)
                        }
                        return this.map.get(id)
                    };
                    return TimeZoneCache
                }();
                const tzCache = new TimeZoneCache;
                const timeZoneDataUtils = {
                    _tzCache: tzCache,
                    _timeZones: _timezones_data.default.zones,
                    getDisplayedTimeZones(timestamp) {
                        const timeZones = this._timeZones.map(timezone => {
                            const timeZoneInfo = parseTimezone(timezone);
                            const offset = this.getUtcOffset(timeZoneInfo, timestamp);
                            const title = "(GMT ".concat(this.formatOffset(offset), ") ").concat(this.formatId(timezone.id));
                            return {
                                offset: offset,
                                title: title,
                                id: timezone.id
                            }
                        });
                        return (0, _query.default)(timeZones).sortBy("offset").toArray()
                    },
                    formatOffset(offset) {
                        const hours = Math.floor(offset);
                        const minutesInDecimal = offset - hours;
                        const signString = (0, _math.sign)(offset) >= 0 ? "+" : "-";
                        const hoursString = "0".concat(Math.abs(hours)).slice(-2);
                        const minutesString = minutesInDecimal > 0 ? ":".concat(60 * minutesInDecimal) : ":00";
                        return signString + hoursString + minutesString
                    },
                    formatId: id => id.split("/").join(" - ").split("_").join(" "),
                    getTimezoneById(id) {
                        if (!id) {
                            return
                        }
                        const tzList = this._timeZones;
                        for (let i = 0; i < tzList.length; i++) {
                            const currentId = tzList[i].id;
                            if (currentId === id) {
                                return tzList[i]
                            }
                        }
                        _errors.default.log("W0009", id);
                        return
                    },
                    getTimeZoneOffsetById(id, timestamp) {
                        const timeZoneInfo = tzCache.tryGet(id);
                        return timeZoneInfo ? this.getUtcOffset(timeZoneInfo, timestamp) : void 0
                    },
                    getTimeZoneDeclarationTuple(id, year) {
                        const timeZoneInfo = tzCache.tryGet(id);
                        return timeZoneInfo ? this.getTimeZoneDeclarationTupleCore(timeZoneInfo, year) : []
                    },
                    getTimeZoneDeclarationTupleCore(timeZoneInfo, year) {
                        const {
                            offsetList: offsetList
                        } = timeZoneInfo;
                        const {
                            offsetIndexList: offsetIndexList
                        } = timeZoneInfo;
                        const {
                            dateList: dateList
                        } = timeZoneInfo;
                        const tupleResult = [];
                        for (let i = 0; i < dateList.length; i++) {
                            const currentDate = dateList[i];
                            const currentYear = new Date(currentDate).getFullYear();
                            if (currentYear === year) {
                                const offset = offsetList[offsetIndexList[i + 1]];
                                tupleResult.push({
                                    date: currentDate,
                                    offset: -offset / 60
                                })
                            }
                            if (currentYear > year) {
                                break
                            }
                        }
                        return tupleResult
                    },
                    getUtcOffset(timeZoneInfo, dateTimeStamp) {
                        const {
                            offsetList: offsetList
                        } = timeZoneInfo;
                        const {
                            offsetIndexList: offsetIndexList
                        } = timeZoneInfo;
                        const {
                            dateList: dateList
                        } = timeZoneInfo;
                        const lastIntervalStartIndex = dateList.length - 1 - 1;
                        let index = lastIntervalStartIndex;
                        while (index >= 0 && dateTimeStamp < dateList[index]) {
                            index--
                        }
                        const offset = offsetList[offsetIndexList[index + 1]];
                        return -offset / 60 || offset
                    }
                };
                var _default = timeZoneDataUtils;
                exports.default = _default
            },
        28882:
            /*!**********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/timezones/timezones_data.js ***!
              \**********************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                exports.default = {
                    zones: [{
                        id: "Africa/Abidjan",
                        untils: "-u9rgl4|Infinity",
                        offsets: "16.1333|0",
                        offsetIndices: "01"
                    }, {
                        id: "Africa/Accra",
                        untils: "-r507yk|1e3pak|681qo|cjvlc|681qo|cjvlc|681qo|cjvlc|681qo|clq9c|681qo|cjvlc|681qo|cjvlc|681qo|cjvlc|681qo|clq9c|681qo|cjvlc|681qo|cjvlc|681qo|cjvlc|681qo|clq9c|681qo|cjvlc|681qo|cjvlc|681qo|cjvlc|681qo|clq9c|681qo|cjvlc|681qo|cjvlc|681qo|cjvlc|681qo|clq9c|681qo|cjvlc|681qo|cjvlc|681qo|Infinity",
                        offsets: "0.8667|0|-20",
                        offsetIndices: "012121212121212121212121212121212121212121212121"
                    }, {
                        id: "Africa/Addis_Ababa",
                        untils: "-lnsetg|s8mhg|57v020|afrrb0|Infinity",
                        offsets: "-147.2667|-180|-150|-165",
                        offsetIndices: "01231"
                    }, {
                        id: "Africa/Algiers",
                        untils: "-uozn3l|2qx1nl|5luo0|8y800|a4tc0|7vc00|auqo0|7idc0|b7pc0|6sg00|cyo00|7ayo0|53c00|9idxc0|3i040|51mw0|253uk0|9o2k0|92040|8l3s0|jutc0|4uy840|3rdzw0|46xc00|7x6o0|2xco40|8n180|7x9g0|9d440|kiqg0|9d440|9q2s0|9cyk0|Infinity",
                        offsets: "-9.35|0|-60|-120",
                        offsetIndices: "0121212121212121232321212122321212"
                    }, {
                        id: "Africa/Asmara",
                        untils: "-lnsetg|s8mhg|57v020|afrrb0|Infinity",
                        offsets: "-147.2667|-180|-150|-165",
                        offsetIndices: "01231"
                    }, {
                        id: "Africa/Asmera",
                        untils: "-lnsetg|s8mhg|57v020|afrrb0|Infinity",
                        offsets: "-147.2667|-180|-150|-165",
                        offsetIndices: "01231"
                    }, {
                        id: "Africa/Bamako",
                        untils: "-u9rgl4|Infinity",
                        offsets: "16.1333|0",
                        offsetIndices: "01"
                    }, {
                        id: "Africa/Bangui",
                        untils: "-q9qbao|Infinity",
                        offsets: "-13.6|-60",
                        offsetIndices: "01"
                    }, {
                        id: "Africa/Banjul",
                        untils: "-u9rgl4|Infinity",
                        offsets: "16.1333|0",
                        offsetIndices: "01"
                    }, {
                        id: "Africa/Bissau",
                        untils: "-u9rek0|wvoyo0|Infinity",
                        offsets: "62.3333|60|0",
                        offsetIndices: "012"
                    }, {
                        id: "Africa/Blantyre",
                        untils: "-yvtfd8|Infinity",
                        offsets: "-130.3333|-120",
                        offsetIndices: "01"
                    }, {
                        id: "Africa/Brazzaville",
                        untils: "-q9qbao|Infinity",
                        offsets: "-13.6|-60",
                        offsetIndices: "01"
                    }, {
                        id: "Africa/Bujumbura",
                        untils: "-yvtfd8|Infinity",
                        offsets: "-130.3333|-120",
                        offsetIndices: "01"
                    }, {
                        id: "Africa/Cairo",
                        untils: "-fdls80|40d80|a31g0|7x3w0|a4w40|aqyk0|80ys0|b07w0|7tk40|b07w0|8jhg0|a8fw0|60go40|7el80|awo40|7v980|awqw0|7tk40|b07w0|7tk40|ayd80|7tk40|ayd80|7tk40|ayd80|7tk40|b07w0|7tk40|ayd80|7tk40|ayd80|7ves0|awik0|7ves0|ayd80|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|awik0|7ves0|f9x80|3i040|eluk0|462s0|ayd80|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|b5rw0|7m5g0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|awik0|7ves0|awik0|7ves0|aqvs0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7k580|b5xg0|6u7w0|bvus0|6h980|c8tg0|64ak0|cyqs0|5anw0|1jms0|12t80|1w22s0|25p80|1sw40|2vmk0|Infinity",
                        offsets: "-120|-180",
                        offsetIndices: "0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Africa/Casablanca",
                        untils: "-tblt9g|di7nxg|3huk0|51k40|2znuk0|2dp9g0|776k0|8nt2s0|657w0|3ifxg0|3jp80|va040|4qak0|e1ms0|7pp80|cnms0|3afw0|2xi840|xqqk0|bp56s0|4qak0|e1ms0|45x80|d2g40|51ek0|c8tg0|64ak0|e1sc0|47uo0|1leo0|23xc0|asw00|3lmo0|1qyo0|40g00|7x6o0|4mo00|1stc0|4deo0|7x6o0|3ylc0|1stc0|51hc0|7x6o0|3lmo0|1stc0|5reo0|7k800|2vpc0|25s00|64dc0|7k800|2iqo0|1stc0|gkao0|1stc0|g7c00|25s00|g7c00|1stc0|g7c00|25s00|g7c00|1stc0|gkao0|1stc0|g7c00|25s00|g7c00|1stc0|gkao0|1stc0|g7c00|25s00|g7c00|1stc0|g7c00|25s00|g7c00|1stc0|gkao0|1stc0|g7c00|25s00|g7c00|1stc0|g7c00|25s00|g7c00|25s00|g7c00|1stc0|g7c00|25s00|Infinity",
                        offsets: "30.3333|0|-60",
                        offsetIndices: "01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212"
                    }, {
                        id: "Africa/Ceuta",
                        untils: "-qyiys0|7x3w0|2vt440|8sqs0|ssyk0|8n6s0|9px80|905g0|a2yo0|902o0|k69dc0|657w0|3ifxg0|3jp80|va040|4qak0|e1ms0|7pp80|cnms0|3afw0|2xi840|129us0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "0|-60|-120",
                        offsetIndices: "010101010101010101010121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Africa/Conakry",
                        untils: "-u9rgl4|Infinity",
                        offsets: "16.1333|0",
                        offsetIndices: "01"
                    }, {
                        id: "Africa/Dakar",
                        untils: "-u9rgl4|Infinity",
                        offsets: "16.1333|0",
                        offsetIndices: "01"
                    }, {
                        id: "Africa/Dar_es_Salaam",
                        untils: "-lnsetg|s8mhg|57v020|afrrb0|Infinity",
                        offsets: "-147.2667|-180|-150|-165",
                        offsetIndices: "01231"
                    }, {
                        id: "Africa/Djibouti",
                        untils: "-lnsetg|s8mhg|57v020|afrrb0|Infinity",
                        offsets: "-147.2667|-180|-150|-165",
                        offsetIndices: "01231"
                    }, {
                        id: "Africa/Douala",
                        untils: "-q9qbao|Infinity",
                        offsets: "-13.6|-60",
                        offsetIndices: "01"
                    }, {
                        id: "Africa/El_Aaiun",
                        untils: "-isdxk0|m2g0c0|vek0|4qak0|e1ms0|7pp80|cnms0|3afw0|fke5g0|4qak0|e1ms0|45x80|d2g40|51ek0|c8tg0|64ak0|e1sc0|47uo0|1leo0|23xc0|asw00|3lmo0|1qyo0|40g00|7x6o0|4mo00|1stc0|4deo0|7x6o0|3ylc0|1stc0|51hc0|7x6o0|3lmo0|1stc0|5reo0|7k800|2vpc0|25s00|64dc0|7k800|2iqo0|1stc0|gkao0|1stc0|g7c00|25s00|g7c00|1stc0|g7c00|25s00|g7c00|1stc0|gkao0|1stc0|g7c00|25s00|g7c00|1stc0|gkao0|1stc0|g7c00|25s00|g7c00|1stc0|g7c00|25s00|g7c00|1stc0|gkao0|1stc0|g7c00|25s00|g7c00|1stc0|g7c00|25s00|g7c00|25s00|g7c00|1stc0|g7c00|25s00|Infinity",
                        offsets: "52.8|60|0|-60",
                        offsetIndices: "012323232323232323232323232323232323232323232323232323232323232323232323232323232323"
                    }, {
                        id: "Africa/Freetown",
                        untils: "-u9rgl4|Infinity",
                        offsets: "16.1333|0",
                        offsetIndices: "01"
                    }, {
                        id: "Africa/Gaborone",
                        untils: "-yvtfd8|Infinity",
                        offsets: "-130.3333|-120",
                        offsetIndices: "01"
                    }, {
                        id: "Africa/Harare",
                        untils: "-yvtfd8|Infinity",
                        offsets: "-130.3333|-120",
                        offsetIndices: "01"
                    }, {
                        id: "Africa/Johannesburg",
                        untils: "-yvtdi0|kn7o60|9cyk0|9d440|9cyk0|Infinity",
                        offsets: "-90|-120|-180",
                        offsetIndices: "012121"
                    }, {
                        id: "Africa/Juba",
                        untils: "-kcrsis|kixuys|8l6k0|a4w40|8n180|a6qs0|8n180|a31g0|8ovw0|a16s0|8qqk0|9zc40|8sl80|9xhg0|8wak0|9ts40|8y580|a4w40|8n180|a31g0|8ovw0|a16s0|8sl80|9xhg0|8ufw0|9vms0|8wak0|9ts40|8y580|a4w40|8ovw0|a16s0|8qqk0|7frw40|Infinity",
                        offsets: "-126.4667|-120|-180",
                        offsetIndices: "01212121212121212121212121212121212"
                    }, {
                        id: "Africa/Kampala",
                        untils: "-lnsetg|s8mhg|57v020|afrrb0|Infinity",
                        offsets: "-147.2667|-180|-150|-165",
                        offsetIndices: "01231"
                    }, {
                        id: "Africa/Khartoum",
                        untils: "-kcrsow|kixv4w|8l6k0|a4w40|8n180|a6qs0|8n180|a31g0|8ovw0|a16s0|8qqk0|9zc40|8sl80|9xhg0|8wak0|9ts40|8y580|a4w40|8n180|a31g0|8ovw0|a16s0|8sl80|9xhg0|8ufw0|9vms0|8wak0|9ts40|8y580|a4w40|8ovw0|a16s0|8qqk0|7frw40|9ac180|Infinity",
                        offsets: "-130.1333|-120|-180",
                        offsetIndices: "012121212121212121212121212121212121"
                    }, {
                        id: "Africa/Kigali",
                        untils: "-yvtfd8|Infinity",
                        offsets: "-130.3333|-120",
                        offsetIndices: "01"
                    }, {
                        id: "Africa/Kinshasa",
                        untils: "-q9qbao|Infinity",
                        offsets: "-13.6|-60",
                        offsetIndices: "01"
                    }, {
                        id: "Africa/Lagos",
                        untils: "-q9qbao|Infinity",
                        offsets: "-13.6|-60",
                        offsetIndices: "01"
                    }, {
                        id: "Africa/Libreville",
                        untils: "-q9qbao|Infinity",
                        offsets: "-13.6|-60",
                        offsetIndices: "01"
                    }, {
                        id: "Africa/Lome",
                        untils: "-u9rgl4|Infinity",
                        offsets: "16.1333|0",
                        offsetIndices: "01"
                    }, {
                        id: "Africa/Luanda",
                        untils: "-q9qbao|Infinity",
                        offsets: "-13.6|-60",
                        offsetIndices: "01"
                    }, {
                        id: "Africa/Lubumbashi",
                        untils: "-yvtfd8|Infinity",
                        offsets: "-130.3333|-120",
                        offsetIndices: "01"
                    }, {
                        id: "Africa/Lusaka",
                        untils: "-yvtfd8|Infinity",
                        offsets: "-130.3333|-120",
                        offsetIndices: "01"
                    }, {
                        id: "Africa/Malabo",
                        untils: "-q9qbao|Infinity",
                        offsets: "-13.6|-60",
                        offsetIndices: "01"
                    }, {
                        id: "Africa/Maputo",
                        untils: "-yvtfd8|Infinity",
                        offsets: "-130.3333|-120",
                        offsetIndices: "01"
                    }, {
                        id: "Africa/Maseru",
                        untils: "-yvtdi0|kn7o60|9cyk0|9d440|9cyk0|Infinity",
                        offsets: "-90|-120|-180",
                        offsetIndices: "012121"
                    }, {
                        id: "Africa/Mbabane",
                        untils: "-yvtdi0|kn7o60|9cyk0|9d440|9cyk0|Infinity",
                        offsets: "-90|-120|-180",
                        offsetIndices: "012121"
                    }, {
                        id: "Africa/Mogadishu",
                        untils: "-lnsetg|s8mhg|57v020|afrrb0|Infinity",
                        offsets: "-147.2667|-180|-150|-165",
                        offsetIndices: "01231"
                    }, {
                        id: "Africa/Monrovia",
                        untils: "-qj6zc4|rl202a|Infinity",
                        offsets: "43.1333|44.5|0",
                        offsetIndices: "012"
                    }, {
                        id: "Africa/Nairobi",
                        untils: "-lnsetg|s8mhg|57v020|afrrb0|Infinity",
                        offsets: "-147.2667|-180|-150|-165",
                        offsetIndices: "01231"
                    }, {
                        id: "Africa/Ndjamena",
                        untils: "-u9rk4c|zdk5cc|7iak0|Infinity",
                        offsets: "-60.2|-60|-120",
                        offsetIndices: "0121"
                    }, {
                        id: "Africa/Niamey",
                        untils: "-q9qbao|Infinity",
                        offsets: "-13.6|-60",
                        offsetIndices: "01"
                    }, {
                        id: "Africa/Nouakchott",
                        untils: "-u9rgl4|Infinity",
                        offsets: "16.1333|0",
                        offsetIndices: "01"
                    }, {
                        id: "Africa/Ouagadougou",
                        untils: "-u9rgl4|Infinity",
                        offsets: "16.1333|0",
                        offsetIndices: "01"
                    }, {
                        id: "Africa/Porto-Novo",
                        untils: "-q9qbao|Infinity",
                        offsets: "-13.6|-60",
                        offsetIndices: "01"
                    }, {
                        id: "Africa/Sao_Tome",
                        untils: "-u9rhc0|1jbm840|irxc0|Infinity",
                        offsets: "36.75|0|-60",
                        offsetIndices: "0121"
                    }, {
                        id: "Africa/Timbuktu",
                        untils: "-u9rgl4|Infinity",
                        offsets: "16.1333|0",
                        offsetIndices: "01"
                    }, {
                        id: "Africa/Tripoli",
                        untils: "-q3gfrw|gl6ajw|422c0|xado0|4bbo0|wrpg0|4s580|1kdpg0|c05bw0|4mqs0|9et80|9d440|9et80|9eys0|9et80|9mdg0|95jw0|9io40|9cyk0|99es0|9et80|9eys0|9et80|9d440|9et80|b2840|3cf3w0|9kis0|9et80|7vqyw0|75eo0|asw00|Infinity",
                        offsets: "-52.7333|-60|-120",
                        offsetIndices: "012121212121212121212121212122122"
                    }, {
                        id: "Africa/Tunis",
                        untils: "-uozn3l|enxevl|b5uo0|53c00|u8w00|7x9g0|c8w80|7k800|z3w0|ew40|8bx80|9d440|9nx00|925o0|8l100|gi3440|7k800|b9k00|7vc00|51mw00|5ytc0|9d1c0|9d1c0|b9k00|7thc0|7m0tc0|7tk40|93us0|b5uo0|7k800|b5uo0|7x6o0|asw00|Infinity",
                        offsets: "-9.35|-60|-120",
                        offsetIndices: "0121212121212121212121212121212121"
                    }, {
                        id: "Africa/Windhoek",
                        untils: "-yvtdi0|kn7o60|9cyk0|oj2nw0|235k00|8lho0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|Infinity",
                        offsets: "-90|-120|-180|-60",
                        offsetIndices: "01211313131313131313131313131313131313131313131313131"
                    }, {
                        id: "America/Adak",
                        untils: "-ek1nw0|1tyug0|2e6s0|b7yik0|12y080|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|1l940|7rs80|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "660|600|540",
                        offsetIndices: "011001010101010101010101010101010111212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Anchorage",
                        untils: "-ek1qo0|1tyx80|2e400|b7yik0|12y080|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|1l940|7rs80|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "600|540|480",
                        offsetIndices: "011001010101010101010101010101010111212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Anguilla",
                        untils: "-u6m79w|Infinity",
                        offsets: "246.0667|240",
                        offsetIndices: "01"
                    }, {
                        id: "America/Antigua",
                        untils: "-u6m79w|Infinity",
                        offsets: "246.0667|240",
                        offsetIndices: "01"
                    }, {
                        id: "America/Araguaina",
                        untils: "-t85j2o|99k8mo|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|2yl440|64ak0|c8tg0|6u7w0|bxpg0|7iak0|biw40|6u7w0|biw40|7k580|biw40|6u7w0|c8tg0|6h980|dbpg0|5ed80|51udg0|64ak0|Infinity",
                        offsets: "192.8|180|120",
                        offsetIndices: "0121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Argentina/Buenos_Aires",
                        untils: "-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvus0|6u7w0|bvus0|776k0|7qcg40|3yik0|b5xg0|7k580|Infinity",
                        offsets: "256.8|240|180|120",
                        offsetIndices: "01212121212121212121212121212121212121212123232323232323232"
                    }, {
                        id: "America/Argentina/Catamarca",
                        untils: "-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvxk0|6u540|bvus0|776k0|5v42s0|z9g0|1u93w0|3yik0|Infinity",
                        offsets: "256.8|240|180|120",
                        offsetIndices: "01212121212121212121212121212121212121212123232323132321232"
                    }, {
                        id: "America/Argentina/ComodRivadavia",
                        untils: "-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvxk0|6u540|bvus0|776k0|5v42s0|z9g0|1u93w0|3yik0|Infinity",
                        offsets: "256.8|240|180|120",
                        offsetIndices: "01212121212121212121212121212121212121212123232323132321232"
                    }, {
                        id: "America/Argentina/Cordoba",
                        untils: "-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvxk0|6u540|bvus0|776k0|7qcg40|3yik0|b5xg0|7k580|Infinity",
                        offsets: "256.8|240|180|120",
                        offsetIndices: "01212121212121212121212121212121212121212123232323132323232"
                    }, {
                        id: "America/Argentina/Jujuy",
                        untils: "-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|c8w80|776k0|ag040|7k2g0|bvus0|776k0|7qcg40|3yik0|Infinity",
                        offsets: "256.8|240|180|120",
                        offsetIndices: "012121212121212121212121212121212121212121232323121323232"
                    }, {
                        id: "America/Argentina/La_Rioja",
                        untils: "-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6qik0|3g880|8jbw0|6u7w0|bvus0|776k0|5v42s0|z9g0|1u93w0|3yik0|Infinity",
                        offsets: "256.8|240|180|120",
                        offsetIndices: "012121212121212121212121212121212121212121232323231232321232"
                    }, {
                        id: "America/Argentina/Mendoza",
                        untils: "-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bktk0|71mk0|bqas0|73h80|bvus0|773s0|5unes0|6hes0|1p7mk0|3yik0|Infinity",
                        offsets: "256.8|240|180|120",
                        offsetIndices: "01212121212121212121212121212121212121212123232312121321232"
                    }, {
                        id: "America/Argentina/Rio_Gallegos",
                        untils: "-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvus0|6u7w0|bvus0|776k0|5v42s0|z9g0|1u93w0|3yik0|Infinity",
                        offsets: "256.8|240|180|120",
                        offsetIndices: "01212121212121212121212121212121212121212123232323232321232"
                    }, {
                        id: "America/Argentina/Salta",
                        untils: "-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvxk0|6u540|bvus0|776k0|7qcg40|3yik0|Infinity",
                        offsets: "256.8|240|180|120",
                        offsetIndices: "012121212121212121212121212121212121212121232323231323232"
                    }, {
                        id: "America/Argentina/San_Juan",
                        untils: "-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6qik0|3g880|8jbw0|6u7w0|bvus0|776k0|5v2840|2txg0|1sgak0|3yik0|Infinity",
                        offsets: "256.8|240|180|120",
                        offsetIndices: "012121212121212121212121212121212121212121232323231232321232"
                    }, {
                        id: "America/Argentina/San_Luis",
                        untils: "-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|7pp80|b2aw0|71mk0|4qg40|6s8ik0|2txg0|1sgak0|14nw0|2gys0|b5xg0|7k580|b5xg0|Infinity",
                        offsets: "256.8|240|180|120",
                        offsetIndices: "012121212121212121212121212121212121212121232323121212321212"
                    }, {
                        id: "America/Argentina/Tucuman",
                        untils: "-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvxk0|6u540|bvus0|776k0|5v42s0|mas0|1um2k0|3yik0|b5xg0|7k580|Infinity",
                        offsets: "256.8|240|180|120",
                        offsetIndices: "0121212121212121212121212121212121212121212323232313232123232"
                    }, {
                        id: "America/Argentina/Ushuaia",
                        untils: "-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvus0|6u7w0|bvus0|776k0|5v0dg0|12ys0|1u93w0|3yik0|Infinity",
                        offsets: "256.8|240|180|120",
                        offsetIndices: "01212121212121212121212121212121212121212123232323232321232"
                    }, {
                        id: "America/Aruba",
                        untils: "-u7lckd|rlo7qd|Infinity",
                        offsets: "275.7833|270|240",
                        offsetIndices: "012"
                    }, {
                        id: "America/Asuncion",
                        untils: "-jy93zk|ldwofk|s4vw0|s6w40|7tek0|b0dg0|7rjw0|b0dg0|7rjw0|b0dg0|9cyk0|9eys0|9et80|9eys0|9cyk0|9eys0|9cyk0|9eys0|9cyk0|9eys0|9et80|9eys0|9cyk0|9eys0|9cyk0|9eys0|9cyk0|9eys0|9et80|9eys0|9cyk0|ahus0|8a2k0|9eys0|9cyk0|9o840|7k580|b7s40|93p80|9gtg0|7nuk0|b42s0|7lzw0|b5xg0|7tek0|b9ms0|776k0|biw40|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|9cyk0|7kas0|b5rw0|7x9g0|ast80|a31g0|7k580|b5xg0|7k580|b5xg0|7k580|biw40|776k0|biw40|776k0|biw40|8zzw0|905g0|9px80|905g0|9px80|9d440|8n180|a31g0|8n180|a31g0|8n180|a31g0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|a31g0|8n180|a31g0|8n180|a31g0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|a31g0|8n180|a31g0|8n180|a31g0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|a31g0|8n180|a31g0|8n180|a31g0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|a31g0|8n180|a31g0|8n180|a31g0|Infinity",
                        offsets: "230.6667|240|180",
                        offsetIndices: "012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212"
                    }, {
                        id: "America/Atikokan",
                        untils: "-qzov40|a2vw0|bfxjw0|pmdk0|1tz8c0|2dsw0|Infinity",
                        offsets: "360|300",
                        offsetIndices: "0101111"
                    }, {
                        id: "America/Atka",
                        untils: "-ek1nw0|1tyug0|2e6s0|b7yik0|12y080|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|1l940|7rs80|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "660|600|540",
                        offsetIndices: "011001010101010101010101010101010111212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Bahia_Banderas",
                        untils: "-p1u4k0|2u7jw0|1sgdc0|8n400|7thc0|9eys0|591h80|3ie2s0|axvpg0|dpgw40|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|asqg0|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|Infinity",
                        offsets: "421|420|360|480|300",
                        offsetIndices: "0121212131212121212121212121212121212142424242424242424242424242424242424242424242424242424242"
                    }, {
                        id: "America/Bahia",
                        untils: "-t85kv8|99kaf8|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|cyqs0|64ak0|cls40|5rbw0|dbpg0|51ek0|dbpg0|6h980|c8tg0|6h980|c8tg0|64ak0|c8tg0|6u7w0|bxpg0|7iak0|biw40|6u7w0|biw40|7k580|biw40|6u7w0|c8tg0|6h980|dbpg0|5ed80|4irc40|6u7w0|Infinity",
                        offsets: "154.0667|180|120",
                        offsetIndices: "01212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Barbados",
                        untils: "-o0aiaj|46b400|npv1mj|5rbw0|a31g0|8n180|a31g0|8n180|ag040|84ik0|Infinity",
                        offsets: "238.4833|240|180",
                        offsetIndices: "00121212121"
                    }, {
                        id: "America/Belem",
                        untils: "-t85j0s|99k8ks|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|Infinity",
                        offsets: "193.9333|180|120",
                        offsetIndices: "012121212121212121212121212121"
                    }, {
                        id: "America/Belize",
                        untils: "-u52ic0|3edkc0|6ham0|c8s20|6u9a0|bvte0|6u9a0|bvte0|6u9a0|c8s20|6ham0|c8s20|6ham0|c8s20|6u9a0|bvte0|6u9a0|bvte0|6u9a0|bvte0|6u9a0|c8s20|6ham0|c8s20|6ham0|c8s20|6u9a0|bvte0|6u9a0|bvte0|6u9a0|c8s20|6ham0|c8s20|6ham0|c8s20|6ham0|c8s20|6u9a0|bvte0|6u9a0|bvte0|6u9a0|c8s20|6ham0|c8s20|6ham0|c8s20|6u9a0|bvte0|6u9a0|g2t2q0|3e580|4mcys0|2vmk0|Infinity",
                        offsets: "352.8|360|330|300",
                        offsetIndices: "01212121212121212121212121212121212121212121212121213131"
                    }, {
                        id: "America/Blanc-Sablon",
                        untils: "-qzp0o0|a2vw0|c5jxg0|1tzdw0|2dnc0|Infinity",
                        offsets: "240|180",
                        offsetIndices: "010110"
                    }, {
                        id: "America/Boa_Vista",
                        untils: "-t85grk|99k93k|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|62xk40|7k580|biw40|cvw0|Infinity",
                        offsets: "242.6667|240|180",
                        offsetIndices: "0121212121212121212121212121212121"
                    }, {
                        id: "America/Bogota",
                        untils: "-srdoy8|14f1hi8|ha580|Infinity",
                        offsets: "296.2667|300|240",
                        offsetIndices: "0121"
                    }, {
                        id: "America/Boise",
                        untils: "-r0emw0|ast80|7x9g0|ast80|1um840|9s7jw0|1tz5k0|2dvo0|b9gdg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|51k40|doik0|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "480|420|360",
                        offsetIndices: "0101012212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Buenos_Aires",
                        untils: "-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvus0|6u7w0|bvus0|776k0|7qcg40|3yik0|b5xg0|7k580|Infinity",
                        offsets: "256.8|240|180|120",
                        offsetIndices: "01212121212121212121212121212121212121212123232323232323232"
                    }, {
                        id: "America/Cambridge_Bay",
                        untils: "-q3gdc0|bjeec0|1tz5k0|2dvo0|a7n3w0|9q000|7k85k0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x6o0|ast80|ct40|7kj40|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "0|420|360|300",
                        offsetIndices: "0122131212121212121212121212121212121212121212233221212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Campo_Grande",
                        untils: "-t85hvw|99ka7w|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|cyqs0|64ak0|cls40|5rbw0|dbpg0|51ek0|dbpg0|6h980|c8tg0|6h980|c8tg0|64ak0|c8tg0|6u7w0|bxpg0|7iak0|biw40|6u7w0|biw40|7k580|biw40|6u7w0|c8tg0|6h980|dbpg0|5ed80|cls40|64ak0|dfes0|5nmk0|c8tg0|6h980|dbpg0|5rbw0|bvus0|6h980|cls40|64ak0|cls40|6h980|c8tg0|6h980|c8tg0|6u7w0|c8tg0|64ak0|cls40|64ak0|cls40|6h980|c8tg0|6h980|c8tg0|6h980|c8tg0|6h980|dbpg0|5ed80|Infinity",
                        offsets: "218.4667|240|180",
                        offsetIndices: "01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Cancun",
                        untils: "-p1u7c0|vauo00|7ggw40|afuk0|8a840|afuk0|8a840|64ak0|4bms0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|51k40|Infinity",
                        offsets: "347.0667|360|300|240",
                        offsetIndices: "0123232321212121212121212121212121212121212"
                    }, {
                        id: "America/Caracas",
                        untils: "-u7lcxw|rlo83w|meoxm0|4dps00|Infinity",
                        offsets: "267.6667|270|240",
                        offsetIndices: "01212"
                    }, {
                        id: "America/Catamarca",
                        untils: "-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvxk0|6u540|bvus0|776k0|5v42s0|z9g0|1u93w0|3yik0|Infinity",
                        offsets: "256.8|240|180|120",
                        offsetIndices: "01212121212121212121212121212121212121212123232323132321232"
                    }, {
                        id: "America/Cayenne",
                        untils: "-uj7yb4|tcw6r4|Infinity",
                        offsets: "209.3333|240|180",
                        offsetIndices: "012"
                    }, {
                        id: "America/Cayman",
                        untils: "-w757vc|Infinity",
                        offsets: "319.6|300",
                        offsetIndices: "01"
                    }, {
                        id: "America/Chicago",
                        untils: "-r0esg0|ast80|7x9g0|ast80|bvus0|776k0|7kas0|b5rw0|9d440|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|7x9g0|dbjw0|8a840|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|6w840|1tz8c0|2dsw0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "360|300",
                        offsetIndices: "01010101010101010101010101010101010101010101010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "America/Chihuahua",
                        untils: "-p1u4k0|2u7jw0|1sgdc0|8n400|7thc0|9eys0|xes2s0|afuk0|8a840|afuk0|8aaw0|afuk0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|Infinity",
                        offsets: "424.3333|420|360|300",
                        offsetIndices: "0121212323221212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Coral_Harbour",
                        untils: "-qzov40|a2vw0|bfxjw0|pmdk0|1tz8c0|2dsw0|Infinity",
                        offsets: "360|300",
                        offsetIndices: "0101111"
                    }, {
                        id: "America/Cordoba",
                        untils: "-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvxk0|6u540|bvus0|776k0|7qcg40|3yik0|b5xg0|7k580|Infinity",
                        offsets: "256.8|240|180|120",
                        offsetIndices: "01212121212121212121212121212121212121212123232323132323232"
                    }, {
                        id: "America/Costa_Rica",
                        untils: "-pjw8fn|ubtl3n|51ek0|doo40|51ek0|5jso40|8drw0|acas0|2xh80|Infinity",
                        offsets: "336.2167|360|300",
                        offsetIndices: "0121212121"
                    }, {
                        id: "America/Creston",
                        untils: "-rshz80|vbus0|Infinity",
                        offsets: "420|480",
                        offsetIndices: "010"
                    }, {
                        id: "America/Cuiaba",
                        untils: "-t85hm4|99k9y4|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|cyqs0|64ak0|cls40|5rbw0|dbpg0|51ek0|dbpg0|6h980|c8tg0|6h980|c8tg0|64ak0|c8tg0|6u7w0|bxpg0|7iak0|biw40|6u7w0|biw40|7k580|biw40|6u7w0|c8tg0|6h980|dbpg0|5ed80|w5hg0|5nmk0|c8tg0|6h980|dbpg0|5rbw0|bvus0|6h980|cls40|64ak0|cls40|6h980|c8tg0|6h980|c8tg0|6u7w0|c8tg0|64ak0|cls40|64ak0|cls40|6h980|c8tg0|6h980|c8tg0|6h980|c8tg0|6h980|dbpg0|5ed80|Infinity",
                        offsets: "224.3333|240|180",
                        offsetIndices: "012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Curacao",
                        untils: "-u7lckd|rlo7qd|Infinity",
                        offsets: "275.7833|270|240",
                        offsetIndices: "012"
                    }, {
                        id: "America/Danmarkshavn",
                        untils: "-rvusjk|x8nx3k|8zrk0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|53hk0|Infinity",
                        offsets: "74.6667|180|120|0",
                        offsetIndices: "01212121212121212121212121212121213"
                    }, {
                        id: "America/Dawson_Creek",
                        untils: "-qzopk0|a2vw0|c5jxg0|1tz2s0|2dyg0|tj1g0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|69uk0|Infinity",
                        offsets: "480|420",
                        offsetIndices: "0101101010101010101010101010101010101010101010101010101011"
                    }, {
                        id: "America/Dawson",
                        untils: "-qzoms0|a2vw0|asys0|882c0|bmiwc0|1tz000|2e180|a7n3w0|9q000|465k00|3e2is0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|Infinity",
                        offsets: "540|480|420",
                        offsetIndices: "01010110201212121212121212121212121212121212121212121212121212121212121212121212121212121212"
                    }, {
                        id: "America/Denver",
                        untils: "-r0epo0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|2vmk0|ataw40|1tz5k0|2dvo0|a7n9g0|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "420|360",
                        offsetIndices: "01010101011010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "America/Detroit",
                        untils: "-xx8dyd|5eraud|dyeyk0|1tzb40|2dq40|1c9440|7x3w0|9rlbxo|71s2c|9d440|9cyk0|2cmdg0|9cyk0|3lpg0|f4d80|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "332.1833|360|300|240",
                        offsetIndices: "0123323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232"
                    }, {
                        id: "America/Dominica",
                        untils: "-u6m79w|Infinity",
                        offsets: "246.0667|240",
                        offsetIndices: "01"
                    }, {
                        id: "America/Edmonton",
                        untils: "-x1yazk|629ink|a2vw0|8n6s0|29ek0|h6lg0|9px80|905g0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|9l0g40|1tz5k0|2dvo0|tj1g0|7x3w0|ctzk40|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "453.8667|420|360",
                        offsetIndices: "0121212121212122121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Eirunepe",
                        untils: "-t85f28|99ka68|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|2yy2s0|6h980|7hg2s0|2t2t80|Infinity",
                        offsets: "279.4667|300|240",
                        offsetIndices: "0121212121212121212121212121212121"
                    }, {
                        id: "America/El_Salvador",
                        untils: "-pkm4tc|ymao5c|7k580|b5xg0|7k580|Infinity",
                        offsets: "356.8|360|300",
                        offsetIndices: "012121"
                    }, {
                        id: "America/Ensenada",
                        untils: "-p1u1s0|11jrw0|1sns00|1sgdc0|71s40|9cyk0|5iidg0|1q6700|4lfk0|190g40|eluk0|2r4o80|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|84qys0|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|77c40|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "468.0667|420|480",
                        offsetIndices: "012121211212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212"
                    }, {
                        id: "America/Fort_Nelson",
                        untils: "-qzopk0|a2vw0|c5jxg0|1tz2s0|2dyg0|tj1g0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|Infinity",
                        offsets: "480|420",
                        offsetIndices: "01011010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101"
                    }, {
                        id: "America/Fort_Wayne",
                        untils: "-r0esg0|ast80|7x9g0|ast80|baw840|51ek0|6w840|1tz8c0|2dsw0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|19q7w0|asys0|5qonw0|9cyk0|9d440|9cyk0|ihslg0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "360|300|240",
                        offsetIndices: "010101011010101010101010101010121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Fortaleza",
                        untils: "-t85kvc|99kafc|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|514g40|7k580|biw40|puk0|id6s0|6h980|Infinity",
                        offsets: "154|180|120",
                        offsetIndices: "0121212121212121212121212121212121212121"
                    }, {
                        id: "America/Glace_Bay",
                        untils: "-z94kwc|89fk8c|a2vw0|c5jxg0|1tzdw0|2dnc0|3y8g40|7x3w0|9pa5g0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "239.8|240|180",
                        offsetIndices: "012122121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Godthab",
                        untils: "-rvumf4|x8nqz4|8zrk0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "206.9333|180|120",
                        offsetIndices: "0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Goose_Bay",
                        untils: "-qzp20k|a2vw0|8kjbw0|kzjyk|7k580|b5xg0|7k580|b5xg0|7k580|biw40|776k0|biw40|7k580|b5xg0|7k580|b5xg0|1pb260|2dly0|biw40|7k580|b5xg0|7k580|b5xg0|7k580|b5xg0|7k580|biw40|7k580|ag040|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|6y2s0|22420|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a2lo|afuk0|8a840|asqg0|7xc80|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8tec|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "210.8667|150.8667|210|150|240|180|120",
                        offsetIndices: "010232323232323233232323232323232323232323232323232323232324545454545454545454545454545454545454545454546454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454"
                    }, {
                        id: "America/Grand_Turk",
                        untils: "-u85og2|z3brw2|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|18ais0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "307.1667|300|240",
                        offsetIndices: "01212121212121212121212121212121212121212121212121212121212121212121212121222121212121212121212121212121212121212121"
                    }, {
                        id: "America/Grenada",
                        untils: "-u6m79w|Infinity",
                        offsets: "246.0667|240",
                        offsetIndices: "01"
                    }, {
                        id: "America/Guadeloupe",
                        untils: "-u6m79w|Infinity",
                        offsets: "246.0667|240",
                        offsetIndices: "01"
                    }, {
                        id: "America/Guatemala",
                        untils: "-qqqskk|ss0akk|4ofw0|4tidg0|6djw0|3wwas0|8n180|7n5ms0|7x3w0|Infinity",
                        offsets: "362.0667|360|300",
                        offsetIndices: "0121212121"
                    }, {
                        id: "America/Guayaquil",
                        untils: "-kcr84o|wb620o|3jp80|Infinity",
                        offsets: "314|300|240",
                        offsetIndices: "0121"
                    }, {
                        id: "America/Guyana",
                        untils: "-smcak8|vj4sz8|81rf90|Infinity",
                        offsets: "232.6667|225|180|240",
                        offsetIndices: "0123"
                    }, {
                        id: "America/Halifax",
                        untils: "-z94k80|777go0|9et80|st9o0|a2vw0|ssyk0|5rbw0|cv1g0|69uk0|c6ys0|6kyk0|ci2s0|67zw0|ci2s0|6w2k0|bu040|7lzw0|bu040|66580|bu040|7lzw0|bu040|64ak0|cls40|5v180|cv1g0|6j3w0|c6ys0|79180|b42s0|7lzw0|b42s0|7yyk0|bu040|64ak0|dbpg0|66580|cls40|5ed80|bu040|7lzw0|b42s0|7lzw0|cjxg0|66580|bh1g0|7lzw0|b42s0|7lzw0|6uj00|1tzdw0|2dnc0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|tw040|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|tw040|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|1cm2s0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "254.4|240|180",
                        offsetIndices: "0121212121212121212121212121212121212121212121212122121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Havana",
                        untils: "-n7762o|1icfyo|69uk0|62s040|4ofw0|e1ms0|51ek0|e1ms0|4ofw0|1fhs40|4ofw0|e1ms0|4ofw0|9s9k40|67zw0|cedg0|6h980|9o840|7yyk0|b5xg0|7k580|bvus0|9cyk0|9d440|9cyk0|9d440|9px80|9d440|8a2k0|ag040|8bx80|ae5g0|8drw0|acas0|9cyk0|9d440|9px80|905g0|9px80|9q2s0|7x3w0|8a840|ast80|7x9g0|ast80|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|8a2k0|ag040|8a2k0|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|905g0|a2vw0|905g0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|8n400|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|8a5c0|afxc0|8a5c0|afxc0|7x6o0|1cm000|6uao0|bvs00|779c0|bitc0|6uao0|bvs00|779c0|bvs00|779c0|c8qo0|779c0|b5uo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|Infinity",
                        offsets: "329.6|300|240",
                        offsetIndices: "012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Hermosillo",
                        untils: "-p1u4k0|2u7jw0|1sgdc0|8n400|7thc0|9eys0|591h80|3ie2s0|axvpg0|dpgw40|afuk0|8a840|afuk0|8a840|afuk0|Infinity",
                        offsets: "443.8667|420|360|480",
                        offsetIndices: "0121212131212121"
                    }, {
                        id: "America/Indiana/Indianapolis",
                        untils: "-r0esg0|ast80|7x9g0|ast80|baw840|51ek0|6w840|1tz8c0|2dsw0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|19q7w0|asys0|5qonw0|9cyk0|9d440|9cyk0|ihslg0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "360|300|240",
                        offsetIndices: "010101011010101010101010101010121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Indiana/Knox",
                        untils: "-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|tj1g0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|7x3w0|asys0|7x3w0|asys0|9cyk0|9d440|9px80|9d440|9cyk0|9d440|s3180|1twas0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|7j5400|asw00|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "360|300",
                        offsetIndices: "0101011010101010101010101010101010101010101010101010101010101010101010101010101010101010111010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "America/Indiana/Marengo",
                        untils: "-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|2wsas0|7x3w0|1c9440|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|465h80|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4g00|64dc0|clmk0|fvt9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "360|300|240",
                        offsetIndices: "0101011010101010101010101212121212111212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Indiana/Petersburg",
                        untils: "-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|501ek0|7kas0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|sfzw0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|eu02o0|asw00|6udg0|c8nw0|6hc00|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "360|300|240",
                        offsetIndices: "01010110101010101010101010101010101010101010101010111011212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Indiana/Tell_City",
                        untils: "-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|501ek0|7kas0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|1tw580|9d440|9cyk0|9d440|9cvs0|9d440|9cyk0|ihslg0|asw00|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "360|300|240",
                        offsetIndices: "01010110101010101010101010101021211010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "America/Indiana/Vevay",
                        untils: "-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|4gyis0|7txx80|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|hfzhg0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "360|300|240",
                        offsetIndices: "010101101212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Indiana/Vincennes",
                        untils: "-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|asys0|7x3w0|3fidg0|7x3w0|asys0|7x3w0|b5rw0|7kas0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|7k580|b5xg0|9cyk0|9d440|9cyk0|9d440|2lz980|9cyk0|9d440|9cyk0|ihslg0|asw00|6udg0|c8nw0|6hc00|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "360|300|240",
                        offsetIndices: "01010110101010101010101010101010121211011212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Indiana/Winamac",
                        untils: "-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|465h80|9cyk0|9d440|9cyk0|ihslg0|asw00|6udg0|c8l40|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "360|300|240",
                        offsetIndices: "01010110101010101010101010101010101010121211021212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Indianapolis",
                        untils: "-r0esg0|ast80|7x9g0|ast80|baw840|51ek0|6w840|1tz8c0|2dsw0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|19q7w0|asys0|5qonw0|9cyk0|9d440|9cyk0|ihslg0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "360|300|240",
                        offsetIndices: "010101011010101010101010101010121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Inuvik",
                        untils: "-8ve5c0|6fce80|9q000|71i2w0|ipzw0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "0|480|360|420",
                        offsetIndices: "0121323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323"
                    }, {
                        id: "America/Iqaluit",
                        untils: "-eb6ao0|1l3h80|2dq40|a7n3w0|9q000|7k85k0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7xc80|ast80|7x6o0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "0|240|300|180|360",
                        offsetIndices: "01123212121212121212121212121212121212121212142212121212121212121212121212121212121212121212121212121212121212121212121212"
                    }, {
                        id: "America/Jamaica",
                        untils: "-u85og2|wbl182|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|Infinity",
                        offsets: "307.1667|300|240",
                        offsetIndices: "0121212121212121212121"
                    }, {
                        id: "America/Jujuy",
                        untils: "-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|c8w80|776k0|ag040|7k2g0|bvus0|776k0|7qcg40|3yik0|Infinity",
                        offsets: "256.8|240|180|120",
                        offsetIndices: "012121212121212121212121212121212121212121232323121323232"
                    }, {
                        id: "America/Juneau",
                        untils: "-ek1w80|1tz2s0|2dyg0|cawis0|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9d1c0|9d1c0|9cyk0|9d440|9px80|905g0|9px80|1leo0|7rs80|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "480|420|540",
                        offsetIndices: "01101010101010101010101010001010122020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202"
                    }, {
                        id: "America/Kentucky/Louisville",
                        untils: "-r0esg0|ast80|7x9g0|ast80|sg5g0|6bp80|a98o40|7x3w0|6w840|1tz8c0|2dsw0|ast9o|1sw2c|21gis0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|4bh80|3j3xc0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4g00|64dc0|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "360|300|240",
                        offsetIndices: "0101010101101010101010101010101010101121212121212111212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Kentucky/Monticello",
                        untils: "-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|bs6g40|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x6o0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "360|300|240",
                        offsetIndices: "0101011010101010101010101010101010101010101010101010101010101010101010101121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Knox_IN",
                        untils: "-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|tj1g0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|7x3w0|asys0|7x3w0|asys0|9cyk0|9d440|9px80|9d440|9cyk0|9d440|s3180|1twas0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|7j5400|asw00|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "360|300",
                        offsetIndices: "0101011010101010101010101010101010101010101010101010101010101010101010101010101010101010111010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "America/Kralendijk",
                        untils: "-u7lckd|rlo7qd|Infinity",
                        offsets: "275.7833|270|240",
                        offsetIndices: "012"
                    }, {
                        id: "America/La_Paz",
                        untils: "-jxzspo|84ik0|Infinity",
                        offsets: "272.6|212.6|240",
                        offsetIndices: "012"
                    }, {
                        id: "America/Lima",
                        untils: "-w25lpo|fcxjlo|4ml80|93us0|9cyk0|9d440|9cyk0|nw16s0|4ml80|e5c40|4ml80|1fr1g0|4ml80|1yiys0|4ml80|Infinity",
                        offsets: "308.6|300|240",
                        offsetIndices: "0121212121212121"
                    }, {
                        id: "America/Los_Angeles",
                        untils: "-r0emw0|ast80|7x9g0|ast80|bmtus0|1tz2s0|2dyg0|1a3c5o|f2iic|owao0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|902o0|9q000|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "480|420",
                        offsetIndices: "010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "America/Louisville",
                        untils: "-r0esg0|ast80|7x9g0|ast80|sg5g0|6bp80|a98o40|7x3w0|6w840|1tz8c0|2dsw0|ast9o|1sw2c|21gis0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|4bh80|3j3xc0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4g00|64dc0|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "360|300|240",
                        offsetIndices: "0101010101101010101010101010101010101121212121212111212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Lower_Princes",
                        untils: "-u7lckd|rlo7qd|Infinity",
                        offsets: "275.7833|270|240",
                        offsetIndices: "012"
                    }, {
                        id: "America/Maceio",
                        untils: "-t85ldw|99kaxw|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|2yl440|64ak0|1wf1g0|7k580|biw40|puk0|id6s0|6h980|Infinity",
                        offsets: "142.8667|180|120",
                        offsetIndices: "012121212121212121212121212121212121212121"
                    }, {
                        id: "America/Managua",
                        untils: "-ijh6oo|ka1i0o|xqqk0|24p6s0|53980|dmtg0|53980|60itw0|dq240|53es0|235h80|4beis0|8zzw0|at4c0|7x140|Infinity",
                        offsets: "345.2|360|300",
                        offsetIndices: "0121212121212121"
                    }, {
                        id: "America/Manaus",
                        untils: "-t85gvw|99k97w|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|2yy2s0|6h980|Infinity",
                        offsets: "240.0667|240|180",
                        offsetIndices: "01212121212121212121212121212121"
                    }, {
                        id: "America/Marigot",
                        untils: "-u6m79w|Infinity",
                        offsets: "246.0667|240",
                        offsetIndices: "01"
                    }, {
                        id: "America/Martinique",
                        untils: "-umcvcs|zz5x4s|8zzw0|Infinity",
                        offsets: "244.3333|240|180",
                        offsetIndices: "0121"
                    }, {
                        id: "America/Matamoros",
                        untils: "-p1u7c0|ykt480|ast80|3vppg0|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|77c40|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "400|360|300",
                        offsetIndices: "0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Mazatlan",
                        untils: "-p1u4k0|2u7jw0|1sgdc0|8n400|7thc0|9eys0|591h80|3ie2s0|axvpg0|dpgw40|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|Infinity",
                        offsets: "425.6667|420|360|480",
                        offsetIndices: "0121212131212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Mendoza",
                        untils: "-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bktk0|71mk0|bqas0|73h80|bvus0|773s0|5unes0|6hes0|1p7mk0|3yik0|Infinity",
                        offsets: "256.8|240|180|120",
                        offsetIndices: "01212121212121212121212121212121212121212123232312121321232"
                    }, {
                        id: "America/Menominee",
                        untils: "-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|asys0|7x3w0|a7n9g0|9px80|1at9g0|2396k0|9d1c0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "360|300",
                        offsetIndices: "01010110101011010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "America/Merida",
                        untils: "-p1u7c0|vauo00|hoyk0|6ys0c0|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|Infinity",
                        offsets: "358.4667|360|300",
                        offsetIndices: "0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Metlakatla",
                        untils: "-ek1w80|1tz2s0|2dyg0|cawis0|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|gpc840|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|3ylc0|2itg0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "480|420|540",
                        offsetIndices: "01101010101010101010101010101010102020200202020202020202020202020202020202020202"
                    }, {
                        id: "America/Mexico_City",
                        untils: "-p1u4k0|2u7jw0|1sgdc0|8n400|7thc0|9eys0|3knek0|776k0|rf440|5t6k0|1evk40|71mk0|30p1g0|8n180|nufxo0|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|Infinity",
                        offsets: "396.6|420|360|300",
                        offsetIndices: "012121232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232"
                    }, {
                        id: "America/Miquelon",
                        untils: "-ulmyxk|zzqbdk|3m59g0|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "224.6667|240|180|120",
                        offsetIndices: "012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232"
                    }, {
                        id: "America/Moncton",
                        untils: "-z94i40|89fhg0|a2vw0|7mqqo0|4ofw0|e1ms0|4ofw0|e1ms0|4ofw0|e1ms0|4ofw0|e1ms0|4ofw0|e1ms0|4ofw0|dmtg0|64ak0|cao40|6fek0|bkqs0|7iak0|6y5k0|1tzdw0|2dnc0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|s36s0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a2lo|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6uiyc|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "300|240|180",
                        offsetIndices: "012121212121212121212122121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Monterrey",
                        untils: "-p1u7c0|ykt480|ast80|3vppg0|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|Infinity",
                        offsets: "401.2667|360|300",
                        offsetIndices: "0121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Montevideo",
                        untils: "-w4mll9|67elc0|1s74p9|9et80|9exe0|9czy0|9exe0|9czy0|3ydyq0|7x5a0|asxe0|7x5a0|asxe0|7x5a0|asxe0|7x5a0|b5w20|7k6m0|b5w20|7k6m0|9q1e0|9czy0|asxe0|7x5a0|6do20|ppvy0|4mmm0|8g9qq0|901a0|38pe0|2inw0|2nf9g0|8zzw0|1e3s40|9o3y0|q8he0|2kik0|yxhg0|4bh80|s36s0|2vl60|905g0|5rg20|51ek0|weqs0|3yik0|e1ms0|4ofw0|erk40|3yik0|2vs40|gk7w0|41iys0|3wnw0|erk40|4bh80|c8tg0|64ak0|c8tg0|6u7w0|c8tg0|6h980|bvus0|6u7w0|614qs0|9q2s0|a31g0|7x3w0|ag040|8a2k0|asys0|7x3w0|asys0|7x3w0|asys0|8a2k0|ag040|8a2k0|ag040|8a2k0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|Infinity",
                        offsets: "224.85|240|180|210|150|120|90",
                        offsetIndices: "001232323232323232323232324242525242525264252525252525252525252525252525252525252525252"
                    }, {
                        id: "America/Montreal",
                        untils: "-qzoxw0|a2vw0|7yx60|aqzy0|9q8c0|7jzo0|bw0c0|6bp80|cedg0|6h980|c8tg0|6h980|bvus0|776k0|biw40|776k0|biw40|776k0|biw40|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|xjeo0|1tzb40|2dq40|asys0|7x3w0|ast80|7x3w0|asys0|7x3w0|asys0|b5rw0|7xf00|ast80|7x9g0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "300|240",
                        offsetIndices: "01010101010101010101010101010101010101010101011101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "America/Montserrat",
                        untils: "-u6m79w|Infinity",
                        offsets: "246.0667|240",
                        offsetIndices: "01"
                    }, {
                        id: "America/Nassau",
                        untils: "-u6m4c6|r7u7s6|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "309.5|300|240",
                        offsetIndices: "012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/New_York",
                        untils: "-r0ev80|ast80|7x9g0|ast80|7x9g0|b5rw0|905g0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|6w840|1tzb40|2dq40|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "300|240",
                        offsetIndices: "01010101010101010101010101010101010101010101010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "America/Nipigon",
                        untils: "-qzoxw0|a2vw0|bfxjw0|pmdk0|1tzb40|2dq40|ewvus0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "300|240",
                        offsetIndices: "010111010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "America/Nome",
                        untils: "-ek1nw0|1tyug0|2e6s0|b7yik0|12y080|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|1l6c0|7rs80|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "660|600|540|480",
                        offsetIndices: "011001010101010101010101010101010122323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232"
                    }, {
                        id: "America/Noronha",
                        untils: "-t85lzw|99k8rw|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|514g40|7k580|biw40|cvw0|iq5g0|6h980|Infinity",
                        offsets: "129.6667|120|60",
                        offsetIndices: "0121212121212121212121212121212121212121"
                    }, {
                        id: "America/North_Dakota/Beulah",
                        untils: "-r0epo0|ast80|7x9g0|ast80|bmtus0|1tz5k0|2dvo0|b9gdg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hc00|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "420|360|300",
                        offsetIndices: "010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/North_Dakota/Center",
                        untils: "-r0epo0|ast80|7x9g0|ast80|bmtus0|1tz5k0|2dvo0|b9gdg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a5c0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "420|360|300",
                        offsetIndices: "010101101010101010101010101010101010101010101010101010101011212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/North_Dakota/New_Salem",
                        untils: "-r0epo0|ast80|7x9g0|ast80|bmtus0|1tz5k0|2dvo0|b9gdg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a5c0|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "420|360|300",
                        offsetIndices: "010101101010101010101010101010101010101010101010101010101010101010101010101010101121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Nuuk",
                        untils: "-rvumf4|x8nqz4|8zrk0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "206.9333|180|120",
                        offsetIndices: "0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Ojinaga",
                        untils: "-p1u4k0|2u7jw0|1sgdc0|8n400|7thc0|9eys0|xes2s0|afuk0|8a840|afuk0|8aaw0|afuk0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|77c40|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "417.6667|420|360|300",
                        offsetIndices: "0121212323221212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Panama",
                        untils: "-w757vc|Infinity",
                        offsets: "319.6|300",
                        offsetIndices: "01"
                    }, {
                        id: "America/Pangnirtung",
                        untils: "-pkmlc0|b0ke00|1tzdw0|2dnc0|a7n3w0|9q000|7k85k0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|asw00|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7xc80|ast80|7x6o0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "0|240|180|120|300|360",
                        offsetIndices: "012213121212121212121212121212121212114141414154414141414141414141414141414141414141414141414141414141414141414141414141414"
                    }, {
                        id: "America/Paramaribo",
                        untils: "-usj4g8|cixc0c|5lydbk|kcrm6c|Infinity",
                        offsets: "220.6667|220.8667|220.6|210|180",
                        offsetIndices: "01234"
                    }, {
                        id: "America/Phoenix",
                        untils: "-r0epo0|ast80|7x9g0|ast80|bmtus0|zjedo|4olg0|9et80|bs6lmc|9cyk0|Infinity",
                        offsets: "420|360",
                        offsetIndices: "01010101010"
                    }, {
                        id: "America/Port_of_Spain",
                        untils: "-u6m79w|Infinity",
                        offsets: "246.0667|240",
                        offsetIndices: "01"
                    }, {
                        id: "America/Port-au-Prince",
                        untils: "-rmk9ac|ylcf6c|8zzw0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8aaw0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|afxc0|8a5c0|afxc0|3vpjw0|ast80|7x9g0|ast80|2stv00|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|pkg40|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "289|300|240",
                        offsetIndices: "01212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Porto_Acre",
                        untils: "-t85fg0|99kak0|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|amves0|2t2t80|Infinity",
                        offsets: "271.2|300|240",
                        offsetIndices: "01212121212121212121212121212121"
                    }, {
                        id: "America/Porto_Velho",
                        untils: "-t85g60|99k8i0|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|Infinity",
                        offsets: "255.6|240|180",
                        offsetIndices: "012121212121212121212121212121"
                    }, {
                        id: "America/Puerto_Rico",
                        untils: "-efsnk0|1ppu40|2dnc0|Infinity",
                        offsets: "240|180",
                        offsetIndices: "0110"
                    }, {
                        id: "America/Punta_Arenas",
                        untils: "-vauawq|3dlssq|157b7a|f4e0q|49hzba|aye0q|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|534ik0|351g0|2fnh80|2mg00|b73400|7k580|c8tg0|6h980|a31g0|7x3w0|asys0|7x3w0|b5xg0|7k580|ag040|8a2k0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|9cyk0|9d440|7x3w0|asys0|7x3w0|b5xg0|7k580|9q2s0|8zzw0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|a31g0|9px80|9q2s0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|asys0|8zzw0|9q2s0|ast80|5eis0|cyl80|6hes0|c8nw0|6udg0|bvp80|6udg0|vonw0|4olg0|Infinity",
                        offsets: "282.7667|300|240|180",
                        offsetIndices: "0102021212121212121232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323"
                    }, {
                        id: "America/Rainy_River",
                        untils: "-qzov40|a2vw0|bfxjw0|pmdk0|1tz8c0|2dsw0|ewvus0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "360|300",
                        offsetIndices: "010111010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "America/Rankin_Inlet",
                        untils: "-6s8lc0|4c6oo0|9q000|7k85k0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "0|360|240|300",
                        offsetIndices: "012131313131313131313131313131313131313131313331313131313131313131313131313131313131313131313131313131313131313131313131"
                    }, {
                        id: "America/Recife",
                        untils: "-t85ljc|99kb3c|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|514g40|7k580|biw40|cvw0|iq5g0|6h980|Infinity",
                        offsets: "139.6|180|120",
                        offsetIndices: "0121212121212121212121212121212121212121"
                    }, {
                        id: "America/Regina",
                        untils: "-xkq9yc|6l1hmc|a2vw0|60enw0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|1b6840|9cyk0|9d440|8zzw0|9q2s0|9cyk0|9q2s0|9cyk0|9d440|9cyk0|66gc0|1tz5k0|2dvo0|a31g0|9cyk0|a31g0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|tj1g0|9cyk0|9d440|Infinity",
                        offsets: "418.6|420|360",
                        offsetIndices: "012121212121212121212121221212121212121212121212121212"
                    }, {
                        id: "America/Resolute",
                        untils: "-bnp9c0|97nco0|9q000|7k85k0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "0|360|240|300",
                        offsetIndices: "012131313131313131313131313131313131313131313331313131313331313131313131313131313131313131313131313131313131313131313131"
                    }, {
                        id: "America/Rio_Branco",
                        untils: "-t85fg0|99kak0|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|amves0|2t2t80|Infinity",
                        offsets: "271.2|300|240",
                        offsetIndices: "01212121212121212121212121212121"
                    }, {
                        id: "America/Rosario",
                        untils: "-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvxk0|6u540|bvus0|776k0|7qcg40|3yik0|b5xg0|7k580|Infinity",
                        offsets: "256.8|240|180|120",
                        offsetIndices: "01212121212121212121212121212121212121212123232323132323232"
                    }, {
                        id: "America/Santa_Isabel",
                        untils: "-p1u1s0|11jrw0|1sns00|1sgdc0|71s40|9cyk0|5iidg0|1q6700|4lfk0|190g40|eluk0|2r4o80|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|84qys0|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|77c40|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "468.0667|420|480",
                        offsetIndices: "012121211212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212"
                    }, {
                        id: "America/Santarem",
                        untils: "-t85hvc|99ka7c|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|amves0|Infinity",
                        offsets: "218.8|240|180",
                        offsetIndices: "0121212121212121212121212121212"
                    }, {
                        id: "America/Santiago",
                        untils: "-vauawq|3dlssq|157b7a|f4e0q|49hzba|aye0q|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|534ik0|351g0|229zw0|2gt80|awo40|2mg00|b73400|7k580|c8tg0|6h980|a31g0|7x3w0|asys0|7x3w0|b5xg0|7k580|ag040|8a2k0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|9cyk0|9d440|7x3w0|asys0|7x3w0|b5xg0|7k580|9q2s0|8zzw0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|a31g0|9px80|9q2s0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|asys0|8zzw0|9q2s0|ast80|5eis0|cyl80|6hes0|c8nw0|6udg0|bvp80|6udg0|vonw0|4olg0|e1h80|4olg0|e1h80|4olg0|c8nw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|Infinity",
                        offsets: "282.7667|300|240|180",
                        offsetIndices: "010202121212121212321232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323"
                    }, {
                        id: "America/Santo_Domingo",
                        untils: "-j6hz1c|hiw29c|67zw0|1dy840|62ha0|cnle0|4h2m0|elyq0|47ta0|ei9e0|4bim0|eek20|4dda0|ecpe0|dkmtg0|1stc0|Infinity",
                        offsets: "280|300|240|270",
                        offsetIndices: "01213131313131212"
                    }, {
                        id: "America/Sao_Paulo",
                        untils: "-t85jd8|99k8x8|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5k02s0|6onw0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|cyqs0|64ak0|cls40|5rbw0|dbpg0|51ek0|dbpg0|6h980|c8tg0|6h980|c8tg0|64ak0|c8tg0|6u7w0|bxpg0|7iak0|biw40|6u7w0|biw40|7k580|biw40|6u7w0|c8tg0|6h980|dbpg0|5ed80|cls40|64ak0|dfes0|5nmk0|c8tg0|6h980|dbpg0|5rbw0|bvus0|6h980|cls40|64ak0|cls40|6h980|c8tg0|6h980|c8tg0|6u7w0|c8tg0|64ak0|cls40|64ak0|cls40|6h980|c8tg0|6h980|c8tg0|6h980|c8tg0|6h980|dbpg0|5ed80|Infinity",
                        offsets: "186.4667|180|120",
                        offsetIndices: "01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Scoresbysund",
                        untils: "-rvurxk|x8ntpk|902o0|9cvs0|9cyk0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "87.8667|120|60|0",
                        offsetIndices: "0121323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232"
                    }, {
                        id: "America/Shiprock",
                        untils: "-r0epo0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|2vmk0|ataw40|1tz5k0|2dvo0|a7n9g0|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "420|360",
                        offsetIndices: "01010101011010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "America/Sitka",
                        untils: "-ek1w80|1tz2s0|2dyg0|cawis0|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|1leo0|7rs80|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "480|420|540",
                        offsetIndices: "01101010101010101010101010101010122020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202"
                    }, {
                        id: "America/St_Barthelemy",
                        untils: "-u6m79w|Infinity",
                        offsets: "246.0667|240",
                        offsetIndices: "01"
                    }, {
                        id: "America/St_Johns",
                        untils: "-ris3ck|8bx80|ar440|a2vw0|9tjs0|53980|dkys0|9cyk0|9d440|9cyk0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|9cyk0|9d440|9cyk0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|9cyk0|9q2s0|8zzw0|9q2s0|8zzw0|7tmw0|1wfuk|8zzw0|a3480|7k580|b5xg0|7k580|b5xg0|7k580|biw40|776k0|biw40|7k580|b5xg0|7k580|b5xg0|1pb260|2dly0|biw40|7k580|b5xg0|7k580|b5xg0|7k580|b5xg0|7k580|biw40|7k580|ag040|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a2lo|afuk0|8a840|asqg0|7xc80|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8tec|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "210.8667|150.8667|210|150|90",
                        offsetIndices: "01010101010101010101010101010101010102323232323232323323232323232323232323232323232323232323232323232323232323232323232323232323232323232324232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232"
                    }, {
                        id: "America/St_Kitts",
                        untils: "-u6m79w|Infinity",
                        offsets: "246.0667|240",
                        offsetIndices: "01"
                    }, {
                        id: "America/St_Lucia",
                        untils: "-u6m79w|Infinity",
                        offsets: "246.0667|240",
                        offsetIndices: "01"
                    }, {
                        id: "America/St_Thomas",
                        untils: "-u6m79w|Infinity",
                        offsets: "246.0667|240",
                        offsetIndices: "01"
                    }, {
                        id: "America/St_Vincent",
                        untils: "-u6m79w|Infinity",
                        offsets: "246.0667|240",
                        offsetIndices: "01"
                    }, {
                        id: "America/Swift_Current",
                        untils: "-xkq9d4|6l1h14|a2vw0|c5jxg0|1tz5k0|2dvo0|asys0|8n180|a31g0|7x3w0|asys0|7x3w0|asys0|7x3w0|3yles0|9cyk0|s36s0|9cyk0|9d440|7x3w0|b5xg0|7k580|5j4lg0|Infinity",
                        offsets: "431.3333|420|360",
                        offsetIndices: "012122121212121212121212"
                    }, {
                        id: "America/Tegucigalpa",
                        untils: "-pfzh6k|yho0ik|7k580|b5xg0|7k580|96x1g0|4qak0|Infinity",
                        offsets: "348.8667|360|300",
                        offsetIndices: "01212121"
                    }, {
                        id: "America/Thule",
                        untils: "-rvuj9g|12yzilg|9cyk0|9d440|9cyk0|9q2s0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "275.1333|240|180",
                        offsetIndices: "012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Thunder_Bay",
                        untils: "-vbavc0|gr8qs0|1tzb40|2dq40|ctmlg0|9cyk0|9d440|9px80|9d440|9cyk0|s36s0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "360|300|240",
                        offsetIndices: "0122121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "America/Tijuana",
                        untils: "-p1u1s0|11jrw0|1sns00|1sgdc0|71s40|9cyk0|5iidg0|1q6700|4lfk0|190g40|eluk0|2r4o80|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|84qys0|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|77c40|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "468.0667|420|480",
                        offsetIndices: "012121211212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212"
                    }, {
                        id: "America/Toronto",
                        untils: "-qzoxw0|a2vw0|7yx60|aqzy0|9q8c0|7jzo0|bw0c0|6bp80|cedg0|6h980|c8tg0|6h980|bvus0|776k0|biw40|776k0|biw40|776k0|biw40|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|xjeo0|1tzb40|2dq40|asys0|7x3w0|ast80|7x3w0|asys0|7x3w0|asys0|b5rw0|7xf00|ast80|7x9g0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "300|240",
                        offsetIndices: "01010101010101010101010101010101010101010101011101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "America/Tortola",
                        untils: "-u6m79w|Infinity",
                        offsets: "246.0667|240",
                        offsetIndices: "01"
                    }, {
                        id: "America/Vancouver",
                        untils: "-qzopk0|a2vw0|c5jxg0|1tz2s0|2dyg0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "480|420",
                        offsetIndices: "0101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "America/Virgin",
                        untils: "-u6m79w|Infinity",
                        offsets: "246.0667|240",
                        offsetIndices: "01"
                    }, {
                        id: "America/Whitehorse",
                        untils: "-qzoms0|a2vw0|asys0|882c0|bmiwc0|1tz000|2e180|a7n3w0|9q000|tiyo0|6qp440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|Infinity",
                        offsets: "540|480|420",
                        offsetIndices: "01010110201212121212121212121212121212121212121212121212121212121212121212121212121212121212"
                    }, {
                        id: "America/Winnipeg",
                        untils: "-s0s7c0|7k580|tj700|a2vw0|9ok840|6u7w0|2a5hg0|1tz8c0|2dsw0|biw40|7x3w0|a31g0|7x3w0|asys0|7x3w0|asys0|7x3w0|b7s40|7tek0|autg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9cyk0|9d440|7x3w0|1cm2s0|7k580|1cm2s0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|902o0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|902o0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|8a5c0|afxc0|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|7x6o0|asw00|7x6o0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "360|300",
                        offsetIndices: "010101011010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "America/Yakutat",
                        untils: "-ek1tg0|1tz000|2e180|cawis0|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|1lbw0|7rs80|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "540|480",
                        offsetIndices: "01101010101010101010101010101010100101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "America/Yellowknife",
                        untils: "-i9m2o0|3pk3o0|1tz5k0|2dvo0|a7n3w0|9q000|7k85k0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "0|420|360|300",
                        offsetIndices: "012213121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Antarctica/Casey",
                        untils: "-irxc0|lag4o0|73bo0|uz1o0|60l80|2fnh80|pz9g0|Infinity",
                        offsets: "0|-480|-660",
                        offsetIndices: "01212121"
                    }, {
                        id: "Antarctica/Davis",
                        untils: "-6rmdc0|42jdw0|27wgs0|l8uss0|7eqs0|unmk0|60qs0|Infinity",
                        offsets: "0|-420|-300",
                        offsetIndices: "01012121"
                    }, {
                        id: "Antarctica/DumontDUrville",
                        untils: "-c05eo0|2mks80|2i72g0|Infinity",
                        offsets: "0|-600",
                        offsetIndices: "0101"
                    }, {
                        id: "Antarctica/Macquarie",
                        untils: "-rsj4w0|8zzw0|11wqk0|f4kh40|a6p8g0|9d1c0|asw00|6uao0|bvs00|6uao0|bvs00|779c0|bvs00|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|7x6o0|b5uo0|7k800|b5uo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|bvs00|7k800|bitc0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x6o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|7x6o0|asw00|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9d1c0|902o0|a2yo0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|Infinity",
                        offsets: "-600|-660|0",
                        offsetIndices: "0102010101010101010101010101010101010101010101010101010101010101010101010101010101010101011"
                    }, {
                        id: "Antarctica/Mawson",
                        untils: "-8aelc0|t22y80|Infinity",
                        offsets: "0|-360|-300",
                        offsetIndices: "012"
                    }, {
                        id: "Antarctica/McMurdo",
                        untils: "-m01p20|64ak0|biw40|7x5a0|asxe0|7x5a0|asxe0|7x5a0|asxe0|8a3y0|afyq0|8a3y0|afyq0|afvy0|7x820|asum0|7x820|asum0|7x820|asum0|7x820|asum0|7x820|b5ta0|7k9e0|b5ta0|7x820|hsl2m0|5reo0|clpc0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|b5uo0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|Infinity",
                        offsets: "-690|-750|-720|-780",
                        offsetIndices: "01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323"
                    }, {
                        id: "Antarctica/Palmer",
                        untils: "-2lxhc0|31ho0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|46b6s0|8c2s0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|9cyk0|9d440|7x3w0|asys0|7x3w0|b5xg0|7k580|9q2s0|8zzw0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|a31g0|9px80|9q2s0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|asys0|8zzw0|9q2s0|ast80|5eis0|cyl80|6hes0|c8nw0|6udg0|bvp80|6udg0|vonw0|4olg0|Infinity",
                        offsets: "0|180|240|120",
                        offsetIndices: "0121212121213121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Antarctica/Rothera",
                        untils: "3lxs00|Infinity",
                        offsets: "0|180",
                        offsetIndices: "01"
                    }, {
                        id: "Antarctica/South_Pole",
                        untils: "-m01p20|64ak0|biw40|7x5a0|asxe0|7x5a0|asxe0|7x5a0|asxe0|8a3y0|afyq0|8a3y0|afyq0|afvy0|7x820|asum0|7x820|asum0|7x820|asum0|7x820|asum0|7x820|b5ta0|7k9e0|b5ta0|7x820|hsl2m0|5reo0|clpc0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|b5uo0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|Infinity",
                        offsets: "-690|-750|-720|-780",
                        offsetIndices: "01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323"
                    }, {
                        id: "Antarctica/Syowa",
                        untils: "-6qsqo0|Infinity",
                        offsets: "0|-180",
                        offsetIndices: "01"
                    }, {
                        id: "Antarctica/Troll",
                        untils: "ibruo0|27pg0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "0|-120",
                        offsetIndices: "00101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Antarctica/Vostok",
                        untils: "-6aaao0|Infinity",
                        offsets: "0|-360",
                        offsetIndices: "01"
                    }, {
                        id: "Arctic/Longyearbyen",
                        untils: "-rzayo0|6qfs0|cgcqo0|15tsc0|7k800|9q000|9d1c0|9d1c0|9d1c0|9d1c0|70q5c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|b5uo0|7k800|7law00|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-60|-120",
                        offsetIndices: "010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Asia/Aden",
                        untils: "-bwgbbg|Infinity",
                        offsets: "-186.8667|-180",
                        offsetIndices: "01"
                    }, {
                        id: "Asia/Almaty",
                        untils: "-nu1a90|37a0d0|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|Infinity",
                        offsets: "-307.8|-300|-360|-420",
                        offsetIndices: "012323232323232323232321232323232323232323232323232"
                    }, {
                        id: "Asia/Amman",
                        untils: "-kcrtbk|m566fk|60l80|awo40|7v980|awo40|7v980|ayis0|9gnw0|9b9g0|7v980|autg0|7v980|3e6840|9et80|9io40|9cyk0|9d440|9cyk0|9d440|9px80|ayis0|7rjw0|ag040|8a2k0|9zc40|8drw0|a31g0|8zzw0|9d440|9cyk0|9d440|8n180|ag040|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|epmo0|4deo0|9o5c0|9ew00|9b6o0|9ew00|9d1c0|9d1c0|9d1c0|asw00|7x6o0|afxc0|8n400|9d1c0|9d1c0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|wel80|51k40|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|Infinity",
                        offsets: "-143.7333|-120|-180",
                        offsetIndices: "0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Asia/Anadyr",
                        untils: "-nu1sv8|379zj8|qi27w0|9et80|is040|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|j3440|7k800|Infinity",
                        offsets: "-709.9333|-720|-780|-840|-660",
                        offsetIndices: "01232121212121212121214121212121212121212121212121212121212141"
                    }, {
                        id: "Asia/Aqtau",
                        untils: "-nu15b4|379y74|qrh3w0|iruk0|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|Infinity",
                        offsets: "-201.0667|-240|-300|-360",
                        offsetIndices: "012323232323232323232123232312121212121212121212"
                    }, {
                        id: "Asia/Aqtobe",
                        untils: "-nu16l4|379zh4|qi27w0|s6qk0|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|Infinity",
                        offsets: "-228.6667|-240|-300|-360",
                        offsetIndices: "0123232323232323232321232323232323232323232323232"
                    }, {
                        id: "Asia/Ashgabat",
                        untils: "-nu16t8|379zp8|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|Infinity",
                        offsets: "-233.5333|-240|-300|-360",
                        offsetIndices: "0123232323232323232323212"
                    }, {
                        id: "Asia/Ashkhabad",
                        untils: "-nu16t8|379zp8|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|Infinity",
                        offsets: "-233.5333|-240|-300|-360",
                        offsetIndices: "0123232323232323232323212"
                    }, {
                        id: "Asia/Atyrau",
                        untils: "-nu15m8|37a1a8|qrh140|iruk0|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|j3440|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|Infinity",
                        offsets: "-207.7333|-180|-300|-360|-240",
                        offsetIndices: "01232323232323232323242323232323232324242424242"
                    }, {
                        id: "Asia/Baghdad",
                        untils: "-r50g80|xkn3w0|7v980|9b9g0|9gnw0|9eys0|9et80|9d440|9b9g0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9f1k0|9ew00|9ew00|9ew00|9d1c0|9ew00|9d1c0|9ew00|9d1c0|9ew00|9ew00|9ew00|9d1c0|9ew00|9d1c0|9ew00|9d1c0|9ew00|9ew00|9ew00|9d1c0|9ew00|9d1c0|9ew00|9d1c0|9ew00|9ew00|9ew00|9d1c0|9ew00|9d1c0|9ew00|9d1c0|9ew00|Infinity",
                        offsets: "-177.6|-180|-240",
                        offsetIndices: "012121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Asia/Bahrain",
                        untils: "-q3gmvk|rctnrk|Infinity",
                        offsets: "-206.1333|-240|-180",
                        offsetIndices: "012"
                    }, {
                        id: "Asia/Baku",
                        untils: "-nu158c|h4tkwc|ckinw0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|9d1c0|239ew0|asw00|7x3w0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-199.4|-180|-240|-300",
                        offsetIndices: "01232323232323232323232123232323232323232323232323232323232323232"
                    }, {
                        id: "Asia/Bangkok",
                        untils: "-pysda4|Infinity",
                        offsets: "-402.0667|-420",
                        offsetIndices: "01"
                    }, {
                        id: "Asia/Barnaul",
                        untils: "-q4ljic|5hu6uc|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|38fo0|64og0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|qnc40|Infinity",
                        offsets: "-335|-360|-420|-480",
                        offsetIndices: "0123232323232323232323212323232321212121212121212121212121212121212"
                    }, {
                        id: "Asia/Beirut",
                        untils: "-pyzew0|aunw0|88dg0|9et80|8yas0|a2vw0|a31g0|7k580|hjqo40|7v980|awo40|7v980|awo40|7v980|ayis0|7v980|awo40|7v980|5lhs40|56yk0|awo40|7v980|awo40|7v980|awo40|7v980|ayis0|7v980|awo40|7v980|autg0|7v980|2wxus0|8n180|a4w40|8n180|a4w40|8n180|a4w40|8n180|bs5g0|71mk0|alk40|86d80|a4w40|8n180|a4w40|8n180|a6qs0|80t80|905g0|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|Infinity",
                        offsets: "-120|-180",
                        offsetIndices: "010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Asia/Bishkek",
                        untils: "-nu19tc|379zxc|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|h8dc0|bkl80|8n180|a31g0|8n180|a31g0|8n180|a31g0|8n180|a31g0|8zzw0|9db20|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|Infinity",
                        offsets: "-298.4|-300|-360|-420",
                        offsetIndices: "012323232323232323232321212121212121212121212121212"
                    }, {
                        id: "Asia/Brunei",
                        untils: "-mvofy4|3khxs4|Infinity",
                        offsets: "-459.6667|-450|-480",
                        offsetIndices: "012"
                    }, {
                        id: "Asia/Calcutta",
                        untils: "-xehava|innm9a|bmfw0|5lxg0|1mn180|Infinity",
                        offsets: "-321.1667|-330|-390",
                        offsetIndices: "012121"
                    }, {
                        id: "Asia/Chita",
                        untils: "-q4cfog|5hkxgg|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|qnew0|Infinity",
                        offsets: "-453.8667|-480|-540|-600",
                        offsetIndices: "012323232323232323232321232323232323232323232323232323232323232312"
                    }, {
                        id: "Asia/Choibalsan",
                        untils: "-xmct7c|11sndrc|2qk2k0|9eqg0|9eys0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|9cyk0|9d440|9cyk0|9d440|9cyk0|1ckdo0|7x3w0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|s6qk0|3nc0c0|9ct00|9d9o0|9ct00|Infinity",
                        offsets: "-458|-420|-480|-600|-540",
                        offsetIndices: "0123434343434343434343434343434343434343434343424242"
                    }, {
                        id: "Asia/Chongqing",
                        untils: "-qh00w0|8sl80|asbpg0|6w2k0|7ves0|bxjw0|4mqs0|1vduk0|d4as0|75bw0|a31g0|aaak0|9d440|7v980|awo40|1dx80|j9xpo0|6u7w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|Infinity",
                        offsets: "-480|-540",
                        offsetIndices: "01010101010101010101010101010"
                    }, {
                        id: "Asia/Chungking",
                        untils: "-qh00w0|8sl80|asbpg0|6w2k0|7ves0|bxjw0|4mqs0|1vduk0|d4as0|75bw0|a31g0|aaak0|9d440|7v980|awo40|1dx80|j9xpo0|6u7w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|Infinity",
                        offsets: "-480|-540",
                        offsetIndices: "01010101010101010101010101010"
                    }, {
                        id: "Asia/Colombo",
                        untils: "-xehask|isle6k|cajy0|1mp2u0|qetjw0|7x5a0|4xvqq0|Infinity",
                        offsets: "-319.5333|-330|-360|-390",
                        offsetIndices: "01231321"
                    }, {
                        id: "Asia/Dacca",
                        untils: "-eqtpow|bmgyw|5lxg0|4qknw0|u4ijy0|a1400|Infinity",
                        offsets: "-353.3333|-390|-330|-360|-420",
                        offsetIndices: "0121343"
                    }, {
                        id: "Asia/Damascus",
                        untils: "-q3gk20|5k6q0|8n180|a31g0|8n180|a31g0|8n180|a31g0|8zzw0|k4hk40|7yyk0|awo40|7tek0|b0dg0|7v980|awo40|7tek0|alk40|887w0|awo40|7v980|ayis0|7v980|awo40|7v980|awo40|7v980|awo40|7v980|ayis0|7v980|awo40|7v980|awo40|7v980|awo40|7v980|ayis0|7v980|awo40|6bp80|cg840|6bp80|2eh1g0|8zzw0|9ts40|8zzw0|pvk40|c33w0|7cw40|cjrw0|6zxg0|btuk0|7rpg0|9gnw0|9d440|9cyk0|9et80|9et80|9rxg0|91uk0|92040|9et80|9o840|9et80|9d440|9et80|9eys0|9et80|9b9g0|9gnw0|99es0|9iik0|9d440|9et80|9eys0|9et80|9d440|9et80|9d440|9et80|9d440|9et80|9eys0|9et80|9d440|9et80|9d440|8y580|9q2s0|b5rw0|7x9g0|aunw0|7ig40|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|Infinity",
                        offsets: "-145.2|-120|-180",
                        offsetIndices: "01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Asia/Dhaka",
                        untils: "-eqtpow|bmgyw|5lxg0|4qknw0|u4ijy0|a1400|Infinity",
                        offsets: "-353.3333|-390|-330|-360|-420",
                        offsetIndices: "0121343"
                    }, {
                        id: "Asia/Dili",
                        untils: "-u9s4l8|fqcu98|hufs00|cpz440|Infinity",
                        offsets: "-502.3333|-480|-540",
                        offsetIndices: "01212"
                    }, {
                        id: "Asia/Dubai",
                        untils: "-q3gnko|Infinity",
                        offsets: "-221.2|-240",
                        offsetIndices: "01"
                    }, {
                        id: "Asia/Dushanbe",
                        untils: "-nu18qo|379yuo|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|hp440|Infinity",
                        offsets: "-275.2|-300|-360|-420",
                        offsetIndices: "012323232323232323232321"
                    }, {
                        id: "Asia/Famagusta",
                        untils: "-p4bqac|rvhy2c|9cyk0|b42s0|7nuk0|8yas0|8zzw0|9q2s0|9et80|9b9g0|9cyk0|9q2s0|8zzw0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|9cyk0|9d440|9cyk0|9d440|at4c0|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|8h8w0|leog0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-135.8|-120|-180",
                        offsetIndices: "0121212121212121212121212121212121212121212121212121212121212121212121212121212121212212121212121212121212121212121212121212121"
                    }, {
                        id: "Asia/Gaza",
                        untils: "-ffv9k0|19f3w0|7rv00|b02c0|7tk40|b07w0|8jhg0|a8lg0|8jhg0|a8ac0|5hoqs0|7el80|awo40|7v980|awqw0|7tk40|b07w0|7tk40|ayd80|7tk40|ayd80|7tk40|ayd80|7tk40|b07w0|7tk40|ayd80|7tk40|ayd80|7ves0|awik0|1sns0|3p6is0|51ek0|9q2s0|6u7w0|2khpg0|25s00|1weyo0|5reo0|bxmo0|7x3w0|cls40|5rbw0|bbhg0|7rjw0|asys0|7k580|c8tg0|6h980|ag040|7x3w0|asys0|8a2k0|asys0|8a2k0|ap9g0|80t80|ap9g0|7nuk0|b2840|80t80|66as0|4vxc0|8n400|a2yo0|8n400|a2yo0|8n400|asw00|9cyk0|9q2s0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|8n400|a2yo0|8ulg0|97ek0|8y580|9ts40|8hms0|a4qk0|7x3w0|asys0|8a5c0|ahs1o|71mic|bzk5o|69uic|cg840|902o0|9q000|9cyk0|9d440|ast80|7z440|aqyk0|7z6w0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7vc00|auqo0|7vc00|b7pc0|7idc0|b7pc0|7idc0|b7pc0|7vc00|auqo0|7vc00|auqo0|7vc00|auqo0|7vc00|b7pc0|7idc0|b7pc0|7vc00|auqo0|7vc00|auqo0|7vc00|auqo0|7vc00|auqo0|7vc00|b7pc0|7idc0|b7pc0|7vc00|auqo0|7vc00|auqo0|7vc00|auqo0|7vc00|b7pc0|Infinity",
                        offsets: "-120|-180",
                        offsetIndices: "0101010101010101010101010101010101010101010101010101010101010100101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Asia/Harbin",
                        untils: "-qh00w0|8sl80|asbpg0|6w2k0|7ves0|bxjw0|4mqs0|1vduk0|d4as0|75bw0|a31g0|aaak0|9d440|7v980|awo40|1dx80|j9xpo0|6u7w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|Infinity",
                        offsets: "-480|-540",
                        offsetIndices: "01010101010101010101010101010"
                    }, {
                        id: "Asia/Hebron",
                        untils: "-ffv9k0|19f3w0|7rv00|b02c0|7tk40|b07w0|8jhg0|a8lg0|8jhg0|a8ac0|5hoqs0|7el80|awo40|7v980|awqw0|7tk40|b07w0|7tk40|ayd80|7tk40|ayd80|7tk40|ayd80|7tk40|b07w0|7tk40|ayd80|7tk40|ayd80|7ves0|awik0|1sns0|3p6is0|51ek0|9q2s0|6u7w0|2khpg0|25s00|1weyo0|5reo0|bxmo0|7x3w0|cls40|5rbw0|bbhg0|7rjw0|asys0|7k580|c8tg0|6h980|ag040|7x3w0|asys0|8a2k0|asys0|8a2k0|ap9g0|80t80|ap9g0|7nuk0|b2840|80t80|66as0|4vxc0|8n400|a2yo0|8n400|a2yo0|8n400|asw00|9cyk0|9q2s0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|8n400|a2yo0|8ulg0|97ek0|8y580|9ts40|8hms0|a4qk0|82nw0|anes0|8a5c0|afxc0|73h80|bzk5o|69uic|1hs40|1lbw0|9d440|902o0|9q000|9cyk0|9d440|ast80|7z440|aqyk0|7z6w0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7vc00|auqo0|7vc00|b7pc0|7idc0|b7pc0|7idc0|b7pc0|7vc00|auqo0|7vc00|auqo0|7vc00|auqo0|7vc00|b7pc0|7idc0|b7pc0|7vc00|auqo0|7vc00|auqo0|7vc00|auqo0|7vc00|auqo0|7vc00|b7pc0|7idc0|b7pc0|7vc00|auqo0|7vc00|auqo0|7vc00|auqo0|7vc00|b7pc0|Infinity",
                        offsets: "-120|-180",
                        offsetIndices: "010101010101010101010101010101010101010101010101010101010101010010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Asia/Ho_Chi_Minh",
                        untils: "-x56934|2isioa|gj25iu|15ct80|8so00|tmtk0|4azjw0|2cmao0|8285c0|Infinity",
                        offsets: "-426.6667|-426.5|-420|-480|-540",
                        offsetIndices: "0123423232"
                    }, {
                        id: "Asia/Hong_Kong",
                        untils: "-y0i0s0|j44dk0|5k000|4d4y0|2195i0|7x3w0|bj320|6uao0|bvs00|7x6o0|9d1c0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|ast80|77c40|biqk0|77c40|bvp80|6udg0|bvp80|77c40|biqk0|77c40|biqk0|77c40|biqk0|77c40|bvp80|6udg0|bvp80|6udg0|bvp80|77c40|biqk0|77c40|biqk0|8n6s0|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|3lpg0|f4d80|9d440|9cyk0|9d440|9cyk0|1c9440|8a2k0|Infinity",
                        offsets: "-456.7|-480|-540|-510",
                        offsetIndices: "0123212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Asia/Hovd",
                        untils: "-xmcoz0|11sncb0|2qk2k0|9et80|9eys0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|9cyk0|9d440|9cyk0|9d440|9cyk0|1ckdo0|7x3w0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|4fio40|9ct00|9d9o0|9ct00|Infinity",
                        offsets: "-366.6|-360|-420|-480",
                        offsetIndices: "012323232323232323232323232323232323232323232323232"
                    }, {
                        id: "Asia/Irkutsk",
                        untils: "-q28gn5|5fh175|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity",
                        offsets: "-417.0833|-420|-480|-540",
                        offsetIndices: "01232323232323232323232123232323232323232323232323232323232323232"
                    }, {
                        id: "Asia/Istanbul",
                        untils: "-ux9xew|2wvx6w|7v980|1tjc40|aunw0|88dg0|9et80|8yas0|a2vw0|tzpg0|79180|awo40|7v980|7p4040|4zjw0|2vs40|f4d80|9vms0|1u5ek0|c5440|69uk0|acas0|8n180|a31g0|8n180|9q2s0|8zzw0|a31g0|8zzw0|a31g0|8n180|5md9g0|o9zw0|a6qs0|75bw0|4iwyw0|7x6o0|7kas0|b5rw0|75hg0|bkl80|77c40|biqk0|7x9g0|a2vw0|8n6s0|4iqc0|2nkw80|38l80|kdes0|8qtc0|8a5c0|9ew00|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|902o0|9q000|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7kdk0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7m2o0|b4000|7k800|b5uo0|7x6o0|asw00|7z1c0|ar1c0|7x6o0|bitc0|779c0|8fe80|Infinity",
                        offsets: "-116.9333|-120|-180|-240",
                        offsetIndices: "0121212121212121212121212121212121212121212121223212121212121212121212121212121212121212121212121212121212121212122"
                    }, {
                        id: "Asia/Jakarta",
                        untils: "-o0bdpc|4lzxc0|4wdzjc|1tu960|1cx860|11jta0|74uc20|Infinity",
                        offsets: "-427.2|-440|-450|-540|-480|-420",
                        offsetIndices: "01232425"
                    }, {
                        id: "Asia/Jayapura",
                        untils: "-jebm20|66bqe0|a37vy0|Infinity",
                        offsets: "-562.8|-540|-570",
                        offsetIndices: "0121"
                    }, {
                        id: "Asia/Jerusalem",
                        untils: "-r50eig|bp54yg|19f3w0|7rv00|b02c0|7tk40|b07w0|8jhg0|a8lg0|8jhg0|a8ac0|t9s40|56vs0|35700|9b3w0|9gtg0|8jbw0|7tmw0|a6ig0|biyw0|8a5c0|9d1c0|902o0|7x6o0|e1eg0|4ofw0|dzxo0|4q500|doo40|64iw0|auqo0|7i500|8rfms0|51ek0|9q2s0|6u7w0|2khpg0|25s00|1weyo0|5reo0|bxmo0|7x3w0|cls40|5rbw0|bbhg0|7rjw0|asys0|7k580|c8tg0|6h980|ag040|7x3w0|asys0|8a2k0|asys0|8a2k0|ap9g0|80t80|ap9g0|7nuk0|b2840|80t80|9zc40|9iik0|9kis0|93p80|9mdg0|8qqk0|apf00|7x3w0|biw40|8zx40|9io40|8n180|9kis0|9vh80|8ulg0|9px80|9mdg0|8n180|9tuw0|9tmk0|8wg40|9gnw0|99es0|8qqk0|9zc40|9tmk0|8wg40|9gnw0|99es0|8qqk0|acas0|9gnw0|99es0|93p80|9mdg0|awik0|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|Infinity",
                        offsets: "-140.6667|-120|-180|-240",
                        offsetIndices: "012121212121321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Asia/Kabul",
                        untils: "-d1pkg0|Infinity",
                        offsets: "-240|-270",
                        offsetIndices: "01"
                    }, {
                        id: "Asia/Kamchatka",
                        untils: "-olrupo|3z045o|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|j3440|7k800|Infinity",
                        offsets: "-634.6|-660|-720|-780",
                        offsetIndices: "012323232323232323232321232323232323232323232323232323232323212"
                    }, {
                        id: "Asia/Karachi",
                        untils: "-wvpb30|im3zt0|1mn180|33xpg0|a63o20|g72qo0|9cyk0|2y85g0|7v980|8hms0|aaak0|Infinity",
                        offsets: "-268.2|-330|-390|-300|-360",
                        offsetIndices: "012133434343"
                    }, {
                        id: "Asia/Kashgar",
                        untils: "-lx5pjw|Infinity",
                        offsets: "-350.3333|-360",
                        offsetIndices: "01"
                    }, {
                        id: "Asia/Kathmandu",
                        untils: "-q3gt4s|yg2lus|Infinity",
                        offsets: "-341.2667|-330|-345",
                        offsetIndices: "012"
                    }, {
                        id: "Asia/Katmandu",
                        untils: "-q3gt4s|yg2lus|Infinity",
                        offsets: "-341.2667|-330|-345",
                        offsetIndices: "012"
                    }, {
                        id: "Asia/Khandyga",
                        untils: "-q4cjrp|5hl1jp|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|3fx40|4h6s0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|8ql00|1mlho0|Infinity",
                        offsets: "-542.2167|-480|-540|-600|-660",
                        offsetIndices: "0123232323232323232323212323232323232323232323232343434343434343432"
                    }, {
                        id: "Asia/Kolkata",
                        untils: "-xehava|innm9a|bmfw0|5lxg0|1mn180|Infinity",
                        offsets: "-321.1667|-330|-390",
                        offsetIndices: "012121"
                    }, {
                        id: "Asia/Krasnoyarsk",
                        untils: "-q37l72|5gg8j2|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity",
                        offsets: "-371.4333|-360|-420|-480",
                        offsetIndices: "01232323232323232323232123232323232323232323232323232323232323232"
                    }, {
                        id: "Asia/Kuala_Lumpur",
                        untils: "-xphpwd|eeb94d|4it32o|8n3jc|1v2p60|iy3o60|Infinity",
                        offsets: "-415.4167|-420|-440|-450|-540|-480",
                        offsetIndices: "0123435"
                    }, {
                        id: "Asia/Kuching",
                        untils: "-mvof3k|3khwxk|1epvy0|4ohqo|e5a9c|4ohqo|e3flc|4ohqo|e3flc|4ohqo|e3flc|4ohqo|e5a9c|4ohqo|e3flc|4ohqo|3ajlc|1v2qk0|Infinity",
                        offsets: "-441.3333|-450|-480|-500|-540",
                        offsetIndices: "0123232323232323242"
                    }, {
                        id: "Asia/Kuwait",
                        untils: "-bwgbbg|Infinity",
                        offsets: "-186.8667|-180",
                        offsetIndices: "01"
                    }, {
                        id: "Asia/Macao",
                        untils: "-y0i2cy|jdvyoy|6onw0|ac580|8fs40|7v980|11luw0|awlc0|7vc00|ac800|bko00|7x6o0|9d1c0|7vc00|asw00|7x6o0|asw00|7x6o0|auqo0|88ao0|asw00|7x6o0|asw00|779c0|bitc0|779c0|bvs00|6uao0|bw1q0|77c40|biqk0|77c40|biqk0|77c40|biqk0|77c40|bvp80|6udg0|bvp80|6udg0|bvp80|77c40|biqk0|77c40|biqk0|8n6s0|9cvs0|9d6w0|9cvs0|9d6w0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|3lpg0|f4d80|9d440|9cyk0|9d440|9cyk0|1c9440|8a2k0|Infinity",
                        offsets: "-454.1667|-480|-540|-600",
                        offsetIndices: "012323212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Asia/Macau",
                        untils: "-y0i2cy|jdvyoy|6onw0|ac580|8fs40|7v980|11luw0|awlc0|7vc00|ac800|bko00|7x6o0|9d1c0|7vc00|asw00|7x6o0|asw00|7x6o0|auqo0|88ao0|asw00|7x6o0|asw00|779c0|bitc0|779c0|bvs00|6uao0|bw1q0|77c40|biqk0|77c40|biqk0|77c40|biqk0|77c40|bvp80|6udg0|bvp80|6udg0|bvp80|77c40|biqk0|77c40|biqk0|8n6s0|9cvs0|9d6w0|9cvs0|9d6w0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|3lpg0|f4d80|9d440|9cyk0|9d440|9cyk0|1c9440|8a2k0|Infinity",
                        offsets: "-454.1667|-480|-540|-600",
                        offsetIndices: "012323212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Asia/Magadan",
                        untils: "-nu1nxc|37a05c|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|s39k0|Infinity",
                        offsets: "-603.2|-600|-660|-720",
                        offsetIndices: "012323232323232323232321232323232323232323232323232323232323232312"
                    }, {
                        id: "Asia/Makassar",
                        untils: "-q3gzg0|6p5hc0|4u87w0|1w02k0|Infinity",
                        offsets: "-477.6|-480|-540",
                        offsetIndices: "00121"
                    }, {
                        id: "Asia/Manila",
                        untils: "-hb5y80|4qak0|2qidg0|1b2d80|4xf440|442k0|cdqdg0|9et80|Infinity",
                        offsets: "-480|-540",
                        offsetIndices: "010101010"
                    }, {
                        id: "Asia/Muscat",
                        untils: "-q3gnko|Infinity",
                        offsets: "-221.2|-240",
                        offsetIndices: "01"
                    }, {
                        id: "Asia/Nicosia",
                        untils: "-p4bq6g|rvhxyg|9cyk0|b42s0|7nuk0|8yas0|8zzw0|9q2s0|9et80|9b9g0|9cyk0|9q2s0|8zzw0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|9cyk0|9d440|9cyk0|9d440|at4c0|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-133.4667|-120|-180",
                        offsetIndices: "01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Asia/Novokuznetsk",
                        untils: "-nu36tc|37bu5c|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|j3440|7k800|Infinity",
                        offsets: "-348.8|-360|-420|-480",
                        offsetIndices: "012323232323232323232321232323232323232323232323232323232323212"
                    }, {
                        id: "Asia/Novosibirsk",
                        untils: "-q4do0s|5hmbcs|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|2vh00|6hn40|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|wrpg0|Infinity",
                        offsets: "-331.6667|-360|-420|-480",
                        offsetIndices: "0123232323232323232323212323212121212121212121212121212121212121212"
                    }, {
                        id: "Asia/Omsk",
                        untils: "-q5xmx6|5j6d16|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity",
                        offsets: "-293.5|-300|-360|-420",
                        offsetIndices: "01232323232323232323232123232323232323232323232323232323232323232"
                    }, {
                        id: "Asia/Oral",
                        untils: "-nu15ic|37a16c|qi2540|s6qk0|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|iq5g0|9d1c0|9q000|9d1c0|9d1c0|5reo0|cyo00|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|Infinity",
                        offsets: "-205.4|-180|-300|-360|-240",
                        offsetIndices: "01232323232323232424242424242424242424242424242"
                    }, {
                        id: "Asia/Phnom_Penh",
                        untils: "-pysda4|Infinity",
                        offsets: "-402.0667|-420",
                        offsetIndices: "01"
                    }, {
                        id: "Asia/Pontianak",
                        untils: "-w6piww|cse2o0|4tnu2w|1wkei0|1cx860|11jta0|74uc20|cixam0|Infinity",
                        offsets: "-437.3333|-450|-540|-480|-420",
                        offsetIndices: "001213134"
                    }, {
                        id: "Asia/Pyongyang",
                        untils: "-w895yc|1yh10c|hk5da0|10ipmo0|1f4qo0|Infinity",
                        offsets: "-503|-510|-540",
                        offsetIndices: "012212"
                    }, {
                        id: "Asia/Qatar",
                        untils: "-q3gmvk|rctnrk|Infinity",
                        offsets: "-206.1333|-240|-180",
                        offsetIndices: "012"
                    }, {
                        id: "Asia/Qostanay",
                        untils: "-nu17s4|37a0o4|qi27w0|s6qk0|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|Infinity",
                        offsets: "-254.4667|-240|-300|-360",
                        offsetIndices: "012323232323232323232123232323232323232323232323"
                    }, {
                        id: "Asia/Qyzylorda",
                        untils: "-nu184g|37a10g|qi27w0|s6qk0|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|ohhc0|cyo00|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|7osl00|Infinity",
                        offsets: "-261.8667|-240|-300|-360",
                        offsetIndices: "01232323232323232323232323232323232323232323232"
                    }, {
                        id: "Asia/Rangoon",
                        untils: "-q3gv5b|bnjp3b|1kh520|Infinity",
                        offsets: "-384.7833|-390|-540",
                        offsetIndices: "0121"
                    }, {
                        id: "Asia/Riyadh",
                        untils: "-bwgbbg|Infinity",
                        offsets: "-186.8667|-180",
                        offsetIndices: "01"
                    }, {
                        id: "Asia/Saigon",
                        untils: "-x56934|2isioa|gj25iu|15ct80|8so00|tmtk0|4azjw0|2cmao0|8285c0|Infinity",
                        offsets: "-426.6667|-426.5|-420|-480|-540",
                        offsetIndices: "0123423232"
                    }, {
                        id: "Asia/Sakhalin",
                        untils: "-xl87rc|kvnarc|ikvh40|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|iq5g0|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|qnc40|Infinity",
                        offsets: "-570.8|-540|-660|-720|-600",
                        offsetIndices: "01232323232323232323232423232323232424242424242424242424242424242"
                    }, {
                        id: "Asia/Samarkand",
                        untils: "-nu18eh|37a1ah|qi27w0|s6qk0|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|Infinity",
                        offsets: "-267.8833|-240|-300|-360",
                        offsetIndices: "01232323232323232323232"
                    }, {
                        id: "Asia/Seoul",
                        untils: "-w8966g|1yh18g|hkx5a0|1faao0|5cik0|ae5g0|8a2k0|ae5g0|8bx80|c8tg0|6h980|1bj6s0|l3aq0|6j3w0|d2g40|6u7w0|b5xg0|776k0|biw40|776k0|biw40|776k0|biw40|776k0|grs40|dfqxi0|7x6o0|asw00|7x6o0|Infinity",
                        offsets: "-507.8667|-510|-540|-600|-570",
                        offsetIndices: "012232323232141414141414123232"
                    }, {
                        id: "Asia/Shanghai",
                        untils: "-qh00w0|8sl80|asbpg0|6w2k0|7ves0|bxjw0|4mqs0|1vduk0|d4as0|75bw0|a31g0|aaak0|9d440|7v980|awo40|1dx80|j9xpo0|6u7w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|Infinity",
                        offsets: "-480|-540",
                        offsetIndices: "01010101010101010101010101010"
                    }, {
                        id: "Asia/Singapore",
                        untils: "-xphpwd|eeb94d|4it32o|8n3jc|1v2p60|iy3o60|Infinity",
                        offsets: "-415.4167|-420|-440|-450|-540|-480",
                        offsetIndices: "0123435"
                    }, {
                        id: "Asia/Srednekolymsk",
                        untils: "-nu1ogs|37a0os|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity",
                        offsets: "-614.8667|-600|-660|-720",
                        offsetIndices: "01232323232323232323232123232323232323232323232323232323232323232"
                    }, {
                        id: "Asia/Taipei",
                        untils: "-gtzfk0|45slc0|c51c0|75bw0|a31g0|aaak0|9d440|7v980|awo40|7v980|awo40|7v980|awo40|7v980|7tk40|clmk0|7rpg0|b07w0|7rpg0|b07w0|7rpg0|9et80|9eys0|9et80|9d440|9et80|9d440|9et80|9d440|9et80|cjxg0|69uk0|ci2s0|69uk0|6its40|9et80|9d440|9et80|1yf9g0|4qak0|Infinity",
                        offsets: "-480|-540",
                        offsetIndices: "01010101010101010101010101010101010101010"
                    }, {
                        id: "Asia/Tashkent",
                        untils: "-nu18tz|379yxz|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|Infinity",
                        offsets: "-277.1833|-300|-360|-420",
                        offsetIndices: "012323232323232323232321"
                    }, {
                        id: "Asia/Tbilisi",
                        untils: "-nu14an|h4tjyn|ckinw0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|9cvs0|9cyk0|9d440|9cyk0|9d440|ipzw0|9cyk0|9q2s0|tivw0|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|4ofw0|6hn40|7k800|Infinity",
                        offsets: "-179.1833|-180|-240|-300",
                        offsetIndices: "0123232323232323232323212121232323232323232323212"
                    }, {
                        id: "Asia/Tehran",
                        untils: "-s6m6uw|fnolc0|gm3h4w|777y0|b07w0|3pes0|42c20|9cyk0|9gtg0|9kd80|5ja5g0|7avw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|1av440|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|Infinity",
                        offsets: "-205.7333|-210|-240|-300|-270",
                        offsetIndices: "00123214141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141"
                    }, {
                        id: "Asia/Tel_Aviv",
                        untils: "-r50eig|bp54yg|19f3w0|7rv00|b02c0|7tk40|b07w0|8jhg0|a8lg0|8jhg0|a8ac0|t9s40|56vs0|35700|9b3w0|9gtg0|8jbw0|7tmw0|a6ig0|biyw0|8a5c0|9d1c0|902o0|7x6o0|e1eg0|4ofw0|dzxo0|4q500|doo40|64iw0|auqo0|7i500|8rfms0|51ek0|9q2s0|6u7w0|2khpg0|25s00|1weyo0|5reo0|bxmo0|7x3w0|cls40|5rbw0|bbhg0|7rjw0|asys0|7k580|c8tg0|6h980|ag040|7x3w0|asys0|8a2k0|asys0|8a2k0|ap9g0|80t80|ap9g0|7nuk0|b2840|80t80|9zc40|9iik0|9kis0|93p80|9mdg0|8qqk0|apf00|7x3w0|biw40|8zx40|9io40|8n180|9kis0|9vh80|8ulg0|9px80|9mdg0|8n180|9tuw0|9tmk0|8wg40|9gnw0|99es0|8qqk0|9zc40|9tmk0|8wg40|9gnw0|99es0|8qqk0|acas0|9gnw0|99es0|93p80|9mdg0|awik0|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|Infinity",
                        offsets: "-140.6667|-120|-180|-240",
                        offsetIndices: "012121212121321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Asia/Thimbu",
                        untils: "-bojclo|kxymno|Infinity",
                        offsets: "-358.6|-330|-360",
                        offsetIndices: "012"
                    }, {
                        id: "Asia/Thimphu",
                        untils: "-bojclo|kxymno|Infinity",
                        offsets: "-358.6|-330|-360",
                        offsetIndices: "012"
                    }, {
                        id: "Asia/Tokyo",
                        untils: "-bb4900|6uao0|afxc0|8a5c0|c8qo0|6hc00|c8qo0|6hc00|Infinity",
                        offsets: "-540|-600",
                        offsetIndices: "010101010"
                    }, {
                        id: "Asia/Tomsk",
                        untils: "-q3zbqf|5h7z2f|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|1leo0|97k40|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|tw040|Infinity",
                        offsets: "-339.85|-360|-420|-480",
                        offsetIndices: "0123232323232323232323212323232323232323232323212121212121212121212"
                    }, {
                        id: "Asia/Ujung_Pandang",
                        untils: "-q3gzg0|6p5hc0|4u87w0|1w02k0|Infinity",
                        offsets: "-477.6|-480|-540",
                        offsetIndices: "00121"
                    }, {
                        id: "Asia/Ulaanbaatar",
                        untils: "-xmcrsk|11sncck|2qk2k0|9et80|9eys0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|9cyk0|9d440|9cyk0|9d440|9cyk0|1ckdo0|7x3w0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|4fio40|9ct00|9d9o0|9ct00|Infinity",
                        offsets: "-427.5333|-420|-480|-540",
                        offsetIndices: "012323232323232323232323232323232323232323232323232"
                    }, {
                        id: "Asia/Ulan_Bator",
                        untils: "-xmcrsk|11sncck|2qk2k0|9et80|9eys0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|9cyk0|9d440|9cyk0|9d440|9cyk0|1ckdo0|7x3w0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|4fio40|9ct00|9d9o0|9ct00|Infinity",
                        offsets: "-427.5333|-420|-480|-540",
                        offsetIndices: "012323232323232323232323232323232323232323232323232"
                    }, {
                        id: "Asia/Urumqi",
                        untils: "-lx5pjw|Infinity",
                        offsets: "-350.3333|-360",
                        offsetIndices: "01"
                    }, {
                        id: "Asia/Ust-Nera",
                        untils: "-q4cl6u|5hl2yu|qi27w0|9eno0|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|8ql00|1mlho0|Infinity",
                        offsets: "-572.9|-480|-540|-720|-660|-600",
                        offsetIndices: "012343434343434343434345434343434343434343434343434343434343434345"
                    }, {
                        id: "Asia/Vientiane",
                        untils: "-pysda4|Infinity",
                        offsets: "-402.0667|-420",
                        offsetIndices: "01"
                    }, {
                        id: "Asia/Vladivostok",
                        untils: "-oligf7|3yqvf7|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity",
                        offsets: "-527.5167|-540|-600|-660",
                        offsetIndices: "01232323232323232323232123232323232323232323232323232323232323232"
                    }, {
                        id: "Asia/Yakutsk",
                        untils: "-q4cioy|5hl0gy|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity",
                        offsets: "-518.9667|-480|-540|-600",
                        offsetIndices: "01232323232323232323232123232323232323232323232323232323232323232"
                    }, {
                        id: "Asia/Yangon",
                        untils: "-q3gv5b|bnjp3b|1kh520|Infinity",
                        offsets: "-384.7833|-390|-540",
                        offsetIndices: "0121"
                    }, {
                        id: "Asia/Yekaterinburg",
                        untils: "-rx5hw9|1kybx4|5pfyv5|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity",
                        offsets: "-242.55|-225.0833|-240|-300|-360",
                        offsetIndices: "012343434343434343434343234343434343434343434343434343434343434343"
                    }, {
                        id: "Asia/Yerevan",
                        untils: "-nu148o|h4tjwo|ckinw0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|11t180|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|Infinity",
                        offsets: "-178|-180|-240|-300",
                        offsetIndices: "0123232323232323232323212121212323232323232323232323232323232"
                    }, {
                        id: "Atlantic/Azores",
                        untils: "-u9rbs0|2bufw0|6zxg0|66580|bq800|73k00|bodc0|71pc0|bq800|73k00|bq800|71pc0|bq800|1b2g00|9b6o0|saio0|8n400|9q000|902o0|a2yo0|902o0|a2yo0|8n400|st1c0|8n400|9d1c0|9d1c0|sg2o0|9d1c0|902o0|9q000|a2yo0|8n400|9d1c0|9d1c0|902o0|9q000|a2yo0|b5uo0|51hc0|bitc0|9d1c0|9ew00|88ao0|25p80|5reo0|3lpg0|779c0|1sqk0|6uao0|38qs0|6uao0|25p80|6hc00|38qs0|6uao0|25p80|6hc00|38qs0|8a5c0|9d1c0|9d9o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|s3400|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|5qbjo0|9d1c0|9q000|9d1c0|9d1c0|9d440|9cyk0|9d440|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9cyk0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9cyk0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "114.5333|120|60|0",
                        offsetIndices: "01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121232323232323232323232323232323233323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232"
                    }, {
                        id: "Atlantic/Bermuda",
                        untils: "-kvj2fu|n4pr3u|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "259.3|240|180",
                        offsetIndices: "0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Atlantic/Canary",
                        untils: "-oytbtc|ctvupc|hhq7s0|905g0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "61.6|60|0|-60",
                        offsetIndices: "01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232"
                    }, {
                        id: "Atlantic/Cape_Verde",
                        untils: "-u9rbs0|g06lc0|1mn180|fpqwc0|Infinity",
                        offsets: "94.0667|120|60",
                        offsetIndices: "01212"
                    }, {
                        id: "Atlantic/Faeroe",
                        untils: "-wcehew|127keuw|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "27.0667|0|-60",
                        offsetIndices: "01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Atlantic/Faroe",
                        untils: "-wcehew|127keuw|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "27.0667|0|-60",
                        offsetIndices: "01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Atlantic/Jan_Mayen",
                        untils: "-rzayo0|6qfs0|cgcqo0|15tsc0|7k800|9q000|9d1c0|9d1c0|9d1c0|9d1c0|70q5c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|b5uo0|7k800|7law00|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-60|-120",
                        offsetIndices: "010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Atlantic/Madeira",
                        untils: "-u9rek0|2bufw0|6zxg0|66580|bq800|73k00|bodc0|71pc0|bq800|73k00|bq800|71pc0|bq800|1b2g00|9b6o0|saio0|8n400|9q000|902o0|a2yo0|902o0|a2yo0|8n400|st1c0|8n400|9d1c0|9d1c0|sg2o0|9d1c0|902o0|9q000|a2yo0|8n400|9d1c0|9d1c0|902o0|9q000|a2yo0|b5uo0|51hc0|bitc0|9d1c0|9ew00|88ao0|25p80|5reo0|3lpg0|779c0|1sqk0|6uao0|38qs0|6uao0|25p80|6hc00|38qs0|6uao0|25p80|6hc00|38qs0|8a5c0|9d1c0|9d9o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|s3400|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|5qbjo0|9d1c0|9q000|9d1c0|9d1c0|9d440|9cyk0|9d440|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9cyk0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "67.6|60|0|-60",
                        offsetIndices: "01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232"
                    }, {
                        id: "Atlantic/Reykjavik",
                        untils: "-wcwx9c|4rpd9c|ci2s0|69uk0|du840|4xp80|du840|p7bw0|4w040|9bdzw0|9d6w0|64g40|cyl80|64dc0|clpc0|6hc00|bvs00|6uao0|bvs00|6uao0|bvs00|6uao0|c8qo0|6hc00|c8qo0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|7x6o0|afxc0|8a5c0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|8a5c0|Infinity",
                        offsets: "88|60|0",
                        offsetIndices: "012121212121212121212121212121212121212121212121212121212121212121212"
                    }, {
                        id: "Atlantic/South_Georgia",
                        untils: "Infinity",
                        offsets: "120",
                        offsetIndices: "0"
                    }, {
                        id: "Atlantic/St_Helena",
                        untils: "-u9rgl4|Infinity",
                        offsets: "16.1333|0",
                        offsetIndices: "01"
                    }, {
                        id: "Atlantic/Stanley",
                        untils: "-u63pac|dbvxqc|8zzw0|9q2s0|8zzw0|a31g0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|4xp80|l1pus0|7k580|b5rw0|77c40|biqk0|id6s0|7kas0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7kas0|biqk0|77c40|biqk0|7kas0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7kas0|biqk0|7kas0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7kas0|b5xg0|77c40|bvp80|6udg0|bvp80|77c40|biqk0|77c40|biqk0|77c40|biqk0|77c40|biqk0|77c40|bvp80|77c40|biqk0|77c40|biqk0|77c40|Infinity",
                        offsets: "231.4|240|180|120",
                        offsetIndices: "012121212121212323212121212121212121212121212121212121212121212121212"
                    }, {
                        id: "Australia/ACT",
                        untils: "-rnsx2c|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|8a5c0|asw00|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|779c0|b5uo0|7k800|bitc0|7k800|bitc0|779c0|bitc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|7x6o0|asw00|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|8a5c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity",
                        offsets: "-600|-660",
                        offsetIndices: "0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101"
                    }, {
                        id: "Australia/Adelaide",
                        untils: "-rnsvoc|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|779c0|b5uo0|7k800|bitc0|7k800|bitc0|779c0|bitc0|779c0|bitc0|6hc00|c8qo0|7k800|b5uo0|6uao0|c8qo0|779c0|bitc0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|8a5c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity",
                        offsets: "-570|-630",
                        offsetIndices: "0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101"
                    }, {
                        id: "Australia/Brisbane",
                        untils: "-rnsx2c|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|97zuo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|Infinity",
                        offsets: "-600|-660",
                        offsetIndices: "01010101010101010"
                    }, {
                        id: "Australia/Broken_Hill",
                        untils: "-rnsvoc|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|8a5c0|asw00|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|779c0|b5uo0|7k800|bitc0|7k800|bitc0|779c0|bitc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|8a5c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity",
                        offsets: "-570|-630",
                        offsetIndices: "0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101"
                    }, {
                        id: "Australia/Canberra",
                        untils: "-rnsx2c|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|8a5c0|asw00|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|779c0|b5uo0|7k800|bitc0|7k800|bitc0|779c0|bitc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|7x6o0|asw00|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|8a5c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity",
                        offsets: "-600|-660",
                        offsetIndices: "0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101"
                    }, {
                        id: "Australia/Currie",
                        untils: "-rsj4w0|8zzw0|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|7x6o0|b5uo0|7k800|b5uo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|bvs00|7k800|bitc0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x6o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|7x6o0|asw00|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9d1c0|902o0|a2yo0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity",
                        offsets: "-600|-660",
                        offsetIndices: "0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101"
                    }, {
                        id: "Australia/Darwin",
                        untils: "-rnsvoc|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|Infinity",
                        offsets: "-570|-630",
                        offsetIndices: "010101010"
                    }, {
                        id: "Australia/Eucla",
                        untils: "-rnstlc|49s2c|cxfms0|4h180|9d440|9cyk0|ghf1g0|6hc00|4ir9c0|6hc00|40r400|5eg00|7p9hc0|5reo0|b5uo0|7x6o0|asw00|7x6o0|Infinity",
                        offsets: "-525|-585",
                        offsetIndices: "0101010101010101010"
                    }, {
                        id: "Australia/Hobart",
                        untils: "-rsj4w0|8zzw0|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|c9tms0|9d1c0|asw00|6uao0|bvs00|6uao0|bvs00|779c0|bvs00|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|7x6o0|b5uo0|7k800|b5uo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|bvs00|7k800|bitc0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x6o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|7x6o0|asw00|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9d1c0|902o0|a2yo0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity",
                        offsets: "-600|-660",
                        offsetIndices: "010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101"
                    }, {
                        id: "Australia/LHI",
                        untils: "5tp880|c8uu0|6u7w0|c8tg0|6h980|c8tg0|6h980|c8tg0|6h980|c8tg0|777y0|b5w20|7k6m0|biuq0|7k6m0|biuq0|777y0|biuq0|6ham0|c8s20|6ham0|c8s20|6ham0|c8s20|6u9a0|c8s20|6ham0|c8s20|6ham0|c8s20|7x5a0|asxe0|7x5a0|asxe0|7x5a0|asxe0|7x5a0|b5w20|7k6m0|7x820|asum0|b5w20|7x5a0|asxe0|7x5a0|asxe0|7x5a0|b5w20|7k6m0|b5w20|7x5a0|asxe0|7k6m0|b5w20|8a3y0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9q1e0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9q1e0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9pym0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9q1e0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9q1e0|9czy0|9d2q0|9czy0|9d2q0|Infinity",
                        offsets: "-600|-630|-690|-660",
                        offsetIndices: "0121212121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313"
                    }, {
                        id: "Australia/Lindeman",
                        untils: "-rnsx2c|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|97zuo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|Infinity",
                        offsets: "-600|-660",
                        offsetIndices: "010101010101010101010"
                    }, {
                        id: "Australia/Lord_Howe",
                        untils: "5tp880|c8uu0|6u7w0|c8tg0|6h980|c8tg0|6h980|c8tg0|6h980|c8tg0|777y0|b5w20|7k6m0|biuq0|7k6m0|biuq0|777y0|biuq0|6ham0|c8s20|6ham0|c8s20|6ham0|c8s20|6u9a0|c8s20|6ham0|c8s20|6ham0|c8s20|7x5a0|asxe0|7x5a0|asxe0|7x5a0|asxe0|7x5a0|b5w20|7k6m0|7x820|asum0|b5w20|7x5a0|asxe0|7x5a0|asxe0|7x5a0|b5w20|7k6m0|b5w20|7x5a0|asxe0|7k6m0|b5w20|8a3y0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9q1e0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9q1e0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9pym0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9q1e0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9q1e0|9czy0|9d2q0|9czy0|9d2q0|Infinity",
                        offsets: "-600|-630|-690|-660",
                        offsetIndices: "0121212121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313"
                    }, {
                        id: "Australia/Melbourne",
                        untils: "-rnsx2c|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|779c0|b5uo0|7k800|b5uo0|7x6o0|bitc0|779c0|bitc0|779c0|bitc0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|7x6o0|asw00|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|8a5c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity",
                        offsets: "-600|-660",
                        offsetIndices: "0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101"
                    }, {
                        id: "Australia/North",
                        untils: "-rnsvoc|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|Infinity",
                        offsets: "-570|-630",
                        offsetIndices: "010101010"
                    }, {
                        id: "Australia/NSW",
                        untils: "-rnsx2c|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|8a5c0|asw00|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|779c0|b5uo0|7k800|bitc0|7k800|bitc0|779c0|bitc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|7x6o0|asw00|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|8a5c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity",
                        offsets: "-600|-660",
                        offsetIndices: "0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101"
                    }, {
                        id: "Australia/Perth",
                        untils: "-rnsric|49s2c|cxfms0|4h180|9d440|9cyk0|ghf1g0|6hc00|4ir9c0|6hc00|40r400|5eg00|7p9hc0|5reo0|b5uo0|7x6o0|asw00|7x6o0|Infinity",
                        offsets: "-480|-540",
                        offsetIndices: "0101010101010101010"
                    }, {
                        id: "Australia/Queensland",
                        untils: "-rnsx2c|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|97zuo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|Infinity",
                        offsets: "-600|-660",
                        offsetIndices: "01010101010101010"
                    }, {
                        id: "Australia/South",
                        untils: "-rnsvoc|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|779c0|b5uo0|7k800|bitc0|7k800|bitc0|779c0|bitc0|779c0|bitc0|6hc00|c8qo0|7k800|b5uo0|6uao0|c8qo0|779c0|bitc0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|8a5c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity",
                        offsets: "-570|-630",
                        offsetIndices: "0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101"
                    }, {
                        id: "Australia/Sydney",
                        untils: "-rnsx2c|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|8a5c0|asw00|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|779c0|b5uo0|7k800|bitc0|7k800|bitc0|779c0|bitc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|7x6o0|asw00|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|8a5c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity",
                        offsets: "-600|-660",
                        offsetIndices: "0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101"
                    }, {
                        id: "Australia/Tasmania",
                        untils: "-rsj4w0|8zzw0|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|c9tms0|9d1c0|asw00|6uao0|bvs00|6uao0|bvs00|779c0|bvs00|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|7x6o0|b5uo0|7k800|b5uo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|bvs00|7k800|bitc0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x6o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|7x6o0|asw00|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9d1c0|902o0|a2yo0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity",
                        offsets: "-600|-660",
                        offsetIndices: "010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101"
                    }, {
                        id: "Australia/Victoria",
                        untils: "-rnsx2c|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|779c0|b5uo0|7k800|b5uo0|7x6o0|bitc0|779c0|bitc0|779c0|bitc0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|7x6o0|asw00|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|8a5c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity",
                        offsets: "-600|-660",
                        offsetIndices: "0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101"
                    }, {
                        id: "Australia/West",
                        untils: "-rnsric|49s2c|cxfms0|4h180|9d440|9cyk0|ghf1g0|6hc00|4ir9c0|6hc00|40r400|5eg00|7p9hc0|5reo0|b5uo0|7x6o0|asw00|7x6o0|Infinity",
                        offsets: "-480|-540",
                        offsetIndices: "0101010101010101010"
                    }, {
                        id: "Australia/Yancowinna",
                        untils: "-rnsvoc|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|8a5c0|asw00|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|779c0|b5uo0|7k800|bitc0|7k800|bitc0|779c0|bitc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|8a5c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity",
                        offsets: "-570|-630",
                        offsetIndices: "0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101"
                    }, {
                        id: "Brazil/Acre",
                        untils: "-t85fg0|99kak0|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|amves0|2t2t80|Infinity",
                        offsets: "271.2|300|240",
                        offsetIndices: "01212121212121212121212121212121"
                    }, {
                        id: "Brazil/DeNoronha",
                        untils: "-t85lzw|99k8rw|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|514g40|7k580|biw40|cvw0|iq5g0|6h980|Infinity",
                        offsets: "129.6667|120|60",
                        offsetIndices: "0121212121212121212121212121212121212121"
                    }, {
                        id: "Brazil/East",
                        untils: "-t85jd8|99k8x8|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5k02s0|6onw0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|cyqs0|64ak0|cls40|5rbw0|dbpg0|51ek0|dbpg0|6h980|c8tg0|6h980|c8tg0|64ak0|c8tg0|6u7w0|bxpg0|7iak0|biw40|6u7w0|biw40|7k580|biw40|6u7w0|c8tg0|6h980|dbpg0|5ed80|cls40|64ak0|dfes0|5nmk0|c8tg0|6h980|dbpg0|5rbw0|bvus0|6h980|cls40|64ak0|cls40|6h980|c8tg0|6h980|c8tg0|6u7w0|c8tg0|64ak0|cls40|64ak0|cls40|6h980|c8tg0|6h980|c8tg0|6h980|c8tg0|6h980|dbpg0|5ed80|Infinity",
                        offsets: "186.4667|180|120",
                        offsetIndices: "01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Brazil/West",
                        untils: "-t85gvw|99k97w|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|2yy2s0|6h980|Infinity",
                        offsets: "240.0667|240|180",
                        offsetIndices: "01212121212121212121212121212121"
                    }, {
                        id: "Canada/Atlantic",
                        untils: "-z94k80|777go0|9et80|st9o0|a2vw0|ssyk0|5rbw0|cv1g0|69uk0|c6ys0|6kyk0|ci2s0|67zw0|ci2s0|6w2k0|bu040|7lzw0|bu040|66580|bu040|7lzw0|bu040|64ak0|cls40|5v180|cv1g0|6j3w0|c6ys0|79180|b42s0|7lzw0|b42s0|7yyk0|bu040|64ak0|dbpg0|66580|cls40|5ed80|bu040|7lzw0|b42s0|7lzw0|cjxg0|66580|bh1g0|7lzw0|b42s0|7lzw0|6uj00|1tzdw0|2dnc0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|tw040|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|tw040|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|1cm2s0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "254.4|240|180",
                        offsetIndices: "0121212121212121212121212121212121212121212121212122121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Canada/Central",
                        untils: "-s0s7c0|7k580|tj700|a2vw0|9ok840|6u7w0|2a5hg0|1tz8c0|2dsw0|biw40|7x3w0|a31g0|7x3w0|asys0|7x3w0|asys0|7x3w0|b7s40|7tek0|autg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9cyk0|9d440|7x3w0|1cm2s0|7k580|1cm2s0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|902o0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|902o0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|8a5c0|afxc0|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|7x6o0|asw00|7x6o0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "360|300",
                        offsetIndices: "010101011010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Canada/Eastern",
                        untils: "-qzoxw0|a2vw0|7yx60|aqzy0|9q8c0|7jzo0|bw0c0|6bp80|cedg0|6h980|c8tg0|6h980|bvus0|776k0|biw40|776k0|biw40|776k0|biw40|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|xjeo0|1tzb40|2dq40|asys0|7x3w0|ast80|7x3w0|asys0|7x3w0|asys0|b5rw0|7xf00|ast80|7x9g0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "300|240",
                        offsetIndices: "01010101010101010101010101010101010101010101011101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Canada/Mountain",
                        untils: "-x1yazk|629ink|a2vw0|8n6s0|29ek0|h6lg0|9px80|905g0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|9l0g40|1tz5k0|2dvo0|tj1g0|7x3w0|ctzk40|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "453.8667|420|360",
                        offsetIndices: "0121212121212122121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Canada/Newfoundland",
                        untils: "-ris3ck|8bx80|ar440|a2vw0|9tjs0|53980|dkys0|9cyk0|9d440|9cyk0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|9cyk0|9d440|9cyk0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|9cyk0|9q2s0|8zzw0|9q2s0|8zzw0|7tmw0|1wfuk|8zzw0|a3480|7k580|b5xg0|7k580|b5xg0|7k580|biw40|776k0|biw40|7k580|b5xg0|7k580|b5xg0|1pb260|2dly0|biw40|7k580|b5xg0|7k580|b5xg0|7k580|b5xg0|7k580|biw40|7k580|ag040|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a2lo|afuk0|8a840|asqg0|7xc80|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8tec|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "210.8667|150.8667|210|150|90",
                        offsetIndices: "01010101010101010101010101010101010102323232323232323323232323232323232323232323232323232323232323232323232323232323232323232323232323232324232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232"
                    }, {
                        id: "Canada/Pacific",
                        untils: "-qzopk0|a2vw0|c5jxg0|1tz2s0|2dyg0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "480|420",
                        offsetIndices: "0101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Canada/Saskatchewan",
                        untils: "-xkq9yc|6l1hmc|a2vw0|60enw0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|1b6840|9cyk0|9d440|8zzw0|9q2s0|9cyk0|9q2s0|9cyk0|9d440|9cyk0|66gc0|1tz5k0|2dvo0|a31g0|9cyk0|a31g0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|tj1g0|9cyk0|9d440|Infinity",
                        offsets: "418.6|420|360",
                        offsetIndices: "012121212121212121212121221212121212121212121212121212"
                    }, {
                        id: "Canada/Yukon",
                        untils: "-qzoms0|a2vw0|asys0|882c0|bmiwc0|1tz000|2e180|a7n3w0|9q000|tiyo0|6qp440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|Infinity",
                        offsets: "540|480|420",
                        offsetIndices: "01010110201212121212121212121212121212121212121212121212121212121212121212121212121212121212"
                    }, {
                        id: "CET",
                        untils: "-s0e080|7ves0|a4yw0|7x6o0|asw00|7x6o0|b8qdc0|1cm000|7k800|9q000|9d1c0|9d1c0|9d1c0|8l9c0|ggp1c0|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-60|-120",
                        offsetIndices: "01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Chile/Continental",
                        untils: "-vauawq|3dlssq|157b7a|f4e0q|49hzba|aye0q|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|534ik0|351g0|229zw0|2gt80|awo40|2mg00|b73400|7k580|c8tg0|6h980|a31g0|7x3w0|asys0|7x3w0|b5xg0|7k580|ag040|8a2k0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|9cyk0|9d440|7x3w0|asys0|7x3w0|b5xg0|7k580|9q2s0|8zzw0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|a31g0|9px80|9q2s0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|asys0|8zzw0|9q2s0|ast80|5eis0|cyl80|6hes0|c8nw0|6udg0|bvp80|6udg0|vonw0|4olg0|e1h80|4olg0|e1h80|4olg0|c8nw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|Infinity",
                        offsets: "282.7667|300|240|180",
                        offsetIndices: "010202121212121212321232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323"
                    }, {
                        id: "Chile/EasterIsland",
                        untils: "-jhfaew|ivmeuw|7k580|c8tg0|6h980|a31g0|7x3w0|asys0|7x3w0|b5xg0|7k580|ag040|8a2k0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|iq2o0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|9cyk0|9d440|7x3w0|asys0|7x3w0|b5xg0|7k580|9q2s0|8zzw0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|a31g0|9px80|9q2s0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|asys0|8zzw0|9q2s0|ast80|5eis0|cyl80|6hes0|c8nw0|6udg0|bvp80|6udg0|vonw0|4olg0|e1h80|4olg0|e1h80|4olg0|c8nw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|Infinity",
                        offsets: "437.4667|420|360|300",
                        offsetIndices: "012121212121212121212121212123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323"
                    }, {
                        id: "CST6CDT",
                        untils: "-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|b9gdg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "360|300",
                        offsetIndices: "010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Cuba",
                        untils: "-n7762o|1icfyo|69uk0|62s040|4ofw0|e1ms0|51ek0|e1ms0|4ofw0|1fhs40|4ofw0|e1ms0|4ofw0|9s9k40|67zw0|cedg0|6h980|9o840|7yyk0|b5xg0|7k580|bvus0|9cyk0|9d440|9cyk0|9d440|9px80|9d440|8a2k0|ag040|8bx80|ae5g0|8drw0|acas0|9cyk0|9d440|9px80|905g0|9px80|9q2s0|7x3w0|8a840|ast80|7x9g0|ast80|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|8a2k0|ag040|8a2k0|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|905g0|a2vw0|905g0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|8n400|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|8a5c0|afxc0|8a5c0|afxc0|7x6o0|1cm000|6uao0|bvs00|779c0|bitc0|6uao0|bvs00|779c0|bvs00|779c0|c8qo0|779c0|b5uo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|Infinity",
                        offsets: "329.6|300|240",
                        offsetIndices: "012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "EET",
                        untils: "3s9ms0|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-120|-180",
                        offsetIndices: "010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Egypt",
                        untils: "-fdls80|40d80|a31g0|7x3w0|a4w40|aqyk0|80ys0|b07w0|7tk40|b07w0|8jhg0|a8fw0|60go40|7el80|awo40|7v980|awqw0|7tk40|b07w0|7tk40|ayd80|7tk40|ayd80|7tk40|ayd80|7tk40|b07w0|7tk40|ayd80|7tk40|ayd80|7ves0|awik0|7ves0|ayd80|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|awik0|7ves0|f9x80|3i040|eluk0|462s0|ayd80|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|b5rw0|7m5g0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|awik0|7ves0|awik0|7ves0|aqvs0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7k580|b5xg0|6u7w0|bvus0|6h980|c8tg0|64ak0|cyqs0|5anw0|1jms0|12t80|1w22s0|25p80|1sw40|2vmk0|Infinity",
                        offsets: "-120|-180",
                        offsetIndices: "0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Eire",
                        untils: "-rzcmlr|6uao0|9pytr|8c000|9o5c0|9ruo0|9b6o0|9ew00|9b6o0|auqo0|88ao0|9ew00|8y800|a2yo0|a2yo0|7k800|asw00|8a5c0|asw00|8n400|a2yo0|8n400|9q000|902o0|afxc0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|b5uo0|51hc0|3g8800|8a5c0|bvs00|8n400|a2yo0|7x6o0|asw00|8n400|9q000|902o0|9q000|9d1c0|9q000|902o0|8n400|9q000|902o0|a2yo0|8n400|afxc0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|902o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|5reo0|1xhuo0|779c0|bitc0|779c0|bitc0|779c0|bitc0|779c0|bitc0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x3w0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "25.35|-34.65|0|-60",
                        offsetIndices: "01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232"
                    }, {
                        id: "EST",
                        untils: "Infinity",
                        offsets: "300",
                        offsetIndices: "0"
                    }, {
                        id: "EST5EDT",
                        untils: "-r0ev80|ast80|7x9g0|ast80|bmtus0|1tzb40|2dq40|b9gdg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "300|240",
                        offsetIndices: "010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Etc/GMT-0",
                        untils: "Infinity",
                        offsets: "0",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/GMT-1",
                        untils: "Infinity",
                        offsets: "-60",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/GMT-10",
                        untils: "Infinity",
                        offsets: "-600",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/GMT-11",
                        untils: "Infinity",
                        offsets: "-660",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/GMT-12",
                        untils: "Infinity",
                        offsets: "-720",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/GMT-13",
                        untils: "Infinity",
                        offsets: "-780",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/GMT-14",
                        untils: "Infinity",
                        offsets: "-840",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/GMT-2",
                        untils: "Infinity",
                        offsets: "-120",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/GMT-3",
                        untils: "Infinity",
                        offsets: "-180",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/GMT-4",
                        untils: "Infinity",
                        offsets: "-240",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/GMT-5",
                        untils: "Infinity",
                        offsets: "-300",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/GMT-6",
                        untils: "Infinity",
                        offsets: "-360",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/GMT-7",
                        untils: "Infinity",
                        offsets: "-420",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/GMT-8",
                        untils: "Infinity",
                        offsets: "-480",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/GMT-9",
                        untils: "Infinity",
                        offsets: "-540",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/GMT",
                        untils: "Infinity",
                        offsets: "0",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/GMT+0",
                        untils: "Infinity",
                        offsets: "0",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/GMT+1",
                        untils: "Infinity",
                        offsets: "60",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/GMT+10",
                        untils: "Infinity",
                        offsets: "600",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/GMT+11",
                        untils: "Infinity",
                        offsets: "660",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/GMT+12",
                        untils: "Infinity",
                        offsets: "720",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/GMT+2",
                        untils: "Infinity",
                        offsets: "120",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/GMT+3",
                        untils: "Infinity",
                        offsets: "180",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/GMT+4",
                        untils: "Infinity",
                        offsets: "240",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/GMT+5",
                        untils: "Infinity",
                        offsets: "300",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/GMT+6",
                        untils: "Infinity",
                        offsets: "360",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/GMT+7",
                        untils: "Infinity",
                        offsets: "420",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/GMT+8",
                        untils: "Infinity",
                        offsets: "480",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/GMT+9",
                        untils: "Infinity",
                        offsets: "540",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/GMT0",
                        untils: "Infinity",
                        offsets: "0",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/Greenwich",
                        untils: "Infinity",
                        offsets: "0",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/UCT",
                        untils: "Infinity",
                        offsets: "0",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/Universal",
                        untils: "Infinity",
                        offsets: "0",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/UTC",
                        untils: "Infinity",
                        offsets: "0",
                        offsetIndices: "0"
                    }, {
                        id: "Etc/Zulu",
                        untils: "Infinity",
                        offsets: "0",
                        offsetIndices: "0"
                    }, {
                        id: "Europe/Amsterdam",
                        untils: "-s0dvkk|7v980|a51o0|7x6o0|a2yo0|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9b6o0|a2yo0|c51c0|6l1c0|902o0|9q000|ci000|682o0|bgyo0|79400|bitc0|779c0|bmio0|7gio0|bbeo0|7eo00|bd9c0|7ctc0|bf400|7ayo0|bvs00|6uao0|bko00|7idc0|b9k00|7gio0|bbeo0|7eo00|bf400|7ayo0|btxc0|21uc0|4uaz8|bitc0|779c0|bko00|7idc0|bd3s0|1aarpc|7k800|9q000|9d1c0|9d1c0|9d1c0|8l9c0|ggp1c0|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-19.5333|-79.5333|-80|-20|-120|-60",
                        offsetIndices: "010101010101010101010101010101010101010101012323234545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545"
                    }, {
                        id: "Europe/Andorra",
                        untils: "-c4xmo0|k3ctg0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "0|-60|-120",
                        offsetIndices: "012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Europe/Astrakhan",
                        untils: "-nu2zkc|37bv8c|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|iq5g0|9d1c0|9q000|9d1c0|s3400|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|qnc40|Infinity",
                        offsets: "-192.2|-180|-240|-300",
                        offsetIndices: "012323232323232323212121212121212121212121212121212121212121212"
                    }, {
                        id: "Europe/Athens",
                        untils: "-rvv0cg|8bjasg|2vmk0|4hiw40|16ik0|scog0|7lx40|9o2k0|9eys0|4atzw0|6djw0|bplus0|bq800|71uw0|9d1c0|902o0|91xc0|9o5c0|905g0|9qgo0|9akg0|9iik0|99980|9dcg0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-94.8667|-120|-180|-60",
                        offsetIndices: "012121313121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Europe/Belfast",
                        untils: "-rzcns0|6uao0|9q000|8c000|9o5c0|9ruo0|9b6o0|9ew00|9b6o0|auqo0|88ao0|9ew00|8y800|a2yo0|a2yo0|7k800|asw00|8a5c0|asw00|8n400|a2yo0|8n400|9q000|902o0|afxc0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|b5uo0|51hc0|mbmk0|51hc0|c8qo0|6hc00|c8qo0|6uao0|bvs00|8n400|a4tc0|5clc0|4bms0|9q000|902o0|8a5c0|1frw0|64dc0|4bms0|6uao0|bvs00|7x6o0|asw00|8n400|9q000|902o0|9q000|9d1c0|9q000|902o0|8n400|9q000|902o0|a2yo0|8n400|afxc0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|902o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|5reo0|1xhuo0|779c0|bitc0|779c0|bitc0|779c0|bitc0|779c0|bitc0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x3w0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "0|-60|-120",
                        offsetIndices: "0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Europe/Belgrade",
                        untils: "-ezayw0|swz00|7k800|9q000|9d1c0|9d1c0|b7pc0|6qlc0|jl1hc0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-60|-120",
                        offsetIndices: "01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Europe/Berlin",
                        untils: "-s0e080|7ves0|a4yw0|7x6o0|asw00|7x6o0|b8qdc0|1cm000|7k800|9q000|9d1c0|9d1c0|9d1c0|2o7w0|6bs00|2txg0|7k800|91xc0|9b9g0|1sqk0|2inw0|51k40|a2yo0|8n400|9q000|902o0|fx91c0|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-60|-120|-180",
                        offsetIndices: "01010101010101210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Europe/Bratislava",
                        untils: "-s0e080|7ves0|a4yw0|7x6o0|asw00|7x6o0|b8qdc0|1cm000|7k800|9q000|9d1c0|9d1c0|9d1c0|9d1c0|b5uo0|7vc00|2vs40|4bk00|2vmk0|8n400|a2yo0|8n400|9o5c0|91xc0|fe6000|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-60|-120|0",
                        offsetIndices: "01010101010101010201010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Europe/Brussels",
                        untils: "-ss5uo0|rrx80|7vc00|a4yw0|7x6o0|asw00|7x6o0|2wh40|5omo0|b5uo0|6uao0|cyo00|7ayo0|bko00|7rmo0|a2yo0|a2yo0|8n400|902o0|9q000|9d1c0|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|90b00|a2yo0|8n400|9q000|902o0|a2yo0|8n400|9d1c0|9d1c0|902o0|a2yo0|9d1c0|9d1c0|902o0|9q000|a2yo0|8n400|9d1c0|9d1c0|902o0|9q000|a2yo0|b5uo0|51hc0|4deo0|1a36k0|7k800|9q000|9d1c0|8l9c0|a4tc0|8l9c0|clpc0|79400|fwu800|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "0|-60|-120",
                        offsetIndices: "0121212101010101010101010101010101010101010101010101212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Europe/Bucharest",
                        untils: "-k29zi0|fj8m0|6w5c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|kp0dc0|6h980|9q000|905g0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9cvs0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9cyk0|9d440|9cyk0|9q2s0|ast80|7xhs0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-104.4|-120|-180",
                        offsetIndices: "0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Europe/Budapest",
                        untils: "-s0e080|7ves0|a4yw0|7x6o0|a31g0|8n180|autg0|bgvw0|b5jeg0|th9k0|7k800|9q000|9d1c0|9d1c0|awd00|9ew00|7q0c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9q000|902o0|a4tc0|9q000|1va2g0|6u7w0|bxpg0|6u7w0|cjxg0|64ak0|cluw0|64g40|br3ek0|905g0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-60|-120",
                        offsetIndices: "0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Europe/Busingen",
                        untils: "-eyh6o0|7x6o0|asw00|7x6o0|k2zus0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-60|-120",
                        offsetIndices: "01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Europe/Chisinau",
                        untils: "-r2p1bo|70f1to|fj8m0|6w5c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|geqo0|ha580|oc8g0|7k800|9q000|9d1c0|7cl00|j3pbw0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|25p80|7kdk0|9d1c0|9d1c0|9cvs0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|ast80|7xf00|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-115|-104.4|-120|-180|-60|-240",
                        offsetIndices: "012323232323232323232424235353535353535353535323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232"
                    }, {
                        id: "Europe/Copenhagen",
                        untils: "-rzo2w0|75bw0|cbs2w0|1aco80|7k800|9q000|9d1c0|9d1c0|9d1c0|6y000|dbmo0|6bs00|clpc0|51hc0|e1k00|4oio0|giutc0|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-60|-120",
                        offsetIndices: "0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Europe/Dublin",
                        untils: "-rzcmlr|6uao0|9pytr|8c000|9o5c0|9ruo0|9b6o0|9ew00|9b6o0|auqo0|88ao0|9ew00|8y800|a2yo0|a2yo0|7k800|asw00|8a5c0|asw00|8n400|a2yo0|8n400|9q000|902o0|afxc0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|b5uo0|51hc0|3g8800|8a5c0|bvs00|8n400|a2yo0|7x6o0|asw00|8n400|9q000|902o0|9q000|9d1c0|9q000|902o0|8n400|9q000|902o0|a2yo0|8n400|afxc0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|902o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|5reo0|1xhuo0|779c0|bitc0|779c0|bitc0|779c0|bitc0|779c0|bitc0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x3w0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "25.35|-34.65|0|-60",
                        offsetIndices: "01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232"
                    }, {
                        id: "Europe/Gibraltar",
                        untils: "-rzcns0|6uao0|9q000|8c000|9o5c0|9ruo0|9b6o0|9ew00|9b6o0|auqo0|88ao0|9ew00|8y800|a2yo0|a2yo0|7k800|asw00|8a5c0|asw00|8n400|a2yo0|8n400|9q000|902o0|afxc0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|b5uo0|51hc0|mbmk0|51hc0|c8qo0|6hc00|c8qo0|6uao0|bvs00|8n400|a4tc0|5clc0|4bms0|9q000|902o0|8a5c0|1frw0|64dc0|4bms0|6uao0|bvs00|7x6o0|asw00|8n400|9q000|902o0|9q000|9d1c0|9q000|902o0|8n400|9q000|902o0|a2yo0|8n400|afxc0|8n400|9q000|d0tp80|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "0|-60|-120",
                        offsetIndices: "010101010101010101010101010101010101010101010101012121212121010121010101010101010101012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Europe/Guernsey",
                        untils: "-rzcns0|6uao0|9q000|8c000|9o5c0|9ruo0|9b6o0|9ew00|9b6o0|auqo0|88ao0|9ew00|8y800|a2yo0|a2yo0|7k800|asw00|8a5c0|asw00|8n400|a2yo0|8n400|9q000|902o0|afxc0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|b5uo0|51hc0|mbmk0|51hc0|c8qo0|6hc00|c8qo0|6uao0|bvs00|8n400|a4tc0|5clc0|4bms0|9q000|902o0|8a5c0|1frw0|64dc0|4bms0|6uao0|bvs00|7x6o0|asw00|8n400|9q000|902o0|9q000|9d1c0|9q000|902o0|8n400|9q000|902o0|a2yo0|8n400|afxc0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|902o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|5reo0|1xhuo0|779c0|bitc0|779c0|bitc0|779c0|bitc0|779c0|bitc0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x3w0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "0|-60|-120",
                        offsetIndices: "0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Europe/Helsinki",
                        untils: "-peghyd|ax3tqd|9gqo0|k31s80|9d1c0|9d1c0|9d1c0|9d440|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-99.8167|-120|-180",
                        offsetIndices: "0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Europe/Isle_of_Man",
                        untils: "-rzcns0|6uao0|9q000|8c000|9o5c0|9ruo0|9b6o0|9ew00|9b6o0|auqo0|88ao0|9ew00|8y800|a2yo0|a2yo0|7k800|asw00|8a5c0|asw00|8n400|a2yo0|8n400|9q000|902o0|afxc0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|b5uo0|51hc0|mbmk0|51hc0|c8qo0|6hc00|c8qo0|6uao0|bvs00|8n400|a4tc0|5clc0|4bms0|9q000|902o0|8a5c0|1frw0|64dc0|4bms0|6uao0|bvs00|7x6o0|asw00|8n400|9q000|902o0|9q000|9d1c0|9q000|902o0|8n400|9q000|902o0|a2yo0|8n400|afxc0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|902o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|5reo0|1xhuo0|779c0|bitc0|779c0|bitc0|779c0|bitc0|779c0|bitc0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x3w0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "0|-60|-120",
                        offsetIndices: "0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Europe/Istanbul",
                        untils: "-ux9xew|2wvx6w|7v980|1tjc40|aunw0|88dg0|9et80|8yas0|a2vw0|tzpg0|79180|awo40|7v980|7p4040|4zjw0|2vs40|f4d80|9vms0|1u5ek0|c5440|69uk0|acas0|8n180|a31g0|8n180|9q2s0|8zzw0|a31g0|8zzw0|a31g0|8n180|5md9g0|o9zw0|a6qs0|75bw0|4iwyw0|7x6o0|7kas0|b5rw0|75hg0|bkl80|77c40|biqk0|7x9g0|a2vw0|8n6s0|4iqc0|2nkw80|38l80|kdes0|8qtc0|8a5c0|9ew00|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|902o0|9q000|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7kdk0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7m2o0|b4000|7k800|b5uo0|7x6o0|asw00|7z1c0|ar1c0|7x6o0|bitc0|779c0|8fe80|Infinity",
                        offsets: "-116.9333|-120|-180|-240",
                        offsetIndices: "0121212121212121212121212121212121212121212121223212121212121212121212121212121212121212121212121212121212121212122"
                    }, {
                        id: "Europe/Jersey",
                        untils: "-rzcns0|6uao0|9q000|8c000|9o5c0|9ruo0|9b6o0|9ew00|9b6o0|auqo0|88ao0|9ew00|8y800|a2yo0|a2yo0|7k800|asw00|8a5c0|asw00|8n400|a2yo0|8n400|9q000|902o0|afxc0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|b5uo0|51hc0|mbmk0|51hc0|c8qo0|6hc00|c8qo0|6uao0|bvs00|8n400|a4tc0|5clc0|4bms0|9q000|902o0|8a5c0|1frw0|64dc0|4bms0|6uao0|bvs00|7x6o0|asw00|8n400|9q000|902o0|9q000|9d1c0|9q000|902o0|8n400|9q000|902o0|a2yo0|8n400|afxc0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|902o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|5reo0|1xhuo0|779c0|bitc0|779c0|bitc0|779c0|bitc0|779c0|bitc0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x3w0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "0|-60|-120",
                        offsetIndices: "0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Europe/Kaliningrad",
                        untils: "-s0e080|7ves0|a4yw0|7x6o0|asw00|7x6o0|b8qdc0|1cm000|7k800|9q000|9d1c0|9d1c0|9d1c0|el00|z6o0|9kd80|82tg0|i9avw0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity",
                        offsets: "-60|-120|-180|-240",
                        offsetIndices: "01010101010101121232323232323232322121212121212121212121212121212121212121212121"
                    }, {
                        id: "Europe/Kiev",
                        untils: "-nu11ng|37a03g|5vd6k0|kzv40|7k800|9q000|1oyg0|jipzs0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|51ek0|neqw0|9cvs0|9cyk0|9d440|9cyk0|9d440|9cyk0|9dcg0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-122.0667|-120|-180|-60|-240",
                        offsetIndices: "0121313242424242424242424242121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Europe/Kirov",
                        untils: "-qcx400|5q5zo0|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|iq5g0|9d1c0|9q000|9d1c0|s3400|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity",
                        offsets: "-198.8|-180|-240|-300",
                        offsetIndices: "01232323232323232321212121212121212121212121212121212121212121"
                    }, {
                        id: "Europe/Lisbon",
                        untils: "-u9rhc0|2bufw0|6zxg0|66580|bq800|73k00|bodc0|71pc0|bq800|73k00|bq800|71pc0|bq800|1b2g00|9b6o0|saio0|8n400|9q000|902o0|a2yo0|902o0|a2yo0|8n400|st1c0|8n400|9d1c0|9d1c0|sg2o0|9d1c0|902o0|9q000|a2yo0|8n400|9d1c0|9d1c0|902o0|9q000|a2yo0|b5uo0|51hc0|bitc0|9d1c0|9ew00|88ao0|25p80|5reo0|3lpg0|779c0|1sqk0|6uao0|38qs0|6uao0|25p80|6hc00|38qs0|6uao0|25p80|6hc00|38qs0|8a5c0|9d1c0|9d9o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|s3400|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|5gyl40|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d440|9cyk0|9d440|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9cyk0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "36.75|0|-60|-120",
                        offsetIndices: "012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121212121212121212121212121212121212122323232212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Europe/Ljubljana",
                        untils: "-ezayw0|swz00|7k800|9q000|9d1c0|9d1c0|b7pc0|6qlc0|jl1hc0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-60|-120",
                        offsetIndices: "01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Europe/London",
                        untils: "-rzcns0|6uao0|9q000|8c000|9o5c0|9ruo0|9b6o0|9ew00|9b6o0|auqo0|88ao0|9ew00|8y800|a2yo0|a2yo0|7k800|asw00|8a5c0|asw00|8n400|a2yo0|8n400|9q000|902o0|afxc0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|b5uo0|51hc0|mbmk0|51hc0|c8qo0|6hc00|c8qo0|6uao0|bvs00|8n400|a4tc0|5clc0|4bms0|9q000|902o0|8a5c0|1frw0|64dc0|4bms0|6uao0|bvs00|7x6o0|asw00|8n400|9q000|902o0|9q000|9d1c0|9q000|902o0|8n400|9q000|902o0|a2yo0|8n400|afxc0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|902o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|5reo0|1xhuo0|779c0|bitc0|779c0|bitc0|779c0|bitc0|779c0|bitc0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x3w0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "0|-60|-120",
                        offsetIndices: "0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Europe/Luxembourg",
                        untils: "-y89550|68l290|75hg0|ast80|796s0|at1k0|7x6o0|3lh40|4zmo0|b6300|6u2c0|cytk0|7at40|bktk0|7rh40|a31g0|a2vw0|8n9k0|8zx40|9q2s0|9et80|9b9g0|a2vw0|8n6s0|9px80|905g0|a2vw0|905g0|a2vw0|8ncc0|9q000|902o0|a2yo0|8n400|9d1c0|9d1c0|902o0|a2yo0|9d1c0|9d1c0|902o0|9q000|a2yo0|8n400|9d1c0|9d1c0|902o0|9q000|a2yo0|b5uo0|51hc0|42ao0|1aeak0|7k800|9q000|9d1c0|8n400|a2yo0|8l9c0|clpc0|79400|fwu800|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-24.6|-60|-120|0",
                        offsetIndices: "0121212131313131313131313131313131313131313131313131212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Europe/Madrid",
                        untils: "-qzlus0|8yas0|9cyk0|9eys0|2d2vw0|8sqs0|ssyk0|8n6s0|9px80|905g0|a2yo0|902o0|a2vw0|8n6s0|40lh80|5k2s0|9cyk0|1frw0|7z1c0|j1c80|8a2k0|13yt80|685g0|brzw0|8n6s0|a2vw0|8n6s0|a2vw0|8n6s0|a2vw0|8n6s0|1clx80|7x9g0|cswik0|905g0|9px80|905g0|8zzw0|9d440|9px80|905g0|9q5k0|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "0|-60|-120",
                        offsetIndices: "010101010101010101210121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Europe/Malta",
                        untils: "-rymys0|64ak0|9d440|9et80|88dg0|aunw0|7ig40|b5rw0|8n6s0|9cyk0|aau2s0|18r9k0|7k800|9q000|9b6o0|8n400|a4tc0|8j940|9f1k0|afxc0|89zs0|afxc0|7kdk0|b5uo0|979rs0|6h980|cls40|64dc0|clpc0|64dc0|cyo00|64dc0|clpc0|64dc0|c8qo0|6hc00|clpc0|6hc00|9b6o0|9d1c0|ahs00|7m2o0|b45k0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|a4w40|8y580|9q2s0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-60|-120",
                        offsetIndices: "0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Europe/Mariehamn",
                        untils: "-peghyd|ax3tqd|9gqo0|k31s80|9d1c0|9d1c0|9d1c0|9d440|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-99.8167|-120|-180",
                        offsetIndices: "0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Europe/Minsk",
                        untils: "-nu113c|379zjc|5r1mk0|pbf40|7k800|9q000|9d1c0|4oac0|j6dmk0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|sg2o0|9d440|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|Infinity",
                        offsets: "-110|-120|-180|-60|-240",
                        offsetIndices: "01213131242424242424242424221212121212121212121212121212121212121212"
                    }, {
                        id: "Europe/Monaco",
                        untils: "-uozn3l|2qx1nl|5luo0|8y800|a4tc0|7vc00|auqo0|7idc0|b7pc0|6sg00|cyo00|7ayo0|bko00|7rmo0|a2yo0|bvs00|6uao0|902o0|9q000|9d1c0|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|902o0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|9d1c0|9d1c0|902o0|a2yo0|9d1c0|9d1c0|902o0|9q000|a2yo0|8n400|9d1c0|9d1c0|902o0|9q000|a2yo0|b5uo0|51po0|mdbo0|7x3w0|7x9g0|c8w80|7k800|9q000|9d1c0|9nzs0|922w0|8l9c0|fxlx80|9cyk0|9q5k0|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-9.35|0|-60|-120",
                        offsetIndices: "01212121212121212121212121212121212121212121212121232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232"
                    }, {
                        id: "Europe/Moscow",
                        untils: "-rx5dmh|ipzua|97hc0|7yyk0|5i840|d9p80|1jwk7|2cvk0|s8o00|1qvw0|8fpc0|1jms0|is040|412as0|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d440|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity",
                        offsets: "-150.2833|-151.3167|-211.3167|-271.3167|-240|-180|-300|-120",
                        offsetIndices: "012132345464575454545454545454545455754545454545454545454545454545454545454545"
                    }, {
                        id: "Europe/Nicosia",
                        untils: "-p4bq6g|rvhxyg|9cyk0|b42s0|7nuk0|8yas0|8zzw0|9q2s0|9et80|9b9g0|9cyk0|9q2s0|8zzw0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|9cyk0|9d440|9cyk0|9d440|at4c0|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-133.4667|-120|-180",
                        offsetIndices: "01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Europe/Oslo",
                        untils: "-rzayo0|6qfs0|cgcqo0|15tsc0|7k800|9q000|9d1c0|9d1c0|9d1c0|9d1c0|70q5c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|b5uo0|7k800|7law00|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-60|-120",
                        offsetIndices: "010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Europe/Paris",
                        untils: "-uozn1x|2qx1lx|5luo0|8y800|a4tc0|7vc00|auqo0|7idc0|b7pc0|6sg00|cyo00|7ayo0|bko00|7rmo0|a2yo0|bvs00|6uao0|902o0|9q000|9d1c0|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|902o0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|9d1c0|9d1c0|902o0|a2yo0|9d1c0|9d1c0|902o0|9q000|a2yo0|8n400|9d1c0|9d1c0|902o0|9q000|a2yo0|b5uo0|51po0|5p8w0|18rcc0|7k800|9q000|9d1c0|7efo0|29k40|922w0|8l9c0|fxlx80|9cyk0|9q5k0|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-9.35|0|-60|-120",
                        offsetIndices: "0121212121212121212121212121212121212121212121212123232332323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232"
                    }, {
                        id: "Europe/Podgorica",
                        untils: "-ezayw0|swz00|7k800|9q000|9d1c0|9d1c0|b7pc0|6qlc0|jl1hc0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-60|-120",
                        offsetIndices: "01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Europe/Prague",
                        untils: "-s0e080|7ves0|a4yw0|7x6o0|asw00|7x6o0|b8qdc0|1cm000|7k800|9q000|9d1c0|9d1c0|9d1c0|9d1c0|b5uo0|7vc00|2vs40|4bk00|2vmk0|8n400|a2yo0|8n400|9o5c0|91xc0|fe6000|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-60|-120|0",
                        offsetIndices: "01010101010101010201010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Europe/Riga",
                        untils: "-qznlky|7x6o0|a4tc0|2mg00|3myns0|7fhlky|gz180|p5v40|7k800|9q000|9d1c0|9d1c0|k7s0|j14ns0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d440|asw00|7x6o0|asw00|7x6o0|b5uo0|qaao0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-96.5667|-156.5667|-120|-180|-60|-240",
                        offsetIndices: "010102324242435353535353535353323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232"
                    }, {
                        id: "Europe/Rome",
                        untils: "-rymys0|64ak0|9d440|9et80|88dg0|aunw0|7ig40|b5rw0|8n6s0|9cyk0|aau2s0|18r9k0|7k800|9q000|9d1c0|8l9c0|a4tc0|8j940|9f1k0|afxc0|89zs0|afxc0|7kdk0|b5uo0|979rs0|6h980|cls40|64dc0|clpc0|64dc0|cyo00|64dc0|clpc0|64dc0|c8qo0|6hc00|clpc0|6hc00|clpc0|64dc0|c8qo0|6hc00|clpc0|64dc0|clpc0|64dc0|c8qo0|6hc00|clpc0|6hc00|c8qo0|6hc00|9q5k0|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-60|-120",
                        offsetIndices: "0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Europe/Samara",
                        untils: "-qcx400|5q5zo0|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|iq5g0|9d1c0|9q000|jt1g0|89zs0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|j3440|7k800|Infinity",
                        offsets: "-200.3333|-180|-240|-300",
                        offsetIndices: "0123232323232323232121232323232323232323232323232323232323212"
                    }, {
                        id: "Europe/San_Marino",
                        untils: "-rymys0|64ak0|9d440|9et80|88dg0|aunw0|7ig40|b5rw0|8n6s0|9cyk0|aau2s0|18r9k0|7k800|9q000|9d1c0|8l9c0|a4tc0|8j940|9f1k0|afxc0|89zs0|afxc0|7kdk0|b5uo0|979rs0|6h980|cls40|64dc0|clpc0|64dc0|cyo00|64dc0|clpc0|64dc0|c8qo0|6hc00|clpc0|6hc00|clpc0|64dc0|c8qo0|6hc00|clpc0|64dc0|clpc0|64dc0|c8qo0|6hc00|clpc0|6hc00|c8qo0|6hc00|9q5k0|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-60|-120",
                        offsetIndices: "0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Europe/Sarajevo",
                        untils: "-ezayw0|swz00|7k800|9q000|9d1c0|9d1c0|b7pc0|6qlc0|jl1hc0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-60|-120",
                        offsetIndices: "01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Europe/Saratov",
                        untils: "-qcx400|5q5zo0|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|iq5g0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|s3400|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|13m040|Infinity",
                        offsets: "-184.3|-180|-240|-300",
                        offsetIndices: "012323232323232321212121212121212121212121212121212121212121212"
                    }, {
                        id: "Europe/Simferopol",
                        untils: "-nu12ao|37a0qo|5xiyk0|iu340|7k800|9q000|9d1c0|iac0|jajmk0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|eeio0|wrjw0|9cyk0|9d440|9cyk0|9d440|1sqk0|7k580|9d440|9cyk0|9q2s0|at4c0|7x9g0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x3w0|asqg0|Infinity",
                        offsets: "-136|-120|-180|-60|-240",
                        offsetIndices: "012131312424242424242424242121212424242212121212121212121212121212121212142"
                    }, {
                        id: "Europe/Skopje",
                        untils: "-ezayw0|swz00|7k800|9q000|9d1c0|9d1c0|b7pc0|6qlc0|jl1hc0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-60|-120",
                        offsetIndices: "01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Europe/Sofia",
                        untils: "-e6dzw0|7k800|9q000|9d1c0|9d1c0|9d440|hqq240|9eys0|9o2k0|92040|9o2k0|90880|9pug0|90b00|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9cvs0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|ast80|7xhs0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-120|-60|-180",
                        offsetIndices: "01010102020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020"
                    }, {
                        id: "Europe/Stockholm",
                        untils: "-rzo2w0|75hg0|x5bew0|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-60|-120",
                        offsetIndices: "01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Europe/Tallinn",
                        untils: "-r3exx0|3re10|7x6o0|et6g0|ygov0|a1zgd0|ktx80|l94g0|7k800|9q000|9d1c0|8uac0|j27mk0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asys0|7x6o0|b5uo0|19dc00|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-99|-60|-120|-180|-240",
                        offsetIndices: "012102321212343434343434343433232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232"
                    }, {
                        id: "Europe/Tirane",
                        untils: "-t85vo8|dt2gw8|18pew0|7k800|m800|g7ot40|7rjw0|autg0|7x3w0|ayis0|7x3w0|b5xg0|7k580|b42s0|7lzw0|b42s0|7lzw0|b42s0|7x3w0|ahus0|7x3w0|b5xg0|7x3w0|a4w40|8jbw0|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-79.3333|-60|-120",
                        offsetIndices: "01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Europe/Tiraspol",
                        untils: "-r2p1bo|70f1to|fj8m0|6w5c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|geqo0|ha580|oc8g0|7k800|9q000|9d1c0|7cl00|j3pbw0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|25p80|7kdk0|9d1c0|9d1c0|9cvs0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|ast80|7xf00|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-115|-104.4|-120|-180|-60|-240",
                        offsetIndices: "012323232323232323232424235353535353535353535323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232"
                    }, {
                        id: "Europe/Ulyanovsk",
                        untils: "-qcx400|5q5zo0|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|iq5g0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|qnc40|Infinity",
                        offsets: "-193.6|-180|-240|-300|-120",
                        offsetIndices: "01232323232323232321214121212121212121212121212121212121212121212"
                    }, {
                        id: "Europe/Uzhgorod",
                        untils: "-fizzw0|1cm000|7k800|9q000|9d1c0|al900|cnms0|int140|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|eeio0|e1sc0|iprk0|9cyk0|9d440|9cyk0|9d440|9cyk0|9dcg0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-60|-120|-180|-240",
                        offsetIndices: "010101023232323232323232320121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Europe/Vaduz",
                        untils: "-eyh6o0|7x6o0|asw00|7x6o0|k2zus0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-60|-120",
                        offsetIndices: "01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Europe/Vatican",
                        untils: "-rymys0|64ak0|9d440|9et80|88dg0|aunw0|7ig40|b5rw0|8n6s0|9cyk0|aau2s0|18r9k0|7k800|9q000|9d1c0|8l9c0|a4tc0|8j940|9f1k0|afxc0|89zs0|afxc0|7kdk0|b5uo0|979rs0|6h980|cls40|64dc0|clpc0|64dc0|cyo00|64dc0|clpc0|64dc0|c8qo0|6hc00|clpc0|6hc00|clpc0|64dc0|c8qo0|6hc00|clpc0|64dc0|clpc0|64dc0|c8qo0|6hc00|clpc0|6hc00|c8qo0|6hc00|9q5k0|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-60|-120",
                        offsetIndices: "0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Europe/Vienna",
                        untils: "-s0e080|7ves0|a4yw0|7x6o0|asw00|7x6o0|t6000|8a5c0|a7a800|1cm000|7k800|9q000|9d1c0|9d1c0|9d1c0|iio0|ivmo0|91xc0|9b6o0|9d1c0|a2yo0|8n400|gfyyg0|8zzw0|9d9o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-60|-120",
                        offsetIndices: "0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Europe/Vilnius",
                        untils: "-rns980|1g224o|e75nc|4kqk0|acbs40|gpp40|pits0|7k800|9q000|9d1c0|65zo0|j4vx80|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x9g0|asw00|7x6o0|b5uo0|1s3eo0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-84|-95.6|-60|-120|-180|-240",
                        offsetIndices: "012324323234545454545454545443434343434343434332334343434343434343434343434343434343434343434343434343434343434343434343"
                    }, {
                        id: "Europe/Volgograd",
                        untils: "-q3cw84|5glrw4|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|iq5g0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|s3400|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|239c40|Infinity",
                        offsets: "-177.6667|-180|-240|-300",
                        offsetIndices: "012323232323232321212121212121212121212121212121212121212121212"
                    }, {
                        id: "Europe/Warsaw",
                        untils: "-se9yk0|dvyc0|7ves0|a4yw0|7x6o0|asw00|7x6o0|aunw0|7x6o0|1evbs0|9fcwc0|18cao0|7k800|9q000|9d1c0|9gnw0|an980|9kd80|8fs40|922w0|ar1c0|7x6o0|a2yo0|8n400|9q000|902o0|4013w0|64dc0|9d1c0|9d1c0|clpc0|6hc00|9d1c0|9d1c0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|clpc0|64dc0|6j4tc0|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-84|-60|-120|-180",
                        offsetIndices: "012121223212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Europe/Zagreb",
                        untils: "-ezayw0|swz00|7k800|9q000|9d1c0|9d1c0|b7pc0|6qlc0|jl1hc0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-60|-120",
                        offsetIndices: "01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Europe/Zaporozhye",
                        untils: "-nu12hc|37a0xc|5u1180|mc0g0|7k800|9q000|12qg0|jjc7s0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9cvs0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9dcg0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-140|-120|-180|-60|-240",
                        offsetIndices: "01213132424242424242424242422121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Europe/Zurich",
                        untils: "-eyh6o0|7x6o0|asw00|7x6o0|k2zus0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-60|-120",
                        offsetIndices: "01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "GB-Eire",
                        untils: "-rzcns0|6uao0|9q000|8c000|9o5c0|9ruo0|9b6o0|9ew00|9b6o0|auqo0|88ao0|9ew00|8y800|a2yo0|a2yo0|7k800|asw00|8a5c0|asw00|8n400|a2yo0|8n400|9q000|902o0|afxc0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|b5uo0|51hc0|mbmk0|51hc0|c8qo0|6hc00|c8qo0|6uao0|bvs00|8n400|a4tc0|5clc0|4bms0|9q000|902o0|8a5c0|1frw0|64dc0|4bms0|6uao0|bvs00|7x6o0|asw00|8n400|9q000|902o0|9q000|9d1c0|9q000|902o0|8n400|9q000|902o0|a2yo0|8n400|afxc0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|902o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|5reo0|1xhuo0|779c0|bitc0|779c0|bitc0|779c0|bitc0|779c0|bitc0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x3w0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "0|-60|-120",
                        offsetIndices: "0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "GB",
                        untils: "-rzcns0|6uao0|9q000|8c000|9o5c0|9ruo0|9b6o0|9ew00|9b6o0|auqo0|88ao0|9ew00|8y800|a2yo0|a2yo0|7k800|asw00|8a5c0|asw00|8n400|a2yo0|8n400|9q000|902o0|afxc0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|b5uo0|51hc0|mbmk0|51hc0|c8qo0|6hc00|c8qo0|6uao0|bvs00|8n400|a4tc0|5clc0|4bms0|9q000|902o0|8a5c0|1frw0|64dc0|4bms0|6uao0|bvs00|7x6o0|asw00|8n400|9q000|902o0|9q000|9d1c0|9q000|902o0|8n400|9q000|902o0|a2yo0|8n400|afxc0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|902o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|5reo0|1xhuo0|779c0|bitc0|779c0|bitc0|779c0|bitc0|779c0|bitc0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x3w0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "0|-60|-120",
                        offsetIndices: "0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "GMT-0",
                        untils: "Infinity",
                        offsets: "0",
                        offsetIndices: "0"
                    }, {
                        id: "GMT",
                        untils: "Infinity",
                        offsets: "0",
                        offsetIndices: "0"
                    }, {
                        id: "GMT+0",
                        untils: "Infinity",
                        offsets: "0",
                        offsetIndices: "0"
                    }, {
                        id: "GMT0",
                        untils: "Infinity",
                        offsets: "0",
                        offsetIndices: "0"
                    }, {
                        id: "Greenwich",
                        untils: "Infinity",
                        offsets: "0",
                        offsetIndices: "0"
                    }, {
                        id: "Hongkong",
                        untils: "-y0i0s0|j44dk0|5k000|4d4y0|2195i0|7x3w0|bj320|6uao0|bvs00|7x6o0|9d1c0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|ast80|77c40|biqk0|77c40|bvp80|6udg0|bvp80|77c40|biqk0|77c40|biqk0|77c40|biqk0|77c40|bvp80|6udg0|bvp80|6udg0|bvp80|77c40|biqk0|77c40|biqk0|8n6s0|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|3lpg0|f4d80|9d440|9cyk0|9d440|9cyk0|1c9440|8a2k0|Infinity",
                        offsets: "-456.7|-480|-540|-510",
                        offsetIndices: "0123212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "HST",
                        untils: "Infinity",
                        offsets: "600",
                        offsetIndices: "0"
                    }, {
                        id: "Iceland",
                        untils: "-wcwx9c|4rpd9c|ci2s0|69uk0|du840|4xp80|du840|p7bw0|4w040|9bdzw0|9d6w0|64g40|cyl80|64dc0|clpc0|6hc00|bvs00|6uao0|bvs00|6uao0|bvs00|6uao0|c8qo0|6hc00|c8qo0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|7x6o0|afxc0|8a5c0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|8a5c0|Infinity",
                        offsets: "88|60|0",
                        offsetIndices: "012121212121212121212121212121212121212121212121212121212121212121212"
                    }, {
                        id: "Indian/Antananarivo",
                        untils: "-lnsetg|s8mhg|57v020|afrrb0|Infinity",
                        offsets: "-147.2667|-180|-150|-165",
                        offsetIndices: "01231"
                    }, {
                        id: "Indian/Chagos",
                        untils: "-wvpc2s|1ag64us|Infinity",
                        offsets: "-289.6667|-300|-360",
                        offsetIndices: "012"
                    }, {
                        id: "Indian/Christmas",
                        untils: "Infinity",
                        offsets: "-420",
                        offsetIndices: "0"
                    }, {
                        id: "Indian/Cocos",
                        untils: "Infinity",
                        offsets: "-390",
                        offsetIndices: "0"
                    }, {
                        id: "Indian/Comoro",
                        untils: "-lnsetg|s8mhg|57v020|afrrb0|Infinity",
                        offsets: "-147.2667|-180|-150|-165",
                        offsetIndices: "01231"
                    }, {
                        id: "Indian/Kerguelen",
                        untils: "-afrs00|Infinity",
                        offsets: "0|-300",
                        offsetIndices: "01"
                    }, {
                        id: "Indian/Mahe",
                        untils: "-x6pjlo|Infinity",
                        offsets: "-221.8|-240",
                        offsetIndices: "01"
                    }, {
                        id: "Indian/Maldives",
                        untils: "-57x6y0|Infinity",
                        offsets: "-294|-300",
                        offsetIndices: "01"
                    }, {
                        id: "Indian/Mauritius",
                        untils: "-wvp9bc|13jnu7c|8bx80|dd0wc0|7x3w0|Infinity",
                        offsets: "-230|-240|-300",
                        offsetIndices: "012121"
                    }, {
                        id: "Indian/Mayotte",
                        untils: "-lnsetg|s8mhg|57v020|afrrb0|Infinity",
                        offsets: "-147.2667|-180|-150|-165",
                        offsetIndices: "01231"
                    }, {
                        id: "Indian/Reunion",
                        untils: "-uks29s|Infinity",
                        offsets: "-221.8667|-240",
                        offsetIndices: "01"
                    }, {
                        id: "Iran",
                        untils: "-s6m6uw|fnolc0|gm3h4w|777y0|b07w0|3pes0|42c20|9cyk0|9gtg0|9kd80|5ja5g0|7avw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|1av440|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|Infinity",
                        offsets: "-205.7333|-210|-240|-300|-270",
                        offsetIndices: "00123214141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141"
                    }, {
                        id: "Israel",
                        untils: "-r50eig|bp54yg|19f3w0|7rv00|b02c0|7tk40|b07w0|8jhg0|a8lg0|8jhg0|a8ac0|t9s40|56vs0|35700|9b3w0|9gtg0|8jbw0|7tmw0|a6ig0|biyw0|8a5c0|9d1c0|902o0|7x6o0|e1eg0|4ofw0|dzxo0|4q500|doo40|64iw0|auqo0|7i500|8rfms0|51ek0|9q2s0|6u7w0|2khpg0|25s00|1weyo0|5reo0|bxmo0|7x3w0|cls40|5rbw0|bbhg0|7rjw0|asys0|7k580|c8tg0|6h980|ag040|7x3w0|asys0|8a2k0|asys0|8a2k0|ap9g0|80t80|ap9g0|7nuk0|b2840|80t80|9zc40|9iik0|9kis0|93p80|9mdg0|8qqk0|apf00|7x3w0|biw40|8zx40|9io40|8n180|9kis0|9vh80|8ulg0|9px80|9mdg0|8n180|9tuw0|9tmk0|8wg40|9gnw0|99es0|8qqk0|9zc40|9tmk0|8wg40|9gnw0|99es0|8qqk0|acas0|9gnw0|99es0|93p80|9mdg0|awik0|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|Infinity",
                        offsets: "-140.6667|-120|-180|-240",
                        offsetIndices: "012121212121321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Jamaica",
                        untils: "-u85og2|wbl182|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|Infinity",
                        offsets: "307.1667|300|240",
                        offsetIndices: "0121212121212121212121"
                    }, {
                        id: "Japan",
                        untils: "-bb4900|6uao0|afxc0|8a5c0|c8qo0|6hc00|c8qo0|6hc00|Infinity",
                        offsets: "-540|-600",
                        offsetIndices: "010101010"
                    }, {
                        id: "Kwajalein",
                        untils: "-h817w0|27sas0|1hjus0|ddxug0|cgv6k0|Infinity",
                        offsets: "-660|-600|-540|720|-720",
                        offsetIndices: "012034"
                    }, {
                        id: "Libya",
                        untils: "-q3gfrw|gl6ajw|422c0|xado0|4bbo0|wrpg0|4s580|1kdpg0|c05bw0|4mqs0|9et80|9d440|9et80|9eys0|9et80|9mdg0|95jw0|9io40|9cyk0|99es0|9et80|9eys0|9et80|9d440|9et80|b2840|3cf3w0|9kis0|9et80|7vqyw0|75eo0|asw00|Infinity",
                        offsets: "-52.7333|-60|-120",
                        offsetIndices: "012121212121212121212121212122122"
                    }, {
                        id: "MET",
                        untils: "-s0e080|7ves0|a4yw0|7x6o0|asw00|7x6o0|b8qdc0|1cm000|7k800|9q000|9d1c0|9d1c0|9d1c0|8l9c0|ggp1c0|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-60|-120",
                        offsetIndices: "01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Mexico/BajaNorte",
                        untils: "-p1u1s0|11jrw0|1sns00|1sgdc0|71s40|9cyk0|5iidg0|1q6700|4lfk0|190g40|eluk0|2r4o80|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|84qys0|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|77c40|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "468.0667|420|480",
                        offsetIndices: "012121211212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212"
                    }, {
                        id: "Mexico/BajaSur",
                        untils: "-p1u4k0|2u7jw0|1sgdc0|8n400|7thc0|9eys0|591h80|3ie2s0|axvpg0|dpgw40|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|Infinity",
                        offsets: "425.6667|420|360|480",
                        offsetIndices: "0121212131212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Mexico/General",
                        untils: "-p1u4k0|2u7jw0|1sgdc0|8n400|7thc0|9eys0|3knek0|776k0|rf440|5t6k0|1evk40|71mk0|30p1g0|8n180|nufxo0|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|Infinity",
                        offsets: "396.6|420|360|300",
                        offsetIndices: "012121232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232"
                    }, {
                        id: "MST",
                        untils: "Infinity",
                        offsets: "420",
                        offsetIndices: "0"
                    }, {
                        id: "MST7MDT",
                        untils: "-r0epo0|ast80|7x9g0|ast80|bmtus0|1tz5k0|2dvo0|b9gdg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "420|360",
                        offsetIndices: "010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Navajo",
                        untils: "-r0epo0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|2vmk0|ataw40|1tz5k0|2dvo0|a7n9g0|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "420|360",
                        offsetIndices: "01010101011010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "NZ-CHAT",
                        untils: "-ciya10|f1tq90|5reo0|clpc0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|b5uo0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|Infinity",
                        offsets: "-735|-765|-825",
                        offsetIndices: "012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212"
                    }, {
                        id: "NZ",
                        untils: "-m01p20|64ak0|biw40|7x5a0|asxe0|7x5a0|asxe0|7x5a0|asxe0|8a3y0|afyq0|8a3y0|afyq0|afvy0|7x820|asum0|7x820|asum0|7x820|asum0|7x820|asum0|7x820|b5ta0|7k9e0|b5ta0|7x820|hsl2m0|5reo0|clpc0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|b5uo0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|Infinity",
                        offsets: "-690|-750|-720|-780",
                        offsetIndices: "01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323"
                    }, {
                        id: "Pacific/Apia",
                        untils: "-usiiv4|kcrmt4|vp3la0|9odo0|902o0|4zbk0|4qog0|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|Infinity",
                        offsets: "686.9333|690|660|600|-840|-780",
                        offsetIndices: "01232345454545454545454545454545454545454545454545454545454"
                    }, {
                        id: "Pacific/Auckland",
                        untils: "-m01p20|64ak0|biw40|7x5a0|asxe0|7x5a0|asxe0|7x5a0|asxe0|8a3y0|afyq0|8a3y0|afyq0|afvy0|7x820|asum0|7x820|asum0|7x820|asum0|7x820|asum0|7x820|b5ta0|7k9e0|b5ta0|7x820|hsl2m0|5reo0|clpc0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|b5uo0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|Infinity",
                        offsets: "-690|-750|-720|-780",
                        offsetIndices: "01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323"
                    }, {
                        id: "Pacific/Bougainville",
                        untils: "-ecsh40|1n05g0|1071c40|Infinity",
                        offsets: "-600|-540|-660",
                        offsetIndices: "0102"
                    }, {
                        id: "Pacific/Chatham",
                        untils: "-ciya10|f1tq90|5reo0|clpc0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|b5uo0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|Infinity",
                        offsets: "-735|-765|-825",
                        offsetIndices: "012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212"
                    }, {
                        id: "Pacific/Chuuk",
                        untils: "-su4zs0|29hes0|bkenw0|29fk40|Infinity",
                        offsets: "-600|-540",
                        offsetIndices: "01010"
                    }, {
                        id: "Pacific/Easter",
                        untils: "-jhfaew|ivmeuw|7k580|c8tg0|6h980|a31g0|7x3w0|asys0|7x3w0|b5xg0|7k580|ag040|8a2k0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|iq2o0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|9cyk0|9d440|7x3w0|asys0|7x3w0|b5xg0|7k580|9q2s0|8zzw0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|a31g0|9px80|9q2s0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|asys0|8zzw0|9q2s0|ast80|5eis0|cyl80|6hes0|c8nw0|6udg0|bvp80|6udg0|vonw0|4olg0|e1h80|4olg0|e1h80|4olg0|c8nw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|Infinity",
                        offsets: "437.4667|420|360|300",
                        offsetIndices: "012121212121212121212121212123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323"
                    }, {
                        id: "Pacific/Efate",
                        untils: "-u964i4|11f4ba4|9cyk0|awo40|7tek0|9q2s0|8zzw0|9q2s0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|64ak0|e1ms0|4ofw0|Infinity",
                        offsets: "-673.2667|-660|-720",
                        offsetIndices: "0121212121212121212121"
                    }, {
                        id: "Pacific/Enderbury",
                        untils: "535io0|7yiqk0|Infinity",
                        offsets: "720|660|-780",
                        offsetIndices: "012"
                    }, {
                        id: "Pacific/Fakaofo",
                        untils: "lx0jw0|Infinity",
                        offsets: "660|-780",
                        offsetIndices: "01"
                    }, {
                        id: "Pacific/Fiji",
                        untils: "-sa2x4w|17bs00w|64dc0|cyo00|5reo0|53a5c0|64dc0|asw00|6uao0|bvs00|4oio0|e1k00|4oio0|eeio0|4bh80|erk40|3ylc0|erhc0|3ylc0|f4g00|3lmo0|f4g00|3lmo0|f4g00|3lmo0|fheo0|38o00|fheo0|3lmo0|fheo0|38o00|fheo0|38o00|fheo0|38o00|fheo0|38o00|fheo0|3lmo0|f4g00|3lmo0|fheo0|38o00|fheo0|38o00|fheo0|38o00|fheo0|38o00|fheo0|3lmo0|fheo0|38o00|fheo0|38o00|fheo0|38o00|fheo0|38o00|fheo0|3lmo0|f4g00|3lmo0|Infinity",
                        offsets: "-715.7333|-720|-780",
                        offsetIndices: "0121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Pacific/Funafuti",
                        untils: "Infinity",
                        offsets: "-720",
                        offsetIndices: "0"
                    }, {
                        id: "Pacific/Galapagos",
                        untils: "-kcr62o|spdryo|3lsas0|3jp80|Infinity",
                        offsets: "358.4|300|360",
                        offsetIndices: "01212"
                    }, {
                        id: "Pacific/Gambier",
                        untils: "-tvndoc|Infinity",
                        offsets: "539.8|540",
                        offsetIndices: "01"
                    }, {
                        id: "Pacific/Guadalcanal",
                        untils: "-tvowac|Infinity",
                        offsets: "-639.8|-660",
                        offsetIndices: "01"
                    }, {
                        id: "Pacific/Guam",
                        untils: "-en8eg0|1dl9g0|7s1k40|txp80|3frms0|qdrpo|7kgac|3ljw0|c8tg0|6u7w0|bvus0|6u7w0|16uo40|3ljw0|16aas0|4ivxo|cls2c|6h980|c65zw0|Infinity",
                        offsets: "-600|-540|-660",
                        offsetIndices: "01020202020202020200"
                    }, {
                        id: "Pacific/Honolulu",
                        untils: "-j50la0|13l00|4jvb00|1tyvu0|2e5e0|votg0|Infinity",
                        offsets: "630|570|600",
                        offsetIndices: "0101102"
                    }, {
                        id: "Pacific/Johnston",
                        untils: "-j50la0|13l00|4jvb00|1tyvu0|2e5e0|votg0|Infinity",
                        offsets: "630|570|600",
                        offsetIndices: "0101102"
                    }, {
                        id: "Pacific/Kiritimati",
                        untils: "535eyo|7yirhc|Infinity",
                        offsets: "640|600|-840",
                        offsetIndices: "012"
                    }, {
                        id: "Pacific/Kosrae",
                        untils: "-su52k0|29hhk0|9cmd40|27sas0|29fk40|cm2540|f9l3w0|Infinity",
                        offsets: "-660|-540|-600|-720",
                        offsetIndices: "01021030"
                    }, {
                        id: "Pacific/Kwajalein",
                        untils: "-h817w0|27sas0|1hjus0|ddxug0|cgv6k0|Infinity",
                        offsets: "-660|-600|-540|720|-720",
                        offsetIndices: "012034"
                    }, {
                        id: "Pacific/Majuro",
                        untils: "-su52k0|29hhk0|9cmd40|27sas0|1h6w40|deat40|Infinity",
                        offsets: "-660|-540|-600|-720",
                        offsetIndices: "0102103"
                    }, {
                        id: "Pacific/Marquesas",
                        untils: "-tvncu0|Infinity",
                        offsets: "558|570",
                        offsetIndices: "01"
                    }, {
                        id: "Pacific/Midway",
                        untils: "-usij20|Infinity",
                        offsets: "682.8|660",
                        offsetIndices: "01"
                    }, {
                        id: "Pacific/Nauru",
                        untils: "-pjxiws|ba66ys|1kwca0|hfzda0|Infinity",
                        offsets: "-667.6667|-690|-540|-720",
                        offsetIndices: "01213"
                    }, {
                        id: "Pacific/Niue",
                        untils: "-9wyz6o|ehcj4o|Infinity",
                        offsets: "680|690|660",
                        offsetIndices: "012"
                    }, {
                        id: "Pacific/Norfolk",
                        untils: "-9x0ps0|cfj8q0|6hc00|l6nk00|239aq0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity",
                        offsets: "-672|-690|-750|-660|-720",
                        offsetIndices: "012134343434343434343434343434343434343434"
                    }, {
                        id: "Pacific/Noumea",
                        untils: "-u9645o|ye0ixo|4dbw0|ecqs0|4f6k0|99p700|4oio0|Infinity",
                        offsets: "-665.8|-660|-720",
                        offsetIndices: "01212121"
                    }, {
                        id: "Pacific/Pago_Pago",
                        untils: "-usij20|Infinity",
                        offsets: "682.8|660",
                        offsetIndices: "01"
                    }, {
                        id: "Pacific/Palau",
                        untils: "Infinity",
                        offsets: "-540",
                        offsetIndices: "0"
                    }, {
                        id: "Pacific/Pitcairn",
                        untils: "es2cy0|Infinity",
                        offsets: "510|480",
                        offsetIndices: "01"
                    }, {
                        id: "Pacific/Pohnpei",
                        untils: "-su52k0|29hhk0|9cmd40|27sas0|29fk40|Infinity",
                        offsets: "-660|-540|-600",
                        offsetIndices: "010210"
                    }, {
                        id: "Pacific/Ponape",
                        untils: "-su52k0|29hhk0|9cmd40|27sas0|29fk40|Infinity",
                        offsets: "-660|-540|-600",
                        offsetIndices: "010210"
                    }, {
                        id: "Pacific/Port_Moresby",
                        untils: "Infinity",
                        offsets: "-600",
                        offsetIndices: "0"
                    }, {
                        id: "Pacific/Rarotonga",
                        untils: "4mj960|5rbw0|c8s20|6ham0|c8s20|6ham0|c8s20|6u9a0|c8s20|6ham0|c8s20|6ham0|c8s20|6ham0|c8s20|6ham0|c8s20|6ham0|c8s20|6u9a0|c8s20|6ham0|c8s20|6ham0|c8s20|6ham0|Infinity",
                        offsets: "630|570|600",
                        offsetIndices: "012121212121212121212121212"
                    }, {
                        id: "Pacific/Saipan",
                        untils: "-en8eg0|1dl9g0|7s1k40|txp80|3frms0|qdrpo|7kgac|3ljw0|c8tg0|6u7w0|bvus0|6u7w0|16uo40|3ljw0|16aas0|4ivxo|cls2c|6h980|c65zw0|Infinity",
                        offsets: "-600|-540|-660",
                        offsetIndices: "01020202020202020200"
                    }, {
                        id: "Pacific/Samoa",
                        untils: "-usij20|Infinity",
                        offsets: "682.8|660",
                        offsetIndices: "01"
                    }, {
                        id: "Pacific/Tahiti",
                        untils: "-tvnayw|Infinity",
                        offsets: "598.2667|600",
                        offsetIndices: "01"
                    }, {
                        id: "Pacific/Tarawa",
                        untils: "Infinity",
                        offsets: "-720",
                        offsetIndices: "0"
                    }, {
                        id: "Pacific/Tongatapu",
                        untils: "-f4vrlc|uo2edc|8fpc0|bvs00|4bh80|eelg0|4bh80|7pmis0|3lmo0|Infinity",
                        offsets: "-740|-780|-840",
                        offsetIndices: "0121212121"
                    }, {
                        id: "Pacific/Truk",
                        untils: "-su4zs0|29hes0|bkenw0|29fk40|Infinity",
                        offsets: "-600|-540",
                        offsetIndices: "01010"
                    }, {
                        id: "Pacific/Wake",
                        untils: "Infinity",
                        offsets: "-720",
                        offsetIndices: "0"
                    }, {
                        id: "Pacific/Wallis",
                        untils: "Infinity",
                        offsets: "-720",
                        offsetIndices: "0"
                    }, {
                        id: "Pacific/Yap",
                        untils: "-su4zs0|29hes0|bkenw0|29fk40|Infinity",
                        offsets: "-600|-540",
                        offsetIndices: "01010"
                    }, {
                        id: "Poland",
                        untils: "-se9yk0|dvyc0|7ves0|a4yw0|7x6o0|asw00|7x6o0|aunw0|7x6o0|1evbs0|9fcwc0|18cao0|7k800|9q000|9d1c0|9gnw0|an980|9kd80|8fs40|922w0|ar1c0|7x6o0|a2yo0|8n400|9q000|902o0|4013w0|64dc0|9d1c0|9d1c0|clpc0|6hc00|9d1c0|9d1c0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|clpc0|64dc0|6j4tc0|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "-84|-60|-120|-180",
                        offsetIndices: "012121223212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "Portugal",
                        untils: "-u9rhc0|2bufw0|6zxg0|66580|bq800|73k00|bodc0|71pc0|bq800|73k00|bq800|71pc0|bq800|1b2g00|9b6o0|saio0|8n400|9q000|902o0|a2yo0|902o0|a2yo0|8n400|st1c0|8n400|9d1c0|9d1c0|sg2o0|9d1c0|902o0|9q000|a2yo0|8n400|9d1c0|9d1c0|902o0|9q000|a2yo0|b5uo0|51hc0|bitc0|9d1c0|9ew00|88ao0|25p80|5reo0|3lpg0|779c0|1sqk0|6uao0|38qs0|6uao0|25p80|6hc00|38qs0|6uao0|25p80|6hc00|38qs0|8a5c0|9d1c0|9d9o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|s3400|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|5gyl40|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d440|9cyk0|9d440|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9cyk0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "36.75|0|-60|-120",
                        offsetIndices: "012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121212121212121212121212121212121212122323232212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "PRC",
                        untils: "-qh00w0|8sl80|asbpg0|6w2k0|7ves0|bxjw0|4mqs0|1vduk0|d4as0|75bw0|a31g0|aaak0|9d440|7v980|awo40|1dx80|j9xpo0|6u7w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|Infinity",
                        offsets: "-480|-540",
                        offsetIndices: "01010101010101010101010101010"
                    }, {
                        id: "PST8PDT",
                        untils: "-r0emw0|ast80|7x9g0|ast80|bmtus0|1tz2s0|2dyg0|b9gdg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "480|420",
                        offsetIndices: "010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "ROC",
                        untils: "-gtzfk0|45slc0|c51c0|75bw0|a31g0|aaak0|9d440|7v980|awo40|7v980|awo40|7v980|awo40|7v980|7tk40|clmk0|7rpg0|b07w0|7rpg0|b07w0|7rpg0|9et80|9eys0|9et80|9d440|9et80|9d440|9et80|9d440|9et80|cjxg0|69uk0|ci2s0|69uk0|6its40|9et80|9d440|9et80|1yf9g0|4qak0|Infinity",
                        offsets: "-480|-540",
                        offsetIndices: "01010101010101010101010101010101010101010"
                    }, {
                        id: "ROK",
                        untils: "-w8966g|1yh18g|hkx5a0|1faao0|5cik0|ae5g0|8a2k0|ae5g0|8bx80|c8tg0|6h980|1bj6s0|l3aq0|6j3w0|d2g40|6u7w0|b5xg0|776k0|biw40|776k0|biw40|776k0|biw40|776k0|grs40|dfqxi0|7x6o0|asw00|7x6o0|Infinity",
                        offsets: "-507.8667|-510|-540|-600|-570",
                        offsetIndices: "012232323232141414141414123232"
                    }, {
                        id: "Singapore",
                        untils: "-xphpwd|eeb94d|4it32o|8n3jc|1v2p60|iy3o60|Infinity",
                        offsets: "-415.4167|-420|-440|-450|-540|-480",
                        offsetIndices: "0123435"
                    }, {
                        id: "Turkey",
                        untils: "-ux9xew|2wvx6w|7v980|1tjc40|aunw0|88dg0|9et80|8yas0|a2vw0|tzpg0|79180|awo40|7v980|7p4040|4zjw0|2vs40|f4d80|9vms0|1u5ek0|c5440|69uk0|acas0|8n180|a31g0|8n180|9q2s0|8zzw0|a31g0|8zzw0|a31g0|8n180|5md9g0|o9zw0|a6qs0|75bw0|4iwyw0|7x6o0|7kas0|b5rw0|75hg0|bkl80|77c40|biqk0|7x9g0|a2vw0|8n6s0|4iqc0|2nkw80|38l80|kdes0|8qtc0|8a5c0|9ew00|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|902o0|9q000|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7kdk0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7m2o0|b4000|7k800|b5uo0|7x6o0|asw00|7z1c0|ar1c0|7x6o0|bitc0|779c0|8fe80|Infinity",
                        offsets: "-116.9333|-120|-180|-240",
                        offsetIndices: "0121212121212121212121212121212121212121212121223212121212121212121212121212121212121212121212121212121212121212122"
                    }, {
                        id: "UCT",
                        untils: "Infinity",
                        offsets: "0",
                        offsetIndices: "0"
                    }, {
                        id: "Universal",
                        untils: "Infinity",
                        offsets: "0",
                        offsetIndices: "0"
                    }, {
                        id: "US/Alaska",
                        untils: "-ek1qo0|1tyx80|2e400|b7yik0|12y080|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|1l940|7rs80|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "600|540|480",
                        offsetIndices: "011001010101010101010101010101010111212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "US/Aleutian",
                        untils: "-ek1nw0|1tyug0|2e6s0|b7yik0|12y080|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|1l940|7rs80|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "660|600|540",
                        offsetIndices: "011001010101010101010101010101010111212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "US/Arizona",
                        untils: "-r0epo0|ast80|7x9g0|ast80|bmtus0|zjedo|4olg0|9et80|bs6lmc|9cyk0|Infinity",
                        offsets: "420|360",
                        offsetIndices: "01010101010"
                    }, {
                        id: "US/Central",
                        untils: "-r0esg0|ast80|7x9g0|ast80|bvus0|776k0|7kas0|b5rw0|9d440|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|7x9g0|dbjw0|8a840|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|6w840|1tz8c0|2dsw0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "360|300",
                        offsetIndices: "01010101010101010101010101010101010101010101010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "US/East-Indiana",
                        untils: "-r0esg0|ast80|7x9g0|ast80|baw840|51ek0|6w840|1tz8c0|2dsw0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|19q7w0|asys0|5qonw0|9cyk0|9d440|9cyk0|ihslg0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "360|300|240",
                        offsetIndices: "010101011010101010101010101010121212121212121212121212121212121212121212121212121212121212121212121"
                    }, {
                        id: "US/Eastern",
                        untils: "-r0ev80|ast80|7x9g0|ast80|7x9g0|b5rw0|905g0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|6w840|1tzb40|2dq40|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "300|240",
                        offsetIndices: "01010101010101010101010101010101010101010101010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "US/Hawaii",
                        untils: "-j50la0|13l00|4jvb00|1tyvu0|2e5e0|votg0|Infinity",
                        offsets: "630|570|600",
                        offsetIndices: "0101102"
                    }, {
                        id: "US/Indiana-Starke",
                        untils: "-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|tj1g0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|7x3w0|asys0|7x3w0|asys0|9cyk0|9d440|9px80|9d440|9cyk0|9d440|s3180|1twas0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|7j5400|asw00|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "360|300",
                        offsetIndices: "0101011010101010101010101010101010101010101010101010101010101010101010101010101010101010111010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "US/Michigan",
                        untils: "-xx8dyd|5eraud|dyeyk0|1tzb40|2dq40|1c9440|7x3w0|9rlbxo|71s2c|9d440|9cyk0|2cmdg0|9cyk0|3lpg0|f4d80|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "332.1833|360|300|240",
                        offsetIndices: "0123323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232"
                    }, {
                        id: "US/Mountain",
                        untils: "-r0epo0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|2vmk0|ataw40|1tz5k0|2dvo0|a7n9g0|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "420|360",
                        offsetIndices: "01010101011010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "US/Pacific-New",
                        untils: "-r0emw0|ast80|7x9g0|ast80|bmtus0|1tz2s0|2dyg0|1a3c5o|f2iic|owao0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|902o0|9q000|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "480|420",
                        offsetIndices: "010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "US/Pacific",
                        untils: "-r0emw0|ast80|7x9g0|ast80|bmtus0|1tz2s0|2dyg0|1a3c5o|f2iic|owao0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|902o0|9q000|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity",
                        offsets: "480|420",
                        offsetIndices: "010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "US/Samoa",
                        untils: "-usij20|Infinity",
                        offsets: "682.8|660",
                        offsetIndices: "01"
                    }, {
                        id: "UTC",
                        untils: "Infinity",
                        offsets: "0",
                        offsetIndices: "0"
                    }, {
                        id: "W-SU",
                        untils: "-rx5dmh|ipzua|97hc0|7yyk0|5i840|d9p80|1jwk7|2cvk0|s8o00|1qvw0|8fpc0|1jms0|is040|412as0|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d440|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity",
                        offsets: "-150.2833|-151.3167|-211.3167|-271.3167|-240|-180|-300|-120",
                        offsetIndices: "012132345464575454545454545454545455754545454545454545454545454545454545454545"
                    }, {
                        id: "WET",
                        untils: "3s9ms0|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity",
                        offsets: "0|-60",
                        offsetIndices: "010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"
                    }, {
                        id: "Zulu",
                        untils: "Infinity",
                        offsets: "0",
                        offsetIndices: "0"
                    }]
                }
            },
        48158:
            /*!*******************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/tooltip_strategies/m_desktop_tooltip_strategy.js ***!
              \*******************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.DesktopTooltipStrategy = void 0;
                var _support = __webpack_require__( /*! ../../../core/utils/support */ 60137);
                var _tooltip = (obj = __webpack_require__( /*! ../../../ui/tooltip */ 94920), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _m_tooltip_strategy_base = __webpack_require__( /*! ./m_tooltip_strategy_base */ 98558);

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let DesktopTooltipStrategy = function(_TooltipStrategyBase) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(DesktopTooltipStrategy, _TooltipStrategyBase);

                    function DesktopTooltipStrategy() {
                        return _TooltipStrategyBase.apply(this, arguments) || this
                    }
                    var _proto = DesktopTooltipStrategy.prototype;
                    _proto._prepareBeforeVisibleChanged = function(dataList) {
                        this._tooltip.option("position", {
                            my: "bottom",
                            at: "top",
                            boundary: this._getBoundary(dataList),
                            offset: this._extraOptions.offset,
                            collision: "fit flipfit"
                        })
                    };
                    _proto._getBoundary = function(dataList) {
                        return this._options.isAppointmentInAllDayPanel(dataList[0].appointment) ? this._options.container : this._options.getScrollableContainer()
                    };
                    _proto._onShown = function() {
                        _TooltipStrategyBase.prototype._onShown.call(this);
                        if (this._extraOptions.isButtonClick) {
                            this._list.focus();
                            this._list.option("focusedElement", null)
                        }
                    };
                    _proto._createListOption = function(target, dataList) {
                        const result = _TooltipStrategyBase.prototype._createListOption.call(this, target, dataList);
                        result.showScrollbar = _support.touch ? "always" : "onHover";
                        return result
                    };
                    _proto._createTooltip = function(target, dataList) {
                        const tooltip = this._createTooltipElement("dx-scheduler-appointment-tooltip-wrapper");
                        return this._options.createComponent(tooltip, _tooltip.default, {
                            target: target,
                            maxHeight: 200,
                            rtlEnabled: this._extraOptions.rtlEnabled,
                            onShown: this._onShown.bind(this),
                            contentTemplate: this._getContentTemplate(dataList),
                            wrapperAttr: {
                                class: "dx-scheduler-appointment-tooltip-wrapper"
                            }
                        })
                    };
                    _proto._onListRender = function(e) {
                        return this._extraOptions.dragBehavior && this._extraOptions.dragBehavior(e)
                    };
                    _proto._onListItemContextMenu = function(e) {
                        const contextMenuEventArgs = this._options.createEventArgs(e);
                        this._options.onItemContextMenu(contextMenuEventArgs)
                    };
                    return DesktopTooltipStrategy
                }(_m_tooltip_strategy_base.TooltipStrategyBase);
                exports.DesktopTooltipStrategy = DesktopTooltipStrategy
            },
        60737:
            /*!******************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/tooltip_strategies/m_mobile_tooltip_strategy.js ***!
              \******************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.MobileTooltipStrategy = void 0;
                var _size = __webpack_require__( /*! ../../../core/utils/size */ 58664);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 58201);
                var _ui = (obj = __webpack_require__( /*! ../../../ui/overlay/ui.overlay */ 89799), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _m_tooltip_strategy_base = __webpack_require__( /*! ./m_tooltip_strategy_base */ 98558);

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const MAX_HEIGHT_PHONE = 250,
                    MAX_HEIGHT_TABLET = "90%",
                    MAX_HEIGHT_DEFAULT = "auto";
                const MAX_WIDTH_PHONE = "100%",
                    MAX_WIDTH_TABLET = "80%";
                const animationConfig = {
                    show: {
                        type: "slide",
                        duration: 300,
                        from: {
                            position: {
                                my: "top",
                                at: "bottom",
                                of: (0, _window.getWindow)()
                            }
                        },
                        to: {
                            position: {
                                my: "center",
                                at: "center",
                                of: (0, _window.getWindow)()
                            }
                        }
                    },
                    hide: {
                        type: "slide",
                        duration: 300,
                        to: {
                            position: {
                                my: "top",
                                at: "bottom",
                                of: (0, _window.getWindow)()
                            }
                        },
                        from: {
                            position: {
                                my: "center",
                                at: "center",
                                of: (0, _window.getWindow)()
                            }
                        }
                    }
                };
                let MobileTooltipStrategy = function(_TooltipStrategyBase) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(MobileTooltipStrategy, _TooltipStrategyBase);

                    function MobileTooltipStrategy() {
                        return _TooltipStrategyBase.apply(this, arguments) || this
                    }
                    var _proto = MobileTooltipStrategy.prototype;
                    _proto._shouldUseTarget = function() {
                        return false
                    };
                    _proto._onShowing = function() {
                        const isTabletWidth = (0, _size.getWidth)((0, _window.getWindow)()) > 700;
                        this._tooltip.option("height", MAX_HEIGHT_DEFAULT);
                        const listHeight = (0, _size.getOuterHeight)(this._list.$element());
                        this._tooltip.option(isTabletWidth ? (listHeight => {
                            const currentMaxHeight = .9 * (0, _size.getHeight)((0, _window.getWindow)());
                            return {
                                shading: true,
                                width: MAX_WIDTH_TABLET,
                                height: listHeight > currentMaxHeight ? MAX_HEIGHT_TABLET : MAX_HEIGHT_DEFAULT,
                                position: {
                                    my: "center",
                                    at: "center",
                                    of: (0, _window.getWindow)()
                                }
                            }
                        })(listHeight) : (listHeight => ({
                            shading: false,
                            width: MAX_WIDTH_PHONE,
                            height: listHeight > MAX_HEIGHT_PHONE ? MAX_HEIGHT_PHONE : MAX_HEIGHT_DEFAULT,
                            position: {
                                my: "bottom",
                                at: "bottom",
                                of: (0, _window.getWindow)()
                            }
                        }))(listHeight))
                    };
                    _proto._createTooltip = function(target, dataList) {
                        const element = this._createTooltipElement("dx-scheduler-overlay-panel");
                        return this._options.createComponent(element, _ui.default, {
                            target: (0, _window.getWindow)(),
                            hideOnOutsideClick: true,
                            animation: animationConfig,
                            onShowing: () => this._onShowing(),
                            onShown: this._onShown.bind(this),
                            contentTemplate: this._getContentTemplate(dataList),
                            wrapperAttr: {
                                class: "dx-scheduler-overlay-panel"
                            }
                        })
                    };
                    return MobileTooltipStrategy
                }(_m_tooltip_strategy_base.TooltipStrategyBase);
                exports.MobileTooltipStrategy = MobileTooltipStrategy
            },
        98558:
            /*!****************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/tooltip_strategies/m_tooltip_strategy_base.js ***!
              \****************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.TooltipStrategyBase = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _function_template = __webpack_require__( /*! ../../../core/templates/function_template */ 68494);
                var _button = _interopRequireDefault(__webpack_require__( /*! ../../../ui/button */ 63008));
                var _uiList = _interopRequireDefault(__webpack_require__( /*! ../../../ui/list/ui.list.edit */ 77834));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const TOOLTIP_APPOINTMENT_ITEM_CONTENT = "".concat("dx-tooltip-appointment-item", "-content");
                const TOOLTIP_APPOINTMENT_ITEM_CONTENT_SUBJECT = "".concat("dx-tooltip-appointment-item", "-content-subject");
                const TOOLTIP_APPOINTMENT_ITEM_CONTENT_DATE = "".concat("dx-tooltip-appointment-item", "-content-date");
                const TOOLTIP_APPOINTMENT_ITEM_MARKER = "".concat("dx-tooltip-appointment-item", "-marker");
                const TOOLTIP_APPOINTMENT_ITEM_MARKER_BODY = "".concat("dx-tooltip-appointment-item", "-marker-body");
                const TOOLTIP_APPOINTMENT_ITEM_DELETE_BUTTON_CONTAINER = "".concat("dx-tooltip-appointment-item", "-delete-button-container");
                const TOOLTIP_APPOINTMENT_ITEM_DELETE_BUTTON = "".concat("dx-tooltip-appointment-item", "-delete-button");
                let TooltipStrategyBase = function() {
                    function TooltipStrategyBase(options) {
                        this._tooltip = null;
                        this._options = options;
                        this._extraOptions = null
                    }
                    var _proto = TooltipStrategyBase.prototype;
                    _proto.show = function(target, dataList, extraOptions) {
                        if (this._canShowTooltip(dataList)) {
                            this.hide();
                            this._extraOptions = extraOptions;
                            this._showCore(target, dataList)
                        }
                    };
                    _proto._showCore = function(target, dataList) {
                        if (!this._tooltip) {
                            this._tooltip = this._createTooltip(target, dataList)
                        } else {
                            this._shouldUseTarget() && this._tooltip.option("target", target);
                            this._list.option("dataSource", dataList)
                        }
                        this._prepareBeforeVisibleChanged(dataList);
                        this._tooltip.option("visible", true)
                    };
                    _proto._prepareBeforeVisibleChanged = function(dataList) {};
                    _proto._getContentTemplate = function(dataList) {
                        return container => {
                            const listElement = (0, _renderer.default)("<div>");
                            (0, _renderer.default)(container).append(listElement);
                            this._list = this._createList(listElement, dataList)
                        }
                    };
                    _proto.isAlreadyShown = function(target) {
                        if (this._tooltip && this._tooltip.option("visible")) {
                            return this._tooltip.option("target")[0] === target[0]
                        }
                        return
                    };
                    _proto._onShown = function() {
                        this._list.option("focusStateEnabled", this._extraOptions.focusStateEnabled)
                    };
                    _proto.dispose = function() {};
                    _proto.hide = function() {
                        if (this._tooltip) {
                            this._tooltip.option("visible", false)
                        }
                    };
                    _proto._shouldUseTarget = function() {
                        return true
                    };
                    _proto._createTooltip = function(target, dataList) {};
                    _proto._canShowTooltip = function(dataList) {
                        if (!dataList.length) {
                            return false
                        }
                        return true
                    };
                    _proto._createListOption = function(dataList) {
                        return {
                            dataSource: dataList,
                            onContentReady: this._onListRender.bind(this),
                            onItemClick: e => this._onListItemClick(e),
                            onItemContextMenu: this._onListItemContextMenu.bind(this),
                            itemTemplate: (item, index) => this._renderTemplate(item.appointment, item.targetedAppointment, index, item.color),
                            _swipeEnabled: false,
                            pageLoadMode: "scrollBottom"
                        }
                    };
                    _proto._onListRender = function(e) {};
                    _proto._createTooltipElement = function(wrapperClass) {
                        return (0, _renderer.default)("<div>").appendTo(this._options.container).addClass(wrapperClass)
                    };
                    _proto._createList = function(listElement, dataList) {
                        return this._options.createComponent(listElement, _uiList.default, this._createListOption(dataList))
                    };
                    _proto._renderTemplate = function(appointment, targetedAppointment, index, color) {
                        const itemListContent = this._createItemListContent(appointment, targetedAppointment, color);
                        this._options.addDefaultTemplates({
                            [this._getItemListTemplateName()]: new _function_template.FunctionTemplate(options => {
                                const $container = (0, _renderer.default)(options.container);
                                $container.append(itemListContent);
                                return $container
                            })
                        });
                        const template = this._options.getAppointmentTemplate("".concat(this._getItemListTemplateName(), "Template"));
                        return this._createFunctionTemplate(template, appointment, targetedAppointment, index)
                    };
                    _proto._createFunctionTemplate = function(template, appointmentData, targetedAppointmentData, index) {
                        const isButtonClicked = !!this._extraOptions.isButtonClick;
                        const isEmptyDropDownAppointmentTemplate = this._isEmptyDropDownAppointmentTemplate();
                        return new _function_template.FunctionTemplate(options => template.render({
                            model: isEmptyDropDownAppointmentTemplate ? {
                                appointmentData: appointmentData,
                                targetedAppointmentData: targetedAppointmentData,
                                isButtonClicked: isButtonClicked
                            } : appointmentData,
                            container: options.container,
                            index: index
                        }))
                    };
                    _proto._getItemListTemplateName = function() {
                        return this._isEmptyDropDownAppointmentTemplate() ? "appointmentTooltip" : "dropDownAppointment"
                    };
                    _proto._isEmptyDropDownAppointmentTemplate = function() {
                        return !this._extraOptions.dropDownAppointmentTemplate || "dropDownAppointment" === this._extraOptions.dropDownAppointmentTemplate
                    };
                    _proto._onListItemClick = function(e) {
                        this.hide();
                        this._extraOptions.clickEvent && this._extraOptions.clickEvent(e);
                        this._options.showAppointmentPopup(e.itemData.appointment, false, e.itemData.targetedAppointment)
                    };
                    _proto._onListItemContextMenu = function(e) {};
                    _proto._createItemListContent = function(appointment, targetedAppointment, color) {
                        const {
                            editing: editing
                        } = this._extraOptions;
                        const $itemElement = (0, _renderer.default)("<div>").addClass("dx-tooltip-appointment-item");
                        $itemElement.append(this._createItemListMarker(color));
                        $itemElement.append(this._createItemListInfo(this._options.createFormattedDateText(appointment, targetedAppointment)));
                        const disabled = this._options.getAppointmentDisabled(appointment);
                        if (!disabled && (editing && true === editing.allowDeleting || true === editing)) {
                            $itemElement.append(this._createDeleteButton(appointment, targetedAppointment))
                        }
                        return $itemElement
                    };
                    _proto._createItemListMarker = function(color) {
                        const $marker = (0, _renderer.default)("<div>").addClass(TOOLTIP_APPOINTMENT_ITEM_MARKER);
                        const $markerBody = (0, _renderer.default)("<div>").addClass(TOOLTIP_APPOINTMENT_ITEM_MARKER_BODY);
                        $marker.append($markerBody);
                        color && color.done(value => $markerBody.css("background", value));
                        return $marker
                    };
                    _proto._createItemListInfo = function(object) {
                        const result = (0, _renderer.default)("<div>").addClass(TOOLTIP_APPOINTMENT_ITEM_CONTENT);
                        const $title = (0, _renderer.default)("<div>").addClass(TOOLTIP_APPOINTMENT_ITEM_CONTENT_SUBJECT).text(object.text);
                        const $date = (0, _renderer.default)("<div>").addClass(TOOLTIP_APPOINTMENT_ITEM_CONTENT_DATE).text(object.formatDate);
                        return result.append($title).append($date)
                    };
                    _proto._createDeleteButton = function(appointment, targetedAppointment) {
                        const $container = (0, _renderer.default)("<div>").addClass(TOOLTIP_APPOINTMENT_ITEM_DELETE_BUTTON_CONTAINER);
                        const $deleteButton = (0, _renderer.default)("<div>").addClass(TOOLTIP_APPOINTMENT_ITEM_DELETE_BUTTON);
                        $container.append($deleteButton);
                        this._options.createComponent($deleteButton, _button.default, {
                            icon: "trash",
                            stylingMode: "text",
                            onClick: e => {
                                this.hide();
                                e.event.stopPropagation();
                                this._options.checkAndDeleteAppointment(appointment, targetedAppointment)
                            }
                        });
                        return $container
                    };
                    return TooltipStrategyBase
                }();
                exports.TooltipStrategyBase = TooltipStrategyBase
            },
        79456:
            /*!**************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/utils/is_scheduler_component.js ***!
              \**************************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.isSchedulerComponent = function(component) {
                    return "dxScheduler" === component.NAME
                }
            },
        94654:
            /*!**********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/helpers/m_position_helper.js ***!
              \**********************************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.getMaxAllowedPosition = exports.getGroupWidth = exports.getCellWidth = exports.getCellHeight = exports.getAllDayHeight = exports.PositionHelper = void 0;

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _createClass(Constructor, protoProps, staticProps) {
                    if (protoProps) {
                        _defineProperties(Constructor.prototype, protoProps)
                    }
                    if (staticProps) {
                        _defineProperties(Constructor, staticProps)
                    }
                    Object.defineProperty(Constructor, "prototype", {
                        writable: false
                    });
                    return Constructor
                }
                const getCellSize = DOMMetaData => {
                    const {
                        dateTableCellsMeta: dateTableCellsMeta
                    } = DOMMetaData;
                    const length = null === dateTableCellsMeta || void 0 === dateTableCellsMeta ? void 0 : dateTableCellsMeta.length;
                    if (!length) {
                        return {
                            width: 0,
                            height: 0
                        }
                    }
                    const cellIndex = length > 1 ? 1 : 0;
                    const cellSize = dateTableCellsMeta[cellIndex][0];
                    return {
                        width: cellSize.width,
                        height: cellSize.height
                    }
                };
                const getCellHeight = DOMMetaData => getCellSize(DOMMetaData).height;
                exports.getCellHeight = getCellHeight;
                const getCellWidth = DOMMetaData => getCellSize(DOMMetaData).width;
                exports.getCellWidth = getCellWidth;
                const getAllDayHeight = (showAllDayPanel, isVerticalGrouping, DOMMetaData) => {
                    if (!showAllDayPanel) {
                        return 0
                    }
                    if (isVerticalGrouping) {
                        const {
                            dateTableCellsMeta: dateTableCellsMeta
                        } = DOMMetaData;
                        const length = null === dateTableCellsMeta || void 0 === dateTableCellsMeta ? void 0 : dateTableCellsMeta.length;
                        return length ? dateTableCellsMeta[0][0].height : 0
                    }
                    const {
                        allDayPanelCellsMeta: allDayPanelCellsMeta
                    } = DOMMetaData;
                    return (null === allDayPanelCellsMeta || void 0 === allDayPanelCellsMeta ? void 0 : allDayPanelCellsMeta.length) ? allDayPanelCellsMeta[0].height : 0
                };
                exports.getAllDayHeight = getAllDayHeight;
                const getMaxAllowedPosition = (groupIndex, viewDataProvider, rtlEnabled, DOMMetaData) => {
                    const validGroupIndex = groupIndex || 0;
                    return ((groupIndex, viewDataProvider, rtlEnabled, DOMMetaData) => {
                        const {
                            dateTableCellsMeta: dateTableCellsMeta
                        } = DOMMetaData;
                        const firstRow = dateTableCellsMeta[0];
                        if (!firstRow) {
                            return 0
                        }
                        const {
                            columnIndex: columnIndex
                        } = viewDataProvider.getLastGroupCellPosition(groupIndex);
                        const cellPosition = firstRow[columnIndex];
                        if (!cellPosition) {
                            return 0
                        }
                        return !rtlEnabled ? cellPosition.left + cellPosition.width : cellPosition.left
                    })(validGroupIndex, viewDataProvider, rtlEnabled, DOMMetaData)
                };
                exports.getMaxAllowedPosition = getMaxAllowedPosition;
                exports.getGroupWidth = (groupIndex, viewDataProvider, options) => {
                    const {
                        isVirtualScrolling: isVirtualScrolling,
                        rtlEnabled: rtlEnabled,
                        DOMMetaData: DOMMetaData
                    } = options;
                    const cellWidth = getCellWidth(DOMMetaData);
                    let result = viewDataProvider.getCellCount(options) * cellWidth;
                    if (isVirtualScrolling) {
                        const groupedData = viewDataProvider.groupedDataMap.dateTableGroupedMap;
                        const groupLength = groupedData[groupIndex][0].length;
                        result = groupLength * cellWidth
                    }
                    const position = getMaxAllowedPosition(groupIndex, viewDataProvider, rtlEnabled, DOMMetaData);
                    const currentPosition = position[groupIndex];
                    if (currentPosition) {
                        if (rtlEnabled) {
                            result = currentPosition - position[groupIndex + 1]
                        } else if (0 === groupIndex) {
                            result = currentPosition
                        } else {
                            result = currentPosition - position[groupIndex - 1]
                        }
                    }
                    return result
                };
                let PositionHelper = function() {
                    function PositionHelper(options) {
                        this.options = options;
                        this.groupStrategy = this.options.isVerticalGrouping ? new GroupStrategyBase(this.options) : new GroupStrategyHorizontal(this.options)
                    }
                    var _proto = PositionHelper.prototype;
                    _proto.getHorizontalMax = function(groupIndex) {
                        const getMaxPosition = groupIndex => getMaxAllowedPosition(groupIndex, this.viewDataProvider, this.rtlEnabled, this.DOMMetaData);
                        if (this.isGroupedByDate) {
                            const viewPortGroupCount = this.viewDataProvider.getViewPortGroupCount();
                            return Math.max(getMaxPosition(groupIndex), getMaxPosition(viewPortGroupCount - 1))
                        }
                        return getMaxPosition(groupIndex)
                    };
                    _proto.getResizableStep = function() {
                        const cellWidth = getCellWidth(this.DOMMetaData);
                        if (this.isGroupedByDate) {
                            return this.groupCount * cellWidth
                        }
                        return cellWidth
                    };
                    _proto.getVerticalMax = function(options) {
                        return this.groupStrategy.getVerticalMax(options)
                    };
                    _proto.getOffsetByAllDayPanel = function(options) {
                        return this.groupStrategy.getOffsetByAllDayPanel(options)
                    };
                    _proto.getGroupTop = function(options) {
                        return this.groupStrategy.getGroupTop(options)
                    };
                    _createClass(PositionHelper, [{
                        key: "viewDataProvider",
                        get: function() {
                            return this.options.viewDataProvider
                        }
                    }, {
                        key: "rtlEnabled",
                        get: function() {
                            return this.options.rtlEnabled
                        }
                    }, {
                        key: "isGroupedByDate",
                        get: function() {
                            return this.options.isGroupedByDate
                        }
                    }, {
                        key: "groupCount",
                        get: function() {
                            return this.options.groupCount
                        }
                    }, {
                        key: "DOMMetaData",
                        get: function() {
                            return this.options.getDOMMetaDataCallback()
                        }
                    }]);
                    return PositionHelper
                }();
                exports.PositionHelper = PositionHelper;
                let GroupStrategyBase = function() {
                    function GroupStrategyBase(options) {
                        this.options = options
                    }
                    var _proto2 = GroupStrategyBase.prototype;
                    _proto2.getOffsetByAllDayPanel = function(_ref) {
                        let {
                            groupIndex: groupIndex,
                            supportAllDayRow: supportAllDayRow,
                            showAllDayPanel: showAllDayPanel
                        } = _ref;
                        let result = 0;
                        if (supportAllDayRow && showAllDayPanel) {
                            const allDayPanelHeight = getAllDayHeight(showAllDayPanel, true, this.DOMMetaData);
                            result = allDayPanelHeight * (groupIndex + 1)
                        }
                        return result
                    };
                    _proto2.getVerticalMax = function(options) {
                        let maxAllowedPosition = this._getMaxAllowedVerticalPosition(_extends(_extends({}, options), {
                            viewDataProvider: this.viewDataProvider,
                            rtlEnabled: this.rtlEnabled,
                            DOMMetaData: this.DOMMetaData
                        }));
                        maxAllowedPosition += this.getOffsetByAllDayPanel(options);
                        return maxAllowedPosition
                    };
                    _proto2.getGroupTop = function(_ref2) {
                        let {
                            groupIndex: groupIndex,
                            showAllDayPanel: showAllDayPanel,
                            isGroupedAllDayPanel: isGroupedAllDayPanel
                        } = _ref2;
                        const rowCount = this.viewDataProvider.getRowCountInGroup(groupIndex);
                        const maxVerticalPosition = this._getMaxAllowedVerticalPosition({
                            groupIndex: groupIndex,
                            viewDataProvider: this.viewDataProvider,
                            showAllDayPanel: showAllDayPanel,
                            isGroupedAllDayPanel: isGroupedAllDayPanel,
                            isVerticalGrouping: true,
                            DOMMetaData: this.DOMMetaData
                        });
                        return maxVerticalPosition - getCellHeight(this.DOMMetaData) * rowCount
                    };
                    _proto2._getAllDayHeight = function(showAllDayPanel) {
                        return getAllDayHeight(showAllDayPanel, true, this.DOMMetaData)
                    };
                    _proto2._getMaxAllowedVerticalPosition = function(_ref3) {
                        let {
                            groupIndex: groupIndex,
                            showAllDayPanel: showAllDayPanel,
                            isGroupedAllDayPanel: isGroupedAllDayPanel
                        } = _ref3;
                        const {
                            rowIndex: rowIndex
                        } = this.viewDataProvider.getLastGroupCellPosition(groupIndex);
                        const {
                            dateTableCellsMeta: dateTableCellsMeta
                        } = this.DOMMetaData;
                        const lastGroupRow = dateTableCellsMeta[rowIndex];
                        if (!lastGroupRow) {
                            return 0
                        }
                        let result = lastGroupRow[0].top + lastGroupRow[0].height;
                        if (isGroupedAllDayPanel) {
                            result -= (groupIndex + 1) * this._getAllDayHeight(showAllDayPanel)
                        }
                        return result
                    };
                    _createClass(GroupStrategyBase, [{
                        key: "viewDataProvider",
                        get: function() {
                            return this.options.viewDataProvider
                        }
                    }, {
                        key: "isGroupedByDate",
                        get: function() {
                            return this.options.isGroupedByDate
                        }
                    }, {
                        key: "rtlEnabled",
                        get: function() {
                            return this.options.rtlEnabled
                        }
                    }, {
                        key: "groupCount",
                        get: function() {
                            return this.options.groupCount
                        }
                    }, {
                        key: "DOMMetaData",
                        get: function() {
                            return this.options.getDOMMetaDataCallback()
                        }
                    }]);
                    return GroupStrategyBase
                }();
                let GroupStrategyHorizontal = function(_GroupStrategyBase) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(GroupStrategyHorizontal, _GroupStrategyBase);

                    function GroupStrategyHorizontal() {
                        return _GroupStrategyBase.apply(this, arguments) || this
                    }
                    var _proto3 = GroupStrategyHorizontal.prototype;
                    _proto3.getOffsetByAllDayPanel = function() {
                        return 0
                    };
                    _proto3.getVerticalMax = function(options) {
                        const {
                            isVirtualScrolling: isVirtualScrolling,
                            groupIndex: groupIndex
                        } = options;
                        const correctedGroupIndex = isVirtualScrolling ? groupIndex : 0;
                        return this._getMaxAllowedVerticalPosition(_extends(_extends({}, options), {
                            groupIndex: correctedGroupIndex
                        }))
                    };
                    _proto3.getGroupTop = function() {
                        return 0
                    };
                    _proto3._getAllDayHeight = function(showAllDayPanel) {
                        return getAllDayHeight(showAllDayPanel, false, this.DOMMetaData)
                    };
                    return GroupStrategyHorizontal
                }(GroupStrategyBase)
            },
        32316:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_agenda.js ***!
              \*****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 99393));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 73349));
                var _element = __webpack_require__( /*! ../../../core/element */ 6415);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 20576);
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 91198));
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 95479);
                var _size = __webpack_require__( /*! ../../../core/utils/size */ 58664);
                var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../../localization/date */ 91500));
                var _agenda = __webpack_require__( /*! ../../../renovation/ui/scheduler/view_model/to_test/views/utils/agenda */ 89206);
                var _base = __webpack_require__( /*! ../../../renovation/ui/scheduler/view_model/to_test/views/utils/base */ 45985);
                var _m_classes = __webpack_require__( /*! ../m_classes */ 43600);
                var _m_constants = __webpack_require__( /*! ../m_constants */ 6324);
                var _m_table_creator = _interopRequireDefault(__webpack_require__( /*! ../m_table_creator */ 82215));
                var _m_utils = __webpack_require__( /*! ../resources/m_utils */ 31359);
                var _m_work_space = _interopRequireDefault(__webpack_require__( /*! ./m_work_space */ 48377));

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

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const {
                    tableCreator: tableCreator
                } = _m_table_creator.default;
                let SchedulerAgenda = function(_WorkSpace) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(SchedulerAgenda, _WorkSpace);

                    function SchedulerAgenda() {
                        return _WorkSpace.apply(this, arguments) || this
                    }
                    var _proto = SchedulerAgenda.prototype;
                    _proto.getStartViewDate = function() {
                        return this._startViewDate
                    };
                    _proto._init = function() {
                        _WorkSpace.prototype._init.call(this);
                        this._activeStateUnit = void 0
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_WorkSpace.prototype._getDefaultOptions.call(this), {
                            agendaDuration: 7,
                            rowHeight: 60,
                            noDataText: ""
                        })
                    };
                    _proto._optionChanged = function(args) {
                        const {
                            name: name
                        } = args;
                        const {
                            value: value
                        } = args;
                        switch (name) {
                            case "agendaDuration":
                                break;
                            case "noDataText":
                            case "rowHeight":
                                this._recalculateAgenda(this._rows);
                                break;
                            case "groups":
                                if (!value || !value.length) {
                                    if (this._$groupTable) {
                                        this._$groupTable.remove();
                                        this._$groupTable = null;
                                        this._detachGroupCountClass()
                                    }
                                } else if (!this._$groupTable) {
                                    this._initGroupTable();
                                    this._dateTableScrollable.$content().prepend(this._$groupTable)
                                }
                                _WorkSpace.prototype._optionChanged.call(this, args);
                                break;
                            default:
                                _WorkSpace.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto._renderFocusState = function() {
                        return (0, _common.noop)()
                    };
                    _proto._renderFocusTarget = function() {
                        return (0, _common.noop)()
                    };
                    _proto._cleanFocusState = function() {
                        return (0, _common.noop)()
                    };
                    _proto.supportAllDayRow = function() {
                        return false
                    };
                    _proto._isVerticalGroupedWorkSpace = function() {
                        return false
                    };
                    _proto._getElementClass = function() {
                        return "dx-scheduler-agenda"
                    };
                    _proto._calculateStartViewDate = function() {
                        return (0, _agenda.calculateStartViewDate)(this.option("currentDate"), this.option("startDayHour"))
                    };
                    _proto._getRowCount = function() {
                        return this.option("agendaDuration")
                    };
                    _proto._getCellCount = function() {
                        return 1
                    };
                    _proto._getTimePanelRowCount = function() {
                        return this.option("agendaDuration")
                    };
                    _proto._renderAllDayPanel = function() {
                        return (0, _common.noop)()
                    };
                    _proto._toggleAllDayVisibility = function() {
                        return (0, _common.noop)()
                    };
                    _proto._initWorkSpaceUnits = function() {
                        this._initGroupTable();
                        this._$timePanel = (0, _renderer.default)("<table>").addClass(_m_classes.TIME_PANEL_CLASS);
                        this._$dateTable = (0, _renderer.default)("<table>").addClass(_m_classes.DATE_TABLE_CLASS);
                        this._$dateTableScrollableContent = (0, _renderer.default)("<div>").addClass("dx-scheduler-date-table-scrollable-content");
                        this._$dateTableContainer = (0, _renderer.default)("<div>").addClass("dx-scheduler-date-table-container")
                    };
                    _proto._initGroupTable = function() {
                        const groups = this.option("groups");
                        if (groups && groups.length) {
                            this._$groupTable = (0, _renderer.default)("<table>").addClass("dx-scheduler-group-table")
                        }
                    };
                    _proto._renderView = function() {
                        this._startViewDate = this._calculateStartViewDate();
                        this._rows = [];
                        this._initPositionHelper()
                    };
                    _proto._recalculateAgenda = function(rows) {
                        let cellTemplates = [];
                        this._cleanView();
                        if (this._rowsIsEmpty(rows)) {
                            this._renderNoData();
                            return
                        }
                        this._rows = rows;
                        if (this._$groupTable) {
                            cellTemplates = this._renderGroupHeader();
                            this._setGroupHeaderCellsHeight()
                        }
                        this._renderTimePanel();
                        this._renderDateTable();
                        this.invoke("onAgendaReady", rows);
                        this._applyCellTemplates(cellTemplates);
                        this._dateTableScrollable.update()
                    };
                    _proto._renderNoData = function() {
                        this._$noDataContainer = (0, _renderer.default)("<div>").addClass("dx-scheduler-agenda-nodata").html(this.option("noDataText"));
                        this._dateTableScrollable.$content().append(this._$noDataContainer)
                    };
                    _proto._setTableSizes = function() {
                        return (0, _common.noop)()
                    };
                    _proto._toggleHorizontalScrollClass = function() {
                        return (0, _common.noop)()
                    };
                    _proto._createCrossScrollingConfig = function(argument) {
                        return (0, _common.noop)()
                    };
                    _proto._setGroupHeaderCellsHeight = function() {
                        const $cells = this._getGroupHeaderCells().filter((_, element) => !element.getAttribute("rowSpan"));
                        const rows = this._removeEmptyRows(this._rows);
                        if (!rows.length) {
                            return
                        }
                        for (let i = 0; i < $cells.length; i++) {
                            const $cellContent = $cells.eq(i).find(".dx-scheduler-group-header-content");
                            (0, _size.setOuterHeight)($cellContent, this._getGroupRowHeight(rows[i]))
                        }
                    };
                    _proto._rowsIsEmpty = function(rows) {
                        let result = true;
                        for (let i = 0; i < rows.length; i++) {
                            const groupRow = rows[i];
                            for (let j = 0; j < groupRow.length; j++) {
                                if (groupRow[j]) {
                                    result = false;
                                    break
                                }
                            }
                        }
                        return result
                    };
                    _proto._attachGroupCountClass = function() {
                        const className = (0, _base.getVerticalGroupCountClass)(this.option("groups"));
                        this.$element().addClass(className)
                    };
                    _proto._removeEmptyRows = function(rows) {
                        const result = [];
                        for (let i = 0; i < rows.length; i++) {
                            if (rows[i].length && !(data = rows[i], !data.some(value => value > 0))) {
                                result.push(rows[i])
                            }
                        }
                        var data;
                        return result
                    };
                    _proto._getGroupHeaderContainer = function() {
                        return this._$groupTable
                    };
                    _proto._makeGroupRows = function() {
                        const tree = (0, _m_utils.createReducedResourcesTree)(this.option("loadedResources"), (field, action) => (0, _m_utils.getDataAccessors)(this.option("getResourceDataAccessors")(), field, action), this.option("getFilteredItems")());
                        const cellTemplate = this.option("resourceCellTemplate");
                        const getGroupHeaderContentClass = _m_classes.GROUP_HEADER_CONTENT_CLASS;
                        const cellTemplates = [];
                        const table = tableCreator.makeGroupedTableFromJSON(tableCreator.VERTICAL, tree, {
                            cellTag: "th",
                            groupTableClass: "dx-scheduler-group-table",
                            groupRowClass: _m_classes.GROUP_ROW_CLASS,
                            groupCellClass: this._getGroupHeaderClass(),
                            groupCellCustomContent(cell, cellTextElement, index, data) {
                                const container = _dom_adapter.default.createElement("div");
                                container.className = getGroupHeaderContentClass;
                                if (cellTemplate && cellTemplate.render) {
                                    cellTemplates.push(cellTemplate.render.bind(cellTemplate, {
                                        model: {
                                            data: data.data,
                                            id: data.value,
                                            color: data.color,
                                            text: cellTextElement.textContent
                                        },
                                        container: (0, _element.getPublicElement)((0, _renderer.default)(container)),
                                        index: index
                                    }))
                                } else {
                                    const contentWrapper = _dom_adapter.default.createElement("div");
                                    contentWrapper.appendChild(cellTextElement);
                                    container.appendChild(contentWrapper)
                                }
                                cell.appendChild(container)
                            },
                            cellTemplate: cellTemplate
                        });
                        return {
                            elements: (0, _renderer.default)(table).find(".".concat(_m_classes.GROUP_ROW_CLASS)),
                            cellTemplates: cellTemplates
                        }
                    };
                    _proto._cleanView = function() {
                        this._$dateTable.empty();
                        this._$timePanel.empty();
                        if (this._$groupTable) {
                            this._$groupTable.empty()
                        }
                        if (this._$noDataContainer) {
                            this._$noDataContainer.empty();
                            this._$noDataContainer.remove();
                            delete this._$noDataContainer
                        }
                    };
                    _proto._createWorkSpaceElements = function() {
                        this._createWorkSpaceStaticElements()
                    };
                    _proto._createWorkSpaceStaticElements = function() {
                        this._$dateTableContainer.append(this._$dateTable);
                        this._dateTableScrollable.$content().append(this._$dateTableScrollableContent);
                        if (this._$groupTable) {
                            this._$dateTableScrollableContent.prepend(this._$groupTable)
                        }
                        this._$dateTableScrollableContent.append(this._$timePanel, this._$dateTableContainer);
                        this.$element().append(this._dateTableScrollable.$element())
                    };
                    _proto._renderDateTable = function() {
                        this._renderTableBody({
                            container: (0, _element.getPublicElement)(this._$dateTable),
                            rowClass: _m_classes.DATE_TABLE_ROW_CLASS,
                            cellClass: this._getDateTableCellClass()
                        })
                    };
                    _proto._attachTablesEvents = function() {
                        return (0, _common.noop)()
                    };
                    _proto._attachEvents = function() {
                        return (0, _common.noop)()
                    };
                    _proto._cleanCellDataCache = function() {
                        return (0, _common.noop)()
                    };
                    _proto.isIndicationAvailable = function() {
                        return false
                    };
                    _proto._prepareCellTemplateOptions = function(text, date, rowIndex, $cell) {
                        const groupsOpt = this.option("groups");
                        const groups = {};
                        const isGroupedView = !!groupsOpt.length;
                        const path = isGroupedView && (0, _m_utils.getPathToLeaf)(rowIndex, groupsOpt) || [];
                        path.forEach((resourceValue, resourceIndex) => {
                            const resourceName = groupsOpt[resourceIndex].name;
                            groups[resourceName] = resourceValue
                        });
                        const groupIndex = isGroupedView ? this._getGroupIndexByResourceId(groups) : void 0;
                        return {
                            model: {
                                text: text,
                                date: date,
                                groups: groups,
                                groupIndex: groupIndex
                            },
                            container: (0, _element.getPublicElement)($cell),
                            index: rowIndex
                        }
                    };
                    _proto._renderTableBody = function(options, delayCellTemplateRendering) {
                        const cellTemplates = [];
                        const cellTemplateOpt = options.cellTemplate;
                        this._$rows = [];
                        let i;
                        const fillTableBody = function(rowIndex, rowSize) {
                            if (rowSize) {
                                let date;
                                let cellDateNumber;
                                let cellDayName;
                                const $row = (0, _renderer.default)("<tr>");
                                const $td = (0, _renderer.default)("<td>");
                                (0, _size.setHeight)($td, this._getRowHeight(rowSize));
                                if (options.getStartDate) {
                                    date = options.getStartDate && options.getStartDate(rowIndex);
                                    cellDateNumber = _date2.default.format(date, "d");
                                    cellDayName = _date2.default.format(date, _base.formatWeekday)
                                }
                                if (cellTemplateOpt && cellTemplateOpt.render) {
                                    const templateOptions = this._prepareCellTemplateOptions("".concat(cellDateNumber, " ").concat(cellDayName), date, i, $td);
                                    cellTemplates.push(cellTemplateOpt.render.bind(cellTemplateOpt, templateOptions))
                                } else if (cellDateNumber && cellDayName) {
                                    $td.addClass("dx-scheduler-agenda-date").text("".concat(cellDateNumber, " ").concat(cellDayName))
                                }
                                if (options.rowClass) {
                                    $row.addClass(options.rowClass)
                                }
                                if (options.cellClass) {
                                    $td.addClass(options.cellClass)
                                }
                                $row.append($td);
                                this._$rows.push($row)
                            }
                        }.bind(this);
                        for (i = 0; i < this._rows.length; i++) {
                            (0, _iterator.each)(this._rows[i], fillTableBody);
                            this._setLastRowClass()
                        }(0, _renderer.default)(options.container).append((0, _renderer.default)("<tbody>").append(this._$rows));
                        this._applyCellTemplates(cellTemplates)
                    };
                    _proto._setLastRowClass = function() {
                        if (this._rows.length > 1 && this._$rows.length) {
                            const $lastRow = this._$rows[this._$rows.length - 1];
                            $lastRow.addClass("dx-scheduler-date-table-last-row")
                        }
                    };
                    _proto._renderTimePanel = function() {
                        this._renderTableBody({
                            container: (0, _element.getPublicElement)(this._$timePanel),
                            rowCount: this._getTimePanelRowCount(),
                            cellCount: 1,
                            rowClass: "dx-scheduler-time-panel-row",
                            cellClass: "dx-scheduler-time-panel-cell",
                            cellTemplate: this.option("dateCellTemplate"),
                            getStartDate: this._getTimePanelStartDate.bind(this)
                        })
                    };
                    _proto._getTimePanelStartDate = function(rowIndex) {
                        const current = new Date(this.option("currentDate"));
                        const cellDate = new Date(current.setDate(current.getDate() + rowIndex));
                        return cellDate
                    };
                    _proto._getRowHeight = function(rowSize) {
                        const baseHeight = this.option("rowHeight");
                        const innerOffset = 5 * (rowSize - 1);
                        return rowSize ? baseHeight * rowSize + innerOffset + 20 : 0
                    };
                    _proto._getGroupRowHeight = function(groupRows) {
                        if (!groupRows) {
                            return
                        }
                        let result = 0;
                        for (let i = 0; i < groupRows.length; i++) {
                            result += this._getRowHeight(groupRows[i])
                        }
                        return result
                    };
                    _proto._calculateRows = function(appointments) {
                        return this.renderingStrategy.calculateRows(appointments, this.option("agendaDuration"), this.option("currentDate"))
                    };
                    _proto.onDataSourceChanged = function(appointments) {
                        _WorkSpace.prototype.onDataSourceChanged.call(this);
                        this._renderView();
                        const rows = this._calculateRows(appointments);
                        this._recalculateAgenda(rows)
                    };
                    _proto.getAgendaVerticalStepHeight = function() {
                        return this.option("rowHeight")
                    };
                    _proto.getEndViewDate = function() {
                        const currentDate = new Date(this.option("currentDate"));
                        const agendaDuration = this.option("agendaDuration");
                        currentDate.setHours(this.option("endDayHour"));
                        const result = currentDate.setDate(currentDate.getDate() + agendaDuration - 1) - 6e4;
                        return new Date(result)
                    };
                    _proto.getEndViewDateByEndDayHour = function() {
                        return this.getEndViewDate()
                    };
                    _proto.getCellDataByCoordinates = function() {
                        return {
                            startDate: null,
                            endDate: null
                        }
                    };
                    _proto.updateScrollPosition = function(date) {
                        const newDate = this.timeZoneCalculator.createDate(date, {
                            path: "toGrid"
                        });
                        const bounds = this.getVisibleBounds();
                        const startDateHour = newDate.getHours();
                        const startDateMinutes = newDate.getMinutes();
                        if (this.needUpdateScrollPosition(startDateHour, startDateMinutes, bounds, newDate)) {
                            this.scrollToTime(startDateHour, startDateMinutes, newDate)
                        }
                    };
                    _proto.needUpdateScrollPosition = function(hours, minutes, bounds, newData) {
                        let isUpdateNeeded = false;
                        if (hours < bounds.top.hours || hours > bounds.bottom.hours) {
                            isUpdateNeeded = true
                        }
                        if (hours === bounds.top.hours && minutes < bounds.top.minutes) {
                            isUpdateNeeded = true
                        }
                        if (hours === bounds.bottom.hours && minutes > bounds.top.minutes) {
                            isUpdateNeeded = true
                        }
                        return isUpdateNeeded
                    };
                    _proto.renovatedRenderSupported = function() {
                        return false
                    };
                    _proto._setSelectedCellsByCellData = function() {};
                    _proto._getIntervalDuration = function() {
                        return _date.default.dateToMilliseconds("day") * this.option("intervalCount")
                    };
                    _proto.getDOMElementsMetaData = function() {
                        return {
                            dateTableCellsMeta: [
                                [{}]
                            ],
                            allDayPanelCellsMeta: [{}]
                        }
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(SchedulerAgenda, [{
                        key: "type",
                        get: function() {
                            return _m_constants.VIEWS.AGENDA
                        }
                    }, {
                        key: "renderingStrategy",
                        get: function() {
                            return this.invoke("getLayoutManager").getRenderingStrategyInstance()
                        }
                    }, {
                        key: "appointmentDataProvider",
                        get: function() {
                            return this.option("getAppointmentDataProvider")()
                        }
                    }]);
                    return SchedulerAgenda
                }(_m_work_space.default);
                (0, _component_registrator.default)("dxSchedulerAgenda", SchedulerAgenda);
                var _default = SchedulerAgenda;
                exports.default = _default
            },
        14553:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_cache.js ***!
              \****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.Cache = void 0;
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }
                let Cache = function() {
                    function Cache() {
                        this._cache = new Map
                    }
                    var _proto = Cache.prototype;
                    _proto.clear = function() {
                        this._cache.clear()
                    };
                    _proto.get = function(name, callback) {
                        if (!this._cache.has(name) && callback) {
                            this.set(name, callback())
                        }
                        return this._cache.get(name)
                    };
                    _proto.set = function(name, value) {
                        (0, _type.isDefined)(value) && this._cache.set(name, value)
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(Cache, [{
                        key: "size",
                        get: function() {
                            return this._cache.size
                        }
                    }]);
                    return Cache
                }();
                exports.Cache = Cache
            },
        78151:
            /*!*************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_cells_selection_controller.js ***!
              \*************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.CellsSelectionController = void 0;
                var _base = __webpack_require__( /*! ../../../renovation/ui/scheduler/view_model/to_test/views/utils/base */ 45985);

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                let CellsSelectionController = function() {
                    function CellsSelectionController() {}
                    var _proto = CellsSelectionController.prototype;
                    _proto.handleArrowClick = function(options) {
                        const {
                            key: key,
                            focusedCellPosition: focusedCellPosition,
                            edgeIndices: edgeIndices,
                            getCellDataByPosition: getCellDataByPosition,
                            isAllDayPanelCell: isAllDayPanelCell
                        } = options;
                        let nextCellIndices;
                        switch (key) {
                            case "down":
                                nextCellIndices = this.getCellFromNextRowPosition(focusedCellPosition, "next", edgeIndices);
                                break;
                            case "up":
                                nextCellIndices = this.getCellFromNextRowPosition(focusedCellPosition, "prev", edgeIndices);
                                break;
                            case "left":
                                nextCellIndices = this.getCellFromNextColumnPosition(_extends(_extends({}, options), {
                                    direction: "prev"
                                }));
                                break;
                            case "right":
                                nextCellIndices = this.getCellFromNextColumnPosition(_extends(_extends({}, options), {
                                    direction: "next"
                                }))
                        }
                        const currentCellData = getCellDataByPosition(nextCellIndices.rowIndex, nextCellIndices.columnIndex, isAllDayPanelCell);
                        return this.moveToCell(_extends(_extends({}, options), {
                            currentCellData: currentCellData
                        }))
                    };
                    _proto.getCellFromNextRowPosition = function(focusedCellPosition, direction, edgeIndices) {
                        const {
                            columnIndex: columnIndex,
                            rowIndex: rowIndex
                        } = focusedCellPosition;
                        const deltaPosition = "next" === direction ? 1 : -1;
                        const nextRowIndex = rowIndex + deltaPosition;
                        const validRowIndex = nextRowIndex >= 0 && nextRowIndex <= edgeIndices.lastRowIndex ? nextRowIndex : rowIndex;
                        return {
                            columnIndex: columnIndex,
                            rowIndex: validRowIndex
                        }
                    };
                    _proto.getCellFromNextColumnPosition = function(options) {
                        const {
                            focusedCellPosition: focusedCellPosition,
                            direction: direction,
                            edgeIndices: edgeIndices,
                            isRTL: isRTL,
                            isGroupedByDate: isGroupedByDate,
                            groupCount: groupCount,
                            isMultiSelection: isMultiSelection,
                            viewType: viewType
                        } = options;
                        const {
                            columnIndex: columnIndex,
                            rowIndex: rowIndex
                        } = focusedCellPosition;
                        const {
                            firstColumnIndex: firstColumnIndex,
                            lastColumnIndex: lastColumnIndex,
                            firstRowIndex: firstRowIndex,
                            lastRowIndex: lastRowIndex
                        } = edgeIndices;
                        const step = isGroupedByDate && isMultiSelection ? groupCount : 1;
                        const sign = isRTL ? -1 : 1;
                        const deltaColumnIndex = "next" === direction ? sign * step : -1 * sign * step;
                        const nextColumnIndex = columnIndex + deltaColumnIndex;
                        const isValidColumnIndex = nextColumnIndex >= firstColumnIndex && nextColumnIndex <= lastColumnIndex;
                        if (isValidColumnIndex) {
                            return {
                                columnIndex: nextColumnIndex,
                                rowIndex: rowIndex
                            }
                        }
                        return (0, _base.isDateAndTimeView)(viewType) ? focusedCellPosition : this._processEdgeCell({
                            nextColumnIndex: nextColumnIndex,
                            rowIndex: rowIndex,
                            columnIndex: columnIndex,
                            firstColumnIndex: firstColumnIndex,
                            lastColumnIndex: lastColumnIndex,
                            firstRowIndex: firstRowIndex,
                            lastRowIndex: lastRowIndex,
                            step: step
                        })
                    };
                    _proto._processEdgeCell = function(options) {
                        const {
                            nextColumnIndex: nextColumnIndex,
                            rowIndex: rowIndex,
                            columnIndex: columnIndex,
                            firstColumnIndex: firstColumnIndex,
                            lastColumnIndex: lastColumnIndex,
                            firstRowIndex: firstRowIndex,
                            lastRowIndex: lastRowIndex,
                            step: step
                        } = options;
                        let validColumnIndex = nextColumnIndex;
                        let validRowIndex = rowIndex;
                        const isLeftEdgeCell = nextColumnIndex < firstColumnIndex;
                        const isRightEdgeCell = nextColumnIndex > lastColumnIndex;
                        if (isLeftEdgeCell) {
                            const columnIndexInNextRow = lastColumnIndex - (step - columnIndex % step - 1);
                            const nextRowIndex = rowIndex - 1;
                            const isValidRowIndex = nextRowIndex >= firstRowIndex;
                            validRowIndex = isValidRowIndex ? nextRowIndex : rowIndex;
                            validColumnIndex = isValidRowIndex ? columnIndexInNextRow : columnIndex
                        }
                        if (isRightEdgeCell) {
                            const columnIndexInNextRow = firstColumnIndex + columnIndex % step;
                            const nextRowIndex = rowIndex + 1;
                            const isValidRowIndex = nextRowIndex <= lastRowIndex;
                            validRowIndex = isValidRowIndex ? nextRowIndex : rowIndex;
                            validColumnIndex = isValidRowIndex ? columnIndexInNextRow : columnIndex
                        }
                        return {
                            columnIndex: validColumnIndex,
                            rowIndex: validRowIndex
                        }
                    };
                    _proto.moveToCell = function(options) {
                        const {
                            isMultiSelection: isMultiSelection,
                            isMultiSelectionAllowed: isMultiSelectionAllowed,
                            focusedCellData: focusedCellData,
                            currentCellData: currentCellData
                        } = options;
                        const isValidMultiSelection = isMultiSelection && isMultiSelectionAllowed;
                        const nextFocusedCellData = isValidMultiSelection ? this._getNextCellData(currentCellData, focusedCellData) : currentCellData;
                        return nextFocusedCellData
                    };
                    _proto._getNextCellData = function(nextFocusedCellData, focusedCellData, isVirtualCell) {
                        if (isVirtualCell) {
                            return focusedCellData
                        }
                        const isValidNextFocusedCell = this._isValidNextFocusedCell(nextFocusedCellData, focusedCellData);
                        return isValidNextFocusedCell ? nextFocusedCellData : focusedCellData
                    };
                    _proto._isValidNextFocusedCell = function(nextFocusedCellData, focusedCellData) {
                        if (!focusedCellData) {
                            return true
                        }
                        const {
                            groupIndex: groupIndex,
                            allDay: allDay
                        } = focusedCellData;
                        const {
                            groupIndex: nextGroupIndex,
                            allDay: nextAllDay
                        } = nextFocusedCellData;
                        return groupIndex === nextGroupIndex && allDay === nextAllDay
                    };
                    return CellsSelectionController
                }();
                exports.CellsSelectionController = CellsSelectionController
            },
        20191:
            /*!********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_cells_selection_state.js ***!
              \********************************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }
                let CellsSelectionState = function() {
                    function CellsSelectionState(_viewDataProvider) {
                        this._viewDataProvider = _viewDataProvider;
                        this._focusedCell = null;
                        this._selectedCells = null;
                        this._firstSelectedCell = null;
                        this._prevFocusedCell = null;
                        this._prevSelectedCells = null
                    }
                    var _proto = CellsSelectionState.prototype;
                    _proto.setFocusedCell = function(rowIndex, columnIndex, isAllDay) {
                        if (rowIndex >= 0) {
                            const cell = this._viewDataProvider.getCellData(rowIndex, columnIndex, isAllDay);
                            this._focusedCell = cell
                        }
                    };
                    _proto.setSelectedCells = function(lastCellCoordinates) {
                        let firstCellCoordinates = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : void 0;
                        const viewDataProvider = this._viewDataProvider;
                        const {
                            rowIndex: lastRowIndex,
                            columnIndex: lastColumnIndex,
                            allDay: isLastCellAllDay
                        } = lastCellCoordinates;
                        if (lastRowIndex < 0) {
                            return
                        }
                        const firstCell = firstCellCoordinates ? viewDataProvider.getCellData(firstCellCoordinates.rowIndex, firstCellCoordinates.columnIndex, firstCellCoordinates.allDay) : this._firstSelectedCell;
                        const lastCell = viewDataProvider.getCellData(lastRowIndex, lastColumnIndex, isLastCellAllDay);
                        this._firstSelectedCell = firstCell;
                        this._selectedCells = this._viewDataProvider.getCellsBetween(firstCell, lastCell)
                    };
                    _proto.setSelectedCellsByData = function(selectedCellsData) {
                        this._selectedCells = selectedCellsData
                    };
                    _proto.getSelectedCells = function() {
                        return this._selectedCells
                    };
                    _proto.releaseSelectedAndFocusedCells = function() {
                        this.releaseSelectedCells();
                        this.releaseFocusedCell()
                    };
                    _proto.releaseSelectedCells = function() {
                        this._prevSelectedCells = this._selectedCells;
                        this._prevFirstSelectedCell = this._firstSelectedCell;
                        this._selectedCells = null;
                        this._firstSelectedCell = null
                    };
                    _proto.releaseFocusedCell = function() {
                        this._prevFocusedCell = this._focusedCell;
                        this._focusedCell = null
                    };
                    _proto.restoreSelectedAndFocusedCells = function() {
                        this._selectedCells = this._selectedCells || this._prevSelectedCells;
                        this._focusedCell = this._focusedCell || this._prevFocusedCell;
                        this._firstSelectedCell = this._firstSelectedCell || this._prevFirstSelectedCell;
                        this._prevSelectedCells = null;
                        this._prevFirstSelectedCell = null;
                        this._prevFocusedCell = null
                    };
                    _proto.clearSelectedAndFocusedCells = function() {
                        this._prevSelectedCells = null;
                        this._selectedCells = null;
                        this._prevFocusedCell = null;
                        this._focusedCell = null
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(CellsSelectionState, [{
                        key: "viewDataProvider",
                        get: function() {
                            return this._viewDataProvider
                        }
                    }, {
                        key: "focusedCell",
                        get: function() {
                            const focusedCell = this._focusedCell;
                            if (!focusedCell) {
                                return
                            }
                            const {
                                groupIndex: groupIndex,
                                startDate: startDate,
                                allDay: allDay
                            } = focusedCell;
                            const cellInfo = {
                                groupIndex: groupIndex,
                                startDate: startDate,
                                isAllDay: allDay,
                                index: focusedCell.index
                            };
                            const cellPosition = this.viewDataProvider.findCellPositionInMap(cellInfo);
                            return {
                                coordinates: cellPosition,
                                cellData: focusedCell
                            }
                        }
                    }]);
                    return CellsSelectionState
                }();
                exports.default = CellsSelectionState
            },
        92297:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_timeline.js ***!
              \*******************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 99393));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 20576);
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 91198));
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _position = __webpack_require__( /*! ../../../core/utils/position */ 37518);
                var _size = __webpack_require__( /*! ../../../core/utils/size */ 58664);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 58201);
                var _base = __webpack_require__( /*! ../../../renovation/ui/scheduler/view_model/to_test/views/utils/base */ 45985);
                var _timeline_week = __webpack_require__( /*! ../../../renovation/ui/scheduler/view_model/to_test/views/utils/timeline_week */ 92956);
                var _layout = _interopRequireDefault(__webpack_require__( /*! ../../../renovation/ui/scheduler/workspaces/timeline/header_panel/layout.j */ 8262));
                var _m_classes = __webpack_require__( /*! ../m_classes */ 43600);
                var _m_table_creator = _interopRequireDefault(__webpack_require__( /*! ../m_table_creator */ 82215));
                var _m_utils_time_zone = _interopRequireDefault(__webpack_require__( /*! ../m_utils_time_zone */ 57880));
                var _m_current_time_shader_horizontal = _interopRequireDefault(__webpack_require__( /*! ../shaders/m_current_time_shader_horizontal */ 65295));
                var _m_work_space_indicator = _interopRequireDefault(__webpack_require__( /*! ./m_work_space_indicator */ 34623));

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const {
                    tableCreator: tableCreator
                } = _m_table_creator.default;
                const toMs = _date.default.dateToMilliseconds;
                let SchedulerTimeline = function(_SchedulerWorkSpace) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(SchedulerTimeline, _SchedulerWorkSpace);

                    function SchedulerTimeline() {
                        var _this;
                        _this = _SchedulerWorkSpace.apply(this, arguments) || this;
                        _this.viewDirection = "horizontal";
                        return _this
                    }
                    var _proto = SchedulerTimeline.prototype;
                    _proto.getGroupTableWidth = function() {
                        return this._$sidebarTable ? (0, _size.getOuterWidth)(this._$sidebarTable) : 0
                    };
                    _proto._getTotalRowCount = function(groupCount) {
                        if (this._isHorizontalGroupedWorkSpace()) {
                            return this._getRowCount()
                        }
                        groupCount = groupCount || 1;
                        return this._getRowCount() * groupCount
                    };
                    _proto._getFormat = function() {
                        return "shorttime"
                    };
                    _proto._getWorkSpaceHeight = function() {
                        if (this.option("crossScrollingEnabled") && (0, _window.hasWindow)()) {
                            return (0, _position.getBoundingRect)(this._$dateTable.get(0)).height
                        }
                        return (0, _position.getBoundingRect)(this.$element().get(0)).height
                    };
                    _proto._dateTableScrollableConfig = function() {
                        const config = _SchedulerWorkSpace.prototype._dateTableScrollableConfig.call(this);
                        const timelineConfig = {
                            direction: "horizontal"
                        };
                        return this.option("crossScrollingEnabled") ? config : (0, _extend.extend)(config, timelineConfig)
                    };
                    _proto._needCreateCrossScrolling = function() {
                        return true
                    };
                    _proto._headerScrollableConfig = function() {
                        const config = _SchedulerWorkSpace.prototype._headerScrollableConfig.call(this);
                        return (0, _extend.extend)(config, {
                            scrollByContent: true
                        })
                    };
                    _proto.supportAllDayRow = function() {
                        return false
                    };
                    _proto._getGroupHeaderContainer = function() {
                        if (this._isHorizontalGroupedWorkSpace()) {
                            return this._$thead
                        }
                        return this._$sidebarTable
                    };
                    _proto._insertAllDayRowsIntoDateTable = function() {
                        return false
                    };
                    _proto._needRenderWeekHeader = function() {
                        return false
                    };
                    _proto._incrementDate = function(date) {
                        date.setDate(date.getDate() + 1)
                    };
                    _proto.getIndicationCellCount = function() {
                        const timeDiff = this._getTimeDiff();
                        return this._calculateDurationInCells(timeDiff)
                    };
                    _proto._getTimeDiff = function() {
                        let today = this._getToday();
                        const date = this._getIndicationFirstViewDate();
                        const startViewDate = this.getStartViewDate();
                        const dayLightOffset = _m_utils_time_zone.default.getDaylightOffsetInMs(startViewDate, today);
                        if (dayLightOffset) {
                            today = new Date(today.getTime() + dayLightOffset)
                        }
                        return today.getTime() - date.getTime()
                    };
                    _proto._calculateDurationInCells = function(timeDiff) {
                        const today = this._getToday();
                        const differenceInDays = Math.floor(timeDiff / toMs("day"));
                        let duration = (timeDiff - differenceInDays * toMs("day") - this.option("startDayHour") * toMs("hour")) / this.getCellDuration();
                        if (today.getHours() > this.option("endDayHour")) {
                            duration = this._getCellCountInDay()
                        }
                        if (duration < 0) {
                            duration = 0
                        }
                        return differenceInDays * this._getCellCountInDay() + duration
                    };
                    _proto.getIndicationWidth = function() {
                        if (this.isGroupedByDate()) {
                            const cellCount = this.getIndicationCellCount();
                            const integerPart = Math.floor(cellCount);
                            const fractionPart = cellCount - integerPart;
                            return this.getCellWidth() * (integerPart * this._getGroupCount() + fractionPart)
                        }
                        return this.getIndicationCellCount() * this.getCellWidth()
                    };
                    _proto._isVerticalShader = function() {
                        return false
                    };
                    _proto._isCurrentTimeHeaderCell = function() {
                        return false
                    };
                    _proto._setTableSizes = function() {
                        _SchedulerWorkSpace.prototype._setTableSizes.call(this);
                        const minHeight = this._getWorkSpaceMinHeight();
                        (0, _size.setHeight)(this._$sidebarTable, minHeight);
                        (0, _size.setHeight)(this._$dateTable, minHeight);
                        this.virtualScrollingDispatcher.updateDimensions()
                    };
                    _proto._getWorkSpaceMinHeight = function() {
                        let minHeight = this._getWorkSpaceHeight();
                        const workspaceContainerHeight = (0, _size.getOuterHeight)(this._$flexContainer, true);
                        if (minHeight < workspaceContainerHeight) {
                            minHeight = workspaceContainerHeight
                        }
                        return minHeight
                    };
                    _proto._getCellCoordinatesByIndex = function(index) {
                        return {
                            columnIndex: index % this._getCellCount(),
                            rowIndex: 0
                        }
                    };
                    _proto._getCellByCoordinates = function(cellCoordinates, groupIndex) {
                        const indexes = this._groupedStrategy.prepareCellIndexes(cellCoordinates, groupIndex);
                        return this._$dateTable.find("tr").eq(indexes.rowIndex).find("td").eq(indexes.columnIndex)
                    };
                    _proto._getWorkSpaceWidth = function() {
                        return (0, _size.getOuterWidth)(this._$dateTable, true)
                    };
                    _proto._getIndicationFirstViewDate = function() {
                        return _date.default.trimTime(new Date(this.getStartViewDate()))
                    };
                    _proto._getIntervalBetween = function(currentDate, allDay) {
                        const startDayHour = this.option("startDayHour");
                        const endDayHour = this.option("endDayHour");
                        const firstViewDate = this.getStartViewDate();
                        const firstViewDateTime = firstViewDate.getTime();
                        const hiddenInterval = (24 - endDayHour + startDayHour) * toMs("hour");
                        const timeZoneOffset = _date.default.getTimezonesDifference(firstViewDate, currentDate);
                        const apptStart = currentDate.getTime();
                        const fullInterval = apptStart - firstViewDateTime - timeZoneOffset;
                        const fullDays = Math.floor(fullInterval / toMs("day"));
                        const tailDuration = fullInterval - fullDays * toMs("day");
                        let tailDelta = 0;
                        const cellCount = this._getCellCountInDay() * (fullDays - this._getWeekendsCount(fullDays));
                        const gapBeforeAppt = apptStart - _date.default.trimTime(new Date(currentDate)).getTime();
                        let result = cellCount * this.option("hoursInterval") * toMs("hour");
                        if (!allDay) {
                            if (currentDate.getHours() < startDayHour) {
                                tailDelta = tailDuration - hiddenInterval + gapBeforeAppt
                            } else if (currentDate.getHours() >= startDayHour && currentDate.getHours() < endDayHour) {
                                tailDelta = tailDuration
                            } else if (currentDate.getHours() >= startDayHour && currentDate.getHours() >= endDayHour) {
                                tailDelta = tailDuration - (gapBeforeAppt - endDayHour * toMs("hour"))
                            } else if (!fullDays) {
                                result = fullInterval
                            }
                            result += tailDelta
                        }
                        return result
                    };
                    _proto._getWeekendsCount = function(argument) {
                        return 0
                    };
                    _proto.getAllDayContainer = function() {
                        return null
                    };
                    _proto.getTimePanelWidth = function() {
                        return 0
                    };
                    _proto.getIntervalDuration = function(allDay) {
                        return this.getCellDuration()
                    };
                    _proto.getCellMinWidth = function() {
                        return 0
                    };
                    _proto.getWorkSpaceLeftOffset = function() {
                        return 0
                    };
                    _proto.scrollToTime = function(hours, minutes, date) {
                        const coordinates = this._getScrollCoordinates(hours, minutes, date);
                        const scrollable = this.getScrollable();
                        const offset = this.option("rtlEnabled") ? (0, _position.getBoundingRect)(this.getScrollableContainer().get(0)).width : 0;
                        if (this.option("templatesRenderAsynchronously")) {
                            setTimeout(() => {
                                scrollable.scrollBy({
                                    left: coordinates.left - scrollable.scrollLeft() - offset,
                                    top: 0
                                })
                            })
                        } else {
                            scrollable.scrollBy({
                                left: coordinates.left - scrollable.scrollLeft() - offset,
                                top: 0
                            })
                        }
                    };
                    _proto.renderRAllDayPanel = function() {};
                    _proto.renderRTimeTable = function() {};
                    _proto._renderGroupAllDayPanel = function() {};
                    _proto.generateRenderOptions = function(argument) {
                        const options = _SchedulerWorkSpace.prototype.generateRenderOptions.call(this, true);
                        return _extends(_extends({}, options), {
                            isGenerateWeekDaysHeaderData: this._needRenderWeekHeader(),
                            getDateForHeaderText: _timeline_week.getDateForHeaderText
                        })
                    };
                    _proto._init = function() {
                        _SchedulerWorkSpace.prototype._init.call(this);
                        this.$element().addClass("dx-scheduler-timeline");
                        this._$sidebarTable = (0, _renderer.default)("<div>").addClass("dx-scheduler-group-table")
                    };
                    _proto._getDefaultGroupStrategy = function() {
                        return "vertical"
                    };
                    _proto._toggleGroupingDirectionClass = function() {
                        this.$element().toggleClass("dx-scheduler-work-space-horizontal-grouped", this._isHorizontalGroupedWorkSpace())
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_SchedulerWorkSpace.prototype._getDefaultOptions.call(this), {
                            groupOrientation: "vertical"
                        })
                    };
                    _proto._createWorkSpaceElements = function() {
                        this._createWorkSpaceScrollableElements()
                    };
                    _proto._toggleAllDayVisibility = function() {
                        return (0, _common.noop)()
                    };
                    _proto._changeAllDayVisibility = function() {
                        return (0, _common.noop)()
                    };
                    _proto._getDateHeaderTemplate = function() {
                        return this.option("timeCellTemplate")
                    };
                    _proto._renderView = function() {
                        let groupCellTemplates;
                        if (!this.isRenovatedRender()) {
                            groupCellTemplates = this._renderGroupHeader()
                        }
                        this.renderWorkSpace();
                        if (this.isRenovatedRender()) {
                            this.virtualScrollingDispatcher.updateDimensions()
                        }
                        this._shader = new _m_current_time_shader_horizontal.default(this);
                        this._$sidebarTable.appendTo(this._sidebarScrollable.$content());
                        if (this.isRenovatedRender() && this._isVerticalGroupedWorkSpace()) {
                            this.renderRGroupPanel()
                        }
                        this.updateHeaderEmptyCellWidth();
                        this._applyCellTemplates(groupCellTemplates)
                    };
                    _proto._setHorizontalGroupHeaderCellsHeight = function() {
                        return (0, _common.noop)()
                    };
                    _proto._getTimePanelCells = function() {
                        return this.$element().find(".".concat("dx-scheduler-header-panel-cell", ":not(.").concat("dx-scheduler-header-panel-week-cell", ")"))
                    };
                    _proto._getCurrentTimePanelCellIndices = function() {
                        const columnCountPerGroup = this._getCellCount();
                        const today = this._getToday();
                        const index = this.getCellIndexByDate(today);
                        const {
                            columnIndex: currentTimeColumnIndex
                        } = this._getCellCoordinatesByIndex(index);
                        if (void 0 === currentTimeColumnIndex) {
                            return []
                        }
                        const horizontalGroupCount = this._isHorizontalGroupedWorkSpace() && !this.isGroupedByDate() ? this._getGroupCount() : 1;
                        return [...new Array(horizontalGroupCount)].map((_, groupIndex) => columnCountPerGroup * groupIndex + currentTimeColumnIndex)
                    };
                    _proto._renderTimePanel = function() {
                        return (0, _common.noop)()
                    };
                    _proto._renderAllDayPanel = function() {
                        return (0, _common.noop)()
                    };
                    _proto._createAllDayPanelElements = function() {
                        return (0, _common.noop)()
                    };
                    _proto._renderDateHeader = function() {
                        const $headerRow = _SchedulerWorkSpace.prototype._renderDateHeader.call(this);
                        if (this._needRenderWeekHeader()) {
                            const firstViewDate = new Date(this.getStartViewDate());
                            let currentDate = new Date(firstViewDate);
                            const $cells = [];
                            const groupCount = this._getGroupCount();
                            const cellCountInDay = this._getCellCountInDay();
                            const colSpan = this.isGroupedByDate() ? cellCountInDay * groupCount : cellCountInDay;
                            const cellTemplate = this.option("dateCellTemplate");
                            const horizontalGroupCount = this._isHorizontalGroupedWorkSpace() && !this.isGroupedByDate() ? groupCount : 1;
                            const cellsInGroup = this.viewDataProvider.viewDataGenerator.daysInInterval * this.option("intervalCount");
                            const cellsCount = cellsInGroup * horizontalGroupCount;
                            for (let templateIndex = 0; templateIndex < cellsCount; templateIndex++) {
                                const $th = (0, _renderer.default)("<th>");
                                const text = (0, _base.formatWeekdayAndDay)(currentDate);
                                if (cellTemplate) {
                                    const templateOptions = {
                                        model: _extends({
                                            text: text,
                                            date: new Date(currentDate)
                                        }, this._getGroupsForDateHeaderTemplate(templateIndex, colSpan)),
                                        container: $th,
                                        index: templateIndex
                                    };
                                    cellTemplate.render(templateOptions)
                                } else {
                                    $th.text(text)
                                }
                                $th.addClass("dx-scheduler-header-panel-cell").addClass("dx-scheduler-header-panel-week-cell").attr("colSpan", colSpan);
                                $cells.push($th);
                                if (templateIndex % cellsInGroup === cellsInGroup - 1) {
                                    currentDate = new Date(firstViewDate)
                                } else {
                                    this._incrementDate(currentDate)
                                }
                            }
                            const $row = (0, _renderer.default)("<tr>").addClass("dx-scheduler-header-row").append($cells);
                            $headerRow.before($row)
                        }
                    };
                    _proto._renderIndicator = function(height, rtlOffset, $container, groupCount) {
                        let $indicator;
                        const width = this.getIndicationWidth();
                        if ("vertical" === this.option("groupOrientation")) {
                            $indicator = this._createIndicator($container);
                            (0, _size.setHeight)($indicator, (0, _position.getBoundingRect)($container.get(0)).height);
                            $indicator.css("left", rtlOffset ? rtlOffset - width : width)
                        } else {
                            for (let i = 0; i < groupCount; i++) {
                                const offset = this.isGroupedByDate() ? i * this.getCellWidth() : this._getCellCount() * this.getCellWidth() * i;
                                $indicator = this._createIndicator($container);
                                (0, _size.setHeight)($indicator, (0, _position.getBoundingRect)($container.get(0)).height);
                                $indicator.css("left", rtlOffset ? rtlOffset - width - offset : width + offset)
                            }
                        }
                    };
                    _proto._makeGroupRows = function(groups, groupByDate) {
                        const tableCreatorStrategy = "vertical" === this.option("groupOrientation") ? tableCreator.VERTICAL : tableCreator.HORIZONTAL;
                        return tableCreator.makeGroupedTable(tableCreatorStrategy, groups, {
                            groupRowClass: _m_classes.GROUP_ROW_CLASS,
                            groupHeaderRowClass: _m_classes.GROUP_ROW_CLASS,
                            groupHeaderClass: this._getGroupHeaderClass.bind(this),
                            groupHeaderContentClass: _m_classes.GROUP_HEADER_CONTENT_CLASS
                        }, this._getCellCount() || 1, this.option("resourceCellTemplate"), this._getTotalRowCount(this._getGroupCount()), groupByDate)
                    };
                    _proto._setCurrentTimeCells = function() {
                        const timePanelCells = this._getTimePanelCells();
                        const currentTimeCellIndices = this._getCurrentTimePanelCellIndices();
                        currentTimeCellIndices.forEach(timePanelCellIndex => {
                            timePanelCells.eq(timePanelCellIndex).addClass(_m_classes.HEADER_CURRENT_TIME_CELL_CLASS)
                        })
                    };
                    _proto._cleanCurrentTimeCells = function() {
                        this.$element().find(".".concat(_m_classes.HEADER_CURRENT_TIME_CELL_CLASS)).removeClass(_m_classes.HEADER_CURRENT_TIME_CELL_CLASS)
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(SchedulerTimeline, [{
                        key: "verticalGroupTableClass",
                        get: function() {
                            return "dx-scheduler-group-table"
                        }
                    }, {
                        key: "renovatedHeaderPanelComponent",
                        get: function() {
                            return _layout.default
                        }
                    }]);
                    return SchedulerTimeline
                }(_m_work_space_indicator.default);
                (0, _component_registrator.default)("dxSchedulerTimeline", SchedulerTimeline);
                var _default = SchedulerTimeline;
                exports.default = _default
            },
        10356:
            /*!***********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_timeline_day.js ***!
              \***********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 99393));
                var _m_constants = __webpack_require__( /*! ../m_constants */ 6324);
                var _m_timeline = _interopRequireDefault(__webpack_require__( /*! ./m_timeline */ 92297));

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

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let SchedulerTimelineDay = function(_SchedulerTimeline) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(SchedulerTimelineDay, _SchedulerTimeline);

                    function SchedulerTimelineDay() {
                        return _SchedulerTimeline.apply(this, arguments) || this
                    }
                    var _proto = SchedulerTimelineDay.prototype;
                    _proto._getElementClass = function() {
                        return "dx-scheduler-timeline-day"
                    };
                    _proto._needRenderWeekHeader = function() {
                        return this._isWorkSpaceWithCount()
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(SchedulerTimelineDay, [{
                        key: "type",
                        get: function() {
                            return _m_constants.VIEWS.TIMELINE_DAY
                        }
                    }]);
                    return SchedulerTimelineDay
                }(_m_timeline.default);
                (0, _component_registrator.default)("dxSchedulerTimelineDay", SchedulerTimelineDay);
                var _default = SchedulerTimelineDay;
                exports.default = _default
            },
        91274:
            /*!*************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_timeline_month.js ***!
              \*************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 99393));
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 91198));
                var _base = __webpack_require__( /*! ../../../renovation/ui/scheduler/view_model/to_test/views/utils/base */ 45985);
                var _month = __webpack_require__( /*! ../../../renovation/ui/scheduler/view_model/to_test/views/utils/month */ 19097);
                var _layout = _interopRequireDefault(__webpack_require__( /*! ../../../renovation/ui/scheduler/workspaces/base/header_panel/layout.j */ 32972));
                var _m_constants = __webpack_require__( /*! ../m_constants */ 6324);
                var _m_timeline = _interopRequireDefault(__webpack_require__( /*! ./m_timeline */ 92297));

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let SchedulerTimelineMonth = function(_SchedulerTimeline) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(SchedulerTimelineMonth, _SchedulerTimeline);

                    function SchedulerTimelineMonth() {
                        var _this;
                        _this = _SchedulerTimeline.apply(this, arguments) || this;
                        _this.viewDirection = "horizontal";
                        return _this
                    }
                    var _proto = SchedulerTimelineMonth.prototype;
                    _proto._renderView = function() {
                        _SchedulerTimeline.prototype._renderView.call(this);
                        this._updateScrollable()
                    };
                    _proto._getElementClass = function() {
                        return "dx-scheduler-timeline-month"
                    };
                    _proto._getDateHeaderTemplate = function() {
                        return this.option("dateCellTemplate")
                    };
                    _proto._calculateDurationInCells = function(timeDiff) {
                        return timeDiff / this.getCellDuration()
                    };
                    _proto.isIndicatorVisible = function() {
                        return true
                    };
                    _proto._getFormat = function() {
                        return _base.formatWeekdayAndDay
                    };
                    _proto._getIntervalBetween = function(currentDate) {
                        const firstViewDate = this.getStartViewDate();
                        const timeZoneOffset = _date.default.getTimezonesDifference(firstViewDate, currentDate);
                        return currentDate.getTime() - (firstViewDate.getTime() - 36e5 * this.option("startDayHour")) - timeZoneOffset
                    };
                    _proto._getViewStartByOptions = function() {
                        return (0, _month.getViewStartByOptions)(this.option("startDate"), this.option("currentDate"), this.option("intervalCount"), _date.default.getFirstMonthDate(this.option("startDate")))
                    };
                    _proto.generateRenderOptions = function() {
                        const options = _SchedulerTimeline.prototype.generateRenderOptions.call(this, true);
                        return _extends(_extends({}, options), {
                            getDateForHeaderText: (_, date) => date
                        })
                    };
                    _proto.keepOriginalHours = function() {
                        return true
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(SchedulerTimelineMonth, [{
                        key: "type",
                        get: function() {
                            return _m_constants.VIEWS.TIMELINE_MONTH
                        }
                    }, {
                        key: "renovatedHeaderPanelComponent",
                        get: function() {
                            return _layout.default
                        }
                    }]);
                    return SchedulerTimelineMonth
                }(_m_timeline.default);
                (0, _component_registrator.default)("dxSchedulerTimelineMonth", SchedulerTimelineMonth);
                var _default = SchedulerTimelineMonth;
                exports.default = _default
            },
        32414:
            /*!************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_timeline_week.js ***!
              \************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 99393));
                var _position = __webpack_require__( /*! ../../../core/utils/position */ 37518);
                var _m_constants = __webpack_require__( /*! ../m_constants */ 6324);
                var _m_timeline = _interopRequireDefault(__webpack_require__( /*! ./m_timeline */ 92297));

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

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let SchedulerTimelineWeek = function(_SchedulerTimeline) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(SchedulerTimelineWeek, _SchedulerTimeline);

                    function SchedulerTimelineWeek() {
                        return _SchedulerTimeline.apply(this, arguments) || this
                    }
                    var _proto = SchedulerTimelineWeek.prototype;
                    _proto._getElementClass = function() {
                        return "dx-scheduler-timeline-week"
                    };
                    _proto._getHeaderPanelCellWidth = function($headerRow) {
                        return (0, _position.getBoundingRect)($headerRow.children().first().get(0)).width
                    };
                    _proto._needRenderWeekHeader = function() {
                        return true
                    };
                    _proto._incrementDate = function(date) {
                        date.setDate(date.getDate() + 1)
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(SchedulerTimelineWeek, [{
                        key: "type",
                        get: function() {
                            return _m_constants.VIEWS.TIMELINE_WEEK
                        }
                    }]);
                    return SchedulerTimelineWeek
                }(_m_timeline.default);
                exports.default = SchedulerTimelineWeek;
                (0, _component_registrator.default)("dxSchedulerTimelineWeek", SchedulerTimelineWeek)
            },
        23855:
            /*!*****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_timeline_work_week.js ***!
              \*****************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 99393));
                var _work_week = __webpack_require__( /*! ../../../renovation/ui/scheduler/view_model/to_test/views/utils/work_week */ 83866);
                var _m_constants = __webpack_require__( /*! ../m_constants */ 6324);
                var _m_timeline_week = _interopRequireDefault(__webpack_require__( /*! ./m_timeline_week */ 32414));

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

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let SchedulerTimelineWorkWeek = function(_SchedulerTimelineWee) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(SchedulerTimelineWorkWeek, _SchedulerTimelineWee);

                    function SchedulerTimelineWorkWeek() {
                        var _this;
                        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
                            args[_key] = arguments[_key]
                        }
                        _this = _SchedulerTimelineWee.call(this, ...args) || this;
                        _this._getWeekendsCount = _work_week.getWeekendsCount;
                        return _this
                    }
                    var _proto = SchedulerTimelineWorkWeek.prototype;
                    _proto._getElementClass = function() {
                        return "dx-scheduler-timeline-work-week"
                    };
                    _proto._incrementDate = function(date) {
                        const day = date.getDay();
                        if (5 === day) {
                            date.setDate(date.getDate() + 2)
                        }
                        _SchedulerTimelineWee.prototype._incrementDate.call(this, date)
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(SchedulerTimelineWorkWeek, [{
                        key: "type",
                        get: function() {
                            return _m_constants.VIEWS.TIMELINE_WORK_WEEK
                        }
                    }]);
                    return SchedulerTimelineWorkWeek
                }(_m_timeline_week.default);
                (0, _component_registrator.default)("dxSchedulerTimelineWorkWeek", SchedulerTimelineWorkWeek);
                var _default = SchedulerTimelineWorkWeek;
                exports.default = _default
            },
        33350:
            /*!****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_virtual_scrolling.js ***!
              \****************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.VirtualScrollingRenderer = exports.VirtualScrollingDispatcher = void 0;
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 73349));
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 58201);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../events/core/events_engine */ 55994));
                var _index = __webpack_require__( /*! ../../../events/utils/index */ 39611);

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

                function _inheritsLoose(subClass, superClass) {
                    subClass.prototype = Object.create(superClass.prototype);
                    subClass.prototype.constructor = subClass;
                    _setPrototypeOf(subClass, superClass)
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _createClass(Constructor, protoProps, staticProps) {
                    if (protoProps) {
                        _defineProperties(Constructor.prototype, protoProps)
                    }
                    if (staticProps) {
                        _defineProperties(Constructor, staticProps)
                    }
                    Object.defineProperty(Constructor, "prototype", {
                        writable: false
                    });
                    return Constructor
                }
                const DOCUMENT_SCROLL_EVENT_NAMESPACE = (0, _index.addNamespace)("scroll", "dxSchedulerVirtualScrolling");
                const scrollingOrientations_vertical = "vertical",
                    scrollingOrientations_horizontal = "horizontal",
                    scrollingOrientations_both = "both",
                    scrollingOrientations_none = "none";
                const DefaultScrollingOrientation = scrollingOrientations_both;
                let VirtualScrollingDispatcher = function() {
                    function VirtualScrollingDispatcher(options) {
                        this.options = options;
                        if (options) {
                            this._rowHeight = this.getCellHeight();
                            this._cellWidth = this.getCellWidth();
                            this._createVirtualScrollingBase()
                        }
                    }
                    var _proto = VirtualScrollingDispatcher.prototype;
                    _proto.setViewOptions = function(options) {
                        this.options = options;
                        if (this.verticalVirtualScrolling) {
                            this.verticalVirtualScrolling.options = options;
                            this.verticalVirtualScrolling.itemSize = this.rowHeight;
                            this.verticalVirtualScrolling.viewportSize = this.viewportHeight
                        }
                        if (this.horizontalVirtualScrolling) {
                            this.horizontalVirtualScrolling.options = options;
                            this.verticalVirtualScrolling.itemSize = this.cellWidth;
                            this.verticalVirtualScrolling.viewportSize = this.viewportWidth
                        }
                    };
                    _proto.getRenderState = function() {
                        var _a, _b;
                        const verticalRenderState = (null === (_a = this.verticalVirtualScrolling) || void 0 === _a ? void 0 : _a.getRenderState()) || {};
                        const horizontalRenderState = (null === (_b = this.horizontalVirtualScrolling) || void 0 === _b ? void 0 : _b.getRenderState()) || {};
                        return _extends(_extends({}, verticalRenderState), horizontalRenderState)
                    };
                    _proto.getCellHeight = function() {
                        const cellHeight = this.options.getCellHeight();
                        const result = cellHeight > 0 ? cellHeight : 50;
                        return Math.floor(result)
                    };
                    _proto.getCellWidth = function() {
                        let cellWidth = this.options.getCellWidth();
                        const minCellWidth = this.options.getCellMinWidth();
                        if (!cellWidth || cellWidth < minCellWidth) {
                            cellWidth = minCellWidth
                        }
                        const result = cellWidth > 0 ? cellWidth : 1;
                        return Math.floor(result)
                    };
                    _proto.calculateCoordinatesByDataAndPosition = function(cellData, position, date, isCalculateTime, isVerticalDirectionView) {
                        const {
                            rowIndex: rowIndex,
                            columnIndex: columnIndex
                        } = position;
                        const {
                            startDate: startDate,
                            endDate: endDate,
                            allDay: allDay
                        } = cellData;
                        const timeToScroll = date.getTime();
                        const cellStartTime = startDate.getTime();
                        const cellEndTime = endDate.getTime();
                        const scrollInCell = allDay || !isCalculateTime ? 0 : (timeToScroll - cellStartTime) / (cellEndTime - cellStartTime);
                        const cellWidth = this.getCellWidth();
                        const rowHeight = this.getCellHeight();
                        const top = isVerticalDirectionView ? (rowIndex + scrollInCell) * rowHeight : rowIndex * rowHeight;
                        let left = isVerticalDirectionView ? columnIndex * cellWidth : (columnIndex + scrollInCell) * cellWidth;
                        if (this.isRTL) {
                            left = this.options.getScrollableOuterWidth() - left
                        }
                        return {
                            top: top,
                            left: left
                        }
                    };
                    _proto.dispose = function() {
                        if (this._onScrollHandler) {
                            _events_engine.default.off(this.document, DOCUMENT_SCROLL_EVENT_NAMESPACE, this._onScrollHandler)
                        }
                    };
                    _proto.createVirtualScrolling = function() {
                        const isVerticalVirtualScrollingCreated = !!this.verticalVirtualScrolling;
                        const isHorizontalVirtualScrollingCreated = !!this.horizontalVirtualScrolling;
                        if (this.verticalScrollingAllowed !== isVerticalVirtualScrollingCreated || this.horizontalScrollingAllowed !== isHorizontalVirtualScrollingCreated) {
                            this._rowHeight = this.getCellHeight();
                            this._cellWidth = this.getCellWidth();
                            this._createVirtualScrollingBase()
                        }
                    };
                    _proto._createVirtualScrollingBase = function() {
                        if (this.verticalScrollingAllowed) {
                            this.verticalVirtualScrolling = new VerticalVirtualScrolling(_extends(_extends({}, this.options), {
                                viewportHeight: this.viewportHeight,
                                rowHeight: this.rowHeight,
                                outlineCount: this.outlineCount
                            }))
                        }
                        if (this.horizontalScrollingAllowed) {
                            this.horizontalVirtualScrolling = new HorizontalVirtualScrolling(_extends(_extends({}, this.options), {
                                viewportWidth: this.viewportWidth,
                                cellWidth: this.cellWidth,
                                outlineCount: this.outlineCount
                            }))
                        }
                    };
                    _proto.isAttachWindowScrollEvent = function() {
                        return (this.horizontalScrollingAllowed || this.verticalScrollingAllowed) && !this.height
                    };
                    _proto.attachScrollableEvents = function() {
                        if (this.isAttachWindowScrollEvent()) {
                            this._attachWindowScroll()
                        }
                    };
                    _proto._attachWindowScroll = function() {
                        const window = (0, _window.getWindow)();
                        this._onScrollHandler = this.options.createAction(() => {
                            const {
                                scrollX: scrollX,
                                scrollY: scrollY
                            } = window;
                            if (scrollX >= 10 || scrollY >= 10) {
                                this.handleOnScrollEvent({
                                    left: scrollX,
                                    top: scrollY
                                })
                            }
                        });
                        _events_engine.default.on(this.document, DOCUMENT_SCROLL_EVENT_NAMESPACE, this._onScrollHandler)
                    };
                    _proto.handleOnScrollEvent = function(scrollPosition) {
                        var _a, _b, _c, _d;
                        if (scrollPosition) {
                            const {
                                left: left,
                                top: top
                            } = scrollPosition;
                            const verticalStateChanged = (0, _type.isDefined)(top) && (null === (_a = this.verticalVirtualScrolling) || void 0 === _a ? void 0 : _a.updateState(top));
                            const horizontalStateChanged = (0, _type.isDefined)(left) && (null === (_b = this.horizontalVirtualScrolling) || void 0 === _b ? void 0 : _b.updateState(left));
                            if (verticalStateChanged || horizontalStateChanged) {
                                null === (_d = (_c = this.options).updateRender) || void 0 === _d ? void 0 : _d.call(_c)
                            }
                        }
                    };
                    _proto.updateDimensions = function(isForce) {
                        var _a, _b;
                        const cellHeight = this.getCellHeight();
                        const needUpdateVertical = this.verticalScrollingAllowed && cellHeight !== this.rowHeight;
                        if ((needUpdateVertical || isForce) && this.verticalVirtualScrolling) {
                            this.rowHeight = cellHeight;
                            this.verticalVirtualScrolling.viewportSize = this.viewportHeight;
                            this.verticalVirtualScrolling.reinitState(cellHeight, isForce)
                        }
                        const cellWidth = this.getCellWidth();
                        const needUpdateHorizontal = this.horizontalScrollingAllowed && cellWidth !== this.cellWidth;
                        if ((needUpdateHorizontal || isForce) && this.horizontalVirtualScrolling) {
                            this.cellWidth = cellWidth;
                            this.horizontalVirtualScrolling.viewportSize = this.viewportWidth;
                            this.horizontalVirtualScrolling.reinitState(cellWidth, isForce)
                        }
                        if (needUpdateVertical || needUpdateHorizontal) {
                            null === (_b = (_a = this.options).updateGrid) || void 0 === _b ? void 0 : _b.call(_a)
                        }
                    };
                    _createClass(VirtualScrollingDispatcher, [{
                        key: "isRTL",
                        get: function() {
                            return this.options.isRTL()
                        }
                    }, {
                        key: "verticalVirtualScrolling",
                        get: function() {
                            return this._verticalVirtualScrolling
                        },
                        set: function(value) {
                            this._verticalVirtualScrolling = value
                        }
                    }, {
                        key: "horizontalVirtualScrolling",
                        get: function() {
                            return this._horizontalVirtualScrolling
                        },
                        set: function(value) {
                            this._horizontalVirtualScrolling = value
                        }
                    }, {
                        key: "document",
                        get: function() {
                            return _dom_adapter.default.getDocument()
                        }
                    }, {
                        key: "height",
                        get: function() {
                            return this.options.getSchedulerHeight()
                        }
                    }, {
                        key: "width",
                        get: function() {
                            return this.options.getSchedulerWidth()
                        }
                    }, {
                        key: "rowHeight",
                        get: function() {
                            return this._rowHeight
                        },
                        set: function(value) {
                            this._rowHeight = value
                        }
                    }, {
                        key: "outlineCount",
                        get: function() {
                            return this.options.getScrolling().outlineCount
                        }
                    }, {
                        key: "cellWidth",
                        get: function() {
                            return this._cellWidth
                        },
                        set: function(value) {
                            this._cellWidth = value
                        }
                    }, {
                        key: "viewportWidth",
                        get: function() {
                            const width = this.width && this.options.getViewWidth();
                            return width > 0 ? width : this.options.getWindowWidth()
                        }
                    }, {
                        key: "viewportHeight",
                        get: function() {
                            const height = this.height && this.options.getViewHeight();
                            return height > 0 ? height : this.options.getWindowHeight()
                        }
                    }, {
                        key: "cellCountInsideTopVirtualRow",
                        get: function() {
                            var _a;
                            return (null === (_a = this.verticalScrollingState) || void 0 === _a ? void 0 : _a.virtualItemCountBefore) || 0
                        }
                    }, {
                        key: "cellCountInsideLeftVirtualCell",
                        get: function() {
                            var _a;
                            return (null === (_a = this.horizontalScrollingState) || void 0 === _a ? void 0 : _a.virtualItemCountBefore) || 0
                        }
                    }, {
                        key: "cellCountInsideRightVirtualCell",
                        get: function() {
                            var _a;
                            return (null === (_a = this.horizontalScrollingState) || void 0 === _a ? void 0 : _a.virtualItemCountAfter) || 0
                        }
                    }, {
                        key: "topVirtualRowsCount",
                        get: function() {
                            return this.cellCountInsideTopVirtualRow > 0 ? 1 : 0
                        }
                    }, {
                        key: "leftVirtualCellsCount",
                        get: function() {
                            const virtualItemsCount = !this.isRTL ? this.cellCountInsideLeftVirtualCell : this.cellCountInsideRightVirtualCell;
                            return virtualItemsCount > 0 ? 1 : 0
                        }
                    }, {
                        key: "virtualRowOffset",
                        get: function() {
                            var _a;
                            return (null === (_a = this.verticalScrollingState) || void 0 === _a ? void 0 : _a.virtualItemSizeBefore) || 0
                        }
                    }, {
                        key: "virtualCellOffset",
                        get: function() {
                            var _a;
                            return (null === (_a = this.horizontalScrollingState) || void 0 === _a ? void 0 : _a.virtualItemSizeBefore) || 0
                        }
                    }, {
                        key: "scrollingState",
                        get: function() {
                            var _a, _b;
                            return {
                                vertical: null === (_a = this.verticalVirtualScrolling) || void 0 === _a ? void 0 : _a.state,
                                horizontal: null === (_b = this.horizontalVirtualScrolling) || void 0 === _b ? void 0 : _b.state
                            }
                        }
                    }, {
                        key: "verticalScrollingState",
                        get: function() {
                            return this.scrollingState.vertical
                        }
                    }, {
                        key: "horizontalScrollingState",
                        get: function() {
                            return this.scrollingState.horizontal
                        }
                    }, {
                        key: "scrollingOrientation",
                        get: function() {
                            const scrolling = this.options.getScrolling();
                            if ("standard" === scrolling.mode) {
                                return scrollingOrientations_none
                            }
                            return scrolling.orientation || DefaultScrollingOrientation
                        }
                    }, {
                        key: "verticalScrollingAllowed",
                        get: function() {
                            return this.scrollingOrientation === scrollingOrientations_vertical || this.scrollingOrientation === scrollingOrientations_both
                        }
                    }, {
                        key: "horizontalScrollingAllowed",
                        get: function() {
                            return this.scrollingOrientation === scrollingOrientations_horizontal || this.scrollingOrientation === scrollingOrientations_both
                        }
                    }]);
                    return VirtualScrollingDispatcher
                }();
                exports.VirtualScrollingDispatcher = VirtualScrollingDispatcher;
                let VirtualScrollingBase = function() {
                    function VirtualScrollingBase(options) {
                        this.options = options;
                        this._state = this.defaultState;
                        this.viewportSize = this.options.viewportSize;
                        this._itemSize = this.options.itemSize;
                        this._position = -1;
                        this._itemSizeChanged = false;
                        this.updateState(0)
                    }
                    var _proto2 = VirtualScrollingBase.prototype;
                    _proto2.needUpdateState = function(position) {
                        const {
                            prevPosition: prevPosition,
                            startIndex: startIndex
                        } = this.state;
                        const isFirstInitialization = startIndex < 0;
                        if (isFirstInitialization) {
                            return true
                        }
                        let isStartIndexChanged = false;
                        if (this._validateAndSavePosition(position)) {
                            if (0 === position || position === this.maxScrollPosition) {
                                return true
                            }
                            const currentPosition = prevPosition;
                            const currentItemsCount = Math.floor(currentPosition / this.itemSize);
                            const itemsCount = Math.floor(position / this.itemSize);
                            isStartIndexChanged = Math.abs(currentItemsCount - itemsCount) >= this.outlineCount
                        }
                        return isStartIndexChanged
                    };
                    _proto2._validateAndSavePosition = function(position) {
                        if (!(0, _type.isDefined)(position)) {
                            return false
                        }
                        const result = this.position !== position;
                        this.position = position;
                        return result
                    };
                    _proto2._correctPosition = function(position) {
                        return position >= 0 ? Math.min(position, this.maxScrollPosition) : -1
                    };
                    _proto2.updateState = function(position, isForce) {
                        position = this._correctPosition(position);
                        if (!this.needUpdateState(position) && !isForce) {
                            return false
                        }
                        const itemsInfoBefore = this._calcItemInfoBefore(position);
                        const itemsDeltaBefore = this._calcItemDeltaBefore(itemsInfoBefore);
                        const {
                            outlineCountAfter: outlineCountAfter,
                            virtualItemCountAfter: virtualItemCountAfter,
                            itemCountWithAfter: itemCountWithAfter
                        } = this._calcItemInfoAfter(itemsDeltaBefore);
                        const {
                            virtualItemCountBefore: virtualItemCountBefore,
                            outlineCountBefore: outlineCountBefore
                        } = itemsInfoBefore;
                        const itemCount = outlineCountBefore + itemCountWithAfter + outlineCountAfter;
                        const itemCountBefore = Math.floor(position / this.itemSize);
                        this.state.prevPosition = itemCountBefore * this.itemSize;
                        this.state.startIndex = itemCountBefore - outlineCountBefore;
                        this.state.virtualItemCountBefore = virtualItemCountBefore;
                        this.state.outlineCountBefore = outlineCountBefore;
                        this.state.itemCount = itemCount;
                        this.state.outlineCountAfter = outlineCountAfter;
                        this.state.virtualItemCountAfter = virtualItemCountAfter;
                        this._updateStateCore();
                        return true
                    };
                    _proto2.reinitState = function(itemSize, isForceUpdate) {
                        const {
                            position: position
                        } = this;
                        this.itemSize = itemSize;
                        this.updateState(0, isForceUpdate);
                        if (position > 0) {
                            this.updateState(position, isForceUpdate)
                        }
                    };
                    _proto2._calcItemInfoBefore = function(position) {
                        let virtualItemCountBefore = Math.floor(position / this.itemSize);
                        const outlineCountBefore = Math.min(virtualItemCountBefore, this.outlineCount);
                        virtualItemCountBefore -= outlineCountBefore;
                        return {
                            virtualItemCountBefore: virtualItemCountBefore,
                            outlineCountBefore: outlineCountBefore
                        }
                    };
                    _proto2._calcItemDeltaBefore = function(itemInfoBefore) {
                        const {
                            virtualItemCountBefore: virtualItemCountBefore,
                            outlineCountBefore: outlineCountBefore
                        } = itemInfoBefore;
                        const totalItemCount = this.getTotalItemCount();
                        return totalItemCount - virtualItemCountBefore - outlineCountBefore
                    };
                    _proto2.getTotalItemCount = function() {
                        throw "getTotalItemCount method should be implemented"
                    };
                    _proto2.getRenderState = function() {
                        throw "getRenderState method should be implemented"
                    };
                    _proto2._calcItemInfoAfter = function(itemsDeltaBefore) {
                        const itemCountWithAfter = itemsDeltaBefore >= this.pageSize ? this.pageSize : itemsDeltaBefore;
                        let virtualItemCountAfter = itemsDeltaBefore - itemCountWithAfter;
                        const outlineCountAfter = virtualItemCountAfter > 0 ? Math.min(virtualItemCountAfter, this.outlineCount) : 0;
                        if (virtualItemCountAfter > 0) {
                            virtualItemCountAfter -= outlineCountAfter
                        }
                        return {
                            virtualItemCountAfter: virtualItemCountAfter,
                            outlineCountAfter: outlineCountAfter,
                            itemCountWithAfter: itemCountWithAfter
                        }
                    };
                    _proto2._updateStateCore = function() {
                        const {
                            state: state
                        } = this;
                        const {
                            virtualItemCountBefore: virtualItemCountBefore
                        } = state;
                        const {
                            virtualItemCountAfter: virtualItemCountAfter
                        } = state;
                        const {
                            outlineCountBefore: outlineCountBefore
                        } = state;
                        const {
                            outlineCountAfter: outlineCountAfter
                        } = state;
                        const prevVirtualItemSizeBefore = state.virtualItemSizeBefore;
                        const prevVirtualItemSizeAfter = state.virtualItemSizeAfter;
                        const prevOutlineSizeBefore = state.outlineSizeBefore;
                        const prevOutlineSizeAfter = state.outlineSizeAfter;
                        const virtualItemSizeBefore = this.itemSize * virtualItemCountBefore;
                        const virtualItemSizeAfter = this.itemSize * virtualItemCountAfter;
                        const outlineSizeBefore = this.itemSize * outlineCountBefore;
                        const outlineSizeAfter = this.itemSize * outlineCountAfter;
                        const prevVirtualSizeBefore = prevVirtualItemSizeBefore + prevOutlineSizeBefore;
                        const virtualSizeBefore = virtualItemSizeBefore + outlineSizeBefore;
                        const prevVirtualSizeAfter = prevVirtualItemSizeAfter + prevOutlineSizeAfter;
                        const virtualSizeAfter = virtualItemSizeAfter + outlineSizeAfter;
                        const isAppend = prevVirtualSizeBefore < virtualSizeBefore;
                        const isPrepend = prevVirtualSizeAfter < virtualSizeAfter;
                        const needAddItems = this._itemSizeChanged || isAppend || isPrepend;
                        if (needAddItems) {
                            this._updateStateVirtualItems(virtualItemSizeBefore, virtualItemSizeAfter)
                        }
                    };
                    _proto2._updateStateVirtualItems = function(virtualItemSizeBefore, virtualItemSizeAfter) {
                        const {
                            state: state
                        } = this;
                        state.virtualItemSizeBefore = virtualItemSizeBefore;
                        state.virtualItemSizeAfter = virtualItemSizeAfter
                    };
                    _createClass(VirtualScrollingBase, [{
                        key: "itemSize",
                        get: function() {
                            return this._itemSize
                        },
                        set: function(value) {
                            this._itemSizeChanged = this._itemSize !== value;
                            this._itemSize = value
                        }
                    }, {
                        key: "state",
                        get: function() {
                            return this._state
                        },
                        set: function(value) {
                            this._state = value
                        }
                    }, {
                        key: "startIndex",
                        get: function() {
                            return this.state.startIndex
                        }
                    }, {
                        key: "pageSize",
                        get: function() {
                            return Math.ceil(this.viewportSize / this.itemSize)
                        }
                    }, {
                        key: "outlineCount",
                        get: function() {
                            return (0, _type.isDefined)(this.options.outlineCount) ? this.options.outlineCount : Math.floor(this.pageSize / 2)
                        }
                    }, {
                        key: "groupCount",
                        get: function() {
                            return this.options.getGroupCount()
                        }
                    }, {
                        key: "isVerticalGrouping",
                        get: function() {
                            return this.options.isVerticalGrouping()
                        }
                    }, {
                        key: "defaultState",
                        get: function() {
                            return {
                                prevPosition: 0,
                                startIndex: -1,
                                itemCount: 0,
                                virtualItemCountBefore: 0,
                                virtualItemCountAfter: 0,
                                outlineCountBefore: 0,
                                outlineCountAfter: 0,
                                virtualItemSizeBefore: 0,
                                virtualItemSizeAfter: 0,
                                outlineSizeBefore: 0,
                                outlineSizeAfter: 0
                            }
                        }
                    }, {
                        key: "maxScrollPosition",
                        get: function() {
                            return this.getTotalItemCount() * this.itemSize - this.viewportSize
                        }
                    }, {
                        key: "position",
                        get: function() {
                            return this._position
                        },
                        set: function(value) {
                            this._position = value
                        }
                    }]);
                    return VirtualScrollingBase
                }();
                let VerticalVirtualScrolling = function(_VirtualScrollingBase) {
                    _inheritsLoose(VerticalVirtualScrolling, _VirtualScrollingBase);

                    function VerticalVirtualScrolling(options) {
                        return _VirtualScrollingBase.call(this, _extends(_extends({}, options), {
                            itemSize: options.rowHeight,
                            viewportSize: options.viewportHeight
                        })) || this
                    }
                    var _proto3 = VerticalVirtualScrolling.prototype;
                    _proto3.getTotalItemCount = function() {
                        return this.options.getTotalRowCount(this.groupCount, this.isVerticalGrouping)
                    };
                    _proto3.getRenderState = function() {
                        return {
                            topVirtualRowHeight: this.state.virtualItemSizeBefore,
                            bottomVirtualRowHeight: this.state.virtualItemSizeAfter,
                            startRowIndex: this.state.startIndex,
                            rowCount: this.state.itemCount,
                            startIndex: this.state.startIndex
                        }
                    };
                    _createClass(VerticalVirtualScrolling, [{
                        key: "prevTopPosition",
                        get: function() {
                            return this.state.prevPosition
                        }
                    }, {
                        key: "rowCount",
                        get: function() {
                            return this.state.itemCount
                        }
                    }, {
                        key: "topVirtualRowCount",
                        get: function() {
                            return this.state.virtualItemCountBefore
                        }
                    }, {
                        key: "bottomVirtualRowCount",
                        get: function() {
                            return this.state.virtualItemCountAfter
                        }
                    }]);
                    return VerticalVirtualScrolling
                }(VirtualScrollingBase);
                let HorizontalVirtualScrolling = function(_VirtualScrollingBase2) {
                    _inheritsLoose(HorizontalVirtualScrolling, _VirtualScrollingBase2);

                    function HorizontalVirtualScrolling(options) {
                        return _VirtualScrollingBase2.call(this, _extends(_extends({}, options), {
                            itemSize: options.cellWidth,
                            viewportSize: options.viewportWidth
                        })) || this
                    }
                    var _proto4 = HorizontalVirtualScrolling.prototype;
                    _proto4.getTotalItemCount = function() {
                        return this.options.getTotalCellCount(this.groupCount, this.isVerticalGrouping)
                    };
                    _proto4.getRenderState = function() {
                        return {
                            leftVirtualCellWidth: this.state.virtualItemSizeBefore,
                            rightVirtualCellWidth: this.state.virtualItemSizeAfter,
                            startCellIndex: this.state.startIndex,
                            cellCount: this.state.itemCount,
                            cellWidth: this.itemSize
                        }
                    };
                    _proto4._updateStateVirtualItems = function(virtualItemSizeBefore, virtualItemSizeAfter) {
                        if (!this.isRTL) {
                            _VirtualScrollingBase2.prototype._updateStateVirtualItems.call(this, virtualItemSizeBefore, virtualItemSizeAfter)
                        } else {
                            const {
                                state: state
                            } = this;
                            state.virtualItemSizeAfter = virtualItemSizeBefore;
                            state.virtualItemSizeBefore = virtualItemSizeAfter;
                            state.startIndex = this.getTotalItemCount() - this.startIndex - this.state.itemCount
                        }
                    };
                    _createClass(HorizontalVirtualScrolling, [{
                        key: "isRTL",
                        get: function() {
                            return this.options.isRTL()
                        }
                    }]);
                    return HorizontalVirtualScrolling
                }(VirtualScrollingBase);
                let VirtualScrollingRenderer = function() {
                    function VirtualScrollingRenderer(_workspace) {
                        this._workspace = _workspace;
                        this._renderAppointmentTimeoutID = null
                    }
                    var _proto5 = VirtualScrollingRenderer.prototype;
                    _proto5.getRenderTimeout = function() {
                        return this._workspace.option("isRenovatedAppointments") ? -1 : 15
                    };
                    _proto5.updateRender = function() {
                        this._renderGrid();
                        this._renderAppointments()
                    };
                    _proto5._renderGrid = function() {
                        this.workspace.renderWorkSpace(false)
                    };
                    _proto5._renderAppointments = function() {
                        const renderTimeout = this.getRenderTimeout();
                        if (renderTimeout >= 0) {
                            clearTimeout(this._renderAppointmentTimeoutID);
                            this._renderAppointmentTimeoutID = setTimeout(() => this.workspace.updateAppointments(), renderTimeout)
                        } else {
                            this.workspace.updateAppointments()
                        }
                    };
                    _createClass(VirtualScrollingRenderer, [{
                        key: "workspace",
                        get: function() {
                            return this._workspace
                        }
                    }]);
                    return VirtualScrollingRenderer
                }();
                exports.VirtualScrollingRenderer = VirtualScrollingRenderer
            },
        48377:
            /*!*********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_work_space.js ***!
              \*********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _translator = __webpack_require__( /*! ../../../animation/translator */ 31648);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 73349));
                var _element = __webpack_require__( /*! ../../../core/element */ 6415);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 20576);
                var _data = __webpack_require__( /*! ../../../core/utils/data */ 47617);
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 91198));
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _position = __webpack_require__( /*! ../../../core/utils/position */ 37518);
                var _size = __webpack_require__( /*! ../../../core/utils/size */ 58664);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 58201);
                var _click = __webpack_require__( /*! ../../../events/click */ 95429);
                var _contextmenu = __webpack_require__( /*! ../../../events/contextmenu */ 49166);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../events/core/events_engine */ 55994));
                var _drag = __webpack_require__( /*! ../../../events/drag */ 23174);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../../events/pointer */ 93786));
                var _index = __webpack_require__( /*! ../../../events/utils/index */ 39611);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../localization/message */ 28109));
                var _getMemoizeScrollTo = __webpack_require__( /*! ../../../renovation/ui/common/utils/scroll/getMemoizeScrollTo */ 41672);
                var _base = __webpack_require__( /*! ../../../renovation/ui/scheduler/view_model/to_test/views/utils/base */ 45985);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../../ui/scroll_view/ui.scrollable */ 41183));
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../../../ui/widget/ui.errors */ 96688));
                var _table = _interopRequireDefault(__webpack_require__( /*! ../../../renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/table.j */ 38201));
                var _title = _interopRequireDefault(__webpack_require__( /*! ../../../renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/title.j */ 2931));
                var _layout = _interopRequireDefault(__webpack_require__( /*! ../../../renovation/ui/scheduler/workspaces/base/date_table/layout.j */ 40181));
                var _group_panel = _interopRequireDefault(__webpack_require__( /*! ../../../renovation/ui/scheduler/workspaces/base/group_panel/group_panel.j */ 11141));
                var _layout2 = _interopRequireDefault(__webpack_require__( /*! ../../../renovation/ui/scheduler/workspaces/base/header_panel/layout.j */ 32972));
                var _layout3 = _interopRequireDefault(__webpack_require__( /*! ../../../renovation/ui/scheduler/workspaces/base/time_panel/layout.j */ 89687));
                var _m_widget_observer = _interopRequireDefault(__webpack_require__( /*! ../base/m_widget_observer */ 79427));
                var _m_appointment_drag_behavior = _interopRequireDefault(__webpack_require__( /*! ../m_appointment_drag_behavior */ 54915));
                var _m_classes = __webpack_require__( /*! ../m_classes */ 43600);
                var _m_constants = __webpack_require__( /*! ../m_constants */ 6324);
                var _m_table_creator = _interopRequireDefault(__webpack_require__( /*! ../m_table_creator */ 82215));
                var _m_utils = __webpack_require__( /*! ../m_utils */ 84110);
                var _m_utils2 = __webpack_require__( /*! ../resources/m_utils */ 31359);
                var _m_current_time_shader_vertical = _interopRequireDefault(__webpack_require__( /*! ../shaders/m_current_time_shader_vertical */ 11029));
                var _m_position_helper = __webpack_require__( /*! ./helpers/m_position_helper */ 94654);
                var _m_cache = __webpack_require__( /*! ./m_cache */ 14553);
                var _m_cells_selection_controller = __webpack_require__( /*! ./m_cells_selection_controller */ 78151);
                var _m_cells_selection_state = _interopRequireDefault(__webpack_require__( /*! ./m_cells_selection_state */ 20191));
                var _m_virtual_scrolling = __webpack_require__( /*! ./m_virtual_scrolling */ 33350);
                var _m_work_space_grouped_strategy_horizontal = _interopRequireDefault(__webpack_require__( /*! ./m_work_space_grouped_strategy_horizontal */ 48854));
                var _m_work_space_grouped_strategy_vertical = _interopRequireDefault(__webpack_require__( /*! ./m_work_space_grouped_strategy_vertical */ 2862));
                var _m_view_data_provider = _interopRequireDefault(__webpack_require__( /*! ./view_model/m_view_data_provider */ 52974));

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const {
                    tableCreator: tableCreator
                } = _m_table_creator.default;
                const {
                    abstract: abstract
                } = _m_widget_observer.default;
                const toMs = _date.default.dateToMilliseconds;
                const ALL_DAY_TABLE_CELL_CLASS = "dx-scheduler-all-day-table-cell";
                const DATE_TABLE_CELL_CLASS = "dx-scheduler-date-table-cell";
                const SCHEDULER_WORKSPACE_DXPOINTERDOWN_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.down, "dxSchedulerWorkSpace");
                const DragEventNames = {
                    ENTER: (0, _index.addNamespace)(_drag.enter, "dxSchedulerDateTable"),
                    DROP: (0, _index.addNamespace)(_drag.drop, "dxSchedulerDateTable"),
                    LEAVE: (0, _index.addNamespace)(_drag.leave, "dxSchedulerDateTable")
                };
                const SCHEDULER_CELL_DXCLICK_EVENT_NAME = (0, _index.addNamespace)(_click.name, "dxSchedulerDateTable");
                const SCHEDULER_CELL_DXPOINTERDOWN_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.down, "dxSchedulerDateTable");
                const SCHEDULER_CELL_DXPOINTERUP_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.up, "dxSchedulerDateTable");
                const SCHEDULER_CELL_DXPOINTERMOVE_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.move, "dxSchedulerDateTable");
                const DAY_MS = toMs("day");
                const HOUR_MS = toMs("hour");
                const DRAG_AND_DROP_SELECTOR = ".".concat(_m_classes.DATE_TABLE_CLASS, " td, .").concat("dx-scheduler-all-day-table", " td");
                const CELL_SELECTOR = ".".concat(DATE_TABLE_CELL_CLASS, ", .").concat(ALL_DAY_TABLE_CELL_CLASS);
                const DEFAULT_WORKSPACE_RENDER_OPTIONS = {
                    renderComponents: {
                        header: true,
                        timePanel: true,
                        dateTable: true,
                        allDayPanel: true
                    },
                    generateNewData: true
                };
                let SchedulerWorkSpace = function(_WidgetObserver) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(SchedulerWorkSpace, _WidgetObserver);

                    function SchedulerWorkSpace() {
                        var _this;
                        _this = _WidgetObserver.apply(this, arguments) || this;
                        _this.viewDirection = "vertical";
                        return _this
                    }
                    var _proto = SchedulerWorkSpace.prototype;
                    _proto._supportedKeys = function() {
                        const clickHandler = function(e) {
                            e.preventDefault();
                            e.stopPropagation();
                            const selectedCells = this.cellsSelectionState.getSelectedCells();
                            if (null === selectedCells || void 0 === selectedCells ? void 0 : selectedCells.length) {
                                const selectedCellsElement = selectedCells.map(cellData => this._getCellByData(cellData)).filter(cell => !!cell);
                                e.target = selectedCellsElement;
                                this._showPopup = true;
                                this._cellClickAction({
                                    event: e,
                                    cellElement: (0, _renderer.default)(selectedCellsElement),
                                    cellData: selectedCells[0]
                                })
                            }
                        };
                        const onArrowPressed = (e, key) => {
                            var _a;
                            e.preventDefault();
                            e.stopPropagation();
                            const focusedCellData = null === (_a = this.cellsSelectionState.focusedCell) || void 0 === _a ? void 0 : _a.cellData;
                            if (focusedCellData) {
                                const isAllDayPanelCell = focusedCellData.allDay && !this._isVerticalGroupedWorkSpace();
                                const isMultiSelection = e.shiftKey;
                                const isMultiSelectionAllowed = this.option("allowMultipleCellSelection");
                                const isRTL = this._isRTL();
                                const groupCount = this._getGroupCount();
                                const isGroupedByDate = this.isGroupedByDate();
                                const isHorizontalGrouping = this._isHorizontalGroupedWorkSpace();
                                const focusedCellPosition = this.viewDataProvider.findCellPositionInMap(_extends(_extends({}, focusedCellData), {
                                    isAllDay: focusedCellData.allDay
                                }));
                                const edgeIndices = isHorizontalGrouping && isMultiSelection && !isGroupedByDate ? this.viewDataProvider.getGroupEdgeIndices(focusedCellData.groupIndex, isAllDayPanelCell) : this.viewDataProvider.getViewEdgeIndices(isAllDayPanelCell);
                                const nextCellData = this.cellsSelectionController.handleArrowClick({
                                    focusedCellPosition: focusedCellPosition,
                                    edgeIndices: edgeIndices,
                                    isRTL: isRTL,
                                    isGroupedByDate: isGroupedByDate,
                                    groupCount: groupCount,
                                    isMultiSelection: isMultiSelection,
                                    isMultiSelectionAllowed: isMultiSelectionAllowed,
                                    viewType: this.type,
                                    key: key,
                                    getCellDataByPosition: this.viewDataProvider.getCellData.bind(this.viewDataProvider),
                                    isAllDayPanelCell: isAllDayPanelCell,
                                    focusedCellData: focusedCellData
                                });
                                this._processNextSelectedCell(nextCellData, focusedCellData, isMultiSelection && isMultiSelectionAllowed)
                            }
                        };
                        return (0, _extend.extend)(_WidgetObserver.prototype._supportedKeys.call(this), {
                            enter: clickHandler,
                            space: clickHandler,
                            downArrow: e => {
                                onArrowPressed(e, "down")
                            },
                            upArrow: e => {
                                onArrowPressed(e, "up")
                            },
                            rightArrow: e => {
                                onArrowPressed(e, "right")
                            },
                            leftArrow: e => {
                                onArrowPressed(e, "left")
                            }
                        })
                    };
                    _proto._isRTL = function() {
                        return this.option("rtlEnabled")
                    };
                    _proto._moveToCell = function($cell, isMultiSelection) {
                        if (!(0, _type.isDefined)($cell) || !$cell.length) {
                            return
                        }
                        const isMultiSelectionAllowed = this.option("allowMultipleCellSelection");
                        const currentCellData = this._getFullCellData($cell);
                        const focusedCellData = this.cellsSelectionState.focusedCell.cellData;
                        const nextFocusedCellData = this.cellsSelectionController.moveToCell({
                            isMultiSelection: isMultiSelection,
                            isMultiSelectionAllowed: isMultiSelectionAllowed,
                            currentCellData: currentCellData,
                            focusedCellData: focusedCellData,
                            isVirtualCell: $cell.hasClass(_m_classes.VIRTUAL_CELL_CLASS)
                        });
                        this._processNextSelectedCell(nextFocusedCellData, focusedCellData, isMultiSelectionAllowed && isMultiSelection)
                    };
                    _proto._processNextSelectedCell = function(nextCellData, focusedCellData, isMultiSelection) {
                        const nextCellPosition = this.viewDataProvider.findCellPositionInMap({
                            startDate: nextCellData.startDate,
                            groupIndex: nextCellData.groupIndex,
                            isAllDay: nextCellData.allDay,
                            index: nextCellData.index
                        });
                        if (!this.viewDataProvider.isSameCell(focusedCellData, nextCellData)) {
                            const $cell = nextCellData.allDay && !this._isVerticalGroupedWorkSpace() ? this._dom_getAllDayPanelCell(nextCellPosition.columnIndex) : this._dom_getDateCell(nextCellPosition);
                            const isNextCellAllDay = nextCellData.allDay;
                            this._setSelectedCellsStateAndUpdateSelection(isNextCellAllDay, nextCellPosition, isMultiSelection, $cell);
                            this._dateTableScrollable.scrollToElement($cell)
                        }
                    };
                    _proto._setSelectedCellsStateAndUpdateSelection = function(isAllDay, cellPosition, isMultiSelection, $nextFocusedCell) {
                        const nextCellCoordinates = {
                            rowIndex: cellPosition.rowIndex,
                            columnIndex: cellPosition.columnIndex,
                            allDay: isAllDay
                        };
                        this.cellsSelectionState.setFocusedCell(nextCellCoordinates.rowIndex, nextCellCoordinates.columnIndex, isAllDay);
                        if (isMultiSelection) {
                            this.cellsSelectionState.setSelectedCells(nextCellCoordinates)
                        } else {
                            this.cellsSelectionState.setSelectedCells(nextCellCoordinates, nextCellCoordinates)
                        }
                        this.updateCellsSelection();
                        this._updateSelectedCellDataOption(this.cellsSelectionState.getSelectedCells(), $nextFocusedCell)
                    };
                    _proto._hasAllDayClass = function($cell) {
                        return $cell.hasClass(ALL_DAY_TABLE_CELL_CLASS)
                    };
                    _proto._focusInHandler = function(e) {
                        if ((0, _renderer.default)(e.target).is(this._focusTarget()) && false !== this._isCellClick) {
                            delete this._isCellClick;
                            delete this._contextMenuHandled;
                            _WidgetObserver.prototype._focusInHandler.apply(this, arguments);
                            this.cellsSelectionState.restoreSelectedAndFocusedCells();
                            if (!this.cellsSelectionState.focusedCell) {
                                const cellCoordinates = {
                                    columnIndex: 0,
                                    rowIndex: 0,
                                    allDay: this._isVerticalGroupedWorkSpace() && this.isAllDayPanelVisible
                                };
                                this.cellsSelectionState.setFocusedCell(cellCoordinates.rowIndex, cellCoordinates.columnIndex, cellCoordinates.allDay);
                                this.cellsSelectionState.setSelectedCells(cellCoordinates, cellCoordinates)
                            }
                            this.updateCellsSelection();
                            this._updateSelectedCellDataOption(this.cellsSelectionState.getSelectedCells())
                        }
                    };
                    _proto._focusOutHandler = function() {
                        _WidgetObserver.prototype._focusOutHandler.apply(this, arguments);
                        if (!this._contextMenuHandled && !this._disposed) {
                            this.cellsSelectionState.releaseSelectedAndFocusedCells();
                            this.viewDataProvider.updateViewData(this.generateRenderOptions());
                            this.updateCellsSelection()
                        }
                    };
                    _proto._focusTarget = function() {
                        return this.$element()
                    };
                    _proto._isVerticalGroupedWorkSpace = function() {
                        var _a;
                        return !!(null === (_a = this.option("groups")) || void 0 === _a ? void 0 : _a.length) && "vertical" === this.option("groupOrientation")
                    };
                    _proto._isHorizontalGroupedWorkSpace = function() {
                        var _a;
                        return !!(null === (_a = this.option("groups")) || void 0 === _a ? void 0 : _a.length) && "horizontal" === this.option("groupOrientation")
                    };
                    _proto._isWorkSpaceWithCount = function() {
                        return this.option("intervalCount") > 1
                    };
                    _proto._isWorkspaceWithOddCells = function() {
                        return .5 === this.option("hoursInterval") && !this.isVirtualScrolling()
                    };
                    _proto._getRealGroupOrientation = function() {
                        return this._isVerticalGroupedWorkSpace() ? "vertical" : "horizontal"
                    };
                    _proto.createRAllDayPanelElements = function() {
                        this._$allDayPanel = (0, _renderer.default)("<div>").addClass("dx-scheduler-all-day-panel");
                        this._$allDayTitle = (0, _renderer.default)("<div>").appendTo(this._$headerPanelEmptyCell)
                    };
                    _proto._dateTableScrollableConfig = function() {
                        let config = {
                            useKeyboard: false,
                            bounceEnabled: false,
                            updateManually: true,
                            onScroll: () => {
                                var _a;
                                null === (_a = this._groupedStrategy.cache) || void 0 === _a ? void 0 : _a.clear()
                            }
                        };
                        if (this._needCreateCrossScrolling()) {
                            config = (0, _extend.extend)(config, this._createCrossScrollingConfig(config))
                        }
                        if (this.isVirtualScrolling() && (this.virtualScrollingDispatcher.horizontalScrollingAllowed || this.virtualScrollingDispatcher.height)) {
                            const currentOnScroll = config.onScroll;
                            config = _extends(_extends({}, config), {
                                onScroll: e => {
                                    null === currentOnScroll || void 0 === currentOnScroll ? void 0 : currentOnScroll(e);
                                    this.virtualScrollingDispatcher.handleOnScrollEvent(null === e || void 0 === e ? void 0 : e.scrollOffset)
                                }
                            })
                        }
                        return config
                    };
                    _proto._createCrossScrollingConfig = function(_ref) {
                        let {
                            onScroll: onScroll
                        } = _ref;
                        return {
                            direction: "both",
                            onScroll: event => {
                                null === onScroll || void 0 === onScroll ? void 0 : onScroll();
                                this._scrollSync.sidebar({
                                    top: event.scrollOffset.top
                                });
                                this._scrollSync.header({
                                    left: event.scrollOffset.left
                                })
                            },
                            onEnd: () => {
                                this.option("onScrollEnd")()
                            }
                        }
                    };
                    _proto._headerScrollableConfig = function() {
                        return {
                            useKeyboard: false,
                            showScrollbar: "never",
                            direction: "horizontal",
                            useNative: false,
                            updateManually: true,
                            bounceEnabled: false,
                            onScroll: event => {
                                this._scrollSync.dateTable({
                                    left: event.scrollOffset.left
                                })
                            }
                        }
                    };
                    _proto._visibilityChanged = function(visible) {
                        this.cache.clear();
                        if (visible) {
                            this._updateGroupTableHeight()
                        }
                        if (visible && this._needCreateCrossScrolling()) {
                            this._setTableSizes()
                        }
                    };
                    _proto._setTableSizes = function() {
                        this.cache.clear();
                        this._attachTableClasses();
                        let cellWidth = this.getCellWidth();
                        if (cellWidth < this.getCellMinWidth()) {
                            cellWidth = this.getCellMinWidth()
                        }
                        const minWidth = this.getWorkSpaceMinWidth();
                        const groupCount = this._getGroupCount();
                        const totalCellCount = this._getTotalCellCount(groupCount);
                        let width = cellWidth * totalCellCount;
                        if (width < minWidth) {
                            width = minWidth
                        }(0, _size.setWidth)(this._$headerPanel, width);
                        (0, _size.setWidth)(this._$dateTable, width);
                        if (this._$allDayTable) {
                            (0, _size.setWidth)(this._$allDayTable, width)
                        }
                        this._attachHeaderTableClasses();
                        this._updateGroupTableHeight();
                        this._updateScrollable()
                    };
                    _proto.getWorkSpaceMinWidth = function() {
                        return this._groupedStrategy.getWorkSpaceMinWidth()
                    };
                    _proto._dimensionChanged = function() {
                        if (!this._isVisible()) {
                            return
                        }
                        if (this.option("crossScrollingEnabled")) {
                            this._setTableSizes()
                        }
                        this.updateHeaderEmptyCellWidth();
                        this._updateScrollable();
                        this.cache.clear()
                    };
                    _proto._needCreateCrossScrolling = function() {
                        return this.option("crossScrollingEnabled")
                    };
                    _proto._getElementClass = function() {
                        return (0, _common.noop)()
                    };
                    _proto._getRowCount = function() {
                        return this.viewDataProvider.getRowCount({
                            intervalCount: this.option("intervalCount"),
                            currentDate: this.option("currentDate"),
                            viewType: this.type,
                            hoursInterval: this.option("hoursInterval"),
                            startDayHour: this.option("startDayHour"),
                            endDayHour: this.option("endDayHour")
                        })
                    };
                    _proto._getCellCount = function() {
                        return this.viewDataProvider.getCellCount({
                            intervalCount: this.option("intervalCount"),
                            currentDate: this.option("currentDate"),
                            viewType: this.type,
                            hoursInterval: this.option("hoursInterval"),
                            startDayHour: this.option("startDayHour"),
                            endDayHour: this.option("endDayHour")
                        })
                    };
                    _proto.isRenovatedRender = function() {
                        return this.renovatedRenderSupported() && this.option("renovateRender")
                    };
                    _proto._isVirtualModeOn = function() {
                        return "virtual" === this.option("scrolling.mode")
                    };
                    _proto.isVirtualScrolling = function() {
                        return this.isRenovatedRender() && this._isVirtualModeOn()
                    };
                    _proto._initVirtualScrolling = function() {
                        if (this.virtualScrollingDispatcher) {
                            this.virtualScrollingDispatcher.dispose();
                            this.virtualScrollingDispatcher = null
                        }
                        this.virtualScrollingDispatcher = new _m_virtual_scrolling.VirtualScrollingDispatcher(this._getVirtualScrollingDispatcherOptions());
                        this.virtualScrollingDispatcher.attachScrollableEvents();
                        this.renderer = new _m_virtual_scrolling.VirtualScrollingRenderer(this)
                    };
                    _proto.onDataSourceChanged = function(argument) {};
                    _proto.isGroupedAllDayPanel = function() {
                        return (0, _base.calculateIsGroupedAllDayPanel)(this.option("groups"), this.option("groupOrientation"), this.isAllDayPanelVisible)
                    };
                    _proto.generateRenderOptions = function(isProvideVirtualCellsWidth) {
                        var _a;
                        const groupCount = this._getGroupCount();
                        const groupOrientation = groupCount > 0 ? this.option("groupOrientation") : this._getDefaultGroupStrategy();
                        const options = _extends({
                            groupByDate: this.option("groupByDate"),
                            startRowIndex: 0,
                            startCellIndex: 0,
                            groupOrientation: groupOrientation,
                            today: null === (_a = this._getToday) || void 0 === _a ? void 0 : _a.call(this),
                            groups: this.option("groups"),
                            isProvideVirtualCellsWidth: isProvideVirtualCellsWidth,
                            isAllDayPanelVisible: this.isAllDayPanelVisible,
                            selectedCells: this.cellsSelectionState.getSelectedCells(),
                            focusedCell: this.cellsSelectionState.focusedCell,
                            headerCellTextFormat: this._getFormat(),
                            getDateForHeaderText: (_, date) => date,
                            viewOffset: this.option("viewOffset"),
                            startDayHour: this.option("startDayHour"),
                            endDayHour: this.option("endDayHour"),
                            cellDuration: this.getCellDuration(),
                            viewType: this.type,
                            intervalCount: this.option("intervalCount"),
                            hoursInterval: this.option("hoursInterval"),
                            currentDate: this.option("currentDate"),
                            startDate: this.option("startDate"),
                            firstDayOfWeek: this.option("firstDayOfWeek"),
                            showCurrentTimeIndicator: this.option("showCurrentTimeIndicator")
                        }, this.virtualScrollingDispatcher.getRenderState());
                        return options
                    };
                    _proto.renovatedRenderSupported = function() {
                        return true
                    };
                    _proto._updateGroupTableHeight = function() {
                        if (this._isVerticalGroupedWorkSpace() && (0, _window.hasWindow)()) {
                            this._setHorizontalGroupHeaderCellsHeight()
                        }
                    };
                    _proto.updateHeaderEmptyCellWidth = function() {
                        if ((0, _window.hasWindow)() && this._isRenderHeaderPanelEmptyCell()) {
                            const timePanelWidth = this.getTimePanelWidth();
                            const groupPanelWidth = this.getGroupTableWidth();
                            this._$headerPanelEmptyCell.css("width", timePanelWidth + groupPanelWidth)
                        }
                    };
                    _proto._isGroupsSpecified = function(resources) {
                        var _a;
                        return (null === (_a = this.option("groups")) || void 0 === _a ? void 0 : _a.length) && resources
                    };
                    _proto._getGroupIndexByResourceId = function(id) {
                        const groups = this.option("groups");
                        const resourceTree = (0, _m_utils2.createResourcesTree)(groups);
                        if (!resourceTree.length) {
                            return 0
                        }
                        return this._getGroupIndexRecursively(resourceTree, id)
                    };
                    _proto._getGroupIndexRecursively = function(resourceTree, id) {
                        const currentKey = resourceTree[0].name;
                        const currentValue = id[currentKey];
                        return resourceTree.reduce((prevIndex, _ref2) => {
                            let {
                                leafIndex: leafIndex,
                                value: value,
                                children: children
                            } = _ref2;
                            const areValuesEqual = currentValue === value;
                            if (areValuesEqual && void 0 !== leafIndex) {
                                return leafIndex
                            }
                            if (areValuesEqual) {
                                return this._getGroupIndexRecursively(children, id)
                            }
                            return prevIndex
                        }, 0)
                    };
                    _proto._getViewStartByOptions = function() {
                        return (0, _base.getViewStartByOptions)(this.option("startDate"), this.option("currentDate"), this._getIntervalDuration(), this.option("startDate") ? this._calculateViewStartDate() : void 0)
                    };
                    _proto._getIntervalDuration = function() {
                        return this.viewDataProvider.getIntervalDuration(this.option("intervalCount"))
                    };
                    _proto._getHeaderDate = function() {
                        return this.getStartViewDate()
                    };
                    _proto._calculateViewStartDate = function() {
                        return (0, _base.calculateViewStartDate)(this.option("startDate"))
                    };
                    _proto._firstDayOfWeek = function() {
                        return this.viewDataProvider.getFirstDayOfWeek(this.option("firstDayOfWeek"))
                    };
                    _proto._attachEvents = function() {
                        this._createSelectionChangedAction();
                        this._attachClickEvent();
                        this._attachContextMenuEvent()
                    };
                    _proto._attachClickEvent = function() {
                        const that = this;
                        const pointerDownAction = this._createAction(e => {
                            that._pointerDownHandler(e.event)
                        });
                        this._createCellClickAction();
                        const cellSelector = ".".concat(DATE_TABLE_CELL_CLASS, ",.").concat(ALL_DAY_TABLE_CELL_CLASS);
                        const $element = this.$element();
                        _events_engine.default.off($element, SCHEDULER_WORKSPACE_DXPOINTERDOWN_EVENT_NAME);
                        _events_engine.default.off($element, SCHEDULER_CELL_DXCLICK_EVENT_NAME);
                        _events_engine.default.on($element, SCHEDULER_WORKSPACE_DXPOINTERDOWN_EVENT_NAME, e => {
                            if ((0, _index.isMouseEvent)(e) && e.which > 1) {
                                e.preventDefault();
                                return
                            }
                            pointerDownAction({
                                event: e
                            })
                        });
                        _events_engine.default.on($element, SCHEDULER_CELL_DXCLICK_EVENT_NAME, cellSelector, e => {
                            const $cell = (0, _renderer.default)(e.target);
                            that._cellClickAction({
                                event: e,
                                cellElement: (0, _element.getPublicElement)($cell),
                                cellData: that.getCellData($cell)
                            })
                        })
                    };
                    _proto._createCellClickAction = function() {
                        this._cellClickAction = this._createActionByOption("onCellClick", {
                            afterExecute: e => this._cellClickHandler(e.args[0].event)
                        })
                    };
                    _proto._createSelectionChangedAction = function() {
                        this._selectionChangedAction = this._createActionByOption("onSelectionChanged")
                    };
                    _proto._cellClickHandler = function(argument) {
                        if (this._showPopup) {
                            delete this._showPopup;
                            this._handleSelectedCellsClick()
                        }
                    };
                    _proto._pointerDownHandler = function(e) {
                        const $target = (0, _renderer.default)(e.target);
                        if (!$target.hasClass(DATE_TABLE_CELL_CLASS) && !$target.hasClass(ALL_DAY_TABLE_CELL_CLASS)) {
                            this._isCellClick = false;
                            return
                        }
                        this._isCellClick = true;
                        if ($target.hasClass("dx-scheduler-focused-cell")) {
                            this._showPopup = true
                        } else {
                            const cellCoordinates = this._getCoordinatesByCell($target);
                            const isAllDayCell = this._hasAllDayClass($target);
                            this._setSelectedCellsStateAndUpdateSelection(isAllDayCell, cellCoordinates, false, $target)
                        }
                    };
                    _proto._handleSelectedCellsClick = function() {
                        const selectedCells = this.cellsSelectionState.getSelectedCells();
                        const firstCellData = selectedCells[0];
                        const lastCellData = selectedCells[selectedCells.length - 1];
                        const result = {
                            startDate: firstCellData.startDate,
                            endDate: lastCellData.endDate
                        };
                        if (void 0 !== lastCellData.allDay) {
                            result.allDay = lastCellData.allDay
                        }
                        this.option("onSelectedCellsClick")(result, lastCellData.groups)
                    };
                    _proto._attachContextMenuEvent = function() {
                        this._createContextMenuAction();
                        const cellSelector = ".".concat(DATE_TABLE_CELL_CLASS, ",.").concat(ALL_DAY_TABLE_CELL_CLASS);
                        const $element = this.$element();
                        const eventName = (0, _index.addNamespace)(_contextmenu.name, this.NAME);
                        _events_engine.default.off($element, eventName, cellSelector);
                        _events_engine.default.on($element, eventName, cellSelector, this._contextMenuHandler.bind(this))
                    };
                    _proto._contextMenuHandler = function(e) {
                        const $cell = (0, _renderer.default)(e.target);
                        this._contextMenuAction({
                            event: e,
                            cellElement: (0, _element.getPublicElement)($cell),
                            cellData: this.getCellData($cell)
                        });
                        this._contextMenuHandled = true
                    };
                    _proto._createContextMenuAction = function() {
                        this._contextMenuAction = this._createActionByOption("onCellContextMenu")
                    };
                    _proto._getGroupHeaderContainer = function() {
                        if (this._isVerticalGroupedWorkSpace()) {
                            return this._$groupTable
                        }
                        return this._$thead
                    };
                    _proto._getDateHeaderContainer = function() {
                        return this._$thead
                    };
                    _proto._getCalculateHeaderCellRepeatCount = function() {
                        return this._groupedStrategy.calculateHeaderCellRepeatCount()
                    };
                    _proto._updateScrollable = function() {
                        var _a, _b;
                        this._dateTableScrollable.update();
                        null === (_a = this._headerScrollable) || void 0 === _a ? void 0 : _a.update();
                        null === (_b = this._sidebarScrollable) || void 0 === _b ? void 0 : _b.update()
                    };
                    _proto._getTimePanelRowCount = function() {
                        return this._getCellCountInDay()
                    };
                    _proto._getCellCountInDay = function() {
                        const hoursInterval = this.option("hoursInterval");
                        const startDayHour = this.option("startDayHour");
                        const endDayHour = this.option("endDayHour");
                        return this.viewDataProvider.getCellCountInDay(startDayHour, endDayHour, hoursInterval)
                    };
                    _proto._getTotalCellCount = function(groupCount) {
                        return this._groupedStrategy.getTotalCellCount(groupCount)
                    };
                    _proto._getTotalRowCount = function(groupCount, includeAllDayPanelRows) {
                        let result = this._groupedStrategy.getTotalRowCount(groupCount);
                        if (includeAllDayPanelRows && this.isAllDayPanelVisible) {
                            result += groupCount
                        }
                        return result
                    };
                    _proto._getGroupIndex = function(rowIndex, columnIndex) {
                        return this._groupedStrategy.getGroupIndex(rowIndex, columnIndex)
                    };
                    _proto.calculateEndDate = function(startDate) {
                        const {
                            viewDataGenerator: viewDataGenerator
                        } = this.viewDataProvider;
                        return viewDataGenerator.calculateEndDate(startDate, viewDataGenerator.getInterval(this.option("hoursInterval")), this.option("endDayHour"))
                    };
                    _proto._getGroupCount = function() {
                        return (0, _m_utils2.getGroupCount)(this.option("groups"))
                    };
                    _proto._attachTablesEvents = function() {
                        const element = this.$element();
                        this._attachDragEvents(element);
                        this._attachPointerEvents(element)
                    };
                    _proto._detachDragEvents = function(element) {
                        _events_engine.default.off(element, DragEventNames.ENTER);
                        _events_engine.default.off(element, DragEventNames.LEAVE);
                        _events_engine.default.off(element, DragEventNames.DROP)
                    };
                    _proto._attachDragEvents = function(element) {
                        this._detachDragEvents(element);
                        _events_engine.default.on(element, DragEventNames.ENTER, DRAG_AND_DROP_SELECTOR, {
                            checkDropTarget: (target, event) => !this._isOutsideScrollable(target, event)
                        }, e => {
                            if (!this.preventDefaultDragging) {
                                this.removeDroppableCellClass();
                                (0, _renderer.default)(e.target).addClass("dx-scheduler-date-table-droppable-cell")
                            }
                        });
                        _events_engine.default.on(element, DragEventNames.LEAVE, () => {
                            if (!this.preventDefaultDragging) {
                                this.removeDroppableCellClass()
                            }
                        });
                        _events_engine.default.on(element, DragEventNames.DROP, DRAG_AND_DROP_SELECTOR, () => {
                            var _a, _b;
                            if (!this.dragBehavior) {
                                return
                            }
                            if (!(null === (_a = this.dragBehavior) || void 0 === _a ? void 0 : _a.dragBetweenComponentsPromise)) {
                                this.dragBehavior.removeDroppableClasses();
                                return
                            }
                            null === (_b = this.dragBehavior.dragBetweenComponentsPromise) || void 0 === _b ? void 0 : _b.then(() => {
                                this.dragBehavior.removeDroppableClasses()
                            })
                        })
                    };
                    _proto._attachPointerEvents = function(element) {
                        let isPointerDown = false;
                        _events_engine.default.off(element, SCHEDULER_CELL_DXPOINTERMOVE_EVENT_NAME);
                        _events_engine.default.off(element, SCHEDULER_CELL_DXPOINTERDOWN_EVENT_NAME);
                        _events_engine.default.on(element, SCHEDULER_CELL_DXPOINTERDOWN_EVENT_NAME, DRAG_AND_DROP_SELECTOR, e => {
                            if ((0, _index.isMouseEvent)(e) && 1 === e.which) {
                                isPointerDown = true;
                                this.$element().addClass("dx-scheduler-work-space-mouse-selection");
                                _events_engine.default.off(_dom_adapter.default.getDocument(), SCHEDULER_CELL_DXPOINTERUP_EVENT_NAME);
                                _events_engine.default.on(_dom_adapter.default.getDocument(), SCHEDULER_CELL_DXPOINTERUP_EVENT_NAME, () => {
                                    isPointerDown = false;
                                    this.$element().removeClass("dx-scheduler-work-space-mouse-selection")
                                })
                            }
                        });
                        _events_engine.default.on(element, SCHEDULER_CELL_DXPOINTERMOVE_EVENT_NAME, DRAG_AND_DROP_SELECTOR, e => {
                            if (isPointerDown && this._dateTableScrollable && !this._dateTableScrollable.option("scrollByContent")) {
                                e.preventDefault();
                                e.stopPropagation();
                                this._moveToCell((0, _renderer.default)(e.target), true)
                            }
                        })
                    };
                    _proto._getFormat = function() {
                        return abstract()
                    };
                    _proto.getWorkArea = function() {
                        return this._$dateTableContainer
                    };
                    _proto.getScrollable = function() {
                        return this._dateTableScrollable
                    };
                    _proto.getScrollableScrollTop = function() {
                        return this._dateTableScrollable.scrollTop()
                    };
                    _proto.getGroupedScrollableScrollTop = function(allDay) {
                        return this._groupedStrategy.getScrollableScrollTop(allDay)
                    };
                    _proto.getScrollableScrollLeft = function() {
                        return this._dateTableScrollable.scrollLeft()
                    };
                    _proto.getScrollableOuterWidth = function() {
                        return this._dateTableScrollable.scrollWidth()
                    };
                    _proto.getScrollableContainer = function() {
                        return (0, _renderer.default)(this._dateTableScrollable.container())
                    };
                    _proto.getHeaderPanelHeight = function() {
                        return this._$headerPanel && (0, _size.getOuterHeight)(this._$headerPanel, true)
                    };
                    _proto.getTimePanelWidth = function() {
                        return this._$timePanel && (0, _position.getBoundingRect)(this._$timePanel.get(0)).width
                    };
                    _proto.getGroupTableWidth = function() {
                        return this._$groupTable ? (0, _size.getOuterWidth)(this._$groupTable) : 0
                    };
                    _proto.getWorkSpaceLeftOffset = function() {
                        return this._groupedStrategy.getLeftOffset()
                    };
                    _proto._getCellCoordinatesByIndex = function(index) {
                        const columnIndex = Math.floor(index / this._getRowCount());
                        const rowIndex = index - this._getRowCount() * columnIndex;
                        return {
                            columnIndex: columnIndex,
                            rowIndex: rowIndex
                        }
                    };
                    _proto._getDateGenerationOptions = function() {
                        var _a;
                        return {
                            startDayHour: this.option("startDayHour"),
                            endDayHour: this.option("endDayHour"),
                            isWorkView: this.viewDataProvider.viewDataGenerator.isWorkView,
                            interval: null === (_a = this.viewDataProvider.viewDataGenerator) || void 0 === _a ? void 0 : _a.getInterval(this.option("hoursInterval")),
                            startViewDate: this.getStartViewDate(),
                            firstDayOfWeek: this._firstDayOfWeek()
                        }
                    };
                    _proto._getIntervalBetween = function(currentDate, allDay) {
                        const firstViewDate = this.getStartViewDate();
                        const startDayTime = this.option("startDayHour") * HOUR_MS;
                        const timeZoneOffset = _date.default.getTimezonesDifference(firstViewDate, currentDate);
                        const fullInterval = currentDate.getTime() - firstViewDate.getTime() - timeZoneOffset;
                        const days = this._getDaysOfInterval(fullInterval, startDayTime);
                        const weekendsCount = this._getWeekendsCount(days);
                        let result = (days - weekendsCount) * DAY_MS;
                        if (!allDay) {
                            const {
                                hiddenInterval: hiddenInterval
                            } = this.viewDataProvider;
                            const visibleDayDuration = this.getVisibleDayDuration();
                            result = fullInterval - days * hiddenInterval - weekendsCount * visibleDayDuration
                        }
                        return result
                    };
                    _proto._getWeekendsCount = function(argument) {
                        return 0
                    };
                    _proto._getDaysOfInterval = function(fullInterval, startDayTime) {
                        return Math.floor((fullInterval + startDayTime) / DAY_MS)
                    };
                    _proto._updateIndex = function(index) {
                        return index * this._getRowCount()
                    };
                    _proto._getDroppableCell = function() {
                        return this._getDateTables().find(".".concat("dx-scheduler-date-table-droppable-cell"))
                    };
                    _proto._getWorkSpaceWidth = function() {
                        return this.cache.get("workspaceWidth", () => {
                            if (this._needCreateCrossScrolling()) {
                                return (0, _position.getBoundingRect)(this._$dateTable.get(0)).width
                            }
                            const totalWidth = (0, _position.getBoundingRect)(this.$element().get(0)).width;
                            const timePanelWidth = this.getTimePanelWidth();
                            const groupTableWidth = this.getGroupTableWidth();
                            return totalWidth - timePanelWidth - groupTableWidth
                        })
                    };
                    _proto._getCellByCoordinates = function(cellCoordinates, groupIndex, inAllDayRow) {
                        const indexes = this._groupedStrategy.prepareCellIndexes(cellCoordinates, groupIndex, inAllDayRow);
                        return this._dom_getDateCell(indexes)
                    };
                    _proto._dom_getDateCell = function(position) {
                        return this._$dateTable.find("tr:not(.".concat("dx-scheduler-virtual-row", ")")).eq(position.rowIndex).find("td:not(.".concat(_m_classes.VIRTUAL_CELL_CLASS, ")")).eq(position.columnIndex)
                    };
                    _proto._dom_getAllDayPanelCell = function(columnIndex) {
                        return this._$allDayPanel.find("tr").eq(0).find("td").eq(columnIndex)
                    };
                    _proto._getCells = function(allDay, direction) {
                        const cellClass = allDay ? ALL_DAY_TABLE_CELL_CLASS : DATE_TABLE_CELL_CLASS;
                        if ("vertical" === direction) {
                            let result = [];
                            for (let i = 1;; i++) {
                                const cells = this.$element().find("tr .".concat(cellClass, ":nth-child(").concat(i, ")"));
                                if (!cells.length) {
                                    break
                                }
                                result = result.concat(cells.toArray())
                            }
                            return (0, _renderer.default)(result)
                        }
                        return this.$element().find(".".concat(cellClass))
                    };
                    _proto._getFirstAndLastDataTableCell = function() {
                        const selector = this.isVirtualScrolling() ? ".".concat(DATE_TABLE_CELL_CLASS, ", .").concat(_m_classes.VIRTUAL_CELL_CLASS) : ".".concat(DATE_TABLE_CELL_CLASS);
                        const $cells = this.$element().find(selector);
                        return [$cells[0], $cells[$cells.length - 1]]
                    };
                    _proto._getAllCells = function(allDay) {
                        if (this._isVerticalGroupedWorkSpace()) {
                            return this._$dateTable.find("td:not(.".concat(_m_classes.VIRTUAL_CELL_CLASS, ")"))
                        }
                        const cellClass = allDay && this.supportAllDayRow() ? ALL_DAY_TABLE_CELL_CLASS : DATE_TABLE_CELL_CLASS;
                        return this.$element().find(".".concat(cellClass))
                    };
                    _proto._setHorizontalGroupHeaderCellsHeight = function() {
                        const {
                            height: height
                        } = (0, _position.getBoundingRect)(this._$dateTable.get(0));
                        (0, _size.setOuterHeight)(this._$groupTable, height)
                    };
                    _proto._getGroupHeaderCells = function() {
                        return this.$element().find(".".concat("dx-scheduler-group-header"))
                    };
                    _proto._getScrollCoordinates = function(hours, minutes, date, groupIndex, allDay) {
                        const currentDate = date || new Date(this.option("currentDate"));
                        const startDayHour = this.option("startDayHour");
                        const endDayHour = this.option("endDayHour");
                        if (hours < startDayHour) {
                            hours = startDayHour
                        }
                        if (hours >= endDayHour) {
                            hours = endDayHour - 1
                        }
                        currentDate.setHours(hours, minutes, 0, 0);
                        const cell = this.viewDataProvider.findGlobalCellPosition(currentDate, groupIndex, allDay);
                        const {
                            position: position,
                            cellData: cellData
                        } = cell;
                        return this.virtualScrollingDispatcher.calculateCoordinatesByDataAndPosition(cellData, position, currentDate, (0, _base.isDateAndTimeView)(this.type), "vertical" === this.viewDirection)
                    };
                    _proto._isOutsideScrollable = function(target, event) {
                        const $dateTableScrollableElement = this._dateTableScrollable.$element();
                        const scrollableSize = (0, _position.getBoundingRect)($dateTableScrollableElement.get(0));
                        const window = (0, _window.getWindow)();
                        const isTargetInAllDayPanel = !(0, _renderer.default)(target).closest($dateTableScrollableElement).length;
                        const isOutsideHorizontalScrollable = event.pageX < scrollableSize.left || event.pageX > scrollableSize.left + scrollableSize.width + (window.scrollX || 0);
                        const isOutsideVerticalScrollable = event.pageY < scrollableSize.top || event.pageY > scrollableSize.top + scrollableSize.height + (window.scrollY || 0);
                        if (isTargetInAllDayPanel && !isOutsideHorizontalScrollable) {
                            return false
                        }
                        return isOutsideVerticalScrollable || isOutsideHorizontalScrollable
                    };
                    _proto.setCellDataCache = function(cellCoordinates, groupIndex, $cell) {
                        const key = JSON.stringify({
                            rowIndex: cellCoordinates.rowIndex,
                            columnIndex: cellCoordinates.columnIndex,
                            groupIndex: groupIndex
                        });
                        this.cache.set(key, this.getCellData($cell))
                    };
                    _proto.setCellDataCacheAlias = function(appointment, geometry) {
                        const key = JSON.stringify({
                            rowIndex: appointment.rowIndex,
                            columnIndex: appointment.columnIndex,
                            groupIndex: appointment.groupIndex
                        });
                        const aliasKey = JSON.stringify({
                            top: geometry.top,
                            left: geometry.left
                        });
                        this.cache.set(aliasKey, this.cache.get(key))
                    };
                    _proto.supportAllDayRow = function() {
                        return true
                    };
                    _proto.keepOriginalHours = function() {
                        return false
                    };
                    _proto._filterCellDataFields = function(cellData) {
                        return (0, _extend.extend)(true, {}, {
                            startDate: cellData.startDate,
                            endDate: cellData.endDate,
                            groups: cellData.groups,
                            groupIndex: cellData.groupIndex,
                            allDay: cellData.allDay
                        })
                    };
                    _proto.getCellData = function($cell) {
                        const cellData = this._getFullCellData($cell) || {};
                        return this._filterCellDataFields(cellData)
                    };
                    _proto._getFullCellData = function($cell) {
                        const currentCell = $cell[0];
                        if (currentCell) {
                            return this._getDataByCell($cell)
                        }
                        return
                    };
                    _proto._getVirtualRowOffset = function() {
                        return this.virtualScrollingDispatcher.virtualRowOffset
                    };
                    _proto._getVirtualCellOffset = function() {
                        return this.virtualScrollingDispatcher.virtualCellOffset
                    };
                    _proto._getDataByCell = function($cell) {
                        const rowIndex = $cell.parent().index() - this.virtualScrollingDispatcher.topVirtualRowsCount;
                        const columnIndex = $cell.index() - this.virtualScrollingDispatcher.leftVirtualCellsCount;
                        const {
                            viewDataProvider: viewDataProvider
                        } = this;
                        const isAllDayCell = this._hasAllDayClass($cell);
                        const cellData = viewDataProvider.getCellData(rowIndex, columnIndex, isAllDayCell);
                        return cellData || void 0
                    };
                    _proto.isGroupedByDate = function() {
                        return this.option("groupByDate") && this._isHorizontalGroupedWorkSpace() && this._getGroupCount() > 0
                    };
                    _proto.getCellIndexByDate = function(date, inAllDayRow) {
                        const {
                            viewDataGenerator: viewDataGenerator
                        } = this.viewDataProvider;
                        const timeInterval = inAllDayRow ? 864e5 : viewDataGenerator.getInterval(this.option("hoursInterval"));
                        const startViewDateOffset = (0, _base.getStartViewDateTimeOffset)(this.getStartViewDate(), this.option("startDayHour"));
                        const dateTimeStamp = this._getIntervalBetween(date, inAllDayRow) + startViewDateOffset;
                        let index = Math.floor(dateTimeStamp / timeInterval);
                        if (inAllDayRow) {
                            index = this._updateIndex(index)
                        }
                        if (index < 0) {
                            index = 0
                        }
                        return index
                    };
                    _proto.getDroppableCellIndex = function() {
                        const $droppableCell = this._getDroppableCell();
                        const $row = $droppableCell.parent();
                        const rowIndex = $row.index();
                        return rowIndex * $row.find("td").length + $droppableCell.index()
                    };
                    _proto.getDataByDroppableCell = function() {
                        const cellData = this.getCellData((0, _renderer.default)(this._getDroppableCell()));
                        const {
                            allDay: allDay
                        } = cellData;
                        const {
                            startDate: startDate
                        } = cellData;
                        const {
                            endDate: endDate
                        } = cellData;
                        return {
                            startDate: startDate,
                            endDate: endDate,
                            allDay: allDay,
                            groups: cellData.groups
                        }
                    };
                    _proto.getDateRange = function() {
                        return [this.getStartViewDate(), this.getEndViewDateByEndDayHour()]
                    };
                    _proto.getCellMinWidth = function() {
                        return 75
                    };
                    _proto.getRoundedCellWidth = function(groupIndex, startIndex, cellCount) {
                        if (groupIndex < 0 || !(0, _window.hasWindow)()) {
                            return 0
                        }
                        const $row = this.$element().find(".".concat(_m_classes.DATE_TABLE_ROW_CLASS)).eq(0);
                        let width = 0;
                        const $cells = $row.find(".".concat(DATE_TABLE_CELL_CLASS));
                        const totalCellCount = this._getCellCount() * groupIndex;
                        cellCount = cellCount || this._getCellCount();
                        if (!(0, _type.isDefined)(startIndex)) {
                            startIndex = totalCellCount
                        }
                        for (let i = startIndex; i < totalCellCount + cellCount; i++) {
                            const element = (0, _renderer.default)($cells).eq(i).get(0);
                            const elementWidth = element ? (0, _position.getBoundingRect)(element).width : 0;
                            width += elementWidth
                        }
                        return width / (totalCellCount + cellCount - startIndex)
                    };
                    _proto.getCellWidth = function() {
                        return (0, _m_position_helper.getCellWidth)(this.getDOMElementsMetaData())
                    };
                    _proto.getCellHeight = function() {
                        return (0, _m_position_helper.getCellHeight)(this.getDOMElementsMetaData())
                    };
                    _proto.getAllDayHeight = function() {
                        return (0, _m_position_helper.getAllDayHeight)(this.option("showAllDayPanel"), this._isVerticalGroupedWorkSpace(), this.getDOMElementsMetaData())
                    };
                    _proto.getMaxAllowedPosition = function(groupIndex) {
                        return (0, _m_position_helper.getMaxAllowedPosition)(groupIndex, this.viewDataProvider, this.option("rtlEnabled"), this.getDOMElementsMetaData())
                    };
                    _proto.getAllDayOffset = function() {
                        return this._groupedStrategy.getAllDayOffset()
                    };
                    _proto.getCellIndexByCoordinates = function(coordinates, allDay) {
                        var _a, _b, _c;
                        const {
                            horizontalScrollingState: horizontalScrollingState,
                            verticalScrollingState: verticalScrollingState
                        } = this.virtualScrollingDispatcher;
                        const cellCount = null !== (_a = null === horizontalScrollingState || void 0 === horizontalScrollingState ? void 0 : horizontalScrollingState.itemCount) && void 0 !== _a ? _a : this._getTotalCellCount(this._getGroupCount());
                        const cellWidth = this.getCellWidth();
                        const cellHeight = allDay ? this.getAllDayHeight() : this.getCellHeight();
                        const leftCoordinateOffset = null !== (_b = null === horizontalScrollingState || void 0 === horizontalScrollingState ? void 0 : horizontalScrollingState.virtualItemSizeBefore) && void 0 !== _b ? _b : 0;
                        const topCoordinateOffset = null !== (_c = null === verticalScrollingState || void 0 === verticalScrollingState ? void 0 : verticalScrollingState.virtualItemSizeBefore) && void 0 !== _c ? _c : 0;
                        const topIndex = Math.floor(Math.floor(coordinates.top - topCoordinateOffset) / Math.floor(cellHeight));
                        let leftIndex = (coordinates.left - leftCoordinateOffset) / cellWidth;
                        leftIndex = Math.floor(leftIndex + .05);
                        if (this._isRTL()) {
                            leftIndex = cellCount - leftIndex - 1
                        }
                        return cellCount * topIndex + leftIndex
                    };
                    _proto.getStartViewDate = function() {
                        return this.viewDataProvider.getStartViewDate()
                    };
                    _proto.getEndViewDate = function() {
                        return this.viewDataProvider.getLastCellEndDate()
                    };
                    _proto.getEndViewDateByEndDayHour = function() {
                        return this.viewDataProvider.getLastViewDateByEndDayHour(this.option("endDayHour"))
                    };
                    _proto.getCellDuration = function() {
                        return (0, _base.getCellDuration)(this.type, this.option("startDayHour"), this.option("endDayHour"), this.option("hoursInterval"))
                    };
                    _proto.getIntervalDuration = function(allDay) {
                        return allDay ? toMs("day") : this.getCellDuration()
                    };
                    _proto.getVisibleDayDuration = function() {
                        const startDayHour = this.option("startDayHour");
                        const endDayHour = this.option("endDayHour");
                        const hoursInterval = this.option("hoursInterval");
                        return this.viewDataProvider.getVisibleDayDuration(startDayHour, endDayHour, hoursInterval)
                    };
                    _proto.getGroupBounds = function(coordinates) {
                        const groupBounds = this._groupedStrategy instanceof _m_work_space_grouped_strategy_vertical.default ? this.getGroupBoundsVertical(coordinates.groupIndex) : this.getGroupBoundsHorizontal(coordinates);
                        return this._isRTL() ? this.getGroupBoundsRtlCorrection(groupBounds) : groupBounds
                    };
                    _proto.getGroupBoundsVertical = function(groupIndex) {
                        const $firstAndLastCells = this._getFirstAndLastDataTableCell();
                        return this._groupedStrategy.getGroupBoundsOffset(groupIndex, $firstAndLastCells)
                    };
                    _proto.getGroupBoundsHorizontal = function(coordinates) {
                        const cellCount = this._getCellCount();
                        const $cells = this._getCells();
                        const cellWidth = this.getCellWidth();
                        const {
                            groupedDataMap: groupedDataMap
                        } = this.viewDataProvider;
                        return this._groupedStrategy.getGroupBoundsOffset(cellCount, $cells, cellWidth, coordinates, groupedDataMap)
                    };
                    _proto.getGroupBoundsRtlCorrection = function(groupBounds) {
                        const cellWidth = this.getCellWidth();
                        return _extends(_extends({}, groupBounds), {
                            left: groupBounds.right - 2 * cellWidth,
                            right: groupBounds.left + 2 * cellWidth
                        })
                    };
                    _proto.needRecalculateResizableArea = function() {
                        return this._isVerticalGroupedWorkSpace() && 0 !== this.getScrollable().scrollTop()
                    };
                    _proto.getCellDataByCoordinates = function(coordinates, allDay) {
                        const key = JSON.stringify({
                            top: coordinates.top,
                            left: coordinates.left
                        });
                        return this.cache.get(key, () => {
                            const $cells = this._getCells(allDay);
                            const cellIndex = this.getCellIndexByCoordinates(coordinates, allDay);
                            const $cell = $cells.eq(cellIndex);
                            return this.getCellData($cell)
                        })
                    };
                    _proto.getVisibleBounds = function() {
                        const result = {};
                        const $scrollable = this.getScrollable().$element();
                        const cellHeight = this.getCellHeight();
                        const scrolledCellCount = this.getScrollableScrollTop() / cellHeight;
                        const totalCellCount = scrolledCellCount + (0, _size.getHeight)($scrollable) / cellHeight;
                        result.top = {
                            hours: Math.floor(scrolledCellCount * this.option("hoursInterval")) + this.option("startDayHour"),
                            minutes: scrolledCellCount % 2 ? 30 : 0
                        };
                        result.bottom = {
                            hours: Math.floor(totalCellCount * this.option("hoursInterval")) + this.option("startDayHour"),
                            minutes: Math.floor(totalCellCount) % 2 ? 30 : 0
                        };
                        return result
                    };
                    _proto.updateScrollPosition = function(date, groups) {
                        let allDay = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;
                        const newDate = this.timeZoneCalculator.createDate(date, {
                            path: "toGrid"
                        });
                        const inAllDayRow = allDay && this.isAllDayPanelVisible;
                        if (this.needUpdateScrollPosition(newDate, groups, inAllDayRow)) {
                            this.scrollTo(newDate, groups, inAllDayRow, false)
                        }
                    };
                    _proto.needUpdateScrollPosition = function(date, groups, inAllDayRow) {
                        const cells = this._getCellsInViewport(inAllDayRow);
                        const groupIndex = this._isGroupsSpecified(groups) ? this._getGroupIndexByResourceId(groups) : 0;
                        const time = date.getTime();
                        const trimmedTime = _date.default.trimTime(date).getTime();
                        return cells.reduce((currentResult, cell) => {
                            const {
                                startDate: cellStartDate,
                                endDate: cellEndDate,
                                groupIndex: cellGroupIndex
                            } = this.getCellData(cell);
                            const cellStartTime = cellStartDate.getTime();
                            const cellEndTime = cellEndDate.getTime();
                            if ((!inAllDayRow && cellStartTime <= time && time < cellEndTime || inAllDayRow && trimmedTime === cellStartTime) && groupIndex === cellGroupIndex) {
                                return false
                            }
                            return currentResult
                        }, true)
                    };
                    _proto._getCellsInViewport = function(inAllDayRow) {
                        const $scrollable = this.getScrollable().$element();
                        const cellHeight = this.getCellHeight();
                        const cellWidth = this.getCellWidth();
                        const totalColumnCount = this._getTotalCellCount(this._getGroupCount());
                        const scrollableScrollTop = this.getScrollableScrollTop();
                        const scrollableScrollLeft = this.getScrollableScrollLeft();
                        const fullScrolledRowCount = scrollableScrollTop / cellHeight - this.virtualScrollingDispatcher.topVirtualRowsCount;
                        let scrolledRowCount = Math.floor(fullScrolledRowCount);
                        if (scrollableScrollTop % cellHeight !== 0) {
                            scrolledRowCount += 1
                        }
                        const fullScrolledColumnCount = scrollableScrollLeft / cellWidth;
                        let scrolledColumnCount = Math.floor(fullScrolledColumnCount);
                        if (scrollableScrollLeft % cellWidth !== 0) {
                            scrolledColumnCount += 1
                        }
                        const rowCount = Math.floor(fullScrolledRowCount + (0, _size.getHeight)($scrollable) / cellHeight);
                        const columnCount = Math.floor(fullScrolledColumnCount + (0, _size.getWidth)($scrollable) / cellWidth);
                        const $cells = this._getAllCells(inAllDayRow);
                        const result = [];
                        $cells.each((function(index) {
                            const $cell = (0, _renderer.default)(this);
                            const columnIndex = index % totalColumnCount;
                            const rowIndex = index / totalColumnCount;
                            if (scrolledColumnCount <= columnIndex && columnIndex < columnCount && scrolledRowCount <= rowIndex && rowIndex < rowCount) {
                                result.push($cell)
                            }
                        }));
                        return result
                    };
                    _proto.scrollToTime = function(hours, minutes, date) {
                        if (!this._isValidScrollDate(date)) {
                            return
                        }
                        const coordinates = this._getScrollCoordinates(hours, minutes, date);
                        const scrollable = this.getScrollable();
                        scrollable.scrollBy({
                            top: coordinates.top - scrollable.scrollTop(),
                            left: 0
                        })
                    };
                    _proto.scrollTo = function(date, groups) {
                        let allDay = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;
                        let throwWarning = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : true;
                        if (!this._isValidScrollDate(date, throwWarning)) {
                            return
                        }
                        const groupIndex = this._getGroupCount() && groups ? this._getGroupIndexByResourceId(groups) : 0;
                        const isScrollToAllDay = allDay && this.isAllDayPanelVisible;
                        const coordinates = this._getScrollCoordinates(date.getHours(), date.getMinutes(), date, groupIndex, isScrollToAllDay);
                        const scrollable = this.getScrollable();
                        const $scrollable = scrollable.$element();
                        const cellWidth = this.getCellWidth();
                        const offset = this.option("rtlEnabled") ? cellWidth : 0;
                        const scrollableHeight = (0, _size.getHeight)($scrollable);
                        const scrollableWidth = (0, _size.getWidth)($scrollable);
                        const cellHeight = this.getCellHeight();
                        const xShift = (scrollableWidth - cellWidth) / 2;
                        const yShift = (scrollableHeight - cellHeight) / 2;
                        const left = coordinates.left - scrollable.scrollLeft() - xShift - offset;
                        let top = coordinates.top - scrollable.scrollTop() - yShift;
                        if (isScrollToAllDay && !this._isVerticalGroupedWorkSpace()) {
                            top = 0
                        }
                        if (this.option("templatesRenderAsynchronously")) {
                            setTimeout(() => {
                                scrollable.scrollBy({
                                    left: left,
                                    top: top
                                })
                            })
                        } else {
                            scrollable.scrollBy({
                                left: left,
                                top: top
                            })
                        }
                    };
                    _proto._isValidScrollDate = function(date) {
                        let throwWarning = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : true;
                        const min = this.getStartViewDate();
                        const max = this.getEndViewDate();
                        if (date < min || date > max) {
                            throwWarning && _ui2.default.log("W1008", date);
                            return false
                        }
                        return true
                    };
                    _proto.needApplyCollectorOffset = function() {
                        return false
                    };
                    _proto.removeDroppableCellClass = function($cellElement) {
                        const $cell = $cellElement || this._getDroppableCell();
                        null === $cell || void 0 === $cell ? void 0 : $cell.removeClass("dx-scheduler-date-table-droppable-cell")
                    };
                    _proto._getCoordinatesByCell = function($cell) {
                        const columnIndex = $cell.index() - this.virtualScrollingDispatcher.leftVirtualCellsCount;
                        let rowIndex = $cell.parent().index();
                        const isAllDayCell = this._hasAllDayClass($cell);
                        const isVerticalGrouping = this._isVerticalGroupedWorkSpace();
                        if (!(isAllDayCell && !isVerticalGrouping)) {
                            rowIndex -= this.virtualScrollingDispatcher.topVirtualRowsCount
                        }
                        return {
                            rowIndex: rowIndex,
                            columnIndex: columnIndex
                        }
                    };
                    _proto._isShowAllDayPanel = function() {
                        return this.option("showAllDayPanel")
                    };
                    _proto._getTimePanelCells = function() {
                        return this.$element().find(".".concat("dx-scheduler-time-panel-cell"))
                    };
                    _proto._getRDateTableProps = function() {
                        return {
                            viewData: this.viewDataProvider.viewData,
                            dataCellTemplate: this.option("dataCellTemplate"),
                            addDateTableClass: !this.option("crossScrollingEnabled") || this.isVirtualScrolling(),
                            groupOrientation: this.option("groupOrientation"),
                            addVerticalSizesClassToRows: false
                        }
                    };
                    _proto._updateSelectedCellDataOption = function(selectedCellData, $nextFocusedCell) {
                        const correctedSelectedCellData = selectedCellData.map(_ref3 => {
                            let {
                                startDate: startDate,
                                endDate: endDate,
                                allDay: allDay,
                                groupIndex: groupIndex,
                                groups: groups
                            } = _ref3;
                            return {
                                startDate: startDate,
                                endDate: endDate,
                                allDay: allDay,
                                groupIndex: groupIndex,
                                groups: groups
                            }
                        });
                        this.option("selectedCellData", correctedSelectedCellData);
                        this._selectionChangedAction({
                            selectedCellData: correctedSelectedCellData
                        })
                    };
                    _proto._getCellByData = function(cellData) {
                        const {
                            startDate: startDate,
                            groupIndex: groupIndex,
                            allDay: allDay,
                            index: index
                        } = cellData;
                        const position = this.viewDataProvider.findCellPositionInMap({
                            startDate: startDate,
                            groupIndex: groupIndex,
                            isAllDay: allDay,
                            index: index
                        });
                        if (!position) {
                            return
                        }
                        return allDay && !this._isVerticalGroupedWorkSpace() ? this._dom_getAllDayPanelCell(position.columnIndex) : this._dom_getDateCell(position)
                    };
                    _proto.getDOMElementsMetaData = function() {
                        return this.cache.get("cellElementsMeta", () => ({
                            dateTableCellsMeta: this._getDateTableDOMElementsInfo(),
                            allDayPanelCellsMeta: this._getAllDayPanelDOMElementsInfo()
                        }))
                    };
                    _proto._getDateTableDOMElementsInfo = function() {
                        const dateTableCells = this._getAllCells(false);
                        if (!dateTableCells.length || !(0, _window.hasWindow)()) {
                            return [
                                [{}]
                            ]
                        }
                        const dateTable = this._getDateTable();
                        const dateTableRect = (0, _position.getBoundingRect)(dateTable.get(0));
                        const columnsCount = this.viewDataProvider.getColumnsCount();
                        const result = [];
                        dateTableCells.each((index, cell) => {
                            const rowIndex = Math.floor(index / columnsCount);
                            if (result.length === rowIndex) {
                                result.push([])
                            }
                            this._addCellMetaData(result[rowIndex], cell, dateTableRect)
                        });
                        return result
                    };
                    _proto._getAllDayPanelDOMElementsInfo = function() {
                        const result = [];
                        if (this.isAllDayPanelVisible && !this._isVerticalGroupedWorkSpace() && (0, _window.hasWindow)()) {
                            const allDayCells = this._getAllCells(true);
                            if (!allDayCells.length) {
                                return [{}]
                            }
                            const allDayAppointmentContainer = this._$allDayPanel;
                            const allDayPanelRect = (0, _position.getBoundingRect)(allDayAppointmentContainer.get(0));
                            allDayCells.each((_, cell) => {
                                this._addCellMetaData(result, cell, allDayPanelRect)
                            })
                        }
                        return result
                    };
                    _proto._addCellMetaData = function(cellMetaDataArray, cell, parentRect) {
                        const cellRect = (0, _position.getBoundingRect)(cell);
                        cellMetaDataArray.push({
                            left: cellRect.left - parentRect.left,
                            top: cellRect.top - parentRect.top,
                            width: cellRect.width,
                            height: cellRect.height
                        })
                    };
                    _proto._oldRender_getAllDayCellData = function(groupIndex) {
                        return (cell, rowIndex, columnIndex) => {
                            const validColumnIndex = columnIndex % this._getCellCount();
                            const options = this._getDateGenerationOptions(true);
                            let startDate = this.viewDataProvider.viewDataGenerator.getDateByCellIndices(options, rowIndex, validColumnIndex, this._getCellCountInDay());
                            startDate = _date.default.trimTime(startDate);
                            let validGroupIndex = groupIndex || 0;
                            if (this.isGroupedByDate()) {
                                validGroupIndex = Math.floor(columnIndex % this._getGroupCount())
                            } else if (this._isHorizontalGroupedWorkSpace()) {
                                validGroupIndex = Math.floor(columnIndex / this._getCellCount())
                            }
                            const data = {
                                startDate: startDate,
                                endDate: startDate,
                                allDay: true,
                                groupIndex: validGroupIndex
                            };
                            const groupsArray = (0, _m_utils2.getCellGroups)(validGroupIndex, this.option("groups"));
                            if (groupsArray.length) {
                                data.groups = (0, _m_utils2.getGroupsObjectFromGroupsArray)(groupsArray)
                            }
                            return {
                                key: "dxCellData",
                                value: data
                            }
                        }
                    };
                    _proto.renderRWorkSpace = function() {
                        let {
                            header: header,
                            timePanel: timePanel,
                            dateTable: dateTable,
                            allDayPanel: allDayPanel
                        } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : DEFAULT_WORKSPACE_RENDER_OPTIONS.renderComponents;
                        if (header) {
                            this.renderRHeaderPanel()
                        }
                        if (timePanel) {
                            this.renderRTimeTable()
                        }
                        if (dateTable) {
                            this.renderRDateTable()
                        }
                        if (allDayPanel) {
                            this.renderRAllDayPanel()
                        }
                    };
                    _proto.renderRDateTable = function() {
                        _m_utils.utils.renovation.renderComponent(this, this._$dateTable, _layout.default, "renovatedDateTable", this._getRDateTableProps())
                    };
                    _proto.renderRGroupPanel = function() {
                        var _a;
                        const options = {
                            groups: this.option("groups"),
                            groupOrientation: this.option("groupOrientation"),
                            groupByDate: this.isGroupedByDate(),
                            resourceCellTemplate: this.option("resourceCellTemplate"),
                            className: this.verticalGroupTableClass,
                            groupPanelData: this.viewDataProvider.getGroupPanelData(this.generateRenderOptions())
                        };
                        if (null === (_a = this.option("groups")) || void 0 === _a ? void 0 : _a.length) {
                            this._attachGroupCountClass();
                            _m_utils.utils.renovation.renderComponent(this, this._getGroupHeaderContainer(), _group_panel.default, "renovatedGroupPanel", options)
                        } else {
                            this._detachGroupCountClass()
                        }
                    };
                    _proto.renderRAllDayPanel = function() {
                        var _a;
                        const visible = this.isAllDayPanelVisible && !this.isGroupedAllDayPanel();
                        if (visible) {
                            this._toggleAllDayVisibility(false);
                            const options = _extends({
                                viewData: this.viewDataProvider.viewData,
                                dataCellTemplate: this.option("dataCellTemplate"),
                                startCellIndex: 0
                            }, (null === (_a = this.virtualScrollingDispatcher.horizontalVirtualScrolling) || void 0 === _a ? void 0 : _a.getRenderState()) || {});
                            _m_utils.utils.renovation.renderComponent(this, this._$allDayTable, _table.default, "renovatedAllDayPanel", options);
                            _m_utils.utils.renovation.renderComponent(this, this._$allDayTitle, _title.default, "renovatedAllDayPanelTitle", {})
                        }
                        this._toggleAllDayVisibility(true)
                    };
                    _proto.renderRTimeTable = function() {
                        _m_utils.utils.renovation.renderComponent(this, this._$timePanel, _layout3.default, "renovatedTimePanel", {
                            timePanelData: this.viewDataProvider.timePanelData,
                            timeCellTemplate: this.option("timeCellTemplate"),
                            groupOrientation: this.option("groupOrientation")
                        })
                    };
                    _proto.renderRHeaderPanel = function() {
                        let isRenderDateHeader = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : true;
                        var _a;
                        if (null === (_a = this.option("groups")) || void 0 === _a ? void 0 : _a.length) {
                            this._attachGroupCountClass()
                        } else {
                            this._detachGroupCountClass()
                        }
                        _m_utils.utils.renovation.renderComponent(this, this._$thead, this.renovatedHeaderPanelComponent, "renovatedHeaderPanel", {
                            dateHeaderData: this.viewDataProvider.dateHeaderData,
                            groupPanelData: this.viewDataProvider.getGroupPanelData(this.generateRenderOptions()),
                            dateCellTemplate: this.option("dateCellTemplate"),
                            timeCellTemplate: this.option("timeCellTemplate"),
                            groups: this.option("groups"),
                            groupByDate: this.isGroupedByDate(),
                            groupOrientation: this.option("groupOrientation"),
                            resourceCellTemplate: this.option("resourceCellTemplate"),
                            isRenderDateHeader: isRenderDateHeader
                        })
                    };
                    _proto.initDragBehavior = function(scheduler) {
                        if (!this.dragBehavior && scheduler) {
                            this.dragBehavior = new _m_appointment_drag_behavior.default(scheduler);
                            const $rootElement = (0, _renderer.default)(scheduler.element());
                            this._createDragBehavior(this.getWorkArea(), $rootElement);
                            this._createDragBehavior(this._$allDayPanel, $rootElement)
                        }
                    };
                    _proto._createDragBehavior = function($targetElement, $rootElement) {
                        const options = {
                            getItemData: (itemElement, appointments) => appointments._getItemData(itemElement),
                            getItemSettings: $itemElement => $itemElement.data(_m_constants.APPOINTMENT_SETTINGS_KEY)
                        };
                        this._createDragBehaviorBase($targetElement, $rootElement, options)
                    };
                    _proto._createDragBehaviorBase = function(targetElement, rootElement, options) {
                        const container = this.$element().find(".".concat(_m_classes.FIXED_CONTAINER_CLASS));
                        this.dragBehavior.addTo(targetElement, createDragBehaviorConfig(container, rootElement, this.isDefaultDraggingMode, this.dragBehavior, () => {
                            if (!this.isDefaultDraggingMode) {
                                this.preventDefaultDragging = false
                            }
                        }, () => {
                            if (!this.isDefaultDraggingMode) {
                                this.preventDefaultDragging = true
                            }
                        }, () => this._getDroppableCell(), () => this._getDateTables(), () => this.removeDroppableCellClass(), () => this.getCellWidth(), options))
                    };
                    _proto._isRenderHeaderPanelEmptyCell = function() {
                        return this._isVerticalGroupedWorkSpace()
                    };
                    _proto._dispose = function() {
                        _WidgetObserver.prototype._dispose.call(this);
                        this.virtualScrollingDispatcher.dispose()
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_WidgetObserver.prototype._getDefaultOptions.call(this), {
                            currentDate: new Date,
                            intervalCount: 1,
                            startDate: null,
                            firstDayOfWeek: void 0,
                            startDayHour: 0,
                            endDayHour: 24,
                            viewOffset: 0,
                            hoursInterval: .5,
                            activeStateEnabled: true,
                            hoverStateEnabled: true,
                            groups: [],
                            showAllDayPanel: true,
                            allDayExpanded: false,
                            onCellClick: null,
                            crossScrollingEnabled: false,
                            dataCellTemplate: null,
                            timeCellTemplate: null,
                            resourceCellTemplate: null,
                            dateCellTemplate: null,
                            allowMultipleCellSelection: true,
                            indicatorTime: new Date,
                            indicatorUpdateInterval: 5 * toMs("minute"),
                            shadeUntilCurrentTime: true,
                            groupOrientation: "horizontal",
                            selectedCellData: [],
                            groupByDate: false,
                            scrolling: {
                                mode: "standard"
                            },
                            allDayPanelMode: "all",
                            renovateRender: true,
                            height: void 0,
                            draggingMode: "outlook",
                            onScrollEnd: () => {},
                            getHeaderHeight: void 0,
                            onRenderAppointments: () => {},
                            onShowAllDayPanel: () => {},
                            onSelectedCellsClick: () => {},
                            timeZoneCalculator: void 0,
                            schedulerHeight: void 0,
                            schedulerWidth: void 0
                        })
                    };
                    _proto._optionChanged = function(args) {
                        switch (args.name) {
                            case "startDayHour":
                            case "endDayHour":
                            case "viewOffset":
                            case "dateCellTemplate":
                            case "resourceCellTemplate":
                            case "dataCellTemplate":
                            case "timeCellTemplate":
                            case "hoursInterval":
                            case "firstDayOfWeek":
                            case "currentDate":
                            case "startDate":
                                this._cleanWorkSpace();
                                break;
                            case "groups":
                                this._cleanView();
                                this._removeAllDayElements();
                                this._initGrouping();
                                this.repaint();
                                break;
                            case "groupOrientation":
                                this._initGroupedStrategy();
                                this._createAllDayPanelElements();
                                this._removeAllDayElements();
                                this._cleanWorkSpace();
                                this._toggleGroupByDateClass();
                                break;
                            case "showAllDayPanel":
                                if (this._isVerticalGroupedWorkSpace()) {
                                    this._cleanView();
                                    this._removeAllDayElements();
                                    this._initGrouping();
                                    this.repaint()
                                } else if (!this.isRenovatedRender()) {
                                    this._toggleAllDayVisibility(true)
                                } else {
                                    this.renderWorkSpace()
                                }
                                break;
                            case "allDayExpanded":
                                this._changeAllDayVisibility();
                                this._attachTablesEvents();
                                this._updateScrollable();
                                break;
                            case "onSelectionChanged":
                                this._createSelectionChangedAction();
                                break;
                            case "onCellClick":
                                this._createCellClickAction();
                                break;
                            case "onCellContextMenu":
                                this._attachContextMenuEvent();
                                break;
                            case "intervalCount":
                                this._cleanWorkSpace();
                                this._toggleWorkSpaceCountClass();
                                break;
                            case "groupByDate":
                                this._cleanWorkSpace();
                                this._toggleGroupByDateClass();
                                break;
                            case "crossScrollingEnabled":
                                this._toggleHorizontalScrollClass();
                                this._dateTableScrollable.option(this._dateTableScrollableConfig());
                                break;
                            case "allDayPanelMode":
                                this.updateShowAllDayPanel();
                                this.updateAppointments();
                                break;
                            case "width":
                                _WidgetObserver.prototype._optionChanged.call(this, args);
                                this._dimensionChanged();
                                break;
                            case "timeZoneCalculator":
                            case "allowMultipleCellSelection":
                            case "selectedCellData":
                                break;
                            case "renovateRender":
                            case "scrolling":
                                this.repaint();
                                break;
                            case "schedulerHeight":
                            case "schedulerWidth":
                                this.virtualScrollingDispatcher.updateDimensions(true);
                                break;
                            default:
                                _WidgetObserver.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto.updateShowAllDayPanel = function() {
                        const isHiddenAllDayPanel = "hidden" === this.option("allDayPanelMode");
                        this.option("onShowAllDayPanel")(!isHiddenAllDayPanel)
                    };
                    _proto._getVirtualScrollingDispatcherOptions = function() {
                        return {
                            getCellHeight: this.getCellHeight.bind(this),
                            getCellWidth: this.getCellWidth.bind(this),
                            getCellMinWidth: this.getCellMinWidth.bind(this),
                            isRTL: this._isRTL.bind(this),
                            getSchedulerHeight: () => this.option("schedulerHeight"),
                            getSchedulerWidth: () => this.option("schedulerWidth"),
                            getViewHeight: () => this.$element().height ? this.$element().height() : (0, _size.getHeight)(this.$element()),
                            getViewWidth: () => this.$element().width ? this.$element().width() : (0, _size.getWidth)(this.$element()),
                            getWindowHeight: () => (0, _window.getWindow)().innerHeight,
                            getWindowWidth: () => (0, _window.getWindow)().innerWidth,
                            getScrolling: () => this.option("scrolling"),
                            getScrollableOuterWidth: this.getScrollableOuterWidth.bind(this),
                            getScrollable: this.getScrollable.bind(this),
                            createAction: this._createAction.bind(this),
                            updateRender: this.updateRender.bind(this),
                            updateGrid: this.updateGrid.bind(this),
                            getGroupCount: this._getGroupCount.bind(this),
                            isVerticalGrouping: this._isVerticalGroupedWorkSpace.bind(this),
                            getTotalRowCount: this._getTotalRowCount.bind(this),
                            getTotalCellCount: this._getTotalCellCount.bind(this)
                        }
                    };
                    _proto._cleanWorkSpace = function() {
                        this._cleanView();
                        this._toggleGroupedClass();
                        this._toggleWorkSpaceWithOddCells();
                        this.virtualScrollingDispatcher.updateDimensions(true);
                        this._renderView();
                        this.option("crossScrollingEnabled") && this._setTableSizes();
                        this.cache.clear()
                    };
                    _proto._init = function() {
                        this._scrollSync = {};
                        this._viewDataProvider = null;
                        this._cellsSelectionState = null;
                        this._activeStateUnit = CELL_SELECTOR;
                        _WidgetObserver.prototype._init.call(this);
                        this._initGrouping();
                        this._toggleHorizontalScrollClass();
                        this._toggleWorkSpaceCountClass();
                        this._toggleGroupByDateClass();
                        this._toggleWorkSpaceWithOddCells();
                        this.$element().addClass("dx-scheduler-work-space").addClass(this._getElementClass())
                    };
                    _proto._initPositionHelper = function() {
                        this.positionHelper = new _m_position_helper.PositionHelper({
                            key: this.option("key"),
                            viewDataProvider: this.viewDataProvider,
                            viewStartDayHour: this.option("startDayHour"),
                            viewEndDayHour: this.option("endDayHour"),
                            cellDuration: this.getCellDuration(),
                            groupedStrategy: this._groupedStrategy,
                            isGroupedByDate: this.isGroupedByDate(),
                            rtlEnabled: this.option("rtlEnabled"),
                            startViewDate: this.getStartViewDate(),
                            isVerticalGrouping: this._isVerticalGroupedWorkSpace(),
                            groupCount: this._getGroupCount(),
                            isVirtualScrolling: this.isVirtualScrolling(),
                            getDOMMetaDataCallback: this.getDOMElementsMetaData.bind(this)
                        })
                    };
                    _proto._initGrouping = function() {
                        this._initGroupedStrategy();
                        this._toggleGroupingDirectionClass();
                        this._toggleGroupByDateClass()
                    };
                    _proto.isVerticalOrientation = function() {
                        var _a;
                        const orientation = (null === (_a = this.option("groups")) || void 0 === _a ? void 0 : _a.length) ? this.option("groupOrientation") : this._getDefaultGroupStrategy();
                        return "vertical" === orientation
                    };
                    _proto._initGroupedStrategy = function() {
                        const Strategy = this.isVerticalOrientation() ? _m_work_space_grouped_strategy_vertical.default : _m_work_space_grouped_strategy_horizontal.default;
                        this._groupedStrategy = new Strategy(this)
                    };
                    _proto._getDefaultGroupStrategy = function() {
                        return "horizontal"
                    };
                    _proto._toggleHorizontalScrollClass = function() {
                        this.$element().toggleClass("dx-scheduler-work-space-both-scrollbar", this.option("crossScrollingEnabled"))
                    };
                    _proto._toggleGroupByDateClass = function() {
                        this.$element().toggleClass("dx-scheduler-work-space-group-by-date", this.isGroupedByDate())
                    };
                    _proto._toggleWorkSpaceCountClass = function() {
                        this.$element().toggleClass("dx-scheduler-work-space-count", this._isWorkSpaceWithCount())
                    };
                    _proto._toggleWorkSpaceWithOddCells = function() {
                        this.$element().toggleClass("dx-scheduler-work-space-odd-cells", this._isWorkspaceWithOddCells())
                    };
                    _proto._toggleGroupingDirectionClass = function() {
                        this.$element().toggleClass("dx-scheduler-work-space-vertical-grouped", this._isVerticalGroupedWorkSpace())
                    };
                    _proto._getDateTableCellClass = function(rowIndex, columnIndex) {
                        const cellClass = "".concat(DATE_TABLE_CELL_CLASS, " ").concat("dx-scheduler-cell-sizes-horizontal", " ").concat("dx-scheduler-cell-sizes-vertical");
                        return this._groupedStrategy.addAdditionalGroupCellClasses(cellClass, columnIndex + 1, rowIndex, columnIndex)
                    };
                    _proto._getGroupHeaderClass = function(i) {
                        return this._groupedStrategy.addAdditionalGroupCellClasses("dx-scheduler-group-header", i + 1)
                    };
                    _proto._initWorkSpaceUnits = function() {
                        this._$headerPanelContainer = (0, _renderer.default)("<div>").addClass("dx-scheduler-header-panel-container");
                        this._$headerTablesContainer = (0, _renderer.default)("<div>").addClass("dx-scheduler-header-tables-container");
                        this._$headerPanel = (0, _renderer.default)("<table>");
                        this._$thead = (0, _renderer.default)("<thead>").appendTo(this._$headerPanel);
                        this._$headerPanelEmptyCell = (0, _renderer.default)("<div>").addClass("dx-scheduler-header-panel-empty-cell");
                        this._$allDayTable = (0, _renderer.default)("<table>");
                        this._$fixedContainer = (0, _renderer.default)("<div>").addClass(_m_classes.FIXED_CONTAINER_CLASS);
                        this._$allDayContainer = (0, _renderer.default)("<div>").addClass("dx-scheduler-all-day-appointments");
                        this._$dateTableScrollableContent = (0, _renderer.default)("<div>").addClass("dx-scheduler-date-table-scrollable-content");
                        this._$sidebarScrollableContent = (0, _renderer.default)("<div>").addClass("dx-scheduler-side-bar-scrollable-content");
                        this._initAllDayPanelElements();
                        if (this.isRenovatedRender()) {
                            this.createRAllDayPanelElements()
                        } else {
                            this._createAllDayPanelElements()
                        }
                        this._$timePanel = (0, _renderer.default)("<table>").addClass(_m_classes.TIME_PANEL_CLASS);
                        this._$dateTable = (0, _renderer.default)("<table>");
                        this._$dateTableContainer = (0, _renderer.default)("<div>").addClass("dx-scheduler-date-table-container");
                        this._$groupTable = (0, _renderer.default)("<div>").addClass("dx-scheduler-work-space-vertical-group-table")
                    };
                    _proto._initAllDayPanelElements = function() {
                        this._allDayTitles = [];
                        this._allDayTables = [];
                        this._allDayPanels = []
                    };
                    _proto._initDateTableScrollable = function() {
                        const $dateTableScrollable = (0, _renderer.default)("<div>").addClass("dx-scheduler-date-table-scrollable");
                        this._dateTableScrollable = this._createComponent($dateTableScrollable, _ui.default, this._dateTableScrollableConfig());
                        this._scrollSync.dateTable = (0, _getMemoizeScrollTo.getMemoizeScrollTo)(() => this._dateTableScrollable)
                    };
                    _proto._createWorkSpaceElements = function() {
                        if (this.option("crossScrollingEnabled")) {
                            this._createWorkSpaceScrollableElements()
                        } else {
                            this._createWorkSpaceStaticElements()
                        }
                    };
                    _proto._createWorkSpaceStaticElements = function() {
                        var _a;
                        this._$dateTableContainer.append(this._$dateTable);
                        if (this._isVerticalGroupedWorkSpace()) {
                            this._$dateTableContainer.append(this._$allDayContainer);
                            this._$dateTableScrollableContent.append(this._$groupTable, this._$timePanel, this._$dateTableContainer);
                            this._dateTableScrollable.$content().append(this._$dateTableScrollableContent);
                            this._$headerTablesContainer.append(this._$headerPanel)
                        } else {
                            this._$dateTableScrollableContent.append(this._$timePanel, this._$dateTableContainer);
                            this._dateTableScrollable.$content().append(this._$dateTableScrollableContent);
                            this._$headerTablesContainer.append(this._$headerPanel, this._$allDayPanel);
                            null === (_a = this._$allDayPanel) || void 0 === _a ? void 0 : _a.append(this._$allDayContainer, this._$allDayTable)
                        }
                        this._appendHeaderPanelEmptyCellIfNecessary();
                        this._$headerPanelContainer.append(this._$headerTablesContainer);
                        this.$element().append(this._$fixedContainer, this._$headerPanelContainer, this._dateTableScrollable.$element())
                    };
                    _proto._createWorkSpaceScrollableElements = function() {
                        var _a;
                        this.$element().append(this._$fixedContainer);
                        this._$flexContainer = (0, _renderer.default)("<div>").addClass("dx-scheduler-work-space-flex-container");
                        this._createHeaderScrollable();
                        this._headerScrollable.$content().append(this._$headerPanel);
                        this._appendHeaderPanelEmptyCellIfNecessary();
                        this._$headerPanelContainer.append(this._$headerTablesContainer);
                        this.$element().append(this._$headerPanelContainer);
                        this.$element().append(this._$flexContainer);
                        this._createSidebarScrollable();
                        this._$flexContainer.append(this._dateTableScrollable.$element());
                        this._$dateTableContainer.append(this._$dateTable);
                        this._$dateTableScrollableContent.append(this._$dateTableContainer);
                        this._dateTableScrollable.$content().append(this._$dateTableScrollableContent);
                        if (this._isVerticalGroupedWorkSpace()) {
                            this._$dateTableContainer.append(this._$allDayContainer);
                            this._$sidebarScrollableContent.append(this._$groupTable, this._$timePanel)
                        } else {
                            this._headerScrollable.$content().append(this._$allDayPanel);
                            null === (_a = this._$allDayPanel) || void 0 === _a ? void 0 : _a.append(this._$allDayContainer, this._$allDayTable);
                            this._$sidebarScrollableContent.append(this._$timePanel)
                        }
                        this._sidebarScrollable.$content().append(this._$sidebarScrollableContent)
                    };
                    _proto._appendHeaderPanelEmptyCellIfNecessary = function() {
                        this._isRenderHeaderPanelEmptyCell() && this._$headerPanelContainer.append(this._$headerPanelEmptyCell)
                    };
                    _proto._createHeaderScrollable = function() {
                        const $headerScrollable = (0, _renderer.default)("<div>").addClass("dx-scheduler-header-scrollable").appendTo(this._$headerTablesContainer);
                        this._headerScrollable = this._createComponent($headerScrollable, _ui.default, this._headerScrollableConfig());
                        this._scrollSync.header = (0, _getMemoizeScrollTo.getMemoizeScrollTo)(() => this._headerScrollable)
                    };
                    _proto._createSidebarScrollable = function() {
                        const $timePanelScrollable = (0, _renderer.default)("<div>").addClass("dx-scheduler-sidebar-scrollable").appendTo(this._$flexContainer);
                        this._sidebarScrollable = this._createComponent($timePanelScrollable, _ui.default, {
                            useKeyboard: false,
                            showScrollbar: "never",
                            direction: "vertical",
                            useNative: false,
                            updateManually: true,
                            bounceEnabled: false,
                            onScroll: event => {
                                this._scrollSync.dateTable({
                                    top: event.scrollOffset.top
                                })
                            }
                        });
                        this._scrollSync.sidebar = (0, _getMemoizeScrollTo.getMemoizeScrollTo)(() => this._sidebarScrollable)
                    };
                    _proto._attachTableClasses = function() {
                        this._addTableClass(this._$dateTable, _m_classes.DATE_TABLE_CLASS);
                        if (this._isVerticalGroupedWorkSpace()) {
                            const groupCount = this._getGroupCount();
                            for (let i = 0; i < groupCount; i++) {
                                this._addTableClass(this._allDayTables[i], "dx-scheduler-all-day-table")
                            }
                        } else if (!this.isRenovatedRender()) {
                            this._addTableClass(this._$allDayTable, "dx-scheduler-all-day-table")
                        }
                    };
                    _proto._attachHeaderTableClasses = function() {
                        this._addTableClass(this._$headerPanel, "dx-scheduler-header-panel")
                    };
                    _proto._addTableClass = function($el, className) {
                        $el && !$el.hasClass(className) && $el.addClass(className)
                    };
                    _proto._initMarkup = function() {
                        this.cache.clear();
                        this._initWorkSpaceUnits();
                        this._initVirtualScrolling();
                        this._initDateTableScrollable();
                        this._createWorkSpaceElements();
                        _WidgetObserver.prototype._initMarkup.call(this);
                        if (!this.option("crossScrollingEnabled")) {
                            this._attachTableClasses();
                            this._attachHeaderTableClasses()
                        }
                        this._toggleGroupedClass();
                        this._renderView();
                        this._attachEvents()
                    };
                    _proto._render = function() {
                        _WidgetObserver.prototype._render.call(this);
                        this._renderDateTimeIndication();
                        this._setIndicationUpdateInterval()
                    };
                    _proto._toggleGroupedClass = function() {
                        this.$element().toggleClass("dx-scheduler-work-space-grouped", this._getGroupCount() > 0)
                    };
                    _proto._renderView = function() {
                        if (this.isRenovatedRender()) {
                            if (this._isVerticalGroupedWorkSpace()) {
                                this.renderRGroupPanel()
                            }
                        } else {
                            this._applyCellTemplates(this._renderGroupHeader())
                        }
                        this.renderWorkSpace();
                        if (this.isRenovatedRender()) {
                            this.virtualScrollingDispatcher.updateDimensions()
                        }
                        this._updateGroupTableHeight();
                        this.updateHeaderEmptyCellWidth();
                        this._shader = new _m_current_time_shader_vertical.default(this)
                    };
                    _proto.updateCellsSelection = function() {
                        const renderOptions = this.generateRenderOptions();
                        this.viewDataProvider.updateViewData(renderOptions);
                        this.renderRWorkSpace({
                            timePanel: true,
                            dateTable: true,
                            allDayPanel: true
                        })
                    };
                    _proto._renderDateTimeIndication = function() {
                        return (0, _common.noop)()
                    };
                    _proto.renderCurrentDateTimeLineAndShader = function() {
                        return (0, _common.noop)()
                    };
                    _proto.renderCurrentDateTimeIndication = function() {
                        return (0, _common.noop)()
                    };
                    _proto._setIndicationUpdateInterval = function() {
                        return (0, _common.noop)()
                    };
                    _proto._detachGroupCountClass = function() {
                        [..._m_classes.VERTICAL_GROUP_COUNT_CLASSES].forEach(className => {
                            this.$element().removeClass(className)
                        })
                    };
                    _proto._attachGroupCountClass = function() {
                        const className = this._groupedStrategy.getGroupCountClass(this.option("groups"));
                        this.$element().addClass(className)
                    };
                    _proto._getDateHeaderTemplate = function() {
                        return this.option("dateCellTemplate")
                    };
                    _proto._toggleAllDayVisibility = function(isUpdateScrollable) {
                        const showAllDayPanel = this._isShowAllDayPanel();
                        this.$element().toggleClass("dx-scheduler-work-space-all-day", showAllDayPanel);
                        this._changeAllDayVisibility();
                        isUpdateScrollable && this._updateScrollable()
                    };
                    _proto._changeAllDayVisibility = function() {
                        this.cache.clear();
                        this.$element().toggleClass("dx-scheduler-work-space-all-day-collapsed", !this.option("allDayExpanded") && this._isShowAllDayPanel())
                    };
                    _proto._getDateTables = function() {
                        return this._$dateTable.add(this._$allDayTable)
                    };
                    _proto._getDateTable = function() {
                        return this._$dateTable
                    };
                    _proto._removeAllDayElements = function() {
                        this._$allDayTable && this._$allDayTable.remove();
                        this._$allDayTitle && this._$allDayTitle.remove()
                    };
                    _proto._cleanView = function() {
                        var _a, _b, _c;
                        this.cache.clear();
                        this._cleanTableWidths();
                        this.cellsSelectionState.clearSelectedAndFocusedCells();
                        if (!this.isRenovatedRender()) {
                            this._$thead.empty();
                            this._$dateTable.empty();
                            this._$timePanel.empty();
                            this._$groupTable.empty();
                            null === (_a = this._$allDayTable) || void 0 === _a ? void 0 : _a.empty();
                            null === (_b = this._$sidebarTable) || void 0 === _b ? void 0 : _b.empty()
                        }
                        null === (_c = this._shader) || void 0 === _c ? void 0 : _c.clean();
                        delete this._interval
                    };
                    _proto._clean = function() {
                        _events_engine.default.off(_dom_adapter.default.getDocument(), SCHEDULER_CELL_DXPOINTERUP_EVENT_NAME);
                        this._disposeRenovatedComponents();
                        _WidgetObserver.prototype._clean.call(this)
                    };
                    _proto._cleanTableWidths = function() {
                        this._$headerPanel.css("width", "");
                        this._$dateTable.css("width", "");
                        this._$allDayTable && this._$allDayTable.css("width", "")
                    };
                    _proto._disposeRenovatedComponents = function() {
                        var _a, _b, _c, _d, _e;
                        null === (_a = this.renovatedAllDayPanel) || void 0 === _a ? void 0 : _a.dispose();
                        this.renovatedAllDayPanel = void 0;
                        null === (_b = this.renovatedDateTable) || void 0 === _b ? void 0 : _b.dispose();
                        this.renovatedDateTable = void 0;
                        null === (_c = this.renovatedTimePanel) || void 0 === _c ? void 0 : _c.dispose();
                        this.renovatedTimePanel = void 0;
                        null === (_d = this.renovatedGroupPanel) || void 0 === _d ? void 0 : _d.dispose();
                        this.renovatedGroupPanel = void 0;
                        null === (_e = this.renovatedHeaderPanel) || void 0 === _e ? void 0 : _e.dispose();
                        this.renovatedHeaderPanel = void 0
                    };
                    _proto.getGroupedStrategy = function() {
                        return this._groupedStrategy
                    };
                    _proto.getFixedContainer = function() {
                        return this._$fixedContainer
                    };
                    _proto.getAllDayContainer = function() {
                        return this._$allDayContainer
                    };
                    _proto.updateRender = function() {
                        this.renderer.updateRender()
                    };
                    _proto.updateGrid = function() {
                        this.renderer._renderGrid()
                    };
                    _proto.updateAppointments = function() {
                        var _a;
                        this.option("onRenderAppointments")();
                        null === (_a = this.dragBehavior) || void 0 === _a ? void 0 : _a.updateDragSource()
                    };
                    _proto._createAllDayPanelElements = function() {
                        const groupCount = this._getGroupCount();
                        if (this._isVerticalGroupedWorkSpace() && 0 !== groupCount) {
                            for (let i = 0; i < groupCount; i++) {
                                const $allDayTitle = (0, _renderer.default)("<div>").addClass("dx-scheduler-all-day-title").text(_message.default.format("dxScheduler-allDay"));
                                this._allDayTitles.push($allDayTitle);
                                this._$allDayTable = (0, _renderer.default)("<table>");
                                this._allDayTables.push(this._$allDayTable);
                                this._$allDayPanel = (0, _renderer.default)("<div>").addClass("dx-scheduler-all-day-panel").append(this._$allDayTable);
                                this._allDayPanels.push(this._$allDayPanel)
                            }
                        } else {
                            this._$allDayTitle = (0, _renderer.default)("<div>").addClass("dx-scheduler-all-day-title").text(_message.default.format("dxScheduler-allDay")).appendTo(this.$element());
                            this._$allDayTable = (0, _renderer.default)("<table>");
                            this._$allDayPanel = (0, _renderer.default)("<div>").addClass("dx-scheduler-all-day-panel").append(this._$allDayTable)
                        }
                    };
                    _proto.renderWorkSpace = function() {
                        let {
                            generateNewData: generateNewData,
                            renderComponents: renderComponents
                        } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : DEFAULT_WORKSPACE_RENDER_OPTIONS;
                        this.cache.clear();
                        this.viewDataProvider.update(this.generateRenderOptions(), generateNewData);
                        if (this.isRenovatedRender()) {
                            this.renderRWorkSpace(renderComponents)
                        } else {
                            this._renderDateHeader();
                            this._renderTimePanel();
                            this._renderGroupAllDayPanel();
                            this._renderDateTable();
                            this._renderAllDayPanel()
                        }
                        this._initPositionHelper()
                    };
                    _proto._renderGroupHeader = function() {
                        const $container = this._getGroupHeaderContainer();
                        const groupCount = this._getGroupCount();
                        let cellTemplates = [];
                        if (groupCount) {
                            const groupRows = this._makeGroupRows(this.option("groups"), this.option("groupByDate"));
                            this._attachGroupCountClass();
                            $container.append(groupRows.elements);
                            cellTemplates = groupRows.cellTemplates
                        } else {
                            this._detachGroupCountClass()
                        }
                        return cellTemplates
                    };
                    _proto._applyCellTemplates = function(templates) {
                        null === templates || void 0 === templates ? void 0 : templates.forEach(template => {
                            template()
                        })
                    };
                    _proto._makeGroupRows = function(groups, groupByDate) {
                        const tableCreatorStrategy = this._isVerticalGroupedWorkSpace() ? tableCreator.VERTICAL : tableCreator.HORIZONTAL;
                        return tableCreator.makeGroupedTable(tableCreatorStrategy, groups, {
                            groupHeaderRowClass: _m_classes.GROUP_ROW_CLASS,
                            groupRowClass: _m_classes.GROUP_ROW_CLASS,
                            groupHeaderClass: this._getGroupHeaderClass.bind(this),
                            groupHeaderContentClass: _m_classes.GROUP_HEADER_CONTENT_CLASS
                        }, this._getCellCount() || 1, this.option("resourceCellTemplate"), this._getGroupCount(), groupByDate)
                    };
                    _proto._renderDateHeader = function() {
                        const container = this._getDateHeaderContainer();
                        const $headerRow = (0, _renderer.default)("<tr>").addClass("dx-scheduler-header-row");
                        const count = this._getCellCount();
                        const cellTemplate = this._getDateHeaderTemplate();
                        const repeatCount = this._getCalculateHeaderCellRepeatCount();
                        const templateCallbacks = [];
                        const groupByDate = this.isGroupedByDate();
                        if (!groupByDate) {
                            for (let rowIndex = 0; rowIndex < repeatCount; rowIndex++) {
                                for (let columnIndex = 0; columnIndex < count; columnIndex++) {
                                    const templateIndex = rowIndex * count + columnIndex;
                                    this._renderDateHeaderTemplate($headerRow, columnIndex, templateIndex, cellTemplate, templateCallbacks)
                                }
                            }
                            container.append($headerRow)
                        } else {
                            const colSpan = groupByDate ? this._getGroupCount() : 1;
                            for (let columnIndex = 0; columnIndex < count; columnIndex++) {
                                const templateIndex = columnIndex * repeatCount;
                                const cellElement = this._renderDateHeaderTemplate($headerRow, columnIndex, templateIndex, cellTemplate, templateCallbacks);
                                cellElement.attr("colSpan", colSpan)
                            }
                            container.prepend($headerRow)
                        }
                        this._applyCellTemplates(templateCallbacks);
                        return $headerRow
                    };
                    _proto._renderDateHeaderTemplate = function(container, panelCellIndex, templateIndex, cellTemplate, templateCallbacks) {
                        const validTemplateIndex = this.isGroupedByDate() ? Math.floor(templateIndex / this._getGroupCount()) : templateIndex;
                        const {
                            completeDateHeaderMap: completeDateHeaderMap
                        } = this.viewDataProvider;
                        const {
                            text: text,
                            startDate: date
                        } = completeDateHeaderMap[completeDateHeaderMap.length - 1][validTemplateIndex];
                        const $cell = (0, _renderer.default)("<th>").addClass(this._getHeaderPanelCellClass(panelCellIndex)).attr("title", text);
                        if (null === cellTemplate || void 0 === cellTemplate ? void 0 : cellTemplate.render) {
                            templateCallbacks.push(cellTemplate.render.bind(cellTemplate, {
                                model: _extends({
                                    text: text,
                                    date: date
                                }, this._getGroupsForDateHeaderTemplate(templateIndex)),
                                index: templateIndex,
                                container: (0, _element.getPublicElement)($cell)
                            }))
                        } else {
                            $cell.text(text)
                        }
                        container.append($cell);
                        return $cell
                    };
                    _proto._getGroupsForDateHeaderTemplate = function(templateIndex) {
                        let indexMultiplier = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;
                        let groupIndex;
                        let groups;
                        if (this._isHorizontalGroupedWorkSpace() && !this.isGroupedByDate()) {
                            groupIndex = this._getGroupIndex(0, templateIndex * indexMultiplier);
                            const groupsArray = (0, _m_utils2.getCellGroups)(groupIndex, this.option("groups"));
                            groups = (0, _m_utils2.getGroupsObjectFromGroupsArray)(groupsArray)
                        }
                        return {
                            groups: groups,
                            groupIndex: groupIndex
                        }
                    };
                    _proto._getHeaderPanelCellClass = function(i) {
                        const cellClass = "".concat("dx-scheduler-header-panel-cell", " ").concat("dx-scheduler-cell-sizes-horizontal");
                        return this._groupedStrategy.addAdditionalGroupCellClasses(cellClass, i + 1, void 0, void 0, this.isGroupedByDate())
                    };
                    _proto._renderAllDayPanel = function(index) {
                        let cellCount = this._getCellCount();
                        if (!this._isVerticalGroupedWorkSpace()) {
                            cellCount *= this._getGroupCount() || 1
                        }
                        const cellTemplates = this._renderTableBody({
                            container: this._allDayPanels.length ? (0, _element.getPublicElement)(this._allDayTables[index]) : (0, _element.getPublicElement)(this._$allDayTable),
                            rowCount: 1,
                            cellCount: cellCount,
                            cellClass: this._getAllDayPanelCellClass.bind(this),
                            rowClass: "dx-scheduler-all-day-table-row",
                            cellTemplate: this.option("dataCellTemplate"),
                            getCellData: this._oldRender_getAllDayCellData(index),
                            groupIndex: index
                        }, true);
                        this._toggleAllDayVisibility(true);
                        this._applyCellTemplates(cellTemplates)
                    };
                    _proto._renderGroupAllDayPanel = function() {
                        if (this._isVerticalGroupedWorkSpace()) {
                            const groupCount = this._getGroupCount();
                            for (let i = 0; i < groupCount; i++) {
                                this._renderAllDayPanel(i)
                            }
                        }
                    };
                    _proto._getAllDayPanelCellClass = function(i, j) {
                        const cellClass = "".concat(ALL_DAY_TABLE_CELL_CLASS, " ").concat("dx-scheduler-cell-sizes-horizontal");
                        return this._groupedStrategy.addAdditionalGroupCellClasses(cellClass, j + 1)
                    };
                    _proto._renderTimePanel = function() {
                        const repeatCount = this._groupedStrategy.calculateTimeCellRepeatCount();
                        const getData = (rowIndex, field) => {
                            let allDayPanelsCount = 0;
                            if (this.isAllDayPanelVisible) {
                                allDayPanelsCount = 1
                            }
                            if (this.isGroupedAllDayPanel()) {
                                allDayPanelsCount = Math.ceil((rowIndex + 1) / this._getRowCount())
                            }
                            const validRowIndex = rowIndex + allDayPanelsCount;
                            return this.viewDataProvider.completeTimePanelMap[validRowIndex][field]
                        };
                        this._renderTableBody({
                            container: (0, _element.getPublicElement)(this._$timePanel),
                            rowCount: this._getTimePanelRowCount() * repeatCount,
                            cellCount: 1,
                            cellClass: this._getTimeCellClass.bind(this),
                            rowClass: "dx-scheduler-time-panel-row",
                            cellTemplate: this.option("timeCellTemplate"),
                            getCellText: rowIndex => getData(rowIndex, "text"),
                            getCellDate: rowIndex => getData(rowIndex, "startDate"),
                            groupCount: this._getGroupCount(),
                            allDayElements: this._insertAllDayRowsIntoDateTable() ? this._allDayTitles : void 0,
                            getTemplateData: (rowIndex => {
                                if (!this._isVerticalGroupedWorkSpace()) {
                                    return {}
                                }
                                const groupIndex = this._getGroupIndex(rowIndex, 0);
                                const groupsArray = (0, _m_utils2.getCellGroups)(groupIndex, this.option("groups"));
                                const groups = (0, _m_utils2.getGroupsObjectFromGroupsArray)(groupsArray);
                                return {
                                    groupIndex: groupIndex,
                                    groups: groups
                                }
                            }).bind(this)
                        })
                    };
                    _proto._getTimeCellClass = function(i) {
                        const cellClass = "".concat("dx-scheduler-time-panel-cell", " ").concat("dx-scheduler-cell-sizes-vertical");
                        return this._isVerticalGroupedWorkSpace() ? this._groupedStrategy.addAdditionalGroupCellClasses(cellClass, i, i) : cellClass
                    };
                    _proto._renderDateTable = function() {
                        const groupCount = this._getGroupCount();
                        this._renderTableBody({
                            container: (0, _element.getPublicElement)(this._$dateTable),
                            rowCount: this._getTotalRowCount(groupCount),
                            cellCount: this._getTotalCellCount(groupCount),
                            cellClass: this._getDateTableCellClass.bind(this),
                            rowClass: _m_classes.DATE_TABLE_ROW_CLASS,
                            cellTemplate: this.option("dataCellTemplate"),
                            getCellData: (_, rowIndex, columnIndex) => {
                                const isGroupedAllDayPanel = this.isGroupedAllDayPanel();
                                let validRowIndex = rowIndex;
                                if (isGroupedAllDayPanel) {
                                    const rowCount = this._getRowCount();
                                    const allDayPanelsCount = Math.ceil(rowIndex / rowCount);
                                    validRowIndex += allDayPanelsCount
                                }
                                const {
                                    cellData: cellData
                                } = this.viewDataProvider.viewDataMap.dateTableMap[validRowIndex][columnIndex];
                                return {
                                    value: this._filterCellDataFields(cellData),
                                    fullValue: cellData,
                                    key: "dxCellData"
                                }
                            },
                            allDayElements: this._insertAllDayRowsIntoDateTable() ? this._allDayPanels : void 0,
                            groupCount: groupCount,
                            groupByDate: this.option("groupByDate")
                        })
                    };
                    _proto._insertAllDayRowsIntoDateTable = function() {
                        return this._groupedStrategy.insertAllDayRowsIntoDateTable()
                    };
                    _proto._renderTableBody = function(options, delayCellTemplateRendering) {
                        let result = [];
                        if (!delayCellTemplateRendering) {
                            this._applyCellTemplates(tableCreator.makeTable(options))
                        } else {
                            result = tableCreator.makeTable(options)
                        }
                        return result
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(SchedulerWorkSpace, [{
                        key: "type",
                        get: function() {
                            return ""
                        }
                    }, {
                        key: "viewDataProvider",
                        get: function() {
                            if (!this._viewDataProvider) {
                                this._viewDataProvider = new _m_view_data_provider.default(this.type)
                            }
                            return this._viewDataProvider
                        }
                    }, {
                        key: "cache",
                        get: function() {
                            if (!this._cache) {
                                this._cache = new _m_cache.Cache
                            }
                            return this._cache
                        }
                    }, {
                        key: "cellsSelectionState",
                        get: function() {
                            if (!this._cellsSelectionState) {
                                this._cellsSelectionState = new _m_cells_selection_state.default(this.viewDataProvider);
                                const selectedCellsOption = this.option("selectedCellData");
                                if ((null === selectedCellsOption || void 0 === selectedCellsOption ? void 0 : selectedCellsOption.length) > 0) {
                                    const validSelectedCells = selectedCellsOption.map(selectedCell => {
                                        const {
                                            groups: groups
                                        } = selectedCell;
                                        if (!groups || 0 === this._getGroupCount()) {
                                            return _extends(_extends({}, selectedCell), {
                                                groupIndex: 0
                                            })
                                        }
                                        const groupIndex = this._getGroupIndexByResourceId(groups);
                                        return _extends(_extends({}, selectedCell), {
                                            groupIndex: groupIndex
                                        })
                                    });
                                    this._cellsSelectionState.setSelectedCellsByData(validSelectedCells)
                                }
                            }
                            return this._cellsSelectionState
                        }
                    }, {
                        key: "cellsSelectionController",
                        get: function() {
                            if (!this._cellsSelectionController) {
                                this._cellsSelectionController = new _m_cells_selection_controller.CellsSelectionController
                            }
                            return this._cellsSelectionController
                        }
                    }, {
                        key: "isAllDayPanelVisible",
                        get: function() {
                            return this._isShowAllDayPanel() && this.supportAllDayRow()
                        }
                    }, {
                        key: "verticalGroupTableClass",
                        get: function() {
                            return "dx-scheduler-work-space-vertical-group-table"
                        }
                    }, {
                        key: "renovatedHeaderPanelComponent",
                        get: function() {
                            return _layout2.default
                        }
                    }, {
                        key: "timeZoneCalculator",
                        get: function() {
                            return this.option("timeZoneCalculator")
                        }
                    }, {
                        key: "isDefaultDraggingMode",
                        get: function() {
                            return "default" === this.option("draggingMode")
                        }
                    }]);
                    return SchedulerWorkSpace
                }(_m_widget_observer.default);
                const createDragBehaviorConfig = (container, rootElement, isDefaultDraggingMode, dragBehavior, enableDefaultDragging, disableDefaultDragging, getDroppableCell, getDateTables, removeDroppableCellClass, getCellWidth, options) => {
                    const state = {
                        dragElement: void 0,
                        itemData: void 0
                    };
                    const isItemDisabled = () => {
                        const {
                            itemData: itemData
                        } = state;
                        if (itemData) {
                            const getter = (0, _data.compileGetter)("disabled");
                            return getter(itemData)
                        }
                        return true
                    };
                    const cursorOffset = options.isSetCursorOffset ? () => {
                        const $dragElement = (0, _renderer.default)(state.dragElement);
                        return {
                            x: (0, _size.getWidth)($dragElement) / 2,
                            y: (0, _size.getHeight)($dragElement) / 2
                        }
                    } : void 0;
                    return {
                        container: container,
                        dragTemplate: () => state.dragElement,
                        onDragStart: e => {
                            if (!isDefaultDraggingMode) {
                                disableDefaultDragging()
                            }
                            const canceled = e.cancel;
                            const {
                                event: event
                            } = e;
                            const $itemElement = (0, _renderer.default)(e.itemElement);
                            const appointments = e.component._appointments;
                            state.itemData = options.getItemData(e.itemElement, appointments);
                            const settings = options.getItemSettings($itemElement, e);
                            const {
                                initialPosition: initialPosition
                            } = options;
                            if (!isItemDisabled()) {
                                event.data = event.data || {};
                                if (!canceled) {
                                    if (!settings.isCompact) {
                                        dragBehavior.updateDragSource(state.itemData, settings)
                                    }
                                    state.dragElement = ((itemData, settings, appointments) => {
                                        const appointmentIndex = appointments.option("items").length;
                                        settings.isCompact = false;
                                        settings.virtual = false;
                                        const items = appointments._renderItem(appointmentIndex, {
                                            itemData: itemData,
                                            settings: [settings]
                                        });
                                        return items[0]
                                    })(state.itemData, settings, appointments);
                                    event.data.itemElement = state.dragElement;
                                    event.data.initialPosition = null !== initialPosition && void 0 !== initialPosition ? initialPosition : (0, _translator.locate)((0, _renderer.default)(state.dragElement));
                                    event.data.itemData = state.itemData;
                                    event.data.itemSettings = settings;
                                    dragBehavior.onDragStart(event.data);
                                    (0, _translator.resetPosition)((0, _renderer.default)(state.dragElement))
                                }
                            }
                        },
                        onDragMove: () => {
                            if (isDefaultDraggingMode) {
                                return
                            }
                            const elements = (() => {
                                const appointmentWidth = (0, _size.getWidth)(state.dragElement);
                                const cellWidth = getCellWidth();
                                const isWideAppointment = appointmentWidth > cellWidth;
                                const isNarrowAppointment = appointmentWidth <= 10;
                                const dragElementContainer = (0, _renderer.default)(state.dragElement).parent();
                                const boundingRect = (0, _position.getBoundingRect)(dragElementContainer.get(0));
                                const newX = boundingRect.left;
                                const newY = boundingRect.top;
                                if (isWideAppointment) {
                                    return _dom_adapter.default.elementsFromPoint(newX + 10, newY + 10)
                                }
                                if (isNarrowAppointment) {
                                    return _dom_adapter.default.elementsFromPoint(newX, newY)
                                }
                                return _dom_adapter.default.elementsFromPoint(newX + appointmentWidth / 2, newY + 10)
                            })();
                            const isMoveUnderControl = !!elements.find(el => el === rootElement.get(0));
                            const dateTables = getDateTables();
                            const droppableCell = elements.find(el => {
                                const {
                                    classList: classList
                                } = el;
                                const isCurrentSchedulerElement = 1 === dateTables.find(el).length;
                                return isCurrentSchedulerElement && (classList.contains(DATE_TABLE_CELL_CLASS) || classList.contains(ALL_DAY_TABLE_CELL_CLASS))
                            });
                            if (droppableCell) {
                                if (!getDroppableCell().is(droppableCell)) {
                                    removeDroppableCellClass()
                                }(0, _renderer.default)(droppableCell).addClass("dx-scheduler-date-table-droppable-cell")
                            } else if (!isMoveUnderControl) {
                                removeDroppableCellClass()
                            }
                        },
                        onDragEnd: e => {
                            var _a;
                            if (!isDefaultDraggingMode) {
                                enableDefaultDragging()
                            }
                            if (!isItemDisabled()) {
                                dragBehavior.onDragEnd(e)
                            }
                            null === (_a = state.dragElement) || void 0 === _a ? void 0 : _a.remove();
                            removeDroppableCellClass()
                        },
                        cursorOffset: cursorOffset,
                        filter: options.filter
                    }
                };
                var _default = SchedulerWorkSpace;
                exports.default = _default
            },
        74228:
            /*!*************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_work_space_day.js ***!
              \*************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 99393));
                var _m_constants = __webpack_require__( /*! ../m_constants */ 6324);
                var _m_work_space_vertical = _interopRequireDefault(__webpack_require__( /*! ./m_work_space_vertical */ 2986));

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

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let SchedulerWorkSpaceDay = function(_SchedulerWorkSpaceVe) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(SchedulerWorkSpaceDay, _SchedulerWorkSpaceVe);

                    function SchedulerWorkSpaceDay() {
                        return _SchedulerWorkSpaceVe.apply(this, arguments) || this
                    }
                    var _proto = SchedulerWorkSpaceDay.prototype;
                    _proto._getElementClass = function() {
                        return "dx-scheduler-work-space-day"
                    };
                    _proto._renderDateHeader = function() {
                        return 1 === this.option("intervalCount") ? null : _SchedulerWorkSpaceVe.prototype._renderDateHeader.call(this)
                    };
                    _proto.renderRHeaderPanel = function() {
                        if (1 === this.option("intervalCount")) {
                            _SchedulerWorkSpaceVe.prototype.renderRHeaderPanel.call(this, false)
                        } else {
                            _SchedulerWorkSpaceVe.prototype.renderRHeaderPanel.call(this, true)
                        }
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(SchedulerWorkSpaceDay, [{
                        key: "type",
                        get: function() {
                            return _m_constants.VIEWS.DAY
                        }
                    }]);
                    return SchedulerWorkSpaceDay
                }(_m_work_space_vertical.default);
                (0, _component_registrator.default)("dxSchedulerWorkSpaceDay", SchedulerWorkSpaceDay);
                var _default = SchedulerWorkSpaceDay;
                exports.default = _default
            },
        48854:
            /*!*************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_work_space_grouped_strategy_horizontal.js ***!
              \*************************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _position = __webpack_require__( /*! ../../../core/utils/position */ 37518);
                var _m_classes = __webpack_require__( /*! ../m_classes */ 43600);
                let HorizontalGroupedStrategy = function() {
                    function HorizontalGroupedStrategy(_workSpace) {
                        this._workSpace = _workSpace
                    }
                    var _proto = HorizontalGroupedStrategy.prototype;
                    _proto.prepareCellIndexes = function(cellCoordinates, groupIndex, inAllDay) {
                        const groupByDay = this._workSpace.isGroupedByDate();
                        if (!groupByDay) {
                            return {
                                rowIndex: cellCoordinates.rowIndex,
                                columnIndex: cellCoordinates.columnIndex + groupIndex * this._workSpace._getCellCount()
                            }
                        }
                        return {
                            rowIndex: cellCoordinates.rowIndex,
                            columnIndex: cellCoordinates.columnIndex * this._workSpace._getGroupCount() + groupIndex
                        }
                    };
                    _proto.getGroupIndex = function(rowIndex, columnIndex) {
                        const groupByDay = this._workSpace.isGroupedByDate();
                        const groupCount = this._workSpace._getGroupCount();
                        if (groupByDay) {
                            return columnIndex % groupCount
                        }
                        return Math.floor(columnIndex / this._workSpace._getCellCount())
                    };
                    _proto.calculateHeaderCellRepeatCount = function() {
                        return this._workSpace._getGroupCount() || 1
                    };
                    _proto.insertAllDayRowsIntoDateTable = function() {
                        return false
                    };
                    _proto.getTotalCellCount = function(groupCount) {
                        groupCount = groupCount || 1;
                        return this._workSpace._getCellCount() * groupCount
                    };
                    _proto.getTotalRowCount = function() {
                        return this._workSpace._getRowCount()
                    };
                    _proto.calculateTimeCellRepeatCount = function() {
                        return 1
                    };
                    _proto.getWorkSpaceMinWidth = function() {
                        return (0, _position.getBoundingRect)(this._workSpace.$element().get(0)).width - this._workSpace.getTimePanelWidth()
                    };
                    _proto.getAllDayOffset = function() {
                        return this._workSpace.getAllDayHeight()
                    };
                    _proto.getGroupCountClass = function(groups) {
                        return
                    };
                    _proto.getLeftOffset = function() {
                        return this._workSpace.getTimePanelWidth()
                    };
                    _proto._createGroupBoundOffset = function(startCell, endCell, cellWidth) {
                        const extraOffset = cellWidth / 2;
                        const startOffset = startCell ? startCell.offset().left - extraOffset : 0;
                        const endOffset = endCell ? endCell.offset().left + cellWidth + extraOffset : 0;
                        return {
                            left: startOffset,
                            right: endOffset,
                            top: 0,
                            bottom: 0
                        }
                    };
                    _proto._getGroupedByDateBoundOffset = function($cells, cellWidth) {
                        const lastCellIndex = $cells.length - 1;
                        const startCell = $cells.eq(0);
                        const endCell = $cells.eq(lastCellIndex);
                        return this._createGroupBoundOffset(startCell, endCell, cellWidth)
                    };
                    _proto.getGroupBoundsOffset = function(cellCount, $cells, cellWidth, coordinates, groupedDataMap) {
                        if (this._workSpace.isGroupedByDate()) {
                            return this._getGroupedByDateBoundOffset($cells, cellWidth)
                        }
                        let startCell;
                        let endCell;
                        const cellIndex = this._workSpace.getCellIndexByCoordinates(coordinates);
                        const groupIndex = coordinates.groupIndex || Math.floor(cellIndex / cellCount);
                        const currentCellGroup = groupedDataMap.dateTableGroupedMap[groupIndex];
                        if (currentCellGroup) {
                            const groupRowLength = currentCellGroup[0].length;
                            const groupStartPosition = currentCellGroup[0][0].position;
                            const groupEndPosition = currentCellGroup[0][groupRowLength - 1].position;
                            startCell = $cells.eq(groupStartPosition.columnIndex);
                            endCell = $cells.eq(groupEndPosition.columnIndex)
                        }
                        return this._createGroupBoundOffset(startCell, endCell, cellWidth)
                    };
                    _proto.shiftIndicator = function($indicator, height, rtlOffset, groupIndex) {
                        const offset = this._getIndicatorOffset(groupIndex);
                        const horizontalOffset = rtlOffset ? rtlOffset - offset : offset;
                        $indicator.css("left", horizontalOffset);
                        $indicator.css("top", height)
                    };
                    _proto._getIndicatorOffset = function(groupIndex) {
                        const groupByDay = this._workSpace.isGroupedByDate();
                        return groupByDay ? this._calculateGroupByDateOffset(groupIndex) : this._calculateOffset(groupIndex)
                    };
                    _proto._calculateOffset = function(groupIndex) {
                        const indicatorStartPosition = this._workSpace.getIndicatorOffset(groupIndex);
                        const offset = this._workSpace._getCellCount() * this._workSpace.getRoundedCellWidth(groupIndex - 1, 0) * groupIndex;
                        return indicatorStartPosition + offset
                    };
                    _proto._calculateGroupByDateOffset = function(groupIndex) {
                        return this._workSpace.getIndicatorOffset(0) * this._workSpace._getGroupCount() + this._workSpace.getRoundedCellWidth(groupIndex - 1, 0) * groupIndex
                    };
                    _proto.getShaderOffset = function(i, width) {
                        const offset = this._workSpace._getCellCount() * this._workSpace.getRoundedCellWidth(i - 1) * i;
                        return this._workSpace.option("rtlEnabled") ? (0, _position.getBoundingRect)(this._workSpace._dateTableScrollable.$content().get(0)).width - offset - this._workSpace.getTimePanelWidth() - width : offset
                    };
                    _proto.getShaderTopOffset = function(i) {
                        return -this.getShaderMaxHeight() * (i > 0 ? 1 : 0)
                    };
                    _proto.getShaderHeight = function() {
                        const height = this._workSpace.getIndicationHeight();
                        return height
                    };
                    _proto.getShaderMaxHeight = function() {
                        return (0, _position.getBoundingRect)(this._workSpace._dateTableScrollable.$content().get(0)).height
                    };
                    _proto.getShaderWidth = function(i) {
                        return this._workSpace.getIndicationWidth(i)
                    };
                    _proto.getScrollableScrollTop = function(allDay) {
                        return !allDay ? this._workSpace.getScrollable().scrollTop() : 0
                    };
                    _proto.addAdditionalGroupCellClasses = function(cellClass, index, i, j) {
                        let applyUnconditionally = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : false;
                        cellClass = this._addLastGroupCellClass(cellClass, index, applyUnconditionally);
                        return this._addFirstGroupCellClass(cellClass, index, applyUnconditionally)
                    };
                    _proto._addLastGroupCellClass = function(cellClass, index, applyUnconditionally) {
                        if (applyUnconditionally) {
                            return "".concat(cellClass, " ").concat(_m_classes.LAST_GROUP_CELL_CLASS)
                        }
                        const groupByDate = this._workSpace.isGroupedByDate();
                        if (groupByDate) {
                            if (index % this._workSpace._getGroupCount() === 0) {
                                return "".concat(cellClass, " ").concat(_m_classes.LAST_GROUP_CELL_CLASS)
                            }
                        } else if (index % this._workSpace._getCellCount() === 0) {
                            return "".concat(cellClass, " ").concat(_m_classes.LAST_GROUP_CELL_CLASS)
                        }
                        return cellClass
                    };
                    _proto._addFirstGroupCellClass = function(cellClass, index, applyUnconditionally) {
                        if (applyUnconditionally) {
                            return "".concat(cellClass, " ").concat(_m_classes.FIRST_GROUP_CELL_CLASS)
                        }
                        const groupByDate = this._workSpace.isGroupedByDate();
                        if (groupByDate) {
                            if ((index - 1) % this._workSpace._getGroupCount() === 0) {
                                return "".concat(cellClass, " ").concat(_m_classes.FIRST_GROUP_CELL_CLASS)
                            }
                        } else if ((index - 1) % this._workSpace._getCellCount() === 0) {
                            return "".concat(cellClass, " ").concat(_m_classes.FIRST_GROUP_CELL_CLASS)
                        }
                        return cellClass
                    };
                    return HorizontalGroupedStrategy
                }();
                var _default = HorizontalGroupedStrategy;
                exports.default = _default
            },
        2862:
            /*!***********************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_work_space_grouped_strategy_vertical.js ***!
              \***********************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _position = __webpack_require__( /*! ../../../core/utils/position */ 37518);
                var _base = __webpack_require__( /*! ../../../renovation/ui/scheduler/view_model/to_test/views/utils/base */ 45985);
                var _m_classes = __webpack_require__( /*! ../m_classes */ 43600);
                var _m_cache = __webpack_require__( /*! ./m_cache */ 14553);
                let VerticalGroupedStrategy = function() {
                    function VerticalGroupedStrategy(_workSpace) {
                        this._workSpace = _workSpace;
                        this.cache = new _m_cache.Cache
                    }
                    var _proto = VerticalGroupedStrategy.prototype;
                    _proto.prepareCellIndexes = function(cellCoordinates, groupIndex, inAllDayRow) {
                        let rowIndex = cellCoordinates.rowIndex + groupIndex * this._workSpace._getRowCount();
                        if (this._workSpace.supportAllDayRow() && this._workSpace.option("showAllDayPanel")) {
                            rowIndex += groupIndex;
                            if (!inAllDayRow) {
                                rowIndex += 1
                            }
                        }
                        return {
                            rowIndex: rowIndex,
                            columnIndex: cellCoordinates.columnIndex
                        }
                    };
                    _proto.getGroupIndex = function(rowIndex) {
                        return Math.floor(rowIndex / this._workSpace._getRowCount())
                    };
                    _proto.calculateHeaderCellRepeatCount = function() {
                        return 1
                    };
                    _proto.insertAllDayRowsIntoDateTable = function() {
                        return this._workSpace.option("showAllDayPanel")
                    };
                    _proto.getTotalCellCount = function() {
                        return this._workSpace._getCellCount()
                    };
                    _proto.getTotalRowCount = function() {
                        return this._workSpace._getRowCount() * this._workSpace._getGroupCount()
                    };
                    _proto.calculateTimeCellRepeatCount = function() {
                        return this._workSpace._getGroupCount() || 1
                    };
                    _proto.getWorkSpaceMinWidth = function() {
                        let minWidth = this._workSpace._getWorkSpaceWidth();
                        const workspaceContainerWidth = (0, _position.getBoundingRect)(this._workSpace.$element().get(0)).width - this._workSpace.getTimePanelWidth() - this._workSpace.getGroupTableWidth() - 2;
                        if (minWidth < workspaceContainerWidth) {
                            minWidth = workspaceContainerWidth
                        }
                        return minWidth
                    };
                    _proto.getAllDayOffset = function() {
                        return 0
                    };
                    _proto.getGroupCountClass = function(groups) {
                        return (0, _base.getVerticalGroupCountClass)(groups)
                    };
                    _proto.getLeftOffset = function() {
                        return this._workSpace.getTimePanelWidth() + this._workSpace.getGroupTableWidth()
                    };
                    _proto.getGroupBoundsOffset = function(groupIndex, _ref) {
                        let [$firstCell, $lastCell] = _ref;
                        return this.cache.get("groupBoundsOffset".concat(groupIndex), () => {
                            const startDayHour = this._workSpace.option("startDayHour");
                            const endDayHour = this._workSpace.option("endDayHour");
                            const hoursInterval = this._workSpace.option("hoursInterval");
                            const dayHeight = (0, _base.calculateDayDuration)(startDayHour, endDayHour) / hoursInterval * this._workSpace.getCellHeight();
                            const scrollTop = this.getScrollableScrollTop();
                            const headerRowHeight = (0, _position.getBoundingRect)(this._workSpace._$headerPanelContainer.get(0)).height;
                            let topOffset = groupIndex * dayHeight + headerRowHeight + this._workSpace.option("getHeaderHeight")() - scrollTop;
                            if (this._workSpace.option("showAllDayPanel") && this._workSpace.supportAllDayRow()) {
                                topOffset += this._workSpace.getCellHeight() * (groupIndex + 1)
                            }
                            const bottomOffset = topOffset + dayHeight;
                            const {
                                left: left
                            } = $firstCell.getBoundingClientRect();
                            const {
                                right: right
                            } = $lastCell.getBoundingClientRect();
                            this._groupBoundsOffset = {
                                left: left,
                                right: right,
                                top: topOffset,
                                bottom: bottomOffset
                            };
                            return this._groupBoundsOffset
                        })
                    };
                    _proto.shiftIndicator = function($indicator, height, rtlOffset, i) {
                        const offset = this._workSpace.getIndicatorOffset(0);
                        const tableOffset = this._workSpace.option("crossScrollingEnabled") ? 0 : this._workSpace.getGroupTableWidth();
                        const horizontalOffset = rtlOffset ? rtlOffset - offset : offset;
                        let verticalOffset = this._workSpace._getRowCount() * this._workSpace.getCellHeight() * i;
                        if (this._workSpace.supportAllDayRow() && this._workSpace.option("showAllDayPanel")) {
                            verticalOffset += this._workSpace.getAllDayHeight() * (i + 1)
                        }
                        $indicator.css("left", horizontalOffset + tableOffset);
                        $indicator.css("top", height + verticalOffset)
                    };
                    _proto.getShaderOffset = function(i, width) {
                        const offset = this._workSpace.option("crossScrollingEnabled") ? 0 : this._workSpace.getGroupTableWidth();
                        return this._workSpace.option("rtlEnabled") ? (0, _position.getBoundingRect)(this._$container.get(0)).width - offset - this._workSpace.getWorkSpaceLeftOffset() - width : offset
                    };
                    _proto.getShaderTopOffset = function(i) {
                        return 0
                    };
                    _proto.getShaderHeight = function() {
                        let height = this._workSpace.getIndicationHeight();
                        if (this._workSpace.supportAllDayRow() && this._workSpace.option("showAllDayPanel")) {
                            height += this._workSpace.getCellHeight()
                        }
                        return height
                    };
                    _proto.getShaderMaxHeight = function() {
                        let height = this._workSpace._getRowCount() * this._workSpace.getCellHeight();
                        if (this._workSpace.supportAllDayRow() && this._workSpace.option("showAllDayPanel")) {
                            height += this._workSpace.getCellHeight()
                        }
                        return height
                    };
                    _proto.getShaderWidth = function() {
                        return this._workSpace.getIndicationWidth(0)
                    };
                    _proto.getScrollableScrollTop = function() {
                        return this._workSpace.getScrollable().scrollTop()
                    };
                    _proto.addAdditionalGroupCellClasses = function(cellClass, index, i, j) {
                        cellClass = this._addLastGroupCellClass(cellClass, i + 1);
                        return this._addFirstGroupCellClass(cellClass, i + 1)
                    };
                    _proto._addLastGroupCellClass = function(cellClass, index) {
                        if (index % this._workSpace._getRowCount() === 0) {
                            return "".concat(cellClass, " ").concat(_m_classes.LAST_GROUP_CELL_CLASS)
                        }
                        return cellClass
                    };
                    _proto._addFirstGroupCellClass = function(cellClass, index) {
                        if ((index - 1) % this._workSpace._getRowCount() === 0) {
                            return "".concat(cellClass, " ").concat(_m_classes.FIRST_GROUP_CELL_CLASS)
                        }
                        return cellClass
                    };
                    return VerticalGroupedStrategy
                }();
                var _default = VerticalGroupedStrategy;
                exports.default = _default
            },
        34623:
            /*!*******************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_work_space_indicator.js ***!
              \*******************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 99393));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 91198));
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _position = __webpack_require__( /*! ../../../core/utils/position */ 37518);
                var _size = __webpack_require__( /*! ../../../core/utils/size */ 58664);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 58201);
                var _base = __webpack_require__( /*! ../../../renovation/ui/scheduler/view_model/to_test/views/utils/base */ 45985);
                var _date2 = __webpack_require__( /*! ../../core/utils/date */ 24321);
                var _m_classes = __webpack_require__( /*! ../m_classes */ 43600);
                var _m_utils_time_zone = _interopRequireDefault(__webpack_require__( /*! ../m_utils_time_zone */ 57880));
                var _m_work_space = _interopRequireDefault(__webpack_require__( /*! ./m_work_space */ 48377));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const toMs = _date.default.dateToMilliseconds;
                let SchedulerWorkSpaceIndicator = function(_SchedulerWorkSpace) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(SchedulerWorkSpaceIndicator, _SchedulerWorkSpace);

                    function SchedulerWorkSpaceIndicator() {
                        return _SchedulerWorkSpace.apply(this, arguments) || this
                    }
                    var _proto = SchedulerWorkSpaceIndicator.prototype;
                    _proto._getToday = function() {
                        const viewOffset = this.option("viewOffset");
                        const today = (0, _base.getToday)(this.option("indicatorTime"), this.timeZoneCalculator);
                        return _date2.dateUtilsTs.addOffsets(today, [-viewOffset])
                    };
                    _proto.isIndicationOnView = function() {
                        if (this.option("showCurrentTimeIndicator")) {
                            const today = this._getToday();
                            const endViewDate = _date.default.trimTime(this.getEndViewDate());
                            return _date.default.dateInRange(today, this.getStartViewDate(), new Date(endViewDate.getTime() + toMs("day")))
                        }
                        return false
                    };
                    _proto.isIndicationAvailable = function() {
                        if (!(0, _window.hasWindow)()) {
                            return false
                        }
                        const today = this._getToday();
                        return today >= _date.default.trimTime(new Date(this.getStartViewDate()))
                    };
                    _proto.isIndicatorVisible = function() {
                        const today = this._getToday();
                        const endViewDate = new Date(this.getEndViewDate().getTime() + toMs("minute") - 1);
                        const firstViewDate = new Date(this.getStartViewDate());
                        firstViewDate.setFullYear(today.getFullYear(), today.getMonth(), today.getDate());
                        endViewDate.setFullYear(today.getFullYear(), today.getMonth(), today.getDate());
                        return _date.default.dateInRange(today, firstViewDate, endViewDate)
                    };
                    _proto._renderIndicator = function(height, rtlOffset, $container, groupCount) {
                        const groupedByDate = this.isGroupedByDate();
                        const repeatCount = groupedByDate ? 1 : groupCount;
                        for (let i = 0; i < repeatCount; i++) {
                            const $indicator = this._createIndicator($container);
                            (0, _size.setWidth)($indicator, groupedByDate ? this.getCellWidth() * groupCount : this.getCellWidth());
                            this._groupedStrategy.shiftIndicator($indicator, height, rtlOffset, i)
                        }
                    };
                    _proto._createIndicator = function($container) {
                        const $indicator = (0, _renderer.default)("<div>").addClass("dx-scheduler-date-time-indicator");
                        $container.append($indicator);
                        return $indicator
                    };
                    _proto._getRtlOffset = function(width) {
                        return this.option("rtlEnabled") ? (0, _position.getBoundingRect)(this._dateTableScrollable.$content().get(0)).width - this.getTimePanelWidth() - width : 0
                    };
                    _proto._setIndicationUpdateInterval = function() {
                        if (!this.option("showCurrentTimeIndicator") || 0 === this.option("indicatorUpdateInterval")) {
                            return
                        }
                        this._clearIndicatorUpdateInterval();
                        this._indicatorInterval = setInterval(() => {
                            this.renderCurrentDateTimeIndication()
                        }, this.option("indicatorUpdateInterval"))
                    };
                    _proto._clearIndicatorUpdateInterval = function() {
                        if (this._indicatorInterval) {
                            clearInterval(this._indicatorInterval);
                            delete this._indicatorInterval
                        }
                    };
                    _proto._isVerticalShader = function() {
                        return true
                    };
                    _proto.getIndicationWidth = function(groupIndex) {
                        const maxWidth = this.getCellWidth() * this._getCellCount();
                        let difference = this._getIndicatorDuration();
                        if (difference > this._getCellCount()) {
                            difference = this._getCellCount()
                        }
                        const width = difference * this.getRoundedCellWidth(groupIndex, groupIndex * this._getCellCount(), difference);
                        return maxWidth < width ? maxWidth : width
                    };
                    _proto.getIndicatorOffset = function(groupIndex) {
                        const difference = this._getIndicatorDuration() - 1;
                        const offset = difference * this.getRoundedCellWidth(groupIndex, groupIndex * this._getCellCount(), difference);
                        return offset
                    };
                    _proto._getIndicatorDuration = function() {
                        const today = this._getToday();
                        const firstViewDate = new Date(this.getStartViewDate());
                        let timeDiff = today.getTime() - firstViewDate.getTime();
                        if ("workWeek" === this.option("type")) {
                            timeDiff -= this._getWeekendsCount(Math.round(timeDiff / toMs("day"))) * toMs("day")
                        }
                        return Math.ceil((timeDiff + 1) / toMs("day"))
                    };
                    _proto.getIndicationHeight = function() {
                        const today = _m_utils_time_zone.default.getDateWithoutTimezoneChange(this._getToday());
                        const cellHeight = this.getCellHeight();
                        const date = new Date(this.getStartViewDate());
                        if (this.isIndicationOnView()) {
                            date.setFullYear(today.getFullYear(), today.getMonth(), today.getDate())
                        }
                        const duration = today.getTime() - date.getTime();
                        const cellCount = duration / this.getCellDuration();
                        return cellCount * cellHeight
                    };
                    _proto._dispose = function() {
                        this._clearIndicatorUpdateInterval();
                        _SchedulerWorkSpace.prototype._dispose.apply(this, arguments)
                    };
                    _proto.renderCurrentDateTimeIndication = function() {
                        this.renderCurrentDateTimeLineAndShader();
                        if (this.isRenovatedRender()) {
                            this.renderWorkSpace({
                                generateNewData: true,
                                renderComponents: {
                                    header: true,
                                    timePanel: true
                                }
                            })
                        }
                    };
                    _proto.renderCurrentDateTimeLineAndShader = function() {
                        var _a;
                        this._cleanDateTimeIndicator();
                        null === (_a = this._shader) || void 0 === _a ? void 0 : _a.clean();
                        this._renderDateTimeIndication()
                    };
                    _proto._isCurrentTimeHeaderCell = function(headerIndex) {
                        if (this.isIndicationOnView()) {
                            const {
                                completeDateHeaderMap: completeDateHeaderMap
                            } = this.viewDataProvider;
                            const date = completeDateHeaderMap[completeDateHeaderMap.length - 1][headerIndex].startDate;
                            return _date.default.sameDate(date, this._getToday())
                        }
                        return false
                    };
                    _proto._getHeaderPanelCellClass = function(i) {
                        const cellClass = _SchedulerWorkSpace.prototype._getHeaderPanelCellClass.call(this, i);
                        if (this._isCurrentTimeHeaderCell(i)) {
                            return "".concat(cellClass, " ").concat(_m_classes.HEADER_CURRENT_TIME_CELL_CLASS)
                        }
                        return cellClass
                    };
                    _proto._cleanView = function() {
                        _SchedulerWorkSpace.prototype._cleanView.call(this);
                        this._cleanDateTimeIndicator()
                    };
                    _proto._dimensionChanged = function() {
                        _SchedulerWorkSpace.prototype._dimensionChanged.call(this);
                        this.renderCurrentDateTimeLineAndShader()
                    };
                    _proto._cleanDateTimeIndicator = function() {
                        this.$element().find(".".concat("dx-scheduler-date-time-indicator")).remove()
                    };
                    _proto._cleanWorkSpace = function() {
                        _SchedulerWorkSpace.prototype._cleanWorkSpace.call(this);
                        this._renderDateTimeIndication();
                        this._setIndicationUpdateInterval()
                    };
                    _proto._optionChanged = function(args) {
                        switch (args.name) {
                            case "showCurrentTimeIndicator":
                            case "indicatorTime":
                                this._cleanWorkSpace();
                                break;
                            case "indicatorUpdateInterval":
                                this._setIndicationUpdateInterval();
                                break;
                            case "showAllDayPanel":
                            case "allDayExpanded":
                            case "crossScrollingEnabled":
                                _SchedulerWorkSpace.prototype._optionChanged.call(this, args);
                                this.renderCurrentDateTimeIndication();
                                break;
                            case "shadeUntilCurrentTime":
                                this.renderCurrentDateTimeIndication();
                                break;
                            default:
                                _SchedulerWorkSpace.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_SchedulerWorkSpace.prototype._getDefaultOptions.call(this), {
                            showCurrentTimeIndicator: true,
                            indicatorTime: new Date,
                            indicatorUpdateInterval: 5 * toMs("minute"),
                            shadeUntilCurrentTime: true
                        })
                    };
                    _proto._getCurrentTimePanelCellIndices = function() {
                        const rowCountPerGroup = this._getTimePanelRowCount();
                        const today = this._getToday();
                        const index = this.getCellIndexByDate(today);
                        const {
                            rowIndex: currentTimeRowIndex
                        } = this._getCellCoordinatesByIndex(index);
                        if (void 0 === currentTimeRowIndex) {
                            return []
                        }
                        let cellIndices;
                        if (0 === currentTimeRowIndex) {
                            cellIndices = [currentTimeRowIndex]
                        } else {
                            cellIndices = currentTimeRowIndex % 2 === 0 ? [currentTimeRowIndex - 1, currentTimeRowIndex] : [currentTimeRowIndex, currentTimeRowIndex + 1]
                        }
                        const verticalGroupCount = this._isVerticalGroupedWorkSpace() ? this._getGroupCount() : 1;
                        return [...new Array(verticalGroupCount)].reduce((currentIndices, _, groupIndex) => [...currentIndices, ...cellIndices.map(cellIndex => rowCountPerGroup * groupIndex + cellIndex)], [])
                    };
                    _proto._renderDateTimeIndication = function() {
                        if (!this.isIndicationAvailable()) {
                            return
                        }
                        if (this.option("shadeUntilCurrentTime")) {
                            this._shader.render()
                        }
                        if (!this.isIndicationOnView() || !this.isIndicatorVisible()) {
                            return
                        }
                        const groupCount = this._getGroupCount() || 1;
                        const $container = this._dateTableScrollable.$content();
                        const height = this.getIndicationHeight();
                        const rtlOffset = this._getRtlOffset(this.getCellWidth());
                        this._renderIndicator(height, rtlOffset, $container, groupCount);
                        if (!this.isRenovatedRender()) {
                            this._setCurrentTimeCells()
                        }
                    };
                    _proto._setCurrentTimeCells = function() {
                        const timePanelCells = this._getTimePanelCells();
                        const currentTimeCellIndices = this._getCurrentTimePanelCellIndices();
                        currentTimeCellIndices.forEach(timePanelCellIndex => {
                            timePanelCells.eq(timePanelCellIndex).addClass("dx-scheduler-time-panel-current-time-cell")
                        })
                    };
                    _proto._cleanCurrentTimeCells = function() {
                        this.$element().find(".".concat("dx-scheduler-time-panel-current-time-cell")).removeClass("dx-scheduler-time-panel-current-time-cell")
                    };
                    return SchedulerWorkSpaceIndicator
                }(_m_work_space.default);
                (0, _component_registrator.default)("dxSchedulerWorkSpace", SchedulerWorkSpaceIndicator);
                var _default = SchedulerWorkSpaceIndicator;
                exports.default = _default
            },
        50011:
            /*!***************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_work_space_month.js ***!
              \***************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 99393));
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 20576);
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/date */ 91198));
                var _position = __webpack_require__( /*! ../../../core/utils/position */ 37518);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 58201);
                var _base = __webpack_require__( /*! ../../../renovation/ui/scheduler/view_model/to_test/views/utils/base */ 45985);
                var _month = __webpack_require__( /*! ../../../renovation/ui/scheduler/view_model/to_test/views/utils/month */ 19097);
                var _layout = _interopRequireDefault(__webpack_require__( /*! ../../../renovation/ui/scheduler/workspaces/month/date_table/layout.j */ 48136));
                var _m_constants = __webpack_require__( /*! ../m_constants */ 6324);
                var _m_utils = __webpack_require__( /*! ../m_utils */ 84110);
                var _m_work_space_indicator = _interopRequireDefault(__webpack_require__( /*! ./m_work_space_indicator */ 34623));

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const toMs = _date.default.dateToMilliseconds;
                let SchedulerWorkSpaceMonth = function(_SchedulerWorkSpace) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(SchedulerWorkSpaceMonth, _SchedulerWorkSpace);

                    function SchedulerWorkSpaceMonth() {
                        return _SchedulerWorkSpace.apply(this, arguments) || this
                    }
                    var _proto = SchedulerWorkSpaceMonth.prototype;
                    _proto._getElementClass = function() {
                        return "dx-scheduler-work-space-month"
                    };
                    _proto._getFormat = function() {
                        return _base.formatWeekday
                    };
                    _proto._getIntervalBetween = function(currentDate) {
                        const firstViewDate = this.getStartViewDate();
                        const timeZoneOffset = _date.default.getTimezonesDifference(firstViewDate, currentDate);
                        return currentDate.getTime() - (firstViewDate.getTime() - 36e5 * this.option("startDayHour")) - timeZoneOffset
                    };
                    _proto._getDateGenerationOptions = function() {
                        return _extends(_extends({}, _SchedulerWorkSpace.prototype._getDateGenerationOptions.call(this)), {
                            cellCountInDay: 1
                        })
                    };
                    _proto.getCellWidth = function() {
                        return this.cache.get("cellWidth", () => {
                            let averageWidth = 0;
                            const cells = this._getCells().slice(0, 7);
                            cells.each((index, element) => {
                                averageWidth += (0, _window.hasWindow)() ? (0, _position.getBoundingRect)(element).width : 0
                            });
                            return 0 === cells.length ? void 0 : averageWidth / 7
                        })
                    };
                    _proto._insertAllDayRowsIntoDateTable = function() {
                        return false
                    };
                    _proto._getCellCoordinatesByIndex = function(index) {
                        const rowIndex = Math.floor(index / this._getCellCount());
                        const columnIndex = index - this._getCellCount() * rowIndex;
                        return {
                            rowIndex: rowIndex,
                            columnIndex: columnIndex
                        }
                    };
                    _proto._needCreateCrossScrolling = function() {
                        return this.option("crossScrollingEnabled") || this._isVerticalGroupedWorkSpace()
                    };
                    _proto._getViewStartByOptions = function() {
                        return (0, _month.getViewStartByOptions)(this.option("startDate"), this.option("currentDate"), this.option("intervalCount"), _date.default.getFirstMonthDate(this.option("startDate")))
                    };
                    _proto._updateIndex = function(index) {
                        return index
                    };
                    _proto.isIndicationAvailable = function() {
                        return false
                    };
                    _proto.getIntervalDuration = function() {
                        return toMs("day")
                    };
                    _proto.getTimePanelWidth = function() {
                        return 0
                    };
                    _proto.supportAllDayRow = function() {
                        return false
                    };
                    _proto.keepOriginalHours = function() {
                        return true
                    };
                    _proto.getWorkSpaceLeftOffset = function() {
                        return 0
                    };
                    _proto.needApplyCollectorOffset = function() {
                        return true
                    };
                    _proto._getHeaderDate = function() {
                        return this._getViewStartByOptions()
                    };
                    _proto.scrollToTime = function() {
                        return (0, _common.noop)()
                    };
                    _proto.renderRAllDayPanel = function() {};
                    _proto.renderRTimeTable = function() {};
                    _proto.renderRDateTable = function() {
                        _m_utils.utils.renovation.renderComponent(this, this._$dateTable, _layout.default, "renovatedDateTable", this._getRDateTableProps())
                    };
                    _proto._createWorkSpaceElements = function() {
                        if (this._isVerticalGroupedWorkSpace()) {
                            this._createWorkSpaceScrollableElements()
                        } else {
                            _SchedulerWorkSpace.prototype._createWorkSpaceElements.call(this)
                        }
                    };
                    _proto._toggleAllDayVisibility = function() {
                        return (0, _common.noop)()
                    };
                    _proto._changeAllDayVisibility = function() {
                        return (0, _common.noop)()
                    };
                    _proto._renderTimePanel = function() {
                        return (0, _common.noop)()
                    };
                    _proto._renderAllDayPanel = function() {
                        return (0, _common.noop)()
                    };
                    _proto._setMonthClassesToCell = function($cell, data) {
                        $cell.toggleClass("dx-scheduler-date-table-current-date", data.isCurrentDate).toggleClass("dx-scheduler-date-table-first-of-month", data.firstDayOfMonth).toggleClass("dx-scheduler-date-table-other-month", data.otherMonth)
                    };
                    _proto._createAllDayPanelElements = function() {};
                    _proto._renderTableBody = function(options) {
                        options.getCellText = (rowIndex, columnIndex) => {
                            const date = this.viewDataProvider.completeViewDataMap[rowIndex][columnIndex].startDate;
                            return (0, _month.getCellText)(date, this.option("intervalCount"))
                        };
                        options.getCellTextClass = "dx-scheduler-date-table-cell-text";
                        options.setAdditionalClasses = this._setMonthClassesToCell.bind(this);
                        _SchedulerWorkSpace.prototype._renderTableBody.call(this, options)
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(SchedulerWorkSpaceMonth, [{
                        key: "type",
                        get: function() {
                            return _m_constants.VIEWS.MONTH
                        }
                    }]);
                    return SchedulerWorkSpaceMonth
                }(_m_work_space_indicator.default);
                (0, _component_registrator.default)("dxSchedulerWorkSpaceMonth", SchedulerWorkSpaceMonth);
                var _default = SchedulerWorkSpaceMonth;
                exports.default = _default
            },
        2986:
            /*!******************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_work_space_vertical.js ***!
              \******************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _base = __webpack_require__( /*! ../../../renovation/ui/scheduler/view_model/to_test/views/utils/base */ 45985);
                var _m_work_space_indicator = (obj = __webpack_require__( /*! ./m_work_space_indicator */ 34623), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let SchedulerWorkspaceVertical = function(_SchedulerWorkSpaceIn) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(SchedulerWorkspaceVertical, _SchedulerWorkSpaceIn);

                    function SchedulerWorkspaceVertical() {
                        return _SchedulerWorkSpaceIn.apply(this, arguments) || this
                    }
                    var _proto = SchedulerWorkspaceVertical.prototype;
                    _proto._getFormat = function() {
                        return _base.formatWeekdayAndDay
                    };
                    _proto.generateRenderOptions = function() {
                        const options = _SchedulerWorkSpaceIn.prototype.generateRenderOptions.call(this);
                        return _extends(_extends({}, options), {
                            isGenerateTimePanelData: true
                        })
                    };
                    _proto._isRenderHeaderPanelEmptyCell = function() {
                        return true
                    };
                    return SchedulerWorkspaceVertical
                }(_m_work_space_indicator.default);
                var _default = SchedulerWorkspaceVertical;
                exports.default = _default
            },
        36828:
            /*!**************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_work_space_week.js ***!
              \**************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 99393));
                var _week = __webpack_require__( /*! ../../../renovation/ui/scheduler/view_model/to_test/views/utils/week */ 34279);
                var _m_constants = __webpack_require__( /*! ../m_constants */ 6324);
                var _m_work_space_vertical = _interopRequireDefault(__webpack_require__( /*! ./m_work_space_vertical */ 2986));

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

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let SchedulerWorkSpaceWeek = function(_SchedulerWorkSpaceVe) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(SchedulerWorkSpaceWeek, _SchedulerWorkSpaceVe);

                    function SchedulerWorkSpaceWeek() {
                        return _SchedulerWorkSpaceVe.apply(this, arguments) || this
                    }
                    var _proto = SchedulerWorkSpaceWeek.prototype;
                    _proto._getElementClass = function() {
                        return "dx-scheduler-work-space-week"
                    };
                    _proto._calculateViewStartDate = function() {
                        return (0, _week.calculateViewStartDate)(this.option("startDate"), this._firstDayOfWeek())
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(SchedulerWorkSpaceWeek, [{
                        key: "type",
                        get: function() {
                            return _m_constants.VIEWS.WEEK
                        }
                    }]);
                    return SchedulerWorkSpaceWeek
                }(_m_work_space_vertical.default);
                (0, _component_registrator.default)("dxSchedulerWorkSpaceWeek", SchedulerWorkSpaceWeek);
                var _default = SchedulerWorkSpaceWeek;
                exports.default = _default
            },
        29544:
            /*!*******************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/m_work_space_work_week.js ***!
              \*******************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../core/component_registrator */ 99393));
                var _work_week = __webpack_require__( /*! ../../../renovation/ui/scheduler/view_model/to_test/views/utils/work_week */ 83866);
                var _m_constants = __webpack_require__( /*! ../m_constants */ 6324);
                var _m_work_space_week = _interopRequireDefault(__webpack_require__( /*! ./m_work_space_week */ 36828));

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

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let SchedulerWorkSpaceWorkWeek = function(_SchedulerWorkSpaceWe) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(SchedulerWorkSpaceWorkWeek, _SchedulerWorkSpaceWe);

                    function SchedulerWorkSpaceWorkWeek() {
                        var _this;
                        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
                            args[_key] = arguments[_key]
                        }
                        _this = _SchedulerWorkSpaceWe.call(this, ...args) || this;
                        _this._getWeekendsCount = _work_week.getWeekendsCount;
                        return _this
                    }
                    var _proto = SchedulerWorkSpaceWorkWeek.prototype;
                    _proto._getElementClass = function() {
                        return "dx-scheduler-work-space-work-week"
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(SchedulerWorkSpaceWorkWeek, [{
                        key: "type",
                        get: function() {
                            return _m_constants.VIEWS.WORK_WEEK
                        }
                    }]);
                    return SchedulerWorkSpaceWorkWeek
                }(_m_work_space_week.default);
                (0, _component_registrator.default)("dxSchedulerWorkSpaceWorkWeek", SchedulerWorkSpaceWorkWeek);
                var _default = SchedulerWorkSpaceWorkWeek;
                exports.default = _default
            },
        11706:
            /*!************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/view_model/m_date_header_data_generator.js ***!
              \************************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.DateHeaderDataGenerator = void 0;
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 91198));
                var _base = __webpack_require__( /*! ../../../../renovation/ui/scheduler/view_model/to_test/views/utils/base */ 45985);
                var _m_constants = __webpack_require__( /*! ../../../scheduler/m_constants */ 6324);
                var _m_utils_time_zone = _interopRequireDefault(__webpack_require__( /*! ../../m_utils_time_zone */ 57880));
                var _m_utils = __webpack_require__( /*! ../../resources/m_utils */ 31359);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                var __rest = (void 0, function(s, e) {
                    var t = {};
                    for (var p in s) {
                        if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) {
                            t[p] = s[p]
                        }
                    }
                    if (null != s && "function" === typeof Object.getOwnPropertySymbols) {
                        var i = 0;
                        for (p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
                            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) {
                                t[p[i]] = s[p[i]]
                            }
                        }
                    }
                    return t
                });
                let DateHeaderDataGenerator = function() {
                    function DateHeaderDataGenerator(_viewDataGenerator) {
                        this._viewDataGenerator = _viewDataGenerator
                    }
                    var _proto = DateHeaderDataGenerator.prototype;
                    _proto.getCompleteDateHeaderMap = function(options, completeViewDataMap) {
                        const {
                            isGenerateWeekDaysHeaderData: isGenerateWeekDaysHeaderData
                        } = options;
                        const result = [];
                        if (isGenerateWeekDaysHeaderData) {
                            const weekDaysRow = this._generateWeekDaysHeaderRowMap(options, completeViewDataMap);
                            result.push(weekDaysRow)
                        }
                        const dateRow = this._generateHeaderDateRow(options, completeViewDataMap);
                        result.push(dateRow);
                        return result
                    };
                    _proto._generateWeekDaysHeaderRowMap = function(options, completeViewDataMap) {
                        const {
                            isGroupedByDate: isGroupedByDate,
                            groups: groups,
                            groupOrientation: groupOrientation,
                            startDayHour: startDayHour,
                            endDayHour: endDayHour,
                            hoursInterval: hoursInterval,
                            isHorizontalGrouping: isHorizontalGrouping,
                            intervalCount: intervalCount,
                            viewOffset: viewOffset
                        } = options;
                        const cellCountInDay = this._viewDataGenerator.getCellCountInDay(startDayHour, endDayHour, hoursInterval);
                        const horizontalGroupCount = (0, _base.getHorizontalGroupCount)(groups, groupOrientation);
                        const index = completeViewDataMap[0][0].allDay ? 1 : 0;
                        const colSpan = isGroupedByDate ? horizontalGroupCount * cellCountInDay : cellCountInDay;
                        const groupCount = (0, _m_utils.getGroupCount)(groups);
                        const datesRepeatCount = isHorizontalGrouping && !isGroupedByDate ? groupCount : 1;
                        const daysInGroup = this._viewDataGenerator.daysInInterval * intervalCount;
                        const daysInView = daysInGroup * datesRepeatCount;
                        const weekDaysRow = [];
                        for (let dayIndex = 0; dayIndex < daysInView; dayIndex += 1) {
                            const cell = completeViewDataMap[index][dayIndex * colSpan];
                            const shiftedStartDate = _m_utils_time_zone.default.addOffsetsWithoutDST(cell.startDate, -viewOffset);
                            weekDaysRow.push(_extends(_extends({}, cell), {
                                colSpan: colSpan,
                                text: (0, _base.formatWeekdayAndDay)(shiftedStartDate),
                                isFirstGroupCell: false,
                                isLastGroupCell: false
                            }))
                        }
                        return weekDaysRow
                    };
                    _proto._generateHeaderDateRow = function(options, completeViewDataMap) {
                        const {
                            today: today,
                            isGroupedByDate: isGroupedByDate,
                            groupOrientation: groupOrientation,
                            groups: groups,
                            headerCellTextFormat: headerCellTextFormat,
                            getDateForHeaderText: getDateForHeaderText,
                            interval: interval,
                            startViewDate: startViewDate,
                            startDayHour: startDayHour,
                            endDayHour: endDayHour,
                            hoursInterval: hoursInterval,
                            intervalCount: intervalCount,
                            currentDate: currentDate,
                            viewType: viewType,
                            viewOffset: viewOffset
                        } = options;
                        const horizontalGroupCount = (0, _base.getHorizontalGroupCount)(groups, groupOrientation);
                        const index = completeViewDataMap[0][0].allDay ? 1 : 0;
                        const colSpan = isGroupedByDate ? horizontalGroupCount : 1;
                        const isVerticalGrouping = "vertical" === groupOrientation;
                        const cellCountInGroupRow = this._viewDataGenerator.getCellCount({
                            intervalCount: intervalCount,
                            currentDate: currentDate,
                            viewType: viewType,
                            hoursInterval: hoursInterval,
                            startDayHour: startDayHour,
                            endDayHour: endDayHour
                        });
                        const cellCountInDay = this._viewDataGenerator.getCellCountInDay(startDayHour, endDayHour, hoursInterval);
                        const slicedByColumnsData = isGroupedByDate ? completeViewDataMap[index].filter((_, columnIndex) => columnIndex % horizontalGroupCount === 0) : completeViewDataMap[index];
                        const shouldShiftDatesForHeaderText = !(0, _base.isTimelineView)(viewType) || viewType === _m_constants.VIEWS.TIMELINE_MONTH;
                        return slicedByColumnsData.map((_a, idx) => {
                            var {
                                startDate: startDate,
                                endDate: endDate,
                                isFirstGroupCell: isFirstGroupCell,
                                isLastGroupCell: isLastGroupCell
                            } = _a, restProps = __rest(_a, ["startDate", "endDate", "isFirstGroupCell", "isLastGroupCell"]);
                            const shiftedStartDate = _m_utils_time_zone.default.addOffsetsWithoutDST(startDate, -viewOffset);
                            const shiftedStartDateForHeaderText = shouldShiftDatesForHeaderText ? shiftedStartDate : startDate;
                            const text = (0, _base.getHeaderCellText)(idx % cellCountInGroupRow, shiftedStartDateForHeaderText, headerCellTextFormat, getDateForHeaderText, {
                                interval: interval,
                                startViewDate: startViewDate,
                                startDayHour: startDayHour,
                                cellCountInDay: cellCountInDay,
                                viewOffset: viewOffset
                            });
                            return _extends(_extends({}, restProps), {
                                startDate: startDate,
                                text: text,
                                today: _date.default.sameDate(shiftedStartDate, today),
                                colSpan: colSpan,
                                isFirstGroupCell: isGroupedByDate || isFirstGroupCell && !isVerticalGrouping,
                                isLastGroupCell: isGroupedByDate || isLastGroupCell && !isVerticalGrouping
                            })
                        })
                    };
                    _proto.generateDateHeaderData = function(completeDateHeaderMap, completeViewDataMap, options) {
                        const {
                            isGenerateWeekDaysHeaderData: isGenerateWeekDaysHeaderData,
                            cellWidth: cellWidth,
                            isProvideVirtualCellsWidth: isProvideVirtualCellsWidth,
                            startDayHour: startDayHour,
                            endDayHour: endDayHour,
                            hoursInterval: hoursInterval,
                            isMonthDateHeader: isMonthDateHeader
                        } = options;
                        const dataMap = [];
                        let weekDayRowConfig = {};
                        const validCellWidth = cellWidth || 0;
                        if (isGenerateWeekDaysHeaderData) {
                            weekDayRowConfig = this._generateDateHeaderDataRow(options, completeDateHeaderMap, completeViewDataMap, this._viewDataGenerator.getCellCountInDay(startDayHour, endDayHour, hoursInterval), 0, validCellWidth);
                            dataMap.push(weekDayRowConfig.dateRow)
                        }
                        const datesRowConfig = this._generateDateHeaderDataRow(options, completeDateHeaderMap, completeViewDataMap, 1, isGenerateWeekDaysHeaderData ? 1 : 0, validCellWidth);
                        dataMap.push(datesRowConfig.dateRow);
                        return {
                            dataMap: dataMap,
                            leftVirtualCellWidth: isProvideVirtualCellsWidth ? datesRowConfig.leftVirtualCellWidth : void 0,
                            rightVirtualCellWidth: isProvideVirtualCellsWidth ? datesRowConfig.rightVirtualCellWidth : void 0,
                            leftVirtualCellCount: datesRowConfig.leftVirtualCellCount,
                            rightVirtualCellCount: datesRowConfig.rightVirtualCellCount,
                            weekDayLeftVirtualCellWidth: weekDayRowConfig.leftVirtualCellWidth,
                            weekDayRightVirtualCellWidth: weekDayRowConfig.rightVirtualCellWidth,
                            weekDayLeftVirtualCellCount: weekDayRowConfig.leftVirtualCellCount,
                            weekDayRightVirtualCellCount: weekDayRowConfig.rightVirtualCellCount,
                            isMonthDateHeader: isMonthDateHeader
                        }
                    };
                    _proto._generateDateHeaderDataRow = function(options, completeDateHeaderMap, completeViewDataMap, baseColSpan, rowIndex, cellWidth) {
                        const {
                            startCellIndex: startCellIndex,
                            cellCount: cellCount,
                            isProvideVirtualCellsWidth: isProvideVirtualCellsWidth,
                            groups: groups,
                            groupOrientation: groupOrientation,
                            isGroupedByDate: isGroupedByDate
                        } = options;
                        const horizontalGroupCount = (0, _base.getHorizontalGroupCount)(groups, groupOrientation);
                        const colSpan = isGroupedByDate ? horizontalGroupCount * baseColSpan : baseColSpan;
                        const leftVirtualCellCount = Math.floor(startCellIndex / colSpan);
                        const displayedCellCount = (0, _base.getDisplayedCellCount)(cellCount, completeViewDataMap);
                        const actualCellCount = Math.ceil((startCellIndex + displayedCellCount) / colSpan);
                        const totalCellCount = (0, _base.getTotalCellCountByCompleteData)(completeViewDataMap);
                        const dateRow = completeDateHeaderMap[rowIndex].slice(leftVirtualCellCount, actualCellCount);
                        const finalLeftVirtualCellCount = leftVirtualCellCount * colSpan;
                        const finalLeftVirtualCellWidth = finalLeftVirtualCellCount * cellWidth;
                        const finalRightVirtualCellCount = totalCellCount - actualCellCount * colSpan;
                        const finalRightVirtualCellWidth = finalRightVirtualCellCount * cellWidth;
                        return {
                            dateRow: dateRow,
                            leftVirtualCellCount: finalLeftVirtualCellCount,
                            leftVirtualCellWidth: isProvideVirtualCellsWidth ? finalLeftVirtualCellWidth : void 0,
                            rightVirtualCellCount: finalRightVirtualCellCount,
                            rightVirtualCellWidth: isProvideVirtualCellsWidth ? finalRightVirtualCellWidth : void 0
                        }
                    };
                    return DateHeaderDataGenerator
                }();
                exports.DateHeaderDataGenerator = DateHeaderDataGenerator
            },
        69033:
            /*!***********************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/view_model/m_grouped_data_map_provider.js ***!
              \***********************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.GroupedDataMapProvider = void 0;
                var _date = (obj = __webpack_require__( /*! ../../../../core/utils/date */ 91198), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _base = __webpack_require__( /*! ../../../../renovation/ui/scheduler/view_model/to_test/views/utils/base */ 45985);
                var _date2 = __webpack_require__( /*! ../../../core/utils/date */ 24321);

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                let GroupedDataMapProvider = function() {
                    function GroupedDataMapProvider(viewDataGenerator, viewDataMap, completeViewDataMap, viewOptions) {
                        this.groupedDataMap = viewDataGenerator.generateGroupedDataMap(viewDataMap);
                        this.completeViewDataMap = completeViewDataMap;
                        this._viewOptions = viewOptions
                    }
                    var _proto = GroupedDataMapProvider.prototype;
                    _proto.getGroupStartDate = function(groupIndex) {
                        var _a, _b, _c;
                        const firstRow = this.getFirstGroupRow(groupIndex);
                        return null !== (_c = null === (_b = null === (_a = null === firstRow || void 0 === firstRow ? void 0 : firstRow[0]) || void 0 === _a ? void 0 : _a.cellData) || void 0 === _b ? void 0 : _b.startDate) && void 0 !== _c ? _c : null
                    };
                    _proto.getGroupEndDate = function(groupIndex) {
                        const lastRow = this.getLastGroupRow(groupIndex);
                        if (lastRow) {
                            const lastColumnIndex = lastRow.length - 1;
                            const {
                                cellData: cellData
                            } = lastRow[lastColumnIndex];
                            const {
                                endDate: endDate
                            } = cellData;
                            return endDate
                        }
                    };
                    _proto.findGroupCellStartDate = function(groupIndex, startDate, endDate, isFindByDate) {
                        const groupData = this.getGroupFromDateTableGroupMap(groupIndex);
                        const checkCellStartDate = (rowIndex, columnIndex) => {
                            const {
                                cellData: cellData
                            } = groupData[rowIndex][columnIndex];
                            let {
                                startDate: secondMin,
                                endDate: secondMax
                            } = cellData;
                            if (isFindByDate) {
                                secondMin = _date.default.trimTime(secondMin);
                                secondMax = _date.default.setToDayEnd(secondMin)
                            }
                            if (_date.default.intervalsOverlap({
                                    firstMin: startDate,
                                    firstMax: endDate,
                                    secondMin: secondMin,
                                    secondMax: secondMax
                                })) {
                                return secondMin
                            }
                        };
                        const startDateVerticalSearch = (() => {
                            const cellCount = groupData[0].length;
                            for (let columnIndex = 0; columnIndex < cellCount; ++columnIndex) {
                                for (let rowIndex = 0; rowIndex < groupData.length; ++rowIndex) {
                                    const result = checkCellStartDate(rowIndex, columnIndex);
                                    if (result) {
                                        return result
                                    }
                                }
                            }
                        })();
                        const startDateHorizontalSearch = (() => {
                            for (let rowIndex = 0; rowIndex < groupData.length; ++rowIndex) {
                                const row = groupData[rowIndex];
                                for (let columnIndex = 0; columnIndex < row.length; ++columnIndex) {
                                    const result = checkCellStartDate(rowIndex, columnIndex);
                                    if (result) {
                                        return result
                                    }
                                }
                            }
                        })();
                        return startDateVerticalSearch > startDateHorizontalSearch ? startDateHorizontalSearch : startDateVerticalSearch
                    };
                    _proto.findAllDayGroupCellStartDate = function(groupIndex) {
                        var _a, _b, _c;
                        const groupedData = this.getGroupFromDateTableGroupMap(groupIndex);
                        const cellData = null === (_b = null === (_a = null === groupedData || void 0 === groupedData ? void 0 : groupedData[0]) || void 0 === _a ? void 0 : _a[0]) || void 0 === _b ? void 0 : _b.cellData;
                        return null !== (_c = null === cellData || void 0 === cellData ? void 0 : cellData.startDate) && void 0 !== _c ? _c : null
                    };
                    _proto.findCellPositionInMap = function(cellInfo, isAppointmentRender) {
                        const {
                            groupIndex: groupIndex,
                            startDate: startDate,
                            isAllDay: isAllDay,
                            index: index
                        } = cellInfo;
                        const {
                            allDayPanelGroupedMap: allDayPanelGroupedMap,
                            dateTableGroupedMap: dateTableGroupedMap
                        } = this.groupedDataMap;
                        const {
                            viewOffset: viewOffset
                        } = this._viewOptions;
                        const rows = isAllDay && !this._viewOptions.isVerticalGrouping ? allDayPanelGroupedMap[groupIndex] ? [allDayPanelGroupedMap[groupIndex]] : [] : dateTableGroupedMap[groupIndex] || [];
                        for (let rowIndex = 0; rowIndex < rows.length; rowIndex += 1) {
                            const row = rows[rowIndex];
                            for (let columnIndex = 0; columnIndex < row.length; columnIndex += 1) {
                                const cell = row[columnIndex];
                                const cellData = isAppointmentRender ? _extends(_extends({}, cell.cellData), {
                                    startDate: _date2.dateUtilsTs.addOffsets(cell.cellData.startDate, [-viewOffset]),
                                    endDate: _date2.dateUtilsTs.addOffsets(cell.cellData.endDate, [-viewOffset])
                                }) : cell.cellData;
                                if (this._isSameGroupIndexAndIndex(cellData, groupIndex, index)) {
                                    if (this.isStartDateInCell(startDate, isAllDay, cellData)) {
                                        return cell.position
                                    }
                                }
                            }
                        }
                        return
                    };
                    _proto.isStartDateInCell = function(startDate, inAllDayRow, _ref) {
                        let {
                            startDate: cellStartDate,
                            endDate: cellEndDate,
                            allDay: cellAllDay
                        } = _ref;
                        const {
                            viewType: viewType
                        } = this._viewOptions;
                        switch (true) {
                            case !(0, _base.isDateAndTimeView)(viewType):
                            case inAllDayRow && cellAllDay:
                                return _date.default.sameDate(startDate, cellStartDate);
                            case !inAllDayRow:
                                return startDate >= cellStartDate && startDate < cellEndDate;
                            default:
                                return false
                        }
                    };
                    _proto._isSameGroupIndexAndIndex = function(cellData, groupIndex, index) {
                        return cellData.groupIndex === groupIndex && (void 0 === index || cellData.index === index)
                    };
                    _proto.getCellsGroup = function(groupIndex) {
                        const {
                            dateTableGroupedMap: dateTableGroupedMap
                        } = this.groupedDataMap;
                        const groupData = dateTableGroupedMap[groupIndex];
                        if (groupData) {
                            const {
                                cellData: cellData
                            } = groupData[0][0];
                            return cellData.groups
                        }
                    };
                    _proto.getCompletedGroupsInfo = function() {
                        const {
                            dateTableGroupedMap: dateTableGroupedMap
                        } = this.groupedDataMap;
                        return dateTableGroupedMap.map(groupData => {
                            const firstCell = groupData[0][0];
                            const {
                                allDay: allDay,
                                groupIndex: groupIndex
                            } = firstCell.cellData;
                            return {
                                allDay: allDay,
                                groupIndex: groupIndex,
                                startDate: this.getGroupStartDate(groupIndex),
                                endDate: this.getGroupEndDate(groupIndex)
                            }
                        }).filter(_ref2 => {
                            let {
                                startDate: startDate
                            } = _ref2;
                            return !!startDate
                        })
                    };
                    _proto.getGroupIndices = function() {
                        return this.getCompletedGroupsInfo().map(_ref3 => {
                            let {
                                groupIndex: groupIndex
                            } = _ref3;
                            return groupIndex
                        })
                    };
                    _proto.getGroupFromDateTableGroupMap = function(groupIndex) {
                        const {
                            dateTableGroupedMap: dateTableGroupedMap
                        } = this.groupedDataMap;
                        return dateTableGroupedMap[groupIndex]
                    };
                    _proto.getFirstGroupRow = function(groupIndex) {
                        const groupedData = this.getGroupFromDateTableGroupMap(groupIndex);
                        if (groupedData) {
                            const {
                                cellData: cellData
                            } = groupedData[0][0];
                            return !cellData.allDay ? groupedData[0] : groupedData[1]
                        }
                    };
                    _proto.getLastGroupRow = function(groupIndex) {
                        const {
                            dateTableGroupedMap: dateTableGroupedMap
                        } = this.groupedDataMap;
                        const groupedData = dateTableGroupedMap[groupIndex];
                        if (groupedData) {
                            const lastRowIndex = groupedData.length - 1;
                            return groupedData[lastRowIndex]
                        }
                    };
                    _proto.getLastGroupCellPosition = function(groupIndex) {
                        const groupRow = this.getLastGroupRow(groupIndex);
                        return null === groupRow || void 0 === groupRow ? void 0 : groupRow[(null === groupRow || void 0 === groupRow ? void 0 : groupRow.length) - 1].position
                    };
                    _proto.getRowCountInGroup = function(groupIndex) {
                        const groupRow = this.getLastGroupRow(groupIndex);
                        const cellAmount = groupRow.length;
                        const lastCellData = groupRow[cellAmount - 1].cellData;
                        const lastCellIndex = lastCellData.index;
                        return (lastCellIndex + 1) / groupRow.length
                    };
                    return GroupedDataMapProvider
                }();
                exports.GroupedDataMapProvider = GroupedDataMapProvider
            },
        45512:
            /*!***********************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/view_model/m_time_panel_data_generator.js ***!
              \***********************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.TimePanelDataGenerator = void 0;
                var _date = (obj = __webpack_require__( /*! ../../../../core/utils/date */ 91198), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _base = __webpack_require__( /*! ../../../../renovation/ui/scheduler/view_model/to_test/views/utils/base */ 45985);
                var _week = __webpack_require__( /*! ../../../../renovation/ui/scheduler/view_model/to_test/views/utils/week */ 34279);
                var _utils = __webpack_require__( /*! ../../../../renovation/ui/scheduler/workspaces/utils */ 97205);
                var _date2 = __webpack_require__( /*! ../../../core/utils/date */ 24321);
                var _math = __webpack_require__( /*! ../../../core/utils/math */ 11390);

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                var __rest = (void 0, function(s, e) {
                    var t = {};
                    for (var p in s) {
                        if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) {
                            t[p] = s[p]
                        }
                    }
                    if (null != s && "function" === typeof Object.getOwnPropertySymbols) {
                        var i = 0;
                        for (p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
                            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) {
                                t[p[i]] = s[p[i]]
                            }
                        }
                    }
                    return t
                });
                const toMs = _date.default.dateToMilliseconds;
                let TimePanelDataGenerator = function() {
                    function TimePanelDataGenerator(_viewDataGenerator) {
                        this._viewDataGenerator = _viewDataGenerator
                    }
                    var _proto = TimePanelDataGenerator.prototype;
                    _proto.getCompleteTimePanelMap = function(options, completeViewDataMap) {
                        const {
                            startViewDate: startViewDate,
                            cellDuration: cellDuration,
                            startDayHour: startDayHour,
                            isVerticalGrouping: isVerticalGrouping,
                            intervalCount: intervalCount,
                            currentDate: currentDate,
                            viewType: viewType,
                            hoursInterval: hoursInterval,
                            endDayHour: endDayHour,
                            viewOffset: viewOffset,
                            today: today,
                            showCurrentTimeIndicator: showCurrentTimeIndicator
                        } = options;
                        const rowsCount = completeViewDataMap.length - 1;
                        const realEndViewDate = completeViewDataMap[rowsCount][completeViewDataMap[rowsCount].length - 1].endDate;
                        const rowCountInGroup = this._viewDataGenerator.getRowCount({
                            intervalCount: intervalCount,
                            currentDate: currentDate,
                            viewType: viewType,
                            hoursInterval: hoursInterval,
                            startDayHour: startDayHour,
                            endDayHour: endDayHour
                        });
                        const cellCountInGroupRow = this._viewDataGenerator.getCellCount({
                            intervalCount: intervalCount,
                            currentDate: currentDate,
                            viewType: viewType,
                            hoursInterval: hoursInterval,
                            startDayHour: startDayHour,
                            endDayHour: endDayHour
                        });
                        let allDayRowsCount = 0;
                        let usualCellIndex = 0;
                        return completeViewDataMap.map((row, index) => {
                            const _a = row[0],
                                {
                                    allDay: allDay,
                                    startDate: startDate,
                                    endDate: endDate,
                                    groups: groups,
                                    groupIndex: groupIndex,
                                    isFirstGroupCell: isFirstGroupCell,
                                    isLastGroupCell: isLastGroupCell,
                                    index: cellIndex
                                } = _a,
                                restCellProps = __rest(_a, ["allDay", "startDate", "endDate", "groups", "groupIndex", "isFirstGroupCell", "isLastGroupCell", "index"]);
                            const highlighted = allDay ? false : this.isTimeCellShouldBeHighlighted(today, viewOffset, {
                                startViewDate: startViewDate,
                                realEndViewDate: realEndViewDate,
                                showCurrentTimeIndicator: showCurrentTimeIndicator
                            }, {
                                date: startDate,
                                index: usualCellIndex,
                                duration: Math.round(cellDuration),
                                isFirst: 0 === usualCellIndex,
                                isLast: this.isLastCellInGroup(completeViewDataMap, index)
                            });
                            if (allDay) {
                                allDayRowsCount += 1;
                                usualCellIndex = 0
                            } else {
                                usualCellIndex += 1
                            }
                            const timeIndex = (index - allDayRowsCount) % rowCountInGroup;
                            return _extends(_extends({}, restCellProps), {
                                startDate: startDate,
                                allDay: allDay,
                                highlighted: highlighted,
                                text: (0, _week.getTimePanelCellText)(timeIndex, startDate, startViewDate, cellDuration, startDayHour, viewOffset),
                                groups: isVerticalGrouping ? groups : void 0,
                                groupIndex: isVerticalGrouping ? groupIndex : void 0,
                                isFirstGroupCell: isVerticalGrouping && isFirstGroupCell,
                                isLastGroupCell: isVerticalGrouping && isLastGroupCell,
                                index: Math.floor(cellIndex / cellCountInGroupRow)
                            })
                        })
                    };
                    _proto.generateTimePanelData = function(completeTimePanelMap, options) {
                        const {
                            startRowIndex: startRowIndex,
                            rowCount: rowCount,
                            topVirtualRowHeight: topVirtualRowHeight,
                            bottomVirtualRowHeight: bottomVirtualRowHeight,
                            isGroupedAllDayPanel: isGroupedAllDayPanel,
                            isVerticalGrouping: isVerticalGrouping,
                            isAllDayPanelVisible: isAllDayPanelVisible
                        } = options;
                        const indexDifference = isVerticalGrouping || !isAllDayPanelVisible ? 0 : 1;
                        const correctedStartRowIndex = startRowIndex + indexDifference;
                        const displayedRowCount = (0, _base.getDisplayedRowCount)(rowCount, completeTimePanelMap);
                        const timePanelMap = completeTimePanelMap.slice(correctedStartRowIndex, correctedStartRowIndex + displayedRowCount);
                        const timePanelData = {
                            topVirtualRowHeight: topVirtualRowHeight,
                            bottomVirtualRowHeight: bottomVirtualRowHeight,
                            isGroupedAllDayPanel: isGroupedAllDayPanel
                        };
                        const {
                            previousGroupedData: groupedData
                        } = this._generateTimePanelDataFromMap(timePanelMap, isVerticalGrouping);
                        timePanelData.groupedData = groupedData;
                        return timePanelData
                    };
                    _proto._generateTimePanelDataFromMap = function(timePanelMap, isVerticalGrouping) {
                        return timePanelMap.reduce((_ref, cellData) => {
                            let {
                                previousGroupIndex: previousGroupIndex,
                                previousGroupedData: previousGroupedData
                            } = _ref;
                            const currentGroupIndex = cellData.groupIndex;
                            if (currentGroupIndex !== previousGroupIndex) {
                                previousGroupedData.push({
                                    dateTable: [],
                                    isGroupedAllDayPanel: (0, _utils.getIsGroupedAllDayPanel)(!!cellData.allDay, isVerticalGrouping),
                                    groupIndex: currentGroupIndex,
                                    key: (0, _utils.getKeyByGroup)(currentGroupIndex, isVerticalGrouping)
                                })
                            }
                            if (cellData.allDay) {
                                previousGroupedData[previousGroupedData.length - 1].allDayPanel = cellData
                            } else {
                                previousGroupedData[previousGroupedData.length - 1].dateTable.push(cellData)
                            }
                            return {
                                previousGroupIndex: currentGroupIndex,
                                previousGroupedData: previousGroupedData
                            }
                        }, {
                            previousGroupIndex: -1,
                            previousGroupedData: []
                        })
                    };
                    _proto.isTimeCellShouldBeHighlighted = function(today, viewOffset, _ref2, cellData) {
                        let {
                            startViewDate: startViewDate,
                            realEndViewDate: realEndViewDate,
                            showCurrentTimeIndicator: showCurrentTimeIndicator
                        } = _ref2;
                        const realToday = _date2.dateUtilsTs.addOffsets(today, [viewOffset]);
                        const realStartViewDate = _date2.dateUtilsTs.addOffsets(startViewDate, [viewOffset]);
                        if (!showCurrentTimeIndicator || realToday < realStartViewDate || realToday >= realEndViewDate) {
                            return false
                        }
                        const realTodayTimeMs = this.getLocalDateTimeInMs(realToday);
                        const [startMs, endMs] = this.getHighlightedInterval(cellData);
                        return startMs < endMs ? realTodayTimeMs >= startMs && realTodayTimeMs < endMs : realTodayTimeMs >= startMs && realTodayTimeMs < toMs("day") || realTodayTimeMs >= 0 && realTodayTimeMs < endMs
                    };
                    _proto.getHighlightedInterval = function(_ref3) {
                        let {
                            date: date,
                            index: index,
                            duration: duration,
                            isFirst: isFirst,
                            isLast: isLast
                        } = _ref3;
                        const cellTimeMs = this.getLocalDateTimeInMs(date);
                        const isEvenCell = index % 2 === 0;
                        switch (true) {
                            case isFirst || isLast && !isEvenCell:
                                return [cellTimeMs, (0, _math.shiftIntegerByModule)(cellTimeMs + duration, toMs("day"))];
                            case isEvenCell:
                                return [(0, _math.shiftIntegerByModule)(cellTimeMs - duration, toMs("day")), (0, _math.shiftIntegerByModule)(cellTimeMs + duration, toMs("day"))];
                            default:
                                return [cellTimeMs, (0, _math.shiftIntegerByModule)(cellTimeMs + 2 * duration, toMs("day"))]
                        }
                    };
                    _proto.getLocalDateTimeInMs = function(date) {
                        const dateUtcMs = date.getTime() - date.getTimezoneOffset() * toMs("minute");
                        return (0, _math.shiftIntegerByModule)(dateUtcMs, toMs("day"))
                    };
                    _proto.isLastCellInGroup = function(completeViewDataMap, index) {
                        if (index === completeViewDataMap.length - 1) {
                            return true
                        }
                        const {
                            groupIndex: currentGroupIndex
                        } = completeViewDataMap[index][0];
                        const {
                            groupIndex: nextGroupIndex,
                            allDay: nextAllDay
                        } = completeViewDataMap[index + 1][0];
                        return nextAllDay || nextGroupIndex !== currentGroupIndex
                    };
                    return TimePanelDataGenerator
                }();
                exports.TimePanelDataGenerator = TimePanelDataGenerator
            },
        29964:
            /*!***************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/view_model/m_utils.js ***!
              \***************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.alignToFirstDayOfWeek = alignToFirstDayOfWeek;
                exports.alignToLastDayOfWeek = alignToLastDayOfWeek;
                exports.calculateAlignedWeeksBetweenDates = function(fromDate, toDate, firstDayOfWeek) {
                    const alignedFromDate = alignToFirstDayOfWeek(fromDate, firstDayOfWeek);
                    const alignedToDate = alignToLastDayOfWeek(toDate, firstDayOfWeek);
                    const weekCount = calculateDaysBetweenDates(alignedFromDate, alignedToDate) / 7;
                    return Math.max(weekCount, 6)
                };
                exports.calculateDaysBetweenDates = calculateDaysBetweenDates;
                exports.getViewDataGeneratorByViewType = void 0;
                var _date = (obj = __webpack_require__( /*! ../../../../core/utils/date */ 91198), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _m_constants = __webpack_require__( /*! ../../m_constants */ 6324);
                var _m_view_data_generator = __webpack_require__( /*! ./m_view_data_generator */ 31407);
                var _m_view_data_generator_day = __webpack_require__( /*! ./m_view_data_generator_day */ 54947);
                var _m_view_data_generator_month = __webpack_require__( /*! ./m_view_data_generator_month */ 24562);
                var _m_view_data_generator_timeline_month = __webpack_require__( /*! ./m_view_data_generator_timeline_month */ 49738);
                var _m_view_data_generator_week = __webpack_require__( /*! ./m_view_data_generator_week */ 98097);
                var _m_view_data_generator_work_week = __webpack_require__( /*! ./m_view_data_generator_work_week */ 4277);
                exports.getViewDataGeneratorByViewType = viewType => {
                    switch (viewType) {
                        case _m_constants.VIEWS.MONTH:
                            return new _m_view_data_generator_month.ViewDataGeneratorMonth;
                        case _m_constants.VIEWS.TIMELINE_MONTH:
                            return new _m_view_data_generator_timeline_month.ViewDataGeneratorTimelineMonth;
                        case _m_constants.VIEWS.DAY:
                        case _m_constants.VIEWS.TIMELINE_DAY:
                            return new _m_view_data_generator_day.ViewDataGeneratorDay;
                        case _m_constants.VIEWS.WEEK:
                        case _m_constants.VIEWS.TIMELINE_WEEK:
                            return new _m_view_data_generator_week.ViewDataGeneratorWeek;
                        case _m_constants.VIEWS.WORK_WEEK:
                        case _m_constants.VIEWS.TIMELINE_WORK_WEEK:
                            return new _m_view_data_generator_work_week.ViewDataGeneratorWorkWeek;
                        default:
                            return new _m_view_data_generator.ViewDataGenerator
                    }
                };

                function alignToFirstDayOfWeek(date, firstDayOfWeek) {
                    const newDate = new Date(date);
                    let dayDiff = newDate.getDay() - firstDayOfWeek;
                    if (dayDiff < 0) {
                        dayDiff += 7
                    }
                    newDate.setDate(newDate.getDate() - dayDiff);
                    return newDate
                }

                function alignToLastDayOfWeek(date, firstDayOfWeek) {
                    const newDate = alignToFirstDayOfWeek(date, firstDayOfWeek);
                    newDate.setDate(newDate.getDate() + 7 - 1);
                    return newDate
                }

                function calculateDaysBetweenDates(fromDate, toDate) {
                    const msDiff = _date.default.trimTime(toDate).getTime() - _date.default.trimTime(fromDate).getTime();
                    return Math.round(msDiff / 864e5) + 1
                }
            },
        31407:
            /*!*****************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/view_model/m_view_data_generator.js ***!
              \*****************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.ViewDataGenerator = void 0;
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 91198));
                var _base = __webpack_require__( /*! ../../../../renovation/ui/scheduler/view_model/to_test/views/utils/base */ 45985);
                var _utils = __webpack_require__( /*! ../../../../renovation/ui/scheduler/workspaces/utils */ 97205);
                var _date2 = __webpack_require__( /*! ../../../core/utils/date */ 24321);
                var _m_constants = __webpack_require__( /*! ../../m_constants */ 6324);
                var _m_utils_time_zone = _interopRequireDefault(__webpack_require__( /*! ../../m_utils_time_zone */ 57880));
                var _m_utils = __webpack_require__( /*! ../../resources/m_utils */ 31359);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const toMs = _date.default.dateToMilliseconds;
                let ViewDataGenerator = function() {
                    function ViewDataGenerator() {
                        this.daysInInterval = 1;
                        this.isWorkView = false;
                        this.tableAllDay = false
                    }
                    var _proto = ViewDataGenerator.prototype;
                    _proto.isSkippedDate = function(date) {
                        return false
                    };
                    _proto._calculateStartViewDate = function(options) {};
                    _proto.getStartViewDate = function(options) {
                        return this._calculateStartViewDate(options)
                    };
                    _proto.getCompleteViewDataMap = function(options) {
                        const {
                            groups: groups,
                            isGroupedByDate: isGroupedByDate,
                            isHorizontalGrouping: isHorizontalGrouping,
                            isVerticalGrouping: isVerticalGrouping,
                            intervalCount: intervalCount,
                            currentDate: currentDate,
                            viewType: viewType,
                            startDayHour: startDayHour,
                            endDayHour: endDayHour,
                            hoursInterval: hoursInterval
                        } = options;
                        this._setVisibilityDates(options);
                        this.setHiddenInterval(startDayHour, endDayHour, hoursInterval);
                        const groupsList = (0, _m_utils.getAllGroups)(groups);
                        const cellCountInGroupRow = this.getCellCount({
                            intervalCount: intervalCount,
                            currentDate: currentDate,
                            viewType: viewType,
                            startDayHour: startDayHour,
                            endDayHour: endDayHour,
                            hoursInterval: hoursInterval
                        });
                        const rowCountInGroup = this.getRowCount({
                            intervalCount: intervalCount,
                            currentDate: currentDate,
                            viewType: viewType,
                            hoursInterval: hoursInterval,
                            startDayHour: startDayHour,
                            endDayHour: endDayHour
                        });
                        let viewDataMap = [];
                        const allDayPanelData = this._generateAllDayPanelData(options, rowCountInGroup, cellCountInGroupRow);
                        const viewCellsData = this._generateViewCellsData(options, rowCountInGroup, cellCountInGroupRow);
                        if (allDayPanelData) {
                            viewDataMap.push(allDayPanelData)
                        }
                        viewDataMap.push(...viewCellsData);
                        if (isHorizontalGrouping && !isGroupedByDate) {
                            viewDataMap = this._transformViewDataMapForHorizontalGrouping(viewDataMap, groupsList)
                        }
                        if (isVerticalGrouping) {
                            viewDataMap = this._transformViewDataMapForVerticalGrouping(viewDataMap, groupsList)
                        }
                        if (isGroupedByDate) {
                            viewDataMap = this._transformViewDataMapForGroupingByDate(viewDataMap, groupsList)
                        }
                        return this._addKeysToCells(viewDataMap)
                    };
                    _proto._transformViewDataMapForHorizontalGrouping = function(viewDataMap, groupsList) {
                        const result = viewDataMap.map(row => row.slice());
                        groupsList.slice(1).forEach((groups, index) => {
                            const groupIndex = index + 1;
                            viewDataMap.forEach((row, rowIndex) => {
                                const nextGroupRow = row.map(cellData => _extends(_extends({}, cellData), {
                                    groups: groups,
                                    groupIndex: groupIndex
                                }));
                                result[rowIndex].push(...nextGroupRow)
                            })
                        });
                        return result
                    };
                    _proto._transformViewDataMapForVerticalGrouping = function(viewDataMap, groupsList) {
                        const result = viewDataMap.map(row => row.slice());
                        groupsList.slice(1).forEach((groups, index) => {
                            const groupIndex = index + 1;
                            const nextGroupMap = viewDataMap.map(cellsRow => {
                                const nextRow = cellsRow.map(cellData => _extends(_extends({}, cellData), {
                                    groupIndex: groupIndex,
                                    groups: groups
                                }));
                                return nextRow
                            });
                            result.push(...nextGroupMap)
                        });
                        return result
                    };
                    _proto._transformViewDataMapForGroupingByDate = function(viewDataMap, groupsList) {
                        const correctedGroupList = groupsList.slice(1);
                        const correctedGroupCount = correctedGroupList.length;
                        const result = viewDataMap.map(cellsRow => {
                            const groupedByDateCellsRow = cellsRow.reduce((currentRow, cell) => {
                                const rowWithCurrentCell = [...currentRow, _extends(_extends({}, cell), {
                                    isFirstGroupCell: true,
                                    isLastGroupCell: 0 === correctedGroupCount
                                }), ...correctedGroupList.map((groups, index) => _extends(_extends({}, cell), {
                                    groups: groups,
                                    groupIndex: index + 1,
                                    isFirstGroupCell: false,
                                    isLastGroupCell: index === correctedGroupCount - 1
                                }))];
                                return rowWithCurrentCell
                            }, []);
                            return groupedByDateCellsRow
                        });
                        return result
                    };
                    _proto._addKeysToCells = function(viewDataMap) {
                        const totalColumnCount = viewDataMap[0].length;
                        const {
                            currentViewDataMap: result
                        } = viewDataMap.reduce((_ref, row, rowIndex) => {
                            let {
                                allDayPanelsCount: allDayPanelsCount,
                                currentViewDataMap: currentViewDataMap
                            } = _ref;
                            const isAllDay = row[0].allDay;
                            const keyBase = (rowIndex - allDayPanelsCount) * totalColumnCount;
                            const currentAllDayPanelsCount = isAllDay ? allDayPanelsCount + 1 : allDayPanelsCount;
                            currentViewDataMap[rowIndex].forEach((cell, columnIndex) => {
                                cell.key = keyBase + columnIndex
                            });
                            return {
                                allDayPanelsCount: currentAllDayPanelsCount,
                                currentViewDataMap: currentViewDataMap
                            }
                        }, {
                            allDayPanelsCount: 0,
                            currentViewDataMap: viewDataMap
                        });
                        return result
                    };
                    _proto.generateViewDataMap = function(completeViewDataMap, options) {
                        const {
                            rowCount: rowCount,
                            startCellIndex: startCellIndex,
                            startRowIndex: startRowIndex,
                            cellCount: cellCount,
                            isVerticalGrouping: isVerticalGrouping,
                            isAllDayPanelVisible: isAllDayPanelVisible
                        } = options;
                        const sliceCells = (row, rowIndex, startIndex, count) => {
                            const sliceToIndex = void 0 !== count ? startIndex + count : void 0;
                            return row.slice(startIndex, sliceToIndex).map((cellData, columnIndex) => ({
                                cellData: cellData,
                                position: {
                                    rowIndex: rowIndex,
                                    columnIndex: columnIndex
                                }
                            }))
                        };
                        let correctedStartRowIndex = startRowIndex;
                        let allDayPanelMap = [];
                        if (this._isStandaloneAllDayPanel(isVerticalGrouping, isAllDayPanelVisible)) {
                            correctedStartRowIndex++;
                            allDayPanelMap = sliceCells(completeViewDataMap[0], 0, startCellIndex, cellCount)
                        }
                        const displayedRowCount = (0, _base.getDisplayedRowCount)(rowCount, completeViewDataMap);
                        const dateTableMap = completeViewDataMap.slice(correctedStartRowIndex, correctedStartRowIndex + displayedRowCount).map((row, rowIndex) => sliceCells(row, rowIndex, startCellIndex, cellCount));
                        return {
                            allDayPanelMap: allDayPanelMap,
                            dateTableMap: dateTableMap
                        }
                    };
                    _proto._isStandaloneAllDayPanel = function(isVerticalGrouping, isAllDayPanelVisible) {
                        return !isVerticalGrouping && isAllDayPanelVisible
                    };
                    _proto.getViewDataFromMap = function(completeViewDataMap, viewDataMap, options) {
                        const {
                            topVirtualRowHeight: topVirtualRowHeight,
                            bottomVirtualRowHeight: bottomVirtualRowHeight,
                            leftVirtualCellWidth: leftVirtualCellWidth,
                            rightVirtualCellWidth: rightVirtualCellWidth,
                            cellCount: cellCount,
                            rowCount: rowCount,
                            startRowIndex: startRowIndex,
                            startCellIndex: startCellIndex,
                            isProvideVirtualCellsWidth: isProvideVirtualCellsWidth,
                            isGroupedAllDayPanel: isGroupedAllDayPanel,
                            isVerticalGrouping: isVerticalGrouping,
                            isAllDayPanelVisible: isAllDayPanelVisible
                        } = options;
                        const {
                            allDayPanelMap: allDayPanelMap,
                            dateTableMap: dateTableMap
                        } = viewDataMap;
                        const {
                            groupedData: groupedData
                        } = dateTableMap.reduce((_ref2, cellsRow) => {
                            let {
                                previousGroupIndex: previousGroupIndex,
                                groupedData: groupedData
                            } = _ref2;
                            const cellDataRow = cellsRow.map(_ref3 => {
                                let {
                                    cellData: cellData
                                } = _ref3;
                                return cellData
                            });
                            const firstCell = cellDataRow[0];
                            const isAllDayRow = firstCell.allDay;
                            const currentGroupIndex = firstCell.groupIndex;
                            if (currentGroupIndex !== previousGroupIndex) {
                                groupedData.push({
                                    dateTable: [],
                                    isGroupedAllDayPanel: (0, _utils.getIsGroupedAllDayPanel)(!!isAllDayRow, isVerticalGrouping),
                                    groupIndex: currentGroupIndex,
                                    key: (0, _utils.getKeyByGroup)(currentGroupIndex, isVerticalGrouping)
                                })
                            }
                            if (isAllDayRow) {
                                groupedData[groupedData.length - 1].allDayPanel = cellDataRow
                            } else {
                                groupedData[groupedData.length - 1].dateTable.push({
                                    cells: cellDataRow,
                                    key: cellDataRow[0].key - startCellIndex
                                })
                            }
                            return {
                                groupedData: groupedData,
                                previousGroupIndex: currentGroupIndex
                            }
                        }, {
                            previousGroupIndex: -1,
                            groupedData: []
                        });
                        if (this._isStandaloneAllDayPanel(isVerticalGrouping, isAllDayPanelVisible)) {
                            groupedData[0].allDayPanel = allDayPanelMap.map(_ref4 => {
                                let {
                                    cellData: cellData
                                } = _ref4;
                                return cellData
                            })
                        }
                        const totalCellCount = (0, _base.getTotalCellCountByCompleteData)(completeViewDataMap);
                        const totalRowCount = (0, _base.getTotalRowCountByCompleteData)(completeViewDataMap);
                        const displayedCellCount = (0, _base.getDisplayedCellCount)(cellCount, completeViewDataMap);
                        const displayedRowCount = (0, _base.getDisplayedRowCount)(rowCount, completeViewDataMap);
                        return {
                            groupedData: groupedData,
                            topVirtualRowHeight: topVirtualRowHeight,
                            bottomVirtualRowHeight: bottomVirtualRowHeight,
                            leftVirtualCellWidth: isProvideVirtualCellsWidth ? leftVirtualCellWidth : void 0,
                            rightVirtualCellWidth: isProvideVirtualCellsWidth ? rightVirtualCellWidth : void 0,
                            isGroupedAllDayPanel: isGroupedAllDayPanel,
                            leftVirtualCellCount: startCellIndex,
                            rightVirtualCellCount: void 0 === cellCount ? 0 : totalCellCount - startCellIndex - displayedCellCount,
                            topVirtualRowCount: startRowIndex,
                            bottomVirtualRowCount: totalRowCount - startRowIndex - displayedRowCount
                        }
                    };
                    _proto._generateViewCellsData = function(options, rowCount, cellCountInGroupRow) {
                        const viewCellsData = [];
                        for (let rowIndex = 0; rowIndex < rowCount; rowIndex += 1) {
                            viewCellsData.push(this._generateCellsRow(options, false, rowIndex, rowCount, cellCountInGroupRow))
                        }
                        return viewCellsData
                    };
                    _proto._generateAllDayPanelData = function(options, rowCount, columnCount) {
                        if (!options.isAllDayPanelVisible) {
                            return null
                        }
                        return this._generateCellsRow(options, true, 0, rowCount, columnCount)
                    };
                    _proto._generateCellsRow = function(options, allDay, rowIndex, rowCount, columnCount) {
                        const cellsRow = [];
                        for (let columnIndex = 0; columnIndex < columnCount; ++columnIndex) {
                            const cellDataValue = this.getCellData(rowIndex, columnIndex, options, allDay);
                            cellDataValue.index = rowIndex * columnCount + columnIndex;
                            cellDataValue.isFirstGroupCell = this._isFirstGroupCell(rowIndex, columnIndex, options, rowCount, columnCount);
                            cellDataValue.isLastGroupCell = this._isLastGroupCell(rowIndex, columnIndex, options, rowCount, columnCount);
                            cellsRow.push(cellDataValue)
                        }
                        return cellsRow
                    };
                    _proto.getCellData = function(rowIndex, columnIndex, options, allDay) {
                        return allDay ? this.prepareAllDayCellData(options, rowIndex, columnIndex) : this.prepareCellData(options, rowIndex, columnIndex)
                    };
                    _proto.prepareCellData = function(options, rowIndex, columnIndex) {
                        const {
                            groups: groups,
                            startDayHour: startDayHour,
                            endDayHour: endDayHour,
                            hoursInterval: hoursInterval
                        } = options;
                        const groupsList = (0, _m_utils.getAllGroups)(groups);
                        const startDate = this.getDateByCellIndices(options, rowIndex, columnIndex, this.getCellCountInDay(startDayHour, endDayHour, hoursInterval));
                        const endDate = this.getCellEndDate(startDate, options);
                        const data = {
                            startDate: startDate,
                            endDate: endDate,
                            allDay: this.tableAllDay,
                            groupIndex: 0
                        };
                        if (groupsList.length > 0) {
                            data.groups = groupsList[0]
                        }
                        return data
                    };
                    _proto.prepareAllDayCellData = function(options, rowIndex, columnIndex) {
                        const data = this.prepareCellData(_extends(_extends({}, options), {
                            viewOffset: 0
                        }), rowIndex, columnIndex);
                        const {
                            viewOffset: viewOffset
                        } = options;
                        const startDate = _date.default.trimTime(data.startDate);
                        const shiftedStartDate = _date2.dateUtilsTs.addOffsets(startDate, [viewOffset]);
                        return _extends(_extends({}, data), {
                            startDate: shiftedStartDate,
                            endDate: shiftedStartDate,
                            allDay: true
                        })
                    };
                    _proto.getDateByCellIndices = function(options, rowIndex, columnIndex, cellCountInDay) {
                        let {
                            startViewDate: startViewDate
                        } = options;
                        const {
                            startDayHour: startDayHour,
                            interval: interval,
                            firstDayOfWeek: firstDayOfWeek,
                            intervalCount: intervalCount,
                            viewOffset: viewOffset
                        } = options;
                        const isStartViewDateDuringDST = startViewDate.getHours() !== Math.floor(startDayHour);
                        if (isStartViewDateDuringDST) {
                            const dateWithCorrectHours = (0, _base.getStartViewDateWithoutDST)(startViewDate, startDayHour);
                            startViewDate = new Date(dateWithCorrectHours.getTime() - toMs("day"))
                        }
                        const columnCountBase = this.getCellCount(options);
                        const rowCountBase = this.getRowCount(options);
                        const cellIndex = this._calculateCellIndex(rowIndex, columnIndex, rowCountBase, columnCountBase);
                        const millisecondsOffset = this.getMillisecondsOffset(cellIndex, interval, cellCountInDay);
                        const offsetByCount = this.isWorkView ? this.getTimeOffsetByColumnIndex(columnIndex, this.getFirstDayOfWeek(firstDayOfWeek), columnCountBase, intervalCount) : 0;
                        const startViewDateTime = startViewDate.getTime();
                        const currentDate = new Date(startViewDateTime + millisecondsOffset + offsetByCount + viewOffset);
                        const timeZoneDifference = isStartViewDateDuringDST ? 0 : _date.default.getTimezonesDifference(startViewDate, currentDate);
                        currentDate.setTime(currentDate.getTime() + timeZoneDifference);
                        return currentDate
                    };
                    _proto.getMillisecondsOffset = function(cellIndex, interval, cellCountInDay) {
                        const dayIndex = Math.floor(cellIndex / cellCountInDay);
                        const realHiddenInterval = dayIndex * this.hiddenInterval;
                        return interval * cellIndex + realHiddenInterval
                    };
                    _proto.getTimeOffsetByColumnIndex = function(columnIndex, firstDayOfWeek, columnCount, intervalCount) {
                        const firstDayOfWeekDiff = Math.max(0, firstDayOfWeek - 1);
                        const columnsInWeek = columnCount / intervalCount;
                        const weekendCount = Math.floor((columnIndex + firstDayOfWeekDiff) / columnsInWeek);
                        return 2 * weekendCount * toMs("day")
                    };
                    _proto.calculateEndDate = function(startDate, interval, endDayHour) {
                        return this.getCellEndDate(startDate, {
                            interval: interval
                        })
                    };
                    _proto._calculateCellIndex = function(rowIndex, columnIndex, rowCount, columnCountBase) {
                        return (0, _base.calculateCellIndex)(rowIndex, columnIndex, rowCount)
                    };
                    _proto.generateGroupedDataMap = function(viewDataMap) {
                        const {
                            allDayPanelMap: allDayPanelMap,
                            dateTableMap: dateTableMap
                        } = viewDataMap;
                        const {
                            previousGroupedDataMap: dateTableGroupedMap
                        } = dateTableMap.reduce((previousOptions, cellsRow) => {
                            const {
                                previousGroupedDataMap: previousGroupedDataMap,
                                previousRowIndex: previousRowIndex,
                                previousGroupIndex: previousGroupIndex
                            } = previousOptions;
                            const {
                                groupIndex: currentGroupIndex
                            } = cellsRow[0].cellData;
                            const currentRowIndex = currentGroupIndex === previousGroupIndex ? previousRowIndex + 1 : 0;
                            cellsRow.forEach(cell => {
                                const {
                                    groupIndex: groupIndex
                                } = cell.cellData;
                                if (!previousGroupedDataMap[groupIndex]) {
                                    previousGroupedDataMap[groupIndex] = []
                                }
                                if (!previousGroupedDataMap[groupIndex][currentRowIndex]) {
                                    previousGroupedDataMap[groupIndex][currentRowIndex] = []
                                }
                                previousGroupedDataMap[groupIndex][currentRowIndex].push(cell)
                            });
                            return {
                                previousGroupedDataMap: previousGroupedDataMap,
                                previousRowIndex: currentRowIndex,
                                previousGroupIndex: currentGroupIndex
                            }
                        }, {
                            previousGroupedDataMap: [],
                            previousRowIndex: -1,
                            previousGroupIndex: -1
                        });
                        const allDayPanelGroupedMap = [];
                        null === allDayPanelMap || void 0 === allDayPanelMap ? void 0 : allDayPanelMap.forEach(cell => {
                            const {
                                groupIndex: groupIndex
                            } = cell.cellData;
                            if (!allDayPanelGroupedMap[groupIndex]) {
                                allDayPanelGroupedMap[groupIndex] = []
                            }
                            allDayPanelGroupedMap[groupIndex].push(cell)
                        });
                        return {
                            allDayPanelGroupedMap: allDayPanelGroupedMap,
                            dateTableGroupedMap: dateTableGroupedMap
                        }
                    };
                    _proto._isFirstGroupCell = function(rowIndex, columnIndex, options, rowCount, columnCount) {
                        const {
                            groupOrientation: groupOrientation,
                            groups: groups,
                            isGroupedByDate: isGroupedByDate
                        } = options;
                        const groupCount = (0, _m_utils.getGroupCount)(groups);
                        if (isGroupedByDate) {
                            return columnIndex % groupCount === 0
                        }
                        if (groupOrientation === _m_constants.HORIZONTAL_GROUP_ORIENTATION) {
                            return columnIndex % columnCount === 0
                        }
                        return rowIndex % rowCount === 0
                    };
                    _proto._isLastGroupCell = function(rowIndex, columnIndex, options, rowCount, columnCount) {
                        const {
                            groupOrientation: groupOrientation,
                            groups: groups,
                            isGroupedByDate: isGroupedByDate
                        } = options;
                        const groupCount = (0, _m_utils.getGroupCount)(groups);
                        if (isGroupedByDate) {
                            return (columnIndex + 1) % groupCount === 0
                        }
                        if (groupOrientation === _m_constants.HORIZONTAL_GROUP_ORIENTATION) {
                            return (columnIndex + 1) % columnCount === 0
                        }
                        return (rowIndex + 1) % rowCount === 0
                    };
                    _proto.markSelectedAndFocusedCells = function(viewDataMap, renderOptions) {
                        const {
                            selectedCells: selectedCells,
                            focusedCell: focusedCell
                        } = renderOptions;
                        if (!selectedCells && !focusedCell) {
                            return viewDataMap
                        }
                        const {
                            allDayPanelMap: allDayPanelMap,
                            dateTableMap: dateTableMap
                        } = viewDataMap;
                        const nextDateTableMap = dateTableMap.map(row => this._markSelectedAndFocusedCellsInRow(row, selectedCells, focusedCell));
                        const nextAllDayMap = this._markSelectedAndFocusedCellsInRow(allDayPanelMap, selectedCells, focusedCell);
                        return {
                            allDayPanelMap: nextAllDayMap,
                            dateTableMap: nextDateTableMap
                        }
                    };
                    _proto._markSelectedAndFocusedCellsInRow = function(dataRow, selectedCells, focusedCell) {
                        return dataRow.map(cell => {
                            const {
                                index: index,
                                groupIndex: groupIndex,
                                allDay: allDay,
                                startDate: startDate
                            } = cell.cellData;
                            const indexInSelectedCells = selectedCells.findIndex(_ref5 => {
                                let {
                                    index: selectedCellIndex,
                                    groupIndex: selectedCellGroupIndex,
                                    allDay: selectedCellAllDay,
                                    startDate: selectedCellStartDate
                                } = _ref5;
                                return groupIndex === selectedCellGroupIndex && (index === selectedCellIndex || void 0 === selectedCellIndex && startDate.getTime() === selectedCellStartDate.getTime()) && !!allDay === !!selectedCellAllDay
                            });
                            const isFocused = !!focusedCell && index === focusedCell.cellData.index && groupIndex === focusedCell.cellData.groupIndex && allDay === focusedCell.cellData.allDay;
                            if (!isFocused && -1 === indexInSelectedCells) {
                                return cell
                            }
                            return _extends(_extends({}, cell), {
                                cellData: _extends(_extends({}, cell.cellData), {
                                    isSelected: indexInSelectedCells > -1,
                                    isFocused: isFocused
                                })
                            })
                        })
                    };
                    _proto.getInterval = function(hoursInterval) {
                        return hoursInterval * toMs("hour")
                    };
                    _proto._getIntervalDuration = function(intervalCount) {
                        return toMs("day") * intervalCount
                    };
                    _proto._setVisibilityDates = function(options) {};
                    _proto.getCellCountInDay = function(startDayHour, endDayHour, hoursInterval) {
                        const result = (0, _base.calculateDayDuration)(startDayHour, endDayHour) / hoursInterval;
                        return Math.ceil(result)
                    };
                    _proto.getCellCount = function(options) {
                        const {
                            intervalCount: intervalCount,
                            viewType: viewType,
                            startDayHour: startDayHour,
                            endDayHour: endDayHour,
                            hoursInterval: hoursInterval
                        } = options;
                        const cellCountInDay = this.getCellCountInDay(startDayHour, endDayHour, hoursInterval);
                        const columnCountInDay = (0, _base.isHorizontalView)(viewType) ? cellCountInDay : 1;
                        return this.daysInInterval * intervalCount * columnCountInDay
                    };
                    _proto.getRowCount = function(options) {
                        const {
                            viewType: viewType,
                            startDayHour: startDayHour,
                            endDayHour: endDayHour,
                            hoursInterval: hoursInterval
                        } = options;
                        const cellCountInDay = this.getCellCountInDay(startDayHour, endDayHour, hoursInterval);
                        const rowCountInDay = !(0, _base.isHorizontalView)(viewType) ? cellCountInDay : 1;
                        return rowCountInDay
                    };
                    _proto.setHiddenInterval = function(startDayHour, endDayHour, hoursInterval) {
                        this.hiddenInterval = toMs("day") - this.getVisibleDayDuration(startDayHour, endDayHour, hoursInterval)
                    };
                    _proto.getVisibleDayDuration = function(startDayHour, endDayHour, hoursInterval) {
                        const cellCountInDay = this.getCellCountInDay(startDayHour, endDayHour, hoursInterval);
                        return hoursInterval * cellCountInDay * toMs("hour")
                    };
                    _proto.getFirstDayOfWeek = function(firstDayOfWeekOption) {
                        return firstDayOfWeekOption
                    };
                    _proto.getCellEndDate = function(cellStartDate, options) {
                        const durationMs = Math.round(options.interval);
                        return _m_utils_time_zone.default.addOffsetsWithoutDST(cellStartDate, durationMs)
                    };
                    return ViewDataGenerator
                }();
                exports.ViewDataGenerator = ViewDataGenerator
            },
        54947:
            /*!*********************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/view_model/m_view_data_generator_day.js ***!
              \*********************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.ViewDataGeneratorDay = void 0;
                var _day = __webpack_require__( /*! ../../../../renovation/ui/scheduler/view_model/to_test/views/utils/day */ 58824);
                var _m_view_data_generator = __webpack_require__( /*! ./m_view_data_generator */ 31407);

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let ViewDataGeneratorDay = function(_ViewDataGenerator) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(ViewDataGeneratorDay, _ViewDataGenerator);

                    function ViewDataGeneratorDay() {
                        return _ViewDataGenerator.apply(this, arguments) || this
                    }
                    var _proto = ViewDataGeneratorDay.prototype;
                    _proto._calculateStartViewDate = function(options) {
                        return (0, _day.calculateStartViewDate)(options.currentDate, options.startDayHour, options.startDate, this._getIntervalDuration(options.intervalCount))
                    };
                    return ViewDataGeneratorDay
                }(_m_view_data_generator.ViewDataGenerator);
                exports.ViewDataGeneratorDay = ViewDataGeneratorDay
            },
        24562:
            /*!***********************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/view_model/m_view_data_generator_month.js ***!
              \***********************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.ViewDataGeneratorMonth = void 0;
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 91198));
                var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/date */ 91500));
                var _base = __webpack_require__( /*! ../../../../renovation/ui/scheduler/view_model/to_test/views/utils/base */ 45985);
                var _month = __webpack_require__( /*! ../../../../renovation/ui/scheduler/view_model/to_test/views/utils/month */ 19097);
                var _m_utils_time_zone = _interopRequireDefault(__webpack_require__( /*! ../../m_utils_time_zone */ 57880));
                var _m_utils = __webpack_require__( /*! ./m_utils */ 29964);
                var _m_view_data_generator = __webpack_require__( /*! ./m_view_data_generator */ 31407);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const toMs = _date.default.dateToMilliseconds;
                let ViewDataGeneratorMonth = function(_ViewDataGenerator) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(ViewDataGeneratorMonth, _ViewDataGenerator);

                    function ViewDataGeneratorMonth() {
                        var _this;
                        _this = _ViewDataGenerator.apply(this, arguments) || this;
                        _this.tableAllDay = void 0;
                        return _this
                    }
                    var _proto = ViewDataGeneratorMonth.prototype;
                    _proto.getCellData = function(rowIndex, columnIndex, options, allDay) {
                        const {
                            indicatorTime: indicatorTime,
                            timeZoneCalculator: timeZoneCalculator,
                            intervalCount: intervalCount,
                            viewOffset: viewOffset
                        } = options;
                        const data = _ViewDataGenerator.prototype.getCellData.call(this, rowIndex, columnIndex, options, false);
                        const startDate = _m_utils_time_zone.default.addOffsetsWithoutDST(data.startDate, -viewOffset);
                        data.today = this.isCurrentDate(startDate, indicatorTime, timeZoneCalculator);
                        data.otherMonth = this.isOtherMonth(startDate, this._minVisibleDate, this._maxVisibleDate);
                        data.firstDayOfMonth = (0, _month.isFirstCellInMonthWithIntervalCount)(startDate, intervalCount);
                        data.text = (0, _month.getCellText)(startDate, intervalCount);
                        return data
                    };
                    _proto.isCurrentDate = function(date, indicatorTime, timeZoneCalculator) {
                        return _date.default.sameDate(date, (0, _base.getToday)(indicatorTime, timeZoneCalculator))
                    };
                    _proto.isOtherMonth = function(cellDate, minDate, maxDate) {
                        return !_date.default.dateInRange(cellDate, minDate, maxDate, "date")
                    };
                    _proto._calculateCellIndex = function(rowIndex, columnIndex, rowCount, columnCount) {
                        return (0, _month.calculateCellIndex)(rowIndex, columnIndex, rowCount, columnCount)
                    };
                    _proto.calculateEndDate = function(startDate, interval, endDayHour) {
                        return (0, _base.setOptionHour)(startDate, endDayHour)
                    };
                    _proto.getInterval = function() {
                        return toMs("day")
                    };
                    _proto._calculateStartViewDate = function(options) {
                        return (0, _month.calculateStartViewDate)(options.currentDate, options.startDayHour, options.startDate, options.intervalCount, this.getFirstDayOfWeek(options.firstDayOfWeek))
                    };
                    _proto._setVisibilityDates = function(options) {
                        const {
                            intervalCount: intervalCount,
                            startDate: startDate,
                            currentDate: currentDate
                        } = options;
                        const firstMonthDate = _date.default.getFirstMonthDate(startDate);
                        const viewStart = (0, _month.getViewStartByOptions)(startDate, currentDate, intervalCount, firstMonthDate);
                        this._minVisibleDate = new Date(viewStart.setDate(1));
                        const nextMonthDate = new Date(viewStart.setMonth(viewStart.getMonth() + intervalCount));
                        this._maxVisibleDate = new Date(nextMonthDate.setDate(0))
                    };
                    _proto.getCellCount = function() {
                        return 7
                    };
                    _proto.getRowCount = function(options) {
                        var _a;
                        const startDate = new Date(options.currentDate);
                        startDate.setDate(1);
                        const endDate = new Date(startDate);
                        endDate.setMonth(endDate.getMonth() + options.intervalCount);
                        endDate.setDate(0);
                        return (0, _m_utils.calculateAlignedWeeksBetweenDates)(startDate, endDate, null !== (_a = options.firstDayOfWeek) && void 0 !== _a ? _a : _date2.default.firstDayOfWeekIndex())
                    };
                    _proto.getCellCountInDay = function() {
                        return 1
                    };
                    _proto.setHiddenInterval = function() {
                        this.hiddenInterval = 0
                    };
                    _proto.getCellEndDate = function(cellStartDate, options) {
                        const {
                            startDayHour: startDayHour,
                            endDayHour: endDayHour
                        } = options;
                        const durationMs = (endDayHour - startDayHour) * toMs("hour");
                        return _m_utils_time_zone.default.addOffsetsWithoutDST(cellStartDate, durationMs)
                    };
                    return ViewDataGeneratorMonth
                }(_m_view_data_generator.ViewDataGenerator);
                exports.ViewDataGeneratorMonth = ViewDataGeneratorMonth
            },
        49738:
            /*!********************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/view_model/m_view_data_generator_timeline_month.js ***!
              \********************************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.ViewDataGeneratorTimelineMonth = void 0;
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 91198));
                var _base = __webpack_require__( /*! ../../../../renovation/ui/scheduler/view_model/to_test/views/utils/base */ 45985);
                var _month = __webpack_require__( /*! ../../../../renovation/ui/scheduler/view_model/to_test/views/utils/month */ 19097);
                var _timeline_month = __webpack_require__( /*! ../../../../renovation/ui/scheduler/view_model/to_test/views/utils/timeline_month */ 75481);
                var _m_utils_time_zone = _interopRequireDefault(__webpack_require__( /*! ../../m_utils_time_zone */ 57880));
                var _m_view_data_generator = __webpack_require__( /*! ./m_view_data_generator */ 31407);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const toMs = _date.default.dateToMilliseconds;
                let ViewDataGeneratorTimelineMonth = function(_ViewDataGenerator) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(ViewDataGeneratorTimelineMonth, _ViewDataGenerator);

                    function ViewDataGeneratorTimelineMonth() {
                        return _ViewDataGenerator.apply(this, arguments) || this
                    }
                    var _proto = ViewDataGeneratorTimelineMonth.prototype;
                    _proto._calculateCellIndex = function(rowIndex, columnIndex, rowCount, columnCount) {
                        return (0, _month.calculateCellIndex)(rowIndex, columnIndex, rowCount, columnCount)
                    };
                    _proto.calculateEndDate = function(startDate, interval, endDayHour) {
                        return (0, _base.setOptionHour)(startDate, endDayHour)
                    };
                    _proto.getInterval = function() {
                        return toMs("day")
                    };
                    _proto._calculateStartViewDate = function(options) {
                        return (0, _timeline_month.calculateStartViewDate)(options.currentDate, options.startDayHour, options.startDate, options.intervalCount)
                    };
                    _proto.getCellCount = function(options) {
                        const {
                            intervalCount: intervalCount
                        } = options;
                        const currentDate = new Date(options.currentDate);
                        let cellCount = 0;
                        for (let i = 1; i <= intervalCount; i++) {
                            cellCount += new Date(currentDate.getFullYear(), currentDate.getMonth() + i, 0).getDate()
                        }
                        return cellCount
                    };
                    _proto.setHiddenInterval = function() {
                        this.hiddenInterval = 0
                    };
                    _proto.getCellEndDate = function(cellStartDate, options) {
                        const {
                            startDayHour: startDayHour,
                            endDayHour: endDayHour
                        } = options;
                        const durationMs = (endDayHour - startDayHour) * toMs("hour");
                        return _m_utils_time_zone.default.addOffsetsWithoutDST(cellStartDate, durationMs)
                    };
                    return ViewDataGeneratorTimelineMonth
                }(_m_view_data_generator.ViewDataGenerator);
                exports.ViewDataGeneratorTimelineMonth = ViewDataGeneratorTimelineMonth
            },
        98097:
            /*!**********************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/view_model/m_view_data_generator_week.js ***!
              \**********************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.ViewDataGeneratorWeek = void 0;
                var _week = __webpack_require__( /*! ../../../../renovation/ui/scheduler/view_model/to_test/views/utils/week */ 34279);
                var _m_view_data_generator = __webpack_require__( /*! ./m_view_data_generator */ 31407);

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let ViewDataGeneratorWeek = function(_ViewDataGenerator) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(ViewDataGeneratorWeek, _ViewDataGenerator);

                    function ViewDataGeneratorWeek() {
                        var _this;
                        _this = _ViewDataGenerator.apply(this, arguments) || this;
                        _this.daysInInterval = 7;
                        return _this
                    }
                    var _proto = ViewDataGeneratorWeek.prototype;
                    _proto._getIntervalDuration = function(intervalCount) {
                        return (0, _week.getIntervalDuration)(intervalCount)
                    };
                    _proto._calculateStartViewDate = function(options) {
                        return (0, _week.calculateStartViewDate)(options.currentDate, options.startDayHour, options.startDate, this._getIntervalDuration(options.intervalCount), this.getFirstDayOfWeek(options.firstDayOfWeek))
                    };
                    return ViewDataGeneratorWeek
                }(_m_view_data_generator.ViewDataGenerator);
                exports.ViewDataGeneratorWeek = ViewDataGeneratorWeek
            },
        4277:
            /*!***************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/view_model/m_view_data_generator_work_week.js ***!
              \***************************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.ViewDataGeneratorWorkWeek = void 0;
                var _work_week = __webpack_require__( /*! ../../../../renovation/ui/scheduler/view_model/to_test/views/utils/work_week */ 83866);
                var _m_view_data_generator_week = __webpack_require__( /*! ./m_view_data_generator_week */ 98097);

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let ViewDataGeneratorWorkWeek = function(_ViewDataGeneratorWee) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(ViewDataGeneratorWorkWeek, _ViewDataGeneratorWee);

                    function ViewDataGeneratorWorkWeek() {
                        var _this;
                        _this = _ViewDataGeneratorWee.apply(this, arguments) || this;
                        _this.daysInInterval = 5;
                        _this.isWorkView = true;
                        return _this
                    }
                    var _proto = ViewDataGeneratorWorkWeek.prototype;
                    _proto.isSkippedDate = function(date) {
                        return (0, _work_week.isDataOnWeekend)(date)
                    };
                    _proto._calculateStartViewDate = function(options) {
                        return (0, _work_week.calculateStartViewDate)(options.currentDate, options.startDayHour, options.startDate, this._getIntervalDuration(options.intervalCount), this.getFirstDayOfWeek(options.firstDayOfWeek))
                    };
                    _proto.getFirstDayOfWeek = function(firstDayOfWeekOption) {
                        return firstDayOfWeekOption || 0
                    };
                    return ViewDataGeneratorWorkWeek
                }(_m_view_data_generator_week.ViewDataGeneratorWeek);
                exports.ViewDataGeneratorWorkWeek = ViewDataGeneratorWorkWeek
            },
        52974:
            /*!****************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/scheduler/workspaces/view_model/m_view_data_provider.js ***!
              \****************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../core/utils/date */ 91198));
                var _utils = __webpack_require__( /*! ../../../../renovation/ui/scheduler/view_model/group_panel/utils */ 34854);
                var _base = __webpack_require__( /*! ../../../../renovation/ui/scheduler/view_model/to_test/views/utils/base */ 45985);
                var _utils2 = __webpack_require__( /*! ../../../../renovation/ui/scheduler/workspaces/utils */ 97205);
                var _date2 = __webpack_require__( /*! ../../../core/utils/date */ 24321);
                var _m_utils_time_zone = _interopRequireDefault(__webpack_require__( /*! ../../m_utils_time_zone */ 57880));
                var _m_date_header_data_generator = __webpack_require__( /*! ./m_date_header_data_generator */ 11706);
                var _m_grouped_data_map_provider = __webpack_require__( /*! ./m_grouped_data_map_provider */ 69033);
                var _m_time_panel_data_generator = __webpack_require__( /*! ./m_time_panel_data_generator */ 45512);
                var _m_utils = __webpack_require__( /*! ./m_utils */ 29964);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }
                var __rest = (void 0, function(s, e) {
                    var t = {};
                    for (var p in s) {
                        if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) {
                            t[p] = s[p]
                        }
                    }
                    if (null != s && "function" === typeof Object.getOwnPropertySymbols) {
                        var i = 0;
                        for (p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
                            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) {
                                t[p[i]] = s[p[i]]
                            }
                        }
                    }
                    return t
                });
                let ViewDataProvider = function() {
                    function ViewDataProvider(viewType) {
                        this.viewType = viewType;
                        this.viewDataGenerator = (0, _m_utils.getViewDataGeneratorByViewType)(viewType);
                        this.viewData = {};
                        this.completeViewDataMap = [];
                        this.completeDateHeaderMap = [];
                        this.viewDataMap = {};
                        this._groupedDataMapProvider = null
                    }
                    var _proto = ViewDataProvider.prototype;
                    _proto.isSkippedDate = function(date) {
                        return this.viewDataGenerator.isSkippedDate(date)
                    };
                    _proto.update = function(options, isGenerateNewViewData) {
                        this.viewDataGenerator = (0, _m_utils.getViewDataGeneratorByViewType)(options.viewType);
                        const {
                            viewDataGenerator: viewDataGenerator
                        } = this;
                        const dateHeaderDataGenerator = new _m_date_header_data_generator.DateHeaderDataGenerator(viewDataGenerator);
                        const timePanelDataGenerator = new _m_time_panel_data_generator.TimePanelDataGenerator(viewDataGenerator);
                        const renderOptions = this._transformRenderOptions(options);
                        renderOptions.interval = this.viewDataGenerator.getInterval(renderOptions.hoursInterval);
                        this._options = renderOptions;
                        if (isGenerateNewViewData) {
                            this.completeViewDataMap = viewDataGenerator.getCompleteViewDataMap(renderOptions);
                            this.completeDateHeaderMap = dateHeaderDataGenerator.getCompleteDateHeaderMap(renderOptions, this.completeViewDataMap);
                            if (renderOptions.isGenerateTimePanelData) {
                                this.completeTimePanelMap = timePanelDataGenerator.getCompleteTimePanelMap(renderOptions, this.completeViewDataMap)
                            }
                        }
                        this.viewDataMap = viewDataGenerator.generateViewDataMap(this.completeViewDataMap, renderOptions);
                        this.updateViewData(renderOptions);
                        this._groupedDataMapProvider = new _m_grouped_data_map_provider.GroupedDataMapProvider(this.viewDataGenerator, this.viewDataMap, this.completeViewDataMap, {
                            isVerticalGrouping: renderOptions.isVerticalGrouping,
                            viewType: renderOptions.viewType,
                            viewOffset: options.viewOffset
                        });
                        this.dateHeaderData = dateHeaderDataGenerator.generateDateHeaderData(this.completeDateHeaderMap, this.completeViewDataMap, renderOptions);
                        if (renderOptions.isGenerateTimePanelData) {
                            this.timePanelData = timePanelDataGenerator.generateTimePanelData(this.completeTimePanelMap, renderOptions)
                        }
                    };
                    _proto.createGroupedDataMapProvider = function() {
                        this._groupedDataMapProvider = new _m_grouped_data_map_provider.GroupedDataMapProvider(this.viewDataGenerator, this.viewDataMap, this.completeViewDataMap, {
                            isVerticalGrouping: this._options.isVerticalGrouping,
                            viewType: this._options.viewType
                        })
                    };
                    _proto.updateViewData = function(options) {
                        const renderOptions = this._transformRenderOptions(options);
                        this.viewDataMapWithSelection = this.viewDataGenerator.markSelectedAndFocusedCells(this.viewDataMap, renderOptions);
                        this.viewData = this.viewDataGenerator.getViewDataFromMap(this.completeViewDataMap, this.viewDataMapWithSelection, renderOptions)
                    };
                    _proto._transformRenderOptions = function(renderOptions) {
                        const {
                            groups: groups,
                            groupOrientation: groupOrientation,
                            groupByDate: groupByDate,
                            isAllDayPanelVisible: isAllDayPanelVisible,
                            viewOffset: viewOffset
                        } = renderOptions, restOptions = __rest(renderOptions, ["groups", "groupOrientation", "groupByDate", "isAllDayPanelVisible", "viewOffset"]);
                        return _extends(_extends({}, restOptions), {
                            startViewDate: this.viewDataGenerator._calculateStartViewDate(renderOptions),
                            isVerticalGrouping: (0, _utils2.isVerticalGroupingApplied)(groups, groupOrientation),
                            isHorizontalGrouping: (0, _utils2.isHorizontalGroupingApplied)(groups, groupOrientation),
                            isGroupedByDate: (0, _utils2.isGroupingByDate)(groups, groupOrientation, groupByDate),
                            isGroupedAllDayPanel: (0, _base.calculateIsGroupedAllDayPanel)(groups, groupOrientation, isAllDayPanelVisible),
                            groups: groups,
                            groupOrientation: groupOrientation,
                            isAllDayPanelVisible: isAllDayPanelVisible,
                            viewOffset: viewOffset
                        })
                    };
                    _proto.getGroupPanelData = function(options) {
                        const renderOptions = this._transformRenderOptions(options);
                        if (renderOptions.groups.length > 0) {
                            const cellCount = this.getCellCount(renderOptions);
                            return (0, _utils.getGroupPanelData)(renderOptions.groups, cellCount, renderOptions.isGroupedByDate, renderOptions.isGroupedByDate ? 1 : cellCount)
                        }
                        return
                    };
                    _proto.getGroupStartDate = function(groupIndex) {
                        return this._groupedDataMapProvider.getGroupStartDate(groupIndex)
                    };
                    _proto.getGroupEndDate = function(groupIndex) {
                        return this._groupedDataMapProvider.getGroupEndDate(groupIndex)
                    };
                    _proto.findGroupCellStartDate = function(groupIndex, startDate, endDate) {
                        let isFindByDate = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : false;
                        return this._groupedDataMapProvider.findGroupCellStartDate(groupIndex, startDate, endDate, isFindByDate)
                    };
                    _proto.findAllDayGroupCellStartDate = function(groupIndex) {
                        return this._groupedDataMapProvider.findAllDayGroupCellStartDate(groupIndex)
                    };
                    _proto.findCellPositionInMap = function(cellInfo) {
                        let isAppointmentRender = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false;
                        return this._groupedDataMapProvider.findCellPositionInMap(cellInfo, isAppointmentRender)
                    };
                    _proto.hasAllDayPanel = function() {
                        const {
                            viewData: viewData
                        } = this.viewDataMap;
                        const {
                            allDayPanel: allDayPanel
                        } = viewData.groupedData[0];
                        return !viewData.isGroupedAllDayPanel && (null === allDayPanel || void 0 === allDayPanel ? void 0 : allDayPanel.length) > 0
                    };
                    _proto.getCellsGroup = function(groupIndex) {
                        return this._groupedDataMapProvider.getCellsGroup(groupIndex)
                    };
                    _proto.getCompletedGroupsInfo = function() {
                        return this._groupedDataMapProvider.getCompletedGroupsInfo()
                    };
                    _proto.getGroupIndices = function() {
                        return this._groupedDataMapProvider.getGroupIndices()
                    };
                    _proto.getLastGroupCellPosition = function(groupIndex) {
                        return this._groupedDataMapProvider.getLastGroupCellPosition(groupIndex)
                    };
                    _proto.getRowCountInGroup = function(groupIndex) {
                        return this._groupedDataMapProvider.getRowCountInGroup(groupIndex)
                    };
                    _proto.getCellData = function(rowIndex, columnIndex, isAllDay, rtlEnabled) {
                        const row = isAllDay && !this._options.isVerticalGrouping ? this.viewDataMap.allDayPanelMap : this.viewDataMap.dateTableMap[rowIndex];
                        const actualColumnIndex = !rtlEnabled ? columnIndex : row.length - 1 - columnIndex;
                        const {
                            cellData: cellData
                        } = row[actualColumnIndex];
                        return cellData
                    };
                    _proto.getCellsByGroupIndexAndAllDay = function(groupIndex, allDay) {
                        const rowsPerGroup = this._getRowCountWithAllDayRows();
                        const isShowAllDayPanel = this._options.isAllDayPanelVisible;
                        const firstRowInGroup = this._options.isVerticalGrouping ? groupIndex * rowsPerGroup : 0;
                        const lastRowInGroup = this._options.isVerticalGrouping ? (groupIndex + 1) * rowsPerGroup - 1 : rowsPerGroup;
                        const correctedFirstRow = isShowAllDayPanel && !allDay ? firstRowInGroup + 1 : firstRowInGroup;
                        const correctedLastRow = allDay ? correctedFirstRow : lastRowInGroup;
                        return this.completeViewDataMap.slice(correctedFirstRow, correctedLastRow + 1).map(row => row.filter(_ref => {
                            let {
                                groupIndex: currentGroupIndex
                            } = _ref;
                            return groupIndex === currentGroupIndex
                        }))
                    };
                    _proto.getCellCountWithGroup = function(groupIndex) {
                        let rowIndex = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;
                        const {
                            dateTableGroupedMap: dateTableGroupedMap
                        } = this.groupedDataMap;
                        return dateTableGroupedMap.filter((_, index) => index <= groupIndex).reduce((previous, row) => previous + row[rowIndex].length, 0)
                    };
                    _proto.hasGroupAllDayPanel = function(groupIndex) {
                        var _a, _b;
                        if (this._options.isVerticalGrouping) {
                            return !!(null === (_a = this.groupedDataMap.dateTableGroupedMap[groupIndex]) || void 0 === _a ? void 0 : _a[0][0].cellData.allDay)
                        }
                        return (null === (_b = this.groupedDataMap.allDayPanelGroupedMap[groupIndex]) || void 0 === _b ? void 0 : _b.length) > 0
                    };
                    _proto.isGroupIntersectDateInterval = function(groupIndex, startDate, endDate) {
                        const groupStartDate = this.getGroupStartDate(groupIndex);
                        const groupEndDate = this.getGroupEndDate(groupIndex);
                        return startDate < groupEndDate && endDate > groupStartDate
                    };
                    _proto.findGlobalCellPosition = function(date) {
                        let groupIndex = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;
                        let allDay = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;
                        const {
                            completeViewDataMap: completeViewDataMap
                        } = this;
                        const showAllDayPanel = this._options.isAllDayPanelVisible;
                        for (let rowIndex = 0; rowIndex < completeViewDataMap.length; rowIndex += 1) {
                            const currentRow = completeViewDataMap[rowIndex];
                            for (let columnIndex = 0; columnIndex < currentRow.length; columnIndex += 1) {
                                const cellData = currentRow[columnIndex];
                                const {
                                    startDate: currentStartDate,
                                    endDate: currentEndDate,
                                    groupIndex: currentGroupIndex,
                                    allDay: currentAllDay
                                } = cellData;
                                if (groupIndex === currentGroupIndex && allDay === !!currentAllDay && this._compareDatesAndAllDay(date, currentStartDate, currentEndDate, allDay)) {
                                    return {
                                        position: {
                                            columnIndex: columnIndex,
                                            rowIndex: showAllDayPanel && !this._options.isVerticalGrouping ? rowIndex - 1 : rowIndex
                                        },
                                        cellData: cellData
                                    }
                                }
                            }
                        }
                        return
                    };
                    _proto._compareDatesAndAllDay = function(date, cellStartDate, cellEndDate, allDay) {
                        return allDay ? _date.default.sameDate(date, cellStartDate) : date >= cellStartDate && date < cellEndDate
                    };
                    _proto.getSkippedDaysCount = function(groupIndex, startDate, endDate, daysCount) {
                        const {
                            dateTableGroupedMap: dateTableGroupedMap
                        } = this._groupedDataMapProvider.groupedDataMap;
                        const groupedData = dateTableGroupedMap[groupIndex];
                        let includedDays = 0;
                        for (let rowIndex = 0; rowIndex < groupedData.length; rowIndex += 1) {
                            for (let columnIndex = 0; columnIndex < groupedData[rowIndex].length; columnIndex += 1) {
                                const cell = groupedData[rowIndex][columnIndex].cellData;
                                if (startDate.getTime() < cell.endDate.getTime() && endDate.getTime() > cell.startDate.getTime()) {
                                    includedDays += 1
                                }
                            }
                        }
                        const lastCell = groupedData[groupedData.length - 1][groupedData[0].length - 1].cellData;
                        const lastCellStart = _date.default.trimTime(lastCell.startDate);
                        const daysAfterView = Math.floor((endDate.getTime() - lastCellStart.getTime()) / _date.default.dateToMilliseconds("day"));
                        const deltaDays = daysAfterView > 0 ? daysAfterView : 0;
                        return daysCount - includedDays - deltaDays
                    };
                    _proto.getColumnsCount = function() {
                        const {
                            dateTableMap: dateTableMap
                        } = this.viewDataMap;
                        return dateTableMap ? dateTableMap[0].length : 0
                    };
                    _proto.getViewEdgeIndices = function(isAllDayPanel) {
                        if (isAllDayPanel) {
                            return {
                                firstColumnIndex: 0,
                                lastColumnIndex: this.viewDataMap.allDayPanelMap.length - 1,
                                firstRowIndex: 0,
                                lastRowIndex: 0
                            }
                        }
                        return {
                            firstColumnIndex: 0,
                            lastColumnIndex: this.viewDataMap.dateTableMap[0].length - 1,
                            firstRowIndex: 0,
                            lastRowIndex: this.viewDataMap.dateTableMap.length - 1
                        }
                    };
                    _proto.getGroupEdgeIndices = function(groupIndex, isAllDay) {
                        const groupedDataMap = this.groupedDataMap.dateTableGroupedMap[groupIndex];
                        const cellsCount = groupedDataMap[0].length;
                        const rowsCount = groupedDataMap.length;
                        const firstColumnIndex = groupedDataMap[0][0].position.columnIndex;
                        const lastColumnIndex = groupedDataMap[0][cellsCount - 1].position.columnIndex;
                        if (isAllDay) {
                            return {
                                firstColumnIndex: firstColumnIndex,
                                lastColumnIndex: lastColumnIndex,
                                firstRowIndex: 0,
                                lastRowIndex: 0
                            }
                        }
                        return {
                            firstColumnIndex: firstColumnIndex,
                            lastColumnIndex: lastColumnIndex,
                            firstRowIndex: groupedDataMap[0][0].position.rowIndex,
                            lastRowIndex: groupedDataMap[rowsCount - 1][0].position.rowIndex
                        }
                    };
                    _proto.isSameCell = function(firstCellData, secondCellData) {
                        const {
                            startDate: firstStartDate,
                            groupIndex: firstGroupIndex,
                            allDay: firstAllDay,
                            index: firstIndex
                        } = firstCellData;
                        const {
                            startDate: secondStartDate,
                            groupIndex: secondGroupIndex,
                            allDay: secondAllDay,
                            index: secondIndex
                        } = secondCellData;
                        return firstStartDate.getTime() === secondStartDate.getTime() && firstGroupIndex === secondGroupIndex && firstAllDay === secondAllDay && firstIndex === secondIndex
                    };
                    _proto.getLastViewDate = function() {
                        const {
                            completeViewDataMap: completeViewDataMap
                        } = this;
                        const rowsCount = completeViewDataMap.length - 1;
                        return completeViewDataMap[rowsCount][completeViewDataMap[rowsCount].length - 1].endDate
                    };
                    _proto.getStartViewDate = function() {
                        return this._options.startViewDate
                    };
                    _proto.getIntervalDuration = function(intervalCount) {
                        return this.viewDataGenerator._getIntervalDuration(intervalCount)
                    };
                    _proto.getLastCellEndDate = function() {
                        const lastEndDate = new Date(this.getLastViewDate().getTime() - _date.default.dateToMilliseconds("minute"));
                        return _date2.dateUtilsTs.addOffsets(lastEndDate, [-this._options.viewOffset])
                    };
                    _proto.getLastViewDateByEndDayHour = function(endDayHour) {
                        const lastCellEndDate = this.getLastCellEndDate();
                        const endTime = _date.default.dateTimeFromDecimal(endDayHour);
                        const endDateOfLastViewCell = new Date(lastCellEndDate.setHours(endTime.hours, endTime.minutes));
                        return this._adjustEndDateByDaylightDiff(lastCellEndDate, endDateOfLastViewCell)
                    };
                    _proto._adjustEndDateByDaylightDiff = function(startDate, endDate) {
                        const daylightDiff = _m_utils_time_zone.default.getDaylightOffsetInMs(startDate, endDate);
                        const endDateOfLastViewCell = new Date(endDate.getTime() - daylightDiff);
                        return new Date(endDateOfLastViewCell.getTime() - _date.default.dateToMilliseconds("minute"))
                    };
                    _proto.getCellCountInDay = function(startDayHour, endDayHour, hoursInterval) {
                        return this.viewDataGenerator.getCellCountInDay(startDayHour, endDayHour, hoursInterval)
                    };
                    _proto.getCellCount = function(options) {
                        return this.viewDataGenerator.getCellCount(options)
                    };
                    _proto.getRowCount = function(options) {
                        return this.viewDataGenerator.getRowCount(options)
                    };
                    _proto.getVisibleDayDuration = function(startDayHour, endDayHour, hoursInterval) {
                        return this.viewDataGenerator.getVisibleDayDuration(startDayHour, endDayHour, hoursInterval)
                    };
                    _proto._getRowCountWithAllDayRows = function() {
                        const allDayRowCount = this._options.isAllDayPanelVisible ? 1 : 0;
                        return this.getRowCount(this._options) + allDayRowCount
                    };
                    _proto.getFirstDayOfWeek = function(firstDayOfWeekOption) {
                        return this.viewDataGenerator.getFirstDayOfWeek(firstDayOfWeekOption)
                    };
                    _proto.setViewOptions = function(options) {
                        this._options = this._transformRenderOptions(options)
                    };
                    _proto.getViewOptions = function() {
                        return this._options
                    };
                    _proto.getViewPortGroupCount = function() {
                        const {
                            dateTableGroupedMap: dateTableGroupedMap
                        } = this.groupedDataMap;
                        return (null === dateTableGroupedMap || void 0 === dateTableGroupedMap ? void 0 : dateTableGroupedMap.length) || 0
                    };
                    _proto.getCellsBetween = function(first, last) {
                        var _a, _b;
                        const [firstCell, lastCell] = this.normalizeCellsOrder(first, last);
                        const {
                            index: firstIdx
                        } = firstCell;
                        const {
                            index: lastIdx
                        } = lastCell;
                        const cellMatrix = this.getCellsByGroupIndexAndAllDay(null !== (_a = firstCell.groupIndex) && void 0 !== _a ? _a : 0, null !== (_b = lastCell.allDay) && void 0 !== _b ? _b : false);
                        return (0, _base.isHorizontalView)(this.viewType) ? this.getCellsBetweenHorizontalView(cellMatrix, firstIdx, lastIdx) : this.getCellsBetweenVerticalView(cellMatrix, firstIdx, lastIdx)
                    };
                    _proto.getCellsBetweenHorizontalView = function(cellMatrix, firstIdx, lastIdx) {
                        return cellMatrix.reduce((result, row) => result.concat(row.filter(_ref2 => {
                            let {
                                index: index
                            } = _ref2;
                            return firstIdx <= index && index <= lastIdx
                        })), [])
                    };
                    _proto.getCellsBetweenVerticalView = function(cellMatrix, firstIdx, lastIdx) {
                        var _a, _b;
                        const result = [];
                        const matrixHeight = cellMatrix.length;
                        const matrixWidth = null !== (_b = null === (_a = cellMatrix[0]) || void 0 === _a ? void 0 : _a.length) && void 0 !== _b ? _b : 0;
                        let inSegment = false;
                        for (let columnIdx = 0; columnIdx < matrixWidth; columnIdx += 1) {
                            for (let rowIdx = 0; rowIdx < matrixHeight; rowIdx += 1) {
                                const cell = cellMatrix[rowIdx][columnIdx];
                                const {
                                    index: cellIdx
                                } = cell;
                                if (cellIdx === firstIdx) {
                                    inSegment = true
                                }
                                if (inSegment) {
                                    result.push(cell)
                                }
                                if (cellIdx === lastIdx) {
                                    return result
                                }
                            }
                        }
                        return result
                    };
                    _proto.normalizeCellsOrder = function(firstSelectedCell, lastSelectedCell) {
                        return firstSelectedCell.startDate > lastSelectedCell.startDate ? [lastSelectedCell, firstSelectedCell] : [firstSelectedCell, lastSelectedCell]
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(ViewDataProvider, [{
                        key: "groupedDataMap",
                        get: function() {
                            return this._groupedDataMapProvider.groupedDataMap
                        }
                    }, {
                        key: "hiddenInterval",
                        get: function() {
                            return this.viewDataGenerator.hiddenInterval
                        }
                    }]);
                    return ViewDataProvider
                }();
                exports.default = ViewDataProvider
            },
        18945:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/utils/memoize.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.memoize = void 0;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                const compareByReference = (args, lastArgs) => args.length === lastArgs.length && !Object.keys(args).some(key => args[key] !== lastArgs[key]);
                const compareByValue = (args, lastArgs) => (0, _common.equalByValue)(args, lastArgs, {
                    maxDepth: 4
                });
                const createCacheFunc = (firstArgs, firstResult, originFunc, compareFunc) => {
                    let lastArgs = firstArgs;
                    let lastResult = firstResult;
                    return function() {
                        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
                            args[_key] = arguments[_key]
                        }
                        const argsEquals = compareFunc(args, lastArgs);
                        if (argsEquals) {
                            return lastResult
                        }
                        lastArgs = args;
                        lastResult = originFunc(...lastArgs);
                        return lastResult
                    }
                };
                const MEMOIZE_DEFAULT_OPTIONS = {
                    compareType: "reference"
                };
                exports.memoize = function(func) {
                    let {
                        compareType: compareType
                    } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : MEMOIZE_DEFAULT_OPTIONS;
                    let cachedFunc = null;
                    return function() {
                        for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
                            args[_key2] = arguments[_key2]
                        }
                        if (!cachedFunc) {
                            const firstResult = func(...args);
                            cachedFunc = createCacheFunc(args, firstResult, func, "reference" === compareType ? compareByReference : compareByValue);
                            return firstResult
                        }
                        return cachedFunc(...args)
                    }
                }
            },
        41690:
            /*!*************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/chart_components/m_advanced_chart.js ***!
              \*************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.AdvancedChart = void 0;
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 20576);
                var _extend2 = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _base_axis = __webpack_require__( /*! ../../../viz/axes/base_axis */ 41278);
                var _series_family = __webpack_require__( /*! ../../../viz/core/series_family */ 1939);
                var _utils = __webpack_require__( /*! ../../../viz/core/utils */ 19157);
                var _range_data_calculator = (obj = __webpack_require__( /*! ../../../viz/series/helpers/range_data_calculator */ 63407), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _range = __webpack_require__( /*! ../../../viz/translators/range */ 21177);
                var _utils2 = __webpack_require__( /*! ../../../viz/utils */ 34434);
                var _m_base_chart = __webpack_require__( /*! ./m_base_chart */ 14107);

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const {
                    isArray: isArray
                } = Array;

                function prepareAxis(axisOptions) {
                    if (isArray(axisOptions)) {
                        return 0 === axisOptions.length ? [{}] : axisOptions
                    }
                    return [axisOptions]
                }

                function setAxisVisualRangeByOption(arg, axis, isDirectOption, index) {
                    let options;
                    let visualRange;
                    if (isDirectOption) {
                        visualRange = arg.value;
                        options = {
                            skipEventRising: true
                        };
                        const wrappedVisualRange = wrapVisualRange(arg.fullName, visualRange);
                        if (wrappedVisualRange) {
                            options = {
                                allowPartialUpdate: true
                            };
                            visualRange = wrappedVisualRange
                        }
                    } else {
                        visualRange = ((0, _type.isDefined)(index) ? arg.value[index] : arg.value).visualRange
                    }
                    axis.visualRange(visualRange, options)
                }

                function wrapVisualRange(fullName, value) {
                    const pathElements = fullName.split(".");
                    const destElem = pathElements.at(-1);
                    if ("endValue" === destElem || "startValue" === destElem) {
                        return {
                            [destElem]: value
                        }
                    }
                    return
                }
                const AdvancedChart = _m_base_chart.BaseChart.inherit({
                    _fontFields: ["".concat("commonAxisSettings", ".label.").concat("font"), "".concat("commonAxisSettings", ".title.").concat("font")],
                    _partialOptionChangesMap: {
                        visualRange: "VISUAL_RANGE",
                        _customVisualRange: "VISUAL_RANGE",
                        strips: "REFRESH_AXES",
                        constantLines: "REFRESH_AXES"
                    },
                    _partialOptionChangesPath: {
                        argumentAxis: ["strips", "constantLines", "visualRange", "_customVisualRange"],
                        valueAxis: ["strips", "constantLines", "visualRange", "_customVisualRange"]
                    },
                    _initCore() {
                        this._panesClipRects = {};
                        this.callBase()
                    },
                    _disposeCore() {
                        const disposeObjectsInArray = this._disposeObjectsInArray;
                        const panesClipRects = this._panesClipRects;
                        this.callBase();
                        disposeObjectsInArray.call(panesClipRects, "fixed");
                        disposeObjectsInArray.call(panesClipRects, "base");
                        disposeObjectsInArray.call(panesClipRects, "wide");
                        this._panesClipRects = null;
                        this._labelsAxesGroup.linkOff();
                        this._labelsAxesGroup.dispose();
                        this._labelsAxesGroup = null
                    },
                    _dispose() {
                        const disposeObjectsInArray = this._disposeObjectsInArray;
                        this.callBase();
                        this.panes = null;
                        if (this._legend) {
                            this._legend.dispose();
                            this._legend = null
                        }
                        disposeObjectsInArray.call(this, "panesBackground");
                        disposeObjectsInArray.call(this, "seriesFamilies");
                        this._disposeAxes()
                    },
                    _createPanes() {
                        this._cleanPanesClipRects("fixed");
                        this._cleanPanesClipRects("base");
                        this._cleanPanesClipRects("wide")
                    },
                    _cleanPanesClipRects(clipArrayName) {
                        const clipArray = this._panesClipRects[clipArrayName];
                        (clipArray || []).forEach(clipRect => {
                            null === clipRect || void 0 === clipRect ? void 0 : clipRect.dispose()
                        });
                        this._panesClipRects[clipArrayName] = []
                    },
                    _getElementsClipRectID(paneName) {
                        const clipShape = this._panesClipRects.fixed[this._getPaneIndex(paneName)];
                        return null === clipShape || void 0 === clipShape ? void 0 : clipShape.id
                    },
                    _getPaneIndex(paneName) {
                        const name = paneName || "default";
                        return this.panes.findIndex(pane => pane.name === name)
                    },
                    _updateSize(forceUpdateCanvas) {
                        this.callBase();
                        if (forceUpdateCanvas && (0, _utils2.areCanvasesDifferent)(this.__currentCanvas, this._canvas)) {
                            this.__currentCanvas = (0, _utils2.floorCanvasDimensions)(this._canvas)
                        }(0, _utils.setCanvasValues)(this._canvas)
                    },
                    _reinitAxes() {
                        this.panes = this._createPanes();
                        this._populateAxes();
                        this._axesReinitialized = true
                    },
                    _populateAxes() {
                        const {
                            panes: panes
                        } = this;
                        const rotated = this._isRotated();
                        const argumentAxesOptions = prepareAxis(this.option("argumentAxis") || {})[0];
                        const valueAxisOption = this.option("valueAxis");
                        const valueAxesOptions = prepareAxis(valueAxisOption || {});
                        let argumentAxesPopulatedOptions = [];
                        const valueAxesPopulatedOptions = [];
                        const axisNames = [];
                        let valueAxesCounter = 0;
                        let paneWithNonVirtualAxis;
                        const crosshairMargins = this._getCrosshairMargins();

                        function getNextAxisName() {
                            const name = "defaultAxisName" + String(valueAxesCounter);
                            valueAxesCounter += 1;
                            return name
                        }
                        if (rotated) {
                            paneWithNonVirtualAxis = "right" === argumentAxesOptions.position ? panes[panes.length - 1].name : panes[0].name
                        } else {
                            paneWithNonVirtualAxis = "top" === argumentAxesOptions.position ? panes[0].name : panes[panes.length - 1].name
                        }
                        argumentAxesPopulatedOptions = (0, _utils.map)(panes, pane => {
                            const virtual = pane.name !== paneWithNonVirtualAxis;
                            return this._populateAxesOptions("argumentAxis", argumentAxesOptions, {
                                pane: pane.name,
                                name: null,
                                optionPath: "argumentAxis",
                                crosshairMargin: rotated ? crosshairMargins.x : crosshairMargins.y
                            }, rotated, virtual)
                        });
                        valueAxesOptions.forEach((axisOptions, priority) => {
                            var _a;
                            let axisPanes = [];
                            const {
                                name: name
                            } = axisOptions;
                            if (name && axisNames.includes(name)) {
                                this._incidentOccurred("E2102");
                                return
                            }
                            if (name) {
                                axisNames.push(name)
                            }
                            if (axisOptions.pane) {
                                axisPanes.push(axisOptions.pane)
                            }
                            if (null === (_a = axisOptions.panes) || void 0 === _a ? void 0 : _a.length) {
                                axisPanes = axisPanes.concat(axisOptions.panes.slice(0))
                            }
                            axisPanes = (0, _utils.unique)(axisPanes);
                            if (!axisPanes.length) {
                                axisPanes.push(void 0)
                            }
                            axisPanes.forEach(pane => {
                                const optionPath = isArray(valueAxisOption) ? "valueAxis[".concat(String(priority), "]") : "valueAxis";
                                valueAxesPopulatedOptions.push(this._populateAxesOptions("valueAxis", axisOptions, {
                                    name: name || getNextAxisName(),
                                    pane: pane,
                                    priority: priority,
                                    optionPath: optionPath,
                                    crosshairMargin: rotated ? crosshairMargins.y : crosshairMargins.x
                                }, rotated))
                            })
                        });
                        this._redesignAxes(argumentAxesPopulatedOptions, true, paneWithNonVirtualAxis);
                        this._redesignAxes(valueAxesPopulatedOptions, false)
                    },
                    _redesignAxes(options, isArgumentAxes, paneWithNonVirtualAxis) {
                        const axesBasis = [];
                        let axes = isArgumentAxes ? this._argumentAxes : this._valueAxes;
                        options.forEach(opt => {
                            const curAxes = null === axes || void 0 === axes ? void 0 : axes.filter(a => a.name === opt.name && (!(0, _type.isDefined)(opt.pane) && this.panes.some(p => p.name === a.pane) || a.pane === opt.pane));
                            if (null === curAxes || void 0 === curAxes ? void 0 : curAxes.length) {
                                curAxes.forEach(axis => {
                                    const axisTypes = function(groupsData, axis, isArgumentAxes) {
                                        if (isArgumentAxes) {
                                            return {
                                                argumentAxisType: groupsData.argumentAxisType,
                                                argumentType: groupsData.argumentType
                                            }
                                        }
                                        const {
                                            valueAxisType: valueAxisType,
                                            valueType: valueType
                                        } = groupsData.groups.find(g => g.valueAxis === axis);
                                        return {
                                            valueAxisType: valueAxisType,
                                            valueType: valueType
                                        }
                                    }(this._groupsData, axis, isArgumentAxes);
                                    axis.updateOptions(opt);
                                    if (isArgumentAxes) {
                                        axis.setTypes(axisTypes.argumentAxisType, axisTypes.argumentType, "argumentType")
                                    } else {
                                        axis.setTypes(axisTypes.valueAxisType, axisTypes.valueType, "valueType")
                                    }
                                    axis.validate();
                                    axesBasis.push({
                                        axis: axis
                                    })
                                })
                            } else {
                                axesBasis.push({
                                    options: opt
                                })
                            }
                        });
                        if (axes) {
                            (0, _iterator.reverseEach)(axes, (index, axis) => {
                                if (!axesBasis.some(basis => basis.axis && basis.axis === axis)) {
                                    this._disposeAxis(index, isArgumentAxes)
                                }
                            })
                        } else if (isArgumentAxes) {
                            axes = this._argumentAxes = []
                        } else {
                            axes = this._valueAxes = []
                        }
                        axesBasis.forEach(basis => {
                            let {
                                axis: axis
                            } = basis;
                            if (basis.axis && isArgumentAxes) {
                                basis.axis.isVirtual = basis.axis.pane !== paneWithNonVirtualAxis
                            } else if (basis.options) {
                                axis = this._createAxis(isArgumentAxes, basis.options, isArgumentAxes ? basis.options.pane !== paneWithNonVirtualAxis : void 0);
                                axes.push(axis)
                            }
                            axis.applyVisualRangeSetter(this._getVisualRangeSetter())
                        })
                    },
                    _disposeAxis(index, isArgumentAxis) {
                        const axes = isArgumentAxis ? this._argumentAxes : this._valueAxes;
                        const axis = axes[index];
                        if (!axis) {
                            return
                        }
                        axis.dispose();
                        axes.splice(index, 1)
                    },
                    _disposeAxes() {
                        const disposeObjectsInArray = this._disposeObjectsInArray;
                        disposeObjectsInArray.call(this, "_argumentAxes");
                        disposeObjectsInArray.call(this, "_valueAxes")
                    },
                    _appendAdditionalSeriesGroups() {
                        this._crosshairCursorGroup.linkAppend();
                        if (this._scrollBar) {
                            this._scrollBarGroup.linkAppend()
                        }
                    },
                    _getLegendTargets() {
                        return (this.series || []).map(s => {
                            const item = this._getLegendOptions(s);
                            item.legendData.series = s;
                            if (!s.getOptions().showInLegend) {
                                item.legendData.visible = false
                            }
                            return item
                        })
                    },
                    _legendItemTextField: "name",
                    _seriesPopulatedHandlerCore() {
                        this._processSeriesFamilies();
                        this._processValueAxisFormat()
                    },
                    _renderTrackers() {
                        for (let i = 0; i < this.series.length; i += 1) {
                            this.series[i].drawTrackers()
                        }
                    },
                    _specialProcessSeries() {
                        this._processSeriesFamilies()
                    },
                    _processSeriesFamilies() {
                        var _a;
                        const types = [];
                        const families = [];
                        let paneSeries;
                        const themeManager = this._themeManager;
                        const negativesAsZeroes = themeManager.getOptions("negativesAsZeroes");
                        const negativesAsZeros = themeManager.getOptions("negativesAsZeros");
                        const familyOptions = {
                            minBubbleSize: themeManager.getOptions("minBubbleSize"),
                            maxBubbleSize: themeManager.getOptions("maxBubbleSize"),
                            barGroupPadding: themeManager.getOptions("barGroupPadding"),
                            barGroupWidth: themeManager.getOptions("barGroupWidth"),
                            negativesAsZeroes: (0, _type.isDefined)(negativesAsZeroes) ? negativesAsZeroes : negativesAsZeros
                        };
                        if (null === (_a = this.seriesFamilies) || void 0 === _a ? void 0 : _a.length) {
                            this.seriesFamilies.forEach(family => {
                                family.updateOptions(familyOptions);
                                family.adjustSeriesValues()
                            });
                            return
                        }
                        this.series.forEach(item => {
                            if (!types.includes(item.type)) {
                                types.push(item.type)
                            }
                        });
                        this._getLayoutTargets().forEach(pane => {
                            paneSeries = this._getSeriesForPane(pane.name);
                            types.forEach(type => {
                                const family = new _series_family.SeriesFamily({
                                    type: type,
                                    pane: pane.name,
                                    minBubbleSize: familyOptions.minBubbleSize,
                                    maxBubbleSize: familyOptions.maxBubbleSize,
                                    barGroupPadding: familyOptions.barGroupPadding,
                                    barGroupWidth: familyOptions.barGroupWidth,
                                    negativesAsZeroes: familyOptions.negativesAsZeroes,
                                    rotated: this._isRotated()
                                });
                                family.add(paneSeries);
                                family.adjustSeriesValues();
                                families.push(family)
                            })
                        });
                        this.seriesFamilies = families
                    },
                    _updateSeriesDimensions() {
                        const seriesFamilies = this.seriesFamilies || [];
                        for (let i = 0; i < seriesFamilies.length; i += 1) {
                            const family = seriesFamilies[i];
                            family.updateSeriesValues();
                            family.adjustSeriesDimensions()
                        }
                    },
                    _getLegendCallBack(series) {
                        var _a;
                        return null === (_a = this._legend) || void 0 === _a ? void 0 : _a.getActionCallback(series)
                    },
                    _appendAxesGroups() {
                        this._stripsGroup.linkAppend();
                        this._gridGroup.linkAppend();
                        this._axesGroup.linkAppend();
                        this._labelsAxesGroup.linkAppend();
                        this._constantLinesGroup.linkAppend();
                        this._stripLabelAxesGroup.linkAppend();
                        this._scaleBreaksGroup.linkAppend()
                    },
                    _populateMarginOptions() {
                        const bubbleSize = function(size, panesCount, maxSize, rotated) {
                            const width = rotated ? size.width / panesCount : size.width;
                            const height = rotated ? size.height : size.height / panesCount;
                            return Math.min(width, height) * maxSize
                        }(this.getSize(), this.panes.length, this._themeManager.getOptions("maxBubbleSize"), this._isRotated());
                        let argumentMarginOptions = {};
                        this._valueAxes.forEach(valueAxis => {
                            const groupSeries = this.series.filter(series => series.getValueAxis() === valueAxis);
                            let marginOptions = {};
                            groupSeries.forEach(series => {
                                if (series.isVisible()) {
                                    const seriesMarginOptions = function(marginOptions, bubbleSize) {
                                        if (marginOptions.processBubbleSize) {
                                            marginOptions.size = bubbleSize
                                        }
                                        return marginOptions
                                    }(series.getMarginOptions(), bubbleSize);
                                    marginOptions = (0, _utils.mergeMarginOptions)(marginOptions, seriesMarginOptions);
                                    argumentMarginOptions = (0, _utils.mergeMarginOptions)(argumentMarginOptions, seriesMarginOptions)
                                }
                            });
                            valueAxis.setMarginOptions(marginOptions)
                        });
                        this._argumentAxes.forEach(a => a.setMarginOptions(argumentMarginOptions))
                    },
                    _populateBusinessRange(updatedAxis, keepRange) {
                        const rotated = this._isRotated();
                        const series = this._getVisibleSeries();
                        const argRanges = {};
                        const commonArgRange = new _range.Range({
                            rotated: !!rotated
                        });
                        const getPaneName = axis => axis.pane || "default";
                        this.panes.forEach(p => {
                            argRanges[p.name] = new _range.Range({
                                rotated: !!rotated
                            })
                        });
                        this._valueAxes.forEach(valueAxis => {
                            const groupRange = new _range.Range({
                                rotated: !!rotated,
                                pane: valueAxis.pane,
                                axis: valueAxis.name
                            });
                            const groupSeries = series.filter(series => series.getValueAxis() === valueAxis);
                            groupSeries.forEach(series => {
                                const seriesRange = series.getRangeData();
                                groupRange.addRange(seriesRange.val);
                                argRanges[getPaneName(valueAxis)].addRange(seriesRange.arg)
                            });
                            if (!updatedAxis || updatedAxis && groupSeries.length && valueAxis === updatedAxis) {
                                valueAxis.setGroupSeries(groupSeries);
                                valueAxis.setBusinessRange(groupRange, this._axesReinitialized || keepRange, this._argumentAxes[0]._lastVisualRangeUpdateMode)
                            }
                        });
                        if (!updatedAxis || updatedAxis && series.length) {
                            Object.keys(argRanges).forEach(p => commonArgRange.addRange(argRanges[p]));
                            const commonInterval = commonArgRange.interval;
                            this._argumentAxes.forEach(a => {
                                var _a;
                                const currentInterval = null !== (_a = argRanges[getPaneName(a)].interval) && void 0 !== _a ? _a : commonInterval;
                                a.setBusinessRange(new _range.Range(_extends(_extends({}, commonArgRange), {
                                    interval: currentInterval
                                })), this._axesReinitialized, void 0, this._groupsData.categories)
                            })
                        }
                        this._populateMarginOptions()
                    },
                    getArgumentAxis() {
                        return (this._argumentAxes || []).find(a => !a.isVirtual)
                    },
                    getValueAxis(name) {
                        return (this._valueAxes || []).find((0, _type.isDefined)(name) ? a => a.name === name : a => a.pane === this.defaultPane)
                    },
                    _getGroupsData() {
                        const groups = [];
                        this._valueAxes.forEach(axis => {
                            groups.push({
                                series: this.series.filter(series => series.getValueAxis() === axis),
                                valueAxis: axis,
                                valueOptions: axis.getOptions()
                            })
                        });
                        return {
                            groups: groups,
                            argumentAxes: this._argumentAxes,
                            argumentOptions: this._argumentAxes[0].getOptions()
                        }
                    },
                    _groupSeries() {
                        this._correctValueAxes(false);
                        this._groupsData = this._getGroupsData()
                    },
                    _processValueAxisFormat() {
                        const axesWithFullStackedFormat = [];
                        this.series.forEach(series => {
                            const axis = series.getValueAxis();
                            if (series.isFullStackedSeries()) {
                                axis.setPercentLabelFormat();
                                axesWithFullStackedFormat.push(axis)
                            }
                        });
                        this._valueAxes.forEach(axis => {
                            if (!axesWithFullStackedFormat.includes(axis)) {
                                axis.resetAutoLabelFormat()
                            }
                        })
                    },
                    _populateAxesOptions(typeSelector, userOptions, axisOptions, rotated, virtual) {
                        const preparedUserOptions = this._prepareStripsAndConstantLines(typeSelector, userOptions, rotated);
                        const options = (0, _extend2.extend)(true, {}, preparedUserOptions, axisOptions, this._prepareAxisOptions(typeSelector, preparedUserOptions, rotated));
                        if (virtual) {
                            options.visible = false;
                            options.tick.visible = false;
                            options.minorTick.visible = false;
                            options.label.visible = false;
                            options.title = {}
                        }
                        return options
                    },
                    _getValFilter: series => _range_data_calculator.default.getViewPortFilter(series.getValueAxis().visualRange() || {}),
                    _createAxis(isArgumentAxes, options, virtual) {
                        const typeSelector = isArgumentAxes ? "argumentAxis" : "valueAxis";
                        const renderingSettings = (0, _extend2.extend)({
                            renderer: this._renderer,
                            incidentOccurred: this._incidentOccurred,
                            eventTrigger: this._eventTrigger,
                            axisClass: isArgumentAxes ? "arg" : "val",
                            widgetClass: "dxc",
                            stripsGroup: this._stripsGroup,
                            stripLabelAxesGroup: this._stripLabelAxesGroup,
                            constantLinesGroup: this._constantLinesGroup,
                            scaleBreaksGroup: this._scaleBreaksGroup,
                            axesContainerGroup: this._axesGroup,
                            labelsAxesGroup: this._labelsAxesGroup,
                            gridGroup: this._gridGroup,
                            isArgumentAxis: isArgumentAxes,
                            getTemplate: template => this._getTemplate(template)
                        }, this._getAxisRenderingOptions(typeSelector));
                        const axis = new _base_axis.Axis(renderingSettings);
                        axis.updateOptions(options);
                        axis.isVirtual = virtual;
                        return axis
                    },
                    _applyVisualRangeByVirtualAxes: () => false,
                    _applyCustomVisualRangeOption(axis, range) {
                        if (axis.getOptions().optionPath) {
                            this._parseVisualRangeOption("".concat(axis.getOptions().optionPath, ".visualRange"), range)
                        }
                    },
                    _getVisualRangeSetter() {
                        return (axis, _ref) => {
                            let {
                                skipEventRising: skipEventRising,
                                range: range
                            } = _ref;
                            this._applyCustomVisualRangeOption(axis, range);
                            axis.setCustomVisualRange(range);
                            axis.skipEventRising = skipEventRising;
                            if (!this._applyVisualRangeByVirtualAxes(axis, range)) {
                                if (this._applyingChanges) {
                                    this._change_VISUAL_RANGE()
                                } else {
                                    this._requestChange(["VISUAL_RANGE"])
                                }
                            }
                        }
                    },
                    _getTrackerSettings() {
                        return (0, _extend2.extend)(this.callBase(), {
                            argumentAxis: this.getArgumentAxis()
                        })
                    },
                    _prepareStripsAndConstantLines(typeSelector, userOptions, rotated) {
                        userOptions = this._themeManager.getOptions(typeSelector, userOptions, rotated);
                        if (userOptions.strips) {
                            userOptions.strips.forEach((line, i) => {
                                userOptions.strips[i] = (0, _extend2.extend)(true, {}, userOptions.stripStyle, line)
                            })
                        }
                        if (userOptions.constantLines) {
                            userOptions.constantLines.forEach((line, i) => {
                                userOptions.constantLines[i] = (0, _extend2.extend)(true, {}, userOptions.constantLineStyle, line)
                            })
                        }
                        return userOptions
                    },
                    refresh() {
                        this._disposeAxes();
                        this.callBase()
                    },
                    _layoutAxes(drawAxes) {
                        drawAxes();
                        const needSpace = this.checkForMoreSpaceForPanesCanvas();
                        if (needSpace) {
                            const rect = this._rect.slice();
                            const size = this._layout.backward(rect, rect, [needSpace.width, needSpace.height]);
                            needSpace.width = Math.max(0, size[0]);
                            needSpace.height = Math.max(0, size[1]);
                            this._canvas = this._createCanvasFromRect(rect);
                            drawAxes(needSpace)
                        }
                    },
                    checkForMoreSpaceForPanesCanvas() {
                        return this.layoutManager.needMoreSpaceForPanesCanvas(this._getLayoutTargets(), this._isRotated())
                    },
                    _parseVisualRangeOption(fullName, value) {
                        var _a;
                        const name = fullName.split(/[.[]/)[0];
                        let index = fullName.match(/\d+/g);
                        index = (0, _type.isDefined)(index) ? parseInt(index[0], 10) : index;
                        if (fullName.indexOf("visualRange") > 0) {
                            if ("object" !== (0, _type.type)(value)) {
                                value = null !== (_a = wrapVisualRange(fullName, value)) && void 0 !== _a ? _a : value
                            }
                            this._setCustomVisualRange(name, index, value)
                        } else if (("object" === (0, _type.type)(value) || isArray(value)) && name.indexOf("Axis") > 0 && JSON.stringify(value).indexOf("visualRange") > 0) {
                            if ((0, _type.isDefined)(value.visualRange)) {
                                this._setCustomVisualRange(name, index, value.visualRange)
                            } else if (isArray(value)) {
                                value.forEach((a, i) => {
                                    if ((0, _type.isDefined)(a.visualRange)) {
                                        this._setCustomVisualRange(name, i, a.visualRange)
                                    }
                                })
                            }
                        }
                    },
                    _setCustomVisualRange(axesName, index, value) {
                        const options = this._options.silent(axesName);
                        if (!options) {
                            return
                        }
                        if (!(0, _type.isDefined)(index)) {
                            options._customVisualRange = value
                        } else {
                            options[index]._customVisualRange = value
                        }
                        this._axesReinitialized = true
                    },
                    _raiseZoomEndHandlers() {
                        this._valueAxes.forEach(axis => axis.handleZoomEnd())
                    },
                    _setOptionsByReference() {
                        this.callBase();
                        (0, _extend2.extend)(this._optionsByReference, {
                            "valueAxis.visualRange": true
                        })
                    },
                    _notifyOptionChanged(option, value) {
                        this.callBase.apply(this, arguments);
                        if (!this._optionChangedLocker) {
                            this._parseVisualRangeOption(option, value)
                        }
                    },
                    _notifyVisualRange() {
                        this._valueAxes.forEach(axis => {
                            const axisPath = axis.getOptions().optionPath;
                            if (axisPath) {
                                const path = "".concat(axisPath, ".visualRange");
                                const visualRange = (0, _utils.convertVisualRangeObject)(axis.visualRange(), !isArray(this.option(path)));
                                if (!axis.skipEventRising || !(0, _utils.rangesAreEqual)(visualRange, this.option(path))) {
                                    if (!this.option(axisPath) && "valueAxis" !== axisPath) {
                                        this.option(axisPath, {
                                            name: axis.name,
                                            visualRange: visualRange
                                        })
                                    } else {
                                        this.option(path, visualRange)
                                    }
                                } else {
                                    axis.skipEventRising = null
                                }
                            }
                        })
                    },
                    _notify() {
                        this.callBase();
                        this._axesReinitialized = false;
                        if (true !== this.option("disableTwoWayBinding")) {
                            this.skipOptionsRollBack = true;
                            this._notifyVisualRange();
                            this.skipOptionsRollBack = false
                        }
                    },
                    _getAxesForScaling() {
                        return this._valueAxes
                    },
                    _getAxesByOptionPath(arg, isDirectOption, optionName) {
                        const sourceAxes = this._getAxesForScaling();
                        let axes = [];
                        if (isDirectOption) {
                            let axisPath;
                            if (arg.fullName) {
                                axisPath = arg.fullName.slice(0, arg.fullName.indexOf("."))
                            }
                            axes = sourceAxes.filter(a => a.getOptions().optionPath === axisPath)
                        } else if ("object" === (0, _type.type)(arg.value)) {
                            axes = sourceAxes.filter(a => a.getOptions().optionPath === arg.name)
                        } else if (isArray(arg.value)) {
                            arg.value.forEach((v, index) => {
                                const axis = sourceAxes.filter(a => a.getOptions().optionPath === "".concat(arg.name, "[").concat(index, "]"))[0];
                                if ((0, _type.isDefined)(v[optionName]) && (0, _type.isDefined)(axis)) {
                                    axes[index] = axis
                                }
                            })
                        }
                        return axes
                    },
                    _optionChanged(arg) {
                        if (!this._optionChangedLocker) {
                            const optionName = "visualRange";
                            let axes;
                            const isDirectOption = arg.fullName.indexOf(optionName) > 0 ? true : this.getPartialChangeOptionsName(arg).indexOf(optionName) > -1 ? false : void 0;
                            if ((0, _type.isDefined)(isDirectOption)) {
                                axes = this._getAxesByOptionPath(arg, isDirectOption, optionName);
                                if (axes) {
                                    if (axes.length > 1 || isArray(arg.value)) {
                                        axes.forEach((a, index) => setAxisVisualRangeByOption(arg, a, isDirectOption, index))
                                    } else if (1 === axes.length) {
                                        setAxisVisualRangeByOption(arg, axes[0], isDirectOption)
                                    }
                                }
                            }
                        }
                        this.callBase(arg)
                    },
                    _change_VISUAL_RANGE() {
                        this._recreateSizeDependentObjects(false);
                        if (!this._changes.has("FULL_RENDER")) {
                            const resizePanesOnZoom = this.option("resizePanesOnZoom");
                            this._doRender({
                                force: true,
                                drawTitle: false,
                                drawLegend: false,
                                adjustAxes: null !== resizePanesOnZoom && void 0 !== resizePanesOnZoom ? resizePanesOnZoom : this.option("adjustAxesOnZoom") || false,
                                animate: false
                            });
                            this._raiseZoomEndHandlers()
                        }
                    },
                    resetVisualRange() {
                        this._valueAxes.forEach(axis => {
                            axis.resetVisualRange(false);
                            this._applyCustomVisualRangeOption(axis)
                        });
                        this._requestChange(["VISUAL_RANGE"])
                    },
                    _getCrosshairMargins: () => ({
                        x: 0,
                        y: 0
                    }),
                    _legendDataField: "series",
                    _adjustSeriesLabels: _common.noop,
                    _correctValueAxes: _common.noop
                });
                exports.AdvancedChart = AdvancedChart
            },
        14107:
            /*!*********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/chart_components/m_base_chart.js ***!
              \*********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.overlapping = exports.BaseChart = void 0;
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 20576);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../events/core/events_engine */ 55994));
                var _index = __webpack_require__( /*! ../../../events/utils/index */ 39611);
                var _layout_manager = __webpack_require__( /*! ../../../viz/chart_components/layout_manager */ 61189);
                var trackerModule = function(obj, nodeInterop) {
                    if (!nodeInterop && obj && obj.__esModule) {
                        return obj
                    }
                    if (null === obj || "object" !== typeof obj && "function" !== typeof obj) {
                        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 ("default" !== key && 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
                }(__webpack_require__( /*! ../../../viz/chart_components/tracker */ 19957));
                var _chart_theme_manager = __webpack_require__( /*! ../../../viz/components/chart_theme_manager */ 99327);
                var _data_validator = __webpack_require__( /*! ../../../viz/components/data_validator */ 45865);
                var _legend = __webpack_require__( /*! ../../../viz/components/legend */ 16342);
                var _data_source = __webpack_require__( /*! ../../../viz/core/data_source */ 1539);
                var _export = __webpack_require__( /*! ../../../viz/core/export */ 82454);
                var _loading_indicator = __webpack_require__( /*! ../../../viz/core/loading_indicator */ 64758);
                var _title = __webpack_require__( /*! ../../../viz/core/title */ 17384);
                var _tooltip = __webpack_require__( /*! ../../../viz/core/tooltip */ 14371);
                var _utils = __webpack_require__( /*! ../../../viz/core/utils */ 19157);
                var _base_series = __webpack_require__( /*! ../../../viz/series/base_series */ 54932);
                var _m_base_widget = _interopRequireDefault(__webpack_require__( /*! ../core/m_base_widget */ 55845));
                var _rolling_stock = __webpack_require__( /*! ./rolling_stock */ 56136);

                function _getRequireWildcardCache(nodeInterop) {
                    if ("function" !== typeof WeakMap) {
                        return null
                    }
                    var cacheBabelInterop = new WeakMap;
                    var cacheNodeInterop = new WeakMap;
                    return (_getRequireWildcardCache = function(nodeInterop) {
                        return nodeInterop ? cacheNodeInterop : cacheBabelInterop
                    })(nodeInterop)
                }

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const {
                    isArray: isArray
                } = Array;
                const ACTIONS_BY_PRIORITY = ["_reinit", "_updateDataSource", "_dataInit", "_forceRender", "_resize"];

                function checkHeightRollingStock(rollingStocks, stubCanvas) {
                    const canvasSize = stubCanvas.end - stubCanvas.start;
                    let size = 0;
                    rollingStocks.forEach(rollingStock => {
                        size += rollingStock.getBoundingRect().width
                    });
                    while (canvasSize < size) {
                        size -= findAndKillSmallValue(rollingStocks)
                    }
                }

                function findAndKillSmallValue(rollingStocks) {
                    const smallestObject = rollingStocks.reduce((prev, rollingStock, index) => {
                        if (!rollingStock) {
                            return prev
                        }
                        const value = rollingStock.value();
                        return value < prev.value ? {
                            value: value,
                            rollingStock: rollingStock,
                            index: index
                        } : prev
                    }, {
                        rollingStock: void 0,
                        value: 1 / 0,
                        index: void 0
                    });
                    smallestObject.rollingStock.getLabels()[0].draw(false);
                    const {
                        width: width
                    } = smallestObject.rollingStock.getBoundingRect();
                    rollingStocks[smallestObject.index] = null;
                    return width
                }

                function checkStackOverlap(rollingStocks) {
                    let i;
                    let j;
                    let iLength;
                    let jLength;
                    let overlap = false;
                    for (i = 0, iLength = rollingStocks.length - 1; i < iLength; i++) {
                        for (j = i + 1, jLength = rollingStocks.length; j < jLength; j++) {
                            if (i !== j && checkStacksOverlapping(rollingStocks[i], rollingStocks[j], true)) {
                                overlap = true;
                                break
                            }
                        }
                        if (overlap) {
                            break
                        }
                    }
                    return overlap
                }

                function checkStacksOverlapping(firstRolling, secondRolling, inTwoSides) {
                    if (!firstRolling || !secondRolling) {
                        return
                    }
                    const firstRect = firstRolling.getBoundingRect();
                    const secondRect = secondRolling.getBoundingRect();
                    const oppositeOverlapping = inTwoSides ? firstRect.oppositeStart <= secondRect.oppositeStart && firstRect.oppositeEnd > secondRect.oppositeStart || secondRect.oppositeStart <= firstRect.oppositeStart && secondRect.oppositeEnd > firstRect.oppositeStart : true;
                    return firstRect.end > secondRect.start && oppositeOverlapping
                }

                function sortRollingStocksByValue(rollingStocks) {
                    const positiveRollingStocks = [];
                    const negativeRollingStocks = [];
                    rollingStocks.forEach(stock => {
                        if (stock.value() > 0) {
                            positiveRollingStocks.push(stock)
                        } else {
                            negativeRollingStocks.unshift(stock)
                        }
                    });
                    return positiveRollingStocks.concat(negativeRollingStocks)
                }

                function prepareOverlapStacks(rollingStocks) {
                    let root;
                    for (let i = 0; i < rollingStocks.length - 1; i += 1) {
                        const currentRollingStock = root || rollingStocks[i];
                        if (checkStacksOverlapping(currentRollingStock, rollingStocks[i + 1])) {
                            currentRollingStock.toChain(rollingStocks[i + 1]);
                            rollingStocks[i + 1] = null;
                            root = currentRollingStock
                        } else {
                            root = rollingStocks[i + 1] || currentRollingStock
                        }
                    }
                }

                function rollingStocksIsOut(rollingStock, canvas) {
                    return rollingStock.getBoundingRect().end > canvas.end
                }

                function moveRollingStock(rollingStocks, canvas) {
                    for (let i = 0; i < rollingStocks.length; i += 1) {
                        const currentRollingStock = rollingStocks[i];
                        let shouldSetCanvas = true;
                        if (null !== currentRollingStock && rollingStocksIsOut(currentRollingStock, canvas)) {
                            const currentBBox = currentRollingStock.getBoundingRect();
                            for (let j = i + 1; j < rollingStocks.length; j += 1) {
                                const nextRollingStock = rollingStocks[j];
                                if (nextRollingStock) {
                                    const nextBBox = nextRollingStock.getBoundingRect();
                                    if (nextBBox.end > currentBBox.start - (currentBBox.end - canvas.end)) {
                                        nextRollingStock.toChain(currentRollingStock);
                                        shouldSetCanvas = false;
                                        break
                                    }
                                }
                            }
                        }
                        if (shouldSetCanvas) {
                            null === currentRollingStock || void 0 === currentRollingStock ? void 0 : currentRollingStock.setRollingStockInCanvas(canvas)
                        }
                    }
                }
                const overlapping = {
                    resolveLabelOverlappingInOneDirection: function(points, canvas, isRotated, isInverted, shiftFunction) {
                        let customSorting = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : () => 0;
                        const rollingStocks = [];
                        const stubCanvas = {
                            start: isRotated ? canvas.left : canvas.top,
                            end: isRotated ? canvas.width - canvas.right : canvas.height - canvas.bottom
                        };
                        let hasStackedSeries = false;
                        let sortRollingStocks;
                        points.forEach(p => {
                            if (!p) {
                                return
                            }
                            hasStackedSeries = hasStackedSeries || p.series.isStackedSeries() || p.series.isFullStackedSeries();
                            p.getLabels().forEach(l => {
                                if (l.isVisible()) {
                                    rollingStocks.push(new _rolling_stock.RollingStock(l, isRotated, shiftFunction))
                                }
                            })
                        });
                        if (hasStackedSeries) {
                            if (Number(!isRotated) ^ Number(isInverted)) {
                                rollingStocks.reverse()
                            }
                            sortRollingStocks = isInverted ? rollingStocks : sortRollingStocksByValue(rollingStocks)
                        } else {
                            const rollingStocksTmp = rollingStocks.slice();
                            sortRollingStocks = rollingStocks.sort((a, b) => customSorting(a, b) || a.getInitialPosition() - b.getInitialPosition() || rollingStocksTmp.indexOf(a) - rollingStocksTmp.indexOf(b))
                        }
                        if (!checkStackOverlap(sortRollingStocks)) {
                            return false
                        }
                        checkHeightRollingStock(sortRollingStocks, stubCanvas);
                        prepareOverlapStacks(sortRollingStocks);
                        sortRollingStocks.reverse();
                        moveRollingStock(sortRollingStocks, stubCanvas);
                        return true
                    }
                };
                exports.overlapping = overlapping;
                const BaseChart = _m_base_widget.default.inherit({
                    _eventsMap: {
                        onSeriesClick: {
                            name: "seriesClick"
                        },
                        onPointClick: {
                            name: "pointClick"
                        },
                        onArgumentAxisClick: {
                            name: "argumentAxisClick"
                        },
                        onLegendClick: {
                            name: "legendClick"
                        },
                        onSeriesSelectionChanged: {
                            name: "seriesSelectionChanged"
                        },
                        onPointSelectionChanged: {
                            name: "pointSelectionChanged"
                        },
                        onSeriesHoverChanged: {
                            name: "seriesHoverChanged"
                        },
                        onPointHoverChanged: {
                            name: "pointHoverChanged"
                        },
                        onDone: {
                            name: "done",
                            actionSettings: {
                                excludeValidators: ["disabled"]
                            }
                        },
                        onZoomStart: {
                            name: "zoomStart"
                        },
                        onZoomEnd: {
                            name: "zoomEnd"
                        }
                    },
                    _fontFields: ["legend.".concat("font"), "legend.title.".concat("font"), "legend.title.subtitle.".concat("font"), "commonSeriesSettings.label.".concat("font")],
                    _rootClassPrefix: "dxc",
                    _rootClass: "dxc-chart",
                    _initialChanges: ["INIT"],
                    _themeDependentChanges: ["REFRESH_SERIES_REINIT"],
                    _getThemeManagerOptions() {
                        const themeOptions = this.callBase.apply(this, arguments);
                        themeOptions.options = this.option();
                        return themeOptions
                    },
                    _createThemeManager() {
                        const chartOption = this.option();
                        const themeManager = new _chart_theme_manager.ThemeManager(this._getThemeManagerOptions());
                        themeManager.setTheme(chartOption.theme, chartOption.rtlEnabled);
                        return themeManager
                    },
                    _initCore() {
                        this._canvasClipRect = this._renderer.clipRect();
                        this._createHtmlStructure();
                        this._createLegend();
                        this._createTracker();
                        this._needHandleRenderComplete = true;
                        this.layoutManager = new _layout_manager.LayoutManager;
                        this._createScrollBar();
                        _events_engine.default.on(this._$element, "contextmenu", event => {
                            if ((0, _index.isTouchEvent)(event) || (0, _index.isPointerEvent)(event)) {
                                event.preventDefault()
                            }
                        });
                        _events_engine.default.on(this._$element, "MSHoldVisual", event => {
                            event.preventDefault()
                        })
                    },
                    _getLayoutItems: _common.noop,
                    _layoutManagerOptions() {
                        return this._themeManager.getOptions("adaptiveLayout")
                    },
                    _reinit() {
                        (0, _utils.setCanvasValues)(this._canvas);
                        this._reinitAxes();
                        this._requestChange(["DATA_SOURCE", "DATA_INIT", "CORRECT_AXIS", "FULL_RENDER"])
                    },
                    _correctAxes: _common.noop,
                    _createHtmlStructure() {
                        const renderer = this._renderer;
                        const {
                            root: root
                        } = renderer;
                        const createConstantLinesGroup = function() {
                            return renderer.g().attr({
                                class: "dxc-constant-lines-group"
                            }).linkOn(root, "constant-lines")
                        };
                        this._constantLinesGroup = {
                            dispose() {
                                this.under.dispose();
                                this.above.dispose()
                            },
                            linkOff() {
                                this.under.linkOff();
                                this.above.linkOff()
                            },
                            clear() {
                                this.under.linkRemove().clear();
                                this.above.linkRemove().clear()
                            },
                            linkAppend() {
                                this.under.linkAppend();
                                this.above.linkAppend()
                            }
                        };
                        this._labelsAxesGroup = renderer.g().attr({
                            class: "dxc-elements-axes-group"
                        });
                        const appendLabelsAxesGroup = () => {
                            this._labelsAxesGroup.linkOn(root, "elements")
                        };
                        this._backgroundRect = renderer.rect().attr({
                            fill: "gray",
                            opacity: 1e-4
                        }).append(root);
                        this._panesBackgroundGroup = renderer.g().attr({
                            class: "dxc-background"
                        }).append(root);
                        this._stripsGroup = renderer.g().attr({
                            class: "dxc-strips-group"
                        }).linkOn(root, "strips");
                        this._gridGroup = renderer.g().attr({
                            class: "dxc-grids-group"
                        }).linkOn(root, "grids");
                        this._panesBorderGroup = renderer.g().attr({
                            class: "dxc-border"
                        }).linkOn(root, "border");
                        this._axesGroup = renderer.g().attr({
                            class: "dxc-axes-group"
                        }).linkOn(root, "axes");
                        this._executeAppendBeforeSeries(appendLabelsAxesGroup);
                        this._stripLabelAxesGroup = renderer.g().attr({
                            class: "dxc-strips-labels-group"
                        }).linkOn(root, "strips-labels");
                        this._constantLinesGroup.under = createConstantLinesGroup();
                        this._seriesGroup = renderer.g().attr({
                            class: "dxc-series-group"
                        }).linkOn(root, "series");
                        this._executeAppendAfterSeries(appendLabelsAxesGroup);
                        this._constantLinesGroup.above = createConstantLinesGroup();
                        this._scaleBreaksGroup = renderer.g().attr({
                            class: "dxc-scale-breaks"
                        }).linkOn(root, "scale-breaks");
                        this._labelsGroup = renderer.g().attr({
                            class: "dxc-labels-group"
                        }).linkOn(root, "labels");
                        this._crosshairCursorGroup = renderer.g().attr({
                            class: "dxc-crosshair-cursor"
                        }).linkOn(root, "crosshair");
                        this._legendGroup = renderer.g().attr({
                            class: "dxc-legend",
                            "clip-path": this._getCanvasClipRectID()
                        }).linkOn(root, "legend").linkAppend(root).enableLinks();
                        this._scrollBarGroup = renderer.g().attr({
                            class: "dxc-scroll-bar"
                        }).linkOn(root, "scroll-bar")
                    },
                    _executeAppendBeforeSeries() {},
                    _executeAppendAfterSeries() {},
                    _disposeObjectsInArray(propName, fieldNames) {
                        (this[propName] || []).forEach(item => {
                            if (fieldNames && item) {
                                fieldNames.forEach(field => {
                                    var _a;
                                    null === (_a = item[field]) || void 0 === _a ? void 0 : _a.dispose()
                                })
                            } else {
                                null === item || void 0 === item ? void 0 : item.dispose()
                            }
                        });
                        this[propName] = null
                    },
                    _disposeCore() {
                        const disposeObject = propName => {
                            if (this[propName]) {
                                this[propName].dispose();
                                this[propName] = null
                            }
                        };
                        const unlinkGroup = name => {
                            this[name].linkOff()
                        };
                        const disposeObjectsInArray = this._disposeObjectsInArray;
                        this._renderer.stopAllAnimations();
                        disposeObjectsInArray.call(this, "series");
                        disposeObject("_tracker");
                        disposeObject("_crosshair");
                        this.layoutManager = this._userOptions = this._canvas = this._groupsData = null;
                        unlinkGroup("_stripsGroup");
                        unlinkGroup("_gridGroup");
                        unlinkGroup("_axesGroup");
                        unlinkGroup("_constantLinesGroup");
                        unlinkGroup("_stripLabelAxesGroup");
                        unlinkGroup("_panesBorderGroup");
                        unlinkGroup("_seriesGroup");
                        unlinkGroup("_labelsGroup");
                        unlinkGroup("_crosshairCursorGroup");
                        unlinkGroup("_legendGroup");
                        unlinkGroup("_scrollBarGroup");
                        unlinkGroup("_scaleBreaksGroup");
                        disposeObject("_canvasClipRect");
                        disposeObject("_panesBackgroundGroup");
                        disposeObject("_backgroundRect");
                        disposeObject("_stripsGroup");
                        disposeObject("_gridGroup");
                        disposeObject("_axesGroup");
                        disposeObject("_constantLinesGroup");
                        disposeObject("_stripLabelAxesGroup");
                        disposeObject("_panesBorderGroup");
                        disposeObject("_seriesGroup");
                        disposeObject("_labelsGroup");
                        disposeObject("_crosshairCursorGroup");
                        disposeObject("_legendGroup");
                        disposeObject("_scrollBarGroup");
                        disposeObject("_scaleBreaksGroup")
                    },
                    _getAnimationOptions() {
                        return this._themeManager.getOptions("animation")
                    },
                    _getDefaultSize: () => ({
                        width: 400,
                        height: 400
                    }),
                    _getOption(name) {
                        return this._themeManager.getOptions(name)
                    },
                    _applySize(rect) {
                        this._rect = rect.slice();
                        if (!this._changes.has("FULL_RENDER")) {
                            this._processRefreshData("_resize")
                        }
                    },
                    _resize() {
                        this._doRender(this.__renderOptions || {
                            animate: false,
                            isResize: true
                        })
                    },
                    _trackerType: "ChartTracker",
                    _createTracker() {
                        this._tracker = new trackerModule[this._trackerType]({
                            seriesGroup: this._seriesGroup,
                            renderer: this._renderer,
                            tooltip: this._tooltip,
                            legend: this._legend,
                            eventTrigger: this._eventTrigger
                        })
                    },
                    _getTrackerSettings() {
                        return (0, _extend.extend)({
                            chart: this
                        }, this._getSelectionModes())
                    },
                    _getSelectionModes() {
                        const themeManager = this._themeManager;
                        return {
                            seriesSelectionMode: themeManager.getOptions("seriesSelectionMode"),
                            pointSelectionMode: themeManager.getOptions("pointSelectionMode")
                        }
                    },
                    _updateTracker(trackerCanvases) {
                        this._tracker.update(this._getTrackerSettings());
                        this._tracker.setCanvases({
                            left: 0,
                            right: this._canvas.width,
                            top: 0,
                            bottom: this._canvas.height
                        }, trackerCanvases)
                    },
                    _createCanvasFromRect(rect) {
                        const currentCanvas = this._canvas;
                        return (0, _utils.setCanvasValues)({
                            left: rect[0],
                            top: rect[1],
                            right: currentCanvas.width - rect[2],
                            bottom: currentCanvas.height - rect[3],
                            width: currentCanvas.width,
                            height: currentCanvas.height
                        })
                    },
                    _doRender(_options) {
                        if (0 === this._canvas.width && 0 === this._canvas.height) {
                            return
                        }
                        this._resetIsReady();
                        const drawOptions = this._prepareDrawOptions(_options);
                        const {
                            recreateCanvas: recreateCanvas
                        } = drawOptions;
                        this._preserveOriginalCanvas();
                        if (recreateCanvas) {
                            this.__currentCanvas = this._canvas
                        } else {
                            this._canvas = this.__currentCanvas
                        }
                        recreateCanvas && this._updateCanvasClipRect(this._canvas);
                        this._canvas = this._createCanvasFromRect(this._rect);
                        this._renderer.stopAllAnimations(true);
                        this._cleanGroups();
                        const startTime = new Date;
                        this._renderElements(drawOptions);
                        this._lastRenderingTime = Number(new Date) - Number(startTime)
                    },
                    _preserveOriginalCanvas() {
                        this.__originalCanvas = this._canvas;
                        this._canvas = (0, _extend.extend)({}, this._canvas)
                    },
                    _layoutAxes: _common.noop,
                    _renderElements(drawOptions) {
                        const preparedOptions = this._prepareToRender(drawOptions);
                        const isRotated = this._isRotated();
                        const isLegendInside = this._isLegendInside();
                        const trackerCanvases = [];
                        (0, _extend.extend)({}, this._canvas);
                        let argBusinessRange;
                        let zoomMinArg;
                        let zoomMaxArg;
                        this._renderer.lock();
                        if (drawOptions.drawLegend && this._legend) {
                            this._legendGroup.linkAppend()
                        }
                        this.layoutManager.setOptions(this._layoutManagerOptions());
                        const layoutTargets = this._getLayoutTargets();
                        this._layoutAxes(needSpace => {
                            const axisDrawOptions = needSpace ? (0, _extend.extend)({}, drawOptions, {
                                animate: false,
                                recreateCanvas: true
                            }) : drawOptions;
                            const canvas = this._renderAxes(axisDrawOptions, preparedOptions);
                            this._shrinkAxes(needSpace, canvas)
                        });
                        this._applyClipRects(preparedOptions);
                        this._appendSeriesGroups();
                        this._createCrosshairCursor();
                        layoutTargets.forEach(_ref => {
                            let {
                                canvas: canvas
                            } = _ref;
                            trackerCanvases.push({
                                left: canvas.left,
                                right: canvas.width - canvas.right,
                                top: canvas.top,
                                bottom: canvas.height - canvas.bottom
                            })
                        });
                        if (this._scrollBar) {
                            argBusinessRange = this._argumentAxes[0].getTranslator().getBusinessRange();
                            if ("discrete" === argBusinessRange.axisType && argBusinessRange.categories && argBusinessRange.categories.length <= 1 || "discrete" !== argBusinessRange.axisType && argBusinessRange.min === argBusinessRange.max) {
                                zoomMinArg = zoomMaxArg = void 0
                            } else {
                                zoomMinArg = argBusinessRange.minVisible;
                                zoomMaxArg = argBusinessRange.maxVisible
                            }
                            this._scrollBar.init(argBusinessRange, !this._argumentAxes[0].getOptions().valueMarginsEnabled).setPosition(zoomMinArg, zoomMaxArg)
                        }
                        this._updateTracker(trackerCanvases);
                        this._updateLegendPosition(drawOptions, isLegendInside);
                        this._applyPointMarkersAutoHiding();
                        this._renderSeries(drawOptions, isRotated, isLegendInside);
                        this._renderGraphicObjects();
                        this._renderer.unlock()
                    },
                    _updateLegendPosition: _common.noop,
                    _createCrosshairCursor: _common.noop,
                    _appendSeriesGroups() {
                        this._seriesGroup.linkAppend();
                        this._labelsGroup.linkAppend();
                        this._appendAdditionalSeriesGroups()
                    },
                    _renderSeries(drawOptions, isRotated, isLegendInside) {
                        this._calculateSeriesLayout(drawOptions, isRotated);
                        this._renderSeriesElements(drawOptions, isLegendInside)
                    },
                    _calculateSeriesLayout(drawOptions, isRotated) {
                        drawOptions.hideLayoutLabels = this.layoutManager.needMoreSpaceForPanesCanvas(this._getLayoutTargets(), isRotated) && !this._themeManager.getOptions("adaptiveLayout").keepLabels;
                        this._updateSeriesDimensions(drawOptions)
                    },
                    _getArgFilter: () => () => true,
                    _getValFilter: () => () => true,
                    _getPointsToAnimation(series) {
                        const argViewPortFilter = this._getArgFilter();
                        return series.map(s => {
                            const valViewPortFilter = this._getValFilter(s);
                            return s.getPoints().filter(p => p.getOptions().visible && argViewPortFilter(p.argument) && (valViewPortFilter(p.getMinValue(true)) || valViewPortFilter(p.getMaxValue(true)))).length
                        })
                    },
                    _renderSeriesElements(drawOptions, isLegendInside) {
                        const {
                            series: series
                        } = this;
                        const resolveLabelOverlapping = this._themeManager.getOptions("resolveLabelOverlapping");
                        const pointsToAnimation = this._getPointsToAnimation(series);
                        series.forEach((singleSeries, index) => {
                            this._applyExtraSettings(singleSeries, drawOptions);
                            const animationEnabled = drawOptions.animate && pointsToAnimation[index] <= drawOptions.animationPointsLimit && this._renderer.animationEnabled();
                            singleSeries.draw(animationEnabled, drawOptions.hideLayoutLabels, this._getLegendCallBack(singleSeries))
                        });
                        if ("none" === resolveLabelOverlapping) {
                            this._adjustSeriesLabels(false)
                        } else {
                            this._locateLabels(resolveLabelOverlapping)
                        }
                        this._renderTrackers(isLegendInside);
                        this._tracker.repairTooltip();
                        this._renderExtraElements();
                        this._clearCanvas();
                        this._seriesElementsDrawn = true
                    },
                    _changesApplied() {
                        if (this._seriesElementsDrawn) {
                            this._seriesElementsDrawn = false;
                            this._drawn();
                            this._renderCompleteHandler()
                        }
                    },
                    _locateLabels(resolveLabelOverlapping) {
                        this._resolveLabelOverlapping(resolveLabelOverlapping)
                    },
                    _renderExtraElements() {},
                    _clearCanvas() {
                        this._canvas = this.__originalCanvas
                    },
                    _resolveLabelOverlapping(resolveLabelOverlapping) {
                        let func;
                        switch (resolveLabelOverlapping) {
                            case "stack":
                                func = this._resolveLabelOverlappingStack;
                                break;
                            case "hide":
                                func = this._resolveLabelOverlappingHide;
                                break;
                            case "shift":
                                func = this._resolveLabelOverlappingShift
                        }
                        return (0, _type.isFunction)(func) && func.call(this)
                    },
                    _getVisibleSeries() {
                        return (0, _common.grep)(this.getAllSeries(), series => series.isVisible())
                    },
                    _resolveLabelOverlappingHide() {
                        const labels = [];
                        let currentLabel;
                        let nextLabel;
                        let currentLabelRect;
                        let nextLabelRect;
                        let i;
                        let j;
                        let points;
                        const series = this._getVisibleSeries();
                        for (i = 0; i < series.length; i++) {
                            points = series[i].getVisiblePoints();
                            for (j = 0; j < points.length; j++) {
                                labels.push.apply(labels, points[j].getLabels())
                            }
                        }
                        for (i = 0; i < labels.length; i++) {
                            currentLabel = labels[i];
                            if (!currentLabel.isVisible()) {
                                continue
                            }
                            currentLabelRect = currentLabel.getBoundingRect();
                            for (j = i + 1; j < labels.length; j++) {
                                nextLabel = labels[j];
                                nextLabelRect = nextLabel.getBoundingRect();
                                if (firstRect = currentLabelRect, secondRect = nextLabelRect, (firstRect.x <= secondRect.x && secondRect.x <= firstRect.x + firstRect.width || firstRect.x >= secondRect.x && firstRect.x <= secondRect.x + secondRect.width) && (firstRect.y <= secondRect.y && secondRect.y <= firstRect.y + firstRect.height || firstRect.y >= secondRect.y && firstRect.y <= secondRect.y + secondRect.height)) {
                                    nextLabel.draw(false)
                                }
                            }
                        }
                        var firstRect, secondRect
                    },
                    _cleanGroups() {
                        this._stripsGroup.linkRemove().clear();
                        this._gridGroup.linkRemove().clear();
                        this._axesGroup.linkRemove().clear();
                        this._constantLinesGroup.clear();
                        this._stripLabelAxesGroup.linkRemove().clear();
                        this._labelsGroup.linkRemove().clear();
                        this._crosshairCursorGroup.linkRemove().clear();
                        this._scaleBreaksGroup.linkRemove().clear()
                    },
                    _allowLegendInsidePosition: () => false,
                    _createLegend() {
                        const legendSettings = function(legendDataField) {
                            const formatObjectFields = (name = legendDataField, {
                                nameField: "".concat(name, "Name"),
                                colorField: "".concat(name, "Color"),
                                indexField: "".concat(name, "Index")
                            });
                            var name;
                            return {
                                getFormatObject(data) {
                                    const res = {};
                                    res[formatObjectFields.indexField] = data.id;
                                    res[formatObjectFields.colorField] = data.states.normal.fill;
                                    res[formatObjectFields.nameField] = data.text;
                                    return res
                                },
                                textField: formatObjectFields.nameField
                            }
                        }(this._legendDataField);
                        this._legend = new _legend.Legend({
                            renderer: this._renderer,
                            widget: this,
                            group: this._legendGroup,
                            backgroundClass: "dxc-border",
                            itemGroupClass: "dxc-item",
                            titleGroupClass: "dxc-title",
                            textField: legendSettings.textField,
                            getFormatObject: legendSettings.getFormatObject,
                            allowInsidePosition: this._allowLegendInsidePosition()
                        });
                        this._updateLegend();
                        this._layout.add(this._legend)
                    },
                    _updateLegend() {
                        const themeManager = this._themeManager;
                        const legendOptions = themeManager.getOptions("legend");
                        const legendData = this._getLegendData();
                        legendOptions.containerBackgroundColor = themeManager.getOptions("containerBackgroundColor");
                        legendOptions._incidentOccurred = this._incidentOccurred;
                        this._legend.update(legendData, legendOptions, themeManager.theme("legend").title);
                        this._change(["LAYOUT"])
                    },
                    _prepareDrawOptions(drawOptions) {
                        const animationOptions = this._getAnimationOptions();
                        const options = (0, _extend.extend)({}, {
                            force: false,
                            adjustAxes: true,
                            drawLegend: true,
                            drawTitle: true,
                            animate: animationOptions.enabled,
                            animationPointsLimit: animationOptions.maxPointCountSupported
                        }, drawOptions, this.__renderOptions);
                        if (!(0, _type.isDefined)(options.recreateCanvas)) {
                            options.recreateCanvas = options.adjustAxes && options.drawLegend && options.drawTitle
                        }
                        return options
                    },
                    _processRefreshData(newRefreshAction) {
                        const currentRefreshActionPosition = ACTIONS_BY_PRIORITY.indexOf(this._currentRefreshData);
                        const newRefreshActionPosition = ACTIONS_BY_PRIORITY.indexOf(newRefreshAction);
                        if (!this._currentRefreshData || currentRefreshActionPosition >= 0 && newRefreshActionPosition < currentRefreshActionPosition) {
                            this._currentRefreshData = newRefreshAction
                        }
                        this._requestChange(["REFRESH"])
                    },
                    _getLegendData() {
                        return (0, _utils.map)(this._getLegendTargets(), item => {
                            const {
                                legendData: legendData
                            } = item;
                            const style = item.getLegendStyles;
                            let {
                                opacity: opacity
                            } = style.normal;
                            if (!item.visible) {
                                if (!(0, _type.isDefined)(opacity) || opacity > .3) {
                                    opacity = .3
                                }
                                legendData.textOpacity = .3
                            }
                            const opacityStyle = {
                                opacity: opacity
                            };
                            legendData.states = {
                                hover: (0, _extend.extend)({}, style.hover, opacityStyle),
                                selection: (0, _extend.extend)({}, style.selection, opacityStyle),
                                normal: (0, _extend.extend)({}, style.normal, opacityStyle)
                            };
                            return legendData
                        })
                    },
                    _getLegendOptions(item) {
                        return {
                            legendData: {
                                text: item[this._legendItemTextField],
                                id: item.index,
                                visible: true
                            },
                            getLegendStyles: item.getLegendStyles(),
                            visible: item.isVisible()
                        }
                    },
                    _disposeSeries(seriesIndex) {
                        var _a;
                        if (this.series) {
                            if ((0, _type.isDefined)(seriesIndex)) {
                                this.series[seriesIndex].dispose();
                                this.series.splice(seriesIndex, 1)
                            } else {
                                this.series.forEach(s => s.dispose());
                                this.series.length = 0
                            }
                        }
                        if (!(null === (_a = this.series) || void 0 === _a ? void 0 : _a.length)) {
                            this.series = []
                        }
                    },
                    _disposeSeriesFamilies() {
                        (this.seriesFamilies || []).forEach(family => {
                            family.dispose()
                        });
                        this.seriesFamilies = null;
                        this._needHandleRenderComplete = true
                    },
                    _optionChanged(arg) {
                        this._themeManager.resetOptions(arg.name);
                        this.callBase.apply(this, arguments)
                    },
                    _applyChanges() {
                        this._themeManager.update(this._options.silent());
                        this.callBase(...arguments)
                    },
                    _optionChangesMap: {
                        animation: "ANIMATION",
                        dataSource: "DATA_SOURCE",
                        palette: "PALETTE",
                        paletteExtensionMode: "PALETTE",
                        legend: "FORCE_DATA_INIT",
                        seriesTemplate: "FORCE_DATA_INIT",
                        export: "FORCE_RENDER",
                        valueAxis: "AXES_AND_PANES",
                        argumentAxis: "AXES_AND_PANES",
                        commonAxisSettings: "AXES_AND_PANES",
                        panes: "AXES_AND_PANES",
                        commonPaneSettings: "AXES_AND_PANES",
                        defaultPane: "AXES_AND_PANES",
                        containerBackgroundColor: "AXES_AND_PANES",
                        rotated: "ROTATED",
                        autoHidePointMarkers: "REFRESH_SERIES_REINIT",
                        customizePoint: "REFRESH_SERIES_REINIT",
                        customizeLabel: "REFRESH_SERIES_REINIT",
                        scrollBar: "SCROLL_BAR"
                    },
                    _optionChangesOrder: ["ROTATED", "PALETTE", "REFRESH_SERIES_REINIT", "USE_SPIDER_WEB", "AXES_AND_PANES", "INIT", "REINIT", "DATA_SOURCE", "REFRESH_SERIES_DATA_INIT", "DATA_INIT", "FORCE_DATA_INIT", "REFRESH_AXES", "CORRECT_AXIS"],
                    _customChangesOrder: ["ANIMATION", "REFRESH_SERIES_FAMILIES", "FORCE_FIRST_DRAWING", "FORCE_DRAWING", "FORCE_RENDER", "VISUAL_RANGE", "SCROLL_BAR", "REINIT", "REFRESH", "FULL_RENDER"],
                    _change_ANIMATION() {
                        this._renderer.updateAnimationOptions(this._getAnimationOptions())
                    },
                    _change_DATA_SOURCE() {
                        this._needHandleRenderComplete = true;
                        this._updateDataSource()
                    },
                    _change_PALETTE() {
                        this._themeManager.updatePalette();
                        this._refreshSeries("DATA_INIT")
                    },
                    _change_REFRESH_SERIES_DATA_INIT() {
                        this._refreshSeries("DATA_INIT")
                    },
                    _change_DATA_INIT() {
                        if ((!this.series || this.needToPopulateSeries) && !this._changes.has("FORCE_DATA_INIT")) {
                            this._dataInit()
                        }
                    },
                    _change_FORCE_DATA_INIT() {
                        this._dataInit()
                    },
                    _change_REFRESH_SERIES_FAMILIES() {
                        this._processSeriesFamilies();
                        this._populateBusinessRange();
                        this._processRefreshData("_forceRender")
                    },
                    _change_FORCE_RENDER() {
                        this._processRefreshData("_forceRender")
                    },
                    _change_AXES_AND_PANES() {
                        this._refreshSeries("INIT")
                    },
                    _change_ROTATED() {
                        this._createScrollBar();
                        this._refreshSeries("INIT")
                    },
                    _change_REFRESH_SERIES_REINIT() {
                        this._refreshSeries("INIT")
                    },
                    _change_REFRESH_AXES() {
                        (0, _utils.setCanvasValues)(this._canvas);
                        this._reinitAxes();
                        this._requestChange(["CORRECT_AXIS", "FULL_RENDER"])
                    },
                    _change_SCROLL_BAR() {
                        this._createScrollBar();
                        this._processRefreshData("_forceRender")
                    },
                    _change_REINIT() {
                        this._processRefreshData("_reinit")
                    },
                    _change_FORCE_DRAWING() {
                        this._resetComponentsAnimation()
                    },
                    _change_FORCE_FIRST_DRAWING() {
                        this._resetComponentsAnimation(true)
                    },
                    _resetComponentsAnimation(isFirstDrawing) {
                        this.series.forEach(s => {
                            s.resetApplyingAnimation(isFirstDrawing)
                        });
                        this._resetAxesAnimation(isFirstDrawing)
                    },
                    _resetAxesAnimation: _common.noop,
                    _refreshSeries(actionName) {
                        this.needToPopulateSeries = true;
                        this._requestChange([actionName])
                    },
                    _change_CORRECT_AXIS() {
                        this._correctAxes()
                    },
                    _doRefresh() {
                        const methodName = this._currentRefreshData;
                        if (methodName) {
                            this._currentRefreshData = null;
                            this._renderer.stopAllAnimations(true);
                            this[methodName]()
                        }
                    },
                    _updateCanvasClipRect(canvas) {
                        const width = Math.max(canvas.width - canvas.left - canvas.right, 0);
                        const height = Math.max(canvas.height - canvas.top - canvas.bottom, 0);
                        this._canvasClipRect.attr({
                            x: canvas.left,
                            y: canvas.top,
                            width: width,
                            height: height
                        });
                        this._backgroundRect.attr({
                            x: canvas.left,
                            y: canvas.top,
                            width: width,
                            height: height
                        })
                    },
                    _getCanvasClipRectID() {
                        return this._canvasClipRect.id
                    },
                    _dataSourceChangedHandler() {
                        if (this._changes.has("INIT")) {
                            this._requestChange(["DATA_INIT"])
                        } else {
                            this._requestChange(["FORCE_DATA_INIT"])
                        }
                    },
                    _dataInit() {
                        this._dataSpecificInit(true)
                    },
                    _processSingleSeries(singleSeries) {
                        singleSeries.createPoints(false)
                    },
                    _handleSeriesDataUpdated() {
                        if (this._getVisibleSeries().some(s => s.useAggregation())) {
                            this._populateMarginOptions()
                        }
                        this.series.forEach(s => this._processSingleSeries(s), this)
                    },
                    _dataSpecificInit(needRedraw) {
                        if (!this.series || this.needToPopulateSeries) {
                            this.series = this._populateSeries()
                        }
                        this._repopulateSeries();
                        this._seriesPopulatedHandlerCore();
                        this._populateBusinessRange();
                        this._tracker.updateSeries(this.series, this._changes.has("INIT"));
                        this._updateLegend();
                        if (needRedraw) {
                            this._requestChange(["FULL_RENDER"])
                        }
                    },
                    _forceRender() {
                        this._doRender({
                            force: true
                        })
                    },
                    _repopulateSeries() {
                        const themeManager = this._themeManager;
                        const data = this._dataSourceItems();
                        const dataValidatorOptions = themeManager.getOptions("dataPrepareSettings");
                        const seriesTemplate = themeManager.getOptions("seriesTemplate");
                        if (seriesTemplate) {
                            this._populateSeries(data)
                        }
                        this._groupSeries();
                        const parsedData = (0, _data_validator.validateData)(data, this._groupsData, this._incidentOccurred, dataValidatorOptions);
                        themeManager.resetPalette();
                        this.series.forEach(singleSeries => {
                            singleSeries.updateData(parsedData[singleSeries.getArgumentField()])
                        });
                        this._handleSeriesDataUpdated()
                    },
                    _renderCompleteHandler() {
                        let allSeriesInited = true;
                        if (this._needHandleRenderComplete) {
                            this.series.forEach(s => {
                                allSeriesInited = allSeriesInited && s.canRenderCompleteHandle()
                            });
                            if (allSeriesInited) {
                                this._needHandleRenderComplete = false;
                                this._eventTrigger("done", {
                                    target: this
                                })
                            }
                        }
                    },
                    _dataIsReady() {
                        return (0, _type.isDefined)(this.option("dataSource")) && this._dataIsLoaded()
                    },
                    _populateSeriesOptions(data) {
                        const themeManager = this._themeManager;
                        const seriesTemplate = themeManager.getOptions("seriesTemplate");
                        const seriesOptions = seriesTemplate ? (0, _utils.processSeriesTemplate)(seriesTemplate, data || []) : this.option("series");
                        const allSeriesOptions = isArray(seriesOptions) ? seriesOptions : seriesOptions ? [seriesOptions] : [];
                        const extraOptions = this._getExtraOptions();
                        let particularSeriesOptions;
                        let seriesTheme;
                        const seriesThemes = [];
                        const seriesVisibilityChanged = target => {
                            this._specialProcessSeries();
                            this._populateBusinessRange(target && target.getValueAxis(), true);
                            this._renderer.stopAllAnimations(true);
                            this._updateLegend();
                            this._requestChange(["FULL_RENDER"])
                        };
                        for (let i = 0; i < allSeriesOptions.length; i++) {
                            particularSeriesOptions = (0, _extend.extend)(true, {}, allSeriesOptions[i], extraOptions);
                            if (!(0, _type.isDefined)(particularSeriesOptions.name) || "" === particularSeriesOptions.name) {
                                particularSeriesOptions.name = "Series ".concat((i + 1).toString())
                            }
                            particularSeriesOptions.rotated = this._isRotated();
                            particularSeriesOptions.customizePoint = themeManager.getOptions("customizePoint");
                            particularSeriesOptions.customizeLabel = themeManager.getOptions("customizeLabel");
                            particularSeriesOptions.visibilityChanged = seriesVisibilityChanged;
                            particularSeriesOptions.incidentOccurred = this._incidentOccurred;
                            seriesTheme = themeManager.getOptions("series", particularSeriesOptions, allSeriesOptions.length);
                            if (this._checkPaneName(seriesTheme)) {
                                seriesThemes.push(seriesTheme)
                            }
                        }
                        return seriesThemes
                    },
                    _populateSeries(data) {
                        var _a;
                        const seriesBasis = [];
                        const incidentOccurred = this._incidentOccurred;
                        const seriesThemes = this._populateSeriesOptions(data);
                        let particularSeries;
                        let disposeSeriesFamilies = false;
                        this.needToPopulateSeries = false;
                        seriesThemes.forEach(theme => {
                            var _a;
                            const curSeries = null === (_a = this.series) || void 0 === _a ? void 0 : _a.find(s => s.name === theme.name && !seriesBasis.map(sb => sb.series).includes(s));
                            if (curSeries && curSeries.type === theme.type) {
                                seriesBasis.push({
                                    series: curSeries,
                                    options: theme
                                })
                            } else {
                                seriesBasis.push({
                                    options: theme
                                });
                                disposeSeriesFamilies = true
                            }
                        });
                        0 !== (null === (_a = this.series) || void 0 === _a ? void 0 : _a.length) && this._tracker.clearHover();
                        (0, _iterator.reverseEach)(this.series, (index, series) => {
                            if (!seriesBasis.some(s => series === s.series)) {
                                this._disposeSeries(index);
                                disposeSeriesFamilies = true
                            }
                        });
                        !disposeSeriesFamilies && (disposeSeriesFamilies = seriesBasis.some(sb => sb.series.name !== seriesThemes[sb.series.index].name));
                        this.series = [];
                        disposeSeriesFamilies && this._disposeSeriesFamilies();
                        this._themeManager.resetPalette();
                        const eventPipe = data => {
                            this.series.forEach(currentSeries => {
                                currentSeries.notify(data)
                            })
                        };
                        seriesBasis.forEach(basis => {
                            var _a, _b;
                            const seriesTheme = basis.options;
                            const argumentAxis = null !== (_b = null === (_a = this._argumentAxes) || void 0 === _a ? void 0 : _a.filter(a => a.pane === seriesTheme.pane)[0]) && void 0 !== _b ? _b : this.getArgumentAxis();
                            const renderSettings = {
                                commonSeriesModes: this._getSelectionModes(),
                                argumentAxis: argumentAxis,
                                valueAxis: this._getValueAxis(seriesTheme.pane, seriesTheme.axis)
                            };
                            if (basis.series) {
                                particularSeries = basis.series;
                                particularSeries.updateOptions(seriesTheme, renderSettings)
                            } else {
                                particularSeries = new _base_series.Series((0, _extend.extend)({
                                    renderer: this._renderer,
                                    seriesGroup: this._seriesGroup,
                                    labelsGroup: this._labelsGroup,
                                    eventTrigger: this._eventTrigger,
                                    eventPipe: eventPipe,
                                    incidentOccurred: incidentOccurred
                                }, renderSettings), seriesTheme)
                            }
                            if (!particularSeries.isUpdated) {
                                incidentOccurred("E2101", [seriesTheme.type])
                            } else {
                                particularSeries.index = this.series.length;
                                this.series.push(particularSeries)
                            }
                        });
                        return this.series
                    },
                    getStackedPoints(point) {
                        const stackName = point.series.getStackName();
                        return this._getVisibleSeries().reduce((stackPoints, series) => {
                            if (!(0, _type.isDefined)(series.getStackName()) || !(0, _type.isDefined)(stackName) || stackName === series.getStackName()) {
                                stackPoints = stackPoints.concat(series.getPointsByArg(point.argument))
                            }
                            return stackPoints
                        }, [])
                    },
                    getAllSeries: function() {
                        return (this.series || []).slice()
                    },
                    getSeriesByName: function(name) {
                        const found = (this.series || []).find(singleSeries => singleSeries.name === name);
                        return found || null
                    },
                    getSeriesByPos: function(pos) {
                        return (this.series || [])[pos]
                    },
                    clearSelection: function() {
                        this._tracker.clearSelection()
                    },
                    hideTooltip() {
                        this._tracker._hideTooltip()
                    },
                    clearHover() {
                        this._tracker.clearHover()
                    },
                    render(renderOptions) {
                        this.__renderOptions = renderOptions;
                        this.__forceRender = renderOptions && renderOptions.force;
                        this.callBase.apply(this, arguments);
                        this.__renderOptions = this.__forceRender = null;
                        return this
                    },
                    refresh() {
                        this._disposeSeries();
                        this._disposeSeriesFamilies();
                        this._requestChange(["CONTAINER_SIZE", "REFRESH_SERIES_REINIT"])
                    },
                    _getMinSize() {
                        const adaptiveLayout = this._layoutManagerOptions();
                        return [adaptiveLayout.width, adaptiveLayout.height]
                    },
                    _change_REFRESH() {
                        if (!this._changes.has("INIT")) {
                            this._doRefresh()
                        } else {
                            this._currentRefreshData = null
                        }
                    },
                    _change_FULL_RENDER() {
                        this._forceRender()
                    },
                    _change_INIT() {
                        this._reinit()
                    },
                    _stopCurrentHandling() {
                        if (this._disposed) {
                            return
                        }
                        this._tracker.stopCurrentHandling()
                    }
                });
                exports.BaseChart = BaseChart;
                ["series", "commonSeriesSettings", "dataPrepareSettings", "seriesSelectionMode", "pointSelectionMode", "synchronizeMultiAxes", "resolveLabelsOverlapping"].forEach(name => {
                    BaseChart.prototype._optionChangesMap[name] = "REFRESH_SERIES_DATA_INIT"
                });
                ["adaptiveLayout", "crosshair", "resolveLabelOverlapping", "adjustOnZoom", "stickyHovering"].forEach(name => {
                    BaseChart.prototype._optionChangesMap[name] = "FORCE_RENDER"
                });
                ["minBubbleSize", "maxBubbleSize", "barGroupPadding", "barGroupWidth", "negativesAsZeroes", "negativesAsZeros"].forEach(name => {
                    BaseChart.prototype._optionChangesMap[name] = "REFRESH_SERIES_FAMILIES"
                });
                BaseChart.addPlugin(_export.plugin);
                BaseChart.addPlugin(_title.plugin);
                BaseChart.addPlugin(_data_source.plugin);
                BaseChart.addPlugin(_tooltip.plugin);
                BaseChart.addPlugin(_loading_indicator.plugin);
                const {
                    _change_TITLE: _change_TITLE
                } = BaseChart.prototype;
                BaseChart.prototype._change_TITLE = function() {
                    _change_TITLE.apply(this, arguments);
                    this._change(["FORCE_RENDER"])
                }
            },
        56136:
            /*!**********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/chart_components/rolling_stock.js ***!
              \**********************************************************************************************/
            function(__unused_webpack_module, exports) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.RollingStock = void 0;
                let RollingStock = function() {
                    function RollingStock(label, isRotated, shiftFunction) {
                        const bBox = label.getBoundingRect();
                        const {
                            x: x
                        } = bBox;
                        const {
                            y: y
                        } = bBox;
                        const endX = bBox.x + bBox.width;
                        const endY = bBox.y + bBox.height;
                        this.labels = [label];
                        this.shiftFunction = shiftFunction;
                        this.bBox = {
                            start: isRotated ? x : y,
                            width: isRotated ? bBox.width : bBox.height,
                            end: isRotated ? endX : endY,
                            oppositeStart: isRotated ? y : x,
                            oppositeEnd: isRotated ? endY : endX
                        };
                        this.initialPosition = isRotated ? bBox.x : bBox.y
                    }
                    var _proto = RollingStock.prototype;
                    _proto.toChain = function(nextRollingStock) {
                        const nextRollingStockBBox = nextRollingStock.getBoundingRect();
                        nextRollingStock.shift(nextRollingStockBBox.start - this.bBox.end);
                        this.changeBoxWidth(nextRollingStockBBox.width);
                        this.labels = this.labels.concat(nextRollingStock.labels)
                    };
                    _proto.getBoundingRect = function() {
                        return this.bBox
                    };
                    _proto.shift = function(shiftLength) {
                        this.labels.forEach(label => {
                            const bBox = label.getBoundingRect();
                            const coords = this.shiftFunction(bBox, shiftLength);
                            if (!label.hideInsideLabel(coords)) {
                                label.shift(coords.x, coords.y)
                            }
                        });
                        this.bBox.end -= shiftLength;
                        this.bBox.start -= shiftLength
                    };
                    _proto.setRollingStockInCanvas = function(canvas) {
                        if (this.bBox.end > canvas.end) {
                            this.shift(this.bBox.end - canvas.end)
                        }
                    };
                    _proto.getLabels = function() {
                        return this.labels
                    };
                    _proto.value = function() {
                        return this.labels[0].getData().value
                    };
                    _proto.getInitialPosition = function() {
                        return this.initialPosition
                    };
                    _proto.changeBoxWidth = function(width) {
                        this.bBox.end += width;
                        this.bBox.width += width
                    };
                    return RollingStock
                }();
                exports.RollingStock = RollingStock
            },
        55845:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/core/m_base_widget.js ***!
              \**********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 20530));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 73349));
                var _dom_component = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_component */ 13046));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 20576);
                var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 95479);
                var _size = __webpack_require__( /*! ../../../core/utils/size */ 58664);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 58201);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../events/core/events_engine */ 55994));
                var _base_theme_manager = __webpack_require__( /*! ../../../viz/core/base_theme_manager */ 43637);
                var _base_widget = __webpack_require__( /*! ../../../viz/core/base_widget.utils */ 98469);
                var _errors_warnings = _interopRequireDefault(__webpack_require__( /*! ../../../viz/core/errors_warnings */ 80726));
                var _helpers = __webpack_require__( /*! ../../../viz/core/helpers */ 3603);
                var _layout = _interopRequireDefault(__webpack_require__( /*! ../../../viz/core/layout */ 94551));
                var _renderer2 = __webpack_require__( /*! ../../../viz/core/renderers/renderer */ 56453);
                var _utils = __webpack_require__( /*! ../../../viz/core/utils */ 19157);
                var _utils2 = __webpack_require__( /*! ../../../viz/utils */ 34434);
                var _m_charts = _interopRequireDefault(__webpack_require__( /*! ../../common/m_charts */ 66798));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const {
                    log: log
                } = _errors_warnings.default;
                const baseOptionMethod = _dom_component.default.prototype.option;

                function getTrue() {
                    return true
                }

                function getFalse() {
                    return false
                }

                function defaultOnIncidentOccurred(e) {
                    if (!e.component._eventsStrategy.hasEvent("incidentOccurred")) {
                        log.apply(null, [e.target.id].concat(e.target.args || []))
                    }
                }

                function pickPositiveValue(values) {
                    return values.reduce((result, value) => value > 0 && !result ? value : result, 0)
                }

                function callForEach(functions) {
                    functions.forEach(c => c())
                }
                const isServerSide = !(0, _window.hasWindow)();
                const baseWidget = isServerSide ? function() {
                    const emptyComponentConfig = {
                        _initTemplates() {},
                        ctor(element, options) {
                            this.callBase(element, options);
                            const sizedElement = _dom_adapter.default.createElement("div");
                            const width = options && (0, _type.isNumeric)(options.width) ? "".concat(options.width, "px") : "100%";
                            const height = options && (0, _type.isNumeric)(options.height) ? "".concat(options.height, "px") : "".concat(this._getDefaultSize().height, "px");
                            _dom_adapter.default.setStyle(sizedElement, "width", width);
                            _dom_adapter.default.setStyle(sizedElement, "height", height);
                            _dom_adapter.default.setClass(sizedElement, "dx-sized-element", false);
                            _dom_adapter.default.insertElement(element, sizedElement)
                        }
                    };
                    const EmptyComponent = _dom_component.default.inherit(emptyComponentConfig);
                    const originalInherit = EmptyComponent.inherit;
                    EmptyComponent.inherit = function(config) {
                        Object.keys(config).forEach(field => {
                            if ((0, _type.isFunction)(config[field]) && "_" !== field.substr(0, 1) && "option" !== field || "_dispose" === field || "_optionChanged" === field) {
                                config[field] = _common.noop
                            }
                        });
                        return originalInherit.call(this, config)
                    };
                    return EmptyComponent
                }() : _dom_component.default.inherit({
                    _eventsMap: {
                        onIncidentOccurred: {
                            name: "incidentOccurred",
                            actionSettings: {
                                excludeValidators: ["disabled"]
                            }
                        },
                        onDrawn: {
                            name: "drawn",
                            actionSettings: {
                                excludeValidators: ["disabled"]
                            }
                        }
                    },
                    _getDefaultOptions() {
                        return (0, _extend.extend)(this.callBase(), {
                            onIncidentOccurred: defaultOnIncidentOccurred
                        })
                    },
                    _useLinks: true,
                    _init() {
                        this._$element.children(".".concat("dx-sized-element")).remove();
                        this._graphicObjects = {};
                        this.callBase(...arguments);
                        this._changesLocker = 0;
                        this._optionChangedLocker = 0;
                        this._asyncFirstDrawing = true;
                        this._changes = (0, _helpers.changes)();
                        this._suspendChanges();
                        this._themeManager = this._createThemeManager();
                        this._themeManager.setCallback(() => {
                            this._requestChange(this._themeDependentChanges)
                        });
                        this._renderElementAttributes();
                        this._initRenderer();
                        const useLinks = this._useLinks;
                        if (useLinks) {
                            this._renderer.root.enableLinks().virtualLink("core").virtualLink("peripheral")
                        }
                        this._renderVisibilityChange();
                        this._attachVisibilityChangeHandlers();
                        this._toggleParentsScrollSubscription(this._isVisible());
                        this._initEventTrigger();
                        this._incidentOccurred = (0, _base_widget.createIncidentOccurred)(this.NAME, this._eventTrigger);
                        this._layout = new _layout.default;
                        if (useLinks) {
                            this._renderer.root.linkAfter("core")
                        }
                        this._initPlugins();
                        this._initCore();
                        if (useLinks) {
                            this._renderer.root.linkAfter()
                        }
                        this._change(this._initialChanges)
                    },
                    _createThemeManager() {
                        return new _base_theme_manager.BaseThemeManager(this._getThemeManagerOptions())
                    },
                    _getThemeManagerOptions() {
                        return {
                            themeSection: this._themeSection,
                            fontFields: this._fontFields
                        }
                    },
                    _initialChanges: ["LAYOUT", "RESIZE_HANDLER", "THEME", "DISABLED"],
                    _initPlugins() {
                        (0, _iterator.each)(this._plugins, (_, plugin) => {
                            plugin.init.call(this)
                        })
                    },
                    _disposePlugins() {
                        (0, _iterator.each)(this._plugins.slice().reverse(), (_, plugin) => {
                            plugin.dispose.call(this)
                        })
                    },
                    _change(codes) {
                        this._changes.add(codes)
                    },
                    _suspendChanges() {
                        this._changesLocker += 1
                    },
                    _resumeChanges() {
                        if (0 === --this._changesLocker && this._changes.count() > 0 && !this._applyingChanges) {
                            this._renderer.lock();
                            this._applyingChanges = true;
                            this._applyChanges();
                            this._changes.reset();
                            this._applyingChanges = false;
                            this._changesApplied();
                            this._renderer.unlock();
                            if (this._optionsQueue) {
                                this._applyQueuedOptions()
                            }
                            this.resolveItemsDeferred(this._legend ? [this._legend] : []);
                            this._optionChangedLocker += 1;
                            this._notify();
                            this._optionChangedLocker -= 1
                        }
                    },
                    resolveItemsDeferred(items) {
                        this._resolveDeferred(this._getTemplatesItems(items))
                    },
                    _collectTemplatesFromItems: items => items.reduce((prev, i) => ({
                        items: prev.items.concat(i.getTemplatesDef()),
                        groups: prev.groups.concat(i.getTemplatesGroups())
                    }), {
                        items: [],
                        groups: []
                    }),
                    _getTemplatesItems(items) {
                        const elements = this._collectTemplatesFromItems(items);
                        const extraItems = this._getExtraTemplatesItems();
                        return {
                            items: extraItems.items.concat(elements.items),
                            groups: extraItems.groups.concat(elements.groups),
                            launchRequest: [extraItems.launchRequest],
                            doneRequest: [extraItems.doneRequest]
                        }
                    },
                    _getExtraTemplatesItems: () => ({
                        items: [],
                        groups: [],
                        launchRequest: () => {},
                        doneRequest: () => {}
                    }),
                    _resolveDeferred(_ref) {
                        let {
                            items: items,
                            launchRequest: launchRequest,
                            doneRequest: doneRequest,
                            groups: groups
                        } = _ref;
                        this._setGroupsVisibility(groups, "hidden");
                        if (this._changesApplying) {
                            this._changesApplying = false;
                            callForEach(doneRequest);
                            return
                        }
                        let syncRendering = true;
                        _deferred.when.apply(this, items).done(() => {
                            if (syncRendering) {
                                this._setGroupsVisibility(groups, "visible");
                                return
                            }
                            callForEach(launchRequest);
                            this._changesApplying = true;
                            const changes = ["LAYOUT", "FULL_RENDER"];
                            if (this._asyncFirstDrawing) {
                                changes.push("FORCE_FIRST_DRAWING");
                                this._asyncFirstDrawing = false
                            } else {
                                changes.push("FORCE_DRAWING")
                            }
                            this._requestChange(changes);
                            this._setGroupsVisibility(groups, "visible")
                        });
                        syncRendering = false
                    },
                    _setGroupsVisibility(groups, visibility) {
                        groups.forEach(g => g.attr({
                            visibility: visibility
                        }))
                    },
                    _applyQueuedOptions() {
                        const queue = this._optionsQueue;
                        this._optionsQueue = null;
                        this.beginUpdate();
                        (0, _iterator.each)(queue, (_, action) => {
                            action()
                        });
                        this.endUpdate()
                    },
                    _requestChange(codes) {
                        this._suspendChanges();
                        this._change(codes);
                        this._resumeChanges()
                    },
                    _applyChanges() {
                        const changes = this._changes;
                        const order = this._totalChangesOrder;
                        const changesOrderLength = order.length;
                        for (let i = 0; i < changesOrderLength; i += 1) {
                            if (changes.has(order[i])) {
                                this["_change_".concat(order[i])]()
                            }
                        }
                    },
                    _optionChangesOrder: ["EVENTS", "THEME", "RENDERER", "RESIZE_HANDLER"],
                    _layoutChangesOrder: ["ELEMENT_ATTR", "CONTAINER_SIZE", "LAYOUT"],
                    _customChangesOrder: ["DISABLED"],
                    _change_EVENTS() {
                        this._eventTrigger.applyChanges()
                    },
                    _change_THEME() {
                        this._setThemeAndRtl()
                    },
                    _change_RENDERER() {
                        this._setRendererOptions()
                    },
                    _change_RESIZE_HANDLER() {
                        this._setupResizeHandler()
                    },
                    _change_ELEMENT_ATTR() {
                        this._renderElementAttributes();
                        this._change(["CONTAINER_SIZE"])
                    },
                    _change_CONTAINER_SIZE() {
                        this._updateSize()
                    },
                    _change_LAYOUT() {
                        this._setContentSize()
                    },
                    _change_DISABLED() {
                        const renderer = this._renderer;
                        const {
                            root: root
                        } = renderer;
                        if (this.option("disabled")) {
                            this._initDisabledState = root.attr("pointer-events");
                            root.attr({
                                "pointer-events": "none",
                                filter: renderer.getGrayScaleFilter().id
                            })
                        } else if ("none" === root.attr("pointer-events")) {
                            root.attr({
                                "pointer-events": (0, _type.isDefined)(this._initDisabledState) ? this._initDisabledState : null,
                                filter: null
                            })
                        }
                    },
                    _themeDependentChanges: ["RENDERER"],
                    _initRenderer() {
                        const rawCanvas = this._calculateRawCanvas();
                        this._canvas = (0, _utils2.floorCanvasDimensions)(rawCanvas);
                        this._renderer = new _renderer2.Renderer({
                            cssClass: "".concat(this._rootClassPrefix, " ").concat(this._rootClass),
                            pathModified: this.option("pathModified"),
                            container: this._$element[0]
                        });
                        this._renderer.resize(this._canvas.width, this._canvas.height)
                    },
                    _disposeRenderer() {
                        this._renderer.dispose()
                    },
                    _disposeGraphicObjects() {
                        Object.keys(this._graphicObjects).forEach(id => {
                            this._graphicObjects[id].dispose()
                        });
                        this._graphicObjects = null
                    },
                    _getAnimationOptions: _common.noop,
                    render() {
                        this._requestChange(["CONTAINER_SIZE"]);
                        const visible = this._isVisible();
                        this._toggleParentsScrollSubscription(visible);
                        !visible && this._stopCurrentHandling()
                    },
                    _toggleParentsScrollSubscription(subscribe) {
                        let $parents = (0, _renderer.default)(this._renderer.root.element).parents();
                        if ("generic" === _devices.default.real().platform) {
                            $parents = $parents.add((0, _window.getWindow)())
                        }
                        this._proxiedTargetParentsScrollHandler = this._proxiedTargetParentsScrollHandler || function() {
                            this._stopCurrentHandling()
                        }.bind(this);
                        _events_engine.default.off((0, _renderer.default)("").add(this._$prevRootParents), "scroll.viz_widgets", this._proxiedTargetParentsScrollHandler);
                        if (subscribe) {
                            _events_engine.default.on($parents, "scroll.viz_widgets", this._proxiedTargetParentsScrollHandler);
                            this._$prevRootParents = $parents
                        }
                    },
                    _stopCurrentHandling: _common.noop,
                    _dispose() {
                        if (this._disposed) {
                            return
                        }
                        this.callBase(...arguments);
                        this._toggleParentsScrollSubscription(false);
                        this._removeResizeHandler();
                        this._layout.dispose();
                        this._eventTrigger.dispose();
                        this._disposeCore();
                        this._disposePlugins();
                        this._disposeGraphicObjects();
                        this._disposeRenderer();
                        this._themeManager.dispose();
                        this._themeManager = null;
                        this._renderer = null;
                        this._eventTrigger = null
                    },
                    _initEventTrigger() {
                        this._eventTrigger = (0, _base_widget.createEventTrigger)(this._eventsMap, (name, actionSettings) => this._createActionByOption(name, actionSettings))
                    },
                    _calculateRawCanvas() {
                        const size = this.option("size") || {};
                        const margin = this.option("margin") || {};
                        const defaultCanvas = this._getDefaultSize() || {};
                        const getSizeOfSide = (size, side, getter) => {
                            if ((value = size[side], (0, _type.isDefined)(value) && value > 0) || !(0, _window.hasWindow)()) {
                                return 0
                            }
                            var value;
                            const elementSize = getter(this._$element);
                            return elementSize <= 1 ? 0 : elementSize
                        };
                        const elementWidth = getSizeOfSide(size, "width", x => (0, _size.getWidth)(x));
                        const elementHeight = getSizeOfSide(size, "height", x => (0, _size.getHeight)(x));
                        let canvas = {
                            width: size.width <= 0 ? 0 : pickPositiveValue([size.width, elementWidth, defaultCanvas.width]),
                            height: size.height <= 0 ? 0 : pickPositiveValue([size.height, elementHeight, defaultCanvas.height]),
                            left: pickPositiveValue([margin.left, defaultCanvas.left]),
                            top: pickPositiveValue([margin.top, defaultCanvas.top]),
                            right: pickPositiveValue([margin.right, defaultCanvas.right]),
                            bottom: pickPositiveValue([margin.bottom, defaultCanvas.bottom])
                        };
                        if (canvas.width - canvas.left - canvas.right <= 0 || canvas.height - canvas.top - canvas.bottom <= 0) {
                            canvas = {
                                width: 0,
                                height: 0
                            }
                        }
                        return canvas
                    },
                    _updateSize() {
                        const rawCanvas = this._calculateRawCanvas();
                        if ((0, _utils2.areCanvasesDifferent)(this._canvas, rawCanvas) || this.__forceRender) {
                            this._canvas = (0, _utils2.floorCanvasDimensions)(rawCanvas);
                            this._recreateSizeDependentObjects(true);
                            this._renderer.resize(this._canvas.width, this._canvas.height);
                            this._change(["LAYOUT"])
                        }
                    },
                    _recreateSizeDependentObjects: _common.noop,
                    _getMinSize: () => [0, 0],
                    _getAlignmentRect: _common.noop,
                    _setContentSize() {
                        const canvas = this._canvas;
                        const layout = this._layout;
                        let rect = canvas.width > 0 && canvas.height > 0 ? [canvas.left, canvas.top, canvas.width - canvas.right, canvas.height - canvas.bottom] : [0, 0, 0, 0];
                        rect = layout.forward(rect, this._getMinSize());
                        const nextRect = this._applySize(rect) || rect;
                        layout.backward(nextRect, this._getAlignmentRect() || nextRect)
                    },
                    _getOption(name, isScalar) {
                        const theme = this._themeManager.theme(name);
                        const option = this.option(name);
                        return isScalar ? void 0 !== option ? option : theme : (0, _extend.extend)(true, {}, theme, option)
                    },
                    _setupResizeHandler() {
                        const redrawOnResize = (0, _utils.parseScalar)(this._getOption("redrawOnResize", true), true);
                        if (this._disposeResizeHandler) {
                            this._removeResizeHandler()
                        }
                        this._disposeResizeHandler = (0, _base_widget.createResizeHandler)(this._$element[0], redrawOnResize, () => this._requestChange(["CONTAINER_SIZE"]))
                    },
                    _removeResizeHandler() {
                        if (this._disposeResizeHandler) {
                            this._disposeResizeHandler();
                            this._disposeResizeHandler = null
                        }
                    },
                    _onBeginUpdate: _common.noop,
                    beginUpdate() {
                        if (this._initialized && this._isUpdateAllowed()) {
                            this._onBeginUpdate();
                            this._suspendChanges()
                        }
                        this.callBase(...arguments);
                        return this
                    },
                    endUpdate() {
                        this.callBase();
                        this._isUpdateAllowed() && this._resumeChanges();
                        return this
                    },
                    option(name) {
                        if (this._initialized && this._applyingChanges && (arguments.length > 1 || (0, _type.isObject)(name))) {
                            this._optionsQueue = this._optionsQueue || [];
                            this._optionsQueue.push(this._getActionForUpdating(arguments))
                        } else {
                            return baseOptionMethod.apply(this, arguments)
                        }
                    },
                    _getActionForUpdating(args) {
                        return () => {
                            baseOptionMethod.apply(this, args)
                        }
                    },
                    _clean: _common.noop,
                    _render: _common.noop,
                    _optionChanged(arg) {
                        if (this._optionChangedLocker) {
                            return
                        }
                        const partialChanges = this.getPartialChangeOptionsName(arg);
                        let changes = [];
                        if (partialChanges.length > 0) {
                            partialChanges.forEach(pc => changes.push(this._partialOptionChangesMap[pc]))
                        } else {
                            changes.push(this._optionChangesMap[arg.name])
                        }
                        changes = changes.filter(c => !!c);
                        if (this._eventTrigger.change(arg.name)) {
                            this._change(["EVENTS"])
                        } else if (changes.length > 0) {
                            this._change(changes)
                        } else {
                            this.callBase.apply(this, arguments)
                        }
                    },
                    _notify: _common.noop,
                    _changesApplied: _common.noop,
                    _optionChangesMap: {
                        size: "CONTAINER_SIZE",
                        margin: "CONTAINER_SIZE",
                        redrawOnResize: "RESIZE_HANDLER",
                        theme: "THEME",
                        rtlEnabled: "THEME",
                        encodeHtml: "THEME",
                        elementAttr: "ELEMENT_ATTR",
                        disabled: "DISABLED"
                    },
                    _partialOptionChangesMap: {},
                    _partialOptionChangesPath: {},
                    getPartialChangeOptionsName(changedOption) {
                        const {
                            fullName: fullName
                        } = changedOption;
                        const sections = fullName.split(/[.]/);
                        const {
                            name: name
                        } = changedOption;
                        const {
                            value: value
                        } = changedOption;
                        const options = this._partialOptionChangesPath[name];
                        const partialChangeOptionsName = [];
                        if (options) {
                            if (true === options) {
                                partialChangeOptionsName.push(name)
                            } else {
                                options.forEach(op => {
                                    fullName.indexOf(op) >= 0 && partialChangeOptionsName.push(op)
                                });
                                if (1 === sections.length) {
                                    if ("object" === (0, _type.type)(value)) {
                                        this._addOptionsNameForPartialUpdate(value, options, partialChangeOptionsName)
                                    } else if ("array" === (0, _type.type)(value)) {
                                        if (value.length > 0 && value.every(item => this._checkOptionsForPartialUpdate(item, options))) {
                                            value.forEach(item => {
                                                this._addOptionsNameForPartialUpdate(item, options, partialChangeOptionsName)
                                            })
                                        }
                                    }
                                }
                            }
                        }
                        return partialChangeOptionsName.filter((value, index, self) => self.indexOf(value) === index)
                    },
                    _checkOptionsForPartialUpdate: (optionObject, options) => !Object.keys(optionObject).some(key => -1 === options.indexOf(key)),
                    _addOptionsNameForPartialUpdate(optionObject, options, partialChangeOptionsName) {
                        const optionKeys = Object.keys(optionObject);
                        if (this._checkOptionsForPartialUpdate(optionObject, options)) {
                            optionKeys.forEach(key => options.indexOf(key) > -1 && partialChangeOptionsName.push(key))
                        }
                    },
                    _visibilityChanged() {
                        this.render()
                    },
                    _setThemeAndRtl() {
                        this._themeManager.setTheme(this.option("theme"), this.option("rtlEnabled"))
                    },
                    _getRendererOptions() {
                        return {
                            rtl: this.option("rtlEnabled"),
                            encodeHtml: this.option("encodeHtml"),
                            animation: this._getAnimationOptions()
                        }
                    },
                    _setRendererOptions() {
                        this._renderer.setOptions(this._getRendererOptions())
                    },
                    svg() {
                        return this._renderer.svg()
                    },
                    getSize() {
                        const canvas = this._canvas || {};
                        return {
                            width: canvas.width,
                            height: canvas.height
                        }
                    },
                    isReady: getFalse,
                    _dataIsReady: getTrue,
                    _resetIsReady() {
                        this.isReady = getFalse
                    },
                    _renderGraphicObjects() {
                        const renderer = this._renderer;
                        const graphics = _m_charts.default.getGraphicObjects();
                        Object.keys(graphics).forEach(id => {
                            if (!this._graphicObjects[id]) {
                                const {
                                    type: type,
                                    colors: colors,
                                    rotationAngle: rotationAngle,
                                    template: template,
                                    width: width,
                                    height: height
                                } = graphics[id];
                                switch (type) {
                                    case "linear":
                                        this._graphicObjects[id] = renderer.linearGradient(colors, id, rotationAngle);
                                        break;
                                    case "radial":
                                        this._graphicObjects[id] = renderer.radialGradient(colors, id);
                                        break;
                                    case "pattern":
                                        this._graphicObjects[id] = renderer.customPattern(id, this._getTemplate(template), width, height)
                                }
                            }
                        })
                    },
                    _drawn() {
                        this.isReady = getFalse;
                        if (this._dataIsReady()) {
                            this._renderer.onEndAnimation(() => {
                                this.isReady = getTrue
                            })
                        }
                        this._eventTrigger("drawn", {})
                    }
                });
                var _default = baseWidget;
                exports.default = _default;
                (0, _helpers.replaceInherit)(baseWidget)
            },
        4096:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/m_chart.js ***!
              \***********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _math = __webpack_require__( /*! ../../core/utils/math */ 60810);
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _crosshair = __webpack_require__( /*! ../../viz/chart_components/crosshair */ 97574);
                var _layout_manager = __webpack_require__( /*! ../../viz/chart_components/layout_manager */ 61189);
                var _multi_axes_synchronizer = _interopRequireDefault(__webpack_require__( /*! ../../viz/chart_components/multi_axes_synchronizer */ 42597));
                var _scroll_bar = __webpack_require__( /*! ../../viz/chart_components/scroll_bar */ 97882);
                var _shutter_zoom = _interopRequireDefault(__webpack_require__( /*! ../../viz/chart_components/shutter_zoom */ 70714));
                var _zoom_and_pan = _interopRequireDefault(__webpack_require__( /*! ../../viz/chart_components/zoom_and_pan */ 59345));
                var _annotations = __webpack_require__( /*! ../../viz/core/annotations */ 77129);
                var _utils = __webpack_require__( /*! ../../viz/core/utils */ 19157);
                var _range_data_calculator = _interopRequireDefault(__webpack_require__( /*! ../../viz/series/helpers/range_data_calculator */ 63407));
                var _range = __webpack_require__( /*! ../../viz/translators/range */ 21177);
                var _utils2 = __webpack_require__( /*! ../../viz/utils */ 34434);
                var _m_advanced_chart = __webpack_require__( /*! ./chart_components/m_advanced_chart */ 41690);
                var _m_base_chart = __webpack_require__( /*! ./chart_components/m_base_chart */ 14107);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const DEFAULT_PANES = [{
                    name: "default",
                    border: {}
                }];
                const {
                    isArray: isArray
                } = Array;

                function changeVisibilityAxisGrids(axis, gridVisibility, minorGridVisibility) {
                    const gridOpt = axis.getOptions().grid;
                    const minorGridOpt = axis.getOptions().minorGrid;
                    gridOpt.visible = gridVisibility;
                    minorGridOpt && (minorGridOpt.visible = minorGridVisibility)
                }

                function compareAxes(a, b) {
                    return a.priority - b.priority
                }

                function doesPaneExist(panes, paneName) {
                    let found = false;
                    (0, _iterator.each)(panes, (_, pane) => {
                        if (pane.name === paneName) {
                            found = true;
                            return false
                        }
                        return
                    });
                    return found
                }

                function accumulate(field, src1, src2, auxSpacing) {
                    const val1 = src1[field] || 0;
                    const val2 = src2[field] || 0;
                    return val1 + val2 + (val1 && val2 ? auxSpacing : 0)
                }

                function pickMax(field, src1, src2) {
                    return pickMaxValue(src1[field], src2[field])
                }

                function pickMaxValue(val1, val2) {
                    return Math.max(val1 || 0, val2 || 0)
                }

                function getAxisMargins(axis) {
                    return axis.getMargins()
                }

                function getHorizontalAxesMargins(axes, getMarginsFunc) {
                    return axes.reduce((margins, axis) => {
                        var _a;
                        const axisMargins = getMarginsFunc(axis);
                        const paneMargins = margins.panes[axis.pane] = margins.panes[axis.pane] || {};
                        const spacing = axis.getMultipleAxesSpacing();
                        paneMargins.top = accumulate("top", paneMargins, axisMargins, spacing);
                        paneMargins.bottom = accumulate("bottom", paneMargins, axisMargins, spacing);
                        paneMargins.left = pickMax("left", paneMargins, axisMargins);
                        paneMargins.right = pickMax("right", paneMargins, axisMargins);
                        margins.top = pickMax("top", paneMargins, margins);
                        margins.bottom = pickMax("bottom", paneMargins, margins);
                        margins.left = pickMax("left", paneMargins, margins);
                        margins.right = pickMax("right", paneMargins, margins);
                        const orthogonalAxis = null === (_a = axis.getOrthogonalAxis) || void 0 === _a ? void 0 : _a.call(axis);
                        const shouldResetPositionMargin = (null === orthogonalAxis || void 0 === orthogonalAxis ? void 0 : orthogonalAxis.customPositionIsAvailable()) && (!axis.customPositionIsBoundaryOrthogonalAxis() || !orthogonalAxis.customPositionEqualsToPredefined());
                        if (shouldResetPositionMargin) {
                            margins[orthogonalAxis.getResolvedBoundaryPosition()] = 0
                        }
                        return margins
                    }, {
                        panes: {}
                    })
                }

                function getVerticalAxesMargins(axes) {
                    return axes.reduce((margins, axis) => {
                        const axisMargins = axis.getMargins();
                        const paneMargins = margins.panes[axis.pane] = margins.panes[axis.pane] || {};
                        const spacing = axis.getMultipleAxesSpacing();
                        paneMargins.top = pickMax("top", paneMargins, axisMargins);
                        paneMargins.bottom = pickMax("bottom", paneMargins, axisMargins);
                        paneMargins.left = accumulate("left", paneMargins, axisMargins, spacing);
                        paneMargins.right = accumulate("right", paneMargins, axisMargins, spacing);
                        margins.top = pickMax("top", paneMargins, margins);
                        margins.bottom = pickMax("bottom", paneMargins, margins);
                        margins.left = pickMax("left", paneMargins, margins);
                        margins.right = pickMax("right", paneMargins, margins);
                        return margins
                    }, {
                        panes: {}
                    })
                }

                function performActionOnAxes(axes, action, actionArgument1, actionArgument2, actionArgument3) {
                    axes.forEach(axis => {
                        axis[action](null === actionArgument1 || void 0 === actionArgument1 ? void 0 : actionArgument1[axis.pane], (null === actionArgument2 || void 0 === actionArgument2 ? void 0 : actionArgument2[axis.pane]) || actionArgument2, actionArgument3)
                    })
                }

                function shrinkCanvases(isRotated, canvases, sizes, verticalMargins, horizontalMargins) {
                    function getMargin(side, margins, pane) {
                        const m = !(isRotated ? ["left", "right"] : ["top", "bottom"]).includes(side) ? margins : margins.panes[pane] || {};
                        return m[side]
                    }

                    function getMaxMargin(side, margins1, margins2, pane) {
                        return pickMaxValue(getMargin(side, margins1, pane), getMargin(side, margins2, pane))
                    }
                    const getOriginalField = field => "original".concat(field[0].toUpperCase()).concat(field.slice(1));

                    function shrink(canvases, paneNames, sizeField, startMargin, endMargin, oppositeMargins) {
                        paneNames = paneNames.sort((p1, p2) => canvases[p2][startMargin] - canvases[p1][startMargin]);
                        paneNames.forEach(pane => {
                            const canvas = canvases[pane];
                            oppositeMargins.forEach(margin => {
                                canvas[margin] = canvas[getOriginalField(margin)] + getMaxMargin(margin, verticalMargins, horizontalMargins, pane)
                            })
                        });
                        const firstPane = canvases[paneNames[0]];
                        const initialEmptySpace = firstPane[sizeField] - firstPane[getOriginalField(endMargin)] - canvases[paneNames.at(-1)][getOriginalField(startMargin)];
                        let emptySpace = paneNames.reduce((space, paneName) => {
                            const maxStartMargin = getMaxMargin(startMargin, verticalMargins, horizontalMargins, paneName);
                            const maxEndMargin = getMaxMargin(endMargin, verticalMargins, horizontalMargins, paneName);
                            return space - maxStartMargin - maxEndMargin
                        }, initialEmptySpace) - _utils.PANE_PADDING * (paneNames.length - 1);
                        emptySpace -= Object.keys(sizes).reduce((prev, key) => {
                            const currentHeight = !(0, _utils.isRelativeHeightPane)(sizes[key]) ? sizes[key].height : 0;
                            return prev + currentHeight
                        }, 0);
                        const initialOffset = firstPane[sizeField] - firstPane[getOriginalField(endMargin)] - (emptySpace < 0 ? emptySpace : 0);
                        paneNames.reduce((offset, pane) => {
                            const canvas = canvases[pane];
                            const paneSize = sizes[pane];
                            offset -= getMaxMargin(endMargin, verticalMargins, horizontalMargins, pane);
                            canvas[endMargin] = firstPane[sizeField] - offset;
                            offset -= !(0, _utils.isRelativeHeightPane)(paneSize) ? paneSize.height : Math.floor(emptySpace * paneSize.height);
                            canvas[startMargin] = offset;
                            offset -= getMaxMargin(startMargin, verticalMargins, horizontalMargins, pane) + _utils.PANE_PADDING;
                            return offset
                        }, initialOffset)
                    }
                    const paneNames = Object.keys(canvases);
                    if (!isRotated) {
                        shrink(canvases, paneNames, "height", "top", "bottom", ["left", "right"])
                    } else {
                        shrink(canvases, paneNames, "width", "left", "right", ["top", "bottom"])
                    }
                    return canvases
                }

                function drawAxesWithTicks(axes, condition, canvases, panesBorderOptions) {
                    if (condition) {
                        performActionOnAxes(axes, "createTicks", canvases);
                        _multi_axes_synchronizer.default.synchronize(axes)
                    }
                    performActionOnAxes(axes, "draw", !condition && canvases, panesBorderOptions)
                }

                function shiftAxis(side1, side2) {
                    const shifts = {};
                    return function(axis) {
                        if (!axis.customPositionIsAvailable() || axis.customPositionEqualsToPredefined()) {
                            const shift = shifts[axis.pane] = shifts[axis.pane] || {
                                top: 0,
                                left: 0,
                                bottom: 0,
                                right: 0
                            };
                            const spacing = axis.getMultipleAxesSpacing();
                            const margins = axis.getMargins();
                            axis.shift(shift);
                            shift[side1] = accumulate(side1, shift, margins, spacing);
                            shift[side2] = accumulate(side2, shift, margins, spacing)
                        } else {
                            axis.shift({
                                top: 0,
                                left: 0,
                                bottom: 0,
                                right: 0
                            })
                        }
                    }
                }

                function getCommonSize(side, margins) {
                    let size = 0;
                    let paneMargins;
                    Object.keys(margins.panes).forEach(pane => {
                        paneMargins = margins.panes[pane];
                        size += "height" === side ? paneMargins.top + paneMargins.bottom : paneMargins.left + paneMargins.right
                    });
                    return size
                }

                function checkUsedSpace(sizeShortage, side, axes, getMarginFunc) {
                    let size = 0;
                    if (sizeShortage[side] > 0) {
                        size = getCommonSize(side, getMarginFunc(axes, getAxisMargins));
                        performActionOnAxes(axes, "hideTitle");
                        sizeShortage[side] -= size - getCommonSize(side, getMarginFunc(axes, getAxisMargins))
                    }
                    if (sizeShortage[side] > 0) {
                        performActionOnAxes(axes, "hideOuterElements")
                    }
                }
                const isOverlay = (currentPoint, overlayPoint, pointRadius) => {
                    const pointHitsLeftBorder = overlayPoint.x - pointRadius <= currentPoint.x;
                    const pointHitsRightBorder = overlayPoint.x + pointRadius >= currentPoint.x;
                    const pointHitsTopBorder = overlayPoint.y - pointRadius <= currentPoint.y;
                    const pointHitsBottomBorder = overlayPoint.y + pointRadius >= currentPoint.y;
                    const isPointOverlappedHorizontally = pointHitsLeftBorder && pointHitsRightBorder;
                    const isPointOverlappedVertically = pointHitsTopBorder && pointHitsBottomBorder;
                    return isPointOverlappedHorizontally && isPointOverlappedVertically
                };
                const isPointOverlapped = (currentPoint, points, skipSamePointsComparing) => {
                    const radiusPoint = currentPoint.getOptions().size / 2;
                    for (let i = 0; i < points.length; i += 1) {
                        if (!skipSamePointsComparing) {
                            const isXCoordinateSame = points[i].x === currentPoint.x;
                            const isYCoordinateSame = points[i].y === currentPoint.y;
                            if (isXCoordinateSame && isYCoordinateSame) {
                                continue
                            }
                        }
                        if (isOverlay(currentPoint, points[i], radiusPoint)) {
                            return true
                        }
                    }
                    return false
                };
                const dxChart = _m_advanced_chart.AdvancedChart.inherit({
                    _themeSection: "chart",
                    _fontFields: ["crosshair.label.font"],
                    _initCore() {
                        this.paneAxis = {};
                        this.callBase()
                    },
                    _init() {
                        this._containerInitialHeight = (0, _window.hasWindow)() ? (0, _size.getHeight)(this._$element) : 0;
                        this.callBase()
                    },
                    _correctAxes() {
                        this._correctValueAxes(true)
                    },
                    _setDeprecatedOptions() {
                        this.callBase();
                        (0, _extend2.extend)(this._deprecatedOptions, {
                            "argumentAxis.aggregateByCategory": {
                                since: "23.1",
                                message: "Use the aggregation.enabled property"
                            }
                        })
                    },
                    _getExtraOptions: _common.noop,
                    _createPanes() {
                        let panes = this.option("panes");
                        let panesNameCounter = 0;
                        let defaultPane;
                        if (!panes || isArray(panes) && !panes.length) {
                            panes = DEFAULT_PANES
                        }
                        this.callBase();
                        defaultPane = this.option("defaultPane");
                        panes = (0, _extend2.extend)(true, [], isArray(panes) ? panes : [panes]);
                        (0, _iterator.each)(panes, (_, pane) => {
                            pane.name = !(0, _type.isDefined)(pane.name) ? "default" + panesNameCounter++ : pane.name
                        });
                        if ((0, _type.isDefined)(defaultPane)) {
                            if (!doesPaneExist(panes, defaultPane)) {
                                this._incidentOccurred("W2101", [defaultPane]);
                                defaultPane = panes[panes.length - 1].name
                            }
                        } else {
                            defaultPane = panes[panes.length - 1].name
                        }
                        this.defaultPane = defaultPane;
                        panes = this._isRotated() ? panes.reverse() : panes;
                        return panes
                    },
                    _getAxisRenderingOptions: () => ({
                        axisType: "xyAxes",
                        drawingType: "linear"
                    }),
                    _prepareAxisOptions(typeSelector, userOptions, rotated) {
                        return {
                            isHorizontal: "argumentAxis" === typeSelector !== rotated,
                            containerColor: this._themeManager.getOptions("containerBackgroundColor")
                        }
                    },
                    _checkPaneName(seriesTheme) {
                        const paneList = (0, _utils.map)(this.panes, pane => pane.name);
                        seriesTheme.pane = seriesTheme.pane || this.defaultPane;
                        return paneList.includes(seriesTheme.pane)
                    },
                    _initCustomPositioningAxes() {
                        const argumentAxis = this.getArgumentAxis();
                        const valueAxisName = argumentAxis.getOptions().customPositionAxis;
                        const valueAxis = this._valueAxes.find(v => v.pane === argumentAxis.pane && (!valueAxisName || valueAxisName === v.name));
                        this._valueAxes.forEach(v => {
                            if (argumentAxis !== v.getOrthogonalAxis()) {
                                v.getOrthogonalAxis = () => argumentAxis;
                                v.customPositionIsBoundaryOrthogonalAxis = () => argumentAxis.customPositionIsBoundary()
                            }
                        });
                        if ((0, _type.isDefined)(valueAxis) && valueAxis !== argumentAxis.getOrthogonalAxis()) {
                            argumentAxis.getOrthogonalAxis = () => valueAxis;
                            argumentAxis.customPositionIsBoundaryOrthogonalAxis = () => this._valueAxes.some(v => v.customPositionIsBoundary())
                        } else if ((0, _type.isDefined)(argumentAxis.getOrthogonalAxis()) && !(0, _type.isDefined)(valueAxis)) {
                            argumentAxis.getOrthogonalAxis = _common.noop
                        }
                    },
                    _getAllAxes() {
                        return this._argumentAxes.concat(this._valueAxes)
                    },
                    _resetAxesAnimation(isFirstDrawing, isHorizontal) {
                        let axes;
                        if ((0, _type.isDefined)(isHorizontal)) {
                            axes = isHorizontal ^ this._isRotated() ? this._argumentAxes : this._valueAxes
                        } else {
                            axes = this._getAllAxes()
                        }
                        axes.forEach(a => {
                            a.resetApplyingAnimation(isFirstDrawing)
                        })
                    },
                    _axesBoundaryPositioning() {
                        const allAxes = this._getAllAxes();
                        let boundaryStateChanged = false;
                        allAxes.forEach(a => {
                            if (!a.customPositionIsAvailable()) {
                                return
                            }
                            const prevBoundaryState = a.customPositionIsBoundary();
                            a._customBoundaryPosition = a.getCustomBoundaryPosition();
                            boundaryStateChanged = boundaryStateChanged || prevBoundaryState !== a.customPositionIsBoundary()
                        });
                        return boundaryStateChanged
                    },
                    _getCrosshairMargins() {
                        const crosshairOptions = this._getCrosshairOptions() || {};
                        const crosshairEnabled = crosshairOptions.enabled;
                        const margins = (0, _crosshair.getMargins)();
                        const horizontalLabel = (0, _extend2.extend)(true, {}, crosshairOptions.label, crosshairOptions.horizontalLine.label);
                        const verticalLabel = (0, _extend2.extend)(true, {}, crosshairOptions.label, crosshairOptions.verticalLine.label);
                        return {
                            x: crosshairEnabled && crosshairOptions.horizontalLine.visible && horizontalLabel.visible ? margins.x : 0,
                            y: crosshairEnabled && crosshairOptions.verticalLine.visible && verticalLabel.visible ? margins.y : 0
                        }
                    },
                    _getValueAxis(paneName, axisName) {
                        const valueAxes = this._valueAxes;
                        const valueAxisOptions = this.option("valueAxis") || {};
                        const valueAxesOptions = isArray(valueAxisOptions) ? valueAxisOptions : [valueAxisOptions];
                        const rotated = this._isRotated();
                        const crosshairMargins = this._getCrosshairMargins();
                        let axisOptions;
                        let axis;
                        axisName = axisName || function(axes, paneName, defaultPane) {
                            let result;
                            for (let i = 0; i < axes.length; i += 1) {
                                if (axes[i].pane === paneName || void 0 === axes[i].pane && paneName === defaultPane) {
                                    result = axes[i].name;
                                    break
                                }
                            }
                            if (!result) {
                                result = axes[0].name
                            }
                            return result
                        }(valueAxes, paneName, this.defaultPane);
                        axis = function findAxis(paneName, axisName, axes) {
                            const axisByName = axes.find(axis => axis.name === axisName && axis.pane === paneName);
                            if (axisByName) {
                                return axisByName
                            }
                            if (paneName) {
                                return findAxis(void 0, axisName, axes)
                            }
                        }(paneName, axisName, valueAxes);
                        if (!axis) {
                            axisOptions = function(valueAxes, valueAxesOptions, axisName) {
                                let result;
                                let axInd;
                                for (axInd = 0; axInd < valueAxesOptions.length; axInd += 1) {
                                    if (valueAxesOptions[axInd].name === axisName) {
                                        result = valueAxesOptions[axInd];
                                        result.priority = axInd;
                                        break
                                    }
                                }
                                if (!result) {
                                    for (axInd = 0; axInd < valueAxes.length; axInd += 1) {
                                        if (valueAxes[axInd].name === axisName) {
                                            result = valueAxes[axInd].getOptions();
                                            result.priority = valueAxes[axInd].priority;
                                            break
                                        }
                                    }
                                }
                                return result
                            }(valueAxes, valueAxesOptions, axisName);
                            if (!axisOptions) {
                                this._incidentOccurred("W2102", [axisName]);
                                axisOptions = {
                                    name: axisName,
                                    priority: valueAxes.length
                                }
                            }
                            axis = this._createAxis(false, this._populateAxesOptions("valueAxis", axisOptions, {
                                pane: paneName,
                                name: axisName,
                                optionPath: isArray(valueAxisOptions) ? "valueAxis[".concat(axisOptions.priority, "]") : "valueAxis",
                                crosshairMargin: rotated ? crosshairMargins.y : crosshairMargins.x
                            }, rotated));
                            axis.applyVisualRangeSetter(this._getVisualRangeSetter());
                            valueAxes.push(axis)
                        }
                        axis.setPane(paneName);
                        return axis
                    },
                    _correctValueAxes(needHideGrids) {
                        const synchronizeMultiAxes = this._themeManager.getOptions("synchronizeMultiAxes");
                        const valueAxes = this._valueAxes;
                        const paneWithAxis = {};
                        this.series.forEach(series => {
                            const axis = series.getValueAxis();
                            paneWithAxis[axis.pane] = true
                        });
                        this.panes.forEach(pane => {
                            const paneName = pane.name;
                            if (!paneWithAxis[paneName]) {
                                this._getValueAxis(paneName)
                            }
                            if (needHideGrids && synchronizeMultiAxes) {
                                ! function(axesForPane) {
                                    let axisShown = false;
                                    const hiddenStubAxis = [];
                                    const minorGridVisibility = axesForPane.some(axis => {
                                        const minorGridOptions = axis.getOptions().minorGrid;
                                        return null === minorGridOptions || void 0 === minorGridOptions ? void 0 : minorGridOptions.visible
                                    });
                                    const gridVisibility = axesForPane.some(axis => {
                                        const gridOptions = axis.getOptions().grid;
                                        return null === gridOptions || void 0 === gridOptions ? void 0 : gridOptions.visible
                                    });
                                    if (axesForPane.length > 1) {
                                        axesForPane.forEach(axis => {
                                            const gridOpt = axis.getOptions().grid;
                                            if (axisShown) {
                                                changeVisibilityAxisGrids(axis, false, false)
                                            } else if (null === gridOpt || void 0 === gridOpt ? void 0 : gridOpt.visible) {
                                                if (axis.getTranslator().getBusinessRange().isEmpty()) {
                                                    changeVisibilityAxisGrids(axis, false, false);
                                                    hiddenStubAxis.push(axis)
                                                } else {
                                                    axisShown = true;
                                                    changeVisibilityAxisGrids(axis, gridVisibility, minorGridVisibility)
                                                }
                                            }
                                        });
                                        if (!axisShown && hiddenStubAxis.length) {
                                            changeVisibilityAxisGrids(hiddenStubAxis[0], gridVisibility, minorGridVisibility)
                                        }
                                    }
                                }(valueAxes.filter(axis => axis.pane === paneName))
                            }
                        });
                        this._valueAxes = valueAxes.filter(axis => {
                            if (!axis.pane) {
                                axis.setPane(this.defaultPane)
                            }
                            const paneExists = doesPaneExist(this.panes, axis.pane);
                            if (!paneExists) {
                                axis.dispose();
                                axis = null
                            }
                            return paneExists
                        }).sort(compareAxes);
                        const defaultAxis = this.getValueAxis();
                        this._valueAxes.forEach(axis => {
                            const {
                                optionPath: optionPath
                            } = axis.getOptions();
                            if (optionPath) {
                                const axesWithSamePath = this._valueAxes.filter(a => a.getOptions().optionPath === optionPath);
                                if (axesWithSamePath.length > 1) {
                                    if (axesWithSamePath.some(a => a === defaultAxis)) {
                                        axesWithSamePath.forEach(a => {
                                            if (a !== defaultAxis) {
                                                a.getOptions().optionPath = null
                                            }
                                        })
                                    } else {
                                        axesWithSamePath.forEach((a, i) => {
                                            if (0 !== i) {
                                                a.getOptions().optionPath = null
                                            }
                                        })
                                    }
                                }
                            }
                        })
                    },
                    _getSeriesForPane(paneName) {
                        const paneSeries = [];
                        (0, _iterator.each)(this.series, (_, oneSeries) => {
                            if (oneSeries.pane === paneName) {
                                paneSeries.push(oneSeries)
                            }
                        });
                        return paneSeries
                    },
                    _createPanesBorderOptions() {
                        const commonBorderOptions = this._themeManager.getOptions("commonPaneSettings").border;
                        const panesBorderOptions = {};
                        this.panes.forEach(pane => {
                            panesBorderOptions[pane.name] = (0, _extend2.extend)(true, {}, commonBorderOptions, pane.border)
                        });
                        return panesBorderOptions
                    },
                    _createScrollBar() {
                        var _a;
                        const scrollBarOptions = this._themeManager.getOptions("scrollBar") || {};
                        const scrollBarGroup = this._scrollBarGroup;
                        if (scrollBarOptions.visible) {
                            scrollBarOptions.rotated = this._isRotated();
                            this._scrollBar = (this._scrollBar || new _scroll_bar.ScrollBar(this._renderer, scrollBarGroup)).update(scrollBarOptions)
                        } else {
                            scrollBarGroup.linkRemove();
                            null === (_a = this._scrollBar) || void 0 === _a ? void 0 : _a.dispose();
                            this._scrollBar = null
                        }
                    },
                    _executeAppendAfterSeries(append) {
                        append()
                    },
                    _prepareToRender() {
                        const panesBorderOptions = this._createPanesBorderOptions();
                        this._createPanesBackground();
                        this._appendAxesGroups();
                        this._adjustViewport();
                        return panesBorderOptions
                    },
                    _adjustViewport() {
                        const adjustOnZoom = this._themeManager.getOptions("adjustOnZoom");
                        if (!adjustOnZoom) {
                            return
                        }
                        this._valueAxes.forEach(axis => axis.adjust())
                    },
                    _recreateSizeDependentObjects(isCanvasChanged) {
                        const series = this._getVisibleSeries();
                        const useAggregation = series.some(s => s.useAggregation());
                        const zoomChanged = this._isZooming();
                        if (!useAggregation) {
                            return
                        }
                        this._argumentAxes.forEach(axis => {
                            axis.updateCanvas(this._canvas, true)
                        });
                        series.forEach(series => {
                            if (series.useAggregation() && (isCanvasChanged || zoomChanged || !series._useAllAggregatedPoints)) {
                                series.createPoints()
                            }
                        });
                        this._processSeriesFamilies()
                    },
                    _isZooming() {
                        const argumentAxis = this.getArgumentAxis();
                        if (!(null === argumentAxis || void 0 === argumentAxis ? void 0 : argumentAxis.getTranslator())) {
                            return false
                        }
                        const businessRange = argumentAxis.getTranslator().getBusinessRange();
                        const zoomRange = argumentAxis.getViewport();
                        let min = zoomRange ? zoomRange.min : 0;
                        let max = zoomRange ? zoomRange.max : 0;
                        if ("logarithmic" === businessRange.axisType) {
                            min = (0, _utils.getLog)(min, businessRange.base);
                            max = (0, _utils.getLog)(max, businessRange.base)
                        }
                        const viewportDistance = "discrete" === businessRange.axisType ? (0, _utils.getCategoriesInfo)(businessRange.categories, min, max).categories.length : Math.abs(max - min);
                        let precision = (0, _math.getPrecision)(viewportDistance);
                        precision = precision > 1 ? 10 ** (precision - 2) : 1;
                        const zoomChanged = Math.round((this._zoomLength - viewportDistance) * precision) / precision !== 0;
                        this._zoomLength = viewportDistance;
                        return zoomChanged
                    },
                    _handleSeriesDataUpdated() {
                        const viewport = new _range.Range;
                        this.series.forEach(s => {
                            viewport.addRange(s.getArgumentRange())
                        });
                        this._argumentAxes.forEach(axis => {
                            axis.updateCanvas(this._canvas, true);
                            axis.setBusinessRange(viewport, this._axesReinitialized)
                        });
                        this.callBase()
                    },
                    _isLegendInside() {
                        return this._legend && "inside" === this._legend.getPosition()
                    },
                    _isRotated() {
                        return this._themeManager.getOptions("rotated")
                    },
                    _getLayoutTargets() {
                        return this.panes
                    },
                    _applyClipRects(panesBorderOptions) {
                        this._drawPanesBorders(panesBorderOptions);
                        this._createClipRectsForPanes();
                        this._applyClipRectsForAxes();
                        this._fillPanesBackground()
                    },
                    _updateLegendPosition(drawOptions, legendHasInsidePosition) {
                        if (drawOptions.drawLegend && this._legend && legendHasInsidePosition) {
                            const {
                                panes: panes
                            } = this;
                            const newCanvas = (0, _extend2.extend)({}, panes[0].canvas);
                            const layoutManager = new _layout_manager.LayoutManager;
                            newCanvas.right = panes[panes.length - 1].canvas.right;
                            newCanvas.bottom = panes[panes.length - 1].canvas.bottom;
                            layoutManager.layoutInsideLegend(this._legend, newCanvas)
                        }
                    },
                    _allowLegendInsidePosition: () => true,
                    _applyExtraSettings(series) {
                        const paneIndex = this._getPaneIndex(series.pane);
                        const panesClipRects = this._panesClipRects;
                        const wideClipRect = panesClipRects.wide[paneIndex];
                        series.setClippingParams(panesClipRects.base[paneIndex].id, null === wideClipRect || void 0 === wideClipRect ? void 0 : wideClipRect.id, this._getPaneBorderVisibility(paneIndex))
                    },
                    _updatePanesCanvases(drawOptions) {
                        if (!drawOptions.recreateCanvas) {
                            return
                        }(0, _utils.updatePanesCanvases)(this.panes, this._canvas, this._isRotated())
                    },
                    _normalizePanesHeight() {
                        (0, _utils.normalizePanesHeight)(this.panes)
                    },
                    _renderScaleBreaks() {
                        this._valueAxes.concat(this._argumentAxes).forEach(axis => {
                            axis.drawScaleBreaks()
                        })
                    },
                    _getArgFilter() {
                        return _range_data_calculator.default.getViewPortFilter(this.getArgumentAxis().visualRange() || {})
                    },
                    _hidePointsForSingleSeriesIfNeeded(series) {
                        const seriesPoints = series.getPoints();
                        let overlappedPointsCount = 0;
                        for (let i = 0; i < seriesPoints.length; i += 1) {
                            const currentPoint = seriesPoints[i];
                            const overlappingPoints = seriesPoints.slice(i + 1);
                            overlappedPointsCount += Number(isPointOverlapped(currentPoint, overlappingPoints));
                            if (overlappedPointsCount > seriesPoints.length / 2) {
                                series.autoHidePointMarkers = true;
                                break
                            }
                        }
                    },
                    _applyAutoHidePointMarkers(filteredSeries) {
                        let overlappingPoints = [];
                        const overlappedPointsCalculator = (pointsCount, currentPoint) => pointsCount + isPointOverlapped(currentPoint, overlappingPoints, true);
                        for (let i = filteredSeries.length - 1; i >= 0; i -= 1) {
                            const currentSeries = filteredSeries[i];
                            if (!currentSeries.autoHidePointMarkersEnabled()) {
                                continue
                            }
                            currentSeries.autoHidePointMarkers = false;
                            this._hidePointsForSingleSeriesIfNeeded(currentSeries);
                            if (!currentSeries.autoHidePointMarkers) {
                                const seriesPoints = currentSeries.getPoints();
                                const overlappingPointsCount = seriesPoints.reduce(overlappedPointsCalculator, 0);
                                if (overlappingPointsCount < seriesPoints.length) {
                                    overlappingPoints = overlappingPoints.concat(seriesPoints)
                                } else {
                                    currentSeries.autoHidePointMarkers = true
                                }
                            }
                        }
                    },
                    _applyPointMarkersAutoHiding() {
                        const allSeries = this.series;
                        if (!this._themeManager.getOptions("autoHidePointMarkers")) {
                            allSeries.forEach(s => {
                                s.autoHidePointMarkers = false
                            });
                            return
                        }
                        this.panes.forEach(_ref => {
                            let {
                                borderCoords: borderCoords,
                                name: name
                            } = _ref;
                            const series = allSeries.filter(s => s.pane === name && s.usePointsToDefineAutoHiding());
                            series.forEach(singleSeries => {
                                singleSeries.prepareCoordinatesForPoints()
                            });
                            const argAxis = this.getArgumentAxis();
                            const markersInfo = function(allSeries, filteredSeries, argAxis) {
                                const series = [];
                                const overloadedSeries = {};
                                const argVisualRange = argAxis.visualRange();
                                const argTranslator = argAxis.getTranslator();
                                const argViewPortFilter = _range_data_calculator.default.getViewPortFilter(argVisualRange || {});
                                filteredSeries.forEach(s => {
                                    const valAxis = s.getValueAxis();
                                    const valVisualRange = valAxis.getCanvasRange();
                                    const valTranslator = valAxis.getTranslator();
                                    const seriesIndex = allSeries.indexOf(s);
                                    const valViewPortFilter = _range_data_calculator.default.getViewPortFilter(valVisualRange || {});
                                    overloadedSeries[seriesIndex] = {};
                                    filteredSeries.forEach(sr => {
                                        overloadedSeries[seriesIndex][allSeries.indexOf(sr)] = 0
                                    });
                                    const seriesPoints = [];
                                    const pointsInViewport = s.getPoints().filter(p => p.getOptions().visible && argViewPortFilter(p.argument) && (valViewPortFilter(p.getMinValue(true)) || valViewPortFilter(p.getMaxValue(true))));
                                    pointsInViewport.forEach(p => {
                                        const tp = {
                                            seriesIndex: seriesIndex,
                                            argument: p.argument,
                                            value: p.getMaxValue(true),
                                            size: p.bubbleSize || p.getOptions().size,
                                            x: void 0,
                                            y: void 0
                                        };
                                        if (p.getMinValue(true) !== p.getMaxValue(true)) {
                                            const mp = (0, _extend2.extend)({}, tp);
                                            mp.value = p.getMinValue(true);
                                            mp.x = argTranslator.to(mp.argument, 1);
                                            mp.y = valTranslator.to(mp.value, 1);
                                            seriesPoints.push(mp)
                                        }
                                        tp.x = argTranslator.to(tp.argument, 1);
                                        tp.y = valTranslator.to(tp.value, 1);
                                        seriesPoints.push(tp)
                                    });
                                    overloadedSeries[seriesIndex].pointsCount = seriesPoints.length;
                                    overloadedSeries[seriesIndex].total = 0;
                                    overloadedSeries[seriesIndex].continuousSeries = 0;
                                    series.push({
                                        name: s.name,
                                        index: seriesIndex,
                                        points: seriesPoints
                                    })
                                });
                                return {
                                    series: series,
                                    overloadedSeries: overloadedSeries
                                }
                            }(allSeries, series, argAxis);
                            ! function(canvas, markersInfo, series) {
                                const area = canvas.width * canvas.height;
                                const seriesPoints = markersInfo.series;
                                for (let i = seriesPoints.length - 1; i >= 0; i -= 1) {
                                    const currentSeries = series.filter(s => s.name === seriesPoints[i].name)[0];
                                    const {
                                        points: points
                                    } = seriesPoints[i];
                                    const pointSize = points.length ? points[0].size : 0;
                                    const pointsArea = pointSize * pointSize * points.length;
                                    if (currentSeries.autoHidePointMarkersEnabled() && pointsArea >= area / seriesPoints.length) {
                                        const {
                                            index: index
                                        } = seriesPoints[i];
                                        currentSeries.autoHidePointMarkers = true;
                                        seriesPoints.splice(i, 1);
                                        series.splice(series.indexOf(currentSeries), 1);
                                        markersInfo.overloadedSeries[index] = null
                                    }
                                }
                            }(borderCoords, markersInfo, series);
                            if (markersInfo.series.length) {
                                const argVisualRange = argAxis.visualRange();
                                const argAxisIsDiscrete = "discrete" === argAxis.getOptions().type;
                                const sortingCallback = argAxisIsDiscrete ? (p1, p2) => argVisualRange.categories.indexOf(p1.argument) - argVisualRange.categories.indexOf(p2.argument) : (p1, p2) => p1.argument - p2.argument;
                                let points = [];
                                markersInfo.series.forEach(s => {
                                    points = points.concat(s.points)
                                });
                                points.sort(sortingCallback);
                                ! function(points, overloadedSeries) {
                                    let isContinuousSeries = false;
                                    for (let i = 0; i < points.length - 1; i += 1) {
                                        const curPoint = points[i];
                                        const {
                                            size: size
                                        } = curPoint;
                                        if ((0, _type.isDefined)(curPoint.x) && (0, _type.isDefined)(curPoint.y)) {
                                            for (let j = i + 1; j < points.length; j += 1) {
                                                const nextPoint = points[j];
                                                const nextX = null === nextPoint || void 0 === nextPoint ? void 0 : nextPoint.x;
                                                const nextY = null === nextPoint || void 0 === nextPoint ? void 0 : nextPoint.y;
                                                if (!(0, _type.isDefined)(nextX) || Math.abs(curPoint.x - nextX) >= size) {
                                                    isContinuousSeries = isContinuousSeries && j !== i + 1;
                                                    break
                                                } else {
                                                    const distance = (0, _type.isDefined)(nextX) && (0, _type.isDefined)(nextY) && Math.sqrt((curPoint.x - nextX) ** 2 + (curPoint.y - nextY) ** 2);
                                                    if (distance && distance < size) {
                                                        overloadedSeries[curPoint.seriesIndex][nextPoint.seriesIndex] += 1;
                                                        overloadedSeries[curPoint.seriesIndex].total += 1;
                                                        if (!isContinuousSeries) {
                                                            overloadedSeries[curPoint.seriesIndex].continuousSeries += 1;
                                                            isContinuousSeries = true
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }(points, markersInfo.overloadedSeries);
                                this._applyAutoHidePointMarkers(series)
                            }
                        })
                    },
                    _renderAxes(drawOptions, panesBorderOptions) {
                        function calculateTitlesWidth(axes) {
                            return axes.map(axis => {
                                if (!axis.getTitle) {
                                    return 0
                                }
                                const title = axis.getTitle();
                                return title ? title.bBox.width : 0
                            })
                        }
                        const rotated = this._isRotated();
                        const synchronizeMultiAxes = this._themeManager.getOptions("synchronizeMultiAxes");
                        const scrollBar = this._scrollBar ? [this._scrollBar] : [];
                        const extendedArgAxes = this._isArgumentAxisBeforeScrollBar() ? this._argumentAxes.concat(scrollBar) : scrollBar.concat(this._argumentAxes);
                        const verticalAxes = rotated ? this._argumentAxes : this._valueAxes;
                        const verticalElements = rotated ? extendedArgAxes : this._valueAxes;
                        const horizontalAxes = rotated ? this._valueAxes : this._argumentAxes;
                        const horizontalElements = rotated ? this._valueAxes : extendedArgAxes;
                        const allAxes = verticalAxes.concat(horizontalAxes);
                        const allElements = allAxes.concat(scrollBar);
                        const verticalAxesFirstDrawing = verticalAxes.some(v => v.isFirstDrawing());
                        this._normalizePanesHeight();
                        this._updatePanesCanvases(drawOptions);
                        let panesCanvases = this.panes.reduce((canvases, pane) => {
                            canvases[pane.name] = (0, _extend2.extend)({}, pane.canvas);
                            return canvases
                        }, {});
                        const paneSizes = this.panes.reduce((sizes, pane) => {
                            sizes[pane.name] = {
                                height: pane.height,
                                unit: pane.unit
                            };
                            return sizes
                        }, {});
                        const cleanPanesCanvases = (0, _extend2.extend)(true, {}, panesCanvases);
                        this._initCustomPositioningAxes();
                        const needCustomAdjustAxes = this._axesBoundaryPositioning();
                        if (!drawOptions.adjustAxes && !needCustomAdjustAxes) {
                            drawAxesWithTicks(verticalAxes, !rotated && synchronizeMultiAxes, panesCanvases, panesBorderOptions);
                            drawAxesWithTicks(horizontalAxes, rotated && synchronizeMultiAxes, panesCanvases, panesBorderOptions);
                            performActionOnAxes(allAxes, "prepareAnimation");
                            this._renderScaleBreaks();
                            horizontalAxes.forEach(a => a.resolveOverlappingForCustomPositioning(verticalAxes));
                            verticalAxes.forEach(a => a.resolveOverlappingForCustomPositioning(horizontalAxes));
                            return false
                        }
                        if (needCustomAdjustAxes) {
                            allAxes.forEach(a => a.customPositionIsAvailable() && a.shift({
                                top: 0,
                                left: 0,
                                bottom: 0,
                                right: 0
                            }))
                        }
                        if (this._scrollBar) {
                            this._scrollBar.setPane(this.panes)
                        }
                        let vAxesMargins = {
                            panes: {},
                            left: 0,
                            right: 0
                        };
                        let hAxesMargins = getHorizontalAxesMargins(horizontalElements, axis => axis.estimateMargins(panesCanvases[axis.pane]));
                        panesCanvases = shrinkCanvases(rotated, panesCanvases, paneSizes, vAxesMargins, hAxesMargins);
                        const drawAxesAndSetCanvases = isHorizontal => {
                            const axes = isHorizontal ? horizontalAxes : verticalAxes;
                            const condition = (isHorizontal ? rotated : !rotated) && synchronizeMultiAxes;
                            drawAxesWithTicks(axes, condition, panesCanvases, panesBorderOptions);
                            if (isHorizontal) {
                                hAxesMargins = getHorizontalAxesMargins(horizontalElements, getAxisMargins)
                            } else {
                                vAxesMargins = getVerticalAxesMargins(verticalElements)
                            }
                            panesCanvases = shrinkCanvases(rotated, panesCanvases, paneSizes, vAxesMargins, hAxesMargins)
                        };
                        drawAxesAndSetCanvases(false);
                        drawAxesAndSetCanvases(true);
                        if (!this._changesApplying && this._estimateTickIntervals(verticalAxes, panesCanvases)) {
                            drawAxesAndSetCanvases(false)
                        }
                        let oldTitlesWidth = calculateTitlesWidth(verticalAxes);
                        const visibleSeries = this._getVisibleSeries();
                        const pointsToAnimation = this._getPointsToAnimation(visibleSeries);
                        const axesIsAnimated = function(drawOptions, pointsToAnimation) {
                            const pointsCount = pointsToAnimation.reduce((sum, count) => sum + count, 0) / pointsToAnimation.length;
                            return drawOptions.animate && pointsCount <= drawOptions.animationPointsLimit
                        }(drawOptions, pointsToAnimation);
                        performActionOnAxes(allElements, "updateSize", panesCanvases, axesIsAnimated);
                        horizontalElements.forEach(shiftAxis("top", "bottom"));
                        verticalElements.forEach(shiftAxis("left", "right"));
                        this._renderScaleBreaks();
                        this.panes.forEach(pane => {
                            (0, _extend2.extend)(pane.canvas, panesCanvases[pane.name])
                        });
                        this._valueAxes.forEach(axis => {
                            axis.setInitRange()
                        });
                        verticalAxes.forEach((axis, i) => {
                            var _a;
                            if (null === (_a = axis.hasWrap) || void 0 === _a ? void 0 : _a.call(axis)) {
                                const title = axis.getTitle();
                                const newTitleWidth = title ? title.bBox.width : 0;
                                const offset = newTitleWidth - oldTitlesWidth[i];
                                if ("right" === axis.getOptions().position) {
                                    vAxesMargins.right += offset
                                } else {
                                    vAxesMargins.left += offset;
                                    this.panes.forEach(_ref2 => {
                                        let {
                                            name: name
                                        } = _ref2;
                                        vAxesMargins.panes[name].left += offset
                                    })
                                }
                                panesCanvases = shrinkCanvases(rotated, panesCanvases, paneSizes, vAxesMargins, hAxesMargins);
                                performActionOnAxes(allElements, "updateSize", panesCanvases, false, false);
                                oldTitlesWidth = calculateTitlesWidth(verticalAxes)
                            }
                        });
                        if (verticalAxes.some(v => v.customPositionIsAvailable() && v.getCustomPosition() !== v._axisPosition)) {
                            axesIsAnimated && this._resetAxesAnimation(verticalAxesFirstDrawing, false);
                            performActionOnAxes(verticalAxes, "updateSize", panesCanvases, axesIsAnimated)
                        }
                        horizontalAxes.forEach(a => a.resolveOverlappingForCustomPositioning(verticalAxes));
                        verticalAxes.forEach(a => a.resolveOverlappingForCustomPositioning(horizontalAxes));
                        return cleanPanesCanvases
                    },
                    _getExtraTemplatesItems() {
                        const allAxes = (this._argumentAxes || []).concat(this._valueAxes || []);
                        const elements = this._collectTemplatesFromItems(allAxes);
                        return {
                            items: elements.items,
                            groups: elements.groups,
                            launchRequest() {
                                allAxes.forEach(a => {
                                    a.setRenderedState(true)
                                })
                            },
                            doneRequest() {
                                allAxes.forEach(a => {
                                    a.setRenderedState(false)
                                })
                            }
                        }
                    },
                    _estimateTickIntervals: (axes, canvases) => axes.some(axis => axis.estimateTickInterval(canvases[axis.pane])),
                    checkForMoreSpaceForPanesCanvas() {
                        const rotated = this._isRotated();
                        const panesAreCustomSized = this.panes.filter(p => p.unit).length === this.panes.length;
                        let needSpace = false;
                        if (panesAreCustomSized) {
                            let needHorizontalSpace = 0;
                            let needVerticalSpace = 0;
                            if (rotated) {
                                const argAxisRightMargin = this.getArgumentAxis().getMargins().right;
                                const rightPanesIndent = Math.min(...this.panes.map(p => p.canvas.right));
                                needHorizontalSpace = this._canvas.right + argAxisRightMargin - rightPanesIndent
                            } else {
                                const argAxisBottomMargin = this.getArgumentAxis().getMargins().bottom;
                                const bottomPanesIndent = Math.min(...this.panes.map(p => p.canvas.bottom));
                                needVerticalSpace = this._canvas.bottom + argAxisBottomMargin - bottomPanesIndent
                            }
                            needSpace = needHorizontalSpace > 0 || needVerticalSpace > 0 ? {
                                width: needHorizontalSpace,
                                height: needVerticalSpace
                            } : false;
                            if (0 !== needVerticalSpace) {
                                const realSize = this.getSize();
                                const customSize = this.option("size");
                                const container = this._$element[0];
                                const containerHasStyledHeight = !!parseInt(container.style.height, 10) || 0 !== this._containerInitialHeight;
                                if (!rotated && !(null === customSize || void 0 === customSize ? void 0 : customSize.height) && !containerHasStyledHeight) {
                                    this._forceResize(realSize.width, realSize.height + needVerticalSpace);
                                    needSpace = false
                                }
                            }
                        } else {
                            needSpace = this.layoutManager.needMoreSpaceForPanesCanvas(this._getLayoutTargets(), rotated, pane => ({
                                width: rotated && !!pane.unit,
                                height: !rotated && !!pane.unit
                            }))
                        }
                        return needSpace
                    },
                    _forceResize(width, height) {
                        this._renderer.resize(width, height);
                        this._updateSize(true);
                        this._setContentSize();
                        this._preserveOriginalCanvas();
                        this._updateCanvasClipRect(this._canvas)
                    },
                    _shrinkAxes(sizeShortage, panesCanvases) {
                        if (!sizeShortage || !panesCanvases) {
                            return
                        }
                        this._renderer.stopAllAnimations(true);
                        const rotated = this._isRotated();
                        const scrollBar = this._scrollBar ? [this._scrollBar] : [];
                        const extendedArgAxes = this._isArgumentAxisBeforeScrollBar() ? this._argumentAxes.concat(scrollBar) : scrollBar.concat(this._argumentAxes);
                        const verticalAxes = rotated ? extendedArgAxes : this._valueAxes;
                        const horizontalAxes = rotated ? this._valueAxes : extendedArgAxes;
                        const allAxes = verticalAxes.concat(horizontalAxes);
                        if (sizeShortage.width || sizeShortage.height) {
                            checkUsedSpace(sizeShortage, "height", horizontalAxes, getHorizontalAxesMargins);
                            checkUsedSpace(sizeShortage, "width", verticalAxes, getVerticalAxesMargins);
                            performActionOnAxes(allAxes, "updateSize", panesCanvases);
                            const paneSizes = this.panes.reduce((sizes, pane) => {
                                sizes[pane.name] = {
                                    height: pane.height,
                                    unit: pane.unit
                                };
                                return sizes
                            }, {});
                            panesCanvases = shrinkCanvases(rotated, panesCanvases, paneSizes, getVerticalAxesMargins(verticalAxes), getHorizontalAxesMargins(horizontalAxes, getAxisMargins));
                            performActionOnAxes(allAxes, "updateSize", panesCanvases);
                            horizontalAxes.forEach(shiftAxis("top", "bottom"));
                            verticalAxes.forEach(shiftAxis("left", "right"));
                            this.panes.forEach(pane => (0, _extend2.extend)(pane.canvas, panesCanvases[pane.name]))
                        }
                    },
                    _isArgumentAxisBeforeScrollBar() {
                        var _a;
                        const argumentAxis = this.getArgumentAxis();
                        if (this._scrollBar) {
                            const argAxisPosition = argumentAxis.getResolvedBoundaryPosition();
                            const argAxisLabelPosition = null === (_a = argumentAxis.getOptions().label) || void 0 === _a ? void 0 : _a.position;
                            const scrollBarPosition = this._scrollBar.getOptions().position;
                            return argumentAxis.hasNonBoundaryPosition() || scrollBarPosition === argAxisPosition && argAxisLabelPosition !== scrollBarPosition
                        }
                        return false
                    },
                    _getPanesParameters() {
                        const {
                            panes: panes
                        } = this;
                        const params = [];
                        for (let i = 0; i < panes.length; i += 1) {
                            if (this._getPaneBorderVisibility(i)) {
                                params.push({
                                    coords: panes[i].borderCoords,
                                    clipRect: this._panesClipRects.fixed[i]
                                })
                            }
                        }
                        return params
                    },
                    _createCrosshairCursor() {
                        const options = this._themeManager.getOptions("crosshair") || {};
                        const argumentAxis = this.getArgumentAxis();
                        const axes = this._isRotated() ? [this._valueAxes, [argumentAxis]] : [
                            [argumentAxis], this._valueAxes
                        ];
                        const parameters = {
                            canvas: this._getCommonCanvas(),
                            panes: this._getPanesParameters(),
                            axes: axes
                        };
                        if (!(null === options || void 0 === options ? void 0 : options.enabled)) {
                            return
                        }
                        if (this._crosshair) {
                            this._crosshair.update(options, parameters)
                        } else {
                            this._crosshair = new _crosshair.Crosshair(this._renderer, options, parameters, this._crosshairCursorGroup)
                        }
                        this._crosshair.render()
                    },
                    _getCommonCanvas() {
                        let commonCanvas;
                        const {
                            panes: panes
                        } = this;
                        for (let i = 0; i < panes.length; i += 1) {
                            const {
                                canvas: canvas
                            } = panes[i];
                            if (!commonCanvas) {
                                commonCanvas = (0, _extend2.extend)({}, canvas)
                            } else {
                                commonCanvas.right = canvas.right;
                                commonCanvas.bottom = canvas.bottom
                            }
                        }
                        return commonCanvas
                    },
                    _createPanesBackground() {
                        const defaultBackgroundColor = this._themeManager.getOptions("commonPaneSettings").backgroundColor;
                        const renderer = this._renderer;
                        const rects = [];
                        this._panesBackgroundGroup.clear();
                        for (let i = 0; i < this.panes.length; i += 1) {
                            const backgroundColor = this.panes[i].backgroundColor || defaultBackgroundColor;
                            if (!backgroundColor || "none" === backgroundColor) {
                                rects.push(null);
                                continue
                            }
                            const rect = renderer.rect(0, 0, 0, 0).attr({
                                fill: (0, _utils.extractColor)(backgroundColor),
                                "stroke-width": 0
                            }).append(this._panesBackgroundGroup);
                            rects.push(rect)
                        }
                        this.panesBackground = rects
                    },
                    _fillPanesBackground() {
                        (0, _iterator.each)(this.panes, (i, pane) => {
                            const bc = pane.borderCoords;
                            if (null !== this.panesBackground[i]) {
                                this.panesBackground[i].attr({
                                    x: bc.left,
                                    y: bc.top,
                                    width: bc.width,
                                    height: bc.height
                                })
                            }
                        })
                    },
                    _calcPaneBorderCoords(pane) {
                        const {
                            canvas: canvas
                        } = pane;
                        const bc = pane.borderCoords = pane.borderCoords || {};
                        bc.left = canvas.left;
                        bc.top = canvas.top;
                        bc.right = canvas.width - canvas.right;
                        bc.bottom = canvas.height - canvas.bottom;
                        bc.width = Math.max(bc.right - bc.left, 0);
                        bc.height = Math.max(bc.bottom - bc.top, 0)
                    },
                    _drawPanesBorders(panesBorderOptions) {
                        const rotated = this._isRotated();
                        this._panesBorderGroup.linkRemove().clear();
                        (0, _iterator.each)(this.panes, (i, pane) => {
                            const borderOptions = panesBorderOptions[pane.name];
                            const attr = {
                                fill: "none",
                                stroke: borderOptions.color,
                                "stroke-opacity": borderOptions.opacity,
                                "stroke-width": borderOptions.width,
                                dashStyle: borderOptions.dashStyle,
                                "stroke-linecap": "square"
                            };
                            this._calcPaneBorderCoords(pane, rotated);
                            if (!borderOptions.visible) {
                                return
                            }
                            const bc = pane.borderCoords;
                            const segmentRectParams = (0, _utils2.prepareSegmentRectPoints)(bc.left, bc.top, bc.width, bc.height, borderOptions);
                            this._renderer.path(segmentRectParams.points, segmentRectParams.pathType).attr(attr).append(this._panesBorderGroup)
                        });
                        this._panesBorderGroup.linkAppend()
                    },
                    _createClipRect(clipArray, index, left, top, width, height) {
                        let clipRect = clipArray[index];
                        if (!clipRect) {
                            clipRect = this._renderer.clipRect(left, top, width, height);
                            clipArray[index] = clipRect
                        } else {
                            clipRect.attr({
                                x: left,
                                y: top,
                                width: width,
                                height: height
                            })
                        }
                    },
                    _createClipRectsForPanes() {
                        const canvas = this._canvas;
                        (0, _iterator.each)(this.panes, (i, pane) => {
                            let needWideClipRect = false;
                            const bc = pane.borderCoords;
                            let {
                                left: left
                            } = bc;
                            let {
                                top: top
                            } = bc;
                            let {
                                width: width
                            } = bc;
                            let {
                                height: height
                            } = bc;
                            const panesClipRects = this._panesClipRects;
                            this._createClipRect(panesClipRects.fixed, i, left, top, width, height);
                            this._createClipRect(panesClipRects.base, i, left, top, width, height);
                            (0, _iterator.each)(this.series, (_, series) => {
                                if (series.pane === pane.name && (series.isFinancialSeries() || series.areErrorBarsVisible())) {
                                    needWideClipRect = true
                                }
                            });
                            if (needWideClipRect) {
                                if (this._isRotated()) {
                                    top = 0;
                                    height = canvas.height
                                } else {
                                    left = 0;
                                    width = canvas.width
                                }
                                this._createClipRect(panesClipRects.wide, i, left, top, width, height)
                            } else {
                                panesClipRects.wide[i] = null
                            }
                        })
                    },
                    _applyClipRectsForAxes() {
                        const axes = this._getAllAxes();
                        const chartCanvasClipRectID = this._getCanvasClipRectID();
                        for (let i = 0; i < axes.length; i += 1) {
                            const elementsClipRectID = this._getElementsClipRectID(axes[i].pane);
                            axes[i].applyClipRects(elementsClipRectID, chartCanvasClipRectID)
                        }
                    },
                    _getPaneBorderVisibility(paneIndex) {
                        var _a;
                        const commonPaneBorderVisible = this._themeManager.getOptions("commonPaneSettings").border.visible;
                        const pane = this.panes[paneIndex];
                        const paneVisibility = null === (_a = null === pane || void 0 === pane ? void 0 : pane.border) || void 0 === _a ? void 0 : _a.visible;
                        return void 0 === paneVisibility ? commonPaneBorderVisible : paneVisibility
                    },
                    _getCanvasForPane(paneName) {
                        var _a;
                        return null === (_a = this.panes.find(pane => pane.name === paneName)) || void 0 === _a ? void 0 : _a.canvas
                    },
                    _getTrackerSettings() {
                        return (0, _extend2.extend)(this.callBase(), {
                            chart: this,
                            rotated: this._isRotated(),
                            crosshair: this._getCrosshairOptions().enabled ? this._crosshair : null,
                            stickyHovering: this._themeManager.getOptions("stickyHovering")
                        })
                    },
                    _resolveLabelOverlappingStack() {
                        const isRotated = this._isRotated();
                        const shiftDirection = isRotated ? (box, length) => ({
                            x: box.x - length,
                            y: box.y
                        }) : (box, length) => ({
                            x: box.x,
                            y: box.y - length
                        });
                        const processor = (a, b) => {
                            const coordPosition = isRotated ? 1 : 0;
                            const figureCenter1 = a.labels[0].getFigureCenter()[coordPosition];
                            const figureCenter12 = b.labels[0].getFigureCenter()[coordPosition];
                            if (figureCenter1 - figureCenter12 === 0) {
                                const translator = a.labels[0].getPoint().series.getValueAxis().getTranslator();
                                const direction = translator.isInverted() ? -1 : 1;
                                return (a.value() - b.value()) * direction
                            }
                            return 0
                        };
                        (0, _iterator.each)(this._getStackPoints(), (_, stacks) => {
                            (0, _iterator.each)(stacks, (_, points) => {
                                const isInverted = points[0].series.getValueAxis().getOptions().inverted;
                                _m_base_chart.overlapping.resolveLabelOverlappingInOneDirection(points, this._getCommonCanvas(), isRotated, isInverted, shiftDirection, processor)
                            })
                        })
                    },
                    _getStackPoints() {
                        const stackPoints = {};
                        const visibleSeries = this._getVisibleSeries();
                        (0, _iterator.each)(visibleSeries, (_, singleSeries) => {
                            const points = singleSeries.getPoints();
                            const stackName = singleSeries.getStackName() || null;
                            (0, _iterator.each)(points, (_, point) => {
                                const {
                                    argument: argument
                                } = point;
                                if (!stackPoints[argument]) {
                                    stackPoints[argument] = {}
                                }
                                if (!stackPoints[argument][stackName]) {
                                    stackPoints[argument][stackName] = []
                                }
                                stackPoints[argument][stackName].push(point)
                            })
                        });
                        return stackPoints
                    },
                    _getCrosshairOptions() {
                        return this._getOption("crosshair")
                    },
                    zoomArgument(min, max) {
                        if (!this._initialized || !(0, _type.isDefined)(min) && !(0, _type.isDefined)(max)) {
                            return
                        }
                        this.getArgumentAxis().visualRange([min, max])
                    },
                    resetVisualRange() {
                        const axes = this._argumentAxes;
                        const nonVirtualArgumentAxis = this.getArgumentAxis();
                        axes.forEach(axis => {
                            axis.resetVisualRange(nonVirtualArgumentAxis !== axis);
                            this._applyCustomVisualRangeOption(axis)
                        });
                        this.callBase()
                    },
                    getVisibleArgumentBounds() {
                        const translator = this._argumentAxes[0].getTranslator();
                        const range = translator.getBusinessRange();
                        const isDiscrete = "discrete" === range.axisType;
                        const {
                            categories: categories
                        } = range;
                        return {
                            minVisible: isDiscrete ? range.minVisible || categories[0] : range.minVisible,
                            maxVisible: isDiscrete ? range.maxVisible || categories[categories.length - 1] : range.maxVisible
                        }
                    },
                    _change_FULL_RENDER() {
                        this.callBase();
                        if (this._changes.has("VISUAL_RANGE")) {
                            this._raiseZoomEndHandlers()
                        }
                    },
                    _getAxesForScaling() {
                        return [this.getArgumentAxis()].concat(this._valueAxes)
                    },
                    _applyVisualRangeByVirtualAxes(axis, range) {
                        if (axis.isArgumentAxis) {
                            if (axis !== this.getArgumentAxis()) {
                                return true
                            }
                            this._argumentAxes.filter(a => a !== axis).forEach(a => a.visualRange(range, {
                                start: true,
                                end: true
                            }))
                        }
                        return false
                    },
                    _raiseZoomEndHandlers() {
                        this._argumentAxes.forEach(axis => axis.handleZoomEnd());
                        this.callBase()
                    },
                    _setOptionsByReference() {
                        this.callBase();
                        (0, _extend2.extend)(this._optionsByReference, {
                            "argumentAxis.visualRange": true
                        })
                    },
                    option() {
                        const option = this.callBase(...arguments);
                        const valueAxis = this._options.silent("valueAxis");
                        if ("array" === (0, _type.type)(valueAxis)) {
                            for (let i = 0; i < valueAxis.length; i += 1) {
                                const optionPath = "valueAxis[".concat(i, "].visualRange");
                                this._optionsByReference[optionPath] = true
                            }
                        }
                        return option
                    },
                    _notifyVisualRange() {
                        const argAxis = this._argumentAxes[0];
                        const argumentVisualRange = (0, _utils.convertVisualRangeObject)(argAxis.visualRange(), !isArray(this.option("argumentAxis.visualRange")));
                        if (!argAxis.skipEventRising || !(0, _utils.rangesAreEqual)(argumentVisualRange, this.option("argumentAxis.visualRange"))) {
                            this.option("argumentAxis.visualRange", argumentVisualRange)
                        } else {
                            argAxis.skipEventRising = null
                        }
                        this.callBase()
                    }
                });
                dxChart.addPlugin(_shutter_zoom.default);
                dxChart.addPlugin(_zoom_and_pan.default);
                dxChart.addPlugin(_annotations.plugins.core);
                dxChart.addPlugin(_annotations.plugins.chart);
                (0, _component_registrator.default)("dxChart", dxChart);
                var _default = dxChart;
                exports.default = _default
            },
        88647:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/m_pie_chart.js ***!
              \***************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _consts = _interopRequireDefault(__webpack_require__( /*! ../../viz/components/consts */ 32410));
                var _annotations = __webpack_require__( /*! ../../viz/core/annotations */ 77129);
                var _center_template = __webpack_require__( /*! ../../viz/core/center_template */ 56672);
                var _utils = __webpack_require__( /*! ../../viz/core/utils */ 19157);
                var _range = __webpack_require__( /*! ../../viz/translators/range */ 21177);
                var _translator1d = __webpack_require__( /*! ../../viz/translators/translator1d */ 17953);
                var _m_base_chart = __webpack_require__( /*! ./chart_components/m_base_chart */ 14107);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const {
                    states: states
                } = _consts.default;
                const seriesSpacing = _consts.default.pieSeriesSpacing;
                const NORMAL_STATE = states.normalMark;
                const HOVER_STATE = states.hoverMark;
                const SELECTED_STATE = states.selectedMark;
                const LEGEND_ACTIONS = [states.resetItem, states.applyHover, states.applySelected, states.applySelected];

                function shiftInColumnFunction(box, length) {
                    return {
                        x: box.x,
                        y: box.y - length
                    }
                }

                function dividePoints(series, points) {
                    return series.getVisiblePoints().reduce((r, point) => {
                        const angle = (0, _utils.normalizeAngle)(point.middleAngle);
                        (angle <= 90 || angle >= 270 ? r.right : r.left).push(point);
                        return r
                    }, points || {
                        left: [],
                        right: []
                    })
                }

                function resolveOverlappedLabels(points, shiftCallback, inverseDirection, canvas) {
                    let overlapped = false;
                    if (inverseDirection) {
                        points.left.reverse();
                        points.right.reverse()
                    }
                    overlapped = _m_base_chart.overlapping.resolveLabelOverlappingInOneDirection(points.left, canvas, false, false, shiftCallback);
                    return _m_base_chart.overlapping.resolveLabelOverlappingInOneDirection(points.right, canvas, false, false, shiftCallback) || overlapped
                }

                function correctPercentValue(value) {
                    if ((0, _type.isNumeric)(value)) {
                        if (value > 1) {
                            value = 1
                        } else if (value < 0) {
                            value = 0
                        }
                    } else {
                        value = void 0
                    }
                    return value
                }
                const pieSizeEqualizer = function() {
                    function removeFromList(list, item) {
                        return list.filter(li => li !== item)
                    }
                    let pies = [];
                    let timers = {};
                    return {
                        queue(pie) {
                            const group = pie.getSizeGroup();
                            pies = (list = pies, item = pie, removeFromList(list, item).concat(item));
                            var list, item;
                            clearTimeout(timers[group]);
                            timers[group] = setTimeout(() => {
                                ! function(group, allPies) {
                                    const pies = allPies.filter(p => p._isVisible() && p.getSizeGroup() === group);
                                    const minRadius = Math.min.apply(null, pies.map(p => p.getSizeGroupLayout().radius));
                                    const minPie = pies.filter(p => p.getSizeGroupLayout().radius === minRadius);
                                    pies.forEach(p => p.render({
                                        force: true,
                                        sizeGroupLayout: minPie.length ? minPie[0].getSizeGroupLayout() : {}
                                    }))
                                }(group, pies)
                            })
                        },
                        remove(pie) {
                            pies = removeFromList(pies, pie);
                            if (!pies.length) {
                                timers = {}
                            }
                        }
                    }
                }();
                const dxPieChart = _m_base_chart.BaseChart.inherit({
                    _themeSection: "pie",
                    _layoutManagerOptions() {
                        return (0, _extend2.extend)(true, {}, this.callBase(), {
                            piePercentage: correctPercentValue(this._themeManager.getOptions("diameter")),
                            minPiePercentage: correctPercentValue(this._themeManager.getOptions("minDiameter"))
                        })
                    },
                    _optionChangesMap: {
                        diameter: "REINIT",
                        minDiameter: "REINIT",
                        sizeGroup: "REINIT"
                    },
                    _disposeCore() {
                        pieSizeEqualizer.remove(this);
                        this.callBase()
                    },
                    _groupSeries() {
                        var _a;
                        const {
                            series: series
                        } = this;
                        this._groupsData = {
                            groups: [{
                                series: series,
                                valueOptions: {
                                    valueType: "numeric"
                                }
                            }],
                            argumentOptions: null === (_a = series[0]) || void 0 === _a ? void 0 : _a.getOptions()
                        }
                    },
                    getArgumentAxis: () => null,
                    _getValueAxis() {
                        const translator = (new _translator1d.Translator1D).setCodomain(360, 0);
                        return {
                            getTranslator: () => translator,
                            setBusinessRange(range) {
                                translator.setDomain(range.min, range.max)
                            }
                        }
                    },
                    _populateBusinessRange() {
                        this.series.map(series => {
                            const range = new _range.Range;
                            range.addRange(series.getRangeData().val);
                            series.getValueAxis().setBusinessRange(range);
                            return range
                        })
                    },
                    _specialProcessSeries() {
                        (0, _iterator.each)(this.series, (_, singleSeries) => {
                            singleSeries.arrangePoints()
                        })
                    },
                    _checkPaneName: () => true,
                    _processSingleSeries(singleSeries) {
                        this.callBase(singleSeries);
                        singleSeries.arrangePoints()
                    },
                    _handleSeriesDataUpdated() {
                        let maxPointCount = 0;
                        this.series.forEach(s => {
                            maxPointCount = Math.max(s.getPointsCount(), maxPointCount)
                        });
                        this.series.forEach(s => {
                            s.setMaxPointsCount(maxPointCount)
                        });
                        this.callBase()
                    },
                    _getLegendOptions(item) {
                        const legendItem = this.callBase(item);
                        const {
                            legendData: legendData
                        } = legendItem;
                        legendData.argument = item.argument;
                        legendData.argumentIndex = item.argumentIndex;
                        legendData.points = [item];
                        return legendItem
                    },
                    _getLegendTargets() {
                        const itemsByArgument = {};
                        (this.series || []).forEach(series => {
                            series.getPoints().forEach(point => {
                                const argument = point.argument.valueOf();
                                const index = series.getPointsByArg(argument).indexOf(point);
                                const key = argument.valueOf().toString() + index;
                                itemsByArgument[key] = itemsByArgument[key] || [];
                                const argumentCount = itemsByArgument[key].push(point);
                                point.index = itemsByArgument[key][argumentCount - 2] ? itemsByArgument[key][argumentCount - 2].index : Object.keys(itemsByArgument).length - 1;
                                point.argumentIndex = index
                            })
                        });
                        const items = [];
                        (0, _iterator.each)(itemsByArgument, (_, points) => {
                            points.forEach((point, index) => {
                                if (0 === index) {
                                    items.push(this._getLegendOptions(point));
                                    return
                                }
                                const item = items[items.length - 1];
                                item.legendData.points.push(point);
                                if (!item.visible) {
                                    item.visible = point.isVisible()
                                }
                            })
                        });
                        return items
                    },
                    _getLayoutTargets() {
                        return [{
                            canvas: this._canvas
                        }]
                    },
                    _getLayoutSeries(series, drawOptions) {
                        let layout;
                        const canvas = this._canvas;
                        let drawnLabels = false;
                        layout = this.layoutManager.applyPieChartSeriesLayout(canvas, series, true);
                        series.forEach(singleSeries => {
                            singleSeries.correctPosition(layout, canvas);
                            drawnLabels = singleSeries.drawLabelsWOPoints() || drawnLabels
                        });
                        if (drawnLabels) {
                            layout = this.layoutManager.applyPieChartSeriesLayout(canvas, series, drawOptions.hideLayoutLabels)
                        }
                        series.forEach(singleSeries => {
                            singleSeries.hideLabels()
                        });
                        this._sizeGroupLayout = {
                            x: layout.centerX,
                            y: layout.centerY,
                            radius: layout.radiusOuter,
                            drawOptions: drawOptions
                        };
                        return layout
                    },
                    _getLayoutSeriesForEqualPies(series, sizeGroupLayout) {
                        const canvas = this._canvas;
                        const layout = this.layoutManager.applyEqualPieChartLayout(series, sizeGroupLayout);
                        series.forEach(s => {
                            s.correctPosition(layout, canvas);
                            s.drawLabelsWOPoints()
                        });
                        this.layoutManager.correctPieLabelRadius(series, layout, canvas);
                        return layout
                    },
                    _updateSeriesDimensions(drawOptions) {
                        const visibleSeries = this._getVisibleSeries();
                        const lengthVisibleSeries = visibleSeries.length;
                        let innerRad;
                        let delta;
                        let layout;
                        const {
                            sizeGroupLayout: sizeGroupLayout
                        } = drawOptions;
                        if (lengthVisibleSeries) {
                            layout = sizeGroupLayout ? this._getLayoutSeriesForEqualPies(visibleSeries, sizeGroupLayout) : this._getLayoutSeries(visibleSeries, drawOptions);
                            delta = (layout.radiusOuter - layout.radiusInner - seriesSpacing * (lengthVisibleSeries - 1)) / lengthVisibleSeries;
                            innerRad = layout.radiusInner;
                            this._setGeometry(layout);
                            visibleSeries.forEach(singleSeries => {
                                singleSeries.correctRadius({
                                    radiusInner: innerRad,
                                    radiusOuter: innerRad + delta
                                });
                                innerRad += delta + seriesSpacing
                            })
                        }
                    },
                    _renderSeries(drawOptions, isRotated, isLegendInside) {
                        this._calculateSeriesLayout(drawOptions, isRotated);
                        if (!drawOptions.sizeGroupLayout && this.getSizeGroup()) {
                            pieSizeEqualizer.queue(this);
                            this._clearCanvas();
                            return
                        }
                        this._renderSeriesElements(drawOptions, isLegendInside)
                    },
                    _getCenter() {
                        return this._center
                    },
                    getInnerRadius() {
                        return this._innerRadius
                    },
                    _getLegendCallBack() {
                        const legend = this._legend;
                        const items = this._getLegendTargets().map(i => i.legendData);
                        return target => {
                            items.forEach(data => {
                                const points = [];
                                const callback = legend.getActionCallback({
                                    index: data.id
                                });
                                this.series.forEach(series => {
                                    const seriesPoints = series.getPointsByKeys(data.argument, data.argumentIndex);
                                    points.push.apply(points, seriesPoints)
                                });
                                if (target && target.argument === data.argument && target.argumentIndex === data.argumentIndex) {
                                    points.push(target)
                                }
                                callback(function(points) {
                                    let state = NORMAL_STATE;
                                    points.forEach(point => {
                                        var _a;
                                        const seriesOptions = null === (_a = point.series) || void 0 === _a ? void 0 : _a.getOptions();
                                        let pointState = point.fullState;
                                        if ("none" === (null === seriesOptions || void 0 === seriesOptions ? void 0 : seriesOptions.hoverMode)) {
                                            pointState &= ~HOVER_STATE
                                        }
                                        if ("none" === (null === seriesOptions || void 0 === seriesOptions ? void 0 : seriesOptions.selectionMode)) {
                                            pointState &= ~SELECTED_STATE
                                        }
                                        state |= pointState
                                    });
                                    return LEGEND_ACTIONS[state]
                                }(points))
                            })
                        }
                    },
                    _locateLabels(resolveLabelOverlapping) {
                        let iterationCount = 0;
                        let labelsWereOverlapped;
                        let wordWrapApplied;
                        do {
                            wordWrapApplied = this._adjustSeriesLabels("shift" === resolveLabelOverlapping);
                            labelsWereOverlapped = this._resolveLabelOverlapping(resolveLabelOverlapping)
                        } while ((labelsWereOverlapped || wordWrapApplied) && ++iterationCount < 5)
                    },
                    _adjustSeriesLabels(moveLabelsFromCenter) {
                        return this.series.reduce((r, s) => s.adjustLabels(moveLabelsFromCenter) || r, false)
                    },
                    _applyExtraSettings: _common.noop,
                    _resolveLabelOverlappingShift() {
                        const inverseDirection = "anticlockwise" === this.option("segmentsDirection");
                        const seriesByPosition = this.series.reduce((r, s) => {
                            (r[s.getOptions().label.position] || r.outside).push(s);
                            return r
                        }, {
                            inside: [],
                            columns: [],
                            outside: []
                        });
                        let labelsOverlapped = false;
                        const shiftFunction = (box, length) => (0, _utils.getVerticallyShiftedAngularCoords)(box, -length, this._center);
                        if (seriesByPosition.inside.length > 0) {
                            const pointsToResolve = seriesByPosition.inside.reduce((r, singleSeries) => {
                                const visiblePoints = singleSeries.getVisiblePoints();
                                return visiblePoints.reduce((r, point) => {
                                    r.left.push(point);
                                    return r
                                }, r)
                            }, {
                                left: [],
                                right: []
                            });
                            labelsOverlapped = resolveOverlappedLabels(pointsToResolve, shiftInColumnFunction, inverseDirection, this._canvas) || labelsOverlapped
                        }
                        labelsOverlapped = seriesByPosition.columns.reduce((r, singleSeries) => resolveOverlappedLabels(dividePoints(singleSeries), shiftInColumnFunction, inverseDirection, this._canvas) || r, labelsOverlapped);
                        if (seriesByPosition.outside.length > 0) {
                            labelsOverlapped = resolveOverlappedLabels(seriesByPosition.outside.reduce((r, singleSeries) => dividePoints(singleSeries, r), null), shiftFunction, inverseDirection, this._canvas) || labelsOverlapped
                        }
                        return labelsOverlapped
                    },
                    _setGeometry(_ref) {
                        let {
                            centerX: x,
                            centerY: y,
                            radiusInner: radiusInner
                        } = _ref;
                        this._center = {
                            x: x,
                            y: y
                        };
                        this._innerRadius = radiusInner
                    },
                    _disposeSeries() {
                        this.callBase.apply(this, arguments);
                        this._abstractSeries = null
                    },
                    _legendDataField: "point",
                    _legendItemTextField: "argument",
                    _applyPointMarkersAutoHiding: _common.noop,
                    _renderTrackers: _common.noop,
                    _trackerType: "PieTracker",
                    _createScrollBar: _common.noop,
                    _updateAxesLayout: _common.noop,
                    _applyClipRects: _common.noop,
                    _appendAdditionalSeriesGroups: _common.noop,
                    _prepareToRender: _common.noop,
                    _isLegendInside: _common.noop,
                    _renderAxes: _common.noop,
                    _shrinkAxes: _common.noop,
                    _isRotated: _common.noop,
                    _seriesPopulatedHandlerCore: _common.noop,
                    _reinitAxes: _common.noop,
                    _correctAxes: _common.noop,
                    _getExtraOptions() {
                        return {
                            startAngle: this.option("startAngle"),
                            innerRadius: this.option("innerRadius"),
                            segmentsDirection: this.option("segmentsDirection"),
                            type: this.option("type")
                        }
                    },
                    getSizeGroup() {
                        return this._themeManager.getOptions("sizeGroup")
                    },
                    getSizeGroupLayout() {
                        return this._sizeGroupLayout || {}
                    }
                });
                (0, _iterator.each)(["startAngle", "innerRadius", "segmentsDirection", "type"], (_, name) => {
                    dxPieChart.prototype._optionChangesMap[name] = "REFRESH_SERIES_DATA_INIT"
                });
                dxPieChart.addPlugin(_center_template.plugins.pieChart);
                dxPieChart.addPlugin(_annotations.plugins.core);
                dxPieChart.addPlugin(_annotations.plugins.pieChart);
                (0, _component_registrator.default)("dxPieChart", dxPieChart);
                var _default = dxPieChart;
                exports.default = _default
            },
        86139:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/__internal/viz/m_polar_chart.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "__esModule", {
                    value: true
                });
                exports.default = void 0;
                var _component_registrator = (obj = __webpack_require__( /*! ../../core/component_registrator */ 99393), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _annotations = __webpack_require__( /*! ../../viz/core/annotations */ 77129);
                var _utils = __webpack_require__( /*! ../../viz/core/utils */ 19157);
                var _m_advanced_chart = __webpack_require__( /*! ./chart_components/m_advanced_chart */ 41690);
                const dxPolarChart = _m_advanced_chart.AdvancedChart.inherit({
                    _themeSection: "polar",
                    _createPanes() {
                        this.callBase();
                        return [{
                            name: "default"
                        }]
                    },
                    _checkPaneName: () => true,
                    _getAxisRenderingOptions(typeSelector) {
                        const isArgumentAxis = "argumentAxis" === typeSelector;
                        let type = isArgumentAxis ? "circular" : "linear";
                        const useSpiderWeb = this.option("useSpiderWeb");
                        if (useSpiderWeb) {
                            type += "Spider"
                        }
                        return {
                            axisType: "polarAxes",
                            drawingType: type
                        }
                    },
                    _executeAppendBeforeSeries(append) {
                        append()
                    },
                    _prepareAxisOptions(typeSelector, axisOptions) {
                        const isArgumentAxis = "argumentAxis" === typeSelector;
                        const themeManager = this._themeManager;
                        const axisUserOptions = this.option("argumentAxis");
                        const argumentAxisOptions = themeManager.getOptions("argumentAxis", axisUserOptions) || {};
                        const startAngle = isFinite(argumentAxisOptions.startAngle) ? (0, _utils.normalizeAngle)(argumentAxisOptions.startAngle) : 0;
                        return {
                            type: this.option("useSpiderWeb") && isArgumentAxis ? "discrete" : axisOptions.type,
                            isHorizontal: true,
                            showCustomBoundaryTicks: isArgumentAxis,
                            startAngle: startAngle,
                            endAngle: startAngle + 360
                        }
                    },
                    _optionChangesMap: {
                        useSpiderWeb: "USE_SPIDER_WEB"
                    },
                    _change_USE_SPIDER_WEB() {
                        this._disposeAxes();
                        this._requestChange(["AXES_AND_PANES"])
                    },
                    _getExtraOptions() {
                        return {
                            spiderWidget: this.option("useSpiderWeb")
                        }
                    },
                    _prepareToRender() {
                        this._appendAxesGroups();
                        return {}
                    },
                    _calcCanvas() {
                        const canvas = (0, _extend.extend)({}, this._canvas);
                        const argumentAxis = this.getArgumentAxis();
                        const margins = argumentAxis.getMargins();
                        Object.keys(margins).forEach(margin => {
                            canvas[margin] = canvas["original".concat(margin[0].toUpperCase()).concat(margin.slice(1))] + margins[margin]
                        });
                        return canvas
                    },
                    _renderAxes() {
                        const valueAxis = this._getValueAxis();
                        const argumentAxis = this.getArgumentAxis();
                        argumentAxis.draw(this._canvas);
                        valueAxis.setSpiderTicks(argumentAxis.getSpiderTicks());
                        const canvas = this._calcCanvas();
                        argumentAxis.updateSize(canvas);
                        valueAxis.draw(canvas);
                        return canvas
                    },
                    _getValueAxis() {
                        return this._valueAxes[0]
                    },
                    _shrinkAxes(sizeStorage) {
                        const valueAxis = this._getValueAxis();
                        const argumentAxis = this.getArgumentAxis();
                        if (sizeStorage && (sizeStorage.width || sizeStorage.height)) {
                            argumentAxis.hideOuterElements();
                            const canvas = this._calcCanvas();
                            argumentAxis.updateSize(canvas);
                            valueAxis.updateSize(canvas)
                        }
                    },
                    checkForMoreSpaceForPanesCanvas() {
                        return this.layoutManager.needMoreSpaceForPanesCanvas([{
                            canvas: this.getArgumentAxis().getCanvas()
                        }], this._isRotated())
                    },
                    _getLayoutTargets() {
                        return [{
                            canvas: this._canvas
                        }]
                    },
                    _getSeriesForPane() {
                        return this.series
                    },
                    _applyClipRects() {
                        const canvasClipRectID = this._getCanvasClipRectID();
                        this._createClipPathForPane();
                        this.getArgumentAxis().applyClipRects(this._getElementsClipRectID(), canvasClipRectID);
                        this._getValueAxis().applyClipRects(this._getElementsClipRectID(), canvasClipRectID)
                    },
                    _createClipPathForPane() {
                        const valueAxis = this._getValueAxis();
                        let center = valueAxis.getCenter();
                        const radius = valueAxis.getRadius();
                        const panesClipRects = this._panesClipRects;
                        center = {
                            x: Math.round(center.x),
                            y: Math.round(center.y)
                        };
                        this._createClipCircle(panesClipRects.fixed, center.x, center.y, radius);
                        this._createClipCircle(panesClipRects.base, center.x, center.y, radius);
                        if (this.series.some(s => s.areErrorBarsVisible())) {
                            this._createClipCircle(panesClipRects.wide, center.x, center.y, radius)
                        } else {
                            panesClipRects.wide[0] = null
                        }
                    },
                    _createClipCircle(clipArray, left, top, radius) {
                        let clipCircle = clipArray[0];
                        if (!clipCircle) {
                            clipCircle = this._renderer.clipCircle(left, top, radius);
                            clipArray[0] = clipCircle
                        } else {
                            clipCircle.attr({
                                cx: left,
                                cy: top,
                                r: radius
                            })
                        }
                    },
                    _applyExtraSettings(series) {
                        const wideClipRect = this._panesClipRects.wide[0];
                        series.setClippingParams(this._panesClipRects.base[0].id, wideClipRect && wideClipRect.id, false, false)
                    },
                    getActualAngle(angle) {
                        return this.getArgumentAxis().getOptions().inverted ? 360 - angle : angle
                    },
                    getXYFromPolar(angle, radius, argument, value) {
                        const layoutInfo = {
                            angle: void 0,
                            radius: void 0,
                            x: void 0,
                            y: void 0
                        };
                        if (!(0, _type.isDefined)(angle) && !(0, _type.isDefined)(radius) && !(0, _type.isDefined)(argument) && !(0, _type.isDefined)(value)) {
                            return layoutInfo
                        }
                        const argAxis = this.getArgumentAxis();
                        const startAngle = argAxis.getAngles()[0];
                        let argAngle;
                        let translatedRadius;
                        if ((0, _type.isDefined)(argument)) {
                            argAngle = argAxis.getTranslator().translate(argument)
                        } else if (isFinite(angle)) {
                            argAngle = this.getActualAngle(angle)
                        } else if (!(0, _type.isDefined)(angle)) {
                            argAngle = 0
                        }
                        if ((0, _type.isDefined)(value)) {
                            translatedRadius = this.getValueAxis().getTranslator().translate(value)
                        } else if (isFinite(radius)) {
                            translatedRadius = radius
                        } else if (!(0, _type.isDefined)(radius)) {
                            translatedRadius = argAxis.getRadius()
                        }
                        if ((0, _type.isDefined)(argAngle) && (0, _type.isDefined)(translatedRadius)) {
                            const coords = (0, _utils.convertPolarToXY)(argAxis.getCenter(), startAngle, argAngle, translatedRadius);
                            (0, _extend.extend)(layoutInfo, coords, {
                                angle: argAxis.getTranslatedAngle(argAngle),
                                radius: translatedRadius
                            })
                        }
                        return layoutInfo
                    },
                    _applyPointMarkersAutoHiding: _common.noop,
                    _createScrollBar: _common.noop,
                    _isRotated: _common.noop,
                    _getCrosshairOptions: _common.noop,
                    _isLegendInside: _common.noop
                });
                dxPolarChart.addPlugin(_annotations.plugins.core);
                dxPolarChart.addPlugin(_annotations.plugins.polarChart);
                (0, _component_registrator.default)("dxPolarChart", dxPolarChart);
                var _default = dxPolarChart;
                exports.default = _default
            },
        23908:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/animation/easing.js ***!
              \*****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.convertTransitionTimingFuncToEasing = void 0;
                exports.getEasing = function(name) {
                    return easing[name]
                };
                exports.setEasing = function(value) {
                    easing = value
                };
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                const CSS_TRANSITION_EASING_REGEX = /cubic-bezier\((\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\)/;
                const TransitionTimingFuncMap = {
                    linear: "cubic-bezier(0, 0, 1, 1)",
                    swing: "cubic-bezier(0.445, 0.05, 0.55, 0.95)",
                    ease: "cubic-bezier(0.25, 0.1, 0.25, 1)",
                    "ease-in": "cubic-bezier(0.42, 0, 1, 1)",
                    "ease-out": "cubic-bezier(0, 0, 0.58, 1)",
                    "ease-in-out": "cubic-bezier(0.42, 0, 0.58, 1)"
                };
                const polynomBezier = function(x1, y1, x2, y2) {
                    const Cx = 3 * x1;
                    const Bx = 3 * (x2 - x1) - Cx;
                    const Ax = 1 - Cx - Bx;
                    const Cy = 3 * y1;
                    const By = 3 * (y2 - y1) - Cy;
                    const Ay = 1 - Cy - By;
                    const bezierX = function(t) {
                        return t * (Cx + t * (Bx + t * Ax))
                    };
                    const derivativeX = function(t) {
                        return Cx + t * (2 * Bx + 3 * t * Ax)
                    };
                    return function(t) {
                        return function(t) {
                            return t * (Cy + t * (By + t * Ay))
                        }(function(t) {
                            let x = t;
                            let i = 0;
                            let z;
                            while (i < 14) {
                                z = bezierX(x) - t;
                                if (Math.abs(z) < .001) {
                                    break
                                }
                                x -= z / derivativeX(x);
                                i++
                            }
                            return x
                        }(t))
                    }
                };
                let easing = {};
                exports.convertTransitionTimingFuncToEasing = function(cssTransitionEasing) {
                    cssTransitionEasing = TransitionTimingFuncMap[cssTransitionEasing] || cssTransitionEasing;
                    let coeffs = cssTransitionEasing.match(CSS_TRANSITION_EASING_REGEX);
                    let forceName;
                    if (!coeffs) {
                        forceName = "linear";
                        coeffs = TransitionTimingFuncMap[forceName].match(CSS_TRANSITION_EASING_REGEX)
                    }
                    coeffs = coeffs.slice(1, 5);
                    for (let i = 0; i < coeffs.length; i++) {
                        coeffs[i] = parseFloat(coeffs[i])
                    }
                    const easingName = forceName || "cubicbezier_" + coeffs.join("_").replace(/\./g, "p");
                    if (!(0, _type.isFunction)(easing[easingName])) {
                        easing[easingName] = function(x, t, b, c, d) {
                            return c * polynomBezier(coeffs[0], coeffs[1], coeffs[2], coeffs[3])(t / d) + b
                        }
                    }
                    return easingName
                }
            },
        90057:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/animation/frame.js ***!
              \****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.cancelAnimationFrame = function() {
                    setAnimationFrameMethods();
                    cancel.apply(window, arguments)
                };
                exports.requestAnimationFrame = function() {
                    setAnimationFrameMethods();
                    return request.apply(window, arguments)
                };
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _call_once = (obj = __webpack_require__( /*! ../core/utils/call_once */ 39618), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const window = (0, _window.hasWindow)() ? (0, _window.getWindow)() : {};
                let request = function(callback) {
                    return setTimeout(callback, 1e3 / 60)
                };
                let cancel = function(requestID) {
                    clearTimeout(requestID)
                };
                const setAnimationFrameMethods = (0, _call_once.default)((function() {
                    const nativeRequest = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame;
                    const nativeCancel = window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || window.oCancelAnimationFrame || window.msCancelAnimationFrame;
                    if (nativeRequest && nativeCancel) {
                        request = nativeRequest;
                        cancel = nativeCancel
                    }
                }))
            },
        87209:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/animation/fx.js ***!
              \*************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../events/core/events_engine */ 55994));
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../core/errors */ 17381));
                var _element = __webpack_require__( /*! ../core/element */ 6415);
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _translator = __webpack_require__( /*! ./translator */ 31648);
                var _easing = __webpack_require__( /*! ./easing */ 23908);
                var _frame = __webpack_require__( /*! ./frame */ 90057);
                var _support = __webpack_require__( /*! ../core/utils/support */ 60137);
                var _position = _interopRequireDefault(__webpack_require__( /*! ./position */ 49387));
                var _remove = __webpack_require__( /*! ../events/remove */ 29007);
                var _index = __webpack_require__( /*! ../events/utils/index */ 39611);
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();
                const removeEventName = (0, _index.addNamespace)(_remove.removeEvent, "dxFX");
                const RELATIVE_VALUE_REGEX = /^([+-])=(.*)/i;
                const TransitionAnimationStrategy = {
                    initAnimation: function($element, config) {
                        $element.css({
                            transitionProperty: "none"
                        });
                        if ("string" === typeof config.from) {
                            $element.addClass(config.from)
                        } else {
                            setProps($element, config.from)
                        }
                        const that = this;
                        const deferred = new _deferred.Deferred;
                        const cleanupWhen = config.cleanupWhen;
                        config.transitionAnimation = {
                            deferred: deferred,
                            finish: function() {
                                that._finishTransition($element);
                                if (cleanupWhen) {
                                    (0, _deferred.when)(deferred, cleanupWhen).always((function() {
                                        that._cleanup($element, config)
                                    }))
                                } else {
                                    that._cleanup($element, config)
                                }
                                deferred.resolveWith($element, [config, $element])
                            }
                        };
                        this._completeAnimationCallback($element, config).done((function() {
                            config.transitionAnimation.finish()
                        })).fail((function() {
                            deferred.rejectWith($element, [config, $element])
                        }));
                        if (!config.duration) {
                            config.transitionAnimation.finish()
                        }
                        $element.css("transform")
                    },
                    animate: function($element, config) {
                        this._startAnimation($element, config);
                        return config.transitionAnimation.deferred.promise()
                    },
                    _completeAnimationCallback: function($element, config) {
                        const that = this;
                        const startTime = Date.now() + config.delay;
                        const deferred = new _deferred.Deferred;
                        const transitionEndFired = new _deferred.Deferred;
                        const simulatedTransitionEndFired = new _deferred.Deferred;
                        let simulatedEndEventTimer;
                        const transitionEndEventFullName = (0, _support.transitionEndEventName)() + ".dxFX";
                        config.transitionAnimation.cleanup = function() {
                            clearTimeout(simulatedEndEventTimer);
                            clearTimeout(waitForJSCompleteTimer);
                            _events_engine.default.off($element, transitionEndEventFullName);
                            _events_engine.default.off($element, removeEventName)
                        };
                        _events_engine.default.one($element, transitionEndEventFullName, (function() {
                            if (Date.now() - startTime >= config.duration) {
                                transitionEndFired.reject()
                            }
                        }));
                        _events_engine.default.off($element, removeEventName);
                        _events_engine.default.on($element, removeEventName, (function() {
                            that.stop($element, config);
                            deferred.reject()
                        }));
                        const waitForJSCompleteTimer = setTimeout((function() {
                            simulatedEndEventTimer = setTimeout((function() {
                                simulatedTransitionEndFired.reject()
                            }), config.duration + config.delay + fx._simulatedTransitionEndDelay);
                            (0, _deferred.when)(transitionEndFired, simulatedTransitionEndFired).fail(function() {
                                deferred.resolve()
                            }.bind(this))
                        }));
                        return deferred.promise()
                    },
                    _startAnimation: function($element, config) {
                        $element.css({
                            transitionProperty: "all",
                            transitionDelay: config.delay + "ms",
                            transitionDuration: config.duration + "ms",
                            transitionTimingFunction: config.easing
                        });
                        if ("string" === typeof config.to) {
                            $element[0].className += " " + config.to
                        } else if (config.to) {
                            setProps($element, config.to)
                        }
                    },
                    _finishTransition: function($element) {
                        $element.css("transition", "none")
                    },
                    _cleanup: function($element, config) {
                        config.transitionAnimation.cleanup();
                        if ("string" === typeof config.from) {
                            $element.removeClass(config.from);
                            $element.removeClass(config.to)
                        }
                    },
                    stop: function($element, config, jumpToEnd) {
                        if (!config) {
                            return
                        }
                        if (jumpToEnd) {
                            config.transitionAnimation.finish()
                        } else {
                            if ((0, _type.isPlainObject)(config.to)) {
                                (0, _iterator.each)(config.to, (function(key) {
                                    $element.css(key, $element.css(key))
                                }))
                            }
                            this._finishTransition($element);
                            this._cleanup($element, config)
                        }
                    }
                };
                const FrameAnimationStrategy = {
                    initAnimation: function($element, config) {
                        setProps($element, config.from)
                    },
                    animate: function($element, config) {
                        const deferred = new _deferred.Deferred;
                        const that = this;
                        if (!config) {
                            return deferred.reject().promise()
                        }(0, _iterator.each)(config.to, (function(prop) {
                            if (void 0 === config.from[prop]) {
                                config.from[prop] = that._normalizeValue($element.css(prop))
                            }
                        }));
                        if (config.to.transform) {
                            config.from.transform = that._parseTransform(config.from.transform);
                            config.to.transform = that._parseTransform(config.to.transform)
                        }
                        config.frameAnimation = {
                            to: config.to,
                            from: config.from,
                            currentValue: config.from,
                            easing: (0, _easing.convertTransitionTimingFuncToEasing)(config.easing),
                            duration: config.duration,
                            startTime: (new Date).valueOf(),
                            finish: function() {
                                this.currentValue = this.to;
                                this.draw();
                                (0, _frame.cancelAnimationFrame)(config.frameAnimation.animationFrameId);
                                deferred.resolve()
                            },
                            draw: function() {
                                if (config.draw) {
                                    config.draw(this.currentValue);
                                    return
                                }
                                const currentValue = (0, _extend.extend)({}, this.currentValue);
                                if (currentValue.transform) {
                                    currentValue.transform = (0, _iterator.map)(currentValue.transform, (function(value, prop) {
                                        if ("translate" === prop) {
                                            return (0, _translator.getTranslateCss)(value)
                                        } else if ("scale" === prop) {
                                            return "scale(" + value + ")"
                                        } else if ("rotate" === prop.substr(0, prop.length - 1)) {
                                            return prop + "(" + value + "deg)"
                                        }
                                    })).join(" ")
                                }
                                $element.css(currentValue)
                            }
                        };
                        if (config.delay) {
                            config.frameAnimation.startTime += config.delay;
                            config.frameAnimation.delayTimeout = setTimeout((function() {
                                that._startAnimation($element, config)
                            }), config.delay)
                        } else {
                            that._startAnimation($element, config)
                        }
                        return deferred.promise()
                    },
                    _startAnimation: function($element, config) {
                        _events_engine.default.off($element, removeEventName);
                        _events_engine.default.on($element, removeEventName, (function() {
                            if (config.frameAnimation) {
                                (0, _frame.cancelAnimationFrame)(config.frameAnimation.animationFrameId)
                            }
                        }));
                        this._animationStep($element, config)
                    },
                    _parseTransform: function(transformString) {
                        const result = {};
                        (0, _iterator.each)(transformString.match(/\w+\d*\w*\([^)]*\)\s*/g), (function(i, part) {
                            const translateData = (0, _translator.parseTranslate)(part);
                            const scaleData = part.match(/scale\((.+?)\)/);
                            const rotateData = part.match(/(rotate.)\((.+)deg\)/);
                            if (translateData) {
                                result.translate = translateData
                            }
                            if (scaleData && scaleData[1]) {
                                result.scale = parseFloat(scaleData[1])
                            }
                            if (rotateData && rotateData[1]) {
                                result[rotateData[1]] = parseFloat(rotateData[2])
                            }
                        }));
                        return result
                    },
                    stop: function($element, config, jumpToEnd) {
                        const frameAnimation = config && config.frameAnimation;
                        if (!frameAnimation) {
                            return
                        }(0, _frame.cancelAnimationFrame)(frameAnimation.animationFrameId);
                        clearTimeout(frameAnimation.delayTimeout);
                        if (jumpToEnd) {
                            frameAnimation.finish()
                        }
                        delete config.frameAnimation
                    },
                    _animationStep: function($element, config) {
                        const frameAnimation = config && config.frameAnimation;
                        if (!frameAnimation) {
                            return
                        }
                        const now = (new Date).valueOf();
                        if (now >= frameAnimation.startTime + frameAnimation.duration) {
                            frameAnimation.finish();
                            return
                        }
                        frameAnimation.currentValue = this._calcStepValue(frameAnimation, now - frameAnimation.startTime);
                        frameAnimation.draw();
                        const that = this;
                        frameAnimation.animationFrameId = (0, _frame.requestAnimationFrame)((function() {
                            that._animationStep($element, config)
                        }))
                    },
                    _calcStepValue: function(frameAnimation, currentDuration) {
                        const calcValueRecursively = function(from, to) {
                            const result = Array.isArray(to) ? [] : {};
                            (0, _iterator.each)(to, (function(propName, endPropValue) {
                                if ("string" === typeof endPropValue && false === parseFloat(endPropValue)) {
                                    return true
                                }
                                result[propName] = "object" === typeof endPropValue ? calcValueRecursively(from[propName], endPropValue) : function(propName) {
                                    const x = currentDuration / frameAnimation.duration;
                                    const t = currentDuration;
                                    const b = 1 * from[propName];
                                    const c = to[propName] - from[propName];
                                    const d = frameAnimation.duration;
                                    return (0, _easing.getEasing)(frameAnimation.easing)(x, t, b, c, d)
                                }(propName)
                            }));
                            return result
                        };
                        return calcValueRecursively(frameAnimation.from, frameAnimation.to)
                    },
                    _normalizeValue: function(value) {
                        const numericValue = parseFloat(value);
                        if (false === numericValue) {
                            return value
                        }
                        return numericValue
                    }
                };
                const FallbackToNoAnimationStrategy = {
                    initAnimation: function() {},
                    animate: function() {
                        return (new _deferred.Deferred).resolve().promise()
                    },
                    stop: _common.noop,
                    isSynchronous: true
                };
                const baseConfigValidator = function(config, animationType, validate, typeMessage) {
                    (0, _iterator.each)(["from", "to"], (function() {
                        if (!validate(config[this])) {
                            throw _errors.default.Error("E0010", animationType, this, typeMessage)
                        }
                    }))
                };
                const isObjectConfigValidator = function(config, animationType) {
                    return baseConfigValidator(config, animationType, (function(target) {
                        return (0, _type.isPlainObject)(target)
                    }), "a plain object")
                };
                const CssAnimationConfigurator = {
                    validateConfig: function(config) {
                        ! function(config, animationType) {
                            return baseConfigValidator(config, animationType, (function(target) {
                                return "string" === typeof target
                            }), "a string")
                        }(config, "css")
                    },
                    setup: function() {}
                };
                const positionAliases = {
                    top: {
                        my: "bottom center",
                        at: "top center"
                    },
                    bottom: {
                        my: "top center",
                        at: "bottom center"
                    },
                    right: {
                        my: "left center",
                        at: "right center"
                    },
                    left: {
                        my: "right center",
                        at: "left center"
                    }
                };
                const SlideAnimationConfigurator = {
                    validateConfig: function(config) {
                        isObjectConfigValidator(config, "slide")
                    },
                    setup: function($element, config) {
                        const location = (0, _translator.locate)($element);
                        if ("slide" !== config.type) {
                            const positioningConfig = "slideIn" === config.type ? config.from : config.to;
                            positioningConfig.position = (0, _extend.extend)({
                                of: window
                            }, positionAliases[config.direction]);
                            setupPosition($element, positioningConfig)
                        }
                        this._setUpConfig(location, config.from);
                        this._setUpConfig(location, config.to);
                        (0, _translator.clearCache)($element)
                    },
                    _setUpConfig: function(location, config) {
                        config.left = "left" in config ? config.left : "+=0";
                        config.top = "top" in config ? config.top : "+=0";
                        this._initNewPosition(location, config)
                    },
                    _initNewPosition: function(location, config) {
                        const position = {
                            left: config.left,
                            top: config.top
                        };
                        delete config.left;
                        delete config.top;
                        let relativeValue = this._getRelativeValue(position.left);
                        if (void 0 !== relativeValue) {
                            position.left = relativeValue + location.left
                        } else {
                            config.left = 0
                        }
                        relativeValue = this._getRelativeValue(position.top);
                        if (void 0 !== relativeValue) {
                            position.top = relativeValue + location.top
                        } else {
                            config.top = 0
                        }
                        config.transform = (0, _translator.getTranslateCss)({
                            x: position.left,
                            y: position.top
                        })
                    },
                    _getRelativeValue: function(value) {
                        let relativeValue;
                        if ("string" === typeof value && (relativeValue = RELATIVE_VALUE_REGEX.exec(value))) {
                            return parseInt(relativeValue[1] + "1") * relativeValue[2]
                        }
                    }
                };
                const FadeAnimationConfigurator = {
                    setup: function($element, config) {
                        var _from$opacity, _to$opacity;
                        const from = config.from;
                        const to = config.to;
                        const defaultFromOpacity = "fadeOut" === config.type ? 1 : 0;
                        const defaultToOpacity = "fadeOut" === config.type ? 0 : 1;
                        let fromOpacity = (0, _type.isPlainObject)(from) ? String(null !== (_from$opacity = from.opacity) && void 0 !== _from$opacity ? _from$opacity : defaultFromOpacity) : String(from);
                        let toOpacity = (0, _type.isPlainObject)(to) ? String(null !== (_to$opacity = to.opacity) && void 0 !== _to$opacity ? _to$opacity : defaultToOpacity) : String(to);
                        if (!config.skipElementInitialStyles) {
                            fromOpacity = $element.css("opacity")
                        }
                        switch (config.type) {
                            case "fadeIn":
                                toOpacity = 1;
                                break;
                            case "fadeOut":
                                toOpacity = 0
                        }
                        config.from = {
                            visibility: "visible",
                            opacity: fromOpacity
                        };
                        config.to = {
                            opacity: toOpacity
                        }
                    }
                };
                const PopAnimationConfigurator = {
                    validateConfig: function(config) {
                        isObjectConfigValidator(config, "pop")
                    },
                    setup: function($element, config) {
                        const from = config.from;
                        const to = config.to;
                        const fromOpacity = "opacity" in from ? from.opacity : $element.css("opacity");
                        const toOpacity = "opacity" in to ? to.opacity : 1;
                        const fromScale = "scale" in from ? from.scale : 0;
                        const toScale = "scale" in to ? to.scale : 1;
                        config.from = {
                            opacity: fromOpacity
                        };
                        const translate = (0, _translator.getTranslate)($element);
                        config.from.transform = this._getCssTransform(translate, fromScale);
                        config.to = {
                            opacity: toOpacity
                        };
                        config.to.transform = this._getCssTransform(translate, toScale)
                    },
                    _getCssTransform: function(translate, scale) {
                        return (0, _translator.getTranslateCss)(translate) + "scale(" + scale + ")"
                    }
                };
                const animationConfigurators = {
                    custom: {
                        setup: function() {}
                    },
                    slide: SlideAnimationConfigurator,
                    slideIn: SlideAnimationConfigurator,
                    slideOut: SlideAnimationConfigurator,
                    fade: FadeAnimationConfigurator,
                    fadeIn: FadeAnimationConfigurator,
                    fadeOut: FadeAnimationConfigurator,
                    pop: PopAnimationConfigurator,
                    css: CssAnimationConfigurator
                };
                const defaultJSConfig = {
                    type: "custom",
                    from: {},
                    to: {},
                    duration: 400,
                    start: _common.noop,
                    complete: _common.noop,
                    easing: "ease",
                    delay: 0
                };
                const defaultCssConfig = {
                    duration: 400,
                    easing: "ease",
                    delay: 0
                };

                function setupAnimationOnElement() {
                    const $element = this.element;
                    const config = this.config;
                    setupPosition($element, config.from);
                    setupPosition($element, config.to);
                    this.configurator.setup($element, config);
                    $element.data("dxAnimData", this);
                    if (fx.off) {
                        config.duration = 0;
                        config.delay = 0
                    }
                    this.strategy.initAnimation($element, config);
                    if (config.start) {
                        const element = (0, _element.getPublicElement)($element);
                        config.start.apply(this, [element, config])
                    }
                }
                const startAnimationOnElement = function() {
                    const animation = this;
                    const $element = animation.element;
                    const config = animation.config;
                    animation.isStarted = true;
                    return animation.strategy.animate($element, config).done((function() {
                        ! function(animation) {
                            const $element = animation.element;
                            const config = animation.config;
                            $element.removeData("dxAnimData");
                            if (config.complete) {
                                const element = (0, _element.getPublicElement)($element);
                                config.complete.apply(this, [element, config])
                            }
                            animation.deferred.resolveWith(this, [$element, config])
                        }(animation)
                    })).fail((function() {
                        animation.deferred.rejectWith(this, [$element, config])
                    }))
                };
                const stopAnimationOnElement = function(jumpToEnd) {
                    const animation = this;
                    const $element = animation.element;
                    const config = animation.config;
                    clearTimeout(animation.startTimeout);
                    if (!animation.isStarted) {
                        animation.start()
                    }
                    animation.strategy.stop($element, config, jumpToEnd)
                };
                const scopedRemoveEvent = (0, _index.addNamespace)(_remove.removeEvent, "dxFXStartAnimation");
                const createAnimation = function(element, initialConfig) {
                    const defaultConfig = "css" === initialConfig.type ? defaultCssConfig : defaultJSConfig;
                    const config = (0, _extend.extend)(true, {}, defaultConfig, initialConfig);
                    const configurator = function(config) {
                        const result = animationConfigurators[config.type];
                        if (!result) {
                            throw _errors.default.Error("E0011", config.type)
                        }
                        return result
                    }(config);
                    const strategy = function(config) {
                        config = config || {};
                        const animationStrategies = {
                            transition: (0, _support.transition)() ? TransitionAnimationStrategy : FrameAnimationStrategy,
                            frame: FrameAnimationStrategy,
                            noAnimation: FallbackToNoAnimationStrategy
                        };
                        let strategy = config.strategy || "transition";
                        if ("css" === config.type && !(0, _support.transition)()) {
                            strategy = "noAnimation"
                        }
                        return animationStrategies[strategy]
                    }(config);
                    const animation = {
                        element: (0, _renderer.default)(element),
                        config: config,
                        configurator: configurator,
                        strategy: strategy,
                        isSynchronous: strategy.isSynchronous,
                        setup: setupAnimationOnElement,
                        start: startAnimationOnElement,
                        stop: stopAnimationOnElement,
                        deferred: new _deferred.Deferred
                    };
                    if ((0, _type.isFunction)(configurator.validateConfig)) {
                        configurator.validateConfig(config)
                    }! function(animation) {
                        _events_engine.default.off(animation.element, scopedRemoveEvent);
                        _events_engine.default.on(animation.element, scopedRemoveEvent, (function() {
                            fx.stop(animation.element)
                        }));
                        animation.deferred.always((function() {
                            _events_engine.default.off(animation.element, scopedRemoveEvent)
                        }))
                    }(animation);
                    return animation
                };

                function getAnimQueueData($element) {
                    return $element.data("dxAnimQueue") || []
                }
                const destroyAnimQueueData = function($element) {
                    $element.removeData("dxAnimQueue")
                };

                function isAnimating($element) {
                    return !!$element.data("dxAnimData")
                }

                function shiftFromAnimationQueue($element, queueData) {
                    queueData = getAnimQueueData($element);
                    if (!queueData.length) {
                        return
                    }
                    const animation = queueData.shift();
                    if (0 === queueData.length) {
                        destroyAnimQueueData($element)
                    }(function(animation) {
                        animation.setup();
                        if (fx.off || animation.isSynchronous) {
                            animation.start()
                        } else {
                            animation.startTimeout = setTimeout((function() {
                                animation.start()
                            }))
                        }
                        return animation.deferred.promise()
                    })(animation).done((function() {
                        if (!isAnimating($element)) {
                            shiftFromAnimationQueue($element)
                        }
                    }))
                }

                function setupPosition($element, config) {
                    if (!config || !config.position) {
                        return
                    }
                    const win = (0, _renderer.default)(window);
                    let left = 0;
                    let top = 0;
                    const position = _position.default.calculate($element, config.position);
                    const offset = $element.offset();
                    const currentPosition = $element.position();
                    if (currentPosition.top > offset.top) {
                        top = win.scrollTop()
                    }
                    if (currentPosition.left > offset.left) {
                        left = win.scrollLeft()
                    }(0, _extend.extend)(config, {
                        left: position.h.location - offset.left + currentPosition.left - left,
                        top: position.v.location - offset.top + currentPosition.top - top
                    });
                    delete config.position
                }

                function setProps($element, props) {
                    (0, _iterator.each)(props, (function(key, value) {
                        try {
                            $element.css(key, (0, _type.isFunction)(value) ? value() : value)
                        } catch (e) {}
                    }))
                }
                const fx = {
                    off: false,
                    animationTypes: animationConfigurators,
                    animate: function(element, config) {
                        const $element = (0, _renderer.default)(element);
                        if (!$element.length) {
                            return (new _deferred.Deferred).resolve().promise()
                        }
                        const animation = createAnimation($element, config);
                        ! function($element, animation) {
                            const queueData = getAnimQueueData($element);
                            ! function($element, queueData) {
                                $element.data("dxAnimQueue", queueData)
                            }($element, queueData);
                            queueData.push(animation);
                            if (!isAnimating($element)) {
                                shiftFromAnimationQueue($element, queueData)
                            }
                        }($element, animation);
                        return animation.deferred.promise()
                    },
                    createAnimation: createAnimation,
                    isAnimating: isAnimating,
                    stop: function(element, jumpToEnd) {
                        const $element = (0, _renderer.default)(element);
                        const queueData = getAnimQueueData($element);
                        (0, _iterator.each)(queueData, (function(_, animation) {
                            animation.config.delay = 0;
                            animation.config.duration = 0;
                            animation.isSynchronous = true
                        }));
                        if (!isAnimating($element)) {
                            shiftFromAnimationQueue($element, queueData)
                        }
                        const animation = $element.data("dxAnimData");
                        if (animation) {
                            animation.stop(jumpToEnd)
                        }
                        $element.removeData("dxAnimData");
                        destroyAnimQueueData($element)
                    },
                    _simulatedTransitionEndDelay: 100
                };
                var _default = fx;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        49387:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/animation/position.js ***!
              \*******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../core/dom_adapter */ 73349));
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _position = __webpack_require__( /*! ../core/utils/position */ 37518);
                var _browser = _interopRequireDefault(__webpack_require__( /*! ../core/utils/browser */ 47810));
                var _translator = __webpack_require__( /*! ./translator */ 31648);
                var _support = __webpack_require__( /*! ../core/utils/support */ 60137);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../core/devices */ 20530));
                var _style = __webpack_require__( /*! ../core/utils/style */ 80968);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();
                const horzRe = /left|right/;
                const vertRe = /top|bottom/;
                const collisionRe = /fit|flip|none/;
                const scaleRe = /scale\(.+?\)/;
                const IS_SAFARI = _browser.default.safari;
                const normalizeAlign = function(raw) {
                    const result = {
                        h: "center",
                        v: "center"
                    };
                    const pair = (0, _common.splitPair)(raw);
                    if (pair) {
                        (0, _iterator.each)(pair, (function() {
                            const w = String(this).toLowerCase();
                            if (horzRe.test(w)) {
                                result.h = w
                            } else if (vertRe.test(w)) {
                                result.v = w
                            }
                        }))
                    }
                    return result
                };
                const normalizeOffset = function(raw, preventRound) {
                    return (0, _common.pairToObject)(raw, preventRound)
                };
                const getAlignFactor = function(align) {
                    switch (align) {
                        case "center":
                            return .5;
                        case "right":
                        case "bottom":
                            return 1;
                        default:
                            return 0
                    }
                };
                const inverseAlign = function(align) {
                    switch (align) {
                        case "left":
                            return "right";
                        case "right":
                            return "left";
                        case "top":
                            return "bottom";
                        case "bottom":
                            return "top";
                        default:
                            return align
                    }
                };
                const calculateOversize = function(data, bounds) {
                    let oversize = 0;
                    if (data.myLocation < bounds.min) {
                        oversize += bounds.min - data.myLocation
                    }
                    if (data.myLocation > bounds.max) {
                        oversize += data.myLocation - bounds.max
                    }
                    return oversize
                };
                const collisionSide = function(direction, data, bounds) {
                    if (data.myLocation < bounds.min) {
                        return "h" === direction ? "left" : "top"
                    }
                    if (data.myLocation > bounds.max) {
                        return "h" === direction ? "right" : "bottom"
                    }
                    return "none"
                };
                const initMyLocation = function(data) {
                    data.myLocation = data.atLocation + getAlignFactor(data.atAlign) * data.atSize - getAlignFactor(data.myAlign) * data.mySize + data.offset
                };
                const collisionResolvers = {
                    fit: function(data, bounds) {
                        let result = false;
                        if (data.myLocation > bounds.max) {
                            data.myLocation = bounds.max;
                            result = true
                        }
                        if (data.myLocation < bounds.min) {
                            data.myLocation = bounds.min;
                            result = true
                        }
                        data.fit = result
                    },
                    flip: function(data, bounds) {
                        data.flip = false;
                        if ("center" === data.myAlign && "center" === data.atAlign) {
                            return
                        }
                        if (data.myLocation < bounds.min || data.myLocation > bounds.max) {
                            const inverseData = (0, _extend.extend)({}, data, {
                                myAlign: inverseAlign(data.myAlign),
                                atAlign: inverseAlign(data.atAlign),
                                offset: -data.offset
                            });
                            initMyLocation(inverseData);
                            inverseData.oversize = calculateOversize(inverseData, bounds);
                            if (inverseData.myLocation >= bounds.min && inverseData.myLocation <= bounds.max || data.oversize > inverseData.oversize) {
                                data.myLocation = inverseData.myLocation;
                                data.oversize = inverseData.oversize;
                                data.flip = true
                            }
                        }
                    },
                    flipfit: function(data, bounds) {
                        this.flip(data, bounds);
                        this.fit(data, bounds)
                    },
                    none: function(data) {
                        data.oversize = 0
                    }
                };
                let scrollbarWidth;
                const calculateScrollbarWidth = function() {
                    const $scrollDiv = (0, _renderer.default)("<div>").css({
                        width: 100,
                        height: 100,
                        overflow: "scroll",
                        position: "absolute",
                        top: -9999
                    }).appendTo((0, _renderer.default)("body"));
                    const result = $scrollDiv.get(0).offsetWidth - $scrollDiv.get(0).clientWidth;
                    $scrollDiv.remove();
                    scrollbarWidth = result
                };
                const defaultPositionResult = {
                    h: {
                        location: 0,
                        flip: false,
                        fit: false,
                        oversize: 0
                    },
                    v: {
                        location: 0,
                        flip: false,
                        fit: false,
                        oversize: 0
                    }
                };
                const calculatePosition = function(what, options) {
                    const $what = (0, _renderer.default)(what);
                    const currentOffset = $what.offset();
                    const result = (0, _extend.extend)(true, {}, defaultPositionResult, {
                        h: {
                            location: currentOffset.left
                        },
                        v: {
                            location: currentOffset.top
                        }
                    });
                    if (!options) {
                        return result
                    }
                    const my = normalizeAlign(options.my);
                    const at = normalizeAlign(options.at);
                    let of = (0, _renderer.default)(options.of).length && options.of || window;
                    const offset = normalizeOffset(options.offset, options.precise);
                    const collision = function(raw) {
                        const pair = (0, _common.splitPair)(raw);
                        let h = String(pair && pair[0]).toLowerCase();
                        let v = String(pair && pair[1]).toLowerCase();
                        if (!collisionRe.test(h)) {
                            h = "none"
                        }
                        if (!collisionRe.test(v)) {
                            v = h
                        }
                        return {
                            h: h,
                            v: v
                        }
                    }(options.collision);
                    const boundary = options.boundary;
                    const boundaryOffset = normalizeOffset(options.boundaryOffset, options.precise);
                    const h = {
                        mySize: (0, _size.getOuterWidth)($what),
                        myAlign: my.h,
                        atAlign: at.h,
                        offset: offset.h,
                        collision: collision.h,
                        boundaryOffset: boundaryOffset.h
                    };
                    const v = {
                        mySize: (0, _size.getOuterHeight)($what),
                        myAlign: my.v,
                        atAlign: at.v,
                        offset: offset.v,
                        collision: collision.v,
                        boundaryOffset: boundaryOffset.v
                    };
                    if (of.preventDefault) {
                        h.atLocation = of.pageX;
                        v.atLocation = of.pageY;
                        h.atSize = 0;
                        v.atSize = 0
                    } else {
                        of = (0, _renderer.default)(of);
                        if ((0, _type.isWindow)(of [0])) {
                            h.atLocation = of.scrollLeft();
                            v.atLocation = of.scrollTop();
                            if ("phone" === _devices.default.real().deviceType && of [0].visualViewport) {
                                h.atLocation = Math.max(h.atLocation, of [0].visualViewport.offsetLeft);
                                v.atLocation = Math.max(v.atLocation, of [0].visualViewport.offsetTop);
                                h.atSize = of [0].visualViewport.width;
                                v.atSize = of [0].visualViewport.height
                            } else {
                                h.atSize = of [0].innerWidth > of [0].outerWidth ? of [0].innerWidth : (0, _size.getWidth)(of);
                                v.atSize = of [0].innerHeight > of [0].outerHeight || IS_SAFARI ? of [0].innerHeight : (0, _size.getHeight)(of)
                            }
                        } else if (9 === of [0].nodeType) {
                            h.atLocation = 0;
                            v.atLocation = 0;
                            h.atSize = (0, _size.getWidth)(of);
                            v.atSize = (0, _size.getHeight)(of)
                        } else {
                            const ofRect = (0, _position.getBoundingRect)(of.get(0));
                            const o = getOffsetWithoutScale(of);
                            h.atLocation = o.left;
                            v.atLocation = o.top;
                            h.atSize = Math.max(ofRect.width, (0, _size.getOuterWidth)(of));
                            v.atSize = Math.max(ofRect.height, (0, _size.getOuterHeight)(of))
                        }
                    }
                    initMyLocation(h);
                    initMyLocation(v);
                    const bounds = function() {
                        const win = (0, _renderer.default)(window);
                        const windowWidth = (0, _size.getWidth)(win);
                        const windowHeight = (0, _size.getHeight)(win);
                        let left = win.scrollLeft();
                        let top = win.scrollTop();
                        const documentElement = _dom_adapter.default.getDocumentElement();
                        const hZoomLevel = _support.touch ? documentElement.clientWidth / windowWidth : 1;
                        const vZoomLevel = _support.touch ? documentElement.clientHeight / windowHeight : 1;
                        if (void 0 === scrollbarWidth) {
                            calculateScrollbarWidth()
                        }
                        let boundaryWidth = windowWidth;
                        let boundaryHeight = windowHeight;
                        if (boundary && !(0, _type.isWindow)(boundary)) {
                            const $boundary = (0, _renderer.default)(boundary);
                            const boundaryPosition = $boundary.offset();
                            left = boundaryPosition.left;
                            top = boundaryPosition.top;
                            boundaryWidth = (0, _size.getWidth)($boundary);
                            boundaryHeight = (0, _size.getHeight)($boundary)
                        }
                        return {
                            h: {
                                min: left + h.boundaryOffset,
                                max: left + boundaryWidth / hZoomLevel - h.mySize - h.boundaryOffset
                            },
                            v: {
                                min: top + v.boundaryOffset,
                                max: top + boundaryHeight / vZoomLevel - v.mySize - v.boundaryOffset
                            }
                        }
                    }();
                    h.oversize = calculateOversize(h, bounds.h);
                    v.oversize = calculateOversize(v, bounds.v);
                    h.collisionSide = collisionSide("h", h, bounds.h);
                    v.collisionSide = collisionSide("v", v, bounds.v);
                    if (collisionResolvers[h.collision]) {
                        collisionResolvers[h.collision](h, bounds.h)
                    }
                    if (collisionResolvers[v.collision]) {
                        collisionResolvers[v.collision](v, bounds.v)
                    }
                    const preciser = function(number) {
                        return options.precise ? number : Math.round(number)
                    };
                    (0, _extend.extend)(true, result, {
                        h: {
                            location: preciser(h.myLocation),
                            oversize: preciser(h.oversize),
                            fit: h.fit,
                            flip: h.flip,
                            collisionSide: h.collisionSide
                        },
                        v: {
                            location: preciser(v.myLocation),
                            oversize: preciser(v.oversize),
                            fit: v.fit,
                            flip: v.flip,
                            collisionSide: v.collisionSide
                        },
                        precise: options.precise
                    });
                    return result
                };
                const setScaleProperty = function(element, scale, styleAttr, isEmpty) {
                    const stylePropIsValid = (0, _type.isDefined)(element.style) && !_dom_adapter.default.isNode(element.style);
                    const newStyleValue = isEmpty ? styleAttr.replace(scale, "") : styleAttr;
                    if (stylePropIsValid) {
                        (0, _style.setStyle)(element, newStyleValue, false)
                    } else {
                        const styleAttributeNode = _dom_adapter.default.createAttribute("style");
                        styleAttributeNode.value = newStyleValue;
                        element.setAttributeNode(styleAttributeNode)
                    }
                };
                const getOffsetWithoutScale = function($startElement) {
                    var _currentElement$getAt, _style$match;
                    let $currentElement = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : $startElement;
                    const currentElement = $currentElement.get(0);
                    if (!currentElement) {
                        return $startElement.offset()
                    }
                    const style = (null === (_currentElement$getAt = currentElement.getAttribute) || void 0 === _currentElement$getAt ? void 0 : _currentElement$getAt.call(currentElement, "style")) || "";
                    const scale = null === (_style$match = style.match(scaleRe)) || void 0 === _style$match ? void 0 : _style$match[0];
                    let offset;
                    if (scale) {
                        setScaleProperty(currentElement, scale, style, true);
                        offset = getOffsetWithoutScale($startElement, $currentElement.parent());
                        setScaleProperty(currentElement, scale, style, false)
                    } else {
                        offset = getOffsetWithoutScale($startElement, $currentElement.parent())
                    }
                    return offset
                };
                const position = function(what, options) {
                    const $what = (0, _renderer.default)(what);
                    if (!options) {
                        return $what.offset()
                    }(0, _translator.resetPosition)($what, true);
                    const offset = getOffsetWithoutScale($what);
                    const targetPosition = options.h && options.v ? options : calculatePosition($what, options);
                    const preciser = function(number) {
                        return options.precise ? number : Math.round(number)
                    };
                    (0, _translator.move)($what, {
                        left: targetPosition.h.location - preciser(offset.left),
                        top: targetPosition.v.location - preciser(offset.top)
                    });
                    return targetPosition
                };
                if (!position.inverseAlign) {
                    position.inverseAlign = inverseAlign
                }
                if (!position.normalizeAlign) {
                    position.normalizeAlign = normalizeAlign
                }
                var _default = {
                    calculateScrollbarWidth: calculateScrollbarWidth,
                    calculate: calculatePosition,
                    setup: position,
                    offset: function(element) {
                        element = (0, _renderer.default)(element).get(0);
                        if ((0, _type.isWindow)(element)) {
                            return null
                        } else if (element && "pageY" in element && "pageX" in element) {
                            return {
                                top: element.pageY,
                                left: element.pageX
                            }
                        }
                        return (0, _renderer.default)(element).offset()
                    }
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        42814:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/animation/presets/presets.js ***!
              \**************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.presets = exports.PresetCollection = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _component = __webpack_require__( /*! ../../core/component */ 44297);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _fx = _interopRequireDefault(__webpack_require__( /*! ../fx */ 87209));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const directionPostfixes = {
                    forward: " dx-forward",
                    backward: " dx-backward",
                    none: " dx-no-direction",
                    undefined: " dx-no-direction"
                };
                const AnimationPresetCollection = _component.Component.inherit({
                    ctor: function() {
                        this.callBase.apply(this, arguments);
                        this._registeredPresets = [];
                        this.resetToDefaults()
                    },
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            defaultAnimationDuration: 400,
                            defaultAnimationDelay: 0,
                            defaultStaggerAnimationDuration: 300,
                            defaultStaggerAnimationDelay: 40,
                            defaultStaggerAnimationStartDelay: 500
                        })
                    },
                    _defaultOptionsRules: function() {
                        return this.callBase().concat([{
                            device: function(device) {
                                return device.phone
                            },
                            options: {
                                defaultStaggerAnimationDuration: 350,
                                defaultStaggerAnimationDelay: 50,
                                defaultStaggerAnimationStartDelay: 0
                            }
                        }, {
                            device: function() {
                                return _devices.default.current().android || _devices.default.real.android
                            },
                            options: {
                                defaultAnimationDelay: 100
                            }
                        }])
                    },
                    _getPresetOptionName: function(animationName) {
                        return "preset_" + animationName
                    },
                    _createAndroidSlideAnimationConfig: function(throughOpacity, widthMultiplier) {
                        const that = this;
                        const createBaseConfig = function(configModifier) {
                            return {
                                type: "slide",
                                delay: void 0 === configModifier.delay ? that.option("defaultAnimationDelay") : configModifier.delay,
                                duration: void 0 === configModifier.duration ? that.option("defaultAnimationDuration") : configModifier.duration
                            }
                        };
                        return {
                            enter: function($element, configModifier) {
                                const width = (0, _size.getWidth)($element.parent()) * widthMultiplier;
                                const direction = configModifier.direction;
                                const config = createBaseConfig(configModifier);
                                config.to = {
                                    left: 0,
                                    opacity: 1
                                };
                                if ("forward" === direction) {
                                    config.from = {
                                        left: width,
                                        opacity: throughOpacity
                                    }
                                } else if ("backward" === direction) {
                                    config.from = {
                                        left: -width,
                                        opacity: throughOpacity
                                    }
                                } else {
                                    config.from = {
                                        left: 0,
                                        opacity: 0
                                    }
                                }
                                return _fx.default.createAnimation($element, config)
                            },
                            leave: function($element, configModifier) {
                                const width = (0, _size.getWidth)($element.parent()) * widthMultiplier;
                                const direction = configModifier.direction;
                                const config = createBaseConfig(configModifier);
                                config.from = {
                                    left: 0,
                                    opacity: 1
                                };
                                if ("forward" === direction) {
                                    config.to = {
                                        left: -width,
                                        opacity: throughOpacity
                                    }
                                } else if ("backward" === direction) {
                                    config.to = {
                                        left: width,
                                        opacity: throughOpacity
                                    }
                                } else {
                                    config.to = {
                                        left: 0,
                                        opacity: 0
                                    }
                                }
                                return _fx.default.createAnimation($element, config)
                            }
                        }
                    },
                    _createOpenDoorConfig: function() {
                        const that = this;
                        const createBaseConfig = function(configModifier) {
                            return {
                                type: "css",
                                extraCssClasses: "dx-opendoor-animation",
                                delay: void 0 === configModifier.delay ? that.option("defaultAnimationDelay") : configModifier.delay,
                                duration: void 0 === configModifier.duration ? that.option("defaultAnimationDuration") : configModifier.duration
                            }
                        };
                        return {
                            enter: function($element, configModifier) {
                                const direction = configModifier.direction;
                                const config = createBaseConfig(configModifier);
                                config.delay = "none" === direction ? config.delay : config.duration;
                                config.from = "dx-enter dx-opendoor-animation" + directionPostfixes[direction];
                                config.to = "dx-enter-active";
                                return _fx.default.createAnimation($element, config)
                            },
                            leave: function($element, configModifier) {
                                const direction = configModifier.direction;
                                const config = createBaseConfig(configModifier);
                                config.from = "dx-leave dx-opendoor-animation" + directionPostfixes[direction];
                                config.to = "dx-leave-active";
                                return _fx.default.createAnimation($element, config)
                            }
                        }
                    },
                    _createWinPopConfig: function() {
                        const that = this;
                        const baseConfig = {
                            type: "css",
                            extraCssClasses: "dx-win-pop-animation",
                            duration: that.option("defaultAnimationDuration")
                        };
                        return {
                            enter: function($element, configModifier) {
                                const config = baseConfig;
                                const direction = configModifier.direction;
                                config.delay = "none" === direction ? that.option("defaultAnimationDelay") : that.option("defaultAnimationDuration") / 2;
                                config.from = "dx-enter dx-win-pop-animation" + directionPostfixes[direction];
                                config.to = "dx-enter-active";
                                return _fx.default.createAnimation($element, config)
                            },
                            leave: function($element, configModifier) {
                                const config = baseConfig;
                                const direction = configModifier.direction;
                                config.delay = that.option("defaultAnimationDelay");
                                config.from = "dx-leave dx-win-pop-animation" + directionPostfixes[direction];
                                config.to = "dx-leave-active";
                                return _fx.default.createAnimation($element, config)
                            }
                        }
                    },
                    resetToDefaults: function() {
                        this.clear();
                        this.registerDefaultPresets();
                        this.applyChanges()
                    },
                    clear: function(name) {
                        const that = this;
                        const newRegisteredPresets = [];
                        (0, _iterator.each)(this._registeredPresets, (function(index, preset) {
                            if (!name || name === preset.name) {
                                that.option(that._getPresetOptionName(preset.name), void 0)
                            } else {
                                newRegisteredPresets.push(preset)
                            }
                        }));
                        this._registeredPresets = newRegisteredPresets;
                        this.applyChanges()
                    },
                    registerPreset: function(name, config) {
                        this._registeredPresets.push({
                            name: name,
                            config: config
                        })
                    },
                    applyChanges: function() {
                        const that = this;
                        const customRules = [];
                        (0, _iterator.each)(this._registeredPresets, (function(index, preset) {
                            const rule = {
                                device: preset.config.device,
                                options: {}
                            };
                            rule.options[that._getPresetOptionName(preset.name)] = preset.config.animation;
                            customRules.push(rule)
                        }));
                        this._setOptionsByDevice(customRules)
                    },
                    getPreset: function(name) {
                        let result = name;
                        while ("string" === typeof result) {
                            result = this.option(this._getPresetOptionName(result))
                        }
                        return result
                    },
                    registerDefaultPresets: function() {
                        this.registerPreset("pop", {
                            animation: {
                                extraCssClasses: "dx-android-pop-animation",
                                delay: this.option("defaultAnimationDelay"),
                                duration: this.option("defaultAnimationDuration")
                            }
                        });
                        this.registerPreset("openDoor", {
                            animation: this._createOpenDoorConfig()
                        });
                        this.registerPreset("win-pop", {
                            animation: this._createWinPopConfig()
                        });
                        this.registerPreset("fade", {
                            animation: {
                                extraCssClasses: "dx-fade-animation",
                                delay: this.option("defaultAnimationDelay"),
                                duration: this.option("defaultAnimationDuration")
                            }
                        });
                        this.registerPreset("slide", {
                            device: function() {
                                return _devices.default.current().android || _devices.default.real.android
                            },
                            animation: this._createAndroidSlideAnimationConfig(1, 1)
                        });
                        this.registerPreset("slide", {
                            device: function() {
                                return !_devices.default.current().android && !_devices.default.real.android
                            },
                            animation: {
                                extraCssClasses: "dx-slide-animation",
                                delay: this.option("defaultAnimationDelay"),
                                duration: this.option("defaultAnimationDuration")
                            }
                        });
                        this.registerPreset("ios7-slide", {
                            animation: {
                                extraCssClasses: "dx-ios7-slide-animation",
                                delay: this.option("defaultAnimationDelay"),
                                duration: this.option("defaultAnimationDuration")
                            }
                        });
                        this.registerPreset("overflow", {
                            animation: {
                                extraCssClasses: "dx-overflow-animation",
                                delay: this.option("defaultAnimationDelay"),
                                duration: this.option("defaultAnimationDuration")
                            }
                        });
                        this.registerPreset("ios7-toolbar", {
                            device: function() {
                                return !_devices.default.current().android && !_devices.default.real.android
                            },
                            animation: {
                                extraCssClasses: "dx-ios7-toolbar-animation",
                                delay: this.option("defaultAnimationDelay"),
                                duration: this.option("defaultAnimationDuration")
                            }
                        });
                        this.registerPreset("ios7-toolbar", {
                            device: function() {
                                return _devices.default.current().android || _devices.default.real.android
                            },
                            animation: this._createAndroidSlideAnimationConfig(0, .4)
                        });
                        this.registerPreset("stagger-fade", {
                            animation: {
                                extraCssClasses: "dx-fade-animation",
                                staggerDelay: this.option("defaultStaggerAnimationDelay"),
                                duration: this.option("defaultStaggerAnimationDuration"),
                                delay: this.option("defaultStaggerAnimationStartDelay")
                            }
                        });
                        this.registerPreset("stagger-slide", {
                            animation: {
                                extraCssClasses: "dx-slide-animation",
                                staggerDelay: this.option("defaultStaggerAnimationDelay"),
                                duration: this.option("defaultStaggerAnimationDuration"),
                                delay: this.option("defaultStaggerAnimationStartDelay")
                            }
                        });
                        this.registerPreset("stagger-fade-slide", {
                            animation: {
                                extraCssClasses: "dx-fade-slide-animation",
                                staggerDelay: this.option("defaultStaggerAnimationDelay"),
                                duration: this.option("defaultStaggerAnimationDuration"),
                                delay: this.option("defaultStaggerAnimationStartDelay")
                            }
                        });
                        this.registerPreset("stagger-drop", {
                            animation: {
                                extraCssClasses: "dx-drop-animation",
                                staggerDelay: this.option("defaultStaggerAnimationDelay"),
                                duration: this.option("defaultStaggerAnimationDuration"),
                                delay: this.option("defaultStaggerAnimationStartDelay")
                            }
                        });
                        this.registerPreset("stagger-fade-drop", {
                            animation: {
                                extraCssClasses: "dx-fade-drop-animation",
                                staggerDelay: this.option("defaultStaggerAnimationDelay"),
                                duration: this.option("defaultStaggerAnimationDuration"),
                                delay: this.option("defaultStaggerAnimationStartDelay")
                            }
                        });
                        this.registerPreset("stagger-fade-rise", {
                            animation: {
                                extraCssClasses: "dx-fade-rise-animation",
                                staggerDelay: this.option("defaultStaggerAnimationDelay"),
                                duration: this.option("defaultStaggerAnimationDuration"),
                                delay: this.option("defaultStaggerAnimationStartDelay")
                            }
                        });
                        this.registerPreset("stagger-3d-drop", {
                            animation: {
                                extraCssClasses: "dx-3d-drop-animation",
                                staggerDelay: this.option("defaultStaggerAnimationDelay"),
                                duration: this.option("defaultStaggerAnimationDuration"),
                                delay: this.option("defaultStaggerAnimationStartDelay")
                            }
                        });
                        this.registerPreset("stagger-fade-zoom", {
                            animation: {
                                extraCssClasses: "dx-fade-zoom-animation",
                                staggerDelay: this.option("defaultStaggerAnimationDelay"),
                                duration: this.option("defaultStaggerAnimationDuration"),
                                delay: this.option("defaultStaggerAnimationStartDelay")
                            }
                        })
                    }
                });
                exports.PresetCollection = AnimationPresetCollection;
                const animationPresets = new AnimationPresetCollection;
                exports.presets = animationPresets
            },
        52431:
            /*!**************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/animation/transition_executor/transition_executor.js ***!
              \**************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.TransitionExecutor = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 38377));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _fx = _interopRequireDefault(__webpack_require__( /*! ../fx */ 87209));
                var _presets = __webpack_require__( /*! ../presets/presets */ 42814);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const directionPostfixes = {
                    forward: " dx-forward",
                    backward: " dx-backward",
                    none: " dx-no-direction",
                    undefined: " dx-no-direction"
                };
                const TransitionExecutor = _class.default.inherit({
                    ctor: function() {
                        this._accumulatedDelays = {
                            enter: 0,
                            leave: 0
                        };
                        this._animations = [];
                        this.reset()
                    },
                    _createAnimations: function($elements, initialConfig, configModifier, type) {
                        $elements = (0, _renderer.default)($elements);
                        const that = this;
                        const result = [];
                        configModifier = configModifier || {};
                        const animationConfig = this._prepareElementAnimationConfig(initialConfig, configModifier, type);
                        if (animationConfig) {
                            $elements.each((function() {
                                const animation = that._createAnimation((0, _renderer.default)(this), animationConfig, configModifier);
                                if (animation) {
                                    animation.element.addClass("dx-animating");
                                    animation.setup();
                                    result.push(animation)
                                }
                            }))
                        }
                        return result
                    },
                    _prepareElementAnimationConfig: function(config, configModifier, type) {
                        let result;
                        if ("string" === typeof config) {
                            const presetName = config;
                            config = _presets.presets.getPreset(presetName)
                        }
                        if (!config) {
                            result = void 0
                        } else if ((0, _type.isFunction)(config[type])) {
                            result = config[type]
                        } else {
                            result = (0, _extend.extend)({
                                skipElementInitialStyles: true,
                                cleanupWhen: this._completePromise
                            }, config, configModifier);
                            if (!result.type || "css" === result.type) {
                                const cssClass = "dx-" + type;
                                const extraCssClasses = (result.extraCssClasses ? " " + result.extraCssClasses : "") + directionPostfixes[result.direction];
                                result.type = "css";
                                result.from = (result.from || cssClass) + extraCssClasses;
                                result.to = result.to || cssClass + "-active"
                            }
                            result.staggerDelay = result.staggerDelay || 0;
                            result.delay = result.delay || 0;
                            if (result.staggerDelay) {
                                result.delay += this._accumulatedDelays[type];
                                this._accumulatedDelays[type] += result.staggerDelay
                            }
                        }
                        return result
                    },
                    _createAnimation: function($element, animationConfig, configModifier) {
                        let result;
                        if ((0, _type.isPlainObject)(animationConfig)) {
                            result = _fx.default.createAnimation($element, animationConfig)
                        } else if ((0, _type.isFunction)(animationConfig)) {
                            result = animationConfig($element, configModifier)
                        }
                        return result
                    },
                    _startAnimations: function() {
                        const animations = this._animations;
                        for (let i = 0; i < animations.length; i++) {
                            animations[i].start()
                        }
                    },
                    _stopAnimations: function(jumpToEnd) {
                        const animations = this._animations;
                        for (let i = 0; i < animations.length; i++) {
                            animations[i].stop(jumpToEnd)
                        }
                    },
                    _clearAnimations: function() {
                        const animations = this._animations;
                        for (let i = 0; i < animations.length; i++) {
                            animations[i].element.removeClass("dx-animating")
                        }
                        this._animations.length = 0
                    },
                    reset: function() {
                        this._accumulatedDelays.enter = 0;
                        this._accumulatedDelays.leave = 0;
                        this._clearAnimations();
                        this._completeDeferred = new _deferred.Deferred;
                        this._completePromise = this._completeDeferred.promise()
                    },
                    enter: function($elements, animationConfig, configModifier) {
                        const animations = this._createAnimations($elements, animationConfig, configModifier, "enter");
                        this._animations.push.apply(this._animations, animations)
                    },
                    leave: function($elements, animationConfig, configModifier) {
                        const animations = this._createAnimations($elements, animationConfig, configModifier, "leave");
                        this._animations.push.apply(this._animations, animations)
                    },
                    start: function() {
                        const that = this;
                        let result;
                        if (!this._animations.length) {
                            that.reset();
                            result = (new _deferred.Deferred).resolve().promise()
                        } else {
                            const animationDeferreds = (0, _iterator.map)(this._animations, (function(animation) {
                                const result = new _deferred.Deferred;
                                animation.deferred.always((function() {
                                    result.resolve()
                                }));
                                return result.promise()
                            }));
                            result = _deferred.when.apply(_renderer.default, animationDeferreds).always((function() {
                                that._completeDeferred.resolve();
                                that.reset()
                            }));
                            (0, _common.executeAsync)((function() {
                                that._startAnimations()
                            }))
                        }
                        return result
                    },
                    stop: function(jumpToEnd) {
                        this._stopAnimations(jumpToEnd)
                    }
                });
                exports.TransitionExecutor = TransitionExecutor
            },
        31648:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/animation/translator.js ***!
              \*********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.resetPosition = exports.parseTranslate = exports.move = exports.locate = exports.getTranslateCss = exports.getTranslate = exports.clearCache = void 0;
                var _renderer = (obj = __webpack_require__( /*! ../core/renderer */ 68374), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _element_data = __webpack_require__( /*! ../core/element_data */ 97906);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                const TRANSFORM_MATRIX_REGEX = /matrix(3d)?\((.+?)\)/;
                const TRANSLATE_REGEX = /translate(?:3d)?\((.+?)\)/;
                exports.locate = function($element) {
                    $element = (0, _renderer.default)($element);
                    const translate = getTranslate($element);
                    return {
                        left: translate.x,
                        top: translate.y
                    }
                };

                function isPercentValue(value) {
                    return "string" === (0, _type.type)(value) && "%" === value[value.length - 1]
                }

                function cacheTranslate($element, translate) {
                    if ($element.length) {
                        (0, _element_data.data)($element.get(0), "dxTranslator", translate)
                    }
                }
                const clearCache = function($element) {
                    if ($element.length) {
                        (0, _element_data.removeData)($element.get(0), "dxTranslator")
                    }
                };
                exports.clearCache = clearCache;
                const getTranslateCss = function(translate) {
                    translate.x = translate.x || 0;
                    translate.y = translate.y || 0;
                    const xValueString = isPercentValue(translate.x) ? translate.x : translate.x + "px";
                    const yValueString = isPercentValue(translate.y) ? translate.y : translate.y + "px";
                    return "translate(" + xValueString + ", " + yValueString + ")"
                };
                exports.getTranslateCss = getTranslateCss;
                const getTranslate = function($element) {
                    let result = $element.length ? (0, _element_data.data)($element.get(0), "dxTranslator") : null;
                    if (!result) {
                        const transformValue = $element.css("transform") || getTranslateCss({
                            x: 0,
                            y: 0
                        });
                        let matrix = transformValue.match(TRANSFORM_MATRIX_REGEX);
                        const is3D = matrix && matrix[1];
                        if (matrix) {
                            matrix = matrix[2].split(",");
                            if ("3d" === is3D) {
                                matrix = matrix.slice(12, 15)
                            } else {
                                matrix.push(0);
                                matrix = matrix.slice(4, 7)
                            }
                        } else {
                            matrix = [0, 0, 0]
                        }
                        result = {
                            x: parseFloat(matrix[0]),
                            y: parseFloat(matrix[1]),
                            z: parseFloat(matrix[2])
                        };
                        cacheTranslate($element, result)
                    }
                    return result
                };
                exports.getTranslate = getTranslate;
                exports.move = function($element, position) {
                    $element = (0, _renderer.default)($element);
                    const left = position.left;
                    const top = position.top;
                    let translate;
                    if (void 0 === left) {
                        translate = getTranslate($element);
                        translate.y = top || 0
                    } else if (void 0 === top) {
                        translate = getTranslate($element);
                        translate.x = left || 0
                    } else {
                        translate = {
                            x: left || 0,
                            y: top || 0,
                            z: 0
                        };
                        cacheTranslate($element, translate)
                    }
                    $element.css({
                        transform: getTranslateCss(translate)
                    });
                    if (isPercentValue(left) || isPercentValue(top)) {
                        clearCache($element)
                    }
                };
                exports.resetPosition = function($element, finishTransition) {
                    $element = (0, _renderer.default)($element);
                    let originalTransition;
                    const stylesConfig = {
                        left: 0,
                        top: 0,
                        transform: "none"
                    };
                    if (finishTransition) {
                        originalTransition = $element.css("transition");
                        stylesConfig.transition = "none"
                    }
                    $element.css(stylesConfig);
                    clearCache($element);
                    if (finishTransition) {
                        $element.get(0).offsetHeight;
                        $element.css("transition", originalTransition)
                    }
                };
                exports.parseTranslate = function(translateString) {
                    let result = translateString.match(TRANSLATE_REGEX);
                    if (!result || !result[1]) {
                        return
                    }
                    result = result[1].split(",");
                    result = {
                        x: parseFloat(result[0]),
                        y: parseFloat(result[1]),
                        z: parseFloat(result[2])
                    };
                    return result
                }
            },
        16354:
            /*!***************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/bundles/dx.all.js ***!
              \***************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                __webpack_require__( /*! ./modules/parts/widgets-web */ 2025);
                __webpack_require__( /*! ./modules/parts/viz */ 66312);
                var _core = (obj = __webpack_require__( /*! ./modules/core */ 36991), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _events_strategy = __webpack_require__( /*! ../core/events_strategy */ 80566);
                var _index = __webpack_require__( /*! ../core/options/index */ 95683);
                _core.default.integration = {};
                _core.default.integration.EventsStrategy = _events_strategy.EventsStrategy;
                _core.default.integration.Options = _index.Options;
                var _default = _core.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        72505:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/bundles/modules/common.charts.js ***!
              \******************************************************************************/
            function(module, __unused_webpack_exports, __webpack_require__) {
                const DevExpress = __webpack_require__( /*! ./core */ 36991);
                DevExpress.common = DevExpress.common || {};
                DevExpress.common.charts = __webpack_require__( /*! ../../common/charts */ 29932);
                module.exports = DevExpress.common.charts
            },
        36991:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/bundles/modules/core.js ***!
              \*********************************************************************/
            function(module, __unused_webpack_exports, __webpack_require__) {
                const windowUtils = __webpack_require__( /*! ../../core/utils/window */ 58201);
                const window = windowUtils.getWindow();
                const DevExpress = window.DevExpress = window.DevExpress || {};
                const errors = DevExpress.errors = __webpack_require__( /*! ../../core/errors */ 17381);
                if (DevExpress._DEVEXTREME_BUNDLE_INITIALIZED) {
                    throw errors.Error("E0024")
                }
                DevExpress._DEVEXTREME_BUNDLE_INITIALIZED = true;
                DevExpress.clientExporter = __webpack_require__( /*! ../../exporter */ 78292);
                DevExpress.excelExporter = __webpack_require__( /*! ../../excel_exporter */ 2994);
                DevExpress.pdfExporter = __webpack_require__( /*! ../../pdf_exporter */ 44194);
                DevExpress.VERSION = __webpack_require__( /*! ../../core/version */ 36739).version;
                DevExpress.Class = __webpack_require__( /*! ../../core/class */ 38377);
                DevExpress.DOMComponent = __webpack_require__( /*! ../../core/dom_component */ 13046);
                DevExpress.Component = __webpack_require__( /*! ../../core/component */ 44297).Component;
                DevExpress.registerComponent = __webpack_require__( /*! ../../core/component_registrator */ 99393);
                DevExpress.devices = __webpack_require__( /*! ../../core/devices */ 20530);
                DevExpress.Color = __webpack_require__( /*! ../../color */ 52752);
                const animationFrame = __webpack_require__( /*! ../../animation/frame */ 90057);
                DevExpress.utils = {};
                DevExpress.utils.requestAnimationFrame = animationFrame.requestAnimationFrame;
                DevExpress.utils.cancelAnimationFrame = animationFrame.cancelAnimationFrame;
                DevExpress.utils.initMobileViewport = __webpack_require__( /*! ../../mobile/init_mobile_viewport/init_mobile_viewport */ 88185).p;
                DevExpress.utils.getTimeZones = __webpack_require__( /*! ../../time_zone_utils */ 88673).Z;
                DevExpress.utils.extendFromObject = __webpack_require__( /*! ../../core/utils/extend */ 13306).extendFromObject;
                DevExpress.utils.triggerShownEvent = __webpack_require__( /*! ../../events/visibility_change */ 80506).triggerShownEvent;
                DevExpress.utils.triggerHidingEvent = __webpack_require__( /*! ../../events/visibility_change */ 80506).triggerHidingEvent;
                DevExpress.utils.resetActiveElement = __webpack_require__( /*! ../../core/utils/dom */ 3532).resetActiveElement;
                DevExpress.utils.findBestMatches = __webpack_require__( /*! ../../core/utils/common */ 20576).findBestMatches;
                DevExpress.createQueue = __webpack_require__( /*! ../../core/utils/queue */ 59504).create;
                DevExpress.utils.dom = __webpack_require__( /*! ../../core/utils/dom */ 3532);
                DevExpress.utils.common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                DevExpress.utils.date = __webpack_require__( /*! ../../core/utils/date */ 91198);
                DevExpress.utils.browser = __webpack_require__( /*! ../../core/utils/browser */ 47810);
                DevExpress.utils.inflector = __webpack_require__( /*! ../../core/utils/inflector */ 78008);
                DevExpress.utils.iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                DevExpress.utils.readyCallbacks = __webpack_require__( /*! ../../core/utils/ready_callbacks */ 24311);
                DevExpress.utils.resizeCallbacks = __webpack_require__( /*! ../../core/utils/resize_callbacks */ 55814);
                DevExpress.utils.console = __webpack_require__( /*! ../../core/utils/console */ 30869);
                DevExpress.utils.string = __webpack_require__( /*! ../../core/utils/string */ 68752);
                DevExpress.utils.support = __webpack_require__( /*! ../../core/utils/support */ 60137);
                DevExpress.utils.ajax = __webpack_require__( /*! ../../core/utils/ajax */ 37208);
                DevExpress.viewPort = __webpack_require__( /*! ../../core/utils/view_port */ 77695).value;
                DevExpress.hideTopOverlay = __webpack_require__( /*! ../../mobile/hide_top_overlay */ 60628);
                DevExpress.formatHelper = __webpack_require__( /*! ../../format_helper */ 30343);
                DevExpress.config = __webpack_require__( /*! ../../core/config */ 80209);
                DevExpress.animationPresets = __webpack_require__( /*! ../../animation/presets/presets */ 42814).presets;
                DevExpress.fx = __webpack_require__( /*! ../../animation/fx */ 87209);
                DevExpress.TransitionExecutor = __webpack_require__( /*! ../../animation/transition_executor/transition_executor */ 52431).TransitionExecutor;
                DevExpress.AnimationPresetCollection = __webpack_require__( /*! ../../animation/presets/presets */ 42814).PresetCollection;
                DevExpress.events = __webpack_require__( /*! ../../events */ 66365);
                DevExpress.events.click = __webpack_require__( /*! ../../events/click */ 95429);
                DevExpress.events.utils = __webpack_require__( /*! ../../events/utils */ 39611);
                DevExpress.events.GestureEmitter = __webpack_require__( /*! ../../events/gesture/emitter.gesture */ 98621);
                DevExpress.localization = __webpack_require__( /*! ../../localization */ 94484);
                DevExpress.templateRendered = __webpack_require__( /*! ../../core/templates/template_base */ 81033).renderedCallbacks;
                DevExpress.setTemplateEngine = __webpack_require__( /*! ../../core/templates/template_engine_registry */ 72987).setTemplateEngine;
                module.exports = DevExpress
            },
        86635:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/bundles/modules/data.js ***!
              \*********************************************************************/
            function(module, __unused_webpack_exports, __webpack_require__) {
                const DevExpress = __webpack_require__( /*! ./core */ 36991);
                const errors = __webpack_require__( /*! ../../core/errors */ 17381);
                module.exports = DevExpress.data = DevExpress.data || {};
                Object.defineProperty(DevExpress.data, "errorHandler", {
                    get: function() {
                        return __webpack_require__( /*! ../../data/errors */ 18438).errorHandler
                    },
                    set: function(value) {
                        errors.log("W0003", "DevExpress.data", "errorHandler", "21.1", "Use the 'setErrorHandler' method instead");
                        __webpack_require__( /*! ../../data/errors */ 18438).setErrorHandler(value)
                    }
                });
                Object.defineProperty(DevExpress.data, "_errorHandler", {
                    get: function() {
                        return __webpack_require__( /*! ../../data/errors */ 18438).handleError
                    },
                    set: function(value) {
                        errors.log("W0003", "DevExpress.data", "_errorHandler", "21.1", "Use the 'setErrorHandler' method instead");
                        __webpack_require__( /*! ../../data/errors */ 18438).setErrorHandler(value)
                    }
                });
                DevExpress.data.setErrorHandler = __webpack_require__( /*! ../../data/errors */ 18438).setErrorHandler;
                DevExpress.data.DataSource = __webpack_require__( /*! ../../data/data_source */ 33546);
                DevExpress.data.query = __webpack_require__( /*! ../../data/query */ 96687);
                DevExpress.data.Store = __webpack_require__( /*! ../../data/abstract_store */ 67403);
                DevExpress.data.ArrayStore = __webpack_require__( /*! ../../data/array_store */ 26562);
                DevExpress.data.CustomStore = __webpack_require__( /*! ../../data/custom_store */ 88036);
                DevExpress.data.LocalStore = __webpack_require__( /*! ../../data/local_store */ 82837);
                DevExpress.data.base64_encode = __webpack_require__( /*! ../../data/utils */ 16454).base64_encode;
                DevExpress.data.applyChanges = __webpack_require__( /*! ../../data/apply_changes */ 36893);
                DevExpress.data.Guid = __webpack_require__( /*! ../../core/guid */ 73176);
                DevExpress.data.utils = {};
                DevExpress.data.utils.compileGetter = __webpack_require__( /*! ../../core/utils/data */ 47617).compileGetter;
                DevExpress.data.utils.compileSetter = __webpack_require__( /*! ../../core/utils/data */ 47617).compileSetter;
                DevExpress.EndpointSelector = __webpack_require__( /*! ../../data/endpoint_selector */ 8162);
                DevExpress.data.queryImpl = __webpack_require__( /*! ../../data/query_implementation */ 77549).queryImpl;
                DevExpress.data.queryAdapters = __webpack_require__( /*! ../../data/query_adapters */ 16135);
                const dataUtils = __webpack_require__( /*! ../../data/utils */ 16454);
                DevExpress.data.utils.normalizeBinaryCriterion = dataUtils.normalizeBinaryCriterion;
                DevExpress.data.utils.normalizeSortingInfo = dataUtils.normalizeSortingInfo;
                DevExpress.data.utils.errorMessageFromXhr = dataUtils.errorMessageFromXhr;
                DevExpress.data.utils.aggregators = dataUtils.aggregators;
                DevExpress.data.utils.keysEqual = dataUtils.keysEqual;
                DevExpress.data.utils.isDisjunctiveOperator = dataUtils.isDisjunctiveOperator;
                DevExpress.data.utils.isConjunctiveOperator = dataUtils.isConjunctiveOperator;
                DevExpress.data.utils.processRequestResultLock = dataUtils.processRequestResultLock;
                DevExpress.data.utils.toComparable = __webpack_require__( /*! ../../core/utils/data */ 47617).toComparable;
                DevExpress.data.utils.multiLevelGroup = __webpack_require__( /*! ../../data/store_helper */ 99236).multiLevelGroup;
                DevExpress.data.utils.arrangeSortingInfo = __webpack_require__( /*! ../../data/store_helper */ 99236).arrangeSortingInfo;
                DevExpress.data.utils.normalizeDataSourceOptions = __webpack_require__( /*! ../../data/data_source/utils */ 9234).normalizeDataSourceOptions
            },
        72343:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/bundles/modules/data.odata.js ***!
              \***************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ./data */ 86635);
                DevExpress.data.ODataStore = __webpack_require__( /*! ../../data/odata/store */ 341);
                DevExpress.data.ODataContext = __webpack_require__( /*! ../../data/odata/context */ 47256);
                DevExpress.data.utils = DevExpress.data.utils || {};
                DevExpress.data.utils.odata = {};
                DevExpress.data.utils.odata.keyConverters = __webpack_require__( /*! ../../data/odata/utils */ 77869).keyConverters;
                DevExpress.data.EdmLiteral = __webpack_require__( /*! ../../data/odata/utils */ 77869).EdmLiteral;
                const ODataUtilsModule = __webpack_require__( /*! ../../data/odata/utils */ 77869);
                DevExpress.data.utils.odata.serializePropName = ODataUtilsModule.serializePropName;
                DevExpress.data.utils.odata.serializeValue = ODataUtilsModule.serializeValue;
                DevExpress.data.utils.odata.serializeKey = ODataUtilsModule.serializeKey;
                DevExpress.data.utils.odata.sendRequest = ODataUtilsModule.sendRequest;
                DevExpress.data.queryAdapters = DevExpress.data.queryAdapters || {};
                DevExpress.data.queryAdapters.odata = __webpack_require__( /*! ../../data/odata/query_adapter */ 54263).odata
            },
        56208:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/bundles/modules/file_management.js ***!
              \********************************************************************************/
            function(module, __unused_webpack_exports, __webpack_require__) {
                var _core = _interopRequireDefault(__webpack_require__( /*! ./core */ 36991));
                var _error = _interopRequireDefault(__webpack_require__( /*! ../../file_management/error */ 49816));
                var _file_system_item = _interopRequireDefault(__webpack_require__( /*! ../../file_management/file_system_item */ 45765));
                var _object_provider = _interopRequireDefault(__webpack_require__( /*! ../../file_management/object_provider */ 4323));
                var _remote_provider = _interopRequireDefault(__webpack_require__( /*! ../../file_management/remote_provider */ 41332));
                var _custom_provider = _interopRequireDefault(__webpack_require__( /*! ../../file_management/custom_provider */ 98831));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                module.exports = _core.default.fileManagement = _core.default.fileManagement || {};
                _core.default.fileManagement.FileSystemError = _error.default;
                _core.default.fileManagement.FileSystemItem = _file_system_item.default;
                _core.default.fileManagement.ObjectFileSystemProvider = _object_provider.default;
                _core.default.fileManagement.RemoteFileSystemProvider = _remote_provider.default;
                _core.default.fileManagement.CustomFileSystemProvider = _custom_provider.default
            },
        85357:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/bundles/modules/parts/core.js ***!
              \***************************************************************************/
            function(module, __unused_webpack_exports, __webpack_require__) {
                const DevExpress = __webpack_require__( /*! ../../../bundles/modules/core */ 36991);
                __webpack_require__( /*! ../../../integration/jquery */ 78475);
                __webpack_require__( /*! ../../../integration/angular */ 71582);
                __webpack_require__( /*! ../../../integration/knockout */ 49281);
                __webpack_require__( /*! ../../../localization/globalize/core */ 74872);
                __webpack_require__( /*! ../../../localization/globalize/message */ 46949);
                __webpack_require__( /*! ../../../localization/globalize/number */ 908);
                __webpack_require__( /*! ../../../localization/globalize/date */ 60316);
                __webpack_require__( /*! ../../../localization/globalize/currency */ 7239);
                __webpack_require__( /*! ../../../events/click */ 95429);
                __webpack_require__( /*! ../../../events/contextmenu */ 49166);
                __webpack_require__( /*! ../../../events/double_click */ 85272);
                __webpack_require__( /*! ../../../events/drag */ 23174);
                __webpack_require__( /*! ../../../events/hold */ 11699);
                __webpack_require__( /*! ../../../events/hover */ 24028);
                __webpack_require__( /*! ../../../events/pointer */ 93786);
                __webpack_require__( /*! ../../../events/swipe */ 34309);
                __webpack_require__( /*! ../../../events/transform */ 91093);
                module.exports = DevExpress
            },
        94620:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/bundles/modules/parts/data.js ***!
              \***************************************************************************/
            function(module, __unused_webpack_exports, __webpack_require__) {
                const DevExpress = __webpack_require__( /*! ./core */ 85357);
                const data = DevExpress.data = __webpack_require__( /*! ../../../bundles/modules/data */ 86635);
                data.odata = __webpack_require__( /*! ../../../bundles/modules/data.odata */ 72343);
                module.exports = data
            },
        70527:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/bundles/modules/parts/file_management.js ***!
              \**************************************************************************************/
            function(module, __unused_webpack_exports, __webpack_require__) {
                var _core = (obj = __webpack_require__( /*! ./core */ 85357), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const fileManagement = __webpack_require__( /*! ../../../bundles/modules/file_management */ 56208);
                _core.default.fileManagement = fileManagement;
                module.exports = fileManagement
            },
        66312:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/bundles/modules/parts/viz.js ***!
              \**************************************************************************/
            function(module, __unused_webpack_exports, __webpack_require__) {
                const DevExpress = __webpack_require__( /*! ./core */ 85357);
                __webpack_require__( /*! ./data */ 94620);
                __webpack_require__( /*! ../../../bundles/modules/common.charts */ 72505);
                const viz = DevExpress.viz = __webpack_require__( /*! ../../../bundles/modules/viz */ 20802);
                viz.currentTheme = __webpack_require__( /*! ../../../viz/themes */ 86231).currentTheme;
                viz.registerTheme = __webpack_require__( /*! ../../../viz/themes */ 86231).registerTheme;
                viz.exportFromMarkup = __webpack_require__( /*! ../../../viz/export */ 5259).exportFromMarkup;
                viz.getMarkup = __webpack_require__( /*! ../../../viz/export */ 5259).getMarkup;
                viz.exportWidgets = __webpack_require__( /*! ../../../viz/export */ 5259).exportWidgets;
                viz.currentPalette = __webpack_require__( /*! ../../../viz/palette */ 23696).currentPalette;
                viz.getPalette = __webpack_require__( /*! ../../../viz/palette */ 23696).getPalette;
                viz.generateColors = __webpack_require__( /*! ../../../viz/palette */ 23696).generateColors;
                viz.registerPalette = __webpack_require__( /*! ../../../viz/palette */ 23696).registerPalette;
                viz.refreshTheme = __webpack_require__( /*! ../../../viz/themes */ 86231).refreshTheme;
                viz.dxChart = __webpack_require__( /*! ../../../viz/chart */ 99511);
                viz.dxPieChart = __webpack_require__( /*! ../../../viz/pie_chart */ 72111);
                viz.dxPolarChart = __webpack_require__( /*! ../../../viz/polar_chart */ 80919);
                viz.dxLinearGauge = __webpack_require__( /*! ../../../viz/linear_gauge */ 99630);
                viz.dxCircularGauge = __webpack_require__( /*! ../../../viz/circular_gauge */ 39847);
                viz.dxBarGauge = __webpack_require__( /*! ../../../viz/bar_gauge */ 45888);
                viz.dxRangeSelector = __webpack_require__( /*! ../../../viz/range_selector */ 82879);
                viz.dxVectorMap = __webpack_require__( /*! ../../../viz/vector_map */ 81849);
                viz.map = {};
                viz.map.sources = {};
                viz.map.projection = __webpack_require__( /*! ../../../viz/vector_map/projection */ 102).projection;
                viz.dxSparkline = __webpack_require__( /*! ../../../viz/sparkline */ 43759);
                viz.dxBullet = __webpack_require__( /*! ../../../viz/bullet */ 88950);
                viz.dxTreeMap = __webpack_require__( /*! ../../../viz/tree_map */ 15584);
                viz.dxFunnel = __webpack_require__( /*! ../../../viz/funnel */ 30187);
                viz.dxSankey = __webpack_require__( /*! ../../../viz/sankey */ 34377);
                viz.getTheme = __webpack_require__( /*! ../../../viz/themes */ 86231).getTheme;
                viz.findTheme = __webpack_require__( /*! ../../../viz/themes */ 86231).getTheme;
                viz.refreshAll = __webpack_require__( /*! ../../../viz/themes */ 86231).refreshTheme;
                viz.refreshPaths = __webpack_require__( /*! ../../../viz/utils */ 34434).refreshPaths;
                viz.gauges = {
                    __internals: {}
                };
                viz._dashboard = {};
                viz._dashboard.Renderer = __webpack_require__( /*! ../../../viz/core/renderers/renderer */ 56453).Renderer;
                viz._dashboard.SvgElement = __webpack_require__( /*! ../../../viz/core/renderers/renderer */ 56453).SvgElement;
                viz._dashboard.patchFontOptions = __webpack_require__( /*! ../../../viz/core/utils */ 19157).patchFontOptions;
                module.exports = viz
            },
        50779:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/bundles/modules/parts/widgets-base.js ***!
              \***********************************************************************************/
            function(module, __unused_webpack_exports, __webpack_require__) {
                const DevExpress = __webpack_require__( /*! ./core */ 85357);
                __webpack_require__( /*! ./data */ 94620);
                __webpack_require__( /*! ./file_management */ 70527);
                const ui = DevExpress.ui = __webpack_require__( /*! ../../../bundles/modules/ui */ 26864);
                ui.themes = __webpack_require__( /*! ../../../ui/themes */ 75811);
                ui.setTemplateEngine = __webpack_require__( /*! ../../../core/templates/template_engine_registry */ 72987).setTemplateEngine;
                ui.dialog = __webpack_require__( /*! ../../../ui/dialog */ 15029);
                ui.notify = __webpack_require__( /*! ../../../ui/notify */ 59958);
                ui.repaintFloatingActionButton = __webpack_require__( /*! ../../../ui/speed_dial_action/repaint_floating_action_button */ 81374);
                ui.hideToasts = __webpack_require__( /*! ../../../ui/toast/hide_toasts */ 33964);
                ui.dxActionSheet = __webpack_require__( /*! ../../../ui/action_sheet */ 81476);
                ui.dxAutocomplete = __webpack_require__( /*! ../../../ui/autocomplete */ 65418);
                ui.dxBox = __webpack_require__( /*! ../../../ui/box */ 55551);
                ui.dxButton = __webpack_require__( /*! ../../../ui/button */ 63008);
                ui.dxDropDownButton = __webpack_require__( /*! ../../../ui/drop_down_button */ 45231);
                ui.dxButtonGroup = __webpack_require__( /*! ../../../ui/button_group */ 28236);
                ui.dxCalendar = __webpack_require__( /*! ../../../ui/calendar */ 26559);
                ui.dxCheckBox = __webpack_require__( /*! ../../../ui/check_box */ 18859);
                ui.dxColorBox = __webpack_require__( /*! ../../../ui/color_box */ 4278);
                ui.dxDateBox = __webpack_require__( /*! ../../../ui/date_box */ 29589);
                ui.dxDateRangeBox = __webpack_require__( /*! ../../../ui/date_range_box */ 56258);
                ui.dxDrawer = __webpack_require__( /*! ../../../ui/drawer */ 45065);
                ui.dxDeferRendering = __webpack_require__( /*! ../../../ui/defer_rendering */ 28414);
                ui.dxDropDownBox = __webpack_require__( /*! ../../../ui/drop_down_box */ 36646);
                ui.dxFileUploader = __webpack_require__( /*! ../../../ui/file_uploader */ 53749);
                ui.dxForm = __webpack_require__( /*! ../../../ui/form */ 17737);
                ui.dxGallery = __webpack_require__( /*! ../../../ui/gallery */ 49433);
                ui.dxHtmlEditor = __webpack_require__( /*! ../../../ui/html_editor */ 9619);
                ui.dxList = __webpack_require__( /*! ../../../ui/list */ 86e3);
                ui.dxLoadIndicator = __webpack_require__( /*! ../../../ui/load_indicator */ 2492);
                ui.dxLoadPanel = __webpack_require__( /*! ../../../ui/load_panel */ 97218);
                ui.dxLookup = __webpack_require__( /*! ../../../ui/lookup */ 55935);
                ui.dxMap = __webpack_require__( /*! ../../../ui/map */ 64304);
                ui.dxMultiView = __webpack_require__( /*! ../../../ui/multi_view */ 86478);
                ui.dxNumberBox = __webpack_require__( /*! ../../../ui/number_box */ 34171);
                ui.dxOverlay = __webpack_require__( /*! ../../../ui/overlay/ui.overlay */ 89799);
                ui.dxPopover = __webpack_require__( /*! ../../../ui/popover */ 22348);
                ui.dxPopup = __webpack_require__( /*! ../../../ui/popup */ 39114);
                ui.dxProgressBar = __webpack_require__( /*! ../../../ui/progress_bar */ 28080);
                ui.dxRadioGroup = __webpack_require__( /*! ../../../ui/radio_group */ 14305);
                ui.dxRangeSlider = __webpack_require__( /*! ../../../ui/range_slider */ 36992);
                ui.dxResizable = __webpack_require__( /*! ../../../ui/resizable */ 46743);
                ui.dxResponsiveBox = __webpack_require__( /*! ../../../ui/responsive_box */ 21643);
                ui.dxScrollView = __webpack_require__( /*! ../../../ui/scroll_view */ 4741);
                ui.dxSelectBox = __webpack_require__( /*! ../../../ui/select_box */ 78665);
                ui.dxSlider = __webpack_require__( /*! ../../../ui/slider */ 97834);
                ui.dxSpeedDialAction = __webpack_require__( /*! ../../../ui/speed_dial_action */ 17017);
                ui.dxSwitch = __webpack_require__( /*! ../../../ui/switch */ 31609);
                ui.dxTabPanel = __webpack_require__( /*! ../../../ui/tab_panel */ 21807);
                ui.dxTabs = __webpack_require__( /*! ../../../ui/tabs */ 13453);
                ui.dxTagBox = __webpack_require__( /*! ../../../ui/tag_box */ 31362);
                ui.dxTextArea = __webpack_require__( /*! ../../../ui/text_area */ 51237);
                ui.dxTextBox = __webpack_require__( /*! ../../../ui/text_box */ 29837);
                ui.dxTileView = __webpack_require__( /*! ../../../ui/tile_view */ 93094);
                ui.dxToast = __webpack_require__( /*! ../../../ui/toast */ 37748);
                ui.dxToolbar = __webpack_require__( /*! ../../../ui/toolbar */ 71042);
                ui.dxTooltip = __webpack_require__( /*! ../../../ui/tooltip */ 94920);
                ui.dxTrackBar = __webpack_require__( /*! ../../../ui/track_bar */ 39661);
                ui.dxDraggable = __webpack_require__( /*! ../../../ui/draggable */ 42160);
                ui.dxSortable = __webpack_require__( /*! ../../../ui/sortable */ 66843);
                DevExpress.validationEngine = __webpack_require__( /*! ../../../ui/validation_engine */ 90964);
                ui.dxValidationSummary = __webpack_require__( /*! ../../../ui/validation_summary */ 97289);
                ui.dxValidationGroup = __webpack_require__( /*! ../../../ui/validation_group */ 4401);
                ui.dxValidator = __webpack_require__( /*! ../../../ui/validator */ 39562);
                __webpack_require__( /*! ../../../ui/html_editor/converters/markdown */ 52935);
                ui.CollectionWidget = __webpack_require__( /*! ../../../ui/collection/ui.collection_widget.edit */ 11050);
                ui.dxDropDownEditor = __webpack_require__( /*! ../../../ui/drop_down_editor/ui.drop_down_editor */ 44687);
                module.exports = ui
            },
        2025:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/bundles/modules/parts/widgets-web.js ***!
              \**********************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                const data = __webpack_require__( /*! ./data */ 94620);
                const ui = __webpack_require__( /*! ./widgets-base */ 50779);
                ui.dxAccordion = __webpack_require__( /*! ../../../ui/accordion */ 76219);
                ui.dxContextMenu = __webpack_require__( /*! ../../../ui/context_menu */ 10042);
                ui.dxDataGrid = __webpack_require__( /*! ../../../ui/data_grid */ 1186);
                ui.dxTreeList = __webpack_require__( /*! ../../../ui/tree_list */ 82655);
                ui.dxMenu = __webpack_require__( /*! ../../../ui/menu */ 76995);
                ui.dxPivotGrid = __webpack_require__( /*! ../../../ui/pivot_grid */ 96089);
                ui.dxPivotGridFieldChooser = __webpack_require__( /*! ../../../ui/pivot_grid_field_chooser */ 32014);
                data.PivotGridDataSource = __webpack_require__( /*! ../../../ui/pivot_grid/data_source */ 98713);
                data.XmlaStore = __webpack_require__( /*! ../../../ui/pivot_grid/xmla_store */ 9170);
                ui.dxScheduler = __webpack_require__( /*! ../../../ui/scheduler */ 9508);
                ui.dxTreeView = __webpack_require__( /*! ../../../ui/tree_view */ 30254);
                ui.dxFilterBuilder = __webpack_require__( /*! ../../../ui/filter_builder */ 20301);
                ui.dxFileManager = __webpack_require__( /*! ../../../ui/file_manager */ 87446);
                ui.dxDiagram = __webpack_require__( /*! ../../../ui/diagram */ 52311);
                ui.dxGantt = __webpack_require__( /*! ../../../ui/gantt */ 33465)
            },
        26864:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/bundles/modules/ui.js ***!
              \*******************************************************************/
            function(module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ./core */ 36991);
                module.exports = DevExpress.ui = {}
            },
        20802:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/bundles/modules/viz.js ***!
              \********************************************************************/
            function(module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ./core */ 36991);
                module.exports = DevExpress.viz = DevExpress.viz || {}
            },
        52752:
            /*!******************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/color.js ***!
              \******************************************************/
            function(module, exports) {
                exports.default = void 0;
                const standardColorNames = {
                    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",
                    feldspar: "d19275",
                    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",
                    lightslateblue: "8470ff",
                    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: "9370d8",
                    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: "d87093",
                    papayawhip: "ffefd5",
                    peachpuff: "ffdab9",
                    peru: "cd853f",
                    pink: "ffc0cb",
                    plum: "dda0dd",
                    powderblue: "b0e0e6",
                    purple: "800080",
                    rebeccapurple: "663399",
                    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",
                    violetred: "d02090",
                    wheat: "f5deb3",
                    white: "ffffff",
                    whitesmoke: "f5f5f5",
                    yellow: "ffff00",
                    yellowgreen: "9acd32"
                };
                const standardColorTypes = [{
                    re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,
                    process: function(colorString) {
                        return [parseInt(colorString[1], 10), parseInt(colorString[2], 10), parseInt(colorString[3], 10)]
                    }
                }, {
                    re: /^rgba\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3}),\s*(\d*\.*\d+)\)$/,
                    process: function(colorString) {
                        return [parseInt(colorString[1], 10), parseInt(colorString[2], 10), parseInt(colorString[3], 10), parseFloat(colorString[4])]
                    }
                }, {
                    re: /^#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})$/,
                    process: function(colorString) {
                        return [parseInt(colorString[1], 16), parseInt(colorString[2], 16), parseInt(colorString[3], 16)]
                    }
                }, {
                    re: /^#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})$/,
                    process: function(colorString) {
                        return [parseInt(colorString[1], 16), parseInt(colorString[2], 16), parseInt(colorString[3], 16), Number((parseInt(colorString[4], 16) / 255).toFixed(2))]
                    }
                }, {
                    re: /^#([a-f0-9]{1})([a-f0-9]{1})([a-f0-9]{1})([a-f0-9]{1})$/,
                    process: function(colorString) {
                        return [parseInt(colorString[1] + colorString[1], 16), parseInt(colorString[2] + colorString[2], 16), parseInt(colorString[3] + colorString[3], 16), Number((parseInt(colorString[4] + colorString[4], 16) / 255).toFixed(2))]
                    }
                }, {
                    re: /^#([a-f0-9]{1})([a-f0-9]{1})([a-f0-9]{1})$/,
                    process: function(colorString) {
                        return [parseInt(colorString[1] + colorString[1], 16), parseInt(colorString[2] + colorString[2], 16), parseInt(colorString[3] + colorString[3], 16)]
                    }
                }, {
                    re: /^hsv\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,
                    process: function(colorString) {
                        const h = parseInt(colorString[1], 10);
                        const s = parseInt(colorString[2], 10);
                        const v = parseInt(colorString[3], 10);
                        const rgb = hsvToRgb(h, s, v);
                        return [rgb[0], rgb[1], rgb[2], 1, [h, s, v]]
                    }
                }, {
                    re: /^hsl\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,
                    process: function(colorString) {
                        const h = parseInt(colorString[1], 10);
                        const s = parseInt(colorString[2], 10);
                        const l = parseInt(colorString[3], 10);
                        const rgb = hslToRgb(h, s, l);
                        return [rgb[0], rgb[1], rgb[2], 1, null, [h, s, l]]
                    }
                }];
                const _round = Math.round;

                function Color(value) {
                    this.baseColor = value;
                    let color;
                    if (value) {
                        color = String(value).toLowerCase().replace(/ /g, "");
                        color = standardColorNames[color] ? "#" + standardColorNames[color] : color;
                        color = function(color) {
                            if ("transparent" === color) {
                                return [0, 0, 0, 0]
                            }
                            let i = 0;
                            const ii = standardColorTypes.length;
                            let str;
                            for (; i < ii; ++i) {
                                str = standardColorTypes[i].re.exec(color);
                                if (str) {
                                    return standardColorTypes[i].process(str)
                                }
                            }
                            return null
                        }(color)
                    }
                    if (!color) {
                        this.colorIsInvalid = true
                    }
                    color = color || {};
                    this.r = normalize(color[0]);
                    this.g = normalize(color[1]);
                    this.b = normalize(color[2]);
                    this.a = normalize(color[3], 1, 1);
                    if (color[4]) {
                        this.hsv = {
                            h: color[4][0],
                            s: color[4][1],
                            v: color[4][2]
                        }
                    } else {
                        this.hsv = function(r, g, b) {
                            const max = Math.max(r, g, b);
                            const min = Math.min(r, g, b);
                            const delta = max - min;
                            let H;
                            let S;
                            let V = max;
                            S = 0 === max ? 0 : 1 - min / max;
                            if (max === min) {
                                H = 0
                            } else {
                                switch (max) {
                                    case r:
                                        H = (g - b) / delta * 60;
                                        if (g < b) {
                                            H += 360
                                        }
                                        break;
                                    case g:
                                        H = (b - r) / delta * 60 + 120;
                                        break;
                                    case b:
                                        H = (r - g) / delta * 60 + 240
                                }
                            }
                            S *= 100;
                            V *= 100 / 255;
                            return {
                                h: Math.round(H),
                                s: Math.round(S),
                                v: Math.round(V)
                            }
                        }(this.r, this.g, this.b)
                    }
                    if (color[5]) {
                        this.hsl = {
                            h: color[5][0],
                            s: color[5][1],
                            l: color[5][2]
                        }
                    } else {
                        this.hsl = function(r, g, b) {
                            r = convertTo01Bounds(r, 255);
                            g = convertTo01Bounds(g, 255);
                            b = convertTo01Bounds(b, 255);
                            const max = Math.max(r, g, b);
                            const min = Math.min(r, g, b);
                            const maxMinSum = max + min;
                            let h;
                            let s;
                            const l = maxMinSum / 2;
                            if (max === min) {
                                h = s = 0
                            } else {
                                const delta = max - min;
                                if (l > .5) {
                                    s = delta / (2 - maxMinSum)
                                } else {
                                    s = delta / maxMinSum
                                }
                                h = function(r, g, b, delta) {
                                    const max = Math.max(r, g, b);
                                    switch (max) {
                                        case r:
                                            return (g - b) / delta + (g < b ? 6 : 0);
                                        case g:
                                            return (b - r) / delta + 2;
                                        case b:
                                            return (r - g) / delta + 4
                                    }
                                }(r, g, b, delta);
                                h /= 6
                            }
                            return {
                                h: _round(360 * h),
                                s: _round(100 * s),
                                l: _round(100 * l)
                            }
                        }(this.r, this.g, this.b)
                    }
                }

                function normalize(colorComponent, def, max) {
                    def = def || 0;
                    max = max || 255;
                    return colorComponent < 0 || isNaN(colorComponent) ? def : colorComponent > max ? max : colorComponent
                }

                function hsvToRgb(h, s, v) {
                    const index = Math.floor(h % 360 / 60);
                    const vMin = (100 - s) * v / 100;
                    const a = h % 60 / 60 * (v - vMin);
                    const vInc = vMin + a;
                    const vDec = v - a;
                    let r;
                    let g;
                    let b;
                    switch (index) {
                        case 0:
                            r = v;
                            g = vInc;
                            b = vMin;
                            break;
                        case 1:
                            r = vDec;
                            g = v;
                            b = vMin;
                            break;
                        case 2:
                            r = vMin;
                            g = v;
                            b = vInc;
                            break;
                        case 3:
                            r = vMin;
                            g = vDec;
                            b = v;
                            break;
                        case 4:
                            r = vInc;
                            g = vMin;
                            b = v;
                            break;
                        case 5:
                            r = v;
                            g = vMin;
                            b = vDec
                    }
                    return [Math.round(2.55 * r), Math.round(2.55 * g), Math.round(2.55 * b)]
                }

                function makeColorTint(colorPart, h) {
                    let colorTint = h;
                    if ("r" === colorPart) {
                        colorTint = h + 1 / 3
                    }
                    if ("b" === colorPart) {
                        colorTint = h - 1 / 3
                    }
                    return colorTint
                }

                function hueToRgb(p, q, colorTint) {
                    colorTint = function(colorTint) {
                        if (colorTint < 0) {
                            colorTint += 1
                        }
                        if (colorTint > 1) {
                            colorTint -= 1
                        }
                        return colorTint
                    }(colorTint);
                    if (colorTint < 1 / 6) {
                        return p + 6 * (q - p) * colorTint
                    }
                    if (colorTint < .5) {
                        return q
                    }
                    if (colorTint < 2 / 3) {
                        return p + (q - p) * (2 / 3 - colorTint) * 6
                    }
                    return p
                }

                function hslToRgb(h, s, l) {
                    let r;
                    let g;
                    let b;
                    h = convertTo01Bounds(h, 360);
                    s = convertTo01Bounds(s, 100);
                    l = convertTo01Bounds(l, 100);
                    if (0 === s) {
                        r = g = b = l
                    } else {
                        const q = l < .5 ? l * (1 + s) : l + s - l * s;
                        const p = 2 * l - q;
                        r = hueToRgb(p, q, makeColorTint("r", h));
                        g = hueToRgb(p, q, makeColorTint("g", h));
                        b = hueToRgb(p, q, makeColorTint("b", h))
                    }
                    return [_round(255 * r), _round(255 * g), _round(255 * b)]
                }

                function convertTo01Bounds(n, max) {
                    n = Math.min(max, Math.max(0, parseFloat(n)));
                    if (Math.abs(n - max) < 1e-6) {
                        return 1
                    }
                    return n % max / parseFloat(max)
                }

                function isIntegerBetweenMinAndMax(number, min, max) {
                    min = min || 0;
                    max = max || 255;
                    if (number % 1 !== 0 || number < min || number > max || "number" !== typeof number || isNaN(number)) {
                        return false
                    }
                    return true
                }
                Color.prototype = {
                    constructor: Color,
                    highlight: function(step) {
                        step = step || 10;
                        return this.alter(step).toHex()
                    },
                    darken: function(step) {
                        step = step || 10;
                        return this.alter(-step).toHex()
                    },
                    alter: function(step) {
                        const result = new Color;
                        result.r = normalize(this.r + step);
                        result.g = normalize(this.g + step);
                        result.b = normalize(this.b + step);
                        return result
                    },
                    blend: function(blendColor, opacity) {
                        const other = blendColor instanceof Color ? blendColor : new Color(blendColor);
                        const result = new Color;
                        result.r = normalize(_round(this.r * (1 - opacity) + other.r * opacity));
                        result.g = normalize(_round(this.g * (1 - opacity) + other.g * opacity));
                        result.b = normalize(_round(this.b * (1 - opacity) + other.b * opacity));
                        return result
                    },
                    toHex: function() {
                        return r = this.r, g = this.g, b = this.b, "#" + (16777216 | r << 16 | g << 8 | b).toString(16).slice(1);
                        var r, g, b
                    },
                    getPureColor: function() {
                        const rgb = hsvToRgb(this.hsv.h, 100, 100);
                        return new Color("rgb(" + rgb.join(",") + ")")
                    },
                    isValidHex: function(hex) {
                        return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(hex)
                    },
                    isValidRGB: function(r, g, b) {
                        if (!isIntegerBetweenMinAndMax(r) || !isIntegerBetweenMinAndMax(g) || !isIntegerBetweenMinAndMax(b)) {
                            return false
                        }
                        return true
                    },
                    isValidAlpha: function(a) {
                        if (isNaN(a) || a < 0 || a > 1 || "number" !== typeof a) {
                            return false
                        }
                        return true
                    },
                    colorIsInvalid: false,
                    fromHSL: function(hsl) {
                        const color = new Color;
                        const rgb = hslToRgb(hsl.h, hsl.s, hsl.l);
                        color.r = rgb[0];
                        color.g = rgb[1];
                        color.b = rgb[2];
                        return color
                    }
                };
                var _default = Color;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        29932:
            /*!**************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/common/charts.js ***!
              \**************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "registerGradient", {
                    enumerable: true,
                    get: function() {
                        return _m_charts.registerGradient
                    }
                });
                Object.defineProperty(exports, "registerPattern", {
                    enumerable: true,
                    get: function() {
                        return _m_charts.registerPattern
                    }
                });
                var _m_charts = __webpack_require__( /*! ../__internal/common/m_charts */ 66798)
            },
        62414:
            /*!************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/action.js ***!
              \************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = (obj = __webpack_require__( /*! ./renderer */ 68374), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _window = __webpack_require__( /*! ./utils/window */ 58201);
                var _type = __webpack_require__( /*! ./utils/type */ 35922);
                var _iterator = __webpack_require__( /*! ./utils/iterator */ 95479);
                let Action = function() {
                    function Action(action, config) {
                        config = config || {};
                        this._action = action;
                        this._context = config.context || (0, _window.getWindow)();
                        this._beforeExecute = config.beforeExecute;
                        this._afterExecute = config.afterExecute;
                        this._component = config.component;
                        this._validatingTargetName = config.validatingTargetName;
                        const excludeValidators = this._excludeValidators = {};
                        if (config.excludeValidators) {
                            for (let i = 0; i < config.excludeValidators.length; i++) {
                                excludeValidators[config.excludeValidators[i]] = true
                            }
                        }
                    }
                    var _proto = Action.prototype;
                    _proto.execute = function() {
                        const e = {
                            action: this._action,
                            args: Array.prototype.slice.call(arguments),
                            context: this._context,
                            component: this._component,
                            validatingTargetName: this._validatingTargetName,
                            cancel: false,
                            handled: false
                        };
                        const beforeExecute = this._beforeExecute;
                        const afterExecute = this._afterExecute;
                        const argsBag = e.args[0] || {};
                        if (!this._validateAction(e)) {
                            return
                        }
                        null === beforeExecute || void 0 === beforeExecute ? void 0 : beforeExecute.call(this._context, e);
                        if (e.cancel) {
                            return
                        }
                        const result = this._executeAction(e);
                        if (argsBag.cancel) {
                            return
                        }
                        null === afterExecute || void 0 === afterExecute ? void 0 : afterExecute.call(this._context, e);
                        return result
                    };
                    _proto._validateAction = function(e) {
                        const excludeValidators = this._excludeValidators;
                        const {
                            executors: executors
                        } = Action;
                        for (const name in executors) {
                            if (!excludeValidators[name]) {
                                var _executor$validate;
                                const executor = executors[name];
                                null === (_executor$validate = executor.validate) || void 0 === _executor$validate ? void 0 : _executor$validate.call(executor, e);
                                if (e.cancel) {
                                    return false
                                }
                            }
                        }
                        return true
                    };
                    _proto._executeAction = function(e) {
                        let result;
                        const {
                            executors: executors
                        } = Action;
                        for (const name in executors) {
                            var _executor$execute;
                            const executor = executors[name];
                            null === (_executor$execute = executor.execute) || void 0 === _executor$execute ? void 0 : _executor$execute.call(executor, e);
                            if (e.handled) {
                                result = e.result;
                                break
                            }
                        }
                        return result
                    };
                    Action.registerExecutor = function(name, executor) {
                        if ((0, _type.isPlainObject)(name)) {
                            (0, _iterator.each)(name, Action.registerExecutor);
                            return
                        }
                        Action.executors[name] = executor
                    };
                    Action.unregisterExecutor = function() {
                        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
                            args[_key] = arguments[_key]
                        }(0, _iterator.each)(args, (function() {
                            delete Action.executors[this]
                        }))
                    };
                    return Action
                }();
                exports.default = Action;
                Action.executors = {};
                const createValidatorByTargetElement = condition => e => {
                    if (!e.args.length) {
                        return
                    }
                    const args = e.args[0];
                    const element = args[e.validatingTargetName] || args.element;
                    if (element && condition((0, _renderer.default)(element))) {
                        e.cancel = true
                    }
                };
                Action.registerExecutor({
                    disabled: {
                        validate: createValidatorByTargetElement($target => $target.is(".dx-state-disabled, .dx-state-disabled *"))
                    },
                    readOnly: {
                        validate: createValidatorByTargetElement($target => $target.is(".dx-state-readonly, .dx-state-readonly *:not(.dx-state-independent)"))
                    },
                    undefined: {
                        execute: e => {
                            if (!e.action) {
                                e.result = void 0;
                                e.handled = true
                            }
                        }
                    },
                    func: {
                        execute: e => {
                            if ((0, _type.isFunction)(e.action)) {
                                e.result = e.action.call(e.context, e.args[0]);
                                e.handled = true
                            }
                        }
                    }
                });
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        38377:
            /*!***********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/class.js ***!
              \***********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _errors = (obj = __webpack_require__( /*! ./errors */ 17381), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _type = __webpack_require__( /*! ./utils/type */ 35922);
                const wrapOverridden = function(baseProto, methodName, method) {
                    return function() {
                        const prevCallBase = this.callBase;
                        this.callBase = baseProto[methodName];
                        try {
                            return method.apply(this, arguments)
                        } finally {
                            this.callBase = prevCallBase
                        }
                    }
                };
                const redefine = function(members) {
                    const that = this;
                    let overridden;
                    let memberName;
                    let member;
                    if (!members) {
                        return that
                    }
                    for (memberName in members) {
                        member = members[memberName];
                        overridden = "function" === typeof that.prototype[memberName] && "function" === typeof member;
                        that.prototype[memberName] = overridden ? wrapOverridden(that.parent.prototype, memberName, member) : member
                    }
                    return that
                };
                const include = function() {
                    const classObj = this;
                    let argument;
                    let name;
                    let i;
                    const hasClassObjOwnProperty = Object.prototype.hasOwnProperty.bind(classObj);
                    const isES6Class = !hasClassObjOwnProperty("_includedCtors") && !hasClassObjOwnProperty("_includedPostCtors");
                    if (isES6Class) {
                        classObj._includedCtors = classObj._includedCtors.slice(0);
                        classObj._includedPostCtors = classObj._includedPostCtors.slice(0)
                    }
                    for (i = 0; i < arguments.length; i++) {
                        argument = arguments[i];
                        if (argument.ctor) {
                            classObj._includedCtors.push(argument.ctor)
                        }
                        if (argument.postCtor) {
                            classObj._includedPostCtors.push(argument.postCtor)
                        }
                        for (name in argument) {
                            if ("ctor" === name || "postCtor" === name || "default" === name) {
                                continue
                            }
                            classObj.prototype[name] = argument[name]
                        }
                    }
                    return classObj
                };
                const subclassOf = function(parentClass) {
                    const hasParentProperty = Object.prototype.hasOwnProperty.bind(this)("parent");
                    const isES6Class = !hasParentProperty && this.parent;
                    if (isES6Class) {
                        const baseClass = Object.getPrototypeOf(this);
                        return baseClass === parentClass || baseClass.subclassOf(parentClass)
                    } else {
                        if (this.parent === parentClass) {
                            return true
                        }
                        if (!this.parent || !this.parent.subclassOf) {
                            return false
                        }
                        return this.parent.subclassOf(parentClass)
                    }
                };
                const abstract = function() {
                    throw _errors.default.Error("E0001")
                };
                const copyStatic = function() {
                    const hasOwn = Object.prototype.hasOwnProperty;
                    return function(source, destination) {
                        for (const key in source) {
                            if (!hasOwn.call(source, key)) {
                                return
                            }
                            destination[key] = source[key]
                        }
                    }
                }();
                const classImpl = function() {};
                classImpl.inherit = function(members) {
                    const inheritor = function() {
                        if (!this || (0, _type.isWindow)(this) || "function" !== typeof this.constructor) {
                            throw _errors.default.Error("E0003")
                        }
                        const instance = this;
                        const ctor = instance.ctor;
                        const includedCtors = instance.constructor._includedCtors;
                        const includedPostCtors = instance.constructor._includedPostCtors;
                        let i;
                        for (i = 0; i < includedCtors.length; i++) {
                            includedCtors[i].call(instance)
                        }
                        if (ctor) {
                            ctor.apply(instance, arguments)
                        }
                        for (i = 0; i < includedPostCtors.length; i++) {
                            includedPostCtors[i].call(instance)
                        }
                    };
                    inheritor.prototype = function(obj) {
                        const func = function() {};
                        func.prototype = obj.prototype;
                        return new func
                    }(this);
                    copyStatic(this, inheritor);
                    inheritor.inherit = this.inherit;
                    inheritor.abstract = abstract;
                    inheritor.redefine = redefine;
                    inheritor.include = include;
                    inheritor.subclassOf = subclassOf;
                    inheritor.parent = this;
                    inheritor._includedCtors = this._includedCtors ? this._includedCtors.slice(0) : [];
                    inheritor._includedPostCtors = this._includedPostCtors ? this._includedPostCtors.slice(0) : [];
                    inheritor.prototype.constructor = inheritor;
                    inheritor.redefine(members);
                    return inheritor
                };
                classImpl.abstract = abstract;
                var _default = classImpl;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        44297:
            /*!***************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/component.js ***!
              \***************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Component = void 0;
                var _config = _interopRequireDefault(__webpack_require__( /*! ./config */ 80209));
                var _extend = __webpack_require__( /*! ./utils/extend */ 13306);
                var _index = __webpack_require__( /*! ./options/index */ 95683);
                var _utils = __webpack_require__( /*! ./options/utils */ 45434);
                var _class = _interopRequireDefault(__webpack_require__( /*! ./class */ 38377));
                var _action = _interopRequireDefault(__webpack_require__( /*! ./action */ 62414));
                var _errors = _interopRequireDefault(__webpack_require__( /*! ./errors */ 17381));
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ./utils/callbacks */ 44504));
                var _events_strategy = __webpack_require__( /*! ./events_strategy */ 80566);
                var _public_component = __webpack_require__( /*! ./utils/public_component */ 9321);
                var _postponed_operations = __webpack_require__( /*! ./postponed_operations */ 90889);
                var _type = __webpack_require__( /*! ./utils/type */ 35922);
                var _common = __webpack_require__( /*! ./utils/common */ 20576);
                var _data = __webpack_require__( /*! ./utils/data */ 47617);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const getEventName = actionName => actionName.charAt(2).toLowerCase() + actionName.substr(3);
                const Component = _class.default.inherit({
                    _setDeprecatedOptions() {
                        this._deprecatedOptions = {}
                    },
                    _getDeprecatedOptions() {
                        return this._deprecatedOptions
                    },
                    _getDefaultOptions: () => ({
                        onInitialized: null,
                        onOptionChanged: null,
                        onDisposing: null,
                        defaultOptionsRules: null
                    }),
                    _defaultOptionsRules: () => [],
                    _setOptionsByDevice(rules) {
                        this._options.applyRules(rules)
                    },
                    _convertRulesToOptions: rules => (0, _utils.convertRulesToOptions)(rules),
                    _isInitialOptionValue(name) {
                        return this._options.isInitial(name)
                    },
                    _setOptionsByReference() {
                        this._optionsByReference = {}
                    },
                    _getOptionsByReference() {
                        return this._optionsByReference
                    },
                    ctor() {
                        let options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                        const {
                            _optionChangedCallbacks: _optionChangedCallbacks,
                            _disposingCallbacks: _disposingCallbacks
                        } = options;
                        this.NAME = (0, _public_component.name)(this.constructor);
                        this._eventsStrategy = _events_strategy.EventsStrategy.create(this, options.eventsStrategy);
                        this._updateLockCount = 0;
                        this._optionChangedCallbacks = _optionChangedCallbacks || (0, _callbacks.default)();
                        this._disposingCallbacks = _disposingCallbacks || (0, _callbacks.default)();
                        this.postponedOperations = new _postponed_operations.PostponedOperations;
                        this._createOptions(options)
                    },
                    _createOptions(options) {
                        this.beginUpdate();
                        try {
                            this._setOptionsByReference();
                            this._setDeprecatedOptions();
                            this._options = new _index.Options(this._getDefaultOptions(), this._getDefaultOptions(), this._getOptionsByReference(), this._getDeprecatedOptions());
                            this._options.onChanging((name, previousValue, value) => this._initialized && this._optionChanging(name, previousValue, value));
                            this._options.onDeprecated((option, info) => this._logDeprecatedOptionWarning(option, info));
                            this._options.onChanged((name, value, previousValue) => this._notifyOptionChanged(name, value, previousValue));
                            this._options.onStartChange(() => this.beginUpdate());
                            this._options.onEndChange(() => this.endUpdate());
                            this._options.addRules(this._defaultOptionsRules());
                            if (options && options.onInitializing) {
                                options.onInitializing.apply(this, [options])
                            }
                            this._setOptionsByDevice(options.defaultOptionsRules);
                            this._initOptions(options)
                        } finally {
                            this.endUpdate()
                        }
                    },
                    _initOptions(options) {
                        this.option(options)
                    },
                    _init() {
                        this._createOptionChangedAction();
                        this.on("disposing", args => {
                            this._disposingCallbacks.fireWith(this, [args])
                        })
                    },
                    _logDeprecatedOptionWarning(option, info) {
                        const message = info.message || "Use the '".concat(info.alias, "' option instead");
                        _errors.default.log("W0001", this.NAME, option, info.since, message)
                    },
                    _logDeprecatedComponentWarning(since, alias) {
                        _errors.default.log("W0000", this.NAME, since, "Use the '".concat(alias, "' widget instead"))
                    },
                    _createOptionChangedAction() {
                        this._optionChangedAction = this._createActionByOption("onOptionChanged", {
                            excludeValidators: ["disabled", "readOnly"]
                        })
                    },
                    _createDisposingAction() {
                        this._disposingAction = this._createActionByOption("onDisposing", {
                            excludeValidators: ["disabled", "readOnly"]
                        })
                    },
                    _optionChanged(args) {
                        switch (args.name) {
                            case "onDisposing":
                            case "onInitialized":
                                break;
                            case "onOptionChanged":
                                this._createOptionChangedAction()
                        }
                    },
                    _dispose() {
                        this._optionChangedCallbacks.empty();
                        this._createDisposingAction();
                        this._disposingAction();
                        this._eventsStrategy.dispose();
                        this._options.dispose();
                        this._disposed = true
                    },
                    _lockUpdate() {
                        this._updateLockCount++
                    },
                    _unlockUpdate() {
                        this._updateLockCount = Math.max(this._updateLockCount - 1, 0)
                    },
                    _isUpdateAllowed() {
                        return 0 === this._updateLockCount
                    },
                    _isInitializingRequired() {
                        return !this._initializing && !this._initialized
                    },
                    isInitialized() {
                        return this._initialized
                    },
                    _commitUpdate() {
                        this.postponedOperations.callPostponedOperations();
                        this._isInitializingRequired() && this._initializeComponent()
                    },
                    _initializeComponent() {
                        this._initializing = true;
                        try {
                            this._init()
                        } finally {
                            this._initializing = false;
                            this._lockUpdate();
                            this._createActionByOption("onInitialized", {
                                excludeValidators: ["disabled", "readOnly"]
                            })();
                            this._unlockUpdate();
                            this._initialized = true
                        }
                    },
                    instance() {
                        return this
                    },
                    beginUpdate: function() {
                        this._lockUpdate()
                    },
                    endUpdate: function() {
                        this._unlockUpdate();
                        this._isUpdateAllowed() && this._commitUpdate()
                    },
                    _optionChanging: _common.noop,
                    _notifyOptionChanged(option, value, previousValue) {
                        if (this._initialized) {
                            const optionNames = [option].concat(this._options.getAliasesByName(option));
                            for (let i = 0; i < optionNames.length; i++) {
                                const name = optionNames[i];
                                const args = {
                                    name: (0, _data.getPathParts)(name)[0],
                                    fullName: name,
                                    value: value,
                                    previousValue: previousValue
                                };
                                if (!(optionName = name, 0 === optionName.indexOf("_", 0))) {
                                    this._optionChangedCallbacks.fireWith(this, [(0, _extend.extend)(this._defaultActionArgs(), args)]);
                                    this._optionChangedAction((0, _extend.extend)({}, args))
                                }
                                if (!this._disposed && this._cancelOptionChange !== name) {
                                    this._optionChanged(args)
                                }
                            }
                        }
                        var optionName
                    },
                    initialOption(name) {
                        return this._options.initial(name)
                    },
                    _defaultActionConfig() {
                        return {
                            context: this,
                            component: this
                        }
                    },
                    _defaultActionArgs() {
                        return {
                            component: this
                        }
                    },
                    _createAction(actionSource, config) {
                        let action;
                        return e => {
                            if (!(0, _type.isDefined)(e)) {
                                e = {}
                            }
                            if (!(0, _type.isPlainObject)(e)) {
                                e = {
                                    actionValue: e
                                }
                            }
                            action = action || new _action.default(actionSource, (0, _extend.extend)({}, config, this._defaultActionConfig()));
                            return action.execute.call(action, (0, _extend.extend)(e, this._defaultActionArgs()))
                        }
                    },
                    _createActionByOption(optionName, config) {
                        var _this = this;
                        let action;
                        let eventName;
                        let actionFunc;
                        config = (0, _extend.extend)({}, config);
                        const result = function() {
                            if (!eventName) {
                                config = config || {};
                                if ("string" !== typeof optionName) {
                                    throw _errors.default.Error("E0008")
                                }
                                if (0 === optionName.indexOf("on")) {
                                    eventName = getEventName(optionName)
                                }
                                actionFunc = _this.option(optionName)
                            }
                            if (!action && !actionFunc && !config.beforeExecute && !config.afterExecute && !_this._eventsStrategy.hasEvent(eventName)) {
                                return
                            }
                            if (!action) {
                                const beforeExecute = config.beforeExecute;
                                config.beforeExecute = function() {
                                    for (var _len2 = arguments.length, props = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
                                        props[_key2] = arguments[_key2]
                                    }
                                    beforeExecute && beforeExecute.apply(_this, props);
                                    _this._eventsStrategy.fireEvent(eventName, props[0].args)
                                };
                                action = _this._createAction(actionFunc, config)
                            }
                            for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
                                args[_key] = arguments[_key]
                            }
                            if ((0, _config.default)().wrapActionsBeforeExecute) {
                                const beforeActionExecute = _this.option("beforeActionExecute") || _common.noop;
                                const wrappedAction = beforeActionExecute(_this, action, config) || action;
                                return wrappedAction.apply(_this, args)
                            }
                            return action.apply(_this, args)
                        };
                        if ((0, _config.default)().wrapActionsBeforeExecute) {
                            return result
                        }
                        const onActionCreated = this.option("onActionCreated") || _common.noop;
                        return onActionCreated(this, result, config) || result
                    },
                    on(eventName, eventHandler) {
                        this._eventsStrategy.on(eventName, eventHandler);
                        return this
                    },
                    off(eventName, eventHandler) {
                        this._eventsStrategy.off(eventName, eventHandler);
                        return this
                    },
                    hasActionSubscription: function(actionName) {
                        return !!this._options.silent(actionName) || this._eventsStrategy.hasEvent(getEventName(actionName))
                    },
                    isOptionDeprecated(name) {
                        return this._options.isDeprecated(name)
                    },
                    _setOptionWithoutOptionChange(name, value) {
                        this._cancelOptionChange = name;
                        this.option(name, value);
                        this._cancelOptionChange = false
                    },
                    _getOptionValue(name, context) {
                        const value = this.option(name);
                        if ((0, _type.isFunction)(value)) {
                            return value.bind(context)()
                        }
                        return value
                    },
                    option() {
                        return this._options.option(...arguments)
                    },
                    resetOption(name) {
                        this.beginUpdate();
                        this._options.reset(name);
                        this.endUpdate()
                    }
                });
                exports.Component = Component
            },
        99393:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/component_registrator.js ***!
              \***************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ./renderer */ 68374));
                var _component_registrator_callbacks = _interopRequireDefault(__webpack_require__( /*! ./component_registrator_callbacks */ 5554));
                var _errors = _interopRequireDefault(__webpack_require__( /*! ./errors */ 17381));
                var _public_component = __webpack_require__( /*! ./utils/public_component */ 9321);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                _component_registrator_callbacks.default.add((function(name, componentClass) {
                    _renderer.default.fn[name] = function(options) {
                        const isMemberInvoke = "string" === typeof options;
                        let result;
                        if (isMemberInvoke) {
                            const memberName = options;
                            const memberArgs = [].slice.call(arguments).slice(1);
                            this.each((function() {
                                const instance = componentClass.getInstance(this);
                                if (!instance) {
                                    throw _errors.default.Error("E0009", name)
                                }
                                const member = instance[memberName];
                                const memberValue = member.apply(instance, memberArgs);
                                if (void 0 === result) {
                                    result = memberValue
                                }
                            }))
                        } else {
                            this.each((function() {
                                const instance = componentClass.getInstance(this);
                                if (instance) {
                                    instance.option(options)
                                } else {
                                    new componentClass(this, options)
                                }
                            }));
                            result = this
                        }
                        return result
                    }
                }));
                var _default = function(name, namespace, componentClass) {
                    if (!componentClass) {
                        componentClass = namespace
                    } else {
                        namespace[name] = componentClass
                    }(0, _public_component.name)(componentClass, name);
                    _component_registrator_callbacks.default.fire(name, componentClass)
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        5554:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/component_registrator_callbacks.js ***!
              \*************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _memorized_callbacks = (obj = __webpack_require__( /*! ./memorized_callbacks */ 83358), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = new _memorized_callbacks.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        80209:
            /*!************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/config.js ***!
              \************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _extend = __webpack_require__( /*! ./utils/extend */ 13306);
                var _errors = (obj = __webpack_require__( /*! ./errors */ 17381), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const config = {
                    rtlEnabled: false,
                    defaultCurrency: "USD",
                    defaultUseCurrencyAccountingStyle: true,
                    oDataFilterToLower: true,
                    serverDecimalSeparator: ".",
                    decimalSeparator: ".",
                    thousandsSeparator: ",",
                    forceIsoDateParsing: true,
                    wrapActionsBeforeExecute: true,
                    useLegacyStoreResult: false,
                    useJQuery: void 0,
                    editorStylingMode: void 0,
                    useLegacyVisibleIndex: false,
                    floatingActionButtonConfig: {
                        icon: "add",
                        closeIcon: "close",
                        label: "",
                        position: {
                            at: "right bottom",
                            my: "right bottom",
                            offset: {
                                x: -16,
                                y: -16
                            }
                        },
                        maxSpeedDialActionCount: 5,
                        shading: false,
                        direction: "auto"
                    },
                    optionsParser: optionsString => {
                        if ("{" !== optionsString.trim().charAt(0)) {
                            optionsString = "{" + optionsString + "}"
                        }
                        try {
                            return JSON.parse(optionsString)
                        } catch (ex) {
                            try {
                                return JSON.parse(normalizeToJSONString(optionsString))
                            } catch (exNormalize) {
                                throw _errors.default.Error("E3018", ex, optionsString)
                            }
                        }
                    }
                };
                const normalizeToJSONString = optionsString => optionsString.replace(/'/g, '"').replace(/,\s*([\]}])/g, "$1").replace(/([{,])\s*([^":\s]+)\s*:/g, '$1"$2":');
                const deprecatedFields = ["decimalSeparator", "thousandsSeparator"];
                const configMethod = function() {
                    if (!arguments.length) {
                        return config
                    }
                    const newConfig = arguments.length <= 0 ? void 0 : arguments[0];
                    deprecatedFields.forEach(deprecatedField => {
                        if (newConfig[deprecatedField]) {
                            const message = "Now, the ".concat(deprecatedField, " is selected based on the specified locale.");
                            _errors.default.log("W0003", "config", deprecatedField, "19.2", message)
                        }
                    });
                    (0, _extend.extend)(config, newConfig)
                };
                if ("undefined" !== typeof DevExpress && DevExpress.config) {
                    configMethod(DevExpress.config)
                }
                var _default = configMethod;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        20530:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/devices.js ***!
              \*************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ./utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _window = __webpack_require__( /*! ./utils/window */ 58201);
                var _extend = __webpack_require__( /*! ./utils/extend */ 13306);
                var _type = __webpack_require__( /*! ./utils/type */ 35922);
                var _errors = _interopRequireDefault(__webpack_require__( /*! ./errors */ 17381));
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ./utils/callbacks */ 44504));
                var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ./utils/ready_callbacks */ 24311));
                var _resize_callbacks = _interopRequireDefault(__webpack_require__( /*! ./utils/resize_callbacks */ 55814));
                var _events_strategy = __webpack_require__( /*! ./events_strategy */ 80566);
                var _storage = __webpack_require__( /*! ./utils/storage */ 36613);
                var _view_port = __webpack_require__( /*! ./utils/view_port */ 77695);
                var _config = _interopRequireDefault(__webpack_require__( /*! ./config */ 80209));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();
                const KNOWN_UA_TABLE = {
                    iPhone: "iPhone",
                    iPhone5: "iPhone",
                    iPhone6: "iPhone",
                    iPhone6plus: "iPhone",
                    iPad: "iPad",
                    iPadMini: "iPad Mini",
                    androidPhone: "Android Mobile",
                    androidTablet: "Android",
                    msSurface: "Windows ARM Tablet PC",
                    desktop: "desktop"
                };
                const DEFAULT_DEVICE = {
                    deviceType: "desktop",
                    platform: "generic",
                    version: [],
                    phone: false,
                    tablet: false,
                    android: false,
                    ios: false,
                    generic: true,
                    grade: "A",
                    mac: false
                };
                const UA_PARSERS = {
                    generic(userAgent) {
                        const isPhone = /windows phone/i.test(userAgent) || userAgent.match(/WPDesktop/);
                        const isTablet = !isPhone && /Windows(.*)arm(.*)Tablet PC/i.test(userAgent);
                        const isDesktop = !isPhone && !isTablet && /msapphost/i.test(userAgent);
                        const isMac = /((intel|ppc) mac os x)/.test(userAgent.toLowerCase());
                        if (!(isPhone || isTablet || isDesktop || isMac)) {
                            return null
                        }
                        return {
                            deviceType: isPhone ? "phone" : isTablet ? "tablet" : "desktop",
                            platform: "generic",
                            version: [],
                            grade: "A",
                            mac: isMac
                        }
                    },
                    appleTouchDevice(userAgent) {
                        const navigator = (0, _window.getNavigator)();
                        const isIpadOs = /Macintosh/i.test(userAgent) && (null === navigator || void 0 === navigator ? void 0 : navigator.maxTouchPoints) > 2;
                        const isAppleDevice = /ip(hone|od|ad)/i.test(userAgent);
                        if (!isAppleDevice && !isIpadOs) {
                            return null
                        }
                        const isPhone = /ip(hone|od)/i.test(userAgent);
                        const matches = userAgent.match(/os\s{0,}X? (\d+)_(\d+)_?(\d+)?/i);
                        const version = matches ? [parseInt(matches[1], 10), parseInt(matches[2], 10), parseInt(matches[3] || 0, 10)] : [];
                        const isIPhone4 = 480 === window.screen.height;
                        const grade = isIPhone4 ? "B" : "A";
                        return {
                            deviceType: isPhone ? "phone" : "tablet",
                            platform: "ios",
                            version: version,
                            grade: grade
                        }
                    },
                    android(userAgent) {
                        const isAndroid = /android|htc_|silk/i.test(userAgent);
                        const isWinPhone = /windows phone/i.test(userAgent);
                        if (!isAndroid || isWinPhone) {
                            return null
                        }
                        const isPhone = /mobile/i.test(userAgent);
                        const matches = userAgent.match(/android (\d+)\.?(\d+)?\.?(\d+)?/i);
                        const version = matches ? [parseInt(matches[1], 10), parseInt(matches[2] || 0, 10), parseInt(matches[3] || 0, 10)] : [];
                        const worseThan4_4 = version.length > 1 && (version[0] < 4 || 4 === version[0] && version[1] < 4);
                        const grade = worseThan4_4 ? "B" : "A";
                        return {
                            deviceType: isPhone ? "phone" : "tablet",
                            platform: "android",
                            version: version,
                            grade: grade
                        }
                    }
                };
                const UA_PARSERS_ARRAY = [UA_PARSERS.appleTouchDevice, UA_PARSERS.android, UA_PARSERS.generic];
                let Devices = function() {
                    function Devices(options) {
                        this._window = (null === options || void 0 === options ? void 0 : options.window) || window;
                        this._realDevice = this._getDevice();
                        this._currentDevice = void 0;
                        this._currentOrientation = void 0;
                        this._eventsStrategy = new _events_strategy.EventsStrategy(this);
                        this.changed = (0, _callbacks.default)();
                        if ((0, _window.hasWindow)()) {
                            _ready_callbacks.default.add(this._recalculateOrientation.bind(this));
                            _resize_callbacks.default.add(this._recalculateOrientation.bind(this))
                        }
                    }
                    var _proto = Devices.prototype;
                    _proto.current = function(deviceOrName) {
                        if (deviceOrName) {
                            this._currentDevice = this._getDevice(deviceOrName);
                            this._forced = true;
                            this.changed.fire();
                            return
                        }
                        if (!this._currentDevice) {
                            deviceOrName = void 0;
                            try {
                                deviceOrName = this._getDeviceOrNameFromWindowScope()
                            } catch (e) {
                                deviceOrName = this._getDeviceNameFromSessionStorage()
                            } finally {
                                if (!deviceOrName) {
                                    deviceOrName = this._getDeviceNameFromSessionStorage()
                                }
                                if (deviceOrName) {
                                    this._forced = true
                                }
                            }
                            this._currentDevice = this._getDevice(deviceOrName)
                        }
                        return this._currentDevice
                    };
                    _proto.real = function(forceDevice) {
                        return (0, _extend.extend)({}, this._realDevice)
                    };
                    _proto.orientation = function() {
                        return this._currentOrientation
                    };
                    _proto.isForced = function() {
                        return this._forced
                    };
                    _proto.isRippleEmulator = function() {
                        return !!this._window.tinyHippos
                    };
                    _proto._getCssClasses = function(device) {
                        const result = [];
                        const realDevice = this._realDevice;
                        device = device || this.current();
                        if (device.deviceType) {
                            result.push("dx-device-".concat(device.deviceType));
                            if ("desktop" !== device.deviceType) {
                                result.push("dx-device-mobile")
                            }
                        }
                        result.push("dx-device-".concat(realDevice.platform));
                        if (realDevice.version && realDevice.version.length) {
                            result.push("dx-device-".concat(realDevice.platform, "-").concat(realDevice.version[0]))
                        }
                        if (this.isSimulator()) {
                            result.push("dx-simulator")
                        }
                        if ((0, _config.default)().rtlEnabled) {
                            result.push("dx-rtl")
                        }
                        return result
                    };
                    _proto.attachCssClasses = function(element, device) {
                        this._deviceClasses = this._getCssClasses(device).join(" ");
                        (0, _renderer.default)(element).addClass(this._deviceClasses)
                    };
                    _proto.detachCssClasses = function(element) {
                        (0, _renderer.default)(element).removeClass(this._deviceClasses)
                    };
                    _proto.isSimulator = function() {
                        try {
                            return this._isSimulator || (0, _window.hasWindow)() && this._window.top !== this._window.self && this._window.top["dx-force-device"] || this.isRippleEmulator()
                        } catch (e) {
                            return false
                        }
                    };
                    _proto.forceSimulator = function() {
                        this._isSimulator = true
                    };
                    _proto._getDevice = function(deviceName) {
                        if ("genericPhone" === deviceName) {
                            deviceName = {
                                deviceType: "phone",
                                platform: "generic",
                                generic: true
                            }
                        }
                        if ((0, _type.isPlainObject)(deviceName)) {
                            return this._fromConfig(deviceName)
                        } else {
                            let ua;
                            if (deviceName) {
                                ua = KNOWN_UA_TABLE[deviceName];
                                if (!ua) {
                                    throw _errors.default.Error("E0005")
                                }
                            } else {
                                const navigator = (0, _window.getNavigator)();
                                ua = navigator.userAgent
                            }
                            return this._fromUA(ua)
                        }
                    };
                    _proto._getDeviceOrNameFromWindowScope = function() {
                        let result;
                        if ((0, _window.hasWindow)() && (this._window.top["dx-force-device-object"] || this._window.top["dx-force-device"])) {
                            result = this._window.top["dx-force-device-object"] || this._window.top["dx-force-device"]
                        }
                        return result
                    };
                    _proto._getDeviceNameFromSessionStorage = function() {
                        const sessionStorage = (0, _storage.sessionStorage)();
                        if (!sessionStorage) {
                            return
                        }
                        const deviceOrName = sessionStorage.getItem("dx-force-device");
                        try {
                            return JSON.parse(deviceOrName)
                        } catch (ex) {
                            return deviceOrName
                        }
                    };
                    _proto._fromConfig = function(config) {
                        const result = (0, _extend.extend)({}, DEFAULT_DEVICE, this._currentDevice, config);
                        const shortcuts = {
                            phone: "phone" === result.deviceType,
                            tablet: "tablet" === result.deviceType,
                            android: "android" === result.platform,
                            ios: "ios" === result.platform,
                            generic: "generic" === result.platform
                        };
                        return (0, _extend.extend)(result, shortcuts)
                    };
                    _proto._fromUA = function(ua) {
                        for (let idx = 0; idx < UA_PARSERS_ARRAY.length; idx += 1) {
                            const parser = UA_PARSERS_ARRAY[idx];
                            const config = parser(ua);
                            if (config) {
                                return this._fromConfig(config)
                            }
                        }
                        return DEFAULT_DEVICE
                    };
                    _proto._changeOrientation = function() {
                        const $window = (0, _renderer.default)(this._window);
                        const orientation = (0, _size.getHeight)($window) > (0, _size.getWidth)($window) ? "portrait" : "landscape";
                        if (this._currentOrientation === orientation) {
                            return
                        }
                        this._currentOrientation = orientation;
                        this._eventsStrategy.fireEvent("orientationChanged", [{
                            orientation: orientation
                        }])
                    };
                    _proto._recalculateOrientation = function() {
                        const windowWidth = (0, _size.getWidth)(this._window);
                        if (this._currentWidth === windowWidth) {
                            return
                        }
                        this._currentWidth = windowWidth;
                        this._changeOrientation()
                    };
                    _proto.on = function(eventName, eventHandler) {
                        this._eventsStrategy.on(eventName, eventHandler);
                        return this
                    };
                    _proto.off = function(eventName, eventHandler) {
                        this._eventsStrategy.off(eventName, eventHandler);
                        return this
                    };
                    return Devices
                }();
                const devices = new Devices;
                const viewPortElement = (0, _view_port.value)();
                if (viewPortElement) {
                    devices.attachCssClasses(viewPortElement)
                }
                _view_port.changeCallback.add((viewPort, prevViewport) => {
                    devices.detachCssClasses(prevViewport);
                    devices.attachCssClasses(viewPort)
                });
                var _default = devices;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        73349:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/dom_adapter.js ***!
              \*****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _dependency_injector = (obj = __webpack_require__( /*! ./utils/dependency_injector */ 20476), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _common = __webpack_require__( /*! ./utils/common */ 20576);
                var _shadow_dom = __webpack_require__( /*! ./utils/shadow_dom */ 90330);
                const nativeDOMAdapterStrategy = {
                    querySelectorAll: (element, selector) => element.querySelectorAll(selector),
                    elementMatches(element, selector) {
                        const matches = element.matches || element.matchesSelector || element.mozMatchesSelector || element.msMatchesSelector || element.oMatchesSelector || element.webkitMatchesSelector || (selector => {
                            const doc = element.document || element.ownerDocument;
                            if (!doc) {
                                return false
                            }
                            const items = this.querySelectorAll(doc, selector);
                            for (let i = 0; i < items.length; i++) {
                                if (items[i] === element) {
                                    return true
                                }
                            }
                        });
                        return matches.call(element, selector)
                    },
                    createElement(tagName, context) {
                        context = context || this._document;
                        return context.createElement(tagName)
                    },
                    createElementNS(ns, tagName, context) {
                        context = context || this._document;
                        return context.createElementNS(ns, tagName)
                    },
                    createTextNode(text, context) {
                        context = context || this._document;
                        return context.createTextNode(text)
                    },
                    createAttribute(text, context) {
                        context = context || this._document;
                        return context.createAttribute(text)
                    },
                    isNode: element => element && "object" === typeof element && "nodeType" in element && "nodeName" in element,
                    isElementNode: element => element && 1 === element.nodeType,
                    isTextNode: element => element && 3 === element.nodeType,
                    isDocument: element => element && 9 === element.nodeType,
                    isDocumentFragment: element => element && 11 === element.nodeType,
                    removeElement(element) {
                        const parentNode = element && element.parentNode;
                        if (parentNode) {
                            parentNode.removeChild(element)
                        }
                    },
                    insertElement(parentElement, newElement, nextSiblingElement) {
                        if (parentElement && newElement && parentElement !== newElement) {
                            if (nextSiblingElement) {
                                parentElement.insertBefore(newElement, nextSiblingElement)
                            } else {
                                parentElement.appendChild(newElement)
                            }
                        }
                    },
                    getAttribute: (element, name) => element.getAttribute(name),
                    setAttribute(element, name, value) {
                        if ("style" === name) {
                            element.style.cssText = value
                        } else {
                            element.setAttribute(name, value)
                        }
                    },
                    removeAttribute(element, name) {
                        element.removeAttribute(name)
                    },
                    setProperty(element, name, value) {
                        element[name] = value
                    },
                    setText(element, text) {
                        if (element) {
                            element.textContent = text
                        }
                    },
                    setClass(element, className, isAdd) {
                        if (1 === element.nodeType && className) {
                            isAdd ? element.classList.add(className) : element.classList.remove(className)
                        }
                    },
                    setStyle(element, name, value) {
                        element.style[name] = value || ""
                    },
                    _document: "undefined" === typeof document ? void 0 : document,
                    getDocument() {
                        return this._document
                    },
                    getActiveElement(element) {
                        const activeElementHolder = this.getRootNode(element);
                        return activeElementHolder.activeElement
                    },
                    getRootNode(element) {
                        var _element$getRootNode, _element$getRootNode2;
                        return null !== (_element$getRootNode = null === element || void 0 === element ? void 0 : null === (_element$getRootNode2 = element.getRootNode) || void 0 === _element$getRootNode2 ? void 0 : _element$getRootNode2.call(element)) && void 0 !== _element$getRootNode ? _element$getRootNode : this._document
                    },
                    getBody() {
                        return this._document.body
                    },
                    createDocumentFragment() {
                        return this._document.createDocumentFragment()
                    },
                    getDocumentElement() {
                        return this._document.documentElement
                    },
                    getLocation() {
                        return this._document.location
                    },
                    getSelection() {
                        return this._document.selection
                    },
                    getReadyState() {
                        return this._document.readyState
                    },
                    getHead() {
                        return this._document.head
                    },
                    hasDocumentProperty(property) {
                        return property in this._document
                    },
                    listen(element, event, callback, options) {
                        if (!element || !("addEventListener" in element)) {
                            return _common.noop
                        }
                        element.addEventListener(event, callback, options);
                        return () => {
                            element.removeEventListener(event, callback)
                        }
                    },
                    elementsFromPoint(x, y, element) {
                        const activeElementHolder = this.getRootNode(element);
                        if (activeElementHolder.host) {
                            return (0, _shadow_dom.getShadowElementsFromPoint)(x, y, activeElementHolder)
                        }
                        return activeElementHolder.elementsFromPoint(x, y)
                    }
                };
                var _default = (0, _dependency_injector.default)(nativeDOMAdapterStrategy);
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        13046:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/dom_component.js ***!
              \*******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _config = _interopRequireDefault(__webpack_require__( /*! ./config */ 80209));
                var _errors = _interopRequireDefault(__webpack_require__( /*! ./errors */ 17381));
                var _resize_callbacks = _interopRequireDefault(__webpack_require__( /*! ../core/utils/resize_callbacks */ 55814));
                var _component = __webpack_require__( /*! ./component */ 44297);
                var _template_manager = __webpack_require__( /*! ./template_manager */ 14192);
                var _public_component = __webpack_require__( /*! ./utils/public_component */ 9321);
                var _shadow_dom = __webpack_require__( /*! ./utils/shadow_dom */ 90330);
                var _element_data = __webpack_require__( /*! ./element_data */ 97906);
                var _iterator = __webpack_require__( /*! ./utils/iterator */ 95479);
                var _extend = __webpack_require__( /*! ./utils/extend */ 13306);
                var _element = __webpack_require__( /*! ../core/element */ 6415);
                var _common = __webpack_require__( /*! ./utils/common */ 20576);
                var _type = __webpack_require__( /*! ./utils/type */ 35922);
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _short = __webpack_require__( /*! ../events/short */ 72918);
                var _license_validation = function(obj, nodeInterop) {
                    if (!nodeInterop && obj && obj.__esModule) {
                        return obj
                    }
                    if (null === obj || "object" !== typeof obj && "function" !== typeof obj) {
                        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 ("default" !== key && 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
                }(__webpack_require__( /*! ../__internal/core/license/license_validation */ 77685));

                function _getRequireWildcardCache(nodeInterop) {
                    if ("function" !== typeof WeakMap) {
                        return null
                    }
                    var cacheBabelInterop = new WeakMap;
                    var cacheNodeInterop = new WeakMap;
                    return (_getRequireWildcardCache = function(nodeInterop) {
                        return nodeInterop ? cacheNodeInterop : cacheBabelInterop
                    })(nodeInterop)
                }

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const {
                    abstract: abstract
                } = _component.Component;
                const DOMComponent = _component.Component.inherit({
                    _getDefaultOptions() {
                        return (0, _extend.extend)(this.callBase(), {
                            width: void 0,
                            height: void 0,
                            rtlEnabled: (0, _config.default)().rtlEnabled,
                            elementAttr: {},
                            disabled: false,
                            integrationOptions: {}
                        }, this._useTemplates() ? _template_manager.TemplateManager.createDefaultOptions() : {})
                    },
                    ctor(element, options) {
                        this._customClass = null;
                        this._createElement(element);
                        (0, _public_component.attachInstanceToElement)(this._$element, this, this._dispose);
                        this.callBase(options);
                        const validationAlreadyPerformed = (0, _license_validation.peekValidationPerformed)();
                        _license_validation.default.validateLicense((0, _config.default)().licenseKey);
                        if (!validationAlreadyPerformed && (0, _license_validation.peekValidationPerformed)()) {
                            (0, _config.default)({
                                licenseKey: ""
                            })
                        }
                    },
                    _createElement(element) {
                        this._$element = (0, _renderer.default)(element)
                    },
                    _getSynchronizableOptionsForCreateComponent: () => ["rtlEnabled", "disabled", "templatesRenderAsynchronously"],
                    _checkFunctionValueDeprecation: function(optionNames) {
                        if (!this.option("_ignoreFunctionValueDeprecation")) {
                            optionNames.forEach(optionName => {
                                if ((0, _type.isFunction)(this.option(optionName))) {
                                    _errors.default.log("W0017", optionName)
                                }
                            })
                        }
                    },
                    _visibilityChanged: abstract,
                    _dimensionChanged: abstract,
                    _init() {
                        this.callBase();
                        this._checkFunctionValueDeprecation(["width", "height", "maxHeight", "maxWidth", "minHeight", "minWidth", "popupHeight", "popupWidth"]);
                        this._attachWindowResizeCallback();
                        this._initTemplateManager()
                    },
                    _setOptionsByDevice(instanceCustomRules) {
                        this.callBase([].concat(this.constructor._classCustomRules || [], instanceCustomRules || []))
                    },
                    _isInitialOptionValue(name) {
                        const isCustomOption = this.constructor._classCustomRules && Object.prototype.hasOwnProperty.call(this._convertRulesToOptions(this.constructor._classCustomRules), name);
                        return !isCustomOption && this.callBase(name)
                    },
                    _attachWindowResizeCallback() {
                        if (this._isDimensionChangeSupported()) {
                            const windowResizeCallBack = this._windowResizeCallBack = this._dimensionChanged.bind(this);
                            _resize_callbacks.default.add(windowResizeCallBack)
                        }
                    },
                    _isDimensionChangeSupported() {
                        return this._dimensionChanged !== abstract
                    },
                    _renderComponent() {
                        this._initMarkup();
                        (0, _window.hasWindow)() && this._render()
                    },
                    _initMarkup() {
                        const {
                            rtlEnabled: rtlEnabled
                        } = this.option() || {};
                        this._renderElementAttributes();
                        this._toggleRTLDirection(rtlEnabled);
                        this._renderVisibilityChange();
                        this._renderDimensions()
                    },
                    _render() {
                        this._attachVisibilityChangeHandlers();
                        (0, _shadow_dom.addShadowDomStyles)(this.$element())
                    },
                    _renderElementAttributes() {
                        const {
                            elementAttr: elementAttr
                        } = this.option() || {};
                        const attributes = (0, _extend.extend)({}, elementAttr);
                        const classNames = attributes.class;
                        delete attributes.class;
                        this.$element().attr(attributes).removeClass(this._customClass).addClass(classNames);
                        this._customClass = classNames
                    },
                    _renderVisibilityChange() {
                        if (this._isDimensionChangeSupported()) {
                            this._attachDimensionChangeHandlers()
                        }
                        if (this._isVisibilityChangeSupported()) {
                            const $element = this.$element();
                            $element.addClass("dx-visibility-change-handler")
                        }
                    },
                    _renderDimensions() {
                        const $element = this.$element();
                        const element = $element.get(0);
                        const width = this._getOptionValue("width", element);
                        const height = this._getOptionValue("height", element);
                        if (this._isCssUpdateRequired(element, height, width)) {
                            $element.css({
                                width: null === width ? "" : width,
                                height: null === height ? "" : height
                            })
                        }
                    },
                    _isCssUpdateRequired: (element, height, width) => !!((0, _type.isDefined)(width) || (0, _type.isDefined)(height) || element.style.width || element.style.height),
                    _attachDimensionChangeHandlers() {
                        const $el = this.$element();
                        const namespace = "".concat(this.NAME, "VisibilityChange");
                        _short.resize.off($el, {
                            namespace: namespace
                        });
                        _short.resize.on($el, () => this._dimensionChanged(), {
                            namespace: namespace
                        })
                    },
                    _attachVisibilityChangeHandlers() {
                        if (this._isVisibilityChangeSupported()) {
                            const $el = this.$element();
                            const namespace = "".concat(this.NAME, "VisibilityChange");
                            this._isHidden = !this._isVisible();
                            _short.visibility.off($el, {
                                namespace: namespace
                            });
                            _short.visibility.on($el, () => this._checkVisibilityChanged("shown"), () => this._checkVisibilityChanged("hiding"), {
                                namespace: namespace
                            })
                        }
                    },
                    _isVisible() {
                        const $element = this.$element();
                        return $element.is(":visible")
                    },
                    _checkVisibilityChanged(action) {
                        const isVisible = this._isVisible();
                        if (isVisible) {
                            if ("hiding" === action && !this._isHidden) {
                                this._visibilityChanged(false);
                                this._isHidden = true
                            } else if ("shown" === action && this._isHidden) {
                                this._isHidden = false;
                                this._visibilityChanged(true)
                            }
                        }
                    },
                    _isVisibilityChangeSupported() {
                        return this._visibilityChanged !== abstract && (0, _window.hasWindow)()
                    },
                    _clean: _common.noop,
                    _modelByElement() {
                        const {
                            modelByElement: modelByElement
                        } = this.option();
                        const $element = this.$element();
                        return modelByElement ? modelByElement($element) : void 0
                    },
                    _invalidate() {
                        if (this._isUpdateAllowed()) {
                            throw _errors.default.Error("E0007")
                        }
                        this._requireRefresh = true
                    },
                    _refresh() {
                        this._clean();
                        this._renderComponent()
                    },
                    _dispose() {
                        this._templateManager && this._templateManager.dispose();
                        this.callBase();
                        this._clean();
                        this._detachWindowResizeCallback()
                    },
                    _detachWindowResizeCallback() {
                        if (this._isDimensionChangeSupported()) {
                            _resize_callbacks.default.remove(this._windowResizeCallBack)
                        }
                    },
                    _toggleRTLDirection(rtl) {
                        const $element = this.$element();
                        $element.toggleClass("dx-rtl", rtl)
                    },
                    _createComponent(element, component) {
                        let config = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                        const synchronizableOptions = (0, _common.grep)(this._getSynchronizableOptionsForCreateComponent(), value => !(value in config));
                        const {
                            integrationOptions: integrationOptions
                        } = this.option();
                        let {
                            nestedComponentOptions: nestedComponentOptions
                        } = this.option();
                        nestedComponentOptions = nestedComponentOptions || _common.noop;
                        const nestedComponentConfig = (0, _extend.extend)({
                            integrationOptions: integrationOptions
                        }, nestedComponentOptions(this));
                        synchronizableOptions.forEach(optionName => nestedComponentConfig[optionName] = this.option(optionName));
                        this._extendConfig(config, nestedComponentConfig);
                        let instance = void 0;
                        if ((0, _type.isString)(component)) {
                            const $element = (0, _renderer.default)(element)[component](config);
                            instance = $element[component]("instance")
                        } else if (element) {
                            instance = component.getInstance(element);
                            if (instance) {
                                instance.option(config)
                            } else {
                                instance = new component(element, config)
                            }
                        }
                        if (instance) {
                            const optionChangedHandler = _ref => {
                                let {
                                    name: name,
                                    value: value
                                } = _ref;
                                if (synchronizableOptions.includes(name)) {
                                    instance.option(name, value)
                                }
                            };
                            this.on("optionChanged", optionChangedHandler);
                            instance.on("disposing", () => this.off("optionChanged", optionChangedHandler))
                        }
                        return instance
                    },
                    _extendConfig(config, extendConfig) {
                        (0, _iterator.each)(extendConfig, (key, value) => {
                            !Object.prototype.hasOwnProperty.call(config, key) && (config[key] = value)
                        })
                    },
                    _defaultActionConfig() {
                        const $element = this.$element();
                        const context = this._modelByElement($element);
                        return (0, _extend.extend)(this.callBase(), {
                            context: context
                        })
                    },
                    _defaultActionArgs() {
                        const $element = this.$element();
                        const model = this._modelByElement($element);
                        const element = this.element();
                        return (0, _extend.extend)(this.callBase(), {
                            element: element,
                            model: model
                        })
                    },
                    _optionChanged(args) {
                        switch (args.name) {
                            case "width":
                            case "height":
                                this._renderDimensions();
                                break;
                            case "rtlEnabled":
                                this._invalidate();
                                break;
                            case "elementAttr":
                                this._renderElementAttributes();
                                break;
                            case "disabled":
                            case "integrationOptions":
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _removeAttributes(element) {
                        const attrs = element.attributes;
                        for (let i = attrs.length - 1; i >= 0; i--) {
                            const attr = attrs[i];
                            if (attr) {
                                const {
                                    name: name
                                } = attr;
                                if (!name.indexOf("aria-") || -1 !== name.indexOf("dx-") || "role" === name || "style" === name || "tabindex" === name) {
                                    element.removeAttribute(name)
                                }
                            }
                        }
                    },
                    _removeClasses(element) {
                        element.className = element.className.split(" ").filter(cssClass => 0 !== cssClass.lastIndexOf("dx-", 0)).join(" ")
                    },
                    _updateDOMComponent(renderRequired) {
                        if (renderRequired) {
                            this._renderComponent()
                        } else if (this._requireRefresh) {
                            this._requireRefresh = false;
                            this._refresh()
                        }
                    },
                    endUpdate() {
                        const renderRequired = this._isInitializingRequired();
                        this.callBase();
                        this._isUpdateAllowed() && this._updateDOMComponent(renderRequired)
                    },
                    $element() {
                        return this._$element
                    },
                    element() {
                        const $element = this.$element();
                        return (0, _element.getPublicElement)($element)
                    },
                    dispose() {
                        const element = this.$element().get(0);
                        (0, _element_data.cleanDataRecursive)(element, true);
                        element.textContent = "";
                        this._removeAttributes(element);
                        this._removeClasses(element)
                    },
                    resetOption(optionName) {
                        this.callBase(optionName);
                        if ("width" === optionName || "height" === optionName) {
                            const initialOption = this.initialOption(optionName);
                            !(0, _type.isDefined)(initialOption) && this.$element().css(optionName, "")
                        }
                    },
                    _getAnonymousTemplateName() {
                        return
                    },
                    _initTemplateManager() {
                        if (this._templateManager || !this._useTemplates()) {
                            return
                        }
                        const {
                            integrationOptions: integrationOptions = {}
                        } = this.option();
                        const {
                            createTemplate: createTemplate
                        } = integrationOptions;
                        this._templateManager = new _template_manager.TemplateManager(createTemplate, this._getAnonymousTemplateName());
                        this._initTemplates()
                    },
                    _initTemplates() {
                        const {
                            templates: templates,
                            anonymousTemplateMeta: anonymousTemplateMeta
                        } = this._templateManager.extractTemplates(this.$element());
                        const anonymousTemplate = this.option("integrationOptions.templates.".concat(anonymousTemplateMeta.name));
                        templates.forEach(_ref2 => {
                            let {
                                name: name,
                                template: template
                            } = _ref2;
                            this._options.silent("integrationOptions.templates.".concat(name), template)
                        });
                        if (anonymousTemplateMeta.name && !anonymousTemplate) {
                            this._options.silent("integrationOptions.templates.".concat(anonymousTemplateMeta.name), anonymousTemplateMeta.template);
                            this._options.silent("_hasAnonymousTemplateContent", true)
                        }
                    },
                    _getTemplateByOption(optionName) {
                        return this._getTemplate(this.option(optionName))
                    },
                    _getTemplate(templateSource) {
                        const templates = this.option("integrationOptions.templates");
                        const isAsyncTemplate = this.option("templatesRenderAsynchronously");
                        const skipTemplates = this.option("integrationOptions.skipTemplates");
                        return this._templateManager.getTemplate(templateSource, templates, {
                            isAsyncTemplate: isAsyncTemplate,
                            skipTemplates: skipTemplates
                        }, this)
                    },
                    _saveTemplate(name, template) {
                        this._setOptionWithoutOptionChange("integrationOptions.templates." + name, this._templateManager._createTemplate(template))
                    },
                    _useTemplates: () => true
                });
                DOMComponent.getInstance = function(element) {
                    return (0, _public_component.getInstanceByElement)((0, _renderer.default)(element), this)
                };
                DOMComponent.defaultOptions = function(rule) {
                    this._classCustomRules = this._classCustomRules || [];
                    this._classCustomRules.push(rule)
                };
                var _default = DOMComponent;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        6415:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/element.js ***!
              \*************************************************************/
            function(__unused_webpack_module, exports) {
                exports.getPublicElement = function(element) {
                    return strategy(element)
                };
                exports.setPublicElementWrapper = function(newStrategy) {
                    strategy = newStrategy
                };
                let strategy = function(element) {
                    return element && element.get(0)
                }
            },
        97906:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/element_data.js ***!
              \******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.afterCleanData = function(callback) {
                    afterCleanDataFunc = callback
                };
                exports.beforeCleanData = function(callback) {
                    beforeCleanDataFunc = callback
                };
                exports.cleanData = function(nodes) {
                    return strategy.cleanData.call(this, nodes)
                };
                exports.cleanDataRecursive = function(element, cleanSelf) {
                    if (!_dom_adapter.default.isElementNode(element)) {
                        return
                    }
                    const childElements = element.getElementsByTagName("*");
                    strategy.cleanData(childElements);
                    if (cleanSelf) {
                        strategy.cleanData([element])
                    }
                };
                exports.data = function() {
                    return strategy.data.apply(this, arguments)
                };
                exports.getDataStrategy = function() {
                    return strategy
                };
                exports.removeData = function(element, key) {
                    return strategy.removeData.call(this, element, key)
                };
                exports.strategyChanging = exports.setDataStrategy = void 0;
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ./dom_adapter */ 73349));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../events/core/events_engine */ 55994));
                var _memorized_callbacks = _interopRequireDefault(__webpack_require__( /*! ./memorized_callbacks */ 83358));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const dataMap = new WeakMap;
                let strategy;
                const strategyChanging = new _memorized_callbacks.default;
                exports.strategyChanging = strategyChanging;
                let beforeCleanDataFunc = function() {};
                let afterCleanDataFunc = function() {};
                const setDataStrategy = function(value) {
                    strategyChanging.fire(value);
                    strategy = value;
                    const cleanData = strategy.cleanData;
                    strategy.cleanData = function(nodes) {
                        beforeCleanDataFunc(nodes);
                        const result = cleanData.call(this, nodes);
                        afterCleanDataFunc(nodes);
                        return result
                    }
                };
                exports.setDataStrategy = setDataStrategy;
                setDataStrategy({
                    data: function() {
                        const element = arguments[0];
                        const key = arguments[1];
                        const value = arguments[2];
                        if (!element) {
                            return
                        }
                        let elementData = dataMap.get(element);
                        if (!elementData) {
                            elementData = {};
                            dataMap.set(element, elementData)
                        }
                        if (void 0 === key) {
                            return elementData
                        }
                        if (2 === arguments.length) {
                            return elementData[key]
                        }
                        elementData[key] = value;
                        return value
                    },
                    removeData: function(element, key) {
                        if (!element) {
                            return
                        }
                        if (void 0 === key) {
                            dataMap.delete(element)
                        } else {
                            const elementData = dataMap.get(element);
                            if (elementData) {
                                delete elementData[key]
                            }
                        }
                    },
                    cleanData: function(elements) {
                        for (let i = 0; i < elements.length; i++) {
                            _events_engine.default.off(elements[i]);
                            dataMap.delete(elements[i])
                        }
                    }
                })
            },
        17381:
            /*!************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/errors.js ***!
              \************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _error = (obj = __webpack_require__( /*! ./utils/error */ 95640), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = (0, _error.default)({
                    E0001: "Method is not implemented",
                    E0002: "Member name collision: {0}",
                    E0003: "A class must be instantiated using the 'new' keyword",
                    E0004: "The NAME property of the component is not specified",
                    E0005: "Unknown device",
                    E0006: "Unknown endpoint key is requested",
                    E0007: "'Invalidate' method is called outside the update transaction",
                    E0008: "Type of the option name is not appropriate to create an action",
                    E0009: "Component '{0}' has not been initialized for an element",
                    E0010: "Animation configuration with the '{0}' type requires '{1}' configuration as {2}",
                    E0011: "Unknown animation type '{0}'",
                    E0012: "jQuery version is too old. Please upgrade jQuery to 1.10.0 or later",
                    E0013: "KnockoutJS version is too old. Please upgrade KnockoutJS to 2.3.0 or later",
                    E0014: "The 'release' method shouldn't be called for an unlocked Lock object",
                    E0015: "Queued task returned an unexpected result",
                    E0017: "Event namespace is not defined",
                    E0018: "DevExpress.ui.DevExpressPopup widget is required",
                    E0020: "Template engine '{0}' is not supported",
                    E0021: "Unknown theme is set: {0}",
                    E0022: "LINK[rel=DevExpress-theme] tags must go before DevExpress included scripts",
                    E0023: "Template name is not specified",
                    E0024: "DevExtreme bundle already included",
                    E0025: "Unexpected argument type",
                    E0100: "Unknown validation type is detected",
                    E0101: "Misconfigured range validation rule is detected",
                    E0102: "Misconfigured comparison validation rule is detected",
                    E0103: "validationCallback of an asynchronous rule should return a jQuery or a native promise",
                    E0110: "Unknown validation group is detected",
                    E0120: "Adapter for a DevExpressValidator component cannot be configured",
                    E0121: "The 'customItem' parameter of the 'onCustomItemCreating' function is empty or contains invalid data. Assign a custom object or a Promise that is resolved after the item is created.",
                    W0000: "'{0}' is deprecated in {1}. {2}",
                    W0001: "{0} - '{1}' option is deprecated in {2}. {3}",
                    W0002: "{0} - '{1}' method is deprecated in {2}. {3}",
                    W0003: "{0} - '{1}' property is deprecated in {2}. {3}",
                    W0004: "Timeout for theme loading is over: {0}",
                    W0005: "'{0}' event is deprecated in {1}. {2}",
                    W0006: "Invalid recurrence rule: '{0}'",
                    W0007: "'{0}' Globalize culture is not defined",
                    W0008: "Invalid view name: '{0}'",
                    W0009: "Invalid time zone name: '{0}'",
                    W0010: "{0} is deprecated in {1}. {2}",
                    W0011: "Number parsing is invoked while the parser is not defined",
                    W0012: "Date parsing is invoked while the parser is not defined",
                    W0013: "'{0}' file is deprecated in {1}. {2}",
                    W0014: "{0} - '{1}' type is deprecated in {2}. {3}",
                    W0015: "Instead of returning a value from the '{0}' function, write it into the '{1}' field of the function's parameter.",
                    W0016: 'The "{0}" option does not accept the "{1}" value since v{2}. {3}.',
                    W0017: 'Setting the "{0}" property with a function is deprecated since v21.2',
                    W0018: 'Setting the "position" property with a function is deprecated since v21.2',
                    W0019: "DevExtreme: Unable to Locate a Valid License Key.\n\nIf you are using a 30-day trial version of DevExtreme, you must uninstall all copies of DevExtreme once your 30-day trial period expires. For terms and conditions that govern use of DevExtreme UI components/libraries, please refer to the DevExtreme End User License Agreement: https://js.devexpress.com/EULAs/DevExtremeComplete.\n\nTo use DevExtreme in a commercial project, you must purchase a license. For pricing/licensing options, please visit: https://js.devexpress.com/Buy.\n\nIf you have licensing-related questions or need help with a purchase, please email clientservices@devexpress.com.\n\n",
                    W0020: "DevExtreme: License Key Has Expired.\n\nA mismatch exists between the license key used and the DevExtreme version referenced in this project.\n\nTo proceed, you can:\n\u2022 use a version of DevExtreme linked to your license key: https://www.devexpress.com/ClientCenter/DownloadManager\n\u2022 renew your DevExpress Subscription: https://www.devexpress.com/buy/renew (once you renew your subscription, you will be entitled to product updates and support service as defined in the DevExtreme End User License Agreement)\n\nIf you have licensing-related questions or need help with a renewal, please email clientservices@devexpress.com.\n\n",
                    W0021: "DevExtreme: License Key Verification Has Failed.\n\nTo verify your DevExtreme license, make certain to specify a correct key in the GlobalConfig. If you continue to encounter this error, please visit https://www.devexpress.com/ClientCenter/DownloadManager to obtain a valid license key.\n\nIf you have a valid license and this problem persists, please submit a support ticket via the DevExpress Support Center. We will be happy to follow-up: https://supportcenter.devexpress.com/ticket/create.\n\n",
                    W0022: "DevExtreme: Pre-release software. Not suitable for commercial use.\n\nPre-release software may contain deficiencies and as such, should not be considered for use or integrated in any mission critical application.\n\n"
                });
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        80566:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/events_strategy.js ***!
              \*********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.EventsStrategy = void 0;
                var _callbacks = (obj = __webpack_require__( /*! ./utils/callbacks */ 44504), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _iterator = __webpack_require__( /*! ./utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ./utils/type */ 35922);
                let EventsStrategy = function() {
                    function EventsStrategy(owner) {
                        let options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                        this._events = {};
                        this._owner = owner;
                        this._options = options
                    }
                    EventsStrategy.create = function(owner, strategy) {
                        if (strategy) {
                            return (0, _type.isFunction)(strategy) ? strategy(owner) : strategy
                        } else {
                            return new EventsStrategy(owner)
                        }
                    };
                    var _proto = EventsStrategy.prototype;
                    _proto.hasEvent = function(eventName) {
                        const callbacks = this._events[eventName];
                        return callbacks ? callbacks.has() : false
                    };
                    _proto.fireEvent = function(eventName, eventArgs) {
                        const callbacks = this._events[eventName];
                        if (callbacks) {
                            callbacks.fireWith(this._owner, eventArgs)
                        }
                        return this._owner
                    };
                    _proto.on = function(eventName, eventHandler) {
                        if ((0, _type.isPlainObject)(eventName)) {
                            (0, _iterator.each)(eventName, (e, h) => {
                                this.on(e, h)
                            })
                        } else {
                            let callbacks = this._events[eventName];
                            if (!callbacks) {
                                callbacks = (0, _callbacks.default)({
                                    syncStrategy: this._options.syncStrategy
                                });
                                this._events[eventName] = callbacks
                            }
                            const addFn = callbacks.originalAdd || callbacks.add;
                            addFn.call(callbacks, eventHandler)
                        }
                    };
                    _proto.off = function(eventName, eventHandler) {
                        const callbacks = this._events[eventName];
                        if (callbacks) {
                            if ((0, _type.isFunction)(eventHandler)) {
                                callbacks.remove(eventHandler)
                            } else {
                                callbacks.empty()
                            }
                        }
                    };
                    _proto.dispose = function() {
                        (0, _iterator.each)(this._events, (eventName, event) => {
                            event.empty()
                        })
                    };
                    return EventsStrategy
                }();
                exports.EventsStrategy = EventsStrategy
            },
        73176:
            /*!**********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/guid.js ***!
              \**********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _class = (obj = __webpack_require__( /*! ./class */ 38377), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const Guid = _class.default.inherit({
                    ctor: function(value) {
                        if (value) {
                            value = String(value)
                        }
                        this._value = this._normalize(value || this._generate())
                    },
                    _normalize: function(value) {
                        value = value.replace(/[^a-f0-9]/gi, "").toLowerCase();
                        while (value.length < 32) {
                            value += "0"
                        }
                        return [value.substr(0, 8), value.substr(8, 4), value.substr(12, 4), value.substr(16, 4), value.substr(20, 12)].join("-")
                    },
                    _generate: function() {
                        let value = "";
                        for (let i = 0; i < 32; i++) {
                            value += Math.round(15 * Math.random()).toString(16)
                        }
                        return value
                    },
                    toString: function() {
                        return this._value
                    },
                    valueOf: function() {
                        return this._value
                    },
                    toJSON: function() {
                        return this._value
                    }
                });
                var _default = Guid;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        83448:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/http_request.js ***!
              \******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _window = __webpack_require__( /*! ./utils/window */ 58201);
                var _dependency_injector = (obj = __webpack_require__( /*! ./utils/dependency_injector */ 20476), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const window = (0, _window.getWindow)();
                const nativeXMLHttpRequest = {
                    getXhr: function() {
                        return new window.XMLHttpRequest
                    }
                };
                var _default = (0, _dependency_injector.default)(nativeXMLHttpRequest);
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        15334:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/inferno_renderer.js ***!
              \**********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _infernoCreateElement = __webpack_require__( /*! inferno-create-element */ 99038);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ./dom_adapter */ 73349));
                var _element_data = __webpack_require__( /*! ./element_data */ 97906);
                var _dependency_injector = _interopRequireDefault(__webpack_require__( /*! ./utils/dependency_injector */ 20476));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const remove = element => {
                    const {
                        parentNode: parentNode
                    } = element;
                    if (parentNode) {
                        const nextSibling = element.nextSibling;
                        (0, _element_data.cleanDataRecursive)(element);
                        parentNode.$V = element.$V;
                        (0, _inferno.render)(null, parentNode);
                        parentNode.insertBefore(element, nextSibling);
                        element.innerHTML = "";
                        delete parentNode.$V
                    }
                    delete element.$V
                };
                var _default = (0, _dependency_injector.default)({
                    createElement: (component, props) => (0, _infernoCreateElement.createElement)(component, props),
                    remove: remove,
                    onAfterRender: () => {
                        _inferno2.InfernoEffectHost.callEffects()
                    },
                    onPreRender: () => {
                        _inferno2.InfernoEffectHost.lock()
                    },
                    render: (component, props, container, replace) => {
                        if (!replace) {
                            const {
                                parentNode: parentNode
                            } = container;
                            const nextNode = null === container || void 0 === container ? void 0 : container.nextSibling;
                            const rootNode = _dom_adapter.default.createElement("div");
                            rootNode.appendChild(container);
                            const mountNode = _dom_adapter.default.createDocumentFragment().appendChild(rootNode);
                            const vNodeAlreadyExists = !!container.$V;
                            vNodeAlreadyExists && remove(container);
                            (0, _inferno2.hydrate)((0, _infernoCreateElement.createElement)(component, props), mountNode);
                            container.$V = mountNode.$V;
                            if (parentNode) {
                                parentNode.insertBefore(container, nextNode)
                            }
                        } else {
                            (0, _inferno.render)((0, _infernoCreateElement.createElement)(component, props), container)
                        }
                    }
                });
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        83358:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/memorized_callbacks.js ***!
              \*************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _callbacks = (obj = __webpack_require__( /*! ./utils/callbacks */ 44504), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                let MemorizedCallbacks = function() {
                    function MemorizedCallbacks() {
                        this.memory = [];
                        this.callbacks = (0, _callbacks.default)()
                    }
                    var _proto = MemorizedCallbacks.prototype;
                    _proto.add = function(fn) {
                        (0, _iterator.each)(this.memory, (_, item) => fn.apply(fn, item));
                        this.callbacks.add(fn)
                    };
                    _proto.remove = function(fn) {
                        this.callbacks.remove(fn)
                    };
                    _proto.fire = function() {
                        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
                            args[_key] = arguments[_key]
                        }
                        this.memory.push(args);
                        this.callbacks.fire.apply(this.callbacks, args)
                    };
                    return MemorizedCallbacks
                }();
                exports.default = MemorizedCallbacks;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        95683:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/options/index.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Options = void 0;
                var _type = __webpack_require__( /*! ../utils/type */ 35922);
                var _common = __webpack_require__( /*! ../utils/common */ 20576);
                var _option_manager = __webpack_require__( /*! ./option_manager */ 9030);
                var _data = __webpack_require__( /*! ../utils/data */ 47617);
                var _utils = __webpack_require__( /*! ./utils */ 45434);
                var _extend = __webpack_require__( /*! ../utils/extend */ 13306);

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }
                let Options = function() {
                    function Options(options, defaultOptions, optionsByReference, deprecatedOptions) {
                        this._deprecatedCallback;
                        this._startChangeCallback;
                        this._endChangeCallback;
                        this._default = defaultOptions;
                        this._deprecated = deprecatedOptions;
                        this._deprecatedNames = [];
                        this._initDeprecatedNames();
                        this._optionManager = new _option_manager.OptionManager(options, optionsByReference);
                        this._optionManager.onRelevantNamesPrepared((options, name, value, silent) => this._setRelevantNames(options, name, value, silent));
                        this._cachedOptions = {};
                        this._rules = []
                    }
                    var _proto = Options.prototype;
                    _proto._initDeprecatedNames = function() {
                        for (const optionName in this._deprecated) {
                            this._deprecatedNames.push(optionName)
                        }
                    };
                    _proto._getByRules = function(rules) {
                        rules = Array.isArray(rules) ? this._rules.concat(rules) : this._rules;
                        return (0, _utils.convertRulesToOptions)(rules)
                    };
                    _proto._notifyDeprecated = function(option) {
                        const info = this._deprecated[option];
                        if (info) {
                            this._deprecatedCallback(option, info)
                        }
                    };
                    _proto._setRelevantNames = function(options, name, value, silent) {
                        if (name) {
                            const normalizedName = this._normalizeName(name, silent);
                            if (normalizedName && normalizedName !== name) {
                                this._setField(options, normalizedName, value);
                                this._clearField(options, name)
                            }
                        }
                    };
                    _proto._setField = function(options, fullName, value) {
                        let fieldName = "";
                        let fieldObject = null;
                        do {
                            fieldName = fieldName ? ".".concat(fieldName) : "";
                            fieldName = (0, _utils.getFieldName)(fullName) + fieldName;
                            fullName = (0, _utils.getParentName)(fullName);
                            fieldObject = fullName ? this._optionManager.get(options, fullName, false) : options
                        } while (!fieldObject);
                        fieldObject[fieldName] = value
                    };
                    _proto._clearField = function(options, name) {
                        delete options[name];
                        const previousFieldName = (0, _utils.getParentName)(name);
                        const fieldObject = previousFieldName ? this._optionManager.get(options, previousFieldName, false) : options;
                        if (fieldObject) {
                            delete fieldObject[(0, _utils.getFieldName)(name)]
                        }
                    };
                    _proto._normalizeName = function(name, silent) {
                        if (this._deprecatedNames.length && name) {
                            for (let i = 0; i < this._deprecatedNames.length; i++) {
                                if (this._deprecatedNames[i] === name) {
                                    const deprecate = this._deprecated[name];
                                    if (deprecate) {
                                        !silent && this._notifyDeprecated(name);
                                        return deprecate.alias || name
                                    }
                                }
                            }
                        }
                        return name
                    };
                    _proto.addRules = function(rules) {
                        this._rules = rules.concat(this._rules)
                    };
                    _proto.applyRules = function(rules) {
                        const options = this._getByRules(rules);
                        this.silent(options)
                    };
                    _proto.dispose = function() {
                        this._deprecatedCallback = _common.noop;
                        this._startChangeCallback = _common.noop;
                        this._endChangeCallback = _common.noop;
                        this._optionManager.dispose()
                    };
                    _proto.onChanging = function(callBack) {
                        this._optionManager.onChanging(callBack)
                    };
                    _proto.onChanged = function(callBack) {
                        this._optionManager.onChanged(callBack)
                    };
                    _proto.onDeprecated = function(callBack) {
                        this._deprecatedCallback = callBack
                    };
                    _proto.onStartChange = function(callBack) {
                        this._startChangeCallback = callBack
                    };
                    _proto.onEndChange = function(callBack) {
                        this._endChangeCallback = callBack
                    };
                    _proto.isInitial = function(name) {
                        const value = this.silent(name);
                        const initialValue = this.initial(name);
                        const areFunctions = (0, _type.isFunction)(value) && (0, _type.isFunction)(initialValue);
                        return areFunctions ? value.toString() === initialValue.toString() : (0, _common.equalByValue)(value, initialValue)
                    };
                    _proto.initial = function(name) {
                        return (0, _utils.getNestedOptionValue)(this._initial, name)
                    };
                    _proto.option = function(options, value) {
                        const isGetter = arguments.length < 2 && "object" !== (0, _type.type)(options);
                        if (isGetter) {
                            return this._optionManager.get(void 0, this._normalizeName(options))
                        } else {
                            this._startChangeCallback();
                            try {
                                this._optionManager.set(options, value)
                            } finally {
                                this._endChangeCallback()
                            }
                        }
                    };
                    _proto.silent = function(options, value) {
                        const isGetter = arguments.length < 2 && "object" !== (0, _type.type)(options);
                        if (isGetter) {
                            return this._optionManager.get(void 0, options, void 0, true)
                        } else {
                            this._optionManager.set(options, value, void 0, true)
                        }
                    };
                    _proto.reset = function(name) {
                        if (name) {
                            const fullPath = (0, _data.getPathParts)(name);
                            const value = fullPath.reduce((value, field) => value ? value[field] : this.initial(field), null);
                            const defaultValue = (0, _type.isObject)(value) ? _extends({}, value) : value;
                            this._optionManager.set(name, defaultValue, false)
                        }
                    };
                    _proto.getAliasesByName = function(name) {
                        return Object.keys(this._deprecated).filter(aliasName => name === this._deprecated[aliasName].alias)
                    };
                    _proto.isDeprecated = function(name) {
                        return Object.prototype.hasOwnProperty.call(this._deprecated, name)
                    };
                    _proto.cache = function(name, options) {
                        const isGetter = arguments.length < 2;
                        if (isGetter) {
                            return this._cachedOptions[name]
                        } else {
                            this._cachedOptions[name] = (0, _extend.extend)(this._cachedOptions[name], options)
                        }
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(Options, [{
                        key: "_initial",
                        get: function() {
                            if (!this._initialOptions) {
                                const rulesOptions = this._getByRules(this.silent("defaultOptionsRules"));
                                this._initialOptions = this._default;
                                this._optionManager._setByReference(this._initialOptions, rulesOptions)
                            }
                            return this._initialOptions
                        },
                        set: function(value) {
                            this._initialOptions = value
                        }
                    }]);
                    return Options
                }();
                exports.Options = Options
            },
        9030:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/options/option_manager.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.OptionManager = void 0;
                var _data = __webpack_require__( /*! ../utils/data */ 47617);
                var _common = __webpack_require__( /*! ../utils/common */ 20576);
                var _comparator = __webpack_require__( /*! ../utils/comparator */ 49036);
                var _extend = __webpack_require__( /*! ../utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../utils/type */ 35922);
                var _utils = __webpack_require__( /*! ./utils */ 45434);
                const cachedGetters = {};
                const cachedSetters = {};
                let OptionManager = function() {
                    function OptionManager(options, optionsByReference) {
                        this._options = options;
                        this._optionsByReference = optionsByReference;
                        this._changingCallback;
                        this._changedCallback;
                        this._namePreparedCallbacks
                    }
                    var _proto = OptionManager.prototype;
                    _proto._setByReference = function(options, rulesOptions) {
                        (0, _extend.extend)(true, options, rulesOptions);
                        for (const fieldName in this._optionsByReference) {
                            if (Object.prototype.hasOwnProperty.call(rulesOptions, fieldName)) {
                                options[fieldName] = rulesOptions[fieldName]
                            }
                        }
                    };
                    _proto._setPreparedValue = function(name, value, merge, silent) {
                        const previousValue = this.get(this._options, name, false);
                        if (!(0, _comparator.equals)(previousValue, value)) {
                            const path = (0, _data.getPathParts)(name);
                            !silent && this._changingCallback(name, previousValue, value);
                            cachedSetters[name] = cachedSetters[name] || (0, _data.compileSetter)(name);
                            cachedSetters[name](this._options, value, {
                                functionsAsIs: true,
                                merge: (0, _type.isDefined)(merge) ? merge : !this._optionsByReference[name],
                                unwrapObservables: path.length > 1 && !!this._optionsByReference[path[0]]
                            });
                            !silent && this._changedCallback(name, value, previousValue)
                        }
                    };
                    _proto._prepareRelevantNames = function(options, name, value, silent) {
                        if ((0, _type.isPlainObject)(value)) {
                            for (const valueName in value) {
                                this._prepareRelevantNames(options, "".concat(name, ".").concat(valueName), value[valueName])
                            }
                        }
                        this._namePreparedCallbacks(options, name, value, silent)
                    };
                    _proto.get = function() {
                        let options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._options;
                        let name = arguments.length > 1 ? arguments[1] : void 0;
                        let unwrapObservables = arguments.length > 2 ? arguments[2] : void 0;
                        cachedGetters[name] = cachedGetters[name] || (0, _data.compileGetter)(name);
                        return cachedGetters[name](options, {
                            functionsAsIs: true,
                            unwrapObservables: unwrapObservables
                        })
                    };
                    _proto.set = function(options, value, merge, silent) {
                        options = (0, _utils.normalizeOptions)(options, value);
                        for (const name in options) {
                            this._prepareRelevantNames(options, name, options[name], silent)
                        }
                        for (const name in options) {
                            this._setPreparedValue(name, options[name], merge, silent)
                        }
                    };
                    _proto.onRelevantNamesPrepared = function(callBack) {
                        this._namePreparedCallbacks = callBack
                    };
                    _proto.onChanging = function(callBack) {
                        this._changingCallback = callBack
                    };
                    _proto.onChanged = function(callBack) {
                        this._changedCallback = callBack
                    };
                    _proto.dispose = function() {
                        this._changingCallback = _common.noop;
                        this._changedCallback = _common.noop
                    };
                    return OptionManager
                }();
                exports.OptionManager = OptionManager
            },
        45434:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/options/utils.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.normalizeOptions = exports.getParentName = exports.getNestedOptionValue = exports.getFieldName = exports.deviceMatch = exports.createDefaultOptionRules = exports.convertRulesToOptions = void 0;
                var _devices = (obj = __webpack_require__( /*! ../devices */ 20530), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _type = __webpack_require__( /*! ../utils/type */ 35922);
                var _common = __webpack_require__( /*! ../utils/common */ 20576);
                var _extend = __webpack_require__( /*! ../utils/extend */ 13306);
                var _data = __webpack_require__( /*! ../utils/data */ 47617);
                const cachedGetters = {};
                exports.convertRulesToOptions = rules => {
                    const currentDevice = _devices.default.current();
                    return rules.reduce((options, _ref) => {
                        let {
                            device: device,
                            options: ruleOptions
                        } = _ref;
                        const deviceFilter = device || {};
                        const match = (0, _type.isFunction)(deviceFilter) ? deviceFilter(currentDevice) : deviceMatch(currentDevice, deviceFilter);
                        if (match) {
                            (0, _extend.extend)(true, options, ruleOptions)
                        }
                        return options
                    }, {})
                };
                exports.normalizeOptions = (options, value) => "string" !== typeof options ? options : {
                    [options]: value
                };
                const deviceMatch = (device, filter) => (0, _type.isEmptyObject)(filter) || (0, _common.findBestMatches)(device, [filter]).length > 0;
                exports.deviceMatch = deviceMatch;
                exports.getFieldName = fullName => fullName.substr(fullName.lastIndexOf(".") + 1);
                exports.getParentName = fullName => fullName.substr(0, fullName.lastIndexOf("."));
                exports.getNestedOptionValue = function(optionsObject, name) {
                    cachedGetters[name] = cachedGetters[name] || (0, _data.compileGetter)(name);
                    return cachedGetters[name](optionsObject, {
                        functionsAsIs: true
                    })
                };
                exports.createDefaultOptionRules = function() {
                    let options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];
                    return options
                }
            },
        90889:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/postponed_operations.js ***!
              \**************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.PostponedOperations = void 0;
                var _deferred = __webpack_require__( /*! ./utils/deferred */ 62754);
                var _type = __webpack_require__( /*! ./utils/type */ 35922);
                let PostponedOperations = function() {
                    function PostponedOperations() {
                        this._postponedOperations = {}
                    }
                    var _proto = PostponedOperations.prototype;
                    _proto.add = function(key, fn, postponedPromise) {
                        if (key in this._postponedOperations) {
                            postponedPromise && this._postponedOperations[key].promises.push(postponedPromise)
                        } else {
                            const completePromise = new _deferred.Deferred;
                            this._postponedOperations[key] = {
                                fn: fn,
                                completePromise: completePromise,
                                promises: postponedPromise ? [postponedPromise] : []
                            }
                        }
                        return this._postponedOperations[key].completePromise.promise()
                    };
                    _proto.callPostponedOperations = function() {
                        for (const key in this._postponedOperations) {
                            const operation = this._postponedOperations[key];
                            if ((0, _type.isDefined)(operation)) {
                                if (operation.promises && operation.promises.length) {
                                    (0, _deferred.when)(...operation.promises).done(operation.fn).then(operation.completePromise.resolve)
                                } else {
                                    operation.fn().done(operation.completePromise.resolve)
                                }
                            }
                        }
                        this._postponedOperations = {}
                    };
                    return PostponedOperations
                }();
                exports.PostponedOperations = PostponedOperations
            },
        68374:
            /*!**************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/renderer.js ***!
              \**************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer_base = (obj = __webpack_require__( /*! ./renderer_base */ 82981), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _renderer_base.default.get();
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        82981:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/renderer_base.js ***!
              \*******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _element_data = __webpack_require__( /*! ./element_data */ 97906);
                var _dom_adapter = (obj = __webpack_require__( /*! ./dom_adapter */ 73349), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _window = __webpack_require__( /*! ./utils/window */ 58201);
                var _type = __webpack_require__( /*! ./utils/type */ 35922);
                var _style = __webpack_require__( /*! ./utils/style */ 80968);
                var _size = __webpack_require__( /*! ./utils/size */ 58664);
                var _html_parser = __webpack_require__( /*! ./utils/html_parser */ 61371);
                const window = (0, _window.getWindow)();
                let renderer;
                const initRender = function(selector, context) {
                    if (!selector) {
                        this.length = 0;
                        return this
                    }
                    if ("string" === typeof selector) {
                        if ("body" === selector) {
                            this[0] = context ? context.body : _dom_adapter.default.getBody();
                            this.length = 1;
                            return this
                        }
                        context = context || _dom_adapter.default.getDocument();
                        if ("<" === selector[0]) {
                            this[0] = _dom_adapter.default.createElement(selector.slice(1, -1), context);
                            this.length = 1;
                            return this
                        } [].push.apply(this, _dom_adapter.default.querySelectorAll(context, selector));
                        return this
                    } else if (_dom_adapter.default.isNode(selector) || (0, _type.isWindow)(selector)) {
                        this[0] = selector;
                        this.length = 1;
                        return this
                    } else if (Array.isArray(selector)) {
                        [].push.apply(this, selector);
                        return this
                    }
                    return renderer(selector.toArray ? selector.toArray() : [selector])
                };
                renderer = function(selector, context) {
                    return new initRender(selector, context)
                };
                renderer.fn = {
                    dxRenderer: true
                };
                initRender.prototype = renderer.fn;
                const repeatMethod = function(methodName, args) {
                    for (let i = 0; i < this.length; i++) {
                        const item = renderer(this[i]);
                        item[methodName].apply(item, args)
                    }
                    return this
                };
                const setAttributeValue = function(element, attrName, value) {
                    if (void 0 !== value && null !== value && false !== value) {
                        _dom_adapter.default.setAttribute(element, attrName, value)
                    } else {
                        _dom_adapter.default.removeAttribute(element, attrName)
                    }
                };
                initRender.prototype.show = function() {
                    return this.toggle(true)
                };
                initRender.prototype.hide = function() {
                    return this.toggle(false)
                };
                initRender.prototype.toggle = function(value) {
                    if (this[0]) {
                        this.toggleClass("dx-state-invisible", !value)
                    }
                    return this
                };
                initRender.prototype.attr = function(attrName, value) {
                    if (this.length > 1 && arguments.length > 1) {
                        return repeatMethod.call(this, "attr", arguments)
                    }
                    if (!this[0]) {
                        if ((0, _type.isObject)(attrName) || void 0 !== value) {
                            return this
                        } else {
                            return
                        }
                    }
                    if (!this[0].getAttribute) {
                        return this.prop(attrName, value)
                    }
                    if ("string" === typeof attrName && 1 === arguments.length) {
                        const result = this[0].getAttribute(attrName);
                        return null == result ? void 0 : result
                    } else if ((0, _type.isPlainObject)(attrName)) {
                        for (const key in attrName) {
                            this.attr(key, attrName[key])
                        }
                    } else {
                        setAttributeValue(this[0], attrName, value)
                    }
                    return this
                };
                initRender.prototype.removeAttr = function(attrName) {
                    this[0] && _dom_adapter.default.removeAttribute(this[0], attrName);
                    return this
                };
                initRender.prototype.prop = function(propName, value) {
                    if (!this[0]) {
                        return this
                    }
                    if ("string" === typeof propName && 1 === arguments.length) {
                        return this[0][propName]
                    } else if ((0, _type.isPlainObject)(propName)) {
                        for (const key in propName) {
                            this.prop(key, propName[key])
                        }
                    } else {
                        _dom_adapter.default.setProperty(this[0], propName, value)
                    }
                    return this
                };
                initRender.prototype.addClass = function(className) {
                    return this.toggleClass(className, true)
                };
                initRender.prototype.removeClass = function(className) {
                    return this.toggleClass(className, false)
                };
                initRender.prototype.hasClass = function(className) {
                    if (!this[0] || void 0 === this[0].className) {
                        return false
                    }
                    const classNames = className.split(" ");
                    for (let i = 0; i < classNames.length; i++) {
                        if (this[0].classList) {
                            if (this[0].classList.contains(classNames[i])) {
                                return true
                            }
                        } else {
                            const className = (0, _type.isString)(this[0].className) ? this[0].className : _dom_adapter.default.getAttribute(this[0], "class");
                            if ((className || "").split(" ").indexOf(classNames[i]) >= 0) {
                                return true
                            }
                        }
                    }
                    return false
                };
                initRender.prototype.toggleClass = function(className, value) {
                    if (this.length > 1) {
                        return repeatMethod.call(this, "toggleClass", arguments)
                    }
                    if (!this[0] || !className) {
                        return this
                    }
                    value = void 0 === value ? !this.hasClass(className) : value;
                    const classNames = className.split(" ");
                    for (let i = 0; i < classNames.length; i++) {
                        _dom_adapter.default.setClass(this[0], classNames[i], value)
                    }
                    return this
                };
                initRender.prototype.html = function(value) {
                    if (!arguments.length) {
                        return this[0].innerHTML
                    }
                    this.empty();
                    if ("string" === typeof value && !(0, _html_parser.isTablePart)(value) || "number" === typeof value) {
                        this[0].innerHTML = value;
                        return this
                    }
                    return this.append((0, _html_parser.parseHTML)(value))
                };
                const appendElements = function(element, nextSibling) {
                    if (!this[0] || !element) {
                        return
                    }
                    if ("string" === typeof element) {
                        element = (0, _html_parser.parseHTML)(element)
                    } else if (element.nodeType) {
                        element = [element]
                    } else if ((0, _type.isNumeric)(element)) {
                        element = [_dom_adapter.default.createTextNode(element)]
                    }
                    for (let i = 0; i < element.length; i++) {
                        const item = element[i];
                        let container = this[0];
                        const wrapTR = "TABLE" === container.tagName && "TR" === item.tagName;
                        if (wrapTR && container.tBodies && container.tBodies.length) {
                            container = container.tBodies[0]
                        }
                        _dom_adapter.default.insertElement(container, item.nodeType ? item : item[0], nextSibling)
                    }
                };
                const setCss = function(name, value) {
                    if (!this[0] || !this[0].style) {
                        return
                    }
                    if (null === value || "number" === typeof value && isNaN(value)) {
                        return
                    }
                    name = (0, _style.styleProp)(name);
                    for (let i = 0; i < this.length; i++) {
                        this[i].style[name] = (0, _style.normalizeStyleProp)(name, value)
                    }
                };
                initRender.prototype.css = function(name, value) {
                    if ((0, _type.isString)(name)) {
                        if (2 === arguments.length) {
                            setCss.call(this, name, value)
                        } else {
                            if (!this[0]) {
                                return
                            }
                            name = (0, _style.styleProp)(name);
                            const result = window.getComputedStyle(this[0])[name] || this[0].style[name];
                            return (0, _type.isNumeric)(result) ? result.toString() : result
                        }
                    } else if ((0, _type.isPlainObject)(name)) {
                        for (const key in name) {
                            setCss.call(this, key, name[key])
                        }
                    }
                    return this
                };
                initRender.prototype.prepend = function(element) {
                    if (arguments.length > 1) {
                        for (let i = 0; i < arguments.length; i++) {
                            this.prepend(arguments[i])
                        }
                        return this
                    }
                    appendElements.apply(this, [element, this[0].firstChild]);
                    return this
                };
                initRender.prototype.append = function(element) {
                    if (arguments.length > 1) {
                        for (let i = 0; i < arguments.length; i++) {
                            this.append(arguments[i])
                        }
                        return this
                    }
                    appendElements.apply(this, [element]);
                    return this
                };
                initRender.prototype.prependTo = function(element) {
                    if (this.length > 1) {
                        for (let i = this.length - 1; i >= 0; i--) {
                            renderer(this[i]).prependTo(element)
                        }
                        return this
                    }
                    element = renderer(element);
                    if (element[0]) {
                        _dom_adapter.default.insertElement(element[0], this[0], element[0].firstChild)
                    }
                    return this
                };
                initRender.prototype.appendTo = function(element) {
                    if (this.length > 1) {
                        return repeatMethod.call(this, "appendTo", arguments)
                    }
                    _dom_adapter.default.insertElement(renderer(element)[0], this[0]);
                    return this
                };
                initRender.prototype.insertBefore = function(element) {
                    if (element && element[0]) {
                        _dom_adapter.default.insertElement(element[0].parentNode, this[0], element[0])
                    }
                    return this
                };
                initRender.prototype.insertAfter = function(element) {
                    if (element && element[0]) {
                        _dom_adapter.default.insertElement(element[0].parentNode, this[0], element[0].nextSibling)
                    }
                    return this
                };
                initRender.prototype.before = function(element) {
                    if (this[0]) {
                        _dom_adapter.default.insertElement(this[0].parentNode, element[0], this[0])
                    }
                    return this
                };
                initRender.prototype.after = function(element) {
                    if (this[0]) {
                        _dom_adapter.default.insertElement(this[0].parentNode, element[0], this[0].nextSibling)
                    }
                    return this
                };
                initRender.prototype.wrap = function(wrapper) {
                    if (this[0]) {
                        const wrap = renderer(wrapper);
                        wrap.insertBefore(this);
                        wrap.append(this)
                    }
                    return this
                };
                initRender.prototype.wrapInner = function(wrapper) {
                    const contents = this.contents();
                    if (contents.length) {
                        contents.wrap(wrapper)
                    } else {
                        this.append(wrapper)
                    }
                    return this
                };
                initRender.prototype.replaceWith = function(element) {
                    if (!(element && element[0])) {
                        return
                    }
                    if (element.is(this)) {
                        return this
                    }
                    element.insertBefore(this);
                    this.remove();
                    return element
                };
                initRender.prototype.remove = function() {
                    if (this.length > 1) {
                        return repeatMethod.call(this, "remove", arguments)
                    }(0, _element_data.cleanDataRecursive)(this[0], true);
                    _dom_adapter.default.removeElement(this[0]);
                    return this
                };
                initRender.prototype.detach = function() {
                    if (this.length > 1) {
                        return repeatMethod.call(this, "detach", arguments)
                    }
                    _dom_adapter.default.removeElement(this[0]);
                    return this
                };
                initRender.prototype.empty = function() {
                    if (this.length > 1) {
                        return repeatMethod.call(this, "empty", arguments)
                    }(0, _element_data.cleanDataRecursive)(this[0]);
                    _dom_adapter.default.setText(this[0], "");
                    return this
                };
                initRender.prototype.clone = function() {
                    const result = [];
                    for (let i = 0; i < this.length; i++) {
                        result.push(this[i].cloneNode(true))
                    }
                    return renderer(result)
                };
                initRender.prototype.text = function(value) {
                    if (!arguments.length) {
                        let result = "";
                        for (let i = 0; i < this.length; i++) {
                            result += this[i] && this[i].textContent || ""
                        }
                        return result
                    }
                    const text = (0, _type.isFunction)(value) ? value() : value;
                    (0, _element_data.cleanDataRecursive)(this[0], false);
                    _dom_adapter.default.setText(this[0], (0, _type.isDefined)(text) ? text : "");
                    return this
                };
                initRender.prototype.val = function(value) {
                    if (1 === arguments.length) {
                        return this.prop("value", (0, _type.isDefined)(value) ? value : "")
                    }
                    return this.prop("value")
                };
                initRender.prototype.contents = function() {
                    if (!this[0]) {
                        return renderer()
                    }
                    const result = [];
                    result.push.apply(result, this[0].childNodes);
                    return renderer(result)
                };
                initRender.prototype.find = function(selector) {
                    const result = renderer();
                    if (!selector) {
                        return result
                    }
                    const nodes = [];
                    let i;
                    if ("string" === typeof selector) {
                        selector = selector.trim();
                        for (i = 0; i < this.length; i++) {
                            const element = this[i];
                            if (_dom_adapter.default.isElementNode(element)) {
                                const elementId = element.getAttribute("id");
                                let queryId = elementId || "dx-query-children";
                                if (!elementId) {
                                    setAttributeValue(element, "id", queryId)
                                }
                                queryId = "[id='" + queryId + "'] ";
                                const querySelector = queryId + selector.replace(/([^\\])(,)/g, "$1, " + queryId);
                                nodes.push.apply(nodes, _dom_adapter.default.querySelectorAll(element, querySelector));
                                setAttributeValue(element, "id", elementId)
                            } else if (_dom_adapter.default.isDocument(element) || _dom_adapter.default.isDocumentFragment(element)) {
                                nodes.push.apply(nodes, _dom_adapter.default.querySelectorAll(element, selector))
                            }
                        }
                    } else {
                        for (i = 0; i < this.length; i++) {
                            selector = _dom_adapter.default.isNode(selector) ? selector : selector[0];
                            if (this[i] !== selector && this[i].contains(selector)) {
                                nodes.push(selector)
                            }
                        }
                    }
                    return result.add(nodes)
                };
                const isVisible = function(_, element) {
                    var _element$host;
                    element = null !== (_element$host = element.host) && void 0 !== _element$host ? _element$host : element;
                    if (!element.nodeType) {
                        return true
                    }
                    return !!(element.offsetWidth || element.offsetHeight || element.getClientRects().length)
                };
                initRender.prototype.filter = function(selector) {
                    if (!selector) {
                        return renderer()
                    }
                    if (":visible" === selector) {
                        return this.filter(isVisible)
                    } else if (":hidden" === selector) {
                        return this.filter((function(_, element) {
                            return !isVisible(0, element)
                        }))
                    }
                    const result = [];
                    for (let i = 0; i < this.length; i++) {
                        const item = this[i];
                        if (_dom_adapter.default.isElementNode(item) && "string" === (0, _type.type)(selector)) {
                            _dom_adapter.default.elementMatches(item, selector) && result.push(item)
                        } else if (_dom_adapter.default.isNode(selector) || (0, _type.isWindow)(selector)) {
                            selector === item && result.push(item)
                        } else if ((0, _type.isFunction)(selector)) {
                            selector.call(item, i, item) && result.push(item)
                        } else {
                            for (let j = 0; j < selector.length; j++) {
                                selector[j] === item && result.push(item)
                            }
                        }
                    }
                    return renderer(result)
                };
                initRender.prototype.not = function(selector) {
                    const result = [];
                    const nodes = this.filter(selector).toArray();
                    for (let i = 0; i < this.length; i++) {
                        if (-1 === nodes.indexOf(this[i])) {
                            result.push(this[i])
                        }
                    }
                    return renderer(result)
                };
                initRender.prototype.is = function(selector) {
                    return !!this.filter(selector).length
                };
                initRender.prototype.children = function(selector) {
                    let result = [];
                    for (let i = 0; i < this.length; i++) {
                        const nodes = this[i] ? this[i].childNodes : [];
                        for (let j = 0; j < nodes.length; j++) {
                            if (_dom_adapter.default.isElementNode(nodes[j])) {
                                result.push(nodes[j])
                            }
                        }
                    }
                    result = renderer(result);
                    return selector ? result.filter(selector) : result
                };
                initRender.prototype.siblings = function() {
                    const element = this[0];
                    if (!element || !element.parentNode) {
                        return renderer()
                    }
                    const result = [];
                    const parentChildNodes = element.parentNode.childNodes || [];
                    for (let i = 0; i < parentChildNodes.length; i++) {
                        const node = parentChildNodes[i];
                        if (_dom_adapter.default.isElementNode(node) && node !== element) {
                            result.push(node)
                        }
                    }
                    return renderer(result)
                };
                initRender.prototype.each = function(callback) {
                    for (let i = 0; i < this.length; i++) {
                        if (false === callback.call(this[i], i, this[i])) {
                            break
                        }
                    }
                };
                initRender.prototype.index = function(element) {
                    if (!element) {
                        return this.parent().children().index(this)
                    }
                    element = renderer(element);
                    return this.toArray().indexOf(element[0])
                };
                initRender.prototype.get = function(index) {
                    return this[index < 0 ? this.length + index : index]
                };
                initRender.prototype.eq = function(index) {
                    index = index < 0 ? this.length + index : index;
                    return renderer(this[index])
                };
                initRender.prototype.first = function() {
                    return this.eq(0)
                };
                initRender.prototype.last = function() {
                    return this.eq(-1)
                };
                initRender.prototype.select = function() {
                    for (let i = 0; i < this.length; i += 1) {
                        this[i].select && this[i].select()
                    }
                    return this
                };
                initRender.prototype.parent = function(selector) {
                    if (!this[0]) {
                        return renderer()
                    }
                    const result = renderer(this[0].parentNode);
                    return !selector || result.is(selector) ? result : renderer()
                };
                initRender.prototype.parents = function(selector) {
                    const result = [];
                    let parent = this.parent();
                    while (parent && parent[0] && !_dom_adapter.default.isDocument(parent[0])) {
                        if (_dom_adapter.default.isElementNode(parent[0])) {
                            if (!selector || parent.is(selector)) {
                                result.push(parent.get(0))
                            }
                        }
                        parent = parent.parent()
                    }
                    return renderer(result)
                };
                initRender.prototype.closest = function(selector) {
                    if (this.is(selector)) {
                        return this
                    }
                    let parent = this.parent();
                    while (parent && parent.length) {
                        if (parent.is(selector)) {
                            return parent
                        }
                        parent = parent.parent()
                    }
                    return renderer()
                };
                initRender.prototype.next = function(selector) {
                    if (!this[0]) {
                        return renderer()
                    }
                    let next = renderer(this[0].nextSibling);
                    if (!arguments.length) {
                        return next
                    }
                    while (next && next.length) {
                        if (next.is(selector)) {
                            return next
                        }
                        next = next.next()
                    }
                    return renderer()
                };
                initRender.prototype.prev = function() {
                    if (!this[0]) {
                        return renderer()
                    }
                    return renderer(this[0].previousSibling)
                };
                initRender.prototype.add = function(selector) {
                    const targets = renderer(selector);
                    const result = this.toArray();
                    for (let i = 0; i < targets.length; i++) {
                        const target = targets[i];
                        if (-1 === result.indexOf(target)) {
                            result.push(target)
                        }
                    }
                    return renderer(result)
                };
                const emptyArray = [];
                initRender.prototype.splice = function() {
                    return renderer(emptyArray.splice.apply(this, arguments))
                };
                initRender.prototype.slice = function() {
                    return renderer(emptyArray.slice.apply(this, arguments))
                };
                initRender.prototype.toArray = function() {
                    return emptyArray.slice.call(this)
                };
                initRender.prototype.offset = function() {
                    if (!this[0]) {
                        return
                    }
                    return (0, _size.getOffset)(this[0])
                };
                initRender.prototype.offsetParent = function() {
                    if (!this[0]) {
                        return renderer()
                    }
                    let offsetParent = renderer(this[0].offsetParent);
                    while (offsetParent[0] && "static" === offsetParent.css("position")) {
                        offsetParent = renderer(offsetParent[0].offsetParent)
                    }
                    offsetParent = offsetParent[0] ? offsetParent : renderer(_dom_adapter.default.getDocumentElement());
                    return offsetParent
                };
                initRender.prototype.position = function() {
                    if (!this[0]) {
                        return
                    }
                    let offset;
                    const marginTop = parseFloat(this.css("marginTop"));
                    const marginLeft = parseFloat(this.css("marginLeft"));
                    if ("fixed" === this.css("position")) {
                        offset = this[0].getBoundingClientRect();
                        return {
                            top: offset.top - marginTop,
                            left: offset.left - marginLeft
                        }
                    }
                    offset = this.offset();
                    const offsetParent = this.offsetParent();
                    let parentOffset = {
                        top: 0,
                        left: 0
                    };
                    if ("HTML" !== offsetParent[0].nodeName) {
                        parentOffset = offsetParent.offset()
                    }
                    parentOffset = {
                        top: parentOffset.top + parseFloat(offsetParent.css("borderTopWidth")),
                        left: parentOffset.left + parseFloat(offsetParent.css("borderLeftWidth"))
                    };
                    return {
                        top: offset.top - parentOffset.top - marginTop,
                        left: offset.left - parentOffset.left - marginLeft
                    }
                };
                [{
                    name: "scrollLeft",
                    offsetProp: "pageXOffset",
                    scrollWindow: function(win, value) {
                        win.scrollTo(value, win.pageYOffset)
                    }
                }, {
                    name: "scrollTop",
                    offsetProp: "pageYOffset",
                    scrollWindow: function(win, value) {
                        win.scrollTo(win.pageXOffset, value)
                    }
                }].forEach((function(directionStrategy) {
                    const propName = directionStrategy.name;
                    initRender.prototype[propName] = function(value) {
                        if (!this[0]) {
                            return
                        }
                        const window = (0, _size.getWindowByElement)(this[0]);
                        if (void 0 === value) {
                            return window ? window[directionStrategy.offsetProp] : this[0][propName]
                        }
                        if (window) {
                            directionStrategy.scrollWindow(window, value)
                        } else {
                            this[0][propName] = value
                        }
                        return this
                    }
                }));
                initRender.prototype.data = function(key, value) {
                    if (!this[0]) {
                        return
                    }
                    if (arguments.length < 2) {
                        return _element_data.data.call(renderer, this[0], key)
                    }
                    _element_data.data.call(renderer, this[0], key, value);
                    return this
                };
                initRender.prototype.removeData = function(key) {
                    this[0] && (0, _element_data.removeData)(this[0], key);
                    return this
                };
                const rendererWrapper = function() {
                    return renderer.apply(this, arguments)
                };
                Object.defineProperty(rendererWrapper, "fn", {
                    enumerable: true,
                    configurable: true,
                    get: function() {
                        return renderer.fn
                    },
                    set: function(value) {
                        renderer.fn = value
                    }
                });
                var _default = {
                    set: function(strategy) {
                        renderer = strategy
                    },
                    get: function() {
                        return rendererWrapper
                    }
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        91784:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/resize_observer.js ***!
              \*********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _common = __webpack_require__( /*! ./utils/common */ 20576);
                var _window = __webpack_require__( /*! ./utils/window */ 58201);
                const window = (0, _window.getWindow)();
                const ResizeObserverMock = {
                    observe: _common.noop,
                    unobserve: _common.noop,
                    disconnect: _common.noop
                };
                let ResizeObserverSingleton = function() {
                    function ResizeObserverSingleton() {
                        if (!(0, _window.hasWindow)() || !window.ResizeObserver) {
                            return ResizeObserverMock
                        }
                        this._callbacksMap = new Map;
                        this._observer = new window.ResizeObserver(entries => {
                            entries.forEach(entry => {
                                var _this$_callbacksMap$g;
                                null === (_this$_callbacksMap$g = this._callbacksMap.get(entry.target)) || void 0 === _this$_callbacksMap$g ? void 0 : _this$_callbacksMap$g(entry)
                            })
                        })
                    }
                    var _proto = ResizeObserverSingleton.prototype;
                    _proto.observe = function(element, callback) {
                        this._callbacksMap.set(element, callback);
                        this._observer.observe(element)
                    };
                    _proto.unobserve = function(element) {
                        this._callbacksMap.delete(element);
                        this._observer.unobserve(element)
                    };
                    _proto.disconnect = function() {
                        this._callbacksMap.clear();
                        this._observer.disconnect()
                    };
                    return ResizeObserverSingleton
                }();
                const resizeObserverSingleton = new ResizeObserverSingleton;
                var _default = resizeObserverSingleton;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        14192:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/template_manager.js ***!
              \**********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.TemplateManager = void 0;
                var _renderer = (obj = __webpack_require__( /*! ./renderer */ 68374), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _type = __webpack_require__( /*! ./utils/type */ 35922);
                var _common = __webpack_require__( /*! ./utils/common */ 20576);
                var _extend = __webpack_require__( /*! ./utils/extend */ 13306);
                var _function_template = __webpack_require__( /*! ./templates/function_template */ 68494);
                var _empty_template = __webpack_require__( /*! ./templates/empty_template */ 10688);
                var _template_manager = __webpack_require__( /*! ./utils/template_manager */ 69697);

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }
                const DX_POLYMORPH_WIDGET_TEMPLATE = new _function_template.FunctionTemplate(_ref => {
                    let {
                        model: model,
                        parent: parent
                    } = _ref;
                    const widgetName = model.widget;
                    if (!widgetName) {
                        return (0, _renderer.default)()
                    }
                    const widgetElement = (0, _renderer.default)("<div>");
                    const widgetOptions = model.options || {};
                    if (parent) {
                        parent._createComponent(widgetElement, widgetName, widgetOptions)
                    } else {
                        widgetElement[widgetName](widgetOptions)
                    }
                    return widgetElement
                });
                let TemplateManager = function() {
                    function TemplateManager(createElement, anonymousTemplateName) {
                        this._tempTemplates = [];
                        this._defaultTemplates = {};
                        this._anonymousTemplateName = anonymousTemplateName || "template";
                        this._createElement = createElement || _template_manager.defaultCreateElement;
                        this._createTemplateIfNeeded = this._createTemplateIfNeeded.bind(this)
                    }
                    TemplateManager.createDefaultOptions = function() {
                        return {
                            integrationOptions: {
                                watchMethod: function(fn, callback) {
                                    let options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                                    if (!options.skipImmediate) {
                                        callback(fn())
                                    }
                                    return _common.noop
                                },
                                templates: {
                                    "dx-polymorph-widget": DX_POLYMORPH_WIDGET_TEMPLATE
                                },
                                useDeferUpdateForTemplates: true
                            }
                        }
                    };
                    var _proto = TemplateManager.prototype;
                    _proto.addDefaultTemplates = function(templates) {
                        this._defaultTemplates = (0, _extend.extend)({}, this._defaultTemplates, templates)
                    };
                    _proto.dispose = function() {
                        this._tempTemplates.forEach(tempTemplate => {
                            tempTemplate.template.dispose && tempTemplate.template.dispose()
                        });
                        this._tempTemplates = []
                    };
                    _proto.extractTemplates = function($el) {
                        const templates = this._extractTemplates($el);
                        const anonymousTemplateMeta = this._extractAnonymousTemplate($el);
                        return {
                            templates: templates,
                            anonymousTemplateMeta: anonymousTemplateMeta
                        }
                    };
                    _proto._extractTemplates = function($el) {
                        const templates = (0, _template_manager.findTemplates)($el, "dxTemplate");
                        const suitableTemplates = (0, _template_manager.suitableTemplatesByName)(templates);
                        templates.forEach(_ref2 => {
                            let {
                                element: element,
                                options: {
                                    name: name
                                }
                            } = _ref2;
                            if (element === suitableTemplates[name]) {
                                (0, _renderer.default)(element).addClass("dx-template-wrapper").detach()
                            } else {
                                (0, _renderer.default)(element).remove()
                            }
                        });
                        return Object.keys(suitableTemplates).map(name => ({
                            name: name,
                            template: this._createTemplate(suitableTemplates[name])
                        }))
                    };
                    _proto._extractAnonymousTemplate = function($el) {
                        const $anonymousTemplate = $el.contents().detach();
                        const $notJunkTemplateContent = $anonymousTemplate.filter((_, element) => {
                            const isTextNode = 3 === element.nodeType;
                            const isEmptyText = (0, _renderer.default)(element).text().trim().length < 1;
                            return !(isTextNode && isEmptyText)
                        });
                        return $notJunkTemplateContent.length > 0 ? {
                            template: this._createTemplate($anonymousTemplate),
                            name: this._anonymousTemplateName
                        } : {}
                    };
                    _proto._createTemplateIfNeeded = function(templateSource) {
                        const cachedTemplate = this._tempTemplates.filter(tempTemplate => tempTemplate.source === (0, _template_manager.templateKey)(templateSource))[0];
                        if (cachedTemplate) {
                            return cachedTemplate.template
                        }
                        const template = this._createTemplate(templateSource);
                        this._tempTemplates.push({
                            template: template,
                            source: (0, _template_manager.templateKey)(templateSource)
                        });
                        return template
                    };
                    _proto._createTemplate = function(templateSource) {
                        return this._createElement((0, _template_manager.validateTemplateSource)(templateSource))
                    };
                    _proto.getTemplate = function(templateSource, templates, _ref3, context) {
                        let {
                            isAsyncTemplate: isAsyncTemplate,
                            skipTemplates: skipTemplates
                        } = _ref3;
                        if (!(0, _type.isFunction)(templateSource)) {
                            return (0, _template_manager.acquireTemplate)(templateSource, this._createTemplateIfNeeded, templates, isAsyncTemplate, skipTemplates, this._defaultTemplates)
                        }
                        return new _function_template.FunctionTemplate(options => {
                            const templateSourceResult = templateSource.apply(context, (0, _template_manager.getNormalizedTemplateArgs)(options));
                            if (!(0, _type.isDefined)(templateSourceResult)) {
                                return new _empty_template.EmptyTemplate
                            }
                            let dispose = false;
                            const template = (0, _template_manager.acquireTemplate)(templateSourceResult, templateSource => {
                                if (templateSource.nodeType || (0, _type.isRenderer)(templateSource) && !(0, _renderer.default)(templateSource).is("script")) {
                                    return new _function_template.FunctionTemplate(() => templateSource)
                                }
                                dispose = true;
                                return this._createTemplate(templateSource)
                            }, templates, isAsyncTemplate, skipTemplates, this._defaultTemplates);
                            const result = template.render(options);
                            dispose && template.dispose && template.dispose();
                            return result
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(TemplateManager, [{
                        key: "anonymousTemplateName",
                        get: function() {
                            return this._anonymousTemplateName
                        }
                    }]);
                    return TemplateManager
                }();
                exports.TemplateManager = TemplateManager
            },
        93280:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/templates/bindable_template.js ***!
              \*********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.BindableTemplate = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../renderer */ 68374));
                var _template_base = __webpack_require__( /*! ./template_base */ 81033);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _remove = __webpack_require__( /*! ../../events/remove */ 29007);
                var _type = __webpack_require__( /*! ../utils/type */ 35922);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const watchChanges = function(rawData, watchMethod, fields, fieldsMap, callback) {
                    let fieldsDispose;
                    const globalDispose = ((data, watchMethod, callback) => watchMethod(() => data, callback))(rawData, watchMethod, (function(dataWithRawFields) {
                        fieldsDispose && fieldsDispose();
                        if ((0, _type.isPrimitive)(dataWithRawFields)) {
                            callback(dataWithRawFields);
                            return
                        }
                        fieldsDispose = function(data, watchMethod, fields, fieldsMap, callback) {
                            const resolvedData = {};
                            const missedFields = fields.slice();
                            const watchHandlers = fields.map((function(name) {
                                const fieldGetter = fieldsMap[name];
                                return watchMethod(fieldGetter ? () => fieldGetter(data) : () => data[name], (function(value) {
                                    resolvedData[name] = value;
                                    if (missedFields.length) {
                                        const index = missedFields.indexOf(name);
                                        if (index >= 0) {
                                            missedFields.splice(index, 1)
                                        }
                                    }
                                    if (!missedFields.length) {
                                        callback(resolvedData)
                                    }
                                }))
                            }));
                            return function() {
                                watchHandlers.forEach(dispose => dispose())
                            }
                        }(dataWithRawFields, watchMethod, fields, fieldsMap, callback)
                    }));
                    return function() {
                        fieldsDispose && fieldsDispose();
                        globalDispose && globalDispose()
                    }
                };
                let BindableTemplate = function(_TemplateBase) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(BindableTemplate, _TemplateBase);

                    function BindableTemplate(render, fields, watchMethod, fieldsMap) {
                        var _this;
                        _this = _TemplateBase.call(this) || this;
                        _this._render = render;
                        _this._fields = fields;
                        _this._fieldsMap = fieldsMap || {};
                        _this._watchMethod = watchMethod;
                        return _this
                    }
                    var _proto = BindableTemplate.prototype;
                    _proto._renderCore = function(options) {
                        const $container = (0, _renderer.default)(options.container);
                        const dispose = watchChanges(options.model, this._watchMethod, this._fields, this._fieldsMap, data => {
                            $container.empty();
                            this._render($container, data, options.model)
                        });
                        _events_engine.default.on($container, _remove.removeEvent, dispose);
                        return $container.contents()
                    };
                    return BindableTemplate
                }(_template_base.TemplateBase);
                exports.BindableTemplate = BindableTemplate
            },
        91627:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/templates/child_default_template.js ***!
              \**************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.ChildDefaultTemplate = void 0;
                var _template_base = __webpack_require__( /*! ./template_base */ 81033);

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let ChildDefaultTemplate = function(_TemplateBase) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(ChildDefaultTemplate, _TemplateBase);

                    function ChildDefaultTemplate(name) {
                        var _this;
                        _this = _TemplateBase.call(this) || this;
                        _this.name = name;
                        return _this
                    }
                    return ChildDefaultTemplate
                }(_template_base.TemplateBase);
                exports.ChildDefaultTemplate = ChildDefaultTemplate
            },
        10688:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/templates/empty_template.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.EmptyTemplate = void 0;
                var _renderer = (obj = __webpack_require__( /*! ../renderer */ 68374), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _template_base = __webpack_require__( /*! ./template_base */ 81033);

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let EmptyTemplate = function(_TemplateBase) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(EmptyTemplate, _TemplateBase);

                    function EmptyTemplate() {
                        return _TemplateBase.apply(this, arguments) || this
                    }
                    var _proto = EmptyTemplate.prototype;
                    _proto._renderCore = function() {
                        return (0, _renderer.default)()
                    };
                    return EmptyTemplate
                }(_template_base.TemplateBase);
                exports.EmptyTemplate = EmptyTemplate
            },
        68494:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/templates/function_template.js ***!
              \*********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.FunctionTemplate = void 0;
                var _template_base = __webpack_require__( /*! ./template_base */ 81033);
                var _dom = __webpack_require__( /*! ../utils/dom */ 3532);

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let FunctionTemplate = function(_TemplateBase) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(FunctionTemplate, _TemplateBase);

                    function FunctionTemplate(render) {
                        var _this;
                        _this = _TemplateBase.call(this) || this;
                        _this._render = render;
                        return _this
                    }
                    var _proto = FunctionTemplate.prototype;
                    _proto._renderCore = function(options) {
                        return (0, _dom.normalizeTemplateElement)(this._render(options))
                    };
                    return FunctionTemplate
                }(_template_base.TemplateBase);
                exports.FunctionTemplate = FunctionTemplate
            },
        9545:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/templates/template.js ***!
              \************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Template = void 0;
                var _renderer = (obj = __webpack_require__( /*! ../renderer */ 68374), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _template_base = __webpack_require__( /*! ./template_base */ 81033);
                var _dom = __webpack_require__( /*! ../utils/dom */ 3532);
                var _template_engine_registry = __webpack_require__( /*! ./template_engine_registry */ 72987);

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }(0, _template_engine_registry.registerTemplateEngine)("default", {
                    compile: element => (0, _dom.normalizeTemplateElement)(element),
                    render: (template, model, index) => template.clone()
                });
                (0, _template_engine_registry.setTemplateEngine)("default");
                let Template = function(_TemplateBase) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(Template, _TemplateBase);

                    function Template(element) {
                        var _this;
                        _this = _TemplateBase.call(this) || this;
                        _this._element = element;
                        return _this
                    }
                    var _proto = Template.prototype;
                    _proto._renderCore = function(options) {
                        const transclude = options.transclude;
                        if (!transclude && !this._compiledTemplate) {
                            this._compiledTemplate = (0, _template_engine_registry.getCurrentTemplateEngine)().compile(this._element)
                        }
                        return (0, _renderer.default)("<div>").append(transclude ? this._element : (0, _template_engine_registry.getCurrentTemplateEngine)().render(this._compiledTemplate, options.model, options.index)).contents()
                    };
                    _proto.source = function() {
                        return (0, _renderer.default)(this._element).clone()
                    };
                    return Template
                }(_template_base.TemplateBase);
                exports.Template = Template
            },
        81033:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/templates/template_base.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.renderedCallbacks = exports.TemplateBase = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../renderer */ 68374));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../dom_adapter */ 73349));
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../utils/callbacks */ 44504));
                var _dom = __webpack_require__( /*! ../utils/dom */ 3532);
                var _visibility_change = __webpack_require__( /*! ../../events/visibility_change */ 80506);
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../errors */ 17381));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const renderedCallbacks = (0, _callbacks.default)({
                    syncStrategy: true
                });
                exports.renderedCallbacks = renderedCallbacks;
                let TemplateBase = function() {
                    function TemplateBase() {}
                    var _proto = TemplateBase.prototype;
                    _proto.render = function(options) {
                        options = options || {};
                        const onRendered = options.onRendered;
                        delete options.onRendered;
                        let $result;
                        if (options.renovated && options.transclude && this._element) {
                            $result = (0, _renderer.default)("<div>").append(this._element).contents()
                        } else {
                            $result = this._renderCore(options)
                        }
                        this._ensureResultInContainer($result, options.container);
                        renderedCallbacks.fire($result, options.container);
                        onRendered && onRendered();
                        return $result
                    };
                    _proto._ensureResultInContainer = function($result, container) {
                        if (!container) {
                            return
                        }
                        const $container = (0, _renderer.default)(container);
                        const resultInContainer = (0, _dom.contains)($container.get(0), $result.get(0));
                        $container.append($result);
                        if (resultInContainer) {
                            return
                        }
                        const resultInBody = _dom_adapter.default.getBody().contains($container.get(0));
                        if (!resultInBody) {
                            return
                        }(0, _visibility_change.triggerShownEvent)($result)
                    };
                    _proto._renderCore = function() {
                        throw _errors.default.Error("E0001")
                    };
                    return TemplateBase
                }();
                exports.TemplateBase = TemplateBase
            },
        72987:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/templates/template_engine_registry.js ***!
              \****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getCurrentTemplateEngine = function() {
                    return currentTemplateEngine
                };
                exports.registerTemplateEngine = function(name, templateEngine) {
                    templateEngines[name] = templateEngine
                };
                exports.setTemplateEngine = function(templateEngine) {
                    if ((0, _type.isString)(templateEngine)) {
                        currentTemplateEngine = templateEngines[templateEngine];
                        if (!currentTemplateEngine) {
                            throw _errors.default.Error("E0020", templateEngine)
                        }
                    } else {
                        currentTemplateEngine = templateEngine
                    }
                };
                var _type = __webpack_require__( /*! ../utils/type */ 35922);
                var _errors = (obj = __webpack_require__( /*! ../errors */ 17381), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const templateEngines = {};
                let currentTemplateEngine
            },
        37208:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/ajax.js ***!
              \****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _deferred = __webpack_require__( /*! ./deferred */ 62754);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _http_request = _interopRequireDefault(__webpack_require__( /*! ../../core/http_request */ 83448));
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _extend = __webpack_require__( /*! ./extend */ 13306);
                var _type = __webpack_require__( /*! ./type */ 35922);
                var _dependency_injector = _interopRequireDefault(__webpack_require__( /*! ./dependency_injector */ 20476));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();
                const createScript = function(options) {
                    const script = _dom_adapter.default.createElement("script");
                    for (const name in options) {
                        script[name] = options[name]
                    }
                    return script
                };
                const removeScript = function(scriptNode) {
                    scriptNode.parentNode.removeChild(scriptNode)
                };
                const appendToHead = function(element) {
                    return _dom_adapter.default.getHead().appendChild(element)
                };
                const evalScript = function(code) {
                    const script = createScript({
                        text: code
                    });
                    appendToHead(script);
                    removeScript(script)
                };
                const getRequestOptions = function(options, headers) {
                    let params = options.data;
                    const paramsAlreadyString = "string" === typeof params;
                    let url = options.url || window.location.href;
                    if (!paramsAlreadyString && !options.cache) {
                        params = params || {};
                        params._ = Date.now()
                    }
                    if (params && !options.upload) {
                        if (!paramsAlreadyString) {
                            params = function(params) {
                                const result = [];
                                for (const name in params) {
                                    let value = params[name];
                                    if (void 0 === value) {
                                        continue
                                    }
                                    if (null === value) {
                                        value = ""
                                    }
                                    if ("function" === typeof value) {
                                        value = value()
                                    }
                                    result.push(encodeURIComponent(name) + "=" + encodeURIComponent(value))
                                }
                                return result.join("&")
                            }(params)
                        }
                        if ("GET" === getMethod(options)) {
                            if ("" !== params) {
                                url += (url.indexOf("?") > -1 ? "&" : "?") + params
                            }
                            params = null
                        } else if (headers["Content-Type"] && headers["Content-Type"].indexOf("application/x-www-form-urlencoded") > -1) {
                            params = params.replace(/%20/g, "+")
                        }
                    }
                    return {
                        url: url,
                        parameters: params
                    }
                };

                function getMethod(options) {
                    return (options.method || "GET").toUpperCase()
                }
                const getRequestHeaders = function(options) {
                    const headers = options.headers || {};
                    headers["Content-Type"] = headers["Content-Type"] || function(options) {
                        let defaultContentType;
                        if (options.data && !options.upload && "GET" !== getMethod(options)) {
                            defaultContentType = "application/x-www-form-urlencoded;charset=utf-8"
                        }
                        return options.contentType || defaultContentType
                    }(options);
                    headers.Accept = headers.Accept || function(options) {
                        const dataType = options.dataType || "*";
                        const scriptAccept = "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript";
                        const accepts = {
                            "*": "*/*",
                            text: "text/plain",
                            html: "text/html",
                            xml: "application/xml, text/xml",
                            json: "application/json, text/javascript",
                            jsonp: scriptAccept,
                            script: scriptAccept
                        };
                        (0, _extend.extendFromObject)(accepts, options.accepts, true);
                        return accepts[dataType] ? accepts[dataType] + ("*" !== dataType ? ", */*; q=0.01" : "") : accepts["*"]
                    }(options);
                    if (!options.crossDomain && !headers["X-Requested-With"]) {
                        headers["X-Requested-With"] = "XMLHttpRequest"
                    }
                    return headers
                };
                var _default = (0, _dependency_injector.default)({
                    sendRequest: function(options) {
                        const xhr = _http_request.default.getXhr();
                        const d = new _deferred.Deferred;
                        const result = d.promise();
                        const async = (0, _type.isDefined)(options.async) ? options.async : true;
                        const dataType = options.dataType;
                        const timeout = options.timeout || 0;
                        let timeoutId;
                        options.crossDomain = function(url) {
                            if (!(0, _window.hasWindow)()) {
                                return true
                            }
                            let crossDomain = false;
                            const originAnchor = _dom_adapter.default.createElement("a");
                            const urlAnchor = _dom_adapter.default.createElement("a");
                            originAnchor.href = window.location.href;
                            try {
                                urlAnchor.href = url;
                                urlAnchor.href = urlAnchor.href;
                                crossDomain = originAnchor.protocol + "//" + originAnchor.host !== urlAnchor.protocol + "//" + urlAnchor.host
                            } catch (e) {
                                crossDomain = true
                            }
                            return crossDomain
                        }(options.url);
                        const needScriptEvaluation = "jsonp" === dataType || "script" === dataType;
                        if (void 0 === options.cache) {
                            options.cache = !needScriptEvaluation
                        }
                        const callbackName = function(options) {
                            if ("jsonp" === options.dataType) {
                                const random = Math.random().toString().replace(/\D/g, "");
                                const callbackName = options.jsonpCallback || "dxCallback" + Date.now() + "_" + random;
                                const callbackParameter = options.jsonp || "callback";
                                options.data = options.data || {};
                                options.data[callbackParameter] = callbackName;
                                return callbackName
                            }
                        }(options);
                        const headers = getRequestHeaders(options);
                        const requestOptions = getRequestOptions(options, headers);
                        const url = requestOptions.url;
                        const parameters = requestOptions.parameters;
                        if (callbackName) {
                            window[callbackName] = function(data) {
                                d.resolve(data, "success", xhr)
                            }
                        }
                        if (options.crossDomain && needScriptEvaluation) {
                            const reject = function() {
                                d.reject(xhr, "error")
                            };
                            const resolve = function() {
                                if ("jsonp" === dataType) {
                                    return
                                }
                                d.resolve(null, "success", xhr)
                            };
                            (function(url) {
                                const script = createScript({
                                    src: url
                                });
                                return new Promise((function(resolve, reject) {
                                    const events = {
                                        load: resolve,
                                        error: reject
                                    };
                                    const loadHandler = function(e) {
                                        events[e.type]();
                                        removeScript(script)
                                    };
                                    for (const event in events) {
                                        _dom_adapter.default.listen(script, event, loadHandler)
                                    }
                                    appendToHead(script)
                                }))
                            })(url).then(resolve, reject);
                            return result
                        }
                        if (options.crossDomain && !("withCredentials" in xhr)) {
                            d.reject(xhr, "error");
                            return result
                        }
                        xhr.open(getMethod(options), url, async, options.username, options.password);
                        if (async) {
                            xhr.timeout = timeout;
                            timeoutId = function(timeout, xhr) {
                                return timeout && setTimeout((function() {
                                    xhr.customStatus = "timeout";
                                    xhr.abort()
                                }), timeout)
                            }(timeout, xhr)
                        }
                        xhr.onreadystatechange = function(e) {
                            if (4 === xhr.readyState) {
                                clearTimeout(timeoutId);
                                if (status = xhr.status, 200 <= status && status < 300) {
                                    if (function(status) {
                                            return 204 !== status
                                        }(xhr.status)) {
                                        ! function(deferred, xhr, dataType) {
                                            const data = function(xhr) {
                                                return xhr.responseType && "text" !== xhr.responseType || "string" !== typeof xhr.responseText ? xhr.response : xhr.responseText
                                            }(xhr);
                                            switch (dataType) {
                                                case "jsonp":
                                                    evalScript(data);
                                                    break;
                                                case "script":
                                                    evalScript(data);
                                                    deferred.resolve(data, "success", xhr);
                                                    break;
                                                case "json":
                                                    try {
                                                        deferred.resolve(JSON.parse(data), "success", xhr)
                                                    } catch (e) {
                                                        deferred.reject(xhr, "parsererror", e)
                                                    }
                                                    break;
                                                default:
                                                    deferred.resolve(data, "success", xhr)
                                            }
                                        }(d, xhr, dataType)
                                    } else {
                                        d.resolve(null, "nocontent", xhr)
                                    }
                                } else {
                                    d.reject(xhr, xhr.customStatus || "error")
                                }
                            }
                            var status
                        };
                        if (options.upload) {
                            xhr.upload.onprogress = options.upload.onprogress;
                            xhr.upload.onloadstart = options.upload.onloadstart;
                            xhr.upload.onabort = options.upload.onabort
                        }
                        if (options.xhrFields) {
                            for (const field in options.xhrFields) {
                                xhr[field] = options.xhrFields[field]
                            }
                        }
                        if ("arraybuffer" === options.responseType) {
                            xhr.responseType = options.responseType
                        }
                        for (const name in headers) {
                            if (Object.prototype.hasOwnProperty.call(headers, name) && (0, _type.isDefined)(headers[name])) {
                                xhr.setRequestHeader(name, headers[name])
                            }
                        }
                        if (options.beforeSend) {
                            options.beforeSend(xhr)
                        }
                        xhr.send(parameters);
                        result.abort = function() {
                            xhr.abort()
                        };
                        return result
                    }
                });
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        89386:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/array.js ***!
              \*****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.wrapToArray = exports.removeDuplicates = exports.normalizeIndexes = exports.groupBy = exports.getUniqueValues = exports.getIntersection = void 0;
                var _type = __webpack_require__( /*! ./type */ 35922);
                var _object = __webpack_require__( /*! ./object */ 48013);
                var _config = (obj = __webpack_require__( /*! ../config */ 80209), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;

                function createOccurrenceMap(array) {
                    return array.reduce((map, value) => {
                        var _map$get;
                        const count = (null !== (_map$get = map.get(value)) && void 0 !== _map$get ? _map$get : 0) + 1;
                        map.set(value, count);
                        return map
                    }, new Map)
                }
                exports.wrapToArray = function(item) {
                    return Array.isArray(item) ? item : [item]
                };
                exports.getUniqueValues = function(values) {
                    return [...new Set(values)]
                };
                exports.getIntersection = function(firstArray, secondArray) {
                    const toRemoveMap = createOccurrenceMap(secondArray);
                    return firstArray.filter(value => {
                        const occurrencesCount = toRemoveMap.get(value);
                        occurrencesCount && toRemoveMap.set(value, occurrencesCount - 1);
                        return occurrencesCount
                    })
                };
                exports.removeDuplicates = function() {
                    let from = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];
                    let toRemove = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [];
                    const toRemoveMap = createOccurrenceMap(toRemove);
                    return from.filter(value => {
                        const occurrencesCount = toRemoveMap.get(value);
                        occurrencesCount && toRemoveMap.set(value, occurrencesCount - 1);
                        return !occurrencesCount
                    })
                };
                exports.normalizeIndexes = function(items, indexPropName, currentItem, needIndexCallback) {
                    const indexedItems = {};
                    const {
                        useLegacyVisibleIndex: useLegacyVisibleIndex
                    } = (0, _config.default)();
                    let currentIndex = 0;
                    const shouldUpdateIndex = item => !(0, _type.isDefined)(item[indexPropName]) && (!needIndexCallback || needIndexCallback(item));
                    items.forEach(item => {
                        const index = item[indexPropName];
                        if (index >= 0) {
                            indexedItems[index] = indexedItems[index] || [];
                            if (item === currentItem) {
                                indexedItems[index].unshift(item)
                            } else {
                                indexedItems[index].push(item)
                            }
                        } else {
                            item[indexPropName] = void 0
                        }
                    });
                    if (!useLegacyVisibleIndex) {
                        items.forEach(item => {
                            if (shouldUpdateIndex(item)) {
                                while (indexedItems[currentIndex]) {
                                    currentIndex++
                                }
                                indexedItems[currentIndex] = [item];
                                currentIndex++
                            }
                        })
                    }
                    currentIndex = 0;
                    (0, _object.orderEach)(indexedItems, (function(index, items) {
                        items.forEach(item => {
                            if (index >= 0) {
                                item[indexPropName] = currentIndex++
                            }
                        })
                    }));
                    if (useLegacyVisibleIndex) {
                        items.forEach(item => {
                            if (shouldUpdateIndex(item)) {
                                item[indexPropName] = currentIndex++
                            }
                        })
                    }
                };
                exports.groupBy = (array, getGroupName) => array.reduce((groupedResult, item) => {
                    var _groupedResult$groupN;
                    const groupName = getGroupName(item);
                    groupedResult[groupName] = null !== (_groupedResult$groupN = groupedResult[groupName]) && void 0 !== _groupedResult$groupN ? _groupedResult$groupN : [];
                    groupedResult[groupName].push(item);
                    return groupedResult
                }, {})
            },
        34671:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/array_compare.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.isKeysEqual = exports.findChanges = void 0;
                var _type = __webpack_require__( /*! ./type */ 35922);
                const getKeyWrapper = function(item, getKey) {
                    const key = getKey(item);
                    if ((0, _type.isObject)(key)) {
                        try {
                            return JSON.stringify(key)
                        } catch (e) {
                            return key
                        }
                    }
                    return key
                };
                const getSameNewByOld = function(oldItem, newItems, newIndexByKey, getKey) {
                    const key = getKeyWrapper(oldItem, getKey);
                    return newItems[newIndexByKey[key]]
                };
                exports.isKeysEqual = function(oldKeys, newKeys) {
                    if (oldKeys.length !== newKeys.length) {
                        return false
                    }
                    for (let i = 0; i < newKeys.length; i++) {
                        if (oldKeys[i] !== newKeys[i]) {
                            return false
                        }
                    }
                    return true
                };
                exports.findChanges = function(oldItems, newItems, getKey, isItemEquals) {
                    const oldIndexByKey = {};
                    const newIndexByKey = {};
                    let addedCount = 0;
                    let removeCount = 0;
                    const result = [];
                    oldItems.forEach((function(item, index) {
                        const key = getKeyWrapper(item, getKey);
                        oldIndexByKey[key] = index
                    }));
                    newItems.forEach((function(item, index) {
                        const key = getKeyWrapper(item, getKey);
                        newIndexByKey[key] = index
                    }));
                    const itemCount = Math.max(oldItems.length, newItems.length);
                    for (let index = 0; index < itemCount + addedCount; index++) {
                        const newItem = newItems[index];
                        const oldNextIndex = index - addedCount + removeCount;
                        const nextOldItem = oldItems[oldNextIndex];
                        const isRemoved = !newItem || nextOldItem && !getSameNewByOld(nextOldItem, newItems, newIndexByKey, getKey);
                        if (isRemoved) {
                            if (nextOldItem) {
                                result.push({
                                    type: "remove",
                                    key: getKey(nextOldItem),
                                    index: index,
                                    oldItem: nextOldItem
                                });
                                removeCount++;
                                index--
                            }
                        } else {
                            const key = getKeyWrapper(newItem, getKey);
                            const oldIndex = oldIndexByKey[key];
                            const oldItem = oldItems[oldIndex];
                            if (!oldItem) {
                                addedCount++;
                                result.push({
                                    type: "insert",
                                    data: newItem,
                                    index: index
                                })
                            } else if (oldIndex === oldNextIndex) {
                                if (!isItemEquals(oldItem, newItem)) {
                                    result.push({
                                        type: "update",
                                        data: newItem,
                                        key: getKey(newItem),
                                        index: index,
                                        oldItem: oldItem
                                    })
                                }
                            } else {
                                return
                            }
                        }
                    }
                    return result
                }
            },
        47810:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/browser.js ***!
              \*******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _extend = __webpack_require__( /*! ./extend */ 13306);
                var _window = __webpack_require__( /*! ./window */ 58201);
                const navigator = (0, _window.getNavigator)();
                const webkitRegExp = /(webkit)[ /]([\w.]+)/;
                const mozillaRegExp = /(mozilla)(?:.*? rv:([\w.]+))/;
                const browserFromUA = ua => {
                    ua = ua.toLowerCase();
                    const result = {};
                    const matches = webkitRegExp.exec(ua) || ua.indexOf("compatible") < 0 && mozillaRegExp.exec(ua) || [];
                    let browserName = matches[1];
                    let browserVersion = matches[2];
                    if ("webkit" === browserName) {
                        result.webkit = true;
                        if (ua.indexOf("chrome") >= 0 || ua.indexOf("crios") >= 0) {
                            browserName = "chrome";
                            browserVersion = /(?:chrome|crios)\/(\d+\.\d+)/.exec(ua);
                            browserVersion = browserVersion && browserVersion[1]
                        } else if (ua.indexOf("fxios") >= 0) {
                            browserName = "mozilla";
                            browserVersion = /fxios\/(\d+\.\d+)/.exec(ua);
                            browserVersion = browserVersion && browserVersion[1]
                        } else if (ua.indexOf("safari") >= 0 && /version|phantomjs/.test(ua)) {
                            browserName = "safari";
                            browserVersion = /(?:version|phantomjs)\/([0-9.]+)/.exec(ua);
                            browserVersion = browserVersion && browserVersion[1]
                        } else {
                            browserName = "unknown";
                            browserVersion = /applewebkit\/([0-9.]+)/.exec(ua);
                            browserVersion = browserVersion && browserVersion[1]
                        }
                    }
                    if (browserName) {
                        result[browserName] = true;
                        result.version = browserVersion
                    }
                    return result
                };
                var _default = (0, _extend.extend)({
                    _fromUA: browserFromUA
                }, browserFromUA(navigator.userAgent));
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        39618:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/call_once.js ***!
              \*********************************************************************/
            function(module, exports) {
                exports.default = void 0;
                var _default = function(handler) {
                    let result;
                    let wrappedHandler = function() {
                        result = handler.apply(this, arguments);
                        wrappedHandler = function() {
                            return result
                        };
                        return result
                    };
                    return function() {
                        return wrappedHandler.apply(this, arguments)
                    }
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        44504:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/callbacks.js ***!
              \*********************************************************************/
            function(module, exports) {
                exports.default = void 0;
                const Callback = function(options) {
                    this._options = options || {};
                    this._list = [];
                    this._queue = [];
                    this._firing = false;
                    this._fired = false;
                    this._firingIndexes = []
                };
                Callback.prototype._fireCore = function(context, args) {
                    const firingIndexes = this._firingIndexes;
                    const list = this._list;
                    const stopOnFalse = this._options.stopOnFalse;
                    const step = firingIndexes.length;
                    for (firingIndexes[step] = 0; firingIndexes[step] < list.length; firingIndexes[step]++) {
                        const result = list[firingIndexes[step]].apply(context, args);
                        if (false === result && stopOnFalse) {
                            break
                        }
                    }
                    firingIndexes.pop()
                };
                Callback.prototype.add = function(fn) {
                    if ("function" === typeof fn && (!this._options.unique || !this.has(fn))) {
                        this._list.push(fn)
                    }
                    return this
                };
                Callback.prototype.remove = function(fn) {
                    const list = this._list;
                    const firingIndexes = this._firingIndexes;
                    const index = list.indexOf(fn);
                    if (index > -1) {
                        list.splice(index, 1);
                        if (this._firing && firingIndexes.length) {
                            for (let step = 0; step < firingIndexes.length; step++) {
                                if (index <= firingIndexes[step]) {
                                    firingIndexes[step]--
                                }
                            }
                        }
                    }
                    return this
                };
                Callback.prototype.has = function(fn) {
                    const list = this._list;
                    return fn ? list.indexOf(fn) > -1 : !!list.length
                };
                Callback.prototype.empty = function(fn) {
                    this._list = [];
                    return this
                };
                Callback.prototype.fireWith = function(context, args) {
                    const queue = this._queue;
                    args = args || [];
                    args = args.slice ? args.slice() : args;
                    if (this._options.syncStrategy) {
                        this._firing = true;
                        this._fireCore(context, args)
                    } else {
                        queue.push([context, args]);
                        if (this._firing) {
                            return
                        }
                        this._firing = true;
                        while (queue.length) {
                            const memory = queue.shift();
                            this._fireCore(memory[0], memory[1])
                        }
                    }
                    this._firing = false;
                    this._fired = true;
                    return this
                };
                Callback.prototype.fire = function() {
                    this.fireWith(this, arguments)
                };
                Callback.prototype.fired = function() {
                    return this._fired
                };
                var _default = function(options) {
                    return new Callback(options)
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        20576:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/common.js ***!
              \******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.splitPair = exports.pairToObject = exports.normalizeKey = exports.noop = exports.grep = exports.getKeyHash = exports.findBestMatches = exports.executeAsync = exports.escapeRegExp = exports.equalByValue = exports.ensureDefined = exports.denormalizeKey = exports.deferUpdater = exports.deferUpdate = exports.deferRenderer = exports.deferRender = exports.asyncNoop = exports.applyServerDecimalSeparator = void 0;
                var _config = _interopRequireDefault(__webpack_require__( /*! ../config */ 80209));
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../guid */ 73176));
                var _deferred = __webpack_require__( /*! ../utils/deferred */ 62754);
                var _data = __webpack_require__( /*! ./data */ 47617);
                var _iterator = __webpack_require__( /*! ./iterator */ 95479);
                var _type = __webpack_require__( /*! ./type */ 35922);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                exports.ensureDefined = function(value, defaultValue) {
                    return (0, _type.isDefined)(value) ? value : defaultValue
                };
                exports.executeAsync = function(action, context) {
                    const deferred = new _deferred.Deferred;
                    const normalizedContext = context || this;
                    const task = {
                        promise: deferred.promise(),
                        abort: function() {
                            clearTimeout(timerId);
                            deferred.rejectWith(normalizedContext)
                        }
                    };
                    const callback = function() {
                        const result = action.call(normalizedContext);
                        if (result && result.done && (0, _type.isFunction)(result.done)) {
                            result.done((function() {
                                deferred.resolveWith(normalizedContext)
                            }))
                        } else {
                            deferred.resolveWith(normalizedContext)
                        }
                    };
                    const timerId = (arguments[2] || setTimeout)(callback, "number" === typeof context ? context : 0);
                    return task
                };
                const delayedFuncs = [];
                const delayedNames = [];
                const delayedDeferreds = [];
                let executingName;
                const deferExecute = function(name, func, deferred) {
                    if (executingName && executingName !== name) {
                        delayedFuncs.push(func);
                        delayedNames.push(name);
                        deferred = deferred || new _deferred.Deferred;
                        delayedDeferreds.push(deferred);
                        return deferred
                    } else {
                        const oldExecutingName = executingName;
                        const currentDelayedCount = delayedDeferreds.length;
                        executingName = name;
                        let result = func();
                        if (!result) {
                            if (delayedDeferreds.length > currentDelayedCount) {
                                result = _deferred.when.apply(this, delayedDeferreds.slice(currentDelayedCount))
                            } else if (deferred) {
                                deferred.resolve()
                            }
                        }
                        executingName = oldExecutingName;
                        if (deferred && result && result.done) {
                            result.done(deferred.resolve).fail(deferred.reject)
                        }
                        if (!executingName && delayedFuncs.length) {
                            ("render" === delayedNames.shift() ? deferRender : deferUpdate)(delayedFuncs.shift(), delayedDeferreds.shift())
                        }
                        return result || (0, _deferred.when)()
                    }
                };
                const deferRender = function(func, deferred) {
                    return deferExecute("render", func, deferred)
                };
                exports.deferRender = deferRender;
                const deferUpdate = function(func, deferred) {
                    return deferExecute("update", func, deferred)
                };
                exports.deferUpdate = deferUpdate;
                exports.deferRenderer = function(func) {
                    return function() {
                        const that = this;
                        return deferExecute("render", (function() {
                            return func.call(that)
                        }))
                    }
                };
                exports.deferUpdater = function(func) {
                    return function() {
                        const that = this;
                        return deferExecute("update", (function() {
                            return func.call(that)
                        }))
                    }
                };
                exports.findBestMatches = function(targetFilter, items, mapFn) {
                    const bestMatches = [];
                    let maxMatchCount = 0;
                    (0, _iterator.each)(items, (index, itemSrc) => {
                        let matchCount = 0;
                        const item = mapFn ? mapFn(itemSrc) : itemSrc;
                        (0, _iterator.each)(targetFilter, (paramName, targetValue) => {
                            const value = item[paramName];
                            if (void 0 === value) {
                                return
                            }
                            if (match(value, targetValue)) {
                                matchCount++;
                                return
                            }
                            matchCount = -1;
                            return false
                        });
                        if (matchCount < maxMatchCount) {
                            return
                        }
                        if (matchCount > maxMatchCount) {
                            bestMatches.length = 0;
                            maxMatchCount = matchCount
                        }
                        bestMatches.push(itemSrc)
                    });
                    return bestMatches
                };
                const match = function(value, targetValue) {
                    if (Array.isArray(value) && Array.isArray(targetValue)) {
                        let mismatch = false;
                        (0, _iterator.each)(value, (index, valueItem) => {
                            if (valueItem !== targetValue[index]) {
                                mismatch = true;
                                return false
                            }
                        });
                        if (mismatch) {
                            return false
                        }
                        return true
                    }
                    if (value === targetValue) {
                        return true
                    }
                    return false
                };
                const splitPair = function(raw) {
                    var _raw$x, _raw$y;
                    switch ((0, _type.type)(raw)) {
                        case "string":
                            return raw.split(/\s+/, 2);
                        case "object":
                            return [null !== (_raw$x = raw.x) && void 0 !== _raw$x ? _raw$x : raw.h, null !== (_raw$y = raw.y) && void 0 !== _raw$y ? _raw$y : raw.v];
                        case "number":
                            return [raw];
                        case "array":
                            return raw;
                        default:
                            return null
                    }
                };
                exports.splitPair = splitPair;
                exports.normalizeKey = function(id) {
                    let key = (0, _type.isString)(id) ? id : id.toString();
                    const arr = key.match(/[^a-zA-Z0-9_]/g);
                    arr && (0, _iterator.each)(arr, (_, sign) => {
                        key = key.replace(sign, "__" + sign.charCodeAt() + "__")
                    });
                    return key
                };
                exports.denormalizeKey = function(key) {
                    const arr = key.match(/__\d+__/g);
                    arr && arr.forEach(char => {
                        const charCode = parseInt(char.replace("__", ""));
                        key = key.replace(char, String.fromCharCode(charCode))
                    });
                    return key
                };
                exports.pairToObject = function(raw, preventRound) {
                    const pair = splitPair(raw);
                    let h = preventRound ? parseFloat(pair && pair[0]) : parseInt(pair && pair[0], 10);
                    let v = preventRound ? parseFloat(pair && pair[1]) : parseInt(pair && pair[1], 10);
                    if (!isFinite(h)) {
                        h = 0
                    }
                    if (!isFinite(v)) {
                        v = h
                    }
                    return {
                        h: h,
                        v: v
                    }
                };
                exports.getKeyHash = function(key) {
                    if (key instanceof _guid.default) {
                        return key.toString()
                    } else if ((0, _type.isObject)(key) || Array.isArray(key)) {
                        try {
                            const keyHash = JSON.stringify(key);
                            return "{}" === keyHash ? key : keyHash
                        } catch (e) {
                            return key
                        }
                    }
                    return key
                };
                exports.escapeRegExp = function(string) {
                    return string.replace(/[[\]{}\-()*+?.\\^$|\s]/g, "\\$&")
                };
                exports.applyServerDecimalSeparator = function(value) {
                    const separator = (0, _config.default)().serverDecimalSeparator;
                    if ((0, _type.isDefined)(value)) {
                        value = value.toString().replace(".", separator)
                    }
                    return value
                };
                exports.noop = function() {};
                exports.asyncNoop = function() {
                    return (new _deferred.Deferred).resolve().promise()
                };
                exports.grep = function(elements, checkFunction, invert) {
                    const result = [];
                    let check;
                    const expectedCheck = !invert;
                    for (let i = 0; i < elements.length; i++) {
                        check = !!checkFunction(elements[i], i);
                        if (check === expectedCheck) {
                            result.push(elements[i])
                        }
                    }
                    return result
                };
                const DEFAULT_EQUAL_BY_VALUE_OPTS = {
                    maxDepth: 3,
                    strict: true
                };
                const compareByValue = (value1, value2, depth, options) => {
                    const {
                        strict: strict,
                        maxDepth: maxDepth
                    } = options;
                    const comparable1 = (0, _data.toComparable)(value1, true);
                    const comparable2 = (0, _data.toComparable)(value2, true);
                    const comparisonResult = strict ? comparable1 === comparable2 : comparable1 == comparable2;
                    switch (true) {
                        case comparisonResult:
                        case depth >= maxDepth:
                            return true;
                        case (0, _type.isObject)(comparable1) && (0, _type.isObject)(comparable2):
                            return ((object1, object2, depth, options) => {
                                const keys1 = Object.keys(object1);
                                const keys2 = Object.keys(object2);
                                if (keys1.length !== keys2.length) {
                                    return false
                                }
                                const keys2Set = new Set(keys2);
                                return !keys1.some(key => !keys2Set.has(key) || !compareByValue(object1[key], object2[key], depth + 1, options))
                            })(comparable1, comparable2, depth, options);
                        case Array.isArray(comparable1) && Array.isArray(comparable2):
                            return ((array1, array2, depth, options) => {
                                if (array1.length !== array2.length) {
                                    return false
                                }
                                return !array1.some((item, idx) => !compareByValue(item, array2[idx], depth + 1, _extends({}, options, {
                                    strict: true
                                })))
                            })(comparable1, comparable2, depth, options);
                        default:
                            return false
                    }
                };
                exports.equalByValue = function(value1, value2) {
                    let options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : DEFAULT_EQUAL_BY_VALUE_OPTS;
                    const compareOptions = _extends({}, DEFAULT_EQUAL_BY_VALUE_OPTS, options);
                    return compareByValue(value1, value2, 0, compareOptions)
                }
            },
        49036:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/comparator.js ***!
              \**********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.equals = void 0;
                var _dom_adapter = (obj = __webpack_require__( /*! ../dom_adapter */ 73349), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _data = __webpack_require__( /*! ./data */ 47617);
                var _type = __webpack_require__( /*! ./type */ 35922);
                exports.equals = function(oldValue, newValue) {
                    oldValue = (0, _data.toComparable)(oldValue, true);
                    newValue = (0, _data.toComparable)(newValue, true);
                    if (oldValue && newValue && (0, _type.isRenderer)(oldValue) && (0, _type.isRenderer)(newValue)) {
                        return newValue.is(oldValue)
                    }
                    const oldValueIsNaN = oldValue !== oldValue;
                    const newValueIsNaN = newValue !== newValue;
                    if (oldValueIsNaN && newValueIsNaN) {
                        return true
                    }
                    if (0 === oldValue && 0 === newValue) {
                        return function(oldValue, newValue) {
                            return 1 / oldValue === 1 / newValue
                        }(oldValue, newValue)
                    }
                    if (null === oldValue || "object" !== typeof oldValue || _dom_adapter.default.isElementNode(oldValue)) {
                        return oldValue === newValue
                    }
                    return false
                }
            },
        30869:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/console.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.logger = exports.debug = void 0;
                var _type = __webpack_require__( /*! ./type */ 35922);
                const noop = function() {};
                const getConsoleMethod = function(method) {
                    if ("undefined" === typeof console || !(0, _type.isFunction)(console[method])) {
                        return noop
                    }
                    return console[method].bind(console)
                };
                const logger = {
                    log: getConsoleMethod("log"),
                    info: getConsoleMethod("info"),
                    warn: getConsoleMethod("warn"),
                    error: getConsoleMethod("error")
                };
                exports.logger = logger;
                const debug = function() {
                    function assert(condition, message) {
                        if (!condition) {
                            throw new Error(message)
                        }
                    }
                    return {
                        assert: assert,
                        assertParam: function(parameter, message) {
                            assert(null !== parameter && void 0 !== parameter, message)
                        }
                    }
                }();
                exports.debug = debug
            },
        47617:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/data.js ***!
              \****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.toComparable = exports.getPathParts = exports.compileSetter = exports.compileGetter = void 0;
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../errors */ 17381));
                var _class = _interopRequireDefault(__webpack_require__( /*! ../class */ 38377));
                var _object = __webpack_require__( /*! ./object */ 48013);
                var _type = __webpack_require__( /*! ./type */ 35922);
                var _iterator = __webpack_require__( /*! ./iterator */ 95479);
                var _variable_wrapper = _interopRequireDefault(__webpack_require__( /*! ./variable_wrapper */ 26974));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const unwrapVariable = _variable_wrapper.default.unwrap;
                const isWrapped = _variable_wrapper.default.isWrapped;
                const assign = _variable_wrapper.default.assign;
                const getPathParts = function(name) {
                    return (expr = name, expr.replace(/\[/g, ".").replace(/\]/g, "")).split(".");
                    var expr
                };
                exports.getPathParts = getPathParts;
                const assignPropValue = function(obj, propName, value, options) {
                    if ("this" === propName) {
                        throw new _errors.default.Error("E4016")
                    }
                    const propValue = obj[propName];
                    if (options.unwrapObservables && isWrapped(propValue)) {
                        assign(propValue, value)
                    } else {
                        obj[propName] = value
                    }
                };
                const prepareOptions = function(options) {
                    options = options || {};
                    options.unwrapObservables = void 0 !== options.unwrapObservables ? options.unwrapObservables : true;
                    return options
                };

                function unwrap(value, options) {
                    return options.unwrapObservables ? unwrapVariable(value) : value
                }
                const compileGetter = function(expr) {
                    if (arguments.length > 1) {
                        expr = [].slice.call(arguments)
                    }
                    if (!expr || "this" === expr) {
                        return function(obj) {
                            return obj
                        }
                    }
                    if ("string" === typeof expr) {
                        const path = getPathParts(expr);
                        return function(obj, options) {
                            options = prepareOptions(options);
                            const functionAsIs = options.functionsAsIs;
                            const hasDefaultValue = "defaultValue" in options;
                            let current = unwrap(obj, options);
                            for (let i = 0; i < path.length; i++) {
                                if (!current) {
                                    if (null == current && hasDefaultValue) {
                                        return options.defaultValue
                                    }
                                    break
                                }
                                const pathPart = path[i];
                                if (hasDefaultValue && (0, _type.isObject)(current) && !(pathPart in current)) {
                                    return options.defaultValue
                                }
                                let next = unwrap(current[pathPart], options);
                                if (!functionAsIs && (0, _type.isFunction)(next)) {
                                    next = next.call(current)
                                }
                                current = next
                            }
                            return current
                        }
                    }
                    if (Array.isArray(expr)) {
                        return combineGetters(expr)
                    }
                    if ((0, _type.isFunction)(expr)) {
                        return expr
                    }
                };
                exports.compileGetter = compileGetter;

                function combineGetters(getters) {
                    const compiledGetters = {};
                    for (let i = 0, l = getters.length; i < l; i++) {
                        const getter = getters[i];
                        compiledGetters[getter] = compileGetter(getter)
                    }
                    return function(obj, options) {
                        let result;
                        (0, _iterator.each)(compiledGetters, (function(name) {
                            const value = this(obj, options);
                            if (void 0 === value) {
                                return
                            }
                            let current = result || (result = {});
                            const path = name.split(".");
                            const last = path.length - 1;
                            for (let i = 0; i < last; i++) {
                                const pathItem = path[i];
                                if (!(pathItem in current)) {
                                    current[pathItem] = {}
                                }
                                current = current[pathItem]
                            }
                            current[path[last]] = value
                        }));
                        return result
                    }
                }
                const ensurePropValueDefined = function(obj, propName, value, options) {
                    if ((0, _type.isDefined)(value)) {
                        return value
                    }
                    const newValue = {};
                    assignPropValue(obj, propName, newValue, options);
                    return newValue
                };
                exports.compileSetter = function(expr) {
                    expr = getPathParts(expr || "this");
                    const lastLevelIndex = expr.length - 1;
                    return function(obj, value, options) {
                        options = prepareOptions(options);
                        let currentValue = unwrap(obj, options);
                        expr.forEach((function(propertyName, levelIndex) {
                            let propertyValue = function(obj, propName, options) {
                                options = options || {};
                                if ("this" === propName) {
                                    return unwrap(obj, options)
                                }
                                return unwrap(obj[propName], options)
                            }(currentValue, propertyName, options);
                            const isPropertyFunc = !options.functionsAsIs && (0, _type.isFunction)(propertyValue) && !isWrapped(propertyValue);
                            if (levelIndex === lastLevelIndex) {
                                if (options.merge && (0, _type.isPlainObject)(value) && (!(0, _type.isDefined)(propertyValue) || (0, _type.isPlainObject)(propertyValue))) {
                                    propertyValue = ensurePropValueDefined(currentValue, propertyName, propertyValue, options);
                                    (0, _object.deepExtendArraySafe)(propertyValue, value, false, true)
                                } else if (isPropertyFunc) {
                                    currentValue[propertyName](value)
                                } else {
                                    assignPropValue(currentValue, propertyName, value, options)
                                }
                            } else {
                                propertyValue = ensurePropValueDefined(currentValue, propertyName, propertyValue, options);
                                if (isPropertyFunc) {
                                    propertyValue = propertyValue.call(currentValue)
                                }
                                currentValue = propertyValue
                            }
                        }))
                    }
                };
                exports.toComparable = function(value, caseSensitive) {
                    let options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                    if (value instanceof Date) {
                        return value.getTime()
                    }
                    if (value && value instanceof _class.default && value.valueOf) {
                        return value.valueOf()
                    }
                    if (!caseSensitive && "string" === typeof value) {
                        var _options$collatorOpti;
                        if ("base" === (null === options || void 0 === options ? void 0 : null === (_options$collatorOpti = options.collatorOptions) || void 0 === _options$collatorOpti ? void 0 : _options$collatorOpti.sensitivity)) {
                            const REMOVE_DIACRITICAL_MARKS_REGEXP = /[\u0300-\u036f]/g;
                            value = value.normalize("NFD").replace(REMOVE_DIACRITICAL_MARKS_REGEXP, "")
                        }
                        return null !== options && void 0 !== options && options.locale ? value.toLocaleLowerCase(options.locale) : value.toLowerCase()
                    }
                    return value
                }
            },
        91198:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/date.js ***!
              \****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _type = __webpack_require__( /*! ./type */ 35922);
                var _math = __webpack_require__( /*! ./math */ 60810);
                var _iterator = __webpack_require__( /*! ./iterator */ 95479);
                var _inflector = __webpack_require__( /*! ./inflector */ 78008);
                var _index = __webpack_require__( /*! ../../renovation/ui/common/utils/date/index */ 25050);
                const dateUnitIntervals = ["millisecond", "second", "minute", "hour", "day", "week", "month", "quarter", "year"];
                const convertMillisecondsToDateUnits = function(value) {
                    let i;
                    let dateUnitCount;
                    let dateUnitInterval;
                    const dateUnitIntervals = ["millisecond", "second", "minute", "hour", "day", "month", "year"];
                    const result = {};
                    for (i = dateUnitIntervals.length - 1; i >= 0; i--) {
                        dateUnitInterval = dateUnitIntervals[i];
                        dateUnitCount = Math.floor(value / (0, _index.toMilliseconds)(dateUnitInterval));
                        if (dateUnitCount > 0) {
                            result[dateUnitInterval + "s"] = dateUnitCount;
                            value -= convertDateUnitToMilliseconds(dateUnitInterval, dateUnitCount)
                        }
                    }
                    return result
                };

                function convertDateUnitToMilliseconds(dateUnit, count) {
                    return (0, _index.toMilliseconds)(dateUnit) * count
                }

                function getDateUnitInterval(tickInterval) {
                    let maxInterval = -1;
                    let i;
                    if ((0, _type.isString)(tickInterval)) {
                        return tickInterval
                    }
                    if ((0, _type.isObject)(tickInterval)) {
                        (0, _iterator.each)(tickInterval, (function(key, value) {
                            for (i = 0; i < dateUnitIntervals.length; i++) {
                                if (value && (key === dateUnitIntervals[i] + "s" || key === dateUnitIntervals[i]) && maxInterval < i) {
                                    maxInterval = i
                                }
                            }
                        }));
                        return dateUnitIntervals[maxInterval]
                    }
                    return ""
                }
                const tickIntervalToFormatMap = {
                    millisecond: "millisecond",
                    second: "longtime",
                    minute: "shorttime",
                    hour: "shorttime",
                    day: "day",
                    week: "day",
                    month: "month",
                    quarter: "quarter",
                    year: "year"
                };
                const getQuarter = function(month) {
                    return Math.floor(month / 3)
                };
                const getFirstQuarterMonth = function(month) {
                    return 3 * getQuarter(month)
                };

                function correctDateWithUnitBeginning(date, dateInterval, withCorrection, firstDayOfWeek) {
                    date = new Date(date.getTime());
                    const oldDate = new Date(date.getTime());
                    let firstQuarterMonth;
                    let month;
                    const dateUnitInterval = getDateUnitInterval(dateInterval);
                    switch (dateUnitInterval) {
                        case "second":
                            date = new Date(1e3 * Math.floor(oldDate.getTime() / 1e3));
                            break;
                        case "minute":
                            date = new Date(6e4 * Math.floor(oldDate.getTime() / 6e4));
                            break;
                        case "hour":
                            date = new Date(36e5 * Math.floor(oldDate.getTime() / 36e5));
                            break;
                        case "year":
                            date.setMonth(0);
                        case "month":
                            date.setDate(1);
                        case "day":
                            date.setHours(0, 0, 0, 0);
                            break;
                        case "week":
                            date = getFirstWeekDate(date, firstDayOfWeek || 0);
                            date.setHours(0, 0, 0, 0);
                            break;
                        case "quarter":
                            firstQuarterMonth = getFirstQuarterMonth(date.getMonth());
                            month = date.getMonth();
                            date.setDate(1);
                            date.setHours(0, 0, 0, 0);
                            if (month !== firstQuarterMonth) {
                                date.setMonth(firstQuarterMonth)
                            }
                    }
                    if (withCorrection && "hour" !== dateUnitInterval && "minute" !== dateUnitInterval && "second" !== dateUnitInterval) {
                        fixTimezoneGap(oldDate, date)
                    }
                    return date
                }

                function trimTime(date) {
                    return correctDateWithUnitBeginning(date, "day")
                }

                function addDateInterval(value, interval, dir) {
                    const result = new Date(value.getTime());
                    const intervalObject = (0, _type.isString)(interval) ? getDateIntervalByString(interval.toLowerCase()) : (0, _type.isNumeric)(interval) ? convertMillisecondsToDateUnits(interval) : interval;
                    if (intervalObject.years) {
                        result.setFullYear(result.getFullYear() + intervalObject.years * dir)
                    }
                    if (intervalObject.quarters) {
                        result.setMonth(result.getMonth() + 3 * intervalObject.quarters * dir)
                    }
                    if (intervalObject.months) {
                        result.setMonth(result.getMonth() + intervalObject.months * dir)
                    }
                    if (intervalObject.weeks) {
                        result.setDate(result.getDate() + 7 * intervalObject.weeks * dir)
                    }
                    if (intervalObject.days) {
                        result.setDate(result.getDate() + intervalObject.days * dir)
                    }
                    if (intervalObject.hours) {
                        result.setTime(result.getTime() + 36e5 * intervalObject.hours * dir)
                    }
                    if (intervalObject.minutes) {
                        result.setTime(result.getTime() + 6e4 * intervalObject.minutes * dir)
                    }
                    if (intervalObject.seconds) {
                        result.setTime(result.getTime() + 1e3 * intervalObject.seconds * dir)
                    }
                    if (intervalObject.milliseconds) {
                        result.setTime(result.getTime() + intervalObject.milliseconds * dir)
                    }
                    return result
                }
                const addInterval = function(value, interval, isNegative) {
                    const dir = isNegative ? -1 : 1;
                    return (0, _type.isDate)(value) ? addDateInterval(value, interval, dir) : (0, _math.adjust)(value + interval * dir, interval)
                };

                function getLastMonthDay(date) {
                    const resultDate = createDateWithFullYear(date.getFullYear(), date.getMonth() + 1, 0);
                    return resultDate.getDate()
                }

                function getDateIntervalByString(intervalString) {
                    const result = {};
                    switch (intervalString) {
                        case "year":
                            result.years = 1;
                            break;
                        case "month":
                            result.months = 1;
                            break;
                        case "quarter":
                            result.months = 3;
                            break;
                        case "week":
                            result.weeks = 1;
                            break;
                        case "day":
                            result.days = 1;
                            break;
                        case "hour":
                            result.hours = 1;
                            break;
                        case "minute":
                            result.minutes = 1;
                            break;
                        case "second":
                            result.seconds = 1;
                            break;
                        case "millisecond":
                            result.milliseconds = 1
                    }
                    return result
                }

                function sameMonthAndYear(date1, date2) {
                    return sameYear(date1, date2) && date1.getMonth() === date2.getMonth()
                }

                function sameYear(date1, date2) {
                    return date1 && date2 && date1.getFullYear() === date2.getFullYear()
                }

                function getFirstDecadeInCentury(date) {
                    return date && date.getFullYear() - date.getFullYear() % 100
                }

                function getFirstYearInDecade(date) {
                    return date && date.getFullYear() - date.getFullYear() % 10
                }

                function getFirstWeekDate(date, firstDayOfWeek) {
                    const delta = (date.getDay() - firstDayOfWeek + 7) % 7;
                    const result = new Date(date);
                    result.setDate(date.getDate() - delta);
                    return result
                }

                function getUTCTime(date) {
                    return Date.UTC(date.getFullYear(), date.getMonth(), date.getDate())
                }

                function getFirstDateInYear(year) {
                    return new Date(year, 0, 1)
                }

                function getLastDateInYear(year) {
                    return new Date(year, 11, 31)
                }

                function getDayWeekNumber(date, firstDayOfWeek) {
                    let day = date.getDay() - firstDayOfWeek + 1;
                    if (day <= 0) {
                        day += 7
                    }
                    return day
                }

                function normalizeDate(date, min, max) {
                    let normalizedDate = date;
                    if (!(0, _type.isDefined)(date)) {
                        return date
                    }
                    if ((0, _type.isDefined)(min) && date < min) {
                        normalizedDate = min
                    }
                    if ((0, _type.isDefined)(max) && date > max) {
                        normalizedDate = max
                    }
                    return normalizedDate
                }

                function fixTimezoneGap(oldDate, newDate) {
                    if (!(0, _type.isDefined)(oldDate)) {
                        return
                    }
                    const diff = newDate.getHours() - oldDate.getHours();
                    if (0 === diff) {
                        return
                    }
                    const sign = 1 === diff || -23 === diff ? -1 : 1;
                    const trial = new Date(newDate.getTime() + 36e5 * sign);
                    if (sign > 0 || trial.getDate() === newDate.getDate()) {
                        newDate.setTime(trial.getTime())
                    }
                }

                function getTimezonesDifference(min, max) {
                    return 60 * (max.getTimezoneOffset() - min.getTimezoneOffset()) * 1e3
                }
                const createDateWithFullYear = function(year) {
                    const result = new Date(...arguments);
                    result.setFullYear(year);
                    return result
                };
                const dateUtils = {
                    dateUnitIntervals: dateUnitIntervals,
                    convertMillisecondsToDateUnits: convertMillisecondsToDateUnits,
                    dateToMilliseconds: function(tickInterval) {
                        let milliseconds = 0;
                        if ((0, _type.isObject)(tickInterval)) {
                            (0, _iterator.each)(tickInterval, (function(key, value) {
                                milliseconds += convertDateUnitToMilliseconds(key.substr(0, key.length - 1), value)
                            }))
                        }
                        if ((0, _type.isString)(tickInterval)) {
                            milliseconds = convertDateUnitToMilliseconds(tickInterval, 1)
                        }
                        return milliseconds
                    },
                    getNextDateUnit: function(unit, withWeeks) {
                        const interval = getDateUnitInterval(unit);
                        switch (interval) {
                            case "millisecond":
                                return "second";
                            case "second":
                                return "minute";
                            case "minute":
                                return "hour";
                            case "hour":
                                return "day";
                            case "day":
                                return withWeeks ? "week" : "month";
                            case "week":
                                return "month";
                            case "month":
                                return "quarter";
                            case "quarter":
                            case "year":
                                return "year";
                            default:
                                return 0
                        }
                    },
                    convertDateUnitToMilliseconds: convertDateUnitToMilliseconds,
                    getDateUnitInterval: getDateUnitInterval,
                    getDateFormatByTickInterval: function(tickInterval) {
                        return tickIntervalToFormatMap[getDateUnitInterval(tickInterval)] || ""
                    },
                    getDatesDifferences: function(date1, date2) {
                        let counter = 0;
                        const differences = {
                            year: date1.getFullYear() !== date2.getFullYear(),
                            month: date1.getMonth() !== date2.getMonth(),
                            day: date1.getDate() !== date2.getDate(),
                            hour: date1.getHours() !== date2.getHours(),
                            minute: date1.getMinutes() !== date2.getMinutes(),
                            second: date1.getSeconds() !== date2.getSeconds(),
                            millisecond: date1.getMilliseconds() !== date2.getMilliseconds()
                        };
                        (0, _iterator.each)(differences, (function(key, value) {
                            if (value) {
                                counter++
                            }
                        }));
                        if (0 === counter && 0 !== getTimezonesDifference(date1, date2)) {
                            differences.hour = true;
                            counter++
                        }
                        differences.count = counter;
                        return differences
                    },
                    correctDateWithUnitBeginning: correctDateWithUnitBeginning,
                    trimTime: trimTime,
                    setToDayEnd: function(date) {
                        const result = trimTime(date);
                        result.setDate(result.getDate() + 1);
                        return new Date(result.getTime() - 1)
                    },
                    roundDateByStartDayHour: function(date, startDayHour) {
                        const startTime = this.dateTimeFromDecimal(startDayHour);
                        const result = new Date(date);
                        if (date.getHours() === startTime.hours && date.getMinutes() < startTime.minutes || date.getHours() < startTime.hours) {
                            result.setHours(startTime.hours, startTime.minutes, 0, 0)
                        }
                        return result
                    },
                    dateTimeFromDecimal: function(number) {
                        const hours = Math.floor(number);
                        const minutes = number % 1 * 60;
                        return {
                            hours: hours,
                            minutes: minutes
                        }
                    },
                    addDateInterval: addDateInterval,
                    addInterval: addInterval,
                    getSequenceByInterval: function(min, max, interval) {
                        const intervals = [];
                        let cur;
                        intervals.push((0, _type.isDate)(min) ? new Date(min.getTime()) : min);
                        cur = min;
                        while (cur < max) {
                            cur = addInterval(cur, interval);
                            intervals.push(cur)
                        }
                        return intervals
                    },
                    getDateIntervalByString: getDateIntervalByString,
                    sameHoursAndMinutes: function(date1, date2) {
                        return date1 && date2 && date1.getHours() === date2.getHours() && date1.getMinutes() === date2.getMinutes()
                    },
                    sameDate: function(date1, date2) {
                        return sameMonthAndYear(date1, date2) && date1.getDate() === date2.getDate()
                    },
                    sameMonthAndYear: sameMonthAndYear,
                    sameMonth: sameMonthAndYear,
                    sameYear: sameYear,
                    sameDecade: function(date1, date2) {
                        if (!(0, _type.isDefined)(date1) || !(0, _type.isDefined)(date2)) {
                            return
                        }
                        const startDecadeDate1 = date1.getFullYear() - date1.getFullYear() % 10;
                        const startDecadeDate2 = date2.getFullYear() - date2.getFullYear() % 10;
                        return date1 && date2 && startDecadeDate1 === startDecadeDate2
                    },
                    sameCentury: function(date1, date2) {
                        if (!(0, _type.isDefined)(date1) || !(0, _type.isDefined)(date2)) {
                            return
                        }
                        const startCenturyDate1 = date1.getFullYear() - date1.getFullYear() % 100;
                        const startCenturyDate2 = date2.getFullYear() - date2.getFullYear() % 100;
                        return date1 && date2 && startCenturyDate1 === startCenturyDate2
                    },
                    getDifferenceInMonth: function(typeView) {
                        let difference = 1;
                        if ("year" === typeView) {
                            difference = 12
                        }
                        if ("decade" === typeView) {
                            difference = 120
                        }
                        if ("century" === typeView) {
                            difference = 1200
                        }
                        return difference
                    },
                    getDifferenceInMonthForCells: function(typeView) {
                        let difference = 1;
                        if ("decade" === typeView) {
                            difference = 12
                        }
                        if ("century" === typeView) {
                            difference = 120
                        }
                        return difference
                    },
                    getFirstYearInDecade: getFirstYearInDecade,
                    getFirstDecadeInCentury: getFirstDecadeInCentury,
                    getShortDateFormat: function() {
                        return "yyyy/MM/dd"
                    },
                    getViewFirstCellDate: function(viewType, date) {
                        if ("month" === viewType) {
                            return createDateWithFullYear(date.getFullYear(), date.getMonth(), 1)
                        }
                        if ("year" === viewType) {
                            return createDateWithFullYear(date.getFullYear(), 0, date.getDate())
                        }
                        if ("decade" === viewType) {
                            return createDateWithFullYear(getFirstYearInDecade(date), date.getMonth(), date.getDate())
                        }
                        if ("century" === viewType) {
                            return createDateWithFullYear(getFirstDecadeInCentury(date), date.getMonth(), date.getDate())
                        }
                    },
                    getViewLastCellDate: function(viewType, date) {
                        if ("month" === viewType) {
                            return createDateWithFullYear(date.getFullYear(), date.getMonth(), getLastMonthDay(date))
                        }
                        if ("year" === viewType) {
                            return createDateWithFullYear(date.getFullYear(), 11, date.getDate())
                        }
                        if ("decade" === viewType) {
                            return createDateWithFullYear(getFirstYearInDecade(date) + 9, date.getMonth(), date.getDate())
                        }
                        if ("century" === viewType) {
                            return createDateWithFullYear(getFirstDecadeInCentury(date) + 90, date.getMonth(), date.getDate())
                        }
                    },
                    getViewDown: function(typeView) {
                        switch (typeView) {
                            case "century":
                                return "decade";
                            case "decade":
                                return "year";
                            case "year":
                                return "month"
                        }
                    },
                    getViewUp: function(typeView) {
                        switch (typeView) {
                            case "month":
                                return "year";
                            case "year":
                                return "decade";
                            case "decade":
                                return "century"
                        }
                    },
                    getLastMonthDay: getLastMonthDay,
                    getLastMonthDate: function(date) {
                        if (!(0, _type.isDefined)(date)) {
                            return
                        }
                        return createDateWithFullYear(date.getFullYear(), date.getMonth() + 1, 0)
                    },
                    getFirstMonthDate: function(date) {
                        if (!(0, _type.isDefined)(date)) {
                            return
                        }
                        return createDateWithFullYear(date.getFullYear(), date.getMonth(), 1)
                    },
                    getFirstWeekDate: getFirstWeekDate,
                    getWeekNumber: function getWeekNumber(date, firstDayOfWeek, rule) {
                        const firstWeekDayInYear = getDayWeekNumber(getFirstDateInYear(date.getFullYear()), firstDayOfWeek);
                        const lastWeekDayInYear = getDayWeekNumber(getLastDateInYear(date.getFullYear()), firstDayOfWeek);
                        const daysInFirstWeek = 7 - firstWeekDayInYear + 1;
                        let weekNumber = Math.ceil((function(date) {
                            const ms = getUTCTime(date) - getUTCTime(getFirstDateInYear(date.getFullYear()));
                            return 1 + Math.floor(ms / (0, _index.toMilliseconds)("day"))
                        }(date) - daysInFirstWeek) / 7);
                        switch (rule) {
                            case "fullWeek":
                                if (7 === daysInFirstWeek) {
                                    weekNumber++
                                }
                                if (0 === weekNumber) {
                                    const lastDateInPreviousYear = getLastDateInYear(date.getFullYear() - 1);
                                    return getWeekNumber(lastDateInPreviousYear, firstDayOfWeek, rule)
                                }
                                return weekNumber;
                            case "firstDay": {
                                if (daysInFirstWeek > 0) {
                                    weekNumber++
                                }
                                const isSunday = 7 === firstWeekDayInYear || 7 === lastWeekDayInYear;
                                if (weekNumber > 52 && !isSunday || 54 === weekNumber) {
                                    weekNumber = 1
                                }
                                return weekNumber
                            }
                            case "firstFourDays": {
                                if (daysInFirstWeek > 3) {
                                    weekNumber++
                                }
                                const isThursday = 4 === firstWeekDayInYear || 4 === lastWeekDayInYear;
                                if (weekNumber > 52 && !isThursday) {
                                    weekNumber = 1
                                }
                                if (0 === weekNumber) {
                                    const lastDateInPreviousYear = getLastDateInYear(date.getFullYear() - 1);
                                    return getWeekNumber(lastDateInPreviousYear, firstDayOfWeek, rule)
                                }
                                return weekNumber
                            }
                        }
                    },
                    normalizeDateByWeek: function(date, currentDate) {
                        const differenceInDays = dateUtils.getDatesInterval(date, currentDate, "day");
                        let resultDate = new Date(date);
                        if (differenceInDays >= 6) {
                            resultDate = new Date(resultDate.setDate(resultDate.getDate() + 7))
                        }
                        return resultDate
                    },
                    getQuarter: getQuarter,
                    getFirstQuarterMonth: getFirstQuarterMonth,
                    dateInRange: function(date, min, max, format) {
                        if ("date" === format) {
                            min = min && dateUtils.correctDateWithUnitBeginning(min, "day");
                            max = max && dateUtils.correctDateWithUnitBeginning(max, "day");
                            date = date && dateUtils.correctDateWithUnitBeginning(date, "day")
                        }
                        return normalizeDate(date, min, max) === date
                    },
                    intervalsOverlap: function(options) {
                        const {
                            firstMin: firstMin,
                            firstMax: firstMax,
                            secondMin: secondMin,
                            secondMax: secondMax
                        } = options;
                        return firstMin <= secondMin && secondMin <= firstMax || firstMin > secondMin && firstMin < secondMax || firstMin < secondMax && firstMax > secondMax
                    },
                    roundToHour: function(date) {
                        const result = new Date(date.getTime());
                        result.setHours(result.getHours() + 1);
                        result.setMinutes(0);
                        return result
                    },
                    normalizeDate: normalizeDate,
                    getViewMinBoundaryDate: function(viewType, date) {
                        const resultDate = createDateWithFullYear(date.getFullYear(), date.getMonth(), 1);
                        if ("month" === viewType) {
                            return resultDate
                        }
                        resultDate.setMonth(0);
                        if ("year" === viewType) {
                            return resultDate
                        }
                        if ("decade" === viewType) {
                            resultDate.setFullYear(getFirstYearInDecade(date))
                        }
                        if ("century" === viewType) {
                            resultDate.setFullYear(getFirstDecadeInCentury(date))
                        }
                        return resultDate
                    },
                    getViewMaxBoundaryDate: function(viewType, date) {
                        const resultDate = new Date(date);
                        resultDate.setDate(getLastMonthDay(date));
                        if ("month" === viewType) {
                            return resultDate
                        }
                        resultDate.setMonth(11);
                        resultDate.setDate(getLastMonthDay(resultDate));
                        if ("year" === viewType) {
                            return resultDate
                        }
                        if ("decade" === viewType) {
                            resultDate.setFullYear(getFirstYearInDecade(date) + 9)
                        }
                        if ("century" === viewType) {
                            resultDate.setFullYear(getFirstDecadeInCentury(date) + 99)
                        }
                        return resultDate
                    },
                    fixTimezoneGap: fixTimezoneGap,
                    getTimezonesDifference: getTimezonesDifference,
                    makeDate: function(date) {
                        return new Date(date)
                    },
                    getDatesInterval: function(startDate, endDate, intervalUnit) {
                        const delta = endDate.getTime() - startDate.getTime();
                        const millisecondCount = (0, _index.toMilliseconds)(intervalUnit) || 1;
                        return Math.floor(delta / millisecondCount)
                    },
                    getDatesOfInterval: function(startDate, endDate, step) {
                        const result = [];
                        let currentDate = new Date(startDate.getTime());
                        while (currentDate < endDate) {
                            result.push(new Date(currentDate.getTime()));
                            currentDate = this.addInterval(currentDate, step)
                        }
                        return result
                    },
                    createDateWithFullYear: createDateWithFullYear,
                    getMachineTimezoneName: () => {
                        const hasIntl = "undefined" !== typeof Intl;
                        return hasIntl ? Intl.DateTimeFormat().resolvedOptions().timeZone : null
                    }
                };
                dateUtils.sameView = function(view, date1, date2) {
                    return dateUtils[(0, _inflector.camelize)("same " + view)](date1, date2)
                };
                var _default = dateUtils;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        69434:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/date_serialization.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _config = _interopRequireDefault(__webpack_require__( /*! ../config */ 80209));
                var _date = __webpack_require__( /*! ../../localization/ldml/date.formatter */ 40594);
                var _default_date_names = _interopRequireDefault(__webpack_require__( /*! ../../localization/default_date_names */ 15564));
                var _type = __webpack_require__( /*! ./type */ 35922);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const ISO8601_PATTERN = /^(\d{4,})(-)?(\d{2})(-)?(\d{2})(?:T(\d{2})(:)?(\d{2})?(:)?(\d{2}(?:\.(\d{1,3})\d*)?)?)?(Z|([+-])(\d{2})(:)?(\d{2})?)?$/;
                const ISO8601_TIME_PATTERN = /^(\d{2}):(\d{2})(:(\d{2}))?$/;
                const ISO8601_PATTERN_PARTS = ["", "yyyy", "", "MM", "", "dd", "THH", "", "mm", "", "ss", ".SSS"];
                const DATE_SERIALIZATION_PATTERN = /^(\d{4})\/(\d{2})\/(\d{2})$/;
                const dateParser = function(text, skipISO8601Parsing) {
                    let result;
                    if ((0, _type.isString)(text) && !skipISO8601Parsing) {
                        result = function(text) {
                            let parts = text.match(ISO8601_PATTERN);
                            if (!parts) {
                                parts = text.match(ISO8601_TIME_PATTERN);
                                if (parts) {
                                    return new Date(0, 0, 0, getTimePart(parts[1]), getTimePart(parts[2]), getTimePart(parts[4]))
                                }
                                return
                            }
                            const year = getTimePart(parts[1]);
                            const month = --parts[3];
                            const day = parts[5];
                            let timeZoneHour = 0;
                            let timeZoneMinute = 0;
                            const correctYear = d => {
                                year < 100 && d.setFullYear(year);
                                return d
                            };
                            timeZoneHour = getTimePart(parts[14]);
                            timeZoneMinute = getTimePart(parts[16]);
                            if ("-" === parts[13]) {
                                timeZoneHour = -timeZoneHour;
                                timeZoneMinute = -timeZoneMinute
                            }
                            const hour = getTimePart(parts[6]) - timeZoneHour;
                            const minute = getTimePart(parts[8]) - timeZoneMinute;
                            const second = getTimePart(parts[10]);
                            const millisecond = function(part) {
                                part = part || "";
                                return getTimePart(part) * Math.pow(10, 3 - part.length)
                            }(parts[11]);
                            if (parts[12]) {
                                return correctYear(new Date(Date.UTC(year, month, day, hour, minute, second, millisecond)))
                            }
                            return correctYear(new Date(year, month, day, hour, minute, second, millisecond))
                        }(text)
                    }
                    return result || function(text) {
                        const isDefaultSerializationFormat = "yyyy/MM/dd" === getDateSerializationFormat(text);
                        const parsedValue = !(0, _type.isDate)(text) && Date.parse(text);
                        if (!parsedValue && isDefaultSerializationFormat) {
                            const parts = text.match(DATE_SERIALIZATION_PATTERN);
                            if (parts) {
                                const newDate = new Date(getTimePart(parts[1]), getTimePart(parts[2]), getTimePart(parts[3]));
                                newDate.setFullYear(getTimePart(parts[1]));
                                newDate.setMonth(getTimePart(parts[2]) - 1);
                                newDate.setDate(getTimePart(parts[3]));
                                return newDate
                            }
                        }
                        return (0, _type.isNumeric)(parsedValue) ? new Date(parsedValue) : text
                    }(text)
                };

                function getTimePart(part) {
                    return +part || 0
                }
                const getDateSerializationFormat = function(value) {
                    if ("number" === typeof value) {
                        return "number"
                    } else if ((0, _type.isString)(value)) {
                        let format;
                        if ((0, _config.default)().forceIsoDateParsing) {
                            format = function(text, useUtc) {
                                let parts = text.match(ISO8601_PATTERN);
                                let result = "";
                                if (!parts) {
                                    parts = text.match(ISO8601_TIME_PATTERN);
                                    if (parts) {
                                        return parts[3] ? "HH:mm:ss" : "HH:mm"
                                    }
                                    return
                                }
                                for (let i = 1; i < ISO8601_PATTERN_PARTS.length; i++) {
                                    if (parts[i]) {
                                        result += ISO8601_PATTERN_PARTS[i] || parts[i]
                                    }
                                }
                                if ("Z" === parts[12]) {
                                    result += "'Z'"
                                }
                                if (parts[14]) {
                                    if (parts[15]) {
                                        result += "xxx"
                                    } else if (parts[16]) {
                                        result += "xx"
                                    } else {
                                        result += "x"
                                    }
                                }
                                return result
                            }(value)
                        }
                        if (format) {
                            return format
                        } else if (value.indexOf(":") >= 0) {
                            return "yyyy/MM/dd HH:mm:ss"
                        } else {
                            return "yyyy/MM/dd"
                        }
                    } else if (value) {
                        return null
                    }
                };
                var _default = {
                    dateParser: dateParser,
                    deserializeDate: function(value) {
                        if ("number" === typeof value) {
                            return new Date(value)
                        }
                        return dateParser(value, !(0, _config.default)().forceIsoDateParsing)
                    },
                    serializeDate: function(value, serializationFormat) {
                        if (!serializationFormat) {
                            return value
                        }
                        if (!(0, _type.isDate)(value)) {
                            return null
                        }
                        if ("number" === serializationFormat) {
                            return value && value.valueOf ? value.valueOf() : null
                        }
                        return (0, _date.getFormatter)(serializationFormat, _default_date_names.default)(value)
                    },
                    getDateSerializationFormat: getDateSerializationFormat
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        62754:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/deferred.js ***!
              \********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Deferred = function() {
                    return new DeferredObj
                };
                exports.fromPromise = fromPromise;
                exports.setStrategy = function(value) {
                    DeferredObj = value.Deferred;
                    whenFunc = value.when
                };
                exports.when = function() {
                    return whenFunc.apply(this, arguments)
                };
                var _type = __webpack_require__( /*! ../utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../utils/extend */ 13306);
                var _callbacks = (obj = __webpack_require__( /*! ../utils/callbacks */ 44504), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const deferredConfig = [{
                    method: "resolve",
                    handler: "done",
                    state: "resolved"
                }, {
                    method: "reject",
                    handler: "fail",
                    state: "rejected"
                }, {
                    method: "notify",
                    handler: "progress"
                }];
                let DeferredObj = function() {
                    const that = this;
                    this._state = "pending";
                    this._promise = {};
                    deferredConfig.forEach(function(config) {
                        const methodName = config.method;
                        this[methodName + "Callbacks"] = (0, _callbacks.default)();
                        this[methodName] = function() {
                            return this[methodName + "With"](this._promise, arguments)
                        }.bind(this);
                        this._promise[config.handler] = function(handler) {
                            if (!handler) {
                                return this
                            }
                            const callbacks = that[methodName + "Callbacks"];
                            if (callbacks.fired()) {
                                handler.apply(that[methodName + "Context"], that[methodName + "Args"])
                            } else {
                                callbacks.add(function(context, args) {
                                    handler.apply(context, args)
                                }.bind(this))
                            }
                            return this
                        }
                    }.bind(this));
                    this._promise.always = function(handler) {
                        return this.done(handler).fail(handler)
                    };
                    this._promise.catch = function(handler) {
                        return this.then(null, handler)
                    };
                    this._promise.then = function(resolve, reject) {
                        const result = new DeferredObj;
                        ["done", "fail"].forEach(function(method) {
                            const callback = "done" === method ? resolve : reject;
                            this[method]((function() {
                                if (!callback) {
                                    result["done" === method ? "resolve" : "reject"].apply(this, arguments);
                                    return
                                }
                                const callbackResult = callback && callback.apply(this, arguments);
                                if ((0, _type.isDeferred)(callbackResult)) {
                                    callbackResult.done(result.resolve).fail(result.reject)
                                } else if ((0, _type.isPromise)(callbackResult)) {
                                    callbackResult.then(result.resolve, result.reject)
                                } else {
                                    result.resolve.apply(this, (0, _type.isDefined)(callbackResult) ? [callbackResult] : arguments)
                                }
                            }))
                        }.bind(this));
                        return result.promise()
                    };
                    this._promise.state = function() {
                        return that._state
                    };
                    this._promise.promise = function(args) {
                        return args ? (0, _extend.extend)(args, that._promise) : that._promise
                    };
                    this._promise.promise(this)
                };
                deferredConfig.forEach((function(config) {
                    const methodName = config.method;
                    const state = config.state;
                    DeferredObj.prototype[methodName + "With"] = function(context, args) {
                        const callbacks = this[methodName + "Callbacks"];
                        if ("pending" === this.state()) {
                            this[methodName + "Args"] = args;
                            this[methodName + "Context"] = context;
                            if (state) {
                                this._state = state
                            }
                            callbacks.fire(context, args)
                        }
                        return this
                    }
                }));

                function fromPromise(promise, context) {
                    if ((0, _type.isDeferred)(promise)) {
                        return promise
                    } else if ((0, _type.isPromise)(promise)) {
                        const d = new DeferredObj;
                        promise.then((function() {
                            d.resolveWith.apply(d, [context].concat([
                                [].slice.call(arguments)
                            ]))
                        }), (function() {
                            d.rejectWith.apply(d, [context].concat([
                                [].slice.call(arguments)
                            ]))
                        }));
                        return d
                    }
                    return (new DeferredObj).resolveWith(context, [promise])
                }
                let whenFunc = function() {
                    if (1 === arguments.length) {
                        return fromPromise(arguments[0])
                    }
                    const values = [].slice.call(arguments);
                    const contexts = [];
                    let resolvedCount = 0;
                    const deferred = new DeferredObj;
                    const updateState = function(i) {
                        return function(value) {
                            contexts[i] = this;
                            values[i] = arguments.length > 1 ? [].slice.call(arguments) : value;
                            resolvedCount++;
                            if (resolvedCount === values.length) {
                                deferred.resolveWith(contexts, values)
                            }
                        }
                    };
                    for (let i = 0; i < values.length; i++) {
                        if ((0, _type.isDeferred)(values[i])) {
                            values[i].promise().done(updateState(i)).fail(deferred.reject)
                        } else {
                            resolvedCount++
                        }
                    }
                    if (resolvedCount === values.length) {
                        deferred.resolveWith(contexts, values)
                    }
                    return deferred.promise()
                }
            },
        20476:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/dependency_injector.js ***!
              \*******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = function(object) {
                    const BaseClass = _class.default.inherit(object);
                    let InjectedClass = BaseClass;
                    let instance = new InjectedClass(object);
                    const initialFields = {};
                    const injectFields = function(injectionObject, initial) {
                        (0, _iterator.each)(injectionObject, (function(key) {
                            if ((0, _type.isFunction)(instance[key])) {
                                if (initial || !object[key]) {
                                    object[key] = function() {
                                        return instance[key].apply(object, arguments)
                                    }
                                }
                            } else {
                                if (initial) {
                                    initialFields[key] = object[key]
                                }
                                object[key] = instance[key]
                            }
                        }))
                    };
                    injectFields(object, true);
                    object.inject = function(injectionObject) {
                        InjectedClass = InjectedClass.inherit(injectionObject);
                        instance = new InjectedClass;
                        injectFields(injectionObject)
                    };
                    object.resetInjection = function() {
                        (0, _extend.extend)(object, initialFields);
                        InjectedClass = BaseClass;
                        instance = new BaseClass
                    };
                    return object
                };
                var _extend = __webpack_require__( /*! ./extend */ 13306);
                var _type = __webpack_require__( /*! ./type */ 35922);
                var _iterator = __webpack_require__( /*! ./iterator */ 95479);
                var _class = (obj = __webpack_require__( /*! ../class */ 38377), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        3532:
            /*!***************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/dom.js ***!
              \***************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.resetActiveElement = exports.replaceWith = exports.normalizeTemplateElement = exports.isElementInDom = exports.insertBefore = exports.extractTemplateMarkup = exports.createTextElementHiddenCopy = exports.contains = exports.closestCommonParent = exports.clipboardText = exports.clearSelection = void 0;
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _iterator = __webpack_require__( /*! ./iterator */ 95479);
                var _type = __webpack_require__( /*! ./type */ 35922);
                var _window = __webpack_require__( /*! ./window */ 58201);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();
                exports.resetActiveElement = () => {
                    const activeElement = _dom_adapter.default.getActiveElement();
                    if (activeElement && activeElement !== _dom_adapter.default.getBody()) {
                        var _activeElement$blur;
                        null === (_activeElement$blur = activeElement.blur) || void 0 === _activeElement$blur ? void 0 : _activeElement$blur.call(activeElement)
                    }
                };
                exports.clearSelection = () => {
                    const selection = window.getSelection();
                    if (!selection) {
                        return
                    }
                    if ("Caret" === selection.type) {
                        return
                    }
                    if (selection.empty) {
                        selection.empty()
                    } else if (selection.removeAllRanges) {
                        try {
                            selection.removeAllRanges()
                        } catch (e) {}
                    }
                };
                exports.closestCommonParent = (startTarget, endTarget) => {
                    const $startTarget = (0, _renderer.default)(startTarget);
                    const $endTarget = (0, _renderer.default)(endTarget);
                    if ($startTarget[0] === $endTarget[0]) {
                        return $startTarget[0]
                    }
                    const $startParents = $startTarget.parents();
                    const $endParents = $endTarget.parents();
                    const startingParent = Math.min($startParents.length, $endParents.length);
                    for (let i = -startingParent; i < 0; i++) {
                        if ($startParents.get(i) === $endParents.get(i)) {
                            return $startParents.get(i)
                        }
                    }
                };
                exports.extractTemplateMarkup = element => {
                    element = (0, _renderer.default)(element);
                    const templateTag = element.length && element.filter((function() {
                        const $node = (0, _renderer.default)(this);
                        return $node.is("script[type]") && $node.attr("type").indexOf("script") < 0
                    }));
                    if (templateTag.length) {
                        return templateTag.eq(0).html()
                    } else {
                        element = (0, _renderer.default)("<div>").append(element);
                        return element.html()
                    }
                };
                const normalizeTemplateElement = element => {
                    let $element = (0, _type.isDefined)(element) && (element.nodeType || (0, _type.isRenderer)(element)) ? (0, _renderer.default)(element) : (0, _renderer.default)("<div>").html(element).contents();
                    if (1 === $element.length) {
                        if ($element.is("script")) {
                            $element = normalizeTemplateElement($element.html().trim())
                        } else if ($element.is("table")) {
                            $element = $element.children("tbody").contents()
                        }
                    }
                    return $element
                };
                exports.normalizeTemplateElement = normalizeTemplateElement;
                exports.clipboardText = (event, text) => {
                    const clipboard = event.originalEvent && event.originalEvent.clipboardData || window.clipboardData;
                    if (!text) {
                        return clipboard && clipboard.getData("Text")
                    }
                    clipboard && clipboard.setData("Text", text)
                };
                const contains = (container, element) => {
                    if (!element) {
                        return false
                    }
                    if ((0, _type.isWindow)(container)) {
                        return contains(container.document, element)
                    }
                    return container.contains(element) || contains(container, (element => {
                        if (!element.getRootNode) {
                            return
                        }
                        const host = element.getRootNode().host;
                        if ((0, _type.isString)(host)) {
                            return
                        }
                        return host
                    })(element))
                };
                exports.contains = contains;
                exports.createTextElementHiddenCopy = (element, text, options) => {
                    const elementStyles = window.getComputedStyle((0, _renderer.default)(element).get(0));
                    const includePaddings = options && options.includePaddings;
                    return (0, _renderer.default)("<div>").text(text).css({
                        fontStyle: elementStyles.fontStyle,
                        fontVariant: elementStyles.fontVariant,
                        fontWeight: elementStyles.fontWeight,
                        fontSize: elementStyles.fontSize,
                        fontFamily: elementStyles.fontFamily,
                        letterSpacing: elementStyles.letterSpacing,
                        border: elementStyles.border,
                        paddingTop: includePaddings ? elementStyles.paddingTop : "",
                        paddingRight: includePaddings ? elementStyles.paddingRight : "",
                        paddingBottom: includePaddings ? elementStyles.paddingBottom : "",
                        paddingLeft: includePaddings ? elementStyles.paddingLeft : "",
                        visibility: "hidden",
                        whiteSpace: "pre",
                        position: "absolute",
                        float: "left"
                    })
                };
                const insertBefore = (element, newElement) => {
                    if (newElement) {
                        _dom_adapter.default.insertElement(element.parentNode, newElement, element)
                    }
                    return element
                };
                exports.insertBefore = insertBefore;
                exports.replaceWith = (element, newElement) => {
                    if (!(newElement && newElement[0])) {
                        return
                    }
                    if (newElement.is(element)) {
                        return element
                    }(0, _iterator.each)(newElement, (_, currentElement) => {
                        insertBefore(element[0], currentElement)
                    });
                    element.remove();
                    return newElement
                };
                exports.isElementInDom = $element => {
                    const element = null === $element || void 0 === $element ? void 0 : $element.get(0);
                    const shadowHost = null === element || void 0 === element ? void 0 : element.getRootNode().host;
                    return !!(0, _renderer.default)(shadowHost || element).closest((0, _window.getWindow)().document).length
                }
            },
        95640:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/error.js ***!
              \*****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = function(baseErrors, errors) {
                    const exports = {
                        ERROR_MESSAGES: (0, _extend.extend)(errors, baseErrors),
                        Error: function() {
                            return makeError([].slice.call(arguments))
                        },
                        log: function(id) {
                            let method = "log";
                            if (/^E\d+$/.test(id)) {
                                method = "error"
                            } else if (/^W\d+$/.test(id)) {
                                method = "warn"
                            }
                            _console.logger[method]("log" === method ? id : combineMessage([].slice.call(arguments)))
                        }
                    };

                    function combineMessage(args) {
                        const id = args[0];
                        args = args.slice(1);
                        return formatMessage(id, formatDetails(id, args))
                    }

                    function formatDetails(id, args) {
                        args = [exports.ERROR_MESSAGES[id]].concat(args);
                        return _string.format.apply(this, args).replace(/\.*\s*?$/, "")
                    }

                    function formatMessage(id, details) {
                        const kind = null !== id && void 0 !== id && id.startsWith("W") ? "warning" : "error";
                        return _string.format.apply(this, ["{0} - {1}.\n\nFor additional information on this {2} message, see: {3}", id, details, kind, getErrorUrl(id)])
                    }

                    function makeError(args) {
                        const id = args[0];
                        args = args.slice(1);
                        const details = formatDetails(id, args);
                        const url = getErrorUrl(id);
                        const message = formatMessage(id, details);
                        return (0, _extend.extend)(new Error(message), {
                            __id: id,
                            __details: details,
                            url: url
                        })
                    }

                    function getErrorUrl(id) {
                        return ERROR_URL + id
                    }
                    return exports
                };
                var _extend = __webpack_require__( /*! ./extend */ 13306);
                var _console = __webpack_require__( /*! ./console */ 30869);
                var _string = __webpack_require__( /*! ./string */ 68752);
                var _version = __webpack_require__( /*! ../version */ 36739);
                const ERROR_URL = "https://js.devexpress.com/error/" + _version.version.split(".").slice(0, 2).join("_") + "/";
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        13306:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/extend.js ***!
              \******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.extendFromObject = exports.extend = void 0;
                var _type = __webpack_require__( /*! ./type */ 35922);
                exports.extendFromObject = function(target, source, overrideExistingValues) {
                    target = target || {};
                    for (const prop in source) {
                        if (Object.prototype.hasOwnProperty.call(source, prop)) {
                            const value = source[prop];
                            if (!(prop in target) || overrideExistingValues) {
                                target[prop] = value
                            }
                        }
                    }
                    return target
                };
                const extend = function(target) {
                    target = target || {};
                    let i = 1;
                    let deep = false;
                    if ("boolean" === typeof target) {
                        deep = target;
                        target = arguments[1] || {};
                        i++
                    }
                    for (; i < arguments.length; i++) {
                        const source = arguments[i];
                        if (null == source) {
                            continue
                        }
                        for (const key in source) {
                            const targetValue = target[key];
                            const sourceValue = source[key];
                            let sourceValueIsArray = false;
                            let clone;
                            if ("__proto__" === key || "constructor" === key || target === sourceValue) {
                                continue
                            }
                            if (deep && sourceValue && ((0, _type.isPlainObject)(sourceValue) || (sourceValueIsArray = Array.isArray(sourceValue)))) {
                                if (sourceValueIsArray) {
                                    clone = targetValue && Array.isArray(targetValue) ? targetValue : []
                                } else {
                                    clone = targetValue && (0, _type.isPlainObject)(targetValue) ? targetValue : {}
                                }
                                target[key] = extend(deep, clone, sourceValue)
                            } else if (void 0 !== sourceValue) {
                                target[key] = sourceValue
                            }
                        }
                    }
                    return target
                };
                exports.extend = extend
            },
        61371:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/html_parser.js ***!
              \***********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.parseHTML = exports.isTablePart = void 0;
                var _dom_adapter = (obj = __webpack_require__( /*! ../dom_adapter */ 73349), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const isTagName = /<([a-z][^/\0>\x20\t\r\n\f]+)/i;
                const tagWrappers = {
                    default: {
                        tagsCount: 0,
                        startTags: "",
                        endTags: ""
                    },
                    thead: {
                        tagsCount: 1,
                        startTags: "<table>",
                        endTags: "</table>"
                    },
                    td: {
                        tagsCount: 3,
                        startTags: "<table><tbody><tr>",
                        endTags: "</tr></tbody></table>"
                    },
                    col: {
                        tagsCount: 2,
                        startTags: "<table><colgroup>",
                        endTags: "</colgroup></table>"
                    },
                    tr: {
                        tagsCount: 2,
                        startTags: "<table><tbody>",
                        endTags: "</tbody></table>"
                    }
                };
                tagWrappers.tbody = tagWrappers.colgroup = tagWrappers.caption = tagWrappers.tfoot = tagWrappers.thead;
                tagWrappers.th = tagWrappers.td;
                exports.parseHTML = function(html) {
                    if ("string" !== typeof html) {
                        return null
                    }
                    const fragment = _dom_adapter.default.createDocumentFragment();
                    let container = fragment.appendChild(_dom_adapter.default.createElement("div"));
                    const tags = isTagName.exec(html);
                    const firstRootTag = tags && tags[1].toLowerCase();
                    const tagWrapper = tagWrappers[firstRootTag] || tagWrappers.default;
                    container.innerHTML = tagWrapper.startTags + html + tagWrapper.endTags;
                    for (let i = 0; i < tagWrapper.tagsCount; i++) {
                        container = container.lastChild
                    }
                    return [...container.childNodes]
                };
                exports.isTablePart = function(html) {
                    const tags = isTagName.exec(html);
                    return tags && tags[1] in tagWrappers
                }
            },
        44899:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/icon.js ***!
              \****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getImageSourceType = exports.getImageContainer = void 0;
                var _renderer = (obj = __webpack_require__( /*! ../../core/renderer */ 68374), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const getImageSourceType = source => {
                    if (!source || "string" !== typeof source) {
                        return false
                    }
                    if (/^\s*<svg[^>]*>(.|\r?\n)*?<\/svg>\s*$/i.test(source)) {
                        return "svg"
                    }
                    if (/data:.*base64|\.|[^<\s]\/{1,1}/.test(source)) {
                        return "image"
                    }
                    if (/^[\w-_]+$/.test(source)) {
                        return "dxIcon"
                    }
                    if (/^\s?([\w-_:]\s?)+$/.test(source)) {
                        return "fontIcon"
                    }
                    return false
                };
                exports.getImageSourceType = getImageSourceType;
                exports.getImageContainer = source => {
                    switch (getImageSourceType(source)) {
                        case "image":
                            return (0, _renderer.default)("<img>").attr("src", source).addClass("dx-icon");
                        case "fontIcon":
                            return (0, _renderer.default)("<i>").addClass("".concat("dx-icon", " ").concat(source));
                        case "dxIcon":
                            return (0, _renderer.default)("<i>").addClass("".concat("dx-icon", " ").concat("dx-icon", "-").concat(source));
                        case "svg":
                            return (0, _renderer.default)("<i>").addClass("".concat("dx-icon", " ").concat("dx-svg-icon")).append(source);
                        default:
                            return null
                    }
                }
            },
        78008:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/inflector.js ***!
              \*********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.underscore = exports.titleize = exports.humanize = exports.dasherize = exports.captionize = exports.camelize = void 0;
                var _iterator = __webpack_require__( /*! ./iterator */ 95479);
                const _normalize = function(text) {
                    if (void 0 === text || null === text) {
                        return ""
                    }
                    return String(text)
                };
                const _upperCaseFirst = function(text) {
                    return _normalize(text).charAt(0).toUpperCase() + text.substr(1)
                };
                const _chop = function(text) {
                    return _normalize(text).replace(/([a-z\d])([A-Z])/g, "$1 $2").split(/[\s_-]+/)
                };
                const dasherize = function(text) {
                    return (0, _iterator.map)(_chop(text), (function(p) {
                        return p.toLowerCase()
                    })).join("-")
                };
                exports.dasherize = dasherize;
                exports.underscore = function(text) {
                    return dasherize(text).replace(/-/g, "_")
                };
                exports.camelize = function(text, upperFirst) {
                    return (0, _iterator.map)(_chop(text), (function(p, i) {
                        p = p.toLowerCase();
                        if (upperFirst || i > 0) {
                            p = _upperCaseFirst(p)
                        }
                        return p
                    })).join("")
                };
                exports.humanize = function(text) {
                    return _upperCaseFirst(dasherize(text).replace(/-/g, " "))
                };
                exports.titleize = function(text) {
                    return (0, _iterator.map)(_chop(text), (function(p) {
                        return _upperCaseFirst(p.toLowerCase())
                    })).join(" ")
                };
                const DIGIT_CHARS = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
                exports.captionize = function(name) {
                    const captionList = [];
                    let i;
                    let char;
                    let isPrevCharNewWord = false;
                    let isNewWord = false;
                    for (i = 0; i < name.length; i++) {
                        char = name.charAt(i);
                        isNewWord = char === char.toUpperCase() && "-" !== char && ")" !== char && "/" !== char || char in DIGIT_CHARS;
                        if ("_" === char || "." === char) {
                            char = " ";
                            isNewWord = true
                        } else if (0 === i) {
                            char = char.toUpperCase();
                            isNewWord = true
                        } else if (!isPrevCharNewWord && isNewWord) {
                            if (captionList.length > 0) {
                                captionList.push(" ")
                            }
                        }
                        captionList.push(char);
                        isPrevCharNewWord = isNewWord
                    }
                    return captionList.join("")
                }
            },
        95479:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/iterator.js ***!
              \********************************************************************/
            function(__unused_webpack_module, exports) {
                exports.reverseEach = exports.map = exports.each = void 0;
                exports.map = (values, callback) => {
                    if (Array.isArray(values)) {
                        return values.map(callback)
                    }
                    const result = [];
                    for (const key in values) {
                        result.push(callback(values[key], key))
                    }
                    return result
                };
                exports.each = (values, callback) => {
                    if (!values) {
                        return
                    }
                    if ("length" in values) {
                        for (let i = 0; i < values.length; i++) {
                            if (false === callback.call(values[i], i, values[i])) {
                                break
                            }
                        }
                    } else {
                        for (const key in values) {
                            if (false === callback.call(values[key], key, values[key])) {
                                break
                            }
                        }
                    }
                    return values
                };
                exports.reverseEach = (array, callback) => {
                    if (!array || !("length" in array) || 0 === array.length) {
                        return
                    }
                    for (let i = array.length - 1; i >= 0; i--) {
                        if (false === callback.call(array[i], i, array[i])) {
                            break
                        }
                    }
                }
            },
        88933:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/locker.js ***!
              \******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _errors = (obj = __webpack_require__( /*! ../errors */ 17381), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = function() {
                    const info = {};
                    const currentCount = function(lockName) {
                        return info[lockName] || 0
                    };
                    return {
                        obtain: function(lockName) {
                            info[lockName] = currentCount(lockName) + 1
                        },
                        release: function(lockName) {
                            const count = currentCount(lockName);
                            if (count < 1) {
                                throw _errors.default.Error("E0014")
                            }
                            if (1 === count) {
                                delete info[lockName]
                            } else {
                                info[lockName] = count - 1
                            }
                        },
                        locked: function(lockName) {
                            return currentCount(lockName) > 0
                        }
                    }
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        60810:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/math.js ***!
              \****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.adjust = function(value, interval) {
                    let precision = getPrecision(interval || 0) + 2;
                    const separatedValue = value.toString().split(".");
                    const sourceValue = value;
                    const absValue = Math.abs(value);
                    let separatedAdjustedValue;
                    const isExponentValue = (0, _type.isExponential)(value);
                    const integerPart = absValue > 1 ? 10 : 0;
                    if (1 === separatedValue.length) {
                        return value
                    }
                    if (!isExponentValue) {
                        if ((0, _type.isExponential)(interval)) {
                            precision = separatedValue[0].length + getExponent(interval)
                        }
                        value = absValue;
                        value = value - Math.floor(value) + integerPart
                    }
                    precision = "0.000300" !== 3e-4.toPrecision(3) && getExponent(value) > 6 || precision > 7 ? 15 : 7;
                    if (!isExponentValue) {
                        separatedAdjustedValue = parseFloat(value.toPrecision(precision)).toString().split(".");
                        if (separatedAdjustedValue[0] === integerPart.toString()) {
                            return parseFloat(separatedValue[0] + "." + separatedAdjustedValue[1])
                        }
                    }
                    return parseFloat(sourceValue.toPrecision(precision))
                };
                exports.fitIntoRange = void 0;
                exports.getExponent = getExponent;
                exports.getExponentLength = function(value) {
                    var _valueString$split$;
                    const valueString = value.toString();
                    return (null === (_valueString$split$ = valueString.split(".")[1]) || void 0 === _valueString$split$ ? void 0 : _valueString$split$.length) || parseInt(valueString.split("e-")[1]) || 0
                };
                exports.getPrecision = getPrecision;
                exports.getRemainderByDivision = function(dividend, divider, digitsCount) {
                    if (divider === parseInt(divider)) {
                        return dividend % divider
                    }
                    const quotient = roundFloatPart(dividend / divider, digitsCount);
                    return (quotient - parseInt(quotient)) * divider
                };
                exports.getRoot = getRoot;
                exports.inRange = void 0;
                exports.multiplyInExponentialForm = function(value, exponentShift) {
                    const exponentialNotation = function(value) {
                        const parts = value.toExponential().split("e");
                        const mantissa = parseFloat(parts[0]);
                        const exponent = parseInt(parts[1]);
                        return {
                            exponent: exponent,
                            mantissa: mantissa
                        }
                    }(value);
                    return parseFloat("".concat(exponentialNotation.mantissa, "e").concat(exponentialNotation.exponent + exponentShift))
                };
                exports.roundFloatPart = roundFloatPart;
                exports.sign = void 0;
                exports.solveCubicEquation = function(a, b, c, d) {
                    if (Math.abs(a) < 1e-8) {
                        a = b;
                        b = c;
                        c = d;
                        if (Math.abs(a) < 1e-8) {
                            a = b;
                            b = c;
                            if (Math.abs(a) < 1e-8) {
                                return []
                            }
                            return [-b / a]
                        }
                        const D2 = b * b - 4 * a * c;
                        if (Math.abs(D2) < 1e-8) {
                            return [-b / (2 * a)]
                        } else if (D2 > 0) {
                            return [(-b + Math.sqrt(D2)) / (2 * a), (-b - Math.sqrt(D2)) / (2 * a)]
                        }
                        return []
                    }
                    const p = (3 * a * c - b * b) / (3 * a * a);
                    const q = (2 * b * b * b - 9 * a * b * c + 27 * a * a * d) / (27 * a * a * a);
                    let roots;
                    let u;
                    if (Math.abs(p) < 1e-8) {
                        roots = [getRoot(-q, 3)]
                    } else if (Math.abs(q) < 1e-8) {
                        roots = [0].concat(p < 0 ? [Math.sqrt(-p), -Math.sqrt(-p)] : [])
                    } else {
                        const D3 = q * q / 4 + p * p * p / 27;
                        if (Math.abs(D3) < 1e-8) {
                            roots = [-1.5 * q / p, 3 * q / p]
                        } else if (D3 > 0) {
                            u = getRoot(-q / 2 - Math.sqrt(D3), 3);
                            roots = [u - p / (3 * u)]
                        } else {
                            u = 2 * Math.sqrt(-p / 3);
                            const t = Math.acos(3 * q / p / u) / 3;
                            const k = 2 * Math.PI / 3;
                            roots = [u * Math.cos(t), u * Math.cos(t - k), u * Math.cos(t - 2 * k)]
                        }
                    }
                    for (let i = 0; i < roots.length; i++) {
                        roots[i] -= b / (3 * a)
                    }
                    return roots
                };
                exports.trunc = function(value) {
                    return Math.trunc ? Math.trunc(value) : value > 0 ? Math.floor(value) : Math.ceil(value)
                };
                var _type = __webpack_require__( /*! ./type */ 35922);
                exports.sign = function(value) {
                    if (0 === value) {
                        return 0
                    }
                    return value / Math.abs(value)
                };
                exports.fitIntoRange = function(value, minValue, maxValue) {
                    const isMinValueUndefined = !minValue && 0 !== minValue;
                    const isMaxValueUndefined = !maxValue && 0 !== maxValue;
                    isMinValueUndefined && (minValue = !isMaxValueUndefined ? Math.min(value, maxValue) : value);
                    isMaxValueUndefined && (maxValue = !isMinValueUndefined ? Math.max(value, minValue) : value);
                    return Math.min(Math.max(value, minValue), maxValue)
                };
                exports.inRange = function(value, minValue, maxValue) {
                    return value >= minValue && value <= maxValue
                };

                function getExponent(value) {
                    return Math.abs(parseInt(value.toExponential().split("e")[1]))
                }

                function getPrecision(value) {
                    const str = value.toString();
                    if (str.indexOf(".") < 0) {
                        return 0
                    }
                    const mantissa = str.split(".");
                    const positionOfDelimiter = mantissa[1].indexOf("e");
                    return positionOfDelimiter >= 0 ? positionOfDelimiter : mantissa[1].length
                }

                function getRoot(x, n) {
                    if (x < 0 && n % 2 !== 1) {
                        return NaN
                    }
                    const y = Math.pow(Math.abs(x), 1 / n);
                    return n % 2 === 1 && x < 0 ? -y : y
                }

                function roundFloatPart(value) {
                    let digitsCount = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;
                    return parseFloat(value.toFixed(digitsCount))
                }
            },
        48013:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/object.js ***!
              \******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.orderEach = exports.deepExtendArraySafe = exports.clone = void 0;
                var _type = __webpack_require__( /*! ./type */ 35922);
                var _variable_wrapper = (obj = __webpack_require__( /*! ./variable_wrapper */ 26974), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const clone = function() {
                    function Clone() {}
                    return function(obj) {
                        Clone.prototype = obj;
                        return new Clone
                    }
                }();
                exports.clone = clone;
                exports.orderEach = function(map, func) {
                    const keys = [];
                    let key;
                    let i;
                    for (key in map) {
                        if (Object.prototype.hasOwnProperty.call(map, key)) {
                            keys.push(key)
                        }
                    }
                    keys.sort((function(x, y) {
                        const isNumberX = (0, _type.isNumeric)(x);
                        const isNumberY = (0, _type.isNumeric)(y);
                        if (isNumberX && isNumberY) {
                            return x - y
                        }
                        if (isNumberX && !isNumberY) {
                            return -1
                        }
                        if (!isNumberX && isNumberY) {
                            return 1
                        }
                        if (x < y) {
                            return -1
                        }
                        if (x > y) {
                            return 1
                        }
                        return 0
                    }));
                    for (i = 0; i < keys.length; i++) {
                        key = keys[i];
                        func(key, map[key])
                    }
                };
                const assignValueToProperty = function(target, property, value, assignByReference) {
                    if (!assignByReference && _variable_wrapper.default.isWrapped(target[property])) {
                        _variable_wrapper.default.assign(target[property], value)
                    } else {
                        target[property] = value
                    }
                };
                const deepExtendArraySafe = function(target, changes, extendComplexObject, assignByReference) {
                    let prevValue;
                    let newValue;
                    for (const name in changes) {
                        prevValue = target[name];
                        newValue = changes[name];
                        if ("__proto__" === name || "constructor" === name || target === newValue) {
                            continue
                        }
                        if ((0, _type.isPlainObject)(newValue)) {
                            const goDeeper = extendComplexObject ? (0, _type.isObject)(prevValue) : (0, _type.isPlainObject)(prevValue);
                            newValue = deepExtendArraySafe(goDeeper ? prevValue : {}, newValue, extendComplexObject, assignByReference)
                        }
                        if (void 0 !== newValue && prevValue !== newValue) {
                            assignValueToProperty(target, name, newValue, assignByReference)
                        }
                    }
                    return target
                };
                exports.deepExtendArraySafe = deepExtendArraySafe
            },
        37518:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/position.js ***!
              \********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getDefaultAlignment = exports.getBoundingRect = void 0;
                var _config = (obj = __webpack_require__( /*! ../config */ 80209), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _type = __webpack_require__( /*! ../utils/type */ 35922);
                exports.getDefaultAlignment = isRtlEnabled => {
                    const rtlEnabled = null !== isRtlEnabled && void 0 !== isRtlEnabled ? isRtlEnabled : (0, _config.default)().rtlEnabled;
                    return rtlEnabled ? "right" : "left"
                };
                exports.getBoundingRect = element => {
                    if ((0, _type.isWindow)(element)) {
                        return {
                            width: element.outerWidth,
                            height: element.outerHeight
                        }
                    }
                    return element.getBoundingClientRect()
                }
            },
        9321:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/public_component.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.attachInstanceToElement = function($element, componentInstance, disposeFn) {
                    const data = (0, _element_data.data)($element.get(0));
                    const name = getName(componentInstance.constructor);
                    data[name] = componentInstance;
                    if (disposeFn) {
                        _events_engine.default.one($element, _remove.removeEvent, (function() {
                            disposeFn.call(componentInstance)
                        }))
                    }
                    if (!data.dxComponents) {
                        data.dxComponents = []
                    }
                    data.dxComponents.push(name)
                };
                exports.getInstanceByElement = function($element, componentClass) {
                    const name = getName(componentClass);
                    return (0, _element_data.data)($element.get(0), name)
                };
                exports.name = void 0;
                var _element_data = __webpack_require__( /*! ../../core/element_data */ 97906);
                var _events_engine = (obj = __webpack_require__( /*! ../../events/core/events_engine */ 55994), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _type = __webpack_require__( /*! ./type */ 35922);
                var _remove = __webpack_require__( /*! ../../events/remove */ 29007);
                const componentNames = new WeakMap;
                let nextAnonymousComponent = 0;
                const getName = function(componentClass, newName) {
                    if ((0, _type.isDefined)(newName)) {
                        componentNames.set(componentClass, newName);
                        return
                    }
                    if (!componentNames.has(componentClass)) {
                        const generatedName = "dxPrivateComponent" + nextAnonymousComponent++;
                        componentNames.set(componentClass, generatedName);
                        return generatedName
                    }
                    return componentNames.get(componentClass)
                };
                exports.name = getName
            },
        59504:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/queue.js ***!
              \*****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.create = createQueue;
                exports.enqueue = void 0;
                var _errors = (obj = __webpack_require__( /*! ../errors */ 17381), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);

                function createQueue(discardPendingTasks) {
                    let _tasks = [];
                    let _busy = false;

                    function exec() {
                        while (_tasks.length) {
                            _busy = true;
                            const task = _tasks.shift();
                            const result = task();
                            if (void 0 === result) {
                                continue
                            }
                            if (result.then) {
                                (0, _deferred.when)(result).always(exec);
                                return
                            }
                            throw _errors.default.Error("E0015")
                        }
                        _busy = false
                    }
                    return {
                        add: function(task, removeTaskCallback) {
                            if (!discardPendingTasks) {
                                _tasks.push(task)
                            } else {
                                if (_tasks[0] && removeTaskCallback) {
                                    removeTaskCallback(_tasks[0])
                                }
                                _tasks = [task]
                            }
                            if (!_busy) {
                                exec()
                            }
                        },
                        busy: function() {
                            return _busy
                        }
                    }
                }
                const enqueue = createQueue().add;
                exports.enqueue = enqueue
            },
        24311:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/ready_callbacks.js ***!
              \***************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../dom_adapter */ 73349));
                var _dependency_injector = _interopRequireDefault(__webpack_require__( /*! ./dependency_injector */ 20476));
                var _window = __webpack_require__( /*! ./window */ 58201);
                var _call_once = _interopRequireDefault(__webpack_require__( /*! ./call_once */ 39618));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                let callbacks = [];
                const subscribeReady = (0, _call_once.default)(() => {
                    const removeListener = _dom_adapter.default.listen(_dom_adapter.default.getDocument(), "DOMContentLoaded", () => {
                        readyCallbacks.fire();
                        removeListener()
                    })
                });
                const readyCallbacks = {
                    add: callback => {
                        const windowExists = (0, _window.hasWindow)();
                        if (windowExists && "loading" !== _dom_adapter.default.getReadyState()) {
                            callback()
                        } else {
                            callbacks.push(callback);
                            windowExists && subscribeReady()
                        }
                    },
                    fire: () => {
                        callbacks.forEach(callback => callback());
                        callbacks = []
                    }
                };
                var _default = (0, _dependency_injector.default)(readyCallbacks);
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        55814:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/resize_callbacks.js ***!
              \****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _window = __webpack_require__( /*! ./window */ 58201);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../dom_adapter */ 73349));
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ./callbacks */ 44504));
                var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ./ready_callbacks */ 24311));
                var _call_once = _interopRequireDefault(__webpack_require__( /*! ./call_once */ 39618));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const resizeCallbacks = function() {
                    let prevSize;
                    const callbacks = (0, _callbacks.default)();
                    const originalCallbacksAdd = callbacks.add;
                    const originalCallbacksRemove = callbacks.remove;
                    if (!(0, _window.hasWindow)()) {
                        return callbacks
                    }
                    const formatSize = function() {
                        const window = (0, _window.getWindow)();
                        return {
                            width: window.innerWidth,
                            height: window.innerHeight
                        }
                    };
                    const handleResize = function() {
                        const now = formatSize();
                        if (now.width === prevSize.width && now.height === prevSize.height) {
                            return
                        }
                        let changedDimension;
                        if (now.width === prevSize.width) {
                            changedDimension = "height"
                        }
                        if (now.height === prevSize.height) {
                            changedDimension = "width"
                        }
                        prevSize = now;
                        callbacks.fire(changedDimension)
                    };
                    const setPrevSize = (0, _call_once.default)((function() {
                        prevSize = formatSize()
                    }));
                    let removeListener;
                    callbacks.add = function() {
                        const result = originalCallbacksAdd.apply(callbacks, arguments);
                        setPrevSize();
                        _ready_callbacks.default.add((function() {
                            if (!removeListener && callbacks.has()) {
                                removeListener = _dom_adapter.default.listen((0, _window.getWindow)(), "resize", handleResize)
                            }
                        }));
                        return result
                    };
                    callbacks.remove = function() {
                        const result = originalCallbacksRemove.apply(callbacks, arguments);
                        if (!callbacks.has() && removeListener) {
                            removeListener();
                            removeListener = void 0
                        }
                        return result
                    };
                    return callbacks
                }();
                var _default = resizeCallbacks;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        49601:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/selection_filter.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.SelectionFilterCreator = void 0;
                var _common = __webpack_require__( /*! ./common */ 20576);
                var _type = __webpack_require__( /*! ./type */ 35922);
                exports.SelectionFilterCreator = function(selectedItemKeys, isSelectAll) {
                    this.getLocalFilter = function(keyGetter, equalKeys, equalByReference, keyExpr) {
                        equalKeys = void 0 === equalKeys ? _common.equalByValue : equalKeys;
                        return functionFilter.bind(this, equalKeys, keyGetter, equalByReference, keyExpr)
                    };
                    this.getExpr = function(keyExpr) {
                        if (!keyExpr) {
                            return
                        }
                        let filterExpr;
                        selectedItemKeys.forEach((function(key, index) {
                            filterExpr = filterExpr || [];
                            let filterExprPart;
                            if (index > 0) {
                                filterExpr.push(isSelectAll ? "and" : "or")
                            }
                            if ((0, _type.isString)(keyExpr)) {
                                filterExprPart = getFilterForPlainKey(keyExpr, key)
                            } else {
                                filterExprPart = function(keyExpr, itemKeyValue) {
                                    const filterExpr = [];
                                    for (let i = 0, length = keyExpr.length; i < length; i++) {
                                        const currentKeyExpr = keyExpr[i];
                                        const currentKeyValue = itemKeyValue && itemKeyValue[currentKeyExpr];
                                        const filterExprPart = getFilterForPlainKey(currentKeyExpr, currentKeyValue);
                                        if (!filterExprPart) {
                                            break
                                        }
                                        if (i > 0) {
                                            filterExpr.push(isSelectAll ? "or" : "and")
                                        }
                                        filterExpr.push(filterExprPart)
                                    }
                                    return filterExpr
                                }(keyExpr, key)
                            }
                            filterExpr.push(filterExprPart)
                        }));
                        if (filterExpr && 1 === filterExpr.length) {
                            filterExpr = filterExpr[0]
                        }
                        return filterExpr
                    };
                    this.getCombinedFilter = function(keyExpr, dataSourceFilter) {
                        let forceCombinedFilter = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;
                        const filterExpr = this.getExpr(keyExpr);
                        let combinedFilter = filterExpr;
                        if ((forceCombinedFilter || isSelectAll) && dataSourceFilter) {
                            if (filterExpr) {
                                combinedFilter = [];
                                combinedFilter.push(filterExpr);
                                combinedFilter.push(dataSourceFilter)
                            } else {
                                combinedFilter = dataSourceFilter
                            }
                        }
                        return combinedFilter
                    };
                    let selectedItemKeyHashesMap;
                    const normalizeKeys = function(keys, keyOf, keyExpr) {
                        return Array.isArray(keyExpr) ? keys.map(key => keyOf(key)) : keys
                    };

                    function functionFilter(equalKeys, keyOf, equalByReference, keyExpr, item) {
                        const key = keyOf(item);
                        let keyHash;
                        let i;
                        if (!equalByReference) {
                            keyHash = (0, _common.getKeyHash)(key);
                            if (!(0, _type.isObject)(keyHash)) {
                                const selectedKeyHashesMap = function(keyOf, keyExpr) {
                                    if (!selectedItemKeyHashesMap) {
                                        selectedItemKeyHashesMap = {};
                                        const normalizedKeys = normalizeKeys(selectedItemKeys, keyOf, keyExpr);
                                        for (let i = 0; i < normalizedKeys.length; i++) {
                                            selectedItemKeyHashesMap[(0, _common.getKeyHash)(normalizedKeys[i])] = true
                                        }
                                    }
                                    return selectedItemKeyHashesMap
                                }(keyOf, keyExpr);
                                if (selectedKeyHashesMap[keyHash]) {
                                    return !isSelectAll
                                }
                                return !!isSelectAll
                            }
                        }
                        for (i = 0; i < selectedItemKeys.length; i++) {
                            if (equalKeys(selectedItemKeys[i], key)) {
                                return !isSelectAll
                            }
                        }
                        return !!isSelectAll
                    }

                    function getFilterForPlainKey(keyExpr, keyValue) {
                        if (void 0 === keyValue) {
                            return
                        }
                        return [keyExpr, isSelectAll ? "<>" : "=", keyValue]
                    }
                }
            },
        90330:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/shadow_dom.js ***!
              \**********************************************************************/
            function(__unused_webpack_module, exports) {
                exports.addShadowDomStyles = function($element) {
                    var _el$getRootNode;
                    const el = $element.get(0);
                    const root = null === (_el$getRootNode = el.getRootNode) || void 0 === _el$getRootNode ? void 0 : _el$getRootNode.call(el);
                    if (!(null !== root && void 0 !== root && root.host)) {
                        return
                    }
                    if (!ownerDocumentStyleSheet) {
                        ownerDocumentStyleSheet = createConstructedStyleSheet(root);
                        processRules(ownerDocumentStyleSheet, el.ownerDocument.styleSheets, false)
                    }
                    const currentShadowDomStyleSheet = createConstructedStyleSheet(root);
                    processRules(currentShadowDomStyleSheet, root.styleSheets, true);
                    root.adoptedStyleSheets = [ownerDocumentStyleSheet, currentShadowDomStyleSheet]
                };
                exports.getShadowElementsFromPoint = function(x, y, root) {
                    const elementQueue = function() {
                        let shiftIndex = 0;
                        const items = [];
                        return Object.defineProperties({
                            push(item) {
                                items.push(item);
                                return this
                            },
                            shift() {
                                shiftIndex++;
                                return items[shiftIndex - 1]
                            }
                        }, {
                            length: {
                                get: function() {
                                    return items.length - shiftIndex
                                },
                                configurable: true,
                                enumerable: true
                            },
                            items: {
                                get: function() {
                                    return items
                                },
                                configurable: true,
                                enumerable: true
                            }
                        })
                    }().push(root);
                    while (elementQueue.length) {
                        const el = elementQueue.shift();
                        for (let i = 0; i < el.childNodes.length; i++) {
                            const childNode = el.childNodes[i];
                            if (childNode.nodeType === Node.ELEMENT_NODE && isPositionInElementRectangle(childNode, x, y) && "none" !== getComputedStyle(childNode).pointerEvents) {
                                elementQueue.push(childNode)
                            }
                        }
                    }
                    const result = elementQueue.items.reverse();
                    result.pop();
                    return result
                };
                let ownerDocumentStyleSheet = null;

                function createConstructedStyleSheet(rootNode) {
                    try {
                        return new CSSStyleSheet
                    } catch (err) {
                        const styleElement = rootNode.ownerDocument.createElement("style");
                        rootNode.appendChild(styleElement);
                        return styleElement.sheet
                    }
                }

                function processRules(targetStyleSheet, styleSheets, needApplyAllStyles) {
                    for (let i = 0; i < styleSheets.length; i++) {
                        const sheet = styleSheets[i];
                        try {
                            for (let j = 0; j < sheet.cssRules.length; j++) {
                                insertRule(targetStyleSheet, sheet.cssRules[j], needApplyAllStyles)
                            }
                        } catch (err) {}
                    }
                }

                function insertRule(targetStyleSheet, rule, needApplyAllStyles) {
                    var _rule$selectorText, _rule$cssRules, _rule$cssRules$, _rule$cssRules$$selec, _rule$name, _rule$style;
                    const isDxRule = needApplyAllStyles || (null === (_rule$selectorText = rule.selectorText) || void 0 === _rule$selectorText ? void 0 : _rule$selectorText.includes("dx-")) || (null === (_rule$cssRules = rule.cssRules) || void 0 === _rule$cssRules ? void 0 : null === (_rule$cssRules$ = _rule$cssRules[0]) || void 0 === _rule$cssRules$ ? void 0 : null === (_rule$cssRules$$selec = _rule$cssRules$.selectorText) || void 0 === _rule$cssRules$$selec ? void 0 : _rule$cssRules$$selec.includes("dx-")) || (null === (_rule$name = rule.name) || void 0 === _rule$name ? void 0 : _rule$name.startsWith("dx-")) || "DXIcons" === (null === (_rule$style = rule.style) || void 0 === _rule$style ? void 0 : _rule$style.fontFamily);
                    if (isDxRule) {
                        targetStyleSheet.insertRule(rule.cssText, targetStyleSheet.cssRules.length)
                    }
                }

                function isPositionInElementRectangle(element, x, y) {
                    const rect = element.getBoundingClientRect();
                    return rect && x >= rect.left && x < rect.right && y >= rect.top && y < rect.bottom
                }
            },
        58664:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/size.js ***!
              \****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.setWidth = exports.setOuterWidth = exports.setOuterHeight = exports.setInnerWidth = exports.setInnerHeight = exports.setHeight = exports.parseHeight = exports.implementationsMap = exports.getWindowByElement = exports.getWidth = exports.getVisibleHeight = exports.getVerticalOffsets = exports.getSize = exports.getOuterWidth = exports.getOuterHeight = exports.getOffset = exports.getInnerWidth = exports.getInnerHeight = exports.getHeight = exports.getElementBoxParams = exports.addOffsetToMinHeight = exports.addOffsetToMaxHeight = void 0;
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _dom_adapter = (obj = __webpack_require__( /*! ../../core/dom_adapter */ 73349), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _type = __webpack_require__( /*! ../utils/type */ 35922);
                const window = (0, _window.getWindow)();
                const SPECIAL_HEIGHT_VALUES = ["auto", "none", "inherit", "initial"];
                const getSizeByStyles = function(elementStyles, styles) {
                    let result = 0;
                    styles.forEach((function(style) {
                        result += parseFloat(elementStyles[style]) || 0
                    }));
                    return result
                };
                const getElementBoxParams = function(name, elementStyles) {
                    const beforeName = "width" === name ? "Left" : "Top";
                    const afterName = "width" === name ? "Right" : "Bottom";
                    return {
                        padding: getSizeByStyles(elementStyles, ["padding" + beforeName, "padding" + afterName]),
                        border: getSizeByStyles(elementStyles, ["border" + beforeName + "Width", "border" + afterName + "Width"]),
                        margin: getSizeByStyles(elementStyles, ["margin" + beforeName, "margin" + afterName])
                    }
                };
                exports.getElementBoxParams = getElementBoxParams;
                const getElementComputedStyle = function(element) {
                    var _element$ownerDocumen;
                    const view = (null === element || void 0 === element ? void 0 : null === (_element$ownerDocumen = element.ownerDocument) || void 0 === _element$ownerDocumen ? void 0 : _element$ownerDocumen.defaultView) || window;
                    return view.getComputedStyle && view.getComputedStyle(element)
                };
                const getCSSProperty = function(element, styles, name, defaultValue) {
                    var _element$style;
                    return (null === styles || void 0 === styles ? void 0 : styles[name]) || (null === (_element$style = element.style) || void 0 === _element$style ? void 0 : _element$style[name]) || defaultValue
                };
                const boxIndices = {
                    content: 0,
                    padding: 1,
                    border: 2,
                    margin: 3,
                    "content-box": 0,
                    "border-box": 2
                };
                const dimensionComponents = {
                    width: ["left", "right"],
                    height: ["top", "bottom"]
                };

                function getComponentThickness(elem, dimension, component, styles) {
                    const get = (elem, styles, field) => parseFloat(getCSSProperty(elem, styles, field, "0")) || 0;
                    const suffix = "border" === component ? "-width" : "";
                    return get(elem, styles, "".concat(component, "-").concat(dimensionComponents[dimension][0]).concat(suffix)) + get(elem, styles, "".concat(component, "-").concat(dimensionComponents[dimension][1]).concat(suffix))
                }
                const getSize = function(element, dimension, box) {
                    const offsetFieldName = "width" === dimension ? "offsetWidth" : "offsetHeight";
                    const styles = getElementComputedStyle(element);
                    let result = getCSSProperty(element, styles, dimension);
                    if ("" === result || "auto" === result) {
                        result = element[offsetFieldName]
                    }
                    result = parseFloat(result) || 0;
                    const currentBox = getCSSProperty(element, styles, "boxSizing", "content-box");
                    const targetBox = box || currentBox;
                    let targetBoxIndex = boxIndices[targetBox];
                    let currentBoxIndex = boxIndices[currentBox];
                    if (void 0 === targetBoxIndex || void 0 === currentBoxIndex) {
                        throw new Error
                    }
                    if (currentBoxIndex === targetBoxIndex) {
                        return result
                    }
                    const coeff = Math.sign(targetBoxIndex - currentBoxIndex);
                    let padding = false;
                    let border = false;
                    let margin = false;
                    let scrollThickness = false;
                    if (1 === coeff) {
                        targetBoxIndex += 1;
                        currentBoxIndex += 1
                    }
                    for (let boxPart = currentBoxIndex; boxPart !== targetBoxIndex; boxPart += coeff) {
                        switch (boxPart) {
                            case boxIndices.content:
                                break;
                            case boxIndices.padding:
                                padding = coeff * getComponentThickness(element, dimension, "padding", styles);
                                break;
                            case boxIndices.border:
                                border = coeff * getComponentThickness(element, dimension, "border", styles);
                                break;
                            case boxIndices.margin:
                                margin = coeff * getComponentThickness(element, dimension, "margin", styles)
                        }
                    }
                    if (padding || border) {
                        const paddingAndBorder = (false === padding ? coeff * getComponentThickness(element, dimension, "padding", styles) : padding) + (false === border ? coeff * getComponentThickness(element, dimension, "border", styles) : border);
                        scrollThickness = coeff * Math.max(0, Math.floor(element[offsetFieldName] - result - coeff * paddingAndBorder)) || 0
                    }
                    return result + margin + padding + border + scrollThickness
                };
                exports.getSize = getSize;
                const parseHeight = function(value, container, element) {
                    if (value.indexOf("px") > 0) {
                        value = parseInt(value.replace("px", ""))
                    } else if (value.indexOf("%") > 0) {
                        value = parseInt(value.replace("%", "")) * function(container) {
                            return (0, _type.isWindow)(container) ? container.innerHeight : container.offsetHeight
                        }(container) / 100
                    } else if (!isNaN(value)) {
                        value = parseInt(value)
                    } else if (value.indexOf("vh") > 0) {
                        value = window.innerHeight / 100 * parseInt(value.replace("vh", ""))
                    } else if (element && value.indexOf("em") > 0) {
                        value = parseFloat(value.replace("em", "")) * parseFloat(window.getComputedStyle(element).fontSize)
                    }
                    return value
                };
                exports.parseHeight = parseHeight;
                const getHeightWithOffset = function(value, offset, container) {
                    if (!value) {
                        return null
                    }
                    if (SPECIAL_HEIGHT_VALUES.indexOf(value) > -1) {
                        return offset ? null : value
                    }
                    if ((0, _type.isString)(value)) {
                        value = parseHeight(value, container)
                    }
                    if ((0, _type.isNumeric)(value)) {
                        return Math.max(0, value + offset)
                    }
                    const operationString = offset < 0 ? " - " : " ";
                    return "calc(" + value + operationString + Math.abs(offset) + "px)"
                };
                exports.addOffsetToMaxHeight = function(value, offset, container) {
                    const maxHeight = getHeightWithOffset(value, offset, container);
                    return null !== maxHeight ? maxHeight : "none"
                };
                exports.addOffsetToMinHeight = function(value, offset, container) {
                    const minHeight = getHeightWithOffset(value, offset, container);
                    return null !== minHeight ? minHeight : 0
                };
                exports.getVerticalOffsets = function(element, withMargins) {
                    if (!element) {
                        return 0
                    }
                    const boxParams = getElementBoxParams("height", window.getComputedStyle(element));
                    return boxParams.padding + boxParams.border + (withMargins ? boxParams.margin : 0)
                };
                exports.getVisibleHeight = function(element) {
                    if (element) {
                        const boundingClientRect = element.getBoundingClientRect();
                        if (boundingClientRect.height) {
                            return boundingClientRect.height
                        }
                    }
                    return 0
                };
                const implementationsMap = {
                    getWidth: function() {
                        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
                            args[_key] = arguments[_key]
                        }
                        return elementSizeHelper("width", ...args)
                    },
                    setWidth: function() {
                        for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
                            args[_key2] = arguments[_key2]
                        }
                        return elementSizeHelper("width", ...args)
                    },
                    getHeight: function() {
                        for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
                            args[_key3] = arguments[_key3]
                        }
                        return elementSizeHelper("height", ...args)
                    },
                    setHeight: function() {
                        for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
                            args[_key4] = arguments[_key4]
                        }
                        return elementSizeHelper("height", ...args)
                    },
                    getOuterWidth: function() {
                        for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
                            args[_key5] = arguments[_key5]
                        }
                        return elementSizeHelper("outerWidth", ...args)
                    },
                    setOuterWidth: function() {
                        for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
                            args[_key6] = arguments[_key6]
                        }
                        return elementSizeHelper("outerWidth", ...args)
                    },
                    getOuterHeight: function() {
                        for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
                            args[_key7] = arguments[_key7]
                        }
                        return elementSizeHelper("outerHeight", ...args)
                    },
                    setOuterHeight: function() {
                        for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
                            args[_key8] = arguments[_key8]
                        }
                        return elementSizeHelper("outerHeight", ...args)
                    },
                    getInnerWidth: function() {
                        for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {
                            args[_key9] = arguments[_key9]
                        }
                        return elementSizeHelper("innerWidth", ...args)
                    },
                    setInnerWidth: function() {
                        for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {
                            args[_key10] = arguments[_key10]
                        }
                        return elementSizeHelper("innerWidth", ...args)
                    },
                    getInnerHeight: function() {
                        for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) {
                            args[_key11] = arguments[_key11]
                        }
                        return elementSizeHelper("innerHeight", ...args)
                    },
                    setInnerHeight: function() {
                        for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {
                            args[_key12] = arguments[_key12]
                        }
                        return elementSizeHelper("innerHeight", ...args)
                    }
                };
                exports.implementationsMap = implementationsMap;

                function elementSizeHelper(sizeProperty, el, value) {
                    return 2 === arguments.length ? elementSize(el, sizeProperty) : elementSize(el, sizeProperty, value)
                }
                exports.getWidth = el => implementationsMap.getWidth(el);
                exports.setWidth = (el, value) => implementationsMap.setWidth(el, value);
                exports.getHeight = el => implementationsMap.getHeight(el);
                exports.setHeight = (el, value) => implementationsMap.setHeight(el, value);
                exports.getOuterWidth = (el, includeMargin) => implementationsMap.getOuterWidth(el, includeMargin || false);
                exports.setOuterWidth = (el, value) => implementationsMap.setOuterWidth(el, value);
                exports.getOuterHeight = (el, includeMargin) => implementationsMap.getOuterHeight(el, includeMargin || false);
                exports.setOuterHeight = (el, value) => implementationsMap.setOuterHeight(el, value);
                exports.getInnerWidth = el => implementationsMap.getInnerWidth(el);
                exports.setInnerWidth = (el, value) => implementationsMap.setInnerWidth(el, value);
                exports.getInnerHeight = el => implementationsMap.getInnerHeight(el);
                exports.setInnerHeight = (el, value) => implementationsMap.setInnerHeight(el, value);
                const elementSize = function(el, sizeProperty, value) {
                    const partialName = sizeProperty.toLowerCase().indexOf("width") >= 0 ? "Width" : "Height";
                    const propName = partialName.toLowerCase();
                    const isOuter = 0 === sizeProperty.indexOf("outer");
                    const isInner = 0 === sizeProperty.indexOf("inner");
                    const isGetter = 2 === arguments.length || "boolean" === typeof value;
                    if ((0, _type.isRenderer)(el)) {
                        if (el.length > 1 && !isGetter) {
                            for (let i = 0; i < el.length; i++) {
                                elementSize(el[i], sizeProperty, value)
                            }
                            return
                        }
                        el = el[0]
                    }
                    if (!el) {
                        return
                    }
                    if ((0, _type.isWindow)(el)) {
                        return isOuter ? el["inner" + partialName] : _dom_adapter.default.getDocumentElement()["client" + partialName]
                    }
                    if (_dom_adapter.default.isDocument(el)) {
                        const documentElement = _dom_adapter.default.getDocumentElement();
                        const body = _dom_adapter.default.getBody();
                        return Math.max(body["scroll" + partialName], body["offset" + partialName], documentElement["scroll" + partialName], documentElement["offset" + partialName], documentElement["client" + partialName])
                    }
                    if (isGetter) {
                        let box = "content";
                        if (isOuter) {
                            box = value ? "margin" : "border"
                        }
                        if (isInner) {
                            box = "padding"
                        }
                        return getSize(el, propName, box)
                    }
                    if ((0, _type.isNumeric)(value)) {
                        const elementStyles = getElementComputedStyle(el);
                        const sizeAdjustment = getElementBoxParams(propName, elementStyles);
                        const isBorderBox = "border-box" === elementStyles.boxSizing;
                        value = Number(value);
                        if (isOuter) {
                            value -= isBorderBox ? 0 : sizeAdjustment.border + sizeAdjustment.padding
                        } else if (isInner) {
                            value += isBorderBox ? sizeAdjustment.border : -sizeAdjustment.padding
                        } else if (isBorderBox) {
                            value += sizeAdjustment.border + sizeAdjustment.padding
                        }
                    }
                    value += (0, _type.isNumeric)(value) ? "px" : "";
                    _dom_adapter.default.setStyle(el, propName, value);
                    return null
                };
                const getWindowByElement = el => (0, _type.isWindow)(el) ? el : el.defaultView;
                exports.getWindowByElement = getWindowByElement;
                exports.getOffset = el => {
                    if (!el.getClientRects().length) {
                        return {
                            top: 0,
                            left: 0
                        }
                    }
                    const rect = el.getBoundingClientRect();
                    const win = getWindowByElement(el.ownerDocument);
                    const docElem = el.ownerDocument.documentElement;
                    return {
                        top: rect.top + win.pageYOffset - docElem.clientTop,
                        left: rect.left + win.pageXOffset - docElem.clientLeft
                    }
                }
            },
        36613:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/storage.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.sessionStorage = void 0;
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                const window = (0, _window.getWindow)();
                exports.sessionStorage = function() {
                    let sessionStorage;
                    try {
                        sessionStorage = window.sessionStorage
                    } catch (e) {}
                    return sessionStorage
                }
            },
        68752:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/string.js ***!
              \******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.encodeHtml = void 0;
                exports.format = function(template) {
                    for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
                        values[_key - 1] = arguments[_key]
                    }
                    if ((0, _type.isFunction)(template)) {
                        return template(...values)
                    }
                    values.forEach((value, index) => {
                        if ((0, _type.isString)(value)) {
                            value = value.replace(/\$/g, "$$$$")
                        }
                        const placeholderReg = new RegExp("\\{" + index + "\\}", "gm");
                        template = template.replace(placeholderReg, value)
                    });
                    return template
                };
                exports.replaceAll = exports.quadToObject = exports.isEmpty = void 0;
                var _type = __webpack_require__( /*! ./type */ 35922);
                const encodeHtml = function() {
                    const encodeRegExp = [new RegExp("&", "g"), new RegExp('"', "g"), new RegExp("'", "g"), new RegExp("<", "g"), new RegExp(">", "g")];
                    return function(str) {
                        return String(str).replace(encodeRegExp[0], "&amp;").replace(encodeRegExp[1], "&quot;").replace(encodeRegExp[2], "&#39;").replace(encodeRegExp[3], "&lt;").replace(encodeRegExp[4], "&gt;")
                    }
                }();
                exports.encodeHtml = encodeHtml;
                exports.quadToObject = function(raw) {
                    const quad = function(raw) {
                        switch (typeof raw) {
                            case "string":
                                return raw.split(/\s+/, 4);
                            case "object":
                                return [raw.x || raw.h || raw.left, raw.y || raw.v || raw.top, raw.x || raw.h || raw.right, raw.y || raw.v || raw.bottom];
                            case "number":
                                return [raw];
                            default:
                                return raw
                        }
                    }(raw);
                    let left = parseInt(quad && quad[0], 10);
                    let top = parseInt(quad && quad[1], 10);
                    let right = parseInt(quad && quad[2], 10);
                    let bottom = parseInt(quad && quad[3], 10);
                    if (!isFinite(left)) {
                        left = 0
                    }
                    if (!isFinite(top)) {
                        top = left
                    }
                    if (!isFinite(right)) {
                        right = left
                    }
                    if (!isFinite(bottom)) {
                        bottom = top
                    }
                    return {
                        top: top,
                        right: right,
                        bottom: bottom,
                        left: left
                    }
                };
                const replaceAll = function(text, searchToken, replacementToken) {
                    return text.replace(new RegExp("(" + (str = searchToken, (str + "").replace(/([\\+*?.[^\]$(){}><|=!:])/g, "\\$1")) + ")", "gi"), replacementToken);
                    var str
                };
                exports.replaceAll = replaceAll;
                const isEmpty = function() {
                    const SPACE_REGEXP = /\s/g;
                    return function(text) {
                        return !text || !text.replace(SPACE_REGEXP, "")
                    }
                }();
                exports.isEmpty = isEmpty
            },
        2146:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/stubs.js ***!
              \*****************************************************************/
            function(__unused_webpack_module, exports) {
                exports.stubComponent = function(componentName) {
                    return function() {
                        function NoComponent() {
                            throw new Error("Module '".concat(componentName, "' not found"))
                        }
                        NoComponent.getInstance = function() {};
                        return NoComponent
                    }()
                }
            },
        80968:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/style.js ***!
              \*****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.stylePropPrefix = exports.styleProp = exports.setWidth = exports.setStyle = exports.setHeight = exports.parsePixelValue = exports.normalizeStyleProp = void 0;
                var _inflector = __webpack_require__( /*! ./inflector */ 78008);
                var _call_once = _interopRequireDefault(__webpack_require__( /*! ./call_once */ 39618));
                var _type = __webpack_require__( /*! ./type */ 35922);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../dom_adapter */ 73349));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const jsPrefixes = ["", "Webkit", "Moz", "O", "Ms"];
                const cssPrefixes = {
                    "": "",
                    Webkit: "-webkit-",
                    Moz: "-moz-",
                    O: "-o-",
                    ms: "-ms-"
                };
                const getStyles = (0, _call_once.default)((function() {
                    return _dom_adapter.default.createElement("dx").style
                }));
                exports.styleProp = function(name) {
                    if (name in getStyles()) {
                        return name
                    }
                    const originalName = name;
                    name = name.charAt(0).toUpperCase() + name.substr(1);
                    for (let i = 1; i < jsPrefixes.length; i++) {
                        const prefixedProp = jsPrefixes[i].toLowerCase() + name;
                        if (prefixedProp in getStyles()) {
                            return prefixedProp
                        }
                    }
                    return originalName
                };
                exports.stylePropPrefix = function(prop) {
                    return function(prop, callBack) {
                        prop = (0, _inflector.camelize)(prop, true);
                        let result;
                        for (let i = 0, cssPrefixesCount = jsPrefixes.length; i < cssPrefixesCount; i++) {
                            const jsPrefix = jsPrefixes[i];
                            const prefixedProp = jsPrefix + prop;
                            const lowerPrefixedProp = (0, _inflector.camelize)(prefixedProp);
                            result = callBack(lowerPrefixedProp, jsPrefix);
                            if (void 0 === result) {
                                result = callBack(prefixedProp, jsPrefix)
                            }
                            if (void 0 !== result) {
                                break
                            }
                        }
                        return result || ""
                    }(prop, (function(specific, jsPrefix) {
                        if (specific in getStyles()) {
                            return cssPrefixes[jsPrefix]
                        }
                    }))
                };
                const pxExceptions = ["fillOpacity", "columnCount", "flexGrow", "flexShrink", "fontWeight", "lineHeight", "opacity", "zIndex", "zoom"];
                exports.parsePixelValue = function(value) {
                    if ((0, _type.isNumeric)(value)) {
                        return value
                    } else if ((0, _type.isString)(value)) {
                        return Number(value.replace("px", ""))
                    }
                    return NaN
                };
                exports.normalizeStyleProp = function(prop, value) {
                    if ((0, _type.isNumeric)(value) && -1 === pxExceptions.indexOf(prop)) {
                        value += "px"
                    }
                    return value
                };
                const setDimensionProperty = function(elements, propertyName, value) {
                    if (elements) {
                        value = (0, _type.isNumeric)(value) ? value += "px" : value;
                        for (let i = 0; i < elements.length; ++i) {
                            elements[i].style[propertyName] = value
                        }
                    }
                };
                exports.setWidth = function(elements, value) {
                    setDimensionProperty(elements, "width", value)
                };
                exports.setHeight = function(elements, value) {
                    setDimensionProperty(elements, "height", value)
                };
                exports.setStyle = function(element, styleString) {
                    let resetStyle = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : true;
                    if (resetStyle) {
                        const styleList = [].slice.call(element.style);
                        styleList.forEach(propertyName => {
                            element.style.removeProperty(propertyName)
                        })
                    }
                    styleString.split(";").forEach(style => {
                        const parts = style.split(":").map(stylePart => stylePart.trim());
                        if (2 === parts.length) {
                            const [property, value] = parts;
                            element.style[property] = value
                        }
                    })
                }
            },
        60137:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/support.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.pointerEvents = exports.nativeScrolling = exports.inputType = exports.animation = void 0;
                Object.defineProperty(exports, "styleProp", {
                    enumerable: true,
                    get: function() {
                        return _style.styleProp
                    }
                });
                Object.defineProperty(exports, "stylePropPrefix", {
                    enumerable: true,
                    get: function() {
                        return _style.stylePropPrefix
                    }
                });
                exports.transitionEndEventName = exports.transition = exports.touchEvents = exports.touch = exports.supportProp = void 0;
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../dom_adapter */ 73349));
                var _call_once = _interopRequireDefault(__webpack_require__( /*! ./call_once */ 39618));
                var _window = __webpack_require__( /*! ./window */ 58201);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../devices */ 20530));
                var _style = __webpack_require__( /*! ./style */ 80968);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const {
                    maxTouchPoints: maxTouchPoints
                } = (0, _window.getNavigator)();
                const transitionEndEventNames = {
                    webkitTransition: "webkitTransitionEnd",
                    MozTransition: "transitionend",
                    OTransition: "oTransitionEnd",
                    transition: "transitionend"
                };
                const supportProp = function(prop) {
                    return !!(0, _style.styleProp)(prop)
                };
                exports.supportProp = supportProp;
                exports.inputType = function(type) {
                    if ("text" === type) {
                        return true
                    }
                    const input = _dom_adapter.default.createElement("input");
                    try {
                        input.setAttribute("type", type);
                        input.value = "wrongValue";
                        return !input.value
                    } catch (e) {
                        return false
                    }
                };
                const touchEvents = function(hasWindowProperty, maxTouchPoints) {
                    return (hasWindowProperty("ontouchstart") || !!maxTouchPoints) && !hasWindowProperty("callPhantom")
                }(_window.hasProperty, maxTouchPoints);
                exports.touchEvents = touchEvents;
                const pointerEvents = (hasWindowProperty = _window.hasProperty, hasWindowProperty("PointerEvent"));
                var hasWindowProperty;
                exports.pointerEvents = pointerEvents;
                const touchPointersPresent = !!maxTouchPoints;
                const touch = touchEvents || pointerEvents && touchPointersPresent;
                exports.touch = touch;
                const transition = (0, _call_once.default)((function() {
                    return supportProp("transition")
                }));
                exports.transition = transition;
                const transitionEndEventName = (0, _call_once.default)((function() {
                    return transitionEndEventNames[(0, _style.styleProp)("transition")]
                }));
                exports.transitionEndEventName = transitionEndEventName;
                const animation = (0, _call_once.default)((function() {
                    return supportProp("animation")
                }));
                exports.animation = animation;
                const nativeScrolling = function() {
                    const {
                        platform: platform,
                        mac: isMac
                    } = _devices.default.real();
                    const isNativeScrollDevice = "ios" === platform || "android" === platform || isMac;
                    return isNativeScrollDevice
                }();
                exports.nativeScrolling = nativeScrolling
            },
        19155:
            /*!***************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/svg.js ***!
              \***************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.HIDDEN_FOR_EXPORT = void 0;
                exports.getSvgElement = function(markup) {
                    return _dom_adapter.default.isNode(markup) ? markup : (new window.DOMParser).parseFromString(markup, "image/svg+xml").childNodes[0]
                };
                exports.getSvgMarkup = function(element, backgroundColor) {
                    return function(markup) {
                        let first = true;
                        if (-1 === markup.indexOf("xmlns:xlink")) {
                            markup = markup.replace("<svg", '<svg xmlns:xlink="http://www.w3.org/1999/xlink"')
                        }
                        markup = markup.replace(/xmlns="[\s\S]*?"/gi, (function(match) {
                            if (!first) {
                                return ""
                            }
                            first = false;
                            return match
                        }));
                        return markup.replace(/xmlns:NS1="[\s\S]*?"/gi, "").replace(/NS1:xmlns:xlink="([\s\S]*?)"/gi, 'xmlns:xlink="$1"')
                    }((markup = function(element, backgroundColor) {
                        const temp = _dom_adapter.default.createElement("div");
                        const clone = element.cloneNode(true);
                        if (backgroundColor) {
                            (0, _renderer.default)(clone).css("backgroundColor", backgroundColor)
                        }
                        temp.appendChild(clone);
                        return temp.innerHTML
                    }(element, backgroundColor), markup.replace(/&quot;/gi, "&#34;").replace(/&amp;/gi, "&#38;").replace(/&apos;/gi, "&#39;").replace(/&lt;/gi, "&#60;").replace(/&gt;/gi, "&#62;").replace(/&nbsp;/gi, "&#160;").replace(/&shy;/gi, "&#173;")));
                    var markup
                };
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _window = __webpack_require__( /*! ./window */ 58201);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();
                exports.HIDDEN_FOR_EXPORT = "hidden-for-export"
            },
        69697:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/template_manager.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.validateTemplateSource = exports.templateKey = exports.suitableTemplatesByName = exports.getNormalizedTemplateArgs = exports.findTemplates = exports.defaultCreateElement = exports.addPublicElementNormalization = exports.addOneRenderedCall = exports.acquireTemplate = exports.acquireIntegrationTemplate = void 0;
                var _config = _interopRequireDefault(__webpack_require__( /*! ../config */ 80209));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../devices */ 20530));
                var _element = __webpack_require__( /*! ../element */ 6415);
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../errors */ 17381));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../renderer */ 68374));
                var _child_default_template = __webpack_require__( /*! ../templates/child_default_template */ 91627);
                var _empty_template = __webpack_require__( /*! ../templates/empty_template */ 10688);
                var _template = __webpack_require__( /*! ../templates/template */ 9545);
                var _template_base = __webpack_require__( /*! ../templates/template_base */ 81033);
                var _array = __webpack_require__( /*! ./array */ 89386);
                var _common = __webpack_require__( /*! ./common */ 20576);
                var _dom = __webpack_require__( /*! ./dom */ 3532);
                var _extend = __webpack_require__( /*! ./extend */ 13306);
                var _type = __webpack_require__( /*! ./type */ 35922);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                exports.findTemplates = (element, name) => {
                    const templates = (0, _renderer.default)(element).contents().filter("[".concat("data-options", '*="').concat(name, '"]'));
                    return [].slice.call(templates).map(element => {
                        const optionsString = (0, _renderer.default)(element).attr("data-options") || "";
                        return {
                            element: element,
                            options: (0, _config.default)().optionsParser(optionsString)[name]
                        }
                    }).filter(template => !!template.options)
                };
                exports.suitableTemplatesByName = rawTemplates => {
                    const templatesMap = (0, _array.groupBy)(rawTemplates, template => template.options.name);
                    if (templatesMap[void 0]) {
                        throw _errors.default.Error("E0023")
                    }
                    const result = {};
                    Object.keys(templatesMap).forEach(name => {
                        var _findBestMatches$;
                        const suitableTemplate = null === (_findBestMatches$ = (0, _common.findBestMatches)(_devices.default.current(), templatesMap[name], template => template.options)[0]) || void 0 === _findBestMatches$ ? void 0 : _findBestMatches$.element;
                        if (suitableTemplate) {
                            result[name] = suitableTemplate
                        }
                    });
                    return result
                };
                const addOneRenderedCall = template => {
                    const render = template.render.bind(template);
                    return (0, _extend.extend)({}, template, {
                        render(options) {
                            const templateResult = render(options);
                            options && options.onRendered && options.onRendered();
                            return templateResult
                        }
                    })
                };
                exports.addOneRenderedCall = addOneRenderedCall;
                const addPublicElementNormalization = template => {
                    const render = template.render.bind(template);
                    return (0, _extend.extend)({}, template, {
                        render(options) {
                            const $container = (0, _renderer.default)(options.container);
                            return render(_extends({}, options, {
                                container: (0, _element.getPublicElement)($container)
                            }))
                        }
                    })
                };
                exports.addPublicElementNormalization = addPublicElementNormalization;
                exports.getNormalizedTemplateArgs = options => {
                    const args = [];
                    if ("model" in options) {
                        args.push(options.model)
                    }
                    if ("index" in options) {
                        args.push(options.index)
                    }
                    args.push(options.container);
                    return args
                };
                exports.validateTemplateSource = templateSource => "string" === typeof templateSource ? (0, _dom.normalizeTemplateElement)(templateSource) : templateSource;
                exports.templateKey = templateSource => (0, _type.isRenderer)(templateSource) && templateSource[0] || templateSource;
                exports.defaultCreateElement = element => new _template.Template(element);
                const acquireIntegrationTemplate = (templateSource, templates, isAsyncTemplate, skipTemplates) => {
                    let integrationTemplate = null;
                    if (!skipTemplates || -1 === skipTemplates.indexOf(templateSource)) {
                        integrationTemplate = templates[templateSource];
                        if (integrationTemplate && !(integrationTemplate instanceof _template_base.TemplateBase)) {
                            if ((0, _type.isFunction)(integrationTemplate.render)) {
                                integrationTemplate = addPublicElementNormalization(integrationTemplate)
                            }
                            if (!isAsyncTemplate) {
                                integrationTemplate = addOneRenderedCall(integrationTemplate)
                            }
                        }
                    }
                    return integrationTemplate
                };
                exports.acquireIntegrationTemplate = acquireIntegrationTemplate;
                exports.acquireTemplate = (templateSource, createTemplate, templates, isAsyncTemplate, skipTemplates, defaultTemplates) => {
                    if (null == templateSource) {
                        return new _empty_template.EmptyTemplate
                    }
                    if (templateSource instanceof _child_default_template.ChildDefaultTemplate) {
                        return defaultTemplates[templateSource.name]
                    }
                    if (templateSource instanceof _template_base.TemplateBase) {
                        return templateSource
                    }
                    if ((0, _type.isFunction)(templateSource.render) && !(0, _type.isRenderer)(templateSource)) {
                        return isAsyncTemplate ? templateSource : addOneRenderedCall(templateSource)
                    }
                    if (templateSource.nodeType || (0, _type.isRenderer)(templateSource)) {
                        return createTemplate((0, _renderer.default)(templateSource))
                    }
                    return acquireIntegrationTemplate(templateSource, templates, isAsyncTemplate, skipTemplates) || defaultTemplates[templateSource] || createTemplate(templateSource)
                }
            },
        35922:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/type.js ***!
              \****************************************************************/
            function(__unused_webpack_module, exports) {
                exports.type = exports.isWindow = exports.isString = exports.isRenderer = exports.isPromise = exports.isPrimitive = exports.isPlainObject = exports.isObject = exports.isNumeric = exports.isFunction = exports.isExponential = exports.isEvent = exports.isEmptyObject = exports.isDefined = exports.isDeferred = exports.isDate = exports.isBoolean = void 0;
                const types = {
                    "[object Array]": "array",
                    "[object Date]": "date",
                    "[object Object]": "object",
                    "[object String]": "string"
                };
                const type = function(object) {
                    if (null === object) {
                        return "null"
                    }
                    const typeOfObject = Object.prototype.toString.call(object);
                    return "object" === typeof object ? types[typeOfObject] || "object" : typeof object
                };
                exports.type = type;
                exports.isBoolean = function(object) {
                    return "boolean" === typeof object
                };
                exports.isExponential = function(value) {
                    return isNumeric(value) && -1 !== value.toString().indexOf("e")
                };
                exports.isDate = function(object) {
                    return "date" === type(object)
                };
                exports.isDefined = function(object) {
                    return null !== object && void 0 !== object
                };
                const isFunction = function(object) {
                    return "function" === typeof object
                };
                exports.isFunction = isFunction;
                exports.isString = function(object) {
                    return "string" === typeof object
                };
                const isNumeric = function(object) {
                    return "number" === typeof object && isFinite(object) || !isNaN(object - parseFloat(object))
                };
                exports.isNumeric = isNumeric;
                exports.isObject = function(object) {
                    return "object" === type(object)
                };
                exports.isEmptyObject = function(object) {
                    let property;
                    for (property in object) {
                        return false
                    }
                    return true
                };
                exports.isPlainObject = function(object) {
                    if (!object || "object" !== type(object)) {
                        return false
                    }
                    const proto = Object.getPrototypeOf(object);
                    if (!proto) {
                        return true
                    }
                    const ctor = Object.hasOwnProperty.call(proto, "constructor") && proto.constructor;
                    return "function" === typeof ctor && Object.toString.call(ctor) === Object.toString.call(Object)
                };
                exports.isPrimitive = function(value) {
                    return -1 === ["object", "array", "function"].indexOf(type(value))
                };
                exports.isWindow = function(object) {
                    return null != object && object === object.window
                };
                exports.isRenderer = function(object) {
                    return !!object && !!(object.jquery || object.dxRenderer)
                };
                exports.isPromise = function(object) {
                    return !!object && isFunction(object.then)
                };
                exports.isDeferred = function(object) {
                    return !!object && isFunction(object.done) && isFunction(object.fail)
                };
                exports.isEvent = function(object) {
                    return !!(object && object.preventDefault)
                }
            },
        26974:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/variable_wrapper.js ***!
              \****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _console = __webpack_require__( /*! ./console */ 30869);
                var _dependency_injector = (obj = __webpack_require__( /*! ./dependency_injector */ 20476), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = (0, _dependency_injector.default)({
                    isWrapped: function() {
                        return false
                    },
                    isWritableWrapped: function() {
                        return false
                    },
                    wrap: function(value) {
                        return value
                    },
                    unwrap: function(value) {
                        return value
                    },
                    assign: function() {
                        _console.logger.error("Method 'assign' should not be used for not wrapped variables. Use 'isWrapped' method for ensuring.")
                    }
                });
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        58020:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/version.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports) {
                exports.compare = function(x, y, maxLevel) {
                    function normalizeArg(value) {
                        if ("string" === typeof value) {
                            return value.split(".")
                        }
                        if ("number" === typeof value) {
                            return [value]
                        }
                        return value
                    }
                    x = normalizeArg(x);
                    y = normalizeArg(y);
                    let length = Math.max(x.length, y.length);
                    if (isFinite(maxLevel)) {
                        length = Math.min(length, maxLevel)
                    }
                    for (let i = 0; i < length; i++) {
                        const xItem = parseInt(x[i] || 0, 10);
                        const yItem = parseInt(y[i] || 0, 10);
                        if (xItem < yItem) {
                            return -1
                        }
                        if (xItem > yItem) {
                            return 1
                        }
                    }
                    return 0
                }
            },
        77695:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/view_port.js ***!
              \*********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.changeCallback = void 0;
                exports.originalViewPort = function() {
                    return $originalViewPort
                };
                exports.value = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../renderer */ 68374));
                var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ./ready_callbacks */ 24311));
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ./callbacks */ 44504));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const ready = _ready_callbacks.default.add;
                const changeCallback = (0, _callbacks.default)();
                exports.changeCallback = changeCallback;
                let $originalViewPort = (0, _renderer.default)();
                const value = function() {
                    let $current;
                    return function(element) {
                        if (!arguments.length) {
                            return $current
                        }
                        const $element = (0, _renderer.default)(element);
                        $originalViewPort = $element;
                        const isNewViewportFound = !!$element.length;
                        const prevViewPort = value();
                        $current = isNewViewportFound ? $element : (0, _renderer.default)("body");
                        changeCallback.fire(isNewViewportFound ? value() : (0, _renderer.default)(), prevViewPort)
                    }
                }();
                exports.value = value;
                ready((function() {
                    value(".dx-viewport")
                }))
            },
        58201:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/utils/window.js ***!
              \******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.setWindow = exports.hasWindow = exports.hasProperty = exports.getWindow = exports.getNavigator = exports.getCurrentScreenFactor = exports.defaultScreenFactorFunc = void 0;
                var _dom_adapter = (obj = __webpack_require__( /*! ../dom_adapter */ 73349), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                let hasWindowValue = "undefined" !== typeof window;
                const hasWindow = () => hasWindowValue;
                exports.hasWindow = hasWindow;
                let windowObject = hasWindow() ? window : void 0;
                if (!windowObject) {
                    windowObject = {};
                    windowObject.window = windowObject
                }
                exports.getWindow = () => windowObject;
                exports.setWindow = (newWindowObject, hasWindow) => {
                    if (void 0 === hasWindow) {
                        hasWindowValue = "undefined" !== typeof window && window === newWindowObject
                    } else {
                        hasWindowValue = hasWindow
                    }
                    windowObject = newWindowObject
                };
                exports.hasProperty = prop => hasWindow() && prop in windowObject;
                const defaultScreenFactorFunc = width => {
                    if (width < 768) {
                        return "xs"
                    } else if (width < 992) {
                        return "sm"
                    } else if (width < 1200) {
                        return "md"
                    } else {
                        return "lg"
                    }
                };
                exports.defaultScreenFactorFunc = defaultScreenFactorFunc;
                exports.getCurrentScreenFactor = screenFactorCallback => {
                    const screenFactorFunc = screenFactorCallback || defaultScreenFactorFunc;
                    const windowWidth = _dom_adapter.default.getDocumentElement().clientWidth;
                    return screenFactorFunc(windowWidth)
                };
                exports.getNavigator = () => hasWindow() ? windowObject.navigator : {
                    userAgent: ""
                }
            },
        36739:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/core/version.js ***!
              \*************************************************************/
            function(__unused_webpack_module, exports) {
                exports.version = void 0;
                exports.version = "23.2.4"
            },
        67403:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/abstract_store.js ***!
              \********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _class = _interopRequireDefault(__webpack_require__( /*! ../core/class */ 38377));
                var _events_strategy = __webpack_require__( /*! ../core/events_strategy */ 80566);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _errors = __webpack_require__( /*! ./errors */ 18438);
                var _utils = __webpack_require__( /*! ./utils */ 16454);
                var _data = __webpack_require__( /*! ../core/utils/data */ 47617);
                var _store_helper = _interopRequireDefault(__webpack_require__( /*! ./store_helper */ 99236));
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const abstract = _class.default.abstract;
                const queryByOptions = _store_helper.default.queryByOptions;
                const storeImpl = {};
                const Store = _class.default.inherit({
                    _langParams: {},
                    ctor: function(options) {
                        const that = this;
                        options = options || {};
                        this._eventsStrategy = new _events_strategy.EventsStrategy(this);
                        (0, _iterator.each)(["onLoaded", "onLoading", "onInserted", "onInserting", "onUpdated", "onUpdating", "onPush", "onRemoved", "onRemoving", "onModified", "onModifying"], (function(_, optionName) {
                            if (optionName in options) {
                                that.on(optionName.slice(2).toLowerCase(), options[optionName])
                            }
                        }));
                        this._key = options.key;
                        this._errorHandler = options.errorHandler;
                        this._useDefaultSearch = true
                    },
                    _clearCache: _common.noop,
                    _customLoadOptions: function() {
                        return null
                    },
                    key: function() {
                        return this._key
                    },
                    keyOf: function(obj) {
                        if (!this._keyGetter) {
                            this._keyGetter = (0, _data.compileGetter)(this.key())
                        }
                        return this._keyGetter(obj)
                    },
                    _requireKey: function() {
                        if (!this.key()) {
                            throw _errors.errors.Error("E4005")
                        }
                    },
                    load: function(options) {
                        const that = this;
                        options = options || {};
                        this._eventsStrategy.fireEvent("loading", [options]);
                        return this._withLock(this._loadImpl(options)).done((function(result) {
                            that._eventsStrategy.fireEvent("loaded", [result, options])
                        }))
                    },
                    _loadImpl: function(options) {
                        if (!(0, _type.isEmptyObject)(this._langParams)) {
                            options = options || {};
                            options._langParams = _extends({}, this._langParams, options._langParams)
                        }
                        return queryByOptions(this.createQuery(options), options).enumerate()
                    },
                    _withLock: function(task) {
                        const result = new _deferred.Deferred;
                        task.done((function() {
                            const that = this;
                            const args = arguments;
                            _utils.processRequestResultLock.promise().done((function() {
                                result.resolveWith(that, args)
                            }))
                        })).fail((function() {
                            result.rejectWith(this, arguments)
                        }));
                        return result
                    },
                    createQuery: abstract,
                    totalCount: function(options) {
                        return this._totalCountImpl(options)
                    },
                    _totalCountImpl: function(options) {
                        return queryByOptions(this.createQuery(options), options, true).count()
                    },
                    byKey: function(key, extraOptions) {
                        return this._addFailHandlers(this._withLock(this._byKeyImpl(key, extraOptions)))
                    },
                    _byKeyImpl: abstract,
                    insert: function(values) {
                        const that = this;
                        that._eventsStrategy.fireEvent("modifying");
                        that._eventsStrategy.fireEvent("inserting", [values]);
                        return that._addFailHandlers(that._insertImpl(values).done((function(callbackValues, callbackKey) {
                            that._eventsStrategy.fireEvent("inserted", [callbackValues, callbackKey]);
                            that._eventsStrategy.fireEvent("modified")
                        })))
                    },
                    _insertImpl: abstract,
                    update: function(key, values) {
                        const that = this;
                        that._eventsStrategy.fireEvent("modifying");
                        that._eventsStrategy.fireEvent("updating", [key, values]);
                        return that._addFailHandlers(that._updateImpl(key, values).done((function() {
                            that._eventsStrategy.fireEvent("updated", [key, values]);
                            that._eventsStrategy.fireEvent("modified")
                        })))
                    },
                    _updateImpl: abstract,
                    push: function(changes) {
                        const beforePushArgs = {
                            changes: changes,
                            waitFor: []
                        };
                        this._eventsStrategy.fireEvent("beforePushAggregation", [beforePushArgs]);
                        (0, _deferred.when)(...beforePushArgs.waitFor).done(() => {
                            this._pushImpl(changes);
                            this._eventsStrategy.fireEvent("beforePush", [{
                                changes: changes
                            }]);
                            this._eventsStrategy.fireEvent("push", [changes])
                        })
                    },
                    _pushImpl: _common.noop,
                    remove: function(key) {
                        const that = this;
                        that._eventsStrategy.fireEvent("modifying");
                        that._eventsStrategy.fireEvent("removing", [key]);
                        return that._addFailHandlers(that._removeImpl(key).done((function(callbackKey) {
                            that._eventsStrategy.fireEvent("removed", [callbackKey]);
                            that._eventsStrategy.fireEvent("modified")
                        })))
                    },
                    _removeImpl: abstract,
                    _addFailHandlers: function(deferred) {
                        return deferred.fail(this._errorHandler).fail(_errors.handleError)
                    },
                    on(eventName, eventHandler) {
                        this._eventsStrategy.on(eventName, eventHandler);
                        return this
                    },
                    off(eventName, eventHandler) {
                        this._eventsStrategy.off(eventName, eventHandler);
                        return this
                    }
                });
                Store.create = function(alias, options) {
                    if (!(alias in storeImpl)) {
                        throw _errors.errors.Error("E4020", alias)
                    }
                    return new storeImpl[alias](options)
                };
                Store.registerClass = function(type, alias) {
                    if (alias) {
                        storeImpl[alias] = type
                    }
                    return type
                };
                Store.inherit = (inheritor = Store.inherit, function(members, alias) {
                    const type = inheritor.apply(this, [members]);
                    Store.registerClass(type, alias);
                    return type
                });
                var inheritor;
                var _default = Store;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        36893:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/apply_changes.js ***!
              \*******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _array_utils = __webpack_require__( /*! ./array_utils */ 60637);
                var _default = _array_utils.applyChanges;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        35042:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/array_query.js ***!
              \*****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _class = (obj = __webpack_require__( /*! ../core/class */ 38377), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _data = __webpack_require__( /*! ../core/utils/data */ 47617);
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);
                var _errors = __webpack_require__( /*! ./errors */ 18438);
                var _utils = __webpack_require__( /*! ./utils */ 16454);
                const Iterator = _class.default.inherit({
                    toArray: function() {
                        const result = [];
                        this.reset();
                        while (this.next()) {
                            result.push(this.current())
                        }
                        return result
                    },
                    countable: function() {
                        return false
                    }
                });
                const ArrayIterator = Iterator.inherit({
                    ctor: function(array) {
                        this.array = array;
                        this.index = -1
                    },
                    next: function() {
                        if (this.index + 1 < this.array.length) {
                            this.index++;
                            return true
                        }
                        return false
                    },
                    current: function() {
                        return this.array[this.index]
                    },
                    reset: function() {
                        this.index = -1
                    },
                    toArray: function() {
                        return this.array.slice(0)
                    },
                    countable: function() {
                        return true
                    },
                    count: function() {
                        return this.array.length
                    }
                });
                const WrappedIterator = Iterator.inherit({
                    ctor: function(iter) {
                        this.iter = iter
                    },
                    next: function() {
                        return this.iter.next()
                    },
                    current: function() {
                        return this.iter.current()
                    },
                    reset: function() {
                        return this.iter.reset()
                    }
                });
                const MapIterator = WrappedIterator.inherit({
                    ctor: function(iter, mapper) {
                        this.callBase(iter);
                        this.index = -1;
                        this.mapper = mapper
                    },
                    current: function() {
                        return this.mapper(this.callBase(), this.index)
                    },
                    next: function() {
                        const hasNext = this.callBase();
                        if (hasNext) {
                            this.index++
                        }
                        return hasNext
                    }
                });
                const SortIterator = Iterator.inherit({
                    ctor: function(iter, getter, desc, compare) {
                        this.langParams = iter.langParams;
                        if (!(iter instanceof MapIterator)) {
                            iter = new MapIterator(iter, this._wrap);
                            iter.langParams = this.langParams
                        }
                        this.iter = iter;
                        this.rules = [{
                            getter: getter,
                            desc: desc,
                            compare: compare,
                            langParams: this.langParams
                        }]
                    },
                    thenBy: function(getter, desc, compare) {
                        const result = new SortIterator(this.sortedIter || this.iter, getter, desc, compare);
                        if (!this.sortedIter) {
                            result.rules = this.rules.concat(result.rules)
                        }
                        return result
                    },
                    next: function() {
                        this._ensureSorted();
                        return this.sortedIter.next()
                    },
                    current: function() {
                        this._ensureSorted();
                        return this.sortedIter.current()
                    },
                    reset: function() {
                        delete this.sortedIter
                    },
                    countable: function() {
                        return this.sortedIter || this.iter.countable()
                    },
                    count: function() {
                        if (this.sortedIter) {
                            return this.sortedIter.count()
                        }
                        return this.iter.count()
                    },
                    _ensureSorted: function() {
                        const that = this;
                        if (that.sortedIter) {
                            return
                        }(0, _iterator.each)(that.rules, (function() {
                            this.getter = (0, _data.compileGetter)(this.getter)
                        }));
                        that.sortedIter = new MapIterator(new ArrayIterator(this.iter.toArray().sort((function(x, y) {
                            return that._compare(x, y)
                        }))), that._unwrap)
                    },
                    _wrap: function(record, index) {
                        return {
                            index: index,
                            value: record
                        }
                    },
                    _unwrap: function(wrappedItem) {
                        return wrappedItem.value
                    },
                    _getDefaultCompare: langParams => (xValue, yValue) => function(xValue, yValue, options) {
                        if ((0, _type.isString)(xValue) && (0, _type.isString)(yValue) && (null !== options && void 0 !== options && options.locale || null !== options && void 0 !== options && options.collatorOptions)) {
                            return new Intl.Collator((null === options || void 0 === options ? void 0 : options.locale) || void 0, (null === options || void 0 === options ? void 0 : options.collatorOptions) || void 0).compare(xValue, yValue)
                        }
                        xValue = (0, _data.toComparable)(xValue, false, options);
                        yValue = (0, _data.toComparable)(yValue, false, options);
                        if (null === xValue && null !== yValue) {
                            return -1
                        }
                        if (null !== xValue && null === yValue) {
                            return 1
                        }
                        if (void 0 === xValue && void 0 !== yValue) {
                            return 1
                        }
                        if (void 0 !== xValue && void 0 === yValue) {
                            return -1
                        }
                        if (xValue < yValue) {
                            return -1
                        }
                        if (xValue > yValue) {
                            return 1
                        }
                        return 0
                    }(xValue, yValue, langParams),
                    _compare: function(x, y) {
                        const xIndex = x.index;
                        const yIndex = y.index;
                        x = x.value;
                        y = y.value;
                        if (x === y) {
                            return xIndex - yIndex
                        }
                        for (let i = 0, rulesCount = this.rules.length; i < rulesCount; i++) {
                            const rule = this.rules[i];
                            const xValue = rule.getter(x);
                            const yValue = rule.getter(y);
                            const compare = rule.compare || this._getDefaultCompare(rule.langParams);
                            const compareResult = compare(xValue, yValue);
                            if (compareResult) {
                                return rule.desc ? -compareResult : compareResult
                            }
                        }
                        return xIndex - yIndex
                    }
                });
                const compileCriteria = function() {
                    let langParams = {};
                    const _toComparable = value => (0, _data.toComparable)(value, false, langParams);
                    const toString = function(value) {
                        var _langParams;
                        return (0, _type.isDefined)(value) ? null !== (_langParams = langParams) && void 0 !== _langParams && _langParams.locale ? value.toLocaleString(langParams.locale) : value.toString() : ""
                    };

                    function compileEquals(getter, value, negate) {
                        return function(obj) {
                            obj = _toComparable(getter(obj));
                            let result = function(value) {
                                return "" === value || 0 === value || false === value
                            }(value) ? obj === value : obj == value;
                            if (negate) {
                                result = !result
                            }
                            return result
                        }
                    }
                    return function(crit, options) {
                        langParams = options || {};
                        if ((0, _type.isFunction)(crit)) {
                            return crit
                        }
                        if ((0, _utils.isGroupCriterion)(crit)) {
                            return function(crit) {
                                const ops = [];
                                let isConjunctiveOperator = false;
                                let isConjunctiveNextOperator = false;
                                (0, _iterator.each)(crit, (function() {
                                    if (Array.isArray(this) || (0, _type.isFunction)(this)) {
                                        if (ops.length > 1 && isConjunctiveOperator !== isConjunctiveNextOperator) {
                                            throw new _errors.errors.Error("E4019")
                                        }
                                        ops.push(compileCriteria(this, langParams));
                                        isConjunctiveOperator = isConjunctiveNextOperator;
                                        isConjunctiveNextOperator = true
                                    } else {
                                        isConjunctiveNextOperator = (0, _utils.isConjunctiveOperator)(this)
                                    }
                                }));
                                return function(d) {
                                    let result = isConjunctiveOperator;
                                    for (let i = 0; i < ops.length; i++) {
                                        if (ops[i](d) !== isConjunctiveOperator) {
                                            result = !isConjunctiveOperator;
                                            break
                                        }
                                    }
                                    return result
                                }
                            }(crit)
                        }
                        if ((0, _utils.isUnaryOperation)(crit)) {
                            return function(crit) {
                                const op = crit[0];
                                const criteria = compileCriteria(crit[1], langParams);
                                if ("!" === op) {
                                    return function(obj) {
                                        return !criteria(obj)
                                    }
                                }
                                throw _errors.errors.Error("E4003", op)
                            }(crit)
                        }
                        return function(crit) {
                            crit = (0, _utils.normalizeBinaryCriterion)(crit);
                            const getter = (0, _data.compileGetter)(crit[0]);
                            const op = crit[1];
                            let value = crit[2];
                            value = _toComparable(value);
                            const compare = (obj, operatorFn) => {
                                obj = _toComparable(getter(obj));
                                return (null == value || null == obj) && value !== obj ? false : operatorFn(obj, value)
                            };
                            switch (op.toLowerCase()) {
                                case "=":
                                    return compileEquals(getter, value);
                                case "<>":
                                    return compileEquals(getter, value, true);
                                case ">":
                                    return obj => compare(obj, (a, b) => a > b);
                                case "<":
                                    return obj => compare(obj, (a, b) => a < b);
                                case ">=":
                                    return obj => compare(obj, (a, b) => a >= b);
                                case "<=":
                                    return obj => compare(obj, (a, b) => a <= b);
                                case "startswith":
                                    return function(obj) {
                                        return 0 === _toComparable(toString(getter(obj))).indexOf(value)
                                    };
                                case "endswith":
                                    return function(obj) {
                                        const getterValue = _toComparable(toString(getter(obj)));
                                        const searchValue = toString(value);
                                        if (getterValue.length < searchValue.length) {
                                            return false
                                        }
                                        const index = getterValue.lastIndexOf(value);
                                        return -1 !== index && index === getterValue.length - value.length
                                    };
                                case "contains":
                                    return function(obj) {
                                        return _toComparable(toString(getter(obj))).indexOf(value) > -1
                                    };
                                case "notcontains":
                                    return function(obj) {
                                        return -1 === _toComparable(toString(getter(obj))).indexOf(value)
                                    }
                            }
                            throw _errors.errors.Error("E4003", op)
                        }(crit)
                    }
                }();
                const FilterIterator = WrappedIterator.inherit({
                    ctor: function(iter, criteria) {
                        this.callBase(iter);
                        this.langParams = iter.langParams;
                        this.criteria = compileCriteria(criteria, this.langParams)
                    },
                    next: function() {
                        while (this.iter.next()) {
                            if (this.criteria(this.current())) {
                                return true
                            }
                        }
                        return false
                    }
                });
                const GroupIterator = Iterator.inherit({
                    ctor: function(iter, getter) {
                        this.iter = iter;
                        this.getter = getter
                    },
                    next: function() {
                        this._ensureGrouped();
                        return this.groupedIter.next()
                    },
                    current: function() {
                        this._ensureGrouped();
                        return this.groupedIter.current()
                    },
                    reset: function() {
                        delete this.groupedIter
                    },
                    countable: function() {
                        return !!this.groupedIter
                    },
                    count: function() {
                        return this.groupedIter.count()
                    },
                    _ensureGrouped: function() {
                        if (this.groupedIter) {
                            return
                        }
                        const hash = {};
                        const keys = [];
                        const iter = this.iter;
                        const getter = (0, _data.compileGetter)(this.getter);
                        iter.reset();
                        while (iter.next()) {
                            const current = iter.current();
                            const key = getter(current);
                            if (key in hash) {
                                hash[key].push(current)
                            } else {
                                hash[key] = [current];
                                keys.push(key)
                            }
                        }
                        this.groupedIter = new ArrayIterator((0, _iterator.map)(keys, (function(key) {
                            return {
                                key: key,
                                items: hash[key]
                            }
                        })))
                    }
                });
                const SelectIterator = WrappedIterator.inherit({
                    ctor: function(iter, getter) {
                        this.callBase(iter);
                        this.getter = (0, _data.compileGetter)(getter)
                    },
                    current: function() {
                        return this.getter(this.callBase())
                    },
                    countable: function() {
                        return this.iter.countable()
                    },
                    count: function() {
                        return this.iter.count()
                    }
                });
                const SliceIterator = WrappedIterator.inherit({
                    ctor: function(iter, skip, take) {
                        this.callBase(iter);
                        this.skip = Math.max(0, skip);
                        this.take = Math.max(0, take);
                        this.pos = 0
                    },
                    next: function() {
                        if (this.pos >= this.skip + this.take) {
                            return false
                        }
                        while (this.pos < this.skip && this.iter.next()) {
                            this.pos++
                        }
                        this.pos++;
                        return this.iter.next()
                    },
                    reset: function() {
                        this.callBase();
                        this.pos = 0
                    },
                    countable: function() {
                        return this.iter.countable()
                    },
                    count: function() {
                        return Math.min(this.iter.count() - this.skip, this.take)
                    }
                });
                const arrayQueryImpl = function(iter, queryOptions) {
                    queryOptions = queryOptions || {};
                    if (!(iter instanceof Iterator)) {
                        iter = new ArrayIterator(iter)
                    }
                    if (queryOptions.langParams) {
                        iter.langParams = queryOptions.langParams
                    }
                    const handleError = function(error) {
                        const handler = queryOptions.errorHandler;
                        if (handler) {
                            handler(error)
                        }(0, _errors.handleError)(error)
                    };
                    const aggregateCore = function(aggregator) {
                        const d = (new _deferred.Deferred).fail(handleError);
                        let seed;
                        const step = aggregator.step;
                        const finalize = aggregator.finalize;
                        try {
                            iter.reset();
                            if ("seed" in aggregator) {
                                seed = aggregator.seed
                            } else {
                                seed = iter.next() ? iter.current() : NaN
                            }
                            let accumulator = seed;
                            while (iter.next()) {
                                accumulator = step(accumulator, iter.current())
                            }
                            d.resolve(finalize ? finalize(accumulator) : accumulator)
                        } catch (x) {
                            d.reject(x)
                        }
                        return d.promise()
                    };
                    const standardAggregate = function(name) {
                        return aggregateCore(_utils.aggregators[name])
                    };
                    const select = function(getter) {
                        if (!(0, _type.isFunction)(getter) && !Array.isArray(getter)) {
                            getter = [].slice.call(arguments)
                        }
                        return chainQuery(new SelectIterator(iter, getter))
                    };
                    const selectProp = function(name) {
                        return select((0, _data.compileGetter)(name))
                    };

                    function chainQuery(iter) {
                        return arrayQueryImpl(iter, queryOptions)
                    }
                    return {
                        toArray: function() {
                            return iter.toArray()
                        },
                        enumerate: function() {
                            const d = (new _deferred.Deferred).fail(handleError);
                            try {
                                d.resolve(iter.toArray())
                            } catch (x) {
                                d.reject(x)
                            }
                            return d.promise()
                        },
                        setLangParams(options) {
                            iter.langParams = options
                        },
                        sortBy: function(getter, desc, compare) {
                            return chainQuery(new SortIterator(iter, getter, desc, compare))
                        },
                        thenBy: function(getter, desc, compare) {
                            if (iter instanceof SortIterator) {
                                return chainQuery(iter.thenBy(getter, desc, compare))
                            }
                            throw _errors.errors.Error("E4004")
                        },
                        filter: function(criteria) {
                            if (!Array.isArray(criteria)) {
                                criteria = [].slice.call(arguments)
                            }
                            return chainQuery(new FilterIterator(iter, criteria))
                        },
                        slice: function(skip, take) {
                            if (void 0 === take) {
                                take = Number.MAX_VALUE
                            }
                            return chainQuery(new SliceIterator(iter, skip, take))
                        },
                        select: select,
                        groupBy: function(getter) {
                            return chainQuery(new GroupIterator(iter, getter))
                        },
                        aggregate: function(seed, step, finalize) {
                            if (arguments.length < 2) {
                                return aggregateCore({
                                    step: arguments[0]
                                })
                            }
                            return aggregateCore({
                                seed: seed,
                                step: step,
                                finalize: finalize
                            })
                        },
                        count: function() {
                            if (iter.countable()) {
                                const d = (new _deferred.Deferred).fail(handleError);
                                try {
                                    d.resolve(iter.count())
                                } catch (x) {
                                    d.reject(x)
                                }
                                return d.promise()
                            }
                            return standardAggregate("count")
                        },
                        sum: function(getter) {
                            if (getter) {
                                return selectProp(getter).sum()
                            }
                            return standardAggregate("sum")
                        },
                        min: function(getter) {
                            if (getter) {
                                return selectProp(getter).min()
                            }
                            return standardAggregate("min")
                        },
                        max: function(getter) {
                            if (getter) {
                                return selectProp(getter).max()
                            }
                            return standardAggregate("max")
                        },
                        avg: function(getter) {
                            if (getter) {
                                return selectProp(getter).avg()
                            }
                            return standardAggregate("avg")
                        }
                    }
                };
                var _default = arrayQueryImpl;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        26562:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/array_store.js ***!
              \*****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _utils = __webpack_require__( /*! ./utils */ 16454);
                var _query = _interopRequireDefault(__webpack_require__( /*! ./query */ 96687));
                var _errors = __webpack_require__( /*! ./errors */ 18438);
                var _abstract_store = _interopRequireDefault(__webpack_require__( /*! ./abstract_store */ 67403));
                var _array_utils = __webpack_require__( /*! ./array_utils */ 60637);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const ArrayStore = _abstract_store.default.inherit({
                    ctor: function(options) {
                        if (Array.isArray(options)) {
                            options = {
                                data: options
                            }
                        } else {
                            options = options || {}
                        }
                        this.callBase(options);
                        const initialArray = options.data;
                        if (initialArray && !Array.isArray(initialArray)) {
                            throw _errors.errors.Error("E4006")
                        }
                        this._array = initialArray || []
                    },
                    createQuery: function() {
                        return (0, _query.default)(this._array, {
                            errorHandler: this._errorHandler
                        })
                    },
                    _byKeyImpl: function(key) {
                        const index = (0, _array_utils.indexByKey)(this, this._array, key);
                        if (-1 === index) {
                            return (0, _utils.rejectedPromise)(_errors.errors.Error("E4009"))
                        }
                        return (0, _utils.trivialPromise)(this._array[index])
                    },
                    _insertImpl: function(values) {
                        return (0, _array_utils.insert)(this, this._array, values)
                    },
                    _pushImpl: function(changes) {
                        (0, _array_utils.applyBatch)({
                            keyInfo: this,
                            data: this._array,
                            changes: changes
                        })
                    },
                    _updateImpl: function(key, values) {
                        return (0, _array_utils.update)(this, this._array, key, values)
                    },
                    _removeImpl: function(key) {
                        return (0, _array_utils.remove)(this, this._array, key)
                    },
                    clear: function() {
                        this._eventsStrategy.fireEvent("modifying");
                        this._array = [];
                        this._eventsStrategy.fireEvent("modified")
                    }
                }, "array");
                var _default = ArrayStore;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        60637:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/array_utils.js ***!
              \*****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.applyBatch = applyBatch;
                exports.applyChanges = function(data, changes) {
                    let options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                    const {
                        keyExpr: keyExpr = "id",
                        immutable: immutable = true
                    } = options;
                    const keyGetter = (0, _data.compileGetter)(keyExpr);
                    const keyInfo = {
                        key: () => keyExpr,
                        keyOf: obj => keyGetter(obj)
                    };
                    return applyBatch({
                        keyInfo: keyInfo,
                        data: data,
                        changes: changes,
                        immutable: immutable,
                        disableCache: true,
                        logError: true
                    })
                };
                exports.createObjectWithChanges = createObjectWithChanges;
                exports.indexByKey = indexByKey;
                exports.insert = insert;
                exports.remove = remove;
                exports.update = update;
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _config = _interopRequireDefault(__webpack_require__( /*! ../core/config */ 80209));
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../core/guid */ 73176));
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _errors = __webpack_require__( /*! ./errors */ 18438);
                var _object = __webpack_require__( /*! ../core/utils/object */ 48013);
                var _data = __webpack_require__( /*! ../core/utils/data */ 47617);
                var _utils = __webpack_require__( /*! ./utils */ 16454);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                function getItems(keyInfo, items, key, groupCount) {
                    if (groupCount) {
                        return function findItems(keyInfo, items, key, groupCount) {
                            let childItems;
                            let result;
                            if (groupCount) {
                                for (let i = 0; i < items.length; i++) {
                                    childItems = items[i].items || items[i].collapsedItems || [];
                                    result = findItems(keyInfo, childItems || [], key, groupCount - 1);
                                    if (result) {
                                        return result
                                    }
                                }
                            } else if (indexByKey(keyInfo, items, key) >= 0) {
                                return items
                            }
                        }(keyInfo, items, key, groupCount) || []
                    }
                    return items
                }

                function setDataByKeyMapValue(array, key, data) {
                    if (array._dataByKeyMap) {
                        array._dataByKeyMap[JSON.stringify(key)] = data;
                        array._dataByKeyMapLength += data ? 1 : -1
                    }
                }

                function createObjectWithChanges(target, changes) {
                    const result = function cloneInstanceWithChangedPaths(instance, changes, clonedInstances) {
                        clonedInstances = clonedInstances || new WeakMap;
                        const result = instance ? Object.create(Object.getPrototypeOf(instance)) : {};
                        if (instance) {
                            clonedInstances.set(instance, result)
                        }
                        const instanceWithoutPrototype = _extends({}, instance);
                        (0, _object.deepExtendArraySafe)(result, instanceWithoutPrototype, true, true);
                        for (const name in instanceWithoutPrototype) {
                            const value = instanceWithoutPrototype[name];
                            const change = null === changes || void 0 === changes ? void 0 : changes[name];
                            if ((0, _type.isObject)(value) && !(0, _type.isPlainObject)(value) && (0, _type.isObject)(change) && !clonedInstances.has(value)) {
                                result[name] = cloneInstanceWithChangedPaths(value, change, clonedInstances)
                            }
                        }
                        for (const name in result) {
                            const prop = result[name];
                            if ((0, _type.isObject)(prop) && clonedInstances.has(prop)) {
                                result[name] = clonedInstances.get(prop)
                            }
                        }
                        return result
                    }(target, changes);
                    return (0, _object.deepExtendArraySafe)(result, changes, true, true)
                }

                function applyBatch(_ref) {
                    let {
                        keyInfo: keyInfo,
                        data: data,
                        changes: changes,
                        groupCount: groupCount,
                        useInsertIndex: useInsertIndex,
                        immutable: immutable,
                        disableCache: disableCache,
                        logError: logError,
                        skipCopying: skipCopying
                    } = _ref;
                    const resultItems = true === immutable ? [...data] : data;
                    changes.forEach(item => {
                        const items = "insert" === item.type ? resultItems : getItems(keyInfo, resultItems, item.key, groupCount);
                        !disableCache && function(keyInfo, array) {
                            if (keyInfo.key() && (!array._dataByKeyMap || array._dataByKeyMapLength !== array.length)) {
                                const dataByKeyMap = {};
                                const arrayLength = array.length;
                                for (let i = 0; i < arrayLength; i++) {
                                    dataByKeyMap[JSON.stringify(keyInfo.keyOf(array[i]))] = array[i]
                                }
                                array._dataByKeyMap = dataByKeyMap;
                                array._dataByKeyMapLength = arrayLength
                            }
                        }(keyInfo, items);
                        switch (item.type) {
                            case "update":
                                update(keyInfo, items, item.key, item.data, true, immutable, logError);
                                break;
                            case "insert":
                                insert(keyInfo, items, item.data, useInsertIndex && (0, _type.isDefined)(item.index) ? item.index : -1, true, logError, skipCopying);
                                break;
                            case "remove":
                                remove(keyInfo, items, item.key, true, logError)
                        }
                    });
                    return resultItems
                }

                function getErrorResult(isBatch, logError, errorCode) {
                    return !isBatch ? (0, _utils.rejectedPromise)(_errors.errors.Error(errorCode)) : logError && _errors.errors.log(errorCode)
                }

                function update(keyInfo, array, key, data, isBatch, immutable, logError) {
                    let target;
                    const keyExpr = keyInfo.key();
                    if (keyExpr) {
                        if (function(target, keyOrKeys) {
                                let key;
                                const keys = "string" === typeof keyOrKeys ? keyOrKeys.split() : keyOrKeys.slice();
                                while (keys.length) {
                                    key = keys.shift();
                                    if (key in target) {
                                        return true
                                    }
                                }
                                return false
                            }(data, keyExpr) && !(0, _utils.keysEqual)(keyExpr, key, keyInfo.keyOf(data))) {
                            return getErrorResult(isBatch, logError, "E4017")
                        }
                        target = function(array, key) {
                            if (array._dataByKeyMap) {
                                return array._dataByKeyMap[JSON.stringify(key)]
                            }
                        }(array, key);
                        if (!target) {
                            const index = indexByKey(keyInfo, array, key);
                            if (index < 0) {
                                return getErrorResult(isBatch, logError, "E4009")
                            }
                            target = array[index];
                            if (true === immutable && (0, _type.isDefined)(target)) {
                                const newTarget = createObjectWithChanges(target, data);
                                array[index] = newTarget;
                                return !isBatch && (0, _utils.trivialPromise)(newTarget, key)
                            }
                        }
                    } else {
                        target = key
                    }(0, _object.deepExtendArraySafe)(target, data, true);
                    if (!isBatch) {
                        if ((0, _config.default)().useLegacyStoreResult) {
                            return (0, _utils.trivialPromise)(key, data)
                        } else {
                            return (0, _utils.trivialPromise)(target, key)
                        }
                    }
                }

                function insert(keyInfo, array, data, index, isBatch, logError, skipCopying) {
                    let keyValue;
                    const keyExpr = keyInfo.key();
                    const obj = (0, _type.isPlainObject)(data) && !skipCopying ? (0, _extend.extend)({}, data) : data;
                    if (keyExpr) {
                        keyValue = keyInfo.keyOf(obj);
                        if (void 0 === keyValue || "object" === typeof keyValue && (0, _type.isEmptyObject)(keyValue)) {
                            if (Array.isArray(keyExpr)) {
                                throw _errors.errors.Error("E4007")
                            }
                            keyValue = obj[keyExpr] = String(new _guid.default)
                        } else if (void 0 !== array[indexByKey(keyInfo, array, keyValue)]) {
                            return getErrorResult(isBatch, logError, "E4008")
                        }
                    } else {
                        keyValue = obj
                    }
                    if (index >= 0) {
                        array.splice(index, 0, obj)
                    } else {
                        array.push(obj)
                    }
                    setDataByKeyMapValue(array, keyValue, obj);
                    if (!isBatch) {
                        return (0, _utils.trivialPromise)((0, _config.default)().useLegacyStoreResult ? data : obj, keyValue)
                    }
                }

                function remove(keyInfo, array, key, isBatch, logError) {
                    const index = indexByKey(keyInfo, array, key);
                    if (index > -1) {
                        array.splice(index, 1);
                        setDataByKeyMapValue(array, key, null)
                    }
                    if (!isBatch) {
                        return (0, _utils.trivialPromise)(key)
                    } else if (index < 0) {
                        return getErrorResult(isBatch, logError, "E4009")
                    }
                }

                function indexByKey(keyInfo, array, key) {
                    const keyExpr = keyInfo.key();
                    if (! function(array, key) {
                            if (array._dataByKeyMap) {
                                return array._dataByKeyMap[JSON.stringify(key)]
                            }
                            return true
                        }(array, key)) {
                        return -1
                    }
                    for (let i = 0, arrayLength = array.length; i < arrayLength; i++) {
                        if ((0, _utils.keysEqual)(keyExpr, keyInfo.keyOf(array[i]), key)) {
                            return i
                        }
                    }
                    return -1
                }
            },
        88036:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/custom_store.js ***!
              \******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _utils = __webpack_require__( /*! ./utils */ 16454);
                var _array_utils = __webpack_require__( /*! ./array_utils */ 60637);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _config = _interopRequireDefault(__webpack_require__( /*! ../core/config */ 80209));
                var _errors = __webpack_require__( /*! ./errors */ 18438);
                var _abstract_store = _interopRequireDefault(__webpack_require__( /*! ./abstract_store */ 67403));
                var _array_query = _interopRequireDefault(__webpack_require__( /*! ./array_query */ 35042));
                var _store_helper = _interopRequireDefault(__webpack_require__( /*! ./store_helper */ 99236));
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);

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

                function isPromise(obj) {
                    return obj && (0, _type.isFunction)(obj.then)
                }

                function trivialPromise(value) {
                    return (new _deferred.Deferred).resolve(value).promise()
                }

                function ensureRequiredFuncOption(name, obj) {
                    if (!(0, _type.isFunction)(obj)) {
                        throw _errors.errors.Error("E4011", name)
                    }
                }

                function throwInvalidUserFuncResult(name) {
                    throw _errors.errors.Error("E4012", name)
                }

                function createUserFuncFailureHandler(pendingDeferred) {
                    function errorMessageFromXhr(promiseArguments) {
                        const xhr = promiseArguments[0];
                        const textStatus = promiseArguments[1];
                        if (!xhr || !xhr.getResponseHeader) {
                            return null
                        }
                        return (0, _utils.errorMessageFromXhr)(xhr, textStatus)
                    }
                    return function(arg) {
                        let error;
                        if (arg instanceof Error) {
                            error = arg
                        } else {
                            error = new Error(errorMessageFromXhr(arguments) || arg && String(arg) || "Unknown error")
                        }
                        if (error.message !== _utils.XHR_ERROR_UNLOAD) {
                            pendingDeferred.reject(error)
                        }
                    }
                }

                function invokeUserLoad(store, options) {
                    const userFunc = store._loadFunc;
                    let userResult;
                    ensureRequiredFuncOption("load", userFunc);
                    userResult = userFunc.apply(store, [options]);
                    if (Array.isArray(userResult)) {
                        userResult = trivialPromise(userResult)
                    } else if (null === userResult || void 0 === userResult) {
                        userResult = trivialPromise([])
                    } else if (!isPromise(userResult)) {
                        throwInvalidUserFuncResult("load")
                    }
                    return (0, _deferred.fromPromise)(userResult)
                }

                function runRawLoad(pendingDeferred, store, userFuncOptions, continuation) {
                    if (store.__rawData) {
                        continuation(store.__rawData)
                    } else {
                        const loadPromise = store.__rawDataPromise || invokeUserLoad(store, userFuncOptions);
                        if (store._cacheRawData) {
                            store.__rawDataPromise = loadPromise
                        }
                        loadPromise.always((function() {
                            delete store.__rawDataPromise
                        })).done((function(rawData) {
                            if (store._cacheRawData) {
                                store.__rawData = rawData
                            }
                            continuation(rawData)
                        })).fail(createUserFuncFailureHandler(pendingDeferred))
                    }
                }

                function runRawLoadWithQuery(pendingDeferred, store, options, countOnly) {
                    options = options || {};
                    const userFuncOptions = {};
                    if ("userData" in options) {
                        userFuncOptions.userData = options.userData
                    }
                    runRawLoad(pendingDeferred, store, userFuncOptions, (function(rawData) {
                        const rawDataQuery = (0, _array_query.default)(rawData, {
                            errorHandler: store._errorHandler
                        });
                        let itemsQuery;
                        let totalCountQuery;
                        const waitList = [];
                        let items;
                        let totalCount;
                        if (!countOnly) {
                            itemsQuery = _store_helper.default.queryByOptions(rawDataQuery, options);
                            if (itemsQuery === rawDataQuery) {
                                items = rawData.slice(0)
                            } else {
                                waitList.push(itemsQuery.enumerate().done((function(asyncResult) {
                                    items = asyncResult
                                })))
                            }
                        }
                        if (options.requireTotalCount || countOnly) {
                            totalCountQuery = _store_helper.default.queryByOptions(rawDataQuery, options, true);
                            if (totalCountQuery === rawDataQuery) {
                                totalCount = rawData.length
                            } else {
                                waitList.push(totalCountQuery.count().done((function(asyncResult) {
                                    totalCount = asyncResult
                                })))
                            }
                        }
                        _deferred.when.apply(_renderer.default, waitList).done((function() {
                            if (countOnly) {
                                pendingDeferred.resolve(totalCount)
                            } else if (options.requireTotalCount) {
                                pendingDeferred.resolve(items, {
                                    totalCount: totalCount
                                })
                            } else {
                                pendingDeferred.resolve(items)
                            }
                        })).fail((function(x) {
                            pendingDeferred.reject(x)
                        }))
                    }))
                }
                const CustomStore = _abstract_store.default.inherit({
                    ctor: function(options) {
                        options = options || {};
                        this.callBase(options);
                        this._useDefaultSearch = !!options.useDefaultSearch || "raw" === options.loadMode;
                        this._loadMode = options.loadMode;
                        this._cacheRawData = false !== options.cacheRawData;
                        this._loadFunc = options.load;
                        this._totalCountFunc = options.totalCount;
                        this._byKeyFunc = options.byKey;
                        this._insertFunc = options.insert;
                        this._updateFunc = options.update;
                        this._removeFunc = options.remove
                    },
                    _clearCache() {
                        delete this.__rawData
                    },
                    createQuery: function() {
                        throw _errors.errors.Error("E4010")
                    },
                    clearRawDataCache: function() {
                        this._clearCache()
                    },
                    _totalCountImpl: function(options) {
                        let d = new _deferred.Deferred;
                        if ("raw" === this._loadMode && !this._totalCountFunc) {
                            runRawLoadWithQuery(d, this, options, true)
                        } else {
                            (function(store, options) {
                                const userFunc = store._totalCountFunc;
                                let userResult;
                                if (!(0, _type.isFunction)(userFunc)) {
                                    throw _errors.errors.Error("E4021")
                                }
                                userResult = userFunc.apply(store, [options]);
                                if (!isPromise(userResult)) {
                                    userResult = Number(userResult);
                                    if (!isFinite(userResult)) {
                                        throwInvalidUserFuncResult("totalCount")
                                    }
                                    userResult = trivialPromise(userResult)
                                }
                                return (0, _deferred.fromPromise)(userResult)
                            })(this, options).done((function(count) {
                                d.resolve(Number(count))
                            })).fail(createUserFuncFailureHandler(d));
                            d = this._addFailHandlers(d)
                        }
                        return d.promise()
                    },
                    _pushImpl: function(changes) {
                        if (this.__rawData) {
                            (0, _array_utils.applyBatch)({
                                keyInfo: this,
                                data: this.__rawData,
                                changes: changes
                            })
                        }
                    },
                    _loadImpl: function(options) {
                        let d = new _deferred.Deferred;
                        if ("raw" === this._loadMode) {
                            runRawLoadWithQuery(d, this, options, false)
                        } else {
                            invokeUserLoad(this, options).done((function(data, extra) {
                                d.resolve(data, extra)
                            })).fail(createUserFuncFailureHandler(d));
                            d = this._addFailHandlers(d)
                        }
                        return d.promise()
                    },
                    _byKeyImpl: function(key, extraOptions) {
                        const d = new _deferred.Deferred;
                        if (this._byKeyViaLoad()) {
                            this._requireKey();
                            ! function(pendingDeferred, store, key) {
                                runRawLoad(pendingDeferred, store, {}, (function(rawData) {
                                    const keyExpr = store.key();
                                    let item;
                                    for (let i = 0, len = rawData.length; i < len; i++) {
                                        item = rawData[i];
                                        if ((0, _utils.keysEqual)(keyExpr, store.keyOf(rawData[i]), key)) {
                                            pendingDeferred.resolve(item);
                                            return
                                        }
                                    }
                                    pendingDeferred.reject(_errors.errors.Error("E4009"))
                                }))
                            }(d, this, key)
                        } else {
                            (function(store, key, extraOptions) {
                                const userFunc = store._byKeyFunc;
                                let userResult;
                                ensureRequiredFuncOption("byKey", userFunc);
                                userResult = userFunc.apply(store, [key, extraOptions]);
                                if (!isPromise(userResult)) {
                                    userResult = trivialPromise(userResult)
                                }
                                return (0, _deferred.fromPromise)(userResult)
                            })(this, key, extraOptions).done((function(obj) {
                                d.resolve(obj)
                            })).fail(createUserFuncFailureHandler(d))
                        }
                        return d.promise()
                    },
                    _byKeyViaLoad: function() {
                        return "raw" === this._loadMode && !this._byKeyFunc
                    },
                    _insertImpl: function(values) {
                        const that = this;
                        const userFunc = that._insertFunc;
                        let userResult;
                        const d = new _deferred.Deferred;
                        ensureRequiredFuncOption("insert", userFunc);
                        userResult = userFunc.apply(that, [values]);
                        if (!isPromise(userResult)) {
                            userResult = trivialPromise(userResult)
                        }(0, _deferred.fromPromise)(userResult).done((function(serverResponse) {
                            if ((0, _config.default)().useLegacyStoreResult) {
                                d.resolve(values, serverResponse)
                            } else {
                                d.resolve(serverResponse || values, that.keyOf(serverResponse))
                            }
                        })).fail(createUserFuncFailureHandler(d));
                        return d.promise()
                    },
                    _updateImpl: function(key, values) {
                        const userFunc = this._updateFunc;
                        let userResult;
                        const d = new _deferred.Deferred;
                        ensureRequiredFuncOption("update", userFunc);
                        userResult = userFunc.apply(this, [key, values]);
                        if (!isPromise(userResult)) {
                            userResult = trivialPromise(userResult)
                        }(0, _deferred.fromPromise)(userResult).done((function(serverResponse) {
                            if ((0, _config.default)().useLegacyStoreResult) {
                                d.resolve(key, values)
                            } else {
                                d.resolve(serverResponse || values, key)
                            }
                        })).fail(createUserFuncFailureHandler(d));
                        return d.promise()
                    },
                    _removeImpl: function(key) {
                        const userFunc = this._removeFunc;
                        let userResult;
                        const d = new _deferred.Deferred;
                        ensureRequiredFuncOption("remove", userFunc);
                        userResult = userFunc.apply(this, [key]);
                        if (!isPromise(userResult)) {
                            userResult = trivialPromise()
                        }(0, _deferred.fromPromise)(userResult).done((function() {
                            d.resolve(key)
                        })).fail(createUserFuncFailureHandler(d));
                        return d.promise()
                    }
                });
                var _default = CustomStore;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        33546:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/data_source.js ***!
              \*****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _data_source = __webpack_require__( /*! ./data_source/data_source */ 85273);
                var _default = _data_source.DataSource;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        85273:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/data_source/data_source.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.DataSource = void 0;
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 38377));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _utils = __webpack_require__( /*! ../utils */ 16454);
                var _array_utils = __webpack_require__( /*! ../array_utils */ 60637);
                var _custom_store = _interopRequireDefault(__webpack_require__( /*! ../custom_store */ 88036));
                var _events_strategy = __webpack_require__( /*! ../../core/events_strategy */ 80566);
                var _errors = __webpack_require__( /*! ../errors */ 18438);
                var _queue = __webpack_require__( /*! ../../core/utils/queue */ 59504);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _operation_manager = _interopRequireDefault(__webpack_require__( /*! ./operation_manager */ 88665));
                var _utils2 = __webpack_require__( /*! ./utils */ 9234);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const DataSource = _class.default.inherit({
                    ctor(options) {
                        var _options$reshapeOnPus;
                        options = (0, _utils2.normalizeDataSourceOptions)(options);
                        this._eventsStrategy = new _events_strategy.EventsStrategy(this, {
                            syncStrategy: true
                        });
                        this._store = options.store;
                        this._changedTime = 0;
                        const needThrottling = 0 !== options.pushAggregationTimeout;
                        if (needThrottling) {
                            const throttlingTimeout = void 0 === options.pushAggregationTimeout ? () => 5 * this._changedTime : options.pushAggregationTimeout;
                            let pushDeferred;
                            let lastPushWaiters;
                            const throttlingPushHandler = (0, _utils.throttleChanges)(changes => {
                                pushDeferred.resolve();
                                const storePushPending = (0, _deferred.when)(...lastPushWaiters);
                                storePushPending.done(() => this._onPush(changes));
                                lastPushWaiters = void 0;
                                pushDeferred = void 0
                            }, throttlingTimeout);
                            this._onPushHandler = args => {
                                this._aggregationTimeoutId = throttlingPushHandler(args.changes);
                                if (!pushDeferred) {
                                    pushDeferred = new _deferred.Deferred
                                }
                                lastPushWaiters = args.waitFor;
                                args.waitFor.push(pushDeferred.promise())
                            };
                            this._store.on("beforePushAggregation", this._onPushHandler)
                        } else {
                            this._onPushHandler = changes => this._onPush(changes);
                            this._store.on("push", this._onPushHandler)
                        }
                        this._storeLoadOptions = this._extractLoadOptions(options);
                        this._mapFunc = options.map;
                        this._postProcessFunc = options.postProcess;
                        this._pageIndex = void 0 !== options.pageIndex ? options.pageIndex : 0;
                        this._pageSize = void 0 !== options.pageSize ? options.pageSize : 20;
                        this._loadingCount = 0;
                        this._loadQueue = this._createLoadQueue();
                        this._searchValue = "searchValue" in options ? options.searchValue : null;
                        this._searchOperation = options.searchOperation || "contains";
                        this._searchExpr = options.searchExpr;
                        this._paginate = options.paginate;
                        this._reshapeOnPush = null !== (_options$reshapeOnPus = options.reshapeOnPush) && void 0 !== _options$reshapeOnPus ? _options$reshapeOnPus : false;
                        (0, _iterator.each)(["onChanged", "onLoadError", "onLoadingChanged", "onCustomizeLoadResult", "onCustomizeStoreLoadOptions"], (_, optionName) => {
                            if (optionName in options) {
                                this.on(optionName.substr(2, 1).toLowerCase() + optionName.substr(3), options[optionName])
                            }
                        });
                        this._operationManager = new _operation_manager.default;
                        this._init()
                    },
                    _init() {
                        this._items = [];
                        this._userData = {};
                        this._totalCount = -1;
                        this._isLoaded = false;
                        if (!(0, _type.isDefined)(this._paginate)) {
                            this._paginate = !this.group()
                        }
                        this._isLastPage = !this._paginate
                    },
                    dispose() {
                        var _this$_delayedLoadTas;
                        this._store.off("beforePushAggregation", this._onPushHandler);
                        this._store.off("push", this._onPushHandler);
                        this._eventsStrategy.dispose();
                        clearTimeout(this._aggregationTimeoutId);
                        null === (_this$_delayedLoadTas = this._delayedLoadTask) || void 0 === _this$_delayedLoadTas ? void 0 : _this$_delayedLoadTas.abort();
                        this._operationManager.cancelAll();
                        delete this._store;
                        delete this._items;
                        delete this._delayedLoadTask;
                        this._disposed = true
                    },
                    _extractLoadOptions(options) {
                        const result = {};
                        let names = ["sort", "filter", "langParams", "select", "group", "requireTotalCount"];
                        const customNames = this._store._customLoadOptions();
                        if (customNames) {
                            names = names.concat(customNames)
                        }(0, _iterator.each)(names, (function() {
                            result[this] = options[this]
                        }));
                        return result
                    },
                    loadOptions() {
                        return this._storeLoadOptions
                    },
                    items() {
                        return this._items
                    },
                    pageIndex(newIndex) {
                        if (!(0, _type.isNumeric)(newIndex)) {
                            return this._pageIndex
                        }
                        this._pageIndex = newIndex;
                        this._isLastPage = !this._paginate
                    },
                    paginate(value) {
                        if (!(0, _type.isBoolean)(value)) {
                            return this._paginate
                        }
                        if (this._paginate !== value) {
                            this._paginate = value;
                            this.pageIndex(0)
                        }
                    },
                    pageSize(value) {
                        if (!(0, _type.isNumeric)(value)) {
                            return this._pageSize
                        }
                        this._pageSize = value
                    },
                    isLastPage() {
                        return this._isLastPage
                    },
                    generateStoreLoadOptionAccessor(optionName) {
                        return args => {
                            const normalizedArgs = (0, _utils2.normalizeStoreLoadOptionAccessorArguments)(args);
                            if (void 0 === normalizedArgs) {
                                return this._storeLoadOptions[optionName]
                            }
                            this._storeLoadOptions[optionName] = normalizedArgs
                        }
                    },
                    sort() {
                        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
                            args[_key] = arguments[_key]
                        }
                        return this.generateStoreLoadOptionAccessor("sort")(args)
                    },
                    filter() {
                        const newFilter = (0, _utils2.normalizeStoreLoadOptionAccessorArguments)(arguments);
                        if (void 0 === newFilter) {
                            return this._storeLoadOptions.filter
                        }
                        this._storeLoadOptions.filter = newFilter;
                        this.pageIndex(0)
                    },
                    group() {
                        for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
                            args[_key2] = arguments[_key2]
                        }
                        return this.generateStoreLoadOptionAccessor("group")(args)
                    },
                    select() {
                        for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
                            args[_key3] = arguments[_key3]
                        }
                        return this.generateStoreLoadOptionAccessor("select")(args)
                    },
                    requireTotalCount(value) {
                        if (!(0, _type.isBoolean)(value)) {
                            return this._storeLoadOptions.requireTotalCount
                        }
                        this._storeLoadOptions.requireTotalCount = value
                    },
                    searchValue(value) {
                        if (arguments.length < 1) {
                            return this._searchValue
                        }
                        this._searchValue = value;
                        this.pageIndex(0)
                    },
                    searchOperation(op) {
                        if (!(0, _type.isString)(op)) {
                            return this._searchOperation
                        }
                        this._searchOperation = op;
                        this.pageIndex(0)
                    },
                    searchExpr(expr) {
                        const argc = arguments.length;
                        if (0 === argc) {
                            return this._searchExpr
                        }
                        if (argc > 1) {
                            expr = [].slice.call(arguments)
                        }
                        this._searchExpr = expr;
                        this.pageIndex(0)
                    },
                    store() {
                        return this._store
                    },
                    key() {
                        var _this$_store;
                        return null === (_this$_store = this._store) || void 0 === _this$_store ? void 0 : _this$_store.key()
                    },
                    totalCount() {
                        return this._totalCount
                    },
                    isLoaded() {
                        return this._isLoaded
                    },
                    isLoading() {
                        return this._loadingCount > 0
                    },
                    beginLoading() {
                        this._changeLoadingCount(1)
                    },
                    endLoading() {
                        this._changeLoadingCount(-1)
                    },
                    _createLoadQueue: () => (0, _queue.create)(),
                    _changeLoadingCount(increment) {
                        const oldLoading = this.isLoading();
                        this._loadingCount += increment;
                        const newLoading = this.isLoading();
                        if (oldLoading ^ newLoading) {
                            this._eventsStrategy.fireEvent("loadingChanged", [newLoading])
                        }
                    },
                    _scheduleLoadCallbacks(deferred) {
                        this.beginLoading();
                        deferred.always(() => {
                            this.endLoading()
                        })
                    },
                    _scheduleFailCallbacks(deferred) {
                        var _this = this;
                        deferred.fail((function() {
                            for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
                                args[_key4] = arguments[_key4]
                            }
                            if (args[0] === _utils2.CANCELED_TOKEN) {
                                return
                            }
                            _this._eventsStrategy.fireEvent("loadError", args)
                        }))
                    },
                    _fireChanged(args) {
                        const date = new Date;
                        this._eventsStrategy.fireEvent("changed", args);
                        this._changedTime = new Date - date
                    },
                    _scheduleChangedCallbacks(deferred) {
                        deferred.done(() => this._fireChanged())
                    },
                    loadSingle(propName, propValue) {
                        const d = new _deferred.Deferred;
                        const key = this.key();
                        const store = this._store;
                        const options = this._createStoreLoadOptions();
                        this._scheduleFailCallbacks(d);
                        if (arguments.length < 2) {
                            propValue = propName;
                            propName = key
                        }
                        delete options.skip;
                        delete options.group;
                        delete options.refresh;
                        delete options.pageIndex;
                        delete options.searchString;
                        (() => {
                            if (propName === key || store instanceof _custom_store.default && !store._byKeyViaLoad()) {
                                return store.byKey(propValue, options)
                            }
                            options.take = 1;
                            options.filter = options.filter ? [options.filter, [propName, propValue]] : [propName, propValue];
                            return store.load(options)
                        })().fail(d.reject).done(data => {
                            const isEmptyArray = Array.isArray(data) && !data.length;
                            if (!(0, _type.isDefined)(data) || isEmptyArray) {
                                d.reject(new _errors.errors.Error("E4009"))
                            } else {
                                if (!Array.isArray(data)) {
                                    data = [data]
                                }
                                d.resolve(this._applyMapFunction(data)[0])
                            }
                        });
                        return d.promise()
                    },
                    load() {
                        const d = new _deferred.Deferred;
                        const loadTask = () => {
                            if (this._disposed) {
                                return
                            }
                            if (!(0, _utils2.isPending)(d)) {
                                return
                            }
                            return this._loadFromStore(loadOperation, d)
                        };
                        this._scheduleLoadCallbacks(d);
                        this._scheduleFailCallbacks(d);
                        this._scheduleChangedCallbacks(d);
                        const loadOperation = this._createLoadOperation(d);
                        this._eventsStrategy.fireEvent("customizeStoreLoadOptions", [loadOperation]);
                        this._loadQueue.add(() => {
                            if ("number" === typeof loadOperation.delay) {
                                this._delayedLoadTask = (0, _common.executeAsync)(loadTask, loadOperation.delay)
                            } else {
                                loadTask()
                            }
                            return d.promise()
                        });
                        return d.promise({
                            operationId: loadOperation.operationId
                        })
                    },
                    _onPush(changes) {
                        if (this._reshapeOnPush) {
                            this.load()
                        } else {
                            const changingArgs = {
                                changes: changes
                            };
                            this._eventsStrategy.fireEvent("changing", [changingArgs]);
                            const group = this.group();
                            const items = this.items();
                            let groupLevel = 0;
                            let dataSourceChanges = this.paginate() || group ? changes.filter(item => "update" === item.type) : changes;
                            if (group) {
                                groupLevel = Array.isArray(group) ? group.length : 1
                            }
                            if (this._mapFunc) {
                                dataSourceChanges.forEach(item => {
                                    if ("insert" === item.type) {
                                        item.data = this._mapFunc(item.data)
                                    }
                                })
                            }
                            if (changingArgs.postProcessChanges) {
                                dataSourceChanges = changingArgs.postProcessChanges(dataSourceChanges)
                            }(0, _array_utils.applyBatch)({
                                keyInfo: this.store(),
                                data: items,
                                changes: dataSourceChanges,
                                groupCount: groupLevel,
                                useInsertIndex: true
                            });
                            this._fireChanged([{
                                changes: changes
                            }])
                        }
                    },
                    _createLoadOperation(deferred) {
                        const operationId = this._operationManager.add(deferred);
                        const storeLoadOptions = this._createStoreLoadOptions();
                        if (this._store && !(0, _type.isEmptyObject)(null === storeLoadOptions || void 0 === storeLoadOptions ? void 0 : storeLoadOptions.langParams)) {
                            this._store._langParams = _extends({}, this._store._langParams, storeLoadOptions.langParams)
                        }
                        deferred.always(() => this._operationManager.remove(operationId));
                        return {
                            operationId: operationId,
                            storeLoadOptions: storeLoadOptions
                        }
                    },
                    reload() {
                        const store = this.store();
                        store._clearCache();
                        this._init();
                        return this.load()
                    },
                    cancel(operationId) {
                        return this._operationManager.cancel(operationId)
                    },
                    cancelAll() {
                        return this._operationManager.cancelAll()
                    },
                    _addSearchOptions(storeLoadOptions) {
                        if (this._disposed) {
                            return
                        }
                        if (this.store()._useDefaultSearch) {
                            this._addSearchFilter(storeLoadOptions)
                        } else {
                            storeLoadOptions.searchOperation = this._searchOperation;
                            storeLoadOptions.searchValue = this._searchValue;
                            storeLoadOptions.searchExpr = this._searchExpr
                        }
                    },
                    _createStoreLoadOptions() {
                        const result = (0, _extend.extend)({}, this._storeLoadOptions);
                        this._addSearchOptions(result);
                        if (this._paginate) {
                            if (this._pageSize) {
                                result.skip = this._pageIndex * this._pageSize;
                                result.take = this._pageSize
                            }
                        }
                        result.userData = this._userData;
                        return result
                    },
                    _addSearchFilter(storeLoadOptions) {
                        const value = this._searchValue;
                        const op = this._searchOperation;
                        let selector = this._searchExpr;
                        const searchFilter = [];
                        if (!value) {
                            return
                        }
                        if (!selector) {
                            selector = "this"
                        }
                        if (!Array.isArray(selector)) {
                            selector = [selector]
                        }(0, _iterator.each)(selector, (function(i, item) {
                            if (searchFilter.length) {
                                searchFilter.push("or")
                            }
                            searchFilter.push([item, op, value])
                        }));
                        if (storeLoadOptions.filter) {
                            storeLoadOptions.filter = [searchFilter, storeLoadOptions.filter]
                        } else {
                            storeLoadOptions.filter = searchFilter
                        }
                    },
                    _loadFromStore(loadOptions, pendingDeferred) {
                        const handleSuccess = (data, extra) => {
                            if (this._disposed) {
                                return
                            }
                            if (!(0, _utils2.isPending)(pendingDeferred)) {
                                return
                            }
                            const loadResult = (0, _extend.extend)((0, _utils2.normalizeLoadResult)(data, extra), loadOptions);
                            this._eventsStrategy.fireEvent("customizeLoadResult", [loadResult]);
                            (0, _deferred.when)(loadResult.data).done(data => {
                                loadResult.data = data;
                                this._processStoreLoadResult(loadResult, pendingDeferred)
                            }).fail(pendingDeferred.reject)
                        };
                        if (loadOptions.data) {
                            return (new _deferred.Deferred).resolve(loadOptions.data).done(handleSuccess)
                        }
                        return this.store().load(loadOptions.storeLoadOptions).done(handleSuccess).fail(pendingDeferred.reject)
                    },
                    _processStoreLoadResult(loadResult, pendingDeferred) {
                        let data = loadResult.data;
                        let extra = loadResult.extra;
                        const storeLoadOptions = loadResult.storeLoadOptions;
                        const resolvePendingDeferred = () => {
                            this._isLoaded = true;
                            this._totalCount = isFinite(extra.totalCount) ? extra.totalCount : -1;
                            return pendingDeferred.resolve(data, extra)
                        };
                        const proceedLoadingTotalCount = () => {
                            this.store().totalCount(storeLoadOptions).done((function(count) {
                                extra.totalCount = count;
                                resolvePendingDeferred()
                            })).fail(pendingDeferred.reject)
                        };
                        if (this._disposed) {
                            return
                        }
                        data = this._applyPostProcessFunction(this._applyMapFunction(data));
                        if (!(0, _type.isObject)(extra)) {
                            extra = {}
                        }
                        this._items = data;
                        if (!data.length || !this._paginate || this._pageSize && data.length < this._pageSize) {
                            this._isLastPage = true
                        }
                        if (storeLoadOptions.requireTotalCount && !isFinite(extra.totalCount)) {
                            proceedLoadingTotalCount()
                        } else {
                            resolvePendingDeferred()
                        }
                    },
                    _applyMapFunction(data) {
                        if (this._mapFunc) {
                            return (0, _utils2.mapDataRespectingGrouping)(data, this._mapFunc, this.group())
                        }
                        return data
                    },
                    _applyPostProcessFunction(data) {
                        if (this._postProcessFunc) {
                            return this._postProcessFunc(data)
                        }
                        return data
                    },
                    on(eventName, eventHandler) {
                        this._eventsStrategy.on(eventName, eventHandler);
                        return this
                    },
                    off(eventName, eventHandler) {
                        this._eventsStrategy.off(eventName, eventHandler);
                        return this
                    }
                });
                exports.DataSource = DataSource
            },
        88665:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/data_source/operation_manager.js ***!
              \***********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _utils = __webpack_require__( /*! ./utils */ 9234);
                let OperationManager = function() {
                    function OperationManager() {
                        this._counter = -1;
                        this._deferreds = {}
                    }
                    var _proto = OperationManager.prototype;
                    _proto.add = function(deferred) {
                        this._counter++;
                        this._deferreds[this._counter] = deferred;
                        return this._counter
                    };
                    _proto.remove = function(operationId) {
                        return delete this._deferreds[operationId]
                    };
                    _proto.cancel = function(operationId) {
                        if (operationId in this._deferreds) {
                            this._deferreds[operationId].reject(_utils.CANCELED_TOKEN);
                            return true
                        }
                        return false
                    };
                    _proto.cancelAll = function() {
                        while (this._counter > -1) {
                            this.cancel(this._counter);
                            this._counter--
                        }
                    };
                    return OperationManager
                }();
                exports.default = OperationManager;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        9234:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/data_source/utils.js ***!
              \***********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.normalizeStoreLoadOptionAccessorArguments = exports.normalizeLoadResult = exports.normalizeDataSourceOptions = exports.mapDataRespectingGrouping = exports.isPending = exports.CANCELED_TOKEN = void 0;
                var _ajax = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/ajax */ 37208));
                var _abstract_store = _interopRequireDefault(__webpack_require__( /*! ../abstract_store */ 67403));
                var _array_store = _interopRequireDefault(__webpack_require__( /*! ../array_store */ 26562));
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _custom_store = _interopRequireDefault(__webpack_require__( /*! ../custom_store */ 88036));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _utils = __webpack_require__( /*! ../utils */ 16454);
                const _excluded = ["items"];

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                exports.CANCELED_TOKEN = "canceled";
                exports.isPending = deferred => "pending" === deferred.state();
                exports.normalizeStoreLoadOptionAccessorArguments = originalArguments => {
                    switch (originalArguments.length) {
                        case 0:
                            return;
                        case 1:
                            return originalArguments[0]
                    }
                    return [].slice.call(originalArguments)
                };
                const mapGroup = (group, level, mapper) => (0, _iterator.map)(group, item => {
                    const restItem = function(source, excluded) {
                        if (null == source) {
                            return {}
                        }
                        var target = {};
                        var sourceKeys = Object.keys(source);
                        var key, i;
                        for (i = 0; i < sourceKeys.length; i++) {
                            key = sourceKeys[i];
                            if (excluded.indexOf(key) >= 0) {
                                continue
                            }
                            target[key] = source[key]
                        }
                        return target
                    }(item, _excluded);
                    return _extends({}, restItem, {
                        items: mapRecursive(item.items, level - 1, mapper)
                    })
                });
                const mapRecursive = (items, level, mapper) => {
                    if (!Array.isArray(items)) {
                        return items
                    }
                    return level ? mapGroup(items, level, mapper) : (0, _iterator.map)(items, mapper)
                };
                exports.mapDataRespectingGrouping = (items, mapper, groupInfo) => {
                    const level = groupInfo ? (0, _utils.normalizeSortingInfo)(groupInfo).length : 0;
                    return mapRecursive(items, level, mapper)
                };
                exports.normalizeLoadResult = (data, extra) => {
                    var _data;
                    if (null !== (_data = data) && void 0 !== _data && _data.data) {
                        extra = data;
                        data = data.data
                    }
                    if (!Array.isArray(data)) {
                        data = [data]
                    }
                    return {
                        data: data,
                        extra: extra
                    }
                };
                const createCustomStoreFromLoadFunc = options => {
                    const storeConfig = {};
                    (0, _iterator.each)(["useDefaultSearch", "key", "load", "loadMode", "cacheRawData", "byKey", "lookup", "totalCount", "insert", "update", "remove"], (function() {
                        storeConfig[this] = options[this];
                        delete options[this]
                    }));
                    return new _custom_store.default(storeConfig)
                };
                const createCustomStoreFromUrl = (url, normalizationOptions) => new _custom_store.default({
                    load: () => _ajax.default.sendRequest({
                        url: url,
                        dataType: "json"
                    }),
                    loadMode: null === normalizationOptions || void 0 === normalizationOptions ? void 0 : normalizationOptions.fromUrlLoadMode
                });
                exports.normalizeDataSourceOptions = (options, normalizationOptions) => {
                    let store;
                    if ("string" === typeof options) {
                        options = {
                            paginate: false,
                            store: createCustomStoreFromUrl(options, normalizationOptions)
                        }
                    }
                    if (void 0 === options) {
                        options = []
                    }
                    if (Array.isArray(options) || options instanceof _abstract_store.default) {
                        options = {
                            store: options
                        }
                    } else {
                        options = (0, _extend.extend)({}, options)
                    }
                    if (void 0 === options.store) {
                        options.store = []
                    }
                    store = options.store;
                    if ("load" in options) {
                        store = createCustomStoreFromLoadFunc(options)
                    } else if (Array.isArray(store)) {
                        store = new _array_store.default(store)
                    } else if ((0, _type.isPlainObject)(store)) {
                        store = (storeConfig => {
                            const alias = storeConfig.type;
                            delete storeConfig.type;
                            return _abstract_store.default.create(alias, storeConfig)
                        })((0, _extend.extend)({}, store))
                    }
                    options.store = store;
                    return options
                }
            },
        8162:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/endpoint_selector.js ***!
              \***********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _errors = (obj = __webpack_require__( /*! ../core/errors */ 17381), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                const window = (0, _window.getWindow)();
                let IS_WINJS_ORIGIN;
                let IS_LOCAL_ORIGIN;
                const EndpointSelector = function(config) {
                    this.config = config;
                    IS_WINJS_ORIGIN = "ms-appx:" === window.location.protocol;
                    IS_LOCAL_ORIGIN = (url = window.location.hostname, /^(localhost$|127\.)/i.test(url));
                    var url
                };
                EndpointSelector.prototype = {
                    urlFor: function(key) {
                        const bag = this.config[key];
                        if (!bag) {
                            throw _errors.default.Error("E0006")
                        }
                        if (bag.production) {
                            if (IS_WINJS_ORIGIN && !Debug.debuggerEnabled || !IS_WINJS_ORIGIN && !IS_LOCAL_ORIGIN) {
                                return bag.production
                            }
                        }
                        return bag.local
                    }
                };
                var _default = EndpointSelector;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        18438:
            /*!************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/errors.js ***!
              \************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.setErrorHandler = exports.handleError = exports.errors = exports.errorHandler = void 0;
                var _error = _interopRequireDefault(__webpack_require__( /*! ../core/utils/error */ 95640));
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../core/errors */ 17381));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const errors = (0, _error.default)(_errors.default.ERROR_MESSAGES, {
                    E4000: "[DevExpress.data]: {0}",
                    E4001: "Unknown aggregating function is detected: '{0}'",
                    E4002: "Unsupported OData protocol version is used",
                    E4003: "Unknown filter operation is used: {0}",
                    E4004: "The thenby() method is called before the sortby() method",
                    E4005: "Store requires a key expression for this operation",
                    E4006: "ArrayStore 'data' option must be an array",
                    E4007: "Compound keys cannot be auto-generated",
                    E4008: "Attempt to insert an item with a duplicated key",
                    E4009: "Data item cannot be found",
                    E4010: "CustomStore does not support creating queries",
                    E4011: "Custom Store method is not implemented or is not a function: {0}",
                    E4012: "Custom Store method returns an invalid value: {0}",
                    E4013: "Local Store requires the 'name' configuration option is specified",
                    E4014: "Unknown data type is specified for ODataStore: {0}",
                    E4015: "Unknown entity name or alias is used: {0}",
                    E4016: "The compileSetter(expr) method is called with 'self' passed as a parameter",
                    E4017: "Keys cannot be modified",
                    E4018: "The server has returned a non-numeric value in a response to an item count request",
                    E4019: "Mixing of group operators inside a single group of filter expression is not allowed",
                    E4020: "Unknown store type is detected: {0}",
                    E4021: "The server response does not provide the totalCount value",
                    E4022: "The server response does not provide the groupCount value",
                    E4023: "Could not parse the following XML: {0}",
                    E4024: "String function {0} cannot be used with the data field {1} of type {2}.",
                    W4000: "Data returned from the server has an incorrect structure",
                    W4001: 'The {0} field is listed in both "keyType" and "fieldTypes". The value of "fieldTypes" is used.',
                    W4002: "Data loading has failed for some cells due to the following error: {0}"
                });
                exports.errors = errors;
                let errorHandler = null;
                exports.errorHandler = errorHandler;
                exports.handleError = function(error) {
                    var _errorHandler;
                    null === (_errorHandler = errorHandler) || void 0 === _errorHandler ? void 0 : _errorHandler(error)
                };
                exports.setErrorHandler = handler => exports.errorHandler = errorHandler = handler
            },
        82837:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/local_store.js ***!
              \*****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../events/core/events_engine */ 55994));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../core/dom_adapter */ 73349));
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _class = _interopRequireDefault(__webpack_require__( /*! ../core/class */ 38377));
                var _errors = __webpack_require__( /*! ./errors */ 18438);
                var _array_store = _interopRequireDefault(__webpack_require__( /*! ./array_store */ 26562));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();
                const abstract = _class.default.abstract;
                const LocalStoreBackend = _class.default.inherit({
                    ctor: function(store, storeOptions) {
                        this._store = store;
                        this._dirty = !!storeOptions.data;
                        this.save();
                        const immediate = this._immediate = storeOptions.immediate;
                        const flushInterval = Math.max(100, storeOptions.flushInterval || 1e4);
                        if (!immediate) {
                            const saveProxy = this.save.bind(this);
                            setInterval(saveProxy, flushInterval);
                            _events_engine.default.on(window, "beforeunload", saveProxy);
                            if (window.cordova) {
                                _dom_adapter.default.listen(_dom_adapter.default.getDocument(), "pause", saveProxy, false)
                            }
                        }
                    },
                    notifyChanged: function() {
                        this._dirty = true;
                        if (this._immediate) {
                            this.save()
                        }
                    },
                    load: function() {
                        this._store._array = this._loadImpl();
                        this._dirty = false
                    },
                    save: function() {
                        if (!this._dirty) {
                            return
                        }
                        this._saveImpl(this._store._array);
                        this._dirty = false
                    },
                    _loadImpl: abstract,
                    _saveImpl: abstract
                });
                const DomLocalStoreBackend = LocalStoreBackend.inherit({
                    ctor: function(store, storeOptions) {
                        const name = storeOptions.name;
                        if (!name) {
                            throw _errors.errors.Error("E4013")
                        }
                        this._key = "dx-data-localStore-" + name;
                        this.callBase(store, storeOptions)
                    },
                    _loadImpl: function() {
                        const raw = window.localStorage.getItem(this._key);
                        if (raw) {
                            return JSON.parse(raw)
                        }
                        return []
                    },
                    _saveImpl: function(array) {
                        if (!array.length) {
                            window.localStorage.removeItem(this._key)
                        } else {
                            window.localStorage.setItem(this._key, JSON.stringify(array))
                        }
                    }
                });
                const localStoreBackends = {
                    dom: DomLocalStoreBackend
                };
                const LocalStore = _array_store.default.inherit({
                    ctor: function(options) {
                        if ("string" === typeof options) {
                            options = {
                                name: options
                            }
                        } else {
                            options = options || {}
                        }
                        this.callBase(options);
                        this._backend = new localStoreBackends[options.backend || "dom"](this, options);
                        this._backend.load()
                    },
                    _clearCache() {
                        this._backend.load()
                    },
                    clear: function() {
                        this.callBase();
                        this._backend.notifyChanged()
                    },
                    _insertImpl: function(values) {
                        const b = this._backend;
                        return this.callBase(values).done(b.notifyChanged.bind(b))
                    },
                    _updateImpl: function(key, values) {
                        const b = this._backend;
                        return this.callBase(key, values).done(b.notifyChanged.bind(b))
                    },
                    _removeImpl: function(key) {
                        const b = this._backend;
                        return this.callBase(key).done(b.notifyChanged.bind(b))
                    }
                }, "local");
                var _default = LocalStore;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        47256:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/odata/context.js ***!
              \*******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 38377));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _errors = __webpack_require__( /*! ../errors */ 18438);
                var _store = _interopRequireDefault(__webpack_require__( /*! ./store */ 341));
                var _request_dispatcher = _interopRequireDefault(__webpack_require__( /*! ./request_dispatcher */ 63081));
                var _utils = __webpack_require__( /*! ./utils */ 77869);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                __webpack_require__( /*! ./query_adapter */ 54263);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const ODataContext = _class.default.inherit({
                    ctor(options) {
                        this._requestDispatcher = new _request_dispatcher.default(options);
                        this._errorHandler = options.errorHandler;
                        (0, _iterator.each)(options.entities || [], (entityAlias, entityOptions) => {
                            this[entityAlias] = new _store.default((0, _extend.extend)({}, options, {
                                url: "".concat(this._requestDispatcher.url, "/").concat(encodeURIComponent(entityOptions.name || entityAlias))
                            }, entityOptions))
                        })
                    },
                    get(operationName, params) {
                        return this.invoke(operationName, params, "GET")
                    },
                    invoke(operationName) {
                        let params = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                        let httpMethod = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "POST";
                        httpMethod = httpMethod.toLowerCase();
                        const d = new _deferred.Deferred;
                        let url = "".concat(this._requestDispatcher.url, "/").concat(encodeURIComponent(operationName));
                        let payload;
                        if (4 === this.version()) {
                            if ("get" === httpMethod) {
                                url = (0, _utils.formatFunctionInvocationUrl)(url, (0, _utils.escapeServiceOperationParams)(params, this.version()));
                                params = null
                            } else if ("post" === httpMethod) {
                                payload = params;
                                params = null
                            }
                        }(0, _deferred.when)(this._requestDispatcher.sendRequest(url, httpMethod, (0, _utils.escapeServiceOperationParams)(params, this.version()), payload)).done(r => {
                            if ((0, _type.isPlainObject)(r) && operationName in r) {
                                r = r[operationName]
                            }
                            d.resolve(r)
                        }).fail(this._errorHandler).fail(_errors.handleError).fail(d.reject);
                        return d.promise()
                    },
                    objectLink(entityAlias, key) {
                        const store = this[entityAlias];
                        if (!store) {
                            throw _errors.errors.Error("E4015", entityAlias)
                        }
                        if (!(0, _type.isDefined)(key)) {
                            return null
                        }
                        return {
                            __metadata: {
                                uri: store._byKeyUrl(key)
                            }
                        }
                    },
                    version() {
                        return this._requestDispatcher.version
                    }
                });
                var _default = ODataContext;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        54263:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/odata/query_adapter.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.odata = void 0;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _config = _interopRequireDefault(__webpack_require__( /*! ../../core/config */ 80209));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _query_adapters = _interopRequireDefault(__webpack_require__( /*! ../query_adapters */ 16135));
                var _utils = __webpack_require__( /*! ./utils */ 77869);
                var _errors = __webpack_require__( /*! ../errors */ 18438);
                var _utils2 = __webpack_require__( /*! ../utils */ 16454);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const STRING_FUNCTIONS = ["contains", "notcontains", "startswith", "endswith"];
                const compileCriteria = (() => {
                    let protocolVersion;
                    let forceLowerCase;
                    let fieldTypes;
                    const createBinaryOperationFormatter = op => (prop, val) => "".concat(prop, " ").concat(op, " ").concat(val);
                    const createStringFuncFormatter = (op, reverse) => (prop, val) => {
                        const bag = [op, "("];
                        if (forceLowerCase) {
                            prop = -1 === prop.indexOf("tolower(") ? "tolower(".concat(prop, ")") : prop;
                            val = val.toLowerCase()
                        }
                        if (reverse) {
                            bag.push(val, ",", prop)
                        } else {
                            bag.push(prop, ",", val)
                        }
                        bag.push(")");
                        return bag.join("")
                    };
                    const formatters = {
                        "=": createBinaryOperationFormatter("eq"),
                        "<>": createBinaryOperationFormatter("ne"),
                        ">": createBinaryOperationFormatter("gt"),
                        ">=": createBinaryOperationFormatter("ge"),
                        "<": createBinaryOperationFormatter("lt"),
                        "<=": createBinaryOperationFormatter("le"),
                        startswith: createStringFuncFormatter("startswith"),
                        endswith: createStringFuncFormatter("endswith")
                    };
                    const formattersV2 = (0, _extend.extend)({}, formatters, {
                        contains: createStringFuncFormatter("substringof", true),
                        notcontains: createStringFuncFormatter("not substringof", true)
                    });
                    const formattersV4 = (0, _extend.extend)({}, formatters, {
                        contains: createStringFuncFormatter("contains"),
                        notcontains: createStringFuncFormatter("not contains")
                    });
                    const compileBinary = criteria => {
                        var _fieldTypes;
                        criteria = (0, _utils2.normalizeBinaryCriterion)(criteria);
                        const op = criteria[1];
                        const fieldName = criteria[0];
                        const fieldType = fieldTypes && fieldTypes[fieldName];
                        if (fieldType && (name = op, STRING_FUNCTIONS.some(funcName => funcName === name)) && "String" !== fieldType) {
                            throw new _errors.errors.Error("E4024", op, fieldName, fieldType)
                        }
                        var name;
                        const formatters = 4 === protocolVersion ? formattersV4 : formattersV2;
                        const formatter = formatters[op.toLowerCase()];
                        if (!formatter) {
                            throw _errors.errors.Error("E4003", op)
                        }
                        let value = criteria[2];
                        if (null !== (_fieldTypes = fieldTypes) && void 0 !== _fieldTypes && _fieldTypes[fieldName]) {
                            value = (0, _utils.convertPrimitiveValue)(fieldTypes[fieldName], value)
                        }
                        return formatter((0, _utils.serializePropName)(fieldName), (0, _utils.serializeValue)(value, protocolVersion))
                    };
                    const compileGroup = criteria => {
                        const bag = [];
                        let groupOperator;
                        let nextGroupOperator;
                        (0, _iterator.each)(criteria, (function(index, criterion) {
                            if (Array.isArray(criterion)) {
                                if (bag.length > 1 && groupOperator !== nextGroupOperator) {
                                    throw new _errors.errors.Error("E4019")
                                }
                                bag.push("(".concat(compileCore(criterion), ")"));
                                groupOperator = nextGroupOperator;
                                nextGroupOperator = "and"
                            } else {
                                nextGroupOperator = (0, _utils2.isConjunctiveOperator)(this) ? "and" : "or"
                            }
                        }));
                        return bag.join(" ".concat(groupOperator, " "))
                    };
                    const compileCore = criteria => {
                        if (Array.isArray(criteria[0])) {
                            return compileGroup(criteria)
                        }
                        if ((0, _utils2.isUnaryOperation)(criteria)) {
                            return (criteria => {
                                const op = criteria[0];
                                const crit = compileCore(criteria[1]);
                                if ("!" === op) {
                                    return "not (".concat(crit, ")")
                                }
                                throw _errors.errors.Error("E4003", op)
                            })(criteria)
                        }
                        return compileBinary(criteria)
                    };
                    return (criteria, version, types, filterToLower) => {
                        fieldTypes = types;
                        forceLowerCase = null !== filterToLower && void 0 !== filterToLower ? filterToLower : (0, _config.default)().oDataFilterToLower;
                        protocolVersion = version;
                        return compileCore(criteria)
                    }
                })();
                const createODataQueryAdapter = queryOptions => {
                    let _sorting = [];
                    const _criteria = [];
                    const _expand = queryOptions.expand;
                    let _select;
                    let _skip;
                    let _take;
                    let _countQuery;
                    const _oDataVersion = queryOptions.version || 4;
                    const hasSlice = () => _skip || void 0 !== _take;
                    const hasFunction = criterion => {
                        for (let i = 0; i < criterion.length; i++) {
                            if ((0, _type.isFunction)(criterion[i])) {
                                return true
                            }
                            if (Array.isArray(criterion[i]) && hasFunction(criterion[i])) {
                                return true
                            }
                        }
                        return false
                    };
                    const requestData = () => {
                        const result = {};
                        if (!_countQuery) {
                            if (_sorting.length) {
                                result.$orderby = _sorting.join(",")
                            }
                            if (_skip) {
                                result.$skip = _skip
                            }
                            if (void 0 !== _take) {
                                result.$top = _take
                            }
                            result.$select = (0, _utils.generateSelect)(_oDataVersion, _select) || void 0;
                            result.$expand = (0, _utils.generateExpand)(_oDataVersion, _expand, _select) || void 0
                        }
                        if (_criteria.length) {
                            const criteria = _criteria.length < 2 ? _criteria[0] : _criteria;
                            const fieldTypes = null === queryOptions || void 0 === queryOptions ? void 0 : queryOptions.fieldTypes;
                            const filterToLower = null === queryOptions || void 0 === queryOptions ? void 0 : queryOptions.filterToLower;
                            result.$filter = compileCriteria(criteria, _oDataVersion, fieldTypes, filterToLower)
                        }
                        if (_countQuery) {
                            result.$top = 0
                        }
                        if (queryOptions.requireTotalCount || _countQuery) {
                            if (4 !== _oDataVersion) {
                                result.$inlinecount = "allpages"
                            } else {
                                result.$count = "true"
                            }
                        }
                        return result
                    };
                    return {
                        optimize: tasks => {
                            let selectIndex = -1;
                            for (let i = 0; i < tasks.length; i++) {
                                if ("select" === tasks[i].name) {
                                    selectIndex = i;
                                    break
                                }
                            }
                            if (selectIndex < 0 || !(0, _type.isFunction)(tasks[selectIndex].args[0])) {
                                return
                            }
                            const nextTask = tasks[1 + selectIndex];
                            if (!nextTask || "slice" !== nextTask.name) {
                                return
                            }
                            tasks[1 + selectIndex] = tasks[selectIndex];
                            tasks[selectIndex] = nextTask
                        },
                        exec: url => (0, _utils.sendRequest)(_oDataVersion, {
                            url: url,
                            params: (0, _extend.extend)(requestData(), null === queryOptions || void 0 === queryOptions ? void 0 : queryOptions.params)
                        }, {
                            beforeSend: queryOptions.beforeSend,
                            jsonp: queryOptions.jsonp,
                            withCredentials: queryOptions.withCredentials,
                            countOnly: _countQuery,
                            deserializeDates: queryOptions.deserializeDates,
                            fieldTypes: queryOptions.fieldTypes,
                            isPaged: isFinite(_take)
                        }),
                        multiSort(args) {
                            let rules;
                            if (hasSlice()) {
                                return false
                            }
                            for (let i = 0; i < args.length; i++) {
                                const getter = args[i][0];
                                const desc = !!args[i][1];
                                let rule;
                                if ("string" !== typeof getter) {
                                    return false
                                }
                                rule = (0, _utils.serializePropName)(getter);
                                if (desc) {
                                    rule += " desc"
                                }
                                rules = rules || [];
                                rules.push(rule)
                            }
                            _sorting = rules
                        },
                        slice(skipCount, takeCount) {
                            if (hasSlice()) {
                                return false
                            }
                            _skip = skipCount;
                            _take = takeCount
                        },
                        filter(criterion) {
                            if (hasSlice()) {
                                return false
                            }
                            if (!Array.isArray(criterion)) {
                                criterion = [].slice.call(arguments)
                            }
                            if (hasFunction(criterion)) {
                                return false
                            }
                            if (_criteria.length) {
                                _criteria.push("and")
                            }
                            _criteria.push(criterion)
                        },
                        select(expr) {
                            if (_select || (0, _type.isFunction)(expr)) {
                                return false
                            }
                            if (!Array.isArray(expr)) {
                                expr = [].slice.call(arguments)
                            }
                            _select = expr
                        },
                        count: () => _countQuery = true
                    }
                };
                _query_adapters.default.odata = createODataQueryAdapter;
                const odata = createODataQueryAdapter;
                exports.odata = odata
            },
        63081:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/odata/request_dispatcher.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _utils = __webpack_require__( /*! ./utils */ 77869);
                __webpack_require__( /*! ./query_adapter */ 54263);

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }
                let RequestDispatcher = function() {
                    function RequestDispatcher(options) {
                        options = options || {};
                        this._url = String(options.url).replace(/\/+$/, "");
                        this._beforeSend = options.beforeSend;
                        this._jsonp = options.jsonp;
                        this._version = options.version || 4;
                        this._withCredentials = options.withCredentials;
                        this._deserializeDates = options.deserializeDates;
                        this._filterToLower = options.filterToLower
                    }
                    var _proto = RequestDispatcher.prototype;
                    _proto.sendRequest = function(url, method, params, payload) {
                        return (0, _utils.sendRequest)(this.version, {
                            url: url,
                            method: method,
                            params: params || {},
                            payload: payload
                        }, {
                            beforeSend: this._beforeSend,
                            jsonp: this._jsonp,
                            withCredentials: this._withCredentials,
                            deserializeDates: this._deserializeDates
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(RequestDispatcher, [{
                        key: "version",
                        get: function() {
                            return this._version
                        }
                    }, {
                        key: "beforeSend",
                        get: function() {
                            return this._beforeSend
                        }
                    }, {
                        key: "url",
                        get: function() {
                            return this._url
                        }
                    }, {
                        key: "jsonp",
                        get: function() {
                            return this._jsonp
                        }
                    }, {
                        key: "filterToLower",
                        get: function() {
                            return this._filterToLower
                        }
                    }]);
                    return RequestDispatcher
                }();
                exports.default = RequestDispatcher;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        341:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/odata/store.js ***!
              \*****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _config = _interopRequireDefault(__webpack_require__( /*! ../../core/config */ 80209));
                var _utils = __webpack_require__( /*! ./utils */ 77869);
                var _errors = __webpack_require__( /*! ../errors */ 18438);
                var _query = _interopRequireDefault(__webpack_require__( /*! ../query */ 96687));
                var _abstract_store = _interopRequireDefault(__webpack_require__( /*! ../abstract_store */ 67403));
                var _request_dispatcher = _interopRequireDefault(__webpack_require__( /*! ./request_dispatcher */ 63081));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                __webpack_require__( /*! ./query_adapter */ 54263);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const ODataStore = _abstract_store.default.inherit({
                    ctor(options) {
                        this.callBase(options);
                        this._requestDispatcher = new _request_dispatcher.default(options);
                        let key = this.key();
                        let fieldTypes = options.fieldTypes;
                        let keyType = options.keyType;
                        if (keyType) {
                            const keyTypeIsString = "string" === typeof keyType;
                            if (!key) {
                                key = keyTypeIsString ? "5d46402c-7899-4ea9-bd81-8b73c47c7683" : Object.keys(keyType);
                                this._legacyAnonymousKey = key
                            }
                            if (keyTypeIsString) {
                                keyType = ((key, keyType) => ({
                                    [key]: keyType
                                }))(key, keyType)
                            }
                            fieldTypes = ((fieldTypes, keyType) => {
                                const result = {};
                                for (const field in fieldTypes) {
                                    result[field] = fieldTypes[field]
                                }
                                for (const keyName in keyType) {
                                    if (keyName in result) {
                                        if (result[keyName] !== keyType[keyName]) {
                                            _errors.errors.log("W4001", keyName)
                                        }
                                    } else {
                                        result[keyName] = keyType[keyName]
                                    }
                                }
                                return result
                            })(fieldTypes, keyType)
                        }
                        this._fieldTypes = fieldTypes || {};
                        if (2 === this.version()) {
                            this._updateMethod = "MERGE"
                        } else {
                            this._updateMethod = "PATCH"
                        }
                    },
                    _customLoadOptions: () => ["expand", "customQueryParams"],
                    _byKeyImpl(key, extraOptions) {
                        const params = {};
                        if (extraOptions) {
                            params.$expand = (0, _utils.generateExpand)(this.version(), extraOptions.expand, extraOptions.select) || void 0;
                            params.$select = (0, _utils.generateSelect)(this.version(), extraOptions.select) || void 0
                        }
                        return this._requestDispatcher.sendRequest(this._byKeyUrl(key), "GET", params)
                    },
                    createQuery(loadOptions) {
                        var _loadOptions$urlOverr;
                        let url;
                        const queryOptions = {
                            adapter: "odata",
                            beforeSend: this._requestDispatcher.beforeSend,
                            errorHandler: this._errorHandler,
                            jsonp: this._requestDispatcher.jsonp,
                            version: this._requestDispatcher.version,
                            withCredentials: this._requestDispatcher._withCredentials,
                            expand: null === loadOptions || void 0 === loadOptions ? void 0 : loadOptions.expand,
                            requireTotalCount: null === loadOptions || void 0 === loadOptions ? void 0 : loadOptions.requireTotalCount,
                            deserializeDates: this._requestDispatcher._deserializeDates,
                            fieldTypes: this._fieldTypes
                        };
                        url = null !== (_loadOptions$urlOverr = null === loadOptions || void 0 === loadOptions ? void 0 : loadOptions.urlOverride) && void 0 !== _loadOptions$urlOverr ? _loadOptions$urlOverr : this._requestDispatcher.url;
                        if ((0, _type.isDefined)(this._requestDispatcher.filterToLower)) {
                            queryOptions.filterToLower = this._requestDispatcher.filterToLower
                        }
                        if (null !== loadOptions && void 0 !== loadOptions && loadOptions.customQueryParams) {
                            const params = (0, _utils.escapeServiceOperationParams)(null === loadOptions || void 0 === loadOptions ? void 0 : loadOptions.customQueryParams, this.version());
                            if (4 === this.version()) {
                                url = (0, _utils.formatFunctionInvocationUrl)(url, params)
                            } else {
                                queryOptions.params = params
                            }
                        }
                        return (0, _query.default)(url, queryOptions)
                    },
                    _insertImpl(values) {
                        this._requireKey();
                        const d = new _deferred.Deferred;
                        (0, _deferred.when)(this._requestDispatcher.sendRequest(this._requestDispatcher.url, "POST", null, values)).done(serverResponse => d.resolve(serverResponse && !(0, _config.default)().useLegacyStoreResult ? serverResponse : values, this.keyOf(serverResponse))).fail(d.reject);
                        return d.promise()
                    },
                    _updateImpl(key, values) {
                        const d = new _deferred.Deferred;
                        (0, _deferred.when)(this._requestDispatcher.sendRequest(this._byKeyUrl(key), this._updateMethod, null, values)).done(serverResponse => (0, _config.default)().useLegacyStoreResult ? d.resolve(key, values) : d.resolve(serverResponse || values, key)).fail(d.reject);
                        return d.promise()
                    },
                    _removeImpl(key) {
                        const d = new _deferred.Deferred;
                        (0, _deferred.when)(this._requestDispatcher.sendRequest(this._byKeyUrl(key), "DELETE")).done(() => d.resolve(key)).fail(d.reject);
                        return d.promise()
                    },
                    _convertKey(value) {
                        let result = value;
                        const fieldTypes = this._fieldTypes;
                        const key = this.key() || this._legacyAnonymousKey;
                        if (Array.isArray(key)) {
                            result = {};
                            for (let i = 0; i < key.length; i++) {
                                const keyName = key[i];
                                result[keyName] = (0, _utils.convertPrimitiveValue)(fieldTypes[keyName], value[keyName])
                            }
                        } else if (fieldTypes[key]) {
                            result = (0, _utils.convertPrimitiveValue)(fieldTypes[key], value)
                        }
                        return result
                    },
                    _byKeyUrl(value) {
                        const baseUrl = this._requestDispatcher.url;
                        const convertedKey = this._convertKey(value);
                        return "".concat(baseUrl, "(").concat(encodeURIComponent((0, _utils.serializeKey)(convertedKey, this.version())), ")")
                    },
                    version() {
                        return this._requestDispatcher.version
                    }
                }, "odata");
                var _default = ODataStore;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        77869:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/odata/utils.js ***!
              \*****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.serializeValue = exports.serializePropName = exports.serializeKey = exports.sendRequest = exports.keyConverters = exports.generateSelect = exports.generateExpand = exports.formatFunctionInvocationUrl = exports.escapeServiceOperationParams = exports.convertPrimitiveValue = exports.EdmLiteral = void 0;
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 38377));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _ajax = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/ajax */ 37208));
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 73176));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _errors = __webpack_require__( /*! ../errors */ 18438);
                var _utils = __webpack_require__( /*! ../utils */ 16454);
                var _string = __webpack_require__( /*! ../../core/utils/string */ 68752);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const GUID_REGEX = /^(\{{0,1}([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}\}{0,1})$/;
                const VERBOSE_DATE_REGEX = /^\/Date\((-?\d+)((\+|-)?(\d+)?)\)\/$/;
                const ISO8601_DATE_REGEX = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[-+]{1}\d{2}(:?)(\d{2})?)?$/;
                const JSON_VERBOSE_MIME_TYPE = "application/json;odata=verbose";
                const makeArray = value => "string" === (0, _type.type)(value) ? value.split() : value;
                const hasDot = x => /\./.test(x);
                const pad = (text, length, right) => {
                    text = String(text);
                    while (text.length < length) {
                        text = right ? "".concat(text, "0") : "0".concat(text)
                    }
                    return text
                };
                const formatISO8601 = (date, skipZeroTime, skipTimezone) => {
                    const bag = [];
                    const padLeft2 = text => pad(text, 2);
                    bag.push(date.getFullYear());
                    bag.push("-");
                    bag.push(padLeft2(date.getMonth() + 1));
                    bag.push("-");
                    bag.push(padLeft2(date.getDate()));
                    if (!(skipZeroTime && date.getHours() + date.getMinutes() + date.getSeconds() + date.getMilliseconds() < 1)) {
                        bag.push("T");
                        bag.push(padLeft2(date.getHours()));
                        bag.push(":");
                        bag.push(padLeft2(date.getMinutes()));
                        bag.push(":");
                        bag.push(padLeft2(date.getSeconds()));
                        if (date.getMilliseconds()) {
                            bag.push(".");
                            bag.push(pad(date.getMilliseconds(), 3))
                        }
                        if (!skipTimezone) {
                            bag.push("Z")
                        }
                    }
                    return bag.join("")
                };
                const parseISO8601 = isoString => {
                    const result = new Date(60 * new Date(0).getTimezoneOffset() * 1e3);
                    const chunks = isoString.replace("Z", "").split("T");
                    const date = /(\d{4})-(\d{2})-(\d{2})/.exec(chunks[0]);
                    const time = /(\d{2}):(\d{2}):(\d{2})\.?(\d{0,7})?/.exec(chunks[1]);
                    result.setFullYear(Number(date[1]));
                    result.setMonth(Number(date[2]) - 1);
                    result.setDate(Number(date[3]));
                    if (Array.isArray(time) && time.length) {
                        result.setHours(Number(time[1]));
                        result.setMinutes(Number(time[2]));
                        result.setSeconds(Number(time[3]));
                        let fractional = (time[4] || "").slice(0, 3);
                        fractional = pad(fractional, 3, true);
                        result.setMilliseconds(Number(fractional))
                    }
                    return result
                };
                const param = params => {
                    const result = [];
                    for (const name in params) {
                        result.push(name + "=" + params[name])
                    }
                    return result.join("&")
                };
                const sendRequest = (protocolVersion, request, options) => {
                    const {
                        deserializeDates: deserializeDates,
                        fieldTypes: fieldTypes,
                        countOnly: countOnly,
                        isPaged: isPaged
                    } = options;
                    const d = new _deferred.Deferred;
                    const ajaxOptions = function(protocolVersion, request) {
                        var _options$beforeSend;
                        let options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                        const formatPayload = payload => JSON.stringify(payload, (function(key, value) {
                            if (!(this[key] instanceof Date)) {
                                return value
                            }
                            value = formatISO8601(this[key]);
                            switch (protocolVersion) {
                                case 2:
                                    return value.substr(0, value.length - 1);
                                case 3:
                                case 4:
                                    return value;
                                default:
                                    throw _errors.errors.Error("E4002")
                            }
                        }));
                        request = (0, _extend.extend)({
                            async: true,
                            method: "get",
                            url: "",
                            params: {},
                            payload: null,
                            headers: {},
                            timeout: 3e4
                        }, request);
                        null === (_options$beforeSend = options.beforeSend) || void 0 === _options$beforeSend ? void 0 : _options$beforeSend.call(options, request);
                        const {
                            async: async,
                            timeout: timeout,
                            headers: headers
                        } = request;
                        let {
                            url: url,
                            method: method
                        } = request;
                        const {
                            jsonp: jsonp,
                            withCredentials: withCredentials
                        } = options;
                        method = (method || "get").toLowerCase();
                        const isGet = "get" === method;
                        const useJsonp = isGet && jsonp;
                        const params = (0, _extend.extend)({}, request.params);
                        const ajaxData = isGet ? params : formatPayload(request.payload);
                        const qs = !isGet && param(params);
                        const contentType = !isGet && JSON_VERBOSE_MIME_TYPE;
                        if (qs) {
                            url += (url.indexOf("?") > -1 ? "&" : "?") + qs
                        }
                        if (useJsonp) {
                            ajaxData.$format = "json"
                        }
                        return {
                            url: url,
                            data: ajaxData,
                            dataType: useJsonp ? "jsonp" : "json",
                            jsonp: useJsonp && "$callback",
                            method: method,
                            async: async,
                            timeout: timeout,
                            headers: headers,
                            contentType: contentType,
                            accepts: {
                                json: [JSON_VERBOSE_MIME_TYPE, "text/plain"].join()
                            },
                            xhrFields: {
                                withCredentials: withCredentials
                            }
                        }
                    }(protocolVersion, request, options);
                    _ajax.default.sendRequest(ajaxOptions).always((obj, textStatus) => {
                        const transformOptions = {
                            deserializeDates: deserializeDates,
                            fieldTypes: fieldTypes
                        };
                        const tuple = interpretJsonFormat(obj, textStatus, transformOptions, ajaxOptions);
                        const {
                            error: error,
                            data: data,
                            count: count
                        } = tuple;
                        let {
                            nextUrl: nextUrl
                        } = tuple;
                        if (error) {
                            if (error.message !== _utils.XHR_ERROR_UNLOAD) {
                                d.reject(error)
                            }
                        } else if (countOnly) {
                            if (isFinite(count)) {
                                d.resolve(count)
                            } else {
                                d.reject(new _errors.errors.Error("E4018"))
                            }
                        } else if (nextUrl && !isPaged) {
                            if (!(url = nextUrl, /^(?:[a-z]+:)?\/{2,2}/i.test(url))) {
                                nextUrl = ((basePath, relativePath) => {
                                    let part;
                                    const baseParts = (url => {
                                        const index = url.indexOf("?");
                                        if (index > -1) {
                                            return url.substr(0, index)
                                        }
                                        return url
                                    })(basePath).split("/");
                                    const relativeParts = relativePath.split("/");
                                    baseParts.pop();
                                    while (relativeParts.length) {
                                        part = relativeParts.shift();
                                        if (".." === part) {
                                            baseParts.pop()
                                        } else {
                                            baseParts.push(part)
                                        }
                                    }
                                    return baseParts.join("/")
                                })(ajaxOptions.url, nextUrl)
                            }
                            sendRequest(protocolVersion, {
                                url: nextUrl
                            }, options).fail(d.reject).done(nextData => d.resolve(data.concat(nextData)))
                        } else {
                            const extra = isFinite(count) ? {
                                totalCount: count
                            } : void 0;
                            d.resolve(data, extra)
                        }
                        var url
                    });
                    return d.promise()
                };
                exports.sendRequest = sendRequest;
                const interpretJsonFormat = (obj, textStatus, transformOptions, ajaxOptions) => {
                    const error = ((obj, textStatus, ajaxOptions) => {
                        var _response, _response2, _response3, _response4;
                        if ("nocontent" === textStatus) {
                            return null
                        }
                        let message = "Unknown error";
                        let response = obj;
                        let httpStatus = 200;
                        const errorData = {
                            requestOptions: ajaxOptions
                        };
                        if ("success" !== textStatus) {
                            const {
                                status: status,
                                responseText: responseText
                            } = obj;
                            httpStatus = status;
                            message = (0, _utils.errorMessageFromXhr)(obj, textStatus);
                            try {
                                response = JSON.parse(responseText)
                            } catch (x) {}
                        }
                        const errorObj = (null === (_response = response) || void 0 === _response ? void 0 : _response.then) || (null === (_response2 = response) || void 0 === _response2 ? void 0 : _response2.error) || (null === (_response3 = response) || void 0 === _response3 ? void 0 : _response3["odata.error"]) || (null === (_response4 = response) || void 0 === _response4 ? void 0 : _response4["@odata.error"]);
                        if (errorObj) {
                            message = (errorObj => {
                                let message;
                                let currentMessage;
                                let currentError = errorObj;
                                if ("message" in errorObj) {
                                    var _errorObj$message;
                                    message = (null === (_errorObj$message = errorObj.message) || void 0 === _errorObj$message ? void 0 : _errorObj$message.value) || errorObj.message
                                }
                                while (currentError = currentError.innererror || currentError.internalexception) {
                                    var _currentMessage;
                                    currentMessage = currentError.message;
                                    message = null !== (_currentMessage = currentMessage) && void 0 !== _currentMessage ? _currentMessage : message;
                                    if (currentError.internalexception && -1 === message.indexOf("inner exception")) {
                                        break
                                    }
                                }
                                return message
                            })(errorObj) || message;
                            errorData.errorDetails = errorObj;
                            if (200 === httpStatus) {
                                httpStatus = 500
                            }
                            const customCode = Number(errorObj.code);
                            if (isFinite(customCode) && customCode >= 400) {
                                httpStatus = customCode
                            }
                        }
                        if (httpStatus >= 400 || 0 === httpStatus) {
                            errorData.httpStatus = httpStatus;
                            return (0, _extend.extend)(Error(message), errorData)
                        }
                        return null
                    })(obj, textStatus, ajaxOptions);
                    if (error) {
                        return {
                            error: error
                        }
                    }
                    if (!(0, _type.isPlainObject)(obj)) {
                        return {
                            data: obj
                        }
                    }
                    const value = "d" in obj && (Array.isArray(obj.d) || (0, _type.isObject)(obj.d)) ? interpretVerboseJsonFormat(obj) : interpretLightJsonFormat(obj);
                    transformTypes(value, transformOptions);
                    return value
                };
                const interpretVerboseJsonFormat = _ref => {
                    var _data$results;
                    let {
                        d: data
                    } = _ref;
                    if (!(0, _type.isDefined)(data)) {
                        return {
                            error: Error("Malformed or unsupported JSON response received")
                        }
                    }
                    return {
                        data: null !== (_data$results = data.results) && void 0 !== _data$results ? _data$results : data,
                        nextUrl: data.__next,
                        count: parseInt(data.__count, 10)
                    }
                };
                const interpretLightJsonFormat = obj => {
                    var _obj$value;
                    return {
                        data: null !== (_obj$value = obj.value) && void 0 !== _obj$value ? _obj$value : obj,
                        nextUrl: obj["@odata.nextLink"],
                        count: parseInt(obj["@odata.count"], 10)
                    }
                };
                const EdmLiteral = _class.default.inherit({
                    ctor(value) {
                        this._value = value
                    },
                    valueOf() {
                        return this._value
                    }
                });
                exports.EdmLiteral = EdmLiteral;
                const transformTypes = function(obj) {
                    let options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                    (0, _iterator.each)(obj, (key, value) => {
                        if (null !== value && "object" === typeof value) {
                            if ("results" in value) {
                                obj[key] = value.results
                            }
                            transformTypes(obj[key], options)
                        } else if ("string" === typeof value) {
                            const {
                                fieldTypes: fieldTypes,
                                deserializeDates: deserializeDates
                            } = options;
                            const canBeGuid = !fieldTypes || "String" !== fieldTypes[key];
                            if (canBeGuid && GUID_REGEX.test(value)) {
                                obj[key] = new _guid.default(value)
                            }
                            if (false !== deserializeDates) {
                                if (value.match(VERBOSE_DATE_REGEX)) {
                                    const date = new Date(Number(RegExp.$1) + 60 * RegExp.$2 * 1e3);
                                    obj[key] = new Date(date.valueOf() + 60 * date.getTimezoneOffset() * 1e3)
                                } else if (ISO8601_DATE_REGEX.test(value)) {
                                    obj[key] = new Date(parseISO8601(obj[key]).valueOf())
                                }
                            }
                        }
                    })
                };
                const serializePropName = propName => propName instanceof EdmLiteral ? propName.valueOf() : propName.replace(/\./g, "/");
                exports.serializePropName = serializePropName;
                const serializeValueV4 = value => {
                    if (value instanceof Date) {
                        return formatISO8601(value, false, false)
                    }
                    if (value instanceof _guid.default) {
                        return value.valueOf()
                    }
                    if (Array.isArray(value)) {
                        return "[".concat(value.map(item => serializeValueV4(item)).join(","), "]")
                    }
                    return serializeValueV2(value)
                };
                const serializeValueV2 = value => {
                    if (value instanceof Date) {
                        return date = value, "datetime'".concat(formatISO8601(date, true, true), "'")
                    }
                    var date;
                    if (value instanceof _guid.default) {
                        return "guid'".concat(value, "'")
                    }
                    if (value instanceof EdmLiteral) {
                        return value.valueOf()
                    }
                    if ("string" === typeof value) {
                        return (value => "'".concat(value.replace(/'/g, "''"), "'"))(value)
                    }
                    return String(value)
                };
                const serializeValue = (value, protocolVersion) => {
                    switch (protocolVersion) {
                        case 2:
                        case 3:
                            return serializeValueV2(value);
                        case 4:
                            return serializeValueV4(value);
                        default:
                            throw _errors.errors.Error("E4002")
                    }
                };
                exports.serializeValue = serializeValue;
                exports.serializeKey = (key, protocolVersion) => {
                    if ((0, _type.isPlainObject)(key)) {
                        const parts = [];
                        (0, _iterator.each)(key, (k, v) => parts.push("".concat(serializePropName(k), "=").concat(serializeValue(v, protocolVersion))));
                        return parts.join()
                    }
                    return serializeValue(key, protocolVersion)
                };
                const keyConverters = {
                    String: value => "".concat(value),
                    Int32: value => Math.floor(value),
                    Int64: value => value instanceof EdmLiteral ? value : new EdmLiteral("".concat(value, "L")),
                    Guid: value => value instanceof _guid.default ? value : new _guid.default(value),
                    Boolean: value => !!value,
                    Single: value => value instanceof EdmLiteral ? value : new EdmLiteral(value + "f"),
                    Decimal: value => value instanceof EdmLiteral ? value : new EdmLiteral(value + "m")
                };
                exports.keyConverters = keyConverters;
                exports.convertPrimitiveValue = (type, value) => {
                    if (null === value) {
                        return null
                    }
                    const converter = keyConverters[type];
                    if (!converter) {
                        throw _errors.errors.Error("E4014", type)
                    }
                    return converter(value)
                };
                exports.generateSelect = (oDataVersion, select) => {
                    if (!select) {
                        return
                    }
                    return oDataVersion < 4 ? serializePropName(select.join()) : (0, _common.grep)(select, hasDot, true).join()
                };
                const formatCore = hash => {
                    let result = "";
                    const selectValue = [];
                    const expandValue = [];
                    (0, _iterator.each)(hash, (key, value) => {
                        if (Array.isArray(value)) {
                            [].push.apply(selectValue, value)
                        }
                        if ((0, _type.isPlainObject)(value)) {
                            expandValue.push("".concat(key).concat(formatCore(value)))
                        }
                    });
                    if (selectValue.length || expandValue.length) {
                        result += "(";
                        if (selectValue.length) {
                            result += "$select=".concat((0, _iterator.map)(selectValue, serializePropName).join())
                        }
                        if (expandValue.length) {
                            if (selectValue.length) {
                                result += ";"
                            }
                            result += "$expand=".concat((0, _iterator.map)(expandValue, serializePropName).join())
                        }
                        result += ")"
                    }
                    return result
                };
                const parseCore = (exprParts, root, stepper) => {
                    const result = stepper(root, exprParts.shift(), exprParts);
                    if (false === result) {
                        return
                    }
                    parseCore(exprParts, result, stepper)
                };
                const parseTree = (exprs, root, stepper) => (0, _iterator.each)(exprs, (_, x) => parseCore(x.split("."), root, stepper));
                const generatorV2 = (expand, select) => {
                    const hash = {};
                    if (expand) {
                        (0, _iterator.each)(makeArray(expand), (function() {
                            hash[serializePropName(this)] = 1
                        }))
                    }
                    if (select) {
                        (0, _iterator.each)(makeArray(select), (function() {
                            const path = this.split(".");
                            if (path.length < 2) {
                                return
                            }
                            path.pop();
                            hash[serializePropName(path.join("."))] = 1
                        }))
                    }
                    return (0, _iterator.map)(hash, (_, v) => v).join()
                };
                const generatorV4 = (expand, select) => {
                    const hash = {};
                    if (expand || select) {
                        if (expand) {
                            parseTree(makeArray(expand), hash, (node, key, path) => {
                                node[key] = node[key] || {};
                                return !path.length ? false : node[key]
                            })
                        }
                        if (select) {
                            parseTree((0, _common.grep)(makeArray(select), hasDot), hash, (node, key, path) => {
                                if (!path.length) {
                                    node[key] = node[key] || [];
                                    node[key].push(key);
                                    return false
                                }
                                return node[key] = node[key] || {}
                            })
                        }
                        return (hash => {
                            const result = [];
                            (0, _iterator.each)(hash, (key, value) => result.push("".concat(key).concat(formatCore(value))));
                            return result.join()
                        })(hash)
                    }
                };
                exports.generateExpand = (oDataVersion, expand, select) => oDataVersion < 4 ? generatorV2(expand, select) : generatorV4(expand, select);
                exports.formatFunctionInvocationUrl = (baseUrl, args) => (0, _string.format)("{0}({1})", baseUrl, (0, _iterator.map)(args || {}, (value, key) => (0, _string.format)("{0}={1}", key, value)).join(","));
                exports.escapeServiceOperationParams = (params, version) => {
                    if (!params) {
                        return params
                    }
                    const result = {};
                    (0, _iterator.each)(params, (k, v) => {
                        result[k] = serializeValue(v, version)
                    });
                    return result
                }
            },
        96687:
            /*!***********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/query.js ***!
              \***********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _query_implementation = __webpack_require__( /*! ./query_implementation */ 77549);
                var _default = function() {
                    const impl = Array.isArray(arguments[0]) ? "array" : "remote";
                    return _query_implementation.queryImpl[impl].apply(this, arguments)
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        16135:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/query_adapters.js ***!
              \********************************************************************/
            function(module, exports) {
                exports.default = void 0;
                exports.default = {};
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        77549:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/query_implementation.js ***!
              \**************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.queryImpl = void 0;
                var _array_query = _interopRequireDefault(__webpack_require__( /*! ./array_query */ 35042));
                var _remote_query = _interopRequireDefault(__webpack_require__( /*! ./remote_query */ 41428));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const queryImpl = {
                    array: _array_query.default,
                    remote: _remote_query.default
                };
                exports.queryImpl = queryImpl
            },
        41428:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/remote_query.js ***!
              \******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _query_adapters = _interopRequireDefault(__webpack_require__( /*! ./query_adapters */ 16135));
                var _errors = __webpack_require__( /*! ./errors */ 18438);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);
                var _array_query = _interopRequireDefault(__webpack_require__( /*! ./array_query */ 35042));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const remoteQueryImpl = function(url, queryOptions, tasks) {
                    tasks = tasks || [];
                    queryOptions = queryOptions || {};
                    const createTask = function(name, args) {
                        return {
                            name: name,
                            args: args
                        }
                    };
                    const exec = function(executorTask) {
                        const d = new _deferred.Deferred;
                        let _adapterFactory;
                        let _adapter;
                        let _taskQueue;
                        let _currentTask;
                        let _mergedSortArgs;
                        const rejectWithNotify = function(error) {
                            const handler = queryOptions.errorHandler;
                            if (handler) {
                                handler(error)
                            }(0, _errors.handleError)(error);
                            d.reject(error)
                        };

                        function mergeSortTask(task) {
                            switch (task.name) {
                                case "sortBy":
                                    _mergedSortArgs = [task.args];
                                    return true;
                                case "thenBy":
                                    if (!_mergedSortArgs) {
                                        throw _errors.errors.Error("E4004")
                                    }
                                    _mergedSortArgs.push(task.args);
                                    return true
                            }
                            return false
                        }
                        try {
                            _adapterFactory = queryOptions.adapter;
                            if (!(0, _type.isFunction)(_adapterFactory)) {
                                _adapterFactory = _query_adapters.default[_adapterFactory]
                            }
                            _adapter = _adapterFactory(queryOptions);
                            _taskQueue = [].concat(tasks).concat(executorTask);
                            const optimize = _adapter.optimize;
                            if (optimize) {
                                optimize(_taskQueue)
                            }
                            while (_taskQueue.length) {
                                _currentTask = _taskQueue[0];
                                if (!mergeSortTask(_currentTask)) {
                                    if (_mergedSortArgs) {
                                        _taskQueue.unshift(createTask("multiSort", [_mergedSortArgs]));
                                        _mergedSortArgs = null;
                                        continue
                                    }
                                    if ("enumerate" !== String(_currentTask.name)) {
                                        if (!_adapter[_currentTask.name] || false === _adapter[_currentTask.name].apply(_adapter, _currentTask.args)) {
                                            break
                                        }
                                    }
                                }
                                _taskQueue.shift()
                            }! function() {
                                const head = _taskQueue[0];
                                const unmergedTasks = [];
                                if (head && "multiSort" === head.name) {
                                    _taskQueue.shift();
                                    (0, _iterator.each)(head.args[0], (function() {
                                        unmergedTasks.push(createTask(unmergedTasks.length ? "thenBy" : "sortBy", this))
                                    }))
                                }
                                _taskQueue = unmergedTasks.concat(_taskQueue)
                            }();
                            _adapter.exec(url).done((function(result, extra) {
                                if (!_taskQueue.length) {
                                    d.resolve(result, extra)
                                } else {
                                    let clientChain = (0, _array_query.default)(result, {
                                        errorHandler: queryOptions.errorHandler
                                    });
                                    (0, _iterator.each)(_taskQueue, (function() {
                                        clientChain = clientChain[this.name].apply(clientChain, this.args)
                                    }));
                                    clientChain.done(d.resolve).fail(d.reject)
                                }
                            })).fail(rejectWithNotify)
                        } catch (x) {
                            rejectWithNotify(x)
                        }
                        return d.promise()
                    };
                    const query = {};
                    (0, _iterator.each)(["sortBy", "thenBy", "filter", "slice", "select", "groupBy"], (function() {
                        const name = String(this);
                        query[name] = function() {
                            return remoteQueryImpl(url, queryOptions, tasks.concat(createTask(name, arguments)))
                        }
                    }));
                    (0, _iterator.each)(["count", "min", "max", "sum", "avg", "aggregate", "enumerate"], (function() {
                        const name = String(this);
                        query[name] = function() {
                            return exec.call(this, createTask(name, arguments))
                        }
                    }));
                    return query
                };
                var _default = remoteQueryImpl;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        99236:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/store_helper.js ***!
              \******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _array_query = (obj = __webpack_require__( /*! ./array_query */ 35042), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _utils = __webpack_require__( /*! ./utils */ 16454);

                function multiLevelGroup(query, groupInfo) {
                    query = query.groupBy(groupInfo[0].selector);
                    if (groupInfo.length > 1) {
                        query = query.select((function(g) {
                            return (0, _extend.extend)({}, g, {
                                items: multiLevelGroup((0, _array_query.default)(g.items), groupInfo.slice(1)).toArray()
                            })
                        }))
                    }
                    return query
                }

                function arrangeSortingInfo(groupInfo, sortInfo) {
                    const filteredGroup = [];
                    (0, _iterator.each)(groupInfo, (function(_, group) {
                        const collision = (0, _common.grep)(sortInfo, (function(sort) {
                            return group.selector === sort.selector
                        }));
                        if (collision.length < 1) {
                            filteredGroup.push(group)
                        }
                    }));
                    return filteredGroup.concat(sortInfo)
                }
                var _default = {
                    multiLevelGroup: multiLevelGroup,
                    arrangeSortingInfo: arrangeSortingInfo,
                    queryByOptions: function(query, options, isCountQuery) {
                        var _options;
                        options = options || {};
                        const filter = options.filter;
                        if (null !== (_options = options) && void 0 !== _options && _options.langParams) {
                            var _query$setLangParams, _query;
                            null === (_query$setLangParams = (_query = query).setLangParams) || void 0 === _query$setLangParams ? void 0 : _query$setLangParams.call(_query, options.langParams)
                        }
                        if (filter) {
                            query = query.filter(filter)
                        }
                        if (isCountQuery) {
                            return query
                        }
                        let sort = options.sort;
                        const select = options.select;
                        let group = options.group;
                        const skip = options.skip;
                        const take = options.take;
                        if (group) {
                            group = (0, _utils.normalizeSortingInfo)(group);
                            group.keepInitialKeyOrder = !!options.group.keepInitialKeyOrder
                        }
                        if (sort || group) {
                            sort = (0, _utils.normalizeSortingInfo)(sort || []);
                            if (group && !group.keepInitialKeyOrder) {
                                sort = arrangeSortingInfo(group, sort)
                            }(0, _iterator.each)(sort, (function(index) {
                                query = query[index ? "thenBy" : "sortBy"](this.selector, this.desc, this.compare)
                            }))
                        }
                        if (select) {
                            query = query.select(select)
                        }
                        if (group) {
                            query = multiLevelGroup(query, group)
                        }
                        if (take || skip) {
                            query = query.slice(skip || 0, take)
                        }
                        return query
                    }
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        16454:
            /*!***********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data/utils.js ***!
              \***********************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.errorMessageFromXhr = exports.base64_encode = exports.aggregators = exports.XHR_ERROR_UNLOAD = void 0;
                exports.isConjunctiveOperator = function(condition) {
                    return /^(and|&&|&)$/i.test(condition)
                };
                exports.isDisjunctiveOperator = function(condition) {
                    return /^(or|\|\||\|)$/i.test(condition)
                };
                exports.rejectedPromise = exports.processRequestResultLock = exports.normalizeSortingInfo = exports.normalizeBinaryCriterion = exports.keysEqual = exports.isUnaryOperation = exports.isGroupCriterion = void 0;
                exports.throttleChanges = function(func, timeout) {
                    let cache = [];
                    const throttled = function(func, timeout) {
                        let timeoutId;
                        return function() {
                            if (!timeoutId) {
                                timeoutId = setTimeout(() => {
                                    timeoutId = void 0;
                                    func.call(this)
                                }, (0, _type.isFunction)(timeout) ? timeout() : timeout)
                            }
                            return timeoutId
                        }
                    }((function() {
                        func.call(this, cache);
                        cache = []
                    }), timeout);
                    return function(changes) {
                        if (Array.isArray(changes)) {
                            cache.push(...changes)
                        }
                        return throttled.call(this, cache)
                    }
                };
                exports.trivialPromise = void 0;
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../core/dom_adapter */ 73349));
                var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../core/utils/ready_callbacks */ 24311));
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const ready = _ready_callbacks.default.add;
                exports.XHR_ERROR_UNLOAD = "DEVEXTREME_XHR_ERROR_UNLOAD";
                exports.normalizeBinaryCriterion = function(crit) {
                    return [crit[0], crit.length < 3 ? "=" : String(crit[1]).toLowerCase(), crit.length < 2 ? true : crit[crit.length - 1]]
                };
                exports.normalizeSortingInfo = function(info) {
                    if (!Array.isArray(info)) {
                        info = [info]
                    }
                    return (0, _iterator.map)(info, (function(i) {
                        const result = {
                            selector: (0, _type.isFunction)(i) || "string" === typeof i ? i : i.getter || i.field || i.selector,
                            desc: !!(i.desc || "d" === String(i.dir).charAt(0).toLowerCase())
                        };
                        if (i.compare) {
                            result.compare = i.compare
                        }
                        return result
                    }))
                };
                const errorMessageFromXhr = function() {
                    const textStatusMessages = {
                        timeout: "Network connection timeout",
                        error: "Unspecified network error",
                        parsererror: "Unexpected server response"
                    };
                    let unloading;
                    ready((function() {
                        const window = (0, _window.getWindow)();
                        _dom_adapter.default.listen(window, "beforeunload", (function() {
                            unloading = true
                        }))
                    }));
                    return function(xhr, textStatus) {
                        if (unloading) {
                            return "DEVEXTREME_XHR_ERROR_UNLOAD"
                        }
                        if (xhr.status < 400) {
                            return function(textStatus) {
                                let result = textStatusMessages[textStatus];
                                if (!result) {
                                    return textStatus
                                }
                                return result
                            }(textStatus)
                        }
                        return xhr.statusText
                    }
                }();
                exports.errorMessageFromXhr = errorMessageFromXhr;
                const aggregators = {
                    count: {
                        seed: 0,
                        step: function(count) {
                            return 1 + count
                        }
                    },
                    sum: {
                        seed: 0,
                        step: function(sum, item) {
                            return sum + item
                        }
                    },
                    min: {
                        step: function(min, item) {
                            return item < min ? item : min
                        }
                    },
                    max: {
                        step: function(max, item) {
                            return item > max ? item : max
                        }
                    },
                    avg: {
                        seed: [0, 0],
                        step: function(pair, value) {
                            return [pair[0] + value, pair[1] + 1]
                        },
                        finalize: function(pair) {
                            return pair[1] ? pair[0] / pair[1] : NaN
                        }
                    }
                };
                exports.aggregators = aggregators;
                const processRequestResultLock = function() {
                    let lockCount = 0;
                    let lockDeferred;
                    return {
                        obtain: function() {
                            if (0 === lockCount) {
                                lockDeferred = new _deferred.Deferred
                            }
                            lockCount++
                        },
                        release: function() {
                            lockCount--;
                            if (lockCount < 1) {
                                lockDeferred.resolve()
                            }
                        },
                        promise: function() {
                            const deferred = 0 === lockCount ? (new _deferred.Deferred).resolve() : lockDeferred;
                            return deferred.promise()
                        },
                        reset: function() {
                            lockCount = 0;
                            if (lockDeferred) {
                                lockDeferred.resolve()
                            }
                        }
                    }
                }();
                exports.processRequestResultLock = processRequestResultLock;
                exports.keysEqual = function(keyExpr, key1, key2) {
                    if (Array.isArray(keyExpr)) {
                        const names = (0, _iterator.map)(key1, (function(v, k) {
                            return k
                        }));
                        let name;
                        for (let i = 0; i < names.length; i++) {
                            name = names[i];
                            if (!(0, _common.equalByValue)(key1[name], key2[name], {
                                    strict: false
                                })) {
                                return false
                            }
                        }
                        return true
                    }
                    return (0, _common.equalByValue)(key1, key2, {
                        strict: false
                    })
                };
                exports.base64_encode = function(input) {
                    if (!Array.isArray(input)) {
                        input = function(str) {
                            const bytes = [];
                            let code;
                            let i;
                            for (i = 0; i < str.length; i++) {
                                code = str.charCodeAt(i);
                                if (code < 128) {
                                    bytes.push(code)
                                } else if (code < 2048) {
                                    bytes.push(192 + (code >> 6), 128 + (63 & code))
                                } else if (code < 65536) {
                                    bytes.push(224 + (code >> 12), 128 + (code >> 6 & 63), 128 + (63 & code))
                                } else if (code < 2097152) {
                                    bytes.push(240 + (code >> 18), 128 + (code >> 12 & 63), 128 + (code >> 6 & 63), 128 + (63 & code))
                                }
                            }
                            return bytes
                        }(String(input))
                    }
                    let result = "";

                    function getBase64Char(index) {
                        return "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(index)
                    }
                    for (let i = 0; i < input.length; i += 3) {
                        const octet1 = input[i];
                        const octet2 = input[i + 1];
                        const octet3 = input[i + 2];
                        result += (0, _iterator.map)([octet1 >> 2, (3 & octet1) << 4 | octet2 >> 4, isNaN(octet2) ? 64 : (15 & octet2) << 2 | octet3 >> 6, isNaN(octet3) ? 64 : 63 & octet3], getBase64Char).join("")
                    }
                    return result
                };
                exports.isUnaryOperation = function(crit) {
                    return "!" === crit[0] && Array.isArray(crit[1])
                };
                exports.isGroupCriterion = function(crit) {
                    const first = crit[0];
                    const second = crit[1];
                    if (Array.isArray(first)) {
                        return true
                    }
                    if ((0, _type.isFunction)(first)) {
                        if (Array.isArray(second) || (0, _type.isFunction)(second) || (value = second, "and" === value || "or" === value)) {
                            return true
                        }
                    }
                    var value;
                    return false
                };
                exports.trivialPromise = function() {
                    const d = new _deferred.Deferred;
                    return d.resolve.apply(d, arguments).promise()
                };
                exports.rejectedPromise = function() {
                    const d = new _deferred.Deferred;
                    return d.reject.apply(d, arguments).promise()
                }
            },
        53305:
            /*!************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/data_helper.js ***!
              \************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _data_source = __webpack_require__( /*! ./data/data_source/data_source */ 85273);
                var _extend = __webpack_require__( /*! ./core/utils/extend */ 13306);
                var _utils = __webpack_require__( /*! ./data/data_source/utils */ 9234);
                var _data_controller = (obj = __webpack_require__( /*! ./ui/collection/data_controller */ 97326), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const DataHelperMixin = {
                    postCtor: function() {
                        this.on("disposing", function() {
                            this._disposeDataSource()
                        }.bind(this))
                    },
                    _refreshDataSource: function() {
                        this._initDataSource();
                        this._loadDataSource()
                    },
                    _initDataSource: function() {
                        let dataSourceOptions = "_getSpecificDataSourceOption" in this ? this._getSpecificDataSourceOption() : this.option("dataSource");
                        let widgetDataSourceOptions;
                        let dataSourceType;
                        this._disposeDataSource();
                        if (dataSourceOptions) {
                            if (dataSourceOptions instanceof _data_source.DataSource) {
                                this._isSharedDataSource = true;
                                this._dataSource = dataSourceOptions
                            } else {
                                widgetDataSourceOptions = "_dataSourceOptions" in this ? this._dataSourceOptions() : {};
                                dataSourceType = this._dataSourceType ? this._dataSourceType() : _data_source.DataSource;
                                dataSourceOptions = (0, _utils.normalizeDataSourceOptions)(dataSourceOptions, {
                                    fromUrlLoadMode: "_dataSourceFromUrlLoadMode" in this && this._dataSourceFromUrlLoadMode()
                                });
                                this._dataSource = new dataSourceType((0, _extend.extend)(true, {}, widgetDataSourceOptions, dataSourceOptions))
                            }
                            if ("_normalizeDataSource" in this) {
                                this._dataSource = this._normalizeDataSource(this._dataSource)
                            }
                            this._addDataSourceHandlers();
                            this._initDataController()
                        }
                    },
                    _initDataController: function() {
                        var _this$option;
                        const dataController = null === (_this$option = this.option) || void 0 === _this$option ? void 0 : _this$option.call(this, "_dataController");
                        const dataSource = this._dataSource;
                        if (dataController) {
                            this._dataController = dataController
                        } else {
                            this._dataController = new _data_controller.default(dataSource)
                        }
                    },
                    _addDataSourceHandlers: function() {
                        if ("_dataSourceChangedHandler" in this) {
                            this._addDataSourceChangeHandler()
                        }
                        if ("_dataSourceLoadErrorHandler" in this) {
                            this._addDataSourceLoadErrorHandler()
                        }
                        if ("_dataSourceLoadingChangedHandler" in this) {
                            this._addDataSourceLoadingChangedHandler()
                        }
                        this._addReadyWatcher()
                    },
                    _addReadyWatcher: function() {
                        this.readyWatcher = function(isLoading) {
                            this._ready && this._ready(!isLoading)
                        }.bind(this);
                        this._dataSource.on("loadingChanged", this.readyWatcher)
                    },
                    _addDataSourceChangeHandler: function() {
                        const dataSource = this._dataSource;
                        this._proxiedDataSourceChangedHandler = function(e) {
                            this._dataSourceChangedHandler(dataSource.items(), e)
                        }.bind(this);
                        dataSource.on("changed", this._proxiedDataSourceChangedHandler)
                    },
                    _addDataSourceLoadErrorHandler: function() {
                        this._proxiedDataSourceLoadErrorHandler = this._dataSourceLoadErrorHandler.bind(this);
                        this._dataSource.on("loadError", this._proxiedDataSourceLoadErrorHandler)
                    },
                    _addDataSourceLoadingChangedHandler: function() {
                        this._proxiedDataSourceLoadingChangedHandler = this._dataSourceLoadingChangedHandler.bind(this);
                        this._dataSource.on("loadingChanged", this._proxiedDataSourceLoadingChangedHandler)
                    },
                    _loadDataSource: function() {
                        const dataSource = this._dataSource;
                        if (dataSource) {
                            if (dataSource.isLoaded()) {
                                this._proxiedDataSourceChangedHandler && this._proxiedDataSourceChangedHandler()
                            } else {
                                dataSource.load()
                            }
                        }
                    },
                    _loadSingle: function(key, value) {
                        key = "this" === key ? this._dataSource.key() || "this" : key;
                        return this._dataSource.loadSingle(key, value)
                    },
                    _isLastPage: function() {
                        return !this._dataSource || this._dataSource.isLastPage() || !this._dataSource._pageSize
                    },
                    _isDataSourceLoading: function() {
                        return this._dataSource && this._dataSource.isLoading()
                    },
                    _disposeDataSource: function() {
                        if (this._dataSource) {
                            if (this._isSharedDataSource) {
                                delete this._isSharedDataSource;
                                this._proxiedDataSourceChangedHandler && this._dataSource.off("changed", this._proxiedDataSourceChangedHandler);
                                this._proxiedDataSourceLoadErrorHandler && this._dataSource.off("loadError", this._proxiedDataSourceLoadErrorHandler);
                                this._proxiedDataSourceLoadingChangedHandler && this._dataSource.off("loadingChanged", this._proxiedDataSourceLoadingChangedHandler);
                                if (this._dataSource._eventsStrategy) {
                                    this._dataSource._eventsStrategy.off("loadingChanged", this.readyWatcher)
                                }
                            } else {
                                this._dataSource.dispose()
                            }
                            delete this._dataSource;
                            delete this._proxiedDataSourceChangedHandler;
                            delete this._proxiedDataSourceLoadErrorHandler;
                            delete this._proxiedDataSourceLoadingChangedHandler
                        }
                    },
                    getDataSource: function() {
                        return this._dataSource || null
                    }
                };
                var _default = DataHelperMixin;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        95429:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/click.js ***!
              \*************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.name = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../events/core/events_engine */ 55994));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../core/devices */ 20530));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../core/dom_adapter */ 73349));
                var _dom = __webpack_require__( /*! ../core/utils/dom */ 3532);
                var _frame = __webpack_require__( /*! ../animation/frame */ 90057);
                var _index = __webpack_require__( /*! ./utils/index */ 39611);
                var _event_nodes_disposing = __webpack_require__( /*! ./utils/event_nodes_disposing */ 27575);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ./pointer */ 93786));
                var _emitter = _interopRequireDefault(__webpack_require__( /*! ./core/emitter */ 31391));
                var _emitter_registrator = _interopRequireDefault(__webpack_require__( /*! ./core/emitter_registrator */ 82495));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                exports.name = "dxclick";
                _frame.requestAnimationFrame, _frame.cancelAnimationFrame;
                let prevented = null;
                let lastFiredEvent = null;
                const onNodeRemove = () => {
                    lastFiredEvent = null
                };
                const clickHandler = function(e) {
                    const originalEvent = e.originalEvent;
                    const eventAlreadyFired = lastFiredEvent === originalEvent || originalEvent && originalEvent.DXCLICK_FIRED;
                    const leftButton = !e.which || 1 === e.which;
                    if (leftButton && !prevented && !eventAlreadyFired) {
                        if (originalEvent) {
                            originalEvent.DXCLICK_FIRED = true
                        }(0, _event_nodes_disposing.unsubscribeNodesDisposing)(lastFiredEvent, onNodeRemove);
                        lastFiredEvent = originalEvent;
                        (0, _event_nodes_disposing.subscribeNodesDisposing)(lastFiredEvent, onNodeRemove);
                        (0, _index.fireEvent)({
                            type: "dxclick",
                            originalEvent: e
                        })
                    }
                };
                const ClickEmitter = _emitter.default.inherit({
                    ctor: function(element) {
                        this.callBase(element);
                        _events_engine.default.on(this.getElement(), "click", clickHandler)
                    },
                    start: function(e) {
                        prevented = null
                    },
                    cancel: function() {
                        prevented = true
                    },
                    dispose: function() {
                        _events_engine.default.off(this.getElement(), "click", clickHandler)
                    }
                });
                ! function() {
                    const desktopDevice = _devices.default.real().generic;
                    if (!desktopDevice) {
                        let startTarget = null;
                        let blurPrevented = false;
                        const isInput = function(element) {
                            return (0, _renderer.default)(element).is("input, textarea, select, button ,:focus, :focus *")
                        };
                        const pointerDownHandler = function(e) {
                            startTarget = e.target;
                            blurPrevented = e.isDefaultPrevented()
                        };
                        const clickHandler = function(e) {
                            const $target = (0, _renderer.default)(e.target);
                            if (!blurPrevented && startTarget && !$target.is(startTarget) && !(0, _renderer.default)(startTarget).is("label") && isInput($target)) {
                                (0, _dom.resetActiveElement)()
                            }
                            startTarget = null;
                            blurPrevented = false
                        };
                        const NATIVE_CLICK_FIXER_NAMESPACE = "NATIVE_CLICK_FIXER";
                        const document = _dom_adapter.default.getDocument();
                        _events_engine.default.subscribeGlobal(document, (0, _index.addNamespace)(_pointer.default.down, NATIVE_CLICK_FIXER_NAMESPACE), pointerDownHandler);
                        _events_engine.default.subscribeGlobal(document, (0, _index.addNamespace)("click", NATIVE_CLICK_FIXER_NAMESPACE), clickHandler)
                    }
                }();
                (0, _emitter_registrator.default)({
                    emitter: ClickEmitter,
                    bubble: true,
                    events: ["dxclick"]
                })
            },
        49166:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/contextmenu.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.name = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../events/core/events_engine */ 55994));
                var _support = __webpack_require__( /*! ../core/utils/support */ 60137);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../core/devices */ 20530));
                var _class = _interopRequireDefault(__webpack_require__( /*! ../core/class */ 38377));
                var _event_registrator = _interopRequireDefault(__webpack_require__( /*! ./core/event_registrator */ 85788));
                var _index = __webpack_require__( /*! ./utils/index */ 39611);
                var _hold = _interopRequireDefault(__webpack_require__( /*! ./hold */ 11699));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const CONTEXTMENU_NAMESPACED_EVENT_NAME = (0, _index.addNamespace)("contextmenu", "dxContexMenu");
                const HOLD_NAMESPACED_EVENT_NAME = (0, _index.addNamespace)(_hold.default.name, "dxContexMenu");
                const ContextMenu = _class.default.inherit({
                    setup: function(element) {
                        const $element = (0, _renderer.default)(element);
                        _events_engine.default.on($element, CONTEXTMENU_NAMESPACED_EVENT_NAME, this._contextMenuHandler.bind(this));
                        if (_support.touch || _devices.default.isSimulator()) {
                            _events_engine.default.on($element, HOLD_NAMESPACED_EVENT_NAME, this._holdHandler.bind(this))
                        }
                    },
                    _holdHandler: function(e) {
                        if ((0, _index.isMouseEvent)(e) && !_devices.default.isSimulator()) {
                            return
                        }
                        this._fireContextMenu(e)
                    },
                    _contextMenuHandler: function(e) {
                        this._fireContextMenu(e)
                    },
                    _fireContextMenu: function(e) {
                        return (0, _index.fireEvent)({
                            type: "dxcontextmenu",
                            originalEvent: e
                        })
                    },
                    teardown: function(element) {
                        _events_engine.default.off(element, ".dxContexMenu")
                    }
                });
                (0, _event_registrator.default)("dxcontextmenu", new ContextMenu);
                exports.name = "dxcontextmenu"
            },
        91633:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/core/emitter.feedback.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.lock = exports.inactive = exports.active = void 0;
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 38377));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _dom = __webpack_require__( /*! ../../core/utils/dom */ 3532);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _index = __webpack_require__( /*! ../utils/index */ 39611);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../pointer */ 93786));
                var _emitter = _interopRequireDefault(__webpack_require__( /*! ./emitter */ 31391));
                var _emitter_registrator = _interopRequireDefault(__webpack_require__( /*! ./emitter_registrator */ 82495));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                exports.active = "dxactive";
                exports.inactive = "dxinactive";
                const FeedbackEvent = _class.default.inherit({
                    ctor: function(timeout, fire) {
                        this._timeout = timeout;
                        this._fire = fire
                    },
                    start: function() {
                        const that = this;
                        this._schedule((function() {
                            that.force()
                        }))
                    },
                    _schedule: function(fn) {
                        this.stop();
                        this._timer = setTimeout(fn, this._timeout)
                    },
                    stop: function() {
                        clearTimeout(this._timer)
                    },
                    force: function() {
                        if (this._fired) {
                            return
                        }
                        this.stop();
                        this._fire();
                        this._fired = true
                    },
                    fired: function() {
                        return this._fired
                    }
                });
                let activeFeedback;
                const FeedbackEmitter = _emitter.default.inherit({
                    ctor: function() {
                        this.callBase.apply(this, arguments);
                        this._active = new FeedbackEvent(0, _common.noop);
                        this._inactive = new FeedbackEvent(0, _common.noop)
                    },
                    configure: function(data, eventName) {
                        switch (eventName) {
                            case "dxactive":
                                data.activeTimeout = data.timeout;
                                break;
                            case "dxinactive":
                                data.inactiveTimeout = data.timeout
                        }
                        this.callBase(data)
                    },
                    start: function(e) {
                        if (activeFeedback) {
                            const activeChildExists = (0, _dom.contains)(this.getElement().get(0), activeFeedback.getElement().get(0));
                            const childJustActivated = !activeFeedback._active.fired();
                            if (activeChildExists && childJustActivated) {
                                this._cancel();
                                return
                            }
                            activeFeedback._inactive.force()
                        }
                        activeFeedback = this;
                        this._initEvents(e);
                        this._active.start()
                    },
                    _initEvents: function(e) {
                        const that = this;
                        const eventTarget = this._getEmitterTarget(e);
                        const mouseEvent = (0, _index.isMouseEvent)(e);
                        const isSimulator = _devices.default.isSimulator();
                        const deferFeedback = isSimulator || !mouseEvent;
                        const activeTimeout = (0, _common.ensureDefined)(this.activeTimeout, 30);
                        const inactiveTimeout = (0, _common.ensureDefined)(this.inactiveTimeout, 400);
                        this._active = new FeedbackEvent(deferFeedback ? activeTimeout : 0, (function() {
                            that._fireEvent("dxactive", e, {
                                target: eventTarget
                            })
                        }));
                        this._inactive = new FeedbackEvent(deferFeedback ? inactiveTimeout : 0, (function() {
                            that._fireEvent("dxinactive", e, {
                                target: eventTarget
                            });
                            activeFeedback = null
                        }))
                    },
                    cancel: function(e) {
                        this.end(e)
                    },
                    end: function(e) {
                        const skipTimers = e.type !== _pointer.default.up;
                        if (skipTimers) {
                            this._active.stop()
                        } else {
                            this._active.force()
                        }
                        this._inactive.start();
                        if (skipTimers) {
                            this._inactive.force()
                        }
                    },
                    dispose: function() {
                        this._active.stop();
                        this._inactive.stop();
                        if (activeFeedback === this) {
                            activeFeedback = null
                        }
                        this.callBase()
                    },
                    lockInactive: function() {
                        this._active.force();
                        this._inactive.stop();
                        activeFeedback = null;
                        this._cancel();
                        return this._inactive.force.bind(this._inactive)
                    }
                });
                FeedbackEmitter.lock = function(deferred) {
                    const lockInactive = activeFeedback ? activeFeedback.lockInactive() : _common.noop;
                    deferred.done(lockInactive)
                };
                (0, _emitter_registrator.default)({
                    emitter: FeedbackEmitter,
                    events: ["dxactive", "dxinactive"]
                });
                const lock = FeedbackEmitter.lock;
                exports.lock = lock
            },
        31391:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/core/emitter.js ***!
              \********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 38377));
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/callbacks */ 44504));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _index = __webpack_require__( /*! ../utils/index */ 39611);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const Emitter = _class.default.inherit({
                    ctor: function(element) {
                        this._$element = (0, _renderer.default)(element);
                        this._cancelCallback = (0, _callbacks.default)();
                        this._acceptCallback = (0, _callbacks.default)()
                    },
                    getElement: function() {
                        return this._$element
                    },
                    validate: function(e) {
                        return !(0, _index.isDxMouseWheelEvent)(e)
                    },
                    validatePointers: function(e) {
                        return 1 === (0, _index.hasTouches)(e)
                    },
                    allowInterruptionByMouseWheel: function() {
                        return true
                    },
                    configure: function(data) {
                        (0, _extend.extend)(this, data)
                    },
                    addCancelCallback: function(callback) {
                        this._cancelCallback.add(callback)
                    },
                    removeCancelCallback: function() {
                        this._cancelCallback.empty()
                    },
                    _cancel: function(e) {
                        this._cancelCallback.fire(this, e)
                    },
                    addAcceptCallback: function(callback) {
                        this._acceptCallback.add(callback)
                    },
                    removeAcceptCallback: function() {
                        this._acceptCallback.empty()
                    },
                    _accept: function(e) {
                        this._acceptCallback.fire(this, e)
                    },
                    _requestAccept: function(e) {
                        this._acceptRequestEvent = e
                    },
                    _forgetAccept: function() {
                        this._accept(this._acceptRequestEvent);
                        this._acceptRequestEvent = null
                    },
                    start: _common.noop,
                    move: _common.noop,
                    end: _common.noop,
                    cancel: _common.noop,
                    reset: function() {
                        if (this._acceptRequestEvent) {
                            this._accept(this._acceptRequestEvent)
                        }
                    },
                    _fireEvent: function(eventName, e, params) {
                        const eventData = (0, _extend.extend)({
                            type: eventName,
                            originalEvent: e,
                            target: this._getEmitterTarget(e),
                            delegateTarget: this.getElement().get(0)
                        }, params);
                        e = (0, _index.fireEvent)(eventData);
                        if (e.cancel) {
                            this._cancel(e)
                        }
                        return e
                    },
                    _getEmitterTarget: function(e) {
                        return (this.delegateSelector ? (0, _renderer.default)(e.target).closest(this.delegateSelector) : this.getElement()).get(0)
                    },
                    dispose: _common.noop
                });
                var _default = Emitter;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        82495:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/core/emitter_registrator.js ***!
              \********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/ready_callbacks */ 24311));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _element_data = __webpack_require__( /*! ../../core/element_data */ 97906);
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 38377));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _event_registrator = _interopRequireDefault(__webpack_require__( /*! ./event_registrator */ 85788));
                var _index = __webpack_require__( /*! ../utils/index */ 39611);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../pointer */ 93786));
                var _wheel = __webpack_require__( /*! ./wheel */ 765);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const EventManager = _class.default.inherit({
                    ctor: function() {
                        this._attachHandlers();
                        this.reset();
                        this._proxiedCancelHandler = this._cancelHandler.bind(this);
                        this._proxiedAcceptHandler = this._acceptHandler.bind(this)
                    },
                    _attachHandlers: function() {
                        _ready_callbacks.default.add(function() {
                            const document = _dom_adapter.default.getDocument();
                            _events_engine.default.subscribeGlobal(document, (0, _index.addNamespace)(_pointer.default.down, "dxEventManager"), this._pointerDownHandler.bind(this));
                            _events_engine.default.subscribeGlobal(document, (0, _index.addNamespace)(_pointer.default.move, "dxEventManager"), this._pointerMoveHandler.bind(this));
                            _events_engine.default.subscribeGlobal(document, (0, _index.addNamespace)([_pointer.default.up, _pointer.default.cancel].join(" "), "dxEventManager"), this._pointerUpHandler.bind(this));
                            _events_engine.default.subscribeGlobal(document, (0, _index.addNamespace)(_wheel.name, "dxEventManager"), this._mouseWheelHandler.bind(this))
                        }.bind(this))
                    },
                    _eachEmitter: function(callback) {
                        const activeEmitters = this._activeEmitters || [];
                        let i = 0;
                        while (activeEmitters.length > i) {
                            const emitter = activeEmitters[i];
                            if (false === callback(emitter)) {
                                break
                            }
                            if (activeEmitters[i] === emitter) {
                                i++
                            }
                        }
                    },
                    _applyToEmitters: function(method, arg) {
                        this._eachEmitter((function(emitter) {
                            emitter[method].call(emitter, arg)
                        }))
                    },
                    reset: function() {
                        this._eachEmitter(this._proxiedCancelHandler);
                        this._activeEmitters = []
                    },
                    resetEmitter: function(emitter) {
                        this._proxiedCancelHandler(emitter)
                    },
                    _pointerDownHandler: function(e) {
                        if ((0, _index.isMouseEvent)(e) && e.which > 1) {
                            return
                        }
                        this._updateEmitters(e)
                    },
                    _updateEmitters: function(e) {
                        if (!this._isSetChanged(e)) {
                            return
                        }
                        this._cleanEmitters(e);
                        this._fetchEmitters(e)
                    },
                    _isSetChanged: function(e) {
                        const currentSet = this._closestEmitter(e);
                        const previousSet = this._emittersSet || [];
                        let setChanged = currentSet.length !== previousSet.length;
                        (0, _iterator.each)(currentSet, (function(index, emitter) {
                            setChanged = setChanged || previousSet[index] !== emitter;
                            return !setChanged
                        }));
                        this._emittersSet = currentSet;
                        return setChanged
                    },
                    _closestEmitter: function(e) {
                        const that = this;
                        const result = [];
                        let $element = (0, _renderer.default)(e.target);

                        function handleEmitter(_, emitter) {
                            if (!!emitter && emitter.validatePointers(e) && emitter.validate(e)) {
                                emitter.addCancelCallback(that._proxiedCancelHandler);
                                emitter.addAcceptCallback(that._proxiedAcceptHandler);
                                result.push(emitter)
                            }
                        }
                        while ($element.length) {
                            const emitters = (0, _element_data.data)($element.get(0), "dxEmitter") || [];
                            (0, _iterator.each)(emitters, handleEmitter);
                            $element = $element.parent()
                        }
                        return result
                    },
                    _acceptHandler: function(acceptedEmitter, e) {
                        const that = this;
                        this._eachEmitter((function(emitter) {
                            if (emitter !== acceptedEmitter) {
                                that._cancelEmitter(emitter, e)
                            }
                        }))
                    },
                    _cancelHandler: function(canceledEmitter, e) {
                        this._cancelEmitter(canceledEmitter, e)
                    },
                    _cancelEmitter: function(emitter, e) {
                        const activeEmitters = this._activeEmitters;
                        if (e) {
                            emitter.cancel(e)
                        } else {
                            emitter.reset()
                        }
                        emitter.removeCancelCallback();
                        emitter.removeAcceptCallback();
                        const emitterIndex = activeEmitters.indexOf(emitter);
                        if (emitterIndex > -1) {
                            activeEmitters.splice(emitterIndex, 1)
                        }
                    },
                    _cleanEmitters: function(e) {
                        this._applyToEmitters("end", e);
                        this.reset(e)
                    },
                    _fetchEmitters: function(e) {
                        this._activeEmitters = this._emittersSet.slice();
                        this._applyToEmitters("start", e)
                    },
                    _pointerMoveHandler: function(e) {
                        this._applyToEmitters("move", e)
                    },
                    _pointerUpHandler: function(e) {
                        this._updateEmitters(e)
                    },
                    _mouseWheelHandler: function(e) {
                        if (!this._allowInterruptionByMouseWheel()) {
                            return
                        }
                        e.pointers = [null];
                        this._pointerDownHandler(e);
                        this._adjustWheelEvent(e);
                        this._pointerMoveHandler(e);
                        e.pointers = [];
                        this._pointerUpHandler(e)
                    },
                    _allowInterruptionByMouseWheel: function() {
                        let allowInterruption = true;
                        this._eachEmitter((function(emitter) {
                            allowInterruption = emitter.allowInterruptionByMouseWheel() && allowInterruption;
                            return allowInterruption
                        }));
                        return allowInterruption
                    },
                    _adjustWheelEvent: function(e) {
                        let closestGestureEmitter = null;
                        this._eachEmitter((function(emitter) {
                            if (!emitter.gesture) {
                                return
                            }
                            const direction = emitter.getDirection(e);
                            if ("horizontal" !== direction && !e.shiftKey || "vertical" !== direction && e.shiftKey) {
                                closestGestureEmitter = emitter;
                                return false
                            }
                        }));
                        if (!closestGestureEmitter) {
                            return
                        }
                        const direction = closestGestureEmitter.getDirection(e);
                        const verticalGestureDirection = "both" === direction && !e.shiftKey || "vertical" === direction;
                        const prop = verticalGestureDirection ? "pageY" : "pageX";
                        e[prop] += e.delta
                    },
                    isActive: function(element) {
                        let result = false;
                        this._eachEmitter((function(emitter) {
                            result = result || emitter.getElement().is(element)
                        }));
                        return result
                    }
                });
                const eventManager = new EventManager;
                var _default = function(emitterConfig) {
                    const emitterClass = emitterConfig.emitter;
                    const emitterName = emitterConfig.events[0];
                    const emitterEvents = emitterConfig.events;
                    (0, _iterator.each)(emitterEvents, (function(_, eventName) {
                        (0, _event_registrator.default)(eventName, {
                            noBubble: !emitterConfig.bubble,
                            setup: function(element) {
                                const subscriptions = (0, _element_data.data)(element, "dxEmitterSubscription") || {};
                                const emitters = (0, _element_data.data)(element, "dxEmitter") || {};
                                const emitter = emitters[emitterName] || new emitterClass(element);
                                subscriptions[eventName] = true;
                                emitters[emitterName] = emitter;
                                (0, _element_data.data)(element, "dxEmitter", emitters);
                                (0, _element_data.data)(element, "dxEmitterSubscription", subscriptions)
                            },
                            add: function(element, handleObj) {
                                const emitters = (0, _element_data.data)(element, "dxEmitter");
                                const emitter = emitters[emitterName];
                                emitter.configure((0, _extend.extend)({
                                    delegateSelector: handleObj.selector
                                }, handleObj.data), handleObj.type)
                            },
                            teardown: function(element) {
                                const subscriptions = (0, _element_data.data)(element, "dxEmitterSubscription");
                                const emitters = (0, _element_data.data)(element, "dxEmitter");
                                const emitter = emitters[emitterName];
                                delete subscriptions[eventName];
                                let disposeEmitter = true;
                                (0, _iterator.each)(emitterEvents, (function(_, eventName) {
                                    disposeEmitter = disposeEmitter && !subscriptions[eventName];
                                    return disposeEmitter
                                }));
                                if (disposeEmitter) {
                                    if (eventManager.isActive(element)) {
                                        eventManager.resetEmitter(emitter)
                                    }
                                    emitter && emitter.dispose();
                                    delete emitters[emitterName]
                                }
                            }
                        })
                    }))
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        85788:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/core/event_registrator.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _event_registrator_callbacks = (obj = __webpack_require__( /*! ./event_registrator_callbacks */ 94553), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const registerEvent = function(name, eventObject) {
                    const strategy = {};
                    if ("noBubble" in eventObject) {
                        strategy.noBubble = eventObject.noBubble
                    }
                    if ("bindType" in eventObject) {
                        strategy.bindType = eventObject.bindType
                    }
                    if ("delegateType" in eventObject) {
                        strategy.delegateType = eventObject.delegateType
                    }(0, _iterator.each)(["setup", "teardown", "add", "remove", "trigger", "handle", "_default", "dispose"], (function(_, methodName) {
                        if (!eventObject[methodName]) {
                            return
                        }
                        strategy[methodName] = function() {
                            const args = [].slice.call(arguments);
                            args.unshift(this);
                            return eventObject[methodName].apply(eventObject, args)
                        }
                    }));
                    _event_registrator_callbacks.default.fire(name, strategy)
                };
                registerEvent.callbacks = _event_registrator_callbacks.default;
                var _default = registerEvent;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        94553:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/core/event_registrator_callbacks.js ***!
              \****************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _memorized_callbacks = (obj = __webpack_require__( /*! ../../core/memorized_callbacks */ 83358), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = new _memorized_callbacks.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        55994:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/core/events_engine.js ***!
              \**************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _event_registrator_callbacks = _interopRequireDefault(__webpack_require__( /*! ./event_registrator_callbacks */ 94553));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _dependency_injector = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/dependency_injector */ 20476));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/callbacks */ 44504));
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../core/errors */ 17381));
                var _hook_touch_props = _interopRequireDefault(__webpack_require__( /*! ../../events/core/hook_touch_props */ 2418));
                var _call_once = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/call_once */ 39618));

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const window = (0, _window.getWindow)();
                const NATIVE_EVENTS_TO_SUBSCRIBE = {
                    mouseenter: "mouseover",
                    mouseleave: "mouseout",
                    pointerenter: "pointerover",
                    pointerleave: "pointerout"
                };
                const NATIVE_EVENTS_TO_TRIGGER = {
                    focusin: "focus",
                    focusout: "blur"
                };
                const NO_BUBBLE_EVENTS = ["blur", "focus", "load"];
                const forcePassiveFalseEventNames = ["touchmove", "wheel", "mousewheel", "touchstart"];

                function matchesSafe(target, selector) {
                    return !(0, _type.isWindow)(target) && "#document" !== target.nodeName && _dom_adapter.default.elementMatches(target, selector)
                }
                const elementDataMap = new WeakMap;
                let guid = 0;
                let skipEvent;
                const special = function() {
                    const specialData = {};
                    _event_registrator_callbacks.default.add((function(eventName, eventObject) {
                        specialData[eventName] = eventObject
                    }));
                    return {
                        getField: function(eventName, field) {
                            return specialData[eventName] && specialData[eventName][field]
                        },
                        callMethod: function(eventName, methodName, context, args) {
                            return specialData[eventName] && specialData[eventName][methodName] && specialData[eventName][methodName].apply(context, args)
                        }
                    }
                }();
                const eventsEngine = (0, _dependency_injector.default)({
                    on: getHandler(normalizeOnArguments(iterate((function(element, eventName, selector, data, handler) {
                        const handlersController = getHandlersController(element, eventName);
                        handlersController.addHandler(handler, selector, data)
                    })))),
                    one: getHandler(normalizeOnArguments((function(element, eventName, selector, data, handler) {
                        const oneTimeHandler = function() {
                            eventsEngine.off(element, eventName, selector, oneTimeHandler);
                            handler.apply(this, arguments)
                        };
                        eventsEngine.on(element, eventName, selector, data, oneTimeHandler)
                    }))),
                    off: getHandler((callback = iterate((function(element, eventName, selector, handler) {
                        const handlersController = getHandlersController(element, eventName);
                        handlersController.removeHandler(handler, selector)
                    })), function(element, eventName, selector, handler) {
                        if ("function" === typeof selector) {
                            handler = selector;
                            selector = void 0
                        }
                        callback(element, eventName, selector, handler)
                    })),
                    trigger: getHandler(normalizeTriggerArguments((function(element, event, extraParameters) {
                        const eventName = event.type;
                        const handlersController = getHandlersController(element, event.type);
                        special.callMethod(eventName, "trigger", element, [event, extraParameters]);
                        handlersController.callHandlers(event, extraParameters);
                        const noBubble = special.getField(eventName, "noBubble") || event.isPropagationStopped() || -1 !== NO_BUBBLE_EVENTS.indexOf(eventName);
                        if (!noBubble) {
                            const parents = [];
                            const getParents = function(element) {
                                var _element$parentNode;
                                const parent = null !== (_element$parentNode = element.parentNode) && void 0 !== _element$parentNode ? _element$parentNode : (0, _type.isObject)(element.host) ? element.host : null;
                                if (parent) {
                                    parents.push(parent);
                                    getParents(parent)
                                }
                            };
                            getParents(element);
                            parents.push(window);
                            let i = 0;
                            while (parents[i] && !event.isPropagationStopped()) {
                                const parentDataByEvent = getHandlersController(parents[i], event.type);
                                parentDataByEvent.callHandlers((0, _extend.extend)(event, {
                                    currentTarget: parents[i]
                                }), extraParameters);
                                i++
                            }
                        }
                        if (element.nodeType || (0, _type.isWindow)(element)) {
                            special.callMethod(eventName, "_default", element, [event, extraParameters]);
                            ! function(eventName, element) {
                                const nativeMethodName = NATIVE_EVENTS_TO_TRIGGER[eventName] || eventName;
                                if (function(eventName, element) {
                                        return "click" === eventName && "a" === element.localName
                                    }(eventName, element)) {
                                    return
                                }
                                if ((0, _type.isFunction)(element[nativeMethodName])) {
                                    skipEvent = eventName;
                                    element[nativeMethodName]();
                                    skipEvent = void 0
                                }
                            }(eventName, element)
                        }
                    }))),
                    triggerHandler: getHandler(normalizeTriggerArguments((function(element, event, extraParameters) {
                        const handlersController = getHandlersController(element, event.type);
                        handlersController.callHandlers(event, extraParameters)
                    })))
                });
                var callback;

                function applyForEach(args, method) {
                    const element = args[0];
                    if (!element) {
                        return
                    }
                    if (_dom_adapter.default.isNode(element) || (0, _type.isWindow)(element)) {
                        method.apply(eventsEngine, args)
                    } else if (!(0, _type.isString)(element) && "length" in element) {
                        const itemArgs = Array.prototype.slice.call(args, 0);
                        Array.prototype.forEach.call(element, (function(itemElement) {
                            itemArgs[0] = itemElement;
                            applyForEach(itemArgs, method)
                        }))
                    } else {
                        throw _errors.default.Error("E0025")
                    }
                }

                function getHandler(method) {
                    return function() {
                        applyForEach(arguments, method)
                    }
                }
                const passiveEventHandlersSupported = (0, _call_once.default)((function() {
                    let isSupported = false;
                    try {
                        const options = Object.defineProperty({}, "passive", {
                            get: function() {
                                isSupported = true;
                                return true
                            }
                        });
                        window.addEventListener("test", null, options)
                    } catch (e) {}
                    return isSupported
                }));
                const contains = (container, element) => {
                    if ((0, _type.isWindow)(container)) {
                        return contains(container.document, element)
                    }
                    return container.contains ? container.contains(element) : !!(element.compareDocumentPosition(container) & element.DOCUMENT_POSITION_CONTAINS)
                };

                function getHandlersController(element, eventName) {
                    let elementData = elementDataMap.get(element);
                    eventName = eventName || "";
                    const eventNameParts = eventName.split(".");
                    const namespaces = eventNameParts.slice(1);
                    const eventNameIsDefined = !!eventNameParts[0];
                    eventName = eventNameParts[0] || "dxEmptyEventType";
                    if (!elementData) {
                        elementData = {};
                        elementDataMap.set(element, elementData)
                    }
                    if (!elementData[eventName]) {
                        elementData[eventName] = {
                            handleObjects: [],
                            nativeHandler: null
                        }
                    }
                    const eventData = elementData[eventName];
                    return {
                        addHandler: function(handler, selector, data) {
                            const callHandler = function(e, extraParameters) {
                                const handlerArgs = [e];
                                const target = e.currentTarget;
                                const relatedTarget = e.relatedTarget;
                                let secondaryTargetIsInside;
                                let result;
                                if (eventName in NATIVE_EVENTS_TO_SUBSCRIBE) {
                                    secondaryTargetIsInside = relatedTarget && target && (relatedTarget === target || contains(target, relatedTarget))
                                }
                                if (void 0 !== extraParameters) {
                                    handlerArgs.push(extraParameters)
                                }
                                special.callMethod(eventName, "handle", element, [e, data]);
                                if (!secondaryTargetIsInside) {
                                    result = handler.apply(target, handlerArgs)
                                }
                                if (false === result) {
                                    e.preventDefault();
                                    e.stopPropagation()
                                }
                            };
                            const handleObject = {
                                handler: handler,
                                wrappedHandler: function(e, extraParameters) {
                                    if (skipEvent && e.type === skipEvent) {
                                        return
                                    }
                                    e.data = data;
                                    e.delegateTarget = element;
                                    if (selector) {
                                        let currentTarget = e.target;
                                        while (currentTarget && currentTarget !== element) {
                                            if (matchesSafe(currentTarget, selector)) {
                                                e.currentTarget = currentTarget;
                                                callHandler(e, extraParameters)
                                            }
                                            currentTarget = currentTarget.parentNode
                                        }
                                    } else {
                                        e.currentTarget = e.delegateTarget || e.target;
                                        callHandler(e, extraParameters)
                                    }
                                },
                                selector: selector,
                                type: eventName,
                                data: data,
                                namespace: namespaces.join("."),
                                namespaces: namespaces,
                                guid: ++guid
                            };
                            eventData.handleObjects.push(handleObject);
                            const firstHandlerForTheType = 1 === eventData.handleObjects.length;
                            let shouldAddNativeListener = firstHandlerForTheType && eventNameIsDefined;
                            let nativeListenerOptions;
                            if (shouldAddNativeListener) {
                                shouldAddNativeListener = !special.callMethod(eventName, "setup", element, [data, namespaces, handler])
                            }
                            if (shouldAddNativeListener) {
                                eventData.nativeHandler = (subscribeName = eventName, function(event, extraParameters) {
                                    const handlersController = getHandlersController(this, subscribeName);
                                    event = eventsEngine.Event(event);
                                    handlersController.callHandlers(event, extraParameters)
                                });
                                if (passiveEventHandlersSupported() && forcePassiveFalseEventNames.indexOf(eventName) > -1) {
                                    nativeListenerOptions = {
                                        passive: false
                                    }
                                }
                                eventData.removeListener = _dom_adapter.default.listen(element, NATIVE_EVENTS_TO_SUBSCRIBE[eventName] || eventName, eventData.nativeHandler, nativeListenerOptions)
                            }
                            var subscribeName;
                            special.callMethod(eventName, "add", element, [handleObject])
                        },
                        removeHandler: function(handler, selector) {
                            const removeByEventName = function(eventName) {
                                const eventData = elementData[eventName];
                                if (!eventData.handleObjects.length) {
                                    delete elementData[eventName];
                                    return
                                }
                                let removedHandler;
                                eventData.handleObjects = eventData.handleObjects.filter((function(handleObject) {
                                    const skip = namespaces.length && !isSubset(handleObject.namespaces, namespaces) || handler && handleObject.handler !== handler || selector && handleObject.selector !== selector;
                                    if (!skip) {
                                        removedHandler = handleObject.handler;
                                        special.callMethod(eventName, "remove", element, [handleObject])
                                    }
                                    return skip
                                }));
                                const lastHandlerForTheType = !eventData.handleObjects.length;
                                const shouldRemoveNativeListener = lastHandlerForTheType && "dxEmptyEventType" !== eventName;
                                if (shouldRemoveNativeListener) {
                                    special.callMethod(eventName, "teardown", element, [namespaces, removedHandler]);
                                    if (eventData.nativeHandler) {
                                        eventData.removeListener()
                                    }
                                    delete elementData[eventName]
                                }
                            };
                            if (eventNameIsDefined) {
                                removeByEventName(eventName)
                            } else {
                                for (const name in elementData) {
                                    removeByEventName(name)
                                }
                            }
                            const elementDataIsEmpty = 0 === Object.keys(elementData).length;
                            if (elementDataIsEmpty) {
                                elementDataMap.delete(element)
                            }
                        },
                        callHandlers: function(event, extraParameters) {
                            let forceStop = false;
                            const handleCallback = function(handleObject) {
                                if (forceStop) {
                                    return
                                }
                                if (!namespaces.length || isSubset(handleObject.namespaces, namespaces)) {
                                    handleObject.wrappedHandler(event, extraParameters);
                                    forceStop = event.isImmediatePropagationStopped()
                                }
                            };
                            eventData.handleObjects.forEach(handleCallback);
                            if (namespaces.length && elementData.dxEmptyEventType) {
                                elementData.dxEmptyEventType.handleObjects.forEach(handleCallback)
                            }
                        }
                    }
                }

                function isSubset(original, checked) {
                    for (let i = 0; i < checked.length; i++) {
                        if (original.indexOf(checked[i]) < 0) {
                            return false
                        }
                    }
                    return true
                }

                function normalizeOnArguments(callback) {
                    return function(element, eventName, selector, data, handler) {
                        if (!handler) {
                            handler = data;
                            data = void 0
                        }
                        if ("string" !== typeof selector) {
                            data = selector;
                            selector = void 0
                        }
                        if (!handler && "string" === typeof eventName) {
                            handler = data || selector;
                            selector = void 0;
                            data = void 0
                        }
                        callback(element, eventName, selector, data, handler)
                    }
                }

                function normalizeTriggerArguments(callback) {
                    return function(element, src, extraParameters) {
                        if ("string" === typeof src) {
                            src = {
                                type: src
                            }
                        }
                        if (!src.target) {
                            src.target = element
                        }
                        src.currentTarget = element;
                        if (!src.delegateTarget) {
                            src.delegateTarget = element
                        }
                        if (!src.type && src.originalEvent) {
                            src.type = src.originalEvent.type
                        }
                        callback(element, src instanceof eventsEngine.Event ? src : eventsEngine.Event(src), extraParameters)
                    }
                }

                function iterate(callback) {
                    const iterateEventNames = function(element, eventName) {
                        if (eventName && eventName.indexOf(" ") > -1) {
                            const args = Array.prototype.slice.call(arguments, 0);
                            eventName.split(" ").forEach((function(eventName) {
                                args[1] = eventName;
                                callback.apply(this, args)
                            }))
                        } else {
                            callback.apply(this, arguments)
                        }
                    };
                    return function(element, eventName) {
                        if ("object" === typeof eventName) {
                            const args = Array.prototype.slice.call(arguments, 0);
                            for (const name in eventName) {
                                args[1] = name;
                                args[args.length - 1] = eventName[name];
                                iterateEventNames.apply(this, args)
                            }
                        } else {
                            iterateEventNames.apply(this, arguments)
                        }
                    }
                }

                function calculateWhich(event) {
                    if (function(event) {
                            return null == event.which && 0 === event.type.indexOf("key")
                        }(event)) {
                        return null != event.charCode ? event.charCode : event.keyCode
                    }
                    if (function(event) {
                            return !event.which && void 0 !== event.button && /^(?:mouse|pointer|contextmenu|drag|drop)|click/.test(event.type)
                        }(event)) {
                        const whichByButton = {
                            1: 1,
                            2: 3,
                            3: 1,
                            4: 2
                        };
                        return whichByButton[event.button]
                    }
                    return event.which
                }

                function initEvent(EventClass) {
                    if (EventClass) {
                        eventsEngine.Event = EventClass;
                        eventsEngine.Event.prototype = EventClass.prototype
                    }
                }
                initEvent(function(callback) {
                    eventsEngine.Event = function(src, config) {
                        if (!(this instanceof eventsEngine.Event)) {
                            return new eventsEngine.Event(src, config)
                        }
                        if (!src) {
                            src = {}
                        }
                        if ("string" === typeof src) {
                            src = {
                                type: src
                            }
                        }
                        if (!config) {
                            config = {}
                        }
                        callback.call(this, src, config)
                    };
                    _extends(eventsEngine.Event.prototype, {
                        _propagationStopped: false,
                        _immediatePropagationStopped: false,
                        _defaultPrevented: false,
                        isPropagationStopped: function() {
                            return !!(this._propagationStopped || this.originalEvent && this.originalEvent.propagationStopped)
                        },
                        stopPropagation: function() {
                            this._propagationStopped = true;
                            this.originalEvent && this.originalEvent.stopPropagation()
                        },
                        isImmediatePropagationStopped: function() {
                            return this._immediatePropagationStopped
                        },
                        stopImmediatePropagation: function() {
                            this.stopPropagation();
                            this._immediatePropagationStopped = true;
                            this.originalEvent && this.originalEvent.stopImmediatePropagation()
                        },
                        isDefaultPrevented: function() {
                            return !!(this._defaultPrevented || this.originalEvent && this.originalEvent.defaultPrevented)
                        },
                        preventDefault: function() {
                            this._defaultPrevented = true;
                            this.originalEvent && this.originalEvent.preventDefault()
                        }
                    });
                    return eventsEngine.Event
                }((function(src, config) {
                    var _src$view;
                    const srcIsEvent = src instanceof eventsEngine.Event || (0, _window.hasWindow)() && src instanceof window.Event || (null === (_src$view = src.view) || void 0 === _src$view ? void 0 : _src$view.Event) && src instanceof src.view.Event;
                    if (srcIsEvent) {
                        this.originalEvent = src;
                        this.type = src.type;
                        this.currentTarget = void 0;
                        if (Object.prototype.hasOwnProperty.call(src, "isTrusted")) {
                            this.isTrusted = src.isTrusted
                        }
                        this.timeStamp = src.timeStamp || Date.now()
                    } else {
                        _extends(this, src)
                    }
                    addProperty("which", calculateWhich, this);
                    if (0 === src.type.indexOf("touch")) {
                        delete config.pageX;
                        delete config.pageY
                    }
                    _extends(this, config);
                    this.guid = ++guid
                })));

                function addProperty(propName, hook, eventInstance) {
                    Object.defineProperty(eventInstance || eventsEngine.Event.prototype, propName, {
                        enumerable: true,
                        configurable: true,
                        get: function() {
                            return this.originalEvent && hook(this.originalEvent)
                        },
                        set: function(value) {
                            Object.defineProperty(this, propName, {
                                enumerable: true,
                                configurable: true,
                                writable: true,
                                value: value
                            })
                        }
                    })
                } ["target", "relatedTarget", "delegateTarget", "altKey", "bubbles", "cancelable", "changedTouches", "ctrlKey", "detail", "eventPhase", "metaKey", "shiftKey", "view", "char", "code", "charCode", "key", "keyCode", "button", "buttons", "offsetX", "offsetY", "pointerId", "pointerType", "targetTouches", "toElement", "touches"].forEach(prop => addProperty(prop, event => event[prop]));
                (0, _hook_touch_props.default)(addProperty);
                const beforeSetStrategy = (0, _callbacks.default)();
                const afterSetStrategy = (0, _callbacks.default)();
                eventsEngine.set = function(engine) {
                    beforeSetStrategy.fire();
                    eventsEngine.inject(engine);
                    initEvent(engine.Event);
                    afterSetStrategy.fire()
                };
                eventsEngine.subscribeGlobal = function() {
                    applyForEach(arguments, normalizeOnArguments((function() {
                        const args = arguments;
                        eventsEngine.on.apply(this, args);
                        beforeSetStrategy.add((function() {
                            const offArgs = Array.prototype.slice.call(args, 0);
                            offArgs.splice(3, 1);
                            eventsEngine.off.apply(this, offArgs)
                        }));
                        afterSetStrategy.add((function() {
                            eventsEngine.on.apply(this, args)
                        }))
                    })))
                };
                eventsEngine.forcePassiveFalseEventNames = forcePassiveFalseEventNames;
                eventsEngine.passiveEventHandlersSupported = passiveEventHandlersSupported;
                var _default = eventsEngine;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        2418:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/core/hook_touch_props.js ***!
              \*****************************************************************************/
            function(module, exports) {
                exports.default = function(callback) {
                    touchPropsToHook.forEach((function(name) {
                        callback(name, (function(event) {
                            return function(name, event) {
                                if (event[name] && !event.touches || !event.touches) {
                                    return event[name]
                                }
                                const touches = event.touches.length ? event.touches : event.changedTouches;
                                if (!touches.length) {
                                    return
                                }
                                return touches[0][name]
                            }(name, event)
                        }))
                    }), this)
                };
                const touchPropsToHook = ["pageX", "pageY", "screenX", "screenY", "clientX", "clientY"];
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        51661:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/core/keyboard_processor.js ***!
              \*******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 38377));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const createKeyDownOptions = e => ({
                    keyName: (0, _index.normalizeKeyName)(e),
                    key: e.key,
                    code: e.code,
                    ctrl: e.ctrlKey,
                    location: e.location,
                    metaKey: e.metaKey,
                    shift: e.shiftKey,
                    alt: e.altKey,
                    which: e.which,
                    originalEvent: e
                });
                const KeyboardProcessor = _class.default.inherit({
                    _keydown: (0, _index.addNamespace)("keydown", "KeyboardProcessor"),
                    _compositionStart: (0, _index.addNamespace)("compositionstart", "KeyboardProcessor"),
                    _compositionEnd: (0, _index.addNamespace)("compositionend", "KeyboardProcessor"),
                    ctor: function(options) {
                        options = options || {};
                        if (options.element) {
                            this._element = (0, _renderer.default)(options.element)
                        }
                        if (options.focusTarget) {
                            this._focusTarget = options.focusTarget
                        }
                        this._handler = options.handler;
                        if (this._element) {
                            this._processFunction = e => {
                                const focusTargets = (0, _renderer.default)(this._focusTarget).toArray();
                                const isNotFocusTarget = this._focusTarget && this._focusTarget !== e.target && !focusTargets.includes(e.target);
                                const shouldSkipProcessing = this._isComposingJustFinished && 229 === e.which || this._isComposing || isNotFocusTarget;
                                this._isComposingJustFinished = false;
                                if (!shouldSkipProcessing) {
                                    this.process(e)
                                }
                            };
                            this._toggleProcessingWithContext = this.toggleProcessing.bind(this);
                            _events_engine.default.on(this._element, this._keydown, this._processFunction);
                            _events_engine.default.on(this._element, this._compositionStart, this._toggleProcessingWithContext);
                            _events_engine.default.on(this._element, this._compositionEnd, this._toggleProcessingWithContext)
                        }
                    },
                    dispose: function() {
                        if (this._element) {
                            _events_engine.default.off(this._element, this._keydown, this._processFunction);
                            _events_engine.default.off(this._element, this._compositionStart, this._toggleProcessingWithContext);
                            _events_engine.default.off(this._element, this._compositionEnd, this._toggleProcessingWithContext)
                        }
                        this._element = void 0;
                        this._handler = void 0
                    },
                    process: function(e) {
                        this._handler(createKeyDownOptions(e))
                    },
                    toggleProcessing: function(_ref) {
                        let {
                            type: type
                        } = _ref;
                        this._isComposing = "compositionstart" === type;
                        this._isComposingJustFinished = !this._isComposing
                    }
                });
                KeyboardProcessor.createKeyDownOptions = createKeyDownOptions;
                var _default = KeyboardProcessor;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        765:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/core/wheel.js ***!
              \******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.name = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _event_registrator = _interopRequireDefault(__webpack_require__( /*! ./event_registrator */ 85788));
                var _index = __webpack_require__( /*! ../utils/index */ 39611);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                exports.name = "dxmousewheel";
                const wheel = {
                    setup: function(element) {
                        const $element = (0, _renderer.default)(element);
                        _events_engine.default.on($element, (0, _index.addNamespace)("wheel", "dxWheel"), wheel._wheelHandler.bind(wheel))
                    },
                    teardown: function(element) {
                        _events_engine.default.off(element, ".".concat("dxWheel"))
                    },
                    _wheelHandler: function(e) {
                        const {
                            deltaMode: deltaMode,
                            deltaY: deltaY,
                            deltaX: deltaX,
                            deltaZ: deltaZ
                        } = e.originalEvent;
                        (0, _index.fireEvent)({
                            type: "dxmousewheel",
                            originalEvent: e,
                            delta: this._normalizeDelta(deltaY, deltaMode),
                            deltaX: deltaX,
                            deltaY: deltaY,
                            deltaZ: deltaZ,
                            deltaMode: deltaMode,
                            pointerType: "mouse"
                        });
                        e.stopPropagation()
                    },
                    _normalizeDelta(delta) {
                        let deltaMode = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;
                        if (0 === deltaMode) {
                            return -delta
                        } else {
                            return -30 * delta
                        }
                    }
                };
                (0, _event_registrator.default)("dxmousewheel", wheel)
            },
        85272:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/double_click.js ***!
              \********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.name = void 0;
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../events/core/events_engine */ 55994));
                var _dom = __webpack_require__( /*! ../core/utils/dom */ 3532);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../core/dom_adapter */ 73349));
                var _class = _interopRequireDefault(__webpack_require__( /*! ../core/class */ 38377));
                var _event_registrator = _interopRequireDefault(__webpack_require__( /*! ./core/event_registrator */ 85788));
                var _click = __webpack_require__( /*! ./click */ 95429);
                var _index = __webpack_require__( /*! ./utils/index */ 39611);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                exports.name = "dxdblclick";
                const NAMESPACED_CLICK_EVENT = (0, _index.addNamespace)(_click.name, "dxDblClick");
                const DblClick = _class.default.inherit({
                    ctor: function() {
                        this._handlerCount = 0;
                        this._forgetLastClick()
                    },
                    _forgetLastClick: function() {
                        this._firstClickTarget = null;
                        this._lastClickTimeStamp = -300
                    },
                    add: function() {
                        if (this._handlerCount <= 0) {
                            _events_engine.default.on(_dom_adapter.default.getDocument(), NAMESPACED_CLICK_EVENT, this._clickHandler.bind(this))
                        }
                        this._handlerCount++
                    },
                    _clickHandler: function(e) {
                        const timeStamp = e.timeStamp || Date.now();
                        const timeBetweenClicks = timeStamp - this._lastClickTimeStamp;
                        const isSimulated = timeBetweenClicks < 0;
                        const isDouble = !isSimulated && timeBetweenClicks < 300;
                        if (isDouble) {
                            (0, _index.fireEvent)({
                                type: "dxdblclick",
                                target: (0, _dom.closestCommonParent)(this._firstClickTarget, e.target),
                                originalEvent: e
                            });
                            this._forgetLastClick()
                        } else {
                            this._firstClickTarget = e.target;
                            this._lastClickTimeStamp = timeStamp
                        }
                    },
                    remove: function() {
                        this._handlerCount--;
                        if (this._handlerCount <= 0) {
                            this._forgetLastClick();
                            _events_engine.default.off(_dom_adapter.default.getDocument(), NAMESPACED_CLICK_EVENT)
                        }
                    }
                });
                (0, _event_registrator.default)("dxdblclick", new DblClick)
            },
        23174:
            /*!************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/drag.js ***!
              \************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.start = exports.move = exports.leave = exports.enter = exports.end = exports.drop = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _element_data = __webpack_require__( /*! ../core/element_data */ 97906);
                var _array = __webpack_require__( /*! ../core/utils/array */ 89386);
                var iteratorUtils = function(obj, nodeInterop) {
                    if (!nodeInterop && obj && obj.__esModule) {
                        return obj
                    }
                    if (null === obj || "object" !== typeof obj && "function" !== typeof obj) {
                        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 ("default" !== key && 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
                }(__webpack_require__( /*! ../core/utils/iterator */ 95479));
                var _dom = __webpack_require__( /*! ../core/utils/dom */ 3532);
                var _event_registrator = _interopRequireDefault(__webpack_require__( /*! ./core/event_registrator */ 85788));
                var _index = __webpack_require__( /*! ./utils/index */ 39611);
                var _emitter = _interopRequireDefault(__webpack_require__( /*! ./gesture/emitter.gesture */ 98621));
                var _emitter_registrator = _interopRequireDefault(__webpack_require__( /*! ./core/emitter_registrator */ 82495));

                function _getRequireWildcardCache(nodeInterop) {
                    if ("function" !== typeof WeakMap) {
                        return null
                    }
                    var cacheBabelInterop = new WeakMap;
                    var cacheNodeInterop = new WeakMap;
                    return (_getRequireWildcardCache = function(nodeInterop) {
                        return nodeInterop ? cacheNodeInterop : cacheBabelInterop
                    })(nodeInterop)
                }

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                exports.start = "dxdragstart";
                exports.move = "dxdrag";
                exports.end = "dxdragend";
                const DRAG_ENTER_EVENT = "dxdragenter";
                exports.enter = DRAG_ENTER_EVENT;
                const DRAG_LEAVE_EVENT = "dxdragleave";
                exports.leave = DRAG_LEAVE_EVENT;
                const DROP_EVENT = "dxdrop";
                exports.drop = DROP_EVENT;
                const knownDropTargets = [];
                const knownDropTargetSelectors = [];
                const knownDropTargetConfigs = [];
                const dropTargetRegistration = {
                    setup: function(element, data) {
                        const knownDropTarget = knownDropTargets.includes(element);
                        if (!knownDropTarget) {
                            knownDropTargets.push(element);
                            knownDropTargetSelectors.push([]);
                            knownDropTargetConfigs.push(data || {})
                        }
                    },
                    add: function(element, handleObj) {
                        const index = knownDropTargets.indexOf(element);
                        this.updateEventsCounter(element, handleObj.type, 1);
                        const selector = handleObj.selector;
                        if (!knownDropTargetSelectors[index].includes(selector)) {
                            knownDropTargetSelectors[index].push(selector)
                        }
                    },
                    updateEventsCounter: function(element, event, value) {
                        if ([DRAG_ENTER_EVENT, DRAG_LEAVE_EVENT, DROP_EVENT].indexOf(event) > -1) {
                            const eventsCount = (0, _element_data.data)(element, "dxDragEventsCount") || 0;
                            (0, _element_data.data)(element, "dxDragEventsCount", Math.max(0, eventsCount + value))
                        }
                    },
                    remove: function(element, handleObj) {
                        this.updateEventsCounter(element, handleObj.type, -1)
                    },
                    teardown: function(element) {
                        const handlersCount = (0, _element_data.data)(element, "dxDragEventsCount");
                        if (!handlersCount) {
                            const index = knownDropTargets.indexOf(element);
                            knownDropTargets.splice(index, 1);
                            knownDropTargetSelectors.splice(index, 1);
                            knownDropTargetConfigs.splice(index, 1);
                            (0, _element_data.removeData)(element, "dxDragEventsCount")
                        }
                    }
                };
                (0, _event_registrator.default)(DRAG_ENTER_EVENT, dropTargetRegistration);
                (0, _event_registrator.default)(DRAG_LEAVE_EVENT, dropTargetRegistration);
                (0, _event_registrator.default)(DROP_EVENT, dropTargetRegistration);
                const DragEmitter = _emitter.default.inherit({
                    ctor: function(element) {
                        this.callBase(element);
                        this.direction = "both"
                    },
                    _init: function(e) {
                        this._initEvent = e
                    },
                    _start: function(e) {
                        e = this._fireEvent("dxdragstart", this._initEvent);
                        this._maxLeftOffset = e.maxLeftOffset;
                        this._maxRightOffset = e.maxRightOffset;
                        this._maxTopOffset = e.maxTopOffset;
                        this._maxBottomOffset = e.maxBottomOffset;
                        if (e.targetElements || null === e.targetElements) {
                            const dropTargets = (0, _array.wrapToArray)(e.targetElements || []);
                            this._dropTargets = iteratorUtils.map(dropTargets, (function(element) {
                                return (0, _renderer.default)(element).get(0)
                            }))
                        } else {
                            this._dropTargets = knownDropTargets
                        }
                    },
                    _move: function(e) {
                        const eventData = (0, _index.eventData)(e);
                        const dragOffset = this._calculateOffset(eventData);
                        e = this._fireEvent("dxdrag", e, {
                            offset: dragOffset
                        });
                        this._processDropTargets(e);
                        if (!e._cancelPreventDefault) {
                            e.preventDefault()
                        }
                    },
                    _calculateOffset: function(eventData) {
                        return {
                            x: this._calculateXOffset(eventData),
                            y: this._calculateYOffset(eventData)
                        }
                    },
                    _calculateXOffset: function(eventData) {
                        if ("vertical" !== this.direction) {
                            const offset = eventData.x - this._startEventData.x;
                            return this._fitOffset(offset, this._maxLeftOffset, this._maxRightOffset)
                        }
                        return 0
                    },
                    _calculateYOffset: function(eventData) {
                        if ("horizontal" !== this.direction) {
                            const offset = eventData.y - this._startEventData.y;
                            return this._fitOffset(offset, this._maxTopOffset, this._maxBottomOffset)
                        }
                        return 0
                    },
                    _fitOffset: function(offset, minOffset, maxOffset) {
                        if (null != minOffset) {
                            offset = Math.max(offset, -minOffset)
                        }
                        if (null != maxOffset) {
                            offset = Math.min(offset, maxOffset)
                        }
                        return offset
                    },
                    _processDropTargets: function(e) {
                        const target = this._findDropTarget(e);
                        const sameTarget = target === this._currentDropTarget;
                        if (!sameTarget) {
                            this._fireDropTargetEvent(e, DRAG_LEAVE_EVENT);
                            this._currentDropTarget = target;
                            this._fireDropTargetEvent(e, DRAG_ENTER_EVENT)
                        }
                    },
                    _fireDropTargetEvent: function(event, eventName) {
                        if (!this._currentDropTarget) {
                            return
                        }
                        const eventData = {
                            type: eventName,
                            originalEvent: event,
                            draggingElement: this._$element.get(0),
                            target: this._currentDropTarget
                        };
                        (0, _index.fireEvent)(eventData)
                    },
                    _findDropTarget: function(e) {
                        const that = this;
                        let result;
                        iteratorUtils.each(knownDropTargets, (function(_, target) {
                            if (!that._checkDropTargetActive(target)) {
                                return
                            }
                            const $target = (0, _renderer.default)(target);
                            iteratorUtils.each(function($element) {
                                const dropTargetIndex = knownDropTargets.indexOf($element.get(0));
                                const dropTargetSelectors = knownDropTargetSelectors[dropTargetIndex].filter(selector => selector);
                                let $delegatedTargets = $element.find(dropTargetSelectors.join(", "));
                                if (knownDropTargetSelectors[dropTargetIndex].includes(void 0)) {
                                    $delegatedTargets = $delegatedTargets.add($element)
                                }
                                return $delegatedTargets
                            }($target), (function(_, delegatedTarget) {
                                const $delegatedTarget = (0, _renderer.default)(delegatedTarget);
                                if (that._checkDropTarget(function($element) {
                                        const dropTargetIndex = knownDropTargets.indexOf($element.get(0));
                                        return knownDropTargetConfigs[dropTargetIndex]
                                    }($target), $delegatedTarget, (0, _renderer.default)(result), e)) {
                                    result = delegatedTarget
                                }
                            }))
                        }));
                        return result
                    },
                    _checkDropTargetActive: function(target) {
                        let active = false;
                        iteratorUtils.each(this._dropTargets, (function(_, activeTarget) {
                            active = active || activeTarget === target || (0, _dom.contains)(activeTarget, target);
                            return !active
                        }));
                        return active
                    },
                    _checkDropTarget: function(config, $target, $prevTarget, e) {
                        const isDraggingElement = $target.get(0) === (0, _renderer.default)(e.target).get(0);
                        if (isDraggingElement) {
                            return false
                        }
                        const targetPosition = function(dropTargetConfig, $element) {
                            if (dropTargetConfig.itemPositionFunc) {
                                return dropTargetConfig.itemPositionFunc($element)
                            } else {
                                return $element.offset()
                            }
                        }(config, $target);
                        if (e.pageX < targetPosition.left) {
                            return false
                        }
                        if (e.pageY < targetPosition.top) {
                            return false
                        }
                        const targetSize = function(dropTargetConfig, $element) {
                            if (dropTargetConfig.itemSizeFunc) {
                                return dropTargetConfig.itemSizeFunc($element)
                            }
                            return {
                                width: $element.get(0).getBoundingClientRect().width,
                                height: $element.get(0).getBoundingClientRect().height
                            }
                        }(config, $target);
                        if (e.pageX > targetPosition.left + targetSize.width) {
                            return false
                        }
                        if (e.pageY > targetPosition.top + targetSize.height) {
                            return false
                        }
                        if ($prevTarget.length && $prevTarget.closest($target).length) {
                            return false
                        }
                        if (config.checkDropTarget && !config.checkDropTarget($target, e)) {
                            return false
                        }
                        return $target
                    },
                    _end: function(e) {
                        const eventData = (0, _index.eventData)(e);
                        this._fireEvent("dxdragend", e, {
                            offset: this._calculateOffset(eventData)
                        });
                        this._fireDropTargetEvent(e, DROP_EVENT);
                        delete this._currentDropTarget
                    }
                });
                (0, _emitter_registrator.default)({
                    emitter: DragEmitter,
                    events: ["dxdragstart", "dxdrag", "dxdragend"]
                })
            },
        98621:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/gesture/emitter.gesture.js ***!
              \*******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _style = __webpack_require__( /*! ../../core/utils/style */ 80968);
                var _call_once = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/call_once */ 39618));
                var _dom = __webpack_require__( /*! ../../core/utils/dom */ 3532);
                var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/ready_callbacks */ 24311));
                var _math = __webpack_require__( /*! ../../core/utils/math */ 60810);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _index = __webpack_require__( /*! ../utils/index */ 39611);
                var _emitter = _interopRequireDefault(__webpack_require__( /*! ../core/emitter */ 31391));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const ready = _ready_callbacks.default.add;
                const abs = Math.abs;
                let TOUCH_BOUNDARY = 10;
                const setGestureCover = (0, _call_once.default)((function() {
                    const isDesktop = "desktop" === _devices.default.real().deviceType;
                    if (!(0, _style.styleProp)("pointer-events") || !isDesktop) {
                        return _common.noop
                    }
                    const $cover = (0, _renderer.default)("<div>").addClass("dx-gesture-cover").css("pointerEvents", "none");
                    _events_engine.default.subscribeGlobal($cover, "dxmousewheel", (function(e) {
                        e.preventDefault()
                    }));
                    ready((function() {
                        $cover.appendTo("body")
                    }));
                    return function(toggle, cursor) {
                        $cover.css("pointerEvents", toggle ? "all" : "none");
                        toggle && $cover.css("cursor", cursor)
                    }
                }));
                const GestureEmitter = _emitter.default.inherit({
                    gesture: true,
                    configure: function(data) {
                        this.getElement().css("msTouchAction", data.immediate ? "pinch-zoom" : "");
                        this.callBase(data)
                    },
                    allowInterruptionByMouseWheel: function() {
                        return 2 !== this._stage
                    },
                    getDirection: function() {
                        return this.direction
                    },
                    _cancel: function() {
                        this.callBase.apply(this, arguments);
                        this._toggleGestureCover(false);
                        this._stage = 0
                    },
                    start: function(e) {
                        if (e._needSkipEvent || (0, _index.needSkipEvent)(e)) {
                            this._cancel(e);
                            return
                        }
                        this._startEvent = (0, _index.createEvent)(e);
                        this._startEventData = (0, _index.eventData)(e);
                        this._stage = 1;
                        this._init(e);
                        this._setupImmediateTimer()
                    },
                    _setupImmediateTimer: function() {
                        var _this$immediateTimeou;
                        clearTimeout(this._immediateTimer);
                        this._immediateAccepted = false;
                        if (!this.immediate) {
                            return
                        }
                        if (0 === this.immediateTimeout) {
                            this._immediateAccepted = true;
                            return
                        }
                        this._immediateTimer = setTimeout(function() {
                            this._immediateAccepted = true
                        }.bind(this), null !== (_this$immediateTimeou = this.immediateTimeout) && void 0 !== _this$immediateTimeou ? _this$immediateTimeou : 180)
                    },
                    move: function(e) {
                        if (1 === this._stage && this._directionConfirmed(e)) {
                            this._stage = 2;
                            this._resetActiveElement();
                            this._toggleGestureCover(true);
                            this._clearSelection(e);
                            this._adjustStartEvent(e);
                            this._start(this._startEvent);
                            if (0 === this._stage) {
                                return
                            }
                            this._requestAccept(e);
                            this._move(e);
                            this._forgetAccept()
                        } else if (2 === this._stage) {
                            this._clearSelection(e);
                            this._move(e)
                        }
                    },
                    _directionConfirmed: function(e) {
                        const touchBoundary = this._getTouchBoundary(e);
                        const delta = (0, _index.eventDelta)(this._startEventData, (0, _index.eventData)(e));
                        const deltaX = abs(delta.x);
                        const deltaY = abs(delta.y);
                        const horizontalMove = this._validateMove(touchBoundary, deltaX, deltaY);
                        const verticalMove = this._validateMove(touchBoundary, deltaY, deltaX);
                        const direction = this.getDirection(e);
                        const bothAccepted = "both" === direction && (horizontalMove || verticalMove);
                        const horizontalAccepted = "horizontal" === direction && horizontalMove;
                        const verticalAccepted = "vertical" === direction && verticalMove;
                        return bothAccepted || horizontalAccepted || verticalAccepted || this._immediateAccepted
                    },
                    _validateMove: function(touchBoundary, mainAxis, crossAxis) {
                        return mainAxis && mainAxis >= touchBoundary && (this.immediate ? mainAxis >= crossAxis : true)
                    },
                    _getTouchBoundary: function(e) {
                        return this.immediate || (0, _index.isDxMouseWheelEvent)(e) ? 0 : TOUCH_BOUNDARY
                    },
                    _adjustStartEvent: function(e) {
                        const touchBoundary = this._getTouchBoundary(e);
                        const delta = (0, _index.eventDelta)(this._startEventData, (0, _index.eventData)(e));
                        this._startEvent.pageX += (0, _math.sign)(delta.x) * touchBoundary;
                        this._startEvent.pageY += (0, _math.sign)(delta.y) * touchBoundary
                    },
                    _resetActiveElement: function() {
                        if ("ios" === _devices.default.real().platform && this.getElement().find(":focus").length) {
                            (0, _dom.resetActiveElement)()
                        }
                    },
                    _toggleGestureCover: function(toggle) {
                        this._toggleGestureCoverImpl(toggle)
                    },
                    _toggleGestureCoverImpl: function(toggle) {
                        const isStarted = 2 === this._stage;
                        if (isStarted) {
                            ! function(toggle, cursor) {
                                const gestureCoverStrategy = setGestureCover();
                                gestureCoverStrategy(toggle, cursor)
                            }(toggle, this.getElement().css("cursor"))
                        }
                    },
                    _clearSelection: function(e) {
                        if ((0, _index.isDxMouseWheelEvent)(e) || (0, _index.isTouchEvent)(e)) {
                            return
                        }(0, _dom.clearSelection)()
                    },
                    end: function(e) {
                        this._toggleGestureCover(false);
                        if (2 === this._stage) {
                            this._end(e)
                        } else if (1 === this._stage) {
                            this._stop(e)
                        }
                        this._stage = 0
                    },
                    dispose: function() {
                        clearTimeout(this._immediateTimer);
                        this.callBase.apply(this, arguments);
                        this._toggleGestureCover(false)
                    },
                    _init: _common.noop,
                    _start: _common.noop,
                    _move: _common.noop,
                    _stop: _common.noop,
                    _end: _common.noop
                });
                GestureEmitter.initialTouchBoundary = TOUCH_BOUNDARY;
                GestureEmitter.touchBoundary = function(newBoundary) {
                    if ((0, _type.isDefined)(newBoundary)) {
                        TOUCH_BOUNDARY = newBoundary;
                        return
                    }
                    return TOUCH_BOUNDARY
                };
                var _default = GestureEmitter;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        37334:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/gesture/emitter.gesture.scroll.js ***!
              \**************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 38377));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _emitter = _interopRequireDefault(__webpack_require__( /*! ../../events/gesture/emitter.gesture */ 98621));
                var _emitter_registrator = _interopRequireDefault(__webpack_require__( /*! ../../events/core/emitter_registrator */ 82495));
                var _frame = __webpack_require__( /*! ../../animation/frame */ 90057);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const abstract = _class.default.abstract;
                const realDevice = _devices.default.real();
                const Locker = _class.default.inherit(function() {
                    const NAMESPACED_SCROLL_EVENT = (0, _index.addNamespace)("scroll", "dxScrollEmitter");
                    return {
                        ctor: function(element) {
                            this._element = element;
                            this._locked = false;
                            this._proxiedScroll = e => {
                                if (!this._disposed) {
                                    this._scroll(e)
                                }
                            };
                            _events_engine.default.on(this._element, NAMESPACED_SCROLL_EVENT, this._proxiedScroll)
                        },
                        _scroll: abstract,
                        check: function(e, callback) {
                            if (this._locked) {
                                callback()
                            }
                        },
                        dispose: function() {
                            this._disposed = true;
                            _events_engine.default.off(this._element, NAMESPACED_SCROLL_EVENT, this._proxiedScroll)
                        }
                    }
                }());
                const TimeoutLocker = Locker.inherit({
                    ctor: function(element, timeout) {
                        this.callBase(element);
                        this._timeout = timeout
                    },
                    _scroll: function() {
                        this._prepare();
                        this._forget()
                    },
                    _prepare: function() {
                        if (this._timer) {
                            this._clearTimer()
                        }
                        this._locked = true
                    },
                    _clearTimer: function() {
                        clearTimeout(this._timer);
                        this._locked = false;
                        this._timer = null
                    },
                    _forget: function() {
                        const that = this;
                        this._timer = setTimeout((function() {
                            that._clearTimer()
                        }), this._timeout)
                    },
                    dispose: function() {
                        this.callBase();
                        this._clearTimer()
                    }
                });
                const WheelLocker = TimeoutLocker.inherit({
                    ctor: function(element) {
                        this.callBase(element, 400);
                        this._lastWheelDirection = null
                    },
                    check: function(e, callback) {
                        this._checkDirectionChanged(e);
                        this.callBase(e, callback)
                    },
                    _checkDirectionChanged: function(e) {
                        if (!(0, _index.isDxMouseWheelEvent)(e)) {
                            this._lastWheelDirection = null;
                            return
                        }
                        const direction = e.shiftKey || false;
                        const directionChange = null !== this._lastWheelDirection && direction !== this._lastWheelDirection;
                        this._lastWheelDirection = direction;
                        this._locked = this._locked && !directionChange
                    }
                });
                let PointerLocker = TimeoutLocker.inherit({
                    ctor: function(element) {
                        this.callBase(element, 400)
                    }
                });
                ! function() {
                    const {
                        ios: isIos,
                        android: isAndroid
                    } = realDevice;
                    if (!(isIos || isAndroid)) {
                        return
                    }
                    PointerLocker = Locker.inherit({
                        _scroll: function() {
                            this._locked = true;
                            const that = this;
                            (0, _frame.cancelAnimationFrame)(this._scrollFrame);
                            this._scrollFrame = (0, _frame.requestAnimationFrame)((function() {
                                that._locked = false
                            }))
                        },
                        check: function(e, callback) {
                            (0, _frame.cancelAnimationFrame)(this._scrollFrame);
                            (0, _frame.cancelAnimationFrame)(this._checkFrame);
                            const that = this;
                            const callBase = this.callBase;
                            this._checkFrame = (0, _frame.requestAnimationFrame)((function() {
                                callBase.call(that, e, callback);
                                that._locked = false
                            }))
                        },
                        dispose: function() {
                            this.callBase();
                            (0, _frame.cancelAnimationFrame)(this._scrollFrame);
                            (0, _frame.cancelAnimationFrame)(this._checkFrame)
                        }
                    })
                }();
                const ScrollEmitter = _emitter.default.inherit(function() {
                    const FRAME_DURATION = Math.round(1e3 / 60);
                    return {
                        ctor: function(element) {
                            this.callBase.apply(this, arguments);
                            this.direction = "both";
                            this._pointerLocker = new PointerLocker(element);
                            this._wheelLocker = new WheelLocker(element)
                        },
                        validate: function() {
                            return true
                        },
                        configure: function(data) {
                            if (data.scrollTarget) {
                                this._pointerLocker.dispose();
                                this._wheelLocker.dispose();
                                this._pointerLocker = new PointerLocker(data.scrollTarget);
                                this._wheelLocker = new WheelLocker(data.scrollTarget)
                            }
                            this.callBase(data)
                        },
                        _init: function(e) {
                            this._wheelLocker.check(e, function() {
                                if ((0, _index.isDxMouseWheelEvent)(e)) {
                                    this._accept(e)
                                }
                            }.bind(this));
                            this._pointerLocker.check(e, function() {
                                const skipCheck = this.isNative && (0, _index.isMouseEvent)(e);
                                if (!(0, _index.isDxMouseWheelEvent)(e) && !skipCheck) {
                                    this._accept(e)
                                }
                            }.bind(this));
                            this._fireEvent("dxscrollinit", e);
                            this._prevEventData = (0, _index.eventData)(e)
                        },
                        move: function(e) {
                            this.callBase.apply(this, arguments);
                            e.isScrollingEvent = this.isNative || e.isScrollingEvent
                        },
                        _start: function(e) {
                            this._savedEventData = (0, _index.eventData)(e);
                            this._fireEvent("dxscrollstart", e);
                            this._prevEventData = (0, _index.eventData)(e)
                        },
                        _move: function(e) {
                            const currentEventData = (0, _index.eventData)(e);
                            this._fireEvent("dxscroll", e, {
                                delta: (0, _index.eventDelta)(this._prevEventData, currentEventData)
                            });
                            const delta = (0, _index.eventDelta)(this._savedEventData, currentEventData);
                            if (delta.time > 200) {
                                this._savedEventData = this._prevEventData
                            }
                            this._prevEventData = (0, _index.eventData)(e)
                        },
                        _end: function(e) {
                            const endEventDelta = (0, _index.eventDelta)(this._prevEventData, (0, _index.eventData)(e));
                            let velocity = {
                                x: 0,
                                y: 0
                            };
                            if (!(0, _index.isDxMouseWheelEvent)(e) && endEventDelta.time < 100) {
                                const delta = (0, _index.eventDelta)(this._savedEventData, this._prevEventData);
                                const velocityMultiplier = FRAME_DURATION / delta.time;
                                velocity = {
                                    x: delta.x * velocityMultiplier,
                                    y: delta.y * velocityMultiplier
                                }
                            }
                            this._fireEvent("dxscrollend", e, {
                                velocity: velocity
                            })
                        },
                        _stop: function(e) {
                            this._fireEvent("dxscrollstop", e)
                        },
                        cancel: function(e) {
                            this.callBase.apply(this, arguments);
                            this._fireEvent("dxscrollcancel", e)
                        },
                        dispose: function() {
                            this.callBase.apply(this, arguments);
                            this._pointerLocker.dispose();
                            this._wheelLocker.dispose()
                        },
                        _clearSelection: function() {
                            if (this.isNative) {
                                return
                            }
                            return this.callBase.apply(this, arguments)
                        },
                        _toggleGestureCover: function() {
                            if (this.isNative) {
                                return
                            }
                            return this.callBase.apply(this, arguments)
                        }
                    }
                }());
                (0, _emitter_registrator.default)({
                    emitter: ScrollEmitter,
                    events: ["dxscrollinit", "dxscrollstart", "dxscroll", "dxscrollend", "dxscrollstop", "dxscrollcancel"]
                });
                var _default = {
                    init: "dxscrollinit",
                    start: "dxscrollstart",
                    move: "dxscroll",
                    end: "dxscrollend",
                    stop: "dxscrollstop",
                    cancel: "dxscrollcancel",
                    scroll: "scroll"
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        66894:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/gesture/swipeable.js ***!
              \*************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _swipe = __webpack_require__( /*! ../swipe */ 34309);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _dom_component = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_component */ 13046));
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _index = __webpack_require__( /*! ../utils/index */ 39611);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _public_component = __webpack_require__( /*! ../../core/utils/public_component */ 9321);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const ACTION_TO_EVENT_MAP = {
                    onStart: _swipe.start,
                    onUpdated: _swipe.swipe,
                    onEnd: _swipe.end,
                    onCancel: "dxswipecancel"
                };
                const Swipeable = _dom_component.default.inherit({
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            elastic: true,
                            immediate: false,
                            immediateTimeout: 180,
                            direction: "horizontal",
                            itemSizeFunc: null,
                            onStart: null,
                            onUpdated: null,
                            onEnd: null,
                            onCancel: null
                        })
                    },
                    _render: function() {
                        this.callBase();
                        this.$element().addClass("dx-swipeable");
                        this._attachEventHandlers()
                    },
                    _attachEventHandlers: function() {
                        this._detachEventHandlers();
                        if (this.option("disabled")) {
                            return
                        }
                        const NAME = this.NAME;
                        this._createEventData();
                        (0, _iterator.each)(ACTION_TO_EVENT_MAP, function(actionName, eventName) {
                            const action = this._createActionByOption(actionName, {
                                context: this
                            });
                            eventName = (0, _index.addNamespace)(eventName, NAME);
                            _events_engine.default.on(this.$element(), eventName, this._eventData, (function(e) {
                                return action({
                                    event: e
                                })
                            }))
                        }.bind(this))
                    },
                    _createEventData: function() {
                        this._eventData = {
                            elastic: this.option("elastic"),
                            itemSizeFunc: this.option("itemSizeFunc"),
                            direction: this.option("direction"),
                            immediate: this.option("immediate"),
                            immediateTimeout: this.option("immediateTimeout")
                        }
                    },
                    _detachEventHandlers: function() {
                        _events_engine.default.off(this.$element(), ".dxSwipeable")
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "disabled":
                            case "onStart":
                            case "onUpdated":
                            case "onEnd":
                            case "onCancel":
                            case "elastic":
                            case "immediate":
                            case "itemSizeFunc":
                            case "direction":
                                this._detachEventHandlers();
                                this._attachEventHandlers();
                                break;
                            case "rtlEnabled":
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _useTemplates: function() {
                        return false
                    }
                });
                (0, _public_component.name)(Swipeable, "dxSwipeable");
                var _default = Swipeable;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        11699:
            /*!************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/hold.js ***!
              \************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _index = __webpack_require__( /*! ./utils/index */ 39611);
                var _emitter = _interopRequireDefault(__webpack_require__( /*! ./core/emitter */ 31391));
                var _emitter_registrator = _interopRequireDefault(__webpack_require__( /*! ./core/emitter_registrator */ 82495));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const abs = Math.abs;
                const HoldEmitter = _emitter.default.inherit({
                    start: function(e) {
                        this._startEventData = (0, _index.eventData)(e);
                        this._startTimer(e)
                    },
                    _startTimer: function(e) {
                        const holdTimeout = "timeout" in this ? this.timeout : 750;
                        this._holdTimer = setTimeout(function() {
                            this._requestAccept(e);
                            this._fireEvent("dxhold", e, {
                                target: e.target
                            });
                            this._forgetAccept()
                        }.bind(this), holdTimeout)
                    },
                    move: function(e) {
                        if (this._touchWasMoved(e)) {
                            this._cancel(e)
                        }
                    },
                    _touchWasMoved: function(e) {
                        const delta = (0, _index.eventDelta)(this._startEventData, (0, _index.eventData)(e));
                        return abs(delta.x) > 5 || abs(delta.y) > 5
                    },
                    end: function() {
                        this._stopTimer()
                    },
                    _stopTimer: function() {
                        clearTimeout(this._holdTimer)
                    },
                    cancel: function() {
                        this._stopTimer()
                    },
                    dispose: function() {
                        this._stopTimer()
                    }
                });
                (0, _emitter_registrator.default)({
                    emitter: HoldEmitter,
                    bubble: true,
                    events: ["dxhold"]
                });
                var _default = {
                    name: "dxhold"
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        24028:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/hover.js ***!
              \*************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.start = exports.end = void 0;
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../events/core/events_engine */ 55994));
                var _element_data = __webpack_require__( /*! ../core/element_data */ 97906);
                var _class = _interopRequireDefault(__webpack_require__( /*! ../core/class */ 38377));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../core/devices */ 20530));
                var _event_registrator = _interopRequireDefault(__webpack_require__( /*! ./core/event_registrator */ 85788));
                var _index = __webpack_require__( /*! ./utils/index */ 39611);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ./pointer */ 93786));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                exports.start = "dxhoverstart";
                const POINTERENTER_NAMESPACED_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.enter, "dxHoverStart");
                exports.end = "dxhoverend";
                const POINTERLEAVE_NAMESPACED_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.leave, "dxHoverEnd");
                const Hover = _class.default.inherit({
                    noBubble: true,
                    ctor: function() {
                        this._handlerArrayKeyPath = this._eventNamespace + "_HandlerStore"
                    },
                    setup: function(element) {
                        (0, _element_data.data)(element, this._handlerArrayKeyPath, {})
                    },
                    add: function(element, handleObj) {
                        const that = this;
                        const handler = function(e) {
                            that._handler(e)
                        };
                        _events_engine.default.on(element, this._originalEventName, handleObj.selector, handler);
                        (0, _element_data.data)(element, this._handlerArrayKeyPath)[handleObj.guid] = handler
                    },
                    _handler: function(e) {
                        if ((0, _index.isTouchEvent)(e) || _devices.default.isSimulator()) {
                            return
                        }(0, _index.fireEvent)({
                            type: this._eventName,
                            originalEvent: e,
                            delegateTarget: e.delegateTarget
                        })
                    },
                    remove: function(element, handleObj) {
                        const handler = (0, _element_data.data)(element, this._handlerArrayKeyPath)[handleObj.guid];
                        _events_engine.default.off(element, this._originalEventName, handleObj.selector, handler)
                    },
                    teardown: function(element) {
                        (0, _element_data.removeData)(element, this._handlerArrayKeyPath)
                    }
                });
                const HoverStart = Hover.inherit({
                    ctor: function() {
                        this._eventNamespace = "dxHoverStart";
                        this._eventName = "dxhoverstart";
                        this._originalEventName = POINTERENTER_NAMESPACED_EVENT_NAME;
                        this.callBase()
                    },
                    _handler: function(e) {
                        const pointers = e.pointers || [];
                        if (!pointers.length) {
                            this.callBase(e)
                        }
                    }
                });
                const HoverEnd = Hover.inherit({
                    ctor: function() {
                        this._eventNamespace = "dxHoverEnd";
                        this._eventName = "dxhoverend";
                        this._originalEventName = POINTERLEAVE_NAMESPACED_EVENT_NAME;
                        this.callBase()
                    }
                });
                (0, _event_registrator.default)("dxhoverstart", new HoverStart);
                (0, _event_registrator.default)("dxhoverend", new HoverEnd)
            },
        66365:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/index.js ***!
              \*************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.triggerHandler = exports.trigger = exports.one = exports.on = exports.off = exports.Event = void 0;
                var _events_engine = (obj = __webpack_require__( /*! ./core/events_engine */ 55994), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const on = _events_engine.default.on;
                exports.on = on;
                const one = _events_engine.default.one;
                exports.one = one;
                const off = _events_engine.default.off;
                exports.off = off;
                const trigger = _events_engine.default.trigger;
                exports.trigger = trigger;
                const triggerHandler = _events_engine.default.triggerHandler;
                exports.triggerHandler = triggerHandler;
                const Event = _events_engine.default.Event;
                exports.Event = Event
            },
        93786:
            /*!***************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/pointer.js ***!
              \***************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _config = _interopRequireDefault(__webpack_require__( /*! ../core/config */ 80209));
                var support = function(obj, nodeInterop) {
                    if (!nodeInterop && obj && obj.__esModule) {
                        return obj
                    }
                    if (null === obj || "object" !== typeof obj && "function" !== typeof obj) {
                        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 ("default" !== key && 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
                }(__webpack_require__( /*! ../core/utils/support */ 60137));
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../core/devices */ 20530));
                var _event_registrator = _interopRequireDefault(__webpack_require__( /*! ./core/event_registrator */ 85788));
                var _touch = _interopRequireDefault(__webpack_require__( /*! ./pointer/touch */ 69120));
                var _mouse = _interopRequireDefault(__webpack_require__( /*! ./pointer/mouse */ 66509));
                var _mouse_and_touch = _interopRequireDefault(__webpack_require__( /*! ./pointer/mouse_and_touch */ 87720));

                function _getRequireWildcardCache(nodeInterop) {
                    if ("function" !== typeof WeakMap) {
                        return null
                    }
                    var cacheBabelInterop = new WeakMap;
                    var cacheNodeInterop = new WeakMap;
                    return (_getRequireWildcardCache = function(nodeInterop) {
                        return nodeInterop ? cacheNodeInterop : cacheBabelInterop
                    })(nodeInterop)
                }

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const EventStrategy = ((support, _ref) => {
                    let {
                        tablet: tablet,
                        phone: phone
                    } = _ref;
                    const pointerEventStrategy = function() {
                        const eventStrategyName = (0, _config.default)().pointerEventStrategy;
                        return {
                            "mouse-and-touch": _mouse_and_touch.default,
                            touch: _touch.default,
                            mouse: _mouse.default
                        } [eventStrategyName]
                    }();
                    if (pointerEventStrategy) {
                        return pointerEventStrategy
                    }
                    if (support.touch && !(tablet || phone)) {
                        return _mouse_and_touch.default
                    }
                    if (support.touch) {
                        return _touch.default
                    }
                    return _mouse.default
                })(support, _devices.default.real());
                (0, _iterator.each)(EventStrategy.map, (pointerEvent, originalEvents) => {
                    (0, _event_registrator.default)(pointerEvent, new EventStrategy(pointerEvent, originalEvents))
                });
                var _default = {
                    down: "dxpointerdown",
                    up: "dxpointerup",
                    move: "dxpointermove",
                    cancel: "dxpointercancel",
                    enter: "dxpointerenter",
                    leave: "dxpointerleave",
                    over: "dxpointerover",
                    out: "dxpointerout"
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        88136:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/pointer/base.js ***!
              \********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _browser = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/browser */ 47810));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 38377));
                var _index = __webpack_require__( /*! ../utils/index */ 39611);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const BaseStrategy = _class.default.inherit({
                    ctor: function(eventName, originalEvents) {
                        this._eventName = eventName;
                        this._originalEvents = (0, _index.addNamespace)(originalEvents, "dxPointerEvents");
                        this._handlerCount = 0;
                        this.noBubble = this._isNoBubble()
                    },
                    _isNoBubble: function() {
                        const eventName = this._eventName;
                        return "dxpointerenter" === eventName || "dxpointerleave" === eventName
                    },
                    _handler: function(e) {
                        var _originalEvent$target;
                        const delegateTarget = this._getDelegateTarget(e);
                        const event = {
                            type: this._eventName,
                            pointerType: e.pointerType || (0, _index.eventSource)(e),
                            originalEvent: e,
                            delegateTarget: delegateTarget,
                            timeStamp: _browser.default.mozilla ? (new Date).getTime() : e.timeStamp
                        };
                        const originalEvent = e.originalEvent;
                        if (null !== originalEvent && void 0 !== originalEvent && null !== (_originalEvent$target = originalEvent.target) && void 0 !== _originalEvent$target && _originalEvent$target.shadowRoot) {
                            var _originalEvent$path, _originalEvent$compos;
                            const path = null !== (_originalEvent$path = originalEvent.path) && void 0 !== _originalEvent$path ? _originalEvent$path : null === (_originalEvent$compos = originalEvent.composedPath) || void 0 === _originalEvent$compos ? void 0 : _originalEvent$compos.call(originalEvent);
                            event.target = path[0]
                        }
                        return this._fireEvent(event)
                    },
                    _getDelegateTarget: function(e) {
                        let delegateTarget;
                        if (this.noBubble) {
                            delegateTarget = e.delegateTarget
                        }
                        return delegateTarget
                    },
                    _fireEvent: function(args) {
                        return (0, _index.fireEvent)(args)
                    },
                    _setSelector: function(handleObj) {
                        this._selector = this.noBubble && handleObj ? handleObj.selector : null
                    },
                    _getSelector: function() {
                        return this._selector
                    },
                    setup: function() {
                        return true
                    },
                    add: function(element, handleObj) {
                        if (this._handlerCount <= 0 || this.noBubble) {
                            element = this.noBubble ? element : _dom_adapter.default.getDocument();
                            this._setSelector(handleObj);
                            const that = this;
                            _events_engine.default.on(element, this._originalEvents, this._getSelector(), (function(e) {
                                that._handler(e)
                            }))
                        }
                        if (!this.noBubble) {
                            this._handlerCount++
                        }
                    },
                    remove: function(handleObj) {
                        this._setSelector(handleObj);
                        if (!this.noBubble) {
                            this._handlerCount--
                        }
                    },
                    teardown: function(element) {
                        if (this._handlerCount && !this.noBubble) {
                            return
                        }
                        element = this.noBubble ? element : _dom_adapter.default.getDocument();
                        if (".dxPointerEvents" !== this._originalEvents) {
                            _events_engine.default.off(element, this._originalEvents, this._getSelector())
                        }
                    },
                    dispose: function(element) {
                        element = this.noBubble ? element : _dom_adapter.default.getDocument();
                        _events_engine.default.off(element, this._originalEvents)
                    }
                });
                var _default = BaseStrategy;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        66509:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/pointer/mouse.js ***!
              \*********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _base = _interopRequireDefault(__webpack_require__( /*! ./base */ 88136));
                var _observer = _interopRequireDefault(__webpack_require__( /*! ./observer */ 25544));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const eventMap = {
                    dxpointerdown: "mousedown",
                    dxpointermove: "mousemove",
                    dxpointerup: "mouseup",
                    dxpointercancel: "",
                    dxpointerover: "mouseover",
                    dxpointerout: "mouseout",
                    dxpointerenter: "mouseenter",
                    dxpointerleave: "mouseleave"
                };
                const normalizeMouseEvent = function(e) {
                    e.pointerId = 1;
                    return {
                        pointers: observer.pointers(),
                        pointerId: 1
                    }
                };
                let observer;
                let activated = false;
                const activateStrategy = function() {
                    if (activated) {
                        return
                    }
                    observer = new _observer.default(eventMap, (function() {
                        return true
                    }));
                    activated = true
                };
                const MouseStrategy = _base.default.inherit({
                    ctor: function() {
                        this.callBase.apply(this, arguments);
                        activateStrategy()
                    },
                    _fireEvent: function(args) {
                        return this.callBase((0, _extend.extend)(normalizeMouseEvent(args.originalEvent), args))
                    }
                });
                MouseStrategy.map = eventMap;
                MouseStrategy.normalize = normalizeMouseEvent;
                MouseStrategy.activate = activateStrategy;
                MouseStrategy.resetObserver = function() {
                    observer.reset()
                };
                var _default = MouseStrategy;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        87720:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/pointer/mouse_and_touch.js ***!
              \*******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _base = _interopRequireDefault(__webpack_require__( /*! ./base */ 88136));
                var _mouse = _interopRequireDefault(__webpack_require__( /*! ./mouse */ 66509));
                var _touch = _interopRequireDefault(__webpack_require__( /*! ./touch */ 69120));
                var _index = __webpack_require__( /*! ../utils/index */ 39611);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                let activated = false;
                const activateStrategy = function() {
                    if (activated) {
                        return
                    }
                    _mouse.default.activate();
                    activated = true
                };
                const MouseAndTouchStrategy = _base.default.inherit({
                    EVENT_LOCK_TIMEOUT: 100,
                    ctor: function() {
                        this.callBase.apply(this, arguments);
                        activateStrategy()
                    },
                    _handler: function(e) {
                        const isMouse = (0, _index.isMouseEvent)(e);
                        if (!isMouse) {
                            this._skipNextEvents = true
                        }
                        if (isMouse && this._mouseLocked) {
                            return
                        }
                        if (isMouse && this._skipNextEvents) {
                            this._skipNextEvents = false;
                            this._mouseLocked = true;
                            clearTimeout(this._unlockMouseTimer);
                            const that = this;
                            this._unlockMouseTimer = setTimeout((function() {
                                that._mouseLocked = false
                            }), this.EVENT_LOCK_TIMEOUT);
                            return
                        }
                        return this.callBase(e)
                    },
                    _fireEvent: function(args) {
                        const normalizer = (0, _index.isMouseEvent)(args.originalEvent) ? _mouse.default.normalize : _touch.default.normalize;
                        return this.callBase((0, _extend.extend)(normalizer(args.originalEvent), args))
                    },
                    dispose: function() {
                        this.callBase();
                        this._skipNextEvents = false;
                        this._mouseLocked = false;
                        clearTimeout(this._unlockMouseTimer)
                    }
                });
                MouseAndTouchStrategy.map = {
                    dxpointerdown: "touchstart mousedown",
                    dxpointermove: "touchmove mousemove",
                    dxpointerup: "touchend mouseup",
                    dxpointercancel: "touchcancel",
                    dxpointerover: "mouseover",
                    dxpointerout: "mouseout",
                    dxpointerenter: "mouseenter",
                    dxpointerleave: "mouseleave"
                };
                MouseAndTouchStrategy.resetObserver = _mouse.default.resetObserver;
                var _default = MouseAndTouchStrategy;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        25544:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/pointer/observer.js ***!
              \************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/ready_callbacks */ 24311));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const addEventsListener = function(events, handler) {
                    _ready_callbacks.default.add((function() {
                        events.split(" ").forEach((function(event) {
                            _dom_adapter.default.listen(_dom_adapter.default.getDocument(), event, handler, true)
                        }))
                    }))
                };
                var _default = function(eventMap, pointerEquals, onPointerAdding) {
                    onPointerAdding = onPointerAdding || function() {};
                    let pointers = [];
                    const getPointerIndex = function(e) {
                        let index = -1;
                        (0, _iterator.each)(pointers, (function(i, pointer) {
                            if (!pointerEquals(e, pointer)) {
                                return true
                            }
                            index = i;
                            return false
                        }));
                        return index
                    };
                    const removePointer = function(e) {
                        const index = getPointerIndex(e);
                        if (index > -1) {
                            pointers.splice(index, 1)
                        }
                    };
                    addEventsListener(eventMap.dxpointerdown, (function(e) {
                        if (-1 === getPointerIndex(e)) {
                            onPointerAdding(e);
                            pointers.push(e)
                        }
                    }));
                    addEventsListener(eventMap.dxpointermove, (function(e) {
                        pointers[getPointerIndex(e)] = e
                    }));
                    addEventsListener(eventMap.dxpointerup, removePointer);
                    addEventsListener(eventMap.dxpointercancel, removePointer);
                    this.pointers = function() {
                        return pointers
                    };
                    this.reset = function() {
                        pointers = []
                    }
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        69120:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/pointer/touch.js ***!
              \*********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _base = _interopRequireDefault(__webpack_require__( /*! ./base */ 88136));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const normalizeTouchEvent = function(e) {
                    const pointers = [];
                    (0, _iterator.each)(e.touches, (function(_, touch) {
                        pointers.push((0, _extend.extend)({
                            pointerId: touch.identifier
                        }, touch))
                    }));
                    return {
                        pointers: pointers,
                        pointerId: e.changedTouches[0].identifier
                    }
                };
                const skipTouchWithSameIdentifier = function(pointerEvent) {
                    return "ios" === _devices.default.real().platform && ("dxpointerdown" === pointerEvent || "dxpointerup" === pointerEvent)
                };
                const TouchStrategy = _base.default.inherit({
                    ctor: function() {
                        this.callBase.apply(this, arguments);
                        this._pointerId = 0
                    },
                    _handler: function(e) {
                        if (skipTouchWithSameIdentifier(this._eventName)) {
                            const touch = e.changedTouches[0];
                            if (this._pointerId === touch.identifier && 0 !== this._pointerId) {
                                return
                            }
                            this._pointerId = touch.identifier
                        }
                        return this.callBase.apply(this, arguments)
                    },
                    _fireEvent: function(args) {
                        return this.callBase((0, _extend.extend)(normalizeTouchEvent(args.originalEvent), args))
                    }
                });
                TouchStrategy.map = {
                    dxpointerdown: "touchstart",
                    dxpointermove: "touchmove",
                    dxpointerup: "touchend",
                    dxpointercancel: "touchcancel",
                    dxpointerover: "",
                    dxpointerout: "",
                    dxpointerenter: "",
                    dxpointerleave: ""
                };
                TouchStrategy.normalize = normalizeTouchEvent;
                var _default = TouchStrategy;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        29007:
            /*!**************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/remove.js ***!
              \**************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.removeEvent = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _element_data = __webpack_require__( /*! ../core/element_data */ 97906);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ./core/events_engine */ 55994));
                var _event_registrator = _interopRequireDefault(__webpack_require__( /*! ./core/event_registrator */ 85788));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                exports.removeEvent = "dxremove";
                (0, _element_data.beforeCleanData)((function(elements) {
                    elements = [].slice.call(elements);
                    for (let i = 0; i < elements.length; i++) {
                        const $element = (0, _renderer.default)(elements[i]);
                        if ($element.prop("dxRemoveEvent")) {
                            $element[0].dxRemoveEvent = null;
                            _events_engine.default.triggerHandler($element, "dxremove")
                        }
                    }
                }));
                (0, _event_registrator.default)("dxremove", {
                    noBubble: true,
                    setup: function(element) {
                        (0, _renderer.default)(element).prop("dxRemoveEvent", true)
                    }
                })
            },
        72918:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/short.js ***!
              \*************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.visibility = exports.resize = exports.keyboard = exports.hover = exports.focus = exports.dxClick = exports.click = exports.active = void 0;
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ./core/events_engine */ 55994));
                var _keyboard_processor = _interopRequireDefault(__webpack_require__( /*! ./core/keyboard_processor */ 51661));
                var _index = __webpack_require__( /*! ./utils/index */ 39611);

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

                function addNamespace(event, namespace) {
                    return namespace ? (0, _index.addNamespace)(event, namespace) : event
                }

                function executeAction(action, args) {
                    return "function" === typeof action ? action(args) : action.execute(args)
                }
                const active = {
                    on: ($el, active, inactive, opts) => {
                        const {
                            selector: selector,
                            showTimeout: showTimeout,
                            hideTimeout: hideTimeout,
                            namespace: namespace
                        } = opts;
                        _events_engine.default.on($el, addNamespace("dxactive", namespace), selector, {
                            timeout: showTimeout
                        }, event => executeAction(active, {
                            event: event,
                            element: event.currentTarget
                        }));
                        _events_engine.default.on($el, addNamespace("dxinactive", namespace), selector, {
                            timeout: hideTimeout
                        }, event => executeAction(inactive, {
                            event: event,
                            element: event.currentTarget
                        }))
                    },
                    off: ($el, _ref) => {
                        let {
                            namespace: namespace,
                            selector: selector
                        } = _ref;
                        _events_engine.default.off($el, addNamespace("dxactive", namespace), selector);
                        _events_engine.default.off($el, addNamespace("dxinactive", namespace), selector)
                    }
                };
                exports.active = active;
                const resize = {
                    on: function($el, resize) {
                        let {
                            namespace: namespace
                        } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                        _events_engine.default.on($el, addNamespace("dxresize", namespace), resize)
                    },
                    off: function($el) {
                        let {
                            namespace: namespace
                        } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                        _events_engine.default.off($el, addNamespace("dxresize", namespace))
                    }
                };
                exports.resize = resize;
                const hover = {
                    on: ($el, start, end, _ref2) => {
                        let {
                            selector: selector,
                            namespace: namespace
                        } = _ref2;
                        _events_engine.default.on($el, addNamespace("dxhoverend", namespace), selector, event => end(event));
                        _events_engine.default.on($el, addNamespace("dxhoverstart", namespace), selector, event => executeAction(start, {
                            element: event.target,
                            event: event
                        }))
                    },
                    off: ($el, _ref3) => {
                        let {
                            selector: selector,
                            namespace: namespace
                        } = _ref3;
                        _events_engine.default.off($el, addNamespace("dxhoverstart", namespace), selector);
                        _events_engine.default.off($el, addNamespace("dxhoverend", namespace), selector)
                    }
                };
                exports.hover = hover;
                const visibility = {
                    on: ($el, shown, hiding, _ref4) => {
                        let {
                            namespace: namespace
                        } = _ref4;
                        _events_engine.default.on($el, addNamespace("dxhiding", namespace), hiding);
                        _events_engine.default.on($el, addNamespace("dxshown", namespace), shown)
                    },
                    off: ($el, _ref5) => {
                        let {
                            namespace: namespace
                        } = _ref5;
                        _events_engine.default.off($el, addNamespace("dxhiding", namespace));
                        _events_engine.default.off($el, addNamespace("dxshown", namespace))
                    }
                };
                exports.visibility = visibility;
                const focus = {
                    on: ($el, focusIn, focusOut, _ref6) => {
                        let {
                            namespace: namespace
                        } = _ref6;
                        _events_engine.default.on($el, addNamespace("focusin", namespace), focusIn);
                        _events_engine.default.on($el, addNamespace("focusout", namespace), focusOut)
                    },
                    off: ($el, _ref7) => {
                        let {
                            namespace: namespace
                        } = _ref7;
                        _events_engine.default.off($el, addNamespace("focusin", namespace));
                        _events_engine.default.off($el, addNamespace("focusout", namespace))
                    },
                    trigger: $el => _events_engine.default.trigger($el, "focus")
                };
                exports.focus = focus;
                const dxClick = {
                    on: function($el, click) {
                        let {
                            namespace: namespace
                        } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                        _events_engine.default.on($el, addNamespace("dxclick", namespace), click)
                    },
                    off: function($el) {
                        let {
                            namespace: namespace
                        } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                        _events_engine.default.off($el, addNamespace("dxclick", namespace))
                    }
                };
                exports.dxClick = dxClick;
                const click = {
                    on: function($el, click) {
                        let {
                            namespace: namespace
                        } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                        _events_engine.default.on($el, addNamespace("click", namespace), click)
                    },
                    off: function($el) {
                        let {
                            namespace: namespace
                        } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                        _events_engine.default.off($el, addNamespace("click", namespace))
                    }
                };
                exports.click = click;
                let index = 0;
                const keyboardProcessors = {};
                const keyboard = {
                    on: (element, focusTarget, handler) => {
                        const listenerId = "keyboardProcessorId".concat(index++);
                        keyboardProcessors[listenerId] = new _keyboard_processor.default({
                            element: element,
                            focusTarget: focusTarget,
                            handler: handler
                        });
                        return listenerId
                    },
                    off: listenerId => {
                        if (listenerId && keyboardProcessors[listenerId]) {
                            keyboardProcessors[listenerId].dispose();
                            delete keyboardProcessors[listenerId]
                        }
                    },
                    _getProcessor: listenerId => keyboardProcessors[listenerId]
                };
                exports.keyboard = keyboard
            },
        34309:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/swipe.js ***!
              \*************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.swipe = exports.start = exports.end = void 0;
                var _size = __webpack_require__( /*! ../core/utils/size */ 58664);
                var _index = __webpack_require__( /*! ./utils/index */ 39611);
                var _emitter = _interopRequireDefault(__webpack_require__( /*! ./gesture/emitter.gesture */ 98621));
                var _emitter_registrator = _interopRequireDefault(__webpack_require__( /*! ./core/emitter_registrator */ 82495));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                exports.start = "dxswipestart";
                exports.swipe = "dxswipe";
                exports.end = "dxswipeend";
                const HorizontalStrategy = {
                    defaultItemSizeFunc: function() {
                        return (0, _size.getWidth)(this.getElement())
                    },
                    getBounds: function() {
                        return [this._maxLeftOffset, this._maxRightOffset]
                    },
                    calcOffsetRatio: function(e) {
                        const endEventData = (0, _index.eventData)(e);
                        return (endEventData.x - (this._savedEventData && this._savedEventData.x || 0)) / this._itemSizeFunc().call(this, e)
                    },
                    isFastSwipe: function(e) {
                        const endEventData = (0, _index.eventData)(e);
                        return this.FAST_SWIPE_SPEED_LIMIT * Math.abs(endEventData.x - this._tickData.x) >= endEventData.time - this._tickData.time
                    }
                };
                const VerticalStrategy = {
                    defaultItemSizeFunc: function() {
                        return (0, _size.getHeight)(this.getElement())
                    },
                    getBounds: function() {
                        return [this._maxTopOffset, this._maxBottomOffset]
                    },
                    calcOffsetRatio: function(e) {
                        const endEventData = (0, _index.eventData)(e);
                        return (endEventData.y - (this._savedEventData && this._savedEventData.y || 0)) / this._itemSizeFunc().call(this, e)
                    },
                    isFastSwipe: function(e) {
                        const endEventData = (0, _index.eventData)(e);
                        return this.FAST_SWIPE_SPEED_LIMIT * Math.abs(endEventData.y - this._tickData.y) >= endEventData.time - this._tickData.time
                    }
                };
                const STRATEGIES = {
                    horizontal: HorizontalStrategy,
                    vertical: VerticalStrategy
                };
                const SwipeEmitter = _emitter.default.inherit({
                    TICK_INTERVAL: 300,
                    FAST_SWIPE_SPEED_LIMIT: 10,
                    ctor: function(element) {
                        this.callBase(element);
                        this.direction = "horizontal";
                        this.elastic = true
                    },
                    _getStrategy: function() {
                        return STRATEGIES[this.direction]
                    },
                    _defaultItemSizeFunc: function() {
                        return this._getStrategy().defaultItemSizeFunc.call(this)
                    },
                    _itemSizeFunc: function() {
                        return this.itemSizeFunc || this._defaultItemSizeFunc
                    },
                    _init: function(e) {
                        this._tickData = (0, _index.eventData)(e)
                    },
                    _start: function(e) {
                        this._savedEventData = (0, _index.eventData)(e);
                        e = this._fireEvent("dxswipestart", e);
                        if (!e.cancel) {
                            this._maxLeftOffset = e.maxLeftOffset;
                            this._maxRightOffset = e.maxRightOffset;
                            this._maxTopOffset = e.maxTopOffset;
                            this._maxBottomOffset = e.maxBottomOffset
                        }
                    },
                    _move: function(e) {
                        const strategy = this._getStrategy();
                        const moveEventData = (0, _index.eventData)(e);
                        let offset = strategy.calcOffsetRatio.call(this, e);
                        offset = this._fitOffset(offset, this.elastic);
                        if (moveEventData.time - this._tickData.time > this.TICK_INTERVAL) {
                            this._tickData = moveEventData
                        }
                        this._fireEvent("dxswipe", e, {
                            offset: offset
                        });
                        if (false !== e.cancelable) {
                            e.preventDefault()
                        }
                    },
                    _end: function(e) {
                        const strategy = this._getStrategy();
                        const offsetRatio = strategy.calcOffsetRatio.call(this, e);
                        const isFast = strategy.isFastSwipe.call(this, e);
                        let startOffset = offsetRatio;
                        let targetOffset = this._calcTargetOffset(offsetRatio, isFast);
                        startOffset = this._fitOffset(startOffset, this.elastic);
                        targetOffset = this._fitOffset(targetOffset, false);
                        this._fireEvent("dxswipeend", e, {
                            offset: startOffset,
                            targetOffset: targetOffset
                        })
                    },
                    _fitOffset: function(offset, elastic) {
                        const strategy = this._getStrategy();
                        const bounds = strategy.getBounds.call(this);
                        if (offset < -bounds[0]) {
                            return elastic ? (-2 * bounds[0] + offset) / 3 : -bounds[0]
                        }
                        if (offset > bounds[1]) {
                            return elastic ? (2 * bounds[1] + offset) / 3 : bounds[1]
                        }
                        return offset
                    },
                    _calcTargetOffset: function(offsetRatio, isFast) {
                        let result;
                        if (isFast) {
                            result = Math.ceil(Math.abs(offsetRatio));
                            if (offsetRatio < 0) {
                                result = -result
                            }
                        } else {
                            result = Math.round(offsetRatio)
                        }
                        return result
                    }
                });
                (0, _emitter_registrator.default)({
                    emitter: SwipeEmitter,
                    events: ["dxswipestart", "dxswipe", "dxswipeend"]
                })
            },
        91093:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/transform.js ***!
              \*****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.zoomstart = exports.zoomend = exports.zoom = exports.translatestart = exports.translateend = exports.translate = exports.transformstart = exports.transformend = exports.transform = exports.rotatestart = exports.rotateend = exports.rotate = exports.pinchstart = exports.pinchend = exports.pinch = void 0;
                var _math = __webpack_require__( /*! ../core/utils/math */ 60810);
                var iteratorUtils = function(obj, nodeInterop) {
                    if (!nodeInterop && obj && obj.__esModule) {
                        return obj
                    }
                    if (null === obj || "object" !== typeof obj && "function" !== typeof obj) {
                        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 ("default" !== key && 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
                }(__webpack_require__( /*! ../core/utils/iterator */ 95479));
                var _index = __webpack_require__( /*! ./utils/index */ 39611);
                var _emitter = _interopRequireDefault(__webpack_require__( /*! ./core/emitter */ 31391));
                var _emitter_registrator = _interopRequireDefault(__webpack_require__( /*! ./core/emitter_registrator */ 82495));

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

                function _getRequireWildcardCache(nodeInterop) {
                    if ("function" !== typeof WeakMap) {
                        return null
                    }
                    var cacheBabelInterop = new WeakMap;
                    var cacheNodeInterop = new WeakMap;
                    return (_getRequireWildcardCache = function(nodeInterop) {
                        return nodeInterop ? cacheNodeInterop : cacheBabelInterop
                    })(nodeInterop)
                }
                const START_POSTFIX = "start";
                const UPDATE_POSTFIX = "";
                const END_POSTFIX = "end";
                const eventAliases = [];
                const addAlias = function(eventName, eventArgs) {
                    eventAliases.push({
                        name: eventName,
                        args: eventArgs
                    })
                };
                addAlias("transform", {
                    scale: true,
                    deltaScale: true,
                    rotation: true,
                    deltaRotation: true,
                    translation: true,
                    deltaTranslation: true
                });
                addAlias("translate", {
                    translation: true,
                    deltaTranslation: true
                });
                addAlias("pinch", {
                    scale: true,
                    deltaScale: true
                });
                addAlias("rotate", {
                    rotation: true,
                    deltaRotation: true
                });
                const getEventVector = function(e) {
                    const pointers = e.pointers;
                    return first = pointers[0], second = pointers[1], {
                        x: second.pageX - first.pageX,
                        y: -second.pageY + first.pageY,
                        centerX: .5 * (second.pageX + first.pageX),
                        centerY: .5 * (second.pageY + first.pageY)
                    };
                    var first, second
                };
                const getDistance = function(vector) {
                    return Math.sqrt(vector.x * vector.x + vector.y * vector.y)
                };
                const getScale = function(firstVector, secondVector) {
                    return getDistance(firstVector) / getDistance(secondVector)
                };
                const getRotation = function(firstVector, secondVector) {
                    const scalarProduct = firstVector.x * secondVector.x + firstVector.y * secondVector.y;
                    const distanceProduct = getDistance(firstVector) * getDistance(secondVector);
                    if (0 === distanceProduct) {
                        return 0
                    }
                    const sign = (0, _math.sign)(firstVector.x * secondVector.y - secondVector.x * firstVector.y);
                    const angle = Math.acos((0, _math.fitIntoRange)(scalarProduct / distanceProduct, -1, 1));
                    return sign * angle
                };
                const getTranslation = function(firstVector, secondVector) {
                    return {
                        x: firstVector.centerX - secondVector.centerX,
                        y: firstVector.centerY - secondVector.centerY
                    }
                };
                const TransformEmitter = _emitter.default.inherit({
                    validatePointers: function(e) {
                        return (0, _index.hasTouches)(e) > 1
                    },
                    start: function(e) {
                        this._accept(e);
                        const startVector = getEventVector(e);
                        this._startVector = startVector;
                        this._prevVector = startVector;
                        this._fireEventAliases(START_POSTFIX, e)
                    },
                    move: function(e) {
                        const currentVector = getEventVector(e);
                        const eventArgs = this._getEventArgs(currentVector);
                        this._fireEventAliases(UPDATE_POSTFIX, e, eventArgs);
                        this._prevVector = currentVector
                    },
                    end: function(e) {
                        const eventArgs = this._getEventArgs(this._prevVector);
                        this._fireEventAliases(END_POSTFIX, e, eventArgs)
                    },
                    _getEventArgs: function(vector) {
                        return {
                            scale: getScale(vector, this._startVector),
                            deltaScale: getScale(vector, this._prevVector),
                            rotation: getRotation(vector, this._startVector),
                            deltaRotation: getRotation(vector, this._prevVector),
                            translation: getTranslation(vector, this._startVector),
                            deltaTranslation: getTranslation(vector, this._prevVector)
                        }
                    },
                    _fireEventAliases: function(eventPostfix, originalEvent, eventArgs) {
                        eventArgs = eventArgs || {};
                        iteratorUtils.each(eventAliases, function(_, eventAlias) {
                            const args = {};
                            iteratorUtils.each(eventAlias.args, (function(name) {
                                if (name in eventArgs) {
                                    args[name] = eventArgs[name]
                                }
                            }));
                            this._fireEvent("dx" + eventAlias.name + eventPostfix, originalEvent, args)
                        }.bind(this))
                    }
                });
                const eventNames = eventAliases.reduce((result, eventAlias) => {
                    [START_POSTFIX, UPDATE_POSTFIX, END_POSTFIX].forEach(eventPostfix => {
                        result.push("dx" + eventAlias.name + eventPostfix)
                    });
                    return result
                }, []);
                (0, _emitter_registrator.default)({
                    emitter: TransformEmitter,
                    events: eventNames
                });
                const exportNames = {};
                iteratorUtils.each(eventNames, (function(_, eventName) {
                    exportNames[eventName.substring("dx".length)] = eventName
                }));
                const {
                    transformstart: transformstart,
                    transform: transform,
                    transformend: transformend,
                    translatestart: translatestart,
                    translate: translate,
                    translateend: translateend,
                    zoomstart: zoomstart,
                    zoom: zoom,
                    zoomend: zoomend,
                    pinchstart: pinchstart,
                    pinch: pinch,
                    pinchend: pinchend,
                    rotatestart: rotatestart,
                    rotate: rotate,
                    rotateend: rotateend
                } = exportNames;
                exports.rotateend = rotateend;
                exports.rotate = rotate;
                exports.rotatestart = rotatestart;
                exports.pinchend = pinchend;
                exports.pinch = pinch;
                exports.pinchstart = pinchstart;
                exports.zoomend = zoomend;
                exports.zoom = zoom;
                exports.zoomstart = zoomstart;
                exports.translateend = translateend;
                exports.translate = translate;
                exports.translatestart = translatestart;
                exports.transformend = transformend;
                exports.transform = transform;
                exports.transformstart = transformstart
            },
        19141:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/utils/add_namespace.js ***!
              \***************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _errors = (obj = __webpack_require__( /*! ../../core/errors */ 17381), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const addNamespace = (eventNames, namespace) => {
                    if (!namespace) {
                        throw _errors.default.Error("E0017")
                    }
                    if (Array.isArray(eventNames)) {
                        return eventNames.map(eventName => addNamespace(eventName, namespace)).join(" ")
                    }
                    if (-1 !== eventNames.indexOf(" ")) {
                        return addNamespace(eventNames.split(/\s+/g), namespace)
                    }
                    return "".concat(eventNames, ".").concat(namespace)
                };
                var _default = addNamespace;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        27575:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/utils/event_nodes_disposing.js ***!
              \***********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.unsubscribeNodesDisposing = exports.subscribeNodesDisposing = void 0;
                var _events_engine = (obj = __webpack_require__( /*! ../core/events_engine */ 55994), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _remove = __webpack_require__( /*! ../remove */ 29007);

                function nodesByEvent(event) {
                    return event && [event.target, event.delegateTarget, event.relatedTarget, event.currentTarget].filter(node => !!node)
                }
                exports.subscribeNodesDisposing = (event, callback) => {
                    _events_engine.default.one(nodesByEvent(event), _remove.removeEvent, callback)
                };
                exports.unsubscribeNodesDisposing = (event, callback) => {
                    _events_engine.default.off(nodesByEvent(event), _remove.removeEvent, callback)
                }
            },
        39611:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/utils/index.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.stopEventsSkipping = exports.setEventFixMethod = exports.normalizeKeyName = exports.needSkipEvent = exports.isTouchEvent = exports.isPointerEvent = exports.isMouseEvent = exports.isKeyboardEvent = exports.isFakeClickEvent = exports.isDxMouseWheelEvent = exports.isCommandKeyPressed = exports.hasTouches = exports.getChar = exports.forceSkipEvents = exports.fireEvent = exports.eventSource = exports.eventDelta = exports.eventData = exports.createEvent = exports.addNamespace = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _add_namespace = _interopRequireDefault(__webpack_require__( /*! ./add_namespace */ 19141));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../core/events_engine */ 55994));
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _selectors = __webpack_require__( /*! ../../ui/widget/selectors */ 31421);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const KEY_MAP = {
                    backspace: "backspace",
                    tab: "tab",
                    enter: "enter",
                    escape: "escape",
                    pageup: "pageUp",
                    pagedown: "pageDown",
                    end: "end",
                    home: "home",
                    arrowleft: "leftArrow",
                    arrowup: "upArrow",
                    arrowright: "rightArrow",
                    arrowdown: "downArrow",
                    delete: "del",
                    " ": "space",
                    f: "F",
                    a: "A",
                    "*": "asterisk",
                    "-": "minus",
                    alt: "alt",
                    control: "control",
                    shift: "shift"
                };
                const LEGACY_KEY_CODES = {
                    8: "backspace",
                    9: "tab",
                    13: "enter",
                    27: "escape",
                    33: "pageUp",
                    34: "pageDown",
                    35: "end",
                    36: "home",
                    37: "leftArrow",
                    38: "upArrow",
                    39: "rightArrow",
                    40: "downArrow",
                    46: "del",
                    32: "space",
                    70: "F",
                    65: "A",
                    106: "asterisk",
                    109: "minus",
                    189: "minus",
                    173: "minus",
                    16: "shift",
                    17: "control",
                    18: "alt"
                };
                const EVENT_SOURCES_REGEX = {
                    dx: /^dx/i,
                    mouse: /(mouse|wheel)/i,
                    touch: /^touch/i,
                    keyboard: /^key/i,
                    pointer: /^(ms)?pointer/i
                };
                let fixMethod = e => e;
                const isDxEvent = e => "dx" === eventSource(e);
                const isNativeTouchEvent = e => "touch" === eventSource(e);
                const eventSource = _ref => {
                    let {
                        type: type
                    } = _ref;
                    let result = "other";
                    (0, _iterator.each)(EVENT_SOURCES_REGEX, (function(key) {
                        if (this.test(type)) {
                            result = key;
                            return false
                        }
                    }));
                    return result
                };
                exports.eventSource = eventSource;
                const isPointerEvent = e => "pointer" === eventSource(e);
                exports.isPointerEvent = isPointerEvent;
                const isMouseEvent = e => (e => "mouse" === eventSource(e))(e) || (isPointerEvent(e) || isDxEvent(e)) && "mouse" === e.pointerType;
                exports.isMouseEvent = isMouseEvent;
                const isDxMouseWheelEvent = e => e && "dxmousewheel" === e.type;
                exports.isDxMouseWheelEvent = isDxMouseWheelEvent;
                const isTouchEvent = e => isNativeTouchEvent(e) || (isPointerEvent(e) || isDxEvent(e)) && "touch" === e.pointerType;
                exports.isTouchEvent = isTouchEvent;
                exports.isKeyboardEvent = e => "keyboard" === eventSource(e);
                exports.isFakeClickEvent = _ref2 => {
                    let {
                        screenX: screenX,
                        offsetX: offsetX,
                        pageX: pageX
                    } = _ref2;
                    return 0 === screenX && !offsetX && 0 === pageX
                };
                exports.eventData = _ref3 => {
                    let {
                        pageX: pageX,
                        pageY: pageY,
                        timeStamp: timeStamp
                    } = _ref3;
                    return {
                        x: pageX,
                        y: pageY,
                        time: timeStamp
                    }
                };
                exports.eventDelta = (from, to) => ({
                    x: to.x - from.x,
                    y: to.y - from.y,
                    time: to.time - from.time || 1
                });
                exports.hasTouches = e => {
                    const {
                        originalEvent: originalEvent,
                        pointers: pointers
                    } = e;
                    if (isNativeTouchEvent(e)) {
                        return (originalEvent.touches || []).length
                    }
                    if (isDxEvent(e)) {
                        return (pointers || []).length
                    }
                    return 0
                };
                let skipEvents = false;
                exports.forceSkipEvents = () => skipEvents = true;
                exports.stopEventsSkipping = () => skipEvents = false;
                exports.needSkipEvent = e => {
                    if (skipEvents) {
                        return true
                    }
                    const {
                        target: target
                    } = e;
                    const $target = (0, _renderer.default)(target);
                    const isContentEditable = (null === target || void 0 === target ? void 0 : target.isContentEditable) || (null === target || void 0 === target ? void 0 : target.hasAttribute("contenteditable"));
                    const touchInEditable = $target.is("input, textarea, select") || isContentEditable;
                    if (isDxMouseWheelEvent(e)) {
                        const isTextArea = $target.is("textarea") && $target.hasClass("dx-texteditor-input");
                        if (isTextArea || isContentEditable) {
                            return false
                        }
                        const isInputFocused = $target.is("input[type='number'], textarea, select") && $target.is(":focus");
                        return isInputFocused
                    }
                    if (isMouseEvent(e)) {
                        return touchInEditable || e.which > 1
                    }
                    if (isTouchEvent(e)) {
                        return touchInEditable && (0, _selectors.focused)($target)
                    }
                };
                exports.setEventFixMethod = func => fixMethod = func;
                const createEvent = (originalEvent, args) => {
                    const event = (originalEvent => fixMethod(_events_engine.default.Event(originalEvent, originalEvent), originalEvent))(originalEvent);
                    args && (0, _extend.extend)(event, args);
                    return event
                };
                exports.createEvent = createEvent;
                exports.fireEvent = props => {
                    const {
                        originalEvent: originalEvent,
                        delegateTarget: delegateTarget
                    } = props;
                    const event = createEvent(originalEvent, props);
                    _events_engine.default.trigger(delegateTarget || event.target, event);
                    return event
                };
                exports.normalizeKeyName = _ref4 => {
                    let {
                        key: key,
                        which: which
                    } = _ref4;
                    const normalizedKey = KEY_MAP[null === key || void 0 === key ? void 0 : key.toLowerCase()] || key;
                    const normalizedKeyFromWhich = LEGACY_KEY_CODES[which];
                    if (normalizedKeyFromWhich && normalizedKey === key) {
                        return normalizedKeyFromWhich
                    } else if (!normalizedKey && which) {
                        return String.fromCharCode(which)
                    }
                    return normalizedKey
                };
                exports.getChar = _ref5 => {
                    let {
                        key: key,
                        which: which
                    } = _ref5;
                    return key || String.fromCharCode(which)
                };
                const addNamespace = _add_namespace.default;
                exports.addNamespace = addNamespace;
                exports.isCommandKeyPressed = _ref6 => {
                    let {
                        ctrlKey: ctrlKey,
                        metaKey: metaKey
                    } = _ref6;
                    return ctrlKey || metaKey
                }
            },
        80506:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/events/visibility_change.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.triggerShownEvent = exports.triggerResizeEvent = exports.triggerHidingEvent = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ./core/events_engine */ 55994));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const triggerVisibilityChangeEvent = function(eventName) {
                    return function(element) {
                        const $element = (0, _renderer.default)(element || "body");
                        const changeHandlers = $element.filter(".dx-visibility-change-handler").add($element.find(".dx-visibility-change-handler"));
                        for (let i = 0; i < changeHandlers.length; i++) {
                            _events_engine.default.triggerHandler(changeHandlers[i], eventName)
                        }
                    }
                };
                const triggerShownEvent = triggerVisibilityChangeEvent("dxshown");
                exports.triggerShownEvent = triggerShownEvent;
                const triggerHidingEvent = triggerVisibilityChangeEvent("dxhiding");
                exports.triggerHidingEvent = triggerHidingEvent;
                const triggerResizeEvent = triggerVisibilityChangeEvent("dxresize");
                exports.triggerResizeEvent = triggerResizeEvent
            },
        2994:
            /*!***************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/excel_exporter.js ***!
              \***************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "exportDataGrid", {
                    enumerable: true,
                    get: function() {
                        return _export_data_grid.exportDataGrid
                    }
                });
                Object.defineProperty(exports, "exportPivotGrid", {
                    enumerable: true,
                    get: function() {
                        return _export_pivot_grid.exportPivotGrid
                    }
                });
                var _export_data_grid = __webpack_require__( /*! ./exporter/exceljs/export_data_grid */ 8572);
                var _export_pivot_grid = __webpack_require__( /*! ./exporter/exceljs/export_pivot_grid */ 77328)
            },
        78292:
            /*!*********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter.js ***!
              \*********************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.export = function(data, options, getData) {
                    if (!data) {
                        return (new _deferred.Deferred).resolve()
                    }
                    const exportingAction = options.exportingAction;
                    const exportedAction = options.exportedAction;
                    const fileSavingAction = options.fileSavingAction;
                    const eventArgs = {
                        fileName: options.fileName,
                        format: options.format,
                        cancel: false
                    };
                    if ((0, _type.isBoolean)(options.selectedRowsOnly)) {
                        eventArgs.selectedRowsOnly = options.selectedRowsOnly
                    }(0, _type.isFunction)(exportingAction) && exportingAction(eventArgs);
                    if (!eventArgs.cancel) {
                        return getData(data, options).then(blob => {
                            (0, _type.isFunction)(exportedAction) && exportedAction();
                            if ((0, _type.isFunction)(fileSavingAction)) {
                                eventArgs.data = blob;
                                fileSavingAction(eventArgs)
                            }
                            if (!eventArgs.cancel) {
                                const format = "xlsx" === options.format ? "EXCEL" : options.format;
                                _file_saver.fileSaver.saveAs(eventArgs.fileName, format, blob)
                            }
                        })
                    }
                    return (new _deferred.Deferred).resolve()
                };
                Object.defineProperty(exports, "fileSaver", {
                    enumerable: true,
                    get: function() {
                        return _file_saver.fileSaver
                    }
                });
                exports.svg = exports.pdf = exports.image = void 0;
                var _file_saver = __webpack_require__( /*! ./exporter/file_saver */ 48351);
                var _image_creator = __webpack_require__( /*! ./exporter/image_creator */ 12173);
                var _svg_creator = __webpack_require__( /*! ./exporter/svg_creator */ 37596);
                var _type = __webpack_require__( /*! ./core/utils/type */ 35922);
                var _deferred = __webpack_require__( /*! ./core/utils/deferred */ 62754);
                var _pdf_creator = __webpack_require__( /*! ./exporter/pdf_creator */ 30855);
                const image = {
                    creator: _image_creator.imageCreator,
                    getData: _image_creator.getData,
                    testFormats: _image_creator.testFormats
                };
                exports.image = image;
                const pdf = {
                    getData: _pdf_creator.getData
                };
                exports.pdf = pdf;
                const svg = {
                    creator: _svg_creator.svgCreator,
                    getData: _svg_creator.getData
                };
                exports.svg = svg
            },
        5332:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/common/export_load_panel.js ***!
              \**********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.ExportLoadPanel = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _load_panel = _interopRequireDefault(__webpack_require__( /*! ../../ui/load_panel */ 97218));
                var _uiGrid_core = _interopRequireDefault(__webpack_require__( /*! ../../ui/grid_core/ui.grid_core.utils */ 13615));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                let ExportLoadPanel = function() {
                    function ExportLoadPanel(component, $targetElement, $container, options) {
                        this._$targetElement = $targetElement;
                        this._$container = $container;
                        this._loadPanel = component._createComponent((0, _renderer.default)("<div>").addClass("dx-export-loadpanel").appendTo(this._$container), _load_panel.default, this.getOptions(options))
                    }
                    var _proto = ExportLoadPanel.prototype;
                    _proto.getDefaultOptions = function() {
                        return {
                            animation: null,
                            shading: false,
                            height: 90,
                            width: 200,
                            container: this._$container
                        }
                    };
                    _proto.getOptions = function(options) {
                        if ((0, _type.isDefined)(options.text)) {
                            options.message = options.text
                        } else {
                            options.message = _message.default.format("dxDataGrid-exporting")
                        }
                        return (0, _extend.extend)(this.getDefaultOptions(), options)
                    };
                    _proto.show = function() {
                        this._loadPanel.option("position", _uiGrid_core.default.calculateLoadPanelPosition(this._$targetElement));
                        this._loadPanel.show()
                    };
                    _proto.dispose = function() {
                        (0, _renderer.default)(this._loadPanel.element()).remove();
                        delete this._loadPanel
                    };
                    return ExportLoadPanel
                }();
                exports.ExportLoadPanel = ExportLoadPanel
            },
        11385:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/exceljs/export.js ***!
              \************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Export = void 0;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _export_format = __webpack_require__( /*! ./export_format */ 38526);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _export_load_panel = __webpack_require__( /*! ../common/export_load_panel */ 5332);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                const Export = {
                    getFullOptions(options) {
                        const fullOptions = (0, _extend.extend)({}, options);
                        if (!((0, _type.isDefined)(fullOptions.worksheet) && (0, _type.isObject)(fullOptions.worksheet))) {
                            throw Error('The "worksheet" field must contain an object.')
                        }
                        if (!(0, _type.isDefined)(fullOptions.topLeftCell)) {
                            fullOptions.topLeftCell = {
                                row: 1,
                                column: 1
                            }
                        } else if ((0, _type.isString)(fullOptions.topLeftCell)) {
                            const {
                                row: row,
                                col: col
                            } = fullOptions.worksheet.getCell(fullOptions.topLeftCell);
                            fullOptions.topLeftCell = {
                                row: row,
                                column: col
                            }
                        }
                        if (!(0, _type.isDefined)(fullOptions.keepColumnWidths)) {
                            fullOptions.keepColumnWidths = true
                        }
                        if (!(0, _type.isDefined)(fullOptions.loadPanel)) {
                            fullOptions.loadPanel = {}
                        }
                        if (!(0, _type.isDefined)(fullOptions.loadPanel.enabled)) {
                            fullOptions.loadPanel.enabled = true
                        }
                        if (!(0, _type.isDefined)(fullOptions.encodeExecutableContent)) {
                            fullOptions.encodeExecutableContent = false
                        }
                        return fullOptions
                    },
                    convertDateForExcelJS: date => new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds())),
                    setNumberFormat(excelCell, numberFormat) {
                        excelCell.numFmt = numberFormat
                    },
                    getCellStyles(dataProvider) {
                        const styles = dataProvider.getStyles();
                        styles.forEach(style => {
                            let numberFormat = this.tryConvertToExcelNumberFormat(style.format, style.dataType);
                            if ((0, _type.isDefined)(numberFormat)) {
                                numberFormat = numberFormat.replace(/&quot;/g, '"')
                            }
                            style.numberFormat = numberFormat
                        });
                        return styles
                    },
                    tryConvertToExcelNumberFormat(format, dataType) {
                        const newFormat = _export_format.ExportFormat.formatObjectConverter(format, dataType);
                        const currency = newFormat.currency;
                        format = newFormat.format;
                        dataType = newFormat.dataType;
                        return _export_format.ExportFormat.convertFormat(format, newFormat.precision, dataType, currency)
                    },
                    setAlignment(excelCell, wrapText, horizontalAlignment) {
                        var _excelCell$alignment;
                        excelCell.alignment = null !== (_excelCell$alignment = excelCell.alignment) && void 0 !== _excelCell$alignment ? _excelCell$alignment : {};
                        if ((0, _type.isDefined)(wrapText)) {
                            excelCell.alignment.wrapText = wrapText
                        }
                        if ((0, _type.isDefined)(horizontalAlignment)) {
                            excelCell.alignment.horizontal = horizontalAlignment
                        }
                        excelCell.alignment.vertical = "top"
                    },
                    setColumnsWidth(worksheet, widths, startColumnIndex) {
                        if (!(0, _type.isDefined)(widths)) {
                            return
                        }
                        for (let i = 0; i < widths.length; i++) {
                            const columnWidth = widths[i];
                            if ("number" === typeof columnWidth && isFinite(columnWidth)) {
                                worksheet.getColumn(startColumnIndex + i).width = Math.min(255, Math.floor(columnWidth / 7 * 100) / 100)
                            }
                        }
                    },
                    export (options, Helpers, getLoadPanelTargetElement, getLoadPanelContainer) {
                        var _component$_getIntern;
                        const {
                            component: component,
                            worksheet: worksheet,
                            topLeftCell: topLeftCell,
                            keepColumnWidths: keepColumnWidths,
                            selectedRowsOnly: selectedRowsOnly,
                            loadPanel: loadPanel,
                            encodeExecutableContent: encodeExecutableContent
                        } = options;
                        const dataProvider = component.getDataProvider(selectedRowsOnly);
                        const internalComponent = (null === (_component$_getIntern = component._getInternalInstance) || void 0 === _component$_getIntern ? void 0 : _component$_getIntern.call(component)) || component;
                        const initialLoadPanelEnabledOption = internalComponent.option("loadPanel") && internalComponent.option("loadPanel").enabled;
                        if (initialLoadPanelEnabledOption) {
                            component.option("loadPanel.enabled", false)
                        }
                        let exportLoadPanel;
                        if (loadPanel.enabled && (0, _window.hasWindow)()) {
                            const $targetElement = getLoadPanelTargetElement(component);
                            const $container = getLoadPanelContainer(component);
                            exportLoadPanel = new _export_load_panel.ExportLoadPanel(component, $targetElement, $container, loadPanel);
                            exportLoadPanel.show()
                        }
                        const wrapText = !!component.option("wordWrapEnabled");
                        worksheet.properties.outlineProperties = {
                            summaryBelow: false,
                            summaryRight: false
                        };
                        const cellRange = {
                            from: {
                                row: topLeftCell.row,
                                column: topLeftCell.column
                            },
                            to: {
                                row: topLeftCell.row,
                                column: topLeftCell.column
                            }
                        };
                        return new Promise(resolve => {
                            dataProvider.ready().done(() => {
                                const columns = dataProvider.getColumns();
                                const dataRowsCount = dataProvider.getRowsCount();
                                const helpers = new Helpers(component, dataProvider, worksheet, options);
                                if (keepColumnWidths) {
                                    this.setColumnsWidth(worksheet, dataProvider.getColumnsWidths(), cellRange.from.column)
                                }
                                helpers._exportAllFieldHeaders(columns, this.setAlignment);
                                const fieldHeaderRowsCount = helpers._getFieldHeaderRowsCount();
                                cellRange.to.row = cellRange.from.row + fieldHeaderRowsCount;
                                const styles = this.getCellStyles(dataProvider);
                                for (let rowIndex = 0; rowIndex < dataRowsCount; rowIndex++) {
                                    const currentRowIndex = cellRange.from.row + fieldHeaderRowsCount + rowIndex;
                                    const row = worksheet.getRow(currentRowIndex);
                                    let startColumnIndex = 0;
                                    if (helpers._isRowFieldHeadersRow(rowIndex)) {
                                        startColumnIndex = dataProvider.getRowAreaColCount();
                                        helpers._exportFieldHeaders("row", currentRowIndex, 0, startColumnIndex, this.setAlignment)
                                    }
                                    helpers._trySetOutlineLevel(row, rowIndex);
                                    this.exportRow(dataProvider, helpers, row, rowIndex, startColumnIndex, columns.length, wrapText, styles, encodeExecutableContent);
                                    cellRange.to.row = currentRowIndex
                                }
                                helpers.mergedRangesManager.applyMergedRages();
                                cellRange.to.column += columns.length > 0 ? columns.length - 1 : 0;
                                const worksheetViewSettings = worksheet.views[0] || {};
                                if (component.option("rtlEnabled")) {
                                    worksheetViewSettings.rightToLeft = true
                                }
                                if (helpers._isFrozenZone(dataProvider)) {
                                    if (-1 === Object.keys(worksheetViewSettings).indexOf("state")) {
                                        (0, _extend.extend)(worksheetViewSettings, helpers._getWorksheetFrozenState(cellRange))
                                    }
                                    helpers._trySetAutoFilter(cellRange)
                                }
                                if (Object.keys(worksheetViewSettings).length > 0) {
                                    worksheet.views = [worksheetViewSettings]
                                }
                                resolve(cellRange)
                            }).always(() => {
                                if (initialLoadPanelEnabledOption) {
                                    component.option("loadPanel.enabled", initialLoadPanelEnabledOption)
                                }
                                if (loadPanel.enabled && (0, _window.hasWindow)()) {
                                    exportLoadPanel.dispose()
                                }
                            })
                        })
                    },
                    exportRow(dataProvider, helpers, row, rowIndex, startColumnIndex, columnsCount, wrapText, styles, encodeExecutableContent) {
                        for (let cellIndex = startColumnIndex; cellIndex < columnsCount; cellIndex++) {
                            const cellData = dataProvider.getCellData(rowIndex, cellIndex, true);
                            const excelCell = row.getCell(helpers._getFirstColumnIndex() + cellIndex);
                            helpers.mergedRangesManager.updateMergedRanges(excelCell, rowIndex, cellIndex, helpers);
                            const cellInfo = helpers.mergedRangesManager.findMergedCellInfo(rowIndex, cellIndex, helpers._isHeaderCell(rowIndex, cellIndex));
                            if ((0, _type.isDefined)(cellInfo) && excelCell !== cellInfo.masterCell) {
                                excelCell.style = cellInfo.masterCell.style;
                                excelCell.value = cellInfo.masterCell.value
                            } else {
                                if ((0, _type.isDate)(cellData.value)) {
                                    excelCell.value = this.convertDateForExcelJS(cellData.value)
                                } else {
                                    excelCell.value = cellData.value
                                }
                                if ((0, _type.isDefined)(excelCell.value)) {
                                    const {
                                        bold: bold,
                                        alignment: horizontalAlignment,
                                        numberFormat: numberFormat
                                    } = styles[dataProvider.getStyleId(rowIndex, cellIndex)];
                                    if ((0, _type.isDefined)(numberFormat)) {
                                        this.setNumberFormat(excelCell, numberFormat)
                                    } else if ((0, _type.isString)(excelCell.value) && /^[@=+-]/.test(excelCell.value)) {
                                        this.setNumberFormat(excelCell, "@")
                                    }
                                    helpers._trySetFont(excelCell, bold);
                                    this.setAlignment(excelCell, wrapText, horizontalAlignment)
                                }
                            }
                            helpers._customizeCell(excelCell, cellData.cellSourceData);
                            if (encodeExecutableContent) {
                                excelCell.value = _export_format.ExportFormat.encode(excelCell.value)
                            }
                        }
                    }
                };
                exports.Export = Export
            },
        8572:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/exceljs/export_data_grid.js ***!
              \**********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.exportDataGrid = function(options) {
                    return _export.Export.export(function(options) {
                        if (!((0, _type.isDefined)(options) && (0, _type.isObject)(options))) {
                            throw Error('The "exportDataGrid" method requires a configuration object.')
                        }
                        if (!((0, _type.isDefined)(options.component) && (0, _type.isObject)(options.component) && "dxDataGrid" === options.component.NAME)) {
                            throw Error('The "component" field must contain a DataGrid instance.')
                        }
                        if (!(0, _type.isDefined)(options.selectedRowsOnly)) {
                            options.selectedRowsOnly = false
                        }
                        if (!(0, _type.isDefined)(options.autoFilterEnabled)) {
                            options.autoFilterEnabled = false
                        }
                        return _export.Export.getFullOptions(options)
                    }(options), DataGridHelpers, _getLoadPanelTargetElement, _getLoadPanelContainer)
                };
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _export = __webpack_require__( /*! ./export */ 11385);
                var _export_merged_ranges_manager = __webpack_require__( /*! ./export_merged_ranges_manager */ 31980);
                let DataGridHelpers = function() {
                    function DataGridHelpers(component, dataProvider, worksheet, options) {
                        this.component = component;
                        this.dataProvider = dataProvider;
                        this.worksheet = worksheet;
                        this.mergedRangesManager = new _export_merged_ranges_manager.MergedRangesManager(dataProvider, worksheet);
                        this.topLeftCell = options.topLeftCell;
                        this.customizeCell = options.customizeCell;
                        this.autoFilterEnabled = options.autoFilterEnabled
                    }
                    var _proto = DataGridHelpers.prototype;
                    _proto._getFirstColumnIndex = function() {
                        return this.topLeftCell.column
                    };
                    _proto._getFieldHeaderRowsCount = function() {
                        return 0
                    };
                    _proto._trySetAutoFilter = function(cellRange) {
                        if (this.autoFilterEnabled) {
                            if (!(0, _type.isDefined)(this.worksheet.autoFilter) && this.dataProvider.getRowsCount() > 0) {
                                const dataRange = {
                                    from: {
                                        row: cellRange.from.row + this.dataProvider.getHeaderRowCount() - 1,
                                        column: cellRange.from.column
                                    },
                                    to: cellRange.to
                                };
                                this.worksheet.autoFilter = dataRange
                            }
                        }
                    };
                    _proto._trySetFont = function(excelCell, bold) {
                        if ((0, _type.isDefined)(bold)) {
                            excelCell.font = excelCell.font || {};
                            excelCell.font.bold = bold
                        }
                    };
                    _proto._getWorksheetFrozenState = function(cellRange) {
                        return {
                            state: "frozen",
                            ySplit: cellRange.from.row + this.dataProvider.getFrozenArea().y - 1
                        }
                    };
                    _proto._trySetOutlineLevel = function(row, rowIndex) {
                        if (rowIndex >= this.dataProvider.getHeaderRowCount()) {
                            row.outlineLevel = this.dataProvider.getGroupLevel(rowIndex)
                        }
                    };
                    _proto._isFrozenZone = function(dataProvider) {
                        return dataProvider.getHeaderRowCount() > 0
                    };
                    _proto._isHeaderCell = function(rowIndex) {
                        return rowIndex < this.dataProvider.getHeaderRowCount()
                    };
                    _proto._isInfoCell = function() {
                        return false
                    };
                    _proto._allowToMergeRange = function() {
                        return true
                    };
                    _proto._getAllFieldHeaders = function() {
                        return []
                    };
                    _proto._customizeCell = function(excelCell, gridCell) {
                        if ((0, _type.isFunction)(this.customizeCell)) {
                            this.customizeCell({
                                excelCell: excelCell,
                                gridCell: gridCell
                            })
                        }
                    };
                    _proto._exportFieldHeaders = function() {};
                    _proto._exportAllFieldHeaders = function() {};
                    _proto._isRowFieldHeadersRow = function() {};
                    return DataGridHelpers
                }();

                function _getLoadPanelTargetElement(component) {
                    return component.getView("rowsView").element()
                }

                function _getLoadPanelContainer(component) {
                    return component.getView("rowsView").element().parent()
                }
            },
        38526:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/exceljs/export_format.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.ExportFormat = void 0;
                var _string = __webpack_require__( /*! ../../core/utils/string */ 68752);
                var _number = _interopRequireDefault(__webpack_require__( /*! ../../localization/number */ 18016));
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../localization/date */ 91500));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _date2 = __webpack_require__( /*! ../../localization/ldml/date.format */ 59937);
                var _language_codes = __webpack_require__( /*! ../../localization/language_codes */ 9821);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                __webpack_require__( /*! ../../localization/currency */ 89740);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const DEFINED_NUMBER_FORMTATS = {
                    thousands: "#,##0{0},&quot;K&quot;",
                    millions: "#,##0{0},,&quot;M&quot;",
                    billions: "#,##0{0},,,&quot;B&quot;",
                    trillions: "#,##0{0},,,,&quot;T&quot;",
                    percent: "0{0}%",
                    decimal: "#{0}",
                    fixedpoint: "#,##0{0}",
                    exponential: "0{0}E+00",
                    currency: " "
                };
                const PERIOD_REGEXP = /a+/g;
                const DAY_REGEXP = /E/g;
                const DO_REGEXP = /dE+/g;
                const STANDALONE_MONTH_REGEXP = /L/g;
                const HOUR_REGEXP = /h/g;
                const ANY_REGEXP = /./g;

                function _convertDateFormat(format) {
                    const formattedValue = (_date.default.format(new Date(2009, 8, 8, 6, 5, 4), format) || "").toString();
                    let result = (0, _date2.getFormat)(value => _date.default.format(value, format));
                    if (result) {
                        result = function(format) {
                            return format.split("/").join("\\/").split("'").map((function(datePart, index) {
                                if (index % 2 === 0) {
                                    return datePart.replace(PERIOD_REGEXP, "AM/PM").replace(DO_REGEXP, "d").replace(DAY_REGEXP, "d").replace(STANDALONE_MONTH_REGEXP, "M").replace(HOUR_REGEXP, "H").split("[").join("\\[").split("]").join("\\]")
                                }
                                if (datePart) {
                                    return datePart.replace(ANY_REGEXP, "\\$&")
                                }
                                return "'"
                            })).join("")
                        }(result);
                        result = function(defaultPattern) {
                            const languageID = (0, _language_codes.getLanguageId)();
                            let languageIDStr = languageID ? languageID.toString(16) : "";
                            let languageInfo = "";
                            if (function(text) {
                                    let code;
                                    for (let i = 0; i < text.length; i++) {
                                        code = text.charCodeAt(i);
                                        if (code >= 1632 && code < 1642) {
                                            return true
                                        }
                                    }
                                    return false
                                }(defaultPattern)) {
                                while (languageIDStr.length < 3) {
                                    languageIDStr = "0" + languageIDStr
                                }
                                languageInfo = "[$-2010" + languageIDStr + "]"
                            } else if (languageIDStr) {
                                languageInfo = "[$-" + languageIDStr + "]"
                            }
                            return languageInfo
                        }(formattedValue) + result
                    }
                    return result
                }

                function _includesCSVExpression(value) {
                    if (!value) {
                        return false
                    }
                    if (/^[@=\t\r]/.test(value)) {
                        return true
                    }
                    if (!/^[+-]/.test(value)) {
                        return false
                    }
                    return !(0, _type.isNumeric)(value)
                }
                const ExportFormat = {
                    formatObjectConverter(format, dataType) {
                        const result = {
                            format: format,
                            precision: format && format.precision,
                            dataType: dataType
                        };
                        if ((0, _type.isObject)(format)) {
                            return (0, _extend.extend)(result, format, {
                                format: format.formatter || format.type,
                                currency: format.currency
                            })
                        }
                        return result
                    },
                    convertFormat(format, precision, type, currency) {
                        if ((0, _type.isDefined)(format)) {
                            if ("date" === type) {
                                return _convertDateFormat(format)
                            } else if ((0, _type.isString)(format) && DEFINED_NUMBER_FORMTATS[format.toLowerCase()]) {
                                return function(format, precision, currency) {
                                    let result;
                                    let excelFormat;
                                    if ("currency" === format) {
                                        excelFormat = _number.default.getOpenXmlCurrencyFormat(currency)
                                    } else {
                                        excelFormat = DEFINED_NUMBER_FORMTATS[format.toLowerCase()]
                                    }
                                    if (excelFormat) {
                                        result = (0, _string.format)(excelFormat, function(format, precision) {
                                            let result;
                                            let i;
                                            if (precision > 0) {
                                                result = "decimal" !== format ? "." : "";
                                                for (i = 0; i < precision; i++) {
                                                    result += "0"
                                                }
                                                return result
                                            }
                                            return ""
                                        }(format, precision))
                                    }
                                    return result
                                }(format, precision, currency)
                            }
                        }
                    },
                    encode(value) {
                        let escaped = false;
                        if (function(value) {
                                if (!value || value.length < 2) {
                                    return false
                                }
                                return _includesCSVExpression(value)
                            }(value)) {
                            escaped = true
                        } else if (function(value, textQualifier) {
                                if (!value || value.length < 4 || value[0] !== textQualifier) {
                                    return false
                                }
                                return _includesCSVExpression(value.substring(1, value.length - 1))
                            }(value, '"')) {
                            value = value.substring(1, value.length - 1);
                            escaped = true
                        }
                        if (escaped) {
                            const singleTextQualifier = '"';
                            const escapedTextQualifier = "".concat('"').concat('"');
                            return "\"'" + value.replaceAll(singleTextQualifier, escapedTextQualifier) + '"'
                        }
                        return value
                    }
                };
                exports.ExportFormat = ExportFormat
            },
        31980:
            /*!**********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/exceljs/export_merged_ranges_manager.js ***!
              \**********************************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.MergedRangesManager = void 0;
                let MergedRangesManager = function() {
                    function MergedRangesManager(dataProvider, worksheet) {
                        this.dataProvider = dataProvider;
                        this.worksheet = worksheet;
                        this.mergedCells = [];
                        this.mergedRanges = []
                    }
                    var _proto = MergedRangesManager.prototype;
                    _proto.updateMergedRanges = function(excelCell, rowIndex, cellIndex, helpers) {
                        if (helpers._isHeaderCell(rowIndex, cellIndex) && !this.isCellInMergedRanges(rowIndex, cellIndex)) {
                            const {
                                rowspan: rowspan,
                                colspan: colspan
                            } = this.dataProvider.getCellMerging(rowIndex, cellIndex);
                            const isMasterCellOfMergedRange = colspan || rowspan;
                            if (isMasterCellOfMergedRange) {
                                const allowToMergeRange = helpers._allowToMergeRange(rowIndex, cellIndex, rowspan, colspan);
                                this.updateMergedCells(excelCell, rowIndex, cellIndex, rowspan, colspan);
                                if (allowToMergeRange) {
                                    const shouldReduceInfoRange = helpers._isInfoCell(rowIndex, cellIndex) && helpers._allowExportRowFieldHeaders();
                                    this.mergedRanges.push({
                                        masterCell: excelCell,
                                        rowspan: rowspan - (shouldReduceInfoRange && rowspan > 0),
                                        colspan: colspan
                                    })
                                }
                            }
                        }
                    };
                    _proto.isCellInMergedRanges = function(rowIndex, cellIndex) {
                        return this.mergedCells[rowIndex] && this.mergedCells[rowIndex][cellIndex]
                    };
                    _proto.findMergedCellInfo = function(rowIndex, cellIndex, isHeaderCell) {
                        if (isHeaderCell && this.isCellInMergedRanges(rowIndex, cellIndex)) {
                            return this.mergedCells[rowIndex][cellIndex]
                        }
                    };
                    _proto.updateMergedCells = function(excelCell, rowIndex, cellIndex, rowspan, colspan) {
                        for (let i = rowIndex; i <= rowIndex + rowspan; i++) {
                            for (let j = cellIndex; j <= cellIndex + colspan; j++) {
                                if (!this.mergedCells[i]) {
                                    this.mergedCells[i] = []
                                }
                                this.mergedCells[i][j] = {
                                    masterCell: excelCell
                                }
                            }
                        }
                    };
                    _proto.addMergedRange = function(masterCell, rowspan, colspan) {
                        this.mergedRanges.push({
                            masterCell: masterCell,
                            rowspan: rowspan,
                            colspan: colspan
                        })
                    };
                    _proto.applyMergedRages = function() {
                        this.mergedRanges.forEach(range => {
                            const startRowIndex = range.masterCell.fullAddress.row;
                            const startColumnIndex = range.masterCell.fullAddress.col;
                            const endRowIndex = startRowIndex + range.rowspan;
                            const endColumnIndex = startColumnIndex + range.colspan;
                            this.worksheet.mergeCells(startRowIndex, startColumnIndex, endRowIndex, endColumnIndex)
                        })
                    };
                    return MergedRangesManager
                }();
                exports.MergedRangesManager = MergedRangesManager
            },
        77328:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/exceljs/export_pivot_grid.js ***!
              \***********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.exportPivotGrid = function(options) {
                    return _export.Export.export(function(options) {
                        if (!((0, _type.isDefined)(options) && (0, _type.isObject)(options))) {
                            throw Error('The "exportPivotGrid" method requires a configuration object.')
                        }
                        if (!((0, _type.isDefined)(options.component) && (0, _type.isObject)(options.component) && "dxPivotGrid" === options.component.NAME)) {
                            throw Error('The "component" field must contain a PivotGrid instance.')
                        }
                        if (!(0, _type.isDefined)(options.mergeRowFieldValues)) {
                            options.mergeRowFieldValues = true
                        }
                        if (!(0, _type.isDefined)(options.mergeColumnFieldValues)) {
                            options.mergeColumnFieldValues = true
                        }
                        if (!(0, _type.isDefined)(options.exportDataFieldHeaders)) {
                            options.exportDataFieldHeaders = false
                        }
                        if (!(0, _type.isDefined)(options.exportRowFieldHeaders)) {
                            options.exportRowFieldHeaders = false
                        }
                        if (!(0, _type.isDefined)(options.exportColumnFieldHeaders)) {
                            options.exportColumnFieldHeaders = false
                        }
                        if (!(0, _type.isDefined)(options.exportFilterFieldHeaders)) {
                            options.exportFilterFieldHeaders = false
                        }
                        return _export.Export.getFullOptions(options)
                    }(options), PivotGridHelpers, _getLoadPanelTargetElement, _getLoadPanelContainer)
                };
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _export = __webpack_require__( /*! ./export */ 11385);
                var _position = __webpack_require__( /*! ../../core/utils/position */ 37518);
                var _inflector = __webpack_require__( /*! ../../core/utils/inflector */ 78008);
                var _export_merged_ranges_manager = __webpack_require__( /*! ./export_merged_ranges_manager */ 31980);

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                let PivotGridHelpers = function() {
                    function PivotGridHelpers(component, dataProvider, worksheet, options) {
                        this.component = component;
                        this.dataProvider = dataProvider;
                        this.worksheet = worksheet;
                        this.mergedRangesManager = new _export_merged_ranges_manager.MergedRangesManager(dataProvider, worksheet);
                        this.topLeftCell = options.topLeftCell;
                        this.customizeCell = options.customizeCell;
                        this.mergeColumnFieldValues = options.mergeColumnFieldValues;
                        this.mergeRowFieldValues = options.mergeRowFieldValues;
                        this.exportFilterFieldHeaders = options.exportFilterFieldHeaders;
                        this.exportDataFieldHeaders = options.exportDataFieldHeaders;
                        this.exportColumnFieldHeaders = options.exportColumnFieldHeaders;
                        this.exportRowFieldHeaders = options.exportRowFieldHeaders;
                        this.rtlEnabled = component.option("rtlEnabled");
                        this.rowHeaderLayout = component.option("rowHeaderLayout");
                        this.wrapText = !!component.option("wordWrapEnabled");
                        this.filterFieldHeaders = this._tryGetFieldHeaders("filter");
                        this.dataFieldHeaders = this._tryGetFieldHeaders("data");
                        this.columnFieldHeaders = this._tryGetFieldHeaders("column");
                        this.rowFieldHeaders = this._tryGetFieldHeaders("row")
                    }
                    var _proto = PivotGridHelpers.prototype;
                    _proto._getFirstColumnIndex = function() {
                        return this.topLeftCell.column
                    };
                    _proto._getWorksheetFrozenState = function(cellRange) {
                        const {
                            x: x,
                            y: y
                        } = this.dataProvider.getFrozenArea();
                        return {
                            state: "frozen",
                            xSplit: cellRange.from.column + x - 1,
                            ySplit: cellRange.from.row + y + this._getFieldHeaderRowsCount() - 1
                        }
                    };
                    _proto._getFieldHeaderRowsCount = function() {
                        return 0 + this._allowExportFilterFieldHeaders() + (this._allowExportDataFieldHeaders() || this._allowExportColumnFieldHeaders())
                    };
                    _proto._isFrozenZone = function() {
                        return true
                    };
                    _proto._isHeaderCell = function(rowIndex, cellIndex) {
                        return rowIndex < this.dataProvider.getColumnAreaRowCount() || cellIndex < this.dataProvider.getRowAreaColCount()
                    };
                    _proto._getDefaultFieldHeaderCellsData = function(value) {
                        return {
                            text: value,
                            value: value
                        }
                    };
                    _proto._isInfoCell = function(rowIndex, cellIndex) {
                        return rowIndex < this.dataProvider.getColumnAreaRowCount() && cellIndex < this.dataProvider.getRowAreaColCount()
                    };
                    _proto._allowToMergeRange = function(rowIndex, cellIndex, rowspan, colspan) {
                        return !(this.dataProvider.isColumnAreaCell(rowIndex, cellIndex) && !this.mergeColumnFieldValues && !!colspan || this.dataProvider.isRowAreaCell(rowIndex, cellIndex) && !this.mergeRowFieldValues && !!rowspan)
                    };
                    _proto._trySetAutoFilter = function() {};
                    _proto._trySetFont = function(excelCell, bold) {
                        if ((0, _type.isDefined)(bold)) {
                            excelCell.font = excelCell.font || {};
                            excelCell.font.bold = bold
                        }
                    };
                    _proto._getFieldHeaderStyles = function() {
                        const borderStyle = {
                            style: "thin",
                            color: {
                                argb: "FF7E7E7E"
                            }
                        };
                        return {
                            alignment: (0, _position.getDefaultAlignment)(this.rtlEnabled),
                            bold: true,
                            border: {
                                bottom: borderStyle,
                                left: borderStyle,
                                right: borderStyle,
                                top: borderStyle
                            }
                        }
                    };
                    _proto._trySetOutlineLevel = function() {};
                    _proto._getAllFieldHeaders = function() {
                        return this.dataProvider._exportController.getDataSource()._descriptions
                    };
                    _proto._tryGetFieldHeaders = function(area) {
                        if (!this["export".concat((0, _inflector.camelize)(area, true), "FieldHeaders")]) {
                            return []
                        }
                        const fields = this._getAllFieldHeaders()["data" === area ? "values" : "".concat(area, "s")].filter(fieldHeader => fieldHeader.area === area);
                        if ("right" === (0, _position.getDefaultAlignment)(this.rtlEnabled)) {
                            fields.sort((a, b) => b.areaIndex - a.areaIndex)
                        }
                        return fields.map(field => field.caption)
                    };
                    _proto._customizeCell = function(excelCell, pivotCell, shouldPreventCall) {
                        if ((0, _type.isFunction)(this.customizeCell) && !shouldPreventCall) {
                            this.customizeCell({
                                excelCell: excelCell,
                                pivotCell: pivotCell
                            })
                        }
                    };
                    _proto._isRowFieldHeadersRow = function(rowIndex) {
                        const isLastInfoRangeCell = this._isInfoCell(rowIndex, 0) && "row" === this.dataProvider.getCellData(rowIndex + 1, 0, true).cellSourceData.area;
                        return this._allowExportRowFieldHeaders() && isLastInfoRangeCell
                    };
                    _proto._exportAllFieldHeaders = function(columns, setAlignment) {
                        const totalCellsCount = columns.length;
                        const rowAreaColCount = this.dataProvider.getRowAreaColCount();
                        let rowIndex = this.topLeftCell.row;
                        if (this._allowExportFilterFieldHeaders()) {
                            this._exportFieldHeaders("filter", rowIndex, 0, totalCellsCount, setAlignment);
                            rowIndex++
                        }
                        if (this._allowExportDataFieldHeaders()) {
                            this._exportFieldHeaders("data", rowIndex, 0, rowAreaColCount, setAlignment);
                            if (!this._allowExportColumnFieldHeaders()) {
                                this._exportFieldHeaders("column", rowIndex, rowAreaColCount, totalCellsCount - rowAreaColCount, setAlignment)
                            }
                        }
                        if (this._allowExportColumnFieldHeaders()) {
                            if (!this._allowExportDataFieldHeaders()) {
                                this._exportFieldHeaders("data", rowIndex, 0, rowAreaColCount, setAlignment)
                            }
                            this._exportFieldHeaders("column", rowIndex, rowAreaColCount, totalCellsCount - rowAreaColCount, setAlignment)
                        }
                    };
                    _proto._exportFieldHeaders = function(area, rowIndex, startColumnIndex, totalColumnsCount, setAlignment) {
                        const fieldHeaders = this["".concat(area, "FieldHeaders")];
                        const row = this.worksheet.getRow(rowIndex);
                        const shouldMergeHeaderField = "row" !== area || "row" === area && "tree" === this.rowHeaderLayout;
                        if (shouldMergeHeaderField) {
                            this.mergedRangesManager.addMergedRange(row.getCell(this.topLeftCell.column + startColumnIndex), 0, totalColumnsCount - 1)
                        }
                        for (let cellIndex = 0; cellIndex < totalColumnsCount; cellIndex++) {
                            const excelCell = row.getCell(this.topLeftCell.column + startColumnIndex + cellIndex);
                            const values = fieldHeaders;
                            let cellData = [];
                            const value = values.length > totalColumnsCount || shouldMergeHeaderField ? values.join(", ") : values[cellIndex];
                            cellData = _extends({}, this._getDefaultFieldHeaderCellsData(value), {
                                headerType: area
                            });
                            excelCell.value = value;
                            this._applyHeaderStyles(excelCell, setAlignment);
                            this._customizeCell(excelCell, cellData)
                        }
                    };
                    _proto._applyHeaderStyles = function(excelCell, setAlignment) {
                        const {
                            bold: bold,
                            alignment: alignment,
                            border: border
                        } = this._getFieldHeaderStyles();
                        this._trySetFont(excelCell, bold);
                        setAlignment(excelCell, this.wrapText, alignment);
                        excelCell.border = border
                    };
                    _proto._allowExportRowFieldHeaders = function() {
                        return this.rowFieldHeaders.length > 0
                    };
                    _proto._allowExportFilterFieldHeaders = function() {
                        return this.filterFieldHeaders.length > 0
                    };
                    _proto._allowExportDataFieldHeaders = function() {
                        return this.dataFieldHeaders.length > 0
                    };
                    _proto._allowExportColumnFieldHeaders = function() {
                        return this.columnFieldHeaders.length > 0
                    };
                    return PivotGridHelpers
                }();

                function _getLoadPanelTargetElement(component) {
                    return component._dataArea.groupElement()
                }

                function _getLoadPanelContainer(component) {
                    return component.$element()
                }
            },
        48351:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/file_saver.js ***!
              \********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.fileSaver = exports.MIME_TYPES = void 0;
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../core/dom_adapter */ 73349));
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../ui/widget/ui.errors */ 96688));
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _console = __webpack_require__( /*! ../core/utils/console */ 30869);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();
                const navigator = (0, _window.getNavigator)();
                const FILE_EXTESIONS = {
                    EXCEL: "xlsx",
                    CSS: "css",
                    PNG: "png",
                    JPEG: "jpeg",
                    GIF: "gif",
                    SVG: "svg",
                    PDF: "pdf"
                };
                const MIME_TYPES = {
                    CSS: "text/css",
                    EXCEL: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
                    PNG: "image/png",
                    JPEG: "image/jpeg",
                    GIF: "image/gif",
                    SVG: "image/svg+xml",
                    PDF: "application/pdf"
                };
                exports.MIME_TYPES = MIME_TYPES;
                const fileSaver = {
                    _revokeObjectURLTimeout: 3e4,
                    _getDataUri: function(format, data) {
                        const mimeType = this._getMimeType(format);
                        return "data:".concat(mimeType, ";base64,").concat(data)
                    },
                    _getMimeType: function(format) {
                        return MIME_TYPES[format] || "application/octet-stream"
                    },
                    _linkDownloader: function(fileName, href) {
                        const exportLinkElement = _dom_adapter.default.createElement("a");
                        exportLinkElement.download = fileName;
                        exportLinkElement.href = href;
                        exportLinkElement.target = "_blank";
                        return exportLinkElement
                    },
                    _winJSBlobSave: function(blob, fileName, format) {
                        const savePicker = new Windows.Storage.Pickers.FileSavePicker;
                        savePicker.suggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.documentsLibrary;
                        const fileExtension = FILE_EXTESIONS[format];
                        if (fileExtension) {
                            const mimeType = this._getMimeType(format);
                            savePicker.fileTypeChoices.insert(mimeType, ["." + fileExtension])
                        }
                        savePicker.suggestedFileName = fileName;
                        savePicker.pickSaveFileAsync().then((function(file) {
                            if (file) {
                                file.openAsync(Windows.Storage.FileAccessMode.readWrite).then((function(outputStream) {
                                    const inputStream = blob.msDetachStream();
                                    Windows.Storage.Streams.RandomAccessStream.copyAsync(inputStream, outputStream).then((function() {
                                        outputStream.flushAsync().done((function() {
                                            inputStream.close();
                                            outputStream.close()
                                        }))
                                    }))
                                }))
                            }
                        }))
                    },
                    _click: function(link) {
                        try {
                            link.dispatchEvent(new MouseEvent("click", {
                                cancelable: true
                            }))
                        } catch (e) {
                            const event = _dom_adapter.default.getDocument().createEvent("MouseEvents");
                            event.initMouseEvent("click", true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null);
                            link.dispatchEvent(event)
                        }
                    },
                    _saveBlobAs: function(fileName, format, data) {
                        this._blobSaved = false;
                        if ((0, _type.isDefined)(navigator.msSaveOrOpenBlob)) {
                            navigator.msSaveOrOpenBlob(data, fileName);
                            this._blobSaved = true
                        } else if ((0, _type.isDefined)(window.WinJS)) {
                            this._winJSBlobSave(data, fileName, format);
                            this._blobSaved = true
                        } else {
                            const URL = window.URL || window.webkitURL || window.mozURL || window.msURL || window.oURL;
                            if ((0, _type.isDefined)(URL)) {
                                const objectURL = URL.createObjectURL(data);
                                const downloadLink = this._linkDownloader(fileName, objectURL);
                                setTimeout(() => {
                                    URL.revokeObjectURL(objectURL);
                                    this._objectUrlRevoked = true
                                }, this._revokeObjectURLTimeout);
                                this._click(downloadLink)
                            } else {
                                _console.logger.warn("window.URL || window.webkitURL || window.mozURL || window.msURL || window.oURL is not defined")
                            }
                        }
                    },
                    saveAs: function(fileName, format, data) {
                        const fileExtension = FILE_EXTESIONS[format];
                        if (fileExtension) {
                            fileName += "." + fileExtension
                        }
                        if ((0, _type.isFunction)(window.Blob)) {
                            this._saveBlobAs(fileName, format, data)
                        } else {
                            if (!(0, _type.isDefined)(navigator.userAgent.match(/iPad/i))) {
                                _ui.default.log("E1034")
                            }
                            const downloadLink = this._linkDownloader(fileName, this._getDataUri(format, data));
                            this._click(downloadLink)
                        }
                    }
                };
                exports.fileSaver = fileSaver
            },
        12173:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/image_creator.js ***!
              \***********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.calcScaledInfo = calcScaledInfo;
                exports.getData = function(data, options) {
                    return imageCreator.getData(data, options)
                };
                exports.imageCreator = void 0;
                exports.testFormats = function(formats) {
                    const canvas = imageCreator._createCanvas(100, 100, 0);
                    return formats.reduce((function(r, f) {
                        const mimeType = ("image/" + f).toLowerCase();
                        if (-1 !== canvas.toDataURL(mimeType).indexOf(mimeType)) {
                            r.supported.push(f)
                        } else {
                            r.unsupported.push(f)
                        }
                        return r
                    }), {
                        supported: [],
                        unsupported: []
                    })
                };
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _color = _interopRequireDefault(__webpack_require__( /*! ../color */ 52752));
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _svg = __webpack_require__( /*! ../core/utils/svg */ 19155);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../core/dom_adapter */ 73349));
                var _dom = __webpack_require__( /*! ../core/utils/dom */ 3532);
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _inflector = __webpack_require__( /*! ../core/utils/inflector */ 78008);
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();
                const _math = Math;
                const PI = _math.PI;
                const _min = _math.min;
                const _abs = _math.abs;
                const _sqrt = _math.sqrt;
                const _pow = _math.pow;
                const _atan2 = _math.atan2;
                const _cos = _math.cos;
                const _sin = _math.sin;
                const _number = Number;
                let parseAttributes;

                function arcTo(x1, y1, x2, y2, radius, largeArcFlag, clockwise, context) {
                    const cBx = (x1 + x2) / 2;
                    const cBy = (y1 + y2) / 2;
                    let aB = _atan2(y1 - y2, x1 - x2);
                    const k = largeArcFlag ? 1 : -1;
                    aB += PI / 180 * 90 * (clockwise ? 1 : -1);
                    const opSide = _sqrt(_pow(x2 - x1, 2) + _pow(y2 - y1, 2)) / 2;
                    const adjSide = _sqrt(_abs(_pow(radius, 2) - _pow(opSide, 2)));
                    const centerX = cBx + k * (adjSide * _cos(aB));
                    const centerY = cBy + k * (adjSide * _sin(aB));
                    const startAngle = _atan2(y1 - centerY, x1 - centerX);
                    const endAngle = _atan2(y2 - centerY, x2 - centerX);
                    context.arc(centerX, centerY, radius, startAngle, endAngle, !clockwise)
                }

                function getElementOptions(element, rootAppended) {
                    const attr = parseAttributes(element.attributes || {});
                    const options = (0, _extend.extend)({}, attr, {
                        text: element.textContent.replace(/\s+/g, " "),
                        textAlign: "middle" === attr["text-anchor"] ? "center" : attr["text-anchor"]
                    });
                    const transform = attr.transform;
                    let coords;
                    if (transform) {
                        coords = transform.match(/translate\(-*\d+([.]\d+)*(,*\s*-*\d+([.]\d+)*)*/);
                        if (coords) {
                            coords = coords[0].match(/-*\d+([.]\d+)*/g);
                            options.translateX = _number(coords[0]);
                            options.translateY = coords[1] ? _number(coords[1]) : 0
                        }
                        coords = transform.match(/rotate\(-*\d+([.]\d+)*(,*\s*-*\d+([.]\d+)*,*\s*-*\d+([.]\d+)*)*/);
                        if (coords) {
                            coords = coords[0].match(/-*\d+([.]\d+)*/g);
                            options.rotationAngle = _number(coords[0]);
                            options.rotationX = coords[1] && _number(coords[1]);
                            options.rotationY = coords[2] && _number(coords[2])
                        }
                        coords = transform.match(/scale\(-*\d+([.]\d+)*(,*\s*-*\d+([.]\d+)*)*/);
                        if (coords) {
                            coords = coords[0].match(/-*\d+([.]\d+)*/g);
                            options.scaleX = _number(coords[0]);
                            if (coords.length > 1) {
                                options.scaleY = _number(coords[1])
                            } else {
                                options.scaleY = options.scaleX
                            }
                        }
                    }! function(element, options, rootAppended) {
                        let style = element.style || {};
                        let field;
                        for (field in style) {
                            if ("" !== style[field]) {
                                options[(0, _inflector.camelize)(field)] = style[field]
                            }
                        }
                        if (rootAppended && _dom_adapter.default.isElementNode(element)) {
                            style = window.getComputedStyle(element);
                            ["fill", "stroke", "stroke-width", "font-family", "font-size", "font-style", "font-weight"].forEach((function(prop) {
                                if (prop in style && "" !== style[prop]) {
                                    options[(0, _inflector.camelize)(prop)] = style[prop]
                                }
                            }));
                            ["opacity", "fill-opacity", "stroke-opacity"].forEach((function(prop) {
                                if (prop in style && "" !== style[prop] && "1" !== style[prop]) {
                                    options[prop] = _number(style[prop])
                                }
                            }))
                        }
                        options.textDecoration = options.textDecoration || options.textDecorationLine;
                        options.globalAlpha = (0, _type.isDefined)(options.opacity) ? options.opacity : options.globalAlpha
                    }(element, options, rootAppended);
                    return options
                }

                function parseUrl(urlString) {
                    const matches = urlString && urlString.match(/url\(.*#(.*?)["']?\)/i);
                    return matches && matches[1]
                }

                function setFontStyle(context, options) {
                    const fontParams = [];
                    options.fontSize = options.fontSize || "10px";
                    options.fontFamily = options.fontFamily || "sans-serif";
                    options.fill = options.fill || "#000";
                    options.fontStyle && fontParams.push(options.fontStyle);
                    options.fontWeight && fontParams.push(options.fontWeight);
                    fontParams.push(options.fontSize);
                    fontParams.push(options.fontFamily);
                    context.font = fontParams.join(" ");
                    context.textAlign = options.textAlign;
                    context.fillStyle = options.fill;
                    context.globalAlpha = options.globalAlpha
                }

                function drawText(context, options, shared) {
                    setFontStyle(context, options);
                    applyFilter(context, options, shared);
                    options.text && context.fillText(options.text, options.x || 0, options.y || 0);
                    strokeElement(context, options, true);
                    ! function(context, options, shared) {
                        if (!options.textDecoration || "none" === options.textDecoration) {
                            return
                        }
                        const x = options.x;
                        const textWidth = context.measureText(options.text).width;
                        const textHeight = parseInt(options.fontSize, 10);
                        const lineHeight = .05 * textHeight < 1 ? 1 : .05 * textHeight;
                        let y = options.y;
                        switch (options.textDecoration) {
                            case "line-through":
                                y -= textHeight / 3 + lineHeight / 2;
                                break;
                            case "overline":
                                y -= textHeight - lineHeight;
                                break;
                            case "underline":
                                y += lineHeight
                        }
                        context.rect(x, y, textWidth, lineHeight);
                        fillElement(context, options, shared);
                        strokeElement(context, options)
                    }(context, options, shared)
                }

                function hasTspan(element) {
                    const nodes = element.childNodes;
                    for (let i = 0; i < nodes.length; i++) {
                        if ("tspan" === nodes[i].tagName) {
                            return true
                        }
                    }
                    return false
                }

                function drawElement(element, context, parentOptions, shared) {
                    const tagName = element.tagName;
                    const isText = "text" === tagName || "tspan" === tagName || void 0 === tagName;
                    const isImage = "image" === tagName;
                    const isComment = 8 === element.nodeType;
                    const options = (0, _extend.extend)({}, parentOptions, getElementOptions(element, shared.rootAppended));
                    if ("hidden" === options.visibility || options[_svg.HIDDEN_FOR_EXPORT] || isComment) {
                        return
                    }
                    context.save();
                    !isImage && transformElement(context, options);
                    clipElement(context, options, shared);
                    ! function(options) {
                        options.strokeOpacity = void 0 !== options["stroke-opacity"] ? options["stroke-opacity"] : 1;
                        options.fillOpacity = void 0 !== options["fill-opacity"] ? options["fill-opacity"] : 1;
                        if (void 0 !== options.opacity) {
                            options.strokeOpacity *= options.opacity;
                            options.fillOpacity *= options.opacity
                        }
                    }(options);
                    let promise;
                    context.beginPath();
                    switch (element.tagName) {
                        case void 0:
                            drawText(context, options, shared);
                            break;
                        case "text":
                        case "tspan":
                            ! function drawTextElement(childNodes, context, options, shared) {
                                const lines = [];
                                let line;
                                let offset = 0;
                                for (let i = 0; i < childNodes.length; i++) {
                                    const element = childNodes[i];
                                    if (void 0 === element.tagName) {
                                        drawElement(element, context, options, shared)
                                    } else if ("tspan" === element.tagName || "text" === element.tagName) {
                                        const elementOptions = getElementOptions(element, shared.rootAppended);
                                        const mergedOptions = (0, _extend.extend)({}, options, elementOptions);
                                        if ("tspan" === element.tagName && hasTspan(element)) {
                                            drawTextElement(element.childNodes, context, mergedOptions, shared);
                                            continue
                                        }
                                        mergedOptions.textAlign = "start";
                                        if (!line || void 0 !== elementOptions.x) {
                                            line = {
                                                elements: [],
                                                options: [],
                                                widths: [],
                                                offsets: []
                                            };
                                            lines.push(line)
                                        }
                                        if (void 0 !== elementOptions.y) {
                                            offset = 0
                                        }
                                        if (void 0 !== elementOptions.dy) {
                                            offset += parseFloat(elementOptions.dy)
                                        }
                                        line.elements.push(element);
                                        line.options.push(mergedOptions);
                                        line.offsets.push(offset);
                                        setFontStyle(context, mergedOptions);
                                        line.widths.push(context.measureText(mergedOptions.text).width)
                                    }
                                }
                                lines.forEach((function(line) {
                                    const commonWidth = line.widths.reduce((function(commonWidth, width) {
                                        return commonWidth + width
                                    }), 0);
                                    let xDiff = 0;
                                    let currentOffset = 0;
                                    if ("center" === options.textAlign) {
                                        xDiff = commonWidth / 2
                                    }
                                    if ("end" === options.textAlign) {
                                        xDiff = commonWidth
                                    }
                                    line.options.forEach((function(o, index) {
                                        const width = line.widths[index];
                                        o.x = o.x - xDiff + currentOffset;
                                        o.y += line.offsets[index];
                                        currentOffset += width
                                    }));
                                    line.elements.forEach((function(element, index) {
                                        drawTextElement(element.childNodes, context, line.options[index], shared)
                                    }))
                                }))
                            }(element.childNodes, context, options, shared);
                            break;
                        case "image":
                            promise = function(context, options, shared) {
                                const d = new _deferred.Deferred;
                                const image = new window.Image;
                                image.onload = function() {
                                    context.save();
                                    context.globalAlpha = options.globalAlpha;
                                    transformElement(context, options);
                                    clipElement(context, options, shared);
                                    context.drawImage(image, options.x || 0, options.y || 0, options.width, options.height);
                                    context.restore();
                                    d.resolve()
                                };
                                image.onerror = function() {
                                    d.resolve()
                                };
                                image.setAttribute("crossOrigin", "anonymous");
                                image.src = options.href || options["xlink:href"];
                                return d
                            }(context, options, shared);
                            break;
                        case "path":
                            ! function(context, dAttr) {
                                const dArray = dAttr.replace(/,/g, " ").split(/([A-Z])/i).filter(item => "" !== item.trim());
                                let i = 0;
                                let params;
                                let prevParams;
                                let prevParamsLen;
                                do {
                                    params = (dArray[i + 1] || "").trim().split(" ");
                                    switch (dArray[i]) {
                                        case "M":
                                            context.moveTo(_number(params[0]), _number(params[1]));
                                            i += 2;
                                            break;
                                        case "L":
                                            for (let j = 0; j < params.length / 2; j++) {
                                                context.lineTo(_number(params[2 * j]), _number(params[2 * j + 1]))
                                            }
                                            i += 2;
                                            break;
                                        case "C":
                                            context.bezierCurveTo(_number(params[0]), _number(params[1]), _number(params[2]), _number(params[3]), _number(params[4]), _number(params[5]));
                                            i += 2;
                                            break;
                                        case "a":
                                            prevParams = dArray[i - 1].trim().split(" ");
                                            prevParamsLen = prevParams.length - 1;
                                            arcTo(_number(prevParams[prevParamsLen - 1]), _number(prevParams[prevParamsLen]), _number(prevParams[prevParamsLen - 1]) + _number(params[5]), _number(prevParams[prevParamsLen]) + _number(params[6]), _number(params[0]), _number(params[3]), _number(params[4]), context);
                                            i += 2;
                                            break;
                                        case "A":
                                            prevParams = dArray[i - 1].trim().split(" ");
                                            prevParamsLen = prevParams.length - 1;
                                            arcTo(_number(prevParams[prevParamsLen - 1]), _number(prevParams[prevParamsLen]), _number(params[5]), _number(params[6]), _number(params[0]), _number(params[3]), _number(params[4]), context);
                                            i += 2;
                                            break;
                                        case "Z":
                                            context.closePath();
                                            i += 1;
                                            break;
                                        default:
                                            i++
                                    }
                                } while (i < dArray.length)
                            }(context, options.d);
                            break;
                        case "rect":
                            ! function(context, options) {
                                const x = options.x;
                                const y = options.y;
                                const width = options.width;
                                const height = options.height;
                                let cornerRadius = options.rx;
                                if (!cornerRadius) {
                                    context.rect(x, y, width, height)
                                } else {
                                    cornerRadius = _min(cornerRadius, width / 2, height / 2);
                                    context.save();
                                    context.translate(x, y);
                                    context.moveTo(width / 2, 0);
                                    context.arcTo(width, 0, width, height, cornerRadius);
                                    context.arcTo(width, height, 0, height, cornerRadius);
                                    context.arcTo(0, height, 0, 0, cornerRadius);
                                    context.arcTo(0, 0, cornerRadius, 0, cornerRadius);
                                    context.lineTo(width / 2, 0);
                                    context.restore()
                                }
                            }(context, options);
                            context.closePath();
                            break;
                        case "circle":
                            context.arc(options.cx, options.cy, options.r, 0, 2 * PI, 1)
                    }
                    if (!isText) {
                        applyFilter(context, options, shared);
                        if (!isImage) {
                            promise = fillElement(context, options, shared)
                        }
                        strokeElement(context, options)
                    }
                    applyGradient(context, options, shared, element, "linear");
                    applyGradient(context, options, shared, element, "radial");
                    context.restore();
                    return promise
                }

                function applyGradient(context, options, _ref, element, type) {
                    let {
                        linearGradients: linearGradients,
                        radialGradients: radialGradients
                    } = _ref;
                    const gradients = "linear" === type ? linearGradients : radialGradients;
                    if (0 === Object.keys(gradients).length) {
                        return
                    }
                    const id = parseUrl(options.fill);
                    if (id && gradients[id]) {
                        const box = element.getBBox();
                        const horizontalCenter = box.x + box.width / 2;
                        const verticalCenter = box.y + box.height / 2;
                        const maxRadius = Math.max(box.height / 2, box.width / 2);
                        const gradient = "linear" === type ? context.createLinearGradient(box.x, 0, box.x + box.width, 0) : context.createRadialGradient(horizontalCenter, verticalCenter, 0, horizontalCenter, verticalCenter, maxRadius);
                        gradients[id].colors.forEach(opt => {
                            const offset = parseInt(opt.offset.replace(/%/, ""));
                            gradient.addColorStop(offset / 100, opt.stopColor)
                        });
                        if ("linear" === type) {
                            var _ref2, _gradients$id$transfo;
                            const angle = null !== (_ref2 = (null === (_gradients$id$transfo = gradients[id].transform) || void 0 === _gradients$id$transfo ? void 0 : _gradients$id$transfo.replace(/\D/g, "")) * Math.PI / 180) && void 0 !== _ref2 ? _ref2 : 0;
                            context.translate(horizontalCenter, verticalCenter);
                            context.rotate(angle);
                            context.translate(-horizontalCenter, -verticalCenter)
                        }
                        context.globalAlpha = options.opacity;
                        context.fillStyle = gradient;
                        context.fill()
                    }
                }

                function applyFilter(context, options, shared) {
                    let filterOptions;
                    const id = parseUrl(options.filter);
                    if (id) {
                        filterOptions = shared.filters[id];
                        if (!filterOptions) {
                            filterOptions = {
                                offsetX: 0,
                                offsetY: 0,
                                blur: 0,
                                color: "#000"
                            }
                        }
                        context.shadowOffsetX = filterOptions.offsetX;
                        context.shadowOffsetY = filterOptions.offsetY;
                        context.shadowColor = filterOptions.color;
                        context.shadowBlur = filterOptions.blur
                    }
                }

                function transformElement(context, options) {
                    context.translate(options.translateX || 0, options.translateY || 0);
                    options.translateX = void 0;
                    options.translateY = void 0;
                    if (options.rotationAngle) {
                        context.translate(options.rotationX || 0, options.rotationY || 0);
                        context.rotate(options.rotationAngle * PI / 180);
                        context.translate(-(options.rotationX || 0), -(options.rotationY || 0));
                        options.rotationAngle = void 0;
                        options.rotationX = void 0;
                        options.rotationY = void 0
                    }
                    if (isFinite(options.scaleX)) {
                        context.scale(options.scaleX, options.scaleY);
                        options.scaleX = void 0;
                        options.scaleY = void 0
                    }
                }

                function clipElement(context, options, shared) {
                    if (options["clip-path"]) {
                        drawElement(shared.clipPaths[parseUrl(options["clip-path"])], context, {}, shared);
                        context.clip();
                        options["clip-path"] = void 0
                    }
                }

                function createGradient(element) {
                    var _element$attributes$g;
                    const options = {
                        colors: [],
                        transform: null === (_element$attributes$g = element.attributes.gradientTransform) || void 0 === _element$attributes$g ? void 0 : _element$attributes$g.textContent
                    };
                    (0, _iterator.each)(element.childNodes, (_, _ref3) => {
                        let {
                            attributes: attributes
                        } = _ref3;
                        options.colors.push({
                            offset: attributes.offset.value,
                            stopColor: attributes["stop-color"].value
                        })
                    });
                    return options
                }

                function createFilter(element) {
                    let color;
                    let opacity;
                    const filterOptions = {};
                    (0, _iterator.each)(element.childNodes, (function(_, node) {
                        const attr = node.attributes;
                        if (!attr.result) {
                            return
                        }
                        switch (attr.result.value) {
                            case "gaussianBlurResult":
                                filterOptions.blur = _number(attr.stdDeviation.value);
                                break;
                            case "offsetResult":
                                filterOptions.offsetX = _number(attr.dx.value);
                                filterOptions.offsetY = _number(attr.dy.value);
                                break;
                            case "floodResult":
                                color = attr["flood-color"] ? attr["flood-color"].value : "#000";
                                opacity = attr["flood-opacity"] ? attr["flood-opacity"].value : 1;
                                filterOptions.color = function(hexColor, alpha) {
                                    const color = new _color.default(hexColor);
                                    return "rgba(" + color.r + "," + color.g + "," + color.b + "," + alpha + ")"
                                }(color, opacity)
                        }
                    }));
                    return filterOptions
                }

                function drawCanvasElements(elements, context, parentOptions, shared) {
                    return function asyncEach(array, callback) {
                        let d = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : new _deferred.Deferred;
                        let i = 0;
                        for (; i < array.length; i++) {
                            const result = callback(array[i]);
                            if ((0, _type.isPromise)(result)) {
                                result.then(() => {
                                    asyncEach(Array.prototype.slice.call(array, i + 1), callback, d)
                                });
                                break
                            }
                        }
                        if (i === array.length) {
                            d.resolve()
                        }
                        return d
                    }(elements, (function(element) {
                        switch (element.tagName && element.tagName.toLowerCase()) {
                            case "g":
                            case "svg": {
                                const options = (0, _extend.extend)({}, parentOptions, getElementOptions(element, shared.rootAppended));
                                context.save();
                                transformElement(context, options);
                                clipElement(context, options, shared);
                                const onDone = () => {
                                    context.restore()
                                };
                                const promise = drawCanvasElements(element.childNodes, context, options, shared);
                                if ((0, _type.isPromise)(promise)) {
                                    promise.then(onDone)
                                } else {
                                    onDone()
                                }
                                return promise
                            }
                            case "defs":
                                return drawCanvasElements(element.childNodes, context, {}, shared);
                            case "clippath":
                                shared.clipPaths[element.attributes.id.textContent] = element.childNodes[0];
                                break;
                            case "pattern":
                                shared.patterns[element.attributes.id.textContent] = element;
                                break;
                            case "filter":
                                shared.filters[element.id] = createFilter(element);
                                break;
                            case "lineargradient":
                                shared.linearGradients[element.attributes.id.textContent] = createGradient(element);
                                break;
                            case "radialgradient":
                                shared.radialGradients[element.attributes.id.textContent] = createGradient(element);
                                break;
                            default:
                                return drawElement(element, context, parentOptions, shared)
                        }
                    }))
                }

                function strokeElement(context, options, isText) {
                    const stroke = options.stroke;
                    if (stroke && "none" !== stroke && 0 !== options["stroke-width"]) {
                        ! function(context, options) {
                            let matches = options["stroke-dasharray"] && options["stroke-dasharray"].match(/(\d+)/g);
                            if (matches && matches.length) {
                                matches = (0, _iterator.map)(matches, (function(item) {
                                    return _number(item)
                                }));
                                context.setLineDash(matches)
                            }
                        }(context, options);
                        context.lineJoin = options["stroke-linejoin"];
                        context.lineWidth = options["stroke-width"];
                        context.globalAlpha = options.strokeOpacity;
                        context.strokeStyle = stroke;
                        isText ? context.strokeText(options.text, options.x, options.y) : context.stroke();
                        context.globalAlpha = 1
                    }
                }

                function fillElement(context, options, shared) {
                    const fill = options.fill;
                    let promise;
                    if (fill && "none" !== fill) {
                        if (-1 === fill.search(/url/)) {
                            context.fillStyle = fill;
                            context.globalAlpha = options.fillOpacity;
                            context.fill();
                            context.globalAlpha = 1
                        } else {
                            const pattern = shared.patterns[parseUrl(fill)];
                            if (!pattern) {
                                return
                            }
                            promise = function(context, pattern, shared, parentOptions) {
                                const options = getElementOptions(pattern, shared.rootAppended);
                                const patternCanvas = imageCreator._createCanvas(options.width, options.height, 0);
                                const patternContext = patternCanvas.getContext("2d");
                                const promise = drawCanvasElements(pattern.childNodes, patternContext, options, shared);
                                const onDone = () => {
                                    context.fillStyle = context.createPattern(patternCanvas, "repeat");
                                    context.globalAlpha = parentOptions.fillOpacity;
                                    context.fill();
                                    context.globalAlpha = 1
                                };
                                if ((0, _type.isPromise)(promise)) {
                                    promise.then(onDone)
                                } else {
                                    onDone()
                                }
                                return promise
                            }(context, pattern, shared, options)
                        }
                    }
                    return promise
                }
                parseAttributes = function(attributes) {
                    const newAttributes = {};
                    let attr;
                    (0, _iterator.each)(attributes, (function(index, item) {
                        attr = item.textContent;
                        if (isFinite(attr)) {
                            attr = _number(attr)
                        }
                        newAttributes[item.name.toLowerCase()] = attr
                    }));
                    return newAttributes
                };

                function convertSvgToCanvas(svg, canvas, rootAppended) {
                    return drawCanvasElements(svg.childNodes, canvas.getContext("2d"), {}, {
                        clipPaths: {},
                        patterns: {},
                        filters: {},
                        linearGradients: {},
                        radialGradients: {},
                        rootAppended: rootAppended
                    })
                }

                function getCanvasFromSvg(markup, _ref4) {
                    let {
                        width: width,
                        height: height,
                        backgroundColor: backgroundColor,
                        margin: margin,
                        svgToCanvas: svgToCanvas = convertSvgToCanvas
                    } = _ref4;
                    const scaledScreenInfo = calcScaledInfo(width, height);
                    const canvas = imageCreator._createCanvas(scaledScreenInfo.width, scaledScreenInfo.height, margin);
                    const context = canvas.getContext("2d");
                    context.setTransform(scaledScreenInfo.pixelRatio, 0, 0, scaledScreenInfo.pixelRatio, 0, 0);
                    const svgElem = (0, _svg.getSvgElement)(markup);
                    let invisibleDiv;
                    const markupIsDomElement = _dom_adapter.default.isElementNode(markup);
                    context.translate(margin, margin);
                    _dom_adapter.default.getBody().appendChild(canvas);
                    if (!markupIsDomElement) {
                        invisibleDiv = function() {
                            const invisibleDiv = _dom_adapter.default.createElement("div");
                            invisibleDiv.style.left = "-9999px";
                            invisibleDiv.style.position = "absolute";
                            return invisibleDiv
                        }();
                        invisibleDiv.appendChild(svgElem);
                        _dom_adapter.default.getBody().appendChild(invisibleDiv)
                    }
                    if (svgElem.attributes.direction) {
                        canvas.dir = svgElem.attributes.direction.textContent
                    }! function(context, width, height, backgroundColor, margin) {
                        context.fillStyle = backgroundColor || "#ffffff";
                        context.fillRect(-margin, -margin, width + 2 * margin, height + 2 * margin)
                    }(context, width, height, backgroundColor, margin);
                    return (0, _deferred.fromPromise)(svgToCanvas(svgElem, canvas, markupIsDomElement && (0, _dom.contains)(_dom_adapter.default.getBody(), markup))).then(() => canvas).always(() => {
                        invisibleDiv && _dom_adapter.default.getBody().removeChild(invisibleDiv);
                        _dom_adapter.default.getBody().removeChild(canvas)
                    })
                }
                const imageCreator = {
                    getImageData: function(markup, options) {
                        const mimeType = "image/" + options.format;
                        if ((0, _type.isFunction)(options.__parseAttributesFn)) {
                            parseAttributes = options.__parseAttributesFn
                        }
                        return getCanvasFromSvg(markup, options).then(canvas => function(canvas, mimeType) {
                            const dataURL = canvas.toDataURL(mimeType, 1);
                            const imageData = window.atob(dataURL.substring(("data:" + mimeType + ";base64,").length));
                            return imageData
                        }(canvas, mimeType))
                    },
                    getData: function(markup, options) {
                        const that = this;
                        return imageCreator.getImageData(markup, options).then(binaryData => {
                            const mimeType = "image/" + options.format;
                            const data = (0, _type.isFunction)(window.Blob) && !options.useBase64 ? that._getBlob(binaryData, mimeType) : that._getBase64(binaryData);
                            return data
                        })
                    },
                    _getBlob: function(binaryData, mimeType) {
                        let i;
                        const dataArray = new Uint8Array(binaryData.length);
                        for (i = 0; i < binaryData.length; i++) {
                            dataArray[i] = binaryData.charCodeAt(i)
                        }
                        return new window.Blob([dataArray.buffer], {
                            type: mimeType
                        })
                    },
                    _getBase64: function(binaryData) {
                        return window.btoa(binaryData)
                    },
                    _createCanvas(width, height, margin) {
                        const canvas = (0, _renderer.default)("<canvas>")[0];
                        canvas.width = width + 2 * margin;
                        canvas.height = height + 2 * margin;
                        canvas.hidden = true;
                        return canvas
                    }
                };
                exports.imageCreator = imageCreator;

                function calcScaledInfo(width, height) {
                    const pixelRatio = window.devicePixelRatio || 1;
                    return {
                        pixelRatio: pixelRatio,
                        width: width * pixelRatio,
                        height: height * pixelRatio
                    }
                }
            },
        18577:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/autotable/export.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Export = void 0;
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../localization/date */ 91500));
                var _number = _interopRequireDefault(__webpack_require__( /*! ../../../localization/number */ 18016));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../localization/message */ 28109));
                var _export_load_panel = __webpack_require__( /*! ../../common/export_load_panel */ 5332);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 58201);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const Export = {
                    getFullOptions: function(options) {
                        const fullOptions = (0, _extend.extend)({}, options);
                        if (!((0, _type.isDefined)(fullOptions.jsPDFDocument) && (0, _type.isObject)(fullOptions.jsPDFDocument))) {
                            throw Error('The "jsPDFDocument" field must contain a jsPDF instance.')
                        }
                        if (!((0, _type.isDefined)(fullOptions.jsPDFDocument.autoTable) && (0, _type.isFunction)(fullOptions.jsPDFDocument.autoTable))) {
                            throw Error('The "exportDataGrid" method requires a autoTable plugin for jsPDF object.')
                        }
                        if (!(0, _type.isDefined)(fullOptions.keepColumnWidths)) {
                            fullOptions.keepColumnWidths = true
                        }
                        if (!(0, _type.isDefined)(fullOptions.autoTableOptions)) {
                            fullOptions.autoTableOptions = this._getDefaultAutoTableOptions()
                        } else {
                            if (!(0, _type.isObject)(fullOptions.autoTableOptions)) {
                                throw Error('The "autoTableOptions" option must be of object type.')
                            }
                            fullOptions.autoTableOptions = (0, _extend.extend)(true, {}, this._getDefaultAutoTableOptions(), fullOptions.autoTableOptions)
                        }
                        if (!(0, _type.isDefined)(fullOptions.loadPanel)) {
                            fullOptions.loadPanel = {}
                        }
                        if (!(0, _type.isDefined)(fullOptions.loadPanel.enabled)) {
                            fullOptions.loadPanel.enabled = true
                        }
                        if (!(0, _type.isDefined)(fullOptions.loadPanel.text)) {
                            fullOptions.loadPanel.text = _message.default.format("dxDataGrid-exporting")
                        }
                        return fullOptions
                    },
                    _getDefaultAutoTableOptions: function() {
                        return {
                            theme: "plain",
                            tableLineColor: 149,
                            tableLineWidth: .1,
                            styles: {
                                textColor: 51,
                                lineColor: 149,
                                lineWidth: 0
                            },
                            columnStyles: {},
                            headStyles: {
                                fontStyle: "normal",
                                textColor: 149,
                                lineWidth: .1
                            },
                            bodyStyles: {
                                lineWidth: .1
                            },
                            head: [],
                            body: []
                        }
                    },
                    export: function(options) {
                        var _component$_getIntern;
                        const {
                            jsPDFDocument: jsPDFDocument,
                            autoTableOptions: autoTableOptions,
                            component: component,
                            customizeCell: customizeCell,
                            keepColumnWidths: keepColumnWidths,
                            selectedRowsOnly: selectedRowsOnly,
                            loadPanel: loadPanel
                        } = options;
                        const internalComponent = (null === (_component$_getIntern = component._getInternalInstance) || void 0 === _component$_getIntern ? void 0 : _component$_getIntern.call(component)) || component;
                        const initialLoadPanelEnabledOption = internalComponent.option("loadPanel") && internalComponent.option("loadPanel").enabled;
                        if (initialLoadPanelEnabledOption) {
                            component.option("loadPanel.enabled", false)
                        }
                        let exportLoadPanel;
                        if (loadPanel.enabled && (0, _window.hasWindow)()) {
                            const rowsView = component.getView("rowsView");
                            exportLoadPanel = new _export_load_panel.ExportLoadPanel(component, rowsView.element(), rowsView.element().parent(), loadPanel);
                            exportLoadPanel.show()
                        }
                        const dataProvider = component.getDataProvider(selectedRowsOnly);
                        const wrapText = !!component.option("wordWrapEnabled");
                        return new Promise(resolve => {
                            dataProvider.ready().done(() => {
                                const columns = dataProvider.getColumns();
                                const styles = dataProvider.getStyles();
                                const dataRowsCount = dataProvider.getRowsCount();
                                const headerRowCount = dataProvider.getHeaderRowCount();
                                const mergedCells = [];
                                if (keepColumnWidths) {
                                    const pdfColumnWidths = this._tryGetPdfColumnWidths(autoTableOptions.tableWidth, dataProvider.getColumnsWidths());
                                    if ((0, _type.isDefined)(pdfColumnWidths) && (0, _type.isDefined)(autoTableOptions.columnStyles)) {
                                        this._setColumnWidths(autoTableOptions.columnStyles, pdfColumnWidths)
                                    }
                                }
                                for (let rowIndex = 0; rowIndex < dataRowsCount; rowIndex++) {
                                    const row = [];
                                    for (let cellIndex = 0; cellIndex < columns.length; cellIndex++) {
                                        const {
                                            value: value,
                                            cellSourceData: gridCell
                                        } = dataProvider.getCellData(rowIndex, cellIndex, true);
                                        const cellStyle = styles[dataProvider.getStyleId(rowIndex, cellIndex)];
                                        const pdfCell = {
                                            content: this._getFormattedValue(value, cellStyle.format),
                                            styles: this._getPDFCellStyles(gridCell.rowType, columns[cellIndex].alignment, cellStyle, wrapText)
                                        };
                                        if ("header" === gridCell.rowType) {
                                            const mergedRange = this._tryGetMergeRange(rowIndex, cellIndex, mergedCells, dataProvider);
                                            if (mergedRange && mergedRange.rowSpan > 0) {
                                                pdfCell.rowSpan = mergedRange.rowSpan + 1
                                            }
                                            if (mergedRange && mergedRange.colSpan > 0) {
                                                pdfCell.colSpan = mergedRange.colSpan + 1
                                            }
                                            const isMergedCell = mergedCells[rowIndex] && mergedCells[rowIndex][cellIndex];
                                            if (!isMergedCell || pdfCell.rowSpan > 1 || pdfCell.colSpan > 1) {
                                                if ((0, _type.isFunction)(customizeCell)) {
                                                    customizeCell({
                                                        gridCell: gridCell,
                                                        pdfCell: pdfCell
                                                    })
                                                }
                                                row.push(pdfCell)
                                            }
                                        } else if ("group" === gridCell.rowType && !(0, _type.isDefined)(pdfCell.content) && 1 === row.length) {
                                            var _row$0$colSpan;
                                            row[0].colSpan = null !== (_row$0$colSpan = row[0].colSpan) && void 0 !== _row$0$colSpan ? _row$0$colSpan : 1;
                                            row[0].colSpan++
                                        } else {
                                            var _pdfCell$content;
                                            pdfCell.content = null !== (_pdfCell$content = pdfCell.content) && void 0 !== _pdfCell$content ? _pdfCell$content : "";
                                            if ((0, _type.isFunction)(customizeCell)) {
                                                customizeCell({
                                                    gridCell: gridCell,
                                                    pdfCell: pdfCell
                                                })
                                            }
                                            row.push(pdfCell)
                                        }
                                    }
                                    if (rowIndex < headerRowCount) {
                                        autoTableOptions.head.push(row)
                                    } else {
                                        autoTableOptions.body.push(row)
                                    }
                                }
                                jsPDFDocument.autoTable(autoTableOptions);
                                resolve()
                            }).always(() => {
                                if (initialLoadPanelEnabledOption) {
                                    component.option("loadPanel.enabled", initialLoadPanelEnabledOption)
                                }
                                if (loadPanel.enabled && (0, _window.hasWindow)()) {
                                    exportLoadPanel.dispose()
                                }
                            })
                        })
                    },
                    _getFormattedValue: function(value, format) {
                        if ((0, _type.isDefined)(format)) {
                            if ((0, _type.isDate)(value)) {
                                return _date.default.format(value, format)
                            }
                            if ((0, _type.isNumeric)(value)) {
                                return _number.default.format(value, format)
                            }
                        }
                        return value
                    },
                    _getPDFCellStyles: function(rowType, columnAlignment, cellStyle, wrapText) {
                        const {
                            alignment: cellAlignment,
                            bold: bold
                        } = cellStyle;
                        const align = "header" === rowType ? columnAlignment : cellAlignment;
                        const pdfCellStyle = {};
                        if (align) {
                            pdfCellStyle.halign = align
                        }
                        if (bold && "header" !== rowType) {
                            pdfCellStyle.fontStyle = "bold"
                        }
                        if (wrapText) {
                            pdfCellStyle.cellWidth = "wrap"
                        }
                        return pdfCellStyle
                    },
                    _tryGetMergeRange: function(rowIndex, cellIndex, mergedCells, dataProvider) {
                        if (!mergedCells[rowIndex] || !mergedCells[rowIndex][cellIndex]) {
                            const {
                                colspan: colspan,
                                rowspan: rowspan
                            } = dataProvider.getCellMerging(rowIndex, cellIndex);
                            if (colspan || rowspan) {
                                for (let i = rowIndex; i <= rowIndex + rowspan || 0; i++) {
                                    for (let j = cellIndex; j <= cellIndex + colspan || 0; j++) {
                                        if (!mergedCells[i]) {
                                            mergedCells[i] = []
                                        }
                                        mergedCells[i][j] = true
                                    }
                                }
                                return {
                                    rowSpan: rowspan,
                                    colSpan: colspan
                                }
                            }
                        }
                    },
                    _tryGetPdfColumnWidths(autoTableWidth, columnWidths) {
                        if ((0, _type.isNumeric)(autoTableWidth) && (0, _type.isDefined)(columnWidths)) {
                            const tableWidth = columnWidths.reduce((a, b) => a + b, 0);
                            return columnWidths.map(columnWidth => autoTableWidth * columnWidth / tableWidth)
                        }
                    },
                    _setColumnWidths: function(autoTableColumnStyles, pdfColumnWidths) {
                        pdfColumnWidths.forEach((width, index) => {
                            autoTableColumnStyles[index] = autoTableColumnStyles[index] || {};
                            autoTableColumnStyles[index].cellWidth = width
                        })
                    }
                };
                exports.Export = Export
            },
        83152:
            /*!******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/autotable/export_data_grid.js ***!
              \******************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.exportDataGrid = function(options) {
                    return _export.Export.export(function(options) {
                        if (!((0, _type.isDefined)(options) && (0, _type.isObject)(options))) {
                            throw Error('The "exportDataGrid" method requires a configuration object.')
                        }
                        if (!((0, _type.isDefined)(options.component) && (0, _type.isObject)(options.component) && "dxDataGrid" === options.component.NAME)) {
                            throw Error('The "component" field must contain a DataGrid instance.')
                        }
                        if (!(0, _type.isDefined)(options.selectedRowsOnly)) {
                            options.selectedRowsOnly = false
                        }
                        return _export.Export.getFullOptions(options)
                    }(options))
                };
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _export = __webpack_require__( /*! ./export */ 18577)
            },
        66867:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/common/draw_utils.js ***!
              \*********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.addNewPage = function(doc) {
                    doc.addPage();
                    ! function(doc) {
                        if (!(0, _type.isDefined)(doc.getLineWidth)) {
                            doc.__borderWidth = null
                        }
                    }(doc)
                };
                exports.drawCellsContent = function(doc, customDrawCell, cellsArray, docStyles) {
                    cellsArray.forEach(cell => {
                        const {
                            _rect: _rect,
                            gridCell: gridCell
                        } = cell, pdfCell = function(source, excluded) {
                            if (null == source) {
                                return {}
                            }
                            var target = {};
                            var sourceKeys = Object.keys(source);
                            var key, i;
                            for (i = 0; i < sourceKeys.length; i++) {
                                key = sourceKeys[i];
                                if (excluded.indexOf(key) >= 0) {
                                    continue
                                }
                                target[key] = source[key]
                            }
                            return target
                        }(cell, _excluded);
                        const {
                            x: x,
                            y: y,
                            w: w,
                            h: h
                        } = _rect;
                        const rect = {
                            x: x,
                            y: y,
                            w: w,
                            h: h
                        };
                        const eventArg = {
                            doc: doc,
                            rect: rect,
                            pdfCell: pdfCell,
                            gridCell: gridCell,
                            cancel: false
                        };
                        null === customDrawCell || void 0 === customDrawCell ? void 0 : customDrawCell(eventArg);
                        if (!eventArg.cancel) {
                            ! function(doc, cell) {
                                if ((0, _type.isDefined)(cell.backgroundColor)) {
                                    trySetColor(doc, "fill", cell.backgroundColor);
                                    drawRect(doc, cell._rect.x, cell._rect.y, cell._rect.w, cell._rect.h, "F")
                                }
                            }(doc, cell);
                            ! function(doc, cell, docStyles) {
                                if ((0, _type.isDefined)(cell.text) && "" !== cell.text) {
                                    const {
                                        textColor: textColor,
                                        font: font,
                                        _rect: _rect,
                                        padding: padding
                                    } = cell;
                                    ! function(doc, _ref2, docStyles) {
                                        let {
                                            textColor: textColor,
                                            font: font
                                        } = _ref2;
                                        trySetColor(doc, "text", (0, _type.isDefined)(textColor) ? textColor : docStyles.textColor);
                                        const currentFont = (0, _type.isDefined)(font) ? (0, _extend.extend)({}, docStyles.font, font) : docStyles.font;
                                        const docFont = doc.getFont();
                                        if (currentFont.name !== docFont.fontName || currentFont.style !== docFont.fontStyle || (0, _type.isDefined)(currentFont.weight)) {
                                            doc.setFont(currentFont.name, currentFont.style, currentFont.weight)
                                        }
                                        if (currentFont.size !== doc.getFontSize()) {
                                            doc.setFontSize(currentFont.size)
                                        }
                                    }(doc, {
                                        textColor: textColor,
                                        font: font
                                    }, docStyles);
                                    const textRect = {
                                        x: _rect.x + padding.left,
                                        y: _rect.y + padding.top,
                                        w: _rect.w - (padding.left + padding.right),
                                        h: _rect.h - (padding.top + padding.bottom)
                                    };
                                    if ((0, _type.isDefined)(cell._textLeftOffset) || (0, _type.isDefined)(cell._textTopOffset)) {
                                        var _cell$_textLeftOffset, _cell$_textTopOffset;
                                        textRect.x = textRect.x + (null !== (_cell$_textLeftOffset = cell._textLeftOffset) && void 0 !== _cell$_textLeftOffset ? _cell$_textLeftOffset : 0);
                                        textRect.y = textRect.y + (null !== (_cell$_textTopOffset = cell._textTopOffset) && void 0 !== _cell$_textTopOffset ? _cell$_textTopOffset : 0);
                                        doc.saveGraphicsState();
                                        ! function(doc, x, y, w, h) {
                                            doc.moveTo(roundToThreeDecimals(x), roundToThreeDecimals(y));
                                            doc.lineTo(roundToThreeDecimals(x + w), roundToThreeDecimals(y));
                                            doc.lineTo(roundToThreeDecimals(x + w), roundToThreeDecimals(y + h));
                                            doc.lineTo(roundToThreeDecimals(x), roundToThreeDecimals(y + h));
                                            doc.clip();
                                            doc.discardPath()
                                        }(doc, cell._rect.x, cell._rect.y, cell._rect.w, cell._rect.h)
                                    }
                                    drawTextInRect(doc, cell.text, textRect, cell.verticalAlign, cell.horizontalAlign, cell._internalTextOptions);
                                    if ((0, _type.isDefined)(cell._textLeftOffset) || (0, _type.isDefined)(cell._textTopOffset)) {
                                        doc.restoreGraphicsState()
                                    }
                                }
                            }(doc, cell, docStyles)
                        }
                    })
                };
                exports.drawCellsLines = function(doc, cellsArray, docStyles) {
                    cellsArray.filter(cell => !(0, _type.isDefined)(cell.borderColor)).forEach(cell => {
                        drawBorders(doc, cell._rect, cell, docStyles)
                    });
                    cellsArray.filter(cell => (0, _type.isDefined)(cell.borderColor)).forEach(cell => {
                        drawBorders(doc, cell._rect, cell, docStyles)
                    })
                };
                exports.drawGridLines = function(doc, rect, options, docStyles) {
                    drawBorders(doc, rect, options, docStyles)
                };
                exports.drawLine = drawLine;
                exports.drawRect = drawRect;
                exports.drawTextInRect = drawTextInRect;
                exports.getDocumentStyles = function(doc) {
                    const docFont = doc.getFont();
                    return {
                        borderWidth: getDocBorderWidth(doc),
                        borderColor: doc.getDrawColor(),
                        font: {
                            name: docFont.fontName,
                            style: docFont.fontStyle,
                            size: doc.getFontSize()
                        },
                        textColor: doc.getTextColor()
                    }
                };
                exports.roundToThreeDecimals = roundToThreeDecimals;
                exports.setDocumentStyles = function(doc, styles) {
                    const {
                        borderWidth: borderWidth,
                        borderColor: borderColor,
                        font: font,
                        textColor: textColor
                    } = styles;
                    const docFont = doc.getFont();
                    if (docFont.fontName !== font.name || docFont.fontStyle !== font.style) {
                        doc.setFont(font.name, font.style, void 0)
                    }
                    const docFontSize = doc.getFontSize();
                    if (docFontSize !== font.size) {
                        doc.setFontSize(font.size)
                    }
                    if (getDocBorderWidth(doc) !== borderWidth) {
                        setDocBorderWidth(doc, borderWidth)
                    }
                    if (doc.getDrawColor() !== borderColor) {
                        doc.setDrawColor(borderColor)
                    }
                    if (doc.getTextColor() !== textColor) {
                        doc.setTextColor(textColor)
                    }
                };
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _pdf_utils = __webpack_require__( /*! ./pdf_utils */ 79262);
                const _excluded = ["_rect", "gridCell"];

                function capitalizeFirstLetter(string) {
                    return string.charAt(0).toUpperCase() + string.slice(1)
                }

                function roundToThreeDecimals(value) {
                    return Math.round(1e3 * value) / 1e3
                }

                function drawLine(doc, startX, startY, endX, endY) {
                    doc.line(roundToThreeDecimals(startX), roundToThreeDecimals(startY), roundToThreeDecimals(endX), roundToThreeDecimals(endY))
                }

                function drawRect(doc, x, y, width, height, style) {
                    if ((0, _type.isDefined)(style)) {
                        doc.rect(roundToThreeDecimals(x), roundToThreeDecimals(y), roundToThreeDecimals(width), roundToThreeDecimals(height), style)
                    } else {
                        doc.rect(roundToThreeDecimals(x), roundToThreeDecimals(y), roundToThreeDecimals(width), roundToThreeDecimals(height))
                    }
                }

                function drawTextInRect(doc, text, rect, verticalAlign, horizontalAlign, jsPDFTextOptions) {
                    const textArray = text.split("\n");
                    const linesCount = textArray.length;
                    const heightOfOneLine = (0, _pdf_utils.calculateTextHeight)(doc, textArray[0], doc.getFont(), {
                        wordWrapEnabled: false,
                        targetRectWidth: 1e9
                    });
                    const vAlign = null !== verticalAlign && void 0 !== verticalAlign ? verticalAlign : "middle";
                    const hAlign = null !== horizontalAlign && void 0 !== horizontalAlign ? horizontalAlign : "left";
                    const verticalAlignCoefficientsMap = {
                        top: 0,
                        middle: .5,
                        bottom: 1
                    };
                    const y = rect.y + rect.h * verticalAlignCoefficientsMap[vAlign] - heightOfOneLine * (linesCount - 1) * verticalAlignCoefficientsMap[vAlign] + function(doc) {
                        return (doc.getLineHeightFactor() - 1.15) * doc.getFontSize()
                    }(doc);
                    const x = rect.x + rect.w * {
                        left: 0,
                        center: .5,
                        right: 1
                    } [hAlign];
                    const textOptions = (0, _extend.extend)({
                        baseline: vAlign,
                        align: hAlign
                    }, jsPDFTextOptions);
                    doc.text(textArray.join("\n"), roundToThreeDecimals(x), roundToThreeDecimals(y), textOptions)
                }

                function drawBorders(doc, rect, _ref, docStyles) {
                    let {
                        borderWidth: borderWidth,
                        borderColor: borderColor,
                        drawLeftBorder: drawLeftBorder = true,
                        drawRightBorder: drawRightBorder = true,
                        drawTopBorder: drawTopBorder = true,
                        drawBottomBorder: drawBottomBorder = true
                    } = _ref;
                    if (!(0, _type.isDefined)(rect)) {
                        throw "rect is required"
                    }
                    if (!drawLeftBorder && !drawRightBorder && !drawTopBorder && !drawBottomBorder) {
                        return
                    } else if (drawLeftBorder && drawRightBorder && drawTopBorder && drawBottomBorder) {
                        setLinesStyles(doc, {
                            borderWidth: borderWidth,
                            borderColor: borderColor
                        }, docStyles);
                        drawRect(doc, rect.x, rect.y, rect.w, rect.h)
                    } else {
                        setLinesStyles(doc, {
                            borderWidth: borderWidth,
                            borderColor: borderColor
                        }, docStyles);
                        if (drawTopBorder) {
                            drawLine(doc, rect.x, rect.y, rect.x + rect.w, rect.y)
                        }
                        if (drawLeftBorder) {
                            drawLine(doc, rect.x, rect.y, rect.x, rect.y + rect.h)
                        }
                        if (drawRightBorder) {
                            drawLine(doc, rect.x + rect.w, rect.y, rect.x + rect.w, rect.y + rect.h)
                        }
                        if (drawBottomBorder) {
                            drawLine(doc, rect.x, rect.y + rect.h, rect.x + rect.w, rect.y + rect.h)
                        }
                    }
                }

                function setLinesStyles(doc, _ref3, docStyles) {
                    let {
                        borderWidth: borderWidth,
                        borderColor: borderColor
                    } = _ref3;
                    const currentBorderWidth = (0, _type.isDefined)(borderWidth) ? borderWidth : docStyles.borderWidth;
                    if (currentBorderWidth !== getDocBorderWidth(doc)) {
                        setDocBorderWidth(doc, (0, _pdf_utils.toPdfUnit)(doc, currentBorderWidth))
                    }
                    trySetColor(doc, "draw", (0, _type.isDefined)(borderColor) ? borderColor : docStyles.borderColor)
                }

                function trySetColor(doc, target, color) {
                    const getterName = "get".concat(capitalizeFirstLetter(target), "Color");
                    const setterName = "set".concat(capitalizeFirstLetter(target), "Color");
                    const {
                        ch1: ch1 = color,
                        ch2: ch2,
                        ch3: ch3,
                        ch4: ch4
                    } = color;
                    const normalizedColor = doc.__private__.decodeColorString(doc.__private__.encodeColorString({
                        ch1: ch1,
                        ch2: ch2,
                        ch3: ch3,
                        ch4: ch4,
                        precision: "text" === target ? 3 : 2
                    }));
                    if (normalizedColor !== doc[getterName]() || "fill" === target) {
                        doc[setterName].apply(doc, [ch1, ch2, ch3, ch4].filter(item => void 0 !== item))
                    }
                }

                function getDocBorderWidth(doc) {
                    var _doc$__borderWidth;
                    if ((0, _type.isDefined)(doc.getLineWidth)) {
                        return doc.getLineWidth()
                    }
                    return null !== (_doc$__borderWidth = doc.__borderWidth) && void 0 !== _doc$__borderWidth ? _doc$__borderWidth : .200025
                }

                function setDocBorderWidth(doc, width) {
                    doc.setLineWidth(width);
                    if (!(0, _type.isDefined)(doc.getLineWidth)) {
                        doc.__borderWidth = width
                    }
                }
            },
        17195:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/common/export.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Export = void 0;
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _normalizeOptions = __webpack_require__( /*! ./normalizeOptions */ 30646);
                var _row_utils = __webpack_require__( /*! ./row_utils */ 65322);
                var _height_updater = __webpack_require__( /*! ./height_updater */ 41269);
                var _rows_generator = __webpack_require__( /*! ./rows_generator */ 27504);
                var _rows_splitting = __webpack_require__( /*! ./rows_splitting */ 22775);
                var _draw_utils = __webpack_require__( /*! ./draw_utils */ 66867);
                var _pdf_utils = __webpack_require__( /*! ./pdf_utils */ 79262);
                var _message = (obj = __webpack_require__( /*! ../../../localization/message */ 28109), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _export_load_panel = __webpack_require__( /*! ../../common/export_load_panel */ 5332);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 58201);

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const Export = {
                    getFullOptions: function(options) {
                        const {
                            jsPDFDocument: jsPDFDocument
                        } = options;
                        const fullOptions = (0, _extend.extend)({}, options);
                        if (!(0, _type.isDefined)(fullOptions.topLeft)) {
                            fullOptions.topLeft = {
                                x: 0,
                                y: 0
                            }
                        }
                        if (!(0, _type.isDefined)(fullOptions.indent)) {
                            fullOptions.indent = 0
                        }
                        if (!(0, _type.isDefined)(fullOptions.repeatHeaders)) {
                            fullOptions.repeatHeaders = true
                        }
                        if (!(0, _type.isDefined)(fullOptions.margin)) {
                            fullOptions.margin = (0, _pdf_utils.toPdfUnit)(jsPDFDocument, 40)
                        }
                        fullOptions.margin = (0, _normalizeOptions.normalizeBoundaryValue)(fullOptions.margin);
                        if (!Array.isArray(fullOptions.columnWidths)) {
                            fullOptions.columnWidths = []
                        }
                        if (!(0, _type.isDefined)(fullOptions.loadPanel)) {
                            fullOptions.loadPanel = {}
                        }
                        if (!(0, _type.isDefined)(fullOptions.loadPanel.enabled)) {
                            fullOptions.loadPanel.enabled = true
                        }
                        if (!(0, _type.isDefined)(fullOptions.loadPanel.text)) {
                            fullOptions.loadPanel.text = _message.default.format("dxDataGrid-exporting")
                        }
                        return fullOptions
                    },
                    export: function(options) {
                        var _component$_getIntern;
                        const {
                            jsPDFDocument: jsPDFDocument,
                            component: component,
                            selectedRowsOnly: selectedRowsOnly,
                            loadPanel: loadPanel
                        } = options;
                        const internalComponent = (null === (_component$_getIntern = component._getInternalInstance) || void 0 === _component$_getIntern ? void 0 : _component$_getIntern.call(component)) || component;
                        const initialLoadPanelEnabledOption = internalComponent.option("loadPanel") && internalComponent.option("loadPanel").enabled;
                        if (initialLoadPanelEnabledOption) {
                            component.option("loadPanel.enabled", false)
                        }
                        let exportLoadPanel;
                        if (loadPanel.enabled && (0, _window.hasWindow)()) {
                            const rowsView = component.getView("rowsView");
                            exportLoadPanel = new _export_load_panel.ExportLoadPanel(component, rowsView.element(), rowsView.element().parent(), loadPanel);
                            exportLoadPanel.show()
                        }
                        const dataProvider = component.getDataProvider(selectedRowsOnly);
                        return new Promise(resolve => {
                            dataProvider.ready().done(() => {
                                var _options$rowOptions, _options$rowOptions$h;
                                const rowsInfo = (0, _rows_generator.generateRowsInfo)(jsPDFDocument, dataProvider, component, null === (_options$rowOptions = options.rowOptions) || void 0 === _options$rowOptions ? void 0 : null === (_options$rowOptions$h = _options$rowOptions.headerStyles) || void 0 === _options$rowOptions$h ? void 0 : _options$rowOptions$h.backgroundColor);
                                if (options.customizeCell) {
                                    rowsInfo.forEach(rowInfo => rowInfo.cells.forEach(cellInfo => options.customizeCell(cellInfo)))
                                }(0, _normalizeOptions.normalizeRowsInfo)(rowsInfo);
                                (0, _row_utils.initializeCellsWidth)(jsPDFDocument, dataProvider, rowsInfo, options);
                                (0, _row_utils.resizeFirstColumnByIndentLevel)(rowsInfo, options);
                                (0, _row_utils.applyColSpans)(rowsInfo);
                                (0, _row_utils.calculateHeights)(jsPDFDocument, rowsInfo, options);
                                (0, _row_utils.applyRowSpans)(rowsInfo);
                                (0, _height_updater.updateRowsAndCellsHeights)(jsPDFDocument, rowsInfo);
                                (0, _row_utils.calculateCoordinates)(jsPDFDocument, rowsInfo, options);
                                (0, _row_utils.applyBordersConfig)(rowsInfo);
                                (0, _pdf_utils.applyWordWrap)(jsPDFDocument, rowsInfo);
                                const docStyles = (0, _draw_utils.getDocumentStyles)(jsPDFDocument);
                                const rtlEnabled = !!component.option("rtlEnabled");
                                const rectsByPages = (0, _rows_splitting.splitByPages)(jsPDFDocument, rowsInfo, options, _ref => {
                                    var _sourceRect$sourceCel;
                                    let {
                                        sourceRect: sourceRect,
                                        leftRect: leftRect,
                                        rightRect: rightRect
                                    } = _ref;
                                    let leftRectTextOptions = {};
                                    let rightRectTextOptions = {};
                                    const isTextNotEmpty = (null === (_sourceRect$sourceCel = sourceRect.sourceCellInfo.text) || void 0 === _sourceRect$sourceCel ? void 0 : _sourceRect$sourceCel.length) > 0;
                                    if (isTextNotEmpty) {
                                        if (rtlEnabled) {
                                            const isTextWidthGreaterThanRect = jsPDFDocument.getTextWidth(sourceRect.sourceCellInfo.text) > leftRect.w;
                                            const isTextRightAlignment = !(0, _type.isDefined)(sourceRect.sourceCellInfo.horizontalAlign) || "right" === sourceRect.sourceCellInfo.horizontalAlign;
                                            if (isTextWidthGreaterThanRect || !isTextRightAlignment) {
                                                var _sourceRect$sourceCel2, _sourceRect$sourceCel4, _sourceRect$sourceCel5;
                                                let rightRectTextOffset;
                                                let leftRectTextOffset;
                                                if ("right" === (null === (_sourceRect$sourceCel2 = sourceRect.sourceCellInfo) || void 0 === _sourceRect$sourceCel2 ? void 0 : _sourceRect$sourceCel2.horizontalAlign)) {
                                                    var _sourceRect$sourceCel3;
                                                    rightRectTextOffset = null !== (_sourceRect$sourceCel3 = sourceRect.sourceCellInfo._textLeftOffset) && void 0 !== _sourceRect$sourceCel3 ? _sourceRect$sourceCel3 : 0;
                                                    leftRectTextOffset = rightRectTextOffset + leftRect.w
                                                } else if ("center" === (null === (_sourceRect$sourceCel4 = sourceRect.sourceCellInfo) || void 0 === _sourceRect$sourceCel4 ? void 0 : _sourceRect$sourceCel4.horizontalAlign)) {
                                                    leftRectTextOffset = sourceRect.x + sourceRect.w - (rightRect.x + rightRect.w) + sourceRect.sourceCellInfo._rect.w / 2 - leftRect.w / 2;
                                                    rightRectTextOffset = leftRectTextOffset - rightRect.w
                                                } else if ("left" === (null === (_sourceRect$sourceCel5 = sourceRect.sourceCellInfo) || void 0 === _sourceRect$sourceCel5 ? void 0 : _sourceRect$sourceCel5.horizontalAlign)) {
                                                    leftRectTextOffset = sourceRect.x + sourceRect.w - (rightRect.x + rightRect.w);
                                                    rightRectTextOffset = leftRectTextOffset - rightRect.w
                                                }
                                                leftRectTextOptions = _extends({}, {
                                                    _textLeftOffset: rightRectTextOffset
                                                });
                                                rightRectTextOptions = _extends({}, {
                                                    _textLeftOffset: leftRectTextOffset
                                                })
                                            } else {
                                                rightRectTextOptions = _extends({}, {
                                                    text: ""
                                                })
                                            }
                                        } else {
                                            const isTextWidthGreaterThanRect = jsPDFDocument.getTextWidth(sourceRect.sourceCellInfo.text) > leftRect.w;
                                            const isTextLeftAlignment = !(0, _type.isDefined)(sourceRect.sourceCellInfo.horizontalAlign) || "left" === sourceRect.sourceCellInfo.horizontalAlign;
                                            if (isTextWidthGreaterThanRect || !isTextLeftAlignment) {
                                                var _sourceRect$sourceCel6, _sourceRect$sourceCel8, _sourceRect$sourceCel10;
                                                let leftTextLeftOffset;
                                                let rightTextLeftOffset;
                                                if ("left" === (null === (_sourceRect$sourceCel6 = sourceRect.sourceCellInfo) || void 0 === _sourceRect$sourceCel6 ? void 0 : _sourceRect$sourceCel6.horizontalAlign)) {
                                                    var _sourceRect$sourceCel7;
                                                    leftTextLeftOffset = null !== (_sourceRect$sourceCel7 = sourceRect.sourceCellInfo._textLeftOffset) && void 0 !== _sourceRect$sourceCel7 ? _sourceRect$sourceCel7 : 0;
                                                    rightTextLeftOffset = leftTextLeftOffset - leftRect.w
                                                } else if ("center" === (null === (_sourceRect$sourceCel8 = sourceRect.sourceCellInfo) || void 0 === _sourceRect$sourceCel8 ? void 0 : _sourceRect$sourceCel8.horizontalAlign)) {
                                                    var _sourceRect$sourceCel9;
                                                    const offset = null !== (_sourceRect$sourceCel9 = sourceRect.sourceCellInfo._textLeftOffset) && void 0 !== _sourceRect$sourceCel9 ? _sourceRect$sourceCel9 : 0;
                                                    leftTextLeftOffset = offset + (sourceRect.x + sourceRect.w / 2) - (leftRect.x + leftRect.w / 2);
                                                    rightTextLeftOffset = offset + (sourceRect.x + sourceRect.w / 2) - (rightRect.x + rightRect.w / 2)
                                                } else if ("right" === (null === (_sourceRect$sourceCel10 = sourceRect.sourceCellInfo) || void 0 === _sourceRect$sourceCel10 ? void 0 : _sourceRect$sourceCel10.horizontalAlign)) {
                                                    leftTextLeftOffset = sourceRect.x + sourceRect.w - (leftRect.x + leftRect.w);
                                                    rightTextLeftOffset = sourceRect.x + sourceRect.w - (rightRect.x + rightRect.w)
                                                }
                                                leftRectTextOptions = _extends({}, {
                                                    _textLeftOffset: leftTextLeftOffset
                                                });
                                                rightRectTextOptions = _extends({}, {
                                                    _textLeftOffset: rightTextLeftOffset
                                                })
                                            } else {
                                                rightRectTextOptions = _extends({}, {
                                                    text: ""
                                                })
                                            }
                                        }
                                    }
                                    leftRect.sourceCellInfo = _extends({}, sourceRect.sourceCellInfo, {
                                        debugSourceCellInfo: sourceRect.sourceCellInfo
                                    }, leftRectTextOptions);
                                    rightRect.sourceCellInfo = _extends({}, sourceRect.sourceCellInfo, {
                                        debugSourceCellInfo: sourceRect.sourceCellInfo
                                    }, rightRectTextOptions)
                                }, _ref2 => {
                                    var _sourceRect$sourceCel11;
                                    let {
                                        sourceRect: sourceRect,
                                        topRect: topRect,
                                        bottomRect: bottomRect
                                    } = _ref2;
                                    let topRectTextOptions = {};
                                    let bottomRectTextOptions = {};
                                    const isTextNotEmpty = (null === (_sourceRect$sourceCel11 = sourceRect.sourceCellInfo.text) || void 0 === _sourceRect$sourceCel11 ? void 0 : _sourceRect$sourceCel11.length) > 0;
                                    if (isTextNotEmpty) {
                                        var _sourceRect$sourceCel12;
                                        const isTextHeightGreaterThanRect = jsPDFDocument.getTextDimensions(sourceRect.sourceCellInfo.text).h > topRect.h;
                                        const isTextTopAlignment = "top" === (null === (_sourceRect$sourceCel12 = sourceRect.sourceCellInfo) || void 0 === _sourceRect$sourceCel12 ? void 0 : _sourceRect$sourceCel12.verticalAlign);
                                        if (isTextHeightGreaterThanRect || !isTextTopAlignment) {
                                            var _sourceRect$sourceCel13, _sourceRect$sourceCel15, _sourceRect$sourceCel17;
                                            let topTextTopOffset;
                                            let bottomTextTopOffset;
                                            if ("top" === (null === (_sourceRect$sourceCel13 = sourceRect.sourceCellInfo) || void 0 === _sourceRect$sourceCel13 ? void 0 : _sourceRect$sourceCel13.verticalAlign)) {
                                                var _sourceRect$sourceCel14;
                                                topTextTopOffset = null !== (_sourceRect$sourceCel14 = sourceRect.sourceCellInfo._textTopOffset) && void 0 !== _sourceRect$sourceCel14 ? _sourceRect$sourceCel14 : 0;
                                                bottomTextTopOffset = topTextTopOffset - topRect.h
                                            } else if ("middle" === (null === (_sourceRect$sourceCel15 = sourceRect.sourceCellInfo) || void 0 === _sourceRect$sourceCel15 ? void 0 : _sourceRect$sourceCel15.verticalAlign)) {
                                                var _sourceRect$sourceCel16;
                                                const offset = null !== (_sourceRect$sourceCel16 = sourceRect.sourceCellInfo._textTopOffset) && void 0 !== _sourceRect$sourceCel16 ? _sourceRect$sourceCel16 : 0;
                                                topTextTopOffset = offset + (sourceRect.y + sourceRect.h / 2) - (topRect.y + topRect.h / 2);
                                                bottomTextTopOffset = offset + (sourceRect.y + sourceRect.h / 2) - (bottomRect.y + bottomRect.h / 2)
                                            } else if ("bottom" === (null === (_sourceRect$sourceCel17 = sourceRect.sourceCellInfo) || void 0 === _sourceRect$sourceCel17 ? void 0 : _sourceRect$sourceCel17.verticalAlign)) {
                                                topTextTopOffset = sourceRect.y + sourceRect.h - (topRect.y + topRect.h);
                                                bottomTextTopOffset = sourceRect.y + sourceRect.h - (bottomRect.y + bottomRect.h)
                                            }
                                            topRectTextOptions = _extends({}, {
                                                _textTopOffset: topTextTopOffset
                                            });
                                            bottomRectTextOptions = _extends({}, {
                                                _textTopOffset: bottomTextTopOffset
                                            })
                                        } else {
                                            bottomRectTextOptions = _extends({}, {
                                                text: ""
                                            })
                                        }
                                    }
                                    topRect.sourceCellInfo = _extends({}, sourceRect.sourceCellInfo, {
                                        debugSourceCellInfo: sourceRect.sourceCellInfo
                                    }, topRectTextOptions);
                                    bottomRect.sourceCellInfo = _extends({}, sourceRect.sourceCellInfo, {
                                        debugSourceCellInfo: sourceRect.sourceCellInfo
                                    }, bottomRectTextOptions)
                                });
                                if (rtlEnabled) {
                                    (0, _pdf_utils.applyRtl)(jsPDFDocument, rectsByPages, options)
                                }
                                rectsByPages.forEach((pdfCellsInfo, index) => {
                                    if (index > 0) {
                                        (0, _draw_utils.addNewPage)(jsPDFDocument)
                                    }(0, _draw_utils.drawCellsContent)(jsPDFDocument, options.customDrawCell, pdfCellsInfo, docStyles);
                                    (0, _draw_utils.drawCellsLines)(jsPDFDocument, pdfCellsInfo, docStyles);
                                    const isEmptyPdfCellsInfoSpecified = (0, _type.isDefined)(pdfCellsInfo) && 0 === pdfCellsInfo.length;
                                    if (isEmptyPdfCellsInfoSpecified) {
                                        const tableRect = (0, _row_utils.calculateTableSize)(jsPDFDocument, pdfCellsInfo, options);
                                        const baseStyle = (0, _rows_generator.getBaseTableStyle)();
                                        (0, _draw_utils.drawGridLines)(jsPDFDocument, tableRect, baseStyle, docStyles)
                                    }
                                });
                                (0, _draw_utils.setDocumentStyles)(jsPDFDocument, docStyles);
                                resolve()
                            }).always(() => {
                                if (initialLoadPanelEnabledOption) {
                                    component.option("loadPanel.enabled", initialLoadPanelEnabledOption)
                                }
                                if (loadPanel.enabled && (0, _window.hasWindow)()) {
                                    exportLoadPanel.dispose()
                                }
                            })
                        })
                    }
                };
                exports.Export = Export
            },
        41269:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/common/height_updater.js ***!
              \*************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.updateRowsAndCellsHeights = function(doc, rows) {
                    const rowsAdditionalHeights = function(doc, rows) {
                        const rowsAdditionalHeights = Array.from({
                            length: rows.length
                        }, () => 0);
                        const sortedRows = function(rows) {
                            const getMaxRowSpan = row => {
                                const spansArray = row.cells.map(cell => {
                                    var _cell$rowSpan2;
                                    return null !== (_cell$rowSpan2 = cell.rowSpan) && void 0 !== _cell$rowSpan2 ? _cell$rowSpan2 : 0
                                });
                                return Math.max(...spansArray)
                            };
                            return [...rows].sort((row1, row2) => {
                                const row1RowSpan = getMaxRowSpan(row1);
                                const row2RowSpan = getMaxRowSpan(row2);
                                if (row1RowSpan > row2RowSpan) {
                                    return 1
                                }
                                if (row2RowSpan > row1RowSpan) {
                                    return -1
                                }
                                return 0
                            })
                        }(rows);
                        sortedRows.forEach(row => {
                            const cellsWithRowSpan = row.cells.filter(cell => (0, _type.isDefined)(cell.rowSpan));
                            cellsWithRowSpan.forEach(cell => {
                                const targetRectWidth = (0, _pdf_utils.calculateTargetRectWidth)(cell.pdfCell._rect.w, cell.pdfCell.padding);
                                const textHeight = (0, _pdf_utils.calculateTextHeight)(doc, cell.pdfCell.text, cell.pdfCell.font, {
                                    wordWrapEnabled: cell.pdfCell.wordWrapEnabled,
                                    targetRectWidth: targetRectWidth
                                });
                                const cellHeight = textHeight + cell.pdfCell.padding.top + cell.pdfCell.padding.bottom;
                                const rowsCount = cell.rowSpan + 1;
                                const currentRowSpanRowsHeight = rows.slice(row.rowIndex, row.rowIndex + rowsCount).reduce((accumulator, rowInfo) => accumulator + rowInfo.height + rowsAdditionalHeights[rowInfo.rowIndex], 0);
                                if (cellHeight > currentRowSpanRowsHeight) {
                                    const delta = (cellHeight - currentRowSpanRowsHeight) / rowsCount;
                                    for (let spanIndex = row.rowIndex; spanIndex < row.rowIndex + rowsCount; spanIndex++) {
                                        rowsAdditionalHeights[spanIndex] += delta
                                    }
                                }
                            })
                        });
                        return rowsAdditionalHeights
                    }(doc, rows);
                    rows.forEach(row => {
                        row.height += rowsAdditionalHeights[row.rowIndex]
                    });
                    rows.forEach(row => {
                        row.cells.forEach(cell => {
                            var _cell$rowSpan;
                            const rowsCount = (null !== (_cell$rowSpan = cell.rowSpan) && void 0 !== _cell$rowSpan ? _cell$rowSpan : 0) + 1;
                            cell.pdfCell._rect.h = rows.slice(row.rowIndex, row.rowIndex + rowsCount).reduce((accumulator, rowInfo) => accumulator + rowInfo.height, 0)
                        })
                    })
                };
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _pdf_utils = __webpack_require__( /*! ./pdf_utils */ 79262)
            },
        30646:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/common/normalizeOptions.js ***!
              \***************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.normalizeBoundaryValue = normalizeBoundaryValue;
                exports.normalizeRowsInfo = function(rowsInfo) {
                    rowsInfo.forEach(row => {
                        row.cells.forEach(_ref => {
                            let {
                                pdfCell: pdfCell
                            } = _ref;
                            pdfCell.padding = normalizeBoundaryValue(pdfCell.padding)
                        })
                    })
                };
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);

                function normalizeBoundaryValue(value) {
                    var _value$top, _value$right, _value$bottom, _value$left;
                    if ((0, _type.isNumeric)(value)) {
                        return {
                            top: value,
                            right: value,
                            bottom: value,
                            left: value
                        }
                    }
                    return {
                        top: null !== (_value$top = null === value || void 0 === value ? void 0 : value.top) && void 0 !== _value$top ? _value$top : 0,
                        right: null !== (_value$right = null === value || void 0 === value ? void 0 : value.right) && void 0 !== _value$right ? _value$right : 0,
                        bottom: null !== (_value$bottom = null === value || void 0 === value ? void 0 : value.bottom) && void 0 !== _value$bottom ? _value$bottom : 0,
                        left: null !== (_value$left = null === value || void 0 === value ? void 0 : value.left) && void 0 !== _value$left ? _value$left : 0
                    }
                }
            },
        79262:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/common/pdf_utils.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.applyRtl = function(doc, rectsByPages, options) {
                    rectsByPages.forEach(pageRects => {
                        pageRects.forEach(pdfCell => {
                            const mirroredX = getPageWidth(doc) - (pdfCell._rect.x + pdfCell._rect.w);
                            const marginDiff = options.margin.left - options.margin.right;
                            pdfCell._rect.x = mirroredX + marginDiff
                        })
                    })
                };
                exports.applyWordWrap = function(doc, rowsInfo) {
                    rowsInfo.forEach(row => {
                        row.cells.forEach(_ref3 => {
                            let {
                                pdfCell: pdfCell
                            } = _ref3;
                            if ((0, _type.isDefined)(pdfCell.text)) {
                                const lines = getTextLines(doc, pdfCell.text, pdfCell.font, {
                                    wordWrapEnabled: pdfCell.wordWrapEnabled,
                                    targetRectWidth: calculateTargetRectWidth(pdfCell._rect.w, pdfCell.padding)
                                });
                                pdfCell.text = lines.join("\n")
                            }
                        })
                    })
                };
                exports.calculateRowHeight = function(doc, cells, columnWidths) {
                    if (cells.length !== columnWidths.length) {
                        throw "the cells count must be equal to the count of the columns"
                    }
                    let rowHeight = 0;
                    for (let cellIndex = 0; cellIndex < cells.length; cellIndex++) {
                        if ((0, _type.isDefined)(cells[cellIndex].rowSpan)) {
                            continue
                        }
                        const cellText = cells[cellIndex].pdfCell.text;
                        const cellPadding = cells[cellIndex].pdfCell.padding;
                        const font = cells[cellIndex].pdfCell.font;
                        const wordWrapEnabled = cells[cellIndex].pdfCell.wordWrapEnabled;
                        const columnWidth = columnWidths[cellIndex];
                        const targetRectWidth = calculateTargetRectWidth(columnWidth, cellPadding);
                        if ((0, _type.isDefined)(cellText)) {
                            const textHeight = "" !== cellText ? calculateTextHeight(doc, cellText, font, {
                                wordWrapEnabled: wordWrapEnabled,
                                targetRectWidth: targetRectWidth
                            }) : 0;
                            const cellHeight = textHeight + cellPadding.top + cellPadding.bottom;
                            if (rowHeight < cellHeight) {
                                rowHeight = cellHeight
                            }
                        }
                    }
                    return rowHeight
                };
                exports.calculateTargetRectWidth = calculateTargetRectWidth;
                exports.calculateTextHeight = calculateTextHeight;
                exports.getPageHeight = function(doc) {
                    return doc.internal.pageSize.getHeight()
                };
                exports.getPageWidth = getPageWidth;
                exports.getTextDimensions = getTextDimensions;
                exports.getTextLines = getTextLines;
                exports.toPdfUnit = function(doc, value) {
                    const coefficient = 1 / doc.internal.scaleFactor;
                    return value * coefficient
                };
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);

                function getPageWidth(doc) {
                    return doc.internal.pageSize.getWidth()
                }

                function getTextLines(doc, text, font, _ref) {
                    let {
                        wordWrapEnabled: wordWrapEnabled,
                        targetRectWidth: targetRectWidth
                    } = _ref;
                    if (wordWrapEnabled) {
                        const usedFont = doc.getFont(null === font || void 0 === font ? void 0 : font.name, null === font || void 0 === font ? void 0 : font.style);
                        return doc.splitTextToSize(text, targetRectWidth, {
                            fontSize: (null === font || void 0 === font ? void 0 : font.size) || doc.getFontSize(),
                            fontName: usedFont.fontName,
                            fontStyle: usedFont.fontStyle
                        })
                    }
                    let textWithoutLineBreak = text.split("\n").filter(ch => "" !== ch).join(" ");
                    if (getTextDimensions(doc, textWithoutLineBreak, font).w <= targetRectWidth) {
                        return [textWithoutLineBreak]
                    }
                    let textWidth = getTextDimensions(doc, textWithoutLineBreak + "...", font).w;
                    while (textWithoutLineBreak.length > 0 && textWidth > targetRectWidth) {
                        let symbolsCountToRemove = 0;
                        if (textWidth >= 2 * targetRectWidth) {
                            symbolsCountToRemove = textWithoutLineBreak.length / 2
                        }
                        if (symbolsCountToRemove < 1) {
                            symbolsCountToRemove = 1
                        }
                        textWithoutLineBreak = textWithoutLineBreak.substring(0, textWithoutLineBreak.length - symbolsCountToRemove);
                        textWidth = getTextDimensions(doc, textWithoutLineBreak + "...", font).w
                    }
                    return [textWithoutLineBreak + "..."]
                }

                function calculateTargetRectWidth(columnWidth, padding) {
                    const width = columnWidth - (padding.left + padding.right);
                    return width >= 0 ? width : 0
                }

                function getTextDimensions(doc, text, font) {
                    return doc.getTextDimensions(text, {
                        font: doc.getFont(null === font || void 0 === font ? void 0 : font.name, null === font || void 0 === font ? void 0 : font.style),
                        fontSize: (null === font || void 0 === font ? void 0 : font.size) || doc.getFontSize()
                    })
                }

                function calculateTextHeight(doc, text, font, _ref2) {
                    let {
                        wordWrapEnabled: wordWrapEnabled,
                        targetRectWidth: targetRectWidth
                    } = _ref2;
                    const heightOfOneLine = getTextDimensions(doc, text, font).h;
                    const linesCount = getTextLines(doc, text, font, {
                        wordWrapEnabled: wordWrapEnabled,
                        targetRectWidth: targetRectWidth
                    }).length;
                    return heightOfOneLine * linesCount * doc.getLineHeightFactor()
                }
            },
        65322:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/common/row_utils.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.applyBordersConfig = function(rows) {
                    for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {
                        const cells = rows[rowIndex].cells;
                        for (let columnIndex = 0; columnIndex < cells.length; columnIndex++) {
                            const pdfCell = cells[columnIndex].pdfCell;
                            const leftPdfCell = columnIndex >= 1 ? cells[columnIndex - 1].pdfCell : null;
                            const topPdfCell = rowIndex >= 1 ? rows[rowIndex - 1].cells[columnIndex].pdfCell : null;
                            if (false === pdfCell.drawLeftBorder && !(0, _type.isDefined)(cells[columnIndex].colSpan)) {
                                if ((0, _type.isDefined)(leftPdfCell)) {
                                    leftPdfCell.drawRightBorder = false
                                }
                            } else if (!(0, _type.isDefined)(pdfCell.drawLeftBorder)) {
                                if ((0, _type.isDefined)(leftPdfCell) && false === leftPdfCell.drawRightBorder) {
                                    pdfCell.drawLeftBorder = false
                                }
                            }
                            if (false === pdfCell.drawTopBorder) {
                                if ((0, _type.isDefined)(topPdfCell)) {
                                    topPdfCell.drawBottomBorder = false
                                }
                            } else if (!(0, _type.isDefined)(pdfCell.drawTopBorder)) {
                                if ((0, _type.isDefined)(topPdfCell) && false === topPdfCell.drawBottomBorder) {
                                    pdfCell.drawTopBorder = false
                                }
                            }
                        }
                    }
                };
                exports.applyColSpans = function(rows) {
                    for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {
                        const row = rows[rowIndex];
                        for (let cellIndex = 0; cellIndex < row.cells.length; cellIndex++) {
                            const cell = row.cells[cellIndex];
                            if ((0, _type.isDefined)(cell.colSpan) && !(0, _type.isDefined)(cell.pdfCell.isMerged)) {
                                for (let spanIndex = 1; spanIndex <= cell.colSpan; spanIndex++) {
                                    const mergedCell = rows[rowIndex].cells[cellIndex + spanIndex];
                                    cell.pdfCell._rect.w += mergedCell.pdfCell._rect.w;
                                    mergedCell.pdfCell._rect.w = 0;
                                    mergedCell.pdfCell.isMerged = true
                                }
                            }
                        }
                    }
                };
                exports.applyRowSpans = function(rows) {
                    for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {
                        const row = rows[rowIndex];
                        for (let cellIndex = 0; cellIndex < row.cells.length; cellIndex++) {
                            const cell = row.cells[cellIndex];
                            if ((0, _type.isDefined)(cell.rowSpan) && !(0, _type.isDefined)(cell.pdfCell.isMerged)) {
                                for (let spanIndex = 1; spanIndex <= cell.rowSpan; spanIndex++) {
                                    const mergedCell = rows[rowIndex + spanIndex].cells[cellIndex];
                                    cell.pdfCell._rect.h += mergedCell.pdfCell._rect.h;
                                    mergedCell.pdfCell._rect.h = 0;
                                    mergedCell.pdfCell.isMerged = true
                                }
                            }
                        }
                    }
                };
                exports.calculateCoordinates = function(doc, rows, options) {
                    var _topLeft$y;
                    const topLeft = null === options || void 0 === options ? void 0 : options.topLeft;
                    const margin = null === options || void 0 === options ? void 0 : options.margin;
                    let y = (null !== (_topLeft$y = null === topLeft || void 0 === topLeft ? void 0 : topLeft.y) && void 0 !== _topLeft$y ? _topLeft$y : 0) + margin.top;
                    rows.forEach(row => {
                        var _topLeft$x;
                        let x = (null !== (_topLeft$x = null === topLeft || void 0 === topLeft ? void 0 : topLeft.x) && void 0 !== _topLeft$x ? _topLeft$x : 0) + margin.left;
                        const intend = row.indentLevel * options.indent;
                        row.cells.forEach(cell => {
                            cell.pdfCell._rect.x = x + intend;
                            cell.pdfCell._rect.y = y;
                            x += cell.pdfCell._rect.w
                        });
                        y += row.height
                    })
                };
                exports.calculateHeights = function(doc, rows, options) {
                    rows.forEach(row => {
                        const pdfCells = row.cells.map(c => c.pdfCell);
                        let customerHeight;
                        if (options.onRowExporting) {
                            const args = {
                                rowCells: pdfCells
                            };
                            options.onRowExporting(args);
                            if ((0, _type.isDefined)(args.rowHeight)) {
                                customerHeight = args.rowHeight
                            }
                        }
                        row.height = (0, _type.isDefined)(customerHeight) ? customerHeight : (0, _pdf_utils.calculateRowHeight)(doc, row.cells, pdfCells.map(c => c._rect.w));
                        pdfCells.forEach(cell => {
                            cell._rect.h = row.height
                        })
                    })
                };
                exports.calculateTableSize = function(doc, cells, options) {
                    var _ref2, _leftPos, _options$topLeft, _ref3, _topPos, _options$topLeft2;
                    let leftPos;
                    let topPos;
                    let rightPos;
                    let bottomPos;
                    cells.forEach(cell => {
                        if (!(0, _type.isDefined)(leftPos) || leftPos > cell._rect.x) {
                            leftPos = cell._rect.x
                        }
                        if (!(0, _type.isDefined)(topPos) || topPos > cell._rect.y) {
                            topPos = cell._rect.y
                        }
                        if (!(0, _type.isDefined)(rightPos) || rightPos < cell._rect.x + cell._rect.w) {
                            rightPos = cell._rect.x + cell._rect.w
                        }
                        if (!(0, _type.isDefined)(bottomPos) || bottomPos < cell._rect.y + cell._rect.h) {
                            bottomPos = cell._rect.y + cell._rect.h
                        }
                    });
                    const x = null !== (_ref2 = null !== (_leftPos = leftPos) && void 0 !== _leftPos ? _leftPos : null === options || void 0 === options ? void 0 : null === (_options$topLeft = options.topLeft) || void 0 === _options$topLeft ? void 0 : _options$topLeft.x) && void 0 !== _ref2 ? _ref2 : 0;
                    const y = null !== (_ref3 = null !== (_topPos = topPos) && void 0 !== _topPos ? _topPos : null === options || void 0 === options ? void 0 : null === (_options$topLeft2 = options.topLeft) || void 0 === _options$topLeft2 ? void 0 : _options$topLeft2.y) && void 0 !== _ref3 ? _ref3 : 0;
                    const w = (0, _type.isDefined)(rightPos) ? rightPos - x : 0;
                    const h = (0, _type.isDefined)(bottomPos) ? bottomPos - y : 0;
                    return {
                        x: x,
                        y: y,
                        w: w,
                        h: h
                    }
                };
                exports.initializeCellsWidth = function(doc, dataProvider, rows, options) {
                    const columnWidths = function(doc, dataProvider, topLeftX, margin, customerColumnWidths) {
                        const resultWidths = dataProvider.getColumnsWidths().map(width => (0, _pdf_utils.toPdfUnit)(doc, null !== width && void 0 !== width ? width : 150));
                        const totalAutoColumnsWidth = resultWidths.filter((width, index) => !(0, _type.isDefined)(customerColumnWidths[index])).reduce(getSum, 0);
                        const totalCustomerColumnsWidth = customerColumnWidths.filter(width => (0, _type.isNumeric)(width)).reduce(getSum, 0);
                        const availablePageWidth = function(doc, topLeftX, margin) {
                            return (0, _pdf_utils.getPageWidth)(doc) - topLeftX - margin.left - margin.right
                        }(doc, topLeftX, margin);
                        const ratio = totalCustomerColumnsWidth < availablePageWidth ? (availablePageWidth - totalCustomerColumnsWidth) / totalAutoColumnsWidth : 1;
                        return resultWidths.map((width, index) => {
                            var _customerColumnWidths;
                            return null !== (_customerColumnWidths = customerColumnWidths[index]) && void 0 !== _customerColumnWidths ? _customerColumnWidths : width * ratio
                        })
                    }(doc, dataProvider, options.topLeft.x, options.margin, options.columnWidths);
                    rows.forEach(row => {
                        row.cells.forEach((_ref, index) => {
                            let {
                                gridCell: gridCell,
                                pdfCell: pdfCell
                            } = _ref;
                            pdfCell._rect.w = columnWidths[index]
                        })
                    })
                };
                exports.resizeFirstColumnByIndentLevel = function(rows, options) {
                    rows.forEach(row => {
                        row.cells[0].pdfCell._rect.w -= row.indentLevel * options.indent
                    })
                };
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _pdf_utils = __webpack_require__( /*! ./pdf_utils */ 79262);
                const getSum = (a, b) => a + b
            },
        27504:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/common/rows_generator.js ***!
              \*************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.generateRowsInfo = function(doc, dataProvider, dataGrid, headerBackgroundColor) {
                    const result = [];
                    const rowsCount = dataProvider.getRowsCount();
                    const wordWrapEnabled = !!dataGrid.option("wordWrapEnabled");
                    const rtlEnabled = !!dataGrid.option("rtlEnabled");
                    const columns = dataProvider.getColumns();
                    const styles = dataProvider.getStyles();
                    for (let rowIndex = 0; rowIndex < rowsCount; rowIndex++) {
                        const rowType = dataProvider.getCellData(rowIndex, 0, true).cellSourceData.rowType;
                        let indentLevel = "header" !== rowType ? dataProvider.getGroupLevel(rowIndex) : 0;
                        const previousRow = result[rowIndex - 1];
                        if ("groupFooter" === rowType && "groupFooter" === (null === previousRow || void 0 === previousRow ? void 0 : previousRow.rowType)) {
                            indentLevel = previousRow.indentLevel - 1
                        }
                        result.push({
                            rowType: rowType,
                            indentLevel: indentLevel,
                            cells: generateRowCells({
                                doc: doc,
                                dataProvider: dataProvider,
                                rowIndex: rowIndex,
                                wordWrapEnabled: wordWrapEnabled,
                                columns: columns,
                                styles: styles,
                                rowType: rowType,
                                backgroundColor: "header" === rowType ? headerBackgroundColor : void 0,
                                rtlEnabled: rtlEnabled
                            }),
                            rowIndex: rowIndex
                        })
                    }
                    return result
                };
                exports.getBaseTableStyle = function() {
                    return defaultStyles.base
                };
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../localization/date */ 91500));
                var _number = _interopRequireDefault(__webpack_require__( /*! ../../../localization/number */ 18016));
                var _pdf_utils = __webpack_require__( /*! ./pdf_utils */ 79262);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const defaultStyles = {
                    base: {
                        font: {
                            size: 10
                        },
                        borderWidth: .5,
                        borderColor: "#979797"
                    },
                    header: {
                        textColor: "#979797"
                    },
                    group: {},
                    data: {},
                    groupFooter: {},
                    totalFooter: {}
                };

                function generateRowCells(_ref) {
                    let {
                        doc: doc,
                        dataProvider: dataProvider,
                        rowIndex: rowIndex,
                        wordWrapEnabled: wordWrapEnabled,
                        columns: columns,
                        styles: styles,
                        rowType: rowType,
                        backgroundColor: backgroundColor,
                        rtlEnabled: rtlEnabled
                    } = _ref;
                    const result = [];
                    for (let cellIndex = 0; cellIndex < columns.length; cellIndex++) {
                        var _style$alignment;
                        const cellData = dataProvider.getCellData(rowIndex, cellIndex, true);
                        const cellStyle = styles[dataProvider.getStyleId(rowIndex, cellIndex)];
                        const style = getPdfCellStyle(columns[cellIndex], rowType, cellStyle);
                        const defaultAlignment = rtlEnabled ? "right" : "left";
                        const paddingValue = (0, _pdf_utils.toPdfUnit)(doc, 5);
                        const pdfCell = {
                            text: getFormattedValue(cellData.value, cellStyle.format),
                            verticalAlign: "middle",
                            horizontalAlign: null !== (_style$alignment = style.alignment) && void 0 !== _style$alignment ? _style$alignment : defaultAlignment,
                            wordWrapEnabled: wordWrapEnabled,
                            backgroundColor: backgroundColor,
                            padding: {
                                top: paddingValue,
                                right: paddingValue,
                                bottom: paddingValue,
                                left: paddingValue
                            },
                            _rect: {},
                            _internalTextOptions: {}
                        };
                        if (rtlEnabled) {
                            pdfCell._internalTextOptions.isInputVisual = false;
                            pdfCell._internalTextOptions.isOutputVisual = true;
                            pdfCell._internalTextOptions.isInputRtl = true;
                            pdfCell._internalTextOptions.isOutputRtl = false
                        }
                        const cellInfo = {
                            gridCell: cellData.cellSourceData,
                            pdfCell: _extends({}, pdfCell, style)
                        };
                        if ("header" === rowType) {
                            const cellMerging = dataProvider.getCellMerging(rowIndex, cellIndex);
                            if (cellMerging && cellMerging.rowspan > 0) {
                                cellInfo.rowSpan = cellMerging.rowspan
                            }
                            if (cellMerging && cellMerging.colspan > 0) {
                                cellInfo.colSpan = cellMerging.colspan
                            }
                        } else if ("group" === rowType) {
                            const drawLeftBorderField = rtlEnabled ? "drawRightBorder" : "drawLeftBorder";
                            const drawRightBorderField = rtlEnabled ? "drawLeftBorder" : "drawRightBorder";
                            cellInfo.pdfCell[drawLeftBorderField] = 0 === cellIndex;
                            cellInfo.pdfCell[drawRightBorderField] = cellIndex === columns.length - 1;
                            if (cellIndex > 0) {
                                const isEmptyCellsExceptFirst = result.slice(1).reduce((accumulate, cellInfo) => accumulate && !(0, _type.isDefined)(cellInfo.pdfCell.text), true);
                                if (!(0, _type.isDefined)(cellInfo.pdfCell.text) && isEmptyCellsExceptFirst) {
                                    result[0].pdfCell[drawRightBorderField] = true;
                                    for (let i = 0; i < result.length; i++) {
                                        result[i].colSpan = result.length
                                    }
                                    cellInfo.colSpan = result.length
                                }
                            }
                        }
                        result.push(cellInfo)
                    }
                    return result
                }

                function getPdfCellStyle(column, rowType, cellStyle) {
                    const styles = _extends({}, defaultStyles.base, defaultStyles[rowType]);
                    const alignment = "header" === rowType ? column.alignment : cellStyle.alignment;
                    if (alignment) {
                        styles.alignment = alignment
                    }
                    if (cellStyle.bold && "header" !== rowType) {
                        styles.font = _extends({}, styles.font, {
                            style: "bold"
                        })
                    }
                    return styles
                }

                function getFormattedValue(value, format) {
                    if ((0, _type.isDefined)(format)) {
                        if ((0, _type.isDate)(value)) {
                            return _date.default.format(value, format)
                        }
                        if ((0, _type.isNumeric)(value)) {
                            return _number.default.format(value, format)
                        }
                    }
                    return null === value || void 0 === value ? void 0 : value.toString()
                }
            },
        72666:
            /*!************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/common/rows_spliting_utils/create_on_split_multipage_row.js ***!
              \************************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.createOnSplitMultiPageRow = void 0;
                var _pdf_utils = __webpack_require__( /*! ../pdf_utils */ 79262);

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                function createMultiCellRect(rect, text, marginTop) {
                    return _extends({}, rect, {
                        sourceCellInfo: _extends({}, rect.sourceCellInfo, {
                            text: text
                        }),
                        y: marginTop
                    })
                }
                exports.createOnSplitMultiPageRow = (doc, options, headerHeight, maxBottomRight) => (isFirstPage, pageRects) => {
                    const currentPageRects = [];
                    const nextPageRects = [];
                    let maxCurrentPageHeight = 0;
                    let maxNextPageHeight = 0;
                    pageRects.forEach(rect => {
                        const {
                            w: w,
                            sourceCellInfo: sourceCellInfo
                        } = rect;
                        const additionalHeight = !isFirstPage && options.repeatHeaders ? headerHeight : headerHeight + options.topLeft.y;
                        const heightOfOneLine = (0, _pdf_utils.getTextDimensions)(doc, sourceCellInfo.text, sourceCellInfo.font).h;
                        const paddingHeight = sourceCellInfo.padding.top + sourceCellInfo.padding.bottom;
                        const fullPageHeight = maxBottomRight.y - additionalHeight - paddingHeight - options.margin.top;
                        const possibleLinesCount = Math.floor(fullPageHeight / (heightOfOneLine * doc.getLineHeightFactor()));
                        const allLines = (0, _pdf_utils.getTextLines)(doc, sourceCellInfo.text, sourceCellInfo.font, {
                            wordWrapEnabled: sourceCellInfo.wordWrapEnabled,
                            targetRectWidth: w
                        });
                        if (possibleLinesCount < allLines.length) {
                            const currentPageText = allLines.slice(0, possibleLinesCount).join("\n");
                            const currentPageHeight = (0, _pdf_utils.calculateTextHeight)(doc, currentPageText, sourceCellInfo.font, {
                                wordWrapEnabled: sourceCellInfo.wordWrapEnabled,
                                targetRectWidth: w
                            });
                            maxCurrentPageHeight = Math.max(maxCurrentPageHeight, currentPageHeight + paddingHeight);
                            maxNextPageHeight = rect.h - currentPageHeight;
                            currentPageRects.push(createMultiCellRect(rect, currentPageText, options.margin.top));
                            nextPageRects.push(createMultiCellRect(rect, allLines.slice(possibleLinesCount).join("\n"), options.margin.top))
                        } else {
                            const currentPageHeight = (0, _pdf_utils.calculateTextHeight)(doc, sourceCellInfo.text, sourceCellInfo.font, {
                                wordWrapEnabled: sourceCellInfo.wordWrapEnabled,
                                targetRectWidth: w
                            });
                            maxCurrentPageHeight = Math.max(maxCurrentPageHeight, currentPageHeight + paddingHeight);
                            maxNextPageHeight = Math.max(maxNextPageHeight, currentPageHeight + paddingHeight);
                            currentPageRects.push(createMultiCellRect(rect, sourceCellInfo.text, options.margin.top));
                            nextPageRects.push(createMultiCellRect(rect, "", options.margin.top))
                        }
                    });
                    currentPageRects.forEach(rect => rect.h = maxCurrentPageHeight);
                    nextPageRects.forEach(rect => rect.h = maxNextPageHeight);
                    return [currentPageRects, nextPageRects]
                }
            },
        10830:
            /*!******************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/common/rows_spliting_utils/get_multipage_row_pages.js ***!
              \******************************************************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.getMultiPageRowPages = exports.checkPageContainsOnlyHeader = void 0;

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const isHeader = rect => "header" === (null === rect || void 0 === rect ? void 0 : rect.sourceCellInfo.gridCell.rowType);
                exports.checkPageContainsOnlyHeader = (pageRects, isFirstPage) => isFirstPage && isHeader(pageRects[pageRects.length - 1]);
                exports.getMultiPageRowPages = (currentPageRects, rectsToSplit, isCurrentPageContainsOnlyHeader, splitMultiPageRowFunc, checkIsFitToPageFunc) => {
                    if (!splitMultiPageRowFunc) {
                        return []
                    }
                    const currentPageLastRect = currentPageRects[currentPageRects.length - 1];
                    const nextPageFirstRect = rectsToSplit[currentPageRects.length];
                    if (!nextPageFirstRect || isHeader(nextPageFirstRect)) {
                        return []
                    }
                    const isRectsFitsToPage = checkIsFitToPageFunc(isCurrentPageContainsOnlyHeader, nextPageFirstRect.h);
                    if (isRectsFitsToPage && !isCurrentPageContainsOnlyHeader) {
                        return []
                    }
                    const rectsToPatch = rectsToSplit.filter(_ref => {
                        let {
                            y: y
                        } = _ref;
                        return y === nextPageFirstRect.y
                    });
                    const firstRectYAdjustment = currentPageLastRect.y + currentPageLastRect.h;
                    const [multiPageRowPages, remainPageRects] = ((rectsToPatch, isCurrentPageContainsOnlyHeader, firstRectYAdjustment, splitMultiPageRowFunc, checkIsFitToPageFunc) => {
                        let [newPageRects, remainPageRects] = splitMultiPageRowFunc(isCurrentPageContainsOnlyHeader, rectsToPatch);
                        const newPageRectsArray = [isCurrentPageContainsOnlyHeader ? newPageRects.map(rect => _extends({}, rect, {
                            y: firstRectYAdjustment
                        })) : newPageRects];
                        while (!checkIsFitToPageFunc(false, remainPageRects[0].h)) {
                            [newPageRects, remainPageRects] = splitMultiPageRowFunc(false, remainPageRects);
                            newPageRectsArray.push(newPageRects)
                        }
                        return [newPageRectsArray, remainPageRects]
                    })(rectsToPatch, isCurrentPageContainsOnlyHeader, firstRectYAdjustment, splitMultiPageRowFunc, checkIsFitToPageFunc);
                    ((rectsToSplit, rectsToPatch, remainPageRects) => {
                        rectsToPatch.forEach((rect, rectIndex) => {
                            rect.sourceCellInfo.text = remainPageRects[rectIndex].sourceCellInfo.text;
                            rect.h = remainPageRects[rectIndex].h
                        });
                        const untouchedRowIdx = rectsToSplit.indexOf(rectsToPatch[rectsToPatch.length - 1]) + 1;
                        if (untouchedRowIdx >= rectsToSplit.length) {
                            return
                        }
                        const delta = rectsToSplit[untouchedRowIdx].y - (rectsToPatch[0].y + remainPageRects[0].h);
                        for (let idx = untouchedRowIdx; idx < rectsToSplit.length; idx++) {
                            rectsToSplit[idx].y = rectsToSplit[idx].y - delta
                        }
                    })(rectsToSplit, rectsToPatch, remainPageRects);
                    return multiPageRowPages
                }
            },
        22775:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/common/rows_splitting.js ***!
              \*************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.splitByPages = function(doc, rowsInfo, options, onSeparateRectHorizontally, onSeparateRectVertically) {
                    if (0 === rowsInfo.length) {
                        return [
                            []
                        ]
                    }
                    const maxBottomRight = {
                        x: (0, _pdf_utils.getPageWidth)(doc) - options.margin.right,
                        y: (0, _pdf_utils.getPageHeight)(doc) - options.margin.bottom
                    };
                    const headerRows = rowsInfo.filter(r => "header" === r.rowType);
                    const headerHeight = headerRows.reduce((accumulator, row) => accumulator + row.height, 0);
                    const verticallyPages = splitRectsByPages(convertToCellsArray(rowsInfo), options.margin.top, "y", "h", (isFirstPage, currentCoordinate) => {
                        const additionalHeight = !isFirstPage && options.repeatHeaders ? headerHeight : 0;
                        return (0, _draw_utils.roundToThreeDecimals)(currentCoordinate + additionalHeight) <= (0, _draw_utils.roundToThreeDecimals)(maxBottomRight.y)
                    }, (rect, currentPageMaxRectCoordinate, currentPageRects, rectsToSplit) => {
                        const args = {
                            sourceRect: rect,
                            topRect: {
                                x: rect.x,
                                y: rect.y,
                                w: rect.w,
                                h: currentPageMaxRectCoordinate - rect.y
                            },
                            bottomRect: {
                                x: rect.x,
                                y: currentPageMaxRectCoordinate,
                                w: rect.w,
                                h: rect.h - (currentPageMaxRectCoordinate - rect.y)
                            }
                        };
                        onSeparateRectVertically(args);
                        currentPageRects.push(args.topRect);
                        rectsToSplit.push(args.bottomRect)
                    }, (0, _create_on_split_multipage_row.createOnSplitMultiPageRow)(doc, options, headerHeight, maxBottomRight));
                    if (options.repeatHeaders) {
                        for (let i = 1; i < verticallyPages.length; i++) {
                            verticallyPages[i].forEach(rect => rect.y += headerHeight);
                            const headerCells = convertToCellsArray(headerRows);
                            headerCells.forEach(cell => {
                                cell.y -= options.topLeft.y
                            });
                            verticallyPages[i] = [...headerCells, ...verticallyPages[i]]
                        }
                    }
                    let pageIndex = 0;
                    while (pageIndex < verticallyPages.length) {
                        const horizontallyPages = splitRectsByPages(verticallyPages[pageIndex], options.margin.left, "x", "w", (pagesLength, currentCoordinate) => (0, _draw_utils.roundToThreeDecimals)(currentCoordinate) <= (0, _draw_utils.roundToThreeDecimals)(maxBottomRight.x), (rect, currentPageMaxRectCoordinate, currentPageRects, rectsToSplit) => {
                            const args = {
                                sourceRect: rect,
                                leftRect: {
                                    x: rect.x,
                                    y: rect.y,
                                    w: currentPageMaxRectCoordinate - rect.x,
                                    h: rect.h
                                },
                                rightRect: {
                                    x: currentPageMaxRectCoordinate,
                                    y: rect.y,
                                    w: rect.w - (currentPageMaxRectCoordinate - rect.x),
                                    h: rect.h
                                }
                            };
                            onSeparateRectHorizontally(args);
                            currentPageRects.push(args.leftRect);
                            rectsToSplit.push(args.rightRect)
                        });
                        if (horizontallyPages.length > 1) {
                            verticallyPages.splice(pageIndex, 1, ...horizontallyPages);
                            pageIndex += horizontallyPages.length
                        } else {
                            pageIndex += 1
                        }
                    }
                    return verticallyPages.map(rects => rects.map(rect => _extends({}, rect.sourceCellInfo, {
                        _rect: rect
                    })))
                };
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _pdf_utils = __webpack_require__( /*! ./pdf_utils */ 79262);
                var _draw_utils = __webpack_require__( /*! ./draw_utils */ 66867);
                var _get_multipage_row_pages = __webpack_require__( /*! ./rows_spliting_utils/get_multipage_row_pages */ 10830);
                var _create_on_split_multipage_row = __webpack_require__( /*! ./rows_spliting_utils/create_on_split_multipage_row */ 72666);

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                function convertToCellsArray(rows) {
                    return [].concat.apply([], rows.map(rowInfo => rowInfo.cells.filter(cell => !(0, _type.isDefined)(cell.pdfCell.isMerged)).map(cellInfo => _extends({}, cellInfo.pdfCell._rect, {
                        sourceCellInfo: _extends({}, cellInfo.pdfCell, {
                            gridCell: cellInfo.gridCell
                        })
                    }))))
                }

                function splitRectsByPages(rects, marginValue, coordinate, dimension, isFitToPage, onSeparateCallback, onSplitMultiPageRow) {
                    const pages = [];
                    const rectsToSplit = [...rects];
                    const isFitToPageForMultiPageRow = (isFirstPage, rectHeight) => isFitToPage(isFirstPage, rectHeight + marginValue);
                    while (rectsToSplit.length > 0) {
                        let currentPageMaxRectCoordinate = 0;
                        const currentPageRects = rectsToSplit.filter(rect => {
                            const currentRectCoordinate = rect[coordinate] + rect[dimension];
                            if (isFitToPage(0 === pages.length, currentRectCoordinate)) {
                                if (currentPageMaxRectCoordinate <= currentRectCoordinate) {
                                    currentPageMaxRectCoordinate = currentRectCoordinate
                                }
                                return true
                            } else {
                                return false
                            }
                        });
                        const isCurrentPageContainsOnlyHeader = (0, _get_multipage_row_pages.checkPageContainsOnlyHeader)(currentPageRects, 0 === pages.length);
                        const multiPageRowPages = (0, _get_multipage_row_pages.getMultiPageRowPages)(currentPageRects, rectsToSplit, isCurrentPageContainsOnlyHeader, onSplitMultiPageRow, isFitToPageForMultiPageRow);
                        const rectsToSeparate = rectsToSplit.filter(rect => {
                            const currentRectLeft = rect[coordinate];
                            const currentRectRight = rect[coordinate] + rect[dimension];
                            return currentPageMaxRectCoordinate - currentRectLeft > .001 && currentRectRight - currentPageMaxRectCoordinate > .001
                        });
                        rectsToSeparate.forEach(rect => {
                            onSeparateCallback(rect, currentPageMaxRectCoordinate, currentPageRects, rectsToSplit);
                            const index = rectsToSplit.indexOf(rect);
                            if (-1 !== index) {
                                rectsToSplit.splice(index, 1)
                            }
                        });
                        currentPageRects.forEach(rect => {
                            const index = rectsToSplit.indexOf(rect);
                            if (-1 !== index) {
                                rectsToSplit.splice(index, 1)
                            }
                        });
                        rectsToSplit.forEach(rect => {
                            rect[coordinate] = (0, _type.isDefined)(currentPageMaxRectCoordinate) ? rect[coordinate] - currentPageMaxRectCoordinate + marginValue : rect[coordinate]
                        });
                        const firstPageContainsHeaderAndMultiPageRow = isCurrentPageContainsOnlyHeader && multiPageRowPages.length > 0;
                        if (firstPageContainsHeaderAndMultiPageRow) {
                            const [firstPage, ...restOfPages] = multiPageRowPages;
                            pages.push([...currentPageRects, ...firstPage]);
                            pages.push(...restOfPages)
                        } else if (currentPageRects.length > 0) {
                            pages.push(currentPageRects);
                            pages.push(...multiPageRowPages)
                        } else if (multiPageRowPages.length > 0) {
                            pages.push(...multiPageRowPages);
                            pages.push(rectsToSplit)
                        } else {
                            pages.push(rectsToSplit);
                            break
                        }
                    }
                    return pages
                }
            },
        654:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/export_data_grid.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.exportDataGrid = function(options) {
                    return _export.Export.export(function(options) {
                        if (!((0, _type.isDefined)(options) && (0, _type.isObject)(options))) {
                            throw Error('The "exportDataGrid" method requires a configuration object.')
                        }
                        if (!((0, _type.isDefined)(options.component) && (0, _type.isObject)(options.component) && "dxDataGrid" === options.component.NAME)) {
                            throw Error('The "component" field must contain a DataGrid instance.')
                        }
                        if (!((0, _type.isDefined)(options.jsPDFDocument) && (0, _type.isObject)(options.jsPDFDocument))) {
                            throw Error('The "jsPDFDocument" field must contain a jsPDF instance.')
                        }
                        if ((0, _type.isDefined)(options.autoTableOptions)) {
                            _errors.default.log("W0001", "Export", "autoTableOptions", "22.1", "You can migrate from exporting to PDF with the AutoTable plugin to a new export system. See the following topic for more information: ".concat("https://supportcenter.devexpress.com/ticket/details/t1077554"))
                        }
                        return _export.Export.getFullOptions(options)
                    }(options))
                };
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _errors = (obj = __webpack_require__( /*! ../../core/errors */ 17381), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _export = __webpack_require__( /*! ./common/export */ 17195)
            },
        29982:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/jspdf/export_gantt.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.exportGantt = function(options) {
                    const component = options.component;
                    return null === component || void 0 === component ? void 0 : component.exportToPdf(options)
                }
            },
        30855:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/pdf_creator.js ***!
              \*********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getData = function(data, options) {
                    return _image_creator.imageCreator.getImageData(data, (0, _extend.extend)({}, options, {
                        format: "JPEG"
                    })).then(imageString => {
                        const binaryData = function(imageString, options, curDate) {
                            const margin = 2 * (options.margin || 0);
                            let {
                                width: width,
                                height: height
                            } = (0, _image_creator.calcScaledInfo)(options.width, options.height);
                            width += margin;
                            height += margin;
                            const widthPt = (.75 * width).toFixed(2);
                            const heightPt = (.75 * height).toFixed(2);
                            const flooredWidth = Math.floor(width);
                            const flooredHeight = Math.floor(height);
                            const mainPage = "%PDF-1.3\r\n2 0 obj\r\n<</ProcSet[/PDF/ImageB/ImageC/ImageI]/XObject<</I0 5 0 R>>>>\r\nendobj\r\n4 0 obj\r\n<</Type/Pages/Kids[1 0 R]/Count 1>>\r\nendobj\r\n7 0 obj\r\n<</OpenAction[1 0 R /FitH null]/Type/Catalog/Pages 4 0 R/PageLayout/OneColumn>>\r\nendobj\r\n1 0 obj\r\n<</Type/Page/Resources 2 0 R/MediaBox[0 0 _width_ _height_]/Contents 3 0 R/Parent 4 0 R>>\r\nendobj\r\n".replace("_width_", widthPt).replace("_height_", heightPt);
                            const content = "3 0 obj\r\n<</Length 52>>stream\r\n0.20 w\n0 G\nq _width_ 0 0 _height_ 0.00 0.00 cm /I0 Do Q\r\nendstream\r\nendobj\r\n".replace("_width_", widthPt).replace("_height_", heightPt);
                            const info = "6 0 obj\r\n<</CreationDate _date_/Producer(DevExtreme _version_)>>\r\nendobj\r\n".replace("_date_", curDate).replace("_version_", _version.version);
                            const image = "5 0 obj\r\n<</Type/XObject/Subtype/Image/Width _width_/Height _height_/ColorSpace/DeviceRGB/BitsPerComponent 8/Filter/DCTDecode/Length _length_>>stream\r\n".replace("_width_", flooredWidth).replace("_height_", flooredHeight).replace("_length_", imageString.length) + imageString + "\r\nendstream\r\nendobj\r\n";
                            const xref = (mainPageLength = mainPage.length, contentLength = content.length, infoLength = info.length, "xref\r\n0 8\r\n0000000000 65535 f\r\n0000000241 00000 n\r\n0000000010 00000 n\r\n_main_ 00000 n\r\n0000000089 00000 n\r\n_image_ 00000 n\r\n_info_ 00000 n\r\n0000000143 00000 n\r\n".replace("_main_", pad(mainPageLength + "", 10)).replace("_info_", pad(mainPageLength + contentLength + "", 10)).replace("_image_", pad(mainPageLength + contentLength + infoLength + "", 10)));
                            var mainPageLength, contentLength, infoLength;
                            const mainContent = mainPage + content + info + image;
                            const trailer = "trailer\r\n<<\r\n/Size 8\r\n/Root 7 0 R\r\n/Info 6 0 R\r\n>>\r\nstartxref\r\n_length_\r\n%%EOF".replace("_length_", mainContent.length);
                            return mainContent + xref + trailer
                        }(imageString, options, function(date) {
                            const dateUnits = [date.getUTCFullYear(), getTwoDigitValue(date.getUTCMonth()), getTwoDigitValue(date.getUTCDate()), getTwoDigitValue(date.getUTCHours()), getTwoDigitValue(date.getUTCMinutes()), getTwoDigitValue(date.getUTCSeconds())];
                            return "(D:".concat(dateUnits.join(""), "Z00'00')")
                        }(new Date));
                        const pdfData = (0, _type.isFunction)(window.Blob) ? function(binaryData) {
                            let i = 0;
                            const dataArray = new Uint8Array(binaryData.length);
                            for (; i < binaryData.length; i++) {
                                dataArray[i] = binaryData.charCodeAt(i)
                            }
                            return new window.Blob([dataArray.buffer], {
                                type: "application/pdf"
                            })
                        }(binaryData) : function(binaryData) {
                            return window.btoa(binaryData)
                        }(binaryData);
                        return pdfData
                    })
                };
                var _version = __webpack_require__( /*! ../core/version */ 36739);
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _image_creator = __webpack_require__( /*! ./image_creator */ 12173);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                const window = (0, _window.getWindow)();
                const pad = function(str, len) {
                    return str.length < len ? pad("0" + str, len) : str
                };

                function getTwoDigitValue(value) {
                    const stringValue = value.toString();
                    if (1 === stringValue.length) {
                        return "0".concat(value)
                    }
                    return value
                }
            },
        37596:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/exporter/svg_creator.js ***!
              \*********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getData = function(data, options) {
                    return svgCreator.getData(data, options)
                };
                exports.svgCreator = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _ajax = _interopRequireDefault(__webpack_require__( /*! ../core/utils/ajax */ 37208));
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _svg = __webpack_require__( /*! ../core/utils/svg */ 19155);
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();
                const svgCreator = {
                    _markup: "",
                    _imageArray: {},
                    _imageDeferreds: [],
                    _getBinaryFile: function(src, callback) {
                        _ajax.default.sendRequest({
                            url: src,
                            method: "GET",
                            responseType: "arraybuffer"
                        }).done(callback).fail((function() {
                            callback(false)
                        }))
                    },
                    _loadImages: function() {
                        const that = this;
                        (0, _iterator.each)(that._imageArray, (function(src) {
                            const deferred = new _deferred.Deferred;
                            that._imageDeferreds.push(deferred);
                            that._getBinaryFile(src, (function(response) {
                                if (!response) {
                                    delete that._imageArray[src];
                                    deferred.resolve();
                                    return
                                }
                                let i;
                                let binary = "";
                                const bytes = new Uint8Array(response);
                                const length = bytes.byteLength;
                                for (i = 0; i < length; i++) {
                                    binary += String.fromCharCode(bytes[i])
                                }
                                that._imageArray[src] = "data:image/png;base64," + window.btoa(binary);
                                deferred.resolve()
                            }))
                        }))
                    },
                    _parseImages: function(element) {
                        let href;
                        const that = this;
                        if ("image" === element.tagName) {
                            href = (0, _renderer.default)(element).attr("href") || (0, _renderer.default)(element).attr("xlink:href");
                            if (!that._imageArray[href]) {
                                that._imageArray[href] = ""
                            }
                        }(0, _iterator.each)(element.childNodes, (function(_, element) {
                            that._parseImages(element)
                        }))
                    },
                    _prepareImages: function(svgElem) {
                        this._parseImages(svgElem);
                        this._loadImages();
                        return _deferred.when.apply(_renderer.default, this._imageDeferreds)
                    },
                    getData: function(data, options) {
                        let markup;
                        const that = this;
                        const svgElem = (0, _svg.getSvgElement)(data);
                        const $svgObject = (0, _renderer.default)(svgElem);
                        $svgObject.find("[".concat(_svg.HIDDEN_FOR_EXPORT, "]")).remove();
                        markup = '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>' + (0, _svg.getSvgMarkup)($svgObject.get(0), options.backgroundColor);
                        return that._prepareImages(svgElem).then(() => {
                            (0, _iterator.each)(that._imageArray, (function(href, dataURI) {
                                const regexpString = "href=['|\"]".concat(href, "['|\"]");
                                markup = markup.replace(new RegExp(regexpString, "gi"), 'href="'.concat(dataURI, '"'))
                            }));
                            return (0, _type.isFunction)(window.Blob) ? that._getBlob(markup) : that._getBase64(markup)
                        })
                    },
                    _getBlob: function(markup) {
                        return new window.Blob([markup], {
                            type: "image/svg+xml"
                        })
                    },
                    _getBase64: function(markup) {
                        return window.btoa(markup)
                    }
                };
                exports.svgCreator = svgCreator
            },
        98831:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/file_management/custom_provider.js ***!
              \********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _data = __webpack_require__( /*! ../core/utils/data */ 47617);
                var _provider_base = (obj = __webpack_require__( /*! ./provider_base */ 19073), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let CustomFileSystemProvider = function(_FileSystemProviderBa) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(CustomFileSystemProvider, _FileSystemProviderBa);

                    function CustomFileSystemProvider(options) {
                        var _this;
                        options = (0, _common.ensureDefined)(options, {});
                        _this = _FileSystemProviderBa.call(this, options) || this;
                        _this._hasSubDirsGetter = (0, _data.compileGetter)(options.hasSubDirectoriesExpr || "hasSubDirectories");
                        _this._getItemsFunction = _this._ensureFunction(options.getItems, () => []);
                        _this._renameItemFunction = _this._ensureFunction(options.renameItem);
                        _this._createDirectoryFunction = _this._ensureFunction(options.createDirectory);
                        _this._deleteItemFunction = _this._ensureFunction(options.deleteItem);
                        _this._moveItemFunction = _this._ensureFunction(options.moveItem);
                        _this._copyItemFunction = _this._ensureFunction(options.copyItem);
                        _this._uploadFileChunkFunction = _this._ensureFunction(options.uploadFileChunk);
                        _this._abortFileUploadFunction = _this._ensureFunction(options.abortFileUpload);
                        _this._downloadItemsFunction = _this._ensureFunction(options.downloadItems);
                        _this._getItemsContentFunction = _this._ensureFunction(options.getItemsContent);
                        return _this
                    }
                    var _proto = CustomFileSystemProvider.prototype;
                    _proto.getItems = function(parentDir) {
                        const pathInfo = parentDir.getFullPathInfo();
                        return this._executeActionAsDeferred(() => this._getItemsFunction(parentDir), true).then(dataItems => this._convertDataObjectsToFileItems(dataItems, pathInfo))
                    };
                    _proto.renameItem = function(item, name) {
                        return this._executeActionAsDeferred(() => this._renameItemFunction(item, name))
                    };
                    _proto.createDirectory = function(parentDir, name) {
                        return this._executeActionAsDeferred(() => this._createDirectoryFunction(parentDir, name))
                    };
                    _proto.deleteItems = function(items) {
                        return items.map(item => this._executeActionAsDeferred(() => this._deleteItemFunction(item)))
                    };
                    _proto.moveItems = function(items, destinationDirectory) {
                        return items.map(item => this._executeActionAsDeferred(() => this._moveItemFunction(item, destinationDirectory)))
                    };
                    _proto.copyItems = function(items, destinationFolder) {
                        return items.map(item => this._executeActionAsDeferred(() => this._copyItemFunction(item, destinationFolder)))
                    };
                    _proto.uploadFileChunk = function(fileData, chunksInfo, destinationDirectory) {
                        return this._executeActionAsDeferred(() => this._uploadFileChunkFunction(fileData, chunksInfo, destinationDirectory))
                    };
                    _proto.abortFileUpload = function(fileData, chunksInfo, destinationDirectory) {
                        return this._executeActionAsDeferred(() => this._abortFileUploadFunction(fileData, chunksInfo, destinationDirectory))
                    };
                    _proto.downloadItems = function(items) {
                        return this._executeActionAsDeferred(() => this._downloadItemsFunction(items))
                    };
                    _proto.getItemsContent = function(items) {
                        return this._executeActionAsDeferred(() => this._getItemsContentFunction(items))
                    };
                    _proto._hasSubDirs = function(dataObj) {
                        const hasSubDirs = this._hasSubDirsGetter(dataObj);
                        return "boolean" === typeof hasSubDirs ? hasSubDirs : true
                    };
                    _proto._getKeyExpr = function(options) {
                        return options.keyExpr || "key"
                    };
                    _proto._ensureFunction = function(functionObject, defaultFunction) {
                        defaultFunction = defaultFunction || _common.noop;
                        return (0, _type.isFunction)(functionObject) ? functionObject : defaultFunction
                    };
                    return CustomFileSystemProvider
                }(_provider_base.default);
                var _default = CustomFileSystemProvider;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        49816:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/file_management/error.js ***!
              \**********************************************************************/
            function(module, exports) {
                exports.default = void 0;
                var _default = function(errorCode, fileSystemItem, errorText) {
                    this.errorCode = errorCode;
                    this.fileSystemItem = fileSystemItem;
                    this.errorText = errorText
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        41011:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/file_management/error_codes.js ***!
              \****************************************************************************/
            function(module, exports) {
                exports.default = void 0;
                var _default = {
                    NoAccess: 0,
                    FileExists: 1,
                    FileNotFound: 2,
                    DirectoryExists: 3,
                    DirectoryNotFound: 4,
                    WrongFileExtension: 5,
                    MaxFileSizeExceeded: 6,
                    InvalidSymbols: 7,
                    Other: 32767
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        45765:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/file_management/file_system_item.js ***!
              \*********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _utils = __webpack_require__( /*! ./utils */ 73173);
                let FileSystemItem = function() {
                    function FileSystemItem() {
                        const ctor = (0, _type.isString)(arguments[0]) ? this._publicCtor : this._internalCtor;
                        ctor.apply(this, arguments)
                    }
                    var _proto = FileSystemItem.prototype;
                    _proto._internalCtor = function(pathInfo, name, isDirectory, key) {
                        this.name = name || "";
                        this.pathInfo = pathInfo && [...pathInfo] || [];
                        this.parentPath = this._getPathByPathInfo(this.pathInfo);
                        this.relativeName = (0, _utils.pathCombine)(this.parentPath, name);
                        this.key = key || this._getPathByPathInfo(this.getFullPathInfo(), true);
                        this.path = (0, _utils.pathCombine)(this.parentPath, name);
                        this.pathKeys = this.pathInfo.map(_ref => {
                            let {
                                key: key
                            } = _ref;
                            return key
                        });
                        if (!this.isRoot()) {
                            this.pathKeys.push(this.key)
                        }
                        this._initialize(isDirectory)
                    };
                    _proto._publicCtor = function(path, isDirectory, pathKeys) {
                        this.path = path || "";
                        this.pathKeys = pathKeys || [];
                        const pathInfo = [];
                        const parts = (0, _utils.getPathParts)(path, true);
                        for (let i = 0; i < parts.length - 1; i++) {
                            const part = parts[i];
                            const pathInfoPart = {
                                key: this.pathKeys[i] || part,
                                name: (0, _utils.getName)(part)
                            };
                            pathInfo.push(pathInfoPart)
                        }
                        this.pathInfo = pathInfo;
                        this.relativeName = path;
                        this.name = (0, _utils.getName)(path);
                        this.key = this.pathKeys.length ? this.pathKeys[this.pathKeys.length - 1] : path;
                        this.parentPath = parts.length > 1 ? parts[parts.length - 2] : "";
                        this._initialize(isDirectory)
                    };
                    _proto._initialize = function(isDirectory) {
                        this.isDirectory = !!isDirectory;
                        this.size = 0;
                        this.dateModified = new Date;
                        this.thumbnail = "";
                        this.tooltipText = ""
                    };
                    _proto.getFullPathInfo = function() {
                        const pathInfo = [...this.pathInfo];
                        if (!this.isRoot()) {
                            pathInfo.push({
                                key: this.key,
                                name: this.name
                            })
                        }
                        return pathInfo
                    };
                    _proto.isRoot = function() {
                        return "" === this.path
                    };
                    _proto.getFileExtension = function() {
                        return this.isDirectory ? "" : (0, _utils.getFileExtension)(this.name)
                    };
                    _proto.equals = function(item) {
                        return item && this.key === item.key
                    };
                    _proto.createClone = function() {
                        const result = new FileSystemItem(this.pathInfo, this.name, this.isDirectory, this.key);
                        result.key = this.key;
                        result.size = this.size;
                        result.dateModified = this.dateModified;
                        result.thumbnail = this.thumbnail;
                        result.tooltipText = this.tooltipText;
                        result.hasSubDirectories = this.hasSubDirectories;
                        result.dataItem = this.dataItem;
                        return result
                    };
                    _proto._getPathByPathInfo = function(pathInfo, escape) {
                        return pathInfo.map(info => escape ? (0, _utils.getEscapedFileName)(info.name) : info.name).join(_utils.PATH_SEPARATOR)
                    };
                    return FileSystemItem
                }();
                var _default = FileSystemItem;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        4323:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/file_management/object_provider.js ***!
              \********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);
                var _data = __webpack_require__( /*! ../core/utils/data */ 47617);
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../core/guid */ 73176));
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _errors = __webpack_require__( /*! ../data/errors */ 18438);
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _file_saver = __webpack_require__( /*! ../exporter/file_saver */ 48351);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../ui/widget/ui.errors */ 96688));
                var _jszip = _interopRequireDefault(__webpack_require__( /*! jszip */ 97405));
                var _provider_base = _interopRequireDefault(__webpack_require__( /*! ./provider_base */ 19073));
                var _error = _interopRequireDefault(__webpack_require__( /*! ./error */ 49816));
                var _error_codes = _interopRequireDefault(__webpack_require__( /*! ./error_codes */ 41011));
                var _utils = __webpack_require__( /*! ./utils */ 73173);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const window = (0, _window.getWindow)();
                let ObjectFileSystemProvider = function(_FileSystemProviderBa) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(ObjectFileSystemProvider, _FileSystemProviderBa);

                    function ObjectFileSystemProvider(options) {
                        var _this;
                        options = (0, _common.ensureDefined)(options, {});
                        _this = _FileSystemProviderBa.call(this, options) || this;
                        const initialArray = options.data;
                        if (initialArray && !Array.isArray(initialArray)) {
                            throw _errors.errors.Error("E4006")
                        }
                        const itemsExpr = options.itemsExpr || "items";
                        _this._subFileItemsGetter = (0, _data.compileGetter)(itemsExpr);
                        _this._subFileItemsSetter = _this._getSetter(itemsExpr);
                        const contentExpr = options.contentExpr || "content";
                        _this._contentGetter = (0, _data.compileGetter)(contentExpr);
                        _this._contentSetter = _this._getSetter(contentExpr);
                        const nameExpr = _this._getNameExpr(options);
                        _this._nameSetter = _this._getSetter(nameExpr);
                        const isDirExpr = _this._getIsDirExpr(options);
                        _this._getIsDirSetter = _this._getSetter(isDirExpr);
                        const keyExpr = _this._getKeyExpr(options);
                        _this._keySetter = _this._getSetter(keyExpr);
                        const sizeExpr = _this._getSizeExpr(options);
                        _this._sizeSetter = _this._getSetter(sizeExpr);
                        const dateModifiedExpr = _this._getDateModifiedExpr(options);
                        _this._dateModifiedSetter = _this._getSetter(dateModifiedExpr);
                        _this._data = initialArray || [];
                        return _this
                    }
                    var _proto = ObjectFileSystemProvider.prototype;
                    _proto.getItems = function(parentDir) {
                        return this._executeActionAsDeferred(() => this._getItems(parentDir), true)
                    };
                    _proto.renameItem = function(item, name) {
                        return this._executeActionAsDeferred(() => this._renameItemCore(item, name))
                    };
                    _proto._renameItemCore = function(item, name) {
                        if (!item) {
                            return
                        }
                        const dataItem = this._findDataObject(item);
                        this._nameSetter(dataItem, name);
                        item.name = name;
                        item.key = this._ensureDataObjectKey(dataItem)
                    };
                    _proto.createDirectory = function(parentDir, name) {
                        return this._executeActionAsDeferred(() => {
                            this._validateDirectoryExists(parentDir);
                            this._createDataObject(parentDir, name, true)
                        })
                    };
                    _proto.deleteItems = function(items) {
                        return items.map(item => this._executeActionAsDeferred(() => this._deleteItem(item)))
                    };
                    _proto.moveItems = function(items, destinationDir) {
                        const destinationDataItem = this._findDataObject(destinationDir);
                        const array = this._getDirectoryDataItems(destinationDataItem);
                        const deferreds = items.map(item => this._executeActionAsDeferred(() => {
                            this._checkAbilityToMoveOrCopyItem(item, destinationDir);
                            const dataItem = this._findDataObject(item);
                            this._deleteItem(item);
                            array.push(dataItem)
                        }));
                        return deferreds
                    };
                    _proto.copyItems = function(items, destinationDir) {
                        const destinationDataItem = this._findDataObject(destinationDir);
                        const array = this._getDirectoryDataItems(destinationDataItem);
                        const deferreds = items.map(item => this._executeActionAsDeferred(() => {
                            this._checkAbilityToMoveOrCopyItem(item, destinationDir);
                            const dataItem = this._findDataObject(item);
                            const copiedItem = this._createCopy(dataItem);
                            array.push(copiedItem)
                        }));
                        return deferreds
                    };
                    _proto.uploadFileChunk = function(fileData, chunksInfo, destinationDirectory) {
                        if (chunksInfo.chunkIndex > 0) {
                            return chunksInfo.customData.deferred
                        }
                        this._validateDirectoryExists(destinationDirectory);
                        const deferred = chunksInfo.customData.deferred = new _deferred.Deferred;
                        const reader = this._createFileReader();
                        reader.readAsDataURL(fileData);
                        reader.onload = () => {
                            const content = reader.result.split(",")[1];
                            const dataObj = this._createDataObject(destinationDirectory, fileData.name, false);
                            this._sizeSetter(dataObj, fileData.size);
                            this._dateModifiedSetter(dataObj, fileData.lastModifiedDate);
                            this._contentSetter(dataObj, content);
                            deferred.resolve()
                        };
                        reader.onerror = error => deferred.reject(error);
                        return deferred
                    };
                    _proto.downloadItems = function(items) {
                        if (1 === items.length) {
                            this._downloadSingleFile(items[0])
                        } else {
                            this._downloadMultipleFiles(items)
                        }
                    };
                    _proto._downloadSingleFile = function(file) {
                        const content = this._getFileContent(file);
                        const byteString = window.atob(content);
                        const arrayBuffer = new ArrayBuffer(byteString.length);
                        const array = new Uint8Array(arrayBuffer);
                        for (let i = 0; i < byteString.length; i++) {
                            array[i] = byteString.charCodeAt(i)
                        }
                        const blob = new window.Blob([arrayBuffer], {
                            type: "application/octet-stream"
                        });
                        _file_saver.fileSaver.saveAs(file.name, null, blob)
                    };
                    _proto._downloadMultipleFiles = function(files) {
                        const jsZip = function() {
                            if (!_jszip.default) {
                                throw _ui.default.Error("E1041", "JSZip")
                            }
                            return _jszip.default
                        }();
                        const zip = new jsZip;
                        files.forEach(file => zip.file(file.name, this._getFileContent(file), {
                            base64: true
                        }));
                        const options = {
                            type: "blob",
                            compression: "DEFLATE",
                            mimeType: "application/zip"
                        };
                        const deferred = new _deferred.Deferred;
                        if (zip.generateAsync) {
                            zip.generateAsync(options).then(deferred.resolve)
                        } else {
                            deferred.resolve(zip.generate(options))
                        }
                        deferred.done(blob => _file_saver.fileSaver.saveAs("files.zip", null, blob))
                    };
                    _proto._getFileContent = function(file) {
                        const dataItem = this._findDataObject(file);
                        return this._contentGetter(dataItem) || ""
                    };
                    _proto._validateDirectoryExists = function(directoryInfo) {
                        if (!this._isFileItemExists(directoryInfo) || this._isDirGetter(directoryInfo.fileItem)) {
                            throw new _error.default(_error_codes.default.DirectoryNotFound, directoryInfo)
                        }
                    };
                    _proto._checkAbilityToMoveOrCopyItem = function(item, destinationDir) {
                        const dataItem = this._findDataObject(item);
                        const itemKey = this._getKeyFromDataObject(dataItem, item.parentPath);
                        const pathInfo = destinationDir.getFullPathInfo();
                        let currentPath = "";
                        pathInfo.forEach(info => {
                            currentPath = (0, _utils.pathCombine)(currentPath, info.name);
                            const pathKey = this._getDataObjectKey(info.key, currentPath);
                            if (pathKey === itemKey) {
                                throw new _error.default(_error_codes.default.Other, item)
                            }
                        })
                    };
                    _proto._createDataObject = function(parentDir, name, isDirectory) {
                        const dataObj = {};
                        this._nameSetter(dataObj, name);
                        this._getIsDirSetter(dataObj, isDirectory);
                        this._keySetter(dataObj, String(new _guid.default));
                        const parentDataItem = this._findDataObject(parentDir);
                        const array = this._getDirectoryDataItems(parentDataItem);
                        array.push(dataObj);
                        return dataObj
                    };
                    _proto._createCopy = function(dataObj) {
                        const copyObj = {};
                        this._nameSetter(copyObj, this._nameGetter(dataObj));
                        this._getIsDirSetter(copyObj, this._isDirGetter(dataObj));
                        const items = this._subFileItemsGetter(dataObj);
                        if (Array.isArray(items)) {
                            const itemsCopy = [];
                            items.forEach(childItem => {
                                const childCopy = this._createCopy(childItem);
                                itemsCopy.push(childCopy)
                            });
                            this._subFileItemsSetter(copyObj, itemsCopy)
                        }
                        return copyObj
                    };
                    _proto._deleteItem = function(fileItem) {
                        const dataItem = this._findDataObject(fileItem);
                        const parentDirDataObj = this._findFileItemObj(fileItem.pathInfo);
                        const array = this._getDirectoryDataItems(parentDirDataObj);
                        const index = array.indexOf(dataItem);
                        array.splice(index, 1)
                    };
                    _proto._getDirectoryDataItems = function(directoryDataObj) {
                        if (!directoryDataObj) {
                            return this._data
                        }
                        let dataItems = this._subFileItemsGetter(directoryDataObj);
                        if (!Array.isArray(dataItems)) {
                            dataItems = [];
                            this._subFileItemsSetter(directoryDataObj, dataItems)
                        }
                        return dataItems
                    };
                    _proto._getItems = function(parentDir) {
                        this._validateDirectoryExists(parentDir);
                        const pathInfo = parentDir.getFullPathInfo();
                        const parentDirKey = pathInfo && pathInfo.length > 0 ? pathInfo[pathInfo.length - 1].key : null;
                        let dirFileObjects = this._data;
                        if (parentDirKey) {
                            const directoryEntry = this._findFileItemObj(pathInfo);
                            dirFileObjects = directoryEntry && this._subFileItemsGetter(directoryEntry) || []
                        }
                        this._ensureKeysForDuplicateNameItems(dirFileObjects);
                        return this._convertDataObjectsToFileItems(dirFileObjects, pathInfo)
                    };
                    _proto._ensureKeysForDuplicateNameItems = function(dataObjects) {
                        const names = {};
                        dataObjects.forEach(obj => {
                            const name = this._nameGetter(obj);
                            if (names[name]) {
                                this._ensureDataObjectKey(obj)
                            } else {
                                names[name] = true
                            }
                        })
                    };
                    _proto._findDataObject = function(item) {
                        if (item.isRoot()) {
                            return null
                        }
                        const result = this._findFileItemObj(item.getFullPathInfo());
                        if (!result) {
                            const errorCode = item.isDirectory ? _error_codes.default.DirectoryNotFound : _error_codes.default.FileNotFound;
                            throw new _error.default(errorCode, item)
                        }
                        return result
                    };
                    _proto._findFileItemObj = function(pathInfo) {
                        if (!Array.isArray(pathInfo)) {
                            pathInfo = []
                        }
                        let currentPath = "";
                        let fileItemObj = null;
                        let fileItemObjects = this._data;
                        for (let i = 0; i < pathInfo.length && (0 === i || fileItemObj); i++) {
                            fileItemObj = fileItemObjects.find(item => {
                                const hasCorrectFileItemType = this._isDirGetter(item) || i === pathInfo.length - 1;
                                return this._getKeyFromDataObject(item, currentPath) === pathInfo[i].key && this._nameGetter(item) === pathInfo[i].name && hasCorrectFileItemType
                            });
                            if (fileItemObj) {
                                currentPath = (0, _utils.pathCombine)(currentPath, this._nameGetter(fileItemObj));
                                fileItemObjects = this._subFileItemsGetter(fileItemObj)
                            }
                        }
                        return fileItemObj
                    };
                    _proto._getKeyFromDataObject = function(dataObj, defaultKeyPrefix) {
                        const key = this._keyGetter(dataObj);
                        const relativeName = (0, _utils.pathCombine)(defaultKeyPrefix, this._nameGetter(dataObj));
                        return this._getDataObjectKey(key, relativeName)
                    };
                    _proto._getDataObjectKey = function(key, relativeName) {
                        return key ? key : relativeName
                    };
                    _proto._ensureDataObjectKey = function(dataObj) {
                        let key = this._keyGetter(dataObj);
                        if (!key) {
                            key = String(new _guid.default);
                            this._keySetter(dataObj, key)
                        }
                        return key
                    };
                    _proto._hasSubDirs = function(dataObj) {
                        const subItems = (0, _common.ensureDefined)(this._subFileItemsGetter(dataObj), []);
                        if (!Array.isArray(subItems)) {
                            return true
                        }
                        for (let i = 0; i < subItems.length; i++) {
                            if (true === this._isDirGetter(subItems[i])) {
                                return true
                            }
                        }
                        return false
                    };
                    _proto._getSetter = function(expr) {
                        return (0, _type.isFunction)(expr) ? expr : (0, _data.compileSetter)(expr)
                    };
                    _proto._isFileItemExists = function(fileItem) {
                        return fileItem.isDirectory && fileItem.isRoot() || !!this._findFileItemObj(fileItem.getFullPathInfo())
                    };
                    _proto._createFileReader = function() {
                        return new window.FileReader
                    };
                    return ObjectFileSystemProvider
                }(_provider_base.default);
                var _default = ObjectFileSystemProvider;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        19073:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/file_management/provider_base.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _data = __webpack_require__( /*! ../core/utils/data */ 47617);
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);
                var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../core/utils/date_serialization */ 69434));
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);
                var _file_system_item = _interopRequireDefault(__webpack_require__( /*! ./file_system_item */ 45765));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                let FileSystemProviderBase = function() {
                    function FileSystemProviderBase(options) {
                        options = (0, _common.ensureDefined)(options, {});
                        this._keyGetter = (0, _data.compileGetter)(this._getKeyExpr(options));
                        this._nameGetter = (0, _data.compileGetter)(this._getNameExpr(options));
                        this._isDirGetter = (0, _data.compileGetter)(this._getIsDirExpr(options));
                        this._sizeGetter = (0, _data.compileGetter)(this._getSizeExpr(options));
                        this._dateModifiedGetter = (0, _data.compileGetter)(this._getDateModifiedExpr(options));
                        this._thumbnailGetter = (0, _data.compileGetter)(options.thumbnailExpr || "thumbnail")
                    }
                    var _proto = FileSystemProviderBase.prototype;
                    _proto.getItems = function(parentDirectory) {
                        return []
                    };
                    _proto.renameItem = function(item, name) {};
                    _proto.createDirectory = function(parentDirectory, name) {};
                    _proto.deleteItems = function(items) {};
                    _proto.moveItems = function(items, destinationDirectory) {};
                    _proto.copyItems = function(items, destinationDirectory) {};
                    _proto.uploadFileChunk = function(fileData, chunksInfo, destinationDirectory) {};
                    _proto.abortFileUpload = function(fileData, chunksInfo, destinationDirectory) {};
                    _proto.downloadItems = function(items) {};
                    _proto.getItemsContent = function(items) {};
                    _proto.getFileUploadChunkSize = function() {
                        return 2e5
                    };
                    _proto._convertDataObjectsToFileItems = function(entries, pathInfo) {
                        const result = [];
                        (0, _iterator.each)(entries, (_, entry) => {
                            const fileItem = this._createFileItem(entry, pathInfo);
                            result.push(fileItem)
                        });
                        return result
                    };
                    _proto._createFileItem = function(dataObj, pathInfo) {
                        const key = this._keyGetter(dataObj);
                        const fileItem = new _file_system_item.default(pathInfo, this._nameGetter(dataObj), !!this._isDirGetter(dataObj), key);
                        fileItem.size = this._sizeGetter(dataObj);
                        if (void 0 === fileItem.size) {
                            fileItem.size = 0
                        }
                        fileItem.dateModified = _date_serialization.default.deserializeDate(this._dateModifiedGetter(dataObj));
                        if (void 0 === fileItem.dateModified) {
                            fileItem.dateModified = new Date
                        }
                        if (fileItem.isDirectory) {
                            fileItem.hasSubDirectories = this._hasSubDirs(dataObj)
                        }
                        if (!key) {
                            fileItem.key = fileItem.relativeName
                        }
                        fileItem.thumbnail = this._thumbnailGetter(dataObj) || "";
                        fileItem.dataItem = dataObj;
                        return fileItem
                    };
                    _proto._hasSubDirs = function(dataObj) {
                        return true
                    };
                    _proto._getKeyExpr = function(options) {
                        return options.keyExpr || this._defaultKeyExpr
                    };
                    _proto._defaultKeyExpr = function(fileItem) {
                        if (2 === arguments.length) {
                            fileItem.__KEY__ = arguments[1];
                            return
                        }
                        return Object.prototype.hasOwnProperty.call(fileItem, "__KEY__") ? fileItem.__KEY__ : null
                    };
                    _proto._getNameExpr = function(options) {
                        return options.nameExpr || "name"
                    };
                    _proto._getIsDirExpr = function(options) {
                        return options.isDirectoryExpr || "isDirectory"
                    };
                    _proto._getSizeExpr = function(options) {
                        return options.sizeExpr || "size"
                    };
                    _proto._getDateModifiedExpr = function(options) {
                        return options.dateModifiedExpr || "dateModified"
                    };
                    _proto._executeActionAsDeferred = function(action, keepResult) {
                        const deferred = new _deferred.Deferred;
                        try {
                            const result = action();
                            if ((0, _type.isPromise)(result)) {
                                (0, _deferred.fromPromise)(result).done(userResult => deferred.resolve(keepResult && userResult || void 0)).fail(error => deferred.reject(error))
                            } else {
                                deferred.resolve(keepResult && result || void 0)
                            }
                        } catch (error) {
                            return deferred.reject(error)
                        }
                        return deferred.promise()
                    };
                    return FileSystemProviderBase
                }();
                var _default = FileSystemProviderBase;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        41332:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/file_management/remote_provider.js ***!
              \********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _ajax = _interopRequireDefault(__webpack_require__( /*! ../core/utils/ajax */ 37208));
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../core/guid */ 73176));
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../events/core/events_engine */ 55994));
                var _provider_base = _interopRequireDefault(__webpack_require__( /*! ./provider_base */ 19073));
                var _data = __webpack_require__( /*! ../core/utils/data */ 47617);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const window = (0, _window.getWindow)();
                const FILE_SYSTEM_COMMNAD_GET_DIR_CONTENTS = "GetDirContents",
                    FILE_SYSTEM_COMMNAD_CREATE_DIR = "CreateDir",
                    FILE_SYSTEM_COMMNAD_RENAME = "Rename",
                    FILE_SYSTEM_COMMNAD_MOVE = "Move",
                    FILE_SYSTEM_COMMNAD_COPY = "Copy",
                    FILE_SYSTEM_COMMNAD_REMOVE = "Remove",
                    FILE_SYSTEM_COMMNAD_UPLOAD_CHUNK = "UploadChunk",
                    FILE_SYSTEM_COMMNAD_ABORT_UPLOAD = "AbortUpload",
                    FILE_SYSTEM_COMMNAD_DOWLOAD = "Download";
                const REQUEST_METHOD_GET = "GET",
                    REQUEST_METHOD_POST = "POST";
                let RemoteFileSystemProvider = function(_FileSystemProviderBa) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(RemoteFileSystemProvider, _FileSystemProviderBa);

                    function RemoteFileSystemProvider(options) {
                        var _this;
                        options = (0, _common.ensureDefined)(options, {});
                        _this = _FileSystemProviderBa.call(this, options) || this;
                        _this._endpointUrl = options.endpointUrl;
                        _this._beforeAjaxSend = options.beforeAjaxSend;
                        _this._beforeSubmit = options.beforeSubmit;
                        _this._requestHeaders = options.requestHeaders;
                        _this._hasSubDirsGetter = (0, _data.compileGetter)(options.hasSubDirectoriesExpr || "hasSubDirectories");
                        return _this
                    }
                    var _proto = RemoteFileSystemProvider.prototype;
                    _proto.getItems = function(parentDir) {
                        const pathInfo = parentDir.getFullPathInfo();
                        return this._executeRequest(FILE_SYSTEM_COMMNAD_GET_DIR_CONTENTS, {
                            pathInfo: pathInfo
                        }).then(result => this._convertDataObjectsToFileItems(result.result, pathInfo))
                    };
                    _proto.renameItem = function(item, name) {
                        return this._executeRequest(FILE_SYSTEM_COMMNAD_RENAME, {
                            pathInfo: item.getFullPathInfo(),
                            isDirectory: item.isDirectory,
                            name: name
                        })
                    };
                    _proto.createDirectory = function(parentDir, name) {
                        return this._executeRequest(FILE_SYSTEM_COMMNAD_CREATE_DIR, {
                            pathInfo: parentDir.getFullPathInfo(),
                            name: name
                        })
                    };
                    _proto.deleteItems = function(items) {
                        return items.map(item => this._executeRequest(FILE_SYSTEM_COMMNAD_REMOVE, {
                            pathInfo: item.getFullPathInfo(),
                            isDirectory: item.isDirectory
                        }))
                    };
                    _proto.moveItems = function(items, destinationDirectory) {
                        return items.map(item => this._executeRequest(FILE_SYSTEM_COMMNAD_MOVE, {
                            sourcePathInfo: item.getFullPathInfo(),
                            sourceIsDirectory: item.isDirectory,
                            destinationPathInfo: destinationDirectory.getFullPathInfo()
                        }))
                    };
                    _proto.copyItems = function(items, destinationFolder) {
                        return items.map(item => this._executeRequest(FILE_SYSTEM_COMMNAD_COPY, {
                            sourcePathInfo: item.getFullPathInfo(),
                            sourceIsDirectory: item.isDirectory,
                            destinationPathInfo: destinationFolder.getFullPathInfo()
                        }))
                    };
                    _proto.uploadFileChunk = function(fileData, chunksInfo, destinationDirectory) {
                        if (0 === chunksInfo.chunkIndex) {
                            chunksInfo.customData.uploadId = new _guid.default
                        }
                        const args = {
                            destinationPathInfo: destinationDirectory.getFullPathInfo(),
                            chunkMetadata: JSON.stringify({
                                UploadId: chunksInfo.customData.uploadId,
                                FileName: fileData.name,
                                Index: chunksInfo.chunkIndex,
                                TotalCount: chunksInfo.chunkCount,
                                FileSize: fileData.size
                            })
                        };
                        const ajaxSettings = {
                            url: this._endpointUrl,
                            headers: this._requestHeaders || {},
                            method: REQUEST_METHOD_POST,
                            dataType: "json",
                            data: {
                                chunk: chunksInfo.chunkBlob,
                                arguments: JSON.stringify(args),
                                command: FILE_SYSTEM_COMMNAD_UPLOAD_CHUNK
                            },
                            upload: {
                                onprogress: _common.noop,
                                onloadstart: _common.noop,
                                onabort: _common.noop
                            },
                            xhrFields: {},
                            cache: false
                        };
                        const deferred = new _deferred.Deferred;
                        this._beforeSendInternal(ajaxSettings);
                        _ajax.default.sendRequest(ajaxSettings).done(result => {
                            !result.success && deferred.reject(result) || deferred.resolve()
                        }).fail(deferred.reject);
                        return deferred.promise()
                    };
                    _proto.abortFileUpload = function(fileData, chunksInfo, destinationDirectory) {
                        return this._executeRequest(FILE_SYSTEM_COMMNAD_ABORT_UPLOAD, {
                            uploadId: chunksInfo.customData.uploadId
                        })
                    };
                    _proto.downloadItems = function(items) {
                        const args = this._getDownloadArgs(items);
                        const $form = (0, _renderer.default)("<form>").css({
                            display: "none"
                        }).attr({
                            method: REQUEST_METHOD_POST,
                            action: args.url
                        });
                        const formDataEntries = {
                            command: args.command,
                            arguments: args.arguments
                        };
                        this._beforeSubmitInternal(formDataEntries);
                        this._appendFormDataInputsToForm(formDataEntries, $form);
                        $form.appendTo("body");
                        _events_engine.default.trigger($form, "submit");
                        setTimeout(() => $form.remove())
                    };
                    _proto.getItemsContent = function(items) {
                        const args = this._getDownloadArgs(items);
                        const ajaxSettings = {
                            url: args.url,
                            headers: this._requestHeaders || {},
                            method: REQUEST_METHOD_POST,
                            responseType: "arraybuffer",
                            data: {
                                command: args.command,
                                arguments: args.arguments
                            },
                            upload: {
                                onprogress: _common.noop,
                                onloadstart: _common.noop,
                                onabort: _common.noop
                            },
                            xhrFields: {},
                            cache: false
                        };
                        this._beforeSendInternal(ajaxSettings);
                        return _ajax.default.sendRequest(ajaxSettings)
                    };
                    _proto._getDownloadArgs = function(items) {
                        const pathInfoList = items.map(item => item.getFullPathInfo());
                        const args = {
                            pathInfoList: pathInfoList
                        };
                        const argsStr = JSON.stringify(args);
                        return {
                            url: this._endpointUrl,
                            arguments: argsStr,
                            command: FILE_SYSTEM_COMMNAD_DOWLOAD
                        }
                    };
                    _proto._getItemsIds = function(items) {
                        return items.map(it => it.relativeName)
                    };
                    _proto._executeRequest = function(command, args) {
                        const method = command === FILE_SYSTEM_COMMNAD_GET_DIR_CONTENTS ? REQUEST_METHOD_GET : REQUEST_METHOD_POST;
                        const deferred = new _deferred.Deferred;
                        const ajaxSettings = {
                            url: this._getEndpointUrl(command, args),
                            headers: this._requestHeaders || {},
                            method: method,
                            dataType: "json",
                            data: {},
                            xhrFields: {},
                            cache: false
                        };
                        this._beforeSendInternal(ajaxSettings);
                        _ajax.default.sendRequest(ajaxSettings).then(result => {
                            !result.success && deferred.reject(result) || deferred.resolve(result)
                        }, e => deferred.reject(e));
                        return deferred.promise()
                    };
                    _proto._beforeSubmitInternal = function(formDataEntries) {
                        if ((0, _type.isFunction)(this._beforeSubmit)) {
                            this._beforeSubmit({
                                formData: formDataEntries
                            })
                        }
                    };
                    _proto._beforeSendInternal = function(ajaxSettings) {
                        if ((0, _type.isFunction)(this._beforeAjaxSend)) {
                            const ajaxArguments = {
                                headers: ajaxSettings.headers,
                                formData: ajaxSettings.data,
                                xhrFields: ajaxSettings.xhrFields
                            };
                            this._beforeAjaxSend(ajaxArguments);
                            ajaxSettings.headers = ajaxArguments.headers;
                            ajaxSettings.data = ajaxArguments.formData;
                            ajaxSettings.xhrFields = ajaxArguments.xhrFields
                        }
                        if ((0, _type.isEmptyObject)(ajaxSettings.data)) {
                            delete ajaxSettings.data
                        } else if (ajaxSettings.responseType || ajaxSettings.upload) {
                            ajaxSettings.data = this._createFormData(ajaxSettings.data)
                        }
                    };
                    _proto._createFormData = function(formDataEntries) {
                        const formData = new window.FormData;
                        for (const entryName in formDataEntries) {
                            if (Object.prototype.hasOwnProperty.call(formDataEntries, entryName) && (0, _type.isDefined)(formDataEntries[entryName])) {
                                formData.append(entryName, formDataEntries[entryName])
                            }
                        }
                        return formData
                    };
                    _proto._appendFormDataInputsToForm = function(formDataEntries, formElement) {
                        for (const entryName in formDataEntries) {
                            if (Object.prototype.hasOwnProperty.call(formDataEntries, entryName) && (0, _type.isDefined)(formDataEntries[entryName])) {
                                (0, _renderer.default)("<input>").attr({
                                    type: "hidden",
                                    name: entryName,
                                    value: formDataEntries[entryName]
                                }).appendTo(formElement)
                            }
                        }
                    };
                    _proto._getEndpointUrl = function(command, args) {
                        const queryString = this._getQueryString({
                            command: command,
                            arguments: JSON.stringify(args)
                        });
                        const separator = this._endpointUrl && this._endpointUrl.indexOf("?") > 0 ? "&" : "?";
                        return this._endpointUrl + separator + queryString
                    };
                    _proto._getQueryString = function(params) {
                        const pairs = [];
                        const keys = Object.keys(params);
                        for (let i = 0; i < keys.length; i++) {
                            const key = keys[i];
                            let value = params[key];
                            if (void 0 === value) {
                                continue
                            }
                            if (null === value) {
                                value = ""
                            }
                            if (Array.isArray(value)) {
                                this._processQueryStringArrayParam(key, value, pairs)
                            } else {
                                const pair = this._getQueryStringPair(key, value);
                                pairs.push(pair)
                            }
                        }
                        return pairs.join("&")
                    };
                    _proto._processQueryStringArrayParam = function(key, array, pairs) {
                        (0, _iterator.each)(array, (_, item) => {
                            const pair = this._getQueryStringPair(key, item);
                            pairs.push(pair)
                        })
                    };
                    _proto._getQueryStringPair = function(key, value) {
                        return encodeURIComponent(key) + "=" + encodeURIComponent(value)
                    };
                    _proto._hasSubDirs = function(dataObj) {
                        const hasSubDirs = this._hasSubDirsGetter(dataObj);
                        return "boolean" === typeof hasSubDirs ? hasSubDirs : true
                    };
                    _proto._getKeyExpr = function(options) {
                        return options.keyExpr || "key"
                    };
                    return RemoteFileSystemProvider
                }(_provider_base.default);
                var _default = RemoteFileSystemProvider;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        73173:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/file_management/utils.js ***!
              \**********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.pathCombine = exports.getPathParts = exports.getParentPath = exports.getName = exports.getFileExtension = exports.getEscapedFileName = exports.PATH_SEPARATOR = void 0;
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                exports.PATH_SEPARATOR = "/";
                exports.getFileExtension = path => {
                    const index = path.lastIndexOf(".");
                    return -1 !== index ? path.substr(index) : ""
                };
                exports.getName = path => {
                    const index = path.lastIndexOf("/");
                    return -1 !== index ? path.substr(index + "/".length) : path
                };
                exports.getParentPath = path => {
                    const index = path.lastIndexOf("/");
                    return -1 !== index ? path.substr(0, index) : ""
                };
                exports.getPathParts = (path, includeFullPath) => {
                    if (!path || "/" === path) {
                        return []
                    }
                    const result = [];
                    let pathPart = "";
                    for (let i = 0; i < path.length; i++) {
                        let char = path.charAt(i);
                        if ("/" === char) {
                            const nextChar = path.charAt(i + 1);
                            if ("/" !== nextChar) {
                                if (pathPart) {
                                    result.push(pathPart);
                                    pathPart = ""
                                }
                                char = nextChar
                            }
                            i++
                        }
                        pathPart += char
                    }
                    if (pathPart) {
                        result.push(pathPart)
                    }
                    if (includeFullPath) {
                        for (let i = 0; i < result.length; i++) {
                            result[i] = pathCombine(0 === i ? "" : result[i - 1], getEscapedFileName(result[i]))
                        }
                    }
                    return result
                };
                const getEscapedFileName = function(fileName) {
                    return fileName.replace(/\/{1,1}/g, "//")
                };
                exports.getEscapedFileName = getEscapedFileName;
                const pathCombine = function() {
                    let result = "";
                    (0, _iterator.each)(arguments, (_, arg) => {
                        if (arg) {
                            if (result) {
                                result += "/"
                            }
                            result += arg
                        }
                    });
                    return result
                };
                exports.pathCombine = pathCombine
            },
        30343:
            /*!**************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/format_helper.js ***!
              \**************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _type = __webpack_require__( /*! ./core/utils/type */ 35922);
                var _date = _interopRequireDefault(__webpack_require__( /*! ./core/utils/date */ 91198));
                var _number = _interopRequireDefault(__webpack_require__( /*! ./localization/number */ 18016));
                var _date2 = _interopRequireDefault(__webpack_require__( /*! ./localization/date */ 91500));
                var _dependency_injector = _interopRequireDefault(__webpack_require__( /*! ./core/utils/dependency_injector */ 20476));
                __webpack_require__( /*! ./localization/currency */ 89740);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                var _default = (0, _dependency_injector.default)({
                    format: function(value, format) {
                        const formatIsValid = (0, _type.isString)(format) && "" !== format || (0, _type.isPlainObject)(format) || (0, _type.isFunction)(format);
                        const valueIsValid = (0, _type.isNumeric)(value) || (0, _type.isDate)(value);
                        if (!formatIsValid || !valueIsValid) {
                            return (0, _type.isDefined)(value) ? value.toString() : ""
                        }
                        if ((0, _type.isFunction)(format)) {
                            return format(value)
                        }
                        if ((0, _type.isString)(format)) {
                            format = {
                                type: format
                            }
                        }
                        if ((0, _type.isNumeric)(value)) {
                            return _number.default.format(value, format)
                        }
                        if ((0, _type.isDate)(value)) {
                            return _date2.default.format(value, format)
                        }
                    },
                    getTimeFormat: function(showSecond) {
                        return showSecond ? "longtime" : "shorttime"
                    },
                    _normalizeFormat: function(format) {
                        if (!Array.isArray(format)) {
                            return format
                        }
                        if (1 === format.length) {
                            return format[0]
                        }
                        return function(date) {
                            return format.map((function(formatPart) {
                                return _date2.default.format(date, formatPart)
                            })).join(" ")
                        }
                    },
                    getDateFormatByDifferences: function(dateDifferences, intervalFormat) {
                        const resultFormat = [];
                        const needSpecialSecondFormatter = intervalFormat && dateDifferences.millisecond && !(dateDifferences.year || dateDifferences.month || dateDifferences.day);
                        if (needSpecialSecondFormatter) {
                            const secondFormatter = function(date) {
                                return date.getSeconds() + date.getMilliseconds() / 1e3 + "s"
                            };
                            resultFormat.push(secondFormatter)
                        } else if (dateDifferences.millisecond) {
                            resultFormat.push("millisecond")
                        }
                        if (dateDifferences.hour || dateDifferences.minute || !needSpecialSecondFormatter && dateDifferences.second) {
                            resultFormat.unshift(this.getTimeFormat(dateDifferences.second))
                        }
                        if (dateDifferences.year && dateDifferences.month && dateDifferences.day) {
                            if (intervalFormat && "month" === intervalFormat) {
                                return "monthandyear"
                            } else {
                                resultFormat.unshift("shortdate");
                                return this._normalizeFormat(resultFormat)
                            }
                        }
                        if (dateDifferences.year && dateDifferences.month) {
                            return "monthandyear"
                        }
                        if (dateDifferences.year && dateDifferences.quarter) {
                            return "quarterandyear"
                        }
                        if (dateDifferences.year) {
                            return "year"
                        }
                        if (dateDifferences.quarter) {
                            return "quarter"
                        }
                        if (dateDifferences.month && dateDifferences.day) {
                            if (intervalFormat) {
                                const monthDayFormatter = function(date) {
                                    return _date2.default.getMonthNames("abbreviated")[date.getMonth()] + " " + _date2.default.format(date, "day")
                                };
                                resultFormat.unshift(monthDayFormatter)
                            } else {
                                resultFormat.unshift("monthandday")
                            }
                            return this._normalizeFormat(resultFormat)
                        }
                        if (dateDifferences.month) {
                            return "month"
                        }
                        if (dateDifferences.day) {
                            if (intervalFormat) {
                                resultFormat.unshift("day")
                            } else {
                                const dayFormatter = function(date) {
                                    return _date2.default.format(date, "dayofweek") + ", " + _date2.default.format(date, "day")
                                };
                                resultFormat.unshift(dayFormatter)
                            }
                            return this._normalizeFormat(resultFormat)
                        }
                        return this._normalizeFormat(resultFormat)
                    },
                    getDateFormatByTicks: function(ticks) {
                        let maxDiff;
                        let currentDiff;
                        let i;
                        if (ticks.length > 1) {
                            maxDiff = _date.default.getDatesDifferences(ticks[0], ticks[1]);
                            for (i = 1; i < ticks.length - 1; i++) {
                                currentDiff = _date.default.getDatesDifferences(ticks[i], ticks[i + 1]);
                                if (maxDiff.count < currentDiff.count) {
                                    maxDiff = currentDiff
                                }
                            }
                        } else {
                            maxDiff = {
                                year: true,
                                month: true,
                                day: true,
                                hour: ticks[0].getHours() > 0,
                                minute: ticks[0].getMinutes() > 0,
                                second: ticks[0].getSeconds() > 0,
                                millisecond: ticks[0].getMilliseconds() > 0
                            }
                        }
                        const resultFormat = this.getDateFormatByDifferences(maxDiff);
                        return resultFormat
                    },
                    getDateFormatByTickInterval: function(startValue, endValue, tickInterval) {
                        let dateUnitInterval;
                        const correctDateDifferences = function(dateDifferences, tickInterval, value) {
                            switch (tickInterval) {
                                case "year":
                                case "quarter":
                                    dateDifferences.month = value;
                                case "month":
                                    dateDifferences.day = value;
                                case "week":
                                case "day":
                                    dateDifferences.hour = value;
                                case "hour":
                                    dateDifferences.minute = value;
                                case "minute":
                                    dateDifferences.second = value;
                                case "second":
                                    dateDifferences.millisecond = value
                            }
                        };
                        tickInterval = (0, _type.isString)(tickInterval) ? tickInterval.toLowerCase() : tickInterval;
                        const dateDifferences = _date.default.getDatesDifferences(startValue, endValue);
                        if (startValue !== endValue) {
                            ! function(differences, minDate, maxDate) {
                                if (!maxDate.getMilliseconds() && maxDate.getSeconds()) {
                                    if (maxDate.getSeconds() - minDate.getSeconds() === 1) {
                                        differences.millisecond = true;
                                        differences.second = false
                                    }
                                } else if (!maxDate.getSeconds() && maxDate.getMinutes()) {
                                    if (maxDate.getMinutes() - minDate.getMinutes() === 1) {
                                        differences.second = true;
                                        differences.minute = false
                                    }
                                } else if (!maxDate.getMinutes() && maxDate.getHours()) {
                                    if (maxDate.getHours() - minDate.getHours() === 1) {
                                        differences.minute = true;
                                        differences.hour = false
                                    }
                                } else if (!maxDate.getHours() && maxDate.getDate() > 1) {
                                    if (maxDate.getDate() - minDate.getDate() === 1) {
                                        differences.hour = true;
                                        differences.day = false
                                    }
                                } else if (1 === maxDate.getDate() && maxDate.getMonth()) {
                                    if (maxDate.getMonth() - minDate.getMonth() === 1) {
                                        differences.day = true;
                                        differences.month = false
                                    }
                                } else if (!maxDate.getMonth() && maxDate.getFullYear()) {
                                    if (maxDate.getFullYear() - minDate.getFullYear() === 1) {
                                        differences.month = true;
                                        differences.year = false
                                    }
                                }
                            }(dateDifferences, startValue > endValue ? endValue : startValue, startValue > endValue ? startValue : endValue)
                        }
                        dateUnitInterval = _date.default.getDateUnitInterval(dateDifferences);
                        correctDateDifferences(dateDifferences, dateUnitInterval, true);
                        dateUnitInterval = _date.default.getDateUnitInterval(tickInterval || "second");
                        correctDateDifferences(dateDifferences, dateUnitInterval, false);
                        dateDifferences[{
                            week: "day"
                        } [dateUnitInterval] || dateUnitInterval] = true;
                        const resultFormat = this.getDateFormatByDifferences(dateDifferences);
                        return resultFormat
                    }
                });
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        71582:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/angular.js ***!
              \********************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ./jquery */ 78475);
                __webpack_require__( /*! ./angular/component_registrator */ 38971);
                __webpack_require__( /*! ./angular/event_registrator */ 12993);
                __webpack_require__( /*! ./angular/components */ 11579);
                __webpack_require__( /*! ./angular/action_executors */ 21298)
            },
        21298:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/angular/action_executors.js ***!
              \*************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _action = _interopRequireDefault(__webpack_require__( /*! ../../core/action */ 62414));
                var _angular = _interopRequireDefault(__webpack_require__( /*! angular */ 62387));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                if (_angular.default) {
                    _action.default.registerExecutor({
                        ngExpression: {
                            execute: function(e) {
                                if ("string" === typeof e.action) {
                                    e.context.$eval(e.action)
                                }
                            }
                        }
                    })
                }
            },
        38971:
            /*!******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/angular/component_registrator.js ***!
              \******************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _angular = _interopRequireDefault(__webpack_require__( /*! angular */ 62387));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _config = _interopRequireDefault(__webpack_require__( /*! ../../core/config */ 80209));
                var _component_registrator_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator_callbacks */ 5554));
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 38377));
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/callbacks */ 44504));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _locker = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/locker */ 88933));
                var _editor = _interopRequireDefault(__webpack_require__( /*! ../../ui/editor/editor */ 96452));
                var _template = __webpack_require__( /*! ./template */ 76165);
                var _module = _interopRequireDefault(__webpack_require__( /*! ./module */ 69155));
                var _uiCollection_widget = _interopRequireDefault(__webpack_require__( /*! ../../ui/collection/ui.collection_widget.edit */ 11050));
                var _data = __webpack_require__( /*! ../../core/utils/data */ 47617);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _comparator = __webpack_require__( /*! ../../core/utils/comparator */ 49036);
                var _inflector = __webpack_require__( /*! ../../core/utils/inflector */ 78008);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                if (_angular.default) {
                    const safeApply = (func, scope) => {
                        if (scope.$root.$$phase) {
                            return func(scope)
                        } else {
                            return scope.$apply(() => func(scope))
                        }
                    };
                    const getClassMethod = (initClass, methodName) => {
                        const hasParentProperty = Object.prototype.hasOwnProperty.bind(initClass)("parent");
                        const isES6Class = !hasParentProperty && initClass.parent;
                        if (isES6Class) {
                            const baseClass = Object.getPrototypeOf(initClass);
                            return baseClass.prototype[methodName] ? () => baseClass.prototype[methodName]() : getClassMethod(baseClass, methodName)
                        } else {
                            const method = initClass.parent.prototype[methodName];
                            if (method) {
                                return () => method()
                            }
                            if (!method || !initClass.parent.subclassOf) {
                                return () => {}
                            }
                            return getClassMethod(initClass.parent, methodName)
                        }
                    };
                    let ComponentBuilder = _class.default.inherit({
                        ctor(options) {
                            this._componentDisposing = (0, _callbacks.default)();
                            this._optionChangedCallbacks = (0, _callbacks.default)();
                            this._ngLocker = new _locker.default;
                            this._scope = options.scope;
                            this._$element = options.$element;
                            this._$templates = options.$templates;
                            this._componentClass = options.componentClass;
                            this._parse = options.parse;
                            this._compile = options.compile;
                            this._itemAlias = options.itemAlias;
                            this._transcludeFn = options.transcludeFn;
                            this._digestCallbacks = options.dxDigestCallbacks;
                            this._normalizeOptions(options.ngOptions);
                            this._initComponentBindings();
                            this._initComponent(this._scope);
                            if (!options.ngOptions) {
                                this._addOptionsStringWatcher(options.ngOptionsString)
                            }
                        },
                        _addOptionsStringWatcher(optionsString) {
                            const clearOptionsStringWatcher = this._scope.$watch(optionsString, newOptions => {
                                if (!newOptions) {
                                    return
                                }
                                clearOptionsStringWatcher();
                                this._normalizeOptions(newOptions);
                                this._initComponentBindings();
                                this._component.option(this._evalOptions(this._scope))
                            });
                            this._componentDisposing.add(clearOptionsStringWatcher)
                        },
                        _normalizeOptions(options) {
                            this._ngOptions = (0, _extend.extendFromObject)({}, options);
                            if (!options) {
                                return
                            }
                            if (!Object.prototype.hasOwnProperty.call(options, "bindingOptions") && options.bindingOptions) {
                                this._ngOptions.bindingOptions = options.bindingOptions
                            }
                            if (options.bindingOptions) {
                                (0, _iterator.each)(options.bindingOptions, (key, value) => {
                                    if ("string" === (0, _type.type)(value)) {
                                        this._ngOptions.bindingOptions[key] = {
                                            dataPath: value
                                        }
                                    }
                                })
                            }
                        },
                        _initComponent(scope) {
                            this._component = new this._componentClass(this._$element, this._evalOptions(scope));
                            this._component._isHidden = true;
                            this._handleDigestPhase()
                        },
                        _handleDigestPhase() {
                            const beginUpdate = () => {
                                this._component.beginUpdate()
                            };
                            const endUpdate = () => {
                                this._component.endUpdate()
                            };
                            this._digestCallbacks.begin.add(beginUpdate);
                            this._digestCallbacks.end.add(endUpdate);
                            this._componentDisposing.add(() => {
                                this._digestCallbacks.begin.remove(beginUpdate);
                                this._digestCallbacks.end.remove(endUpdate)
                            })
                        },
                        _initComponentBindings() {
                            const optionDependencies = {};
                            if (!this._ngOptions.bindingOptions) {
                                return
                            }(0, _iterator.each)(this._ngOptions.bindingOptions, (optionPath, value) => {
                                const separatorIndex = optionPath.search(/\[|\./);
                                const optionForSubscribe = separatorIndex > -1 ? optionPath.substring(0, separatorIndex) : optionPath;
                                let prevWatchMethod;
                                let clearWatcher;
                                const valuePath = value.dataPath;
                                let deepWatch = true;
                                let forcePlainWatchMethod = false;
                                if (void 0 !== value.deep) {
                                    forcePlainWatchMethod = deepWatch = !!value.deep
                                }
                                if (!optionDependencies[optionForSubscribe]) {
                                    optionDependencies[optionForSubscribe] = {}
                                }
                                optionDependencies[optionForSubscribe][optionPath] = valuePath;
                                const updateWatcher = () => {
                                    const watchCallback = (newValue, oldValue) => {
                                        if (this._ngLocker.locked(optionPath)) {
                                            return
                                        }
                                        this._ngLocker.obtain(optionPath);
                                        this._component.option(optionPath, newValue);
                                        updateWatcher();
                                        if ((0, _comparator.equals)(oldValue, newValue) && this._ngLocker.locked(optionPath)) {
                                            this._ngLocker.release(optionPath)
                                        }
                                    };
                                    const watchMethod = Array.isArray(this._scope.$eval(valuePath)) && !forcePlainWatchMethod ? "$watchCollection" : "$watch";
                                    if (prevWatchMethod !== watchMethod) {
                                        if (clearWatcher) {
                                            clearWatcher()
                                        }
                                        clearWatcher = this._scope[watchMethod](valuePath, watchCallback, deepWatch);
                                        prevWatchMethod = watchMethod
                                    }
                                };
                                updateWatcher();
                                this._componentDisposing.add(clearWatcher)
                            });
                            this._optionChangedCallbacks.add(args => {
                                const optionName = args.name;
                                const fullName = args.fullName;
                                const component = args.component;
                                if (this._ngLocker.locked(fullName)) {
                                    this._ngLocker.release(fullName);
                                    return
                                }
                                if (!optionDependencies || !optionDependencies[optionName]) {
                                    return
                                }
                                const isActivePhase = this._scope.$root.$$phase;
                                const obtainOption = () => {
                                    this._ngLocker.obtain(fullName)
                                };
                                if (isActivePhase) {
                                    this._digestCallbacks.begin.add(obtainOption)
                                } else {
                                    obtainOption()
                                }
                                safeApply(() => {
                                    (0, _iterator.each)(optionDependencies[optionName], (optionPath, valuePath) => {
                                        if (!this._optionsAreLinked(fullName, optionPath)) {
                                            return
                                        }
                                        const value = component.option(optionPath);
                                        this._parse(valuePath).assign(this._scope, value);
                                        const scopeValue = this._parse(valuePath)(this._scope);
                                        if (scopeValue !== value) {
                                            args.component.option(optionPath, scopeValue)
                                        }
                                    })
                                }, this._scope);
                                const releaseOption = () => {
                                    if (this._ngLocker.locked(fullName)) {
                                        this._ngLocker.release(fullName)
                                    }
                                    this._digestCallbacks.begin.remove(obtainOption);
                                    this._digestCallbacks.end.remove(releaseOption)
                                };
                                if (isActivePhase) {
                                    this._digestCallbacks.end.addPrioritized(releaseOption)
                                } else {
                                    releaseOption()
                                }
                            })
                        },
                        _optionsAreNested(optionPath1, optionPath2) {
                            const parentSeparator = optionPath1[optionPath2.length];
                            return 0 === optionPath1.indexOf(optionPath2) && ("." === parentSeparator || "[" === parentSeparator)
                        },
                        _optionsAreLinked(optionPath1, optionPath2) {
                            if (optionPath1 === optionPath2) {
                                return true
                            }
                            return optionPath1.length > optionPath2.length ? this._optionsAreNested(optionPath1, optionPath2) : this._optionsAreNested(optionPath2, optionPath1)
                        },
                        _compilerByTemplate(template) {
                            const scopeItemsPath = this._getScopeItemsPath();
                            return options => {
                                const $resultMarkup = (0, _renderer.default)(template).clone();
                                const dataIsScope = options.model && options.model.constructor === this._scope.$root.constructor;
                                const templateScope = dataIsScope ? options.model : options.noModel ? this._scope : this._createScopeWithData(options);
                                if (scopeItemsPath) {
                                    this._synchronizeScopes(templateScope, scopeItemsPath, options.index)
                                }
                                $resultMarkup.appendTo(options.container);
                                if (!options.noModel) {
                                    _events_engine.default.on($resultMarkup, "$destroy", () => {
                                        const destroyAlreadyCalled = !templateScope.$parent;
                                        if (destroyAlreadyCalled) {
                                            return
                                        }
                                        templateScope.$destroy()
                                    })
                                }
                                const ngTemplate = this._compile($resultMarkup, this._transcludeFn);
                                this._applyAsync(scope => {
                                    ngTemplate(scope, null, {
                                        parentBoundTranscludeFn: this._transcludeFn
                                    })
                                }, templateScope);
                                return $resultMarkup
                            }
                        },
                        _applyAsync(func, scope) {
                            func(scope);
                            if (!scope.$root.$$phase) {
                                if (!this._renderingTimer) {
                                    const clearRenderingTimer = () => {
                                        clearTimeout(this._renderingTimer)
                                    };
                                    this._renderingTimer = setTimeout(() => {
                                        scope.$apply();
                                        this._renderingTimer = null;
                                        this._componentDisposing.remove(clearRenderingTimer)
                                    });
                                    this._componentDisposing.add(clearRenderingTimer)
                                }
                            }
                        },
                        _getScopeItemsPath() {
                            if (this._componentClass.subclassOf(_uiCollection_widget.default) && this._ngOptions.bindingOptions && this._ngOptions.bindingOptions.items) {
                                return this._ngOptions.bindingOptions.items.dataPath
                            }
                        },
                        _createScopeWithData(options) {
                            const newScope = this._scope.$new();
                            if (this._itemAlias) {
                                newScope[this._itemAlias] = options.model
                            }
                            if ((0, _type.isDefined)(options.index)) {
                                newScope.$index = options.index
                            }
                            return newScope
                        },
                        _synchronizeScopes(itemScope, parentPrefix, itemIndex) {
                            if (this._itemAlias && "object" !== typeof itemScope[this._itemAlias]) {
                                this._synchronizeScopeField({
                                    parentScope: this._scope,
                                    childScope: itemScope,
                                    fieldPath: this._itemAlias,
                                    parentPrefix: parentPrefix,
                                    itemIndex: itemIndex
                                })
                            }
                        },
                        _synchronizeScopeField(args) {
                            const parentScope = args.parentScope;
                            const childScope = args.childScope;
                            const fieldPath = args.fieldPath;
                            const parentPrefix = args.parentPrefix;
                            const itemIndex = args.itemIndex;
                            const innerPathSuffix = fieldPath === this._itemAlias ? "" : "." + fieldPath;
                            const collectionField = void 0 !== itemIndex;
                            const optionOuterBag = [parentPrefix];
                            if (collectionField) {
                                if (!(0, _type.isNumeric)(itemIndex)) {
                                    return
                                }
                                optionOuterBag.push("[", itemIndex, "]")
                            }
                            optionOuterBag.push(innerPathSuffix);
                            const optionOuterPath = optionOuterBag.join("");
                            const clearParentWatcher = parentScope.$watch(optionOuterPath, (newValue, oldValue) => {
                                if (newValue !== oldValue) {
                                    (0, _data.compileSetter)(fieldPath)(childScope, newValue)
                                }
                            });
                            const clearItemWatcher = childScope.$watch(fieldPath, (newValue, oldValue) => {
                                if (newValue !== oldValue) {
                                    if (collectionField && !(0, _data.compileGetter)(parentPrefix)(parentScope)[itemIndex]) {
                                        clearItemWatcher();
                                        return
                                    }(0, _data.compileSetter)(optionOuterPath)(parentScope, newValue)
                                }
                            });
                            this._componentDisposing.add([clearParentWatcher, clearItemWatcher])
                        },
                        _evalOptions(scope) {
                            const result = (0, _extend.extendFromObject)({}, this._ngOptions);
                            delete result.bindingOptions;
                            if (this._ngOptions.bindingOptions) {
                                (0, _iterator.each)(this._ngOptions.bindingOptions, (key, value) => {
                                    result[key] = scope.$eval(value.dataPath)
                                })
                            }
                            result._optionChangedCallbacks = this._optionChangedCallbacks;
                            result._disposingCallbacks = this._componentDisposing;
                            result.onActionCreated = (component, action, config) => {
                                if (config && "rendering" === config.category) {
                                    return action
                                }
                                return function() {
                                    const args = arguments;
                                    if (!scope || !scope.$root || scope.$root.$$phase) {
                                        return action.apply(this, args)
                                    }
                                    return safeApply(() => action.apply(this, args), scope)
                                }
                            };
                            result.beforeActionExecute = result.onActionCreated;
                            result.nestedComponentOptions = component => ({
                                templatesRenderAsynchronously: component.option("templatesRenderAsynchronously"),
                                forceApplyBindings: component.option("forceApplyBindings"),
                                modelByElement: component.option("modelByElement"),
                                onActionCreated: component.option("onActionCreated"),
                                beforeActionExecute: component.option("beforeActionExecute"),
                                nestedComponentOptions: component.option("nestedComponentOptions")
                            });
                            result.templatesRenderAsynchronously = true;
                            if ((0, _config.default)().wrapActionsBeforeExecute) {
                                result.forceApplyBindings = () => {
                                    safeApply(() => {}, scope)
                                }
                            }
                            result.integrationOptions = {
                                createTemplate: element => new _template.NgTemplate(element, this._compilerByTemplate.bind(this)),
                                watchMethod: (fn, callback, options) => {
                                    options = options || {};
                                    let immediateValue;
                                    let skipCallback = options.skipImmediate;
                                    const disposeWatcher = scope.$watch(() => {
                                        let value = fn();
                                        if (value instanceof Date) {
                                            value = value.valueOf()
                                        }
                                        return value
                                    }, newValue => {
                                        const isSameValue = immediateValue === newValue;
                                        if (!skipCallback && (!isSameValue || isSameValue && options.deep)) {
                                            callback(newValue)
                                        }
                                        skipCallback = false
                                    }, options.deep);
                                    if (!skipCallback) {
                                        immediateValue = fn();
                                        callback(immediateValue)
                                    }
                                    if ((0, _config.default)().wrapActionsBeforeExecute) {
                                        this._applyAsync(() => {}, scope)
                                    }
                                    return disposeWatcher
                                },
                                templates: {
                                    "dx-polymorph-widget": {
                                        render: options => {
                                            const widgetName = options.model.widget;
                                            if (!widgetName) {
                                                return
                                            }
                                            const markup = (0, _renderer.default)("<div>").attr((0, _inflector.dasherize)(widgetName), "options").get(0);
                                            const newScope = this._scope.$new();
                                            newScope.options = options.model.options;
                                            options.container.append(markup);
                                            this._compile(markup)(newScope)
                                        }
                                    }
                                }
                            };
                            result.modelByElement = () => scope;
                            return result
                        }
                    });
                    ComponentBuilder = ComponentBuilder.inherit({
                        ctor(options) {
                            this._componentName = options.componentName;
                            this._ngModel = options.ngModel;
                            this._ngModelController = options.ngModelController;
                            this.callBase(...arguments)
                        },
                        _isNgModelRequired() {
                            return _editor.default.isEditor(this._componentClass.prototype) && this._ngModel
                        },
                        _initComponentBindings() {
                            this.callBase(...arguments);
                            this._initNgModelBinding()
                        },
                        _initNgModelBinding() {
                            if (!this._isNgModelRequired()) {
                                return
                            }
                            const clearNgModelWatcher = this._scope.$watch(this._ngModel, (newValue, oldValue) => {
                                if (this._ngLocker.locked("value")) {
                                    return
                                }
                                if (newValue === oldValue) {
                                    return
                                }
                                this._component.option("value", newValue)
                            });
                            this._optionChangedCallbacks.add(args => {
                                this._ngLocker.obtain("value");
                                try {
                                    if ("value" !== args.name) {
                                        return
                                    }
                                    this._ngModelController.$setViewValue(args.value)
                                } finally {
                                    if (this._ngLocker.locked("value")) {
                                        this._ngLocker.release("value")
                                    }
                                }
                            });
                            this._componentDisposing.add(clearNgModelWatcher)
                        },
                        _evalOptions() {
                            if (!this._isNgModelRequired()) {
                                return this.callBase(...arguments)
                            }
                            const result = this.callBase(...arguments);
                            result.value = this._parse(this._ngModel)(this._scope);
                            return result
                        }
                    });
                    const registeredComponents = {};
                    const registerComponentDirective = name => {
                        const priority = "dxValidator" !== name ? 1 : 10;
                        _module.default.directive(name, ["$compile", "$parse", "dxDigestCallbacks", ($compile, $parse, dxDigestCallbacks) => ({
                            restrict: "A",
                            require: "^?ngModel",
                            priority: priority,
                            compile($element) {
                                const componentClass = registeredComponents[name];
                                const useTemplates = componentClass.prototype._useTemplates ? componentClass.prototype._useTemplates() : getClassMethod(componentClass, "_useTemplates")();
                                const $content = useTemplates ? $element.contents().detach() : null;
                                return (scope, $element, attrs, ngModelController, transcludeFn) => {
                                    $element.append($content);
                                    safeApply(() => {
                                        new ComponentBuilder({
                                            componentClass: componentClass,
                                            componentName: name,
                                            compile: $compile,
                                            parse: $parse,
                                            $element: $element,
                                            scope: scope,
                                            ngOptionsString: attrs[name],
                                            ngOptions: attrs[name] ? scope.$eval(attrs[name]) : {},
                                            ngModel: attrs.ngModel,
                                            ngModelController: ngModelController,
                                            transcludeFn: transcludeFn,
                                            itemAlias: attrs.dxItemAlias,
                                            dxDigestCallbacks: dxDigestCallbacks
                                        })
                                    }, scope)
                                }
                            }
                        })])
                    };
                    _component_registrator_callbacks.default.add((name, componentClass) => {
                        if (!registeredComponents[name]) {
                            registerComponentDirective(name)
                        }
                        registeredComponents[name] = componentClass
                    })
                }
            },
        11579:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/angular/components.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/callbacks */ 44504));
                var _module = _interopRequireDefault(__webpack_require__( /*! ./module */ 69155));
                var _angular = _interopRequireDefault(__webpack_require__( /*! angular */ 62387));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                if (_angular.default) {
                    _module.default.service("dxDigestCallbacks", ["$rootScope", function($rootScope) {
                        const begin = (0, _callbacks.default)();
                        const prioritizedEnd = (0, _callbacks.default)();
                        const end = (0, _callbacks.default)();
                        let digestPhase = false;
                        $rootScope.$watch((function() {
                            if (digestPhase) {
                                return
                            }
                            digestPhase = true;
                            begin.fire();
                            $rootScope.$$postDigest((function() {
                                digestPhase = false;
                                prioritizedEnd.fire();
                                end.fire()
                            }))
                        }));
                        return {
                            begin: {
                                add: function(callback) {
                                    if (digestPhase) {
                                        callback()
                                    }
                                    begin.add(callback)
                                },
                                remove: begin.remove.bind(begin)
                            },
                            end: {
                                add: end.add.bind(end),
                                addPrioritized: prioritizedEnd.add.bind(prioritizedEnd),
                                remove: end.remove.bind(end)
                            }
                        }
                    }])
                }
            },
        12993:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/angular/event_registrator.js ***!
              \**************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _event_registrator_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../events/core/event_registrator_callbacks */ 94553));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _module = _interopRequireDefault(__webpack_require__( /*! ./module */ 69155));
                var _angular = _interopRequireDefault(__webpack_require__( /*! angular */ 62387));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                if (_angular.default) {
                    _event_registrator_callbacks.default.add((function(name) {
                        const ngEventName = name.slice(0, 2) + name.charAt(2).toUpperCase() + name.slice(3);
                        _module.default.directive(ngEventName, ["$parse", function($parse) {
                            return function(scope, element, attr) {
                                const attrValue = attr[ngEventName].trim();
                                let handler;
                                let eventOptions = {};
                                if ("{" === attrValue.charAt(0)) {
                                    eventOptions = scope.$eval(attrValue);
                                    handler = $parse(eventOptions.execute)
                                } else {
                                    handler = $parse(attr[ngEventName])
                                }
                                _events_engine.default.on(element, name, eventOptions, (function(e) {
                                    scope.$apply((function() {
                                        handler(scope, {
                                            $event: e
                                        })
                                    }))
                                }))
                            }
                        }])
                    }))
                }
            },
        69155:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/angular/module.js ***!
              \***************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _angular = (obj = __webpack_require__( /*! angular */ 62387), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                let ngModule = {};
                if (_angular.default) {
                    ngModule = _angular.default.module("dx", [])
                }
                var _default = ngModule;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        76165:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/angular/template.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.NgTemplate = void 0;
                var _renderer = (obj = __webpack_require__( /*! ../../core/renderer */ 68374), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _template_base = __webpack_require__( /*! ../../core/templates/template_base */ 81033);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _dom = __webpack_require__( /*! ../../core/utils/dom */ 3532);

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const NgTemplate = function(_TemplateBase) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(NgTemplate, _TemplateBase);

                    function NgTemplate(element, templateCompiler) {
                        var _this;
                        _this = _TemplateBase.call(this) || this;
                        _this._element = element;
                        _this._compiledTemplate = templateCompiler((0, _dom.normalizeTemplateElement)(_this._element));
                        return _this
                    }
                    var _proto = NgTemplate.prototype;
                    _proto._renderCore = function(options) {
                        const compiledTemplate = this._compiledTemplate;
                        return (0, _type.isFunction)(compiledTemplate) ? compiledTemplate(options) : compiledTemplate
                    };
                    _proto.source = function() {
                        return (0, _renderer.default)(this._element).clone()
                    };
                    return NgTemplate
                }(_template_base.TemplateBase);
                exports.NgTemplate = NgTemplate
            },
        78475:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/jquery.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _jquery = _interopRequireDefault(__webpack_require__( /*! jquery */ 96073));
                var _version = __webpack_require__( /*! ../core/utils/version */ 58020);
                var _error = _interopRequireDefault(__webpack_require__( /*! ../core/utils/error */ 95640));
                var _use_jquery = _interopRequireDefault(__webpack_require__( /*! ./jquery/use_jquery */ 72722));
                __webpack_require__( /*! ./jquery/renderer */ 17394);
                __webpack_require__( /*! ./jquery/hooks */ 59228);
                __webpack_require__( /*! ./jquery/deferred */ 66809);
                __webpack_require__( /*! ./jquery/hold_ready */ 32185);
                __webpack_require__( /*! ./jquery/events */ 711);
                __webpack_require__( /*! ./jquery/easing */ 27387);
                __webpack_require__( /*! ./jquery/element_data */ 95063);
                __webpack_require__( /*! ./jquery/element */ 63200);
                __webpack_require__( /*! ./jquery/component_registrator */ 87481);
                __webpack_require__( /*! ./jquery/ajax */ 30829);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const useJQuery = (0, _use_jquery.default)();
                if (useJQuery && (0, _version.compare)(_jquery.default.fn.jquery, [1, 10]) < 0) {
                    throw _error.default.Error("E0012")
                }
            },
        30829:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/jquery/ajax.js ***!
              \************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _jquery = _interopRequireDefault(__webpack_require__( /*! jquery */ 96073));
                var _ajax = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/ajax */ 37208));
                var _use_jquery = _interopRequireDefault(__webpack_require__( /*! ./use_jquery */ 72722));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const useJQuery = (0, _use_jquery.default)();
                if (useJQuery) {
                    _ajax.default.inject({
                        sendRequest: function(options) {
                            if (!options.responseType && !options.upload) {
                                return _jquery.default.ajax(options)
                            }
                            return this.callBase.apply(this, [options])
                        }
                    })
                }
            },
        87481:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/jquery/component_registrator.js ***!
              \*****************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _jquery = _interopRequireDefault(__webpack_require__( /*! jquery */ 96073));
                var _component_registrator_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator_callbacks */ 5554));
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../core/errors */ 17381));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                if (_jquery.default) {
                    const registerJQueryComponent = function(name, componentClass) {
                        _jquery.default.fn[name] = function(options) {
                            const isMemberInvoke = "string" === typeof options;
                            let result;
                            if (isMemberInvoke) {
                                const memberName = options;
                                const memberArgs = [].slice.call(arguments).slice(1);
                                this.each((function() {
                                    const instance = componentClass.getInstance(this);
                                    if (!instance) {
                                        throw _errors.default.Error("E0009", name)
                                    }
                                    const member = instance[memberName];
                                    const memberValue = member.apply(instance, memberArgs);
                                    if (void 0 === result) {
                                        result = memberValue
                                    }
                                }))
                            } else {
                                this.each((function() {
                                    const instance = componentClass.getInstance(this);
                                    if (instance) {
                                        instance.option(options)
                                    } else {
                                        new componentClass(this, options)
                                    }
                                }));
                                result = this
                            }
                            return result
                        }
                    };
                    _component_registrator_callbacks.default.add(registerJQueryComponent)
                }
            },
        66809:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/jquery/deferred.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _jquery = _interopRequireDefault(__webpack_require__( /*! jquery */ 96073));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _version = __webpack_require__( /*! ../../core/utils/version */ 58020);
                var _use_jquery = _interopRequireDefault(__webpack_require__( /*! ./use_jquery */ 72722));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const useJQuery = (0, _use_jquery.default)();
                if (useJQuery) {
                    const Deferred = _jquery.default.Deferred;
                    const strategy = {
                        Deferred: Deferred
                    };
                    strategy.when = (0, _version.compare)(_jquery.default.fn.jquery, [3]) < 0 ? _jquery.default.when : function(singleArg) {
                        if (0 === arguments.length) {
                            return (new Deferred).resolve()
                        } else if (1 === arguments.length) {
                            return singleArg && singleArg.then ? singleArg : (new Deferred).resolve(singleArg)
                        } else {
                            return _jquery.default.when.apply(_jquery.default, arguments)
                        }
                    };
                    (0, _deferred.setStrategy)(strategy)
                }
            },
        27387:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/jquery/easing.js ***!
              \**************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _jquery = (obj = __webpack_require__( /*! jquery */ 96073), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _easing = __webpack_require__( /*! ../../animation/easing */ 23908);
                if (_jquery.default) {
                    (0, _easing.setEasing)(_jquery.default.easing)
                }
            },
        63200:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/jquery/element.js ***!
              \***************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _element = __webpack_require__( /*! ../../core/element */ 6415);
                var _use_jquery = (obj = __webpack_require__( /*! ./use_jquery */ 72722), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const useJQuery = (0, _use_jquery.default)();
                const getPublicElement = function($element) {
                    return $element
                };
                if (useJQuery) {
                    (0, _element.setPublicElementWrapper)(getPublicElement)
                }
            },
        95063:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/jquery/element_data.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _jquery = _interopRequireDefault(__webpack_require__( /*! jquery */ 96073));
                var _element_data = __webpack_require__( /*! ../../core/element_data */ 97906);
                var _use_jquery = _interopRequireDefault(__webpack_require__( /*! ./use_jquery */ 72722));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const useJQuery = (0, _use_jquery.default)();
                if (useJQuery) {
                    (0, _element_data.setDataStrategy)(_jquery.default)
                }
            },
        711:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/jquery/events.js ***!
              \**************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _jquery = _interopRequireDefault(__webpack_require__( /*! jquery */ 96073));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _use_jquery = _interopRequireDefault(__webpack_require__( /*! ./use_jquery */ 72722));
                var _event_registrator_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../events/core/event_registrator_callbacks */ 94553));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const useJQuery = (0, _use_jquery.default)();
                if (useJQuery) {
                    _event_registrator_callbacks.default.add((function(name, eventObject) {
                        _jquery.default.event.special[name] = eventObject
                    }));
                    if (_events_engine.default.passiveEventHandlersSupported()) {
                        _events_engine.default.forcePassiveFalseEventNames.forEach((function(eventName) {
                            _jquery.default.event.special[eventName] = {
                                setup: function(data, namespaces, handler) {
                                    _dom_adapter.default.listen(this, eventName, handler, {
                                        passive: false
                                    })
                                }
                            }
                        }))
                    }
                    _events_engine.default.set({
                        on: function(element) {
                            (0, _jquery.default)(element).on.apply((0, _jquery.default)(element), Array.prototype.slice.call(arguments, 1))
                        },
                        one: function(element) {
                            (0, _jquery.default)(element).one.apply((0, _jquery.default)(element), Array.prototype.slice.call(arguments, 1))
                        },
                        off: function(element) {
                            (0, _jquery.default)(element).off.apply((0, _jquery.default)(element), Array.prototype.slice.call(arguments, 1))
                        },
                        trigger: function(element) {
                            (0, _jquery.default)(element).trigger.apply((0, _jquery.default)(element), Array.prototype.slice.call(arguments, 1))
                        },
                        triggerHandler: function(element) {
                            (0, _jquery.default)(element).triggerHandler.apply((0, _jquery.default)(element), Array.prototype.slice.call(arguments, 1))
                        },
                        Event: _jquery.default.Event
                    })
                }
            },
        32185:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/jquery/hold_ready.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _jquery = _interopRequireDefault(__webpack_require__( /*! jquery */ 96073));
                var _themes_callback = __webpack_require__( /*! ../../ui/themes_callback */ 89729);
                var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/ready_callbacks */ 24311));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                if (_jquery.default && !_themes_callback.themeReadyCallback.fired()) {
                    const holdReady = _jquery.default.holdReady || _jquery.default.fn.holdReady;
                    holdReady(true);
                    _themes_callback.themeReadyCallback.add((function() {
                        _ready_callbacks.default.add((function() {
                            holdReady(false)
                        }))
                    }))
                }
            },
        59228:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/jquery/hooks.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _jquery = _interopRequireDefault(__webpack_require__( /*! jquery */ 96073));
                var _use_jquery = _interopRequireDefault(__webpack_require__( /*! ./use_jquery */ 72722));
                var _version = __webpack_require__( /*! ../../core/utils/version */ 58020);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _event_registrator = _interopRequireDefault(__webpack_require__( /*! ../../events/core/event_registrator */ 85788));
                var _hook_touch_props = _interopRequireDefault(__webpack_require__( /*! ../../events/core/hook_touch_props */ 2418));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const useJQuery = (0, _use_jquery.default)();
                if (useJQuery) {
                    if ((0, _version.compare)(_jquery.default.fn.jquery, [3]) < 0) {
                        const POINTER_TYPE_MAP = {
                            2: "touch",
                            3: "pen",
                            4: "mouse"
                        };
                        (0, _iterator.each)(["MSPointerDown", "MSPointerMove", "MSPointerUp", "MSPointerCancel", "MSPointerOver", "MSPointerOut", "mouseenter", "mouseleave", "pointerdown", "pointermove", "pointerup", "pointercancel", "pointerover", "pointerout", "pointerenter", "pointerleave"], (function() {
                            _jquery.default.event.fixHooks[this] = {
                                filter: function(event, originalEvent) {
                                    const pointerType = originalEvent.pointerType;
                                    if ((0, _type.isNumeric)(pointerType)) {
                                        event.pointerType = POINTER_TYPE_MAP[pointerType]
                                    }
                                    return event
                                },
                                props: _jquery.default.event.mouseHooks.props.concat(["pointerId", "pointerType", "originalTarget", "width", "height", "pressure", "result", "tiltX", "charCode", "tiltY", "detail", "isPrimary", "prevValue"])
                            }
                        }));
                        (0, _iterator.each)(["touchstart", "touchmove", "touchend", "touchcancel"], (function() {
                            _jquery.default.event.fixHooks[this] = {
                                filter: function(event, originalEvent) {
                                    (0, _hook_touch_props.default)((function(name, hook) {
                                        event[name] = hook(originalEvent)
                                    }));
                                    return event
                                },
                                props: _jquery.default.event.mouseHooks.props.concat(["touches", "changedTouches", "targetTouches", "detail", "result", "originalTarget", "charCode", "prevValue"])
                            }
                        }));
                        _jquery.default.event.fixHooks.wheel = _jquery.default.event.mouseHooks;
                        const DX_EVENT_HOOKS = {
                            props: _jquery.default.event.mouseHooks.props.concat(["pointerType", "pointerId", "pointers"])
                        };
                        _event_registrator.default.callbacks.add((function(name) {
                            _jquery.default.event.fixHooks[name] = DX_EVENT_HOOKS
                        }));
                        const fix = function(event, originalEvent) {
                            const fixHook = _jquery.default.event.fixHooks[originalEvent.type] || _jquery.default.event.mouseHooks;
                            const props = fixHook.props ? _jquery.default.event.props.concat(fixHook.props) : _jquery.default.event.props;
                            let propIndex = props.length;
                            while (propIndex--) {
                                const prop = props[propIndex];
                                event[prop] = originalEvent[prop]
                            }
                            return fixHook.filter ? fixHook.filter(event, originalEvent) : event
                        };
                        (0, _index.setEventFixMethod)(fix)
                    } else {
                        (0, _hook_touch_props.default)((function(name, hook) {
                            _jquery.default.event.addProp(name, hook)
                        }))
                    }
                }
            },
        17394:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/jquery/renderer.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _jquery = _interopRequireDefault(__webpack_require__( /*! jquery */ 96073));
                var _renderer_base = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer_base */ 82981));
                var _use_jquery = _interopRequireDefault(__webpack_require__( /*! ./use_jquery */ 72722));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const useJQuery = (0, _use_jquery.default)();
                if (useJQuery) {
                    _renderer_base.default.set(_jquery.default)
                }
            },
        72722:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/jquery/use_jquery.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = function() {
                    return _jquery.default && (0, _config.default)().useJQuery
                };
                var _jquery = _interopRequireDefault(__webpack_require__( /*! jquery */ 96073));
                var _config = _interopRequireDefault(__webpack_require__( /*! ../../core/config */ 80209));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const useJQuery = (0, _config.default)().useJQuery;
                if (_jquery.default && false !== useJQuery) {
                    (0, _config.default)({
                        useJQuery: true
                    })
                }
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        49281:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/knockout.js ***!
              \*********************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _knockout = _interopRequireDefault(__webpack_require__( /*! knockout */ 76130));
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../core/errors */ 17381));
                var _version = __webpack_require__( /*! ../core/utils/version */ 58020);
                __webpack_require__( /*! ./knockout/component_registrator */ 89135);
                __webpack_require__( /*! ./knockout/event_registrator */ 70883);
                __webpack_require__( /*! ./knockout/components */ 89620);
                __webpack_require__( /*! ./knockout/validation */ 24935);
                __webpack_require__( /*! ./knockout/variable_wrapper_utils */ 74942);
                __webpack_require__( /*! ./knockout/clean_node */ 27521);
                __webpack_require__( /*! ./knockout/clean_node_old */ 61823);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                if (_knockout.default) {
                    if ((0, _version.compare)(_knockout.default.version, [2, 3]) < 0) {
                        throw _errors.default.Error("E0013")
                    }
                }
            },
        27521:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/knockout/clean_node.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _element_data = __webpack_require__( /*! ../../core/element_data */ 97906);
                var _knockout = (obj = __webpack_require__( /*! knockout */ 76130), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _version = __webpack_require__( /*! ../../core/utils/version */ 58020);
                var _utils = __webpack_require__( /*! ./utils */ 45994);
                if (_knockout.default) {
                    const originalKOCleanExternalData = _knockout.default.utils.domNodeDisposal.cleanExternalData;
                    const patchCleanData = function() {
                        (0, _element_data.afterCleanData)((function(nodes) {
                            let i;
                            for (i = 0; i < nodes.length; i++) {
                                nodes[i].cleanedByJquery = true
                            }
                            for (i = 0; i < nodes.length; i++) {
                                if (!nodes[i].cleanedByKo) {
                                    _knockout.default.cleanNode(nodes[i])
                                }
                                delete nodes[i].cleanedByKo
                            }
                            for (i = 0; i < nodes.length; i++) {
                                delete nodes[i].cleanedByJquery
                            }
                        }));
                        _knockout.default.utils.domNodeDisposal.cleanExternalData = function(node) {
                            node.cleanedByKo = true;
                            if ((0, _utils.getClosestNodeWithKoCreation)(node)) {
                                if (!node.cleanedByJquery) {
                                    (0, _element_data.cleanData)([node])
                                }
                            }
                        }
                    };
                    const restoreOriginCleanData = function() {
                        (0, _element_data.afterCleanData)((function() {}));
                        _knockout.default.utils.domNodeDisposal.cleanExternalData = originalKOCleanExternalData
                    };
                    patchCleanData();
                    _element_data.strategyChanging.add((function(strategy) {
                        const isJQuery = !!strategy.fn;
                        if (isJQuery && (0, _version.compare)(strategy.fn.jquery, [2, 0]) < 0) {
                            restoreOriginCleanData()
                        }
                    }))
                }
            },
        61823:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/knockout/clean_node_old.js ***!
              \************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _knockout = (obj = __webpack_require__( /*! knockout */ 76130), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _version = __webpack_require__( /*! ../../core/utils/version */ 58020);
                var _element_data = __webpack_require__( /*! ../../core/element_data */ 97906);
                if (_knockout.default) {
                    const patchCleanData = function(jQuery) {
                        const cleanKoData = function(element, andSelf) {
                            const cleanNode = function() {
                                _knockout.default.cleanNode(this)
                            };
                            if (andSelf) {
                                element.each(cleanNode)
                            } else {
                                element.find("*").each(cleanNode)
                            }
                        };
                        const originalEmpty = jQuery.fn.empty;
                        jQuery.fn.empty = function() {
                            cleanKoData(this, false);
                            return originalEmpty.apply(this, arguments)
                        };
                        const originalRemove = jQuery.fn.remove;
                        jQuery.fn.remove = function(selector, keepData) {
                            if (!keepData) {
                                let subject = this;
                                if (selector) {
                                    subject = subject.filter(selector)
                                }
                                cleanKoData(subject, true)
                            }
                            return originalRemove.call(this, selector, keepData)
                        };
                        const originalHtml = jQuery.fn.html;
                        jQuery.fn.html = function(value) {
                            if ("string" === typeof value) {
                                cleanKoData(this, false)
                            }
                            return originalHtml.apply(this, arguments)
                        };
                        const originalReplaceWith = jQuery.fn.replaceWith;
                        jQuery.fn.replaceWith = function() {
                            const result = originalReplaceWith.apply(this, arguments);
                            if (!this.parent().length) {
                                cleanKoData(this, true)
                            }
                            return result
                        }
                    };
                    _element_data.strategyChanging.add((function(strategy) {
                        const isJQuery = !!strategy.fn;
                        if (isJQuery && (0, _version.compare)(strategy.fn.jquery, [2, 0]) < 0) {
                            patchCleanData(strategy)
                        }
                    }))
                }
            },
        89135:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/knockout/component_registrator.js ***!
              \*******************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _knockout = _interopRequireDefault(__webpack_require__( /*! knockout */ 76130));
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/callbacks */ 44504));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _component_registrator_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator_callbacks */ 5554));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../ui/widget/ui.widget */ 14390));
                var _m_base_widget = _interopRequireDefault(__webpack_require__( /*! ../../__internal/viz/core/m_base_widget */ 55845));
                var _component = _interopRequireDefault(__webpack_require__( /*! ../../renovation/component_wrapper/common/component */ 27135));
                var _draggable = _interopRequireDefault(__webpack_require__( /*! ../../ui/draggable */ 42160));
                var _scroll_view = _interopRequireDefault(__webpack_require__( /*! ../../ui/scroll_view */ 4741));
                var _template = __webpack_require__( /*! ./template */ 1129);
                var _editor = _interopRequireDefault(__webpack_require__( /*! ../../ui/editor/editor */ 96452));
                var _locker = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/locker */ 88933));
                var _utils = __webpack_require__( /*! ./utils */ 45994);
                var _config = _interopRequireDefault(__webpack_require__( /*! ../../core/config */ 80209));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                if (_knockout.default) {
                    const LOCKS_DATA_KEY = "dxKoLocks";
                    const CREATED_WITH_KO_DATA_KEY = "dxKoCreation";
                    const editorsBindingHandlers = [];
                    const registerComponentKoBinding = function(componentName, componentClass) {
                        if (_editor.default.isEditor(componentClass.prototype)) {
                            editorsBindingHandlers.push(componentName)
                        }
                        _knockout.default.bindingHandlers[componentName] = {
                            init: function(domNode, valueAccessor) {
                                const $element = (0, _renderer.default)(domNode);
                                const optionChangedCallbacks = (0, _callbacks.default)();
                                let optionsByReference = {};
                                let component;
                                const knockoutConfig = (0, _config.default)().knockout;
                                const isBindingPropertyPredicateName = knockoutConfig && knockoutConfig.isBindingPropertyPredicateName;
                                let isBindingPropertyPredicate;
                                let ctorOptions = {
                                    onInitializing: function(options) {
                                        optionsByReference = this._getOptionsByReference();
                                        _knockout.default.computed(() => {
                                            const model = _knockout.default.unwrap(valueAccessor());
                                            if (component) {
                                                component.beginUpdate()
                                            }
                                            isBindingPropertyPredicate = isBindingPropertyPredicateName && model && model[isBindingPropertyPredicateName];
                                            unwrapModel(model);
                                            if (component) {
                                                component.endUpdate()
                                            } else {
                                                var _model$onInitializing;
                                                null === model || void 0 === model ? void 0 : null === (_model$onInitializing = model.onInitializing) || void 0 === _model$onInitializing ? void 0 : _model$onInitializing.call(this, options)
                                            }
                                        }, null, {
                                            disposeWhenNodeIsRemoved: domNode
                                        });
                                        component = this
                                    },
                                    modelByElement: function($element) {
                                        if ($element.length) {
                                            const node = (0, _utils.getClosestNodeWithContext)($element.get(0));
                                            return _knockout.default.dataFor(node)
                                        }
                                    },
                                    nestedComponentOptions: function(component) {
                                        return {
                                            modelByElement: component.option("modelByElement"),
                                            nestedComponentOptions: component.option("nestedComponentOptions")
                                        }
                                    },
                                    _optionChangedCallbacks: optionChangedCallbacks,
                                    integrationOptions: {
                                        watchMethod: function(fn, callback, options) {
                                            options = options || {};
                                            let skipCallback = options.skipImmediate;
                                            const watcher = _knockout.default.computed((function() {
                                                const newValue = _knockout.default.unwrap(fn());
                                                if (!skipCallback) {
                                                    callback(newValue)
                                                }
                                                skipCallback = false
                                            }));
                                            return function() {
                                                watcher.dispose()
                                            }
                                        },
                                        templates: {
                                            "dx-polymorph-widget": {
                                                render: function(options) {
                                                    const widgetName = _knockout.default.utils.unwrapObservable(options.model.widget);
                                                    if (!widgetName) {
                                                        return
                                                    }
                                                    const markup = (0, _renderer.default)("<div>").attr("data-bind", widgetName + ": options").get(0);
                                                    (0, _renderer.default)(options.container).append(markup);
                                                    _knockout.default.applyBindings(options.model, markup)
                                                }
                                            }
                                        },
                                        createTemplate: function(element) {
                                            return new _template.KoTemplate(element)
                                        }
                                    }
                                };
                                const optionNameToModelMap = {};
                                const applyModelValueToOption = function(optionName, modelValue, unwrap) {
                                    const locks = $element.data(LOCKS_DATA_KEY);
                                    const optionValue = unwrap ? _knockout.default.unwrap(modelValue) : modelValue;
                                    if (_knockout.default.isWriteableObservable(modelValue)) {
                                        optionNameToModelMap[optionName] = modelValue
                                    }
                                    if (component) {
                                        if (locks.locked(optionName)) {
                                            return
                                        }
                                        locks.obtain(optionName);
                                        try {
                                            if (_knockout.default.ignoreDependencies) {
                                                _knockout.default.ignoreDependencies(component.option, component, [optionName, optionValue])
                                            } else {
                                                component.option(optionName, optionValue)
                                            }
                                        } finally {
                                            locks.release(optionName)
                                        }
                                    } else {
                                        ctorOptions[optionName] = optionValue
                                    }
                                };
                                const handleOptionChanged = function(args) {
                                    const optionName = args.fullName;
                                    const optionValue = args.value;
                                    if (!(optionName in optionNameToModelMap)) {
                                        return
                                    }
                                    const $element = this._$element;
                                    const locks = $element.data(LOCKS_DATA_KEY);
                                    if (locks.locked(optionName)) {
                                        return
                                    }
                                    locks.obtain(optionName);
                                    try {
                                        optionNameToModelMap[optionName](optionValue)
                                    } finally {
                                        locks.release(optionName)
                                    }
                                };
                                const unwrapModelValue = function(currentModel, propertyName, propertyPath) {
                                    if (propertyPath === isBindingPropertyPredicateName) {
                                        return
                                    }
                                    if (!isBindingPropertyPredicate || isBindingPropertyPredicate(propertyPath, propertyName, currentModel)) {
                                        let unwrappedPropertyValue;
                                        _knockout.default.computed((function() {
                                            const propertyValue = currentModel[propertyName];
                                            applyModelValueToOption(propertyPath, propertyValue, true);
                                            unwrappedPropertyValue = _knockout.default.unwrap(propertyValue)
                                        }), null, {
                                            disposeWhenNodeIsRemoved: domNode
                                        });
                                        if ((0, _type.isPlainObject)(unwrappedPropertyValue)) {
                                            if (!optionsByReference[propertyPath]) {
                                                unwrapModel(unwrappedPropertyValue, propertyPath)
                                            }
                                        }
                                    } else {
                                        applyModelValueToOption(propertyPath, currentModel[propertyName], false)
                                    }
                                };

                                function unwrapModel(model, propertyPath) {
                                    for (const propertyName in model) {
                                        if (Object.prototype.hasOwnProperty.call(model, propertyName)) {
                                            unwrapModelValue(model, propertyName, propertyPath ? [propertyPath, propertyName].join(".") : propertyName)
                                        }
                                    }
                                }! function() {
                                    optionChangedCallbacks.add(handleOptionChanged);
                                    $element.data(CREATED_WITH_KO_DATA_KEY, true).data(LOCKS_DATA_KEY, new _locker.default);
                                    new componentClass($element, ctorOptions);
                                    ctorOptions = null
                                }();
                                return {
                                    controlsDescendantBindings: componentClass.subclassOf(_ui.default) || componentClass.subclassOf(_m_base_widget.default) || componentClass.subclassOf(_component.default) && !(component instanceof _scroll_view.default) || component instanceof _draggable.default
                                }
                            }
                        };
                        if ("dxValidator" === componentName) {
                            _knockout.default.bindingHandlers.dxValidator.after = editorsBindingHandlers
                        }
                    };
                    _component_registrator_callbacks.default.add((function(name, componentClass) {
                        registerComponentKoBinding(name, componentClass)
                    }))
                }
            },
        89620:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/knockout/components.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _knockout = (obj = __webpack_require__( /*! knockout */ 76130), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _icon = __webpack_require__( /*! ../../core/utils/icon */ 44899);
                if (_knockout.default) {
                    _knockout.default.bindingHandlers.dxControlsDescendantBindings = {
                        init: function(_, valueAccessor) {
                            return {
                                controlsDescendantBindings: _knockout.default.unwrap(valueAccessor())
                            }
                        }
                    };
                    _knockout.default.bindingHandlers.dxIcon = {
                        init: function(element, valueAccessor) {
                            const options = _knockout.default.utils.unwrapObservable(valueAccessor()) || {};
                            const iconElement = (0, _icon.getImageContainer)(options);
                            _knockout.default.virtualElements.emptyNode(element);
                            if (iconElement) {
                                _knockout.default.virtualElements.prepend(element, iconElement.get(0))
                            }
                        },
                        update: function(element, valueAccessor) {
                            const options = _knockout.default.utils.unwrapObservable(valueAccessor()) || {};
                            const iconElement = (0, _icon.getImageContainer)(options);
                            _knockout.default.virtualElements.emptyNode(element);
                            if (iconElement) {
                                _knockout.default.virtualElements.prepend(element, iconElement.get(0))
                            }
                        }
                    };
                    _knockout.default.virtualElements.allowedBindings.dxIcon = true
                }
            },
        70883:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/knockout/event_registrator.js ***!
              \***************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _knockout = _interopRequireDefault(__webpack_require__( /*! knockout */ 76130));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _event_registrator_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../events/core/event_registrator_callbacks */ 94553));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                if (_knockout.default) {
                    _event_registrator_callbacks.default.add((function(name) {
                        const koBindingEventName = (0, _index.addNamespace)(name, name + "Binding");
                        _knockout.default.bindingHandlers[name] = {
                            update: function(element, valueAccessor, allBindingsAccessor, viewModel) {
                                const $element = (0, _renderer.default)(element);
                                const unwrappedValue = _knockout.default.utils.unwrapObservable(valueAccessor());
                                const eventSource = unwrappedValue.execute ? unwrappedValue.execute : unwrappedValue;
                                _events_engine.default.off($element, koBindingEventName);
                                _events_engine.default.on($element, koBindingEventName, (0, _type.isPlainObject)(unwrappedValue) ? unwrappedValue : {}, (function(e) {
                                    eventSource.call(viewModel, viewModel, e)
                                }))
                            }
                        }
                    }))
                }
            },
        1129:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/knockout/template.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.KoTemplate = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _knockout = _interopRequireDefault(__webpack_require__( /*! knockout */ 76130));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _template_base = __webpack_require__( /*! ../../core/templates/template_base */ 81033);
                var _dom = __webpack_require__( /*! ../../core/utils/dom */ 3532);
                var _utils = __webpack_require__( /*! ./utils */ 45994);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const KoTemplate = function(_TemplateBase) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(KoTemplate, _TemplateBase);

                    function KoTemplate(element) {
                        var _this;
                        _this = _TemplateBase.call(this) || this;
                        _this._element = element;
                        _this._template = (0, _renderer.default)("<div>").append((0, _dom.normalizeTemplateElement)(element));
                        _this._registerKoTemplate();
                        return _this
                    }
                    var _proto = KoTemplate.prototype;
                    _proto._registerKoTemplate = function() {
                        const template = this._template.get(0);
                        new _knockout.default.templateSources.anonymousTemplate(template).nodes(template)
                    };
                    _proto._prepareDataForContainer = function(data, container) {
                        if (container && container.length) {
                            const node = (0, _utils.getClosestNodeWithContext)(container.get(0));
                            const containerContext = _knockout.default.contextFor(node);
                            data = void 0 !== data ? data : _knockout.default.dataFor(node) || {};
                            if (containerContext) {
                                return data === containerContext.$data ? containerContext : containerContext.createChildContext(data)
                            }
                        }
                        return function(data) {
                            const parentNode = _dom_adapter.default.createElement("div");
                            _knockout.default.applyBindingsToNode(parentNode, null, data);
                            const parentContext = _knockout.default.contextFor(parentNode);
                            _knockout.default.cleanNode(parentNode);
                            return parentContext
                        }(data).createChildContext(data)
                    };
                    _proto._renderCore = function(options) {
                        const model = this._prepareDataForContainer(options.model, (0, _renderer.default)(options.container));
                        if ((0, _type.isDefined)(options.index)) {
                            model.$index = options.index
                        }
                        const $placeholder = (0, _renderer.default)("<div>").appendTo(options.container);
                        let $result;
                        _knockout.default.renderTemplate(this._template.get(0), model, {
                            afterRender: function(nodes) {
                                $result = (0, _renderer.default)(nodes)
                            }
                        }, $placeholder.get(0), "replaceNode");
                        return $result
                    };
                    _proto.source = function() {
                        return (0, _renderer.default)(this._element).clone()
                    };
                    _proto.dispose = function() {
                        this._template.remove()
                    };
                    return KoTemplate
                }(_template_base.TemplateBase);
                exports.KoTemplate = KoTemplate
            },
        45994:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/knockout/utils.js ***!
              \***************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getClosestNodeWithKoCreation = exports.getClosestNodeWithContext = void 0;
                var _knockout = _interopRequireDefault(__webpack_require__( /*! knockout */ 76130));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const getClosestNodeWithContext = node => {
                    const context = _knockout.default.contextFor(node);
                    if (!context && node.parentNode) {
                        return getClosestNodeWithContext(node.parentNode)
                    }
                    return node
                };
                exports.getClosestNodeWithContext = getClosestNodeWithContext;
                const getClosestNodeWithKoCreation = node => {
                    const $el = (0, _renderer.default)(node);
                    const data = $el.data();
                    const hasFlag = data && data.dxKoCreation;
                    if (hasFlag) {
                        return node
                    }
                    if (node.parentNode) {
                        return getClosestNodeWithKoCreation(node.parentNode)
                    }
                    return null
                };
                exports.getClosestNodeWithKoCreation = getClosestNodeWithKoCreation
            },
        24935:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/knockout/validation.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 38377));
                var _events_strategy = __webpack_require__( /*! ../../core/events_strategy */ 80566);
                var _validation_engine = _interopRequireDefault(__webpack_require__( /*! ../../ui/validation_engine */ 90964));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 73176));
                var _knockout = _interopRequireDefault(__webpack_require__( /*! knockout */ 76130));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                if (_knockout.default) {
                    const VALIDATION_STATUS_VALID = "valid";
                    const VALIDATION_STATUS_PENDING = "pending";
                    const koDxValidator = _class.default.inherit({
                        ctor(target, _ref) {
                            let {
                                name: name,
                                validationRules: validationRules
                            } = _ref;
                            this.target = target;
                            this.name = name;
                            this.isValid = _knockout.default.observable(true);
                            this.validationError = _knockout.default.observable();
                            this.validationErrors = _knockout.default.observable();
                            this.validationStatus = _knockout.default.observable(VALIDATION_STATUS_VALID);
                            this._eventsStrategy = new _events_strategy.EventsStrategy(this);
                            this.validationRules = (0, _iterator.map)(validationRules, (rule, index) => (0, _extend.extend)({}, rule, {
                                validator: this,
                                index: index
                            }));
                            this._validationInfo = {
                                result: null,
                                deferred: null
                            }
                        },
                        _updateValidationResult(result) {
                            if (!this._validationInfo.result || this._validationInfo.result.id !== result.id) {
                                const complete = this._validationInfo.deferred && this._validationInfo.result.complete;
                                this._validationInfo.result = (0, _extend.extend)({}, result, {
                                    complete: complete
                                })
                            } else {
                                for (const prop in result) {
                                    if ("id" !== prop && "complete" !== prop) {
                                        this._validationInfo.result[prop] = result[prop]
                                    }
                                }
                            }
                        },
                        validate() {
                            const currentResult = this._validationInfo && this._validationInfo.result;
                            const value = this.target();
                            if (currentResult && currentResult.status === VALIDATION_STATUS_PENDING && currentResult.value === value) {
                                return (0, _extend.extend)({}, currentResult)
                            }
                            const result = _validation_engine.default.validate(value, this.validationRules, this.name);
                            result.id = (new _guid.default).toString();
                            this._applyValidationResult(result);
                            result.complete && result.complete.then(res => {
                                if (res.id === this._validationInfo.result.id) {
                                    this._applyValidationResult(res)
                                }
                            });
                            return (0, _extend.extend)({}, this._validationInfo.result)
                        },
                        reset() {
                            this.target(null);
                            const result = {
                                id: null,
                                isValid: true,
                                brokenRule: null,
                                pendingRules: null,
                                status: VALIDATION_STATUS_VALID,
                                complete: null
                            };
                            this._applyValidationResult(result);
                            return result
                        },
                        _applyValidationResult(result) {
                            result.validator = this;
                            this._updateValidationResult(result);
                            this.target.dxValidator.isValid(this._validationInfo.result.isValid);
                            this.target.dxValidator.validationError(this._validationInfo.result.brokenRule);
                            this.target.dxValidator.validationErrors(this._validationInfo.result.brokenRules);
                            this.target.dxValidator.validationStatus(this._validationInfo.result.status);
                            if (result.status === VALIDATION_STATUS_PENDING) {
                                if (!this._validationInfo.deferred) {
                                    this._validationInfo.deferred = new _deferred.Deferred;
                                    this._validationInfo.result.complete = this._validationInfo.deferred.promise()
                                }
                                this._eventsStrategy.fireEvent("validating", [this._validationInfo.result]);
                                return
                            }
                            if (result.status !== VALIDATION_STATUS_PENDING) {
                                this._eventsStrategy.fireEvent("validated", [result]);
                                if (this._validationInfo.deferred) {
                                    this._validationInfo.deferred.resolve(result);
                                    this._validationInfo.deferred = null
                                }
                            }
                        },
                        on(eventName, eventHandler) {
                            this._eventsStrategy.on(eventName, eventHandler);
                            return this
                        },
                        off(eventName, eventHandler) {
                            this._eventsStrategy.off(eventName, eventHandler);
                            return this
                        }
                    });
                    _knockout.default.extenders.dxValidator = function(target, option) {
                        target.dxValidator = new koDxValidator(target, option);
                        target.subscribe(target.dxValidator.validate.bind(target.dxValidator));
                        return target
                    };
                    _validation_engine.default.registerModelForValidation = function(model) {
                        (0, _iterator.each)(model, (function(name, member) {
                            if (_knockout.default.isObservable(member) && member.dxValidator) {
                                _validation_engine.default.registerValidatorInGroup(model, member.dxValidator)
                            }
                        }))
                    };
                    _validation_engine.default.unregisterModelForValidation = function(model) {
                        (0, _iterator.each)(model, (function(name, member) {
                            if (_knockout.default.isObservable(member) && member.dxValidator) {
                                _validation_engine.default.removeRegisteredValidator(model, member.dxValidator)
                            }
                        }))
                    };
                    _validation_engine.default.validateModel = _validation_engine.default.validateGroup
                }
            },
        74942:
            /*!********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/integration/knockout/variable_wrapper_utils.js ***!
              \********************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _knockout = _interopRequireDefault(__webpack_require__( /*! knockout */ 76130));
                var _variable_wrapper = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/variable_wrapper */ 26974));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                if (_knockout.default) {
                    _variable_wrapper.default.inject({
                        isWrapped: _knockout.default.isObservable,
                        isWritableWrapped: _knockout.default.isWritableObservable,
                        wrap: _knockout.default.observable,
                        unwrap: function(value) {
                            if (_knockout.default.isObservable(value)) {
                                return _knockout.default.utils.unwrapObservable(value)
                            }
                            return this.callBase(value)
                        },
                        assign: function(variable, value) {
                            if (_knockout.default.isObservable(variable)) {
                                variable(value)
                            } else {
                                this.callBase(variable, value)
                            }
                        }
                    })
                }
            },
        94484:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization.js ***!
              \*************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "date", {
                    enumerable: true,
                    get: function() {
                        return _date.default
                    }
                });
                exports.disableIntl = function() {
                    if ("intl" === _number.default.engine()) {
                        _number.default.resetInjection()
                    }
                    if ("intl" === _date.default.engine()) {
                        _date.default.resetInjection()
                    }
                };
                exports.locale = exports.loadMessages = exports.formatNumber = exports.formatMessage = exports.formatDate = void 0;
                Object.defineProperty(exports, "message", {
                    enumerable: true,
                    get: function() {
                        return _message.default
                    }
                });
                Object.defineProperty(exports, "number", {
                    enumerable: true,
                    get: function() {
                        return _number.default
                    }
                });
                exports.parseNumber = exports.parseDate = void 0;
                var _core = _interopRequireDefault(__webpack_require__( /*! ./localization/core */ 91331));
                var _message = _interopRequireDefault(__webpack_require__( /*! ./localization/message */ 28109));
                var _number = _interopRequireDefault(__webpack_require__( /*! ./localization/number */ 18016));
                var _date = _interopRequireDefault(__webpack_require__( /*! ./localization/date */ 91500));
                __webpack_require__( /*! ./localization/currency */ 89740);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const locale = _core.default.locale.bind(_core.default);
                exports.locale = locale;
                const loadMessages = _message.default.load.bind(_message.default);
                exports.loadMessages = loadMessages;
                const formatMessage = _message.default.format.bind(_message.default);
                exports.formatMessage = formatMessage;
                const formatNumber = _number.default.format.bind(_number.default);
                exports.formatNumber = formatNumber;
                const parseNumber = _number.default.parse.bind(_number.default);
                exports.parseNumber = parseNumber;
                const formatDate = _date.default.format.bind(_date.default);
                exports.formatDate = formatDate;
                const parseDate = _date.default.parse.bind(_date.default);
                exports.parseDate = parseDate
            },
        71868:
            /*!******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/cldr-data/accounting_formats.js ***!
              \******************************************************************************************/
            function(module, exports) {
                exports.default = void 0;
                // !!! AUTO-GENERATED FILE, DO NOT EDIT
                exports.default = {
                    af: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "af-NA": "\xa4#,##0.00;(\xa4#,##0.00)",
                    agq: "#,##0.00\xa4",
                    ak: "\xa4#,##0.00",
                    am: "\xa4#,##0.00;(\xa4#,##0.00)",
                    ar: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-AE": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-BH": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-DJ": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-DZ": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-EG": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-EH": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-ER": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-IL": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-IQ": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-JO": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-KM": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-KW": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-LB": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-LY": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-MA": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-MR": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-OM": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-PS": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-QA": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-SA": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-SD": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-SO": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-SS": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-SY": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-TD": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-TN": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ar-YE": "\xa4#,##0.00;(\xa4#,##0.00)",
                    as: "\xa4\xa0#,##,##0.00",
                    asa: "#,##0.00\xa0\xa4",
                    ast: "#,##0.00\xa0\xa4",
                    az: "#,##0.00\xa0\xa4",
                    "az-Cyrl": "#,##0.00\xa0\xa4",
                    "az-Latn": "#,##0.00\xa0\xa4",
                    bas: "#,##0.00\xa0\xa4",
                    be: "#,##0.00\xa0\xa4",
                    "be-tarask": "#,##0.00\xa0\xa4",
                    bem: "\xa4#,##0.00;(\xa4#,##0.00)",
                    bez: "#,##0.00\xa4",
                    bg: "0.00\xa0\xa4;(0.00\xa0\xa4)",
                    bm: "\xa4#,##0.00;(\xa4#,##0.00)",
                    bn: "#,##,##0.00\xa4;(#,##,##0.00\xa4)",
                    "bn-IN": "#,##,##0.00\xa4;(#,##,##0.00\xa4)",
                    bo: "\xa4\xa0#,##0.00",
                    "bo-IN": "\xa4\xa0#,##0.00",
                    br: "#,##0.00\xa0\xa4",
                    brx: "\xa4\xa0#,##,##0.00",
                    bs: "#,##0.00\xa0\xa4",
                    "bs-Cyrl": "#,##0.00\xa0\xa4",
                    "bs-Latn": "#,##0.00\xa0\xa4",
                    ca: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "ca-AD": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "ca-ES-valencia": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "ca-FR": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "ca-IT": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    ccp: "#,##,##0.00\xa4;(#,##,##0.00\xa4)",
                    "ccp-IN": "#,##,##0.00\xa4;(#,##,##0.00\xa4)",
                    ce: "#,##0.00\xa0\xa4",
                    ceb: "\xa4#,##0.00;(\xa4#,##0.00)",
                    cgg: "\xa4#,##0.00",
                    chr: "\xa4#,##0.00;(\xa4#,##0.00)",
                    ckb: "\xa4\xa0#,##0.00",
                    "ckb-IR": "\xa4\xa0#,##0.00",
                    cs: "#,##0.00\xa0\xa4",
                    cy: "\xa4#,##0.00;(\xa4#,##0.00)",
                    da: "#,##0.00\xa0\xa4",
                    "da-GL": "#,##0.00\xa0\xa4",
                    dav: "\xa4#,##0.00;(\xa4#,##0.00)",
                    de: "#,##0.00\xa0\xa4",
                    "de-AT": "#,##0.00\xa0\xa4",
                    "de-BE": "#,##0.00\xa0\xa4",
                    "de-CH": "#,##0.00\xa0\xa4",
                    "de-IT": "#,##0.00\xa0\xa4",
                    "de-LI": "#,##0.00\xa0\xa4",
                    "de-LU": "#,##0.00\xa0\xa4",
                    dje: "#,##0.00\xa4",
                    doi: "\xa4#,##0.00",
                    dsb: "#,##0.00\xa0\xa4",
                    dua: "#,##0.00\xa0\xa4",
                    dyo: "#,##0.00\xa0\xa4",
                    dz: "\xa4#,##,##0.00",
                    ebu: "\xa4#,##0.00;(\xa4#,##0.00)",
                    ee: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ee-TG": "\xa4#,##0.00;(\xa4#,##0.00)",
                    el: "#,##0.00\xa0\xa4",
                    "el-CY": "#,##0.00\xa0\xa4",
                    en: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-001": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-150": "#,##0.00\xa0\xa4",
                    "en-AE": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-AG": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-AI": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-AS": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-AT": "\xa4\xa0#,##0.00",
                    "en-AU": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-BB": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-BE": "#,##0.00\xa0\xa4",
                    "en-BI": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-BM": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-BS": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-BW": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-BZ": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-CA": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-CC": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-CH": "\xa4\xa0#,##0.00;\xa4-#,##0.00",
                    "en-CK": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-CM": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-CX": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-CY": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-DE": "#,##0.00\xa0\xa4",
                    "en-DG": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-DK": "#,##0.00\xa0\xa4",
                    "en-DM": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-ER": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-FI": "#,##0.00\xa0\xa4",
                    "en-FJ": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-FK": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-FM": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-GB": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-GD": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-GG": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-GH": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-GI": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-GM": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-GU": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-GY": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-HK": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-IE": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-IL": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-IM": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-IN": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-IO": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-JE": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-JM": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-KE": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-KI": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-KN": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-KY": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-LC": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-LR": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-LS": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-MG": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-MH": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-MO": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-MP": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-MS": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-MT": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-MU": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-MV": "\xa4\xa0#,##0.00",
                    "en-MW": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-MY": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-NA": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-NF": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-NG": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-NL": "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)",
                    "en-NR": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-NU": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-NZ": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-PG": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-PH": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-PK": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-PN": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-PR": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-PW": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-RW": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-SB": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-SC": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-SD": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-SE": "#,##0.00\xa0\xa4",
                    "en-SG": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-SH": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-SI": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "en-SL": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-SS": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-SX": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-SZ": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-TC": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-TK": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-TO": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-TT": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-TV": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-TZ": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-UG": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-UM": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-VC": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-VG": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-VI": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-VU": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-WS": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-ZA": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-ZM": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "en-ZW": "\xa4#,##0.00;(\xa4#,##0.00)",
                    eo: "\xa4\xa0#,##0.00",
                    es: "#,##0.00\xa0\xa4",
                    "es-419": "\xa4#,##0.00",
                    "es-AR": "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)",
                    "es-BO": "\xa4#,##0.00",
                    "es-BR": "\xa4#,##0.00",
                    "es-BZ": "\xa4#,##0.00",
                    "es-CL": "\xa4#,##0.00",
                    "es-CO": "\xa4#,##0.00",
                    "es-CR": "\xa4#,##0.00",
                    "es-CU": "\xa4#,##0.00",
                    "es-DO": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "es-EA": "#,##0.00\xa0\xa4",
                    "es-EC": "\xa4#,##0.00",
                    "es-GQ": "#,##0.00\xa0\xa4",
                    "es-GT": "\xa4#,##0.00",
                    "es-HN": "\xa4#,##0.00",
                    "es-IC": "#,##0.00\xa0\xa4",
                    "es-MX": "\xa4#,##0.00",
                    "es-NI": "\xa4#,##0.00",
                    "es-PA": "\xa4#,##0.00",
                    "es-PE": "\xa4#,##0.00",
                    "es-PH": "#,##0.00\xa0\xa4",
                    "es-PR": "\xa4#,##0.00",
                    "es-PY": "\xa4#,##0.00",
                    "es-SV": "\xa4#,##0.00",
                    "es-US": "\xa4#,##0.00",
                    "es-UY": "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)",
                    "es-VE": "\xa4#,##0.00",
                    et: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    eu: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    ewo: "#,##0.00\xa0\xa4",
                    fa: "\u200e\xa4\xa0#,##0.00;\u200e(\xa4\xa0#,##0.00)",
                    "fa-AF": "\xa4\xa0#,##0.00;\u200e(\xa4\xa0#,##0.00)",
                    ff: "#,##0.00\xa0\xa4",
                    "ff-Adlm": "\xa4\xa0#,##0.00",
                    "ff-Adlm-BF": "\xa4\xa0#,##0.00",
                    "ff-Adlm-CM": "\xa4\xa0#,##0.00",
                    "ff-Adlm-GH": "\xa4\xa0#,##0.00",
                    "ff-Adlm-GM": "\xa4\xa0#,##0.00",
                    "ff-Adlm-GW": "\xa4\xa0#,##0.00",
                    "ff-Adlm-LR": "\xa4\xa0#,##0.00",
                    "ff-Adlm-MR": "\xa4\xa0#,##0.00",
                    "ff-Adlm-NE": "\xa4\xa0#,##0.00",
                    "ff-Adlm-NG": "\xa4\xa0#,##0.00",
                    "ff-Adlm-SL": "\xa4\xa0#,##0.00",
                    "ff-Adlm-SN": "\xa4\xa0#,##0.00",
                    "ff-Latn": "#,##0.00\xa0\xa4",
                    "ff-Latn-BF": "#,##0.00\xa0\xa4",
                    "ff-Latn-CM": "#,##0.00\xa0\xa4",
                    "ff-Latn-GH": "#,##0.00\xa0\xa4",
                    "ff-Latn-GM": "#,##0.00\xa0\xa4",
                    "ff-Latn-GN": "#,##0.00\xa0\xa4",
                    "ff-Latn-GW": "#,##0.00\xa0\xa4",
                    "ff-Latn-LR": "#,##0.00\xa0\xa4",
                    "ff-Latn-MR": "#,##0.00\xa0\xa4",
                    "ff-Latn-NE": "#,##0.00\xa0\xa4",
                    "ff-Latn-NG": "#,##0.00\xa0\xa4",
                    "ff-Latn-SL": "#,##0.00\xa0\xa4",
                    fi: "#,##0.00\xa0\xa4",
                    fil: "\xa4#,##0.00;(\xa4#,##0.00)",
                    fo: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fo-DK": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    fr: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-BE": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-BF": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-BI": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-BJ": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-BL": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-CA": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-CD": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-CF": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-CG": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-CH": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-CI": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-CM": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-DJ": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-DZ": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-GA": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-GF": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-GN": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-GP": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-GQ": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-HT": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-KM": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-LU": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-MA": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-MC": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-MF": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-MG": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-ML": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-MQ": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-MR": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-MU": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-NC": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-NE": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-PF": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-PM": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-RE": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-RW": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-SC": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-SN": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-SY": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-TD": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-TG": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-TN": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-VU": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-WF": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "fr-YT": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    fur: "\xa4\xa0#,##0.00",
                    fy: "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)",
                    ga: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ga-GB": "\xa4#,##0.00;(\xa4#,##0.00)",
                    gd: "\xa4#,##0.00;(\xa4#,##0.00)",
                    gl: "#,##0.00\xa0\xa4",
                    gsw: "#,##0.00\xa0\xa4",
                    "gsw-FR": "#,##0.00\xa0\xa4",
                    "gsw-LI": "#,##0.00\xa0\xa4",
                    gu: "\xa4#,##,##0.00;(\xa4#,##,##0.00)",
                    guz: "\xa4#,##0.00;(\xa4#,##0.00)",
                    gv: "\xa4#,##0.00",
                    ha: "\xa4\xa0#,##0.00",
                    "ha-GH": "\xa4\xa0#,##0.00",
                    "ha-NE": "\xa4\xa0#,##0.00",
                    haw: "\xa4#,##0.00;(\xa4#,##0.00)",
                    he: "#,##0.00\xa0\xa4",
                    hi: "\xa4#,##,##0.00",
                    "hi-Latn": "\xa4#,##,##0.00",
                    hr: "#,##0.00\xa0\xa4",
                    "hr-BA": "#,##0.00\xa0\xa4",
                    hsb: "#,##0.00\xa0\xa4",
                    hu: "#,##0.00\xa0\xa4",
                    hy: "#,##0.00\xa0\xa4",
                    ia: "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)",
                    id: "\xa4#,##0.00",
                    ig: "\xa4#,##0.00;(\xa4#,##0.00)",
                    ii: "\xa4\xa0#,##0.00",
                    is: "#,##0.00\xa0\xa4",
                    it: "#,##0.00\xa0\xa4",
                    "it-CH": "#,##0.00\xa0\xa4",
                    "it-SM": "#,##0.00\xa0\xa4",
                    "it-VA": "#,##0.00\xa0\xa4",
                    ja: "\xa4#,##0.00;(\xa4#,##0.00)",
                    jgo: "\xa4\xa0#,##0.00",
                    jmc: "\xa4#,##0.00",
                    jv: "\xa4\xa0#,##0.00",
                    ka: "#,##0.00\xa0\xa4",
                    kab: "#,##0.00\xa4",
                    kam: "\xa4#,##0.00;(\xa4#,##0.00)",
                    kde: "\xa4#,##0.00;(\xa4#,##0.00)",
                    kea: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    kgp: "\xa4\xa0#,##0.00",
                    khq: "#,##0.00\xa4",
                    ki: "\xa4#,##0.00;(\xa4#,##0.00)",
                    kk: "#,##0.00\xa0\xa4",
                    kkj: "\xa4\xa0#,##0.00",
                    kl: "\xa4#,##0.00;\xa4-#,##0.00",
                    kln: "\xa4#,##0.00;(\xa4#,##0.00)",
                    km: "#,##0.00\xa4;(#,##0.00\xa4)",
                    kn: "\xa4#,##0.00;(\xa4#,##0.00)",
                    ko: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ko-KP": "\xa4#,##0.00;(\xa4#,##0.00)",
                    kok: "\xa4#,##0.00;(\xa4#,##0.00)",
                    ks: "\xa4#,##0.00",
                    "ks-Arab": "\xa4#,##0.00",
                    "ks-Deva": "\xa4\xa0#,##0.00",
                    ksb: "#,##0.00\xa4",
                    ksf: "#,##0.00\xa0\xa4",
                    ksh: "#,##0.00\xa0\xa4",
                    ku: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    kw: "\xa4#,##0.00",
                    ky: "#,##0.00\xa0\xa4",
                    lag: "\xa4\xa0#,##0.00",
                    lb: "#,##0.00\xa0\xa4",
                    lg: "#,##0.00\xa4",
                    lkt: "\xa4\xa0#,##0.00",
                    ln: "#,##0.00\xa0\xa4",
                    "ln-AO": "#,##0.00\xa0\xa4",
                    "ln-CF": "#,##0.00\xa0\xa4",
                    "ln-CG": "#,##0.00\xa0\xa4",
                    lo: "\xa4#,##0.00;\xa4-#,##0.00",
                    lrc: "\xa4\xa0#,##0.00",
                    "lrc-IQ": "\xa4\xa0#,##0.00",
                    lt: "#,##0.00\xa0\xa4",
                    lu: "#,##0.00\xa4",
                    luo: "#,##0.00\xa4",
                    luy: "\xa4#,##0.00;\xa4-\xa0#,##0.00",
                    lv: "#,##0.00\xa0\xa4",
                    mai: "\xa4\xa0#,##0.00",
                    mas: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "mas-TZ": "\xa4#,##0.00;(\xa4#,##0.00)",
                    mer: "\xa4#,##0.00;(\xa4#,##0.00)",
                    mfe: "\xa4\xa0#,##0.00",
                    mg: "\xa4#,##0.00",
                    mgh: "\xa4\xa0#,##0.00",
                    mgo: "\xa4\xa0#,##0.00",
                    mi: "\xa4\xa0#,##0.00",
                    mk: "#,##0.00\xa0\xa4",
                    ml: "\xa4#,##0.00;(\xa4#,##0.00)",
                    mn: "\xa4\xa0#,##0.00",
                    mni: "\xa4\xa0#,##0.00",
                    "mni-Beng": "\xa4\xa0#,##0.00",
                    mr: "\xa4#,##0.00;(\xa4#,##0.00)",
                    ms: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ms-BN": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ms-ID": "\xa4#,##0.00",
                    "ms-SG": "\xa4#,##0.00;(\xa4#,##0.00)",
                    mt: "\xa4#,##0.00",
                    mua: "\xa4#,##0.00;(\xa4#,##0.00)",
                    my: "\xa4\xa0#,##0.00",
                    mzn: "\xa4\xa0#,##0.00",
                    naq: "\xa4#,##0.00",
                    nb: "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)",
                    "nb-SJ": "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)",
                    nd: "\xa4#,##0.00;(\xa4#,##0.00)",
                    nds: "\xa4\xa0#,##0.00",
                    "nds-NL": "\xa4\xa0#,##0.00",
                    ne: "\xa4\xa0#,##,##0.00",
                    "ne-IN": "\xa4\xa0#,##,##0.00",
                    nl: "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)",
                    "nl-AW": "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)",
                    "nl-BE": "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)",
                    "nl-BQ": "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)",
                    "nl-CW": "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)",
                    "nl-SR": "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)",
                    "nl-SX": "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)",
                    nmg: "#,##0.00\xa0\xa4",
                    nn: "#,##0.00\xa0\xa4",
                    nnh: "\xa4\xa0#,##0.00",
                    no: "\xa4\xa0#,##0.00;(\xa4\xa0#,##0.00)",
                    nus: "\xa4#,##0.00;(\xa4#,##0.00)",
                    nyn: "\xa4#,##0.00",
                    om: "\xa4#,##0.00",
                    "om-KE": "\xa4#,##0.00",
                    or: "\xa4#,##0.00;(\xa4#,##0.00)",
                    os: "\xa4\xa0#,##0.00",
                    "os-RU": "\xa4\xa0#,##0.00",
                    pa: "\xa4\xa0#,##0.00",
                    "pa-Arab": "\xa4\xa0#,##0.00",
                    "pa-Guru": "\xa4\xa0#,##0.00",
                    pcm: "\xa4#,##0.00",
                    pl: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    ps: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ps-PK": "\xa4#,##0.00;(\xa4#,##0.00)",
                    pt: "\xa4\xa0#,##0.00",
                    "pt-AO": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "pt-CH": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "pt-CV": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "pt-GQ": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "pt-GW": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "pt-LU": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "pt-MO": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "pt-MZ": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "pt-PT": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "pt-ST": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "pt-TL": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    qu: "\xa4\xa0#,##0.00",
                    "qu-BO": "\xa4\xa0#,##0.00",
                    "qu-EC": "\xa4\xa0#,##0.00",
                    rm: "#,##0.00\xa0\xa4",
                    rn: "#,##0.00\xa4",
                    ro: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "ro-MD": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    rof: "\xa4#,##0.00",
                    ru: "#,##0.00\xa0\xa4",
                    "ru-BY": "#,##0.00\xa0\xa4",
                    "ru-KG": "#,##0.00\xa0\xa4",
                    "ru-KZ": "#,##0.00\xa0\xa4",
                    "ru-MD": "#,##0.00\xa0\xa4",
                    "ru-UA": "#,##0.00\xa0\xa4",
                    rw: "\xa4\xa0#,##0.00",
                    rwk: "#,##0.00\xa4",
                    sa: "\xa4\xa0#,##0.00",
                    sah: "#,##0.00\xa0\xa4",
                    saq: "\xa4#,##0.00;(\xa4#,##0.00)",
                    sat: "\xa4\xa0#,##0.00",
                    "sat-Olck": "\xa4\xa0#,##0.00",
                    sbp: "#,##0.00\xa4",
                    sc: "#,##0.00\xa0\xa4",
                    sd: "\xa4\xa0#,##0.00",
                    "sd-Arab": "\xa4\xa0#,##0.00",
                    "sd-Deva": "\xa4\xa0#,##0.00",
                    se: "#,##0.00\xa0\xa4",
                    "se-FI": "#,##0.00\xa0\xa4",
                    "se-SE": "#,##0.00\xa0\xa4",
                    seh: "#,##0.00\xa4",
                    ses: "#,##0.00\xa4",
                    sg: "\xa4#,##0.00;\xa4-#,##0.00",
                    shi: "#,##0.00\xa4",
                    "shi-Latn": "#,##0.00\xa4",
                    "shi-Tfng": "#,##0.00\xa4",
                    si: "\xa4#,##0.00;(\xa4#,##0.00)",
                    sk: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    sl: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    smn: "#,##0.00\xa0\xa4",
                    sn: "\xa4#,##0.00;(\xa4#,##0.00)",
                    so: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "so-DJ": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "so-ET": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "so-KE": "\xa4#,##0.00;(\xa4#,##0.00)",
                    sq: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "sq-MK": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "sq-XK": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    sr: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "sr-Cyrl": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "sr-Cyrl-BA": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "sr-Cyrl-ME": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "sr-Cyrl-XK": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "sr-Latn": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "sr-Latn-BA": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "sr-Latn-ME": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    "sr-Latn-XK": "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    su: "\xa4#,##0.00",
                    "su-Latn": "\xa4#,##0.00",
                    sv: "#,##0.00\xa0\xa4",
                    "sv-AX": "#,##0.00\xa0\xa4",
                    "sv-FI": "#,##0.00\xa0\xa4",
                    sw: "\xa4\xa0#,##0.00",
                    "sw-CD": "\xa4\xa0#,##0.00",
                    "sw-KE": "\xa4\xa0#,##0.00",
                    "sw-UG": "\xa4\xa0#,##0.00",
                    ta: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ta-LK": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ta-MY": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ta-SG": "\xa4#,##0.00;(\xa4#,##0.00)",
                    te: "\xa4#,##0.00;(\xa4#,##0.00)",
                    teo: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "teo-KE": "\xa4#,##0.00;(\xa4#,##0.00)",
                    tg: "#,##0.00\xa0\xa4",
                    th: "\xa4#,##0.00;(\xa4#,##0.00)",
                    ti: "\xa4#,##0.00",
                    "ti-ER": "\xa4#,##0.00",
                    tk: "#,##0.00\xa0\xa4",
                    to: "\xa4\xa0#,##0.00",
                    tr: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "tr-CY": "\xa4#,##0.00;(\xa4#,##0.00)",
                    tt: "#,##0.00\xa0\xa4",
                    twq: "#,##0.00\xa4",
                    tzm: "#,##0.00\xa0\xa4",
                    ug: "\xa4#,##0.00;(\xa4#,##0.00)",
                    uk: "#,##0.00\xa0\xa4",
                    und: "\xa4\xa0#,##0.00",
                    ur: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "ur-IN": "\xa4#,##0.00;(\xa4#,##0.00)",
                    uz: "#,##0.00\xa0\xa4",
                    "uz-Arab": "\xa4\xa0#,##0.00",
                    "uz-Cyrl": "#,##0.00\xa0\xa4",
                    "uz-Latn": "#,##0.00\xa0\xa4",
                    vai: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "vai-Latn": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "vai-Vaii": "\xa4#,##0.00;(\xa4#,##0.00)",
                    vi: "#,##0.00\xa0\xa4",
                    vun: "\xa4#,##0.00",
                    wae: "\xa4\xa0#,##0.00",
                    wo: "\xa4\xa0#,##0.00",
                    xh: "\xa4#,##0.00",
                    xog: "#,##0.00\xa0\xa4",
                    yav: "#,##0.00\xa0\xa4;(#,##0.00\xa0\xa4)",
                    yi: "\xa4\xa0#,##0.00",
                    yo: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "yo-BJ": "\xa4#,##0.00;(\xa4#,##0.00)",
                    yrl: "\xa4\xa0#,##0.00",
                    "yrl-CO": "\xa4\xa0#,##0.00",
                    "yrl-VE": "\xa4\xa0#,##0.00",
                    yue: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "yue-Hans": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "yue-Hant": "\xa4#,##0.00;(\xa4#,##0.00)",
                    zgh: "#,##0.00\xa4",
                    zh: "\xa4#,##0.00;(\xa4#,##0.00)",
                    "zh-Hans": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "zh-Hans-HK": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "zh-Hans-MO": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "zh-Hans-SG": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "zh-Hant": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "zh-Hant-HK": "\xa4#,##0.00;(\xa4#,##0.00)",
                    "zh-Hant-MO": "\xa4#,##0.00;(\xa4#,##0.00)",
                    zu: "\xa4#,##0.00;(\xa4#,##0.00)"
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        35608:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/cldr-data/en.js ***!
              \**************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.enCldr = void 0;
                // !!! AUTO-GENERATED FILE, DO NOT EDIT
                exports.enCldr = {
                    main: {
                        en: {
                            identity: {
                                version: {
                                    _cldrVersion: "36"
                                }
                            },
                            dates: {
                                calendars: {
                                    gregorian: {
                                        months: {
                                            format: {
                                                abbreviated: {
                                                    1: "Jan",
                                                    2: "Feb",
                                                    3: "Mar",
                                                    4: "Apr",
                                                    5: "May",
                                                    6: "Jun",
                                                    7: "Jul",
                                                    8: "Aug",
                                                    9: "Sep",
                                                    10: "Oct",
                                                    11: "Nov",
                                                    12: "Dec"
                                                },
                                                narrow: {
                                                    1: "J",
                                                    2: "F",
                                                    3: "M",
                                                    4: "A",
                                                    5: "M",
                                                    6: "J",
                                                    7: "J",
                                                    8: "A",
                                                    9: "S",
                                                    10: "O",
                                                    11: "N",
                                                    12: "D"
                                                },
                                                wide: {
                                                    1: "January",
                                                    2: "February",
                                                    3: "March",
                                                    4: "April",
                                                    5: "May",
                                                    6: "June",
                                                    7: "July",
                                                    8: "August",
                                                    9: "September",
                                                    10: "October",
                                                    11: "November",
                                                    12: "December"
                                                }
                                            },
                                            "stand-alone": {
                                                abbreviated: {
                                                    1: "Jan",
                                                    2: "Feb",
                                                    3: "Mar",
                                                    4: "Apr",
                                                    5: "May",
                                                    6: "Jun",
                                                    7: "Jul",
                                                    8: "Aug",
                                                    9: "Sep",
                                                    10: "Oct",
                                                    11: "Nov",
                                                    12: "Dec"
                                                },
                                                narrow: {
                                                    1: "J",
                                                    2: "F",
                                                    3: "M",
                                                    4: "A",
                                                    5: "M",
                                                    6: "J",
                                                    7: "J",
                                                    8: "A",
                                                    9: "S",
                                                    10: "O",
                                                    11: "N",
                                                    12: "D"
                                                },
                                                wide: {
                                                    1: "January",
                                                    2: "February",
                                                    3: "March",
                                                    4: "April",
                                                    5: "May",
                                                    6: "June",
                                                    7: "July",
                                                    8: "August",
                                                    9: "September",
                                                    10: "October",
                                                    11: "November",
                                                    12: "December"
                                                }
                                            }
                                        },
                                        days: {
                                            format: {
                                                abbreviated: {
                                                    sun: "Sun",
                                                    mon: "Mon",
                                                    tue: "Tue",
                                                    wed: "Wed",
                                                    thu: "Thu",
                                                    fri: "Fri",
                                                    sat: "Sat"
                                                },
                                                narrow: {
                                                    sun: "S",
                                                    mon: "M",
                                                    tue: "T",
                                                    wed: "W",
                                                    thu: "T",
                                                    fri: "F",
                                                    sat: "S"
                                                },
                                                short: {
                                                    sun: "Su",
                                                    mon: "Mo",
                                                    tue: "Tu",
                                                    wed: "We",
                                                    thu: "Th",
                                                    fri: "Fr",
                                                    sat: "Sa"
                                                },
                                                wide: {
                                                    sun: "Sunday",
                                                    mon: "Monday",
                                                    tue: "Tuesday",
                                                    wed: "Wednesday",
                                                    thu: "Thursday",
                                                    fri: "Friday",
                                                    sat: "Saturday"
                                                }
                                            },
                                            "stand-alone": {
                                                abbreviated: {
                                                    sun: "Sun",
                                                    mon: "Mon",
                                                    tue: "Tue",
                                                    wed: "Wed",
                                                    thu: "Thu",
                                                    fri: "Fri",
                                                    sat: "Sat"
                                                },
                                                narrow: {
                                                    sun: "S",
                                                    mon: "M",
                                                    tue: "T",
                                                    wed: "W",
                                                    thu: "T",
                                                    fri: "F",
                                                    sat: "S"
                                                },
                                                short: {
                                                    sun: "Su",
                                                    mon: "Mo",
                                                    tue: "Tu",
                                                    wed: "We",
                                                    thu: "Th",
                                                    fri: "Fr",
                                                    sat: "Sa"
                                                },
                                                wide: {
                                                    sun: "Sunday",
                                                    mon: "Monday",
                                                    tue: "Tuesday",
                                                    wed: "Wednesday",
                                                    thu: "Thursday",
                                                    fri: "Friday",
                                                    sat: "Saturday"
                                                }
                                            }
                                        },
                                        quarters: {
                                            format: {
                                                abbreviated: {
                                                    1: "Q1",
                                                    2: "Q2",
                                                    3: "Q3",
                                                    4: "Q4"
                                                },
                                                narrow: {
                                                    1: "1",
                                                    2: "2",
                                                    3: "3",
                                                    4: "4"
                                                },
                                                wide: {
                                                    1: "1st quarter",
                                                    2: "2nd quarter",
                                                    3: "3rd quarter",
                                                    4: "4th quarter"
                                                }
                                            },
                                            "stand-alone": {
                                                abbreviated: {
                                                    1: "Q1",
                                                    2: "Q2",
                                                    3: "Q3",
                                                    4: "Q4"
                                                },
                                                narrow: {
                                                    1: "1",
                                                    2: "2",
                                                    3: "3",
                                                    4: "4"
                                                },
                                                wide: {
                                                    1: "1st quarter",
                                                    2: "2nd quarter",
                                                    3: "3rd quarter",
                                                    4: "4th quarter"
                                                }
                                            }
                                        },
                                        dayPeriods: {
                                            format: {
                                                abbreviated: {
                                                    midnight: "midnight",
                                                    am: "AM",
                                                    "am-alt-variant": "am",
                                                    noon: "noon",
                                                    pm: "PM",
                                                    "pm-alt-variant": "pm",
                                                    morning1: "in the morning",
                                                    afternoon1: "in the afternoon",
                                                    evening1: "in the evening",
                                                    night1: "at night"
                                                },
                                                narrow: {
                                                    midnight: "mi",
                                                    am: "a",
                                                    "am-alt-variant": "am",
                                                    noon: "n",
                                                    pm: "p",
                                                    "pm-alt-variant": "pm",
                                                    morning1: "in the morning",
                                                    afternoon1: "in the afternoon",
                                                    evening1: "in the evening",
                                                    night1: "at night"
                                                },
                                                wide: {
                                                    midnight: "midnight",
                                                    am: "AM",
                                                    "am-alt-variant": "am",
                                                    noon: "noon",
                                                    pm: "PM",
                                                    "pm-alt-variant": "pm",
                                                    morning1: "in the morning",
                                                    afternoon1: "in the afternoon",
                                                    evening1: "in the evening",
                                                    night1: "at night"
                                                }
                                            },
                                            "stand-alone": {
                                                abbreviated: {
                                                    midnight: "midnight",
                                                    am: "AM",
                                                    "am-alt-variant": "am",
                                                    noon: "noon",
                                                    pm: "PM",
                                                    "pm-alt-variant": "pm",
                                                    morning1: "morning",
                                                    afternoon1: "afternoon",
                                                    evening1: "evening",
                                                    night1: "night"
                                                },
                                                narrow: {
                                                    midnight: "midnight",
                                                    am: "AM",
                                                    "am-alt-variant": "am",
                                                    noon: "noon",
                                                    pm: "PM",
                                                    "pm-alt-variant": "pm",
                                                    morning1: "morning",
                                                    afternoon1: "afternoon",
                                                    evening1: "evening",
                                                    night1: "night"
                                                },
                                                wide: {
                                                    midnight: "midnight",
                                                    am: "AM",
                                                    "am-alt-variant": "am",
                                                    noon: "noon",
                                                    pm: "PM",
                                                    "pm-alt-variant": "pm",
                                                    morning1: "morning",
                                                    afternoon1: "afternoon",
                                                    evening1: "evening",
                                                    night1: "night"
                                                }
                                            }
                                        },
                                        eras: {
                                            eraNames: {
                                                0: "Before Christ",
                                                1: "Anno Domini",
                                                "0-alt-variant": "Before Common Era",
                                                "1-alt-variant": "Common Era"
                                            },
                                            eraAbbr: {
                                                0: "BC",
                                                1: "AD",
                                                "0-alt-variant": "BCE",
                                                "1-alt-variant": "CE"
                                            },
                                            eraNarrow: {
                                                0: "B",
                                                1: "A",
                                                "0-alt-variant": "BCE",
                                                "1-alt-variant": "CE"
                                            }
                                        },
                                        dateFormats: {
                                            full: "EEEE, MMMM d, y",
                                            long: "MMMM d, y",
                                            medium: "MMM d, y",
                                            short: "M/d/yy"
                                        },
                                        timeFormats: {
                                            full: "h:mm:ss a zzzz",
                                            long: "h:mm:ss a z",
                                            medium: "h:mm:ss a",
                                            short: "h:mm a"
                                        },
                                        dateTimeFormats: {
                                            full: "{1} 'at' {0}",
                                            long: "{1} 'at' {0}",
                                            medium: "{1}, {0}",
                                            short: "{1}, {0}",
                                            availableFormats: {
                                                Bh: "h B",
                                                Bhm: "h:mm B",
                                                Bhms: "h:mm:ss B",
                                                d: "d",
                                                E: "ccc",
                                                EBhm: "E h:mm B",
                                                EBhms: "E h:mm:ss B",
                                                Ed: "d E",
                                                Ehm: "E h:mm a",
                                                EHm: "E HH:mm",
                                                Ehms: "E h:mm:ss a",
                                                EHms: "E HH:mm:ss",
                                                Gy: "y G",
                                                GyMMM: "MMM y G",
                                                GyMMMd: "MMM d, y G",
                                                GyMMMEd: "E, MMM d, y G",
                                                h: "h a",
                                                H: "HH",
                                                hm: "h:mm a",
                                                Hm: "HH:mm",
                                                hms: "h:mm:ss a",
                                                Hms: "HH:mm:ss",
                                                hmsv: "h:mm:ss a v",
                                                Hmsv: "HH:mm:ss v",
                                                hmv: "h:mm a v",
                                                Hmv: "HH:mm v",
                                                M: "L",
                                                Md: "M/d",
                                                MEd: "E, M/d",
                                                MMM: "LLL",
                                                MMMd: "MMM d",
                                                MMMEd: "E, MMM d",
                                                MMMMd: "MMMM d",
                                                "MMMMW-count-one": "'week' W 'of' MMMM",
                                                "MMMMW-count-other": "'week' W 'of' MMMM",
                                                ms: "mm:ss",
                                                y: "y",
                                                yM: "M/y",
                                                yMd: "M/d/y",
                                                yMEd: "E, M/d/y",
                                                yMMM: "MMM y",
                                                yMMMd: "MMM d, y",
                                                yMMMEd: "E, MMM d, y",
                                                yMMMM: "MMMM y",
                                                yQQQ: "QQQ y",
                                                yQQQQ: "QQQQ y",
                                                "yw-count-one": "'week' w 'of' Y",
                                                "yw-count-other": "'week' w 'of' Y"
                                            }
                                        }
                                    }
                                }
                            },
                            numbers: {
                                defaultNumberingSystem: "latn",
                                otherNumberingSystems: {
                                    native: "latn"
                                },
                                minimumGroupingDigits: "1",
                                "symbols-numberSystem-latn": {
                                    decimal: ".",
                                    group: ",",
                                    list: ";",
                                    percentSign: "%",
                                    plusSign: "+",
                                    minusSign: "-",
                                    exponential: "E",
                                    superscriptingExponent: "\xd7",
                                    perMille: "\u2030",
                                    infinity: "\u221e",
                                    nan: "NaN",
                                    timeSeparator: ":"
                                },
                                "decimalFormats-numberSystem-latn": {
                                    standard: "#,##0.###"
                                },
                                "scientificFormats-numberSystem-latn": {
                                    standard: "#E0"
                                },
                                "percentFormats-numberSystem-latn": {
                                    standard: "#,##0%"
                                },
                                "currencyFormats-numberSystem-latn": {
                                    currencySpacing: {
                                        beforeCurrency: {
                                            currencyMatch: "[:^S:]",
                                            surroundingMatch: "[:digit:]",
                                            insertBetween: "\xa0"
                                        },
                                        afterCurrency: {
                                            currencyMatch: "[:^S:]",
                                            surroundingMatch: "[:digit:]",
                                            insertBetween: "\xa0"
                                        }
                                    },
                                    standard: "\xa4#,##0.00",
                                    accounting: "\xa4#,##0.00;(\xa4#,##0.00)"
                                },
                                currencies: {
                                    ADP: {
                                        symbol: "ADP"
                                    },
                                    AED: {
                                        symbol: "AED"
                                    },
                                    AFA: {
                                        symbol: "AFA"
                                    },
                                    AFN: {
                                        symbol: "AFN"
                                    },
                                    ALK: {
                                        symbol: "ALK"
                                    },
                                    ALL: {
                                        symbol: "ALL"
                                    },
                                    AMD: {
                                        symbol: "AMD"
                                    },
                                    ANG: {
                                        symbol: "ANG"
                                    },
                                    AOA: {
                                        symbol: "AOA",
                                        "symbol-alt-narrow": "Kz"
                                    },
                                    AOK: {
                                        symbol: "AOK"
                                    },
                                    AON: {
                                        symbol: "AON"
                                    },
                                    AOR: {
                                        symbol: "AOR"
                                    },
                                    ARA: {
                                        symbol: "ARA"
                                    },
                                    ARL: {
                                        symbol: "ARL"
                                    },
                                    ARM: {
                                        symbol: "ARM"
                                    },
                                    ARP: {
                                        symbol: "ARP"
                                    },
                                    ARS: {
                                        symbol: "ARS",
                                        "symbol-alt-narrow": "$"
                                    },
                                    ATS: {
                                        symbol: "ATS"
                                    },
                                    AUD: {
                                        symbol: "A$",
                                        "symbol-alt-narrow": "$"
                                    },
                                    AWG: {
                                        symbol: "AWG"
                                    },
                                    AZM: {
                                        symbol: "AZM"
                                    },
                                    AZN: {
                                        symbol: "AZN"
                                    },
                                    BAD: {
                                        symbol: "BAD"
                                    },
                                    BAM: {
                                        symbol: "BAM",
                                        "symbol-alt-narrow": "KM"
                                    },
                                    BAN: {
                                        symbol: "BAN"
                                    },
                                    BBD: {
                                        symbol: "BBD",
                                        "symbol-alt-narrow": "$"
                                    },
                                    BDT: {
                                        symbol: "BDT",
                                        "symbol-alt-narrow": "\u09f3"
                                    },
                                    BEC: {
                                        symbol: "BEC"
                                    },
                                    BEF: {
                                        symbol: "BEF"
                                    },
                                    BEL: {
                                        symbol: "BEL"
                                    },
                                    BGL: {
                                        symbol: "BGL"
                                    },
                                    BGM: {
                                        symbol: "BGM"
                                    },
                                    BGN: {
                                        symbol: "BGN"
                                    },
                                    BGO: {
                                        symbol: "BGO"
                                    },
                                    BHD: {
                                        symbol: "BHD"
                                    },
                                    BIF: {
                                        symbol: "BIF"
                                    },
                                    BMD: {
                                        symbol: "BMD",
                                        "symbol-alt-narrow": "$"
                                    },
                                    BND: {
                                        symbol: "BND",
                                        "symbol-alt-narrow": "$"
                                    },
                                    BOB: {
                                        symbol: "BOB",
                                        "symbol-alt-narrow": "Bs"
                                    },
                                    BOL: {
                                        symbol: "BOL"
                                    },
                                    BOP: {
                                        symbol: "BOP"
                                    },
                                    BOV: {
                                        symbol: "BOV"
                                    },
                                    BRB: {
                                        symbol: "BRB"
                                    },
                                    BRC: {
                                        symbol: "BRC"
                                    },
                                    BRE: {
                                        symbol: "BRE"
                                    },
                                    BRL: {
                                        symbol: "R$",
                                        "symbol-alt-narrow": "R$"
                                    },
                                    BRN: {
                                        symbol: "BRN"
                                    },
                                    BRR: {
                                        symbol: "BRR"
                                    },
                                    BRZ: {
                                        symbol: "BRZ"
                                    },
                                    BSD: {
                                        symbol: "BSD",
                                        "symbol-alt-narrow": "$"
                                    },
                                    BTN: {
                                        symbol: "BTN"
                                    },
                                    BUK: {
                                        symbol: "BUK"
                                    },
                                    BWP: {
                                        symbol: "BWP",
                                        "symbol-alt-narrow": "P"
                                    },
                                    BYB: {
                                        symbol: "BYB"
                                    },
                                    BYN: {
                                        symbol: "BYN",
                                        "symbol-alt-narrow": "\u0440."
                                    },
                                    BYR: {
                                        symbol: "BYR"
                                    },
                                    BZD: {
                                        symbol: "BZD",
                                        "symbol-alt-narrow": "$"
                                    },
                                    CAD: {
                                        symbol: "CA$",
                                        "symbol-alt-narrow": "$"
                                    },
                                    CDF: {
                                        symbol: "CDF"
                                    },
                                    CHE: {
                                        symbol: "CHE"
                                    },
                                    CHF: {
                                        symbol: "CHF"
                                    },
                                    CHW: {
                                        symbol: "CHW"
                                    },
                                    CLE: {
                                        symbol: "CLE"
                                    },
                                    CLF: {
                                        symbol: "CLF"
                                    },
                                    CLP: {
                                        symbol: "CLP",
                                        "symbol-alt-narrow": "$"
                                    },
                                    CNH: {
                                        symbol: "CNH"
                                    },
                                    CNX: {
                                        symbol: "CNX"
                                    },
                                    CNY: {
                                        symbol: "CN\xa5",
                                        "symbol-alt-narrow": "\xa5"
                                    },
                                    COP: {
                                        symbol: "COP",
                                        "symbol-alt-narrow": "$"
                                    },
                                    COU: {
                                        symbol: "COU"
                                    },
                                    CRC: {
                                        symbol: "CRC",
                                        "symbol-alt-narrow": "\u20a1"
                                    },
                                    CSD: {
                                        symbol: "CSD"
                                    },
                                    CSK: {
                                        symbol: "CSK"
                                    },
                                    CUC: {
                                        symbol: "CUC",
                                        "symbol-alt-narrow": "$"
                                    },
                                    CUP: {
                                        symbol: "CUP",
                                        "symbol-alt-narrow": "$"
                                    },
                                    CVE: {
                                        symbol: "CVE"
                                    },
                                    CYP: {
                                        symbol: "CYP"
                                    },
                                    CZK: {
                                        symbol: "CZK",
                                        "symbol-alt-narrow": "K\u010d"
                                    },
                                    DDM: {
                                        symbol: "DDM"
                                    },
                                    DEM: {
                                        symbol: "DEM"
                                    },
                                    DJF: {
                                        symbol: "DJF"
                                    },
                                    DKK: {
                                        symbol: "DKK",
                                        "symbol-alt-narrow": "kr"
                                    },
                                    DOP: {
                                        symbol: "DOP",
                                        "symbol-alt-narrow": "$"
                                    },
                                    DZD: {
                                        symbol: "DZD"
                                    },
                                    ECS: {
                                        symbol: "ECS"
                                    },
                                    ECV: {
                                        symbol: "ECV"
                                    },
                                    EEK: {
                                        symbol: "EEK"
                                    },
                                    EGP: {
                                        symbol: "EGP",
                                        "symbol-alt-narrow": "E\xa3"
                                    },
                                    ERN: {
                                        symbol: "ERN"
                                    },
                                    ESA: {
                                        symbol: "ESA"
                                    },
                                    ESB: {
                                        symbol: "ESB"
                                    },
                                    ESP: {
                                        symbol: "ESP",
                                        "symbol-alt-narrow": "\u20a7"
                                    },
                                    ETB: {
                                        symbol: "ETB"
                                    },
                                    EUR: {
                                        symbol: "\u20ac",
                                        "symbol-alt-narrow": "\u20ac"
                                    },
                                    FIM: {
                                        symbol: "FIM"
                                    },
                                    FJD: {
                                        symbol: "FJD",
                                        "symbol-alt-narrow": "$"
                                    },
                                    FKP: {
                                        symbol: "FKP",
                                        "symbol-alt-narrow": "\xa3"
                                    },
                                    FRF: {
                                        symbol: "FRF"
                                    },
                                    GBP: {
                                        symbol: "\xa3",
                                        "symbol-alt-narrow": "\xa3"
                                    },
                                    GEK: {
                                        symbol: "GEK"
                                    },
                                    GEL: {
                                        symbol: "GEL",
                                        "symbol-alt-narrow": "\u20be"
                                    },
                                    GHC: {
                                        symbol: "GHC"
                                    },
                                    GHS: {
                                        symbol: "GHS"
                                    },
                                    GIP: {
                                        symbol: "GIP",
                                        "symbol-alt-narrow": "\xa3"
                                    },
                                    GMD: {
                                        symbol: "GMD"
                                    },
                                    GNF: {
                                        symbol: "GNF",
                                        "symbol-alt-narrow": "FG"
                                    },
                                    GNS: {
                                        symbol: "GNS"
                                    },
                                    GQE: {
                                        symbol: "GQE"
                                    },
                                    GRD: {
                                        symbol: "GRD"
                                    },
                                    GTQ: {
                                        symbol: "GTQ",
                                        "symbol-alt-narrow": "Q"
                                    },
                                    GWE: {
                                        symbol: "GWE"
                                    },
                                    GWP: {
                                        symbol: "GWP"
                                    },
                                    GYD: {
                                        symbol: "GYD",
                                        "symbol-alt-narrow": "$"
                                    },
                                    HKD: {
                                        symbol: "HK$",
                                        "symbol-alt-narrow": "$"
                                    },
                                    HNL: {
                                        symbol: "HNL",
                                        "symbol-alt-narrow": "L"
                                    },
                                    HRD: {
                                        symbol: "HRD"
                                    },
                                    HRK: {
                                        symbol: "HRK",
                                        "symbol-alt-narrow": "kn"
                                    },
                                    HTG: {
                                        symbol: "HTG"
                                    },
                                    HUF: {
                                        symbol: "HUF",
                                        "symbol-alt-narrow": "Ft"
                                    },
                                    IDR: {
                                        symbol: "IDR",
                                        "symbol-alt-narrow": "Rp"
                                    },
                                    IEP: {
                                        symbol: "IEP"
                                    },
                                    ILP: {
                                        symbol: "ILP"
                                    },
                                    ILR: {
                                        symbol: "ILR"
                                    },
                                    ILS: {
                                        symbol: "\u20aa",
                                        "symbol-alt-narrow": "\u20aa"
                                    },
                                    INR: {
                                        symbol: "\u20b9",
                                        "symbol-alt-narrow": "\u20b9"
                                    },
                                    IQD: {
                                        symbol: "IQD"
                                    },
                                    IRR: {
                                        symbol: "IRR"
                                    },
                                    ISJ: {
                                        symbol: "ISJ"
                                    },
                                    ISK: {
                                        symbol: "ISK",
                                        "symbol-alt-narrow": "kr"
                                    },
                                    ITL: {
                                        symbol: "ITL"
                                    },
                                    JMD: {
                                        symbol: "JMD",
                                        "symbol-alt-narrow": "$"
                                    },
                                    JOD: {
                                        symbol: "JOD"
                                    },
                                    JPY: {
                                        symbol: "\xa5",
                                        "symbol-alt-narrow": "\xa5"
                                    },
                                    KES: {
                                        symbol: "KES"
                                    },
                                    KGS: {
                                        symbol: "KGS"
                                    },
                                    KHR: {
                                        symbol: "KHR",
                                        "symbol-alt-narrow": "\u17db"
                                    },
                                    KMF: {
                                        symbol: "KMF",
                                        "symbol-alt-narrow": "CF"
                                    },
                                    KPW: {
                                        symbol: "KPW",
                                        "symbol-alt-narrow": "\u20a9"
                                    },
                                    KRH: {
                                        symbol: "KRH"
                                    },
                                    KRO: {
                                        symbol: "KRO"
                                    },
                                    KRW: {
                                        symbol: "\u20a9",
                                        "symbol-alt-narrow": "\u20a9"
                                    },
                                    KWD: {
                                        symbol: "KWD"
                                    },
                                    KYD: {
                                        symbol: "KYD",
                                        "symbol-alt-narrow": "$"
                                    },
                                    KZT: {
                                        symbol: "KZT",
                                        "symbol-alt-narrow": "\u20b8"
                                    },
                                    LAK: {
                                        symbol: "LAK",
                                        "symbol-alt-narrow": "\u20ad"
                                    },
                                    LBP: {
                                        symbol: "LBP",
                                        "symbol-alt-narrow": "L\xa3"
                                    },
                                    LKR: {
                                        symbol: "LKR",
                                        "symbol-alt-narrow": "Rs"
                                    },
                                    LRD: {
                                        symbol: "LRD",
                                        "symbol-alt-narrow": "$"
                                    },
                                    LSL: {
                                        symbol: "LSL"
                                    },
                                    LTL: {
                                        symbol: "LTL",
                                        "symbol-alt-narrow": "Lt"
                                    },
                                    LTT: {
                                        symbol: "LTT"
                                    },
                                    LUC: {
                                        symbol: "LUC"
                                    },
                                    LUF: {
                                        symbol: "LUF"
                                    },
                                    LUL: {
                                        symbol: "LUL"
                                    },
                                    LVL: {
                                        symbol: "LVL",
                                        "symbol-alt-narrow": "Ls"
                                    },
                                    LVR: {
                                        symbol: "LVR"
                                    },
                                    LYD: {
                                        symbol: "LYD"
                                    },
                                    MAD: {
                                        symbol: "MAD"
                                    },
                                    MAF: {
                                        symbol: "MAF"
                                    },
                                    MCF: {
                                        symbol: "MCF"
                                    },
                                    MDC: {
                                        symbol: "MDC"
                                    },
                                    MDL: {
                                        symbol: "MDL"
                                    },
                                    MGA: {
                                        symbol: "MGA",
                                        "symbol-alt-narrow": "Ar"
                                    },
                                    MGF: {
                                        symbol: "MGF"
                                    },
                                    MKD: {
                                        symbol: "MKD"
                                    },
                                    MKN: {
                                        symbol: "MKN"
                                    },
                                    MLF: {
                                        symbol: "MLF"
                                    },
                                    MMK: {
                                        symbol: "MMK",
                                        "symbol-alt-narrow": "K"
                                    },
                                    MNT: {
                                        symbol: "MNT",
                                        "symbol-alt-narrow": "\u20ae"
                                    },
                                    MOP: {
                                        symbol: "MOP"
                                    },
                                    MRO: {
                                        symbol: "MRO"
                                    },
                                    MRU: {
                                        symbol: "MRU"
                                    },
                                    MTL: {
                                        symbol: "MTL"
                                    },
                                    MTP: {
                                        symbol: "MTP"
                                    },
                                    MUR: {
                                        symbol: "MUR",
                                        "symbol-alt-narrow": "Rs"
                                    },
                                    MVP: {
                                        symbol: "MVP"
                                    },
                                    MVR: {
                                        symbol: "MVR"
                                    },
                                    MWK: {
                                        symbol: "MWK"
                                    },
                                    MXN: {
                                        symbol: "MX$",
                                        "symbol-alt-narrow": "$"
                                    },
                                    MXP: {
                                        symbol: "MXP"
                                    },
                                    MXV: {
                                        symbol: "MXV"
                                    },
                                    MYR: {
                                        symbol: "MYR",
                                        "symbol-alt-narrow": "RM"
                                    },
                                    MZE: {
                                        symbol: "MZE"
                                    },
                                    MZM: {
                                        symbol: "MZM"
                                    },
                                    MZN: {
                                        symbol: "MZN"
                                    },
                                    NAD: {
                                        symbol: "NAD",
                                        "symbol-alt-narrow": "$"
                                    },
                                    NGN: {
                                        symbol: "NGN",
                                        "symbol-alt-narrow": "\u20a6"
                                    },
                                    NIC: {
                                        symbol: "NIC"
                                    },
                                    NIO: {
                                        symbol: "NIO",
                                        "symbol-alt-narrow": "C$"
                                    },
                                    NLG: {
                                        symbol: "NLG"
                                    },
                                    NOK: {
                                        symbol: "NOK",
                                        "symbol-alt-narrow": "kr"
                                    },
                                    NPR: {
                                        symbol: "NPR",
                                        "symbol-alt-narrow": "Rs"
                                    },
                                    NZD: {
                                        symbol: "NZ$",
                                        "symbol-alt-narrow": "$"
                                    },
                                    OMR: {
                                        symbol: "OMR"
                                    },
                                    PAB: {
                                        symbol: "PAB"
                                    },
                                    PEI: {
                                        symbol: "PEI"
                                    },
                                    PEN: {
                                        symbol: "PEN"
                                    },
                                    PES: {
                                        symbol: "PES"
                                    },
                                    PGK: {
                                        symbol: "PGK"
                                    },
                                    PHP: {
                                        symbol: "PHP",
                                        "symbol-alt-narrow": "\u20b1"
                                    },
                                    PKR: {
                                        symbol: "PKR",
                                        "symbol-alt-narrow": "Rs"
                                    },
                                    PLN: {
                                        symbol: "PLN",
                                        "symbol-alt-narrow": "z\u0142"
                                    },
                                    PLZ: {
                                        symbol: "PLZ"
                                    },
                                    PTE: {
                                        symbol: "PTE"
                                    },
                                    PYG: {
                                        symbol: "PYG",
                                        "symbol-alt-narrow": "\u20b2"
                                    },
                                    QAR: {
                                        symbol: "QAR"
                                    },
                                    RHD: {
                                        symbol: "RHD"
                                    },
                                    ROL: {
                                        symbol: "ROL"
                                    },
                                    RON: {
                                        symbol: "RON",
                                        "symbol-alt-narrow": "lei"
                                    },
                                    RSD: {
                                        symbol: "RSD"
                                    },
                                    RUB: {
                                        symbol: "RUB",
                                        "symbol-alt-narrow": "\u20bd"
                                    },
                                    RUR: {
                                        symbol: "RUR",
                                        "symbol-alt-narrow": "\u0440."
                                    },
                                    RWF: {
                                        symbol: "RWF",
                                        "symbol-alt-narrow": "RF"
                                    },
                                    SAR: {
                                        symbol: "SAR"
                                    },
                                    SBD: {
                                        symbol: "SBD",
                                        "symbol-alt-narrow": "$"
                                    },
                                    SCR: {
                                        symbol: "SCR"
                                    },
                                    SDD: {
                                        symbol: "SDD"
                                    },
                                    SDG: {
                                        symbol: "SDG"
                                    },
                                    SDP: {
                                        symbol: "SDP"
                                    },
                                    SEK: {
                                        symbol: "SEK",
                                        "symbol-alt-narrow": "kr"
                                    },
                                    SGD: {
                                        symbol: "SGD",
                                        "symbol-alt-narrow": "$"
                                    },
                                    SHP: {
                                        symbol: "SHP",
                                        "symbol-alt-narrow": "\xa3"
                                    },
                                    SIT: {
                                        symbol: "SIT"
                                    },
                                    SKK: {
                                        symbol: "SKK"
                                    },
                                    SLL: {
                                        symbol: "SLL"
                                    },
                                    SOS: {
                                        symbol: "SOS"
                                    },
                                    SRD: {
                                        symbol: "SRD",
                                        "symbol-alt-narrow": "$"
                                    },
                                    SRG: {
                                        symbol: "SRG"
                                    },
                                    SSP: {
                                        symbol: "SSP",
                                        "symbol-alt-narrow": "\xa3"
                                    },
                                    STD: {
                                        symbol: "STD"
                                    },
                                    STN: {
                                        symbol: "STN",
                                        "symbol-alt-narrow": "Db"
                                    },
                                    SUR: {
                                        symbol: "SUR"
                                    },
                                    SVC: {
                                        symbol: "SVC"
                                    },
                                    SYP: {
                                        symbol: "SYP",
                                        "symbol-alt-narrow": "\xa3"
                                    },
                                    SZL: {
                                        symbol: "SZL"
                                    },
                                    THB: {
                                        symbol: "THB",
                                        "symbol-alt-narrow": "\u0e3f"
                                    },
                                    TJR: {
                                        symbol: "TJR"
                                    },
                                    TJS: {
                                        symbol: "TJS"
                                    },
                                    TMM: {
                                        symbol: "TMM"
                                    },
                                    TMT: {
                                        symbol: "TMT"
                                    },
                                    TND: {
                                        symbol: "TND"
                                    },
                                    TOP: {
                                        symbol: "TOP",
                                        "symbol-alt-narrow": "T$"
                                    },
                                    TPE: {
                                        symbol: "TPE"
                                    },
                                    TRL: {
                                        symbol: "TRL"
                                    },
                                    TRY: {
                                        symbol: "TRY",
                                        "symbol-alt-narrow": "\u20ba"
                                    },
                                    TTD: {
                                        symbol: "TTD",
                                        "symbol-alt-narrow": "$"
                                    },
                                    TWD: {
                                        symbol: "NT$",
                                        "symbol-alt-narrow": "$"
                                    },
                                    TZS: {
                                        symbol: "TZS"
                                    },
                                    UAH: {
                                        symbol: "UAH",
                                        "symbol-alt-narrow": "\u20b4"
                                    },
                                    UAK: {
                                        symbol: "UAK"
                                    },
                                    UGS: {
                                        symbol: "UGS"
                                    },
                                    UGX: {
                                        symbol: "UGX"
                                    },
                                    USD: {
                                        symbol: "$",
                                        "symbol-alt-narrow": "$"
                                    },
                                    USN: {
                                        symbol: "USN"
                                    },
                                    USS: {
                                        symbol: "USS"
                                    },
                                    UYI: {
                                        symbol: "UYI"
                                    },
                                    UYP: {
                                        symbol: "UYP"
                                    },
                                    UYU: {
                                        symbol: "UYU",
                                        "symbol-alt-narrow": "$"
                                    },
                                    UYW: {
                                        symbol: "UYW"
                                    },
                                    UZS: {
                                        symbol: "UZS"
                                    },
                                    VEB: {
                                        symbol: "VEB"
                                    },
                                    VEF: {
                                        symbol: "VEF",
                                        "symbol-alt-narrow": "Bs"
                                    },
                                    VES: {
                                        symbol: "VES"
                                    },
                                    VND: {
                                        symbol: "\u20ab",
                                        "symbol-alt-narrow": "\u20ab"
                                    },
                                    VNN: {
                                        symbol: "VNN"
                                    },
                                    VUV: {
                                        symbol: "VUV"
                                    },
                                    WST: {
                                        symbol: "WST"
                                    },
                                    XAF: {
                                        symbol: "FCFA"
                                    },
                                    XAG: {
                                        symbol: "XAG"
                                    },
                                    XAU: {
                                        symbol: "XAU"
                                    },
                                    XBA: {
                                        symbol: "XBA"
                                    },
                                    XBB: {
                                        symbol: "XBB"
                                    },
                                    XBC: {
                                        symbol: "XBC"
                                    },
                                    XBD: {
                                        symbol: "XBD"
                                    },
                                    XCD: {
                                        symbol: "EC$",
                                        "symbol-alt-narrow": "$"
                                    },
                                    XDR: {
                                        symbol: "XDR"
                                    },
                                    XEU: {
                                        symbol: "XEU"
                                    },
                                    XFO: {
                                        symbol: "XFO"
                                    },
                                    XFU: {
                                        symbol: "XFU"
                                    },
                                    XOF: {
                                        symbol: "CFA"
                                    },
                                    XPD: {
                                        symbol: "XPD"
                                    },
                                    XPF: {
                                        symbol: "CFPF"
                                    },
                                    XPT: {
                                        symbol: "XPT"
                                    },
                                    XRE: {
                                        symbol: "XRE"
                                    },
                                    XSU: {
                                        symbol: "XSU"
                                    },
                                    XTS: {
                                        symbol: "XTS"
                                    },
                                    XUA: {
                                        symbol: "XUA"
                                    },
                                    XXX: {
                                        symbol: "\xa4"
                                    },
                                    YDD: {
                                        symbol: "YDD"
                                    },
                                    YER: {
                                        symbol: "YER"
                                    },
                                    YUD: {
                                        symbol: "YUD"
                                    },
                                    YUM: {
                                        symbol: "YUM"
                                    },
                                    YUN: {
                                        symbol: "YUN"
                                    },
                                    YUR: {
                                        symbol: "YUR"
                                    },
                                    ZAL: {
                                        symbol: "ZAL"
                                    },
                                    ZAR: {
                                        symbol: "ZAR",
                                        "symbol-alt-narrow": "R"
                                    },
                                    ZMK: {
                                        symbol: "ZMK"
                                    },
                                    ZMW: {
                                        symbol: "ZMW",
                                        "symbol-alt-narrow": "ZK"
                                    },
                                    ZRN: {
                                        symbol: "ZRN"
                                    },
                                    ZRZ: {
                                        symbol: "ZRZ"
                                    },
                                    ZWD: {
                                        symbol: "ZWD"
                                    },
                                    ZWL: {
                                        symbol: "ZWL"
                                    },
                                    ZWR: {
                                        symbol: "ZWR"
                                    }
                                }
                            }
                        }
                    }
                }
            },
        92286:
            /*!**********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/cldr-data/first_day_of_week_data.js ***!
              \**********************************************************************************************/
            function(module, exports) {
                exports.default = void 0;
                // !!! AUTO-GENERATED FILE, DO NOT EDIT
                exports.default = {
                    "af-NA": 1,
                    agq: 1,
                    ak: 1,
                    ar: 6,
                    "ar-EH": 1,
                    "ar-ER": 1,
                    "ar-KM": 1,
                    "ar-LB": 1,
                    "ar-MA": 1,
                    "ar-MR": 1,
                    "ar-PS": 1,
                    "ar-SO": 1,
                    "ar-SS": 1,
                    "ar-TD": 1,
                    "ar-TN": 1,
                    asa: 1,
                    ast: 1,
                    az: 1,
                    "az-Cyrl": 1,
                    bas: 1,
                    be: 1,
                    bem: 1,
                    bez: 1,
                    bg: 1,
                    bm: 1,
                    br: 1,
                    bs: 1,
                    "bs-Cyrl": 1,
                    ca: 1,
                    ce: 1,
                    cgg: 1,
                    ckb: 6,
                    cs: 1,
                    cy: 1,
                    da: 1,
                    de: 1,
                    dje: 1,
                    dsb: 1,
                    dua: 1,
                    dyo: 1,
                    ee: 1,
                    el: 1,
                    "en-001": 1,
                    "en-AE": 6,
                    "en-BI": 1,
                    "en-MP": 1,
                    "en-MV": 5,
                    "en-SD": 6,
                    eo: 1,
                    es: 1,
                    et: 1,
                    eu: 1,
                    ewo: 1,
                    fa: 6,
                    ff: 1,
                    "ff-Adlm": 1,
                    fi: 1,
                    fo: 1,
                    fr: 1,
                    "fr-DJ": 6,
                    "fr-DZ": 6,
                    "fr-SY": 6,
                    fur: 1,
                    fy: 1,
                    ga: 1,
                    gd: 1,
                    gl: 1,
                    gsw: 1,
                    gv: 1,
                    ha: 1,
                    hr: 1,
                    hsb: 1,
                    hu: 1,
                    hy: 1,
                    ia: 1,
                    ig: 1,
                    is: 1,
                    it: 1,
                    jgo: 1,
                    jmc: 1,
                    ka: 1,
                    kab: 6,
                    kde: 1,
                    kea: 1,
                    khq: 1,
                    kk: 1,
                    kkj: 1,
                    kl: 1,
                    "ko-KP": 1,
                    ksb: 1,
                    ksf: 1,
                    ksh: 1,
                    ku: 1,
                    kw: 1,
                    ky: 1,
                    lag: 1,
                    lb: 1,
                    lg: 1,
                    ln: 1,
                    lrc: 6,
                    lt: 1,
                    lu: 1,
                    lv: 1,
                    "mas-TZ": 1,
                    mfe: 1,
                    mg: 1,
                    mgo: 1,
                    mi: 1,
                    mk: 1,
                    mn: 1,
                    ms: 1,
                    mua: 1,
                    mzn: 6,
                    naq: 1,
                    nds: 1,
                    nl: 1,
                    nmg: 1,
                    nnh: 1,
                    no: 1,
                    nus: 1,
                    nyn: 1,
                    os: 1,
                    pcm: 1,
                    pl: 1,
                    ps: 6,
                    "pt-AO": 1,
                    "pt-CH": 1,
                    "pt-CV": 1,
                    "pt-GQ": 1,
                    "pt-GW": 1,
                    "pt-LU": 1,
                    "pt-ST": 1,
                    "pt-TL": 1,
                    "qu-BO": 1,
                    "qu-EC": 1,
                    rm: 1,
                    rn: 1,
                    ro: 1,
                    rof: 1,
                    ru: 1,
                    rw: 1,
                    rwk: 1,
                    sah: 1,
                    sbp: 1,
                    sc: 1,
                    se: 1,
                    ses: 1,
                    sg: 1,
                    shi: 1,
                    "shi-Latn": 1,
                    si: 1,
                    sk: 1,
                    sl: 1,
                    smn: 1,
                    so: 1,
                    "so-DJ": 6,
                    sq: 1,
                    sr: 1,
                    "sr-Latn": 1,
                    sv: 1,
                    sw: 1,
                    "ta-LK": 1,
                    "ta-MY": 1,
                    teo: 1,
                    tg: 1,
                    "ti-ER": 1,
                    tk: 1,
                    to: 1,
                    tr: 1,
                    tt: 1,
                    twq: 1,
                    tzm: 1,
                    uk: 1,
                    uz: 1,
                    "uz-Arab": 6,
                    "uz-Cyrl": 1,
                    vai: 1,
                    "vai-Latn": 1,
                    vi: 1,
                    vun: 1,
                    wae: 1,
                    wo: 1,
                    xog: 1,
                    yav: 1,
                    yi: 1,
                    yo: 1,
                    zgh: 1
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        73806:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/cldr-data/parent_locales.js ***!
              \**************************************************************************************/
            function(module, exports) {
                exports.default = void 0;
                // !!! AUTO-GENERATED FILE, DO NOT EDIT
                exports.default = {
                    "en-150": "en-001",
                    "en-AG": "en-001",
                    "en-AI": "en-001",
                    "en-AU": "en-001",
                    "en-BB": "en-001",
                    "en-BM": "en-001",
                    "en-BS": "en-001",
                    "en-BW": "en-001",
                    "en-BZ": "en-001",
                    "en-CC": "en-001",
                    "en-CK": "en-001",
                    "en-CM": "en-001",
                    "en-CX": "en-001",
                    "en-CY": "en-001",
                    "en-DG": "en-001",
                    "en-DM": "en-001",
                    "en-ER": "en-001",
                    "en-FJ": "en-001",
                    "en-FK": "en-001",
                    "en-FM": "en-001",
                    "en-GB": "en-001",
                    "en-GD": "en-001",
                    "en-GG": "en-001",
                    "en-GH": "en-001",
                    "en-GI": "en-001",
                    "en-GM": "en-001",
                    "en-GY": "en-001",
                    "en-HK": "en-001",
                    "en-IE": "en-001",
                    "en-IL": "en-001",
                    "en-IM": "en-001",
                    "en-IN": "en-001",
                    "en-IO": "en-001",
                    "en-JE": "en-001",
                    "en-JM": "en-001",
                    "en-KE": "en-001",
                    "en-KI": "en-001",
                    "en-KN": "en-001",
                    "en-KY": "en-001",
                    "en-LC": "en-001",
                    "en-LR": "en-001",
                    "en-LS": "en-001",
                    "en-MG": "en-001",
                    "en-MO": "en-001",
                    "en-MS": "en-001",
                    "en-MT": "en-001",
                    "en-MU": "en-001",
                    "en-MV": "en-001",
                    "en-MW": "en-001",
                    "en-MY": "en-001",
                    "en-NA": "en-001",
                    "en-NF": "en-001",
                    "en-NG": "en-001",
                    "en-NR": "en-001",
                    "en-NU": "en-001",
                    "en-NZ": "en-001",
                    "en-PG": "en-001",
                    "en-PK": "en-001",
                    "en-PN": "en-001",
                    "en-PW": "en-001",
                    "en-RW": "en-001",
                    "en-SB": "en-001",
                    "en-SC": "en-001",
                    "en-SD": "en-001",
                    "en-SG": "en-001",
                    "en-SH": "en-001",
                    "en-SL": "en-001",
                    "en-SS": "en-001",
                    "en-SX": "en-001",
                    "en-SZ": "en-001",
                    "en-TC": "en-001",
                    "en-TK": "en-001",
                    "en-TO": "en-001",
                    "en-TT": "en-001",
                    "en-TV": "en-001",
                    "en-TZ": "en-001",
                    "en-UG": "en-001",
                    "en-VC": "en-001",
                    "en-VG": "en-001",
                    "en-VU": "en-001",
                    "en-WS": "en-001",
                    "en-ZA": "en-001",
                    "en-ZM": "en-001",
                    "en-ZW": "en-001",
                    "en-AT": "en-150",
                    "en-BE": "en-150",
                    "en-CH": "en-150",
                    "en-DE": "en-150",
                    "en-DK": "en-150",
                    "en-FI": "en-150",
                    "en-NL": "en-150",
                    "en-SE": "en-150",
                    "en-SI": "en-150",
                    "hi-Latn": "en-IN",
                    "es-AR": "es-419",
                    "es-BO": "es-419",
                    "es-BR": "es-419",
                    "es-BZ": "es-419",
                    "es-CL": "es-419",
                    "es-CO": "es-419",
                    "es-CR": "es-419",
                    "es-CU": "es-419",
                    "es-DO": "es-419",
                    "es-EC": "es-419",
                    "es-GT": "es-419",
                    "es-HN": "es-419",
                    "es-MX": "es-419",
                    "es-NI": "es-419",
                    "es-PA": "es-419",
                    "es-PE": "es-419",
                    "es-PR": "es-419",
                    "es-PY": "es-419",
                    "es-SV": "es-419",
                    "es-US": "es-419",
                    "es-UY": "es-419",
                    "es-VE": "es-419",
                    nb: "no",
                    nn: "no",
                    "pt-AO": "pt-PT",
                    "pt-CH": "pt-PT",
                    "pt-CV": "pt-PT",
                    "pt-FR": "pt-PT",
                    "pt-GQ": "pt-PT",
                    "pt-GW": "pt-PT",
                    "pt-LU": "pt-PT",
                    "pt-MO": "pt-PT",
                    "pt-MZ": "pt-PT",
                    "pt-ST": "pt-PT",
                    "pt-TL": "pt-PT",
                    "az-Arab": "und",
                    "az-Cyrl": "und",
                    "bal-Latn": "und",
                    "blt-Latn": "und",
                    "bm-Nkoo": "und",
                    "bs-Cyrl": "und",
                    "byn-Latn": "und",
                    "cu-Glag": "und",
                    "dje-Arab": "und",
                    "dyo-Arab": "und",
                    "en-Dsrt": "und",
                    "en-Shaw": "und",
                    "ff-Adlm": "und",
                    "ff-Arab": "und",
                    "ha-Arab": "und",
                    "iu-Latn": "und",
                    "kk-Arab": "und",
                    "ks-Deva": "und",
                    "ku-Arab": "und",
                    "ky-Arab": "und",
                    "ky-Latn": "und",
                    "ml-Arab": "und",
                    "mn-Mong": "und",
                    "mni-Mtei": "und",
                    "ms-Arab": "und",
                    "pa-Arab": "und",
                    "sat-Deva": "und",
                    "sd-Deva": "und",
                    "sd-Khoj": "und",
                    "sd-Sind": "und",
                    "shi-Latn": "und",
                    "so-Arab": "und",
                    "sr-Latn": "und",
                    "sw-Arab": "und",
                    "tg-Arab": "und",
                    "ug-Cyrl": "und",
                    "uz-Arab": "und",
                    "uz-Cyrl": "und",
                    "vai-Latn": "und",
                    "wo-Arab": "und",
                    "yo-Arab": "und",
                    "yue-Hans": "und",
                    "zh-Hant": "und",
                    "zh-Hant-MO": "zh-Hant-HK"
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        57421:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/cldr-data/supplemental.js ***!
              \************************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.supplementalCldr = void 0;
                // !!! AUTO-GENERATED FILE, DO NOT EDIT
                exports.supplementalCldr = {
                    supplemental: {
                        version: {
                            _unicodeVersion: "12.1.0",
                            _cldrVersion: "36"
                        },
                        likelySubtags: {
                            aa: "aa-Latn-ET",
                            aai: "aai-Latn-ZZ",
                            aak: "aak-Latn-ZZ",
                            aau: "aau-Latn-ZZ",
                            ab: "ab-Cyrl-GE",
                            abi: "abi-Latn-ZZ",
                            abq: "abq-Cyrl-ZZ",
                            abr: "abr-Latn-GH",
                            abt: "abt-Latn-ZZ",
                            aby: "aby-Latn-ZZ",
                            acd: "acd-Latn-ZZ",
                            ace: "ace-Latn-ID",
                            ach: "ach-Latn-UG",
                            ada: "ada-Latn-GH",
                            ade: "ade-Latn-ZZ",
                            adj: "adj-Latn-ZZ",
                            adp: "adp-Tibt-BT",
                            ady: "ady-Cyrl-RU",
                            adz: "adz-Latn-ZZ",
                            ae: "ae-Avst-IR",
                            aeb: "aeb-Arab-TN",
                            aey: "aey-Latn-ZZ",
                            af: "af-Latn-ZA",
                            agc: "agc-Latn-ZZ",
                            agd: "agd-Latn-ZZ",
                            agg: "agg-Latn-ZZ",
                            agm: "agm-Latn-ZZ",
                            ago: "ago-Latn-ZZ",
                            agq: "agq-Latn-CM",
                            aha: "aha-Latn-ZZ",
                            ahl: "ahl-Latn-ZZ",
                            aho: "aho-Ahom-IN",
                            ajg: "ajg-Latn-ZZ",
                            ak: "ak-Latn-GH",
                            akk: "akk-Xsux-IQ",
                            ala: "ala-Latn-ZZ",
                            ali: "ali-Latn-ZZ",
                            aln: "aln-Latn-XK",
                            alt: "alt-Cyrl-RU",
                            am: "am-Ethi-ET",
                            amm: "amm-Latn-ZZ",
                            amn: "amn-Latn-ZZ",
                            amo: "amo-Latn-NG",
                            amp: "amp-Latn-ZZ",
                            an: "an-Latn-ES",
                            anc: "anc-Latn-ZZ",
                            ank: "ank-Latn-ZZ",
                            ann: "ann-Latn-ZZ",
                            any: "any-Latn-ZZ",
                            aoj: "aoj-Latn-ZZ",
                            aom: "aom-Latn-ZZ",
                            aoz: "aoz-Latn-ID",
                            apc: "apc-Arab-ZZ",
                            apd: "apd-Arab-TG",
                            ape: "ape-Latn-ZZ",
                            apr: "apr-Latn-ZZ",
                            aps: "aps-Latn-ZZ",
                            apz: "apz-Latn-ZZ",
                            ar: "ar-Arab-EG",
                            arc: "arc-Armi-IR",
                            "arc-Nbat": "arc-Nbat-JO",
                            "arc-Palm": "arc-Palm-SY",
                            arh: "arh-Latn-ZZ",
                            arn: "arn-Latn-CL",
                            aro: "aro-Latn-BO",
                            arq: "arq-Arab-DZ",
                            ars: "ars-Arab-SA",
                            ary: "ary-Arab-MA",
                            arz: "arz-Arab-EG",
                            as: "as-Beng-IN",
                            asa: "asa-Latn-TZ",
                            ase: "ase-Sgnw-US",
                            asg: "asg-Latn-ZZ",
                            aso: "aso-Latn-ZZ",
                            ast: "ast-Latn-ES",
                            ata: "ata-Latn-ZZ",
                            atg: "atg-Latn-ZZ",
                            atj: "atj-Latn-CA",
                            auy: "auy-Latn-ZZ",
                            av: "av-Cyrl-RU",
                            avl: "avl-Arab-ZZ",
                            avn: "avn-Latn-ZZ",
                            avt: "avt-Latn-ZZ",
                            avu: "avu-Latn-ZZ",
                            awa: "awa-Deva-IN",
                            awb: "awb-Latn-ZZ",
                            awo: "awo-Latn-ZZ",
                            awx: "awx-Latn-ZZ",
                            ay: "ay-Latn-BO",
                            ayb: "ayb-Latn-ZZ",
                            az: "az-Latn-AZ",
                            "az-Arab": "az-Arab-IR",
                            "az-IQ": "az-Arab-IQ",
                            "az-IR": "az-Arab-IR",
                            "az-RU": "az-Cyrl-RU",
                            ba: "ba-Cyrl-RU",
                            bal: "bal-Arab-PK",
                            ban: "ban-Latn-ID",
                            bap: "bap-Deva-NP",
                            bar: "bar-Latn-AT",
                            bas: "bas-Latn-CM",
                            bav: "bav-Latn-ZZ",
                            bax: "bax-Bamu-CM",
                            bba: "bba-Latn-ZZ",
                            bbb: "bbb-Latn-ZZ",
                            bbc: "bbc-Latn-ID",
                            bbd: "bbd-Latn-ZZ",
                            bbj: "bbj-Latn-CM",
                            bbp: "bbp-Latn-ZZ",
                            bbr: "bbr-Latn-ZZ",
                            bcf: "bcf-Latn-ZZ",
                            bch: "bch-Latn-ZZ",
                            bci: "bci-Latn-CI",
                            bcm: "bcm-Latn-ZZ",
                            bcn: "bcn-Latn-ZZ",
                            bco: "bco-Latn-ZZ",
                            bcq: "bcq-Ethi-ZZ",
                            bcu: "bcu-Latn-ZZ",
                            bdd: "bdd-Latn-ZZ",
                            be: "be-Cyrl-BY",
                            bef: "bef-Latn-ZZ",
                            beh: "beh-Latn-ZZ",
                            bej: "bej-Arab-SD",
                            bem: "bem-Latn-ZM",
                            bet: "bet-Latn-ZZ",
                            bew: "bew-Latn-ID",
                            bex: "bex-Latn-ZZ",
                            bez: "bez-Latn-TZ",
                            bfd: "bfd-Latn-CM",
                            bfq: "bfq-Taml-IN",
                            bft: "bft-Arab-PK",
                            bfy: "bfy-Deva-IN",
                            bg: "bg-Cyrl-BG",
                            bgc: "bgc-Deva-IN",
                            bgn: "bgn-Arab-PK",
                            bgx: "bgx-Grek-TR",
                            bhb: "bhb-Deva-IN",
                            bhg: "bhg-Latn-ZZ",
                            bhi: "bhi-Deva-IN",
                            bhl: "bhl-Latn-ZZ",
                            bho: "bho-Deva-IN",
                            bhy: "bhy-Latn-ZZ",
                            bi: "bi-Latn-VU",
                            bib: "bib-Latn-ZZ",
                            big: "big-Latn-ZZ",
                            bik: "bik-Latn-PH",
                            bim: "bim-Latn-ZZ",
                            bin: "bin-Latn-NG",
                            bio: "bio-Latn-ZZ",
                            biq: "biq-Latn-ZZ",
                            bjh: "bjh-Latn-ZZ",
                            bji: "bji-Ethi-ZZ",
                            bjj: "bjj-Deva-IN",
                            bjn: "bjn-Latn-ID",
                            bjo: "bjo-Latn-ZZ",
                            bjr: "bjr-Latn-ZZ",
                            bjt: "bjt-Latn-SN",
                            bjz: "bjz-Latn-ZZ",
                            bkc: "bkc-Latn-ZZ",
                            bkm: "bkm-Latn-CM",
                            bkq: "bkq-Latn-ZZ",
                            bku: "bku-Latn-PH",
                            bkv: "bkv-Latn-ZZ",
                            blt: "blt-Tavt-VN",
                            bm: "bm-Latn-ML",
                            bmh: "bmh-Latn-ZZ",
                            bmk: "bmk-Latn-ZZ",
                            bmq: "bmq-Latn-ML",
                            bmu: "bmu-Latn-ZZ",
                            bn: "bn-Beng-BD",
                            bng: "bng-Latn-ZZ",
                            bnm: "bnm-Latn-ZZ",
                            bnp: "bnp-Latn-ZZ",
                            bo: "bo-Tibt-CN",
                            boj: "boj-Latn-ZZ",
                            bom: "bom-Latn-ZZ",
                            bon: "bon-Latn-ZZ",
                            bpy: "bpy-Beng-IN",
                            bqc: "bqc-Latn-ZZ",
                            bqi: "bqi-Arab-IR",
                            bqp: "bqp-Latn-ZZ",
                            bqv: "bqv-Latn-CI",
                            br: "br-Latn-FR",
                            bra: "bra-Deva-IN",
                            brh: "brh-Arab-PK",
                            brx: "brx-Deva-IN",
                            brz: "brz-Latn-ZZ",
                            bs: "bs-Latn-BA",
                            bsj: "bsj-Latn-ZZ",
                            bsq: "bsq-Bass-LR",
                            bss: "bss-Latn-CM",
                            bst: "bst-Ethi-ZZ",
                            bto: "bto-Latn-PH",
                            btt: "btt-Latn-ZZ",
                            btv: "btv-Deva-PK",
                            bua: "bua-Cyrl-RU",
                            buc: "buc-Latn-YT",
                            bud: "bud-Latn-ZZ",
                            bug: "bug-Latn-ID",
                            buk: "buk-Latn-ZZ",
                            bum: "bum-Latn-CM",
                            buo: "buo-Latn-ZZ",
                            bus: "bus-Latn-ZZ",
                            buu: "buu-Latn-ZZ",
                            bvb: "bvb-Latn-GQ",
                            bwd: "bwd-Latn-ZZ",
                            bwr: "bwr-Latn-ZZ",
                            bxh: "bxh-Latn-ZZ",
                            bye: "bye-Latn-ZZ",
                            byn: "byn-Ethi-ER",
                            byr: "byr-Latn-ZZ",
                            bys: "bys-Latn-ZZ",
                            byv: "byv-Latn-CM",
                            byx: "byx-Latn-ZZ",
                            bza: "bza-Latn-ZZ",
                            bze: "bze-Latn-ML",
                            bzf: "bzf-Latn-ZZ",
                            bzh: "bzh-Latn-ZZ",
                            bzw: "bzw-Latn-ZZ",
                            ca: "ca-Latn-ES",
                            can: "can-Latn-ZZ",
                            cbj: "cbj-Latn-ZZ",
                            cch: "cch-Latn-NG",
                            ccp: "ccp-Cakm-BD",
                            ce: "ce-Cyrl-RU",
                            ceb: "ceb-Latn-PH",
                            cfa: "cfa-Latn-ZZ",
                            cgg: "cgg-Latn-UG",
                            ch: "ch-Latn-GU",
                            chk: "chk-Latn-FM",
                            chm: "chm-Cyrl-RU",
                            cho: "cho-Latn-US",
                            chp: "chp-Latn-CA",
                            chr: "chr-Cher-US",
                            cic: "cic-Latn-US",
                            cja: "cja-Arab-KH",
                            cjm: "cjm-Cham-VN",
                            cjv: "cjv-Latn-ZZ",
                            ckb: "ckb-Arab-IQ",
                            ckl: "ckl-Latn-ZZ",
                            cko: "cko-Latn-ZZ",
                            cky: "cky-Latn-ZZ",
                            cla: "cla-Latn-ZZ",
                            cme: "cme-Latn-ZZ",
                            cmg: "cmg-Soyo-MN",
                            co: "co-Latn-FR",
                            cop: "cop-Copt-EG",
                            cps: "cps-Latn-PH",
                            cr: "cr-Cans-CA",
                            crh: "crh-Cyrl-UA",
                            crj: "crj-Cans-CA",
                            crk: "crk-Cans-CA",
                            crl: "crl-Cans-CA",
                            crm: "crm-Cans-CA",
                            crs: "crs-Latn-SC",
                            cs: "cs-Latn-CZ",
                            csb: "csb-Latn-PL",
                            csw: "csw-Cans-CA",
                            ctd: "ctd-Pauc-MM",
                            cu: "cu-Cyrl-RU",
                            "cu-Glag": "cu-Glag-BG",
                            cv: "cv-Cyrl-RU",
                            cy: "cy-Latn-GB",
                            da: "da-Latn-DK",
                            dad: "dad-Latn-ZZ",
                            daf: "daf-Latn-ZZ",
                            dag: "dag-Latn-ZZ",
                            dah: "dah-Latn-ZZ",
                            dak: "dak-Latn-US",
                            dar: "dar-Cyrl-RU",
                            dav: "dav-Latn-KE",
                            dbd: "dbd-Latn-ZZ",
                            dbq: "dbq-Latn-ZZ",
                            dcc: "dcc-Arab-IN",
                            ddn: "ddn-Latn-ZZ",
                            de: "de-Latn-DE",
                            ded: "ded-Latn-ZZ",
                            den: "den-Latn-CA",
                            dga: "dga-Latn-ZZ",
                            dgh: "dgh-Latn-ZZ",
                            dgi: "dgi-Latn-ZZ",
                            dgl: "dgl-Arab-ZZ",
                            dgr: "dgr-Latn-CA",
                            dgz: "dgz-Latn-ZZ",
                            dia: "dia-Latn-ZZ",
                            dje: "dje-Latn-NE",
                            dnj: "dnj-Latn-CI",
                            dob: "dob-Latn-ZZ",
                            doi: "doi-Arab-IN",
                            dop: "dop-Latn-ZZ",
                            dow: "dow-Latn-ZZ",
                            drh: "drh-Mong-CN",
                            dri: "dri-Latn-ZZ",
                            drs: "drs-Ethi-ZZ",
                            dsb: "dsb-Latn-DE",
                            dtm: "dtm-Latn-ML",
                            dtp: "dtp-Latn-MY",
                            dts: "dts-Latn-ZZ",
                            dty: "dty-Deva-NP",
                            dua: "dua-Latn-CM",
                            duc: "duc-Latn-ZZ",
                            dud: "dud-Latn-ZZ",
                            dug: "dug-Latn-ZZ",
                            dv: "dv-Thaa-MV",
                            dva: "dva-Latn-ZZ",
                            dww: "dww-Latn-ZZ",
                            dyo: "dyo-Latn-SN",
                            dyu: "dyu-Latn-BF",
                            dz: "dz-Tibt-BT",
                            dzg: "dzg-Latn-ZZ",
                            ebu: "ebu-Latn-KE",
                            ee: "ee-Latn-GH",
                            efi: "efi-Latn-NG",
                            egl: "egl-Latn-IT",
                            egy: "egy-Egyp-EG",
                            eka: "eka-Latn-ZZ",
                            eky: "eky-Kali-MM",
                            el: "el-Grek-GR",
                            ema: "ema-Latn-ZZ",
                            emi: "emi-Latn-ZZ",
                            en: "en-Latn-US",
                            "en-Shaw": "en-Shaw-GB",
                            enn: "enn-Latn-ZZ",
                            enq: "enq-Latn-ZZ",
                            eo: "eo-Latn-001",
                            eri: "eri-Latn-ZZ",
                            es: "es-Latn-ES",
                            esg: "esg-Gonm-IN",
                            esu: "esu-Latn-US",
                            et: "et-Latn-EE",
                            etr: "etr-Latn-ZZ",
                            ett: "ett-Ital-IT",
                            etu: "etu-Latn-ZZ",
                            etx: "etx-Latn-ZZ",
                            eu: "eu-Latn-ES",
                            ewo: "ewo-Latn-CM",
                            ext: "ext-Latn-ES",
                            fa: "fa-Arab-IR",
                            faa: "faa-Latn-ZZ",
                            fab: "fab-Latn-ZZ",
                            fag: "fag-Latn-ZZ",
                            fai: "fai-Latn-ZZ",
                            fan: "fan-Latn-GQ",
                            ff: "ff-Latn-SN",
                            "ff-Adlm": "ff-Adlm-GN",
                            ffi: "ffi-Latn-ZZ",
                            ffm: "ffm-Latn-ML",
                            fi: "fi-Latn-FI",
                            fia: "fia-Arab-SD",
                            fil: "fil-Latn-PH",
                            fit: "fit-Latn-SE",
                            fj: "fj-Latn-FJ",
                            flr: "flr-Latn-ZZ",
                            fmp: "fmp-Latn-ZZ",
                            fo: "fo-Latn-FO",
                            fod: "fod-Latn-ZZ",
                            fon: "fon-Latn-BJ",
                            for: "for-Latn-ZZ",
                            fpe: "fpe-Latn-ZZ",
                            fqs: "fqs-Latn-ZZ",
                            fr: "fr-Latn-FR",
                            frc: "frc-Latn-US",
                            frp: "frp-Latn-FR",
                            frr: "frr-Latn-DE",
                            frs: "frs-Latn-DE",
                            fub: "fub-Arab-CM",
                            fud: "fud-Latn-WF",
                            fue: "fue-Latn-ZZ",
                            fuf: "fuf-Latn-GN",
                            fuh: "fuh-Latn-ZZ",
                            fuq: "fuq-Latn-NE",
                            fur: "fur-Latn-IT",
                            fuv: "fuv-Latn-NG",
                            fuy: "fuy-Latn-ZZ",
                            fvr: "fvr-Latn-SD",
                            fy: "fy-Latn-NL",
                            ga: "ga-Latn-IE",
                            gaa: "gaa-Latn-GH",
                            gaf: "gaf-Latn-ZZ",
                            gag: "gag-Latn-MD",
                            gah: "gah-Latn-ZZ",
                            gaj: "gaj-Latn-ZZ",
                            gam: "gam-Latn-ZZ",
                            gan: "gan-Hans-CN",
                            gaw: "gaw-Latn-ZZ",
                            gay: "gay-Latn-ID",
                            gba: "gba-Latn-ZZ",
                            gbf: "gbf-Latn-ZZ",
                            gbm: "gbm-Deva-IN",
                            gby: "gby-Latn-ZZ",
                            gbz: "gbz-Arab-IR",
                            gcr: "gcr-Latn-GF",
                            gd: "gd-Latn-GB",
                            gde: "gde-Latn-ZZ",
                            gdn: "gdn-Latn-ZZ",
                            gdr: "gdr-Latn-ZZ",
                            geb: "geb-Latn-ZZ",
                            gej: "gej-Latn-ZZ",
                            gel: "gel-Latn-ZZ",
                            gez: "gez-Ethi-ET",
                            gfk: "gfk-Latn-ZZ",
                            ggn: "ggn-Deva-NP",
                            ghs: "ghs-Latn-ZZ",
                            gil: "gil-Latn-KI",
                            gim: "gim-Latn-ZZ",
                            gjk: "gjk-Arab-PK",
                            gjn: "gjn-Latn-ZZ",
                            gju: "gju-Arab-PK",
                            gkn: "gkn-Latn-ZZ",
                            gkp: "gkp-Latn-ZZ",
                            gl: "gl-Latn-ES",
                            glk: "glk-Arab-IR",
                            gmm: "gmm-Latn-ZZ",
                            gmv: "gmv-Ethi-ZZ",
                            gn: "gn-Latn-PY",
                            gnd: "gnd-Latn-ZZ",
                            gng: "gng-Latn-ZZ",
                            god: "god-Latn-ZZ",
                            gof: "gof-Ethi-ZZ",
                            goi: "goi-Latn-ZZ",
                            gom: "gom-Deva-IN",
                            gon: "gon-Telu-IN",
                            gor: "gor-Latn-ID",
                            gos: "gos-Latn-NL",
                            got: "got-Goth-UA",
                            grb: "grb-Latn-ZZ",
                            grc: "grc-Cprt-CY",
                            "grc-Linb": "grc-Linb-GR",
                            grt: "grt-Beng-IN",
                            grw: "grw-Latn-ZZ",
                            gsw: "gsw-Latn-CH",
                            gu: "gu-Gujr-IN",
                            gub: "gub-Latn-BR",
                            guc: "guc-Latn-CO",
                            gud: "gud-Latn-ZZ",
                            gur: "gur-Latn-GH",
                            guw: "guw-Latn-ZZ",
                            gux: "gux-Latn-ZZ",
                            guz: "guz-Latn-KE",
                            gv: "gv-Latn-IM",
                            gvf: "gvf-Latn-ZZ",
                            gvr: "gvr-Deva-NP",
                            gvs: "gvs-Latn-ZZ",
                            gwc: "gwc-Arab-ZZ",
                            gwi: "gwi-Latn-CA",
                            gwt: "gwt-Arab-ZZ",
                            gyi: "gyi-Latn-ZZ",
                            ha: "ha-Latn-NG",
                            "ha-CM": "ha-Arab-CM",
                            "ha-SD": "ha-Arab-SD",
                            hag: "hag-Latn-ZZ",
                            hak: "hak-Hans-CN",
                            ham: "ham-Latn-ZZ",
                            haw: "haw-Latn-US",
                            haz: "haz-Arab-AF",
                            hbb: "hbb-Latn-ZZ",
                            hdy: "hdy-Ethi-ZZ",
                            he: "he-Hebr-IL",
                            hhy: "hhy-Latn-ZZ",
                            hi: "hi-Deva-IN",
                            hia: "hia-Latn-ZZ",
                            hif: "hif-Latn-FJ",
                            hig: "hig-Latn-ZZ",
                            hih: "hih-Latn-ZZ",
                            hil: "hil-Latn-PH",
                            hla: "hla-Latn-ZZ",
                            hlu: "hlu-Hluw-TR",
                            hmd: "hmd-Plrd-CN",
                            hmt: "hmt-Latn-ZZ",
                            hnd: "hnd-Arab-PK",
                            hne: "hne-Deva-IN",
                            hnj: "hnj-Hmng-LA",
                            hnn: "hnn-Latn-PH",
                            hno: "hno-Arab-PK",
                            ho: "ho-Latn-PG",
                            hoc: "hoc-Deva-IN",
                            hoj: "hoj-Deva-IN",
                            hot: "hot-Latn-ZZ",
                            hr: "hr-Latn-HR",
                            hsb: "hsb-Latn-DE",
                            hsn: "hsn-Hans-CN",
                            ht: "ht-Latn-HT",
                            hu: "hu-Latn-HU",
                            hui: "hui-Latn-ZZ",
                            hy: "hy-Armn-AM",
                            hz: "hz-Latn-NA",
                            ia: "ia-Latn-001",
                            ian: "ian-Latn-ZZ",
                            iar: "iar-Latn-ZZ",
                            iba: "iba-Latn-MY",
                            ibb: "ibb-Latn-NG",
                            iby: "iby-Latn-ZZ",
                            ica: "ica-Latn-ZZ",
                            ich: "ich-Latn-ZZ",
                            id: "id-Latn-ID",
                            idd: "idd-Latn-ZZ",
                            idi: "idi-Latn-ZZ",
                            idu: "idu-Latn-ZZ",
                            ife: "ife-Latn-TG",
                            ig: "ig-Latn-NG",
                            igb: "igb-Latn-ZZ",
                            ige: "ige-Latn-ZZ",
                            ii: "ii-Yiii-CN",
                            ijj: "ijj-Latn-ZZ",
                            ik: "ik-Latn-US",
                            ikk: "ikk-Latn-ZZ",
                            ikt: "ikt-Latn-CA",
                            ikw: "ikw-Latn-ZZ",
                            ikx: "ikx-Latn-ZZ",
                            ilo: "ilo-Latn-PH",
                            imo: "imo-Latn-ZZ",
                            in: "in-Latn-ID",
                            inh: "inh-Cyrl-RU",
                            io: "io-Latn-001",
                            iou: "iou-Latn-ZZ",
                            iri: "iri-Latn-ZZ",
                            is: "is-Latn-IS",
                            it: "it-Latn-IT",
                            iu: "iu-Cans-CA",
                            iw: "iw-Hebr-IL",
                            iwm: "iwm-Latn-ZZ",
                            iws: "iws-Latn-ZZ",
                            izh: "izh-Latn-RU",
                            izi: "izi-Latn-ZZ",
                            ja: "ja-Jpan-JP",
                            jab: "jab-Latn-ZZ",
                            jam: "jam-Latn-JM",
                            jbo: "jbo-Latn-001",
                            jbu: "jbu-Latn-ZZ",
                            jen: "jen-Latn-ZZ",
                            jgk: "jgk-Latn-ZZ",
                            jgo: "jgo-Latn-CM",
                            ji: "ji-Hebr-UA",
                            jib: "jib-Latn-ZZ",
                            jmc: "jmc-Latn-TZ",
                            jml: "jml-Deva-NP",
                            jra: "jra-Latn-ZZ",
                            jut: "jut-Latn-DK",
                            jv: "jv-Latn-ID",
                            jw: "jw-Latn-ID",
                            ka: "ka-Geor-GE",
                            kaa: "kaa-Cyrl-UZ",
                            kab: "kab-Latn-DZ",
                            kac: "kac-Latn-MM",
                            kad: "kad-Latn-ZZ",
                            kai: "kai-Latn-ZZ",
                            kaj: "kaj-Latn-NG",
                            kam: "kam-Latn-KE",
                            kao: "kao-Latn-ML",
                            kbd: "kbd-Cyrl-RU",
                            kbm: "kbm-Latn-ZZ",
                            kbp: "kbp-Latn-ZZ",
                            kbq: "kbq-Latn-ZZ",
                            kbx: "kbx-Latn-ZZ",
                            kby: "kby-Arab-NE",
                            kcg: "kcg-Latn-NG",
                            kck: "kck-Latn-ZW",
                            kcl: "kcl-Latn-ZZ",
                            kct: "kct-Latn-ZZ",
                            kde: "kde-Latn-TZ",
                            kdh: "kdh-Arab-TG",
                            kdl: "kdl-Latn-ZZ",
                            kdt: "kdt-Thai-TH",
                            kea: "kea-Latn-CV",
                            ken: "ken-Latn-CM",
                            kez: "kez-Latn-ZZ",
                            kfo: "kfo-Latn-CI",
                            kfr: "kfr-Deva-IN",
                            kfy: "kfy-Deva-IN",
                            kg: "kg-Latn-CD",
                            kge: "kge-Latn-ID",
                            kgf: "kgf-Latn-ZZ",
                            kgp: "kgp-Latn-BR",
                            kha: "kha-Latn-IN",
                            khb: "khb-Talu-CN",
                            khn: "khn-Deva-IN",
                            khq: "khq-Latn-ML",
                            khs: "khs-Latn-ZZ",
                            kht: "kht-Mymr-IN",
                            khw: "khw-Arab-PK",
                            khz: "khz-Latn-ZZ",
                            ki: "ki-Latn-KE",
                            kij: "kij-Latn-ZZ",
                            kiu: "kiu-Latn-TR",
                            kiw: "kiw-Latn-ZZ",
                            kj: "kj-Latn-NA",
                            kjd: "kjd-Latn-ZZ",
                            kjg: "kjg-Laoo-LA",
                            kjs: "kjs-Latn-ZZ",
                            kjy: "kjy-Latn-ZZ",
                            kk: "kk-Cyrl-KZ",
                            "kk-AF": "kk-Arab-AF",
                            "kk-Arab": "kk-Arab-CN",
                            "kk-CN": "kk-Arab-CN",
                            "kk-IR": "kk-Arab-IR",
                            "kk-MN": "kk-Arab-MN",
                            kkc: "kkc-Latn-ZZ",
                            kkj: "kkj-Latn-CM",
                            kl: "kl-Latn-GL",
                            kln: "kln-Latn-KE",
                            klq: "klq-Latn-ZZ",
                            klt: "klt-Latn-ZZ",
                            klx: "klx-Latn-ZZ",
                            km: "km-Khmr-KH",
                            kmb: "kmb-Latn-AO",
                            kmh: "kmh-Latn-ZZ",
                            kmo: "kmo-Latn-ZZ",
                            kms: "kms-Latn-ZZ",
                            kmu: "kmu-Latn-ZZ",
                            kmw: "kmw-Latn-ZZ",
                            kn: "kn-Knda-IN",
                            knf: "knf-Latn-GW",
                            knp: "knp-Latn-ZZ",
                            ko: "ko-Kore-KR",
                            koi: "koi-Cyrl-RU",
                            kok: "kok-Deva-IN",
                            kol: "kol-Latn-ZZ",
                            kos: "kos-Latn-FM",
                            koz: "koz-Latn-ZZ",
                            kpe: "kpe-Latn-LR",
                            kpf: "kpf-Latn-ZZ",
                            kpo: "kpo-Latn-ZZ",
                            kpr: "kpr-Latn-ZZ",
                            kpx: "kpx-Latn-ZZ",
                            kqb: "kqb-Latn-ZZ",
                            kqf: "kqf-Latn-ZZ",
                            kqs: "kqs-Latn-ZZ",
                            kqy: "kqy-Ethi-ZZ",
                            kr: "kr-Latn-ZZ",
                            krc: "krc-Cyrl-RU",
                            kri: "kri-Latn-SL",
                            krj: "krj-Latn-PH",
                            krl: "krl-Latn-RU",
                            krs: "krs-Latn-ZZ",
                            kru: "kru-Deva-IN",
                            ks: "ks-Arab-IN",
                            ksb: "ksb-Latn-TZ",
                            ksd: "ksd-Latn-ZZ",
                            ksf: "ksf-Latn-CM",
                            ksh: "ksh-Latn-DE",
                            ksj: "ksj-Latn-ZZ",
                            ksr: "ksr-Latn-ZZ",
                            ktb: "ktb-Ethi-ZZ",
                            ktm: "ktm-Latn-ZZ",
                            kto: "kto-Latn-ZZ",
                            ktr: "ktr-Latn-MY",
                            ku: "ku-Latn-TR",
                            "ku-Arab": "ku-Arab-IQ",
                            "ku-LB": "ku-Arab-LB",
                            kub: "kub-Latn-ZZ",
                            kud: "kud-Latn-ZZ",
                            kue: "kue-Latn-ZZ",
                            kuj: "kuj-Latn-ZZ",
                            kum: "kum-Cyrl-RU",
                            kun: "kun-Latn-ZZ",
                            kup: "kup-Latn-ZZ",
                            kus: "kus-Latn-ZZ",
                            kv: "kv-Cyrl-RU",
                            kvg: "kvg-Latn-ZZ",
                            kvr: "kvr-Latn-ID",
                            kvx: "kvx-Arab-PK",
                            kw: "kw-Latn-GB",
                            kwj: "kwj-Latn-ZZ",
                            kwo: "kwo-Latn-ZZ",
                            kwq: "kwq-Latn-ZZ",
                            kxa: "kxa-Latn-ZZ",
                            kxc: "kxc-Ethi-ZZ",
                            kxe: "kxe-Latn-ZZ",
                            kxm: "kxm-Thai-TH",
                            kxp: "kxp-Arab-PK",
                            kxw: "kxw-Latn-ZZ",
                            kxz: "kxz-Latn-ZZ",
                            ky: "ky-Cyrl-KG",
                            "ky-Arab": "ky-Arab-CN",
                            "ky-CN": "ky-Arab-CN",
                            "ky-Latn": "ky-Latn-TR",
                            "ky-TR": "ky-Latn-TR",
                            kye: "kye-Latn-ZZ",
                            kyx: "kyx-Latn-ZZ",
                            kzj: "kzj-Latn-MY",
                            kzr: "kzr-Latn-ZZ",
                            kzt: "kzt-Latn-MY",
                            la: "la-Latn-VA",
                            lab: "lab-Lina-GR",
                            lad: "lad-Hebr-IL",
                            lag: "lag-Latn-TZ",
                            lah: "lah-Arab-PK",
                            laj: "laj-Latn-UG",
                            las: "las-Latn-ZZ",
                            lb: "lb-Latn-LU",
                            lbe: "lbe-Cyrl-RU",
                            lbu: "lbu-Latn-ZZ",
                            lbw: "lbw-Latn-ID",
                            lcm: "lcm-Latn-ZZ",
                            lcp: "lcp-Thai-CN",
                            ldb: "ldb-Latn-ZZ",
                            led: "led-Latn-ZZ",
                            lee: "lee-Latn-ZZ",
                            lem: "lem-Latn-ZZ",
                            lep: "lep-Lepc-IN",
                            leq: "leq-Latn-ZZ",
                            leu: "leu-Latn-ZZ",
                            lez: "lez-Cyrl-RU",
                            lg: "lg-Latn-UG",
                            lgg: "lgg-Latn-ZZ",
                            li: "li-Latn-NL",
                            lia: "lia-Latn-ZZ",
                            lid: "lid-Latn-ZZ",
                            lif: "lif-Deva-NP",
                            "lif-Limb": "lif-Limb-IN",
                            lig: "lig-Latn-ZZ",
                            lih: "lih-Latn-ZZ",
                            lij: "lij-Latn-IT",
                            lis: "lis-Lisu-CN",
                            ljp: "ljp-Latn-ID",
                            lki: "lki-Arab-IR",
                            lkt: "lkt-Latn-US",
                            lle: "lle-Latn-ZZ",
                            lln: "lln-Latn-ZZ",
                            lmn: "lmn-Telu-IN",
                            lmo: "lmo-Latn-IT",
                            lmp: "lmp-Latn-ZZ",
                            ln: "ln-Latn-CD",
                            lns: "lns-Latn-ZZ",
                            lnu: "lnu-Latn-ZZ",
                            lo: "lo-Laoo-LA",
                            loj: "loj-Latn-ZZ",
                            lok: "lok-Latn-ZZ",
                            lol: "lol-Latn-CD",
                            lor: "lor-Latn-ZZ",
                            los: "los-Latn-ZZ",
                            loz: "loz-Latn-ZM",
                            lrc: "lrc-Arab-IR",
                            lt: "lt-Latn-LT",
                            ltg: "ltg-Latn-LV",
                            lu: "lu-Latn-CD",
                            lua: "lua-Latn-CD",
                            luo: "luo-Latn-KE",
                            luy: "luy-Latn-KE",
                            luz: "luz-Arab-IR",
                            lv: "lv-Latn-LV",
                            lwl: "lwl-Thai-TH",
                            lzh: "lzh-Hans-CN",
                            lzz: "lzz-Latn-TR",
                            mad: "mad-Latn-ID",
                            maf: "maf-Latn-CM",
                            mag: "mag-Deva-IN",
                            mai: "mai-Deva-IN",
                            mak: "mak-Latn-ID",
                            man: "man-Latn-GM",
                            "man-GN": "man-Nkoo-GN",
                            "man-Nkoo": "man-Nkoo-GN",
                            mas: "mas-Latn-KE",
                            maw: "maw-Latn-ZZ",
                            maz: "maz-Latn-MX",
                            mbh: "mbh-Latn-ZZ",
                            mbo: "mbo-Latn-ZZ",
                            mbq: "mbq-Latn-ZZ",
                            mbu: "mbu-Latn-ZZ",
                            mbw: "mbw-Latn-ZZ",
                            mci: "mci-Latn-ZZ",
                            mcp: "mcp-Latn-ZZ",
                            mcq: "mcq-Latn-ZZ",
                            mcr: "mcr-Latn-ZZ",
                            mcu: "mcu-Latn-ZZ",
                            mda: "mda-Latn-ZZ",
                            mde: "mde-Arab-ZZ",
                            mdf: "mdf-Cyrl-RU",
                            mdh: "mdh-Latn-PH",
                            mdj: "mdj-Latn-ZZ",
                            mdr: "mdr-Latn-ID",
                            mdx: "mdx-Ethi-ZZ",
                            med: "med-Latn-ZZ",
                            mee: "mee-Latn-ZZ",
                            mek: "mek-Latn-ZZ",
                            men: "men-Latn-SL",
                            mer: "mer-Latn-KE",
                            met: "met-Latn-ZZ",
                            meu: "meu-Latn-ZZ",
                            mfa: "mfa-Arab-TH",
                            mfe: "mfe-Latn-MU",
                            mfn: "mfn-Latn-ZZ",
                            mfo: "mfo-Latn-ZZ",
                            mfq: "mfq-Latn-ZZ",
                            mg: "mg-Latn-MG",
                            mgh: "mgh-Latn-MZ",
                            mgl: "mgl-Latn-ZZ",
                            mgo: "mgo-Latn-CM",
                            mgp: "mgp-Deva-NP",
                            mgy: "mgy-Latn-TZ",
                            mh: "mh-Latn-MH",
                            mhi: "mhi-Latn-ZZ",
                            mhl: "mhl-Latn-ZZ",
                            mi: "mi-Latn-NZ",
                            mif: "mif-Latn-ZZ",
                            min: "min-Latn-ID",
                            mis: "mis-Hatr-IQ",
                            "mis-Medf": "mis-Medf-NG",
                            miw: "miw-Latn-ZZ",
                            mk: "mk-Cyrl-MK",
                            mki: "mki-Arab-ZZ",
                            mkl: "mkl-Latn-ZZ",
                            mkp: "mkp-Latn-ZZ",
                            mkw: "mkw-Latn-ZZ",
                            ml: "ml-Mlym-IN",
                            mle: "mle-Latn-ZZ",
                            mlp: "mlp-Latn-ZZ",
                            mls: "mls-Latn-SD",
                            mmo: "mmo-Latn-ZZ",
                            mmu: "mmu-Latn-ZZ",
                            mmx: "mmx-Latn-ZZ",
                            mn: "mn-Cyrl-MN",
                            "mn-CN": "mn-Mong-CN",
                            "mn-Mong": "mn-Mong-CN",
                            mna: "mna-Latn-ZZ",
                            mnf: "mnf-Latn-ZZ",
                            mni: "mni-Beng-IN",
                            mnw: "mnw-Mymr-MM",
                            mo: "mo-Latn-RO",
                            moa: "moa-Latn-ZZ",
                            moe: "moe-Latn-CA",
                            moh: "moh-Latn-CA",
                            mos: "mos-Latn-BF",
                            mox: "mox-Latn-ZZ",
                            mpp: "mpp-Latn-ZZ",
                            mps: "mps-Latn-ZZ",
                            mpt: "mpt-Latn-ZZ",
                            mpx: "mpx-Latn-ZZ",
                            mql: "mql-Latn-ZZ",
                            mr: "mr-Deva-IN",
                            mrd: "mrd-Deva-NP",
                            mrj: "mrj-Cyrl-RU",
                            mro: "mro-Mroo-BD",
                            ms: "ms-Latn-MY",
                            "ms-CC": "ms-Arab-CC",
                            "ms-ID": "ms-Arab-ID",
                            mt: "mt-Latn-MT",
                            mtc: "mtc-Latn-ZZ",
                            mtf: "mtf-Latn-ZZ",
                            mti: "mti-Latn-ZZ",
                            mtr: "mtr-Deva-IN",
                            mua: "mua-Latn-CM",
                            mur: "mur-Latn-ZZ",
                            mus: "mus-Latn-US",
                            mva: "mva-Latn-ZZ",
                            mvn: "mvn-Latn-ZZ",
                            mvy: "mvy-Arab-PK",
                            mwk: "mwk-Latn-ML",
                            mwr: "mwr-Deva-IN",
                            mwv: "mwv-Latn-ID",
                            mww: "mww-Hmnp-US",
                            mxc: "mxc-Latn-ZW",
                            mxm: "mxm-Latn-ZZ",
                            my: "my-Mymr-MM",
                            myk: "myk-Latn-ZZ",
                            mym: "mym-Ethi-ZZ",
                            myv: "myv-Cyrl-RU",
                            myw: "myw-Latn-ZZ",
                            myx: "myx-Latn-UG",
                            myz: "myz-Mand-IR",
                            mzk: "mzk-Latn-ZZ",
                            mzm: "mzm-Latn-ZZ",
                            mzn: "mzn-Arab-IR",
                            mzp: "mzp-Latn-ZZ",
                            mzw: "mzw-Latn-ZZ",
                            mzz: "mzz-Latn-ZZ",
                            na: "na-Latn-NR",
                            nac: "nac-Latn-ZZ",
                            naf: "naf-Latn-ZZ",
                            nak: "nak-Latn-ZZ",
                            nan: "nan-Hans-CN",
                            nap: "nap-Latn-IT",
                            naq: "naq-Latn-NA",
                            nas: "nas-Latn-ZZ",
                            nb: "nb-Latn-NO",
                            nca: "nca-Latn-ZZ",
                            nce: "nce-Latn-ZZ",
                            ncf: "ncf-Latn-ZZ",
                            nch: "nch-Latn-MX",
                            nco: "nco-Latn-ZZ",
                            ncu: "ncu-Latn-ZZ",
                            nd: "nd-Latn-ZW",
                            ndc: "ndc-Latn-MZ",
                            nds: "nds-Latn-DE",
                            ne: "ne-Deva-NP",
                            neb: "neb-Latn-ZZ",
                            new: "new-Deva-NP",
                            nex: "nex-Latn-ZZ",
                            nfr: "nfr-Latn-ZZ",
                            ng: "ng-Latn-NA",
                            nga: "nga-Latn-ZZ",
                            ngb: "ngb-Latn-ZZ",
                            ngl: "ngl-Latn-MZ",
                            nhb: "nhb-Latn-ZZ",
                            nhe: "nhe-Latn-MX",
                            nhw: "nhw-Latn-MX",
                            nif: "nif-Latn-ZZ",
                            nii: "nii-Latn-ZZ",
                            nij: "nij-Latn-ID",
                            nin: "nin-Latn-ZZ",
                            niu: "niu-Latn-NU",
                            niy: "niy-Latn-ZZ",
                            niz: "niz-Latn-ZZ",
                            njo: "njo-Latn-IN",
                            nkg: "nkg-Latn-ZZ",
                            nko: "nko-Latn-ZZ",
                            nl: "nl-Latn-NL",
                            nmg: "nmg-Latn-CM",
                            nmz: "nmz-Latn-ZZ",
                            nn: "nn-Latn-NO",
                            nnf: "nnf-Latn-ZZ",
                            nnh: "nnh-Latn-CM",
                            nnk: "nnk-Latn-ZZ",
                            nnm: "nnm-Latn-ZZ",
                            nnp: "nnp-Wcho-IN",
                            no: "no-Latn-NO",
                            nod: "nod-Lana-TH",
                            noe: "noe-Deva-IN",
                            non: "non-Runr-SE",
                            nop: "nop-Latn-ZZ",
                            nou: "nou-Latn-ZZ",
                            nqo: "nqo-Nkoo-GN",
                            nr: "nr-Latn-ZA",
                            nrb: "nrb-Latn-ZZ",
                            nsk: "nsk-Cans-CA",
                            nsn: "nsn-Latn-ZZ",
                            nso: "nso-Latn-ZA",
                            nss: "nss-Latn-ZZ",
                            ntm: "ntm-Latn-ZZ",
                            ntr: "ntr-Latn-ZZ",
                            nui: "nui-Latn-ZZ",
                            nup: "nup-Latn-ZZ",
                            nus: "nus-Latn-SS",
                            nuv: "nuv-Latn-ZZ",
                            nux: "nux-Latn-ZZ",
                            nv: "nv-Latn-US",
                            nwb: "nwb-Latn-ZZ",
                            nxq: "nxq-Latn-CN",
                            nxr: "nxr-Latn-ZZ",
                            ny: "ny-Latn-MW",
                            nym: "nym-Latn-TZ",
                            nyn: "nyn-Latn-UG",
                            nzi: "nzi-Latn-GH",
                            oc: "oc-Latn-FR",
                            ogc: "ogc-Latn-ZZ",
                            okr: "okr-Latn-ZZ",
                            okv: "okv-Latn-ZZ",
                            om: "om-Latn-ET",
                            ong: "ong-Latn-ZZ",
                            onn: "onn-Latn-ZZ",
                            ons: "ons-Latn-ZZ",
                            opm: "opm-Latn-ZZ",
                            or: "or-Orya-IN",
                            oro: "oro-Latn-ZZ",
                            oru: "oru-Arab-ZZ",
                            os: "os-Cyrl-GE",
                            osa: "osa-Osge-US",
                            ota: "ota-Arab-ZZ",
                            otk: "otk-Orkh-MN",
                            ozm: "ozm-Latn-ZZ",
                            pa: "pa-Guru-IN",
                            "pa-Arab": "pa-Arab-PK",
                            "pa-PK": "pa-Arab-PK",
                            pag: "pag-Latn-PH",
                            pal: "pal-Phli-IR",
                            "pal-Phlp": "pal-Phlp-CN",
                            pam: "pam-Latn-PH",
                            pap: "pap-Latn-AW",
                            pau: "pau-Latn-PW",
                            pbi: "pbi-Latn-ZZ",
                            pcd: "pcd-Latn-FR",
                            pcm: "pcm-Latn-NG",
                            pdc: "pdc-Latn-US",
                            pdt: "pdt-Latn-CA",
                            ped: "ped-Latn-ZZ",
                            peo: "peo-Xpeo-IR",
                            pex: "pex-Latn-ZZ",
                            pfl: "pfl-Latn-DE",
                            phl: "phl-Arab-ZZ",
                            phn: "phn-Phnx-LB",
                            pil: "pil-Latn-ZZ",
                            pip: "pip-Latn-ZZ",
                            pka: "pka-Brah-IN",
                            pko: "pko-Latn-KE",
                            pl: "pl-Latn-PL",
                            pla: "pla-Latn-ZZ",
                            pms: "pms-Latn-IT",
                            png: "png-Latn-ZZ",
                            pnn: "pnn-Latn-ZZ",
                            pnt: "pnt-Grek-GR",
                            pon: "pon-Latn-FM",
                            ppa: "ppa-Deva-IN",
                            ppo: "ppo-Latn-ZZ",
                            pra: "pra-Khar-PK",
                            prd: "prd-Arab-IR",
                            prg: "prg-Latn-001",
                            ps: "ps-Arab-AF",
                            pss: "pss-Latn-ZZ",
                            pt: "pt-Latn-BR",
                            ptp: "ptp-Latn-ZZ",
                            puu: "puu-Latn-GA",
                            pwa: "pwa-Latn-ZZ",
                            qu: "qu-Latn-PE",
                            quc: "quc-Latn-GT",
                            qug: "qug-Latn-EC",
                            rai: "rai-Latn-ZZ",
                            raj: "raj-Deva-IN",
                            rao: "rao-Latn-ZZ",
                            rcf: "rcf-Latn-RE",
                            rej: "rej-Latn-ID",
                            rel: "rel-Latn-ZZ",
                            res: "res-Latn-ZZ",
                            rgn: "rgn-Latn-IT",
                            rhg: "rhg-Arab-MM",
                            ria: "ria-Latn-IN",
                            rif: "rif-Tfng-MA",
                            "rif-NL": "rif-Latn-NL",
                            rjs: "rjs-Deva-NP",
                            rkt: "rkt-Beng-BD",
                            rm: "rm-Latn-CH",
                            rmf: "rmf-Latn-FI",
                            rmo: "rmo-Latn-CH",
                            rmt: "rmt-Arab-IR",
                            rmu: "rmu-Latn-SE",
                            rn: "rn-Latn-BI",
                            rna: "rna-Latn-ZZ",
                            rng: "rng-Latn-MZ",
                            ro: "ro-Latn-RO",
                            rob: "rob-Latn-ID",
                            rof: "rof-Latn-TZ",
                            roo: "roo-Latn-ZZ",
                            rro: "rro-Latn-ZZ",
                            rtm: "rtm-Latn-FJ",
                            ru: "ru-Cyrl-RU",
                            rue: "rue-Cyrl-UA",
                            rug: "rug-Latn-SB",
                            rw: "rw-Latn-RW",
                            rwk: "rwk-Latn-TZ",
                            rwo: "rwo-Latn-ZZ",
                            ryu: "ryu-Kana-JP",
                            sa: "sa-Deva-IN",
                            saf: "saf-Latn-GH",
                            sah: "sah-Cyrl-RU",
                            saq: "saq-Latn-KE",
                            sas: "sas-Latn-ID",
                            sat: "sat-Latn-IN",
                            sav: "sav-Latn-SN",
                            saz: "saz-Saur-IN",
                            sba: "sba-Latn-ZZ",
                            sbe: "sbe-Latn-ZZ",
                            sbp: "sbp-Latn-TZ",
                            sc: "sc-Latn-IT",
                            sck: "sck-Deva-IN",
                            scl: "scl-Arab-ZZ",
                            scn: "scn-Latn-IT",
                            sco: "sco-Latn-GB",
                            scs: "scs-Latn-CA",
                            sd: "sd-Arab-PK",
                            "sd-Deva": "sd-Deva-IN",
                            "sd-Khoj": "sd-Khoj-IN",
                            "sd-Sind": "sd-Sind-IN",
                            sdc: "sdc-Latn-IT",
                            sdh: "sdh-Arab-IR",
                            se: "se-Latn-NO",
                            sef: "sef-Latn-CI",
                            seh: "seh-Latn-MZ",
                            sei: "sei-Latn-MX",
                            ses: "ses-Latn-ML",
                            sg: "sg-Latn-CF",
                            sga: "sga-Ogam-IE",
                            sgs: "sgs-Latn-LT",
                            sgw: "sgw-Ethi-ZZ",
                            sgz: "sgz-Latn-ZZ",
                            shi: "shi-Tfng-MA",
                            shk: "shk-Latn-ZZ",
                            shn: "shn-Mymr-MM",
                            shu: "shu-Arab-ZZ",
                            si: "si-Sinh-LK",
                            sid: "sid-Latn-ET",
                            sig: "sig-Latn-ZZ",
                            sil: "sil-Latn-ZZ",
                            sim: "sim-Latn-ZZ",
                            sjr: "sjr-Latn-ZZ",
                            sk: "sk-Latn-SK",
                            skc: "skc-Latn-ZZ",
                            skr: "skr-Arab-PK",
                            sks: "sks-Latn-ZZ",
                            sl: "sl-Latn-SI",
                            sld: "sld-Latn-ZZ",
                            sli: "sli-Latn-PL",
                            sll: "sll-Latn-ZZ",
                            sly: "sly-Latn-ID",
                            sm: "sm-Latn-WS",
                            sma: "sma-Latn-SE",
                            smj: "smj-Latn-SE",
                            smn: "smn-Latn-FI",
                            smp: "smp-Samr-IL",
                            smq: "smq-Latn-ZZ",
                            sms: "sms-Latn-FI",
                            sn: "sn-Latn-ZW",
                            snc: "snc-Latn-ZZ",
                            snk: "snk-Latn-ML",
                            snp: "snp-Latn-ZZ",
                            snx: "snx-Latn-ZZ",
                            sny: "sny-Latn-ZZ",
                            so: "so-Latn-SO",
                            sog: "sog-Sogd-UZ",
                            sok: "sok-Latn-ZZ",
                            soq: "soq-Latn-ZZ",
                            sou: "sou-Thai-TH",
                            soy: "soy-Latn-ZZ",
                            spd: "spd-Latn-ZZ",
                            spl: "spl-Latn-ZZ",
                            sps: "sps-Latn-ZZ",
                            sq: "sq-Latn-AL",
                            sr: "sr-Cyrl-RS",
                            "sr-ME": "sr-Latn-ME",
                            "sr-RO": "sr-Latn-RO",
                            "sr-RU": "sr-Latn-RU",
                            "sr-TR": "sr-Latn-TR",
                            srb: "srb-Sora-IN",
                            srn: "srn-Latn-SR",
                            srr: "srr-Latn-SN",
                            srx: "srx-Deva-IN",
                            ss: "ss-Latn-ZA",
                            ssd: "ssd-Latn-ZZ",
                            ssg: "ssg-Latn-ZZ",
                            ssy: "ssy-Latn-ER",
                            st: "st-Latn-ZA",
                            stk: "stk-Latn-ZZ",
                            stq: "stq-Latn-DE",
                            su: "su-Latn-ID",
                            sua: "sua-Latn-ZZ",
                            sue: "sue-Latn-ZZ",
                            suk: "suk-Latn-TZ",
                            sur: "sur-Latn-ZZ",
                            sus: "sus-Latn-GN",
                            sv: "sv-Latn-SE",
                            sw: "sw-Latn-TZ",
                            swb: "swb-Arab-YT",
                            swc: "swc-Latn-CD",
                            swg: "swg-Latn-DE",
                            swp: "swp-Latn-ZZ",
                            swv: "swv-Deva-IN",
                            sxn: "sxn-Latn-ID",
                            sxw: "sxw-Latn-ZZ",
                            syl: "syl-Beng-BD",
                            syr: "syr-Syrc-IQ",
                            szl: "szl-Latn-PL",
                            ta: "ta-Taml-IN",
                            taj: "taj-Deva-NP",
                            tal: "tal-Latn-ZZ",
                            tan: "tan-Latn-ZZ",
                            taq: "taq-Latn-ZZ",
                            tbc: "tbc-Latn-ZZ",
                            tbd: "tbd-Latn-ZZ",
                            tbf: "tbf-Latn-ZZ",
                            tbg: "tbg-Latn-ZZ",
                            tbo: "tbo-Latn-ZZ",
                            tbw: "tbw-Latn-PH",
                            tbz: "tbz-Latn-ZZ",
                            tci: "tci-Latn-ZZ",
                            tcy: "tcy-Knda-IN",
                            tdd: "tdd-Tale-CN",
                            tdg: "tdg-Deva-NP",
                            tdh: "tdh-Deva-NP",
                            tdu: "tdu-Latn-MY",
                            te: "te-Telu-IN",
                            ted: "ted-Latn-ZZ",
                            tem: "tem-Latn-SL",
                            teo: "teo-Latn-UG",
                            tet: "tet-Latn-TL",
                            tfi: "tfi-Latn-ZZ",
                            tg: "tg-Cyrl-TJ",
                            "tg-Arab": "tg-Arab-PK",
                            "tg-PK": "tg-Arab-PK",
                            tgc: "tgc-Latn-ZZ",
                            tgo: "tgo-Latn-ZZ",
                            tgu: "tgu-Latn-ZZ",
                            th: "th-Thai-TH",
                            thl: "thl-Deva-NP",
                            thq: "thq-Deva-NP",
                            thr: "thr-Deva-NP",
                            ti: "ti-Ethi-ET",
                            tif: "tif-Latn-ZZ",
                            tig: "tig-Ethi-ER",
                            tik: "tik-Latn-ZZ",
                            tim: "tim-Latn-ZZ",
                            tio: "tio-Latn-ZZ",
                            tiv: "tiv-Latn-NG",
                            tk: "tk-Latn-TM",
                            tkl: "tkl-Latn-TK",
                            tkr: "tkr-Latn-AZ",
                            tkt: "tkt-Deva-NP",
                            tl: "tl-Latn-PH",
                            tlf: "tlf-Latn-ZZ",
                            tlx: "tlx-Latn-ZZ",
                            tly: "tly-Latn-AZ",
                            tmh: "tmh-Latn-NE",
                            tmy: "tmy-Latn-ZZ",
                            tn: "tn-Latn-ZA",
                            tnh: "tnh-Latn-ZZ",
                            to: "to-Latn-TO",
                            tof: "tof-Latn-ZZ",
                            tog: "tog-Latn-MW",
                            toq: "toq-Latn-ZZ",
                            tpi: "tpi-Latn-PG",
                            tpm: "tpm-Latn-ZZ",
                            tpz: "tpz-Latn-ZZ",
                            tqo: "tqo-Latn-ZZ",
                            tr: "tr-Latn-TR",
                            tru: "tru-Latn-TR",
                            trv: "trv-Latn-TW",
                            trw: "trw-Arab-ZZ",
                            ts: "ts-Latn-ZA",
                            tsd: "tsd-Grek-GR",
                            tsf: "tsf-Deva-NP",
                            tsg: "tsg-Latn-PH",
                            tsj: "tsj-Tibt-BT",
                            tsw: "tsw-Latn-ZZ",
                            tt: "tt-Cyrl-RU",
                            ttd: "ttd-Latn-ZZ",
                            tte: "tte-Latn-ZZ",
                            ttj: "ttj-Latn-UG",
                            ttr: "ttr-Latn-ZZ",
                            tts: "tts-Thai-TH",
                            ttt: "ttt-Latn-AZ",
                            tuh: "tuh-Latn-ZZ",
                            tul: "tul-Latn-ZZ",
                            tum: "tum-Latn-MW",
                            tuq: "tuq-Latn-ZZ",
                            tvd: "tvd-Latn-ZZ",
                            tvl: "tvl-Latn-TV",
                            tvu: "tvu-Latn-ZZ",
                            twh: "twh-Latn-ZZ",
                            twq: "twq-Latn-NE",
                            txg: "txg-Tang-CN",
                            ty: "ty-Latn-PF",
                            tya: "tya-Latn-ZZ",
                            tyv: "tyv-Cyrl-RU",
                            tzm: "tzm-Latn-MA",
                            ubu: "ubu-Latn-ZZ",
                            udm: "udm-Cyrl-RU",
                            ug: "ug-Arab-CN",
                            "ug-Cyrl": "ug-Cyrl-KZ",
                            "ug-KZ": "ug-Cyrl-KZ",
                            "ug-MN": "ug-Cyrl-MN",
                            uga: "uga-Ugar-SY",
                            uk: "uk-Cyrl-UA",
                            uli: "uli-Latn-FM",
                            umb: "umb-Latn-AO",
                            und: "en-Latn-US",
                            "und-002": "en-Latn-NG",
                            "und-003": "en-Latn-US",
                            "und-005": "pt-Latn-BR",
                            "und-009": "en-Latn-AU",
                            "und-011": "en-Latn-NG",
                            "und-013": "es-Latn-MX",
                            "und-014": "sw-Latn-TZ",
                            "und-015": "ar-Arab-EG",
                            "und-017": "sw-Latn-CD",
                            "und-018": "en-Latn-ZA",
                            "und-019": "en-Latn-US",
                            "und-021": "en-Latn-US",
                            "und-029": "es-Latn-CU",
                            "und-030": "zh-Hans-CN",
                            "und-034": "hi-Deva-IN",
                            "und-035": "id-Latn-ID",
                            "und-039": "it-Latn-IT",
                            "und-053": "en-Latn-AU",
                            "und-054": "en-Latn-PG",
                            "und-057": "en-Latn-GU",
                            "und-061": "sm-Latn-WS",
                            "und-142": "zh-Hans-CN",
                            "und-143": "uz-Latn-UZ",
                            "und-145": "ar-Arab-SA",
                            "und-150": "ru-Cyrl-RU",
                            "und-151": "ru-Cyrl-RU",
                            "und-154": "en-Latn-GB",
                            "und-155": "de-Latn-DE",
                            "und-202": "en-Latn-NG",
                            "und-419": "es-Latn-419",
                            "und-AD": "ca-Latn-AD",
                            "und-Adlm": "ff-Adlm-GN",
                            "und-AE": "ar-Arab-AE",
                            "und-AF": "fa-Arab-AF",
                            "und-Aghb": "lez-Aghb-RU",
                            "und-Ahom": "aho-Ahom-IN",
                            "und-AL": "sq-Latn-AL",
                            "und-AM": "hy-Armn-AM",
                            "und-AO": "pt-Latn-AO",
                            "und-AQ": "und-Latn-AQ",
                            "und-AR": "es-Latn-AR",
                            "und-Arab": "ar-Arab-EG",
                            "und-Arab-CC": "ms-Arab-CC",
                            "und-Arab-CN": "ug-Arab-CN",
                            "und-Arab-GB": "ks-Arab-GB",
                            "und-Arab-ID": "ms-Arab-ID",
                            "und-Arab-IN": "ur-Arab-IN",
                            "und-Arab-KH": "cja-Arab-KH",
                            "und-Arab-MM": "rhg-Arab-MM",
                            "und-Arab-MN": "kk-Arab-MN",
                            "und-Arab-MU": "ur-Arab-MU",
                            "und-Arab-NG": "ha-Arab-NG",
                            "und-Arab-PK": "ur-Arab-PK",
                            "und-Arab-TG": "apd-Arab-TG",
                            "und-Arab-TH": "mfa-Arab-TH",
                            "und-Arab-TJ": "fa-Arab-TJ",
                            "und-Arab-TR": "az-Arab-TR",
                            "und-Arab-YT": "swb-Arab-YT",
                            "und-Armi": "arc-Armi-IR",
                            "und-Armn": "hy-Armn-AM",
                            "und-AS": "sm-Latn-AS",
                            "und-AT": "de-Latn-AT",
                            "und-Avst": "ae-Avst-IR",
                            "und-AW": "nl-Latn-AW",
                            "und-AX": "sv-Latn-AX",
                            "und-AZ": "az-Latn-AZ",
                            "und-BA": "bs-Latn-BA",
                            "und-Bali": "ban-Bali-ID",
                            "und-Bamu": "bax-Bamu-CM",
                            "und-Bass": "bsq-Bass-LR",
                            "und-Batk": "bbc-Batk-ID",
                            "und-BD": "bn-Beng-BD",
                            "und-BE": "nl-Latn-BE",
                            "und-Beng": "bn-Beng-BD",
                            "und-BF": "fr-Latn-BF",
                            "und-BG": "bg-Cyrl-BG",
                            "und-BH": "ar-Arab-BH",
                            "und-Bhks": "sa-Bhks-IN",
                            "und-BI": "rn-Latn-BI",
                            "und-BJ": "fr-Latn-BJ",
                            "und-BL": "fr-Latn-BL",
                            "und-BN": "ms-Latn-BN",
                            "und-BO": "es-Latn-BO",
                            "und-Bopo": "zh-Bopo-TW",
                            "und-BQ": "pap-Latn-BQ",
                            "und-BR": "pt-Latn-BR",
                            "und-Brah": "pka-Brah-IN",
                            "und-Brai": "fr-Brai-FR",
                            "und-BT": "dz-Tibt-BT",
                            "und-Bugi": "bug-Bugi-ID",
                            "und-Buhd": "bku-Buhd-PH",
                            "und-BV": "und-Latn-BV",
                            "und-BY": "be-Cyrl-BY",
                            "und-Cakm": "ccp-Cakm-BD",
                            "und-Cans": "cr-Cans-CA",
                            "und-Cari": "xcr-Cari-TR",
                            "und-CD": "sw-Latn-CD",
                            "und-CF": "fr-Latn-CF",
                            "und-CG": "fr-Latn-CG",
                            "und-CH": "de-Latn-CH",
                            "und-Cham": "cjm-Cham-VN",
                            "und-Cher": "chr-Cher-US",
                            "und-CI": "fr-Latn-CI",
                            "und-CL": "es-Latn-CL",
                            "und-CM": "fr-Latn-CM",
                            "und-CN": "zh-Hans-CN",
                            "und-CO": "es-Latn-CO",
                            "und-Copt": "cop-Copt-EG",
                            "und-CP": "und-Latn-CP",
                            "und-Cprt": "grc-Cprt-CY",
                            "und-CR": "es-Latn-CR",
                            "und-CU": "es-Latn-CU",
                            "und-CV": "pt-Latn-CV",
                            "und-CW": "pap-Latn-CW",
                            "und-CY": "el-Grek-CY",
                            "und-Cyrl": "ru-Cyrl-RU",
                            "und-Cyrl-AL": "mk-Cyrl-AL",
                            "und-Cyrl-BA": "sr-Cyrl-BA",
                            "und-Cyrl-GE": "ab-Cyrl-GE",
                            "und-Cyrl-GR": "mk-Cyrl-GR",
                            "und-Cyrl-MD": "uk-Cyrl-MD",
                            "und-Cyrl-RO": "bg-Cyrl-RO",
                            "und-Cyrl-SK": "uk-Cyrl-SK",
                            "und-Cyrl-TR": "kbd-Cyrl-TR",
                            "und-Cyrl-XK": "sr-Cyrl-XK",
                            "und-CZ": "cs-Latn-CZ",
                            "und-DE": "de-Latn-DE",
                            "und-Deva": "hi-Deva-IN",
                            "und-Deva-BT": "ne-Deva-BT",
                            "und-Deva-FJ": "hif-Deva-FJ",
                            "und-Deva-MU": "bho-Deva-MU",
                            "und-Deva-PK": "btv-Deva-PK",
                            "und-DJ": "aa-Latn-DJ",
                            "und-DK": "da-Latn-DK",
                            "und-DO": "es-Latn-DO",
                            "und-Dogr": "doi-Dogr-IN",
                            "und-Dupl": "fr-Dupl-FR",
                            "und-DZ": "ar-Arab-DZ",
                            "und-EA": "es-Latn-EA",
                            "und-EC": "es-Latn-EC",
                            "und-EE": "et-Latn-EE",
                            "und-EG": "ar-Arab-EG",
                            "und-Egyp": "egy-Egyp-EG",
                            "und-EH": "ar-Arab-EH",
                            "und-Elba": "sq-Elba-AL",
                            "und-Elym": "arc-Elym-IR",
                            "und-ER": "ti-Ethi-ER",
                            "und-ES": "es-Latn-ES",
                            "und-ET": "am-Ethi-ET",
                            "und-Ethi": "am-Ethi-ET",
                            "und-EU": "en-Latn-GB",
                            "und-EZ": "de-Latn-EZ",
                            "und-FI": "fi-Latn-FI",
                            "und-FO": "fo-Latn-FO",
                            "und-FR": "fr-Latn-FR",
                            "und-GA": "fr-Latn-GA",
                            "und-GE": "ka-Geor-GE",
                            "und-Geor": "ka-Geor-GE",
                            "und-GF": "fr-Latn-GF",
                            "und-GH": "ak-Latn-GH",
                            "und-GL": "kl-Latn-GL",
                            "und-Glag": "cu-Glag-BG",
                            "und-GN": "fr-Latn-GN",
                            "und-Gong": "wsg-Gong-IN",
                            "und-Gonm": "esg-Gonm-IN",
                            "und-Goth": "got-Goth-UA",
                            "und-GP": "fr-Latn-GP",
                            "und-GQ": "es-Latn-GQ",
                            "und-GR": "el-Grek-GR",
                            "und-Gran": "sa-Gran-IN",
                            "und-Grek": "el-Grek-GR",
                            "und-Grek-TR": "bgx-Grek-TR",
                            "und-GS": "und-Latn-GS",
                            "und-GT": "es-Latn-GT",
                            "und-Gujr": "gu-Gujr-IN",
                            "und-Guru": "pa-Guru-IN",
                            "und-GW": "pt-Latn-GW",
                            "und-Hanb": "zh-Hanb-TW",
                            "und-Hang": "ko-Hang-KR",
                            "und-Hani": "zh-Hani-CN",
                            "und-Hano": "hnn-Hano-PH",
                            "und-Hans": "zh-Hans-CN",
                            "und-Hant": "zh-Hant-TW",
                            "und-Hatr": "mis-Hatr-IQ",
                            "und-Hebr": "he-Hebr-IL",
                            "und-Hebr-CA": "yi-Hebr-CA",
                            "und-Hebr-GB": "yi-Hebr-GB",
                            "und-Hebr-SE": "yi-Hebr-SE",
                            "und-Hebr-UA": "yi-Hebr-UA",
                            "und-Hebr-US": "yi-Hebr-US",
                            "und-Hira": "ja-Hira-JP",
                            "und-HK": "zh-Hant-HK",
                            "und-Hluw": "hlu-Hluw-TR",
                            "und-HM": "und-Latn-HM",
                            "und-Hmng": "hnj-Hmng-LA",
                            "und-Hmnp": "mww-Hmnp-US",
                            "und-HN": "es-Latn-HN",
                            "und-HR": "hr-Latn-HR",
                            "und-HT": "ht-Latn-HT",
                            "und-HU": "hu-Latn-HU",
                            "und-Hung": "hu-Hung-HU",
                            "und-IC": "es-Latn-IC",
                            "und-ID": "id-Latn-ID",
                            "und-IL": "he-Hebr-IL",
                            "und-IN": "hi-Deva-IN",
                            "und-IQ": "ar-Arab-IQ",
                            "und-IR": "fa-Arab-IR",
                            "und-IS": "is-Latn-IS",
                            "und-IT": "it-Latn-IT",
                            "und-Ital": "ett-Ital-IT",
                            "und-Jamo": "ko-Jamo-KR",
                            "und-Java": "jv-Java-ID",
                            "und-JO": "ar-Arab-JO",
                            "und-JP": "ja-Jpan-JP",
                            "und-Jpan": "ja-Jpan-JP",
                            "und-Kali": "eky-Kali-MM",
                            "und-Kana": "ja-Kana-JP",
                            "und-KE": "sw-Latn-KE",
                            "und-KG": "ky-Cyrl-KG",
                            "und-KH": "km-Khmr-KH",
                            "und-Khar": "pra-Khar-PK",
                            "und-Khmr": "km-Khmr-KH",
                            "und-Khoj": "sd-Khoj-IN",
                            "und-KM": "ar-Arab-KM",
                            "und-Knda": "kn-Knda-IN",
                            "und-Kore": "ko-Kore-KR",
                            "und-KP": "ko-Kore-KP",
                            "und-KR": "ko-Kore-KR",
                            "und-Kthi": "bho-Kthi-IN",
                            "und-KW": "ar-Arab-KW",
                            "und-KZ": "ru-Cyrl-KZ",
                            "und-LA": "lo-Laoo-LA",
                            "und-Lana": "nod-Lana-TH",
                            "und-Laoo": "lo-Laoo-LA",
                            "und-Latn-AF": "tk-Latn-AF",
                            "und-Latn-AM": "ku-Latn-AM",
                            "und-Latn-CN": "za-Latn-CN",
                            "und-Latn-CY": "tr-Latn-CY",
                            "und-Latn-DZ": "fr-Latn-DZ",
                            "und-Latn-ET": "en-Latn-ET",
                            "und-Latn-GE": "ku-Latn-GE",
                            "und-Latn-IR": "tk-Latn-IR",
                            "und-Latn-KM": "fr-Latn-KM",
                            "und-Latn-MA": "fr-Latn-MA",
                            "und-Latn-MK": "sq-Latn-MK",
                            "und-Latn-MM": "kac-Latn-MM",
                            "und-Latn-MO": "pt-Latn-MO",
                            "und-Latn-MR": "fr-Latn-MR",
                            "und-Latn-RU": "krl-Latn-RU",
                            "und-Latn-SY": "fr-Latn-SY",
                            "und-Latn-TN": "fr-Latn-TN",
                            "und-Latn-TW": "trv-Latn-TW",
                            "und-Latn-UA": "pl-Latn-UA",
                            "und-LB": "ar-Arab-LB",
                            "und-Lepc": "lep-Lepc-IN",
                            "und-LI": "de-Latn-LI",
                            "und-Limb": "lif-Limb-IN",
                            "und-Lina": "lab-Lina-GR",
                            "und-Linb": "grc-Linb-GR",
                            "und-Lisu": "lis-Lisu-CN",
                            "und-LK": "si-Sinh-LK",
                            "und-LS": "st-Latn-LS",
                            "und-LT": "lt-Latn-LT",
                            "und-LU": "fr-Latn-LU",
                            "und-LV": "lv-Latn-LV",
                            "und-LY": "ar-Arab-LY",
                            "und-Lyci": "xlc-Lyci-TR",
                            "und-Lydi": "xld-Lydi-TR",
                            "und-MA": "ar-Arab-MA",
                            "und-Mahj": "hi-Mahj-IN",
                            "und-Maka": "mak-Maka-ID",
                            "und-Mand": "myz-Mand-IR",
                            "und-Mani": "xmn-Mani-CN",
                            "und-Marc": "bo-Marc-CN",
                            "und-MC": "fr-Latn-MC",
                            "und-MD": "ro-Latn-MD",
                            "und-ME": "sr-Latn-ME",
                            "und-Medf": "mis-Medf-NG",
                            "und-Mend": "men-Mend-SL",
                            "und-Merc": "xmr-Merc-SD",
                            "und-Mero": "xmr-Mero-SD",
                            "und-MF": "fr-Latn-MF",
                            "und-MG": "mg-Latn-MG",
                            "und-MK": "mk-Cyrl-MK",
                            "und-ML": "bm-Latn-ML",
                            "und-Mlym": "ml-Mlym-IN",
                            "und-MM": "my-Mymr-MM",
                            "und-MN": "mn-Cyrl-MN",
                            "und-MO": "zh-Hant-MO",
                            "und-Modi": "mr-Modi-IN",
                            "und-Mong": "mn-Mong-CN",
                            "und-MQ": "fr-Latn-MQ",
                            "und-MR": "ar-Arab-MR",
                            "und-Mroo": "mro-Mroo-BD",
                            "und-MT": "mt-Latn-MT",
                            "und-Mtei": "mni-Mtei-IN",
                            "und-MU": "mfe-Latn-MU",
                            "und-Mult": "skr-Mult-PK",
                            "und-MV": "dv-Thaa-MV",
                            "und-MX": "es-Latn-MX",
                            "und-MY": "ms-Latn-MY",
                            "und-Mymr": "my-Mymr-MM",
                            "und-Mymr-IN": "kht-Mymr-IN",
                            "und-Mymr-TH": "mnw-Mymr-TH",
                            "und-MZ": "pt-Latn-MZ",
                            "und-NA": "af-Latn-NA",
                            "und-Nand": "sa-Nand-IN",
                            "und-Narb": "xna-Narb-SA",
                            "und-Nbat": "arc-Nbat-JO",
                            "und-NC": "fr-Latn-NC",
                            "und-NE": "ha-Latn-NE",
                            "und-Newa": "new-Newa-NP",
                            "und-NI": "es-Latn-NI",
                            "und-Nkoo": "man-Nkoo-GN",
                            "und-NL": "nl-Latn-NL",
                            "und-NO": "nb-Latn-NO",
                            "und-NP": "ne-Deva-NP",
                            "und-Nshu": "zhx-Nshu-CN",
                            "und-Ogam": "sga-Ogam-IE",
                            "und-Olck": "sat-Olck-IN",
                            "und-OM": "ar-Arab-OM",
                            "und-Orkh": "otk-Orkh-MN",
                            "und-Orya": "or-Orya-IN",
                            "und-Osge": "osa-Osge-US",
                            "und-Osma": "so-Osma-SO",
                            "und-PA": "es-Latn-PA",
                            "und-Palm": "arc-Palm-SY",
                            "und-Pauc": "ctd-Pauc-MM",
                            "und-PE": "es-Latn-PE",
                            "und-Perm": "kv-Perm-RU",
                            "und-PF": "fr-Latn-PF",
                            "und-PG": "tpi-Latn-PG",
                            "und-PH": "fil-Latn-PH",
                            "und-Phag": "lzh-Phag-CN",
                            "und-Phli": "pal-Phli-IR",
                            "und-Phlp": "pal-Phlp-CN",
                            "und-Phnx": "phn-Phnx-LB",
                            "und-PK": "ur-Arab-PK",
                            "und-PL": "pl-Latn-PL",
                            "und-Plrd": "hmd-Plrd-CN",
                            "und-PM": "fr-Latn-PM",
                            "und-PR": "es-Latn-PR",
                            "und-Prti": "xpr-Prti-IR",
                            "und-PS": "ar-Arab-PS",
                            "und-PT": "pt-Latn-PT",
                            "und-PW": "pau-Latn-PW",
                            "und-PY": "gn-Latn-PY",
                            "und-QA": "ar-Arab-QA",
                            "und-QO": "en-Latn-DG",
                            "und-RE": "fr-Latn-RE",
                            "und-Rjng": "rej-Rjng-ID",
                            "und-RO": "ro-Latn-RO",
                            "und-Rohg": "rhg-Rohg-MM",
                            "und-RS": "sr-Cyrl-RS",
                            "und-RU": "ru-Cyrl-RU",
                            "und-Runr": "non-Runr-SE",
                            "und-RW": "rw-Latn-RW",
                            "und-SA": "ar-Arab-SA",
                            "und-Samr": "smp-Samr-IL",
                            "und-Sarb": "xsa-Sarb-YE",
                            "und-Saur": "saz-Saur-IN",
                            "und-SC": "fr-Latn-SC",
                            "und-SD": "ar-Arab-SD",
                            "und-SE": "sv-Latn-SE",
                            "und-Sgnw": "ase-Sgnw-US",
                            "und-Shaw": "en-Shaw-GB",
                            "und-Shrd": "sa-Shrd-IN",
                            "und-SI": "sl-Latn-SI",
                            "und-Sidd": "sa-Sidd-IN",
                            "und-Sind": "sd-Sind-IN",
                            "und-Sinh": "si-Sinh-LK",
                            "und-SJ": "nb-Latn-SJ",
                            "und-SK": "sk-Latn-SK",
                            "und-SM": "it-Latn-SM",
                            "und-SN": "fr-Latn-SN",
                            "und-SO": "so-Latn-SO",
                            "und-Sogd": "sog-Sogd-UZ",
                            "und-Sogo": "sog-Sogo-UZ",
                            "und-Sora": "srb-Sora-IN",
                            "und-Soyo": "cmg-Soyo-MN",
                            "und-SR": "nl-Latn-SR",
                            "und-ST": "pt-Latn-ST",
                            "und-Sund": "su-Sund-ID",
                            "und-SV": "es-Latn-SV",
                            "und-SY": "ar-Arab-SY",
                            "und-Sylo": "syl-Sylo-BD",
                            "und-Syrc": "syr-Syrc-IQ",
                            "und-Tagb": "tbw-Tagb-PH",
                            "und-Takr": "doi-Takr-IN",
                            "und-Tale": "tdd-Tale-CN",
                            "und-Talu": "khb-Talu-CN",
                            "und-Taml": "ta-Taml-IN",
                            "und-Tang": "txg-Tang-CN",
                            "und-Tavt": "blt-Tavt-VN",
                            "und-TD": "fr-Latn-TD",
                            "und-Telu": "te-Telu-IN",
                            "und-TF": "fr-Latn-TF",
                            "und-Tfng": "zgh-Tfng-MA",
                            "und-TG": "fr-Latn-TG",
                            "und-Tglg": "fil-Tglg-PH",
                            "und-TH": "th-Thai-TH",
                            "und-Thaa": "dv-Thaa-MV",
                            "und-Thai": "th-Thai-TH",
                            "und-Thai-CN": "lcp-Thai-CN",
                            "und-Thai-KH": "kdt-Thai-KH",
                            "und-Thai-LA": "kdt-Thai-LA",
                            "und-Tibt": "bo-Tibt-CN",
                            "und-Tirh": "mai-Tirh-IN",
                            "und-TJ": "tg-Cyrl-TJ",
                            "und-TK": "tkl-Latn-TK",
                            "und-TL": "pt-Latn-TL",
                            "und-TM": "tk-Latn-TM",
                            "und-TN": "ar-Arab-TN",
                            "und-TO": "to-Latn-TO",
                            "und-TR": "tr-Latn-TR",
                            "und-TV": "tvl-Latn-TV",
                            "und-TW": "zh-Hant-TW",
                            "und-TZ": "sw-Latn-TZ",
                            "und-UA": "uk-Cyrl-UA",
                            "und-UG": "sw-Latn-UG",
                            "und-Ugar": "uga-Ugar-SY",
                            "und-UY": "es-Latn-UY",
                            "und-UZ": "uz-Latn-UZ",
                            "und-VA": "it-Latn-VA",
                            "und-Vaii": "vai-Vaii-LR",
                            "und-VE": "es-Latn-VE",
                            "und-VN": "vi-Latn-VN",
                            "und-VU": "bi-Latn-VU",
                            "und-Wara": "hoc-Wara-IN",
                            "und-Wcho": "nnp-Wcho-IN",
                            "und-WF": "fr-Latn-WF",
                            "und-WS": "sm-Latn-WS",
                            "und-XK": "sq-Latn-XK",
                            "und-Xpeo": "peo-Xpeo-IR",
                            "und-Xsux": "akk-Xsux-IQ",
                            "und-YE": "ar-Arab-YE",
                            "und-Yiii": "ii-Yiii-CN",
                            "und-YT": "fr-Latn-YT",
                            "und-Zanb": "cmg-Zanb-MN",
                            "und-ZW": "sn-Latn-ZW",
                            unr: "unr-Beng-IN",
                            "unr-Deva": "unr-Deva-NP",
                            "unr-NP": "unr-Deva-NP",
                            unx: "unx-Beng-IN",
                            uok: "uok-Latn-ZZ",
                            ur: "ur-Arab-PK",
                            uri: "uri-Latn-ZZ",
                            urt: "urt-Latn-ZZ",
                            urw: "urw-Latn-ZZ",
                            usa: "usa-Latn-ZZ",
                            utr: "utr-Latn-ZZ",
                            uvh: "uvh-Latn-ZZ",
                            uvl: "uvl-Latn-ZZ",
                            uz: "uz-Latn-UZ",
                            "uz-AF": "uz-Arab-AF",
                            "uz-Arab": "uz-Arab-AF",
                            "uz-CN": "uz-Cyrl-CN",
                            vag: "vag-Latn-ZZ",
                            vai: "vai-Vaii-LR",
                            van: "van-Latn-ZZ",
                            ve: "ve-Latn-ZA",
                            vec: "vec-Latn-IT",
                            vep: "vep-Latn-RU",
                            vi: "vi-Latn-VN",
                            vic: "vic-Latn-SX",
                            viv: "viv-Latn-ZZ",
                            vls: "vls-Latn-BE",
                            vmf: "vmf-Latn-DE",
                            vmw: "vmw-Latn-MZ",
                            vo: "vo-Latn-001",
                            vot: "vot-Latn-RU",
                            vro: "vro-Latn-EE",
                            vun: "vun-Latn-TZ",
                            vut: "vut-Latn-ZZ",
                            wa: "wa-Latn-BE",
                            wae: "wae-Latn-CH",
                            waj: "waj-Latn-ZZ",
                            wal: "wal-Ethi-ET",
                            wan: "wan-Latn-ZZ",
                            war: "war-Latn-PH",
                            wbp: "wbp-Latn-AU",
                            wbq: "wbq-Telu-IN",
                            wbr: "wbr-Deva-IN",
                            wci: "wci-Latn-ZZ",
                            wer: "wer-Latn-ZZ",
                            wgi: "wgi-Latn-ZZ",
                            whg: "whg-Latn-ZZ",
                            wib: "wib-Latn-ZZ",
                            wiu: "wiu-Latn-ZZ",
                            wiv: "wiv-Latn-ZZ",
                            wja: "wja-Latn-ZZ",
                            wji: "wji-Latn-ZZ",
                            wls: "wls-Latn-WF",
                            wmo: "wmo-Latn-ZZ",
                            wnc: "wnc-Latn-ZZ",
                            wni: "wni-Arab-KM",
                            wnu: "wnu-Latn-ZZ",
                            wo: "wo-Latn-SN",
                            wob: "wob-Latn-ZZ",
                            wos: "wos-Latn-ZZ",
                            wrs: "wrs-Latn-ZZ",
                            wsg: "wsg-Gong-IN",
                            wsk: "wsk-Latn-ZZ",
                            wtm: "wtm-Deva-IN",
                            wuu: "wuu-Hans-CN",
                            wuv: "wuv-Latn-ZZ",
                            wwa: "wwa-Latn-ZZ",
                            xav: "xav-Latn-BR",
                            xbi: "xbi-Latn-ZZ",
                            xcr: "xcr-Cari-TR",
                            xes: "xes-Latn-ZZ",
                            xh: "xh-Latn-ZA",
                            xla: "xla-Latn-ZZ",
                            xlc: "xlc-Lyci-TR",
                            xld: "xld-Lydi-TR",
                            xmf: "xmf-Geor-GE",
                            xmn: "xmn-Mani-CN",
                            xmr: "xmr-Merc-SD",
                            xna: "xna-Narb-SA",
                            xnr: "xnr-Deva-IN",
                            xog: "xog-Latn-UG",
                            xon: "xon-Latn-ZZ",
                            xpr: "xpr-Prti-IR",
                            xrb: "xrb-Latn-ZZ",
                            xsa: "xsa-Sarb-YE",
                            xsi: "xsi-Latn-ZZ",
                            xsm: "xsm-Latn-ZZ",
                            xsr: "xsr-Deva-NP",
                            xwe: "xwe-Latn-ZZ",
                            yam: "yam-Latn-ZZ",
                            yao: "yao-Latn-MZ",
                            yap: "yap-Latn-FM",
                            yas: "yas-Latn-ZZ",
                            yat: "yat-Latn-ZZ",
                            yav: "yav-Latn-CM",
                            yay: "yay-Latn-ZZ",
                            yaz: "yaz-Latn-ZZ",
                            yba: "yba-Latn-ZZ",
                            ybb: "ybb-Latn-CM",
                            yby: "yby-Latn-ZZ",
                            yer: "yer-Latn-ZZ",
                            ygr: "ygr-Latn-ZZ",
                            ygw: "ygw-Latn-ZZ",
                            yi: "yi-Hebr-001",
                            yko: "yko-Latn-ZZ",
                            yle: "yle-Latn-ZZ",
                            ylg: "ylg-Latn-ZZ",
                            yll: "yll-Latn-ZZ",
                            yml: "yml-Latn-ZZ",
                            yo: "yo-Latn-NG",
                            yon: "yon-Latn-ZZ",
                            yrb: "yrb-Latn-ZZ",
                            yre: "yre-Latn-ZZ",
                            yrl: "yrl-Latn-BR",
                            yss: "yss-Latn-ZZ",
                            yua: "yua-Latn-MX",
                            yue: "yue-Hant-HK",
                            "yue-CN": "yue-Hans-CN",
                            "yue-Hans": "yue-Hans-CN",
                            yuj: "yuj-Latn-ZZ",
                            yut: "yut-Latn-ZZ",
                            yuw: "yuw-Latn-ZZ",
                            za: "za-Latn-CN",
                            zag: "zag-Latn-SD",
                            zdj: "zdj-Arab-KM",
                            zea: "zea-Latn-NL",
                            zgh: "zgh-Tfng-MA",
                            zh: "zh-Hans-CN",
                            "zh-AU": "zh-Hant-AU",
                            "zh-BN": "zh-Hant-BN",
                            "zh-Bopo": "zh-Bopo-TW",
                            "zh-GB": "zh-Hant-GB",
                            "zh-GF": "zh-Hant-GF",
                            "zh-Hanb": "zh-Hanb-TW",
                            "zh-Hant": "zh-Hant-TW",
                            "zh-HK": "zh-Hant-HK",
                            "zh-ID": "zh-Hant-ID",
                            "zh-MO": "zh-Hant-MO",
                            "zh-MY": "zh-Hant-MY",
                            "zh-PA": "zh-Hant-PA",
                            "zh-PF": "zh-Hant-PF",
                            "zh-PH": "zh-Hant-PH",
                            "zh-SR": "zh-Hant-SR",
                            "zh-TH": "zh-Hant-TH",
                            "zh-TW": "zh-Hant-TW",
                            "zh-US": "zh-Hant-US",
                            "zh-VN": "zh-Hant-VN",
                            zhx: "zhx-Nshu-CN",
                            zia: "zia-Latn-ZZ",
                            zlm: "zlm-Latn-TG",
                            zmi: "zmi-Latn-MY",
                            zne: "zne-Latn-ZZ",
                            zu: "zu-Latn-ZA",
                            zza: "zza-Latn-TR"
                        },
                        timeData: {
                            AX: {
                                _allowed: "H",
                                _preferred: "H"
                            },
                            BQ: {
                                _allowed: "H",
                                _preferred: "H"
                            },
                            CP: {
                                _allowed: "H",
                                _preferred: "H"
                            },
                            CZ: {
                                _allowed: "H",
                                _preferred: "H"
                            },
                            DK: {
                                _allowed: "H",
                                _preferred: "H"
                            },
                            FI: {
                                _allowed: "H",
                                _preferred: "H"
                            },
                            ID: {
                                _allowed: "H",
                                _preferred: "H"
                            },
                            IS: {
                                _allowed: "H",
                                _preferred: "H"
                            },
                            ML: {
                                _allowed: "H",
                                _preferred: "H"
                            },
                            NE: {
                                _allowed: "H",
                                _preferred: "H"
                            },
                            RU: {
                                _allowed: "H",
                                _preferred: "H"
                            },
                            SE: {
                                _allowed: "H",
                                _preferred: "H"
                            },
                            SJ: {
                                _allowed: "H",
                                _preferred: "H"
                            },
                            SK: {
                                _allowed: "H",
                                _preferred: "H"
                            },
                            AS: {
                                _allowed: "h H",
                                _preferred: "h"
                            },
                            BT: {
                                _allowed: "h H",
                                _preferred: "h"
                            },
                            DJ: {
                                _allowed: "h H",
                                _preferred: "h"
                            },
                            ER: {
                                _allowed: "h H",
                                _preferred: "h"
                            },
                            GH: {
                                _allowed: "h H",
                                _preferred: "h"
                            },
                            IN: {
                                _allowed: "h H",
                                _preferred: "h"
                            },
                            LS: {
                                _allowed: "h H",
                                _preferred: "h"
                            },
                            PG: {
                                _allowed: "h H",
                                _preferred: "h"
                            },
                            PW: {
                                _allowed: "h H",
                                _preferred: "h"
                            },
                            SO: {
                                _allowed: "h H",
                                _preferred: "h"
                            },
                            TO: {
                                _allowed: "h H",
                                _preferred: "h"
                            },
                            VU: {
                                _allowed: "h H",
                                _preferred: "h"
                            },
                            WS: {
                                _allowed: "h H",
                                _preferred: "h"
                            },
                            "001": {
                                _allowed: "H h",
                                _preferred: "H"
                            },
                            AL: {
                                _allowed: "h H hB",
                                _preferred: "h"
                            },
                            TD: {
                                _allowed: "h H hB",
                                _preferred: "h"
                            },
                            ca_ES: {
                                _allowed: "H h hB",
                                _preferred: "H"
                            },
                            CF: {
                                _allowed: "H h hB",
                                _preferred: "H"
                            },
                            CM: {
                                _allowed: "H h hB",
                                _preferred: "H"
                            },
                            fr_CA: {
                                _allowed: "H h hB",
                                _preferred: "H"
                            },
                            gl_ES: {
                                _allowed: "H h hB",
                                _preferred: "H"
                            },
                            it_CH: {
                                _allowed: "H h hB",
                                _preferred: "H"
                            },
                            it_IT: {
                                _allowed: "H h hB",
                                _preferred: "H"
                            },
                            LU: {
                                _allowed: "H h hB",
                                _preferred: "H"
                            },
                            NP: {
                                _allowed: "H h hB",
                                _preferred: "H"
                            },
                            PF: {
                                _allowed: "H h hB",
                                _preferred: "H"
                            },
                            SC: {
                                _allowed: "H h hB",
                                _preferred: "H"
                            },
                            SM: {
                                _allowed: "H h hB",
                                _preferred: "H"
                            },
                            SN: {
                                _allowed: "H h hB",
                                _preferred: "H"
                            },
                            TF: {
                                _allowed: "H h hB",
                                _preferred: "H"
                            },
                            VA: {
                                _allowed: "H h hB",
                                _preferred: "H"
                            },
                            CY: {
                                _allowed: "h H hb hB",
                                _preferred: "h"
                            },
                            GR: {
                                _allowed: "h H hb hB",
                                _preferred: "h"
                            },
                            CO: {
                                _allowed: "h H hB hb",
                                _preferred: "h"
                            },
                            DO: {
                                _allowed: "h H hB hb",
                                _preferred: "h"
                            },
                            KP: {
                                _allowed: "h H hB hb",
                                _preferred: "h"
                            },
                            KR: {
                                _allowed: "h H hB hb",
                                _preferred: "h"
                            },
                            NA: {
                                _allowed: "h H hB hb",
                                _preferred: "h"
                            },
                            PA: {
                                _allowed: "h H hB hb",
                                _preferred: "h"
                            },
                            PR: {
                                _allowed: "h H hB hb",
                                _preferred: "h"
                            },
                            VE: {
                                _allowed: "h H hB hb",
                                _preferred: "h"
                            },
                            AC: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            AI: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            BW: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            BZ: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            CC: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            CK: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            CX: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            DG: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            FK: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            GB: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            GG: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            GI: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            IE: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            IM: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            IO: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            JE: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            LT: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            MK: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            MN: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            MS: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            NF: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            NG: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            NR: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            NU: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            PN: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            SH: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            SX: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            TA: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            ZA: {
                                _allowed: "H h hb hB",
                                _preferred: "H"
                            },
                            af_ZA: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            AR: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            CL: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            CR: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            CU: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            EA: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            es_BO: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            es_BR: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            es_EC: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            es_ES: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            es_GQ: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            es_PE: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            GT: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            HN: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            IC: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            KG: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            KM: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            LK: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            MA: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            MX: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            NI: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            PY: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            SV: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            UY: {
                                _allowed: "H h hB hb",
                                _preferred: "H"
                            },
                            JP: {
                                _allowed: "H h K",
                                _preferred: "H"
                            },
                            AD: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            AM: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            AO: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            AT: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            AW: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            BE: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            BF: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            BJ: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            BL: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            BR: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            CG: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            CI: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            CV: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            DE: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            EE: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            FR: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            GA: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            GF: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            GN: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            GP: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            GW: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            HR: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            IL: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            IT: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            KZ: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            MC: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            MD: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            MF: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            MQ: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            MZ: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            NC: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            NL: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            PM: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            PT: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            RE: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            RO: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            SI: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            SR: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            ST: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            TG: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            TR: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            WF: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            YT: {
                                _allowed: "H hB",
                                _preferred: "H"
                            },
                            BD: {
                                _allowed: "h hB H",
                                _preferred: "h"
                            },
                            PK: {
                                _allowed: "h hB H",
                                _preferred: "h"
                            },
                            AZ: {
                                _allowed: "H hB h",
                                _preferred: "H"
                            },
                            BA: {
                                _allowed: "H hB h",
                                _preferred: "H"
                            },
                            BG: {
                                _allowed: "H hB h",
                                _preferred: "H"
                            },
                            CH: {
                                _allowed: "H hB h",
                                _preferred: "H"
                            },
                            GE: {
                                _allowed: "H hB h",
                                _preferred: "H"
                            },
                            LI: {
                                _allowed: "H hB h",
                                _preferred: "H"
                            },
                            ME: {
                                _allowed: "H hB h",
                                _preferred: "H"
                            },
                            RS: {
                                _allowed: "H hB h",
                                _preferred: "H"
                            },
                            UA: {
                                _allowed: "H hB h",
                                _preferred: "H"
                            },
                            UZ: {
                                _allowed: "H hB h",
                                _preferred: "H"
                            },
                            XK: {
                                _allowed: "H hB h",
                                _preferred: "H"
                            },
                            AG: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            AU: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            BB: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            BM: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            BS: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            CA: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            DM: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            en_001: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            FJ: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            FM: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            GD: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            GM: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            GU: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            GY: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            JM: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            KI: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            KN: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            KY: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            LC: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            LR: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            MH: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            MP: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            MW: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            NZ: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            SB: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            SG: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            SL: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            SS: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            SZ: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            TC: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            TT: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            UM: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            US: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            VC: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            VG: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            VI: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            ZM: {
                                _allowed: "h hb H hB",
                                _preferred: "h"
                            },
                            BO: {
                                _allowed: "H hB h hb",
                                _preferred: "H"
                            },
                            EC: {
                                _allowed: "H hB h hb",
                                _preferred: "H"
                            },
                            ES: {
                                _allowed: "H hB h hb",
                                _preferred: "H"
                            },
                            GQ: {
                                _allowed: "H hB h hb",
                                _preferred: "H"
                            },
                            PE: {
                                _allowed: "H hB h hb",
                                _preferred: "H"
                            },
                            AE: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            ar_001: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            BH: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            DZ: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            EG: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            EH: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            IQ: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            JO: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            KW: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            LB: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            LY: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            MR: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            OM: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            PH: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            PS: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            QA: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            SA: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            SD: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            SY: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            TN: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            YE: {
                                _allowed: "h hB hb H",
                                _preferred: "h"
                            },
                            AF: {
                                _allowed: "H hb hB h",
                                _preferred: "H"
                            },
                            LA: {
                                _allowed: "H hb hB h",
                                _preferred: "H"
                            },
                            LV: {
                                _allowed: "H hB hb h",
                                _preferred: "H"
                            },
                            TL: {
                                _allowed: "H hB hb h",
                                _preferred: "H"
                            },
                            zu_ZA: {
                                _allowed: "H hB hb h",
                                _preferred: "H"
                            },
                            CD: {
                                _allowed: "hB H",
                                _preferred: "H"
                            },
                            IR: {
                                _allowed: "hB H",
                                _preferred: "H"
                            },
                            hi_IN: {
                                _allowed: "hB h H",
                                _preferred: "h"
                            },
                            kn_IN: {
                                _allowed: "hB h H",
                                _preferred: "h"
                            },
                            ml_IN: {
                                _allowed: "hB h H",
                                _preferred: "h"
                            },
                            te_IN: {
                                _allowed: "hB h H",
                                _preferred: "h"
                            },
                            KH: {
                                _allowed: "hB h H hb",
                                _preferred: "h"
                            },
                            ta_IN: {
                                _allowed: "hB h hb H",
                                _preferred: "h"
                            },
                            BN: {
                                _allowed: "hb hB h H",
                                _preferred: "h"
                            },
                            MY: {
                                _allowed: "hb hB h H",
                                _preferred: "h"
                            },
                            CN: {
                                _allowed: "hB hb h H",
                                _preferred: "h"
                            },
                            ET: {
                                _allowed: "hB hb h H",
                                _preferred: "h"
                            },
                            gu_IN: {
                                _allowed: "hB hb h H",
                                _preferred: "h"
                            },
                            HK: {
                                _allowed: "hB hb h H",
                                _preferred: "h"
                            },
                            MO: {
                                _allowed: "hB hb h H",
                                _preferred: "h"
                            },
                            mr_IN: {
                                _allowed: "hB hb h H",
                                _preferred: "h"
                            },
                            pa_IN: {
                                _allowed: "hB hb h H",
                                _preferred: "h"
                            },
                            TW: {
                                _allowed: "hB hb h H",
                                _preferred: "h"
                            },
                            KE: {
                                _allowed: "hB hb H h",
                                _preferred: "H"
                            },
                            MM: {
                                _allowed: "hB hb H h",
                                _preferred: "H"
                            },
                            TZ: {
                                _allowed: "hB hb H h",
                                _preferred: "H"
                            },
                            UG: {
                                _allowed: "hB hb H h",
                                _preferred: "H"
                            }
                        },
                        weekData: {
                            minDays: {
                                "001": "1",
                                AD: "4",
                                AN: "4",
                                AT: "4",
                                AX: "4",
                                BE: "4",
                                BG: "4",
                                CH: "4",
                                CZ: "4",
                                DE: "4",
                                DK: "4",
                                EE: "4",
                                ES: "4",
                                FI: "4",
                                FJ: "4",
                                FO: "4",
                                FR: "4",
                                GB: "4",
                                GF: "4",
                                GG: "4",
                                GI: "4",
                                GP: "4",
                                GR: "4",
                                GU: "1",
                                HU: "4",
                                IE: "4",
                                IM: "4",
                                IS: "4",
                                IT: "4",
                                JE: "4",
                                LI: "4",
                                LT: "4",
                                LU: "4",
                                MC: "4",
                                MQ: "4",
                                NL: "4",
                                NO: "4",
                                PL: "4",
                                PT: "4",
                                RE: "4",
                                RU: "4",
                                SE: "4",
                                SJ: "4",
                                SK: "4",
                                SM: "4",
                                UM: "1",
                                US: "1",
                                VA: "4",
                                VI: "1"
                            },
                            firstDay: {
                                "001": "mon",
                                AD: "mon",
                                AE: "sat",
                                AF: "sat",
                                AG: "sun",
                                AI: "mon",
                                AL: "mon",
                                AM: "mon",
                                AN: "mon",
                                AR: "mon",
                                AS: "sun",
                                AT: "mon",
                                AU: "sun",
                                AX: "mon",
                                AZ: "mon",
                                BA: "mon",
                                BD: "sun",
                                BE: "mon",
                                BG: "mon",
                                BH: "sat",
                                BM: "mon",
                                BN: "mon",
                                BR: "sun",
                                BS: "sun",
                                BT: "sun",
                                BW: "sun",
                                BY: "mon",
                                BZ: "sun",
                                CA: "sun",
                                CH: "mon",
                                CL: "mon",
                                CM: "mon",
                                CN: "sun",
                                CO: "sun",
                                CR: "mon",
                                CY: "mon",
                                CZ: "mon",
                                DE: "mon",
                                DJ: "sat",
                                DK: "mon",
                                DM: "sun",
                                DO: "sun",
                                DZ: "sat",
                                EC: "mon",
                                EE: "mon",
                                EG: "sat",
                                ES: "mon",
                                ET: "sun",
                                FI: "mon",
                                FJ: "mon",
                                FO: "mon",
                                FR: "mon",
                                GB: "mon",
                                "GB-alt-variant": "sun",
                                GE: "mon",
                                GF: "mon",
                                GP: "mon",
                                GR: "mon",
                                GT: "sun",
                                GU: "sun",
                                HK: "sun",
                                HN: "sun",
                                HR: "mon",
                                HU: "mon",
                                ID: "sun",
                                IE: "mon",
                                IL: "sun",
                                IN: "sun",
                                IQ: "sat",
                                IR: "sat",
                                IS: "mon",
                                IT: "mon",
                                JM: "sun",
                                JO: "sat",
                                JP: "sun",
                                KE: "sun",
                                KG: "mon",
                                KH: "sun",
                                KR: "sun",
                                KW: "sat",
                                KZ: "mon",
                                LA: "sun",
                                LB: "mon",
                                LI: "mon",
                                LK: "mon",
                                LT: "mon",
                                LU: "mon",
                                LV: "mon",
                                LY: "sat",
                                MC: "mon",
                                MD: "mon",
                                ME: "mon",
                                MH: "sun",
                                MK: "mon",
                                MM: "sun",
                                MN: "mon",
                                MO: "sun",
                                MQ: "mon",
                                MT: "sun",
                                MV: "fri",
                                MX: "sun",
                                MY: "mon",
                                MZ: "sun",
                                NI: "sun",
                                NL: "mon",
                                NO: "mon",
                                NP: "sun",
                                NZ: "mon",
                                OM: "sat",
                                PA: "sun",
                                PE: "sun",
                                PH: "sun",
                                PK: "sun",
                                PL: "mon",
                                PR: "sun",
                                PT: "sun",
                                PY: "sun",
                                QA: "sat",
                                RE: "mon",
                                RO: "mon",
                                RS: "mon",
                                RU: "mon",
                                SA: "sun",
                                SD: "sat",
                                SE: "mon",
                                SG: "sun",
                                SI: "mon",
                                SK: "mon",
                                SM: "mon",
                                SV: "sun",
                                SY: "sat",
                                TH: "sun",
                                TJ: "mon",
                                TM: "mon",
                                TR: "mon",
                                TT: "sun",
                                TW: "sun",
                                UA: "mon",
                                UM: "sun",
                                US: "sun",
                                UY: "mon",
                                UZ: "mon",
                                VA: "mon",
                                VE: "sun",
                                VI: "sun",
                                VN: "mon",
                                WS: "sun",
                                XK: "mon",
                                YE: "sun",
                                ZA: "sun",
                                ZW: "sun"
                            },
                            weekendStart: {
                                "001": "sat",
                                AE: "fri",
                                AF: "thu",
                                BH: "fri",
                                DZ: "fri",
                                EG: "fri",
                                IL: "fri",
                                IN: "sun",
                                IQ: "fri",
                                IR: "fri",
                                JO: "fri",
                                KW: "fri",
                                LY: "fri",
                                OM: "fri",
                                QA: "fri",
                                SA: "fri",
                                SD: "fri",
                                SY: "fri",
                                UG: "sun",
                                YE: "fri"
                            },
                            weekendEnd: {
                                "001": "sun",
                                AE: "sat",
                                AF: "fri",
                                BH: "sat",
                                DZ: "sat",
                                EG: "sat",
                                IL: "sat",
                                IQ: "sat",
                                IR: "fri",
                                JO: "sat",
                                KW: "sat",
                                LY: "sat",
                                OM: "sat",
                                QA: "sat",
                                SA: "sat",
                                SD: "sat",
                                SY: "sat",
                                YE: "sat"
                            },
                            af: {
                                _ordering: "weekOfDate weekOfInterval weekOfMonth"
                            },
                            "am az bs cs cy da el et hi ky lt mk sk ta th": {
                                _ordering: "weekOfYear weekOfMonth"
                            },
                            "ar fil gu hu hy id kk ko": {
                                _ordering: "weekOfMonth"
                            },
                            "be ro ru": {
                                _ordering: "weekOfInterval weekOfMonth"
                            },
                            "bg de iw pt ur zh": {
                                _ordering: "weekOfDate weekOfMonth weekOfInterval"
                            },
                            "ca es fr gl": {
                                _ordering: "weekOfDate"
                            },
                            "en bn ja ka": {
                                _ordering: "weekOfDate weekOfMonth"
                            },
                            eu: {
                                _ordering: "weekOfMonth weekOfDate"
                            },
                            "fa hr it lv pl si sr uk uz": {
                                _ordering: "weekOfMonth weekOfInterval"
                            },
                            "fi zh-TW": {
                                _ordering: "weekOfYear weekOfDate weekOfMonth"
                            },
                            "is mn no sv vi": {
                                _ordering: "weekOfYear weekOfMonth weekOfInterval"
                            },
                            "km mr": {
                                _ordering: "weekOfMonth weekOfYear"
                            },
                            "kn ml pa": {
                                _ordering: "weekOfMonth weekOfDate weekOfYear"
                            },
                            "lo sq": {
                                _ordering: "weekOfMonth weekOfInterval weekOfDate weekOfYear"
                            },
                            "ms tr": {
                                _ordering: "weekOfMonth weekOfYear weekOfInterval weekOfDate"
                            },
                            nl: {
                                _ordering: "weekOfDate weekOfYear weekOfMonth"
                            },
                            sl: {
                                _ordering: "weekOfInterval"
                            },
                            "sw te": {
                                _ordering: "weekOfMonth weekOfInterval weekOfYear"
                            },
                            und: {
                                _ordering: "weekOfYear"
                            },
                            zu: {
                                _ordering: "weekOfYear weekOfInterval"
                            }
                        },
                        currencyData: {
                            fractions: {
                                ADP: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                AFN: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                ALL: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                AMD: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                BHD: {
                                    _rounding: "0",
                                    _digits: "3"
                                },
                                BIF: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                BYN: {
                                    _rounding: "0",
                                    _digits: "2"
                                },
                                BYR: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                CAD: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "5"
                                },
                                CHF: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "5"
                                },
                                CLF: {
                                    _rounding: "0",
                                    _digits: "4"
                                },
                                CLP: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                COP: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                CRC: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                CZK: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                DEFAULT: {
                                    _rounding: "0",
                                    _digits: "2"
                                },
                                DJF: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                DKK: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "50"
                                },
                                ESP: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                GNF: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                GYD: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                HUF: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                IDR: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                IQD: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                IRR: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                ISK: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                ITL: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                JOD: {
                                    _rounding: "0",
                                    _digits: "3"
                                },
                                JPY: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                KMF: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                KPW: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                KRW: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                KWD: {
                                    _rounding: "0",
                                    _digits: "3"
                                },
                                LAK: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                LBP: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                LUF: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                LYD: {
                                    _rounding: "0",
                                    _digits: "3"
                                },
                                MGA: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                MGF: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                MMK: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                MNT: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                MRO: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                MUR: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                NOK: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                OMR: {
                                    _rounding: "0",
                                    _digits: "3"
                                },
                                PKR: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                PYG: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                RSD: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                RWF: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                SEK: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                SLL: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                SOS: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                STD: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                SYP: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                TMM: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                TND: {
                                    _rounding: "0",
                                    _digits: "3"
                                },
                                TRL: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                TWD: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                TZS: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                UGX: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                UYI: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                UYW: {
                                    _rounding: "0",
                                    _digits: "4"
                                },
                                UZS: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                VEF: {
                                    _rounding: "0",
                                    _digits: "2",
                                    _cashRounding: "0",
                                    _cashDigits: "0"
                                },
                                VND: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                VUV: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                XAF: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                XOF: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                XPF: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                YER: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                ZMK: {
                                    _rounding: "0",
                                    _digits: "0"
                                },
                                ZWD: {
                                    _rounding: "0",
                                    _digits: "0"
                                }
                            },
                            region: {
                                AC: [{
                                    SHP: {
                                        _from: "1976-01-01"
                                    }
                                }],
                                AD: [{
                                    ESP: {
                                        _from: "1873-01-01",
                                        _to: "2002-02-28"
                                    }
                                }, {
                                    ADP: {
                                        _from: "1936-01-01",
                                        _to: "2001-12-31"
                                    }
                                }, {
                                    FRF: {
                                        _from: "1960-01-01",
                                        _to: "2002-02-17"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                AE: [{
                                    AED: {
                                        _from: "1973-05-19"
                                    }
                                }],
                                AF: [{
                                    AFA: {
                                        _from: "1927-03-14",
                                        _to: "2002-12-31"
                                    }
                                }, {
                                    AFN: {
                                        _from: "2002-10-07"
                                    }
                                }],
                                AG: [{
                                    XCD: {
                                        _from: "1965-10-06"
                                    }
                                }],
                                AI: [{
                                    XCD: {
                                        _from: "1965-10-06"
                                    }
                                }],
                                AL: [{
                                    ALK: {
                                        _from: "1946-11-01",
                                        _to: "1965-08-16"
                                    }
                                }, {
                                    ALL: {
                                        _from: "1965-08-16"
                                    }
                                }],
                                AM: [{
                                    SUR: {
                                        _from: "1961-01-01",
                                        _to: "1991-12-25"
                                    }
                                }, {
                                    RUR: {
                                        _from: "1991-12-25",
                                        _to: "1993-11-22"
                                    }
                                }, {
                                    AMD: {
                                        _from: "1993-11-22"
                                    }
                                }],
                                AO: [{
                                    AOK: {
                                        _from: "1977-01-08",
                                        _to: "1991-03-01"
                                    }
                                }, {
                                    AON: {
                                        _from: "1990-09-25",
                                        _to: "2000-02-01"
                                    }
                                }, {
                                    AOR: {
                                        _from: "1995-07-01",
                                        _to: "2000-02-01"
                                    }
                                }, {
                                    AOA: {
                                        _from: "1999-12-13"
                                    }
                                }],
                                AQ: [{
                                    XXX: {
                                        _tender: "false"
                                    }
                                }],
                                AR: [{
                                    ARM: {
                                        _from: "1881-11-05",
                                        _to: "1970-01-01"
                                    }
                                }, {
                                    ARL: {
                                        _from: "1970-01-01",
                                        _to: "1983-06-01"
                                    }
                                }, {
                                    ARP: {
                                        _from: "1983-06-01",
                                        _to: "1985-06-14"
                                    }
                                }, {
                                    ARA: {
                                        _from: "1985-06-14",
                                        _to: "1992-01-01"
                                    }
                                }, {
                                    ARS: {
                                        _from: "1992-01-01"
                                    }
                                }],
                                AS: [{
                                    USD: {
                                        _from: "1904-07-16"
                                    }
                                }],
                                AT: [{
                                    ATS: {
                                        _from: "1947-12-04",
                                        _to: "2002-02-28"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                AU: [{
                                    AUD: {
                                        _from: "1966-02-14"
                                    }
                                }],
                                AW: [{
                                    ANG: {
                                        _from: "1940-05-10",
                                        _to: "1986-01-01"
                                    }
                                }, {
                                    AWG: {
                                        _from: "1986-01-01"
                                    }
                                }],
                                AX: [{
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                AZ: [{
                                    SUR: {
                                        _from: "1961-01-01",
                                        _to: "1991-12-25"
                                    }
                                }, {
                                    RUR: {
                                        _from: "1991-12-25",
                                        _to: "1994-01-01"
                                    }
                                }, {
                                    AZM: {
                                        _from: "1993-11-22",
                                        _to: "2006-12-31"
                                    }
                                }, {
                                    AZN: {
                                        _from: "2006-01-01"
                                    }
                                }],
                                BA: [{
                                    YUD: {
                                        _from: "1966-01-01",
                                        _to: "1990-01-01"
                                    }
                                }, {
                                    YUN: {
                                        _from: "1990-01-01",
                                        _to: "1992-07-01"
                                    }
                                }, {
                                    YUR: {
                                        _from: "1992-07-01",
                                        _to: "1993-10-01"
                                    }
                                }, {
                                    BAD: {
                                        _from: "1992-07-01",
                                        _to: "1994-08-15"
                                    }
                                }, {
                                    BAN: {
                                        _from: "1994-08-15",
                                        _to: "1997-07-01"
                                    }
                                }, {
                                    BAM: {
                                        _from: "1995-01-01"
                                    }
                                }],
                                BB: [{
                                    XCD: {
                                        _from: "1965-10-06",
                                        _to: "1973-12-03"
                                    }
                                }, {
                                    BBD: {
                                        _from: "1973-12-03"
                                    }
                                }],
                                BD: [{
                                    INR: {
                                        _from: "1835-08-17",
                                        _to: "1948-04-01"
                                    }
                                }, {
                                    PKR: {
                                        _from: "1948-04-01",
                                        _to: "1972-01-01"
                                    }
                                }, {
                                    BDT: {
                                        _from: "1972-01-01"
                                    }
                                }],
                                BE: [{
                                    NLG: {
                                        _from: "1816-12-15",
                                        _to: "1831-02-07"
                                    }
                                }, {
                                    BEF: {
                                        _from: "1831-02-07",
                                        _to: "2002-02-28"
                                    }
                                }, {
                                    BEC: {
                                        _tender: "false",
                                        _from: "1970-01-01",
                                        _to: "1990-03-05"
                                    }
                                }, {
                                    BEL: {
                                        _tender: "false",
                                        _from: "1970-01-01",
                                        _to: "1990-03-05"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                BF: [{
                                    XOF: {
                                        _from: "1984-08-04"
                                    }
                                }],
                                BG: [{
                                    BGO: {
                                        _from: "1879-07-08",
                                        _to: "1952-05-12"
                                    }
                                }, {
                                    BGM: {
                                        _from: "1952-05-12",
                                        _to: "1962-01-01"
                                    }
                                }, {
                                    BGL: {
                                        _from: "1962-01-01",
                                        _to: "1999-07-05"
                                    }
                                }, {
                                    BGN: {
                                        _from: "1999-07-05"
                                    }
                                }],
                                BH: [{
                                    BHD: {
                                        _from: "1965-10-16"
                                    }
                                }],
                                BI: [{
                                    BIF: {
                                        _from: "1964-05-19"
                                    }
                                }],
                                BJ: [{
                                    XOF: {
                                        _from: "1975-11-30"
                                    }
                                }],
                                BL: [{
                                    FRF: {
                                        _from: "1960-01-01",
                                        _to: "2002-02-17"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                BM: [{
                                    BMD: {
                                        _from: "1970-02-06"
                                    }
                                }],
                                BN: [{
                                    MYR: {
                                        _from: "1963-09-16",
                                        _to: "1967-06-12"
                                    }
                                }, {
                                    BND: {
                                        _from: "1967-06-12"
                                    }
                                }],
                                BO: [{
                                    BOV: {
                                        _tender: "false"
                                    }
                                }, {
                                    BOL: {
                                        _from: "1863-06-23",
                                        _to: "1963-01-01"
                                    }
                                }, {
                                    BOP: {
                                        _from: "1963-01-01",
                                        _to: "1986-12-31"
                                    }
                                }, {
                                    BOB: {
                                        _from: "1987-01-01"
                                    }
                                }],
                                BQ: [{
                                    ANG: {
                                        _from: "2010-10-10",
                                        _to: "2011-01-01"
                                    }
                                }, {
                                    USD: {
                                        _from: "2011-01-01"
                                    }
                                }],
                                BR: [{
                                    BRZ: {
                                        _from: "1942-11-01",
                                        _to: "1967-02-13"
                                    }
                                }, {
                                    BRB: {
                                        _from: "1967-02-13",
                                        _to: "1986-02-28"
                                    }
                                }, {
                                    BRC: {
                                        _from: "1986-02-28",
                                        _to: "1989-01-15"
                                    }
                                }, {
                                    BRN: {
                                        _from: "1989-01-15",
                                        _to: "1990-03-16"
                                    }
                                }, {
                                    BRE: {
                                        _from: "1990-03-16",
                                        _to: "1993-08-01"
                                    }
                                }, {
                                    BRR: {
                                        _from: "1993-08-01",
                                        _to: "1994-07-01"
                                    }
                                }, {
                                    BRL: {
                                        _from: "1994-07-01"
                                    }
                                }],
                                BS: [{
                                    BSD: {
                                        _from: "1966-05-25"
                                    }
                                }],
                                BT: [{
                                    INR: {
                                        _from: "1907-01-01"
                                    }
                                }, {
                                    BTN: {
                                        _from: "1974-04-16"
                                    }
                                }],
                                BU: [{
                                    BUK: {
                                        _from: "1952-07-01",
                                        _to: "1989-06-18"
                                    }
                                }],
                                BV: [{
                                    NOK: {
                                        _from: "1905-06-07"
                                    }
                                }],
                                BW: [{
                                    ZAR: {
                                        _from: "1961-02-14",
                                        _to: "1976-08-23"
                                    }
                                }, {
                                    BWP: {
                                        _from: "1976-08-23"
                                    }
                                }],
                                BY: [{
                                    SUR: {
                                        _from: "1961-01-01",
                                        _to: "1991-12-25"
                                    }
                                }, {
                                    RUR: {
                                        _from: "1991-12-25",
                                        _to: "1994-11-08"
                                    }
                                }, {
                                    BYB: {
                                        _from: "1994-08-01",
                                        _to: "2000-12-31"
                                    }
                                }, {
                                    BYR: {
                                        _from: "2000-01-01",
                                        _to: "2017-01-01"
                                    }
                                }, {
                                    BYN: {
                                        _from: "2016-07-01"
                                    }
                                }],
                                BZ: [{
                                    BZD: {
                                        _from: "1974-01-01"
                                    }
                                }],
                                CA: [{
                                    CAD: {
                                        _from: "1858-01-01"
                                    }
                                }],
                                CC: [{
                                    AUD: {
                                        _from: "1966-02-14"
                                    }
                                }],
                                CD: [{
                                    ZRZ: {
                                        _from: "1971-10-27",
                                        _to: "1993-11-01"
                                    }
                                }, {
                                    ZRN: {
                                        _from: "1993-11-01",
                                        _to: "1998-07-01"
                                    }
                                }, {
                                    CDF: {
                                        _from: "1998-07-01"
                                    }
                                }],
                                CF: [{
                                    XAF: {
                                        _from: "1993-01-01"
                                    }
                                }],
                                CG: [{
                                    XAF: {
                                        _from: "1993-01-01"
                                    }
                                }],
                                CH: [{
                                    CHE: {
                                        _tender: "false"
                                    }
                                }, {
                                    CHW: {
                                        _tender: "false"
                                    }
                                }, {
                                    CHF: {
                                        _from: "1799-03-17"
                                    }
                                }],
                                CI: [{
                                    XOF: {
                                        _from: "1958-12-04"
                                    }
                                }],
                                CK: [{
                                    NZD: {
                                        _from: "1967-07-10"
                                    }
                                }],
                                CL: [{
                                    CLF: {
                                        _tender: "false"
                                    }
                                }, {
                                    CLE: {
                                        _from: "1960-01-01",
                                        _to: "1975-09-29"
                                    }
                                }, {
                                    CLP: {
                                        _from: "1975-09-29"
                                    }
                                }],
                                CM: [{
                                    XAF: {
                                        _from: "1973-04-01"
                                    }
                                }],
                                CN: [{
                                    CNY: {
                                        _from: "1953-03-01"
                                    }
                                }, {
                                    CNX: {
                                        _tender: "false",
                                        _from: "1979-01-01",
                                        _to: "1998-12-31"
                                    }
                                }, {
                                    CNH: {
                                        _tender: "false",
                                        _from: "2010-07-19"
                                    }
                                }],
                                CO: [{
                                    COU: {
                                        _tender: "false"
                                    }
                                }, {
                                    COP: {
                                        _from: "1905-01-01"
                                    }
                                }],
                                CP: [{
                                    XXX: {
                                        _tender: "false"
                                    }
                                }],
                                CR: [{
                                    CRC: {
                                        _from: "1896-10-26"
                                    }
                                }],
                                CS: [{
                                    YUM: {
                                        _from: "1994-01-24",
                                        _to: "2002-05-15"
                                    }
                                }, {
                                    CSD: {
                                        _from: "2002-05-15",
                                        _to: "2006-06-03"
                                    }
                                }, {
                                    EUR: {
                                        _from: "2003-02-04",
                                        _to: "2006-06-03"
                                    }
                                }],
                                CU: [{
                                    CUP: {
                                        _from: "1859-01-01"
                                    }
                                }, {
                                    USD: {
                                        _from: "1899-01-01",
                                        _to: "1959-01-01"
                                    }
                                }, {
                                    CUC: {
                                        _from: "1994-01-01"
                                    }
                                }],
                                CV: [{
                                    PTE: {
                                        _from: "1911-05-22",
                                        _to: "1975-07-05"
                                    }
                                }, {
                                    CVE: {
                                        _from: "1914-01-01"
                                    }
                                }],
                                CW: [{
                                    ANG: {
                                        _from: "2010-10-10"
                                    }
                                }],
                                CX: [{
                                    AUD: {
                                        _from: "1966-02-14"
                                    }
                                }],
                                CY: [{
                                    CYP: {
                                        _from: "1914-09-10",
                                        _to: "2008-01-31"
                                    }
                                }, {
                                    EUR: {
                                        _from: "2008-01-01"
                                    }
                                }],
                                CZ: [{
                                    CSK: {
                                        _from: "1953-06-01",
                                        _to: "1993-03-01"
                                    }
                                }, {
                                    CZK: {
                                        _from: "1993-01-01"
                                    }
                                }],
                                DD: [{
                                    DDM: {
                                        _from: "1948-07-20",
                                        _to: "1990-10-02"
                                    }
                                }],
                                DE: [{
                                    DEM: {
                                        _from: "1948-06-20",
                                        _to: "2002-02-28"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                DG: [{
                                    USD: {
                                        _from: "1965-11-08"
                                    }
                                }],
                                DJ: [{
                                    DJF: {
                                        _from: "1977-06-27"
                                    }
                                }],
                                DK: [{
                                    DKK: {
                                        _from: "1873-05-27"
                                    }
                                }],
                                DM: [{
                                    XCD: {
                                        _from: "1965-10-06"
                                    }
                                }],
                                DO: [{
                                    USD: {
                                        _from: "1905-06-21",
                                        _to: "1947-10-01"
                                    }
                                }, {
                                    DOP: {
                                        _from: "1947-10-01"
                                    }
                                }],
                                DZ: [{
                                    DZD: {
                                        _from: "1964-04-01"
                                    }
                                }],
                                EA: [{
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                EC: [{
                                    ECS: {
                                        _from: "1884-04-01",
                                        _to: "2000-10-02"
                                    }
                                }, {
                                    ECV: {
                                        _tender: "false",
                                        _from: "1993-05-23",
                                        _to: "2000-01-09"
                                    }
                                }, {
                                    USD: {
                                        _from: "2000-10-02"
                                    }
                                }],
                                EE: [{
                                    SUR: {
                                        _from: "1961-01-01",
                                        _to: "1992-06-20"
                                    }
                                }, {
                                    EEK: {
                                        _from: "1992-06-21",
                                        _to: "2010-12-31"
                                    }
                                }, {
                                    EUR: {
                                        _from: "2011-01-01"
                                    }
                                }],
                                EG: [{
                                    EGP: {
                                        _from: "1885-11-14"
                                    }
                                }],
                                EH: [{
                                    MAD: {
                                        _from: "1976-02-26"
                                    }
                                }],
                                ER: [{
                                    ETB: {
                                        _from: "1993-05-24",
                                        _to: "1997-11-08"
                                    }
                                }, {
                                    ERN: {
                                        _from: "1997-11-08"
                                    }
                                }],
                                ES: [{
                                    ESP: {
                                        _from: "1868-10-19",
                                        _to: "2002-02-28"
                                    }
                                }, {
                                    ESB: {
                                        _tender: "false",
                                        _from: "1975-01-01",
                                        _to: "1994-12-31"
                                    }
                                }, {
                                    ESA: {
                                        _tender: "false",
                                        _from: "1978-01-01",
                                        _to: "1981-12-31"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                ET: [{
                                    ETB: {
                                        _from: "1976-09-15"
                                    }
                                }],
                                EU: [{
                                    XEU: {
                                        _tender: "false",
                                        _from: "1979-01-01",
                                        _to: "1998-12-31"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                FI: [{
                                    FIM: {
                                        _from: "1963-01-01",
                                        _to: "2002-02-28"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                FJ: [{
                                    FJD: {
                                        _from: "1969-01-13"
                                    }
                                }],
                                FK: [{
                                    FKP: {
                                        _from: "1901-01-01"
                                    }
                                }],
                                FM: [{
                                    JPY: {
                                        _from: "1914-10-03",
                                        _to: "1944-01-01"
                                    }
                                }, {
                                    USD: {
                                        _from: "1944-01-01"
                                    }
                                }],
                                FO: [{
                                    DKK: {
                                        _from: "1948-01-01"
                                    }
                                }],
                                FR: [{
                                    FRF: {
                                        _from: "1960-01-01",
                                        _to: "2002-02-17"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                GA: [{
                                    XAF: {
                                        _from: "1993-01-01"
                                    }
                                }],
                                GB: [{
                                    GBP: {
                                        _from: "1694-07-27"
                                    }
                                }],
                                GD: [{
                                    XCD: {
                                        _from: "1967-02-27"
                                    }
                                }],
                                GE: [{
                                    SUR: {
                                        _from: "1961-01-01",
                                        _to: "1991-12-25"
                                    }
                                }, {
                                    RUR: {
                                        _from: "1991-12-25",
                                        _to: "1993-06-11"
                                    }
                                }, {
                                    GEK: {
                                        _from: "1993-04-05",
                                        _to: "1995-09-25"
                                    }
                                }, {
                                    GEL: {
                                        _from: "1995-09-23"
                                    }
                                }],
                                GF: [{
                                    FRF: {
                                        _from: "1960-01-01",
                                        _to: "2002-02-17"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                GG: [{
                                    GBP: {
                                        _from: "1830-01-01"
                                    }
                                }],
                                GH: [{
                                    GHC: {
                                        _from: "1979-03-09",
                                        _to: "2007-12-31"
                                    }
                                }, {
                                    GHS: {
                                        _from: "2007-07-03"
                                    }
                                }],
                                GI: [{
                                    GIP: {
                                        _from: "1713-01-01"
                                    }
                                }],
                                GL: [{
                                    DKK: {
                                        _from: "1873-05-27"
                                    }
                                }],
                                GM: [{
                                    GMD: {
                                        _from: "1971-07-01"
                                    }
                                }],
                                GN: [{
                                    GNS: {
                                        _from: "1972-10-02",
                                        _to: "1986-01-06"
                                    }
                                }, {
                                    GNF: {
                                        _from: "1986-01-06"
                                    }
                                }],
                                GP: [{
                                    FRF: {
                                        _from: "1960-01-01",
                                        _to: "2002-02-17"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                GQ: [{
                                    GQE: {
                                        _from: "1975-07-07",
                                        _to: "1986-06-01"
                                    }
                                }, {
                                    XAF: {
                                        _from: "1993-01-01"
                                    }
                                }],
                                GR: [{
                                    GRD: {
                                        _from: "1954-05-01",
                                        _to: "2002-02-28"
                                    }
                                }, {
                                    EUR: {
                                        _from: "2001-01-01"
                                    }
                                }],
                                GS: [{
                                    GBP: {
                                        _from: "1908-01-01"
                                    }
                                }],
                                GT: [{
                                    GTQ: {
                                        _from: "1925-05-27"
                                    }
                                }],
                                GU: [{
                                    USD: {
                                        _from: "1944-08-21"
                                    }
                                }],
                                GW: [{
                                    GWE: {
                                        _from: "1914-01-01",
                                        _to: "1976-02-28"
                                    }
                                }, {
                                    GWP: {
                                        _from: "1976-02-28",
                                        _to: "1997-03-31"
                                    }
                                }, {
                                    XOF: {
                                        _from: "1997-03-31"
                                    }
                                }],
                                GY: [{
                                    GYD: {
                                        _from: "1966-05-26"
                                    }
                                }],
                                HK: [{
                                    HKD: {
                                        _from: "1895-02-02"
                                    }
                                }],
                                HM: [{
                                    AUD: {
                                        _from: "1967-02-16"
                                    }
                                }],
                                HN: [{
                                    HNL: {
                                        _from: "1926-04-03"
                                    }
                                }],
                                HR: [{
                                    YUD: {
                                        _from: "1966-01-01",
                                        _to: "1990-01-01"
                                    }
                                }, {
                                    YUN: {
                                        _from: "1990-01-01",
                                        _to: "1991-12-23"
                                    }
                                }, {
                                    HRD: {
                                        _from: "1991-12-23",
                                        _to: "1995-01-01"
                                    }
                                }, {
                                    HRK: {
                                        _from: "1994-05-30"
                                    }
                                }],
                                HT: [{
                                    HTG: {
                                        _from: "1872-08-26"
                                    }
                                }, {
                                    USD: {
                                        _from: "1915-01-01"
                                    }
                                }],
                                HU: [{
                                    HUF: {
                                        _from: "1946-07-23"
                                    }
                                }],
                                IC: [{
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                ID: [{
                                    IDR: {
                                        _from: "1965-12-13"
                                    }
                                }],
                                IE: [{
                                    GBP: {
                                        _from: "1800-01-01",
                                        _to: "1922-01-01"
                                    }
                                }, {
                                    IEP: {
                                        _from: "1922-01-01",
                                        _to: "2002-02-09"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                IL: [{
                                    ILP: {
                                        _from: "1948-08-16",
                                        _to: "1980-02-22"
                                    }
                                }, {
                                    ILR: {
                                        _from: "1980-02-22",
                                        _to: "1985-09-04"
                                    }
                                }, {
                                    ILS: {
                                        _from: "1985-09-04"
                                    }
                                }],
                                IM: [{
                                    GBP: {
                                        _from: "1840-01-03"
                                    }
                                }],
                                IN: [{
                                    INR: {
                                        _from: "1835-08-17"
                                    }
                                }],
                                IO: [{
                                    USD: {
                                        _from: "1965-11-08"
                                    }
                                }],
                                IQ: [{
                                    EGP: {
                                        _from: "1920-11-11",
                                        _to: "1931-04-19"
                                    }
                                }, {
                                    INR: {
                                        _from: "1920-11-11",
                                        _to: "1931-04-19"
                                    }
                                }, {
                                    IQD: {
                                        _from: "1931-04-19"
                                    }
                                }],
                                IR: [{
                                    IRR: {
                                        _from: "1932-05-13"
                                    }
                                }],
                                IS: [{
                                    DKK: {
                                        _from: "1873-05-27",
                                        _to: "1918-12-01"
                                    }
                                }, {
                                    ISJ: {
                                        _from: "1918-12-01",
                                        _to: "1981-01-01"
                                    }
                                }, {
                                    ISK: {
                                        _from: "1981-01-01"
                                    }
                                }],
                                IT: [{
                                    ITL: {
                                        _from: "1862-08-24",
                                        _to: "2002-02-28"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                JE: [{
                                    GBP: {
                                        _from: "1837-01-01"
                                    }
                                }],
                                JM: [{
                                    JMD: {
                                        _from: "1969-09-08"
                                    }
                                }],
                                JO: [{
                                    JOD: {
                                        _from: "1950-07-01"
                                    }
                                }],
                                JP: [{
                                    JPY: {
                                        _from: "1871-06-01"
                                    }
                                }],
                                KE: [{
                                    KES: {
                                        _from: "1966-09-14"
                                    }
                                }],
                                KG: [{
                                    SUR: {
                                        _from: "1961-01-01",
                                        _to: "1991-12-25"
                                    }
                                }, {
                                    RUR: {
                                        _from: "1991-12-25",
                                        _to: "1993-05-10"
                                    }
                                }, {
                                    KGS: {
                                        _from: "1993-05-10"
                                    }
                                }],
                                KH: [{
                                    KHR: {
                                        _from: "1980-03-20"
                                    }
                                }],
                                KI: [{
                                    AUD: {
                                        _from: "1966-02-14"
                                    }
                                }],
                                KM: [{
                                    KMF: {
                                        _from: "1975-07-06"
                                    }
                                }],
                                KN: [{
                                    XCD: {
                                        _from: "1965-10-06"
                                    }
                                }],
                                KP: [{
                                    KPW: {
                                        _from: "1959-04-17"
                                    }
                                }],
                                KR: [{
                                    KRO: {
                                        _from: "1945-08-15",
                                        _to: "1953-02-15"
                                    }
                                }, {
                                    KRH: {
                                        _from: "1953-02-15",
                                        _to: "1962-06-10"
                                    }
                                }, {
                                    KRW: {
                                        _from: "1962-06-10"
                                    }
                                }],
                                KW: [{
                                    KWD: {
                                        _from: "1961-04-01"
                                    }
                                }],
                                KY: [{
                                    JMD: {
                                        _from: "1969-09-08",
                                        _to: "1971-01-01"
                                    }
                                }, {
                                    KYD: {
                                        _from: "1971-01-01"
                                    }
                                }],
                                KZ: [{
                                    KZT: {
                                        _from: "1993-11-05"
                                    }
                                }],
                                LA: [{
                                    LAK: {
                                        _from: "1979-12-10"
                                    }
                                }],
                                LB: [{
                                    LBP: {
                                        _from: "1948-02-02"
                                    }
                                }],
                                LC: [{
                                    XCD: {
                                        _from: "1965-10-06"
                                    }
                                }],
                                LI: [{
                                    CHF: {
                                        _from: "1921-02-01"
                                    }
                                }],
                                LK: [{
                                    LKR: {
                                        _from: "1978-05-22"
                                    }
                                }],
                                LR: [{
                                    LRD: {
                                        _from: "1944-01-01"
                                    }
                                }],
                                LS: [{
                                    ZAR: {
                                        _from: "1961-02-14"
                                    }
                                }, {
                                    LSL: {
                                        _from: "1980-01-22"
                                    }
                                }],
                                LT: [{
                                    SUR: {
                                        _from: "1961-01-01",
                                        _to: "1992-10-01"
                                    }
                                }, {
                                    LTT: {
                                        _from: "1992-10-01",
                                        _to: "1993-06-25"
                                    }
                                }, {
                                    LTL: {
                                        _from: "1993-06-25",
                                        _to: "2014-12-31"
                                    }
                                }, {
                                    EUR: {
                                        _from: "2015-01-01"
                                    }
                                }],
                                LU: [{
                                    LUF: {
                                        _from: "1944-09-04",
                                        _to: "2002-02-28"
                                    }
                                }, {
                                    LUC: {
                                        _tender: "false",
                                        _from: "1970-01-01",
                                        _to: "1990-03-05"
                                    }
                                }, {
                                    LUL: {
                                        _tender: "false",
                                        _from: "1970-01-01",
                                        _to: "1990-03-05"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                LV: [{
                                    SUR: {
                                        _from: "1961-01-01",
                                        _to: "1992-07-20"
                                    }
                                }, {
                                    LVR: {
                                        _from: "1992-05-07",
                                        _to: "1993-10-17"
                                    }
                                }, {
                                    LVL: {
                                        _from: "1993-06-28",
                                        _to: "2013-12-31"
                                    }
                                }, {
                                    EUR: {
                                        _from: "2014-01-01"
                                    }
                                }],
                                LY: [{
                                    LYD: {
                                        _from: "1971-09-01"
                                    }
                                }],
                                MA: [{
                                    MAF: {
                                        _from: "1881-01-01",
                                        _to: "1959-10-17"
                                    }
                                }, {
                                    MAD: {
                                        _from: "1959-10-17"
                                    }
                                }],
                                MC: [{
                                    FRF: {
                                        _from: "1960-01-01",
                                        _to: "2002-02-17"
                                    }
                                }, {
                                    MCF: {
                                        _from: "1960-01-01",
                                        _to: "2002-02-17"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                MD: [{
                                    MDC: {
                                        _from: "1992-06-01",
                                        _to: "1993-11-29"
                                    }
                                }, {
                                    MDL: {
                                        _from: "1993-11-29"
                                    }
                                }],
                                ME: [{
                                    YUM: {
                                        _from: "1994-01-24",
                                        _to: "2002-05-15"
                                    }
                                }, {
                                    DEM: {
                                        _from: "1999-10-02",
                                        _to: "2002-05-15"
                                    }
                                }, {
                                    EUR: {
                                        _from: "2002-01-01"
                                    }
                                }],
                                MF: [{
                                    FRF: {
                                        _from: "1960-01-01",
                                        _to: "2002-02-17"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                MG: [{
                                    MGF: {
                                        _from: "1963-07-01",
                                        _to: "2004-12-31"
                                    }
                                }, {
                                    MGA: {
                                        _from: "1983-11-01"
                                    }
                                }],
                                MH: [{
                                    USD: {
                                        _from: "1944-01-01"
                                    }
                                }],
                                MK: [{
                                    MKN: {
                                        _from: "1992-04-26",
                                        _to: "1993-05-20"
                                    }
                                }, {
                                    MKD: {
                                        _from: "1993-05-20"
                                    }
                                }],
                                ML: [{
                                    XOF: {
                                        _from: "1958-11-24",
                                        _to: "1962-07-02"
                                    }
                                }, {
                                    MLF: {
                                        _from: "1962-07-02",
                                        _to: "1984-08-31"
                                    }
                                }, {
                                    XOF: {
                                        _from: "1984-06-01"
                                    }
                                }],
                                MM: [{
                                    BUK: {
                                        _from: "1952-07-01",
                                        _to: "1989-06-18"
                                    }
                                }, {
                                    MMK: {
                                        _from: "1989-06-18"
                                    }
                                }],
                                MN: [{
                                    MNT: {
                                        _from: "1915-03-01"
                                    }
                                }],
                                MO: [{
                                    MOP: {
                                        _from: "1901-01-01"
                                    }
                                }],
                                MP: [{
                                    USD: {
                                        _from: "1944-01-01"
                                    }
                                }],
                                MQ: [{
                                    FRF: {
                                        _from: "1960-01-01",
                                        _to: "2002-02-17"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                MR: [{
                                    XOF: {
                                        _from: "1958-11-28",
                                        _to: "1973-06-29"
                                    }
                                }, {
                                    MRO: {
                                        _from: "1973-06-29",
                                        _to: "2018-06-30"
                                    }
                                }, {
                                    MRU: {
                                        _from: "2018-01-01"
                                    }
                                }],
                                MS: [{
                                    XCD: {
                                        _from: "1967-02-27"
                                    }
                                }],
                                MT: [{
                                    MTP: {
                                        _from: "1914-08-13",
                                        _to: "1968-06-07"
                                    }
                                }, {
                                    MTL: {
                                        _from: "1968-06-07",
                                        _to: "2008-01-31"
                                    }
                                }, {
                                    EUR: {
                                        _from: "2008-01-01"
                                    }
                                }],
                                MU: [{
                                    MUR: {
                                        _from: "1934-04-01"
                                    }
                                }],
                                MV: [{
                                    MVP: {
                                        _from: "1947-01-01",
                                        _to: "1981-07-01"
                                    }
                                }, {
                                    MVR: {
                                        _from: "1981-07-01"
                                    }
                                }],
                                MW: [{
                                    MWK: {
                                        _from: "1971-02-15"
                                    }
                                }],
                                MX: [{
                                    MXV: {
                                        _tender: "false"
                                    }
                                }, {
                                    MXP: {
                                        _from: "1822-01-01",
                                        _to: "1992-12-31"
                                    }
                                }, {
                                    MXN: {
                                        _from: "1993-01-01"
                                    }
                                }],
                                MY: [{
                                    MYR: {
                                        _from: "1963-09-16"
                                    }
                                }],
                                MZ: [{
                                    MZE: {
                                        _from: "1975-06-25",
                                        _to: "1980-06-16"
                                    }
                                }, {
                                    MZM: {
                                        _from: "1980-06-16",
                                        _to: "2006-12-31"
                                    }
                                }, {
                                    MZN: {
                                        _from: "2006-07-01"
                                    }
                                }],
                                NA: [{
                                    ZAR: {
                                        _from: "1961-02-14"
                                    }
                                }, {
                                    NAD: {
                                        _from: "1993-01-01"
                                    }
                                }],
                                NC: [{
                                    XPF: {
                                        _from: "1985-01-01"
                                    }
                                }],
                                NE: [{
                                    XOF: {
                                        _from: "1958-12-19"
                                    }
                                }],
                                NF: [{
                                    AUD: {
                                        _from: "1966-02-14"
                                    }
                                }],
                                NG: [{
                                    NGN: {
                                        _from: "1973-01-01"
                                    }
                                }],
                                NI: [{
                                    NIC: {
                                        _from: "1988-02-15",
                                        _to: "1991-04-30"
                                    }
                                }, {
                                    NIO: {
                                        _from: "1991-04-30"
                                    }
                                }],
                                NL: [{
                                    NLG: {
                                        _from: "1813-01-01",
                                        _to: "2002-02-28"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                NO: [{
                                    SEK: {
                                        _from: "1873-05-27",
                                        _to: "1905-06-07"
                                    }
                                }, {
                                    NOK: {
                                        _from: "1905-06-07"
                                    }
                                }],
                                NP: [{
                                    INR: {
                                        _from: "1870-01-01",
                                        _to: "1966-10-17"
                                    }
                                }, {
                                    NPR: {
                                        _from: "1933-01-01"
                                    }
                                }],
                                NR: [{
                                    AUD: {
                                        _from: "1966-02-14"
                                    }
                                }],
                                NU: [{
                                    NZD: {
                                        _from: "1967-07-10"
                                    }
                                }],
                                NZ: [{
                                    NZD: {
                                        _from: "1967-07-10"
                                    }
                                }],
                                OM: [{
                                    OMR: {
                                        _from: "1972-11-11"
                                    }
                                }],
                                PA: [{
                                    PAB: {
                                        _from: "1903-11-04"
                                    }
                                }, {
                                    USD: {
                                        _from: "1903-11-18"
                                    }
                                }],
                                PE: [{
                                    PES: {
                                        _from: "1863-02-14",
                                        _to: "1985-02-01"
                                    }
                                }, {
                                    PEI: {
                                        _from: "1985-02-01",
                                        _to: "1991-07-01"
                                    }
                                }, {
                                    PEN: {
                                        _from: "1991-07-01"
                                    }
                                }],
                                PF: [{
                                    XPF: {
                                        _from: "1945-12-26"
                                    }
                                }],
                                PG: [{
                                    AUD: {
                                        _from: "1966-02-14",
                                        _to: "1975-09-16"
                                    }
                                }, {
                                    PGK: {
                                        _from: "1975-09-16"
                                    }
                                }],
                                PH: [{
                                    PHP: {
                                        _from: "1946-07-04"
                                    }
                                }],
                                PK: [{
                                    INR: {
                                        _from: "1835-08-17",
                                        _to: "1947-08-15"
                                    }
                                }, {
                                    PKR: {
                                        _from: "1948-04-01"
                                    }
                                }],
                                PL: [{
                                    PLZ: {
                                        _from: "1950-10-28",
                                        _to: "1994-12-31"
                                    }
                                }, {
                                    PLN: {
                                        _from: "1995-01-01"
                                    }
                                }],
                                PM: [{
                                    FRF: {
                                        _from: "1972-12-21",
                                        _to: "2002-02-17"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                PN: [{
                                    NZD: {
                                        _from: "1969-01-13"
                                    }
                                }],
                                PR: [{
                                    ESP: {
                                        _from: "1800-01-01",
                                        _to: "1898-12-10"
                                    }
                                }, {
                                    USD: {
                                        _from: "1898-12-10"
                                    }
                                }],
                                PS: [{
                                    JOD: {
                                        _from: "1950-07-01",
                                        _to: "1967-06-01"
                                    }
                                }, {
                                    ILP: {
                                        _from: "1967-06-01",
                                        _to: "1980-02-22"
                                    }
                                }, {
                                    ILS: {
                                        _from: "1985-09-04"
                                    }
                                }, {
                                    JOD: {
                                        _from: "1996-02-12"
                                    }
                                }],
                                PT: [{
                                    PTE: {
                                        _from: "1911-05-22",
                                        _to: "2002-02-28"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                PW: [{
                                    USD: {
                                        _from: "1944-01-01"
                                    }
                                }],
                                PY: [{
                                    PYG: {
                                        _from: "1943-11-01"
                                    }
                                }],
                                QA: [{
                                    QAR: {
                                        _from: "1973-05-19"
                                    }
                                }],
                                RE: [{
                                    FRF: {
                                        _from: "1975-01-01",
                                        _to: "2002-02-17"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                RO: [{
                                    ROL: {
                                        _from: "1952-01-28",
                                        _to: "2006-12-31"
                                    }
                                }, {
                                    RON: {
                                        _from: "2005-07-01"
                                    }
                                }],
                                RS: [{
                                    YUM: {
                                        _from: "1994-01-24",
                                        _to: "2002-05-15"
                                    }
                                }, {
                                    CSD: {
                                        _from: "2002-05-15",
                                        _to: "2006-10-25"
                                    }
                                }, {
                                    RSD: {
                                        _from: "2006-10-25"
                                    }
                                }],
                                RU: [{
                                    RUR: {
                                        _from: "1991-12-25",
                                        _to: "1998-12-31"
                                    }
                                }, {
                                    RUB: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                RW: [{
                                    RWF: {
                                        _from: "1964-05-19"
                                    }
                                }],
                                SA: [{
                                    SAR: {
                                        _from: "1952-10-22"
                                    }
                                }],
                                SB: [{
                                    AUD: {
                                        _from: "1966-02-14",
                                        _to: "1978-06-30"
                                    }
                                }, {
                                    SBD: {
                                        _from: "1977-10-24"
                                    }
                                }],
                                SC: [{
                                    SCR: {
                                        _from: "1903-11-01"
                                    }
                                }],
                                SD: [{
                                    EGP: {
                                        _from: "1889-01-19",
                                        _to: "1958-01-01"
                                    }
                                }, {
                                    GBP: {
                                        _from: "1889-01-19",
                                        _to: "1958-01-01"
                                    }
                                }, {
                                    SDP: {
                                        _from: "1957-04-08",
                                        _to: "1998-06-01"
                                    }
                                }, {
                                    SDD: {
                                        _from: "1992-06-08",
                                        _to: "2007-06-30"
                                    }
                                }, {
                                    SDG: {
                                        _from: "2007-01-10"
                                    }
                                }],
                                SE: [{
                                    SEK: {
                                        _from: "1873-05-27"
                                    }
                                }],
                                SG: [{
                                    MYR: {
                                        _from: "1963-09-16",
                                        _to: "1967-06-12"
                                    }
                                }, {
                                    SGD: {
                                        _from: "1967-06-12"
                                    }
                                }],
                                SH: [{
                                    SHP: {
                                        _from: "1917-02-15"
                                    }
                                }],
                                SI: [{
                                    SIT: {
                                        _from: "1992-10-07",
                                        _to: "2007-01-14"
                                    }
                                }, {
                                    EUR: {
                                        _from: "2007-01-01"
                                    }
                                }],
                                SJ: [{
                                    NOK: {
                                        _from: "1905-06-07"
                                    }
                                }],
                                SK: [{
                                    CSK: {
                                        _from: "1953-06-01",
                                        _to: "1992-12-31"
                                    }
                                }, {
                                    SKK: {
                                        _from: "1992-12-31",
                                        _to: "2009-01-01"
                                    }
                                }, {
                                    EUR: {
                                        _from: "2009-01-01"
                                    }
                                }],
                                SL: [{
                                    GBP: {
                                        _from: "1808-11-30",
                                        _to: "1966-02-04"
                                    }
                                }, {
                                    SLL: {
                                        _from: "1964-08-04"
                                    }
                                }],
                                SM: [{
                                    ITL: {
                                        _from: "1865-12-23",
                                        _to: "2001-02-28"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                SN: [{
                                    XOF: {
                                        _from: "1959-04-04"
                                    }
                                }],
                                SO: [{
                                    SOS: {
                                        _from: "1960-07-01"
                                    }
                                }],
                                SR: [{
                                    NLG: {
                                        _from: "1815-11-20",
                                        _to: "1940-05-10"
                                    }
                                }, {
                                    SRG: {
                                        _from: "1940-05-10",
                                        _to: "2003-12-31"
                                    }
                                }, {
                                    SRD: {
                                        _from: "2004-01-01"
                                    }
                                }],
                                SS: [{
                                    SDG: {
                                        _from: "2007-01-10",
                                        _to: "2011-09-01"
                                    }
                                }, {
                                    SSP: {
                                        _from: "2011-07-18"
                                    }
                                }],
                                ST: [{
                                    STD: {
                                        _from: "1977-09-08",
                                        _to: "2017-12-31"
                                    }
                                }, {
                                    STN: {
                                        _from: "2018-01-01"
                                    }
                                }],
                                SU: [{
                                    SUR: {
                                        _from: "1961-01-01",
                                        _to: "1991-12-25"
                                    }
                                }],
                                SV: [{
                                    SVC: {
                                        _from: "1919-11-11",
                                        _to: "2001-01-01"
                                    }
                                }, {
                                    USD: {
                                        _from: "2001-01-01"
                                    }
                                }],
                                SX: [{
                                    ANG: {
                                        _from: "2010-10-10"
                                    }
                                }],
                                SY: [{
                                    SYP: {
                                        _from: "1948-01-01"
                                    }
                                }],
                                SZ: [{
                                    SZL: {
                                        _from: "1974-09-06"
                                    }
                                }],
                                TA: [{
                                    GBP: {
                                        _from: "1938-01-12"
                                    }
                                }],
                                TC: [{
                                    USD: {
                                        _from: "1969-09-08"
                                    }
                                }],
                                TD: [{
                                    XAF: {
                                        _from: "1993-01-01"
                                    }
                                }],
                                TF: [{
                                    FRF: {
                                        _from: "1959-01-01",
                                        _to: "2002-02-17"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                TG: [{
                                    XOF: {
                                        _from: "1958-11-28"
                                    }
                                }],
                                TH: [{
                                    THB: {
                                        _from: "1928-04-15"
                                    }
                                }],
                                TJ: [{
                                    RUR: {
                                        _from: "1991-12-25",
                                        _to: "1995-05-10"
                                    }
                                }, {
                                    TJR: {
                                        _from: "1995-05-10",
                                        _to: "2000-10-25"
                                    }
                                }, {
                                    TJS: {
                                        _from: "2000-10-26"
                                    }
                                }],
                                TK: [{
                                    NZD: {
                                        _from: "1967-07-10"
                                    }
                                }],
                                TL: [{
                                    TPE: {
                                        _from: "1959-01-02",
                                        _to: "2002-05-20"
                                    }
                                }, {
                                    IDR: {
                                        _from: "1975-12-07",
                                        _to: "2002-05-20"
                                    }
                                }, {
                                    USD: {
                                        _from: "1999-10-20"
                                    }
                                }],
                                TM: [{
                                    SUR: {
                                        _from: "1961-01-01",
                                        _to: "1991-12-25"
                                    }
                                }, {
                                    RUR: {
                                        _from: "1991-12-25",
                                        _to: "1993-11-01"
                                    }
                                }, {
                                    TMM: {
                                        _from: "1993-11-01",
                                        _to: "2009-01-01"
                                    }
                                }, {
                                    TMT: {
                                        _from: "2009-01-01"
                                    }
                                }],
                                TN: [{
                                    TND: {
                                        _from: "1958-11-01"
                                    }
                                }],
                                TO: [{
                                    TOP: {
                                        _from: "1966-02-14"
                                    }
                                }],
                                TP: [{
                                    TPE: {
                                        _from: "1959-01-02",
                                        _to: "2002-05-20"
                                    }
                                }, {
                                    IDR: {
                                        _from: "1975-12-07",
                                        _to: "2002-05-20"
                                    }
                                }],
                                TR: [{
                                    TRL: {
                                        _from: "1922-11-01",
                                        _to: "2005-12-31"
                                    }
                                }, {
                                    TRY: {
                                        _from: "2005-01-01"
                                    }
                                }],
                                TT: [{
                                    TTD: {
                                        _from: "1964-01-01"
                                    }
                                }],
                                TV: [{
                                    AUD: {
                                        _from: "1966-02-14"
                                    }
                                }],
                                TW: [{
                                    TWD: {
                                        _from: "1949-06-15"
                                    }
                                }],
                                TZ: [{
                                    TZS: {
                                        _from: "1966-06-14"
                                    }
                                }],
                                UA: [{
                                    SUR: {
                                        _from: "1961-01-01",
                                        _to: "1991-12-25"
                                    }
                                }, {
                                    RUR: {
                                        _from: "1991-12-25",
                                        _to: "1992-11-13"
                                    }
                                }, {
                                    UAK: {
                                        _from: "1992-11-13",
                                        _to: "1993-10-17"
                                    }
                                }, {
                                    UAH: {
                                        _from: "1996-09-02"
                                    }
                                }],
                                UG: [{
                                    UGS: {
                                        _from: "1966-08-15",
                                        _to: "1987-05-15"
                                    }
                                }, {
                                    UGX: {
                                        _from: "1987-05-15"
                                    }
                                }],
                                UM: [{
                                    USD: {
                                        _from: "1944-01-01"
                                    }
                                }],
                                US: [{
                                    USN: {
                                        _tender: "false"
                                    }
                                }, {
                                    USS: {
                                        _tender: "false",
                                        _to: "2014-03-01"
                                    }
                                }, {
                                    USD: {
                                        _from: "1792-01-01"
                                    }
                                }],
                                UY: [{
                                    UYI: {
                                        _tender: "false"
                                    }
                                }, {
                                    UYW: {
                                        _tender: "false"
                                    }
                                }, {
                                    UYP: {
                                        _from: "1975-07-01",
                                        _to: "1993-03-01"
                                    }
                                }, {
                                    UYU: {
                                        _from: "1993-03-01"
                                    }
                                }],
                                UZ: [{
                                    UZS: {
                                        _from: "1994-07-01"
                                    }
                                }],
                                VA: [{
                                    ITL: {
                                        _from: "1870-10-19",
                                        _to: "2002-02-28"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                VC: [{
                                    XCD: {
                                        _from: "1965-10-06"
                                    }
                                }],
                                VE: [{
                                    VEB: {
                                        _from: "1871-05-11",
                                        _to: "2008-06-30"
                                    }
                                }, {
                                    VEF: {
                                        _from: "2008-01-01",
                                        _to: "2018-08-20"
                                    }
                                }, {
                                    VES: {
                                        _from: "2018-08-20"
                                    }
                                }],
                                VG: [{
                                    USD: {
                                        _from: "1833-01-01"
                                    }
                                }, {
                                    GBP: {
                                        _from: "1833-01-01",
                                        _to: "1959-01-01"
                                    }
                                }],
                                VI: [{
                                    USD: {
                                        _from: "1837-01-01"
                                    }
                                }],
                                VN: [{
                                    VNN: {
                                        _from: "1978-05-03",
                                        _to: "1985-09-14"
                                    }
                                }, {
                                    VND: {
                                        _from: "1985-09-14"
                                    }
                                }],
                                VU: [{
                                    VUV: {
                                        _from: "1981-01-01"
                                    }
                                }],
                                WF: [{
                                    XPF: {
                                        _from: "1961-07-30"
                                    }
                                }],
                                WS: [{
                                    WST: {
                                        _from: "1967-07-10"
                                    }
                                }],
                                XK: [{
                                    YUM: {
                                        _from: "1994-01-24",
                                        _to: "1999-09-30"
                                    }
                                }, {
                                    DEM: {
                                        _from: "1999-09-01",
                                        _to: "2002-03-09"
                                    }
                                }, {
                                    EUR: {
                                        _from: "2002-01-01"
                                    }
                                }],
                                YD: [{
                                    YDD: {
                                        _from: "1965-04-01",
                                        _to: "1996-01-01"
                                    }
                                }],
                                YE: [{
                                    YER: {
                                        _from: "1990-05-22"
                                    }
                                }],
                                YT: [{
                                    KMF: {
                                        _from: "1975-01-01",
                                        _to: "1976-02-23"
                                    }
                                }, {
                                    FRF: {
                                        _from: "1976-02-23",
                                        _to: "2002-02-17"
                                    }
                                }, {
                                    EUR: {
                                        _from: "1999-01-01"
                                    }
                                }],
                                YU: [{
                                    YUD: {
                                        _from: "1966-01-01",
                                        _to: "1990-01-01"
                                    }
                                }, {
                                    YUN: {
                                        _from: "1990-01-01",
                                        _to: "1992-07-24"
                                    }
                                }, {
                                    YUM: {
                                        _from: "1994-01-24",
                                        _to: "2002-05-15"
                                    }
                                }],
                                ZA: [{
                                    ZAR: {
                                        _from: "1961-02-14"
                                    }
                                }, {
                                    ZAL: {
                                        _tender: "false",
                                        _from: "1985-09-01",
                                        _to: "1995-03-13"
                                    }
                                }],
                                ZM: [{
                                    ZMK: {
                                        _from: "1968-01-16",
                                        _to: "2013-01-01"
                                    }
                                }, {
                                    ZMW: {
                                        _from: "2013-01-01"
                                    }
                                }],
                                ZR: [{
                                    ZRZ: {
                                        _from: "1971-10-27",
                                        _to: "1993-11-01"
                                    }
                                }, {
                                    ZRN: {
                                        _from: "1993-11-01",
                                        _to: "1998-07-31"
                                    }
                                }],
                                ZW: [{
                                    RHD: {
                                        _from: "1970-02-17",
                                        _to: "1980-04-18"
                                    }
                                }, {
                                    ZWD: {
                                        _from: "1980-04-18",
                                        _to: "2008-08-01"
                                    }
                                }, {
                                    ZWR: {
                                        _from: "2008-08-01",
                                        _to: "2009-02-02"
                                    }
                                }, {
                                    ZWL: {
                                        _from: "2009-02-02",
                                        _to: "2009-04-12"
                                    }
                                }, {
                                    USD: {
                                        _from: "2009-04-12"
                                    }
                                }],
                                ZZ: [{
                                    XAG: {
                                        _tender: "false"
                                    }
                                }, {
                                    XAU: {
                                        _tender: "false"
                                    }
                                }, {
                                    XBA: {
                                        _tender: "false"
                                    }
                                }, {
                                    XBB: {
                                        _tender: "false"
                                    }
                                }, {
                                    XBC: {
                                        _tender: "false"
                                    }
                                }, {
                                    XBD: {
                                        _tender: "false"
                                    }
                                }, {
                                    XDR: {
                                        _tender: "false"
                                    }
                                }, {
                                    XPD: {
                                        _tender: "false"
                                    }
                                }, {
                                    XPT: {
                                        _tender: "false"
                                    }
                                }, {
                                    XSU: {
                                        _tender: "false"
                                    }
                                }, {
                                    XTS: {
                                        _tender: "false"
                                    }
                                }, {
                                    XUA: {
                                        _tender: "false"
                                    }
                                }, {
                                    XXX: {
                                        _tender: "false"
                                    }
                                }, {
                                    XRE: {
                                        _tender: "false",
                                        _to: "1999-11-30"
                                    }
                                }, {
                                    XFU: {
                                        _tender: "false",
                                        _to: "2013-11-30"
                                    }
                                }, {
                                    XFO: {
                                        _tender: "false",
                                        _from: "1930-01-01",
                                        _to: "2003-04-01"
                                    }
                                }]
                            }
                        },
                        numberingSystems: {
                            adlm: {
                                _digits: "\ud83a\udd50\ud83a\udd51\ud83a\udd52\ud83a\udd53\ud83a\udd54\ud83a\udd55\ud83a\udd56\ud83a\udd57\ud83a\udd58\ud83a\udd59",
                                _type: "numeric"
                            },
                            ahom: {
                                _digits: "\ud805\udf30\ud805\udf31\ud805\udf32\ud805\udf33\ud805\udf34\ud805\udf35\ud805\udf36\ud805\udf37\ud805\udf38\ud805\udf39",
                                _type: "numeric"
                            },
                            arab: {
                                _digits: "\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669",
                                _type: "numeric"
                            },
                            arabext: {
                                _digits: "\u06f0\u06f1\u06f2\u06f3\u06f4\u06f5\u06f6\u06f7\u06f8\u06f9",
                                _type: "numeric"
                            },
                            armn: {
                                _rules: "armenian-upper",
                                _type: "algorithmic"
                            },
                            armnlow: {
                                _rules: "armenian-lower",
                                _type: "algorithmic"
                            },
                            bali: {
                                _digits: "\u1b50\u1b51\u1b52\u1b53\u1b54\u1b55\u1b56\u1b57\u1b58\u1b59",
                                _type: "numeric"
                            },
                            beng: {
                                _digits: "\u09e6\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef",
                                _type: "numeric"
                            },
                            bhks: {
                                _digits: "\ud807\udc50\ud807\udc51\ud807\udc52\ud807\udc53\ud807\udc54\ud807\udc55\ud807\udc56\ud807\udc57\ud807\udc58\ud807\udc59",
                                _type: "numeric"
                            },
                            brah: {
                                _digits: "\ud804\udc66\ud804\udc67\ud804\udc68\ud804\udc69\ud804\udc6a\ud804\udc6b\ud804\udc6c\ud804\udc6d\ud804\udc6e\ud804\udc6f",
                                _type: "numeric"
                            },
                            cakm: {
                                _digits: "\ud804\udd36\ud804\udd37\ud804\udd38\ud804\udd39\ud804\udd3a\ud804\udd3b\ud804\udd3c\ud804\udd3d\ud804\udd3e\ud804\udd3f",
                                _type: "numeric"
                            },
                            cham: {
                                _digits: "\uaa50\uaa51\uaa52\uaa53\uaa54\uaa55\uaa56\uaa57\uaa58\uaa59",
                                _type: "numeric"
                            },
                            cyrl: {
                                _rules: "cyrillic-lower",
                                _type: "algorithmic"
                            },
                            deva: {
                                _digits: "\u0966\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f",
                                _type: "numeric"
                            },
                            ethi: {
                                _rules: "ethiopic",
                                _type: "algorithmic"
                            },
                            fullwide: {
                                _digits: "\uff10\uff11\uff12\uff13\uff14\uff15\uff16\uff17\uff18\uff19",
                                _type: "numeric"
                            },
                            geor: {
                                _rules: "georgian",
                                _type: "algorithmic"
                            },
                            gong: {
                                _digits: "\ud807\udda0\ud807\udda1\ud807\udda2\ud807\udda3\ud807\udda4\ud807\udda5\ud807\udda6\ud807\udda7\ud807\udda8\ud807\udda9",
                                _type: "numeric"
                            },
                            gonm: {
                                _digits: "\ud807\udd50\ud807\udd51\ud807\udd52\ud807\udd53\ud807\udd54\ud807\udd55\ud807\udd56\ud807\udd57\ud807\udd58\ud807\udd59",
                                _type: "numeric"
                            },
                            grek: {
                                _rules: "greek-upper",
                                _type: "algorithmic"
                            },
                            greklow: {
                                _rules: "greek-lower",
                                _type: "algorithmic"
                            },
                            gujr: {
                                _digits: "\u0ae6\u0ae7\u0ae8\u0ae9\u0aea\u0aeb\u0aec\u0aed\u0aee\u0aef",
                                _type: "numeric"
                            },
                            guru: {
                                _digits: "\u0a66\u0a67\u0a68\u0a69\u0a6a\u0a6b\u0a6c\u0a6d\u0a6e\u0a6f",
                                _type: "numeric"
                            },
                            hanidays: {
                                _rules: "zh/SpelloutRules/spellout-numbering-days",
                                _type: "algorithmic"
                            },
                            hanidec: {
                                _digits: "\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d",
                                _type: "numeric"
                            },
                            hans: {
                                _rules: "zh/SpelloutRules/spellout-cardinal",
                                _type: "algorithmic"
                            },
                            hansfin: {
                                _rules: "zh/SpelloutRules/spellout-cardinal-financial",
                                _type: "algorithmic"
                            },
                            hant: {
                                _rules: "zh_Hant/SpelloutRules/spellout-cardinal",
                                _type: "algorithmic"
                            },
                            hantfin: {
                                _rules: "zh_Hant/SpelloutRules/spellout-cardinal-financial",
                                _type: "algorithmic"
                            },
                            hebr: {
                                _rules: "hebrew",
                                _type: "algorithmic"
                            },
                            hmng: {
                                _digits: "\ud81a\udf50\ud81a\udf51\ud81a\udf52\ud81a\udf53\ud81a\udf54\ud81a\udf55\ud81a\udf56\ud81a\udf57\ud81a\udf58\ud81a\udf59",
                                _type: "numeric"
                            },
                            hmnp: {
                                _digits: "\ud838\udd40\ud838\udd41\ud838\udd42\ud838\udd43\ud838\udd44\ud838\udd45\ud838\udd46\ud838\udd47\ud838\udd48\ud838\udd49",
                                _type: "numeric"
                            },
                            java: {
                                _digits: "\ua9d0\ua9d1\ua9d2\ua9d3\ua9d4\ua9d5\ua9d6\ua9d7\ua9d8\ua9d9",
                                _type: "numeric"
                            },
                            jpan: {
                                _rules: "ja/SpelloutRules/spellout-cardinal",
                                _type: "algorithmic"
                            },
                            jpanfin: {
                                _rules: "ja/SpelloutRules/spellout-cardinal-financial",
                                _type: "algorithmic"
                            },
                            jpanyear: {
                                _rules: "ja/SpelloutRules/spellout-numbering-year-latn",
                                _type: "algorithmic"
                            },
                            kali: {
                                _digits: "\ua900\ua901\ua902\ua903\ua904\ua905\ua906\ua907\ua908\ua909",
                                _type: "numeric"
                            },
                            khmr: {
                                _digits: "\u17e0\u17e1\u17e2\u17e3\u17e4\u17e5\u17e6\u17e7\u17e8\u17e9",
                                _type: "numeric"
                            },
                            knda: {
                                _digits: "\u0ce6\u0ce7\u0ce8\u0ce9\u0cea\u0ceb\u0cec\u0ced\u0cee\u0cef",
                                _type: "numeric"
                            },
                            lana: {
                                _digits: "\u1a80\u1a81\u1a82\u1a83\u1a84\u1a85\u1a86\u1a87\u1a88\u1a89",
                                _type: "numeric"
                            },
                            lanatham: {
                                _digits: "\u1a90\u1a91\u1a92\u1a93\u1a94\u1a95\u1a96\u1a97\u1a98\u1a99",
                                _type: "numeric"
                            },
                            laoo: {
                                _digits: "\u0ed0\u0ed1\u0ed2\u0ed3\u0ed4\u0ed5\u0ed6\u0ed7\u0ed8\u0ed9",
                                _type: "numeric"
                            },
                            latn: {
                                _digits: "0123456789",
                                _type: "numeric"
                            },
                            lepc: {
                                _digits: "\u1c40\u1c41\u1c42\u1c43\u1c44\u1c45\u1c46\u1c47\u1c48\u1c49",
                                _type: "numeric"
                            },
                            limb: {
                                _digits: "\u1946\u1947\u1948\u1949\u194a\u194b\u194c\u194d\u194e\u194f",
                                _type: "numeric"
                            },
                            mathbold: {
                                _digits: "\ud835\udfce\ud835\udfcf\ud835\udfd0\ud835\udfd1\ud835\udfd2\ud835\udfd3\ud835\udfd4\ud835\udfd5\ud835\udfd6\ud835\udfd7",
                                _type: "numeric"
                            },
                            mathdbl: {
                                _digits: "\ud835\udfd8\ud835\udfd9\ud835\udfda\ud835\udfdb\ud835\udfdc\ud835\udfdd\ud835\udfde\ud835\udfdf\ud835\udfe0\ud835\udfe1",
                                _type: "numeric"
                            },
                            mathmono: {
                                _digits: "\ud835\udff6\ud835\udff7\ud835\udff8\ud835\udff9\ud835\udffa\ud835\udffb\ud835\udffc\ud835\udffd\ud835\udffe\ud835\udfff",
                                _type: "numeric"
                            },
                            mathsanb: {
                                _digits: "\ud835\udfec\ud835\udfed\ud835\udfee\ud835\udfef\ud835\udff0\ud835\udff1\ud835\udff2\ud835\udff3\ud835\udff4\ud835\udff5",
                                _type: "numeric"
                            },
                            mathsans: {
                                _digits: "\ud835\udfe2\ud835\udfe3\ud835\udfe4\ud835\udfe5\ud835\udfe6\ud835\udfe7\ud835\udfe8\ud835\udfe9\ud835\udfea\ud835\udfeb",
                                _type: "numeric"
                            },
                            mlym: {
                                _digits: "\u0d66\u0d67\u0d68\u0d69\u0d6a\u0d6b\u0d6c\u0d6d\u0d6e\u0d6f",
                                _type: "numeric"
                            },
                            modi: {
                                _digits: "\ud805\ude50\ud805\ude51\ud805\ude52\ud805\ude53\ud805\ude54\ud805\ude55\ud805\ude56\ud805\ude57\ud805\ude58\ud805\ude59",
                                _type: "numeric"
                            },
                            mong: {
                                _digits: "\u1810\u1811\u1812\u1813\u1814\u1815\u1816\u1817\u1818\u1819",
                                _type: "numeric"
                            },
                            mroo: {
                                _digits: "\ud81a\ude60\ud81a\ude61\ud81a\ude62\ud81a\ude63\ud81a\ude64\ud81a\ude65\ud81a\ude66\ud81a\ude67\ud81a\ude68\ud81a\ude69",
                                _type: "numeric"
                            },
                            mtei: {
                                _digits: "\uabf0\uabf1\uabf2\uabf3\uabf4\uabf5\uabf6\uabf7\uabf8\uabf9",
                                _type: "numeric"
                            },
                            mymr: {
                                _digits: "\u1040\u1041\u1042\u1043\u1044\u1045\u1046\u1047\u1048\u1049",
                                _type: "numeric"
                            },
                            mymrshan: {
                                _digits: "\u1090\u1091\u1092\u1093\u1094\u1095\u1096\u1097\u1098\u1099",
                                _type: "numeric"
                            },
                            mymrtlng: {
                                _digits: "\ua9f0\ua9f1\ua9f2\ua9f3\ua9f4\ua9f5\ua9f6\ua9f7\ua9f8\ua9f9",
                                _type: "numeric"
                            },
                            newa: {
                                _digits: "\ud805\udc50\ud805\udc51\ud805\udc52\ud805\udc53\ud805\udc54\ud805\udc55\ud805\udc56\ud805\udc57\ud805\udc58\ud805\udc59",
                                _type: "numeric"
                            },
                            nkoo: {
                                _digits: "\u07c0\u07c1\u07c2\u07c3\u07c4\u07c5\u07c6\u07c7\u07c8\u07c9",
                                _type: "numeric"
                            },
                            olck: {
                                _digits: "\u1c50\u1c51\u1c52\u1c53\u1c54\u1c55\u1c56\u1c57\u1c58\u1c59",
                                _type: "numeric"
                            },
                            orya: {
                                _digits: "\u0b66\u0b67\u0b68\u0b69\u0b6a\u0b6b\u0b6c\u0b6d\u0b6e\u0b6f",
                                _type: "numeric"
                            },
                            osma: {
                                _digits: "\ud801\udca0\ud801\udca1\ud801\udca2\ud801\udca3\ud801\udca4\ud801\udca5\ud801\udca6\ud801\udca7\ud801\udca8\ud801\udca9",
                                _type: "numeric"
                            },
                            rohg: {
                                _digits: "\ud803\udd30\ud803\udd31\ud803\udd32\ud803\udd33\ud803\udd34\ud803\udd35\ud803\udd36\ud803\udd37\ud803\udd38\ud803\udd39",
                                _type: "numeric"
                            },
                            roman: {
                                _rules: "roman-upper",
                                _type: "algorithmic"
                            },
                            romanlow: {
                                _rules: "roman-lower",
                                _type: "algorithmic"
                            },
                            saur: {
                                _digits: "\ua8d0\ua8d1\ua8d2\ua8d3\ua8d4\ua8d5\ua8d6\ua8d7\ua8d8\ua8d9",
                                _type: "numeric"
                            },
                            shrd: {
                                _digits: "\ud804\uddd0\ud804\uddd1\ud804\uddd2\ud804\uddd3\ud804\uddd4\ud804\uddd5\ud804\uddd6\ud804\uddd7\ud804\uddd8\ud804\uddd9",
                                _type: "numeric"
                            },
                            sind: {
                                _digits: "\ud804\udef0\ud804\udef1\ud804\udef2\ud804\udef3\ud804\udef4\ud804\udef5\ud804\udef6\ud804\udef7\ud804\udef8\ud804\udef9",
                                _type: "numeric"
                            },
                            sinh: {
                                _digits: "\u0de6\u0de7\u0de8\u0de9\u0dea\u0deb\u0dec\u0ded\u0dee\u0def",
                                _type: "numeric"
                            },
                            sora: {
                                _digits: "\ud804\udcf0\ud804\udcf1\ud804\udcf2\ud804\udcf3\ud804\udcf4\ud804\udcf5\ud804\udcf6\ud804\udcf7\ud804\udcf8\ud804\udcf9",
                                _type: "numeric"
                            },
                            sund: {
                                _digits: "\u1bb0\u1bb1\u1bb2\u1bb3\u1bb4\u1bb5\u1bb6\u1bb7\u1bb8\u1bb9",
                                _type: "numeric"
                            },
                            takr: {
                                _digits: "\ud805\udec0\ud805\udec1\ud805\udec2\ud805\udec3\ud805\udec4\ud805\udec5\ud805\udec6\ud805\udec7\ud805\udec8\ud805\udec9",
                                _type: "numeric"
                            },
                            talu: {
                                _digits: "\u19d0\u19d1\u19d2\u19d3\u19d4\u19d5\u19d6\u19d7\u19d8\u19d9",
                                _type: "numeric"
                            },
                            taml: {
                                _rules: "tamil",
                                _type: "algorithmic"
                            },
                            tamldec: {
                                _digits: "\u0be6\u0be7\u0be8\u0be9\u0bea\u0beb\u0bec\u0bed\u0bee\u0bef",
                                _type: "numeric"
                            },
                            telu: {
                                _digits: "\u0c66\u0c67\u0c68\u0c69\u0c6a\u0c6b\u0c6c\u0c6d\u0c6e\u0c6f",
                                _type: "numeric"
                            },
                            thai: {
                                _digits: "\u0e50\u0e51\u0e52\u0e53\u0e54\u0e55\u0e56\u0e57\u0e58\u0e59",
                                _type: "numeric"
                            },
                            tibt: {
                                _digits: "\u0f20\u0f21\u0f22\u0f23\u0f24\u0f25\u0f26\u0f27\u0f28\u0f29",
                                _type: "numeric"
                            },
                            tirh: {
                                _digits: "\ud805\udcd0\ud805\udcd1\ud805\udcd2\ud805\udcd3\ud805\udcd4\ud805\udcd5\ud805\udcd6\ud805\udcd7\ud805\udcd8\ud805\udcd9",
                                _type: "numeric"
                            },
                            vaii: {
                                _digits: "\ua620\ua621\ua622\ua623\ua624\ua625\ua626\ua627\ua628\ua629",
                                _type: "numeric"
                            },
                            wara: {
                                _digits: "\ud806\udce0\ud806\udce1\ud806\udce2\ud806\udce3\ud806\udce4\ud806\udce5\ud806\udce6\ud806\udce7\ud806\udce8\ud806\udce9",
                                _type: "numeric"
                            },
                            wcho: {
                                _digits: "\ud838\udef0\ud838\udef1\ud838\udef2\ud838\udef3\ud838\udef4\ud838\udef5\ud838\udef6\ud838\udef7\ud838\udef8\ud838\udef9",
                                _type: "numeric"
                            }
                        }
                    }
                }
            },
        91331:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/core.js ***!
              \******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _dependency_injector = _interopRequireDefault(__webpack_require__( /*! ../core/utils/dependency_injector */ 20476));
                var _parent_locales = _interopRequireDefault(__webpack_require__( /*! ./cldr-data/parent_locales */ 73806));
                var _parentLocale = _interopRequireDefault(__webpack_require__( /*! ./parentLocale */ 49198));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                var _default = (0, _dependency_injector.default)({
                    locale: (() => {
                        let currentLocale = "en";
                        return locale => {
                            if (!locale) {
                                return currentLocale
                            }
                            currentLocale = locale
                        }
                    })(),
                    getValueByClosestLocale: function(getter) {
                        let locale = this.locale();
                        let value = getter(locale);
                        let isRootLocale;
                        while (!value && !isRootLocale) {
                            locale = (0, _parentLocale.default)(_parent_locales.default, locale);
                            if (locale) {
                                value = getter(locale)
                            } else {
                                isRootLocale = true
                            }
                        }
                        if (void 0 === value && "en" !== locale) {
                            return getter("en")
                        }
                        return value
                    }
                });
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        89740:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/currency.js ***!
              \**********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _default = {
                    _formatNumberCore: function(value, format, formatConfig) {
                        if ("currency" === format) {
                            formatConfig.precision = formatConfig.precision || 0;
                            let result = this.format(value, (0, _extend.extend)({}, formatConfig, {
                                type: "fixedpoint"
                            }));
                            const currencyPart = this.getCurrencySymbol().symbol.replace(/\$/g, "$$$$");
                            result = result.replace(/^(\D*)(\d.*)/, "$1" + currencyPart + "$2");
                            return result
                        }
                        return this.callBase.apply(this, arguments)
                    },
                    getCurrencySymbol: function() {
                        return {
                            symbol: "$"
                        }
                    },
                    getOpenXmlCurrencyFormat: function() {
                        return "$#,##0{0}_);\\($#,##0{0}\\)"
                    }
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        91500:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/date.js ***!
              \******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _dependency_injector = _interopRequireDefault(__webpack_require__( /*! ../core/utils/dependency_injector */ 20476));
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../core/errors */ 17381));
                var _date = __webpack_require__( /*! ./ldml/date.formatter */ 40594);
                var _date2 = __webpack_require__( /*! ./ldml/date.format */ 59937);
                var _date3 = __webpack_require__( /*! ./ldml/date.parser */ 2892);
                var _default_date_names = _interopRequireDefault(__webpack_require__( /*! ./default_date_names */ 15564));
                var _first_day_of_week_data = _interopRequireDefault(__webpack_require__( /*! ./cldr-data/first_day_of_week_data */ 92286));
                var _core = _interopRequireDefault(__webpack_require__( /*! ./core */ 91331));
                var _number = _interopRequireDefault(__webpack_require__( /*! ./number */ 18016));
                var _date4 = _interopRequireDefault(__webpack_require__( /*! ./intl/date */ 13024));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const hasIntl = "undefined" !== typeof Intl;
                const FORMATS_TO_PATTERN_MAP = {
                    shortdate: "M/d/y",
                    shorttime: "h:mm a",
                    longdate: "EEEE, MMMM d, y",
                    longtime: "h:mm:ss a",
                    monthandday: "MMMM d",
                    monthandyear: "MMMM y",
                    quarterandyear: "QQQ y",
                    day: "d",
                    year: "y",
                    shortdateshorttime: "M/d/y, h:mm a",
                    longdatelongtime: "EEEE, MMMM d, y, h:mm:ss a",
                    month: "LLLL",
                    shortyear: "yy",
                    dayofweek: "EEEE",
                    quarter: "QQQ",
                    hour: "HH",
                    minute: "mm",
                    second: "ss",
                    millisecond: "SSS",
                    "datetime-local": "yyyy-MM-ddTHH':'mm':'ss"
                };
                const possiblePartPatterns = {
                    year: ["y", "yy", "yyyy"],
                    day: ["d", "dd"],
                    month: ["M", "MM", "MMM", "MMMM"],
                    hours: ["H", "HH", "h", "hh", "ah"],
                    minutes: ["m", "mm"],
                    seconds: ["s", "ss"],
                    milliseconds: ["S", "SS", "SSS"]
                };
                const dateLocalization = (0, _dependency_injector.default)({
                    engine: function() {
                        return "base"
                    },
                    _getPatternByFormat: function(format) {
                        return FORMATS_TO_PATTERN_MAP[format.toLowerCase()]
                    },
                    _expandPattern: function(pattern) {
                        return this._getPatternByFormat(pattern) || pattern
                    },
                    formatUsesMonthName: function(format) {
                        return -1 !== this._expandPattern(format).indexOf("MMMM")
                    },
                    formatUsesDayName: function(format) {
                        return -1 !== this._expandPattern(format).indexOf("EEEE")
                    },
                    getFormatParts: function(format) {
                        const pattern = this._getPatternByFormat(format) || format;
                        const result = [];
                        (0, _iterator.each)(pattern.split(/\W+/), (_, formatPart) => {
                            (0, _iterator.each)(possiblePartPatterns, (partName, possiblePatterns) => {
                                if (possiblePatterns.includes(formatPart)) {
                                    result.push(partName)
                                }
                            })
                        });
                        return result
                    },
                    getMonthNames: function(format) {
                        return _default_date_names.default.getMonthNames(format)
                    },
                    getDayNames: function(format) {
                        return _default_date_names.default.getDayNames(format)
                    },
                    getQuarterNames: function(format) {
                        return _default_date_names.default.getQuarterNames(format)
                    },
                    getPeriodNames: function(format) {
                        return _default_date_names.default.getPeriodNames(format)
                    },
                    getTimeSeparator: function() {
                        return ":"
                    },
                    is24HourFormat: function(format) {
                        const amTime = new Date(2017, 0, 20, 11, 0, 0, 0);
                        const pmTime = new Date(2017, 0, 20, 23, 0, 0, 0);
                        const amTimeFormatted = this.format(amTime, format);
                        const pmTimeFormatted = this.format(pmTime, format);
                        for (let i = 0; i < amTimeFormatted.length; i++) {
                            if (amTimeFormatted[i] !== pmTimeFormatted[i]) {
                                return !isNaN(parseInt(amTimeFormatted[i]))
                            }
                        }
                    },
                    format: function(date, format) {
                        if (!date) {
                            return
                        }
                        if (!format) {
                            return date
                        }
                        let formatter;
                        if ("function" === typeof format) {
                            formatter = format
                        } else if (format.formatter) {
                            formatter = format.formatter
                        } else {
                            format = format.type || format;
                            if ((0, _type.isString)(format)) {
                                format = FORMATS_TO_PATTERN_MAP[format.toLowerCase()] || format;
                                return _number.default.convertDigits((0, _date.getFormatter)(format, this)(date))
                            }
                        }
                        if (!formatter) {
                            return
                        }
                        return formatter(date)
                    },
                    parse: function(text, format) {
                        const that = this;
                        let ldmlFormat;
                        let formatter;
                        if (!text) {
                            return
                        }
                        if (!format) {
                            return this.parse(text, "shortdate")
                        }
                        if (format.parser) {
                            return format.parser(text)
                        }
                        if ("string" === typeof format && !FORMATS_TO_PATTERN_MAP[format.toLowerCase()]) {
                            ldmlFormat = format
                        } else {
                            formatter = value => {
                                const text = that.format(value, format);
                                return _number.default.convertDigits(text, true)
                            };
                            try {
                                ldmlFormat = (0, _date2.getFormat)(formatter)
                            } catch (e) {}
                        }
                        if (ldmlFormat) {
                            text = _number.default.convertDigits(text, true);
                            return (0, _date3.getParser)(ldmlFormat, this)(text)
                        }
                        _errors.default.log("W0012");
                        const result = new Date(text);
                        if (!result || isNaN(result.getTime())) {
                            return
                        }
                        return result
                    },
                    firstDayOfWeekIndex: function() {
                        const index = _core.default.getValueByClosestLocale(locale => _first_day_of_week_data.default[locale]);
                        return void 0 === index ? 0 : index
                    }
                });
                if (hasIntl) {
                    dateLocalization.inject(_date4.default)
                }
                var _default = dateLocalization;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        15564:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/default_date_names.js ***!
              \********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                const MONTHS = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
                const DAYS = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
                const PERIODS = ["AM", "PM"];
                const QUARTERS = ["Q1", "Q2", "Q3", "Q4"];
                const cutCaptions = (captions, format) => {
                    const lengthByFormat = {
                        abbreviated: 3,
                        short: 2,
                        narrow: 1
                    };
                    return (0, _iterator.map)(captions, caption => caption.substr(0, lengthByFormat[format]))
                };
                var _default = {
                    getMonthNames: function(format) {
                        return cutCaptions(MONTHS, format)
                    },
                    getDayNames: function(format) {
                        return cutCaptions(DAYS, format)
                    },
                    getQuarterNames: function(format) {
                        return QUARTERS
                    },
                    getPeriodNames: function(format) {
                        return PERIODS
                    }
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        18121:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/default_messages.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.defaultMessages = void 0;
                // !!! AUTO-GENERATED FILE, DO NOT EDIT
                exports.defaultMessages = {
                    en: {
                        Yes: "Yes",
                        No: "No",
                        Cancel: "Cancel",
                        Close: "Close",
                        Clear: "Clear",
                        Done: "Done",
                        Loading: "Loading...",
                        Select: "Select...",
                        Search: "Search",
                        Back: "Back",
                        OK: "OK",
                        "dxCollectionWidget-noDataText": "No data to display",
                        "dxDropDownEditor-selectLabel": "Select",
                        "validation-required": "Required",
                        "validation-required-formatted": "{0} is required",
                        "validation-numeric": "Value must be a number",
                        "validation-numeric-formatted": "{0} must be a number",
                        "validation-range": "Value is out of range",
                        "validation-range-formatted": "{0} is out of range",
                        "validation-stringLength": "The length of the value is not correct",
                        "validation-stringLength-formatted": "The length of {0} is not correct",
                        "validation-custom": "Value is invalid",
                        "validation-custom-formatted": "{0} is invalid",
                        "validation-async": "Value is invalid",
                        "validation-async-formatted": "{0} is invalid",
                        "validation-compare": "Values do not match",
                        "validation-compare-formatted": "{0} does not match",
                        "validation-pattern": "Value does not match pattern",
                        "validation-pattern-formatted": "{0} does not match pattern",
                        "validation-email": "Email is invalid",
                        "validation-email-formatted": "{0} is invalid",
                        "validation-mask": "Value is invalid",
                        "dxLookup-searchPlaceholder": "Minimum character number: {0}",
                        "dxList-pullingDownText": "Pull down to refresh...",
                        "dxList-pulledDownText": "Release to refresh...",
                        "dxList-refreshingText": "Refreshing...",
                        "dxList-pageLoadingText": "Loading...",
                        "dxList-nextButtonText": "More",
                        "dxList-selectAll": "Select All",
                        "dxListEditDecorator-delete": "Delete",
                        "dxListEditDecorator-more": "More",
                        "dxScrollView-pullingDownText": "Pull down to refresh...",
                        "dxScrollView-pulledDownText": "Release to refresh...",
                        "dxScrollView-refreshingText": "Refreshing...",
                        "dxScrollView-reachBottomText": "Loading...",
                        "dxDateBox-simulatedDataPickerTitleTime": "Select time",
                        "dxDateBox-simulatedDataPickerTitleDate": "Select date",
                        "dxDateBox-simulatedDataPickerTitleDateTime": "Select date and time",
                        "dxDateBox-validation-datetime": "Value must be a date or time",
                        "dxDateRangeBox-invalidStartDateMessage": "Start value must be a date",
                        "dxDateRangeBox-invalidEndDateMessage": "End value must be a date",
                        "dxDateRangeBox-startDateOutOfRangeMessage": "Start date is out of range",
                        "dxDateRangeBox-endDateOutOfRangeMessage": "End date is out of range",
                        "dxDateRangeBox-startDateLabel": "Start Date",
                        "dxDateRangeBox-endDateLabel": "End Date",
                        "dxFileUploader-selectFile": "Select a file",
                        "dxFileUploader-dropFile": "or Drop a file here",
                        "dxFileUploader-bytes": "bytes",
                        "dxFileUploader-kb": "KB",
                        "dxFileUploader-Mb": "MB",
                        "dxFileUploader-Gb": "GB",
                        "dxFileUploader-upload": "Upload",
                        "dxFileUploader-uploaded": "Uploaded",
                        "dxFileUploader-readyToUpload": "Ready to upload",
                        "dxFileUploader-uploadAbortedMessage": "Upload cancelled",
                        "dxFileUploader-uploadFailedMessage": "Upload failed",
                        "dxFileUploader-invalidFileExtension": "File type is not allowed",
                        "dxFileUploader-invalidMaxFileSize": "File is too large",
                        "dxFileUploader-invalidMinFileSize": "File is too small",
                        "dxRangeSlider-ariaFrom": "From",
                        "dxRangeSlider-ariaTill": "Till",
                        "dxSwitch-switchedOnText": "ON",
                        "dxSwitch-switchedOffText": "OFF",
                        "dxForm-optionalMark": "optional",
                        "dxForm-requiredMessage": "{0} is required",
                        "dxNumberBox-invalidValueMessage": "Value must be a number",
                        "dxNumberBox-noDataText": "No data",
                        "dxDataGrid-emptyHeaderWithColumnChooserText": "Use {0} to display columns",
                        "dxDataGrid-emptyHeaderWithGroupPanelText": "Drag a column from the group panel here",
                        "dxDataGrid-emptyHeaderWithColumnChooserAndGroupPanelText": "Use {0} or drag a column from the group panel",
                        "dxDataGrid-emptyHeaderColumnChooserText": "column chooser",
                        "dxDataGrid-columnChooserTitle": "Column Chooser",
                        "dxDataGrid-columnChooserEmptyText": "Drag a column here to hide it",
                        "dxDataGrid-groupContinuesMessage": "Continues on the next page",
                        "dxDataGrid-groupContinuedMessage": "Continued from the previous page",
                        "dxDataGrid-groupHeaderText": "Group by This Column",
                        "dxDataGrid-ungroupHeaderText": "Ungroup",
                        "dxDataGrid-ungroupAllText": "Ungroup All",
                        "dxDataGrid-editingEditRow": "Edit",
                        "dxDataGrid-editingSaveRowChanges": "Save",
                        "dxDataGrid-editingCancelRowChanges": "Cancel",
                        "dxDataGrid-editingDeleteRow": "Delete",
                        "dxDataGrid-editingUndeleteRow": "Undelete",
                        "dxDataGrid-editingConfirmDeleteMessage": "Are you sure you want to delete this record?",
                        "dxDataGrid-validationCancelChanges": "Cancel changes",
                        "dxDataGrid-groupPanelEmptyText": "Drag a column header here to group by that column",
                        "dxDataGrid-noDataText": "No data",
                        "dxDataGrid-searchPanelPlaceholder": "Search...",
                        "dxDataGrid-filterRowShowAllText": "(All)",
                        "dxDataGrid-filterRowResetOperationText": "Reset",
                        "dxDataGrid-filterRowOperationEquals": "Equals",
                        "dxDataGrid-filterRowOperationNotEquals": "Does not equal",
                        "dxDataGrid-filterRowOperationLess": "Less than",
                        "dxDataGrid-filterRowOperationLessOrEquals": "Less than or equal to",
                        "dxDataGrid-filterRowOperationGreater": "Greater than",
                        "dxDataGrid-filterRowOperationGreaterOrEquals": "Greater than or equal to",
                        "dxDataGrid-filterRowOperationStartsWith": "Starts with",
                        "dxDataGrid-filterRowOperationContains": "Contains",
                        "dxDataGrid-filterRowOperationNotContains": "Does not contain",
                        "dxDataGrid-filterRowOperationEndsWith": "Ends with",
                        "dxDataGrid-filterRowOperationBetween": "Between",
                        "dxDataGrid-filterRowOperationBetweenStartText": "Start",
                        "dxDataGrid-filterRowOperationBetweenEndText": "End",
                        "dxDataGrid-ariaSearchBox": "Search box",
                        "dxDataGrid-applyFilterText": "Apply filter",
                        "dxDataGrid-trueText": "true",
                        "dxDataGrid-falseText": "false",
                        "dxDataGrid-sortingAscendingText": "Sort Ascending",
                        "dxDataGrid-sortingDescendingText": "Sort Descending",
                        "dxDataGrid-sortingClearText": "Clear Sorting",
                        "dxDataGrid-ariaNotSortedColumn": "Not sorted column",
                        "dxDataGrid-ariaSortedAscendingColumn": "Column sorted in ascending order",
                        "dxDataGrid-ariaSortedDescendingColumn": "Column sorted in descending order",
                        "dxDataGrid-ariaSortIndex": "Sort index {0}",
                        "dxDataGrid-editingSaveAllChanges": "Save changes",
                        "dxDataGrid-editingCancelAllChanges": "Discard changes",
                        "dxDataGrid-editingAddRow": "Add a row",
                        "dxDataGrid-summaryMin": "Min: {0}",
                        "dxDataGrid-summaryMinOtherColumn": "Min of {1} is {0}",
                        "dxDataGrid-summaryMax": "Max: {0}",
                        "dxDataGrid-summaryMaxOtherColumn": "Max of {1} is {0}",
                        "dxDataGrid-summaryAvg": "Avg: {0}",
                        "dxDataGrid-summaryAvgOtherColumn": "Avg of {1} is {0}",
                        "dxDataGrid-summarySum": "Sum: {0}",
                        "dxDataGrid-summarySumOtherColumn": "Sum of {1} is {0}",
                        "dxDataGrid-summaryCount": "Count: {0}",
                        "dxDataGrid-columnFixingFix": "Fix",
                        "dxDataGrid-columnFixingUnfix": "Unfix",
                        "dxDataGrid-columnFixingLeftPosition": "To the left",
                        "dxDataGrid-columnFixingRightPosition": "To the right",
                        "dxDataGrid-exportTo": "Export",
                        "dxDataGrid-exportToExcel": "Export to Excel file",
                        "dxDataGrid-exporting": "Exporting...",
                        "dxDataGrid-excelFormat": "Excel file",
                        "dxDataGrid-selectedRows": "Selected rows",
                        "dxDataGrid-exportSelectedRows": "Export selected rows to {0}",
                        "dxDataGrid-exportAll": "Export all data to {0}",
                        "dxDataGrid-headerFilterLabel": "Filter options",
                        "dxDataGrid-headerFilterIndicatorLabel": "Show filter options for column '{0}'",
                        "dxDataGrid-headerFilterEmptyValue": "(Blanks)",
                        "dxDataGrid-headerFilterOK": "OK",
                        "dxDataGrid-headerFilterCancel": "Cancel",
                        "dxDataGrid-ariaAdaptiveCollapse": "Hide additional data",
                        "dxDataGrid-ariaAdaptiveExpand": "Display additional data",
                        "dxDataGrid-ariaColumn": "Column",
                        "dxDataGrid-ariaColumnHeader": "Column header",
                        "dxDataGrid-ariaValue": "Value",
                        "dxDataGrid-ariaError": "Error",
                        "dxDataGrid-ariaRevertButton": "Press Escape to discard the changes",
                        "dxDataGrid-ariaFilterCell": "Filter cell",
                        "dxDataGrid-ariaCollapse": "Collapse",
                        "dxDataGrid-ariaModifiedCell": "Modified",
                        "dxDataGrid-ariaDeletedCell": "Deleted",
                        "dxDataGrid-ariaEditableCell": "Editable",
                        "dxDataGrid-ariaExpand": "Expand",
                        "dxDataGrid-ariaCollapsedRow": "Collapsed row",
                        "dxDataGrid-ariaExpandedRow": "Expanded row",
                        "dxDataGrid-ariaDataGrid": "Data grid with {0} rows and {1} columns",
                        "dxDataGrid-ariaSearchInGrid": "Search in the data grid",
                        "dxDataGrid-ariaSelectAll": "Select all",
                        "dxDataGrid-ariaSelectRow": "Select row",
                        "dxDataGrid-ariaToolbar": "Data grid toolbar",
                        "dxDataGrid-ariaEditForm": "Edit form",
                        "dxDataGrid-filterBuilderPopupTitle": "Filter Builder",
                        "dxDataGrid-filterPanelCreateFilter": "Create Filter",
                        "dxDataGrid-filterPanelClearFilter": "Clear",
                        "dxDataGrid-filterPanelFilterEnabledHint": "Enable the filter",
                        "dxTreeList-ariaTreeList": "Tree list with {0} rows and {1} columns",
                        "dxTreeList-ariaSearchInGrid": "Search in the tree list",
                        "dxTreeList-ariaToolbar": "Tree list toolbar",
                        "dxTreeList-editingAddRowToNode": "Add",
                        "dxPager-infoText": "Page {0} of {1} ({2} items)",
                        "dxPager-pagesCountText": "of",
                        "dxPager-pageSize": "Items per page: {0}",
                        "dxPager-pageSizesAllText": "All",
                        "dxPager-page": "Page {0}",
                        "dxPager-prevPage": "Previous Page",
                        "dxPager-nextPage": "Next Page",
                        "dxPager-ariaLabel": "Page Navigation",
                        "dxPager-ariaPageSize": "Page size",
                        "dxPager-ariaPageNumber": "Page number",
                        "dxPivotGrid-grandTotal": "Grand Total",
                        "dxPivotGrid-total": "{0} Total",
                        "dxPivotGrid-fieldChooserTitle": "Field Chooser",
                        "dxPivotGrid-showFieldChooser": "Show Field Chooser",
                        "dxPivotGrid-expandAll": "Expand All",
                        "dxPivotGrid-collapseAll": "Collapse All",
                        "dxPivotGrid-sortColumnBySummary": 'Sort "{0}" by This Column',
                        "dxPivotGrid-sortRowBySummary": 'Sort "{0}" by This Row',
                        "dxPivotGrid-removeAllSorting": "Remove All Sorting",
                        "dxPivotGrid-dataNotAvailable": "N/A",
                        "dxPivotGrid-rowFields": "Row Fields",
                        "dxPivotGrid-columnFields": "Column Fields",
                        "dxPivotGrid-dataFields": "Data Fields",
                        "dxPivotGrid-filterFields": "Filter Fields",
                        "dxPivotGrid-allFields": "All Fields",
                        "dxPivotGrid-columnFieldArea": "Drop Column Fields Here",
                        "dxPivotGrid-dataFieldArea": "Drop Data Fields Here",
                        "dxPivotGrid-rowFieldArea": "Drop Row Fields Here",
                        "dxPivotGrid-filterFieldArea": "Drop Filter Fields Here",
                        "dxScheduler-editorLabelTitle": "Subject",
                        "dxScheduler-editorLabelStartDate": "Start Date",
                        "dxScheduler-editorLabelEndDate": "End Date",
                        "dxScheduler-editorLabelDescription": "Description",
                        "dxScheduler-editorLabelRecurrence": "Repeat",
                        "dxScheduler-openAppointment": "Open appointment",
                        "dxScheduler-recurrenceNever": "Never",
                        "dxScheduler-recurrenceMinutely": "Every minute",
                        "dxScheduler-recurrenceHourly": "Hourly",
                        "dxScheduler-recurrenceDaily": "Daily",
                        "dxScheduler-recurrenceWeekly": "Weekly",
                        "dxScheduler-recurrenceMonthly": "Monthly",
                        "dxScheduler-recurrenceYearly": "Yearly",
                        "dxScheduler-recurrenceRepeatEvery": "Repeat Every",
                        "dxScheduler-recurrenceRepeatOn": "Repeat On",
                        "dxScheduler-recurrenceEnd": "End repeat",
                        "dxScheduler-recurrenceAfter": "After",
                        "dxScheduler-recurrenceOn": "On",
                        "dxScheduler-recurrenceRepeatMinutely": "minute(s)",
                        "dxScheduler-recurrenceRepeatHourly": "hour(s)",
                        "dxScheduler-recurrenceRepeatDaily": "day(s)",
                        "dxScheduler-recurrenceRepeatWeekly": "week(s)",
                        "dxScheduler-recurrenceRepeatMonthly": "month(s)",
                        "dxScheduler-recurrenceRepeatYearly": "year(s)",
                        "dxScheduler-switcherDay": "Day",
                        "dxScheduler-switcherWeek": "Week",
                        "dxScheduler-switcherWorkWeek": "Work Week",
                        "dxScheduler-switcherMonth": "Month",
                        "dxScheduler-switcherAgenda": "Agenda",
                        "dxScheduler-switcherTimelineDay": "Timeline Day",
                        "dxScheduler-switcherTimelineWeek": "Timeline Week",
                        "dxScheduler-switcherTimelineWorkWeek": "Timeline Work Week",
                        "dxScheduler-switcherTimelineMonth": "Timeline Month",
                        "dxScheduler-recurrenceRepeatOnDate": "on date",
                        "dxScheduler-recurrenceRepeatCount": "occurrence(s)",
                        "dxScheduler-allDay": "All day",
                        "dxScheduler-confirmRecurrenceEditTitle": "Edit Recurring Appointment",
                        "dxScheduler-confirmRecurrenceDeleteTitle": "Delete Recurring Appointment",
                        "dxScheduler-confirmRecurrenceEditMessage": "Do you want to edit only this appointment or the whole series?",
                        "dxScheduler-confirmRecurrenceDeleteMessage": "Do you want to delete only this appointment or the whole series?",
                        "dxScheduler-confirmRecurrenceEditSeries": "Edit series",
                        "dxScheduler-confirmRecurrenceDeleteSeries": "Delete series",
                        "dxScheduler-confirmRecurrenceEditOccurrence": "Edit appointment",
                        "dxScheduler-confirmRecurrenceDeleteOccurrence": "Delete appointment",
                        "dxScheduler-noTimezoneTitle": "No timezone",
                        "dxScheduler-moreAppointments": "{0} more",
                        "dxCalendar-todayButtonText": "Today",
                        "dxCalendar-ariaWidgetName": "Calendar",
                        "dxCalendar-previousMonthButtonLabel": "Previous month",
                        "dxCalendar-previousYearButtonLabel": "Previous year",
                        "dxCalendar-previousDecadeButtonLabel": "Previous decade",
                        "dxCalendar-previousCenturyButtonLabel": "Previous century",
                        "dxCalendar-nextMonthButtonLabel": "Next month",
                        "dxCalendar-nextYearButtonLabel": "Next year",
                        "dxCalendar-nextDecadeButtonLabel": "Next decade",
                        "dxCalendar-nextCenturyButtonLabel": "Next century",
                        "dxCalendar-captionMonthLabel": "Month selection",
                        "dxCalendar-captionYearLabel": "Year selection",
                        "dxCalendar-captionDecadeLabel": "Decade selection",
                        "dxCalendar-captionCenturyLabel": "Century selection",
                        "dxColorView-ariaRed": "Red",
                        "dxColorView-ariaGreen": "Green",
                        "dxColorView-ariaBlue": "Blue",
                        "dxColorView-ariaAlpha": "Transparency",
                        "dxColorView-ariaHex": "Color code",
                        "dxTagBox-selected": "{0} selected",
                        "dxTagBox-allSelected": "All selected ({0})",
                        "dxTagBox-moreSelected": "{0} more",
                        "vizExport-printingButtonText": "Print",
                        "vizExport-titleMenuText": "Exporting/Printing",
                        "vizExport-exportButtonText": "{0} file",
                        "dxFilterBuilder-and": "And",
                        "dxFilterBuilder-or": "Or",
                        "dxFilterBuilder-notAnd": "Not And",
                        "dxFilterBuilder-notOr": "Not Or",
                        "dxFilterBuilder-addCondition": "Add Condition",
                        "dxFilterBuilder-addGroup": "Add Group",
                        "dxFilterBuilder-enterValueText": "<enter a value>",
                        "dxFilterBuilder-filterOperationEquals": "Equals",
                        "dxFilterBuilder-filterOperationNotEquals": "Does not equal",
                        "dxFilterBuilder-filterOperationLess": "Is less than",
                        "dxFilterBuilder-filterOperationLessOrEquals": "Is less than or equal to",
                        "dxFilterBuilder-filterOperationGreater": "Is greater than",
                        "dxFilterBuilder-filterOperationGreaterOrEquals": "Is greater than or equal to",
                        "dxFilterBuilder-filterOperationStartsWith": "Starts with",
                        "dxFilterBuilder-filterOperationContains": "Contains",
                        "dxFilterBuilder-filterOperationNotContains": "Does not contain",
                        "dxFilterBuilder-filterOperationEndsWith": "Ends with",
                        "dxFilterBuilder-filterOperationIsBlank": "Is blank",
                        "dxFilterBuilder-filterOperationIsNotBlank": "Is not blank",
                        "dxFilterBuilder-filterOperationBetween": "Is between",
                        "dxFilterBuilder-filterOperationAnyOf": "Is any of",
                        "dxFilterBuilder-filterOperationNoneOf": "Is none of",
                        "dxHtmlEditor-dialogColorCaption": "Change Font Color",
                        "dxHtmlEditor-dialogBackgroundCaption": "Change Background Color",
                        "dxHtmlEditor-dialogLinkCaption": "Add Link",
                        "dxHtmlEditor-dialogLinkUrlField": "URL",
                        "dxHtmlEditor-dialogLinkTextField": "Text",
                        "dxHtmlEditor-dialogLinkTargetField": "Open link in new window",
                        "dxHtmlEditor-dialogImageCaption": "Add Image",
                        "dxHtmlEditor-dialogImageUrlField": "URL",
                        "dxHtmlEditor-dialogImageAltField": "Alternate text",
                        "dxHtmlEditor-dialogImageWidthField": "Width (px)",
                        "dxHtmlEditor-dialogImageHeightField": "Height (px)",
                        "dxHtmlEditor-dialogInsertTableRowsField": "Rows",
                        "dxHtmlEditor-dialogInsertTableColumnsField": "Columns",
                        "dxHtmlEditor-dialogInsertTableCaption": "Insert Table",
                        "dxHtmlEditor-dialogUpdateImageCaption": "Update Image",
                        "dxHtmlEditor-dialogImageUpdateButton": "Update",
                        "dxHtmlEditor-dialogImageAddButton": "Add",
                        "dxHtmlEditor-dialogImageSpecifyUrl": "From the Web",
                        "dxHtmlEditor-dialogImageSelectFile": "From This Device",
                        "dxHtmlEditor-dialogImageKeepAspectRatio": "Keep Aspect Ratio",
                        "dxHtmlEditor-dialogImageEncodeToBase64": "Encode to Base64",
                        "dxHtmlEditor-heading": "Heading",
                        "dxHtmlEditor-normalText": "Normal text",
                        "dxHtmlEditor-background": "Background Color",
                        "dxHtmlEditor-bold": "Bold",
                        "dxHtmlEditor-color": "Font Color",
                        "dxHtmlEditor-font": "Font",
                        "dxHtmlEditor-italic": "Italic",
                        "dxHtmlEditor-link": "Add Link",
                        "dxHtmlEditor-image": "Add Image",
                        "dxHtmlEditor-size": "Size",
                        "dxHtmlEditor-strike": "Strikethrough",
                        "dxHtmlEditor-subscript": "Subscript",
                        "dxHtmlEditor-superscript": "Superscript",
                        "dxHtmlEditor-underline": "Underline",
                        "dxHtmlEditor-blockquote": "Blockquote",
                        "dxHtmlEditor-header": "Header",
                        "dxHtmlEditor-increaseIndent": "Increase Indent",
                        "dxHtmlEditor-decreaseIndent": "Decrease Indent",
                        "dxHtmlEditor-orderedList": "Ordered List",
                        "dxHtmlEditor-bulletList": "Bullet List",
                        "dxHtmlEditor-alignLeft": "Align Left",
                        "dxHtmlEditor-alignCenter": "Align Center",
                        "dxHtmlEditor-alignRight": "Align Right",
                        "dxHtmlEditor-alignJustify": "Align Justify",
                        "dxHtmlEditor-codeBlock": "Code Block",
                        "dxHtmlEditor-variable": "Add Variable",
                        "dxHtmlEditor-undo": "Undo",
                        "dxHtmlEditor-redo": "Redo",
                        "dxHtmlEditor-clear": "Clear Formatting",
                        "dxHtmlEditor-insertTable": "Insert Table",
                        "dxHtmlEditor-insertHeaderRow": "Insert Header Row",
                        "dxHtmlEditor-insertRowAbove": "Insert Row Above",
                        "dxHtmlEditor-insertRowBelow": "Insert Row Below",
                        "dxHtmlEditor-insertColumnLeft": "Insert Column Left",
                        "dxHtmlEditor-insertColumnRight": "Insert Column Right",
                        "dxHtmlEditor-deleteColumn": "Delete Column",
                        "dxHtmlEditor-deleteRow": "Delete Row",
                        "dxHtmlEditor-deleteTable": "Delete Table",
                        "dxHtmlEditor-cellProperties": "Cell Properties",
                        "dxHtmlEditor-tableProperties": "Table Properties",
                        "dxHtmlEditor-insert": "Insert",
                        "dxHtmlEditor-delete": "Delete",
                        "dxHtmlEditor-border": "Border",
                        "dxHtmlEditor-style": "Style",
                        "dxHtmlEditor-width": "Width",
                        "dxHtmlEditor-height": "Height",
                        "dxHtmlEditor-borderColor": "Color",
                        "dxHtmlEditor-tableBackground": "Background",
                        "dxHtmlEditor-dimensions": "Dimensions",
                        "dxHtmlEditor-alignment": "Alignment",
                        "dxHtmlEditor-horizontal": "Horizontal",
                        "dxHtmlEditor-vertical": "Vertical",
                        "dxHtmlEditor-paddingVertical": "Vertical Padding",
                        "dxHtmlEditor-paddingHorizontal": "Horizontal Padding",
                        "dxHtmlEditor-pixels": "Pixels",
                        "dxHtmlEditor-list": "List",
                        "dxHtmlEditor-ordered": "Ordered",
                        "dxHtmlEditor-bullet": "Bullet",
                        "dxHtmlEditor-align": "Align",
                        "dxHtmlEditor-center": "Center",
                        "dxHtmlEditor-left": "Left",
                        "dxHtmlEditor-right": "Right",
                        "dxHtmlEditor-indent": "Indent",
                        "dxHtmlEditor-justify": "Justify",
                        "dxHtmlEditor-borderStyleNone": "none",
                        "dxHtmlEditor-borderStyleHidden": "hidden",
                        "dxHtmlEditor-borderStyleDotted": "dotted",
                        "dxHtmlEditor-borderStyleDashed": "dashed",
                        "dxHtmlEditor-borderStyleSolid": "solid",
                        "dxHtmlEditor-borderStyleDouble": "double",
                        "dxHtmlEditor-borderStyleGroove": "groove",
                        "dxHtmlEditor-borderStyleRidge": "ridge",
                        "dxHtmlEditor-borderStyleInset": "inset",
                        "dxHtmlEditor-borderStyleOutset": "outset",
                        "dxFileManager-newDirectoryName": "Untitled directory",
                        "dxFileManager-rootDirectoryName": "Files",
                        "dxFileManager-errorNoAccess": "Access Denied. Operation could not be completed.",
                        "dxFileManager-errorDirectoryExistsFormat": "Directory '{0}' already exists.",
                        "dxFileManager-errorFileExistsFormat": "File '{0}' already exists.",
                        "dxFileManager-errorFileNotFoundFormat": "File '{0}' not found.",
                        "dxFileManager-errorDirectoryNotFoundFormat": "Directory '{0}' not found.",
                        "dxFileManager-errorWrongFileExtension": "File extension is not allowed.",
                        "dxFileManager-errorMaxFileSizeExceeded": "File size exceeds the maximum allowed size.",
                        "dxFileManager-errorInvalidSymbols": "This name contains invalid characters.",
                        "dxFileManager-errorDefault": "Unspecified error.",
                        "dxFileManager-errorDirectoryOpenFailed": "The directory cannot be opened",
                        "dxFileManager-commandCreate": "New directory",
                        "dxFileManager-commandRename": "Rename",
                        "dxFileManager-commandMove": "Move to",
                        "dxFileManager-commandCopy": "Copy to",
                        "dxFileManager-commandDelete": "Delete",
                        "dxFileManager-commandDownload": "Download",
                        "dxFileManager-commandUpload": "Upload files",
                        "dxFileManager-commandRefresh": "Refresh",
                        "dxFileManager-commandThumbnails": "Thumbnails View",
                        "dxFileManager-commandDetails": "Details View",
                        "dxFileManager-commandClearSelection": "Clear selection",
                        "dxFileManager-commandShowNavPane": "Toggle navigation pane",
                        "dxFileManager-dialogDirectoryChooserMoveTitle": "Move to",
                        "dxFileManager-dialogDirectoryChooserMoveButtonText": "Move",
                        "dxFileManager-dialogDirectoryChooserCopyTitle": "Copy to",
                        "dxFileManager-dialogDirectoryChooserCopyButtonText": "Copy",
                        "dxFileManager-dialogRenameItemTitle": "Rename",
                        "dxFileManager-dialogRenameItemButtonText": "Save",
                        "dxFileManager-dialogCreateDirectoryTitle": "New directory",
                        "dxFileManager-dialogCreateDirectoryButtonText": "Create",
                        "dxFileManager-dialogDeleteItemTitle": "Delete",
                        "dxFileManager-dialogDeleteItemButtonText": "Delete",
                        "dxFileManager-dialogDeleteItemSingleItemConfirmation": "Are you sure you want to delete {0}?",
                        "dxFileManager-dialogDeleteItemMultipleItemsConfirmation": "Are you sure you want to delete {0} items?",
                        "dxFileManager-dialogButtonCancel": "Cancel",
                        "dxFileManager-editingCreateSingleItemProcessingMessage": "Creating a directory inside {0}",
                        "dxFileManager-editingCreateSingleItemSuccessMessage": "Created a directory inside {0}",
                        "dxFileManager-editingCreateSingleItemErrorMessage": "Directory was not created",
                        "dxFileManager-editingCreateCommonErrorMessage": "Directory was not created",
                        "dxFileManager-editingRenameSingleItemProcessingMessage": "Renaming an item inside {0}",
                        "dxFileManager-editingRenameSingleItemSuccessMessage": "Renamed an item inside {0}",
                        "dxFileManager-editingRenameSingleItemErrorMessage": "Item was not renamed",
                        "dxFileManager-editingRenameCommonErrorMessage": "Item was not renamed",
                        "dxFileManager-editingDeleteSingleItemProcessingMessage": "Deleting an item from {0}",
                        "dxFileManager-editingDeleteMultipleItemsProcessingMessage": "Deleting {0} items from {1}",
                        "dxFileManager-editingDeleteSingleItemSuccessMessage": "Deleted an item from {0}",
                        "dxFileManager-editingDeleteMultipleItemsSuccessMessage": "Deleted {0} items from {1}",
                        "dxFileManager-editingDeleteSingleItemErrorMessage": "Item was not deleted",
                        "dxFileManager-editingDeleteMultipleItemsErrorMessage": "{0} items were not deleted",
                        "dxFileManager-editingDeleteCommonErrorMessage": "Some items were not deleted",
                        "dxFileManager-editingMoveSingleItemProcessingMessage": "Moving an item to {0}",
                        "dxFileManager-editingMoveMultipleItemsProcessingMessage": "Moving {0} items to {1}",
                        "dxFileManager-editingMoveSingleItemSuccessMessage": "Moved an item to {0}",
                        "dxFileManager-editingMoveMultipleItemsSuccessMessage": "Moved {0} items to {1}",
                        "dxFileManager-editingMoveSingleItemErrorMessage": "Item was not moved",
                        "dxFileManager-editingMoveMultipleItemsErrorMessage": "{0} items were not moved",
                        "dxFileManager-editingMoveCommonErrorMessage": "Some items were not moved",
                        "dxFileManager-editingCopySingleItemProcessingMessage": "Copying an item to {0}",
                        "dxFileManager-editingCopyMultipleItemsProcessingMessage": "Copying {0} items to {1}",
                        "dxFileManager-editingCopySingleItemSuccessMessage": "Copied an item to {0}",
                        "dxFileManager-editingCopyMultipleItemsSuccessMessage": "Copied {0} items to {1}",
                        "dxFileManager-editingCopySingleItemErrorMessage": "Item was not copied",
                        "dxFileManager-editingCopyMultipleItemsErrorMessage": "{0} items were not copied",
                        "dxFileManager-editingCopyCommonErrorMessage": "Some items were not copied",
                        "dxFileManager-editingUploadSingleItemProcessingMessage": "Uploading an item to {0}",
                        "dxFileManager-editingUploadMultipleItemsProcessingMessage": "Uploading {0} items to {1}",
                        "dxFileManager-editingUploadSingleItemSuccessMessage": "Uploaded an item to {0}",
                        "dxFileManager-editingUploadMultipleItemsSuccessMessage": "Uploaded {0} items to {1}",
                        "dxFileManager-editingUploadSingleItemErrorMessage": "Item was not uploaded",
                        "dxFileManager-editingUploadMultipleItemsErrorMessage": "{0} items were not uploaded",
                        "dxFileManager-editingUploadCanceledMessage": "Canceled",
                        "dxFileManager-editingDownloadSingleItemErrorMessage": "Item was not downloaded",
                        "dxFileManager-editingDownloadMultipleItemsErrorMessage": "{0} items were not downloaded",
                        "dxFileManager-listDetailsColumnCaptionName": "Name",
                        "dxFileManager-listDetailsColumnCaptionDateModified": "Date Modified",
                        "dxFileManager-listDetailsColumnCaptionFileSize": "File Size",
                        "dxFileManager-listThumbnailsTooltipTextSize": "Size",
                        "dxFileManager-listThumbnailsTooltipTextDateModified": "Date Modified",
                        "dxFileManager-notificationProgressPanelTitle": "Progress",
                        "dxFileManager-notificationProgressPanelEmptyListText": "No operations",
                        "dxFileManager-notificationProgressPanelOperationCanceled": "Canceled",
                        "dxDiagram-categoryGeneral": "General",
                        "dxDiagram-categoryFlowchart": "Flowchart",
                        "dxDiagram-categoryOrgChart": "Org Chart",
                        "dxDiagram-categoryContainers": "Containers",
                        "dxDiagram-categoryCustom": "Custom",
                        "dxDiagram-commandExportToSvg": "Export to SVG",
                        "dxDiagram-commandExportToPng": "Export to PNG",
                        "dxDiagram-commandExportToJpg": "Export to JPEG",
                        "dxDiagram-commandUndo": "Undo",
                        "dxDiagram-commandRedo": "Redo",
                        "dxDiagram-commandFontName": "Font Name",
                        "dxDiagram-commandFontSize": "Font Size",
                        "dxDiagram-commandBold": "Bold",
                        "dxDiagram-commandItalic": "Italic",
                        "dxDiagram-commandUnderline": "Underline",
                        "dxDiagram-commandTextColor": "Font Color",
                        "dxDiagram-commandLineColor": "Line Color",
                        "dxDiagram-commandLineWidth": "Line Width",
                        "dxDiagram-commandLineStyle": "Line Style",
                        "dxDiagram-commandLineStyleSolid": "Solid",
                        "dxDiagram-commandLineStyleDotted": "Dotted",
                        "dxDiagram-commandLineStyleDashed": "Dashed",
                        "dxDiagram-commandFillColor": "Fill Color",
                        "dxDiagram-commandAlignLeft": "Align Left",
                        "dxDiagram-commandAlignCenter": "Align Center",
                        "dxDiagram-commandAlignRight": "Align Right",
                        "dxDiagram-commandConnectorLineType": "Connector Line Type",
                        "dxDiagram-commandConnectorLineStraight": "Straight",
                        "dxDiagram-commandConnectorLineOrthogonal": "Orthogonal",
                        "dxDiagram-commandConnectorLineStart": "Connector Line Start",
                        "dxDiagram-commandConnectorLineEnd": "Connector Line End",
                        "dxDiagram-commandConnectorLineNone": "None",
                        "dxDiagram-commandConnectorLineArrow": "Arrow",
                        "dxDiagram-commandFullscreen": "Full Screen",
                        "dxDiagram-commandUnits": "Units",
                        "dxDiagram-commandPageSize": "Page Size",
                        "dxDiagram-commandPageOrientation": "Page Orientation",
                        "dxDiagram-commandPageOrientationLandscape": "Landscape",
                        "dxDiagram-commandPageOrientationPortrait": "Portrait",
                        "dxDiagram-commandPageColor": "Page Color",
                        "dxDiagram-commandShowGrid": "Show Grid",
                        "dxDiagram-commandSnapToGrid": "Snap to Grid",
                        "dxDiagram-commandGridSize": "Grid Size",
                        "dxDiagram-commandZoomLevel": "Zoom Level",
                        "dxDiagram-commandAutoZoom": "Auto Zoom",
                        "dxDiagram-commandFitToContent": "Fit to Content",
                        "dxDiagram-commandFitToWidth": "Fit to Width",
                        "dxDiagram-commandAutoZoomByContent": "Auto Zoom by Content",
                        "dxDiagram-commandAutoZoomByWidth": "Auto Zoom by Width",
                        "dxDiagram-commandSimpleView": "Simple View",
                        "dxDiagram-commandCut": "Cut",
                        "dxDiagram-commandCopy": "Copy",
                        "dxDiagram-commandPaste": "Paste",
                        "dxDiagram-commandSelectAll": "Select All",
                        "dxDiagram-commandDelete": "Delete",
                        "dxDiagram-commandBringToFront": "Bring to Front",
                        "dxDiagram-commandSendToBack": "Send to Back",
                        "dxDiagram-commandLock": "Lock",
                        "dxDiagram-commandUnlock": "Unlock",
                        "dxDiagram-commandInsertShapeImage": "Insert Image...",
                        "dxDiagram-commandEditShapeImage": "Change Image...",
                        "dxDiagram-commandDeleteShapeImage": "Delete Image",
                        "dxDiagram-commandLayoutLeftToRight": "Left-to-right",
                        "dxDiagram-commandLayoutRightToLeft": "Right-to-left",
                        "dxDiagram-commandLayoutTopToBottom": "Top-to-bottom",
                        "dxDiagram-commandLayoutBottomToTop": "Bottom-to-top",
                        "dxDiagram-unitIn": "in",
                        "dxDiagram-unitCm": "cm",
                        "dxDiagram-unitPx": "px",
                        "dxDiagram-dialogButtonOK": "OK",
                        "dxDiagram-dialogButtonCancel": "Cancel",
                        "dxDiagram-dialogInsertShapeImageTitle": "Insert Image",
                        "dxDiagram-dialogEditShapeImageTitle": "Change Image",
                        "dxDiagram-dialogEditShapeImageSelectButton": "Select image",
                        "dxDiagram-dialogEditShapeImageLabelText": "or drop a file here",
                        "dxDiagram-uiExport": "Export",
                        "dxDiagram-uiProperties": "Properties",
                        "dxDiagram-uiSettings": "Settings",
                        "dxDiagram-uiShowToolbox": "Show Toolbox",
                        "dxDiagram-uiSearch": "Search",
                        "dxDiagram-uiStyle": "Style",
                        "dxDiagram-uiLayout": "Layout",
                        "dxDiagram-uiLayoutTree": "Tree",
                        "dxDiagram-uiLayoutLayered": "Layered",
                        "dxDiagram-uiDiagram": "Diagram",
                        "dxDiagram-uiText": "Text",
                        "dxDiagram-uiObject": "Object",
                        "dxDiagram-uiConnector": "Connector",
                        "dxDiagram-uiPage": "Page",
                        "dxDiagram-shapeText": "Text",
                        "dxDiagram-shapeRectangle": "Rectangle",
                        "dxDiagram-shapeEllipse": "Ellipse",
                        "dxDiagram-shapeCross": "Cross",
                        "dxDiagram-shapeTriangle": "Triangle",
                        "dxDiagram-shapeDiamond": "Diamond",
                        "dxDiagram-shapeHeart": "Heart",
                        "dxDiagram-shapePentagon": "Pentagon",
                        "dxDiagram-shapeHexagon": "Hexagon",
                        "dxDiagram-shapeOctagon": "Octagon",
                        "dxDiagram-shapeStar": "Star",
                        "dxDiagram-shapeArrowLeft": "Left Arrow",
                        "dxDiagram-shapeArrowUp": "Up Arrow",
                        "dxDiagram-shapeArrowRight": "Right Arrow",
                        "dxDiagram-shapeArrowDown": "Down Arrow",
                        "dxDiagram-shapeArrowUpDown": "Up Down Arrow",
                        "dxDiagram-shapeArrowLeftRight": "Left Right Arrow",
                        "dxDiagram-shapeProcess": "Process",
                        "dxDiagram-shapeDecision": "Decision",
                        "dxDiagram-shapeTerminator": "Terminator",
                        "dxDiagram-shapePredefinedProcess": "Predefined Process",
                        "dxDiagram-shapeDocument": "Document",
                        "dxDiagram-shapeMultipleDocuments": "Multiple Documents",
                        "dxDiagram-shapeManualInput": "Manual Input",
                        "dxDiagram-shapePreparation": "Preparation",
                        "dxDiagram-shapeData": "Data",
                        "dxDiagram-shapeDatabase": "Database",
                        "dxDiagram-shapeHardDisk": "Hard Disk",
                        "dxDiagram-shapeInternalStorage": "Internal Storage",
                        "dxDiagram-shapePaperTape": "Paper Tape",
                        "dxDiagram-shapeManualOperation": "Manual Operation",
                        "dxDiagram-shapeDelay": "Delay",
                        "dxDiagram-shapeStoredData": "Stored Data",
                        "dxDiagram-shapeDisplay": "Display",
                        "dxDiagram-shapeMerge": "Merge",
                        "dxDiagram-shapeConnector": "Connector",
                        "dxDiagram-shapeOr": "Or",
                        "dxDiagram-shapeSummingJunction": "Summing Junction",
                        "dxDiagram-shapeContainerDefaultText": "Container",
                        "dxDiagram-shapeVerticalContainer": "Vertical Container",
                        "dxDiagram-shapeHorizontalContainer": "Horizontal Container",
                        "dxDiagram-shapeCardDefaultText": "Person's Name",
                        "dxDiagram-shapeCardWithImageOnLeft": "Card with Image on the Left",
                        "dxDiagram-shapeCardWithImageOnTop": "Card with Image on the Top",
                        "dxDiagram-shapeCardWithImageOnRight": "Card with Image on the Right",
                        "dxGantt-dialogTitle": "Title",
                        "dxGantt-dialogStartTitle": "Start",
                        "dxGantt-dialogEndTitle": "End",
                        "dxGantt-dialogProgressTitle": "Progress",
                        "dxGantt-dialogResourcesTitle": "Resources",
                        "dxGantt-dialogResourceManagerTitle": "Resource Manager",
                        "dxGantt-dialogTaskDetailsTitle": "Task Details",
                        "dxGantt-dialogEditResourceListHint": "Edit Resource List",
                        "dxGantt-dialogEditNoResources": "No resources",
                        "dxGantt-dialogButtonAdd": "Add",
                        "dxGantt-contextMenuNewTask": "New Task",
                        "dxGantt-contextMenuNewSubtask": "New Subtask",
                        "dxGantt-contextMenuDeleteTask": "Delete Task",
                        "dxGantt-contextMenuDeleteDependency": "Delete Dependency",
                        "dxGantt-dialogTaskDeleteConfirmation": "Deleting a task also deletes all its dependencies and subtasks. Are you sure you want to delete this task?",
                        "dxGantt-dialogDependencyDeleteConfirmation": "Are you sure you want to delete the dependency from the task?",
                        "dxGantt-dialogResourcesDeleteConfirmation": "Deleting a resource also deletes it from tasks to which this resource is assigned. Are you sure you want to delete these resources? Resources: {0}",
                        "dxGantt-dialogConstraintCriticalViolationMessage": "The task you are attempting to move is linked to a second task by a dependency relation. This change would conflict with dependency rules. How would you like to proceed?",
                        "dxGantt-dialogConstraintViolationMessage": "The task you are attempting to move is linked to a second task by a dependency relation. How would you like to proceed?",
                        "dxGantt-dialogCancelOperationMessage": "Cancel the operation",
                        "dxGantt-dialogDeleteDependencyMessage": "Delete the dependency",
                        "dxGantt-dialogMoveTaskAndKeepDependencyMessage": "Move the task and keep the dependency",
                        "dxGantt-dialogConstraintCriticalViolationSeveralTasksMessage": "The task you are attempting to move is linked to another tasks by dependency relations. This change would conflict with dependency rules. How would you like to proceed?",
                        "dxGantt-dialogConstraintViolationSeveralTasksMessage": "The task you are attempting to move is linked to another tasks by dependency relations. How would you like to proceed?",
                        "dxGantt-dialogDeleteDependenciesMessage": "Delete the dependency relations",
                        "dxGantt-dialogMoveTaskAndKeepDependenciesMessage": "Move the task and keep the dependencies",
                        "dxGantt-undo": "Undo",
                        "dxGantt-redo": "Redo",
                        "dxGantt-expandAll": "Expand All",
                        "dxGantt-collapseAll": "Collapse All",
                        "dxGantt-addNewTask": "Add New Task",
                        "dxGantt-deleteSelectedTask": "Delete Selected Task",
                        "dxGantt-zoomIn": "Zoom In",
                        "dxGantt-zoomOut": "Zoom Out",
                        "dxGantt-fullScreen": "Full Screen",
                        "dxGantt-quarter": "Q{0}",
                        "dxGantt-sortingAscendingText": "Sort Ascending",
                        "dxGantt-sortingDescendingText": "Sort Descending",
                        "dxGantt-sortingClearText": "Clear Sorting",
                        "dxGantt-showResources": "Show Resources",
                        "dxGantt-showDependencies": "Show Dependencies",
                        "dxGantt-dialogStartDateValidation": "Start date must be after {0}",
                        "dxGantt-dialogEndDateValidation": "End date must be after {0}",
                        "dxGallery-itemName": "Gallery item",
                        "dxMultiView-elementAriaRoleDescription": "MultiView",
                        "dxMultiView-elementAriaLabel": "Use the arrow keys or swipe to navigate between views",
                        "dxMultiView-itemAriaRoleDescription": "View",
                        "dxMultiView-itemAriaLabel": "{0} of {1}"
                    }
                }
            },
        74872:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/globalize/core.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _globalize = _interopRequireDefault(__webpack_require__( /*! globalize */ 71272));
                var _core = _interopRequireDefault(__webpack_require__( /*! ../core */ 91331));
                var _en = __webpack_require__( /*! ../cldr-data/en */ 35608);
                var _supplemental = __webpack_require__( /*! ../cldr-data/supplemental */ 57421);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                if (_globalize.default && _globalize.default.load) {
                    if (!_globalize.default.locale()) {
                        _globalize.default.load(_en.enCldr, _supplemental.supplementalCldr);
                        _globalize.default.locale("en")
                    }
                    _core.default.inject({
                        locale: function(locale) {
                            if (!locale) {
                                return _globalize.default.locale().locale
                            }
                            _globalize.default.locale(locale)
                        }
                    })
                }
            },
        7239:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/globalize/currency.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _open_xml_currency_format = _interopRequireDefault(__webpack_require__( /*! ../open_xml_currency_format */ 44592));
                __webpack_require__( /*! ./core */ 74872);
                __webpack_require__( /*! ./number */ 908);
                __webpack_require__( /*! ../currency */ 89740);
                __webpack_require__( /*! globalize/currency */ 71272);
                var _globalize = _interopRequireDefault(__webpack_require__( /*! globalize */ 71272));
                var _config = _interopRequireDefault(__webpack_require__( /*! ../../core/config */ 80209));
                var _number2 = _interopRequireDefault(__webpack_require__( /*! ../number */ 18016));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const CURRENCY_STYLES = ["symbol", "accounting"];
                if (_globalize.default && _globalize.default.formatCurrency) {
                    if ("en" === _globalize.default.locale().locale) {
                        _globalize.default.locale("en")
                    }
                    const formattersCache = {};
                    const getFormatter = (currency, format) => {
                        let formatter;
                        let formatCacheKey;
                        if ("object" === typeof format) {
                            formatCacheKey = _globalize.default.locale().locale + ":" + currency + ":" + JSON.stringify(format)
                        } else {
                            formatCacheKey = _globalize.default.locale().locale + ":" + currency + ":" + format
                        }
                        formatter = formattersCache[formatCacheKey];
                        if (!formatter) {
                            formatter = formattersCache[formatCacheKey] = _globalize.default.currencyFormatter(currency, format)
                        }
                        return formatter
                    };
                    const globalizeCurrencyLocalization = {
                        _formatNumberCore: function(value, format, formatConfig) {
                            if ("currency" === format) {
                                const currency = formatConfig && formatConfig.currency || (0, _config.default)().defaultCurrency;
                                return getFormatter(currency, this._normalizeFormatConfig(format, formatConfig, value))(value)
                            }
                            return this.callBase.apply(this, arguments)
                        },
                        _normalizeFormatConfig: function(format, formatConfig, value) {
                            const normalizedConfig = this.callBase(format, formatConfig, value);
                            if ("currency" === format) {
                                var _formatConfig$useCurr;
                                const useAccountingStyle = null !== (_formatConfig$useCurr = formatConfig.useCurrencyAccountingStyle) && void 0 !== _formatConfig$useCurr ? _formatConfig$useCurr : (0, _config.default)().defaultUseCurrencyAccountingStyle;
                                normalizedConfig.style = CURRENCY_STYLES[+useAccountingStyle]
                            }
                            return normalizedConfig
                        },
                        format: function(value, format) {
                            if ("number" !== typeof value) {
                                return value
                            }
                            format = this._normalizeFormat(format);
                            if (format) {
                                if ("default" === format.currency) {
                                    format.currency = (0, _config.default)().defaultCurrency
                                }
                                if ("currency" === format.type) {
                                    return this._formatNumber(value, this._parseNumberFormatString("currency"), format)
                                } else if (!format.type && format.currency) {
                                    return getFormatter(format.currency, format)(value)
                                }
                            }
                            return this.callBase.apply(this, arguments)
                        },
                        getCurrencySymbol: function(currency) {
                            if (!currency) {
                                currency = (0, _config.default)().defaultCurrency
                            }
                            return _globalize.default.cldr.main("numbers/currencies/" + currency)
                        },
                        getOpenXmlCurrencyFormat: function(currency) {
                            const currencySymbol = this.getCurrencySymbol(currency).symbol;
                            const accountingFormat = _globalize.default.cldr.main("numbers/currencyFormats-numberSystem-latn").accounting;
                            return (0, _open_xml_currency_format.default)(currencySymbol, accountingFormat)
                        }
                    };
                    _number2.default.inject(globalizeCurrencyLocalization)
                }
            },
        60316:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/globalize/date.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ./core */ 74872);
                __webpack_require__( /*! ./number */ 908);
                __webpack_require__( /*! globalize/date */ 71272);
                var _globalize = _interopRequireDefault(__webpack_require__( /*! globalize */ 71272));
                var _date2 = _interopRequireDefault(__webpack_require__( /*! ../date */ 91500));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var iteratorUtils = function(obj, nodeInterop) {
                    if (!nodeInterop && obj && obj.__esModule) {
                        return obj
                    }
                    if (null === obj || "object" !== typeof obj && "function" !== typeof obj) {
                        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 ("default" !== key && 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
                }(__webpack_require__( /*! ../../core/utils/iterator */ 95479));

                function _getRequireWildcardCache(nodeInterop) {
                    if ("function" !== typeof WeakMap) {
                        return null
                    }
                    var cacheBabelInterop = new WeakMap;
                    var cacheNodeInterop = new WeakMap;
                    return (_getRequireWildcardCache = function(nodeInterop) {
                        return nodeInterop ? cacheNodeInterop : cacheBabelInterop
                    })(nodeInterop)
                }

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const ACCEPTABLE_JSON_FORMAT_PROPERTIES = ["skeleton", "date", "time", "datetime", "raw"];
                const RTL_MARKS_REGEX = /[\u200E\u200F]/g;
                if (_globalize.default && _globalize.default.formatDate) {
                    if ("en" === _globalize.default.locale().locale) {
                        _globalize.default.locale("en")
                    }
                    const formattersCache = {};
                    const FORMATS_TO_GLOBALIZE_MAP = {
                        shortdate: {
                            path: "dateTimeFormats/availableFormats/yMd"
                        },
                        shorttime: {
                            path: "timeFormats/short"
                        },
                        longdate: {
                            path: "dateFormats/full"
                        },
                        longtime: {
                            path: "timeFormats/medium"
                        },
                        monthandday: {
                            path: "dateTimeFormats/availableFormats/MMMMd"
                        },
                        monthandyear: {
                            path: "dateTimeFormats/availableFormats/yMMMM"
                        },
                        quarterandyear: {
                            path: "dateTimeFormats/availableFormats/yQQQ"
                        },
                        day: {
                            path: "dateTimeFormats/availableFormats/d"
                        },
                        year: {
                            path: "dateTimeFormats/availableFormats/y"
                        },
                        shortdateshorttime: {
                            path: "dateTimeFormats/short",
                            parts: ["shorttime", "shortdate"]
                        },
                        longdatelongtime: {
                            path: "dateTimeFormats/medium",
                            parts: ["longtime", "longdate"]
                        },
                        month: {
                            pattern: "LLLL"
                        },
                        shortyear: {
                            pattern: "yy"
                        },
                        dayofweek: {
                            pattern: "EEEE"
                        },
                        quarter: {
                            pattern: "QQQ"
                        },
                        millisecond: {
                            pattern: "SSS"
                        },
                        hour: {
                            pattern: "HH"
                        },
                        minute: {
                            pattern: "mm"
                        },
                        second: {
                            pattern: "ss"
                        }
                    };
                    const globalizeDateLocalization = {
                        engine: function() {
                            return "globalize"
                        },
                        _getPatternByFormat: function(format) {
                            const that = this;
                            const lowerFormat = format.toLowerCase();
                            const globalizeFormat = FORMATS_TO_GLOBALIZE_MAP[lowerFormat];
                            if ("datetime-local" === lowerFormat) {
                                return "yyyy-MM-ddTHH':'mm':'ss"
                            }
                            if (!globalizeFormat) {
                                return
                            }
                            let result = globalizeFormat.path && that._getFormatStringByPath(globalizeFormat.path) || globalizeFormat.pattern;
                            if (globalizeFormat.parts) {
                                iteratorUtils.each(globalizeFormat.parts, (index, part) => {
                                    result = result.replace("{" + index + "}", that._getPatternByFormat(part))
                                })
                            }
                            return result
                        },
                        _getFormatStringByPath: function(path) {
                            return _globalize.default.locale().main("dates/calendars/gregorian/" + path)
                        },
                        getPeriodNames: function(format, type) {
                            format = format || "wide";
                            type = "format" === type ? type : "stand-alone";
                            const json = _globalize.default.locale().main("dates/calendars/gregorian/dayPeriods/".concat(type, "/").concat(format));
                            return [json.am, json.pm]
                        },
                        getMonthNames: function(format, type) {
                            const months = _globalize.default.locale().main("dates/calendars/gregorian/months/" + ("format" === type ? type : "stand-alone") + "/" + (format || "wide"));
                            return iteratorUtils.map(months, month => month)
                        },
                        getDayNames: function(format) {
                            const days = _globalize.default.locale().main("dates/calendars/gregorian/days/stand-alone/" + (format || "wide"));
                            return iteratorUtils.map(days, day => day)
                        },
                        getTimeSeparator: function() {
                            return _globalize.default.locale().main("numbers/symbols-numberSystem-latn/timeSeparator")
                        },
                        removeRtlMarks: text => text.replace(RTL_MARKS_REGEX, ""),
                        format: function(date, format) {
                            if (!date) {
                                return
                            }
                            if (!format) {
                                return date
                            }
                            let formatter;
                            let formatCacheKey;
                            if ("function" === typeof format) {
                                return format(date)
                            }
                            if (format.formatter) {
                                return format.formatter(date)
                            }
                            format = format.type || format;
                            if ("string" === typeof format) {
                                formatCacheKey = _globalize.default.locale().locale + ":" + format;
                                formatter = formattersCache[formatCacheKey];
                                if (!formatter) {
                                    format = {
                                        raw: this._getPatternByFormat(format) || format
                                    };
                                    formatter = formattersCache[formatCacheKey] = _globalize.default.dateFormatter(format)
                                }
                            } else {
                                if (!this._isAcceptableFormat(format)) {
                                    return
                                }
                                formatter = _globalize.default.dateFormatter(format)
                            }
                            return this.removeRtlMarks(formatter(date))
                        },
                        parse: function(text, format) {
                            if (!text) {
                                return
                            }
                            if (!format || "function" === typeof format || (0, _type.isObject)(format) && !this._isAcceptableFormat(format)) {
                                if (format) {
                                    const parsedValue = this.callBase(text, format);
                                    if (parsedValue) {
                                        return parsedValue
                                    }
                                }
                                return _globalize.default.parseDate(text)
                            }
                            if (format.parser) {
                                return format.parser(text)
                            }
                            if ("string" === typeof format) {
                                format = {
                                    raw: this._getPatternByFormat(format) || format
                                }
                            }
                            const parsedDate = _globalize.default.parseDate(text, format);
                            return parsedDate ? parsedDate : this.callBase(text, format)
                        },
                        _isAcceptableFormat: function(format) {
                            if (format.parser) {
                                return true
                            }
                            for (let i = 0; i < ACCEPTABLE_JSON_FORMAT_PROPERTIES.length; i++) {
                                if (Object.prototype.hasOwnProperty.call(format, ACCEPTABLE_JSON_FORMAT_PROPERTIES[i])) {
                                    return true
                                }
                            }
                        },
                        firstDayOfWeekIndex: function() {
                            const firstDay = _globalize.default.locale().supplemental.weekData.firstDay();
                            return this._getDayKeys().indexOf(firstDay)
                        },
                        _getDayKeys: function() {
                            const days = _globalize.default.locale().main("dates/calendars/gregorian/days/format/short");
                            return iteratorUtils.map(days, (day, key) => key)
                        }
                    };
                    _date2.default.resetInjection();
                    _date2.default.inject(globalizeDateLocalization)
                }
            },
        46949:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/globalize/message.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ./core */ 74872);
                var _globalize = _interopRequireDefault(__webpack_require__( /*! globalize */ 71272));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../message */ 28109));
                var _core2 = _interopRequireDefault(__webpack_require__( /*! ../core */ 91331));
                __webpack_require__( /*! globalize/message */ 71272);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                if (_globalize.default && _globalize.default.formatMessage) {
                    const DEFAULT_LOCALE = "en";
                    const originalLoadMessages = _globalize.default.loadMessages;
                    _globalize.default.loadMessages = messages => {
                        _message.default.load(messages)
                    };
                    const globalizeMessageLocalization = {
                        engine: function() {
                            return "globalize"
                        },
                        ctor: function() {
                            this.load(this._dictionary)
                        },
                        load: function(messages) {
                            this.callBase(messages);
                            originalLoadMessages(messages)
                        },
                        getMessagesByLocales: function() {
                            return _globalize.default.cldr.get("globalize-messages")
                        },
                        getFormatter: function(key, locale) {
                            const currentLocale = locale || _core2.default.locale();
                            let formatter = this._getFormatterBase(key, locale);
                            if (!formatter) {
                                formatter = this._formatterByGlobalize(key, locale)
                            }
                            if (!formatter && currentLocale !== DEFAULT_LOCALE) {
                                formatter = this.getFormatter(key, DEFAULT_LOCALE)
                            }
                            return formatter
                        },
                        _formatterByGlobalize: function(key, locale) {
                            const currentGlobalize = !locale || locale === _core2.default.locale() ? _globalize.default : new _globalize.default(locale);
                            let result;
                            if (this._messageLoaded(key, locale)) {
                                result = currentGlobalize.messageFormatter(key)
                            }
                            return result
                        },
                        _messageLoaded: function(key, locale) {
                            const currentCldr = locale ? new _globalize.default(locale).cldr : _globalize.default.locale();
                            const value = currentCldr.get(["globalize-messages/{bundle}", key]);
                            return !!value
                        },
                        _loadSingle: function(key, value, locale) {
                            const data = {};
                            data[locale] = {};
                            data[locale][key] = value;
                            this.load(data)
                        }
                    };
                    _message.default.inject(globalizeMessageLocalization)
                }
            },
        908:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/globalize/number.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ./core */ 74872);
                var _globalize = _interopRequireDefault(__webpack_require__( /*! globalize */ 71272));
                var _number = _interopRequireDefault(__webpack_require__( /*! ../number */ 18016));
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../core/errors */ 17381));
                __webpack_require__( /*! globalize/number */ 71272);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                if (_globalize.default && _globalize.default.formatNumber) {
                    if ("en" === _globalize.default.locale().locale) {
                        _globalize.default.locale("en")
                    }
                    const formattersCache = {};
                    const getFormatter = format => {
                        let formatter;
                        let formatCacheKey;
                        if ("object" === typeof format) {
                            formatCacheKey = _globalize.default.locale().locale + ":" + JSON.stringify(format)
                        } else {
                            formatCacheKey = _globalize.default.locale().locale + ":" + format
                        }
                        formatter = formattersCache[formatCacheKey];
                        if (!formatter) {
                            formatter = formattersCache[formatCacheKey] = _globalize.default.numberFormatter(format)
                        }
                        return formatter
                    };
                    const globalizeNumberLocalization = {
                        engine: function() {
                            return "globalize"
                        },
                        _formatNumberCore: function(value, format, formatConfig) {
                            if ("exponential" === format) {
                                return this.callBase.apply(this, arguments)
                            }
                            return getFormatter(this._normalizeFormatConfig(format, formatConfig, value))(value)
                        },
                        _normalizeFormatConfig: function(format, formatConfig, value) {
                            let config;
                            if ("decimal" === format) {
                                config = {
                                    minimumIntegerDigits: formatConfig.precision || 1,
                                    useGrouping: false,
                                    minimumFractionDigits: 0,
                                    maximumFractionDigits: 20,
                                    round: value < 0 ? "ceil" : "floor"
                                }
                            } else {
                                config = this._getPrecisionConfig(formatConfig.precision)
                            }
                            if ("percent" === format) {
                                config.style = "percent"
                            }
                            return config
                        },
                        _getPrecisionConfig: function(precision) {
                            let config;
                            if (null === precision) {
                                config = {
                                    minimumFractionDigits: 0,
                                    maximumFractionDigits: 20
                                }
                            } else {
                                config = {
                                    minimumFractionDigits: precision || 0,
                                    maximumFractionDigits: precision || 0
                                }
                            }
                            return config
                        },
                        format: function(value, format) {
                            if ("number" !== typeof value) {
                                return value
                            }
                            format = this._normalizeFormat(format);
                            if (!format || "function" !== typeof format && !format.type && !format.formatter) {
                                return getFormatter(format)(value)
                            }
                            return this.callBase.apply(this, arguments)
                        },
                        parse: function(text, format) {
                            if (!text) {
                                return
                            }
                            if (format && (format.parser || "string" === typeof format)) {
                                return this.callBase.apply(this, arguments)
                            }
                            if (format) {
                                _errors.default.log("W0011")
                            }
                            let result = _globalize.default.parseNumber(text);
                            if (isNaN(result)) {
                                result = this.callBase.apply(this, arguments)
                            }
                            return result
                        }
                    };
                    _number.default.resetInjection();
                    _number.default.inject(globalizeNumberLocalization)
                }
            },
        13024:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/intl/date.js ***!
              \***********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _core = (obj = __webpack_require__( /*! ../core */ 91331), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const SYMBOLS_TO_REMOVE_REGEX = /[\u200E\u200F]/g;
                const NARROW_NO_BREAK_SPACE_REGEX = /[\u202F]/g;
                const getIntlFormatter = format => date => {
                    if (!format.timeZoneName) {
                        const year = date.getFullYear();
                        const recognizableAsTwentyCentury = String(year).length < 3;
                        const safeYearShift = 400;
                        const temporaryYearValue = recognizableAsTwentyCentury ? year + safeYearShift : year;
                        const utcDate = new Date(Date.UTC(temporaryYearValue, date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));
                        if (recognizableAsTwentyCentury) {
                            utcDate.setFullYear(year)
                        }
                        const utcFormat = (0, _extend.extend)({
                            timeZone: "UTC"
                        }, format);
                        return formatDateTime(utcDate, utcFormat)
                    }
                    return formatDateTime(date, format)
                };
                const formattersCache = {};

                function formatDateTime(date, format) {
                    return (format => {
                        const key = _core.default.locale() + "/" + JSON.stringify(format);
                        if (!formattersCache[key]) {
                            formattersCache[key] = new Intl.DateTimeFormat(_core.default.locale(), format).format
                        }
                        return formattersCache[key]
                    })(format)(date).replace(SYMBOLS_TO_REMOVE_REGEX, "").replace(NARROW_NO_BREAK_SPACE_REGEX, " ")
                }
                const formatNumber = number => new Intl.NumberFormat(_core.default.locale()).format(number);
                const getAlternativeNumeralsMap = (() => {
                    const numeralsMapCache = {};
                    return locale => {
                        if (!(locale in numeralsMapCache)) {
                            if ("0" === formatNumber(0)) {
                                numeralsMapCache[locale] = false;
                                return false
                            }
                            numeralsMapCache[locale] = {};
                            for (let i = 0; i < 10; ++i) {
                                numeralsMapCache[locale][formatNumber(i)] = i
                            }
                        }
                        return numeralsMapCache[locale]
                    }
                })();
                const normalizeNumerals = dateString => {
                    const alternativeNumeralsMap = getAlternativeNumeralsMap(_core.default.locale());
                    if (!alternativeNumeralsMap) {
                        return dateString
                    }
                    return dateString.split("").map(sign => sign in alternativeNumeralsMap ? String(alternativeNumeralsMap[sign]) : sign).join("")
                };
                const removeLeadingZeroes = str => str.replace(/(\D)0+(\d)/g, "$1$2");
                const normalizeMonth = text => text.replace("d\u2019", "de ");
                const intlFormats = {
                    day: {
                        day: "numeric"
                    },
                    dayofweek: {
                        weekday: "long"
                    },
                    longdate: {
                        weekday: "long",
                        year: "numeric",
                        month: "long",
                        day: "numeric"
                    },
                    longdatelongtime: {
                        weekday: "long",
                        year: "numeric",
                        month: "long",
                        day: "numeric",
                        hour: "numeric",
                        minute: "numeric",
                        second: "numeric"
                    },
                    longtime: {
                        hour: "numeric",
                        minute: "numeric",
                        second: "numeric"
                    },
                    month: {
                        month: "long"
                    },
                    monthandday: {
                        month: "long",
                        day: "numeric"
                    },
                    monthandyear: {
                        year: "numeric",
                        month: "long"
                    },
                    shortdate: {},
                    shorttime: {
                        hour: "numeric",
                        minute: "numeric"
                    },
                    shortyear: {
                        year: "2-digit"
                    },
                    year: {
                        year: "numeric"
                    }
                };
                Object.defineProperty(intlFormats, "shortdateshorttime", {
                    get: function() {
                        const defaultOptions = Intl.DateTimeFormat(_core.default.locale()).resolvedOptions();
                        return {
                            year: defaultOptions.year,
                            month: defaultOptions.month,
                            day: defaultOptions.day,
                            hour: "numeric",
                            minute: "numeric"
                        }
                    }
                });
                const getIntlFormat = format => "string" === typeof format && intlFormats[format.toLowerCase()];
                const monthNameStrategies = {
                    standalone: function(monthIndex, monthFormat) {
                        const date = new Date(1999, monthIndex, 13, 1);
                        const dateString = getIntlFormatter({
                            month: monthFormat
                        })(date);
                        return dateString
                    },
                    format: function(monthIndex, monthFormat) {
                        const date = new Date(0, monthIndex, 13, 1);
                        const dateString = normalizeMonth(getIntlFormatter({
                            day: "numeric",
                            month: monthFormat
                        })(date));
                        const parts = dateString.split(" ").filter(part => part.indexOf("13") < 0);
                        if (1 === parts.length) {
                            return parts[0]
                        } else if (2 === parts.length) {
                            return parts[0].length > parts[1].length ? parts[0] : parts[1]
                        }
                        return monthNameStrategies.standalone(monthIndex, monthFormat)
                    }
                };
                var _default = {
                    engine: function() {
                        return "intl"
                    },
                    getMonthNames: function(format, type) {
                        const monthFormat = {
                            wide: "long",
                            abbreviated: "short",
                            narrow: "narrow"
                        } [format || "wide"];
                        type = "format" === type ? type : "standalone";
                        return Array.apply(null, new Array(12)).map((_, monthIndex) => monthNameStrategies[type](monthIndex, monthFormat))
                    },
                    getDayNames: function(format) {
                        const result = (format => Array.apply(null, new Array(7)).map((_, dayIndex) => getIntlFormatter({
                            weekday: format
                        })(new Date(0, 0, dayIndex))))({
                            wide: "long",
                            abbreviated: "short",
                            short: "narrow",
                            narrow: "narrow"
                        } [format || "wide"]);
                        return result
                    },
                    getPeriodNames: function() {
                        const hour12Formatter = getIntlFormatter({
                            hour: "numeric",
                            hour12: true
                        });
                        return [1, 13].map(hours => {
                            const hourNumberText = formatNumber(1);
                            const timeParts = hour12Formatter(new Date(0, 0, 1, hours)).split(hourNumberText);
                            if (2 !== timeParts.length) {
                                return ""
                            }
                            const biggerPart = timeParts[0].length > timeParts[1].length ? timeParts[0] : timeParts[1];
                            return biggerPart.trim()
                        })
                    },
                    format: function(date, format) {
                        if (!date) {
                            return
                        }
                        if (!format) {
                            return date
                        }
                        if ("function" !== typeof format && !format.formatter) {
                            format = format.type || format
                        }
                        const intlFormat = getIntlFormat(format);
                        if (intlFormat) {
                            return getIntlFormatter(intlFormat)(date)
                        }
                        const formatType = typeof format;
                        if (format.formatter || "function" === formatType || "string" === formatType) {
                            return this.callBase.apply(this, arguments)
                        }
                        return getIntlFormatter(format)(date)
                    },
                    parse: function(dateString, format) {
                        let formatter;
                        if (format && !format.parser && "string" === typeof dateString) {
                            dateString = normalizeMonth(dateString);
                            formatter = date => normalizeMonth(this.format(date, format))
                        }
                        return this.callBase(dateString, formatter || format)
                    },
                    _parseDateBySimpleFormat: function(dateString, format) {
                        dateString = normalizeNumerals(dateString);
                        const formatParts = this.getFormatParts(format);
                        const dateParts = dateString.split(/\D+/).filter(part => part.length > 0);
                        if (formatParts.length !== dateParts.length) {
                            return
                        }
                        const dateArgs = this._generateDateArgs(formatParts, dateParts);
                        const constructValidDate = ampmShift => {
                            const parsedDate = ((dateArgs, ampmShift) => {
                                const hoursShift = ampmShift ? 12 : 0;
                                return new Date(dateArgs.year, dateArgs.month, dateArgs.day, (dateArgs.hours + hoursShift) % 24, dateArgs.minutes, dateArgs.seconds)
                            })(dateArgs, ampmShift);
                            if (actual = normalizeNumerals(this.format(parsedDate, format)), expected = dateString, removeLeadingZeroes(actual) === removeLeadingZeroes(expected)) {
                                return parsedDate
                            }
                            var actual, expected
                        };
                        return constructValidDate(false) || constructValidDate(true)
                    },
                    _generateDateArgs: function(formatParts, dateParts) {
                        const currentDate = new Date;
                        const dateArgs = {
                            year: currentDate.getFullYear(),
                            month: currentDate.getMonth(),
                            day: currentDate.getDate(),
                            hours: 0,
                            minutes: 0,
                            seconds: 0
                        };
                        formatParts.forEach((formatPart, index) => {
                            const datePart = dateParts[index];
                            let parsed = parseInt(datePart, 10);
                            if ("month" === formatPart) {
                                parsed -= 1
                            }
                            dateArgs[formatPart] = parsed
                        });
                        return dateArgs
                    },
                    formatUsesMonthName: function(format) {
                        if ("object" === typeof format && !(format.type || format.format)) {
                            return "long" === format.month
                        }
                        return this.callBase.apply(this, arguments)
                    },
                    formatUsesDayName: function(format) {
                        if ("object" === typeof format && !(format.type || format.format)) {
                            return "long" === format.weekday
                        }
                        return this.callBase.apply(this, arguments)
                    },
                    getTimeSeparator: function() {
                        return normalizeNumerals(formatDateTime(new Date(2001, 1, 1, 11, 11), {
                            hour: "numeric",
                            minute: "numeric",
                            hour12: false
                        })).replace(/\d/g, "")
                    },
                    getFormatParts: function(format) {
                        if ("string" === typeof format) {
                            return this.callBase(format)
                        }
                        const intlFormat = (0, _extend.extend)({}, intlFormats[format.toLowerCase()]);
                        const date = new Date(2001, 2, 4, 5, 6, 7);
                        let formattedDate = getIntlFormatter(intlFormat)(date);
                        formattedDate = normalizeNumerals(formattedDate);
                        return [{
                            name: "year",
                            value: 1
                        }, {
                            name: "month",
                            value: 3
                        }, {
                            name: "day",
                            value: 4
                        }, {
                            name: "hours",
                            value: 5
                        }, {
                            name: "minutes",
                            value: 6
                        }, {
                            name: "seconds",
                            value: 7
                        }].map(part => ({
                            name: part.name,
                            index: formattedDate.indexOf(part.value)
                        })).filter(part => part.index > -1).sort((a, b) => a.index - b.index).map(part => part.name)
                    }
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        38702:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/intl/number.js ***!
              \*************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _config = _interopRequireDefault(__webpack_require__( /*! ../../core/config */ 80209));
                var _core = _interopRequireDefault(__webpack_require__( /*! ../core */ 91331));
                var _open_xml_currency_format = _interopRequireDefault(__webpack_require__( /*! ../open_xml_currency_format */ 44592));
                var _accounting_formats = _interopRequireDefault(__webpack_require__( /*! ../cldr-data/accounting_formats */ 71868));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const CURRENCY_STYLES = ["standard", "accounting"];
                const detectCurrencySymbolRegex = /([^\s0]+)?(\s*)0*[.,]*0*(\s*)([^\s0]+)?/;
                const formattersCache = {};
                const getFormatter = format => {
                    const key = _core.default.locale() + "/" + JSON.stringify(format);
                    if (!formattersCache[key]) {
                        formattersCache[key] = new Intl.NumberFormat(_core.default.locale(), format).format
                    }
                    return formattersCache[key]
                };
                var _default = {
                    engine: function() {
                        return "intl"
                    },
                    _formatNumberCore: function(value, format, formatConfig) {
                        if ("exponential" === format) {
                            return this.callBase.apply(this, arguments)
                        }
                        return getFormatter(this._normalizeFormatConfig(format, formatConfig, value))(value)
                    },
                    _normalizeFormatConfig: function(format, formatConfig, value) {
                        let config;
                        if ("decimal" === format) {
                            const fractionDigits = String(value).split(".")[1];
                            config = {
                                minimumIntegerDigits: formatConfig.precision || void 0,
                                useGrouping: false,
                                maximumFractionDigits: fractionDigits && fractionDigits.length,
                                round: value < 0 ? "ceil" : "floor"
                            }
                        } else {
                            config = this._getPrecisionConfig(formatConfig.precision)
                        }
                        if ("percent" === format) {
                            config.style = "percent"
                        } else if ("currency" === format) {
                            var _formatConfig$useCurr;
                            const useAccountingStyle = null !== (_formatConfig$useCurr = formatConfig.useCurrencyAccountingStyle) && void 0 !== _formatConfig$useCurr ? _formatConfig$useCurr : (0, _config.default)().defaultUseCurrencyAccountingStyle;
                            config.style = "currency";
                            config.currency = formatConfig.currency || (0, _config.default)().defaultCurrency;
                            config.currencySign = CURRENCY_STYLES[+useAccountingStyle]
                        }
                        return config
                    },
                    _getPrecisionConfig: function(precision) {
                        let config;
                        if (null === precision) {
                            config = {
                                minimumFractionDigits: 0,
                                maximumFractionDigits: 20
                            }
                        } else {
                            config = {
                                minimumFractionDigits: precision || 0,
                                maximumFractionDigits: precision || 0
                            }
                        }
                        return config
                    },
                    format: function(value, format) {
                        if ("number" !== typeof value) {
                            return value
                        }
                        format = this._normalizeFormat(format);
                        if ("default" === format.currency) {
                            format.currency = (0, _config.default)().defaultCurrency
                        }
                        if (!format || "function" !== typeof format && !format.type && !format.formatter) {
                            return getFormatter(format)(value)
                        }
                        return this.callBase.apply(this, arguments)
                    },
                    _getCurrencySymbolInfo: function(currency) {
                        const formatter = (currency => new Intl.NumberFormat(_core.default.locale(), {
                            style: "currency",
                            currency: currency
                        }))(currency);
                        return this._extractCurrencySymbolInfo(formatter.format(0))
                    },
                    _extractCurrencySymbolInfo: function(currencyValueString) {
                        const match = detectCurrencySymbolRegex.exec(currencyValueString) || [];
                        const position = match[1] ? "before" : "after";
                        const symbol = match[1] || match[4] || "";
                        const delimiter = match[2] || match[3] || "";
                        return {
                            position: position,
                            symbol: symbol,
                            delimiter: delimiter
                        }
                    },
                    getCurrencySymbol: function(currency) {
                        if (!currency) {
                            currency = (0, _config.default)().defaultCurrency
                        }
                        const symbolInfo = this._getCurrencySymbolInfo(currency);
                        return {
                            symbol: symbolInfo.symbol
                        }
                    },
                    getOpenXmlCurrencyFormat: function(currency) {
                        const targetCurrency = currency || (0, _config.default)().defaultCurrency;
                        const currencySymbol = this._getCurrencySymbolInfo(targetCurrency).symbol;
                        const closestAccountingFormat = _core.default.getValueByClosestLocale(locale => _accounting_formats.default[locale]);
                        return (0, _open_xml_currency_format.default)(currencySymbol, closestAccountingFormat)
                    }
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        9821:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/language_codes.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getLanguageId = function() {
                    return LANGUAGE_CODES[_core.default.locale()]
                };
                var _core = (obj = __webpack_require__( /*! ./core */ 91331), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const LANGUAGE_CODES = {
                    ar: 1,
                    bg: 2,
                    ca: 3,
                    "zh-Hans": 4,
                    cs: 5,
                    da: 6,
                    de: 7,
                    el: 8,
                    en: 9,
                    es: 10,
                    fi: 11,
                    fr: 12,
                    he: 13,
                    hu: 14,
                    is: 15,
                    it: 16,
                    ja: 17,
                    ko: 18,
                    nl: 19,
                    no: 20,
                    pl: 21,
                    pt: 22,
                    rm: 23,
                    ro: 24,
                    ru: 25,
                    hr: 26,
                    sk: 27,
                    sq: 28,
                    sv: 29,
                    th: 30,
                    tr: 31,
                    ur: 32,
                    id: 33,
                    uk: 34,
                    be: 35,
                    sl: 36,
                    et: 37,
                    lv: 38,
                    lt: 39,
                    tg: 40,
                    fa: 41,
                    vi: 42,
                    hy: 43,
                    az: 44,
                    eu: 45,
                    hsb: 46,
                    mk: 47,
                    tn: 50,
                    xh: 52,
                    zu: 53,
                    af: 54,
                    ka: 55,
                    fo: 56,
                    hi: 57,
                    mt: 58,
                    se: 59,
                    ga: 60,
                    ms: 62,
                    kk: 63,
                    ky: 64,
                    sw: 65,
                    tk: 66,
                    uz: 67,
                    tt: 68,
                    bn: 69,
                    pa: 70,
                    gu: 71,
                    or: 72,
                    ta: 73,
                    te: 74,
                    kn: 75,
                    ml: 76,
                    as: 77,
                    mr: 78,
                    sa: 79,
                    mn: 80,
                    bo: 81,
                    cy: 82,
                    km: 83,
                    lo: 84,
                    gl: 86,
                    kok: 87,
                    syr: 90,
                    si: 91,
                    iu: 93,
                    am: 94,
                    tzm: 95,
                    ne: 97,
                    fy: 98,
                    ps: 99,
                    fil: 100,
                    dv: 101,
                    ha: 104,
                    yo: 106,
                    quz: 107,
                    nso: 108,
                    ba: 109,
                    lb: 110,
                    kl: 111,
                    ig: 112,
                    ii: 120,
                    arn: 122,
                    moh: 124,
                    br: 126,
                    ug: 128,
                    mi: 129,
                    oc: 130,
                    co: 131,
                    gsw: 132,
                    sah: 133,
                    qut: 134,
                    rw: 135,
                    wo: 136,
                    prs: 140,
                    gd: 145,
                    "ar-SA": 1025,
                    "bg-BG": 1026,
                    "ca-ES": 1027,
                    "zh-TW": 1028,
                    "cs-CZ": 1029,
                    "da-DK": 1030,
                    "de-DE": 1031,
                    "el-GR": 1032,
                    "en-US": 1033,
                    "fi-FI": 1035,
                    "fr-FR": 1036,
                    "he-IL": 1037,
                    "hu-HU": 1038,
                    "is-IS": 1039,
                    "it-IT": 1040,
                    "ja-JP": 1041,
                    "ko-KR": 1042,
                    "nl-NL": 1043,
                    "nb-NO": 1044,
                    "pl-PL": 1045,
                    "pt-BR": 1046,
                    "rm-CH": 1047,
                    "ro-RO": 1048,
                    "ru-RU": 1049,
                    "hr-HR": 1050,
                    "sk-SK": 1051,
                    "sq-AL": 1052,
                    "sv-SE": 1053,
                    "th-TH": 1054,
                    "tr-TR": 1055,
                    "ur-PK": 1056,
                    "id-ID": 1057,
                    "uk-UA": 1058,
                    "be-BY": 1059,
                    "sl-SI": 1060,
                    "et-EE": 1061,
                    "lv-LV": 1062,
                    "lt-LT": 1063,
                    "tg-Cyrl-TJ": 1064,
                    "fa-IR": 1065,
                    "vi-VN": 1066,
                    "hy-AM": 1067,
                    "az-Latn-AZ": 1068,
                    "eu-ES": 1069,
                    "hsb-DE": 1070,
                    "mk-MK": 1071,
                    "tn-ZA": 1074,
                    "xh-ZA": 1076,
                    "zu-ZA": 1077,
                    "af-ZA": 1078,
                    "ka-GE": 1079,
                    "fo-FO": 1080,
                    "hi-IN": 1081,
                    "mt-MT": 1082,
                    "se-NO": 1083,
                    "ms-MY": 1086,
                    "kk-KZ": 1087,
                    "ky-KG": 1088,
                    "sw-KE": 1089,
                    "tk-TM": 1090,
                    "uz-Latn-UZ": 1091,
                    "tt-RU": 1092,
                    "bn-IN": 1093,
                    "pa-IN": 1094,
                    "gu-IN": 1095,
                    "or-IN": 1096,
                    "ta-IN": 1097,
                    "te-IN": 1098,
                    "kn-IN": 1099,
                    "ml-IN": 1100,
                    "as-IN": 1101,
                    "mr-IN": 1102,
                    "sa-IN": 1103,
                    "mn-MN": 1104,
                    "bo-CN": 1105,
                    "cy-GB": 1106,
                    "km-KH": 1107,
                    "lo-LA": 1108,
                    "gl-ES": 1110,
                    "kok-IN": 1111,
                    "syr-SY": 1114,
                    "si-LK": 1115,
                    "iu-Cans-CA": 1117,
                    "am-ET": 1118,
                    "ne-NP": 1121,
                    "fy-NL": 1122,
                    "ps-AF": 1123,
                    "fil-PH": 1124,
                    "dv-MV": 1125,
                    "ha-Latn-NG": 1128,
                    "yo-NG": 1130,
                    "quz-BO": 1131,
                    "nso-ZA": 1132,
                    "ba-RU": 1133,
                    "lb-LU": 1134,
                    "kl-GL": 1135,
                    "ig-NG": 1136,
                    "ii-CN": 1144,
                    "arn-CL": 1146,
                    "moh-CA": 1148,
                    "br-FR": 1150,
                    "ug-CN": 1152,
                    "mi-NZ": 1153,
                    "oc-FR": 1154,
                    "co-FR": 1155,
                    "gsw-FR": 1156,
                    "sah-RU": 1157,
                    "qut-GT": 1158,
                    "rw-RW": 1159,
                    "wo-SN": 1160,
                    "prs-AF": 1164,
                    "gd-GB": 1169,
                    "ar-IQ": 2049,
                    "zh-CN": 2052,
                    "de-CH": 2055,
                    "en-GB": 2057,
                    "es-MX": 2058,
                    "fr-BE": 2060,
                    "it-CH": 2064,
                    "nl-BE": 2067,
                    "nn-NO": 2068,
                    "pt-PT": 2070,
                    "sr-Latn-CS": 2074,
                    "sv-FI": 2077,
                    "az-Cyrl-AZ": 2092,
                    "dsb-DE": 2094,
                    "se-SE": 2107,
                    "ga-IE": 2108,
                    "ms-BN": 2110,
                    "uz-Cyrl-UZ": 2115,
                    "bn-BD": 2117,
                    "mn-Mong-CN": 2128,
                    "iu-Latn-CA": 2141,
                    "tzm-Latn-DZ": 2143,
                    "quz-EC": 2155,
                    "ar-EG": 3073,
                    "zh-HK": 3076,
                    "de-AT": 3079,
                    "en-AU": 3081,
                    "es-ES": 3082,
                    "fr-CA": 3084,
                    "sr-Cyrl-CS": 3098,
                    "se-FI": 3131,
                    "quz-PE": 3179,
                    "ar-LY": 4097,
                    "zh-SG": 4100,
                    "de-LU": 4103,
                    "en-CA": 4105,
                    "es-GT": 4106,
                    "fr-CH": 4108,
                    "hr-BA": 4122,
                    "smj-NO": 4155,
                    "ar-DZ": 5121,
                    "zh-MO": 5124,
                    "de-LI": 5127,
                    "en-NZ": 5129,
                    "es-CR": 5130,
                    "fr-LU": 5132,
                    "bs-Latn-BA": 5146,
                    "smj-SE": 5179,
                    "ar-MA": 6145,
                    "en-IE": 6153,
                    "es-PA": 6154,
                    "fr-MC": 6156,
                    "sr-Latn-BA": 6170,
                    "sma-NO": 6203,
                    "ar-TN": 7169,
                    "en-ZA": 7177,
                    "es-DO": 7178,
                    "sr-Cyrl-BA": 7194,
                    "sma-SE": 7227,
                    "ar-OM": 8193,
                    "en-JM": 8201,
                    "es-VE": 8202,
                    "bs-Cyrl-BA": 8218,
                    "sms-FI": 8251,
                    "ar-YE": 9217,
                    "en-029": 9225,
                    "es-CO": 9226,
                    "sr-Latn-RS": 9242,
                    "smn-FI": 9275,
                    "ar-SY": 10241,
                    "en-BZ": 10249,
                    "es-PE": 10250,
                    "sr-Cyrl-RS": 10266,
                    "ar-JO": 11265,
                    "en-TT": 11273,
                    "es-AR": 11274,
                    "sr-Latn-ME": 11290,
                    "ar-LB": 12289,
                    "en-ZW": 12297,
                    "es-EC": 12298,
                    "sr-Cyrl-ME": 12314,
                    "ar-KW": 13313,
                    "en-PH": 13321,
                    "es-CL": 13322,
                    "ar-AE": 14337,
                    "es-UY": 14346,
                    "ar-BH": 15361,
                    "es-PY": 15370,
                    "ar-QA": 16385,
                    "en-IN": 16393,
                    "es-BO": 16394,
                    "en-MY": 17417,
                    "es-SV": 17418,
                    "en-SG": 18441,
                    "es-HN": 18442,
                    "es-NI": 19466,
                    "es-PR": 20490,
                    "es-US": 21514,
                    "bs-Cyrl": 25626,
                    "bs-Latn": 26650,
                    "sr-Cyrl": 27674,
                    "sr-Latn": 28698,
                    smn: 28731,
                    "az-Cyrl": 29740,
                    sms: 29755,
                    zh: 30724,
                    nn: 30740,
                    bs: 30746,
                    "az-Latn": 30764,
                    sma: 30779,
                    "uz-Cyrl": 30787,
                    "mn-Cyrl": 30800,
                    "iu-Cans": 30813,
                    "zh-Hant": 31748,
                    nb: 31764,
                    sr: 31770,
                    "tg-Cyrl": 31784,
                    dsb: 31790,
                    smj: 31803,
                    "uz-Latn": 31811,
                    "mn-Mong": 31824,
                    "iu-Latn": 31837,
                    "tzm-Latn": 31839,
                    "ha-Latn": 31848
                }
            },
        59937:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/ldml/date.format.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getFormat = void 0;
                var _number = (obj = __webpack_require__( /*! ../number */ 18016), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const FORMAT_SEPARATORS = " .,:;/\\<>()-[]\u060c";
                const checkDigit = function(char) {
                    const code = char && _number.default.convertDigits(char, false).charCodeAt(0);
                    const zeroCode = _number.default.convertDigits("0", false).charCodeAt(0);
                    return zeroCode <= code && code < zeroCode + 10
                };
                const checkPatternContinue = function(text, patterns, index, isDigit) {
                    const char = text[index];
                    const nextChar = text[index + 1];
                    if (!isDigit) {
                        if ("." === char || " " === char && ". m." === text.slice(index - 1, index + 3)) {
                            return true
                        }
                        if ("-" === char && !checkDigit(nextChar)) {
                            return true
                        }
                    }
                    const isDigitChanged = isDigit && patterns.some(pattern => text[index] !== pattern[index]);
                    return FORMAT_SEPARATORS.indexOf(char) < 0 && isDigit === checkDigit(char) && (!isDigit || isDigitChanged)
                };
                const getPatternStartIndex = function(defaultPattern, index) {
                    if (!checkDigit(defaultPattern[index])) {
                        while (index > 0 && !checkDigit(defaultPattern[index - 1]) && ("." === defaultPattern[index - 1] || FORMAT_SEPARATORS.indexOf(defaultPattern[index - 1]) < 0)) {
                            index--
                        }
                    }
                    return index
                };
                const formatValue = function(value, formatter) {
                    if (Array.isArray(value)) {
                        return value.map((function(value) {
                            return (formatter(value) || "").toString()
                        }))
                    }
                    return (formatter(value) || "").toString()
                };
                const ESCAPE_CHARS_REGEXP = /[a-zA-Z]/g;
                exports.getFormat = function(formatter) {
                    const processedIndexes = [];
                    const defaultPattern = formatValue(new Date(2009, 8, 8, 6, 5, 4), formatter);
                    const patternPositions = defaultPattern.split("").map((function(_, index) {
                        return index
                    }));
                    let result = defaultPattern;
                    const replacedPatterns = {};
                    const datePatterns = [{
                        date: new Date(2009, 8, 8, 6, 5, 4, 111),
                        pattern: "S"
                    }, {
                        date: new Date(2009, 8, 8, 6, 5, 2),
                        pattern: "s"
                    }, {
                        date: new Date(2009, 8, 8, 6, 2, 4),
                        pattern: "m"
                    }, {
                        date: new Date(2009, 8, 8, 18, 5, 4),
                        pattern: "H",
                        isDigit: true
                    }, {
                        date: new Date(2009, 8, 8, 2, 5, 4),
                        pattern: "h",
                        isDigit: true
                    }, {
                        date: new Date(2009, 8, 8, 18, 5, 4),
                        pattern: "a",
                        isDigit: false
                    }, {
                        date: new Date(2009, 8, 1, 6, 5, 4),
                        pattern: "d"
                    }, {
                        date: [new Date(2009, 8, 2, 6, 5, 4), new Date(2009, 8, 3, 6, 5, 4), new Date(2009, 8, 4, 6, 5, 4)],
                        pattern: "E"
                    }, {
                        date: new Date(2009, 9, 6, 6, 5, 4),
                        pattern: "M"
                    }, {
                        date: new Date(1998, 8, 8, 6, 5, 4),
                        pattern: "y"
                    }];
                    if (!result) {
                        return
                    }
                    datePatterns.forEach((function(test) {
                        const diff = function(defaultPattern, patterns, processedIndexes, isDigit) {
                            let i = 0;
                            const result = [];
                            const patternsFilter = function(pattern) {
                                return defaultPattern[i] !== pattern[i] && (void 0 === isDigit || checkDigit(defaultPattern[i]) === isDigit)
                            };
                            if (!Array.isArray(patterns)) {
                                patterns = [patterns]
                            }
                            for (i = 0; i < defaultPattern.length; i++) {
                                if (processedIndexes.indexOf(i) < 0 && patterns.filter(patternsFilter).length) {
                                    i = getPatternStartIndex(defaultPattern, i);
                                    do {
                                        isDigit = checkDigit(defaultPattern[i]);
                                        if (!result.length && !isDigit && checkDigit(patterns[0][i])) {
                                            break
                                        }
                                        result.push(i);
                                        processedIndexes.unshift(i);
                                        i++
                                    } while (defaultPattern[i] && checkPatternContinue(defaultPattern, patterns, i, isDigit));
                                    break
                                }
                            }
                            if (1 === result.length && ("0" === defaultPattern[processedIndexes[0] - 1] || "\u0660" === defaultPattern[processedIndexes[0] - 1])) {
                                processedIndexes.unshift(processedIndexes[0] - 1)
                            }
                            return result
                        }(defaultPattern, formatValue(test.date, formatter), processedIndexes, test.isDigit);
                        const pattern = "M" === test.pattern && !replacedPatterns.d ? "L" : test.pattern;
                        result = function(pattern, indexes, char, patternPositions) {
                            let i;
                            let index;
                            let patternIndex;
                            if (!checkDigit(pattern[indexes[0]] || "0")) {
                                const letterCount = Math.max(indexes.length <= 3 ? 3 : 4, char.length);
                                while (indexes.length > letterCount) {
                                    index = indexes.pop();
                                    patternIndex = patternPositions[index];
                                    patternPositions[index] = -1;
                                    for (i = index + 1; i < patternPositions.length; i++) {
                                        patternPositions[i]--
                                    }
                                    pattern = pattern.substr(0, patternIndex) + pattern.substr(patternIndex + 1)
                                }
                                index = indexes[indexes.length - 1] + 1, patternIndex = index < patternPositions.length ? patternPositions[index] : index;
                                while (indexes.length < letterCount) {
                                    indexes.push(indexes[indexes.length - 1] + 1);
                                    for (i = index; i < patternPositions.length; i++) {
                                        patternPositions[i]++
                                    }
                                    pattern = pattern.substr(0, patternIndex) + " " + pattern.substr(patternIndex)
                                }
                            }
                            pattern = function(pattern, indexes, char, patternPositions) {
                                const baseCharIndex = indexes[0];
                                const patternIndex = baseCharIndex < patternPositions.length ? patternPositions[baseCharIndex] : baseCharIndex;
                                indexes.forEach((function(_, index) {
                                    pattern = pattern.substr(0, patternIndex + index) + (char.length > 1 ? char[index] : char) + pattern.substr(patternIndex + index + 1)
                                }));
                                if (1 === indexes.length) {
                                    pattern = pattern.replace("0" + char, char + char);
                                    pattern = pattern.replace("\u0660" + char, char + char)
                                }
                                return pattern
                            }(pattern, indexes, char, patternPositions);
                            return pattern
                        }(result, diff, pattern, patternPositions);
                        replacedPatterns[pattern] = diff.length
                    }));
                    result = function(pattern, defaultPattern, processedIndexes, patternPositions) {
                        const escapeIndexes = defaultPattern.split("").map((function(char, index) {
                            if (processedIndexes.indexOf(index) < 0 && (char.match(ESCAPE_CHARS_REGEXP) || "'" === char)) {
                                return patternPositions[index]
                            }
                            return -1
                        }));
                        pattern = pattern.split("").map((function(char, index) {
                            let result = char;
                            const isCurrentCharEscaped = escapeIndexes.indexOf(index) >= 0;
                            const isPrevCharEscaped = index > 0 && escapeIndexes.indexOf(index - 1) >= 0;
                            const isNextCharEscaped = escapeIndexes.indexOf(index + 1) >= 0;
                            if (isCurrentCharEscaped) {
                                if (!isPrevCharEscaped) {
                                    result = "'" + result
                                }
                                if (!isNextCharEscaped) {
                                    result += "'"
                                }
                            }
                            return result
                        })).join("");
                        return pattern
                    }(result, defaultPattern, processedIndexes, patternPositions);
                    if (processedIndexes.length) {
                        return result
                    }
                }
            },
        40594:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/ldml/date.formatter.js ***!
              \*********************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.getFormatter = void 0;

                function leftPad(text, length) {
                    while (text.length < length) {
                        text = "0" + text
                    }
                    return text
                }
                const FORMAT_TYPES = {
                    3: "abbreviated",
                    4: "wide",
                    5: "narrow"
                };
                const LDML_FORMATTERS = {
                    y: function(date, count, useUtc) {
                        let year = date[useUtc ? "getUTCFullYear" : "getFullYear"]();
                        if (2 === count) {
                            year %= 100
                        }
                        return leftPad(year.toString(), count)
                    },
                    M: function(date, count, useUtc, dateParts) {
                        const month = date[useUtc ? "getUTCMonth" : "getMonth"]();
                        const formatType = FORMAT_TYPES[count];
                        if (formatType) {
                            return dateParts.getMonthNames(formatType, "format")[month]
                        }
                        return leftPad((month + 1).toString(), Math.min(count, 2))
                    },
                    L: function(date, count, useUtc, dateParts) {
                        const month = date[useUtc ? "getUTCMonth" : "getMonth"]();
                        const formatType = FORMAT_TYPES[count];
                        if (formatType) {
                            return dateParts.getMonthNames(formatType, "standalone")[month]
                        }
                        return leftPad((month + 1).toString(), Math.min(count, 2))
                    },
                    Q: function(date, count, useUtc, dateParts) {
                        const month = date[useUtc ? "getUTCMonth" : "getMonth"]();
                        const quarter = Math.floor(month / 3);
                        const formatType = FORMAT_TYPES[count];
                        if (formatType) {
                            return dateParts.getQuarterNames(formatType)[quarter]
                        }
                        return leftPad((quarter + 1).toString(), Math.min(count, 2))
                    },
                    E: function(date, count, useUtc, dateParts) {
                        const day = date[useUtc ? "getUTCDay" : "getDay"]();
                        const formatType = FORMAT_TYPES[count < 3 ? 3 : count];
                        return dateParts.getDayNames(formatType)[day]
                    },
                    a: function(date, count, useUtc, dateParts) {
                        const hours = date[useUtc ? "getUTCHours" : "getHours"]();
                        const period = hours < 12 ? 0 : 1;
                        const formatType = FORMAT_TYPES[count];
                        return dateParts.getPeriodNames(formatType)[period]
                    },
                    d: function(date, count, useUtc) {
                        return leftPad(date[useUtc ? "getUTCDate" : "getDate"]().toString(), Math.min(count, 2))
                    },
                    H: function(date, count, useUtc) {
                        return leftPad(date[useUtc ? "getUTCHours" : "getHours"]().toString(), Math.min(count, 2))
                    },
                    h: function(date, count, useUtc) {
                        const hours = date[useUtc ? "getUTCHours" : "getHours"]();
                        return leftPad((hours % 12 || 12).toString(), Math.min(count, 2))
                    },
                    m: function(date, count, useUtc) {
                        return leftPad(date[useUtc ? "getUTCMinutes" : "getMinutes"]().toString(), Math.min(count, 2))
                    },
                    s: function(date, count, useUtc) {
                        return leftPad(date[useUtc ? "getUTCSeconds" : "getSeconds"]().toString(), Math.min(count, 2))
                    },
                    S: function(date, count, useUtc) {
                        return leftPad(date[useUtc ? "getUTCMilliseconds" : "getMilliseconds"]().toString(), 3).substr(0, count)
                    },
                    x: function(date, count, useUtc) {
                        const timezoneOffset = useUtc ? 0 : date.getTimezoneOffset();
                        const signPart = timezoneOffset > 0 ? "-" : "+";
                        const timezoneOffsetAbs = Math.abs(timezoneOffset);
                        const hours = Math.floor(timezoneOffsetAbs / 60);
                        const minutes = timezoneOffsetAbs % 60;
                        const hoursPart = leftPad(hours.toString(), 2);
                        const minutesPart = leftPad(minutes.toString(), 2);
                        return signPart + hoursPart + (count >= 3 ? ":" : "") + (count > 1 || minutes ? minutesPart : "")
                    },
                    X: function(date, count, useUtc) {
                        if (useUtc || !date.getTimezoneOffset()) {
                            return "Z"
                        }
                        return LDML_FORMATTERS.x(date, count, useUtc)
                    },
                    Z: function(date, count, useUtc) {
                        return LDML_FORMATTERS.X(date, count >= 5 ? 3 : 2, useUtc)
                    }
                };
                exports.getFormatter = function(format, dateParts) {
                    return function(date) {
                        let charIndex;
                        let formatter;
                        let char;
                        let charCount = 0;
                        let isEscaping = false;
                        let isCurrentCharEqualsNext;
                        let result = "";
                        if (!date) {
                            return null
                        }
                        if (!format) {
                            return date
                        }
                        const useUtc = "Z" === format[format.length - 1] || "'Z'" === format.slice(-3);
                        for (charIndex = 0; charIndex < format.length; charIndex++) {
                            char = format[charIndex];
                            formatter = LDML_FORMATTERS[char];
                            isCurrentCharEqualsNext = char === format[charIndex + 1];
                            charCount++;
                            if (!isCurrentCharEqualsNext) {
                                if (formatter && !isEscaping) {
                                    result += formatter(date, charCount, useUtc, dateParts)
                                }
                                charCount = 0
                            }
                            if ("'" === char && !isCurrentCharEqualsNext) {
                                isEscaping = !isEscaping
                            } else if (isEscaping || !formatter) {
                                result += char
                            }
                            if ("'" === char && isCurrentCharEqualsNext) {
                                charIndex++
                            }
                        }
                        return result
                    }
                }
            },
        2892:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/ldml/date.parser.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.isPossibleForParsingFormat = exports.getRegExpInfo = exports.getPatternSetters = exports.getParser = void 0;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _console = __webpack_require__( /*! ../../core/utils/console */ 30869);
                const FORMAT_TYPES = {
                    3: "abbreviated",
                    4: "wide",
                    5: "narrow"
                };
                const monthRegExpGenerator = function(count, dateParts) {
                    if (count > 2) {
                        return Object.keys(FORMAT_TYPES).map((function(count) {
                            return ["format", "standalone"].map((function(type) {
                                return dateParts.getMonthNames(FORMAT_TYPES[count], type).join("|")
                            })).join("|")
                        })).join("|")
                    }
                    return 2 === count ? "1[012]|0?[1-9]" : "0??[1-9]|1[012]"
                };
                const PATTERN_REGEXPS = {
                    ":": function(count, dateParts) {
                        const countSuffix = count > 1 ? "{".concat(count, "}") : "";
                        let timeSeparator = (0, _common.escapeRegExp)(dateParts.getTimeSeparator());
                        ":" !== timeSeparator && (timeSeparator = "".concat(timeSeparator, "|:"));
                        return "".concat(timeSeparator).concat(countSuffix)
                    },
                    y: function(count) {
                        return 2 === count ? "[0-9]{".concat(count, "}") : "[0-9]+?"
                    },
                    M: monthRegExpGenerator,
                    L: monthRegExpGenerator,
                    Q: function(count, dateParts) {
                        if (count > 2) {
                            return dateParts.getQuarterNames(FORMAT_TYPES[count], "format").join("|")
                        }
                        return "0?[1-4]"
                    },
                    E: function(count, dateParts) {
                        return "\\D*"
                    },
                    a: function(count, dateParts) {
                        return dateParts.getPeriodNames(FORMAT_TYPES[count < 3 ? 3 : count], "format").join("|")
                    },
                    d: function(count) {
                        return 2 === count ? "3[01]|[12][0-9]|0?[1-9]" : "0??[1-9]|[12][0-9]|3[01]"
                    },
                    H: function(count) {
                        return 2 === count ? "2[0-3]|1[0-9]|0?[0-9]" : "0??[0-9]|1[0-9]|2[0-3]"
                    },
                    h: function(count) {
                        return 2 === count ? "1[012]|0?[1-9]" : "0??[1-9]|1[012]"
                    },
                    m: function(count) {
                        return 2 === count ? "[1-5][0-9]|0?[0-9]" : "0??[0-9]|[1-5][0-9]"
                    },
                    s: function(count) {
                        return 2 === count ? "[1-5][0-9]|0?[0-9]" : "0??[0-9]|[1-5][0-9]"
                    },
                    S: function(count) {
                        return "[0-9]{1,".concat(count, "}")
                    },
                    w: function(count) {
                        return 2 === count ? "[1-5][0-9]|0?[0-9]" : "0??[0-9]|[1-5][0-9]"
                    }
                };
                const parseNumber = Number;
                const caseInsensitiveIndexOf = function(array, value) {
                    return array.map(item => item.toLowerCase()).indexOf(value.toLowerCase())
                };
                const monthPatternParser = function(text, count, dateParts) {
                    if (count > 2) {
                        return ["format", "standalone"].map((function(type) {
                            return Object.keys(FORMAT_TYPES).map((function(count) {
                                const monthNames = dateParts.getMonthNames(FORMAT_TYPES[count], type);
                                return caseInsensitiveIndexOf(monthNames, text)
                            }))
                        })).reduce((function(a, b) {
                            return a.concat(b)
                        })).filter((function(index) {
                            return index >= 0
                        }))[0]
                    }
                    return parseNumber(text) - 1
                };
                const PATTERN_PARSERS = {
                    y: function(text, count) {
                        const year = parseNumber(text);
                        if (2 === count) {
                            return year < 30 ? 2e3 + year : 1900 + year
                        }
                        return year
                    },
                    M: monthPatternParser,
                    L: monthPatternParser,
                    Q: function(text, count, dateParts) {
                        if (count > 2) {
                            return dateParts.getQuarterNames(FORMAT_TYPES[count], "format").indexOf(text)
                        }
                        return parseNumber(text) - 1
                    },
                    E: function(text, count, dateParts) {
                        const dayNames = dateParts.getDayNames(FORMAT_TYPES[count < 3 ? 3 : count], "format");
                        return caseInsensitiveIndexOf(dayNames, text)
                    },
                    a: function(text, count, dateParts) {
                        const periodNames = dateParts.getPeriodNames(FORMAT_TYPES[count < 3 ? 3 : count], "format");
                        return caseInsensitiveIndexOf(periodNames, text)
                    },
                    d: parseNumber,
                    H: parseNumber,
                    h: parseNumber,
                    m: parseNumber,
                    s: parseNumber,
                    S: function(text, count) {
                        count = Math.max(count, 3);
                        text = text.slice(0, 3);
                        while (count < 3) {
                            text += "0";
                            count++
                        }
                        return parseNumber(text)
                    }
                };
                const ORDERED_PATTERNS = ["y", "M", "d", "h", "m", "s", "S"];
                const PATTERN_SETTERS = {
                    y: "setFullYear",
                    M: "setMonth",
                    L: "setMonth",
                    a: function(date, value, datePartValues) {
                        let hours = date.getHours();
                        const hourPartValue = datePartValues.h;
                        if (void 0 !== hourPartValue && hourPartValue !== hours) {
                            hours--
                        }
                        if (!value && 12 === hours) {
                            hours = 0
                        } else if (value && 12 !== hours) {
                            hours += 12
                        }
                        date.setHours(hours)
                    },
                    d: "setDate",
                    H: "setHours",
                    h: "setHours",
                    m: "setMinutes",
                    s: "setSeconds",
                    S: "setMilliseconds"
                };
                const getSameCharCount = function(text, index) {
                    const char = text[index];
                    if (!char) {
                        return 0
                    }
                    let count = 0;
                    do {
                        index++;
                        count++
                    } while (text[index] === char);
                    return count
                };
                const createPattern = function(char, count) {
                    let result = "";
                    for (let i = 0; i < count; i++) {
                        result += char
                    }
                    return result
                };
                const getRegExpInfo = function(format, dateParts) {
                    let regexpText = "";
                    let stubText = "";
                    let isEscaping;
                    const patterns = [];
                    const addPreviousStub = function() {
                        if (stubText) {
                            patterns.push("'".concat(stubText, "'"));
                            regexpText += "".concat((0, _common.escapeRegExp)(stubText), ")");
                            stubText = ""
                        }
                    };
                    for (let i = 0; i < format.length; i++) {
                        const char = format[i];
                        const isEscapeChar = "'" === char;
                        const regexpPart = PATTERN_REGEXPS[char];
                        if (isEscapeChar) {
                            isEscaping = !isEscaping;
                            if ("'" !== format[i - 1]) {
                                continue
                            }
                        }
                        if (regexpPart && !isEscaping) {
                            const count = getSameCharCount(format, i);
                            const pattern = createPattern(char, count);
                            addPreviousStub();
                            patterns.push(pattern);
                            regexpText += "(".concat(regexpPart(count, dateParts), ")");
                            i += count - 1
                        } else {
                            if (!stubText) {
                                regexpText += "("
                            }
                            stubText += char
                        }
                    }
                    addPreviousStub();
                    if (!isPossibleForParsingFormat(patterns)) {
                        _console.logger.warn("The following format may be parsed incorrectly: ".concat(format, "."))
                    }
                    return {
                        patterns: patterns,
                        regexp: new RegExp("^".concat(regexpText, "$"), "i")
                    }
                };
                exports.getRegExpInfo = getRegExpInfo;
                const digitFieldSymbols = ["d", "H", "h", "m", "s", "w", "M", "L", "Q"];
                const isPossibleForParsingFormat = function(patterns) {
                    const isDigitPattern = pattern => {
                        if (!pattern) {
                            return false
                        }
                        const char = pattern[0];
                        return ["y", "S"].includes(char) || digitFieldSymbols.includes(char) && pattern.length < 3
                    };
                    let possibleForParsing = true;
                    let ambiguousDigitPatternsCount = 0;
                    return patterns.every((pattern, index, patterns) => {
                        if (isDigitPattern(pattern)) {
                            if ((pattern => "S" !== pattern[0] && 2 !== pattern.length)(pattern)) {
                                possibleForParsing = ++ambiguousDigitPatternsCount < 2
                            }
                            if (!isDigitPattern(patterns[index + 1])) {
                                ambiguousDigitPatternsCount = 0
                            }
                        }
                        return possibleForParsing
                    })
                };
                exports.isPossibleForParsingFormat = isPossibleForParsingFormat;
                exports.getPatternSetters = function() {
                    return PATTERN_SETTERS
                };
                exports.getParser = function(format, dateParts) {
                    const regExpInfo = getRegExpInfo(format, dateParts);
                    return function(text) {
                        const regExpResult = regExpInfo.regexp.exec(text);
                        if (regExpResult) {
                            const now = new Date;
                            const date = new Date(now.getFullYear(), 0, 1);
                            const formatPatterns = (fullPatterns = regExpInfo.patterns, fullPatterns.map((function(pattern) {
                                if ("'" === pattern[0]) {
                                    return ""
                                } else {
                                    return "H" === pattern[0] ? "h" : pattern[0]
                                }
                            })));
                            const maxPatternIndex = function(patterns) {
                                const indexes = patterns.map((function(pattern) {
                                    return ORDERED_PATTERNS.indexOf(pattern)
                                }));
                                return Math.max.apply(Math, indexes)
                            }(formatPatterns);
                            const orderedFormatPatterns = function(formatPatterns) {
                                const otherPatterns = formatPatterns.filter((function(pattern) {
                                    return ORDERED_PATTERNS.indexOf(pattern) < 0
                                }));
                                return ORDERED_PATTERNS.concat(otherPatterns)
                            }(formatPatterns);
                            const datePartValues = {};
                            orderedFormatPatterns.forEach((function(pattern, index) {
                                if (!pattern || index < ORDERED_PATTERNS.length && index > maxPatternIndex) {
                                    return
                                }
                                const patternIndex = formatPatterns.indexOf(pattern);
                                if (patternIndex >= 0) {
                                    const regExpPattern = regExpInfo.patterns[patternIndex];
                                    const regExpText = regExpResult[patternIndex + 1];
                                    ! function(date, pattern, text, dateParts, datePartValues) {
                                        const patternChar = pattern[0];
                                        const partSetter = PATTERN_SETTERS[patternChar];
                                        const partParser = PATTERN_PARSERS[patternChar];
                                        if (partSetter && partParser) {
                                            const value = partParser(text, pattern.length, dateParts);
                                            datePartValues[pattern] = value;
                                            if (date[partSetter]) {
                                                date[partSetter](value)
                                            } else {
                                                partSetter(date, value, datePartValues)
                                            }
                                        }
                                    }(date, regExpPattern, regExpText, dateParts, datePartValues)
                                } else {
                                    ! function(date, pattern, now) {
                                        const setterName = PATTERN_SETTERS[pattern];
                                        const getterName = "g" + setterName.substr(1);
                                        const value = now[getterName]();
                                        date[setterName](value)
                                    }(date, pattern, now)
                                }
                            }));
                            return date
                        }
                        var fullPatterns;
                        return null
                    }
                }
            },
        70629:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/ldml/number.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getFormat = function(formatter) {
                    let valueText = ".";
                    const isPercent = formatter(1).indexOf("100") >= 0;
                    valueText = prepareValueText(valueText, formatter, isPercent, true);
                    valueText = prepareValueText(valueText, formatter, isPercent, false);
                    const positiveFormat = getFormatByValueText(valueText, formatter, isPercent, false);
                    const negativeFormat = getFormatByValueText(valueText, formatter, isPercent, true);
                    return negativeFormat === "-" + positiveFormat ? positiveFormat : positiveFormat + ";" + negativeFormat
                };
                exports.getFormatter = function(format, config) {
                    config = config || DEFAULT_CONFIG;
                    return function(value) {
                        if ("number" !== typeof value || isNaN(value)) {
                            return ""
                        }
                        const signFormatParts = function(format) {
                            const signParts = format.split(";");
                            if (1 === signParts.length) {
                                signParts.push("-" + signParts[0])
                            }
                            return signParts
                        }(format);
                        const isPositiveZero = 1 / value === 1 / 0;
                        const isPositive = value > 0 || isPositiveZero;
                        const numberFormat = signFormatParts[isPositive ? 0 : 1];
                        const floatPointIndex = function(format) {
                            let isEscape = false;
                            for (let index = 0; index < format.length; index++) {
                                if ("'" === format[index]) {
                                    isEscape = !isEscape
                                }
                                if ("." === format[index] && !isEscape) {
                                    return index
                                }
                            }
                            return format.length
                        }(numberFormat);
                        const floatFormatParts = [numberFormat.substr(0, floatPointIndex), numberFormat.substr(floatPointIndex + 1)];
                        const minFloatPrecision = getRequiredDigitCount(floatFormatParts[1]);
                        const maxFloatPrecision = minFloatPrecision + getNonRequiredDigitCount(floatFormatParts[1]);
                        if (function(format) {
                                return -1 !== format.indexOf("%") && !format.match(/'[^']*%[^']*'/g)
                            }(numberFormat)) {
                            value = (0, _math.multiplyInExponentialForm)(value, 2)
                        }
                        if (!isPositive) {
                            value = -value
                        }
                        const minIntegerPrecision = getRequiredDigitCount(floatFormatParts[0]);
                        const maxIntegerPrecision = getNonRequiredDigitCount(floatFormatParts[0]) || config.unlimitedIntegerDigits ? void 0 : minIntegerPrecision;
                        const integerLength = Math.floor(value).toString().length;
                        const floatPrecision = (0, _math.fitIntoRange)(maxFloatPrecision, 0, 15 - integerLength);
                        const groupSizes = (formatString = floatFormatParts[0], formatString.split(",").slice(1).map((function(str) {
                            let singleQuotesLeft = 0;
                            return str.split("").filter((function(char, index) {
                                singleQuotesLeft += "'" === char;
                                const isDigit = "#" === char || "0" === char;
                                const isInStub = singleQuotesLeft % 2;
                                return isDigit && !isInStub
                            })).length
                        }))).reverse();
                        var formatString;
                        const valueParts = (0, _utils.toFixed)(value, floatPrecision < 0 ? 0 : floatPrecision).split(".");
                        let valueIntegerPart = normalizeValueString(reverseString(valueParts[0]), minIntegerPrecision, maxIntegerPrecision);
                        const valueFloatPart = normalizeValueString(valueParts[1], minFloatPrecision, maxFloatPrecision);
                        valueIntegerPart = function(valueString, groupSizes, thousandsSeparator) {
                            if (!groupSizes.length) {
                                return valueString
                            }
                            const groups = [];
                            let index = 0;
                            while (valueString) {
                                const groupSize = groupSizes[index];
                                if (!groupSize) {
                                    break
                                }
                                groups.push(valueString.slice(0, groupSize));
                                valueString = valueString.slice(groupSize);
                                if (index < groupSizes.length - 1) {
                                    index++
                                }
                            }
                            return groups.join(thousandsSeparator)
                        }(valueIntegerPart, groupSizes, config.thousandsSeparator);
                        const integerString = reverseString(formatNumberPart(reverseString(floatFormatParts[0]), valueIntegerPart));
                        const floatString = maxFloatPrecision ? formatNumberPart(floatFormatParts[1], valueFloatPart) : "";
                        const result = integerString + (floatString.match(/\d/) ? config.decimalSeparator : "") + floatString;
                        return result
                    }
                };
                var _math = __webpack_require__( /*! ../../core/utils/math */ 60810);
                var _utils = __webpack_require__( /*! ../utils */ 97360);
                const DEFAULT_CONFIG = {
                    thousandsSeparator: ",",
                    decimalSeparator: "."
                };

                function reverseString(str) {
                    return str.toString().split("").reverse().join("")
                }

                function removeStubs(str) {
                    return str.replace(/'.+'/g, "")
                }

                function getNonRequiredDigitCount(floatFormat) {
                    if (!floatFormat) {
                        return 0
                    }
                    const format = removeStubs(floatFormat);
                    return format.length - format.replace(/[#]/g, "").length
                }

                function getRequiredDigitCount(floatFormat) {
                    if (!floatFormat) {
                        return 0
                    }
                    const format = removeStubs(floatFormat);
                    return format.length - format.replace(/[0]/g, "").length
                }

                function normalizeValueString(valuePart, minDigitCount, maxDigitCount) {
                    if (!valuePart) {
                        return ""
                    }
                    if (valuePart.length > maxDigitCount) {
                        valuePart = valuePart.substr(0, maxDigitCount)
                    }
                    while (valuePart.length > minDigitCount && "0" === valuePart.slice(-1)) {
                        valuePart = valuePart.substr(0, valuePart.length - 1)
                    }
                    while (valuePart.length < minDigitCount) {
                        valuePart += "0"
                    }
                    return valuePart
                }

                function formatNumberPart(format, valueString) {
                    return format.split("'").map((function(formatPart, escapeIndex) {
                        const isEscape = escapeIndex % 2;
                        if (!formatPart && isEscape) {
                            return "'"
                        }
                        return isEscape ? formatPart : formatPart.replace(/[,#0]+/, valueString)
                    })).join("")
                }

                function parseValue(text, isPercent, isNegative) {
                    const value = (isPercent ? .01 : 1) * parseFloat(text) || 0;
                    return isNegative ? -value : value
                }

                function prepareValueText(valueText, formatter, isPercent, isIntegerPart) {
                    let nextValueText = valueText;
                    let char;
                    let text;
                    let nextText;
                    do {
                        if (nextText) {
                            char = text.length === nextText.length ? "0" : "1";
                            valueText = isIntegerPart ? char + valueText : valueText + char
                        }
                        text = nextText || formatter(parseValue(nextValueText, isPercent));
                        nextValueText = isIntegerPart ? "1" + nextValueText : nextValueText + "1";
                        nextText = formatter(parseValue(nextValueText, isPercent))
                    } while (text !== nextText && (isIntegerPart ? text.length === nextText.length : text.length <= nextText.length));
                    if (isIntegerPart && nextText.length > text.length) {
                        const hasGroups = -1 === formatter(12345).indexOf("12345");
                        do {
                            valueText = "1" + valueText
                        } while (hasGroups && parseValue(valueText, isPercent) < 1e5)
                    }
                    return valueText
                }

                function getFormatByValueText(valueText, formatter, isPercent, isNegative) {
                    let format = formatter(parseValue(valueText, isPercent, isNegative));
                    const valueTextParts = valueText.split(".");
                    const valueTextWithModifiedFloat = valueTextParts[0] + ".3" + valueTextParts[1].slice(1);
                    const valueWithModifiedFloat = parseValue(valueTextWithModifiedFloat, isPercent, isNegative);
                    const decimalSeparatorIndex = formatter(valueWithModifiedFloat).indexOf("3") - 1;
                    format = format.replace(/(\d)\D(\d)/g, "$1,$2");
                    if (decimalSeparatorIndex >= 0) {
                        format = format.slice(0, decimalSeparatorIndex) + "." + format.slice(decimalSeparatorIndex + 1)
                    }
                    format = format.replace(/1+/, "1").replace(/1/g, "#");
                    if (!isPercent) {
                        format = format.replace(/%/g, "'%'")
                    }
                    return format
                }
            },
        28109:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/message.js ***!
              \*********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _dependency_injector = _interopRequireDefault(__webpack_require__( /*! ../core/utils/dependency_injector */ 20476));
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _string = __webpack_require__( /*! ../core/utils/string */ 68752);
                var _inflector = __webpack_require__( /*! ../core/utils/inflector */ 78008);
                var _core = _interopRequireDefault(__webpack_require__( /*! ./core */ 91331));
                var _default_messages = __webpack_require__( /*! ./default_messages */ 18121);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const baseDictionary = (0, _extend.extend)(true, {}, _default_messages.defaultMessages);
                const newMessages = {};
                const messageLocalization = (0, _dependency_injector.default)({
                    engine: function() {
                        return "base"
                    },
                    _dictionary: baseDictionary,
                    load: function(messages) {
                        (0, _extend.extend)(true, this._dictionary, messages)
                    },
                    _localizablePrefix: "@",
                    setup: function(localizablePrefix) {
                        this._localizablePrefix = localizablePrefix
                    },
                    localizeString: function(text) {
                        const that = this;
                        const regex = new RegExp("(^|[^a-zA-Z_0-9" + that._localizablePrefix + "-]+)(" + that._localizablePrefix + "{1,2})([a-zA-Z_0-9-]+)", "g");
                        const escapeString = that._localizablePrefix + that._localizablePrefix;
                        return text.replace(regex, (str, prefix, escape, localizationKey) => {
                            const defaultResult = that._localizablePrefix + localizationKey;
                            let result;
                            if (escape !== escapeString) {
                                result = that.format(localizationKey)
                            }
                            if (!result) {
                                newMessages[localizationKey] = (0, _inflector.humanize)(localizationKey)
                            }
                            return prefix + (result || defaultResult)
                        })
                    },
                    getMessagesByLocales: function() {
                        return this._dictionary
                    },
                    getDictionary: function(onlyNew) {
                        if (onlyNew) {
                            return newMessages
                        }
                        return (0, _extend.extend)({}, newMessages, this.getMessagesByLocales()[_core.default.locale()])
                    },
                    getFormatter: function(key) {
                        return this._getFormatterBase(key) || this._getFormatterBase(key, "en")
                    },
                    _getFormatterBase: function(key, locale) {
                        const message = _core.default.getValueByClosestLocale(locale => ((localeData, locale) => {
                            var _Object$entries$find;
                            return localeData[locale] || (null === locale || void 0 === locale ? void 0 : locale.toLowerCase) && (null === (_Object$entries$find = Object.entries(localeData).find(_ref => {
                                let [key] = _ref;
                                return key.toLowerCase() === locale.toLowerCase()
                            })) || void 0 === _Object$entries$find ? void 0 : _Object$entries$find[1]) || {}
                        })(this._dictionary, locale)[key]);
                        if (message) {
                            return function() {
                                const args = 1 === arguments.length && Array.isArray(arguments[0]) ? arguments[0].slice(0) : Array.prototype.slice.call(arguments, 0);
                                args.unshift(message);
                                return _string.format.apply(this, args)
                            }
                        }
                    },
                    format: function(key) {
                        const formatter = this.getFormatter(key);
                        const values = Array.prototype.slice.call(arguments, 1);
                        return formatter && formatter.apply(this, values) || ""
                    }
                });
                var _default = messageLocalization;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        18016:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/number.js ***!
              \********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _dependency_injector = _interopRequireDefault(__webpack_require__( /*! ../core/utils/dependency_injector */ 20476));
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _number = __webpack_require__( /*! ./ldml/number */ 70629);
                var _config = _interopRequireDefault(__webpack_require__( /*! ../core/config */ 80209));
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../core/errors */ 17381));
                var _utils = __webpack_require__( /*! ./utils */ 97360);
                var _currency = _interopRequireDefault(__webpack_require__( /*! ./currency */ 89740));
                var _number2 = _interopRequireDefault(__webpack_require__( /*! ./intl/number */ 38702));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const hasIntl = "undefined" !== typeof Intl;
                const NUMERIC_FORMATS = ["currency", "fixedpoint", "exponential", "percent", "decimal"];
                const LargeNumberFormatPostfixes = {
                    1: "K",
                    2: "M",
                    3: "B",
                    4: "T"
                };
                const LargeNumberFormatPowers = {
                    largenumber: "auto",
                    thousands: 1,
                    millions: 2,
                    billions: 3,
                    trillions: 4
                };
                const numberLocalization = (0, _dependency_injector.default)({
                    engine: function() {
                        return "base"
                    },
                    numericFormats: NUMERIC_FORMATS,
                    defaultLargeNumberFormatPostfixes: LargeNumberFormatPostfixes,
                    _parseNumberFormatString: function(formatType) {
                        const formatObject = {};
                        if (!formatType || "string" !== typeof formatType) {
                            return
                        }
                        const formatList = formatType.toLowerCase().split(" ");
                        (0, _iterator.each)(formatList, (index, value) => {
                            if (NUMERIC_FORMATS.includes(value)) {
                                formatObject.formatType = value
                            } else if (value in LargeNumberFormatPowers) {
                                formatObject.power = LargeNumberFormatPowers[value]
                            }
                        });
                        if (formatObject.power && !formatObject.formatType) {
                            formatObject.formatType = "fixedpoint"
                        }
                        if (formatObject.formatType) {
                            return formatObject
                        }
                    },
                    _calculateNumberPower: function(value, base, minPower, maxPower) {
                        let number = Math.abs(value);
                        let power = 0;
                        if (number > 1) {
                            while (number && number >= base && (void 0 === maxPower || power < maxPower)) {
                                power++;
                                number /= base
                            }
                        } else if (number > 0 && number < 1) {
                            while (number < 1 && (void 0 === minPower || power > minPower)) {
                                power--;
                                number *= base
                            }
                        }
                        return power
                    },
                    _getNumberByPower: function(number, power, base) {
                        let result = number;
                        while (power > 0) {
                            result /= base;
                            power--
                        }
                        while (power < 0) {
                            result *= base;
                            power++
                        }
                        return result
                    },
                    _formatNumber: function(value, formatObject, formatConfig) {
                        if ("auto" === formatObject.power) {
                            formatObject.power = this._calculateNumberPower(value, 1e3, 0, 4)
                        }
                        if (formatObject.power) {
                            value = this._getNumberByPower(value, formatObject.power, 1e3)
                        }
                        const powerPostfix = this.defaultLargeNumberFormatPostfixes[formatObject.power] || "";
                        let result = this._formatNumberCore(value, formatObject.formatType, formatConfig);
                        result = result.replace(/(\d|.$)(\D*)$/, "$1" + powerPostfix + "$2");
                        return result
                    },
                    _formatNumberExponential: function(value, formatConfig) {
                        let power = this._calculateNumberPower(value, 10);
                        let number = this._getNumberByPower(value, power, 10);
                        if (void 0 === formatConfig.precision) {
                            formatConfig.precision = 1
                        }
                        if (number.toFixed(formatConfig.precision || 0) >= 10) {
                            power++;
                            number /= 10
                        }
                        const powString = (power >= 0 ? "+" : "") + power.toString();
                        return this._formatNumberCore(number, "fixedpoint", formatConfig) + "E" + powString
                    },
                    _addZeroes: function(value, precision) {
                        const multiplier = Math.pow(10, precision);
                        const sign = value < 0 ? "-" : "";
                        value = (Math.abs(value) * multiplier >>> 0) / multiplier;
                        let result = value.toString();
                        while (result.length < precision) {
                            result = "0" + result
                        }
                        return sign + result
                    },
                    _addGroupSeparators: function(value) {
                        const parts = value.toString().split(".");
                        return parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, (0, _config.default)().thousandsSeparator) + (parts[1] ? (0, _config.default)().decimalSeparator + parts[1] : "")
                    },
                    _formatNumberCore: function(value, format, formatConfig) {
                        if ("exponential" === format) {
                            return this._formatNumberExponential(value, formatConfig)
                        }
                        if ("decimal" !== format && null !== formatConfig.precision) {
                            formatConfig.precision = formatConfig.precision || 0
                        }
                        if ("percent" === format) {
                            value *= 100
                        }
                        if (void 0 !== formatConfig.precision) {
                            if ("decimal" === format) {
                                value = this._addZeroes(value, formatConfig.precision)
                            } else {
                                value = null === formatConfig.precision ? value.toPrecision() : (0, _utils.toFixed)(value, formatConfig.precision)
                            }
                        }
                        if ("decimal" !== format) {
                            value = this._addGroupSeparators(value)
                        } else {
                            value = value.toString().replace(".", (0, _config.default)().decimalSeparator)
                        }
                        if ("percent" === format) {
                            value += "%"
                        }
                        return value
                    },
                    _normalizeFormat: function(format) {
                        if (!format) {
                            return {}
                        }
                        if ("function" === typeof format) {
                            return format
                        }
                        if (!(0, _type.isPlainObject)(format)) {
                            format = {
                                type: format
                            }
                        }
                        return format
                    },
                    _getSeparators: function() {
                        return {
                            decimalSeparator: this.getDecimalSeparator(),
                            thousandsSeparator: this.getThousandsSeparator()
                        }
                    },
                    getThousandsSeparator: function() {
                        return this.format(1e4, "fixedPoint")[2]
                    },
                    getDecimalSeparator: function() {
                        return this.format(1.2, {
                            type: "fixedPoint",
                            precision: 1
                        })[1]
                    },
                    convertDigits: function(value, toStandard) {
                        const digits = this.format(90, "decimal");
                        if ("string" !== typeof value || "0" === digits[1]) {
                            return value
                        }
                        const fromFirstDigit = toStandard ? digits[1] : "0";
                        const toFirstDigit = toStandard ? "0" : digits[1];
                        const fromLastDigit = toStandard ? digits[0] : "9";
                        const regExp = new RegExp("[" + fromFirstDigit + "-" + fromLastDigit + "]", "g");
                        return value.replace(regExp, char => String.fromCharCode(char.charCodeAt(0) + (toFirstDigit.charCodeAt(0) - fromFirstDigit.charCodeAt(0))))
                    },
                    getNegativeEtalonRegExp: function(format) {
                        const separators = this._getSeparators();
                        const digitalRegExp = new RegExp("[0-9" + (0, _common.escapeRegExp)(separators.decimalSeparator + separators.thousandsSeparator) + "]+", "g");
                        let negativeEtalon = this.format(-1, format).replace(digitalRegExp, "1");
                        ["\\", "(", ")", "[", "]", "*", "+", "$", "^", "?", "|", "{", "}"].forEach(char => {
                            negativeEtalon = negativeEtalon.replace(new RegExp("\\".concat(char), "g"), "\\".concat(char))
                        });
                        negativeEtalon = negativeEtalon.replace(/ /g, "\\s");
                        negativeEtalon = negativeEtalon.replace(/1/g, ".*");
                        return new RegExp(negativeEtalon, "g")
                    },
                    getSign: function(text, format) {
                        if (!format) {
                            if ("-" === text.replace(/[^0-9-]/g, "").charAt(0)) {
                                return -1
                            }
                            return 1
                        }
                        const negativeEtalon = this.getNegativeEtalonRegExp(format);
                        return text.match(negativeEtalon) ? -1 : 1
                    },
                    format: function(value, format) {
                        if ("number" !== typeof value) {
                            return value
                        }
                        if ("number" === typeof format) {
                            return value
                        }
                        format = format && format.formatter || format;
                        if ("function" === typeof format) {
                            return format(value)
                        }
                        format = this._normalizeFormat(format);
                        if (!format.type) {
                            format.type = "decimal"
                        }
                        const numberConfig = this._parseNumberFormatString(format.type);
                        if (!numberConfig) {
                            const formatterConfig = this._getSeparators();
                            formatterConfig.unlimitedIntegerDigits = format.unlimitedIntegerDigits;
                            return this.convertDigits((0, _number.getFormatter)(format.type, formatterConfig)(value))
                        }
                        return this._formatNumber(value, numberConfig, format)
                    },
                    parse: function(text, format) {
                        if (!text) {
                            return
                        }
                        if (format && format.parser) {
                            return format.parser(text)
                        }
                        text = this.convertDigits(text, true);
                        if (format && "string" !== typeof format) {
                            _errors.default.log("W0011")
                        }
                        const decimalSeparator = this.getDecimalSeparator();
                        const regExp = new RegExp("[^0-9" + (0, _common.escapeRegExp)(decimalSeparator) + "]", "g");
                        const cleanedText = text.replace(regExp, "").replace(decimalSeparator, ".").replace(/\.$/g, "");
                        if ("." === cleanedText || "" === cleanedText) {
                            return null
                        }
                        if (this._calcSignificantDigits(cleanedText) > 15) {
                            return NaN
                        }
                        let parsed = +cleanedText * this.getSign(text, format);
                        format = this._normalizeFormat(format);
                        const formatConfig = this._parseNumberFormatString(format.type);
                        let power = null === formatConfig || void 0 === formatConfig ? void 0 : formatConfig.power;
                        if (power) {
                            if ("auto" === power) {
                                const match = text.match(/\d(K|M|B|T)/);
                                if (match) {
                                    power = Object.keys(LargeNumberFormatPostfixes).find(power => LargeNumberFormatPostfixes[power] === match[1])
                                }
                            }
                            parsed *= Math.pow(10, 3 * power)
                        }
                        if ("percent" === (null === formatConfig || void 0 === formatConfig ? void 0 : formatConfig.formatType)) {
                            parsed /= 100
                        }
                        return parsed
                    },
                    _calcSignificantDigits: function(text) {
                        const [integer, fractional] = text.split(".");
                        const calcDigitsAfterLeadingZeros = digits => {
                            let index = -1;
                            for (let i = 0; i < digits.length; i++) {
                                if ("0" !== digits[i]) {
                                    index = i;
                                    break
                                }
                            }
                            return index > -1 ? digits.length - index : 0
                        };
                        let result = 0;
                        if (integer) {
                            result += calcDigitsAfterLeadingZeros(integer.split(""))
                        }
                        if (fractional) {
                            result += calcDigitsAfterLeadingZeros(fractional.split("").reverse())
                        }
                        return result
                    }
                });
                numberLocalization.inject(_currency.default);
                if (hasIntl) {
                    numberLocalization.inject(_number2.default)
                }
                var _default = numberLocalization;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        44592:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/open_xml_currency_format.js ***!
              \**************************************************************************************/
            function(module, exports) {
                exports.default = void 0;
                exports.default = (currencySymbol, accountingFormat) => {
                    if (!accountingFormat) {
                        return
                    }
                    let encodedCurrencySymbol = currencySymbol;
                    if ("string" === typeof currencySymbol) {
                        encodedCurrencySymbol = "";
                        for (let i = 0; i < currencySymbol.length; i++) {
                            if ("$" !== currencySymbol[i]) {
                                encodedCurrencySymbol += "\\"
                            }
                            encodedCurrencySymbol += currencySymbol[i]
                        }
                    }
                    const encodeSymbols = {
                        ".00": "{0}",
                        "'": "\\'",
                        "\\(": "\\(",
                        "\\)": "\\)",
                        " ": "\\ ",
                        '"': "&quot;",
                        "\\\xa4": encodedCurrencySymbol
                    };
                    const result = accountingFormat.split(";");
                    for (let i = 0; i < result.length; i++) {
                        for (const symbol in encodeSymbols) {
                            if (Object.prototype.hasOwnProperty.call(encodeSymbols, symbol)) {
                                result[i] = result[i].replace(new RegExp(symbol, "g"), encodeSymbols[symbol])
                            }
                        }
                    }
                    return 2 === result.length ? result[0] + "_);" + result[1] : result[0]
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        49198:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/parentLocale.js ***!
              \**************************************************************************/
            function(module, exports) {
                exports.default = void 0;
                exports.default = (parentLocales, locale) => {
                    const parentLocale = parentLocales[locale];
                    if (parentLocale) {
                        return "root" !== parentLocale && parentLocale
                    }
                    return locale.substr(0, locale.lastIndexOf("-"))
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        97360:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/localization/utils.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.toFixed = function(value, precision) {
                    const valuePrecision = precision || 0;
                    const adjustedValue = valuePrecision > 0 ? adjustValue(...arguments) : value;
                    return adjustedValue.toFixed(valuePrecision)
                };
                var _math = __webpack_require__( /*! ../core/utils/math */ 60810);

                function adjustValue(value, precision) {
                    const precisionMultiplier = Math.pow(10, precision);
                    const intermediateValue = (0, _math.multiplyInExponentialForm)(value, precision);
                    return function(value) {
                        const valueSign = (0, _math.sign)(value);
                        return valueSign * Math.round(Math.abs(value))
                    }(intermediateValue) / precisionMultiplier
                }
            },
        4928:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/mobile/hide_callback.js ***!
              \*********************************************************************/
            function(__unused_webpack_module, exports) {
                exports.hideCallback = void 0;
                const hideCallback = function() {
                    let callbacks = [];
                    return {
                        add: function(callback) {
                            if (!callbacks.includes(callback)) {
                                callbacks.push(callback)
                            }
                        },
                        remove: function(callback) {
                            const indexOfCallback = callbacks.indexOf(callback);
                            if (-1 !== indexOfCallback) {
                                callbacks.splice(indexOfCallback, 1)
                            }
                        },
                        fire: function() {
                            const callback = callbacks.pop();
                            const result = !!callback;
                            if (result) {
                                callback()
                            }
                            return result
                        },
                        hasCallback: function() {
                            return callbacks.length > 0
                        }
                    }
                }();
                exports.hideCallback = hideCallback
            },
        60628:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/mobile/hide_top_overlay.js ***!
              \************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = function() {
                    return _hide_callback.hideCallback.fire()
                };
                var _hide_callback = __webpack_require__( /*! ./hide_callback */ 4928);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        88185:
            /*!*************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/mobile/init_mobile_viewport/init_mobile_viewport.js ***!
              \*************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.p = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _resize_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/resize_callbacks */ 55814));
                var _support = __webpack_require__( /*! ../../core/utils/support */ 60137);
                var _style = __webpack_require__( /*! ../../core/utils/style */ 80968);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();
                exports.p = function(options) {
                    options = (0, _extend.extend)({}, options);
                    let realDevice = _devices.default.real();
                    const allowZoom = options.allowZoom;
                    const allowPan = options.allowPan;
                    const allowSelection = "allowSelection" in options ? options.allowSelection : "generic" === realDevice.platform;
                    if (!(0, _renderer.default)("meta[name=viewport]").length) {
                        (0, _renderer.default)("<meta>").attr("name", "viewport").appendTo("head")
                    }
                    const metaVerbs = ["width=device-width"];
                    const msTouchVerbs = [];
                    if (allowZoom) {
                        msTouchVerbs.push("pinch-zoom")
                    } else {
                        metaVerbs.push("initial-scale=1.0", "maximum-scale=1.0, user-scalable=no")
                    }
                    if (allowPan) {
                        msTouchVerbs.push("pan-x", "pan-y")
                    }
                    if (!allowPan && !allowZoom) {
                        (0, _renderer.default)("html, body").css({
                            msContentZooming: "none",
                            msUserSelect: "none",
                            overflow: "hidden"
                        })
                    } else {
                        (0, _renderer.default)("html").css("msOverflowStyle", "-ms-autohiding-scrollbar")
                    }
                    if (!allowSelection && (0, _support.supportProp)("userSelect")) {
                        (0, _renderer.default)(".dx-viewport").css((0, _style.styleProp)("userSelect"), "none")
                    }(0, _renderer.default)("meta[name=viewport]").attr("content", metaVerbs.join());
                    (0, _renderer.default)("html").css("msTouchAction", msTouchVerbs.join(" ") || "none");
                    realDevice = _devices.default.real();
                    if (_support.touch) {
                        _events_engine.default.off(_dom_adapter.default.getDocument(), ".dxInitMobileViewport");
                        _events_engine.default.on(_dom_adapter.default.getDocument(), "dxpointermove.dxInitMobileViewport", (function(e) {
                            const count = e.pointers.length;
                            const isTouchEvent = "touch" === e.pointerType;
                            const zoomDisabled = !allowZoom && count > 1;
                            const panDisabled = !allowPan && 1 === count && !e.isScrollingEvent;
                            if (isTouchEvent && (zoomDisabled || panDisabled)) {
                                e.preventDefault()
                            }
                        }))
                    }
                    if (realDevice.ios) {
                        const isPhoneGap = "file:" === _dom_adapter.default.getLocation().protocol;
                        if (!isPhoneGap) {
                            _resize_callbacks.default.add((function() {
                                const windowWidth = (0, _size.getWidth)(window);
                                (0, _size.setWidth)((0, _renderer.default)("body"), windowWidth)
                            }))
                        }
                    }
                    if (realDevice.android) {
                        _resize_callbacks.default.add((function() {
                            setTimeout((function() {
                                const activeElement = _dom_adapter.default.getActiveElement();
                                activeElement.scrollIntoViewIfNeeded ? activeElement.scrollIntoViewIfNeeded() : activeElement.scrollIntoView(false)
                            }))
                        }))
                    }
                }
            },
        44194:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/pdf_exporter.js ***!
              \*************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "exportDataGrid", {
                    enumerable: true,
                    get: function() {
                        return _export_data_grid.exportDataGrid
                    }
                });
                Object.defineProperty(exports, "exportDataGridWithAutoTable", {
                    enumerable: true,
                    get: function() {
                        return _export_data_grid2.exportDataGrid
                    }
                });
                Object.defineProperty(exports, "exportGantt", {
                    enumerable: true,
                    get: function() {
                        return _export_gantt.exportGantt
                    }
                });
                var _export_data_grid = __webpack_require__( /*! ./exporter/jspdf/export_data_grid */ 654);
                var _export_data_grid2 = __webpack_require__( /*! ./exporter/jspdf/autotable/export_data_grid */ 83152);
                var _export_gantt = __webpack_require__( /*! ./exporter/jspdf/export_gantt */ 29982)
            },
        49697:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/common/config_context.js ***!
              \*********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.ConfigContext = void 0;
                var _inferno = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                const ConfigContext = (0, _inferno.createContext)(void 0);
                exports.ConfigContext = ConfigContext
            },
        66042:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/common/config_provider.js ***!
              \**********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.ConfigProviderProps = exports.ConfigProvider = void 0;
                var _inferno = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _config_context = __webpack_require__( /*! ./config_context */ 49697);
                const _excluded = ["children", "rtlEnabled"];

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const viewFunction = viewModel => viewModel.props.children;
                exports.viewFunction = viewFunction;
                const ConfigProviderProps = {};
                exports.ConfigProviderProps = ConfigProviderProps;
                let ConfigProvider = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(ConfigProvider, _BaseInfernoComponent);

                    function ConfigProvider(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        _this.__getterCache = {};
                        return _this
                    }
                    var _proto = ConfigProvider.prototype;
                    _proto.getChildContext = function() {
                        return _extends({}, this.context, {
                            [_config_context.ConfigContext.id]: this.config || _config_context.ConfigContext.defaultValue
                        })
                    };
                    _proto.componentWillUpdate = function(nextProps, nextState, context) {
                        if (this.props.rtlEnabled !== nextProps.rtlEnabled) {
                            this.__getterCache.config = void 0
                        }
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props),
                            config: this.config,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(ConfigProvider, [{
                        key: "config",
                        get: function() {
                            if (void 0 !== this.__getterCache.config) {
                                return this.__getterCache.config
                            }
                            return this.__getterCache.config = (() => ({
                                rtlEnabled: this.props.rtlEnabled
                            }))()
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return ConfigProvider
                }(_inferno.BaseInfernoComponent);
                exports.ConfigProvider = ConfigProvider;
                ConfigProvider.defaultProps = ConfigProviderProps
            },
        8668:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/component_wrapper/button.js ***!
              \************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _validation_engine = _interopRequireDefault(__webpack_require__( /*! ../../ui/validation_engine */ 90964));
                var _component = _interopRequireDefault(__webpack_require__( /*! ./common/component */ 27135));
                var _icon = __webpack_require__( /*! ../../core/utils/icon */ 44899);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let ButtonWrapper = function(_Component) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(ButtonWrapper, _Component);

                    function ButtonWrapper() {
                        return _Component.apply(this, arguments) || this
                    }
                    var _proto = ButtonWrapper.prototype;
                    _proto.getDefaultTemplateNames = function() {
                        return ["content"]
                    };
                    _proto.getSupportedKeyNames = function() {
                        return ["space", "enter"]
                    };
                    _proto.getProps = function() {
                        const props = _Component.prototype.getProps.call(this);
                        props.onClick = _ref => {
                            let {
                                event: event
                            } = _ref;
                            this._clickAction({
                                event: event,
                                validationGroup: this._validationGroupConfig
                            })
                        };
                        const iconType = (0, _icon.getImageSourceType)(props.icon);
                        if ("svg" === iconType) {
                            props.iconTemplate = this._createTemplateComponent(() => props.icon)
                        }
                        return props
                    };
                    _proto._toggleActiveState = function(_, value) {
                        const button = this.viewRef;
                        value ? button.activate() : button.deactivate()
                    };
                    _proto._getSubmitAction = function() {
                        let needValidate = true;
                        let validationStatus = "valid";
                        return this._createAction(_ref2 => {
                            let {
                                event: event,
                                submitInput: submitInput
                            } = _ref2;
                            if (needValidate) {
                                const validationGroup = this._validationGroupConfig;
                                if (void 0 !== validationGroup && "" !== validationGroup) {
                                    const validationResult = validationGroup.validate();
                                    validationStatus = validationResult.status;
                                    if ("pending" === validationResult.status) {
                                        needValidate = false;
                                        this.option("disabled", true);
                                        validationResult.complete.then(_ref3 => {
                                            let {
                                                status: status
                                            } = _ref3;
                                            this.option("disabled", false);
                                            validationStatus = status;
                                            "valid" === validationStatus && submitInput.click();
                                            needValidate = true
                                        })
                                    }
                                }
                            }
                            "valid" !== validationStatus && event.preventDefault();
                            event.stopPropagation()
                        })
                    };
                    _proto._initializeComponent = function() {
                        _Component.prototype._initializeComponent.call(this);
                        this._addAction("onSubmit", this._getSubmitAction());
                        this._clickAction = this._createClickAction()
                    };
                    _proto._initMarkup = function() {
                        _Component.prototype._initMarkup.call(this);
                        const $content = this.$element().find(".dx-button-content");
                        const $template = $content.children().filter(".dx-template-wrapper");
                        const $input = $content.children().filter(".dx-button-submit-input");
                        if ($template.length) {
                            $template.addClass("dx-button-content");
                            $template.append($input);
                            $content.replaceWith($template)
                        }
                    };
                    _proto._patchOptionValues = function(options) {
                        return _Component.prototype._patchOptionValues.call(this, _extends({}, options, {
                            templateData: options._templateData
                        }))
                    };
                    _proto._findGroup = function() {
                        const $element = this.$element();
                        const validationGroup = this.option("validationGroup");
                        return void 0 !== validationGroup && "" !== validationGroup ? validationGroup : _validation_engine.default.findGroup($element, this._modelByElement($element))
                    };
                    _proto._createClickAction = function() {
                        return this._createActionByOption("onClick", {
                            excludeValidators: ["readOnly"]
                        })
                    };
                    _proto._optionChanged = function(option) {
                        switch (option.name) {
                            case "onClick":
                                this._clickAction = this._createClickAction()
                        }
                        _Component.prototype._optionChanged.call(this, option)
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(ButtonWrapper, [{
                        key: "_validationGroupConfig",
                        get: function() {
                            return _validation_engine.default.getGroupConfig(this._findGroup())
                        }
                    }, {
                        key: "_templatesInfo",
                        get: function() {
                            return {
                                template: "content"
                            }
                        }
                    }]);
                    return ButtonWrapper
                }(_component.default);
                exports.default = ButtonWrapper;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        27135:
            /*!**********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/component_wrapper/common/component.js ***!
              \**********************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _keyboard_processor = _interopRequireDefault(__webpack_require__( /*! ../../../events/core/keyboard_processor */ 51661));
                var _inferno_renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/inferno_renderer */ 15334));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 73349));
                var _dom_component = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_component */ 13046));
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _element = __webpack_require__( /*! ../../../core/element */ 6415);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _template_wrapper = __webpack_require__( /*! ./template_wrapper */ 93407);
                var _update_props_immutable = __webpack_require__( /*! ../utils/update_props_immutable */ 36583);
                __webpack_require__( /*! ../../../events/click */ 95429);
                __webpack_require__( /*! ../../../events/core/emitter.feedback */ 91633);
                __webpack_require__( /*! ../../../events/hover */ 24028);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const setDefaultOptionValue = (options, defaultValueGetter) => name => {
                    if (Object.prototype.hasOwnProperty.call(options, name) && void 0 === options[name]) {
                        options[name] = defaultValueGetter(name)
                    }
                };
                let ComponentWrapper = function(_DOMComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(ComponentWrapper, _DOMComponent);

                    function ComponentWrapper(element, options) {
                        var _this;
                        _this = _DOMComponent.call(this, element, options) || this;
                        _this._shouldRaiseContentReady = false;
                        _this.validateKeyDownHandler();
                        return _this
                    }
                    var _proto = ComponentWrapper.prototype;
                    _proto.validateKeyDownHandler = function() {
                        const supportedKeyNames = this.getSupportedKeyNames();
                        const hasComponentDefaultKeyHandlers = supportedKeyNames.length > 0;
                        const hasComponentKeyDownMethod = "function" === typeof this._viewComponent.prototype.keyDown;
                        if (hasComponentDefaultKeyHandlers && !hasComponentKeyDownMethod) {
                            throw Error("Component's declaration must have 'keyDown' method.")
                        }
                    };
                    _proto._checkContentReadyOption = function(fullName) {
                        const contentReadyOptions = this._getContentReadyOptions().reduce((options, name) => {
                            options[name] = true;
                            return options
                        }, {});
                        this._checkContentReadyOption = optionName => !!contentReadyOptions[optionName];
                        return this._checkContentReadyOption(fullName)
                    };
                    _proto._getContentReadyOptions = function() {
                        return ["rtlEnabled"]
                    };
                    _proto._fireContentReady = function() {
                        this._actionsMap.onContentReady({})
                    };
                    _proto._getDefaultOptions = function() {
                        const viewDefaultProps = this._getViewComponentDefaultProps();
                        return (0, _extend.extend)(true, _DOMComponent.prototype._getDefaultOptions.call(this), viewDefaultProps, this._propsInfo.twoWay.reduce((options, _ref) => {
                            let [name, defaultName, eventName] = _ref;
                            return _extends({}, options, {
                                [name]: viewDefaultProps[defaultName],
                                [eventName]: value => this.option(name, value)
                            })
                        }, {}), this._propsInfo.templates.reduce((options, name) => _extends({}, options, {
                            [name]: null
                        }), {}))
                    };
                    _proto._getUnwrappedOption = function() {
                        const unwrappedProps = {};
                        Object.keys(this.option()).forEach(key => {
                            unwrappedProps[key] = this.option(key)
                        });
                        return unwrappedProps
                    };
                    _proto._initializeComponent = function() {
                        var _this$_templateManage;
                        _DOMComponent.prototype._initializeComponent.call(this);
                        null === (_this$_templateManage = this._templateManager) || void 0 === _this$_templateManage ? void 0 : _this$_templateManage.addDefaultTemplates(this.getDefaultTemplates());
                        const optionProxy = this._getUnwrappedOption();
                        this._props = this._optionsWithDefaultTemplates(optionProxy);
                        this._propsInfo.templates.forEach(template => {
                            this._componentTemplates[template] = this._createTemplateComponent(this._props[template])
                        });
                        Object.keys(this._getActionConfigsFull()).forEach(name => this._addAction(name));
                        this._viewRef = (0, _inferno.createRef)();
                        this.defaultKeyHandlers = this._createDefaultKeyHandlers()
                    };
                    _proto._initMarkup = function() {
                        const props = this.getProps();
                        this._renderWrapper(props)
                    };
                    _proto._renderWrapper = function(props) {
                        const containerNode = this.$element()[0];
                        if (!this._isNodeReplaced) {
                            _inferno_renderer.default.onPreRender()
                        }
                        _inferno_renderer.default.render(this._viewComponent, props, containerNode, this._isNodeReplaced);
                        if (!this._isNodeReplaced) {
                            this._isNodeReplaced = true;
                            _inferno_renderer.default.onAfterRender();
                            this._shouldRaiseContentReady = true
                        }
                        if (this._shouldRaiseContentReady) {
                            this._fireContentReady();
                            this._shouldRaiseContentReady = false
                        }
                    };
                    _proto._silent = function(name, value) {
                        this._options.silent(name, value)
                    };
                    _proto._render = function() {};
                    _proto._removeWidget = function() {
                        _inferno_renderer.default.remove(this.$element()[0])
                    };
                    _proto._dispose = function() {
                        this._removeWidget();
                        _DOMComponent.prototype._dispose.call(this)
                    };
                    _proto._getAdditionalActionConfigs = function() {
                        return {
                            onContentReady: {
                                excludeValidators: ["disabled", "readOnly"]
                            }
                        }
                    };
                    _proto._getAdditionalProps = function() {
                        return []
                    };
                    _proto._patchOptionValues = function(options) {
                        const {
                            allowNull: allowNull,
                            elements: elements,
                            props: props,
                            twoWay: twoWay
                        } = this._propsInfo;
                        const viewDefaultProps = this._getViewComponentDefaultProps();
                        const defaultWidgetPropsKeys = Object.keys(viewDefaultProps);
                        const defaultOptions = this._getDefaultOptions();
                        const {
                            children: children,
                            onKeyboardHandled: onKeyboardHandled,
                            ref: ref
                        } = options;
                        const onKeyDown = onKeyboardHandled ? (_, event_options) => {
                            onKeyboardHandled(event_options)
                        } : void 0;
                        const widgetProps = {
                            ref: ref,
                            children: children,
                            onKeyDown: onKeyDown
                        };
                        [...props, ...this._getAdditionalProps()].forEach(propName => {
                            if (Object.prototype.hasOwnProperty.call(options, propName)) {
                                widgetProps[propName] = options[propName]
                            }
                        });
                        allowNull.forEach(setDefaultOptionValue(widgetProps, () => null));
                        defaultWidgetPropsKeys.forEach(setDefaultOptionValue(widgetProps, name => defaultOptions[name]));
                        twoWay.forEach(_ref2 => {
                            let [name, defaultName] = _ref2;
                            setDefaultOptionValue(widgetProps, () => defaultOptions[defaultName])(name)
                        });
                        elements.forEach(name => {
                            if (name in widgetProps) {
                                const value = widgetProps[name];
                                if ((0, _type.isRenderer)(value)) {
                                    widgetProps[name] = this._patchElementParam(value)
                                }
                            }
                        });
                        return widgetProps
                    };
                    _proto.getSupportedKeyNames = function() {
                        return []
                    };
                    _proto.prepareStyleProp = function(props) {
                        if ("string" === typeof props.style) {
                            return _extends({}, props, {
                                style: {},
                                cssText: props.style
                            })
                        }
                        return props
                    };
                    _proto.getProps = function() {
                        var _this$elementAttr$cla, _elementAttr$class;
                        const {
                            elementAttr: elementAttr
                        } = this.option();
                        const options = this._patchOptionValues(_extends({}, this._props, {
                            ref: this._viewRef,
                            children: this._extractDefaultSlot(),
                            aria: this._aria
                        }));
                        this._propsInfo.templates.forEach(template => {
                            options[template] = this._componentTemplates[template]
                        });
                        return this.prepareStyleProp(_extends({}, options, this.elementAttr, elementAttr, {
                            className: [...(null !== (_this$elementAttr$cla = this.elementAttr.class) && void 0 !== _this$elementAttr$cla ? _this$elementAttr$cla : "").split(" "), ...(null !== (_elementAttr$class = null === elementAttr || void 0 === elementAttr ? void 0 : elementAttr.class) && void 0 !== _elementAttr$class ? _elementAttr$class : "").split(" ")].filter((c, i, a) => c && a.indexOf(c) === i).join(" ").trim(),
                            class: ""
                        }, this._actionsMap))
                    };
                    _proto._getActionConfigs = function() {
                        return {}
                    };
                    _proto._getActionConfigsFull = function() {
                        return _extends({}, this._getActionConfigs(), this._getAdditionalActionConfigs())
                    };
                    _proto.getDefaultTemplates = function() {
                        const defaultTemplates = Object.values(this._templatesInfo);
                        const result = {};
                        defaultTemplates.forEach(template => {
                            result[template] = "dx-renovation-template-mock"
                        });
                        return result
                    };
                    _proto._optionsWithDefaultTemplates = function(options) {
                        const templateOptions = Object.entries(this._templatesInfo).reduce((result, _ref3) => {
                            var _options$templateName;
                            let [templateName, templateValue] = _ref3;
                            return _extends({}, result, {
                                [templateName]: null !== (_options$templateName = options[templateName]) && void 0 !== _options$templateName ? _options$templateName : templateValue
                            })
                        }, {});
                        return _extends({}, options, templateOptions)
                    };
                    _proto._init = function() {
                        _DOMComponent.prototype._init.call(this);
                        this.customKeyHandlers = {};
                        this._actionsMap = {};
                        this._aria = {};
                        this._componentTemplates = {}
                    };
                    _proto._createDefaultKeyHandlers = function() {
                        const result = {};
                        const keys = this.getSupportedKeyNames();
                        keys.forEach(key => {
                            result[key] = e => this.viewRef.keyDown(_keyboard_processor.default.createKeyDownOptions(e))
                        });
                        return result
                    };
                    _proto._addAction = function(event, actionToAdd) {
                        let action = actionToAdd;
                        if (!action) {
                            const actionByOption = this._createActionByOption(event, this._getActionConfigsFull()[event]);
                            action = actArgs => {
                                Object.keys(actArgs).forEach(name => {
                                    if ((0, _type.isDefined)(actArgs[name]) && _dom_adapter.default.isNode(actArgs[name])) {
                                        actArgs[name] = (0, _element.getPublicElement)((0, _renderer.default)(actArgs[name]))
                                    }
                                });
                                return actionByOption(actArgs)
                            }
                        }
                        this._actionsMap[event] = action
                    };
                    _proto._optionChanged = function(option) {
                        const {
                            fullName: fullName,
                            name: name,
                            previousValue: previousValue,
                            value: value
                        } = option;
                        (0, _update_props_immutable.updatePropsImmutable)(this._props, this.option(), name, fullName);
                        if (this._propsInfo.templates.includes(name) && value !== previousValue) {
                            this._componentTemplates[name] = this._createTemplateComponent(value)
                        }
                        if (name && this._getActionConfigsFull()[name]) {
                            this._addAction(name)
                        }
                        this._shouldRaiseContentReady = this._shouldRaiseContentReady || this._checkContentReadyOption(fullName);
                        _DOMComponent.prototype._optionChanged.call(this, option);
                        this._invalidate()
                    };
                    _proto._extractDefaultSlot = function() {
                        if (this.option("_hasAnonymousTemplateContent")) {
                            return _inferno_renderer.default.createElement(_template_wrapper.TemplateWrapper, {
                                template: this._getTemplate(this._templateManager.anonymousTemplateName),
                                transclude: true,
                                renovated: true
                            })
                        }
                        return null
                    };
                    _proto._createTemplateComponent = function(templateOption) {
                        if (!templateOption) {
                            return
                        }
                        const template = this._getTemplate(templateOption);
                        if ((0, _type.isString)(template) && "dx-renovation-template-mock" === template) {
                            return
                        }
                        return model => _inferno_renderer.default.createElement(_template_wrapper.TemplateWrapper, (0, _template_wrapper.buildTemplateArgs)(model, template))
                    };
                    _proto._wrapKeyDownHandler = function(initialHandler) {
                        return options => {
                            const {
                                keyName: keyName,
                                originalEvent: originalEvent,
                                which: which
                            } = options;
                            const keys = this.customKeyHandlers;
                            const func = keys[keyName] || keys[which];
                            if (void 0 !== func) {
                                const handler = func.bind(this);
                                const result = handler(originalEvent, options);
                                if (!result) {
                                    originalEvent.cancel = true;
                                    return originalEvent
                                }
                            }
                            return null === initialHandler || void 0 === initialHandler ? void 0 : initialHandler(originalEvent, options)
                        }
                    };
                    _proto._toPublicElement = function(element) {
                        return (0, _element.getPublicElement)((0, _renderer.default)(element))
                    };
                    _proto._patchElementParam = function(value) {
                        try {
                            const result = (0, _renderer.default)(value);
                            const element = null === result || void 0 === result ? void 0 : result.get(0);
                            return null !== element && void 0 !== element && element.nodeType ? element : value
                        } catch (error) {
                            return value
                        }
                    };
                    _proto.repaint = function() {
                        this._isNodeReplaced = false;
                        this._shouldRaiseContentReady = true;
                        this._removeWidget();
                        this._refresh()
                    };
                    _proto._supportedKeys = function() {
                        return _extends({}, this.defaultKeyHandlers, this.customKeyHandlers)
                    };
                    _proto.registerKeyHandler = function(key, handler) {
                        this.customKeyHandlers[key] = handler
                    };
                    _proto.setAria = function(name, value) {
                        this._aria[name] = value;
                        this._initMarkup()
                    };
                    _proto._getViewComponentDefaultProps = function() {
                        return this._viewComponent.defaultProps || {}
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(ComponentWrapper, [{
                        key: "_propsInfo",
                        get: function() {
                            return {
                                allowNull: [],
                                twoWay: [],
                                elements: [],
                                templates: [],
                                props: []
                            }
                        }
                    }, {
                        key: "viewRef",
                        get: function() {
                            var _this$_viewRef;
                            return null === (_this$_viewRef = this._viewRef) || void 0 === _this$_viewRef ? void 0 : _this$_viewRef.current
                        }
                    }, {
                        key: "elementAttr",
                        get: function() {
                            const element = this.$element()[0];
                            if (!this._elementAttr) {
                                const {
                                    attributes: attributes
                                } = element;
                                const attrs = Array.from(attributes).filter(attr => {
                                    var _attributes$attr$name;
                                    return !this._propsInfo.templates.includes(attr.name) && (null === (_attributes$attr$name = attributes[attr.name]) || void 0 === _attributes$attr$name ? void 0 : _attributes$attr$name.specified)
                                }).reduce((result, _ref4) => {
                                    let {
                                        name: name,
                                        value: value
                                    } = _ref4;
                                    const updatedAttributes = result;
                                    const isDomAttr = name in element;
                                    updatedAttributes[name] = "" === value && isDomAttr ? element[name] : value;
                                    return updatedAttributes
                                }, {});
                                this._elementAttr = attrs;
                                this._storedClasses = element.getAttribute("class") || ""
                            }
                            const elemStyle = element.style;
                            const style = {};
                            for (let i = 0; i < elemStyle.length; i += 1) {
                                style[elemStyle[i]] = elemStyle.getPropertyValue(elemStyle[i])
                            }
                            this._elementAttr.style = style;
                            this._elementAttr.class = this._storedClasses;
                            return this._elementAttr
                        }
                    }, {
                        key: "_templatesInfo",
                        get: function() {
                            return {}
                        }
                    }]);
                    return ComponentWrapper
                }(_dom_component.default);
                exports.default = ComponentWrapper;
                ComponentWrapper.IS_RENOVATED_WIDGET = false;
                ComponentWrapper.IS_RENOVATED_WIDGET = true;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        93407:
            /*!*****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/component_wrapper/common/template_wrapper.js ***!
              \*****************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.TemplateWrapper = void 0;
                exports.buildTemplateArgs = function(model, template) {
                    var _model$data;
                    const args = {
                        template: template,
                        model: _extends({}, model)
                    };
                    const _ref = null !== (_model$data = model.data) && void 0 !== _model$data ? _model$data : {},
                        {
                            isEqual: isEqual
                        } = _ref,
                        data = function(source, excluded) {
                            if (null == source) {
                                return {}
                            }
                            var target = {};
                            var sourceKeys = Object.keys(source);
                            var key, i;
                            for (i = 0; i < sourceKeys.length; i++) {
                                key = sourceKeys[i];
                                if (excluded.indexOf(key) >= 0) {
                                    continue
                                }
                                target[key] = source[key]
                            }
                            return target
                        }(_ref, _excluded);
                    if (isEqual) {
                        args.model.data = data;
                        args.isEqual = isEqual
                    }
                    return args
                };
                var _inferno = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _inferno2 = __webpack_require__( /*! inferno */ 65414);
                var _dom = __webpack_require__( /*! ../../../core/utils/dom */ 3532);
                var _shallow_equals = __webpack_require__( /*! ../../utils/shallow_equals */ 33502);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 73349));
                var _element = __webpack_require__( /*! ../../../core/element */ 6415);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                const _excluded = ["isEqual"];

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                let TemplateWrapper = function(_InfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(TemplateWrapper, _InfernoComponent);

                    function TemplateWrapper(props) {
                        var _this;
                        _this = _InfernoComponent.call(this, props) || this;
                        _this.renderTemplate = _this.renderTemplate.bind(function(self) {
                            if (void 0 === self) {
                                throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                            }
                            return self
                        }(_this));
                        return _this
                    }
                    var _proto = TemplateWrapper.prototype;
                    _proto.renderTemplate = function() {
                        const node = (0, _inferno2.findDOMfromVNode)(this.$LI, true);
                        if (!(null !== node && void 0 !== node && node.parentNode)) {
                            return () => {}
                        }
                        const container = node.parentNode;
                        const $container = (0, _renderer.default)(container);
                        const $oldContainerContent = $container.contents().toArray();
                        const content = function(props, container) {
                            var _props$model;
                            const {
                                data: data,
                                index: index
                            } = null !== (_props$model = props.model) && void 0 !== _props$model ? _props$model : {
                                data: {}
                            };
                            if (data) {
                                Object.keys(data).forEach(name => {
                                    if (data[name] && _dom_adapter.default.isNode(data[name])) {
                                        data[name] = (0, _element.getPublicElement)((0, _renderer.default)(data[name]))
                                    }
                                })
                            }
                            const rendered = props.template.render(_extends({
                                container: container,
                                transclude: props.transclude
                            }, {
                                renovated: props.renovated
                            }, !props.transclude ? {
                                model: data
                            } : {}, !props.transclude && Number.isFinite(index) ? {
                                index: index
                            } : {}));
                            if (void 0 === rendered) {
                                return []
                            }
                            return (element = rendered, !!element.toArray) ? rendered.toArray() : [(0, _renderer.default)(rendered).get(0)];
                            var element
                        }(this.props, (0, _element.getPublicElement)($container));
                        (0, _dom.replaceWith)((0, _renderer.default)(node), (0, _renderer.default)(content));
                        return () => {
                            const $actualContainerContent = (0, _renderer.default)(container).contents().toArray();
                            oldChildren = $oldContainerContent, newChildren = $actualContainerContent, void newChildren.forEach(newElement => {
                                const hasOldChild = !!oldChildren.find(oldElement => newElement === oldElement);
                                if (!hasOldChild && newElement.parentNode) {
                                    (0, _renderer.default)(newElement).remove()
                                }
                            });
                            var oldChildren, newChildren;
                            container.appendChild(node)
                        }
                    };
                    _proto.shouldComponentUpdate = function(nextProps) {
                        const {
                            model: model,
                            template: template
                        } = this.props;
                        const {
                            isEqual: isEqual,
                            model: nextModel,
                            template: nextTemplate
                        } = nextProps;
                        const equalityComparer = null !== isEqual && void 0 !== isEqual ? isEqual : _shallow_equals.shallowEquals;
                        if (template !== nextTemplate) {
                            return true
                        }
                        if (!(0, _type.isDefined)(model) || !(0, _type.isDefined)(nextModel)) {
                            return model !== nextModel
                        }
                        const {
                            data: data,
                            index: index
                        } = model;
                        const {
                            data: nextData,
                            index: nextIndex
                        } = nextModel;
                        if (index !== nextIndex) {
                            return true
                        }
                        return !equalityComparer(data, nextData)
                    };
                    _proto.createEffects = function() {
                        return [new _inferno.InfernoEffect(this.renderTemplate, [this.props.template, this.props.model])]
                    };
                    _proto.updateEffects = function() {
                        this._effects[0].update([this.props.template, this.props.model])
                    };
                    _proto.componentWillUnmount = function() {};
                    _proto.render = function() {
                        return null
                    };
                    return TemplateWrapper
                }(_inferno.InfernoComponent);
                exports.TemplateWrapper = TemplateWrapper
            },
        74046:
            /*!***********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/component_wrapper/editors/check_box.js ***!
              \***********************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _editor = (obj = __webpack_require__( /*! ./editor */ 88667), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let CheckBox = function(_Editor) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(CheckBox, _Editor);

                    function CheckBox() {
                        return _Editor.apply(this, arguments) || this
                    }
                    var _proto = CheckBox.prototype;
                    _proto._useTemplates = function() {
                        return false
                    };
                    _proto._isFocused = function() {
                        const focusTarget = this.$element()[0];
                        return focusTarget.classList.contains("dx-state-focused")
                    };
                    _proto.getSupportedKeyNames = function() {
                        return ["space"]
                    };
                    _proto.getProps = function() {
                        const props = _Editor.prototype.getProps.call(this);
                        if (null !== props.value) {
                            props.value = Boolean(props.value)
                        }
                        return props
                    };
                    return CheckBox
                }(_editor.default);
                exports.default = CheckBox;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        88667:
            /*!********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/component_wrapper/editors/editor.js ***!
              \********************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _component = _interopRequireDefault(__webpack_require__( /*! ../common/component */ 27135));
                var _validation_engine = _interopRequireDefault(__webpack_require__( /*! ../../../ui/validation_engine */ 90964));
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _element_data = __webpack_require__( /*! ../../../core/element_data */ 97906);
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/callbacks */ 44504));
                var _editor = _interopRequireDefault(__webpack_require__( /*! ../../../ui/editor/editor */ 96452));
                var _dom = __webpack_require__( /*! ../../utils/dom */ 46299);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let Editor = function(_Component) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(Editor, _Component);

                    function Editor() {
                        return _Component.apply(this, arguments) || this
                    }
                    var _proto = Editor.prototype;
                    _proto.getProps = function() {
                        const props = _Component.prototype.getProps.call(this);
                        props.onFocusIn = () => {
                            const isValidationMessageShownOnFocus = "auto" === this.option("validationMessageMode");
                            if (isValidationMessageShownOnFocus) {
                                const $validationMessageWrapper = (0, _renderer.default)((0, _dom.querySelectorInSameDocument)(this.element(), ".dx-invalid-message.dx-overlay-wrapper"));
                                null === $validationMessageWrapper || void 0 === $validationMessageWrapper ? void 0 : $validationMessageWrapper.removeClass("dx-invalid-message-auto");
                                const timeToWaitBeforeShow = 150;
                                if (this.showValidationMessageTimeout) {
                                    clearTimeout(this.showValidationMessageTimeout)
                                }
                                this.showValidationMessageTimeout = setTimeout(() => {
                                    null === $validationMessageWrapper || void 0 === $validationMessageWrapper ? void 0 : $validationMessageWrapper.addClass("dx-invalid-message-auto")
                                }, timeToWaitBeforeShow)
                            }
                        };
                        props.saveValueChangeEvent = e => {
                            this._valueChangeEventInstance = e
                        };
                        return props
                    };
                    _proto._createElement = function(element) {
                        _Component.prototype._createElement.call(this, element);
                        this.showValidationMessageTimeout = void 0;
                        this.validationRequest = (0, _callbacks.default)();
                        (0, _element_data.data)(this.$element()[0], "dx-validation-target", this)
                    };
                    _proto._render = function() {
                        var _this$option;
                        null === (_this$option = this.option("_onMarkupRendered")) || void 0 === _this$option ? void 0 : _this$option()
                    };
                    _proto._init = function() {
                        _Component.prototype._init.call(this);
                        this._initialValue = this.option("value")
                    };
                    _proto._initializeComponent = function() {
                        _Component.prototype._initializeComponent.call(this);
                        this._valueChangeAction = this._createActionByOption("onValueChanged", {
                            excludeValidators: ["disabled", "readOnly"]
                        })
                    };
                    _proto._initOptions = function(options) {
                        _Component.prototype._initOptions.call(this, options);
                        this.option(_validation_engine.default.initValidationOptions(options))
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_Component.prototype._getDefaultOptions.call(this), {
                            validationMessageOffset: {
                                h: 0,
                                v: 0
                            },
                            validationTooltipOptions: {}
                        })
                    };
                    _proto._bindInnerWidgetOptions = function(innerWidget, optionsContainer) {
                        const innerWidgetOptions = (0, _extend.extend)({}, innerWidget.option());
                        const syncOptions = () => this._silent(optionsContainer, innerWidgetOptions);
                        syncOptions();
                        innerWidget.on("optionChanged", syncOptions)
                    };
                    _proto._raiseValidation = function(value, previousValue) {
                        const areValuesEmpty = !(0, _type.isDefined)(value) && !(0, _type.isDefined)(previousValue);
                        if (value !== previousValue && !areValuesEmpty) {
                            this.validationRequest.fire({
                                value: value,
                                editor: this
                            })
                        }
                    };
                    _proto._raiseValueChangeAction = function(value, previousValue) {
                        var _this$_valueChangeAct;
                        null === (_this$_valueChangeAct = this._valueChangeAction) || void 0 === _this$_valueChangeAct ? void 0 : _this$_valueChangeAct.call(this, {
                            element: this.$element(),
                            previousValue: previousValue,
                            value: value,
                            event: this._valueChangeEventInstance
                        });
                        this._valueChangeEventInstance = void 0
                    };
                    _proto._optionChanged = function(option) {
                        const {
                            name: name,
                            previousValue: previousValue,
                            value: value
                        } = option;
                        if (name && void 0 !== this._getActionConfigs()[name]) {
                            this._addAction(name)
                        }
                        switch (name) {
                            case "value":
                                this._raiseValidation(value, previousValue);
                                this.option("isDirty", this._initialValue !== value);
                                this._raiseValueChangeAction(value, previousValue);
                                break;
                            case "onValueChanged":
                                this._valueChangeAction = this._createActionByOption("onValueChanged", {
                                    excludeValidators: ["disabled", "readOnly"]
                                });
                                break;
                            case "isValid":
                            case "validationError":
                            case "validationErrors":
                            case "validationStatus":
                                this.option(_validation_engine.default.synchronizeValidationOptions(option, this.option()))
                        }
                        _Component.prototype._optionChanged.call(this, option)
                    };
                    _proto.clear = function() {
                        const {
                            value: value
                        } = this._getDefaultOptions();
                        this.option({
                            value: value
                        })
                    };
                    _proto.reset = function() {
                        let value = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : void 0;
                        if (arguments.length) {
                            this._initialValue = value
                        }
                        this.option("value", this._initialValue);
                        this.option("isDirty", false);
                        this.option("isValid", true)
                    };
                    _proto._dispose = function() {
                        _Component.prototype._dispose.call(this);
                        (0, _element_data.data)(this.element(), "dx-validation-target", null);
                        if (this.showValidationMessageTimeout) {
                            clearTimeout(this.showValidationMessageTimeout)
                        }
                    };
                    return Editor
                }(_component.default);
                exports.default = Editor;
                const prevIsEditor = _editor.default.isEditor;
                const newIsEditor = instance => prevIsEditor(instance) || instance instanceof Editor;
                Editor.isEditor = newIsEditor;
                _editor.default.isEditor = newIsEditor;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        97827:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/component_wrapper/grid_pager.js ***!
              \****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.GridPagerWrapper = void 0;
                var _component = (obj = __webpack_require__( /*! ./common/component */ 27135), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let GridPagerWrapper = function(_Component) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(GridPagerWrapper, _Component);

                    function GridPagerWrapper() {
                        return _Component.apply(this, arguments) || this
                    }
                    var _proto = GridPagerWrapper.prototype;
                    _proto._optionChanged = function(args) {
                        switch (args.name) {
                            case "pageIndex": {
                                const pageIndexChanged = this.option("pageIndexChanged");
                                if (pageIndexChanged) {
                                    pageIndexChanged(args.value)
                                }
                                break
                            }
                            case "pageSize": {
                                const pageSizeChanged = this.option("pageSizeChanged");
                                if (pageSizeChanged) {
                                    pageSizeChanged(args.value)
                                }
                                break
                            }
                        }
                        _Component.prototype._optionChanged.call(this, args)
                    };
                    return GridPagerWrapper
                }(_component.default);
                exports.GridPagerWrapper = GridPagerWrapper
            },
        15281:
            /*!**************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/component_wrapper/scheduler/date_table.js ***!
              \**************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.DateTable = void 0;
                var _component = (obj = __webpack_require__( /*! ../common/component */ 27135), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let DateTable = function(_Component) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(DateTable, _Component);

                    function DateTable() {
                        return _Component.apply(this, arguments) || this
                    }
                    var _proto = DateTable.prototype;
                    _proto._setOptionsByReference = function() {
                        _Component.prototype._setOptionsByReference.call(this);
                        this._optionsByReference = _extends({}, this._optionsByReference, {
                            dataCellTemplate: true
                        })
                    };
                    return DateTable
                }(_component.default);
                exports.DateTable = DateTable
            },
        55095:
            /*!***************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/component_wrapper/scheduler/group_panel.js ***!
              \***************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.GroupPanelWrapper = void 0;
                var _component = (obj = __webpack_require__( /*! ../common/component */ 27135), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let GroupPanelWrapper = function(_Component) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(GroupPanelWrapper, _Component);

                    function GroupPanelWrapper() {
                        return _Component.apply(this, arguments) || this
                    }
                    var _proto = GroupPanelWrapper.prototype;
                    _proto._setOptionsByReference = function() {
                        _Component.prototype._setOptionsByReference.call(this);
                        this._optionsByReference = _extends({}, this._optionsByReference, {
                            resourceCellTemplate: true
                        })
                    };
                    return GroupPanelWrapper
                }(_component.default);
                exports.GroupPanelWrapper = GroupPanelWrapper
            },
        86214:
            /*!****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/component_wrapper/scheduler/header_panel.js ***!
              \****************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.HeaderPanel = void 0;
                var _component = (obj = __webpack_require__( /*! ../common/component */ 27135), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let HeaderPanel = function(_Component) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(HeaderPanel, _Component);

                    function HeaderPanel() {
                        return _Component.apply(this, arguments) || this
                    }
                    var _proto = HeaderPanel.prototype;
                    _proto._setOptionsByReference = function() {
                        _Component.prototype._setOptionsByReference.call(this);
                        this._optionsByReference = _extends({}, this._optionsByReference, {
                            dateHeaderData: true,
                            resourceCellTemplate: true,
                            dateCellTemplate: true,
                            timeCellTemplate: true
                        })
                    };
                    return HeaderPanel
                }(_component.default);
                exports.HeaderPanel = HeaderPanel
            },
        99503:
            /*!**************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/component_wrapper/scheduler/time_panel.js ***!
              \**************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.TimePanel = void 0;
                var _component = (obj = __webpack_require__( /*! ../common/component */ 27135), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let TimePanel = function(_Component) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(TimePanel, _Component);

                    function TimePanel() {
                        return _Component.apply(this, arguments) || this
                    }
                    var _proto = TimePanel.prototype;
                    _proto._setOptionsByReference = function() {
                        _Component.prototype._setOptionsByReference.call(this);
                        this._optionsByReference = _extends({}, this._optionsByReference, {
                            timeCellTemplate: true
                        })
                    };
                    return TimePanel
                }(_component.default);
                exports.TimePanel = TimePanel
            },
        36583:
            /*!**********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/component_wrapper/utils/update_props_immutable.js ***!
              \**********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.updatePropsImmutable = function(props, option, name, fullName) {
                    const currentPropsValue = option[name];
                    const prevPropsValue = props[name];
                    const result = props;
                    if ((0, _type.isPlainObject)(currentPropsValue) || name !== fullName && Array.isArray(currentPropsValue)) {
                        result[name] = function cloneObjectProp(value, prevValue, fullNameParts) {
                            const result = fullNameParts.length > 0 && prevValue && value !== prevValue ? cloneObjectValue(prevValue) : cloneObjectValue(value);
                            const name = fullNameParts[0];
                            if (fullNameParts.length > 1) {
                                result[name] = cloneObjectProp(value[name], null === prevValue || void 0 === prevValue ? void 0 : prevValue[name], fullNameParts.slice(1))
                            } else if (name) {
                                if ((0, _type.isPlainObject)(value[name])) {
                                    result[name] = cloneObjectValue(value[name])
                                } else {
                                    result[name] = value[name]
                                }
                            }
                            return result
                        }(currentPropsValue, prevPropsValue, (0, _data.getPathParts)(fullName).slice(1))
                    } else {
                        result[name] = currentPropsValue
                    }
                };
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _data = __webpack_require__( /*! ../../../core/utils/data */ 47617);

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                function cloneObjectValue(value) {
                    return Array.isArray(value) ? [...value] : _extends({}, value)
                }
            },
        83151:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/button.j.js ***!
              \***********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _button = _interopRequireDefault(__webpack_require__( /*! ../component_wrapper/button */ 8668));
                var _button2 = __webpack_require__( /*! ./button */ 36729);

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

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let Button = function(_BaseComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(Button, _BaseComponent);

                    function Button() {
                        return _BaseComponent.apply(this, arguments) || this
                    }
                    var _proto = Button.prototype;
                    _proto.getProps = function() {
                        const props = _BaseComponent.prototype.getProps.call(this);
                        props.onKeyDown = this._wrapKeyDownHandler(props.onKeyDown);
                        return props
                    };
                    _proto.focus = function() {
                        var _this$viewRef;
                        return null === (_this$viewRef = this.viewRef) || void 0 === _this$viewRef ? void 0 : _this$viewRef.focus(...arguments)
                    };
                    _proto.activate = function() {
                        var _this$viewRef2;
                        return null === (_this$viewRef2 = this.viewRef) || void 0 === _this$viewRef2 ? void 0 : _this$viewRef2.activate(...arguments)
                    };
                    _proto.deactivate = function() {
                        var _this$viewRef3;
                        return null === (_this$viewRef3 = this.viewRef) || void 0 === _this$viewRef3 ? void 0 : _this$viewRef3.deactivate(...arguments)
                    };
                    _proto._getActionConfigs = function() {
                        return {
                            onClick: {
                                excludeValidators: ["readOnly"]
                            },
                            onSubmit: {}
                        }
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(Button, [{
                        key: "_propsInfo",
                        get: function() {
                            return {
                                twoWay: [],
                                allowNull: [],
                                elements: ["onSubmit"],
                                templates: ["template", "iconTemplate"],
                                props: ["activeStateEnabled", "hoverStateEnabled", "icon", "iconPosition", "onClick", "onSubmit", "pressed", "stylingMode", "template", "iconTemplate", "text", "type", "useInkRipple", "useSubmitBehavior", "templateData", "className", "accessKey", "disabled", "focusStateEnabled", "height", "hint", "onKeyDown", "rtlEnabled", "tabIndex", "visible", "width"]
                            }
                        }
                    }, {
                        key: "_viewComponent",
                        get: function() {
                            return _button2.Button
                        }
                    }]);
                    return Button
                }(_button.default);
                exports.default = Button;
                (0, _component_registrator.default)("dxButton", Button);
                Button.defaultOptions = _button2.defaultOptions;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        36729:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/button.js ***!
              \*********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.defaultOptionRules = exports.ButtonProps = exports.Button = void 0;
                exports.defaultOptions = function(rule) {
                    __defaultOptionRules.push(rule);
                    Button.defaultProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(Button.defaultProps), Object.getOwnPropertyDescriptors((0, _utils.convertRulesToOptions)(defaultOptionRules)), Object.getOwnPropertyDescriptors((0, _utils.convertRulesToOptions)(__defaultOptionRules))))
                };
                exports.viewFunction = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _utils = __webpack_require__( /*! ../../core/options/utils */ 45434);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _themes = __webpack_require__( /*! ../../ui/themes */ 75811);
                var _short = __webpack_require__( /*! ../../events/short */ 72918);
                var _combine_classes = __webpack_require__( /*! ../utils/combine_classes */ 86237);
                var _icon = __webpack_require__( /*! ../../core/utils/icon */ 44899);
                var _inflector = __webpack_require__( /*! ../../core/utils/inflector */ 78008);
                var _icon2 = __webpack_require__( /*! ./common/icon */ 92272);
                var _ink_ripple = __webpack_require__( /*! ./common/ink_ripple */ 84507);
                var _widget = __webpack_require__( /*! ./common/widget */ 73687);
                var _base_props = __webpack_require__( /*! ./common/base_props */ 31651);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                const _excluded = ["accessKey", "activeStateEnabled", "children", "className", "disabled", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "iconPosition", "iconTemplate", "onClick", "onKeyDown", "onSubmit", "pressed", "rtlEnabled", "stylingMode", "tabIndex", "template", "templateData", "text", "type", "useInkRipple", "useSubmitBehavior", "visible", "width"];

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

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _assertThisInitialized(self) {
                    if (void 0 === self) {
                        throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                    }
                    return self
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const stylingModes = ["outlined", "text", "contained"];
                const viewFunction = viewModel => {
                    const {
                        children: children,
                        iconPosition: iconPosition,
                        iconTemplate: IconTemplate,
                        template: ButtonTemplate,
                        text: text
                    } = viewModel.props;
                    const renderText = !viewModel.props.template && !children && "" !== text;
                    const isIconLeft = "left" === iconPosition;
                    const iconComponent = !viewModel.props.template && !children && (viewModel.iconSource || viewModel.props.iconTemplate) && (0, _inferno.createComponentVNode)(2, _icon2.Icon, {
                        source: viewModel.iconSource,
                        position: iconPosition,
                        iconTemplate: IconTemplate
                    });
                    return (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _widget.Widget, _extends({
                        accessKey: viewModel.props.accessKey,
                        activeStateEnabled: viewModel.props.activeStateEnabled,
                        aria: viewModel.aria,
                        className: viewModel.props.className,
                        classes: viewModel.cssClasses,
                        disabled: viewModel.props.disabled,
                        focusStateEnabled: viewModel.props.focusStateEnabled,
                        height: viewModel.props.height,
                        hint: viewModel.props.hint,
                        hoverStateEnabled: viewModel.props.hoverStateEnabled,
                        onActive: viewModel.onActive,
                        onClick: viewModel.onWidgetClick,
                        onInactive: viewModel.onInactive,
                        onKeyDown: viewModel.keyDown,
                        rtlEnabled: viewModel.props.rtlEnabled,
                        tabIndex: viewModel.props.tabIndex,
                        visible: viewModel.props.visible,
                        width: viewModel.props.width
                    }, viewModel.restAttributes, {
                        children: (0, _inferno.createVNode)(1, "div", "dx-button-content", [viewModel.props.template && ButtonTemplate({
                            data: viewModel.buttonTemplateData
                        }), !viewModel.props.template && children, isIconLeft && iconComponent, renderText && (0, _inferno.createVNode)(1, "span", "dx-button-text", text, 0), !isIconLeft && iconComponent, viewModel.props.useSubmitBehavior && (0, _inferno.createVNode)(64, "input", "dx-button-submit-input", null, 1, {
                            type: "submit",
                            tabIndex: -1
                        }, null, viewModel.submitInputRef), viewModel.props.useInkRipple && (0, _inferno.createComponentVNode)(2, _ink_ripple.InkRipple, {
                            config: viewModel.inkRippleConfig
                        }, null, viewModel.inkRippleRef)], 0, null, null, viewModel.contentRef)
                    }), null, viewModel.widgetRef))
                };
                exports.viewFunction = viewFunction;
                const ButtonProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(_base_props.BaseWidgetProps), Object.getOwnPropertyDescriptors({
                    activeStateEnabled: true,
                    hoverStateEnabled: true,
                    icon: "",
                    iconPosition: "left",
                    stylingMode: "contained",
                    text: "",
                    type: "normal",
                    useInkRipple: false,
                    useSubmitBehavior: false,
                    templateData: Object.freeze({})
                })));
                exports.ButtonProps = ButtonProps;
                const defaultOptionRules = (0, _utils.createDefaultOptionRules)([{
                    device: () => "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator(),
                    options: {
                        focusStateEnabled: true
                    }
                }, {
                    device: () => (0, _themes.isMaterial)((0, _themes.current)()),
                    options: {
                        useInkRipple: true
                    }
                }]);
                exports.defaultOptionRules = defaultOptionRules;
                const getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, TemplateProp, _extends({}, props))) : TemplateProp);
                let Button = function(_InfernoWrapperCompon) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(Button, _InfernoWrapperCompon);

                    function Button(props) {
                        var _this;
                        _this = _InfernoWrapperCompon.call(this, props) || this;
                        _this.state = {};
                        _this.contentRef = (0, _inferno.createRef)();
                        _this.inkRippleRef = (0, _inferno.createRef)();
                        _this.submitInputRef = (0, _inferno.createRef)();
                        _this.widgetRef = (0, _inferno.createRef)();
                        _this.__getterCache = {};
                        _this.focus = _this.focus.bind(_assertThisInitialized(_this));
                        _this.activate = _this.activate.bind(_assertThisInitialized(_this));
                        _this.deactivate = _this.deactivate.bind(_assertThisInitialized(_this));
                        _this.submitEffect = _this.submitEffect.bind(_assertThisInitialized(_this));
                        _this.onActive = _this.onActive.bind(_assertThisInitialized(_this));
                        _this.onInactive = _this.onInactive.bind(_assertThisInitialized(_this));
                        _this.onWidgetClick = _this.onWidgetClick.bind(_assertThisInitialized(_this));
                        _this.keyDown = _this.keyDown.bind(_assertThisInitialized(_this));
                        _this.emitClickEvent = _this.emitClickEvent.bind(_assertThisInitialized(_this));
                        return _this
                    }
                    var _proto = Button.prototype;
                    _proto.createEffects = function() {
                        return [new _inferno2.InfernoEffect(this.submitEffect, [this.props.onSubmit, this.props.useSubmitBehavior]), (0, _inferno2.createReRenderEffect)()]
                    };
                    _proto.updateEffects = function() {
                        var _this$_effects$;
                        null === (_this$_effects$ = this._effects[0]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.props.onSubmit, this.props.useSubmitBehavior])
                    };
                    _proto.submitEffect = function() {
                        const {
                            onSubmit: onSubmit,
                            useSubmitBehavior: useSubmitBehavior
                        } = this.props;
                        if (useSubmitBehavior && onSubmit) {
                            _short.click.on(this.submitInputRef.current, event => onSubmit({
                                event: event,
                                submitInput: this.submitInputRef.current
                            }), {
                                namespace: "UIFeedback"
                            });
                            return () => _short.click.off(this.submitInputRef.current, {
                                namespace: "UIFeedback"
                            })
                        }
                        return
                    };
                    _proto.onActive = function(event) {
                        const {
                            useInkRipple: useInkRipple
                        } = this.props;
                        useInkRipple && this.inkRippleRef.current.showWave({
                            element: this.contentRef.current,
                            event: event
                        })
                    };
                    _proto.onInactive = function(event) {
                        const {
                            useInkRipple: useInkRipple
                        } = this.props;
                        useInkRipple && this.inkRippleRef.current.hideWave({
                            element: this.contentRef.current,
                            event: event
                        })
                    };
                    _proto.onWidgetClick = function(event) {
                        const {
                            onClick: onClick,
                            useSubmitBehavior: useSubmitBehavior
                        } = this.props;
                        null === onClick || void 0 === onClick ? void 0 : onClick({
                            event: event
                        });
                        useSubmitBehavior && this.submitInputRef.current.click()
                    };
                    _proto.keyDown = function(e) {
                        const {
                            onKeyDown: onKeyDown
                        } = this.props;
                        const {
                            keyName: keyName,
                            originalEvent: originalEvent,
                            which: which
                        } = e;
                        const result = null === onKeyDown || void 0 === onKeyDown ? void 0 : onKeyDown(e);
                        if (null !== result && void 0 !== result && result.cancel) {
                            return result
                        }
                        if ("space" === keyName || "space" === which || "enter" === keyName || "enter" === which) {
                            originalEvent.preventDefault();
                            this.emitClickEvent()
                        }
                        return
                    };
                    _proto.emitClickEvent = function() {
                        this.contentRef.current.click()
                    };
                    _proto.focus = function() {
                        this.widgetRef.current.focus()
                    };
                    _proto.activate = function() {
                        this.widgetRef.current.activate()
                    };
                    _proto.deactivate = function() {
                        this.widgetRef.current.deactivate()
                    };
                    _proto.componentWillUpdate = function(nextProps, nextState, context) {
                        _InfernoWrapperCompon.prototype.componentWillUpdate.call(this);
                        if (this.props.icon !== nextProps.icon || this.props.text !== nextProps.text) {
                            this.__getterCache.inkRippleConfig = void 0
                        }
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                template: getTemplate(props.template),
                                iconTemplate: getTemplate(props.iconTemplate)
                            }),
                            contentRef: this.contentRef,
                            submitInputRef: this.submitInputRef,
                            inkRippleRef: this.inkRippleRef,
                            widgetRef: this.widgetRef,
                            onActive: this.onActive,
                            onInactive: this.onInactive,
                            onWidgetClick: this.onWidgetClick,
                            keyDown: this.keyDown,
                            emitClickEvent: this.emitClickEvent,
                            aria: this.aria,
                            cssClasses: this.cssClasses,
                            iconSource: this.iconSource,
                            inkRippleConfig: this.inkRippleConfig,
                            buttonTemplateData: this.buttonTemplateData,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(Button, [{
                        key: "aria",
                        get: function() {
                            const {
                                icon: icon,
                                text: text
                            } = this.props;
                            let label = null !== text && void 0 !== text ? text : "";
                            if (!text && icon) {
                                const iconSource = (0, _icon.getImageSourceType)(icon);
                                switch (iconSource) {
                                    case "image": {
                                        const notURLRegexp = /^(?!(?:https?:\/\/)|(?:ftp:\/\/)|(?:www\.))[^\s]+$/;
                                        const isPathToImage = !icon.includes("base64") && notURLRegexp.test(icon);
                                        label = isPathToImage ? icon.replace(/.+\/([^.]+)\..+$/, "$1") : "";
                                        break
                                    }
                                    case "dxIcon":
                                        label = _message.default.format((0, _inflector.camelize)(icon, true)) || icon;
                                        break;
                                    case "fontIcon":
                                        label = icon;
                                        break;
                                    case "svg": {
                                        var _titleRegexp$exec$, _titleRegexp$exec;
                                        const titleRegexp = /<title>(.*?)<\/title>/;
                                        const title = null !== (_titleRegexp$exec$ = null === (_titleRegexp$exec = titleRegexp.exec(icon)) || void 0 === _titleRegexp$exec ? void 0 : _titleRegexp$exec[1]) && void 0 !== _titleRegexp$exec$ ? _titleRegexp$exec$ : "";
                                        label = title;
                                        break
                                    }
                                }
                            }
                            return _extends({
                                role: "button"
                            }, label ? {
                                label: label
                            } : {})
                        }
                    }, {
                        key: "cssClasses",
                        get: function() {
                            return (model => {
                                const {
                                    icon: icon,
                                    iconPosition: iconPosition,
                                    stylingMode: stylingMode,
                                    text: text,
                                    type: type
                                } = model;
                                const isValidStylingMode = stylingMode && stylingModes.includes(stylingMode);
                                const classesMap = {
                                    "dx-button": true,
                                    ["dx-button-mode-".concat(isValidStylingMode ? stylingMode : "contained")]: true,
                                    ["dx-button-".concat(null !== type && void 0 !== type ? type : "normal")]: true,
                                    "dx-button-has-text": !!text,
                                    "dx-button-has-icon": !!icon,
                                    "dx-button-icon-right": "left" !== iconPosition
                                };
                                return (0, _combine_classes.combineClasses)(classesMap)
                            })(this.props)
                        }
                    }, {
                        key: "iconSource",
                        get: function() {
                            const {
                                icon: icon
                            } = this.props;
                            return null !== icon && void 0 !== icon ? icon : ""
                        }
                    }, {
                        key: "inkRippleConfig",
                        get: function() {
                            if (void 0 !== this.__getterCache.inkRippleConfig) {
                                return this.__getterCache.inkRippleConfig
                            }
                            return this.__getterCache.inkRippleConfig = (() => {
                                const {
                                    icon: icon,
                                    text: text
                                } = this.props;
                                return !text && icon ? {
                                    isCentered: true,
                                    useHoldAnimation: false,
                                    waveSizeCoefficient: 1
                                } : {}
                            })()
                        }
                    }, {
                        key: "buttonTemplateData",
                        get: function() {
                            const {
                                icon: icon,
                                templateData: templateData,
                                text: text
                            } = this.props;
                            return _extends({
                                icon: icon,
                                text: text
                            }, templateData)
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return Button
                }(_inferno2.InfernoWrapperComponent);
                exports.Button = Button;
                Button.defaultProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(ButtonProps), Object.getOwnPropertyDescriptors(_extends({}, (0, _utils.convertRulesToOptions)(defaultOptionRules)))));
                const __defaultOptionRules = []
            },
        31651:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/common/base_props.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.BaseWidgetProps = void 0;
                exports.BaseWidgetProps = {
                    className: "",
                    activeStateEnabled: false,
                    disabled: false,
                    focusStateEnabled: false,
                    hoverStateEnabled: false,
                    tabIndex: 0,
                    visible: true
                }
            },
        96886:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/common/dom_component_wrapper.js ***!
              \*******************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.DomComponentWrapperProps = exports.DomComponentWrapper = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _config_context = __webpack_require__( /*! ../../common/config_context */ 49697);
                var _get_updated_options = __webpack_require__( /*! ./utils/get_updated_options */ 28240);
                const _excluded = ["valueChange"],
                    _excluded2 = ["componentProps", "componentType", "templateNames"];

                function _objectWithoutPropertiesLoose(source, excluded) {
                    if (null == source) {
                        return {}
                    }
                    var target = {};
                    var sourceKeys = Object.keys(source);
                    var key, i;
                    for (i = 0; i < sourceKeys.length; i++) {
                        key = sourceKeys[i];
                        if (excluded.indexOf(key) >= 0) {
                            continue
                        }
                        target[key] = source[key]
                    }
                    return target
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _assertThisInitialized(self) {
                    if (void 0 === self) {
                        throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                    }
                    return self
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const normalizeProps = props => Object.keys(props).reduce((accumulator, key) => {
                    if (void 0 !== props[key]) {
                        accumulator[key] = props[key]
                    }
                    return accumulator
                }, {});
                const viewFunction = _ref => {
                    let {
                        props: {
                            componentProps: {
                                className: className
                            }
                        },
                        restAttributes: restAttributes,
                        widgetRef: widgetRef
                    } = _ref;
                    return normalizeProps((0, _inferno.createVNode)(1, "div", className, null, 1, _extends({}, restAttributes), null, widgetRef))
                };
                exports.viewFunction = viewFunction;
                const DomComponentWrapperProps = {};
                exports.DomComponentWrapperProps = DomComponentWrapperProps;
                let DomComponentWrapper = function(_InfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(DomComponentWrapper, _InfernoComponent);

                    function DomComponentWrapper(props) {
                        var _this;
                        _this = _InfernoComponent.call(this, props) || this;
                        _this.state = {};
                        _this.widgetRef = (0, _inferno.createRef)();
                        _this.getInstance = _this.getInstance.bind(_assertThisInitialized(_this));
                        _this.setupWidget = _this.setupWidget.bind(_assertThisInitialized(_this));
                        _this.updateWidget = _this.updateWidget.bind(_assertThisInitialized(_this));
                        return _this
                    }
                    var _proto = DomComponentWrapper.prototype;
                    _proto.createEffects = function() {
                        return [new _inferno2.InfernoEffect(this.setupWidget, []), new _inferno2.InfernoEffect(this.updateWidget, [this.props.componentProps, this.config, this.props.templateNames])]
                    };
                    _proto.updateEffects = function() {
                        var _this$_effects$;
                        null === (_this$_effects$ = this._effects[1]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.props.componentProps, this.config, this.props.templateNames])
                    };
                    _proto.setupWidget = function() {
                        const componentInstance = new this.props.componentType(this.widgetRef.current, this.properties);
                        this.instance = componentInstance;
                        return () => {
                            componentInstance.dispose();
                            this.instance = null
                        }
                    };
                    _proto.updateWidget = function() {
                        const instance = this.getInstance();
                        if (!instance) {
                            return
                        }
                        const updatedOptions = (0, _get_updated_options.getUpdatedOptions)(this.prevProps || {}, this.properties);
                        if (updatedOptions.length) {
                            instance.beginUpdate();
                            updatedOptions.forEach(_ref2 => {
                                let {
                                    path: path,
                                    value: value
                                } = _ref2;
                                instance.option(path, value)
                            });
                            instance.endUpdate()
                        }
                        this.prevProps = this.properties
                    };
                    _proto.getInstance = function() {
                        return this.instance
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props),
                            widgetRef: this.widgetRef,
                            config: this.config,
                            properties: this.properties,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(DomComponentWrapper, [{
                        key: "config",
                        get: function() {
                            if (this.context[_config_context.ConfigContext.id]) {
                                return this.context[_config_context.ConfigContext.id]
                            }
                            return _config_context.ConfigContext.defaultValue
                        }
                    }, {
                        key: "properties",
                        get: function() {
                            var _this$config;
                            const normalizedProps = normalizeProps(this.props.componentProps);
                            const {
                                valueChange: valueChange
                            } = normalizedProps, restProps = _objectWithoutPropertiesLoose(normalizedProps, _excluded);
                            const properties = _extends({
                                rtlEnabled: !!(null !== (_this$config = this.config) && void 0 !== _this$config && _this$config.rtlEnabled),
                                isRenovated: true
                            }, restProps);
                            if (valueChange) {
                                properties.onValueChanged = _ref3 => {
                                    let {
                                        value: value
                                    } = _ref3;
                                    return valueChange(value)
                                }
                            }
                            const templates = this.props.templateNames;
                            templates.forEach(name => {
                                if ((0, _inferno2.hasTemplate)(name, properties, this)) {
                                    properties[name] = (item, index, container) => {
                                        (0, _inferno2.renderTemplate)(this.props.componentProps[name], {
                                            item: item,
                                            index: index,
                                            container: container
                                        }, this)
                                    }
                                }
                            });
                            return properties
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = _objectWithoutPropertiesLoose(_this$props, _excluded2);
                            return restProps
                        }
                    }]);
                    return DomComponentWrapper
                }(_inferno2.InfernoComponent);
                exports.DomComponentWrapper = DomComponentWrapper;
                DomComponentWrapper.defaultProps = DomComponentWrapperProps
            },
        92272:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/common/icon.js ***!
              \**************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.IconProps = exports.Icon = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _icon = __webpack_require__( /*! ../../../core/utils/icon */ 44899);
                var _combine_classes = __webpack_require__( /*! ../../utils/combine_classes */ 86237);
                const _excluded = ["iconTemplate", "position", "source"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = _ref => {
                    let {
                        iconClassName: iconClassName,
                        props: {
                            iconTemplate: IconTemplate,
                            source: source
                        },
                        sourceType: sourceType
                    } = _ref;
                    return (0, _inferno.createFragment)(["dxIcon" === sourceType && (0, _inferno.createVNode)(1, "i", iconClassName), "fontIcon" === sourceType && (0, _inferno.createVNode)(1, "i", iconClassName), "image" === sourceType && (0, _inferno.createVNode)(1, "img", iconClassName, null, 1, {
                        alt: "",
                        src: source
                    }), IconTemplate && (0, _inferno.createVNode)(1, "i", iconClassName, IconTemplate({}), 0)], 0)
                };
                exports.viewFunction = viewFunction;
                const IconProps = {
                    position: "left",
                    source: ""
                };
                exports.IconProps = IconProps;
                let Icon = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(Icon, _BaseInfernoComponent);

                    function Icon(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        return _this
                    }
                    var _proto = Icon.prototype;
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                iconTemplate: (TemplateProp = props.iconTemplate, TemplateProp && (TemplateProp.defaultProps ? props => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, TemplateProp, _extends({}, props))) : TemplateProp))
                            }),
                            sourceType: this.sourceType,
                            cssClass: this.cssClass,
                            iconClassName: this.iconClassName,
                            restAttributes: this.restAttributes
                        });
                        var TemplateProp
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(Icon, [{
                        key: "sourceType",
                        get: function() {
                            return (0, _icon.getImageSourceType)(this.props.source)
                        }
                    }, {
                        key: "cssClass",
                        get: function() {
                            return "left" !== this.props.position ? "dx-icon-right" : ""
                        }
                    }, {
                        key: "iconClassName",
                        get: function() {
                            const generalClasses = {
                                "dx-icon": true,
                                [this.cssClass]: !!this.cssClass
                            };
                            const {
                                source: source
                            } = this.props;
                            if ("dxIcon" === this.sourceType) {
                                return (0, _combine_classes.combineClasses)(_extends({}, generalClasses, {
                                    ["dx-icon-".concat(source)]: true
                                }))
                            }
                            if ("fontIcon" === this.sourceType) {
                                return (0, _combine_classes.combineClasses)(_extends({}, generalClasses, {
                                    [String(source)]: !!source
                                }))
                            }
                            if ("image" === this.sourceType) {
                                return (0, _combine_classes.combineClasses)(generalClasses)
                            }
                            if ("svg" === this.sourceType) {
                                return (0, _combine_classes.combineClasses)(_extends({}, generalClasses, {
                                    "dx-svg-icon": true
                                }))
                            }
                            return ""
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return Icon
                }(_inferno2.BaseInfernoComponent);
                exports.Icon = Icon;
                Icon.defaultProps = IconProps
            },
        84507:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/common/ink_ripple.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.InkRippleProps = exports.InkRipple = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _utils = __webpack_require__( /*! ../../../ui/widget/utils.ink_ripple */ 72672);
                const _excluded = ["config"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _assertThisInitialized(self) {
                    if (void 0 === self) {
                        throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                    }
                    return self
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = model => (0, _inferno.normalizeProps)((0, _inferno.createVNode)(1, "div", "dx-inkripple", null, 1, _extends({}, model.restAttributes)));
                exports.viewFunction = viewFunction;
                const InkRippleProps = {
                    config: Object.freeze({})
                };
                exports.InkRippleProps = InkRippleProps;
                let InkRipple = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(InkRipple, _BaseInfernoComponent);

                    function InkRipple(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        _this.__getterCache = {};
                        _this.hideWave = _this.hideWave.bind(_assertThisInitialized(_this));
                        _this.showWave = _this.showWave.bind(_assertThisInitialized(_this));
                        return _this
                    }
                    var _proto = InkRipple.prototype;
                    _proto.hideWave = function(opts) {
                        (0, _utils.hideWave)(this.getConfig, opts)
                    };
                    _proto.showWave = function(opts) {
                        (0, _utils.showWave)(this.getConfig, opts)
                    };
                    _proto.componentWillUpdate = function(nextProps, nextState, context) {
                        if (this.props.config !== nextProps.config) {
                            this.__getterCache.getConfig = void 0
                        }
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props),
                            getConfig: this.getConfig,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(InkRipple, [{
                        key: "getConfig",
                        get: function() {
                            if (void 0 !== this.__getterCache.getConfig) {
                                return this.__getterCache.getConfig
                            }
                            return this.__getterCache.getConfig = (() => {
                                const {
                                    config: config
                                } = this.props;
                                return (0, _utils.initConfig)(config)
                            })()
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return InkRipple
                }(_inferno2.BaseInfernoComponent);
                exports.InkRipple = InkRipple;
                InkRipple.defaultProps = InkRippleProps
            },
        25050:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/common/utils/date/index.js ***!
              \**************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                var _toMilliseconds = __webpack_require__( /*! ./toMilliseconds */ 78503);
                Object.keys(_toMilliseconds).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _toMilliseconds[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _toMilliseconds[key]
                        }
                    })
                }))
            },
        78503:
            /*!***********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/common/utils/date/toMilliseconds.js ***!
              \***********************************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.toMilliseconds = function(value) {
                    return timeIntervals[value]
                };
                const timeIntervals = {
                    millisecond: 1,
                    second: 1e3,
                    minute: 6e4,
                    hour: 36e5,
                    day: 864e5,
                    week: 6048e5,
                    month: 2592e6,
                    quarter: 7776e6,
                    year: 31536e6
                }
            },
        28240:
            /*!***********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/common/utils/get_updated_options.js ***!
              \***********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getUpdatedOptions = function(oldProps, props) {
                    let notDeepCopyArrays = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : defaultNotDeepCopyArrays;
                    return objectDiffsWithoutReactProps(oldProps, props, "", notDeepCopyArrays)
                };
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const defaultNotDeepCopyArrays = ["dataSource", "selectedRowKeys"];
                const propsToIgnore = {
                    integrationOptions: true
                };

                function getDiffItem(key, value, previousValue) {
                    return {
                        path: key,
                        value: value,
                        previousValue: previousValue
                    }
                }

                function compare(resultPaths, item1, item2, key, fullPropName, notDeepCopyArrays) {
                    if (propsToIgnore[key]) {
                        return
                    }
                    const type1 = (0, _type.type)(item1);
                    const type2 = (0, _type.type)(item2);
                    if (item1 === item2) {
                        return
                    }
                    if (type1 !== type2) {
                        resultPaths.push(getDiffItem(key, item2, item1))
                    } else if ("object" === type1) {
                        if (!(0, _type.isPlainObject)(item2)) {
                            resultPaths.push(getDiffItem(key, item2, item1))
                        } else {
                            const diffPaths = objectDiffs(item1, item2, fullPropName, notDeepCopyArrays);
                            resultPaths.push(...diffPaths.map(item => _extends({}, item, {
                                path: "".concat(key, ".").concat(item.path)
                            })))
                        }
                    } else if ("array" === type1) {
                        const notDeepCopy = notDeepCopyArrays.some(prop => fullPropName.includes(prop));
                        if (notDeepCopy && item1 !== item2) {
                            resultPaths.push(getDiffItem(key, item2, item1))
                        } else if (item1.length !== item2.length) {
                            resultPaths.push(getDiffItem(key, item2, item1))
                        } else {
                            const diffPaths = objectDiffs(item1, item2, fullPropName, notDeepCopyArrays);
                            [].push.apply(resultPaths, diffPaths.map(item => _extends({}, item, {
                                path: "".concat(key).concat(item.path)
                            })))
                        }
                    } else {
                        resultPaths.push(getDiffItem(key, item2, item1))
                    }
                }
                const objectDiffsFiltered = propsEnumerator => (oldProps, props, fullPropName, notDeepCopyArrays) => {
                    const resultPaths = [];
                    const processItem = !Array.isArray(oldProps) ? propName => {
                        compare(resultPaths, oldProps[propName], props[propName], propName, "".concat(fullPropName, ".").concat(propName), notDeepCopyArrays)
                    } : propName => {
                        compare(resultPaths, oldProps[propName], props[propName], "[".concat(propName, "]"), "".concat(fullPropName, ".").concat(propName), notDeepCopyArrays)
                    };
                    propsEnumerator(oldProps).forEach(processItem);
                    Object.keys(props).filter(propName => !Object.prototype.hasOwnProperty.call(oldProps, propName) && oldProps[propName] !== props[propName]).forEach(propName => {
                        resultPaths.push({
                            path: propName,
                            value: props[propName],
                            previousValue: oldProps[propName]
                        })
                    });
                    return resultPaths
                };
                const objectDiffs = objectDiffsFiltered(oldProps => Object.keys(oldProps));
                const reactProps = {
                    key: true,
                    ref: true,
                    children: true,
                    style: true
                };
                const objectDiffsWithoutReactProps = objectDiffsFiltered(prop => Object.keys(prop).filter(p => !reactProps[p]))
            },
        41672:
            /*!*****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/common/utils/scroll/getMemoizeScrollTo.js ***!
              \*****************************************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.getMemoizeScrollTo = function(getScrollableInstance) {
                    const instance = getScrollableInstance();
                    let lastParams = {};
                    return function(params) {
                        let force = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false;
                        const normalizedParams = {
                            top: void 0 !== params.top ? Math.ceil(params.top) : void 0,
                            left: void 0 !== params.left ? Math.ceil(params.left) : void 0
                        };
                        const isSameParams = normalizedParams.top === lastParams.top && normalizedParams.left === lastParams.left;
                        if (!force && isSameParams) {
                            return
                        }
                        lastParams = normalizedParams;
                        instance.scrollTo(params)
                    }
                }
            },
        73687:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/common/widget.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.WidgetProps = exports.Widget = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                __webpack_require__( /*! ../../../events/click */ 95429);
                __webpack_require__( /*! ../../../events/hover */ 24028);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _short = __webpack_require__( /*! ../../../events/short */ 72918);
                var _subscribe_to_event = __webpack_require__( /*! ../../utils/subscribe_to_event */ 19828);
                var _combine_classes = __webpack_require__( /*! ../../utils/combine_classes */ 86237);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _style = __webpack_require__( /*! ../../../core/utils/style */ 80968);
                var _base_props = __webpack_require__( /*! ./base_props */ 31651);
                var _config_context = __webpack_require__( /*! ../../common/config_context */ 49697);
                var _config_provider = __webpack_require__( /*! ../../common/config_provider */ 66042);
                var _resolve_rtl = __webpack_require__( /*! ../../utils/resolve_rtl */ 8374);
                var _resize_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/resize_callbacks */ 55814));
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../../core/errors */ 17381));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 73349));
                const _excluded = ["_feedbackHideTimeout", "_feedbackShowTimeout", "accessKey", "activeStateEnabled", "activeStateUnit", "addWidgetClass", "aria", "children", "className", "classes", "cssText", "disabled", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "name", "onActive", "onClick", "onDimensionChanged", "onFocusIn", "onFocusOut", "onHoverEnd", "onHoverStart", "onInactive", "onKeyDown", "onRootElementRendered", "onVisibilityChange", "rootElementRef", "rtlEnabled", "tabIndex", "visible", "width"];

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

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _assertThisInitialized(self) {
                    if (void 0 === self) {
                        throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                    }
                    return self
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = viewModel => {
                    const widget = (0, _inferno.normalizeProps)((0, _inferno.createVNode)(1, "div", viewModel.cssClasses, viewModel.props.children, 0, _extends({}, viewModel.attributes, {
                        tabIndex: viewModel.tabIndex,
                        title: viewModel.props.hint,
                        style: (0, _inferno2.normalizeStyles)(viewModel.styles)
                    }), null, viewModel.widgetElementRef));
                    return viewModel.shouldRenderConfigProvider ? (0, _inferno.createComponentVNode)(2, _config_provider.ConfigProvider, {
                        rtlEnabled: viewModel.rtlEnabled,
                        children: widget
                    }) : widget
                };
                exports.viewFunction = viewFunction;
                const WidgetProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(_base_props.BaseWidgetProps), Object.getOwnPropertyDescriptors({
                    _feedbackHideTimeout: 400,
                    _feedbackShowTimeout: 30,
                    cssText: "",
                    aria: Object.freeze({}),
                    classes: "",
                    name: "",
                    addWidgetClass: true
                })));
                exports.WidgetProps = WidgetProps;
                let Widget = function(_InfernoWrapperCompon) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(Widget, _InfernoWrapperCompon);

                    function Widget(props) {
                        var _this;
                        _this = _InfernoWrapperCompon.call(this, props) || this;
                        _this.widgetElementRef = (0, _inferno.createRef)();
                        _this.state = {
                            active: false,
                            focused: false,
                            hovered: false
                        };
                        _this.setRootElementRef = _this.setRootElementRef.bind(_assertThisInitialized(_this));
                        _this.activeEffect = _this.activeEffect.bind(_assertThisInitialized(_this));
                        _this.inactiveEffect = _this.inactiveEffect.bind(_assertThisInitialized(_this));
                        _this.clickEffect = _this.clickEffect.bind(_assertThisInitialized(_this));
                        _this.focus = _this.focus.bind(_assertThisInitialized(_this));
                        _this.blur = _this.blur.bind(_assertThisInitialized(_this));
                        _this.activate = _this.activate.bind(_assertThisInitialized(_this));
                        _this.deactivate = _this.deactivate.bind(_assertThisInitialized(_this));
                        _this.focusInEffect = _this.focusInEffect.bind(_assertThisInitialized(_this));
                        _this.focusOutEffect = _this.focusOutEffect.bind(_assertThisInitialized(_this));
                        _this.hoverStartEffect = _this.hoverStartEffect.bind(_assertThisInitialized(_this));
                        _this.hoverEndEffect = _this.hoverEndEffect.bind(_assertThisInitialized(_this));
                        _this.keyboardEffect = _this.keyboardEffect.bind(_assertThisInitialized(_this));
                        _this.resizeEffect = _this.resizeEffect.bind(_assertThisInitialized(_this));
                        _this.windowResizeEffect = _this.windowResizeEffect.bind(_assertThisInitialized(_this));
                        _this.visibilityEffect = _this.visibilityEffect.bind(_assertThisInitialized(_this));
                        _this.checkDeprecation = _this.checkDeprecation.bind(_assertThisInitialized(_this));
                        _this.applyCssTextEffect = _this.applyCssTextEffect.bind(_assertThisInitialized(_this));
                        return _this
                    }
                    var _proto = Widget.prototype;
                    _proto.createEffects = function() {
                        return [new _inferno2.InfernoEffect(this.setRootElementRef, []), new _inferno2.InfernoEffect(this.activeEffect, [this.props._feedbackShowTimeout, this.props.activeStateEnabled, this.props.activeStateUnit, this.props.disabled, this.props.onActive]), new _inferno2.InfernoEffect(this.inactiveEffect, [this.props._feedbackHideTimeout, this.props.activeStateEnabled, this.props.activeStateUnit, this.props.onInactive, this.state.active]), new _inferno2.InfernoEffect(this.clickEffect, [this.props.disabled, this.props.name, this.props.onClick]), new _inferno2.InfernoEffect(this.focusInEffect, [this.props.disabled, this.props.focusStateEnabled, this.props.name, this.props.onFocusIn]), new _inferno2.InfernoEffect(this.focusOutEffect, [this.props.focusStateEnabled, this.props.name, this.props.onFocusOut, this.state.focused]), new _inferno2.InfernoEffect(this.hoverStartEffect, [this.props.activeStateUnit, this.props.disabled, this.props.hoverStateEnabled, this.props.onHoverStart, this.state.active]), new _inferno2.InfernoEffect(this.hoverEndEffect, [this.props.activeStateUnit, this.props.hoverStateEnabled, this.props.onHoverEnd, this.state.hovered]), new _inferno2.InfernoEffect(this.keyboardEffect, [this.props.focusStateEnabled, this.props.onKeyDown]), new _inferno2.InfernoEffect(this.resizeEffect, [this.props.name, this.props.onDimensionChanged]), new _inferno2.InfernoEffect(this.windowResizeEffect, [this.props.onDimensionChanged]), new _inferno2.InfernoEffect(this.visibilityEffect, [this.props.name, this.props.onVisibilityChange]), new _inferno2.InfernoEffect(this.checkDeprecation, [this.props.height, this.props.width]), new _inferno2.InfernoEffect(this.applyCssTextEffect, [this.props.cssText]), (0, _inferno2.createReRenderEffect)()]
                    };
                    _proto.updateEffects = function() {
                        var _this$_effects$, _this$_effects$2, _this$_effects$3, _this$_effects$4, _this$_effects$5, _this$_effects$6, _this$_effects$7, _this$_effects$8, _this$_effects$9, _this$_effects$10, _this$_effects$11, _this$_effects$12, _this$_effects$13;
                        null === (_this$_effects$ = this._effects[1]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.props._feedbackShowTimeout, this.props.activeStateEnabled, this.props.activeStateUnit, this.props.disabled, this.props.onActive]);
                        null === (_this$_effects$2 = this._effects[2]) || void 0 === _this$_effects$2 ? void 0 : _this$_effects$2.update([this.props._feedbackHideTimeout, this.props.activeStateEnabled, this.props.activeStateUnit, this.props.onInactive, this.state.active]);
                        null === (_this$_effects$3 = this._effects[3]) || void 0 === _this$_effects$3 ? void 0 : _this$_effects$3.update([this.props.disabled, this.props.name, this.props.onClick]);
                        null === (_this$_effects$4 = this._effects[4]) || void 0 === _this$_effects$4 ? void 0 : _this$_effects$4.update([this.props.disabled, this.props.focusStateEnabled, this.props.name, this.props.onFocusIn]);
                        null === (_this$_effects$5 = this._effects[5]) || void 0 === _this$_effects$5 ? void 0 : _this$_effects$5.update([this.props.focusStateEnabled, this.props.name, this.props.onFocusOut, this.state.focused]);
                        null === (_this$_effects$6 = this._effects[6]) || void 0 === _this$_effects$6 ? void 0 : _this$_effects$6.update([this.props.activeStateUnit, this.props.disabled, this.props.hoverStateEnabled, this.props.onHoverStart, this.state.active]);
                        null === (_this$_effects$7 = this._effects[7]) || void 0 === _this$_effects$7 ? void 0 : _this$_effects$7.update([this.props.activeStateUnit, this.props.hoverStateEnabled, this.props.onHoverEnd, this.state.hovered]);
                        null === (_this$_effects$8 = this._effects[8]) || void 0 === _this$_effects$8 ? void 0 : _this$_effects$8.update([this.props.focusStateEnabled, this.props.onKeyDown]);
                        null === (_this$_effects$9 = this._effects[9]) || void 0 === _this$_effects$9 ? void 0 : _this$_effects$9.update([this.props.name, this.props.onDimensionChanged]);
                        null === (_this$_effects$10 = this._effects[10]) || void 0 === _this$_effects$10 ? void 0 : _this$_effects$10.update([this.props.onDimensionChanged]);
                        null === (_this$_effects$11 = this._effects[11]) || void 0 === _this$_effects$11 ? void 0 : _this$_effects$11.update([this.props.name, this.props.onVisibilityChange]);
                        null === (_this$_effects$12 = this._effects[12]) || void 0 === _this$_effects$12 ? void 0 : _this$_effects$12.update([this.props.height, this.props.width]);
                        null === (_this$_effects$13 = this._effects[13]) || void 0 === _this$_effects$13 ? void 0 : _this$_effects$13.update([this.props.cssText])
                    };
                    _proto.setRootElementRef = function() {
                        const {
                            onRootElementRendered: onRootElementRendered,
                            rootElementRef: rootElementRef
                        } = this.props;
                        if (rootElementRef) {
                            rootElementRef.current = this.widgetElementRef.current
                        }
                        null === onRootElementRendered || void 0 === onRootElementRendered ? void 0 : onRootElementRendered(this.widgetElementRef.current)
                    };
                    _proto.activeEffect = function() {
                        const {
                            _feedbackShowTimeout: _feedbackShowTimeout,
                            activeStateEnabled: activeStateEnabled,
                            activeStateUnit: activeStateUnit,
                            disabled: disabled,
                            onActive: onActive
                        } = this.props;
                        const selector = activeStateUnit;
                        if (activeStateEnabled) {
                            if (!disabled) {
                                return (0, _subscribe_to_event.subscribeToDxActiveEvent)(this.widgetElementRef.current, event => {
                                    this.setState(__state_argument => ({
                                        active: true
                                    }));
                                    null === onActive || void 0 === onActive ? void 0 : onActive(event)
                                }, {
                                    timeout: _feedbackShowTimeout,
                                    selector: selector
                                }, "UIFeedback")
                            }
                        }
                        return
                    };
                    _proto.inactiveEffect = function() {
                        const {
                            _feedbackHideTimeout: _feedbackHideTimeout,
                            activeStateEnabled: activeStateEnabled,
                            activeStateUnit: activeStateUnit,
                            onInactive: onInactive
                        } = this.props;
                        const selector = activeStateUnit;
                        if (activeStateEnabled) {
                            return (0, _subscribe_to_event.subscribeToDxInactiveEvent)(this.widgetElementRef.current, event => {
                                if (this.state.active) {
                                    this.setState(__state_argument => ({
                                        active: false
                                    }));
                                    null === onInactive || void 0 === onInactive ? void 0 : onInactive(event)
                                }
                            }, {
                                timeout: _feedbackHideTimeout,
                                selector: selector
                            }, "UIFeedback")
                        }
                        return
                    };
                    _proto.clickEffect = function() {
                        const {
                            disabled: disabled,
                            name: name,
                            onClick: onClick
                        } = this.props;
                        const namespace = name;
                        if (onClick && !disabled) {
                            _short.dxClick.on(this.widgetElementRef.current, onClick, {
                                namespace: namespace
                            });
                            return () => _short.dxClick.off(this.widgetElementRef.current, {
                                namespace: namespace
                            })
                        }
                        return
                    };
                    _proto.focusInEffect = function() {
                        const {
                            disabled: disabled,
                            focusStateEnabled: focusStateEnabled,
                            name: name,
                            onFocusIn: onFocusIn
                        } = this.props;
                        const namespace = "".concat(name, "Focus");
                        if (focusStateEnabled) {
                            if (!disabled) {
                                return (0, _subscribe_to_event.subscribeToDxFocusInEvent)(this.widgetElementRef.current, event => {
                                    if (!event.isDefaultPrevented()) {
                                        this.setState(__state_argument => ({
                                            focused: true
                                        }));
                                        null === onFocusIn || void 0 === onFocusIn ? void 0 : onFocusIn(event)
                                    }
                                }, null, namespace)
                            }
                        }
                        return
                    };
                    _proto.focusOutEffect = function() {
                        const {
                            focusStateEnabled: focusStateEnabled,
                            name: name,
                            onFocusOut: onFocusOut
                        } = this.props;
                        const namespace = "".concat(name, "Focus");
                        if (focusStateEnabled) {
                            return (0, _subscribe_to_event.subscribeToDxFocusOutEvent)(this.widgetElementRef.current, event => {
                                if (!event.isDefaultPrevented() && this.state.focused) {
                                    this.setState(__state_argument => ({
                                        focused: false
                                    }));
                                    null === onFocusOut || void 0 === onFocusOut ? void 0 : onFocusOut(event)
                                }
                            }, null, namespace)
                        }
                        return
                    };
                    _proto.hoverStartEffect = function() {
                        const {
                            activeStateUnit: activeStateUnit,
                            disabled: disabled,
                            hoverStateEnabled: hoverStateEnabled,
                            onHoverStart: onHoverStart
                        } = this.props;
                        const selector = activeStateUnit;
                        if (hoverStateEnabled) {
                            if (!disabled) {
                                return (0, _subscribe_to_event.subscribeToDxHoverStartEvent)(this.widgetElementRef.current, event => {
                                    !this.state.active && this.setState(__state_argument => ({
                                        hovered: true
                                    }));
                                    null === onHoverStart || void 0 === onHoverStart ? void 0 : onHoverStart(event)
                                }, {
                                    selector: selector
                                }, "UIFeedback")
                            }
                        }
                        return
                    };
                    _proto.hoverEndEffect = function() {
                        const {
                            activeStateUnit: activeStateUnit,
                            hoverStateEnabled: hoverStateEnabled,
                            onHoverEnd: onHoverEnd
                        } = this.props;
                        const selector = activeStateUnit;
                        if (hoverStateEnabled) {
                            return (0, _subscribe_to_event.subscribeToDxHoverEndEvent)(this.widgetElementRef.current, event => {
                                if (this.state.hovered) {
                                    this.setState(__state_argument => ({
                                        hovered: false
                                    }));
                                    null === onHoverEnd || void 0 === onHoverEnd ? void 0 : onHoverEnd(event)
                                }
                            }, {
                                selector: selector
                            }, "UIFeedback")
                        }
                        return
                    };
                    _proto.keyboardEffect = function() {
                        const {
                            focusStateEnabled: focusStateEnabled,
                            onKeyDown: onKeyDown
                        } = this.props;
                        if (focusStateEnabled && onKeyDown) {
                            const id = _short.keyboard.on(this.widgetElementRef.current, this.widgetElementRef.current, e => onKeyDown(e));
                            return () => _short.keyboard.off(id)
                        }
                        return
                    };
                    _proto.resizeEffect = function() {
                        const namespace = "".concat(this.props.name, "VisibilityChange");
                        const {
                            onDimensionChanged: onDimensionChanged
                        } = this.props;
                        if (onDimensionChanged) {
                            _short.resize.on(this.widgetElementRef.current, onDimensionChanged, {
                                namespace: namespace
                            });
                            return () => _short.resize.off(this.widgetElementRef.current, {
                                namespace: namespace
                            })
                        }
                        return
                    };
                    _proto.windowResizeEffect = function() {
                        const {
                            onDimensionChanged: onDimensionChanged
                        } = this.props;
                        if (onDimensionChanged) {
                            _resize_callbacks.default.add(onDimensionChanged);
                            return () => {
                                _resize_callbacks.default.remove(onDimensionChanged)
                            }
                        }
                        return
                    };
                    _proto.visibilityEffect = function() {
                        const {
                            name: name,
                            onVisibilityChange: onVisibilityChange
                        } = this.props;
                        const namespace = "".concat(name, "VisibilityChange");
                        if (onVisibilityChange) {
                            _short.visibility.on(this.widgetElementRef.current, () => onVisibilityChange(true), () => onVisibilityChange(false), {
                                namespace: namespace
                            });
                            return () => _short.visibility.off(this.widgetElementRef.current, {
                                namespace: namespace
                            })
                        }
                        return
                    };
                    _proto.checkDeprecation = function() {
                        const {
                            height: height,
                            width: width
                        } = this.props;
                        if ((0, _type.isFunction)(width)) {
                            _errors.default.log("W0017", "width")
                        }
                        if ((0, _type.isFunction)(height)) {
                            _errors.default.log("W0017", "height")
                        }
                    };
                    _proto.applyCssTextEffect = function() {
                        const {
                            cssText: cssText
                        } = this.props;
                        if ("" !== cssText) {
                            this.widgetElementRef.current.style.cssText = cssText
                        }
                    };
                    _proto.focus = function() {
                        _short.focus.trigger(this.widgetElementRef.current)
                    };
                    _proto.blur = function() {
                        const activeElement = _dom_adapter.default.getActiveElement(this.widgetElementRef.current);
                        if (this.widgetElementRef.current === activeElement) {
                            activeElement.blur()
                        }
                    };
                    _proto.activate = function() {
                        this.setState(__state_argument => ({
                            active: true
                        }))
                    };
                    _proto.deactivate = function() {
                        this.setState(__state_argument => ({
                            active: false
                        }))
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props),
                            active: this.state.active,
                            focused: this.state.focused,
                            hovered: this.state.hovered,
                            widgetElementRef: this.widgetElementRef,
                            config: this.config,
                            shouldRenderConfigProvider: this.shouldRenderConfigProvider,
                            rtlEnabled: this.rtlEnabled,
                            attributes: this.attributes,
                            styles: this.styles,
                            cssClasses: this.cssClasses,
                            tabIndex: this.tabIndex,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(Widget, [{
                        key: "config",
                        get: function() {
                            if (this.context[_config_context.ConfigContext.id]) {
                                return this.context[_config_context.ConfigContext.id]
                            }
                            return _config_context.ConfigContext.defaultValue
                        }
                    }, {
                        key: "shouldRenderConfigProvider",
                        get: function() {
                            const {
                                rtlEnabled: rtlEnabled
                            } = this.props;
                            return (0, _resolve_rtl.resolveRtlEnabledDefinition)(rtlEnabled, this.config)
                        }
                    }, {
                        key: "rtlEnabled",
                        get: function() {
                            const {
                                rtlEnabled: rtlEnabled
                            } = this.props;
                            return (0, _resolve_rtl.resolveRtlEnabled)(rtlEnabled, this.config)
                        }
                    }, {
                        key: "attributes",
                        get: function() {
                            const {
                                aria: aria,
                                disabled: disabled,
                                focusStateEnabled: focusStateEnabled,
                                visible: visible
                            } = this.props;
                            const accessKey = focusStateEnabled && !disabled && this.props.accessKey;
                            return _extends({}, (0, _extend.extend)({}, accessKey && {
                                accessKey: accessKey
                            }), (args = _extends({}, aria, {
                                disabled: disabled,
                                hidden: !visible
                            }), Object.keys(args).reduce((r, key) => {
                                if (args[key]) {
                                    return _extends({}, r, {
                                        ["role" === key || "id" === key ? key : "aria-".concat(key)]: String(args[key])
                                    })
                                }
                                return r
                            }, {})), (0, _extend.extend)({}, this.restAttributes));
                            var args
                        }
                    }, {
                        key: "styles",
                        get: function() {
                            const {
                                height: height,
                                width: width
                            } = this.props;
                            const style = this.restAttributes.style || {};
                            const computedWidth = (0, _style.normalizeStyleProp)("width", (0, _type.isFunction)(width) ? width() : width);
                            const computedHeight = (0, _style.normalizeStyleProp)("height", (0, _type.isFunction)(height) ? height() : height);
                            return _extends({}, style, {
                                height: null !== computedHeight && void 0 !== computedHeight ? computedHeight : style.height,
                                width: null !== computedWidth && void 0 !== computedWidth ? computedWidth : style.width
                            })
                        }
                    }, {
                        key: "cssClasses",
                        get: function() {
                            const {
                                activeStateEnabled: activeStateEnabled,
                                addWidgetClass: addWidgetClass,
                                className: className,
                                classes: classes,
                                disabled: disabled,
                                focusStateEnabled: focusStateEnabled,
                                hoverStateEnabled: hoverStateEnabled,
                                onVisibilityChange: onVisibilityChange,
                                visible: visible
                            } = this.props;
                            const isFocusable = !!focusStateEnabled && !disabled;
                            const isHoverable = !!hoverStateEnabled && !disabled;
                            const canBeActive = !!activeStateEnabled && !disabled;
                            const classesMap = {
                                "dx-widget": !!addWidgetClass,
                                [String(classes)]: !!classes,
                                [String(className)]: !!className,
                                "dx-state-disabled": !!disabled,
                                "dx-state-invisible": !visible,
                                "dx-state-focused": !!this.state.focused && isFocusable,
                                "dx-state-active": !!this.state.active && canBeActive,
                                "dx-state-hover": !!this.state.hovered && isHoverable && !this.state.active,
                                "dx-rtl": !!this.rtlEnabled,
                                "dx-visibility-change-handler": !!onVisibilityChange
                            };
                            return (0, _combine_classes.combineClasses)(classesMap)
                        }
                    }, {
                        key: "tabIndex",
                        get: function() {
                            const {
                                disabled: disabled,
                                focusStateEnabled: focusStateEnabled,
                                tabIndex: tabIndex
                            } = this.props;
                            const isFocusable = focusStateEnabled && !disabled;
                            return isFocusable ? tabIndex : void 0
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return Widget
                }(_inferno2.InfernoWrapperComponent);
                exports.Widget = Widget;
                Widget.defaultProps = WidgetProps
            },
        8448:
            /*!********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/editors/check_box/check_box.j.js ***!
              \********************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../../core/component_registrator */ 99393));
                var _check_box = _interopRequireDefault(__webpack_require__( /*! ../../../component_wrapper/editors/check_box */ 74046));
                var _check_box2 = __webpack_require__( /*! ./check_box */ 85560);

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

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let CheckBox = function(_BaseComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(CheckBox, _BaseComponent);

                    function CheckBox() {
                        return _BaseComponent.apply(this, arguments) || this
                    }
                    var _proto = CheckBox.prototype;
                    _proto.getProps = function() {
                        const props = _BaseComponent.prototype.getProps.call(this);
                        props.onKeyDown = this._wrapKeyDownHandler(props.onKeyDown);
                        return props
                    };
                    _proto.focus = function() {
                        var _this$viewRef;
                        return null === (_this$viewRef = this.viewRef) || void 0 === _this$viewRef ? void 0 : _this$viewRef.focus(...arguments)
                    };
                    _proto.blur = function() {
                        var _this$viewRef2;
                        return null === (_this$viewRef2 = this.viewRef) || void 0 === _this$viewRef2 ? void 0 : _this$viewRef2.blur(...arguments)
                    };
                    _proto._getActionConfigs = function() {
                        return {
                            onFocusIn: {},
                            onClick: {}
                        }
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(CheckBox, [{
                        key: "_propsInfo",
                        get: function() {
                            return {
                                twoWay: [
                                    ["value", "defaultValue", "valueChange"]
                                ],
                                allowNull: ["defaultValue", "validationError", "validationErrors", "value"],
                                elements: [],
                                templates: [],
                                props: ["text", "iconSize", "enableThreeStateBehavior", "activeStateEnabled", "hoverStateEnabled", "focusStateEnabled", "saveValueChangeEvent", "defaultValue", "valueChange", "readOnly", "name", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "isValid", "isDirty", "inputAttr", "onFocusIn", "className", "accessKey", "disabled", "height", "hint", "onClick", "onKeyDown", "rtlEnabled", "tabIndex", "visible", "width", "aria", "value"]
                            }
                        }
                    }, {
                        key: "_viewComponent",
                        get: function() {
                            return _check_box2.CheckBox
                        }
                    }]);
                    return CheckBox
                }(_check_box.default);
                exports.default = CheckBox;
                (0, _component_registrator.default)("dxCheckBox", CheckBox);
                CheckBox.defaultOptions = _check_box2.defaultOptions;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        85560:
            /*!******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/editors/check_box/check_box.js ***!
              \******************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.CheckBoxPropsType = exports.CheckBoxProps = exports.CheckBox = void 0;
                exports.defaultOptions = function(rule) {
                    __defaultOptionRules.push(rule);
                    CheckBox.defaultProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(CheckBox.defaultProps), Object.getOwnPropertyDescriptors(function(defaultProps) {
                        const twoWayProps = ["value"];
                        return Object.keys(defaultProps).reduce((props, propName) => {
                            const propValue = defaultProps[propName];
                            const defaultPropName = twoWayProps.some(p => p === propName) ? "default" + propName.charAt(0).toUpperCase() + propName.slice(1) : propName;
                            props[defaultPropName] = propValue;
                            return props
                        }, {})
                    }((0, _utils.convertRulesToOptions)(__defaultOptionRules)))))
                };
                exports.viewFunction = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _devices = (obj = __webpack_require__( /*! ../../../../core/devices */ 20530), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _editor = __webpack_require__( /*! ../common/editor */ 77848);
                var _combine_classes = __webpack_require__( /*! ../../../utils/combine_classes */ 86237);
                var _check_box_icon = __webpack_require__( /*! ./check_box_icon */ 13241);
                var _widget = __webpack_require__( /*! ../../common/widget */ 73687);
                var _utils = __webpack_require__( /*! ../../../../core/options/utils */ 45434);
                const _excluded = ["accessKey", "activeStateEnabled", "aria", "className", "defaultValue", "disabled", "enableThreeStateBehavior", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "iconSize", "inputAttr", "isDirty", "isValid", "name", "onClick", "onFocusIn", "onKeyDown", "readOnly", "rtlEnabled", "saveValueChangeEvent", "tabIndex", "text", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChange", "visible", "width"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _assertThisInitialized(self) {
                    if (void 0 === self) {
                        throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                    }
                    return self
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = viewModel => {
                    const {
                        aria: aria,
                        cssClasses: classes,
                        editorRef: editorRef,
                        keyDown: onKeyDown,
                        onWidgetClick: onClick,
                        props: {
                            accessKey: accessKey,
                            activeStateEnabled: activeStateEnabled,
                            className: className,
                            disabled: disabled,
                            focusStateEnabled: focusStateEnabled,
                            height: height,
                            hint: hint,
                            hoverStateEnabled: hoverStateEnabled,
                            iconSize: iconSize,
                            isValid: isValid,
                            name: name,
                            onFocusIn: onFocusIn,
                            readOnly: readOnly,
                            rtlEnabled: rtlEnabled,
                            tabIndex: tabIndex,
                            text: text,
                            validationError: validationError,
                            validationErrors: validationErrors,
                            validationMessageMode: validationMessageMode,
                            validationMessagePosition: validationMessagePosition,
                            validationStatus: validationStatus,
                            value: value,
                            visible: visible,
                            width: width
                        },
                        restAttributes: restAttributes
                    } = viewModel;
                    return (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _editor.Editor, _extends({
                        aria: aria,
                        classes: classes,
                        onClick: onClick,
                        onKeyDown: onKeyDown,
                        accessKey: accessKey,
                        activeStateEnabled: activeStateEnabled,
                        focusStateEnabled: focusStateEnabled,
                        hoverStateEnabled: hoverStateEnabled,
                        className: className,
                        disabled: disabled,
                        readOnly: readOnly,
                        hint: hint,
                        height: height,
                        width: width,
                        rtlEnabled: rtlEnabled,
                        tabIndex: tabIndex,
                        visible: visible,
                        validationError: validationError,
                        validationErrors: validationErrors,
                        validationMessageMode: validationMessageMode,
                        validationMessagePosition: validationMessagePosition,
                        validationStatus: validationStatus,
                        isValid: isValid,
                        onFocusIn: onFocusIn
                    }, restAttributes, {
                        children: (0, _inferno.createFragment)([(0, _inferno.normalizeProps)((0, _inferno.createVNode)(64, "input", null, null, 1, _extends({
                            type: "hidden",
                            value: "".concat(value)
                        }, name && {
                            name: name
                        }))), (0, _inferno.createVNode)(1, "div", "dx-checkbox-container", [(0, _inferno.createComponentVNode)(2, _check_box_icon.CheckBoxIcon, {
                            size: iconSize,
                            isChecked: true === value
                        }), text && (0, _inferno.createVNode)(1, "span", "dx-checkbox-text", text, 0)], 0)], 4)
                    }), null, editorRef))
                };
                exports.viewFunction = viewFunction;
                const CheckBoxProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(_editor.EditorProps), Object.getOwnPropertyDescriptors(Object.defineProperties({
                    text: "",
                    enableThreeStateBehavior: false,
                    activeStateEnabled: true,
                    hoverStateEnabled: true,
                    defaultValue: false,
                    valueChange: () => {}
                }, {
                    focusStateEnabled: {
                        get: function() {
                            return "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator()
                        },
                        configurable: true,
                        enumerable: true
                    }
                }))));
                exports.CheckBoxProps = CheckBoxProps;
                const CheckBoxPropsType = Object.defineProperties({}, {
                    text: {
                        get: function() {
                            return CheckBoxProps.text
                        },
                        configurable: true,
                        enumerable: true
                    },
                    enableThreeStateBehavior: {
                        get: function() {
                            return CheckBoxProps.enableThreeStateBehavior
                        },
                        configurable: true,
                        enumerable: true
                    },
                    activeStateEnabled: {
                        get: function() {
                            return CheckBoxProps.activeStateEnabled
                        },
                        configurable: true,
                        enumerable: true
                    },
                    hoverStateEnabled: {
                        get: function() {
                            return CheckBoxProps.hoverStateEnabled
                        },
                        configurable: true,
                        enumerable: true
                    },
                    focusStateEnabled: {
                        get: function() {
                            return CheckBoxProps.focusStateEnabled
                        },
                        configurable: true,
                        enumerable: true
                    },
                    defaultValue: {
                        get: function() {
                            return CheckBoxProps.defaultValue
                        },
                        configurable: true,
                        enumerable: true
                    },
                    valueChange: {
                        get: function() {
                            return CheckBoxProps.valueChange
                        },
                        configurable: true,
                        enumerable: true
                    },
                    readOnly: {
                        get: function() {
                            return CheckBoxProps.readOnly
                        },
                        configurable: true,
                        enumerable: true
                    },
                    name: {
                        get: function() {
                            return CheckBoxProps.name
                        },
                        configurable: true,
                        enumerable: true
                    },
                    validationError: {
                        get: function() {
                            return CheckBoxProps.validationError
                        },
                        configurable: true,
                        enumerable: true
                    },
                    validationErrors: {
                        get: function() {
                            return CheckBoxProps.validationErrors
                        },
                        configurable: true,
                        enumerable: true
                    },
                    validationMessageMode: {
                        get: function() {
                            return CheckBoxProps.validationMessageMode
                        },
                        configurable: true,
                        enumerable: true
                    },
                    validationMessagePosition: {
                        get: function() {
                            return CheckBoxProps.validationMessagePosition
                        },
                        configurable: true,
                        enumerable: true
                    },
                    validationStatus: {
                        get: function() {
                            return CheckBoxProps.validationStatus
                        },
                        configurable: true,
                        enumerable: true
                    },
                    isValid: {
                        get: function() {
                            return CheckBoxProps.isValid
                        },
                        configurable: true,
                        enumerable: true
                    },
                    isDirty: {
                        get: function() {
                            return CheckBoxProps.isDirty
                        },
                        configurable: true,
                        enumerable: true
                    },
                    inputAttr: {
                        get: function() {
                            return CheckBoxProps.inputAttr
                        },
                        configurable: true,
                        enumerable: true
                    },
                    className: {
                        get: function() {
                            return CheckBoxProps.className
                        },
                        configurable: true,
                        enumerable: true
                    },
                    disabled: {
                        get: function() {
                            return CheckBoxProps.disabled
                        },
                        configurable: true,
                        enumerable: true
                    },
                    tabIndex: {
                        get: function() {
                            return CheckBoxProps.tabIndex
                        },
                        configurable: true,
                        enumerable: true
                    },
                    visible: {
                        get: function() {
                            return CheckBoxProps.visible
                        },
                        configurable: true,
                        enumerable: true
                    },
                    aria: {
                        get: function() {
                            return _widget.WidgetProps.aria
                        },
                        configurable: true,
                        enumerable: true
                    }
                });
                exports.CheckBoxPropsType = CheckBoxPropsType;
                let CheckBox = function(_InfernoWrapperCompon) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(CheckBox, _InfernoWrapperCompon);

                    function CheckBox(props) {
                        var _this;
                        _this = _InfernoWrapperCompon.call(this, props) || this;
                        _this.editorRef = (0, _inferno.createRef)();
                        _this.state = {
                            value: void 0 !== _this.props.value ? _this.props.value : _this.props.defaultValue
                        };
                        _this.focus = _this.focus.bind(_assertThisInitialized(_this));
                        _this.blur = _this.blur.bind(_assertThisInitialized(_this));
                        _this.onWidgetClick = _this.onWidgetClick.bind(_assertThisInitialized(_this));
                        _this.keyDown = _this.keyDown.bind(_assertThisInitialized(_this));
                        return _this
                    }
                    var _proto = CheckBox.prototype;
                    _proto.createEffects = function() {
                        return [(0, _inferno2.createReRenderEffect)()]
                    };
                    _proto.onWidgetClick = function(event) {
                        const {
                            enableThreeStateBehavior: enableThreeStateBehavior,
                            readOnly: readOnly,
                            saveValueChangeEvent: saveValueChangeEvent
                        } = this.props;
                        if (!readOnly) {
                            null === saveValueChangeEvent || void 0 === saveValueChangeEvent ? void 0 : saveValueChangeEvent(event);
                            if (enableThreeStateBehavior) {
                                let __newValue;
                                this.setState(__state_argument => {
                                    __newValue = null === (void 0 !== this.props.value ? this.props.value : __state_argument.value) || (!(void 0 !== this.props.value ? this.props.value : __state_argument.value) ? null : false);
                                    return {
                                        value: __newValue
                                    }
                                });
                                this.props.valueChange(__newValue)
                            } else {
                                let __newValue;
                                this.setState(__state_argument => {
                                    var _ref;
                                    __newValue = !(null !== (_ref = void 0 !== this.props.value ? this.props.value : __state_argument.value) && void 0 !== _ref ? _ref : false);
                                    return {
                                        value: __newValue
                                    }
                                });
                                this.props.valueChange(__newValue)
                            }
                        }
                    };
                    _proto.keyDown = function(e) {
                        const {
                            onKeyDown: onKeyDown
                        } = this.props;
                        const {
                            keyName: keyName,
                            originalEvent: originalEvent,
                            which: which
                        } = e;
                        const result = null === onKeyDown || void 0 === onKeyDown ? void 0 : onKeyDown(e);
                        if (null !== result && void 0 !== result && result.cancel) {
                            return result
                        }
                        if ("space" === keyName || "space" === which) {
                            originalEvent.preventDefault();
                            this.onWidgetClick(originalEvent)
                        }
                        return
                    };
                    _proto.focus = function() {
                        this.editorRef.current.focus()
                    };
                    _proto.blur = function() {
                        this.editorRef.current.blur()
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                value: void 0 !== this.props.value ? this.props.value : this.state.value
                            }),
                            editorRef: this.editorRef,
                            onWidgetClick: this.onWidgetClick,
                            keyDown: this.keyDown,
                            cssClasses: this.cssClasses,
                            aria: this.aria,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(CheckBox, [{
                        key: "cssClasses",
                        get: function() {
                            return (model => {
                                const {
                                    text: text,
                                    value: value
                                } = model;
                                const checked = value;
                                const indeterminate = null === checked;
                                const classesMap = {
                                    "dx-checkbox": true,
                                    "dx-checkbox-checked": true === checked,
                                    "dx-checkbox-has-text": !!text,
                                    "dx-checkbox-indeterminate": indeterminate
                                };
                                return (0, _combine_classes.combineClasses)(classesMap)
                            })(_extends({}, this.props, {
                                value: void 0 !== this.props.value ? this.props.value : this.state.value
                            }))
                        }
                    }, {
                        key: "aria",
                        get: function() {
                            const checked = true === (void 0 !== this.props.value ? this.props.value : this.state.value);
                            const indeterminate = null === (void 0 !== this.props.value ? this.props.value : this.state.value);
                            const result = {
                                role: "checkbox",
                                checked: indeterminate ? "mixed" : "".concat(checked)
                            };
                            return _extends({}, result, this.props.aria)
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props$value = _extends({}, this.props, {
                                    value: void 0 !== this.props.value ? this.props.value : this.state.value
                                }),
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props$value, _excluded);
                            return restProps
                        }
                    }]);
                    return CheckBox
                }(_inferno2.InfernoWrapperComponent);
                exports.CheckBox = CheckBox;
                CheckBox.defaultProps = CheckBoxPropsType;
                const __defaultOptionRules = []
            },
        13241:
            /*!***********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/editors/check_box/check_box_icon.js ***!
              \***********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.CheckBoxIconProps = exports.CheckBoxIcon = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _get_computed_style = (obj = __webpack_require__( /*! ../../../utils/get_computed_style */ 89357), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _window = __webpack_require__( /*! ../../../../core/utils/window */ 58201);
                var _style = __webpack_require__( /*! ../../../../core/utils/style */ 80968);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _utils = __webpack_require__( /*! ./utils */ 71591);
                const _excluded = ["isChecked", "size"];

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _assertThisInitialized(self) {
                    if (void 0 === self) {
                        throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                    }
                    return self
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const viewFunction = viewModel => {
                    const {
                        cssStyles: cssStyles,
                        elementRef: elementRef
                    } = viewModel;
                    return (0, _inferno.createVNode)(1, "span", "dx-checkbox-icon", null, 1, {
                        style: (0, _inferno2.normalizeStyles)(cssStyles)
                    }, null, elementRef)
                };
                exports.viewFunction = viewFunction;
                const CheckBoxIconProps = {
                    isChecked: false
                };
                exports.CheckBoxIconProps = CheckBoxIconProps;
                let CheckBoxIcon = function(_InfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(CheckBoxIcon, _InfernoComponent);

                    function CheckBoxIcon(props) {
                        var _this;
                        _this = _InfernoComponent.call(this, props) || this;
                        _this.state = {};
                        _this.elementRef = (0, _inferno.createRef)();
                        _this.__getterCache = {};
                        _this.updateFontSize = _this.updateFontSize.bind(_assertThisInitialized(_this));
                        _this.setIconFontSize = _this.setIconFontSize.bind(_assertThisInitialized(_this));
                        _this.getIconSize = _this.getIconSize.bind(_assertThisInitialized(_this));
                        _this.getComputedIconSize = _this.getComputedIconSize.bind(_assertThisInitialized(_this));
                        return _this
                    }
                    var _proto = CheckBoxIcon.prototype;
                    _proto.createEffects = function() {
                        return [new _inferno2.InfernoEffect(this.updateFontSize, [this.props.isChecked, this.props.size])]
                    };
                    _proto.updateEffects = function() {
                        var _this$_effects$;
                        null === (_this$_effects$ = this._effects[0]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.props.isChecked, this.props.size])
                    };
                    _proto.updateFontSize = function() {
                        const {
                            isChecked: isChecked,
                            size: size
                        } = this.props;
                        if ((0, _window.hasWindow)() && size) {
                            const newIconSize = this.getIconSize(size);
                            const newFontSize = (0, _utils.getFontSizeByIconSize)(newIconSize, isChecked);
                            this.setIconFontSize(newFontSize)
                        }
                    };
                    _proto.setIconFontSize = function(fontSize) {
                        const element = this.elementRef.current;
                        element.style.fontSize = "".concat(fontSize, "px")
                    };
                    _proto.getIconSize = function(size) {
                        if ((0, _type.isNumeric)(size)) {
                            return size
                        }
                        if (size.endsWith("px")) {
                            return parseInt(size, 10)
                        }
                        return this.getComputedIconSize()
                    };
                    _proto.getComputedIconSize = function() {
                        const element = this.elementRef.current;
                        const iconComputedStyle = (0, _get_computed_style.default)(element);
                        const computedIconSize = parseInt(null === iconComputedStyle || void 0 === iconComputedStyle ? void 0 : iconComputedStyle.width, 10);
                        return computedIconSize
                    };
                    _proto.componentWillUpdate = function(nextProps, nextState, context) {
                        _InfernoComponent.prototype.componentWillUpdate.call(this);
                        if (this.props.size !== nextProps.size) {
                            this.__getterCache.cssStyles = void 0
                        }
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props),
                            elementRef: this.elementRef,
                            setIconFontSize: this.setIconFontSize,
                            getIconSize: this.getIconSize,
                            getComputedIconSize: this.getComputedIconSize,
                            cssStyles: this.cssStyles,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(CheckBoxIcon, [{
                        key: "cssStyles",
                        get: function() {
                            if (void 0 !== this.__getterCache.cssStyles) {
                                return this.__getterCache.cssStyles
                            }
                            return this.__getterCache.cssStyles = (() => {
                                const {
                                    size: size
                                } = this.props;
                                const width = (0, _style.normalizeStyleProp)("width", size);
                                const height = (0, _style.normalizeStyleProp)("height", size);
                                return {
                                    height: height,
                                    width: width
                                }
                            })()
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return CheckBoxIcon
                }(_inferno2.InfernoComponent);
                exports.CheckBoxIcon = CheckBoxIcon;
                CheckBoxIcon.defaultProps = CheckBoxIconProps
            },
        71591:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/editors/check_box/utils.js ***!
              \**************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getDefaultFontSize = getDefaultFontSize;
                exports.getDefaultIconSize = getDefaultIconSize;
                exports.getFontSizeByIconSize = function(iconSize, isChecked) {
                    const defaultFontSize = getDefaultFontSize(isChecked);
                    const defaultIconSize = getDefaultIconSize();
                    const fontToIconSizeRatio = defaultFontSize / defaultIconSize;
                    return Math.ceil(fontToIconSizeRatio * iconSize)
                };
                var _themes = __webpack_require__( /*! ../../../../ui/themes */ 75811);
                const defaultIconSizes = [
                    [22, 16],
                    [18, 16]
                ];
                const defaultFontSizes = [
                    [
                        [12, 8],
                        [20, 18]
                    ],
                    [
                        [16, 10],
                        [16, 14]
                    ]
                ];

                function getThemeType() {
                    const theme = (0, _themes.current)();
                    return {
                        isMaterialTheme: (0, _themes.isMaterial)(theme),
                        isCompactTheme: (0, _themes.isCompact)(theme)
                    }
                }

                function getDefaultIconSize() {
                    const {
                        isCompactTheme: isCompactTheme,
                        isMaterialTheme: isMaterialTheme
                    } = getThemeType();
                    return defaultIconSizes[+isMaterialTheme][+isCompactTheme]
                }

                function getDefaultFontSize(isChecked) {
                    const {
                        isCompactTheme: isCompactTheme,
                        isMaterialTheme: isMaterialTheme
                    } = getThemeType();
                    return defaultFontSizes[+isChecked][+isMaterialTheme][+isCompactTheme]
                }
            },
        77848:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/editors/common/editor.js ***!
              \************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.EditorPropsType = exports.EditorProps = exports.Editor = void 0;
                exports.defaultOptions = function(rule) {
                    __defaultOptionRules.push(rule);
                    Editor.defaultProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(Editor.defaultProps), Object.getOwnPropertyDescriptors(function(defaultProps) {
                        const twoWayProps = ["value"];
                        return Object.keys(defaultProps).reduce((props, propName) => {
                            const propValue = defaultProps[propName];
                            const defaultPropName = twoWayProps.some(p => p === propName) ? "default" + propName.charAt(0).toUpperCase() + propName.slice(1) : propName;
                            props[defaultPropName] = propValue;
                            return props
                        }, {})
                    }((0, _utils.convertRulesToOptions)(__defaultOptionRules)))))
                };
                exports.viewFunction = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _guid = (obj = __webpack_require__( /*! ../../../../core/guid */ 73176), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _widget = __webpack_require__( /*! ../../common/widget */ 73687);
                var _base_props = __webpack_require__( /*! ../../common/base_props */ 31651);
                var _combine_classes = __webpack_require__( /*! ../../../utils/combine_classes */ 86237);
                var _validation_message = __webpack_require__( /*! ../../overlays/validation_message */ 85500);
                var _utils = __webpack_require__( /*! ../../../../core/options/utils */ 45434);
                const _excluded = ["accessKey", "activeStateEnabled", "aria", "children", "className", "classes", "defaultValue", "disabled", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isDirty", "isValid", "name", "onClick", "onFocusIn", "onKeyDown", "readOnly", "rtlEnabled", "tabIndex", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChange", "visible", "width"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _assertThisInitialized(self) {
                    if (void 0 === self) {
                        throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                    }
                    return self
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = viewModel => {
                    const {
                        aria: aria,
                        cssClasses: classes,
                        isValidationMessageVisible: isValidationMessageVisible,
                        onFocusIn: onFocusIn,
                        props: {
                            accessKey: accessKey,
                            activeStateEnabled: activeStateEnabled,
                            children: children,
                            className: className,
                            disabled: disabled,
                            focusStateEnabled: focusStateEnabled,
                            height: height,
                            hint: hint,
                            hoverStateEnabled: hoverStateEnabled,
                            onClick: onClick,
                            onKeyDown: onKeyDown,
                            rtlEnabled: rtlEnabled,
                            tabIndex: tabIndex,
                            validationMessageMode: validationMessageMode,
                            validationMessagePosition: validationMessagePosition,
                            visible: visible,
                            width: width
                        },
                        restAttributes: restAttributes,
                        rootElementRef: rootElementRef,
                        validationErrors: validationErrors,
                        validationMessageGuid: validationMessageGuid,
                        validationMessageTarget: validationMessageTarget,
                        widgetRef: widgetRef
                    } = viewModel;
                    return (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _widget.Widget, _extends({
                        rootElementRef: rootElementRef,
                        aria: aria,
                        classes: classes,
                        activeStateEnabled: activeStateEnabled,
                        focusStateEnabled: focusStateEnabled,
                        hoverStateEnabled: hoverStateEnabled,
                        accessKey: accessKey,
                        className: className,
                        rtlEnabled: rtlEnabled,
                        hint: hint,
                        disabled: disabled,
                        height: height,
                        width: width,
                        onFocusIn: onFocusIn,
                        onClick: onClick,
                        onKeyDown: onKeyDown,
                        tabIndex: tabIndex,
                        visible: visible
                    }, restAttributes, {
                        children: (0, _inferno.createFragment)([children, isValidationMessageVisible && (0, _inferno.createComponentVNode)(2, _validation_message.ValidationMessage, {
                            validationErrors: validationErrors,
                            mode: validationMessageMode,
                            positionSide: validationMessagePosition,
                            rtlEnabled: rtlEnabled,
                            target: validationMessageTarget,
                            boundary: validationMessageTarget,
                            visualContainer: validationMessageTarget,
                            contentId: validationMessageGuid
                        })], 0)
                    }), null, widgetRef))
                };
                exports.viewFunction = viewFunction;
                const EditorProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(_base_props.BaseWidgetProps), Object.getOwnPropertyDescriptors({
                    readOnly: false,
                    name: "",
                    validationError: null,
                    validationErrors: null,
                    validationMessageMode: "auto",
                    validationMessagePosition: "bottom",
                    validationStatus: "valid",
                    isValid: true,
                    isDirty: false,
                    inputAttr: Object.freeze({}),
                    defaultValue: null,
                    valueChange: () => {}
                })));
                exports.EditorProps = EditorProps;
                const EditorPropsType = Object.defineProperties({}, {
                    readOnly: {
                        get: function() {
                            return EditorProps.readOnly
                        },
                        configurable: true,
                        enumerable: true
                    },
                    name: {
                        get: function() {
                            return EditorProps.name
                        },
                        configurable: true,
                        enumerable: true
                    },
                    validationError: {
                        get: function() {
                            return EditorProps.validationError
                        },
                        configurable: true,
                        enumerable: true
                    },
                    validationErrors: {
                        get: function() {
                            return EditorProps.validationErrors
                        },
                        configurable: true,
                        enumerable: true
                    },
                    validationMessageMode: {
                        get: function() {
                            return EditorProps.validationMessageMode
                        },
                        configurable: true,
                        enumerable: true
                    },
                    validationMessagePosition: {
                        get: function() {
                            return EditorProps.validationMessagePosition
                        },
                        configurable: true,
                        enumerable: true
                    },
                    validationStatus: {
                        get: function() {
                            return EditorProps.validationStatus
                        },
                        configurable: true,
                        enumerable: true
                    },
                    isValid: {
                        get: function() {
                            return EditorProps.isValid
                        },
                        configurable: true,
                        enumerable: true
                    },
                    isDirty: {
                        get: function() {
                            return EditorProps.isDirty
                        },
                        configurable: true,
                        enumerable: true
                    },
                    inputAttr: {
                        get: function() {
                            return EditorProps.inputAttr
                        },
                        configurable: true,
                        enumerable: true
                    },
                    defaultValue: {
                        get: function() {
                            return EditorProps.defaultValue
                        },
                        configurable: true,
                        enumerable: true
                    },
                    valueChange: {
                        get: function() {
                            return EditorProps.valueChange
                        },
                        configurable: true,
                        enumerable: true
                    },
                    className: {
                        get: function() {
                            return EditorProps.className
                        },
                        configurable: true,
                        enumerable: true
                    },
                    activeStateEnabled: {
                        get: function() {
                            return EditorProps.activeStateEnabled
                        },
                        configurable: true,
                        enumerable: true
                    },
                    disabled: {
                        get: function() {
                            return EditorProps.disabled
                        },
                        configurable: true,
                        enumerable: true
                    },
                    focusStateEnabled: {
                        get: function() {
                            return EditorProps.focusStateEnabled
                        },
                        configurable: true,
                        enumerable: true
                    },
                    hoverStateEnabled: {
                        get: function() {
                            return EditorProps.hoverStateEnabled
                        },
                        configurable: true,
                        enumerable: true
                    },
                    tabIndex: {
                        get: function() {
                            return EditorProps.tabIndex
                        },
                        configurable: true,
                        enumerable: true
                    },
                    visible: {
                        get: function() {
                            return EditorProps.visible
                        },
                        configurable: true,
                        enumerable: true
                    },
                    aria: {
                        get: function() {
                            return _widget.WidgetProps.aria
                        },
                        configurable: true,
                        enumerable: true
                    },
                    classes: {
                        get: function() {
                            return _widget.WidgetProps.classes
                        },
                        configurable: true,
                        enumerable: true
                    }
                });
                exports.EditorPropsType = EditorPropsType;
                let Editor = function(_InfernoWrapperCompon) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(Editor, _InfernoWrapperCompon);

                    function Editor(props) {
                        var _this;
                        _this = _InfernoWrapperCompon.call(this, props) || this;
                        _this.widgetRef = (0, _inferno.createRef)();
                        _this.rootElementRef = (0, _inferno.createRef)();
                        _this.__getterCache = {};
                        _this.state = {
                            validationMessageGuid: "dx-".concat(new _guid.default),
                            isValidationMessageVisible: false,
                            value: void 0 !== _this.props.value ? _this.props.value : _this.props.defaultValue
                        };
                        _this.updateValidationMessageVisibility = _this.updateValidationMessageVisibility.bind(_assertThisInitialized(_this));
                        _this.focus = _this.focus.bind(_assertThisInitialized(_this));
                        _this.blur = _this.blur.bind(_assertThisInitialized(_this));
                        _this.onFocusIn = _this.onFocusIn.bind(_assertThisInitialized(_this));
                        return _this
                    }
                    var _proto = Editor.prototype;
                    _proto.createEffects = function() {
                        return [new _inferno2.InfernoEffect(this.updateValidationMessageVisibility, [this.props.isValid, this.props.validationStatus, this.props.validationError, this.props.validationErrors]), (0, _inferno2.createReRenderEffect)()]
                    };
                    _proto.updateEffects = function() {
                        var _this$_effects$;
                        null === (_this$_effects$ = this._effects[0]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.props.isValid, this.props.validationStatus, this.props.validationError, this.props.validationErrors])
                    };
                    _proto.updateValidationMessageVisibility = function() {
                        this.setState(__state_argument => ({
                            isValidationMessageVisible: this.shouldShowValidationMessage
                        }))
                    };
                    _proto.onFocusIn = function(event) {
                        const {
                            onFocusIn: onFocusIn
                        } = this.props;
                        null === onFocusIn || void 0 === onFocusIn ? void 0 : onFocusIn(event)
                    };
                    _proto.focus = function() {
                        this.widgetRef.current.focus()
                    };
                    _proto.blur = function() {
                        this.widgetRef.current.blur()
                    };
                    _proto.componentWillUpdate = function(nextProps, nextState, context) {
                        _InfernoWrapperCompon.prototype.componentWillUpdate.call(this);
                        if (this.props.validationError !== nextProps.validationError || this.props.validationErrors !== nextProps.validationErrors) {
                            this.__getterCache.validationErrors = void 0
                        }
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                value: void 0 !== this.props.value ? this.props.value : this.state.value
                            }),
                            validationMessageGuid: this.state.validationMessageGuid,
                            isValidationMessageVisible: this.state.isValidationMessageVisible,
                            rootElementRef: this.rootElementRef,
                            widgetRef: this.widgetRef,
                            onFocusIn: this.onFocusIn,
                            cssClasses: this.cssClasses,
                            shouldShowValidationMessage: this.shouldShowValidationMessage,
                            aria: this.aria,
                            validationErrors: this.validationErrors,
                            validationMessageTarget: this.validationMessageTarget,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(Editor, [{
                        key: "cssClasses",
                        get: function() {
                            return "".concat((model => {
                                const {
                                    classes: classes,
                                    isValid: isValid,
                                    readOnly: readOnly
                                } = model;
                                const classesMap = {
                                    "dx-state-readonly": !!readOnly,
                                    "dx-invalid": !isValid,
                                    ["".concat(classes)]: !!classes
                                };
                                return (0, _combine_classes.combineClasses)(classesMap)
                            })(_extends({}, this.props, {
                                value: void 0 !== this.props.value ? this.props.value : this.state.value
                            })))
                        }
                    }, {
                        key: "shouldShowValidationMessage",
                        get: function() {
                            var _this$validationError;
                            const {
                                isValid: isValid,
                                validationStatus: validationStatus
                            } = this.props;
                            const validationErrors = null !== (_this$validationError = this.validationErrors) && void 0 !== _this$validationError ? _this$validationError : [];
                            const isEditorValid = isValid && "invalid" !== validationStatus;
                            return !isEditorValid && validationErrors.length > 0
                        }
                    }, {
                        key: "aria",
                        get: function() {
                            const {
                                isValid: isValid,
                                readOnly: readOnly
                            } = this.props;
                            const result = {
                                readonly: readOnly ? "true" : "false",
                                invalid: !isValid ? "true" : "false"
                            };
                            if (this.shouldShowValidationMessage) {
                                result.describedBy = this.state.validationMessageGuid
                            }
                            return _extends({}, result, this.props.aria)
                        }
                    }, {
                        key: "validationErrors",
                        get: function() {
                            if (void 0 !== this.__getterCache.validationErrors) {
                                return this.__getterCache.validationErrors
                            }
                            return this.__getterCache.validationErrors = (() => {
                                const {
                                    validationError: validationError,
                                    validationErrors: validationErrors
                                } = this.props;
                                let allValidationErrors = validationErrors && [...validationErrors];
                                if (!allValidationErrors && validationError) {
                                    allValidationErrors = [_extends({}, validationError)]
                                }
                                return allValidationErrors
                            })()
                        }
                    }, {
                        key: "validationMessageTarget",
                        get: function() {
                            var _this$rootElementRef;
                            return null === (_this$rootElementRef = this.rootElementRef) || void 0 === _this$rootElementRef ? void 0 : _this$rootElementRef.current
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props$value = _extends({}, this.props, {
                                    value: void 0 !== this.props.value ? this.props.value : this.state.value
                                }),
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props$value, _excluded);
                            return restProps
                        }
                    }]);
                    return Editor
                }(_inferno2.InfernoWrapperComponent);
                exports.Editor = Editor;
                Editor.defaultProps = EditorPropsType;
                const __defaultOptionRules = []
            },
        96496:
            /*!************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/editors/common/editor_label_props.js ***!
              \************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.EditorLabelProps = void 0;
                var _themes = __webpack_require__( /*! ../../../../ui/themes */ 75811);
                const EditorLabelProps = Object.defineProperties({
                    label: ""
                }, {
                    labelMode: {
                        get: function() {
                            return (0, _themes.isMaterial)((0, _themes.current)()) ? "floating" : "static"
                        },
                        configurable: true,
                        enumerable: true
                    }
                });
                exports.EditorLabelProps = EditorLabelProps
            },
        48214:
            /*!************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/editors/common/editor_state_props.js ***!
              \************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.EditorStateProps = void 0;
                var _devices = (obj = __webpack_require__( /*! ../../../../core/devices */ 20530), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const EditorStateProps = Object.defineProperties({
                    hoverStateEnabled: true,
                    activeStateEnabled: true
                }, {
                    focusStateEnabled: {
                        get: function() {
                            return "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator()
                        },
                        configurable: true,
                        enumerable: true
                    }
                });
                exports.EditorStateProps = EditorStateProps
            },
        79708:
            /*!***************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/editors/drop_down_editors/select_box.js ***!
              \***************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.SelectBoxPropsType = exports.SelectBoxProps = exports.SelectBox = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _select_box = (obj = __webpack_require__( /*! ../../../../ui/select_box */ 78665), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _dom_component_wrapper = __webpack_require__( /*! ../../common/dom_component_wrapper */ 96886);
                var _editor = __webpack_require__( /*! ../common/editor */ 77848);
                var _editor_state_props = __webpack_require__( /*! ../common/editor_state_props */ 48214);
                var _editor_label_props = __webpack_require__( /*! ../common/editor_label_props */ 96496);
                const _excluded = ["accessKey", "activeStateEnabled", "className", "dataSource", "defaultValue", "disabled", "displayExpr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isDirty", "isValid", "label", "labelMode", "name", "onClick", "onFocusIn", "onKeyDown", "placeholder", "readOnly", "rtlEnabled", "searchEnabled", "tabIndex", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChange", "valueExpr", "visible", "width"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = _ref => {
                    let {
                        componentProps: componentProps,
                        restAttributes: restAttributes
                    } = _ref;
                    return (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _dom_component_wrapper.DomComponentWrapper, _extends({
                        componentType: _select_box.default,
                        componentProps: componentProps,
                        templateNames: ["dropDownButtonTemplate", "groupTemplate", "itemTemplate"]
                    }, restAttributes)))
                };
                exports.viewFunction = viewFunction;
                const SelectBoxProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(_editor.EditorProps), Object.getOwnPropertyDescriptors({
                    placeholder: "",
                    hoverStateEnabled: true,
                    searchEnabled: false,
                    defaultValue: null,
                    isReactComponentWrapper: true
                })));
                exports.SelectBoxProps = SelectBoxProps;
                const SelectBoxPropsType = Object.defineProperties({
                    isReactComponentWrapper: true
                }, {
                    placeholder: {
                        get: function() {
                            return SelectBoxProps.placeholder
                        },
                        configurable: true,
                        enumerable: true
                    },
                    hoverStateEnabled: {
                        get: function() {
                            return _editor_state_props.EditorStateProps.hoverStateEnabled
                        },
                        configurable: true,
                        enumerable: true
                    },
                    searchEnabled: {
                        get: function() {
                            return SelectBoxProps.searchEnabled
                        },
                        configurable: true,
                        enumerable: true
                    },
                    defaultValue: {
                        get: function() {
                            return SelectBoxProps.defaultValue
                        },
                        configurable: true,
                        enumerable: true
                    },
                    readOnly: {
                        get: function() {
                            return SelectBoxProps.readOnly
                        },
                        configurable: true,
                        enumerable: true
                    },
                    name: {
                        get: function() {
                            return SelectBoxProps.name
                        },
                        configurable: true,
                        enumerable: true
                    },
                    validationError: {
                        get: function() {
                            return SelectBoxProps.validationError
                        },
                        configurable: true,
                        enumerable: true
                    },
                    validationErrors: {
                        get: function() {
                            return SelectBoxProps.validationErrors
                        },
                        configurable: true,
                        enumerable: true
                    },
                    validationMessageMode: {
                        get: function() {
                            return SelectBoxProps.validationMessageMode
                        },
                        configurable: true,
                        enumerable: true
                    },
                    validationMessagePosition: {
                        get: function() {
                            return SelectBoxProps.validationMessagePosition
                        },
                        configurable: true,
                        enumerable: true
                    },
                    validationStatus: {
                        get: function() {
                            return SelectBoxProps.validationStatus
                        },
                        configurable: true,
                        enumerable: true
                    },
                    isValid: {
                        get: function() {
                            return SelectBoxProps.isValid
                        },
                        configurable: true,
                        enumerable: true
                    },
                    isDirty: {
                        get: function() {
                            return SelectBoxProps.isDirty
                        },
                        configurable: true,
                        enumerable: true
                    },
                    inputAttr: {
                        get: function() {
                            return SelectBoxProps.inputAttr
                        },
                        configurable: true,
                        enumerable: true
                    },
                    className: {
                        get: function() {
                            return SelectBoxProps.className
                        },
                        configurable: true,
                        enumerable: true
                    },
                    activeStateEnabled: {
                        get: function() {
                            return _editor_state_props.EditorStateProps.activeStateEnabled
                        },
                        configurable: true,
                        enumerable: true
                    },
                    disabled: {
                        get: function() {
                            return SelectBoxProps.disabled
                        },
                        configurable: true,
                        enumerable: true
                    },
                    focusStateEnabled: {
                        get: function() {
                            return _editor_state_props.EditorStateProps.focusStateEnabled
                        },
                        configurable: true,
                        enumerable: true
                    },
                    tabIndex: {
                        get: function() {
                            return SelectBoxProps.tabIndex
                        },
                        configurable: true,
                        enumerable: true
                    },
                    visible: {
                        get: function() {
                            return SelectBoxProps.visible
                        },
                        configurable: true,
                        enumerable: true
                    },
                    label: {
                        get: function() {
                            return _editor_label_props.EditorLabelProps.label
                        },
                        configurable: true,
                        enumerable: true
                    },
                    labelMode: {
                        get: function() {
                            return _editor_label_props.EditorLabelProps.labelMode
                        },
                        configurable: true,
                        enumerable: true
                    }
                });
                exports.SelectBoxPropsType = SelectBoxPropsType;
                let SelectBox = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(SelectBox, _BaseInfernoComponent);

                    function SelectBox(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {
                            value: void 0 !== _this.props.value ? _this.props.value : _this.props.defaultValue
                        };
                        return _this
                    }
                    var _proto = SelectBox.prototype;
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                value: void 0 !== this.props.value ? this.props.value : this.state.value
                            }),
                            componentProps: this.componentProps,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(SelectBox, [{
                        key: "componentProps",
                        get: function() {
                            return _extends({}, this.props, {
                                value: void 0 !== this.props.value ? this.props.value : this.state.value
                            })
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props$value = _extends({}, this.props, {
                                    value: void 0 !== this.props.value ? this.props.value : this.state.value
                                }),
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props$value, _excluded);
                            return restProps
                        }
                    }]);
                    return SelectBox
                }(_inferno2.BaseInfernoComponent);
                exports.SelectBox = SelectBox;
                SelectBox.defaultProps = SelectBoxPropsType
            },
        15560:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/editors/number_box.js ***!
              \*********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.NumberBoxPropsType = exports.NumberBoxProps = exports.NumberBox = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _number_box = (obj = __webpack_require__( /*! ../../../ui/number_box */ 34171), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _dom_component_wrapper = __webpack_require__( /*! ../common/dom_component_wrapper */ 96886);
                var _editor = __webpack_require__( /*! ./common/editor */ 77848);
                var _editor_state_props = __webpack_require__( /*! ./common/editor_state_props */ 48214);
                var _editor_label_props = __webpack_require__( /*! ./common/editor_label_props */ 96496);
                const _excluded = ["accessKey", "activeStateEnabled", "className", "defaultValue", "disabled", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "invalidValueMessage", "isDirty", "isValid", "label", "labelMode", "max", "min", "mode", "name", "onClick", "onFocusIn", "onKeyDown", "readOnly", "rtlEnabled", "showSpinButtons", "step", "tabIndex", "useLargeSpinButtons", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChange", "visible", "width"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = _ref => {
                    let {
                        componentProps: componentProps,
                        restAttributes: restAttributes
                    } = _ref;
                    return (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _dom_component_wrapper.DomComponentWrapper, _extends({
                        componentType: _number_box.default,
                        componentProps: componentProps,
                        templateNames: []
                    }, restAttributes)))
                };
                exports.viewFunction = viewFunction;
                const NumberBoxProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(_editor.EditorProps), Object.getOwnPropertyDescriptors({
                    defaultValue: 0,
                    isReactComponentWrapper: true
                })));
                exports.NumberBoxProps = NumberBoxProps;
                const NumberBoxPropsType = Object.defineProperties({
                    isReactComponentWrapper: true
                }, {
                    defaultValue: {
                        get: function() {
                            return NumberBoxProps.defaultValue
                        },
                        configurable: true,
                        enumerable: true
                    },
                    readOnly: {
                        get: function() {
                            return NumberBoxProps.readOnly
                        },
                        configurable: true,
                        enumerable: true
                    },
                    name: {
                        get: function() {
                            return NumberBoxProps.name
                        },
                        configurable: true,
                        enumerable: true
                    },
                    validationError: {
                        get: function() {
                            return NumberBoxProps.validationError
                        },
                        configurable: true,
                        enumerable: true
                    },
                    validationErrors: {
                        get: function() {
                            return NumberBoxProps.validationErrors
                        },
                        configurable: true,
                        enumerable: true
                    },
                    validationMessageMode: {
                        get: function() {
                            return NumberBoxProps.validationMessageMode
                        },
                        configurable: true,
                        enumerable: true
                    },
                    validationMessagePosition: {
                        get: function() {
                            return NumberBoxProps.validationMessagePosition
                        },
                        configurable: true,
                        enumerable: true
                    },
                    validationStatus: {
                        get: function() {
                            return NumberBoxProps.validationStatus
                        },
                        configurable: true,
                        enumerable: true
                    },
                    isValid: {
                        get: function() {
                            return NumberBoxProps.isValid
                        },
                        configurable: true,
                        enumerable: true
                    },
                    isDirty: {
                        get: function() {
                            return NumberBoxProps.isDirty
                        },
                        configurable: true,
                        enumerable: true
                    },
                    inputAttr: {
                        get: function() {
                            return NumberBoxProps.inputAttr
                        },
                        configurable: true,
                        enumerable: true
                    },
                    className: {
                        get: function() {
                            return NumberBoxProps.className
                        },
                        configurable: true,
                        enumerable: true
                    },
                    activeStateEnabled: {
                        get: function() {
                            return _editor_state_props.EditorStateProps.activeStateEnabled
                        },
                        configurable: true,
                        enumerable: true
                    },
                    disabled: {
                        get: function() {
                            return NumberBoxProps.disabled
                        },
                        configurable: true,
                        enumerable: true
                    },
                    focusStateEnabled: {
                        get: function() {
                            return _editor_state_props.EditorStateProps.focusStateEnabled
                        },
                        configurable: true,
                        enumerable: true
                    },
                    hoverStateEnabled: {
                        get: function() {
                            return _editor_state_props.EditorStateProps.hoverStateEnabled
                        },
                        configurable: true,
                        enumerable: true
                    },
                    tabIndex: {
                        get: function() {
                            return NumberBoxProps.tabIndex
                        },
                        configurable: true,
                        enumerable: true
                    },
                    visible: {
                        get: function() {
                            return NumberBoxProps.visible
                        },
                        configurable: true,
                        enumerable: true
                    },
                    label: {
                        get: function() {
                            return _editor_label_props.EditorLabelProps.label
                        },
                        configurable: true,
                        enumerable: true
                    },
                    labelMode: {
                        get: function() {
                            return _editor_label_props.EditorLabelProps.labelMode
                        },
                        configurable: true,
                        enumerable: true
                    }
                });
                exports.NumberBoxPropsType = NumberBoxPropsType;
                let NumberBox = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(NumberBox, _BaseInfernoComponent);

                    function NumberBox(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {
                            value: void 0 !== _this.props.value ? _this.props.value : _this.props.defaultValue
                        };
                        return _this
                    }
                    var _proto = NumberBox.prototype;
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                value: void 0 !== this.props.value ? this.props.value : this.state.value
                            }),
                            componentProps: this.componentProps,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(NumberBox, [{
                        key: "componentProps",
                        get: function() {
                            return _extends({}, this.props, {
                                value: void 0 !== this.props.value ? this.props.value : this.state.value
                            })
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props$value = _extends({}, this.props, {
                                    value: void 0 !== this.props.value ? this.props.value : this.state.value
                                }),
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props$value, _excluded);
                            return restProps
                        }
                    }]);
                    return NumberBox
                }(_inferno2.BaseInfernoComponent);
                exports.NumberBox = NumberBox;
                NumberBox.defaultProps = NumberBoxPropsType
            },
        85500:
            /*!******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/overlays/validation_message.js ***!
              \******************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.ValidationMessageProps = exports.ValidationMessage = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _validation_message = (obj = __webpack_require__( /*! ../../../ui/validation_message */ 8336), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _dom_component_wrapper = __webpack_require__( /*! ../common/dom_component_wrapper */ 96886);
                var _base_props = __webpack_require__( /*! ../common/base_props */ 31651);
                const _excluded = ["accessKey", "activeStateEnabled", "boundary", "className", "contentId", "disabled", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "mode", "offset", "onClick", "onKeyDown", "positionSide", "rtlEnabled", "tabIndex", "target", "validationErrors", "visible", "visualContainer", "width"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = _ref => {
                    let {
                        componentProps: componentProps,
                        restAttributes: restAttributes
                    } = _ref;
                    return (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _dom_component_wrapper.DomComponentWrapper, _extends({
                        componentType: _validation_message.default,
                        componentProps: componentProps,
                        templateNames: []
                    }, restAttributes)))
                };
                exports.viewFunction = viewFunction;
                const ValidationMessageProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(_base_props.BaseWidgetProps), Object.getOwnPropertyDescriptors({
                    mode: "auto",
                    positionSide: "top",
                    offset: Object.freeze({
                        h: 0,
                        v: 0
                    }),
                    isReactComponentWrapper: true
                })));
                exports.ValidationMessageProps = ValidationMessageProps;
                let ValidationMessage = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(ValidationMessage, _BaseInfernoComponent);

                    function ValidationMessage(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        return _this
                    }
                    var _proto = ValidationMessage.prototype;
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props),
                            componentProps: this.componentProps,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(ValidationMessage, [{
                        key: "componentProps",
                        get: function() {
                            return this.props
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return ValidationMessage
                }(_inferno2.BaseInfernoComponent);
                exports.ValidationMessage = ValidationMessage;
                ValidationMessage.defaultProps = ValidationMessageProps
            },
        21450:
            /*!********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/pager/common/base_pager_props.js ***!
              \********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.BasePagerProps = void 0;
                var _message = (obj = __webpack_require__( /*! ../../../../localization/message */ 28109), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const BasePagerProps = Object.defineProperties({
                    gridCompatibility: true,
                    showInfo: false,
                    displayMode: "adaptive",
                    maxPagesCount: 10,
                    pageCount: 10,
                    visible: true,
                    hasKnownLastPage: true,
                    pagesNavigatorVisible: "auto",
                    showPageSizes: true,
                    pageSizes: Object.freeze([5, 10]),
                    showNavigationButtons: false,
                    totalCount: 0
                }, {
                    label: {
                        get: function() {
                            return _message.default.format("dxPager-ariaLabel")
                        },
                        configurable: true,
                        enumerable: true
                    }
                });
                exports.BasePagerProps = BasePagerProps
            },
        39853:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/pager/common/consts.js ***!
              \**********************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.PAGER_SELECTION_CLASS = exports.PAGER_SELECTED_PAGE_SIZE_CLASS = exports.PAGER_PAGE_SIZE_CLASS = exports.PAGER_PAGE_SIZES_CLASS = exports.PAGER_PAGE_INDEXES_CLASS = exports.PAGER_PAGE_CLASS = exports.PAGER_PAGES_CLASS = exports.PAGER_CLASS = exports.LIGHT_MODE_CLASS = exports.FIRST_CHILD_CLASS = void 0;
                exports.PAGER_CLASS = "dx-pager";
                exports.LIGHT_MODE_CLASS = "dx-light-mode";
                exports.PAGER_PAGES_CLASS = "dx-pages";
                exports.PAGER_PAGE_INDEXES_CLASS = "dx-page-indexes";
                exports.PAGER_PAGE_CLASS = "dx-page";
                exports.PAGER_SELECTION_CLASS = "dx-selection";
                exports.PAGER_PAGE_SIZE_CLASS = "dx-page-size";
                exports.PAGER_PAGE_SIZES_CLASS = "dx-page-sizes";
                const PAGER_SELECTED_PAGE_SIZE_CLASS = "".concat("dx-page-size", " ").concat("dx-selection");
                exports.PAGER_SELECTED_PAGE_SIZE_CLASS = PAGER_SELECTED_PAGE_SIZE_CLASS;
                exports.FIRST_CHILD_CLASS = "dx-first-child"
            },
        44133:
            /*!***************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/pager/common/keyboard_action_context.js ***!
              \***************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.KeyboardActionContext = void 0;
                var _inferno = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                const KeyboardActionContext = (0, _inferno.createContext)(void 0);
                exports.KeyboardActionContext = KeyboardActionContext
            },
        93961:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/pager/common/light_button.js ***!
              \****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.LightButtonProps = exports.LightButton = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _subscribe_to_event = __webpack_require__( /*! ../../../utils/subscribe_to_event */ 19828);
                var _keyboard_action_context = __webpack_require__( /*! ./keyboard_action_context */ 44133);
                const _excluded = ["children", "className", "label", "onClick", "selected", "tabIndex"];

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _assertThisInitialized(self) {
                    if (void 0 === self) {
                        throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                    }
                    return self
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const viewFunction = _ref => {
                    let {
                        props: {
                            children: children,
                            className: className,
                            label: label,
                            selected: selected,
                            tabIndex: tabIndex
                        },
                        widgetRef: widgetRef
                    } = _ref;
                    return (0, _inferno.createVNode)(1, "div", className, children, 0, {
                        tabIndex: tabIndex,
                        role: "button",
                        "aria-label": label,
                        "aria-current": selected ? "page" : void 0
                    }, null, widgetRef)
                };
                exports.viewFunction = viewFunction;
                const LightButtonProps = {
                    className: "",
                    label: "",
                    tabIndex: 0,
                    selected: false
                };
                exports.LightButtonProps = LightButtonProps;
                let LightButton = function(_InfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(LightButton, _InfernoComponent);

                    function LightButton(props) {
                        var _this;
                        _this = _InfernoComponent.call(this, props) || this;
                        _this.state = {};
                        _this.widgetRef = (0, _inferno.createRef)();
                        _this.keyboardEffect = _this.keyboardEffect.bind(_assertThisInitialized(_this));
                        _this.subscribeToClick = _this.subscribeToClick.bind(_assertThisInitialized(_this));
                        return _this
                    }
                    var _proto = LightButton.prototype;
                    _proto.createEffects = function() {
                        return [new _inferno2.InfernoEffect(this.keyboardEffect, [this.keyboardContext, this.props.onClick]), new _inferno2.InfernoEffect(this.subscribeToClick, [this.props.onClick])]
                    };
                    _proto.updateEffects = function() {
                        var _this$_effects$, _this$_effects$2;
                        null === (_this$_effects$ = this._effects[0]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.keyboardContext, this.props.onClick]);
                        null === (_this$_effects$2 = this._effects[1]) || void 0 === _this$_effects$2 ? void 0 : _this$_effects$2.update([this.props.onClick])
                    };
                    _proto.keyboardEffect = function() {
                        return this.keyboardContext.registerKeyboardAction(this.widgetRef.current, this.props.onClick)
                    };
                    _proto.subscribeToClick = function() {
                        return (0, _subscribe_to_event.subscribeToClickEvent)(this.widgetRef.current, this.props.onClick)
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props),
                            widgetRef: this.widgetRef,
                            keyboardContext: this.keyboardContext,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(LightButton, [{
                        key: "keyboardContext",
                        get: function() {
                            if (this.context[_keyboard_action_context.KeyboardActionContext.id]) {
                                return this.context[_keyboard_action_context.KeyboardActionContext.id]
                            }
                            return _keyboard_action_context.KeyboardActionContext.defaultValue
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return LightButton
                }(_inferno2.InfernoComponent);
                exports.LightButton = LightButton;
                LightButton.defaultProps = LightButtonProps
            },
        96529:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/pager/common/pager_props.js ***!
              \***************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.PagerProps = exports.InternalPagerProps = void 0;
                var _base_pager_props = __webpack_require__( /*! ./base_pager_props */ 21450);

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const PagerProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(_base_pager_props.BasePagerProps), Object.getOwnPropertyDescriptors({
                    defaultPageSize: 5,
                    pageSizeChange: () => {},
                    defaultPageIndex: 1,
                    pageIndexChange: () => {}
                })));
                exports.PagerProps = PagerProps;
                const InternalPagerProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(_base_pager_props.BasePagerProps), Object.getOwnPropertyDescriptors({
                    pageSize: 5,
                    pageIndex: 1
                })));
                exports.InternalPagerProps = InternalPagerProps
            },
        30928:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/pager/content.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.PagerContentProps = exports.PagerContent = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _info = __webpack_require__( /*! ./info */ 57495);
                var _page_index_selector = __webpack_require__( /*! ./pages/page_index_selector */ 32854);
                var _selector = __webpack_require__( /*! ./page_size/selector */ 41936);
                var _consts = __webpack_require__( /*! ./common/consts */ 39853);
                var _pager_props = __webpack_require__( /*! ./common/pager_props */ 96529);
                var _combine_classes = __webpack_require__( /*! ../../utils/combine_classes */ 86237);
                var _widget = __webpack_require__( /*! ../common/widget */ 73687);
                var _accessibility = __webpack_require__( /*! ../../../ui/shared/accessibility */ 56756);
                var _keyboard_action_context = __webpack_require__( /*! ./common/keyboard_action_context */ 44133);
                const _excluded = ["className", "displayMode", "gridCompatibility", "hasKnownLastPage", "infoText", "infoTextRef", "infoTextVisible", "isLargeDisplayMode", "label", "lightModeEnabled", "maxPagesCount", "onKeyDown", "pageCount", "pageIndex", "pageIndexChange", "pageSize", "pageSizeChange", "pageSizes", "pageSizesRef", "pagesCountText", "pagesNavigatorVisible", "pagesRef", "rootElementRef", "rtlEnabled", "showInfo", "showNavigationButtons", "showPageSizes", "totalCount", "visible"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _assertThisInitialized(self) {
                    if (void 0 === self) {
                        throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                    }
                    return self
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = _ref => {
                    let {
                        aria: aria,
                        classes: classes,
                        infoVisible: infoVisible,
                        isLargeDisplayMode: isLargeDisplayMode,
                        pageIndexSelectorVisible: pageIndexSelectorVisible,
                        pagesContainerVisibility: pagesContainerVisibility,
                        pagesContainerVisible: pagesContainerVisible,
                        props: {
                            hasKnownLastPage: hasKnownLastPage,
                            infoText: infoText,
                            infoTextRef: infoTextRef,
                            maxPagesCount: maxPagesCount,
                            pageCount: pageCount,
                            pageIndex: pageIndex,
                            pageIndexChange: pageIndexChange,
                            pageSize: pageSize,
                            pageSizeChange: pageSizeChange,
                            pageSizes: pageSizes,
                            pageSizesRef: pageSizesRef,
                            pagesCountText: pagesCountText,
                            pagesRef: pagesRef,
                            rtlEnabled: rtlEnabled,
                            showNavigationButtons: showNavigationButtons,
                            showPageSizes: showPageSizes,
                            totalCount: totalCount,
                            visible: visible
                        },
                        restAttributes: restAttributes,
                        widgetRootElementRef: widgetRootElementRef
                    } = _ref;
                    return (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _widget.Widget, _extends({
                        rootElementRef: widgetRootElementRef,
                        rtlEnabled: rtlEnabled,
                        classes: classes,
                        visible: visible,
                        aria: aria
                    }, restAttributes, {
                        children: [showPageSizes && (0, _inferno.createComponentVNode)(2, _selector.PageSizeSelector, {
                            rootElementRef: pageSizesRef,
                            isLargeDisplayMode: isLargeDisplayMode,
                            pageSize: pageSize,
                            pageSizeChange: pageSizeChange,
                            pageSizes: pageSizes
                        }), pagesContainerVisible && (0, _inferno.createVNode)(1, "div", _consts.PAGER_PAGES_CLASS, [infoVisible && (0, _inferno.createComponentVNode)(2, _info.InfoText, {
                            rootElementRef: infoTextRef,
                            infoText: infoText,
                            pageCount: pageCount,
                            pageIndex: pageIndex,
                            totalCount: totalCount
                        }), pageIndexSelectorVisible && (0, _inferno.createVNode)(1, "div", _consts.PAGER_PAGE_INDEXES_CLASS, (0, _inferno.createComponentVNode)(2, _page_index_selector.PageIndexSelector, {
                            hasKnownLastPage: hasKnownLastPage,
                            isLargeDisplayMode: isLargeDisplayMode,
                            maxPagesCount: maxPagesCount,
                            pageCount: pageCount,
                            pageIndex: pageIndex,
                            pageIndexChange: pageIndexChange,
                            pagesCountText: pagesCountText,
                            showNavigationButtons: showNavigationButtons,
                            totalCount: totalCount
                        }), 2, null, null, pagesRef)], 0, {
                            style: (0, _inferno2.normalizeStyles)({
                                visibility: pagesContainerVisibility
                            })
                        })]
                    })))
                };
                exports.viewFunction = viewFunction;
                const PagerContentProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(_pager_props.InternalPagerProps), Object.getOwnPropertyDescriptors({
                    infoTextVisible: true,
                    isLargeDisplayMode: true
                })));
                exports.PagerContentProps = PagerContentProps;
                let PagerContent = function(_InfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(PagerContent, _InfernoComponent);

                    function PagerContent(props) {
                        var _this;
                        _this = _InfernoComponent.call(this, props) || this;
                        _this.state = {};
                        _this.widgetRootElementRef = (0, _inferno.createRef)();
                        _this.__getterCache = {};
                        _this.setRootElementRef = _this.setRootElementRef.bind(_assertThisInitialized(_this));
                        _this.createFakeInstance = _this.createFakeInstance.bind(_assertThisInitialized(_this));
                        return _this
                    }
                    var _proto = PagerContent.prototype;
                    _proto.createEffects = function() {
                        return [new _inferno2.InfernoEffect(this.setRootElementRef, [])]
                    };
                    _proto.getChildContext = function() {
                        return _extends({}, this.context, {
                            [_keyboard_action_context.KeyboardActionContext.id]: this.keyboardAction || _keyboard_action_context.KeyboardActionContext.defaultValue
                        })
                    };
                    _proto.setRootElementRef = function() {
                        const {
                            rootElementRef: rootElementRef
                        } = this.props;
                        if (rootElementRef) {
                            rootElementRef.current = this.widgetRootElementRef.current
                        }
                    };
                    _proto.createFakeInstance = function() {
                        return {
                            option: () => false,
                            element: () => this.widgetRootElementRef.current,
                            _createActionByOption: () => e => {
                                var _this$props$onKeyDown, _this$props;
                                null === (_this$props$onKeyDown = (_this$props = this.props).onKeyDown) || void 0 === _this$props$onKeyDown ? void 0 : _this$props$onKeyDown.call(_this$props, e)
                            }
                        }
                    };
                    _proto.componentWillUpdate = function(nextProps, nextState, context) {
                        _InfernoComponent.prototype.componentWillUpdate.call(this);
                        if (this.props.onKeyDown !== nextProps.onKeyDown) {
                            this.__getterCache.keyboardAction = void 0
                        }
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props),
                            widgetRootElementRef: this.widgetRootElementRef,
                            keyboardAction: this.keyboardAction,
                            infoVisible: this.infoVisible,
                            pageIndexSelectorVisible: this.pageIndexSelectorVisible,
                            pagesContainerVisible: this.pagesContainerVisible,
                            pagesContainerVisibility: this.pagesContainerVisibility,
                            isLargeDisplayMode: this.isLargeDisplayMode,
                            classes: this.classes,
                            aria: this.aria,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(PagerContent, [{
                        key: "keyboardAction",
                        get: function() {
                            if (void 0 !== this.__getterCache.keyboardAction) {
                                return this.__getterCache.keyboardAction
                            }
                            return this.__getterCache.keyboardAction = (() => ({
                                registerKeyboardAction: (element, action) => {
                                    const fakePagerInstance = this.createFakeInstance();
                                    return (0, _accessibility.registerKeyboardAction)("pager", fakePagerInstance, element, void 0, action)
                                }
                            }))()
                        }
                    }, {
                        key: "infoVisible",
                        get: function() {
                            const {
                                infoTextVisible: infoTextVisible,
                                showInfo: showInfo
                            } = this.props;
                            return showInfo && infoTextVisible
                        }
                    }, {
                        key: "pageIndexSelectorVisible",
                        get: function() {
                            return 0 !== this.props.pageSize
                        }
                    }, {
                        key: "normalizedDisplayMode",
                        get: function() {
                            const {
                                displayMode: displayMode,
                                lightModeEnabled: lightModeEnabled
                            } = this.props;
                            if ("adaptive" === displayMode && void 0 !== lightModeEnabled) {
                                return lightModeEnabled ? "compact" : "full"
                            }
                            return displayMode
                        }
                    }, {
                        key: "pagesContainerVisible",
                        get: function() {
                            return !!this.props.pagesNavigatorVisible && this.props.pageCount > 0
                        }
                    }, {
                        key: "pagesContainerVisibility",
                        get: function() {
                            if ("auto" === this.props.pagesNavigatorVisible && 1 === this.props.pageCount && this.props.hasKnownLastPage) {
                                return "hidden"
                            }
                            return
                        }
                    }, {
                        key: "isLargeDisplayMode",
                        get: function() {
                            const displayMode = this.normalizedDisplayMode;
                            let result = false;
                            if ("adaptive" === displayMode) {
                                result = this.props.isLargeDisplayMode
                            } else {
                                result = "full" === displayMode
                            }
                            return result
                        }
                    }, {
                        key: "classes",
                        get: function() {
                            const classesMap = {
                                ["".concat(this.props.className)]: !!this.props.className,
                                [_consts.PAGER_CLASS]: true,
                                [_consts.LIGHT_MODE_CLASS]: !this.isLargeDisplayMode
                            };
                            return (0, _combine_classes.combineClasses)(classesMap)
                        }
                    }, {
                        key: "aria",
                        get: function() {
                            return {
                                role: "navigation",
                                label: this.props.label
                            }
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props2 = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props2, _excluded);
                            return restProps
                        }
                    }]);
                    return PagerContent
                }(_inferno2.InfernoComponent);
                exports.PagerContent = PagerContent;
                PagerContent.defaultProps = PagerContentProps
            },
        57495:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/pager/info.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.PAGER_INFO_CLASS = exports.InfoTextProps = exports.InfoText = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _string = __webpack_require__( /*! ../../../core/utils/string */ 68752);
                var _message = (obj = __webpack_require__( /*! ../../../localization/message */ 28109), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _pager_props = __webpack_require__( /*! ./common/pager_props */ 96529);
                const _excluded = ["infoText", "pageCount", "pageIndex", "rootElementRef", "totalCount"];

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                exports.PAGER_INFO_CLASS = "dx-info";
                const viewFunction = _ref => {
                    let {
                        props: {
                            rootElementRef: rootElementRef
                        },
                        text: text
                    } = _ref;
                    return (0, _inferno.createVNode)(1, "div", "dx-info", text, 0, null, null, rootElementRef)
                };
                exports.viewFunction = viewFunction;
                exports.InfoTextProps = {};
                const InfoTextPropsType = Object.defineProperties({}, {
                    pageIndex: {
                        get: function() {
                            return _pager_props.InternalPagerProps.pageIndex
                        },
                        configurable: true,
                        enumerable: true
                    },
                    pageCount: {
                        get: function() {
                            return _pager_props.InternalPagerProps.pageCount
                        },
                        configurable: true,
                        enumerable: true
                    },
                    totalCount: {
                        get: function() {
                            return _pager_props.InternalPagerProps.totalCount
                        },
                        configurable: true,
                        enumerable: true
                    }
                });
                let InfoText = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(InfoText, _BaseInfernoComponent);

                    function InfoText(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        return _this
                    }
                    var _proto = InfoText.prototype;
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props),
                            infoText: this.infoText,
                            text: this.text,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(InfoText, [{
                        key: "infoText",
                        get: function() {
                            var _this$props$infoText;
                            return (null !== (_this$props$infoText = this.props.infoText) && void 0 !== _this$props$infoText ? _this$props$infoText : "") || _message.default.getFormatter("dxPager-infoText")()
                        }
                    }, {
                        key: "text",
                        get: function() {
                            const {
                                pageCount: pageCount,
                                pageIndex: pageIndex,
                                totalCount: totalCount
                            } = this.props;
                            return (0, _string.format)(this.infoText, (pageIndex + 1).toString(), pageCount.toString(), totalCount.toString())
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return InfoText
                }(_inferno2.BaseInfernoComponent);
                exports.InfoText = InfoText;
                InfoText.defaultProps = InfoTextPropsType
            },
        86857:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/pager/page_size/large.js ***!
              \************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.PageSizeLargeProps = exports.PageSizeLarge = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _combine_classes = __webpack_require__( /*! ../../../utils/combine_classes */ 86237);
                var _light_button = __webpack_require__( /*! ../common/light_button */ 93961);
                var _pager_props = __webpack_require__( /*! ../common/pager_props */ 96529);
                var _consts = __webpack_require__( /*! ../common/consts */ 39853);
                var _message = (obj = __webpack_require__( /*! ../../../../localization/message */ 28109), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _string = __webpack_require__( /*! ../../../../core/utils/string */ 68752);
                const _excluded = ["pageSize", "pageSizeChange", "pageSizes"];

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const viewFunction = _ref => {
                    let {
                        pageSizesText: pageSizesText
                    } = _ref;
                    return (0, _inferno.createFragment)(pageSizesText.map(_ref2 => {
                        let {
                            className: className,
                            click: click,
                            label: label,
                            text: text
                        } = _ref2;
                        return (0, _inferno.createComponentVNode)(2, _light_button.LightButton, {
                            className: className,
                            label: label,
                            onClick: click,
                            children: text
                        }, text)
                    }), 0)
                };
                exports.viewFunction = viewFunction;
                exports.PageSizeLargeProps = {};
                const PageSizeLargePropsType = Object.defineProperties({}, {
                    pageSize: {
                        get: function() {
                            return _pager_props.InternalPagerProps.pageSize
                        },
                        configurable: true,
                        enumerable: true
                    }
                });
                let PageSizeLarge = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(PageSizeLarge, _BaseInfernoComponent);

                    function PageSizeLarge(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        _this.__getterCache = {};
                        _this.onPageSizeChange = _this.onPageSizeChange.bind(function(self) {
                            if (void 0 === self) {
                                throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                            }
                            return self
                        }(_this));
                        return _this
                    }
                    var _proto = PageSizeLarge.prototype;
                    _proto.onPageSizeChange = function(processedPageSize) {
                        return () => {
                            this.props.pageSizeChange(processedPageSize);
                            return this.props.pageSize
                        }
                    };
                    _proto.componentWillUpdate = function(nextProps, nextState, context) {
                        if (this.props.pageSize !== nextProps.pageSize || this.props.pageSizes !== nextProps.pageSizes || this.props.pageSizeChange !== nextProps.pageSizeChange) {
                            this.__getterCache.pageSizesText = void 0
                        }
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props),
                            pageSizesText: this.pageSizesText,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(PageSizeLarge, [{
                        key: "pageSizesText",
                        get: function() {
                            if (void 0 !== this.__getterCache.pageSizesText) {
                                return this.__getterCache.pageSizesText
                            }
                            return this.__getterCache.pageSizesText = (() => {
                                const {
                                    pageSize: pageSize,
                                    pageSizes: pageSizes
                                } = this.props;
                                return pageSizes.map((_ref3, index) => {
                                    let {
                                        text: text,
                                        value: processedPageSize
                                    } = _ref3;
                                    const selected = processedPageSize === pageSize;
                                    const className = (0, _combine_classes.combineClasses)({
                                        [selected ? _consts.PAGER_SELECTED_PAGE_SIZE_CLASS : _consts.PAGER_PAGE_SIZE_CLASS]: true,
                                        [_consts.FIRST_CHILD_CLASS]: 0 === index
                                    });
                                    return {
                                        className: className,
                                        click: this.onPageSizeChange(processedPageSize),
                                        label: (0, _string.format)(_message.default.getFormatter("dxPager-pageSize"), processedPageSize || _message.default.getFormatter("dxPager-pageSizesAllText")),
                                        text: text
                                    }
                                })
                            })()
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return PageSizeLarge
                }(_inferno2.BaseInfernoComponent);
                exports.PageSizeLarge = PageSizeLarge;
                PageSizeLarge.defaultProps = PageSizeLargePropsType
            },
        41936:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/pager/page_size/selector.js ***!
              \***************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.PageSizeSelector = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _small = __webpack_require__( /*! ./small */ 70415);
                var _large = __webpack_require__( /*! ./large */ 86857);
                var _pager_props = __webpack_require__( /*! ../common/pager_props */ 96529);
                var _message = (obj = __webpack_require__( /*! ../../../../localization/message */ 28109), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _consts = __webpack_require__( /*! ../common/consts */ 39853);
                const _excluded = ["isLargeDisplayMode", "pageSize", "pageSizeChange", "pageSizes", "rootElementRef"];

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const viewFunction = _ref => {
                    let {
                        htmlRef: htmlRef,
                        normalizedPageSizes: normalizedPageSizes,
                        props: {
                            isLargeDisplayMode: isLargeDisplayMode,
                            pageSize: pageSize,
                            pageSizeChange: pageSizeChange
                        }
                    } = _ref;
                    return (0, _inferno.createVNode)(1, "div", _consts.PAGER_PAGE_SIZES_CLASS, [isLargeDisplayMode && (0, _inferno.createComponentVNode)(2, _large.PageSizeLarge, {
                        pageSizes: normalizedPageSizes,
                        pageSize: pageSize,
                        pageSizeChange: pageSizeChange
                    }), !isLargeDisplayMode && (0, _inferno.createComponentVNode)(2, _small.PageSizeSmall, {
                        parentRef: htmlRef,
                        pageSizes: normalizedPageSizes,
                        pageSize: pageSize,
                        pageSizeChange: pageSizeChange
                    })], 0, null, null, htmlRef)
                };
                exports.viewFunction = viewFunction;
                const PageSizeSelectorProps_isLargeDisplayMode = true;
                const PageSizeSelectorPropsType = Object.defineProperties({}, {
                    pageSize: {
                        get: function() {
                            return _pager_props.InternalPagerProps.pageSize
                        },
                        configurable: true,
                        enumerable: true
                    },
                    pageSizes: {
                        get: function() {
                            return _pager_props.InternalPagerProps.pageSizes
                        },
                        configurable: true,
                        enumerable: true
                    },
                    isLargeDisplayMode: {
                        get: function() {
                            return PageSizeSelectorProps_isLargeDisplayMode
                        },
                        configurable: true,
                        enumerable: true
                    }
                });
                let PageSizeSelector = function(_InfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(PageSizeSelector, _InfernoComponent);

                    function PageSizeSelector(props) {
                        var _this;
                        _this = _InfernoComponent.call(this, props) || this;
                        _this.state = {};
                        _this.htmlRef = (0, _inferno.createRef)();
                        _this.__getterCache = {};
                        _this.setRootElementRef = _this.setRootElementRef.bind(function(self) {
                            if (void 0 === self) {
                                throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                            }
                            return self
                        }(_this));
                        return _this
                    }
                    var _proto = PageSizeSelector.prototype;
                    _proto.createEffects = function() {
                        return [new _inferno2.InfernoEffect(this.setRootElementRef, [])]
                    };
                    _proto.setRootElementRef = function() {
                        const {
                            rootElementRef: rootElementRef
                        } = this.props;
                        if (rootElementRef) {
                            rootElementRef.current = this.htmlRef.current
                        }
                    };
                    _proto.componentWillUpdate = function(nextProps, nextState, context) {
                        _InfernoComponent.prototype.componentWillUpdate.call(this);
                        if (this.props.pageSizes !== nextProps.pageSizes) {
                            this.__getterCache.normalizedPageSizes = void 0
                        }
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props),
                            htmlRef: this.htmlRef,
                            normalizedPageSizes: this.normalizedPageSizes,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(PageSizeSelector, [{
                        key: "normalizedPageSizes",
                        get: function() {
                            if (void 0 !== this.__getterCache.normalizedPageSizes) {
                                return this.__getterCache.normalizedPageSizes
                            }
                            return this.__getterCache.normalizedPageSizes = (() => {
                                const {
                                    pageSizes: pageSizes
                                } = this.props;
                                return pageSizes.map(p => "all" === p || 0 === p ? {
                                    text: _message.default.getFormatter("dxPager-pageSizesAllText")(),
                                    value: 0
                                } : {
                                    text: String(p),
                                    value: p
                                })
                            })()
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return PageSizeSelector
                }(_inferno2.InfernoComponent);
                exports.PageSizeSelector = PageSizeSelector;
                PageSizeSelector.defaultProps = PageSizeSelectorPropsType
            },
        70415:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/pager/page_size/small.js ***!
              \************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.PageSizeSmallProps = exports.PageSizeSmall = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _message = (obj = __webpack_require__( /*! ../../../../localization/message */ 28109), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _select_box = __webpack_require__( /*! ../../editors/drop_down_editors/select_box */ 79708);
                var _calculate_values_fitted_width = __webpack_require__( /*! ../utils/calculate_values_fitted_width */ 7750);
                var _get_element_width = __webpack_require__( /*! ../utils/get_element_width */ 95116);
                var _pager_props = __webpack_require__( /*! ../common/pager_props */ 96529);
                const _excluded = ["inputAttr", "pageSize", "pageSizeChange", "pageSizes", "parentRef"];

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const viewFunction = _ref => {
                    let {
                        props: {
                            inputAttr: inputAttr,
                            pageSize: pageSize,
                            pageSizeChange: pageSizeChange,
                            pageSizes: pageSizes
                        },
                        width: width
                    } = _ref;
                    return (0, _inferno.createComponentVNode)(2, _select_box.SelectBox, {
                        displayExpr: "text",
                        valueExpr: "value",
                        dataSource: pageSizes,
                        value: pageSize,
                        valueChange: pageSizeChange,
                        width: width,
                        inputAttr: inputAttr
                    })
                };
                exports.viewFunction = viewFunction;
                const PageSizeSmallProps = {
                    inputAttr: Object.freeze({
                        "aria-label": _message.default.format("dxPager-ariaPageSize")
                    })
                };
                exports.PageSizeSmallProps = PageSizeSmallProps;
                const PageSizeSmallPropsType = Object.defineProperties({}, {
                    pageSize: {
                        get: function() {
                            return _pager_props.InternalPagerProps.pageSize
                        },
                        configurable: true,
                        enumerable: true
                    },
                    inputAttr: {
                        get: function() {
                            return PageSizeSmallProps.inputAttr
                        },
                        configurable: true,
                        enumerable: true
                    }
                });
                let PageSizeSmall = function(_InfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(PageSizeSmall, _InfernoComponent);

                    function PageSizeSmall(props) {
                        var _this;
                        _this = _InfernoComponent.call(this, props) || this;
                        _this.state = {
                            minWidth: 10
                        };
                        _this.updateWidth = _this.updateWidth.bind(function(self) {
                            if (void 0 === self) {
                                throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                            }
                            return self
                        }(_this));
                        return _this
                    }
                    var _proto = PageSizeSmall.prototype;
                    _proto.createEffects = function() {
                        return [new _inferno2.InfernoEffect(this.updateWidth, [this.props, this.state.minWidth, this.props.pageSize, this.props.pageSizeChange, this.props.pageSizes, this.props.inputAttr])]
                    };
                    _proto.updateEffects = function() {
                        var _this$_effects$;
                        null === (_this$_effects$ = this._effects[0]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.props, this.state.minWidth, this.props.pageSize, this.props.pageSizeChange, this.props.pageSizes, this.props.inputAttr])
                    };
                    _proto.updateWidth = function() {
                        this.setState(__state_argument => ({
                            minWidth: (0, _get_element_width.getElementMinWidth)(this.props.parentRef.current) || __state_argument.minWidth
                        }))
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props),
                            width: this.width,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(PageSizeSmall, [{
                        key: "width",
                        get: function() {
                            return (0, _calculate_values_fitted_width.calculateValuesFittedWidth)(this.state.minWidth, this.props.pageSizes.map(p => p.value))
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return PageSizeSmall
                }(_inferno2.InfernoComponent);
                exports.PageSizeSmall = PageSizeSmall;
                PageSizeSmall.defaultProps = PageSizeSmallPropsType
            },
        47854:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/pager/pager.j.js ***!
              \****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _component_registrator = (obj = __webpack_require__( /*! ../../../core/component_registrator */ 99393), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _grid_pager = __webpack_require__( /*! ../../component_wrapper/grid_pager */ 97827);
                var _pager = __webpack_require__( /*! ./pager */ 59968);

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let Pager = function(_GridPagerWrapper) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(Pager, _GridPagerWrapper);

                    function Pager() {
                        return _GridPagerWrapper.apply(this, arguments) || this
                    }
                    var _proto = Pager.prototype;
                    _proto.getProps = function() {
                        const props = _GridPagerWrapper.prototype.getProps.call(this);
                        props.onKeyDown = this._wrapKeyDownHandler(props.onKeyDown);
                        return props
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(Pager, [{
                        key: "_propsInfo",
                        get: function() {
                            return {
                                twoWay: [
                                    ["pageSize", "defaultPageSize", "pageSizeChange"],
                                    ["pageIndex", "defaultPageIndex", "pageIndexChange"]
                                ],
                                allowNull: [],
                                elements: [],
                                templates: [],
                                props: ["defaultPageSize", "pageSizeChange", "defaultPageIndex", "pageIndexChange", "gridCompatibility", "className", "showInfo", "infoText", "lightModeEnabled", "displayMode", "maxPagesCount", "pageCount", "pagesCountText", "visible", "hasKnownLastPage", "pagesNavigatorVisible", "showPageSizes", "pageSizes", "rtlEnabled", "showNavigationButtons", "totalCount", "label", "onKeyDown", "pageSize", "pageIndex"]
                            }
                        }
                    }, {
                        key: "_viewComponent",
                        get: function() {
                            return _pager.Pager
                        }
                    }]);
                    return Pager
                }(_grid_pager.GridPagerWrapper);
                exports.default = Pager;
                (0, _component_registrator.default)("dxPager", Pager);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        59968:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/pager/pager.js ***!
              \**************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.Pager = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _resizable_container = __webpack_require__( /*! ./resizable_container */ 97239);
                var _pager_props = __webpack_require__( /*! ./common/pager_props */ 96529);
                var _content = __webpack_require__( /*! ./content */ 30928);
                var _combine_classes = __webpack_require__( /*! ../../utils/combine_classes */ 86237);
                const _excluded = ["className", "defaultPageIndex", "defaultPageSize", "displayMode", "gridCompatibility", "hasKnownLastPage", "infoText", "label", "lightModeEnabled", "maxPagesCount", "onKeyDown", "pageCount", "pageIndex", "pageIndexChange", "pageSize", "pageSizeChange", "pageSizes", "pagesCountText", "pagesNavigatorVisible", "rtlEnabled", "showInfo", "showNavigationButtons", "showPageSizes", "totalCount", "visible"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _assertThisInitialized(self) {
                    if (void 0 === self) {
                        throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                    }
                    return self
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = _ref => {
                    let {
                        pagerProps: pagerProps,
                        restAttributes: restAttributes
                    } = _ref;
                    return (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _resizable_container.ResizableContainer, _extends({
                        contentTemplate: _content.PagerContent,
                        pagerProps: pagerProps
                    }, restAttributes)))
                };
                exports.viewFunction = viewFunction;
                let Pager = function(_InfernoWrapperCompon) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(Pager, _InfernoWrapperCompon);

                    function Pager(props) {
                        var _this;
                        _this = _InfernoWrapperCompon.call(this, props) || this;
                        _this.__getterCache = {};
                        _this.state = {
                            pageSize: void 0 !== _this.props.pageSize ? _this.props.pageSize : _this.props.defaultPageSize,
                            pageIndex: void 0 !== _this.props.pageIndex ? _this.props.pageIndex : _this.props.defaultPageIndex
                        };
                        _this.pageIndexChange = _this.pageIndexChange.bind(_assertThisInitialized(_this));
                        _this.pageSizeChange = _this.pageSizeChange.bind(_assertThisInitialized(_this));
                        return _this
                    }
                    var _proto = Pager.prototype;
                    _proto.createEffects = function() {
                        return [(0, _inferno2.createReRenderEffect)()]
                    };
                    _proto.pageIndexChange = function(newPageIndex) {
                        if (this.props.gridCompatibility) {
                            let __newValue;
                            this.setState(__state_argument => {
                                __newValue = newPageIndex + 1;
                                return {
                                    pageIndex: __newValue
                                }
                            });
                            this.props.pageIndexChange(__newValue)
                        } else {
                            let __newValue;
                            this.setState(__state_argument => {
                                __newValue = newPageIndex;
                                return {
                                    pageIndex: __newValue
                                }
                            });
                            this.props.pageIndexChange(__newValue)
                        }
                    };
                    _proto.pageSizeChange = function(newPageSize) {
                        {
                            let __newValue;
                            this.setState(__state_argument => {
                                __newValue = newPageSize;
                                return {
                                    pageSize: __newValue
                                }
                            });
                            this.props.pageSizeChange(__newValue)
                        }
                    };
                    _proto.componentWillUpdate = function(nextProps, nextState, context) {
                        _InfernoWrapperCompon.prototype.componentWillUpdate.call(this);
                        if (this.props !== nextProps || this.props.gridCompatibility !== nextProps.gridCompatibility || this.props.className !== nextProps.className || this.state.pageIndex !== nextState.pageIndex || this.props.pageIndex !== nextProps.pageIndex || this.props.pageIndexChange !== nextProps.pageIndexChange || this.props.pageSizeChange !== nextProps.pageSizeChange) {
                            this.__getterCache.pagerProps = void 0
                        }
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                pageSize: void 0 !== this.props.pageSize ? this.props.pageSize : this.state.pageSize,
                                pageIndex: void 0 !== this.props.pageIndex ? this.props.pageIndex : this.state.pageIndex
                            }),
                            pageIndexChange: this.pageIndexChange,
                            pageIndex: this.pageIndex,
                            pageSizeChange: this.pageSizeChange,
                            className: this.className,
                            pagerProps: this.pagerProps,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(Pager, [{
                        key: "pageIndex",
                        get: function() {
                            if (this.props.gridCompatibility) {
                                return (void 0 !== this.props.pageIndex ? this.props.pageIndex : this.state.pageIndex) - 1
                            }
                            return void 0 !== this.props.pageIndex ? this.props.pageIndex : this.state.pageIndex
                        }
                    }, {
                        key: "className",
                        get: function() {
                            if (this.props.gridCompatibility) {
                                return (0, _combine_classes.combineClasses)({
                                    "dx-datagrid-pager": true,
                                    ["".concat(this.props.className)]: !!this.props.className
                                })
                            }
                            return this.props.className
                        }
                    }, {
                        key: "pagerProps",
                        get: function() {
                            if (void 0 !== this.__getterCache.pagerProps) {
                                return this.__getterCache.pagerProps
                            }
                            return this.__getterCache.pagerProps = (() => _extends({}, _extends({}, this.props, {
                                pageSize: void 0 !== this.props.pageSize ? this.props.pageSize : this.state.pageSize,
                                pageIndex: void 0 !== this.props.pageIndex ? this.props.pageIndex : this.state.pageIndex
                            }), {
                                className: this.className,
                                pageIndex: this.pageIndex,
                                pageIndexChange: pageIndex => this.pageIndexChange(pageIndex),
                                pageSizeChange: pageSize => this.pageSizeChange(pageSize)
                            }))()
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props$pageSize$ = _extends({}, this.props, {
                                    pageSize: void 0 !== this.props.pageSize ? this.props.pageSize : this.state.pageSize,
                                    pageIndex: void 0 !== this.props.pageIndex ? this.props.pageIndex : this.state.pageIndex
                                }),
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props$pageSize$, _excluded);
                            return restProps
                        }
                    }]);
                    return Pager
                }(_inferno2.InfernoWrapperComponent);
                exports.Pager = Pager;
                Pager.defaultProps = _pager_props.PagerProps
            },
        40586:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/pager/pages/large.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.PagesLarge = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _page = __webpack_require__( /*! ./page */ 48402);
                var _pager_props = __webpack_require__( /*! ../common/pager_props */ 96529);
                var _config_context = __webpack_require__( /*! ../../../common/config_context */ 49697);
                const _excluded = ["pageIndexes"],
                    _excluded2 = ["maxPagesCount", "pageCount", "pageIndex", "pageIndexChange"];

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                function _objectWithoutPropertiesLoose(source, excluded) {
                    if (null == source) {
                        return {}
                    }
                    var target = {};
                    var sourceKeys = Object.keys(source);
                    var key, i;
                    for (i = 0; i < sourceKeys.length; i++) {
                        key = sourceKeys[i];
                        if (excluded.indexOf(key) >= 0) {
                            continue
                        }
                        target[key] = source[key]
                    }
                    return target
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _assertThisInitialized(self) {
                    if (void 0 === self) {
                        throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                    }
                    return self
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const viewFunction = _ref => {
                    let {
                        pages: pages
                    } = _ref;
                    const PagesMarkup = pages.map(_ref2 => {
                        let {
                            key: key,
                            pageProps: pageProps
                        } = _ref2;
                        return pageProps ? (0, _inferno.createComponentVNode)(2, _page.Page, {
                            index: pageProps.index,
                            selected: pageProps.selected,
                            onClick: pageProps.onClick
                        }, key) : (0, _inferno.createVNode)(1, "div", "dx-separator", ". . .", 16, null, key)
                    });
                    return (0, _inferno.createFragment)(PagesMarkup, 0)
                };
                exports.viewFunction = viewFunction;

                function getDelimiterType(startIndex, slidingWindowSize, pageCount) {
                    if (1 === startIndex) {
                        return "high"
                    }
                    if (startIndex + slidingWindowSize === pageCount - 1) {
                        return "low"
                    }
                    return "both"
                }

                function createPageIndexesBySlidingWindowIndexes(slidingWindowIndexes, pageCount, delimiter) {
                    let pageIndexes = [];
                    let indexesForReuse = [];
                    switch (delimiter) {
                        case "none":
                            pageIndexes = [...slidingWindowIndexes];
                            break;
                        case "both":
                            pageIndexes = [0, "low", ...slidingWindowIndexes, "high", pageCount - 1];
                            indexesForReuse = slidingWindowIndexes.slice(1, -1);
                            break;
                        case "high":
                            pageIndexes = [0, ...slidingWindowIndexes, "high", pageCount - 1];
                            indexesForReuse = slidingWindowIndexes.slice(0, -1);
                            break;
                        case "low":
                            pageIndexes = [0, "low", ...slidingWindowIndexes, pageCount - 1];
                            indexesForReuse = slidingWindowIndexes.slice(1)
                    }
                    return {
                        slidingWindowIndexes: slidingWindowIndexes,
                        indexesForReuse: indexesForReuse,
                        pageIndexes: pageIndexes
                    }
                }

                function createPageIndexes(startIndex, slidingWindowSize, pageCount, delimiter) {
                    const slidingWindowIndexes = [];
                    for (let i = 0; i < slidingWindowSize; i += 1) {
                        slidingWindowIndexes.push(i + startIndex)
                    }
                    return createPageIndexesBySlidingWindowIndexes(slidingWindowIndexes, pageCount, delimiter)
                }
                const PagesLargePropsType = Object.defineProperties({}, {
                    pageIndex: {
                        get: function() {
                            return _pager_props.InternalPagerProps.pageIndex
                        },
                        configurable: true,
                        enumerable: true
                    },
                    maxPagesCount: {
                        get: function() {
                            return _pager_props.InternalPagerProps.maxPagesCount
                        },
                        configurable: true,
                        enumerable: true
                    },
                    pageCount: {
                        get: function() {
                            return _pager_props.InternalPagerProps.pageCount
                        },
                        configurable: true,
                        enumerable: true
                    }
                });
                let PagesLarge = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(PagesLarge, _BaseInfernoComponent);

                    function PagesLarge(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        _this.canReuseSlidingWindow = _this.canReuseSlidingWindow.bind(_assertThisInitialized(_this));
                        _this.generatePageIndexes = _this.generatePageIndexes.bind(_assertThisInitialized(_this));
                        _this.isSlidingWindowMode = _this.isSlidingWindowMode.bind(_assertThisInitialized(_this));
                        _this.onPageClick = _this.onPageClick.bind(_assertThisInitialized(_this));
                        return _this
                    }
                    var _proto = PagesLarge.prototype;
                    _proto.canReuseSlidingWindow = function(currentPageCount, pageIndex) {
                        const {
                            indexesForReuse: indexesForReuse
                        } = this.slidingWindowState;
                        const lastPageIsFartherThanWindow = indexesForReuse.slice(-1)[0] < currentPageCount - 1;
                        const pageIndexExistInIndexes = indexesForReuse.includes(pageIndex);
                        return lastPageIsFartherThanWindow && pageIndexExistInIndexes
                    };
                    _proto.generatePageIndexes = function() {
                        const {
                            pageCount: pageCount,
                            pageIndex: pageIndex
                        } = this.props;
                        let startIndex = 0;
                        const {
                            slidingWindowIndexes: slidingWindowIndexes
                        } = this.slidingWindowState;
                        if (pageIndex === slidingWindowIndexes[0]) {
                            startIndex = pageIndex - 1
                        } else if (pageIndex === slidingWindowIndexes[slidingWindowIndexes.length - 1]) {
                            startIndex = pageIndex + 2 - 4
                        } else if (pageIndex < 4) {
                            startIndex = 1
                        } else if (pageIndex >= pageCount - 4) {
                            startIndex = pageCount - 4 - 1
                        } else {
                            startIndex = pageIndex - 1
                        }
                        const delimiter = getDelimiterType(startIndex, 4, pageCount);
                        const _createPageIndexes = createPageIndexes(startIndex, 4, pageCount, delimiter),
                            {
                                pageIndexes: pageIndexes
                            } = _createPageIndexes,
                            slidingWindowState = _objectWithoutPropertiesLoose(_createPageIndexes, _excluded);
                        this.slidingWindowStateHolder = slidingWindowState;
                        return pageIndexes
                    };
                    _proto.isSlidingWindowMode = function() {
                        const {
                            maxPagesCount: maxPagesCount,
                            pageCount: pageCount
                        } = this.props;
                        return pageCount <= 4 || pageCount <= maxPagesCount
                    };
                    _proto.onPageClick = function(pageIndex) {
                        this.props.pageIndexChange(pageIndex)
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props),
                            config: this.config,
                            pageIndexes: this.pageIndexes,
                            pages: this.pages,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(PagesLarge, [{
                        key: "config",
                        get: function() {
                            if (this.context[_config_context.ConfigContext.id]) {
                                return this.context[_config_context.ConfigContext.id]
                            }
                            return _config_context.ConfigContext.defaultValue
                        }
                    }, {
                        key: "slidingWindowState",
                        get: function() {
                            const slidingWindowState = this.slidingWindowStateHolder;
                            if (!slidingWindowState) {
                                return {
                                    indexesForReuse: [],
                                    slidingWindowIndexes: []
                                }
                            }
                            return slidingWindowState
                        }
                    }, {
                        key: "pageIndexes",
                        get: function() {
                            const {
                                pageCount: pageCount
                            } = this.props;
                            if (this.isSlidingWindowMode()) {
                                return createPageIndexes(0, pageCount, pageCount, "none").pageIndexes
                            }
                            if (this.canReuseSlidingWindow(pageCount, this.props.pageIndex)) {
                                const {
                                    slidingWindowIndexes: slidingWindowIndexes
                                } = this.slidingWindowState;
                                const delimiter = getDelimiterType(slidingWindowIndexes[0], 4, pageCount);
                                return createPageIndexesBySlidingWindowIndexes(slidingWindowIndexes, pageCount, delimiter).pageIndexes
                            }
                            return this.generatePageIndexes()
                        }
                    }, {
                        key: "pages",
                        get: function() {
                            var _this$config;
                            const {
                                pageIndex: pageIndex
                            } = this.props;
                            const createPage = index => {
                                const pagerProps = "low" === index || "high" === index ? null : {
                                    index: index,
                                    onClick: () => this.onPageClick(index),
                                    selected: pageIndex === index
                                };
                                return {
                                    key: index.toString(),
                                    pageProps: pagerProps
                                }
                            };
                            const rtlPageIndexes = null !== (_this$config = this.config) && void 0 !== _this$config && _this$config.rtlEnabled ? [...this.pageIndexes].reverse() : this.pageIndexes;
                            return rtlPageIndexes.map(index => createPage(index))
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = _objectWithoutPropertiesLoose(_this$props, _excluded2);
                            return restProps
                        }
                    }]);
                    return PagesLarge
                }(_inferno2.BaseInfernoComponent);
                exports.PagesLarge = PagesLarge;
                PagesLarge.defaultProps = PagesLargePropsType
            },
        48402:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/pager/pages/page.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.PageProps = exports.Page = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _light_button = __webpack_require__( /*! ../common/light_button */ 93961);
                var _consts = __webpack_require__( /*! ../common/consts */ 39853);
                var _combine_classes = __webpack_require__( /*! ../../../utils/combine_classes */ 86237);
                var _message = (obj = __webpack_require__( /*! ../../../../localization/message */ 28109), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _string = __webpack_require__( /*! ../../../../core/utils/string */ 68752);
                const _excluded = ["className", "index", "onClick", "selected"];

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const viewFunction = _ref => {
                    let {
                        className: className,
                        label: label,
                        props: {
                            onClick: onClick,
                            selected: selected
                        },
                        value: value
                    } = _ref;
                    return (0, _inferno.createComponentVNode)(2, _light_button.LightButton, {
                        className: className,
                        label: label,
                        onClick: onClick,
                        selected: selected,
                        children: value
                    })
                };
                exports.viewFunction = viewFunction;
                const PageProps = {
                    index: 0,
                    selected: false,
                    className: _consts.PAGER_PAGE_CLASS
                };
                exports.PageProps = PageProps;
                let Page = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(Page, _BaseInfernoComponent);

                    function Page(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        return _this
                    }
                    var _proto = Page.prototype;
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props),
                            label: this.label,
                            value: this.value,
                            className: this.className,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(Page, [{
                        key: "label",
                        get: function() {
                            return (0, _string.format)(_message.default.getFormatter("dxPager-page"), this.value)
                        }
                    }, {
                        key: "value",
                        get: function() {
                            return this.props.index + 1
                        }
                    }, {
                        key: "className",
                        get: function() {
                            const {
                                selected: selected
                            } = this.props;
                            return (0, _combine_classes.combineClasses)({
                                ["".concat(this.props.className)]: !!this.props.className,
                                [_consts.PAGER_SELECTION_CLASS]: !!selected
                            })
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return Page
                }(_inferno2.BaseInfernoComponent);
                exports.Page = Page;
                Page.defaultProps = PageProps
            },
        32854:
            /*!**********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/pager/pages/page_index_selector.js ***!
              \**********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.PageIndexSelectorProps = exports.PageIndexSelector = exports.PAGER_BUTTON_DISABLE_CLASS = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _light_button = __webpack_require__( /*! ../common/light_button */ 93961);
                var _large = __webpack_require__( /*! ./large */ 40586);
                var _small = __webpack_require__( /*! ./small */ 50570);
                var _pager_props = __webpack_require__( /*! ../common/pager_props */ 96529);
                var _config_context = __webpack_require__( /*! ../../../common/config_context */ 49697);
                var _message = (obj = __webpack_require__( /*! ../../../../localization/message */ 28109), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const _excluded = ["hasKnownLastPage", "isLargeDisplayMode", "maxPagesCount", "pageCount", "pageIndex", "pageIndexChange", "pagesCountText", "showNavigationButtons", "totalCount"];

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _assertThisInitialized(self) {
                    if (void 0 === self) {
                        throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                    }
                    return self
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                exports.PAGER_BUTTON_DISABLE_CLASS = "dx-button-disable";
                const classNames = {
                    nextEnabledClass: "".concat("dx-navigate-button", " ").concat("dx-next-button"),
                    prevEnabledClass: "".concat("dx-navigate-button", " ").concat("dx-prev-button"),
                    nextDisabledClass: "".concat("dx-button-disable", " ").concat("dx-navigate-button", " ").concat("dx-next-button"),
                    prevDisabledClass: "".concat("dx-button-disable", " ").concat("dx-navigate-button", " ").concat("dx-prev-button")
                };
                const reverseDirections = {
                    next: "prev",
                    prev: "next"
                };
                const viewFunction = _ref => {
                    let {
                        nextButtonProps: nextButtonProps,
                        pageIndexChange: pageIndexChange,
                        prevButtonProps: prevButtonProps,
                        props: {
                            isLargeDisplayMode: isLargeDisplayMode,
                            maxPagesCount: maxPagesCount,
                            pageCount: pageCount,
                            pageIndex: pageIndex,
                            pagesCountText: pagesCountText
                        },
                        renderNextButton: renderNextButton,
                        renderPrevButton: renderPrevButton
                    } = _ref;
                    return (0, _inferno.createFragment)([renderPrevButton && (0, _inferno.createComponentVNode)(2, _light_button.LightButton, {
                        label: _message.default.getFormatter("dxPager-prevPage")(),
                        className: prevButtonProps.className,
                        tabIndex: prevButtonProps.tabIndex,
                        onClick: prevButtonProps.navigate
                    }), isLargeDisplayMode && (0, _inferno.createComponentVNode)(2, _large.PagesLarge, {
                        maxPagesCount: maxPagesCount,
                        pageCount: pageCount,
                        pageIndex: pageIndex,
                        pageIndexChange: pageIndexChange
                    }), !isLargeDisplayMode && (0, _inferno.createComponentVNode)(2, _small.PagesSmall, {
                        pageCount: pageCount,
                        pageIndex: pageIndex,
                        pageIndexChange: pageIndexChange,
                        pagesCountText: pagesCountText
                    }), renderNextButton && (0, _inferno.createComponentVNode)(2, _light_button.LightButton, {
                        label: _message.default.getFormatter("dxPager-nextPage")(),
                        className: nextButtonProps.className,
                        tabIndex: nextButtonProps.tabIndex,
                        onClick: nextButtonProps.navigate
                    })], 0)
                };
                exports.viewFunction = viewFunction;
                const PageIndexSelectorProps = {
                    isLargeDisplayMode: true
                };
                exports.PageIndexSelectorProps = PageIndexSelectorProps;
                const PageIndexSelectorPropsType = Object.defineProperties({}, {
                    pageIndex: {
                        get: function() {
                            return _pager_props.InternalPagerProps.pageIndex
                        },
                        configurable: true,
                        enumerable: true
                    },
                    maxPagesCount: {
                        get: function() {
                            return _pager_props.InternalPagerProps.maxPagesCount
                        },
                        configurable: true,
                        enumerable: true
                    },
                    pageCount: {
                        get: function() {
                            return _pager_props.InternalPagerProps.pageCount
                        },
                        configurable: true,
                        enumerable: true
                    },
                    hasKnownLastPage: {
                        get: function() {
                            return _pager_props.InternalPagerProps.hasKnownLastPage
                        },
                        configurable: true,
                        enumerable: true
                    },
                    showNavigationButtons: {
                        get: function() {
                            return _pager_props.InternalPagerProps.showNavigationButtons
                        },
                        configurable: true,
                        enumerable: true
                    },
                    totalCount: {
                        get: function() {
                            return _pager_props.InternalPagerProps.totalCount
                        },
                        configurable: true,
                        enumerable: true
                    },
                    isLargeDisplayMode: {
                        get: function() {
                            return PageIndexSelectorProps.isLargeDisplayMode
                        },
                        configurable: true,
                        enumerable: true
                    }
                });
                let PageIndexSelector = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(PageIndexSelector, _BaseInfernoComponent);

                    function PageIndexSelector(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        _this.__getterCache = {};
                        _this.pageIndexChange = _this.pageIndexChange.bind(_assertThisInitialized(_this));
                        _this.getButtonProps = _this.getButtonProps.bind(_assertThisInitialized(_this));
                        _this.canNavigateToPage = _this.canNavigateToPage.bind(_assertThisInitialized(_this));
                        _this.getNextPageIndex = _this.getNextPageIndex.bind(_assertThisInitialized(_this));
                        _this.canNavigateTo = _this.canNavigateTo.bind(_assertThisInitialized(_this));
                        _this.navigateToPage = _this.navigateToPage.bind(_assertThisInitialized(_this));
                        return _this
                    }
                    var _proto = PageIndexSelector.prototype;
                    _proto.pageIndexChange = function(pageIndex) {
                        if (this.canNavigateToPage(pageIndex)) {
                            this.props.pageIndexChange(pageIndex)
                        }
                    };
                    _proto.getButtonProps = function(direction) {
                        var _this$config;
                        const rtlAwareDirection = null !== (_this$config = this.config) && void 0 !== _this$config && _this$config.rtlEnabled ? reverseDirections[direction] : direction;
                        const canNavigate = this.canNavigateTo(rtlAwareDirection);
                        const className = classNames["".concat(direction).concat(canNavigate ? "Enabled" : "Disabled", "Class")];
                        return {
                            className: className,
                            tabIndex: canNavigate ? 0 : -1,
                            navigate: () => this.navigateToPage(rtlAwareDirection)
                        }
                    };
                    _proto.canNavigateToPage = function(pageIndex) {
                        if (!this.props.hasKnownLastPage) {
                            return pageIndex >= 0
                        }
                        return pageIndex >= 0 && pageIndex <= this.props.pageCount - 1
                    };
                    _proto.getNextPageIndex = function(direction) {
                        return this.props.pageIndex + function(direction) {
                            return "next" === direction ? 1 : -1
                        }(direction)
                    };
                    _proto.canNavigateTo = function(direction) {
                        return this.canNavigateToPage(this.getNextPageIndex(direction))
                    };
                    _proto.navigateToPage = function(direction) {
                        this.pageIndexChange(this.getNextPageIndex(direction))
                    };
                    _proto.componentWillUpdate = function(nextProps, nextState, context) {
                        if (this.context[_config_context.ConfigContext.id] !== context[_config_context.ConfigContext.id] || this.props.hasKnownLastPage !== nextProps.hasKnownLastPage || this.props.pageCount !== nextProps.pageCount || this.props.pageIndex !== nextProps.pageIndex || this.props.pageIndexChange !== nextProps.pageIndexChange) {
                            this.__getterCache.prevButtonProps = void 0
                        }
                        if (this.context[_config_context.ConfigContext.id] !== context[_config_context.ConfigContext.id] || this.props.hasKnownLastPage !== nextProps.hasKnownLastPage || this.props.pageCount !== nextProps.pageCount || this.props.pageIndex !== nextProps.pageIndex || this.props.pageIndexChange !== nextProps.pageIndexChange) {
                            this.__getterCache.nextButtonProps = void 0
                        }
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props),
                            config: this.config,
                            pageIndexChange: this.pageIndexChange,
                            renderPrevButton: this.renderPrevButton,
                            renderNextButton: this.renderNextButton,
                            prevButtonProps: this.prevButtonProps,
                            nextButtonProps: this.nextButtonProps,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(PageIndexSelector, [{
                        key: "config",
                        get: function() {
                            if (this.context[_config_context.ConfigContext.id]) {
                                return this.context[_config_context.ConfigContext.id]
                            }
                            return _config_context.ConfigContext.defaultValue
                        }
                    }, {
                        key: "renderPrevButton",
                        get: function() {
                            const {
                                isLargeDisplayMode: isLargeDisplayMode,
                                showNavigationButtons: showNavigationButtons
                            } = this.props;
                            return !isLargeDisplayMode || showNavigationButtons
                        }
                    }, {
                        key: "renderNextButton",
                        get: function() {
                            return this.renderPrevButton || !this.props.hasKnownLastPage
                        }
                    }, {
                        key: "prevButtonProps",
                        get: function() {
                            if (void 0 !== this.__getterCache.prevButtonProps) {
                                return this.__getterCache.prevButtonProps
                            }
                            return this.__getterCache.prevButtonProps = (() => this.getButtonProps("prev"))()
                        }
                    }, {
                        key: "nextButtonProps",
                        get: function() {
                            if (void 0 !== this.__getterCache.nextButtonProps) {
                                return this.__getterCache.nextButtonProps
                            }
                            return this.__getterCache.nextButtonProps = (() => this.getButtonProps("next"))()
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return PageIndexSelector
                }(_inferno2.BaseInfernoComponent);
                exports.PageIndexSelector = PageIndexSelector;
                PageIndexSelector.defaultProps = PageIndexSelectorPropsType
            },
        50570:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/pager/pages/small.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.PagesSmall = exports.PagerSmallProps = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _page = __webpack_require__( /*! ./page */ 48402);
                var _info = __webpack_require__( /*! ../info */ 57495);
                var _number_box = __webpack_require__( /*! ../../editors/number_box */ 15560);
                var _message = (obj = __webpack_require__( /*! ../../../../localization/message */ 28109), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _calculate_values_fitted_width = __webpack_require__( /*! ../utils/calculate_values_fitted_width */ 7750);
                var _get_element_width = __webpack_require__( /*! ../utils/get_element_width */ 95116);
                var _pager_props = __webpack_require__( /*! ../common/pager_props */ 96529);
                const _excluded = ["inputAttr", "pageCount", "pageIndex", "pageIndexChange", "pagesCountText"];

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _assertThisInitialized(self) {
                    if (void 0 === self) {
                        throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                    }
                    return self
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const PAGER_INFO_TEXT_CLASS = "".concat(_info.PAGER_INFO_CLASS, "  dx-info-text");
                const viewFunction = _ref => {
                    let {
                        pageIndexRef: pageIndexRef,
                        pagesCountText: pagesCountText,
                        props: {
                            inputAttr: inputAttr,
                            pageCount: pageCount
                        },
                        selectLastPageIndex: selectLastPageIndex,
                        value: value,
                        valueChange: valueChange,
                        width: width
                    } = _ref;
                    return (0, _inferno.createVNode)(1, "div", "dx-light-pages", [(0, _inferno.createComponentVNode)(2, _number_box.NumberBox, {
                        className: "dx-page-index",
                        min: 1,
                        max: Math.max(pageCount, value),
                        width: width,
                        value: value,
                        valueChange: valueChange,
                        inputAttr: inputAttr
                    }), (0, _inferno.createVNode)(1, "span", PAGER_INFO_TEXT_CLASS, pagesCountText, 0), (0, _inferno.createComponentVNode)(2, _page.Page, {
                        className: "dx-pages-count",
                        selected: false,
                        index: pageCount - 1,
                        onClick: selectLastPageIndex
                    })], 4, null, null, pageIndexRef)
                };
                exports.viewFunction = viewFunction;
                const PagerSmallProps = {
                    inputAttr: Object.freeze({
                        "aria-label": _message.default.format("dxPager-ariaPageNumber")
                    })
                };
                exports.PagerSmallProps = PagerSmallProps;
                const PagerSmallPropsType = Object.defineProperties({}, {
                    pageIndex: {
                        get: function() {
                            return _pager_props.InternalPagerProps.pageIndex
                        },
                        configurable: true,
                        enumerable: true
                    },
                    pageCount: {
                        get: function() {
                            return _pager_props.InternalPagerProps.pageCount
                        },
                        configurable: true,
                        enumerable: true
                    },
                    inputAttr: {
                        get: function() {
                            return PagerSmallProps.inputAttr
                        },
                        configurable: true,
                        enumerable: true
                    }
                });
                let PagesSmall = function(_InfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(PagesSmall, _InfernoComponent);

                    function PagesSmall(props) {
                        var _this;
                        _this = _InfernoComponent.call(this, props) || this;
                        _this.pageIndexRef = (0, _inferno.createRef)();
                        _this.state = {
                            minWidth: 10
                        };
                        _this.updateWidth = _this.updateWidth.bind(_assertThisInitialized(_this));
                        _this.selectLastPageIndex = _this.selectLastPageIndex.bind(_assertThisInitialized(_this));
                        _this.valueChange = _this.valueChange.bind(_assertThisInitialized(_this));
                        return _this
                    }
                    var _proto = PagesSmall.prototype;
                    _proto.createEffects = function() {
                        return [new _inferno2.InfernoEffect(this.updateWidth, [this.state.minWidth])]
                    };
                    _proto.updateEffects = function() {
                        var _this$_effects$;
                        null === (_this$_effects$ = this._effects[0]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.state.minWidth])
                    };
                    _proto.updateWidth = function() {
                        var _this$pageIndexRef$cu;
                        const el = null === (_this$pageIndexRef$cu = this.pageIndexRef.current) || void 0 === _this$pageIndexRef$cu ? void 0 : _this$pageIndexRef$cu.querySelector(".".concat("dx-page-index"));
                        this.setState(__state_argument => ({
                            minWidth: el && (0, _get_element_width.getElementMinWidth)(el) || __state_argument.minWidth
                        }))
                    };
                    _proto.selectLastPageIndex = function() {
                        this.props.pageIndexChange(this.props.pageCount - 1)
                    };
                    _proto.valueChange = function(value) {
                        this.props.pageIndexChange(value - 1)
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props),
                            pageIndexRef: this.pageIndexRef,
                            value: this.value,
                            width: this.width,
                            pagesCountText: this.pagesCountText,
                            selectLastPageIndex: this.selectLastPageIndex,
                            valueChange: this.valueChange,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(PagesSmall, [{
                        key: "value",
                        get: function() {
                            return this.props.pageIndex + 1
                        }
                    }, {
                        key: "width",
                        get: function() {
                            const {
                                pageCount: pageCount
                            } = this.props;
                            return (0, _calculate_values_fitted_width.calculateValuesFittedWidth)(this.state.minWidth, [pageCount])
                        }
                    }, {
                        key: "pagesCountText",
                        get: function() {
                            var _this$props$pagesCoun;
                            return (null !== (_this$props$pagesCoun = this.props.pagesCountText) && void 0 !== _this$props$pagesCoun ? _this$props$pagesCoun : "") || _message.default.getFormatter("dxPager-pagesCountText")()
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return PagesSmall
                }(_inferno2.InfernoComponent);
                exports.PagesSmall = PagesSmall;
                PagesSmall.defaultProps = PagerSmallPropsType
            },
        97239:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/pager/resizable_container.js ***!
              \****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.ResizableContainerProps = exports.ResizableContainer = void 0;
                exports.calculateInfoTextVisible = calculateInfoTextVisible;
                exports.calculateLargeDisplayMode = calculateLargeDisplayMode;
                exports.viewFunction = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _resize_callbacks = (obj = __webpack_require__( /*! ../../../core/utils/resize_callbacks */ 55814), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _get_element_width = __webpack_require__( /*! ./utils/get_element_width */ 95116);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                const _excluded = ["contentTemplate", "pagerProps"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _assertThisInitialized(self) {
                    if (void 0 === self) {
                        throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                    }
                    return self
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = _ref => {
                    let {
                        contentAttributes: contentAttributes,
                        infoTextRef: infoTextRef,
                        infoTextVisible: infoTextVisible,
                        isLargeDisplayMode: isLargeDisplayMode,
                        pageSizesRef: pageSizesRef,
                        pagesRef: pagesRef,
                        parentRef: parentRef,
                        props: {
                            contentTemplate: Content
                        }
                    } = _ref;
                    return Content(_extends({
                        rootElementRef: parentRef,
                        pageSizesRef: pageSizesRef,
                        infoTextRef: infoTextRef,
                        pagesRef: pagesRef,
                        infoTextVisible: infoTextVisible,
                        isLargeDisplayMode: isLargeDisplayMode
                    }, contentAttributes))
                };
                exports.viewFunction = viewFunction;

                function calculateLargeDisplayMode(_ref2) {
                    let {
                        pageSizes: pageSizesWidth,
                        pages: pagesWidth,
                        parent: parentWidth
                    } = _ref2;
                    return parentWidth - (pageSizesWidth + pagesWidth) > 0
                }

                function calculateInfoTextVisible(_ref3) {
                    let {
                        info: infoWidth,
                        pageSizes: pageSizesWidth,
                        pages: pagesWidth,
                        parent: parentWidth
                    } = _ref3;
                    const minimalWidth = pageSizesWidth + pagesWidth + infoWidth;
                    return parentWidth - minimalWidth > 0
                }
                const ResizableContainerProps = {};
                exports.ResizableContainerProps = ResizableContainerProps;
                let ResizableContainer = function(_InfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(ResizableContainer, _InfernoComponent);

                    function ResizableContainer(props) {
                        var _this;
                        _this = _InfernoComponent.call(this, props) || this;
                        _this.parentRef = (0, _inferno.createRef)();
                        _this.pageSizesRef = (0, _inferno.createRef)();
                        _this.infoTextRef = (0, _inferno.createRef)();
                        _this.pagesRef = (0, _inferno.createRef)();
                        _this.actualIsLargeDisplayMode = true;
                        _this.actualInfoTextVisible = true;
                        _this.state = {
                            infoTextVisible: true,
                            isLargeDisplayMode: true
                        };
                        _this.subscribeToResize = _this.subscribeToResize.bind(_assertThisInitialized(_this));
                        _this.effectUpdateChildProps = _this.effectUpdateChildProps.bind(_assertThisInitialized(_this));
                        _this.updateAdaptivityProps = _this.updateAdaptivityProps.bind(_assertThisInitialized(_this));
                        return _this
                    }
                    var _proto = ResizableContainer.prototype;
                    _proto.createEffects = function() {
                        return [new _inferno2.InfernoEffect(this.subscribeToResize, [this.state.infoTextVisible, this.state.isLargeDisplayMode]), new _inferno2.InfernoEffect(this.effectUpdateChildProps, [this.props, this.state.infoTextVisible, this.state.isLargeDisplayMode, this.props.pagerProps, this.props.contentTemplate])]
                    };
                    _proto.updateEffects = function() {
                        var _this$_effects$, _this$_effects$2;
                        null === (_this$_effects$ = this._effects[0]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.state.infoTextVisible, this.state.isLargeDisplayMode]);
                        null === (_this$_effects$2 = this._effects[1]) || void 0 === _this$_effects$2 ? void 0 : _this$_effects$2.update([this.props, this.state.infoTextVisible, this.state.isLargeDisplayMode, this.props.pagerProps, this.props.contentTemplate])
                    };
                    _proto.subscribeToResize = function() {
                        const callback = () => {
                            this.parentWidth > 0 && this.updateAdaptivityProps()
                        };
                        _resize_callbacks.default.add(callback);
                        return () => {
                            _resize_callbacks.default.remove(callback)
                        }
                    };
                    _proto.effectUpdateChildProps = function() {
                        if (this.parentWidth > 0) {
                            this.updateAdaptivityProps()
                        }
                    };
                    _proto.updateAdaptivityProps = function() {
                        const currentElementsWidth = function(_ref4) {
                            let {
                                info: info,
                                pageSizes: pageSizes,
                                pages: pages,
                                parent: parent
                            } = _ref4;
                            const parentWidth = (0, _get_element_width.getElementContentWidth)(parent);
                            const pageSizesWidth = (0, _get_element_width.getElementWidth)(pageSizes);
                            const infoWidth = (0, _get_element_width.getElementWidth)(info);
                            const pagesHtmlWidth = (0, _get_element_width.getElementWidth)(pages);
                            return {
                                parent: parentWidth,
                                pageSizes: pageSizesWidth,
                                info: infoWidth + (0, _get_element_width.getElementStyle)("marginLeft", info) + (0, _get_element_width.getElementStyle)("marginRight", info),
                                pages: pagesHtmlWidth
                            }
                        }({
                            parent: this.parentRef.current,
                            pageSizes: this.pageSizesRef.current,
                            info: this.infoTextRef.current,
                            pages: this.pagesRef.current
                        });
                        if (this.actualInfoTextVisible !== this.state.infoTextVisible || this.actualIsLargeDisplayMode !== this.state.isLargeDisplayMode) {
                            return
                        }
                        const isEmpty = !(0, _type.isDefined)(this.elementsWidth);
                        if (isEmpty) {
                            this.elementsWidth = {}
                        }
                        if (isEmpty || this.state.isLargeDisplayMode) {
                            this.elementsWidth.pageSizes = currentElementsWidth.pageSizes;
                            this.elementsWidth.pages = currentElementsWidth.pages
                        }
                        if (isEmpty || this.state.infoTextVisible) {
                            this.elementsWidth.info = currentElementsWidth.info
                        }
                        this.actualIsLargeDisplayMode = calculateLargeDisplayMode(_extends({
                            parent: currentElementsWidth.parent
                        }, {
                            pageSizes: this.elementsWidth.pageSizes,
                            pages: this.elementsWidth.pages
                        }));
                        this.actualInfoTextVisible = calculateInfoTextVisible(_extends({}, currentElementsWidth, {
                            info: this.elementsWidth.info
                        }));
                        this.setState(__state_argument => ({
                            infoTextVisible: this.actualInfoTextVisible
                        }));
                        this.setState(__state_argument => ({
                            isLargeDisplayMode: this.actualIsLargeDisplayMode
                        }))
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                contentTemplate: (TemplateProp = props.contentTemplate, TemplateProp && (TemplateProp.defaultProps ? props => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, TemplateProp, _extends({}, props))) : TemplateProp))
                            }),
                            infoTextVisible: this.state.infoTextVisible,
                            isLargeDisplayMode: this.state.isLargeDisplayMode,
                            parentRef: this.parentRef,
                            pageSizesRef: this.pageSizesRef,
                            infoTextRef: this.infoTextRef,
                            pagesRef: this.pagesRef,
                            contentAttributes: this.contentAttributes,
                            parentWidth: this.parentWidth,
                            updateAdaptivityProps: this.updateAdaptivityProps,
                            restAttributes: this.restAttributes
                        });
                        var TemplateProp
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(ResizableContainer, [{
                        key: "contentAttributes",
                        get: function() {
                            const {
                                className: className,
                                displayMode: displayMode,
                                gridCompatibility: gridCompatibility,
                                hasKnownLastPage: hasKnownLastPage,
                                infoText: infoText,
                                label: label,
                                lightModeEnabled: lightModeEnabled,
                                maxPagesCount: maxPagesCount,
                                onKeyDown: onKeyDown,
                                pageCount: pageCount,
                                pageIndex: pageIndex,
                                pageIndexChange: pageIndexChange,
                                pageSize: pageSize,
                                pageSizeChange: pageSizeChange,
                                pageSizes: pageSizes,
                                pagesCountText: pagesCountText,
                                pagesNavigatorVisible: pagesNavigatorVisible,
                                rtlEnabled: rtlEnabled,
                                showInfo: showInfo,
                                showNavigationButtons: showNavigationButtons,
                                showPageSizes: showPageSizes,
                                totalCount: totalCount,
                                visible: visible
                            } = this.props.pagerProps;
                            return _extends({}, this.restAttributes, {
                                pageSize: pageSize,
                                pageIndex: pageIndex,
                                pageIndexChange: pageIndexChange,
                                pageSizeChange: pageSizeChange,
                                gridCompatibility: gridCompatibility,
                                className: className,
                                showInfo: showInfo,
                                infoText: infoText,
                                lightModeEnabled: lightModeEnabled,
                                displayMode: displayMode,
                                maxPagesCount: maxPagesCount,
                                pageCount: pageCount,
                                pagesCountText: pagesCountText,
                                visible: visible,
                                hasKnownLastPage: hasKnownLastPage,
                                pagesNavigatorVisible: pagesNavigatorVisible,
                                showPageSizes: showPageSizes,
                                pageSizes: pageSizes,
                                rtlEnabled: rtlEnabled,
                                showNavigationButtons: showNavigationButtons,
                                totalCount: totalCount,
                                onKeyDown: onKeyDown,
                                label: label
                            })
                        }
                    }, {
                        key: "parentWidth",
                        get: function() {
                            return this.parentRef.current ? (0, _get_element_width.getElementWidth)(this.parentRef.current) : 0
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return ResizableContainer
                }(_inferno2.InfernoComponent);
                exports.ResizableContainer = ResizableContainer;
                ResizableContainer.defaultProps = ResizableContainerProps
            },
        7750:
            /*!********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/pager/utils/calculate_values_fitted_width.js ***!
              \********************************************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.calculateValuesFittedWidth = function(minWidth, values) {
                    return minWidth + 10 * Math.max(...values).toString().length
                };
                exports.oneDigitWidth = void 0;
                exports.oneDigitWidth = 10
            },
        95116:
            /*!********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/pager/utils/get_element_width.js ***!
              \********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getElementContentWidth = function(element) {
                    const padding = getElementStyle("paddingLeft", element) + getElementStyle("paddingRight", element);
                    const width = getElementStyle("width", element);
                    return width - padding
                };
                exports.getElementMinWidth = function(element) {
                    return getElementStyle("minWidth", element)
                };
                exports.getElementStyle = getElementStyle;
                exports.getElementWidth = function(element) {
                    const margin = getElementStyle("marginLeft", element) + getElementStyle("marginRight", element);
                    const width = getElementStyle("width", element);
                    return margin + width
                };
                var _get_computed_style = (obj = __webpack_require__( /*! ../../../utils/get_computed_style */ 89357), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _type_conversion = __webpack_require__( /*! ../../../utils/type_conversion */ 78461);

                function getElementStyle(name, element) {
                    var _getElementComputedSt;
                    const computedStyle = null !== (_getElementComputedSt = (0, _get_computed_style.default)(element)) && void 0 !== _getElementComputedSt ? _getElementComputedSt : {};
                    return (0, _type_conversion.toNumber)(computedStyle[name])
                }
            },
        19234:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/resizable/utils.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getAreaFromObject = exports.getAreaFromElement = exports.filterOffsets = exports.borderWidthStyles = void 0;
                exports.getDragOffsets = function(area, handleEl, areaProp) {
                    const hWidth = (0, _size.getOuterWidth)(handleEl);
                    const hHeight = (0, _size.getOuterHeight)(handleEl);
                    const hOffset = (0, _size.getOffset)(handleEl);
                    const areaOffset = area.offset;
                    const isAreaWindow = (0, _type.isWindow)(areaProp);
                    const scrollOffset = {
                        scrollX: isAreaWindow ? areaProp.pageXOffset : 0,
                        scrollY: isAreaWindow ? areaProp.pageYOffset : 0
                    };
                    return {
                        maxLeftOffset: hOffset.left - areaOffset.left - scrollOffset.scrollX,
                        maxRightOffset: areaOffset.left + area.width - hOffset.left - hWidth + scrollOffset.scrollX,
                        maxTopOffset: hOffset.top - areaOffset.top - scrollOffset.scrollY,
                        maxBottomOffset: areaOffset.top + area.height - hOffset.top - hHeight + scrollOffset.scrollY
                    }
                };
                exports.getMovingSides = void 0;
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _size = __webpack_require__( /*! ../../../core/utils/size */ 58664);
                const borderWidthStyles = {
                    left: "borderLeftWidth",
                    top: "borderTopWidth",
                    right: "borderRightWidth",
                    bottom: "borderBottomWidth"
                };
                exports.borderWidthStyles = borderWidthStyles;

                function getBorderWidth(el, direction) {
                    if (!(0, _type.isWindow)(el)) {
                        const borderWidth = el.style[borderWidthStyles[direction]];
                        return parseInt(borderWidth, 10) || 0
                    }
                    return 0
                }
                const correctGeometry = function(area, mainEl) {
                    let el = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : void 0;
                    const {
                        height: height,
                        offset: offset,
                        width: width
                    } = area;
                    const {
                        left: left,
                        top: top
                    } = offset;
                    const areaBorderLeft = el ? getBorderWidth(el, "left") : 0;
                    const areaBorderTop = el ? getBorderWidth(el, "top") : 0;
                    return {
                        width: width - (0, _size.getOuterWidth)(mainEl) - (0, _size.getInnerWidth)(mainEl),
                        height: height - (0, _size.getOuterHeight)(mainEl) - (0, _size.getInnerHeight)(mainEl),
                        offset: {
                            left: left + areaBorderLeft + getBorderWidth(mainEl, "left"),
                            top: top + areaBorderTop + getBorderWidth(mainEl, "top")
                        }
                    }
                };
                exports.getAreaFromElement = (el, mainEl) => correctGeometry({
                    width: (0, _size.getInnerWidth)(el),
                    height: (0, _size.getInnerHeight)(el),
                    offset: (0, _extend.extend)({
                        top: 0,
                        left: 0
                    }, (0, _type.isWindow)(el) ? {} : (0, _size.getOffset)(el))
                }, mainEl, el);
                exports.getAreaFromObject = (_ref, mainEl) => {
                    let {
                        bottom: bottom,
                        left: left,
                        right: right,
                        top: top
                    } = _ref;
                    return correctGeometry({
                        width: right - left,
                        height: bottom - top,
                        offset: {
                            left: left,
                            top: top
                        }
                    }, mainEl)
                };
                const getMovingSides = el => {
                    const {
                        className: className
                    } = el;
                    const hasCornerTopLeftClass = className.includes("dx-resizable-handle-corner-top-left");
                    const hasCornerTopRightClass = className.includes("dx-resizable-handle-corner-top-right");
                    const hasCornerBottomLeftClass = className.includes("dx-resizable-handle-corner-bottom-left");
                    const hasCornerBottomRightClass = className.includes("dx-resizable-handle-corner-bottom-right");
                    return {
                        top: className.includes("dx-resizable-handle-top") || hasCornerTopLeftClass || hasCornerTopRightClass,
                        left: className.includes("dx-resizable-handle-left") || hasCornerTopLeftClass || hasCornerBottomLeftClass,
                        bottom: className.includes("dx-resizable-handle-bottom") || hasCornerBottomLeftClass || hasCornerBottomRightClass,
                        right: className.includes("dx-resizable-handle-right") || hasCornerTopRightClass || hasCornerBottomRightClass
                    }
                };
                exports.getMovingSides = getMovingSides;
                exports.filterOffsets = (offset, handleEl) => {
                    const sides = getMovingSides(handleEl);
                    const offsetX = !sides.left && !sides.right ? 0 : offset.x;
                    const offsetY = !sides.top && !sides.bottom ? 0 : offset.y;
                    return {
                        x: offsetX,
                        y: offsetY
                    }
                }
            },
        35905:
            /*!************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/appointment/appointment.js ***!
              \************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.AppointmentProps = exports.Appointment = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _utils = __webpack_require__( /*! ./utils */ 84154);
                var _layout = __webpack_require__( /*! ./content/layout */ 33830);
                var _widget = __webpack_require__( /*! ../../common/widget */ 73687);
                var _combine_classes = __webpack_require__( /*! ../../../utils/combine_classes */ 86237);
                var _utils2 = __webpack_require__( /*! ../resources/utils */ 43450);
                var _appointments_context = __webpack_require__( /*! ../appointments_context */ 32125);
                const _excluded = ["appointmentTemplate", "groups", "hideReducedIconTooltip", "index", "onItemClick", "onItemDoubleClick", "showReducedIconTooltip", "viewModel"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _assertThisInitialized(self) {
                    if (void 0 === self) {
                        throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                    }
                    return self
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = _ref => {
                    let {
                        classes: classes,
                        data: data,
                        dateText: dateText,
                        isReduced: isReduced,
                        onItemClick: onItemClick,
                        props: {
                            appointmentTemplate: appointmentTemplate,
                            hideReducedIconTooltip: hideReducedIconTooltip,
                            index: index,
                            showReducedIconTooltip: showReducedIconTooltip,
                            viewModel: {
                                info: {
                                    isRecurrent: isRecurrent
                                }
                            }
                        },
                        ref: ref,
                        styles: styles,
                        text: text
                    } = _ref;
                    return (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _widget.Widget, _extends({
                        focusStateEnabled: true,
                        onClick: onItemClick,
                        rootElementRef: ref,
                        style: (0, _inferno2.normalizeStyles)(styles),
                        classes: classes,
                        hint: text
                    }, {
                        role: "button",
                        "data-index": index
                    }, {
                        children: (0, _inferno.createComponentVNode)(2, _layout.AppointmentContent, {
                            text: text,
                            isReduced: isReduced,
                            dateText: dateText,
                            isRecurrent: isRecurrent,
                            index: index,
                            data: data,
                            showReducedIconTooltip: showReducedIconTooltip,
                            hideReducedIconTooltip: hideReducedIconTooltip,
                            appointmentTemplate: appointmentTemplate
                        })
                    })))
                };
                exports.viewFunction = viewFunction;
                const AppointmentProps = {
                    index: 0
                };
                exports.AppointmentProps = AppointmentProps;
                let Appointment = function(_InfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(Appointment, _InfernoComponent);

                    function Appointment(props) {
                        var _this;
                        _this = _InfernoComponent.call(this, props) || this;
                        _this.ref = (0, _inferno.createRef)();
                        _this.state = {
                            color: void 0
                        };
                        _this.updateStylesEffect = _this.updateStylesEffect.bind(_assertThisInitialized(_this));
                        _this.bindDoubleClickEffect = _this.bindDoubleClickEffect.bind(_assertThisInitialized(_this));
                        _this.onItemClick = _this.onItemClick.bind(_assertThisInitialized(_this));
                        _this.onItemDoubleClick = _this.onItemDoubleClick.bind(_assertThisInitialized(_this));
                        return _this
                    }
                    var _proto = Appointment.prototype;
                    _proto.createEffects = function() {
                        return [new _inferno2.InfernoEffect(this.updateStylesEffect, [this.props.viewModel, this.appointmentsContextValue, this.props.groups]), new _inferno2.InfernoEffect(this.bindDoubleClickEffect, [])]
                    };
                    _proto.updateEffects = function() {
                        var _this$_effects$;
                        null === (_this$_effects$ = this._effects[0]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.props.viewModel, this.appointmentsContextValue, this.props.groups])
                    };
                    _proto.updateStylesEffect = function() {
                        var _viewModel$info$group;
                        const {
                            viewModel: viewModel
                        } = this.props;
                        const groupIndex = null !== (_viewModel$info$group = viewModel.info.groupIndex) && void 0 !== _viewModel$info$group ? _viewModel$info$group : 0;
                        const {
                            appointment: appointment
                        } = viewModel;
                        (0, _utils2.getAppointmentColor)({
                            resources: this.appointmentsContextValue.resources,
                            resourceLoaderMap: this.appointmentsContextValue.resourceLoaderMap,
                            resourcesDataAccessors: this.appointmentsContextValue.dataAccessors.resources,
                            loadedResources: this.appointmentsContextValue.loadedResources
                        }, {
                            itemData: appointment,
                            groupIndex: groupIndex,
                            groups: this.props.groups
                        }).then(color => {
                            this.setState(__state_argument => ({
                                color: color
                            }))
                        }).catch(() => "")
                    };
                    _proto.bindDoubleClickEffect = function() {
                        var _this$ref$current;
                        const onDoubleClick = () => this.onItemDoubleClick();
                        null === (_this$ref$current = this.ref.current) || void 0 === _this$ref$current ? void 0 : _this$ref$current.addEventListener("dblclick", onDoubleClick);
                        return () => {
                            var _this$ref$current2;
                            null === (_this$ref$current2 = this.ref.current) || void 0 === _this$ref$current2 ? void 0 : _this$ref$current2.removeEventListener("dblclick", onDoubleClick)
                        }
                    };
                    _proto.onItemClick = function() {
                        const e = {
                            data: [this.props.viewModel],
                            target: this.ref.current,
                            index: this.props.index
                        };
                        this.props.onItemClick(e)
                    };
                    _proto.onItemDoubleClick = function() {
                        const e = {
                            data: [this.props.viewModel],
                            target: this.ref.current,
                            index: this.props.index
                        };
                        this.props.onItemDoubleClick(e)
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                appointmentTemplate: (TemplateProp = props.appointmentTemplate, TemplateProp && (TemplateProp.defaultProps ? props => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, TemplateProp, _extends({}, props))) : TemplateProp))
                            }),
                            color: this.state.color,
                            ref: this.ref,
                            appointmentsContextValue: this.appointmentsContextValue,
                            appointmentStyles: this.appointmentStyles,
                            styles: this.styles,
                            text: this.text,
                            isReduced: this.isReduced,
                            classes: this.classes,
                            dateText: this.dateText,
                            data: this.data,
                            onItemClick: this.onItemClick,
                            onItemDoubleClick: this.onItemDoubleClick,
                            restAttributes: this.restAttributes
                        });
                        var TemplateProp
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(Appointment, [{
                        key: "appointmentsContextValue",
                        get: function() {
                            if (this.context[_appointments_context.AppointmentsContext.id]) {
                                return this.context[_appointments_context.AppointmentsContext.id]
                            }
                            return _appointments_context.AppointmentsContext.defaultValue
                        }
                    }, {
                        key: "appointmentStyles",
                        get: function() {
                            return (0, _utils.getAppointmentStyles)(this.props.viewModel)
                        }
                    }, {
                        key: "styles",
                        get: function() {
                            return (0, _utils.mergeStylesWithColor)(this.state.color, this.appointmentStyles)
                        }
                    }, {
                        key: "text",
                        get: function() {
                            return this.props.viewModel.appointment.text
                        }
                    }, {
                        key: "isReduced",
                        get: function() {
                            const {
                                appointmentReduced: appointmentReduced
                            } = this.props.viewModel.info;
                            return !!appointmentReduced
                        }
                    }, {
                        key: "classes",
                        get: function() {
                            const {
                                focused: focused,
                                info: {
                                    allDay: allDay,
                                    appointmentReduced: appointmentReduced,
                                    direction: direction,
                                    isRecurrent: isRecurrent
                                }
                            } = this.props.viewModel;
                            const isVerticalDirection = "vertical" === direction;
                            return (0, _combine_classes.combineClasses)({
                                "dx-state-focused": !!focused,
                                "dx-scheduler-appointment": true,
                                "dx-scheduler-appointment-horizontal": !isVerticalDirection,
                                "dx-scheduler-appointment-vertical": isVerticalDirection,
                                "dx-scheduler-appointment-recurrence": isRecurrent,
                                "dx-scheduler-all-day-appointment": allDay,
                                "dx-scheduler-appointment-reduced": this.isReduced,
                                "dx-scheduler-appointment-head": "head" === appointmentReduced,
                                "dx-scheduler-appointment-body": "body" === appointmentReduced,
                                "dx-scheduler-appointment-tail": "tail" === appointmentReduced
                            })
                        }
                    }, {
                        key: "dateText",
                        get: function() {
                            return this.props.viewModel.info.dateText
                        }
                    }, {
                        key: "data",
                        get: function() {
                            return {
                                appointmentData: this.props.viewModel.info.appointment,
                                targetedAppointmentData: this.props.viewModel.appointment
                            }
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return Appointment
                }(_inferno2.InfernoComponent);
                exports.Appointment = Appointment;
                Appointment.defaultProps = AppointmentProps
            },
        26011:
            /*!***********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/appointment/content/details/layout.js ***!
              \***********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.AppointmentDetailsProps = exports.AppointmentDetails = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                const _excluded = ["dateText"];

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const viewFunction = _ref => {
                    let {
                        props: {
                            dateText: dateText
                        }
                    } = _ref;
                    return (0, _inferno.createVNode)(1, "div", "dx-scheduler-appointment-content-details", (0, _inferno.createVNode)(1, "div", "dx-scheduler-appointment-content-date", dateText, 0), 2)
                };
                exports.viewFunction = viewFunction;
                const AppointmentDetailsProps = {
                    dateText: ""
                };
                exports.AppointmentDetailsProps = AppointmentDetailsProps;
                let AppointmentDetails = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(AppointmentDetails, _BaseInfernoComponent);

                    function AppointmentDetails(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        return _this
                    }
                    var _proto = AppointmentDetails.prototype;
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props),
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(AppointmentDetails, [{
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return AppointmentDetails
                }(_inferno2.BaseInfernoComponent);
                exports.AppointmentDetails = AppointmentDetails;
                AppointmentDetails.defaultProps = AppointmentDetailsProps
            },
        33830:
            /*!***************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/appointment/content/layout.js ***!
              \***************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.AppointmentContentProps = exports.AppointmentContent = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _layout = __webpack_require__( /*! ./details/layout */ 26011);
                var _layout2 = __webpack_require__( /*! ./title/layout */ 69190);
                const _excluded = ["appointmentTemplate", "data", "dateText", "hideReducedIconTooltip", "index", "isRecurrent", "isReduced", "showReducedIconTooltip", "text"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _assertThisInitialized(self) {
                    if (void 0 === self) {
                        throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                    }
                    return self
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = _ref => {
                    let {
                        props: {
                            appointmentTemplate: appointmentTemplate,
                            data: data,
                            dateText: dateText,
                            index: index,
                            isRecurrent: isRecurrent,
                            isReduced: isReduced,
                            text: text
                        },
                        refReducedIcon: refReducedIcon
                    } = _ref;
                    const AppointmentTemplate = appointmentTemplate;
                    return (0, _inferno.createVNode)(1, "div", "dx-scheduler-appointment-content", appointmentTemplate ? AppointmentTemplate({
                        data: data,
                        index: index
                    }) : (0, _inferno.createFragment)([(0, _inferno.createComponentVNode)(2, _layout2.AppointmentTitle, {
                        text: text
                    }), (0, _inferno.createComponentVNode)(2, _layout.AppointmentDetails, {
                        dateText: dateText
                    }), isRecurrent && (0, _inferno.createVNode)(1, "div", "dx-scheduler-appointment-recurrence-icon dx-icon-repeat"), isReduced && (0, _inferno.createVNode)(1, "div", "dx-scheduler-appointment-reduced-icon", null, 1, null, null, refReducedIcon)], 0), 0)
                };
                exports.viewFunction = viewFunction;
                const AppointmentContentProps = {
                    text: "",
                    dateText: "",
                    isRecurrent: false,
                    isReduced: false,
                    index: 0
                };
                exports.AppointmentContentProps = AppointmentContentProps;
                let AppointmentContent = function(_InfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(AppointmentContent, _InfernoComponent);

                    function AppointmentContent(props) {
                        var _this;
                        _this = _InfernoComponent.call(this, props) || this;
                        _this.state = {};
                        _this.refReducedIcon = (0, _inferno.createRef)();
                        _this.bindHoverEffect = _this.bindHoverEffect.bind(_assertThisInitialized(_this));
                        _this.onReducedIconMouseEnter = _this.onReducedIconMouseEnter.bind(_assertThisInitialized(_this));
                        _this.onReducedIconMouseLeave = _this.onReducedIconMouseLeave.bind(_assertThisInitialized(_this));
                        return _this
                    }
                    var _proto = AppointmentContent.prototype;
                    _proto.createEffects = function() {
                        return [new _inferno2.InfernoEffect(this.bindHoverEffect, [this.props.showReducedIconTooltip, this.props.data, this.props.hideReducedIconTooltip])]
                    };
                    _proto.updateEffects = function() {
                        var _this$_effects$;
                        null === (_this$_effects$ = this._effects[0]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.props.showReducedIconTooltip, this.props.data, this.props.hideReducedIconTooltip])
                    };
                    _proto.bindHoverEffect = function() {
                        var _this$refReducedIcon$, _this$refReducedIcon$2;
                        const onMouseEnter = () => this.onReducedIconMouseEnter();
                        const onMouseLeave = () => this.onReducedIconMouseLeave();
                        null === (_this$refReducedIcon$ = this.refReducedIcon.current) || void 0 === _this$refReducedIcon$ ? void 0 : _this$refReducedIcon$.addEventListener("mouseenter", onMouseEnter);
                        null === (_this$refReducedIcon$2 = this.refReducedIcon.current) || void 0 === _this$refReducedIcon$2 ? void 0 : _this$refReducedIcon$2.addEventListener("mouseleave", onMouseLeave);
                        return () => {
                            var _this$refReducedIcon$3, _this$refReducedIcon$4;
                            null === (_this$refReducedIcon$3 = this.refReducedIcon.current) || void 0 === _this$refReducedIcon$3 ? void 0 : _this$refReducedIcon$3.removeEventListener("mouseenter", onMouseEnter);
                            null === (_this$refReducedIcon$4 = this.refReducedIcon.current) || void 0 === _this$refReducedIcon$4 ? void 0 : _this$refReducedIcon$4.removeEventListener("mouseleave", onMouseLeave)
                        }
                    };
                    _proto.onReducedIconMouseEnter = function() {
                        this.props.showReducedIconTooltip({
                            target: this.refReducedIcon.current,
                            endDate: this.props.data.appointmentData.endDate
                        })
                    };
                    _proto.onReducedIconMouseLeave = function() {
                        this.props.hideReducedIconTooltip()
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                appointmentTemplate: (TemplateProp = props.appointmentTemplate, TemplateProp && (TemplateProp.defaultProps ? props => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, TemplateProp, _extends({}, props))) : TemplateProp))
                            }),
                            refReducedIcon: this.refReducedIcon,
                            onReducedIconMouseEnter: this.onReducedIconMouseEnter,
                            onReducedIconMouseLeave: this.onReducedIconMouseLeave,
                            restAttributes: this.restAttributes
                        });
                        var TemplateProp
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(AppointmentContent, [{
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return AppointmentContent
                }(_inferno2.InfernoComponent);
                exports.AppointmentContent = AppointmentContent;
                AppointmentContent.defaultProps = AppointmentContentProps
            },
        69190:
            /*!*********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/appointment/content/title/layout.js ***!
              \*********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.AppointmentTitleProps = exports.AppointmentTitle = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                const _excluded = ["text"];

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const viewFunction = _ref => {
                    let {
                        props: {
                            text: text
                        }
                    } = _ref;
                    return (0, _inferno.createVNode)(1, "div", "dx-scheduler-appointment-title", text, 0)
                };
                exports.viewFunction = viewFunction;
                const AppointmentTitleProps = {
                    text: ""
                };
                exports.AppointmentTitleProps = AppointmentTitleProps;
                let AppointmentTitle = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(AppointmentTitle, _BaseInfernoComponent);

                    function AppointmentTitle(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        return _this
                    }
                    var _proto = AppointmentTitle.prototype;
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props),
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(AppointmentTitle, [{
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return AppointmentTitle
                }(_inferno2.BaseInfernoComponent);
                exports.AppointmentTitle = AppointmentTitle;
                AppointmentTitle.defaultProps = AppointmentTitleProps
            },
        55304:
            /*!*********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/appointment/layout.j.js ***!
              \*********************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../../core/component_registrator */ 99393));
                var _component = _interopRequireDefault(__webpack_require__( /*! ../../../component_wrapper/common/component */ 27135));
                var _layout = __webpack_require__( /*! ./layout */ 20695);

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

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let AppointmentLayout = function(_BaseComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(AppointmentLayout, _BaseComponent);

                    function AppointmentLayout() {
                        return _BaseComponent.apply(this, arguments) || this
                    }! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(AppointmentLayout, [{
                        key: "_propsInfo",
                        get: function() {
                            return {
                                twoWay: [],
                                allowNull: [],
                                elements: [],
                                templates: [],
                                props: ["isAllDay"]
                            }
                        }
                    }, {
                        key: "_viewComponent",
                        get: function() {
                            return _layout.AppointmentLayout
                        }
                    }]);
                    return AppointmentLayout
                }(_component.default);
                exports.default = AppointmentLayout;
                (0, _component_registrator.default)("dxAppointmentLayout", AppointmentLayout);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        20695:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/appointment/layout.js ***!
              \*******************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.AppointmentLayoutProps = exports.AppointmentLayout = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _appointment = __webpack_require__( /*! ./appointment */ 35905);
                var _layout = __webpack_require__( /*! ./overflow_indicator/layout */ 99367);
                var _combine_classes = __webpack_require__( /*! ../../../utils/combine_classes */ 86237);
                var _appointments_context = __webpack_require__( /*! ../appointments_context */ 32125);
                var _subscribe_to_event = __webpack_require__( /*! ../../../utils/subscribe_to_event */ 19828);
                const _excluded = ["isAllDay"];

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _assertThisInitialized(self) {
                    if (void 0 === self) {
                        throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                    }
                    return self
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const SELECTOR_appointment = ".dx-scheduler-appointment",
                    SELECTOR_allDay = "dx-scheduler-all-day-appointment",
                    SELECTOR_collector = "dx-scheduler-appointment-collector";
                const viewFunction = _ref => {
                    let {
                        appointments: appointments,
                        appointmentsContextValue: {
                            appointmentTemplate: appointmentTemplate,
                            groups: groups,
                            hideReducedIconTooltip: hideReducedIconTooltip,
                            onAppointmentClick: onAppointmentClick,
                            onAppointmentDoubleClick: onAppointmentDoubleClick,
                            overflowIndicatorTemplate: overflowIndicatorTemplate,
                            showReducedIconTooltip: showReducedIconTooltip
                        },
                        classes: classes,
                        layoutRef: layoutRef,
                        overflowIndicators: overflowIndicators
                    } = _ref;
                    return (0, _inferno.createVNode)(1, "div", classes, [appointments.map((item, index) => (0, _inferno.createComponentVNode)(2, _appointment.Appointment, {
                        viewModel: item,
                        appointmentTemplate: appointmentTemplate,
                        index: index,
                        groups: groups,
                        onItemClick: onAppointmentClick,
                        onItemDoubleClick: onAppointmentDoubleClick,
                        showReducedIconTooltip: showReducedIconTooltip,
                        hideReducedIconTooltip: hideReducedIconTooltip
                    }, item.key)), overflowIndicators.map((item, index) => (0, _inferno.createComponentVNode)(2, _layout.OverflowIndicator, {
                        viewModel: item,
                        groups: groups,
                        overflowIndicatorTemplate: overflowIndicatorTemplate,
                        "data-index": index
                    }, item.key))], 0, null, null, layoutRef)
                };
                exports.viewFunction = viewFunction;
                const AppointmentLayoutProps = {
                    isAllDay: false
                };
                exports.AppointmentLayoutProps = AppointmentLayoutProps;
                let AppointmentLayout = function(_InfernoWrapperCompon) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(AppointmentLayout, _InfernoWrapperCompon);

                    function AppointmentLayout(props) {
                        var _this;
                        _this = _InfernoWrapperCompon.call(this, props) || this;
                        _this.state = {};
                        _this.layoutRef = (0, _inferno.createRef)();
                        _this.__getterCache = {};
                        _this.pointerEventsEffect = _this.pointerEventsEffect.bind(_assertThisInitialized(_this));
                        _this.onAppointmentPointerDown = _this.onAppointmentPointerDown.bind(_assertThisInitialized(_this));
                        return _this
                    }
                    var _proto = AppointmentLayout.prototype;
                    _proto.createEffects = function() {
                        return [new _inferno2.InfernoEffect(this.pointerEventsEffect, [this.appointmentsContextValue]), (0, _inferno2.createReRenderEffect)()]
                    };
                    _proto.updateEffects = function() {
                        var _this$_effects$;
                        null === (_this$_effects$ = this._effects[0]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.appointmentsContextValue])
                    };
                    _proto.pointerEventsEffect = function() {
                        const disposePointerDown = (0, _subscribe_to_event.subscribeToDXPointerDownEvent)(this.layoutRef.current, e => this.onAppointmentPointerDown(e));
                        return () => {
                            disposePointerDown()
                        }
                    };
                    _proto.onAppointmentPointerDown = function(e) {
                        const appointmentElement = e.target.closest(SELECTOR_appointment);
                        if (appointmentElement) {
                            const {
                                index: index
                            } = appointmentElement.dataset;
                            const focusedAppointmentIndex = index ? parseInt(index, 10) : -1;
                            const isAllDay = appointmentElement.classList.contains(SELECTOR_allDay);
                            const isCompact = appointmentElement.classList.contains(SELECTOR_collector);
                            const typeMap = {
                                allDayCompact: isAllDay && isCompact,
                                allDay: isAllDay && !isCompact,
                                regularCompact: !isAllDay && isCompact,
                                regular: !isAllDay && !isCompact
                            };
                            const appointmentType = Object.entries(typeMap).filter(item => item[1])[0][0];
                            this.appointmentsContextValue.updateFocusedAppointment(appointmentType, focusedAppointmentIndex)
                        }
                    };
                    _proto.componentWillUpdate = function(nextProps, nextState, context) {
                        _InfernoWrapperCompon.prototype.componentWillUpdate.call(this);
                        if (this.props.isAllDay !== nextProps.isAllDay || this.context[_appointments_context.AppointmentsContext.id] !== context[_appointments_context.AppointmentsContext.id]) {
                            this.__getterCache.appointments = void 0
                        }
                        if (this.props.isAllDay !== nextProps.isAllDay || this.context[_appointments_context.AppointmentsContext.id] !== context[_appointments_context.AppointmentsContext.id]) {
                            this.__getterCache.overflowIndicators = void 0
                        }
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props),
                            layoutRef: this.layoutRef,
                            appointmentsContextValue: this.appointmentsContextValue,
                            classes: this.classes,
                            appointments: this.appointments,
                            overflowIndicators: this.overflowIndicators,
                            onAppointmentPointerDown: this.onAppointmentPointerDown,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(AppointmentLayout, [{
                        key: "appointmentsContextValue",
                        get: function() {
                            if (this.context[_appointments_context.AppointmentsContext.id]) {
                                return this.context[_appointments_context.AppointmentsContext.id]
                            }
                            return _appointments_context.AppointmentsContext.defaultValue
                        }
                    }, {
                        key: "classes",
                        get: function() {
                            const {
                                isAllDay: isAllDay
                            } = this.props;
                            return (0, _combine_classes.combineClasses)({
                                "dx-scheduler-scrollable-appointments": !isAllDay,
                                "dx-scheduler-all-day-appointments": isAllDay
                            })
                        }
                    }, {
                        key: "appointments",
                        get: function() {
                            if (void 0 !== this.__getterCache.appointments) {
                                return this.__getterCache.appointments
                            }
                            return this.__getterCache.appointments = (() => {
                                if (this.props.isAllDay) {
                                    return this.appointmentsContextValue.viewModel.allDay
                                }
                                return this.appointmentsContextValue.viewModel.regular
                            })()
                        }
                    }, {
                        key: "overflowIndicators",
                        get: function() {
                            if (void 0 !== this.__getterCache.overflowIndicators) {
                                return this.__getterCache.overflowIndicators
                            }
                            return this.__getterCache.overflowIndicators = (() => {
                                if (this.props.isAllDay) {
                                    return this.appointmentsContextValue.viewModel.allDayCompact
                                }
                                return this.appointmentsContextValue.viewModel.regularCompact
                            })()
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return AppointmentLayout
                }(_inferno2.InfernoWrapperComponent);
                exports.AppointmentLayout = AppointmentLayout;
                AppointmentLayout.defaultProps = AppointmentLayoutProps
            },
        99367:
            /*!**************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/appointment/overflow_indicator/layout.js ***!
              \**************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.OverflowIndicatorProps = exports.OverflowIndicator = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _combine_classes = __webpack_require__( /*! ../../../../utils/combine_classes */ 86237);
                var _button = __webpack_require__( /*! ../../../button */ 36729);
                var _utils = __webpack_require__( /*! ./utils */ 86553);
                var _message = (obj = __webpack_require__( /*! ../../../../../localization/message */ 28109), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _appointments_context = __webpack_require__( /*! ../../appointments_context */ 32125);
                var _utils2 = __webpack_require__( /*! ../utils */ 84154);
                const _excluded = ["groups", "overflowIndicatorTemplate", "viewModel"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = _ref => {
                    let {
                        classes: classes,
                        data: data,
                        props: {
                            overflowIndicatorTemplate: OverflowIndicatorTemplate
                        },
                        styles: styles,
                        text: text
                    } = _ref;
                    return (0, _inferno.createComponentVNode)(2, _button.Button, {
                        style: (0, _inferno2.normalizeStyles)(styles),
                        className: classes,
                        type: "default",
                        stylingMode: "contained",
                        children: OverflowIndicatorTemplate ? OverflowIndicatorTemplate({
                            data: data
                        }) : (0, _inferno.createVNode)(1, "span", null, text, 0)
                    })
                };
                exports.viewFunction = viewFunction;
                const OverflowIndicatorProps = {};
                exports.OverflowIndicatorProps = OverflowIndicatorProps;
                let OverflowIndicator = function(_InfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(OverflowIndicator, _InfernoComponent);

                    function OverflowIndicator(props) {
                        var _this;
                        _this = _InfernoComponent.call(this, props) || this;
                        _this.state = {
                            color: void 0
                        };
                        _this.updateStylesEffect = _this.updateStylesEffect.bind(function(self) {
                            if (void 0 === self) {
                                throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                            }
                            return self
                        }(_this));
                        return _this
                    }
                    var _proto = OverflowIndicator.prototype;
                    _proto.createEffects = function() {
                        return [new _inferno2.InfernoEffect(this.updateStylesEffect, [this.props.groups, this.props.viewModel, this.appointmentsContextValue])]
                    };
                    _proto.updateEffects = function() {
                        var _this$_effects$;
                        null === (_this$_effects$ = this._effects[0]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.props.groups, this.props.viewModel, this.appointmentsContextValue])
                    };
                    _proto.updateStylesEffect = function() {
                        const {
                            groups: groups,
                            viewModel: viewModel
                        } = this.props;
                        (0, _utils.getIndicatorColor)(this.appointmentsContextValue, viewModel, groups).then(color => {
                            this.setState(__state_argument => ({
                                color: color
                            }))
                        })
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                overflowIndicatorTemplate: (TemplateProp = props.overflowIndicatorTemplate, TemplateProp && (TemplateProp.defaultProps ? props => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, TemplateProp, _extends({}, props))) : TemplateProp))
                            }),
                            color: this.state.color,
                            appointmentsContextValue: this.appointmentsContextValue,
                            data: this.data,
                            text: this.text,
                            appointmentStyles: this.appointmentStyles,
                            styles: this.styles,
                            classes: this.classes,
                            restAttributes: this.restAttributes
                        });
                        var TemplateProp
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(OverflowIndicator, [{
                        key: "appointmentsContextValue",
                        get: function() {
                            if (this.context[_appointments_context.AppointmentsContext.id]) {
                                return this.context[_appointments_context.AppointmentsContext.id]
                            }
                            return _appointments_context.AppointmentsContext.defaultValue
                        }
                    }, {
                        key: "data",
                        get: function() {
                            return {
                                appointmentCount: this.props.viewModel.items.settings.length,
                                isCompact: this.props.viewModel.isCompact
                            }
                        }
                    }, {
                        key: "text",
                        get: function() {
                            const {
                                isCompact: isCompact
                            } = this.props.viewModel;
                            const {
                                appointmentCount: appointmentCount
                            } = this.data;
                            if (isCompact) {
                                return "".concat(appointmentCount)
                            }
                            const formatter = _message.default.getFormatter("dxScheduler-moreAppointments");
                            return formatter(appointmentCount)
                        }
                    }, {
                        key: "appointmentStyles",
                        get: function() {
                            return (0, _utils.getOverflowIndicatorStyles)(this.props.viewModel)
                        }
                    }, {
                        key: "styles",
                        get: function() {
                            return (0, _utils2.mergeStylesWithColor)(this.state.color, this.appointmentStyles)
                        }
                    }, {
                        key: "classes",
                        get: function() {
                            return (0, _combine_classes.combineClasses)({
                                "dx-scheduler-appointment-collector": true,
                                "dx-scheduler-appointment-collector-compact": this.data.isCompact
                            })
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return OverflowIndicator
                }(_inferno2.InfernoComponent);
                exports.OverflowIndicator = OverflowIndicator;
                OverflowIndicator.defaultProps = OverflowIndicatorProps
            },
        86553:
            /*!*************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/appointment/overflow_indicator/utils.js ***!
              \*************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getOverflowIndicatorStyles = exports.getOverflowIndicatorColor = exports.getIndicatorColor = void 0;
                var _utils = __webpack_require__( /*! ../../workspaces/utils */ 97205);
                var _utils2 = __webpack_require__( /*! ../../resources/utils */ 43450);
                exports.getOverflowIndicatorStyles = viewModel => {
                    const {
                        geometry: {
                            height: height,
                            left: left,
                            top: top,
                            width: width
                        }
                    } = viewModel;
                    const result = (0, _utils.addToStyles)([{
                        attr: "left",
                        value: "".concat(left, "px")
                    }, {
                        attr: "top",
                        value: "".concat(top, "px")
                    }, {
                        attr: "width",
                        value: "".concat(width, "px")
                    }, {
                        attr: "height",
                        value: "".concat(height, "px")
                    }, {
                        attr: "boxShadow",
                        value: "inset ".concat(width, "px 0 0 0 rgba(0, 0, 0, 0.3)")
                    }]);
                    return result
                };
                exports.getOverflowIndicatorColor = (color, colors) => !colors.length || 0 === colors.filter(item => item !== color).length ? color : void 0;
                exports.getIndicatorColor = (appointmentContext, viewModel, groups) => {
                    var _viewModel$groupIndex;
                    const groupIndex = null !== (_viewModel$groupIndex = viewModel.groupIndex) && void 0 !== _viewModel$groupIndex ? _viewModel$groupIndex : 0;
                    const {
                        appointment: appointment
                    } = viewModel.items.settings[0];
                    return (0, _utils2.getAppointmentColor)({
                        resources: appointmentContext.resources,
                        resourceLoaderMap: appointmentContext.resourceLoaderMap,
                        resourcesDataAccessors: appointmentContext.dataAccessors.resources,
                        loadedResources: appointmentContext.loadedResources
                    }, {
                        itemData: appointment,
                        groupIndex: groupIndex,
                        groups: groups
                    })
                }
            },
        84154:
            /*!******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/appointment/utils.js ***!
              \******************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.mergeStylesWithColor = exports.getReducedIconTooltipText = exports.getAppointmentStyles = exports.getAppointmentKey = void 0;
                var _utils = __webpack_require__( /*! ../workspaces/utils */ 97205);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/message */ 28109));
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/date */ 91500));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                exports.getAppointmentStyles = viewModel => {
                    const {
                        geometry: {
                            height: height,
                            left: left,
                            top: top,
                            width: width
                        }
                    } = viewModel;
                    return (0, _utils.addToStyles)([{
                        attr: "height",
                        value: "".concat(height || 50, "px")
                    }, {
                        attr: "width",
                        value: "".concat(width || 50, "px")
                    }, {
                        attr: "top",
                        value: "".concat(top, "px")
                    }, {
                        attr: "left",
                        value: "".concat(left, "px")
                    }])
                };
                exports.getAppointmentKey = geometry => {
                    const {
                        height: height,
                        left: left,
                        top: top,
                        width: width
                    } = geometry;
                    return "".concat(left, "-").concat(top, "-").concat(width, "-").concat(height)
                };
                exports.getReducedIconTooltipText = endDate => {
                    const tooltipLabel = _message.default.format("dxScheduler-editorLabelEndDate");
                    if (!endDate) {
                        return tooltipLabel
                    }
                    const date = new Date(endDate);
                    const monthAndDay = _date.default.format(date, "monthAndDay");
                    const year = _date.default.format(date, "year");
                    return "".concat(tooltipLabel, ": ").concat(monthAndDay, ", ").concat(year)
                };
                exports.mergeStylesWithColor = (color, styles) => !color ? styles : (0, _utils.addToStyles)([{
                    attr: "backgroundColor",
                    value: color
                }], styles)
            },
        96801:
            /*!********************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/appointment/utils/getAppointmentTakesAllDay.js ***!
              \********************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getAppointmentTakesAllDay = void 0;
                var _type = __webpack_require__( /*! ../../../../../core/utils/type */ 35922);
                var _date = (obj = __webpack_require__( /*! ../../../../../core/utils/date */ 91198), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const toMs = _date.default.dateToMilliseconds;
                exports.getAppointmentTakesAllDay = (appointmentAdapter, allDayPanelMode) => {
                    const {
                        allDay: allDay,
                        endDate: endDate,
                        startDate: startDate
                    } = appointmentAdapter;
                    switch (allDayPanelMode) {
                        case "hidden":
                            return false;
                        case "allDay":
                            return allDay;
                        case "all":
                        default:
                            if (allDay) {
                                return true
                            }
                            if (!(0, _type.isDefined)(endDate)) {
                                return false
                            }
                            return ((startDate, endDate) => Math.floor((endDate.getTime() - startDate.getTime()) / toMs("hour")))(startDate, endDate) >= 24
                    }
                }
            },
        51113:
            /*!***********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/appointment_edit_form/popup_config.js ***!
              \***********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.isPopupFullScreenNeeded = exports.getPopupToolbarItems = exports.getPopupSize = exports.getMaxWidth = exports.defaultAnimation = exports.POPUP_WIDTH = void 0;
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../../localization/message */ 28109));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../../core/devices */ 20530));
                var _size = __webpack_require__( /*! ../../../../core/utils/size */ 58664);
                var _window = __webpack_require__( /*! ../../../../core/utils/window */ 58201);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const POPUP_WIDTH = {
                    DEFAULT: 485,
                    RECURRENCE: 970,
                    FULLSCREEN: 1e3,
                    MOBILE: {
                        DEFAULT: 350,
                        FULLSCREEN: 500
                    }
                };
                exports.POPUP_WIDTH = POPUP_WIDTH;
                exports.defaultAnimation = {
                    show: {
                        type: "pop",
                        duration: 300,
                        from: {
                            scale: .55
                        }
                    },
                    hide: {
                        type: "pop",
                        duration: 300,
                        to: {
                            opacity: 0,
                            scale: .55
                        },
                        from: {
                            opacity: 1,
                            scale: 1
                        }
                    }
                };
                const isMobile = () => "desktop" !== _devices.default.current().deviceType;
                const TOOLBAR_LOCATION_AFTER = "after",
                    TOOLBAR_LOCATION_BEFORE = "before";
                exports.getPopupToolbarItems = (allowUpdating, doneClick) => {
                    const result = [];
                    const buttonsConfig = {
                        doneButton: {
                            shortcut: "done",
                            options: {
                                text: _message.default.format("Done")
                            },
                            location: TOOLBAR_LOCATION_AFTER
                        },
                        cancelButton: {
                            shortcut: "cancel",
                            location: "ios" === _devices.default.current().platform ? TOOLBAR_LOCATION_BEFORE : TOOLBAR_LOCATION_AFTER
                        }
                    };
                    if (allowUpdating) {
                        result.push(_extends({}, buttonsConfig.doneButton, {
                            onClick: doneClick
                        }))
                    }
                    result.push(buttonsConfig.cancelButton);
                    return result
                };
                const isPopupFullScreenNeeded = () => {
                    const window = (0, _window.getWindow)();
                    const width = window && (0, _size.getWidth)(window);
                    if (width) {
                        return isMobile() ? width < POPUP_WIDTH.MOBILE.FULLSCREEN : width < POPUP_WIDTH.FULLSCREEN
                    }
                    return false
                };
                exports.isPopupFullScreenNeeded = isPopupFullScreenNeeded;
                const getMaxWidth = isRecurrence => {
                    if (isMobile()) {
                        return POPUP_WIDTH.MOBILE.DEFAULT
                    }
                    return isRecurrence ? POPUP_WIDTH.RECURRENCE : POPUP_WIDTH.DEFAULT
                };
                exports.getMaxWidth = getMaxWidth;
                exports.getPopupSize = isRecurrence => ({
                    fullScreen: isPopupFullScreenNeeded(),
                    maxWidth: getMaxWidth(isRecurrence)
                })
            },
        32125:
            /*!*********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/appointments_context.js ***!
              \*********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.AppointmentsContext = void 0;
                var _inferno = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                const AppointmentsContext = (0, _inferno.createContext)(void 0);
                exports.AppointmentsContext = AppointmentsContext
            },
        4799:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/consts.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.VERTICAL_GROUP_ORIENTATION = exports.HORIZONTAL_GROUP_ORIENTATION = void 0;
                exports.VERTICAL_GROUP_ORIENTATION = "vertical";
                exports.HORIZONTAL_GROUP_ORIENTATION = "horizontal"
            },
        75837:
            /*!*****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/model/untyped_getCurrentView.js ***!
              \*****************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.renovationGetCurrentView = void 0;
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                const VIEW_TYPES = ["day", "week", "workWeek", "month", "timelineDay", "timelineWeek", "timelineWorkWeek", "timelineMonth", "agenda"];
                exports.renovationGetCurrentView = (currentView, views) => {
                    let currentViewProps = views.find(view => {
                        const names = (0, _type.isObject)(view) ? [view.name, view.type] : [view];
                        if (names.includes(currentView)) {
                            return true
                        }
                        return false
                    });
                    if (void 0 === currentViewProps) {
                        if (VIEW_TYPES.includes(currentView)) {
                            currentViewProps = currentView
                        } else {
                            [currentViewProps] = views
                        }
                    }
                    return currentViewProps
                }
            },
        27569:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/model/utils.js ***!
              \************************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.getAppointmentRenderingStrategyName = void 0;
                exports.getAppointmentRenderingStrategyName = viewType => {
                    const {
                        renderingStrategy: renderingStrategy
                    } = {
                        day: {
                            renderingStrategy: "vertical"
                        },
                        week: {
                            renderingStrategy: "week"
                        },
                        workWeek: {
                            renderingStrategy: "week"
                        },
                        month: {
                            renderingStrategy: "horizontalMonth"
                        },
                        timelineDay: {
                            renderingStrategy: "horizontal"
                        },
                        timelineWeek: {
                            renderingStrategy: "horizontal"
                        },
                        timelineWorkWeek: {
                            renderingStrategy: "horizontal"
                        },
                        timelineMonth: {
                            renderingStrategy: "horizontalMonthLine"
                        },
                        agenda: {
                            renderingStrategy: "agenda"
                        }
                    } [viewType];
                    return renderingStrategy
                }
            },
        31486:
            /*!***************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/resources/hasResourceValue.js ***!
              \***************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.hasResourceValue = void 0;
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                exports.hasResourceValue = (resourceValues, itemValue) => (0, _type.isDefined)(resourceValues.find(value => (0, _common.equalByValue)(value, itemValue)))
            },
        43450:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/resources/utils.js ***!
              \****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getAppointmentColor = void 0;
                var _m_utils = __webpack_require__( /*! ../../../../__internal/scheduler/resources/m_utils */ 31359);

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                exports.getAppointmentColor = (resourceConfig, appointmentConfig) => (0, _m_utils.getAppointmentColor)(_extends({}, resourceConfig, {
                    dataAccessors: resourceConfig.resourcesDataAccessors
                }), appointmentConfig)
            },
        92198:
            /*!********************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/timeZoneCalculator/createTimeZoneCalculator.js ***!
              \********************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.createTimeZoneCalculator = void 0;
                var _utils = __webpack_require__( /*! ./utils */ 63660);
                var _m_utils_time_zone = (obj = __webpack_require__( /*! ../../../../__internal/scheduler/m_utils_time_zone */ 57880), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                exports.createTimeZoneCalculator = currentTimeZone => new _utils.TimeZoneCalculator({
                    getClientOffset: date => _m_utils_time_zone.default.getClientTimezoneOffset(date),
                    tryGetCommonOffset: date => _m_utils_time_zone.default.calculateTimezoneByValue(currentTimeZone, date),
                    tryGetAppointmentOffset: (date, appointmentTimezone) => _m_utils_time_zone.default.calculateTimezoneByValue(appointmentTimezone, date)
                })
            },
        75296:
            /*!*************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/timeZoneCalculator/types.js ***!
              \*************************************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.PathTimeZoneConversion = void 0;
                var PathTimeZoneConversion;
                exports.PathTimeZoneConversion = PathTimeZoneConversion;
                ! function(PathTimeZoneConversion) {
                    PathTimeZoneConversion.fromSourceToAppointment = "toAppointment";
                    PathTimeZoneConversion.fromAppointmentToSource = "fromAppointment";
                    PathTimeZoneConversion.fromSourceToGrid = "toGrid";
                    PathTimeZoneConversion.fromGridToSource = "fromGrid"
                }(PathTimeZoneConversion || (exports.PathTimeZoneConversion = PathTimeZoneConversion = {}))
            },
        63660:
            /*!*************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/timeZoneCalculator/utils.js ***!
              \*************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.TimeZoneCalculator = void 0;
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _date = (obj = __webpack_require__( /*! ../../../../core/utils/date */ 91198), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _types = __webpack_require__( /*! ./types */ 75296);
                let TimeZoneCalculator = function() {
                    function TimeZoneCalculator(options) {
                        this.options = options
                    }
                    var _proto = TimeZoneCalculator.prototype;
                    _proto.createDate = function(sourceDate, info) {
                        const date = new Date(sourceDate);
                        switch (info.path) {
                            case _types.PathTimeZoneConversion.fromSourceToAppointment:
                                return this.getConvertedDate(date, info.appointmentTimeZone, true, false);
                            case _types.PathTimeZoneConversion.fromAppointmentToSource:
                                return this.getConvertedDate(date, info.appointmentTimeZone, true, true);
                            case _types.PathTimeZoneConversion.fromSourceToGrid:
                                return this.getConvertedDate(date, info.appointmentTimeZone, false, false);
                            case _types.PathTimeZoneConversion.fromGridToSource:
                                return this.getConvertedDate(date, info.appointmentTimeZone, false, true);
                            default:
                                throw new Error("not specified pathTimeZoneConversion")
                        }
                    };
                    _proto.getOffsets = function(date, appointmentTimezone) {
                        const clientOffset = -this.getClientOffset(date) / _date.default.dateToMilliseconds("hour");
                        const commonOffset = this.getCommonOffset(date);
                        const appointmentOffset = this.getAppointmentOffset(date, appointmentTimezone);
                        return {
                            client: clientOffset,
                            common: !(0, _type.isDefined)(commonOffset) ? clientOffset : commonOffset,
                            appointment: "number" !== typeof appointmentOffset ? clientOffset : appointmentOffset
                        }
                    };
                    _proto.getConvertedDateByOffsets = function(date, clientOffset, targetOffset, isBack) {
                        const direction = isBack ? -1 : 1;
                        const resultDate = new Date(date);
                        resultDate.setMinutes(resultDate.getMinutes() - direction * (60 * clientOffset));
                        resultDate.setMinutes(resultDate.getMinutes() + direction * (60 * targetOffset));
                        return new Date(resultDate)
                    };
                    _proto.getOriginStartDateOffsetInMs = function(date, timezone, isUTCDate) {
                        const offsetInHours = this.getOffsetInHours(date, timezone, isUTCDate);
                        return 36e5 * offsetInHours
                    };
                    _proto.getOffsetInHours = function(date, timezone, isUTCDate) {
                        const {
                            appointment: appointment,
                            client: client,
                            common: common
                        } = this.getOffsets(date, timezone);
                        if (!!timezone && isUTCDate) {
                            return appointment - client
                        }
                        if (!!timezone && !isUTCDate) {
                            return appointment - common
                        }
                        if (!timezone && isUTCDate) {
                            return common - client
                        }
                        return 0
                    };
                    _proto.getClientOffset = function(date) {
                        return this.options.getClientOffset(date)
                    };
                    _proto.getCommonOffset = function(date) {
                        return this.options.tryGetCommonOffset(date)
                    };
                    _proto.getAppointmentOffset = function(date, appointmentTimezone) {
                        return this.options.tryGetAppointmentOffset(date, appointmentTimezone)
                    };
                    _proto.getConvertedDate = function(date, appointmentTimezone, useAppointmentTimeZone, isBack) {
                        const newDate = new Date(date.getTime());
                        const offsets = this.getOffsets(newDate, appointmentTimezone);
                        if (useAppointmentTimeZone && !!appointmentTimezone) {
                            return this.getConvertedDateByOffsets(date, offsets.client, offsets.appointment, isBack)
                        }
                        return this.getConvertedDateByOffsets(date, offsets.client, offsets.common, isBack)
                    };
                    return TimeZoneCalculator
                }();
                exports.TimeZoneCalculator = TimeZoneCalculator
            },
        46858:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/utils/data.js ***!
              \***********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.resolveDataItems = exports.getPreparedDataItems = void 0;
                var _m_utils = __webpack_require__( /*! ../../../../__internal/scheduler/appointments/data_provider/m_utils */ 55523);
                var _m_appointment_adapter = __webpack_require__( /*! ../../../../__internal/scheduler/m_appointment_adapter */ 72734);
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                exports.getPreparedDataItems = (dataItems, dataAccessors, cellDurationInMinutes, timeZoneCalculator) => {
                    const result = [];
                    null === dataItems || void 0 === dataItems ? void 0 : dataItems.forEach(rawAppointment => {
                        var _recurrenceRule$match;
                        const startDate = new Date(dataAccessors.getter.startDate(rawAppointment));
                        const endDate = new Date(dataAccessors.getter.endDate(rawAppointment));
                        (0, _m_utils.replaceWrongEndDate)(rawAppointment, startDate, endDate, cellDurationInMinutes, dataAccessors);
                        const adapter = (0, _m_appointment_adapter.createAppointmentAdapter)(rawAppointment, dataAccessors, timeZoneCalculator);
                        const comparableStartDate = adapter.startDate && adapter.calculateStartDate("toGrid");
                        const comparableEndDate = adapter.endDate && adapter.calculateEndDate("toGrid");
                        const regex = new RegExp("freq", "gi");
                        const recurrenceRule = adapter.recurrenceRule;
                        const hasRecurrenceRule = !!(null !== recurrenceRule && void 0 !== recurrenceRule && null !== (_recurrenceRule$match = recurrenceRule.match(regex)) && void 0 !== _recurrenceRule$match && _recurrenceRule$match.length);
                        const visible = (0, _type.isDefined)(rawAppointment.visible) ? !!rawAppointment.visible : true;
                        if (comparableStartDate && comparableEndDate) {
                            result.push({
                                allDay: !!adapter.allDay,
                                startDate: comparableStartDate,
                                startDateTimeZone: rawAppointment.startDateTimeZone,
                                endDate: comparableEndDate,
                                endDateTimeZone: rawAppointment.endDateTimeZone,
                                recurrenceRule: adapter.recurrenceRule,
                                recurrenceException: adapter.recurrenceException,
                                hasRecurrenceRule: hasRecurrenceRule,
                                visible: visible,
                                rawAppointment: rawAppointment
                            })
                        }
                    });
                    return result
                };
                exports.resolveDataItems = options => Array.isArray(options) ? options : options.data
            },
        97601:
            /*!************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/utils/filtering/getDatesWithoutTime.js ***!
              \************************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _date = (obj = __webpack_require__( /*! ../../../../../core/utils/date */ 91198), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = (min, max) => {
                    const newMin = _date.default.trimTime(min);
                    const newMax = _date.default.trimTime(max);
                    newMax.setDate(newMax.getDate() + 1);
                    return [newMin, newMax]
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        17200:
            /*!***********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/utils/filtering/remote.js ***!
              \***********************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _common = __webpack_require__( /*! ../../../../../core/utils/common */ 20576);
                var _extend = __webpack_require__( /*! ../../../../../core/utils/extend */ 13306);
                var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../../../../core/utils/date_serialization */ 69434));
                var _type = __webpack_require__( /*! ../../../../../core/utils/type */ 35922);
                var _getDatesWithoutTime = _interopRequireDefault(__webpack_require__( /*! ./getDatesWithoutTime */ 97601));

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

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }
                const FilterPosition_dateFilter = 0,
                    FilterPosition_userFilter = 1;
                let RemoteFilterCombiner = function() {
                    function RemoteFilterCombiner(options) {
                        this.options = options
                    }
                    var _proto = RemoteFilterCombiner.prototype;
                    _proto.makeDateFilter = function(min, max) {
                        const {
                            endDateExpr: endDateExpr,
                            recurrenceRuleExpr: recurrenceRuleExpr,
                            startDateExpr: startDateExpr
                        } = this.dataAccessors.expr;
                        const dateFilter = [
                            [
                                [endDateExpr, ">=", min],
                                [startDateExpr, "<", max]
                            ], "or", [recurrenceRuleExpr, "startswith", "freq"], "or", [
                                [endDateExpr, min],
                                [startDateExpr, min]
                            ]
                        ];
                        if (!recurrenceRuleExpr) {
                            dateFilter.splice(1, 2)
                        }
                        return dateFilter
                    };
                    _proto.combineFilters = function(dateFilter, userFilter) {
                        const combinedFilter = [];
                        dateFilter && combinedFilter.push(dateFilter);
                        userFilter && combinedFilter.push(userFilter);
                        return this.serializeRemoteFilter(combinedFilter)
                    };
                    _proto.serializeRemoteFilter = function(combinedFilter) {
                        if (!Array.isArray(combinedFilter)) {
                            return combinedFilter
                        }
                        const {
                            endDateExpr: endDateExpr,
                            startDateExpr: startDateExpr
                        } = this.dataAccessors.expr;
                        const filter = (0, _extend.extend)([], combinedFilter);
                        if ((0, _type.isString)(filter[0])) {
                            if (this.forceIsoDateParsing && filter.length > 1) {
                                if (filter[0] === startDateExpr || filter[0] === endDateExpr) {
                                    const lastFilterValue = filter[filter.length - 1];
                                    filter[filter.length - 1] = _date_serialization.default.serializeDate(new Date(lastFilterValue), this.dateSerializationFormat)
                                }
                            }
                        }
                        for (let i = 0; i < filter.length; i += 1) {
                            filter[i] = this.serializeRemoteFilter(filter[i])
                        }
                        return filter
                    };
                    _proto.getUserFilter = function(dateFilter) {
                        if (!this.dataSourceFilter || (0, _common.equalByValue)(this.dataSourceFilter, dateFilter)) {
                            return
                        }
                        const containsDateFilter = this.dataSourceFilter.length > 0 && (0, _common.equalByValue)(this.dataSourceFilter[FilterPosition_dateFilter], dateFilter);
                        const userFilter = containsDateFilter ? this.dataSourceFilter[FilterPosition_userFilter] : this.dataSourceFilter;
                        return userFilter
                    };
                    _proto.combine = function(min, max) {
                        const [trimMin, trimMax] = (0, _getDatesWithoutTime.default)(min, max);
                        const dateFilter = this.makeDateFilter(trimMin, trimMax);
                        const userFilter = this.getUserFilter(dateFilter);
                        const combinedFilter = this.combineFilters(dateFilter, userFilter);
                        return combinedFilter
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(RemoteFilterCombiner, [{
                        key: "dataAccessors",
                        get: function() {
                            return this.options.dataAccessors
                        }
                    }, {
                        key: "dataSourceFilter",
                        get: function() {
                            return this.options.dataSourceFilter
                        }
                    }, {
                        key: "dateSerializationFormat",
                        get: function() {
                            return this.options.dateSerializationFormat
                        }
                    }, {
                        key: "forceIsoDateParsing",
                        get: function() {
                            return (0, _type.isDefined)(this.options.forceIsoDateParsing) ? this.options.forceIsoDateParsing : true
                        }
                    }]);
                    return RemoteFilterCombiner
                }();
                var _default = options => new RemoteFilterCombiner(options).combine(options.min, options.max);
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        74951:
            /*!***************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/utils/recurrence/excludeFromRecurrence.js ***!
              \***************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.excludeFromRecurrence = void 0;
                var _m_appointment_adapter = __webpack_require__( /*! ../../../../../__internal/scheduler/m_appointment_adapter */ 72734);
                var _date_serialization = (obj = __webpack_require__( /*! ../../../../../core/utils/date_serialization */ 69434), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const UTC_FULL_DATE_FORMAT = "".concat("yyyyMMddTHHmmss", "Z");
                const createRecurrenceException = (appointmentAdapter, exceptionDate) => {
                    const result = [];
                    if (appointmentAdapter.recurrenceException) {
                        result.push(appointmentAdapter.recurrenceException)
                    }
                    result.push(((date, startDate, isAllDay) => {
                        if (isAllDay) {
                            date.setHours(startDate.getHours(), startDate.getMinutes(), startDate.getSeconds(), startDate.getMilliseconds())
                        }
                        return _date_serialization.default.serializeDate(date, UTC_FULL_DATE_FORMAT)
                    })(exceptionDate, appointmentAdapter.startDate, appointmentAdapter.allDay));
                    return result.join()
                };
                exports.excludeFromRecurrence = (appointment, exceptionDate, dataAccessors, timeZoneCalculator) => {
                    const appointmentAdapter = (0, _m_appointment_adapter.createAppointmentAdapter)(_extends({}, appointment), dataAccessors, timeZoneCalculator);
                    appointmentAdapter.recurrenceException = createRecurrenceException(appointmentAdapter, exceptionDate);
                    return appointmentAdapter
                }
            },
        86303:
            /*!**************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/utils/semaphore/semaphore.js ***!
              \**************************************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.Semaphore = void 0;
                let Semaphore = function() {
                    function Semaphore() {
                        this.counter = 0
                    }
                    var _proto = Semaphore.prototype;
                    _proto.isFree = function() {
                        return 0 === this.counter
                    };
                    _proto.take = function() {
                        this.counter += 1
                    };
                    _proto.release = function() {
                        this.counter -= 1;
                        if (this.counter < 0) {
                            this.counter = 0
                        }
                    };
                    return Semaphore
                }();
                exports.Semaphore = Semaphore
            },
        37009:
            /*!*****************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/view_model/appointments/utils/getSkippedHoursInRange.js ***!
              \*****************************************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _date = (obj = __webpack_require__( /*! ../../../../../../core/utils/date */ 91198), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = (startDate, endDate, viewDataProvider) => {
                    const msInHour = _date.default.dateToMilliseconds("hour");
                    const startTime = _date.default.trimTime(startDate).getTime();
                    const endTime = _date.default.setToDayEnd(new Date(endDate.getTime() - 1)).getTime();
                    const allDayIntervalDuration = 24 * msInHour;
                    let excludedHours = 0;
                    for (let time = startTime; time < endTime; time += allDayIntervalDuration) {
                        const checkDate = new Date(time);
                        if (viewDataProvider.isSkippedDate(checkDate)) {
                            excludedHours += 24
                        }
                    }
                    return excludedHours
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        34854:
            /*!*****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/view_model/group_panel/utils.js ***!
              \*****************************************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.getGroupPanelData = void 0;

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                exports.getGroupPanelData = (groups, columnCountPerGroup, groupByDate, baseColSpan) => {
                    let repeatCount = 1;
                    let groupPanelItems = groups.map(group => {
                        const result = [];
                        const {
                            data: data,
                            items: items,
                            name: resourceName
                        } = group;
                        for (let iterator = 0; iterator < repeatCount; iterator += 1) {
                            result.push(...items.map((_ref, index) => {
                                let {
                                    color: color,
                                    id: id,
                                    text: text
                                } = _ref;
                                return {
                                    id: id,
                                    text: text,
                                    color: color,
                                    key: "".concat(iterator, "_").concat(resourceName, "_").concat(id),
                                    resourceName: resourceName,
                                    data: null === data || void 0 === data ? void 0 : data[index]
                                }
                            }))
                        }
                        repeatCount *= items.length;
                        return result
                    });
                    if (groupByDate) {
                        groupPanelItems = ((groupRenderItems, columnCountPerGroup) => [...new Array(columnCountPerGroup)].reduce((currentGroupItems, _, index) => groupRenderItems.map((groupsRow, rowIndex) => {
                            const currentRow = currentGroupItems[rowIndex] || [];
                            return [...currentRow, ...groupsRow.map((item, columnIndex) => _extends({}, item, {
                                key: "".concat(item.key, "_group_by_date_").concat(index),
                                isFirstGroupCell: 0 === columnIndex,
                                isLastGroupCell: columnIndex === groupsRow.length - 1
                            }))]
                        }), []))(groupPanelItems, columnCountPerGroup)
                    }
                    return {
                        groupPanelItems: groupPanelItems,
                        baseColSpan: baseColSpan
                    }
                }
            },
        89206:
            /*!**************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/view_model/to_test/views/utils/agenda.js ***!
              \**************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.calculateStartViewDate = void 0;
                var _base = __webpack_require__( /*! ./base */ 45985);
                exports.calculateStartViewDate = (currentDate, startDayHour) => {
                    const validCurrentDate = new Date(currentDate);
                    return (0, _base.setOptionHour)(validCurrentDate, startDayHour)
                }
            },
        45985:
            /*!************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/view_model/to_test/views/utils/base.js ***!
              \************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.setOptionHour = exports.isTimelineView = exports.isHorizontalView = exports.isDateInRange = exports.isDateAndTimeView = exports.getViewStartByOptions = exports.getVerticalGroupCountClass = exports.getValidCellDateForLocalTimeFormat = exports.getTotalRowCountByCompleteData = exports.getTotalCellCountByCompleteData = exports.getToday = exports.getStartViewDateWithoutDST = exports.getStartViewDateTimeOffset = exports.getHorizontalGroupCount = exports.getHeaderCellText = exports.getDisplayedRowCount = exports.getDisplayedCellCount = exports.getCellDuration = exports.getCalculatedFirstDayOfWeek = exports.formatWeekdayAndDay = exports.formatWeekday = exports.calculateViewStartDate = exports.calculateIsGroupedAllDayPanel = exports.calculateDayDuration = exports.calculateCellIndex = void 0;
                var _date = __webpack_require__( /*! ../../../../../../../__internal/core/utils/date */ 24321);
                var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../../../../../../core/utils/date */ 91198));
                var _type = __webpack_require__( /*! ../../../../../../../core/utils/type */ 35922);
                var _date3 = _interopRequireDefault(__webpack_require__( /*! ../../../../../../../localization/date */ 91500));
                var _m_utils_time_zone = _interopRequireDefault(__webpack_require__( /*! ../../../../../../../__internal/scheduler/m_utils_time_zone */ 57880));
                var _m_classes = __webpack_require__( /*! ../../../../../../../__internal/scheduler/m_classes */ 43600);
                var _m_constants = __webpack_require__( /*! ../../../../../../../__internal/scheduler/m_constants */ 6324);
                var _m_utils = __webpack_require__( /*! ../../../../../../../__internal/scheduler/resources/m_utils */ 31359);
                var _utils = __webpack_require__( /*! ../../../../workspaces/utils */ 97205);
                var _const = __webpack_require__( /*! ./const */ 67786);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const isDateInRange = (date, startDate, endDate, diff) => diff > 0 ? _date2.default.dateInRange(date, startDate, new Date(endDate.getTime() - 1)) : _date2.default.dateInRange(date, endDate, startDate, "date");
                exports.isDateInRange = isDateInRange;
                exports.setOptionHour = (date, optionHour) => {
                    const nextDate = new Date(date);
                    if (!(0, _type.isDefined)(optionHour)) {
                        return nextDate
                    }
                    nextDate.setHours(optionHour, optionHour % 1 * 60, 0, 0);
                    return nextDate
                };
                exports.getViewStartByOptions = (startDate, currentDate, intervalDuration, startViewDate) => {
                    if (!startDate) {
                        return new Date(currentDate)
                    }
                    let currentStartDate = _date2.default.trimTime(startViewDate);
                    const diff = currentStartDate.getTime() <= currentDate.getTime() ? 1 : -1;
                    let endDate = new Date(currentStartDate.getTime() + intervalDuration * diff);
                    while (!isDateInRange(currentDate, currentStartDate, endDate, diff)) {
                        currentStartDate = endDate;
                        endDate = new Date(currentStartDate.getTime() + intervalDuration * diff)
                    }
                    return diff > 0 ? currentStartDate : endDate
                };
                exports.getCalculatedFirstDayOfWeek = firstDayOfWeekOption => (0, _type.isDefined)(firstDayOfWeekOption) ? firstDayOfWeekOption : _date3.default.firstDayOfWeekIndex();
                exports.calculateViewStartDate = startDateOption => startDateOption;
                exports.calculateCellIndex = (rowIndex, columnIndex, rowCount) => columnIndex * rowCount + rowIndex;
                exports.getStartViewDateWithoutDST = (startViewDate, startDayHour) => {
                    const newStartViewDate = _m_utils_time_zone.default.getDateWithoutTimezoneChange(startViewDate);
                    newStartViewDate.setHours(startDayHour);
                    return newStartViewDate
                };
                exports.getHeaderCellText = (headerIndex, date, headerCellTextFormat, getDateForHeaderText, additionalOptions) => {
                    const validDate = getDateForHeaderText(headerIndex, date, additionalOptions);
                    return _date3.default.format(validDate, headerCellTextFormat)
                };
                const getStartViewDateTimeOffset = (startViewDate, startDayHour) => {
                    const validStartDayHour = Math.floor(startDayHour);
                    const isDSTChange = _m_utils_time_zone.default.isTimezoneChangeInDate(startViewDate);
                    if (isDSTChange && validStartDayHour !== startViewDate.getHours()) {
                        return _date2.default.dateToMilliseconds("hour")
                    }
                    return 0
                };
                exports.getStartViewDateTimeOffset = getStartViewDateTimeOffset;
                const formatWeekday = date => _date3.default.getDayNames("abbreviated")[date.getDay()];
                exports.formatWeekday = formatWeekday;
                exports.formatWeekdayAndDay = date => "".concat(formatWeekday(date), " ").concat(_date3.default.format(date, "day"));
                exports.getToday = (indicatorTime, timeZoneCalculator) => {
                    const todayDate = null !== indicatorTime && void 0 !== indicatorTime ? indicatorTime : new Date;
                    return (null === timeZoneCalculator || void 0 === timeZoneCalculator ? void 0 : timeZoneCalculator.createDate(todayDate, {
                        path: "toGrid"
                    })) || todayDate
                };
                exports.getVerticalGroupCountClass = groups => {
                    switch (null === groups || void 0 === groups ? void 0 : groups.length) {
                        case 1:
                            return _m_classes.VERTICAL_GROUP_COUNT_CLASSES[0];
                        case 2:
                            return _m_classes.VERTICAL_GROUP_COUNT_CLASSES[1];
                        case 3:
                            return _m_classes.VERTICAL_GROUP_COUNT_CLASSES[2];
                        default:
                            return
                    }
                };
                exports.isDateAndTimeView = viewType => viewType !== _m_constants.VIEWS.TIMELINE_MONTH && viewType !== _m_constants.VIEWS.MONTH;
                exports.isTimelineView = viewType => !!_const.TIMELINE_VIEWS[viewType];
                exports.getHorizontalGroupCount = (groups, groupOrientation) => {
                    const groupCount = (0, _m_utils.getGroupCount)(groups) || 1;
                    const isVerticalGrouping = (0, _utils.isVerticalGroupingApplied)(groups, groupOrientation);
                    return isVerticalGrouping ? 1 : groupCount
                };
                exports.calculateIsGroupedAllDayPanel = (groups, groupOrientation, isAllDayPanelVisible) => (0, _utils.isVerticalGroupingApplied)(groups, groupOrientation) && isAllDayPanelVisible;
                const calculateDayDuration = (startDayHour, endDayHour) => endDayHour - startDayHour;
                exports.calculateDayDuration = calculateDayDuration;
                exports.isHorizontalView = viewType => {
                    switch (viewType) {
                        case _m_constants.VIEWS.TIMELINE_DAY:
                        case _m_constants.VIEWS.TIMELINE_WEEK:
                        case _m_constants.VIEWS.TIMELINE_WORK_WEEK:
                        case _m_constants.VIEWS.TIMELINE_MONTH:
                        case _m_constants.VIEWS.MONTH:
                            return true;
                        default:
                            return false
                    }
                };
                const getTotalCellCountByCompleteData = completeData => completeData[completeData.length - 1].length;
                exports.getTotalCellCountByCompleteData = getTotalCellCountByCompleteData;
                const getTotalRowCountByCompleteData = completeData => completeData.length;
                exports.getTotalRowCountByCompleteData = getTotalRowCountByCompleteData;
                exports.getDisplayedCellCount = (displayedCellCount, completeData) => null !== displayedCellCount && void 0 !== displayedCellCount ? displayedCellCount : getTotalCellCountByCompleteData(completeData);
                exports.getDisplayedRowCount = (displayedRowCount, completeData) => null !== displayedRowCount && void 0 !== displayedRowCount ? displayedRowCount : getTotalRowCountByCompleteData(completeData);
                exports.getCellDuration = (viewType, startDayHour, endDayHour, hoursInterval) => {
                    switch (viewType) {
                        case "month":
                            return 36e5 * calculateDayDuration(startDayHour, endDayHour);
                        case "timelineMonth":
                            return _date2.default.dateToMilliseconds("day");
                        default:
                            return 36e5 * hoursInterval
                    }
                };
                exports.getValidCellDateForLocalTimeFormat = (date, _ref) => {
                    let {
                        cellIndexShift: cellIndexShift,
                        startDayHour: startDayHour,
                        startViewDate: startViewDate,
                        viewOffset: viewOffset
                    } = _ref;
                    const originDate = _date.dateUtilsTs.addOffsets(date, [-viewOffset]);
                    const localTimeZoneChangedInOriginDate = _m_utils_time_zone.default.isTimezoneChangeInDate(originDate);
                    if (!localTimeZoneChangedInOriginDate) {
                        return date
                    }
                    const startViewDateWithoutDST = new Date(new Date(startViewDate).setDate(startViewDate.getDate() + 2));
                    const startViewDateOffset = getStartViewDateTimeOffset(startViewDate, startDayHour);
                    return _date.dateUtilsTs.addOffsets(startViewDateWithoutDST, [viewOffset, cellIndexShift, -startViewDateOffset])
                }
            },
        67786:
            /*!*************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/view_model/to_test/views/utils/const.js ***!
              \*************************************************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.VIEWS = exports.TIMELINE_VIEWS = void 0;
                exports.VIEWS = {
                    DAY: "day",
                    WEEK: "week",
                    WORK_WEEK: "workWeek",
                    MONTH: "month",
                    TIMELINE_DAY: "timelineDay",
                    TIMELINE_WEEK: "timelineWeek",
                    TIMELINE_WORK_WEEK: "timelineWorkWeek",
                    TIMELINE_MONTH: "timelineMonth",
                    AGENDA: "agenda"
                };
                exports.TIMELINE_VIEWS = {
                    timelineDay: true,
                    timelineWeek: true,
                    timelineWorkWeek: true,
                    timelineMonth: true
                }
            },
        58824:
            /*!***********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/view_model/to_test/views/utils/day.js ***!
              \***********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.calculateStartViewDate = void 0;
                var _base = __webpack_require__( /*! ./base */ 45985);
                exports.calculateStartViewDate = (currentDate, startDayHour, startDate, intervalDuration) => {
                    const firstViewDate = (0, _base.getViewStartByOptions)(startDate, currentDate, intervalDuration, startDate);
                    return (0, _base.setOptionHour)(firstViewDate, startDayHour)
                }
            },
        19097:
            /*!*************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/view_model/to_test/views/utils/month.js ***!
              \*************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.isFirstCellInMonthWithIntervalCount = exports.getViewStartByOptions = exports.getCellText = exports.calculateStartViewDate = exports.calculateCellIndex = void 0;
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../../../../core/utils/date */ 91198));
                var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../../../../../../localization/date */ 91500));
                var _base = __webpack_require__( /*! ./base */ 45985);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const getViewStartByOptions = (startDate, currentDate, intervalCount, startViewDate) => {
                    if (!startDate) {
                        return new Date(currentDate)
                    }
                    let currentStartDate = new Date(startViewDate);
                    const validStartViewDate = new Date(startViewDate);
                    const diff = currentStartDate.getTime() <= currentDate.getTime() ? 1 : -1;
                    let endDate = new Date(new Date(validStartViewDate.setMonth(validStartViewDate.getMonth() + diff * intervalCount)));
                    while (!(0, _base.isDateInRange)(currentDate, currentStartDate, endDate, diff)) {
                        currentStartDate = new Date(endDate);
                        if (diff > 0) {
                            currentStartDate.setDate(1)
                        }
                        endDate = new Date(new Date(endDate.setMonth(endDate.getMonth() + diff * intervalCount)))
                    }
                    return diff > 0 ? currentStartDate : endDate
                };
                exports.getViewStartByOptions = getViewStartByOptions;
                exports.calculateStartViewDate = (currentDate, startDayHour, startDate, intervalCount, firstDayOfWeekOption) => {
                    const viewStart = getViewStartByOptions(startDate, currentDate, intervalCount, _date.default.getFirstMonthDate(startDate));
                    const firstMonthDate = _date.default.getFirstMonthDate(viewStart);
                    const firstDayOfWeek = (0, _base.getCalculatedFirstDayOfWeek)(firstDayOfWeekOption);
                    const firstViewDate = _date.default.getFirstWeekDate(firstMonthDate, firstDayOfWeek);
                    return (0, _base.setOptionHour)(firstViewDate, startDayHour)
                };
                exports.calculateCellIndex = (rowIndex, columnIndex, _, columnCount) => rowIndex * columnCount + columnIndex;
                const isFirstCellInMonthWithIntervalCount = (cellDate, intervalCount) => 1 === cellDate.getDate() && intervalCount > 1;
                exports.isFirstCellInMonthWithIntervalCount = isFirstCellInMonthWithIntervalCount;
                exports.getCellText = (date, intervalCount) => {
                    if (isFirstCellInMonthWithIntervalCount(date, intervalCount)) {
                        const monthName = _date2.default.getMonthNames("abbreviated")[date.getMonth()];
                        return [monthName, _date2.default.format(date, "day")].join(" ")
                    }
                    return _date2.default.format(date, "dd")
                }
            },
        75481:
            /*!**********************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/view_model/to_test/views/utils/timeline_month.js ***!
              \**********************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.calculateStartViewDate = void 0;
                var _date = (obj = __webpack_require__( /*! ../../../../../../../core/utils/date */ 91198), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _base = __webpack_require__( /*! ./base */ 45985);
                var _month = __webpack_require__( /*! ./month */ 19097);
                exports.calculateStartViewDate = (currentDate, startDayHour, startDate, intervalCount) => {
                    const firstViewDate = _date.default.getFirstMonthDate((0, _month.getViewStartByOptions)(startDate, currentDate, intervalCount, _date.default.getFirstMonthDate(startDate)));
                    return (0, _base.setOptionHour)(firstViewDate, startDayHour)
                }
            },
        92956:
            /*!*********************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/view_model/to_test/views/utils/timeline_week.js ***!
              \*********************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getDateForHeaderText = void 0;
                var _base = __webpack_require__( /*! ./base */ 45985);
                exports.getDateForHeaderText = (index, date, _ref) => {
                    let {
                        cellCountInDay: cellCountInDay,
                        interval: interval,
                        startDayHour: startDayHour,
                        startViewDate: startViewDate,
                        viewOffset: viewOffset
                    } = _ref;
                    return (0, _base.getValidCellDateForLocalTimeFormat)(date, {
                        startViewDate: startViewDate,
                        startDayHour: startDayHour,
                        cellIndexShift: index % cellCountInDay * interval,
                        viewOffset: viewOffset
                    })
                }
            },
        34279:
            /*!************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/view_model/to_test/views/utils/week.js ***!
              \************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getValidStartDate = exports.getTimePanelCellText = exports.getIntervalDuration = exports.calculateViewStartDate = exports.calculateStartViewDate = void 0;
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../../../../../../core/utils/date */ 91198));
                var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../../../../../../localization/date */ 91500));
                var _base = __webpack_require__( /*! ./base */ 45985);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                exports.getIntervalDuration = intervalCount => 7 * _date.default.dateToMilliseconds("day") * intervalCount;
                const getValidStartDate = (startDate, firstDayOfWeek) => startDate ? _date.default.getFirstWeekDate(startDate, firstDayOfWeek) : void 0;
                exports.getValidStartDate = getValidStartDate;
                exports.calculateStartViewDate = (currentDate, startDayHour, startDate, intervalDuration, firstDayOfWeekOption) => {
                    const firstDayOfWeek = (0, _base.getCalculatedFirstDayOfWeek)(firstDayOfWeekOption);
                    const viewStart = (0, _base.getViewStartByOptions)(startDate, currentDate, intervalDuration, getValidStartDate(startDate, firstDayOfWeek));
                    const firstViewDate = _date.default.getFirstWeekDate(viewStart, firstDayOfWeek);
                    return (0, _base.setOptionHour)(firstViewDate, startDayHour)
                };
                exports.calculateViewStartDate = (startDateOption, firstDayOfWeek) => {
                    const validFirstDayOfWeek = null !== firstDayOfWeek && void 0 !== firstDayOfWeek ? firstDayOfWeek : _date2.default.firstDayOfWeekIndex();
                    return _date.default.getFirstWeekDate(startDateOption, validFirstDayOfWeek)
                };
                exports.getTimePanelCellText = (rowIndex, date, startViewDate, cellDuration, startDayHour, viewOffset) => {
                    if (rowIndex % 2 !== 0) {
                        return ""
                    }
                    const validTimeDate = (0, _base.getValidCellDateForLocalTimeFormat)(date, {
                        startViewDate: startViewDate,
                        startDayHour: startDayHour,
                        cellIndexShift: Math.round(cellDuration) * rowIndex,
                        viewOffset: viewOffset
                    });
                    return _date2.default.format(validTimeDate, "shorttime")
                }
            },
        83866:
            /*!*****************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/view_model/to_test/views/utils/work_week.js ***!
              \*****************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.isDataOnWeekend = exports.getWeekendsCount = exports.calculateStartViewDate = void 0;
                var _date = (obj = __webpack_require__( /*! ../../../../../../../core/utils/date */ 91198), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _base = __webpack_require__( /*! ./base */ 45985);
                var _week = __webpack_require__( /*! ./week */ 34279);
                const isDataOnWeekend = date => {
                    const day = date.getDay();
                    return 6 === day || 0 === day
                };
                exports.isDataOnWeekend = isDataOnWeekend;
                exports.getWeekendsCount = days => 2 * Math.floor(days / 7);
                exports.calculateStartViewDate = (currentDate, startDayHour, startDate, intervalDuration, firstDayOfWeek) => {
                    const viewStart = (0, _base.getViewStartByOptions)(startDate, currentDate, intervalDuration, (0, _week.getValidStartDate)(startDate, firstDayOfWeek));
                    const firstViewDate = _date.default.getFirstWeekDate(viewStart, firstDayOfWeek);
                    if (isDataOnWeekend(firstViewDate)) {
                        const currentDay = firstViewDate.getDay();
                        const distance = (8 - currentDay) % 7;
                        firstViewDate.setDate(firstViewDate.getDate() + distance)
                    }
                    return (0, _base.setOptionHour)(firstViewDate, startDayHour)
                }
            },
        35064:
            /*!*********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/cell.js ***!
              \*********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.CellBaseProps = exports.CellBase = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _utils = __webpack_require__( /*! ../utils */ 97205);
                const _excluded = ["allDay", "ariaLabel", "children", "className", "contentTemplateProps", "endDate", "groupIndex", "groups", "index", "isFirstGroupCell", "isLastGroupCell", "startDate", "text"];

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const viewFunction = viewModel => (0, _inferno.createVNode)(1, "td", viewModel.classes, viewModel.props.children, 0, {
                    "aria-label": viewModel.props.ariaLabel
                });
                exports.viewFunction = viewFunction;
                const CellBaseProps = {
                    className: "",
                    isFirstGroupCell: false,
                    isLastGroupCell: false,
                    startDate: Object.freeze(new Date),
                    endDate: Object.freeze(new Date),
                    allDay: false,
                    text: "",
                    index: 0,
                    contentTemplateProps: Object.freeze({
                        data: {},
                        index: 0
                    })
                };
                exports.CellBaseProps = CellBaseProps;
                let CellBase = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(CellBase, _BaseInfernoComponent);

                    function CellBase(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        return _this
                    }
                    var _proto = CellBase.prototype;
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props),
                            classes: this.classes,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(CellBase, [{
                        key: "classes",
                        get: function() {
                            const {
                                className: className,
                                isFirstGroupCell: isFirstGroupCell,
                                isLastGroupCell: isLastGroupCell
                            } = this.props;
                            return (0, _utils.getGroupCellClasses)(isFirstGroupCell, isLastGroupCell, className)
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return CellBase
                }(_inferno2.BaseInfernoComponent);
                exports.CellBase = CellBase;
                CellBase.defaultProps = CellBaseProps
            },
        50307:
            /*!**********************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/cell.js ***!
              \**********************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.AllDayPanelCell = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _const = __webpack_require__( /*! ../../../const */ 8936);
                var _cell = __webpack_require__( /*! ../cell */ 51430);
                const _excluded = ["allDay", "ariaLabel", "children", "className", "contentTemplateProps", "dataCellTemplate", "endDate", "firstDayOfMonth", "groupIndex", "groups", "index", "isFirstGroupCell", "isFocused", "isLastGroupCell", "isSelected", "otherMonth", "startDate", "text", "today"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = _ref => {
                    let {
                        props: {
                            className: className,
                            dataCellTemplate: dataCellTemplate,
                            endDate: endDate,
                            groupIndex: groupIndex,
                            groups: groups,
                            index: index,
                            isFirstGroupCell: isFirstGroupCell,
                            isFocused: isFocused,
                            isLastGroupCell: isLastGroupCell,
                            isSelected: isSelected,
                            startDate: startDate
                        }
                    } = _ref;
                    return (0, _inferno.createComponentVNode)(2, _cell.DateTableCellBase, {
                        className: "".concat(_const.ALL_DAY_PANEL_CELL_CLASS, " ").concat(className),
                        startDate: startDate,
                        endDate: endDate,
                        groups: groups,
                        groupIndex: groupIndex,
                        allDay: true,
                        isFirstGroupCell: isFirstGroupCell,
                        isLastGroupCell: isLastGroupCell,
                        index: index,
                        dataCellTemplate: dataCellTemplate,
                        isSelected: isSelected,
                        isFocused: isFocused
                    })
                };
                exports.viewFunction = viewFunction;
                let AllDayPanelCell = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(AllDayPanelCell, _BaseInfernoComponent);

                    function AllDayPanelCell(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        return _this
                    }
                    var _proto = AllDayPanelCell.prototype;
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                dataCellTemplate: (TemplateProp = props.dataCellTemplate, TemplateProp && (TemplateProp.defaultProps ? props => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, TemplateProp, _extends({}, props))) : TemplateProp))
                            }),
                            restAttributes: this.restAttributes
                        });
                        var TemplateProp
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(AllDayPanelCell, [{
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return AllDayPanelCell
                }(_inferno2.BaseInfernoComponent);
                exports.AllDayPanelCell = AllDayPanelCell;
                AllDayPanelCell.defaultProps = _cell.DateTableCellBaseProps
            },
        38201:
            /*!*************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/table.j.js ***!
              \*************************************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _component_registrator = (obj = __webpack_require__( /*! ../../../../../../../core/component_registrator */ 99393), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _date_table = __webpack_require__( /*! ../../../../../../component_wrapper/scheduler/date_table */ 15281);
                var _table = __webpack_require__( /*! ./table */ 31863);

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let AllDayTable = function(_DateTable) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(AllDayTable, _DateTable);

                    function AllDayTable() {
                        return _DateTable.apply(this, arguments) || this
                    }! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(AllDayTable, [{
                        key: "_propsInfo",
                        get: function() {
                            return {
                                twoWay: [],
                                allowNull: [],
                                elements: [],
                                templates: ["dataCellTemplate"],
                                props: ["viewData", "groupOrientation", "leftVirtualCellWidth", "rightVirtualCellWidth", "topVirtualRowHeight", "bottomVirtualRowHeight", "addDateTableClass", "addVerticalSizesClassToRows", "width", "dataCellTemplate"]
                            }
                        }
                    }, {
                        key: "_viewComponent",
                        get: function() {
                            return _table.AllDayTable
                        }
                    }]);
                    return AllDayTable
                }(_date_table.DateTable);
                exports.default = AllDayTable;
                (0, _component_registrator.default)("dxAllDayTable", AllDayTable);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        31863:
            /*!***********************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/table.js ***!
              \***********************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.AllDayTableProps = exports.AllDayTable = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _table = __webpack_require__( /*! ../../table */ 48868);
                var _table_body = __webpack_require__( /*! ./table_body */ 48713);
                var _layout_props = __webpack_require__( /*! ../../layout_props */ 71604);
                var _const = __webpack_require__( /*! ../../../const */ 8936);
                const _excluded = ["addDateTableClass", "addVerticalSizesClassToRows", "bottomVirtualRowHeight", "dataCellTemplate", "groupOrientation", "leftVirtualCellWidth", "rightVirtualCellWidth", "tableRef", "topVirtualRowHeight", "viewData", "width"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = _ref => {
                    let {
                        allDayPanelData: allDayPanelData,
                        emptyTableHeight: emptyTableHeight,
                        props: {
                            dataCellTemplate: dataCellTemplate,
                            tableRef: tableRef,
                            viewData: viewData,
                            width: width
                        }
                    } = _ref;
                    return (0, _inferno.createComponentVNode)(2, _table.Table, {
                        className: "dx-scheduler-all-day-table",
                        height: emptyTableHeight,
                        width: width,
                        tableRef: tableRef,
                        children: (0, _inferno.createComponentVNode)(2, _table_body.AllDayPanelTableBody, {
                            viewData: allDayPanelData,
                            leftVirtualCellWidth: viewData.leftVirtualCellWidth,
                            rightVirtualCellWidth: viewData.rightVirtualCellWidth,
                            leftVirtualCellCount: viewData.leftVirtualCellCount,
                            rightVirtualCellCount: viewData.rightVirtualCellCount,
                            dataCellTemplate: dataCellTemplate
                        })
                    })
                };
                exports.viewFunction = viewFunction;
                const AllDayTableProps = _layout_props.LayoutProps;
                exports.AllDayTableProps = AllDayTableProps;
                let AllDayTable = function(_InfernoWrapperCompon) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(AllDayTable, _InfernoWrapperCompon);

                    function AllDayTable(props) {
                        var _this;
                        _this = _InfernoWrapperCompon.call(this, props) || this;
                        _this.state = {};
                        _this.__getterCache = {};
                        return _this
                    }
                    var _proto = AllDayTable.prototype;
                    _proto.createEffects = function() {
                        return [(0, _inferno2.createReRenderEffect)()]
                    };
                    _proto.componentWillUpdate = function(nextProps, nextState, context) {
                        _InfernoWrapperCompon.prototype.componentWillUpdate.call(this);
                        if (this.props.viewData !== nextProps.viewData) {
                            this.__getterCache.allDayPanelData = void 0
                        }
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                dataCellTemplate: (TemplateProp = props.dataCellTemplate, TemplateProp && (TemplateProp.defaultProps ? props => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, TemplateProp, _extends({}, props))) : TemplateProp))
                            }),
                            allDayPanelData: this.allDayPanelData,
                            emptyTableHeight: this.emptyTableHeight,
                            restAttributes: this.restAttributes
                        });
                        var TemplateProp
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(AllDayTable, [{
                        key: "allDayPanelData",
                        get: function() {
                            if (void 0 !== this.__getterCache.allDayPanelData) {
                                return this.__getterCache.allDayPanelData
                            }
                            return this.__getterCache.allDayPanelData = (() => this.props.viewData.groupedData[0].allDayPanel)()
                        }
                    }, {
                        key: "emptyTableHeight",
                        get: function() {
                            return this.allDayPanelData ? void 0 : _const.DefaultSizes.allDayPanelHeight
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return AllDayTable
                }(_inferno2.InfernoWrapperComponent);
                exports.AllDayTable = AllDayTable;
                AllDayTable.defaultProps = AllDayTableProps
            },
        48713:
            /*!****************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/table_body.js ***!
              \****************************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.AllDayPanelTableBodyProps = exports.AllDayPanelTableBody = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _row = __webpack_require__( /*! ../../row */ 14364);
                var _cell = __webpack_require__( /*! ./cell */ 50307);
                var _combine_classes = __webpack_require__( /*! ../../../../../../utils/combine_classes */ 86237);
                const _excluded = ["className", "dataCellTemplate", "isVerticalGroupOrientation", "leftVirtualCellCount", "leftVirtualCellWidth", "rightVirtualCellCount", "rightVirtualCellWidth", "viewData"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = viewModel => (0, _inferno.createComponentVNode)(2, _row.Row, {
                    leftVirtualCellWidth: viewModel.props.leftVirtualCellWidth,
                    rightVirtualCellWidth: viewModel.props.rightVirtualCellWidth,
                    leftVirtualCellCount: viewModel.props.leftVirtualCellCount,
                    rightVirtualCellCount: viewModel.props.rightVirtualCellCount,
                    className: viewModel.classes,
                    children: viewModel.props.viewData.map(_ref => {
                        let {
                            endDate: endDate,
                            groupIndex: cellGroupIndex,
                            groups: groups,
                            index: cellIndex,
                            isFirstGroupCell: isFirstGroupCell,
                            isFocused: isFocused,
                            isLastGroupCell: isLastGroupCell,
                            isSelected: isSelected,
                            key: key,
                            startDate: startDate
                        } = _ref;
                        return (0, _inferno.createComponentVNode)(2, _cell.AllDayPanelCell, {
                            isFirstGroupCell: !viewModel.props.isVerticalGroupOrientation && isFirstGroupCell,
                            isLastGroupCell: !viewModel.props.isVerticalGroupOrientation && isLastGroupCell,
                            startDate: startDate,
                            endDate: endDate,
                            groups: groups,
                            groupIndex: cellGroupIndex,
                            index: cellIndex,
                            dataCellTemplate: viewModel.props.dataCellTemplate,
                            isSelected: isSelected,
                            isFocused: isFocused
                        }, key)
                    })
                });
                exports.viewFunction = viewFunction;
                const AllDayPanelTableBodyProps = {
                    viewData: Object.freeze([]),
                    isVerticalGroupOrientation: false,
                    className: "",
                    leftVirtualCellWidth: 0,
                    rightVirtualCellWidth: 0
                };
                exports.AllDayPanelTableBodyProps = AllDayPanelTableBodyProps;
                let AllDayPanelTableBody = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(AllDayPanelTableBody, _BaseInfernoComponent);

                    function AllDayPanelTableBody(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        return _this
                    }
                    var _proto = AllDayPanelTableBody.prototype;
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                dataCellTemplate: (TemplateProp = props.dataCellTemplate, TemplateProp && (TemplateProp.defaultProps ? props => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, TemplateProp, _extends({}, props))) : TemplateProp))
                            }),
                            classes: this.classes,
                            restAttributes: this.restAttributes
                        });
                        var TemplateProp
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(AllDayPanelTableBody, [{
                        key: "classes",
                        get: function() {
                            const {
                                className: className
                            } = this.props;
                            return (0, _combine_classes.combineClasses)({
                                "dx-scheduler-all-day-table-row": true,
                                [className]: !!className
                            })
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return AllDayPanelTableBody
                }(_inferno2.BaseInfernoComponent);
                exports.AllDayPanelTableBody = AllDayPanelTableBody;
                AllDayPanelTableBody.defaultProps = AllDayPanelTableBodyProps
            },
        2931:
            /*!*************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/title.j.js ***!
              \*************************************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../../../../../../core/component_registrator */ 99393));
                var _component = _interopRequireDefault(__webpack_require__( /*! ../../../../../../component_wrapper/common/component */ 27135));
                var _title = __webpack_require__( /*! ./title */ 7149);

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

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let AllDayPanelTitle = function(_BaseComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(AllDayPanelTitle, _BaseComponent);

                    function AllDayPanelTitle() {
                        return _BaseComponent.apply(this, arguments) || this
                    }! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(AllDayPanelTitle, [{
                        key: "_propsInfo",
                        get: function() {
                            return {
                                twoWay: [],
                                allowNull: [],
                                elements: [],
                                templates: [],
                                props: []
                            }
                        }
                    }, {
                        key: "_viewComponent",
                        get: function() {
                            return _title.AllDayPanelTitle
                        }
                    }]);
                    return AllDayPanelTitle
                }(_component.default);
                exports.default = AllDayPanelTitle;
                (0, _component_registrator.default)("dxAllDayPanelTitle", AllDayPanelTitle);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        7149:
            /*!***********************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/title.js ***!
              \***********************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.AllDayPanelTitleProps = exports.AllDayPanelTitle = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _message = (obj = __webpack_require__( /*! ../../../../../../../localization/message */ 28109), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const viewFunction = viewModel => (0, _inferno.createVNode)(1, "div", "dx-scheduler-all-day-title", viewModel.text, 0);
                exports.viewFunction = viewFunction;
                const AllDayPanelTitleProps = {};
                exports.AllDayPanelTitleProps = AllDayPanelTitleProps;
                let AllDayPanelTitle = function(_InfernoWrapperCompon) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(AllDayPanelTitle, _InfernoWrapperCompon);

                    function AllDayPanelTitle(props) {
                        var _this;
                        _this = _InfernoWrapperCompon.call(this, props) || this;
                        _this.state = {};
                        return _this
                    }
                    var _proto = AllDayPanelTitle.prototype;
                    _proto.createEffects = function() {
                        return [(0, _inferno2.createReRenderEffect)()]
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props),
                            text: this.text,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(AllDayPanelTitle, [{
                        key: "text",
                        get: function() {
                            return _message.default.format("dxScheduler-allDay")
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = _extends({}, (function(obj) {
                                    if (null == obj) {
                                        throw new TypeError("Cannot destructure " + obj)
                                    }
                                }(_this$props), _this$props));
                            return restProps
                        }
                    }]);
                    return AllDayPanelTitle
                }(_inferno2.InfernoWrapperComponent);
                exports.AllDayPanelTitle = AllDayPanelTitle;
                AllDayPanelTitle.defaultProps = AllDayPanelTitleProps
            },
        51430:
            /*!********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/date_table/cell.js ***!
              \********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.DateTableCellBaseProps = exports.DateTableCellBase = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _cell = __webpack_require__( /*! ../cell */ 35064);
                var _combine_classes = __webpack_require__( /*! ../../../../../utils/combine_classes */ 86237);
                var _const = __webpack_require__( /*! ../../const */ 8936);
                const _excluded = ["allDay", "ariaLabel", "children", "className", "contentTemplateProps", "dataCellTemplate", "endDate", "firstDayOfMonth", "groupIndex", "groups", "index", "isFirstGroupCell", "isFocused", "isLastGroupCell", "isSelected", "otherMonth", "startDate", "text", "today"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = _ref => {
                    let {
                        ariaLabel: ariaLabel,
                        classes: classes,
                        dataCellTemplateProps: dataCellTemplateProps,
                        props: {
                            children: children,
                            dataCellTemplate: DataCellTemplate,
                            isFirstGroupCell: isFirstGroupCell,
                            isLastGroupCell: isLastGroupCell
                        }
                    } = _ref;
                    return (0, _inferno.createComponentVNode)(2, _cell.CellBase, {
                        isFirstGroupCell: isFirstGroupCell,
                        isLastGroupCell: isLastGroupCell,
                        className: classes,
                        ariaLabel: ariaLabel,
                        children: [!DataCellTemplate && children, !!DataCellTemplate && DataCellTemplate({
                            index: dataCellTemplateProps.index,
                            data: dataCellTemplateProps.data
                        })]
                    })
                };
                exports.viewFunction = viewFunction;
                const DateTableCellBaseProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(_cell.CellBaseProps), Object.getOwnPropertyDescriptors({
                    otherMonth: false,
                    today: false,
                    firstDayOfMonth: false,
                    isSelected: false,
                    isFocused: false
                })));
                exports.DateTableCellBaseProps = DateTableCellBaseProps;
                let DateTableCellBase = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(DateTableCellBase, _BaseInfernoComponent);

                    function DateTableCellBase(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        _this.__getterCache = {};
                        return _this
                    }
                    var _proto = DateTableCellBase.prototype;
                    _proto.componentWillUpdate = function(nextProps, nextState, context) {
                        if (this.props.allDay !== nextProps.allDay || this.props.contentTemplateProps !== nextProps.contentTemplateProps || this.props.endDate !== nextProps.endDate || this.props.groupIndex !== nextProps.groupIndex || this.props.groups !== nextProps.groups || this.props.index !== nextProps.index || this.props.startDate !== nextProps.startDate) {
                            this.__getterCache.dataCellTemplateProps = void 0
                        }
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                dataCellTemplate: (TemplateProp = props.dataCellTemplate, TemplateProp && (TemplateProp.defaultProps ? props => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, TemplateProp, _extends({}, props))) : TemplateProp))
                            }),
                            classes: this.classes,
                            dataCellTemplateProps: this.dataCellTemplateProps,
                            ariaLabel: this.ariaLabel,
                            restAttributes: this.restAttributes
                        });
                        var TemplateProp
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(DateTableCellBase, [{
                        key: "classes",
                        get: function() {
                            const {
                                allDay: allDay,
                                className: className,
                                isFocused: isFocused,
                                isSelected: isSelected
                            } = this.props;
                            return (0, _combine_classes.combineClasses)({
                                "dx-scheduler-cell-sizes-horizontal": true,
                                "dx-scheduler-cell-sizes-vertical": !allDay,
                                [_const.DATE_TABLE_CELL_CLASS]: !allDay,
                                "dx-state-focused": isSelected,
                                "dx-scheduler-focused-cell": isFocused,
                                [className]: true
                            })
                        }
                    }, {
                        key: "dataCellTemplateProps",
                        get: function() {
                            if (void 0 !== this.__getterCache.dataCellTemplateProps) {
                                return this.__getterCache.dataCellTemplateProps
                            }
                            return this.__getterCache.dataCellTemplateProps = (() => {
                                const {
                                    allDay: allDay,
                                    contentTemplateProps: contentTemplateProps,
                                    endDate: endDate,
                                    groupIndex: groupIndex,
                                    groups: groups,
                                    index: index,
                                    startDate: startDate
                                } = this.props;
                                return {
                                    data: _extends({
                                        startDate: startDate,
                                        endDate: endDate,
                                        groups: groups,
                                        groupIndex: groups ? groupIndex : void 0,
                                        text: "",
                                        allDay: !!allDay || void 0
                                    }, contentTemplateProps.data),
                                    index: index
                                }
                            })()
                        }
                    }, {
                        key: "ariaLabel",
                        get: function() {
                            return this.props.isSelected ? "Add appointment" : void 0
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return DateTableCellBase
                }(_inferno2.BaseInfernoComponent);
                exports.DateTableCellBase = DateTableCellBase;
                DateTableCellBase.defaultProps = DateTableCellBaseProps
            },
        40181:
            /*!************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/date_table/layout.j.js ***!
              \************************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _component_registrator = (obj = __webpack_require__( /*! ../../../../../../core/component_registrator */ 99393), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _date_table = __webpack_require__( /*! ../../../../../component_wrapper/scheduler/date_table */ 15281);
                var _layout = __webpack_require__( /*! ./layout */ 96941);

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let DateTableLayoutBase = function(_DateTable) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(DateTableLayoutBase, _DateTable);

                    function DateTableLayoutBase() {
                        return _DateTable.apply(this, arguments) || this
                    }! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(DateTableLayoutBase, [{
                        key: "_propsInfo",
                        get: function() {
                            return {
                                twoWay: [],
                                allowNull: [],
                                elements: [],
                                templates: ["cellTemplate", "dataCellTemplate"],
                                props: ["cellTemplate", "viewData", "groupOrientation", "leftVirtualCellWidth", "rightVirtualCellWidth", "topVirtualRowHeight", "bottomVirtualRowHeight", "addDateTableClass", "addVerticalSizesClassToRows", "width", "dataCellTemplate"]
                            }
                        }
                    }, {
                        key: "_viewComponent",
                        get: function() {
                            return _layout.DateTableLayoutBase
                        }
                    }]);
                    return DateTableLayoutBase
                }(_date_table.DateTable);
                exports.default = DateTableLayoutBase;
                (0, _component_registrator.default)("dxDateTableLayoutBase", DateTableLayoutBase);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        96941:
            /*!**********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/date_table/layout.js ***!
              \**********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.DateTableLayoutProps = exports.DateTableLayoutBase = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _table = __webpack_require__( /*! ../table */ 48868);
                var _table_body = __webpack_require__( /*! ./table_body */ 13552);
                var _layout_props = __webpack_require__( /*! ../layout_props */ 71604);
                var _cell = __webpack_require__( /*! ./cell */ 51430);
                const _excluded = ["addDateTableClass", "addVerticalSizesClassToRows", "bottomVirtualRowHeight", "cellTemplate", "dataCellTemplate", "groupOrientation", "leftVirtualCellWidth", "rightVirtualCellWidth", "tableRef", "topVirtualRowHeight", "viewData", "width"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = _ref => {
                    let {
                        bottomVirtualRowHeight: bottomVirtualRowHeight,
                        classes: classes,
                        leftVirtualCellWidth: leftVirtualCellWidth,
                        props: {
                            addVerticalSizesClassToRows: addVerticalSizesClassToRows,
                            cellTemplate: cellTemplate,
                            dataCellTemplate: dataCellTemplate,
                            groupOrientation: groupOrientation,
                            tableRef: tableRef,
                            viewData: viewData,
                            width: width
                        },
                        restAttributes: restAttributes,
                        rightVirtualCellWidth: rightVirtualCellWidth,
                        topVirtualRowHeight: topVirtualRowHeight,
                        virtualCellsCount: virtualCellsCount
                    } = _ref;
                    return (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _table.Table, _extends({}, restAttributes, {
                        tableRef: tableRef,
                        topVirtualRowHeight: topVirtualRowHeight,
                        bottomVirtualRowHeight: bottomVirtualRowHeight,
                        leftVirtualCellWidth: leftVirtualCellWidth,
                        rightVirtualCellWidth: rightVirtualCellWidth,
                        leftVirtualCellCount: viewData.leftVirtualCellCount,
                        rightVirtualCellCount: viewData.rightVirtualCellCount,
                        virtualCellsCount: virtualCellsCount,
                        className: classes,
                        width: width,
                        children: (0, _inferno.createComponentVNode)(2, _table_body.DateTableBody, {
                            cellTemplate: cellTemplate,
                            viewData: viewData,
                            dataCellTemplate: dataCellTemplate,
                            leftVirtualCellWidth: leftVirtualCellWidth,
                            rightVirtualCellWidth: rightVirtualCellWidth,
                            groupOrientation: groupOrientation,
                            addVerticalSizesClassToRows: addVerticalSizesClassToRows
                        })
                    })))
                };
                exports.viewFunction = viewFunction;
                const DateTableLayoutProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(_layout_props.LayoutProps), Object.getOwnPropertyDescriptors({
                    cellTemplate: _cell.DateTableCellBase
                })));
                exports.DateTableLayoutProps = DateTableLayoutProps;
                const getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, TemplateProp, _extends({}, props))) : TemplateProp);
                let DateTableLayoutBase = function(_InfernoWrapperCompon) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(DateTableLayoutBase, _InfernoWrapperCompon);

                    function DateTableLayoutBase(props) {
                        var _this;
                        _this = _InfernoWrapperCompon.call(this, props) || this;
                        _this.state = {};
                        return _this
                    }
                    var _proto = DateTableLayoutBase.prototype;
                    _proto.createEffects = function() {
                        return [(0, _inferno2.createReRenderEffect)()]
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                cellTemplate: getTemplate(props.cellTemplate),
                                dataCellTemplate: getTemplate(props.dataCellTemplate)
                            }),
                            classes: this.classes,
                            topVirtualRowHeight: this.topVirtualRowHeight,
                            bottomVirtualRowHeight: this.bottomVirtualRowHeight,
                            leftVirtualCellWidth: this.leftVirtualCellWidth,
                            rightVirtualCellWidth: this.rightVirtualCellWidth,
                            virtualCellsCount: this.virtualCellsCount,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(DateTableLayoutBase, [{
                        key: "classes",
                        get: function() {
                            const {
                                addDateTableClass: addDateTableClass
                            } = this.props;
                            return addDateTableClass ? "dx-scheduler-date-table" : void 0
                        }
                    }, {
                        key: "topVirtualRowHeight",
                        get: function() {
                            var _this$props$viewData$;
                            return null !== (_this$props$viewData$ = this.props.viewData.topVirtualRowHeight) && void 0 !== _this$props$viewData$ ? _this$props$viewData$ : 0
                        }
                    }, {
                        key: "bottomVirtualRowHeight",
                        get: function() {
                            var _this$props$viewData$2;
                            return null !== (_this$props$viewData$2 = this.props.viewData.bottomVirtualRowHeight) && void 0 !== _this$props$viewData$2 ? _this$props$viewData$2 : 0
                        }
                    }, {
                        key: "leftVirtualCellWidth",
                        get: function() {
                            var _this$props$viewData$3;
                            return null !== (_this$props$viewData$3 = this.props.viewData.leftVirtualCellWidth) && void 0 !== _this$props$viewData$3 ? _this$props$viewData$3 : 0
                        }
                    }, {
                        key: "rightVirtualCellWidth",
                        get: function() {
                            var _this$props$viewData$4;
                            return null !== (_this$props$viewData$4 = this.props.viewData.rightVirtualCellWidth) && void 0 !== _this$props$viewData$4 ? _this$props$viewData$4 : 0
                        }
                    }, {
                        key: "virtualCellsCount",
                        get: function() {
                            return this.props.viewData.groupedData[0].dateTable[0].cells.length
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return DateTableLayoutBase
                }(_inferno2.InfernoWrapperComponent);
                exports.DateTableLayoutBase = DateTableLayoutBase;
                DateTableLayoutBase.defaultProps = DateTableLayoutProps
            },
        13552:
            /*!**************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/date_table/table_body.js ***!
              \**************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.DateTableBodyProps = exports.DateTableBody = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _row = __webpack_require__( /*! ../row */ 14364);
                var _table_body = __webpack_require__( /*! ./all_day_panel/table_body */ 48713);
                var _layout_props = __webpack_require__( /*! ../layout_props */ 71604);
                var _cell = __webpack_require__( /*! ./cell */ 51430);
                var _combine_classes = __webpack_require__( /*! ../../../../../utils/combine_classes */ 86237);
                var _const = __webpack_require__( /*! ../../const */ 8936);
                const _excluded = ["addDateTableClass", "addVerticalSizesClassToRows", "bottomVirtualRowHeight", "cellTemplate", "dataCellTemplate", "groupOrientation", "leftVirtualCellWidth", "rightVirtualCellWidth", "topVirtualRowHeight", "viewData", "width"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = _ref => {
                    let {
                        props: {
                            cellTemplate: Cell,
                            dataCellTemplate: dataCellTemplate,
                            viewData: viewData
                        },
                        rowClasses: rowClasses
                    } = _ref;
                    return (0, _inferno.createFragment)(viewData.groupedData.map(_ref2 => {
                        let {
                            allDayPanel: allDayPanel,
                            dateTable: dateTable,
                            isGroupedAllDayPanel: isGroupedAllDayPanel,
                            key: fragmentKey
                        } = _ref2;
                        return (0, _inferno.createFragment)([isGroupedAllDayPanel && (0, _inferno.createComponentVNode)(2, _table_body.AllDayPanelTableBody, {
                            viewData: allDayPanel,
                            dataCellTemplate: dataCellTemplate,
                            isVerticalGroupOrientation: true,
                            leftVirtualCellWidth: viewData.leftVirtualCellWidth,
                            rightVirtualCellWidth: viewData.rightVirtualCellWidth,
                            leftVirtualCellCount: viewData.leftVirtualCellCount,
                            rightVirtualCellCount: viewData.rightVirtualCellCount
                        }), dateTable.map(_ref3 => {
                            let {
                                cells: cells,
                                key: rowKey
                            } = _ref3;
                            return (0, _inferno.createComponentVNode)(2, _row.Row, {
                                className: rowClasses,
                                leftVirtualCellWidth: viewData.leftVirtualCellWidth,
                                rightVirtualCellWidth: viewData.rightVirtualCellWidth,
                                leftVirtualCellCount: viewData.leftVirtualCellCount,
                                rightVirtualCellCount: viewData.rightVirtualCellCount,
                                children: cells.map(_ref4 => {
                                    let {
                                        endDate: endDate,
                                        firstDayOfMonth: firstDayOfMonth,
                                        groupIndex: cellGroupIndex,
                                        groups: groups,
                                        index: cellIndex,
                                        isFirstGroupCell: isFirstGroupCell,
                                        isFocused: isFocused,
                                        isLastGroupCell: isLastGroupCell,
                                        isSelected: isSelected,
                                        key: key,
                                        otherMonth: otherMonth,
                                        startDate: startDate,
                                        text: text,
                                        today: today
                                    } = _ref4;
                                    return Cell({
                                        isFirstGroupCell: isFirstGroupCell,
                                        isLastGroupCell: isLastGroupCell,
                                        startDate: startDate,
                                        endDate: endDate,
                                        groups: groups,
                                        groupIndex: cellGroupIndex,
                                        index: cellIndex,
                                        dataCellTemplate: dataCellTemplate,
                                        key: key,
                                        text: text,
                                        today: today,
                                        otherMonth: otherMonth,
                                        firstDayOfMonth: firstDayOfMonth,
                                        isSelected: isSelected,
                                        isFocused: isFocused
                                    })
                                })
                            }, rowKey)
                        })], 0, fragmentKey)
                    }), 0)
                };
                exports.viewFunction = viewFunction;
                const DateTableBodyProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(_layout_props.LayoutProps), Object.getOwnPropertyDescriptors({
                    cellTemplate: _cell.DateTableCellBase
                })));
                exports.DateTableBodyProps = DateTableBodyProps;
                const getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, TemplateProp, _extends({}, props))) : TemplateProp);
                let DateTableBody = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(DateTableBody, _BaseInfernoComponent);

                    function DateTableBody(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        return _this
                    }
                    var _proto = DateTableBody.prototype;
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                cellTemplate: getTemplate(props.cellTemplate),
                                dataCellTemplate: getTemplate(props.dataCellTemplate)
                            }),
                            rowClasses: this.rowClasses,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(DateTableBody, [{
                        key: "rowClasses",
                        get: function() {
                            const {
                                addVerticalSizesClassToRows: addVerticalSizesClassToRows
                            } = this.props;
                            return (0, _combine_classes.combineClasses)({
                                [_const.DATE_TABLE_ROW_CLASS]: true,
                                "dx-scheduler-cell-sizes-vertical": addVerticalSizesClassToRows
                            })
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return DateTableBody
                }(_inferno2.BaseInfernoComponent);
                exports.DateTableBody = DateTableBody;
                DateTableBody.defaultProps = DateTableBodyProps
            },
        85869:
            /*!***************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/group_panel/cell_props.js ***!
              \***************************************************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.GroupPanelCellProps = void 0;
                const GroupPanelCellProps = {
                    id: 0,
                    text: "",
                    data: Object.freeze({
                        id: 0
                    }),
                    className: ""
                };
                exports.GroupPanelCellProps = GroupPanelCellProps
            },
        11141:
            /*!******************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/group_panel/group_panel.j.js ***!
              \******************************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _component_registrator = (obj = __webpack_require__( /*! ../../../../../../core/component_registrator */ 99393), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _group_panel = __webpack_require__( /*! ../../../../../component_wrapper/scheduler/group_panel */ 55095);
                var _group_panel2 = __webpack_require__( /*! ./group_panel */ 80954);

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let GroupPanel = function(_GroupPanelWrapper) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(GroupPanel, _GroupPanelWrapper);

                    function GroupPanel() {
                        return _GroupPanelWrapper.apply(this, arguments) || this
                    }! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(GroupPanel, [{
                        key: "_propsInfo",
                        get: function() {
                            return {
                                twoWay: [],
                                allowNull: [],
                                elements: [],
                                templates: ["resourceCellTemplate"],
                                props: ["groups", "groupOrientation", "groupPanelData", "groupByDate", "height", "className", "resourceCellTemplate"]
                            }
                        }
                    }, {
                        key: "_viewComponent",
                        get: function() {
                            return _group_panel2.GroupPanel
                        }
                    }]);
                    return GroupPanel
                }(_group_panel.GroupPanelWrapper);
                exports.default = GroupPanel;
                (0, _component_registrator.default)("dxGroupPanel", GroupPanel);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        80954:
            /*!****************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/group_panel/group_panel.js ***!
              \****************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.GroupPanelProps = exports.GroupPanel = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _utils = __webpack_require__( /*! ../../utils */ 97205);
                var _group_panel_props = __webpack_require__( /*! ./group_panel_props */ 18266);
                var _layout = __webpack_require__( /*! ./vertical/layout */ 37598);
                var _layout2 = __webpack_require__( /*! ./horizontal/layout */ 26419);
                var _consts = __webpack_require__( /*! ../../../consts */ 4799);
                const _excluded = ["className", "elementRef", "groupByDate", "groupOrientation", "groupPanelData", "groups", "height", "resourceCellTemplate"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = _ref => {
                    let {
                        isVerticalLayout: isVerticalLayout,
                        props: {
                            className: className,
                            elementRef: elementRef,
                            groupPanelData: groupPanelData,
                            height: height,
                            resourceCellTemplate: resourceCellTemplate
                        },
                        restAttributes: restAttributes
                    } = _ref;
                    return isVerticalLayout ? (0, _inferno.createComponentVNode)(2, _layout.GroupPanelVerticalLayout, {
                        height: height,
                        resourceCellTemplate: resourceCellTemplate,
                        className: className,
                        groupPanelData: groupPanelData,
                        elementRef: elementRef,
                        styles: restAttributes.style
                    }) : (0, _inferno.createComponentVNode)(2, _layout2.GroupPanelHorizontalLayout, {
                        height: height,
                        resourceCellTemplate: resourceCellTemplate,
                        className: className,
                        groupPanelData: groupPanelData,
                        elementRef: elementRef,
                        styles: restAttributes.style
                    })
                };
                exports.viewFunction = viewFunction;
                const GroupPanelProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(_group_panel_props.GroupPanelBaseProps), Object.getOwnPropertyDescriptors({
                    groups: Object.freeze([]),
                    groupOrientation: _consts.VERTICAL_GROUP_ORIENTATION
                })));
                exports.GroupPanelProps = GroupPanelProps;
                let GroupPanel = function(_InfernoWrapperCompon) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(GroupPanel, _InfernoWrapperCompon);

                    function GroupPanel(props) {
                        var _this;
                        _this = _InfernoWrapperCompon.call(this, props) || this;
                        _this.state = {};
                        return _this
                    }
                    var _proto = GroupPanel.prototype;
                    _proto.createEffects = function() {
                        return [(0, _inferno2.createReRenderEffect)()]
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                resourceCellTemplate: (TemplateProp = props.resourceCellTemplate, TemplateProp && (TemplateProp.defaultProps ? props => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, TemplateProp, _extends({}, props))) : TemplateProp))
                            }),
                            isVerticalLayout: this.isVerticalLayout,
                            restAttributes: this.restAttributes
                        });
                        var TemplateProp
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(GroupPanel, [{
                        key: "isVerticalLayout",
                        get: function() {
                            const {
                                groupOrientation: groupOrientation,
                                groups: groups
                            } = this.props;
                            return (0, _utils.isVerticalGroupingApplied)(groups, groupOrientation)
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return GroupPanel
                }(_inferno2.InfernoWrapperComponent);
                exports.GroupPanel = GroupPanel;
                GroupPanel.defaultProps = GroupPanelProps
            },
        46833:
            /*!*****************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/group_panel/group_panel_layout_props.js ***!
              \*****************************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.GroupPanelLayoutProps = void 0;
                var _group_panel_props = __webpack_require__( /*! ./group_panel_props */ 18266);
                const GroupPanelLayoutProps = _group_panel_props.GroupPanelBaseProps;
                exports.GroupPanelLayoutProps = GroupPanelLayoutProps
            },
        18266:
            /*!**********************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/group_panel/group_panel_props.js ***!
              \**********************************************************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.GroupPanelBaseProps = void 0;
                const GroupPanelBaseProps = {
                    groupPanelData: Object.freeze({
                        groupPanelItems: [],
                        baseColSpan: 1
                    }),
                    groupByDate: false
                };
                exports.GroupPanelBaseProps = GroupPanelBaseProps
            },
        40725:
            /*!********************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/group_panel/horizontal/cell.js ***!
              \********************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.GroupPanelHorizontalCellProps = exports.GroupPanelHorizontalCell = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _combine_classes = __webpack_require__( /*! ../../../../../../utils/combine_classes */ 86237);
                var _cell_props = __webpack_require__( /*! ../cell_props */ 85869);
                const _excluded = ["cellTemplate", "className", "colSpan", "color", "data", "id", "index", "isFirstGroupCell", "isLastGroupCell", "text"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = _ref => {
                    let {
                        classes: classes,
                        props: {
                            cellTemplate: CellTemplate,
                            colSpan: colSpan,
                            color: color,
                            data: data,
                            id: id,
                            index: index,
                            text: text
                        }
                    } = _ref;
                    return (0, _inferno.createVNode)(1, "th", classes, (0, _inferno.createVNode)(1, "div", "dx-scheduler-group-header-content", [!!CellTemplate && CellTemplate({
                        data: {
                            data: data,
                            id: id,
                            color: color,
                            text: text
                        },
                        index: index
                    }), !CellTemplate && (0, _inferno.createVNode)(1, "div", null, text, 0)], 0), 2, {
                        colSpan: colSpan
                    })
                };
                exports.viewFunction = viewFunction;
                const GroupPanelHorizontalCellProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(_cell_props.GroupPanelCellProps), Object.getOwnPropertyDescriptors({
                    isFirstGroupCell: false,
                    isLastGroupCell: false,
                    colSpan: 1
                })));
                exports.GroupPanelHorizontalCellProps = GroupPanelHorizontalCellProps;
                let GroupPanelHorizontalCell = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(GroupPanelHorizontalCell, _BaseInfernoComponent);

                    function GroupPanelHorizontalCell(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        return _this
                    }
                    var _proto = GroupPanelHorizontalCell.prototype;
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                cellTemplate: (TemplateProp = props.cellTemplate, TemplateProp && (TemplateProp.defaultProps ? props => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, TemplateProp, _extends({}, props))) : TemplateProp))
                            }),
                            classes: this.classes,
                            restAttributes: this.restAttributes
                        });
                        var TemplateProp
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(GroupPanelHorizontalCell, [{
                        key: "classes",
                        get: function() {
                            const {
                                className: className,
                                isFirstGroupCell: isFirstGroupCell,
                                isLastGroupCell: isLastGroupCell
                            } = this.props;
                            return (0, _combine_classes.combineClasses)({
                                "dx-scheduler-group-header": true,
                                "dx-scheduler-first-group-cell": isFirstGroupCell,
                                "dx-scheduler-last-group-cell": isLastGroupCell,
                                [className]: !!className
                            })
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return GroupPanelHorizontalCell
                }(_inferno2.BaseInfernoComponent);
                exports.GroupPanelHorizontalCell = GroupPanelHorizontalCell;
                GroupPanelHorizontalCell.defaultProps = GroupPanelHorizontalCellProps
            },
        26419:
            /*!**********************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/group_panel/horizontal/layout.js ***!
              \**********************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.HorizontalGroupPanelLayoutProps = exports.GroupPanelHorizontalLayout = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _row = __webpack_require__( /*! ./row */ 61991);
                var _group_panel_layout_props = __webpack_require__( /*! ../group_panel_layout_props */ 46833);
                const _excluded = ["className", "elementRef", "groupByDate", "groupPanelData", "height", "resourceCellTemplate", "styles"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = _ref => {
                    let {
                        groupPanelItems: groupPanelItems,
                        props: {
                            resourceCellTemplate: resourceCellTemplate
                        }
                    } = _ref;
                    return (0, _inferno.createFragment)(groupPanelItems.map(group => (0, _inferno.createComponentVNode)(2, _row.Row, {
                        groupItems: group,
                        cellTemplate: resourceCellTemplate
                    }, group[0].key)), 0)
                };
                exports.viewFunction = viewFunction;
                const HorizontalGroupPanelLayoutProps = _group_panel_layout_props.GroupPanelLayoutProps;
                exports.HorizontalGroupPanelLayoutProps = HorizontalGroupPanelLayoutProps;
                let GroupPanelHorizontalLayout = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(GroupPanelHorizontalLayout, _BaseInfernoComponent);

                    function GroupPanelHorizontalLayout(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        _this.__getterCache = {};
                        return _this
                    }
                    var _proto = GroupPanelHorizontalLayout.prototype;
                    _proto.componentWillUpdate = function(nextProps, nextState, context) {
                        if (this.props.groupPanelData !== nextProps.groupPanelData) {
                            this.__getterCache.groupPanelItems = void 0
                        }
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                resourceCellTemplate: (TemplateProp = props.resourceCellTemplate, TemplateProp && (TemplateProp.defaultProps ? props => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, TemplateProp, _extends({}, props))) : TemplateProp))
                            }),
                            groupPanelItems: this.groupPanelItems,
                            restAttributes: this.restAttributes
                        });
                        var TemplateProp
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(GroupPanelHorizontalLayout, [{
                        key: "groupPanelItems",
                        get: function() {
                            if (void 0 !== this.__getterCache.groupPanelItems) {
                                return this.__getterCache.groupPanelItems
                            }
                            return this.__getterCache.groupPanelItems = (() => {
                                const {
                                    groupPanelData: groupPanelData
                                } = this.props;
                                const {
                                    baseColSpan: baseColSpan,
                                    groupPanelItems: groupPanelItems
                                } = groupPanelData;
                                const colSpans = groupPanelItems.reduceRight((currentColSpans, groupsRow, index) => {
                                    const nextColSpans = currentColSpans;
                                    const currentLevelGroupCount = groupsRow.length;
                                    const previousColSpan = index === groupPanelItems.length - 1 ? baseColSpan : currentColSpans[index + 1];
                                    const previousLevelGroupCount = index === groupPanelItems.length - 1 ? currentLevelGroupCount : groupPanelItems[index + 1].length;
                                    const groupCountDiff = previousLevelGroupCount / currentLevelGroupCount;
                                    nextColSpans[index] = groupCountDiff * previousColSpan;
                                    return nextColSpans
                                }, [...new Array(groupPanelItems.length)]);
                                return groupPanelItems.map((groupsRenderRow, index) => {
                                    const colSpan = colSpans[index];
                                    return groupsRenderRow.map(groupItem => _extends({}, groupItem, {
                                        colSpan: colSpan
                                    }))
                                })
                            })()
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return GroupPanelHorizontalLayout
                }(_inferno2.BaseInfernoComponent);
                exports.GroupPanelHorizontalLayout = GroupPanelHorizontalLayout;
                GroupPanelHorizontalLayout.defaultProps = HorizontalGroupPanelLayoutProps
            },
        61991:
            /*!*******************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/group_panel/horizontal/row.js ***!
              \*******************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.Row = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _cell = __webpack_require__( /*! ./cell */ 40725);
                var _row_props = __webpack_require__( /*! ../row_props */ 5930);
                const _excluded = ["cellTemplate", "className", "groupItems"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = _ref => {
                    let {
                        props: {
                            cellTemplate: cellTemplate,
                            className: className,
                            groupItems: groupItems
                        }
                    } = _ref;
                    return (0, _inferno.createVNode)(1, "tr", "dx-scheduler-group-row ".concat(className), groupItems.map((_ref2, index) => {
                        let {
                            colSpan: colSpan,
                            color: color,
                            data: data,
                            id: id,
                            isFirstGroupCell: isFirstGroupCell,
                            isLastGroupCell: isLastGroupCell,
                            key: key,
                            text: text
                        } = _ref2;
                        return (0, _inferno.createComponentVNode)(2, _cell.GroupPanelHorizontalCell, {
                            text: text,
                            id: id,
                            data: data,
                            index: index,
                            color: color,
                            colSpan: colSpan,
                            isFirstGroupCell: !!isFirstGroupCell,
                            isLastGroupCell: !!isLastGroupCell,
                            cellTemplate: cellTemplate
                        }, key)
                    }), 0)
                };
                exports.viewFunction = viewFunction;
                let Row = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(Row, _BaseInfernoComponent);

                    function Row(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        return _this
                    }
                    var _proto = Row.prototype;
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                cellTemplate: (TemplateProp = props.cellTemplate, TemplateProp && (TemplateProp.defaultProps ? props => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, TemplateProp, _extends({}, props))) : TemplateProp))
                            }),
                            restAttributes: this.restAttributes
                        });
                        var TemplateProp
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(Row, [{
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return Row
                }(_inferno2.BaseInfernoComponent);
                exports.Row = Row;
                Row.defaultProps = _row_props.GroupPanelRowProps
            },
        5930:
            /*!**************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/group_panel/row_props.js ***!
              \**************************************************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.GroupPanelRowProps = void 0;
                const GroupPanelRowProps = {
                    groupItems: Object.freeze([]),
                    className: ""
                };
                exports.GroupPanelRowProps = GroupPanelRowProps
            },
        24914:
            /*!******************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/group_panel/vertical/cell.js ***!
              \******************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.GroupPanelVerticalCell = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _cell_props = __webpack_require__( /*! ../cell_props */ 85869);
                const _excluded = ["cellTemplate", "className", "color", "data", "id", "index", "text"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = viewModel => {
                    const CellTemplate = viewModel.props.cellTemplate;
                    return (0, _inferno.createVNode)(1, "div", "dx-scheduler-group-header ".concat(viewModel.props.className), [!!viewModel.props.cellTemplate && CellTemplate({
                        data: {
                            data: viewModel.props.data,
                            id: viewModel.props.id,
                            color: viewModel.props.color,
                            text: viewModel.props.text
                        },
                        index: viewModel.props.index
                    }), !viewModel.props.cellTemplate && (0, _inferno.createVNode)(1, "div", "dx-scheduler-group-header-content", viewModel.props.text, 0)], 0)
                };
                exports.viewFunction = viewFunction;
                let GroupPanelVerticalCell = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(GroupPanelVerticalCell, _BaseInfernoComponent);

                    function GroupPanelVerticalCell(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        return _this
                    }
                    var _proto = GroupPanelVerticalCell.prototype;
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                cellTemplate: (TemplateProp = props.cellTemplate, TemplateProp && (TemplateProp.defaultProps ? props => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, TemplateProp, _extends({}, props))) : TemplateProp))
                            }),
                            restAttributes: this.restAttributes
                        });
                        var TemplateProp
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(GroupPanelVerticalCell, [{
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return GroupPanelVerticalCell
                }(_inferno2.BaseInfernoComponent);
                exports.GroupPanelVerticalCell = GroupPanelVerticalCell;
                GroupPanelVerticalCell.defaultProps = _cell_props.GroupPanelCellProps
            },
        37598:
            /*!********************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/group_panel/vertical/layout.js ***!
              \********************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.VerticalGroupPanelLayoutProps = exports.GroupPanelVerticalLayout = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _row = __webpack_require__( /*! ./row */ 36415);
                var _utils = __webpack_require__( /*! ../../../utils */ 97205);
                var _group_panel_layout_props = __webpack_require__( /*! ../group_panel_layout_props */ 46833);
                const _excluded = ["className", "elementRef", "groupByDate", "groupPanelData", "height", "resourceCellTemplate", "styles"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = _ref => {
                    let {
                        props: {
                            className: className,
                            elementRef: elementRef,
                            groupPanelData: groupPanelData,
                            resourceCellTemplate: resourceCellTemplate
                        },
                        style: style
                    } = _ref;
                    return (0, _inferno.createVNode)(1, "div", className, (0, _inferno.createVNode)(1, "div", "dx-scheduler-group-flex-container", groupPanelData.groupPanelItems.map(group => (0, _inferno.createComponentVNode)(2, _row.Row, {
                        groupItems: group,
                        cellTemplate: resourceCellTemplate
                    }, group[0].key)), 0), 2, {
                        style: (0, _inferno2.normalizeStyles)(style)
                    }, null, elementRef)
                };
                exports.viewFunction = viewFunction;
                const VerticalGroupPanelLayoutProps = _group_panel_layout_props.GroupPanelLayoutProps;
                exports.VerticalGroupPanelLayoutProps = VerticalGroupPanelLayoutProps;
                let GroupPanelVerticalLayout = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(GroupPanelVerticalLayout, _BaseInfernoComponent);

                    function GroupPanelVerticalLayout(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        return _this
                    }
                    var _proto = GroupPanelVerticalLayout.prototype;
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                resourceCellTemplate: (TemplateProp = props.resourceCellTemplate, TemplateProp && (TemplateProp.defaultProps ? props => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, TemplateProp, _extends({}, props))) : TemplateProp))
                            }),
                            style: this.style,
                            restAttributes: this.restAttributes
                        });
                        var TemplateProp
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(GroupPanelVerticalLayout, [{
                        key: "style",
                        get: function() {
                            const {
                                height: height,
                                styles: styles
                            } = this.props;
                            return (0, _utils.addHeightToStyle)(height, styles)
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return GroupPanelVerticalLayout
                }(_inferno2.BaseInfernoComponent);
                exports.GroupPanelVerticalLayout = GroupPanelVerticalLayout;
                GroupPanelVerticalLayout.defaultProps = VerticalGroupPanelLayoutProps
            },
        36415:
            /*!*****************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/group_panel/vertical/row.js ***!
              \*****************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.Row = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _cell = __webpack_require__( /*! ./cell */ 24914);
                var _row_props = __webpack_require__( /*! ../row_props */ 5930);
                const _excluded = ["cellTemplate", "className", "groupItems"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = viewModel => (0, _inferno.createVNode)(1, "div", "dx-scheduler-group-row ".concat(viewModel.props.className), viewModel.props.groupItems.map((_ref, index) => {
                    let {
                        color: color,
                        data: data,
                        id: id,
                        key: key,
                        text: text
                    } = _ref;
                    return (0, _inferno.createComponentVNode)(2, _cell.GroupPanelVerticalCell, {
                        text: text,
                        id: id,
                        data: data,
                        index: index,
                        color: color,
                        cellTemplate: viewModel.props.cellTemplate
                    }, key)
                }), 0);
                exports.viewFunction = viewFunction;
                let Row = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(Row, _BaseInfernoComponent);

                    function Row(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        return _this
                    }
                    var _proto = Row.prototype;
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                cellTemplate: (TemplateProp = props.cellTemplate, TemplateProp && (TemplateProp.defaultProps ? props => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, TemplateProp, _extends({}, props))) : TemplateProp))
                            }),
                            restAttributes: this.restAttributes
                        });
                        var TemplateProp
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(Row, [{
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return Row
                }(_inferno2.BaseInfernoComponent);
                exports.Row = Row;
                Row.defaultProps = _row_props.GroupPanelRowProps
            },
        11379:
            /*!****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/header_cell.js ***!
              \****************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.HeaderCell = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _ordinary_cell = __webpack_require__( /*! ./ordinary_cell */ 72923);
                const _excluded = ["children", "className", "colSpan", "styles"];

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const viewFunction = _ref => {
                    let {
                        props: {
                            children: children,
                            className: className,
                            colSpan: colSpan,
                            styles: styles
                        }
                    } = _ref;
                    return (0, _inferno.createVNode)(1, "th", className, children, 0, {
                        style: (0, _inferno2.normalizeStyles)(styles),
                        colSpan: colSpan
                    })
                };
                exports.viewFunction = viewFunction;
                let HeaderCell = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(HeaderCell, _BaseInfernoComponent);

                    function HeaderCell(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        return _this
                    }
                    var _proto = HeaderCell.prototype;
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props),
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(HeaderCell, [{
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return HeaderCell
                }(_inferno2.BaseInfernoComponent);
                exports.HeaderCell = HeaderCell;
                HeaderCell.defaultProps = _ordinary_cell.CellProps
            },
        92366:
            /*!**********************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/header_panel/date_header/cell.js ***!
              \**********************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.DateHeaderCellProps = exports.DateHeaderCell = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _cell = __webpack_require__( /*! ../../cell */ 35064);
                var _combine_classes = __webpack_require__( /*! ../../../../../../utils/combine_classes */ 86237);
                var _utils = __webpack_require__( /*! ../../../utils */ 97205);
                var _dateHeaderText = __webpack_require__( /*! ./dateHeaderText */ 85122);
                const _excluded = ["allDay", "ariaLabel", "children", "className", "colSpan", "contentTemplateProps", "dateCellTemplate", "endDate", "groupIndex", "groups", "index", "isFirstGroupCell", "isLastGroupCell", "isTimeCellTemplate", "isWeekDayCell", "splitText", "startDate", "text", "timeCellTemplate", "today"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = _ref => {
                    let {
                        classes: classes,
                        props: {
                            colSpan: colSpan,
                            dateCellTemplate: DateCellTemplate,
                            groupIndex: groupIndex,
                            groups: groups,
                            index: index,
                            isTimeCellTemplate: isTimeCellTemplate,
                            splitText: splitText,
                            startDate: startDate,
                            text: text,
                            timeCellTemplate: TimeCellTemplate
                        },
                        useTemplate: useTemplate
                    } = _ref;
                    return (0, _inferno.createVNode)(1, "th", classes, useTemplate ? (0, _inferno.createFragment)([isTimeCellTemplate && TimeCellTemplate && TimeCellTemplate({
                        data: {
                            date: startDate,
                            text: text,
                            groups: groups,
                            groupIndex: groupIndex
                        },
                        index: index
                    }), !isTimeCellTemplate && DateCellTemplate && DateCellTemplate({
                        data: {
                            date: startDate,
                            text: text,
                            groups: groups,
                            groupIndex: groupIndex
                        },
                        index: index
                    })], 0) : (0, _inferno.createComponentVNode)(2, _dateHeaderText.DateHeaderText, {
                        splitText: splitText,
                        text: text
                    }), 0, {
                        colSpan: colSpan,
                        title: text
                    })
                };
                exports.viewFunction = viewFunction;
                const DateHeaderCellProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(_cell.CellBaseProps), Object.getOwnPropertyDescriptors({
                    today: false,
                    colSpan: 1,
                    isWeekDayCell: false,
                    splitText: false,
                    isTimeCellTemplate: false
                })));
                exports.DateHeaderCellProps = DateHeaderCellProps;
                const getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, TemplateProp, _extends({}, props))) : TemplateProp);
                let DateHeaderCell = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(DateHeaderCell, _BaseInfernoComponent);

                    function DateHeaderCell(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        return _this
                    }
                    var _proto = DateHeaderCell.prototype;
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                timeCellTemplate: getTemplate(props.timeCellTemplate),
                                dateCellTemplate: getTemplate(props.dateCellTemplate)
                            }),
                            classes: this.classes,
                            useTemplate: this.useTemplate,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(DateHeaderCell, [{
                        key: "classes",
                        get: function() {
                            const {
                                className: className,
                                isFirstGroupCell: isFirstGroupCell,
                                isLastGroupCell: isLastGroupCell,
                                isWeekDayCell: isWeekDayCell,
                                today: today
                            } = this.props;
                            const cellClasses = (0, _combine_classes.combineClasses)({
                                "dx-scheduler-header-panel-cell": true,
                                "dx-scheduler-cell-sizes-horizontal": true,
                                "dx-scheduler-header-panel-current-time-cell": today,
                                "dx-scheduler-header-panel-week-cell": isWeekDayCell,
                                [className]: !!className
                            });
                            return (0, _utils.getGroupCellClasses)(isFirstGroupCell, isLastGroupCell, cellClasses)
                        }
                    }, {
                        key: "useTemplate",
                        get: function() {
                            const {
                                dateCellTemplate: dateCellTemplate,
                                isTimeCellTemplate: isTimeCellTemplate,
                                timeCellTemplate: timeCellTemplate
                            } = this.props;
                            return !isTimeCellTemplate && !!dateCellTemplate || isTimeCellTemplate && !!timeCellTemplate
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return DateHeaderCell
                }(_inferno2.BaseInfernoComponent);
                exports.DateHeaderCell = DateHeaderCell;
                DateHeaderCell.defaultProps = DateHeaderCellProps
            },
        85122:
            /*!********************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/header_panel/date_header/dateHeaderText.js ***!
              \********************************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.DateHeaderTextProps = exports.DateHeaderText = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                const _excluded = ["splitText", "text"];

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const viewFunction = _ref => {
                    let {
                        props: {
                            splitText: splitText,
                            text: text
                        },
                        textParts: textParts
                    } = _ref;
                    return (0, _inferno.createFragment)(splitText ? textParts.map(part => (0, _inferno.createVNode)(1, "div", "dx-scheduler-header-panel-cell-date", (0, _inferno.createVNode)(1, "span", null, part, 0), 2)) : text, 0)
                };
                exports.viewFunction = viewFunction;
                const DateHeaderTextProps = {
                    text: "",
                    splitText: false
                };
                exports.DateHeaderTextProps = DateHeaderTextProps;
                let DateHeaderText = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(DateHeaderText, _BaseInfernoComponent);

                    function DateHeaderText(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        _this.__getterCache = {};
                        return _this
                    }
                    var _proto = DateHeaderText.prototype;
                    _proto.componentWillUpdate = function(nextProps, nextState, context) {
                        if (this.props.text !== nextProps.text) {
                            this.__getterCache.textParts = void 0
                        }
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props),
                            textParts: this.textParts,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(DateHeaderText, [{
                        key: "textParts",
                        get: function() {
                            if (void 0 !== this.__getterCache.textParts) {
                                return this.__getterCache.textParts
                            }
                            return this.__getterCache.textParts = (() => {
                                const {
                                    text: text
                                } = this.props;
                                return text ? text.split(" ") : [""]
                            })()
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return DateHeaderText
                }(_inferno2.BaseInfernoComponent);
                exports.DateHeaderText = DateHeaderText;
                DateHeaderText.defaultProps = DateHeaderTextProps
            },
        35878:
            /*!************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/header_panel/date_header/layout.js ***!
              \************************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.DateHeaderLayoutProps = exports.DateHeaderLayout = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _row = __webpack_require__( /*! ../../row */ 14364);
                var _utils = __webpack_require__( /*! ../../../utils */ 97205);
                var _cell = __webpack_require__( /*! ./cell */ 92366);
                var _getThemeType = (obj = __webpack_require__( /*! ../../../../../../utils/getThemeType */ 32586), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const _excluded = ["dateCellTemplate", "dateHeaderData", "groupByDate", "groupOrientation", "groups", "timeCellTemplate"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const {
                    isMaterialBased: isMaterialBased
                } = (0, _getThemeType.default)();
                const viewFunction = _ref => {
                    let {
                        isHorizontalGrouping: isHorizontalGrouping,
                        props: {
                            dateCellTemplate: dateCellTemplate,
                            dateHeaderData: dateHeaderData
                        }
                    } = _ref;
                    const {
                        dataMap: dataMap,
                        leftVirtualCellCount: leftVirtualCellCount,
                        leftVirtualCellWidth: leftVirtualCellWidth,
                        rightVirtualCellCount: rightVirtualCellCount,
                        rightVirtualCellWidth: rightVirtualCellWidth
                    } = dateHeaderData;
                    return (0, _inferno.createFragment)(dataMap.map((dateHeaderRow, rowIndex) => (0, _inferno.createComponentVNode)(2, _row.Row, {
                        className: "dx-scheduler-header-row",
                        leftVirtualCellWidth: leftVirtualCellWidth,
                        leftVirtualCellCount: leftVirtualCellCount,
                        rightVirtualCellWidth: rightVirtualCellWidth,
                        rightVirtualCellCount: rightVirtualCellCount,
                        isHeaderRow: true,
                        children: dateHeaderRow.map(_ref2 => {
                            let {
                                colSpan: colSpan,
                                endDate: endDate,
                                groupIndex: groupIndex,
                                groups: cellGroups,
                                index: index,
                                isFirstGroupCell: isFirstGroupCell,
                                isLastGroupCell: isLastGroupCell,
                                key: key,
                                startDate: startDate,
                                text: text,
                                today: today
                            } = _ref2;
                            return (0, _inferno.createComponentVNode)(2, _cell.DateHeaderCell, {
                                startDate: startDate,
                                endDate: endDate,
                                groups: isHorizontalGrouping ? cellGroups : void 0,
                                groupIndex: isHorizontalGrouping ? groupIndex : void 0,
                                today: today,
                                index: index,
                                text: text,
                                isFirstGroupCell: isFirstGroupCell,
                                isLastGroupCell: isLastGroupCell,
                                dateCellTemplate: dateCellTemplate,
                                colSpan: colSpan,
                                splitText: isMaterialBased
                            }, key)
                        })
                    }, rowIndex.toString())), 0)
                };
                exports.viewFunction = viewFunction;
                const DateHeaderLayoutProps = {
                    groupOrientation: "horizontal",
                    groupByDate: false,
                    groups: Object.freeze([])
                };
                exports.DateHeaderLayoutProps = DateHeaderLayoutProps;
                const getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, TemplateProp, _extends({}, props))) : TemplateProp);
                let DateHeaderLayout = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(DateHeaderLayout, _BaseInfernoComponent);

                    function DateHeaderLayout(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        return _this
                    }
                    var _proto = DateHeaderLayout.prototype;
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                dateCellTemplate: getTemplate(props.dateCellTemplate),
                                timeCellTemplate: getTemplate(props.timeCellTemplate)
                            }),
                            isHorizontalGrouping: this.isHorizontalGrouping,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(DateHeaderLayout, [{
                        key: "isHorizontalGrouping",
                        get: function() {
                            const {
                                groupByDate: groupByDate,
                                groupOrientation: groupOrientation,
                                groups: groups
                            } = this.props;
                            return (0, _utils.isHorizontalGroupingApplied)(groups, groupOrientation) && !groupByDate
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return DateHeaderLayout
                }(_inferno2.BaseInfernoComponent);
                exports.DateHeaderLayout = DateHeaderLayout;
                DateHeaderLayout.defaultProps = DateHeaderLayoutProps
            },
        32972:
            /*!**************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/header_panel/layout.j.js ***!
              \**************************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _component_registrator = (obj = __webpack_require__( /*! ../../../../../../core/component_registrator */ 99393), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _header_panel = __webpack_require__( /*! ../../../../../component_wrapper/scheduler/header_panel */ 86214);
                var _layout = __webpack_require__( /*! ./layout */ 84011);

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let HeaderPanelLayout = function(_HeaderPanel) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(HeaderPanelLayout, _HeaderPanel);

                    function HeaderPanelLayout() {
                        return _HeaderPanel.apply(this, arguments) || this
                    }! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(HeaderPanelLayout, [{
                        key: "_propsInfo",
                        get: function() {
                            return {
                                twoWay: [],
                                allowNull: [],
                                elements: [],
                                templates: ["dateCellTemplate", "timeCellTemplate", "dateHeaderTemplate", "resourceCellTemplate"],
                                props: ["dateHeaderData", "isRenderDateHeader", "dateCellTemplate", "timeCellTemplate", "dateHeaderTemplate", "groups", "groupOrientation", "groupPanelData", "groupByDate", "height", "className", "resourceCellTemplate"]
                            }
                        }
                    }, {
                        key: "_viewComponent",
                        get: function() {
                            return _layout.HeaderPanelLayout
                        }
                    }]);
                    return HeaderPanelLayout
                }(_header_panel.HeaderPanel);
                exports.default = HeaderPanelLayout;
                (0, _component_registrator.default)("dxHeaderPanelLayout", HeaderPanelLayout);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        84011:
            /*!************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/header_panel/layout.js ***!
              \************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.HeaderPanelLayoutProps = exports.HeaderPanelLayout = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _utils = __webpack_require__( /*! ../../utils */ 97205);
                var _group_panel = __webpack_require__( /*! ../group_panel/group_panel */ 80954);
                var _layout = __webpack_require__( /*! ./date_header/layout */ 35878);
                const _excluded = ["className", "dateCellTemplate", "dateHeaderData", "dateHeaderTemplate", "elementRef", "groupByDate", "groupOrientation", "groupPanelData", "groups", "height", "isRenderDateHeader", "resourceCellTemplate", "timeCellTemplate"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = _ref => {
                    let {
                        isHorizontalGrouping: isHorizontalGrouping,
                        props: {
                            dateCellTemplate: dateCellTemplate,
                            dateHeaderData: dateHeaderData,
                            dateHeaderTemplate: DateHeader,
                            groupByDate: groupByDate,
                            groupOrientation: groupOrientation,
                            groupPanelData: groupPanelData,
                            groups: groups,
                            isRenderDateHeader: isRenderDateHeader,
                            resourceCellTemplate: resourceCellTemplate,
                            timeCellTemplate: timeCellTemplate
                        }
                    } = _ref;
                    return (0, _inferno.createVNode)(1, "thead", null, [isHorizontalGrouping && !groupByDate && (0, _inferno.createComponentVNode)(2, _group_panel.GroupPanel, {
                        groupPanelData: groupPanelData,
                        groups: groups,
                        groupByDate: groupByDate,
                        groupOrientation: groupOrientation,
                        resourceCellTemplate: resourceCellTemplate
                    }), isRenderDateHeader && DateHeader({
                        groupByDate: groupByDate,
                        dateHeaderData: dateHeaderData,
                        groupOrientation: groupOrientation,
                        groups: groups,
                        dateCellTemplate: dateCellTemplate,
                        timeCellTemplate: timeCellTemplate
                    }), groupByDate && (0, _inferno.createComponentVNode)(2, _group_panel.GroupPanel, {
                        groupPanelData: groupPanelData,
                        groups: groups,
                        groupByDate: groupByDate,
                        groupOrientation: groupOrientation,
                        resourceCellTemplate: resourceCellTemplate
                    })], 0)
                };
                exports.viewFunction = viewFunction;
                const HeaderPanelLayoutProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(_group_panel.GroupPanelProps), Object.getOwnPropertyDescriptors({
                    isRenderDateHeader: true,
                    dateHeaderTemplate: _layout.DateHeaderLayout
                })));
                exports.HeaderPanelLayoutProps = HeaderPanelLayoutProps;
                const getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, TemplateProp, _extends({}, props))) : TemplateProp);
                let HeaderPanelLayout = function(_InfernoWrapperCompon) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(HeaderPanelLayout, _InfernoWrapperCompon);

                    function HeaderPanelLayout(props) {
                        var _this;
                        _this = _InfernoWrapperCompon.call(this, props) || this;
                        _this.state = {};
                        return _this
                    }
                    var _proto = HeaderPanelLayout.prototype;
                    _proto.createEffects = function() {
                        return [(0, _inferno2.createReRenderEffect)()]
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                dateCellTemplate: getTemplate(props.dateCellTemplate),
                                timeCellTemplate: getTemplate(props.timeCellTemplate),
                                dateHeaderTemplate: getTemplate(props.dateHeaderTemplate),
                                resourceCellTemplate: getTemplate(props.resourceCellTemplate)
                            }),
                            isHorizontalGrouping: this.isHorizontalGrouping,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(HeaderPanelLayout, [{
                        key: "isHorizontalGrouping",
                        get: function() {
                            const {
                                groupOrientation: groupOrientation,
                                groups: groups
                            } = this.props;
                            return (0, _utils.isHorizontalGroupingApplied)(groups, groupOrientation)
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return HeaderPanelLayout
                }(_inferno2.InfernoWrapperComponent);
                exports.HeaderPanelLayout = HeaderPanelLayout;
                HeaderPanelLayout.defaultProps = HeaderPanelLayoutProps
            },
        71604:
            /*!*****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/layout_props.js ***!
              \*****************************************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.LayoutProps = void 0;
                const LayoutProps = {
                    viewData: Object.freeze({
                        groupedData: [],
                        leftVirtualCellCount: 0,
                        rightVirtualCellCount: 0,
                        topVirtualRowCount: 0,
                        bottomVirtualRowCount: 0
                    }),
                    leftVirtualCellWidth: 0,
                    rightVirtualCellWidth: 0,
                    topVirtualRowHeight: 0,
                    bottomVirtualRowHeight: 0,
                    addDateTableClass: true,
                    addVerticalSizesClassToRows: true
                };
                exports.LayoutProps = LayoutProps
            },
        72923:
            /*!******************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/ordinary_cell.js ***!
              \******************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.OrdinaryCell = exports.CellProps = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                const _excluded = ["children", "className", "colSpan", "styles"];

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const viewFunction = _ref => {
                    let {
                        props: {
                            children: children,
                            className: className,
                            colSpan: colSpan,
                            styles: styles
                        }
                    } = _ref;
                    return (0, _inferno.createVNode)(1, "td", className, children, 0, {
                        style: (0, _inferno2.normalizeStyles)(styles),
                        colSpan: colSpan
                    })
                };
                exports.viewFunction = viewFunction;
                const CellProps = {};
                exports.CellProps = CellProps;
                let OrdinaryCell = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(OrdinaryCell, _BaseInfernoComponent);

                    function OrdinaryCell(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        return _this
                    }
                    var _proto = OrdinaryCell.prototype;
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props),
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(OrdinaryCell, [{
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return OrdinaryCell
                }(_inferno2.BaseInfernoComponent);
                exports.OrdinaryCell = OrdinaryCell;
                OrdinaryCell.defaultProps = CellProps
            },
        14364:
            /*!********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/row.js ***!
              \********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.RowProps = exports.Row = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _virtual_cell = __webpack_require__( /*! ./virtual_cell */ 87551);
                const _excluded = ["children", "className", "isHeaderRow", "leftVirtualCellCount", "leftVirtualCellWidth", "rightVirtualCellCount", "rightVirtualCellWidth", "styles"];

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const viewFunction = _ref => {
                    let {
                        hasLeftVirtualCell: hasLeftVirtualCell,
                        hasRightVirtualCell: hasRightVirtualCell,
                        props: {
                            children: children,
                            className: className,
                            isHeaderRow: isHeaderRow,
                            leftVirtualCellCount: leftVirtualCellCount,
                            leftVirtualCellWidth: leftVirtualCellWidth,
                            rightVirtualCellCount: rightVirtualCellCount,
                            rightVirtualCellWidth: rightVirtualCellWidth,
                            styles: styles
                        }
                    } = _ref;
                    return (0, _inferno.createVNode)(1, "tr", className, [hasLeftVirtualCell && (0, _inferno.createComponentVNode)(2, _virtual_cell.VirtualCell, {
                        width: leftVirtualCellWidth,
                        colSpan: leftVirtualCellCount,
                        isHeaderCell: isHeaderRow
                    }), children, hasRightVirtualCell && (0, _inferno.createComponentVNode)(2, _virtual_cell.VirtualCell, {
                        width: rightVirtualCellWidth,
                        colSpan: rightVirtualCellCount,
                        isHeaderCell: isHeaderRow
                    })], 0, {
                        style: (0, _inferno2.normalizeStyles)(styles)
                    })
                };
                exports.viewFunction = viewFunction;
                const RowProps = {
                    className: "",
                    leftVirtualCellWidth: 0,
                    rightVirtualCellWidth: 0,
                    isHeaderRow: false
                };
                exports.RowProps = RowProps;
                let Row = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(Row, _BaseInfernoComponent);

                    function Row(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        return _this
                    }
                    var _proto = Row.prototype;
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props),
                            hasLeftVirtualCell: this.hasLeftVirtualCell,
                            hasRightVirtualCell: this.hasRightVirtualCell,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(Row, [{
                        key: "hasLeftVirtualCell",
                        get: function() {
                            const {
                                leftVirtualCellCount: leftVirtualCellCount
                            } = this.props;
                            return !!leftVirtualCellCount
                        }
                    }, {
                        key: "hasRightVirtualCell",
                        get: function() {
                            const {
                                rightVirtualCellCount: rightVirtualCellCount
                            } = this.props;
                            return !!rightVirtualCellCount
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return Row
                }(_inferno2.BaseInfernoComponent);
                exports.Row = Row;
                Row.defaultProps = RowProps
            },
        48868:
            /*!**********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/table.js ***!
              \**********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.TableProps = exports.Table = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _utils = __webpack_require__( /*! ../utils */ 97205);
                var _virtual_row = __webpack_require__( /*! ./virtual_row */ 4784);
                const _excluded = ["bottomVirtualRowHeight", "children", "className", "height", "leftVirtualCellCount", "leftVirtualCellWidth", "rightVirtualCellCount", "rightVirtualCellWidth", "tableRef", "topVirtualRowHeight", "virtualCellsCount", "width"];

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const viewFunction = _ref => {
                    let {
                        hasBottomVirtualRow: hasBottomVirtualRow,
                        hasTopVirtualRow: hasTopVirtualRow,
                        props: {
                            bottomVirtualRowHeight: bottomVirtualRowHeight,
                            children: children,
                            className: className,
                            leftVirtualCellCount: leftVirtualCellCount,
                            leftVirtualCellWidth: leftVirtualCellWidth,
                            rightVirtualCellCount: rightVirtualCellCount,
                            rightVirtualCellWidth: rightVirtualCellWidth,
                            tableRef: tableRef,
                            topVirtualRowHeight: topVirtualRowHeight,
                            virtualCellsCount: virtualCellsCount
                        },
                        style: style
                    } = _ref;
                    return (0, _inferno.createVNode)(1, "table", className, (0, _inferno.createVNode)(1, "tbody", null, [hasTopVirtualRow && (0, _inferno.createComponentVNode)(2, _virtual_row.VirtualRow, {
                        height: topVirtualRowHeight,
                        cellsCount: virtualCellsCount,
                        leftVirtualCellWidth: leftVirtualCellWidth,
                        rightVirtualCellWidth: rightVirtualCellWidth,
                        leftVirtualCellCount: leftVirtualCellCount,
                        rightVirtualCellCount: rightVirtualCellCount
                    }), children, hasBottomVirtualRow && (0, _inferno.createComponentVNode)(2, _virtual_row.VirtualRow, {
                        height: bottomVirtualRowHeight,
                        cellsCount: virtualCellsCount,
                        leftVirtualCellWidth: leftVirtualCellWidth,
                        rightVirtualCellWidth: rightVirtualCellWidth,
                        leftVirtualCellCount: leftVirtualCellCount,
                        rightVirtualCellCount: rightVirtualCellCount
                    })], 0), 2, {
                        style: (0, _inferno2.normalizeStyles)(style)
                    }, null, tableRef)
                };
                exports.viewFunction = viewFunction;
                const TableProps = {
                    className: "",
                    topVirtualRowHeight: 0,
                    bottomVirtualRowHeight: 0,
                    leftVirtualCellWidth: 0,
                    rightVirtualCellWidth: 0,
                    virtualCellsCount: 0
                };
                exports.TableProps = TableProps;
                let Table = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(Table, _BaseInfernoComponent);

                    function Table(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        _this.elementRef = (0, _inferno.createRef)();
                        return _this
                    }
                    var _proto = Table.prototype;
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props),
                            elementRef: this.elementRef,
                            style: this.style,
                            hasTopVirtualRow: this.hasTopVirtualRow,
                            hasBottomVirtualRow: this.hasBottomVirtualRow,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(Table, [{
                        key: "style",
                        get: function() {
                            const {
                                height: height,
                                width: width
                            } = this.props;
                            const {
                                style: style
                            } = this.restAttributes;
                            const heightAdded = (0, _utils.addHeightToStyle)(height, style);
                            return (0, _utils.addWidthToStyle)(width, heightAdded)
                        }
                    }, {
                        key: "hasTopVirtualRow",
                        get: function() {
                            const {
                                topVirtualRowHeight: topVirtualRowHeight
                            } = this.props;
                            return !!topVirtualRowHeight
                        }
                    }, {
                        key: "hasBottomVirtualRow",
                        get: function() {
                            const {
                                bottomVirtualRowHeight: bottomVirtualRowHeight
                            } = this.props;
                            return !!bottomVirtualRowHeight
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return Table
                }(_inferno2.BaseInfernoComponent);
                exports.Table = Table;
                Table.defaultProps = TableProps
            },
        37217:
            /*!********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/time_panel/cell.js ***!
              \********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.TimePanelCellProps = exports.TimePanelCell = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _cell = __webpack_require__( /*! ../cell */ 35064);
                const _excluded = ["allDay", "ariaLabel", "children", "className", "contentTemplateProps", "endDate", "groupIndex", "groups", "highlighted", "index", "isFirstGroupCell", "isLastGroupCell", "startDate", "text", "timeCellTemplate"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = _ref => {
                    let {
                        props: {
                            className: className,
                            highlighted: highlighted,
                            isFirstGroupCell: isFirstGroupCell,
                            isLastGroupCell: isLastGroupCell,
                            text: text,
                            timeCellTemplate: TimeCellTemplate
                        },
                        timeCellTemplateProps: timeCellTemplateProps
                    } = _ref;
                    return (0, _inferno.createComponentVNode)(2, _cell.CellBase, {
                        isFirstGroupCell: isFirstGroupCell,
                        isLastGroupCell: isLastGroupCell,
                        className: "dx-scheduler-time-panel-cell dx-scheduler-cell-sizes-vertical ".concat(highlighted ? "dx-scheduler-time-panel-current-time-cell" : "", " ").concat(className),
                        children: [!TimeCellTemplate && (0, _inferno.createVNode)(1, "div", null, text, 0), !!TimeCellTemplate && TimeCellTemplate({
                            index: timeCellTemplateProps.index,
                            data: timeCellTemplateProps.data
                        })]
                    })
                };
                exports.viewFunction = viewFunction;
                const TimePanelCellProps = _cell.CellBaseProps;
                exports.TimePanelCellProps = TimePanelCellProps;
                let TimePanelCell = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(TimePanelCell, _BaseInfernoComponent);

                    function TimePanelCell(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        _this.__getterCache = {};
                        return _this
                    }
                    var _proto = TimePanelCell.prototype;
                    _proto.componentWillUpdate = function(nextProps, nextState, context) {
                        if (this.props.groupIndex !== nextProps.groupIndex || this.props.groups !== nextProps.groups || this.props.index !== nextProps.index || this.props.startDate !== nextProps.startDate || this.props.text !== nextProps.text) {
                            this.__getterCache.timeCellTemplateProps = void 0
                        }
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                timeCellTemplate: (TemplateProp = props.timeCellTemplate, TemplateProp && (TemplateProp.defaultProps ? props => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, TemplateProp, _extends({}, props))) : TemplateProp))
                            }),
                            timeCellTemplateProps: this.timeCellTemplateProps,
                            restAttributes: this.restAttributes
                        });
                        var TemplateProp
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(TimePanelCell, [{
                        key: "timeCellTemplateProps",
                        get: function() {
                            if (void 0 !== this.__getterCache.timeCellTemplateProps) {
                                return this.__getterCache.timeCellTemplateProps
                            }
                            return this.__getterCache.timeCellTemplateProps = (() => {
                                const {
                                    groupIndex: groupIndex,
                                    groups: groups,
                                    index: index,
                                    startDate: startDate,
                                    text: text
                                } = this.props;
                                return {
                                    data: {
                                        date: startDate,
                                        groups: groups,
                                        groupIndex: groupIndex,
                                        text: text
                                    },
                                    index: index
                                }
                            })()
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return TimePanelCell
                }(_inferno2.BaseInfernoComponent);
                exports.TimePanelCell = TimePanelCell;
                TimePanelCell.defaultProps = TimePanelCellProps
            },
        89687:
            /*!************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/time_panel/layout.j.js ***!
              \************************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _component_registrator = (obj = __webpack_require__( /*! ../../../../../../core/component_registrator */ 99393), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _time_panel = __webpack_require__( /*! ../../../../../component_wrapper/scheduler/time_panel */ 99503);
                var _layout = __webpack_require__( /*! ./layout */ 41541);

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let TimePanelTableLayout = function(_TimePanel) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(TimePanelTableLayout, _TimePanel);

                    function TimePanelTableLayout() {
                        return _TimePanel.apply(this, arguments) || this
                    }! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(TimePanelTableLayout, [{
                        key: "_propsInfo",
                        get: function() {
                            return {
                                twoWay: [],
                                allowNull: [],
                                elements: [],
                                templates: ["timeCellTemplate"],
                                props: ["groupOrientation", "timePanelData", "timeCellTemplate"]
                            }
                        }
                    }, {
                        key: "_viewComponent",
                        get: function() {
                            return _layout.TimePanelTableLayout
                        }
                    }]);
                    return TimePanelTableLayout
                }(_time_panel.TimePanel);
                exports.default = TimePanelTableLayout;
                (0, _component_registrator.default)("dxTimePanelTableLayout", TimePanelTableLayout);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        41541:
            /*!**********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/time_panel/layout.js ***!
              \**********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.TimePanelTableLayout = exports.TimePanelLayoutProps = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _row = __webpack_require__( /*! ../row */ 14364);
                var _cell = __webpack_require__( /*! ./cell */ 37217);
                var _cell2 = __webpack_require__( /*! ../cell */ 35064);
                var _table = __webpack_require__( /*! ../table */ 48868);
                var _title = __webpack_require__( /*! ../date_table/all_day_panel/title */ 7149);
                const _excluded = ["groupOrientation", "tableRef", "timeCellTemplate", "timePanelData"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = _ref => {
                    let {
                        bottomVirtualRowHeight: bottomVirtualRowHeight,
                        props: {
                            tableRef: tableRef,
                            timeCellTemplate: timeCellTemplate,
                            timePanelData: timePanelData
                        },
                        restAttributes: restAttributes,
                        topVirtualRowHeight: topVirtualRowHeight
                    } = _ref;
                    return (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _table.Table, _extends({}, restAttributes, {
                        topVirtualRowHeight: topVirtualRowHeight,
                        bottomVirtualRowHeight: bottomVirtualRowHeight,
                        virtualCellsCount: 1,
                        className: "dx-scheduler-time-panel",
                        tableRef: tableRef,
                        children: timePanelData.groupedData.map(_ref2 => {
                            let {
                                dateTable: dateTable,
                                groupIndex: groupIndex,
                                isGroupedAllDayPanel: isGroupedAllDayPanel,
                                key: fragmentKey
                            } = _ref2;
                            return (0, _inferno.createFragment)([isGroupedAllDayPanel && (0, _inferno.createComponentVNode)(2, _row.Row, {
                                children: (0, _inferno.createComponentVNode)(2, _cell2.CellBase, {
                                    className: "dx-scheduler-time-panel-title-cell",
                                    children: (0, _inferno.createComponentVNode)(2, _title.AllDayPanelTitle)
                                })
                            }), dateTable.map(cell => {
                                const {
                                    groups: groups,
                                    highlighted: highlighted,
                                    index: cellIndex,
                                    isFirstGroupCell: isFirstGroupCell,
                                    isLastGroupCell: isLastGroupCell,
                                    key: key,
                                    startDate: startDate,
                                    text: text
                                } = cell;
                                return (0, _inferno.createComponentVNode)(2, _row.Row, {
                                    className: "dx-scheduler-time-panel-row",
                                    children: (0, _inferno.createComponentVNode)(2, _cell.TimePanelCell, {
                                        startDate: startDate,
                                        text: text,
                                        groups: groups,
                                        groupIndex: groupIndex,
                                        isFirstGroupCell: isFirstGroupCell,
                                        isLastGroupCell: isLastGroupCell,
                                        index: cellIndex,
                                        timeCellTemplate: timeCellTemplate,
                                        highlighted: highlighted
                                    })
                                }, key)
                            })], 0, fragmentKey)
                        })
                    })))
                };
                exports.viewFunction = viewFunction;
                const TimePanelLayoutProps = {
                    timePanelData: Object.freeze({
                        groupedData: [],
                        leftVirtualCellCount: 0,
                        rightVirtualCellCount: 0,
                        topVirtualRowCount: 0,
                        bottomVirtualRowCount: 0
                    })
                };
                exports.TimePanelLayoutProps = TimePanelLayoutProps;
                let TimePanelTableLayout = function(_InfernoWrapperCompon) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(TimePanelTableLayout, _InfernoWrapperCompon);

                    function TimePanelTableLayout(props) {
                        var _this;
                        _this = _InfernoWrapperCompon.call(this, props) || this;
                        _this.state = {};
                        return _this
                    }
                    var _proto = TimePanelTableLayout.prototype;
                    _proto.createEffects = function() {
                        return [(0, _inferno2.createReRenderEffect)()]
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                timeCellTemplate: (TemplateProp = props.timeCellTemplate, TemplateProp && (TemplateProp.defaultProps ? props => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, TemplateProp, _extends({}, props))) : TemplateProp))
                            }),
                            topVirtualRowHeight: this.topVirtualRowHeight,
                            bottomVirtualRowHeight: this.bottomVirtualRowHeight,
                            restAttributes: this.restAttributes
                        });
                        var TemplateProp
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(TimePanelTableLayout, [{
                        key: "topVirtualRowHeight",
                        get: function() {
                            var _this$props$timePanel;
                            return null !== (_this$props$timePanel = this.props.timePanelData.topVirtualRowHeight) && void 0 !== _this$props$timePanel ? _this$props$timePanel : 0
                        }
                    }, {
                        key: "bottomVirtualRowHeight",
                        get: function() {
                            var _this$props$timePanel2;
                            return null !== (_this$props$timePanel2 = this.props.timePanelData.bottomVirtualRowHeight) && void 0 !== _this$props$timePanel2 ? _this$props$timePanel2 : 0
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return TimePanelTableLayout
                }(_inferno2.InfernoWrapperComponent);
                exports.TimePanelTableLayout = TimePanelTableLayout;
                TimePanelTableLayout.defaultProps = TimePanelLayoutProps
            },
        87551:
            /*!*****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/virtual_cell.js ***!
              \*****************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.VirtualCellProps = exports.VirtualCell = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _utils = __webpack_require__( /*! ../utils */ 97205);
                var _header_cell = __webpack_require__( /*! ./header_cell */ 11379);
                var _ordinary_cell = __webpack_require__( /*! ./ordinary_cell */ 72923);
                const _excluded = ["colSpan", "isHeaderCell", "width"];

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const viewFunction = _ref => {
                    let {
                        props: {
                            colSpan: colSpan,
                            isHeaderCell: isHeaderCell
                        },
                        style: style
                    } = _ref;
                    const Cell = isHeaderCell ? _header_cell.HeaderCell : _ordinary_cell.OrdinaryCell;
                    return (0, _inferno.createComponentVNode)(2, Cell, {
                        className: "dx-scheduler-virtual-cell",
                        styles: style,
                        colSpan: colSpan
                    })
                };
                exports.viewFunction = viewFunction;
                const VirtualCellProps = {
                    width: 0,
                    isHeaderCell: false
                };
                exports.VirtualCellProps = VirtualCellProps;
                let VirtualCell = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(VirtualCell, _BaseInfernoComponent);

                    function VirtualCell(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        return _this
                    }
                    var _proto = VirtualCell.prototype;
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props),
                            style: this.style,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(VirtualCell, [{
                        key: "style",
                        get: function() {
                            const {
                                width: width
                            } = this.props;
                            const {
                                style: style
                            } = this.restAttributes;
                            return (0, _utils.addWidthToStyle)(width, style)
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return VirtualCell
                }(_inferno2.BaseInfernoComponent);
                exports.VirtualCell = VirtualCell;
                VirtualCell.defaultProps = VirtualCellProps
            },
        4784:
            /*!****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/base/virtual_row.js ***!
              \****************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.VirtualRowProps = exports.VirtualRow = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _utils = __webpack_require__( /*! ../utils */ 97205);
                var _row = __webpack_require__( /*! ./row */ 14364);
                var _virtual_cell = __webpack_require__( /*! ./virtual_cell */ 87551);
                const _excluded = ["cellsCount", "children", "className", "height", "isHeaderRow", "leftVirtualCellCount", "leftVirtualCellWidth", "rightVirtualCellCount", "rightVirtualCellWidth", "styles"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = _ref => {
                    let {
                        classes: classes,
                        props: {
                            leftVirtualCellCount: leftVirtualCellCount,
                            leftVirtualCellWidth: leftVirtualCellWidth,
                            rightVirtualCellCount: rightVirtualCellCount,
                            rightVirtualCellWidth: rightVirtualCellWidth
                        },
                        style: style,
                        virtualCells: virtualCells
                    } = _ref;
                    return (0, _inferno.createComponentVNode)(2, _row.Row, {
                        styles: style,
                        className: classes,
                        leftVirtualCellWidth: leftVirtualCellWidth,
                        rightVirtualCellWidth: rightVirtualCellWidth,
                        leftVirtualCellCount: leftVirtualCellCount,
                        rightVirtualCellCount: rightVirtualCellCount,
                        children: virtualCells.map((_, index) => (0, _inferno.createComponentVNode)(2, _virtual_cell.VirtualCell, null, index.toString()))
                    })
                };
                exports.viewFunction = viewFunction;
                const VirtualRowProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(_row.RowProps), Object.getOwnPropertyDescriptors({
                    leftVirtualCellWidth: 0,
                    rightVirtualCellWidth: 0,
                    cellsCount: 1
                })));
                exports.VirtualRowProps = VirtualRowProps;
                let VirtualRow = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(VirtualRow, _BaseInfernoComponent);

                    function VirtualRow(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        _this.__getterCache = {};
                        return _this
                    }
                    var _proto = VirtualRow.prototype;
                    _proto.componentWillUpdate = function(nextProps, nextState, context) {
                        if (this.props.cellsCount !== nextProps.cellsCount) {
                            this.__getterCache.virtualCells = void 0
                        }
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props),
                            style: this.style,
                            classes: this.classes,
                            virtualCells: this.virtualCells,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(VirtualRow, [{
                        key: "style",
                        get: function() {
                            const {
                                height: height
                            } = this.props;
                            const {
                                style: style
                            } = this.restAttributes;
                            return (0, _utils.addHeightToStyle)(height, style)
                        }
                    }, {
                        key: "classes",
                        get: function() {
                            const {
                                className: className
                            } = this.props;
                            return "dx-scheduler-virtual-row ".concat(className)
                        }
                    }, {
                        key: "virtualCells",
                        get: function() {
                            if (void 0 !== this.__getterCache.virtualCells) {
                                return this.__getterCache.virtualCells
                            }
                            return this.__getterCache.virtualCells = (() => {
                                const {
                                    cellsCount: cellsCount
                                } = this.props;
                                return [...Array(cellsCount)]
                            })()
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return VirtualRow
                }(_inferno2.BaseInfernoComponent);
                exports.VirtualRow = VirtualRow;
                VirtualRow.defaultProps = VirtualRowProps
            },
        8936:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/const.js ***!
              \*****************************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.DefaultSizes = exports.DATE_TABLE_ROW_CLASS = exports.DATE_TABLE_CELL_CLASS = exports.ALL_DAY_ROW_CLASS = exports.ALL_DAY_PANEL_CELL_CLASS = void 0;
                exports.DefaultSizes = {
                    allDayPanelHeight: 25
                };
                exports.DATE_TABLE_CELL_CLASS = "dx-scheduler-date-table-cell";
                exports.ALL_DAY_PANEL_CELL_CLASS = "dx-scheduler-all-day-table-cell";
                exports.DATE_TABLE_ROW_CLASS = "dx-scheduler-date-table-row";
                exports.ALL_DAY_ROW_CLASS = "dx-scheduler-all-day-table-row"
            },
        9553:
            /*!*********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/month/date_table/cell.js ***!
              \*********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.MonthDateTableCell = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _combine_classes = __webpack_require__( /*! ../../../../../utils/combine_classes */ 86237);
                var _cell = __webpack_require__( /*! ../../base/date_table/cell */ 51430);
                const _excluded = ["allDay", "ariaLabel", "children", "className", "contentTemplateProps", "dataCellTemplate", "endDate", "firstDayOfMonth", "groupIndex", "groups", "index", "isFirstGroupCell", "isFocused", "isLastGroupCell", "isSelected", "otherMonth", "startDate", "text", "today"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = _ref => {
                    let {
                        classes: classes,
                        contentTemplateProps: contentTemplateProps,
                        props: {
                            dataCellTemplate: dataCellTemplate,
                            endDate: endDate,
                            groupIndex: groupIndex,
                            groups: groups,
                            index: index,
                            isFirstGroupCell: isFirstGroupCell,
                            isFocused: isFocused,
                            isLastGroupCell: isLastGroupCell,
                            isSelected: isSelected,
                            startDate: startDate,
                            text: text
                        }
                    } = _ref;
                    return (0, _inferno.createComponentVNode)(2, _cell.DateTableCellBase, {
                        className: classes,
                        dataCellTemplate: dataCellTemplate,
                        startDate: startDate,
                        endDate: endDate,
                        text: text,
                        groups: groups,
                        groupIndex: groupIndex,
                        index: index,
                        isFirstGroupCell: isFirstGroupCell,
                        isLastGroupCell: isLastGroupCell,
                        isSelected: isSelected,
                        isFocused: isFocused,
                        contentTemplateProps: contentTemplateProps,
                        children: (0, _inferno.createVNode)(1, "div", "dx-scheduler-date-table-cell-text", text, 0)
                    })
                };
                exports.viewFunction = viewFunction;
                let MonthDateTableCell = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(MonthDateTableCell, _BaseInfernoComponent);

                    function MonthDateTableCell(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        _this.__getterCache = {};
                        return _this
                    }
                    var _proto = MonthDateTableCell.prototype;
                    _proto.componentWillUpdate = function(nextProps, nextState, context) {
                        if (this.props.index !== nextProps.index || this.props.text !== nextProps.text) {
                            this.__getterCache.contentTemplateProps = void 0
                        }
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                dataCellTemplate: (TemplateProp = props.dataCellTemplate, TemplateProp && (TemplateProp.defaultProps ? props => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, TemplateProp, _extends({}, props))) : TemplateProp))
                            }),
                            classes: this.classes,
                            contentTemplateProps: this.contentTemplateProps,
                            restAttributes: this.restAttributes
                        });
                        var TemplateProp
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(MonthDateTableCell, [{
                        key: "classes",
                        get: function() {
                            const {
                                className: className,
                                firstDayOfMonth: firstDayOfMonth,
                                otherMonth: otherMonth,
                                today: today
                            } = this.props;
                            return (0, _combine_classes.combineClasses)({
                                "dx-scheduler-date-table-other-month": !!otherMonth,
                                "dx-scheduler-date-table-current-date": !!today,
                                "dx-scheduler-date-table-first-of-month": !!firstDayOfMonth,
                                [className]: !!className
                            })
                        }
                    }, {
                        key: "contentTemplateProps",
                        get: function() {
                            if (void 0 !== this.__getterCache.contentTemplateProps) {
                                return this.__getterCache.contentTemplateProps
                            }
                            return this.__getterCache.contentTemplateProps = (() => {
                                const {
                                    index: index,
                                    text: text
                                } = this.props;
                                return {
                                    data: {
                                        text: text
                                    },
                                    index: index
                                }
                            })()
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return MonthDateTableCell
                }(_inferno2.BaseInfernoComponent);
                exports.MonthDateTableCell = MonthDateTableCell;
                MonthDateTableCell.defaultProps = _cell.DateTableCellBaseProps
            },
        48136:
            /*!*************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/month/date_table/layout.j.js ***!
              \*************************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _component_registrator = (obj = __webpack_require__( /*! ../../../../../../core/component_registrator */ 99393), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _date_table = __webpack_require__( /*! ../../../../../component_wrapper/scheduler/date_table */ 15281);
                var _layout = __webpack_require__( /*! ./layout */ 7405);

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let MonthDateTableLayout = function(_DateTable) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(MonthDateTableLayout, _DateTable);

                    function MonthDateTableLayout() {
                        return _DateTable.apply(this, arguments) || this
                    }! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(MonthDateTableLayout, [{
                        key: "_propsInfo",
                        get: function() {
                            return {
                                twoWay: [],
                                allowNull: [],
                                elements: [],
                                templates: ["cellTemplate", "dataCellTemplate"],
                                props: ["cellTemplate", "viewData", "groupOrientation", "leftVirtualCellWidth", "rightVirtualCellWidth", "topVirtualRowHeight", "bottomVirtualRowHeight", "addDateTableClass", "addVerticalSizesClassToRows", "width", "dataCellTemplate"]
                            }
                        }
                    }, {
                        key: "_viewComponent",
                        get: function() {
                            return _layout.MonthDateTableLayout
                        }
                    }]);
                    return MonthDateTableLayout
                }(_date_table.DateTable);
                exports.default = MonthDateTableLayout;
                (0, _component_registrator.default)("dxMonthDateTableLayout", MonthDateTableLayout);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        7405:
            /*!***********************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/month/date_table/layout.js ***!
              \***********************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.MonthDateTableLayout = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _layout = __webpack_require__( /*! ../../base/date_table/layout */ 96941);
                var _cell = __webpack_require__( /*! ./cell */ 9553);
                const _excluded = ["addDateTableClass", "addVerticalSizesClassToRows", "bottomVirtualRowHeight", "cellTemplate", "dataCellTemplate", "groupOrientation", "leftVirtualCellWidth", "rightVirtualCellWidth", "tableRef", "topVirtualRowHeight", "viewData", "width"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = _ref => {
                    let {
                        props: {
                            addDateTableClass: addDateTableClass,
                            addVerticalSizesClassToRows: addVerticalSizesClassToRows,
                            dataCellTemplate: dataCellTemplate,
                            groupOrientation: groupOrientation,
                            tableRef: tableRef,
                            viewData: viewData,
                            width: width
                        },
                        restAttributes: restAttributes
                    } = _ref;
                    return (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, _layout.DateTableLayoutBase, _extends({
                        viewData: viewData,
                        groupOrientation: groupOrientation,
                        addDateTableClass: addDateTableClass,
                        dataCellTemplate: dataCellTemplate,
                        cellTemplate: _cell.MonthDateTableCell,
                        tableRef: tableRef,
                        addVerticalSizesClassToRows: addVerticalSizesClassToRows,
                        width: width
                    }, restAttributes)))
                };
                exports.viewFunction = viewFunction;
                const getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, TemplateProp, _extends({}, props))) : TemplateProp);
                let MonthDateTableLayout = function(_InfernoWrapperCompon) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(MonthDateTableLayout, _InfernoWrapperCompon);

                    function MonthDateTableLayout(props) {
                        var _this;
                        _this = _InfernoWrapperCompon.call(this, props) || this;
                        _this.state = {};
                        return _this
                    }
                    var _proto = MonthDateTableLayout.prototype;
                    _proto.createEffects = function() {
                        return [(0, _inferno2.createReRenderEffect)()]
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                cellTemplate: getTemplate(props.cellTemplate),
                                dataCellTemplate: getTemplate(props.dataCellTemplate)
                            }),
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(MonthDateTableLayout, [{
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return MonthDateTableLayout
                }(_inferno2.InfernoWrapperComponent);
                exports.MonthDateTableLayout = MonthDateTableLayout;
                MonthDateTableLayout.defaultProps = _layout.DateTableLayoutProps
            },
        34300:
            /*!****************************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/timeline/header_panel/date_header/layout.js ***!
              \****************************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.TimelineDateHeaderLayout = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _row = __webpack_require__( /*! ../../../base/row */ 14364);
                var _utils = __webpack_require__( /*! ../../../utils */ 97205);
                var _cell = __webpack_require__( /*! ../../../base/header_panel/date_header/cell */ 92366);
                var _layout = __webpack_require__( /*! ../../../base/header_panel/date_header/layout */ 35878);
                var _getThemeType = (obj = __webpack_require__( /*! ../../../../../../utils/getThemeType */ 32586), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const _excluded = ["dateCellTemplate", "dateHeaderData", "groupByDate", "groupOrientation", "groups", "timeCellTemplate"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const {
                    isMaterialBased: isMaterialBased
                } = (0, _getThemeType.default)();
                const viewFunction = _ref => {
                    let {
                        isHorizontalGrouping: isHorizontalGrouping,
                        props: {
                            dateCellTemplate: dateCellTemplate,
                            dateHeaderData: dateHeaderData,
                            timeCellTemplate: timeCellTemplate
                        }
                    } = _ref;
                    const {
                        dataMap: dataMap,
                        isMonthDateHeader: isMonthDateHeader,
                        leftVirtualCellCount: leftVirtualCellCount,
                        leftVirtualCellWidth: leftVirtualCellWidth,
                        rightVirtualCellCount: rightVirtualCellCount,
                        rightVirtualCellWidth: rightVirtualCellWidth,
                        weekDayLeftVirtualCellCount: weekDayLeftVirtualCellCount,
                        weekDayLeftVirtualCellWidth: weekDayLeftVirtualCellWidth,
                        weekDayRightVirtualCellCount: weekDayRightVirtualCellCount,
                        weekDayRightVirtualCellWidth: weekDayRightVirtualCellWidth
                    } = dateHeaderData;
                    return (0, _inferno.createFragment)(dataMap.map((dateHeaderRow, rowIndex) => {
                        const rowsCount = dataMap.length;
                        const isTimeCellTemplate = rowsCount - 1 === rowIndex;
                        const isWeekDayRow = rowsCount > 1 && 0 === rowIndex;
                        const splitText = isMaterialBased && (isMonthDateHeader || isWeekDayRow);
                        let validLeftVirtualCellCount = leftVirtualCellCount;
                        let validRightVirtualCellCount = rightVirtualCellCount;
                        let validRightVirtualCellWidth = rightVirtualCellWidth;
                        let validLeftVirtualCellWidth = leftVirtualCellWidth;
                        if (isWeekDayRow) {
                            validLeftVirtualCellCount = weekDayLeftVirtualCellCount;
                            validRightVirtualCellCount = weekDayRightVirtualCellCount;
                            validRightVirtualCellWidth = weekDayRightVirtualCellWidth;
                            validLeftVirtualCellWidth = weekDayLeftVirtualCellWidth
                        }
                        return (0, _inferno.createComponentVNode)(2, _row.Row, {
                            className: "dx-scheduler-header-row",
                            leftVirtualCellWidth: validLeftVirtualCellWidth,
                            leftVirtualCellCount: validLeftVirtualCellCount,
                            rightVirtualCellWidth: validRightVirtualCellWidth,
                            rightVirtualCellCount: validRightVirtualCellCount,
                            children: dateHeaderRow.map(_ref2 => {
                                let {
                                    colSpan: colSpan,
                                    endDate: endDate,
                                    groupIndex: groupIndex,
                                    groups: cellGroups,
                                    index: index,
                                    isFirstGroupCell: isFirstGroupCell,
                                    isLastGroupCell: isLastGroupCell,
                                    key: key,
                                    startDate: startDate,
                                    text: text,
                                    today: today
                                } = _ref2;
                                return (0, _inferno.createComponentVNode)(2, _cell.DateHeaderCell, {
                                    startDate: startDate,
                                    endDate: endDate,
                                    groups: isHorizontalGrouping ? cellGroups : void 0,
                                    groupIndex: isHorizontalGrouping ? groupIndex : void 0,
                                    today: today,
                                    index: index,
                                    text: text,
                                    isFirstGroupCell: isFirstGroupCell,
                                    isLastGroupCell: isLastGroupCell,
                                    isWeekDayCell: isWeekDayRow,
                                    colSpan: colSpan,
                                    splitText: splitText,
                                    dateCellTemplate: dateCellTemplate,
                                    timeCellTemplate: timeCellTemplate,
                                    isTimeCellTemplate: isTimeCellTemplate
                                }, key)
                            })
                        }, rowIndex.toString())
                    }), 0)
                };
                exports.viewFunction = viewFunction;
                const getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, TemplateProp, _extends({}, props))) : TemplateProp);
                let TimelineDateHeaderLayout = function(_BaseInfernoComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(TimelineDateHeaderLayout, _BaseInfernoComponent);

                    function TimelineDateHeaderLayout(props) {
                        var _this;
                        _this = _BaseInfernoComponent.call(this, props) || this;
                        _this.state = {};
                        return _this
                    }
                    var _proto = TimelineDateHeaderLayout.prototype;
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                dateCellTemplate: getTemplate(props.dateCellTemplate),
                                timeCellTemplate: getTemplate(props.timeCellTemplate)
                            }),
                            isHorizontalGrouping: this.isHorizontalGrouping,
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(TimelineDateHeaderLayout, [{
                        key: "isHorizontalGrouping",
                        get: function() {
                            const {
                                groupByDate: groupByDate,
                                groupOrientation: groupOrientation,
                                groups: groups
                            } = this.props;
                            return (0, _utils.isHorizontalGroupingApplied)(groups, groupOrientation) && !groupByDate
                        }
                    }, {
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return TimelineDateHeaderLayout
                }(_inferno2.BaseInfernoComponent);
                exports.TimelineDateHeaderLayout = TimelineDateHeaderLayout;
                TimelineDateHeaderLayout.defaultProps = _layout.DateHeaderLayoutProps
            },
        8262:
            /*!******************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/timeline/header_panel/layout.j.js ***!
              \******************************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _component_registrator = (obj = __webpack_require__( /*! ../../../../../../core/component_registrator */ 99393), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _header_panel = __webpack_require__( /*! ../../../../../component_wrapper/scheduler/header_panel */ 86214);
                var _layout = __webpack_require__( /*! ./layout */ 377);

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let TimelineHeaderPanelLayout = function(_HeaderPanel) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(TimelineHeaderPanelLayout, _HeaderPanel);

                    function TimelineHeaderPanelLayout() {
                        return _HeaderPanel.apply(this, arguments) || this
                    }! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(TimelineHeaderPanelLayout, [{
                        key: "_propsInfo",
                        get: function() {
                            return {
                                twoWay: [],
                                allowNull: [],
                                elements: [],
                                templates: ["dateCellTemplate", "timeCellTemplate", "dateHeaderTemplate", "resourceCellTemplate"],
                                props: ["dateHeaderData", "isRenderDateHeader", "dateCellTemplate", "timeCellTemplate", "dateHeaderTemplate", "groups", "groupOrientation", "groupPanelData", "groupByDate", "height", "className", "resourceCellTemplate"]
                            }
                        }
                    }, {
                        key: "_viewComponent",
                        get: function() {
                            return _layout.TimelineHeaderPanelLayout
                        }
                    }]);
                    return TimelineHeaderPanelLayout
                }(_header_panel.HeaderPanel);
                exports.default = TimelineHeaderPanelLayout;
                (0, _component_registrator.default)("dxTimelineHeaderPanelLayout", TimelineHeaderPanelLayout);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        377:
            /*!****************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/timeline/header_panel/layout.js ***!
              \****************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.viewFunction = exports.TimelineHeaderPanelLayout = void 0;
                var _inferno = __webpack_require__( /*! inferno */ 65414);
                var _inferno2 = __webpack_require__( /*! @devextreme/runtime/inferno */ 74219);
                var _layout = __webpack_require__( /*! ../../base/header_panel/layout */ 84011);
                var _layout2 = __webpack_require__( /*! ./date_header/layout */ 34300);
                const _excluded = ["className", "dateCellTemplate", "dateHeaderData", "dateHeaderTemplate", "elementRef", "groupByDate", "groupOrientation", "groupPanelData", "groups", "height", "isRenderDateHeader", "resourceCellTemplate", "timeCellTemplate"];

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const viewFunction = _ref => {
                    let {
                        props: {
                            dateCellTemplate: dateCellTemplate,
                            dateHeaderData: dateHeaderData,
                            groupByDate: groupByDate,
                            groupOrientation: groupOrientation,
                            groupPanelData: groupPanelData,
                            groups: groups,
                            isRenderDateHeader: isRenderDateHeader,
                            resourceCellTemplate: resourceCellTemplate,
                            timeCellTemplate: timeCellTemplate
                        }
                    } = _ref;
                    return (0, _inferno.createComponentVNode)(2, _layout.HeaderPanelLayout, {
                        dateHeaderTemplate: _layout2.TimelineDateHeaderLayout,
                        dateHeaderData: dateHeaderData,
                        groupPanelData: groupPanelData,
                        groupByDate: groupByDate,
                        groups: groups,
                        groupOrientation: groupOrientation,
                        isRenderDateHeader: isRenderDateHeader,
                        resourceCellTemplate: resourceCellTemplate,
                        dateCellTemplate: dateCellTemplate,
                        timeCellTemplate: timeCellTemplate
                    })
                };
                exports.viewFunction = viewFunction;
                const getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => (0, _inferno.normalizeProps)((0, _inferno.createComponentVNode)(2, TemplateProp, _extends({}, props))) : TemplateProp);
                let TimelineHeaderPanelLayout = function(_InfernoWrapperCompon) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(TimelineHeaderPanelLayout, _InfernoWrapperCompon);

                    function TimelineHeaderPanelLayout(props) {
                        var _this;
                        _this = _InfernoWrapperCompon.call(this, props) || this;
                        _this.state = {};
                        return _this
                    }
                    var _proto = TimelineHeaderPanelLayout.prototype;
                    _proto.createEffects = function() {
                        return [(0, _inferno2.createReRenderEffect)()]
                    };
                    _proto.render = function() {
                        const props = this.props;
                        return viewFunction({
                            props: _extends({}, props, {
                                dateCellTemplate: getTemplate(props.dateCellTemplate),
                                timeCellTemplate: getTemplate(props.timeCellTemplate),
                                dateHeaderTemplate: getTemplate(props.dateHeaderTemplate),
                                resourceCellTemplate: getTemplate(props.resourceCellTemplate)
                            }),
                            restAttributes: this.restAttributes
                        })
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(TimelineHeaderPanelLayout, [{
                        key: "restAttributes",
                        get: function() {
                            const _this$props = this.props,
                                restProps = function(source, excluded) {
                                    if (null == source) {
                                        return {}
                                    }
                                    var target = {};
                                    var sourceKeys = Object.keys(source);
                                    var key, i;
                                    for (i = 0; i < sourceKeys.length; i++) {
                                        key = sourceKeys[i];
                                        if (excluded.indexOf(key) >= 0) {
                                            continue
                                        }
                                        target[key] = source[key]
                                    }
                                    return target
                                }(_this$props, _excluded);
                            return restProps
                        }
                    }]);
                    return TimelineHeaderPanelLayout
                }(_inferno2.InfernoWrapperComponent);
                exports.TimelineHeaderPanelLayout = TimelineHeaderPanelLayout;
                TimelineHeaderPanelLayout.defaultProps = _layout.HeaderPanelLayoutProps
            },
        97205:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scheduler/workspaces/utils.js ***!
              \*****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.isVerticalGroupingApplied = exports.isHorizontalGroupingApplied = exports.isGroupingByDate = exports.getKeyByGroup = exports.getKeyByDateAndGroup = exports.getIsGroupedAllDayPanel = exports.getGroupCellClasses = exports.addWidthToStyle = exports.addToStyles = exports.addHeightToStyle = void 0;
                var _combine_classes = __webpack_require__( /*! ../../../utils/combine_classes */ 86237);
                var _consts = __webpack_require__( /*! ../consts */ 4799);

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                exports.getKeyByDateAndGroup = (date, groupIndex) => {
                    const key = date.getTime();
                    if (!groupIndex) {
                        return key.toString()
                    }
                    return (key + groupIndex).toString()
                };
                exports.getKeyByGroup = (groupIndex, isVerticalGrouping) => {
                    if (isVerticalGrouping && !!groupIndex) {
                        return groupIndex.toString()
                    }
                    return "0"
                };
                const addToStyles = (options, style) => {
                    const nextStyle = null !== style && void 0 !== style ? style : {};
                    const result = _extends({}, nextStyle);
                    options.forEach(_ref => {
                        let {
                            attr: attr,
                            value: value
                        } = _ref;
                        result[attr] = value || nextStyle[attr]
                    });
                    return result
                };
                exports.addToStyles = addToStyles;
                exports.addHeightToStyle = (value, style) => {
                    const height = value ? "".concat(value, "px") : "";
                    return addToStyles([{
                        attr: "height",
                        value: height
                    }], style)
                };
                exports.addWidthToStyle = (value, style) => {
                    const width = value ? "".concat(value, "px") : "";
                    return addToStyles([{
                        attr: "width",
                        value: width
                    }], style)
                };
                exports.getGroupCellClasses = function() {
                    let isFirstGroupCell = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false;
                    let isLastGroupCell = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false;
                    let className = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "";
                    return (0, _combine_classes.combineClasses)({
                        "dx-scheduler-first-group-cell": isFirstGroupCell,
                        "dx-scheduler-last-group-cell": isLastGroupCell,
                        [className]: true
                    })
                };
                exports.getIsGroupedAllDayPanel = (hasAllDayRow, isVerticalGrouping) => hasAllDayRow && isVerticalGrouping;
                exports.isVerticalGroupingApplied = (groups, groupOrientation) => groupOrientation === _consts.VERTICAL_GROUP_ORIENTATION && !!groups.length;
                const isHorizontalGroupingApplied = (groups, groupOrientation) => groupOrientation === _consts.HORIZONTAL_GROUP_ORIENTATION && !!groups.length;
                exports.isHorizontalGroupingApplied = isHorizontalGroupingApplied;
                exports.isGroupingByDate = (groups, groupOrientation, groupByDate) => {
                    const isHorizontalGrouping = isHorizontalGroupingApplied(groups, groupOrientation);
                    return groupByDate && isHorizontalGrouping
                }
            },
        23842:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scroll_view/common/consts.js ***!
              \****************************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.VALIDATE_WHEEL_TIMEOUT = exports.TopPocketState = exports.ShowScrollbarMode = exports.SCROLL_LINE_HEIGHT = exports.SCROLLVIEW_TOP_POCKET_CLASS = exports.SCROLLVIEW_REACHBOTTOM_TEXT_CLASS = exports.SCROLLVIEW_REACHBOTTOM_INDICATOR_CLASS = exports.SCROLLVIEW_REACHBOTTOM_CLASS = exports.SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS = exports.SCROLLVIEW_PULLDOWN_TEXT_CLASS = exports.SCROLLVIEW_PULLDOWN_READY_CLASS = exports.SCROLLVIEW_PULLDOWN_LOADING_CLASS = exports.SCROLLVIEW_PULLDOWN_INDICATOR_CLASS = exports.SCROLLVIEW_PULLDOWN_IMAGE_CLASS = exports.SCROLLVIEW_PULLDOWN = exports.SCROLLVIEW_CONTENT_CLASS = exports.SCROLLVIEW_BOTTOM_POCKET_CLASS = exports.SCROLLABLE_WRAPPER_CLASS = exports.SCROLLABLE_SIMULATED_CLASS = exports.SCROLLABLE_SCROLL_CONTENT_CLASS = exports.SCROLLABLE_SCROLL_CLASS = exports.SCROLLABLE_SCROLLBAR_SIMULATED = exports.SCROLLABLE_SCROLLBAR_CLASS = exports.SCROLLABLE_SCROLLBAR_ACTIVE_CLASS = exports.SCROLLABLE_SCROLLBARS_HIDDEN = exports.SCROLLABLE_SCROLLBARS_ALWAYSVISIBLE = exports.SCROLLABLE_DISABLED_CLASS = exports.SCROLLABLE_CONTENT_CLASS = exports.SCROLLABLE_CONTAINER_CLASS = exports.PULLDOWN_ICON_CLASS = exports.KEY_CODES = exports.HOVER_ENABLED_STATE = exports.HIDE_SCROLLBAR_TIMEOUT = exports.DIRECTION_VERTICAL = exports.DIRECTION_HORIZONTAL = exports.DIRECTION_BOTH = void 0;
                exports.SCROLL_LINE_HEIGHT = 40;
                exports.DIRECTION_VERTICAL = "vertical";
                exports.DIRECTION_HORIZONTAL = "horizontal";
                exports.DIRECTION_BOTH = "both";
                exports.SCROLLABLE_SIMULATED_CLASS = "dx-scrollable-simulated";
                exports.SCROLLABLE_CONTENT_CLASS = "dx-scrollable-content";
                exports.SCROLLABLE_WRAPPER_CLASS = "dx-scrollable-wrapper";
                exports.SCROLLABLE_CONTAINER_CLASS = "dx-scrollable-container";
                exports.SCROLLABLE_DISABLED_CLASS = "dx-scrollable-disabled";
                exports.SCROLLABLE_SCROLLBAR_SIMULATED = "dx-scrollable-scrollbar-simulated";
                exports.SCROLLABLE_SCROLLBARS_HIDDEN = "dx-scrollable-scrollbars-hidden";
                exports.SCROLLABLE_SCROLLBARS_ALWAYSVISIBLE = "dx-scrollable-scrollbars-alwaysvisible";
                exports.SCROLLABLE_SCROLLBAR_CLASS = "dx-scrollable-scrollbar";
                exports.SCROLLABLE_SCROLLBAR_ACTIVE_CLASS = "dx-scrollable-scrollbar-active";
                exports.SCROLLABLE_SCROLL_CLASS = "dx-scrollable-scroll";
                exports.SCROLLABLE_SCROLL_CONTENT_CLASS = "dx-scrollable-scroll-content";
                exports.HOVER_ENABLED_STATE = "dx-scrollbar-hoverable";
                exports.SCROLLVIEW_CONTENT_CLASS = "dx-scrollview-content";
                exports.SCROLLVIEW_TOP_POCKET_CLASS = "dx-scrollview-top-pocket";
                exports.SCROLLVIEW_PULLDOWN = "dx-scrollview-pull-down";
                exports.SCROLLVIEW_PULLDOWN_LOADING_CLASS = "dx-scrollview-pull-down-loading";
                exports.SCROLLVIEW_PULLDOWN_READY_CLASS = "dx-scrollview-pull-down-ready";
                exports.SCROLLVIEW_PULLDOWN_IMAGE_CLASS = "dx-scrollview-pull-down-image";
                exports.SCROLLVIEW_PULLDOWN_INDICATOR_CLASS = "dx-scrollview-pull-down-indicator";
                exports.SCROLLVIEW_PULLDOWN_TEXT_CLASS = "dx-scrollview-pull-down-text";
                exports.SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS = "dx-scrollview-pull-down-text-visible";
                exports.PULLDOWN_ICON_CLASS = "dx-icon-pulldown";
                exports.SCROLLVIEW_BOTTOM_POCKET_CLASS = "dx-scrollview-bottom-pocket";
                exports.SCROLLVIEW_REACHBOTTOM_CLASS = "dx-scrollview-scrollbottom";
                exports.SCROLLVIEW_REACHBOTTOM_INDICATOR_CLASS = "dx-scrollview-scrollbottom-indicator";
                exports.SCROLLVIEW_REACHBOTTOM_TEXT_CLASS = "dx-scrollview-scrollbottom-text";
                exports.TopPocketState = {
                    STATE_RELEASED: 0,
                    STATE_READY: 1,
                    STATE_REFRESHING: 2,
                    STATE_LOADING: 3,
                    STATE_TOUCHED: 4,
                    STATE_PULLED: 5
                };
                exports.ShowScrollbarMode = {
                    HOVER: "onHover",
                    ALWAYS: "always",
                    NEVER: "never",
                    SCROLL: "onScroll"
                };
                exports.KEY_CODES = {
                    PAGE_UP: "pageUp",
                    PAGE_DOWN: "pageDown",
                    END: "end",
                    HOME: "home",
                    LEFT: "leftArrow",
                    UP: "upArrow",
                    RIGHT: "rightArrow",
                    DOWN: "downArrow"
                };
                exports.VALIDATE_WHEEL_TIMEOUT = 500;
                exports.HIDE_SCROLLBAR_TIMEOUT = 500
            },
        82886:
            /*!*************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scroll_view/utils/convert_location.js ***!
              \*************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.convertToLocation = function(location, direction) {
                    if ((0, _type.isPlainObject)(location)) {
                        const left = (0, _common.ensureDefined)(location.left, location.x);
                        const top = (0, _common.ensureDefined)(location.top, location.y);
                        return {
                            left: (0, _type.isDefined)(left) ? left : void 0,
                            top: (0, _type.isDefined)(top) ? top : void 0
                        }
                    }
                    const {
                        isHorizontal: isHorizontal,
                        isVertical: isVertical
                    } = new _scroll_direction.ScrollDirection(direction);
                    return {
                        left: isHorizontal && (0, _type.isDefined)(location) ? location : void 0,
                        top: isVertical && (0, _type.isDefined)(location) ? location : void 0
                    }
                };
                var _type = __webpack_require__( /*! ../../../../core/utils/type */ 35922);
                var _common = __webpack_require__( /*! ../../../../core/utils/common */ 20576);
                var _scroll_direction = __webpack_require__( /*! ./scroll_direction */ 60440)
            },
        70602:
            /*!***************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scroll_view/utils/get_boundary_props.js ***!
              \***************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getBoundaryProps = function(direction, scrollOffset, element) {
                    let pocketHeight = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0;
                    const {
                        left: left,
                        top: top
                    } = scrollOffset;
                    const boundaryProps = {};
                    const {
                        isHorizontal: isHorizontal,
                        isVertical: isVertical
                    } = new _scroll_direction.ScrollDirection(direction);
                    if (isHorizontal) {
                        boundaryProps.reachedLeft = isReachedLeft(left, 0);
                        boundaryProps.reachedRight = isReachedRight(element, left, 0)
                    }
                    if (isVertical) {
                        boundaryProps.reachedTop = isReachedTop(top, 0);
                        boundaryProps.reachedBottom = isReachedBottom(element, top, pocketHeight, 0)
                    }
                    return boundaryProps
                };
                exports.isReachedBottom = isReachedBottom;
                exports.isReachedLeft = isReachedLeft;
                exports.isReachedRight = isReachedRight;
                exports.isReachedTop = isReachedTop;
                var _get_scroll_left_max = __webpack_require__( /*! ./get_scroll_left_max */ 92721);
                var _get_scroll_top_max = __webpack_require__( /*! ./get_scroll_top_max */ 71296);
                var _scroll_direction = __webpack_require__( /*! ./scroll_direction */ 60440);

                function isReachedLeft(scrollOffsetLeft, epsilon) {
                    return Math.round(scrollOffsetLeft) <= epsilon
                }

                function isReachedRight(element, scrollOffsetLeft, epsilon) {
                    return Math.round((0, _get_scroll_left_max.getScrollLeftMax)(element) - scrollOffsetLeft) <= epsilon
                }

                function isReachedTop(scrollOffsetTop, epsilon) {
                    return Math.round(scrollOffsetTop) <= epsilon
                }

                function isReachedBottom(element, scrollOffsetTop, pocketHeight, epsilon) {
                    return Math.round((0, _get_scroll_top_max.getScrollTopMax)(element) - scrollOffsetTop - pocketHeight) <= epsilon
                }
            },
        60650:
            /*!**************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scroll_view/utils/get_element_location_internal.js ***!
              \**************************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getElementLocationInternal = function(targetElement, direction, containerElement, scrollOffset, offset) {
                    const additionalOffset = _extends({
                        top: 0,
                        left: 0,
                        right: 0,
                        bottom: 0
                    }, offset);
                    const isVertical = direction === _consts.DIRECTION_VERTICAL;
                    const prop = isVertical ? "top" : "left";
                    const inverseProp = isVertical ? "bottom" : "right";
                    const dimension = isVertical ? "height" : "width";
                    const containerOffsetSize = containerElement["offset".concat((0, _inflector.titleize)(dimension))];
                    const containerClientSize = containerElement["client".concat((0, _inflector.titleize)(dimension))];
                    const containerSize = containerElement.getBoundingClientRect()[dimension];
                    const elementSize = targetElement.getBoundingClientRect()[dimension];
                    let scale = 1;
                    if (Math.abs(containerSize - containerOffsetSize) > 1) {
                        scale = containerSize / containerOffsetSize
                    }
                    const relativeElementOffset = (0, _get_relative_offset.getRelativeOffset)(_consts.SCROLLABLE_CONTENT_CLASS, targetElement)[prop] / scale;
                    const containerScrollOffset = scrollOffset[prop];
                    const relativeStartOffset = containerScrollOffset - relativeElementOffset + additionalOffset[prop];
                    const relativeEndOffset = containerScrollOffset - relativeElementOffset - elementSize / scale + containerClientSize - additionalOffset[inverseProp];
                    if (relativeStartOffset <= 0 && relativeEndOffset >= 0) {
                        return containerScrollOffset
                    }
                    return containerScrollOffset - (Math.abs(relativeStartOffset) > Math.abs(relativeEndOffset) ? relativeEndOffset : relativeStartOffset)
                };
                var _inflector = __webpack_require__( /*! ../../../../core/utils/inflector */ 78008);
                var _get_relative_offset = __webpack_require__( /*! ./get_relative_offset */ 1515);
                var _consts = __webpack_require__( /*! ../common/consts */ 23842);

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
            },
        42136:
            /*!**************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scroll_view/utils/get_element_style.js ***!
              \**************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getElementMargin = function(element, side) {
                    const style = getElementStyle(element);
                    return style ? (0, _type_conversion.toNumber)(style["margin".concat((0, _inflector.titleize)(side))]) : 0
                };
                exports.getElementOverflowX = function(element) {
                    const style = getElementStyle(element);
                    return style ? style.overflowX : "visible"
                };
                exports.getElementOverflowY = function(element) {
                    const style = getElementStyle(element);
                    return style ? style.overflowY : "visible"
                };
                exports.getElementPadding = function(element, side) {
                    const style = getElementStyle(element);
                    return style ? (0, _type_conversion.toNumber)(style["padding".concat((0, _inflector.titleize)(side))]) : 0
                };
                exports.getElementStyle = getElementStyle;
                exports.getElementTransform = function(element) {
                    const style = getElementStyle(element);
                    return style ? style.transform : ""
                };
                var _inflector = __webpack_require__( /*! ../../../../core/utils/inflector */ 78008);
                var _window = __webpack_require__( /*! ../../../../core/utils/window */ 58201);
                var _type_conversion = __webpack_require__( /*! ../../../utils/type_conversion */ 78461);

                function getElementStyle(el) {
                    var _getWindow$getCompute, _getWindow;
                    return el && (0, _window.hasWindow)() ? null === (_getWindow$getCompute = (_getWindow = (0, _window.getWindow)()).getComputedStyle) || void 0 === _getWindow$getCompute ? void 0 : _getWindow$getCompute.call(_getWindow, el) : null
                }
            },
        1515:
            /*!****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scroll_view/utils/get_relative_offset.js ***!
              \****************************************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.getRelativeOffset = function(targetElementClass, sourceElement) {
                    const offset = {
                        left: 0,
                        top: 0
                    };
                    let element = sourceElement;
                    while (null !== (_element = element) && void 0 !== _element && _element.offsetParent && !element.classList.contains(targetElementClass)) {
                        var _element;
                        const parentElement = element.offsetParent;
                        const elementRect = element.getBoundingClientRect();
                        const parentElementRect = parentElement.getBoundingClientRect();
                        offset.left += elementRect.left - parentElementRect.left;
                        offset.top += elementRect.top - parentElementRect.top;
                        element = element.offsetParent
                    }
                    return offset
                }
            },
        92721:
            /*!****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scroll_view/utils/get_scroll_left_max.js ***!
              \****************************************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.getScrollLeftMax = function(element) {
                    return element.scrollWidth - element.clientWidth
                }
            },
        71296:
            /*!***************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scroll_view/utils/get_scroll_top_max.js ***!
              \***************************************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.getScrollTopMax = function(element) {
                    return element.scrollHeight - element.clientHeight
                }
            },
        60440:
            /*!*************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/ui/scroll_view/utils/scroll_direction.js ***!
              \*************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.ScrollDirection = void 0;
                var _consts = __webpack_require__( /*! ../common/consts */ 23842);

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }
                let ScrollDirection = function() {
                    function ScrollDirection(direction) {
                        this.DIRECTION_HORIZONTAL = "horizontal";
                        this.DIRECTION_VERTICAL = "vertical";
                        this.DIRECTION_BOTH = "both";
                        this.direction = null !== direction && void 0 !== direction ? direction : _consts.DIRECTION_VERTICAL
                    }! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(ScrollDirection, [{
                        key: "isHorizontal",
                        get: function() {
                            return this.direction === _consts.DIRECTION_HORIZONTAL || this.direction === _consts.DIRECTION_BOTH
                        }
                    }, {
                        key: "isVertical",
                        get: function() {
                            return this.direction === _consts.DIRECTION_VERTICAL || this.direction === _consts.DIRECTION_BOTH
                        }
                    }, {
                        key: "isBoth",
                        get: function() {
                            return this.direction === _consts.DIRECTION_BOTH
                        }
                    }]);
                    return ScrollDirection
                }();
                exports.ScrollDirection = ScrollDirection
            },
        86237:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/utils/combine_classes.js ***!
              \*********************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.combineClasses = function(classesMap) {
                    return Object.keys(classesMap).filter(p => classesMap[p]).join(" ")
                }
            },
        46299:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/utils/dom.js ***!
              \*********************************************************************/
            function(__unused_webpack_module, exports) {
                exports.querySelectorInSameDocument = function(el, selector) {
                    var _el$getRootNode, _el$getRootNode2;
                    const root = null !== (_el$getRootNode = null === (_el$getRootNode2 = el.getRootNode) || void 0 === _el$getRootNode2 ? void 0 : _el$getRootNode2.call(el)) && void 0 !== _el$getRootNode ? _el$getRootNode : document;
                    return root.querySelector(selector)
                }
            },
        32586:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/utils/getThemeType.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _themes = __webpack_require__( /*! ../../ui/themes */ 75811);
                var _default = () => {
                    const theme = (0, _themes.current)();
                    return {
                        isCompact: (0, _themes.isCompact)(theme),
                        isMaterial: (0, _themes.isMaterial)(theme),
                        isFluent: (0, _themes.isFluent)(theme),
                        isMaterialBased: (0, _themes.isMaterialBased)(theme)
                    }
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        89357:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/utils/get_computed_style.js ***!
              \************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = function(el) {
                    var _window$getComputedSt;
                    const window = (0, _window.getWindow)();
                    return el ? null === (_window$getComputedSt = window.getComputedStyle) || void 0 === _window$getComputedSt ? void 0 : _window$getComputedSt.call(window, el) : null
                };
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        8374:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/utils/resolve_rtl.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.resolveRtlEnabled = function(rtlProp, config) {
                    if (void 0 !== rtlProp) {
                        return rtlProp
                    }
                    if (void 0 !== (null === config || void 0 === config ? void 0 : config.rtlEnabled)) {
                        return config.rtlEnabled
                    }
                    return (0, _config.default)().rtlEnabled
                };
                exports.resolveRtlEnabledDefinition = function(rtlProp, config) {
                    const isPropDefined = (0, _type.isDefined)(rtlProp);
                    const onlyGlobalDefined = (0, _type.isDefined)((0, _config.default)().rtlEnabled) && !isPropDefined && !(0, _type.isDefined)(null === config || void 0 === config ? void 0 : config.rtlEnabled);
                    return isPropDefined && rtlProp !== (null === config || void 0 === config ? void 0 : config.rtlEnabled) || onlyGlobalDefined
                };
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _config = (obj = __webpack_require__( /*! ../../core/config */ 80209), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj
            },
        33502:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/utils/shallow_equals.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.shallowEquals = void 0;
                exports.shallowEquals = (firstObject, secondObject) => {
                    if (Object.keys(firstObject).length !== Object.keys(secondObject).length) {
                        return false
                    }
                    return Object.keys(firstObject).every(key => firstObject[key] === secondObject[key])
                }
            },
        19828:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/utils/subscribe_to_event.js ***!
              \************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.subscribeToDxInactiveEvent = exports.subscribeToDxHoverStartEvent = exports.subscribeToDxHoverEndEvent = exports.subscribeToDxFocusOutEvent = exports.subscribeToDxFocusInEvent = exports.subscribeToDxActiveEvent = exports.subscribeToDXScrollStopEvent = exports.subscribeToDXScrollStartEvent = exports.subscribeToDXScrollMoveEvent = exports.subscribeToDXScrollEndEvent = exports.subscribeToDXScrollCancelEvent = exports.subscribeToDXPointerUpEvent = exports.subscribeToDXPointerMoveEvent = exports.subscribeToDXPointerDownEvent = exports.subscribeToClickEvent = void 0;
                exports.subscribeToEvent = subscribeToEvent;
                exports.subscribeToScrollInitEvent = exports.subscribeToScrollEvent = exports.subscribeToMouseLeaveEvent = exports.subscribeToMouseEnterEvent = exports.subscribeToKeyDownEvent = void 0;
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var clickEvent = function(obj, nodeInterop) {
                    if (!nodeInterop && obj && obj.__esModule) {
                        return obj
                    }
                    if (null === obj || "object" !== typeof obj && "function" !== typeof obj) {
                        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 ("default" !== key && 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
                }(__webpack_require__( /*! ../../events/click */ 95429));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _emitterGesture = _interopRequireDefault(__webpack_require__( /*! ../../events/gesture/emitter.gesture.scroll */ 37334));
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../events/pointer */ 93786));

                function _getRequireWildcardCache(nodeInterop) {
                    if ("function" !== typeof WeakMap) {
                        return null
                    }
                    var cacheBabelInterop = new WeakMap;
                    var cacheNodeInterop = new WeakMap;
                    return (_getRequireWildcardCache = function(nodeInterop) {
                        return nodeInterop ? cacheNodeInterop : cacheBabelInterop
                    })(nodeInterop)
                }

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

                function subscribeToEvent(eventName) {
                    return (element, handler, eventData, namespace) => {
                        const event = namespace ? (0, _index.addNamespace)(eventName, namespace) : eventName;
                        if (handler) {
                            _events_engine.default.on(element, event, eventData, handler);
                            return () => {
                                _events_engine.default.off(element, event, handler)
                            }
                        }
                        return
                    }
                }
                const subscribeToClickEvent = subscribeToEvent(clickEvent.name);
                exports.subscribeToClickEvent = subscribeToClickEvent;
                const subscribeToScrollEvent = subscribeToEvent(_emitterGesture.default.scroll);
                exports.subscribeToScrollEvent = subscribeToScrollEvent;
                const subscribeToScrollInitEvent = subscribeToEvent(_emitterGesture.default.init);
                exports.subscribeToScrollInitEvent = subscribeToScrollInitEvent;
                const subscribeToDXScrollStartEvent = subscribeToEvent(_emitterGesture.default.start);
                exports.subscribeToDXScrollStartEvent = subscribeToDXScrollStartEvent;
                const subscribeToDXScrollMoveEvent = subscribeToEvent(_emitterGesture.default.move);
                exports.subscribeToDXScrollMoveEvent = subscribeToDXScrollMoveEvent;
                const subscribeToDXScrollEndEvent = subscribeToEvent(_emitterGesture.default.end);
                exports.subscribeToDXScrollEndEvent = subscribeToDXScrollEndEvent;
                const subscribeToDXScrollStopEvent = subscribeToEvent(_emitterGesture.default.stop);
                exports.subscribeToDXScrollStopEvent = subscribeToDXScrollStopEvent;
                const subscribeToDXScrollCancelEvent = subscribeToEvent(_emitterGesture.default.cancel);
                exports.subscribeToDXScrollCancelEvent = subscribeToDXScrollCancelEvent;
                const subscribeToDXPointerDownEvent = subscribeToEvent(_pointer.default.down);
                exports.subscribeToDXPointerDownEvent = subscribeToDXPointerDownEvent;
                const subscribeToDXPointerUpEvent = subscribeToEvent(_pointer.default.up);
                exports.subscribeToDXPointerUpEvent = subscribeToDXPointerUpEvent;
                const subscribeToDXPointerMoveEvent = subscribeToEvent(_pointer.default.move);
                exports.subscribeToDXPointerMoveEvent = subscribeToDXPointerMoveEvent;
                const subscribeToMouseEnterEvent = subscribeToEvent("mouseenter");
                exports.subscribeToMouseEnterEvent = subscribeToMouseEnterEvent;
                const subscribeToMouseLeaveEvent = subscribeToEvent("mouseleave");
                exports.subscribeToMouseLeaveEvent = subscribeToMouseLeaveEvent;
                const subscribeToKeyDownEvent = subscribeToEvent("keydown");
                exports.subscribeToKeyDownEvent = subscribeToKeyDownEvent;
                const subscribeToDxActiveEvent = subscribeToEvent("dxactive");
                exports.subscribeToDxActiveEvent = subscribeToDxActiveEvent;
                const subscribeToDxInactiveEvent = subscribeToEvent("dxinactive");
                exports.subscribeToDxInactiveEvent = subscribeToDxInactiveEvent;
                const subscribeToDxHoverStartEvent = subscribeToEvent("dxhoverstart");
                exports.subscribeToDxHoverStartEvent = subscribeToDxHoverStartEvent;
                const subscribeToDxHoverEndEvent = subscribeToEvent("dxhoverend");
                exports.subscribeToDxHoverEndEvent = subscribeToDxHoverEndEvent;
                const subscribeToDxFocusInEvent = subscribeToEvent("focusin");
                exports.subscribeToDxFocusInEvent = subscribeToDxFocusInEvent;
                const subscribeToDxFocusOutEvent = subscribeToEvent("focusout");
                exports.subscribeToDxFocusOutEvent = subscribeToDxFocusOutEvent
            },
        78461:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/renovation/utils/type_conversion.js ***!
              \*********************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.toNumber = function(attribute) {
                    return attribute ? Number(attribute.replace("px", "")) : 0
                }
            },
        88673:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/time_zone_utils.js ***!
              \****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Z = void 0;
                var _utils = (obj = __webpack_require__( /*! ./ui/scheduler/utils.timeZone */ 32511), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const getTimeZones = _utils.default.getTimeZones;
                exports.Z = getTimeZones
            },
        76219:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/accordion.js ***!
              \*************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../events/core/events_engine */ 55994));
                var _fx = _interopRequireDefault(__webpack_require__( /*! ../animation/fx */ 87209));
                var _click = __webpack_require__( /*! ../events/click */ 95429);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../core/devices */ 20530));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../core/dom_adapter */ 73349));
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);
                var _element = __webpack_require__( /*! ../core/element */ 6415);
                var iteratorUtils = function(obj, nodeInterop) {
                    if (!nodeInterop && obj && obj.__esModule) {
                        return obj
                    }
                    if (null === obj || "object" !== typeof obj && "function" !== typeof obj) {
                        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 ("default" !== key && 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
                }(__webpack_require__( /*! ../core/utils/iterator */ 95479));
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _index = __webpack_require__( /*! ../events/utils/index */ 39611);
                var _uiCollection_widget = _interopRequireDefault(__webpack_require__( /*! ./collection/ui.collection_widget.live_update */ 69010));
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);
                var _bindable_template = __webpack_require__( /*! ../core/templates/bindable_template */ 93280);
                var _icon = __webpack_require__( /*! ../core/utils/icon */ 44899);
                var _themes = __webpack_require__( /*! ./themes */ 75811);

                function _getRequireWildcardCache(nodeInterop) {
                    if ("function" !== typeof WeakMap) {
                        return null
                    }
                    var cacheBabelInterop = new WeakMap;
                    var cacheNodeInterop = new WeakMap;
                    return (_getRequireWildcardCache = function(nodeInterop) {
                        return nodeInterop ? cacheNodeInterop : cacheBabelInterop
                    })(nodeInterop)
                }

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const Accordion = _uiCollection_widget.default.inherit({
                    _activeStateUnit: ".dx-accordion-item",
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            hoverStateEnabled: true,
                            height: void 0,
                            itemTitleTemplate: "title",
                            onItemTitleClick: null,
                            selectedIndex: 0,
                            collapsible: false,
                            multiple: false,
                            animationDuration: 300,
                            deferRendering: true,
                            selectByClick: true,
                            activeStateEnabled: true,
                            _itemAttributes: {
                                role: "tab"
                            },
                            _animationEasing: "ease"
                        })
                    },
                    _defaultOptionsRules: function() {
                        return this.callBase().concat([{
                            device: function() {
                                return "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator()
                            },
                            options: {
                                focusStateEnabled: true
                            }
                        }, {
                            device: function() {
                                return (0, _themes.isMaterialBased)()
                            },
                            options: {
                                animationDuration: 200,
                                _animationEasing: "cubic-bezier(0.4, 0, 0.2, 1)"
                            }
                        }])
                    },
                    _itemElements: function() {
                        return this._itemContainer().children(this._itemSelector())
                    },
                    _init: function() {
                        this.callBase();
                        this.option("selectionRequired", !this.option("collapsible"));
                        this.option("selectionMode", this.option("multiple") ? "multiple" : "single");
                        const $element = this.$element();
                        $element.addClass("dx-accordion");
                        this._$container = (0, _renderer.default)("<div>").addClass("dx-accordion-wrapper");
                        $element.append(this._$container)
                    },
                    _initTemplates: function() {
                        this.callBase();
                        this._templateManager.addDefaultTemplates({
                            title: new _bindable_template.BindableTemplate((function($container, data) {
                                if ((0, _type.isPlainObject)(data)) {
                                    const $iconElement = (0, _icon.getImageContainer)(data.icon);
                                    if ($iconElement) {
                                        $container.append($iconElement)
                                    }
                                    if ((0, _type.isDefined)(data.title) && !(0, _type.isPlainObject)(data.title)) {
                                        $container.append(_dom_adapter.default.createTextNode(data.title))
                                    }
                                } else if ((0, _type.isDefined)(data)) {
                                    $container.text(String(data))
                                }
                                $container.wrapInner((0, _renderer.default)("<div>").addClass("dx-accordion-item-title-caption"))
                            }), ["title", "icon"], this.option("integrationOptions.watchMethod"))
                        })
                    },
                    _initMarkup: function() {
                        this._deferredItems = [];
                        this._deferredTemplateItems = [];
                        this.callBase();
                        this.setAria({
                            role: "tablist",
                            multiselectable: this.option("multiple")
                        });
                        (0, _common.deferRender)(() => {
                            const selectedItemIndices = this._getSelectedItemIndices();
                            this._renderSelection(selectedItemIndices, [])
                        })
                    },
                    _render: function() {
                        this.callBase();
                        _deferred.when.apply(this, this._deferredTemplateItems).done(() => {
                            this._updateItemHeights(true)
                        })
                    },
                    _itemDataKey: function() {
                        return "dxAccordionItemData"
                    },
                    _itemClass: function() {
                        return "dx-accordion-item"
                    },
                    _itemContainer: function() {
                        return this._$container
                    },
                    _itemTitles: function() {
                        return this._itemElements().find(".dx-accordion-item-title")
                    },
                    _itemContents: function() {
                        return this._itemElements().find(".dx-accordion-item-body")
                    },
                    _getItemData: function(target) {
                        return (0, _renderer.default)(target).parent().data(this._itemDataKey()) || this.callBase.apply(this, arguments)
                    },
                    _executeItemRenderAction: function(itemData) {
                        if (itemData.type) {
                            return
                        }
                        this.callBase.apply(this, arguments)
                    },
                    _itemSelectHandler: function(e) {
                        if ((0, _renderer.default)(e.target).closest(this._itemContents()).length) {
                            return
                        }
                        this.callBase.apply(this, arguments)
                    },
                    _afterItemElementDeleted: function($item, deletedActionArgs) {
                        this._deferredItems.splice(deletedActionArgs.itemIndex, 1);
                        this.callBase.apply(this, arguments)
                    },
                    _renderItemContent: function(args) {
                        this._deferredTemplateItems[args.index] = new _deferred.Deferred;
                        const itemTitle = this.callBase((0, _extend.extend)({}, args, {
                            contentClass: "dx-accordion-item-title",
                            templateProperty: "titleTemplate",
                            defaultTemplateName: this.option("itemTitleTemplate")
                        }));
                        this._attachItemTitleClickAction(itemTitle);
                        const deferred = new _deferred.Deferred;
                        if ((0, _type.isDefined)(this._deferredItems[args.index])) {
                            this._deferredItems[args.index] = deferred
                        } else {
                            this._deferredItems.push(deferred)
                        }
                        if (!this.option("deferRendering") || this._getSelectedItemIndices().indexOf(args.index) >= 0) {
                            deferred.resolve()
                        }
                        deferred.done(this.callBase.bind(this, (0, _extend.extend)({}, args, {
                            contentClass: "dx-accordion-item-body",
                            container: (0, _element.getPublicElement)((0, _renderer.default)("<div>").appendTo((0, _renderer.default)(itemTitle).parent()))
                        })))
                    },
                    _onItemTemplateRendered: function(_, renderArgs) {
                        return () => {
                            const item = this._deferredTemplateItems[renderArgs.index];
                            item && item.resolve()
                        }
                    },
                    _attachItemTitleClickAction: function(itemTitle) {
                        const eventName = (0, _index.addNamespace)(_click.name, this.NAME);
                        _events_engine.default.off(itemTitle, eventName);
                        _events_engine.default.on(itemTitle, eventName, this._itemTitleClickHandler.bind(this))
                    },
                    _itemTitleClickHandler: function(e) {
                        this._itemDXEventHandler(e, "onItemTitleClick")
                    },
                    _renderSelection: function(addedSelection, removedSelection) {
                        this._itemElements().addClass("dx-accordion-item-closed");
                        this.setAria("hidden", true, this._itemContents());
                        this._updateItems(addedSelection, removedSelection)
                    },
                    _updateSelection: function(addedSelection, removedSelection) {
                        this._updateItems(addedSelection, removedSelection);
                        this._updateItemHeightsWrapper(false)
                    },
                    _updateItems: function(addedSelection, removedSelection) {
                        const $items = this._itemElements();
                        iteratorUtils.each(addedSelection, (_, index) => {
                            this._deferredItems[index].resolve();
                            const $item = $items.eq(index).addClass("dx-accordion-item-opened").removeClass("dx-accordion-item-closed");
                            this.setAria("hidden", false, $item.find(".dx-accordion-item-body"))
                        });
                        iteratorUtils.each(removedSelection, (_, index) => {
                            const $item = $items.eq(index).removeClass("dx-accordion-item-opened");
                            this.setAria("hidden", true, $item.find(".dx-accordion-item-body"))
                        })
                    },
                    _updateItemHeightsWrapper: function(skipAnimation) {
                        if (this.option("templatesRenderAsynchronously")) {
                            this._animationTimer = setTimeout(function() {
                                this._updateItemHeights(skipAnimation)
                            }.bind(this))
                        } else {
                            this._updateItemHeights(skipAnimation)
                        }
                    },
                    _updateItemHeights: function(skipAnimation) {
                        const that = this;
                        const deferredAnimate = that._deferredAnimate;
                        const itemHeight = this._splitFreeSpace(this._calculateFreeSpace());
                        clearTimeout(this._animationTimer);
                        return _deferred.when.apply(_renderer.default, [].slice.call(this._itemElements()).map((function(item) {
                            return that._updateItemHeight((0, _renderer.default)(item), itemHeight, skipAnimation)
                        }))).done((function() {
                            if (deferredAnimate) {
                                deferredAnimate.resolveWith(that)
                            }
                        }))
                    },
                    _updateItemHeight: function($item, itemHeight, skipAnimation) {
                        const $title = $item.children(".dx-accordion-item-title");
                        if (_fx.default.isAnimating($item)) {
                            _fx.default.stop($item)
                        }
                        const startItemHeight = (0, _size.getOuterHeight)($item);
                        let finalItemHeight;
                        if ($item.hasClass("dx-accordion-item-opened")) {
                            finalItemHeight = itemHeight + (0, _size.getOuterHeight)($title);
                            if (!finalItemHeight) {
                                (0, _size.setHeight)($item, "auto");
                                finalItemHeight = (0, _size.getOuterHeight)($item)
                            }
                        } else {
                            finalItemHeight = (0, _size.getOuterHeight)($title)
                        }
                        return this._animateItem($item, startItemHeight, finalItemHeight, skipAnimation, !!itemHeight)
                    },
                    _animateItem: function($element, startHeight, endHeight, skipAnimation, fixedHeight) {
                        let d;
                        if (skipAnimation || startHeight === endHeight) {
                            $element.css("height", endHeight);
                            d = (new _deferred.Deferred).resolve()
                        } else {
                            d = _fx.default.animate($element, {
                                type: "custom",
                                from: {
                                    height: startHeight
                                },
                                to: {
                                    height: endHeight
                                },
                                duration: this.option("animationDuration"),
                                easing: this.option("_animationEasing")
                            })
                        }
                        return d.done((function() {
                            if ($element.hasClass("dx-accordion-item-opened") && !fixedHeight) {
                                $element.css("height", "")
                            }
                            $element.not(".dx-accordion-item-opened").addClass("dx-accordion-item-closed")
                        }))
                    },
                    _splitFreeSpace: function(freeSpace) {
                        if (!freeSpace) {
                            return freeSpace
                        }
                        return freeSpace / this.option("selectedItems").length
                    },
                    _calculateFreeSpace: function() {
                        const height = this.option("height");
                        if (void 0 === height || "auto" === height) {
                            return
                        }
                        const $titles = this._itemTitles();
                        let itemsHeight = 0;
                        iteratorUtils.each($titles, (function(_, title) {
                            itemsHeight += (0, _size.getOuterHeight)(title)
                        }));
                        return (0, _size.getHeight)(this.$element()) - itemsHeight
                    },
                    _visibilityChanged: function(visible) {
                        if (visible) {
                            this._dimensionChanged()
                        }
                    },
                    _dimensionChanged: function() {
                        this._updateItemHeights(true)
                    },
                    _clean: function() {
                        this._deferredTemplateItems.forEach(item => {
                            item.reject()
                        });
                        this._deferredTemplateItems = [];
                        clearTimeout(this._animationTimer);
                        this.callBase()
                    },
                    _tryParseItemPropertyName: function(fullName) {
                        const matches = fullName.match(/.*\.(.*)/);
                        if ((0, _type.isDefined)(matches) && matches.length >= 1) {
                            return matches[1]
                        }
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "items":
                                this.callBase(args);
                                if ("title" === this._tryParseItemPropertyName(args.fullName)) {
                                    this._renderSelection(this._getSelectedItemIndices(), [])
                                }
                                if ("visible" === this._tryParseItemPropertyName(args.fullName)) {
                                    this._updateItemHeightsWrapper(true)
                                }
                                if (true === this.option("repaintChangesOnly") && "items" === args.fullName) {
                                    this._updateItemHeightsWrapper(true);
                                    this._renderSelection(this._getSelectedItemIndices(), [])
                                }
                                break;
                            case "animationDuration":
                            case "onItemTitleClick":
                            case "_animationEasing":
                                break;
                            case "collapsible":
                                this.option("selectionRequired", !this.option("collapsible"));
                                break;
                            case "itemTitleTemplate":
                            case "height":
                            case "deferRendering":
                                this._invalidate();
                                break;
                            case "multiple":
                                this.option("selectionMode", args.value ? "multiple" : "single");
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    expandItem: function(index) {
                        this._deferredAnimate = new _deferred.Deferred;
                        this.selectItem(index);
                        return this._deferredAnimate.promise()
                    },
                    collapseItem: function(index) {
                        this._deferredAnimate = new _deferred.Deferred;
                        this.unselectItem(index);
                        return this._deferredAnimate.promise()
                    },
                    updateDimensions: function() {
                        return this._updateItemHeights(false)
                    }
                });
                (0, _component_registrator.default)("dxAccordion", Accordion);
                var _default = Accordion;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        81476:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/action_sheet.js ***!
              \****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../localization/message */ 28109));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _button = _interopRequireDefault(__webpack_require__( /*! ./button */ 63008));
                var _uiCollection_widget = _interopRequireDefault(__webpack_require__( /*! ./collection/ui.collection_widget.edit */ 11050));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./popup/ui.popup */ 51495));
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ./popover/ui.popover */ 17287));
                var _bindable_template = __webpack_require__( /*! ../core/templates/bindable_template */ 93280);
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();
                const ActionSheet = _uiCollection_widget.default.inherit({
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            usePopover: false,
                            target: null,
                            title: "",
                            showTitle: true,
                            showCancelButton: true,
                            cancelText: _message.default.format("Cancel"),
                            onCancelClick: null,
                            visible: false,
                            noDataText: "",
                            focusStateEnabled: false,
                            selectByClick: false
                        })
                    },
                    _defaultOptionsRules: function() {
                        return this.callBase().concat([{
                            device: {
                                platform: "ios",
                                tablet: true
                            },
                            options: {
                                usePopover: true
                            }
                        }])
                    },
                    _initTemplates: function() {
                        this.callBase();
                        this._templateManager.addDefaultTemplates({
                            item: new _bindable_template.BindableTemplate((function($container, data) {
                                const button = new _button.default((0, _renderer.default)("<div>"), (0, _extend.extend)({
                                    onClick: data && data.click,
                                    stylingMode: data && data.stylingMode || "outlined"
                                }, data));
                                $container.append(button.$element())
                            }), ["disabled", "icon", "text", "type", "onClick", "click", "stylingMode"], this.option("integrationOptions.watchMethod"))
                        })
                    },
                    _itemContainer: function() {
                        return this._$itemContainer
                    },
                    _itemClass: function() {
                        return "dx-actionsheet-item"
                    },
                    _itemDataKey: function() {
                        return "dxActionSheetItemData"
                    },
                    _toggleVisibility: _common.noop,
                    _renderDimensions: _common.noop,
                    _initMarkup: function() {
                        this.callBase();
                        this.$element().addClass("dx-actionsheet");
                        this._createItemContainer()
                    },
                    _render: function() {
                        this._renderPopup()
                    },
                    _createItemContainer: function() {
                        this._$itemContainer = (0, _renderer.default)("<div>").addClass("dx-actionsheet-container");
                        this._renderDisabled()
                    },
                    _renderDisabled: function() {
                        this._$itemContainer.toggleClass("dx-state-disabled", this.option("disabled"))
                    },
                    _renderPopup: function() {
                        this._$popup = (0, _renderer.default)("<div>").appendTo(this.$element());
                        this._isPopoverMode() ? this._createPopover() : this._createPopup();
                        this._renderPopupTitle();
                        this._mapPopupOption("visible")
                    },
                    _mapPopupOption: function(optionName) {
                        this._popup && this._popup.option(optionName, this.option(optionName))
                    },
                    _isPopoverMode: function() {
                        return this.option("usePopover") && this.option("target")
                    },
                    _renderPopupTitle: function() {
                        this._mapPopupOption("showTitle");
                        this._popup && this._popup.$wrapper().toggleClass("dx-actionsheet-without-title", !this.option("showTitle"))
                    },
                    _clean: function() {
                        if (this._$popup) {
                            this._$popup.remove()
                        }
                        this.callBase()
                    },
                    _overlayConfig: function() {
                        return {
                            onInitialized: function(args) {
                                this._popup = args.component
                            }.bind(this),
                            disabled: false,
                            showTitle: true,
                            title: this.option("title"),
                            deferRendering: !window.angular,
                            onContentReady: this._popupContentReadyAction.bind(this),
                            onHidden: this.hide.bind(this)
                        }
                    },
                    _createPopover: function() {
                        this._createComponent(this._$popup, _ui2.default, (0, _extend.extend)(this._overlayConfig(), {
                            width: this.option("width") || 200,
                            height: this.option("height") || "auto",
                            target: this.option("target")
                        }));
                        this._popup.$overlayContent().attr("role", "dialog");
                        this._popup.$wrapper().addClass("dx-actionsheet-popover-wrapper")
                    },
                    _createPopup: function() {
                        this._createComponent(this._$popup, _ui.default, (0, _extend.extend)(this._overlayConfig(), {
                            dragEnabled: false,
                            width: this.option("width") || "100%",
                            height: this.option("height") || "auto",
                            showCloseButton: false,
                            position: {
                                my: "bottom",
                                at: "bottom",
                                of: window
                            },
                            animation: {
                                show: {
                                    type: "slide",
                                    duration: 400,
                                    from: {
                                        position: {
                                            my: "top",
                                            at: "bottom",
                                            of: window
                                        }
                                    },
                                    to: {
                                        position: {
                                            my: "bottom",
                                            at: "bottom",
                                            of: window
                                        }
                                    }
                                },
                                hide: {
                                    type: "slide",
                                    duration: 400,
                                    from: {
                                        position: {
                                            my: "bottom",
                                            at: "bottom",
                                            of: window
                                        }
                                    },
                                    to: {
                                        position: {
                                            my: "top",
                                            at: "bottom",
                                            of: window
                                        }
                                    }
                                }
                            }
                        }));
                        this._popup.$wrapper().addClass("dx-actionsheet-popup-wrapper")
                    },
                    _popupContentReadyAction: function() {
                        this._popup.$content().append(this._$itemContainer);
                        this._attachClickEvent();
                        this._attachHoldEvent();
                        this._prepareContent();
                        this._renderContent();
                        this._renderCancelButton()
                    },
                    _renderCancelButton: function() {
                        if (this._isPopoverMode()) {
                            return
                        }
                        if (this._$cancelButton) {
                            this._$cancelButton.remove()
                        }
                        if (this.option("showCancelButton")) {
                            const cancelClickAction = this._createActionByOption("onCancelClick") || _common.noop;
                            const that = this;
                            this._$cancelButton = (0, _renderer.default)("<div>").addClass("dx-actionsheet-cancel").appendTo(this._popup && this._popup.$content());
                            this._createComponent(this._$cancelButton, _button.default, {
                                disabled: false,
                                stylingMode: "outlined",
                                text: this.option("cancelText"),
                                onClick: function(e) {
                                    const hidingArgs = {
                                        event: e,
                                        cancel: false
                                    };
                                    cancelClickAction(hidingArgs);
                                    if (!hidingArgs.cancel) {
                                        that.hide()
                                    }
                                },
                                integrationOptions: {}
                            })
                        }
                    },
                    _attachItemClickEvent: _common.noop,
                    _itemClickHandler: function(e) {
                        this.callBase(e);
                        if (!(0, _renderer.default)(e.target).is(".dx-state-disabled, .dx-state-disabled *")) {
                            this.hide()
                        }
                    },
                    _itemHoldHandler: function(e) {
                        this.callBase(e);
                        if (!(0, _renderer.default)(e.target).is(".dx-state-disabled, .dx-state-disabled *")) {
                            this.hide()
                        }
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "width":
                            case "height":
                            case "visible":
                            case "title":
                                this._mapPopupOption(args.name);
                                break;
                            case "disabled":
                                this._renderDisabled();
                                break;
                            case "showTitle":
                                this._renderPopupTitle();
                                break;
                            case "showCancelButton":
                            case "onCancelClick":
                            case "cancelText":
                                this._renderCancelButton();
                                break;
                            case "target":
                            case "usePopover":
                            case "items":
                                this._invalidate();
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    toggle: function(showing) {
                        const that = this;
                        const d = new _deferred.Deferred;
                        that._popup.toggle(showing).done((function() {
                            that.option("visible", showing);
                            d.resolveWith(that)
                        }));
                        return d.promise()
                    },
                    show: function() {
                        return this.toggle(true)
                    },
                    hide: function() {
                        return this.toggle(false)
                    }
                });
                (0, _component_registrator.default)("dxActionSheet", ActionSheet);
                var _default = ActionSheet;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        65418:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/autocomplete.js ***!
              \****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./drop_down_editor/ui.drop_down_list */ 32468));
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);
                var _index = __webpack_require__( /*! ../events/utils/index */ 39611);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const Autocomplete = _ui.default.inherit({
                    _supportedKeys: function() {
                        let item = this._list ? this._list.option("focusedElement") : null;
                        const parent = this.callBase();
                        item = item && (0, _renderer.default)(item);
                        return (0, _extend.extend)({}, parent, {
                            upArrow: function(e) {
                                if (parent.upArrow.apply(this, arguments) && !(0, _index.isCommandKeyPressed)(e)) {
                                    e.preventDefault();
                                    e.stopPropagation();
                                    if (item && !this._calcNextItem(-1)) {
                                        this._clearFocusedItem();
                                        return false
                                    }
                                }
                                return true
                            },
                            downArrow: function(e) {
                                if (parent.downArrow.apply(this, arguments) && !(0, _index.isCommandKeyPressed)(e)) {
                                    e.preventDefault();
                                    e.stopPropagation();
                                    if (item && !this._calcNextItem(1)) {
                                        this._clearFocusedItem();
                                        return false
                                    }
                                }
                                return true
                            },
                            enter: function(e) {
                                if (!item) {
                                    this.close()
                                }
                                const opened = this.option("opened");
                                if (opened) {
                                    e.preventDefault()
                                }
                                return opened
                            }
                        })
                    },
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            minSearchLength: 1,
                            maxItemCount: 10,
                            noDataText: "",
                            showDropDownButton: false,
                            searchEnabled: true
                        })
                    },
                    _initMarkup: function() {
                        this.callBase();
                        this.$element().addClass("dx-autocomplete");
                        this.setAria("autocomplete", "inline")
                    },
                    _displayGetterExpr: function() {
                        return this.option("valueExpr")
                    },
                    _closeOutsideDropDownHandler: function(_ref) {
                        let {
                            target: target
                        } = _ref;
                        return !(0, _renderer.default)(target).closest(this.$element()).length
                    },
                    _renderDimensions: function() {
                        this.callBase();
                        this._updatePopupWidth();
                        this._updateListDimensions()
                    },
                    _popupWrapperClass: function() {
                        return this.callBase() + " dx-autocomplete-popup-wrapper"
                    },
                    _listConfig: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            pageLoadMode: "none",
                            onSelectionChanged: e => {
                                this._setSelectedItem(e.addedItems[0])
                            }
                        })
                    },
                    _listItemClickHandler: function(e) {
                        this._saveValueChangeEvent(e.event);
                        const value = this._displayGetter(e.itemData);
                        this.option("value", value);
                        this.close()
                    },
                    _setListDataSource: function() {
                        if (!this._list) {
                            return
                        }
                        this._list.option("selectedItems", []);
                        this.callBase()
                    },
                    _refreshSelected: _common.noop,
                    _searchCanceled: function() {
                        this.callBase();
                        this.close()
                    },
                    _loadItem: function(value, cache) {
                        const selectedItem = this._getItemFromPlain(value, cache);
                        return (new _deferred.Deferred).resolve(selectedItem).promise()
                    },
                    _dataSourceOptions: function() {
                        return {
                            paginate: true,
                            pageSize: this.option("maxItemCount")
                        }
                    },
                    _searchDataSource: function(searchValue) {
                        this._dataSource.pageSize(this.option("maxItemCount"));
                        this.callBase(searchValue);
                        this._clearFocusedItem()
                    },
                    _clearFocusedItem: function() {
                        if (this._list) {
                            this._list.option("focusedElement", null);
                            this._list.option("selectedIndex", -1)
                        }
                    },
                    _renderValueEventName: function() {
                        return "input keyup"
                    },
                    _valueChangeEventHandler: function(e) {
                        const value = this._input().val() || null;
                        return this.callBase(e, value)
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "maxItemCount":
                                this._searchDataSource();
                                break;
                            case "valueExpr":
                                this._compileDisplayGetter();
                                this._setListOption("displayExpr", this._displayGetterExpr());
                                this.callBase(args);
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    clear: function() {
                        this.callBase();
                        this.close()
                    },
                    reset: function() {
                        let value = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : void 0;
                        if (arguments.length) {
                            this.callBase(value)
                        } else {
                            this.callBase()
                        }
                        this.close()
                    }
                });
                (0, _component_registrator.default)("dxAutocomplete", Autocomplete);
                var _default = Autocomplete;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        55551:
            /*!*******************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/box.js ***!
              \*******************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _inflector = __webpack_require__( /*! ../core/utils/inflector */ 78008);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _style = __webpack_require__( /*! ../core/utils/style */ 80968);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _item = _interopRequireDefault(__webpack_require__( /*! ./collection/item */ 54778));
                var _uiCollection_widget = _interopRequireDefault(__webpack_require__( /*! ./collection/ui.collection_widget.edit */ 11050));

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

                function _inheritsLoose(subClass, superClass) {
                    subClass.prototype = Object.create(superClass.prototype);
                    subClass.prototype.constructor = subClass;
                    _setPrototypeOf(subClass, superClass)
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const MINSIZE_MAP = {
                    row: "minWidth",
                    col: "minHeight"
                };
                const MAXSIZE_MAP = {
                    row: "maxWidth",
                    col: "maxHeight"
                };
                const FLEX_JUSTIFY_CONTENT_MAP = {
                    start: "flex-start",
                    end: "flex-end",
                    center: "center",
                    "space-between": "space-between",
                    "space-around": "space-around"
                };
                const FLEX_ALIGN_ITEMS_MAP = {
                    start: "flex-start",
                    end: "flex-end",
                    center: "center",
                    stretch: "stretch"
                };
                const FLEX_DIRECTION_MAP = {
                    row: "row",
                    col: "column"
                };
                const setFlexProp = (element, prop, value) => {
                    value = (0, _style.normalizeStyleProp)(prop, value);
                    element.style[(0, _style.styleProp)(prop)] = value;
                    if (!(0, _window.hasWindow)()) {
                        if ("" === value || !(0, _type.isDefined)(value)) {
                            return
                        }
                        const cssName = (0, _inflector.dasherize)(prop);
                        const styleExpr = cssName + ": " + value + ";";
                        (0, _style.setStyle)(element, styleExpr, false)
                    }
                };
                let BoxItem = function(_CollectionWidgetItem) {
                    _inheritsLoose(BoxItem, _CollectionWidgetItem);

                    function BoxItem() {
                        return _CollectionWidgetItem.apply(this, arguments) || this
                    }
                    var _proto = BoxItem.prototype;
                    _proto._renderVisible = function(value, oldValue) {
                        _CollectionWidgetItem.prototype._renderVisible.call(this, value);
                        if ((0, _type.isDefined)(oldValue)) {
                            this._options.fireItemStateChangedAction({
                                name: "visible",
                                state: value,
                                oldState: oldValue
                            })
                        }
                    };
                    return BoxItem
                }(_item.default);
                let LayoutStrategy = function() {
                    function LayoutStrategy($element, option) {
                        this._$element = $element;
                        this._option = option
                    }
                    var _proto2 = LayoutStrategy.prototype;
                    _proto2.renderBox = function() {
                        this._$element.css({
                            display: (0, _style.stylePropPrefix)("flexDirection") + "flex"
                        });
                        setFlexProp(this._$element.get(0), "flexDirection", FLEX_DIRECTION_MAP[this._option("direction")])
                    };
                    _proto2.renderAlign = function() {
                        this._$element.css({
                            justifyContent: this._normalizedAlign()
                        })
                    };
                    _proto2._normalizedAlign = function() {
                        const align = this._option("align");
                        return align in FLEX_JUSTIFY_CONTENT_MAP ? FLEX_JUSTIFY_CONTENT_MAP[align] : align
                    };
                    _proto2.renderCrossAlign = function() {
                        this._$element.css({
                            alignItems: this._normalizedCrossAlign()
                        })
                    };
                    _proto2._normalizedCrossAlign = function() {
                        const crossAlign = this._option("crossAlign");
                        return crossAlign in FLEX_ALIGN_ITEMS_MAP ? FLEX_ALIGN_ITEMS_MAP[crossAlign] : crossAlign
                    };
                    _proto2.renderItems = function($items) {
                        const flexPropPrefix = (0, _style.stylePropPrefix)("flexDirection");
                        const direction = this._option("direction");
                        (0, _iterator.each)($items, (function() {
                            const $item = (0, _renderer.default)(this);
                            const item = $item.data("dxBoxItemData");
                            $item.css({
                                display: flexPropPrefix + "flex"
                            }).css(MAXSIZE_MAP[direction], item.maxSize || "none").css(MINSIZE_MAP[direction], item.minSize || "0");
                            setFlexProp($item.get(0), "flexBasis", item.baseSize || 0);
                            setFlexProp($item.get(0), "flexGrow", item.ratio);
                            setFlexProp($item.get(0), "flexShrink", (0, _type.isDefined)(item.shrink) ? item.shrink : 1);
                            $item.children().each((_, itemContent) => {
                                (0, _renderer.default)(itemContent).css({
                                    width: "auto",
                                    height: "auto",
                                    display: (0, _style.stylePropPrefix)("flexDirection") + "flex",
                                    flexBasis: 0
                                });
                                setFlexProp(itemContent, "flexGrow", 1);
                                setFlexProp(itemContent, "flexDirection", (0, _renderer.default)(itemContent)[0].style.flexDirection || "column")
                            })
                        }))
                    };
                    return LayoutStrategy
                }();
                let Box = function(_CollectionWidget) {
                    _inheritsLoose(Box, _CollectionWidget);

                    function Box() {
                        return _CollectionWidget.apply(this, arguments) || this
                    }
                    var _proto3 = Box.prototype;
                    _proto3._getDefaultOptions = function() {
                        return (0, _extend.extend)(_CollectionWidget.prototype._getDefaultOptions.call(this), {
                            direction: "row",
                            align: "start",
                            crossAlign: "stretch",
                            activeStateEnabled: false,
                            focusStateEnabled: false,
                            onItemStateChanged: void 0,
                            _queue: void 0
                        })
                    };
                    _proto3._itemClass = function() {
                        return "dx-box-item"
                    };
                    _proto3._itemDataKey = function() {
                        return "dxBoxItemData"
                    };
                    _proto3._itemElements = function() {
                        return this._itemContainer().children(this._itemSelector())
                    };
                    _proto3._init = function() {
                        _CollectionWidget.prototype._init.call(this);
                        this.$element().addClass("dx-box-flex");
                        this._initLayout();
                        this._initBoxQueue()
                    };
                    _proto3._initLayout = function() {
                        this._layout = new LayoutStrategy(this.$element(), this.option.bind(this))
                    };
                    _proto3._initBoxQueue = function() {
                        this._queue = this.option("_queue") || []
                    };
                    _proto3._queueIsNotEmpty = function() {
                        return this.option("_queue") ? false : !!this._queue.length
                    };
                    _proto3._pushItemToQueue = function($item, config) {
                        this._queue.push({
                            $item: $item,
                            config: config
                        })
                    };
                    _proto3._shiftItemFromQueue = function() {
                        return this._queue.shift()
                    };
                    _proto3._initMarkup = function() {
                        this.$element().addClass("dx-box");
                        this._layout.renderBox();
                        _CollectionWidget.prototype._initMarkup.call(this);
                        this._renderAlign();
                        this._renderActions()
                    };
                    _proto3._renderActions = function() {
                        this._onItemStateChanged = this._createActionByOption("onItemStateChanged")
                    };
                    _proto3._renderAlign = function() {
                        this._layout.renderAlign();
                        this._layout.renderCrossAlign()
                    };
                    _proto3._renderItems = function(items) {
                        _CollectionWidget.prototype._renderItems.call(this, items);
                        while (this._queueIsNotEmpty()) {
                            const item = this._shiftItemFromQueue();
                            this._createComponent(item.$item, Box, (0, _extend.extend)({
                                itemTemplate: this.option("itemTemplate"),
                                itemHoldTimeout: this.option("itemHoldTimeout"),
                                onItemHold: this.option("onItemHold"),
                                onItemClick: this.option("onItemClick"),
                                onItemContextMenu: this.option("onItemContextMenu"),
                                onItemRendered: this.option("onItemRendered"),
                                _queue: this._queue
                            }, item.config))
                        }
                        this._layout.renderItems(this._itemElements())
                    };
                    _proto3._renderItemContent = function(args) {
                        const $itemNode = args.itemData && args.itemData.node;
                        if ($itemNode) {
                            return this._renderItemContentByNode(args, $itemNode)
                        }
                        return _CollectionWidget.prototype._renderItemContent.call(this, args)
                    };
                    _proto3._postprocessRenderItem = function(args) {
                        const boxConfig = args.itemData.box;
                        if (!boxConfig) {
                            return
                        }
                        this._pushItemToQueue(args.itemContent, boxConfig)
                    };
                    _proto3._createItemByTemplate = function(itemTemplate, args) {
                        if (args.itemData.box) {
                            return itemTemplate.source ? itemTemplate.source() : (0, _renderer.default)()
                        }
                        return _CollectionWidget.prototype._createItemByTemplate.call(this, itemTemplate, args)
                    };
                    _proto3._itemOptionChanged = function(item, property, value, oldValue) {
                        if ("visible" === property) {
                            this._onItemStateChanged({
                                name: property,
                                state: value,
                                oldState: false !== oldValue
                            })
                        }
                        _CollectionWidget.prototype._itemOptionChanged.call(this, item, property, value)
                    };
                    _proto3._optionChanged = function(args) {
                        switch (args.name) {
                            case "_queue":
                            case "direction":
                                this._invalidate();
                                break;
                            case "align":
                                this._layout.renderAlign();
                                break;
                            case "crossAlign":
                                this._layout.renderCrossAlign();
                                break;
                            default:
                                _CollectionWidget.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto3._itemOptions = function() {
                        const options = _CollectionWidget.prototype._itemOptions.call(this);
                        options.fireItemStateChangedAction = e => {
                            this._onItemStateChanged(e)
                        };
                        return options
                    };
                    return Box
                }(_uiCollection_widget.default);
                Box.ItemClass = BoxItem;
                (0, _component_registrator.default)("dxBox", Box);
                var _default = Box;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        63008:
            /*!**********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/button.js ***!
              \**********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _button = (obj = __webpack_require__( /*! ../renovation/ui/button.j */ 83151), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _button.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        28236:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/button_group.js ***!
              \****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./widget/ui.widget */ 14390));
                var _button = _interopRequireDefault(__webpack_require__( /*! ./button */ 63008));
                var _uiCollection_widget = _interopRequireDefault(__webpack_require__( /*! ./collection/ui.collection_widget.edit */ 11050));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _bindable_template = __webpack_require__( /*! ../core/templates/bindable_template */ 93280);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const BUTTON_GROUP_STYLING_MODE_CLASS = {
                    contained: "dx-buttongroup-mode-contained",
                    outlined: "dx-buttongroup-mode-outlined",
                    text: "dx-buttongroup-mode-text"
                };
                const ButtonCollection = _uiCollection_widget.default.inherit({
                    _initTemplates() {
                        this.callBase();
                        this._templateManager.addDefaultTemplates({
                            item: new _bindable_template.BindableTemplate(($container, data, model) => {
                                this._prepareItemStyles($container);
                                const template = this.option("buttonTemplate");
                                this._createComponent($container, _button.default, (0, _extend.extend)({}, model, data, this._getBasicButtonOptions(), {
                                    _templateData: this._hasCustomTemplate(template) ? model : {},
                                    template: model.template || template
                                }))
                            }, ["text", "type", "icon", "disabled", "visible", "hint"], this.option("integrationOptions.watchMethod"))
                        })
                    },
                    _getBasicButtonOptions() {
                        return {
                            focusStateEnabled: false,
                            onClick: null,
                            hoverStateEnabled: this.option("hoverStateEnabled"),
                            activeStateEnabled: this.option("activeStateEnabled"),
                            stylingMode: this.option("stylingMode")
                        }
                    },
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            itemTemplateProperty: null
                        })
                    },
                    _hasCustomTemplate(template) {
                        return (0, _type.isFunction)(template) || this.option("integrationOptions.templates")[template]
                    },
                    _selectedItemClass: () => "dx-item-selected dx-state-selected",
                    _prepareItemStyles($item) {
                        const itemIndex = $item.data("dxItemIndex");
                        0 === itemIndex && $item.addClass("dx-buttongroup-first-item");
                        const items = this.option("items");
                        items && itemIndex === items.length - 1 && $item.addClass("dx-buttongroup-last-item");
                        $item.addClass("dx-shape-standard")
                    },
                    _renderItemContent(args) {
                        args.container = (0, _renderer.default)(args.container).parent();
                        return this.callBase(args)
                    },
                    _setAriaSelectionAttribute: function($target, value) {
                        this.setAria("pressed", value, $target)
                    },
                    _renderItemContentByNode: function(args, $node) {
                        args.container = (0, _renderer.default)(args.container.children().first());
                        return this.callBase(args, $node)
                    },
                    _focusTarget() {
                        return this.$element().parent()
                    },
                    _keyboardEventBindingTarget() {
                        return this._focusTarget()
                    },
                    _refreshContent() {
                        this._prepareContent();
                        this._renderContent()
                    },
                    _itemClass: () => "dx-buttongroup-item",
                    _itemSelectHandler: function(e) {
                        if ("single" === this.option("selectionMode") && this.isItemSelected(e.currentTarget)) {
                            return
                        }
                        this.callBase(e)
                    }
                });
                const ButtonGroup = _ui.default.inherit({
                    _getDefaultOptions() {
                        return (0, _extend.extend)(this.callBase(), {
                            hoverStateEnabled: true,
                            focusStateEnabled: true,
                            selectionMode: "single",
                            selectedItems: [],
                            selectedItemKeys: [],
                            stylingMode: "contained",
                            keyExpr: "text",
                            items: [],
                            buttonTemplate: "content",
                            onSelectionChanged: null,
                            onItemClick: null
                        })
                    },
                    _init() {
                        this.callBase();
                        this._createItemClickAction()
                    },
                    _createItemClickAction() {
                        this._itemClickAction = this._createActionByOption("onItemClick")
                    },
                    _initMarkup() {
                        this.setAria("role", "group");
                        this.$element().addClass("dx-buttongroup");
                        this._renderStylingMode();
                        this._renderButtons();
                        this._syncSelectionOptions();
                        this.callBase()
                    },
                    _renderStylingMode() {
                        var _BUTTON_GROUP_STYLING;
                        const {
                            stylingMode: stylingMode
                        } = this.option();
                        for (const key in BUTTON_GROUP_STYLING_MODE_CLASS) {
                            this.$element().removeClass(BUTTON_GROUP_STYLING_MODE_CLASS[key])
                        }
                        this.$element().addClass(null !== (_BUTTON_GROUP_STYLING = BUTTON_GROUP_STYLING_MODE_CLASS[stylingMode]) && void 0 !== _BUTTON_GROUP_STYLING ? _BUTTON_GROUP_STYLING : BUTTON_GROUP_STYLING_MODE_CLASS.contained)
                    },
                    _fireSelectionChangeEvent: function(addedItems, removedItems) {
                        this._createActionByOption("onSelectionChanged", {
                            excludeValidators: ["disabled", "readOnly"]
                        })({
                            addedItems: addedItems,
                            removedItems: removedItems
                        })
                    },
                    _renderButtons() {
                        const $buttons = (0, _renderer.default)("<div>").addClass("dx-buttongroup-wrapper").appendTo(this.$element());
                        const selectedItems = this.option("selectedItems");
                        const options = {
                            selectionMode: this.option("selectionMode"),
                            items: this.option("items"),
                            keyExpr: this.option("keyExpr"),
                            buttonTemplate: this.option("buttonTemplate"),
                            scrollingEnabled: false,
                            selectedItemKeys: this.option("selectedItemKeys"),
                            focusStateEnabled: this.option("focusStateEnabled"),
                            hoverStateEnabled: this.option("hoverStateEnabled"),
                            activeStateEnabled: this.option("activeStateEnabled"),
                            stylingMode: this.option("stylingMode"),
                            accessKey: this.option("accessKey"),
                            tabIndex: this.option("tabIndex"),
                            noDataText: "",
                            selectionRequired: false,
                            onItemRendered: e => {
                                const width = this.option("width");
                                (0, _type.isDefined)(width) && (0, _renderer.default)(e.itemElement).addClass("dx-buttongroup-item-has-width")
                            },
                            onSelectionChanged: e => {
                                this._syncSelectionOptions();
                                this._fireSelectionChangeEvent(e.addedItems, e.removedItems)
                            },
                            onItemClick: e => {
                                this._itemClickAction(e)
                            }
                        };
                        if ((0, _type.isDefined)(selectedItems) && selectedItems.length) {
                            options.selectedItems = selectedItems
                        }
                        this._buttonsCollection = this._createComponent($buttons, ButtonCollection, options)
                    },
                    _syncSelectionOptions() {
                        this._setOptionWithoutOptionChange("selectedItems", this._buttonsCollection.option("selectedItems"));
                        this._setOptionWithoutOptionChange("selectedItemKeys", this._buttonsCollection.option("selectedItemKeys"))
                    },
                    _optionChanged(args) {
                        switch (args.name) {
                            case "stylingMode":
                            case "selectionMode":
                            case "keyExpr":
                            case "buttonTemplate":
                            case "items":
                            case "activeStateEnabled":
                            case "focusStateEnabled":
                            case "hoverStateEnabled":
                            case "tabIndex":
                                this._invalidate();
                                break;
                            case "selectedItemKeys":
                            case "selectedItems":
                                this._buttonsCollection.option(args.name, args.value);
                                break;
                            case "onItemClick":
                                this._createItemClickAction();
                                break;
                            case "onSelectionChanged":
                                break;
                            case "width":
                                this.callBase(args);
                                this._buttonsCollection.itemElements().toggleClass("dx-buttongroup-item-has-width", !!args.value);
                                break;
                            default:
                                this.callBase(args)
                        }
                    }
                });
                (0, _component_registrator.default)("dxButtonGroup", ButtonGroup);
                var _default = ButtonGroup;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        26559:
            /*!************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/calendar.js ***!
              \************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _ui = (obj = __webpack_require__( /*! ./calendar/ui.calendar */ 36989), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _ui.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        15360:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/calendar/ui.calendar.base_view.js ***!
              \**********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _element_data = __webpack_require__( /*! ../../core/element_data */ 97906);
                var _element = __webpack_require__( /*! ../../core/element */ 6415);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 91198));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date_serialization */ 69434));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _click = __webpack_require__( /*! ../../events/click */ 95429);
                var _hover = __webpack_require__( /*! ../../events/hover */ 24028);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const {
                    abstract: abstract
                } = _ui.default;
                const NOT_WEEK_CELL_SELECTOR = "td:not(.".concat("dx-calendar-week-number-cell", ")");
                const CALENDAR_DXCLICK_EVENT_NAME = (0, _index.addNamespace)(_click.name, "dxCalendar");
                const CALENDAR_DXHOVERSTART_EVENT_NAME = (0, _index.addNamespace)(_hover.start, "dxCalendar");
                const BaseView = _ui.default.inherit({
                    _getViewName: function() {
                        return "base"
                    },
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            date: new Date,
                            focusStateEnabled: false,
                            cellTemplate: null,
                            disabledDates: null,
                            onCellClick: null,
                            onCellHover: null,
                            onWeekNumberClick: null,
                            rowCount: 3,
                            colCount: 4,
                            allowValueSelection: true,
                            _todayDate: () => new Date
                        })
                    },
                    _initMarkup: function() {
                        this.callBase();
                        this._renderImpl()
                    },
                    _renderImpl: function() {
                        this.$element().append(this._createTable());
                        this._createDisabledDatesHandler();
                        this._renderBody();
                        this._renderContouredDate();
                        this._renderValue();
                        this._renderRange();
                        this._renderEvents()
                    },
                    _createTable: function() {
                        this._$table = (0, _renderer.default)("<table>");
                        const localizedWidgetName = _message.default.format("dxCalendar-ariaWidgetName");
                        this.setAria({
                            label: localizedWidgetName,
                            role: "grid"
                        }, this._$table);
                        return this._$table
                    },
                    _renderBody: function() {
                        this.$body = (0, _renderer.default)("<tbody>").appendTo(this._$table);
                        const rowData = {
                            cellDate: this._getFirstCellData(),
                            prevCellDate: null
                        };
                        for (let rowIndex = 0, rowCount = this.option("rowCount"); rowIndex < rowCount; rowIndex++) {
                            rowData.row = this._createRow();
                            for (let colIndex = 0, colCount = this.option("colCount"); colIndex < colCount; colIndex++) {
                                this._renderCell(rowData, colIndex)
                            }
                            this._renderWeekNumberCell(rowData)
                        }
                    },
                    _createRow: function() {
                        const row = _dom_adapter.default.createElement("tr");
                        this.setAria("role", "row", (0, _renderer.default)(row));
                        this.$body.get(0).appendChild(row);
                        return row
                    },
                    _createCell: function(cellDate, cellIndex) {
                        const cell = _dom_adapter.default.createElement("td");
                        const $cell = (0, _renderer.default)(cell);
                        cell.className = this._getClassNameByDate(cellDate, cellIndex);
                        cell.setAttribute("data-value", _date_serialization.default.serializeDate(cellDate, _date.default.getShortDateFormat()));
                        (0, _element_data.data)(cell, "dxDateValueKey", cellDate);
                        this.setAria({
                            role: "gridcell",
                            label: this.getCellAriaLabel(cellDate)
                        }, $cell);
                        return {
                            cell: cell,
                            $cell: $cell
                        }
                    },
                    _renderCell: function(params, cellIndex) {
                        const {
                            cellDate: cellDate,
                            prevCellDate: prevCellDate,
                            row: row
                        } = params;
                        if (prevCellDate) {
                            _date.default.fixTimezoneGap(prevCellDate, cellDate)
                        }
                        params.prevCellDate = cellDate;
                        const {
                            cell: cell,
                            $cell: $cell
                        } = this._createCell(cellDate, cellIndex);
                        const cellTemplate = this.option("cellTemplate");
                        (0, _renderer.default)(row).append(cell);
                        if (cellTemplate) {
                            cellTemplate.render(this._prepareCellTemplateData(cellDate, cellIndex, $cell))
                        } else {
                            cell.innerHTML = this._getCellText(cellDate)
                        }
                        params.cellDate = this._getNextCellData(cellDate)
                    },
                    _getClassNameByDate: function(cellDate, cellIndex) {
                        let className = "dx-calendar-cell";
                        if (this._isTodayCell(cellDate)) {
                            className += " ".concat("dx-calendar-today")
                        }
                        if (this._isDateOutOfRange(cellDate) || this.isDateDisabled(cellDate)) {
                            className += " ".concat("dx-calendar-empty-cell")
                        }
                        if (this._isOtherView(cellDate)) {
                            className += " ".concat("dx-calendar-other-view")
                        }
                        if ("range" === this.option("selectionMode")) {
                            if (0 === cellIndex) {
                                className += " ".concat("dx-calendar-cell-start-in-row")
                            }
                            if (cellIndex === this.option("colCount") - 1) {
                                className += " ".concat("dx-calendar-cell-end-in-row")
                            }
                            if (this._isStartDayOfMonth(cellDate)) {
                                className += " ".concat("dx-calendar-cell-start")
                            }
                            if (this._isEndDayOfMonth(cellDate)) {
                                className += " ".concat("dx-calendar-cell-end")
                            }
                        }
                        return className
                    },
                    _prepareCellTemplateData: function(cellDate, cellIndex, $cell) {
                        const isDateCell = cellDate instanceof Date;
                        const text = isDateCell ? this._getCellText(cellDate) : cellDate;
                        const date = isDateCell ? cellDate : void 0;
                        const view = this._getViewName();
                        return {
                            model: {
                                text: text,
                                date: date,
                                view: view
                            },
                            container: (0, _element.getPublicElement)($cell),
                            index: cellIndex
                        }
                    },
                    _renderEvents: function() {
                        this._createCellClickAction();
                        _events_engine.default.off(this._$table, CALENDAR_DXCLICK_EVENT_NAME);
                        _events_engine.default.on(this._$table, CALENDAR_DXCLICK_EVENT_NAME, NOT_WEEK_CELL_SELECTOR, e => {
                            if (!(0, _renderer.default)(e.currentTarget).hasClass("dx-calendar-empty-cell")) {
                                this._cellClickAction({
                                    event: e,
                                    value: (0, _renderer.default)(e.currentTarget).data("dxDateValueKey")
                                })
                            }
                        });
                        const {
                            selectionMode: selectionMode
                        } = this.option();
                        _events_engine.default.off(this._$table, CALENDAR_DXHOVERSTART_EVENT_NAME);
                        if ("range" === selectionMode) {
                            this._createCellHoverAction();
                            _events_engine.default.on(this._$table, CALENDAR_DXHOVERSTART_EVENT_NAME, NOT_WEEK_CELL_SELECTOR, e => {
                                if (!(0, _renderer.default)(e.currentTarget).hasClass("dx-calendar-empty-cell")) {
                                    this._cellHoverAction({
                                        event: e,
                                        value: (0, _renderer.default)(e.currentTarget).data("dxDateValueKey")
                                    })
                                }
                            })
                        }
                        if ("single" !== selectionMode) {
                            this._createWeekNumberCellClickAction();
                            _events_engine.default.on(this._$table, CALENDAR_DXCLICK_EVENT_NAME, ".".concat("dx-calendar-week-number-cell"), e => {
                                const $row = (0, _renderer.default)(e.currentTarget).closest("tr");
                                const firstDateInRow = $row.find(".".concat("dx-calendar-cell")).first().data("dxDateValueKey");
                                const lastDateInRow = $row.find(".".concat("dx-calendar-cell")).last().data("dxDateValueKey");
                                const rowDates = [..._date.default.getDatesOfInterval(firstDateInRow, lastDateInRow, 864e5), lastDateInRow];
                                this._weekNumberCellClickAction({
                                    event: e,
                                    rowDates: rowDates
                                })
                            })
                        }
                    },
                    _createCellClickAction: function() {
                        this._cellClickAction = this._createActionByOption("onCellClick")
                    },
                    _createCellHoverAction: function() {
                        this._cellHoverAction = this._createActionByOption("onCellHover")
                    },
                    _createWeekNumberCellClickAction: function() {
                        this._weekNumberCellClickAction = this._createActionByOption("onWeekNumberClick")
                    },
                    _createDisabledDatesHandler: function() {
                        const disabledDates = this.option("disabledDates");
                        this._disabledDatesHandler = Array.isArray(disabledDates) ? this._getDefaultDisabledDatesHandler(disabledDates) : disabledDates || _common.noop
                    },
                    _getDefaultDisabledDatesHandler: function(disabledDates) {
                        return _common.noop
                    },
                    _isTodayCell: abstract,
                    _isDateOutOfRange: abstract,
                    isDateDisabled: function(cellDate) {
                        const dateParts = {
                            date: cellDate,
                            view: this._getViewName()
                        };
                        return this._disabledDatesHandler(dateParts)
                    },
                    _isOtherView: abstract,
                    _isStartDayOfMonth: abstract,
                    _isEndDayOfMonth: abstract,
                    _getCellText: abstract,
                    _getFirstCellData: abstract,
                    _getNextCellData: abstract,
                    _renderContouredDate: function(contouredDate) {
                        if (!this.option("focusStateEnabled")) {
                            return
                        }
                        contouredDate = contouredDate || this.option("contouredDate");
                        const $oldContouredCell = this._getContouredCell();
                        const $newContouredCell = this._getCellByDate(contouredDate);
                        $oldContouredCell.removeClass("dx-calendar-contoured-date");
                        if (contouredDate) {
                            $newContouredCell.addClass("dx-calendar-contoured-date")
                        }
                    },
                    _getContouredCell: function() {
                        return this._$table.find(".".concat("dx-calendar-contoured-date"))
                    },
                    _renderValue: function() {
                        if (!this.option("allowValueSelection")) {
                            return
                        }
                        let value = this.option("value");
                        if (!Array.isArray(value)) {
                            value = [value]
                        }
                        this._updateSelectedClass(value)
                    },
                    _updateSelectedClass: function(value) {
                        var _this$_$selectedCells;
                        if (this._isRangeMode() && !this._isMonthView()) {
                            return
                        }
                        null === (_this$_$selectedCells = this._$selectedCells) || void 0 === _this$_$selectedCells ? void 0 : _this$_$selectedCells.forEach($cell => {
                            $cell.removeClass("dx-calendar-selected-date")
                        });
                        this._$selectedCells = value.map(value => this._getCellByDate(value));
                        this._$selectedCells.forEach($cell => {
                            $cell.addClass("dx-calendar-selected-date")
                        })
                    },
                    _renderRange: function() {
                        var _this$_$rangeCells, _this$_$hoveredRangeC, _this$_$rangeStartHov, _this$_$rangeEndHover, _this$_$rangeStartDat, _this$_$rangeEndDateC, _this$_$rangeStartDat2, _this$_$rangeEndDateC2;
                        const {
                            allowValueSelection: allowValueSelection,
                            value: value,
                            range: range
                        } = this.option();
                        if (!allowValueSelection || !this._isRangeMode() || !this._isMonthView()) {
                            return
                        }
                        null === (_this$_$rangeCells = this._$rangeCells) || void 0 === _this$_$rangeCells ? void 0 : _this$_$rangeCells.forEach($cell => {
                            $cell.removeClass("dx-calendar-cell-in-range")
                        });
                        null === (_this$_$hoveredRangeC = this._$hoveredRangeCells) || void 0 === _this$_$hoveredRangeC ? void 0 : _this$_$hoveredRangeC.forEach($cell => {
                            $cell.removeClass("dx-calendar-cell-range-hover")
                        });
                        null === (_this$_$rangeStartHov = this._$rangeStartHoverCell) || void 0 === _this$_$rangeStartHov ? void 0 : _this$_$rangeStartHov.removeClass("dx-calendar-cell-range-hover-start");
                        null === (_this$_$rangeEndHover = this._$rangeEndHoverCell) || void 0 === _this$_$rangeEndHover ? void 0 : _this$_$rangeEndHover.removeClass("dx-calendar-cell-range-hover-end");
                        null === (_this$_$rangeStartDat = this._$rangeStartDateCell) || void 0 === _this$_$rangeStartDat ? void 0 : _this$_$rangeStartDat.removeClass("dx-calendar-range-start-date");
                        null === (_this$_$rangeEndDateC = this._$rangeEndDateCell) || void 0 === _this$_$rangeEndDateC ? void 0 : _this$_$rangeEndDateC.removeClass("dx-calendar-range-end-date");
                        this._$rangeCells = range.map(value => this._getCellByDate(value));
                        this._$rangeStartDateCell = this._getCellByDate(value[0]);
                        this._$rangeEndDateCell = this._getCellByDate(value[1]);
                        this._$rangeCells.forEach($cell => {
                            $cell.addClass("dx-calendar-cell-in-range")
                        });
                        null === (_this$_$rangeStartDat2 = this._$rangeStartDateCell) || void 0 === _this$_$rangeStartDat2 ? void 0 : _this$_$rangeStartDat2.addClass("dx-calendar-range-start-date");
                        null === (_this$_$rangeEndDateC2 = this._$rangeEndDateCell) || void 0 === _this$_$rangeEndDateC2 ? void 0 : _this$_$rangeEndDateC2.addClass("dx-calendar-range-end-date")
                    },
                    _renderHoveredRange() {
                        var _this$_$hoveredRangeC2, _this$_$rangeStartHov2, _this$_$rangeEndHover2, _this$_$rangeStartHov3, _this$_$rangeEndHover3;
                        const {
                            allowValueSelection: allowValueSelection,
                            hoveredRange: hoveredRange
                        } = this.option();
                        if (!allowValueSelection || !this._isRangeMode() || !this._isMonthView()) {
                            return
                        }
                        null === (_this$_$hoveredRangeC2 = this._$hoveredRangeCells) || void 0 === _this$_$hoveredRangeC2 ? void 0 : _this$_$hoveredRangeC2.forEach($cell => {
                            $cell.removeClass("dx-calendar-cell-range-hover")
                        });
                        null === (_this$_$rangeStartHov2 = this._$rangeStartHoverCell) || void 0 === _this$_$rangeStartHov2 ? void 0 : _this$_$rangeStartHov2.removeClass("dx-calendar-cell-range-hover-start");
                        null === (_this$_$rangeEndHover2 = this._$rangeEndHoverCell) || void 0 === _this$_$rangeEndHover2 ? void 0 : _this$_$rangeEndHover2.removeClass("dx-calendar-cell-range-hover-end");
                        this._$hoveredRangeCells = hoveredRange.map(value => this._getCellByDate(value));
                        this._$rangeStartHoverCell = this._getCellByDate(hoveredRange[0]);
                        this._$rangeEndHoverCell = this._getCellByDate(hoveredRange[hoveredRange.length - 1]);
                        this._$hoveredRangeCells.forEach($cell => {
                            $cell.addClass("dx-calendar-cell-range-hover")
                        });
                        null === (_this$_$rangeStartHov3 = this._$rangeStartHoverCell) || void 0 === _this$_$rangeStartHov3 ? void 0 : _this$_$rangeStartHov3.addClass("dx-calendar-cell-range-hover-start");
                        null === (_this$_$rangeEndHover3 = this._$rangeEndHoverCell) || void 0 === _this$_$rangeEndHover3 ? void 0 : _this$_$rangeEndHover3.addClass("dx-calendar-cell-range-hover-end")
                    },
                    _isMonthView: function() {
                        return "month" === this.option("zoomLevel")
                    },
                    _isRangeMode: function() {
                        return "range" === this.option("selectionMode")
                    },
                    getCellAriaLabel: function(date) {
                        return this._getCellText(date)
                    },
                    _getFirstAvailableDate: function() {
                        let date = this.option("date");
                        const min = this.option("min");
                        date = _date.default.getViewFirstCellDate(this._getViewName(), date);
                        return new Date(min && date < min ? min : date)
                    },
                    _getCellByDate: abstract,
                    isBoundary: abstract,
                    _optionChanged: function(args) {
                        const {
                            name: name,
                            value: value
                        } = args;
                        switch (name) {
                            case "value":
                                this._renderValue();
                                break;
                            case "range":
                                this._renderRange();
                                break;
                            case "hoveredRange":
                                this._renderHoveredRange();
                                break;
                            case "contouredDate":
                                this._renderContouredDate(value);
                                break;
                            case "onCellClick":
                                this._createCellClickAction();
                                break;
                            case "onCellHover":
                                this._createCellHoverAction();
                                break;
                            case "min":
                            case "max":
                            case "disabledDates":
                            case "cellTemplate":
                            case "selectionMode":
                                this._invalidate();
                                break;
                            case "_todayDate":
                                this._renderBody();
                                break;
                            default:
                                this.callBase(args)
                        }
                    }
                });
                var _default = BaseView;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        36989:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/calendar/ui.calendar.js ***!
              \************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 73176));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _math = __webpack_require__( /*! ../../core/utils/math */ 60810);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _button = _interopRequireDefault(__webpack_require__( /*! ../button */ 63008));
                var _editor = _interopRequireDefault(__webpack_require__( /*! ../editor/editor */ 96452));
                var _swipeable = _interopRequireDefault(__webpack_require__( /*! ../../events/gesture/swipeable */ 66894));
                var _uiCalendar = _interopRequireDefault(__webpack_require__( /*! ./ui.calendar.navigator */ 69221));
                var _uiCalendar2 = _interopRequireDefault(__webpack_require__( /*! ./ui.calendar.views */ 92633));
                var _translator = __webpack_require__( /*! ../../animation/translator */ 31648);
                var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 91198));
                var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date_serialization */ 69434));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _fx = _interopRequireDefault(__webpack_require__( /*! ../../animation/fx */ 87209));
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _date3 = _interopRequireDefault(__webpack_require__( /*! ../../localization/date */ 91500));
                var _function_template = __webpack_require__( /*! ../../core/templates/function_template */ 68494);
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _uiCalendarSingleSelection = _interopRequireDefault(__webpack_require__( /*! ./ui.calendar.single.selection.strategy */ 19769));
                var _uiCalendarMultipleSelection = _interopRequireDefault(__webpack_require__( /*! ./ui.calendar.multiple.selection.strategy */ 76848));
                var _uiCalendarRangeSelection = _interopRequireDefault(__webpack_require__( /*! ./ui.calendar.range.selection.strategy */ 76276));
                var _hover = __webpack_require__( /*! ../../events/hover */ 24028);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _themes = __webpack_require__( /*! ../themes */ 75811);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const CALENDAR_DXHOVEREND_EVENT_NAME = (0, _index.addNamespace)(_hover.end, "dxCalendar");
                const LEVEL_COMPARE_MAP = {
                    month: 3,
                    year: 2,
                    decade: 1,
                    century: 0
                };
                const ZOOM_LEVEL_MONTH = "month",
                    ZOOM_LEVEL_YEAR = "year",
                    ZOOM_LEVEL_DECADE = "decade",
                    ZOOM_LEVEL_CENTURY = "century";
                const SELECTION_STRATEGIES = {
                    SingleSelection: _uiCalendarSingleSelection.default,
                    MultipleSelection: _uiCalendarMultipleSelection.default,
                    RangeSelection: _uiCalendarRangeSelection.default
                };
                const Calendar = _editor.default.inherit({
                    _activeStateUnit: ".dx-calendar-cell",
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            hoverStateEnabled: true,
                            activeStateEnabled: true,
                            currentDate: new Date,
                            value: null,
                            dateSerializationFormat: void 0,
                            min: new Date(1e3, 0),
                            max: new Date(3e3, 0),
                            firstDayOfWeek: void 0,
                            viewsCount: 1,
                            zoomLevel: ZOOM_LEVEL_MONTH,
                            maxZoomLevel: ZOOM_LEVEL_MONTH,
                            minZoomLevel: ZOOM_LEVEL_CENTURY,
                            selectionMode: "single",
                            selectWeekOnClick: true,
                            showTodayButton: false,
                            showWeekNumbers: false,
                            weekNumberRule: "auto",
                            cellTemplate: "cell",
                            disabledDates: null,
                            onCellClick: null,
                            onContouredChanged: null,
                            skipFocusCheck: false,
                            _todayDate: () => new Date
                        })
                    },
                    _defaultOptionsRules: function() {
                        return this.callBase().concat([{
                            device: function() {
                                return "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator()
                            },
                            options: {
                                focusStateEnabled: true
                            }
                        }])
                    },
                    _supportedKeys: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            rightArrow: function(e) {
                                e.preventDefault();
                                if ((0, _index.isCommandKeyPressed)(e)) {
                                    this._waitRenderView(1)
                                } else {
                                    this._moveCurrentDateByOffset(1 * this._getRtlCorrection())
                                }
                            },
                            leftArrow: function(e) {
                                e.preventDefault();
                                if ((0, _index.isCommandKeyPressed)(e)) {
                                    this._waitRenderView(-1)
                                } else {
                                    this._moveCurrentDateByOffset(-1 * this._getRtlCorrection())
                                }
                            },
                            upArrow: function(e) {
                                e.preventDefault();
                                if ((0, _index.isCommandKeyPressed)(e)) {
                                    this._navigateUp()
                                } else {
                                    if (_fx.default.isAnimating(this._view.$element())) {
                                        return
                                    }
                                    this._moveCurrentDateByOffset(-1 * this._view.option("colCount"))
                                }
                            },
                            downArrow: function(e) {
                                e.preventDefault();
                                if ((0, _index.isCommandKeyPressed)(e)) {
                                    this._navigateDown()
                                } else {
                                    if (_fx.default.isAnimating(this._view.$element())) {
                                        return
                                    }
                                    this._moveCurrentDateByOffset(1 * this._view.option("colCount"))
                                }
                            },
                            home: function(e) {
                                e.preventDefault();
                                const zoomLevel = this.option("zoomLevel");
                                const currentDate = this.option("currentDate");
                                const min = this._dateOption("min");
                                if (this._view.isDateDisabled(currentDate)) {
                                    return
                                }
                                const date = _date2.default.sameView(zoomLevel, currentDate, min) ? min : _date2.default.getViewFirstCellDate(zoomLevel, currentDate);
                                this._moveToClosestAvailableDate(date)
                            },
                            end: function(e) {
                                e.preventDefault();
                                const zoomLevel = this.option("zoomLevel");
                                const currentDate = this.option("currentDate");
                                const max = this._dateOption("max");
                                if (this._view.isDateDisabled(currentDate)) {
                                    return
                                }
                                const date = _date2.default.sameView(zoomLevel, currentDate, max) ? max : _date2.default.getViewLastCellDate(zoomLevel, currentDate);
                                this._moveToClosestAvailableDate(date)
                            },
                            pageUp: function(e) {
                                e.preventDefault();
                                this._waitRenderView(-1 * this._getRtlCorrection())
                            },
                            pageDown: function(e) {
                                e.preventDefault();
                                this._waitRenderView(1 * this._getRtlCorrection())
                            },
                            tab: _common.noop,
                            enter: this._enterKeyHandler
                        })
                    },
                    _enterKeyHandler: function(e) {
                        if (!this._isMaxZoomLevel()) {
                            this._navigateDown()
                        } else if (!this._view.isDateDisabled(this.option("currentDate"))) {
                            const value = this._updateTimeComponent(this.option("currentDate"));
                            this._selectionStrategy.selectValue(value, e)
                        }
                    },
                    _getSerializationFormat: function(optionName) {
                        const value = this.option(optionName || "value");
                        if (this.option("dateSerializationFormat")) {
                            return this.option("dateSerializationFormat")
                        }
                        if ((0, _type.isNumeric)(value)) {
                            return "number"
                        }
                        if (!(0, _type.isString)(value)) {
                            return
                        }
                        return _date_serialization.default.getDateSerializationFormat(value)
                    },
                    _convertToDate: function(value) {
                        return _date_serialization.default.deserializeDate(value)
                    },
                    _dateValue: function(value, event) {
                        if (event) {
                            if ("keydown" === event.type) {
                                const cellElement = this._view._getContouredCell().get(0);
                                event.target = cellElement
                            }
                            this._saveValueChangeEvent(event)
                        }
                        this._dateOption("value", value)
                    },
                    _dateOption: function(optionName, optionValue) {
                        const isArray = "value" === optionName && !this._isSingleMode();
                        const value = this.option("value");
                        if (1 === arguments.length) {
                            return isArray ? (null !== value && void 0 !== value ? value : []).map(value => this._convertToDate(value)) : this._convertToDate(this.option(optionName))
                        }
                        const serializationFormat = this._getSerializationFormat(optionName);
                        const serializedValue = isArray ? (null === optionValue || void 0 === optionValue ? void 0 : optionValue.map(value => _date_serialization.default.serializeDate(value, serializationFormat))) || [] : _date_serialization.default.serializeDate(optionValue, serializationFormat);
                        this.option(optionName, serializedValue)
                    },
                    _isSingleMode: function() {
                        return "single" === this.option("selectionMode")
                    },
                    _shiftDate: function(zoomLevel, date, offset, reverse) {
                        switch (zoomLevel) {
                            case ZOOM_LEVEL_MONTH:
                                date.setDate(date.getDate() + offset * reverse);
                                break;
                            case ZOOM_LEVEL_YEAR:
                                date.setMonth(date.getMonth() + offset * reverse);
                                break;
                            case ZOOM_LEVEL_DECADE:
                                date.setFullYear(date.getFullYear() + offset * reverse);
                                break;
                            case ZOOM_LEVEL_CENTURY:
                                date.setFullYear(date.getFullYear() + 10 * offset * reverse)
                        }
                    },
                    _moveCurrentDateByOffset: function(offset) {
                        const baseDate = this.option("currentDate");
                        let currentDate = new Date(baseDate);
                        const zoomLevel = this.option("zoomLevel");
                        this._shiftDate(zoomLevel, currentDate, offset, 1);
                        const maxDate = this._getMaxDate();
                        const minDate = this._getMinDate();
                        let isDateForwardInNeighborView = this._areDatesInNeighborView(zoomLevel, currentDate, baseDate);
                        let isDateForwardInRange = (0, _math.inRange)(currentDate, minDate, maxDate) && isDateForwardInNeighborView;
                        const dateForward = new Date(currentDate);
                        while (isDateForwardInRange) {
                            if (!this._view.isDateDisabled(dateForward)) {
                                currentDate = dateForward;
                                break
                            }
                            this._shiftDate(zoomLevel, dateForward, offset, 1);
                            isDateForwardInNeighborView = this._areDatesInNeighborView(zoomLevel, dateForward, baseDate);
                            isDateForwardInRange = (0, _math.inRange)(dateForward, minDate, maxDate) && isDateForwardInNeighborView
                        }
                        if (this._view.isDateDisabled(baseDate) || this._view.isDateDisabled(currentDate)) {
                            const direction = offset > 0 ? 1 : -1;
                            const isViewDisabled = 1 === direction ? this._isNextViewDisabled() : this._isPrevViewDisabled();
                            if (!isViewDisabled) {
                                this._waitRenderView(direction)
                            } else {
                                this._moveToClosestAvailableDate(currentDate)
                            }
                        } else {
                            this._skipNavigate = true;
                            this.option("currentDate", currentDate)
                        }
                    },
                    _isNextViewDisabled() {
                        return this._navigator._nextButton.option("disabled")
                    },
                    _isPrevViewDisabled() {
                        return this._navigator._prevButton.option("disabled")
                    },
                    _areDatesInSameView(zoomLevel, date1, date2) {
                        switch (zoomLevel) {
                            case ZOOM_LEVEL_MONTH:
                                return date1.getMonth() === date2.getMonth();
                            case ZOOM_LEVEL_YEAR:
                                return date1.getYear() === date2.getYear();
                            case ZOOM_LEVEL_DECADE:
                                return parseInt(date1.getYear() / 10) === parseInt(date2.getYear() / 10);
                            case ZOOM_LEVEL_CENTURY:
                                return parseInt(date1.getYear() / 100) === parseInt(date2.getYear() / 100)
                        }
                    },
                    _areDatesInNeighborView(zoomLevel, date1, date2) {
                        switch (zoomLevel) {
                            case ZOOM_LEVEL_MONTH:
                                return ((a, b) => {
                                    const abs = Math.abs(a - b);
                                    return Math.min(abs, 12 - abs)
                                })(date1.getMonth(), date2.getMonth()) <= 1;
                            case ZOOM_LEVEL_YEAR:
                                return Math.abs(date1.getYear() - date2.getYear()) <= 1;
                            case ZOOM_LEVEL_DECADE:
                                return Math.abs(date1.getYear() - date2.getYear()) <= 10;
                            case ZOOM_LEVEL_CENTURY:
                                return Math.abs(date1.getYear() - date2.getYear()) <= 100
                        }
                    },
                    _moveToClosestAvailableDate: function() {
                        let baseDate = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.option("currentDate");
                        let currentDate = new Date(baseDate);
                        const zoomLevel = this.option("zoomLevel");
                        const isCurrentDateAvailable = !this._isDateNotAvailable(currentDate);
                        let isDateForwardAvailable = isCurrentDateAvailable;
                        let isDateBackwardAvailable = isCurrentDateAvailable;
                        let isDateForwardInStartView;
                        let isDateBackwardInStartView;
                        const dateForward = new Date(currentDate);
                        const dateBackward = new Date(currentDate);
                        do {
                            if (isDateForwardAvailable) {
                                currentDate = dateForward;
                                break
                            }
                            if (isDateBackwardAvailable) {
                                currentDate = dateBackward;
                                break
                            }
                            this._shiftDate(zoomLevel, dateForward, 1, 1);
                            this._shiftDate(zoomLevel, dateBackward, 1, -1);
                            isDateForwardInStartView = this._areDatesInSameView(zoomLevel, dateForward, baseDate);
                            isDateBackwardInStartView = this._areDatesInSameView(zoomLevel, dateBackward, baseDate);
                            isDateForwardAvailable = isDateForwardInStartView && !this._isDateNotAvailable(dateForward);
                            isDateBackwardAvailable = isDateBackwardInStartView && !this._isDateNotAvailable(dateBackward)
                        } while (isDateForwardInStartView || isDateBackwardInStartView);
                        this.option("currentDate", currentDate)
                    },
                    _isDateNotAvailable: function(date) {
                        const maxDate = this._getMaxDate();
                        const minDate = this._getMinDate();
                        return !(0, _math.inRange)(date, minDate, maxDate) || this._view.isDateDisabled(date)
                    },
                    _init: function() {
                        this.callBase();
                        this._initSelectionStrategy();
                        this._correctZoomLevel();
                        this._initCurrentDate();
                        this._initActions()
                    },
                    _initSelectionStrategy: function() {
                        const strategyName = this._getSelectionStrategyName();
                        const strategy = SELECTION_STRATEGIES[strategyName];
                        if (!this._selectionStrategy || this._selectionStrategy.NAME !== strategyName) {
                            this._selectionStrategy = new strategy(this)
                        }
                    },
                    _refreshSelectionStrategy: function() {
                        this._initSelectionStrategy();
                        this._selectionStrategy.restoreValue();
                        this._refresh()
                    },
                    _getSelectionStrategyName: function() {
                        const selectionMode = this.option("selectionMode");
                        switch (selectionMode) {
                            case "multiple":
                                return "MultipleSelection";
                            case "range":
                                return "RangeSelection";
                            default:
                                return "SingleSelection"
                        }
                    },
                    _correctZoomLevel: function() {
                        const minZoomLevel = this.option("minZoomLevel");
                        const maxZoomLevel = this.option("maxZoomLevel");
                        const zoomLevel = this.option("zoomLevel");
                        if (LEVEL_COMPARE_MAP[maxZoomLevel] < LEVEL_COMPARE_MAP[minZoomLevel]) {
                            return
                        }
                        if (LEVEL_COMPARE_MAP[zoomLevel] > LEVEL_COMPARE_MAP[maxZoomLevel]) {
                            this.option("zoomLevel", maxZoomLevel)
                        } else if (LEVEL_COMPARE_MAP[zoomLevel] < LEVEL_COMPARE_MAP[minZoomLevel]) {
                            this.option("zoomLevel", minZoomLevel)
                        }
                    },
                    _initCurrentDate: function() {
                        var _this$_getNormalizedD;
                        const currentDate = null !== (_this$_getNormalizedD = this._getNormalizedDate(this._selectionStrategy.getDefaultCurrentDate())) && void 0 !== _this$_getNormalizedD ? _this$_getNormalizedD : this._getNormalizedDate(this.option("currentDate"));
                        this.option("currentDate", currentDate)
                    },
                    _getNormalizedDate: function(date) {
                        date = _date2.default.normalizeDate(date, this._getMinDate(), this._getMaxDate());
                        return (0, _type.isDefined)(date) ? this._getDate(date) : date
                    },
                    _initActions: function() {
                        this._cellClickAction = this._createActionByOption("onCellClick");
                        this._onContouredChanged = this._createActionByOption("onContouredChanged")
                    },
                    _initTemplates: function() {
                        this._templateManager.addDefaultTemplates({
                            cell: new _function_template.FunctionTemplate((function(options) {
                                const data = options.model;
                                (0, _renderer.default)(options.container).append((0, _renderer.default)("<span>").text(data && data.text || String(data)))
                            }))
                        });
                        this.callBase()
                    },
                    _updateCurrentDate: function(date) {
                        if (_fx.default.isAnimating(this._$viewsWrapper)) {
                            _fx.default.stop(this._$viewsWrapper, true)
                        }
                        const min = this._getMinDate();
                        const max = this._getMaxDate();
                        if (min > max) {
                            this.option("currentDate", new Date);
                            return
                        }
                        const normalizedDate = this._getNormalizedDate(date);
                        if (date.getTime() !== normalizedDate.getTime()) {
                            this.option("currentDate", new Date(normalizedDate));
                            return
                        }
                        let offset = this._getViewsOffset(this._view.option("date"), normalizedDate);
                        if (0 !== offset && !this._isMaxZoomLevel() && this._isOtherViewCellClicked) {
                            offset = 0
                        }
                        if (this._view && 0 !== offset && !this._suppressNavigation) {
                            if (this._additionalView) {
                                if (offset > 2 || offset < -1) {
                                    this._refreshViews();
                                    this._setViewContoured(normalizedDate);
                                    this._updateAriaId(normalizedDate);
                                    this._renderNavigator()
                                } else if (1 === offset && this._skipNavigate) {
                                    this._setViewContoured(normalizedDate);
                                    this._updateAriaId(normalizedDate)
                                } else {
                                    this._navigate(offset, normalizedDate)
                                }
                            } else {
                                this._navigate(offset, normalizedDate)
                            }
                        } else {
                            this._renderNavigator();
                            this._setViewContoured(normalizedDate);
                            this._updateAriaId(normalizedDate)
                        }
                        this._skipNavigate = false
                    },
                    _isAdditionalViewDate(date) {
                        if (!this._additionalView) {
                            return false
                        }
                        return date >= this._additionalView._getFirstAvailableDate()
                    },
                    _getActiveView: function(date) {
                        return this._isAdditionalViewDate(date) ? this._additionalView : this._view
                    },
                    _setViewContoured: function(date) {
                        if (this.option("skipFocusCheck") || (0, _renderer.default)(this._$viewsWrapper).is(":focus")) {
                            var _this$_additionalView;
                            this._view.option("contouredDate", null);
                            null === (_this$_additionalView = this._additionalView) || void 0 === _this$_additionalView ? void 0 : _this$_additionalView.option("contouredDate", null);
                            const view = this._isAdditionalViewDate(date) ? this._additionalView : this._view;
                            view.option("contouredDate", date)
                        }
                    },
                    _getMinDate: function() {
                        const _rangeMin = this.option("_rangeMin");
                        if (_rangeMin) {
                            return _rangeMin
                        }
                        if (this.min) {
                            return this.min
                        }
                        this.min = this._dateOption("min") || new Date(1e3, 0);
                        return this.min
                    },
                    _getMaxDate: function() {
                        const _rangeMax = this.option("_rangeMax");
                        if (_rangeMax) {
                            return _rangeMax
                        }
                        if (this.max) {
                            return this.max
                        }
                        this.max = this._dateOption("max") || new Date(3e3, 0);
                        return this.max
                    },
                    _getViewsOffset: function(startDate, endDate) {
                        const zoomLevel = this.option("zoomLevel");
                        if (zoomLevel === ZOOM_LEVEL_MONTH) {
                            return this._getMonthsOffset(startDate, endDate)
                        }
                        let zoomCorrection;
                        switch (zoomLevel) {
                            case ZOOM_LEVEL_CENTURY:
                                zoomCorrection = 100;
                                break;
                            case ZOOM_LEVEL_DECADE:
                                zoomCorrection = 10;
                                break;
                            default:
                                zoomCorrection = 1
                        }
                        return parseInt(endDate.getFullYear() / zoomCorrection) - parseInt(startDate.getFullYear() / zoomCorrection)
                    },
                    _getMonthsOffset: function(startDate, endDate) {
                        const yearOffset = endDate.getFullYear() - startDate.getFullYear();
                        const monthOffset = endDate.getMonth() - startDate.getMonth();
                        return 12 * yearOffset + monthOffset
                    },
                    _waitRenderView: function(offset) {
                        if (this._alreadyViewRender) {
                            return
                        }
                        this._alreadyViewRender = true;
                        const date = this._getDateByOffset(offset * this._getRtlCorrection());
                        this._moveToClosestAvailableDate(date);
                        this._waitRenderViewTimeout = setTimeout(() => {
                            this._alreadyViewRender = false
                        })
                    },
                    _getRtlCorrection: function() {
                        return this.option("rtlEnabled") ? -1 : 1
                    },
                    _getDateByOffset: function(offset, date) {
                        var _date;
                        date = this._getDate(null !== (_date = date) && void 0 !== _date ? _date : this.option("currentDate"));
                        const currentDay = date.getDate();
                        const difference = _date2.default.getDifferenceInMonth(this.option("zoomLevel")) * offset;
                        date.setDate(1);
                        date.setMonth(date.getMonth() + difference);
                        const lastDay = _date2.default.getLastMonthDate(date).getDate();
                        date.setDate(currentDay > lastDay ? lastDay : currentDay);
                        return date
                    },
                    _focusTarget: function() {
                        return this._$viewsWrapper
                    },
                    _focusEventTarget() {
                        return this.$element()
                    },
                    _initMarkup: function() {
                        this._renderSubmitElement();
                        const $element = this.$element();
                        $element.addClass("dx-calendar");
                        $element.toggleClass("dx-calendar-range", "range" === this.option("selectionMode"));
                        this._renderBody();
                        $element.append(this.$body);
                        this._renderViews();
                        this._renderNavigator();
                        this.callBase();
                        this._renderEvents();
                        $element.prepend(this._navigator.$element());
                        this._renderSwipeable();
                        this._renderFooter();
                        this._selectionStrategy.updateAriaSelected();
                        this._updateAriaId();
                        this._updateNavigatorLabels();
                        this.setAria("role", "application");
                        this._moveToClosestAvailableDate()
                    },
                    _render: function() {
                        this.callBase();
                        this._setViewContoured(this.option("currentDate"))
                    },
                    _renderBody: function() {
                        if (!this._$viewsWrapper) {
                            this.$body = (0, _renderer.default)("<div>").addClass("dx-calendar-body");
                            this._$viewsWrapper = (0, _renderer.default)("<div>").addClass("dx-calendar-views-wrapper");
                            this.$body.append(this._$viewsWrapper)
                        }
                    },
                    _getKeyboardListeners() {
                        return this.callBase().concat([this._view])
                    },
                    _renderViews: function() {
                        this.$element().addClass("dx-calendar-view-" + this.option("zoomLevel"));
                        const {
                            currentDate: currentDate,
                            viewsCount: viewsCount
                        } = this.option();
                        this.$element().toggleClass("dx-calendar-multiview", viewsCount > 1);
                        this._view = this._renderSpecificView(currentDate);
                        if ((0, _window.hasWindow)()) {
                            const beforeDate = this._getDateByOffset(-1, currentDate);
                            this._beforeView = this._isViewAvailable(beforeDate) ? this._renderSpecificView(beforeDate) : null;
                            const afterDate = this._getDateByOffset(viewsCount, currentDate);
                            afterDate.setDate(1);
                            this._afterView = this._isViewAvailable(afterDate) ? this._renderSpecificView(afterDate) : null
                        }
                        if (viewsCount > 1) {
                            this._additionalView = this._renderSpecificView(this._getDateByOffset(1, currentDate))
                        }
                        this._translateViews()
                    },
                    _renderSpecificView: function(date) {
                        const {
                            zoomLevel: zoomLevel
                        } = this.option();
                        const specificView = _uiCalendar2.default[zoomLevel];
                        const $view = (0, _renderer.default)("<div>").appendTo(this._$viewsWrapper);
                        const config = this._viewConfig(date);
                        const view = this._createComponent($view, specificView, config);
                        return view
                    },
                    _viewConfig: function(date) {
                        var _this$option;
                        let disabledDates = this.option("disabledDates");
                        disabledDates = (0, _type.isFunction)(disabledDates) ? this._injectComponent(disabledDates.bind(this)) : disabledDates;
                        return _extends({}, this._selectionStrategy.getViewOptions(), {
                            date: date,
                            min: this._getMinDate(),
                            max: this._getMaxDate(),
                            firstDayOfWeek: null !== (_this$option = this.option("firstDayOfWeek")) && void 0 !== _this$option ? _this$option : _date3.default.firstDayOfWeekIndex(),
                            showWeekNumbers: this.option("showWeekNumbers"),
                            selectWeekOnClick: this.option("selectWeekOnClick"),
                            weekNumberRule: this.option("weekNumberRule"),
                            zoomLevel: this.option("zoomLevel"),
                            tabIndex: void 0,
                            focusStateEnabled: this.option("focusStateEnabled"),
                            hoverStateEnabled: this.option("hoverStateEnabled"),
                            disabledDates: disabledDates,
                            onCellClick: this._cellClickHandler.bind(this),
                            cellTemplate: this._getTemplateByOption("cellTemplate"),
                            allowValueSelection: this._isMaxZoomLevel(),
                            _todayDate: this.option("_todayDate")
                        })
                    },
                    _renderEvents() {
                        _events_engine.default.off(this._$viewsWrapper, CALENDAR_DXHOVEREND_EVENT_NAME);
                        if ("range" === this.option("selectionMode")) {
                            _events_engine.default.on(this._$viewsWrapper, CALENDAR_DXHOVEREND_EVENT_NAME, null, e => {
                                this._updateViewsOption("hoveredRange", [])
                            })
                        }
                    },
                    _injectComponent: function(func) {
                        const that = this;
                        return function(params) {
                            (0, _extend.extend)(params, {
                                component: that
                            });
                            return func(params)
                        }
                    },
                    _isViewAvailable: function(date) {
                        const zoomLevel = this.option("zoomLevel");
                        const min = _date2.default.getViewMinBoundaryDate(zoomLevel, this._getMinDate());
                        const max = _date2.default.getViewMaxBoundaryDate(zoomLevel, this._getMaxDate());
                        return _date2.default.dateInRange(date, min, max)
                    },
                    _translateViews: function() {
                        const {
                            viewsCount: viewsCount
                        } = this.option();
                        (0, _translator.move)(this._view.$element(), {
                            left: 0,
                            top: 0
                        });
                        this._moveViewElement(this._beforeView, -1);
                        this._moveViewElement(this._afterView, viewsCount);
                        this._moveViewElement(this._additionalView, 1)
                    },
                    _moveViewElement(view, coefficient) {
                        view && (0, _translator.move)(view.$element(), {
                            left: this._getViewPosition(coefficient),
                            top: 0
                        })
                    },
                    _getViewPosition: function(coefficient) {
                        const rtlCorrection = this.option("rtlEnabled") ? -1 : 1;
                        return 100 * coefficient * rtlCorrection + "%"
                    },
                    _cellClickHandler: function(e) {
                        const zoomLevel = this.option("zoomLevel");
                        const nextView = _date2.default.getViewDown(zoomLevel);
                        const isMaxZoomLevel = this._isMaxZoomLevel();
                        if (nextView && !isMaxZoomLevel) {
                            this._navigateDown(e.event.currentTarget)
                        } else {
                            const newValue = this._updateTimeComponent(e.value);
                            this._selectionStrategy.selectValue(newValue, e.event);
                            this._cellClickAction(e)
                        }
                    },
                    _updateTimeComponent: function(date) {
                        const result = new Date(date);
                        const currentValue = this._dateOption("value");
                        if (currentValue && this._isSingleMode()) {
                            result.setHours(currentValue.getHours());
                            result.setMinutes(currentValue.getMinutes());
                            result.setSeconds(currentValue.getSeconds());
                            result.setMilliseconds(currentValue.getMilliseconds())
                        }
                        return result
                    },
                    _isMaxZoomLevel: function() {
                        return this.option("zoomLevel") === this.option("maxZoomLevel")
                    },
                    _navigateDown: function(cell) {
                        const zoomLevel = this.option("zoomLevel");
                        if (this._isMaxZoomLevel()) {
                            return
                        }
                        const nextView = _date2.default.getViewDown(zoomLevel);
                        if (!nextView) {
                            return
                        }
                        let newCurrentDate = this._view.option("contouredDate") || this._view.option("date");
                        if (cell) {
                            newCurrentDate = (0, _renderer.default)(cell).data("dxDateValueKey")
                        }
                        this._isOtherViewCellClicked = true;
                        this.option("currentDate", newCurrentDate);
                        this.option("zoomLevel", nextView);
                        this._isOtherViewCellClicked = false;
                        this._renderNavigator();
                        this._animateShowView();
                        this._moveToClosestAvailableDate();
                        this._setViewContoured(this._getNormalizedDate(this.option("currentDate")))
                    },
                    _renderNavigator: function() {
                        if (!this._navigator) {
                            this._navigator = new _uiCalendar.default((0, _renderer.default)("<div>"), this._navigatorConfig())
                        }
                        this._navigator.option("text", this._getViewsCaption(this._view, this._additionalView));
                        this._updateButtonsVisibility()
                    },
                    _navigatorConfig: function() {
                        const {
                            focusStateEnabled: focusStateEnabled,
                            rtlEnabled: rtlEnabled
                        } = this.option();
                        return {
                            text: this._getViewsCaption(this._view, this._additionalView),
                            onClick: this._navigatorClickHandler.bind(this),
                            onCaptionClick: this._navigateUp.bind(this),
                            focusStateEnabled: focusStateEnabled,
                            rtlEnabled: rtlEnabled,
                            tabIndex: void 0
                        }
                    },
                    _navigatorClickHandler: function(e) {
                        const {
                            currentDate: currentDate,
                            viewsCount: viewsCount
                        } = this.option();
                        let offset = e.direction;
                        if (viewsCount > 1) {
                            const additionalViewActive = this._isAdditionalViewDate(currentDate);
                            const shouldDoubleOffset = additionalViewActive && offset < 0 || !additionalViewActive && offset > 0;
                            if (shouldDoubleOffset) {
                                offset *= 2
                            }
                        }
                        const newCurrentDate = this._getDateByOffset(offset, currentDate);
                        this._moveToClosestAvailableDate(newCurrentDate)
                    },
                    _navigateUp: function() {
                        const zoomLevel = this.option("zoomLevel");
                        const nextView = _date2.default.getViewUp(zoomLevel);
                        if (!nextView || this._isMinZoomLevel(zoomLevel)) {
                            return
                        }
                        this.option("zoomLevel", nextView);
                        this._renderNavigator();
                        this._animateShowView();
                        this._moveToClosestAvailableDate();
                        this._setViewContoured(this._getNormalizedDate(this.option("currentDate")))
                    },
                    _isMinZoomLevel: function(zoomLevel) {
                        const min = this._getMinDate();
                        const max = this._getMaxDate();
                        return _date2.default.sameView(zoomLevel, min, max) || this.option("minZoomLevel") === zoomLevel
                    },
                    _updateButtonsVisibility: function() {
                        this._navigator.toggleButton("next", !(0, _type.isDefined)(this._afterView));
                        this._navigator.toggleButton("prev", !(0, _type.isDefined)(this._beforeView))
                    },
                    _renderSwipeable: function() {
                        if (!this._swipeable) {
                            this._swipeable = this._createComponent(this.$element(), _swipeable.default, {
                                onStart: this._swipeStartHandler.bind(this),
                                onUpdated: this._swipeUpdateHandler.bind(this),
                                onEnd: this._swipeEndHandler.bind(this),
                                itemSizeFunc: this._viewWidth.bind(this)
                            })
                        }
                    },
                    _swipeStartHandler: function(e) {
                        _fx.default.stop(this._$viewsWrapper, true);
                        const {
                            viewsCount: viewsCount
                        } = this.option();
                        this._toggleGestureCoverCursor("grabbing");
                        e.event.maxLeftOffset = this._getRequiredView("next") ? 1 / viewsCount : 0;
                        e.event.maxRightOffset = this._getRequiredView("prev") ? 1 / viewsCount : 0
                    },
                    _toggleGestureCoverCursor: function(cursor) {
                        (0, _renderer.default)(".".concat("dx-gesture-cover")).css("cursor", cursor)
                    },
                    _getRequiredView: function(name) {
                        let view;
                        const isRtl = this.option("rtlEnabled");
                        if ("next" === name) {
                            view = isRtl ? this._beforeView : this._afterView
                        } else if ("prev" === name) {
                            view = isRtl ? this._afterView : this._beforeView
                        }
                        return view
                    },
                    _swipeUpdateHandler: function(e) {
                        const offset = e.event.offset;
                        (0, _translator.move)(this._$viewsWrapper, {
                            left: offset * this._viewWidth(),
                            top: 0
                        });
                        this._updateNavigatorCaption(offset)
                    },
                    _swipeEndHandler: function(e) {
                        this._toggleGestureCoverCursor("auto");
                        const {
                            currentDate: currentDate,
                            rtlEnabled: rtlEnabled
                        } = this.option();
                        const targetOffset = e.event.targetOffset;
                        const moveOffset = !targetOffset ? 0 : targetOffset / Math.abs(targetOffset);
                        const isAdditionalViewActive = this._isAdditionalViewDate(currentDate);
                        const shouldDoubleOffset = isAdditionalViewActive && (rtlEnabled ? -1 === moveOffset : 1 === moveOffset);
                        if (0 === moveOffset) {
                            this._animateWrapper(0, 250);
                            return
                        }
                        const offset = -moveOffset * this._getRtlCorrection() * (shouldDoubleOffset ? 2 : 1);
                        let date = this._getDateByOffset(offset);
                        if (this._isDateInInvalidRange(date)) {
                            if (moveOffset >= 0) {
                                date = new Date(this._getMinDate())
                            } else {
                                date = new Date(this._getMaxDate())
                            }
                        }
                        this.option("currentDate", date)
                    },
                    _viewWidth: function() {
                        if (!this._viewWidthValue) {
                            this._viewWidthValue = (0, _size.getWidth)(this.$element()) / this.option("viewsCount")
                        }
                        return this._viewWidthValue
                    },
                    _updateNavigatorCaption: function(offset) {
                        offset *= this._getRtlCorrection();
                        const isMultiView = this.option("viewsCount") > 1;
                        let view;
                        let additionalView;
                        if (offset > .5 && this._beforeView) {
                            view = this._beforeView;
                            additionalView = isMultiView && this._view
                        } else if (offset < -.5 && this._afterView) {
                            view = isMultiView ? this._additionalView : this._afterView;
                            additionalView = isMultiView ? this._afterView : null
                        } else {
                            view = this._view;
                            additionalView = isMultiView ? this._additionalView : null
                        }
                        this._navigator.option("text", this._getViewsCaption(view, additionalView))
                    },
                    _getViewsCaption: function(view, additionalView) {
                        let caption = view.getNavigatorCaption();
                        const {
                            viewsCount: viewsCount
                        } = this.option();
                        if (viewsCount > 1 && additionalView) {
                            const additionalViewCaption = additionalView.getNavigatorCaption();
                            caption = "".concat(caption, " - ").concat(additionalViewCaption)
                        }
                        return caption
                    },
                    _isDateInInvalidRange: function(date) {
                        if (this._view.isBoundary(date)) {
                            return
                        }
                        const min = this._getMinDate();
                        const max = this._getMaxDate();
                        const normalizedDate = _date2.default.normalizeDate(date, min, max);
                        return normalizedDate === min || normalizedDate === max
                    },
                    _renderFooter: function() {
                        const showTodayButton = this.option("showTodayButton");
                        if (showTodayButton) {
                            const $todayButton = this._createComponent((0, _renderer.default)("<div>"), _button.default, {
                                focusStateEnabled: this.option("focusStateEnabled"),
                                text: _message.default.format("dxCalendar-todayButtonText"),
                                onClick: args => {
                                    this._toTodayView(args)
                                },
                                type: (0, _themes.isFluent)() ? "normal" : "default",
                                stylingMode: (0, _themes.isFluent)() ? "outlined" : "text",
                                integrationOptions: {}
                            }).$element().addClass("dx-calendar-today-button");
                            this._$footer = (0, _renderer.default)("<div>").addClass("dx-calendar-footer").append($todayButton);
                            this.$element().append(this._$footer)
                        }
                        this.$element().toggleClass("dx-calendar-with-footer", showTodayButton)
                    },
                    _renderSubmitElement: function() {
                        this._$submitElement = (0, _renderer.default)("<input>").attr("type", "hidden").appendTo(this.$element());
                        this._setSubmitValue(this.option("value"))
                    },
                    _setSubmitValue: function(value) {
                        const dateValue = this._convertToDate(value);
                        this._getSubmitElement().val(_date_serialization.default.serializeDate(dateValue, "yyyy-MM-dd"))
                    },
                    _getSubmitElement: function() {
                        return this._$submitElement
                    },
                    _animateShowView: function() {
                        _fx.default.stop(this._view.$element(), true);
                        this._popAnimationView(this._view, .6, 1, 250);
                        if (this.option("viewsCount") > 1) {
                            _fx.default.stop(this._additionalView.$element(), true);
                            this._popAnimationView(this._additionalView, .6, 1, 250)
                        }
                    },
                    _popAnimationView: function(view, from, to, duration) {
                        return _fx.default.animate(view.$element(), {
                            type: "pop",
                            from: {
                                scale: from,
                                opacity: from
                            },
                            to: {
                                scale: to,
                                opacity: to
                            },
                            duration: duration
                        })
                    },
                    _navigate: function(offset, value) {
                        if (0 !== offset && 1 !== Math.abs(offset) && this._isViewAvailable(value)) {
                            const newView = this._renderSpecificView(value);
                            if (offset > 0) {
                                this._afterView && this._afterView.$element().remove();
                                this._afterView = newView
                            } else {
                                this._beforeView && this._beforeView.$element().remove();
                                this._beforeView = newView
                            }
                            this._translateViews()
                        }
                        const rtlCorrection = this._getRtlCorrection();
                        const offsetSign = offset > 0 ? 1 : offset < 0 ? -1 : 0;
                        const endPosition = -rtlCorrection * offsetSign * this._viewWidth();
                        const viewsWrapperPosition = this._$viewsWrapper.position().left;
                        if (viewsWrapperPosition !== endPosition) {
                            if (this._preventViewChangeAnimation) {
                                this._wrapperAnimationEndHandler(offset, value)
                            } else {
                                this._animateWrapper(endPosition, 250).done(this._wrapperAnimationEndHandler.bind(this, offset, value))
                            }
                        }
                    },
                    _animateWrapper: function(to, duration) {
                        return _fx.default.animate(this._$viewsWrapper, {
                            type: "slide",
                            from: {
                                left: this._$viewsWrapper.position().left
                            },
                            to: {
                                left: to
                            },
                            duration: duration
                        })
                    },
                    _getDate: value => new Date(value),
                    _toTodayView: function(args) {
                        const today = new Date;
                        if (this._isMaxZoomLevel()) {
                            this._selectionStrategy.selectValue(today, args.event);
                            return
                        }
                        this._preventViewChangeAnimation = true;
                        this.option("zoomLevel", this.option("maxZoomLevel"));
                        this._selectionStrategy.selectValue(today, args.event);
                        this._animateShowView();
                        this._preventViewChangeAnimation = false
                    },
                    _wrapperAnimationEndHandler: function(offset, newDate) {
                        this._rearrangeViews(offset);
                        this._translateViews();
                        this._resetLocation();
                        this._renderNavigator();
                        this._setViewContoured(newDate);
                        this._updateAriaId(newDate);
                        this._selectionStrategy.updateAriaSelected()
                    },
                    _rearrangeViews: function(offset) {
                        var _this$viewToRemoveKey;
                        if (0 === offset) {
                            return
                        }
                        const {
                            viewsCount: viewsCount
                        } = this.option();
                        let viewOffset;
                        let viewToCreateKey;
                        let viewToRemoveKey;
                        let viewBeforeCreateKey;
                        let viewAfterRemoveKey;
                        if (offset < 0) {
                            viewOffset = 1;
                            viewToCreateKey = "_beforeView";
                            viewToRemoveKey = "_afterView";
                            viewBeforeCreateKey = "_view";
                            viewAfterRemoveKey = 1 === viewsCount ? "_view" : "_additionalView"
                        } else {
                            viewOffset = -1;
                            viewToCreateKey = "_afterView";
                            viewToRemoveKey = "_beforeView";
                            viewBeforeCreateKey = 1 === viewsCount ? "_view" : "_additionalView";
                            viewAfterRemoveKey = "_view"
                        }
                        if (!this[viewToCreateKey]) {
                            return
                        }
                        const destinationDate = this[viewToCreateKey].option("date");
                        null === (_this$viewToRemoveKey = this[viewToRemoveKey]) || void 0 === _this$viewToRemoveKey ? void 0 : _this$viewToRemoveKey.$element().remove();
                        this[viewToRemoveKey] = this._renderSpecificView(this._getDateByOffset(viewOffset * viewsCount, destinationDate));
                        this[viewAfterRemoveKey].$element().remove();
                        if (1 === viewsCount) {
                            this[viewAfterRemoveKey] = this[viewToCreateKey]
                        } else {
                            this[viewAfterRemoveKey] = this[viewBeforeCreateKey];
                            this[viewBeforeCreateKey] = this[viewToCreateKey]
                        }
                        const dateByOffset = this._getDateByOffset(-viewOffset, destinationDate);
                        this[viewToCreateKey] = this._isViewAvailable(dateByOffset) ? this._renderSpecificView(dateByOffset) : null
                    },
                    _resetLocation: function() {
                        (0, _translator.move)(this._$viewsWrapper, {
                            left: 0,
                            top: 0
                        })
                    },
                    _clean: function() {
                        this.callBase();
                        this._clearViewWidthCache();
                        delete this._$viewsWrapper;
                        delete this._navigator;
                        delete this._$footer
                    },
                    _clearViewWidthCache: function() {
                        delete this._viewWidthValue
                    },
                    _disposeViews: function() {
                        this._view.$element().remove();
                        this._beforeView && this._beforeView.$element().remove();
                        this._additionalView && this._additionalView.$element().remove();
                        this._afterView && this._afterView.$element().remove();
                        delete this._view;
                        delete this._additionalView;
                        delete this._beforeView;
                        delete this._afterView;
                        delete this._skipNavigate
                    },
                    _dispose: function() {
                        clearTimeout(this._waitRenderViewTimeout);
                        this.callBase()
                    },
                    _refreshViews: function() {
                        this._resetActiveState();
                        this._disposeViews();
                        this._renderViews()
                    },
                    _visibilityChanged: function() {
                        this._translateViews()
                    },
                    _shouldSkipFocusEvent(event) {
                        const {
                            target: target,
                            relatedTarget: relatedTarget
                        } = event;
                        return (0, _renderer.default)(target).parents(".".concat("dx-calendar")).length && (0, _renderer.default)(relatedTarget).parents(".".concat("dx-calendar")).length
                    },
                    _focusInHandler: function(event) {
                        if ((0, _renderer.default)(event.target).is(this._$viewsWrapper)) {
                            this._setViewContoured(this.option("currentDate"))
                        }
                        if (this._shouldSkipFocusEvent(event)) {
                            return
                        }
                        this.callBase.apply(this, arguments);
                        this._toggleFocusClass(true, this.$element())
                    },
                    _focusOutHandler: function(event) {
                        if ((0, _renderer.default)(event.target).is(this._$viewsWrapper)) {
                            var _this$_additionalView2;
                            this._view.option("contouredDate", null);
                            null === (_this$_additionalView2 = this._additionalView) || void 0 === _this$_additionalView2 ? void 0 : _this$_additionalView2.option("contouredDate", null)
                        }
                        if (this._shouldSkipFocusEvent(event)) {
                            return
                        }
                        this.callBase.apply(this, arguments);
                        this._toggleFocusClass(false, this.$element())
                    },
                    _updateViewsOption: function(optionName, newValue) {
                        var _this$_additionalView3, _this$_beforeView, _this$_afterView;
                        this._view.option(optionName, newValue);
                        null === (_this$_additionalView3 = this._additionalView) || void 0 === _this$_additionalView3 ? void 0 : _this$_additionalView3.option(optionName, newValue);
                        null === (_this$_beforeView = this._beforeView) || void 0 === _this$_beforeView ? void 0 : _this$_beforeView.option(optionName, newValue);
                        null === (_this$_afterView = this._afterView) || void 0 === _this$_afterView ? void 0 : _this$_afterView.option(optionName, newValue)
                    },
                    _setViewsMinOption: function(min) {
                        this._restoreViewsMinMaxOptions();
                        this.option("_rangeMin", this._convertToDate(min));
                        this._updateViewsOption("min", this._getMinDate())
                    },
                    _setViewsMaxOption: function(max) {
                        this._restoreViewsMinMaxOptions();
                        this.option("_rangeMax", this._convertToDate(max));
                        this._updateViewsOption("max", this._getMaxDate())
                    },
                    _restoreViewsMinMaxOptions: function() {
                        this._resetActiveState();
                        this.option({
                            _rangeMin: null,
                            _rangeMax: null
                        });
                        this._updateViewsOption("min", this._getMinDate());
                        this._updateViewsOption("max", this._getMaxDate())
                    },
                    _updateNavigatorLabels: function() {
                        let zoomLevel = this.option("zoomLevel");
                        zoomLevel = zoomLevel.charAt(0).toUpperCase() + zoomLevel.slice(1);
                        const captionButtonText = this._navigator._caption.option("text");
                        const localizedPrevButtonLabel = _message.default.format("dxCalendar-previous".concat(zoomLevel, "ButtonLabel"));
                        const localizedCaptionLabel = _message.default.format("dxCalendar-caption".concat(zoomLevel, "Label"));
                        const localizedNextButtonLabel = _message.default.format("dxCalendar-next".concat(zoomLevel, "ButtonLabel"));
                        this.setAria("label", localizedPrevButtonLabel, this._navigator._prevButton.$element());
                        this.setAria("label", "".concat(captionButtonText, ". ").concat(localizedCaptionLabel), this._navigator._caption.$element());
                        this.setAria("label", localizedNextButtonLabel, this._navigator._nextButton.$element())
                    },
                    _updateAriaSelected: function(value, previousValue) {
                        previousValue.forEach(item => {
                            this.setAria("selected", void 0, this._view._getCellByDate(item))
                        });
                        value.forEach(item => {
                            this.setAria("selected", true, this._view._getCellByDate(item))
                        });
                        if (this.option("viewsCount") > 1) {
                            previousValue.forEach(item => {
                                this.setAria("selected", void 0, this._additionalView._getCellByDate(item))
                            });
                            value.forEach(item => {
                                this.setAria("selected", true, this._additionalView._getCellByDate(item))
                            })
                        }
                    },
                    _updateAriaId: function(value) {
                        var _value;
                        value = null !== (_value = value) && void 0 !== _value ? _value : this.option("currentDate");
                        const ariaId = "dx-" + new _guid.default;
                        const view = this._getActiveView(value);
                        const $newCell = view._getCellByDate(value);
                        this.setAria("id", ariaId, $newCell);
                        this.setAria("activedescendant", ariaId);
                        this._onContouredChanged(ariaId)
                    },
                    _suppressingNavigation: function(callback, args) {
                        this._suppressNavigation = true;
                        callback.apply(this, args);
                        delete this._suppressNavigation
                    },
                    _optionChanged: function(args) {
                        const {
                            value: value,
                            previousValue: previousValue
                        } = args;
                        switch (args.name) {
                            case "width":
                                this.callBase(args);
                                this._clearViewWidthCache();
                                break;
                            case "min":
                            case "max":
                                this.min = void 0;
                                this.max = void 0;
                                this._suppressingNavigation(this._updateCurrentDate, [this.option("currentDate")]);
                                this._refreshViews();
                                this._renderNavigator();
                                break;
                            case "selectionMode":
                                this._refreshSelectionStrategy();
                                this._initCurrentDate();
                                break;
                            case "selectWeekOnClick":
                                this._refreshViews();
                                break;
                            case "firstDayOfWeek":
                                this._refreshViews();
                                this._updateButtonsVisibility();
                                break;
                            case "focusStateEnabled":
                                this._invalidate();
                                break;
                            case "currentDate":
                                this.setAria("id", void 0, this._view._getCellByDate(previousValue));
                                this._updateCurrentDate(value);
                                break;
                            case "zoomLevel":
                                this.$element().removeClass("dx-calendar-view-" + previousValue);
                                this._correctZoomLevel();
                                this._refreshViews();
                                this._renderNavigator();
                                this._updateAriaId();
                                this._updateNavigatorLabels();
                                break;
                            case "minZoomLevel":
                            case "maxZoomLevel":
                                this._correctZoomLevel();
                                this._updateButtonsVisibility();
                                break;
                            case "value":
                                this._selectionStrategy.processValueChanged(value, previousValue);
                                this._setSubmitValue(value);
                                this.callBase(args);
                                break;
                            case "viewsCount":
                                this._refreshViews();
                                this._renderNavigator();
                                break;
                            case "onCellClick":
                                this._view.option("onCellClick", value);
                                break;
                            case "onContouredChanged":
                                this._onContouredChanged = this._createActionByOption("onContouredChanged");
                                break;
                            case "disabledDates":
                            case "dateSerializationFormat":
                            case "cellTemplate":
                            case "showTodayButton":
                                this._invalidate();
                                break;
                            case "skipFocusCheck":
                                break;
                            case "_todayDate":
                            case "showWeekNumbers":
                            case "weekNumberRule":
                                this._refreshViews();
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    getContouredDate: function() {
                        return this._view.option("contouredDate")
                    }
                });
                (0, _component_registrator.default)("dxCalendar", Calendar);
                var _default = Calendar;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        76848:
            /*!****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/calendar/ui.calendar.multiple.selection.strategy.js ***!
              \****************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _uiCalendarSelection = (obj = __webpack_require__( /*! ./ui.calendar.selection.strategy */ 48452), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let CalendarMultiSelectionStrategy = function(_CalendarSelectionStr) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(CalendarMultiSelectionStrategy, _CalendarSelectionStr);

                    function CalendarMultiSelectionStrategy(component) {
                        var _this;
                        _this = _CalendarSelectionStr.call(this, component) || this;
                        _this.NAME = "MultiSelection";
                        return _this
                    }
                    var _proto = CalendarMultiSelectionStrategy.prototype;
                    _proto.getViewOptions = function() {
                        return {
                            value: this.dateOption("value"),
                            range: [],
                            selectionMode: "multi",
                            onWeekNumberClick: this._shouldHandleWeekNumberClick() ? this._weekNumberClickHandler.bind(this) : null
                        }
                    };
                    _proto.selectValue = function(selectedValue, e) {
                        const value = [...this.dateOption("value")];
                        const alreadySelectedIndex = value.findIndex(date => (null === date || void 0 === date ? void 0 : date.toDateString()) === selectedValue.toDateString());
                        if (alreadySelectedIndex > -1) {
                            value.splice(alreadySelectedIndex, 1)
                        } else {
                            value.push(selectedValue)
                        }
                        this.skipNavigate();
                        this._updateCurrentDate(selectedValue);
                        this._currentDateChanged = true;
                        this.dateValue(value, e)
                    };
                    _proto.updateAriaSelected = function(value, previousValue) {
                        var _value, _previousValue;
                        null !== (_value = value) && void 0 !== _value ? _value : value = this.dateOption("value");
                        null !== (_previousValue = previousValue) && void 0 !== _previousValue ? _previousValue : previousValue = [];
                        _CalendarSelectionStr.prototype.updateAriaSelected.call(this, value, previousValue)
                    };
                    _proto.getDefaultCurrentDate = function() {
                        const dates = this.dateOption("value").filter(value => value);
                        return this._getLowestDateInArray(dates)
                    };
                    _proto.restoreValue = function() {
                        this.calendar.option("value", [])
                    };
                    _proto._weekNumberClickHandler = function(_ref) {
                        let {
                            rowDates: rowDates,
                            event: event
                        } = _ref;
                        const selectedDates = rowDates.filter(date => !this._isDateDisabled(date));
                        this.dateValue(selectedDates, event)
                    };
                    return CalendarMultiSelectionStrategy
                }(_uiCalendarSelection.default);
                var _default = CalendarMultiSelectionStrategy;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        69221:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/calendar/ui.calendar.navigator.js ***!
              \**********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _button = _interopRequireDefault(__webpack_require__( /*! ../button */ 63008));
                var _themes = __webpack_require__( /*! ../themes */ 75811);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let Navigator = function(_Widget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(Navigator, _Widget);

                    function Navigator() {
                        return _Widget.apply(this, arguments) || this
                    }
                    var _proto = Navigator.prototype;
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_Widget.prototype._getDefaultOptions.call(this), {
                            onClick: null,
                            onCaptionClick: null,
                            type: "normal",
                            stylingMode: "outlined",
                            text: ""
                        })
                    };
                    _proto._defaultOptionsRules = function() {
                        return _Widget.prototype._defaultOptionsRules.call(this).concat([{
                            device: function() {
                                return (0, _themes.isMaterial)()
                            },
                            options: {
                                type: "default",
                                stylingMode: "text"
                            }
                        }, {
                            device: function() {
                                return (0, _themes.isFluent)()
                            },
                            options: {
                                type: "normal",
                                stylingMode: "text"
                            }
                        }])
                    };
                    _proto._init = function() {
                        _Widget.prototype._init.call(this);
                        this._initActions()
                    };
                    _proto._initActions = function() {
                        this._clickAction = this._createActionByOption("onClick");
                        this._captionClickAction = this._createActionByOption("onCaptionClick")
                    };
                    _proto._initMarkup = function() {
                        _Widget.prototype._initMarkup.call(this);
                        this.$element().addClass("dx-calendar-navigator");
                        this._renderButtons();
                        this._renderCaption()
                    };
                    _proto._renderButtons = function() {
                        const {
                            rtlEnabled: rtlEnabled,
                            type: type,
                            stylingMode: stylingMode,
                            focusStateEnabled: focusStateEnabled
                        } = this.option();
                        this._prevButton = this._createComponent((0, _renderer.default)("<div>"), _button.default, {
                            focusStateEnabled: focusStateEnabled,
                            icon: rtlEnabled ? "chevronright" : "chevronleft",
                            onClick: e => {
                                this._clickAction({
                                    direction: -1,
                                    event: e
                                })
                            },
                            type: type,
                            stylingMode: stylingMode,
                            integrationOptions: {}
                        });
                        const $prevButton = this._prevButton.$element().addClass("dx-calendar-navigator-previous-view").addClass("dx-calendar-navigator-previous-month");
                        this._nextButton = this._createComponent((0, _renderer.default)("<div>"), _button.default, {
                            focusStateEnabled: focusStateEnabled,
                            icon: rtlEnabled ? "chevronleft" : "chevronright",
                            onClick: e => {
                                this._clickAction({
                                    direction: 1,
                                    event: e
                                })
                            },
                            type: type,
                            stylingMode: stylingMode,
                            integrationOptions: {}
                        });
                        const $nextButton = this._nextButton.$element().addClass("dx-calendar-navigator-next-view").addClass("dx-calendar-navigator-next-month");
                        this._caption = this._createComponent((0, _renderer.default)("<div>").addClass("dx-calendar-caption-button"), _button.default, {
                            focusStateEnabled: focusStateEnabled,
                            onClick: e => {
                                this._captionClickAction({
                                    event: e
                                })
                            },
                            type: type,
                            stylingMode: stylingMode,
                            template: (_, content) => {
                                const {
                                    text: text
                                } = this.option();
                                const viewCaptionTexts = text.split(" - ");
                                viewCaptionTexts.forEach(captionText => {
                                    (0, _renderer.default)(content).append((0, _renderer.default)("<span>").addClass("dx-button-text").text(captionText))
                                })
                            },
                            integrationOptions: {}
                        });
                        const $caption = this._caption.$element();
                        this.$element().append($prevButton, $caption, $nextButton)
                    };
                    _proto._renderCaption = function() {
                        this._caption.option("text", this.option("text"))
                    };
                    _proto.toggleButton = function(buttonPrefix, value) {
                        const buttonName = "_" + buttonPrefix + "Button";
                        const button = this[buttonName];
                        if (button) {
                            button.option("disabled", value);
                            button.$element().toggleClass("dx-calendar-disabled-navigator-link", value)
                        }
                    };
                    _proto._optionChanged = function(args) {
                        switch (args.name) {
                            case "text":
                                this._renderCaption();
                                break;
                            default:
                                _Widget.prototype._optionChanged.call(this, args)
                        }
                    };
                    return Navigator
                }(_ui.default);
                var _default = Navigator;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        76276:
            /*!*************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/calendar/ui.calendar.range.selection.strategy.js ***!
              \*************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 91198));
                var _uiCalendarSelection = _interopRequireDefault(__webpack_require__( /*! ./ui.calendar.selection.strategy */ 48452));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let CalendarRangeSelectionStrategy = function(_CalendarSelectionStr) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(CalendarRangeSelectionStrategy, _CalendarSelectionStr);

                    function CalendarRangeSelectionStrategy(component) {
                        var _this;
                        _this = _CalendarSelectionStr.call(this, component) || this;
                        _this.NAME = "RangeSelection";
                        return _this
                    }
                    var _proto = CalendarRangeSelectionStrategy.prototype;
                    _proto.getViewOptions = function() {
                        const value = this._getValue();
                        const range = this._getDaysInRange(value[0], value[1]);
                        return {
                            value: value,
                            range: range,
                            selectionMode: "range",
                            onCellHover: this._cellHoverHandler.bind(this),
                            onWeekNumberClick: this._shouldHandleWeekNumberClick() ? this._weekNumberClickHandler.bind(this) : null
                        }
                    };
                    _proto.selectValue = function(selectedValue, e) {
                        const [startDate, endDate] = this._getValue();
                        this.skipNavigate();
                        this._updateCurrentDate(selectedValue);
                        this._currentDateChanged = true;
                        if (true === this.calendar.option("_allowChangeSelectionOrder")) {
                            this.calendar._valueSelected = true;
                            if ("startDate" === this.calendar.option("_currentSelection")) {
                                if (this.calendar._convertToDate(selectedValue) > this.calendar._convertToDate(endDate)) {
                                    this.dateValue([selectedValue, null], e)
                                } else {
                                    this.dateValue([selectedValue, endDate], e)
                                }
                            } else if (this.calendar._convertToDate(selectedValue) >= this.calendar._convertToDate(startDate)) {
                                this.dateValue([startDate, selectedValue], e)
                            } else {
                                this.dateValue([selectedValue, null], e)
                            }
                        } else if (!startDate || endDate) {
                            this.dateValue([selectedValue, null], e)
                        } else {
                            this.dateValue(startDate < selectedValue ? [startDate, selectedValue] : [selectedValue, startDate], e)
                        }
                    };
                    _proto.updateAriaSelected = function(value, previousValue) {
                        var _value, _previousValue;
                        null !== (_value = value) && void 0 !== _value ? _value : value = this._getValue();
                        null !== (_previousValue = previousValue) && void 0 !== _previousValue ? _previousValue : previousValue = [];
                        _CalendarSelectionStr.prototype.updateAriaSelected.call(this, value, previousValue)
                    };
                    _proto.processValueChanged = function(value, previousValue) {
                        _CalendarSelectionStr.prototype.processValueChanged.call(this, value, previousValue);
                        const range = this._getRange();
                        this._updateViewsOption("range", range)
                    };
                    _proto.getDefaultCurrentDate = function() {
                        const {
                            _allowChangeSelectionOrder: _allowChangeSelectionOrder,
                            _currentSelection: _currentSelection
                        } = this.calendar.option();
                        const value = this.dateOption("value");
                        if (_allowChangeSelectionOrder) {
                            if ("startDate" === _currentSelection && value[0]) {
                                return value[0]
                            }
                            if ("endDate" === _currentSelection && value[1]) {
                                return value[1]
                            }
                        }
                        const dates = value.filter(value => value);
                        return this._getLowestDateInArray(dates)
                    };
                    _proto.restoreValue = function() {
                        this.calendar.option("value", [null, null])
                    };
                    _proto._getValue = function() {
                        const value = this.dateOption("value");
                        if (!value.length) {
                            return value
                        }
                        let [startDate, endDate] = value;
                        if (startDate && endDate && startDate > endDate) {
                            [startDate, endDate] = [endDate, startDate]
                        }
                        return [startDate, endDate]
                    };
                    _proto._getRange = function() {
                        const [startDate, endDate] = this._getValue();
                        return this._getDaysInRange(startDate, endDate)
                    };
                    _proto._getDaysInRange = function(startDate, endDate) {
                        if (!startDate || !endDate) {
                            return []
                        }
                        const {
                            currentDate: currentDate,
                            viewsCount: viewsCount
                        } = this.calendar.option();
                        const isAdditionalViewDate = this.calendar._isAdditionalViewDate(currentDate);
                        const firstDateInViews = _date.default.getFirstMonthDate(_date.default.addDateInterval(currentDate, "month", isAdditionalViewDate ? -2 : -1));
                        const lastDateInViews = _date.default.getLastMonthDate(_date.default.addDateInterval(currentDate, "month", isAdditionalViewDate ? 1 : viewsCount));
                        const rangeStartDate = new Date(Math.max(firstDateInViews, startDate));
                        const rangeEndDate = new Date(Math.min(lastDateInViews, endDate));
                        return [..._date.default.getDatesOfInterval(rangeStartDate, rangeEndDate, 864e5), rangeEndDate]
                    };
                    _proto._cellHoverHandler = function(e) {
                        const isMaxZoomLevel = this._isMaxZoomLevel();
                        const [startDate, endDate] = this._getValue();
                        const {
                            _allowChangeSelectionOrder: _allowChangeSelectionOrder,
                            _currentSelection: _currentSelection
                        } = this.calendar.option();
                        if (isMaxZoomLevel) {
                            const skipHoveredRange = _allowChangeSelectionOrder && "startDate" === _currentSelection;
                            if (startDate && !endDate && !skipHoveredRange) {
                                if (e.value > startDate) {
                                    this._updateViewsOption("hoveredRange", this._getDaysInRange(startDate, e.value));
                                    return
                                }
                            } else if (!startDate && endDate && !(_allowChangeSelectionOrder && "endDate" === _currentSelection)) {
                                if (e.value < endDate) {
                                    this._updateViewsOption("hoveredRange", this._getDaysInRange(e.value, endDate));
                                    return
                                }
                            } else if (startDate && endDate) {
                                if ("startDate" === _currentSelection && e.value < startDate) {
                                    this._updateViewsOption("hoveredRange", this._getDaysInRange(e.value, startDate));
                                    return
                                } else if ("endDate" === _currentSelection && e.value > endDate) {
                                    this._updateViewsOption("hoveredRange", this._getDaysInRange(endDate, e.value));
                                    return
                                }
                            }
                            this._updateViewsOption("hoveredRange", [])
                        }
                    };
                    _proto._weekNumberClickHandler = function(_ref) {
                        let {
                            rowDates: rowDates,
                            event: event
                        } = _ref;
                        const selectedDates = rowDates.filter(date => !this._isDateDisabled(date));
                        const value = selectedDates.length ? [selectedDates[0], selectedDates[selectedDates.length - 1]] : [null, null];
                        this.dateValue(value, event)
                    };
                    return CalendarRangeSelectionStrategy
                }(_uiCalendarSelection.default);
                var _default = CalendarRangeSelectionStrategy;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        48452:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/calendar/ui.calendar.selection.strategy.js ***!
              \*******************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _date = (obj = __webpack_require__( /*! ../../core/utils/date */ 91198), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                let CalendarSelectionStrategy = function() {
                    function CalendarSelectionStrategy(component) {
                        this.calendar = component
                    }
                    var _proto = CalendarSelectionStrategy.prototype;
                    _proto.dateOption = function(optionName) {
                        return this.calendar._dateOption(optionName)
                    };
                    _proto.dateValue = function(value, e) {
                        this.calendar._dateValue(value, e)
                    };
                    _proto.skipNavigate = function() {
                        this.calendar._skipNavigate = true
                    };
                    _proto.updateAriaSelected = function(value, previousValue) {
                        this.calendar._updateAriaSelected(value, previousValue);
                        if (value[0] && this.calendar.option("currentDate").getTime() === value[0].getTime()) {
                            this.calendar._updateAriaId(value[0])
                        }
                    };
                    _proto.processValueChanged = function(value, previousValue) {
                        var _value, _previousValue;
                        if ((0, _type.isDefined)(value) && !Array.isArray(value)) {
                            value = [value]
                        }
                        if ((0, _type.isDefined)(previousValue) && !Array.isArray(previousValue)) {
                            previousValue = [previousValue]
                        }
                        value = (null === (_value = value) || void 0 === _value ? void 0 : _value.map(item => this._convertToDate(item))) || [];
                        previousValue = (null === (_previousValue = previousValue) || void 0 === _previousValue ? void 0 : _previousValue.map(item => this._convertToDate(item))) || [];
                        this._updateViewsValue(value);
                        this.updateAriaSelected(value, previousValue);
                        if (!this._currentDateChanged) {
                            this.calendar._initCurrentDate()
                        }
                        this._currentDateChanged = false
                    };
                    _proto._isDateDisabled = function(date) {
                        const min = this.calendar._dateOption("min");
                        const max = this.calendar._dateOption("max");
                        const isLessThanMin = (0, _type.isDefined)(min) && date < min && !_date.default.sameDate(min, date);
                        const isBiggerThanMax = (0, _type.isDefined)(max) && date > max && !_date.default.sameDate(max, date);
                        return this.calendar._view.isDateDisabled(date) || isLessThanMin || isBiggerThanMax
                    };
                    _proto._getLowestDateInArray = function(dates) {
                        if (dates.length) {
                            return new Date(Math.min(...dates))
                        }
                    };
                    _proto._convertToDate = function(value) {
                        return this.calendar._convertToDate(value)
                    };
                    _proto._isMaxZoomLevel = function() {
                        return this.calendar._isMaxZoomLevel()
                    };
                    _proto._updateViewsOption = function(optionName, optionValue) {
                        this.calendar._updateViewsOption(optionName, optionValue)
                    };
                    _proto._updateViewsValue = function(value) {
                        this._updateViewsOption("value", value)
                    };
                    _proto._updateCurrentDate = function(value) {
                        this.calendar.option("currentDate", null !== value && void 0 !== value ? value : new Date)
                    };
                    _proto._shouldHandleWeekNumberClick = function() {
                        const {
                            selectionMode: selectionMode,
                            selectWeekOnClick: selectWeekOnClick
                        } = this.calendar.option();
                        return selectWeekOnClick && "single" !== selectionMode
                    };
                    return CalendarSelectionStrategy
                }();
                var _default = CalendarSelectionStrategy;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        19769:
            /*!**************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/calendar/ui.calendar.single.selection.strategy.js ***!
              \**************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _uiCalendarSelection = (obj = __webpack_require__( /*! ./ui.calendar.selection.strategy */ 48452), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let CalendarSingleSelectionStrategy = function(_CalendarSelectionStr) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(CalendarSingleSelectionStrategy, _CalendarSelectionStr);

                    function CalendarSingleSelectionStrategy(component) {
                        var _this;
                        _this = _CalendarSelectionStr.call(this, component) || this;
                        _this.NAME = "SingleSelection";
                        return _this
                    }
                    var _proto = CalendarSingleSelectionStrategy.prototype;
                    _proto.getViewOptions = function() {
                        return {
                            value: this.dateOption("value"),
                            range: [],
                            selectionMode: "single"
                        }
                    };
                    _proto.selectValue = function(selectedValue, e) {
                        this.skipNavigate();
                        this.dateValue(selectedValue, e)
                    };
                    _proto.updateAriaSelected = function(value, previousValue) {
                        var _value, _previousValue;
                        null !== (_value = value) && void 0 !== _value ? _value : value = [this.dateOption("value")];
                        null !== (_previousValue = previousValue) && void 0 !== _previousValue ? _previousValue : previousValue = [];
                        _CalendarSelectionStr.prototype.updateAriaSelected.call(this, value, previousValue)
                    };
                    _proto.getDefaultCurrentDate = function() {
                        return this.dateOption("value")
                    };
                    _proto.restoreValue = function() {
                        this.calendar.option("value", null)
                    };
                    _proto._updateViewsValue = function(value) {
                        this._updateViewsOption("value", value[0])
                    };
                    return CalendarSingleSelectionStrategy
                }(_uiCalendarSelection.default);
                var _default = CalendarSingleSelectionStrategy;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        92633:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/calendar/ui.calendar.views.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _uiCalendar = _interopRequireDefault(__webpack_require__( /*! ./ui.calendar.base_view */ 15360));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 91198));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../localization/date */ 91500));
                var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date_serialization */ 69434));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const Views = {
                    month: _uiCalendar.default.inherit({
                        _getViewName: function() {
                            return "month"
                        },
                        _getDefaultOptions: function() {
                            return (0, _extend.extend)(this.callBase(), {
                                firstDayOfWeek: 0,
                                rowCount: 6,
                                colCount: 7
                            })
                        },
                        _renderImpl: function() {
                            this.callBase();
                            this._renderHeader()
                        },
                        _renderBody: function() {
                            this.callBase();
                            this._$table.find(".".concat("dx-calendar-other-view")).addClass("dx-calendar-other-month")
                        },
                        _renderFocusTarget: _common.noop,
                        getCellAriaLabel: function(date) {
                            return _date2.default.format(date, "longdate")
                        },
                        _renderHeader: function() {
                            const $headerRow = (0, _renderer.default)("<tr>");
                            const $header = (0, _renderer.default)("<thead>").append($headerRow);
                            this._$table.prepend($header);
                            for (let colIndex = 0, colCount = this.option("colCount"); colIndex < colCount; colIndex++) {
                                this._renderHeaderCell(colIndex, $headerRow)
                            }
                            if (this.option("showWeekNumbers")) {
                                this._renderWeekHeaderCell($headerRow)
                            }
                        },
                        _renderHeaderCell: function(cellIndex, $headerRow) {
                            const {
                                firstDayOfWeek: firstDayOfWeek
                            } = this.option();
                            const {
                                full: fullCaption,
                                abbreviated: abbrCaption
                            } = this._getDayCaption(firstDayOfWeek + cellIndex);
                            const $cell = (0, _renderer.default)("<th>").attr({
                                scope: "col",
                                abbr: fullCaption
                            }).text(abbrCaption);
                            $headerRow.append($cell)
                        },
                        _renderWeekHeaderCell: function($headerRow) {
                            const $weekNumberHeaderCell = (0, _renderer.default)("<th>").attr({
                                scope: "col",
                                abbr: "WeekNumber",
                                class: "dx-week-number-header"
                            });
                            $headerRow.prepend($weekNumberHeaderCell)
                        },
                        _renderWeekNumberCell: function(rowData) {
                            const {
                                showWeekNumbers: showWeekNumbers,
                                cellTemplate: cellTemplate,
                                selectionMode: selectionMode,
                                selectWeekOnClick: selectWeekOnClick
                            } = this.option();
                            if (!showWeekNumbers) {
                                return
                            }
                            const weekNumber = this._getWeekNumber(rowData.prevCellDate);
                            const cell = _dom_adapter.default.createElement("td");
                            const $cell = (0, _renderer.default)(cell);
                            cell.className = "dx-calendar-week-number-cell";
                            if ("single" !== selectionMode && selectWeekOnClick) {
                                $cell.addClass("dx-calendar-week-selection")
                            }
                            if (cellTemplate) {
                                cellTemplate.render(this._prepareCellTemplateData(weekNumber, -1, $cell))
                            } else {
                                cell.innerHTML = weekNumber
                            }
                            rowData.row.prepend(cell);
                            this.setAria({
                                role: "gridcell",
                                label: "Week ".concat(weekNumber)
                            }, $cell)
                        },
                        _getWeekNumber: function(date) {
                            const {
                                weekNumberRule: weekNumberRule,
                                firstDayOfWeek: firstDayOfWeek
                            } = this.option();
                            if ("auto" === weekNumberRule) {
                                return _date.default.getWeekNumber(date, firstDayOfWeek, 1 === firstDayOfWeek ? "firstFourDays" : "firstDay")
                            }
                            return _date.default.getWeekNumber(date, firstDayOfWeek, weekNumberRule)
                        },
                        getNavigatorCaption: function() {
                            return _date2.default.format(this.option("date"), "monthandyear")
                        },
                        _isTodayCell: function(cellDate) {
                            const today = this.option("_todayDate")();
                            return _date.default.sameDate(cellDate, today)
                        },
                        _isDateOutOfRange: function(cellDate) {
                            const minDate = this.option("min");
                            const maxDate = this.option("max");
                            return !_date.default.dateInRange(cellDate, minDate, maxDate, "date")
                        },
                        _isOtherView: function(cellDate) {
                            return cellDate.getMonth() !== this.option("date").getMonth()
                        },
                        _isStartDayOfMonth: function(cellDate) {
                            return _date.default.sameDate(cellDate, _date.default.getFirstMonthDate(this.option("date")))
                        },
                        _isEndDayOfMonth: function(cellDate) {
                            return _date.default.sameDate(cellDate, _date.default.getLastMonthDate(this.option("date")))
                        },
                        _getCellText: function(cellDate) {
                            return _date2.default.format(cellDate, "d")
                        },
                        _getDayCaption: function(day) {
                            const daysInWeek = this.option("colCount");
                            const dayIndex = day % daysInWeek;
                            return {
                                full: _date2.default.getDayNames()[dayIndex],
                                abbreviated: _date2.default.getDayNames("abbreviated")[dayIndex]
                            }
                        },
                        _getFirstCellData: function() {
                            const {
                                firstDayOfWeek: firstDayOfWeek
                            } = this.option();
                            const firstDay = _date.default.getFirstMonthDate(this.option("date"));
                            let firstMonthDayOffset = firstDayOfWeek - firstDay.getDay();
                            const daysInWeek = this.option("colCount");
                            if (firstMonthDayOffset >= 0) {
                                firstMonthDayOffset -= daysInWeek
                            }
                            firstDay.setDate(firstDay.getDate() + firstMonthDayOffset);
                            return firstDay
                        },
                        _getNextCellData: function(date) {
                            date = new Date(date);
                            date.setDate(date.getDate() + 1);
                            return date
                        },
                        _getCellByDate: function(date) {
                            return this._$table.find("td[data-value='".concat(_date_serialization.default.serializeDate(date, _date.default.getShortDateFormat()), "']"))
                        },
                        isBoundary: function(date) {
                            return _date.default.sameMonthAndYear(date, this.option("min")) || _date.default.sameMonthAndYear(date, this.option("max"))
                        },
                        _getDefaultDisabledDatesHandler: function(disabledDates) {
                            return function(args) {
                                const isDisabledDate = disabledDates.some((function(item) {
                                    return _date.default.sameDate(item, args.date)
                                }));
                                if (isDisabledDate) {
                                    return true
                                }
                            }
                        }
                    }),
                    year: _uiCalendar.default.inherit({
                        _getViewName: function() {
                            return "year"
                        },
                        _isTodayCell: function(cellDate) {
                            const today = this.option("_todayDate")();
                            return _date.default.sameMonthAndYear(cellDate, today)
                        },
                        _isDateOutOfRange: function(cellDate) {
                            return !_date.default.dateInRange(cellDate, _date.default.getFirstMonthDate(this.option("min")), _date.default.getLastMonthDate(this.option("max")))
                        },
                        _isOtherView: function() {
                            return false
                        },
                        _isStartDayOfMonth: function() {
                            return false
                        },
                        _isEndDayOfMonth: function() {
                            return false
                        },
                        _getCellText: function(cellDate) {
                            return _date2.default.getMonthNames("abbreviated")[cellDate.getMonth()]
                        },
                        _getFirstCellData: function() {
                            const currentDate = this.option("date");
                            const data = new Date(currentDate);
                            data.setDate(1);
                            data.setMonth(0);
                            return data
                        },
                        _getNextCellData: function(date) {
                            date = new Date(date);
                            date.setMonth(date.getMonth() + 1);
                            return date
                        },
                        _getCellByDate: function(date) {
                            const foundDate = new Date(date);
                            foundDate.setDate(1);
                            return this._$table.find("td[data-value='".concat(_date_serialization.default.serializeDate(foundDate, _date.default.getShortDateFormat()), "']"))
                        },
                        getCellAriaLabel: function(date) {
                            return _date2.default.format(date, "monthandyear")
                        },
                        getNavigatorCaption: function() {
                            return _date2.default.format(this.option("date"), "yyyy")
                        },
                        isBoundary: function(date) {
                            return _date.default.sameYear(date, this.option("min")) || _date.default.sameYear(date, this.option("max"))
                        },
                        _renderWeekNumberCell: _common.noop
                    }),
                    decade: _uiCalendar.default.inherit({
                        _getViewName: function() {
                            return "decade"
                        },
                        _isTodayCell: function(cellDate) {
                            const today = this.option("_todayDate")();
                            return _date.default.sameYear(cellDate, today)
                        },
                        _isDateOutOfRange: function(cellDate) {
                            const min = this.option("min");
                            const max = this.option("max");
                            return !_date.default.dateInRange(cellDate.getFullYear(), min && min.getFullYear(), max && max.getFullYear())
                        },
                        _isOtherView: function(cellDate) {
                            const date = new Date(cellDate);
                            date.setMonth(1);
                            return !_date.default.sameDecade(date, this.option("date"))
                        },
                        _isStartDayOfMonth: function() {
                            return false
                        },
                        _isEndDayOfMonth: function() {
                            return false
                        },
                        _getCellText: function(cellDate) {
                            return _date2.default.format(cellDate, "yyyy")
                        },
                        _getFirstCellData: function() {
                            const year = _date.default.getFirstYearInDecade(this.option("date")) - 1;
                            return _date.default.createDateWithFullYear(year, 0, 1)
                        },
                        _getNextCellData: function(date) {
                            date = new Date(date);
                            date.setFullYear(date.getFullYear() + 1);
                            return date
                        },
                        getNavigatorCaption: function() {
                            const currentDate = this.option("date");
                            const firstYearInDecade = _date.default.getFirstYearInDecade(currentDate);
                            const startDate = new Date(currentDate);
                            const endDate = new Date(currentDate);
                            startDate.setFullYear(firstYearInDecade);
                            endDate.setFullYear(firstYearInDecade + 9);
                            return _date2.default.format(startDate, "yyyy") + "-" + _date2.default.format(endDate, "yyyy")
                        },
                        _isValueOnCurrentView: function(currentDate, value) {
                            return _date.default.sameDecade(currentDate, value)
                        },
                        _getCellByDate: function(date) {
                            const foundDate = new Date(date);
                            foundDate.setDate(1);
                            foundDate.setMonth(0);
                            return this._$table.find("td[data-value='".concat(_date_serialization.default.serializeDate(foundDate, _date.default.getShortDateFormat()), "']"))
                        },
                        isBoundary: function(date) {
                            return _date.default.sameDecade(date, this.option("min")) || _date.default.sameDecade(date, this.option("max"))
                        },
                        _renderWeekNumberCell: _common.noop
                    }),
                    century: _uiCalendar.default.inherit({
                        _getViewName: function() {
                            return "century"
                        },
                        _isTodayCell: function(cellDate) {
                            const today = this.option("_todayDate")();
                            return _date.default.sameDecade(cellDate, today)
                        },
                        _isDateOutOfRange: function(cellDate) {
                            const decade = _date.default.getFirstYearInDecade(cellDate);
                            const minDecade = _date.default.getFirstYearInDecade(this.option("min"));
                            const maxDecade = _date.default.getFirstYearInDecade(this.option("max"));
                            return !_date.default.dateInRange(decade, minDecade, maxDecade)
                        },
                        _isOtherView: function(cellDate) {
                            const date = new Date(cellDate);
                            date.setMonth(1);
                            return !_date.default.sameCentury(date, this.option("date"))
                        },
                        _isStartDayOfMonth: function() {
                            return false
                        },
                        _isEndDayOfMonth: function() {
                            return false
                        },
                        _getCellText: function(cellDate) {
                            const startDate = _date2.default.format(cellDate, "yyyy");
                            const endDate = new Date(cellDate);
                            endDate.setFullYear(endDate.getFullYear() + 9);
                            return startDate + " - " + _date2.default.format(endDate, "yyyy")
                        },
                        _getFirstCellData: function() {
                            const decade = _date.default.getFirstDecadeInCentury(this.option("date")) - 10;
                            return _date.default.createDateWithFullYear(decade, 0, 1)
                        },
                        _getNextCellData: function(date) {
                            date = new Date(date);
                            date.setFullYear(date.getFullYear() + 10);
                            return date
                        },
                        _getCellByDate: function(date) {
                            const foundDate = new Date(date);
                            foundDate.setDate(1);
                            foundDate.setMonth(0);
                            foundDate.setFullYear(_date.default.getFirstYearInDecade(foundDate));
                            return this._$table.find("td[data-value='".concat(_date_serialization.default.serializeDate(foundDate, _date.default.getShortDateFormat()), "']"))
                        },
                        getNavigatorCaption: function() {
                            const currentDate = this.option("date");
                            const firstDecadeInCentury = _date.default.getFirstDecadeInCentury(currentDate);
                            const startDate = new Date(currentDate);
                            const endDate = new Date(currentDate);
                            startDate.setFullYear(firstDecadeInCentury);
                            endDate.setFullYear(firstDecadeInCentury + 99);
                            return _date2.default.format(startDate, "yyyy") + "-" + _date2.default.format(endDate, "yyyy")
                        },
                        isBoundary: function(date) {
                            return _date.default.sameCentury(date, this.option("min")) || _date.default.sameCentury(date, this.option("max"))
                        },
                        _renderWeekNumberCell: _common.noop
                    })
                };
                var _default = Views;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        18859:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/check_box.js ***!
              \*************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _check_box = (obj = __webpack_require__( /*! ../renovation/ui/editors/check_box/check_box.j */ 8448), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _check_box.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        97326:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/collection/data_controller.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                const DataControllerMock = {
                    load: () => (0, _deferred.Deferred)().reject(),
                    loadSingle: () => (0, _deferred.Deferred)().reject(),
                    loadFromStore: () => (0, _deferred.Deferred)().reject(),
                    loadNextPage: () => (0, _deferred.Deferred)().reject(),
                    loadOptions: _common.noop,
                    userData: _common.noop,
                    cancel: _common.noop,
                    cancelAll: _common.noop,
                    filter: _common.noop,
                    addSearchFilter: _common.noop,
                    group: _common.noop,
                    paginate: _common.noop,
                    pageSize: _common.noop,
                    pageIndex: _common.noop,
                    resetDataSourcePageIndex: _common.noop,
                    totalCount: _common.noop,
                    isLastPage: _common.noop,
                    isLoading: _common.noop,
                    isLoaded: _common.noop,
                    searchValue: _common.noop,
                    searchOperation: _common.noop,
                    searchExpr: _common.noop,
                    select: _common.noop,
                    key: _common.noop,
                    keyOf: _common.noop,
                    store: _common.noop,
                    items: _common.noop,
                    applyMapFunction: _common.noop,
                    getDataSource: _common.noop,
                    reload: _common.noop,
                    on: _common.noop,
                    off: _common.noop
                };
                let DataController = function() {
                    function DataController(dataSource) {
                        if (!dataSource) {
                            return DataControllerMock
                        }
                        this._dataSource = dataSource
                    }
                    var _proto = DataController.prototype;
                    _proto.load = function() {
                        return this._dataSource.load()
                    };
                    _proto.loadSingle = function(propName, propValue) {
                        if (arguments.length < 2) {
                            propValue = propName;
                            propName = this.key()
                        }
                        return this._dataSource.loadSingle(propName, propValue)
                    };
                    _proto.loadFromStore = function(loadOptions) {
                        return this.store().load(loadOptions)
                    };
                    _proto.loadNextPage = function() {
                        this.pageIndex(1 + this.pageIndex());
                        return this.load()
                    };
                    _proto.loadOptions = function() {
                        return this._dataSource.loadOptions()
                    };
                    _proto.userData = function() {
                        return this._dataSource._userData
                    };
                    _proto.cancel = function(operationId) {
                        this._dataSource.cancel(operationId)
                    };
                    _proto.cancelAll = function() {
                        this._dataSource.cancelAll()
                    };
                    _proto.filter = function(_filter) {
                        return this._dataSource.filter(_filter)
                    };
                    _proto.addSearchFilter = function(storeLoadOptions) {
                        this._dataSource._addSearchFilter(storeLoadOptions)
                    };
                    _proto.group = function(_group) {
                        return this._dataSource.group(_group)
                    };
                    _proto.paginate = function() {
                        return this._dataSource.paginate()
                    };
                    _proto.pageSize = function() {
                        return this._dataSource._pageSize
                    };
                    _proto.pageIndex = function(_pageIndex) {
                        return this._dataSource.pageIndex(_pageIndex)
                    };
                    _proto.resetDataSourcePageIndex = function() {
                        if (this.pageIndex()) {
                            this.pageIndex(0);
                            this.load()
                        }
                    };
                    _proto.totalCount = function() {
                        return this._dataSource.totalCount()
                    };
                    _proto.isLastPage = function() {
                        return this._dataSource.isLastPage() || !this._dataSource._pageSize
                    };
                    _proto.isLoading = function() {
                        return this._dataSource.isLoading()
                    };
                    _proto.isLoaded = function() {
                        return this._dataSource.isLoaded()
                    };
                    _proto.searchValue = function(value) {
                        if (!arguments.length) {
                            return this._dataSource.searchValue()
                        }
                        return this._dataSource.searchValue(value)
                    };
                    _proto.searchOperation = function(operation) {
                        return this._dataSource.searchOperation(operation)
                    };
                    _proto.searchExpr = function(expr) {
                        if (!arguments.length) {
                            return this._dataSource.searchExpr()
                        }
                        return this._dataSource.searchExpr(expr)
                    };
                    _proto.select = function() {
                        return this._dataSource.select(...arguments)
                    };
                    _proto.key = function() {
                        return this._dataSource.key()
                    };
                    _proto.keyOf = function(item) {
                        return this.store().keyOf(item)
                    };
                    _proto.store = function() {
                        return this._dataSource.store()
                    };
                    _proto.items = function() {
                        return this._dataSource.items()
                    };
                    _proto.applyMapFunction = function(data) {
                        return this._dataSource._applyMapFunction(data)
                    };
                    _proto.getDataSource = function() {
                        return this._dataSource || null
                    };
                    _proto.reload = function() {
                        return this._dataSource.reload()
                    };
                    _proto.on = function(event, handler) {
                        this._dataSource.on(event, handler)
                    };
                    _proto.off = function(event, handler) {
                        this._dataSource.off(event, handler)
                    };
                    return DataController
                }();
                var _default = DataController;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        54778:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/collection/item.js ***!
              \*******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 38377));
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _public_component = __webpack_require__( /*! ../../core/utils/public_component */ 9321);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const CollectionItem = _class.default.inherit({
                    ctor: function($element, options, rawData) {
                        this._$element = $element;
                        this._options = options;
                        this._rawData = rawData;
                        (0, _public_component.attachInstanceToElement)($element, this, this._dispose);
                        this._render()
                    },
                    _render: function() {
                        const $placeholder = (0, _renderer.default)("<div>").addClass("dx-item-content-placeholder");
                        this._$element.append($placeholder);
                        this._watchers = [];
                        this._renderWatchers()
                    },
                    _renderWatchers: function() {
                        this._startWatcher("disabled", this._renderDisabled.bind(this));
                        this._startWatcher("visible", this._renderVisible.bind(this))
                    },
                    _startWatcher: function(field, render) {
                        const rawData = this._rawData;
                        const exprGetter = this._options.fieldGetter(field);
                        const watcher = function(watchMethod, fn, callback) {
                            const filteredCallback = function() {
                                let oldValue;
                                return function(value) {
                                    if (oldValue !== value) {
                                        callback(value, oldValue);
                                        oldValue = value
                                    }
                                }
                            }();
                            return {
                                dispose: watchMethod(fn, filteredCallback),
                                force: function() {
                                    filteredCallback(fn())
                                }
                            }
                        }(this._options.watchMethod(), (function() {
                            return exprGetter(rawData)
                        }), function(value, oldValue) {
                            this._dirty = true;
                            render(value, oldValue)
                        }.bind(this));
                        this._watchers.push(watcher)
                    },
                    setDataField: function() {
                        this._dirty = false;
                        (0, _iterator.each)(this._watchers, (function(_, watcher) {
                            watcher.force()
                        }));
                        if (this._dirty) {
                            return true
                        }
                    },
                    _renderDisabled: function(value, oldValue) {
                        this._$element.toggleClass("dx-state-disabled", !!value);
                        this._$element.attr("aria-disabled", !!value);
                        this._updateOwnerFocus(value)
                    },
                    _updateOwnerFocus: function(isDisabled) {
                        const ownerComponent = this._options.owner;
                        if (ownerComponent && isDisabled) {
                            ownerComponent._resetItemFocus(this._$element)
                        }
                    },
                    _renderVisible: function(value, oldValue) {
                        this._$element.toggleClass("dx-state-invisible", void 0 !== value && !value)
                    },
                    _dispose: function() {
                        (0, _iterator.each)(this._watchers, (function(_, watcher) {
                            watcher.dispose()
                        }))
                    }
                });
                CollectionItem.getInstance = function($element) {
                    return (0, _public_component.getInstanceByElement)($element, this)
                };
                var _default = CollectionItem;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        25970:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/collection/ui.collection_widget.async.js ***!
              \*****************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _uiCollection_widget = (obj = __webpack_require__( /*! ./ui.collection_widget.edit */ 11050), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                const AsyncCollectionWidget = _uiCollection_widget.default.inherit({
                    _initMarkup() {
                        this._deferredItems = [];
                        this.callBase()
                    },
                    _renderItemContent(args) {
                        const renderContentDeferred = new _deferred.Deferred;
                        const itemDeferred = new _deferred.Deferred;
                        this._deferredItems[args.index] = itemDeferred;
                        const $itemContent = this.callBase.call(this, args);
                        itemDeferred.done(() => {
                            renderContentDeferred.resolve($itemContent)
                        });
                        return renderContentDeferred.promise()
                    },
                    _onItemTemplateRendered: function(itemTemplate, renderArgs) {
                        return () => {
                            this._deferredItems[renderArgs.index].resolve()
                        }
                    },
                    _postProcessRenderItems: _common.noop,
                    _renderItemsAsync() {
                        const d = new _deferred.Deferred;
                        _deferred.when.apply(this, this._deferredItems).done(() => {
                            this._postProcessRenderItems();
                            d.resolve()
                        });
                        return d.promise()
                    },
                    _clean() {
                        this.callBase();
                        this._deferredItems = []
                    }
                });
                var _default = AsyncCollectionWidget;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        19982:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/collection/ui.collection_widget.base.js ***!
              \****************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _template_manager = __webpack_require__( /*! ../../core/utils/template_manager */ 69697);
                var _element = __webpack_require__( /*! ../../core/element */ 6415);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _action = _interopRequireDefault(__webpack_require__( /*! ../../core/action */ 62414));
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 73176));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../events/pointer */ 93786));
                var _data_helper = _interopRequireDefault(__webpack_require__( /*! ../../data_helper */ 53305));
                var _item = _interopRequireDefault(__webpack_require__( /*! ./item */ 54778));
                var _selectors = __webpack_require__( /*! ../widget/selectors */ 31421);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _hold = _interopRequireDefault(__webpack_require__( /*! ../../events/hold */ 11699));
                var _data = __webpack_require__( /*! ../../core/utils/data */ 47617);
                var _click = __webpack_require__( /*! ../../events/click */ 95429);
                var _contextmenu = __webpack_require__( /*! ../../events/contextmenu */ 49166);
                var _bindable_template = __webpack_require__( /*! ../../core/templates/bindable_template */ 93280);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const ITEM_CLASS = "dx-item";
                const ITEM_PATH_REGEX = /^([^.]+\[\d+\]\.)+([\w.]+)$/;
                const CollectionWidget = _ui.default.inherit({
                    _activeStateUnit: "." + ITEM_CLASS,
                    _supportedKeys: function() {
                        const move = function(location, e) {
                            if (!(0, _index.isCommandKeyPressed)(e)) {
                                e.preventDefault();
                                e.stopPropagation();
                                this._moveFocus(location, e)
                            }
                        };
                        return (0, _extend.extend)(this.callBase(), {
                            space: function(e) {
                                e.preventDefault();
                                this._enterKeyHandler(e)
                            },
                            enter: this._enterKeyHandler,
                            leftArrow: move.bind(this, "left"),
                            rightArrow: move.bind(this, "right"),
                            upArrow: move.bind(this, "up"),
                            downArrow: move.bind(this, "down"),
                            pageUp: move.bind(this, "up"),
                            pageDown: move.bind(this, "down"),
                            home: move.bind(this, "first"),
                            end: move.bind(this, "last")
                        })
                    },
                    _enterKeyHandler: function(e) {
                        const $itemElement = (0, _renderer.default)(this.option("focusedElement"));
                        if (!$itemElement.length) {
                            return
                        }
                        const itemData = this._getItemData($itemElement);
                        if (null !== itemData && void 0 !== itemData && itemData.onClick) {
                            this._itemEventHandlerByHandler($itemElement, itemData.onClick, {
                                event: e
                            })
                        }
                        this._itemClickHandler((0, _extend.extend)({}, e, {
                            target: $itemElement.get(0),
                            currentTarget: $itemElement.get(0)
                        }))
                    },
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            selectOnFocus: false,
                            loopItemFocus: true,
                            items: [],
                            itemTemplate: "item",
                            onItemRendered: null,
                            onItemClick: null,
                            onItemHold: null,
                            itemHoldTimeout: 750,
                            onItemContextMenu: null,
                            onFocusedItemChanged: null,
                            noDataText: _message.default.format("dxCollectionWidget-noDataText"),
                            encodeNoDataText: false,
                            dataSource: null,
                            _dataController: null,
                            _itemAttributes: {},
                            itemTemplateProperty: "template",
                            focusOnSelectedItem: true,
                            focusedElement: null,
                            displayExpr: void 0,
                            disabledExpr: function(data) {
                                return data ? data.disabled : void 0
                            },
                            visibleExpr: function(data) {
                                return data ? data.visible : void 0
                            }
                        })
                    },
                    _init: function() {
                        this._compileDisplayGetter();
                        this._initDataController();
                        this.callBase();
                        this._cleanRenderedItems();
                        this._refreshDataSource()
                    },
                    _compileDisplayGetter: function() {
                        const displayExpr = this.option("displayExpr");
                        this._displayGetter = displayExpr ? (0, _data.compileGetter)(this.option("displayExpr")) : void 0
                    },
                    _initTemplates: function() {
                        this._initItemsFromMarkup();
                        this._initDefaultItemTemplate();
                        this.callBase()
                    },
                    _getAnonymousTemplateName: function() {
                        return "item"
                    },
                    _initDefaultItemTemplate: function() {
                        const fieldsMap = this._getFieldsMap();
                        this._templateManager.addDefaultTemplates({
                            item: new _bindable_template.BindableTemplate(function($container, data) {
                                if ((0, _type.isPlainObject)(data)) {
                                    this._prepareDefaultItemTemplate(data, $container)
                                } else {
                                    if (fieldsMap && (0, _type.isFunction)(fieldsMap.text)) {
                                        data = fieldsMap.text(data)
                                    }
                                    $container.text(String((0, _common.ensureDefined)(data, "")))
                                }
                            }.bind(this), this._getBindableFields(), this.option("integrationOptions.watchMethod"), fieldsMap)
                        })
                    },
                    _getBindableFields: function() {
                        return ["text", "html"]
                    },
                    _getFieldsMap: function() {
                        if (this._displayGetter) {
                            return {
                                text: this._displayGetter
                            }
                        }
                    },
                    _prepareDefaultItemTemplate: function(data, $container) {
                        if ((0, _type.isDefined)(data.text)) {
                            $container.text(data.text)
                        }
                        if ((0, _type.isDefined)(data.html)) {
                            $container.html(data.html)
                        }
                    },
                    _initItemsFromMarkup: function() {
                        const rawItems = (0, _template_manager.findTemplates)(this.$element(), "dxItem");
                        if (!rawItems.length || this.option("items").length) {
                            return
                        }
                        const items = rawItems.map(_ref => {
                            let {
                                element: element,
                                options: options
                            } = _ref;
                            const isTemplateRequired = /\S/.test(element.innerHTML) && !options.template;
                            if (isTemplateRequired) {
                                options.template = this._prepareItemTemplate(element)
                            } else {
                                (0, _renderer.default)(element).remove()
                            }
                            return options
                        });
                        this.option("items", items)
                    },
                    _prepareItemTemplate: function(item) {
                        const templateId = "tmpl-" + new _guid.default;
                        const $template = (0, _renderer.default)(item).detach().clone().removeAttr("data-options").addClass("dx-template-wrapper");
                        this._saveTemplate(templateId, $template);
                        return templateId
                    },
                    _dataSourceOptions: function() {
                        return {
                            paginate: false
                        }
                    },
                    _cleanRenderedItems: function() {
                        this._renderedItemsCount = 0
                    },
                    _focusTarget: function() {
                        return this.$element()
                    },
                    _focusInHandler: function(e) {
                        this.callBase.apply(this, arguments);
                        if (!this._isFocusTarget(e.target)) {
                            return
                        }
                        const $focusedElement = (0, _renderer.default)(this.option("focusedElement"));
                        if ($focusedElement.length) {
                            this._setFocusedItem($focusedElement)
                        } else {
                            const $activeItem = this._getActiveItem();
                            if ($activeItem.length) {
                                this.option("focusedElement", (0, _element.getPublicElement)($activeItem))
                            }
                        }
                    },
                    _focusOutHandler: function() {
                        this.callBase.apply(this, arguments);
                        const $target = (0, _renderer.default)(this.option("focusedElement"));
                        this._updateFocusedItemState($target, false)
                    },
                    _findActiveTarget($element) {
                        return $element.find(this._activeStateUnit)
                    },
                    _getActiveItem: function(last) {
                        const $focusedElement = (0, _renderer.default)(this.option("focusedElement"));
                        if ($focusedElement.length) {
                            return $focusedElement
                        }
                        let index = this.option("focusOnSelectedItem") ? this.option("selectedIndex") : 0;
                        const activeElements = this._getActiveElement();
                        const lastIndex = activeElements.length - 1;
                        if (index < 0) {
                            index = last ? lastIndex : 0
                        }
                        return activeElements.eq(index)
                    },
                    _moveFocus: function(location) {
                        const $items = this._getAvailableItems();
                        let $newTarget;
                        switch (location) {
                            case "pageup":
                            case "up":
                                $newTarget = this._prevItem($items);
                                break;
                            case "pagedown":
                            case "down":
                                $newTarget = this._nextItem($items);
                                break;
                            case "right":
                                $newTarget = this.option("rtlEnabled") ? this._prevItem($items) : this._nextItem($items);
                                break;
                            case "left":
                                $newTarget = this.option("rtlEnabled") ? this._nextItem($items) : this._prevItem($items);
                                break;
                            case "first":
                                $newTarget = $items.first();
                                break;
                            case "last":
                                $newTarget = $items.last();
                                break;
                            default:
                                return false
                        }
                        if (0 !== $newTarget.length) {
                            this.option("focusedElement", (0, _element.getPublicElement)($newTarget))
                        }
                    },
                    _getVisibleItems: function($itemElements) {
                        $itemElements = $itemElements || this._itemElements();
                        return $itemElements.filter(":visible")
                    },
                    _getAvailableItems: function($itemElements) {
                        return this._getVisibleItems($itemElements)
                    },
                    _prevItem: function($items) {
                        const $target = this._getActiveItem();
                        const targetIndex = $items.index($target);
                        const $last = $items.last();
                        let $item = (0, _renderer.default)($items[targetIndex - 1]);
                        const loop = this.option("loopItemFocus");
                        if (0 === $item.length && loop) {
                            $item = $last
                        }
                        return $item
                    },
                    _nextItem: function($items) {
                        const $target = this._getActiveItem(true);
                        const targetIndex = $items.index($target);
                        const $first = $items.first();
                        let $item = (0, _renderer.default)($items[targetIndex + 1]);
                        const loop = this.option("loopItemFocus");
                        if (0 === $item.length && loop) {
                            $item = $first
                        }
                        return $item
                    },
                    _selectFocusedItem: function($target) {
                        this.selectItem($target)
                    },
                    _updateFocusedItemState: function(target, isFocused, needCleanItemId) {
                        const $target = (0, _renderer.default)(target);
                        if ($target.length) {
                            this._refreshActiveDescendant();
                            this._refreshItemId($target, needCleanItemId);
                            this._toggleFocusClass(isFocused, $target)
                        }
                        this._updateParentActiveDescendant()
                    },
                    _refreshActiveDescendant: function($target) {
                        this.setAria("activedescendant", (0, _type.isDefined)(this.option("focusedElement")) ? this.getFocusedItemId() : null, $target)
                    },
                    _refreshItemId: function($target, needCleanItemId) {
                        if (!needCleanItemId && this.option("focusedElement")) {
                            this.setAria("id", this.getFocusedItemId(), $target)
                        } else {
                            this.setAria("id", null, $target)
                        }
                    },
                    _isDisabled: $element => $element && "true" === (0, _renderer.default)($element).attr("aria-disabled"),
                    _setFocusedItem: function($target) {
                        if (!$target || !$target.length) {
                            return
                        }
                        this._updateFocusedItemState($target, true);
                        this.onFocusedItemChanged(this.getFocusedItemId());
                        const {
                            selectOnFocus: selectOnFocus
                        } = this.option();
                        const isTargetDisabled = this._isDisabled($target);
                        if (selectOnFocus && !isTargetDisabled) {
                            this._selectFocusedItem($target)
                        }
                    },
                    _findItemElementByItem: function(item) {
                        let result = (0, _renderer.default)();
                        const that = this;
                        this.itemElements().each((function() {
                            const $item = (0, _renderer.default)(this);
                            if ($item.data(that._itemDataKey()) === item) {
                                result = $item;
                                return false
                            }
                        }));
                        return result
                    },
                    _getIndexByItem: function(item) {
                        return this.option("items").indexOf(item)
                    },
                    _itemOptionChanged: function(item, property, value, oldValue) {
                        const $item = this._findItemElementByItem(item);
                        if (!$item.length) {
                            return
                        }
                        if (!this.constructor.ItemClass.getInstance($item).setDataField(property, value)) {
                            this._refreshItem($item, item)
                        }
                        const isDisabling = "disabled" === property && value;
                        if (isDisabling) {
                            this._resetItemFocus($item)
                        }
                    },
                    _resetItemFocus($item) {
                        if ($item.is(this.option("focusedElement"))) {
                            this.option("focusedElement", null)
                        }
                    },
                    _refreshItem: function($item) {
                        const itemData = this._getItemData($item);
                        const index = $item.data(this._itemIndexKey());
                        this._renderItem(this._renderedItemsCount + index, itemData, null, $item)
                    },
                    _updateParentActiveDescendant: _common.noop,
                    _optionChanged: function(args) {
                        if ("items" === args.name) {
                            const matches = args.fullName.match(ITEM_PATH_REGEX);
                            if (matches && matches.length) {
                                const property = matches[matches.length - 1];
                                const itemPath = args.fullName.replace("." + property, "");
                                const item = this.option(itemPath);
                                this._itemOptionChanged(item, property, args.value, args.previousValue);
                                return
                            }
                        }
                        switch (args.name) {
                            case "items":
                            case "_itemAttributes":
                            case "itemTemplateProperty":
                            case "useItemTextAsTitle":
                                this._cleanRenderedItems();
                                this._invalidate();
                                break;
                            case "dataSource":
                                this._refreshDataSource();
                                this._renderEmptyMessage();
                                break;
                            case "noDataText":
                            case "encodeNoDataText":
                                this._renderEmptyMessage();
                                break;
                            case "itemTemplate":
                                this._invalidate();
                                break;
                            case "onItemRendered":
                                this._createItemRenderAction();
                                break;
                            case "onItemClick":
                                break;
                            case "onItemHold":
                            case "itemHoldTimeout":
                                this._attachHoldEvent();
                                break;
                            case "onItemContextMenu":
                                this._attachContextMenuEvent();
                                break;
                            case "onFocusedItemChanged":
                                this.onFocusedItemChanged = this._createActionByOption("onFocusedItemChanged");
                                break;
                            case "selectOnFocus":
                            case "loopItemFocus":
                            case "focusOnSelectedItem":
                                break;
                            case "focusedElement":
                                this._updateFocusedItemState(args.previousValue, false, true);
                                this._setFocusedItem((0, _renderer.default)(args.value));
                                break;
                            case "displayExpr":
                                this._compileDisplayGetter();
                                this._initDefaultItemTemplate();
                                this._invalidate();
                                break;
                            case "visibleExpr":
                            case "disabledExpr":
                                this._invalidate();
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _invalidate: function() {
                        this.option("focusedElement", null);
                        return this.callBase.apply(this, arguments)
                    },
                    _loadNextPage: function() {
                        this._expectNextPageLoading();
                        return this._dataController.loadNextPage()
                    },
                    _expectNextPageLoading: function() {
                        this._startIndexForAppendedItems = 0
                    },
                    _expectLastItemLoading: function() {
                        this._startIndexForAppendedItems = -1
                    },
                    _forgetNextPageLoading: function() {
                        this._startIndexForAppendedItems = null
                    },
                    _dataSourceChangedHandler: function(newItems) {
                        const items = this.option("items");
                        if (this._initialized && items && this._shouldAppendItems()) {
                            this._renderedItemsCount = items.length;
                            if (!this._isLastPage() || -1 !== this._startIndexForAppendedItems) {
                                this.option().items = items.concat(newItems.slice(this._startIndexForAppendedItems))
                            }
                            this._forgetNextPageLoading();
                            this._refreshContent()
                        } else {
                            this.option("items", newItems.slice())
                        }
                    },
                    _refreshContent: function() {
                        this._prepareContent();
                        this._renderContent()
                    },
                    _dataSourceLoadErrorHandler: function() {
                        this._forgetNextPageLoading();
                        this.option("items", this.option("items"))
                    },
                    _shouldAppendItems: function() {
                        return null != this._startIndexForAppendedItems && this._allowDynamicItemsAppend()
                    },
                    _allowDynamicItemsAppend: function() {
                        return false
                    },
                    _clean: function() {
                        this._cleanFocusState();
                        this._cleanItemContainer();
                        this._inkRipple && delete this._inkRipple;
                        this._resetActiveState()
                    },
                    _cleanItemContainer: function() {
                        (0, _renderer.default)(this._itemContainer()).empty()
                    },
                    _dispose: function() {
                        this.callBase();
                        clearTimeout(this._itemFocusTimeout)
                    },
                    _refresh: function() {
                        this._cleanRenderedItems();
                        this.callBase.apply(this, arguments)
                    },
                    _itemContainer: function() {
                        return this.$element()
                    },
                    _itemClass: function() {
                        return ITEM_CLASS
                    },
                    _itemContentClass: function() {
                        return this._itemClass() + "-content"
                    },
                    _selectedItemClass: function() {
                        return "dx-item-selected"
                    },
                    _itemResponseWaitClass: function() {
                        return "dx-item-response-wait"
                    },
                    _itemSelector: function() {
                        return "." + this._itemClass()
                    },
                    _itemDataKey: function() {
                        return "dxItemData"
                    },
                    _itemIndexKey: function() {
                        return "dxItemIndex"
                    },
                    _itemElements: function() {
                        return this._itemContainer().find(this._itemSelector())
                    },
                    _initMarkup: function() {
                        this.callBase();
                        this.onFocusedItemChanged = this._createActionByOption("onFocusedItemChanged");
                        this.$element().addClass("dx-collection");
                        this._prepareContent()
                    },
                    _prepareContent: (0, _common.deferRenderer)((function() {
                        this._renderContentImpl()
                    })),
                    _renderContent: function() {
                        this._fireContentReadyAction()
                    },
                    _render: function() {
                        this.callBase();
                        this._attachClickEvent();
                        this._attachHoldEvent();
                        this._attachContextMenuEvent()
                    },
                    _getPointerEvent: () => _pointer.default.down,
                    _attachClickEvent() {
                        const itemSelector = this._itemSelector();
                        const pointerEvent = this._getPointerEvent();
                        const clickEventNamespace = (0, _index.addNamespace)(_click.name, this.NAME);
                        const pointerEventNamespace = (0, _index.addNamespace)(pointerEvent, this.NAME);
                        const pointerAction = new _action.default(args => {
                            const {
                                event: event
                            } = args;
                            this._itemPointerDownHandler(event)
                        });
                        _events_engine.default.off(this._itemContainer(), clickEventNamespace, itemSelector);
                        _events_engine.default.off(this._itemContainer(), pointerEventNamespace, itemSelector);
                        _events_engine.default.on(this._itemContainer(), clickEventNamespace, itemSelector, e => this._itemClickHandler(e));
                        _events_engine.default.on(this._itemContainer(), pointerEventNamespace, itemSelector, e => {
                            pointerAction.execute({
                                element: (0, _renderer.default)(e.target),
                                event: e
                            })
                        })
                    },
                    _itemClickHandler: function(e, args, config) {
                        this._itemDXEventHandler(e, "onItemClick", args, config)
                    },
                    _itemPointerDownHandler: function(e) {
                        if (!this.option("focusStateEnabled")) {
                            return
                        }
                        this._itemFocusHandler = function() {
                            clearTimeout(this._itemFocusTimeout);
                            this._itemFocusHandler = null;
                            if (e.isDefaultPrevented()) {
                                return
                            }
                            const $target = (0, _renderer.default)(e.target);
                            const $closestItem = $target.closest(this._itemElements());
                            const $closestFocusable = this._closestFocusable($target);
                            if ($closestItem.length && this._isFocusTarget(null === $closestFocusable || void 0 === $closestFocusable ? void 0 : $closestFocusable.get(0))) {
                                this.option("focusedElement", (0, _element.getPublicElement)($closestItem))
                            }
                        }.bind(this);
                        this._itemFocusTimeout = setTimeout(this._forcePointerDownFocus.bind(this))
                    },
                    _closestFocusable: function($target) {
                        if ($target.is(_selectors.focusable)) {
                            return $target
                        } else {
                            $target = $target.parent();
                            while ($target.length && !_dom_adapter.default.isDocument($target.get(0)) && !_dom_adapter.default.isDocumentFragment($target.get(0))) {
                                if ($target.is(_selectors.focusable)) {
                                    return $target
                                }
                                $target = $target.parent()
                            }
                        }
                    },
                    _forcePointerDownFocus: function() {
                        this._itemFocusHandler && this._itemFocusHandler()
                    },
                    _updateFocusState: function() {
                        this.callBase.apply(this, arguments);
                        this._forcePointerDownFocus()
                    },
                    _attachHoldEvent: function() {
                        const $itemContainer = this._itemContainer();
                        const itemSelector = this._itemSelector();
                        const eventName = (0, _index.addNamespace)(_hold.default.name, this.NAME);
                        _events_engine.default.off($itemContainer, eventName, itemSelector);
                        _events_engine.default.on($itemContainer, eventName, itemSelector, {
                            timeout: this._getHoldTimeout()
                        }, this._itemHoldHandler.bind(this))
                    },
                    _getHoldTimeout: function() {
                        return this.option("itemHoldTimeout")
                    },
                    _shouldFireHoldEvent: function() {
                        return this.hasActionSubscription("onItemHold")
                    },
                    _itemHoldHandler: function(e) {
                        if (this._shouldFireHoldEvent()) {
                            this._itemDXEventHandler(e, "onItemHold")
                        } else {
                            e.cancel = true
                        }
                    },
                    _attachContextMenuEvent: function() {
                        const $itemContainer = this._itemContainer();
                        const itemSelector = this._itemSelector();
                        const eventName = (0, _index.addNamespace)(_contextmenu.name, this.NAME);
                        _events_engine.default.off($itemContainer, eventName, itemSelector);
                        _events_engine.default.on($itemContainer, eventName, itemSelector, this._itemContextMenuHandler.bind(this))
                    },
                    _shouldFireContextMenuEvent: function() {
                        return this.hasActionSubscription("onItemContextMenu")
                    },
                    _itemContextMenuHandler: function(e) {
                        if (this._shouldFireContextMenuEvent()) {
                            this._itemDXEventHandler(e, "onItemContextMenu")
                        } else {
                            e.cancel = true
                        }
                    },
                    _renderContentImpl: function() {
                        const items = this.option("items") || [];
                        if (this._renderedItemsCount) {
                            this._renderItems(items.slice(this._renderedItemsCount))
                        } else {
                            this._renderItems(items)
                        }
                    },
                    _renderItems: function(items) {
                        if (items.length) {
                            (0, _iterator.each)(items, function(index, itemData) {
                                this._renderItem(this._renderedItemsCount + index, itemData)
                            }.bind(this))
                        }
                        this._renderEmptyMessage()
                    },
                    _getItemsContainer: function() {
                        return this._itemContainer()
                    },
                    _setAttributes($element) {
                        const attributes = _extends({}, this.option("_itemAttributes"));
                        const {
                            class: customClassValue
                        } = attributes;
                        if (customClassValue) {
                            const currentClassValue = $element.get(0).className;
                            attributes.class = [currentClassValue, customClassValue].join(" ")
                        }
                        $element.attr(attributes)
                    },
                    _renderItem: function(index, itemData, $container, $itemToReplace) {
                        var _index$item;
                        const itemIndex = null !== (_index$item = null === index || void 0 === index ? void 0 : index.item) && void 0 !== _index$item ? _index$item : index;
                        $container = $container || this._getItemsContainer();
                        const $itemFrame = this._renderItemFrame(itemIndex, itemData, $container, $itemToReplace);
                        this._setElementData($itemFrame, itemData, itemIndex);
                        this._setAttributes($itemFrame);
                        this._attachItemClickEvent(itemData, $itemFrame);
                        const $itemContent = this._getItemContent($itemFrame);
                        const renderContentPromise = this._renderItemContent({
                            index: itemIndex,
                            itemData: itemData,
                            container: (0, _element.getPublicElement)($itemContent),
                            contentClass: this._itemContentClass(),
                            defaultTemplateName: this.option("itemTemplate")
                        });
                        const that = this;
                        (0, _deferred.when)(renderContentPromise).done((function($itemContent) {
                            that._postprocessRenderItem({
                                itemElement: $itemFrame,
                                itemContent: $itemContent,
                                itemData: itemData,
                                itemIndex: itemIndex
                            });
                            that._executeItemRenderAction(index, itemData, (0, _element.getPublicElement)($itemFrame))
                        }));
                        return $itemFrame
                    },
                    _getItemContent: function($itemFrame) {
                        const $itemContent = $itemFrame.find(".dx-item-content-placeholder");
                        $itemContent.removeClass("dx-item-content-placeholder");
                        return $itemContent
                    },
                    _attachItemClickEvent: function(itemData, $itemElement) {
                        if (!itemData || !itemData.onClick) {
                            return
                        }
                        _events_engine.default.on($itemElement, _click.name, function(e) {
                            this._itemEventHandlerByHandler($itemElement, itemData.onClick, {
                                event: e
                            })
                        }.bind(this))
                    },
                    _renderItemContent: function(args) {
                        const itemTemplateName = this._getItemTemplateName(args);
                        const itemTemplate = this._getTemplate(itemTemplateName);
                        this._addItemContentClasses(args);
                        const $templateResult = (0, _renderer.default)(this._createItemByTemplate(itemTemplate, args));
                        if (!$templateResult.hasClass("dx-template-wrapper")) {
                            return args.container
                        }
                        return this._renderItemContentByNode(args, $templateResult)
                    },
                    _renderItemContentByNode: function(args, $node) {
                        (0, _renderer.default)(args.container).replaceWith($node);
                        args.container = (0, _element.getPublicElement)($node);
                        this._addItemContentClasses(args);
                        return $node
                    },
                    _addItemContentClasses: function(args) {
                        const classes = [ITEM_CLASS + "-content", args.contentClass];
                        (0, _renderer.default)(args.container).addClass(classes.join(" "))
                    },
                    _appendItemToContainer: function($container, $itemFrame, index) {
                        $itemFrame.appendTo($container)
                    },
                    _renderItemFrame: function(index, itemData, $container, $itemToReplace) {
                        const $itemFrame = (0, _renderer.default)("<div>");
                        new this.constructor.ItemClass($itemFrame, this._itemOptions(), itemData || {});
                        if ($itemToReplace && $itemToReplace.length) {
                            $itemToReplace.replaceWith($itemFrame)
                        } else {
                            this._appendItemToContainer.call(this, $container, $itemFrame, index)
                        }
                        if (this.option("useItemTextAsTitle")) {
                            const displayValue = this._displayGetter ? this._displayGetter(itemData) : itemData;
                            $itemFrame.attr("title", displayValue)
                        }
                        return $itemFrame
                    },
                    _itemOptions: function() {
                        const that = this;
                        return {
                            watchMethod: function() {
                                return that.option("integrationOptions.watchMethod")
                            },
                            owner: that,
                            fieldGetter: function(field) {
                                const expr = that.option(field + "Expr");
                                const getter = (0, _data.compileGetter)(expr);
                                return getter
                            }
                        }
                    },
                    _postprocessRenderItem: _common.noop,
                    _executeItemRenderAction: function(index, itemData, itemElement) {
                        this._getItemRenderAction()({
                            itemElement: itemElement,
                            itemIndex: index,
                            itemData: itemData
                        })
                    },
                    _setElementData: function(element, data, index) {
                        element.addClass([ITEM_CLASS, this._itemClass()].join(" ")).data(this._itemDataKey(), data).data(this._itemIndexKey(), index)
                    },
                    _createItemRenderAction: function() {
                        return this._itemRenderAction = this._createActionByOption("onItemRendered", {
                            element: this.element(),
                            excludeValidators: ["disabled", "readOnly"],
                            category: "rendering"
                        })
                    },
                    _getItemRenderAction: function() {
                        return this._itemRenderAction || this._createItemRenderAction()
                    },
                    _getItemTemplateName: function(args) {
                        const data = args.itemData;
                        const templateProperty = args.templateProperty || this.option("itemTemplateProperty");
                        const template = data && data[templateProperty];
                        return template || args.defaultTemplateName
                    },
                    _createItemByTemplate: function(itemTemplate, renderArgs) {
                        return itemTemplate.render({
                            model: renderArgs.itemData,
                            container: renderArgs.container,
                            index: renderArgs.index,
                            onRendered: this._onItemTemplateRendered(itemTemplate, renderArgs)
                        })
                    },
                    _onItemTemplateRendered: function() {
                        return _common.noop
                    },
                    _emptyMessageContainer: function() {
                        return this._itemContainer()
                    },
                    _renderEmptyMessage: function(items) {
                        items = items || this.option("items");
                        const noDataText = this.option("noDataText");
                        const hideNoData = !noDataText || items && items.length || this._dataController.isLoading();
                        if (hideNoData && this._$noData) {
                            this._$noData.remove();
                            this._$noData = null;
                            this.setAria("label", void 0)
                        }
                        if (!hideNoData) {
                            this._$noData = this._$noData || (0, _renderer.default)("<div>").addClass("dx-empty-message");
                            this._$noData.appendTo(this._emptyMessageContainer());
                            if (this.option("encodeNoDataText")) {
                                this._$noData.text(noDataText)
                            } else {
                                this._$noData.html(noDataText)
                            }
                        }
                        this.$element().toggleClass("dx-empty-collection", !hideNoData)
                    },
                    _itemDXEventHandler: function(dxEvent, handlerOptionName, actionArgs, actionConfig) {
                        this._itemEventHandler(dxEvent.target, handlerOptionName, (0, _extend.extend)(actionArgs, {
                            event: dxEvent
                        }), actionConfig)
                    },
                    _itemEventHandler: function(initiator, handlerOptionName, actionArgs, actionConfig) {
                        const action = this._createActionByOption(handlerOptionName, (0, _extend.extend)({
                            validatingTargetName: "itemElement"
                        }, actionConfig));
                        return this._itemEventHandlerImpl(initiator, action, actionArgs)
                    },
                    _itemEventHandlerByHandler: function(initiator, handler, actionArgs, actionConfig) {
                        const action = this._createAction(handler, (0, _extend.extend)({
                            validatingTargetName: "itemElement"
                        }, actionConfig));
                        return this._itemEventHandlerImpl(initiator, action, actionArgs)
                    },
                    _itemEventHandlerImpl: function(initiator, action, actionArgs) {
                        const $itemElement = this._closestItemElement((0, _renderer.default)(initiator));
                        const args = (0, _extend.extend)({}, actionArgs);
                        return action((0, _extend.extend)(actionArgs, this._extendActionArgs($itemElement), args))
                    },
                    _extendActionArgs: function($itemElement) {
                        return {
                            itemElement: (0, _element.getPublicElement)($itemElement),
                            itemIndex: this._itemElements().index($itemElement),
                            itemData: this._getItemData($itemElement)
                        }
                    },
                    _closestItemElement: function($element) {
                        return (0, _renderer.default)($element).closest(this._itemSelector())
                    },
                    _getItemData: function(itemElement) {
                        return (0, _renderer.default)(itemElement).data(this._itemDataKey())
                    },
                    _getSummaryItemsSize(dimension, items, includeMargin) {
                        let result = 0;
                        if (items) {
                            (0, _iterator.each)(items, (function(_, item) {
                                if ("width" === dimension) {
                                    result += (0, _size.getOuterWidth)(item, includeMargin || false)
                                } else if ("height" === dimension) {
                                    result += (0, _size.getOuterHeight)(item, includeMargin || false)
                                }
                            }))
                        }
                        return result
                    },
                    getFocusedItemId: function() {
                        if (!this._focusedItemId) {
                            this._focusedItemId = "dx-" + new _guid.default
                        }
                        return this._focusedItemId
                    },
                    itemElements: function() {
                        return this._itemElements()
                    },
                    itemsContainer: function() {
                        return this._itemContainer()
                    }
                }).include(_data_helper.default);
                CollectionWidget.ItemClass = _item.default;
                var _default = CollectionWidget;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        11050:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/collection/ui.collection_widget.edit.js ***!
              \****************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _uiCollection_widget = _interopRequireDefault(__webpack_require__( /*! ./ui.collection_widget.base */ 19982));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.errors */ 96688));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _uiCollection_widgetEditStrategy = _interopRequireDefault(__webpack_require__( /*! ./ui.collection_widget.edit.strategy.plain */ 14174));
                var _data = __webpack_require__( /*! ../../core/utils/data */ 47617);
                var _data_source = __webpack_require__( /*! ../../data/data_source/data_source */ 85273);
                var _utils = __webpack_require__( /*! ../../data/data_source/utils */ 9234);
                var _selection = _interopRequireDefault(__webpack_require__( /*! ../selection/selection */ 68198));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const indexExists = function(index) {
                    return -1 !== index
                };
                const CollectionWidget = _uiCollection_widget.default.inherit({
                    _setOptionsByReference: function() {
                        this.callBase();
                        (0, _extend.extend)(this._optionsByReference, {
                            selectedItem: true
                        })
                    },
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            selectionMode: "none",
                            selectionRequired: false,
                            selectByClick: true,
                            selectedItems: [],
                            selectedItemKeys: [],
                            maxFilterLengthInRequest: 1500,
                            keyExpr: null,
                            selectedIndex: -1,
                            selectedItem: null,
                            onSelectionChanged: null,
                            onItemReordered: null,
                            onItemDeleting: null,
                            onItemDeleted: null
                        })
                    },
                    ctor: function(element, options) {
                        this._userOptions = options || {};
                        this.callBase(element, options)
                    },
                    _init: function() {
                        this._initEditStrategy();
                        this.callBase();
                        this._initKeyGetter();
                        this._initSelectionModule()
                    },
                    _initKeyGetter: function() {
                        this._keyGetter = (0, _data.compileGetter)(this.option("keyExpr"))
                    },
                    _getKeysByItems: function(selectedItems) {
                        return this._editStrategy.getKeysByItems(selectedItems)
                    },
                    _getItemsByKeys: function(selectedItemKeys, selectedItems) {
                        return this._editStrategy.getItemsByKeys(selectedItemKeys, selectedItems)
                    },
                    _getKeyByIndex: function(index) {
                        return this._editStrategy.getKeyByIndex(index)
                    },
                    _getIndexByKey: function(key) {
                        return this._editStrategy.getIndexByKey(key)
                    },
                    _getIndexByItemData: function(itemData) {
                        return this._editStrategy.getIndexByItemData(itemData)
                    },
                    _isKeySpecified: function() {
                        return !!this._dataController.key()
                    },
                    _getCombinedFilter: function() {
                        return this._dataController.filter()
                    },
                    key: function() {
                        if (this.option("keyExpr")) {
                            return this.option("keyExpr")
                        }
                        return this._dataController.key()
                    },
                    keyOf: function(item) {
                        let key = item;
                        if (this.option("keyExpr")) {
                            key = this._keyGetter(item)
                        } else if (this._dataController.store()) {
                            key = this._dataController.keyOf(item)
                        }
                        return key
                    },
                    _nullValueSelectionSupported: function() {
                        return false
                    },
                    _initSelectionModule: function() {
                        const that = this;
                        const itemsGetter = that._editStrategy.itemsGetter;
                        this._selection = new _selection.default({
                            allowNullValue: this._nullValueSelectionSupported(),
                            mode: this.option("selectionMode"),
                            maxFilterLengthInRequest: this.option("maxFilterLengthInRequest"),
                            equalByReference: !this._isKeySpecified(),
                            onSelectionChanged: function(args) {
                                if (args.addedItemKeys.length || args.removedItemKeys.length) {
                                    that.option("selectedItems", that._getItemsByKeys(args.selectedItemKeys, args.selectedItems));
                                    that._updateSelectedItems(args)
                                }
                            },
                            filter: that._getCombinedFilter.bind(that),
                            totalCount: function() {
                                const items = that.option("items");
                                const totalCount = that._dataController.totalCount();
                                return totalCount >= 0 ? totalCount : that._getItemsCount(items)
                            },
                            key: that.key.bind(that),
                            keyOf: that.keyOf.bind(that),
                            load: function(options) {
                                var _dataController$loadO;
                                const dataController = that._dataController;
                                options.customQueryParams = null === (_dataController$loadO = dataController.loadOptions()) || void 0 === _dataController$loadO ? void 0 : _dataController$loadO.customQueryParams;
                                options.userData = dataController.userData();
                                if (dataController.store()) {
                                    return dataController.loadFromStore(options).done((function(loadResult) {
                                        if (that._disposed) {
                                            return
                                        }
                                        const items = (0, _utils.normalizeLoadResult)(loadResult).data;
                                        dataController.applyMapFunction(items)
                                    }))
                                } else {
                                    return (new _deferred.Deferred).resolve(this.plainItems())
                                }
                            },
                            dataFields: function() {
                                return that._dataController.select()
                            },
                            plainItems: itemsGetter.bind(that._editStrategy)
                        })
                    },
                    _getItemsCount: function(items) {
                        return items.reduce((itemsCount, item) => itemsCount + (item.items ? this._getItemsCount(item.items) : 1), 0)
                    },
                    _initEditStrategy: function() {
                        const Strategy = _uiCollection_widgetEditStrategy.default;
                        this._editStrategy = new Strategy(this)
                    },
                    _getSelectedItemIndices: function(keys) {
                        const that = this;
                        const indices = [];
                        keys = keys || this._selection.getSelectedItemKeys();
                        that._editStrategy.beginCache();
                        (0, _iterator.each)(keys, (function(_, key) {
                            const selectedIndex = that._getIndexByKey(key);
                            if (indexExists(selectedIndex)) {
                                indices.push(selectedIndex)
                            }
                        }));
                        that._editStrategy.endCache();
                        return indices
                    },
                    _initMarkup: function() {
                        this._rendering = true;
                        if (!this._dataController.isLoading()) {
                            this._syncSelectionOptions().done(() => this._normalizeSelectedItems())
                        }
                        this.callBase()
                    },
                    _render: function() {
                        this.callBase();
                        this._rendering = false
                    },
                    _fireContentReadyAction: function() {
                        this._rendering = false;
                        this._rendered = true;
                        this.callBase.apply(this, arguments)
                    },
                    _syncSelectionOptions: function(byOption) {
                        byOption = byOption || this._chooseSelectOption();
                        let selectedItem;
                        let selectedIndex;
                        let selectedItemKeys;
                        let selectedItems;
                        switch (byOption) {
                            case "selectedIndex":
                                selectedItem = this._editStrategy.getItemDataByIndex(this.option("selectedIndex"));
                                if ((0, _type.isDefined)(selectedItem)) {
                                    this._setOptionWithoutOptionChange("selectedItems", [selectedItem]);
                                    this._setOptionWithoutOptionChange("selectedItem", selectedItem);
                                    this._setOptionWithoutOptionChange("selectedItemKeys", this._editStrategy.getKeysByItems([selectedItem]))
                                } else {
                                    this._setOptionWithoutOptionChange("selectedItems", []);
                                    this._setOptionWithoutOptionChange("selectedItemKeys", []);
                                    this._setOptionWithoutOptionChange("selectedItem", null)
                                }
                                break;
                            case "selectedItems":
                                selectedItems = this.option("selectedItems") || [];
                                selectedIndex = selectedItems.length ? this._editStrategy.getIndexByItemData(selectedItems[0]) : -1;
                                if (this.option("selectionRequired") && !indexExists(selectedIndex)) {
                                    return this._syncSelectionOptions("selectedIndex")
                                }
                                this._setOptionWithoutOptionChange("selectedItem", selectedItems[0]);
                                this._setOptionWithoutOptionChange("selectedIndex", selectedIndex);
                                this._setOptionWithoutOptionChange("selectedItemKeys", this._editStrategy.getKeysByItems(selectedItems));
                                break;
                            case "selectedItem":
                                selectedItem = this.option("selectedItem");
                                selectedIndex = this._editStrategy.getIndexByItemData(selectedItem);
                                if (this.option("selectionRequired") && !indexExists(selectedIndex)) {
                                    return this._syncSelectionOptions("selectedIndex")
                                }
                                if ((0, _type.isDefined)(selectedItem)) {
                                    this._setOptionWithoutOptionChange("selectedItems", [selectedItem]);
                                    this._setOptionWithoutOptionChange("selectedIndex", selectedIndex);
                                    this._setOptionWithoutOptionChange("selectedItemKeys", this._editStrategy.getKeysByItems([selectedItem]))
                                } else {
                                    this._setOptionWithoutOptionChange("selectedItems", []);
                                    this._setOptionWithoutOptionChange("selectedItemKeys", []);
                                    this._setOptionWithoutOptionChange("selectedIndex", -1)
                                }
                                break;
                            case "selectedItemKeys":
                                selectedItemKeys = this.option("selectedItemKeys");
                                if (this.option("selectionRequired")) {
                                    const selectedItemIndex = this._getIndexByKey(selectedItemKeys[0]);
                                    if (!indexExists(selectedItemIndex)) {
                                        return this._syncSelectionOptions("selectedIndex")
                                    }
                                }
                                return this._selection.setSelection(selectedItemKeys)
                        }
                        return (new _deferred.Deferred).resolve().promise()
                    },
                    _chooseSelectOption: function() {
                        let optionName = "selectedIndex";
                        const isOptionDefined = function(optionName) {
                            const optionValue = this.option(optionName);
                            const length = (0, _type.isDefined)(optionValue) && optionValue.length;
                            return length || optionName in this._userOptions
                        }.bind(this);
                        if (isOptionDefined("selectedItems")) {
                            optionName = "selectedItems"
                        } else if (isOptionDefined("selectedItem")) {
                            optionName = "selectedItem"
                        } else if (isOptionDefined("selectedItemKeys")) {
                            optionName = "selectedItemKeys"
                        }
                        return optionName
                    },
                    _compareKeys: function(oldKeys, newKeys) {
                        if (oldKeys.length !== newKeys.length) {
                            return false
                        }
                        for (let i = 0; i < newKeys.length; i++) {
                            if (oldKeys[i] !== newKeys[i]) {
                                return false
                            }
                        }
                        return true
                    },
                    _normalizeSelectedItems: function() {
                        if ("none" === this.option("selectionMode")) {
                            this._setOptionWithoutOptionChange("selectedItems", []);
                            this._syncSelectionOptions("selectedItems")
                        } else if ("single" === this.option("selectionMode")) {
                            const newSelection = this.option("selectedItems");
                            if (newSelection.length > 1 || !newSelection.length && this.option("selectionRequired") && this.option("items") && this.option("items").length) {
                                const currentSelection = this._selection.getSelectedItems();
                                let normalizedSelection = void 0 === newSelection[0] ? currentSelection[0] : newSelection[0];
                                if (void 0 === normalizedSelection) {
                                    normalizedSelection = this._editStrategy.itemsGetter()[0]
                                }
                                if (this.option("grouped") && normalizedSelection && normalizedSelection.items) {
                                    normalizedSelection.items = [normalizedSelection.items[0]]
                                }
                                this._selection.setSelection(this._getKeysByItems([normalizedSelection]));
                                this._setOptionWithoutOptionChange("selectedItems", [normalizedSelection]);
                                return this._syncSelectionOptions("selectedItems")
                            } else {
                                this._selection.setSelection(this._getKeysByItems(newSelection))
                            }
                        } else {
                            const newKeys = this._getKeysByItems(this.option("selectedItems"));
                            const oldKeys = this._selection.getSelectedItemKeys();
                            if (!this._compareKeys(oldKeys, newKeys)) {
                                this._selection.setSelection(newKeys)
                            }
                        }
                        return (new _deferred.Deferred).resolve().promise()
                    },
                    _itemClickHandler: function(e) {
                        let itemSelectPromise = (new _deferred.Deferred).resolve();
                        const callBase = this.callBase;
                        this._createAction(function(e) {
                            var _this$_itemSelectHand;
                            itemSelectPromise = null !== (_this$_itemSelectHand = this._itemSelectHandler(e.event)) && void 0 !== _this$_itemSelectHand ? _this$_itemSelectHand : itemSelectPromise
                        }.bind(this), {
                            validatingTargetName: "itemElement"
                        })({
                            itemElement: (0, _renderer.default)(e.currentTarget),
                            event: e
                        });
                        itemSelectPromise.always(() => {
                            callBase.apply(this, arguments)
                        })
                    },
                    _itemSelectHandler: function(e) {
                        var _itemSelectPromise;
                        let itemSelectPromise;
                        if (!this.option("selectByClick")) {
                            return
                        }
                        const $itemElement = e.currentTarget;
                        if (this.isItemSelected($itemElement)) {
                            this.unselectItem(e.currentTarget)
                        } else {
                            itemSelectPromise = this.selectItem(e.currentTarget)
                        }
                        return null === (_itemSelectPromise = itemSelectPromise) || void 0 === _itemSelectPromise ? void 0 : _itemSelectPromise.promise()
                    },
                    _selectedItemElement: function(index) {
                        return this._itemElements().eq(index)
                    },
                    _postprocessRenderItem: function(args) {
                        if ("none" !== this.option("selectionMode")) {
                            const $itemElement = (0, _renderer.default)(args.itemElement);
                            const normalizedItemIndex = this._editStrategy.getNormalizedIndex($itemElement);
                            const isItemSelected = this._isItemSelected(normalizedItemIndex);
                            this._processSelectableItem($itemElement, isItemSelected)
                        }
                    },
                    _processSelectableItem: function($itemElement, isSelected) {
                        $itemElement.toggleClass(this._selectedItemClass(), isSelected);
                        this._setAriaSelectionAttribute($itemElement, String(isSelected))
                    },
                    _updateSelectedItems: function(args) {
                        const that = this;
                        const addedItemKeys = args.addedItemKeys;
                        const removedItemKeys = args.removedItemKeys;
                        if (that._rendered && (addedItemKeys.length || removedItemKeys.length)) {
                            const selectionChangePromise = that._selectionChangePromise;
                            if (!that._rendering) {
                                const addedSelection = [];
                                let normalizedIndex;
                                const removedSelection = [];
                                that._editStrategy.beginCache();
                                for (let i = 0; i < addedItemKeys.length; i++) {
                                    normalizedIndex = that._getIndexByKey(addedItemKeys[i]);
                                    addedSelection.push(normalizedIndex);
                                    that._addSelection(normalizedIndex)
                                }
                                for (let i = 0; i < removedItemKeys.length; i++) {
                                    normalizedIndex = that._getIndexByKey(removedItemKeys[i]);
                                    removedSelection.push(normalizedIndex);
                                    that._removeSelection(normalizedIndex)
                                }
                                that._editStrategy.endCache();
                                that._updateSelection(addedSelection, removedSelection)
                            }(0, _deferred.when)(selectionChangePromise).done((function() {
                                that._fireSelectionChangeEvent(args.addedItems, args.removedItems)
                            }))
                        }
                    },
                    _fireSelectionChangeEvent: function(addedItems, removedItems) {
                        this._createActionByOption("onSelectionChanged", {
                            excludeValidators: ["disabled", "readOnly"]
                        })({
                            addedItems: addedItems,
                            removedItems: removedItems
                        })
                    },
                    _updateSelection: _common.noop,
                    _setAriaSelectionAttribute: function($target, value) {
                        this.setAria("selected", value, $target)
                    },
                    _removeSelection: function(normalizedIndex) {
                        const $itemElement = this._editStrategy.getItemElement(normalizedIndex);
                        if (indexExists(normalizedIndex)) {
                            this._processSelectableItem($itemElement, false);
                            _events_engine.default.triggerHandler($itemElement, "stateChanged", false)
                        }
                    },
                    _addSelection: function(normalizedIndex) {
                        const $itemElement = this._editStrategy.getItemElement(normalizedIndex);
                        if (indexExists(normalizedIndex)) {
                            this._processSelectableItem($itemElement, true);
                            _events_engine.default.triggerHandler($itemElement, "stateChanged", true)
                        }
                    },
                    _isItemSelected: function(index) {
                        const key = this._getKeyByIndex(index);
                        return this._selection.isItemSelected(key, {
                            checkPending: true
                        })
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "selectionMode":
                                this._invalidate();
                                break;
                            case "dataSource":
                                if (!args.value || Array.isArray(args.value) && !args.value.length) {
                                    this.option("selectedItemKeys", [])
                                }
                                this.callBase(args);
                                break;
                            case "selectedIndex":
                            case "selectedItem":
                            case "selectedItems":
                            case "selectedItemKeys":
                                this._syncSelectionOptions(args.name).done(() => this._normalizeSelectedItems());
                                break;
                            case "keyExpr":
                                this._initKeyGetter();
                                break;
                            case "selectionRequired":
                                this._normalizeSelectedItems();
                                break;
                            case "selectByClick":
                            case "onSelectionChanged":
                            case "onItemDeleting":
                            case "onItemDeleted":
                            case "onItemReordered":
                            case "maxFilterLengthInRequest":
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _clearSelectedItems: function() {
                        this._setOptionWithoutOptionChange("selectedItems", []);
                        this._syncSelectionOptions("selectedItems")
                    },
                    _waitDeletingPrepare: function($itemElement) {
                        if ($itemElement.data("dxItemDeleting")) {
                            return (new _deferred.Deferred).resolve().promise()
                        }
                        $itemElement.data("dxItemDeleting", true);
                        const deferred = new _deferred.Deferred;
                        const deletingActionArgs = {
                            cancel: false
                        };
                        const deletePromise = this._itemEventHandler($itemElement, "onItemDeleting", deletingActionArgs, {
                            excludeValidators: ["disabled", "readOnly"]
                        });
                        (0, _deferred.when)(deletePromise).always(function(value) {
                            const deletePromiseExists = !deletePromise;
                            const deletePromiseResolved = !deletePromiseExists && "resolved" === deletePromise.state();
                            const argumentsSpecified = !!arguments.length;
                            const shouldDelete = deletePromiseExists || deletePromiseResolved && !argumentsSpecified || deletePromiseResolved && value;
                            (0, _deferred.when)((0, _deferred.fromPromise)(deletingActionArgs.cancel)).always((function() {
                                $itemElement.data("dxItemDeleting", false)
                            })).done((function(cancel) {
                                shouldDelete && !cancel ? deferred.resolve() : deferred.reject()
                            })).fail(deferred.reject)
                        }.bind(this));
                        return deferred.promise()
                    },
                    _deleteItemFromDS: function($item) {
                        const dataController = this._dataController;
                        const deferred = new _deferred.Deferred;
                        const disabledState = this.option("disabled");
                        const dataStore = dataController.store();
                        if (!dataStore) {
                            return (new _deferred.Deferred).resolve().promise()
                        }
                        if (!dataStore.remove) {
                            throw _ui.default.Error("E1011")
                        }
                        this.option("disabled", true);
                        dataStore.remove(dataController.keyOf(this._getItemData($item))).done((function(key) {
                            if (void 0 !== key) {
                                deferred.resolve()
                            } else {
                                deferred.reject()
                            }
                        })).fail((function() {
                            deferred.reject()
                        }));
                        deferred.always(function() {
                            this.option("disabled", disabledState)
                        }.bind(this));
                        return deferred
                    },
                    _tryRefreshLastPage: function() {
                        const deferred = new _deferred.Deferred;
                        if (this._isLastPage() || this.option("grouped")) {
                            deferred.resolve()
                        } else {
                            this._refreshLastPage().done((function() {
                                deferred.resolve()
                            }))
                        }
                        return deferred.promise()
                    },
                    _refreshLastPage: function() {
                        this._expectLastItemLoading();
                        return this._dataController.load()
                    },
                    _updateSelectionAfterDelete: function(index) {
                        const key = this._getKeyByIndex(index);
                        this._selection.deselect([key])
                    },
                    _updateIndicesAfterIndex: function(index) {
                        const itemElements = this._itemElements();
                        for (let i = index + 1; i < itemElements.length; i++) {
                            (0, _renderer.default)(itemElements[i]).data(this._itemIndexKey(), i - 1)
                        }
                    },
                    _simulateOptionChange: function(optionName) {
                        const optionValue = this.option(optionName);
                        if (optionValue instanceof _data_source.DataSource) {
                            return
                        }
                        this._optionChangedAction({
                            name: optionName,
                            fullName: optionName,
                            value: optionValue
                        })
                    },
                    isItemSelected: function(itemElement) {
                        return this._isItemSelected(this._editStrategy.getNormalizedIndex(itemElement))
                    },
                    selectItem: function(itemElement) {
                        if ("none" === this.option("selectionMode")) {
                            return
                        }
                        const itemIndex = this._editStrategy.getNormalizedIndex(itemElement);
                        if (!indexExists(itemIndex)) {
                            return
                        }
                        const key = this._getKeyByIndex(itemIndex);
                        if (this._selection.isItemSelected(key)) {
                            return
                        }
                        if ("single" === this.option("selectionMode")) {
                            return this._selection.setSelection([key])
                        } else {
                            const selectedItemKeys = this.option("selectedItemKeys") || [];
                            return this._selection.setSelection([...selectedItemKeys, key], [key])
                        }
                    },
                    unselectItem: function(itemElement) {
                        const itemIndex = this._editStrategy.getNormalizedIndex(itemElement);
                        if (!indexExists(itemIndex)) {
                            return
                        }
                        const selectedItemKeys = this._selection.getSelectedItemKeys();
                        if (this.option("selectionRequired") && selectedItemKeys.length <= 1) {
                            return
                        }
                        const key = this._getKeyByIndex(itemIndex);
                        if (!this._selection.isItemSelected(key, {
                                checkPending: true
                            })) {
                            return
                        }
                        this._selection.deselect([key])
                    },
                    _deleteItemElementByIndex: function(index) {
                        this._updateSelectionAfterDelete(index);
                        this._updateIndicesAfterIndex(index);
                        this._editStrategy.deleteItemAtIndex(index)
                    },
                    _afterItemElementDeleted: function($item, deletedActionArgs) {
                        const changingOption = this._dataController.getDataSource() ? "dataSource" : "items";
                        this._simulateOptionChange(changingOption);
                        this._itemEventHandler($item, "onItemDeleted", deletedActionArgs, {
                            beforeExecute: function() {
                                $item.remove()
                            },
                            excludeValidators: ["disabled", "readOnly"]
                        });
                        this._renderEmptyMessage()
                    },
                    deleteItem: function(itemElement) {
                        const that = this;
                        const deferred = new _deferred.Deferred;
                        const $item = this._editStrategy.getItemElement(itemElement);
                        const index = this._editStrategy.getNormalizedIndex(itemElement);
                        const itemResponseWaitClass = this._itemResponseWaitClass();
                        if (indexExists(index)) {
                            this._waitDeletingPrepare($item).done((function() {
                                $item.addClass(itemResponseWaitClass);
                                const deletedActionArgs = that._extendActionArgs($item);
                                that._deleteItemFromDS($item).done((function() {
                                    that._deleteItemElementByIndex(index);
                                    that._afterItemElementDeleted($item, deletedActionArgs);
                                    that._tryRefreshLastPage().done((function() {
                                        deferred.resolveWith(that)
                                    }))
                                })).fail((function() {
                                    $item.removeClass(itemResponseWaitClass);
                                    deferred.rejectWith(that)
                                }))
                            })).fail((function() {
                                deferred.rejectWith(that)
                            }))
                        } else {
                            deferred.rejectWith(that)
                        }
                        return deferred.promise()
                    },
                    reorderItem: function(itemElement, toItemElement) {
                        const deferred = new _deferred.Deferred;
                        const that = this;
                        const strategy = this._editStrategy;
                        const $movingItem = strategy.getItemElement(itemElement);
                        const $destinationItem = strategy.getItemElement(toItemElement);
                        const movingIndex = strategy.getNormalizedIndex(itemElement);
                        const destinationIndex = strategy.getNormalizedIndex(toItemElement);
                        const changingOption = this._dataController.getDataSource() ? "dataSource" : "items";
                        const canMoveItems = indexExists(movingIndex) && indexExists(destinationIndex) && movingIndex !== destinationIndex;
                        if (canMoveItems) {
                            deferred.resolveWith(this)
                        } else {
                            deferred.rejectWith(this)
                        }
                        return deferred.promise().done((function() {
                            $destinationItem[strategy.itemPlacementFunc(movingIndex, destinationIndex)]($movingItem);
                            strategy.moveItemAtIndexToIndex(movingIndex, destinationIndex);
                            this._updateIndicesAfterIndex(movingIndex);
                            that.option("selectedItems", that._getItemsByKeys(that._selection.getSelectedItemKeys(), that._selection.getSelectedItems()));
                            if ("items" === changingOption) {
                                that._simulateOptionChange(changingOption)
                            }
                            that._itemEventHandler($movingItem, "onItemReordered", {
                                fromIndex: strategy.getIndex(movingIndex),
                                toIndex: strategy.getIndex(destinationIndex)
                            }, {
                                excludeValidators: ["disabled", "readOnly"]
                            })
                        }))
                    }
                });
                var _default = CollectionWidget;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        41042:
            /*!*************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/collection/ui.collection_widget.edit.strategy.js ***!
              \*************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 38377));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const abstract = _class.default.abstract;
                const EditStrategy = _class.default.inherit({
                    ctor: function(collectionWidget) {
                        this._collectionWidget = collectionWidget
                    },
                    getIndexByItemData: abstract,
                    getItemDataByIndex: abstract,
                    getKeysByItems: abstract,
                    getItemsByKeys: abstract,
                    itemsGetter: abstract,
                    getKeyByIndex: function(index) {
                        const resultIndex = this._denormalizeItemIndex(index);
                        return this.getKeysByItems([this.getItemDataByIndex(resultIndex)])[0]
                    },
                    _equalKeys: function(key1, key2) {
                        if (this._collectionWidget._isKeySpecified()) {
                            return (0, _common.equalByValue)(key1, key2)
                        } else {
                            return key1 === key2
                        }
                    },
                    beginCache: function() {
                        this._cache = {}
                    },
                    endCache: function() {
                        this._cache = null
                    },
                    getIndexByKey: abstract,
                    getNormalizedIndex: function(value) {
                        if (this._isNormalizedItemIndex(value)) {
                            return value
                        }
                        if (this._isItemIndex(value)) {
                            return this._normalizeItemIndex(value)
                        }
                        if (this._isNode(value)) {
                            return this._getNormalizedItemIndex(value)
                        }
                        return this._normalizeItemIndex(this.getIndexByItemData(value))
                    },
                    getIndex: function(value) {
                        if (this._isNormalizedItemIndex(value)) {
                            return this._denormalizeItemIndex(value)
                        }
                        if (this._isItemIndex(value)) {
                            return value
                        }
                        if (this._isNode(value)) {
                            return this._denormalizeItemIndex(this._getNormalizedItemIndex(value))
                        }
                        return this.getIndexByItemData(value)
                    },
                    getItemElement: function(value) {
                        if (this._isNormalizedItemIndex(value)) {
                            return this._getItemByNormalizedIndex(value)
                        }
                        if (this._isItemIndex(value)) {
                            return this._getItemByNormalizedIndex(this._normalizeItemIndex(value))
                        }
                        if (this._isNode(value)) {
                            return (0, _renderer.default)(value)
                        }
                        const normalizedItemIndex = this._normalizeItemIndex(this.getIndexByItemData(value));
                        return this._getItemByNormalizedIndex(normalizedItemIndex)
                    },
                    _isNode: el => _dom_adapter.default.isNode(el && (0, _type.isRenderer)(el) ? el.get(0) : el),
                    deleteItemAtIndex: abstract,
                    itemPlacementFunc: function(movingIndex, destinationIndex) {
                        return this._itemsFromSameParent(movingIndex, destinationIndex) && movingIndex < destinationIndex ? "after" : "before"
                    },
                    moveItemAtIndexToIndex: abstract,
                    _isNormalizedItemIndex: function(index) {
                        return "number" === typeof index && Math.round(index) === index
                    },
                    _isItemIndex: abstract,
                    _getNormalizedItemIndex: abstract,
                    _normalizeItemIndex: abstract,
                    _denormalizeItemIndex: abstract,
                    _getItemByNormalizedIndex: abstract,
                    _itemsFromSameParent: abstract
                });
                var _default = EditStrategy;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        14174:
            /*!*******************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/collection/ui.collection_widget.edit.strategy.plain.js ***!
              \*******************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _uiCollection_widgetEdit = (obj = __webpack_require__( /*! ./ui.collection_widget.edit.strategy */ 41042), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const PlainEditStrategy = _uiCollection_widgetEdit.default.inherit({
                    _getPlainItems: function() {
                        return this._collectionWidget.option("items") || []
                    },
                    getIndexByItemData: function(itemData) {
                        const keyOf = this._collectionWidget.keyOf.bind(this._collectionWidget);
                        if (keyOf) {
                            return this.getIndexByKey(keyOf(itemData))
                        } else {
                            return this._getPlainItems().indexOf(itemData)
                        }
                    },
                    getItemDataByIndex: function(index) {
                        return this._getPlainItems()[index]
                    },
                    deleteItemAtIndex: function(index) {
                        this._getPlainItems().splice(index, 1)
                    },
                    itemsGetter: function() {
                        return this._getPlainItems()
                    },
                    getKeysByItems: function(items) {
                        const keyOf = this._collectionWidget.keyOf.bind(this._collectionWidget);
                        let result = items;
                        if (keyOf) {
                            result = [];
                            for (let i = 0; i < items.length; i++) {
                                result.push(keyOf(items[i]))
                            }
                        }
                        return result
                    },
                    getIndexByKey: function(key) {
                        const cache = this._cache;
                        const keys = cache && cache.keys || this.getKeysByItems(this._getPlainItems());
                        if (cache && !cache.keys) {
                            cache.keys = keys
                        }
                        if ("object" === typeof key) {
                            for (let i = 0, length = keys.length; i < length; i++) {
                                if (this._equalKeys(key, keys[i])) {
                                    return i
                                }
                            }
                        } else {
                            return keys.indexOf(key)
                        }
                        return -1
                    },
                    getItemsByKeys: function(keys, items) {
                        return (items || keys).slice()
                    },
                    moveItemAtIndexToIndex: function(movingIndex, destinationIndex) {
                        const items = this._getPlainItems();
                        const movedItemData = items[movingIndex];
                        items.splice(movingIndex, 1);
                        items.splice(destinationIndex, 0, movedItemData)
                    },
                    _isItemIndex: function(index) {
                        return "number" === typeof index && Math.round(index) === index
                    },
                    _getNormalizedItemIndex: function(itemElement) {
                        return this._collectionWidget._itemElements().index(itemElement)
                    },
                    _normalizeItemIndex: function(index) {
                        return index
                    },
                    _denormalizeItemIndex: function(index) {
                        return index
                    },
                    _getItemByNormalizedIndex: function(index) {
                        return index > -1 ? this._collectionWidget._itemElements().eq(index) : null
                    },
                    _itemsFromSameParent: function() {
                        return true
                    }
                });
                var _default = PlainEditStrategy;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        69010:
            /*!***********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/collection/ui.collection_widget.live_update.js ***!
              \***********************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _uiCollection_widget = _interopRequireDefault(__webpack_require__( /*! ./ui.collection_widget.edit */ 11050));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _array_utils = __webpack_require__( /*! ../../data/array_utils */ 60637);
                var _utils = __webpack_require__( /*! ../../data/utils */ 16454);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _array_compare = __webpack_require__( /*! ../../core/utils/array_compare */ 34671);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                var _default = _uiCollection_widget.default.inherit({
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            repaintChangesOnly: false
                        })
                    },
                    ctor: function() {
                        var _this$_dataController;
                        this.callBase.apply(this, arguments);
                        this._customizeStoreLoadOptions = e => {
                            const dataController = this._dataController;
                            if (dataController.getDataSource() && !this._dataController.isLoaded()) {
                                this._correctionIndex = 0
                            }
                            if (this._correctionIndex && e.storeLoadOptions) {
                                e.storeLoadOptions.skip += this._correctionIndex
                            }
                        }, null === (_this$_dataController = this._dataController) || void 0 === _this$_dataController ? void 0 : _this$_dataController.on("customizeStoreLoadOptions", this._customizeStoreLoadOptions)
                    },
                    reload: function() {
                        this._correctionIndex = 0
                    },
                    _init: function() {
                        this.callBase();
                        this._refreshItemsCache();
                        this._correctionIndex = 0
                    },
                    _findItemElementByKey: function(key) {
                        let result = (0, _renderer.default)();
                        const keyExpr = this.key();
                        this.itemElements().each((_, item) => {
                            const $item = (0, _renderer.default)(item);
                            const itemData = this._getItemData($item);
                            if (keyExpr ? (0, _utils.keysEqual)(keyExpr, this.keyOf(itemData), key) : this._isItemEquals(itemData, key)) {
                                result = $item;
                                return false
                            }
                        });
                        return result
                    },
                    _dataSourceChangedHandler: function(newItems, e) {
                        if (null !== e && void 0 !== e && e.changes) {
                            this._modifyByChanges(e.changes)
                        } else {
                            this.callBase(newItems, e);
                            this._refreshItemsCache()
                        }
                    },
                    _isItemEquals: function(item1, item2) {
                        if (item1 && item1.__dx_key__) {
                            item1 = item1.data
                        }
                        try {
                            return JSON.stringify(item1) === JSON.stringify(item2)
                        } catch (e) {
                            return item1 === item2
                        }
                    },
                    _isItemStrictEquals: function(item1, item2) {
                        return this._isItemEquals(item1, item2)
                    },
                    _shouldAddNewGroup: function(changes, items) {
                        let result = false;
                        if (this.option("grouped")) {
                            if (!changes.length) {
                                result = true
                            }(0, _iterator.each)(changes, (i, change) => {
                                if ("insert" === change.type) {
                                    result = true;
                                    (0, _iterator.each)(items, (_, item) => {
                                        if (void 0 !== change.data.key && change.data.key === item.key) {
                                            result = false;
                                            return false
                                        }
                                    })
                                }
                            })
                        }
                        return result
                    },
                    _partialRefresh: function() {
                        if (this.option("repaintChangesOnly")) {
                            const keyOf = data => {
                                if (data && void 0 !== data.__dx_key__) {
                                    return data.__dx_key__
                                }
                                return this.keyOf(data)
                            };
                            const result = (0, _array_compare.findChanges)(this._itemsCache, this._editStrategy.itemsGetter(), keyOf, this._isItemStrictEquals.bind(this));
                            if (result && this._itemsCache.length && !this._shouldAddNewGroup(result, this._itemsCache)) {
                                this._modifyByChanges(result, true);
                                this._renderEmptyMessage();
                                return true
                            } else {
                                this._refreshItemsCache()
                            }
                        }
                        return false
                    },
                    _refreshItemsCache: function() {
                        if (this.option("repaintChangesOnly")) {
                            const items = this._editStrategy.itemsGetter();
                            try {
                                this._itemsCache = (0, _extend.extend)(true, [], items);
                                if (!this.key()) {
                                    this._itemsCache = this._itemsCache.map((itemCache, index) => ({
                                        __dx_key__: items[index],
                                        data: itemCache
                                    }))
                                }
                            } catch (e) {
                                this._itemsCache = (0, _extend.extend)([], items)
                            }
                        }
                    },
                    _dispose: function() {
                        this._dataController.off("customizeStoreLoadOptions", this._customizeStoreLoadOptions);
                        this.callBase()
                    },
                    _updateByChange: function(keyInfo, items, change, isPartialRefresh) {
                        if (isPartialRefresh) {
                            this._renderItem(change.index, change.data, null, this._findItemElementByKey(change.key))
                        } else {
                            const changedItem = items[(0, _array_utils.indexByKey)(keyInfo, items, change.key)];
                            if (changedItem) {
                                (0, _array_utils.update)(keyInfo, items, change.key, change.data).done(() => {
                                    this._renderItem(items.indexOf(changedItem), changedItem, null, this._findItemElementByKey(change.key))
                                })
                            }
                        }
                    },
                    _insertByChange: function(keyInfo, items, change, isPartialRefresh) {
                        (0, _deferred.when)(isPartialRefresh || (0, _array_utils.insert)(keyInfo, items, change.data, change.index)).done(() => {
                            var _change$index;
                            this._beforeItemElementInserted(change);
                            this._renderItem(null !== (_change$index = change.index) && void 0 !== _change$index ? _change$index : items.length, change.data);
                            this._afterItemElementInserted();
                            this._correctionIndex++
                        })
                    },
                    _updateSelectionAfterRemoveByChange: function(removeIndex) {
                        const selectedIndex = this.option("selectedIndex");
                        if (selectedIndex > removeIndex) {
                            this.option("selectedIndex", selectedIndex - 1)
                        } else if (selectedIndex === removeIndex && 1 === this.option("selectedItems").length) {
                            this.option("selectedItems", [])
                        } else {
                            this._normalizeSelectedItems()
                        }
                    },
                    _beforeItemElementInserted: function(change) {
                        const selectedIndex = this.option("selectedIndex");
                        if (change.index <= selectedIndex) {
                            this.option("selectedIndex", selectedIndex + 1)
                        }
                    },
                    _afterItemElementInserted: _common.noop,
                    _removeByChange: function(keyInfo, items, change, isPartialRefresh) {
                        const index = isPartialRefresh ? change.index : (0, _array_utils.indexByKey)(keyInfo, items, change.key);
                        const removedItem = isPartialRefresh ? change.oldItem : items[index];
                        if (removedItem) {
                            const $removedItemElement = this._findItemElementByKey(change.key);
                            const deletedActionArgs = this._extendActionArgs($removedItemElement);
                            this._waitDeletingPrepare($removedItemElement).done(() => {
                                if (isPartialRefresh) {
                                    this._updateIndicesAfterIndex(index - 1);
                                    this._afterItemElementDeleted($removedItemElement, deletedActionArgs);
                                    this._updateSelectionAfterRemoveByChange(index)
                                } else {
                                    this._deleteItemElementByIndex(index);
                                    this._afterItemElementDeleted($removedItemElement, deletedActionArgs)
                                }
                            });
                            this._correctionIndex--
                        }
                    },
                    _modifyByChanges: function(changes, isPartialRefresh) {
                        const items = this._editStrategy.itemsGetter();
                        const keyInfo = {
                            key: this.key.bind(this),
                            keyOf: this.keyOf.bind(this)
                        };
                        const dataController = this._dataController;
                        const paginate = dataController.paginate();
                        const group = dataController.group();
                        if (paginate || group) {
                            changes = changes.filter(item => "insert" !== item.type || void 0 !== item.index)
                        }
                        changes.forEach(change => this["_".concat(change.type, "ByChange")](keyInfo, items, change, isPartialRefresh));
                        this._renderedItemsCount = items.length;
                        this._refreshItemsCache();
                        this._fireContentReadyAction()
                    },
                    _appendItemToContainer: function($container, $itemFrame, index) {
                        const nextSiblingElement = $container.children(this._itemSelector()).get(index);
                        _dom_adapter.default.insertElement($container.get(0), $itemFrame.get(0), nextSiblingElement)
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "items": {
                                const isItemsUpdated = this._partialRefresh(args.value);
                                if (!isItemsUpdated) {
                                    this.callBase(args)
                                }
                                break
                            }
                            case "dataSource":
                                if (!this.option("repaintChangesOnly") || !args.value) {
                                    this.option("items", [])
                                }
                                this.callBase(args);
                                break;
                            case "repaintChangesOnly":
                                break;
                            default:
                                this.callBase(args)
                        }
                    }
                });
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        4278:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/color_box.js ***!
              \*************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _color_box = (obj = __webpack_require__( /*! ./color_box/color_box */ 81738), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _color_box.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        81738:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/color_box/color_box.js ***!
              \***********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _color = _interopRequireDefault(__webpack_require__( /*! ../../color */ 52752));
                var _color_view = _interopRequireDefault(__webpack_require__( /*! ./color_view */ 89838));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../drop_down_editor/ui.drop_down_editor */ 44687));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const colorEditorPrototype = _color_view.default.prototype;
                const colorUtils = {
                    makeTransparentBackground: colorEditorPrototype._makeTransparentBackground.bind(colorEditorPrototype),
                    makeRgba: colorEditorPrototype._makeRgba.bind(colorEditorPrototype)
                };
                const ColorBox = _ui.default.inherit({
                    _supportedKeys: function() {
                        const arrowHandler = function(e) {
                            e.stopPropagation();
                            if (this.option("opened")) {
                                e.preventDefault();
                                return true
                            }
                        };
                        return (0, _extend.extend)(this.callBase(), {
                            enter: this._enterKeyHandler,
                            leftArrow: arrowHandler,
                            rightArrow: arrowHandler,
                            upArrow: function(e) {
                                if (!this.option("opened")) {
                                    e.preventDefault();
                                    return false
                                }
                                if (e.altKey) {
                                    this.close();
                                    return false
                                }
                                return true
                            },
                            downArrow: function(e) {
                                if (!this.option("opened") && !e.altKey) {
                                    e.preventDefault();
                                    return false
                                }
                                if (!this.option("opened") && e.altKey) {
                                    this._validatedOpening();
                                    return false
                                }
                                return true
                            }
                        })
                    },
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            editAlphaChannel: false,
                            applyValueMode: "useButtons",
                            keyStep: 1,
                            fieldTemplate: null,
                            buttonsLocation: "bottom after"
                        })
                    },
                    _popupHidingHandler: function() {
                        this.callBase();
                        if ("useButtons" === this.option("applyValueMode")) {
                            this._updateColorViewValue(this.option("value"))
                        }
                    },
                    _popupConfig: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            width: ""
                        })
                    },
                    _contentReadyHandler: function() {
                        this._createColorView();
                        this._addPopupBottomClasses()
                    },
                    _addPopupBottomClasses: function() {
                        const $popupBottom = this._popup.bottomToolbar();
                        if ($popupBottom) {
                            $popupBottom.addClass("dx-colorview-container-cell").addClass("dx-colorview-button-cell").find(".dx-toolbar-items-container").addClass("dx-colorview-buttons-container");
                            $popupBottom.find(".dx-popup-done").addClass("dx-colorview-apply-button");
                            $popupBottom.find(".dx-popup-cancel").addClass("dx-colorview-cancel-button")
                        }
                    },
                    _createColorView: function() {
                        this._popup.$overlayContent().addClass("dx-colorbox-overlay");
                        const $colorView = (0, _renderer.default)("<div>").appendTo(this._popup.$content());
                        this._colorView = this._createComponent($colorView, _color_view.default, this._colorViewConfig())
                    },
                    _applyNewColor: function(value) {
                        this.option("value", value);
                        if (value) {
                            colorUtils.makeTransparentBackground(this._$colorResultPreview, value)
                        }
                        if (this._colorViewEnterKeyPressed) {
                            this.close();
                            this._colorViewEnterKeyPressed = false
                        }
                    },
                    _colorViewConfig: function() {
                        const that = this;
                        return {
                            value: that.option("value"),
                            matchValue: that.option("value"),
                            editAlphaChannel: that.option("editAlphaChannel"),
                            applyValueMode: that.option("applyValueMode"),
                            focusStateEnabled: that.option("focusStateEnabled"),
                            stylingMode: this.option("stylingMode"),
                            target: this._input(),
                            onEnterKeyPressed: function(_ref) {
                                let {
                                    event: event
                                } = _ref;
                                that._colorViewEnterKeyPressed = true;
                                if (that._colorView.option("value") !== that.option("value")) {
                                    that._saveValueChangeEvent(event);
                                    that._applyNewColor(that._colorView.option("value"));
                                    that.close()
                                }
                            },
                            onValueChanged: function(_ref2) {
                                let {
                                    event: event,
                                    value: value,
                                    previousValue: previousValue
                                } = _ref2;
                                const instantlyMode = "instantly" === that.option("applyValueMode");
                                const isOldValue = colorUtils.makeRgba(value) === previousValue;
                                const changesApplied = instantlyMode || that._colorViewEnterKeyPressed;
                                const valueCleared = that._shouldSaveEmptyValue;
                                if (isOldValue || !changesApplied || valueCleared) {
                                    return
                                }
                                if (event) {
                                    that._saveValueChangeEvent(event)
                                }
                                that._applyNewColor(value)
                            }
                        }
                    },
                    _enterKeyHandler: function(e) {
                        const newValue = this._input().val();
                        const {
                            value: value,
                            editAlphaChannel: editAlphaChannel
                        } = this.option();
                        const oldValue = value && editAlphaChannel ? colorUtils.makeRgba(value) : value;
                        if (!newValue) {
                            return false
                        }
                        const color = new _color.default(newValue);
                        if (color.colorIsInvalid) {
                            this._input().val(oldValue);
                            return
                        }
                        if (newValue !== oldValue) {
                            this._applyColorFromInput(newValue);
                            this._saveValueChangeEvent(e);
                            this.option("value", this.option("editAlphaChannel") ? colorUtils.makeRgba(newValue) : newValue)
                        }
                        if (this._colorView) {
                            const colorViewValue = this._colorView.option("value");
                            if (value !== colorViewValue) {
                                this._saveValueChangeEvent(e);
                                this.option("value", colorViewValue)
                            }
                        }
                        this.close();
                        return false
                    },
                    _applyButtonHandler: function(e) {
                        this._saveValueChangeEvent(e.event);
                        this._applyNewColor(this._colorView.option("value"));
                        this.callBase()
                    },
                    _cancelButtonHandler: function() {
                        this._resetInputValue();
                        this.callBase()
                    },
                    _getKeyboardListeners() {
                        return this.callBase().concat([this._colorView])
                    },
                    _init: function() {
                        this.callBase()
                    },
                    _initMarkup: function() {
                        this.$element().addClass("dx-colorbox");
                        this.callBase()
                    },
                    _renderInput: function() {
                        this.callBase();
                        this._input().addClass("dx-colorbox-input");
                        this._renderColorPreview()
                    },
                    _renderColorPreview: function() {
                        this.$element().wrapInner((0, _renderer.default)("<div>").addClass("dx-colorbox-input-container"));
                        this._$colorBoxInputContainer = this.$element().children().eq(0);
                        this._$colorResultPreview = (0, _renderer.default)("<div>").addClass("dx-colorbox-color-result-preview").appendTo(this._$textEditorInputContainer);
                        if (!this.option("value")) {
                            this._$colorBoxInputContainer.addClass("dx-colorbox-color-is-not-defined")
                        } else {
                            colorUtils.makeTransparentBackground(this._$colorResultPreview, this.option("value"))
                        }
                    },
                    _renderValue: function() {
                        const {
                            value: value,
                            editAlphaChannel: editAlphaChannel
                        } = this.option();
                        const shouldConvertToColor = value && editAlphaChannel;
                        const text = shouldConvertToColor ? colorUtils.makeRgba(value) : value;
                        this.option("text", text);
                        return this.callBase()
                    },
                    _resetInputValue: function() {
                        const $input = this._input();
                        const value = this.option("value");
                        $input.val(value);
                        this._updateColorViewValue(value)
                    },
                    _updateColorViewValue: function(value) {
                        if (this._colorView) {
                            this._colorView.option({
                                value: value,
                                matchValue: value
                            })
                        }
                    },
                    _valueChangeEventHandler: function(e) {
                        let value = this._input().val();
                        if (value) {
                            value = this._applyColorFromInput(value);
                            this._updateColorViewValue(value)
                        }
                        this.callBase(e, value)
                    },
                    _applyColorFromInput: function(value) {
                        const {
                            editAlphaChannel: editAlphaChannel
                        } = this.option();
                        const newColor = new _color.default(value);
                        if (newColor.colorIsInvalid) {
                            this._resetInputValue();
                            return this.option("value")
                        }
                        if (editAlphaChannel) {
                            return colorUtils.makeRgba(value)
                        }
                        return value
                    },
                    _clean: function() {
                        this.callBase();
                        delete this._shouldSaveEmptyValue
                    },
                    _optionChanged: function(args) {
                        const value = args.value;
                        const name = args.name;
                        switch (name) {
                            case "value":
                                this._$colorBoxInputContainer.toggleClass("dx-colorbox-color-is-not-defined", !value);
                                if (value) {
                                    colorUtils.makeTransparentBackground(this._$colorResultPreview, value)
                                } else {
                                    this._$colorResultPreview.removeAttr("style")
                                }
                                if (null === value) {
                                    this._shouldSaveEmptyValue = true
                                }
                                this._updateColorViewValue(value);
                                this._shouldSaveEmptyValue = false;
                                this.callBase(args);
                                break;
                            case "applyButtonText":
                            case "cancelButtonText":
                                this.callBase(args);
                                this._popup && this._addPopupBottomClasses();
                                break;
                            case "editAlphaChannel":
                            case "keyStep":
                                if (this._colorView) {
                                    this._colorView.option(name, value)
                                }
                                break;
                            default:
                                this.callBase(args)
                        }
                    }
                });
                (0, _component_registrator.default)("dxColorBox", ColorBox);
                var _default = ColorBox;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        89838:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/color_box/color_view.js ***!
              \************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _translator = __webpack_require__( /*! ../../animation/translator */ 31648);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _color = _interopRequireDefault(__webpack_require__( /*! ../../color */ 52752));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _editor = _interopRequireDefault(__webpack_require__( /*! ../editor/editor */ 96452));
                var _number_box = _interopRequireDefault(__webpack_require__( /*! ../number_box */ 34171));
                var _text_box = _interopRequireDefault(__webpack_require__( /*! ../text_box */ 29837));
                var _draggable = _interopRequireDefault(__webpack_require__( /*! ../draggable */ 42160));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _click = __webpack_require__( /*! ../../events/click */ 95429);
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 73176));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const COLOR_VIEW_PALETTE_GRADIENT_CLASS = "dx-colorview-palette-gradient";
                const COLOR_VIEW_PALETTE_GRADIENT_WHITE_CLASS = "dx-colorview-palette-gradient-white";
                const COLOR_VIEW_PALETTE_GRADIENT_BLACK_CLASS = "dx-colorview-palette-gradient-black";
                const COLOR_VIEW_COLOR_PREVIEW = "dx-colorview-color-preview";
                const COLOR_VIEW_COLOR_PREVIEW_COLOR_CURRENT = "dx-colorview-color-preview-color-current";
                const COLOR_VIEW_COLOR_PREVIEW_COLOR_NEW = "dx-colorview-color-preview-color-new";
                const ColorView = _editor.default.inherit({
                    _supportedKeys: function() {
                        const isRTL = this.option("rtlEnabled");
                        const that = this;
                        const getHorizontalPaletteStep = function(e) {
                            let step = 100 / that._paletteWidth;
                            if (e.shiftKey) {
                                step *= that.option("keyStep")
                            }
                            step = step > 1 ? step : 1;
                            return Math.round(step)
                        };
                        const updateHorizontalPaletteValue = function(step) {
                            let value = that._currentColor.hsv.s + step;
                            if (value > 100) {
                                value = 100
                            } else if (value < 0) {
                                value = 0
                            }
                            that._currentColor.hsv.s = value;
                            updatePaletteValue()
                        };
                        const getVerticalPaletteStep = function(e) {
                            let step = 100 / that._paletteHeight;
                            if (e.shiftKey) {
                                step *= that.option("keyStep")
                            }
                            step = step > 1 ? step : 1;
                            return Math.round(step)
                        };
                        const updateVerticalPaletteValue = function(step) {
                            let value = that._currentColor.hsv.v + step;
                            if (value > 100) {
                                value = 100
                            } else if (value < 0) {
                                value = 0
                            }
                            that._currentColor.hsv.v = value;
                            updatePaletteValue()
                        };

                        function updatePaletteValue() {
                            that._placePaletteHandle();
                            that._updateColorFromHsv(that._currentColor.hsv.h, that._currentColor.hsv.s, that._currentColor.hsv.v)
                        }
                        const getHueScaleStep = function(e) {
                            let step = 360 / (that._hueScaleWrapperHeight - that._hueScaleHandleHeight);
                            if (e.shiftKey) {
                                step *= that.option("keyStep")
                            }
                            step = step > 1 ? step : 1;
                            return step
                        };
                        const updateHueScaleValue = function(step) {
                            that._currentColor.hsv.h += step;
                            that._placeHueScaleHandle();
                            const handleLocation = (0, _translator.locate)(that._$hueScaleHandle);
                            that._updateColorHue(handleLocation.top + that._hueScaleHandleHeight / 2)
                        };
                        const getAlphaScaleStep = function(e) {
                            let step = 1 / that._alphaChannelScaleWorkWidth;
                            if (e.shiftKey) {
                                step *= that.option("keyStep")
                            }
                            step = step > .01 ? step : .01;
                            step = isRTL ? -step : step;
                            return step
                        };
                        const updateAlphaScaleValue = function(step) {
                            that._currentColor.a += step;
                            that._placeAlphaChannelHandle();
                            const handleLocation = (0, _translator.locate)(that._$alphaChannelHandle);
                            that._calculateColorTransparencyByScaleWidth(handleLocation.left + that._alphaChannelHandleWidth / 2)
                        };
                        return (0, _extend.extend)(this.callBase(), {
                            upArrow: function(e) {
                                e.preventDefault();
                                e.stopPropagation();
                                if ((0, _index.isCommandKeyPressed)(e)) {
                                    if (this._currentColor.hsv.h <= 360 && !this._isTopColorHue) {
                                        this._saveValueChangeEvent(e);
                                        updateHueScaleValue(getHueScaleStep(e))
                                    }
                                } else if (this._currentColor.hsv.v < 100) {
                                    this._saveValueChangeEvent(e);
                                    updateVerticalPaletteValue(getVerticalPaletteStep(e))
                                }
                            },
                            downArrow: function(e) {
                                e.preventDefault();
                                e.stopPropagation();
                                if ((0, _index.isCommandKeyPressed)(e)) {
                                    if (this._currentColor.hsv.h >= 0) {
                                        if (this._isTopColorHue) {
                                            this._currentColor.hsv.h = 360
                                        }
                                        this._saveValueChangeEvent(e);
                                        updateHueScaleValue(-getHueScaleStep(e))
                                    }
                                } else if (this._currentColor.hsv.v > 0) {
                                    this._saveValueChangeEvent(e);
                                    updateVerticalPaletteValue(-getVerticalPaletteStep(e))
                                }
                            },
                            rightArrow: function(e) {
                                e.preventDefault();
                                e.stopPropagation();
                                if ((0, _index.isCommandKeyPressed)(e)) {
                                    if (isRTL ? this._currentColor.a < 1 : this._currentColor.a > 0 && this.option("editAlphaChannel")) {
                                        this._saveValueChangeEvent(e);
                                        updateAlphaScaleValue(-getAlphaScaleStep(e))
                                    }
                                } else if (this._currentColor.hsv.s < 100) {
                                    this._saveValueChangeEvent(e);
                                    updateHorizontalPaletteValue(getHorizontalPaletteStep(e))
                                }
                            },
                            leftArrow: function(e) {
                                e.preventDefault();
                                e.stopPropagation();
                                if ((0, _index.isCommandKeyPressed)(e)) {
                                    if (isRTL ? this._currentColor.a > 0 : this._currentColor.a < 1 && this.option("editAlphaChannel")) {
                                        this._saveValueChangeEvent(e);
                                        updateAlphaScaleValue(getAlphaScaleStep(e))
                                    }
                                } else if (this._currentColor.hsv.s > 0) {
                                    this._saveValueChangeEvent(e);
                                    updateHorizontalPaletteValue(-getHorizontalPaletteStep(e))
                                }
                            },
                            enter: function(e) {
                                this._fireEnterKeyPressed(e)
                            }
                        })
                    },
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            value: null,
                            matchValue: null,
                            onEnterKeyPressed: void 0,
                            editAlphaChannel: false,
                            keyStep: 1,
                            stylingMode: void 0
                        })
                    },
                    _defaultOptionsRules: function() {
                        return this.callBase().concat([{
                            device: function() {
                                return "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator()
                            },
                            options: {
                                focusStateEnabled: true
                            }
                        }])
                    },
                    _init: function() {
                        this.callBase();
                        this._initColorAndOpacity();
                        this._initEnterKeyPressedAction()
                    },
                    _initEnterKeyPressedAction: function() {
                        this._onEnterKeyPressedAction = this._createActionByOption("onEnterKeyPressed")
                    },
                    _fireEnterKeyPressed: function(e) {
                        if (!this._onEnterKeyPressedAction) {
                            return
                        }
                        this._onEnterKeyPressedAction({
                            event: e
                        })
                    },
                    _initColorAndOpacity: function() {
                        this._setCurrentColor(this.option("value"))
                    },
                    _setCurrentColor: function(value) {
                        value = value || "#000000";
                        const newColor = new _color.default(value);
                        if (!newColor.colorIsInvalid) {
                            if (!this._currentColor || this._makeRgba(this._currentColor) !== this._makeRgba(newColor)) {
                                this._currentColor = newColor;
                                if (this._$currentColor) {
                                    this._makeTransparentBackground(this._$currentColor, newColor)
                                }
                            }
                        } else {
                            if (!this._currentColor) {
                                this._currentColor = new _color.default("#000000")
                            }
                            this.option("value", this._currentColor.baseColor)
                        }
                    },
                    _setBaseColor: function(value) {
                        const color = value || "#000000";
                        const newColor = new _color.default(color);
                        if (!newColor.colorIsInvalid) {
                            const isBaseColorChanged = this._makeRgba(this.option("matchValue") !== this._makeRgba(newColor));
                            if (isBaseColorChanged) {
                                if (this._$baseColor) {
                                    this._makeTransparentBackground(this._$baseColor, newColor)
                                }
                            }
                        }
                    },
                    _initMarkup: function() {
                        this.callBase();
                        this.$element().addClass("dx-colorview");
                        this._renderColorPickerContainer()
                    },
                    _render: function() {
                        this.callBase();
                        this._renderPalette();
                        this._renderHueScale();
                        this._renderControlsContainer();
                        this._renderControls();
                        this._renderAlphaChannelElements()
                    },
                    _makeTransparentBackground: function($el, color) {
                        if (!(color instanceof _color.default)) {
                            color = new _color.default(color)
                        }
                        $el.css("backgroundColor", this._makeRgba(color))
                    },
                    _makeRgba: function(color) {
                        if (!(color instanceof _color.default)) {
                            color = new _color.default(color)
                        }
                        return "rgba(" + [color.r, color.g, color.b, color.a].join(", ") + ")"
                    },
                    _renderValue: function() {
                        this.callBase(this.option("editAlphaChannel") ? this._makeRgba(this._currentColor) : this.option("value"))
                    },
                    _renderColorPickerContainer: function() {
                        const $parent = this.$element();
                        this._$colorPickerContainer = (0, _renderer.default)("<div>").addClass("dx-colorview-container").appendTo($parent);
                        this._renderHtmlRows()
                    },
                    _renderHtmlRows: function(updatedOption) {
                        const $renderedRows = this._$colorPickerContainer.find(".dx-colorview-container-row");
                        const renderedRowsCount = $renderedRows.length;
                        const rowCount = this.option("editAlphaChannel") ? 2 : 1;
                        let delta = renderedRowsCount - rowCount;
                        if (delta > 0) {
                            $renderedRows.eq(-1).remove()
                        }
                        if (delta < 0) {
                            delta = Math.abs(delta);
                            const rows = [];
                            let i;
                            for (i = 0; i < delta; i++) {
                                rows.push((0, _renderer.default)("<div>").addClass("dx-colorview-container-row"))
                            }
                            if (renderedRowsCount) {
                                for (i = 0; i < rows.length; i++) {
                                    $renderedRows.eq(0).after(rows[i])
                                }
                            } else {
                                this._$colorPickerContainer.append(rows)
                            }
                        }
                    },
                    _renderHtmlCellInsideRow: function(index, $rowParent, additionalClass) {
                        return (0, _renderer.default)("<div>").addClass("dx-colorview-container-cell").addClass(additionalClass).appendTo($rowParent.find(".dx-colorview-container-row").eq(index))
                    },
                    _renderPalette: function() {
                        const $paletteCell = this._renderHtmlCellInsideRow(0, this._$colorPickerContainer, "dx-colorview-palette-cell");
                        const $paletteGradientWhite = (0, _renderer.default)("<div>").addClass([COLOR_VIEW_PALETTE_GRADIENT_CLASS, COLOR_VIEW_PALETTE_GRADIENT_WHITE_CLASS].join(" "));
                        const $paletteGradientBlack = (0, _renderer.default)("<div>").addClass([COLOR_VIEW_PALETTE_GRADIENT_CLASS, COLOR_VIEW_PALETTE_GRADIENT_BLACK_CLASS].join(" "));
                        this._$palette = (0, _renderer.default)("<div>").addClass("dx-colorview-palette").css("backgroundColor", this._currentColor.getPureColor().toHex()).appendTo($paletteCell);
                        this._paletteHeight = (0, _size.getHeight)(this._$palette);
                        this._paletteWidth = (0, _size.getWidth)(this._$palette);
                        this._renderPaletteHandle();
                        this._$palette.append([$paletteGradientWhite, $paletteGradientBlack])
                    },
                    _renderPaletteHandle: function() {
                        this._$paletteHandle = (0, _renderer.default)("<div>").addClass("dx-colorview-palette-handle").appendTo(this._$palette);
                        const ariaId = "dx-".concat(new _guid.default);
                        const handleAria = {
                            id: ariaId,
                            role: "application"
                        };
                        this.setAria(handleAria, this._$paletteHandle);
                        this.setAria("activedescendant", ariaId, this.option("target"));
                        this._createComponent(this._$paletteHandle, _draggable.default, {
                            contentTemplate: null,
                            boundary: this._$palette,
                            allowMoveByClick: true,
                            boundOffset: function() {
                                return -this._paletteHandleHeight / 2
                            }.bind(this),
                            onDragMove: _ref => {
                                let {
                                    event: event
                                } = _ref;
                                const paletteHandlePosition = (0, _translator.locate)(this._$paletteHandle);
                                this._updateByDrag = true;
                                this._saveValueChangeEvent(event);
                                this._updateColorFromHsv(this._currentColor.hsv.h, this._calculateColorSaturation(paletteHandlePosition), this._calculateColorValue(paletteHandlePosition))
                            }
                        });
                        this._paletteHandleWidth = (0, _size.getWidth)(this._$paletteHandle);
                        this._paletteHandleHeight = (0, _size.getHeight)(this._$paletteHandle);
                        this._placePaletteHandle()
                    },
                    _placePaletteHandle: function() {
                        (0, _translator.move)(this._$paletteHandle, {
                            left: Math.round(this._paletteWidth * this._currentColor.hsv.s / 100 - this._paletteHandleWidth / 2),
                            top: Math.round(this._paletteHeight - this._paletteHeight * this._currentColor.hsv.v / 100 - this._paletteHandleHeight / 2)
                        })
                    },
                    _calculateColorValue: function(paletteHandlePosition) {
                        const value = Math.floor(paletteHandlePosition.top + this._paletteHandleHeight / 2);
                        return 100 - Math.round(100 * value / this._paletteHeight)
                    },
                    _calculateColorSaturation: function(paletteHandlePosition) {
                        const saturation = Math.floor(paletteHandlePosition.left + this._paletteHandleWidth / 2);
                        return Math.round(100 * saturation / this._paletteWidth)
                    },
                    _updateColorFromHsv: function(hue, saturation, value) {
                        const a = this._currentColor.a;
                        this._currentColor = new _color.default("hsv(" + [hue, saturation, value].join(",") + ")");
                        this._currentColor.a = a;
                        this._updateColorParamsAndColorPreview();
                        this.applyColor()
                    },
                    _renderHueScale: function() {
                        const $hueScaleCell = this._renderHtmlCellInsideRow(0, this._$colorPickerContainer, "dx-colorview-hue-scale-cell");
                        this._$hueScaleWrapper = (0, _renderer.default)("<div>").addClass("dx-colorview-hue-scale-wrapper").appendTo($hueScaleCell);
                        this._$hueScale = (0, _renderer.default)("<div>").addClass("dx-colorview-hue-scale").appendTo(this._$hueScaleWrapper);
                        this._hueScaleHeight = (0, _size.getHeight)(this._$hueScale);
                        this._hueScaleWrapperHeight = (0, _size.getOuterHeight)(this._$hueScaleWrapper);
                        this._renderHueScaleHandle()
                    },
                    _renderHueScaleHandle: function() {
                        this._$hueScaleHandle = (0, _renderer.default)("<div>").addClass("dx-colorview-hue-scale-handle").appendTo(this._$hueScaleWrapper);
                        this._createComponent(this._$hueScaleHandle, _draggable.default, {
                            contentTemplate: null,
                            boundary: this._$hueScaleWrapper,
                            allowMoveByClick: true,
                            dragDirection: "vertical",
                            onDragMove: _ref2 => {
                                let {
                                    event: event
                                } = _ref2;
                                this._updateByDrag = true;
                                this._saveValueChangeEvent(event);
                                this._updateColorHue((0, _translator.locate)(this._$hueScaleHandle).top + this._hueScaleHandleHeight / 2)
                            }
                        });
                        this._hueScaleHandleHeight = (0, _size.getHeight)(this._$hueScaleHandle);
                        this._placeHueScaleHandle()
                    },
                    _placeHueScaleHandle: function() {
                        const hueScaleHeight = this._hueScaleWrapperHeight;
                        const handleHeight = this._hueScaleHandleHeight;
                        let top = (hueScaleHeight - handleHeight) * (360 - this._currentColor.hsv.h) / 360;
                        if (hueScaleHeight < top + handleHeight) {
                            top = hueScaleHeight - handleHeight
                        }
                        if (top < 0) {
                            top = 0
                        }(0, _translator.move)(this._$hueScaleHandle, {
                            top: Math.round(top)
                        })
                    },
                    _updateColorHue: function(handlePosition) {
                        let hue = 360 - Math.round(360 * (handlePosition - this._hueScaleHandleHeight / 2) / (this._hueScaleWrapperHeight - this._hueScaleHandleHeight));
                        const saturation = this._currentColor.hsv.s;
                        const value = this._currentColor.hsv.v;
                        this._isTopColorHue = false;
                        hue = hue < 0 ? 0 : hue;
                        if (hue >= 360) {
                            this._isTopColorHue = true;
                            hue = 0
                        }
                        this._updateColorFromHsv(hue, saturation, value);
                        this._$palette.css("backgroundColor", this._currentColor.getPureColor().toHex())
                    },
                    _renderControlsContainer: function() {
                        const $controlsContainerCell = this._renderHtmlCellInsideRow(0, this._$colorPickerContainer);
                        this._$controlsContainer = (0, _renderer.default)("<div>").addClass("dx-colorview-controls-container").appendTo($controlsContainerCell)
                    },
                    _renderControls: function() {
                        this._renderColorsPreview();
                        this._renderRgbInputs();
                        this._renderHexInput()
                    },
                    _renderColorsPreview: function() {
                        const $colorsPreviewContainer = (0, _renderer.default)("<div>").addClass("dx-colorview-color-preview-container").appendTo(this._$controlsContainer);
                        const $colorsPreviewContainerInner = (0, _renderer.default)("<div>").addClass("dx-colorview-color-preview-container-inner").appendTo($colorsPreviewContainer);
                        this._$currentColor = (0, _renderer.default)("<div>").addClass([COLOR_VIEW_COLOR_PREVIEW, COLOR_VIEW_COLOR_PREVIEW_COLOR_NEW].join(" "));
                        this._$baseColor = (0, _renderer.default)("<div>").addClass([COLOR_VIEW_COLOR_PREVIEW, COLOR_VIEW_COLOR_PREVIEW_COLOR_CURRENT].join(" "));
                        this._makeTransparentBackground(this._$baseColor, this.option("matchValue"));
                        this._makeTransparentBackground(this._$currentColor, this._currentColor);
                        $colorsPreviewContainerInner.append([this._$baseColor, this._$currentColor])
                    },
                    _renderAlphaChannelElements: function() {
                        if (this.option("editAlphaChannel")) {
                            this._$colorPickerContainer.find(".dx-colorview-container-row").eq(1).addClass("dx-colorview-alpha-channel-row");
                            this._renderAlphaChannelScale();
                            this._renderAlphaChannelInput()
                        }
                    },
                    _renderRgbInputs: function() {
                        this._rgbInputsWithLabels = [this._renderEditorWithLabel({
                            editorType: _number_box.default,
                            value: this._currentColor.r,
                            onValueChanged: this._updateColor.bind(this, false),
                            labelText: "R",
                            labelAriaText: _message.default.format("dxColorView-ariaRed"),
                            labelClass: "dx-colorview-label-red"
                        }), this._renderEditorWithLabel({
                            editorType: _number_box.default,
                            value: this._currentColor.g,
                            onValueChanged: this._updateColor.bind(this, false),
                            labelText: "G",
                            labelAriaText: _message.default.format("dxColorView-ariaGreen"),
                            labelClass: "dx-colorview-label-green"
                        }), this._renderEditorWithLabel({
                            editorType: _number_box.default,
                            value: this._currentColor.b,
                            onValueChanged: this._updateColor.bind(this, false),
                            labelText: "B",
                            labelAriaText: _message.default.format("dxColorView-ariaBlue"),
                            labelClass: "dx-colorview-label-blue"
                        })];
                        this._$controlsContainer.append(this._rgbInputsWithLabels);
                        this._rgbInputs = [this._rgbInputsWithLabels[0].find(".dx-numberbox").dxNumberBox("instance"), this._rgbInputsWithLabels[1].find(".dx-numberbox").dxNumberBox("instance"), this._rgbInputsWithLabels[2].find(".dx-numberbox").dxNumberBox("instance")]
                    },
                    _renderEditorWithLabel: function(options) {
                        const $editor = (0, _renderer.default)("<div>");
                        const $label = (0, _renderer.default)("<label>").addClass(options.labelClass).text(options.labelText + ":").append($editor);
                        _events_engine.default.off($label, _click.name);
                        _events_engine.default.on($label, _click.name, (function(e) {
                            e.preventDefault()
                        }));
                        const editorType = options.editorType;
                        const editorOptions = (0, _extend.extend)({
                            value: options.value,
                            onValueChanged: options.onValueChanged,
                            onKeyboardHandled: opts => this._keyboardHandler(opts)
                        }, {
                            stylingMode: this.option("stylingMode")
                        });
                        if (editorType === _number_box.default) {
                            editorOptions.min = options.min || 0;
                            editorOptions.max = options.max || 255;
                            editorOptions.step = options.step || 1
                        }
                        const editor = new editorType($editor, editorOptions);
                        editor.registerKeyHandler("enter", function(e) {
                            this._fireEnterKeyPressed(e)
                        }.bind(this));
                        this.setAria("label", options.labelAriaText, $editor);
                        return $label
                    },
                    hexInputOptions: function() {
                        return {
                            editorType: _text_box.default,
                            value: this._currentColor.toHex().replace("#", ""),
                            onValueChanged: this._updateColor.bind(this, true),
                            labelClass: "dx-colorview-label-hex",
                            labelText: "#",
                            labelAriaText: _message.default.format("dxColorView-ariaHex")
                        }
                    },
                    _renderHexInput: function() {
                        this._hexInput = _text_box.default.getInstance(this._renderEditorWithLabel(this.hexInputOptions()).appendTo(this._$controlsContainer).find(".dx-textbox"));
                        const inputId = "dx-".concat(new _guid.default);
                        const $hexInput = this._$controlsContainer.find(".".concat("dx-colorview-label-hex")).find(".".concat("dx-texteditor-input"));
                        this.setAria("id", inputId, $hexInput);
                        this.setAria("labelledby", inputId, this._$paletteHandle)
                    },
                    _renderAlphaChannelScale: function() {
                        const $alphaChannelScaleCell = this._renderHtmlCellInsideRow(1, this._$colorPickerContainer, "dx-colorview-alpha-channel-cell");
                        const $alphaChannelBorder = (0, _renderer.default)("<div>").addClass("dx-colorview-alpha-channel-border").appendTo($alphaChannelScaleCell);
                        const $alphaChannelScaleWrapper = (0, _renderer.default)("<div>").addClass("dx-colorview-alpha-channel-wrapper").appendTo($alphaChannelBorder);
                        this._$alphaChannelScale = (0, _renderer.default)("<div>").addClass("dx-colorview-alpha-channel-scale").appendTo($alphaChannelScaleWrapper);
                        this._makeCSSLinearGradient(this._$alphaChannelScale);
                        this._renderAlphaChannelHandle($alphaChannelScaleCell)
                    },
                    _makeCSSLinearGradient: function($el) {
                        const color = this._currentColor;
                        const colorAsRgb = "".concat(color.r, ",").concat(color.g, ",").concat(color.b);
                        const rtlEnabled = this.option("rtlEnabled");
                        const startColor = "rgba(".concat(colorAsRgb, ", ").concat(rtlEnabled ? "1" : "0", ")");
                        const finishColor = "rgba(".concat(colorAsRgb, ", ").concat(rtlEnabled ? "0" : "1", ")");
                        const backgroundImage = "linear-gradient(-90deg, ".concat(startColor, ", ").concat(finishColor, ")");
                        $el.css("backgroundImage", backgroundImage)
                    },
                    _renderAlphaChannelInput: function() {
                        const that = this;
                        const $alphaChannelInputCell = this._renderHtmlCellInsideRow(1, this._$colorPickerContainer);
                        that._alphaChannelInput = this._renderEditorWithLabel({
                            editorType: _number_box.default,
                            value: this._currentColor.a,
                            max: 1,
                            step: .1,
                            onValueChanged: function(args) {
                                let value = args.value;
                                value = that._currentColor.isValidAlpha(value) ? value : that._currentColor.a;
                                args.event && that._saveValueChangeEvent(args.event);
                                that._updateColorTransparency(value);
                                that._placeAlphaChannelHandle()
                            },
                            labelClass: "dx-colorview-alpha-channel-label",
                            labelText: "Alpha",
                            labelAriaText: _message.default.format("dxColorView-ariaAlpha")
                        }).appendTo($alphaChannelInputCell).find(".dx-numberbox").dxNumberBox("instance")
                    },
                    _updateColorTransparency: function(transparency) {
                        this._currentColor.a = transparency;
                        this.applyColor()
                    },
                    _renderAlphaChannelHandle: function($parent) {
                        this._$alphaChannelHandle = (0, _renderer.default)("<div>").addClass("dx-colorview-alpha-channel-handle").appendTo($parent);
                        this._createComponent(this._$alphaChannelHandle, _draggable.default, {
                            contentTemplate: null,
                            boundary: $parent,
                            allowMoveByClick: true,
                            dragDirection: "horizontal",
                            onDragMove: _ref3 => {
                                let {
                                    event: event
                                } = _ref3;
                                this._updateByDrag = true;
                                const $alphaChannelHandle = this._$alphaChannelHandle;
                                const alphaChannelHandlePosition = (0, _translator.locate)($alphaChannelHandle).left + this._alphaChannelHandleWidth / 2;
                                this._saveValueChangeEvent(event);
                                this._calculateColorTransparencyByScaleWidth(alphaChannelHandlePosition)
                            }
                        });
                        this._alphaChannelHandleWidth = (0, _size.getWidth)(this._$alphaChannelHandle);
                        this._alphaChannelScaleWorkWidth = (0, _size.getWidth)($parent) - this._alphaChannelHandleWidth;
                        this._placeAlphaChannelHandle()
                    },
                    _calculateColorTransparencyByScaleWidth: function(handlePosition) {
                        let transparency = (handlePosition - this._alphaChannelHandleWidth / 2) / this._alphaChannelScaleWorkWidth;
                        const rtlEnabled = this.option("rtlEnabled");
                        transparency = rtlEnabled ? transparency : 1 - transparency;
                        if (handlePosition >= this._alphaChannelScaleWorkWidth + this._alphaChannelHandleWidth / 2) {
                            transparency = rtlEnabled ? 1 : 0
                        } else if (transparency < 1) {
                            transparency = transparency.toFixed(2)
                        }
                        const previousTransparency = this._alphaChannelInput.option("value");
                        transparency = Math.max(transparency, 0);
                        transparency = Math.min(transparency, 1);
                        if (transparency === previousTransparency) {
                            this._updateByDrag = false
                        } else {
                            this._alphaChannelInput.option("value", transparency)
                        }
                    },
                    _placeAlphaChannelHandle: function() {
                        let left = this._alphaChannelScaleWorkWidth * (1 - this._currentColor.a);
                        if (left < 0) {
                            left = 0
                        }
                        if (this._alphaChannelScaleWorkWidth < left) {
                            left = this._alphaChannelScaleWorkWidth
                        }(0, _translator.move)(this._$alphaChannelHandle, {
                            left: this.option("rtlEnabled") ? this._alphaChannelScaleWorkWidth - left : left
                        })
                    },
                    applyColor: function() {
                        const previousValue = this.option("value");
                        const colorValue = this.option("editAlphaChannel") ? this._makeRgba(this._currentColor) : this._currentColor.toHex();
                        this._makeTransparentBackground(this._$currentColor, this._currentColor);
                        if (colorValue === previousValue) {
                            this._updateByDrag = false
                        } else {
                            this.option("value", colorValue)
                        }
                    },
                    cancelColor: function() {
                        this._initColorAndOpacity();
                        this._refreshMarkup()
                    },
                    _updateColor: function(isHex, args) {
                        let rgba;
                        let newColor;
                        if (isHex) {
                            newColor = this._validateHex("#" + this._hexInput.option("value"))
                        } else {
                            rgba = this._validateRgb();
                            if (this._alphaChannelInput) {
                                rgba.push(this._alphaChannelInput.option("value"));
                                newColor = "rgba(" + rgba.join(", ") + ")"
                            } else {
                                newColor = "rgb(" + rgba.join(", ") + ")"
                            }
                        }
                        if (!this._suppressEditorsValueUpdating) {
                            this._currentColor = new _color.default(newColor);
                            this._saveValueChangeEvent(args.event);
                            this.applyColor();
                            this._refreshMarkup()
                        }
                    },
                    _validateHex: function(hex) {
                        return this._currentColor.isValidHex(hex) ? hex : this._currentColor.toHex()
                    },
                    _validateRgb: function() {
                        let r = this._rgbInputs[0].option("value");
                        let g = this._rgbInputs[1].option("value");
                        let b = this._rgbInputs[2].option("value");
                        if (!this._currentColor.isValidRGB(r, g, b)) {
                            r = this._currentColor.r;
                            g = this._currentColor.g;
                            b = this._currentColor.b
                        }
                        return [r, g, b]
                    },
                    _refreshMarkup: function() {
                        this._placeHueScaleHandle();
                        this._placePaletteHandle();
                        this._updateColorParamsAndColorPreview();
                        this._$palette.css("backgroundColor", this._currentColor.getPureColor().toHex());
                        if (this._$alphaChannelHandle) {
                            this._updateColorTransparency(this._currentColor.a);
                            this._placeAlphaChannelHandle()
                        }
                    },
                    _updateColorParamsAndColorPreview: function() {
                        this._suppressEditorsValueUpdating = true;
                        this._hexInput.option("value", this._currentColor.toHex().replace("#", ""));
                        this._rgbInputs[0].option("value", this._currentColor.r);
                        this._rgbInputs[1].option("value", this._currentColor.g);
                        this._rgbInputs[2].option("value", this._currentColor.b);
                        this._suppressEditorsValueUpdating = false;
                        if (this.option("editAlphaChannel")) {
                            this._makeCSSLinearGradient.call(this, this._$alphaChannelScale);
                            this._alphaChannelInput.option("value", this._currentColor.a)
                        }
                    },
                    _optionChanged: function(args) {
                        const value = args.value;
                        switch (args.name) {
                            case "value":
                                this._setCurrentColor(value);
                                if (!this._updateByDrag) {
                                    this._refreshMarkup()
                                }
                                this._updateByDrag = false;
                                this.callBase(args);
                                break;
                            case "matchValue":
                                this._setBaseColor(value);
                                break;
                            case "onEnterKeyPressed":
                                this._initEnterKeyPressedAction();
                                break;
                            case "editAlphaChannel":
                                if (this._$colorPickerContainer) {
                                    this._renderHtmlRows("editAlphaChannel");
                                    this._renderAlphaChannelElements()
                                }
                                break;
                            case "keyStep":
                                break;
                            case "stylingMode":
                                this._renderControls();
                                break;
                            default:
                                this.callBase(args)
                        }
                    }
                });
                (0, _component_registrator.default)("dxColorView", ColorView);
                var _default = ColorView;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        10042:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/context_menu.js ***!
              \****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _ui = (obj = __webpack_require__( /*! ./context_menu/ui.context_menu */ 5631), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _ui.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        5631:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/context_menu/ui.context_menu.js ***!
              \********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 73176));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _dom = __webpack_require__( /*! ../../core/utils/dom */ 3532);
                var _element = __webpack_require__( /*! ../../core/element */ 6415);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _fx = _interopRequireDefault(__webpack_require__( /*! ../../animation/fx */ 87209));
                var _position = _interopRequireDefault(__webpack_require__( /*! ../../animation/position */ 49387));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../overlay/ui.overlay */ 89799));
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ./ui.menu_base */ 46377));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _contextmenu = __webpack_require__( /*! ../../events/contextmenu */ 49166);
                var _hold = _interopRequireDefault(__webpack_require__( /*! ../../events/hold */ 11699));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const ACTIONS = ["onShowing", "onShown", "onSubmenuCreated", "onHiding", "onHidden", "onPositioning", "onLeftFirstItem", "onLeftLastItem", "onCloseRootSubmenu", "onExpandLastSubmenu"];
                const LOCAL_SUBMENU_DIRECTIONS = ["up", "down", "first", "last"];
                const window = (0, _window.getWindow)();
                let ContextMenu = function(_MenuBase) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(ContextMenu, _MenuBase);

                    function ContextMenu() {
                        return _MenuBase.apply(this, arguments) || this
                    }
                    var _proto = ContextMenu.prototype;
                    _proto.getShowEvent = function(showEventOption) {
                        let result = null;
                        if ((0, _type.isObject)(showEventOption)) {
                            if (null !== showEventOption.name) {
                                result = showEventOption.name || "dxcontextmenu"
                            }
                        } else {
                            result = showEventOption
                        }
                        return result
                    };
                    _proto.getShowDelay = function(showEventOption) {
                        return (0, _type.isObject)(showEventOption) && showEventOption.delay
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_MenuBase.prototype._getDefaultOptions.call(this), {
                            showEvent: "dxcontextmenu",
                            hideOnOutsideClick: true,
                            position: {
                                at: "top left",
                                my: "top left"
                            },
                            onShowing: null,
                            onShown: null,
                            onSubmenuCreated: null,
                            onHiding: null,
                            onHidden: null,
                            onPositioning: null,
                            submenuDirection: "auto",
                            visible: false,
                            target: void 0,
                            onLeftFirstItem: null,
                            onLeftLastItem: null,
                            onCloseRootSubmenu: null,
                            onExpandLastSubmenu: null
                        })
                    };
                    _proto._defaultOptionsRules = function() {
                        return _MenuBase.prototype._defaultOptionsRules.call(this).concat([{
                            device: () => !(0, _window.hasWindow)(),
                            options: {
                                animation: null
                            }
                        }])
                    };
                    _proto._setDeprecatedOptions = function() {
                        _MenuBase.prototype._setDeprecatedOptions.call(this);
                        (0, _extend.extend)(this._deprecatedOptions, {
                            closeOnOutsideClick: {
                                since: "22.2",
                                alias: "hideOnOutsideClick"
                            }
                        })
                    };
                    _proto._initActions = function() {
                        this._actions = {};
                        (0, _iterator.each)(ACTIONS, (index, action) => {
                            this._actions[action] = this._createActionByOption(action) || _common.noop
                        })
                    };
                    _proto._setOptionsByReference = function() {
                        _MenuBase.prototype._setOptionsByReference.call(this);
                        (0, _extend.extend)(this._optionsByReference, {
                            animation: true,
                            selectedItem: true
                        })
                    };
                    _proto._focusInHandler = function() {};
                    _proto._itemContainer = function() {
                        return this._overlay ? this._overlay.$content() : (0, _renderer.default)()
                    };
                    _proto._eventBindingTarget = function() {
                        return this._itemContainer()
                    };
                    _proto.itemsContainer = function() {
                        return this._overlay ? this._overlay.$content() : void 0
                    };
                    _proto._supportedKeys = function() {
                        return (0, _extend.extend)(_MenuBase.prototype._supportedKeys.call(this), {
                            space: () => {
                                const $item = (0, _renderer.default)(this.option("focusedElement"));
                                this.hide();
                                if (!$item.length || !this._isSelectionEnabled()) {
                                    return
                                }
                                this.selectItem($item[0])
                            },
                            escape: this.hide
                        })
                    };
                    _proto._getActiveItem = function() {
                        const $availableItems = this._getAvailableItems();
                        const $focusedItem = $availableItems.filter(".".concat("dx-state-focused"));
                        const $hoveredItem = $availableItems.filter(".".concat("dx-state-hover"));
                        const $hoveredItemContainer = $hoveredItem.closest(".".concat("dx-menu-items-container"));
                        if ($hoveredItemContainer.find(".".concat("dx-menu-item")).index($focusedItem) >= 0) {
                            return $focusedItem
                        }
                        if ($hoveredItem.length) {
                            return $hoveredItem
                        }
                        return _MenuBase.prototype._getActiveItem.call(this)
                    };
                    _proto._moveFocus = function(location) {
                        const $items = this._getItemsByLocation(location);
                        const $oldTarget = this._getActiveItem(true);
                        const $hoveredItem = this.itemsContainer().find(".".concat("dx-state-hover"));
                        const $focusedItem = (0, _renderer.default)(this.option("focusedElement"));
                        const $activeItemHighlighted = !!($focusedItem.length || $hoveredItem.length);
                        let $newTarget;
                        switch (location) {
                            case "up":
                                $newTarget = $activeItemHighlighted ? this._prevItem($items) : $oldTarget;
                                this._setFocusedElement($newTarget);
                                if ($oldTarget.is($items.first())) {
                                    this._actions.onLeftFirstItem($oldTarget)
                                }
                                break;
                            case "down":
                                $newTarget = $activeItemHighlighted ? this._nextItem($items) : $oldTarget;
                                this._setFocusedElement($newTarget);
                                if ($oldTarget.is($items.last())) {
                                    this._actions.onLeftLastItem($oldTarget)
                                }
                                break;
                            case "right":
                                $newTarget = this.option("rtlEnabled") ? this._hideSubmenuHandler() : this._expandSubmenuHandler($items, location);
                                this._setFocusedElement($newTarget);
                                break;
                            case "left":
                                $newTarget = this.option("rtlEnabled") ? this._expandSubmenuHandler($items, location) : this._hideSubmenuHandler();
                                this._setFocusedElement($newTarget);
                                break;
                            case "first":
                                $newTarget = $items.first();
                                this._setFocusedElement($newTarget);
                                break;
                            case "last":
                                $newTarget = $items.last();
                                this._setFocusedElement($newTarget);
                                break;
                            default:
                                return _MenuBase.prototype._moveFocus.call(this, location)
                        }
                    };
                    _proto._setFocusedElement = function($element) {
                        if ($element && 0 !== $element.length) {
                            this.option("focusedElement", (0, _element.getPublicElement)($element))
                        }
                    };
                    _proto._getItemsByLocation = function(location) {
                        const $activeItem = this._getActiveItem(true);
                        let $items;
                        if (LOCAL_SUBMENU_DIRECTIONS.includes(location)) {
                            $items = $activeItem.closest(".".concat("dx-menu-items-container")).children().children()
                        }
                        $items = this._getAvailableItems($items);
                        return $items
                    };
                    _proto._getAriaTarget = function() {
                        return this.$element()
                    };
                    _proto._refreshActiveDescendant = function() {
                        if ((0, _type.isDefined)(this._overlay)) {
                            const $target = this._overlay.$content();
                            _MenuBase.prototype._refreshActiveDescendant.call(this, $target)
                        }
                    };
                    _proto._hideSubmenuHandler = function() {
                        const $curItem = this._getActiveItem(true);
                        const $parentItem = $curItem.parents(".".concat("dx-menu-item-expanded")).first();
                        if ($parentItem.length) {
                            this._hideSubmenusOnSameLevel($parentItem);
                            this._hideSubmenu($curItem.closest(".".concat("dx-submenu")));
                            return $parentItem
                        }
                        this._actions.onCloseRootSubmenu($curItem);
                        return $curItem
                    };
                    _proto._expandSubmenuHandler = function($items, location) {
                        const $curItem = this._getActiveItem(true);
                        const itemData = this._getItemData($curItem);
                        const node = this._dataAdapter.getNodeByItem(itemData);
                        const isItemHasSubmenu = this._hasSubmenu(node);
                        const $submenu = $curItem.children(".".concat("dx-submenu"));
                        if (isItemHasSubmenu && !$curItem.hasClass("dx-state-disabled")) {
                            if (!$submenu.length || "hidden" === $submenu.css("visibility")) {
                                this._showSubmenu($curItem)
                            }
                            return this._nextItem(this._getItemsByLocation(location))
                        }
                        this._actions.onExpandLastSubmenu($curItem);
                        return
                    };
                    _proto._clean = function() {
                        if (this._overlay) {
                            this._overlay.$element().remove();
                            this._overlay = null
                        }
                        this._detachShowContextMenuEvents(this._getTarget());
                        _MenuBase.prototype._clean.call(this)
                    };
                    _proto._initMarkup = function() {
                        this.$element().addClass("dx-has-context-menu");
                        _MenuBase.prototype._initMarkup.call(this)
                    };
                    _proto._render = function() {
                        _MenuBase.prototype._render.call(this);
                        this._renderVisibility(this.option("visible"));
                        this._addWidgetClass()
                    };
                    _proto._renderContentImpl = function() {
                        this._detachShowContextMenuEvents(this._getTarget());
                        this._attachShowContextMenuEvents()
                    };
                    _proto._attachKeyboardEvents = function() {
                        !this._keyboardListenerId && this._focusTarget().length && _MenuBase.prototype._attachKeyboardEvents.call(this)
                    };
                    _proto._renderContextMenuOverlay = function() {
                        if (this._overlay) {
                            return
                        }
                        const overlayOptions = this._getOverlayOptions();
                        this._overlay = this._createComponent((0, _renderer.default)("<div>").appendTo(this._$element), _ui.default, overlayOptions);
                        const $overlayContent = this._overlay.$content();
                        $overlayContent.addClass("dx-context-menu");
                        this._addCustomCssClass($overlayContent);
                        this._addPlatformDependentClass($overlayContent);
                        this._attachContextMenuEvent()
                    };
                    _proto.preventShowingDefaultContextMenuAboveOverlay = function() {
                        const $itemContainer = this._itemContainer();
                        const eventName = (0, _index.addNamespace)(_contextmenu.name, this.NAME);
                        _events_engine.default.off($itemContainer, eventName, ".".concat("dx-submenu"));
                        _events_engine.default.on($itemContainer, eventName, ".".concat("dx-submenu"), (e => {
                            e.stopPropagation();
                            e.preventDefault();
                            _events_engine.default.off($itemContainer, eventName, ".".concat("dx-submenu"))
                        }).bind(this))
                    };
                    _proto._itemContextMenuHandler = function(e) {
                        _MenuBase.prototype._itemContextMenuHandler.call(this, e);
                        e.stopPropagation()
                    };
                    _proto._addPlatformDependentClass = function($element) {
                        if (_devices.default.current().phone) {
                            $element.addClass("dx-menu-phone-overlay")
                        }
                    };
                    _proto._detachShowContextMenuEvents = function(target) {
                        const showEvent = this.getShowEvent(this.option("showEvent"));
                        if (!showEvent) {
                            return
                        }
                        const eventName = (0, _index.addNamespace)(showEvent, this.NAME);
                        if (this._showContextMenuEventHandler) {
                            _events_engine.default.off(_dom_adapter.default.getDocument(), eventName, target, this._showContextMenuEventHandler)
                        } else {
                            _events_engine.default.off((0, _renderer.default)(target), eventName)
                        }
                    };
                    _proto._attachShowContextMenuEvents = function() {
                        const target = this._getTarget();
                        const showEvent = this.getShowEvent(this.option("showEvent"));
                        if (!showEvent) {
                            return
                        }
                        const eventName = (0, _index.addNamespace)(showEvent, this.NAME);
                        let contextMenuAction = this._createAction(e => {
                            const delay = this.getShowDelay(this.option("showEvent"));
                            if (delay) {
                                setTimeout(() => this._show(e.event), delay)
                            } else {
                                this._show(e.event)
                            }
                        }, {
                            validatingTargetName: "target"
                        });
                        const handler = e => contextMenuAction({
                            event: e,
                            target: (0, _renderer.default)(e.currentTarget)
                        });
                        contextMenuAction = this._createAction(contextMenuAction);
                        if ((0, _type.isRenderer)(target) || target.nodeType || (0, _type.isWindow)(target)) {
                            this._showContextMenuEventHandler = void 0;
                            _events_engine.default.on(target, eventName, handler)
                        } else {
                            this._showContextMenuEventHandler = handler;
                            _events_engine.default.on(_dom_adapter.default.getDocument(), eventName, target, this._showContextMenuEventHandler)
                        }
                    };
                    _proto._hoverEndHandler = function(e) {
                        _MenuBase.prototype._hoverEndHandler.call(this, e);
                        e.stopPropagation()
                    };
                    _proto._renderDimensions = function() {};
                    _proto._renderContainer = function($wrapper, submenuContainer) {
                        const $holder = submenuContainer || this._itemContainer();
                        $wrapper = (0, _renderer.default)("<div>");
                        $wrapper.appendTo($holder).addClass("dx-submenu").css("visibility", submenuContainer ? "hidden" : "visible");
                        if (!$wrapper.parent().hasClass("dx-overlay-content")) {
                            this._addCustomCssClass($wrapper)
                        }
                        const $itemsContainer = _MenuBase.prototype._renderContainer.call(this, $wrapper);
                        if (submenuContainer) {
                            return $itemsContainer
                        }
                        if (this.option("width")) {
                            return $itemsContainer.css("minWidth", this.option("width"))
                        }
                        if (this.option("height")) {
                            return $itemsContainer.css("minHeight", this.option("height"))
                        }
                        return $itemsContainer
                    };
                    _proto._renderSubmenuItems = function(node, $itemFrame) {
                        this._renderItems(this._getChildNodes(node), $itemFrame);
                        this._actions.onSubmenuCreated({
                            itemElement: (0, _element.getPublicElement)($itemFrame),
                            itemData: node.internalFields.item,
                            submenuElement: (0, _element.getPublicElement)($itemFrame.children(".".concat("dx-submenu")))
                        })
                    };
                    _proto._getOverlayOptions = function() {
                        const position = this.option("position");
                        const overlayOptions = {
                            focusStateEnabled: this.option("focusStateEnabled"),
                            animation: this.option("animation"),
                            innerOverlay: true,
                            hideOnOutsideClick: e => this._hideOnOutsideClickHandler(e),
                            propagateOutsideClick: true,
                            hideOnParentScroll: true,
                            deferRendering: false,
                            position: {
                                at: position.at,
                                my: position.my,
                                of: this._getTarget(),
                                collision: "flipfit"
                            },
                            shading: false,
                            showTitle: false,
                            height: "auto",
                            width: "auto",
                            onShown: this._overlayShownActionHandler.bind(this),
                            onHiding: this._overlayHidingActionHandler.bind(this),
                            onHidden: this._overlayHiddenActionHandler.bind(this),
                            visualContainer: window
                        };
                        return overlayOptions
                    };
                    _proto._overlayShownActionHandler = function(arg) {
                        this._actions.onShown(arg)
                    };
                    _proto._overlayHidingActionHandler = function(arg) {
                        this._actions.onHiding(arg);
                        if (!arg.cancel) {
                            this._hideAllShownSubmenus();
                            this._setOptionWithoutOptionChange("visible", false)
                        }
                    };
                    _proto._overlayHiddenActionHandler = function(arg) {
                        this._actions.onHidden(arg)
                    };
                    _proto._shouldHideOnOutsideClick = function(e) {
                        const {
                            closeOnOutsideClick: closeOnOutsideClick,
                            hideOnOutsideClick: hideOnOutsideClick
                        } = this.option();
                        if ((0, _type.isFunction)(hideOnOutsideClick)) {
                            return hideOnOutsideClick(e)
                        } else if ((0, _type.isFunction)(closeOnOutsideClick)) {
                            return closeOnOutsideClick(e)
                        } else {
                            return hideOnOutsideClick || closeOnOutsideClick
                        }
                    };
                    _proto._hideOnOutsideClickHandler = function(e) {
                        if (!this._shouldHideOnOutsideClick(e)) {
                            return false
                        }
                        if (_dom_adapter.default.isDocument(e.target)) {
                            return true
                        }
                        const $activeItemContainer = this._getActiveItemsContainer(e.target);
                        const $itemContainers = this._getItemsContainers();
                        const $clickedItem = this._searchActiveItem(e.target);
                        const $rootItem = this.$element().parents(".".concat("dx-menu-item"));
                        const isRootItemClicked = $clickedItem[0] === $rootItem[0] && $clickedItem.length && $rootItem.length;
                        const isInnerOverlayClicked = this._isIncludeOverlay($activeItemContainer, $itemContainers) && $clickedItem.length;
                        if (isInnerOverlayClicked || isRootItemClicked) {
                            if ("onClick" === this._getShowSubmenuMode()) {
                                this._hideAllShownChildSubmenus($clickedItem)
                            }
                            return false
                        }
                        return true
                    };
                    _proto._getActiveItemsContainer = function(target) {
                        return (0, _renderer.default)(target).closest(".".concat("dx-menu-items-container"))
                    };
                    _proto._getItemsContainers = function() {
                        return this._overlay.$content().find(".".concat("dx-menu-items-container"))
                    };
                    _proto._searchActiveItem = function(target) {
                        return (0, _renderer.default)(target).closest(".".concat("dx-menu-item")).eq(0)
                    };
                    _proto._isIncludeOverlay = function($activeOverlay, $allOverlays) {
                        let isSame = false;
                        (0, _iterator.each)($allOverlays, (index, $overlay) => {
                            if ($activeOverlay.is($overlay) && !isSame) {
                                isSame = true
                            }
                        });
                        return isSame
                    };
                    _proto._hideAllShownChildSubmenus = function($clickedItem) {
                        const $submenuElements = $clickedItem.find(".".concat("dx-submenu"));
                        const shownSubmenus = (0, _extend.extend)([], this._shownSubmenus);
                        if ($submenuElements.length > 0) {
                            (0, _iterator.each)(shownSubmenus, (index, $submenu) => {
                                const $context = this._searchActiveItem($submenu.context).parent();
                                if ($context.parent().is($clickedItem.parent().parent()) && !$context.is($clickedItem.parent())) {
                                    this._hideSubmenu($submenu)
                                }
                            })
                        }
                    };
                    _proto._showSubmenu = function($item) {
                        const node = this._dataAdapter.getNodeByItem(this._getItemData($item));
                        this._hideSubmenusOnSameLevel($item);
                        if (!this._hasSubmenu(node)) {
                            return
                        }
                        const $submenu = $item.children(".".concat("dx-submenu"));
                        const isSubmenuRendered = $submenu.length;
                        _MenuBase.prototype._showSubmenu.call(this, $item);
                        if (!isSubmenuRendered) {
                            this._renderSubmenuItems(node, $item)
                        }
                        if (!this._isSubmenuVisible($submenu)) {
                            this._drawSubmenu($item)
                        }
                    };
                    _proto._hideSubmenusOnSameLevel = function($item) {
                        const $expandedItems = $item.parent(".".concat("dx-menu-item-wrapper")).siblings().find(".".concat("dx-menu-item-expanded"));
                        if ($expandedItems.length) {
                            $expandedItems.removeClass("dx-menu-item-expanded");
                            this._hideSubmenu($expandedItems.find(".".concat("dx-submenu")))
                        }
                    };
                    _proto._hideSubmenuGroup = function($submenu) {
                        if (this._isSubmenuVisible($submenu)) {
                            this._hideSubmenuCore($submenu)
                        }
                    };
                    _proto._isSubmenuVisible = function($submenu) {
                        return "visible" === $submenu.css("visibility")
                    };
                    _proto._drawSubmenu = function($itemElement) {
                        const animation = this.option("animation") ? this.option("animation").show : {};
                        const $submenu = $itemElement.children(".".concat("dx-submenu"));
                        const submenuPosition = this._getSubmenuPosition($itemElement);
                        if (this._overlay && this._overlay.option("visible")) {
                            if (!(0, _type.isDefined)(this._shownSubmenus)) {
                                this._shownSubmenus = []
                            }
                            if (!this._shownSubmenus.includes($submenu)) {
                                this._shownSubmenus.push($submenu)
                            }
                            if (animation) {
                                _fx.default.stop($submenu)
                            }
                            _position.default.setup($submenu, submenuPosition);
                            if (animation) {
                                if ((0, _type.isPlainObject)(animation.to)) {
                                    animation.to.position = submenuPosition
                                }
                                this._animate($submenu, animation)
                            }
                            $submenu.css("visibility", "visible")
                        }
                    };
                    _proto._animate = function($container, options) {
                        _fx.default.animate($container, options)
                    };
                    _proto._getSubmenuPosition = function($rootItem) {
                        const submenuDirection = this.option("submenuDirection").toLowerCase();
                        const $rootItemWrapper = $rootItem.parent(".".concat("dx-menu-item-wrapper"));
                        const position = {
                            collision: "flip",
                            of: $rootItemWrapper,
                            offset: {
                                h: 0,
                                v: -1
                            }
                        };
                        switch (submenuDirection) {
                            case "left":
                                position.at = "left top";
                                position.my = "right top";
                                break;
                            case "right":
                                position.at = "right top";
                                position.my = "left top";
                                break;
                            default:
                                if (this.option("rtlEnabled")) {
                                    position.at = "left top";
                                    position.my = "right top"
                                } else {
                                    position.at = "right top";
                                    position.my = "left top"
                                }
                        }
                        return position
                    };
                    _proto._updateSubmenuVisibilityOnClick = function(actionArgs) {
                        if (!actionArgs.args.length) {
                            return
                        }
                        const itemData = actionArgs.args[0].itemData;
                        const node = this._dataAdapter.getNodeByItem(itemData);
                        if (!node) {
                            return
                        }
                        const $itemElement = (0, _renderer.default)(actionArgs.args[0].itemElement);
                        let $submenu = $itemElement.find(".".concat("dx-submenu"));
                        const shouldRenderSubmenu = this._hasSubmenu(node) && !$submenu.length;
                        if (shouldRenderSubmenu) {
                            this._renderSubmenuItems(node, $itemElement);
                            $submenu = $itemElement.find(".".concat("dx-submenu"))
                        }
                        if ($itemElement.context === $submenu.context && "visible" === $submenu.css("visibility")) {
                            return
                        }
                        this._updateSelectedItemOnClick(actionArgs);
                        const notCloseMenuOnItemClick = itemData && false === itemData.closeMenuOnClick;
                        if (!itemData || itemData.disabled || notCloseMenuOnItemClick) {
                            return
                        }
                        if (0 === $submenu.length) {
                            const $prevSubmenu = (0, _renderer.default)($itemElement.parents(".".concat("dx-submenu"))[0]);
                            this._hideSubmenu($prevSubmenu);
                            if (!actionArgs.canceled && this._overlay && this._overlay.option("visible")) {
                                this.option("visible", false)
                            }
                        } else {
                            if (this._shownSubmenus && this._shownSubmenus.length > 0) {
                                if (this._shownSubmenus[0].is($submenu)) {
                                    this._hideSubmenu($submenu)
                                }
                            }
                            this._showSubmenu($itemElement)
                        }
                    };
                    _proto._hideSubmenu = function($curSubmenu) {
                        const shownSubmenus = (0, _extend.extend)([], this._shownSubmenus);
                        (0, _iterator.each)(shownSubmenus, (index, $submenu) => {
                            if ($curSubmenu.is($submenu) || (0, _dom.contains)($curSubmenu[0], $submenu[0])) {
                                $submenu.parent().removeClass("dx-menu-item-expanded");
                                this._hideSubmenuCore($submenu)
                            }
                        })
                    };
                    _proto._hideSubmenuCore = function($submenu) {
                        const index = this._shownSubmenus.indexOf($submenu);
                        const animation = this.option("animation") ? this.option("animation").hide : null;
                        if (index >= 0) {
                            this._shownSubmenus.splice(index, 1)
                        }
                        this._stopAnimate($submenu);
                        animation && this._animate($submenu, animation);
                        $submenu.css("visibility", "hidden")
                    };
                    _proto._stopAnimate = function($container) {
                        _fx.default.stop($container, true)
                    };
                    _proto._hideAllShownSubmenus = function() {
                        const shownSubmenus = (0, _extend.extend)([], this._shownSubmenus);
                        const $expandedItems = this._overlay.$content().find(".".concat("dx-menu-item-expanded"));
                        $expandedItems.removeClass("dx-menu-item-expanded");
                        (0, _iterator.each)(shownSubmenus, (_, $submenu) => {
                            this._hideSubmenu($submenu)
                        })
                    };
                    _proto._visibilityChanged = function(visible) {
                        if (visible) {
                            this._renderContentImpl()
                        }
                    };
                    _proto._optionChanged = function(args) {
                        if (ACTIONS.includes(args.name)) {
                            this._initActions();
                            return
                        }
                        switch (args.name) {
                            case "visible":
                                this._renderVisibility(args.value);
                                break;
                            case "showEvent":
                            case "position":
                            case "submenuDirection":
                                this._invalidate();
                                break;
                            case "target":
                                args.previousValue && this._detachShowContextMenuEvents(args.previousValue);
                                this._invalidate();
                                break;
                            case "closeOnOutsideClick":
                            case "hideOnOutsideClick":
                                break;
                            default:
                                _MenuBase.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto._renderVisibility = function(showing) {
                        return showing ? this._show() : this._hide()
                    };
                    _proto._toggleVisibility = function() {};
                    _proto._show = function(event) {
                        const args = {
                            jQEvent: event
                        };
                        let promise = (new _deferred.Deferred).reject().promise();
                        this._actions.onShowing(args);
                        if (args.cancel) {
                            return promise
                        }
                        const position = this._positionContextMenu(event);
                        if (position) {
                            var _event$originalEvent;
                            if (!this._overlay) {
                                this._renderContextMenuOverlay();
                                this._overlay.$content().addClass(this._widgetClass());
                                this._renderFocusState();
                                this._attachHoverEvents();
                                this._attachClickEvent();
                                this._renderItems(this._dataAdapter.getRootNodes())
                            }
                            this._setOptionWithoutOptionChange("visible", true);
                            this._overlay.option("position", position);
                            promise = this._overlay.show();
                            event && event.stopPropagation();
                            this._setAriaAttributes();
                            if ((null === event || void 0 === event ? void 0 : null === (_event$originalEvent = event.originalEvent) || void 0 === _event$originalEvent ? void 0 : _event$originalEvent.type) === _hold.default.name) {
                                this.preventShowingDefaultContextMenuAboveOverlay()
                            }
                        }
                        return promise
                    };
                    _proto._setAriaAttributes = function() {
                        this._overlayContentId = "dx-".concat(new _guid.default);
                        this.setAria("owns", this._overlayContentId);
                        this.setAria({
                            id: this._overlayContentId,
                            role: "menu"
                        }, this._overlay.$content())
                    };
                    _proto._cleanAriaAttributes = function() {
                        this._overlay && this.setAria("id", null, this._overlay.$content());
                        this.setAria("owns", void 0)
                    };
                    _proto._getTarget = function() {
                        return this.option("target") || this.option("position").of || (0, _renderer.default)(_dom_adapter.default.getDocument())
                    };
                    _proto._getContextMenuPosition = function() {
                        return (0, _extend.extend)({}, this.option("position"), {
                            of: this._getTarget()
                        })
                    };
                    _proto._positionContextMenu = function(jQEvent) {
                        let position = this._getContextMenuPosition();
                        const isInitialPosition = this._isInitialOptionValue("position");
                        const positioningAction = this._createActionByOption("onPositioning");
                        if (jQEvent && jQEvent.preventDefault && isInitialPosition) {
                            position.of = jQEvent
                        }
                        const actionArgs = {
                            position: position,
                            event: jQEvent
                        };
                        positioningAction(actionArgs);
                        if (actionArgs.cancel) {
                            position = null
                        } else if (actionArgs.event) {
                            actionArgs.event.cancel = true;
                            jQEvent.preventDefault()
                        }
                        return position
                    };
                    _proto._refresh = function() {
                        if (!(0, _window.hasWindow)()) {
                            _MenuBase.prototype._refresh.call(this)
                        } else if (this._overlay) {
                            const lastPosition = this._overlay.option("position");
                            _MenuBase.prototype._refresh.call(this);
                            this._overlay && this._overlay.option("position", lastPosition)
                        } else {
                            _MenuBase.prototype._refresh.call(this)
                        }
                    };
                    _proto._hide = function() {
                        let promise;
                        if (this._overlay) {
                            promise = this._overlay.hide();
                            this._setOptionWithoutOptionChange("visible", false)
                        }
                        this._cleanAriaAttributes();
                        this.option("focusedElement", null);
                        return promise || (new _deferred.Deferred).reject().promise()
                    };
                    _proto.toggle = function(showing) {
                        const visible = this.option("visible");
                        showing = void 0 === showing ? !visible : showing;
                        return this._renderVisibility(showing)
                    };
                    _proto.show = function() {
                        return this.toggle(true)
                    };
                    _proto.hide = function() {
                        return this.toggle(false)
                    };
                    return ContextMenu
                }(_ui2.default);
                (0, _component_registrator.default)("dxContextMenu", ContextMenu);
                var _default = ContextMenu;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        69639:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/context_menu/ui.menu_base.edit.strategy.js ***!
              \*******************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _uiCollection_widgetEditStrategy = _interopRequireDefault(__webpack_require__( /*! ../collection/ui.collection_widget.edit.strategy.plain */ 14174));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let MenuBaseEditStrategy = function(_PlainEditStrategy) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(MenuBaseEditStrategy, _PlainEditStrategy);

                    function MenuBaseEditStrategy() {
                        return _PlainEditStrategy.apply(this, arguments) || this
                    }
                    var _proto = MenuBaseEditStrategy.prototype;
                    _proto._getPlainItems = function() {
                        return (0, _iterator.map)(this._collectionWidget.option("items"), (function getMenuItems(item) {
                            return item.items ? [item].concat((0, _iterator.map)(item.items, getMenuItems)) : item
                        }))
                    };
                    _proto._stringifyItem = function(item) {
                        return JSON.stringify(item, (key, value) => {
                            if ("template" === key) {
                                return this._getTemplateString(value)
                            }
                            return value
                        })
                    };
                    _proto._getTemplateString = function(template) {
                        let result;
                        if ("object" === typeof template) {
                            result = (0, _renderer.default)(template).text()
                        } else {
                            result = template.toString()
                        }
                        return result
                    };
                    return MenuBaseEditStrategy
                }(_uiCollection_widgetEditStrategy.default);
                var _default = MenuBaseEditStrategy;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        46377:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/context_menu/ui.menu_base.js ***!
              \*****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _utils = __webpack_require__( /*! ../widget/utils.ink_ripple */ 72672);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../hierarchical_collection/ui.hierarchical_collection_widget */ 65810));
                var _uiMenu_baseEdit = _interopRequireDefault(__webpack_require__( /*! ./ui.menu_base.edit.strategy */ 69639));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _item = _interopRequireDefault(__webpack_require__( /*! ../collection/item */ 54778));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const ITEM_CLASS = "dx-menu-item";
                const DEFAULT_DELAY = {
                    show: 50,
                    hide: 300
                };
                const DX_MENU_ITEM_CAPTION_URL_CLASS = "".concat("dx-menu-item-text", "-with-url");
                let MenuBase = function(_HierarchicalCollecti) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(MenuBase, _HierarchicalCollecti);

                    function MenuBase() {
                        return _HierarchicalCollecti.apply(this, arguments) || this
                    }
                    var _proto = MenuBase.prototype;
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_HierarchicalCollecti.prototype._getDefaultOptions.call(this), {
                            items: [],
                            cssClass: "",
                            activeStateEnabled: true,
                            showSubmenuMode: {
                                name: "onHover",
                                delay: {
                                    show: 50,
                                    hide: 300
                                }
                            },
                            animation: {
                                show: {
                                    type: "fade",
                                    from: 0,
                                    to: 1,
                                    duration: 100
                                },
                                hide: {
                                    type: "fade",
                                    from: 1,
                                    to: 0,
                                    duration: 100
                                }
                            },
                            selectByClick: false,
                            focusOnSelectedItem: false,
                            keyExpr: null,
                            _itemAttributes: {
                                role: "menuitem"
                            },
                            useInkRipple: false
                        })
                    };
                    _proto._itemDataKey = function() {
                        return "dxMenuItemDataKey"
                    };
                    _proto._itemClass = function() {
                        return ITEM_CLASS
                    };
                    _proto._setAriaSelectionAttribute = function() {};
                    _proto._selectedItemClass = function() {
                        return "dx-menu-item-selected"
                    };
                    _proto._widgetClass = function() {
                        return "dx-menu-base"
                    };
                    _proto._focusTarget = function() {
                        return this._itemContainer()
                    };
                    _proto._clean = function() {
                        this.option("focusedElement", null);
                        _HierarchicalCollecti.prototype._clean.call(this)
                    };
                    _proto._supportedKeys = function() {
                        return (0, _extend.extend)(_HierarchicalCollecti.prototype._supportedKeys.call(this), {
                            space: () => {
                                const $item = (0, _renderer.default)(this.option("focusedElement"));
                                if (!$item.length || !this._isSelectionEnabled()) {
                                    return
                                }
                                this.selectItem($item[0])
                            },
                            pageUp: _common.noop,
                            pageDown: _common.noop
                        })
                    };
                    _proto._isSelectionEnabled = function() {
                        return "single" === this.option("selectionMode")
                    };
                    _proto._init = function() {
                        this._activeStateUnit = ".".concat(ITEM_CLASS);
                        _HierarchicalCollecti.prototype._init.call(this);
                        this._renderSelectedItem();
                        this._initActions()
                    };
                    _proto._getLinkContainer = function(iconContainer, textContainer, _ref) {
                        let {
                            linkAttr: linkAttr,
                            url: url
                        } = _ref;
                        null === iconContainer || void 0 === iconContainer ? void 0 : iconContainer.addClass("dx-icon-with-url");
                        null === textContainer || void 0 === textContainer ? void 0 : textContainer.addClass(DX_MENU_ITEM_CAPTION_URL_CLASS);
                        return _HierarchicalCollecti.prototype._getLinkContainer.call(this, iconContainer, textContainer, {
                            linkAttr: linkAttr,
                            url: url
                        })
                    };
                    _proto._addContent = function($container, itemData) {
                        const {
                            html: html,
                            url: url
                        } = itemData;
                        if (url) {
                            $container.html(html);
                            const link = this._getLinkContainer(this._getIconContainer(itemData), this._getTextContainer(itemData), itemData);
                            $container.append(link)
                        } else {
                            _HierarchicalCollecti.prototype._addContent.call(this, $container, itemData)
                        }
                        $container.append(this._getPopoutContainer(itemData));
                        this._addContentClasses(itemData, $container.parent())
                    };
                    _proto._getTextContainer = function(itemData) {
                        const {
                            text: text
                        } = itemData;
                        if (!text) {
                            return
                        }
                        const $itemContainer = (0, _renderer.default)("<span>").addClass("dx-menu-item-text");
                        const itemText = (0, _type.isPlainObject)(itemData) ? text : String(itemData);
                        return $itemContainer.text(itemText)
                    };
                    _proto._getItemExtraPropNames = function() {
                        return ["url", "linkAttr"]
                    };
                    _proto._getPopoutContainer = function(itemData) {
                        const items = itemData.items;
                        let $popOutContainer;
                        if (items && items.length) {
                            const $popOutImage = (0, _renderer.default)("<div>").addClass("dx-menu-item-popout");
                            $popOutContainer = (0, _renderer.default)("<span>").addClass("dx-menu-item-popout-container").append($popOutImage)
                        }
                        return $popOutContainer
                    };
                    _proto._getDataAdapterOptions = function() {
                        return {
                            rootValue: 0,
                            multipleSelection: false,
                            recursiveSelection: false,
                            recursiveExpansion: false,
                            searchValue: ""
                        }
                    };
                    _proto._selectByItem = function(selectedItem) {
                        if (!selectedItem) {
                            return
                        }
                        const nodeToSelect = this._dataAdapter.getNodeByItem(selectedItem);
                        this._dataAdapter.toggleSelection(nodeToSelect.internalFields.key, true)
                    };
                    _proto._renderSelectedItem = function() {
                        const selectedKeys = this._dataAdapter.getSelectedNodesKeys();
                        const selectedKey = selectedKeys.length && selectedKeys[0];
                        const selectedItem = this.option("selectedItem");
                        if (!selectedKey) {
                            this._selectByItem(selectedItem);
                            return
                        }
                        const node = this._dataAdapter.getNodeByKey(selectedKey);
                        if (false === node.selectable) {
                            return
                        }
                        if (!selectedItem) {
                            this.option("selectedItem", node.internalFields.item);
                            return
                        }
                        if (selectedItem !== node.internalFields.item) {
                            this._dataAdapter.toggleSelection(selectedKey, false);
                            this._selectByItem(selectedItem)
                        }
                    };
                    _proto._initActions = function() {};
                    _proto._initMarkup = function() {
                        _HierarchicalCollecti.prototype._initMarkup.call(this);
                        this.option("useInkRipple") && this._renderInkRipple()
                    };
                    _proto._renderInkRipple = function() {
                        this._inkRipple = (0, _utils.render)()
                    };
                    _proto._toggleActiveState = function($element, value, e) {
                        _HierarchicalCollecti.prototype._toggleActiveState.apply(this, arguments);
                        if (!this._inkRipple) {
                            return
                        }
                        const config = {
                            element: $element,
                            event: e
                        };
                        if (value) {
                            this._inkRipple.showWave(config)
                        } else {
                            this._inkRipple.hideWave(config)
                        }
                    };
                    _proto._getShowSubmenuMode = function() {
                        let optionValue = this.option("showSubmenuMode");
                        optionValue = (0, _type.isObject)(optionValue) ? optionValue.name : optionValue;
                        return this._isDesktopDevice() ? optionValue : "onClick"
                    };
                    _proto._initSelectedItems = function() {};
                    _proto._isDesktopDevice = function() {
                        return "desktop" === _devices.default.real().deviceType
                    };
                    _proto._initEditStrategy = function() {
                        const Strategy = _uiMenu_baseEdit.default;
                        this._editStrategy = new Strategy(this)
                    };
                    _proto._addCustomCssClass = function($element) {
                        $element.addClass(this.option("cssClass"))
                    };
                    _proto._itemWrapperSelector = function() {
                        return ".".concat("dx-menu-item-wrapper")
                    };
                    _proto._hoverStartHandler = function(e) {
                        const $itemElement = this._getItemElementByEventArgs(e);
                        if (!$itemElement || this._isItemDisabled($itemElement)) {
                            return
                        }
                        e.stopPropagation();
                        if ("onHover" === this._getShowSubmenuMode()) {
                            clearTimeout(this._showSubmenusTimeout);
                            this._showSubmenusTimeout = setTimeout(this._showSubmenu.bind(this, $itemElement), this._getSubmenuDelay("show"))
                        }
                    };
                    _proto._getAvailableItems = function($itemElements) {
                        return _HierarchicalCollecti.prototype._getAvailableItems.call(this, $itemElements).filter((function() {
                            return "hidden" !== (0, _renderer.default)(this).css("visibility")
                        }))
                    };
                    _proto._isItemDisabled = function($item) {
                        return this._disabledGetter($item.data(this._itemDataKey()))
                    };
                    _proto._showSubmenu = function($itemElement) {
                        this._addExpandedClass($itemElement)
                    };
                    _proto._addExpandedClass = function(itemElement) {
                        (0, _renderer.default)(itemElement).addClass("dx-menu-item-expanded")
                    };
                    _proto._getSubmenuDelay = function(action) {
                        const {
                            delay: delay
                        } = this.option("showSubmenuMode");
                        if (!(0, _type.isDefined)(delay)) {
                            return DEFAULT_DELAY[action]
                        }
                        return (0, _type.isObject)(delay) ? delay[action] : delay
                    };
                    _proto._getItemElementByEventArgs = function(eventArgs) {
                        let $target = (0, _renderer.default)(eventArgs.target);
                        if ($target.hasClass(this._itemClass()) || $target.get(0) === eventArgs.currentTarget) {
                            return $target
                        }
                        while (!$target.hasClass(this._itemClass())) {
                            $target = $target.parent();
                            if ($target.hasClass("dx-submenu")) {
                                return null
                            }
                        }
                        return $target
                    };
                    _proto._hoverEndHandler = function() {
                        clearTimeout(this._showSubmenusTimeout)
                    };
                    _proto._hasSubmenu = function(node) {
                        return node && node.internalFields.childrenKeys.length
                    };
                    _proto._renderContentImpl = function() {
                        this._renderItems(this._dataAdapter.getRootNodes())
                    };
                    _proto._renderItems = function(nodes, submenuContainer) {
                        if (nodes.length) {
                            this.hasIcons = false;
                            const $nodeContainer = this._renderContainer(this.$element(), submenuContainer);
                            let firstVisibleIndex = -1;
                            let nextGroupFirstIndex = -1;
                            (0, _iterator.each)(nodes, (index, node) => {
                                const isVisibleNode = false !== node.visible;
                                if (isVisibleNode && firstVisibleIndex < 0) {
                                    firstVisibleIndex = index
                                }
                                const isBeginGroup = firstVisibleIndex < index && (node.beginGroup || index === nextGroupFirstIndex);
                                if (isBeginGroup) {
                                    nextGroupFirstIndex = isVisibleNode ? index : index + 1
                                }
                                if (index === nextGroupFirstIndex && firstVisibleIndex < index) {
                                    this._renderSeparator($nodeContainer)
                                }
                                this._renderItem(index, node, $nodeContainer)
                            });
                            if (!this.hasIcons) {
                                $nodeContainer.addClass("dx-menu-no-icons")
                            }
                        }
                    };
                    _proto._renderContainer = function($wrapper) {
                        const $container = (0, _renderer.default)("<ul>");
                        this.setAria("role", "none", $container);
                        return $container.appendTo($wrapper).addClass("dx-menu-items-container")
                    };
                    _proto._createDOMElement = function($nodeContainer) {
                        const $node = (0, _renderer.default)("<li>");
                        this.setAria("role", "none", $node);
                        return $node.appendTo($nodeContainer).addClass("dx-menu-item-wrapper")
                    };
                    _proto._renderItem = function(index, node, $nodeContainer, $nodeElement) {
                        const items = this.option("items");
                        const $node = $nodeElement || this._createDOMElement($nodeContainer);
                        if (items[index + 1] && items[index + 1].beginGroup) {
                            $node.addClass("dx-menu-last-group-item")
                        }
                        const $itemFrame = _HierarchicalCollecti.prototype._renderItem.call(this, index, node.internalFields.item, $node);
                        if (node.internalFields.item === this.option("selectedItem")) {
                            $itemFrame.addClass("dx-menu-item-selected")
                        }
                        $itemFrame.attr("tabIndex", -1);
                        if (this._hasSubmenu(node)) {
                            this.setAria("haspopup", "true", $itemFrame)
                        }
                    };
                    _proto._renderItemFrame = function(index, itemData, $itemContainer) {
                        const $itemFrame = $itemContainer.children(".".concat(ITEM_CLASS));
                        return $itemFrame.length ? $itemFrame : _HierarchicalCollecti.prototype._renderItemFrame.apply(this, arguments)
                    };
                    _proto._refreshItem = function($item, item) {
                        const node = this._dataAdapter.getNodeByItem(item);
                        const index = $item.data(this._itemIndexKey());
                        const $nodeContainer = $item.closest("ul");
                        const $nodeElement = $item.closest("li");
                        this._renderItem(index, node, $nodeContainer, $nodeElement)
                    };
                    _proto._addContentClasses = function(itemData, $itemFrame) {
                        const hasText = itemData.text ? !!itemData.text.length : false;
                        const hasIcon = !!itemData.icon;
                        const hasSubmenu = itemData.items ? !!itemData.items.length : false;
                        $itemFrame.toggleClass("dx-menu-item-has-text", hasText);
                        $itemFrame.toggleClass("dx-menu-item-has-icon", hasIcon);
                        if (!this.hasIcons) {
                            this.hasIcons = hasIcon
                        }
                        $itemFrame.toggleClass("dx-menu-item-has-submenu", hasSubmenu)
                    };
                    _proto._getItemContent = function($itemFrame) {
                        let $itemContent = _HierarchicalCollecti.prototype._getItemContent.call(this, $itemFrame);
                        if (!$itemContent.length) {
                            $itemContent = $itemFrame.children(".".concat("dx-menu-item-content"))
                        }
                        return $itemContent
                    };
                    _proto._postprocessRenderItem = function(args) {
                        const $itemElement = (0, _renderer.default)(args.itemElement);
                        const selectedIndex = this._dataAdapter.getSelectedNodesKeys();
                        if (!selectedIndex.length || !this._selectedGetter(args.itemData) || !this._isItemSelectable(args.itemData)) {
                            this._setAriaSelectionAttribute($itemElement, "false");
                            return
                        }
                        const node = this._dataAdapter.getNodeByItem(args.itemData);
                        if (node.internalFields.key === selectedIndex[0]) {
                            $itemElement.addClass(this._selectedItemClass());
                            this._setAriaSelectionAttribute($itemElement, "true")
                        } else {
                            this._setAriaSelectionAttribute($itemElement, "false")
                        }
                    };
                    _proto._isItemSelectable = function(item) {
                        return false !== item.selectable
                    };
                    _proto._renderSeparator = function($itemsContainer) {
                        (0, _renderer.default)("<li>").appendTo($itemsContainer).addClass("dx-menu-separator")
                    };
                    _proto._itemClickHandler = function(e) {
                        if (e._skipHandling) {
                            return
                        }
                        const itemClickActionHandler = this._createAction(this._updateSubmenuVisibilityOnClick.bind(this));
                        this._itemDXEventHandler(e, "onItemClick", {}, {
                            beforeExecute: this._itemClick,
                            afterExecute: itemClickActionHandler.bind(this)
                        });
                        e._skipHandling = true
                    };
                    _proto._itemClick = function(actionArgs) {
                        const {
                            event: event,
                            itemData: itemData
                        } = actionArgs.args[0];
                        const $itemElement = this._getItemElementByEventArgs(event);
                        const link = $itemElement.find(".".concat("dx-item-url")).get(0);
                        if (itemData.url && link) {
                            link.click()
                        }
                    };
                    _proto._updateSubmenuVisibilityOnClick = function(actionArgs) {
                        this._updateSelectedItemOnClick(actionArgs);
                        if ("onClick" === this._getShowSubmenuMode()) {
                            this._addExpandedClass(actionArgs.args[0].itemElement)
                        }
                    };
                    _proto._updateSelectedItemOnClick = function(actionArgs) {
                        const args = actionArgs.args ? actionArgs.args[0] : actionArgs;
                        if (!this._isItemSelectAllowed(args.itemData)) {
                            return
                        }
                        const selectedItemKey = this._dataAdapter.getSelectedNodesKeys();
                        const selectedNode = selectedItemKey.length && this._dataAdapter.getNodeByKey(selectedItemKey[0]);
                        if (selectedNode) {
                            this._toggleItemSelection(selectedNode, false)
                        }
                        if (!selectedNode || selectedNode.internalFields.item !== args.itemData) {
                            this.selectItem(args.itemData)
                        } else {
                            this._fireSelectionChangeEvent(null, this.option("selectedItem"));
                            this._setOptionWithoutOptionChange("selectedItem", null)
                        }
                    };
                    _proto._isItemSelectAllowed = function(item) {
                        const isSelectByClickEnabled = this._isSelectionEnabled() && this.option("selectByClick");
                        return !this._isContainerEmpty() && isSelectByClickEnabled && this._isItemSelectable(item) && !this._itemsGetter(item)
                    };
                    _proto._isContainerEmpty = function() {
                        return this._itemContainer().is(":empty")
                    };
                    _proto._syncSelectionOptions = function() {
                        return (0, _common.asyncNoop)()
                    };
                    _proto._optionChanged = function(args) {
                        switch (args.name) {
                            case "showSubmenuMode":
                                break;
                            case "selectedItem": {
                                const node = this._dataAdapter.getNodeByItem(args.value);
                                const selectedKey = this._dataAdapter.getSelectedNodesKeys()[0];
                                if (node && node.internalFields.key !== selectedKey) {
                                    if (false === node.selectable) {
                                        break
                                    }
                                    if (selectedKey) {
                                        this._toggleItemSelection(this._dataAdapter.getNodeByKey(selectedKey), false)
                                    }
                                    this._toggleItemSelection(node, true);
                                    this._updateSelectedItems()
                                }
                                break
                            }
                            case "cssClass":
                            case "position":
                            case "selectByClick":
                            case "animation":
                            case "useInkRipple":
                                this._invalidate();
                                break;
                            default:
                                _HierarchicalCollecti.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto._toggleItemSelection = function(node, value) {
                        const itemElement = this._getElementByItem(node.internalFields.item);
                        itemElement && (0, _renderer.default)(itemElement).toggleClass("dx-menu-item-selected");
                        this._dataAdapter.toggleSelection(node.internalFields.key, value)
                    };
                    _proto._getElementByItem = function(itemData) {
                        let result;
                        (0, _iterator.each)(this._itemElements(), (_, itemElement) => {
                            if ((0, _renderer.default)(itemElement).data(this._itemDataKey()) !== itemData) {
                                return true
                            }
                            result = itemElement;
                            return false
                        });
                        return result
                    };
                    _proto._updateSelectedItems = function(oldSelection, newSelection) {
                        if (oldSelection || newSelection) {
                            this._fireSelectionChangeEvent(newSelection, oldSelection)
                        }
                    };
                    _proto._fireSelectionChangeEvent = function(addedSelection, removedSelection) {
                        this._createActionByOption("onSelectionChanged", {
                            excludeValidators: ["disabled", "readOnly"]
                        })({
                            addedItems: [addedSelection],
                            removedItems: [removedSelection]
                        })
                    };
                    _proto.selectItem = function(itemElement) {
                        const itemData = itemElement.nodeType ? this._getItemData(itemElement) : itemElement;
                        const selectedKey = this._dataAdapter.getSelectedNodesKeys()[0];
                        const selectedItem = this.option("selectedItem");
                        const node = this._dataAdapter.getNodeByItem(itemData);
                        if (node.internalFields.key !== selectedKey) {
                            if (selectedKey) {
                                this._toggleItemSelection(this._dataAdapter.getNodeByKey(selectedKey), false)
                            }
                            this._toggleItemSelection(node, true);
                            this._updateSelectedItems(selectedItem, itemData);
                            this._setOptionWithoutOptionChange("selectedItem", itemData)
                        }
                    };
                    _proto.unselectItem = function(itemElement) {
                        const itemData = itemElement.nodeType ? this._getItemData(itemElement) : itemElement;
                        const node = this._dataAdapter.getNodeByItem(itemData);
                        const selectedItem = this.option("selectedItem");
                        if (node.internalFields.selected) {
                            this._toggleItemSelection(node, false);
                            this._updateSelectedItems(selectedItem, null);
                            this._setOptionWithoutOptionChange("selectedItem", null)
                        }
                    };
                    return MenuBase
                }(_ui.default);
                MenuBase.ItemClass = _item.default;
                var _default = MenuBase;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        1186:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/data_grid.js ***!
              \*************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_widget = _interopRequireDefault(__webpack_require__( /*! ../__internal/grids/data_grid/m_widget */ 10590));
                _interopRequireDefault(__webpack_require__( /*! ./filter_builder */ 20301));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                var _default = _m_widget.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        88221:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/data_grid/ui.data_grid.js ***!
              \**************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_widget = (obj = __webpack_require__( /*! ../../__internal/grids/data_grid/m_widget */ 10590), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _m_widget.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        29589:
            /*!************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/date_box.js ***!
              \************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _ui = (obj = __webpack_require__( /*! ./date_box/ui.date_box */ 92478), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _ui.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        69248:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/date_box/ui.date_box.base.js ***!
              \*****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _dom = __webpack_require__( /*! ../../core/utils/dom */ 3532);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _support = __webpack_require__( /*! ../../core/utils/support */ 60137);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _browser = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/browser */ 47810));
                var _config = _interopRequireDefault(__webpack_require__( /*! ../../core/config */ 80209));
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 91198));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./ui.date_utils */ 72309));
                var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date_serialization */ 69434));
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../drop_down_editor/ui.drop_down_editor */ 44687));
                var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../localization/date */ 91500));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _uiDate_boxStrategy = _interopRequireDefault(__webpack_require__( /*! ./ui.date_box.strategy.calendar */ 46919));
                var _uiDate_boxStrategy2 = _interopRequireDefault(__webpack_require__( /*! ./ui.date_box.strategy.date_view */ 67814));
                var _uiDate_boxStrategy3 = _interopRequireDefault(__webpack_require__( /*! ./ui.date_box.strategy.native */ 84416));
                var _uiDate_boxStrategy4 = _interopRequireDefault(__webpack_require__( /*! ./ui.date_box.strategy.calendar_with_time */ 97e3));
                var _uiDate_boxStrategy5 = _interopRequireDefault(__webpack_require__( /*! ./ui.date_box.strategy.list */ 57728));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();
                const PICKER_TYPE = {
                    calendar: "calendar",
                    rollers: "rollers",
                    list: "list",
                    native: "native"
                };
                const TYPE = {
                    date: "date",
                    datetime: "datetime",
                    time: "time"
                };
                const STRATEGY_NAME_calendar = "Calendar",
                    STRATEGY_NAME_dateView = "DateView",
                    STRATEGY_NAME_native = "Native",
                    STRATEGY_NAME_calendarWithTime = "CalendarWithTime",
                    STRATEGY_NAME_list = "List";
                const STRATEGY_CLASSES = {
                    Calendar: _uiDate_boxStrategy.default,
                    DateView: _uiDate_boxStrategy2.default,
                    Native: _uiDate_boxStrategy3.default,
                    CalendarWithTime: _uiDate_boxStrategy4.default,
                    List: _uiDate_boxStrategy5.default
                };
                const DateBox = _ui2.default.inherit({
                    _supportedKeys: function() {
                        return (0, _extend.extend)(this.callBase(), this._strategy.supportedKeys())
                    },
                    _renderButtonContainers: function() {
                        this.callBase.apply(this, arguments);
                        this._strategy.customizeButtons()
                    },
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            type: "date",
                            showAnalogClock: true,
                            value: null,
                            dateSerializationFormat: void 0,
                            min: void 0,
                            max: void 0,
                            displayFormat: null,
                            interval: 30,
                            disabledDates: null,
                            pickerType: PICKER_TYPE.calendar,
                            invalidDateMessage: _message.default.format("dxDateBox-validation-datetime"),
                            dateOutOfRangeMessage: _message.default.format("validation-range"),
                            applyButtonText: _message.default.format("OK"),
                            adaptivityEnabled: false,
                            calendarOptions: {},
                            useHiddenSubmitElement: true,
                            _showValidationIcon: true
                        })
                    },
                    _defaultOptionsRules: function() {
                        return this.callBase().concat([{
                            device: {
                                platform: "ios"
                            },
                            options: {
                                "dropDownOptions.showTitle": true
                            }
                        }, {
                            device: {
                                platform: "android"
                            },
                            options: {
                                buttonsLocation: "bottom after"
                            }
                        }, {
                            device: function() {
                                const realDevice = _devices.default.real();
                                const platform = realDevice.platform;
                                return "ios" === platform || "android" === platform
                            },
                            options: {
                                pickerType: PICKER_TYPE.native
                            }
                        }, {
                            device: {
                                platform: "generic",
                                deviceType: "desktop"
                            },
                            options: {
                                buttonsLocation: "bottom after"
                            }
                        }])
                    },
                    _initOptions: function(options) {
                        this._userOptions = (0, _extend.extend)({}, options);
                        this.callBase(options);
                        this._updatePickerOptions()
                    },
                    _updatePickerOptions: function() {
                        let pickerType = this.option("pickerType");
                        const type = this.option("type");
                        if (pickerType === PICKER_TYPE.list && (type === TYPE.datetime || type === TYPE.date)) {
                            pickerType = PICKER_TYPE.calendar
                        }
                        if (type === TYPE.time && pickerType === PICKER_TYPE.calendar) {
                            pickerType = PICKER_TYPE.list
                        }
                        this._pickerType = pickerType;
                        this._setShowDropDownButtonOption()
                    },
                    _setShowDropDownButtonOption() {
                        const platform = _devices.default.real().platform;
                        const isMozillaOnAndroid = "android" === platform && _browser.default.mozilla;
                        const isNativePickerType = this._isNativeType();
                        let showDropDownButton = "generic" !== platform || !isNativePickerType;
                        if (isNativePickerType && isMozillaOnAndroid) {
                            showDropDownButton = false
                        }
                        this.option({
                            showDropDownButton: showDropDownButton
                        })
                    },
                    _init: function() {
                        this._initStrategy();
                        this.option((0, _extend.extend)({}, this._strategy.getDefaultOptions(), this._userOptions));
                        delete this._userOptions;
                        this.callBase()
                    },
                    _toLowerCaseFirstLetter: function(string) {
                        return string.charAt(0).toLowerCase() + string.substr(1)
                    },
                    _initStrategy: function() {
                        const strategyName = this._getStrategyName(this._getFormatType());
                        const strategy = STRATEGY_CLASSES[strategyName];
                        if (!(this._strategy && this._strategy.NAME === strategyName)) {
                            this._strategy = new strategy(this)
                        }
                    },
                    _getFormatType: function() {
                        const currentType = this.option("type");
                        const isTime = /h|m|s/g.test(currentType);
                        const isDate = /d|M|Y/g.test(currentType);
                        let type = "";
                        if (isDate) {
                            type += TYPE.date
                        }
                        if (isTime) {
                            type += TYPE.time
                        }
                        return type
                    },
                    _getStrategyName: function(type) {
                        const pickerType = this._pickerType;
                        if (pickerType === PICKER_TYPE.rollers) {
                            return STRATEGY_NAME_dateView
                        } else if (pickerType === PICKER_TYPE.native) {
                            return STRATEGY_NAME_native
                        }
                        if (type === TYPE.date) {
                            return STRATEGY_NAME_calendar
                        }
                        if (type === TYPE.datetime) {
                            return STRATEGY_NAME_calendarWithTime
                        }
                        return STRATEGY_NAME_list
                    },
                    _initMarkup: function() {
                        this.$element().addClass("dx-datebox");
                        this.callBase();
                        this._refreshFormatClass();
                        this._refreshPickerTypeClass();
                        this._strategy.renderInputMinMax(this._input())
                    },
                    _render: function() {
                        this.callBase();
                        this._formatValidationIcon()
                    },
                    _renderDimensions: function() {
                        this.callBase();
                        this.$element().toggleClass("dx-auto-width", !this.option("width"));
                        this._updatePopupWidth();
                        this._updatePopupHeight()
                    },
                    _dimensionChanged: function() {
                        this.callBase();
                        this._updatePopupHeight()
                    },
                    _updatePopupHeight: function() {
                        if (this._popup) {
                            var _this$_strategy$_upda, _this$_strategy;
                            null === (_this$_strategy$_upda = (_this$_strategy = this._strategy)._updatePopupHeight) || void 0 === _this$_strategy$_upda ? void 0 : _this$_strategy$_upda.call(_this$_strategy)
                        }
                    },
                    _refreshFormatClass: function() {
                        const $element = this.$element();
                        (0, _iterator.each)(TYPE, (function(_, item) {
                            $element.removeClass("dx-datebox-" + item)
                        }));
                        $element.addClass("dx-datebox-" + this.option("type"))
                    },
                    _refreshPickerTypeClass: function() {
                        const $element = this.$element();
                        (0, _iterator.each)(PICKER_TYPE, (function(_, item) {
                            $element.removeClass("dx-datebox-" + item)
                        }));
                        $element.addClass("dx-datebox-" + this._pickerType)
                    },
                    _formatValidationIcon: function() {
                        if (!(0, _window.hasWindow)()) {
                            return
                        }
                        const inputElement = this._input().get(0);
                        const isRtlEnabled = this.option("rtlEnabled");
                        const clearButtonWidth = this._getClearButtonWidth();
                        const longestElementDimensions = this._getLongestElementDimensions();
                        const curWidth = parseFloat(window.getComputedStyle(inputElement).width) - clearButtonWidth;
                        const shouldHideValidationIcon = longestElementDimensions.width > curWidth;
                        const style = inputElement.style;
                        this.$element().toggleClass("dx-show-invalid-badge", !shouldHideValidationIcon && this.option("_showValidationIcon"));
                        if (shouldHideValidationIcon) {
                            if (void 0 === this._storedPadding) {
                                this._storedPadding = isRtlEnabled ? longestElementDimensions.leftPadding : longestElementDimensions.rightPadding
                            }
                            isRtlEnabled ? style.paddingLeft = 0 : style.paddingRight = 0
                        } else {
                            isRtlEnabled ? style.paddingLeft = this._storedPadding + "px" : style.paddingRight = this._storedPadding + "px"
                        }
                    },
                    _getClearButtonWidth: function() {
                        let clearButtonWidth = 0;
                        if (this._isClearButtonVisible() && "" === this._input().val()) {
                            const clearButtonElement = this.$element().find(".dx-clear-button-area").get(0);
                            clearButtonWidth = parseFloat(window.getComputedStyle(clearButtonElement).width)
                        }
                        return clearButtonWidth
                    },
                    _getLongestElementDimensions: function() {
                        const format = this._strategy.getDisplayFormat(this.option("displayFormat"));
                        const longestValue = _date2.default.format(_ui.default.getLongestDate(format, _date2.default.getMonthNames(), _date2.default.getDayNames()), format);
                        const $input = this._input();
                        const inputElement = $input.get(0);
                        const $longestValueElement = (0, _dom.createTextElementHiddenCopy)($input, longestValue);
                        const isPaddingStored = void 0 !== this._storedPadding;
                        const storedPadding = !isPaddingStored ? 0 : this._storedPadding;
                        $longestValueElement.appendTo(this.$element());
                        const elementWidth = parseFloat(window.getComputedStyle($longestValueElement.get(0)).width);
                        const rightPadding = parseFloat(window.getComputedStyle(inputElement).paddingRight);
                        const leftPadding = parseFloat(window.getComputedStyle(inputElement).paddingLeft);
                        const necessaryWidth = elementWidth + leftPadding + rightPadding + storedPadding;
                        $longestValueElement.remove();
                        return {
                            width: necessaryWidth,
                            leftPadding: leftPadding,
                            rightPadding: rightPadding
                        }
                    },
                    _getKeyboardListeners() {
                        return this.callBase().concat([this._strategy && this._strategy.getKeyboardListener()])
                    },
                    _renderPopup: function() {
                        this.callBase();
                        this._popup.$wrapper().addClass("dx-datebox-wrapper");
                        this._renderPopupWrapper()
                    },
                    _getPopupToolbarItems() {
                        var _this$_strategy$_getP, _this$_strategy$_getP2, _this$_strategy2;
                        const defaultItems = this.callBase();
                        return null !== (_this$_strategy$_getP = null === (_this$_strategy$_getP2 = (_this$_strategy2 = this._strategy)._getPopupToolbarItems) || void 0 === _this$_strategy$_getP2 ? void 0 : _this$_strategy$_getP2.call(_this$_strategy2, defaultItems)) && void 0 !== _this$_strategy$_getP ? _this$_strategy$_getP : defaultItems
                    },
                    _popupConfig: function() {
                        const popupConfig = this.callBase();
                        return (0, _extend.extend)(this._strategy.popupConfig(popupConfig), {
                            title: this._getPopupTitle(),
                            dragEnabled: false
                        })
                    },
                    _renderPopupWrapper: function() {
                        if (!this._popup) {
                            return
                        }
                        const $element = this.$element();
                        const classPostfixes = (0, _extend.extend)({}, TYPE, PICKER_TYPE);
                        (0, _iterator.each)(classPostfixes, function(_, item) {
                            $element.removeClass("dx-datebox-wrapper-" + item)
                        }.bind(this));
                        this._popup.$wrapper().addClass("dx-datebox-wrapper-" + this.option("type")).addClass("dx-datebox-wrapper-" + this._pickerType).addClass("dx-dropdowneditor-overlay")
                    },
                    _renderPopupContent: function() {
                        this.callBase();
                        this._strategy.renderPopupContent()
                    },
                    _popupShowingHandler: function() {
                        this.callBase();
                        this._strategy.popupShowingHandler()
                    },
                    _popupShownHandler: function() {
                        this.callBase();
                        this._strategy.renderOpenedState()
                    },
                    _popupHiddenHandler: function() {
                        this.callBase();
                        this._strategy.renderOpenedState();
                        this._strategy.popupHiddenHandler()
                    },
                    _visibilityChanged: function(visible) {
                        if (visible) {
                            this._formatValidationIcon()
                        }
                    },
                    _clearValueHandler: function(e) {
                        this.option("text", "");
                        this.callBase(e)
                    },
                    _readOnlyPropValue: function() {
                        if (this._pickerType === PICKER_TYPE.rollers) {
                            return true
                        }
                        const platform = _devices.default.real().platform;
                        const isCustomValueDisabled = this._isNativeType() && ("ios" === platform || "android" === platform);
                        if (isCustomValueDisabled) {
                            return this.option("readOnly")
                        }
                        return this.callBase()
                    },
                    _isClearButtonVisible: function() {
                        return this.callBase() && !this._isNativeType()
                    },
                    _renderValue: function() {
                        const value = this.dateOption("value");
                        this.option("text", this._getDisplayedText(value));
                        this._strategy.renderValue();
                        return this.callBase()
                    },
                    _setSubmitValue: function() {
                        const value = this.dateOption("value");
                        const dateSerializationFormat = this.option("dateSerializationFormat");
                        const submitFormat = _ui.default.SUBMIT_FORMATS_MAP[this.option("type")];
                        const submitValue = dateSerializationFormat ? _date_serialization.default.serializeDate(value, dateSerializationFormat) : _ui.default.toStandardDateFormat(value, submitFormat);
                        this._getSubmitElement().val(submitValue)
                    },
                    _getDisplayedText: function(value) {
                        const mode = this.option("mode");
                        let displayedText;
                        if ("text" === mode) {
                            const displayFormat = this._strategy.getDisplayFormat(this.option("displayFormat"));
                            displayedText = _date2.default.format(value, displayFormat)
                        } else {
                            const format = this._getFormatByMode(mode);
                            if (format) {
                                displayedText = _date2.default.format(value, format)
                            } else {
                                displayedText = _ui.default.toStandardDateFormat(value, mode)
                            }
                        }
                        return displayedText
                    },
                    _getFormatByMode: function(mode) {
                        return (0, _support.inputType)(mode) ? null : _ui.default.FORMATS_MAP[mode]
                    },
                    _valueChangeEventHandler: function(e) {
                        const {
                            text: text,
                            type: type,
                            validationError: validationError
                        } = this.option();
                        const currentValue = this.dateOption("value");
                        if (text === this._getDisplayedText(currentValue)) {
                            this._recallInternalValidation(currentValue, validationError);
                            return
                        }
                        const parsedDate = this._getParsedDate(text);
                        const value = null !== currentValue && void 0 !== currentValue ? currentValue : this._getDateByDefault();
                        const newValue = _ui.default.mergeDates(value, parsedDate, type);
                        const date = parsedDate && "time" === type ? newValue : parsedDate;
                        if (this._applyInternalValidation(date).isValid) {
                            const displayedText = this._getDisplayedText(newValue);
                            if (value && newValue && value.getTime() === newValue.getTime() && displayedText !== text) {
                                this._renderValue()
                            } else {
                                this.dateValue(newValue, e)
                            }
                        }
                    },
                    _recallInternalValidation(value, validationError) {
                        if (!validationError || validationError.editorSpecific) {
                            this._applyInternalValidation(value);
                            this._applyCustomValidation(value)
                        }
                    },
                    _getDateByDefault: function() {
                        return this._strategy.useCurrentDateByDefault() && this._strategy.getDefaultDate()
                    },
                    _getParsedDate: function(text) {
                        const displayFormat = this._strategy.getDisplayFormat(this.option("displayFormat"));
                        const parsedText = this._strategy.getParsedText(text, displayFormat);
                        return null !== parsedText && void 0 !== parsedText ? parsedText : void 0
                    },
                    _applyInternalValidation(value) {
                        const text = this.option("text");
                        const hasText = !!text && null !== value;
                        const isDate = !!value && (0, _type.isDate)(value) && !isNaN(value.getTime());
                        const isDateInRange = isDate && _date.default.dateInRange(value, this.dateOption("min"), this.dateOption("max"), this.option("type"));
                        const isValid = !hasText && !value || isDateInRange;
                        let validationMessage = "";
                        if (!isDate) {
                            validationMessage = this.option("invalidDateMessage")
                        } else if (!isDateInRange) {
                            validationMessage = this.option("dateOutOfRangeMessage")
                        }
                        this._updateInternalValidationState(isValid, validationMessage);
                        return {
                            isValid: isValid,
                            isDate: isDate
                        }
                    },
                    _updateInternalValidationState(isValid, validationMessage) {
                        this.option({
                            isValid: isValid,
                            validationError: isValid ? null : {
                                editorSpecific: true,
                                message: validationMessage
                            }
                        })
                    },
                    _applyCustomValidation: function(value) {
                        this.validationRequest.fire({
                            editor: this,
                            value: this._serializeDate(value)
                        })
                    },
                    _isValueChanged: function(newValue) {
                        const oldValue = this.dateOption("value");
                        const oldTime = oldValue && oldValue.getTime();
                        const newTime = newValue && newValue.getTime();
                        return oldTime !== newTime
                    },
                    _isTextChanged: function(newValue) {
                        const oldText = this.option("text");
                        const newText = newValue && this._getDisplayedText(newValue) || "";
                        return oldText !== newText
                    },
                    _renderProps: function() {
                        this.callBase();
                        this._input().attr("autocomplete", "off")
                    },
                    _renderOpenedState: function() {
                        if (!this._isNativeType()) {
                            this.callBase()
                        }
                        if (this._strategy.isAdaptivityChanged()) {
                            this._refreshStrategy()
                        }
                    },
                    _getPopupTitle: function() {
                        const placeholder = this.option("placeholder");
                        if (placeholder) {
                            return placeholder
                        }
                        const type = this.option("type");
                        if (type === TYPE.time) {
                            return _message.default.format("dxDateBox-simulatedDataPickerTitleTime")
                        }
                        if (type === TYPE.date || type === TYPE.datetime) {
                            return _message.default.format("dxDateBox-simulatedDataPickerTitleDate")
                        }
                        return ""
                    },
                    _refreshStrategy: function() {
                        this._strategy.dispose();
                        this._initStrategy();
                        this.option(this._strategy.getDefaultOptions());
                        this._refresh()
                    },
                    _applyButtonHandler: function(e) {
                        const value = this._strategy.getValue();
                        this.dateValue(value, e.event);
                        this.callBase()
                    },
                    _dispose: function() {
                        var _this$_strategy3;
                        this.callBase();
                        null === (_this$_strategy3 = this._strategy) || void 0 === _this$_strategy3 ? void 0 : _this$_strategy3.dispose()
                    },
                    _isNativeType: function() {
                        return this._pickerType === PICKER_TYPE.native
                    },
                    _updatePopupTitle: function() {
                        var _this$_popup;
                        null === (_this$_popup = this._popup) || void 0 === _this$_popup ? void 0 : _this$_popup.option("title", this._getPopupTitle())
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "showClearButton":
                            case "buttons":
                                this.callBase.apply(this, arguments);
                                this._formatValidationIcon();
                                break;
                            case "pickerType":
                                this._updatePickerOptions({
                                    pickerType: args.value
                                });
                                this._refreshStrategy();
                                this._refreshPickerTypeClass();
                                this._invalidate();
                                break;
                            case "type":
                                this._updatePickerOptions({
                                    format: args.value
                                });
                                this._refreshStrategy();
                                this._refreshFormatClass();
                                this._renderPopupWrapper();
                                this._formatValidationIcon();
                                this._updateValue();
                                break;
                            case "placeholder":
                                this.callBase.apply(this, arguments);
                                this._updatePopupTitle();
                                break;
                            case "min":
                            case "max": {
                                const isValid = this.option("isValid");
                                this._applyInternalValidation(this.dateOption("value"));
                                if (!isValid) {
                                    this._applyCustomValidation(this.dateOption("value"))
                                }
                                this._invalidate();
                                break
                            }
                            case "dateSerializationFormat":
                            case "interval":
                            case "disabledDates":
                            case "calendarOptions":
                                this._invalidate();
                                break;
                            case "displayFormat":
                                this.option("text", this._getDisplayedText(this.dateOption("value")));
                                this._renderInputValue();
                                break;
                            case "text":
                                this._strategy.textChangedHandler(args.value);
                                this.callBase.apply(this, arguments);
                                break;
                            case "isValid":
                                this.callBase.apply(this, arguments);
                                this._formatValidationIcon();
                                break;
                            case "showDropDownButton":
                                this._formatValidationIcon();
                                this.callBase.apply(this, arguments);
                                break;
                            case "readOnly":
                                this.callBase.apply(this, arguments);
                                this._formatValidationIcon();
                                break;
                            case "todayButtonText":
                                this._setPopupOption("toolbarItems", this._getPopupToolbarItems());
                                break;
                            case "invalidDateMessage":
                            case "dateOutOfRangeMessage":
                            case "adaptivityEnabled":
                            case "showAnalogClock":
                            case "_showValidationIcon":
                                break;
                            default:
                                this.callBase.apply(this, arguments)
                        }
                    },
                    _getSerializationFormat: function() {
                        const value = this.option("value");
                        if (this.option("dateSerializationFormat") && (0, _config.default)().forceIsoDateParsing) {
                            return this.option("dateSerializationFormat")
                        }
                        if ((0, _type.isNumeric)(value)) {
                            return "number"
                        }
                        if (!(0, _type.isString)(value)) {
                            return
                        }
                        return _date_serialization.default.getDateSerializationFormat(value)
                    },
                    _updateValue: function(value) {
                        this.callBase();
                        this._applyInternalValidation(null !== value && void 0 !== value ? value : this.dateOption("value"))
                    },
                    dateValue: function(value, dxEvent) {
                        const isValueChanged = this._isValueChanged(value);
                        if (isValueChanged && dxEvent) {
                            this._saveValueChangeEvent(dxEvent)
                        }
                        if (!isValueChanged) {
                            if (this._isTextChanged(value)) {
                                this._updateValue(value)
                            } else if ("" === this.option("text")) {
                                this._applyCustomValidation(value)
                            }
                        }
                        return this.dateOption("value", value)
                    },
                    dateOption: function(optionName, value) {
                        if (1 === arguments.length) {
                            return _date_serialization.default.deserializeDate(this.option(optionName))
                        }
                        this.option(optionName, this._serializeDate(value))
                    },
                    _serializeDate: function(date) {
                        const serializationFormat = this._getSerializationFormat();
                        return _date_serialization.default.serializeDate(date, serializationFormat)
                    },
                    _clearValue: function() {
                        const value = this.option("value");
                        this.callBase();
                        if (null === value) {
                            this._applyCustomValidation(null)
                        }
                    },
                    clear: function() {
                        const value = this.option("value");
                        this.callBase();
                        if (null === value) {
                            this._applyInternalValidation(null)
                        }
                    }
                });
                var _default = DateBox;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        92478:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/date_box/ui.date_box.js ***!
              \************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _uiDate_box = _interopRequireDefault(__webpack_require__( /*! ./ui.date_box.mask */ 28105));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }(0, _component_registrator.default)("dxDateBox", _uiDate_box.default);
                var _default = _uiDate_box.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        28105:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/date_box/ui.date_box.mask.js ***!
              \*****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _dom = __webpack_require__( /*! ../../core/utils/dom */ 3532);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _math = __webpack_require__( /*! ../../core/utils/math */ 60810);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _uiDate_boxMask = __webpack_require__( /*! ./ui.date_box.mask.parts */ 28298);
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../localization/date */ 91500));
                var _date2 = __webpack_require__( /*! ../../localization/ldml/date.parser */ 2892);
                var _date3 = __webpack_require__( /*! ../../localization/ldml/date.format */ 59937);
                var _uiDate_box = _interopRequireDefault(__webpack_require__( /*! ./ui.date_box.base */ 69248));
                var _number = _interopRequireDefault(__webpack_require__( /*! ../../localization/number */ 18016));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _browser = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/browser */ 47810));
                var _default_date_names = _interopRequireDefault(__webpack_require__( /*! ../../localization/default_date_names */ 15564));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const DateBoxMask = _uiDate_box.default.inherit({
                    _supportedKeys(e) {
                        const originalHandlers = this.callBase(e);
                        const callOriginalHandler = e => {
                            const originalHandler = originalHandlers[(0, _index.normalizeKeyName)(e)];
                            return originalHandler && originalHandler.apply(this, [e])
                        };
                        const applyHandler = (e, maskHandler) => {
                            if (this._shouldUseOriginalHandler(e)) {
                                return callOriginalHandler.apply(this, [e])
                            } else {
                                return maskHandler.apply(this, [e])
                            }
                        };
                        return (0, _extend.extend)({}, originalHandlers, {
                            del: e => applyHandler(e, event => {
                                this._revertPart(1);
                                this._isAllSelected() || event.preventDefault()
                            }),
                            backspace: e => applyHandler(e, event => {
                                this._revertPart(-1);
                                this._isAllSelected() || event.preventDefault()
                            }),
                            home: e => applyHandler(e, event => {
                                this._selectFirstPart();
                                event.preventDefault()
                            }),
                            end: e => applyHandler(e, event => {
                                this._selectLastPart();
                                event.preventDefault()
                            }),
                            escape: e => applyHandler(e, event => {
                                this._revertChanges(event)
                            }),
                            enter: e => applyHandler(e, () => {
                                this._enterHandler()
                            }),
                            leftArrow: e => applyHandler(e, event => {
                                this._selectNextPart(-1);
                                event.preventDefault()
                            }),
                            rightArrow: e => applyHandler(e, event => {
                                this._selectNextPart(1);
                                event.preventDefault()
                            }),
                            upArrow: e => applyHandler(e, event => {
                                this._upDownArrowHandler(1);
                                event.preventDefault()
                            }),
                            downArrow: e => applyHandler(e, event => {
                                this._upDownArrowHandler(-1);
                                event.preventDefault()
                            })
                        })
                    },
                    _shouldUseOriginalHandler(e) {
                        const isNotDeletingInCalendar = this.option("opened") && e && -1 === ["backspace", "del"].indexOf((0, _index.normalizeKeyName)(e));
                        return !this._useMaskBehavior() || isNotDeletingInCalendar || e && e.altKey
                    },
                    _upDownArrowHandler(step) {
                        this._setNewDateIfEmpty();
                        const originalValue = this._getActivePartValue(this._initialMaskValue);
                        const currentValue = this._getActivePartValue();
                        const delta = currentValue - originalValue;
                        this._loadMaskValue(this._initialMaskValue);
                        this._changePartValue(delta + step, true)
                    },
                    _changePartValue(step, lockOtherParts) {
                        const isAmPmPartActive = "a" === this._getActivePartProp("pattern");
                        if (isAmPmPartActive) {
                            this._toggleAmPm()
                        } else {
                            this._partIncrease(step, lockOtherParts)
                        }
                    },
                    _toggleAmPm() {
                        const currentValue = this._getActivePartProp("text");
                        const indexOfCurrentValue = _default_date_names.default.getPeriodNames().indexOf(currentValue);
                        const newValue = 1 ^ indexOfCurrentValue;
                        this._setActivePartValue(newValue)
                    },
                    _getDefaultOptions() {
                        return (0, _extend.extend)(this.callBase(), {
                            useMaskBehavior: false,
                            emptyDateValue: new Date(2e3, 0, 1, 0, 0, 0)
                        })
                    },
                    _isSingleCharKey(_ref) {
                        let {
                            originalEvent: originalEvent,
                            alt: alt
                        } = _ref;
                        const key = originalEvent.data || originalEvent.key;
                        return "string" === typeof key && 1 === key.length && !alt && !(0, _index.isCommandKeyPressed)(originalEvent)
                    },
                    _isSingleDigitKey(e) {
                        var _e$originalEvent;
                        const data = null === (_e$originalEvent = e.originalEvent) || void 0 === _e$originalEvent ? void 0 : _e$originalEvent.data;
                        return 1 === (null === data || void 0 === data ? void 0 : data.length) && parseInt(data, 10)
                    },
                    _useBeforeInputEvent: function() {
                        return _devices.default.real().android
                    },
                    _keyInputHandler(e, key) {
                        const oldInputValue = this._input().val();
                        this._processInputKey(key);
                        e.preventDefault();
                        const isValueChanged = oldInputValue !== this._input().val();
                        isValueChanged && _events_engine.default.trigger(this._input(), "input")
                    },
                    _keyboardHandler(e) {
                        let key = e.originalEvent.key;
                        const result = this.callBase(e);
                        if (!this._useMaskBehavior() || this._useBeforeInputEvent()) {
                            return result
                        }
                        if (_browser.default.chrome && "Process" === e.key && 0 === e.code.indexOf("Digit")) {
                            key = e.code.replace("Digit", "");
                            this._processInputKey(key);
                            this._maskInputHandler = () => {
                                this._renderSelectedPart()
                            }
                        } else if (this._isSingleCharKey(e)) {
                            this._keyInputHandler(e.originalEvent, key)
                        }
                        return result
                    },
                    _maskBeforeInputHandler(e) {
                        this._maskInputHandler = null;
                        const {
                            inputType: inputType
                        } = e.originalEvent;
                        if ("insertCompositionText" === inputType) {
                            this._maskInputHandler = () => {
                                this._renderSelectedPart()
                            }
                        }
                        const isBackwardDeletion = "deleteContentBackward" === inputType;
                        const isForwardDeletion = "deleteContentForward" === inputType;
                        if (isBackwardDeletion || isForwardDeletion) {
                            const direction = isBackwardDeletion ? -1 : 1;
                            this._maskInputHandler = () => {
                                this._revertPart();
                                this._selectNextPart(direction)
                            }
                        }
                        if (!this._useMaskBehavior() || !this._isSingleCharKey(e)) {
                            return
                        }
                        const key = e.originalEvent.data;
                        this._keyInputHandler(e, key);
                        return true
                    },
                    _keyPressHandler(e) {
                        const {
                            originalEvent: event
                        } = e;
                        if ("insertCompositionText" === (null === event || void 0 === event ? void 0 : event.inputType) && this._isSingleDigitKey(e)) {
                            this._processInputKey(event.data);
                            this._renderDisplayText(this._getDisplayedText(this._maskValue));
                            this._selectNextPart()
                        }
                        this.callBase(e);
                        if (this._maskInputHandler) {
                            this._maskInputHandler();
                            this._maskInputHandler = null
                        }
                    },
                    _processInputKey(key) {
                        if (this._isAllSelected()) {
                            this._activePartIndex = 0
                        }
                        this._setNewDateIfEmpty();
                        if (isNaN(parseInt(key))) {
                            this._searchString(key)
                        } else {
                            this._searchNumber(key)
                        }
                    },
                    _isAllSelected() {
                        const caret = this._caret();
                        return caret.end - caret.start === this.option("text").length
                    },
                    _getFormatPattern() {
                        if (this._formatPattern) {
                            return this._formatPattern
                        }
                        const format = this._strategy.getDisplayFormat(this.option("displayFormat"));
                        const isLDMLPattern = (0, _type.isString)(format) && !_date.default._getPatternByFormat(format);
                        if (isLDMLPattern) {
                            this._formatPattern = format
                        } else {
                            this._formatPattern = (0, _date3.getFormat)((function(value) {
                                return _date.default.format(value, format)
                            }))
                        }
                        return this._formatPattern
                    },
                    _setNewDateIfEmpty() {
                        if (!this._maskValue) {
                            const value = "time" === this.option("type") ? new Date(null) : new Date;
                            this._maskValue = value;
                            this._initialMaskValue = value;
                            this._renderDateParts()
                        }
                    },
                    _partLimitsReached(max) {
                        const maxLimitLength = String(max).length;
                        const formatLength = this._getActivePartProp("pattern").length;
                        const isShortFormat = 1 === formatLength;
                        const maxSearchLength = isShortFormat ? maxLimitLength : Math.min(formatLength, maxLimitLength);
                        const isLengthExceeded = this._searchValue.length === maxSearchLength;
                        const isValueOverflowed = parseInt(this._searchValue + "0") > max;
                        return isLengthExceeded || isValueOverflowed
                    },
                    _searchNumber(char) {
                        const {
                            max: max
                        } = this._getActivePartLimits();
                        const maxLimitLength = String(max).length;
                        this._searchValue = (this._searchValue + char).substr(-maxLimitLength);
                        if (isNaN(this._searchValue)) {
                            this._searchValue = char
                        }
                        this._setActivePartValue(this._searchValue);
                        if (this._partLimitsReached(max)) {
                            this._selectNextPart(1)
                        }
                    },
                    _searchString(char) {
                        if (!isNaN(parseInt(this._getActivePartProp("text")))) {
                            return
                        }
                        const limits = this._getActivePartProp("limits")(this._maskValue);
                        const startString = this._searchValue + char.toLowerCase();
                        const endLimit = limits.max - limits.min;
                        for (let i = 0; i <= endLimit; i++) {
                            this._loadMaskValue(this._initialMaskValue);
                            this._changePartValue(i + 1);
                            if (0 === this._getActivePartProp("text").toLowerCase().indexOf(startString)) {
                                this._searchValue = startString;
                                return
                            }
                        }
                        this._setNewDateIfEmpty();
                        if (this._searchValue) {
                            this._clearSearchValue();
                            this._searchString(char)
                        }
                    },
                    _clearSearchValue() {
                        this._searchValue = ""
                    },
                    _revertPart: function(direction) {
                        if (!this._isAllSelected()) {
                            const actual = this._getActivePartValue(this.option("emptyDateValue"));
                            this._setActivePartValue(actual);
                            this._selectNextPart(direction)
                        }
                        this._clearSearchValue()
                    },
                    _useMaskBehavior() {
                        return this.option("useMaskBehavior") && "text" === this.option("mode")
                    },
                    _prepareRegExpInfo() {
                        this._regExpInfo = (0, _date2.getRegExpInfo)(this._getFormatPattern(), _date.default);
                        const regexp = this._regExpInfo.regexp;
                        const source = regexp.source;
                        const flags = regexp.flags;
                        const quantifierRegexp = new RegExp(/(\{[0-9]+,?[0-9]*\})/);
                        const convertedSource = source.split(quantifierRegexp).map(sourcePart => quantifierRegexp.test(sourcePart) ? sourcePart : _number.default.convertDigits(sourcePart, false)).join("");
                        this._regExpInfo.regexp = new RegExp(convertedSource, flags)
                    },
                    _initMaskState() {
                        this._activePartIndex = 0;
                        this._formatPattern = null;
                        this._prepareRegExpInfo();
                        this._loadMaskValue()
                    },
                    _renderMask() {
                        this.callBase();
                        this._detachMaskEvents();
                        this._clearMaskState();
                        if (this._useMaskBehavior()) {
                            this._attachMaskEvents();
                            this._initMaskState();
                            this._renderDateParts()
                        }
                    },
                    _renderDateParts() {
                        if (!this._useMaskBehavior()) {
                            return
                        }
                        const text = this.option("text") || this._getDisplayedText(this._maskValue);
                        if (text) {
                            this._dateParts = (0, _uiDate_boxMask.renderDateParts)(text, this._regExpInfo);
                            if (!this._input().is(":hidden")) {
                                this._selectNextPart()
                            }
                        }
                    },
                    _detachMaskEvents() {
                        _events_engine.default.off(this._input(), ".dateBoxMask")
                    },
                    _attachMaskEvents() {
                        _events_engine.default.on(this._input(), (0, _index.addNamespace)("dxclick", "dateBoxMask"), this._maskClickHandler.bind(this));
                        _events_engine.default.on(this._input(), (0, _index.addNamespace)("paste", "dateBoxMask"), this._maskPasteHandler.bind(this));
                        _events_engine.default.on(this._input(), (0, _index.addNamespace)("drop", "dateBoxMask"), () => {
                            this._renderSelectedPart()
                        });
                        _events_engine.default.on(this._input(), (0, _index.addNamespace)("compositionend", "dateBoxMask"), this._maskCompositionEndHandler.bind(this));
                        if (this._useBeforeInputEvent()) {
                            _events_engine.default.on(this._input(), (0, _index.addNamespace)("beforeinput", "dateBoxMask"), this._maskBeforeInputHandler.bind(this))
                        }
                    },
                    _renderSelectedPart() {
                        this._renderDisplayText(this._getDisplayedText(this._maskValue));
                        this._selectNextPart()
                    },
                    _selectLastPart() {
                        if (this.option("text")) {
                            this._activePartIndex = this._dateParts.length;
                            this._selectNextPart(-1)
                        }
                    },
                    _selectFirstPart() {
                        if (this.option("text")) {
                            this._activePartIndex = -1;
                            this._selectNextPart(1)
                        }
                    },
                    _onMouseWheel(e) {
                        if (this._useMaskBehavior()) {
                            this._partIncrease(e.delta > 0 ? 1 : -1, e)
                        }
                    },
                    _selectNextPart() {
                        let step = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0;
                        if (!this.option("text") || this._disposed) {
                            return
                        }
                        if (step) {
                            this._initialMaskValue = new Date(this._maskValue)
                        }
                        let index = (0, _math.fitIntoRange)(this._activePartIndex + step, 0, this._dateParts.length - 1);
                        if (this._dateParts[index].isStub) {
                            const isBoundaryIndex = 0 === index && step < 0 || index === this._dateParts.length - 1 && step > 0;
                            if (!isBoundaryIndex) {
                                this._selectNextPart(step >= 0 ? step + 1 : step - 1);
                                return
                            } else {
                                index = this._activePartIndex
                            }
                        }
                        if (this._activePartIndex !== index) {
                            this._clearSearchValue()
                        }
                        this._activePartIndex = index;
                        this._caret(this._getActivePartProp("caret"))
                    },
                    _getRealLimitsPattern() {
                        if ("d" === this._getActivePartProp("pattern")[0]) {
                            return "dM"
                        }
                    },
                    _getActivePartLimits(lockOtherParts) {
                        const limitFunction = this._getActivePartProp("limits");
                        return limitFunction(this._maskValue, lockOtherParts && this._getRealLimitsPattern())
                    },
                    _getActivePartValue(dateValue) {
                        dateValue = dateValue || this._maskValue;
                        const getter = this._getActivePartProp("getter");
                        return (0, _type.isFunction)(getter) ? getter(dateValue) : dateValue[getter]()
                    },
                    _addLeadingZeroes(value) {
                        const zeroes = this._searchValue.match(/^0+/);
                        const limits = this._getActivePartLimits();
                        const maxLimitLength = String(limits.max).length;
                        return ((zeroes && zeroes[0] || "") + String(value)).substr(-maxLimitLength)
                    },
                    _setActivePartValue(value, dateValue) {
                        dateValue = dateValue || this._maskValue;
                        const setter = this._getActivePartProp("setter");
                        const limits = this._getActivePartLimits();
                        value = (0, _math.inRange)(value, limits.min, limits.max) ? value : value % 10;
                        value = this._addLeadingZeroes((0, _math.fitIntoRange)(value, limits.min, limits.max));
                        (0, _type.isFunction)(setter) ? setter(dateValue, value): dateValue[setter](value);
                        this._renderDisplayText(this._getDisplayedText(dateValue));
                        this._renderDateParts()
                    },
                    _getActivePartProp(property) {
                        if (!this._dateParts || !this._dateParts[this._activePartIndex]) {
                            return
                        }
                        return this._dateParts[this._activePartIndex][property]
                    },
                    _loadMaskValue() {
                        let value = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.dateOption("value");
                        this._maskValue = value && new Date(value);
                        this._initialMaskValue = value && new Date(value)
                    },
                    _saveMaskValue() {
                        const value = this._maskValue && new Date(this._maskValue);
                        if (value && "date" === this.option("type")) {
                            value.setHours(0, 0, 0, 0)
                        }
                        this._initialMaskValue = new Date(value);
                        this.dateOption("value", value)
                    },
                    _revertChanges() {
                        this._loadMaskValue();
                        this._renderDisplayText(this._getDisplayedText(this._maskValue));
                        this._renderDateParts()
                    },
                    _renderDisplayText(text) {
                        this.callBase(text);
                        if (this._useMaskBehavior()) {
                            this.option("text", text)
                        }
                    },
                    _partIncrease(step, lockOtherParts) {
                        this._setNewDateIfEmpty();
                        const {
                            max: max,
                            min: min
                        } = this._getActivePartLimits(lockOtherParts);
                        let newValue = step + this._getActivePartValue();
                        if (newValue > max) {
                            newValue = this._applyLimits(newValue, {
                                limitBase: min,
                                limitClosest: max,
                                max: max
                            })
                        } else if (newValue < min) {
                            newValue = this._applyLimits(newValue, {
                                limitBase: max,
                                limitClosest: min,
                                max: max
                            })
                        }
                        this._setActivePartValue(newValue)
                    },
                    _applyLimits(newValue, _ref2) {
                        let {
                            limitBase: limitBase,
                            limitClosest: limitClosest,
                            max: max
                        } = _ref2;
                        const delta = (newValue - limitClosest) % max;
                        return delta ? limitBase + delta - 1 * (0, _math.sign)(delta) : limitClosest
                    },
                    _maskClickHandler() {
                        this._loadMaskValue(this._maskValue);
                        if (this.option("text")) {
                            this._activePartIndex = (0, _uiDate_boxMask.getDatePartIndexByPosition)(this._dateParts, this._caret().start);
                            if (!this._isAllSelected()) {
                                if ((0, _type.isDefined)(this._activePartIndex)) {
                                    this._caret(this._getActivePartProp("caret"))
                                } else {
                                    this._selectLastPart()
                                }
                            }
                        }
                    },
                    _maskCompositionEndHandler(e) {
                        this._input().val(this._getDisplayedText(this._maskValue));
                        this._selectNextPart();
                        this._maskInputHandler = () => {
                            this._renderSelectedPart()
                        }
                    },
                    _maskPasteHandler(e) {
                        const newText = this._replaceSelectedText(this.option("text"), this._caret(), (0, _dom.clipboardText)(e));
                        const date = _date.default.parse(newText, this._getFormatPattern());
                        if (date && this._isDateValid(date)) {
                            this._maskValue = date;
                            this._renderDisplayText(this._getDisplayedText(this._maskValue));
                            this._renderDateParts();
                            this._selectNextPart()
                        }
                        e.preventDefault()
                    },
                    _isDateValid: date => (0, _type.isDate)(date) && !isNaN(date),
                    _isValueDirty() {
                        const value = this.dateOption("value");
                        return (this._maskValue && this._maskValue.getTime()) !== (value && value.getTime())
                    },
                    _fireChangeEvent() {
                        this._clearSearchValue();
                        if (this._isValueDirty()) {
                            _events_engine.default.trigger(this._input(), "change")
                        }
                    },
                    _enterHandler() {
                        this._fireChangeEvent();
                        this._selectNextPart(1)
                    },
                    _focusOutHandler(e) {
                        const shouldFireChangeEvent = this._useMaskBehavior() && !e.isDefaultPrevented();
                        if (shouldFireChangeEvent) {
                            this._fireChangeEvent();
                            this.callBase(e);
                            this._selectFirstPart(e)
                        } else {
                            this.callBase(e)
                        }
                    },
                    _valueChangeEventHandler(e) {
                        const text = this.option("text");
                        if (this._useMaskBehavior()) {
                            this._saveValueChangeEvent(e);
                            if (!text) {
                                this._maskValue = null
                            } else if (null === this._maskValue) {
                                this._loadMaskValue(text)
                            }
                            this._saveMaskValue()
                        } else {
                            this.callBase(e)
                        }
                    },
                    _optionChanged(args) {
                        switch (args.name) {
                            case "useMaskBehavior":
                                this._renderMask();
                                break;
                            case "displayFormat":
                            case "mode":
                                this.callBase(args);
                                this._renderMask();
                                break;
                            case "value":
                                this._loadMaskValue();
                                this.callBase(args);
                                this._renderDateParts();
                                break;
                            case "emptyDateValue":
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _clearMaskState() {
                        this._clearSearchValue();
                        delete this._dateParts;
                        delete this._activePartIndex;
                        delete this._maskValue
                    },
                    clear() {
                        this._clearMaskState();
                        this._activePartIndex = 0;
                        this.callBase()
                    },
                    _clean() {
                        this.callBase();
                        this._detachMaskEvents();
                        this._clearMaskState()
                    }
                });
                var _default = DateBoxMask;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        28298:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/date_box/ui.date_box.mask.parts.js ***!
              \***********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.renderDateParts = exports.getDatePartIndexByPosition = void 0;
                var _date = __webpack_require__( /*! ../../localization/ldml/date.parser */ 2892);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _math = __webpack_require__( /*! ../../core/utils/math */ 60810);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                const monthGetter = date => date.getMonth() + 1;
                const monthSetter = (date, value) => {
                    const day = date.getDate();
                    const monthLimits = getLimits("M", date);
                    const newValue = (0, _math.fitIntoRange)(parseInt(value), monthLimits.min, monthLimits.max);
                    date.setMonth(newValue - 1, 1);
                    const {
                        min: min,
                        max: max
                    } = getLimits("dM", date);
                    const newDay = (0, _math.fitIntoRange)(day, min, max);
                    date.setDate(newDay)
                };
                const PATTERN_GETTERS = {
                    a: date => date.getHours() < 12 ? 0 : 1,
                    E: "getDay",
                    y: "getFullYear",
                    M: monthGetter,
                    L: monthGetter,
                    d: "getDate",
                    H: "getHours",
                    h: "getHours",
                    m: "getMinutes",
                    s: "getSeconds",
                    S: "getMilliseconds"
                };
                const PATTERN_SETTERS = (0, _extend.extend)({}, (0, _date.getPatternSetters)(), {
                    a: (date, value) => {
                        const hours = date.getHours();
                        const current = hours >= 12;
                        if (current === !!parseInt(value)) {
                            return
                        }
                        date.setHours((hours + 12) % 24)
                    },
                    d: (date, value) => {
                        const lastDayInMonth = getLimits("dM", date).max;
                        if (value > lastDayInMonth) {
                            date.setMonth(date.getMonth() + 1)
                        }
                        date.setDate(value)
                    },
                    h: (date, value) => {
                        const isPM = date.getHours() >= 12;
                        date.setHours(+value % 12 + (isPM ? 12 : 0))
                    },
                    M: monthSetter,
                    L: monthSetter,
                    E: (date, value) => {
                        if (value < 0) {
                            return
                        }
                        date.setDate(date.getDate() - date.getDay() + parseInt(value))
                    },
                    y: (date, value) => {
                        const currentYear = date.getFullYear();
                        const valueLength = String(value).length;
                        const maxLimitLength = String(getLimits("y", date).max).length;
                        const newValue = parseInt(String(currentYear).substr(0, maxLimitLength - valueLength) + value);
                        date.setFullYear(newValue)
                    }
                });
                const getPatternGetter = patternChar => PATTERN_GETTERS[patternChar] || (() => patternChar);
                exports.renderDateParts = (text, regExpInfo) => {
                    const result = regExpInfo.regexp.exec(text);
                    let start = 0;
                    let end = 0;
                    const sections = [];
                    for (let i = 1; i < result.length; i++) {
                        start = end;
                        end = start + result[i].length;
                        const pattern = regExpInfo.patterns[i - 1].replace(/^'|'$/g, "");
                        const getter = getPatternGetter(pattern[0]);
                        sections.push({
                            index: i - 1,
                            isStub: pattern === result[i],
                            caret: {
                                start: start,
                                end: end
                            },
                            pattern: pattern,
                            text: result[i],
                            limits: function() {
                                for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
                                    args[_key] = arguments[_key]
                                }
                                return getLimits(pattern[0], ...args)
                            },
                            setter: PATTERN_SETTERS[pattern[0]] || _common.noop,
                            getter: getter
                        })
                    }
                    return sections
                };
                const getLimits = (pattern, date, forcedPattern) => {
                    const limits = {
                        y: {
                            min: 0,
                            max: 9999
                        },
                        M: {
                            min: 1,
                            max: 12
                        },
                        L: {
                            min: 1,
                            max: 12
                        },
                        d: {
                            min: 1,
                            max: 31
                        },
                        dM: {
                            min: 1,
                            max: new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate()
                        },
                        E: {
                            min: 0,
                            max: 6
                        },
                        H: {
                            min: 0,
                            max: 23
                        },
                        h: {
                            min: 1,
                            max: 12
                        },
                        m: {
                            min: 0,
                            max: 59
                        },
                        s: {
                            min: 0,
                            max: 59
                        },
                        S: {
                            min: 0,
                            max: 999
                        },
                        a: {
                            min: 0,
                            max: 1
                        }
                    };
                    return limits[forcedPattern || pattern] || limits.getAmPm
                };
                exports.getDatePartIndexByPosition = (dateParts, position) => {
                    for (let i = 0; i < dateParts.length; i++) {
                        const caretInGroup = dateParts[i].caret.end >= position;
                        if (!dateParts[i].isStub && caretInGroup) {
                            return i
                        }
                    }
                    return null
                }
            },
        46919:
            /*!******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/date_box/ui.date_box.strategy.calendar.js ***!
              \******************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _calendar = _interopRequireDefault(__webpack_require__( /*! ../calendar */ 26559));
                var _uiDate_box = _interopRequireDefault(__webpack_require__( /*! ./ui.date_box.strategy */ 38129));
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 91198));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _themes = __webpack_require__( /*! ../themes */ 75811);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const CalendarStrategy = _uiDate_box.default.inherit({
                    NAME: "Calendar",
                    getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            todayButtonText: _message.default.format("dxCalendar-todayButtonText")
                        })
                    },
                    supportedKeys: function() {
                        const homeEndHandler = function(e) {
                            if (this.option("opened")) {
                                e.preventDefault();
                                return true
                            }
                            return false
                        };
                        return {
                            rightArrow: function() {
                                if (this.option("opened")) {
                                    return true
                                }
                            },
                            leftArrow: function() {
                                if (this.option("opened")) {
                                    return true
                                }
                            },
                            enter: function(e) {
                                if (this.dateBox.option("opened")) {
                                    e.preventDefault();
                                    if (this._widget.option("zoomLevel") === this._widget.option("maxZoomLevel")) {
                                        const viewValue = this._getContouredValue();
                                        const lastActionElement = this._lastActionElement;
                                        const shouldCloseDropDown = this._closeDropDownByEnter();
                                        if (shouldCloseDropDown && viewValue && "calendar" === lastActionElement) {
                                            this.dateBoxValue(viewValue, e)
                                        }
                                        shouldCloseDropDown && this.dateBox.close();
                                        this.dateBox._valueChangeEventHandler(e);
                                        return !shouldCloseDropDown
                                    } else {
                                        return true
                                    }
                                } else {
                                    this.dateBox._valueChangeEventHandler(e)
                                }
                            }.bind(this),
                            home: homeEndHandler,
                            end: homeEndHandler
                        }
                    },
                    getDisplayFormat: function(displayFormat) {
                        return displayFormat || "shortdate"
                    },
                    _closeDropDownByEnter: () => true,
                    _getWidgetName: function() {
                        return _calendar.default
                    },
                    _getContouredValue: function() {
                        return this._widget._view.option("contouredDate")
                    },
                    getKeyboardListener() {
                        return this._widget
                    },
                    _getWidgetOptions: function() {
                        const disabledDates = this.dateBox.option("disabledDates");
                        return (0, _extend.extend)(this.dateBox.option("calendarOptions"), {
                            value: this.dateBoxValue() || null,
                            selectionMode: "single",
                            dateSerializationFormat: null,
                            min: this.dateBox.dateOption("min"),
                            max: this.dateBox.dateOption("max"),
                            onValueChanged: this._valueChangedHandler.bind(this),
                            onCellClick: this._cellClickHandler.bind(this),
                            disabledDates: (0, _type.isFunction)(disabledDates) ? this._injectComponent(disabledDates.bind(this.dateBox)) : disabledDates,
                            onContouredChanged: this._refreshActiveDescendant.bind(this),
                            skipFocusCheck: true
                        })
                    },
                    _injectComponent: function(func) {
                        const that = this;
                        return function(params) {
                            (0, _extend.extend)(params, {
                                component: that.dateBox
                            });
                            return func(params)
                        }
                    },
                    _refreshActiveDescendant: function(e) {
                        this._lastActionElement = "calendar";
                        this.dateBox.setAria("activedescendant", e.actionValue)
                    },
                    _getTodayButtonConfig() {
                        const buttonsLocation = this.dateBox.option("buttonsLocation");
                        const isButtonsLocationDefault = "default" === buttonsLocation;
                        const position = isButtonsLocationDefault ? ["bottom", "center"] : (0, _common.splitPair)(buttonsLocation);
                        const stylingMode = (0, _themes.isMaterial)() ? "text" : "outlined";
                        return {
                            widget: "dxButton",
                            toolbar: position[0],
                            location: "after" === position[1] ? "before" : position[1],
                            options: {
                                onClick: args => {
                                    this._widget._toTodayView(args)
                                },
                                text: this.dateBox.option("todayButtonText"),
                                elementAttr: {
                                    class: "dx-button-today"
                                },
                                stylingMode: stylingMode
                            }
                        }
                    },
                    _isCalendarVisible: function() {
                        const {
                            calendarOptions: calendarOptions
                        } = this.dateBox.option();
                        return (0, _type.isEmptyObject)(calendarOptions) || false !== calendarOptions.visible
                    },
                    _getPopupToolbarItems(toolbarItems) {
                        const useButtons = "useButtons" === this.dateBox.option("applyValueMode");
                        const shouldRenderTodayButton = useButtons && this._isCalendarVisible();
                        if (shouldRenderTodayButton) {
                            const todayButton = this._getTodayButtonConfig();
                            return [todayButton, ...toolbarItems]
                        }
                        return toolbarItems
                    },
                    popupConfig: function(popupConfig) {
                        return (0, _extend.extend)(true, popupConfig, {
                            position: {
                                collision: "flipfit flip"
                            },
                            width: "auto"
                        })
                    },
                    _valueChangedHandler: function(e) {
                        const value = e.value;
                        const prevValue = e.previousValue;
                        if (_date.default.sameDate(value, prevValue) && _date.default.sameHoursAndMinutes(value, prevValue)) {
                            return
                        }
                        if ("instantly" === this.dateBox.option("applyValueMode")) {
                            this.dateBoxValue(this.getValue(), e.event)
                        }
                    },
                    _updateValue: function() {
                        if (!this._widget) {
                            return
                        }
                        this._widget.option("value", this.dateBoxValue())
                    },
                    textChangedHandler: function() {
                        this._lastActionElement = "input";
                        if (this.dateBox.option("opened") && this._widget) {
                            this._updateValue(true)
                        }
                    },
                    _cellClickHandler: function(e) {
                        const dateBox = this.dateBox;
                        if ("instantly" === dateBox.option("applyValueMode")) {
                            dateBox.option("opened", false);
                            this.dateBoxValue(this.getValue(), e.event)
                        }
                    }
                });
                var _default = CalendarStrategy;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        97e3:
            /*!****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/date_box/ui.date_box.strategy.calendar_with_time.js ***!
              \****************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _uiDate_boxStrategy = _interopRequireDefault(__webpack_require__( /*! ./ui.date_box.strategy.calendar */ 46919));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./ui.time_view */ 7124));
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../localization/date */ 91500));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 91198));
                var _box = _interopRequireDefault(__webpack_require__( /*! ../box */ 55551));
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ./ui.date_utils */ 72309));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();
                const CalendarWithTimeStrategy = _uiDate_boxStrategy.default.inherit({
                    NAME: "CalendarWithTime",
                    getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            applyValueMode: "useButtons",
                            buttonsLocation: "bottom after",
                            "dropDownOptions.showTitle": false
                        })
                    },
                    _closeDropDownByEnter: function() {
                        return _date2.default.sameDate(this._getContouredValue(), this.widgetOption("value"))
                    },
                    getDisplayFormat: function(displayFormat) {
                        return displayFormat || "shortdateshorttime"
                    },
                    _is24HourFormat: function() {
                        return _date.default.is24HourFormat(this.getDisplayFormat(this.dateBox.option("displayFormat")))
                    },
                    _getContouredValue: function() {
                        const viewDate = this.callBase();
                        return this._updateDateTime(viewDate)
                    },
                    _renderWidget: function() {
                        this.callBase();
                        this._timeView = this.dateBox._createComponent((0, _renderer.default)("<div>"), _ui.default, {
                            value: this.dateBoxValue(),
                            _showClock: !this._isShrinkView(),
                            use24HourFormat: this._is24HourFormat(),
                            onValueChanged: this._valueChangedHandler.bind(this),
                            stylingMode: this.dateBox.option("stylingMode")
                        })
                    },
                    renderOpenedState: function() {
                        this.callBase();
                        const popup = this._getPopup();
                        if (popup) {
                            popup.$wrapper().toggleClass("dx-datebox-adaptivity-mode", this._isSmallScreen())
                        }
                        clearTimeout(this._repaintTimer);
                        this._repaintTimer = setTimeout(function() {
                            this._getPopup() && this._getPopup().repaint()
                        }.bind(this), 0)
                    },
                    isAdaptivityChanged: function() {
                        const isAdaptiveMode = this._isShrinkView();
                        const currentAdaptiveMode = this._currentAdaptiveMode;
                        if (isAdaptiveMode !== currentAdaptiveMode) {
                            this._currentAdaptiveMode = isAdaptiveMode;
                            return void 0 !== currentAdaptiveMode
                        }
                        return this.callBase()
                    },
                    _updateValue: function(preventDefaultValue) {
                        let date = this.dateBoxValue();
                        if (!date && !preventDefaultValue) {
                            date = new Date;
                            _ui2.default.normalizeTime(date)
                        }
                        this.callBase();
                        if (this._timeView) {
                            date && this._timeView.option("value", date);
                            this._timeView.option("use24HourFormat", this._is24HourFormat())
                        }
                    },
                    _isSmallScreen: function() {
                        return (0, _size.getWidth)(window) <= 573
                    },
                    _isShrinkView: function() {
                        return !this.dateBox.option("showAnalogClock") || this.dateBox.option("adaptivityEnabled") && this._isSmallScreen()
                    },
                    _getBoxItems: function() {
                        const items = [{
                            ratio: 0,
                            shrink: 0,
                            baseSize: "auto",
                            name: "calendar"
                        }];
                        if (!this._isShrinkView()) {
                            items.push({
                                ratio: 0,
                                shrink: 0,
                                baseSize: "auto",
                                name: "time"
                            })
                        }
                        return items
                    },
                    renderPopupContent: function() {
                        this.callBase();
                        this._currentAdaptiveMode = this._isShrinkView();
                        const $popupContent = this._getPopup().$content();
                        this._box = this.dateBox._createComponent((0, _renderer.default)("<div>").appendTo($popupContent), _box.default, {
                            direction: "row",
                            crossAlign: "stretch",
                            items: this._getBoxItems(),
                            itemTemplate: function(data, i, element) {
                                const $container = (0, _renderer.default)("<div>");
                                switch (data.name) {
                                    case "calendar":
                                        $container.append(this._widget.$element());
                                        if (this._isShrinkView()) {
                                            this._timeView.$element().addClass("dx-datebox-datetime-time-side");
                                            $container.append(this._timeView.$element())
                                        }
                                        break;
                                    case "time":
                                        $container.append(this._timeView.$element());
                                        (0, _renderer.default)(element).addClass("dx-datebox-datetime-time-side")
                                }
                                return $container
                            }.bind(this)
                        })
                    },
                    popupConfig: function(popupConfig) {
                        const calendarPopupConfig = this.callBase(popupConfig);
                        return (0, _extend.extend)(calendarPopupConfig, {
                            width: "auto"
                        })
                    },
                    _preventFocusOnPopup: function(e) {
                        if (!(0, _renderer.default)(e.target).hasClass("dx-texteditor-input")) {
                            this.callBase.apply(this, arguments);
                            if (!this.dateBox._hasFocusClass()) {
                                this.dateBox.focus()
                            }
                        }
                    },
                    _updateDateTime: function(date) {
                        const time = this._timeView.option("value");
                        date.setHours(time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds());
                        return date
                    },
                    getValue: function() {
                        var _this$_widget$option;
                        let date = null !== (_this$_widget$option = this._widget.option("value")) && void 0 !== _this$_widget$option ? _this$_widget$option : this._widget.getContouredDate();
                        date = date ? new Date(date) : new Date;
                        return this._updateDateTime(date)
                    },
                    dispose: function() {
                        clearTimeout(this._removeMinWidthTimer);
                        clearTimeout(this._repaintTimer);
                        this.callBase()
                    }
                });
                var _default = CalendarWithTimeStrategy;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        67814:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/date_box/ui.date_box.strategy.date_view.js ***!
              \*******************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./ui.date_view */ 65287));
                var _uiDate_box = _interopRequireDefault(__webpack_require__( /*! ./ui.date_box.strategy */ 38129));
                var _support = __webpack_require__( /*! ../../core/utils/support */ 60137);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ./ui.date_utils */ 72309));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();
                const DateViewStrategy = _uiDate_box.default.inherit({
                    NAME: "DateView",
                    getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            openOnFieldClick: true,
                            applyButtonText: _message.default.format("OK"),
                            "dropDownOptions.showTitle": true
                        })
                    },
                    getDisplayFormat: function(displayFormat) {
                        return displayFormat || _ui2.default.FORMATS_MAP[this.dateBox.option("type")]
                    },
                    popupConfig: function(config) {
                        return {
                            toolbarItems: this.dateBox._popupToolbarItemsConfig(),
                            onInitialized: config.onInitialized,
                            defaultOptionsRules: [{
                                device: {
                                    platform: "android"
                                },
                                options: {
                                    width: 333,
                                    height: 331
                                }
                            }, {
                                device: function(device) {
                                    const platform = device.platform;
                                    return "generic" === platform || "ios" === platform
                                },
                                options: {
                                    width: "auto",
                                    height: "auto"
                                }
                            }, {
                                device: function(device) {
                                    const platform = device.platform;
                                    const phone = device.phone;
                                    return "generic" === platform && phone
                                },
                                options: {
                                    width: 333,
                                    maxWidth: "100%",
                                    maxHeight: "100%",
                                    height: "auto",
                                    position: {
                                        collision: "flipfit flip"
                                    }
                                }
                            }, {
                                device: {
                                    platform: "ios",
                                    phone: true
                                },
                                options: {
                                    width: "100%",
                                    position: {
                                        my: "bottom",
                                        at: "bottom",
                                        of: window
                                    }
                                }
                            }]
                        }
                    },
                    _renderWidget: function() {
                        if ((0, _support.inputType)(this.dateBox.option("mode")) && this.dateBox._isNativeType() || this.dateBox.option("readOnly")) {
                            if (this._widget) {
                                this._widget.$element().remove();
                                this._widget = null
                            }
                            return
                        }
                        const popup = this._getPopup();
                        if (this._widget) {
                            this._widget.option(this._getWidgetOptions())
                        } else {
                            const element = (0, _renderer.default)("<div>").appendTo(popup.$content());
                            this._widget = this._createWidget(element)
                        }
                        this._widget.$element().appendTo(this._getWidgetContainer())
                    },
                    _getWidgetName: function() {
                        return _ui.default
                    },
                    renderOpenedState: function() {
                        this.callBase();
                        if (this._widget) {
                            this._widget.option("value", this._widget._getCurrentDate())
                        }
                    },
                    _getWidgetOptions: function() {
                        return {
                            value: this.dateBoxValue() || new Date,
                            type: this.dateBox.option("type"),
                            minDate: this.dateBox.dateOption("min") || new Date(1900, 0, 1),
                            maxDate: this.dateBox.dateOption("max") || new Date(Date.now() + 50 * _ui2.default.ONE_YEAR),
                            onDisposing: function() {
                                this._widget = null
                            }.bind(this)
                        }
                    }
                });
                var _default = DateViewStrategy;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        38129:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/date_box/ui.date_box.strategy.js ***!
              \*********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 38377));
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../localization/date */ 91500));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const abstract = _class.default.abstract;
                const DateBoxStrategy = _class.default.inherit({
                    ctor: function(dateBox) {
                        this.dateBox = dateBox
                    },
                    widgetOption: function() {
                        return this._widget && this._widget.option.apply(this._widget, arguments)
                    },
                    _renderWidget: function(element) {
                        element = element || (0, _renderer.default)("<div>");
                        this._widget = this._createWidget(element);
                        this._widget.$element().appendTo(this._getWidgetContainer())
                    },
                    _createWidget: function(element) {
                        const widgetName = this._getWidgetName();
                        const widgetOptions = this._getWidgetOptions();
                        return this.dateBox._createComponent(element, widgetName, widgetOptions)
                    },
                    _getWidgetOptions: abstract,
                    _getWidgetName: abstract,
                    getDefaultOptions: function() {
                        return {
                            mode: "text"
                        }
                    },
                    getDisplayFormat: abstract,
                    supportedKeys: _common.noop,
                    getKeyboardListener: _common.noop,
                    customizeButtons: _common.noop,
                    getParsedText: function(text, format) {
                        const value = _date.default.parse(text, format);
                        return value ? value : _date.default.parse(text)
                    },
                    renderInputMinMax: _common.noop,
                    renderOpenedState: function() {
                        this._updateValue()
                    },
                    popupConfig: abstract,
                    _dimensionChanged: function() {
                        var _this$_getPopup;
                        null === (_this$_getPopup = this._getPopup()) || void 0 === _this$_getPopup ? void 0 : _this$_getPopup.repaint()
                    },
                    renderPopupContent: function() {
                        const popup = this._getPopup();
                        this._renderWidget();
                        const $popupContent = popup.$content().parent();
                        _events_engine.default.off($popupContent, "mousedown");
                        _events_engine.default.on($popupContent, "mousedown", this._preventFocusOnPopup.bind(this))
                    },
                    _preventFocusOnPopup: function(e) {
                        e.preventDefault()
                    },
                    _getWidgetContainer: function() {
                        return this._getPopup().$content()
                    },
                    _getPopup: function() {
                        return this.dateBox._popup
                    },
                    popupShowingHandler: _common.noop,
                    popupHiddenHandler: _common.noop,
                    _updateValue: function() {
                        this._widget && this._widget.option("value", this.dateBoxValue())
                    },
                    useCurrentDateByDefault: _common.noop,
                    getDefaultDate: function() {
                        return new Date
                    },
                    textChangedHandler: _common.noop,
                    renderValue: function() {
                        if (this.dateBox.option("opened")) {
                            this._updateValue()
                        }
                    },
                    getValue: function() {
                        return this._widget.option("value")
                    },
                    isAdaptivityChanged: function() {
                        return false
                    },
                    dispose: function() {
                        const popup = this._getPopup();
                        if (popup) {
                            popup.$content().empty()
                        }
                    },
                    dateBoxValue: function() {
                        if (arguments.length) {
                            return this.dateBox.dateValue.apply(this.dateBox, arguments)
                        } else {
                            return this.dateBox.dateOption.apply(this.dateBox, ["value"])
                        }
                    }
                });
                var _default = DateBoxStrategy;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        57728:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/date_box/ui.date_box.strategy.list.js ***!
              \**************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _list_light = _interopRequireDefault(__webpack_require__( /*! ../list_light */ 56757));
                __webpack_require__( /*! ../list/modules/selection */ 20551);
                var _uiDate_box = _interopRequireDefault(__webpack_require__( /*! ./ui.date_box.strategy */ 38129));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./ui.date_utils */ 72309));
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../localization/date */ 91500));
                var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date_serialization */ 69434));
                var _utils = __webpack_require__( /*! ../drop_down_editor/utils */ 61902);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();
                const BOUNDARY_VALUES = {
                    min: new Date(0, 0, 0, 0, 0),
                    max: new Date(0, 0, 0, 23, 59)
                };
                const ListStrategy = _uiDate_box.default.inherit({
                    NAME: "List",
                    supportedKeys: function() {
                        return {
                            space: _common.noop,
                            home: _common.noop,
                            end: _common.noop
                        }
                    },
                    getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            applyValueMode: "instantly"
                        })
                    },
                    getDisplayFormat: function(displayFormat) {
                        return displayFormat || "shorttime"
                    },
                    popupConfig: function(popupConfig) {
                        return popupConfig
                    },
                    getValue: function() {
                        const selectedIndex = this._widget.option("selectedIndex");
                        if (-1 === selectedIndex) {
                            return this.dateBox.option("value")
                        }
                        const itemData = this._widgetItems[selectedIndex];
                        return this._getDateByItemData(itemData)
                    },
                    useCurrentDateByDefault: function() {
                        return true
                    },
                    getDefaultDate: function() {
                        return new Date(null)
                    },
                    popupShowingHandler: function() {
                        this.dateBox._dimensionChanged()
                    },
                    _renderWidget: function() {
                        this.callBase();
                        this._refreshItems()
                    },
                    _getWidgetName: function() {
                        return _list_light.default
                    },
                    _getWidgetOptions: function() {
                        return {
                            itemTemplate: this._timeListItemTemplate.bind(this),
                            onItemClick: this._listItemClickHandler.bind(this),
                            tabIndex: -1,
                            onFocusedItemChanged: this._refreshActiveDescendant.bind(this),
                            selectionMode: "single"
                        }
                    },
                    _refreshActiveDescendant: function(e) {
                        this.dateBox.setAria("activedescendant", "");
                        this.dateBox.setAria("activedescendant", e.actionValue)
                    },
                    _refreshItems: function() {
                        this._widgetItems = this._getTimeListItems();
                        this._widget.option("items", this._widgetItems)
                    },
                    renderOpenedState: function() {
                        if (!this._widget) {
                            return
                        }
                        this._widget.option("focusedElement", null);
                        this._setSelectedItemsByValue();
                        if (this._widget.option("templatesRenderAsynchronously")) {
                            this._asyncScrollTimeout = setTimeout(this._scrollToSelectedItem.bind(this))
                        } else {
                            this._scrollToSelectedItem()
                        }
                    },
                    dispose: function() {
                        this.callBase();
                        clearTimeout(this._asyncScrollTimeout)
                    },
                    _updateValue: function() {
                        if (!this._widget) {
                            return
                        }
                        this._refreshItems();
                        this._setSelectedItemsByValue();
                        this._scrollToSelectedItem()
                    },
                    _setSelectedItemsByValue: function() {
                        const value = this.dateBoxValue();
                        const dateIndex = this._getDateIndex(value);
                        if (-1 === dateIndex) {
                            this._widget.option("selectedItems", [])
                        } else {
                            this._widget.option("selectedIndex", dateIndex)
                        }
                    },
                    _scrollToSelectedItem: function() {
                        this._widget.scrollToItem(this._widget.option("selectedIndex"))
                    },
                    _getDateIndex: function(date) {
                        let result = -1;
                        for (let i = 0, n = this._widgetItems.length; i < n; i++) {
                            if (this._areDatesEqual(date, this._widgetItems[i])) {
                                result = i;
                                break
                            }
                        }
                        return result
                    },
                    _areDatesEqual: function(first, second) {
                        return (0, _type.isDate)(first) && (0, _type.isDate)(second) && first.getHours() === second.getHours() && first.getMinutes() === second.getMinutes()
                    },
                    _getTimeListItems: function() {
                        let min = this.dateBox.dateOption("min") || this._getBoundaryDate("min");
                        const max = this.dateBox.dateOption("max") || this._getBoundaryDate("max");
                        const value = this.dateBox.dateOption("value") || null;
                        let delta = max - min;
                        const minutes = min.getMinutes() % this.dateBox.option("interval");
                        if (delta < 0) {
                            return []
                        }
                        if (delta > _ui.default.ONE_DAY) {
                            delta = _ui.default.ONE_DAY
                        }
                        if (value - min < _ui.default.ONE_DAY) {
                            return this._getRangeItems(min, new Date(min), delta)
                        }
                        min = this._getBoundaryDate("min");
                        min.setMinutes(minutes);
                        if (value && Math.abs(value - max) < _ui.default.ONE_DAY) {
                            delta = (60 * max.getHours() + Math.abs(max.getMinutes() - minutes)) * _ui.default.ONE_MINUTE
                        }
                        return this._getRangeItems(min, new Date(min), delta)
                    },
                    _getRangeItems: function(startValue, currentValue, rangeDuration) {
                        const rangeItems = [];
                        const interval = this.dateBox.option("interval");
                        while (currentValue - startValue <= rangeDuration) {
                            rangeItems.push(new Date(currentValue));
                            currentValue.setMinutes(currentValue.getMinutes() + interval)
                        }
                        return rangeItems
                    },
                    _getBoundaryDate: function(boundary) {
                        const boundaryValue = BOUNDARY_VALUES[boundary];
                        const currentValue = new Date((0, _common.ensureDefined)(this.dateBox.dateOption("value"), 0));
                        return new Date(currentValue.getFullYear(), currentValue.getMonth(), currentValue.getDate(), boundaryValue.getHours(), boundaryValue.getMinutes())
                    },
                    _timeListItemTemplate: function(itemData) {
                        const displayFormat = this.dateBox.option("displayFormat");
                        return _date.default.format(itemData, this.getDisplayFormat(displayFormat))
                    },
                    _listItemClickHandler: function(e) {
                        if ("useButtons" === this.dateBox.option("applyValueMode")) {
                            return
                        }
                        const date = this._getDateByItemData(e.itemData);
                        this.dateBox.option("opened", false);
                        this.dateBoxValue(date, e.event)
                    },
                    _getDateByItemData: function(itemData) {
                        let date = this.dateBox.option("value");
                        const hours = itemData.getHours();
                        const minutes = itemData.getMinutes();
                        const seconds = itemData.getSeconds();
                        const year = itemData.getFullYear();
                        const month = itemData.getMonth();
                        const day = itemData.getDate();
                        if (date) {
                            if (this.dateBox.option("dateSerializationFormat")) {
                                date = _date_serialization.default.deserializeDate(date)
                            } else {
                                date = new Date(date)
                            }
                            date.setHours(hours);
                            date.setMinutes(minutes);
                            date.setSeconds(seconds);
                            date.setFullYear(year);
                            date.setMonth(month);
                            date.setDate(day)
                        } else {
                            date = new Date(year, month, day, hours, minutes, 0, 0)
                        }
                        return date
                    },
                    getKeyboardListener: function() {
                        return this._widget
                    },
                    _updatePopupHeight: function() {
                        const dropDownOptionsHeight = (0, _utils.getSizeValue)(this.dateBox.option("dropDownOptions.height"));
                        if (void 0 === dropDownOptionsHeight || "auto" === dropDownOptionsHeight) {
                            this.dateBox._setPopupOption("height", "auto");
                            const popupHeight = (0, _size.getOuterHeight)(this._widget.$element());
                            const maxHeight = .45 * (0, _size.getHeight)(window);
                            this.dateBox._setPopupOption("height", Math.min(popupHeight, maxHeight))
                        }
                        this.dateBox._timeList && this.dateBox._timeList.updateDimensions()
                    },
                    getParsedText: function(text, format) {
                        let value = this.callBase(text, format);
                        if (value) {
                            value = _ui.default.mergeDates(value, new Date(null), "date")
                        }
                        return value
                    }
                });
                var _default = ListStrategy;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        84416:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/date_box/ui.date_box.strategy.native.js ***!
              \****************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _uiDate_box = _interopRequireDefault(__webpack_require__( /*! ./ui.date_box.strategy */ 38129));
                var _support = __webpack_require__( /*! ../../core/utils/support */ 60137);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./ui.date_utils */ 72309));
                var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date_serialization */ 69434));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const NativeStrategy = _uiDate_box.default.inherit({
                    NAME: "Native",
                    popupConfig: function(popupConfig) {
                        return (0, _extend.extend)({}, popupConfig, {
                            width: "auto"
                        })
                    },
                    getParsedText: function(text) {
                        if (!text) {
                            return null
                        }
                        if ("datetime" === this.dateBox.option("type")) {
                            return new Date(text.replace(/-/g, "/").replace("T", " ").split(".")[0])
                        }
                        return _ui.default.fromStandardDateFormat(text)
                    },
                    renderPopupContent: _common.noop,
                    _getWidgetName: _common.noop,
                    _getWidgetOptions: _common.noop,
                    _getDateBoxType: function() {
                        let type = this.dateBox.option("type");
                        if (!_ui.default.SUPPORTED_FORMATS.includes(type)) {
                            type = "date"
                        } else if ("datetime" === type && !(0, _support.inputType)(type)) {
                            type = "datetime-local"
                        }
                        return type
                    },
                    customizeButtons: function() {
                        const dropDownButton = this.dateBox.getButton("dropDown");
                        if (_devices.default.real().android && dropDownButton) {
                            dropDownButton.on("click", function() {
                                this.dateBox._input().get(0).click()
                            }.bind(this))
                        }
                    },
                    getDefaultOptions: function() {
                        return {
                            mode: this._getDateBoxType()
                        }
                    },
                    getDisplayFormat: function(displayFormat) {
                        const type = this._getDateBoxType();
                        return displayFormat || _ui.default.FORMATS_MAP[type]
                    },
                    renderInputMinMax: function($input) {
                        $input.attr({
                            min: _date_serialization.default.serializeDate(this.dateBox.dateOption("min"), "yyyy-MM-dd"),
                            max: _date_serialization.default.serializeDate(this.dateBox.dateOption("max"), "yyyy-MM-dd")
                        })
                    }
                });
                var _default = NativeStrategy;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        72309:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/date_box/ui.date_utils.js ***!
              \**************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date_serialization */ 69434));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../localization/date */ 91500));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const DATE_COMPONENTS = ["year", "day", "month", "day"];
                const TIME_COMPONENTS = ["hours", "minutes", "seconds", "milliseconds"];
                const dateUtils = {
                    SUPPORTED_FORMATS: ["date", "time", "datetime"],
                    ONE_MINUTE: 6e4,
                    ONE_DAY: 864e5,
                    ONE_YEAR: 31536e6,
                    MIN_DATEVIEW_DEFAULT_DATE: new Date(1900, 0, 1),
                    MAX_DATEVIEW_DEFAULT_DATE: function() {
                        const newDate = new Date;
                        return new Date(newDate.getFullYear() + 50, newDate.getMonth(), newDate.getDate(), 23, 59, 59)
                    }(),
                    FORMATS_INFO: {
                        date: {
                            getStandardPattern: function() {
                                return "yyyy-MM-dd"
                            },
                            components: DATE_COMPONENTS
                        },
                        time: {
                            getStandardPattern: function() {
                                return "HH:mm"
                            },
                            components: TIME_COMPONENTS
                        },
                        datetime: {
                            getStandardPattern: function() {
                                let standardPattern;
                                ! function() {
                                    const $input = (0, _renderer.default)("<input>").attr("type", "datetime");
                                    $input.val("2000-01-01T01:01Z");
                                    if ($input.val()) {
                                        standardPattern = "yyyy-MM-ddTHH:mmZ"
                                    }
                                }();
                                if (!standardPattern) {
                                    standardPattern = "yyyy-MM-ddTHH:mm:ssZ"
                                }
                                dateUtils.FORMATS_INFO.datetime.getStandardPattern = function() {
                                    return standardPattern
                                };
                                return standardPattern
                            },
                            components: [...DATE_COMPONENTS, ...TIME_COMPONENTS]
                        },
                        "datetime-local": {
                            getStandardPattern: function() {
                                return "yyyy-MM-ddTHH:mm:ss"
                            },
                            components: [...DATE_COMPONENTS, "hours", "minutes", "seconds"]
                        }
                    },
                    FORMATS_MAP: {
                        date: "shortdate",
                        time: "shorttime",
                        datetime: "shortdateshorttime"
                    },
                    SUBMIT_FORMATS_MAP: {
                        date: "date",
                        time: "time",
                        datetime: "datetime-local"
                    },
                    toStandardDateFormat: function(date, type) {
                        const pattern = dateUtils.FORMATS_INFO[type].getStandardPattern();
                        return _date_serialization.default.serializeDate(date, pattern)
                    },
                    fromStandardDateFormat: function(text) {
                        const date = _date_serialization.default.dateParser(text);
                        return (0, _type.isDate)(date) ? date : void 0
                    },
                    getMaxMonthDay: function(year, month) {
                        return new Date(year, month + 1, 0).getDate()
                    },
                    mergeDates: function(oldValue, newValue, format) {
                        if (!newValue) {
                            return newValue || null
                        }
                        if (!oldValue || isNaN(oldValue.getTime())) {
                            const now = new Date(null);
                            oldValue = new Date(now.getFullYear(), now.getMonth(), now.getDate())
                        }
                        const result = new Date(oldValue.valueOf());
                        const formatInfo = dateUtils.FORMATS_INFO[format];
                        (0, _iterator.each)(formatInfo.components, (function() {
                            const componentInfo = dateUtils.DATE_COMPONENTS_INFO[this];
                            result[componentInfo.setter](newValue[componentInfo.getter]())
                        }));
                        return result
                    },
                    getLongestCaptionIndex: function(captionArray) {
                        let longestIndex = 0;
                        let longestCaptionLength = 0;
                        let i;
                        for (i = 0; i < captionArray.length; ++i) {
                            if (captionArray[i].length > longestCaptionLength) {
                                longestIndex = i;
                                longestCaptionLength = captionArray[i].length
                            }
                        }
                        return longestIndex
                    },
                    formatUsesMonthName: function(format) {
                        return _date.default.formatUsesMonthName(format)
                    },
                    formatUsesDayName: function(format) {
                        return _date.default.formatUsesDayName(format)
                    },
                    getLongestDate: function(format, monthNames, dayNames) {
                        const stringFormat = function(format) {
                            const formatType = typeof format;
                            if ("string" === formatType) {
                                return "format"
                            }
                            if ("object" === formatType && void 0 !== format.type) {
                                return format.type
                            }
                            return null
                        }(format);
                        let month = 9;
                        if (!stringFormat || dateUtils.formatUsesMonthName(stringFormat)) {
                            month = dateUtils.getLongestCaptionIndex(monthNames)
                        }
                        const longestDate = new Date(1888, month, 21, 23, 59, 59, 999);
                        if (!stringFormat || dateUtils.formatUsesDayName(stringFormat)) {
                            const date = longestDate.getDate() - longestDate.getDay() + dateUtils.getLongestCaptionIndex(dayNames);
                            longestDate.setDate(date)
                        }
                        return longestDate
                    },
                    normalizeTime: function(date) {
                        date.setSeconds(0);
                        date.setMilliseconds(0)
                    }
                };
                dateUtils.DATE_COMPONENTS_INFO = {
                    year: {
                        getter: "getFullYear",
                        setter: "setFullYear",
                        formatter: function(value, date) {
                            const formatDate = new Date(date.getTime());
                            formatDate.setFullYear(value);
                            return _date.default.format(formatDate, "yyyy")
                        },
                        startValue: void 0,
                        endValue: void 0
                    },
                    day: {
                        getter: "getDate",
                        setter: "setDate",
                        formatter: function(value, date) {
                            const formatDate = new Date(date.getTime());
                            formatDate.setDate(value);
                            return _date.default.format(formatDate, "d")
                        },
                        startValue: 1,
                        endValue: void 0
                    },
                    month: {
                        getter: "getMonth",
                        setter: "setMonth",
                        formatter: function(value) {
                            return _date.default.getMonthNames()[value]
                        },
                        startValue: 0,
                        endValue: 11
                    },
                    hours: {
                        getter: "getHours",
                        setter: "setHours",
                        formatter: function(value) {
                            return _date.default.format(new Date(0, 0, 0, value), "hour")
                        },
                        startValue: 0,
                        endValue: 23
                    },
                    minutes: {
                        getter: "getMinutes",
                        setter: "setMinutes",
                        formatter: function(value) {
                            return _date.default.format(new Date(0, 0, 0, 0, value), "minute")
                        },
                        startValue: 0,
                        endValue: 59
                    },
                    seconds: {
                        getter: "getSeconds",
                        setter: "setSeconds",
                        formatter: function(value) {
                            return _date.default.format(new Date(0, 0, 0, 0, 0, value), "second")
                        },
                        startValue: 0,
                        endValue: 59
                    },
                    milliseconds: {
                        getter: "getMilliseconds",
                        setter: "setMilliseconds",
                        formatter: function(value) {
                            return _date.default.format(new Date(0, 0, 0, 0, 0, 0, value), "millisecond")
                        },
                        startValue: 0,
                        endValue: 999
                    }
                };
                var _default = dateUtils;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        65287:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/date_box/ui.date_view.js ***!
              \*************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _editor = _interopRequireDefault(__webpack_require__( /*! ../editor/editor */ 96452));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./ui.date_view_roller */ 95251));
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 91198));
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ./ui.date_utils */ 72309));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _date2 = _interopRequireDefault(__webpack_require__( /*! ../../localization/date */ 91500));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const TYPE_date = "date";
                const ROLLER_TYPE_year = "year",
                    ROLLER_TYPE_month = "month",
                    ROLLER_TYPE_day = "day",
                    ROLLER_TYPE_hours = "hours";
                const DateView = _editor.default.inherit({
                    _valueOption: function() {
                        const value = this.option("value");
                        const date = new Date(value);
                        return !value || isNaN(date) ? this._getDefaultDate() : date
                    },
                    _getDefaultDate: function() {
                        const date = new Date;
                        if (this.option("type") === TYPE_date) {
                            return new Date(date.getFullYear(), date.getMonth(), date.getDate())
                        }
                        return date
                    },
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            minDate: _ui2.default.MIN_DATEVIEW_DEFAULT_DATE,
                            maxDate: _ui2.default.MAX_DATEVIEW_DEFAULT_DATE,
                            type: TYPE_date,
                            value: new Date,
                            applyCompactClass: false
                        })
                    },
                    _defaultOptionsRules: function() {
                        return this.callBase().concat([{
                            device: function(device) {
                                return "desktop" !== device.deviceType
                            },
                            options: {
                                applyCompactClass: true
                            }
                        }])
                    },
                    _render: function() {
                        this.callBase();
                        this.$element().addClass("dx-dateview");
                        this._toggleFormatClasses(this.option("type"));
                        this._toggleCompactClass()
                    },
                    _toggleFormatClasses: function(currentFormat, previousFormat) {
                        this.$element().addClass("dx-dateview-" + currentFormat);
                        previousFormat && this.$element().removeClass("dx-dateview-" + previousFormat)
                    },
                    _toggleCompactClass: function() {
                        this.$element().toggleClass("dx-dateview-compact", this.option("applyCompactClass"))
                    },
                    _wrapper: function() {
                        return this._$wrapper
                    },
                    _renderContentImpl: function() {
                        this._$wrapper = (0, _renderer.default)("<div>").addClass("dx-dateview-wrapper");
                        this._renderRollers();
                        this._$wrapper.appendTo(this.$element())
                    },
                    _renderRollers: function() {
                        if (!this._$rollersContainer) {
                            this._$rollersContainer = (0, _renderer.default)("<div>").addClass("dx-dateview-rollers")
                        }
                        this._$rollersContainer.empty();
                        this._createRollerConfigs();
                        this._rollers = {};
                        const that = this;
                        (0, _iterator.each)(that._rollerConfigs, (function(name) {
                            const $roller = (0, _renderer.default)("<div>").appendTo(that._$rollersContainer).addClass("dx-dateviewroller-" + that._rollerConfigs[name].type);
                            that._rollers[that._rollerConfigs[name].type] = that._createComponent($roller, _ui.default, {
                                items: that._rollerConfigs[name].displayItems,
                                selectedIndex: that._rollerConfigs[name].selectedIndex,
                                showScrollbar: "never",
                                scrollByContent: true,
                                onStart: function(e) {
                                    const roller = e.component;
                                    roller._toggleActive(true);
                                    that._setActiveRoller(that._rollerConfigs[name], roller.option("selectedIndex"))
                                },
                                onEnd: function(e) {
                                    const roller = e.component;
                                    roller._toggleActive(false)
                                },
                                onClick: function(e) {
                                    const roller = e.component;
                                    roller._toggleActive(true);
                                    that._setActiveRoller(that._rollerConfigs[name], roller.option("selectedIndex"));
                                    that._setRollerState(that._rollerConfigs[name], roller.option("selectedIndex"));
                                    roller._toggleActive(false)
                                },
                                onSelectedIndexChanged: function(e) {
                                    const roller = e.component;
                                    that._setRollerState(that._rollerConfigs[name], roller.option("selectedIndex"))
                                }
                            })
                        }));
                        that._$rollersContainer.appendTo(that._wrapper())
                    },
                    _createRollerConfigs: function(type) {
                        const that = this;
                        type = type || that.option("type");
                        that._rollerConfigs = {};
                        _date2.default.getFormatParts(_ui2.default.FORMATS_MAP[type]).forEach((function(partName) {
                            that._createRollerConfig(partName)
                        }))
                    },
                    _createRollerConfig: function(componentName) {
                        const componentInfo = _ui2.default.DATE_COMPONENTS_INFO[componentName];
                        const valueRange = this._calculateRollerConfigValueRange(componentName);
                        const startValue = valueRange.startValue;
                        const endValue = valueRange.endValue;
                        const formatter = componentInfo.formatter;
                        const curDate = this._getCurrentDate();
                        const config = {
                            type: componentName,
                            setValue: componentInfo.setter,
                            valueItems: [],
                            displayItems: [],
                            getIndex: function(value) {
                                return value[componentInfo.getter]() - startValue
                            }
                        };
                        for (let i = startValue; i <= endValue; i++) {
                            config.valueItems.push(i);
                            config.displayItems.push(formatter(i, curDate))
                        }
                        config.selectedIndex = config.getIndex(curDate);
                        this._rollerConfigs[componentName] = config
                    },
                    _setActiveRoller: function(currentRoller) {
                        const activeRoller = currentRoller && this._rollers[currentRoller.type];
                        (0, _iterator.each)(this._rollers, (function() {
                            this.toggleActiveState(this === activeRoller)
                        }))
                    },
                    _updateRollersPosition: function() {
                        const that = this;
                        (0, _iterator.each)(this._rollers, (function(type) {
                            const correctIndex = that._rollerConfigs[type].getIndex(that._getCurrentDate());
                            this.option("selectedIndex", correctIndex)
                        }))
                    },
                    _setRollerState: function(roller, selectedIndex) {
                        if (selectedIndex !== roller.selectedIndex) {
                            const rollerValue = roller.valueItems[selectedIndex];
                            const setValue = roller.setValue;
                            let currentValue = new Date(this._getCurrentDate());
                            let currentDate = currentValue.getDate();
                            const minDate = this.option("minDate");
                            const maxDate = this.option("maxDate");
                            if (roller.type === ROLLER_TYPE_month) {
                                currentDate = Math.min(currentDate, _ui2.default.getMaxMonthDay(currentValue.getFullYear(), rollerValue))
                            } else if (roller.type === ROLLER_TYPE_year) {
                                currentDate = Math.min(currentDate, _ui2.default.getMaxMonthDay(rollerValue, currentValue.getMonth()))
                            }
                            currentValue.setDate(currentDate);
                            currentValue[setValue](rollerValue);
                            const normalizedDate = _date.default.normalizeDate(currentValue, minDate, maxDate);
                            currentValue = _ui2.default.mergeDates(normalizedDate, currentValue, "time");
                            currentValue = _date.default.normalizeDate(currentValue, minDate, maxDate);
                            this.option("value", currentValue);
                            roller.selectedIndex = selectedIndex
                        }
                        if (roller.type === ROLLER_TYPE_year) {
                            this._refreshRollers()
                        }
                        if (roller.type === ROLLER_TYPE_month) {
                            this._refreshRoller(ROLLER_TYPE_day);
                            this._refreshRoller(ROLLER_TYPE_hours)
                        }
                    },
                    _refreshRoller: function(rollerType) {
                        const roller = this._rollers[rollerType];
                        if (roller) {
                            this._createRollerConfig(rollerType);
                            const rollerConfig = this._rollerConfigs[rollerType];
                            if (rollerType === ROLLER_TYPE_day || rollerConfig.displayItems.toString() !== roller.option("items").toString()) {
                                roller.option({
                                    items: rollerConfig.displayItems,
                                    selectedIndex: rollerConfig.selectedIndex
                                })
                            }
                        }
                    },
                    _getCurrentDate: function() {
                        const curDate = this._valueOption();
                        const minDate = this.option("minDate");
                        const maxDate = this.option("maxDate");
                        return _date.default.normalizeDate(curDate, minDate, maxDate)
                    },
                    _calculateRollerConfigValueRange: function(componentName) {
                        const curDate = this._getCurrentDate();
                        const minDate = this.option("minDate");
                        const maxDate = this.option("maxDate");
                        const minYear = _date.default.sameYear(curDate, minDate);
                        const minMonth = minYear && curDate.getMonth() === minDate.getMonth();
                        const maxYear = _date.default.sameYear(curDate, maxDate);
                        const maxMonth = maxYear && curDate.getMonth() === maxDate.getMonth();
                        const minHour = minMonth && curDate.getDate() === minDate.getDate();
                        const maxHour = maxMonth && curDate.getDate() === maxDate.getDate();
                        const componentInfo = _ui2.default.DATE_COMPONENTS_INFO[componentName];
                        let startValue = componentInfo.startValue;
                        let endValue = componentInfo.endValue;
                        if (componentName === ROLLER_TYPE_year) {
                            startValue = minDate.getFullYear();
                            endValue = maxDate.getFullYear()
                        }
                        if (componentName === ROLLER_TYPE_month) {
                            if (minYear) {
                                startValue = minDate.getMonth()
                            }
                            if (maxYear) {
                                endValue = maxDate.getMonth()
                            }
                        }
                        if (componentName === ROLLER_TYPE_day) {
                            endValue = _ui2.default.getMaxMonthDay(curDate.getFullYear(), curDate.getMonth());
                            if (minYear && minMonth) {
                                startValue = minDate.getDate()
                            }
                            if (maxYear && maxMonth) {
                                endValue = maxDate.getDate()
                            }
                        }
                        if (componentName === ROLLER_TYPE_hours) {
                            startValue = minHour ? minDate.getHours() : startValue;
                            endValue = maxHour ? maxDate.getHours() : endValue
                        }
                        return {
                            startValue: startValue,
                            endValue: endValue
                        }
                    },
                    _refreshRollers: function() {
                        this._refreshRoller(ROLLER_TYPE_month);
                        this._refreshRoller(ROLLER_TYPE_day);
                        this._refreshRoller(ROLLER_TYPE_hours)
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "minDate":
                            case "maxDate":
                            case "type":
                                this._renderRollers();
                                this._toggleFormatClasses(args.value, args.previousValue);
                                break;
                            case "visible":
                                this.callBase(args);
                                if (args.value) {
                                    this._renderRollers()
                                }
                                break;
                            case "value":
                                this.option("value", this._valueOption());
                                this._refreshRollers();
                                this._updateRollersPosition();
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _clean: function() {
                        this.callBase();
                        delete this._$rollersContainer
                    }
                });
                (0, _component_registrator.default)("dxDateView", DateView);
                var _default = DateView;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        95251:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/date_box/ui.date_view_roller.js ***!
              \********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _click = __webpack_require__( /*! ../../events/click */ 95429);
                var _uiScrollable = _interopRequireDefault(__webpack_require__( /*! ../scroll_view/ui.scrollable.old */ 58788));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _fx = _interopRequireDefault(__webpack_require__( /*! ../../animation/fx */ 87209));
                var _translator = __webpack_require__( /*! ../../animation/translator */ 31648);
                var _convert_location = __webpack_require__( /*! ../../renovation/ui/scroll_view/utils/convert_location */ 82886);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let DateViewRoller = function(_Scrollable) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(DateViewRoller, _Scrollable);

                    function DateViewRoller() {
                        return _Scrollable.apply(this, arguments) || this
                    }
                    var _proto = DateViewRoller.prototype;
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_Scrollable.prototype._getDefaultOptions.call(this), {
                            showScrollbar: "never",
                            useNative: false,
                            selectedIndex: 0,
                            bounceEnabled: false,
                            items: [],
                            showOnClick: false,
                            onClick: null,
                            onSelectedIndexChanged: null,
                            scrollByContent: true
                        })
                    };
                    _proto._init = function() {
                        _Scrollable.prototype._init.call(this);
                        this.option("onVisibilityChange", this._visibilityChangedHandler.bind(this));
                        this.option("onEnd", this._endActionHandler.bind(this))
                    };
                    _proto._render = function() {
                        _Scrollable.prototype._render.call(this);
                        this._renderSelectedItemFrame();
                        this.$element().addClass("dx-dateviewroller");
                        this._renderContainerClick();
                        this._renderItems();
                        this._renderSelectedValue();
                        this._renderItemsClick();
                        this._renderWheelEvent();
                        this._renderSelectedIndexChanged()
                    };
                    _proto._renderSelectedIndexChanged = function() {
                        this._selectedIndexChanged = this._createActionByOption("onSelectedIndexChanged")
                    };
                    _proto._renderWheelEvent = function() {
                        _events_engine.default.on((0, _renderer.default)(this.container()), "dxmousewheel", e => {
                            this._isWheelScrolled = true
                        })
                    };
                    _proto._renderContainerClick = function() {
                        if (!this.option("showOnClick")) {
                            return
                        }
                        const eventName = (0, _index.addNamespace)(_click.name, this.NAME);
                        const clickAction = this._createActionByOption("onClick");
                        _events_engine.default.off((0, _renderer.default)(this.container()), eventName);
                        _events_engine.default.on((0, _renderer.default)(this.container()), eventName, (function(e) {
                            clickAction({
                                event: e
                            })
                        }))
                    };
                    _proto._renderItems = function() {
                        const items = this.option("items") || [];
                        let $items = (0, _renderer.default)();
                        (0, _renderer.default)(this.content()).empty();
                        items.forEach((function(item) {
                            $items = $items.add((0, _renderer.default)("<div>").addClass("dx-dateview-item").append(item))
                        }));
                        (0, _renderer.default)(this.content()).append($items);
                        this._$items = $items;
                        this.update()
                    };
                    _proto._renderSelectedItemFrame = function() {
                        (0, _renderer.default)("<div>").addClass("dx-dateview-item-selected-frame").append((0, _renderer.default)("<div>").addClass("dx-dateview-item-selected-border")).appendTo((0, _renderer.default)(this.container()))
                    };
                    _proto._renderSelectedValue = function(selectedIndex) {
                        const index = this._fitIndex(null !== selectedIndex && void 0 !== selectedIndex ? selectedIndex : this.option("selectedIndex"));
                        this._moveTo({
                            top: this._getItemPosition(index)
                        });
                        this._renderActiveStateItem()
                    };
                    _proto._fitIndex = function(index) {
                        const items = this.option("items") || [];
                        const itemCount = items.length;
                        if (index >= itemCount) {
                            return itemCount - 1
                        }
                        if (index < 0) {
                            return 0
                        }
                        return index
                    };
                    _proto._getItemPosition = function(index) {
                        return Math.round(this._itemHeight() * index)
                    };
                    _proto._renderItemsClick = function() {
                        const itemSelector = this._getItemSelector();
                        const eventName = (0, _index.addNamespace)(_click.name, this.NAME);
                        _events_engine.default.off(this.$element(), eventName, itemSelector);
                        _events_engine.default.on(this.$element(), eventName, itemSelector, this._itemClickHandler.bind(this))
                    };
                    _proto._getItemSelector = function() {
                        return ".dx-dateview-item"
                    };
                    _proto._itemClickHandler = function(e) {
                        this.option("selectedIndex", this._itemElementIndex(e.currentTarget))
                    };
                    _proto._itemElementIndex = function(itemElement) {
                        return this._itemElements().index(itemElement)
                    };
                    _proto._itemElements = function() {
                        return this.$element().find(this._getItemSelector())
                    };
                    _proto._renderActiveStateItem = function() {
                        const selectedIndex = this.option("selectedIndex");
                        (0, _iterator.each)(this._$items, (function(index) {
                            (0, _renderer.default)(this).toggleClass("dx-dateview-item-selected", selectedIndex === index)
                        }))
                    };
                    _proto._shouldScrollToNeighborItem = function() {
                        return "desktop" === _devices.default.real().deviceType && this._isWheelScrolled
                    };
                    _proto._moveTo = function(targetLocation) {
                        const {
                            top: top,
                            left: left
                        } = (0, _convert_location.convertToLocation)(targetLocation);
                        const location = this.scrollOffset();
                        const delta = {
                            x: location.left - left,
                            y: location.top - top
                        };
                        if (this._isVisible() && (delta.x || delta.y)) {
                            this._prepareDirections(true);
                            if (this._animation && !this._shouldScrollToNeighborItem()) {
                                const that = this;
                                _fx.default.stop((0, _renderer.default)(this.content()));
                                _fx.default.animate((0, _renderer.default)(this.content()), {
                                    duration: 200,
                                    type: "slide",
                                    to: {
                                        top: Math.floor(delta.y)
                                    },
                                    complete() {
                                        (0, _translator.resetPosition)((0, _renderer.default)(that.content()));
                                        that.handleMove({
                                            delta: delta
                                        })
                                    }
                                });
                                delete this._animation
                            } else {
                                this.handleMove({
                                    delta: delta
                                })
                            }
                        }
                    };
                    _proto._validate = function(e) {
                        return this._moveIsAllowed(e)
                    };
                    _proto._fitSelectedIndexInRange = function(index) {
                        const itemsCount = this.option("items").length;
                        return Math.max(Math.min(index, itemsCount - 1), 0)
                    };
                    _proto._isInNullNeighborhood = function(x) {
                        return -.1 <= x && x <= .1
                    };
                    _proto._getSelectedIndexAfterScroll = function(currentSelectedIndex) {
                        const locationTop = this.scrollOffset().top;
                        const currentSelectedIndexPosition = currentSelectedIndex * this._itemHeight();
                        const dy = locationTop - currentSelectedIndexPosition;
                        if (this._isInNullNeighborhood(dy)) {
                            return currentSelectedIndex
                        }
                        const direction = dy > 0 ? 1 : -1;
                        const newSelectedIndex = this._fitSelectedIndexInRange(currentSelectedIndex + direction);
                        return newSelectedIndex
                    };
                    _proto._getNewSelectedIndex = function(currentSelectedIndex) {
                        if (this._shouldScrollToNeighborItem()) {
                            return this._getSelectedIndexAfterScroll(currentSelectedIndex)
                        }
                        this._animation = true;
                        const ratio = this.scrollOffset().top / this._itemHeight();
                        return Math.round(ratio)
                    };
                    _proto._endActionHandler = function() {
                        const currentSelectedIndex = this.option("selectedIndex");
                        const newSelectedIndex = this._getNewSelectedIndex(currentSelectedIndex);
                        if (newSelectedIndex === currentSelectedIndex) {
                            this._renderSelectedValue(newSelectedIndex)
                        } else {
                            this.option("selectedIndex", newSelectedIndex)
                        }
                        this._isWheelScrolled = false
                    };
                    _proto._itemHeight = function() {
                        const $item = this._$items.first();
                        return (0, _size.getHeight)($item)
                    };
                    _proto._toggleActive = function(state) {
                        this.$element().toggleClass("dx-state-active", state)
                    };
                    _proto._isVisible = function() {
                        return (0, _renderer.default)(this.container()).is(":visible")
                    };
                    _proto._fireSelectedIndexChanged = function(value, previousValue) {
                        this._selectedIndexChanged({
                            value: value,
                            previousValue: previousValue,
                            event: void 0
                        })
                    };
                    _proto._visibilityChanged = function(visible) {
                        _Scrollable.prototype._visibilityChanged.call(this, visible);
                        this._visibilityChangedHandler(visible)
                    };
                    _proto._visibilityChangedHandler = function(visible) {
                        if (visible) {
                            this._visibilityTimer = setTimeout(() => {
                                this._renderSelectedValue(this.option("selectedIndex"))
                            })
                        }
                        this.toggleActiveState(false)
                    };
                    _proto.toggleActiveState = function(state) {
                        this.$element().toggleClass("dx-dateviewroller-current", state)
                    };
                    _proto._refreshSelectedIndex = function() {
                        const selectedIndex = this.option("selectedIndex");
                        const fitIndex = this._fitIndex(selectedIndex);
                        if (fitIndex === selectedIndex) {
                            this._renderActiveStateItem()
                        } else {
                            this.option("selectedIndex", fitIndex)
                        }
                    };
                    _proto._optionChanged = function(args) {
                        switch (args.name) {
                            case "selectedIndex":
                                this._fireSelectedIndexChanged(args.value, args.previousValue);
                                this._renderSelectedValue(args.value);
                                break;
                            case "items":
                                this._renderItems();
                                this._refreshSelectedIndex();
                                break;
                            case "onClick":
                            case "showOnClick":
                                this._renderContainerClick();
                                break;
                            case "onSelectedIndexChanged":
                                this._renderSelectedIndexChanged();
                                break;
                            default:
                                _Scrollable.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto._dispose = function() {
                        clearTimeout(this._visibilityTimer);
                        _Scrollable.prototype._dispose.call(this)
                    };
                    return DateViewRoller
                }(_uiScrollable.default);
                (0, _component_registrator.default)("dxDateViewRoller", DateViewRoller);
                var _default = DateViewRoller;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        7124:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/date_box/ui.time_view.js ***!
              \*************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _editor = _interopRequireDefault(__webpack_require__( /*! ../editor/editor */ 96452));
                var _number_box = _interopRequireDefault(__webpack_require__( /*! ../number_box */ 34171));
                var _select_box = _interopRequireDefault(__webpack_require__( /*! ../select_box */ 78665));
                var _box = _interopRequireDefault(__webpack_require__( /*! ../box */ 55551));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../localization/date */ 91500));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./ui.date_utils */ 72309));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const rotateArrow = function($arrow, angle, offset) {
                    cssRotate($arrow, angle, offset)
                };
                const cssRotate = function($arrow, angle, offset) {
                    $arrow.css("transform", "rotate(" + angle + "deg) translate(0," + offset + "px)")
                };
                const TimeView = _editor.default.inherit({
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            value: new Date(Date.now()),
                            use24HourFormat: true,
                            _showClock: true,
                            _arrowOffset: 5,
                            stylingMode: void 0
                        })
                    },
                    _getValue: function() {
                        return this.option("value") || new Date
                    },
                    _init: function() {
                        this.callBase();
                        this.$element().addClass("dx-timeview")
                    },
                    _render: function() {
                        this.callBase();
                        this._renderBox();
                        this._updateTime()
                    },
                    _renderBox: function() {
                        const $box = (0, _renderer.default)("<div>").appendTo(this.$element());
                        const items = [];
                        if (this.option("_showClock")) {
                            items.push({
                                ratio: 1,
                                shrink: 0,
                                baseSize: "auto",
                                template: this._renderClock.bind(this)
                            })
                        }
                        items.push({
                            ratio: 0,
                            shrink: 0,
                            baseSize: "auto",
                            template: this._renderField.bind(this)
                        });
                        this._createComponent($box, _box.default, {
                            height: "100%",
                            width: "100%",
                            direction: "col",
                            items: items
                        })
                    },
                    _renderClock: function(_, __, container) {
                        this._$hourArrow = (0, _renderer.default)("<div>").addClass("dx-timeview-hourarrow");
                        this._$minuteArrow = (0, _renderer.default)("<div>").addClass("dx-timeview-minutearrow");
                        const $container = (0, _renderer.default)(container);
                        $container.addClass("dx-timeview-clock").append(this._$hourArrow).append(this._$minuteArrow);
                        this.setAria("role", "presentation", $container)
                    },
                    _updateClock: function() {
                        const time = this._getValue();
                        const hourArrowAngle = time.getHours() / 12 * 360 + time.getMinutes() / 60 * 30;
                        const minuteArrowAngle = time.getMinutes() / 60 * 360;
                        rotateArrow(this._$hourArrow, hourArrowAngle, this.option("_arrowOffset"));
                        rotateArrow(this._$minuteArrow, minuteArrowAngle, this.option("_arrowOffset"))
                    },
                    _getBoxItems: function(is12HourFormat) {
                        const items = [{
                            ratio: 0,
                            shrink: 0,
                            baseSize: "auto",
                            template: () => this._hourBox.$element()
                        }, {
                            ratio: 0,
                            shrink: 0,
                            baseSize: "auto",
                            template: (0, _renderer.default)("<div>").addClass("dx-timeview-time-separator").text(_date.default.getTimeSeparator())
                        }, {
                            ratio: 0,
                            shrink: 0,
                            baseSize: "auto",
                            template: () => this._minuteBox.$element()
                        }];
                        if (is12HourFormat) {
                            items.push({
                                ratio: 0,
                                shrink: 0,
                                baseSize: "auto",
                                template: () => this._format12.$element()
                            })
                        }
                        return items
                    },
                    _renderField: function() {
                        const is12HourFormat = !this.option("use24HourFormat");
                        this._createHourBox(is12HourFormat);
                        this._createMinuteBox();
                        if (is12HourFormat) {
                            this._createFormat12Box()
                        }
                        return this._createComponent((0, _renderer.default)("<div>").addClass("dx-timeview-field"), _box.default, {
                            direction: "row",
                            align: "center",
                            crossAlign: "center",
                            items: this._getBoxItems(is12HourFormat)
                        }).$element()
                    },
                    _createHourBox: function(is12HourFormat) {
                        const editor = this._hourBox = this._createComponent((0, _renderer.default)("<div>"), _number_box.default, (0, _extend.extend)({
                            min: -1,
                            max: is12HourFormat ? 13 : 24,
                            value: this._getValue().getHours(),
                            onValueChanged: this._onHourBoxValueChanged.bind(this),
                            onKeyboardHandled: opts => this._keyboardHandler(opts)
                        }, this._getNumberBoxConfig()));
                        editor.setAria("label", "hours")
                    },
                    _isPM: function() {
                        return !this.option("use24HourFormat") && 1 === this._format12.option("value")
                    },
                    _onHourBoxValueChanged: function(_ref) {
                        let {
                            value: value,
                            component: component
                        } = _ref;
                        const currentValue = this._getValue();
                        const newValue = new Date(currentValue);
                        let newHours = this._convertMaxHourToMin(value);
                        component.option("value", newHours);
                        if (this._isPM()) {
                            newHours += 12
                        }
                        newValue.setHours(newHours);
                        _ui.default.normalizeTime(newValue);
                        this.option("value", newValue)
                    },
                    _convertMaxHourToMin: function(hours) {
                        const maxHoursValue = this.option("use24HourFormat") ? 24 : 12;
                        return (maxHoursValue + hours) % maxHoursValue
                    },
                    _createMinuteBox: function() {
                        const editor = this._minuteBox = this._createComponent((0, _renderer.default)("<div>"), _number_box.default, (0, _extend.extend)({
                            min: -1,
                            max: 60,
                            value: this._getValue().getMinutes(),
                            onKeyboardHandled: opts => this._keyboardHandler(opts),
                            onValueChanged: _ref2 => {
                                let {
                                    value: value,
                                    component: component
                                } = _ref2;
                                const newMinutes = (60 + value) % 60;
                                component.option("value", newMinutes);
                                const time = new Date(this._getValue());
                                time.setMinutes(newMinutes);
                                _ui.default.normalizeTime(time);
                                this.option("value", time)
                            }
                        }, this._getNumberBoxConfig()));
                        editor.setAria("label", "minutes")
                    },
                    _createFormat12Box: function() {
                        const periodNames = _date.default.getPeriodNames();
                        const editor = this._format12 = this._createComponent((0, _renderer.default)("<div>").addClass("dx-timeview-format12"), _select_box.default, {
                            items: [{
                                value: -1,
                                text: periodNames[0]
                            }, {
                                value: 1,
                                text: periodNames[1]
                            }],
                            valueExpr: "value",
                            displayExpr: "text",
                            onKeyboardHandled: opts => this._keyboardHandler(opts),
                            onValueChanged: _ref3 => {
                                let {
                                    value: value
                                } = _ref3;
                                const hours = this._getValue().getHours();
                                const time = new Date(this._getValue());
                                const newHours = (hours + 12 * value) % 24;
                                time.setHours(newHours);
                                this.option("value", time)
                            },
                            value: this._getValue().getHours() >= 12 ? 1 : -1,
                            stylingMode: this.option("stylingMode")
                        });
                        editor.setAria("label", "type")
                    },
                    _refreshFormat12: function() {
                        if (this.option("use24HourFormat")) {
                            return
                        }
                        const value = this._getValue();
                        const hours = value.getHours();
                        const isPM = hours >= 12;
                        const newValue = isPM ? 1 : -1;
                        this._silentEditorValueUpdate(this._format12, newValue)
                    },
                    _silentEditorValueUpdate: function(editor, value) {
                        if (editor) {
                            editor._suppressValueChangeAction();
                            editor.option("value", value);
                            editor._resumeValueChangeAction()
                        }
                    },
                    _getNumberBoxConfig: function() {
                        return {
                            showSpinButtons: true,
                            displayValueFormatter: function(value) {
                                return (value < 10 ? "0" : "") + value
                            },
                            stylingMode: this.option("stylingMode")
                        }
                    },
                    _normalizeHours: function(hours) {
                        return this.option("use24HourFormat") ? hours : hours % 12 || 12
                    },
                    _updateField: function() {
                        const hours = this._normalizeHours(this._getValue().getHours());
                        this._silentEditorValueUpdate(this._hourBox, hours);
                        this._silentEditorValueUpdate(this._minuteBox, this._getValue().getMinutes());
                        this._refreshFormat12()
                    },
                    _updateTime: function() {
                        if (this.option("_showClock")) {
                            this._updateClock()
                        }
                        this._updateField()
                    },
                    _visibilityChanged: function(visible) {
                        if (visible) {
                            this._updateTime()
                        }
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "value":
                                this._updateTime();
                                this.callBase(args);
                                break;
                            case "_arrowOffset":
                                break;
                            case "use24HourFormat":
                            case "_showClock":
                            case "stylingMode":
                                this._invalidate();
                                break;
                            default:
                                this.callBase(args)
                        }
                    }
                });
                (0, _component_registrator.default)("dxTimeView", TimeView);
                var _default = TimeView;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        56258:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/date_range_box.js ***!
              \******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _ui = (obj = __webpack_require__( /*! ./date_range_box/ui.date_range_box */ 64850), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _ui.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        45020:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/date_range_box/strategy/rangeCalendar.js ***!
              \*****************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _uiDate_boxStrategy = _interopRequireDefault(__webpack_require__( /*! ../../date_box/ui.date_box.strategy.calendar */ 46919));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../events/core/events_engine */ 55994));
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _uiDate_range = __webpack_require__( /*! ../ui.date_range.utils */ 86974);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let RangeCalendarStrategy = function(_CalendarStrategy) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(RangeCalendarStrategy, _CalendarStrategy);

                    function RangeCalendarStrategy(dateBox) {
                        var _this;
                        _this = _CalendarStrategy.call(this) || this;
                        _this.dateBox = dateBox;
                        _this.dateRangeBox = dateBox.option("_dateRangeBoxInstance");
                        return _this
                    }
                    var _proto = RangeCalendarStrategy.prototype;
                    _proto.popupConfig = function(_popupConfig) {
                        return (0, _extend.extend)(true, _CalendarStrategy.prototype.popupConfig.call(this, _popupConfig), {
                            position: {
                                of: this.dateRangeBox.$element()
                            }
                        })
                    };
                    _proto.popupShowingHandler = function() {
                        var _this$_widget;
                        null === (_this$_widget = this._widget) || void 0 === _this$_widget ? void 0 : _this$_widget._restoreViewsMinMaxOptions();
                        this._dateSelectedCounter = 0
                    };
                    _proto._getPopup = function() {
                        return _CalendarStrategy.prototype._getPopup.call(this) || this.dateRangeBox.getStartDateBox()._popup
                    };
                    _proto.supportedKeys = function() {
                        return _extends({}, _CalendarStrategy.prototype.supportedKeys.call(this), {
                            rightArrow: () => {
                                if (this.dateRangeBox.option("opened")) {
                                    return true
                                }
                            },
                            leftArrow: () => {
                                if (this.dateRangeBox.option("opened")) {
                                    return true
                                }
                            },
                            enter: e => {
                                if (this.dateRangeBox.option("opened")) {
                                    const dateBoxValue = this.dateBox.dateOption("value");
                                    this.dateBox._valueChangeEventHandler(e);
                                    const newDateBoxValue = this.dateBox.dateOption("value");
                                    const dateBoxValueChanged = !(0, _uiDate_range.isSameDates)(dateBoxValue, newDateBoxValue);
                                    if (dateBoxValueChanged) {
                                        this.dateRangeBox.getStartDateBox()._strategy._widget.option("value", this.dateRangeBox.option("value"))
                                    } else {
                                        this.dateRangeBox.getStartDateBox()._strategy._widget._enterKeyHandler(e)
                                    }
                                    return false
                                }
                            },
                            tab: e => {
                                if (!this.getDateRangeBox().option("opened")) {
                                    return
                                }
                                if (!this._getPopup().getFocusableElements().length) {
                                    if (!e.shiftKey && this.getDateRangeBox()._isEndDateActiveElement() || e.shiftKey && this.getDateRangeBox()._isStartDateActiveElement()) {
                                        this.dateRangeBox.close()
                                    }
                                    return
                                }
                                if (!e.shiftKey && this.getDateRangeBox()._isStartDateActiveElement() || e.shiftKey && this.getDateRangeBox()._isEndDateActiveElement()) {
                                    return
                                }
                                const $focusableElement = e.shiftKey ? this.getDateRangeBox().getStartDateBox()._getLastPopupElement() : this.getDateRangeBox().getStartDateBox()._getFirstPopupElement();
                                if ($focusableElement) {
                                    _events_engine.default.trigger($focusableElement, "focus");
                                    $focusableElement.select()
                                }
                                e.preventDefault()
                            }
                        })
                    };
                    _proto._getWidgetOptions = function() {
                        const {
                            disabledDates: disabledDatesValue,
                            value: value,
                            multiView: multiView
                        } = this.dateRangeBox.option();
                        const disabledDates = (0, _type.isFunction)(disabledDatesValue) ? this._injectComponent(disabledDatesValue) : null !== disabledDatesValue && void 0 !== disabledDatesValue ? disabledDatesValue : void 0;
                        return (0, _extend.extend)(_CalendarStrategy.prototype._getWidgetOptions.call(this), {
                            disabledDates: disabledDates,
                            value: value,
                            selectionMode: "range",
                            viewsCount: multiView ? 2 : 1,
                            _allowChangeSelectionOrder: true,
                            _currentSelection: this.getCurrentSelection()
                        })
                    };
                    _proto._refreshActiveDescendant = function(e) {
                        this.dateRangeBox.setAria("activedescendant", e.actionValue)
                    };
                    _proto._injectComponent = function(func) {
                        return params => func((0, _extend.extend)(params, {
                            component: this.dateRangeBox
                        }))
                    };
                    _proto.getKeyboardListener = function() {
                        return this.dateRangeBox.getStartDateBox() ? this.dateRangeBox.getStartDateBox()._strategy._widget : this._widget
                    };
                    _proto.getValue = function() {
                        return this._widget.option("value")
                    };
                    _proto._updateValue = function() {
                        const {
                            value: value
                        } = this.dateRangeBox.option();
                        if (!this._widget) {
                            return
                        }
                        this._shouldPreventFocusChange = true;
                        this._widget.option("value", value)
                    };
                    _proto._isInstantlyMode = function() {
                        return "instantly" === this.dateRangeBox.option("applyValueMode")
                    };
                    _proto._valueChangedHandler = function(_ref) {
                        let {
                            value: value,
                            previousValue: previousValue,
                            event: event
                        } = _ref;
                        if ((0, _uiDate_range.isSameDateArrays)(value, previousValue) && !this._widget._valueSelected) {
                            this._shouldPreventFocusChange = false;
                            return
                        }
                        this._widget._valueSelected = false;
                        if (this._isInstantlyMode()) {
                            if (!this.dateRangeBox.option("disableOutOfRangeSelection")) {
                                if ("startDate" === this._getCalendarCurrentSelection()) {
                                    this._dateSelectedCounter = 0
                                } else {
                                    this._dateSelectedCounter = 1;
                                    if (!value[0]) {
                                        this._dateSelectedCounter = -1
                                    } else if ((0, _uiDate_range.getDeserializedDate)(value[0]) > (0, _uiDate_range.getDeserializedDate)(value[1])) {
                                        this.dateRangeBox.updateValue([value[0], null], event);
                                        return
                                    }
                                }
                            }
                            this.dateRangeBox.updateValue(value, event);
                            this._dateSelectedCounter += 1;
                            if (2 === this._dateSelectedCounter) {
                                this.getDateRangeBox().close();
                                return
                            }
                        } else if ("endDate" === this._getCalendarCurrentSelection()) {
                            if (value[0] && (0, _uiDate_range.getDeserializedDate)(value[0]) > (0, _uiDate_range.getDeserializedDate)(value[1])) {
                                return
                            }
                        }
                        if (!this._shouldPreventFocusChange) {
                            this._moveFocusToNextInput()
                        }
                        this._shouldPreventFocusChange = false
                    };
                    _proto._moveFocusToNextInput = function() {
                        const targetDateBox = "startDate" === this._getCalendarCurrentSelection() ? this.getDateRangeBox().getEndDateBox() : this.getDateRangeBox().getStartDateBox();
                        targetDateBox.focus();
                        _events_engine.default.trigger(targetDateBox.field(), "dxclick")
                    };
                    _proto.getCurrentSelection = function() {
                        return this.dateRangeBox.option("_currentSelection")
                    };
                    _proto._getCalendarCurrentSelection = function() {
                        return this._widget.option("_currentSelection")
                    };
                    _proto._closeDropDownByEnter = function() {
                        if ("startDate" === this._getCalendarCurrentSelection()) {
                            return false
                        } else {
                            return true
                        }
                    };
                    _proto.dateBoxValue = function() {
                        if (arguments.length) {
                            return this.dateBox.dateValue.apply(this.dateBox, arguments)
                        } else {
                            return this.dateBox.dateOption.apply(this.dateBox, ["value"])
                        }
                    };
                    _proto._cellClickHandler = function() {};
                    _proto.setActiveStartDateBox = function() {
                        this.dateBox = this.dateRangeBox.getStartDateBox()
                    };
                    _proto.setActiveEndDateBox = function() {
                        this.dateBox = this.dateRangeBox.getEndDateBox()
                    };
                    _proto.getDateRangeBox = function() {
                        return this.dateRangeBox
                    };
                    return RangeCalendarStrategy
                }(_uiDate_boxStrategy.default);
                var _default = RangeCalendarStrategy;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        86974:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/date_range_box/ui.date_range.utils.js ***!
              \**************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.sortDatesArray = exports.monthDifference = exports.isSameDates = exports.isSameDateArrays = exports.getDeserializedDate = void 0;
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 91198));
                var _date_serialization = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date_serialization */ 69434));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const getDeserializedDate = value => _date_serialization.default.deserializeDate(value);
                exports.getDeserializedDate = getDeserializedDate;
                const isSameDates = (date1, date2) => {
                    if (!date1 && !date2) {
                        return true
                    }
                    return _date.default.sameDate(getDeserializedDate(date1), getDeserializedDate(date2))
                };
                exports.isSameDates = isSameDates;
                exports.isSameDateArrays = (value, previousValue) => {
                    const [startDate, endDate] = value;
                    const [previousStartDate, previousEndDate] = previousValue;
                    return isSameDates(startDate, previousStartDate) && isSameDates(endDate, previousEndDate)
                };
                exports.sortDatesArray = value => {
                    const [startDate, endDate] = value;
                    if (startDate && endDate && getDeserializedDate(startDate) > getDeserializedDate(endDate)) {
                        return [endDate, startDate]
                    } else {
                        return value
                    }
                };
                exports.monthDifference = (date1, date2) => 12 * (date2.getFullYear() - date1.getFullYear()) - date1.getMonth() + date2.getMonth()
            },
        64850:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/date_range_box/ui.date_range_box.js ***!
              \************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _icon = __webpack_require__( /*! ../../core/utils/icon */ 44899);
                var _config = _interopRequireDefault(__webpack_require__( /*! ../../core/config */ 80209));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _themes = __webpack_require__( /*! ../themes */ 75811);
                var _editor = _interopRequireDefault(__webpack_require__( /*! ../editor/editor */ 96452));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./ui.multiselect_date_box */ 56120));
                var _index = _interopRequireDefault(__webpack_require__( /*! ../text_box/texteditor_button_collection/index */ 91202));
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../drop_down_editor/ui.drop_down_button */ 29783));
                var _uiText_editor = _interopRequireDefault(__webpack_require__( /*! ../text_box/ui.text_editor.clear */ 49714));
                var _function_template = __webpack_require__( /*! ../../core/templates/function_template */ 68494);
                var _uiDate_range = __webpack_require__( /*! ./ui.date_range.utils */ 86974);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _inflector = __webpack_require__( /*! ../../core/utils/inflector */ 78008);
                var _index2 = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const EVENTS_LIST = ["KeyDown", "KeyUp", "Change", "Cut", "Copy", "Paste", "Input", "EnterKey"];
                let DateRangeBox = function(_Editor) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(DateRangeBox, _Editor);

                    function DateRangeBox() {
                        return _Editor.apply(this, arguments) || this
                    }
                    var _proto = DateRangeBox.prototype;
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_Editor.prototype._getDefaultOptions.call(this), {
                            acceptCustomValue: true,
                            activeStateEnabled: true,
                            applyButtonText: _message.default.format("OK"),
                            applyValueMode: "instantly",
                            buttons: void 0,
                            calendarOptions: {},
                            cancelButtonText: _message.default.format("Cancel"),
                            endDateOutOfRangeMessage: _message.default.format("dxDateRangeBox-endDateOutOfRangeMessage"),
                            dateSerializationFormat: void 0,
                            deferRendering: true,
                            disableOutOfRangeSelection: false,
                            disabledDates: null,
                            displayFormat: null,
                            dropDownButtonTemplate: "dropDownButton",
                            dropDownOptions: {},
                            endDate: null,
                            endDateInputAttr: {},
                            endDateLabel: _message.default.format("dxDateRangeBox-endDateLabel"),
                            endDateName: "",
                            endDatePlaceholder: "",
                            endDateText: void 0,
                            focusStateEnabled: true,
                            hoverStateEnabled: true,
                            invalidStartDateMessage: _message.default.format("dxDateRangeBox-invalidStartDateMessage"),
                            invalidEndDateMessage: _message.default.format("dxDateRangeBox-invalidEndDateMessage"),
                            isValid: true,
                            labelMode: "static",
                            max: void 0,
                            min: void 0,
                            multiView: true,
                            onChange: null,
                            onClosed: null,
                            onCopy: null,
                            onCut: null,
                            onEnterKey: null,
                            onInput: null,
                            onKeyDown: null,
                            onKeyUp: null,
                            onOpened: null,
                            onPaste: null,
                            onValueChanged: null,
                            openOnFieldClick: true,
                            opened: false,
                            pickerType: "calendar",
                            readOnly: false,
                            showClearButton: false,
                            showDropDownButton: true,
                            spellcheck: false,
                            startDate: null,
                            startDateInputAttr: {},
                            startDateLabel: _message.default.format("dxDateRangeBox-startDateLabel"),
                            startDateName: "",
                            startDateOutOfRangeMessage: _message.default.format("dxDateRangeBox-startDateOutOfRangeMessage"),
                            startDatePlaceholder: "",
                            startDateText: void 0,
                            stylingMode: (0, _config.default)().editorStylingMode || "outlined",
                            todayButtonText: _message.default.format("dxCalendar-todayButtonText"),
                            useHiddenSubmitElement: false,
                            useMaskBehavior: false,
                            validationError: null,
                            validationErrors: null,
                            validationMessageMode: "auto",
                            validationMessagePosition: "auto",
                            validationStatus: "valid",
                            value: [null, null],
                            valueChangeEvent: "change",
                            _internalValidationErrors: [],
                            _currentSelection: "startDate"
                        })
                    };
                    _proto._defaultOptionsRules = function() {
                        return _Editor.prototype._defaultOptionsRules.call(this).concat([{
                            device: function() {
                                const themeName = (0, _themes.current)();
                                return (0, _themes.isMaterial)(themeName)
                            },
                            options: {
                                labelMode: "floating",
                                stylingMode: (0, _config.default)().editorStylingMode || "filled"
                            }
                        }, {
                            device: function() {
                                const themeName = (0, _themes.current)();
                                return (0, _themes.isFluent)(themeName)
                            },
                            options: {
                                labelMode: "outside"
                            }
                        }, {
                            device: function() {
                                const realDevice = _devices.default.real();
                                const platform = realDevice.platform;
                                return "ios" === platform || "android" === platform
                            },
                            options: {
                                multiView: false
                            }
                        }])
                    };
                    _proto._initOptions = function(options) {
                        _Editor.prototype._initOptions.call(this, options);
                        const {
                            value: initialValue
                        } = this.initialOption();
                        let {
                            value: value,
                            startDate: startDate,
                            endDate: endDate
                        } = this.option();
                        if (value[0] && value[1] && (0, _uiDate_range.getDeserializedDate)(value[0]) > (0, _uiDate_range.getDeserializedDate)(value[1])) {
                            value = [value[1], value[0]]
                        }
                        if (startDate && endDate && (0, _uiDate_range.getDeserializedDate)(startDate) > (0, _uiDate_range.getDeserializedDate)(endDate)) {
                            [startDate, endDate] = [endDate, startDate]
                        }
                        if ((0, _uiDate_range.isSameDateArrays)(initialValue, value)) {
                            value = [startDate, endDate]
                        } else {
                            [startDate, endDate] = value
                        }
                        this.option({
                            startDate: startDate,
                            endDate: endDate,
                            value: value
                        })
                    };
                    _proto._createOpenAction = function() {
                        this._openAction = this._createActionByOption("onOpened", {
                            excludeValidators: ["disabled", "readOnly"]
                        })
                    };
                    _proto._raiseOpenAction = function() {
                        if (!this._openAction) {
                            this._createOpenAction()
                        }
                        this._openAction()
                    };
                    _proto._createCloseAction = function() {
                        this._closeAction = this._createActionByOption("onClosed", {
                            excludeValidators: ["disabled", "readOnly"]
                        })
                    };
                    _proto._raiseCloseAction = function() {
                        if (!this._closeAction) {
                            this._createCloseAction()
                        }
                        this._closeAction()
                    };
                    _proto._createEventAction = function(eventName) {
                        this["_".concat((0, _inflector.camelize)(eventName), "Action")] = this._createActionByOption("on".concat(eventName), {
                            excludeValidators: ["readOnly"]
                        })
                    };
                    _proto._raiseAction = function(eventName, event) {
                        const action = this["_".concat((0, _inflector.camelize)(eventName), "Action")];
                        if (!action) {
                            this._createEventAction(eventName)
                        }
                        this["_".concat((0, _inflector.camelize)(eventName), "Action")]({
                            event: event
                        })
                    };
                    _proto._initTemplates = function() {
                        this._templateManager.addDefaultTemplates({
                            dropDownButton: new _function_template.FunctionTemplate((function(options) {
                                const $icon = (0, _renderer.default)("<div>").addClass("dx-dropdowneditor-icon");
                                (0, _renderer.default)(options.container).append($icon)
                            }))
                        });
                        this.callBase()
                    };
                    _proto._getDefaultButtons = function() {
                        return [{
                            name: "clear",
                            Ctor: _uiText_editor.default
                        }, {
                            name: "dropDown",
                            Ctor: _ui2.default
                        }]
                    };
                    _proto._initMarkup = function() {
                        this.$element().addClass("dx-daterangebox").addClass("dx-texteditor").addClass("dx-dropdowneditor");
                        this._toggleDropDownEditorActiveClass();
                        this._toggleEditorLabelClass();
                        this._toggleReadOnlyState();
                        this._renderStylingMode();
                        this._renderEndDateBox();
                        this._renderSeparator();
                        this._renderStartDateBox();
                        this._toggleEmptinessState();
                        this._renderEmptinessEvent();
                        this._renderButtonsContainer();
                        _Editor.prototype._initMarkup.call(this);
                        this.$element().removeClass("dx-show-invalid-badge")
                    };
                    _proto._renderEmptinessEvent = function() {
                        const eventName = (0, _index2.addNamespace)("input blur", this.NAME);
                        _events_engine.default.off(this._focusTarget(), eventName);
                        _events_engine.default.on(this._focusTarget(), eventName, this._toggleEmptinessState.bind(this))
                    };
                    _proto._toggleEmptinessState = function() {
                        const isEmpty = this.getStartDateBox().$element().hasClass("dx-texteditor-empty") && this.getEndDateBox().$element().hasClass("dx-texteditor-empty");
                        this.$element().toggleClass("dx-texteditor-empty", isEmpty)
                    };
                    _proto._attachKeyboardEvents = function() {
                        if (!this.option("readOnly")) {
                            _Editor.prototype._attachKeyboardEvents.call(this)
                        }
                    };
                    _proto._toggleReadOnlyState = function() {
                        const {
                            readOnly: readOnly
                        } = this.option();
                        this.$element().toggleClass("dx-state-readonly", !!readOnly)
                    };
                    _proto._toggleDropDownEditorActiveClass = function() {
                        const {
                            opened: opened
                        } = this.option();
                        this.$element().toggleClass("dx-dropdowneditor-active", opened)
                    };
                    _proto._toggleEditorLabelClass = function() {
                        const {
                            startDateLabel: startDateLabel,
                            endDateLabel: endDateLabel,
                            labelMode: labelMode
                        } = this.option();
                        const isLabelVisible = (!!startDateLabel || !!endDateLabel) && "hidden" !== labelMode;
                        this.$element().removeClass("dx-texteditor-with-floating-label").removeClass("dx-texteditor-label-outside").removeClass("dx-texteditor-with-label");
                        if (isLabelVisible) {
                            this.$element().addClass("floating" === labelMode ? "dx-texteditor-with-floating-label" : "dx-texteditor-with-label");
                            if ("outside" === labelMode) {
                                this.$element().addClass("dx-texteditor-label-outside")
                            }
                        }
                    };
                    _proto._renderStartDateBox = function() {
                        this._$startDateBox = (0, _renderer.default)("<div>").addClass("dx-start-datebox").prependTo(this.$element());
                        this._startDateBox = this._createComponent(this._$startDateBox, _ui.default, this._getStartDateBoxConfig());
                        this._startDateBox.NAME = "_StartDateBox"
                    };
                    _proto._renderEndDateBox = function() {
                        this._$endDateBox = (0, _renderer.default)("<div>").addClass("dx-end-datebox").appendTo(this.$element());
                        this._endDateBox = this._createComponent(this._$endDateBox, _ui.default, this._getEndDateBoxConfig());
                        this._endDateBox.NAME = "_EndDateBox"
                    };
                    _proto._renderSeparator = function() {
                        const $icon = (0, _icon.getImageContainer)("to");
                        this._$separator = (0, _renderer.default)("<div>").addClass("dx-daterangebox-separator").prependTo(this.$element());
                        this._renderPreventBlurOnSeparatorClick();
                        $icon.appendTo(this._$separator)
                    };
                    _proto._renderPreventBlurOnSeparatorClick = function() {
                        const eventName = (0, _index2.addNamespace)("mousedown", this.NAME);
                        _events_engine.default.off(this._$separator, eventName);
                        _events_engine.default.on(this._$separator, eventName, e => {
                            if (!this._hasActiveElement()) {
                                this.focus()
                            }
                            e.preventDefault()
                        })
                    };
                    _proto._renderButtonsContainer = function() {
                        this._buttonCollection = new _index.default(this, this._getDefaultButtons());
                        this._$beforeButtonsContainer = null;
                        this._$afterButtonsContainer = null;
                        const {
                            buttons: buttons
                        } = this.option();
                        this._$beforeButtonsContainer = this._buttonCollection.renderBeforeButtons(buttons, this.$element());
                        this._$afterButtonsContainer = this._buttonCollection.renderAfterButtons(buttons, this.$element())
                    };
                    _proto._updateButtons = function(names) {
                        this._buttonCollection.updateButtons(names)
                    };
                    _proto._openHandler = function() {
                        this._toggleOpenState()
                    };
                    _proto._shouldCallOpenHandler = function() {
                        return true
                    };
                    _proto._toggleOpenState = function() {
                        const {
                            opened: opened
                        } = this.option();
                        if (!opened) {
                            this.getStartDateBox()._focusInput()
                        }
                        if (!this.option("readOnly")) {
                            this.option("opened", !this.option("opened"))
                        }
                    };
                    _proto._clearValueHandler = function(e) {
                        e.stopPropagation();
                        this._saveValueChangeEvent(e);
                        this.clear();
                        !this._isStartDateActiveElement() && this.focus();
                        _events_engine.default.trigger((0, _renderer.default)(this.startDateField()), "input")
                    };
                    _proto._isClearButtonVisible = function() {
                        return this.option("showClearButton") && !this.option("readOnly")
                    };
                    _proto._focusInHandler = function(event) {
                        if (this._shouldSkipFocusEvent(event)) {
                            return
                        }
                        _Editor.prototype._focusInHandler.call(this, event)
                    };
                    _proto._focusOutHandler = function(event) {
                        if (this._shouldSkipFocusEvent(event)) {
                            return
                        }
                        _Editor.prototype._focusOutHandler.call(this, event)
                    };
                    _proto._shouldSkipFocusEvent = function(event) {
                        const {
                            target: target,
                            relatedTarget: relatedTarget
                        } = event;
                        return (0, _renderer.default)(target).is(this.startDateField()) && (0, _renderer.default)(relatedTarget).is(this.endDateField()) || (0, _renderer.default)(target).is(this.endDateField()) && (0, _renderer.default)(relatedTarget).is(this.startDateField())
                    };
                    _proto._getPickerType = function() {
                        const {
                            pickerType: pickerType
                        } = this.option();
                        return ["calendar", "native"].includes(pickerType) ? pickerType : "calendar"
                    };
                    _proto._getRestErrors = function(allErrors, partialErrors) {
                        return allErrors.filter(error => !partialErrors.some(prevError => error.message === prevError.message))
                    };
                    _proto._syncValidationErrors = function(optionName, newPartialErrors, previousPartialErrors) {
                        newPartialErrors || (newPartialErrors = []);
                        previousPartialErrors || (previousPartialErrors = []);
                        const allErrors = this.option(optionName) || [];
                        const otherErrors = this._getRestErrors(allErrors, previousPartialErrors);
                        this.option(optionName, [...otherErrors, ...newPartialErrors])
                    };
                    _proto._getDateBoxConfig = function() {
                        const options = this.option();
                        const dateBoxConfig = {
                            acceptCustomValue: options.acceptCustomValue,
                            activeStateEnabled: options.activeStateEnabled,
                            applyValueMode: options.applyValueMode,
                            dateOutOfRangeMessage: options.dateOutOfRangeMessage,
                            dateSerializationFormat: options.dateSerializationFormat,
                            deferRendering: options.deferRendering,
                            disabled: options.disabled,
                            displayFormat: options.displayFormat,
                            focusStateEnabled: options.focusStateEnabled,
                            isValid: options.isValid,
                            tabIndex: options.tabIndex,
                            height: options.height,
                            hoverStateEnabled: options.hoverStateEnabled,
                            labelMode: options.labelMode,
                            max: options.max,
                            min: options.min,
                            openOnFieldClick: options.openOnFieldClick,
                            pickerType: this._getPickerType(),
                            readOnly: options.readOnly,
                            rtlEnabled: options.rtlEnabled,
                            spellcheck: options.spellcheck,
                            stylingMode: options.stylingMode,
                            type: "date",
                            useMaskBehavior: options.useMaskBehavior,
                            validationMessageMode: options.validationMessageMode,
                            validationMessagePosition: options.validationMessagePosition,
                            valueChangeEvent: options.valueChangeEvent,
                            onKeyDown: options.onKeyDown,
                            onKeyUp: options.onKeyUp,
                            onChange: options.onChange,
                            onInput: options.onInput,
                            onCut: options.onCut,
                            onCopy: options.onCopy,
                            onPaste: options.onPaste,
                            onEnterKey: options.onEnterKey,
                            _dateRangeBoxInstance: this,
                            _showValidationMessage: false
                        };
                        (0, _iterator.each)(EVENTS_LIST, (_, eventName) => {
                            const optionName = "on".concat(eventName);
                            if (this.hasActionSubscription(optionName)) {
                                dateBoxConfig[optionName] = e => {
                                    this._raiseAction(eventName, e.event)
                                }
                            }
                        });
                        return dateBoxConfig
                    };
                    _proto._hideOnOutsideClickHandler = function(_ref) {
                        let {
                            target: target
                        } = _ref;
                        const $target = (0, _renderer.default)(target);
                        const dropDownButton = this.getButton("dropDown");
                        const $dropDownButton = dropDownButton && dropDownButton.$element();
                        const isInputClicked = !!$target.closest(this.$element()).length;
                        const isDropDownButtonClicked = !!$target.closest($dropDownButton).length;
                        const isOutsideClick = !isInputClicked && !isDropDownButtonClicked;
                        return isOutsideClick
                    };
                    _proto._getStartDateBoxConfig = function() {
                        var _options$dropDownOpti;
                        const options = this.option();
                        return _extends({}, this._getDateBoxConfig(), {
                            applyButtonText: options.applyButtonText,
                            calendarOptions: options.calendarOptions,
                            cancelButtonText: options.cancelButtonText,
                            dateOutOfRangeMessage: options.startDateOutOfRangeMessage,
                            deferRendering: options.deferRendering,
                            disabledDates: null === (_options$dropDownOpti = options.dropDownOptions) || void 0 === _options$dropDownOpti ? void 0 : _options$dropDownOpti.disabledDates,
                            dropDownOptions: _extends({
                                showTitle: false,
                                title: "",
                                hideOnOutsideClick: e => this._hideOnOutsideClickHandler(e),
                                hideOnParentScroll: false,
                                preventScrollEvents: false
                            }, options.dropDownOptions),
                            invalidDateMessage: options.invalidStartDateMessage,
                            onValueChanged: _ref2 => {
                                let {
                                    value: value,
                                    event: event
                                } = _ref2;
                                const newValue = [value, this.option("value")[1]];
                                this.updateValue(newValue, event)
                            },
                            opened: options.opened,
                            onOpened: () => {
                                this._raiseOpenAction()
                            },
                            onClosed: () => {
                                this._raiseCloseAction()
                            },
                            onOptionChanged: args => {
                                const {
                                    name: name,
                                    value: value,
                                    previousValue: previousValue
                                } = args;
                                if ("text" === name) {
                                    this.option("startDateText", value)
                                }
                                if ("validationErrors" === name) {
                                    this._syncValidationErrors("_internalValidationErrors", value, previousValue)
                                }
                            },
                            todayButtonText: options.todayButtonText,
                            showClearButton: false,
                            showDropDownButton: false,
                            value: this.option("value")[0],
                            label: options.startDateLabel,
                            placeholder: options.startDatePlaceholder,
                            inputAttr: options.startDateInputAttr,
                            name: options.startDateName,
                            _showValidationIcon: false
                        })
                    };
                    _proto._getEndDateBoxConfig = function() {
                        const options = this.option();
                        return _extends({}, this._getDateBoxConfig(), {
                            invalidDateMessage: options.invalidEndDateMessage,
                            dateOutOfRangeMessage: options.endDateOutOfRangeMessage,
                            onValueChanged: _ref3 => {
                                let {
                                    value: value,
                                    event: event
                                } = _ref3;
                                const newValue = [this.option("value")[0], value];
                                this.updateValue(newValue, event)
                            },
                            onOptionChanged: args => {
                                const {
                                    name: name,
                                    value: value,
                                    previousValue: previousValue
                                } = args;
                                if ("text" === name) {
                                    this.option("endDateText", value)
                                }
                                if ("validationErrors" === name) {
                                    this._syncValidationErrors("_internalValidationErrors", value, previousValue)
                                }
                            },
                            opened: options.opened,
                            showClearButton: false,
                            showDropDownButton: false,
                            value: this.option("value")[1],
                            label: options.endDateLabel,
                            placeholder: options.endDatePlaceholder,
                            deferRendering: true,
                            inputAttr: options.endDateInputAttr,
                            name: options.endDateName
                        })
                    };
                    _proto._getValidationMessagePosition = function() {
                        const {
                            validationMessagePosition: validationMessagePosition
                        } = this.option();
                        if ("auto" === validationMessagePosition) {
                            return this.option("opened") ? "top" : "bottom"
                        }
                        return validationMessagePosition
                    };
                    _proto._getSerializedDates = function(_ref4) {
                        let [startDate, endDate] = _ref4;
                        return [this.getStartDateBox()._serializeDate((0, _uiDate_range.getDeserializedDate)(startDate)), this.getStartDateBox()._serializeDate((0, _uiDate_range.getDeserializedDate)(endDate))]
                    };
                    _proto.updateValue = function(newValue, event) {
                        if (!(0, _uiDate_range.isSameDateArrays)(newValue, this.option("value"))) {
                            if (event) {
                                this._saveValueChangeEvent(event)
                            }
                            this.option("value", this._getSerializedDates(newValue))
                        }
                    };
                    _proto._updateDateBoxesValue = function(newValue) {
                        const startDateBox = this.getStartDateBox();
                        const endDateBox = this.getEndDateBox();
                        const [newStartDate, newEndDate] = newValue;
                        const oldStartDate = startDateBox.option("value");
                        const oldEndDate = endDateBox.option("value");
                        if (!(0, _uiDate_range.isSameDates)(newStartDate, oldStartDate)) {
                            startDateBox.option("value", newStartDate)
                        }
                        if (!(0, _uiDate_range.isSameDates)(newEndDate, oldEndDate)) {
                            endDateBox.option("value", newEndDate)
                        }
                    };
                    _proto._renderAccessKey = function() {
                        const $startDateInput = (0, _renderer.default)(this.field()[0]);
                        const {
                            accessKey: accessKey
                        } = this.option();
                        $startDateInput.attr("accesskey", accessKey)
                    };
                    _proto._focusTarget = function() {
                        return this.$element().find(".".concat("dx-texteditor-input"))
                    };
                    _proto._focusEventTarget = function() {
                        return this.element()
                    };
                    _proto._focusClassTarget = function() {
                        return this.$element()
                    };
                    _proto._toggleFocusClass = function(isFocused, $element) {
                        _Editor.prototype._toggleFocusClass.call(this, isFocused, this._focusClassTarget($element))
                    };
                    _proto._hasActiveElement = function() {
                        return this._isStartDateActiveElement() || this._isEndDateActiveElement()
                    };
                    _proto._isStartDateActiveElement = function() {
                        return this._isActiveElement(this.startDateField())
                    };
                    _proto._isEndDateActiveElement = function() {
                        return this._isActiveElement(this.endDateField())
                    };
                    _proto._isActiveElement = function(input) {
                        return (0, _renderer.default)(input).is(_dom_adapter.default.getActiveElement(input))
                    };
                    _proto._popupContentIdentifier = function(identifier) {
                        if (identifier) {
                            this._popupContentId = identifier
                        }
                        return this._popupContentId
                    };
                    _proto._setAriaAttributes = function() {
                        const {
                            opened: opened
                        } = this.option();
                        const arias = {
                            expanded: opened,
                            controls: this._popupContentIdentifier()
                        };
                        const ariaOwns = opened ? this._popupContentIdentifier() : void 0;
                        this.setAria(arias);
                        this.setAria("owns", ariaOwns, this.$element())
                    };
                    _proto._cleanButtonContainers = function() {
                        var _this$_$beforeButtons, _this$_$afterButtonsC;
                        null === (_this$_$beforeButtons = this._$beforeButtonsContainer) || void 0 === _this$_$beforeButtons ? void 0 : _this$_$beforeButtons.remove();
                        null === (_this$_$afterButtonsC = this._$afterButtonsContainer) || void 0 === _this$_$afterButtonsC ? void 0 : _this$_$afterButtonsC.remove();
                        this._buttonCollection.clean();
                        this._$beforeButtonsContainer = null;
                        this._$afterButtonsContainer = null
                    };
                    _proto._applyCustomValidation = function(value) {
                        this.validationRequest.fire({
                            editor: this,
                            value: value
                        })
                    };
                    _proto._clean = function() {
                        var _this$_$startDateBox, _this$_$endDateBox, _this$_$separator;
                        this._cleanButtonContainers();
                        null === (_this$_$startDateBox = this._$startDateBox) || void 0 === _this$_$startDateBox ? void 0 : _this$_$startDateBox.remove();
                        null === (_this$_$endDateBox = this._$endDateBox) || void 0 === _this$_$endDateBox ? void 0 : _this$_$endDateBox.remove();
                        null === (_this$_$separator = this._$separator) || void 0 === _this$_$separator ? void 0 : _this$_$separator.remove();
                        _Editor.prototype._clean.call(this)
                    };
                    _proto._optionChanged = function(args) {
                        const {
                            name: name,
                            fullName: fullName,
                            value: value,
                            previousValue: previousValue
                        } = args;
                        switch (name) {
                            case "acceptCustomValue":
                            case "dateSerializationFormat":
                            case "displayFormat":
                            case "max":
                            case "min":
                            case "openOnFieldClick":
                            case "spellcheck":
                            case "useMaskBehavior":
                            case "valueChangeEvent":
                                this.getStartDateBox().option(name, value);
                                this.getEndDateBox().option(name, value);
                                break;
                            case "rtlEnabled":
                                _Editor.prototype._optionChanged.call(this, args);
                                break;
                            case "labelMode":
                                this._toggleEditorLabelClass();
                                this.getStartDateBox().option(name, value);
                                this.getEndDateBox().option(name, value);
                                break;
                            case "applyButtonText":
                            case "applyValueMode":
                            case "cancelButtonText":
                            case "deferRendering":
                            case "disabledDates":
                            case "todayButtonText":
                                this.getStartDateBox().option(name, value);
                                break;
                            case "opened":
                                this._toggleDropDownEditorActiveClass();
                                this.getStartDateBox().option(name, value);
                                this.getEndDateBox()._setOptionWithoutOptionChange(name, value);
                                break;
                            case "buttons":
                                this._cleanButtonContainers();
                                this._renderButtonsContainer();
                                break;
                            case "calendarOptions":
                            case "dropDownOptions":
                                this.getStartDateBox().option(fullName, value);
                                break;
                            case "pickerType": {
                                const pickerType = this._getPickerType();
                                this.getStartDateBox().option(name, pickerType);
                                this.getEndDateBox().option(name, pickerType);
                                break
                            }
                            case "dateOutOfRangeMessage":
                                break;
                            case "height":
                                this.getStartDateBox().option(name, value);
                                this.getEndDateBox().option(name, value);
                                _Editor.prototype._optionChanged.call(this, args);
                                break;
                            case "dropDownButtonTemplate":
                            case "showDropDownButton":
                                this._updateButtons(["dropDown"]);
                                break;
                            case "showClearButton":
                                this._updateButtons(["clear"]);
                                break;
                            case "endDate":
                                this.updateValue([this.option("value")[0], value]);
                                break;
                            case "startDateLabel":
                                this._toggleEditorLabelClass();
                                this.getStartDateBox().option("label", value);
                                break;
                            case "endDateLabel":
                                this._toggleEditorLabelClass();
                                this.getEndDateBox().option("label", value);
                                break;
                            case "startDatePlaceholder":
                                this.getStartDateBox().option("placeholder", value);
                                break;
                            case "endDatePlaceholder":
                                this.getEndDateBox().option("placeholder", value);
                                break;
                            case "startDateInputAttr":
                                this.getStartDateBox().option("inputAttr", value);
                                break;
                            case "startDateName":
                                this.getStartDateBox().option("name", value);
                                break;
                            case "endDateInputAttr":
                                this.getEndDateBox().option("inputAttr", value);
                                break;
                            case "endDateName":
                                this.getEndDateBox().option("name", value);
                                break;
                            case "multiView":
                                this.getStartDateBox().option("calendarOptions.viewsCount", value ? 2 : 1);
                                break;
                            case "tabIndex":
                            case "activeStateEnabled":
                            case "focusStateEnabled":
                            case "hoverStateEnabled":
                                _Editor.prototype._optionChanged.call(this, args);
                                this.getStartDateBox().option(name, value);
                                this.getEndDateBox().option(name, value);
                                break;
                            case "onValueChanged":
                                this._createValueChangeAction();
                                break;
                            case "onOpened":
                                this._createOpenAction();
                                break;
                            case "onClosed":
                                this._createCloseAction();
                                break;
                            case "onKeyDown":
                            case "onKeyUp":
                            case "onChange":
                            case "onInput":
                            case "onCut":
                            case "onCopy":
                            case "onPaste":
                            case "onEnterKey":
                                this._createEventAction(name.replace("on", ""));
                                break;
                            case "readOnly":
                            case "disabled":
                                this._updateButtons();
                                _Editor.prototype._optionChanged.call(this, args);
                                this.getStartDateBox().option(name, value);
                                this.getEndDateBox().option(name, value);
                                break;
                            case "disableOutOfRangeSelection":
                                break;
                            case "startDate":
                                this.updateValue([value, this.option("value")[1]]);
                                break;
                            case "stylingMode":
                                this._renderStylingMode();
                                this.getStartDateBox().option(name, value);
                                this.getEndDateBox().option(name, value);
                                break;
                            case "startDateText":
                            case "endDateText":
                            case "useHiddenSubmitElement":
                                break;
                            case "invalidStartDateMessage":
                                this.getStartDateBox().option("invalidDateMessage", value);
                                break;
                            case "invalidEndDateMessage":
                                this.getEndDateBox().option("invalidDateMessage", value);
                                break;
                            case "startDateOutOfRangeMessage":
                                this.getStartDateBox().option("dateOutOfRangeMessage", value);
                                break;
                            case "endDateOutOfRangeMessage":
                                this.getEndDateBox().option("dateOutOfRangeMessage", value);
                                break;
                            case "validationMessagePosition":
                                this.getStartDateBox().option(name, value);
                                _Editor.prototype._optionChanged.call(this, args);
                                break;
                            case "_internalValidationErrors": {
                                this._syncValidationErrors("validationErrors", value, previousValue);
                                const validationErrors = this.option("validationErrors");
                                this.option("isValid", !(null !== validationErrors && void 0 !== validationErrors && validationErrors.length));
                                break
                            }
                            case "isValid": {
                                this.getStartDateBox().option(name, value);
                                this.getEndDateBox().option(name, value);
                                const isValid = value && !this.option("_internalValidationErrors").length;
                                if (this._shouldSkipIsValidChange || isValid === value) {
                                    _Editor.prototype._optionChanged.call(this, args);
                                    return
                                }
                                this._shouldSkipIsValidChange = true;
                                this.option("isValid", isValid);
                                this._shouldSkipIsValidChange = false;
                                break
                            }
                            case "validationErrors": {
                                const internalValidationErrors = this.option("_internalValidationErrors") || [];
                                const allErrors = value || [];
                                const externalErrors = this._getRestErrors(allErrors, internalValidationErrors);
                                const errors = [...externalErrors, ...internalValidationErrors];
                                const newValue = errors.length ? errors : null;
                                this._options.silent("validationErrors", newValue);
                                _Editor.prototype._optionChanged.call(this, _extends({}, args, {
                                    value: newValue
                                }));
                                break
                            }
                            case "value": {
                                const newValue = (0, _uiDate_range.sortDatesArray)(value);
                                if (!(0, _uiDate_range.isSameDateArrays)(newValue, previousValue)) {
                                    const isDirty = !(0, _uiDate_range.isSameDateArrays)(newValue, this._initialValue);
                                    this.option("isDirty", isDirty);
                                    this._setOptionWithoutOptionChange("value", newValue);
                                    this._setOptionWithoutOptionChange("startDate", newValue[0]);
                                    this._setOptionWithoutOptionChange("endDate", newValue[1]);
                                    this._applyCustomValidation(newValue);
                                    this._updateDateBoxesValue(newValue);
                                    this.getStartDateBox()._strategy.renderValue();
                                    this._toggleEmptinessState();
                                    this._raiseValueChangeAction(newValue, previousValue);
                                    this._saveValueChangeEvent(void 0)
                                }
                                break
                            }
                            case "_currentSelection":
                                break;
                            default:
                                _Editor.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto.getStartDateBox = function() {
                        return this._startDateBox
                    };
                    _proto.getEndDateBox = function() {
                        return this._endDateBox
                    };
                    _proto.getButton = function(name) {
                        return this._buttonCollection.getButton(name)
                    };
                    _proto.open = function() {
                        this.option("opened", true)
                    };
                    _proto.close = function() {
                        this.option("opened", false)
                    };
                    _proto.content = function() {
                        return this.getStartDateBox().content()
                    };
                    _proto.field = function() {
                        return [this.startDateField(), this.endDateField()]
                    };
                    _proto.startDateField = function() {
                        return this.getStartDateBox().field()
                    };
                    _proto.endDateField = function() {
                        return this.getEndDateBox().field()
                    };
                    _proto.focus = function() {
                        this.getStartDateBox().focus()
                    };
                    _proto.reset = function() {
                        _Editor.prototype.reset.call(this);
                        const startDateBox = this.getStartDateBox();
                        const endDateBox = this.getEndDateBox();
                        startDateBox.reset();
                        endDateBox.reset();
                        startDateBox._updateInternalValidationState(true);
                        endDateBox._updateInternalValidationState(true)
                    };
                    _proto.clear = function() {
                        _Editor.prototype.clear.call(this);
                        this.getEndDateBox().clear();
                        this.getStartDateBox().clear()
                    };
                    return DateRangeBox
                }(_editor.default);
                (0, _component_registrator.default)("dxDateRangeBox", DateRangeBox);
                var _default = DateRangeBox;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        56120:
            /*!******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/date_range_box/ui.multiselect_date_box.js ***!
              \******************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _uiDate_box = _interopRequireDefault(__webpack_require__( /*! ../date_box/ui.date_box.mask */ 28105));
                var _rangeCalendar = _interopRequireDefault(__webpack_require__( /*! ./strategy/rangeCalendar */ 45020));
                var _utils = __webpack_require__( /*! ../../events/utils */ 39611);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _uiDate_range = __webpack_require__( /*! ./ui.date_range.utils */ 86974);
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let MultiselectDateBox = function(_DateBox) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(MultiselectDateBox, _DateBox);

                    function MultiselectDateBox() {
                        return _DateBox.apply(this, arguments) || this
                    }
                    var _proto = MultiselectDateBox.prototype;
                    _proto._initStrategy = function() {
                        this._strategy = new _rangeCalendar.default(this)
                    };
                    _proto._initMarkup = function() {
                        _DateBox.prototype._initMarkup.call(this);
                        this._renderInputClickEvent()
                    };
                    _proto._renderInputClickEvent = function() {
                        const clickEventName = (0, _utils.addNamespace)("dxclick", this.NAME);
                        _events_engine.default.off(this._input(), clickEventName);
                        _events_engine.default.on(this._input(), clickEventName, e => {
                            this._processValueChange(e)
                        })
                    };
                    _proto._applyButtonHandler = function(_ref) {
                        let {
                            event: event
                        } = _ref;
                        const value = this._strategy.getValue();
                        this._strategy.dateRangeBox.updateValue(value, event);
                        this.close();
                        this.option("focusStateEnabled") && this.focus()
                    };
                    _proto._openHandler = function(e) {
                        if (this._strategy.dateRangeBox.option("opened")) {
                            return
                        }
                        _DateBox.prototype._openHandler.call(this, e)
                    };
                    _proto._renderOpenedState = function() {
                        const {
                            opened: opened
                        } = this.option();
                        this._getDateRangeBox().option("opened", opened);
                        if (this._isStartDateBox()) {
                            if (opened) {
                                this._createPopup()
                            }
                            this._getDateRangeBox()._popupContentIdentifier(this._getControlsAria());
                            this._setPopupOption("visible", opened);
                            this._getDateRangeBox()._setAriaAttributes()
                        }
                    };
                    _proto._getDateRangeBox = function() {
                        return this._strategy.dateRangeBox
                    };
                    _proto._isStartDateBox = function() {
                        return this.$element().hasClass("dx-start-datebox")
                    };
                    _proto._renderPopup = function() {
                        _DateBox.prototype._renderPopup.call(this);
                        if (this._isStartDateBox()) {
                            const dateRangeBox = this._strategy.dateRangeBox;
                            dateRangeBox._bindInnerWidgetOptions(this._popup, "dropDownOptions")
                        }
                    };
                    _proto._popupShownHandler = function() {
                        var _this$_strategy$dateR;
                        _DateBox.prototype._popupShownHandler.call(this);
                        null === (_this$_strategy$dateR = this._strategy.dateRangeBox._validationMessage) || void 0 === _this$_strategy$dateR ? void 0 : _this$_strategy$dateR.option("positionSide", this._getValidationMessagePositionSide())
                    };
                    _proto._popupHiddenHandler = function() {
                        var _this$_strategy$dateR2;
                        _DateBox.prototype._popupHiddenHandler.call(this);
                        null === (_this$_strategy$dateR2 = this._strategy.dateRangeBox._validationMessage) || void 0 === _this$_strategy$dateR2 ? void 0 : _this$_strategy$dateR2.option("positionSide", this._getValidationMessagePositionSide())
                    };
                    _proto._focusInHandler = function(e) {
                        _DateBox.prototype._focusInHandler.call(this, e);
                        this._processValueChange(e)
                    };
                    _proto._popupTabHandler = function(e) {
                        const $element = (0, _renderer.default)(e.target);
                        if (e.shiftKey && $element.is(this._getFirstPopupElement())) {
                            this._strategy.dateRangeBox.getEndDateBox().focus();
                            e.preventDefault()
                        }
                        if (!e.shiftKey && $element.is(this._getLastPopupElement())) {
                            this._strategy.dateRangeBox.getStartDateBox().focus();
                            e.preventDefault()
                        }
                    };
                    _proto._processValueChange = function(e) {
                        const {
                            target: target
                        } = e;
                        const [startDateInput, endDateInput] = this._strategy.dateRangeBox.field();
                        if ((0, _renderer.default)(target).is(startDateInput)) {
                            this._strategy.dateRangeBox.option("_currentSelection", "startDate")
                        }
                        if ((0, _renderer.default)(target).is(endDateInput)) {
                            this._strategy.dateRangeBox.option("_currentSelection", "endDate")
                        }
                        if (!this._strategy.dateRangeBox.getStartDateBox()._strategy._widget) {
                            return
                        }
                        const calendar = this._strategy.dateRangeBox.getStartDateBox()._strategy._widget;
                        const value = calendar.option("value");
                        const startDate = (0, _uiDate_range.getDeserializedDate)(value[0]);
                        const endDate = (0, _uiDate_range.getDeserializedDate)(value[1]);
                        if ((0, _renderer.default)(target).is(startDateInput)) {
                            if (startDate) {
                                calendar._skipNavigate = true;
                                calendar.option("currentDate", startDate)
                            }
                            this._strategy.setActiveStartDateBox();
                            calendar.option("_currentSelection", "startDate");
                            if (this._strategy.dateRangeBox.option("disableOutOfRangeSelection")) {
                                calendar._setViewsMaxOption(endDate)
                            }
                        }
                        if ((0, _renderer.default)(target).is(endDateInput)) {
                            if (endDate) {
                                if (startDate && (0, _uiDate_range.monthDifference)(startDate, endDate) > 1) {
                                    calendar.option("currentDate", calendar._getDateByOffset(null, endDate));
                                    calendar.option("currentDate", calendar._getDateByOffset(-1, endDate))
                                }
                                calendar._skipNavigate = true;
                                calendar.option("currentDate", endDate)
                            }
                            this._strategy.dateRangeBox.getStartDateBox()._strategy.setActiveEndDateBox();
                            calendar.option("_currentSelection", "endDate");
                            if (this._strategy.dateRangeBox.option("disableOutOfRangeSelection")) {
                                calendar._setViewsMinOption(startDate)
                            }
                        }
                    };
                    _proto._invalidate = function() {
                        _DateBox.prototype._invalidate.call(this);
                        this._refreshStrategy()
                    };
                    _proto._updateInternalValidationState = function(isValid, validationMessage) {
                        this.option({
                            isValid: isValid,
                            validationError: isValid ? null : {
                                message: validationMessage
                            }
                        })
                    };
                    _proto._recallInternalValidation = function(value) {
                        this._applyInternalValidation(value)
                    };
                    _proto._isTargetOutOfComponent = function(target) {
                        const $dateRangeBox = this._strategy.dateRangeBox.$element();
                        const isTargetOutOfDateRangeBox = 0 === (0, _renderer.default)(target).closest($dateRangeBox).length;
                        return _DateBox.prototype._isTargetOutOfComponent.call(this, target) && isTargetOutOfDateRangeBox
                    };
                    _proto._updateLabelWidth = function() {
                        const $beforeButtonsContainer = this._strategy.dateRangeBox._$beforeButtonsContainer;
                        const {
                            labelMode: labelMode
                        } = this.option();
                        if ("outside" === labelMode && $beforeButtonsContainer && this._isStartDateBox()) {
                            this._label._updateLabelTransform((0, _size.getWidth)($beforeButtonsContainer));
                            return
                        }
                        _DateBox.prototype._updateLabelWidth.call(this)
                    };
                    _proto._optionChanged = function(args) {
                        switch (args.name) {
                            case "isValid": {
                                const isValid = this._strategy.dateRangeBox.option("isValid");
                                if (this._skipIsValidOptionChange || isValid === args.value) {
                                    _DateBox.prototype._optionChanged.call(this, args);
                                    return
                                }
                                this._skipIsValidOptionChange = true;
                                this.option({
                                    isValid: isValid
                                });
                                this._skipIsValidOptionChange = false;
                                break
                            }
                            default:
                                _DateBox.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto.close = function() {
                        this._strategy.getDateRangeBox().getStartDateBox().option("opened", false)
                    };
                    return MultiselectDateBox
                }(_uiDate_box.default);
                var _default = MultiselectDateBox;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        28414:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/defer_rendering.js ***!
              \*******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _transition_executor = __webpack_require__( /*! ../animation/transition_executor/transition_executor */ 52431);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../core/dom_adapter */ 73349));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../events/core/events_engine */ 55994));
                var _visibility_change = __webpack_require__( /*! ../events/visibility_change */ 80506);
                var _load_indicator = _interopRequireDefault(__webpack_require__( /*! ./load_indicator */ 2492));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./widget/ui.widget */ 14390));
                var _position = __webpack_require__( /*! ../core/utils/position */ 37518);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();
                const ACTIONS = ["onRendered", "onShown"];
                const DeferRendering = _ui.default.inherit({
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            showLoadIndicator: false,
                            renderWhen: void 0,
                            animation: void 0,
                            staggerItemSelector: void 0,
                            onRendered: null,
                            onShown: null
                        })
                    },
                    _getAnonymousTemplateName: function() {
                        return "content"
                    },
                    _init: function() {
                        this.transitionExecutor = new _transition_executor.TransitionExecutor;
                        this._initElement();
                        this._initRender();
                        this._$initialContent = this.$element().clone().contents();
                        this._initActions();
                        this.callBase()
                    },
                    _initElement: function() {
                        this.$element().addClass("dx-deferrendering")
                    },
                    _initRender: function() {
                        const that = this;
                        const $element = this.$element();
                        const renderWhen = this.option("renderWhen");
                        const doRender = () => that._renderDeferredContent();
                        if ((0, _type.isPromise)(renderWhen)) {
                            (0, _deferred.fromPromise)(renderWhen).done(doRender)
                        } else {
                            $element.data("dx-render-delegate", doRender);
                            if (void 0 === renderWhen) {
                                $element.addClass("dx-pending-rendering-manual")
                            }
                        }
                    },
                    _initActions: function() {
                        this._actions = {};
                        (0, _iterator.each)(ACTIONS, (_, action) => {
                            this._actions[action] = this._createActionByOption(action) || _common.noop
                        })
                    },
                    _initMarkup: function() {
                        this.callBase();
                        if (!this._initContent) {
                            this._initContent = this._renderContent;
                            this._renderContent = () => {}
                        }
                        this._initContent()
                    },
                    _renderContentImpl: function() {
                        this.$element().removeClass("dx-widget");
                        this.$element().append(this._$initialContent);
                        this._setLoadingState()
                    },
                    _renderDeferredContent: function() {
                        const that = this;
                        const $element = this.$element();
                        const result = new _deferred.Deferred;
                        $element.removeClass("dx-pending-rendering-manual");
                        $element.addClass("dx-pending-rendering-active");
                        this._abortRenderTask();
                        this._renderTask = (0, _common.executeAsync)(() => {
                            that._renderImpl().done(() => {
                                const shownArgs = {
                                    element: $element
                                };
                                that._actions.onShown([shownArgs]);
                                result.resolve(shownArgs)
                            }).fail((function() {
                                result.rejectWith(result, arguments)
                            }))
                        });
                        return result.promise()
                    },
                    _isElementInViewport: function(element) {
                        const rect = (0, _position.getBoundingRect)(element);
                        return rect.bottom >= 0 && rect.right >= 0 && rect.top <= (window.innerHeight || _dom_adapter.default.getDocumentElement().clientHeight) && rect.left <= (window.innerWidth || _dom_adapter.default.getDocumentElement().clientWidth)
                    },
                    _animate: function() {
                        const that = this;
                        const $element = this.$element();
                        const animation = (0, _window.hasWindow)() && this.option("animation");
                        const staggerItemSelector = this.option("staggerItemSelector");
                        let animatePromise;
                        that.transitionExecutor.stop();
                        if (animation) {
                            if (staggerItemSelector) {
                                $element.find(staggerItemSelector).each((function() {
                                    if (that._isElementInViewport(this)) {
                                        that.transitionExecutor.enter((0, _renderer.default)(this), animation)
                                    }
                                }))
                            } else {
                                that.transitionExecutor.enter($element, animation)
                            }
                            animatePromise = that.transitionExecutor.start()
                        } else {
                            animatePromise = (new _deferred.Deferred).resolve().promise()
                        }
                        return animatePromise
                    },
                    _renderImpl: function() {
                        const $element = this.$element();
                        const renderedArgs = {
                            element: $element
                        };
                        const contentTemplate = this._getTemplate(this._templateManager.anonymousTemplateName);
                        if (contentTemplate) {
                            contentTemplate.render({
                                container: $element.empty(),
                                noModel: true
                            })
                        }
                        this._setRenderedState($element);
                        _events_engine.default.trigger($element, "dxcontentrendered");
                        this._actions.onRendered([renderedArgs]);
                        this._isRendered = true;
                        return this._animate()
                    },
                    _setLoadingState: function() {
                        const $element = this.$element();
                        const hasCustomLoadIndicator = !!$element.find(".dx-visible-while-pending-rendering").length;
                        $element.addClass("dx-pending-rendering");
                        if (!hasCustomLoadIndicator) {
                            $element.children().addClass("dx-invisible-while-pending-rendering")
                        }
                        if (this.option("showLoadIndicator")) {
                            this._showLoadIndicator($element)
                        }
                    },
                    _showLoadIndicator: function($container) {
                        this._$loadIndicator = new _load_indicator.default((0, _renderer.default)("<div>"), {
                            visible: true
                        }).$element().addClass("dx-deferrendering-load-indicator");
                        (0, _renderer.default)("<div>").addClass("dx-loadindicator-container").addClass("dx-deferrendering-loadindicator-container").append(this._$loadIndicator).appendTo($container)
                    },
                    _setRenderedState: function() {
                        const $element = this.$element();
                        if (this._$loadIndicator) {
                            this._$loadIndicator.remove()
                        }
                        $element.removeClass("dx-pending-rendering");
                        $element.removeClass("dx-pending-rendering-active");
                        (0, _visibility_change.triggerShownEvent)($element.children())
                    },
                    _optionChanged: function(args) {
                        const value = args.value;
                        const previousValue = args.previousValue;
                        switch (args.name) {
                            case "renderWhen":
                                if (false === previousValue && true === value) {
                                    this._renderOrAnimate()
                                } else if (true === previousValue && false === value) {
                                    this.transitionExecutor.stop();
                                    this._setLoadingState()
                                }
                                break;
                            case "showLoadIndicator":
                            case "onRendered":
                            case "onShown":
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _renderOrAnimate: function() {
                        let result;
                        if (this._isRendered) {
                            this._setRenderedState();
                            result = this._animate()
                        } else {
                            result = this._renderDeferredContent()
                        }
                        return result
                    },
                    renderContent: function() {
                        return this._renderOrAnimate()
                    },
                    _abortRenderTask: function() {
                        if (this._renderTask) {
                            this._renderTask.abort();
                            this._renderTask = void 0
                        }
                    },
                    _dispose: function() {
                        this.transitionExecutor.stop(true);
                        this._abortRenderTask();
                        this._actions = void 0;
                        this._$initialContent = void 0;
                        this.callBase()
                    }
                });
                (0, _component_registrator.default)("dxDeferRendering", DeferRendering);
                var _default = DeferRendering;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        52311:
            /*!***********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/diagram.js ***!
              \***********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _ui = (obj = __webpack_require__( /*! ./diagram/ui.diagram */ 83537), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _ui.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        50984:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/diagram/diagram.bar.js ***!
              \***********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _diagram = __webpack_require__( /*! ./diagram.importer */ 348);
                let DiagramBar = function() {
                    function DiagramBar(owner) {
                        const {
                            EventDispatcher: EventDispatcher
                        } = (0, _diagram.getDiagram)();
                        this.onChanged = new EventDispatcher;
                        this._owner = owner
                    }
                    var _proto = DiagramBar.prototype;
                    _proto.raiseBarCommandExecuted = function(key, parameter) {
                        this.onChanged.raise("notifyBarCommandExecuted", parseInt(key), parameter)
                    };
                    _proto.getCommandKeys = function() {
                        throw "Not Implemented"
                    };
                    _proto.setItemValue = function(key, value) {};
                    _proto.setItemEnabled = function(key, enabled) {};
                    _proto.setItemVisible = function(key, enabled) {};
                    _proto.setEnabled = function(enabled) {};
                    _proto.setItemSubItems = function(key, items) {};
                    _proto.isVisible = function() {
                        return true
                    };
                    _proto._getKeys = function(items) {
                        const keys = items.reduce((commands, item) => {
                            if (void 0 !== item.command) {
                                commands.push(item.command)
                            }
                            if (item.items) {
                                commands = commands.concat(this._getKeys(item.items))
                            }
                            return commands
                        }, []);
                        return keys
                    };
                    return DiagramBar
                }();
                var _default = DiagramBar;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        72321:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/diagram/diagram.commands_manager.js ***!
              \************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _diagram = __webpack_require__( /*! ./diagram.importer */ 348);
                var _file_saver = __webpack_require__( /*! ../../exporter/file_saver */ 48351);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _message = (obj = __webpack_require__( /*! ../../localization/message */ 28109), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const SEPARATOR_COMMAND = {
                    widget: "separator"
                };
                const CSS_CLASSES_SMALL_EDITOR_ITEM = "dx-diagram-sm-edit-item",
                    CSS_CLASSES_MEDIUM_EDITOR_ITEM = "dx-diagram-md-edit-item",
                    CSS_CLASSES_LARGE_EDITOR_ITEM = "dx-diagram-lg-edit-item",
                    CSS_CLASSES_IMAGE_DROPDOWN_ITEM = "dx-diagram-image-dropdown-item",
                    CSS_CLASSES_COLOR_EDITOR_ITEM = "dx-diagram-color-edit-item",
                    CSS_CLASSES_LARGE_ICON_ITEM = "dx-diagram-lg-icon-item";
                const DiagramCommandsManager = {
                    SHOW_TOOLBOX_COMMAND_NAME: "toolbox",
                    SHOW_PROPERTIES_PANEL_COMMAND_NAME: "propertiesPanel",
                    getAllCommands: function() {
                        const {
                            DiagramCommand: DiagramCommand
                        } = (0, _diagram.getDiagram)();
                        return this._allCommands || (this._allCommands = {
                            separator: SEPARATOR_COMMAND,
                            exportSvg: {
                                command: DiagramCommand.ExportSvg,
                                text: _message.default.format("dxDiagram-commandExportToSvg"),
                                getParameter: widget => dataURI => this._exportTo(widget, dataURI, "SVG", "image/svg+xml")
                            },
                            exportPng: {
                                command: DiagramCommand.ExportPng,
                                text: _message.default.format("dxDiagram-commandExportToPng"),
                                getParameter: widget => dataURI => this._exportTo(widget, dataURI, "PNG", "image/png")
                            },
                            exportJpg: {
                                command: DiagramCommand.ExportJpg,
                                text: _message.default.format("dxDiagram-commandExportToJpg"),
                                getParameter: widget => dataURI => this._exportTo(widget, dataURI, "JPEG", "image/jpeg")
                            },
                            undo: {
                                command: DiagramCommand.Undo,
                                hint: _message.default.format("dxDiagram-commandUndo"),
                                text: _message.default.format("dxDiagram-commandUndo"),
                                icon: "undo",
                                menuIcon: "undo"
                            },
                            redo: {
                                command: DiagramCommand.Redo,
                                hint: _message.default.format("dxDiagram-commandRedo"),
                                text: _message.default.format("dxDiagram-commandRedo"),
                                icon: "redo",
                                menuIcon: "redo"
                            },
                            cut: {
                                command: DiagramCommand.Cut,
                                hint: _message.default.format("dxDiagram-commandCut"),
                                text: _message.default.format("dxDiagram-commandCut"),
                                icon: "cut",
                                menuIcon: "cut"
                            },
                            copy: {
                                command: DiagramCommand.Copy,
                                hint: _message.default.format("dxDiagram-commandCopy"),
                                text: _message.default.format("dxDiagram-commandCopy"),
                                icon: "copy",
                                menuIcon: "copy"
                            },
                            paste: {
                                command: DiagramCommand.PasteInPosition,
                                hint: _message.default.format("dxDiagram-commandPaste"),
                                text: _message.default.format("dxDiagram-commandPaste"),
                                icon: "paste",
                                menuIcon: "paste"
                            },
                            selectAll: {
                                command: DiagramCommand.SelectAll,
                                hint: _message.default.format("dxDiagram-commandSelectAll"),
                                text: _message.default.format("dxDiagram-commandSelectAll"),
                                icon: "dx-diagram-i-button-select-all dx-diagram-i",
                                menuIcon: "dx-diagram-i-menu-select-all dx-diagram-i"
                            },
                            delete: {
                                command: DiagramCommand.Delete,
                                hint: _message.default.format("dxDiagram-commandDelete"),
                                text: _message.default.format("dxDiagram-commandDelete"),
                                icon: "remove",
                                menuIcon: "remove"
                            },
                            fontName: {
                                command: DiagramCommand.FontName,
                                hint: _message.default.format("dxDiagram-commandFontName"),
                                text: _message.default.format("dxDiagram-commandFontName"),
                                widget: "dxSelectBox",
                                items: ["Arial", "Arial Black", "Helvetica", "Times New Roman", "Courier New", "Courier", "Verdana", "Georgia", "Comic Sans MS", "Trebuchet MS"].map(item => ({
                                    text: item,
                                    value: item
                                })),
                                cssClass: CSS_CLASSES_MEDIUM_EDITOR_ITEM
                            },
                            fontSize: {
                                command: DiagramCommand.FontSize,
                                hint: _message.default.format("dxDiagram-commandFontSize"),
                                text: _message.default.format("dxDiagram-commandFontSize"),
                                widget: "dxSelectBox",
                                items: [8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72].map(item => ({
                                    text: item + "pt",
                                    value: item + "pt"
                                })),
                                cssClass: CSS_CLASSES_SMALL_EDITOR_ITEM
                            },
                            bold: {
                                command: DiagramCommand.Bold,
                                hint: _message.default.format("dxDiagram-commandBold"),
                                text: _message.default.format("dxDiagram-commandBold"),
                                icon: "bold",
                                menuIcon: "bold"
                            },
                            italic: {
                                command: DiagramCommand.Italic,
                                hint: _message.default.format("dxDiagram-commandItalic"),
                                text: _message.default.format("dxDiagram-commandItalic"),
                                icon: "italic",
                                menuIcon: "italic"
                            },
                            underline: {
                                command: DiagramCommand.Underline,
                                hint: _message.default.format("dxDiagram-commandUnderline"),
                                text: _message.default.format("dxDiagram-commandUnderline"),
                                icon: "underline",
                                menuIcon: "underline"
                            },
                            fontColor: {
                                command: DiagramCommand.FontColor,
                                text: _message.default.format("dxDiagram-commandTextColor"),
                                hint: _message.default.format("dxDiagram-commandTextColor"),
                                widget: "dxColorBox",
                                icon: "dx-icon dx-icon-color",
                                menuIcon: "dx-icon dx-icon-color",
                                cssClass: CSS_CLASSES_COLOR_EDITOR_ITEM
                            },
                            lineColor: {
                                command: DiagramCommand.StrokeColor,
                                text: _message.default.format("dxDiagram-commandLineColor"),
                                hint: _message.default.format("dxDiagram-commandLineColor"),
                                widget: "dxColorBox",
                                icon: "dx-icon dx-icon-background",
                                menuIcon: "dx-icon dx-icon-background",
                                cssClass: CSS_CLASSES_COLOR_EDITOR_ITEM
                            },
                            lineWidth: {
                                command: DiagramCommand.StrokeWidth,
                                text: _message.default.format("dxDiagram-commandLineWidth"),
                                hint: _message.default.format("dxDiagram-commandLineWidth"),
                                widget: "dxSelectBox",
                                items: [1, 2, 3, 4, 5, 6, 7, 8].map(item => ({
                                    text: item + "px",
                                    value: item.toString()
                                })),
                                cssClass: CSS_CLASSES_SMALL_EDITOR_ITEM
                            },
                            lineStyle: {
                                command: DiagramCommand.StrokeStyle,
                                text: _message.default.format("dxDiagram-commandLineStyle"),
                                hint: _message.default.format("dxDiagram-commandLineStyle"),
                                widget: "dxSelectBox",
                                items: [{
                                    value: "",
                                    menuIcon: "dx-diagram-i-line-solid dx-diagram-i",
                                    hint: _message.default.format("dxDiagram-commandLineStyleSolid")
                                }, {
                                    value: "2,2",
                                    menuIcon: "dx-diagram-i-line-dotted dx-diagram-i",
                                    hint: _message.default.format("dxDiagram-commandLineStyleDotted")
                                }, {
                                    value: "6,2",
                                    menuIcon: "dx-diagram-i-line-dashed dx-diagram-i",
                                    hint: _message.default.format("dxDiagram-commandLineStyleDashed")
                                }],
                                cssClass: CSS_CLASSES_IMAGE_DROPDOWN_ITEM
                            },
                            fillColor: {
                                command: DiagramCommand.FillColor,
                                text: _message.default.format("dxDiagram-commandFillColor"),
                                hint: _message.default.format("dxDiagram-commandFillColor"),
                                widget: "dxColorBox",
                                icon: "dx-diagram-i dx-diagram-i-button-fill",
                                menuIcon: "dx-diagram-i dx-diagram-i-menu-fill",
                                cssClass: CSS_CLASSES_COLOR_EDITOR_ITEM
                            },
                            textAlignLeft: {
                                command: DiagramCommand.TextLeftAlign,
                                hint: _message.default.format("dxDiagram-commandAlignLeft"),
                                text: _message.default.format("dxDiagram-commandAlignLeft"),
                                icon: "alignleft",
                                menuIcon: "alignleft"
                            },
                            textAlignCenter: {
                                command: DiagramCommand.TextCenterAlign,
                                hint: _message.default.format("dxDiagram-commandAlignCenter"),
                                text: _message.default.format("dxDiagram-commandAlignCenter"),
                                icon: "aligncenter",
                                menuIcon: "aligncenter"
                            },
                            textAlignRight: {
                                command: DiagramCommand.TextRightAlign,
                                hint: _message.default.format("dxDiagram-commandAlignRight"),
                                text: _message.default.format("dxDiagram-commandAlignRight"),
                                icon: "alignright",
                                menuIcon: "alignright"
                            },
                            lock: {
                                command: DiagramCommand.Lock,
                                hint: _message.default.format("dxDiagram-commandLock"),
                                text: _message.default.format("dxDiagram-commandLock"),
                                icon: "dx-diagram-i-button-lock dx-diagram-i",
                                menuIcon: "dx-diagram-i-menu-lock dx-diagram-i"
                            },
                            unlock: {
                                command: DiagramCommand.Unlock,
                                hint: _message.default.format("dxDiagram-commandUnlock"),
                                text: _message.default.format("dxDiagram-commandUnlock"),
                                icon: "dx-diagram-i-button-unlock dx-diagram-i",
                                menuIcon: "dx-diagram-i-menu-unlock dx-diagram-i"
                            },
                            bringToFront: {
                                command: DiagramCommand.BringToFront,
                                hint: _message.default.format("dxDiagram-commandBringToFront"),
                                text: _message.default.format("dxDiagram-commandBringToFront"),
                                icon: "dx-diagram-i-button-bring-to-front dx-diagram-i",
                                menuIcon: "dx-diagram-i-menu-bring-to-front dx-diagram-i"
                            },
                            sendToBack: {
                                command: DiagramCommand.SendToBack,
                                hint: _message.default.format("dxDiagram-commandSendToBack"),
                                text: _message.default.format("dxDiagram-commandSendToBack"),
                                icon: "dx-diagram-i-button-send-to-back dx-diagram-i",
                                menuIcon: "dx-diagram-i-menu-send-to-back dx-diagram-i"
                            },
                            insertShapeImage: {
                                command: DiagramCommand.InsertShapeImage,
                                text: _message.default.format("dxDiagram-commandInsertShapeImage"),
                                icon: "dx-diagram-i-button-image-insert dx-diagram-i",
                                menuIcon: "dx-diagram-i-menu-image-insert dx-diagram-i"
                            },
                            editShapeImage: {
                                command: DiagramCommand.EditShapeImage,
                                text: _message.default.format("dxDiagram-commandEditShapeImage"),
                                icon: "dx-diagram-i-button-image-edit dx-diagram-i",
                                menuIcon: "dx-diagram-i-menu-image-edit dx-diagram-i"
                            },
                            deleteShapeImage: {
                                command: DiagramCommand.DeleteShapeImage,
                                text: _message.default.format("dxDiagram-commandDeleteShapeImage"),
                                icon: "dx-diagram-i-button-image-delete dx-diagram-i",
                                menuIcon: "dx-diagram-i-menu-image-delete dx-diagram-i"
                            },
                            connectorLineType: {
                                command: DiagramCommand.ConnectorLineOption,
                                widget: "dxSelectBox",
                                hint: _message.default.format("dxDiagram-commandConnectorLineType"),
                                text: _message.default.format("dxDiagram-commandConnectorLineType"),
                                items: [{
                                    value: 0,
                                    menuIcon: "dx-diagram-i-connector-straight dx-diagram-i",
                                    hint: _message.default.format("dxDiagram-commandConnectorLineStraight"),
                                    text: _message.default.format("dxDiagram-commandConnectorLineStraight")
                                }, {
                                    value: 1,
                                    menuIcon: "dx-diagram-i-connector-orthogonal dx-diagram-i",
                                    hint: _message.default.format("dxDiagram-commandConnectorLineOrthogonal"),
                                    text: _message.default.format("dxDiagram-commandConnectorLineOrthogonal")
                                }],
                                cssClass: CSS_CLASSES_IMAGE_DROPDOWN_ITEM
                            },
                            connectorLineStart: {
                                command: DiagramCommand.ConnectorStartLineEnding,
                                widget: "dxSelectBox",
                                items: [{
                                    value: 0,
                                    menuIcon: "dx-diagram-i-connector-begin-none dx-diagram-i",
                                    hint: _message.default.format("dxDiagram-commandConnectorLineNone"),
                                    text: _message.default.format("dxDiagram-commandConnectorLineNone")
                                }, {
                                    value: 1,
                                    menuIcon: "dx-diagram-i-connector-begin-arrow dx-diagram-i",
                                    hint: _message.default.format("dxDiagram-commandConnectorLineArrow"),
                                    text: _message.default.format("dxDiagram-commandConnectorLineArrow")
                                }, {
                                    value: 2,
                                    menuIcon: "dx-diagram-i-connector-begin-outlined-triangle dx-diagram-i",
                                    hint: _message.default.format("dxDiagram-commandConnectorLineArrow"),
                                    text: _message.default.format("dxDiagram-commandConnectorLineArrow")
                                }, {
                                    value: 3,
                                    menuIcon: "dx-diagram-i-connector-begin-filled-triangle dx-diagram-i",
                                    hint: _message.default.format("dxDiagram-commandConnectorLineArrow"),
                                    text: _message.default.format("dxDiagram-commandConnectorLineArrow")
                                }],
                                hint: _message.default.format("dxDiagram-commandConnectorLineStart"),
                                text: _message.default.format("dxDiagram-commandConnectorLineStart"),
                                cssClass: CSS_CLASSES_IMAGE_DROPDOWN_ITEM
                            },
                            connectorLineEnd: {
                                command: DiagramCommand.ConnectorEndLineEnding,
                                widget: "dxSelectBox",
                                items: [{
                                    value: 0,
                                    menuIcon: "dx-diagram-i-connector-end-none dx-diagram-i",
                                    hint: _message.default.format("dxDiagram-commandConnectorLineNone"),
                                    text: _message.default.format("dxDiagram-commandConnectorLineNone")
                                }, {
                                    value: 1,
                                    menuIcon: "dx-diagram-i-connector-end-arrow dx-diagram-i",
                                    hint: _message.default.format("dxDiagram-commandConnectorLineArrow"),
                                    text: _message.default.format("dxDiagram-commandConnectorLineArrow")
                                }, {
                                    value: 2,
                                    menuIcon: "dx-diagram-i-connector-end-outlined-triangle dx-diagram-i",
                                    hint: _message.default.format("dxDiagram-commandConnectorLineArrow"),
                                    text: _message.default.format("dxDiagram-commandConnectorLineArrow")
                                }, {
                                    value: 3,
                                    menuIcon: "dx-diagram-i-connector-end-filled-triangle dx-diagram-i",
                                    hint: _message.default.format("dxDiagram-commandConnectorLineArrow"),
                                    text: _message.default.format("dxDiagram-commandConnectorLineArrow")
                                }],
                                hint: _message.default.format("dxDiagram-commandConnectorLineEnd"),
                                text: _message.default.format("dxDiagram-commandConnectorLineEnd"),
                                cssClass: CSS_CLASSES_IMAGE_DROPDOWN_ITEM
                            },
                            layoutTreeTopToBottom: {
                                command: DiagramCommand.AutoLayoutTreeVertical,
                                text: _message.default.format("dxDiagram-commandLayoutTopToBottom"),
                                hint: _message.default.format("dxDiagram-commandLayoutTopToBottom"),
                                icon: "dx-diagram-i-button-layout-tree-tb dx-diagram-i",
                                cssClass: CSS_CLASSES_LARGE_ICON_ITEM
                            },
                            layoutTreeBottomToTop: {
                                command: DiagramCommand.AutoLayoutTreeVerticalBottomToTop,
                                text: _message.default.format("dxDiagram-commandLayoutBottomToTop"),
                                hint: _message.default.format("dxDiagram-commandLayoutBottomToTop"),
                                icon: "dx-diagram-i-button-layout-tree-bt dx-diagram-i",
                                cssClass: CSS_CLASSES_LARGE_ICON_ITEM
                            },
                            layoutTreeLeftToRight: {
                                command: DiagramCommand.AutoLayoutTreeHorizontal,
                                text: _message.default.format("dxDiagram-commandLayoutLeftToRight"),
                                hint: _message.default.format("dxDiagram-commandLayoutLeftToRight"),
                                icon: "dx-diagram-i-button-layout-tree-lr dx-diagram-i",
                                cssClass: CSS_CLASSES_LARGE_ICON_ITEM
                            },
                            layoutTreeRightToLeft: {
                                command: DiagramCommand.AutoLayoutTreeHorizontalRightToLeft,
                                text: _message.default.format("dxDiagram-commandLayoutRightToLeft"),
                                hint: _message.default.format("dxDiagram-commandLayoutRightToLeft"),
                                icon: "dx-diagram-i-button-layout-tree-rl dx-diagram-i",
                                cssClass: CSS_CLASSES_LARGE_ICON_ITEM
                            },
                            layoutLayeredTopToBottom: {
                                command: DiagramCommand.AutoLayoutLayeredVertical,
                                text: _message.default.format("dxDiagram-commandLayoutTopToBottom"),
                                hint: _message.default.format("dxDiagram-commandLayoutTopToBottom"),
                                icon: "dx-diagram-i-button-layout-layered-tb dx-diagram-i",
                                cssClass: CSS_CLASSES_LARGE_ICON_ITEM
                            },
                            layoutLayeredBottomToTop: {
                                command: DiagramCommand.AutoLayoutLayeredVerticalBottomToTop,
                                text: _message.default.format("dxDiagram-commandLayoutBottomToTop"),
                                hint: _message.default.format("dxDiagram-commandLayoutBottomToTop"),
                                icon: "dx-diagram-i-button-layout-layered-bt dx-diagram-i",
                                cssClass: CSS_CLASSES_LARGE_ICON_ITEM
                            },
                            layoutLayeredLeftToRight: {
                                command: DiagramCommand.AutoLayoutLayeredHorizontal,
                                text: _message.default.format("dxDiagram-commandLayoutLeftToRight"),
                                hint: _message.default.format("dxDiagram-commandLayoutLeftToRight"),
                                icon: "dx-diagram-i-button-layout-layered-lr dx-diagram-i",
                                cssClass: CSS_CLASSES_LARGE_ICON_ITEM
                            },
                            layoutLayeredRightToLeft: {
                                command: DiagramCommand.AutoLayoutLayeredHorizontalRightToLeft,
                                text: _message.default.format("dxDiagram-commandLayoutRightToLeft"),
                                hint: _message.default.format("dxDiagram-commandLayoutRightToLeft"),
                                icon: "dx-diagram-i-button-layout-layered-rl dx-diagram-i",
                                cssClass: CSS_CLASSES_LARGE_ICON_ITEM
                            },
                            fullScreen: {
                                command: DiagramCommand.Fullscreen,
                                hint: _message.default.format("dxDiagram-commandFullscreen"),
                                text: _message.default.format("dxDiagram-commandFullscreen"),
                                icon: "dx-diagram-i dx-diagram-i-button-fullscreen",
                                menuIcon: "dx-diagram-i dx-diagram-i-menu-fullscreen",
                                cssClass: CSS_CLASSES_COLOR_EDITOR_ITEM
                            },
                            units: {
                                command: DiagramCommand.ViewUnits,
                                hint: _message.default.format("dxDiagram-commandUnits"),
                                text: _message.default.format("dxDiagram-commandUnits"),
                                widget: "dxSelectBox"
                            },
                            simpleView: {
                                command: DiagramCommand.ToggleSimpleView,
                                hint: _message.default.format("dxDiagram-commandSimpleView"),
                                text: _message.default.format("dxDiagram-commandSimpleView"),
                                widget: "dxCheckBox"
                            },
                            showGrid: {
                                command: DiagramCommand.ShowGrid,
                                hint: _message.default.format("dxDiagram-commandShowGrid"),
                                text: _message.default.format("dxDiagram-commandShowGrid"),
                                widget: "dxCheckBox"
                            },
                            snapToGrid: {
                                command: DiagramCommand.SnapToGrid,
                                hint: _message.default.format("dxDiagram-commandSnapToGrid"),
                                text: _message.default.format("dxDiagram-commandSnapToGrid"),
                                widget: "dxCheckBox"
                            },
                            gridSize: {
                                command: DiagramCommand.GridSize,
                                hint: _message.default.format("dxDiagram-commandGridSize"),
                                text: _message.default.format("dxDiagram-commandGridSize"),
                                widget: "dxSelectBox"
                            },
                            pageSize: {
                                command: DiagramCommand.PageSize,
                                hint: _message.default.format("dxDiagram-commandPageSize"),
                                text: _message.default.format("dxDiagram-commandPageSize"),
                                widget: "dxSelectBox",
                                cssClass: CSS_CLASSES_LARGE_EDITOR_ITEM,
                                getCommandValue: v => JSON.parse(v),
                                getEditorValue: v => JSON.stringify(v)
                            },
                            pageOrientation: {
                                command: DiagramCommand.PageLandscape,
                                hint: _message.default.format("dxDiagram-commandPageOrientation"),
                                text: _message.default.format("dxDiagram-commandPageOrientation"),
                                widget: "dxSelectBox",
                                items: [{
                                    value: true,
                                    text: _message.default.format("dxDiagram-commandPageOrientationLandscape")
                                }, {
                                    value: false,
                                    text: _message.default.format("dxDiagram-commandPageOrientationPortrait")
                                }],
                                cssClass: CSS_CLASSES_MEDIUM_EDITOR_ITEM
                            },
                            pageColor: {
                                command: DiagramCommand.PageColor,
                                hint: _message.default.format("dxDiagram-commandPageColor"),
                                text: _message.default.format("dxDiagram-commandPageColor"),
                                widget: "dxColorBox",
                                icon: "dx-diagram-i dx-diagram-i-button-fill",
                                menuIcon: "dx-diagram-i dx-diagram-i-menu-fill",
                                cssClass: CSS_CLASSES_COLOR_EDITOR_ITEM
                            },
                            zoomLevel: {
                                command: DiagramCommand.ZoomLevel,
                                hint: _message.default.format("dxDiagram-commandZoomLevel"),
                                text: _message.default.format("dxDiagram-commandZoomLevel"),
                                widget: "dxTextBox",
                                items: [SEPARATOR_COMMAND, {
                                    command: DiagramCommand.FitToScreen,
                                    hint: _message.default.format("dxDiagram-commandFitToContent"),
                                    text: _message.default.format("dxDiagram-commandFitToContent")
                                }, {
                                    command: DiagramCommand.FitToWidth,
                                    hint: _message.default.format("dxDiagram-commandFitToWidth"),
                                    text: _message.default.format("dxDiagram-commandFitToWidth")
                                }, SEPARATOR_COMMAND, {
                                    command: DiagramCommand.AutoZoomToContent,
                                    hint: _message.default.format("dxDiagram-commandAutoZoomByContent"),
                                    text: _message.default.format("dxDiagram-commandAutoZoomByContent")
                                }, {
                                    command: DiagramCommand.AutoZoomToWidth,
                                    hint: _message.default.format("dxDiagram-commandAutoZoomByWidth"),
                                    text: _message.default.format("dxDiagram-commandAutoZoomByWidth")
                                }],
                                getEditorDisplayValue: v => Math.round(100 * v) + "%",
                                cssClass: CSS_CLASSES_SMALL_EDITOR_ITEM
                            },
                            toolbox: {
                                command: this.SHOW_TOOLBOX_COMMAND_NAME,
                                iconChecked: "dx-diagram-i dx-diagram-i-button-toolbox-close",
                                iconUnchecked: "dx-diagram-i dx-diagram-i-button-toolbox-open",
                                hint: _message.default.format("dxDiagram-uiShowToolbox"),
                                text: _message.default.format("dxDiagram-uiShowToolbox")
                            },
                            propertiesPanel: {
                                command: this.SHOW_PROPERTIES_PANEL_COMMAND_NAME,
                                iconChecked: "close",
                                iconUnchecked: "dx-diagram-i dx-diagram-i-button-properties-panel-open",
                                hint: _message.default.format("dxDiagram-uiProperties"),
                                text: _message.default.format("dxDiagram-uiProperties")
                            }
                        })
                    },
                    getMainToolbarCommands: function(commands, excludeCommands) {
                        const allCommands = this.getAllCommands();
                        const mainToolbarCommands = commands ? this._getPreparedCommands(allCommands, commands) : this._getDefaultMainToolbarCommands(allCommands);
                        return this._prepareToolbarCommands(mainToolbarCommands, excludeCommands)
                    },
                    _getDefaultMainToolbarCommands: function(allCommands) {
                        return this._defaultMainToolbarCommands || (this._defaultMainToolbarCommands = [allCommands.undo, allCommands.redo, allCommands.separator, allCommands.fontName, allCommands.fontSize, allCommands.bold, allCommands.italic, allCommands.underline, allCommands.separator, allCommands.lineWidth, allCommands.lineStyle, allCommands.separator, allCommands.fontColor, allCommands.lineColor, allCommands.fillColor, allCommands.separator, allCommands.textAlignLeft, allCommands.textAlignCenter, allCommands.textAlignRight, allCommands.separator, allCommands.connectorLineType, allCommands.connectorLineStart, allCommands.connectorLineEnd, allCommands.separator, {
                            text: _message.default.format("dxDiagram-uiLayout"),
                            showText: "always",
                            items: [{
                                text: _message.default.format("dxDiagram-uiLayoutTree"),
                                items: [allCommands.layoutTreeTopToBottom, allCommands.layoutTreeBottomToTop, allCommands.layoutTreeLeftToRight, allCommands.layoutTreeRightToLeft]
                            }, {
                                text: _message.default.format("dxDiagram-uiLayoutLayered"),
                                items: [allCommands.layoutLayeredTopToBottom, allCommands.layoutLayeredBottomToTop, allCommands.layoutLayeredLeftToRight, allCommands.layoutLayeredRightToLeft]
                            }]
                        }])
                    },
                    getHistoryToolbarCommands: function(commands, excludeCommands) {
                        const allCommands = this.getAllCommands();
                        const historyToolbarCommands = commands ? this._getPreparedCommands(allCommands, commands) : this._getDefaultHistoryToolbarCommands(allCommands);
                        return this._prepareToolbarCommands(historyToolbarCommands, excludeCommands)
                    },
                    _getDefaultHistoryToolbarCommands: function(allCommands) {
                        return this._defaultHistoryToolbarCommands || (this._defaultHistoryToolbarCommands = [allCommands.undo, allCommands.redo, allCommands.separator, allCommands.toolbox])
                    },
                    getViewToolbarCommands: function(commands, excludeCommands) {
                        const allCommands = this.getAllCommands();
                        const viewToolbarCommands = commands ? this._getPreparedCommands(allCommands, commands) : this._getDefaultViewToolbarCommands(allCommands);
                        return this._prepareToolbarCommands(viewToolbarCommands, excludeCommands)
                    },
                    _getDefaultViewToolbarCommands: function(allCommands) {
                        return this._defaultViewToolbarCommands || (this._defaultViewToolbarCommands = [allCommands.zoomLevel, allCommands.separator, allCommands.fullScreen, allCommands.separator, {
                            widget: "dxButton",
                            icon: "export",
                            text: _message.default.format("dxDiagram-uiExport"),
                            hint: _message.default.format("dxDiagram-uiExport"),
                            items: [allCommands.exportSvg, allCommands.exportPng, allCommands.exportJpg]
                        }, {
                            icon: "preferences",
                            hint: _message.default.format("dxDiagram-uiSettings"),
                            text: _message.default.format("dxDiagram-uiSettings"),
                            items: [allCommands.units, allCommands.separator, allCommands.showGrid, allCommands.snapToGrid, allCommands.gridSize, allCommands.separator, allCommands.simpleView, allCommands.toolbox]
                        }])
                    },
                    getPropertiesToolbarCommands: function(commands, excludeCommands) {
                        const allCommands = this.getAllCommands();
                        const propertiesCommands = commands ? this._getPreparedCommands(allCommands, commands) : this._getDefaultPropertiesToolbarCommands(allCommands);
                        return this._prepareToolbarCommands(propertiesCommands, excludeCommands)
                    },
                    _getDefaultPropertiesToolbarCommands: function(allCommands) {
                        return this._defaultPropertiesToolbarCommands || (this._defaultPropertiesToolbarCommands = [allCommands.propertiesPanel])
                    },
                    _getDefaultPropertyPanelCommandGroups: function() {
                        return this._defaultPropertyPanelCommandGroups || (this._defaultPropertyPanelCommandGroups = [{
                            title: _message.default.format("dxDiagram-uiStyle"),
                            groups: [{
                                title: _message.default.format("dxDiagram-uiText"),
                                commands: ["fontName", "fontSize", "bold", "italic", "underline", "textAlignLeft", "textAlignCenter", "textAlignRight", "fontColor"]
                            }, {
                                title: _message.default.format("dxDiagram-uiObject"),
                                commands: ["lineStyle", "lineWidth", "lineColor", "fillColor"]
                            }, {
                                title: _message.default.format("dxDiagram-uiConnector"),
                                commands: ["connectorLineType", "connectorLineStart", "connectorLineEnd"]
                            }]
                        }, {
                            title: _message.default.format("dxDiagram-uiLayout"),
                            groups: [{
                                title: _message.default.format("dxDiagram-uiLayoutLayered"),
                                commands: ["layoutLayeredTopToBottom", "layoutLayeredBottomToTop", "layoutLayeredLeftToRight", "layoutLayeredRightToLeft"]
                            }, {
                                title: _message.default.format("dxDiagram-uiLayoutTree"),
                                commands: ["layoutTreeTopToBottom", "layoutTreeBottomToTop", "layoutTreeLeftToRight", "layoutTreeRightToLeft"]
                            }]
                        }, {
                            title: _message.default.format("dxDiagram-uiDiagram"),
                            groups: [{
                                title: _message.default.format("dxDiagram-uiPage"),
                                commands: ["pageSize", "pageOrientation", "pageColor"]
                            }]
                        }])
                    },
                    _preparePropertyPanelGroups: function(groups) {
                        const allCommands = this.getAllCommands();
                        const result = [];
                        groups.forEach(g => {
                            let commands = g.commands;
                            if (commands) {
                                commands = this._getPreparedCommands(allCommands, commands);
                                commands = this._prepareToolbarCommands(commands)
                            }
                            let subGroups;
                            if (g.groups) {
                                subGroups = [];
                                g.groups.forEach(sg => {
                                    let subCommands = sg.commands;
                                    if (subCommands) {
                                        subCommands = this._getPreparedCommands(allCommands, subCommands);
                                        subCommands = this._prepareToolbarCommands(subCommands)
                                    }
                                    subGroups.push({
                                        title: sg.title,
                                        commands: subCommands
                                    })
                                })
                            }
                            result.push({
                                title: g.title,
                                commands: commands,
                                groups: subGroups
                            })
                        });
                        return result
                    },
                    getPropertyPanelCommandTabs: function(commandGroups) {
                        commandGroups = commandGroups || this._getDefaultPropertyPanelCommandGroups();
                        return this._preparePropertyPanelGroups(commandGroups)
                    },
                    getContextMenuCommands: function(commands) {
                        const allCommands = this.getAllCommands();
                        const contextMenuCommands = commands ? this._getPreparedCommands(allCommands, commands) : this._getDefaultContextMenuCommands(allCommands);
                        return this._prepareContextMenuCommands(contextMenuCommands)
                    },
                    _getDefaultContextMenuCommands: function(allCommands) {
                        return this._defaultContextMenuCommands || (this._defaultContextMenuCommands = [allCommands.cut, allCommands.copy, allCommands.paste, allCommands.delete, allCommands.separator, allCommands.selectAll, allCommands.separator, allCommands.bringToFront, allCommands.sendToBack, allCommands.separator, allCommands.lock, allCommands.unlock, allCommands.separator, allCommands.insertShapeImage, allCommands.editShapeImage, allCommands.deleteShapeImage])
                    },
                    _getPreparedCommands(allCommands, commands) {
                        return commands.map(c => {
                            if (c.widget && "separator" === c.widget) {
                                const command = {
                                    command: c,
                                    location: c.location
                                };
                                return command
                            } else if (allCommands[c]) {
                                return allCommands[c]
                            } else if (c.text || c.icon || c.name) {
                                const internalCommand = c.name && allCommands[c.name];
                                const command = {
                                    command: internalCommand && internalCommand.command,
                                    name: c.name,
                                    location: c.location,
                                    text: c.text || internalCommand && internalCommand.text,
                                    hint: c.text || internalCommand && internalCommand.hint,
                                    icon: c.icon || internalCommand && internalCommand.icon,
                                    menuIcon: c.icon || internalCommand && internalCommand.menuIcon,
                                    widget: internalCommand && internalCommand.widget,
                                    cssClass: internalCommand && internalCommand.cssClass,
                                    getParameter: internalCommand && internalCommand.getParameter,
                                    getCommandValue: internalCommand && internalCommand.getCommandValue,
                                    getEditorValue: internalCommand && internalCommand.getEditorValue,
                                    getEditorDisplayValue: internalCommand && internalCommand.getEditorDisplayValue,
                                    iconChecked: internalCommand && internalCommand.iconChecked,
                                    iconUnchecked: internalCommand && internalCommand.iconUnchecked
                                };
                                if (Array.isArray(c.items)) {
                                    command.items = this._getPreparedCommands(allCommands, c.items)
                                } else {
                                    command.items = internalCommand && internalCommand.items
                                }
                                return command
                            }
                        }).filter(c => c)
                    },
                    _prepareContextMenuCommands(commands, excludeCommands, rootCommand) {
                        let beginGroup = false;
                        return commands.map(c => {
                            if (!this._isValidCommand(c, excludeCommands)) {
                                return
                            }
                            if (c.widget && "separator" === c.widget) {
                                beginGroup = true
                            } else {
                                const command = this._cloneCommand(c, excludeCommands);
                                command.icon = command.menuIcon;
                                command.beginGroup = beginGroup;
                                command.rootCommand = !command.command ? rootCommand && rootCommand.command : void 0;
                                beginGroup = false;
                                return command
                            }
                        }).filter(c => c)
                    },
                    _prepareToolbarCommands(commands, excludeCommands) {
                        return commands.map(c => {
                            if (this._isValidCommand(c, excludeCommands)) {
                                return this._cloneCommand(c, excludeCommands)
                            }
                        }).filter(c => c).filter((c, index, arr) => {
                            if ("separator" === c.widget && index === arr.length - 1) {
                                return false
                            }
                            return c
                        })
                    },
                    _cloneCommand(c, excludeCommands) {
                        const command = (0, _extend.extend)({}, c);
                        if (Array.isArray(c.items)) {
                            command.items = this._prepareContextMenuCommands(c.items, excludeCommands, command)
                        }
                        return command
                    },
                    _isValidCommand(c, excludeCommands) {
                        excludeCommands = excludeCommands || [];
                        return -1 === excludeCommands.indexOf(c.command)
                    },
                    _exportTo(widget, dataURI, format, mimeString) {
                        const window = (0, _window.getWindow)();
                        if (window && window.atob && (0, _type.isFunction)(window.Blob)) {
                            const blob = this._getBlobByDataURI(window, dataURI, mimeString);
                            const options = widget.option("export");
                            _file_saver.fileSaver.saveAs(options.fileName || "foo", format, blob)
                        }
                    },
                    _getBlobByDataURI(window, dataURI, mimeString) {
                        const byteString = window.atob(dataURI.split(",")[1]);
                        const ia = new Uint8Array(byteString.length);
                        for (let i = 0; i < byteString.length; i++) {
                            ia[i] = byteString.charCodeAt(i)
                        }
                        return new window.Blob([ia.buffer], {
                            type: mimeString
                        })
                    }
                };
                var _default = DiagramCommandsManager;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        73510:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/diagram/diagram.edges_option.js ***!
              \********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _diagram = (obj = __webpack_require__( /*! ./diagram.items_option */ 4015), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let EdgesOption = function(_ItemsOption) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(EdgesOption, _ItemsOption);

                    function EdgesOption() {
                        return _ItemsOption.apply(this, arguments) || this
                    }
                    var _proto = EdgesOption.prototype;
                    _proto._getKeyExpr = function() {
                        return this._diagramWidget._createOptionGetter("edges.keyExpr")
                    };
                    return EdgesOption
                }(_diagram.default);
                var _default = EdgesOption;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        348:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/diagram/diagram.importer.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getDiagram = function() {
                    if (!Diagram.default) {
                        throw _ui.default.Error("E1041", "devexpress-diagram")
                    }
                    return Diagram
                };
                var _ui = (obj = __webpack_require__( /*! ../widget/ui.errors */ 96688), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var Diagram = function(obj, nodeInterop) {
                    if (!nodeInterop && obj && obj.__esModule) {
                        return obj
                    }
                    if (null === obj || "object" !== typeof obj && "function" !== typeof obj) {
                        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 ("default" !== key && 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
                }(__webpack_require__( /*! devexpress-diagram */ 63472));

                function _getRequireWildcardCache(nodeInterop) {
                    if ("function" !== typeof WeakMap) {
                        return null
                    }
                    var cacheBabelInterop = new WeakMap;
                    var cacheNodeInterop = new WeakMap;
                    return (_getRequireWildcardCache = function(nodeInterop) {
                        return nodeInterop ? cacheNodeInterop : cacheBabelInterop
                    })(nodeInterop)
                }
            },
        4015:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/diagram/diagram.items_option.js ***!
              \********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _component = __webpack_require__( /*! ../../core/component */ 44297);
                var _data_helper = (obj = __webpack_require__( /*! ../../data_helper */ 53305), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const ItemsOptionBase = _component.Component.inherit({}).include(_data_helper.default);
                let ItemsOption = function(_ItemsOptionBase) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(ItemsOption, _ItemsOptionBase);

                    function ItemsOption(diagramWidget) {
                        var _this;
                        _this = _ItemsOptionBase.call(this) || this;
                        _this._diagramWidget = diagramWidget;
                        _this._resetCache();
                        return _this
                    }
                    var _proto = ItemsOption.prototype;
                    _proto._dataSourceChangedHandler = function(newItems, e) {
                        this._resetCache();
                        this._items = newItems.map(item => (0, _extend.extend)(true, {}, item));
                        this._dataSourceItems = newItems.slice();
                        if (e && e.changes) {
                            const internalChanges = e.changes.filter(change => change.internalChange);
                            const externalChanges = e.changes.filter(change => !change.internalChange);
                            if (internalChanges.length) {
                                this._reloadContentByChanges(internalChanges, false)
                            }
                            if (externalChanges.length) {
                                this._reloadContentByChanges(externalChanges, true)
                            }
                        } else {
                            this._diagramWidget._onDataSourceChanged()
                        }
                    };
                    _proto._dataSourceLoadingChangedHandler = function(isLoading) {
                        if (isLoading && !this._dataSource.isLoaded()) {
                            this._diagramWidget._showLoadingIndicator()
                        } else {
                            this._diagramWidget._hideLoadingIndicator()
                        }
                    };
                    _proto._prepareData = function(dataObj) {
                        for (const key in dataObj) {
                            if (!Object.prototype.hasOwnProperty.call(dataObj, key)) {
                                continue
                            }
                            if (void 0 === dataObj[key]) {
                                dataObj[key] = null
                            }
                        }
                        return dataObj
                    };
                    _proto.insert = function(data, callback, errorCallback) {
                        this._resetCache();
                        const store = this._getStore();
                        store.insert(this._prepareData(data)).done((data, key) => {
                            store.push([{
                                type: "insert",
                                key: key,
                                data: data,
                                internalChange: true
                            }]);
                            if (callback) {
                                callback(data)
                            }
                            this._resetCache()
                        }).fail(error => {
                            if (errorCallback) {
                                errorCallback(error)
                            }
                            this._resetCache()
                        })
                    };
                    _proto.update = function(key, data, callback, errorCallback) {
                        const store = this._getStore();
                        const storeKey = this._getStoreKey(store, key, data);
                        store.update(storeKey, this._prepareData(data)).done((data, key) => {
                            store.push([{
                                type: "update",
                                key: key,
                                data: data,
                                internalChange: true
                            }]);
                            if (callback) {
                                callback(key, data)
                            }
                        }).fail(error => {
                            if (errorCallback) {
                                errorCallback(error)
                            }
                        })
                    };
                    _proto.remove = function(key, data, callback, errorCallback) {
                        this._resetCache();
                        const store = this._getStore();
                        const storeKey = this._getStoreKey(store, key, data);
                        store.remove(storeKey).done(key => {
                            store.push([{
                                type: "remove",
                                key: key,
                                internalChange: true
                            }]);
                            if (callback) {
                                callback(key)
                            }
                            this._resetCache()
                        }).fail(error => {
                            if (errorCallback) {
                                errorCallback(error)
                            }
                            this._resetCache()
                        })
                    };
                    _proto.findItem = function(itemKey) {
                        if (!this._items) {
                            return null
                        }
                        return this._getItemByKey(itemKey)
                    };
                    _proto.getItems = function() {
                        return this._items
                    };
                    _proto.hasItems = function() {
                        return !!this._items
                    };
                    _proto._reloadContentByChanges = function(changes, isExternalChanges) {
                        changes = changes.map(change => (0, _extend.extend)(change, {
                            internalKey: this._getInternalKey(change.key)
                        }));
                        this._diagramWidget._reloadContentByChanges(changes, isExternalChanges)
                    };
                    _proto._getItemByKey = function(key) {
                        this._ensureCache();
                        const cache = this._cache;
                        const index = this._getIndexByKey(key);
                        return cache.items[index]
                    };
                    _proto._getIndexByKey = function(key) {
                        this._ensureCache();
                        const cache = this._cache;
                        if ("object" === typeof key) {
                            for (let i = 0, length = cache.keys.length; i < length; i++) {
                                if (cache.keys[i] === key) {
                                    return i
                                }
                            }
                        } else {
                            const keySet = cache.keySet || cache.keys.reduce((accumulator, key, index) => {
                                accumulator[key] = index;
                                return accumulator
                            }, {});
                            if (!cache.keySet) {
                                cache.keySet = keySet
                            }
                            return keySet[key]
                        }
                        return -1
                    };
                    _proto._ensureCache = function() {
                        const cache = this._cache;
                        if (!cache.keys) {
                            cache.keys = [];
                            cache.items = [];
                            this._fillCache(cache, this._items)
                        }
                    };
                    _proto._fillCache = function(cache, items) {
                        if (!items || !items.length) {
                            return
                        }
                        const keyExpr = this._getKeyExpr();
                        if (keyExpr) {
                            items.forEach(item => {
                                cache.keys.push(keyExpr(item));
                                cache.items.push(item)
                            })
                        }
                        const itemsExpr = this._getItemsExpr();
                        if (itemsExpr) {
                            items.forEach(item => this._fillCache(cache, itemsExpr(item)))
                        }
                        const containerChildrenExpr = this._getContainerChildrenExpr();
                        if (containerChildrenExpr) {
                            items.forEach(item => this._fillCache(cache, containerChildrenExpr(item)))
                        }
                    };
                    _proto._getKeyExpr = function() {
                        throw "Not Implemented"
                    };
                    _proto._getItemsExpr = function() {};
                    _proto._getContainerChildrenExpr = function() {};
                    _proto._initDataSource = function() {
                        _ItemsOptionBase.prototype._initDataSource.call(this);
                        this._dataSource && this._dataSource.paginate(false)
                    };
                    _proto._dataSourceOptions = function() {
                        return {
                            paginate: false
                        }
                    };
                    _proto._getStore = function() {
                        return this._dataSource && this._dataSource.store()
                    };
                    _proto._getStoreKey = function(store, internalKey, data) {
                        let storeKey = store.keyOf(data);
                        if (storeKey === data) {
                            const keyExpr = this._getKeyExpr();
                            this._dataSourceItems.forEach(item => {
                                if (keyExpr(item) === internalKey) {
                                    storeKey = item
                                }
                            })
                        }
                        return storeKey
                    };
                    _proto._getInternalKey = function(storeKey) {
                        if ("object" === typeof storeKey) {
                            const keyExpr = this._getKeyExpr();
                            return keyExpr(storeKey)
                        }
                        return storeKey
                    };
                    _proto._resetCache = function() {
                        this._cache = {}
                    };
                    return ItemsOption
                }(ItemsOptionBase);
                var _default = ItemsOption;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        81308:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/diagram/diagram.nodes_option.js ***!
              \********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _diagram = (obj = __webpack_require__( /*! ./diagram.items_option */ 4015), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let NodesOption = function(_ItemsOption) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(NodesOption, _ItemsOption);

                    function NodesOption() {
                        return _ItemsOption.apply(this, arguments) || this
                    }
                    var _proto = NodesOption.prototype;
                    _proto._getKeyExpr = function() {
                        return this._diagramWidget._createOptionGetter("nodes.keyExpr")
                    };
                    _proto._getItemsExpr = function() {
                        return this._diagramWidget._createOptionGetter("nodes.itemsExpr")
                    };
                    _proto._getContainerChildrenExpr = function() {
                        return this._diagramWidget._createOptionGetter("nodes.containerChildrenExpr")
                    };
                    return NodesOption
                }(_diagram.default);
                var _default = NodesOption;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        61982:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/diagram/diagram.options_update.js ***!
              \**********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _diagram = (obj = __webpack_require__( /*! ./diagram.bar */ 50984), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _diagram2 = __webpack_require__( /*! ./diagram.importer */ 348);

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let DiagramOptionsUpdateBar = function(_DiagramBar) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(DiagramOptionsUpdateBar, _DiagramBar);

                    function DiagramOptionsUpdateBar(owner) {
                        var _this;
                        _this = _DiagramBar.call(this, owner) || this;
                        const {
                            DiagramCommand: DiagramCommand
                        } = (0, _diagram2.getDiagram)();
                        _this.commandOptions = {};
                        _this.commandOptions[DiagramCommand.Fullscreen] = "fullScreen";
                        _this.commandOptions[DiagramCommand.ZoomLevel] = function(value) {
                            if ("object" === typeof this._getOption("zoomLevel")) {
                                this._setOption("zoomLevel.value", value)
                            } else {
                                this._setOption("zoomLevel", value)
                            }
                        };
                        _this.commandOptions[DiagramCommand.SwitchAutoZoom] = function(value) {
                            const {
                                AutoZoomMode: AutoZoomMode
                            } = (0, _diagram2.getDiagram)();
                            switch (value) {
                                case AutoZoomMode.FitContent:
                                    this._setOption("autoZoomMode", "fitContent");
                                    break;
                                case AutoZoomMode.FitToWidth:
                                    this._setOption("autoZoomMode", "fitWidth");
                                    break;
                                case AutoZoomMode.Disabled:
                                    this._setOption("autoZoomMode", "disabled")
                            }
                        };
                        _this.commandOptions[DiagramCommand.ToggleSimpleView] = "simpleView";
                        _this.commandOptions[DiagramCommand.ShowGrid] = "showGrid";
                        _this.commandOptions[DiagramCommand.SnapToGrid] = "snapToGrid";
                        _this.commandOptions[DiagramCommand.GridSize] = function(value) {
                            if ("object" === typeof this._getOption("gridSize")) {
                                this._setOption("gridSize.value", value)
                            } else {
                                this._setOption("gridSize", value)
                            }
                        };
                        _this.commandOptions[DiagramCommand.ViewUnits] = "viewUnits";
                        _this.commandOptions[DiagramCommand.PageSize] = function(value) {
                            const pageSize = this._getOption("pageSize");
                            if (void 0 === pageSize || pageSize.width !== value.width || pageSize.height !== value.height) {
                                this._setOption("pageSize", value)
                            }
                        };
                        _this.commandOptions[DiagramCommand.PageLandscape] = function(value) {
                            this._setOption("pageOrientation", value ? "landscape" : "portrait")
                        };
                        _this.commandOptions[DiagramCommand.ViewUnits] = function(value) {
                            const {
                                DiagramUnit: DiagramUnit
                            } = (0, _diagram2.getDiagram)();
                            switch (value) {
                                case DiagramUnit.In:
                                    this._setOption("viewUnits", "in");
                                    break;
                                case DiagramUnit.Cm:
                                    this._setOption("viewUnits", "cm");
                                    break;
                                case DiagramUnit.Px:
                                    this._setOption("viewUnits", "px")
                            }
                        };
                        _this.commandOptions[DiagramCommand.PageColor] = "pageColor";
                        _this._updateLock = 0;
                        return _this
                    }
                    var _proto = DiagramOptionsUpdateBar.prototype;
                    _proto.getCommandKeys = function() {
                        return Object.keys(this.commandOptions).map((function(key) {
                            return parseInt(key)
                        }))
                    };
                    _proto.setItemValue = function(key, value) {
                        if (this.isUpdateLocked()) {
                            return
                        }
                        this.beginUpdate();
                        try {
                            if ("function" === typeof this.commandOptions[key]) {
                                this.commandOptions[key].call(this, value)
                            } else {
                                this._setOption(this.commandOptions[key], value)
                            }
                        } finally {
                            this.endUpdate()
                        }
                    };
                    _proto.beginUpdate = function() {
                        this._updateLock++
                    };
                    _proto.endUpdate = function() {
                        this._updateLock--
                    };
                    _proto.isUpdateLocked = function() {
                        return this._updateLock > 0
                    };
                    _proto._getOption = function(name) {
                        return this._owner.option(name)
                    };
                    _proto._setOption = function(name, value) {
                        this._owner.option(name, value)
                    };
                    return DiagramOptionsUpdateBar
                }(_diagram.default);
                var _default = DiagramOptionsUpdateBar;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        63564:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/diagram/diagram.toolbox_manager.js ***!
              \***********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _message = (obj = __webpack_require__( /*! ../../localization/message */ 28109), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const DiagramToolboxManager = {
                    getDefaultGroups() {
                        return this._groups || (this._groups = {
                            general: {
                                category: "general",
                                title: _message.default.format("dxDiagram-categoryGeneral")
                            },
                            flowchart: {
                                category: "flowchart",
                                title: _message.default.format("dxDiagram-categoryFlowchart")
                            },
                            orgChart: {
                                category: "orgChart",
                                title: _message.default.format("dxDiagram-categoryOrgChart")
                            },
                            containers: {
                                category: "containers",
                                title: _message.default.format("dxDiagram-categoryContainers")
                            },
                            custom: {
                                category: "custom",
                                title: _message.default.format("dxDiagram-categoryCustom")
                            }
                        })
                    },
                    getGroups: function(groups) {
                        const defaultGroups = this.getDefaultGroups();
                        if (groups) {
                            return groups.map((function(g) {
                                if ("string" === typeof g) {
                                    return {
                                        category: g,
                                        title: defaultGroups[g] && defaultGroups[g].title || g
                                    }
                                }
                                return g
                            })).filter((function(g) {
                                return g
                            }))
                        }
                        return [defaultGroups.general, defaultGroups.flowchart, defaultGroups.orgChart, defaultGroups.containers]
                    }
                };
                var _default = DiagramToolboxManager;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        33353:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.context_menu.js ***!
              \***********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _context_menu = _interopRequireDefault(__webpack_require__( /*! ../context_menu */ 10042));
                var _diagram = _interopRequireDefault(__webpack_require__( /*! ./diagram.commands_manager */ 72321));
                var _uiDiagram = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.menu_helper */ 20261));
                var _diagram2 = _interopRequireDefault(__webpack_require__( /*! ./diagram.bar */ 50984));
                var _diagram3 = __webpack_require__( /*! ./diagram.importer */ 348);

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

                function _inheritsLoose(subClass, superClass) {
                    subClass.prototype = Object.create(superClass.prototype);
                    subClass.prototype.constructor = subClass;
                    _setPrototypeOf(subClass, superClass)
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let DiagramContextMenuWrapper = function(_Widget) {
                    _inheritsLoose(DiagramContextMenuWrapper, _Widget);

                    function DiagramContextMenuWrapper() {
                        return _Widget.apply(this, arguments) || this
                    }
                    var _proto = DiagramContextMenuWrapper.prototype;
                    _proto._init = function() {
                        _Widget.prototype._init.call(this);
                        this._createOnVisibilityChangingAction();
                        this._createOnInternalCommand();
                        this._createOnCustomCommand();
                        this._createOnItemClickAction();
                        this._tempState = void 0;
                        this._commands = [];
                        this._commandToIndexMap = {};
                        this.bar = new DiagramContextMenuBar(this)
                    };
                    _proto._initMarkup = function() {
                        _Widget.prototype._initMarkup.call(this);
                        this._commands = this._getCommands();
                        this._commandToIndexMap = {};
                        this._fillCommandToIndexMap(this._commands, []);
                        this._$contextMenuTargetElement = (0, _renderer.default)("<div>").addClass("dx-diagram-touchbar-target").appendTo(this.$element());
                        const $contextMenu = (0, _renderer.default)("<div>").appendTo(this.$element());
                        this._contextMenuInstance = this._createComponent($contextMenu, DiagramContextMenu, {
                            isTouchBarMode: this._isTouchBarMode(),
                            cssClass: this._isTouchBarMode() ? "dx-diagram-touchbar" : _uiDiagram.default.getContextMenuCssClass(),
                            hideOnOutsideClick: false,
                            showEvent: "",
                            focusStateEnabled: false,
                            items: this._commands,
                            position: this._isTouchBarMode() ? {
                                my: {
                                    x: "center",
                                    y: "bottom"
                                },
                                at: {
                                    x: "center",
                                    y: "top"
                                },
                                of: this._$contextMenuTargetElement
                            } : {},
                            itemTemplate: function(itemData, itemIndex, itemElement) {
                                _uiDiagram.default.getContextMenuItemTemplate(this, itemData, itemIndex, itemElement)
                            },
                            onItemClick: _ref => {
                                let {
                                    itemData: itemData
                                } = _ref;
                                return this._onItemClick(itemData)
                            },
                            onShowing: e => {
                                if (true === this._inOnShowing) {
                                    return
                                }
                                this._inOnShowing = true;
                                this._onVisibilityChangingAction({
                                    visible: true,
                                    component: this
                                });
                                e.component.option("items", e.component.option("items"));
                                delete this._inOnShowing
                            }
                        })
                    };
                    _proto._show = function(x, y, selection) {
                        this._contextMenuInstance.hide();
                        if (this._isTouchBarMode()) {
                            this._$contextMenuTargetElement.show();
                            if (!selection) {
                                selection = {
                                    x: x,
                                    y: y,
                                    width: 0,
                                    height: 0
                                }
                            }
                            const widthCorrection = selection.width > 800 ? 0 : (800 - selection.width) / 2;
                            this._$contextMenuTargetElement.css({
                                left: selection.x - widthCorrection,
                                top: selection.y - 32,
                                width: selection.width + 2 * widthCorrection,
                                height: selection.height + 64
                            });
                            this._contextMenuInstance.show()
                        } else {
                            this._contextMenuInstance.option("position", {
                                offset: x + " " + y
                            });
                            this._contextMenuInstance.show()
                        }
                    };
                    _proto._hide = function() {
                        this._$contextMenuTargetElement.hide();
                        this._contextMenuInstance.hide()
                    };
                    _proto._isTouchBarMode = function() {
                        const {
                            Browser: Browser
                        } = (0, _diagram3.getDiagram)();
                        return Browser.TouchUI
                    };
                    _proto._onItemClick = function(itemData) {
                        let processed = false;
                        if (this._onItemClickAction) {
                            processed = this._onItemClickAction(itemData)
                        }
                        if (!processed) {
                            _uiDiagram.default.onContextMenuItemClick(this, itemData, this._executeCommand.bind(this));
                            this._contextMenuInstance.hide()
                        }
                    };
                    _proto._executeCommand = function(command, name, value) {
                        if ("number" === typeof command) {
                            this.bar.raiseBarCommandExecuted(command, value)
                        } else if ("string" === typeof command) {
                            this._onInternalCommandAction({
                                command: command
                            })
                        }
                        if (void 0 !== name) {
                            this._onCustomCommandAction({
                                name: name
                            })
                        }
                    };
                    _proto._createOnInternalCommand = function() {
                        this._onInternalCommandAction = this._createActionByOption("onInternalCommand")
                    };
                    _proto._createOnCustomCommand = function() {
                        this._onCustomCommandAction = this._createActionByOption("onCustomCommand")
                    };
                    _proto._getCommands = function() {
                        return _diagram.default.getContextMenuCommands(this.option("commands"))
                    };
                    _proto._fillCommandToIndexMap = function(commands, indexPath) {
                        commands.forEach((command, index) => {
                            const commandIndexPath = indexPath.concat([index]);
                            if (void 0 !== command.command) {
                                this._commandToIndexMap[command.command] = commandIndexPath
                            }
                            if (Array.isArray(command.items)) {
                                this._fillCommandToIndexMap(command.items, commandIndexPath)
                            }
                        })
                    };
                    _proto._setItemEnabled = function(key, enabled) {
                        this._setItemVisible(key, enabled)
                    };
                    _proto._setItemVisible = function(key, visible) {
                        const itemOptionText = _uiDiagram.default.getItemOptionText(this._contextMenuInstance, this._commandToIndexMap[key]);
                        _uiDiagram.default.updateContextMenuItemVisible(this._contextMenuInstance, itemOptionText, visible)
                    };
                    _proto._setItemValue = function(key, value) {
                        const itemOptionText = _uiDiagram.default.getItemOptionText(this._contextMenuInstance, this._commandToIndexMap[key]);
                        _uiDiagram.default.updateContextMenuItemValue(this._contextMenuInstance, itemOptionText, key, value)
                    };
                    _proto._setItemSubItems = function(key, items) {
                        const itemOptionText = _uiDiagram.default.getItemOptionText(this._contextMenuInstance, this._commandToIndexMap[key]);
                        _uiDiagram.default.updateContextMenuItems(this._contextMenuInstance, itemOptionText, key, items)
                    };
                    _proto._setEnabled = function(enabled) {
                        this._contextMenuInstance.option("disabled", !enabled)
                    };
                    _proto.isVisible = function() {
                        return this._inOnShowing
                    };
                    _proto._createOnVisibilityChangingAction = function() {
                        this._onVisibilityChangingAction = this._createActionByOption("onVisibilityChanging")
                    };
                    _proto._createOnItemClickAction = function() {
                        this._onItemClickAction = this._createActionByOption("onItemClick")
                    };
                    _proto._optionChanged = function(args) {
                        switch (args.name) {
                            case "onVisibilityChanging":
                                this._createOnVisibilityChangingAction();
                                break;
                            case "onInternalCommand":
                                this._createOnInternalCommand();
                                break;
                            case "onCustomCommand":
                                this._createOnCustomCommand();
                                break;
                            case "onItemClick":
                                this._createOnItemClickAction();
                                break;
                            case "commands":
                                this._invalidate();
                                break;
                            case "export":
                                break;
                            default:
                                _Widget.prototype._optionChanged.call(this, args)
                        }
                    };
                    return DiagramContextMenuWrapper
                }(_ui.default);
                let DiagramContextMenu = function(_ContextMenu) {
                    _inheritsLoose(DiagramContextMenu, _ContextMenu);

                    function DiagramContextMenu() {
                        return _ContextMenu.apply(this, arguments) || this
                    }
                    var _proto2 = DiagramContextMenu.prototype;
                    _proto2._renderContextMenuOverlay = function() {
                        _ContextMenu.prototype._renderContextMenuOverlay.call(this);
                        if (this._overlay && this.option("isTouchBarMode")) {
                            this._overlay && this._overlay.option("onShown", () => {
                                const $content = (0, _renderer.default)(this._overlay.$content());
                                $content.parent().addClass("dx-diagram-touchbar-overlay")
                            })
                        }
                    };
                    return DiagramContextMenu
                }(_context_menu.default);
                let DiagramContextMenuBar = function(_DiagramBar) {
                    _inheritsLoose(DiagramContextMenuBar, _DiagramBar);

                    function DiagramContextMenuBar(owner) {
                        return _DiagramBar.call(this, owner) || this
                    }
                    var _proto3 = DiagramContextMenuBar.prototype;
                    _proto3.getCommandKeys = function() {
                        return this._getKeys(this._owner._commands)
                    };
                    _proto3.setItemValue = function(key, value) {
                        this._owner._setItemValue(key, value)
                    };
                    _proto3.setItemEnabled = function(key, enabled) {
                        this._owner._setItemEnabled(key, enabled)
                    };
                    _proto3.setItemVisible = function(key, visible) {
                        this._owner._setItemVisible(key, visible)
                    };
                    _proto3.setItemSubItems = function(key, items) {
                        this._owner._setItemSubItems(key, items)
                    };
                    _proto3.setEnabled = function(enabled) {
                        this._owner._setEnabled(enabled)
                    };
                    _proto3.isVisible = function() {
                        return this._owner.isVisible()
                    };
                    return DiagramContextMenuBar
                }(_diagram2.default);
                var _default = {
                    DiagramContextMenuWrapper: DiagramContextMenuWrapper,
                    DiagramContextMenu: DiagramContextMenu
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        90978:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.context_toolbox.js ***!
              \**************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../popover/ui.popover */ 17287));
                var _diagram = __webpack_require__( /*! ./diagram.importer */ 348);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let DiagramContextToolbox = function(_Widget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(DiagramContextToolbox, _Widget);

                    function DiagramContextToolbox() {
                        return _Widget.apply(this, arguments) || this
                    }
                    var _proto = DiagramContextToolbox.prototype;
                    _proto._init = function() {
                        _Widget.prototype._init.call(this);
                        this._onShownAction = this._createActionByOption("onShown");
                        const window = (0, _window.getWindow)();
                        this._popoverPositionData = [{
                            my: {
                                x: "center",
                                y: "top"
                            },
                            at: {
                                x: "center",
                                y: "bottom"
                            },
                            offset: {
                                x: 0,
                                y: 5
                            },
                            calcMaxHeight: rect => Math.max(150, window.innerHeight - rect.bottom - 6)
                        }, {
                            my: {
                                x: "right",
                                y: "center"
                            },
                            at: {
                                x: "left",
                                y: "center"
                            },
                            offset: {
                                x: -5,
                                y: 0
                            },
                            calcMaxHeight: rect => Math.max(150, 2 * Math.min(rect.top, window.innerHeight - rect.bottom) - 2)
                        }, {
                            my: {
                                x: "center",
                                y: "bottom"
                            },
                            at: {
                                x: "center",
                                y: "top"
                            },
                            offset: {
                                x: 0,
                                y: -5
                            },
                            calcMaxHeight: rect => Math.max(150, rect.top - 6)
                        }, {
                            my: {
                                x: "left",
                                y: "center"
                            },
                            at: {
                                x: "right",
                                y: "center"
                            },
                            offset: {
                                x: 5,
                                y: 0
                            },
                            calcMaxHeight: rect => Math.max(150, 2 * Math.min(rect.top, window.innerHeight - rect.bottom) - 2)
                        }]
                    };
                    _proto._initMarkup = function() {
                        _Widget.prototype._initMarkup.call(this);
                        this._$popoverTargetElement = (0, _renderer.default)("<div>").addClass("dx-diagram-context-toolbox-target").appendTo(this.$element());
                        const $popoverElement = (0, _renderer.default)("<div>").addClass("dx-diagram-context-toolbox").appendTo(this.$element());
                        if (this._isTouchMode()) {
                            $popoverElement.addClass("dx-diagram-touch-context-toolbox")
                        }
                        this._popoverInstance = this._createComponent($popoverElement, _ui2.default, {
                            hideOnOutsideClick: false,
                            container: this.$element()
                        })
                    };
                    _proto._isTouchMode = function() {
                        const {
                            Browser: Browser
                        } = (0, _diagram.getDiagram)();
                        return Browser.TouchUI
                    };
                    _proto._show = function(x, y, side, category, callback) {
                        this._popoverInstance.hide();
                        this._$popoverTargetElement.css({
                            left: x + this._popoverPositionData[side].offset.x,
                            top: y + this._popoverPositionData[side].offset.y
                        }).show();
                        const window = (0, _window.getWindow)();
                        const targetDiv = this._$popoverTargetElement.get(0);
                        this._$popoverTargetElement.css({
                            left: targetDiv.offsetLeft - (targetDiv.getBoundingClientRect().left + window.scrollX - targetDiv.offsetLeft),
                            top: targetDiv.offsetTop - (targetDiv.getBoundingClientRect().top + window.scrollY - targetDiv.offsetTop)
                        });
                        const posRect = targetDiv.getBoundingClientRect();
                        this._popoverInstance.option({
                            maxHeight: this._popoverPositionData[side].calcMaxHeight(posRect),
                            width: void 0 !== this.option("toolboxWidth") ? this.option("toolboxWidth") : void 0,
                            position: {
                                my: this._popoverPositionData[side].my,
                                at: this._popoverPositionData[side].at,
                                of: this._$popoverTargetElement
                            },
                            contentTemplate: () => (0, _renderer.default)("<div>").append((0, _renderer.default)("<div>").addClass("dx-diagram-context-toolbox-content")).dxScrollView({
                                width: "100%",
                                height: "100%"
                            }),
                            onContentReady: () => {
                                const $element = this.$element().find(".dx-diagram-context-toolbox-content");
                                this._onShownAction({
                                    category: category,
                                    callback: callback,
                                    $element: $element,
                                    hide: () => this._popoverInstance.hide()
                                })
                            }
                        });
                        this._popoverInstance.show()
                    };
                    _proto._hide = function() {
                        this._$popoverTargetElement.hide();
                        this._popoverInstance.hide()
                    };
                    return DiagramContextToolbox
                }(_ui.default);
                var _default = DiagramContextToolbox;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        34690:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.dialog_manager.js ***!
              \*************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _diagram = __webpack_require__( /*! ./diagram.importer */ 348);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _file_uploader = _interopRequireDefault(__webpack_require__( /*! ../file_uploader */ 53749));
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const DiagramDialogManager = {
                    getConfigurations: function() {
                        const {
                            DiagramCommand: DiagramCommand
                        } = (0, _diagram.getDiagram)();
                        return this.dialogList || (this.dialogList = [{
                            command: DiagramCommand.InsertShapeImage,
                            title: _message.default.format("dxDiagram-dialogInsertShapeImageTitle"),
                            onGetContent: this.getChangeImageDialogContent
                        }, {
                            command: DiagramCommand.EditShapeImage,
                            title: _message.default.format("dxDiagram-dialogEditShapeImageTitle"),
                            onGetContent: this.getChangeImageDialogContent
                        }])
                    },
                    getChangeImageDialogContent: function(args) {
                        const $uploader = (0, _renderer.default)("<div>");
                        args.component._createComponent($uploader, _file_uploader.default, {
                            selectButtonText: _message.default.format("dxDiagram-dialogEditShapeImageSelectButton"),
                            accept: "image/*",
                            uploadMode: "useForm",
                            onValueChanged: function(e) {
                                const window = (0, _window.getWindow)();
                                const reader = new window.FileReader;
                                reader.onload = function(e) {
                                    args.component._commandParameter = e.target.result
                                };
                                reader.readAsDataURL(e.value[0])
                            }
                        });
                        return $uploader
                    },
                    getDialogParameters(command) {
                        const commandIndex = this.getConfigurations().map(c => c.command).indexOf(command);
                        if (commandIndex >= 0) {
                            return this.getConfigurations()[commandIndex]
                        } else {
                            return null
                        }
                    }
                };
                var _default = DiagramDialogManager;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        46920:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.dialogs.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../popup/ui.popup */ 51495));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let DiagramDialog = function(_Widget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(DiagramDialog, _Widget);

                    function DiagramDialog() {
                        return _Widget.apply(this, arguments) || this
                    }
                    var _proto = DiagramDialog.prototype;
                    _proto._init = function() {
                        _Widget.prototype._init.call(this);
                        this._command = void 0;
                        this._isShown = false;
                        this._createOnGetContentOption();
                        this._createOnHiddenOption()
                    };
                    _proto._initMarkup = function() {
                        _Widget.prototype._initMarkup.call(this);
                        this._command = this.option("command");
                        this._$popupElement = (0, _renderer.default)("<div>").appendTo(this.$element());
                        this._popup = this._createComponent(this._$popupElement, _ui2.default, {
                            title: this.option("title"),
                            maxWidth: this.option("maxWidth"),
                            height: this.option("height"),
                            toolbarItems: this.option("toolbarItems"),
                            onHidden: this._onHiddenAction
                        })
                    };
                    _proto._clean = function() {
                        delete this._popup;
                        this._$popupElement && this._$popupElement.remove()
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_Widget.prototype._getDefaultOptions.call(this), {
                            title: "",
                            maxWidth: 500,
                            height: "auto",
                            toolbarItems: this._getToolbarItems()
                        })
                    };
                    _proto._getToolbarItems = function() {
                        return [this._getOkToolbarItem(), this._getCancelToolbarItem()]
                    };
                    _proto._getOkToolbarItem = function() {
                        return {
                            widget: "dxButton",
                            location: "after",
                            toolbar: "bottom",
                            options: {
                                text: _message.default.format("dxDiagram-dialogButtonOK"),
                                onClick: function() {
                                    this._command.execute(this._commandParameter);
                                    this._hide()
                                }.bind(this)
                            }
                        }
                    };
                    _proto._getCancelToolbarItem = function() {
                        return {
                            widget: "dxButton",
                            location: "after",
                            toolbar: "bottom",
                            options: {
                                text: _message.default.format("dxDiagram-dialogButtonCancel"),
                                onClick: this._hide.bind(this)
                            }
                        }
                    };
                    _proto._optionChanged = function(args) {
                        switch (args.name) {
                            case "title":
                            case "maxWidth":
                            case "height":
                            case "toolbarItems":
                                this._popup.option(args.name, args.value);
                                break;
                            case "command":
                                this._command = args.value;
                                break;
                            case "onGetContent":
                                this._createOnGetContentOption();
                                break;
                            case "onHidden":
                                this._createOnHiddenOption();
                                break;
                            default:
                                _Widget.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto._createOnGetContentOption = function() {
                        this._onGetContentAction = this._createActionByOption("onGetContent")
                    };
                    _proto._createOnHiddenOption = function() {
                        this._onHiddenAction = this._createActionByOption("onHidden")
                    };
                    _proto._hide = function() {
                        this._popup.hide();
                        this._isShown = false
                    };
                    _proto._show = function() {
                        this._popup.$content().empty().append(this._onGetContentAction());
                        this._popup.show();
                        this._isShown = true
                    };
                    _proto.isVisible = function() {
                        return this._isShown
                    };
                    return DiagramDialog
                }(_ui.default);
                var _default = DiagramDialog;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        99967:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.floating_panel.js ***!
              \*************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../popup/ui.popup */ 51495));
                var _uiDiagram = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.panel */ 47596));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let DiagramFloatingPanel = function(_DiagramPanel) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(DiagramFloatingPanel, _DiagramPanel);

                    function DiagramFloatingPanel() {
                        return _DiagramPanel.apply(this, arguments) || this
                    }
                    var _proto = DiagramFloatingPanel.prototype;
                    _proto._init = function() {
                        _DiagramPanel.prototype._init.call(this);
                        this._createOnVisibilityChangingAction();
                        this._createOnVisibilityChangedAction()
                    };
                    _proto.isVisible = function() {
                        return this.option("isVisible")
                    };
                    _proto.isMobileView = function() {
                        return this.option("isMobileView")
                    };
                    _proto._initMarkup = function() {
                        _DiagramPanel.prototype._initMarkup.call(this);
                        const $parent = this.$element();
                        const $popupElement = (0, _renderer.default)("<div>").addClass(this._getPopupClass()).addClass(this.isMobileView() && "dx-diagram-mobile-popup").appendTo($parent);
                        this._popup = this._createComponent($popupElement, _ui.default, this._getPopupOptions());
                        this._updatePopupVisible()
                    };
                    _proto.show = function() {
                        this.option("isVisible", true)
                    };
                    _proto.hide = function() {
                        this.option("isVisible", false)
                    };
                    _proto.toggle = function() {
                        this.option("isVisible", !this.isVisible())
                    };
                    _proto.repaint = function() {
                        this._popup.repaint()
                    };
                    _proto._getPopupContent = function() {
                        return this._popup.content()
                    };
                    _proto._getPopupTitle = function() {
                        const $content = (0, _renderer.default)(this._getPopupContent());
                        return $content.parent().find(".dx-popup-title")
                    };
                    _proto._getPointerUpElements = function() {
                        return [this._getPopupContent(), this._getPopupTitle()]
                    };
                    _proto._getVerticalPaddingsAndBorders = function() {
                        const $content = (0, _renderer.default)(this._getPopupContent());
                        return (0, _size.getOuterHeight)($content) - (0, _size.getHeight)($content)
                    };
                    _proto._getHorizontalPaddingsAndBorders = function() {
                        const $content = (0, _renderer.default)(this._getPopupContent());
                        return (0, _size.getOuterWidth)($content) - (0, _size.getWidth)($content)
                    };
                    _proto._getPopupClass = function() {
                        return ""
                    };
                    _proto._getPopupWidth = function() {
                        return this.option("width") || "auto"
                    };
                    _proto._getPopupMaxWidth = function() {
                        return this.option("maxWidth")
                    };
                    _proto._getPopupMinWidth = function() {
                        return this.option("minWidth")
                    };
                    _proto._getPopupHeight = function() {
                        return this.option("height") || "auto"
                    };
                    _proto._getPopupMaxHeight = function() {
                        return this.option("maxHeight")
                    };
                    _proto._getPopupMinHeight = function() {
                        return this.option("minHeight")
                    };
                    _proto._getPopupPosition = function() {
                        return {}
                    };
                    _proto._getPopupContainer = function() {
                        return this.option("container")
                    };
                    _proto._getPopupSlideAnimationObject = function(properties) {
                        return (0, _extend.extend)({
                            type: "slide",
                            start: () => {
                                (0, _renderer.default)("body").css("overflow", "hidden")
                            },
                            complete: () => {
                                (0, _renderer.default)("body").css("overflow", "")
                            }
                        }, properties)
                    };
                    _proto._getPopupAnimation = function() {
                        return {
                            hide: {
                                type: "fadeOut"
                            },
                            show: {
                                type: "fadeIn"
                            }
                        }
                    };
                    _proto._getPopupOptions = function() {
                        const that = this;
                        return {
                            animation: (0, _window.hasWindow)() ? this._getPopupAnimation() : null,
                            shading: false,
                            showTitle: false,
                            focusStateEnabled: false,
                            container: this._getPopupContainer(),
                            width: this._getPopupWidth(),
                            height: this._getPopupHeight(),
                            maxWidth: this._getPopupMaxWidth(),
                            maxHeight: this._getPopupMaxHeight(),
                            minWidth: this._getPopupMinWidth(),
                            minHeight: this._getPopupMinHeight(),
                            position: this._getPopupPosition(),
                            showCloseButton: true,
                            copyRootClassesToWrapper: true,
                            _ignoreCopyRootClassesToWrapperDeprecation: true,
                            onContentReady: function() {
                                that._renderPopupContent(that._popup.content())
                            },
                            onShowing: () => {
                                this._onVisibilityChangingAction({
                                    visible: true,
                                    component: this
                                })
                            },
                            onShown: () => {
                                this.option("isVisible", true);
                                this._onVisibilityChangedAction({
                                    visible: true,
                                    component: this
                                })
                            },
                            onHiding: () => {
                                this._onVisibilityChangingAction({
                                    visible: false,
                                    component: this
                                })
                            },
                            onHidden: () => {
                                this.option("isVisible", false);
                                this._onVisibilityChangedAction({
                                    visible: false,
                                    component: this
                                })
                            }
                        }
                    };
                    _proto._renderPopupContent = function($parent) {};
                    _proto._updatePopupVisible = function() {
                        this._popup.option("visible", this.isVisible())
                    };
                    _proto._createOnVisibilityChangingAction = function() {
                        this._onVisibilityChangingAction = this._createActionByOption("onVisibilityChanging")
                    };
                    _proto._createOnVisibilityChangedAction = function() {
                        this._onVisibilityChangedAction = this._createActionByOption("onVisibilityChanged")
                    };
                    _proto._optionChanged = function(args) {
                        switch (args.name) {
                            case "onVisibilityChanging":
                                this._createOnVisibilityChangingAction();
                                break;
                            case "onVisibilityChanged":
                                this._createOnVisibilityChangedAction();
                                break;
                            case "container":
                                this._popup.option("container", this._getPopupContainer());
                                break;
                            case "width":
                                this._popup.option("width", this._getPopupWidth());
                                break;
                            case "height":
                                this._popup.option("height", this._getPopupHeight());
                                break;
                            case "maxWidth":
                                this._popup.option("maxWidth", this._getPopupMaxWidth());
                                break;
                            case "maxHeight":
                                this._popup.option("maxHeight", this._getPopupMaxHeight());
                                break;
                            case "minWidth":
                                this._popup.option("minWidth", this._getPopupMinWidth());
                                break;
                            case "minHeight":
                                this._popup.option("minHeight", this._getPopupMinHeight());
                                break;
                            case "isMobileView":
                                this._invalidate();
                                break;
                            case "isVisible":
                                this._updatePopupVisible();
                                break;
                            default:
                                _DiagramPanel.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_DiagramPanel.prototype._getDefaultOptions.call(this), {
                            isVisible: true,
                            isMobileView: false,
                            offsetX: 0,
                            offsetY: 0
                        })
                    };
                    return DiagramFloatingPanel
                }(_uiDiagram.default);
                var _default = DiagramFloatingPanel;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        57257:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.history_toolbar.js ***!
              \**************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _uiDiagram = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.toolbar */ 38148));
                var _diagram = _interopRequireDefault(__webpack_require__( /*! ./diagram.commands_manager */ 72321));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let DiagramHistoryToolbar = function(_DiagramToolbar) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(DiagramHistoryToolbar, _DiagramToolbar);

                    function DiagramHistoryToolbar() {
                        return _DiagramToolbar.apply(this, arguments) || this
                    }
                    var _proto = DiagramHistoryToolbar.prototype;
                    _proto._getCommands = function() {
                        return _diagram.default.getHistoryToolbarCommands(this.option("commands"), this._getExcludeCommands())
                    };
                    _proto._getExcludeCommands = function() {
                        const commands = [].concat(this.option("excludeCommands"));
                        if (!this.option("isMobileView")) {
                            commands.push(_diagram.default.SHOW_TOOLBOX_COMMAND_NAME)
                        }
                        return commands
                    };
                    return DiagramHistoryToolbar
                }(_uiDiagram.default);
                var _default = DiagramHistoryToolbar;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        83537:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.js ***!
              \**********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _load_indicator = _interopRequireDefault(__webpack_require__( /*! ../load_indicator */ 2492));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _data = __webpack_require__( /*! ../../core/utils/data */ 47617);
                var _position = _interopRequireDefault(__webpack_require__( /*! ../../animation/position */ 49387));
                var _diagram = __webpack_require__( /*! ./diagram.importer */ 348);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _element = __webpack_require__( /*! ../../core/element */ 6415);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _number = _interopRequireDefault(__webpack_require__( /*! ../../localization/number */ 18016));
                var zIndexPool = function(obj, nodeInterop) {
                    if (!nodeInterop && obj && obj.__esModule) {
                        return obj
                    }
                    if (null === obj || "object" !== typeof obj && "function" !== typeof obj) {
                        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 ("default" !== key && 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
                }(__webpack_require__( /*! ../overlay/z_index */ 85421));
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../overlay/ui.overlay */ 89799));
                var _uiDiagram = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.toolbar */ 38148));
                var _uiDiagram2 = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.main_toolbar */ 66156));
                var _uiDiagram3 = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.history_toolbar */ 57257));
                var _uiDiagram4 = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.view_toolbar */ 64225));
                var _uiDiagram5 = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.properties_toolbar */ 95463));
                var _uiDiagram6 = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.context_menu */ 33353));
                var _uiDiagram7 = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.context_toolbox */ 90978));
                var _uiDiagram8 = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.dialogs */ 46920));
                var _uiDiagram9 = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.scroll_view */ 66737));
                var _diagram2 = _interopRequireDefault(__webpack_require__( /*! ./diagram.toolbox_manager */ 63564));
                var _uiDiagram10 = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.toolbox */ 63842));
                var _uiDiagram11 = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.properties_panel */ 64863));
                var _diagram3 = _interopRequireDefault(__webpack_require__( /*! ./diagram.options_update */ 61982));
                var _uiDiagram12 = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.dialog_manager */ 34690));
                var _diagram4 = _interopRequireDefault(__webpack_require__( /*! ./diagram.commands_manager */ 72321));
                var _diagram5 = _interopRequireDefault(__webpack_require__( /*! ./diagram.nodes_option */ 81308));
                var _diagram6 = _interopRequireDefault(__webpack_require__( /*! ./diagram.edges_option */ 73510));

                function _getRequireWildcardCache(nodeInterop) {
                    if ("function" !== typeof WeakMap) {
                        return null
                    }
                    var cacheBabelInterop = new WeakMap;
                    var cacheNodeInterop = new WeakMap;
                    return (_getRequireWildcardCache = function(nodeInterop) {
                        return nodeInterop ? cacheNodeInterop : cacheBabelInterop
                    })(nodeInterop)
                }

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const FULLSCREEN_CHANGE_EVENT_NAME = (0, _index.addNamespace)("fullscreenchange", "dxDiagramEvent");
                const IE_FULLSCREEN_CHANGE_EVENT_NAME = (0, _index.addNamespace)("msfullscreenchange", "dxDiagramEvent");
                const WEBKIT_FULLSCREEN_CHANGE_EVENT_NAME = (0, _index.addNamespace)("webkitfullscreenchange", "dxDiagramEvent");
                const MOZ_FULLSCREEN_CHANGE_EVENT_NAME = (0, _index.addNamespace)("mozfullscreenchange", "dxDiagramEvent");
                let Diagram = function(_Widget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(Diagram, _Widget);

                    function Diagram() {
                        return _Widget.apply(this, arguments) || this
                    }
                    var _proto = Diagram.prototype;
                    _proto._init = function() {
                        this._updateDiagramLockCount = 0;
                        this.toggleFullscreenLock = 0;
                        this._toolbars = [];
                        _Widget.prototype._init.call(this);
                        this._initDiagram();
                        this._createCustomCommand()
                    };
                    _proto._initMarkup = function() {
                        _Widget.prototype._initMarkup.call(this);
                        this._toolbars = [];
                        delete this._isMobileScreenSize;
                        const isServerSide = !(0, _window.hasWindow)();
                        this.$element().addClass("dx-diagram");
                        delete this._mainToolbar;
                        if (this.option("mainToolbar.visible")) {
                            this._renderMainToolbar()
                        }
                        const $contentWrapper = (0, _renderer.default)("<div>").addClass("dx-diagram-content-wrapper").appendTo(this.$element());
                        delete this._historyToolbar;
                        delete this._historyToolbarResizeCallback;
                        if (this._isHistoryToolbarVisible()) {
                            this._renderHistoryToolbar($contentWrapper)
                        }
                        delete this._propertiesToolbar;
                        delete this._propertiesToolbarResizeCallback;
                        if (this._isPropertiesPanelEnabled()) {
                            this._renderPropertiesToolbar($contentWrapper)
                        }
                        delete this._viewToolbar;
                        delete this._viewToolbarResizeCallback;
                        if (this.option("viewToolbar.visible")) {
                            this._renderViewToolbar($contentWrapper)
                        }
                        delete this._toolbox;
                        delete this._toolboxResizeCallback;
                        if (this._isToolboxEnabled()) {
                            this._renderToolbox($contentWrapper)
                        }
                        delete this._propertiesPanel;
                        delete this._propertiesPanelResizeCallback;
                        if (this._isPropertiesPanelEnabled()) {
                            this._renderPropertiesPanel($contentWrapper)
                        }
                        this._$content = (0, _renderer.default)("<div>").addClass("dx-diagram-content").appendTo($contentWrapper);
                        delete this._contextMenu;
                        this._diagramInstance.settings.contextMenuEnabled = this.option("contextMenu.enabled");
                        if (this._diagramInstance.settings.contextMenuEnabled) {
                            this._renderContextMenu($contentWrapper)
                        }
                        delete this._contextToolbox;
                        if (this.option("contextToolbox.enabled")) {
                            this._renderContextToolbox($contentWrapper)
                        }
                        this._renderDialog($contentWrapper);
                        if (!isServerSide) {
                            const $scrollViewWrapper = (0, _renderer.default)("<div>").addClass("dx-diagram-scroll-view").appendTo(this._$content);
                            this._createComponent($scrollViewWrapper, _uiDiagram9.default, {
                                useNativeScrolling: this.option("useNativeScrolling"),
                                onCreateDiagram: e => {
                                    this._diagramInstance.createDocument(e.$parent[0], e.scrollView, $contentWrapper[0])
                                }
                            })
                        }
                        this._setCustomCommandChecked(_diagram4.default.SHOW_PROPERTIES_PANEL_COMMAND_NAME, this._isPropertiesPanelVisible());
                        this._setCustomCommandChecked(_diagram4.default.SHOW_TOOLBOX_COMMAND_NAME, this._isToolboxVisible());
                        this._createOptionsUpdateBar()
                    };
                    _proto._dimensionChanged = function() {
                        this._isMobileScreenSize = void 0;
                        this._processDiagramResize()
                    };
                    _proto._visibilityChanged = function(visible) {
                        if (visible) {
                            this._bindDiagramData();
                            this.repaint()
                        }
                    };
                    _proto._processDiagramResize = function() {
                        this._diagramInstance.onDimensionChanged();
                        if (this._historyToolbarResizeCallback) {
                            this._historyToolbarResizeCallback.call(this)
                        }
                        if (this._propertiesToolbarResizeCallback) {
                            this._propertiesToolbarResizeCallback.call(this)
                        }
                        if (this._propertiesPanelResizeCallback) {
                            this._propertiesPanelResizeCallback.call(this)
                        }
                        if (this._viewToolbarResizeCallback) {
                            this._viewToolbarResizeCallback.call(this)
                        }
                        if (this._toolboxResizeCallback) {
                            this._toolboxResizeCallback.call(this)
                        }
                    };
                    _proto.isMobileScreenSize = function() {
                        if (void 0 === this._isMobileScreenSize) {
                            this._isMobileScreenSize = (0, _window.hasWindow)() && (0, _size.getOuterWidth)(this.$element()) < 576
                        }
                        return this._isMobileScreenSize
                    };
                    _proto._captureFocus = function() {
                        if (this._diagramInstance) {
                            this._diagramInstance.captureFocus()
                        }
                    };
                    _proto._captureFocusOnTimeout = function() {
                        this._captureFocusTimeout = setTimeout(() => {
                            this._captureFocus();
                            delete this._captureFocusTimeout
                        }, 100)
                    };
                    _proto._killCaptureFocusTimeout = function() {
                        if (this._captureFocusTimeout) {
                            clearTimeout(this._captureFocusTimeout);
                            delete this._captureFocusTimeout
                        }
                    };
                    _proto.notifyBarCommandExecuted = function() {
                        this._captureFocusOnTimeout()
                    };
                    _proto._registerToolbar = function(component) {
                        this._registerBar(component);
                        this._toolbars.push(component)
                    };
                    _proto._registerBar = function(component) {
                        component.bar.onChanged.add(this);
                        this._diagramInstance.registerBar(component.bar)
                    };
                    _proto._getExcludeCommands = function() {
                        const excludeCommands = [];
                        if (!this._isToolboxEnabled()) {
                            excludeCommands.push(_diagram4.default.SHOW_TOOLBOX_COMMAND_NAME)
                        }
                        if (!this._isPropertiesPanelEnabled()) {
                            excludeCommands.push(_diagram4.default.SHOW_PROPERTIES_PANEL_COMMAND_NAME)
                        }
                        return excludeCommands
                    };
                    _proto._getToolbarBaseOptions = function() {
                        return {
                            onContentReady: _ref => {
                                let {
                                    component: component
                                } = _ref;
                                return this._registerToolbar(component)
                            },
                            onSubMenuVisibilityChanging: _ref2 => {
                                let {
                                    component: component
                                } = _ref2;
                                return this._diagramInstance.updateBarItemsState(component.bar)
                            },
                            onPointerUp: this._onPanelPointerUp.bind(this),
                            export: this.option("export"),
                            excludeCommands: this._getExcludeCommands(),
                            onInternalCommand: this._onInternalCommand.bind(this),
                            onCustomCommand: this._onCustomCommand.bind(this),
                            isMobileView: this.isMobileScreenSize()
                        }
                    };
                    _proto._onInternalCommand = function(e) {
                        switch (e.command) {
                            case _diagram4.default.SHOW_TOOLBOX_COMMAND_NAME:
                                if (this._toolbox) {
                                    this._toolbox.toggle()
                                }
                                break;
                            case _diagram4.default.SHOW_PROPERTIES_PANEL_COMMAND_NAME:
                                if (this._propertiesPanel) {
                                    this._propertiesPanel.toggle()
                                }
                        }
                    };
                    _proto._onCustomCommand = function(e) {
                        this._customCommandAction({
                            name: e.name
                        })
                    };
                    _proto._renderMainToolbar = function() {
                        const $toolbarWrapper = (0, _renderer.default)("<div>").addClass("dx-diagram-toolbar-wrapper").appendTo(this.$element());
                        this._mainToolbar = this._createComponent($toolbarWrapper, _uiDiagram2.default, (0, _extend.extend)(this._getToolbarBaseOptions(), {
                            commands: this.option("mainToolbar.commands"),
                            skipAdjustSize: true
                        }))
                    };
                    _proto._isHistoryToolbarVisible = function() {
                        return this.option("historyToolbar.visible") && !this.isReadOnlyMode()
                    };
                    _proto._renderHistoryToolbar = function($parent) {
                        const $container = (0, _renderer.default)("<div>").addClass("dx-diagram-floating-toolbar-container").appendTo($parent);
                        this._historyToolbar = this._createComponent($container, _uiDiagram3.default, (0, _extend.extend)(this._getToolbarBaseOptions(), {
                            commands: this.option("historyToolbar.commands"),
                            locateInMenu: "never"
                        }));
                        this._updateHistoryToolbarPosition();
                        this._historyToolbarResizeCallback = () => {
                            this._historyToolbar.option("isMobileView", this.isMobileScreenSize())
                        }
                    };
                    _proto._updateHistoryToolbarPosition = function() {
                        if (!(0, _window.hasWindow)()) {
                            return
                        }
                        _position.default.setup(this._historyToolbar.$element(), {
                            my: "left top",
                            at: "left top",
                            of: this._historyToolbar.$element().parent(),
                            offset: "12 12"
                        })
                    };
                    _proto._isToolboxEnabled = function() {
                        return "disabled" !== this.option("toolbox.visibility") && !this.isReadOnlyMode()
                    };
                    _proto._isToolboxVisible = function() {
                        return "visible" === this.option("toolbox.visibility") || "auto" === this.option("toolbox.visibility") && !this.isMobileScreenSize()
                    };
                    _proto._renderToolbox = function($parent) {
                        const isServerSide = !(0, _window.hasWindow)();
                        const $toolBox = (0, _renderer.default)("<div>").appendTo($parent);
                        const bounds = this._getToolboxBounds($parent, isServerSide);
                        this._toolbox = this._createComponent($toolBox, _uiDiagram10.default, {
                            isMobileView: this.isMobileScreenSize(),
                            isVisible: this._isToolboxVisible(),
                            container: this.$element(),
                            height: bounds.height,
                            offsetParent: $parent,
                            offsetX: bounds.offsetX,
                            offsetY: bounds.offsetY,
                            showSearch: this.option("toolbox.showSearch"),
                            toolboxGroups: this._getToolboxGroups(),
                            toolboxWidth: this.option("toolbox.width"),
                            onShapeCategoryRendered: e => {
                                if (isServerSide) {
                                    return
                                }
                                this._diagramInstance.createToolbox(e.$element[0], "texts" === e.displayMode, e.shapes || e.category, {
                                    shapeIconSpacing: 12,
                                    shapeIconCountInRow: this.option("toolbox.shapeIconsPerRow"),
                                    shapeIconAttributes: {
                                        "data-toggle": e.dataToggle
                                    }
                                })
                            },
                            onFilterChanged: e => {
                                if (isServerSide) {
                                    return
                                }
                                this._diagramInstance.applyToolboxFilter(e.text, e.filteringToolboxes)
                            },
                            onVisibilityChanging: e => {
                                if (isServerSide) {
                                    return
                                }
                                this._setCustomCommandChecked(_diagram4.default.SHOW_TOOLBOX_COMMAND_NAME, e.visible);
                                if (this._propertiesPanel) {
                                    if (e.visible && this.isMobileScreenSize()) {
                                        this._propertiesPanel.hide()
                                    }
                                }
                                if (this._historyToolbar) {
                                    if (e.visible && this.isMobileScreenSize()) {
                                        this._historyToolbarZIndex = zIndexPool.create(_ui2.default.baseZIndex());
                                        this._historyToolbar.$element().css("zIndex", this._historyToolbarZIndex);
                                        this._historyToolbar.$element().css("boxShadow", "none")
                                    }
                                }
                                if (this._viewToolbar) {
                                    this._viewToolbar.$element().css("opacity", e.visible && this.isMobileScreenSize() ? "0" : "1");
                                    this._viewToolbar.$element().css("pointerEvents", e.visible && this.isMobileScreenSize() ? "none" : "")
                                }
                            },
                            onVisibilityChanged: e => {
                                if (!e.visible && !this._textInputStarted) {
                                    this._captureFocus()
                                }
                                if (!isServerSide) {
                                    if (this._historyToolbar) {
                                        if (!e.visible && this.isMobileScreenSize() && this._historyToolbarZIndex) {
                                            zIndexPool.remove(this._historyToolbarZIndex);
                                            this._historyToolbar.$element().css("zIndex", "");
                                            this._historyToolbar.$element().css("boxShadow", "");
                                            this._historyToolbarZIndex = void 0
                                        }
                                    }
                                }
                            },
                            onPointerUp: this._onPanelPointerUp.bind(this)
                        });
                        this._toolbox._popup.option("propagateOutsideClick", !this.option("fullScreen"));
                        this._toolboxResizeCallback = () => {
                            const bounds = this._getToolboxBounds($parent, isServerSide);
                            this._toolbox.option("height", bounds.height);
                            const prevIsMobileView = this._toolbox.option("isMobileView");
                            if (prevIsMobileView !== this.isMobileScreenSize()) {
                                this._toolbox.option({
                                    isMobileView: this.isMobileScreenSize(),
                                    isVisible: this._isToolboxVisible()
                                });
                                this._setCustomCommandChecked(_diagram4.default.SHOW_TOOLBOX_COMMAND_NAME, this._isToolboxVisible())
                            }
                            this._toolbox.updateMaxHeight()
                        }
                    };
                    _proto._getToolboxBounds = function($parent, isServerSide) {
                        const result = {
                            offsetX: 12,
                            offsetY: 12,
                            height: !isServerSide ? (0, _size.getHeight)($parent) - 24 : 0
                        };
                        if (this._historyToolbar && !isServerSide) {
                            result.offsetY += (0, _size.getOuterHeight)(this._historyToolbar.$element()) + 12;
                            result.height -= (0, _size.getOuterHeight)(this._historyToolbar.$element()) + 12
                        }
                        if (this._viewToolbar && !isServerSide) {
                            result.height -= (0, _size.getOuterHeight)(this._viewToolbar.$element()) + this._getViewToolbarYOffset(isServerSide)
                        }
                        return result
                    };
                    _proto._renderViewToolbar = function($parent) {
                        const isServerSide = !(0, _window.hasWindow)();
                        const $container = (0, _renderer.default)("<div>").addClass("dx-diagram-floating-toolbar-container").appendTo($parent);
                        this._viewToolbar = this._createComponent($container, _uiDiagram4.default, (0, _extend.extend)(this._getToolbarBaseOptions(), {
                            commands: this.option("viewToolbar.commands"),
                            locateInMenu: "never"
                        }));
                        this._updateViewToolbarPosition($container, $parent, isServerSide);
                        this._viewToolbarResizeCallback = () => {
                            this._updateViewToolbarPosition($container, $parent, isServerSide)
                        }
                    };
                    _proto._getViewToolbarYOffset = function(isServerSide) {
                        if (isServerSide) {
                            return
                        }
                        let result = 12;
                        if (this._viewToolbar && this._propertiesToolbar) {
                            result += ((0, _size.getOuterHeight)(this._propertiesToolbar.$element()) - (0, _size.getOuterHeight)(this._viewToolbar.$element())) / 2
                        }
                        return result
                    };
                    _proto._updateViewToolbarPosition = function($container, $parent, isServerSide) {
                        if (isServerSide) {
                            return
                        }
                        _position.default.setup($container, {
                            my: "left bottom",
                            at: "left bottom",
                            of: $parent,
                            offset: "12 -" + this._getViewToolbarYOffset(isServerSide)
                        })
                    };
                    _proto._isPropertiesPanelEnabled = function() {
                        return "disabled" !== this.option("propertiesPanel.visibility") && !this.isReadOnlyMode()
                    };
                    _proto._isPropertiesPanelVisible = function() {
                        return "visible" === this.option("propertiesPanel.visibility")
                    };
                    _proto._renderPropertiesToolbar = function($parent) {
                        const isServerSide = !(0, _window.hasWindow)();
                        const $container = (0, _renderer.default)("<div>").addClass("dx-diagram-floating-toolbar-container").addClass("dx-diagram-properties-panel-toolbar-container").appendTo($parent);
                        this._propertiesToolbar = this._createComponent($container, _uiDiagram5.default, (0, _extend.extend)(this._getToolbarBaseOptions(), {
                            buttonStylingMode: "contained",
                            buttonType: "default",
                            locateInMenu: "never"
                        }));
                        this._updatePropertiesToolbarPosition($container, $parent, isServerSide);
                        this._propertiesToolbarResizeCallback = () => {
                            this._updatePropertiesToolbarPosition($container, $parent, isServerSide)
                        }
                    };
                    _proto._updatePropertiesToolbarPosition = function($container, $parent, isServerSide) {
                        if (isServerSide) {
                            return
                        }
                        _position.default.setup($container, {
                            my: "right bottom",
                            at: "right bottom",
                            of: $parent,
                            offset: "-12 -12"
                        })
                    };
                    _proto._renderPropertiesPanel = function($parent) {
                        const isServerSide = !(0, _window.hasWindow)();
                        const $propertiesPanel = (0, _renderer.default)("<div>").appendTo($parent);
                        const offsetY = 24 + (!isServerSide ? (0, _size.getOuterHeight)(this._propertiesToolbar.$element()) : 0);
                        this._propertiesPanel = this._createComponent($propertiesPanel, _uiDiagram11.default, {
                            isMobileView: this.isMobileScreenSize(),
                            isVisible: this._isPropertiesPanelVisible(),
                            container: this.$element(),
                            offsetParent: $parent,
                            offsetX: 12,
                            offsetY: offsetY,
                            propertyTabs: this.option("propertiesPanel.tabs"),
                            onCreateToolbar: e => {
                                e.toolbar = this._createComponent(e.$parent, _uiDiagram.default, (0, _extend.extend)(this._getToolbarBaseOptions(), {
                                    commands: e.commands,
                                    locateInMenu: "never",
                                    editorStylingMode: "outlined"
                                }))
                            },
                            onVisibilityChanging: e => {
                                if (isServerSide) {
                                    return
                                }
                                this._updatePropertiesPanelGroupBars(e.component);
                                this._setCustomCommandChecked(_diagram4.default.SHOW_PROPERTIES_PANEL_COMMAND_NAME, e.visible);
                                if (this._toolbox) {
                                    if (e.visible && this.isMobileScreenSize()) {
                                        this._toolbox.hide()
                                    }
                                }
                            },
                            onVisibilityChanged: e => {
                                if (!e.visible && !this._textInputStarted) {
                                    this._captureFocus()
                                }
                            },
                            onSelectedGroupChanged: _ref3 => {
                                let {
                                    component: component
                                } = _ref3;
                                return this._updatePropertiesPanelGroupBars(component)
                            },
                            onPointerUp: this._onPanelPointerUp.bind(this)
                        });
                        this._propertiesPanelResizeCallback = () => {
                            const prevIsMobileView = this._propertiesPanel.option("isMobileView");
                            if (prevIsMobileView !== this.isMobileScreenSize()) {
                                this._propertiesPanel.option({
                                    isMobileView: this.isMobileScreenSize(),
                                    isVisible: this._isPropertiesPanelVisible()
                                });
                                this._setCustomCommandChecked(_diagram4.default.SHOW_PROPERTIES_PANEL_COMMAND_NAME, this._isPropertiesPanelVisible())
                            }
                        }
                    };
                    _proto._updatePropertiesPanelGroupBars = function(component) {
                        component.getActiveToolbars().forEach(toolbar => {
                            this._diagramInstance.updateBarItemsState(toolbar.bar)
                        })
                    };
                    _proto._onPanelPointerUp = function() {
                        this._captureFocusOnTimeout()
                    };
                    _proto._renderContextMenu = function($parent) {
                        const $contextMenu = (0, _renderer.default)("<div>").appendTo($parent);
                        this._contextMenu = this._createComponent($contextMenu, _uiDiagram6.default.DiagramContextMenuWrapper, {
                            commands: this.option("contextMenu.commands"),
                            onContentReady: _ref4 => {
                                let {
                                    component: component
                                } = _ref4;
                                return this._registerBar(component)
                            },
                            onVisibilityChanging: _ref5 => {
                                let {
                                    component: component
                                } = _ref5;
                                return this._diagramInstance.updateBarItemsState(component.bar)
                            },
                            onItemClick: itemData => this._onBeforeCommandExecuted(itemData.command),
                            export: this.option("export"),
                            excludeCommands: this._getExcludeCommands(),
                            onInternalCommand: this._onInternalCommand.bind(this),
                            onCustomCommand: this._onCustomCommand.bind(this)
                        })
                    };
                    _proto._renderContextToolbox = function($parent) {
                        const isServerSide = !(0, _window.hasWindow)();
                        const category = this.option("contextToolbox.category");
                        const displayMode = this.option("contextToolbox.displayMode");
                        const shapes = this.option("contextToolbox.shapes");
                        const $contextToolbox = (0, _renderer.default)("<div>").appendTo($parent);
                        this._contextToolbox = this._createComponent($contextToolbox, _uiDiagram7.default, {
                            toolboxWidth: this.option("contextToolbox.width"),
                            onShown: e => {
                                if (isServerSide) {
                                    return
                                }
                                const $toolboxContainer = (0, _renderer.default)(e.$element);
                                let isTextGroup = "texts" === displayMode;
                                if (!shapes && !category && !isTextGroup) {
                                    const group = this._getToolboxGroups().filter((function(g) {
                                        return g.category === e.category
                                    }))[0];
                                    if (group) {
                                        isTextGroup = "texts" === group.displayMode
                                    }
                                }
                                this._diagramInstance.createContextToolbox($toolboxContainer[0], isTextGroup, shapes || category || e.category, {
                                    shapeIconSpacing: 12,
                                    shapeIconCountInRow: this.option("contextToolbox.shapeIconsPerRow")
                                }, shapeType => {
                                    e.callback(shapeType);
                                    this._captureFocus();
                                    e.hide()
                                })
                            }
                        })
                    };
                    _proto._setCustomCommandChecked = function(command, checked) {
                        this._toolbars.forEach(tb => {
                            tb.setCommandChecked(command, checked)
                        })
                    };
                    _proto._onBeforeCommandExecuted = function(command) {
                        const dialogParameters = _uiDiagram12.default.getDialogParameters(command);
                        if (dialogParameters) {
                            this._showDialog(dialogParameters)
                        }
                        return !!dialogParameters
                    };
                    _proto._renderDialog = function($parent) {
                        const $dialogElement = (0, _renderer.default)("<div>").appendTo($parent);
                        this._dialogInstance = this._createComponent($dialogElement, _uiDiagram8.default, {})
                    };
                    _proto._showDialog = function(dialogParameters) {
                        if (this._dialogInstance) {
                            this._dialogInstance.option("onGetContent", dialogParameters.onGetContent);
                            this._dialogInstance.option("onHidden", function() {
                                this._captureFocus()
                            }.bind(this));
                            this._dialogInstance.option("command", this._diagramInstance.getCommand(dialogParameters.command));
                            this._dialogInstance.option("title", dialogParameters.title);
                            this._dialogInstance._show()
                        }
                    };
                    _proto._showLoadingIndicator = function() {
                        this._loadingIndicator = (0, _renderer.default)("<div>").addClass("dx-diagram-loading-indicator");
                        this._createComponent(this._loadingIndicator, _load_indicator.default, {});
                        const $parent = this._$content || this.$element();
                        $parent.append(this._loadingIndicator)
                    };
                    _proto._hideLoadingIndicator = function() {
                        if (!this._loadingIndicator) {
                            return
                        }
                        this._loadingIndicator.remove();
                        this._loadingIndicator = null
                    };
                    _proto._initDiagram = function() {
                        const {
                            DiagramControl: DiagramControl
                        } = (0, _diagram.getDiagram)();
                        this._diagramInstance = new DiagramControl;
                        this._diagramInstance.onChanged = this._raiseDataChangeAction.bind(this);
                        this._diagramInstance.onEdgeInserted = this._raiseEdgeInsertedAction.bind(this);
                        this._diagramInstance.onEdgeUpdated = this._raiseEdgeUpdatedAction.bind(this);
                        this._diagramInstance.onEdgeRemoved = this._raiseEdgeRemovedAction.bind(this);
                        this._diagramInstance.onNodeInserted = this._raiseNodeInsertedAction.bind(this);
                        this._diagramInstance.onNodeUpdated = this._raiseNodeUpdatedAction.bind(this);
                        this._diagramInstance.onNodeRemoved = this._raiseNodeRemovedAction.bind(this);
                        this._diagramInstance.onToolboxDragStart = this._raiseToolboxDragStart.bind(this);
                        this._diagramInstance.onToolboxDragEnd = this._raiseToolboxDragEnd.bind(this);
                        this._diagramInstance.onTextInputStart = this._raiseTextInputStart.bind(this);
                        this._diagramInstance.onTextInputEnd = this._raiseTextInputEnd.bind(this);
                        this._diagramInstance.onToggleFullscreen = this._onToggleFullScreen.bind(this);
                        this._diagramInstance.onShowContextMenu = this._onShowContextMenu.bind(this);
                        this._diagramInstance.onHideContextMenu = this._onHideContextMenu.bind(this);
                        this._diagramInstance.onShowContextToolbox = this._onShowContextToolbox.bind(this);
                        this._diagramInstance.onHideContextToolbox = this._onHideContextToolbox.bind(this);
                        this._diagramInstance.onNativeAction.add({
                            notifyItemClick: this._raiseItemClickAction.bind(this),
                            notifyItemDblClick: this._raiseItemDblClickAction.bind(this),
                            notifySelectionChanged: this._raiseSelectionChanged.bind(this)
                        });
                        this._diagramInstance.onRequestOperation = this._raiseRequestEditOperation.bind(this);
                        this._updateEventSubscriptionMethods();
                        this._updateDefaultItemProperties();
                        this._updateEditingSettings();
                        this._updateShapeTexts();
                        this._updateUnitItems();
                        this._updateFormatUnitsMethod();
                        if ("in" !== this.option("units")) {
                            this._updateUnitsState()
                        }
                        if (this.isReadOnlyMode()) {
                            this._updateReadOnlyState()
                        }
                        if (this.option("pageSize")) {
                            if (this.option("pageSize.items")) {
                                this._updatePageSizeItemsState()
                            }
                            if (this.option("pageSize.width") && this.option("pageSize.height")) {
                                this._updatePageSizeState()
                            }
                        }
                        if ("portrait" !== this.option("pageOrientation")) {
                            this._updatePageOrientationState()
                        }
                        if ("#ffffff" !== this.option("pageColor")) {
                            this._updatePageColorState()
                        }
                        if ("in" !== this.option("viewUnits")) {
                            this._updateViewUnitsState()
                        }
                        if (!this.option("showGrid")) {
                            this._updateShowGridState()
                        }
                        if (!this.option("snapToGrid")) {
                            this._updateSnapToGridState()
                        }
                        if (this.option("gridSize")) {
                            this._updateGridSizeState()
                        }
                        if (1 !== this.option("zoomLevel")) {
                            this._updateZoomLevelState()
                        }
                        if (this.option("simpleView")) {
                            this._updateSimpleViewState()
                        }
                        if ("disabled" !== this.option("autoZoomMode")) {
                            this._updateAutoZoomState()
                        }
                        if (this.option("fullScreen")) {
                            const window = (0, _window.getWindow)();
                            if (window && window.self !== window.top) {
                                this.option("fullScreen", false)
                            } else {
                                this._updateFullscreenState()
                            }
                        }
                        this._createOptionsUpdateBar();
                        if ((0, _window.hasWindow)()) {
                            this._diagramInstance.initMeasurer(this.$element()[0])
                        }
                        this._updateCustomShapes(this._getCustomShapes());
                        this._refreshDataSources()
                    };
                    _proto._createOptionsUpdateBar = function() {
                        if (!this.optionsUpdateBar) {
                            this.optionsUpdateBar = new _diagram3.default(this);
                            this._diagramInstance.registerBar(this.optionsUpdateBar)
                        }
                    };
                    _proto._deleteOptionsUpdateBar = function() {
                        delete this.optionsUpdateBar
                    };
                    _proto._clean = function() {
                        if (this._diagramInstance) {
                            this._diagramInstance.cleanMarkup(element => {
                                (0, _renderer.default)(element).empty()
                            });
                            this._deleteOptionsUpdateBar()
                        }
                        _Widget.prototype._clean.call(this)
                    };
                    _proto._dispose = function() {
                        this._killCaptureFocusTimeout();
                        _Widget.prototype._dispose.call(this);
                        if (this._diagramInstance) {
                            this._diagramInstance.dispose();
                            this._diagramInstance = void 0
                        }
                    };
                    _proto._executeDiagramCommand = function(command, parameter) {
                        this._diagramInstance.getCommand(command).execute(parameter)
                    };
                    _proto.getNodeDataSource = function() {
                        return this._nodesOption && this._nodesOption.getDataSource()
                    };
                    _proto.getEdgeDataSource = function() {
                        return this._edgesOption && this._edgesOption.getDataSource()
                    };
                    _proto._refreshDataSources = function() {
                        this._beginUpdateDiagram();
                        this._refreshNodesDataSource();
                        this._refreshEdgesDataSource();
                        this._endUpdateDiagram()
                    };
                    _proto._refreshNodesDataSource = function() {
                        if (this._nodesOption) {
                            this._nodesOption._disposeDataSource();
                            delete this._nodesOption
                        }
                        if (this.option("nodes.dataSource")) {
                            this._nodesOption = new _diagram5.default(this);
                            this._nodesOption.option("dataSource", this.option("nodes.dataSource"));
                            this._nodesOption._refreshDataSource()
                        }
                    };
                    _proto._refreshEdgesDataSource = function() {
                        if (this._edgesOption) {
                            this._edgesOption._disposeDataSource();
                            delete this._edgesOption
                        }
                        if (this.option("edges.dataSource")) {
                            this._edgesOption = new _diagram6.default(this);
                            this._edgesOption.option("dataSource", this.option("edges.dataSource"));
                            this._edgesOption._refreshDataSource()
                        }
                    };
                    _proto._getDiagramData = function() {
                        let value;
                        const {
                            DiagramCommand: DiagramCommand
                        } = (0, _diagram.getDiagram)();
                        this._executeDiagramCommand(DiagramCommand.Export, (function(data) {
                            value = data
                        }));
                        return value
                    };
                    _proto._setDiagramData = function(data, keepExistingItems) {
                        const {
                            DiagramCommand: DiagramCommand
                        } = (0, _diagram.getDiagram)();
                        this._executeDiagramCommand(DiagramCommand.Import, {
                            data: data,
                            keepExistingItems: keepExistingItems
                        })
                    };
                    _proto.isReadOnlyMode = function() {
                        return this.option("readOnly") || this.option("disabled")
                    };
                    _proto._onDataSourceChanged = function() {
                        this._bindDiagramData()
                    };
                    _proto._getChangesKeys = function(changes) {
                        return changes.map(change => {
                            if ((0, _type.isDefined)(change.internalKey)) {
                                return change.internalKey
                            } else if ((0, _type.isDefined)(change.key)) {
                                return change.key
                            } else {
                                return null
                            }
                        }).filter(key => (0, _type.isDefined)(key))
                    };
                    _proto._createOptionGetter = function(optionName) {
                        const expr = this.option(optionName);
                        return expr && (0, _data.compileGetter)(expr)
                    };
                    _proto._onRequestUpdateLayout = function(changes) {
                        if (!this._requestLayoutUpdateAction) {
                            this._createRequestLayoutUpdateAction()
                        }
                        const eventArgs = {
                            changes: changes,
                            allowed: false
                        };
                        this._requestLayoutUpdateAction(eventArgs);
                        return eventArgs.allowed
                    };
                    _proto._createOptionSetter = function(optionName) {
                        const expr = this.option(optionName);
                        if ((0, _type.isFunction)(expr)) {
                            return expr
                        }
                        return expr && (0, _data.compileSetter)(expr)
                    };
                    _proto._bindDiagramData = function() {
                        if (this._updateDiagramLockCount || !this._isBindingMode()) {
                            return
                        }
                        const {
                            DiagramCommand: DiagramCommand,
                            ConnectorLineOption: ConnectorLineOption,
                            ConnectorLineEnding: ConnectorLineEnding
                        } = (0, _diagram.getDiagram)();
                        let lineOptionGetter;
                        let lineOptionSetter;
                        let startLineEndingGetter;
                        let startLineEndingSetter;
                        let endLineEndingGetter;
                        let endLineEndingSetter;
                        let containerChildrenGetter;
                        let containerChildrenSetter;
                        const data = {
                            nodeDataSource: this._nodesOption && this._nodesOption.getItems(),
                            edgeDataSource: this._edgesOption && this._edgesOption.getItems(),
                            nodeDataImporter: {
                                getKey: this._createOptionGetter("nodes.keyExpr"),
                                setKey: this._createOptionSetter("nodes.keyExpr"),
                                getCustomData: this._createOptionGetter("nodes.customDataExpr"),
                                setCustomData: this._createOptionSetter("nodes.customDataExpr"),
                                getLocked: this._createOptionGetter("nodes.lockedExpr"),
                                setLocked: this._createOptionSetter("nodes.lockedExpr"),
                                getStyle: this._createOptionGetter("nodes.styleExpr"),
                                setStyle: this._createOptionSetter("nodes.styleExpr"),
                                getStyleText: this._createOptionGetter("nodes.textStyleExpr"),
                                setStyleText: this._createOptionSetter("nodes.textStyleExpr"),
                                getZIndex: this._createOptionGetter("nodes.zIndexExpr"),
                                setZIndex: this._createOptionSetter("nodes.zIndexExpr"),
                                getType: this._createOptionGetter("nodes.typeExpr"),
                                setType: this._createOptionSetter("nodes.typeExpr"),
                                getText: this._createOptionGetter("nodes.textExpr"),
                                setText: this._createOptionSetter("nodes.textExpr"),
                                getImage: this._createOptionGetter("nodes.imageUrlExpr"),
                                setImage: this._createOptionSetter("nodes.imageUrlExpr"),
                                getLeft: this._createOptionGetter("nodes.leftExpr"),
                                setLeft: this._createOptionSetter("nodes.leftExpr"),
                                getTop: this._createOptionGetter("nodes.topExpr"),
                                setTop: this._createOptionSetter("nodes.topExpr"),
                                getWidth: this._createOptionGetter("nodes.widthExpr"),
                                setWidth: this._createOptionSetter("nodes.widthExpr"),
                                getHeight: this._createOptionGetter("nodes.heightExpr"),
                                setHeight: this._createOptionSetter("nodes.heightExpr"),
                                getParentKey: this._createOptionGetter("nodes.parentKeyExpr"),
                                setParentKey: this._createOptionSetter("nodes.parentKeyExpr"),
                                getItems: this._createOptionGetter("nodes.itemsExpr"),
                                setItems: this._createOptionSetter("nodes.itemsExpr"),
                                getChildren: containerChildrenGetter = this._createOptionGetter("nodes.containerChildrenExpr"),
                                setChildren: containerChildrenSetter = this._createOptionSetter("nodes.containerChildrenExpr"),
                                getContainerKey: !containerChildrenGetter && !containerChildrenSetter && this._createOptionGetter("nodes.containerKeyExpr"),
                                setContainerKey: !containerChildrenGetter && !containerChildrenSetter && this._createOptionSetter("nodes.containerKeyExpr")
                            },
                            edgeDataImporter: {
                                getKey: this._createOptionGetter("edges.keyExpr"),
                                setKey: this._createOptionSetter("edges.keyExpr"),
                                getCustomData: this._createOptionGetter("edges.customDataExpr"),
                                setCustomData: this._createOptionSetter("edges.customDataExpr"),
                                getLocked: this._createOptionGetter("edges.lockedExpr"),
                                setLocked: this._createOptionSetter("edges.lockedExpr"),
                                getStyle: this._createOptionGetter("edges.styleExpr"),
                                setStyle: this._createOptionSetter("edges.styleExpr"),
                                getStyleText: this._createOptionGetter("edges.textStyleExpr"),
                                setStyleText: this._createOptionSetter("edges.textStyleExpr"),
                                getZIndex: this._createOptionGetter("edges.zIndexExpr"),
                                setZIndex: this._createOptionSetter("edges.zIndexExpr"),
                                getFrom: this._createOptionGetter("edges.fromExpr"),
                                setFrom: this._createOptionSetter("edges.fromExpr"),
                                getFromPointIndex: this._createOptionGetter("edges.fromPointIndexExpr"),
                                setFromPointIndex: this._createOptionSetter("edges.fromPointIndexExpr"),
                                getTo: this._createOptionGetter("edges.toExpr"),
                                setTo: this._createOptionSetter("edges.toExpr"),
                                getToPointIndex: this._createOptionGetter("edges.toPointIndexExpr"),
                                setToPointIndex: this._createOptionSetter("edges.toPointIndexExpr"),
                                getPoints: this._createOptionGetter("edges.pointsExpr"),
                                setPoints: this._createOptionSetter("edges.pointsExpr"),
                                getText: this._createOptionGetter("edges.textExpr"),
                                setText: this._createOptionSetter("edges.textExpr"),
                                getLineOption: (lineOptionGetter = this._createOptionGetter("edges.lineTypeExpr")) && function(obj) {
                                    const lineType = lineOptionGetter(obj);
                                    return this._getConnectorLineOption(lineType)
                                }.bind(this),
                                setLineOption: (lineOptionSetter = this._createOptionSetter("edges.lineTypeExpr")) && function(obj, value) {
                                    switch (value) {
                                        case ConnectorLineOption.Straight:
                                            value = "straight";
                                            break;
                                        case ConnectorLineOption.Orthogonal:
                                            value = "orthogonal"
                                    }
                                    lineOptionSetter(obj, value)
                                }.bind(this),
                                getStartLineEnding: (startLineEndingGetter = this._createOptionGetter("edges.fromLineEndExpr")) && function(obj) {
                                    const lineEnd = startLineEndingGetter(obj);
                                    return this._getConnectorLineEnding(lineEnd)
                                }.bind(this),
                                setStartLineEnding: (startLineEndingSetter = this._createOptionSetter("edges.fromLineEndExpr")) && function(obj, value) {
                                    switch (value) {
                                        case ConnectorLineEnding.Arrow:
                                            value = "arrow";
                                            break;
                                        case ConnectorLineEnding.OutlinedTriangle:
                                            value = "outlinedTriangle";
                                            break;
                                        case ConnectorLineEnding.FilledTriangle:
                                            value = "filledTriangle";
                                            break;
                                        case ConnectorLineEnding.None:
                                            value = "none"
                                    }
                                    startLineEndingSetter(obj, value)
                                }.bind(this),
                                getEndLineEnding: (endLineEndingGetter = this._createOptionGetter("edges.toLineEndExpr")) && function(obj) {
                                    const lineEnd = endLineEndingGetter(obj);
                                    return this._getConnectorLineEnding(lineEnd)
                                }.bind(this),
                                setEndLineEnding: (endLineEndingSetter = this._createOptionSetter("edges.toLineEndExpr")) && function(obj, value) {
                                    switch (value) {
                                        case ConnectorLineEnding.Arrow:
                                            value = "arrow";
                                            break;
                                        case ConnectorLineEnding.OutlinedTriangle:
                                            value = "outlinedTriangle";
                                            break;
                                        case ConnectorLineEnding.FilledTriangle:
                                            value = "filledTriangle";
                                            break;
                                        case ConnectorLineEnding.None:
                                            value = "none"
                                    }
                                    endLineEndingSetter(obj, value)
                                }.bind(this)
                            },
                            layoutParameters: this._getDataBindingLayoutParameters()
                        };
                        if (data.nodeDataSource) {
                            this._executeDiagramCommand(DiagramCommand.BindDocument, data)
                        }
                    };
                    _proto._reloadContentByChanges = function(changes, isExternalChanges) {
                        const keys = this._getChangesKeys(changes);
                        const applyLayout = this._onRequestUpdateLayout(changes);
                        this._reloadContent(keys, applyLayout, isExternalChanges)
                    };
                    _proto._reloadContent = function(itemKeys, applyLayout, isExternalChanges) {
                        this._diagramInstance.reloadContent(itemKeys, () => {
                            let nodeDataSource;
                            let edgeDataSource;
                            if (this._nodesOption && isExternalChanges) {
                                nodeDataSource = this._nodesOption.getItems()
                            }
                            if (this._edgesOption && isExternalChanges) {
                                edgeDataSource = this._edgesOption.getItems()
                            }
                            return {
                                nodeDataSource: nodeDataSource,
                                edgeDataSource: edgeDataSource
                            }
                        }, applyLayout && this._getDataBindingLayoutParameters(), isExternalChanges)
                    };
                    _proto._getConnectorLineOption = function(lineType) {
                        const {
                            ConnectorLineOption: ConnectorLineOption
                        } = (0, _diagram.getDiagram)();
                        switch (lineType) {
                            case "straight":
                                return ConnectorLineOption.Straight;
                            default:
                                return ConnectorLineOption.Orthogonal
                        }
                    };
                    _proto._getConnectorLineEnding = function(lineEnd) {
                        const {
                            ConnectorLineEnding: ConnectorLineEnding
                        } = (0, _diagram.getDiagram)();
                        switch (lineEnd) {
                            case "arrow":
                                return ConnectorLineEnding.Arrow;
                            case "outlinedTriangle":
                                return ConnectorLineEnding.OutlinedTriangle;
                            case "filledTriangle":
                                return ConnectorLineEnding.FilledTriangle;
                            default:
                                return ConnectorLineEnding.None
                        }
                    };
                    _proto._getDataBindingLayoutParameters = function() {
                        const {
                            DataLayoutType: DataLayoutType,
                            DataLayoutOrientation: DataLayoutOrientation
                        } = (0, _diagram.getDiagram)();
                        const layoutParametersOption = this.option("nodes.autoLayout") || "off";
                        const layoutType = layoutParametersOption.type || layoutParametersOption;
                        const parameters = {};
                        if ("off" !== layoutType && ("auto" !== layoutType || !this._hasNodePositionExprs())) {
                            switch (layoutType) {
                                case "tree":
                                    parameters.type = DataLayoutType.Tree;
                                    break;
                                default:
                                    parameters.type = DataLayoutType.Sugiyama
                            }
                            switch (layoutParametersOption.orientation) {
                                case "vertical":
                                    parameters.orientation = DataLayoutOrientation.Vertical;
                                    break;
                                case "horizontal":
                                    parameters.orientation = DataLayoutOrientation.Horizontal
                            }
                            if (this.option("edges.fromPointIndexExpr") || this.option("edges.toPointIndexExpr")) {
                                parameters.skipPointIndices = true
                            }
                        }
                        parameters.autoSizeEnabled = !!this.option("nodes.autoSizeEnabled");
                        return parameters
                    };
                    _proto._hasNodePositionExprs = function() {
                        return this.option("nodes.topExpr") && this.option("nodes.leftExpr")
                    };
                    _proto._getAutoZoomValue = function(option) {
                        const {
                            AutoZoomMode: AutoZoomMode
                        } = (0, _diagram.getDiagram)();
                        switch (option) {
                            case "fitContent":
                                return AutoZoomMode.FitContent;
                            case "fitWidth":
                                return AutoZoomMode.FitToWidth;
                            default:
                                return AutoZoomMode.Disabled
                        }
                    };
                    _proto._isBindingMode = function() {
                        return this._nodesOption && this._nodesOption.hasItems() || this._edgesOption && this._edgesOption.hasItems()
                    };
                    _proto._beginUpdateDiagram = function() {
                        this._updateDiagramLockCount++
                    };
                    _proto._endUpdateDiagram = function() {
                        this._updateDiagramLockCount = Math.max(this._updateDiagramLockCount - 1, 0);
                        if (!this._updateDiagramLockCount) {
                            this._bindDiagramData()
                        }
                    };
                    _proto._getCustomShapes = function() {
                        return this.option("customShapes") || []
                    };
                    _proto._getToolboxGroups = function() {
                        return _diagram2.default.getGroups(this.option("toolbox.groups"))
                    };
                    _proto._updateAllCustomShapes = function() {
                        this._diagramInstance.removeAllCustomShapes();
                        this._updateCustomShapes(this._getCustomShapes())
                    };
                    _proto._updateCustomShapes = function(customShapes, prevCustomShapes) {
                        if (Array.isArray(prevCustomShapes)) {
                            this._diagramInstance.removeCustomShapes(prevCustomShapes.map(s => s.type))
                        }
                        if (Array.isArray(customShapes)) {
                            this._diagramInstance.addCustomShapes(customShapes.map(s => {
                                const templateOption = s.template || this.option("customShapeTemplate");
                                const template = templateOption && this._getTemplate(templateOption);
                                const toolboxTemplateOption = s.toolboxTemplate || this.option("customShapeToolboxTemplate");
                                const toolboxTemplate = toolboxTemplateOption && this._getTemplate(toolboxTemplateOption);
                                return {
                                    category: s.category,
                                    type: s.type,
                                    baseType: s.baseType,
                                    title: s.title,
                                    svgUrl: s.backgroundImageUrl,
                                    svgToolboxUrl: s.backgroundImageToolboxUrl,
                                    svgLeft: s.backgroundImageLeft,
                                    svgTop: s.backgroundImageTop,
                                    svgWidth: s.backgroundImageWidth,
                                    svgHeight: s.backgroundImageHeight,
                                    defaultWidth: s.defaultWidth,
                                    defaultHeight: s.defaultHeight,
                                    toolboxWidthToHeightRatio: s.toolboxWidthToHeightRatio,
                                    minWidth: s.minWidth,
                                    minHeight: s.minHeight,
                                    maxWidth: s.maxWidth,
                                    maxHeight: s.maxHeight,
                                    allowResize: s.allowResize,
                                    defaultText: s.defaultText,
                                    allowEditText: s.allowEditText,
                                    textLeft: s.textLeft,
                                    textTop: s.textTop,
                                    textWidth: s.textWidth,
                                    textHeight: s.textHeight,
                                    defaultImageUrl: s.defaultImageUrl,
                                    allowEditImage: s.allowEditImage,
                                    imageLeft: s.imageLeft,
                                    imageTop: s.imageTop,
                                    imageWidth: s.imageWidth,
                                    imageHeight: s.imageHeight,
                                    connectionPoints: s.connectionPoints && s.connectionPoints.map(pt => ({
                                        x: pt.x,
                                        y: pt.y
                                    })),
                                    createTemplate: template && ((container, item) => {
                                        template.render({
                                            model: this._nativeItemToDiagramItem(item),
                                            container: (0, _element.getPublicElement)((0, _renderer.default)(container))
                                        })
                                    }),
                                    createToolboxTemplate: toolboxTemplate && ((container, item) => {
                                        toolboxTemplate.render({
                                            model: this._nativeItemToDiagramItem(item),
                                            container: (0, _element.getPublicElement)((0, _renderer.default)(container))
                                        })
                                    }),
                                    destroyTemplate: template && (container => {
                                        (0, _renderer.default)(container).empty()
                                    }),
                                    templateLeft: s.templateLeft,
                                    templateTop: s.templateTop,
                                    templateWidth: s.templateWidth,
                                    templateHeight: s.templateHeight,
                                    keepRatioOnAutoSize: s.keepRatioOnAutoSize
                                }
                            }))
                        }
                    };
                    _proto._getViewport = function() {
                        const $viewPort = this.$element().closest(".dx-viewport");
                        return $viewPort.length ? $viewPort : (0, _renderer.default)("body")
                    };
                    _proto._onToggleFullScreen = function(fullScreen) {
                        if (this.toggleFullscreenLock > 0) {
                            return
                        }
                        this._changeNativeFullscreen(fullScreen);
                        if (fullScreen) {
                            this._prevParent = this.$element().parent();
                            this._prevFullScreenZIndex = this.$element().css("zIndex");
                            this._fullScreenZIndex = zIndexPool.create(_ui2.default.baseZIndex());
                            this.$element().css("zIndex", this._fullScreenZIndex);
                            this.$element().appendTo(this._getViewport())
                        } else {
                            this.$element().appendTo(this._prevParent);
                            if (this._fullScreenZIndex) {
                                zIndexPool.remove(this._fullScreenZIndex);
                                this.$element().css("zIndex", this._prevFullScreenZIndex)
                            }
                        }
                        this.$element().toggleClass("dx-diagram-fullscreen", fullScreen);
                        this._processDiagramResize();
                        if (this._toolbox) {
                            this._toolbox.repaint();
                            this._toolbox._popup.option("propagateOutsideClick", !fullScreen)
                        }
                        if (this._propertiesPanel) {
                            this._propertiesPanel.repaint()
                        }
                        if (this._historyToolbar) {
                            this._updateHistoryToolbarPosition()
                        }
                    };
                    _proto._changeNativeFullscreen = function(setModeOn) {
                        const window = (0, _window.getWindow)();
                        if (window.self === window.top || setModeOn === this._inNativeFullscreen()) {
                            return
                        }
                        if (setModeOn) {
                            this._subscribeFullscreenNativeChanged()
                        } else {
                            this._unsubscribeFullscreenNativeChanged()
                        }
                        this._setNativeFullscreen(setModeOn)
                    };
                    _proto._setNativeFullscreen = function(on) {
                        const window = (0, _window.getWindow)();
                        const document = window.self.document;
                        const body = window.self.document.body;
                        if (on) {
                            if (body.requestFullscreen) {
                                body.requestFullscreen()
                            } else if (body.mozRequestFullscreen) {
                                body.mozRequestFullscreen()
                            } else if (body.webkitRequestFullscreen) {
                                body.webkitRequestFullscreen()
                            } else if (body.msRequestFullscreen) {
                                body.msRequestFullscreen()
                            }
                        } else if (document.exitFullscreen) {
                            document.exitFullscreen()
                        } else if (document.mozCancelFullscreen) {
                            document.mozCancelFullscreen()
                        } else if (document.webkitExitFullscreen) {
                            document.webkitExitFullscreen()
                        } else if (document.msExitFullscreen) {
                            document.msExitFullscreen()
                        }
                    };
                    _proto._inNativeFullscreen = function() {
                        const document = (0, _window.getWindow)().document;
                        const fullscreenElement = document.fullscreenElement || document.msFullscreenElement || document.webkitFullscreenElement;
                        const isInFullscreen = fullscreenElement === document.body || document.webkitIsFullscreen;
                        return !!isInFullscreen
                    };
                    _proto._subscribeFullscreenNativeChanged = function() {
                        const document = (0, _window.getWindow)().document;
                        const handler = this._onNativeFullscreenChangeHandler.bind(this);
                        _events_engine.default.on(document, FULLSCREEN_CHANGE_EVENT_NAME, handler);
                        _events_engine.default.on(document, IE_FULLSCREEN_CHANGE_EVENT_NAME, handler);
                        _events_engine.default.on(document, WEBKIT_FULLSCREEN_CHANGE_EVENT_NAME, handler);
                        _events_engine.default.on(document, MOZ_FULLSCREEN_CHANGE_EVENT_NAME, handler)
                    };
                    _proto._unsubscribeFullscreenNativeChanged = function() {
                        const document = (0, _window.getWindow)().document;
                        _events_engine.default.off(document, FULLSCREEN_CHANGE_EVENT_NAME);
                        _events_engine.default.off(document, IE_FULLSCREEN_CHANGE_EVENT_NAME);
                        _events_engine.default.off(document, WEBKIT_FULLSCREEN_CHANGE_EVENT_NAME);
                        _events_engine.default.off(document, MOZ_FULLSCREEN_CHANGE_EVENT_NAME)
                    };
                    _proto._onNativeFullscreenChangeHandler = function() {
                        if (!this._inNativeFullscreen()) {
                            this._unsubscribeFullscreenNativeChanged();
                            this.option("fullScreen", false)
                        }
                    };
                    _proto._executeDiagramFullscreenCommand = function(fullscreen) {
                        const {
                            DiagramCommand: DiagramCommand
                        } = (0, _diagram.getDiagram)();
                        this.toggleFullscreenLock++;
                        this._executeDiagramCommand(DiagramCommand.Fullscreen, fullscreen);
                        this.toggleFullscreenLock--
                    };
                    _proto._onShowContextMenu = function(x, y, selection) {
                        if (this._contextMenu) {
                            this._contextMenu._show(x, y, selection)
                        }
                    };
                    _proto._onHideContextMenu = function() {
                        if (this._contextMenu) {
                            this._contextMenu._hide()
                        }
                    };
                    _proto._onShowContextToolbox = function(x, y, side, category, callback) {
                        if (this._contextToolbox) {
                            this._contextToolbox._show(x, y, side, category, callback)
                        }
                    };
                    _proto._onHideContextToolbox = function() {
                        if (this._contextToolbox) {
                            this._contextToolbox._hide()
                        }
                    };
                    _proto._getDiagramUnitValue = function(value) {
                        const {
                            DiagramUnit: DiagramUnit
                        } = (0, _diagram.getDiagram)();
                        switch (value) {
                            case "in":
                                return DiagramUnit.In;
                            case "cm":
                                return DiagramUnit.Cm;
                            case "px":
                                return DiagramUnit.Px;
                            default:
                                return DiagramUnit.In
                        }
                    };
                    _proto._updateReadOnlyState = function() {
                        const {
                            DiagramCommand: DiagramCommand
                        } = (0, _diagram.getDiagram)();
                        const readOnly = this.isReadOnlyMode();
                        this._executeDiagramCommand(DiagramCommand.ToggleReadOnly, readOnly)
                    };
                    _proto._updateZoomLevelState = function() {
                        if (this.option("zoomLevel.items")) {
                            this._updateZoomLevelItemsState();
                            const zoomLevel = this.option("zoomLevel.value");
                            if (!zoomLevel) {
                                return
                            }
                            const {
                                DiagramCommand: DiagramCommand
                            } = (0, _diagram.getDiagram)();
                            this._executeDiagramCommand(DiagramCommand.ZoomLevel, zoomLevel)
                        } else {
                            const zoomLevel = this.option("zoomLevel.value") || this.option("zoomLevel");
                            if (!zoomLevel) {
                                return
                            }
                            const {
                                DiagramCommand: DiagramCommand
                            } = (0, _diagram.getDiagram)();
                            this._executeDiagramCommand(DiagramCommand.ZoomLevel, zoomLevel)
                        }
                    };
                    _proto._updateZoomLevelItemsState = function() {
                        const zoomLevelItems = this.option("zoomLevel.items");
                        if (!Array.isArray(zoomLevelItems)) {
                            return
                        }
                        const {
                            DiagramCommand: DiagramCommand
                        } = (0, _diagram.getDiagram)();
                        this._executeDiagramCommand(DiagramCommand.ZoomLevelItems, zoomLevelItems)
                    };
                    _proto._updateAutoZoomState = function() {
                        const {
                            DiagramCommand: DiagramCommand
                        } = (0, _diagram.getDiagram)();
                        this._executeDiagramCommand(DiagramCommand.SwitchAutoZoom, this._getAutoZoomValue(this.option("autoZoomMode")))
                    };
                    _proto._updateSimpleViewState = function() {
                        const {
                            DiagramCommand: DiagramCommand
                        } = (0, _diagram.getDiagram)();
                        this._executeDiagramCommand(DiagramCommand.ToggleSimpleView, this.option("simpleView"))
                    };
                    _proto._updateFullscreenState = function() {
                        const fullscreen = this.option("fullScreen");
                        this._executeDiagramFullscreenCommand(fullscreen);
                        this._onToggleFullScreen(fullscreen)
                    };
                    _proto._updateShowGridState = function() {
                        const {
                            DiagramCommand: DiagramCommand
                        } = (0, _diagram.getDiagram)();
                        this._executeDiagramCommand(DiagramCommand.ShowGrid, this.option("showGrid"))
                    };
                    _proto._updateSnapToGridState = function() {
                        const {
                            DiagramCommand: DiagramCommand
                        } = (0, _diagram.getDiagram)();
                        this._executeDiagramCommand(DiagramCommand.SnapToGrid, this.option("snapToGrid"))
                    };
                    _proto._updateGridSizeState = function() {
                        if (this.option("gridSize.items")) {
                            this._updateGridSizeItemsState();
                            const gridSize = this.option("gridSize.value");
                            if (!gridSize) {
                                return
                            }
                            const {
                                DiagramCommand: DiagramCommand
                            } = (0, _diagram.getDiagram)();
                            this._executeDiagramCommand(DiagramCommand.GridSize, gridSize)
                        } else {
                            const gridSize = this.option("gridSize.value") || this.option("gridSize");
                            if (!gridSize) {
                                return
                            }
                            const {
                                DiagramCommand: DiagramCommand
                            } = (0, _diagram.getDiagram)();
                            this._executeDiagramCommand(DiagramCommand.GridSize, gridSize)
                        }
                    };
                    _proto._updateGridSizeItemsState = function() {
                        const gridSizeItems = this.option("gridSize.items");
                        if (!Array.isArray(gridSizeItems)) {
                            return
                        }
                        const {
                            DiagramCommand: DiagramCommand
                        } = (0, _diagram.getDiagram)();
                        this._executeDiagramCommand(DiagramCommand.GridSizeItems, gridSizeItems)
                    };
                    _proto._updateUnitItems = function() {
                        const {
                            DiagramLocalizationService: DiagramLocalizationService
                        } = (0, _diagram.getDiagram)();
                        const items = this._getUnitItems();
                        if (this._unitItems !== items) {
                            this._unitItems = items;
                            DiagramLocalizationService.unitItems = items
                        }
                    };
                    _proto._getUnitItems = function() {
                        const {
                            DiagramUnit: DiagramUnit
                        } = (0, _diagram.getDiagram)();
                        const items = {};
                        items[DiagramUnit.In] = _message.default.format("dxDiagram-unitIn");
                        items[DiagramUnit.Cm] = _message.default.format("dxDiagram-unitCm");
                        items[DiagramUnit.Px] = _message.default.format("dxDiagram-unitPx");
                        return items
                    };
                    _proto._updateFormatUnitsMethod = function() {
                        const {
                            DiagramLocalizationService: DiagramLocalizationService
                        } = (0, _diagram.getDiagram)();
                        DiagramLocalizationService.formatUnit = function(value) {
                            return _number.default.format(value)
                        }
                    };
                    _proto._updateViewUnitsState = function() {
                        const {
                            DiagramCommand: DiagramCommand
                        } = (0, _diagram.getDiagram)();
                        this._executeDiagramCommand(DiagramCommand.ViewUnits, this._getDiagramUnitValue(this.option("viewUnits")))
                    };
                    _proto._updateUnitsState = function() {
                        const {
                            DiagramCommand: DiagramCommand
                        } = (0, _diagram.getDiagram)();
                        this._executeDiagramCommand(DiagramCommand.Units, this._getDiagramUnitValue(this.option("units")))
                    };
                    _proto._updatePageSizeState = function() {
                        const pageSize = this.option("pageSize");
                        if (!pageSize || !pageSize.width || !pageSize.height) {
                            return
                        }
                        const {
                            DiagramCommand: DiagramCommand
                        } = (0, _diagram.getDiagram)();
                        this._executeDiagramCommand(DiagramCommand.PageSize, pageSize)
                    };
                    _proto._updatePageSizeItemsState = function() {
                        const pageSizeItems = this.option("pageSize.items");
                        if (!Array.isArray(pageSizeItems)) {
                            return
                        }
                        const {
                            DiagramCommand: DiagramCommand
                        } = (0, _diagram.getDiagram)();
                        this._executeDiagramCommand(DiagramCommand.PageSizeItems, pageSizeItems)
                    };
                    _proto._updatePageOrientationState = function() {
                        const {
                            DiagramCommand: DiagramCommand
                        } = (0, _diagram.getDiagram)();
                        this._executeDiagramCommand(DiagramCommand.PageLandscape, "landscape" === this.option("pageOrientation"))
                    };
                    _proto._updatePageColorState = function() {
                        const {
                            DiagramCommand: DiagramCommand
                        } = (0, _diagram.getDiagram)();
                        this._executeDiagramCommand(DiagramCommand.PageColor, this.option("pageColor"))
                    };
                    _proto._updateShapeTexts = function() {
                        const {
                            DiagramLocalizationService: DiagramLocalizationService
                        } = (0, _diagram.getDiagram)();
                        const texts = this._getShapeTexts();
                        if (this._shapeTexts !== texts) {
                            this._shapeTexts = texts;
                            DiagramLocalizationService.shapeTexts = texts
                        }
                    };
                    _proto._getShapeTexts = function() {
                        const {
                            ShapeTypes: ShapeTypes
                        } = (0, _diagram.getDiagram)();
                        const texts = {};
                        texts[ShapeTypes.Text] = _message.default.format("dxDiagram-shapeText");
                        texts[ShapeTypes.Rectangle] = _message.default.format("dxDiagram-shapeRectangle");
                        texts[ShapeTypes.Ellipse] = _message.default.format("dxDiagram-shapeEllipse");
                        texts[ShapeTypes.Cross] = _message.default.format("dxDiagram-shapeCross");
                        texts[ShapeTypes.Triangle] = _message.default.format("dxDiagram-shapeTriangle");
                        texts[ShapeTypes.Diamond] = _message.default.format("dxDiagram-shapeDiamond");
                        texts[ShapeTypes.Heart] = _message.default.format("dxDiagram-shapeHeart");
                        texts[ShapeTypes.Pentagon] = _message.default.format("dxDiagram-shapePentagon");
                        texts[ShapeTypes.Hexagon] = _message.default.format("dxDiagram-shapeHexagon");
                        texts[ShapeTypes.Octagon] = _message.default.format("dxDiagram-shapeOctagon");
                        texts[ShapeTypes.Star] = _message.default.format("dxDiagram-shapeStar");
                        texts[ShapeTypes.ArrowLeft] = _message.default.format("dxDiagram-shapeArrowLeft");
                        texts[ShapeTypes.ArrowUp] = _message.default.format("dxDiagram-shapeArrowUp");
                        texts[ShapeTypes.ArrowRight] = _message.default.format("dxDiagram-shapeArrowRight");
                        texts[ShapeTypes.ArrowDown] = _message.default.format("dxDiagram-shapeArrowDown");
                        texts[ShapeTypes.ArrowUpDown] = _message.default.format("dxDiagram-shapeArrowUpDown");
                        texts[ShapeTypes.ArrowLeftRight] = _message.default.format("dxDiagram-shapeArrowLeftRight");
                        texts[ShapeTypes.Process] = _message.default.format("dxDiagram-shapeProcess");
                        texts[ShapeTypes.Decision] = _message.default.format("dxDiagram-shapeDecision");
                        texts[ShapeTypes.Terminator] = _message.default.format("dxDiagram-shapeTerminator");
                        texts[ShapeTypes.PredefinedProcess] = _message.default.format("dxDiagram-shapePredefinedProcess");
                        texts[ShapeTypes.Document] = _message.default.format("dxDiagram-shapeDocument");
                        texts[ShapeTypes.MultipleDocuments] = _message.default.format("dxDiagram-shapeMultipleDocuments");
                        texts[ShapeTypes.ManualInput] = _message.default.format("dxDiagram-shapeManualInput");
                        texts[ShapeTypes.Preparation] = _message.default.format("dxDiagram-shapePreparation");
                        texts[ShapeTypes.Data] = _message.default.format("dxDiagram-shapeData");
                        texts[ShapeTypes.Database] = _message.default.format("dxDiagram-shapeDatabase");
                        texts[ShapeTypes.HardDisk] = _message.default.format("dxDiagram-shapeHardDisk");
                        texts[ShapeTypes.InternalStorage] = _message.default.format("dxDiagram-shapeInternalStorage");
                        texts[ShapeTypes.PaperTape] = _message.default.format("dxDiagram-shapePaperTape");
                        texts[ShapeTypes.ManualOperation] = _message.default.format("dxDiagram-shapeManualOperation");
                        texts[ShapeTypes.Delay] = _message.default.format("dxDiagram-shapeDelay");
                        texts[ShapeTypes.StoredData] = _message.default.format("dxDiagram-shapeStoredData");
                        texts[ShapeTypes.Display] = _message.default.format("dxDiagram-shapeDisplay");
                        texts[ShapeTypes.Merge] = _message.default.format("dxDiagram-shapeMerge");
                        texts[ShapeTypes.Connector] = _message.default.format("dxDiagram-shapeConnector");
                        texts[ShapeTypes.Or] = _message.default.format("dxDiagram-shapeOr");
                        texts[ShapeTypes.SummingJunction] = _message.default.format("dxDiagram-shapeSummingJunction");
                        texts[ShapeTypes.Container] = _message.default.format("dxDiagram-shapeContainerDefaultText");
                        texts[ShapeTypes.VerticalContainer] = _message.default.format("dxDiagram-shapeVerticalContainer");
                        texts[ShapeTypes.HorizontalContainer] = _message.default.format("dxDiagram-shapeHorizontalContainer");
                        texts[ShapeTypes.Card] = _message.default.format("dxDiagram-shapeCardDefaultText");
                        texts[ShapeTypes.CardWithImageOnLeft] = _message.default.format("dxDiagram-shapeCardWithImageOnLeft");
                        texts[ShapeTypes.CardWithImageOnTop] = _message.default.format("dxDiagram-shapeCardWithImageOnTop");
                        texts[ShapeTypes.CardWithImageOnRight] = _message.default.format("dxDiagram-shapeCardWithImageOnRight");
                        return texts
                    };
                    _proto._updateEventSubscriptionMethods = function() {
                        const {
                            RenderHelper: RenderHelper
                        } = (0, _diagram.getDiagram)();
                        RenderHelper.addEventListener = (element, eventName, handler) => {
                            _events_engine.default.on(element, eventName, handler)
                        };
                        RenderHelper.removeEventListener = (element, eventName, handler) => {
                            _events_engine.default.off(element, eventName, handler)
                        }
                    };
                    _proto._updateDefaultItemProperties = function() {
                        if (this.option("defaultItemProperties.style")) {
                            this._diagramInstance.setInitialStyleProperties(this.option("defaultItemProperties.style"))
                        }
                        if (this.option("defaultItemProperties.textStyle")) {
                            this._diagramInstance.setInitialTextStyleProperties(this.option("defaultItemProperties.textStyle"))
                        }
                        this._diagramInstance.setInitialConnectorProperties({
                            lineOption: this._getConnectorLineOption(this.option("defaultItemProperties.connectorLineType")),
                            startLineEnding: this._getConnectorLineEnding(this.option("defaultItemProperties.connectorLineStart")),
                            endLineEnding: this._getConnectorLineEnding(this.option("defaultItemProperties.connectorLineEnd"))
                        });
                        this._diagramInstance.applyShapeSizeSettings({
                            shapeMinWidth: this.option("defaultItemProperties.shapeMinWidth"),
                            shapeMaxWidth: this.option("defaultItemProperties.shapeMaxWidth"),
                            shapeMinHeight: this.option("defaultItemProperties.shapeMinHeight"),
                            shapeMaxHeight: this.option("defaultItemProperties.shapeMaxHeight")
                        })
                    };
                    _proto._updateEditingSettings = function() {
                        this._diagramInstance.applyOperationSettings({
                            addShape: this.option("editing.allowAddShape"),
                            addShapeFromToolbox: this.option("editing.allowAddShape"),
                            deleteShape: this.option("editing.allowDeleteShape"),
                            deleteConnector: this.option("editing.allowDeleteConnector"),
                            changeConnection: this.option("editing.allowChangeConnection"),
                            changeConnectorPoints: this.option("editing.allowChangeConnectorPoints"),
                            changeShapeText: this.option("editing.allowChangeShapeText"),
                            changeConnectorText: this.option("editing.allowChangeConnectorText"),
                            resizeShape: this.option("editing.allowResizeShape"),
                            moveShape: this.option("editing.allowMoveShape")
                        })
                    };
                    _proto.fitToContent = function() {
                        const {
                            DiagramCommand: DiagramCommand
                        } = (0, _diagram.getDiagram)();
                        this._executeDiagramCommand(DiagramCommand.FitToScreen)
                    };
                    _proto.fitToWidth = function() {
                        const {
                            DiagramCommand: DiagramCommand
                        } = (0, _diagram.getDiagram)();
                        this._executeDiagramCommand(DiagramCommand.FitToWidth)
                    };
                    _proto.focus = function() {
                        this._captureFocus()
                    };
                    _proto.export = function() {
                        return this._getDiagramData()
                    };
                    _proto.exportTo = function(format, callback) {
                        const command = this._getDiagramExportToCommand(format);
                        this._executeDiagramCommand(command, callback)
                    };
                    _proto._getDiagramExportToCommand = function(format) {
                        const {
                            DiagramCommand: DiagramCommand
                        } = (0, _diagram.getDiagram)();
                        switch (format) {
                            case "png":
                                return DiagramCommand.ExportPng;
                            case "jpg":
                                return DiagramCommand.ExportJpg;
                            default:
                                return DiagramCommand.ExportSvg
                        }
                    };
                    _proto.import = function(data, updateExistingItemsOnly) {
                        this._setDiagramData(data, updateExistingItemsOnly);
                        this._raiseDataChangeAction()
                    };
                    _proto.updateToolbox = function() {
                        this._diagramInstance && this._diagramInstance.refreshToolbox();
                        if (this._toolbox) {
                            this._toolbox.updateTooltips();
                            this._toolbox.updateFilter();
                            this._toolbox.updateMaxHeight()
                        }
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_Widget.prototype._getDefaultOptions.call(this), {
                            readOnly: false,
                            zoomLevel: 1,
                            simpleView: false,
                            autoZoomMode: "disabled",
                            fullScreen: false,
                            showGrid: true,
                            snapToGrid: true,
                            units: "in",
                            viewUnits: "in",
                            pageOrientation: "portrait",
                            pageColor: "#ffffff",
                            hasChanges: false,
                            nodes: {
                                dataSource: null,
                                keyExpr: "id",
                                customDataExpr: void 0,
                                lockedExpr: void 0,
                                styleExpr: void 0,
                                textStyleExpr: void 0,
                                zIndexExpr: void 0,
                                typeExpr: "type",
                                textExpr: "text",
                                imageUrlExpr: void 0,
                                parentKeyExpr: void 0,
                                itemsExpr: void 0,
                                leftExpr: void 0,
                                topExpr: void 0,
                                widthExpr: void 0,
                                heightExpr: void 0,
                                containerKeyExpr: "containerKey",
                                containerChildrenExpr: void 0,
                                autoLayout: "auto",
                                autoSizeEnabled: true
                            },
                            edges: {
                                dataSource: null,
                                keyExpr: "id",
                                customDataExpr: void 0,
                                lockedExpr: void 0,
                                styleExpr: void 0,
                                textStyleExpr: void 0,
                                zIndexExpr: void 0,
                                fromExpr: "from",
                                fromPointIndexExpr: void 0,
                                toExpr: "to",
                                toPointIndexExpr: void 0,
                                pointsExpr: void 0,
                                textExpr: void 0,
                                lineTypeExpr: void 0,
                                fromLineEndExpr: void 0,
                                toLineEndExpr: void 0
                            },
                            customShapes: [],
                            toolbox: {
                                visibility: "auto",
                                shapeIconsPerRow: 3,
                                showSearch: true
                            },
                            mainToolbar: {
                                visible: false
                            },
                            historyToolbar: {
                                visible: true
                            },
                            viewToolbar: {
                                visible: true
                            },
                            contextMenu: {
                                enabled: true
                            },
                            contextToolbox: {
                                enabled: true,
                                shapeIconsPerRow: 4,
                                width: 152
                            },
                            propertiesPanel: {
                                visibility: "auto"
                            },
                            defaultItemProperties: {
                                connectorLineType: "orthogonal",
                                connectorLineStart: "none",
                                connectorLineEnd: "arrow"
                            },
                            editing: {
                                allowAddShape: true,
                                allowDeleteShape: true,
                                allowDeleteConnector: true,
                                allowChangeConnection: true,
                                allowChangeConnectorPoints: true,
                                allowChangeShapeText: true,
                                allowChangeConnectorText: true,
                                allowResizeShape: true,
                                allowMoveShape: true
                            },
                            export: {
                                fileName: "Diagram"
                            },
                            onItemClick: null,
                            onItemDblClick: null,
                            onSelectionChanged: null,
                            onRequestEditOperation: null,
                            onRequestLayoutUpdate: null
                        })
                    };
                    _proto._raiseDataChangeAction = function() {
                        if (this._initialized) {
                            this.option("hasChanges", true)
                        }
                    };
                    _proto._raiseEdgeInsertedAction = function(data, callback, errorCallback) {
                        if (this._edgesOption) {
                            this._edgesOption.insert(data, callback, errorCallback)
                        }
                    };
                    _proto._raiseEdgeUpdatedAction = function(key, data, callback, errorCallback) {
                        if (this._edgesOption) {
                            this._edgesOption.update(key, data, callback, errorCallback)
                        }
                    };
                    _proto._raiseEdgeRemovedAction = function(key, data, callback, errorCallback) {
                        if (this._edgesOption) {
                            this._edgesOption.remove(key, data, callback, errorCallback)
                        }
                    };
                    _proto._raiseNodeInsertedAction = function(data, callback, errorCallback) {
                        if (this._nodesOption) {
                            this._nodesOption.insert(data, callback, errorCallback)
                        }
                    };
                    _proto._raiseNodeUpdatedAction = function(key, data, callback, errorCallback) {
                        if (this._nodesOption) {
                            this._nodesOption.update(key, data, callback, errorCallback)
                        }
                    };
                    _proto._raiseNodeRemovedAction = function(key, data, callback, errorCallback) {
                        if (this._nodesOption) {
                            this._nodesOption.remove(key, data, callback, errorCallback)
                        }
                    };
                    _proto._raiseToolboxDragStart = function() {
                        if (this._toolbox && this.isMobileScreenSize()) {
                            this._toolbox.hide();
                            this._toolboxDragHidden = true
                        }
                    };
                    _proto._raiseToolboxDragEnd = function() {
                        if (this._toolbox && this._toolboxDragHidden) {
                            this._toolbox.show();
                            delete this._toolboxDragHidden
                        }
                    };
                    _proto._raiseTextInputStart = function() {
                        this._textInputStarted = true;
                        if (this._propertiesPanel) {
                            if (this.isMobileScreenSize() && this._propertiesPanel.isVisible()) {
                                this._propertiesPanel.hide();
                                this._propertiesPanelTextInputHidden = true
                            }
                        }
                        if (this._toolbox) {
                            if (this.isMobileScreenSize() && this._toolbox.isVisible()) {
                                this._toolbox.hide();
                                this._toolboxTextInputHidden = true
                            }
                        }
                    };
                    _proto._raiseTextInputEnd = function() {
                        if (this._propertiesPanel) {
                            if (this._propertiesPanelTextInputHidden) {
                                this._propertiesPanel.show();
                                delete this._propertiesPanelTextInputHidden
                            }
                        }
                        if (this._toolbox) {
                            if (this._toolboxTextInputHidden) {
                                this._toolbox.show();
                                delete this._toolboxTextInputHidden
                            }
                        }
                        this._textInputStarted = false
                    };
                    _proto._createItemClickAction = function() {
                        this._itemClickAction = this._createActionByOption("onItemClick")
                    };
                    _proto._createItemDblClickAction = function() {
                        this._itemDblClickAction = this._createActionByOption("onItemDblClick")
                    };
                    _proto._createSelectionChangedAction = function() {
                        this._selectionChangedAction = this._createActionByOption("onSelectionChanged")
                    };
                    _proto._createRequestEditOperationAction = function() {
                        this._requestEditOperationAction = this._createActionByOption("onRequestEditOperation")
                    };
                    _proto._createRequestLayoutUpdateAction = function() {
                        this._requestLayoutUpdateAction = this._createActionByOption("onRequestLayoutUpdate")
                    };
                    _proto._createCustomCommand = function() {
                        this._customCommandAction = this._createActionByOption("onCustomCommand")
                    };
                    _proto._raiseItemClickAction = function(nativeItem) {
                        if (!this._itemClickAction) {
                            this._createItemClickAction()
                        }
                        this._itemClickAction({
                            item: this._nativeItemToDiagramItem(nativeItem)
                        })
                    };
                    _proto._raiseItemDblClickAction = function(nativeItem) {
                        if (!this._itemDblClickAction) {
                            this._createItemDblClickAction()
                        }
                        this._itemDblClickAction({
                            item: this._nativeItemToDiagramItem(nativeItem)
                        })
                    };
                    _proto._raiseSelectionChanged = function(nativeItems) {
                        if (!this._selectionChangedAction) {
                            this._createSelectionChangedAction()
                        }
                        this._selectionChangedAction({
                            items: nativeItems.map(this._nativeItemToDiagramItem.bind(this))
                        })
                    };
                    _proto._raiseRequestEditOperation = function(operation, args) {
                        if (!this._requestEditOperationAction) {
                            this._createRequestEditOperationAction()
                        }
                        const eventArgs = this._getRequestEditOperationEventArgs(operation, args);
                        this._requestEditOperationAction(eventArgs);
                        args.allowed = eventArgs.allowed
                    };
                    _proto._getModelOperation = function(operation) {
                        const {
                            DiagramModelOperation: DiagramModelOperation
                        } = (0, _diagram.getDiagram)();
                        switch (operation) {
                            case DiagramModelOperation.AddShape:
                                return "addShape";
                            case DiagramModelOperation.AddShapeFromToolbox:
                                return "addShapeFromToolbox";
                            case DiagramModelOperation.DeleteShape:
                                return "deleteShape";
                            case DiagramModelOperation.DeleteConnector:
                                return "deleteConnector";
                            case DiagramModelOperation.ChangeConnection:
                                return "changeConnection";
                            case DiagramModelOperation.ChangeConnectorPoints:
                                return "changeConnectorPoints";
                            case DiagramModelOperation.BeforeChangeShapeText:
                                return "beforeChangeShapeText";
                            case DiagramModelOperation.ChangeShapeText:
                                return "changeShapeText";
                            case DiagramModelOperation.BeforeChangeConnectorText:
                                return "beforeChangeConnectorText";
                            case DiagramModelOperation.ChangeConnectorText:
                                return "changeConnectorText";
                            case DiagramModelOperation.ResizeShape:
                                return "resizeShape";
                            case DiagramModelOperation.MoveShape:
                                return "moveShape"
                        }
                    };
                    _proto._getRequestEditOperationEventArgs = function(operation, args) {
                        const {
                            DiagramModelOperation: DiagramModelOperation,
                            ConnectorPosition: ConnectorPosition
                        } = (0, _diagram.getDiagram)();
                        const eventArgs = {
                            operation: this._getModelOperation(operation),
                            allowed: args.allowed,
                            updateUI: args.updateUI,
                            reason: args.updateUI ? "checkUIElementAvailability" : "modelModification"
                        };
                        switch (operation) {
                            case DiagramModelOperation.AddShape:
                                eventArgs.args = {
                                    shape: args.shape && this._nativeItemToDiagramItem(args.shape),
                                    position: args.position && {
                                        x: args.position.x,
                                        y: args.position.y
                                    }
                                };
                                break;
                            case DiagramModelOperation.AddShapeFromToolbox:
                                eventArgs.args = {
                                    shapeType: args.shapeType
                                };
                                break;
                            case DiagramModelOperation.DeleteShape:
                                eventArgs.args = {
                                    shape: args.shape && this._nativeItemToDiagramItem(args.shape)
                                };
                                break;
                            case DiagramModelOperation.DeleteConnector:
                                eventArgs.args = {
                                    connector: args.connector && this._nativeItemToDiagramItem(args.connector)
                                };
                                break;
                            case DiagramModelOperation.ChangeConnection:
                                eventArgs.args = {
                                    newShape: args.shape && this._nativeItemToDiagramItem(args.shape),
                                    oldShape: args.oldShape && this._nativeItemToDiagramItem(args.oldShape),
                                    connector: args.connector && this._nativeItemToDiagramItem(args.connector),
                                    connectionPointIndex: args.connectionPointIndex,
                                    connectorPosition: args.position === ConnectorPosition.Begin ? "start" : "end"
                                };
                                break;
                            case DiagramModelOperation.ChangeConnectorPoints:
                                eventArgs.args = {
                                    connector: args.connector && this._nativeItemToDiagramItem(args.connector),
                                    newPoints: args.points && args.points.map(pt => ({
                                        x: pt.x,
                                        y: pt.y
                                    })),
                                    oldPoints: args.oldPoints && args.oldPoints.map(pt => ({
                                        x: pt.x,
                                        y: pt.y
                                    }))
                                };
                                break;
                            case DiagramModelOperation.BeforeChangeShapeText:
                                eventArgs.args = {
                                    shape: args.shape && this._nativeItemToDiagramItem(args.shape)
                                };
                                break;
                            case DiagramModelOperation.ChangeShapeText:
                                eventArgs.args = {
                                    shape: args.shape && this._nativeItemToDiagramItem(args.shape),
                                    text: args.text
                                };
                                break;
                            case DiagramModelOperation.BeforeChangeConnectorText:
                                eventArgs.args = {
                                    connector: args.connector && this._nativeItemToDiagramItem(args.connector),
                                    index: args.index
                                };
                                break;
                            case DiagramModelOperation.ChangeConnectorText:
                                eventArgs.args = {
                                    connector: args.connector && this._nativeItemToDiagramItem(args.connector),
                                    index: args.index,
                                    text: args.text
                                };
                                break;
                            case DiagramModelOperation.ResizeShape:
                                eventArgs.args = {
                                    shape: args.shape && this._nativeItemToDiagramItem(args.shape),
                                    newSize: args.size && {
                                        width: args.size.width,
                                        height: args.size.height
                                    },
                                    oldSize: args.oldSize && {
                                        width: args.oldSize.width,
                                        height: args.oldSize.height
                                    }
                                };
                                break;
                            case DiagramModelOperation.MoveShape:
                                eventArgs.args = {
                                    shape: args.shape && this._nativeItemToDiagramItem(args.shape),
                                    newPosition: args.position && {
                                        x: args.position.x,
                                        y: args.position.y
                                    },
                                    oldPosition: args.oldPosition && {
                                        x: args.oldPosition.x,
                                        y: args.oldPosition.y
                                    }
                                }
                        }
                        return eventArgs
                    };
                    _proto._nativeItemToDiagramItem = function(nativeItem) {
                        const {
                            NativeShape: NativeShape
                        } = (0, _diagram.getDiagram)();
                        const createMethod = nativeItem instanceof NativeShape ? this._nativeShapeToDiagramShape.bind(this) : this._nativeConnectorToDiagramConnector.bind(this);
                        return (0, _extend.extend)({
                            id: nativeItem.id,
                            key: nativeItem.key,
                            dataItem: void 0
                        }, createMethod(nativeItem))
                    };
                    _proto._nativeShapeToDiagramShape = function(nativeShape) {
                        return {
                            dataItem: this._nodesOption && this._nodesOption.findItem(nativeShape.key),
                            itemType: "shape",
                            text: nativeShape.text,
                            type: nativeShape.type,
                            position: {
                                x: nativeShape.position.x,
                                y: nativeShape.position.y
                            },
                            size: {
                                width: nativeShape.size.width,
                                height: nativeShape.size.height
                            },
                            attachedConnectorIds: nativeShape.attachedConnectorIds,
                            containerId: nativeShape.containerId,
                            containerChildItemIds: nativeShape.containerChildItemIds,
                            containerExpanded: nativeShape.containerExpanded
                        }
                    };
                    _proto._nativeConnectorToDiagramConnector = function(nativeConnector) {
                        return {
                            dataItem: this._edgesOption && this._edgesOption.findItem(nativeConnector.key),
                            itemType: "connector",
                            texts: nativeConnector.texts,
                            fromKey: nativeConnector.fromKey,
                            toKey: nativeConnector.toKey,
                            fromId: nativeConnector.fromId,
                            fromPointIndex: nativeConnector.fromPointIndex,
                            toId: nativeConnector.toId,
                            toPointIndex: nativeConnector.toPointIndex,
                            points: nativeConnector.points.map(pt => ({
                                x: pt.x,
                                y: pt.y
                            }))
                        }
                    };
                    _proto.getItemByKey = function(key) {
                        const nativeItem = this._diagramInstance && this._diagramInstance.getNativeItemByDataKey(key);
                        return nativeItem && this._nativeItemToDiagramItem(nativeItem)
                    };
                    _proto.getItemById = function(id) {
                        const nativeItem = this._diagramInstance && this._diagramInstance.getNativeItemByKey(id);
                        return nativeItem && this._nativeItemToDiagramItem(nativeItem)
                    };
                    _proto.getItems = function() {
                        return this._diagramInstance.getNativeItems().map(nativeItem => nativeItem && this._nativeItemToDiagramItem(nativeItem))
                    };
                    _proto.getSelectedItems = function() {
                        return this._diagramInstance.getNativeSelectedItems().map(nativeItem => nativeItem && this._nativeItemToDiagramItem(nativeItem))
                    };
                    _proto.setSelectedItems = function(items) {
                        return this._diagramInstance.setSelectedItems(items.map(item => item.id))
                    };
                    _proto.scrollToItem = function(item) {
                        return this._diagramInstance.scrollToItems([item.id])
                    };
                    _proto._invalidateContextMenuCommands = function() {
                        if (this._contextMenu) {
                            this._contextMenu.option({
                                commands: this.option("contextMenu.commands")
                            })
                        }
                    };
                    _proto._invalidateMainToolbarCommands = function() {
                        if (this._mainToolbar) {
                            this._mainToolbar.option({
                                commands: this.option("mainToolbar.commands")
                            })
                        }
                    };
                    _proto._invalidateHistoryToolbarCommands = function() {
                        if (this._historyToolbar) {
                            this._historyToolbar.option({
                                commands: this.option("historyToolbar.commands")
                            })
                        }
                    };
                    _proto._invalidateViewToolbarCommands = function() {
                        if (this._viewToolbar) {
                            this._viewToolbar.option({
                                commands: this.option("viewToolbar.commands")
                            })
                        }
                    };
                    _proto._invalidateToolboxGroups = function() {
                        if (this._toolbox) {
                            this._toolbox.option({
                                toolboxGroups: this._getToolboxGroups()
                            })
                        }
                    };
                    _proto._optionChanged = function(args) {
                        if (!this.optionsUpdateBar || this.optionsUpdateBar.isUpdateLocked()) {
                            return
                        }
                        this.optionsUpdateBar.beginUpdate();
                        try {
                            this._optionChangedCore(args)
                        } finally {
                            this.optionsUpdateBar.endUpdate()
                        }
                    };
                    _proto._optionChangedCore = function(args) {
                        switch (args.name) {
                            case "readOnly":
                            case "disabled":
                                this._updateReadOnlyState();
                                this._invalidate();
                                break;
                            case "zoomLevel":
                                if ("zoomLevel" === args.fullName || "zoomLevel.items" === args.fullName || "zoomLevel.value" === args.fullName) {
                                    this._updateZoomLevelState()
                                }
                                break;
                            case "autoZoomMode":
                                this._updateAutoZoomState();
                                break;
                            case "simpleView":
                                this._updateSimpleViewState();
                                break;
                            case "useNativeScrolling":
                                this._invalidate();
                                break;
                            case "fullScreen":
                                this._updateFullscreenState();
                                break;
                            case "showGrid":
                                this._updateShowGridState();
                                break;
                            case "snapToGrid":
                                this._updateSnapToGridState();
                                break;
                            case "gridSize":
                                if ("gridSize" === args.fullName || "gridSize.items" === args.fullName || "gridSize.value" === args.fullName) {
                                    this._updateGridSizeState()
                                }
                                break;
                            case "viewUnits":
                                this._updateViewUnitsState();
                                break;
                            case "units":
                                this._updateUnitsState();
                                break;
                            case "pageSize":
                                if ("pageSize" === args.fullName || "pageSize.items" === args.fullName) {
                                    this._updatePageSizeItemsState()
                                }
                                if ("pageSize" === args.fullName || "pageSize.width" === args.fullName || "pageSize.height" === args.fullName) {
                                    this._updatePageSizeState()
                                }
                                break;
                            case "pageOrientation":
                                this._updatePageOrientationState();
                                break;
                            case "pageColor":
                                this._updatePageColorState();
                                break;
                            case "nodes":
                                if (0 === args.fullName.indexOf("nodes.autoLayout")) {
                                    this._refreshDataSources()
                                } else {
                                    this._refreshNodesDataSource()
                                }
                                break;
                            case "edges":
                                this._refreshEdgesDataSource();
                                break;
                            case "customShapes":
                                if (args.fullName !== args.name) {
                                    this._updateAllCustomShapes()
                                } else {
                                    this._updateCustomShapes(args.value, args.previousValue)
                                }
                                this._invalidate();
                                break;
                            case "contextMenu":
                                if ("contextMenu.commands" === args.fullName) {
                                    this._invalidateContextMenuCommands()
                                } else {
                                    this._invalidate()
                                }
                                break;
                            case "contextToolbox":
                            case "propertiesPanel":
                                this._invalidate();
                                break;
                            case "toolbox":
                                if ("toolbox.groups" === args.fullName) {
                                    this._invalidateToolboxGroups()
                                } else {
                                    this._invalidate()
                                }
                                break;
                            case "mainToolbar":
                                if ("mainToolbar.commands" === args.fullName) {
                                    this._invalidateMainToolbarCommands()
                                } else {
                                    this._invalidate()
                                }
                                break;
                            case "historyToolbar":
                                if ("historyToolbar.commands" === args.fullName) {
                                    this._invalidateHistoryToolbarCommands()
                                } else {
                                    this._invalidate()
                                }
                                break;
                            case "viewToolbar":
                                if ("viewToolbar.commands" === args.fullName) {
                                    this._invalidateViewToolbarCommands()
                                } else {
                                    this._invalidate()
                                }
                                break;
                            case "onItemClick":
                                this._createItemClickAction();
                                break;
                            case "onItemDblClick":
                                this._createItemDblClickAction();
                                break;
                            case "onSelectionChanged":
                                this._createSelectionChangedAction();
                                break;
                            case "onRequestEditOperation":
                                this._createRequestEditOperationAction();
                                break;
                            case "onRequestLayoutUpdate":
                                this._createRequestLayoutUpdateAction();
                                break;
                            case "onCustomCommand":
                                this._createCustomCommand();
                                break;
                            case "defaultItemProperties":
                                this._updateDefaultItemProperties();
                                break;
                            case "editing":
                                this._updateEditingSettings();
                                break;
                            case "export":
                                this._toolbars.forEach(toolbar => {
                                    toolbar.option("export", this.option("export"))
                                });
                                if (this._contextMenu) {
                                    this._contextMenu.option("export", this.option("export"))
                                }
                                break;
                            case "hasChanges":
                                break;
                            default:
                                _Widget.prototype._optionChanged.call(this, args)
                        }
                    };
                    return Diagram
                }(_ui.default);
                (0, _component_registrator.default)("dxDiagram", Diagram);
                var _default = Diagram;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        66156:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.main_toolbar.js ***!
              \***********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _uiDiagram = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.toolbar */ 38148));
                var _diagram = _interopRequireDefault(__webpack_require__( /*! ./diagram.commands_manager */ 72321));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let DiagramMainToolbar = function(_DiagramToolbar) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(DiagramMainToolbar, _DiagramToolbar);

                    function DiagramMainToolbar() {
                        return _DiagramToolbar.apply(this, arguments) || this
                    }
                    var _proto = DiagramMainToolbar.prototype;
                    _proto._getCommands = function() {
                        return _diagram.default.getMainToolbarCommands(this.option("commands"), this.option("excludeCommands"))
                    };
                    return DiagramMainToolbar
                }(_uiDiagram.default);
                var _default = DiagramMainToolbar;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        20261:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.menu_helper.js ***!
              \**********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = (obj = __webpack_require__( /*! ../../core/renderer */ 68374), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _icon = __webpack_require__( /*! ../../core/utils/icon */ 44899);
                const DiagramMenuHelper = {
                    getContextMenuItemTemplate(contextMenu, itemData, itemIndex, itemElement) {
                        const $itemElement = (0, _renderer.default)(itemElement);
                        $itemElement.empty();
                        const itemKey = void 0 !== itemData.rootCommand ? itemData.rootCommand : -1;
                        if (itemData.icon && !itemData.checked) {
                            const $iconElement = (0, _icon.getImageContainer)(itemData.icon);
                            $itemElement.append($iconElement)
                        } else if (contextMenu._menuHasCheckedItems && true === contextMenu._menuHasCheckedItems[itemKey]) {
                            const $checkElement = (0, _icon.getImageContainer)("check");
                            $checkElement.css("visibility", !itemData.checked ? "hidden" : "visible");
                            $itemElement.append($checkElement)
                        }
                        $itemElement.append('<span class="dx-menu-item-text">' + itemData.text + "</span>");
                        if (Array.isArray(itemData.items) && itemData.items.length > 0) {
                            $itemElement.append('<span class="dx-menu-item-popout-container"><div class="dx-menu-item-popout"></div></span>')
                        }
                    },
                    getContextMenuCssClass: () => "dx-diagram-contextmenu",
                    onContextMenuItemClick(widget, itemData, actionHandler) {
                        if ((void 0 !== itemData.command || void 0 !== itemData.name) && (!Array.isArray(itemData.items) || !itemData.items.length)) {
                            const parameter = DiagramMenuHelper.getItemCommandParameter(widget, itemData);
                            actionHandler.call(this, itemData.command, itemData.name, parameter)
                        } else if (void 0 !== itemData.rootCommand && void 0 !== itemData.value) {
                            const parameter = DiagramMenuHelper.getItemCommandParameter(widget, itemData, itemData.value);
                            actionHandler.call(this, itemData.rootCommand, void 0, parameter)
                        }
                    },
                    getItemValue: item => "object" === typeof item.value ? JSON.stringify(item.value) : item.value,
                    getItemOptionText(contextMenu, indexPath) {
                        if (contextMenu) {
                            indexPath = indexPath.slice();
                            const parentItemOptionText = this._getParentItemOptionText(indexPath);
                            if (contextMenu._originalItemsInfo && contextMenu._originalItemsInfo[parentItemOptionText]) {
                                indexPath[indexPath.length - 1] += contextMenu._originalItemsInfo[parentItemOptionText].indexPathCorrection
                            }
                        }
                        return this._getItemOptionTextCore(indexPath)
                    },
                    _getParentItemOptionText(indexPath) {
                        const parentIndexPath = indexPath.slice(0, indexPath.length - 1);
                        return this._getItemOptionTextCore(parentIndexPath)
                    },
                    _getItemOptionTextCore: indexPath => indexPath.reduce((r, i) => r + "items[".concat(i, "]."), ""),
                    getItemCommandParameter(widget, item, value) {
                        if (item.getParameter) {
                            return item.getParameter(widget)
                        }
                        return value
                    },
                    updateContextMenuItems(contextMenu, itemOptionText, rootCommandKey, items) {
                        if (!contextMenu._originalItemsInfo) {
                            contextMenu._originalItemsInfo = {}
                        }
                        if (!contextMenu._originalItemsInfo[itemOptionText]) {
                            contextMenu._originalItemsInfo[itemOptionText] = {
                                items: contextMenu.option(itemOptionText + "items") || []
                            }
                        }
                        items = items.map(item => ({
                            value: this.getItemValue(item),
                            text: item.text,
                            checked: item.checked,
                            widget: contextMenu,
                            rootCommand: rootCommandKey
                        }));
                        const originalItems = contextMenu._originalItemsInfo[itemOptionText].items;
                        contextMenu.option(itemOptionText + "items", items.concat(originalItems));
                        if (contextMenu._originalItemsInfo[itemOptionText] && originalItems.length) {
                            contextMenu._originalItemsInfo[itemOptionText].indexPathCorrection = items.length
                        }
                    },
                    updateContextMenuItemVisible(contextMenu, itemOptionText, visible) {
                        contextMenu.option(itemOptionText + "visible", visible)
                    },
                    updateContextMenuItemValue(contextMenu, itemOptionText, rootCommandKey, value) {
                        const items = contextMenu.option(itemOptionText + "items");
                        if ("boolean" === typeof value && (!items || !items.length)) {
                            this._setContextMenuHasCheckedItems(contextMenu, -1);
                            contextMenu.option(itemOptionText + "checked", value)
                        } else if (void 0 !== value) {
                            this._setContextMenuHasCheckedItems(contextMenu, rootCommandKey);
                            if (Array.isArray(items)) {
                                items.forEach((item, index) => {
                                    item.checked = item.value === value
                                })
                            }
                        }
                    },
                    _setContextMenuHasCheckedItems(contextMenu, key) {
                        if (!contextMenu._menuHasCheckedItems) {
                            contextMenu._menuHasCheckedItems = {}
                        }
                        contextMenu._menuHasCheckedItems[key] = true
                    }
                };
                var _default = DiagramMenuHelper;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        47596:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.panel.js ***!
              \****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../events/pointer */ 93786));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const POINTERUP_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.up, "dxDiagramPanel");
                let DiagramPanel = function(_Widget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(DiagramPanel, _Widget);

                    function DiagramPanel() {
                        return _Widget.apply(this, arguments) || this
                    }
                    var _proto = DiagramPanel.prototype;
                    _proto._init = function() {
                        _Widget.prototype._init.call(this);
                        this._createOnPointerUpAction()
                    };
                    _proto._render = function() {
                        _Widget.prototype._render.call(this);
                        this._attachPointerUpEvent()
                    };
                    _proto._getPointerUpElements = function() {
                        return [this.$element()]
                    };
                    _proto._attachPointerUpEvent = function() {
                        const elements = this._getPointerUpElements();
                        elements.forEach(element => {
                            _events_engine.default.off(element, POINTERUP_EVENT_NAME);
                            _events_engine.default.on(element, POINTERUP_EVENT_NAME, e => {
                                if (!(0, _renderer.default)(e.target).closest(".dx-textbox").length) {
                                    this._onPointerUpAction()
                                }
                            })
                        })
                    };
                    _proto._createOnPointerUpAction = function() {
                        this._onPointerUpAction = this._createActionByOption("onPointerUp")
                    };
                    _proto._optionChanged = function(args) {
                        switch (args.name) {
                            case "onPointerUp":
                                this._createOnPointerUpAction();
                                break;
                            default:
                                _Widget.prototype._optionChanged.call(this, args)
                        }
                    };
                    return DiagramPanel
                }(_ui.default);
                var _default = DiagramPanel;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        64863:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.properties_panel.js ***!
              \***************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _scroll_view = _interopRequireDefault(__webpack_require__( /*! ../scroll_view */ 4741));
                var _tab_panel = _interopRequireDefault(__webpack_require__( /*! ../tab_panel */ 21807));
                var _uiDiagram = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.floating_panel */ 99967));
                var _diagram = _interopRequireDefault(__webpack_require__( /*! ./diagram.commands_manager */ 72321));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let DiagramPropertiesPanel = function(_DiagramFloatingPanel) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(DiagramPropertiesPanel, _DiagramFloatingPanel);

                    function DiagramPropertiesPanel() {
                        return _DiagramFloatingPanel.apply(this, arguments) || this
                    }
                    var _proto = DiagramPropertiesPanel.prototype;
                    _proto._init = function() {
                        _DiagramFloatingPanel.prototype._init.call(this);
                        this._commandTabs = _diagram.default.getPropertyPanelCommandTabs(this.option("propertyTabs"));
                        this._createOnCreateToolbar();
                        this._createOnSelectedGroupChanged()
                    };
                    _proto._initMarkup = function() {
                        this._toolbars = [];
                        this._selectedToolbar = void 0;
                        _DiagramFloatingPanel.prototype._initMarkup.call(this)
                    };
                    _proto._getPopupClass = function() {
                        let className = "dx-diagram-properties-popup";
                        if (!this._hasTabPanel()) {
                            className += " dx-diagram-properties-popup-notabs"
                        }
                        return className
                    };
                    _proto._getPopupWidth = function() {
                        return this.isMobileView() ? "100%" : 420
                    };
                    _proto._getPopupHeight = function() {
                        return 340
                    };
                    _proto._getPopupPosition = function() {
                        const $parent = this.option("offsetParent");
                        if (this.isMobileView()) {
                            return {
                                my: "left bottom",
                                at: "left bottom",
                                of: $parent
                            }
                        }
                        return {
                            my: "right bottom",
                            at: "right bottom",
                            of: $parent,
                            offset: "-" + this.option("offsetX") + " -" + this.option("offsetY")
                        }
                    };
                    _proto._getPopupAnimation = function() {
                        const $parent = this.option("offsetParent");
                        if (this.isMobileView()) {
                            return {
                                hide: this._getPopupSlideAnimationObject({
                                    direction: "bottom",
                                    from: {
                                        position: {
                                            my: "left bottom",
                                            at: "left bottom",
                                            of: $parent
                                        }
                                    },
                                    to: {
                                        position: {
                                            my: "left top",
                                            at: "left bottom",
                                            of: $parent
                                        }
                                    }
                                }),
                                show: this._getPopupSlideAnimationObject({
                                    direction: "top",
                                    from: {
                                        position: {
                                            my: "left top",
                                            at: "left bottom",
                                            of: $parent
                                        }
                                    },
                                    to: {
                                        position: {
                                            my: "left bottom",
                                            at: "left bottom",
                                            of: $parent
                                        }
                                    }
                                })
                            }
                        }
                        return _DiagramFloatingPanel.prototype._getPopupAnimation.call(this)
                    };
                    _proto._getPopupOptions = function() {
                        return (0, _extend.extend)(_DiagramFloatingPanel.prototype._getPopupOptions.call(this), {
                            showTitle: this.isMobileView(),
                            showCloseButton: this.isMobileView()
                        })
                    };
                    _proto._renderPopupContent = function($parent) {
                        if (!this._commandTabs.length) {
                            return
                        }
                        const $panel = (0, _renderer.default)("<div>").addClass("dx-diagram-properties-panel").appendTo($parent);
                        if (this._hasTabPanel()) {
                            this._renderTabPanel($panel)
                        } else {
                            this._renderTabContent($panel, this._commandTabs[0], 0, true)
                        }
                    };
                    _proto._hasTabPanel = function() {
                        return this._commandTabs.length > 1
                    };
                    _proto._renderTabPanel = function($parent) {
                        const $tabPanel = (0, _renderer.default)("<div>").appendTo($parent);
                        this._tabPanel = this._createComponent($tabPanel, _tab_panel.default, {
                            focusStateEnabled: false,
                            dataSource: this._commandTabs,
                            itemTemplate: (data, index, $element) => {
                                this._renderTabContent($element, data, index)
                            },
                            onSelectionChanged: e => {
                                this._onSelectedGroupChangedAction();
                                this._onPointerUpAction()
                            },
                            onContentReady: e => {
                                this._popup.option("height", (0, _size.getHeight)(e.component.$element()) + this._getVerticalPaddingsAndBorders());
                                if (this._firstScrollView) {
                                    this._scrollViewHeight = (0, _size.getOuterHeight)(this._firstScrollView.$element());
                                    this._firstScrollView.option("height", this._scrollViewHeight)
                                }
                            }
                        })
                    };
                    _proto._renderTabContent = function($parent, tab, index, isSingleTab) {
                        const $scrollViewWrapper = (0, _renderer.default)("<div>").appendTo($parent);
                        const scrollView = this._createComponent($scrollViewWrapper, _scroll_view.default, {
                            height: this._scrollViewHeight
                        });
                        this._renderTabInnerContent(scrollView.content(), tab, index);
                        if (isSingleTab) {
                            this._popup.option("height", (0, _size.getHeight)(scrollView.$element()) + this._getVerticalPaddingsAndBorders())
                        } else {
                            this._firstScrollView = this._firstScrollView || scrollView
                        }
                    };
                    _proto._renderTabInnerContent = function($parent, group, index) {
                        if (group.groups) {
                            group.groups.forEach((sg, si) => {
                                this._renderTabGroupContent($parent, index, sg.title, sg.commands)
                            })
                        } else if (group.commands) {
                            this._renderTabGroupContent($parent, index, void 0, group.commands)
                        }
                    };
                    _proto._renderTabGroupContent = function($parent, index, title, commands) {
                        if (title) {
                            (0, _renderer.default)("<div>").addClass("dx-diagram-properties-panel-group-title").appendTo($parent).text(title)
                        }
                        const $toolbar = (0, _renderer.default)("<div>").addClass("dx-diagram-properties-panel-group-toolbar").appendTo($parent);
                        const args = {
                            $parent: $toolbar,
                            commands: commands
                        };
                        this._onCreateToolbarAction(args);
                        if (!this._toolbars[index]) {
                            this._toolbars[index] = []
                        }
                        this._toolbars[index].push(args.toolbar);
                        this._selectedToolbar = args.toolbar
                    };
                    _proto.getActiveToolbars = function() {
                        const index = this._tabPanel ? this._tabPanel.option("selectedIndex") : 0;
                        return this._toolbars[index]
                    };
                    _proto._createOnCreateToolbar = function() {
                        this._onCreateToolbarAction = this._createActionByOption("onCreateToolbar")
                    };
                    _proto._createOnSelectedGroupChanged = function() {
                        this._onSelectedGroupChangedAction = this._createActionByOption("onSelectedGroupChanged")
                    };
                    _proto._optionChanged = function(args) {
                        switch (args.name) {
                            case "onCreateToolbar":
                                this._createOnCreateToolbar();
                                break;
                            case "onSelectedGroupChanged":
                                this._createOnSelectedGroupChanged();
                                break;
                            case "propertyTabs":
                                this._invalidate();
                                break;
                            default:
                                _DiagramFloatingPanel.prototype._optionChanged.call(this, args)
                        }
                    };
                    return DiagramPropertiesPanel
                }(_uiDiagram.default);
                var _default = DiagramPropertiesPanel;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        95463:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.properties_toolbar.js ***!
              \*****************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _uiDiagram = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.toolbar */ 38148));
                var _diagram = _interopRequireDefault(__webpack_require__( /*! ./diagram.commands_manager */ 72321));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let DiagramPropertiesToolbar = function(_DiagramToolbar) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(DiagramPropertiesToolbar, _DiagramToolbar);

                    function DiagramPropertiesToolbar() {
                        return _DiagramToolbar.apply(this, arguments) || this
                    }
                    var _proto = DiagramPropertiesToolbar.prototype;
                    _proto._getCommands = function() {
                        return _diagram.default.getPropertiesToolbarCommands()
                    };
                    return DiagramPropertiesToolbar
                }(_uiDiagram.default);
                var _default = DiagramPropertiesToolbar;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        66737:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.scroll_view.js ***!
              \**********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _scroll_view = _interopRequireDefault(__webpack_require__( /*! ../scroll_view */ 4741));
                var _m_widget_utils = __webpack_require__( /*! ../../__internal/grids/pivot_grid/m_widget_utils */ 28580);
                var _diagram = __webpack_require__( /*! ./diagram.importer */ 348);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let DiagramScrollView = function(_Widget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(DiagramScrollView, _Widget);

                    function DiagramScrollView() {
                        return _Widget.apply(this, arguments) || this
                    }
                    var _proto = DiagramScrollView.prototype;
                    _proto._init = function() {
                        _Widget.prototype._init.call(this);
                        const {
                            EventDispatcher: EventDispatcher
                        } = (0, _diagram.getDiagram)();
                        this.onScroll = new EventDispatcher;
                        this._createOnCreateDiagramAction()
                    };
                    _proto._initMarkup = function() {
                        _Widget.prototype._initMarkup.call(this);
                        const $scrollViewWrapper = (0, _renderer.default)("<div>").appendTo(this.$element());
                        const options = {
                            direction: "both",
                            bounceEnabled: false,
                            scrollByContent: false,
                            onScroll: _ref => {
                                let {
                                    scrollOffset: scrollOffset
                                } = _ref;
                                this._raiseOnScroll(scrollOffset.left, scrollOffset.top)
                            }
                        };
                        const useNativeScrolling = this.option("useNativeScrolling");
                        if (void 0 !== useNativeScrolling) {
                            options.useNative = useNativeScrolling
                        }
                        this._scrollView = this._createComponent($scrollViewWrapper, _scroll_view.default, options);
                        this._onCreateDiagramAction({
                            $parent: (0, _renderer.default)(this._scrollView.content()),
                            scrollView: this
                        })
                    };
                    _proto.setScroll = function(left, top) {
                        this._scrollView.scrollTo({
                            left: left,
                            top: top
                        });
                        this._raiseOnScrollWithoutPoint()
                    };
                    _proto.offsetScroll = function(left, top) {
                        this._scrollView.scrollBy({
                            left: left,
                            top: top
                        });
                        this._raiseOnScrollWithoutPoint()
                    };
                    _proto.getSize = function() {
                        const {
                            Size: Size
                        } = (0, _diagram.getDiagram)();
                        const $element = this._scrollView.$element();
                        return new Size(Math.floor((0, _size.getWidth)($element)), Math.floor((0, _size.getHeight)($element)))
                    };
                    _proto.getScrollContainer = function() {
                        return this._scrollView.$element()[0]
                    };
                    _proto.getScrollBarWidth = function() {
                        return this.option("useNativeScrolling") ? (0, _m_widget_utils.calculateScrollbarWidth)() : 0
                    };
                    _proto.detachEvents = function() {};
                    _proto._raiseOnScroll = function(left, top) {
                        const {
                            Point: Point
                        } = (0, _diagram.getDiagram)();
                        this.onScroll.raise("notifyScrollChanged", () => new Point(left, top))
                    };
                    _proto._raiseOnScrollWithoutPoint = function() {
                        const {
                            Point: Point
                        } = (0, _diagram.getDiagram)();
                        this.onScroll.raise("notifyScrollChanged", () => new Point(this._scrollView.scrollLeft(), this._scrollView.scrollTop()))
                    };
                    _proto._createOnCreateDiagramAction = function() {
                        this._onCreateDiagramAction = this._createActionByOption("onCreateDiagram")
                    };
                    _proto._optionChanged = function(args) {
                        switch (args.name) {
                            case "onCreateDiagram":
                                this._createOnCreateDiagramAction();
                                break;
                            case "useNativeScrolling":
                                break;
                            default:
                                _Widget.prototype._optionChanged.call(this, args)
                        }
                    };
                    return DiagramScrollView
                }(_ui.default);
                var _default = DiagramScrollView;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        38148:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.toolbar.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _toolbar = _interopRequireDefault(__webpack_require__( /*! ../toolbar */ 71042));
                var _context_menu = _interopRequireDefault(__webpack_require__( /*! ../context_menu */ 10042));
                var _diagram = _interopRequireDefault(__webpack_require__( /*! ./diagram.bar */ 50984));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _uiDiagram = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.panel */ 47596));
                var _uiDiagram2 = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.menu_helper */ 20261));
                var _diagram2 = __webpack_require__( /*! ./diagram.importer */ 348);
                __webpack_require__( /*! ../select_box */ 78665);
                __webpack_require__( /*! ../color_box */ 4278);
                __webpack_require__( /*! ../check_box */ 18859);

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

                function _inheritsLoose(subClass, superClass) {
                    subClass.prototype = Object.create(superClass.prototype);
                    subClass.prototype.constructor = subClass;
                    _setPrototypeOf(subClass, superClass)
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let DiagramToolbar = function(_DiagramPanel) {
                    _inheritsLoose(DiagramToolbar, _DiagramPanel);

                    function DiagramToolbar() {
                        return _DiagramPanel.apply(this, arguments) || this
                    }
                    var _proto = DiagramToolbar.prototype;
                    _proto._init = function() {
                        this._commands = [];
                        this._itemHelpers = {};
                        this._commandContextMenus = {};
                        this._contextMenuList = [];
                        this._valueConverters = {};
                        this.bar = new DiagramToolbarBar(this);
                        this._createOnInternalCommand();
                        this._createOnCustomCommand();
                        this._createOnSubMenuVisibilityChangingAction();
                        _DiagramPanel.prototype._init.call(this)
                    };
                    _proto._initMarkup = function() {
                        _DiagramPanel.prototype._initMarkup.call(this);
                        const isServerSide = !(0, _window.hasWindow)();
                        if (!this.option("skipAdjustSize") && !isServerSide) {
                            (0, _size.setWidth)(this.$element(), "")
                        }
                        this._commands = this._getCommands();
                        this._itemHelpers = {};
                        this._commandContextMenus = {};
                        this._contextMenuList = [];
                        const $toolbar = this._createMainElement();
                        this._renderToolbar($toolbar);
                        if (!this.option("skipAdjustSize") && !isServerSide) {
                            const $toolbarContent = this.$element().find(".dx-toolbar-before");
                            (0, _size.setWidth)(this.$element(), (0, _size.getWidth)($toolbarContent))
                        }
                    };
                    _proto._createMainElement = function() {
                        return (0, _renderer.default)("<div>").addClass("dx-diagram-toolbar").appendTo(this._$element)
                    };
                    _proto._getCommands = function() {
                        return this.option("commands") || []
                    };
                    _proto._renderToolbar = function($toolbar) {
                        const beforeCommands = this._commands.filter(command => -1 === ["after", "center"].indexOf(command.location));
                        const centerCommands = this._commands.filter(command => "center" === command.location);
                        const afterCommands = this._commands.filter(command => "after" === command.location);
                        const dataSource = [].concat(this._prepareToolbarItems(beforeCommands, "before", this._executeCommand)).concat(this._prepareToolbarItems(centerCommands, "center", this._executeCommand)).concat(this._prepareToolbarItems(afterCommands, "after", this._executeCommand));
                        this._toolbarInstance = this._createComponent($toolbar, _toolbar.default, {
                            dataSource: dataSource
                        })
                    };
                    _proto._prepareToolbarItems = function(items, location, actionHandler) {
                        return items.map(item => (0, _extend.extend)(true, {
                            location: location,
                            locateInMenu: this.option("locateInMenu")
                        }, this._createItem(item, location, actionHandler), this._createItemOptions(item), this._createItemActionOptions(item, actionHandler)))
                    };
                    _proto._createItem = function(item, location, actionHandler) {
                        if (item.getCommandValue || item.getEditorValue || item.getEditorDisplayValue) {
                            this._valueConverters[item.command] = {
                                getCommandValue: item.getCommandValue,
                                getEditorValue: item.getEditorValue,
                                getEditorDisplayValue: item.getEditorDisplayValue
                            }
                        }
                        if ("separator" === item.widget) {
                            return {
                                template: (data, index, element) => {
                                    (0, _renderer.default)(element).addClass("dx-diagram-toolbar-separator")
                                },
                                menuItemTemplate: (data, index, element) => {
                                    (0, _renderer.default)(element).addClass("dx-diagram-toolbar-menu-separator")
                                }
                            }
                        }
                        return {
                            widget: item.widget || "dxButton",
                            cssClass: item.cssClass,
                            options: {
                                stylingMode: this.option("buttonStylingMode"),
                                type: this.option("buttonType"),
                                text: item.text,
                                hint: item.hint,
                                icon: item.icon || item.iconUnchecked || item.iconChecked,
                                iconChecked: item.iconChecked,
                                iconUnchecked: item.iconUnchecked,
                                onInitialized: e => this._onItemInitialized(e.component, item),
                                onContentReady: e => this._onItemContentReady(e.component, item, actionHandler)
                            }
                        }
                    };
                    _proto._createItemOptions = function(_ref) {
                        let {
                            widget: widget,
                            command: command,
                            items: items,
                            valueExpr: valueExpr,
                            displayExpr: displayExpr,
                            showText: showText,
                            hint: hint,
                            icon: icon
                        } = _ref;
                        if ("dxSelectBox" === widget) {
                            return this._createSelectBoxItemOptions(command, hint, items, valueExpr, displayExpr)
                        } else if ("dxTextBox" === widget) {
                            return this._createTextBoxItemOptions(command, hint)
                        } else if ("dxColorBox" === widget) {
                            return this._createColorBoxItemOptions(command, hint, icon)
                        } else if (!widget || "dxButton" === widget) {
                            return {
                                showText: showText || "inMenu"
                            }
                        }
                    };
                    _proto._createSelectBoxItemOptions = function(command, hint, items, valueExpr, displayExpr) {
                        let options = this._createTextEditorItemOptions(hint);
                        options = (0, _extend.extend)(true, options, {
                            options: {
                                dataSource: items,
                                displayExpr: displayExpr || "text",
                                valueExpr: valueExpr || "value"
                            }
                        });
                        const isSelectButton = items && items.every(i => void 0 !== i.icon);
                        if (isSelectButton) {
                            options = (0, _extend.extend)(true, options, {
                                options: {
                                    fieldTemplate: (data, container) => {
                                        (0, _renderer.default)("<i>").addClass(data && data.icon || "dx-diagram-i-selectbox-null-icon dx-diagram-i").appendTo(container);
                                        (0, _renderer.default)("<div>").dxTextBox({
                                            readOnly: true,
                                            stylingMode: "outlined"
                                        }).appendTo(container)
                                    },
                                    itemTemplate: (data, index, container) => {
                                        (0, _renderer.default)(container).attr("title", data.hint);
                                        return '<i class="'.concat(data.icon, '"></i>')
                                    }
                                }
                            })
                        }
                        return options
                    };
                    _proto._createTextBoxItemOptions = function(command, hint) {
                        let options = this._createTextEditorItemOptions(hint);
                        options = (0, _extend.extend)(true, options, {
                            options: {
                                readOnly: true,
                                focusStateEnabled: false,
                                hoverStateEnabled: false,
                                buttons: [{
                                    name: "dropDown",
                                    location: "after",
                                    options: {
                                        icon: "spindown",
                                        disabled: false,
                                        stylingMode: "text",
                                        onClick: e => {
                                            const contextMenu = this._commandContextMenus[command];
                                            if (contextMenu) {
                                                this._toggleContextMenu(contextMenu)
                                            }
                                        }
                                    }
                                }]
                            }
                        });
                        return options
                    };
                    _proto._createColorBoxItemOptions = function(command, hint, icon) {
                        let options = this._createTextEditorItemOptions(hint);
                        if (icon) {
                            options = (0, _extend.extend)(true, options, {
                                options: {
                                    openOnFieldClick: true,
                                    fieldTemplate: (data, container) => {
                                        (0, _renderer.default)("<i>").addClass(icon).css("borderBottomColor", data).appendTo(container);
                                        (0, _renderer.default)("<div>").dxTextBox({
                                            readOnly: true,
                                            stylingMode: "outlined"
                                        }).appendTo(container)
                                    }
                                }
                            })
                        }
                        options = (0, _extend.extend)(true, options, {
                            options: {
                                onOpened: () => {
                                    if (this.option("isMobileView")) {
                                        (0, _renderer.default)("body").addClass("dx-diagram-mobile-toolbar-color-box-opened")
                                    }
                                },
                                onClosed: () => {
                                    (0, _renderer.default)("body").removeClass("dx-diagram-mobile-toolbar-color-box-opened")
                                }
                            }
                        });
                        return options
                    };
                    _proto._createTextEditorItemOptions = function(hint) {
                        return {
                            options: {
                                stylingMode: this.option("editorStylingMode"),
                                hint: hint
                            }
                        }
                    };
                    _proto._createItemActionOptions = function(item, handler) {
                        switch (item.widget) {
                            case "dxSelectBox":
                            case "dxColorBox":
                            case "dxCheckBox":
                                return {
                                    options: {
                                        onValueChanged: e => {
                                            const parameter = _uiDiagram2.default.getItemCommandParameter(this, item, e.component.option("value"));
                                            handler.call(this, item.command, item.name, parameter)
                                        }
                                    }
                                };
                            case "dxTextBox":
                                return {};
                            default:
                                return {
                                    options: {
                                        onClick: e => {
                                            if (!item.items) {
                                                const parameter = _uiDiagram2.default.getItemCommandParameter(this, item);
                                                handler.call(this, item.command, item.name, parameter)
                                            } else {
                                                const contextMenu = e.component._contextMenu;
                                                if (contextMenu) {
                                                    this._toggleContextMenu(contextMenu)
                                                }
                                            }
                                        }
                                    }
                                }
                        }
                    };
                    _proto._toggleContextMenu = function(contextMenu) {
                        this._contextMenuList.forEach(cm => {
                            if (contextMenu !== cm) {
                                cm.hide()
                            }
                        });
                        contextMenu.toggle()
                    };
                    _proto._onItemInitialized = function(widget, item) {
                        this._addItemHelper(item.command, new DiagramToolbarItemHelper(widget))
                    };
                    _proto._onItemContentReady = function(widget, item, actionHandler) {
                        if (("dxButton" === widget.NAME || "dxTextBox" === widget.NAME) && item.items) {
                            const isTouchMode = this._isTouchMode();
                            const $menuContainer = (0, _renderer.default)("<div>").appendTo(this.$element());
                            widget._contextMenu = this._createComponent($menuContainer, _context_menu.default, {
                                items: item.items,
                                target: widget.$element(),
                                cssClass: _uiDiagram2.default.getContextMenuCssClass(),
                                showEvent: "",
                                hideOnOutsideClick: e => !isTouchMode && 0 === (0, _renderer.default)(e.target).closest(widget._contextMenu._dropDownButtonElement).length,
                                focusStateEnabled: false,
                                position: {
                                    at: "left bottom"
                                },
                                itemTemplate: function(itemData, itemIndex, itemElement) {
                                    _uiDiagram2.default.getContextMenuItemTemplate(this, itemData, itemIndex, itemElement)
                                },
                                onItemClick: _ref2 => {
                                    let {
                                        component: component,
                                        itemData: itemData
                                    } = _ref2;
                                    _uiDiagram2.default.onContextMenuItemClick(this, itemData, actionHandler.bind(this));
                                    if (!itemData.items || !itemData.items.length) {
                                        component.hide()
                                    }
                                },
                                onShowing: e => {
                                    if (this._showingSubMenu) {
                                        return
                                    }
                                    this._showingSubMenu = e.component;
                                    this._onSubMenuVisibilityChangingAction({
                                        visible: true,
                                        component: this
                                    });
                                    e.component.option("items", e.component.option("items"));
                                    delete this._showingSubMenu
                                },
                                onInitialized: _ref3 => {
                                    let {
                                        component: component
                                    } = _ref3;
                                    return this._onContextMenuInitialized(component, item, widget)
                                },
                                onDisposing: _ref4 => {
                                    let {
                                        component: component
                                    } = _ref4;
                                    return this._onContextMenuDisposing(component, item)
                                }
                            });
                            if (!isTouchMode) {
                                widget._contextMenu._dropDownButtonElement = widget.$element();
                                if ("dxTextBox" === widget.NAME) {
                                    widget._contextMenu._dropDownButtonElement = widget.getButton("dropDown").element()
                                }
                            }
                        }
                    };
                    _proto._isTouchMode = function() {
                        const {
                            Browser: Browser
                        } = (0, _diagram2.getDiagram)();
                        return Browser.TouchUI
                    };
                    _proto._onContextMenuInitialized = function(widget, item, rootWidget) {
                        this._contextMenuList.push(widget);
                        if (item.command) {
                            this._commandContextMenus[item.command] = widget
                        }
                        this._addContextMenuHelper(item, widget, [], rootWidget)
                    };
                    _proto._addItemHelper = function(command, helper) {
                        if (void 0 !== command) {
                            if (this._itemHelpers[command]) {
                                throw new Error("Toolbar cannot contain duplicated commands.")
                            }
                            this._itemHelpers[command] = helper
                        }
                    };
                    _proto._addContextMenuHelper = function(item, widget, indexPath, rootWidget) {
                        if (item.items) {
                            item.items.forEach((subItem, index) => {
                                const itemIndexPath = indexPath.concat(index);
                                this._addItemHelper(subItem.command, new DiagramToolbarSubItemHelper(widget, itemIndexPath, subItem.command, rootWidget));
                                this._addContextMenuHelper(subItem, widget, itemIndexPath, rootWidget)
                            })
                        }
                    };
                    _proto._onContextMenuDisposing = function(widget, item) {
                        this._contextMenuList.splice(this._contextMenuList.indexOf(widget), 1);
                        delete this._commandContextMenus[item.command]
                    };
                    _proto._executeCommand = function(command, name, value) {
                        if (this._updateLocked) {
                            return
                        }
                        if ("number" === typeof command) {
                            const valueConverter = this._valueConverters[command];
                            if (valueConverter && valueConverter.getCommandValue) {
                                value = valueConverter.getCommandValue(value)
                            }
                            this.bar.raiseBarCommandExecuted(command, value)
                        } else if ("string" === typeof command) {
                            this._onInternalCommandAction({
                                command: command
                            })
                        }
                        if (void 0 !== name) {
                            this._onCustomCommandAction({
                                name: name
                            })
                        }
                    };
                    _proto._createOnInternalCommand = function() {
                        this._onInternalCommandAction = this._createActionByOption("onInternalCommand")
                    };
                    _proto._createOnCustomCommand = function() {
                        this._onCustomCommandAction = this._createActionByOption("onCustomCommand")
                    };
                    _proto._setItemEnabled = function(command, enabled) {
                        if (command in this._itemHelpers) {
                            const helper = this._itemHelpers[command];
                            if (helper.canUpdate(this._showingSubMenu)) {
                                helper.setEnabled(enabled)
                            }
                        }
                    };
                    _proto._setEnabled = function(enabled) {
                        this._toolbarInstance.option("disabled", !enabled);
                        this._contextMenuList.forEach(contextMenu => {
                            contextMenu.option("disabled", !enabled)
                        })
                    };
                    _proto._setItemValue = function(command, value) {
                        try {
                            this._updateLocked = true;
                            if (command in this._itemHelpers) {
                                const helper = this._itemHelpers[command];
                                if (helper.canUpdate(this._showingSubMenu)) {
                                    const valueConverter = this._valueConverters[command];
                                    if (valueConverter && valueConverter.getEditorValue) {
                                        value = valueConverter.getEditorValue(value)
                                    }
                                    let displayValue;
                                    if (valueConverter && valueConverter.getEditorDisplayValue) {
                                        displayValue = valueConverter.getEditorDisplayValue(value)
                                    }
                                    const contextMenu = this._commandContextMenus[command];
                                    helper.setValue(value, displayValue, contextMenu, contextMenu && command)
                                }
                            }
                        } finally {
                            this._updateLocked = false
                        }
                    };
                    _proto._setItemSubItems = function(command, items) {
                        this._updateLocked = true;
                        if (command in this._itemHelpers) {
                            const helper = this._itemHelpers[command];
                            if (helper.canUpdate(this._showingSubMenu)) {
                                const contextMenu = this._commandContextMenus[command];
                                helper.setItems(items, contextMenu, contextMenu && command)
                            }
                        }
                        this._updateLocked = false
                    };
                    _proto._createOnSubMenuVisibilityChangingAction = function() {
                        this._onSubMenuVisibilityChangingAction = this._createActionByOption("onSubMenuVisibilityChanging")
                    };
                    _proto._optionChanged = function(args) {
                        switch (args.name) {
                            case "isMobileView":
                                (0, _renderer.default)("body").removeClass("dx-diagram-mobile-toolbar-color-box-opened");
                                this._invalidate();
                                break;
                            case "onSubMenuVisibilityChanging":
                                this._createOnSubMenuVisibilityChangingAction();
                                break;
                            case "onInternalCommand":
                                this._createOnInternalCommand();
                                break;
                            case "onCustomCommand":
                                this._createOnCustomCommand();
                                break;
                            case "container":
                            case "commands":
                                this._invalidate();
                                break;
                            case "export":
                                break;
                            default:
                                _DiagramPanel.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_DiagramPanel.prototype._getDefaultOptions.call(this), {
                            isMobileView: false,
                            export: {
                                fileName: "Diagram"
                            },
                            locateInMenu: "auto",
                            buttonStylingMode: "text",
                            buttonType: "normal",
                            editorStylingMode: "filled",
                            skipAdjustSize: false
                        })
                    };
                    _proto.setCommandChecked = function(command, checked) {
                        this._setItemValue(command, checked)
                    };
                    _proto.setCommandEnabled = function(command, enabled) {
                        this._setItemEnabled(command, enabled)
                    };
                    return DiagramToolbar
                }(_uiDiagram.default);
                let DiagramToolbarBar = function(_DiagramBar) {
                    _inheritsLoose(DiagramToolbarBar, _DiagramBar);

                    function DiagramToolbarBar() {
                        return _DiagramBar.apply(this, arguments) || this
                    }
                    var _proto2 = DiagramToolbarBar.prototype;
                    _proto2.getCommandKeys = function() {
                        return this._getKeys(this._owner._commands)
                    };
                    _proto2.setItemValue = function(key, value) {
                        this._owner._setItemValue(key, value)
                    };
                    _proto2.setItemEnabled = function(key, enabled) {
                        this._owner._setItemEnabled(key, enabled)
                    };
                    _proto2.setEnabled = function(enabled) {
                        this._owner._setEnabled(enabled)
                    };
                    _proto2.setItemSubItems = function(key, items) {
                        this._owner._setItemSubItems(key, items)
                    };
                    return DiagramToolbarBar
                }(_diagram.default);
                let DiagramToolbarItemHelper = function() {
                    function DiagramToolbarItemHelper(widget) {
                        this._widget = widget
                    }
                    var _proto3 = DiagramToolbarItemHelper.prototype;
                    _proto3.canUpdate = function(showingSubMenu) {
                        return void 0 === showingSubMenu
                    };
                    _proto3.setEnabled = function(enabled) {
                        this._widget.option("disabled", !enabled)
                    };
                    _proto3.setValue = function(value, displayValue, contextMenu, rootCommandKey) {
                        if ("value" in this._widget.option()) {
                            this._updateEditorValue(value, displayValue)
                        } else if (void 0 !== value) {
                            this._updateButtonValue(value)
                        }
                        if (contextMenu) {
                            this._updateContextMenuItemValue(contextMenu, "", rootCommandKey, value)
                        }
                    };
                    _proto3.setItems = function(items, contextMenu, rootCommandKey) {
                        if (contextMenu) {
                            this._updateContextMenuItems(contextMenu, "", rootCommandKey, items)
                        } else {
                            this._updateEditorItems(items)
                        }
                    };
                    _proto3._updateContextMenuItems = function(contextMenu, itemOptionText, rootCommandKey, items) {
                        _uiDiagram2.default.updateContextMenuItems(contextMenu, itemOptionText, rootCommandKey, items)
                    };
                    _proto3._updateEditorItems = function(items) {
                        if ("items" in this._widget.option()) {
                            this._widget.option("items", items.map(item => ({
                                value: _uiDiagram2.default.getItemValue(item),
                                text: item.text
                            })))
                        }
                    };
                    _proto3._updateEditorValue = function(value, displayValue) {
                        this._widget.option("value", value);
                        if (!this._widget.option("selectedItem") && displayValue) {
                            this._widget.option("value", displayValue)
                        }
                    };
                    _proto3._updateButtonValue = function(value) {
                        if (this._widget.option("iconChecked") && this._widget.option("iconUnchecked")) {
                            this._widget.option("icon", value ? this._widget.option("iconChecked") : this._widget.option("iconUnchecked"))
                        } else {
                            this._widget.$element().toggleClass("dx-format-active", value)
                        }
                    };
                    _proto3._updateContextMenuItemValue = function(contextMenu, itemOptionText, rootCommandKey, value) {
                        _uiDiagram2.default.updateContextMenuItemValue(contextMenu, itemOptionText, rootCommandKey, value)
                    };
                    return DiagramToolbarItemHelper
                }();
                let DiagramToolbarSubItemHelper = function(_DiagramToolbarItemHe) {
                    _inheritsLoose(DiagramToolbarSubItemHelper, _DiagramToolbarItemHe);

                    function DiagramToolbarSubItemHelper(widget, indexPath, rootCommandKey, rootWidget) {
                        var _this;
                        _this = _DiagramToolbarItemHe.call(this, widget) || this;
                        _this._indexPath = indexPath;
                        _this._rootCommandKey = rootCommandKey;
                        _this._rootWidget = rootWidget;
                        return _this
                    }
                    var _proto4 = DiagramToolbarSubItemHelper.prototype;
                    _proto4.canUpdate = function(showingSubMenu) {
                        return _DiagramToolbarItemHe.prototype.canUpdate.call(this, showingSubMenu) || showingSubMenu === this._widget
                    };
                    _proto4.setEnabled = function(enabled) {
                        this._widget.option(this._getItemOptionText() + "disabled", !enabled);
                        const rootEnabled = this._hasEnabledCommandItems(this._widget.option("items"));
                        this._rootWidget.option("disabled", !rootEnabled)
                    };
                    _proto4._hasEnabledCommandItems = function(items) {
                        if (items) {
                            return items.some(item => void 0 !== item.command && !item.disabled || this._hasEnabledCommandItems(item.items))
                        }
                        return false
                    };
                    _proto4.setValue = function(value) {
                        this._updateContextMenuItemValue(this._widget, this._getItemOptionText(), this._rootCommandKey, value)
                    };
                    _proto4.setItems = function(items) {
                        this._updateContextMenuItems(this._widget, this._getItemOptionText(), this._rootCommandKey, items)
                    };
                    _proto4._getItemOptionText = function() {
                        return _uiDiagram2.default.getItemOptionText(this._widget, this._indexPath)
                    };
                    return DiagramToolbarSubItemHelper
                }(DiagramToolbarItemHelper);
                var _default = DiagramToolbar;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        63842:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.toolbox.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _text_box = _interopRequireDefault(__webpack_require__( /*! ../text_box */ 29837));
                var _accordion = _interopRequireDefault(__webpack_require__( /*! ../accordion */ 76219));
                var _scroll_view = _interopRequireDefault(__webpack_require__( /*! ../scroll_view */ 4741));
                var _tooltip = _interopRequireDefault(__webpack_require__( /*! ../tooltip */ 94920));
                var _diagram = __webpack_require__( /*! ./diagram.importer */ 348);
                var _uiDiagram = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.floating_panel */ 99967));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let DiagramToolbox = function(_DiagramFloatingPanel) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(DiagramToolbox, _DiagramFloatingPanel);

                    function DiagramToolbox() {
                        return _DiagramFloatingPanel.apply(this, arguments) || this
                    }
                    var _proto = DiagramToolbox.prototype;
                    _proto._init = function() {
                        _DiagramFloatingPanel.prototype._init.call(this);
                        this._toolboxes = [];
                        this._filterText = "";
                        this._createOnShapeCategoryRenderedAction();
                        this._createOnFilterChangedAction()
                    };
                    _proto._getPopupClass = function() {
                        return "dx-diagram-toolbox-popup"
                    };
                    _proto._getPopupHeight = function() {
                        return this.isMobileView() ? "100%" : _DiagramFloatingPanel.prototype._getPopupHeight.call(this)
                    };
                    _proto._getPopupMaxHeight = function() {
                        return this.isMobileView() ? "100%" : _DiagramFloatingPanel.prototype._getPopupMaxHeight.call(this)
                    };
                    _proto._getPopupMinHeight = function() {
                        return 130
                    };
                    _proto._getPopupPosition = function() {
                        const $parent = this.option("offsetParent");
                        const position = {
                            my: "left top",
                            at: "left top",
                            of: $parent
                        };
                        if (!this.isMobileView()) {
                            return (0, _extend.extend)(position, {
                                offset: this.option("offsetX") + " " + this.option("offsetY")
                            })
                        }
                        return position
                    };
                    _proto._getPopupAnimation = function() {
                        const $parent = this.option("offsetParent");
                        if (this.isMobileView()) {
                            return {
                                hide: this._getPopupSlideAnimationObject({
                                    direction: "left",
                                    from: {
                                        position: {
                                            my: "left top",
                                            at: "left top",
                                            of: $parent
                                        }
                                    },
                                    to: {
                                        position: {
                                            my: "right top",
                                            at: "left top",
                                            of: $parent
                                        }
                                    }
                                }),
                                show: this._getPopupSlideAnimationObject({
                                    direction: "right",
                                    from: {
                                        position: {
                                            my: "right top",
                                            at: "left top",
                                            of: $parent
                                        }
                                    },
                                    to: {
                                        position: {
                                            my: "left top",
                                            at: "left top",
                                            of: $parent
                                        }
                                    }
                                })
                            }
                        }
                        return _DiagramFloatingPanel.prototype._getPopupAnimation.call(this)
                    };
                    _proto._getPopupOptions = function() {
                        const options = _DiagramFloatingPanel.prototype._getPopupOptions.call(this);
                        if (!this.isMobileView()) {
                            return (0, _extend.extend)(options, {
                                showTitle: true,
                                toolbarItems: [{
                                    widget: "dxButton",
                                    location: "center",
                                    options: {
                                        activeStateEnabled: false,
                                        focusStateEnabled: false,
                                        hoverStateEnabled: false,
                                        icon: "diagram-toolbox-drag",
                                        stylingMode: "outlined",
                                        type: "normal"
                                    }
                                }]
                            })
                        }
                        return options
                    };
                    _proto._renderPopupContent = function($parent) {
                        let panelHeight = "100%";
                        if (this.option("showSearch")) {
                            const $inputContainer = (0, _renderer.default)("<div>").addClass("dx-diagram-toolbox-input-container").appendTo($parent);
                            this._updateElementWidth($inputContainer);
                            this._renderSearchInput($inputContainer);
                            if ((0, _window.hasWindow)()) {
                                panelHeight = "calc(100% - " + (0, _size.getHeight)(this._searchInput.$element()) + "px)"
                            }
                        }
                        const $panel = (0, _renderer.default)("<div>").addClass("dx-diagram-toolbox-panel").appendTo($parent);
                        (0, _size.setHeight)($panel, panelHeight);
                        this._updateElementWidth($panel);
                        this._renderScrollView($panel)
                    };
                    _proto._updateElementWidth = function($element) {
                        if (void 0 !== this.option("toolboxWidth")) {
                            $element.css("width", this.option("toolboxWidth"))
                        }
                    };
                    _proto.updateMaxHeight = function() {
                        if (this.isMobileView()) {
                            return
                        }
                        let maxHeight = 6;
                        if (this._popup) {
                            const $title = this._getPopupTitle();
                            maxHeight += (0, _size.getOuterHeight)($title)
                        }
                        if (this._accordion) {
                            maxHeight += (0, _size.getOuterHeight)(this._accordion.$element())
                        }
                        if (this._searchInput) {
                            maxHeight += (0, _size.getOuterHeight)(this._searchInput.$element())
                        }
                        this.option("maxHeight", maxHeight)
                    };
                    _proto._renderSearchInput = function($parent) {
                        const $input = (0, _renderer.default)("<div>").addClass("dx-diagram-toolbox-input").appendTo($parent);
                        this._searchInput = this._createComponent($input, _text_box.default, {
                            stylingMode: "outlined",
                            placeholder: _message.default.format("dxDiagram-uiSearch"),
                            onValueChanged: data => {
                                this._onInputChanged(data.value)
                            },
                            valueChangeEvent: "keyup",
                            buttons: [{
                                name: "search",
                                location: "after",
                                options: {
                                    activeStateEnabled: false,
                                    focusStateEnabled: false,
                                    hoverStateEnabled: false,
                                    icon: "search",
                                    stylingMode: "outlined",
                                    type: "normal",
                                    onClick: () => {
                                        this._searchInput.focus()
                                    }
                                }
                            }]
                        })
                    };
                    _proto._renderScrollView = function($parent) {
                        const $scrollViewWrapper = (0, _renderer.default)("<div>").appendTo($parent);
                        this._scrollView = this._createComponent($scrollViewWrapper, _scroll_view.default);
                        const _moveIsAllowed = this._scrollView._moveIsAllowed.bind(this._scrollView);
                        this._scrollView._moveIsAllowed = e => {
                            for (let i = 0; i < this._toolboxes.length; i++) {
                                const $element = this._toolboxes[i];
                                if ((0, _renderer.default)($element).children(".dxdi-tb-start-drag-flag").length) {
                                    return false
                                }
                            }
                            return _moveIsAllowed(e)
                        };
                        const $accordion = (0, _renderer.default)("<div>").appendTo(this._scrollView.content());
                        this._updateElementWidth($accordion);
                        this._renderAccordion($accordion)
                    };
                    _proto._getAccordionDataSource = function() {
                        const result = [];
                        const toolboxGroups = this.option("toolboxGroups");
                        for (let i = 0; i < toolboxGroups.length; i++) {
                            const category = toolboxGroups[i].category;
                            const title = toolboxGroups[i].title;
                            const groupObj = {
                                category: category,
                                title: title || category,
                                expanded: toolboxGroups[i].expanded,
                                displayMode: toolboxGroups[i].displayMode,
                                shapes: toolboxGroups[i].shapes,
                                onTemplate: (widget, $element, data) => {
                                    const $toolboxElement = (0, _renderer.default)($element);
                                    this._onShapeCategoryRenderedAction({
                                        category: data.category,
                                        displayMode: data.displayMode,
                                        dataToggle: "shape-toolbox-tooltip",
                                        shapes: data.shapes,
                                        $element: $toolboxElement
                                    });
                                    this._toolboxes.push($toolboxElement);
                                    if ("" !== this._filterText) {
                                        this._onFilterChangedAction({
                                            text: this._filterText,
                                            filteringToolboxes: this._toolboxes.length - 1
                                        })
                                    }
                                    this._createTooltips($toolboxElement)
                                }
                            };
                            result.push(groupObj)
                        }
                        return result
                    };
                    _proto._createTooltips = function($toolboxElement) {
                        if (this._isTouchMode()) {
                            return
                        }
                        const targets = $toolboxElement.find('[data-toggle="shape-toolbox-tooltip"]');
                        const $container = this.$element();
                        targets.each((index, element) => {
                            const $target = (0, _renderer.default)(element);
                            const title = $target.attr("title");
                            if (title) {
                                const $tooltip = (0, _renderer.default)("<div>").text(title).appendTo($container);
                                this._createComponent($tooltip, _tooltip.default, {
                                    target: $target.get(0),
                                    showEvent: "mouseenter",
                                    hideEvent: "mouseleave",
                                    position: "top",
                                    animation: {
                                        show: {
                                            type: "fade",
                                            from: 0,
                                            to: 1,
                                            delay: 500
                                        },
                                        hide: {
                                            type: "fade",
                                            from: 1,
                                            to: 0,
                                            delay: 100
                                        }
                                    }
                                })
                            }
                        })
                    };
                    _proto._isTouchMode = function() {
                        const {
                            Browser: Browser
                        } = (0, _diagram.getDiagram)();
                        return Browser.TouchUI
                    };
                    _proto._renderAccordion = function($container) {
                        this._accordion = this._createComponent($container, _accordion.default, {
                            multiple: true,
                            animationDuration: 0,
                            activeStateEnabled: false,
                            focusStateEnabled: false,
                            hoverStateEnabled: false,
                            collapsible: true,
                            displayExpr: "title",
                            dataSource: this._getAccordionDataSource(),
                            disabled: this.option("disabled"),
                            itemTemplate: (data, index, $element) => {
                                data.onTemplate(this, $element, data)
                            },
                            onSelectionChanged: e => {
                                this._updateScrollAnimateSubscription(e.component)
                            },
                            onContentReady: e => {
                                e.component.option("selectedItems", []);
                                const items = e.component.option("dataSource");
                                for (let i = 0; i < items.length; i++) {
                                    if (false === items[i].expanded) {
                                        e.component.collapseItem(i)
                                    } else if (true === items[i].expanded) {
                                        e.component.expandItem(i)
                                    }
                                }
                                if (items.length && void 0 === items[0].expanded) {
                                    e.component.expandItem(0)
                                }
                                this._updateScrollAnimateSubscription(e.component)
                            }
                        })
                    };
                    _proto._updateScrollAnimateSubscription = function(component) {
                        component._deferredAnimate = new _deferred.Deferred;
                        component._deferredAnimate.done(() => {
                            this.updateMaxHeight();
                            this._scrollView.update();
                            this._updateScrollAnimateSubscription(component)
                        })
                    };
                    _proto._onInputChanged = function(text) {
                        this._filterText = text;
                        this._onFilterChangedAction({
                            text: this._filterText,
                            filteringToolboxes: this._toolboxes.map(($element, index) => index)
                        });
                        this.updateTooltips();
                        this.updateMaxHeight();
                        this._scrollView.update()
                    };
                    _proto.updateFilter = function() {
                        this._onInputChanged(this._filterText)
                    };
                    _proto.updateTooltips = function() {
                        this._toolboxes.forEach($element => {
                            const $tooltipContainer = (0, _renderer.default)($element);
                            this._createTooltips($tooltipContainer)
                        })
                    };
                    _proto._createOnShapeCategoryRenderedAction = function() {
                        this._onShapeCategoryRenderedAction = this._createActionByOption("onShapeCategoryRendered")
                    };
                    _proto._createOnFilterChangedAction = function() {
                        this._onFilterChangedAction = this._createActionByOption("onFilterChanged")
                    };
                    _proto._optionChanged = function(args) {
                        switch (args.name) {
                            case "onShapeCategoryRendered":
                                this._createOnShapeCategoryRenderedAction();
                                break;
                            case "onFilterChanged":
                                this._createOnFilterChangedAction();
                                break;
                            case "showSearch":
                            case "toolboxWidth":
                                this._invalidate();
                                break;
                            case "toolboxGroups":
                                this._accordion.option("dataSource", this._getAccordionDataSource());
                                break;
                            default:
                                _DiagramFloatingPanel.prototype._optionChanged.call(this, args)
                        }
                    };
                    return DiagramToolbox
                }(_uiDiagram.default);
                var _default = DiagramToolbox;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        64225:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/diagram/ui.diagram.view_toolbar.js ***!
              \***********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _uiDiagram = _interopRequireDefault(__webpack_require__( /*! ./ui.diagram.toolbar */ 38148));
                var _diagram = _interopRequireDefault(__webpack_require__( /*! ./diagram.commands_manager */ 72321));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let DiagramViewToolbar = function(_DiagramToolbar) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(DiagramViewToolbar, _DiagramToolbar);

                    function DiagramViewToolbar() {
                        return _DiagramToolbar.apply(this, arguments) || this
                    }
                    var _proto = DiagramViewToolbar.prototype;
                    _proto._getCommands = function() {
                        return _diagram.default.getViewToolbarCommands(this.option("commands"), this.option("excludeCommands"))
                    };
                    return DiagramViewToolbar
                }(_uiDiagram.default);
                var _default = DiagramViewToolbar;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        15029:
            /*!**********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/dialog.js ***!
              \**********************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.custom = exports.confirm = exports.alert = void 0;
                var _size = __webpack_require__( /*! ../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _action = _interopRequireDefault(__webpack_require__( /*! ../core/action */ 62414));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../core/devices */ 20530));
                var _config = _interopRequireDefault(__webpack_require__( /*! ../core/config */ 80209));
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../core/guid */ 73176));
                var _dom = __webpack_require__( /*! ../core/utils/dom */ 3532);
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../events/core/events_engine */ 55994));
                var _view_port = __webpack_require__( /*! ../core/utils/view_port */ 77695);
                var _themes = __webpack_require__( /*! ./themes */ 75811);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../localization/message */ 28109));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./widget/ui.errors */ 96688));
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ./popup/ui.popup */ 51495));
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const window = (0, _window.getWindow)();
                const DEFAULT_BUTTON = {
                    text: "OK",
                    onClick: function() {
                        return true
                    }
                };
                const DX_DIALOG_WRAPPER_CLASSNAME = "".concat("dx-dialog", "-wrapper");
                const DX_DIALOG_ROOT_CLASSNAME = "".concat("dx-dialog", "-root");
                const DX_DIALOG_CONTENT_CLASSNAME = "".concat("dx-dialog", "-content");
                const DX_DIALOG_MESSAGE_CLASSNAME = "".concat("dx-dialog", "-message");
                const DX_DIALOG_BUTTONS_CLASSNAME = "".concat("dx-dialog", "-buttons");
                const DX_DIALOG_BUTTON_CLASSNAME = "".concat("dx-dialog", "-button");
                const getApplyButtonConfig = () => {
                    if ((0, _themes.isFluent)()) {
                        return {
                            stylingMode: "contained",
                            type: "default"
                        }
                    }
                    return {}
                };
                const getCancelButtonConfig = () => {
                    if ((0, _themes.isFluent)()) {
                        return {
                            stylingMode: "outlined",
                            type: "default"
                        }
                    }
                    return {}
                };
                const custom = function(options) {
                    var _options$title;
                    const deferred = new _deferred.Deferred;
                    options = options || {};
                    const $element = (0, _renderer.default)("<div>").addClass("dx-dialog").appendTo((0, _view_port.value)());
                    const isMessageDefined = "message" in options;
                    const isMessageHtmlDefined = "messageHtml" in options;
                    if (isMessageDefined) {
                        _ui.default.log("W1013")
                    }
                    const messageHtml = String(isMessageHtmlDefined ? options.messageHtml : options.message);
                    const messageId = options.title ? null : new _guid.default;
                    const $message = (0, _renderer.default)("<div>").addClass(DX_DIALOG_MESSAGE_CLASSNAME).html(messageHtml).attr("id", messageId);
                    const popupToolbarItems = [];
                    const popupInstance = new _ui2.default($element, (0, _extend.extend)({
                        title: null !== (_options$title = options.title) && void 0 !== _options$title ? _options$title : "",
                        showTitle: (0, _common.ensureDefined)(options.showTitle, true),
                        dragEnabled: (0, _common.ensureDefined)(options.dragEnabled, true),
                        height: "auto",
                        width: options.width,
                        showCloseButton: options.showCloseButton || false,
                        ignoreChildEvents: false,
                        container: $element,
                        visualContainer: window,
                        dragAndResizeArea: window,
                        onContentReady: function(args) {
                            args.component.$content().addClass(DX_DIALOG_CONTENT_CLASSNAME).append($message);
                            if (messageId) {
                                args.component.$overlayContent().attr("aria-labelledby", messageId)
                            }
                        },
                        onShowing: function(e) {
                            e.component.bottomToolbar().addClass(DX_DIALOG_BUTTONS_CLASSNAME).find(".".concat("dx-button")).addClass(DX_DIALOG_BUTTON_CLASSNAME);
                            (0, _dom.resetActiveElement)()
                        },
                        onShown: function(e) {
                            const $firstButton = e.component.bottomToolbar().find(".".concat("dx-button")).first();
                            _events_engine.default.trigger($firstButton, "focus")
                        },
                        onHiding: function() {
                            deferred.reject()
                        },
                        onHidden: function(_ref) {
                            let {
                                element: element
                            } = _ref;
                            (0, _renderer.default)(element).remove()
                        },
                        animation: {
                            show: {
                                type: "pop",
                                duration: 400
                            },
                            hide: {
                                type: "pop",
                                duration: 400,
                                to: {
                                    opacity: 0,
                                    scale: 0
                                },
                                from: {
                                    opacity: 1,
                                    scale: 1
                                }
                            }
                        },
                        rtlEnabled: (0, _config.default)().rtlEnabled,
                        position: {
                            boundaryOffset: {
                                h: 10,
                                v: 0
                            }
                        }
                    }, options.popupOptions));
                    const buttonOptions = options.buttons || [DEFAULT_BUTTON];
                    buttonOptions.forEach(options => {
                        const action = new _action.default(options.onClick, {
                            context: popupInstance
                        });
                        popupToolbarItems.push({
                            toolbar: "bottom",
                            location: _devices.default.current().android ? "after" : "center",
                            widget: "dxButton",
                            options: _extends({}, options, {
                                onClick: function() {
                                    const result = action.execute(...arguments);
                                    hide(result)
                                }
                            })
                        })
                    });
                    popupInstance.option("toolbarItems", popupToolbarItems);
                    popupInstance.$wrapper().addClass(DX_DIALOG_WRAPPER_CLASSNAME);
                    if (options.position) {
                        popupInstance.option("position", options.position)
                    }
                    popupInstance.$wrapper().addClass(DX_DIALOG_ROOT_CLASSNAME);

                    function hide(value) {
                        deferred.resolve(value);
                        popupInstance.hide()
                    }
                    return {
                        show: function() {
                            if ("phone" === _devices.default.real().deviceType) {
                                const isPortrait = (0, _size.getHeight)(window) > (0, _size.getWidth)(window);
                                const width = isPortrait ? "90%" : "60%";
                                popupInstance.option({
                                    width: width
                                })
                            }
                            popupInstance.show();
                            return deferred.promise()
                        },
                        hide: hide
                    }
                };
                exports.custom = custom;
                exports.alert = function(messageHtml) {
                    let title = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "";
                    let showTitle = arguments.length > 2 ? arguments[2] : void 0;
                    const options = (0, _type.isPlainObject)(messageHtml) ? messageHtml : {
                        title: title,
                        messageHtml: messageHtml,
                        showTitle: showTitle,
                        buttons: [_extends({}, DEFAULT_BUTTON, getApplyButtonConfig())],
                        dragEnabled: showTitle
                    };
                    return custom(options).show()
                };
                exports.confirm = function(messageHtml) {
                    let title = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "";
                    let showTitle = arguments.length > 2 ? arguments[2] : void 0;
                    const options = (0, _type.isPlainObject)(messageHtml) ? messageHtml : {
                        title: title,
                        messageHtml: messageHtml,
                        showTitle: showTitle,
                        buttons: [_extends({
                            text: _message.default.format("Yes"),
                            onClick: function() {
                                return true
                            }
                        }, getApplyButtonConfig()), _extends({
                            text: _message.default.format("No"),
                            onClick: function() {
                                return false
                            }
                        }, getCancelButtonConfig())],
                        dragEnabled: showTitle
                    };
                    return custom(options).show()
                }
            },
        42160:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/draggable.js ***!
              \*************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_draggable = (obj = __webpack_require__( /*! ../__internal/m_draggable */ 86988), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _m_draggable.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        45065:
            /*!**********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/drawer.js ***!
              \**********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _ui = (obj = __webpack_require__( /*! ./drawer/ui.drawer */ 32089), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _ui.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        68890:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/drawer/ui.drawer.animation.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.animation = void 0;
                var _fx = (obj = __webpack_require__( /*! ../../animation/fx */ 87209), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _inflector = __webpack_require__( /*! ../../core/utils/inflector */ 78008);
                const animation = {
                    moveTo(config) {
                        const $element = config.$element;
                        const position = config.position;
                        const direction = config.direction || "left";
                        const toConfig = {};
                        let animationType;
                        switch (direction) {
                            case "right":
                                toConfig.transform = "translate(" + position + "px, 0px)";
                                animationType = "custom";
                                break;
                            case "left":
                                toConfig.left = position;
                                animationType = "slide";
                                break;
                            case "top":
                            case "bottom":
                                toConfig.top = position;
                                animationType = "slide"
                        }
                        _fx.default.animate($element, {
                            type: animationType,
                            to: toConfig,
                            duration: config.duration,
                            complete: config.complete
                        })
                    },
                    margin(config) {
                        const $element = config.$element;
                        const margin = config.margin;
                        const direction = config.direction || "left";
                        const toConfig = {};
                        toConfig["margin" + (0, _inflector.camelize)(direction, true)] = margin;
                        _fx.default.animate($element, {
                            to: toConfig,
                            duration: config.duration,
                            complete: config.complete
                        })
                    },
                    fade($element, config, duration, completeAction) {
                        _fx.default.animate($element, {
                            type: "fade",
                            to: config.to,
                            from: config.from,
                            duration: duration,
                            complete: completeAction
                        })
                    },
                    size(config) {
                        const $element = config.$element;
                        const size = config.size;
                        const direction = config.direction || "left";
                        const marginTop = config.marginTop || 0;
                        const duration = config.duration;
                        const toConfig = {};
                        if ("right" === direction || "left" === direction) {
                            toConfig.width = size
                        } else {
                            toConfig.height = size
                        }
                        if ("bottom" === direction) {
                            toConfig.marginTop = marginTop
                        }
                        _fx.default.animate($element, {
                            to: toConfig,
                            duration: duration,
                            complete: config.complete
                        })
                    },
                    complete($element) {
                        _fx.default.stop($element, true)
                    }
                };
                exports.animation = animation
            },
        32089:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/drawer/ui.drawer.js ***!
              \********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _element = __webpack_require__( /*! ../../core/element */ 6415);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _position = __webpack_require__( /*! ../../core/utils/position */ 37518);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _empty_template = __webpack_require__( /*! ../../core/templates/empty_template */ 10688);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _uiDrawerRenderingStrategy = _interopRequireDefault(__webpack_require__( /*! ./ui.drawer.rendering.strategy.push */ 89266));
                var _uiDrawerRenderingStrategy2 = _interopRequireDefault(__webpack_require__( /*! ./ui.drawer.rendering.strategy.shrink */ 74780));
                var _uiDrawerRenderingStrategy3 = _interopRequireDefault(__webpack_require__( /*! ./ui.drawer.rendering.strategy.overlap */ 5738));
                var _uiDrawer = __webpack_require__( /*! ./ui.drawer.animation */ 68890);
                var _click = __webpack_require__( /*! ../../events/click */ 95429);
                var _fx = _interopRequireDefault(__webpack_require__( /*! ../../animation/fx */ 87209));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _visibility_change = __webpack_require__( /*! ../../events/visibility_change */ 80506);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const Drawer = _ui.default.inherit({
                    _getDefaultOptions() {
                        return (0, _extend.extend)(this.callBase(), {
                            position: "left",
                            opened: false,
                            minSize: null,
                            maxSize: null,
                            shading: false,
                            template: "panel",
                            openedStateMode: "shrink",
                            revealMode: "slide",
                            animationEnabled: true,
                            animationDuration: 400,
                            closeOnOutsideClick: false,
                            contentTemplate: "content"
                        })
                    },
                    _init() {
                        this.callBase();
                        this._initStrategy();
                        this.$element().addClass("dx-drawer");
                        this._whenAnimationCompleted = void 0;
                        this._whenPanelContentRendered = void 0;
                        this._whenPanelContentRefreshed = void 0;
                        this._$wrapper = (0, _renderer.default)("<div>").addClass("dx-drawer-wrapper");
                        this._$viewContentWrapper = (0, _renderer.default)("<div>").addClass("dx-drawer-content");
                        this._$wrapper.append(this._$viewContentWrapper);
                        this.$element().append(this._$wrapper)
                    },
                    _initStrategy() {
                        switch (this.option("openedStateMode")) {
                            case "push":
                                this._strategy = new _uiDrawerRenderingStrategy.default(this);
                                break;
                            case "shrink":
                                this._strategy = new _uiDrawerRenderingStrategy2.default(this);
                                break;
                            case "overlap":
                                this._strategy = new _uiDrawerRenderingStrategy3.default(this);
                                break;
                            default:
                                this._strategy = new _uiDrawerRenderingStrategy.default(this)
                        }
                    },
                    _getAnonymousTemplateName: function() {
                        return "content"
                    },
                    _initTemplates() {
                        const defaultTemplates = {};
                        defaultTemplates.panel = new _empty_template.EmptyTemplate;
                        defaultTemplates.content = new _empty_template.EmptyTemplate;
                        this._templateManager.addDefaultTemplates(defaultTemplates);
                        this.callBase()
                    },
                    _viewContentWrapperClickHandler(e) {
                        let closeOnOutsideClick = this.option("closeOnOutsideClick");
                        if ((0, _type.isFunction)(closeOnOutsideClick)) {
                            closeOnOutsideClick = closeOnOutsideClick(e)
                        }
                        if (closeOnOutsideClick && this.option("opened")) {
                            this.stopAnimations();
                            if (this.option("shading")) {
                                e.preventDefault()
                            }
                            this.hide()
                        }
                    },
                    _initMarkup() {
                        this.callBase();
                        this._toggleOpenedStateClass(this.option("opened"));
                        this._renderPanelContentWrapper();
                        this._refreshOpenedStateModeClass();
                        this._refreshRevealModeClass();
                        this._renderShader();
                        this._refreshPositionClass();
                        this._whenPanelContentRendered = new _deferred.Deferred;
                        this._strategy.renderPanelContent(this._whenPanelContentRendered);
                        this._strategy.onPanelContentRendered();
                        this._renderViewContent();
                        _events_engine.default.off(this._$viewContentWrapper, _click.name);
                        _events_engine.default.on(this._$viewContentWrapper, _click.name, this._viewContentWrapperClickHandler.bind(this));
                        this._refreshWrapperChildrenOrder()
                    },
                    _render() {
                        this._initMinMaxSize();
                        this.callBase();
                        this._whenPanelContentRendered.always(() => {
                            this._initMinMaxSize();
                            this._strategy.refreshPanelElementSize("slide" === this.option("revealMode") || !this.isHorizontalDirection());
                            this._renderPosition(this.option("opened"), true);
                            this._removePanelManualPosition()
                        })
                    },
                    _removePanelManualPosition() {
                        if (this._$panelContentWrapper.attr("manualposition")) {
                            this._$panelContentWrapper.removeAttr("manualPosition");
                            this._$panelContentWrapper.css({
                                position: "",
                                top: "",
                                left: "",
                                right: "",
                                bottom: ""
                            })
                        }
                    },
                    _renderPanelContentWrapper() {
                        this._$panelContentWrapper = (0, _renderer.default)("<div>").addClass("dx-drawer-panel-content");
                        const position = this.calcTargetPosition();
                        if ("push" === this.option("openedStateMode") && ["top", "bottom"].indexOf(position) > -1) {
                            this._$panelContentWrapper.addClass("dx-drawer-panel-content-push-top-or-bottom")
                        }
                        if ("overlap" !== this.option("openedStateMode") && !this.option("opened") && !this.option("minSize")) {
                            this._$panelContentWrapper.attr("manualposition", true);
                            this._$panelContentWrapper.css({
                                position: "absolute",
                                top: "-10000px",
                                left: "-10000px",
                                right: "auto",
                                bottom: "auto"
                            })
                        }
                        this._$wrapper.append(this._$panelContentWrapper)
                    },
                    _refreshOpenedStateModeClass(prevOpenedStateMode) {
                        if (prevOpenedStateMode) {
                            this.$element().removeClass("dx-drawer-" + prevOpenedStateMode)
                        }
                        this.$element().addClass("dx-drawer-" + this.option("openedStateMode"))
                    },
                    _refreshPositionClass(prevPosition) {
                        if (prevPosition) {
                            this.$element().removeClass("dx-drawer-" + prevPosition)
                        }
                        this.$element().addClass("dx-drawer-" + this.calcTargetPosition())
                    },
                    _refreshWrapperChildrenOrder() {
                        const position = this.calcTargetPosition();
                        if (this._strategy.isViewContentFirst(position, this.option("rtlEnabled"))) {
                            this._$wrapper.prepend(this._$viewContentWrapper)
                        } else {
                            this._$wrapper.prepend(this._$panelContentWrapper)
                        }
                    },
                    _refreshRevealModeClass(prevRevealMode) {
                        if (prevRevealMode) {
                            this.$element().removeClass("dx-drawer-" + prevRevealMode)
                        }
                        this.$element().addClass("dx-drawer-" + this.option("revealMode"))
                    },
                    _renderViewContent() {
                        const contentTemplateOption = this.option("contentTemplate");
                        const contentTemplate = this._getTemplate(contentTemplateOption);
                        if (contentTemplate) {
                            const $viewTemplate = contentTemplate.render({
                                container: this.viewContent(),
                                noModel: true,
                                transclude: this._templateManager.anonymousTemplateName === contentTemplateOption
                            });
                            if ($viewTemplate.hasClass("ng-scope")) {
                                (0, _renderer.default)(this._$viewContentWrapper).children().not(".".concat("dx-drawer-shader")).replaceWith($viewTemplate)
                            }
                        }
                    },
                    _renderShader() {
                        this._$shader = this._$shader || (0, _renderer.default)("<div>").addClass("dx-drawer-shader");
                        this._$shader.appendTo(this.viewContent());
                        this._toggleShaderVisibility(this.option("opened"))
                    },
                    _initSize() {
                        this._initMinMaxSize()
                    },
                    _initMinMaxSize() {
                        const realPanelSize = this.isHorizontalDirection() ? this.getRealPanelWidth() : this.getRealPanelHeight();
                        this._maxSize = this.option("maxSize") || realPanelSize;
                        this._minSize = this.option("minSize") || 0
                    },
                    calcTargetPosition() {
                        const position = this.option("position");
                        const rtl = this.option("rtlEnabled");
                        let result = position;
                        if ("before" === position) {
                            result = rtl ? "right" : "left"
                        } else if ("after" === position) {
                            result = rtl ? "left" : "right"
                        }
                        return result
                    },
                    getOverlayTarget() {
                        return this._$wrapper
                    },
                    getOverlay() {
                        return this._overlay
                    },
                    getMaxSize() {
                        return this._maxSize
                    },
                    getMinSize() {
                        return this._minSize
                    },
                    getRealPanelWidth() {
                        if ((0, _window.hasWindow)()) {
                            if ((0, _type.isDefined)(this.option("templateSize"))) {
                                return this.option("templateSize")
                            } else {
                                return (0, _position.getBoundingRect)(this._getPanelTemplateElement()).width
                            }
                        } else {
                            return 0
                        }
                    },
                    getRealPanelHeight() {
                        if ((0, _window.hasWindow)()) {
                            if ((0, _type.isDefined)(this.option("templateSize"))) {
                                return this.option("templateSize")
                            } else {
                                return (0, _position.getBoundingRect)(this._getPanelTemplateElement()).height
                            }
                        } else {
                            return 0
                        }
                    },
                    _getPanelTemplateElement() {
                        const $panelContent = this._strategy.getPanelContent();
                        let $result = $panelContent;
                        if ($panelContent.children().length) {
                            $result = $panelContent.children().eq(0);
                            if ($panelContent.hasClass("dx-overlay-content") && $result.hasClass("dx-template-wrapper") && $result.children().length) {
                                $result = $result.children().eq(0)
                            }
                        }
                        return $result.get(0)
                    },
                    getElementHeight($element) {
                        const $children = $element.children();
                        return $children.length ? (0, _position.getBoundingRect)($children.eq(0).get(0)).height : (0, _position.getBoundingRect)($element.get(0)).height
                    },
                    isHorizontalDirection() {
                        const position = this.calcTargetPosition();
                        return "left" === position || "right" === position
                    },
                    stopAnimations(jumpToEnd) {
                        _fx.default.stop(this._$shader, jumpToEnd);
                        _fx.default.stop((0, _renderer.default)(this.content()), jumpToEnd);
                        _fx.default.stop((0, _renderer.default)(this.viewContent()), jumpToEnd);
                        const overlay = this.getOverlay();
                        if (overlay) {
                            _fx.default.stop((0, _renderer.default)(overlay.$content()), jumpToEnd)
                        }
                    },
                    setZIndex(zIndex) {
                        this._$shader.css("zIndex", zIndex - 1);
                        this._$panelContentWrapper.css("zIndex", zIndex)
                    },
                    resizeContent() {
                        this.resizeViewContent
                    },
                    resizeViewContent() {
                        (0, _visibility_change.triggerResizeEvent)(this.viewContent())
                    },
                    _isInvertedPosition() {
                        const position = this.calcTargetPosition();
                        return "right" === position || "bottom" === position
                    },
                    _renderPosition(isDrawerOpened, disableAnimation, jumpToEnd) {
                        this.stopAnimations(jumpToEnd);
                        if (!(0, _window.hasWindow)()) {
                            return
                        }(0, _renderer.default)(this.viewContent()).css("paddingLeft", 0);
                        (0, _renderer.default)(this.viewContent()).css("paddingRight", 0);
                        (0, _renderer.default)(this.viewContent()).css("paddingTop", 0);
                        (0, _renderer.default)(this.viewContent()).css("paddingBottom", 0);
                        let animationEnabled = this.option("animationEnabled");
                        if (true === disableAnimation) {
                            animationEnabled = false
                        }
                        if (isDrawerOpened) {
                            this._toggleShaderVisibility(isDrawerOpened)
                        }
                        this._strategy.renderPosition(animationEnabled, this.option("animationDuration"))
                    },
                    _animationCompleteHandler() {
                        this.resizeViewContent();
                        if (this._whenAnimationCompleted) {
                            this._whenAnimationCompleted.resolve()
                        }
                    },
                    _getPositionCorrection() {
                        return this._isInvertedPosition() ? -1 : 1
                    },
                    _dispose() {
                        _uiDrawer.animation.complete((0, _renderer.default)(this.viewContent()));
                        this.callBase()
                    },
                    _visibilityChanged(visible) {
                        if (visible) {
                            this._dimensionChanged()
                        }
                    },
                    _dimensionChanged() {
                        this._initMinMaxSize();
                        this._strategy.refreshPanelElementSize("slide" === this.option("revealMode"));
                        this._renderPosition(this.option("opened"), true)
                    },
                    _toggleShaderVisibility(visible) {
                        if (this.option("shading")) {
                            this._$shader.toggleClass("dx-state-invisible", !visible);
                            this._$shader.css("visibility", visible ? "visible" : "hidden")
                        } else {
                            this._$shader.toggleClass("dx-state-invisible", true)
                        }
                    },
                    _toggleOpenedStateClass(opened) {
                        this.$element().toggleClass("dx-drawer-opened", opened)
                    },
                    _refreshPanel() {
                        (0, _renderer.default)(this.viewContent()).css("left", 0);
                        (0, _renderer.default)(this.viewContent()).css("transform", "translate(0px, 0px)");
                        (0, _renderer.default)(this.viewContent()).removeClass("dx-theme-background-color");
                        this._removePanelContentWrapper();
                        this._removeOverlay();
                        this._renderPanelContentWrapper();
                        this._refreshWrapperChildrenOrder();
                        this._whenPanelContentRefreshed = new _deferred.Deferred;
                        this._strategy.renderPanelContent(this._whenPanelContentRefreshed);
                        this._strategy.onPanelContentRendered();
                        if ((0, _window.hasWindow)()) {
                            this._whenPanelContentRefreshed.always(() => {
                                this._strategy.refreshPanelElementSize("slide" === this.option("revealMode"));
                                this._renderPosition(this.option("opened"), true, true);
                                this._removePanelManualPosition()
                            })
                        }
                    },
                    _clean() {
                        this._cleanFocusState();
                        this._removePanelContentWrapper();
                        this._removeOverlay()
                    },
                    _removePanelContentWrapper() {
                        if (this._$panelContentWrapper) {
                            this._$panelContentWrapper.remove()
                        }
                    },
                    _removeOverlay() {
                        if (this._overlay) {
                            this._overlay.dispose();
                            delete this._overlay;
                            delete this._$panelContentWrapper
                        }
                    },
                    _optionChanged(args) {
                        switch (args.name) {
                            case "width":
                                this.callBase(args);
                                this._dimensionChanged();
                                break;
                            case "opened":
                                this._renderPosition(this.option("opened"));
                                this._toggleOpenedStateClass(args.value);
                                break;
                            case "position":
                                this._refreshPositionClass(args.previousValue);
                                this._refreshWrapperChildrenOrder();
                                this._invalidate();
                                break;
                            case "contentTemplate":
                            case "template":
                                this._invalidate();
                                break;
                            case "openedStateMode":
                                this._initStrategy();
                                this._refreshOpenedStateModeClass(args.previousValue);
                                this._refreshPanel();
                                break;
                            case "minSize":
                            case "maxSize":
                                this._initMinMaxSize();
                                this._renderPosition(this.option("opened"), true);
                                break;
                            case "revealMode":
                                this._refreshRevealModeClass(args.previousValue);
                                this._refreshPanel();
                                break;
                            case "shading":
                                this._toggleShaderVisibility(this.option("opened"));
                                break;
                            case "animationEnabled":
                            case "animationDuration":
                            case "closeOnOutsideClick":
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    content() {
                        return (0, _element.getPublicElement)(this._$panelContentWrapper)
                    },
                    viewContent() {
                        return (0, _element.getPublicElement)(this._$viewContentWrapper)
                    },
                    show() {
                        return this.toggle(true)
                    },
                    hide() {
                        return this.toggle(false)
                    },
                    toggle(opened) {
                        const targetOpened = void 0 === opened ? !this.option("opened") : opened;
                        this._whenAnimationCompleted = new _deferred.Deferred;
                        this.option("opened", targetOpened);
                        return this._whenAnimationCompleted.promise()
                    }
                });
                (0, _component_registrator.default)("dxDrawer", Drawer);
                var _default = Drawer;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        39725:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/drawer/ui.drawer.rendering.strategy.js ***!
              \***************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = (obj = __webpack_require__( /*! ../../core/renderer */ 68374), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _uiDrawer = __webpack_require__( /*! ./ui.drawer.animation */ 68890);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                let DrawerStrategy = function() {
                    function DrawerStrategy(drawer) {
                        this._drawer = drawer
                    }
                    var _proto = DrawerStrategy.prototype;
                    _proto.getDrawerInstance = function() {
                        return this._drawer
                    };
                    _proto.renderPanelContent = function(whenPanelContentRendered) {
                        const drawer = this.getDrawerInstance();
                        const template = drawer._getTemplate(drawer.option("template"));
                        if (template) {
                            template.render({
                                container: drawer.content(),
                                onRendered: () => {
                                    whenPanelContentRendered.resolve()
                                }
                            })
                        }
                    };
                    _proto.renderPosition = function(changePositionUsingFxAnimation, animationDuration) {
                        const whenPositionAnimationCompleted = new _deferred.Deferred;
                        const whenShaderAnimationCompleted = new _deferred.Deferred;
                        const drawer = this.getDrawerInstance();
                        if (changePositionUsingFxAnimation) {
                            _deferred.when.apply(_renderer.default, [whenPositionAnimationCompleted, whenShaderAnimationCompleted]).done(() => {
                                drawer._animationCompleteHandler()
                            })
                        }
                        this._internalRenderPosition(changePositionUsingFxAnimation, whenPositionAnimationCompleted);
                        if (!changePositionUsingFxAnimation) {
                            drawer.resizeViewContent()
                        }
                        this.renderShaderVisibility(changePositionUsingFxAnimation, animationDuration, whenShaderAnimationCompleted)
                    };
                    _proto._getPanelOffset = function(isDrawerOpened) {
                        const drawer = this.getDrawerInstance();
                        const size = drawer.isHorizontalDirection() ? drawer.getRealPanelWidth() : drawer.getRealPanelHeight();
                        if (isDrawerOpened) {
                            return -(size - drawer.getMaxSize())
                        } else {
                            return -(size - drawer.getMinSize())
                        }
                    };
                    _proto._getPanelSize = function(isDrawerOpened) {
                        return isDrawerOpened ? this.getDrawerInstance().getMaxSize() : this.getDrawerInstance().getMinSize()
                    };
                    _proto.renderShaderVisibility = function(changePositionUsingFxAnimation, duration, whenAnimationCompleted) {
                        const drawer = this.getDrawerInstance();
                        const isShaderVisible = drawer.option("opened");
                        const fadeConfig = isShaderVisible ? {
                            from: 0,
                            to: 1
                        } : {
                            from: 1,
                            to: 0
                        };
                        if (changePositionUsingFxAnimation) {
                            _uiDrawer.animation.fade((0, _renderer.default)(drawer._$shader), fadeConfig, duration, () => {
                                this._drawer._toggleShaderVisibility(isShaderVisible);
                                whenAnimationCompleted.resolve()
                            })
                        } else {
                            drawer._toggleShaderVisibility(isShaderVisible);
                            drawer._$shader.css("opacity", fadeConfig.to)
                        }
                    };
                    _proto.getPanelContent = function() {
                        return (0, _renderer.default)(this.getDrawerInstance().content())
                    };
                    _proto.setPanelSize = function(calcFromRealPanelSize) {
                        this.refreshPanelElementSize(calcFromRealPanelSize)
                    };
                    _proto.refreshPanelElementSize = function(calcFromRealPanelSize) {
                        const drawer = this.getDrawerInstance();
                        const panelSize = this._getPanelSize(drawer.option("opened"));
                        if (drawer.isHorizontalDirection()) {
                            (0, _size.setWidth)((0, _renderer.default)(drawer.content()), calcFromRealPanelSize ? drawer.getRealPanelWidth() : panelSize)
                        } else {
                            (0, _size.setHeight)((0, _renderer.default)(drawer.content()), calcFromRealPanelSize ? drawer.getRealPanelHeight() : panelSize)
                        }
                    };
                    _proto.isViewContentFirst = function() {
                        return false
                    };
                    _proto.onPanelContentRendered = function() {};
                    return DrawerStrategy
                }();
                var _default = DrawerStrategy;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        5738:
            /*!***********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/drawer/ui.drawer.rendering.strategy.overlap.js ***!
              \***********************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _uiDrawer = __webpack_require__( /*! ./ui.drawer.animation */ 68890);
                var _uiDrawerRendering = _interopRequireDefault(__webpack_require__( /*! ./ui.drawer.rendering.strategy */ 39725));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _translator = __webpack_require__( /*! ../../animation/translator */ 31648);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../overlay/ui.overlay */ 89799));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _inflector = __webpack_require__( /*! ../../core/utils/inflector */ 78008);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let OverlapStrategy = function(_DrawerStrategy) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(OverlapStrategy, _DrawerStrategy);

                    function OverlapStrategy() {
                        return _DrawerStrategy.apply(this, arguments) || this
                    }
                    var _proto = OverlapStrategy.prototype;
                    _proto.renderPanelContent = function(whenPanelContentRendered) {
                        delete this._initialPosition;
                        const drawer = this.getDrawerInstance();
                        const {
                            opened: opened,
                            minSize: minSize
                        } = drawer.option();
                        drawer._overlay = drawer._createComponent(drawer.content(), _ui.default, {
                            shading: false,
                            container: drawer.content(),
                            visualContainer: drawer.getOverlayTarget(),
                            position: this._getOverlayPosition(),
                            width: opened ? "auto" : minSize || 0,
                            height: "100%",
                            templatesRenderAsynchronously: drawer.option("templatesRenderAsynchronously"),
                            animation: {
                                show: {
                                    duration: 0
                                }
                            },
                            onPositioned: function(e) {
                                this._fixOverlayPosition(e.component.$content())
                            }.bind(this),
                            contentTemplate: drawer.option("template"),
                            onContentReady: args => {
                                whenPanelContentRendered.resolve();
                                this._processOverlayZIndex(args.component.content())
                            },
                            visible: true,
                            propagateOutsideClick: true
                        })
                    };
                    _proto._fixOverlayPosition = function($overlayContent) {
                        const position = (0, _common.ensureDefined)(this._initialPosition, {
                            left: 0,
                            top: 0
                        });
                        (0, _translator.move)($overlayContent, position);
                        if ("right" === this.getDrawerInstance().calcTargetPosition()) {
                            $overlayContent.css("left", "auto")
                        }
                        if ("bottom" === this.getDrawerInstance().calcTargetPosition()) {
                            $overlayContent.css("top", "auto");
                            $overlayContent.css("bottom", "0px")
                        }
                    };
                    _proto._getOverlayPosition = function() {
                        const drawer = this.getDrawerInstance();
                        const panelPosition = drawer.calcTargetPosition();
                        let result = {};
                        switch (panelPosition) {
                            case "left":
                                result = {
                                    my: "top left",
                                    at: "top left"
                                };
                                break;
                            case "right":
                                result = {
                                    my: drawer.option("rtlEnabled") ? "top left" : "top right",
                                    at: "top right"
                                };
                                break;
                            case "top":
                            case "bottom":
                                result = {
                                    my: panelPosition,
                                    at: panelPosition
                                }
                        }
                        result.of = drawer.getOverlayTarget();
                        return result
                    };
                    _proto.refreshPanelElementSize = function(calcFromRealPanelSize) {
                        const drawer = this.getDrawerInstance();
                        const overlay = drawer.getOverlay();
                        if (drawer.isHorizontalDirection()) {
                            overlay.option("height", "100%");
                            overlay.option("width", calcFromRealPanelSize ? drawer.getRealPanelWidth() : this._getPanelSize(drawer.option("opened")))
                        } else {
                            overlay.option("width", (0, _size.getWidth)(drawer.getOverlayTarget()));
                            overlay.option("height", calcFromRealPanelSize ? drawer.getRealPanelHeight() : this._getPanelSize(drawer.option("opened")))
                        }
                    };
                    _proto.onPanelContentRendered = function() {
                        this._updateViewContentStyles()
                    };
                    _proto._updateViewContentStyles = function() {
                        const drawer = this.getDrawerInstance();
                        (0, _renderer.default)(drawer.viewContent()).css("padding" + (0, _inflector.camelize)(drawer.calcTargetPosition(), true), drawer.option("minSize"));
                        (0, _renderer.default)(drawer.viewContent()).css("transform", "inherit")
                    };
                    _proto._internalRenderPosition = function(changePositionUsingFxAnimation, whenAnimationCompleted) {
                        const drawer = this.getDrawerInstance();
                        const $panel = (0, _renderer.default)(drawer.content());
                        const $panelOverlayContent = drawer.getOverlay().$content();
                        const revealMode = drawer.option("revealMode");
                        const targetPanelPosition = drawer.calcTargetPosition();
                        const panelSize = this._getPanelSize(drawer.option("opened"));
                        const panelOffset = this._getPanelOffset(drawer.option("opened")) * drawer._getPositionCorrection();
                        const marginTop = drawer.getRealPanelHeight() - panelSize;
                        this._updateViewContentStyles();
                        if (changePositionUsingFxAnimation) {
                            if ("slide" === revealMode) {
                                this._initialPosition = drawer.isHorizontalDirection() ? {
                                    left: panelOffset
                                } : {
                                    top: panelOffset
                                };
                                _uiDrawer.animation.moveTo({
                                    complete: () => {
                                        whenAnimationCompleted.resolve()
                                    },
                                    duration: drawer.option("animationDuration"),
                                    direction: targetPanelPosition,
                                    $element: $panel,
                                    position: panelOffset
                                })
                            } else if ("expand" === revealMode) {
                                this._initialPosition = {
                                    left: 0
                                };
                                (0, _translator.move)($panelOverlayContent, this._initialPosition);
                                _uiDrawer.animation.size({
                                    complete: () => {
                                        whenAnimationCompleted.resolve()
                                    },
                                    duration: drawer.option("animationDuration"),
                                    direction: targetPanelPosition,
                                    $element: $panelOverlayContent,
                                    size: panelSize,
                                    marginTop: marginTop
                                })
                            }
                        } else if ("slide" === revealMode) {
                            this._initialPosition = drawer.isHorizontalDirection() ? {
                                left: panelOffset
                            } : {
                                top: panelOffset
                            };
                            (0, _translator.move)($panel, this._initialPosition)
                        } else if ("expand" === revealMode) {
                            this._initialPosition = {
                                left: 0
                            };
                            (0, _translator.move)($panelOverlayContent, this._initialPosition);
                            if (drawer.isHorizontalDirection()) {
                                (0, _renderer.default)($panelOverlayContent).css("width", panelSize)
                            } else {
                                (0, _renderer.default)($panelOverlayContent).css("height", panelSize);
                                if ("bottom" === targetPanelPosition) {
                                    (0, _renderer.default)($panelOverlayContent).css("marginTop", marginTop)
                                }
                            }
                        }
                    };
                    _proto.getPanelContent = function() {
                        return (0, _renderer.default)(this.getDrawerInstance().getOverlay().content())
                    };
                    _proto._processOverlayZIndex = function($element) {
                        const styles = (0, _renderer.default)($element).get(0).style;
                        const zIndex = styles.zIndex || 1;
                        this.getDrawerInstance().setZIndex(zIndex)
                    };
                    _proto.isViewContentFirst = function(position) {
                        return "right" === position || "bottom" === position
                    };
                    return OverlapStrategy
                }(_uiDrawerRendering.default);
                var _default = OverlapStrategy;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        89266:
            /*!********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/drawer/ui.drawer.rendering.strategy.push.js ***!
              \********************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _uiDrawer = __webpack_require__( /*! ./ui.drawer.animation */ 68890);
                var _uiDrawerRendering = _interopRequireDefault(__webpack_require__( /*! ./ui.drawer.rendering.strategy */ 39725));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _translator = __webpack_require__( /*! ../../animation/translator */ 31648);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let PushStrategy = function(_DrawerStrategy) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(PushStrategy, _DrawerStrategy);

                    function PushStrategy() {
                        return _DrawerStrategy.apply(this, arguments) || this
                    }
                    var _proto = PushStrategy.prototype;
                    _proto._internalRenderPosition = function(changePositionUsingFxAnimation, whenAnimationCompleted) {
                        const drawer = this.getDrawerInstance();
                        const openedPanelSize = this._getPanelSize(true);
                        const contentPosition = this._getPanelSize(drawer.option("opened")) * drawer._getPositionCorrection();
                        (0, _renderer.default)(drawer.content()).css(drawer.isHorizontalDirection() ? "width" : "height", openedPanelSize);
                        if (drawer.getMinSize()) {
                            let paddingCssPropertyName = "padding";
                            switch (drawer.calcTargetPosition()) {
                                case "left":
                                    paddingCssPropertyName += "Right";
                                    break;
                                case "right":
                                    paddingCssPropertyName += "Left";
                                    break;
                                case "top":
                                    paddingCssPropertyName += "Bottom";
                                    break;
                                case "bottom":
                                    paddingCssPropertyName += "Top"
                            }(0, _renderer.default)(drawer.viewContent()).css(paddingCssPropertyName, drawer.getMinSize())
                        }
                        if (changePositionUsingFxAnimation) {
                            _uiDrawer.animation.moveTo({
                                $element: (0, _renderer.default)(drawer.viewContent()),
                                position: contentPosition,
                                direction: drawer.calcTargetPosition(),
                                duration: drawer.option("animationDuration"),
                                complete: () => {
                                    whenAnimationCompleted.resolve()
                                }
                            })
                        } else if (drawer.isHorizontalDirection()) {
                            (0, _translator.move)((0, _renderer.default)(drawer.viewContent()), {
                                left: contentPosition
                            })
                        } else {
                            (0, _translator.move)((0, _renderer.default)(drawer.viewContent()), {
                                top: contentPosition
                            })
                        }
                    };
                    _proto.onPanelContentRendered = function() {
                        (0, _renderer.default)(this.getDrawerInstance().viewContent()).addClass("dx-theme-background-color")
                    };
                    return PushStrategy
                }(_uiDrawerRendering.default);
                var _default = PushStrategy;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        74780:
            /*!**********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/drawer/ui.drawer.rendering.strategy.shrink.js ***!
              \**********************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _uiDrawer = __webpack_require__( /*! ./ui.drawer.animation */ 68890);
                var _uiDrawerRendering = _interopRequireDefault(__webpack_require__( /*! ./ui.drawer.rendering.strategy */ 39725));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _inflector = __webpack_require__( /*! ../../core/utils/inflector */ 78008);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let ShrinkStrategy = function(_DrawerStrategy) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(ShrinkStrategy, _DrawerStrategy);

                    function ShrinkStrategy() {
                        return _DrawerStrategy.apply(this, arguments) || this
                    }
                    var _proto = ShrinkStrategy.prototype;
                    _proto._internalRenderPosition = function(changePositionUsingFxAnimation, whenAnimationCompleted) {
                        const drawer = this.getDrawerInstance();
                        const direction = drawer.calcTargetPosition();
                        const $panel = (0, _renderer.default)(drawer.content());
                        const panelSize = this._getPanelSize(drawer.option("opened"));
                        const panelOffset = this._getPanelOffset(drawer.option("opened"));
                        const revealMode = drawer.option("revealMode");
                        if (changePositionUsingFxAnimation) {
                            if ("slide" === revealMode) {
                                _uiDrawer.animation.margin({
                                    complete: () => {
                                        whenAnimationCompleted.resolve()
                                    },
                                    $element: $panel,
                                    duration: drawer.option("animationDuration"),
                                    direction: direction,
                                    margin: panelOffset
                                })
                            } else if ("expand" === revealMode) {
                                _uiDrawer.animation.size({
                                    complete: () => {
                                        whenAnimationCompleted.resolve()
                                    },
                                    $element: $panel,
                                    duration: drawer.option("animationDuration"),
                                    direction: direction,
                                    size: panelSize
                                })
                            }
                        } else if ("slide" === revealMode) {
                            $panel.css("margin" + (0, _inflector.camelize)(direction, true), panelOffset)
                        } else if ("expand" === revealMode) {
                            $panel.css(drawer.isHorizontalDirection() ? "width" : "height", panelSize)
                        }
                    };
                    _proto.isViewContentFirst = function(position, isRtl) {
                        return (isRtl ? "left" === position : "right" === position) || "bottom" === position
                    };
                    return ShrinkStrategy
                }(_uiDrawerRendering.default);
                var _default = ShrinkStrategy;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        36646:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/drop_down_box.js ***!
              \*****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./drop_down_editor/ui.drop_down_editor */ 44687));
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ./editor/ui.data_expression */ 88718));
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _selectors = __webpack_require__( /*! ./widget/selectors */ 31421);
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../events/core/events_engine */ 55994));
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _utils = __webpack_require__( /*! ../ui/overlay/utils */ 13660);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _index = __webpack_require__( /*! ../events/utils/index */ 39611);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../core/devices */ 20530));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../core/dom_adapter */ 73349));
                var _element = __webpack_require__( /*! ../core/element */ 6415);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const getActiveElement = _dom_adapter.default.getActiveElement;
                const realDevice = _devices.default.real();
                const DropDownBox = _ui.default.inherit({
                    _supportedKeys: function() {
                        return (0, _extend.extend)({}, this.callBase(), {
                            tab: function(e) {
                                if (!this.option("opened")) {
                                    return
                                }
                                const $tabbableElements = this._getTabbableElements();
                                const $focusableElement = e.shiftKey ? $tabbableElements.last() : $tabbableElements.first();
                                $focusableElement && _events_engine.default.trigger($focusableElement, "focus");
                                e.preventDefault()
                            }
                        })
                    },
                    _getTabbableElements: function() {
                        return this._getElements().filter(_selectors.tabbable)
                    },
                    _getElements: function() {
                        return (0, _renderer.default)(this.content()).find("*")
                    },
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            acceptCustomValue: false,
                            contentTemplate: "content",
                            openOnFieldClick: true,
                            displayValueFormatter: function(value) {
                                return Array.isArray(value) ? value.join(", ") : value
                            },
                            useHiddenSubmitElement: true
                        })
                    },
                    _getAnonymousTemplateName: function() {
                        return "content"
                    },
                    _initTemplates: function() {
                        this.callBase()
                    },
                    _initMarkup: function() {
                        this._initDataExpressions();
                        this.$element().addClass("dx-dropdownbox");
                        this.callBase()
                    },
                    _setSubmitValue: function() {
                        const value = this.option("value");
                        const submitValue = this._shouldUseDisplayValue(value) ? this._displayGetter(value) : value;
                        this._getSubmitElement().val(submitValue)
                    },
                    _shouldUseDisplayValue: function(value) {
                        return "this" === this.option("valueExpr") && (0, _type.isObject)(value)
                    },
                    _sortValuesByKeysOrder(orderedKeys, values) {
                        const sortedValues = values.sort((a, b) => orderedKeys.indexOf(a.itemKey) - orderedKeys.indexOf(b.itemKey));
                        return sortedValues.map(x => x.itemDisplayValue)
                    },
                    _renderInputValue: function() {
                        this._rejectValueLoading();
                        const values = [];
                        if (!this._dataSource) {
                            this.callBase(values);
                            return (new _deferred.Deferred).resolve()
                        }
                        const currentValue = this._getCurrentValue();
                        let keys = null !== currentValue && void 0 !== currentValue ? currentValue : [];
                        keys = Array.isArray(keys) ? keys : [keys];
                        const itemLoadDeferreds = (0, _iterator.map)(keys, key => {
                            const deferred = new _deferred.Deferred;
                            this._loadItem(key).always(item => {
                                const displayValue = this._displayGetter(item);
                                if ((0, _type.isDefined)(displayValue)) {
                                    values.push({
                                        itemKey: key,
                                        itemDisplayValue: displayValue
                                    })
                                } else if (this.option("acceptCustomValue")) {
                                    values.push({
                                        itemKey: key,
                                        itemDisplayValue: key
                                    })
                                }
                                deferred.resolve()
                            });
                            return deferred
                        });
                        const callBase = this.callBase.bind(this);
                        return _deferred.when.apply(this, itemLoadDeferreds).always(() => {
                            const orderedValues = this._sortValuesByKeysOrder(keys, values);
                            this.option("displayValue", orderedValues);
                            callBase(values.length && orderedValues)
                        })
                    },
                    _loadItem: function(value) {
                        const deferred = new _deferred.Deferred;
                        const that = this;
                        const selectedItem = (0, _common.grep)(this.option("items") || [], function(item) {
                            return this._isValueEquals(this._valueGetter(item), value)
                        }.bind(this))[0];
                        if (void 0 !== selectedItem) {
                            deferred.resolve(selectedItem)
                        } else {
                            this._loadValue(value).done((function(item) {
                                deferred.resolve(item)
                            })).fail((function(args) {
                                if (null !== args && void 0 !== args && args.shouldSkipCallback) {
                                    return
                                }
                                if (that.option("acceptCustomValue")) {
                                    deferred.resolve(value)
                                } else {
                                    deferred.reject()
                                }
                            }))
                        }
                        return deferred.promise()
                    },
                    _popupTabHandler: function(e) {
                        if ("tab" !== (0, _index.normalizeKeyName)(e)) {
                            return
                        }
                        const $firstTabbable = this._getTabbableElements().first().get(0);
                        const $lastTabbable = this._getTabbableElements().last().get(0);
                        const $target = e.target;
                        const moveBackward = !!($target === $firstTabbable && e.shiftKey);
                        const moveForward = !!($target === $lastTabbable && !e.shiftKey);
                        if (moveBackward || moveForward) {
                            this.close();
                            _events_engine.default.trigger(this._input(), "focus");
                            if (moveBackward) {
                                e.preventDefault()
                            }
                        }
                    },
                    _renderPopupContent: function() {
                        if ("content" === this.option("contentTemplate")) {
                            return
                        }
                        const contentTemplate = this._getTemplateByOption("contentTemplate");
                        if (!(contentTemplate && this.option("contentTemplate"))) {
                            return
                        }
                        const $popupContent = this._popup.$content();
                        const templateData = {
                            value: this._fieldRenderData(),
                            component: this
                        };
                        $popupContent.empty();
                        contentTemplate.render({
                            container: (0, _element.getPublicElement)($popupContent),
                            model: templateData
                        })
                    },
                    _canShowVirtualKeyboard: function() {
                        return realDevice.mac
                    },
                    _isNestedElementActive: function() {
                        const activeElement = getActiveElement();
                        return activeElement && this._popup.$content().get(0).contains(activeElement)
                    },
                    _shouldHideOnParentScroll: function() {
                        return "desktop" === realDevice.deviceType && this._canShowVirtualKeyboard() && this._isNestedElementActive()
                    },
                    _popupHiddenHandler: function() {
                        this.callBase();
                        this._popupPosition = void 0
                    },
                    _popupPositionedHandler: function(e) {
                        this.callBase(e);
                        this._popupPosition = e.position
                    },
                    _getDefaultPopupPosition: function(isRtlEnabled) {
                        const {
                            my: my,
                            at: at
                        } = this.callBase(isRtlEnabled);
                        return {
                            my: my,
                            at: at,
                            offset: {
                                v: -1
                            },
                            collision: "flipfit"
                        }
                    },
                    _popupConfig: function() {
                        const {
                            focusStateEnabled: focusStateEnabled
                        } = this.option();
                        return (0, _extend.extend)(this.callBase(), {
                            tabIndex: -1,
                            dragEnabled: false,
                            focusStateEnabled: focusStateEnabled,
                            contentTemplate: "content",
                            hideOnParentScroll: this._shouldHideOnParentScroll.bind(this),
                            position: (0, _extend.extend)(this.option("popupPosition"), {
                                of: this.$element()
                            }),
                            _ignoreFunctionValueDeprecation: true,
                            maxHeight: function() {
                                var _this$_popupPosition;
                                const popupLocation = null === (_this$_popupPosition = this._popupPosition) || void 0 === _this$_popupPosition ? void 0 : _this$_popupPosition.v.location;
                                return (0, _utils.getElementMaxHeightByWindow)(this.$element(), popupLocation)
                            }.bind(this)
                        })
                    },
                    _popupShownHandler: function() {
                        this.callBase();
                        const $firstElement = this._getTabbableElements().first();
                        _events_engine.default.trigger($firstElement, "focus")
                    },
                    _setCollectionWidgetOption: _common.noop,
                    _optionChanged: function(args) {
                        this._dataExpressionOptionChanged(args);
                        switch (args.name) {
                            case "dataSource":
                                this._renderInputValue();
                                break;
                            case "displayValue":
                                this.option("text", args.value);
                                break;
                            case "displayExpr":
                                this._renderValue();
                                break;
                            case "contentTemplate":
                                this._invalidate();
                                break;
                            default:
                                this.callBase(args)
                        }
                    }
                }).include(_ui2.default);
                (0, _component_registrator.default)("dxDropDownBox", DropDownBox);
                var _default = DropDownBox;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        45231:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/drop_down_button.js ***!
              \********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./widget/ui.widget */ 14390));
                var _function_template = __webpack_require__( /*! ../core/templates/function_template */ 68494);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _button_group = _interopRequireDefault(__webpack_require__( /*! ./button_group */ 28236));
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ./popup/ui.popup */ 51495));
                var _list_light = _interopRequireDefault(__webpack_require__( /*! ./list_light */ 56757));
                var _data = __webpack_require__( /*! ../core/utils/data */ 47617);
                var _element = __webpack_require__( /*! ../core/element */ 6415);
                var _icon = __webpack_require__( /*! ../core/utils/icon */ 44899);
                var _data_helper = _interopRequireDefault(__webpack_require__( /*! ../data_helper */ 53305));
                var _data_source = __webpack_require__( /*! ../data/data_source/data_source */ 85273);
                var _array_store = _interopRequireDefault(__webpack_require__( /*! ../data/array_store */ 26562));
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../core/guid */ 73176));
                var _utils = __webpack_require__( /*! ./drop_down_editor/utils */ 61902);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../localization/message */ 28109));

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const DropDownButton = _ui.default.inherit({
                    _getDefaultOptions() {
                        return (0, _extend.extend)(this.callBase(), {
                            itemTemplate: "item",
                            keyExpr: "this",
                            displayExpr: void 0,
                            selectedItem: null,
                            selectedItemKey: null,
                            stylingMode: "outlined",
                            deferRendering: true,
                            noDataText: _message.default.format("dxCollectionWidget-noDataText"),
                            useSelectMode: false,
                            splitButton: false,
                            showArrowIcon: true,
                            text: "",
                            type: "normal",
                            icon: void 0,
                            onButtonClick: null,
                            onSelectionChanged: null,
                            onItemClick: null,
                            opened: false,
                            items: null,
                            dataSource: null,
                            focusStateEnabled: true,
                            hoverStateEnabled: true,
                            dropDownOptions: {},
                            dropDownContentTemplate: "content",
                            wrapItemText: false,
                            useItemTextAsTitle: true,
                            grouped: false,
                            groupTemplate: "group",
                            buttonGroupOptions: {}
                        })
                    },
                    _setOptionsByReference() {
                        this.callBase();
                        (0, _extend.extend)(this._optionsByReference, {
                            selectedItem: true
                        })
                    },
                    _init() {
                        this.callBase();
                        this._createItemClickAction();
                        this._createActionClickAction();
                        this._createSelectionChangedAction();
                        this._initDataSource();
                        this._compileKeyGetter();
                        this._compileDisplayGetter();
                        this._itemsToDataSource(this.option("items"));
                        this._options.cache("buttonGroupOptions", this.option("buttonGroupOptions"));
                        this._options.cache("dropDownOptions", this.option("dropDownOptions"))
                    },
                    _initTemplates() {
                        this._templateManager.addDefaultTemplates({
                            content: new _function_template.FunctionTemplate(options => {
                                const $popupContent = (0, _renderer.default)(options.container);
                                const $listContainer = (0, _renderer.default)("<div>").appendTo($popupContent);
                                this._list = this._createComponent($listContainer, _list_light.default, this._listOptions());
                                this._list.registerKeyHandler("escape", this._escHandler.bind(this));
                                this._list.registerKeyHandler("tab", this._escHandler.bind(this));
                                this._list.registerKeyHandler("leftArrow", this._escHandler.bind(this));
                                this._list.registerKeyHandler("rightArrow", this._escHandler.bind(this))
                            })
                        });
                        this.callBase()
                    },
                    _itemsToDataSource: function(value) {
                        if (!this._dataSource) {
                            this._dataSource = new _data_source.DataSource({
                                store: new _array_store.default({
                                    key: this._getKey(),
                                    data: value
                                }),
                                pageSize: 0
                            })
                        }
                    },
                    _getKey: function() {
                        var _this$_dataSource;
                        const keyExpr = this.option("keyExpr");
                        const storeKey = null === (_this$_dataSource = this._dataSource) || void 0 === _this$_dataSource ? void 0 : _this$_dataSource.key();
                        return (0, _type.isDefined)(storeKey) && (!(0, _type.isDefined)(keyExpr) || "this" === keyExpr) ? storeKey : keyExpr
                    },
                    _compileKeyGetter() {
                        this._keyGetter = (0, _data.compileGetter)(this._getKey())
                    },
                    _compileDisplayGetter() {
                        this._displayGetter = (0, _data.compileGetter)(this.option("displayExpr"))
                    },
                    _initMarkup() {
                        this.callBase();
                        this.$element().addClass("dx-dropdownbutton");
                        this._renderButtonGroup();
                        this._updateArrowClass();
                        if ((0, _type.isDefined)(this.option("selectedItemKey"))) {
                            this._loadSelectedItem().done(this._updateActionButton.bind(this))
                        }
                    },
                    _renderFocusTarget: _common.noop,
                    _render() {
                        if (!this.option("deferRendering") || this.option("opened")) {
                            this._renderPopup()
                        }
                        this.callBase()
                    },
                    _renderContentImpl() {
                        if (this._popup) {
                            this._renderPopupContent()
                        }
                        return this.callBase()
                    },
                    _loadSelectedItem() {
                        var _this$_loadSingleDefe;
                        null === (_this$_loadSingleDefe = this._loadSingleDeferred) || void 0 === _this$_loadSingleDefe ? void 0 : _this$_loadSingleDefe.reject();
                        const d = new _deferred.Deferred;
                        if (this._list && void 0 !== this._lastSelectedItemData) {
                            const cachedResult = this.option("useSelectMode") ? this._list.option("selectedItem") : this._lastSelectedItemData;
                            return d.resolve(cachedResult)
                        }
                        this._lastSelectedItemData = void 0;
                        const selectedItemKey = this.option("selectedItemKey");
                        this._loadSingle(this._getKey(), selectedItemKey).done(d.resolve).fail(() => {
                            d.resolve(null)
                        });
                        this._loadSingleDeferred = d;
                        return d.promise()
                    },
                    _createActionClickAction() {
                        this._actionClickAction = this._createActionByOption("onButtonClick")
                    },
                    _createSelectionChangedAction() {
                        this._selectionChangedAction = this._createActionByOption("onSelectionChanged")
                    },
                    _createItemClickAction() {
                        this._itemClickAction = this._createActionByOption("onItemClick")
                    },
                    _fireSelectionChangedAction(_ref) {
                        let {
                            previousValue: previousValue,
                            value: value
                        } = _ref;
                        this._selectionChangedAction({
                            item: value,
                            previousItem: previousValue
                        })
                    },
                    _fireItemClickAction(_ref2) {
                        let {
                            event: event,
                            itemElement: itemElement,
                            itemData: itemData
                        } = _ref2;
                        return this._itemClickAction({
                            event: event,
                            itemElement: itemElement,
                            itemData: this._actionItem || itemData
                        })
                    },
                    _actionButtonConfig() {
                        const {
                            icon: icon,
                            text: text,
                            type: type
                        } = this.option();
                        return {
                            text: text,
                            icon: icon,
                            type: type,
                            elementAttr: {
                                class: "dx-dropdownbutton-action"
                            }
                        }
                    },
                    _getButtonGroupItems() {
                        const {
                            splitButton: splitButton,
                            type: type
                        } = this.option();
                        const items = [];
                        items.push(this._actionButtonConfig());
                        if (splitButton) {
                            items.push({
                                icon: "spindown",
                                type: type,
                                elementAttr: {
                                    class: "dx-dropdownbutton-toggle"
                                }
                            })
                        }
                        return items
                    },
                    _buttonGroupItemClick(_ref3) {
                        let {
                            event: event,
                            itemData: itemData
                        } = _ref3;
                        const isActionButton = "dx-dropdownbutton-action" === itemData.elementAttr.class;
                        const isToggleButton = "dx-dropdownbutton-toggle" === itemData.elementAttr.class;
                        if (isToggleButton) {
                            this.toggle()
                        } else if (isActionButton) {
                            this._actionClickAction({
                                event: event,
                                selectedItem: this.option("selectedItem")
                            });
                            if (!this.option("splitButton")) {
                                this.toggle()
                            }
                        }
                    },
                    _buttonGroupOptions() {
                        const {
                            splitButton: splitButton,
                            showArrowIcon: showArrowIcon,
                            focusStateEnabled: focusStateEnabled,
                            hoverStateEnabled: hoverStateEnabled,
                            stylingMode: stylingMode,
                            accessKey: accessKey,
                            tabIndex: tabIndex
                        } = this.option();
                        const buttonTemplate = splitButton || !showArrowIcon ? "content" : (_ref4, buttonContent) => {
                            let {
                                text: text,
                                icon: icon
                            } = _ref4;
                            const $firstIcon = (0, _icon.getImageContainer)(icon);
                            const $textContainer = text ? (0, _renderer.default)("<span>").text(text).addClass("dx-button-text") : void 0;
                            const $secondIcon = (0, _icon.getImageContainer)("spindown").addClass("dx-icon-right");
                            (0, _renderer.default)(buttonContent).append($firstIcon, $textContainer, $secondIcon)
                        };
                        return (0, _extend.extend)({
                            items: this._getButtonGroupItems(),
                            onItemClick: this._buttonGroupItemClick.bind(this),
                            width: "100%",
                            height: "100%",
                            selectionMode: "none",
                            onKeyboardHandled: e => this._keyboardHandler(e),
                            buttonTemplate: buttonTemplate,
                            focusStateEnabled: focusStateEnabled,
                            hoverStateEnabled: hoverStateEnabled,
                            stylingMode: stylingMode,
                            accessKey: accessKey,
                            tabIndex: tabIndex
                        }, this._options.cache("buttonGroupOptions"))
                    },
                    _renderPopupContent() {
                        const $content = this._popup.$content();
                        const template = this._getTemplateByOption("dropDownContentTemplate");
                        $content.empty();
                        this._popupContentId = "dx-" + new _guid.default;
                        this.setAria("id", this._popupContentId, $content);
                        return template.render({
                            container: (0, _element.getPublicElement)($content),
                            model: this.option("items") || this._dataSource
                        })
                    },
                    _popupOptions() {
                        const horizontalAlignment = this.option("rtlEnabled") ? "right" : "left";
                        return (0, _extend.extend)({
                            dragEnabled: false,
                            focusStateEnabled: false,
                            deferRendering: this.option("deferRendering"),
                            hideOnOutsideClick: e => {
                                const $element = this.$element();
                                const $buttonClicked = (0, _renderer.default)(e.target).closest(".".concat("dx-dropdownbutton"));
                                return !$buttonClicked.is($element)
                            },
                            showTitle: false,
                            animation: {
                                show: {
                                    type: "fade",
                                    duration: 0,
                                    from: 0,
                                    to: 1
                                },
                                hide: {
                                    type: "fade",
                                    duration: 400,
                                    from: 1,
                                    to: 0
                                }
                            },
                            _ignoreFunctionValueDeprecation: true,
                            width: () => (0, _utils.getElementWidth)(this.$element()),
                            height: "auto",
                            shading: false,
                            position: {
                                of: this.$element(),
                                collision: "flipfit",
                                my: horizontalAlignment + " top",
                                at: horizontalAlignment + " bottom"
                            },
                            _wrapperClassExternal: "dx-dropdowneditor-overlay"
                        }, this._options.cache("dropDownOptions"), {
                            visible: this.option("opened")
                        })
                    },
                    _listOptions() {
                        const selectedItemKey = this.option("selectedItemKey");
                        const useSelectMode = this.option("useSelectMode");
                        return {
                            selectionMode: useSelectMode ? "single" : "none",
                            wrapItemText: this.option("wrapItemText"),
                            focusStateEnabled: this.option("focusStateEnabled"),
                            hoverStateEnabled: this.option("hoverStateEnabled"),
                            useItemTextAsTitle: this.option("useItemTextAsTitle"),
                            onContentReady: () => this._fireContentReadyAction(),
                            selectedItemKeys: (0, _type.isDefined)(selectedItemKey) && useSelectMode ? [selectedItemKey] : [],
                            grouped: this.option("grouped"),
                            groupTemplate: this.option("groupTemplate"),
                            keyExpr: this._getKey(),
                            noDataText: this.option("noDataText"),
                            displayExpr: this.option("displayExpr"),
                            itemTemplate: this.option("itemTemplate"),
                            items: this.option("items"),
                            dataSource: this._dataSource,
                            onItemClick: e => {
                                if (!this.option("useSelectMode")) {
                                    this._lastSelectedItemData = e.itemData
                                }
                                this.option("selectedItemKey", this._keyGetter(e.itemData));
                                const actionResult = this._fireItemClickAction(e);
                                if (false !== actionResult) {
                                    this.toggle(false);
                                    this._buttonGroup.focus()
                                }
                            }
                        }
                    },
                    _upDownKeyHandler() {
                        if (this._popup && this._popup.option("visible") && this._list) {
                            this._list.focus()
                        } else {
                            this.open()
                        }
                        return true
                    },
                    _escHandler() {
                        this.close();
                        this._buttonGroup.focus();
                        return true
                    },
                    _tabHandler() {
                        this.close();
                        return true
                    },
                    _renderPopup() {
                        const $popup = (0, _renderer.default)("<div>");
                        this.$element().append($popup);
                        this._popup = this._createComponent($popup, _ui2.default, this._popupOptions());
                        this._popup.$content().addClass("dx-dropdownbutton-content");
                        this._popup.$wrapper().addClass("dx-dropdownbutton-popup-wrapper");
                        this._popup.on("hiding", this._popupHidingHandler.bind(this));
                        this._popup.on("showing", this._popupShowingHandler.bind(this));
                        this._bindInnerWidgetOptions(this._popup, "dropDownOptions")
                    },
                    _popupHidingHandler() {
                        this.option("opened", false);
                        this._updateAriaAttributes(false)
                    },
                    _popupOptionChanged: function(args) {
                        const options = _ui.default.getOptionsFromContainer(args);
                        this._setPopupOption(options);
                        const optionsKeys = Object.keys(options);
                        if (-1 !== optionsKeys.indexOf("width") || -1 !== optionsKeys.indexOf("height")) {
                            this._dimensionChanged()
                        }
                    },
                    _dimensionChanged: function() {
                        const popupWidth = (0, _utils.getSizeValue)(this.option("dropDownOptions.width"));
                        if (void 0 === popupWidth) {
                            this._setPopupOption("width", () => (0, _utils.getElementWidth)(this.$element()))
                        }
                    },
                    _setPopupOption: function(optionName, value) {
                        this._setWidgetOption("_popup", arguments)
                    },
                    _popupShowingHandler() {
                        this.option("opened", true);
                        this._updateAriaAttributes(true)
                    },
                    _setElementAria(value) {
                        const elementAria = {
                            owns: value ? this._popupContentId : void 0
                        };
                        this.setAria(elementAria, this.$element())
                    },
                    _setButtonsAria(value) {
                        const commonButtonAria = {
                            expanded: value,
                            haspopup: "listbox"
                        };
                        const firstButtonAria = {};
                        if (!this.option("text")) {
                            firstButtonAria.label = "dropdownbutton"
                        }
                        this._getButtons().each((index, $button) => {
                            if (0 === index) {
                                this.setAria(_extends({}, firstButtonAria, commonButtonAria), (0, _renderer.default)($button))
                            } else {
                                this.setAria(commonButtonAria, (0, _renderer.default)($button))
                            }
                        })
                    },
                    _updateAriaAttributes(value) {
                        this._setElementAria(value);
                        this._setButtonsAria(value)
                    },
                    _getButtons() {
                        return this._buttonGroup.$element().find(".".concat("dx-button"))
                    },
                    _renderButtonGroup() {
                        const $buttonGroup = this._buttonGroup && this._buttonGroup.$element() || (0, _renderer.default)("<div>");
                        if (!this._buttonGroup) {
                            this.$element().append($buttonGroup)
                        }
                        this._buttonGroup = this._createComponent($buttonGroup, _button_group.default, this._buttonGroupOptions());
                        this._buttonGroup.registerKeyHandler("downArrow", this._upDownKeyHandler.bind(this));
                        this._buttonGroup.registerKeyHandler("tab", this._tabHandler.bind(this));
                        this._buttonGroup.registerKeyHandler("upArrow", this._upDownKeyHandler.bind(this));
                        this._buttonGroup.registerKeyHandler("escape", this._escHandler.bind(this));
                        this._bindInnerWidgetOptions(this._buttonGroup, "buttonGroupOptions");
                        this._updateAriaAttributes(this.option("opened"))
                    },
                    _updateArrowClass() {
                        const hasArrow = this.option("splitButton") || this.option("showArrowIcon");
                        this.$element().toggleClass("dx-dropdownbutton-has-arrow", hasArrow)
                    },
                    toggle(visible) {
                        if (!this._popup) {
                            this._renderPopup();
                            this._renderContent()
                        }
                        return this._popup.toggle(visible)
                    },
                    open() {
                        return this.toggle(true)
                    },
                    close() {
                        return this.toggle(false)
                    },
                    _setListOption(name, value) {
                        this._list && this._list.option(name, value)
                    },
                    _getDisplayValue(item) {
                        const isPrimitiveItem = !(0, _type.isPlainObject)(item);
                        const displayValue = isPrimitiveItem ? item : this._displayGetter(item);
                        return !(0, _type.isPlainObject)(displayValue) ? String((0, _common.ensureDefined)(displayValue, "")) : ""
                    },
                    _updateActionButton(selectedItem) {
                        if (this.option("useSelectMode")) {
                            this.option({
                                text: this._getDisplayValue(selectedItem),
                                icon: (0, _type.isPlainObject)(selectedItem) ? selectedItem.icon : void 0
                            })
                        }
                        this._setOptionWithoutOptionChange("selectedItem", selectedItem);
                        this._setOptionWithoutOptionChange("selectedItemKey", this._keyGetter(selectedItem))
                    },
                    _clean() {
                        this._list && this._list.$element().remove();
                        this._popup && this._popup.$element().remove()
                    },
                    _selectedItemKeyChanged(value) {
                        this._setListOption("selectedItemKeys", this.option("useSelectMode") && (0, _type.isDefined)(value) ? [value] : []);
                        const previousItem = this.option("selectedItem");
                        this._loadSelectedItem().done(selectedItem => {
                            this._updateActionButton(selectedItem);
                            if (this._displayGetter(previousItem) !== this._displayGetter(selectedItem)) {
                                this._fireSelectionChangedAction({
                                    previousValue: previousItem,
                                    value: selectedItem
                                })
                            }
                        })
                    },
                    _updateButtonGroup(name, value) {
                        this._buttonGroup.option(name, value);
                        this._updateAriaAttributes(this.option("opened"))
                    },
                    _actionButtonOptionChanged(_ref5) {
                        let {
                            name: name,
                            value: value
                        } = _ref5;
                        const newConfig = {};
                        newConfig[name] = value;
                        this._updateButtonGroup("items[0]", (0, _extend.extend)({}, this._actionButtonConfig(), newConfig));
                        this._popup && this._popup.repaint()
                    },
                    _selectModeChanged(value) {
                        if (value) {
                            this._setListOption("selectionMode", "single");
                            const selectedItemKey = this.option("selectedItemKey");
                            this._setListOption("selectedItemKeys", (0, _type.isDefined)(selectedItemKey) ? [selectedItemKey] : []);
                            this._selectedItemKeyChanged(this.option("selectedItemKey"))
                        } else {
                            this._setListOption("selectionMode", "none");
                            this.option({
                                selectedItemKey: void 0,
                                selectedItem: void 0
                            });
                            this._actionButtonOptionChanged({
                                text: this.option("text")
                            })
                        }
                    },
                    _updateItemCollection(optionName) {
                        const selectedItemKey = this.option("selectedItemKey");
                        this._setListOption("selectedItem", null);
                        this._setWidgetOption("_list", [optionName]);
                        if ((0, _type.isDefined)(selectedItemKey)) {
                            this._loadSelectedItem().done(selectedItem => {
                                this._setListOption("selectedItemKeys", [selectedItemKey]);
                                this._setListOption("selectedItem", selectedItem)
                            }).fail(error => {
                                this._setListOption("selectedItemKeys", [])
                            }).always(this._updateActionButton.bind(this))
                        }
                    },
                    _updateDataSource: function() {
                        let items = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._dataSource.items();
                        this._dataSource = void 0;
                        this._itemsToDataSource(items);
                        this._updateKeyExpr()
                    },
                    _updateKeyExpr: function() {
                        this._compileKeyGetter();
                        this._setListOption("keyExpr", this._getKey())
                    },
                    focus: function() {
                        this._buttonGroup.focus()
                    },
                    _optionChanged(args) {
                        var _this$_popup;
                        const {
                            name: name,
                            value: value
                        } = args;
                        switch (name) {
                            case "useSelectMode":
                                this._selectModeChanged(value);
                                break;
                            case "splitButton":
                                this._updateArrowClass();
                                this._renderButtonGroup();
                                break;
                            case "displayExpr":
                                this._compileDisplayGetter();
                                this._setListOption(name, value);
                                this._updateActionButton(this.option("selectedItem"));
                                break;
                            case "keyExpr":
                                this._updateDataSource();
                                break;
                            case "buttonGroupOptions":
                                this._innerWidgetOptionChanged(this._buttonGroup, args);
                                break;
                            case "dropDownOptions":
                                if ("dropDownOptions.visible" === args.fullName) {
                                    break
                                }
                                if (void 0 !== args.value.visible) {
                                    delete args.value.visible
                                }
                                this._popupOptionChanged(args);
                                this._innerWidgetOptionChanged(this._popup, args);
                                break;
                            case "opened":
                                this.toggle(value);
                                break;
                            case "focusStateEnabled":
                            case "hoverStateEnabled":
                                this._setListOption(name, value);
                                this._updateButtonGroup(name, value);
                                this.callBase(args);
                                break;
                            case "items":
                                this._updateDataSource(this.option("items"));
                                this._updateItemCollection(name);
                                break;
                            case "dataSource":
                                if (Array.isArray(value)) {
                                    this._updateDataSource(this.option("dataSource"))
                                } else {
                                    this._initDataSource();
                                    this._updateKeyExpr()
                                }
                                this._updateItemCollection(name);
                                break;
                            case "icon":
                            case "text":
                                this._actionButtonOptionChanged(args);
                                break;
                            case "showArrowIcon":
                                this._updateArrowClass();
                                this._renderButtonGroup();
                                this._popup && this._popup.repaint();
                                break;
                            case "width":
                            case "height":
                                this.callBase(args);
                                null === (_this$_popup = this._popup) || void 0 === _this$_popup ? void 0 : _this$_popup.repaint();
                                break;
                            case "stylingMode":
                                this._updateButtonGroup(name, value);
                                break;
                            case "type":
                                this._updateButtonGroup("items", this._getButtonGroupItems());
                                break;
                            case "itemTemplate":
                            case "grouped":
                            case "noDataText":
                            case "groupTemplate":
                            case "wrapItemText":
                            case "useItemTextAsTitle":
                                this._setListOption(name, value);
                                break;
                            case "dropDownContentTemplate":
                                this._renderContent();
                                break;
                            case "selectedItemKey":
                                this._selectedItemKeyChanged(value);
                                break;
                            case "selectedItem":
                                break;
                            case "onItemClick":
                                this._createItemClickAction();
                                break;
                            case "onButtonClick":
                                this._createActionClickAction();
                                break;
                            case "onSelectionChanged":
                                this._createSelectionChangedAction();
                                break;
                            case "deferRendering":
                                this.toggle(this.option("opened"));
                                break;
                            case "tabIndex":
                                this._updateButtonGroup(name, value);
                                break;
                            default:
                                this.callBase(args)
                        }
                    }
                }).include(_data_helper.default);
                (0, _component_registrator.default)("dxDropDownButton", DropDownButton);
                var _default = DropDownButton;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        29783:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/drop_down_editor/ui.drop_down_button.js ***!
              \****************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _button = _interopRequireDefault(__webpack_require__( /*! ../text_box/texteditor_button_collection/button */ 11483));
                var _button2 = _interopRequireDefault(__webpack_require__( /*! ../button */ 63008));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let DropDownButton = function(_TextEditorButton) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(DropDownButton, _TextEditorButton);

                    function DropDownButton(name, editor, options) {
                        var _this;
                        _this = _TextEditorButton.call(this, name, editor, options) || this;
                        _this.currentTemplate = null;
                        return _this
                    }
                    var _proto = DropDownButton.prototype;
                    _proto._attachEvents = function(instance) {
                        const {
                            editor: editor
                        } = this;
                        instance.option("onClick", e => {
                            var _editor$_shouldCallOp;
                            if (null !== (_editor$_shouldCallOp = editor._shouldCallOpenHandler) && void 0 !== _editor$_shouldCallOp && _editor$_shouldCallOp.call(editor)) {
                                editor._openHandler(e);
                                return
                            }!editor.option("openOnFieldClick") && editor._openHandler(e)
                        });
                        _events_engine.default.on(instance.$element(), "mousedown", e => {
                            if (editor.$element().is(".dx-state-focused")) {
                                e.preventDefault()
                            }
                        })
                    };
                    _proto._create = function() {
                        const {
                            editor: editor
                        } = this;
                        const $element = (0, _renderer.default)("<div>");
                        const options = this._getOptions();
                        this._addToContainer($element);
                        const instance = editor._createComponent($element, _button2.default, (0, _extend.extend)({}, options, {
                            elementAttr: {
                                "aria-label": _message.default.format("dxDropDownEditor-selectLabel")
                            }
                        }));
                        this._legacyRender(editor.$element(), $element, options.visible);
                        return {
                            $element: $element,
                            instance: instance
                        }
                    };
                    _proto._getOptions = function() {
                        const {
                            editor: editor
                        } = this;
                        const visible = this._isVisible();
                        const isReadOnly = editor.option("readOnly");
                        const options = {
                            focusStateEnabled: false,
                            hoverStateEnabled: false,
                            activeStateEnabled: false,
                            useInkRipple: false,
                            disabled: isReadOnly,
                            visible: visible
                        };
                        this._addTemplate(options);
                        return options
                    };
                    _proto._isVisible = function() {
                        const {
                            editor: editor
                        } = this;
                        return _TextEditorButton.prototype._isVisible.call(this) && editor.option("showDropDownButton")
                    };
                    _proto._legacyRender = function($editor, $element, isVisible) {
                        $editor.toggleClass("dx-dropdowneditor-button-visible", isVisible);
                        if ($element) {
                            $element.removeClass("dx-button").removeClass("dx-button-mode-contained").addClass("dx-dropdowneditor-button")
                        }
                    };
                    _proto._isSameTemplate = function() {
                        return this.editor.option("dropDownButtonTemplate") === this.currentTemplate
                    };
                    _proto._addTemplate = function(options) {
                        if (!this._isSameTemplate()) {
                            options.template = this.editor._getTemplateByOption("dropDownButtonTemplate");
                            this.currentTemplate = this.editor.option("dropDownButtonTemplate")
                        }
                    };
                    _proto.update = function() {
                        const shouldUpdate = _TextEditorButton.prototype.update.call(this);
                        if (shouldUpdate) {
                            const {
                                editor: editor,
                                instance: instance
                            } = this;
                            const $editor = editor.$element();
                            const options = this._getOptions();
                            null === instance || void 0 === instance ? void 0 : instance.option(options);
                            this._legacyRender($editor, null === instance || void 0 === instance ? void 0 : instance.$element(), options.visible)
                        }
                    };
                    return DropDownButton
                }(_button.default);
                exports.default = DropDownButton;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        44687:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/drop_down_editor/ui.drop_down_editor.js ***!
              \****************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 73176));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _selectors = __webpack_require__( /*! ../widget/selectors */ 31421);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _element = __webpack_require__( /*! ../../core/element */ 6415);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.errors */ 96688));
                var _position = _interopRequireDefault(__webpack_require__( /*! ../../animation/position */ 49387));
                var _position2 = __webpack_require__( /*! ../../core/utils/position */ 37518);
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ./ui.drop_down_button */ 29783));
                var _ui3 = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _text_box = _interopRequireDefault(__webpack_require__( /*! ../text_box */ 29837));
                var _click = __webpack_require__( /*! ../../events/click */ 95429);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _function_template = __webpack_require__( /*! ../../core/templates/function_template */ 68494);
                var _ui4 = _interopRequireDefault(__webpack_require__( /*! ../popup/ui.popup */ 51495));
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _utils = __webpack_require__( /*! ./utils */ 61902);
                var _translator = __webpack_require__( /*! ../../animation/translator */ 31648);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const isIOs = "ios" === _devices.default.current().platform;
                const DropDownEditor = _text_box.default.inherit({
                    _supportedKeys: function() {
                        return (0, _extend.extend)({}, this.callBase(), {
                            tab: function(e) {
                                if (!this.option("opened")) {
                                    return
                                }
                                if (!this._popup.getFocusableElements().length) {
                                    this.close();
                                    return
                                }
                                const $focusableElement = e.shiftKey ? this._getLastPopupElement() : this._getFirstPopupElement();
                                if ($focusableElement) {
                                    _events_engine.default.trigger($focusableElement, "focus");
                                    $focusableElement.select()
                                }
                                e.preventDefault()
                            },
                            escape: function(e) {
                                if (this.option("opened")) {
                                    e.preventDefault()
                                }
                                this.close();
                                return true
                            },
                            upArrow: function(e) {
                                if (!(0, _index.isCommandKeyPressed)(e)) {
                                    e.preventDefault();
                                    e.stopPropagation();
                                    if (e.altKey) {
                                        this.close();
                                        return false
                                    }
                                }
                                return true
                            },
                            downArrow: function(e) {
                                if (!(0, _index.isCommandKeyPressed)(e)) {
                                    e.preventDefault();
                                    e.stopPropagation();
                                    if (e.altKey) {
                                        this._validatedOpening();
                                        return false
                                    }
                                }
                                return true
                            },
                            enter: function(e) {
                                if (this.option("opened")) {
                                    e.preventDefault();
                                    this._valueChangeEventHandler(e)
                                }
                                return true
                            }
                        })
                    },
                    _getDefaultButtons: function() {
                        return this.callBase().concat([{
                            name: "dropDown",
                            Ctor: _ui2.default
                        }])
                    },
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            value: null,
                            onOpened: null,
                            onClosed: null,
                            opened: false,
                            acceptCustomValue: true,
                            applyValueMode: "instantly",
                            deferRendering: true,
                            activeStateEnabled: true,
                            dropDownButtonTemplate: "dropDownButton",
                            fieldTemplate: null,
                            openOnFieldClick: false,
                            showDropDownButton: true,
                            buttons: void 0,
                            dropDownOptions: {
                                showTitle: false
                            },
                            popupPosition: this._getDefaultPopupPosition(),
                            onPopupInitialized: null,
                            applyButtonText: _message.default.format("OK"),
                            cancelButtonText: _message.default.format("Cancel"),
                            buttonsLocation: "default",
                            useHiddenSubmitElement: false,
                            validationMessagePosition: "auto"
                        })
                    },
                    _useTemplates: function() {
                        return true
                    },
                    _getDefaultPopupPosition: function(isRtlEnabled) {
                        const position = (0, _position2.getDefaultAlignment)(isRtlEnabled);
                        return {
                            offset: {
                                h: 0,
                                v: -1
                            },
                            my: position + " top",
                            at: position + " bottom",
                            collision: "flip flip"
                        }
                    },
                    _defaultOptionsRules: function() {
                        return this.callBase().concat([{
                            device: function(device) {
                                const isGeneric = "generic" === device.platform;
                                return isGeneric
                            },
                            options: {
                                popupPosition: {
                                    offset: {
                                        v: 0
                                    }
                                }
                            }
                        }])
                    },
                    _inputWrapper: function() {
                        return this.$element().find(".dx-dropdowneditor-input-wrapper").first()
                    },
                    _init: function() {
                        this.callBase();
                        this._initVisibilityActions();
                        this._initPopupInitializedAction();
                        this._updatePopupPosition(this.option("rtlEnabled"));
                        this._options.cache("dropDownOptions", this.option("dropDownOptions"))
                    },
                    _updatePopupPosition: function(isRtlEnabled) {
                        const {
                            my: my,
                            at: at
                        } = this._getDefaultPopupPosition(isRtlEnabled);
                        const currentPosition = this.option("popupPosition");
                        this.option("popupPosition", (0, _extend.extend)({}, currentPosition, {
                            my: my,
                            at: at
                        }))
                    },
                    _initVisibilityActions: function() {
                        this._openAction = this._createActionByOption("onOpened", {
                            excludeValidators: ["disabled", "readOnly"]
                        });
                        this._closeAction = this._createActionByOption("onClosed", {
                            excludeValidators: ["disabled", "readOnly"]
                        })
                    },
                    _initPopupInitializedAction: function() {
                        this._popupInitializedAction = this._createActionByOption("onPopupInitialized", {
                            excludeValidators: ["disabled", "readOnly"]
                        })
                    },
                    _initMarkup: function() {
                        this._renderSubmitElement();
                        this.callBase();
                        this.$element().addClass("dx-dropdowneditor");
                        this.setAria("role", "combobox")
                    },
                    _render: function() {
                        this.callBase();
                        this._renderOpenHandler();
                        this._attachFocusOutHandler();
                        this._renderOpenedState()
                    },
                    _renderContentImpl: function() {
                        if (!this.option("deferRendering")) {
                            this._createPopup()
                        }
                    },
                    _renderInput: function() {
                        this.callBase();
                        this._wrapInput();
                        this._setDefaultAria()
                    },
                    _wrapInput: function() {
                        this._$container = this.$element().wrapInner((0, _renderer.default)("<div>").addClass("dx-dropdowneditor-input-wrapper")).children().eq(0)
                    },
                    _setDefaultAria: function() {
                        this.setAria({
                            haspopup: "true",
                            autocomplete: "list"
                        })
                    },
                    _readOnlyPropValue: function() {
                        return !this._isEditable() || this.callBase()
                    },
                    _cleanFocusState: function() {
                        this.callBase();
                        if (this.option("fieldTemplate")) {
                            this._detachFocusEvents()
                        }
                    },
                    _getFieldTemplate: function() {
                        return this.option("fieldTemplate") && this._getTemplateByOption("fieldTemplate")
                    },
                    _renderMask: function() {
                        if (this.option("fieldTemplate")) {
                            return
                        }
                        this.callBase()
                    },
                    _renderField: function() {
                        const fieldTemplate = this._getFieldTemplate();
                        fieldTemplate && this._renderTemplatedField(fieldTemplate, this._fieldRenderData())
                    },
                    _renderPlaceholder: function() {
                        const hasFieldTemplate = !!this._getFieldTemplate();
                        if (!hasFieldTemplate) {
                            this.callBase()
                        }
                    },
                    _renderValue: function() {
                        if (this.option("useHiddenSubmitElement")) {
                            this._setSubmitValue()
                        }
                        const promise = this.callBase();
                        promise.always(this._renderField.bind(this))
                    },
                    _renderTemplatedField: function(fieldTemplate, data) {
                        const isFocused = (0, _selectors.focused)(this._input());
                        const $container = this._$container;
                        this._detachKeyboardEvents();
                        this._refreshButtonsContainer();
                        this._detachWrapperContent();
                        this._detachFocusEvents();
                        $container.empty();
                        const $templateWrapper = (0, _renderer.default)("<div>").addClass("dx-dropdowneditor-field-template-wrapper").appendTo($container);
                        fieldTemplate.render({
                            model: data,
                            container: (0, _element.getPublicElement)($templateWrapper),
                            onRendered: () => {
                                const isRenderedInRoot = !!this.$element().find($templateWrapper).length;
                                if (!isRenderedInRoot) {
                                    return
                                }
                                const $input = this._input();
                                if (!$input.length) {
                                    throw _ui.default.Error("E1010")
                                }
                                this._integrateInput();
                                isFocused && _events_engine.default.trigger($input, "focus")
                            }
                        });
                        this._attachWrapperContent($container)
                    },
                    _detachWrapperContent() {
                        var _this$_$submitElement, _this$_$beforeButtons, _this$_$afterButtonsC;
                        const useHiddenSubmitElement = this.option("useHiddenSubmitElement");
                        useHiddenSubmitElement && (null === (_this$_$submitElement = this._$submitElement) || void 0 === _this$_$submitElement ? void 0 : _this$_$submitElement.detach());
                        const beforeButtonsContainerParent = null === (_this$_$beforeButtons = this._$beforeButtonsContainer) || void 0 === _this$_$beforeButtons ? void 0 : _this$_$beforeButtons[0].parentNode;
                        const afterButtonsContainerParent = null === (_this$_$afterButtonsC = this._$afterButtonsContainer) || void 0 === _this$_$afterButtonsC ? void 0 : _this$_$afterButtonsC[0].parentNode;
                        null === beforeButtonsContainerParent || void 0 === beforeButtonsContainerParent ? void 0 : beforeButtonsContainerParent.removeChild(this._$beforeButtonsContainer[0]);
                        null === afterButtonsContainerParent || void 0 === afterButtonsContainerParent ? void 0 : afterButtonsContainerParent.removeChild(this._$afterButtonsContainer[0])
                    },
                    _attachWrapperContent($container) {
                        var _this$_$submitElement2;
                        const useHiddenSubmitElement = this.option("useHiddenSubmitElement");
                        $container.prepend(this._$beforeButtonsContainer);
                        useHiddenSubmitElement && (null === (_this$_$submitElement2 = this._$submitElement) || void 0 === _this$_$submitElement2 ? void 0 : _this$_$submitElement2.appendTo($container));
                        $container.append(this._$afterButtonsContainer)
                    },
                    _refreshButtonsContainer() {
                        this._$buttonsContainer = this.$element().children().eq(0)
                    },
                    _integrateInput: function() {
                        this._renderFocusState();
                        this._refreshValueChangeEvent();
                        this._refreshEvents();
                        this._refreshEmptinessEvent()
                    },
                    _refreshEmptinessEvent: function() {
                        _events_engine.default.off(this._input(), "input blur", this._toggleEmptinessEventHandler);
                        this._renderEmptinessEvent()
                    },
                    _fieldRenderData: function() {
                        return this.option("value")
                    },
                    _initTemplates: function() {
                        this._templateManager.addDefaultTemplates({
                            dropDownButton: new _function_template.FunctionTemplate((function(options) {
                                const $icon = (0, _renderer.default)("<div>").addClass("dx-dropdowneditor-icon");
                                (0, _renderer.default)(options.container).append($icon)
                            }))
                        });
                        this.callBase()
                    },
                    _renderOpenHandler: function() {
                        const $inputWrapper = this._inputWrapper();
                        const eventName = (0, _index.addNamespace)(_click.name, this.NAME);
                        const openOnFieldClick = this.option("openOnFieldClick");
                        _events_engine.default.off($inputWrapper, eventName);
                        _events_engine.default.on($inputWrapper, eventName, this._getInputClickHandler(openOnFieldClick));
                        this.$element().toggleClass("dx-dropdowneditor-field-clickable", openOnFieldClick);
                        if (openOnFieldClick) {
                            this._openOnFieldClickAction = this._createAction(this._openHandler.bind(this))
                        }
                    },
                    _attachFocusOutHandler: function() {
                        if (isIOs) {
                            this._detachFocusOutEvents();
                            _events_engine.default.on(this._inputWrapper(), (0, _index.addNamespace)("focusout", this.NAME), event => {
                                const newTarget = event.relatedTarget;
                                if (newTarget && this.option("opened")) {
                                    const isNewTargetOutside = this._isTargetOutOfComponent(newTarget);
                                    if (isNewTargetOutside) {
                                        this.close()
                                    }
                                }
                            })
                        }
                    },
                    _isTargetOutOfComponent: function(newTarget) {
                        const popupWrapper = this.content ? (0, _renderer.default)(this.content()).closest(".".concat("dx-dropdowneditor-overlay")) : this._$popup;
                        const isTargetOutsidePopup = 0 === (0, _renderer.default)(newTarget).closest(".".concat("dx-dropdowneditor-overlay"), popupWrapper).length;
                        return isTargetOutsidePopup
                    },
                    _detachFocusOutEvents: function() {
                        isIOs && _events_engine.default.off(this._inputWrapper(), (0, _index.addNamespace)("focusout", this.NAME))
                    },
                    _getInputClickHandler: function(openOnFieldClick) {
                        return openOnFieldClick ? e => {
                            this._executeOpenAction(e)
                        } : e => {
                            this._focusInput()
                        }
                    },
                    _openHandler: function() {
                        this._toggleOpenState()
                    },
                    _executeOpenAction: function(e) {
                        this._openOnFieldClickAction({
                            event: e
                        })
                    },
                    _keyboardEventBindingTarget: function() {
                        return this._input()
                    },
                    _focusInput: function() {
                        if (this.option("disabled")) {
                            return false
                        }
                        if (this.option("focusStateEnabled") && !(0, _selectors.focused)(this._input())) {
                            this._resetCaretPosition();
                            _events_engine.default.trigger(this._input(), "focus")
                        }
                        return true
                    },
                    _resetCaretPosition: function() {
                        let ignoreEditable = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false;
                        const inputElement = this._input().get(0);
                        if (inputElement) {
                            const {
                                value: value
                            } = inputElement;
                            const caretPosition = (0, _type.isDefined)(value) && (ignoreEditable || this._isEditable()) ? value.length : 0;
                            this._caret({
                                start: caretPosition,
                                end: caretPosition
                            }, true)
                        }
                    },
                    _isEditable: function() {
                        return this.option("acceptCustomValue")
                    },
                    _toggleOpenState: function(isVisible) {
                        if (!this._focusInput()) {
                            return
                        }
                        if (!this.option("readOnly")) {
                            isVisible = arguments.length ? isVisible : !this.option("opened");
                            this.option("opened", isVisible)
                        }
                    },
                    _getControlsAria() {
                        return this._popup && this._popupContentId
                    },
                    _renderOpenedState: function() {
                        const opened = this.option("opened");
                        if (opened) {
                            this._createPopup()
                        }
                        this.$element().toggleClass("dx-dropdowneditor-active", opened);
                        this._setPopupOption("visible", opened);
                        const arias = {
                            expanded: opened,
                            controls: this._getControlsAria()
                        };
                        this.setAria(arias);
                        this.setAria("owns", opened ? this._popupContentId : void 0, this.$element())
                    },
                    _createPopup: function() {
                        if (this._$popup) {
                            return
                        }
                        this._$popup = (0, _renderer.default)("<div>").addClass("dx-dropdowneditor-overlay").appendTo(this.$element());
                        this._renderPopup();
                        this._renderPopupContent()
                    },
                    _renderPopupContent: _common.noop,
                    _renderPopup: function() {
                        const popupConfig = (0, _extend.extend)(this._popupConfig(), this._options.cache("dropDownOptions"));
                        delete popupConfig.closeOnOutsideClick;
                        if (popupConfig.elementAttr && !Object.keys(popupConfig.elementAttr).length) {
                            delete popupConfig.elementAttr
                        }
                        this._popup = this._createComponent(this._$popup, _ui4.default, popupConfig);
                        this._popup.on({
                            showing: this._popupShowingHandler.bind(this),
                            shown: this._popupShownHandler.bind(this),
                            hiding: this._popupHidingHandler.bind(this),
                            hidden: this._popupHiddenHandler.bind(this),
                            contentReady: this._contentReadyHandler.bind(this)
                        });
                        this._attachPopupKeyHandler();
                        this._contentReadyHandler();
                        this._setPopupContentId(this._popup.$content());
                        this._bindInnerWidgetOptions(this._popup, "dropDownOptions")
                    },
                    _attachPopupKeyHandler() {
                        _events_engine.default.on(this._popup.$overlayContent(), (0, _index.addNamespace)("keydown", this.NAME), e => this._popupKeyHandler(e))
                    },
                    _popupKeyHandler(e) {
                        switch ((0, _index.normalizeKeyName)(e)) {
                            case "tab":
                                this._popupTabHandler(e);
                                break;
                            case "escape":
                                this._popupEscHandler(e)
                        }
                    },
                    _popupTabHandler(e) {
                        const $target = (0, _renderer.default)(e.target);
                        const moveBackward = e.shiftKey && $target.is(this._getFirstPopupElement());
                        const moveForward = !e.shiftKey && $target.is(this._getLastPopupElement());
                        if (moveForward || moveBackward) {
                            _events_engine.default.trigger(this.field(), "focus");
                            e.preventDefault()
                        }
                    },
                    _popupEscHandler() {
                        _events_engine.default.trigger(this._input(), "focus");
                        this.close()
                    },
                    _setPopupContentId($popupContent) {
                        this._popupContentId = "dx-" + new _guid.default;
                        this.setAria("id", this._popupContentId, $popupContent)
                    },
                    _contentReadyHandler: _common.noop,
                    _popupConfig: function() {
                        return {
                            onInitialized: this._getPopupInitializedHandler(),
                            position: (0, _extend.extend)(this.option("popupPosition"), {
                                of: this.$element()
                            }),
                            showTitle: this.option("dropDownOptions.showTitle"),
                            _ignoreFunctionValueDeprecation: true,
                            width: () => (0, _utils.getElementWidth)(this.$element()),
                            height: "auto",
                            shading: false,
                            hideOnParentScroll: true,
                            hideOnOutsideClick: e => this._closeOutsideDropDownHandler(e),
                            animation: {
                                show: {
                                    type: "fade",
                                    duration: 0,
                                    from: 0,
                                    to: 1
                                },
                                hide: {
                                    type: "fade",
                                    duration: 400,
                                    from: 1,
                                    to: 0
                                }
                            },
                            deferRendering: false,
                            focusStateEnabled: false,
                            showCloseButton: false,
                            dragEnabled: false,
                            toolbarItems: this._getPopupToolbarItems(),
                            onPositioned: this._popupPositionedHandler.bind(this),
                            fullScreen: false,
                            contentTemplate: null,
                            _hideOnParentScrollTarget: this.$element(),
                            _wrapperClassExternal: "dx-dropdowneditor-overlay",
                            _ignorePreventScrollEventsDeprecation: true
                        }
                    },
                    _popupInitializedHandler: _common.noop,
                    _getPopupInitializedHandler: function() {
                        const onPopupInitialized = this.option("onPopupInitialized");
                        return e => {
                            this._popupInitializedHandler(e);
                            if (onPopupInitialized) {
                                this._popupInitializedAction({
                                    popup: e.component
                                })
                            }
                        }
                    },
                    _dimensionChanged: function() {
                        if ((0, _window.hasWindow)() && !this.$element().is(":visible")) {
                            this.close();
                            return
                        }
                        this._updatePopupWidth()
                    },
                    _updatePopupWidth: function() {
                        const popupWidth = (0, _utils.getSizeValue)(this.option("dropDownOptions.width"));
                        if (void 0 === popupWidth) {
                            this._setPopupOption("width", () => (0, _utils.getElementWidth)(this.$element()))
                        }
                    },
                    _popupPositionedHandler: function(e) {
                        var _e$position, _e$position$v;
                        const {
                            labelMode: labelMode,
                            stylingMode: stylingMode
                        } = this.option();
                        if (!this._popup) {
                            return
                        }
                        const $popupOverlayContent = this._popup.$overlayContent();
                        const isOverlayFlipped = null === (_e$position = e.position) || void 0 === _e$position ? void 0 : null === (_e$position$v = _e$position.v) || void 0 === _e$position$v ? void 0 : _e$position$v.flip;
                        const shouldIndentForLabel = "hidden" !== labelMode && "outside" !== labelMode && "outlined" === stylingMode;
                        if (e.position) {
                            $popupOverlayContent.toggleClass("dx-dropdowneditor-overlay-flipped", isOverlayFlipped)
                        }
                        if (isOverlayFlipped && shouldIndentForLabel && this._label.isVisible()) {
                            const $label = this._label.$element();
                            (0, _translator.move)($popupOverlayContent, {
                                top: (0, _translator.locate)($popupOverlayContent).top - parseInt($label.css("fontSize"))
                            })
                        }
                    },
                    _popupShowingHandler: _common.noop,
                    _popupHidingHandler: function() {
                        this.option("opened", false)
                    },
                    _popupShownHandler: function() {
                        var _this$_validationMess;
                        this._openAction();
                        null === (_this$_validationMess = this._validationMessage) || void 0 === _this$_validationMess ? void 0 : _this$_validationMess.option("positionSide", this._getValidationMessagePositionSide())
                    },
                    _popupHiddenHandler: function() {
                        var _this$_validationMess2;
                        this._closeAction();
                        null === (_this$_validationMess2 = this._validationMessage) || void 0 === _this$_validationMess2 ? void 0 : _this$_validationMess2.option("positionSide", this._getValidationMessagePositionSide())
                    },
                    _getValidationMessagePositionSide: function() {
                        const validationMessagePosition = this.option("validationMessagePosition");
                        if ("auto" !== validationMessagePosition) {
                            return validationMessagePosition
                        }
                        let positionSide = "bottom";
                        if (this._popup && this._popup.option("visible")) {
                            const {
                                top: myTop
                            } = _position.default.setup(this.$element());
                            const {
                                top: popupTop
                            } = _position.default.setup(this._popup.$content());
                            positionSide = myTop + this.option("popupPosition").offset.v > popupTop ? "bottom" : "top"
                        }
                        return positionSide
                    },
                    _closeOutsideDropDownHandler: function(_ref) {
                        let {
                            target: target
                        } = _ref;
                        const $target = (0, _renderer.default)(target);
                        const dropDownButton = this.getButton("dropDown");
                        const $dropDownButton = dropDownButton && dropDownButton.$element();
                        const isInputClicked = !!$target.closest(this.$element()).length;
                        const isDropDownButtonClicked = !!$target.closest($dropDownButton).length;
                        const isOutsideClick = !isInputClicked && !isDropDownButtonClicked;
                        return isOutsideClick
                    },
                    _clean: function() {
                        delete this._openOnFieldClickAction;
                        if (this._$popup) {
                            this._$popup.remove();
                            delete this._$popup;
                            delete this._popup
                        }
                        this.callBase()
                    },
                    _setPopupOption: function(optionName, value) {
                        this._setWidgetOption("_popup", arguments)
                    },
                    _validatedOpening: function() {
                        if (!this.option("readOnly")) {
                            this._toggleOpenState(true)
                        }
                    },
                    _getPopupToolbarItems: function() {
                        return "useButtons" === this.option("applyValueMode") ? this._popupToolbarItemsConfig() : []
                    },
                    _getFirstPopupElement: function() {
                        return (0, _renderer.default)(this._popup.getFocusableElements()).first()
                    },
                    _getLastPopupElement: function() {
                        return (0, _renderer.default)(this._popup.getFocusableElements()).last()
                    },
                    _popupToolbarItemsConfig: function() {
                        const buttonsConfig = [{
                            shortcut: "done",
                            options: {
                                onClick: this._applyButtonHandler.bind(this),
                                text: this.option("applyButtonText")
                            }
                        }, {
                            shortcut: "cancel",
                            options: {
                                onClick: this._cancelButtonHandler.bind(this),
                                text: this.option("cancelButtonText")
                            }
                        }];
                        return this._applyButtonsLocation(buttonsConfig)
                    },
                    _applyButtonsLocation: function(buttonsConfig) {
                        const buttonsLocation = this.option("buttonsLocation");
                        const resultConfig = buttonsConfig;
                        if ("default" !== buttonsLocation) {
                            const position = (0, _common.splitPair)(buttonsLocation);
                            (0, _iterator.each)(resultConfig, (function(_, element) {
                                (0, _extend.extend)(element, {
                                    toolbar: position[0],
                                    location: position[1]
                                })
                            }))
                        }
                        return resultConfig
                    },
                    _applyButtonHandler: function() {
                        this.close();
                        this.option("focusStateEnabled") && this.focus()
                    },
                    _cancelButtonHandler: function() {
                        this.close();
                        this.option("focusStateEnabled") && this.focus()
                    },
                    _popupOptionChanged: function(args) {
                        const options = _ui3.default.getOptionsFromContainer(args);
                        this._setPopupOption(options);
                        const optionsKeys = Object.keys(options);
                        if (-1 !== optionsKeys.indexOf("width") || -1 !== optionsKeys.indexOf("height")) {
                            this._dimensionChanged()
                        }
                    },
                    _renderSubmitElement: function() {
                        if (this.option("useHiddenSubmitElement")) {
                            this._$submitElement = (0, _renderer.default)("<input>").attr("type", "hidden").appendTo(this.$element())
                        }
                    },
                    _setSubmitValue: function() {
                        this._getSubmitElement().val(this.option("value"))
                    },
                    _getSubmitElement: function() {
                        if (this.option("useHiddenSubmitElement")) {
                            return this._$submitElement
                        } else {
                            return this.callBase()
                        }
                    },
                    _dispose: function() {
                        this._detachFocusOutEvents();
                        this.callBase()
                    },
                    _optionChanged: function(args) {
                        var _this$_popup;
                        switch (args.name) {
                            case "width":
                            case "height":
                                this.callBase(args);
                                null === (_this$_popup = this._popup) || void 0 === _this$_popup ? void 0 : _this$_popup.repaint();
                                break;
                            case "opened":
                                this._renderOpenedState();
                                break;
                            case "onOpened":
                            case "onClosed":
                                this._initVisibilityActions();
                                break;
                            case "onPopupInitialized":
                                this._initPopupInitializedAction();
                                break;
                            case "fieldTemplate":
                                if ((0, _type.isDefined)(args.value)) {
                                    this._renderField()
                                } else {
                                    this._invalidate()
                                }
                                break;
                            case "acceptCustomValue":
                            case "openOnFieldClick":
                                this._invalidate();
                                break;
                            case "dropDownButtonTemplate":
                            case "showDropDownButton":
                                this._updateButtons(["dropDown"]);
                                break;
                            case "dropDownOptions":
                                this._popupOptionChanged(args);
                                this._options.cache("dropDownOptions", this.option("dropDownOptions"));
                                break;
                            case "popupPosition":
                                break;
                            case "deferRendering":
                                if ((0, _window.hasWindow)()) {
                                    this._createPopup()
                                }
                                break;
                            case "applyValueMode":
                            case "applyButtonText":
                            case "cancelButtonText":
                            case "buttonsLocation":
                                this._setPopupOption("toolbarItems", this._getPopupToolbarItems());
                                break;
                            case "useHiddenSubmitElement":
                                if (this._$submitElement) {
                                    this._$submitElement.remove();
                                    this._$submitElement = void 0
                                }
                                this._renderSubmitElement();
                                break;
                            case "rtlEnabled":
                                this._updatePopupPosition(args.value);
                                this.callBase(args);
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    open: function() {
                        this.option("opened", true)
                    },
                    close: function() {
                        this.option("opened", false)
                    },
                    field: function() {
                        return (0, _element.getPublicElement)(this._input())
                    },
                    content: function() {
                        return this._popup ? this._popup.content() : null
                    }
                });
                (0, _component_registrator.default)("dxDropDownEditor", DropDownEditor);
                var _default = DropDownEditor;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        32468:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/drop_down_editor/ui.drop_down_list.js ***!
              \**************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 73176));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./ui.drop_down_editor */ 44687));
                var _list_light = _interopRequireDefault(__webpack_require__( /*! ../list_light */ 56757));
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.errors */ 96688));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _query = _interopRequireDefault(__webpack_require__( /*! ../../data/query */ 96687));
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _ui3 = _interopRequireDefault(__webpack_require__( /*! ../editor/ui.data_expression */ 88718));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _child_default_template = __webpack_require__( /*! ../../core/templates/child_default_template */ 91627);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _grouped_data_converter_mixin = _interopRequireDefault(__webpack_require__( /*! ../shared/grouped_data_converter_mixin */ 37178));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();
                const SEARCH_MODES = ["startswith", "contains", "endwith", "notcontains"];
                const useCompositionEvents = "android" !== _devices.default.real().platform;
                const DropDownList = _ui.default.inherit({
                    _supportedKeys: function() {
                        const parent = this.callBase();
                        return (0, _extend.extend)({}, parent, {
                            tab: function(e) {
                                if (this._allowSelectItemByTab()) {
                                    this._saveValueChangeEvent(e);
                                    const $focusedItem = (0, _renderer.default)(this._list.option("focusedElement"));
                                    $focusedItem.length && this._setSelectedElement($focusedItem)
                                }
                                parent.tab.apply(this, arguments)
                            },
                            space: _common.noop,
                            home: _common.noop,
                            end: _common.noop
                        })
                    },
                    _allowSelectItemByTab: function() {
                        return this.option("opened") && "instantly" === this.option("applyValueMode")
                    },
                    _setSelectedElement: function($element) {
                        const value = this._valueGetter(this._list._getItemData($element));
                        this._setValue(value)
                    },
                    _setValue: function(value) {
                        this.option("value", value)
                    },
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), (0, _extend.extend)(_ui3.default._dataExpressionDefaultOptions(), {
                            displayValue: void 0,
                            searchEnabled: false,
                            searchMode: "contains",
                            searchTimeout: 500,
                            minSearchLength: 0,
                            searchExpr: null,
                            valueChangeEvent: "input change keyup",
                            selectedItem: null,
                            noDataText: _message.default.format("dxCollectionWidget-noDataText"),
                            encodeNoDataText: false,
                            onSelectionChanged: null,
                            onItemClick: _common.noop,
                            showDataBeforeSearch: false,
                            grouped: false,
                            groupTemplate: "group",
                            popupPosition: {
                                my: "left top",
                                at: "left bottom",
                                offset: {
                                    h: 0,
                                    v: 0
                                },
                                collision: "flip"
                            },
                            wrapItemText: false,
                            useItemTextAsTitle: false
                        }))
                    },
                    _defaultOptionsRules: function() {
                        return this.callBase().concat([{
                            device: {
                                platform: "ios"
                            },
                            options: {
                                popupPosition: {
                                    offset: {
                                        v: -1
                                    }
                                }
                            }
                        }, {
                            device: {
                                platform: "generic"
                            },
                            options: {
                                buttonsLocation: "bottom center"
                            }
                        }])
                    },
                    _setOptionsByReference: function() {
                        this.callBase();
                        (0, _extend.extend)(this._optionsByReference, {
                            value: true,
                            selectedItem: true,
                            displayValue: true
                        })
                    },
                    _init: function() {
                        this.callBase();
                        this._initDataExpressions();
                        this._initActions();
                        this._setListDataSource();
                        this._validateSearchMode();
                        this._clearSelectedItem();
                        this._initItems()
                    },
                    _setListFocusedElementOptionChange: function() {
                        this._list._updateParentActiveDescendant = this._updateActiveDescendant.bind(this)
                    },
                    _initItems: function() {
                        const items = this.option().items;
                        if (items && !items.length && this._dataSource) {
                            this.option().items = this._dataSource.items()
                        }
                    },
                    _initActions: function() {
                        this._initContentReadyAction();
                        this._initSelectionChangedAction();
                        this._initItemClickAction()
                    },
                    _initContentReadyAction: function() {
                        this._contentReadyAction = this._createActionByOption("onContentReady", {
                            excludeValidators: ["disabled", "readOnly"]
                        })
                    },
                    _initSelectionChangedAction: function() {
                        this._selectionChangedAction = this._createActionByOption("onSelectionChanged", {
                            excludeValidators: ["disabled", "readOnly"]
                        })
                    },
                    _initItemClickAction: function() {
                        this._itemClickAction = this._createActionByOption("onItemClick")
                    },
                    _initTemplates: function() {
                        this.callBase();
                        this._templateManager.addDefaultTemplates({
                            item: new _child_default_template.ChildDefaultTemplate("item")
                        })
                    },
                    _isEditable: function() {
                        return this.callBase() || this.option("searchEnabled")
                    },
                    _saveFocusOnWidget: function(e) {
                        if (this._list && this._list.initialOption("focusStateEnabled")) {
                            this._focusInput()
                        }
                    },
                    _fitIntoRange: function(value, start, end) {
                        if (value > end) {
                            return start
                        }
                        if (value < start) {
                            return end
                        }
                        return value
                    },
                    _items: function() {
                        const items = this._getPlainItems(!this._list && this._dataSource.items());
                        const availableItems = new _query.default(items).filter("disabled", "<>", true).toArray();
                        return availableItems
                    },
                    _calcNextItem: function(step) {
                        const items = this._items();
                        const nextIndex = this._fitIntoRange(this._getSelectedIndex() + step, 0, items.length - 1);
                        return items[nextIndex]
                    },
                    _getSelectedIndex: function() {
                        const items = this._items();
                        const selectedItem = this.option("selectedItem");
                        let result = -1;
                        (0, _iterator.each)(items, function(index, item) {
                            if (this._isValueEquals(item, selectedItem)) {
                                result = index;
                                return false
                            }
                        }.bind(this));
                        return result
                    },
                    _createPopup: function() {
                        this.callBase();
                        this._updateCustomBoundaryContainer();
                        this._popup.$wrapper().addClass(this._popupWrapperClass());
                        const $popupContent = this._popup.$content();
                        _events_engine.default.off($popupContent, "mouseup");
                        _events_engine.default.on($popupContent, "mouseup", this._saveFocusOnWidget.bind(this))
                    },
                    _updateCustomBoundaryContainer: function() {
                        const customContainer = this.option("dropDownOptions.container");
                        const $container = customContainer && (0, _renderer.default)(customContainer);
                        if ($container && $container.length && !(0, _type.isWindow)($container.get(0))) {
                            const $containerWithParents = [].slice.call($container.parents());
                            $containerWithParents.unshift($container.get(0));
                            (0, _iterator.each)($containerWithParents, function(i, parent) {
                                if (parent === (0, _renderer.default)("body").get(0)) {
                                    return false
                                } else if ("hidden" === window.getComputedStyle(parent).overflowY) {
                                    this._$customBoundaryContainer = (0, _renderer.default)(parent);
                                    return false
                                }
                            }.bind(this))
                        }
                    },
                    _popupWrapperClass: function() {
                        return "dx-dropdownlist-popup-wrapper"
                    },
                    _renderInputValue: function() {
                        const value = this._getCurrentValue();
                        this._rejectValueLoading();
                        return this._loadInputValue(value, this._setSelectedItem.bind(this)).always(this.callBase.bind(this, value))
                    },
                    _loadInputValue: function(value, callback) {
                        return this._loadItem(value).always(callback)
                    },
                    _getItemFromPlain: function(value, cache) {
                        let plainItems;
                        let selectedItem;
                        if (cache && "object" !== typeof value) {
                            if (!cache.itemByValue) {
                                cache.itemByValue = {};
                                plainItems = this._getPlainItems();
                                plainItems.forEach((function(item) {
                                    cache.itemByValue[this._valueGetter(item)] = item
                                }), this)
                            }
                            selectedItem = cache.itemByValue[value]
                        }
                        if (!selectedItem) {
                            plainItems = this._getPlainItems();
                            selectedItem = (0, _common.grep)(plainItems, function(item) {
                                return this._isValueEquals(this._valueGetter(item), value)
                            }.bind(this))[0]
                        }
                        return selectedItem
                    },
                    _loadItem: function(value, cache) {
                        const selectedItem = this._getItemFromPlain(value, cache);
                        return void 0 !== selectedItem ? (new _deferred.Deferred).resolve(selectedItem).promise() : this._loadValue(value)
                    },
                    _getPlainItems: function(items) {
                        let plainItems = [];
                        items = items || this.option("items") || this._dataSource.items() || [];
                        for (let i = 0; i < items.length; i++) {
                            if (items[i] && items[i].items) {
                                plainItems = plainItems.concat(items[i].items)
                            } else {
                                plainItems.push(items[i])
                            }
                        }
                        return plainItems
                    },
                    _updateActiveDescendant($target) {
                        var _this$_list;
                        const opened = this.option("opened");
                        const listFocusedItemId = null === (_this$_list = this._list) || void 0 === _this$_list ? void 0 : _this$_list.getFocusedItemId();
                        const isElementOnDom = (0, _renderer.default)("#".concat(listFocusedItemId)).length > 0;
                        const activedescendant = opened && isElementOnDom && listFocusedItemId;
                        this.setAria({
                            activedescendant: activedescendant || null
                        }, $target)
                    },
                    _setSelectedItem: function(item) {
                        const displayValue = this._displayValue(item);
                        this.option("selectedItem", (0, _common.ensureDefined)(item, null));
                        this.option("displayValue", displayValue)
                    },
                    _displayValue: function(item) {
                        return this._displayGetter(item)
                    },
                    _refreshSelected: function() {
                        const cache = {};
                        this._listItemElements().each(function(_, itemElement) {
                            const $itemElement = (0, _renderer.default)(itemElement);
                            const itemValue = this._valueGetter($itemElement.data("dxListItemData"));
                            const isItemSelected = this._isSelectedValue(itemValue, cache);
                            if (isItemSelected) {
                                this._list.selectItem($itemElement)
                            } else {
                                this._list.unselectItem($itemElement)
                            }
                        }.bind(this))
                    },
                    _popupShownHandler: function() {
                        this.callBase();
                        this._setFocusPolicy()
                    },
                    _setFocusPolicy: function() {
                        if (!this.option("focusStateEnabled") || !this._list) {
                            return
                        }
                        this._list.option("focusedElement", null)
                    },
                    _isSelectedValue: function(value) {
                        return this._isValueEquals(value, this.option("value"))
                    },
                    _validateSearchMode: function() {
                        const searchMode = this.option("searchMode");
                        const normalizedSearchMode = searchMode.toLowerCase();
                        if (!SEARCH_MODES.includes(normalizedSearchMode)) {
                            throw _ui2.default.Error("E1019", searchMode)
                        }
                    },
                    _clearSelectedItem: function() {
                        this.option("selectedItem", null)
                    },
                    _processDataSourceChanging: function() {
                        this._initDataController();
                        this._setListOption("_dataController", this._dataController);
                        this._setListDataSource();
                        this._renderInputValue().fail(function() {
                            if (this._isCustomValueAllowed()) {
                                return
                            }
                            this._clearSelectedItem()
                        }.bind(this))
                    },
                    _isCustomValueAllowed: function() {
                        return this.option("displayCustomValue")
                    },
                    clear: function() {
                        this.callBase();
                        this._clearFilter();
                        this._clearSelectedItem()
                    },
                    _listItemElements: function() {
                        return this._$list ? this._$list.find(".dx-list-item") : (0, _renderer.default)()
                    },
                    _popupConfig: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            templatesRenderAsynchronously: false,
                            autoResizeEnabled: false,
                            maxHeight: this._getMaxHeight.bind(this)
                        })
                    },
                    _renderPopupContent: function() {
                        this.callBase();
                        this._renderList()
                    },
                    _getKeyboardListeners() {
                        const canListHaveFocus = this._canListHaveFocus();
                        return this.callBase().concat([!canListHaveFocus && this._list])
                    },
                    _renderList: function() {
                        this._listId = "dx-" + (new _guid.default)._value;
                        const $list = (0, _renderer.default)("<div>").attr("id", this._listId).appendTo(this._popup.$content());
                        this._$list = $list;
                        this._list = this._createComponent($list, _list_light.default, this._listConfig());
                        this._refreshList();
                        this._renderPreventBlurOnListClick();
                        this._setListFocusedElementOptionChange()
                    },
                    _renderPreventBlurOnListClick: function() {
                        const eventName = (0, _index.addNamespace)("mousedown", "dxDropDownList");
                        _events_engine.default.off(this._$list, eventName);
                        _events_engine.default.on(this._$list, eventName, e => e.preventDefault())
                    },
                    _getControlsAria() {
                        return this._list && this._listId
                    },
                    _renderOpenedState: function() {
                        this.callBase();
                        this._list && this._updateActiveDescendant();
                        this.setAria("owns", this._popup && this._popupContentId)
                    },
                    _setDefaultAria: function() {
                        this.setAria({
                            haspopup: "listbox",
                            autocomplete: "list"
                        })
                    },
                    _refreshList: function() {
                        if (this._list && this._shouldRefreshDataSource()) {
                            this._setListDataSource()
                        }
                    },
                    _shouldRefreshDataSource: function() {
                        const dataSourceProvided = !!this._list.option("dataSource");
                        return dataSourceProvided !== this._needPassDataSourceToList()
                    },
                    _isDesktopDevice: function() {
                        return "desktop" === _devices.default.real().deviceType
                    },
                    _listConfig: function() {
                        const options = {
                            selectionMode: "single",
                            _templates: this.option("_templates"),
                            templateProvider: this.option("templateProvider"),
                            noDataText: this.option("noDataText"),
                            encodeNoDataText: this.option("encodeNoDataText"),
                            grouped: this.option("grouped"),
                            wrapItemText: this.option("wrapItemText"),
                            useItemTextAsTitle: this.option("useItemTextAsTitle"),
                            onContentReady: this._listContentReadyHandler.bind(this),
                            itemTemplate: this.option("itemTemplate"),
                            indicateLoading: false,
                            keyExpr: this._getCollectionKeyExpr(),
                            displayExpr: this._displayGetterExpr(),
                            groupTemplate: this.option("groupTemplate"),
                            onItemClick: this._listItemClickAction.bind(this),
                            dataSource: this._getDataSource(),
                            _dataController: this._dataController,
                            hoverStateEnabled: this._isDesktopDevice() ? this.option("hoverStateEnabled") : false,
                            focusStateEnabled: this._isDesktopDevice() ? this.option("focusStateEnabled") : false
                        };
                        if (!this._canListHaveFocus()) {
                            options.tabIndex = null
                        }
                        return options
                    },
                    _canListHaveFocus: () => false,
                    _getDataSource: function() {
                        return this._needPassDataSourceToList() ? this._dataSource : null
                    },
                    _dataSourceOptions: function() {
                        return {
                            paginate: false
                        }
                    },
                    _getGroupedOption: function() {
                        return this.option("grouped")
                    },
                    _dataSourceFromUrlLoadMode: function() {
                        return "raw"
                    },
                    _listContentReadyHandler: function() {
                        this._list = this._list || this._$list.dxList("instance");
                        if (!this.option("deferRendering")) {
                            this._refreshSelected()
                        }
                        this._updatePopupWidth();
                        this._updateListDimensions();
                        this._contentReadyAction()
                    },
                    _setListOption: function(optionName, value) {
                        this._setWidgetOption("_list", arguments)
                    },
                    _listItemClickAction: function(e) {
                        this._listItemClickHandler(e);
                        this._itemClickAction(e)
                    },
                    _listItemClickHandler: _common.noop,
                    _setListDataSource: function() {
                        if (!this._list) {
                            return
                        }
                        this._setListOption("dataSource", this._getDataSource());
                        if (!this._needPassDataSourceToList()) {
                            this._setListOption("items", [])
                        }
                    },
                    _needPassDataSourceToList: function() {
                        return this.option("showDataBeforeSearch") || this._isMinSearchLengthExceeded()
                    },
                    _isMinSearchLengthExceeded: function() {
                        return this._searchValue().toString().length >= this.option("minSearchLength")
                    },
                    _needClearFilter: function() {
                        return this._canKeepDataSource() ? false : this._needPassDataSourceToList()
                    },
                    _canKeepDataSource: function() {
                        const isMinSearchLengthExceeded = this._isMinSearchLengthExceeded();
                        return this._dataController.isLoaded() && this.option("showDataBeforeSearch") && this.option("minSearchLength") && !isMinSearchLengthExceeded && !this._isLastMinSearchLengthExceeded
                    },
                    _searchValue: function() {
                        return this._input().val() || ""
                    },
                    _getSearchEvent: function() {
                        return (0, _index.addNamespace)("input", this.NAME + "Search")
                    },
                    _getCompositionStartEvent: function() {
                        return (0, _index.addNamespace)("compositionstart", this.NAME + "CompositionStart")
                    },
                    _getCompositionEndEvent: function() {
                        return (0, _index.addNamespace)("compositionend", this.NAME + "CompositionEnd")
                    },
                    _getSetFocusPolicyEvent: function() {
                        return (0, _index.addNamespace)("input", this.NAME + "FocusPolicy")
                    },
                    _renderEvents: function() {
                        this.callBase();
                        _events_engine.default.on(this._input(), this._getSetFocusPolicyEvent(), () => {
                            this._setFocusPolicy()
                        });
                        if (this._shouldRenderSearchEvent()) {
                            _events_engine.default.on(this._input(), this._getSearchEvent(), e => {
                                this._searchHandler(e)
                            });
                            if (useCompositionEvents) {
                                _events_engine.default.on(this._input(), this._getCompositionStartEvent(), () => {
                                    this._isTextCompositionInProgress(true)
                                });
                                _events_engine.default.on(this._input(), this._getCompositionEndEvent(), e => {
                                    this._isTextCompositionInProgress(void 0);
                                    this._searchHandler(e, this._searchValue())
                                })
                            }
                        }
                    },
                    _shouldRenderSearchEvent: function() {
                        return this.option("searchEnabled")
                    },
                    _refreshEvents: function() {
                        _events_engine.default.off(this._input(), this._getSearchEvent());
                        _events_engine.default.off(this._input(), this._getSetFocusPolicyEvent());
                        if (useCompositionEvents) {
                            _events_engine.default.off(this._input(), this._getCompositionStartEvent());
                            _events_engine.default.off(this._input(), this._getCompositionEndEvent())
                        }
                        this.callBase()
                    },
                    _isTextCompositionInProgress: function(value) {
                        if (arguments.length) {
                            this._isTextComposition = value
                        } else {
                            return this._isTextComposition
                        }
                    },
                    _searchHandler: function(e, searchValue) {
                        if (this._isTextCompositionInProgress()) {
                            return
                        }
                        if (!this._isMinSearchLengthExceeded()) {
                            this._searchCanceled();
                            return
                        }
                        const searchTimeout = this.option("searchTimeout");
                        if (searchTimeout) {
                            this._clearSearchTimer();
                            this._searchTimer = setTimeout(() => {
                                this._searchDataSource(searchValue)
                            }, searchTimeout)
                        } else {
                            this._searchDataSource(searchValue)
                        }
                    },
                    _searchCanceled: function() {
                        this._clearSearchTimer();
                        if (this._needClearFilter()) {
                            this._filterDataSource(null)
                        }
                        this._refreshList()
                    },
                    _searchDataSource: function() {
                        let searchValue = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._searchValue();
                        this._filterDataSource(searchValue)
                    },
                    _filterDataSource: function(searchValue) {
                        this._clearSearchTimer();
                        const dataController = this._dataController;
                        dataController.searchExpr(this.option("searchExpr") || this._displayGetterExpr());
                        dataController.searchOperation(this.option("searchMode"));
                        dataController.searchValue(searchValue);
                        dataController.load().done(this._dataSourceFiltered.bind(this, searchValue))
                    },
                    _clearFilter: function() {
                        const dataController = this._dataController;
                        dataController.searchValue() && dataController.searchValue(null)
                    },
                    _dataSourceFiltered: function() {
                        this._isLastMinSearchLengthExceeded = this._isMinSearchLengthExceeded();
                        this._refreshList();
                        this._refreshPopupVisibility()
                    },
                    _shouldOpenPopup: function() {
                        return this._hasItemsToShow()
                    },
                    _refreshPopupVisibility: function() {
                        if (this.option("readOnly") || !this._searchValue()) {
                            return
                        }
                        const shouldOpenPopup = this._shouldOpenPopup();
                        if (shouldOpenPopup && !this._isFocused()) {
                            return
                        }
                        this.option("opened", shouldOpenPopup);
                        if (shouldOpenPopup) {
                            this._updatePopupWidth();
                            this._updateListDimensions()
                        }
                    },
                    _dataSourceChangedHandler: function(newItems) {
                        if (0 === this._dataController.pageIndex()) {
                            this.option().items = newItems
                        } else {
                            this.option().items = this.option().items.concat(newItems)
                        }
                    },
                    _hasItemsToShow: function() {
                        const dataController = this._dataController;
                        const resultItems = dataController.items() || [];
                        const resultAmount = resultItems.length;
                        const isMinSearchLengthExceeded = this._needPassDataSourceToList();
                        return !!(isMinSearchLengthExceeded && resultAmount)
                    },
                    _clearSearchTimer: function() {
                        clearTimeout(this._searchTimer);
                        delete this._searchTimer
                    },
                    _popupShowingHandler: function() {
                        this._updatePopupWidth();
                        this._updateListDimensions()
                    },
                    _dimensionChanged: function() {
                        this.callBase();
                        this._updateListDimensions()
                    },
                    _needPopupRepaint: function() {
                        const dataController = this._dataController;
                        const currentPageIndex = dataController.pageIndex();
                        const needRepaint = (0, _type.isDefined)(this._pageIndex) && currentPageIndex <= this._pageIndex || dataController.isLastPage() && !this._list._scrollViewIsFull();
                        this._pageIndex = currentPageIndex;
                        return needRepaint
                    },
                    _updateListDimensions: function() {
                        if (!this._popup) {
                            return
                        }
                        if (this._needPopupRepaint()) {
                            this._popup.repaint()
                        }
                        this._list && this._list.updateDimensions()
                    },
                    _getMaxHeight: function() {
                        const $element = this.$element();
                        const $customBoundaryContainer = this._$customBoundaryContainer;
                        const offsetTop = $element.offset().top - ($customBoundaryContainer ? $customBoundaryContainer.offset().top : 0);
                        const windowHeight = (0, _size.getOuterHeight)(window);
                        const containerHeight = $customBoundaryContainer ? Math.min((0, _size.getOuterHeight)($customBoundaryContainer), windowHeight) : windowHeight;
                        const maxHeight = Math.max(offsetTop, containerHeight - offsetTop - (0, _size.getOuterHeight)($element));
                        return Math.min(.5 * containerHeight, maxHeight)
                    },
                    _clean: function() {
                        if (this._list) {
                            delete this._list
                        }
                        delete this._isLastMinSearchLengthExceeded;
                        this.callBase()
                    },
                    _dispose: function() {
                        this._clearSearchTimer();
                        this.callBase()
                    },
                    _setCollectionWidgetOption: function() {
                        this._setListOption.apply(this, arguments)
                    },
                    _setSubmitValue: function() {
                        const value = this.option("value");
                        const submitValue = this._shouldUseDisplayValue(value) ? this._displayGetter(value) : value;
                        this._getSubmitElement().val(submitValue)
                    },
                    _shouldUseDisplayValue: function(value) {
                        return "this" === this.option("valueExpr") && (0, _type.isObject)(value)
                    },
                    _optionChanged: function(args) {
                        this._dataExpressionOptionChanged(args);
                        switch (args.name) {
                            case "hoverStateEnabled":
                            case "focusStateEnabled":
                                this._isDesktopDevice() && this._setListOption(args.name, args.value);
                                this.callBase(args);
                                break;
                            case "items":
                                if (!this.option("dataSource")) {
                                    this._processDataSourceChanging()
                                }
                                break;
                            case "dataSource":
                                this._processDataSourceChanging();
                                break;
                            case "valueExpr":
                                this._renderValue();
                                this._setListOption("keyExpr", this._getCollectionKeyExpr());
                                break;
                            case "displayExpr":
                                this._renderValue();
                                this._setListOption("displayExpr", this._displayGetterExpr());
                                break;
                            case "searchMode":
                                this._validateSearchMode();
                                break;
                            case "minSearchLength":
                                this._refreshList();
                                break;
                            case "searchEnabled":
                            case "showDataBeforeSearch":
                            case "searchExpr":
                                this._invalidate();
                                break;
                            case "onContentReady":
                                this._initContentReadyAction();
                                break;
                            case "onSelectionChanged":
                                this._initSelectionChangedAction();
                                break;
                            case "onItemClick":
                                this._initItemClickAction();
                                break;
                            case "grouped":
                            case "groupTemplate":
                            case "wrapItemText":
                            case "noDataText":
                            case "encodeNoDataText":
                            case "useItemTextAsTitle":
                                this._setListOption(args.name);
                                break;
                            case "displayValue":
                                this.option("text", args.value);
                                break;
                            case "itemTemplate":
                            case "searchTimeout":
                                break;
                            case "selectedItem":
                                if (args.previousValue !== args.value) {
                                    this._selectionChangedAction({
                                        selectedItem: args.value
                                    })
                                }
                                break;
                            default:
                                this.callBase(args)
                        }
                    }
                }).include(_ui3.default, _grouped_data_converter_mixin.default);
                (0, _component_registrator.default)("dxDropDownList", DropDownList);
                var _default = DropDownList;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        61902:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/drop_down_editor/utils.js ***!
              \**************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getSizeValue = exports.getElementWidth = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                exports.getElementWidth = function($element) {
                    if ((0, _window.hasWindow)()) {
                        return (0, _size.getOuterWidth)($element)
                    }
                };
                exports.getSizeValue = function(size) {
                    if (null === size) {
                        size = void 0
                    }
                    if ("function" === typeof size) {
                        size = size()
                    }
                    return size
                }
            },
        96452:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/editor/editor.js ***!
              \*****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _element_data = __webpack_require__( /*! ../../core/element_data */ 97906);
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/callbacks */ 44504));
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _validation_engine = _interopRequireDefault(__webpack_require__( /*! ../validation_engine */ 90964));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _validation_message = _interopRequireDefault(__webpack_require__( /*! ../validation_message */ 8336));
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 73176));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _dom = __webpack_require__( /*! ../../core/utils/dom */ 3532);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const ALLOWED_STYLING_MODES = ["outlined", "filled", "underlined"];
                const VALIDATION_MESSAGE_KEYS_MAP = {
                    validationMessageMode: "mode",
                    validationMessagePosition: "positionSide",
                    validationMessageOffset: "offset",
                    validationBoundary: "boundary"
                };
                const Editor = _ui.default.inherit({
                    ctor: function() {
                        this.showValidationMessageTimeout = null;
                        this.validationRequest = (0, _callbacks.default)();
                        this.callBase.apply(this, arguments)
                    },
                    _createElement: function(element) {
                        this.callBase(element);
                        const $element = this.$element();
                        if ($element) {
                            (0, _element_data.data)($element[0], "dx-validation-target", this)
                        }
                    },
                    _initOptions: function(options) {
                        this.callBase.apply(this, arguments);
                        this.option(_validation_engine.default.initValidationOptions(options))
                    },
                    _init: function() {
                        this._initialValue = this.option("value");
                        this.callBase();
                        this._options.cache("validationTooltipOptions", this.option("validationTooltipOptions"));
                        const $element = this.$element();
                        $element.addClass("dx-show-invalid-badge")
                    },
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            value: null,
                            name: "",
                            onValueChanged: null,
                            readOnly: false,
                            isValid: true,
                            validationError: null,
                            validationErrors: null,
                            validationStatus: "valid",
                            validationMessageMode: "auto",
                            validationMessagePosition: "bottom",
                            validationBoundary: void 0,
                            validationMessageOffset: {
                                h: 0,
                                v: 0
                            },
                            validationTooltipOptions: {},
                            _showValidationMessage: true,
                            isDirty: false
                        })
                    },
                    _attachKeyboardEvents: function() {
                        if (!this.option("readOnly")) {
                            this.callBase()
                        }
                    },
                    _setOptionsByReference: function() {
                        this.callBase();
                        (0, _extend.extend)(this._optionsByReference, {
                            validationError: true
                        })
                    },
                    _createValueChangeAction: function() {
                        this._valueChangeAction = this._createActionByOption("onValueChanged", {
                            excludeValidators: ["disabled", "readOnly"]
                        })
                    },
                    _suppressValueChangeAction: function() {
                        this._valueChangeActionSuppressed = true
                    },
                    _resumeValueChangeAction: function() {
                        this._valueChangeActionSuppressed = false
                    },
                    _initMarkup: function() {
                        var _this$option;
                        this._toggleReadOnlyState();
                        this._setSubmitElementName(this.option("name"));
                        this.callBase();
                        this._renderValidationState();
                        null === (_this$option = this.option("_onMarkupRendered")) || void 0 === _this$option ? void 0 : _this$option()
                    },
                    _raiseValueChangeAction: function(value, previousValue) {
                        if (!this._valueChangeAction) {
                            this._createValueChangeAction()
                        }
                        this._valueChangeAction(this._valueChangeArgs(value, previousValue))
                    },
                    _valueChangeArgs: function(value, previousValue) {
                        return {
                            value: value,
                            previousValue: previousValue,
                            event: this._valueChangeEventInstance
                        }
                    },
                    _saveValueChangeEvent: function(e) {
                        this._valueChangeEventInstance = e
                    },
                    _focusInHandler: function(e) {
                        const isValidationMessageShownOnFocus = "auto" === this.option("validationMessageMode");
                        if (this._canValueBeChangedByClick() && isValidationMessageShownOnFocus) {
                            var _this$_validationMess;
                            const $validationMessageWrapper = null === (_this$_validationMess = this._validationMessage) || void 0 === _this$_validationMess ? void 0 : _this$_validationMess.$wrapper();
                            null === $validationMessageWrapper || void 0 === $validationMessageWrapper ? void 0 : $validationMessageWrapper.removeClass("dx-invalid-message-auto");
                            clearTimeout(this.showValidationMessageTimeout);
                            this.showValidationMessageTimeout = setTimeout(() => null === $validationMessageWrapper || void 0 === $validationMessageWrapper ? void 0 : $validationMessageWrapper.addClass("dx-invalid-message-auto"), 150)
                        }
                        return this.callBase(e)
                    },
                    _canValueBeChangedByClick: function() {
                        return false
                    },
                    _getStylingModePrefix: function() {
                        return "dx-editor-"
                    },
                    _renderStylingMode: function() {
                        const optionValue = this.option("stylingMode");
                        const prefix = this._getStylingModePrefix();
                        const allowedStylingClasses = ALLOWED_STYLING_MODES.map(mode => prefix + mode);
                        allowedStylingClasses.forEach(className => this.$element().removeClass(className));
                        let stylingModeClass = prefix + optionValue;
                        if (-1 === allowedStylingClasses.indexOf(stylingModeClass)) {
                            const defaultOptionValue = this._getDefaultOptions().stylingMode;
                            const platformOptionValue = this._convertRulesToOptions(this._defaultOptionsRules()).stylingMode;
                            stylingModeClass = prefix + (platformOptionValue || defaultOptionValue)
                        }
                        this.$element().addClass(stylingModeClass)
                    },
                    _getValidationErrors: function() {
                        let validationErrors = this.option("validationErrors");
                        if (!validationErrors && this.option("validationError")) {
                            validationErrors = [this.option("validationError")]
                        }
                        return validationErrors
                    },
                    _disposeValidationMessage: function() {
                        if (this._$validationMessage) {
                            this._$validationMessage.remove();
                            this.setAria("describedby", null);
                            this._$validationMessage = void 0;
                            this._validationMessage = void 0
                        }
                    },
                    _toggleValidationClasses: function(isInvalid) {
                        this.$element().toggleClass("dx-invalid", isInvalid);
                        this.setAria("invalid", isInvalid || void 0)
                    },
                    _renderValidationState: function() {
                        const isValid = this.option("isValid") && "invalid" !== this.option("validationStatus");
                        const validationErrors = this._getValidationErrors();
                        const $element = this.$element();
                        this._toggleValidationClasses(!isValid);
                        if (!(0, _window.hasWindow)() || false === this.option("_showValidationMessage")) {
                            return
                        }
                        this._disposeValidationMessage();
                        if (!isValid && validationErrors) {
                            const {
                                validationMessageMode: validationMessageMode,
                                validationMessageOffset: validationMessageOffset,
                                validationBoundary: validationBoundary,
                                rtlEnabled: rtlEnabled
                            } = this.option();
                            this._$validationMessage = (0, _renderer.default)("<div>").appendTo($element);
                            const validationMessageContentId = "dx-".concat(new _guid.default);
                            this.setAria("describedby", validationMessageContentId);
                            this._validationMessage = new _validation_message.default(this._$validationMessage, (0, _extend.extend)({
                                validationErrors: validationErrors,
                                rtlEnabled: rtlEnabled,
                                target: this._getValidationMessageTarget(),
                                visualContainer: $element,
                                mode: validationMessageMode,
                                positionSide: this._getValidationMessagePosition(),
                                offset: validationMessageOffset,
                                boundary: validationBoundary,
                                contentId: validationMessageContentId
                            }, this._options.cache("validationTooltipOptions")));
                            this._bindInnerWidgetOptions(this._validationMessage, "validationTooltipOptions")
                        }
                    },
                    _getValidationMessagePosition: function() {
                        return this.option("validationMessagePosition")
                    },
                    _getValidationMessageTarget: function() {
                        return this.$element()
                    },
                    _toggleReadOnlyState: function() {
                        const readOnly = this.option("readOnly");
                        this._toggleBackspaceHandler(readOnly);
                        this.$element().toggleClass("dx-state-readonly", !!readOnly);
                        this.setAria("readonly", readOnly || void 0)
                    },
                    _toggleBackspaceHandler: function(isReadOnly) {
                        const $eventTarget = this._keyboardEventBindingTarget();
                        const eventName = (0, _index.addNamespace)("keydown", "editorReadOnly");
                        _events_engine.default.off($eventTarget, eventName);
                        if (isReadOnly) {
                            _events_engine.default.on($eventTarget, eventName, e => {
                                if ("backspace" === (0, _index.normalizeKeyName)(e)) {
                                    e.preventDefault()
                                }
                            })
                        }
                    },
                    _dispose: function() {
                        const element = this.$element()[0];
                        (0, _element_data.data)(element, "dx-validation-target", null);
                        clearTimeout(this.showValidationMessageTimeout);
                        this._disposeValidationMessage();
                        this.callBase()
                    },
                    _setSubmitElementName: function(name) {
                        const $submitElement = this._getSubmitElement();
                        if (!$submitElement) {
                            return
                        }
                        if (name.length > 0) {
                            $submitElement.attr("name", name)
                        } else {
                            $submitElement.removeAttr("name")
                        }
                    },
                    _getSubmitElement: function() {
                        return null
                    },
                    _setValidationMessageOption: function(_ref) {
                        var _this$_validationMess2;
                        let {
                            name: name,
                            value: value
                        } = _ref;
                        const optionKey = VALIDATION_MESSAGE_KEYS_MAP[name] ? VALIDATION_MESSAGE_KEYS_MAP[name] : name;
                        null === (_this$_validationMess2 = this._validationMessage) || void 0 === _this$_validationMess2 ? void 0 : _this$_validationMess2.option(optionKey, value)
                    },
                    _hasActiveElement: _common.noop,
                    _optionChanged: function(args) {
                        var _this$_validationMess3;
                        switch (args.name) {
                            case "onValueChanged":
                                this._createValueChangeAction();
                                break;
                            case "readOnly":
                                this._toggleReadOnlyState();
                                this._refreshFocusState();
                                break;
                            case "value":
                                if (args.value != args.previousValue) {
                                    this.option("isDirty", this._initialValue !== args.value);
                                    this.validationRequest.fire({
                                        value: args.value,
                                        editor: this
                                    })
                                }
                                if (!this._valueChangeActionSuppressed) {
                                    this._raiseValueChangeAction(args.value, args.previousValue);
                                    this._saveValueChangeEvent(void 0)
                                }
                                break;
                            case "width":
                                this.callBase(args);
                                null === (_this$_validationMess3 = this._validationMessage) || void 0 === _this$_validationMess3 ? void 0 : _this$_validationMess3.updateMaxWidth();
                                break;
                            case "name":
                                this._setSubmitElementName(args.value);
                                break;
                            case "isValid":
                            case "validationError":
                            case "validationErrors":
                            case "validationStatus":
                                this.option(_validation_engine.default.synchronizeValidationOptions(args, this.option()));
                                this._renderValidationState();
                                break;
                            case "validationBoundary":
                            case "validationMessageMode":
                            case "validationMessagePosition":
                            case "validationMessageOffset":
                                this._setValidationMessageOption(args);
                                break;
                            case "rtlEnabled":
                                this._setValidationMessageOption(args);
                                this.callBase(args);
                                break;
                            case "validationTooltipOptions":
                                this._innerWidgetOptionChanged(this._validationMessage, args);
                                break;
                            case "_showValidationMessage":
                            case "isDirty":
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _resetToInitialValue: function() {
                        this.option("value", this._initialValue)
                    },
                    blur: function() {
                        if (this._hasActiveElement()) {
                            (0, _dom.resetActiveElement)()
                        }
                    },
                    clear: function() {
                        const defaultOptions = this._getDefaultOptions();
                        this.option("value", defaultOptions.value)
                    },
                    reset: function() {
                        let value = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : void 0;
                        if (arguments.length) {
                            this._initialValue = value
                        }
                        this._resetToInitialValue();
                        this.option("isDirty", false);
                        this.option("isValid", true)
                    }
                });
                Editor.isEditor = instance => instance instanceof Editor;
                var _default = Editor;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        88718:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/editor/ui.data_expression.js ***!
              \*****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _variable_wrapper = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/variable_wrapper */ 26974));
                var _data = __webpack_require__( /*! ../../core/utils/data */ 47617);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _data_helper = _interopRequireDefault(__webpack_require__( /*! ../../data_helper */ 53305));
                var _data_source = __webpack_require__( /*! ../../data/data_source/data_source */ 85273);
                var _array_store = _interopRequireDefault(__webpack_require__( /*! ../../data/array_store */ 26562));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const DataExpressionMixin = (0, _extend.extend)({}, _data_helper.default, {
                    _dataExpressionDefaultOptions: function() {
                        return {
                            items: [],
                            dataSource: null,
                            itemTemplate: "item",
                            value: null,
                            valueExpr: "this",
                            displayExpr: void 0
                        }
                    },
                    _initDataExpressions: function() {
                        this._compileValueGetter();
                        this._compileDisplayGetter();
                        this._initDynamicTemplates();
                        this._initDataSource();
                        this._itemsToDataSource()
                    },
                    _itemsToDataSource: function() {
                        if (!this.option("dataSource")) {
                            this._dataSource = new _data_source.DataSource({
                                store: new _array_store.default(this.option("items")),
                                pageSize: 0
                            });
                            this._initDataController()
                        }
                    },
                    _compileDisplayGetter: function() {
                        this._displayGetter = (0, _data.compileGetter)(this._displayGetterExpr())
                    },
                    _displayGetterExpr: function() {
                        return this.option("displayExpr")
                    },
                    _compileValueGetter: function() {
                        this._valueGetter = (0, _data.compileGetter)(this._valueGetterExpr())
                    },
                    _valueGetterExpr: function() {
                        return this.option("valueExpr") || "this"
                    },
                    _loadValue: function(value) {
                        const deferred = new _deferred.Deferred;
                        value = this._unwrappedValue(value);
                        if (!(0, _type.isDefined)(value)) {
                            return deferred.reject().promise()
                        }
                        this._loadSingle(this._valueGetterExpr(), value).done(function(item) {
                            this._isValueEquals(this._valueGetter(item), value) ? deferred.resolve(item) : deferred.reject()
                        }.bind(this)).fail((function() {
                            deferred.reject()
                        }));
                        this._loadValueDeferred = deferred;
                        return deferred.promise()
                    },
                    _rejectValueLoading: function() {
                        var _this$_loadValueDefer;
                        null === (_this$_loadValueDefer = this._loadValueDeferred) || void 0 === _this$_loadValueDefer ? void 0 : _this$_loadValueDefer.reject({
                            shouldSkipCallback: true
                        })
                    },
                    _getCurrentValue: function() {
                        return this.option("value")
                    },
                    _unwrappedValue: function(value) {
                        var _value;
                        value = null !== (_value = value) && void 0 !== _value ? _value : this._getCurrentValue();
                        if (value && this._dataSource && "this" === this._valueGetterExpr()) {
                            value = this._getItemKey(value)
                        }
                        return _variable_wrapper.default.unwrap(value)
                    },
                    _getItemKey: function(value) {
                        const key = this._dataSource.key();
                        if (Array.isArray(key)) {
                            const result = {};
                            for (let i = 0, n = key.length; i < n; i++) {
                                result[key[i]] = value[key[i]]
                            }
                            return result
                        }
                        if (key && "object" === typeof value) {
                            value = value[key]
                        }
                        return value
                    },
                    _isValueEquals: function(value1, value2) {
                        const dataSourceKey = this._dataSource && this._dataSource.key();
                        let result = this._compareValues(value1, value2);
                        if (!result && dataSourceKey && (0, _type.isDefined)(value1) && (0, _type.isDefined)(value2)) {
                            if (Array.isArray(dataSourceKey)) {
                                result = this._compareByCompositeKey(value1, value2, dataSourceKey)
                            } else {
                                result = this._compareByKey(value1, value2, dataSourceKey)
                            }
                        }
                        return result
                    },
                    _compareByCompositeKey: function(value1, value2, key) {
                        const isObject = _type.isObject;
                        if (!isObject(value1) || !isObject(value2)) {
                            return false
                        }
                        for (let i = 0, n = key.length; i < n; i++) {
                            if (value1[key[i]] !== value2[key[i]]) {
                                return false
                            }
                        }
                        return true
                    },
                    _compareByKey: function(value1, value2, key) {
                        const unwrapObservable = _variable_wrapper.default.unwrap;
                        const valueKey1 = (0, _common.ensureDefined)(unwrapObservable(value1[key]), value1);
                        const valueKey2 = (0, _common.ensureDefined)(unwrapObservable(value2[key]), value2);
                        return this._compareValues(valueKey1, valueKey2)
                    },
                    _compareValues: function(value1, value2) {
                        return (0, _data.toComparable)(value1, true) === (0, _data.toComparable)(value2, true)
                    },
                    _initDynamicTemplates: _common.noop,
                    _setCollectionWidgetItemTemplate: function() {
                        this._initDynamicTemplates();
                        this._setCollectionWidgetOption("itemTemplate", this.option("itemTemplate"))
                    },
                    _getCollectionKeyExpr: function() {
                        const valueExpr = this.option("valueExpr");
                        const isValueExprField = (0, _type.isString)(valueExpr) && "this" !== valueExpr || (0, _type.isFunction)(valueExpr);
                        return isValueExprField ? valueExpr : null
                    },
                    _dataExpressionOptionChanged: function(args) {
                        switch (args.name) {
                            case "items":
                                this._itemsToDataSource();
                                this._setCollectionWidgetOption("items");
                                break;
                            case "dataSource":
                                this._initDataSource();
                                break;
                            case "itemTemplate":
                                this._setCollectionWidgetItemTemplate();
                                break;
                            case "valueExpr":
                                this._compileValueGetter();
                                break;
                            case "displayExpr":
                                this._compileDisplayGetter();
                                this._initDynamicTemplates();
                                this._setCollectionWidgetOption("displayExpr")
                        }
                    }
                });
                var _default = DataExpressionMixin;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        87446:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/file_manager.js ***!
              \****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _ui = (obj = __webpack_require__( /*! ./file_manager/ui.file_manager */ 32737), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _ui.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        57289:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/file_items_controller.js ***!
              \**************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.OPERATIONS = exports.FileItemsController = void 0;
                var _provider_base = _interopRequireDefault(__webpack_require__( /*! ../../file_management/provider_base */ 19073));
                var _file_system_item = _interopRequireDefault(__webpack_require__( /*! ../../file_management/file_system_item */ 45765));
                var _object_provider = _interopRequireDefault(__webpack_require__( /*! ../../file_management/object_provider */ 4323));
                var _remote_provider = _interopRequireDefault(__webpack_require__( /*! ../../file_management/remote_provider */ 41332));
                var _custom_provider = _interopRequireDefault(__webpack_require__( /*! ../../file_management/custom_provider */ 98831));
                var _error = _interopRequireDefault(__webpack_require__( /*! ../../file_management/error */ 49816));
                var _error_codes = _interopRequireDefault(__webpack_require__( /*! ../../file_management/error_codes */ 41011));
                var _utils = __webpack_require__( /*! ../../file_management/utils */ 73173);
                var _uiFile_manager = __webpack_require__( /*! ./ui.file_manager.common */ 75084);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 73176));

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

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _createClass(Constructor, protoProps, staticProps) {
                    if (protoProps) {
                        _defineProperties(Constructor.prototype, protoProps)
                    }
                    if (staticProps) {
                        _defineProperties(Constructor, staticProps)
                    }
                    Object.defineProperty(Constructor, "prototype", {
                        writable: false
                    });
                    return Constructor
                }
                const OPERATIONS = {
                    NAVIGATION: "navigation",
                    REFRESH: "refresh"
                };
                exports.OPERATIONS = OPERATIONS;
                let FileItemsController = function() {
                    function FileItemsController(options) {
                        options = options || {};
                        this._options = (0, _extend.extend)({}, options);
                        this._isInitialized = false;
                        this._dataLoading = false;
                        this._dataLoadingDeferred = null;
                        this._rootDirectoryInfo = this._createRootDirectoryInfo(options.rootText);
                        this._currentDirectoryInfo = this._rootDirectoryInfo;
                        this._defaultIconMap = this._createDefaultIconMap();
                        this.startSingleLoad();
                        this._setSecurityController();
                        this._setProvider(options.fileProvider);
                        this._initialize()
                    }
                    var _proto = FileItemsController.prototype;
                    _proto._initialize = function() {
                        const result = this._options.currentPathKeys && this._options.currentPathKeys.length ? this.setCurrentPathByKeys(this._options.currentPathKeys) : this.setCurrentPath(this._options.currentPath);
                        const completeInitialization = () => {
                            this._isInitialized = true;
                            this._raiseInitialized()
                        };
                        if (result) {
                            (0, _deferred.when)(result).always(completeInitialization)
                        } else {
                            completeInitialization()
                        }
                    };
                    _proto._setSecurityController = function() {
                        this._securityController = new FileSecurityController({
                            allowedFileExtensions: this._options.allowedFileExtensions,
                            maxFileSize: this._options.uploadMaxFileSize
                        });
                        this._resetState()
                    };
                    _proto.setAllowedFileExtensions = function(allowedFileExtensions) {
                        if ((0, _type.isDefined)(allowedFileExtensions)) {
                            this._options.allowedFileExtensions = allowedFileExtensions
                        }
                        this._setSecurityController();
                        this.refresh()
                    };
                    _proto.setUploadOptions = function(_ref) {
                        let {
                            maxFileSize: maxFileSize,
                            chunkSize: chunkSize
                        } = _ref;
                        if ((0, _type.isDefined)(chunkSize)) {
                            this._options.uploadChunkSize = chunkSize
                        }
                        if ((0, _type.isDefined)(maxFileSize)) {
                            this._options.uploadMaxFileSize = maxFileSize;
                            this._setSecurityController();
                            this.refresh()
                        }
                    };
                    _proto._setProvider = function(fileProvider) {
                        this._fileProvider = this._createFileProvider(fileProvider);
                        this._resetState()
                    };
                    _proto.updateProvider = function(fileProvider, currentPathKeys) {
                        if (!(0, _type.isDefined)(currentPathKeys)) {
                            return this._updateProviderOnly(fileProvider)
                        }
                        return (0, _deferred.when)(this._getDirectoryByPathParts(this._rootDirectoryInfo, currentPathKeys, true)).then(newDirectory => {
                            if (newDirectory !== this._rootDirectoryInfo) {
                                this._resetCurrentDirectory()
                            }
                            this._setProvider(fileProvider)
                        }).then(() => this.setCurrentPathByKeys(currentPathKeys))
                    };
                    _proto._updateProviderOnly = function(fileProvider) {
                        this._resetCurrentDirectory();
                        this._setProvider(fileProvider);
                        return (0, _deferred.when)(this.refresh())
                    };
                    _proto._createFileProvider = function(fileProvider) {
                        if (!fileProvider) {
                            fileProvider = []
                        }
                        if (Array.isArray(fileProvider)) {
                            return new _object_provider.default({
                                data: fileProvider
                            })
                        }
                        if (fileProvider instanceof _provider_base.default) {
                            return fileProvider
                        }
                        switch (fileProvider.type) {
                            case "remote":
                                return new _remote_provider.default(fileProvider);
                            case "custom":
                                return new _custom_provider.default(fileProvider)
                        }
                        return new _object_provider.default(fileProvider)
                    };
                    _proto.setCurrentPath = function(path) {
                        const pathParts = (0, _utils.getPathParts)(path);
                        const rawPath = (0, _utils.pathCombine)(...pathParts);
                        if (this.getCurrentDirectory().fileItem.relativeName === rawPath) {
                            return (new _deferred.Deferred).resolve().promise()
                        }
                        return this._setCurrentDirectoryByPathParts(pathParts)
                    };
                    _proto.setCurrentPathByKeys = function(pathKeys) {
                        if ((0, _common.equalByValue)(this.getCurrentDirectory().fileItem.pathKeys, pathKeys)) {
                            return (new _deferred.Deferred).resolve().promise()
                        }
                        return this._setCurrentDirectoryByPathParts(pathKeys, true)
                    };
                    _proto.getCurrentPath = function() {
                        let currentPath = "";
                        let directory = this.getCurrentDirectory();
                        while (directory && !directory.fileItem.isRoot()) {
                            const escapedName = (0, _utils.getEscapedFileName)(directory.fileItem.name);
                            currentPath = (0, _utils.pathCombine)(escapedName, currentPath);
                            directory = directory.parentDirectory
                        }
                        return currentPath
                    };
                    _proto.getCurrentPathKeys = function() {
                        return this.getCurrentDirectory().fileItem.pathKeys
                    };
                    _proto.getCurrentDirectory = function() {
                        return this._currentDirectoryInfo
                    };
                    _proto.setCurrentDirectory = function(directoryInfo, checkActuality) {
                        if (!directoryInfo) {
                            return
                        }
                        if (checkActuality) {
                            directoryInfo = this._getActualDirectoryInfo(directoryInfo)
                        }
                        if (this._currentDirectoryInfo && this._currentDirectoryInfo === directoryInfo) {
                            this._raisePathPotentiallyChanged();
                            return
                        }
                        const requireRaiseSelectedDirectory = this._currentDirectoryInfo.fileItem.key !== directoryInfo.fileItem.key;
                        this._currentDirectoryInfo = directoryInfo;
                        if (requireRaiseSelectedDirectory && this._isInitialized) {
                            if (!this._dataLoading) {
                                this._raiseDataLoading(OPERATIONS.NAVIGATION)
                            }
                            this._raiseSelectedDirectoryChanged(directoryInfo)
                        }
                    };
                    _proto._resetCurrentDirectory = function() {
                        this._currentDirectoryInfo = this._rootDirectoryInfo
                    };
                    _proto.getCurrentItems = function(onlyFiles) {
                        return this._dataLoadingDeferred ? this._dataLoadingDeferred.then(() => this._getCurrentItemsInternal(onlyFiles)) : this._getCurrentItemsInternal(onlyFiles)
                    };
                    _proto._getCurrentItemsInternal = function(onlyFiles) {
                        const currentDirectory = this.getCurrentDirectory();
                        const getItemsPromise = this.getDirectoryContents(currentDirectory);
                        return getItemsPromise.then(items => {
                            const separatedItems = this._separateItemsByType(items);
                            currentDirectory.fileItem.hasSubDirectories = !!separatedItems.folders.length;
                            return onlyFiles ? separatedItems.files : items
                        })
                    };
                    _proto.getDirectories = function(parentDirectoryInfo, skipNavigationOnError) {
                        return this.getDirectoryContents(parentDirectoryInfo, skipNavigationOnError).then(itemInfos => itemInfos.filter(info => info.fileItem.isDirectory))
                    };
                    _proto._separateItemsByType = function(itemInfos) {
                        const folders = [];
                        const files = [];
                        itemInfos.forEach(info => info.fileItem.isDirectory ? folders.push(info) : files.push(info));
                        return {
                            folders: folders,
                            files: files
                        }
                    };
                    _proto.getDirectoryContents = function(parentDirectoryInfo, skipNavigationOnError) {
                        if (!parentDirectoryInfo) {
                            return (new _deferred.Deferred).resolve([this._rootDirectoryInfo]).promise()
                        }
                        if (parentDirectoryInfo.itemsLoaded) {
                            return (new _deferred.Deferred).resolve(parentDirectoryInfo.items).promise()
                        }
                        if (this._singleOperationLockId && parentDirectoryInfo.itemsSingleLoadErrorId === this._singleOperationLockId) {
                            this._changeDirectoryOnError(parentDirectoryInfo, skipNavigationOnError, true);
                            return (new _deferred.Deferred).reject().promise()
                        }
                        const dirKey = parentDirectoryInfo.getInternalKey();
                        let loadItemsDeferred = this._loadedItems[dirKey];
                        if (loadItemsDeferred) {
                            return loadItemsDeferred
                        }
                        loadItemsDeferred = this._getFileItems(parentDirectoryInfo, skipNavigationOnError).then(fileItems => {
                            fileItems = fileItems || [];
                            parentDirectoryInfo.items = fileItems.map(fileItem => fileItem.isDirectory && this._createDirectoryInfo(fileItem, parentDirectoryInfo) || this._createFileInfo(fileItem, parentDirectoryInfo));
                            parentDirectoryInfo.itemsLoaded = true;
                            return parentDirectoryInfo.items
                        }, () => {
                            if (this._singleOperationLockId && parentDirectoryInfo.itemsSingleLoadErrorId !== this._singleOperationLockId) {
                                parentDirectoryInfo.itemsSingleLoadErrorId = this._singleOperationLockId
                            }
                            return []
                        });
                        this._loadedItems[dirKey] = loadItemsDeferred;
                        loadItemsDeferred.always(() => {
                            delete this._loadedItems[dirKey]
                        });
                        return loadItemsDeferred
                    };
                    _proto._getFileItems = function(parentDirectoryInfo, skipNavigationOnError) {
                        let loadItemsDeferred = null;
                        try {
                            loadItemsDeferred = this._fileProvider.getItems(parentDirectoryInfo.fileItem)
                        } catch (error) {
                            return this._handleItemLoadError(parentDirectoryInfo, error, skipNavigationOnError)
                        }
                        return (0, _deferred.when)(loadItemsDeferred).then(fileItems => this._securityController.getAllowedItems(fileItems), errorInfo => this._handleItemLoadError(parentDirectoryInfo, errorInfo, skipNavigationOnError))
                    };
                    _proto.createDirectory = function(parentDirectoryInfo, name) {
                        const parentDirItem = parentDirectoryInfo.fileItem;
                        const tempDirInfo = this._createDirInfoByName(name, parentDirectoryInfo);
                        const actionInfo = this._createEditActionInfo("create", tempDirInfo, parentDirectoryInfo);
                        return this._processEditAction(actionInfo, args => {
                            args.parentDirectory = parentDirItem;
                            args.name = name;
                            this._editingEvents.onDirectoryCreating(args)
                        }, () => this._fileProvider.createDirectory(parentDirItem, name).done(info => {
                            if (!parentDirItem.isRoot()) {
                                parentDirItem.hasSubDirectories = true
                            }
                            return info
                        }), () => {
                            const args = {
                                parentDirectory: parentDirItem,
                                name: name
                            };
                            this._editingEvents.onDirectoryCreated(args)
                        }, () => this._resetDirectoryState(parentDirectoryInfo, true))
                    };
                    _proto.renameItem = function(fileItemInfo, name) {
                        const sourceItem = fileItemInfo.fileItem.createClone();
                        const actionInfo = this._createEditActionInfo("rename", fileItemInfo, fileItemInfo.parentDirectory, {
                            itemNewName: name
                        });
                        return this._processEditAction(actionInfo, (args, itemInfo) => {
                            if (!itemInfo.fileItem.isDirectory) {
                                this._securityController.validateExtension(name)
                            }
                            args.item = sourceItem;
                            args.newName = name;
                            this._editingEvents.onItemRenaming(args)
                        }, item => this._fileProvider.renameItem(item, name), () => {
                            const args = {
                                sourceItem: sourceItem,
                                itemName: name
                            };
                            this._editingEvents.onItemRenamed(args)
                        }, () => {
                            const parentDirectory = this._getActualDirectoryInfo(fileItemInfo.parentDirectory);
                            this._resetDirectoryState(parentDirectory);
                            this.setCurrentDirectory(parentDirectory)
                        })
                    };
                    _proto.moveItems = function(itemInfos, destinationDirectory) {
                        const actionInfo = this._createEditActionInfo("move", itemInfos, destinationDirectory);
                        return this._processEditAction(actionInfo, (args, itemInfo) => {
                            args.item = itemInfo.fileItem;
                            args.destinationDirectory = destinationDirectory.fileItem;
                            this._editingEvents.onItemMoving(args)
                        }, item => this._fileProvider.moveItems([item], destinationDirectory.fileItem), itemInfo => {
                            const args = {
                                sourceItem: itemInfo.fileItem,
                                parentDirectory: destinationDirectory.fileItem,
                                itemName: itemInfo.fileItem.name,
                                itemPath: (0, _utils.pathCombine)(destinationDirectory.fileItem.path, itemInfo.fileItem.name)
                            };
                            this._editingEvents.onItemMoved(args)
                        }, needChangeCurrentDirectory => {
                            itemInfos.forEach(itemInfo => this._resetDirectoryState(itemInfo.parentDirectory, true));
                            if (needChangeCurrentDirectory) {
                                this._resetDirectoryState(destinationDirectory);
                                this.setCurrentPathByKeys(destinationDirectory.fileItem.pathKeys);
                                destinationDirectory.expanded = true
                            }
                        })
                    };
                    _proto.copyItems = function(itemInfos, destinationDirectory) {
                        const actionInfo = this._createEditActionInfo("copy", itemInfos, destinationDirectory);
                        return this._processEditAction(actionInfo, (args, itemInfo) => {
                            args.item = itemInfo.fileItem;
                            args.destinationDirectory = destinationDirectory.fileItem;
                            this._editingEvents.onItemCopying(args)
                        }, item => this._fileProvider.copyItems([item], destinationDirectory.fileItem), itemInfo => {
                            const args = {
                                sourceItem: itemInfo.fileItem,
                                parentDirectory: destinationDirectory.fileItem,
                                itemName: itemInfo.fileItem.name,
                                itemPath: (0, _utils.pathCombine)(destinationDirectory.fileItem.path, itemInfo.fileItem.name)
                            };
                            this._editingEvents.onItemCopied(args)
                        }, needChangeCurrentDirectory => {
                            if (needChangeCurrentDirectory) {
                                destinationDirectory = this._getActualDirectoryInfo(destinationDirectory);
                                this._resetDirectoryState(destinationDirectory);
                                this.setCurrentDirectory(destinationDirectory);
                                destinationDirectory.expanded = true
                            }
                        })
                    };
                    _proto.deleteItems = function(itemInfos) {
                        const directory = itemInfos.length > 0 ? itemInfos[0].parentDirectory : null;
                        const actionInfo = this._createEditActionInfo("delete", itemInfos, directory);
                        return this._processEditAction(actionInfo, (args, itemInfo) => {
                            args.item = itemInfo.fileItem;
                            this._editingEvents.onItemDeleting(args)
                        }, item => this._fileProvider.deleteItems([item]), itemInfo => this._editingEvents.onItemDeleted({
                            item: itemInfo.fileItem
                        }), () => {
                            itemInfos.forEach(itemInfo => {
                                const parentDir = this._getActualDirectoryInfo(itemInfo.parentDirectory);
                                this._resetDirectoryState(parentDir);
                                this.setCurrentDirectory(parentDir)
                            })
                        })
                    };
                    _proto.processUploadSession = function(sessionInfo, uploadDirectoryInfo) {
                        const itemInfos = this._getItemInfosForUploaderFiles(sessionInfo.files, uploadDirectoryInfo);
                        const actionInfo = this._createEditActionInfo("upload", itemInfos, uploadDirectoryInfo, {
                            sessionInfo: sessionInfo
                        });
                        return this._processEditAction(actionInfo, () => {}, (_, index) => sessionInfo.deferreds[index], () => {}, () => this._resetDirectoryState(uploadDirectoryInfo, true))
                    };
                    _proto.uploadFileChunk = function(fileData, chunksInfo, destinationDirectory) {
                        let startDeferred = null;
                        if (0 === chunksInfo.chunkIndex) {
                            this._securityController.validateMaxFileSize(fileData.size);
                            this._securityController.validateExtension(fileData.name);
                            startDeferred = this._processBeforeItemEditAction(args => {
                                args.fileData = fileData;
                                args.destinationDirectory = destinationDirectory;
                                this._editingEvents.onFileUploading(args)
                            })
                        } else {
                            startDeferred = (new _deferred.Deferred).resolve().promise()
                        }
                        let result = startDeferred.then(() => this._fileProvider.uploadFileChunk(fileData, chunksInfo, destinationDirectory));
                        if (chunksInfo.chunkIndex === chunksInfo.chunkCount - 1) {
                            result = result.done(() => {
                                const args = {
                                    fileData: fileData,
                                    parentDirectory: destinationDirectory
                                };
                                this._editingEvents.onFileUploaded(args)
                            })
                        }
                        return result
                    };
                    _proto.abortFileUpload = function(fileData, chunksInfo, destinationDirectory) {
                        return (0, _deferred.when)(this._fileProvider.abortFileUpload(fileData, chunksInfo, destinationDirectory))
                    };
                    _proto.getFileUploadChunkSize = function() {
                        const chunkSize = this._options.uploadChunkSize;
                        if (chunkSize && chunkSize > 0) {
                            return chunkSize
                        }
                        return this._fileProvider.getFileUploadChunkSize()
                    };
                    _proto.downloadItems = function(itemInfos) {
                        const deferreds = itemInfos.map(itemInfo => this._processBeforeItemEditAction(args => {
                            args.item = itemInfo.fileItem;
                            this._editingEvents.onItemDownloading(args)
                        }, itemInfo));
                        return (0, _deferred.when)(...deferreds).then(() => {
                            const items = itemInfos.map(i => i.fileItem);
                            return (0, _deferred.when)(this._getItemActionResult(this._fileProvider.downloadItems(items))).then(() => {}, errorInfo => {
                                this._raiseDownloadItemsError(itemInfos, itemInfos[0].parentDirectory, errorInfo)
                            })
                        }, errorInfo => {
                            this._raiseDownloadItemsError(itemInfos, itemInfos[0].parentDirectory, errorInfo)
                        })
                    };
                    _proto.getItemContent = function(itemInfos) {
                        const items = itemInfos.map(i => i.fileItem);
                        return (0, _deferred.when)(this._fileProvider.getItemsContent(items))
                    };
                    _proto._handleItemLoadError = function(parentDirectoryInfo, errorInfo, skipNavigationOnError) {
                        parentDirectoryInfo = this._getActualDirectoryInfo(parentDirectoryInfo);
                        this._raiseGetItemsError(parentDirectoryInfo, errorInfo);
                        this._changeDirectoryOnError(parentDirectoryInfo, skipNavigationOnError);
                        return (new _deferred.Deferred).reject().promise()
                    };
                    _proto._raiseGetItemsError = function(parentDirectoryInfo, errorInfo) {
                        const actionInfo = this._createEditActionInfo("getItems", parentDirectoryInfo, parentDirectoryInfo);
                        this._raiseEditActionStarting(actionInfo);
                        this._raiseEditActionResultAcquired(actionInfo);
                        this._raiseEditActionError(actionInfo, {
                            errorCode: errorInfo.errorCode,
                            errorText: errorInfo.errorText,
                            fileItem: parentDirectoryInfo.fileItem,
                            index: 0
                        })
                    };
                    _proto._raiseDownloadItemsError = function(targetFileInfos, directory, errorInfo) {
                        const actionInfo = this._createEditActionInfo("download", targetFileInfos, directory);
                        const itemsLength = targetFileInfos.length;
                        actionInfo.singleRequest = 1 === itemsLength;
                        this._raiseEditActionStarting(actionInfo);
                        this._raiseEditActionResultAcquired(actionInfo);
                        for (let index = 0; index < itemsLength - 1; index++) {
                            this._raiseEditActionItemError(actionInfo, {
                                errorCode: errorInfo.errorCode,
                                errorText: errorInfo.errorText,
                                fileItem: targetFileInfos[index].fileItem,
                                index: index
                            })
                        }
                        this._raiseEditActionError(actionInfo, {
                            errorCode: errorInfo.errorCode,
                            errorText: errorInfo.errorText,
                            fileItem: targetFileInfos[itemsLength - 1].fileItem,
                            index: itemsLength - 1
                        })
                    };
                    _proto._changeDirectoryOnError = function(dirInfo, skipNavigationOnError, isActualDirectoryRequired) {
                        if (isActualDirectoryRequired) {
                            dirInfo = this._getActualDirectoryInfo(dirInfo)
                        }
                        this._resetDirectoryState(dirInfo);
                        dirInfo.expanded = false;
                        if (!skipNavigationOnError) {
                            this.setCurrentDirectory(dirInfo.parentDirectory)
                        }
                    };
                    _proto._getItemActionResult = function(actionResult) {
                        return Array.isArray(actionResult) ? actionResult[0] : actionResult
                    };
                    _proto._processEditAction = function(actionInfo, beforeAction, action, afterAction, completeAction) {
                        let isAnyOperationSuccessful = false;
                        this._raiseEditActionStarting(actionInfo);
                        const actionResult = actionInfo.itemInfos.map((itemInfo, itemIndex) => this._processBeforeItemEditAction(beforeAction, itemInfo).then(() => {
                            const itemActionResult = this._getItemActionResult(action(itemInfo.fileItem, itemIndex));
                            return itemActionResult.done(() => afterAction(itemInfo))
                        }));
                        actionInfo.singleRequest = 1 === actionResult.length;
                        this._raiseEditActionResultAcquired(actionInfo);
                        return (0, _uiFile_manager.whenSome)(actionResult, info => {
                            isAnyOperationSuccessful = true;
                            this._raiseCompleteEditActionItem(actionInfo, info)
                        }, errorInfo => this._raiseEditActionItemError(actionInfo, errorInfo)).then(() => {
                            completeAction(isAnyOperationSuccessful);
                            this._raiseCompleteEditAction(actionInfo)
                        })
                    };
                    _proto._createEditActionInfo = function(name, targetItemInfos, directory, customData) {
                        targetItemInfos = Array.isArray(targetItemInfos) ? targetItemInfos : [targetItemInfos];
                        customData = customData || {};
                        const items = targetItemInfos.map(itemInfo => itemInfo.fileItem);
                        return {
                            name: name,
                            itemInfos: targetItemInfos,
                            items: items,
                            directory: directory,
                            customData: customData,
                            singleRequest: true
                        }
                    };
                    _proto._processBeforeItemEditAction = function(action, itemInfo) {
                        const deferred = new _deferred.Deferred;
                        const args = this._createBeforeActionArgs();
                        try {
                            action(args, itemInfo)
                        } catch (errorInfo) {
                            return deferred.reject(errorInfo).promise()
                        }
                        if (!args.cancel) {
                            deferred.resolve()
                        } else if (true === args.cancel) {
                            return deferred.reject({
                                errorText: args.errorText,
                                errorCode: args.errorCode
                            })
                        } else if ((0, _type.isPromise)(args.cancel)) {
                            (0, _deferred.when)(args.cancel).then(res => {
                                if (true === res) {
                                    deferred.reject()
                                } else if ((0, _type.isObject)(res) && true === res.cancel) {
                                    deferred.reject({
                                        errorText: res.errorText,
                                        errorCode: res.errorCode
                                    })
                                }
                                deferred.resolve()
                            }, deferred.resolve)
                        }
                        return deferred.promise()
                    };
                    _proto._createBeforeActionArgs = function() {
                        return {
                            errorCode: void 0,
                            errorText: "",
                            cancel: false
                        }
                    };
                    _proto._getItemInfosForUploaderFiles = function(files, parentDirectoryInfo) {
                        const pathInfo = this._getPathInfo(parentDirectoryInfo);
                        const result = [];
                        for (let i = 0; i < files.length; i++) {
                            const file = files[i];
                            const item = new _file_system_item.default(pathInfo, file.name, false);
                            const itemInfo = this._createFileInfo(item, parentDirectoryInfo);
                            result.push(itemInfo)
                        }
                        return result
                    };
                    _proto.refresh = function() {
                        if (this._lockRefresh) {
                            return this._refreshDeferred
                        }
                        this._lockRefresh = true;
                        return this._executeDataLoad(() => this._refreshDeferred = this._refreshInternal(), OPERATIONS.REFRESH)
                    };
                    _proto.startSingleLoad = function() {
                        this._singleOperationLockId = (new _guid.default).toString()
                    };
                    _proto.endSingleLoad = function() {
                        delete this._singleOperationLockId
                    };
                    _proto._refreshInternal = function() {
                        const cachedRootInfo = {
                            items: this._rootDirectoryInfo.items
                        };
                        const selectedKeyParts = this._getDirectoryPathKeyParts(this.getCurrentDirectory());
                        this._resetDirectoryState(this._rootDirectoryInfo);
                        return this._loadItemsRecursive(this._rootDirectoryInfo, cachedRootInfo).then(() => {
                            const dirInfo = this._findDirectoryByPathKeyParts(selectedKeyParts);
                            this.setCurrentDirectory(dirInfo);
                            delete this._lockRefresh
                        })
                    };
                    _proto._loadItemsRecursive = function(directoryInfo, cachedDirectoryInfo) {
                        return this.getDirectories(directoryInfo).then(dirInfos => {
                            const itemDeferreds = [];
                            for (let i = 0; i < dirInfos.length; i++) {
                                const cachedItem = cachedDirectoryInfo.items.find(cache => dirInfos[i].fileItem.key === cache.fileItem.key);
                                if (!cachedItem) {
                                    continue
                                }
                                dirInfos[i].expanded = cachedItem.expanded;
                                if (dirInfos[i].expanded) {
                                    itemDeferreds.push(this._loadItemsRecursive(dirInfos[i], cachedItem))
                                }
                            }
                            return (0, _uiFile_manager.whenSome)(itemDeferreds)
                        }, () => null)
                    };
                    _proto._setCurrentDirectoryByPathParts = function(pathParts, useKeys) {
                        return this._executeDataLoad(() => this._setCurrentDirectoryByPathPartsInternal(pathParts, useKeys), OPERATIONS.NAVIGATION)
                    };
                    _proto._setCurrentDirectoryByPathPartsInternal = function(pathParts, useKeys) {
                        return this._getDirectoryByPathParts(this._rootDirectoryInfo, pathParts, useKeys).then(directoryInfo => {
                            for (let info = directoryInfo.parentDirectory; info; info = info.parentDirectory) {
                                info.expanded = true
                            }
                            this.setCurrentDirectory(directoryInfo)
                        }, () => {
                            this._raisePathPotentiallyChanged()
                        })
                    };
                    _proto._executeDataLoad = function(action, operation) {
                        if (this._dataLoadingDeferred) {
                            return this._dataLoadingDeferred.then(() => this._executeDataLoad(action, operation))
                        }
                        this._dataLoading = true;
                        this._dataLoadingDeferred = new _deferred.Deferred;
                        if (this._isInitialized) {
                            this._raiseDataLoading(operation)
                        }
                        return action().always(() => {
                            const tempDeferred = this._dataLoadingDeferred;
                            this._dataLoadingDeferred = null;
                            this._dataLoading = false;
                            tempDeferred.resolve()
                        })
                    };
                    _proto._getDirectoryByPathParts = function(parentDirectoryInfo, pathParts, useKeys) {
                        if (pathParts.length < 1) {
                            return (new _deferred.Deferred).resolve(parentDirectoryInfo).promise()
                        }
                        const fieldName = useKeys ? "key" : "name";
                        return this.getDirectories(parentDirectoryInfo).then(dirInfos => {
                            const subDirInfo = dirInfos.find(d => d.fileItem[fieldName] === pathParts[0]);
                            if (!subDirInfo) {
                                return (new _deferred.Deferred).reject().promise()
                            }
                            const restPathParts = [...pathParts].splice(1);
                            return this._getDirectoryByPathParts(subDirInfo, restPathParts, useKeys)
                        })
                    };
                    _proto._getDirectoryPathKeyParts = function(directoryInfo) {
                        const pathParts = [];
                        while (directoryInfo && directoryInfo.parentDirectory) {
                            pathParts.unshift(directoryInfo.fileItem.key);
                            directoryInfo = directoryInfo.parentDirectory
                        }
                        return pathParts
                    };
                    _proto._findDirectoryByPathKeyParts = function(keyParts) {
                        let selectedDirInfo = this._rootDirectoryInfo;
                        if (0 === keyParts.length) {
                            return selectedDirInfo
                        }
                        let i = 0;
                        let newSelectedDir = selectedDirInfo;
                        while (newSelectedDir && i < keyParts.length) {
                            newSelectedDir = selectedDirInfo.items.find(info => info.fileItem.key === keyParts[i]);
                            if (newSelectedDir) {
                                selectedDirInfo = newSelectedDir
                            }
                            i++
                        }
                        return selectedDirInfo
                    };
                    _proto._getActualDirectoryInfo = function(directoryInfo) {
                        const keys = this._getDirectoryPathKeyParts(directoryInfo);
                        return this._findDirectoryByPathKeyParts(keys)
                    };
                    _proto._createDirInfoByName = function(name, parentDirectoryInfo) {
                        const dirPathInfo = this._getPathInfo(parentDirectoryInfo);
                        const fileItem = new _file_system_item.default(dirPathInfo, name, true);
                        return this._createDirectoryInfo(fileItem, parentDirectoryInfo)
                    };
                    _proto._createDirectoryInfo = function(fileItem, parentDirectoryInfo) {
                        return (0, _extend.extend)(this._createFileInfo(fileItem, parentDirectoryInfo), {
                            icon: "folder",
                            expanded: fileItem.isRoot(),
                            items: []
                        })
                    };
                    _proto._createFileInfo = function(fileItem, parentDirectoryInfo) {
                        return {
                            fileItem: fileItem,
                            parentDirectory: parentDirectoryInfo,
                            icon: this._getFileItemDefaultIcon(fileItem),
                            getInternalKey() {
                                return "FIK_".concat(this.fileItem.key)
                            },
                            getDisplayName() {
                                return this.displayName || this.fileItem.name
                            }
                        }
                    };
                    _proto._resetDirectoryState = function(directoryInfo, isActualDirectoryRequired) {
                        if (isActualDirectoryRequired) {
                            directoryInfo = this._getActualDirectoryInfo(directoryInfo)
                        }
                        directoryInfo.itemsLoaded = false;
                        directoryInfo.items = []
                    };
                    _proto._getFileItemDefaultIcon = function(fileItem) {
                        if (fileItem.isDirectory) {
                            return "folder"
                        }
                        const extension = fileItem.getFileExtension();
                        const icon = this._defaultIconMap[extension];
                        return icon || "doc"
                    };
                    _proto._createDefaultIconMap = function() {
                        const result = {
                            ".txt": "txtfile",
                            ".rtf": "rtffile",
                            ".doc": "docfile",
                            ".docx": "docxfile",
                            ".xls": "xlsfile",
                            ".xlsx": "xlsxfile",
                            ".ppt": "pptfile",
                            ".pptx": "pptxfile",
                            ".pdf": "pdffile"
                        };
                        [".png", ".gif", ".jpg", ".jpeg", ".ico", ".bmp"].forEach(extension => {
                            result[extension] = "image"
                        });
                        return result
                    };
                    _proto._createRootDirectoryInfo = function(text) {
                        const rootDirectory = new _file_system_item.default(null, "", true);
                        const result = this._createDirectoryInfo(rootDirectory, null);
                        result.displayName = text || "Files";
                        return result
                    };
                    _proto.setRootText = function(rootText) {
                        this._rootDirectoryInfo.displayName = rootText || "Files"
                    };
                    _proto._raiseInitialized = function() {
                        this._tryCallAction("onInitialized", {
                            controller: this
                        })
                    };
                    _proto._raiseDataLoading = function(operation) {
                        this._tryCallAction("onDataLoading", {
                            operation: operation
                        })
                    };
                    _proto._raiseSelectedDirectoryChanged = function(directoryInfo) {
                        this._tryCallAction("onSelectedDirectoryChanged", {
                            selectedDirectoryInfo: directoryInfo
                        })
                    };
                    _proto._raiseEditActionStarting = function(actionInfo) {
                        this._tryCallAction("onEditActionStarting", actionInfo)
                    };
                    _proto._raiseEditActionResultAcquired = function(actionInfo) {
                        this._tryCallAction("onEditActionResultAcquired", actionInfo)
                    };
                    _proto._raiseEditActionError = function(actionInfo, errorInfo) {
                        this._tryCallAction("onEditActionError", actionInfo, errorInfo)
                    };
                    _proto._raiseEditActionItemError = function(actionInfo, errorInfo) {
                        this._tryCallAction("onEditActionItemError", actionInfo, errorInfo)
                    };
                    _proto._raiseCompleteEditActionItem = function(actionInfo, info) {
                        this._tryCallAction("onCompleteEditActionItem", actionInfo, info)
                    };
                    _proto._raiseCompleteEditAction = function(actionInfo) {
                        this._tryCallAction("onCompleteEditAction", actionInfo)
                    };
                    _proto._raisePathPotentiallyChanged = function() {
                        this._tryCallAction("onPathPotentiallyChanged")
                    };
                    _proto._tryCallAction = function(actionName) {
                        const args = Array.prototype.slice.call(arguments, 1);
                        if (this._isInitialized && this._options[actionName]) {
                            this._options[actionName](...args)
                        }
                    };
                    _proto._resetState = function() {
                        this._selectedDirectory = null;
                        this._rootDirectoryInfo.items = [];
                        this._rootDirectoryInfo.itemsLoaded = false;
                        this._loadedItems = {}
                    };
                    _proto._getPathInfo = function(directoryInfo) {
                        const pathInfo = [];
                        for (let dirInfo = directoryInfo; dirInfo && !dirInfo.fileItem.isRoot(); dirInfo = dirInfo.parentDirectory) {
                            pathInfo.unshift({
                                key: dirInfo.fileItem.key,
                                name: dirInfo.fileItem.name
                            })
                        }
                        return pathInfo
                    };
                    _proto.on = function(eventName, eventHandler) {
                        const finalEventName = "on".concat(eventName);
                        this._options[finalEventName] = eventHandler
                    };
                    _createClass(FileItemsController, [{
                        key: "_editingEvents",
                        get: function() {
                            return this._options.editingEvents
                        }
                    }]);
                    return FileItemsController
                }();
                exports.FileItemsController = FileItemsController;
                let FileSecurityController = function() {
                    function FileSecurityController(options) {
                        this._options = (0, _extend.extend)({
                            allowedFileExtensions: [],
                            maxFileSize: 0
                        }, options);
                        this._extensionsMap = {};
                        this._allowedFileExtensions.forEach(extension => {
                            this._extensionsMap[extension.toUpperCase()] = true
                        })
                    }
                    var _proto2 = FileSecurityController.prototype;
                    _proto2.getAllowedItems = function(items) {
                        if (0 === this._allowedFileExtensions.length) {
                            return items
                        }
                        return items.filter(item => item.isDirectory || this._isValidExtension(item.name))
                    };
                    _proto2.validateExtension = function(name) {
                        if (!this._isValidExtension(name)) {
                            throw new _error.default(_error_codes.default.WrongFileExtension, null)
                        }
                    };
                    _proto2.validateMaxFileSize = function(size) {
                        if (this._maxFileSize && size > this._maxFileSize) {
                            throw new _error.default(_error_codes.default.MaxFileSizeExceeded, null)
                        }
                    };
                    _proto2._isValidExtension = function(name) {
                        if (0 === this._allowedFileExtensions.length) {
                            return true
                        }
                        const extension = (0, _utils.getFileExtension)(name).toUpperCase();
                        return this._extensionsMap[extension]
                    };
                    _createClass(FileSecurityController, [{
                        key: "_allowedFileExtensions",
                        get: function() {
                            return this._options.allowedFileExtensions
                        }
                    }, {
                        key: "_maxFileSize",
                        get: function() {
                            return this._options.maxFileSize
                        }
                    }]);
                    return FileSecurityController
                }()
            },
        52666:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.adaptivity.js ***!
              \*******************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../drawer/ui.drawer */ 32089));
                var _splitter = _interopRequireDefault(__webpack_require__( /*! ../splitter */ 93288));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const window = (0, _window.getWindow)();
                let FileManagerAdaptivityControl = function(_Widget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(FileManagerAdaptivityControl, _Widget);

                    function FileManagerAdaptivityControl() {
                        return _Widget.apply(this, arguments) || this
                    }
                    var _proto = FileManagerAdaptivityControl.prototype;
                    _proto._initMarkup = function() {
                        _Widget.prototype._initMarkup.call(this);
                        this._initActions();
                        this._isInAdaptiveState = false;
                        const $drawer = (0, _renderer.default)("<div>").appendTo(this.$element());
                        (0, _renderer.default)("<div>").addClass("dx-filemanager-adaptivity-drawer-panel").appendTo($drawer);
                        this._drawer = this._createComponent($drawer, _ui2.default);
                        this._drawer.option({
                            opened: true,
                            template: this._createDrawerTemplate.bind(this)
                        });
                        (0, _renderer.default)(this._drawer.content()).addClass("dx-drawer-panel-content-initial");
                        const $drawerContent = $drawer.find(".".concat("dx-filemanager-adaptivity-drawer-panel")).first();
                        const contentRenderer = this.option("contentTemplate");
                        if ((0, _type.isFunction)(contentRenderer)) {
                            contentRenderer($drawerContent)
                        }
                        this._updateDrawerMaxSize()
                    };
                    _proto._createDrawerTemplate = function(container) {
                        this.option("drawerTemplate")(container);
                        this._splitter = this._createComponent("<div>", _splitter.default, {
                            container: this.$element(),
                            leftElement: (0, _renderer.default)(this._drawer.content()),
                            rightElement: (0, _renderer.default)(this._drawer.viewContent()),
                            onApplyPanelSize: this._onApplyPanelSize.bind(this),
                            onActiveStateChanged: this._onActiveStateChanged.bind(this)
                        });
                        this._splitter.$element().appendTo(container);
                        this._splitter.disableSplitterCalculation(true)
                    };
                    _proto._render = function() {
                        _Widget.prototype._render.call(this);
                        this._checkAdaptiveState()
                    };
                    _proto._onApplyPanelSize = function(e) {
                        if (!(0, _window.hasWindow)()) {
                            return
                        }
                        if (!this._splitter.isSplitterMoved()) {
                            this._setDrawerWidth("");
                            return
                        }(0, _renderer.default)(this._drawer.content()).removeClass("dx-drawer-panel-content-initial");
                        this._setDrawerWidth(e.leftPanelWidth)
                    };
                    _proto._onActiveStateChanged = function(_ref) {
                        let {
                            isActive: isActive
                        } = _ref;
                        this._splitter.disableSplitterCalculation(!isActive);
                        !isActive && this._splitter.$element().css("left", "auto")
                    };
                    _proto._setDrawerWidth = function(width) {
                        (0, _renderer.default)(this._drawer.content()).css("width", width);
                        this._updateDrawerMaxSize();
                        this._drawer.resizeViewContent()
                    };
                    _proto._updateDrawerMaxSize = function() {
                        this._drawer.option("maxSize", this._drawer.getRealPanelWidth())
                    };
                    _proto._dimensionChanged = function(dimension) {
                        if (!dimension || "height" !== dimension) {
                            this._checkAdaptiveState()
                        }
                    };
                    _proto._checkAdaptiveState = function() {
                        const oldState = this._isInAdaptiveState;
                        this._isInAdaptiveState = this._isSmallScreen();
                        if (oldState !== this._isInAdaptiveState) {
                            this.toggleDrawer(!this._isInAdaptiveState, true);
                            (0, _renderer.default)(this._drawer.content()).toggleClass("dx-drawer-panel-content-adaptive", this._isInAdaptiveState);
                            this._raiseAdaptiveStateChanged(this._isInAdaptiveState)
                        }
                        if (this._isInAdaptiveState && this._isDrawerOpened()) {
                            this._updateDrawerMaxSize()
                        }
                    };
                    _proto._isSmallScreen = function() {
                        return (0, _size.getWidth)(window) <= 573
                    };
                    _proto._isDrawerOpened = function() {
                        return this._drawer.option("opened")
                    };
                    _proto._initActions = function() {
                        this._actions = {
                            onAdaptiveStateChanged: this._createActionByOption("onAdaptiveStateChanged")
                        }
                    };
                    _proto._raiseAdaptiveStateChanged = function(enabled) {
                        this._actions.onAdaptiveStateChanged({
                            enabled: enabled
                        })
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_Widget.prototype._getDefaultOptions.call(this), {
                            drawerTemplate: null,
                            contentTemplate: null,
                            onAdaptiveStateChanged: null
                        })
                    };
                    _proto._optionChanged = function(args) {
                        const name = args.name;
                        switch (name) {
                            case "drawerTemplate":
                            case "contentTemplate":
                                this.repaint();
                                break;
                            case "onAdaptiveStateChanged":
                                this._actions[name] = this._createActionByOption(name);
                                break;
                            default:
                                _Widget.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto.isInAdaptiveState = function() {
                        return this._isInAdaptiveState
                    };
                    _proto.toggleDrawer = function(showing, skipAnimation) {
                        this._updateDrawerMaxSize();
                        this._drawer.option("animationEnabled", !skipAnimation);
                        this._drawer.toggle(showing);
                        const isSplitterActive = this._isDrawerOpened() && !this.isInAdaptiveState();
                        this._splitter.toggleDisabled(!isSplitterActive)
                    };
                    _proto.getSplitterElement = function() {
                        return this._splitter.getSplitterBorderElement().get(0)
                    };
                    return FileManagerAdaptivityControl
                }(_ui.default);
                var _default = FileManagerAdaptivityControl;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        47565:
            /*!********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.breadcrumbs.js ***!
              \********************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../menu/ui.menu */ 2616));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let FileManagerBreadcrumbs = function(_Widget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(FileManagerBreadcrumbs, _Widget);

                    function FileManagerBreadcrumbs() {
                        return _Widget.apply(this, arguments) || this
                    }
                    var _proto = FileManagerBreadcrumbs.prototype;
                    _proto._init = function() {
                        _Widget.prototype._init.call(this);
                        this._currentDirectory = null
                    };
                    _proto._initMarkup = function() {
                        _Widget.prototype._initMarkup.call(this);
                        this._initActions();
                        if (this._currentDirectory) {
                            this._renderMenu()
                        }
                        this.$element().addClass("dx-filemanager-breadcrumbs")
                    };
                    _proto.setCurrentDirectory = function(directory) {
                        if (!this._areDirsEqual(this._currentDirectory, directory)) {
                            this._currentDirectory = directory;
                            this.repaint()
                        }
                    };
                    _proto._renderMenu = function() {
                        const $menu = (0, _renderer.default)("<div>").appendTo(this.$element());
                        this._menu = this._createComponent($menu, _ui2.default, {
                            dataSource: this._getMenuItems(),
                            onItemClick: this._onItemClick.bind(this),
                            onItemRendered: this._onItemRendered.bind(this)
                        })
                    };
                    _proto._getMenuItems = function() {
                        const dirLine = this._getParentDirsLine();
                        const result = [{
                            icon: "arrowup",
                            directory: this._currentDirectory.parentDirectory,
                            isPathItem: true,
                            cssClass: "dx-filemanager-breadcrumbs-parent-folder-item"
                        }, {
                            text: "\xa0",
                            cssClass: "dx-filemanager-breadcrumbs-separator-item"
                        }];
                        dirLine.forEach((dir, index) => {
                            result.push({
                                text: dir.getDisplayName(),
                                directory: dir,
                                isPathItem: true
                            });
                            if (index !== dirLine.length - 1) {
                                result.push({
                                    icon: "spinnext",
                                    cssClass: "dx-filemanager-breadcrumbs-path-separator-item"
                                })
                            }
                        });
                        return result
                    };
                    _proto._onItemClick = function(_ref) {
                        let {
                            itemData: itemData
                        } = _ref;
                        if (!itemData.isPathItem) {
                            return
                        }
                        const newDir = itemData.directory;
                        if (!this._areDirsEqual(newDir, this._currentDirectory)) {
                            this._raiseCurrentDirectoryChanged(newDir)
                        }
                    };
                    _proto._onItemRendered = function(_ref2) {
                        let {
                            itemElement: itemElement,
                            itemData: itemData
                        } = _ref2;
                        if (itemData.cssClass) {
                            (0, _renderer.default)(itemElement).addClass(itemData.cssClass)
                        }
                    };
                    _proto._getParentDirsLine = function() {
                        let currentDirectory = this._currentDirectory;
                        const result = [];
                        while (currentDirectory) {
                            result.unshift(currentDirectory);
                            currentDirectory = currentDirectory.parentDirectory
                        }
                        return result
                    };
                    _proto._areDirsEqual = function(dir1, dir2) {
                        return dir1 && dir2 && dir1 === dir2 && dir1.fileItem.key === dir2.fileItem.key
                    };
                    _proto._initActions = function() {
                        this._actions = {
                            onCurrentDirectoryChanging: this._createActionByOption("onCurrentDirectoryChanging")
                        }
                    };
                    _proto._raiseCurrentDirectoryChanged = function(currentDirectory) {
                        this._actions.onCurrentDirectoryChanging({
                            currentDirectory: currentDirectory
                        })
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_Widget.prototype._getDefaultOptions.call(this), {
                            rootFolderDisplayName: "Files",
                            onCurrentDirectoryChanging: null
                        })
                    };
                    _proto._optionChanged = function(args) {
                        const name = args.name;
                        switch (name) {
                            case "rootFolderDisplayName":
                                this.repaint();
                                break;
                            case "onCurrentDirectoryChanging":
                                this._actions[name] = this._createActionByOption(name);
                                break;
                            default:
                                _Widget.prototype._optionChanged.call(this, args)
                        }
                    };
                    return FileManagerBreadcrumbs
                }(_ui.default);
                var _default = FileManagerBreadcrumbs;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        77311:
            /*!************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.command_manager.js ***!
              \************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.defaultPermissions = exports.FileManagerCommandManager = void 0;
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _message = (obj = __webpack_require__( /*! ../../localization/message */ 28109), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const defaultPermissions = {
                    create: false,
                    copy: false,
                    move: false,
                    delete: false,
                    rename: false,
                    upload: false,
                    download: false
                };
                exports.defaultPermissions = defaultPermissions;
                let FileManagerCommandManager = function() {
                    function FileManagerCommandManager(permissions) {
                        this._actions = {};
                        this._permissions = permissions || {};
                        this._initCommands()
                    }
                    var _proto = FileManagerCommandManager.prototype;
                    _proto._initCommands = function() {
                        this._commands = [{
                            name: "create",
                            text: _message.default.format("dxFileManager-commandCreate"),
                            icon: "newfolder",
                            enabled: this._permissions.create,
                            noFileItemRequired: true
                        }, {
                            name: "rename",
                            text: _message.default.format("dxFileManager-commandRename"),
                            icon: "rename",
                            enabled: this._permissions.rename,
                            isSingleFileItemCommand: true
                        }, {
                            name: "move",
                            text: _message.default.format("dxFileManager-commandMove"),
                            icon: "movetofolder",
                            enabled: this._permissions.move
                        }, {
                            name: "copy",
                            text: _message.default.format("dxFileManager-commandCopy"),
                            icon: "copy",
                            enabled: this._permissions.copy
                        }, {
                            name: "delete",
                            text: _message.default.format("dxFileManager-commandDelete"),
                            icon: "trash",
                            enabled: this._permissions.delete
                        }, {
                            name: "download",
                            text: _message.default.format("dxFileManager-commandDownload"),
                            icon: "download",
                            enabled: this._permissions.download
                        }, {
                            name: "upload",
                            text: _message.default.format("dxFileManager-commandUpload"),
                            icon: "upload",
                            enabled: this._permissions.upload,
                            noFileItemRequired: true
                        }, {
                            name: "refresh",
                            text: _message.default.format("dxFileManager-commandRefresh"),
                            icon: "dx-filemanager-i dx-filemanager-i-refresh",
                            enabled: true,
                            noFileItemRequired: true
                        }, {
                            name: "thumbnails",
                            text: _message.default.format("dxFileManager-commandThumbnails"),
                            icon: "mediumiconslayout",
                            enabled: true,
                            noFileItemRequired: true
                        }, {
                            name: "details",
                            text: _message.default.format("dxFileManager-commandDetails"),
                            icon: "detailslayout",
                            enabled: true,
                            noFileItemRequired: true
                        }, {
                            name: "clearSelection",
                            text: _message.default.format("dxFileManager-commandClearSelection"),
                            icon: "remove",
                            enabled: true
                        }, {
                            name: "showNavPane",
                            hint: _message.default.format("dxFileManager-commandShowNavPane"),
                            icon: "menu",
                            enabled: false,
                            noFileItemRequired: true
                        }];
                        this._commandMap = {};
                        this._commands.forEach(command => {
                            this._commandMap[command.name] = command
                        })
                    };
                    _proto.registerActions = function(actions) {
                        this._actions = (0, _extend.extend)(this._actions, actions)
                    };
                    _proto.executeCommand = function(command, arg) {
                        const commandName = (0, _type.isString)(command) ? command : command.name;
                        const action = this._actions[commandName];
                        if (action) {
                            return action(arg)
                        }
                    };
                    _proto.updatePermissions = function(permissions) {
                        const resultPermissions = (0, _extend.extend)({}, defaultPermissions, permissions);
                        this._permissions = resultPermissions;
                        (0, _iterator.each)(this._permissions, permission => {
                            this._commandMap[permission].enabled = this._permissions[permission]
                        })
                    };
                    _proto.setCommandEnabled = function(commandName, enabled) {
                        const command = this.getCommandByName(commandName);
                        if (command) {
                            command.enabled = enabled
                        }
                    };
                    _proto.getCommandByName = function(name) {
                        return this._commandMap[name]
                    };
                    _proto.isCommandAvailable = function(commandName, itemInfos) {
                        const command = this.getCommandByName(commandName);
                        if (!command || !command.enabled) {
                            return false
                        }
                        if (command.noFileItemRequired) {
                            return true
                        }
                        const itemsLength = itemInfos && itemInfos.length || 0;
                        if (0 === itemsLength || itemInfos.some(item => item.fileItem.isRoot() || item.fileItem.isParentFolder)) {
                            return false
                        }
                        if ("download" === commandName) {
                            return itemInfos.every(itemInfo => !itemInfo.fileItem.isDirectory)
                        }
                        return !command.isSingleFileItemCommand || 1 === itemsLength
                    };
                    return FileManagerCommandManager
                }();
                exports.FileManagerCommandManager = FileManagerCommandManager
            },
        75084:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.common.js ***!
              \***************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.whenSome = exports.getMapFromObject = exports.getDisplayFileSize = exports.findItemsByKeys = exports.extendAttributes = void 0;
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                exports.whenSome = function(arg, onSuccess, onError) {
                    onSuccess = onSuccess || _common.noop;
                    onError = onError || _common.noop;
                    if (!Array.isArray(arg)) {
                        arg = [arg]
                    }
                    const deferreds = arg.map((item, index) => (0, _deferred.when)(item).then(result => {
                        (0, _type.isFunction)(onSuccess) && onSuccess({
                            item: item,
                            index: index,
                            result: result
                        });
                        return result
                    }, error => {
                        if (!error) {
                            error = {}
                        }
                        error.index = index;
                        (0, _type.isFunction)(onError) && onError(error);
                        return (new _deferred.Deferred).resolve().promise()
                    }));
                    return _deferred.when.apply(null, deferreds)
                };
                exports.getDisplayFileSize = function(byteSize) {
                    const sizesTitles = ["B", "KB", "MB", "GB", "TB"];
                    let index = 0;
                    let displaySize = byteSize;
                    while (displaySize >= 1024 && index <= sizesTitles.length - 1) {
                        displaySize /= 1024;
                        index++
                    }
                    displaySize = Math.round(10 * displaySize) / 10;
                    return "".concat(displaySize, " ").concat(sizesTitles[index])
                };
                exports.extendAttributes = function(targetObject, sourceObject, objectKeysArray) {
                    objectKeysArray.forEach(objectKey => {
                        (0, _extend.extend)(true, targetObject, (0, _type.isDefined)(sourceObject[objectKey]) ? {
                            [objectKey]: sourceObject[objectKey]
                        } : {})
                    });
                    return targetObject
                };
                exports.findItemsByKeys = (itemInfos, keys) => {
                    const itemMap = {};
                    keys.forEach(key => {
                        itemMap[key] = null
                    });
                    itemInfos.forEach(itemInfo => {
                        const key = itemInfo.fileItem.key;
                        if (Object.prototype.hasOwnProperty.call(itemMap, key)) {
                            itemMap[key] = itemInfo
                        }
                    });
                    const result = [];
                    keys.forEach(key => {
                        const itemInfo = itemMap[key];
                        if (itemInfo) {
                            result.push(itemInfo)
                        }
                    });
                    return result
                };
                exports.getMapFromObject = function(object) {
                    const keys = Object.keys(object);
                    const values = [];
                    keys.forEach(key => values.push(object[key]));
                    return {
                        keys: keys,
                        values: values
                    }
                }
            },
        2681:
            /*!*********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.context_menu.js ***!
              \*********************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../context_menu/ui.context_menu */ 5631));
                var _uiFile_manager = __webpack_require__( /*! ./ui.file_manager.common */ 75084);

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

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const DEFAULT_CONTEXT_MENU_ITEMS = {
                    create: {},
                    upload: {},
                    download: {},
                    rename: {},
                    move: {},
                    copy: {},
                    delete: {},
                    refresh: {
                        beginGroup: true
                    }
                };
                const DEFAULT_ITEM_ALLOWED_PROPERTIES = ["beginGroup", "closeMenuOnClick", "disabled", "icon", "selectable", "selected", "text", "visible"];
                let FileManagerContextMenu = function(_Widget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(FileManagerContextMenu, _Widget);

                    function FileManagerContextMenu() {
                        return _Widget.apply(this, arguments) || this
                    }
                    var _proto = FileManagerContextMenu.prototype;
                    _proto._initMarkup = function() {
                        this._initActions();
                        this._isVisible = false;
                        const $menu = (0, _renderer.default)("<div>").appendTo(this.$element());
                        this._contextMenu = this._createComponent($menu, _ui2.default, {
                            cssClass: "dx-filemanager-context-menu",
                            showEvent: "",
                            onItemClick: args => this._onContextMenuItemClick(args.itemData.name, args),
                            onShowing: e => this._onContextMenuShowing(e),
                            onShown: () => this._onContextMenuShown(),
                            onHidden: () => this._onContextMenuHidden()
                        });
                        _Widget.prototype._initMarkup.call(this)
                    };
                    _proto.showAt = function(fileItems, element, event, target) {
                        const {
                            itemData: itemData,
                            itemElement: itemElement,
                            isActionButton: isActionButton = false
                        } = target;
                        if (this._isVisible) {
                            this._onContextMenuHidden()
                        }
                        this._menuShowingContext = {
                            targetElement: itemElement,
                            itemData: itemData,
                            fileItems: fileItems,
                            event: event,
                            isActionButton: isActionButton
                        };
                        const position = {
                            of: element,
                            at: "top left",
                            my: "top left",
                            offset: ""
                        };
                        if (event) {
                            position.offset = event.offsetX + " " + event.offsetY
                        } else {
                            position.my = "left top";
                            position.at = "left bottom";
                            position.boundaryOffset = "1"
                        }
                        this._contextMenu.option({
                            target: element,
                            position: position
                        });
                        this._contextMenu.show()
                    };
                    _proto.createContextMenuItems = function(fileItems, contextMenuItems, targetFileItem) {
                        this._targetFileItems = fileItems;
                        this._targetFileItem = (0, _type.isDefined)(targetFileItem) ? targetFileItem : null === fileItems || void 0 === fileItems ? void 0 : fileItems[0];
                        const result = [];
                        const itemArray = contextMenuItems || this.option("items");
                        itemArray.forEach(srcItem => {
                            const commandName = (0, _type.isString)(srcItem) ? srcItem : srcItem.name;
                            const item = this._configureItemByCommandName(commandName, srcItem, fileItems, this._targetFileItem);
                            if (this._isContextMenuItemAvailable(item, fileItems)) {
                                result.push(item)
                            }
                        });
                        return result
                    };
                    _proto._isContextMenuItemAvailable = function(menuItem, fileItems) {
                        if (!this._isDefaultItem(menuItem.name) || !menuItem._autoHide) {
                            return (0, _common.ensureDefined)(menuItem.visible, true)
                        }
                        if (this._isIsolatedCreationItemCommand(menuItem.name) && fileItems && fileItems.length) {
                            return false
                        }
                        return this._commandManager.isCommandAvailable(menuItem.name, fileItems)
                    };
                    _proto._isIsolatedCreationItemCommand = function(commandName) {
                        return ("create" === commandName || "upload" === commandName) && this.option("isolateCreationItemCommands")
                    };
                    _proto._isDefaultItem = function(commandName) {
                        return !!DEFAULT_CONTEXT_MENU_ITEMS[commandName]
                    };
                    _proto._configureItemByCommandName = function(commandName, item, fileItems, targetFileItem) {
                        if (!this._isDefaultItem(commandName)) {
                            const res = (0, _extend.extend)(true, {}, item);
                            res.originalItemData = item;
                            this._addItemClickHandler(commandName, res);
                            if (Array.isArray(item.items)) {
                                res.items = this.createContextMenuItems(fileItems, item.items, targetFileItem)
                            }
                            return res
                        }
                        const result = this._createMenuItemByCommandName(commandName);
                        const defaultConfig = DEFAULT_CONTEXT_MENU_ITEMS[commandName];
                        (0, _extend.extend)(result, defaultConfig);
                        result.originalItemData = item;
                        (0, _uiFile_manager.extendAttributes)(result, item, DEFAULT_ITEM_ALLOWED_PROPERTIES);
                        if (!(0, _type.isDefined)(result.visible)) {
                            result._autoHide = true
                        }
                        if (commandName && !result.name) {
                            (0, _extend.extend)(result, {
                                name: commandName
                            })
                        }
                        return result
                    };
                    _proto._createMenuItemByCommandName = function(commandName) {
                        const {
                            text: text,
                            icon: icon
                        } = this._commandManager.getCommandByName(commandName);
                        const menuItem = {
                            name: commandName,
                            text: text,
                            icon: icon
                        };
                        this._addItemClickHandler(commandName, menuItem);
                        return menuItem
                    };
                    _proto._addItemClickHandler = function(commandName, contextMenuItem) {
                        contextMenuItem.onItemClick = args => this._onContextMenuItemClick(commandName, args)
                    };
                    _proto._onContextMenuItemClick = function(commandName, args) {
                        var _this$_targetFileItem;
                        const changedArgs = (0, _extend.extend)(true, {}, args);
                        changedArgs.itemData = args.itemData.originalItemData;
                        changedArgs.fileSystemItem = null === (_this$_targetFileItem = this._targetFileItem) || void 0 === _this$_targetFileItem ? void 0 : _this$_targetFileItem.fileItem;
                        changedArgs.viewArea = this.option("viewArea");
                        this._actions.onItemClick(changedArgs);
                        if (this._isDefaultItem(commandName)) {
                            const targetFileItems = this._isIsolatedCreationItemCommand(commandName) ? null : this._targetFileItems;
                            this._commandManager.executeCommand(commandName, targetFileItems)
                        }
                    };
                    _proto._initActions = function() {
                        this._actions = {
                            onContextMenuHidden: this._createActionByOption("onContextMenuHidden"),
                            onContextMenuShowing: this._createActionByOption("onContextMenuShowing"),
                            onItemClick: this._createActionByOption("onItemClick")
                        }
                    };
                    _proto._onContextMenuShowing = function(e) {
                        if (this._isVisible) {
                            this._onContextMenuHidden(true)
                        }
                        e = (0, _extend.extend)(e, this._menuShowingContext, {
                            options: this.option(),
                            cancel: false
                        });
                        this._actions.onContextMenuShowing(e);
                        if (!e.cancel) {
                            const items = this.createContextMenuItems(this._menuShowingContext.fileItems, null, this._menuShowingContext.fileSystemItem);
                            this._contextMenu.option("dataSource", items)
                        }
                    };
                    _proto.tryUpdateVisibleContextMenu = function() {
                        if (this._isVisible) {
                            const items = this.createContextMenuItems(this._targetFileItems);
                            this._contextMenu.option("dataSource", items)
                        }
                    };
                    _proto._onContextMenuShown = function() {
                        this._isVisible = true
                    };
                    _proto._onContextMenuHidden = function(preserveContext) {
                        this._isVisible = false;
                        if (!preserveContext) {
                            this._menuShowingContext = {}
                        }
                        this._contextMenu.option("visible", false);
                        this._raiseContextMenuHidden()
                    };
                    _proto._raiseContextMenuHidden = function() {
                        this._actions.onContextMenuHidden()
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_Widget.prototype._getDefaultOptions.call(this), {
                            commandManager: null,
                            onContextMenuHidden: null,
                            onItemClick: null
                        })
                    };
                    _proto._optionChanged = function(args) {
                        const name = args.name;
                        switch (name) {
                            case "commandManager":
                                this.repaint();
                                break;
                            case "items":
                                this.tryUpdateVisibleContextMenu();
                                break;
                            case "onItemClick":
                            case "onContextMenuShowing":
                            case "onContextMenuHidden":
                                this._actions[name] = this._createActionByOption(name);
                                break;
                            default:
                                _Widget.prototype._optionChanged.call(this, args)
                        }
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(FileManagerContextMenu, [{
                        key: "_commandManager",
                        get: function() {
                            return this.option("commandManager")
                        }
                    }]);
                    return FileManagerContextMenu
                }(_ui.default);
                var _default = FileManagerContextMenu;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        76650:
            /*!***************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.dialog.delete_item.js ***!
              \***************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _scroll_view = _interopRequireDefault(__webpack_require__( /*! ../scroll_view */ 4741));
                var _uiFile_manager = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.dialog */ 62567));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let FileManagerDeleteItemDialog = function(_FileManagerDialogBas) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(FileManagerDeleteItemDialog, _FileManagerDialogBas);

                    function FileManagerDeleteItemDialog() {
                        return _FileManagerDialogBas.apply(this, arguments) || this
                    }
                    var _proto = FileManagerDeleteItemDialog.prototype;
                    _proto.show = function(_ref) {
                        let {
                            itemName: itemName,
                            itemCount: itemCount
                        } = _ref;
                        const text = 1 === itemCount ? _message.default.format("dxFileManager-dialogDeleteItemSingleItemConfirmation", itemName) : _message.default.format("dxFileManager-dialogDeleteItemMultipleItemsConfirmation", itemCount);
                        if (this._$text) {
                            this._$text.text(text)
                        } else {
                            this._initialText = text
                        }
                        _FileManagerDialogBas.prototype.show.call(this)
                    };
                    _proto._getDialogOptions = function() {
                        return (0, _extend.extend)(_FileManagerDialogBas.prototype._getDialogOptions.call(this), {
                            title: _message.default.format("dxFileManager-dialogDeleteItemTitle"),
                            buttonText: _message.default.format("dxFileManager-dialogDeleteItemButtonText"),
                            contentCssClass: "dx-filemanager-dialog-delete-item",
                            popupCssClass: "dx-filemanager-dialog-delete-item-popup",
                            height: "auto",
                            maxHeight: "80vh"
                        })
                    };
                    _proto._createContentTemplate = function(element) {
                        _FileManagerDialogBas.prototype._createContentTemplate.call(this, element);
                        this._$text = (0, _renderer.default)("<div>").text(this._initialText).appendTo(this._$contentElement);
                        this._createComponent(this._$contentElement, _scroll_view.default, {
                            width: "100%",
                            height: "100%"
                        })
                    };
                    _proto._getDialogResult = function() {
                        return {}
                    };
                    return FileManagerDeleteItemDialog
                }(_uiFile_manager.default);
                var _default = FileManagerDeleteItemDialog;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        5760:
            /*!******************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.dialog.folder_chooser.js ***!
              \******************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _uiFile_manager = __webpack_require__( /*! ./ui.file_manager.common */ 75084);
                var _uiFile_manager2 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.dialog */ 62567));
                var _uiFile_manager3 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.files_tree_view */ 48156));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let FileManagerFolderChooserDialog = function(_FileManagerDialogBas) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(FileManagerFolderChooserDialog, _FileManagerDialogBas);

                    function FileManagerFolderChooserDialog() {
                        return _FileManagerDialogBas.apply(this, arguments) || this
                    }
                    var _proto = FileManagerFolderChooserDialog.prototype;
                    _proto.show = function() {
                        var _this$_filesTreeView;
                        this._setSelectedDirInfo(null);
                        null === (_this$_filesTreeView = this._filesTreeView) || void 0 === _this$_filesTreeView ? void 0 : _this$_filesTreeView.refresh();
                        _FileManagerDialogBas.prototype.show.call(this)
                    };
                    _proto.switchToCopyDialog = function(targetItemInfos) {
                        this._targetItemInfos = targetItemInfos;
                        this._setTitle(_message.default.format("dxFileManager-dialogDirectoryChooserCopyTitle"));
                        this._setApplyButtonOptions({
                            text: _message.default.format("dxFileManager-dialogDirectoryChooserCopyButtonText"),
                            disabled: true
                        })
                    };
                    _proto.switchToMoveDialog = function(targetItemInfos) {
                        this._targetItemInfos = targetItemInfos;
                        this._setTitle(_message.default.format("dxFileManager-dialogDirectoryChooserMoveTitle"));
                        this._setApplyButtonOptions({
                            text: _message.default.format("dxFileManager-dialogDirectoryChooserMoveButtonText"),
                            disabled: true
                        })
                    };
                    _proto._getDialogOptions = function() {
                        return (0, _extend.extend)(_FileManagerDialogBas.prototype._getDialogOptions.call(this), {
                            contentCssClass: "dx-filemanager-dialog-folder-chooser",
                            popupCssClass: "dx-filemanager-dialog-folder-chooser-popup"
                        })
                    };
                    _proto._createContentTemplate = function(element) {
                        _FileManagerDialogBas.prototype._createContentTemplate.call(this, element);
                        this._filesTreeView = this._createComponent((0, _renderer.default)("<div>"), _uiFile_manager3.default, {
                            getDirectories: this.option("getDirectories"),
                            getCurrentDirectory: () => this._getDialogSelectedDirectory(),
                            onDirectoryClick: e => this._onFilesTreeViewDirectoryClick(e),
                            onFilesTreeViewContentReady: () => this._toggleUnavailableLocationsDisabled(true)
                        });
                        this._$contentElement.append(this._filesTreeView.$element())
                    };
                    _proto._getDialogResult = function() {
                        const result = this._getDialogSelectedDirectory();
                        return result ? {
                            folder: result
                        } : result
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_FileManagerDialogBas.prototype._getDefaultOptions.call(this), {
                            getItems: null
                        })
                    };
                    _proto._getDialogSelectedDirectory = function() {
                        return this._selectedDirectoryInfo
                    };
                    _proto._onFilesTreeViewDirectoryClick = function(_ref) {
                        let {
                            itemData: itemData
                        } = _ref;
                        this._setSelectedDirInfo(itemData);
                        this._filesTreeView.updateCurrentDirectory()
                    };
                    _proto._setSelectedDirInfo = function(dirInfo) {
                        this._selectedDirectoryInfo = dirInfo;
                        this._setApplyButtonOptions({
                            disabled: !dirInfo
                        })
                    };
                    _proto._onPopupShown = function() {
                        this._toggleUnavailableLocationsDisabled(true);
                        _FileManagerDialogBas.prototype._onPopupShown.call(this)
                    };
                    _proto._onPopupHiding = function() {
                        this._toggleUnavailableLocationsDisabled(false);
                        _FileManagerDialogBas.prototype._onPopupHiding.call(this)
                    };
                    _proto._toggleUnavailableLocationsDisabled = function(isDisabled) {
                        if (!this._filesTreeView) {
                            return
                        }
                        const locations = this._getLocationsToProcess(isDisabled);
                        this._filesTreeView.toggleDirectoryExpandedStateRecursive(locations.locationsToExpand[0], isDisabled).then(() => this._filesTreeView.toggleDirectoryLineExpandedState(locations.locationsToCollapse, !isDisabled).then(() => locations.locationKeysToDisable.forEach(key => this._filesTreeView.toggleNodeDisabledState(key, isDisabled))))
                    };
                    _proto._getLocationsToProcess = function(isDisabled) {
                        const expandLocations = {};
                        const collapseLocations = {};
                        this._targetItemInfos.forEach(itemInfo => {
                            if (itemInfo.parentDirectory) {
                                expandLocations[itemInfo.parentDirectory.getInternalKey()] = itemInfo.parentDirectory
                            }
                            if (itemInfo.fileItem.isDirectory) {
                                collapseLocations[itemInfo.getInternalKey()] = itemInfo
                            }
                        });
                        const expandMap = (0, _uiFile_manager.getMapFromObject)(expandLocations);
                        const collapseMap = (0, _uiFile_manager.getMapFromObject)(collapseLocations);
                        return {
                            locationsToExpand: isDisabled ? expandMap.values : [],
                            locationsToCollapse: isDisabled ? collapseMap.values : [],
                            locationKeysToDisable: expandMap.keys.concat(...collapseMap.keys)
                        }
                    };
                    return FileManagerFolderChooserDialog
                }(_uiFile_manager2.default);
                var _default = FileManagerFolderChooserDialog;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        62567:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.dialog.js ***!
              \***************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../popup/ui.popup */ 51495));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let FileManagerDialogBase = function(_Widget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(FileManagerDialogBase, _Widget);

                    function FileManagerDialogBase() {
                        return _Widget.apply(this, arguments) || this
                    }
                    var _proto = FileManagerDialogBase.prototype;
                    _proto._initMarkup = function() {
                        var _options$popupCssClas;
                        _Widget.prototype._initMarkup.call(this);
                        this._createOnClosedAction();
                        const options = this._getDialogOptions();
                        const $popup = (0, _renderer.default)("<div>").appendTo(this.$element());
                        const popupOptions = {
                            showTitle: true,
                            title: options.title,
                            visible: false,
                            hideOnOutsideClick: true,
                            contentTemplate: this._createContentTemplate.bind(this),
                            toolbarItems: [{
                                widget: "dxButton",
                                toolbar: "bottom",
                                location: "after",
                                options: {
                                    text: options.buttonText,
                                    onClick: this._applyDialogChanges.bind(this)
                                }
                            }, {
                                widget: "dxButton",
                                toolbar: "bottom",
                                location: "after",
                                options: {
                                    text: _message.default.format("dxFileManager-dialogButtonCancel"),
                                    onClick: this._closeDialog.bind(this)
                                }
                            }],
                            onInitialized: _ref => {
                                let {
                                    component: component
                                } = _ref;
                                component.registerKeyHandler("enter", this._applyDialogChanges.bind(this))
                            },
                            onHiding: this._onPopupHiding.bind(this),
                            onShown: this._onPopupShown.bind(this),
                            _wrapperClassExternal: "".concat("dx-filemanager-dialog-popup", " ").concat(null !== (_options$popupCssClas = options.popupCssClass) && void 0 !== _options$popupCssClas ? _options$popupCssClas : "")
                        };
                        if ((0, _type.isDefined)(options.height)) {
                            popupOptions.height = options.height
                        }
                        if ((0, _type.isDefined)(options.maxHeight)) {
                            popupOptions.maxHeight = options.maxHeight
                        }
                        this._popup = this._createComponent($popup, _ui2.default, popupOptions)
                    };
                    _proto.show = function() {
                        this._dialogResult = null;
                        this._popup.show()
                    };
                    _proto._getDialogOptions = function() {
                        return {
                            title: "Title",
                            buttonText: "ButtonText",
                            contentCssClass: "",
                            popupCssClass: ""
                        }
                    };
                    _proto._createContentTemplate = function(element) {
                        this._$contentElement = (0, _renderer.default)("<div>").appendTo(element).addClass("dx-filemanager-dialog");
                        const cssClass = this._getDialogOptions().contentCssClass;
                        if (cssClass) {
                            this._$contentElement.addClass(cssClass)
                        }
                    };
                    _proto._getDialogResult = function() {
                        return null
                    };
                    _proto._applyDialogChanges = function() {
                        const result = this._getDialogResult();
                        if (result) {
                            this._dialogResult = result;
                            this._closeDialog()
                        }
                    };
                    _proto._closeDialog = function() {
                        this._popup.hide()
                    };
                    _proto._onPopupHiding = function() {
                        this._onClosedAction({
                            dialogResult: this._dialogResult
                        })
                    };
                    _proto._onPopupShown = function() {};
                    _proto._createOnClosedAction = function() {
                        this._onClosedAction = this._createActionByOption("onClosed")
                    };
                    _proto._setTitle = function(newTitle) {
                        this._popup.option("title", newTitle)
                    };
                    _proto._setApplyButtonOptions = function(options) {
                        this._popup.option("toolbarItems[0].options", options)
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_Widget.prototype._getDefaultOptions.call(this), {
                            onClosed: null
                        })
                    };
                    _proto._optionChanged = function(args) {
                        const name = args.name;
                        switch (name) {
                            case "onClosed":
                                this._createOnPathChangedAction();
                                break;
                            default:
                                _Widget.prototype._optionChanged.call(this, args)
                        }
                    };
                    return FileManagerDialogBase
                }(_ui.default);
                var _default = FileManagerDialogBase;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        83044:
            /*!***************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.dialog.name_editor.js ***!
              \***************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _text_box = _interopRequireDefault(__webpack_require__( /*! ../text_box */ 29837));
                var _uiFile_manager = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.dialog */ 62567));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let FileManagerNameEditorDialog = function(_FileManagerDialogBas) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(FileManagerNameEditorDialog, _FileManagerDialogBas);

                    function FileManagerNameEditorDialog() {
                        return _FileManagerDialogBas.apply(this, arguments) || this
                    }
                    var _proto = FileManagerNameEditorDialog.prototype;
                    _proto.show = function(name) {
                        name = name || "";
                        if (this._nameTextBox) {
                            this._nameTextBox.option("value", name)
                        } else {
                            this._initialNameValue = name
                        }
                        _FileManagerDialogBas.prototype.show.call(this)
                    };
                    _proto._onPopupShown = function() {
                        if (!this._nameTextBox) {
                            return
                        }
                        const $textBoxInput = this._nameTextBox._input();
                        $textBoxInput.length && $textBoxInput[0].select();
                        this._nameTextBox.focus()
                    };
                    _proto._getDialogOptions = function() {
                        return (0, _extend.extend)(_FileManagerDialogBas.prototype._getDialogOptions.call(this), {
                            title: this.option("title"),
                            buttonText: this.option("buttonText"),
                            contentCssClass: "dx-filemanager-dialog-name-editor",
                            popupCssClass: "dx-filemanager-dialog-name-editor-popup"
                        })
                    };
                    _proto._createContentTemplate = function(element) {
                        _FileManagerDialogBas.prototype._createContentTemplate.call(this, element);
                        this._nameTextBox = this._createComponent((0, _renderer.default)("<div>"), _text_box.default, {
                            value: this._initialNameValue,
                            onEnterKey: () => this._hasCompositionJustEnded && this._applyDialogChanges(),
                            onKeyDown: e => this._checkCompositionEnded(e)
                        });
                        this._$contentElement.append(this._nameTextBox.$element())
                    };
                    _proto._checkCompositionEnded = function(_ref) {
                        let {
                            event: event
                        } = _ref;
                        this._hasCompositionJustEnded = 229 !== event.which
                    };
                    _proto._getDialogResult = function() {
                        const nameValue = this._nameTextBox.option("value");
                        return nameValue ? {
                            name: nameValue
                        } : null
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_FileManagerDialogBas.prototype._getDefaultOptions.call(this), {
                            title: "",
                            buttonText: ""
                        })
                    };
                    return FileManagerNameEditorDialog
                }(_uiFile_manager.default);
                var _default = FileManagerNameEditorDialog;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        87444:
            /*!***********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.dialog_manager.js ***!
              \***********************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _uiFile_managerDialog = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.dialog.name_editor */ 83044));
                var _uiFile_managerDialog2 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.dialog.folder_chooser */ 5760));
                var _uiFile_managerDialog3 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.dialog.delete_item */ 76650));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                let FileManagerDialogManager = function() {
                    function FileManagerDialogManager($element, options) {
                        this._$element = $element;
                        this._options = options;
                        const baseDialogOptions = {
                            onClosed: this._options.onDialogClosed,
                            rtlEnabled: this._options.rtlEnabled
                        };
                        const $chooseFolderDialog = (0, _renderer.default)("<div>").appendTo(this._$element);
                        this._chooseDirectoryDialog = new _uiFile_managerDialog2.default($chooseFolderDialog, (0, _extend.extend)(baseDialogOptions, this._options.chooseDirectoryDialog));
                        const $renameDialog = (0, _renderer.default)("<div>").appendTo(this._$element);
                        this._renameItemDialog = new _uiFile_managerDialog.default($renameDialog, (0, _extend.extend)(baseDialogOptions, {
                            title: _message.default.format("dxFileManager-dialogRenameItemTitle"),
                            buttonText: _message.default.format("dxFileManager-dialogRenameItemButtonText")
                        }));
                        const $createDialog = (0, _renderer.default)("<div>").appendTo(this._$element);
                        this._createItemDialog = new _uiFile_managerDialog.default($createDialog, (0, _extend.extend)(baseDialogOptions, {
                            title: _message.default.format("dxFileManager-dialogCreateDirectoryTitle"),
                            buttonText: _message.default.format("dxFileManager-dialogCreateDirectoryButtonText")
                        }));
                        const $deleteItemDialog = (0, _renderer.default)("<div>").appendTo(this._$element);
                        this._deleteItemDialog = new _uiFile_managerDialog3.default($deleteItemDialog, baseDialogOptions)
                    }
                    var _proto = FileManagerDialogManager.prototype;
                    _proto.getCopyDialog = function(targetItemInfos) {
                        this._chooseDirectoryDialog.switchToCopyDialog(targetItemInfos);
                        return this._chooseDirectoryDialog
                    };
                    _proto.getMoveDialog = function(targetItemInfos) {
                        this._chooseDirectoryDialog.switchToMoveDialog(targetItemInfos);
                        return this._chooseDirectoryDialog
                    };
                    _proto.getRenameItemDialog = function() {
                        return this._renameItemDialog
                    };
                    _proto.getCreateItemDialog = function() {
                        return this._createItemDialog
                    };
                    _proto.getDeleteItemDialog = function() {
                        return this._deleteItemDialog
                    };
                    _proto.updateDialogRtl = function(value) {
                        [this._chooseDirectoryDialog, this._renameItemDialog, this._createItemDialog, this._deleteItemDialog].forEach(dialog => {
                            dialog.option("rtlEnabled", value)
                        })
                    };
                    return FileManagerDialogManager
                }();
                var _default = FileManagerDialogManager;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        86471:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.editing.js ***!
              \****************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _string = __webpack_require__( /*! ../../core/utils/string */ 68752);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _uiFile_manager = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.dialog_manager */ 87444));
                var _uiFile_manager2 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.file_uploader */ 21089));
                var _uiFile_manager3 = __webpack_require__( /*! ./ui.file_manager.messages */ 17053);

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

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                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 _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let FileManagerEditingControl = function(_Widget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(FileManagerEditingControl, _Widget);

                    function FileManagerEditingControl() {
                        return _Widget.apply(this, arguments) || this
                    }
                    var _proto = FileManagerEditingControl.prototype;
                    _proto._initMarkup = function() {
                        _Widget.prototype._initMarkup.call(this);
                        this._initActions();
                        this._controller = this.option("controller");
                        this._controller.on("EditActionStarting", this._onEditActionStarting.bind(this));
                        this._controller.on("EditActionResultAcquired", this._onEditActionResultAcquired.bind(this));
                        this._controller.on("EditActionItemError", this._onEditActionItemError.bind(this));
                        this._controller.on("EditActionError", this._onEditActionError.bind(this));
                        this._controller.on("CompleteEditActionItem", this._onCompleteEditActionItem.bind(this));
                        this._controller.on("CompleteEditAction", this._onCompleteEditAction.bind(this));
                        this._model = this.option("model");
                        this._uploadOperationInfoMap = {};
                        this._dialogManager = new _uiFile_manager.default(this.$element(), {
                            chooseDirectoryDialog: {
                                provider: this._controller._fileProvider,
                                getDirectories: this._controller.getDirectories.bind(this._controller),
                                getCurrentDirectory: this._controller.getCurrentDirectory.bind(this._controller)
                            },
                            rtlEnabled: this.option("rtlEnabled"),
                            onDialogClosed: this._onDialogClosed.bind(this)
                        });
                        this._fileUploader = this._createFileUploader();
                        const notificationControl = this.option("notificationControl");
                        if (notificationControl) {
                            this._initNotificationControl(notificationControl)
                        }
                        this._createMetadataMap()
                    };
                    _proto._initNotificationControl = function(notificationControl) {
                        this._notificationControl = notificationControl;
                        this._notificationControl.option({
                            onOperationCanceled: _ref => {
                                let {
                                    info: info
                                } = _ref;
                                return this._onCancelUploadSession(info)
                            },
                            onOperationItemCanceled: _ref2 => {
                                let {
                                    item: item,
                                    itemIndex: itemIndex
                                } = _ref2;
                                return this._onCancelFileUpload(item, itemIndex)
                            }
                        })
                    };
                    _proto._getFileUploaderComponent = function() {
                        return _uiFile_manager2.default
                    };
                    _proto._createFileUploader = function() {
                        const $fileUploader = (0, _renderer.default)("<div>").appendTo(this.$element());
                        return this._createComponent($fileUploader, this._getFileUploaderComponent(), {
                            getController: this._getFileUploaderController.bind(this),
                            dropZonePlaceholderContainer: this.option("uploadDropZonePlaceholderContainer"),
                            onUploadSessionStarted: e => this._onUploadSessionStarted(e),
                            onUploadProgress: e => this._onUploadProgress(e),
                            onUploadFinished: e => this._onUploadFinished(e)
                        })
                    };
                    _proto.setUploaderDropZone = function($element) {
                        this._fileUploader.option("dropZone", $element)
                    };
                    _proto.setUploaderSplitterElement = function(element) {
                        this._fileUploader.option("splitterElement", element)
                    };
                    _proto._getFileUploaderController = function() {
                        const uploadDirectory = this.uploadDirectoryInfo.fileItem;
                        return {
                            chunkSize: this._controller.getFileUploadChunkSize(),
                            uploadFileChunk: (fileData, chunksInfo) => this._controller.uploadFileChunk(fileData, chunksInfo, uploadDirectory),
                            abortFileUpload: (fileData, chunksInfo) => this._controller.abortFileUpload(fileData, chunksInfo, uploadDirectory)
                        }
                    };
                    _proto._createMetadataMap = function() {
                        this._metadataMap = {
                            create: {
                                action: arg => this._tryCreate(arg),
                                affectsAllItems: true,
                                singleItemProcessingMessage: _message.default.format("dxFileManager-editingCreateSingleItemProcessingMessage"),
                                singleItemSuccessMessage: _message.default.format("dxFileManager-editingCreateSingleItemSuccessMessage"),
                                singleItemErrorMessage: _message.default.format("dxFileManager-editingCreateSingleItemErrorMessage"),
                                commonErrorMessage: _message.default.format("dxFileManager-editingCreateCommonErrorMessage")
                            },
                            rename: {
                                action: arg => this._tryRename(arg),
                                singleItemProcessingMessage: _message.default.format("dxFileManager-editingRenameSingleItemProcessingMessage"),
                                singleItemSuccessMessage: _message.default.format("dxFileManager-editingRenameSingleItemSuccessMessage"),
                                singleItemErrorMessage: _message.default.format("dxFileManager-editingRenameSingleItemErrorMessage"),
                                commonErrorMessage: _message.default.format("dxFileManager-editingRenameCommonErrorMessage")
                            },
                            delete: {
                                action: arg => this._tryDelete(arg),
                                singleItemProcessingMessage: _message.default.format("dxFileManager-editingDeleteSingleItemProcessingMessage"),
                                multipleItemsProcessingMessage: _message.default.format("dxFileManager-editingDeleteMultipleItemsProcessingMessage"),
                                singleItemSuccessMessage: _message.default.format("dxFileManager-editingDeleteSingleItemSuccessMessage"),
                                multipleItemsSuccessMessage: _message.default.format("dxFileManager-editingDeleteMultipleItemsSuccessMessage"),
                                singleItemErrorMessage: _message.default.format("dxFileManager-editingDeleteSingleItemErrorMessage"),
                                multipleItemsErrorMessage: _message.default.format("dxFileManager-editingDeleteMultipleItemsErrorMessage"),
                                commonErrorMessage: _message.default.format("dxFileManager-editingDeleteCommonErrorMessage")
                            },
                            move: {
                                action: arg => this._tryMove(arg),
                                singleItemProcessingMessage: _message.default.format("dxFileManager-editingMoveSingleItemProcessingMessage"),
                                multipleItemsProcessingMessage: _message.default.format("dxFileManager-editingMoveMultipleItemsProcessingMessage"),
                                singleItemSuccessMessage: _message.default.format("dxFileManager-editingMoveSingleItemSuccessMessage"),
                                multipleItemsSuccessMessage: _message.default.format("dxFileManager-editingMoveMultipleItemsSuccessMessage"),
                                singleItemErrorMessage: _message.default.format("dxFileManager-editingMoveSingleItemErrorMessage"),
                                multipleItemsErrorMessage: _message.default.format("dxFileManager-editingMoveMultipleItemsErrorMessage"),
                                commonErrorMessage: _message.default.format("dxFileManager-editingMoveCommonErrorMessage")
                            },
                            copy: {
                                action: arg => this._tryCopy(arg),
                                singleItemProcessingMessage: _message.default.format("dxFileManager-editingCopySingleItemProcessingMessage"),
                                multipleItemsProcessingMessage: _message.default.format("dxFileManager-editingCopyMultipleItemsProcessingMessage"),
                                singleItemSuccessMessage: _message.default.format("dxFileManager-editingCopySingleItemSuccessMessage"),
                                multipleItemsSuccessMessage: _message.default.format("dxFileManager-editingCopyMultipleItemsSuccessMessage"),
                                singleItemErrorMessage: _message.default.format("dxFileManager-editingCopySingleItemErrorMessage"),
                                multipleItemsErrorMessage: _message.default.format("dxFileManager-editingCopyMultipleItemsErrorMessage"),
                                commonErrorMessage: _message.default.format("dxFileManager-editingCopyCommonErrorMessage")
                            },
                            upload: {
                                action: arg => this._tryUpload(arg),
                                allowCancel: true,
                                allowItemProgress: true,
                                singleItemProcessingMessage: _message.default.format("dxFileManager-editingUploadSingleItemProcessingMessage"),
                                multipleItemsProcessingMessage: _message.default.format("dxFileManager-editingUploadMultipleItemsProcessingMessage"),
                                singleItemSuccessMessage: _message.default.format("dxFileManager-editingUploadSingleItemSuccessMessage"),
                                multipleItemsSuccessMessage: _message.default.format("dxFileManager-editingUploadMultipleItemsSuccessMessage"),
                                singleItemErrorMessage: _message.default.format("dxFileManager-editingUploadSingleItemErrorMessage"),
                                multipleItemsErrorMessage: _message.default.format("dxFileManager-editingUploadMultipleItemsErrorMessage"),
                                canceledMessage: _message.default.format("dxFileManager-editingUploadCanceledMessage")
                            },
                            download: {
                                action: arg => this._download(arg),
                                singleItemProcessingMessage: "",
                                multipleItemsProcessingMessage: "",
                                singleItemErrorMessage: _message.default.format("dxFileManager-editingDownloadSingleItemErrorMessage"),
                                multipleItemsErrorMessage: _message.default.format("dxFileManager-editingDownloadMultipleItemsErrorMessage")
                            },
                            getItemContent: {
                                action: arg => this._getItemContent(arg)
                            },
                            getItems: {
                                singleItemProcessingMessage: "",
                                singleItemErrorMessage: _message.default.format("dxFileManager-errorDirectoryOpenFailed"),
                                commonErrorMessage: _message.default.format("dxFileManager-errorDirectoryOpenFailed")
                            }
                        }
                    };
                    _proto.getCommandActions = function() {
                        const result = {};
                        (0, _iterator.each)(this._metadataMap, name => {
                            if (Object.prototype.hasOwnProperty.call(this._metadataMap, name)) {
                                result[name] = arg => this._executeAction(name, arg)
                            }
                        });
                        return result
                    };
                    _proto._executeAction = function(actionName, arg) {
                        const actionMetadata = this._metadataMap[actionName];
                        return actionMetadata ? actionMetadata.action(arg) : null
                    };
                    _proto._onCancelUploadSession = function(info) {
                        this._fileUploader.cancelUpload(info.uploadSessionId)
                    };
                    _proto._onCancelFileUpload = function(item, itemIndex) {
                        this._fileUploader.cancelFileUpload(item.info.uploadSessionId, itemIndex)
                    };
                    _proto._onUploadProgress = function(_ref3) {
                        let {
                            sessionId: sessionId,
                            fileIndex: fileIndex,
                            commonValue: commonValue,
                            fileValue: fileValue
                        } = _ref3;
                        const {
                            operationInfo: operationInfo
                        } = this._uploadOperationInfoMap[sessionId];
                        this._notificationControl.updateOperationItemProgress(operationInfo, fileIndex, 100 * fileValue, 100 * commonValue)
                    };
                    _proto._onUploadFinished = function(_ref4) {
                        let {
                            sessionId: sessionId,
                            commonValue: commonValue
                        } = _ref4;
                        const {
                            operationInfo: operationInfo
                        } = this._uploadOperationInfoMap[sessionId];
                        this._notificationControl.finishOperation(operationInfo, 100 * commonValue);
                        this._scheduleUploadSessionDisposal(sessionId, "uploader")
                    };
                    _proto._onUploadSessionStarted = function(_ref5) {
                        let {
                            sessionInfo: sessionInfo
                        } = _ref5;
                        this._controller.processUploadSession(sessionInfo, this.uploadDirectoryInfo)
                    };
                    _proto._onEditActionStarting = function(actionInfo) {
                        const actionMetadata = this._metadataMap[actionInfo.name];
                        const context = new FileManagerActionContext(actionMetadata, actionInfo.itemInfos, actionInfo.directory);
                        const operationInfo = this._notificationControl.addOperation(context.processingMessage, actionMetadata.allowCancel, !actionMetadata.allowItemProgress);
                        (0, _extend.extend)(actionInfo.customData, {
                            context: context,
                            operationInfo: operationInfo
                        });
                        switch (actionInfo.name) {
                            case "upload": {
                                const sessionId = actionInfo.customData.sessionInfo.sessionId;
                                operationInfo.uploadSessionId = sessionId;
                                this._uploadOperationInfoMap[sessionId] = {
                                    operationInfo: operationInfo
                                }
                            }
                            break;
                            case "rename":
                                actionInfo.customData.context.itemNewName = actionInfo.customData.itemNewName
                        }
                    };
                    _proto._onEditActionResultAcquired = function(actionInfo) {
                        const {
                            context: context,
                            operationInfo: operationInfo
                        } = actionInfo.customData;
                        context.singleRequest = actionInfo.singleRequest;
                        const details = context.itemInfos.map(itemInfo => this._getItemProgressDisplayInfo(itemInfo));
                        this._notificationControl.addOperationDetails(operationInfo, details, context.actionMetadata.allowCancel)
                    };
                    _proto._onEditActionError = function(actionInfo, errorInfo) {
                        const {
                            context: context,
                            operationInfo: operationInfo
                        } = actionInfo.customData;
                        context.singleRequest = actionInfo.singleRequest;
                        this._handleActionError(operationInfo, context, errorInfo);
                        this._completeAction(operationInfo, context)
                    };
                    _proto._onEditActionItemError = function(actionInfo, errorInfo) {
                        const {
                            context: context,
                            operationInfo: operationInfo
                        } = actionInfo.customData;
                        this._handleActionError(operationInfo, context, errorInfo)
                    };
                    _proto._onCompleteEditActionItem = function(actionInfo, info) {
                        const {
                            context: context,
                            operationInfo: operationInfo
                        } = actionInfo.customData;
                        if (!info.result || !info.result.canceled) {
                            context.completeOperationItem(info.index);
                            this._notificationControl.completeOperationItem(operationInfo, info.index, context.commonProgress)
                        }
                    };
                    _proto._onCompleteEditAction = function(actionInfo) {
                        const {
                            context: context,
                            operationInfo: operationInfo
                        } = actionInfo.customData;
                        this._completeAction(operationInfo, context);
                        if ("upload" === actionInfo.name) {
                            this._scheduleUploadSessionDisposal(actionInfo.customData.sessionInfo.sessionId, "controller")
                        }
                    };
                    _proto._scheduleUploadSessionDisposal = function(sessionId, requester) {
                        if ((0, _type.isDefined)(this._uploadOperationInfoMap[sessionId].requester) && this._uploadOperationInfoMap[sessionId].requester !== requester) {
                            delete this._uploadOperationInfoMap[sessionId]
                        } else {
                            this._uploadOperationInfoMap[sessionId].requester = requester
                        }
                    };
                    _proto._tryCreate = function(parentDirectories) {
                        const parentDirectoryInfo = parentDirectories && parentDirectories[0] || this._getCurrentDirectory();
                        const newDirName = _message.default.format("dxFileManager-newDirectoryName");
                        return this._showDialog(this._dialogManager.getCreateItemDialog(), newDirName).then(_ref6 => {
                            let {
                                name: name
                            } = _ref6;
                            return this._controller.createDirectory(parentDirectoryInfo, name)
                        })
                    };
                    _proto._tryRename = function(itemInfos) {
                        const itemInfo = itemInfos && itemInfos[0] || this._model.getMultipleSelectedItems()[0];
                        if (!itemInfo) {
                            return (new _deferred.Deferred).reject().promise()
                        }
                        return this._showDialog(this._dialogManager.getRenameItemDialog(), itemInfo.fileItem.name).then(_ref7 => {
                            let {
                                name: name
                            } = _ref7;
                            return this._controller.renameItem(itemInfo, name)
                        })
                    };
                    _proto._tryDelete = function(itemInfos) {
                        itemInfos = itemInfos || this._model.getMultipleSelectedItems();
                        if (0 === itemInfos.length) {
                            return (new _deferred.Deferred).reject().promise()
                        }
                        const itemName = itemInfos[0].fileItem.name;
                        const itemCount = itemInfos.length;
                        return this._showDialog(this._dialogManager.getDeleteItemDialog(), {
                            itemName: itemName,
                            itemCount: itemCount
                        }).then(() => this._controller.deleteItems(itemInfos))
                    };
                    _proto._tryMove = function(itemInfos) {
                        itemInfos = itemInfos || this._model.getMultipleSelectedItems();
                        if (0 === itemInfos.length) {
                            return (new _deferred.Deferred).reject().promise()
                        }
                        return this._showDialog(this._dialogManager.getMoveDialog(itemInfos)).then(_ref8 => {
                            let {
                                folder: folder
                            } = _ref8;
                            return this._controller.moveItems(itemInfos, folder)
                        })
                    };
                    _proto._tryCopy = function(itemInfos) {
                        itemInfos = itemInfos || this._model.getMultipleSelectedItems();
                        if (0 === itemInfos.length) {
                            return (new _deferred.Deferred).reject().promise()
                        }
                        return this._showDialog(this._dialogManager.getCopyDialog(itemInfos)).then(_ref9 => {
                            let {
                                folder: folder
                            } = _ref9;
                            return this._controller.copyItems(itemInfos, folder)
                        })
                    };
                    _proto._tryUpload = function(destinationFolder) {
                        this._uploadDirectoryInfo = null === destinationFolder || void 0 === destinationFolder ? void 0 : destinationFolder[0];
                        this._fileUploader.tryUpload()
                    };
                    _proto._download = function(itemInfos) {
                        itemInfos = itemInfos || this._model.getMultipleSelectedItems();
                        if (0 === itemInfos.length) {
                            return (new _deferred.Deferred).reject().promise()
                        }
                        return this._controller.downloadItems(itemInfos)
                    };
                    _proto._getItemContent = function(itemInfos) {
                        itemInfos = itemInfos || this._model.getMultipleSelectedItems();
                        return this._controller.getItemContent(itemInfos)
                    };
                    _proto._completeAction = function(operationInfo, context) {
                        this._notificationControl.completeOperation(operationInfo, context.completionMessage, !context.success, context.statusText);
                        if (context.hasModifiedItems()) {
                            this._raiseOnSuccess(context.onlyFiles)
                        }
                    };
                    _proto._handleActionError = function(operationInfo, context, errorInfo) {
                        operationInfo.hasError = true;
                        if (context.singleRequest) {
                            this._handleSingleRequestActionError(operationInfo, context, errorInfo)
                        } else {
                            this._handleMultipleRequestActionError(operationInfo, context, errorInfo)
                        }
                    };
                    _proto._handleSingleRequestActionError = function(operationInfo, context, errorInfo) {
                        const itemInfo = context.getItemForSingleRequestError();
                        const itemName = context.getItemName(errorInfo.errorCode);
                        const errorText = this._getErrorText(errorInfo, itemInfo, itemName);
                        context.processSingleRequestError(errorText);
                        const operationErrorInfo = this._getOperationErrorInfo(context);
                        this._notificationControl.completeSingleOperationWithError(operationInfo, operationErrorInfo);
                        if (context.multipleItems) {
                            this._raiseOnSuccess(context.onlyFiles)
                        }
                    };
                    _proto._handleMultipleRequestActionError = function(operationInfo, context, errorInfo) {
                        const itemInfo = context.getItemForMultipleRequestError(errorInfo.index);
                        const itemName = context.getItemName(errorInfo.errorCode, errorInfo.index);
                        const errorText = this._getErrorText(errorInfo, itemInfo, itemName);
                        context.processMultipleRequestError(errorInfo.index, errorText);
                        const operationErrorInfo = this._getOperationErrorInfo(context);
                        this._notificationControl.addOperationDetailsError(operationInfo, operationErrorInfo)
                    };
                    _proto._getOperationErrorInfo = function(context) {
                        const detailError = context.errorState.currentDetailError;
                        return {
                            commonErrorText: context.errorState.commonErrorText,
                            item: detailError.itemInfo ? this._getItemProgressDisplayInfo(detailError.itemInfo) : null,
                            itemIndex: detailError.itemIndex,
                            detailErrorText: detailError.errorText
                        }
                    };
                    _proto._getErrorText = function(errorInfo, itemInfo, itemName) {
                        const errorText = errorInfo.errorText || _uiFile_manager3.FileManagerMessages.get(errorInfo.errorCode, itemName);
                        const errorArgs = {
                            fileSystemItem: null === itemInfo || void 0 === itemInfo ? void 0 : itemInfo.fileItem,
                            errorCode: errorInfo.errorCode,
                            errorText: errorText
                        };
                        this._raiseOnError(errorArgs);
                        return errorArgs.errorText
                    };
                    _proto._getItemProgressDisplayInfo = function(itemInfo) {
                        return {
                            commonText: itemInfo.fileItem.name,
                            imageUrl: this._getItemThumbnail(itemInfo)
                        }
                    };
                    _proto._showDialog = function(dialog, dialogArgument) {
                        this._dialogDeferred = new _deferred.Deferred;
                        dialog.show(dialogArgument);
                        return this._dialogDeferred.promise()
                    };
                    _proto._onDialogClosed = function(e) {
                        const result = e.dialogResult;
                        if (result) {
                            this._dialogDeferred.resolve(result)
                        } else {
                            this._dialogDeferred.reject()
                        }
                    };
                    _proto.updateDialogRtl = function(value) {
                        this._dialogManager.updateDialogRtl(value)
                    };
                    _proto._getItemThumbnail = function(item) {
                        const itemThumbnailGetter = this.option("getItemThumbnail");
                        if (!itemThumbnailGetter) {
                            return null
                        }
                        const info = itemThumbnailGetter(item);
                        return info ? info.thumbnail : null
                    };
                    _proto._initActions = function() {
                        this._actions = {
                            onSuccess: this._createActionByOption("onSuccess"),
                            onError: this._createActionByOption("onError")
                        }
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_Widget.prototype._getDefaultOptions.call(this), {
                            model: {
                                getMultipleSelectedItems: null
                            },
                            notificationControl: null,
                            getItemThumbnail: null,
                            onSuccess: null,
                            onError: null
                        })
                    };
                    _proto._optionChanged = function(args) {
                        const name = args.name;
                        switch (name) {
                            case "model":
                                this.repaint();
                                break;
                            case "notificationControl":
                                this._initNotificationControl(args.value);
                                break;
                            case "getItemThumbnail":
                                break;
                            case "uploadDropZonePlaceholderContainer":
                                this._fileUploader.option("dropZonePlaceholderContainer", args.value);
                                break;
                            case "onSuccess":
                            case "onError":
                                this._actions[name] = this._createActionByOption(name);
                                break;
                            default:
                                _Widget.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto._raiseOnSuccess = function(updatedOnlyFiles) {
                        this._actions.onSuccess({
                            updatedOnlyFiles: updatedOnlyFiles
                        })
                    };
                    _proto._raiseOnError = function(args) {
                        this._actions.onError(args)
                    };
                    _proto._getCurrentDirectory = function() {
                        return this._controller.getCurrentDirectory()
                    };
                    _createClass(FileManagerEditingControl, [{
                        key: "uploadDirectoryInfo",
                        get: function() {
                            return this._uploadDirectoryInfo || this._getCurrentDirectory()
                        }
                    }]);
                    return FileManagerEditingControl
                }(_ui.default);
                let FileManagerActionContext = function() {
                    function FileManagerActionContext(actionMetadata, itemInfos, directoryInfo) {
                        this._actionMetadata = actionMetadata;
                        this._itemInfos = itemInfos;
                        this._onlyFiles = !this._actionMetadata.affectsAllItems && this._itemInfos.every(info => !info.fileItem.isDirectory);
                        this._items = this._itemInfos.map(itemInfo => itemInfo.fileItem);
                        this._multipleItems = this._items.length > 1;
                        this._location = directoryInfo.getDisplayName();
                        this._singleRequest = true;
                        this._completedItems = [];
                        this._commonProgress = 0;
                        this._errorState = {
                            failedCount: 0
                        };
                        this._itemNewName = ""
                    }
                    var _proto2 = FileManagerActionContext.prototype;
                    _proto2.completeOperationItem = function(itemIndex) {
                        if (this._singleRequest) {
                            this._completedItems = [...this._items]
                        } else {
                            const item = this._items[itemIndex];
                            this._completedItems.push(item)
                        }
                        if (!this._actionMetadata.allowItemProgress) {
                            this._commonProgress = this._completedItems.length / this._items.length * 100
                        }
                    };
                    _proto2.processSingleRequestError = function(errorText) {
                        this._errorState.failedCount = 1;
                        this._errorState.commonErrorText = this._multipleItems ? this._actionMetadata.commonErrorMessage : this._actionMetadata.singleItemErrorMessage;
                        const itemIndex = this._multipleItems ? -1 : 1;
                        const itemInfo = this.getItemForSingleRequestError();
                        this._setCurrentDetailError(itemIndex, itemInfo, errorText)
                    };
                    _proto2.processMultipleRequestError = function(itemIndex, errorText) {
                        this._errorState.failedCount++;
                        this._errorState.commonErrorText = this._errorState.failedCount > 1 ? (0, _string.format)(this._actionMetadata.multipleItemsErrorMessage, this._errorState.failedCount) : this._actionMetadata.singleItemErrorMessage;
                        const itemInfo = this.getItemForMultipleRequestError(itemIndex);
                        this._setCurrentDetailError(itemIndex, itemInfo, errorText)
                    };
                    _proto2.hasModifiedItems = function() {
                        return this._hasCompletedItems() || this._singleRequest && !this.success && this._multipleItems
                    };
                    _proto2.getItemForSingleRequestError = function() {
                        return this._multipleItems ? null : this._itemInfos[0]
                    };
                    _proto2.getItemForMultipleRequestError = function(itemIndex) {
                        return this._itemInfos[itemIndex]
                    };
                    _proto2.getItemName = function(errorCode, itemIndex) {
                        const itemInfo = this.singleRequest ? this.getItemForSingleRequestError() : this.getItemForMultipleRequestError(itemIndex);
                        let result = null === itemInfo || void 0 === itemInfo ? void 0 : itemInfo.fileItem.name;
                        if (this.itemNewName && this._isItemExistsErrorCode(errorCode)) {
                            result = this.itemNewName
                        }
                        return result
                    };
                    _proto2._isItemExistsErrorCode = function(errorCode) {
                        return errorCode === _uiFile_manager3.ErrorCode.DirectoryExists || errorCode === _uiFile_manager3.ErrorCode.FileExists
                    };
                    _proto2._setCurrentDetailError = function(itemIndex, itemInfo, errorText) {
                        this._errorState.currentDetailError = {
                            itemIndex: itemIndex,
                            itemInfo: itemInfo,
                            errorText: errorText
                        }
                    };
                    _proto2._hasCompletedItems = function() {
                        return this._completedItems.length > 0
                    };
                    _createClass(FileManagerActionContext, [{
                        key: "actionMetadata",
                        get: function() {
                            return this._actionMetadata
                        }
                    }, {
                        key: "itemInfos",
                        get: function() {
                            return this._itemInfos
                        }
                    }, {
                        key: "itemNewName",
                        get: function() {
                            return this._itemNewName
                        },
                        set: function(value) {
                            this._itemNewName = value
                        }
                    }, {
                        key: "errorState",
                        get: function() {
                            return this._errorState
                        }
                    }, {
                        key: "singleRequest",
                        get: function() {
                            return this._singleRequest
                        },
                        set: function(value) {
                            this._singleRequest = value
                        }
                    }, {
                        key: "multipleItems",
                        get: function() {
                            return this._multipleItems
                        }
                    }, {
                        key: "onlyFiles",
                        get: function() {
                            return this._onlyFiles
                        }
                    }, {
                        key: "processingMessage",
                        get: function() {
                            return this._multipleItems ? (0, _string.format)(this._actionMetadata.multipleItemsProcessingMessage, this._items.length, this._location) : (0, _string.format)(this._actionMetadata.singleItemProcessingMessage, this._location)
                        }
                    }, {
                        key: "successMessage",
                        get: function() {
                            if (this._hasCompletedItems()) {
                                return this._multipleItems ? (0, _string.format)(this._actionMetadata.multipleItemsSuccessMessage, this._completedItems.length, this._location) : (0, _string.format)(this._actionMetadata.singleItemSuccessMessage, this._location)
                            } else {
                                return this._multipleItems ? (0, _string.format)(this._actionMetadata.multipleItemsErrorMessage, this._items.length) : this._actionMetadata.singleItemErrorMessage
                            }
                        }
                    }, {
                        key: "completionMessage",
                        get: function() {
                            return this.success ? this.successMessage : this.errorState.commonErrorText
                        }
                    }, {
                        key: "statusText",
                        get: function() {
                            return this.success && !this._hasCompletedItems() ? this._actionMetadata.canceledMessage : void 0
                        }
                    }, {
                        key: "commonProgress",
                        get: function() {
                            return this._commonProgress
                        }
                    }, {
                        key: "success",
                        get: function() {
                            return !this._errorState.failedCount
                        }
                    }]);
                    return FileManagerActionContext
                }();
                var _default = FileManagerEditingControl;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        68912:
            /*!****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.file_actions_button.js ***!
              \****************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _button = _interopRequireDefault(__webpack_require__( /*! ../button */ 63008));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let FileManagerFileActionsButton = function(_Widget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(FileManagerFileActionsButton, _Widget);

                    function FileManagerFileActionsButton() {
                        return _Widget.apply(this, arguments) || this
                    }
                    var _proto = FileManagerFileActionsButton.prototype;
                    _proto._initMarkup = function() {
                        this._createClickAction();
                        const $button = (0, _renderer.default)("<div>");
                        this.$element().append($button).addClass("dx-filemanager-file-actions-button");
                        this._button = this._createComponent($button, _button.default, {
                            icon: "overflow",
                            stylingMode: "text",
                            onClick: e => this._raiseClick(e)
                        });
                        _Widget.prototype._initMarkup.call(this)
                    };
                    _proto._createClickAction = function() {
                        this._clickAction = this._createActionByOption("onClick")
                    };
                    _proto._raiseClick = function(e) {
                        this._clickAction(e)
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_Widget.prototype._getDefaultOptions.call(this), {
                            cssClass: "",
                            onClick: null
                        })
                    };
                    _proto._optionChanged = function(args) {
                        const name = args.name;
                        switch (name) {
                            case "cssClass":
                                this.repaint();
                                break;
                            case "onClick":
                                this._createClickAction();
                                break;
                            default:
                                _Widget.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto.setActive = function(active) {
                        this.$element().toggleClass("dx-filemanager-file-actions-button-activated", active);
                        setTimeout(() => this._button.$element().toggleClass("dx-state-active", active))
                    };
                    return FileManagerFileActionsButton
                }(_ui.default);
                var _default = FileManagerFileActionsButton;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        21089:
            /*!**********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.file_uploader.js ***!
              \**********************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 73176));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _file_uploader = _interopRequireDefault(__webpack_require__( /*! ../file_uploader */ 53749));
                var _uiFile_manager = __webpack_require__( /*! ./ui.file_manager.common */ 75084);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let FileManagerFileUploader = function(_Widget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(FileManagerFileUploader, _Widget);

                    function FileManagerFileUploader() {
                        return _Widget.apply(this, arguments) || this
                    }
                    var _proto = FileManagerFileUploader.prototype;
                    _proto._initMarkup = function() {
                        this._initActions();
                        this.$element().addClass("dx-filemanager-fileuploader");
                        this._uploaderInfos = [];
                        this._createInternalFileUploader();
                        this._createDropZonePlaceholder();
                        this._setDropZonePlaceholderVisible(false);
                        _Widget.prototype._initMarkup.call(this)
                    };
                    _proto._createInternalFileUploader = function() {
                        const chunkSize = this._getController().chunkSize;
                        const $fileUploader = (0, _renderer.default)("<div>").appendTo(this.$element());
                        const fileUploader = this._createComponent($fileUploader, _file_uploader.default, {
                            name: "file",
                            multiple: true,
                            showFileList: false,
                            activeStateEnabled: false,
                            focusStateEnabled: false,
                            hoverStateEnabled: false,
                            labelText: "",
                            readyToUploadMessage: "",
                            accept: "*",
                            chunkSize: chunkSize,
                            dropZone: this.option("dropZone"),
                            onValueChanged: e => this._onFileUploaderValueChanged(e),
                            onProgress: e => this._onFileUploaderProgress(e),
                            onUploaded: e => this._onFileUploaderUploaded(e),
                            onFilesUploaded: e => this._onFileUploaderAllFilesUploaded(e),
                            onUploadAborted: e => this._onFileUploaderUploadAborted(e),
                            onUploadError: e => this._onFileUploaderUploadError(e),
                            onDropZoneEnter: () => this._setDropZonePlaceholderVisible(true),
                            onDropZoneLeave: () => this._setDropZonePlaceholderVisible(false)
                        });
                        fileUploader.option({
                            uploadChunk: (file, chunksData) => this._fileUploaderUploadChunk(fileUploader, file, chunksData),
                            abortUpload: (file, chunksData) => this._fileUploaderAbortUpload(fileUploader, file, chunksData)
                        });
                        fileUploader._shouldRaiseDragLeaveBase = fileUploader._shouldRaiseDragLeave;
                        fileUploader._shouldRaiseDragLeave = e => this._shouldRaiseDragLeave(e, fileUploader);
                        const uploaderInfo = {
                            fileUploader: fileUploader
                        };
                        this._uploaderInfos.push(uploaderInfo)
                    };
                    _proto.tryUpload = function() {
                        const info = this._findAndUpdateAvailableUploaderInfo();
                        if (info) {
                            info.fileUploader._selectButtonClickHandler()
                        }
                    };
                    _proto.cancelUpload = function(sessionId) {
                        this._cancelUpload(sessionId)
                    };
                    _proto.cancelFileUpload = function(sessionId, fileIndex) {
                        this._cancelUpload(sessionId, fileIndex)
                    };
                    _proto._cancelUpload = function(sessionId, fileIndex) {
                        const {
                            fileUploader: fileUploader
                        } = this._findUploaderInfoBySessionId(sessionId);
                        fileUploader.abortUpload(fileIndex)
                    };
                    _proto._fileUploaderUploadChunk = function(fileUploader, file, chunksInfo) {
                        const {
                            session: session,
                            fileIndex: fileIndex
                        } = this._findSessionByFile(fileUploader, file);
                        const controller = session.controller;
                        chunksInfo.fileIndex = fileIndex;
                        return controller.uploadFileChunk(file, chunksInfo)
                    };
                    _proto._fileUploaderAbortUpload = function(fileUploader, file, chunksInfo) {
                        const {
                            session: session,
                            fileIndex: fileIndex
                        } = this._findSessionByFile(fileUploader, file);
                        const controller = session.controller;
                        chunksInfo.fileIndex = fileIndex;
                        return controller.abortFileUpload(file, chunksInfo)
                    };
                    _proto._onFileUploaderValueChanged = function(_ref) {
                        let {
                            component: component,
                            value: value
                        } = _ref;
                        if (0 === value.length) {
                            return
                        }
                        const files = value.slice();
                        const uploaderInfo = this._findUploaderInfo(component);
                        this._uploadFiles(uploaderInfo, files);
                        setTimeout(() => {
                            if (!this._findAndUpdateAvailableUploaderInfo()) {
                                this._createInternalFileUploader()
                            }
                        })
                    };
                    _proto._onFileUploaderProgress = function(_ref2) {
                        let {
                            component: component,
                            file: file,
                            bytesLoaded: bytesLoaded,
                            bytesTotal: bytesTotal
                        } = _ref2;
                        const {
                            session: session,
                            fileIndex: fileIndex
                        } = this._findSessionByFile(component, file);
                        const fileValue = 0 !== bytesTotal ? bytesLoaded / bytesTotal : 1;
                        const commonValue = component.option("progress") / 100;
                        const args = {
                            sessionId: session.id,
                            fileIndex: fileIndex,
                            commonValue: commonValue,
                            fileValue: fileValue
                        };
                        this._raiseUploadProgress(args)
                    };
                    _proto._onFileUploaderAllFilesUploaded = function(_ref3) {
                        let {
                            component: component
                        } = _ref3;
                        const {
                            session: session
                        } = this._findSessionByFile(component, component._files[0].value);
                        this._raiseUploadFinished({
                            sessionId: session.id,
                            commonValue: component.option("progress") / 100
                        })
                    };
                    _proto._onFileUploaderUploaded = function(_ref4) {
                        let {
                            component: component,
                            file: file
                        } = _ref4;
                        const deferred = this._getDeferredForFile(component, file);
                        deferred.resolve()
                    };
                    _proto._onFileUploaderUploadAborted = function(_ref5) {
                        let {
                            component: component,
                            file: file
                        } = _ref5;
                        const deferred = this._getDeferredForFile(component, file);
                        deferred.resolve({
                            canceled: true
                        })
                    };
                    _proto._onFileUploaderUploadError = function(_ref6) {
                        let {
                            component: component,
                            file: file,
                            error: error
                        } = _ref6;
                        const deferred = this._getDeferredForFile(component, file);
                        deferred.reject(error)
                    };
                    _proto._createDropZonePlaceholder = function() {
                        this._$dropZonePlaceholder = (0, _renderer.default)("<div>").addClass("dx-filemanager-fileuploader-dropzone-placeholder").appendTo(this.option("dropZonePlaceholderContainer"))
                    };
                    _proto._adjustDropZonePlaceholder = function() {
                        const $dropZoneTarget = this.option("dropZone");
                        if (!(0, _window.hasWindow)() || 0 === $dropZoneTarget.length) {
                            return
                        }
                        const placeholderBorderTopWidth = parseFloat(this._$dropZonePlaceholder.css("borderTopWidth"));
                        const placeholderBorderLeftWidth = parseFloat(this._$dropZonePlaceholder.css("borderLeftWidth"));
                        const $placeholderContainer = this.option("dropZonePlaceholderContainer");
                        const containerBorderBottomWidth = parseFloat($placeholderContainer.css("borderBottomWidth"));
                        const containerBorderLeftWidth = parseFloat($placeholderContainer.css("borderLeftWidth"));
                        const containerHeight = (0, _size.getInnerHeight)($placeholderContainer);
                        const containerOffset = $placeholderContainer.offset();
                        const dropZoneOffset = $dropZoneTarget.offset();
                        this._$dropZonePlaceholder.css({
                            top: dropZoneOffset.top - containerOffset.top - containerHeight - containerBorderBottomWidth,
                            left: dropZoneOffset.left - containerOffset.left - containerBorderLeftWidth
                        });
                        (0, _size.setHeight)(this._$dropZonePlaceholder, $dropZoneTarget.get(0).offsetHeight - 2 * placeholderBorderTopWidth);
                        (0, _size.setWidth)(this._$dropZonePlaceholder, $dropZoneTarget.get(0).offsetWidth - 2 * placeholderBorderLeftWidth)
                    };
                    _proto._setDropZonePlaceholderVisible = function(visible) {
                        if (visible) {
                            this._adjustDropZonePlaceholder();
                            this._$dropZonePlaceholder.css("display", "")
                        } else {
                            this._$dropZonePlaceholder.css("display", "none")
                        }
                    };
                    _proto._shouldRaiseDragLeave = function(e, uploaderInstance) {
                        return uploaderInstance.isMouseOverElement(e, this.option("splitterElement")) || uploaderInstance._shouldRaiseDragLeaveBase(e, true)
                    };
                    _proto._uploadFiles = function(uploaderInfo, files) {
                        this._setDropZonePlaceholderVisible(false);
                        const sessionId = (new _guid.default).toString();
                        const controller = this._getController();
                        const deferreds = files.map(() => new _deferred.Deferred);
                        const session = {
                            id: sessionId,
                            controller: controller,
                            files: files,
                            deferreds: deferreds
                        };
                        uploaderInfo.session = session;
                        const sessionInfo = {
                            sessionId: sessionId,
                            deferreds: deferreds,
                            files: files
                        };
                        this._raiseUploadSessionStarted(sessionInfo);
                        return (0, _uiFile_manager.whenSome)(deferreds).always(() => setTimeout(() => {
                            uploaderInfo.fileUploader.clear();
                            uploaderInfo.session = null
                        }))
                    };
                    _proto._getDeferredForFile = function(fileUploader, file) {
                        const {
                            session: session,
                            fileIndex: fileIndex
                        } = this._findSessionByFile(fileUploader, file);
                        return session.deferreds[fileIndex]
                    };
                    _proto._findSessionByFile = function(fileUploader, file) {
                        const uploaderInfo = this._findUploaderInfo(fileUploader);
                        const session = uploaderInfo.session;
                        const fileIndex = session.files.indexOf(file);
                        return {
                            session: session,
                            fileIndex: fileIndex
                        }
                    };
                    _proto._findUploaderInfoBySessionId = function(sessionId) {
                        for (let i = 0; i < this._uploaderInfos.length; i++) {
                            const uploaderInfo = this._uploaderInfos[i];
                            const session = uploaderInfo.session;
                            if (session && session.id === sessionId) {
                                return uploaderInfo
                            }
                        }
                        return null
                    };
                    _proto._findAndUpdateAvailableUploaderInfo = function() {
                        var _info;
                        let info = null;
                        for (let i = 0; i < this._uploaderInfos.length; i++) {
                            const currentInfo = this._uploaderInfos[i];
                            currentInfo.fileUploader.option("dropZone", "");
                            if (!info && !currentInfo.session) {
                                info = currentInfo
                            }
                        }
                        null === (_info = info) || void 0 === _info ? void 0 : _info.fileUploader.option("dropZone", this.option("dropZone"));
                        return info
                    };
                    _proto._findUploaderInfo = function(fileUploader) {
                        for (let i = 0; i < this._uploaderInfos.length; i++) {
                            const info = this._uploaderInfos[i];
                            if (info.fileUploader === fileUploader) {
                                return info
                            }
                        }
                        return null
                    };
                    _proto._getController = function() {
                        const controllerGetter = this.option("getController");
                        return controllerGetter()
                    };
                    _proto._raiseUploadSessionStarted = function(sessionInfo) {
                        this._actions.onUploadSessionStarted({
                            sessionInfo: sessionInfo
                        })
                    };
                    _proto._raiseUploadProgress = function(args) {
                        this._actions.onUploadProgress(args)
                    };
                    _proto._raiseUploadFinished = function(args) {
                        this._actions.onUploadFinished(args)
                    };
                    _proto._initActions = function() {
                        this._actions = {
                            onUploadSessionStarted: this._createActionByOption("onUploadSessionStarted"),
                            onUploadProgress: this._createActionByOption("onUploadProgress"),
                            onUploadFinished: this._createActionByOption("onUploadFinished")
                        }
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_Widget.prototype._getDefaultOptions.call(this), {
                            getController: null,
                            onUploadSessionStarted: null,
                            onUploadProgress: null,
                            onUploadFinished: null,
                            splitterElement: null
                        })
                    };
                    _proto._optionChanged = function(args) {
                        const name = args.name;
                        switch (name) {
                            case "getController":
                                this.repaint();
                                break;
                            case "onUploadSessionStarted":
                            case "onUploadProgress":
                            case "onUploadFinished":
                                this._actions[name] = this._createActionByOption(name);
                                break;
                            case "dropZone":
                                this._findAndUpdateAvailableUploaderInfo();
                                this._adjustDropZonePlaceholder();
                                break;
                            case "dropZonePlaceholderContainer":
                                this._$dropZonePlaceholder.detach();
                                this._$dropZonePlaceholder.appendTo(args.value);
                                break;
                            case "splitterElement":
                                break;
                            default:
                                _Widget.prototype._optionChanged.call(this, args)
                        }
                    };
                    return FileManagerFileUploader
                }(_ui.default);
                var _default = FileManagerFileUploader;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        48156:
            /*!************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.files_tree_view.js ***!
              \************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _icon = __webpack_require__( /*! ../../core/utils/icon */ 44899);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _uiTree_view = _interopRequireDefault(__webpack_require__( /*! ../tree_view/ui.tree_view.search */ 76986));
                var _uiFile_manager = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.file_actions_button */ 68912));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);

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

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let FileManagerFilesTreeView = function(_Widget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(FileManagerFilesTreeView, _Widget);

                    function FileManagerFilesTreeView() {
                        return _Widget.apply(this, arguments) || this
                    }
                    var _proto = FileManagerFilesTreeView.prototype;
                    _proto._initMarkup = function() {
                        this._initActions();
                        this._getCurrentDirectory = this.option("getCurrentDirectory");
                        this._createFileActionsButton = _common.noop;
                        this._storeExpandedState = this.option("storeExpandedState") || false;
                        const $treeView = (0, _renderer.default)("<div>").addClass("dx-filemanager-dirs-tree").appendTo(this.$element());
                        const treeViewOptions = {
                            dataStructure: "plain",
                            rootValue: "",
                            createChildren: this._onFilesTreeViewCreateSubDirectories.bind(this),
                            itemTemplate: this._createFilesTreeViewItemTemplate.bind(this),
                            keyExpr: "getInternalKey",
                            parentIdExpr: "parentDirectory.getInternalKey",
                            displayExpr: itemInfo => itemInfo.getDisplayName(),
                            hasItemsExpr: "fileItem.hasSubDirectories",
                            onItemClick: e => this._actions.onDirectoryClick(e),
                            onItemExpanded: e => this._onFilesTreeViewItemExpanded(e),
                            onItemCollapsed: e => this._onFilesTreeViewItemCollapsed(e),
                            onItemRendered: e => this._onFilesTreeViewItemRendered(e),
                            onContentReady: () => this._actions.onFilesTreeViewContentReady()
                        };
                        if (this._contextMenu) {
                            this._contextMenu.option("onContextMenuHidden", () => this._onContextMenuHidden());
                            treeViewOptions.onItemContextMenu = e => this._onFilesTreeViewItemContextMenu(e);
                            this._createFileActionsButton = (element, options) => this._createComponent(element, _uiFile_manager.default, options)
                        }
                        this._filesTreeView = this._createComponent($treeView, _uiTree_view.default, treeViewOptions)
                    };
                    _proto._initActions = function() {
                        this._actions = {
                            onDirectoryClick: this._createActionByOption("onDirectoryClick"),
                            onFilesTreeViewContentReady: this._createActionByOption("onFilesTreeViewContentReady")
                        }
                    };
                    _proto._render = function() {
                        _Widget.prototype._render.call(this);
                        const that = this;
                        setTimeout(() => {
                            that._updateFocusedElement()
                        })
                    };
                    _proto._onFilesTreeViewCreateSubDirectories = function(rootItem) {
                        const getDirectories = this.option("getDirectories");
                        const directoryInfo = rootItem && rootItem.itemData || null;
                        return getDirectories && getDirectories(directoryInfo, true)
                    };
                    _proto._onFilesTreeViewItemRendered = function(_ref) {
                        let {
                            itemData: itemData
                        } = _ref;
                        const currentDirectory = this._getCurrentDirectory();
                        if (currentDirectory && currentDirectory.fileItem.equals(itemData.fileItem)) {
                            this._updateFocusedElement();
                            this._restoreScrollTopPosition()
                        }
                    };
                    _proto._onFilesTreeViewItemExpanded = function(_ref2) {
                        let {
                            itemData: itemData
                        } = _ref2;
                        if (this._storeExpandedState) {
                            itemData.expanded = true
                        }
                    };
                    _proto._onFilesTreeViewItemCollapsed = function(_ref3) {
                        let {
                            itemData: itemData
                        } = _ref3;
                        if (this._storeExpandedState) {
                            itemData.expanded = false
                        }
                    };
                    _proto._createFilesTreeViewItemTemplate = function(itemData, itemIndex, itemElement) {
                        const $itemElement = (0, _renderer.default)(itemElement);
                        const $itemWrapper = $itemElement.closest(this._filesTreeViewItemSelector);
                        $itemWrapper.data("item", itemData);
                        const $image = (0, _icon.getImageContainer)(itemData.icon);
                        const $text = (0, _renderer.default)("<span>").text(itemData.getDisplayName()).addClass("dx-filemanager-dirs-tree-item-text");
                        const $button = (0, _renderer.default)("<div>");
                        $itemElement.append($image, $text, $button);
                        this._createFileActionsButton($button, {
                            onClick: e => this._onFileItemActionButtonClick(e)
                        })
                    };
                    _proto._onFilesTreeViewItemContextMenu = function(_ref4) {
                        let {
                            itemElement: itemElement,
                            event: event
                        } = _ref4;
                        event.preventDefault();
                        event.stopPropagation();
                        const itemData = (0, _renderer.default)(itemElement).data("item");
                        this._contextMenu.showAt([itemData], itemElement, event, {
                            itemData: itemData,
                            itemElement: itemElement
                        })
                    };
                    _proto._onFileItemActionButtonClick = function(_ref5) {
                        let {
                            component: component,
                            element: element,
                            event: event
                        } = _ref5;
                        event.stopPropagation();
                        const itemElement = component.$element().closest(this._filesTreeViewItemSelector);
                        const itemData = itemElement.data("item");
                        const target = {
                            itemData: itemData,
                            itemElement: itemElement,
                            isActionButton: true
                        };
                        this._contextMenu.showAt([itemData], element, event, target);
                        this._activeFileActionsButton = component;
                        this._activeFileActionsButton.setActive(true)
                    };
                    _proto._onContextMenuHidden = function() {
                        if (this._activeFileActionsButton) {
                            this._activeFileActionsButton.setActive(false)
                        }
                    };
                    _proto.toggleNodeDisabledState = function(key, state) {
                        const node = this._getNodeByKey(key);
                        if (!node) {
                            return
                        }
                        const items = this._filesTreeView.option("items");
                        const itemIndex = items.map(item => item.getInternalKey()).indexOf(node.getInternalKey());
                        if (-1 !== itemIndex) {
                            this._filesTreeView.option("items[".concat(itemIndex, "].disabled"), state)
                        }
                    };
                    _proto._saveScrollTopPosition = function() {
                        if (!(0, _window.hasWindow)()) {
                            return
                        }
                        this._scrollTopPosition = this._filesTreeView.getScrollable().scrollTop()
                    };
                    _proto._restoreScrollTopPosition = function() {
                        if (!(0, _window.hasWindow)() || !(0, _type.isNumeric)(this._scrollTopPosition)) {
                            return
                        }
                        setTimeout(() => this._filesTreeView.getScrollable().scrollTo(this._scrollTopPosition))
                    };
                    _proto._updateFocusedElement = function() {
                        const directoryInfo = this._getCurrentDirectory();
                        const $element = this._getItemElementByKey(null === directoryInfo || void 0 === directoryInfo ? void 0 : directoryInfo.getInternalKey());
                        if (this._$focusedElement) {
                            this._$focusedElement.toggleClass("dx-filemanager-focused-item", false)
                        }
                        this._$focusedElement = $element || (0, _renderer.default)();
                        this._$focusedElement.toggleClass("dx-filemanager-focused-item", true)
                    };
                    _proto._getNodeByKey = function(key) {
                        var _this$_filesTreeView;
                        return null === (_this$_filesTreeView = this._filesTreeView) || void 0 === _this$_filesTreeView ? void 0 : _this$_filesTreeView._getNode(key)
                    };
                    _proto._getPublicNode = function(key) {
                        var _this$_filesTreeView2;
                        const nodesQueue = [...null === (_this$_filesTreeView2 = this._filesTreeView) || void 0 === _this$_filesTreeView2 ? void 0 : _this$_filesTreeView2.getNodes()];
                        while (nodesQueue.length) {
                            const node = nodesQueue.shift();
                            if (node.itemData.getInternalKey() === key) {
                                return node
                            } else if (node.children.length) {
                                nodesQueue.push(...node.children)
                            }
                        }
                        return
                    };
                    _proto._getItemElementByKey = function(key) {
                        const node = this._getNodeByKey(key);
                        if (node) {
                            const $node = this._filesTreeView._getNodeElement(node);
                            if ($node) {
                                return $node.children(this._filesTreeViewItemSelector)
                            }
                        }
                        return null
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_Widget.prototype._getDefaultOptions.call(this), {
                            storeExpandedState: false,
                            initialFolder: null,
                            contextMenu: null,
                            getItems: null,
                            getCurrentDirectory: null,
                            onDirectoryClick: null
                        })
                    };
                    _proto._optionChanged = function(args) {
                        const name = args.name;
                        switch (name) {
                            case "storeExpandedState":
                                this._storeExpandedState = this.option(name);
                                break;
                            case "getItems":
                            case "rootFolderDisplayName":
                            case "initialFolder":
                            case "contextMenu":
                                this.repaint();
                                break;
                            case "getCurrentDirectory":
                                this.getCurrentDirectory = this.option(name);
                                break;
                            case "onDirectoryClick":
                            case "onFilesTreeViewContentReady":
                                this._actions[name] = this._createActionByOption(name);
                                break;
                            default:
                                _Widget.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto.toggleDirectoryExpandedState = function(directoryInfo, state) {
                        const deferred = new _deferred.Deferred;
                        const treeViewNode = this._getPublicNode(null === directoryInfo || void 0 === directoryInfo ? void 0 : directoryInfo.getInternalKey());
                        if (!treeViewNode) {
                            return deferred.reject().promise()
                        }
                        if (treeViewNode.expanded === state || treeViewNode.itemsLoaded && !treeViewNode.itemData.fileItem.hasSubDirectories) {
                            return deferred.resolve().promise()
                        }
                        const action = state ? "expandItem" : "collapseItem";
                        return this._filesTreeView[action](directoryInfo.getInternalKey())
                    };
                    _proto.refresh = function() {
                        this._$focusedElement = null;
                        this._saveScrollTopPosition();
                        this._filesTreeView.option("dataSource", [])
                    };
                    _proto.updateCurrentDirectory = function() {
                        if (this._disposed) {
                            return
                        }
                        this._updateFocusedElement();
                        this._storeExpandedState && this._updateExpandedStateToCurrentDirectory()
                    };
                    _proto._updateExpandedStateToCurrentDirectory = function() {
                        return this.toggleDirectoryExpandedStateRecursive(this._getCurrentDirectory().parentDirectory, true)
                    };
                    _proto.toggleDirectoryExpandedStateRecursive = function(directoryInfo, state) {
                        const dirLine = [];
                        for (let dirInfo = directoryInfo; dirInfo; dirInfo = dirInfo.parentDirectory) {
                            dirLine.unshift(dirInfo)
                        }
                        return this.toggleDirectoryLineExpandedState(dirLine, state)
                    };
                    _proto.toggleDirectoryLineExpandedState = function(dirLine, state) {
                        if (!dirLine.length) {
                            return (new _deferred.Deferred).resolve().promise()
                        }
                        return this.toggleDirectoryExpandedState(dirLine.shift(), state).then(() => this.toggleDirectoryLineExpandedState(dirLine, state))
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(FileManagerFilesTreeView, [{
                        key: "_filesTreeViewItemSelector",
                        get: function() {
                            return ".".concat("dx-treeview-item")
                        }
                    }, {
                        key: "_contextMenu",
                        get: function() {
                            return this.option("contextMenu")
                        }
                    }]);
                    return FileManagerFilesTreeView
                }(_ui.default);
                var _default = FileManagerFilesTreeView;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        99386:
            /*!**************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.item_list.details.js ***!
              \**************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _uiFile_manager = __webpack_require__( /*! ./ui.file_manager.common */ 75084);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../data_grid/ui.data_grid */ 88221));
                var _uiFile_manager2 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.item_list */ 43785));
                var _uiFile_manager3 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.file_actions_button */ 68912));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _file_items_controller = __webpack_require__( /*! ./file_items_controller */ 57289);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const DEFAULT_COLUMN_CONFIGS = {
                    thumbnail: {
                        caption: "",
                        calculateSortValue: "isDirectory",
                        width: 36,
                        alignment: "center",
                        cssClass: "dx-filemanager-details-item-is-directory"
                    },
                    name: {
                        caption: _message.default.format("dxFileManager-listDetailsColumnCaptionName")
                    },
                    dateModified: {
                        caption: _message.default.format("dxFileManager-listDetailsColumnCaptionDateModified"),
                        width: 110,
                        hidingPriority: 1
                    },
                    size: {
                        caption: _message.default.format("dxFileManager-listDetailsColumnCaptionFileSize"),
                        width: 90,
                        alignment: "right",
                        hidingPriority: 0
                    },
                    isParentFolder: {
                        caption: "isParentFolder",
                        visible: false,
                        sortIndex: 0,
                        sortOrder: "asc"
                    }
                };
                let FileManagerDetailsItemList = function(_FileManagerItemListB) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(FileManagerDetailsItemList, _FileManagerItemListB);

                    function FileManagerDetailsItemList() {
                        return _FileManagerItemListB.apply(this, arguments) || this
                    }
                    var _proto = FileManagerDetailsItemList.prototype;
                    _proto._initMarkup = function() {
                        this._itemCount = 0;
                        this._focusedItem = null;
                        this._hasParentDirectoryItem = false;
                        this._parentDirectoryItemKey = null;
                        this._selectAllCheckBox = null;
                        this._selectAllCheckBoxUpdating = false;
                        this.$element().addClass("dx-filemanager-details");
                        this._createFilesView();
                        this._contextMenu.option("onContextMenuHidden", () => this._onContextMenuHidden());
                        _FileManagerItemListB.prototype._initMarkup.call(this)
                    };
                    _proto._createFilesView = function() {
                        const $filesView = (0, _renderer.default)("<div>").appendTo(this.$element());
                        const selectionMode = this._isMultipleSelectionMode() ? "multiple" : "none";
                        this._filesView = this._createComponent($filesView, _ui.default, {
                            dataSource: this._createDataSource(),
                            hoverStateEnabled: true,
                            selection: {
                                mode: selectionMode,
                                showCheckBoxesMode: this._isDesktop() ? "onClick" : "none"
                            },
                            selectedRowKeys: this.option("selectedItemKeys"),
                            focusedRowKey: this.option("focusedItemKey"),
                            focusedRowEnabled: true,
                            allowColumnResizing: true,
                            scrolling: {
                                mode: "virtual"
                            },
                            sorting: {
                                mode: "single",
                                showSortIndexes: false
                            },
                            loadPanel: {
                                shading: true
                            },
                            showColumnLines: false,
                            showRowLines: false,
                            columnHidingEnabled: false,
                            columns: this._createColumns(),
                            onEditorPreparing: this._onEditorPreparing.bind(this),
                            onRowPrepared: this._onRowPrepared.bind(this),
                            onContextMenuPreparing: this._onContextMenuPreparing.bind(this),
                            onSelectionChanged: this._onFilesViewSelectionChanged.bind(this),
                            onFocusedRowChanged: this._onFilesViewFocusedRowChanged.bind(this),
                            onOptionChanged: this._onFilesViewOptionChanged.bind(this),
                            onContentReady: this._onContentReady.bind(this)
                        })
                    };
                    _proto._createColumns = function() {
                        let columns = this.option("detailColumns");
                        columns = columns.slice(0);
                        columns = columns.map(column => {
                            let extendedItem = column;
                            if ((0, _type.isString)(column)) {
                                extendedItem = {
                                    dataField: column
                                }
                            }
                            return this._getPreparedColumn(extendedItem)
                        });
                        const customizeDetailColumns = this.option("customizeDetailColumns");
                        if ((0, _type.isFunction)(customizeDetailColumns)) {
                            columns = customizeDetailColumns(columns)
                        }
                        columns.push(this._getPreparedColumn({
                            dataField: "isParentFolder"
                        }));
                        columns.forEach(column => this._updateColumnDataField(column));
                        return columns
                    };
                    _proto._getPreparedColumn = function(columnOptions) {
                        const result = {};
                        let resultCssClass = "";
                        if (this._isDefaultColumn(columnOptions.dataField)) {
                            const defaultConfig = (0, _extend.extend)(true, {}, DEFAULT_COLUMN_CONFIGS[columnOptions.dataField]);
                            resultCssClass = defaultConfig.cssClass || "";
                            switch (columnOptions.dataField) {
                                case "thumbnail":
                                    defaultConfig.cellTemplate = this._createThumbnailColumnCell.bind(this);
                                    defaultConfig.calculateSortValue = "fileItem.".concat(defaultConfig.calculateSortValue);
                                    break;
                                case "name":
                                    defaultConfig.cellTemplate = this._createNameColumnCell.bind(this);
                                    defaultConfig.caption = _message.default.format("dxFileManager-listDetailsColumnCaptionName");
                                    break;
                                case "size":
                                    defaultConfig.calculateCellValue = this._calculateSizeColumnCellValue.bind(this);
                                    defaultConfig.caption = _message.default.format("dxFileManager-listDetailsColumnCaptionFileSize");
                                    defaultConfig.calculateSortValue = rowData => rowData.fileItem.isDirectory ? -1 : rowData.fileItem.size;
                                    break;
                                case "dateModified":
                                    defaultConfig.caption = _message.default.format("dxFileManager-listDetailsColumnCaptionDateModified")
                            }(0, _extend.extend)(true, result, defaultConfig)
                        }(0, _uiFile_manager.extendAttributes)(result, columnOptions, ["alignment", "caption", "dataField", "dataType", "hidingPriority", "sortIndex", "sortOrder", "visible", "visibleIndex", "width"]);
                        if (columnOptions.cssClass) {
                            resultCssClass = "".concat(resultCssClass, " ").concat(columnOptions.cssClass)
                        }
                        if (resultCssClass) {
                            result.cssClass = resultCssClass
                        }
                        return result
                    };
                    _proto._updateColumnDataField = function(column) {
                        const dataItemSuffix = this._isDefaultColumn(column.dataField) ? "" : "dataItem.";
                        column.dataField = "fileItem." + dataItemSuffix + column.dataField;
                        return column
                    };
                    _proto._isDefaultColumn = function(columnDataField) {
                        return !!DEFAULT_COLUMN_CONFIGS[columnDataField]
                    };
                    _proto._onFileItemActionButtonClick = function(_ref) {
                        let {
                            component: component,
                            element: element,
                            event: event
                        } = _ref;
                        event.stopPropagation();
                        const $row = component.$element().closest(this._getItemSelector());
                        const fileItemInfo = $row.data("item");
                        this._selectItem(fileItemInfo);
                        const target = {
                            itemData: fileItemInfo,
                            itemElement: $row,
                            isActionButton: true
                        };
                        const items = this._getFileItemsForContextMenu(fileItemInfo);
                        this._showContextMenu(items, element, event, target);
                        this._activeFileActionsButton = component;
                        this._activeFileActionsButton.setActive(true)
                    };
                    _proto._onContextMenuHidden = function() {
                        if (this._activeFileActionsButton) {
                            this._activeFileActionsButton.setActive(false)
                        }
                    };
                    _proto._getItemThumbnailCssClass = function() {
                        return "dx-filemanager-details-item-thumbnail"
                    };
                    _proto._getItemSelector = function() {
                        return ".".concat("dx-data-row")
                    };
                    _proto._onItemDblClick = function(e) {
                        const $row = (0, _renderer.default)(e.currentTarget);
                        const fileItemInfo = $row.data("item");
                        this._raiseSelectedItemOpened(fileItemInfo)
                    };
                    _proto._isAllItemsSelected = function() {
                        const selectableItemsCount = this._hasParentDirectoryItem ? this._itemCount - 1 : this._itemCount;
                        const selectedRowKeys = this._filesView.option("selectedRowKeys");
                        if (!selectedRowKeys.length) {
                            return false
                        }
                        return selectedRowKeys.length >= selectableItemsCount ? true : void 0
                    };
                    _proto._onEditorPreparing = function(_ref2) {
                        let {
                            component: component,
                            command: command,
                            row: row,
                            parentType: parentType,
                            editorOptions: editorOptions
                        } = _ref2;
                        if (!this._filesView) {
                            this._filesView = component
                        }
                        if ("select" === command && row) {
                            if (this._isParentDirectoryItem(row.data)) {
                                editorOptions.disabled = true
                            }
                        } else if ("headerRow" === parentType) {
                            editorOptions.onInitialized = _ref3 => {
                                let {
                                    component: component
                                } = _ref3;
                                this._selectAllCheckBox = component
                            };
                            editorOptions.value = this._isAllItemsSelected();
                            editorOptions.onValueChanged = args => this._onSelectAllCheckBoxValueChanged(args)
                        }
                    };
                    _proto._onSelectAllCheckBoxValueChanged = function(_ref4) {
                        let {
                            event: event,
                            previousValue: previousValue,
                            value: value
                        } = _ref4;
                        if (!event) {
                            if (previousValue && !this._selectAllCheckBoxUpdating && this._selectAllCheckBox) {
                                this._selectAllCheckBox.option("value", previousValue)
                            }
                            return
                        }
                        if (this._isAllItemsSelected() === value) {
                            return
                        }
                        if (value) {
                            this._filesView.selectAll()
                        } else {
                            this._filesView.deselectAll()
                        }
                        event.preventDefault()
                    };
                    _proto._onRowPrepared = function(_ref5) {
                        let {
                            rowType: rowType,
                            rowElement: rowElement,
                            data: data
                        } = _ref5;
                        if ("data" === rowType) {
                            const $row = (0, _renderer.default)(rowElement);
                            $row.data("item", data);
                            if (this._isParentDirectoryItem(data)) {
                                $row.addClass("dx-filemanager-parent-directory-item")
                            }
                        }
                    };
                    _proto._onContextMenuPreparing = function(e) {
                        if (!this._isDesktop()) {
                            return
                        }
                        let fileItems = null;
                        let item = {};
                        if (e.row && "data" === e.row.rowType) {
                            item = e.row.data;
                            this._selectItem(item);
                            fileItems = this._getFileItemsForContextMenu(item)
                        }
                        const eventArgs = (0, _extend.extend)({}, {
                            targetElement: "content" === e.target && (0, _type.isDefined)(e.row) ? this._filesView.getRowElement(e.rowIndex) : void 0,
                            itemData: item,
                            options: this._contextMenu.option(),
                            event: e.event,
                            isActionButton: false,
                            cancel: false
                        });
                        this._raiseContextMenuShowing(eventArgs);
                        e.items = eventArgs.cancel ? [] : this._contextMenu.createContextMenuItems(fileItems, null, item)
                    };
                    _proto._onFilesViewSelectionChanged = function(_ref6) {
                        let {
                            component: component,
                            selectedRowsData: selectedRowsData,
                            selectedRowKeys: selectedRowKeys,
                            currentSelectedRowKeys: currentSelectedRowKeys,
                            currentDeselectedRowKeys: currentDeselectedRowKeys
                        } = _ref6;
                        this._filesView = this._filesView || component;
                        if (this._selectAllCheckBox) {
                            this._selectAllCheckBoxUpdating = true;
                            this._selectAllCheckBox.option("value", this._isAllItemsSelected());
                            this._selectAllCheckBoxUpdating = false
                        }
                        const selectedItems = selectedRowsData.map(itemInfo => itemInfo.fileItem);
                        this._tryRaiseSelectionChanged({
                            selectedItemInfos: selectedRowsData,
                            selectedItems: selectedItems,
                            selectedItemKeys: selectedRowKeys,
                            currentSelectedItemKeys: currentSelectedRowKeys,
                            currentDeselectedItemKeys: currentDeselectedRowKeys
                        })
                    };
                    _proto._onFilesViewFocusedRowChanged = function(e) {
                        var _e$row2;
                        if (!this._isMultipleSelectionMode()) {
                            var _e$row;
                            this._selectItemSingleSelection(null === (_e$row = e.row) || void 0 === _e$row ? void 0 : _e$row.data)
                        }
                        const fileSystemItem = (null === (_e$row2 = e.row) || void 0 === _e$row2 ? void 0 : _e$row2.data.fileItem) || null;
                        this._onFocusedItemChanged({
                            item: fileSystemItem,
                            itemKey: null === fileSystemItem || void 0 === fileSystemItem ? void 0 : fileSystemItem.key,
                            itemElement: e.rowElement
                        })
                    };
                    _proto._onFilesViewOptionChanged = function(_ref7) {
                        let {
                            fullName: fullName
                        } = _ref7;
                        if (fullName.indexOf("sortOrder") > -1) {
                            this._filesView.columnOption("isParentFolder", {
                                sortOrder: "asc",
                                sortIndex: 0
                            })
                        }
                    };
                    _proto._resetFocus = function() {
                        this._setFocusedItemKey(void 0)
                    };
                    _proto._createThumbnailColumnCell = function(container, cellInfo) {
                        this._getItemThumbnailContainer(cellInfo.data).appendTo(container)
                    };
                    _proto._createNameColumnCell = function(container, cellInfo) {
                        const $button = (0, _renderer.default)("<div>");
                        const $name = (0, _renderer.default)("<span>").text(cellInfo.data.fileItem.name).addClass("dx-filemanager-details-item-name");
                        const $wrapper = (0, _renderer.default)("<div>").append($name, $button).addClass("dx-filemanager-details-item-name-wrapper");
                        (0, _renderer.default)(container).append($wrapper);
                        this._createComponent($button, _uiFile_manager3.default, {
                            onClick: e => this._onFileItemActionButtonClick(e)
                        })
                    };
                    _proto._calculateSizeColumnCellValue = function(rowData) {
                        return rowData.fileItem.isDirectory ? "" : (0, _uiFile_manager.getDisplayFileSize)(rowData.fileItem.size)
                    };
                    _proto._selectItem = function(fileItemInfo) {
                        const selectItemFunc = this._isMultipleSelectionMode() ? this._selectItemMultipleSelection : this._selectItemSingleSelection;
                        selectItemFunc.call(this, fileItemInfo)
                    };
                    _proto._deselectItem = function(item) {
                        this._filesView.deselectRows([item.fileItem.key])
                    };
                    _proto._selectItemSingleSelection = function(fileItemInfo) {
                        if (!this._focusedItem || !fileItemInfo || this._focusedItem.fileItem.key !== fileItemInfo.fileItem.key) {
                            const oldFocusedItem = this._focusedItem;
                            this._focusedItem = fileItemInfo;
                            const deselectedKeys = [];
                            if (oldFocusedItem) {
                                deselectedKeys.push(oldFocusedItem.fileItem.key)
                            }
                            const selectedItems = [];
                            const selectedKeys = [];
                            if (fileItemInfo && !this._isParentDirectoryItem(fileItemInfo)) {
                                selectedItems.push(fileItemInfo.fileItem);
                                selectedKeys.push(fileItemInfo.fileItem.key)
                            }
                            this._raiseSelectionChanged({
                                selectedItems: selectedItems,
                                selectedItemKeys: selectedKeys,
                                currentSelectedItemKeys: [...selectedKeys],
                                currentDeselectedItemKeys: deselectedKeys
                            })
                        }
                    };
                    _proto._selectItemMultipleSelection = function(_ref8) {
                        let {
                            fileItem: fileItem
                        } = _ref8;
                        if (!this._filesView.isRowSelected(fileItem.key)) {
                            const selectionController = this._filesView.getController("selection");
                            const preserve = selectionController.isSelectionWithCheckboxes();
                            this._filesView.selectRows([fileItem.key], preserve)
                        }
                    };
                    _proto._setSelectedItemKeys = function(itemKeys) {
                        this._filesView.option("selectedRowKeys", itemKeys)
                    };
                    _proto._setFocusedItemKey = function(itemKey) {
                        var _this$_filesView;
                        null === (_this$_filesView = this._filesView) || void 0 === _this$_filesView ? void 0 : _this$_filesView.option("focusedRowKey", itemKey)
                    };
                    _proto.clearSelection = function() {
                        if (this._isMultipleSelectionMode()) {
                            this._filesView.clearSelection()
                        } else {
                            this._filesView.option("focusedRowIndex", -1)
                        }
                    };
                    _proto.refresh = function(options, operation) {
                        const actualOptions = {
                            dataSource: this._createDataSource()
                        };
                        if (options && Object.prototype.hasOwnProperty.call(options, "focusedItemKey")) {
                            if ((0, _type.isDefined)(options.focusedItemKey)) {
                                actualOptions.focusedRowKey = options.focusedItemKey
                            } else {
                                actualOptions.focusedRowIndex = -1
                            }
                        }
                        const hasNoScrollTarget = !(0, _type.isDefined)(actualOptions.focusedRowKey) && -1 === actualOptions.focusedRowIndex;
                        if (hasNoScrollTarget && operation === _file_items_controller.OPERATIONS.NAVIGATION) {
                            actualOptions.paging = {
                                pageIndex: 0
                            };
                            this._needResetScrollPosition = true
                        }
                        this._filesView.option(actualOptions);
                        this._refreshDeferred = new _deferred.Deferred;
                        return this._refreshDeferred.promise()
                    };
                    _proto._getScrollable = function() {
                        return this._filesView.getScrollable()
                    };
                    _proto.getSelectedItems = function() {
                        if (this._isMultipleSelectionMode()) {
                            return this._filesView.getSelectedRowsData()
                        }
                        return this._focusedItem && !this._isParentDirectoryItem(this._focusedItem) ? [this._focusedItem] : []
                    };
                    return FileManagerDetailsItemList
                }(_uiFile_manager2.default);
                var _default = FileManagerDetailsItemList;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        43785:
            /*!******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.item_list.js ***!
              \******************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _double_click = __webpack_require__( /*! ../../events/double_click */ 85272);
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _icon = __webpack_require__( /*! ../../core/utils/icon */ 44899);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _custom_store = _interopRequireDefault(__webpack_require__( /*! ../../data/custom_store */ 88036));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));

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

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let FileManagerItemListBase = function(_Widget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(FileManagerItemListBase, _Widget);

                    function FileManagerItemListBase() {
                        return _Widget.apply(this, arguments) || this
                    }
                    var _proto = FileManagerItemListBase.prototype;
                    _proto._init = function() {
                        this._initActions();
                        this._lockFocusedItemProcessing = false;
                        this._focusedItemKey = this.option("focusedItemKey");
                        _Widget.prototype._init.call(this)
                    };
                    _proto._initMarkup = function() {
                        this._needResetScrollPosition = false;
                        this.$element().addClass("dx-filemanager-files-view");
                        const dblClickEventName = (0, _index.addNamespace)(_double_click.name, "dxFileManager_open");
                        _events_engine.default.on(this.$element(), dblClickEventName, this._getItemSelector(), this._onItemDblClick.bind(this));
                        _Widget.prototype._initMarkup.call(this)
                    };
                    _proto._initActions = function() {
                        this._actions = {
                            onError: this._createActionByOption("onError"),
                            onSelectionChanged: this._createActionByOption("onSelectionChanged"),
                            onFocusedItemChanged: this._createActionByOption("onFocusedItemChanged"),
                            onSelectedItemOpened: this._createActionByOption("onSelectedItemOpened"),
                            onContextMenuShowing: this._createActionByOption("onContextMenuShowing"),
                            onItemListDataLoaded: this._createActionByOption("onItemListDataLoaded")
                        }
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_Widget.prototype._getDefaultOptions.call(this), {
                            selectionMode: "single",
                            selectedItemKeys: [],
                            focusedItemKey: void 0,
                            contextMenu: null,
                            getItems: null,
                            getItemThumbnail: null,
                            onError: null,
                            onSelectionChanged: null,
                            onFocusedItemChanged: null,
                            onSelectedItemOpened: null,
                            onContextMenuShowing: null
                        })
                    };
                    _proto._optionChanged = function(args) {
                        const name = args.name;
                        switch (name) {
                            case "selectionMode":
                            case "contextMenu":
                            case "getItems":
                            case "getItemThumbnail":
                                this.repaint();
                                break;
                            case "selectedItemKeys":
                                this._setSelectedItemKeys(args.value);
                                break;
                            case "focusedItemKey":
                                if (!this._lockFocusedItemProcessing) {
                                    this._setFocusedItemKey(args.value)
                                }
                                break;
                            case "onError":
                            case "onSelectedItemOpened":
                            case "onSelectionChanged":
                            case "onFocusedItemChanged":
                            case "onContextMenuShowing":
                            case "onItemListDataLoaded":
                                this._actions[name] = this._createActionByOption(name);
                                break;
                            default:
                                _Widget.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto._getItems = function() {
                        return this._getItemsInternal().done(itemInfos => {
                            this._itemCount = itemInfos.length;
                            if (0 === this._itemCount) {
                                this._resetFocus()
                            }
                            const parentDirectoryItem = this._findParentDirectoryItem(itemInfos);
                            this._hasParentDirectoryItem = !!parentDirectoryItem;
                            this._parentDirectoryItemKey = parentDirectoryItem ? parentDirectoryItem.fileItem.key : null
                        }).always(() => {
                            this._onDataLoaded()
                        })
                    };
                    _proto._getItemsInternal = function() {
                        const itemsGetter = this.option("getItems");
                        const itemsResult = itemsGetter ? itemsGetter() : [];
                        return (0, _deferred.when)(itemsResult)
                    };
                    _proto._raiseOnError = function(error) {
                        this._actions.onError({
                            error: error
                        })
                    };
                    _proto._raiseSelectionChanged = function(args) {
                        this._actions.onSelectionChanged(args)
                    };
                    _proto._raiseFocusedItemChanged = function(args) {
                        this._actions.onFocusedItemChanged(args)
                    };
                    _proto._raiseSelectedItemOpened = function(fileItemInfo) {
                        this._actions.onSelectedItemOpened({
                            fileItemInfo: fileItemInfo
                        })
                    };
                    _proto._raiseContextMenuShowing = function(e) {
                        this._actions.onContextMenuShowing(e)
                    };
                    _proto._raiseItemListDataLoaded = function() {
                        this._actions.onItemListDataLoaded()
                    };
                    _proto._onDataLoaded = function() {
                        var _this$_refreshDeferre;
                        this._raiseItemListDataLoaded();
                        null === (_this$_refreshDeferre = this._refreshDeferred) || void 0 === _this$_refreshDeferre ? void 0 : _this$_refreshDeferre.resolve()
                    };
                    _proto._onContentReady = function() {
                        if (this._needResetScrollPosition) {
                            this._resetScrollTopPosition();
                            this._needResetScrollPosition = false
                        }
                    };
                    _proto._tryRaiseSelectionChanged = function(_ref) {
                        let {
                            selectedItemInfos: selectedItemInfos,
                            selectedItems: selectedItems,
                            selectedItemKeys: selectedItemKeys,
                            currentSelectedItemKeys: currentSelectedItemKeys,
                            currentDeselectedItemKeys: currentDeselectedItemKeys
                        } = _ref;
                        const parentDirectoryItem = this._findParentDirectoryItem(this.getSelectedItems());
                        if (parentDirectoryItem) {
                            this._deselectItem(parentDirectoryItem)
                        }
                        let raiseEvent = !this._hasParentDirectoryItem;
                        raiseEvent = raiseEvent || this._hasValidKeys(currentSelectedItemKeys) || this._hasValidKeys(currentDeselectedItemKeys);
                        if (raiseEvent) {
                            selectedItemInfos = this._filterOutItemByPredicate(selectedItemInfos, item => item.fileItem.key === this._parentDirectoryItemKey);
                            selectedItems = this._filterOutParentDirectory(selectedItems);
                            selectedItemKeys = this._filterOutParentDirectoryKey(selectedItemKeys, true);
                            currentSelectedItemKeys = this._filterOutParentDirectoryKey(currentSelectedItemKeys, true);
                            currentDeselectedItemKeys = this._filterOutParentDirectoryKey(currentDeselectedItemKeys, true);
                            this._raiseSelectionChanged({
                                selectedItemInfos: selectedItemInfos,
                                selectedItems: selectedItems,
                                selectedItemKeys: selectedItemKeys,
                                currentSelectedItemKeys: currentSelectedItemKeys,
                                currentDeselectedItemKeys: currentDeselectedItemKeys
                            })
                        }
                    };
                    _proto._onFocusedItemChanged = function(args) {
                        if (this._focusedItemKey === args.itemKey) {
                            return
                        }
                        this._focusedItemKey = args.itemKey;
                        this._lockFocusedItemProcessing = true;
                        this.option("focusedItemKey", args.itemKey);
                        this._lockFocusedItemProcessing = false;
                        this._raiseFocusedItemChanged(args)
                    };
                    _proto._resetFocus = function() {};
                    _proto._resetScrollTopPosition = function() {
                        if (!(0, _window.hasWindow)()) {
                            return
                        }
                        setTimeout(() => {
                            var _this$_getScrollable;
                            return null === (_this$_getScrollable = this._getScrollable()) || void 0 === _this$_getScrollable ? void 0 : _this$_getScrollable.scrollTo(0)
                        })
                    };
                    _proto._getScrollable = function() {};
                    _proto._getItemThumbnail = function(fileInfo) {
                        const itemThumbnailGetter = this.option("getItemThumbnail");
                        return itemThumbnailGetter ? itemThumbnailGetter(fileInfo) : {
                            thumbnail: ""
                        }
                    };
                    _proto._getItemThumbnailContainer = function(fileInfo) {
                        const {
                            thumbnail: thumbnail,
                            cssClass: cssClass
                        } = this._getItemThumbnail(fileInfo);
                        const $itemThumbnail = (0, _icon.getImageContainer)(thumbnail).addClass(this._getItemThumbnailCssClass());
                        if (cssClass) {
                            $itemThumbnail.addClass(cssClass)
                        }
                        return $itemThumbnail
                    };
                    _proto._getItemThumbnailCssClass = function() {
                        return ""
                    };
                    _proto._getItemSelector = function() {};
                    _proto._onItemDblClick = function(e) {};
                    _proto._isDesktop = function() {
                        return "desktop" === _devices.default.real().deviceType
                    };
                    _proto._showContextMenu = function(items, element, event, target) {
                        this._contextMenu.showAt(items, element, event, target)
                    };
                    _proto._findParentDirectoryItem = function(itemInfos) {
                        for (let i = 0; i < itemInfos.length; i++) {
                            const itemInfo = itemInfos[i];
                            if (this._isParentDirectoryItem(itemInfo)) {
                                return itemInfo
                            }
                        }
                        return null
                    };
                    _proto._getFileItemsForContextMenu = function(fileItem) {
                        const result = this.getSelectedItems();
                        if (this._isParentDirectoryItem(fileItem)) {
                            result.push(fileItem)
                        }
                        return result
                    };
                    _proto._isParentDirectoryItem = function(itemInfo) {
                        return itemInfo.fileItem.isParentFolder
                    };
                    _proto._hasValidKeys = function(keys) {
                        return keys.length > 1 || 1 === keys.length && keys[0] !== this._parentDirectoryItemKey
                    };
                    _proto._filterOutParentDirectory = function(array, createNewArray) {
                        return this._filterOutItemByPredicate(array, item => item.key === this._parentDirectoryItemKey, createNewArray)
                    };
                    _proto._filterOutParentDirectoryKey = function(array, createNewArray) {
                        return this._filterOutItemByPredicate(array, key => key === this._parentDirectoryItemKey, createNewArray)
                    };
                    _proto._filterOutItemByPredicate = function(array, predicate, createNewArray) {
                        let result = array;
                        let index = -1;
                        for (let i = 0; i < array.length; i++) {
                            if (predicate(array[i])) {
                                index = i;
                                break
                            }
                        }
                        if (-1 !== index) {
                            if (createNewArray) {
                                result = [...array]
                            }
                            result.splice(index, 1)
                        }
                        return result
                    };
                    _proto._isMultipleSelectionMode = function() {
                        return "multiple" === this.option("selectionMode")
                    };
                    _proto._deselectItem = function(item) {};
                    _proto._setSelectedItemKeys = function(itemKeys) {};
                    _proto._setFocusedItemKey = function(itemKey) {};
                    _proto._createDataSource = function() {
                        return {
                            store: new _custom_store.default({
                                key: "fileItem.key",
                                load: this._getItems.bind(this)
                            })
                        }
                    };
                    _proto.getSelectedItems = function() {};
                    _proto.clearSelection = function() {};
                    _proto.selectItem = function() {};
                    _proto.refresh = function(options, operation) {};
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(FileManagerItemListBase, [{
                        key: "_contextMenu",
                        get: function() {
                            return this.option("contextMenu")
                        }
                    }]);
                    return FileManagerItemListBase
                }(_ui.default);
                var _default = FileManagerItemListBase;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        6339:
            /*!*****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.item_list.thumbnails.js ***!
              \*****************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _contextmenu = __webpack_require__( /*! ../../events/contextmenu */ 49166);
                var _uiFile_manager = __webpack_require__( /*! ./ui.file_manager.common */ 75084);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _uiFile_managerItems_listThumbnails = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.items_list.thumbnails.list_box */ 99338));
                var _uiFile_manager2 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.item_list */ 43785));
                var _file_items_controller = __webpack_require__( /*! ./file_items_controller */ 57289);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let FileManagerThumbnailsItemList = function(_FileManagerItemListB) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(FileManagerThumbnailsItemList, _FileManagerItemListB);

                    function FileManagerThumbnailsItemList() {
                        return _FileManagerItemListB.apply(this, arguments) || this
                    }
                    var _proto = FileManagerThumbnailsItemList.prototype;
                    _proto._initMarkup = function() {
                        _FileManagerItemListB.prototype._initMarkup.call(this);
                        this.$element().addClass("dx-filemanager-thumbnails");
                        const contextMenuEvent = (0, _index.addNamespace)(_contextmenu.name, "dxFileManager_thumbnails");
                        _events_engine.default.on(this.$element(), contextMenuEvent, this._onContextMenu.bind(this));
                        this._createItemList()
                    };
                    _proto._createItemList = function() {
                        const selectionMode = this._isMultipleSelectionMode() ? "multiple" : "single";
                        const $itemListContainer = (0, _renderer.default)("<div>").appendTo(this.$element());
                        this._itemList = this._createComponent($itemListContainer, _uiFile_managerItems_listThumbnails.default, {
                            dataSource: this._createDataSource(),
                            selectionMode: selectionMode,
                            selectedItemKeys: this.option("selectedItemKeys"),
                            focusedItemKey: this.option("focusedItemKey"),
                            activeStateEnabled: true,
                            hoverStateEnabled: true,
                            loopItemFocus: false,
                            focusStateEnabled: true,
                            onItemEnterKeyPressed: this._tryOpen.bind(this),
                            itemThumbnailTemplate: this._getItemThumbnailContainer.bind(this),
                            getTooltipText: this._getTooltipText.bind(this),
                            onSelectionChanged: this._onItemListSelectionChanged.bind(this),
                            onFocusedItemChanged: this._onItemListFocusedItemChanged.bind(this),
                            onContentReady: this._onContentReady.bind(this)
                        })
                    };
                    _proto._onContextMenu = function(e) {
                        e.preventDefault();
                        e.stopPropagation();
                        if (!this._isDesktop()) {
                            return
                        }
                        let items = null;
                        const targetItemElement = (0, _renderer.default)(e.target).closest(this._getItemSelector());
                        let targetItem = null;
                        if (targetItemElement.length > 0) {
                            targetItem = this._itemList.getItemByItemElement(targetItemElement);
                            this._itemList.selectItem(targetItem);
                            items = this._getFileItemsForContextMenu(targetItem)
                        }
                        const target = {
                            itemData: targetItem,
                            itemElement: targetItemElement.length ? targetItemElement : void 0
                        };
                        this._showContextMenu(items, e.target, e, target)
                    };
                    _proto._getItemThumbnailCssClass = function() {
                        return "dx-filemanager-thumbnails-item-thumbnail"
                    };
                    _proto._getItemSelector = function() {
                        return ".".concat("dx-filemanager-thumbnails-item")
                    };
                    _proto._getTooltipText = function(fileItemInfo) {
                        const item = fileItemInfo.fileItem;
                        if (item.tooltipText) {
                            return item.tooltipText
                        }
                        let text = "".concat(item.name, "\r\n");
                        if (!item.isDirectory) {
                            text += "".concat(_message.default.format("dxFileManager-listThumbnailsTooltipTextSize"), ": ").concat((0, _uiFile_manager.getDisplayFileSize)(item.size), "\r\n")
                        }
                        text += "".concat(_message.default.format("dxFileManager-listThumbnailsTooltipTextDateModified"), ": ").concat(item.dateModified);
                        return text
                    };
                    _proto._onItemDblClick = function(e) {
                        const $item = (0, _renderer.default)(e.currentTarget);
                        const item = this._itemList.getItemByItemElement($item);
                        this._tryOpen(item)
                    };
                    _proto._tryOpen = function(item) {
                        if (item) {
                            this._raiseSelectedItemOpened(item)
                        }
                    };
                    _proto._getItemsInternal = function() {
                        return _FileManagerItemListB.prototype._getItemsInternal.call(this).then(items => {
                            const deferred = new _deferred.Deferred;
                            setTimeout(() => deferred.resolve(items));
                            return deferred.promise()
                        })
                    };
                    _proto._disableDragging = function() {
                        return false
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_FileManagerItemListB.prototype._getDefaultOptions.call(this), {
                            focusStateEnabled: true
                        })
                    };
                    _proto._onItemListSelectionChanged = function(_ref) {
                        let {
                            addedItemKeys: addedItemKeys,
                            removedItemKeys: removedItemKeys
                        } = _ref;
                        const selectedItemInfos = this.getSelectedItems();
                        const selectedItems = selectedItemInfos.map(itemInfo => itemInfo.fileItem);
                        const selectedItemKeys = selectedItems.map(item => item.key);
                        this._tryRaiseSelectionChanged({
                            selectedItemInfos: selectedItemInfos,
                            selectedItems: selectedItems,
                            selectedItemKeys: selectedItemKeys,
                            currentSelectedItemKeys: addedItemKeys,
                            currentDeselectedItemKeys: removedItemKeys
                        })
                    };
                    _proto._onItemListFocusedItemChanged = function(_ref2) {
                        let {
                            item: item,
                            itemElement: itemElement
                        } = _ref2;
                        if (!this._isMultipleSelectionMode()) {
                            this._selectItemSingleSelection(item)
                        }
                        const fileSystemItem = (null === item || void 0 === item ? void 0 : item.fileItem) || null;
                        this._onFocusedItemChanged({
                            item: fileSystemItem,
                            itemKey: null === fileSystemItem || void 0 === fileSystemItem ? void 0 : fileSystemItem.key,
                            itemElement: itemElement || void 0
                        })
                    };
                    _proto._getScrollable = function() {
                        return this._itemList.getScrollable()
                    };
                    _proto._setSelectedItemKeys = function(itemKeys) {
                        this._itemList.option("selectedItemKeys", itemKeys)
                    };
                    _proto._setFocusedItemKey = function(itemKey) {
                        this._itemList.option("focusedItemKey", itemKey)
                    };
                    _proto.refresh = function(options, operation) {
                        const actualOptions = {
                            dataSource: this._createDataSource()
                        };
                        if (options && Object.prototype.hasOwnProperty.call(options, "focusedItemKey")) {
                            actualOptions.focusedItemKey = options.focusedItemKey
                        }
                        if (options && Object.prototype.hasOwnProperty.call(options, "selectedItemKeys")) {
                            actualOptions.selectedItemKeys = options.selectedItemKeys
                        }
                        if (!(0, _type.isDefined)(actualOptions.focusedItemKey) && operation === _file_items_controller.OPERATIONS.NAVIGATION) {
                            this._needResetScrollPosition = true
                        }
                        this._itemList.option(actualOptions);
                        this._refreshDeferred = new _deferred.Deferred;
                        return this._refreshDeferred.promise()
                    };
                    _proto._deselectItem = function(item) {
                        const itemElement = this._itemList.getItemElementByItem(item);
                        this._itemList.unselectItem(itemElement)
                    };
                    _proto._selectItemSingleSelection = function(item) {
                        if (item) {
                            this._itemList.selectItem(item)
                        } else {
                            this._itemList.clearSelection()
                        }
                    };
                    _proto.clearSelection = function() {
                        this._itemList.clearSelection()
                    };
                    _proto.getSelectedItems = function() {
                        return this._itemList.getSelectedItems()
                    };
                    return FileManagerThumbnailsItemList
                }(_uiFile_manager2.default);
                var _default = FileManagerThumbnailsItemList;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        99338:
            /*!***************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.items_list.thumbnails.list_box.js ***!
              \***************************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _hold = _interopRequireDefault(__webpack_require__( /*! ../../events/hold */ 11699));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _bindable_template = __webpack_require__( /*! ../../core/templates/bindable_template */ 93280);
                var _scroll_view = _interopRequireDefault(__webpack_require__( /*! ../scroll_view */ 4741));
                var _uiCollection_widget = _interopRequireDefault(__webpack_require__( /*! ../collection/ui.collection_widget.edit */ 11050));
                var _selection = _interopRequireDefault(__webpack_require__( /*! ../selection/selection */ 68198));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const FILE_MANAGER_THUMBNAILS_LIST_BOX_HOLD_EVENT_NAME = (0, _index.addNamespace)(_hold.default.name, "dxFileManagerThumbnailsListBox");
                let FileManagerThumbnailListBox = function(_CollectionWidget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(FileManagerThumbnailListBox, _CollectionWidget);

                    function FileManagerThumbnailListBox() {
                        return _CollectionWidget.apply(this, arguments) || this
                    }
                    var _proto = FileManagerThumbnailListBox.prototype;
                    _proto._initMarkup = function() {
                        this._initActions();
                        this._lockFocusedItemProcessing = false;
                        this.$element().addClass("dx-filemanager-thumbnails-view-port");
                        this._renderScrollView();
                        this._renderItemsContainer();
                        this._createScrollViewControl();
                        _CollectionWidget.prototype._initMarkup.call(this);
                        this.onFocusedItemChanged = this._onFocusedItemChanged.bind(this);
                        this._layoutUtils = new ListBoxLayoutUtils(this._scrollView, this.$element(), this._$itemContainer, this.itemElements().first());
                        this._syncFocusedItemKey()
                    };
                    _proto._initActions = function() {
                        this._actions = {
                            onItemEnterKeyPressed: this._createActionByOption("onItemEnterKeyPressed"),
                            onFocusedItemChanged: this._createActionByOption("onFocusedItemChanged")
                        }
                    };
                    _proto._initTemplates = function() {
                        _CollectionWidget.prototype._initTemplates.call(this);
                        this._itemThumbnailTemplate = this.option("itemThumbnailTemplate");
                        this._getTooltipText = this.option("getTooltipText");
                        this._templateManager.addDefaultTemplates({
                            item: new _bindable_template.BindableTemplate(function($container, data, itemModel) {
                                const $itemElement = this._getDefaultItemTemplate(itemModel, $container);
                                $container.append($itemElement)
                            }.bind(this), ["fileItem"], this.option("integrationOptions.watchMethod"))
                        })
                    };
                    _proto._createScrollViewControl = function() {
                        if (!this._scrollView) {
                            this._scrollView = this._createComponent(this._$scrollView, _scroll_view.default, {
                                scrollByContent: true,
                                scrollByThumb: true,
                                useKeyboard: false,
                                showScrollbar: "onHover"
                            })
                        }
                    };
                    _proto._renderScrollView = function() {
                        if (!this._$scrollView) {
                            this._$scrollView = (0, _renderer.default)("<div>").appendTo(this.$element())
                        }
                    };
                    _proto.getScrollable = function() {
                        return this._scrollView
                    };
                    _proto._renderItemsContainer = function() {
                        if (!this._$itemContainer) {
                            this._$itemContainer = (0, _renderer.default)("<div>").addClass("dx-filemanager-thumbnails-container").appendTo(this._$scrollView)
                        }
                    };
                    _proto._render = function() {
                        _CollectionWidget.prototype._render.call(this);
                        this._detachEventHandlers();
                        this._attachEventHandlers()
                    };
                    _proto._clean = function() {
                        this._detachEventHandlers();
                        _CollectionWidget.prototype._clean.call(this)
                    };
                    _proto._supportedKeys = function() {
                        return (0, _extend.extend)(_CollectionWidget.prototype._supportedKeys.call(this), {
                            upArrow(e) {
                                this._beforeKeyProcessing(e);
                                this._processArrowKeys(-1, false, e)
                            },
                            downArrow(e) {
                                this._beforeKeyProcessing(e);
                                this._processArrowKeys(1, false, e)
                            },
                            home(e) {
                                this._beforeKeyProcessing(e);
                                this._processHomeEndKeys(0, true, e)
                            },
                            end(e) {
                                this._beforeKeyProcessing(e);
                                this._processHomeEndKeys(this._getItemsLength() - 1, true, e)
                            },
                            pageUp(e) {
                                this._beforeKeyProcessing(e);
                                this._processPageChange(true, e)
                            },
                            pageDown(e) {
                                this._beforeKeyProcessing(e);
                                this._processPageChange(false, e)
                            },
                            enter(e) {
                                this._beforeKeyProcessing(e);
                                this._actions.onItemEnterKeyPressed(this._getFocusedItem())
                            },
                            A(e) {
                                this._beforeKeyProcessing(e);
                                if ((0, _index.isCommandKeyPressed)(e)) {
                                    this.selectAll()
                                }
                            }
                        })
                    };
                    _proto._beforeKeyProcessing = function(e) {
                        e.preventDefault();
                        this._layoutUtils.reset()
                    };
                    _proto._processArrowKeys = function(offset, horizontal, eventArgs) {
                        const item = this._getFocusedItem();
                        if (item) {
                            if (!horizontal) {
                                const layout = this._layoutUtils.getLayoutModel();
                                if (!layout) {
                                    return
                                }
                                offset *= layout.itemPerRowCount
                            }
                            const newItemIndex = this._getIndexByItem(item) + offset;
                            this._focusItemByIndex(newItemIndex, true, eventArgs)
                        }
                    };
                    _proto._processHomeEndKeys = function(index, scrollToItem, eventArgs) {
                        this._focusItemByIndex(index, scrollToItem, eventArgs)
                    };
                    _proto._processPageChange = function(pageUp, eventArgs) {
                        const item = this._getFocusedItem();
                        if (!item) {
                            return
                        }
                        const layout = this._layoutUtils.getLayoutModel();
                        if (!layout) {
                            return
                        }
                        const itemLayout = this._layoutUtils.createItemLayoutModel(this._getIndexByItem(item));
                        const rowOffset = pageUp ? layout.rowPerPageRate : -layout.rowPerPageRate;
                        const newRowRate = itemLayout.itemRowIndex - rowOffset;
                        const roundFunc = pageUp ? Math.ceil : Math.floor;
                        const newRowIndex = roundFunc(newRowRate);
                        let newItemIndex = newRowIndex * layout.itemPerRowCount + itemLayout.itemColumnIndex;
                        if (newItemIndex < 0) {
                            newItemIndex = 0
                        } else if (newItemIndex >= this._getItemsLength()) {
                            newItemIndex = this._getItemsLength() - 1
                        }
                        this._focusItemByIndex(newItemIndex, true, eventArgs)
                    };
                    _proto._processLongTap = function(e) {
                        const $targetItem = this._closestItemElement((0, _renderer.default)(e.target));
                        const itemIndex = this._getIndexByItemElement($targetItem);
                        this._selection.changeItemSelection(itemIndex, {
                            control: true
                        })
                    };
                    _proto._attachEventHandlers = function() {
                        if ("multiple" === this.option("selectionMode")) {
                            _events_engine.default.on(this._itemContainer(), FILE_MANAGER_THUMBNAILS_LIST_BOX_HOLD_EVENT_NAME, ".".concat(this._itemContentClass()), e => {
                                this._processLongTap(e);
                                e.stopPropagation()
                            })
                        }
                        _events_engine.default.on(this._itemContainer(), "mousedown selectstart", e => {
                            if (e.shiftKey) {
                                e.preventDefault()
                            }
                        })
                    };
                    _proto._detachEventHandlers = function() {
                        _events_engine.default.off(this._itemContainer(), FILE_MANAGER_THUMBNAILS_LIST_BOX_HOLD_EVENT_NAME);
                        _events_engine.default.off(this._itemContainer(), "mousedown selectstart")
                    };
                    _proto._itemContainer = function() {
                        return this._$itemContainer
                    };
                    _proto._itemClass = function() {
                        return "dx-filemanager-thumbnails-item"
                    };
                    _proto._itemDataKey = function() {
                        return "dxFileManagerItemData"
                    };
                    _proto._getDefaultItemTemplate = function(fileItemInfo, $itemElement) {
                        $itemElement.attr("title", this._getTooltipText(fileItemInfo));
                        const $itemThumbnail = this._itemThumbnailTemplate(fileItemInfo);
                        const $itemSpacer = (0, _renderer.default)("<div>").addClass("dx-filemanager-thumbnails-item-spacer");
                        const $itemName = (0, _renderer.default)("<div>").addClass("dx-filemanager-thumbnails-item-name").text(fileItemInfo.fileItem.name);
                        $itemElement.append($itemThumbnail, $itemSpacer, $itemName)
                    };
                    _proto._itemSelectHandler = function(e) {
                        let options = {};
                        if ("multiple" === this.option("selectionMode")) {
                            if (!this._isPreserveSelectionMode) {
                                this._isPreserveSelectionMode = (0, _index.isCommandKeyPressed)(e) || e.shiftKey
                            }
                            options = {
                                control: this._isPreserveSelectionMode,
                                shift: e.shiftKey
                            }
                        }
                        const index = this._getIndexByItemElement(e.currentTarget);
                        this._selection.changeItemSelection(index, options)
                    };
                    _proto._initSelectionModule = function() {
                        _CollectionWidget.prototype._initSelectionModule.call(this);
                        const options = (0, _extend.extend)(this._selection.options, {
                            selectedKeys: this.option("selectedItemKeys"),
                            onSelectionChanged: args => {
                                this.option("selectedItems", this._getItemsByKeys(args.selectedItemKeys, args.selectedItems));
                                this._updateSelectedItems(args)
                            }
                        });
                        this._selection = new _selection.default(options)
                    };
                    _proto._updateSelectedItems = function(args) {
                        const addedItemKeys = args.addedItemKeys;
                        const removedItemKeys = args.removedItemKeys;
                        if (this._rendered && (addedItemKeys.length || removedItemKeys.length)) {
                            const selectionChangePromise = this._selectionChangePromise;
                            if (!this._rendering) {
                                const addedSelection = [];
                                let normalizedIndex;
                                const removedSelection = [];
                                this._editStrategy.beginCache();
                                for (let i = 0; i < removedItemKeys.length; i++) {
                                    normalizedIndex = this._getIndexByKey(removedItemKeys[i]);
                                    removedSelection.push(normalizedIndex);
                                    this._removeSelection(normalizedIndex)
                                }
                                for (let i = 0; i < addedItemKeys.length; i++) {
                                    normalizedIndex = this._getIndexByKey(addedItemKeys[i]);
                                    addedSelection.push(normalizedIndex);
                                    this._addSelection(normalizedIndex)
                                }
                                this._editStrategy.endCache();
                                this._updateSelection(addedSelection, removedSelection)
                            }(0, _deferred.when)(selectionChangePromise).done(() => this._fireSelectionChangeEvent(args))
                        }
                    };
                    _proto._fireSelectionChangeEvent = function(args) {
                        this._createActionByOption("onSelectionChanged", {
                            excludeValidators: ["disabled", "readOnly"]
                        })(args)
                    };
                    _proto._updateSelection = function(addedSelection, removedSelection) {
                        const selectedItemsCount = this.getSelectedItems().length;
                        if (0 === selectedItemsCount) {
                            this._isPreserveSelectionMode = false
                        }
                    };
                    _proto._normalizeSelectedItems = function() {
                        const newKeys = this._getKeysByItems(this.option("selectedItems"));
                        const oldKeys = this._selection.getSelectedItemKeys();
                        if (!this._compareKeys(oldKeys, newKeys)) {
                            this._selection.setSelection(newKeys)
                        }
                        return (new _deferred.Deferred).resolve().promise()
                    };
                    _proto._focusOutHandler = function() {};
                    _proto._getItems = function() {
                        return this.option("items") || []
                    };
                    _proto._getItemsLength = function() {
                        return this._getItems().length
                    };
                    _proto._getIndexByItemElement = function(itemElement) {
                        return this._editStrategy.getNormalizedIndex(itemElement)
                    };
                    _proto._getItemByIndex = function(index) {
                        return this._getItems()[index]
                    };
                    _proto._getFocusedItem = function() {
                        return this.getItemByItemElement(this.option("focusedElement"))
                    };
                    _proto._focusItem = function(item, scrollToItem) {
                        this.option("focusedElement", this.getItemElementByItem(item));
                        if (scrollToItem) {
                            this._layoutUtils.scrollToItem(this._getIndexByItem(item))
                        }
                    };
                    _proto._focusItemByIndex = function(index, scrollToItem, eventArgs) {
                        if (index >= 0 && index < this._getItemsLength()) {
                            const item = this._getItemByIndex(index);
                            this._focusItem(item, scrollToItem, eventArgs)
                        }
                    };
                    _proto._syncFocusedItemKey = function() {
                        if (!this._syncFocusedItemKeyDeferred) {
                            this._syncFocusedItemKeyDeferred = new _deferred.Deferred
                        }
                        const deferred = this._syncFocusedItemKeyDeferred;
                        if (this._dataSource && this._dataSource.isLoading()) {
                            return deferred.promise()
                        }
                        const focusedItemKey = this.option("focusedItemKey");
                        if ((0, _type.isDefined)(focusedItemKey)) {
                            const items = this.option("items");
                            const focusedItem = items.find(item => this.keyOf(item) === focusedItemKey);
                            if (focusedItem) {
                                this._focusItem(focusedItem, true);
                                deferred.resolve()
                            } else {
                                this.option("focusedItemKey", void 0);
                                deferred.reject()
                            }
                        } else {
                            deferred.resolve()
                        }
                        this._syncFocusedItemKeyDeferred = null;
                        return deferred.promise()
                    };
                    _proto._onFocusedItemChanged = function() {
                        const focusedItem = this._getFocusedItem();
                        const newFocusedItemKey = this.keyOf(focusedItem);
                        const oldFocusedItemKey = this.option("focusedItemKey");
                        if (newFocusedItemKey !== oldFocusedItemKey) {
                            this._lockFocusedItemProcessing = true;
                            this.option("focusedItemKey", newFocusedItemKey);
                            this._lockFocusedItemProcessing = false;
                            this._raiseFocusedItemChanged(focusedItem)
                        }
                    };
                    _proto._raiseFocusedItemChanged = function(focusedItem) {
                        const args = {
                            item: focusedItem,
                            itemElement: this.option("focusedElement")
                        };
                        this._actions.onFocusedItemChanged(args)
                    };
                    _proto._changeItemSelection = function(item, select) {
                        if (this.isItemSelected(item) === select) {
                            return
                        }
                        const itemElement = this.getItemElementByItem(item);
                        const index = this._getIndexByItemElement(itemElement);
                        this._selection.changeItemSelection(index, {
                            control: this._isPreserveSelectionMode
                        })
                    };
                    _proto._chooseSelectOption = function() {
                        return "selectedItemKeys"
                    };
                    _proto.getSelectedItems = function() {
                        return this._selection.getSelectedItems()
                    };
                    _proto.getItemElementByItem = function(item) {
                        return this._editStrategy.getItemElement(item)
                    };
                    _proto.getItemByItemElement = function(itemElement) {
                        return this._getItemByIndex(this._getIndexByItemElement(itemElement))
                    };
                    _proto.selectAll = function() {
                        if ("multiple" !== this.option("selectionMode")) {
                            return
                        }
                        this._selection.selectAll();
                        this._isPreserveSelectionMode = true
                    };
                    _proto.selectItem = function(item) {
                        this._changeItemSelection(item, true)
                    };
                    _proto.deselectItem = function(item) {
                        this._changeItemSelection(item, false)
                    };
                    _proto.clearSelection = function() {
                        this._selection.deselectAll()
                    };
                    _proto._optionChanged = function(args) {
                        switch (args.name) {
                            case "items":
                                if (this._layoutUtils) {
                                    this._layoutUtils.updateItems(this.itemElements().first())
                                }
                                _CollectionWidget.prototype._optionChanged.call(this, args);
                                break;
                            case "focusedItemKey":
                                if (this._lockFocusedItemProcessing) {
                                    break
                                }
                                if ((0, _type.isDefined)(args.value)) {
                                    this._syncFocusedItemKey().done(() => {
                                        const focusedItem = this._getFocusedItem();
                                        this._raiseFocusedItemChanged(focusedItem)
                                    })
                                } else {
                                    this.option("focusedElement", null);
                                    this._raiseFocusedItemChanged(null)
                                }
                                break;
                            case "onItemEnterKeyPressed":
                            case "onFocusedItemChanged":
                                this._actions[args.name] = this._createActionByOption(args.name);
                                break;
                            default:
                                _CollectionWidget.prototype._optionChanged.call(this, args)
                        }
                    };
                    return FileManagerThumbnailListBox
                }(_uiCollection_widget.default);
                let ListBoxLayoutUtils = function() {
                    function ListBoxLayoutUtils(scrollView, $viewPort, $itemContainer, $item) {
                        this._layoutModel = null;
                        this._scrollView = scrollView;
                        this._$viewPort = $viewPort;
                        this._$itemContainer = $itemContainer;
                        this._$item = $item
                    }
                    var _proto2 = ListBoxLayoutUtils.prototype;
                    _proto2.updateItems = function($item) {
                        this._$item = $item
                    };
                    _proto2.reset = function() {
                        this._layoutModel = null
                    };
                    _proto2.getLayoutModel = function() {
                        if (!this._layoutModel) {
                            this._layoutModel = this._createLayoutModel()
                        }
                        return this._layoutModel
                    };
                    _proto2._createLayoutModel = function() {
                        if (!this._$item) {
                            return null
                        }
                        const itemWidth = (0, _size.getOuterWidth)(this._$item, true);
                        if (0 === itemWidth) {
                            return null
                        }
                        const itemHeight = (0, _size.getOuterHeight)(this._$item, true);
                        const viewPortWidth = (0, _size.getInnerWidth)(this._$itemContainer);
                        const viewPortHeight = (0, _size.getInnerHeight)(this._$viewPort);
                        const viewPortScrollTop = this._scrollView.scrollTop();
                        const viewPortScrollBottom = viewPortScrollTop + viewPortHeight;
                        const itemPerRowCount = Math.floor(viewPortWidth / itemWidth);
                        const rowPerPageRate = viewPortHeight / itemHeight;
                        return {
                            itemWidth: itemWidth,
                            itemHeight: itemHeight,
                            viewPortWidth: viewPortWidth,
                            viewPortHeight: viewPortHeight,
                            viewPortScrollTop: viewPortScrollTop,
                            viewPortScrollBottom: viewPortScrollBottom,
                            itemPerRowCount: itemPerRowCount,
                            rowPerPageRate: rowPerPageRate
                        }
                    };
                    _proto2.createItemLayoutModel = function(index) {
                        const layout = this.getLayoutModel();
                        if (!layout) {
                            return null
                        }
                        const itemRowIndex = Math.floor(index / layout.itemPerRowCount);
                        const itemColumnIndex = index % layout.itemPerRowCount;
                        const itemTop = itemRowIndex * layout.itemHeight;
                        const itemBottom = itemTop + layout.itemHeight;
                        return {
                            itemRowIndex: itemRowIndex,
                            itemColumnIndex: itemColumnIndex,
                            itemTop: itemTop,
                            itemBottom: itemBottom
                        }
                    };
                    _proto2.scrollToItem = function(index) {
                        const layout = this.getLayoutModel();
                        if (!layout) {
                            return
                        }
                        const itemRowIndex = Math.floor(index / layout.itemPerRowCount);
                        const itemTop = itemRowIndex * layout.itemHeight;
                        const itemBottom = itemTop + layout.itemHeight;
                        let newScrollTop = layout.viewPortScrollTop;
                        if (itemTop < layout.viewPortScrollTop) {
                            newScrollTop = itemTop
                        } else if (itemBottom > layout.viewPortScrollBottom) {
                            newScrollTop = itemBottom - layout.viewPortHeight
                        }
                        this._scrollView.scrollTo(newScrollTop)
                    };
                    return ListBoxLayoutUtils
                }();
                var _default = FileManagerThumbnailListBox;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        32737:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.js ***!
              \********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _notify = _interopRequireDefault(__webpack_require__( /*! ../notify */ 59958));
                var _uiFile_manager = __webpack_require__( /*! ./ui.file_manager.common */ 75084);
                var _file_items_controller = __webpack_require__( /*! ./file_items_controller */ 57289);
                var _uiFile_manager2 = __webpack_require__( /*! ./ui.file_manager.command_manager */ 77311);
                var _uiFile_manager3 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.context_menu */ 2681));
                var _uiFile_manager4 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.files_tree_view */ 48156));
                var _uiFile_managerItem_list = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.item_list.details */ 99386));
                var _uiFile_managerItem_list2 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.item_list.thumbnails */ 6339));
                var _uiFile_manager5 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.toolbar */ 70166));
                var _uiFile_manager6 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.notification */ 17723));
                var _uiFile_manager7 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.editing */ 86471));
                var _uiFile_manager8 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.breadcrumbs */ 47565));
                var _uiFile_manager9 = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.adaptivity */ 52666));
                var _utils = __webpack_require__( /*! ../../core/options/utils */ 45434);
                var _comparator = __webpack_require__( /*! ../../core/utils/comparator */ 49036);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const VIEW_AREAS_folders = "navPane",
                    VIEW_AREAS_items = "itemView";
                let FileManager = function(_Widget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(FileManager, _Widget);

                    function FileManager() {
                        return _Widget.apply(this, arguments) || this
                    }
                    var _proto = FileManager.prototype;
                    _proto._initTemplates = function() {};
                    _proto._init = function() {
                        _Widget.prototype._init.call(this);
                        this._initActions();
                        this._providerUpdateDeferred = null;
                        this._lockCurrentPathProcessing = false;
                        this._wasRendered = false;
                        this._controller = new _file_items_controller.FileItemsController({
                            currentPath: this.option("currentPath"),
                            currentPathKeys: this.option("currentPathKeys"),
                            rootText: this.option("rootFolderName"),
                            fileProvider: this.option("fileSystemProvider"),
                            allowedFileExtensions: this.option("allowedFileExtensions"),
                            uploadMaxFileSize: this.option("upload").maxFileSize,
                            uploadChunkSize: this.option("upload").chunkSize,
                            onInitialized: this._onControllerInitialized.bind(this),
                            onDataLoading: this._onDataLoading.bind(this),
                            onSelectedDirectoryChanged: this._onSelectedDirectoryChanged.bind(this),
                            onPathPotentiallyChanged: this._checkPathActuality.bind(this),
                            editingEvents: this._actions.editing
                        })
                    };
                    _proto._initMarkup = function() {
                        _Widget.prototype._initMarkup.call(this);
                        this._firstItemViewLoad = true;
                        this._lockSelectionProcessing = false;
                        this._lockFocusedItemProcessing = false;
                        this._itemKeyToFocus = void 0;
                        this._loadedWidgets = [];
                        this._commandManager = new _uiFile_manager2.FileManagerCommandManager(this.option("permissions"));
                        this.$element().addClass("dx-filemanager");
                        if (this._wasRendered) {
                            this._prepareToLoad()
                        } else {
                            this._wasRendered = true
                        }
                        this._createNotificationControl();
                        this._initCommandManager()
                    };
                    _proto._createNotificationControl = function() {
                        const $notificationControl = (0, _renderer.default)("<div>").addClass("dx-filemanager-notification-container").appendTo(this.$element());
                        this._notificationControl = this._createComponent($notificationControl, _uiFile_manager6.default, {
                            progressPanelContainer: this.$element(),
                            contentTemplate: (container, notificationControl) => this._createWrapper(container, notificationControl),
                            onActionProgress: e => this._onActionProgress(e),
                            positionTarget: ".".concat("dx-filemanager-container"),
                            showProgressPanel: this.option("notifications.showPanel"),
                            showNotificationPopup: this.option("notifications.showPopup")
                        })
                    };
                    _proto._createWrapper = function(container, notificationControl) {
                        this._$wrapper = (0, _renderer.default)("<div>").addClass("dx-filemanager-wrapper").appendTo(container);
                        this._createEditing(notificationControl);
                        const $toolbar = (0, _renderer.default)("<div>").appendTo(this._$wrapper);
                        this._toolbar = this._createComponent($toolbar, _uiFile_manager5.default, {
                            commandManager: this._commandManager,
                            generalItems: this.option("toolbar.items"),
                            fileItems: this.option("toolbar.fileSelectionItems"),
                            itemViewMode: this.option("itemView").mode,
                            onItemClick: args => this._actions.onToolbarItemClick(args)
                        });
                        this._createAdaptivityControl()
                    };
                    _proto._createAdaptivityControl = function() {
                        const $container = (0, _renderer.default)("<div>").addClass("dx-filemanager-container").appendTo(this._$wrapper);
                        this._adaptivityControl = this._createComponent($container, _uiFile_manager9.default, {
                            drawerTemplate: container => this._createFilesTreeView(container),
                            contentTemplate: container => this._createItemsPanel(container),
                            onAdaptiveStateChanged: e => this._onAdaptiveStateChanged(e)
                        });
                        this._editing.setUploaderSplitterElement(this._adaptivityControl.getSplitterElement())
                    };
                    _proto._createEditing = function(notificationControl) {
                        const $editingContainer = (0, _renderer.default)("<div>").addClass("dx-filemanager-editing-container").appendTo(this.$element());
                        this._editing = this._createComponent($editingContainer, _uiFile_manager7.default, {
                            controller: this._controller,
                            model: {
                                getMultipleSelectedItems: this._getSelectedItemInfos.bind(this)
                            },
                            getItemThumbnail: this._getItemThumbnailInfo.bind(this),
                            notificationControl: notificationControl,
                            uploadDropZonePlaceholderContainer: this.$element(),
                            rtlEnabled: this.option("rtlEnabled"),
                            onSuccess: _ref => {
                                let {
                                    updatedOnlyFiles: updatedOnlyFiles
                                } = _ref;
                                return this._redrawComponent(updatedOnlyFiles)
                            },
                            onError: e => this._onEditingError(e)
                        })
                    };
                    _proto._createItemsPanel = function($container) {
                        this._$itemsPanel = (0, _renderer.default)("<div>").addClass("dx-filemanager-items-panel").appendTo($container);
                        this._createBreadcrumbs(this._$itemsPanel);
                        this._createItemView(this._$itemsPanel);
                        this._updateUploadDropZone()
                    };
                    _proto._updateUploadDropZone = function() {
                        const dropZone = this._commandManager.isCommandAvailable("upload") ? this._$itemsPanel : (0, _renderer.default)();
                        this._editing.setUploaderDropZone(dropZone)
                    };
                    _proto._createFilesTreeView = function(container) {
                        this._filesTreeViewContextMenu = this._createContextMenu(false, VIEW_AREAS_folders);
                        const $filesTreeView = (0, _renderer.default)("<div>").addClass("dx-filemanager-dirs-panel").appendTo(container);
                        this._filesTreeView = this._createComponent($filesTreeView, _uiFile_manager4.default, {
                            storeExpandedState: true,
                            contextMenu: this._filesTreeViewContextMenu,
                            getDirectories: this.getDirectories.bind(this),
                            getCurrentDirectory: this._getCurrentDirectory.bind(this),
                            onDirectoryClick: _ref2 => {
                                let {
                                    itemData: itemData
                                } = _ref2;
                                return this._setCurrentDirectory(itemData)
                            },
                            onItemListDataLoaded: () => this._tryEndLoading(VIEW_AREAS_folders)
                        });
                        this._filesTreeView.updateCurrentDirectory()
                    };
                    _proto._createItemView = function($container, viewMode) {
                        this._itemViewContextMenu = this._createContextMenu(true, VIEW_AREAS_items);
                        const itemViewOptions = this.option("itemView");
                        const options = {
                            selectionMode: this.option("selectionMode"),
                            selectedItemKeys: this.option("selectedItemKeys"),
                            focusedItemKey: this.option("focusedItemKey"),
                            contextMenu: this._itemViewContextMenu,
                            getItems: this._getItemViewItems.bind(this),
                            onError: _ref3 => {
                                let {
                                    error: error
                                } = _ref3;
                                return this._showError(error)
                            },
                            onSelectionChanged: this._onItemViewSelectionChanged.bind(this),
                            onFocusedItemChanged: this._onItemViewFocusedItemChanged.bind(this),
                            onSelectedItemOpened: this._onSelectedItemOpened.bind(this),
                            onContextMenuShowing: e => this._onContextMenuShowing(VIEW_AREAS_items, e),
                            onItemListItemsLoaded: () => this._tryEndLoading(VIEW_AREAS_items),
                            getItemThumbnail: this._getItemThumbnailInfo.bind(this),
                            customizeDetailColumns: this.option("customizeDetailColumns"),
                            detailColumns: this.option("itemView.details.columns")
                        };
                        const $itemView = (0, _renderer.default)("<div>").appendTo($container);
                        viewMode = viewMode || itemViewOptions.mode;
                        const widgetClass = "thumbnails" === viewMode ? _uiFile_managerItem_list2.default : _uiFile_managerItem_list.default;
                        this._itemView = this._createComponent($itemView, widgetClass, options)
                    };
                    _proto._createBreadcrumbs = function($container) {
                        const $breadcrumbs = (0, _renderer.default)("<div>").appendTo($container);
                        this._breadcrumbs = this._createComponent($breadcrumbs, _uiFile_manager8.default, {
                            rootFolderDisplayName: this.option("rootFolderName"),
                            onCurrentDirectoryChanging: _ref4 => {
                                let {
                                    currentDirectory: currentDirectory
                                } = _ref4;
                                return this._setCurrentDirectory(currentDirectory, true)
                            }
                        });
                        this._breadcrumbs.setCurrentDirectory(this._getCurrentDirectory())
                    };
                    _proto._createContextMenu = function(isolateCreationItemCommands, viewArea) {
                        const $contextMenu = (0, _renderer.default)("<div>").appendTo(this._$wrapper);
                        return this._createComponent($contextMenu, _uiFile_manager3.default, {
                            commandManager: this._commandManager,
                            items: this.option("contextMenu.items"),
                            onItemClick: args => this._actions.onContextMenuItemClick(args),
                            onContextMenuShowing: e => this._onContextMenuShowing(viewArea, e),
                            isolateCreationItemCommands: isolateCreationItemCommands,
                            viewArea: viewArea
                        })
                    };
                    _proto._initCommandManager = function() {
                        const actions = (0, _extend.extend)(this._editing.getCommandActions(), {
                            refresh: () => this._refreshAndShowProgress(),
                            thumbnails: () => this.option("itemView.mode", "thumbnails"),
                            details: () => this.option("itemView.mode", "details"),
                            clearSelection: () => this._clearSelection(),
                            showNavPane: () => this._adaptivityControl.toggleDrawer()
                        });
                        this._commandManager.registerActions(actions)
                    };
                    _proto._onItemViewSelectionChanged = function(_ref5) {
                        let {
                            selectedItemInfos: selectedItemInfos,
                            selectedItems: selectedItems,
                            selectedItemKeys: selectedItemKeys,
                            currentSelectedItemKeys: currentSelectedItemKeys,
                            currentDeselectedItemKeys: currentDeselectedItemKeys
                        } = _ref5;
                        this._lockSelectionProcessing = true;
                        this.option("selectedItemKeys", selectedItemKeys);
                        this._lockSelectionProcessing = false;
                        this._actions.onSelectionChanged({
                            selectedItems: selectedItems,
                            selectedItemKeys: selectedItemKeys,
                            currentSelectedItemKeys: currentSelectedItemKeys,
                            currentDeselectedItemKeys: currentDeselectedItemKeys
                        });
                        this._updateToolbar(selectedItemInfos)
                    };
                    _proto._onItemViewFocusedItemChanged = function(e) {
                        this._lockFocusedItemProcessing = true;
                        this.option("focusedItemKey", e.itemKey);
                        this._lockFocusedItemProcessing = false;
                        this._actions.onFocusedItemChanged({
                            item: e.item,
                            itemElement: e.itemElement
                        })
                    };
                    _proto._onAdaptiveStateChanged = function(_ref6) {
                        let {
                            enabled: enabled
                        } = _ref6;
                        this._commandManager.setCommandEnabled("showNavPane", enabled);
                        this._updateToolbar()
                    };
                    _proto._onActionProgress = function(_ref7) {
                        let {
                            message: message,
                            status: status
                        } = _ref7;
                        this._toolbar.updateRefreshItem(message, status);
                        this._updateToolbar()
                    };
                    _proto._onEditingError = function(e) {
                        const args = (0, _uiFile_manager.extendAttributes)({}, e, ["errorCode", "errorText", "fileSystemItem"]);
                        this._actions.onErrorOccurred(args);
                        e.errorText = args.errorText
                    };
                    _proto._refreshAndShowProgress = function() {
                        this._prepareToLoad();
                        return (0, _deferred.when)(this._notificationControl.tryShowProgressPanel(), this._controller.refresh()).then(() => this._filesTreeView.refresh())
                    };
                    _proto._isAllWidgetsLoaded = function() {
                        return 2 === this._loadedWidgets.length && -1 !== this._loadedWidgets.indexOf(VIEW_AREAS_folders) && -1 !== this._loadedWidgets.indexOf(VIEW_AREAS_items)
                    };
                    _proto._tryEndLoading = function(area) {
                        this._loadedWidgets.push(area);
                        if (this._isAllWidgetsLoaded()) {
                            this._controller.endSingleLoad()
                        }
                    };
                    _proto._prepareToLoad = function() {
                        this._loadedWidgets = [];
                        this._controller.startSingleLoad()
                    };
                    _proto._updateToolbar = function(selectedItems) {
                        const items = selectedItems || this._getSelectedItemInfos();
                        this._toolbar.option("contextItems", (0, _common.ensureDefined)(items, []))
                    };
                    _proto._switchView = function(viewMode) {
                        this._disposeWidget(this._itemView.option("contextMenu"));
                        this._disposeWidget(this._itemView);
                        this._createItemView(this._$itemsPanel, viewMode);
                        this._toolbar.option({
                            itemViewMode: viewMode
                        })
                    };
                    _proto._disposeWidget = function(widget) {
                        widget.dispose();
                        widget.$element().remove()
                    };
                    _proto._clearSelection = function() {
                        this._itemView.clearSelection()
                    };
                    _proto._showError = function(message) {
                        this._showNotification(message, false)
                    };
                    _proto._showNotification = function(message, isSuccess) {
                        (0, _notify.default)({
                            message: message,
                            width: 450
                        }, isSuccess ? "success" : "error", 5e3)
                    };
                    _proto._redrawComponent = function(onlyFileItemsView) {
                        this._itemView.refresh().then(() => !onlyFileItemsView && this._filesTreeView.refresh())
                    };
                    _proto._getItemViewItems = function() {
                        const showFolders = this.option("itemView").showFolders;
                        let result = this._controller.getCurrentItems(!showFolders);
                        this._updateToolbarWithSelectionOnFirstLoad(result);
                        if (this.option("itemView.showParentFolder")) {
                            result = (0, _deferred.when)(result).then(items => this._getPreparedItemViewItems(items))
                        }
                        return result
                    };
                    _proto._updateToolbarWithSelectionOnFirstLoad = function(itemsResult) {
                        if (!this._firstItemViewLoad) {
                            return
                        }
                        this._firstItemViewLoad = false;
                        const selectedItemKeys = this.option("selectedItemKeys");
                        if (selectedItemKeys.length > 0) {
                            (0, _deferred.when)(itemsResult).done(items => {
                                const selectedItems = (0, _uiFile_manager.findItemsByKeys)(items, selectedItemKeys);
                                if (selectedItems.length > 0) {
                                    this._updateToolbar(selectedItems)
                                }
                            })
                        }
                    };
                    _proto._getPreparedItemViewItems = function(items) {
                        const selectedDir = this._getCurrentDirectory();
                        if (selectedDir.fileItem.isRoot()) {
                            return items
                        }
                        const parentDirItem = selectedDir.fileItem.createClone();
                        parentDirItem.isParentFolder = true;
                        parentDirItem.name = "..";
                        parentDirItem.relativeName = "..";
                        parentDirItem.key = "".concat("[*DXPDK*]$40F96F03-FBD8-43DF-91BE-F55F4B8BA871$").concat(selectedDir.fileItem.key);
                        const itemsCopy = [...items];
                        itemsCopy.unshift({
                            fileItem: parentDirItem,
                            icon: "parentfolder"
                        });
                        return itemsCopy
                    };
                    _proto._onContextMenuShowing = function(viewArea, e) {
                        var _e$itemData;
                        let eventArgs = (0, _uiFile_manager.extendAttributes)({}, e, ["targetElement", "cancel", "event"]);
                        eventArgs = (0, _extend.extend)(eventArgs, {
                            viewArea: viewArea,
                            fileSystemItem: null === (_e$itemData = e.itemData) || void 0 === _e$itemData ? void 0 : _e$itemData.fileItem,
                            _isActionButton: e.isActionButton
                        });
                        this._actions.onContextMenuShowing(eventArgs);
                        e.cancel = (0, _common.ensureDefined)(eventArgs.cancel, false)
                    };
                    _proto._getItemThumbnailInfo = function(fileInfo) {
                        const func = this.option("customizeThumbnail");
                        const thumbnail = (0, _type.isFunction)(func) ? func(fileInfo.fileItem) : fileInfo.fileItem.thumbnail;
                        if (thumbnail) {
                            return {
                                thumbnail: thumbnail,
                                cssClass: "dx-filemanager-item-custom-thumbnail"
                            }
                        }
                        return {
                            thumbnail: fileInfo.icon
                        }
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_Widget.prototype._getDefaultOptions.call(this), {
                            fileSystemProvider: null,
                            currentPath: "",
                            currentPathKeys: [],
                            rootFolderName: _message.default.format("dxFileManager-rootDirectoryName"),
                            selectionMode: "multiple",
                            selectedItemKeys: [],
                            focusedItemKey: void 0,
                            toolbar: {
                                items: ["showNavPane", "create", "upload", "switchView", {
                                    name: "separator",
                                    location: "after"
                                }, "refresh"],
                                fileSelectionItems: ["download", "separator", "move", "copy", "rename", "separator", "delete", "clearSelection", {
                                    name: "separator",
                                    location: "after"
                                }, "refresh"]
                            },
                            contextMenu: {
                                items: ["create", "upload", "rename", "move", "copy", "delete", "refresh", "download"]
                            },
                            itemView: {
                                details: {
                                    columns: ["thumbnail", "name", "dateModified", "size"]
                                },
                                mode: "details",
                                showFolders: true,
                                showParentFolder: true
                            },
                            customizeThumbnail: null,
                            customizeDetailColumns: null,
                            onContextMenuItemClick: null,
                            onContextMenuShowing: null,
                            onCurrentDirectoryChanged: null,
                            onSelectedFileOpened: null,
                            onSelectionChanged: null,
                            onFocusedItemChanged: null,
                            onToolbarItemClick: null,
                            onErrorOccurred: null,
                            onDirectoryCreating: null,
                            onDirectoryCreated: null,
                            onItemRenaming: null,
                            onItemRenamed: null,
                            onItemDeleting: null,
                            onItemDeleted: null,
                            onItemCopying: null,
                            onItemCopied: null,
                            onItemMoving: null,
                            onItemMoved: null,
                            onFileUploading: null,
                            onFileUploaded: null,
                            onItemDownloading: null,
                            allowedFileExtensions: [],
                            upload: {
                                maxFileSize: 0,
                                chunkSize: 2e5
                            },
                            permissions: (0, _extend.extend)({}, _uiFile_manager2.defaultPermissions),
                            notifications: {
                                showPanel: true,
                                showPopup: true
                            }
                        })
                    };
                    _proto.option = function(options, value) {
                        const optionsToCheck = (0, _utils.normalizeOptions)(options, value);
                        const isGetter = arguments.length < 2 && "object" !== (0, _type.type)(options);
                        const isOptionDefined = name => (0, _type.isDefined)(optionsToCheck[name]);
                        const isOptionValueDiffers = name => {
                            if (!isOptionDefined(name)) {
                                return false
                            }
                            const previousValue = this.option(name);
                            const value = optionsToCheck[name];
                            return !(0, _comparator.equals)(previousValue, value)
                        };
                        if (!isGetter && isOptionDefined("fileSystemProvider")) {
                            this._providerUpdateDeferred = new _deferred.Deferred;
                            if (isOptionValueDiffers("currentPath") || isOptionValueDiffers("currentPathKeys")) {
                                this._lockCurrentPathProcessing = true
                            }
                        }
                        return _Widget.prototype.option.apply(this, arguments)
                    };
                    _proto._optionChanged = function(args) {
                        const name = args.name;
                        switch (name) {
                            case "currentPath": {
                                const updateFunc = () => {
                                    this._lockCurrentPathProcessing = false;
                                    return this._controller.setCurrentPath(args.value)
                                };
                                this._lockCurrentPathProcessing = true;
                                this._providerUpdateDeferred ? this._providerUpdateDeferred.then(updateFunc) : updateFunc()
                            }
                            break;
                            case "currentPathKeys": {
                                const updateFunc = () => {
                                    this._lockCurrentPathProcessing = false;
                                    return this._controller.setCurrentPathByKeys(args.value)
                                };
                                this._lockCurrentPathProcessing = true;
                                this._providerUpdateDeferred ? this._providerUpdateDeferred.then(updateFunc) : updateFunc()
                            }
                            break;
                            case "selectedItemKeys":
                                if (!this._lockSelectionProcessing && this._itemView) {
                                    this._itemView.option("selectedItemKeys", args.value)
                                }
                                break;
                            case "focusedItemKey":
                                if (!this._lockFocusedItemProcessing && this._itemView) {
                                    this._itemView.option("focusedItemKey", args.value)
                                }
                                break;
                            case "rootFolderName":
                                this._controller.setRootText(args.value);
                                this._invalidate();
                                break;
                            case "fileSystemProvider": {
                                if (!this._lockCurrentPathProcessing) {
                                    this._providerUpdateDeferred = new _deferred.Deferred
                                }
                                const pathKeys = this._lockCurrentPathProcessing ? void 0 : this.option("currentPathKeys");
                                this._controller.updateProvider(args.value, pathKeys).then(() => this._providerUpdateDeferred.resolve()).always(() => {
                                    this._providerUpdateDeferred = null;
                                    this.repaint()
                                });
                                break
                            }
                            case "allowedFileExtensions":
                                this._controller.setAllowedFileExtensions(args.value);
                                this._invalidate();
                                break;
                            case "upload":
                                this._controller.setUploadOptions(this.option("upload"));
                                this._invalidate();
                                break;
                            case "permissions":
                                this._commandManager.updatePermissions(this.option("permissions"));
                                this._filesTreeViewContextMenu.tryUpdateVisibleContextMenu();
                                this._itemViewContextMenu.tryUpdateVisibleContextMenu();
                                this._toolbar.updateItemPermissions();
                                this._updateUploadDropZone();
                                break;
                            case "selectionMode":
                            case "customizeThumbnail":
                            case "customizeDetailColumns":
                                this._invalidate();
                                break;
                            case "itemView":
                                if ("itemView.mode" === args.fullName) {
                                    this._switchView(args.value)
                                } else {
                                    this._invalidate()
                                }
                                break;
                            case "toolbar": {
                                const toolbarOptions = {};
                                if ("toolbar" === args.fullName) {
                                    if (args.value.items) {
                                        toolbarOptions.generalItems = args.value.items
                                    }
                                    if (args.value.fileSelectionItems) {
                                        toolbarOptions.fileItems = args.value.fileSelectionItems
                                    }
                                }
                                if (0 === args.fullName.indexOf("toolbar.items")) {
                                    toolbarOptions.generalItems = this.option("toolbar.items")
                                }
                                if (0 === args.fullName.indexOf("toolbar.fileSelectionItems")) {
                                    toolbarOptions.fileItems = this.option("toolbar.fileSelectionItems")
                                }
                                this._toolbar.option(toolbarOptions)
                            }
                            break;
                            case "contextMenu":
                                if ("contextMenu" === args.fullName && args.value.items || 0 === args.fullName.indexOf("contextMenu.items")) {
                                    const contextMenuItems = this.option("contextMenu.items");
                                    this._filesTreeViewContextMenu.option("items", contextMenuItems);
                                    this._itemViewContextMenu.option("items", contextMenuItems)
                                }
                                break;
                            case "notifications":
                                this._notificationControl.option("showProgressPanel", this.option("notifications.showPanel"));
                                this._notificationControl.option("showNotificationPopup", this.option("notifications.showPopup"));
                                break;
                            case "onContextMenuItemClick":
                            case "onContextMenuShowing":
                            case "onCurrentDirectoryChanged":
                            case "onSelectedFileOpened":
                            case "onSelectionChanged":
                            case "onFocusedItemChanged":
                            case "onToolbarItemClick":
                            case "onErrorOccurred":
                                this._actions[name] = this._createActionByOption(name);
                                break;
                            case "onDirectoryCreating":
                            case "onDirectoryCreated":
                            case "onItemRenaming":
                            case "onItemRenamed":
                            case "onItemDeleting":
                            case "onItemDeleted":
                            case "onItemCopying":
                            case "onItemCopied":
                            case "onItemMoving":
                            case "onItemMoved":
                            case "onFileUploading":
                            case "onFileUploaded":
                            case "onItemDownloading":
                                this._actions.editing[name] = this._createActionByOption(name);
                                break;
                            case "rtlEnabled":
                                this._editing.updateDialogRtl(args.value);
                                _Widget.prototype._optionChanged.call(this, args);
                                break;
                            default:
                                _Widget.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto._initActions = function() {
                        this._actions = {
                            onContextMenuItemClick: this._createActionByOption("onContextMenuItemClick"),
                            onContextMenuShowing: this._createActionByOption("onContextMenuShowing"),
                            onCurrentDirectoryChanged: this._createActionByOption("onCurrentDirectoryChanged"),
                            onSelectedFileOpened: this._createActionByOption("onSelectedFileOpened"),
                            onSelectionChanged: this._createActionByOption("onSelectionChanged"),
                            onFocusedItemChanged: this._createActionByOption("onFocusedItemChanged"),
                            onToolbarItemClick: this._createActionByOption("onToolbarItemClick"),
                            onErrorOccurred: this._createActionByOption("onErrorOccurred"),
                            editing: {
                                onDirectoryCreating: this._createActionByOption("onDirectoryCreating"),
                                onDirectoryCreated: this._createActionByOption("onDirectoryCreated"),
                                onItemRenaming: this._createActionByOption("onItemRenaming"),
                                onItemRenamed: this._createActionByOption("onItemRenamed"),
                                onItemDeleting: this._createActionByOption("onItemDeleting"),
                                onItemDeleted: this._createActionByOption("onItemDeleted"),
                                onItemCopying: this._createActionByOption("onItemCopying"),
                                onItemCopied: this._createActionByOption("onItemCopied"),
                                onItemMoving: this._createActionByOption("onItemMoving"),
                                onItemMoved: this._createActionByOption("onItemMoved"),
                                onFileUploading: this._createActionByOption("onFileUploading"),
                                onFileUploaded: this._createActionByOption("onFileUploaded"),
                                onItemDownloading: this._createActionByOption("onItemDownloading")
                            }
                        }
                    };
                    _proto.executeCommand = function(commandName) {
                        return this._commandManager.executeCommand(commandName)
                    };
                    _proto._setCurrentDirectory = function(directoryInfo, checkActuality) {
                        this._controller.setCurrentDirectory(directoryInfo, checkActuality)
                    };
                    _proto._getCurrentDirectory = function() {
                        return this._controller.getCurrentDirectory()
                    };
                    _proto._onControllerInitialized = function(_ref8) {
                        let {
                            controller: controller
                        } = _ref8;
                        this._controller = this._controller || controller;
                        this._syncToCurrentDirectory()
                    };
                    _proto._onDataLoading = function(_ref9) {
                        let {
                            operation: operation
                        } = _ref9;
                        let options = null;
                        if (operation === _file_items_controller.OPERATIONS.NAVIGATION) {
                            options = {
                                focusedItemKey: this._itemKeyToFocus,
                                selectedItemKeys: this.option("selectedItemKeys")
                            };
                            this._itemKeyToFocus = void 0
                        }
                        this._itemView.refresh(options, operation)
                    };
                    _proto._onSelectedDirectoryChanged = function() {
                        const currentDirectory = this._getCurrentDirectory();
                        this._syncToCurrentDirectory();
                        this._actions.onCurrentDirectoryChanged({
                            directory: currentDirectory.fileItem
                        })
                    };
                    _proto._syncToCurrentDirectory = function() {
                        const currentDirectory = this._getCurrentDirectory();
                        if (this._filesTreeView) {
                            this._filesTreeView.updateCurrentDirectory()
                        }
                        if (this._breadcrumbs) {
                            this._breadcrumbs.setCurrentDirectory(currentDirectory)
                        }
                        this._checkPathActuality()
                    };
                    _proto._checkPathActuality = function() {
                        if (this._lockCurrentPathProcessing) {
                            return
                        }
                        const currentPath = this._controller.getCurrentPath();
                        const currentPathKeys = this._controller.getCurrentPathKeys();
                        const options = {};
                        if (this.option("currentPath") !== currentPath) {
                            options.currentPath = currentPath
                        }
                        if (!(0, _common.equalByValue)(this.option("currentPathKeys"), currentPathKeys)) {
                            options.currentPathKeys = currentPathKeys
                        }
                        if (!(0, _type.isEmptyObject)(options)) {
                            this.option(options)
                        }
                    };
                    _proto.getDirectories = function(parentDirectoryInfo, skipNavigationOnError) {
                        return this._controller.getDirectories(parentDirectoryInfo, skipNavigationOnError)
                    };
                    _proto._getSelectedItemInfos = function() {
                        return this._itemView ? this._itemView.getSelectedItems() : []
                    };
                    _proto.refresh = function() {
                        return this.executeCommand("refresh")
                    };
                    _proto.getCurrentDirectory = function() {
                        const directoryInfo = this._getCurrentDirectory();
                        return directoryInfo && directoryInfo.fileItem || null
                    };
                    _proto.getSelectedItems = function() {
                        return this._getSelectedItemInfos().map(itemInfo => itemInfo.fileItem)
                    };
                    _proto._onSelectedItemOpened = function(_ref10) {
                        let {
                            fileItemInfo: fileItemInfo
                        } = _ref10;
                        const fileItem = fileItemInfo.fileItem;
                        if (!fileItem.isDirectory) {
                            this._actions.onSelectedFileOpened({
                                file: fileItem
                            });
                            return
                        }
                        if (fileItem.isParentFolder) {
                            this._itemKeyToFocus = this._getCurrentDirectory().fileItem.key
                        }
                        const newCurrentDirectory = fileItem.isParentFolder ? this._getCurrentDirectory().parentDirectory : fileItemInfo;
                        this._setCurrentDirectory(newCurrentDirectory);
                        if (newCurrentDirectory) {
                            this._filesTreeView.toggleDirectoryExpandedState(newCurrentDirectory.parentDirectory, true)
                        }
                    };
                    return FileManager
                }(_ui.default);
                (0, _component_registrator.default)("dxFileManager", FileManager);
                var _default = FileManager;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        17053:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.messages.js ***!
              \*****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "ErrorCode", {
                    enumerable: true,
                    get: function() {
                        return _error_codes.default
                    }
                });
                exports.FileManagerMessages = void 0;
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _error_codes = _interopRequireDefault(__webpack_require__( /*! ../../file_management/error_codes */ 41011));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const FileManagerMessages = {
                    get: (errorCode, args) => {
                        switch (errorCode) {
                            case _error_codes.default.NoAccess:
                                return _message.default.format("dxFileManager-errorNoAccess");
                            case _error_codes.default.FileExists:
                                return _message.default.format("dxFileManager-errorFileExistsFormat", args);
                            case _error_codes.default.FileNotFound:
                                return _message.default.format("dxFileManager-errorFileNotFoundFormat", args);
                            case _error_codes.default.DirectoryExists:
                                return _message.default.format("dxFileManager-errorDirectoryExistsFormat", args);
                            case _error_codes.default.DirectoryNotFound:
                                return _message.default.format("dxFileManager-errorDirectoryNotFoundFormat", args);
                            case _error_codes.default.WrongFileExtension:
                                return _message.default.format("dxFileManager-errorWrongFileExtension");
                            case _error_codes.default.MaxFileSizeExceeded:
                                return _message.default.format("dxFileManager-errorMaxFileSizeExceeded");
                            case _error_codes.default.InvalidSymbols:
                                return _message.default.format("dxFileManager-errorInvalidSymbols")
                        }
                        return _message.default.format("dxFileManager-errorDefault")
                    }
                };
                exports.FileManagerMessages = FileManagerMessages
            },
        17723:
            /*!*********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.notification.js ***!
              \*********************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../popup/ui.popup */ 51495));
                var _ui3 = _interopRequireDefault(__webpack_require__( /*! ../drawer/ui.drawer */ 32089));
                var _uiFile_manager = __webpack_require__( /*! ./ui.file_manager.notification_manager */ 35226);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const window = (0, _window.getWindow)();
                const FILE_MANAGER_NOTIFICATION_DRAWER_CLASS = "".concat("dx-filemanager-notification", "-drawer");
                const FILE_MANAGER_NOTIFICATION_DRAWER_PANEL_CLASS = "".concat(FILE_MANAGER_NOTIFICATION_DRAWER_CLASS, "-panel");
                const FILE_MANAGER_NOTIFICATION_POPUP_CLASS = "".concat("dx-filemanager-notification", "-popup");
                const FILE_MANAGER_NOTIFICATION_POPUP_ERROR_CLASS = "".concat("dx-filemanager-notification", "-popup-error");
                const FILE_MANAGER_NOTIFICATION_COMMON_CLASS = "".concat("dx-filemanager-notification", "-common");
                const FILE_MANAGER_NOTIFICATION_SEPARATOR_CLASS = "".concat("dx-filemanager-notification", "-separator");
                const FILE_MANAGER_NOTIFICATION_DETAILS_CLASS = "".concat("dx-filemanager-notification", "-details");
                const FILE_MANAGER_NOTIFICATION_COMMON_NO_ITEM_CLASS = "".concat("dx-filemanager-notification", "-common-no-item");
                let FileManagerNotificationControl = function(_Widget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(FileManagerNotificationControl, _Widget);

                    function FileManagerNotificationControl() {
                        return _Widget.apply(this, arguments) || this
                    }
                    var _proto = FileManagerNotificationControl.prototype;
                    _proto._initMarkup = function() {
                        _Widget.prototype._initMarkup.call(this);
                        this._initActions();
                        this._isInAdaptiveState = this._isSmallScreen();
                        this._managerMap = {};
                        this._notificationManagerStubId = null;
                        this._setNotificationManager();
                        const $progressPanelContainer = this.option("progressPanelContainer");
                        const $progressDrawer = (0, _renderer.default)("<div>").addClass(FILE_MANAGER_NOTIFICATION_DRAWER_CLASS).appendTo($progressPanelContainer);
                        (0, _renderer.default)("<div>").addClass(FILE_MANAGER_NOTIFICATION_DRAWER_PANEL_CLASS).appendTo($progressDrawer);
                        const drawerOptions = (0, _extend.extend)({
                            opened: false,
                            position: "right",
                            template: container => this._ensureProgressPanelCreated(container)
                        }, this._getProgressDrawerAdaptiveOptions());
                        this._progressDrawer = this._createComponent($progressDrawer, _ui3.default, drawerOptions);
                        const $drawerContent = $progressDrawer.find(".".concat(FILE_MANAGER_NOTIFICATION_DRAWER_PANEL_CLASS)).first();
                        const contentRenderer = this.option("contentTemplate");
                        if ((0, _type.isFunction)(contentRenderer)) {
                            contentRenderer($drawerContent, this)
                        }
                    };
                    _proto._setNotificationManager = function(options) {
                        options = (0, _extend.extend)({
                            onActionProgressStatusChanged: this._raiseActionProgress.bind(this)
                        }, options);
                        if (!this._notificationManagerStubId) {
                            const stubManager = new _uiFile_manager.NotificationManagerStub(options);
                            this._notificationManagerStubId = stubManager.getId();
                            this._managerMap[this._notificationManagerStubId] = stubManager
                        }
                        if (!this._isProgressDrawerDisabled()) {
                            const notificationManagerComponent = this._getProgressManagerComponent();
                            options.isActual = true;
                            const defaultManager = new notificationManagerComponent(options);
                            this._managerMap[defaultManager.getId()] = defaultManager
                        }
                    };
                    _proto._getNotificationManager = function(operationInfo) {
                        const actualManagerId = (null === operationInfo || void 0 === operationInfo ? void 0 : operationInfo[_uiFile_manager.MANAGER_ID_NAME]) || this._getActualNotificationManagerId();
                        return this._managerMap[actualManagerId] || this._managerMap[this._notificationManagerStubId]
                    };
                    _proto._clearManagerMap = function() {
                        const stubManager = this._managerMap[this._notificationManagerStubId];
                        delete this._managerMap;
                        this._managerMap = {
                            [this._notificationManagerStubId]: stubManager
                        }
                    };
                    _proto._getActualNotificationManagerId = function() {
                        return Object.keys(this._managerMap).filter(managerId => this._managerMap[managerId].isActual())[0]
                    };
                    _proto.tryShowProgressPanel = function() {
                        const promise = new _deferred.Deferred;
                        const notificationManager = this._getNotificationManager();
                        if (notificationManager.isActionProgressStatusDefault() || this._isProgressDrawerOpened() || this._isProgressDrawerDisabled()) {
                            return promise.resolve().promise()
                        }
                        setTimeout(() => {
                            this._progressDrawer.show().done(promise.resolve);
                            this._hidePopup();
                            notificationManager.tryHideActionProgress()
                        });
                        return promise.promise()
                    };
                    _proto.addOperation = function(processingMessage, allowCancel, allowProgressAutoUpdate) {
                        const notificationManager = this._getNotificationManager();
                        return notificationManager.addOperation(processingMessage, allowCancel, allowProgressAutoUpdate)
                    };
                    _proto.addOperationDetails = function(operationInfo, details, showCloseButton) {
                        const notificationManager = this._getNotificationManager(operationInfo);
                        notificationManager.addOperationDetails(operationInfo, details, showCloseButton)
                    };
                    _proto.updateOperationItemProgress = function(operationInfo, itemIndex, itemProgress, commonProgress) {
                        const notificationManager = this._getNotificationManager(operationInfo);
                        notificationManager.updateOperationItemProgress(operationInfo, itemIndex, itemProgress, commonProgress)
                    };
                    _proto.completeOperationItem = function(operationInfo, itemIndex, commonProgress) {
                        const notificationManager = this._getNotificationManager(operationInfo);
                        notificationManager.completeOperationItem(operationInfo, itemIndex, commonProgress)
                    };
                    _proto.finishOperation = function(operationInfo, commonProgress) {
                        const notificationManager = this._getNotificationManager(operationInfo);
                        notificationManager.finishOperation(operationInfo, commonProgress)
                    };
                    _proto.completeOperation = function(operationInfo, commonText, isError, statusText) {
                        const notificationManager = this._getNotificationManager(operationInfo);
                        if (!isError) {
                            this._showPopup(commonText)
                        }
                        notificationManager.completeOperation(operationInfo, commonText, isError, statusText);
                        if (!this._isProgressDrawerOpened() || !notificationManager.hasNoOperations()) {
                            notificationManager.updateActionProgressStatus(operationInfo)
                        } else {
                            notificationManager.tryHideActionProgress()
                        }
                    };
                    _proto.completeSingleOperationWithError = function(operationInfo, errorInfo) {
                        const notificationManager = this._getNotificationManager(operationInfo);
                        notificationManager.completeSingleOperationWithError(operationInfo, errorInfo);
                        this._showPopupError(errorInfo)
                    };
                    _proto.addOperationDetailsError = function(operationInfo, errorInfo) {
                        const notificationManager = this._getNotificationManager(operationInfo);
                        notificationManager.addOperationDetailsError(operationInfo, errorInfo);
                        this._showPopupError(errorInfo)
                    };
                    _proto._hideProgressPanel = function() {
                        setTimeout(() => this._progressDrawer.hide())
                    };
                    _proto._isSmallScreen = function() {
                        if (!(0, _window.hasWindow)()) {
                            return false
                        }
                        return (0, _size.getWidth)(window) <= 1e3
                    };
                    _proto._dimensionChanged = function(dimension) {
                        if (!(dimension && "height" === dimension)) {
                            this._checkAdaptiveState()
                        }
                    };
                    _proto._checkAdaptiveState = function() {
                        const oldState = this._isInAdaptiveState;
                        this._isInAdaptiveState = this._isSmallScreen();
                        if (oldState !== this._isInAdaptiveState && this._progressDrawer) {
                            const notificationManager = this._getNotificationManager();
                            if (notificationManager.handleDimensionChanged()) {
                                const options = this._getProgressDrawerAdaptiveOptions();
                                this._progressDrawer.option(options)
                            }
                        }
                    };
                    _proto._getProgressDrawerAdaptiveOptions = function() {
                        if (this._isInAdaptiveState) {
                            return {
                                openedStateMode: "overlap",
                                shading: true,
                                hideOnOutsideClick: true
                            }
                        } else {
                            return {
                                openedStateMode: "shrink",
                                shading: false,
                                hideOnOutsideClick: false
                            }
                        }
                    };
                    _proto._ensureProgressPanelCreated = function(container) {
                        const notificationManager = this._getNotificationManager();
                        notificationManager.ensureProgressPanelCreated(container, {
                            onOperationCanceled: _ref => {
                                let {
                                    info: info
                                } = _ref;
                                return this._raiseOperationCanceled(info)
                            },
                            onOperationItemCanceled: _ref2 => {
                                let {
                                    item: item,
                                    itemIndex: itemIndex
                                } = _ref2;
                                return this._raiseOperationItemCanceled(item, itemIndex)
                            },
                            onPanelClosed: () => this._hideProgressPanel()
                        })
                    };
                    _proto._getProgressManagerComponent = function() {
                        return _uiFile_manager.NotificationManager
                    };
                    _proto._isProgressDrawerDisabled = function() {
                        return !this.option("showProgressPanel")
                    };
                    _proto._isProgressDrawerOpened = function() {
                        return this._progressDrawer.option("opened")
                    };
                    _proto._hidePopup = function(forceHide) {
                        if (!this.option("showNotificationPopup") && !forceHide) {
                            return
                        }
                        this._getNotificationPopup().hide()
                    };
                    _proto._showPopup = function(content, errorMode) {
                        if (this._isProgressDrawerOpened() || !this.option("showNotificationPopup")) {
                            return
                        }
                        this._getNotificationPopup().$wrapper().toggleClass(FILE_MANAGER_NOTIFICATION_POPUP_ERROR_CLASS, !!errorMode);
                        this._getNotificationPopup().option("contentTemplate", content);
                        if (!this._getNotificationPopup().option("visible")) {
                            this._getNotificationPopup().show()
                        }
                    };
                    _proto._showPopupError = function(errorInfo) {
                        if (!this.option("showNotificationPopup")) {
                            return
                        }
                        const notificationManager = this._getNotificationManager();
                        const $content = (0, _renderer.default)("<div>");
                        const $message = (0, _renderer.default)("<div>").addClass(FILE_MANAGER_NOTIFICATION_COMMON_CLASS).text(errorInfo.commonErrorText);
                        const $separator = (0, _renderer.default)("<div>").addClass(FILE_MANAGER_NOTIFICATION_SEPARATOR_CLASS);
                        (0, _renderer.default)("<div>").appendTo($separator);
                        const $details = (0, _renderer.default)("<div>").addClass(FILE_MANAGER_NOTIFICATION_DETAILS_CLASS);
                        if (errorInfo.item) {
                            notificationManager.createErrorDetailsProgressBox($details, errorInfo.item, errorInfo.detailErrorText)
                        } else {
                            $message.addClass(FILE_MANAGER_NOTIFICATION_COMMON_NO_ITEM_CLASS);
                            notificationManager.renderError($details, errorInfo.detailErrorText)
                        }
                        $content.append($message, $separator, $details);
                        this._showPopup($content, true)
                    };
                    _proto._getNotificationPopup = function() {
                        if (!this._notificationPopup) {
                            const $popup = (0, _renderer.default)("<div>").appendTo(this.$element());
                            this._notificationPopup = this._createComponent($popup, _ui2.default, {
                                container: this.$element(),
                                width: "auto",
                                height: "auto",
                                showTitle: false,
                                dragEnabled: false,
                                shading: false,
                                visible: false,
                                hideOnOutsideClick: true,
                                animation: {
                                    duration: 0
                                },
                                position: {
                                    my: "right top",
                                    at: "right top",
                                    of: this.option("positionTarget"),
                                    offset: "-10 -5"
                                },
                                _wrapperClassExternal: FILE_MANAGER_NOTIFICATION_POPUP_CLASS
                            })
                        }
                        return this._notificationPopup
                    };
                    _proto._raiseActionProgress = function(message, status) {
                        this._actions.onActionProgress({
                            message: message,
                            status: status
                        })
                    };
                    _proto._raiseOperationCanceled = function(info) {
                        this._actions.onOperationCanceled({
                            info: info
                        })
                    };
                    _proto._raiseOperationItemCanceled = function(item, index) {
                        this._actions.onOperationItemCanceled({
                            item: item,
                            itemIndex: index
                        })
                    };
                    _proto._initActions = function() {
                        this._actions = {
                            onActionProgress: this._createActionByOption("onActionProgress"),
                            onOperationCanceled: this._createActionByOption("onOperationCanceled"),
                            onOperationItemCanceled: this._createActionByOption("onOperationItemCanceled")
                        }
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_Widget.prototype._getDefaultOptions.call(this), {
                            progressPanelContainer: null,
                            contentTemplate: null,
                            onActionProgress: null,
                            onOperationCanceled: null,
                            onOperationItemCanceled: null,
                            showProgressPanel: true,
                            showNotificationPopup: true
                        })
                    };
                    _proto._optionChanged = function(args) {
                        const name = args.name;
                        switch (name) {
                            case "progressPanelContainer":
                            case "contentTemplate":
                                break;
                            case "showProgressPanel":
                                this._setNotificationManager();
                                this._getNotificationManager().updateActionProgressStatus();
                                if (!args.value) {
                                    this._hideProgressPanel();
                                    this._clearManagerMap()
                                }
                                this._progressDrawer.repaint();
                                break;
                            case "showNotificationPopup":
                                if (!args.value) {
                                    this._hidePopup(true)
                                }
                                break;
                            case "onActionProgress":
                            case "onOperationCanceled":
                            case "onOperationItemCanceled":
                                this._actions[name] = this._createActionByOption(name);
                                break;
                            default:
                                _Widget.prototype._optionChanged.call(this, args)
                        }
                    };
                    return FileManagerNotificationControl
                }(_ui.default);
                exports.default = FileManagerNotificationControl;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        55817:
            /*!************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.notification.progress_panel.js ***!
              \************************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _icon = __webpack_require__( /*! ../../core/utils/icon */ 44899);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _progress_bar = _interopRequireDefault(__webpack_require__( /*! ../progress_bar */ 28080));
                var _button = _interopRequireDefault(__webpack_require__( /*! ../button */ 63008));
                var _scroll_view = _interopRequireDefault(__webpack_require__( /*! ../scroll_view */ 4741));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const FILE_MANAGER_PROGRESS_PANEL_CONTAINER_CLASS = "".concat("dx-filemanager-progress-panel", "-container");
                const FILE_MANAGER_PROGRESS_PANEL_TITLE_CLASS = "".concat("dx-filemanager-progress-panel", "-title");
                const FILE_MANAGER_PROGRESS_PANEL_TITLE_TEXT_CLASS = "".concat("dx-filemanager-progress-panel", "-title-text");
                const FILE_MANAGER_PROGRESS_PANEL_CLOSE_BUTTON_CLASS = "".concat("dx-filemanager-progress-panel", "-close-button");
                const FILE_MANAGER_PROGRESS_PANEL_INFOS_CONTAINER_CLASS = "".concat("dx-filemanager-progress-panel", "-infos-container");
                const FILE_MANAGER_PROGRESS_PANEL_SEPARATOR_CLASS = "".concat("dx-filemanager-progress-panel", "-separator");
                const FILE_MANAGER_PROGRESS_PANEL_INFO_CLASS = "".concat("dx-filemanager-progress-panel", "-info");
                const FILE_MANAGER_PROGRESS_PANEL_COMMON_CLASS = "".concat("dx-filemanager-progress-panel", "-common");
                const FILE_MANAGER_PROGRESS_PANEL_INFO_WITH_DETAILS_CLASS = "".concat("dx-filemanager-progress-panel", "-info-with-details");
                const FILE_MANAGER_PROGRESS_PANEL_DETAILS_CLASS = "".concat("dx-filemanager-progress-panel", "-details");
                const FILE_MANAGER_PROGRESS_BOX_ERROR_CLASS = "".concat("dx-filemanager-progress-box", "-error");
                const FILE_MANAGER_PROGRESS_BOX_WITHOUT_CLOSE_BUTTON_CLASS = "".concat("dx-filemanager-progress-box", "-without-close-button");
                const FILE_MANAGER_PROGRESS_BOX_IMAGE_CLASS = "".concat("dx-filemanager-progress-box", "-image");
                const FILE_MANAGER_PROGRESS_BOX_WRAPPER_CLASS = "".concat("dx-filemanager-progress-box", "-wrapper");
                const FILE_MANAGER_PROGRESS_BOX_COMMON_CLASS = "".concat("dx-filemanager-progress-box", "-common");
                const FILE_MANAGER_PROGRESS_BOX_PROGRESS_BAR_CLASS = "".concat("dx-filemanager-progress-box", "-progress-bar");
                const FILE_MANAGER_PROGRESS_BOX_CLOSE_BUTTON_CLASS = "".concat("dx-filemanager-progress-box", "-close-button");
                let FileManagerProgressPanel = function(_Widget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(FileManagerProgressPanel, _Widget);

                    function FileManagerProgressPanel() {
                        return _Widget.apply(this, arguments) || this
                    }
                    var _proto = FileManagerProgressPanel.prototype;
                    _proto._initMarkup = function() {
                        _Widget.prototype._initMarkup.call(this);
                        this._initActions();
                        this._operationCount = 0;
                        this.$element().addClass("dx-filemanager-progress-panel");
                        const $scrollView = (0, _renderer.default)("<div>").appendTo(this.$element());
                        const $container = (0, _renderer.default)("<div>").addClass(FILE_MANAGER_PROGRESS_PANEL_CONTAINER_CLASS).appendTo($scrollView);
                        this._scrollView = this._createComponent($scrollView, _scroll_view.default, {
                            scrollByContent: true,
                            scrollByThumb: true,
                            showScrollbar: "onScroll"
                        });
                        const $title = (0, _renderer.default)("<div>").addClass(FILE_MANAGER_PROGRESS_PANEL_TITLE_CLASS).appendTo($container);
                        (0, _renderer.default)("<div>").text(_message.default.format("dxFileManager-notificationProgressPanelTitle")).addClass(FILE_MANAGER_PROGRESS_PANEL_TITLE_TEXT_CLASS).appendTo($title);
                        const $closeButton = (0, _renderer.default)("<div>").addClass(FILE_MANAGER_PROGRESS_PANEL_CLOSE_BUTTON_CLASS).appendTo($title);
                        this._createComponent($closeButton, _button.default, {
                            icon: "close",
                            stylingMode: "text",
                            onClick: () => this._raisePanelClosed()
                        });
                        this._$infosContainer = (0, _renderer.default)("<div>").addClass(FILE_MANAGER_PROGRESS_PANEL_INFOS_CONTAINER_CLASS).appendTo($container);
                        this._renderEmptyListText()
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_Widget.prototype._getDefaultOptions.call(this), {
                            onOperationClosed: null,
                            onOperationCanceled: null,
                            onOperationItemCanceled: null,
                            onPanelClosed: null
                        })
                    };
                    _proto._initActions = function() {
                        this._actions = {
                            onOperationClosed: this._createActionByOption("onOperationClosed"),
                            onOperationCanceled: this._createActionByOption("onOperationCanceled"),
                            onOperationItemCanceled: this._createActionByOption("onOperationItemCanceled"),
                            onPanelClosed: this._createActionByOption("onPanelClosed")
                        }
                    };
                    _proto._optionChanged = function(args) {
                        const name = args.name;
                        switch (name) {
                            case "test":
                                break;
                            case "onOperationClosed":
                            case "onOperationCanceled":
                            case "onOperationItemCanceled":
                                this._actions[name] = this._createActionByOption(name);
                                break;
                            default:
                                _Widget.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto.addOperation = function(commonText, showCloseButtonAlways, allowProgressAutoUpdate) {
                        if (this._operationCount) {
                            (0, _renderer.default)("<div>").addClass(FILE_MANAGER_PROGRESS_PANEL_SEPARATOR_CLASS).prependTo(this._$infosContainer)
                        } else {
                            this._$infosContainer.empty()
                        }
                        this._operationCount++;
                        const info = {
                            customCloseHandling: showCloseButtonAlways,
                            allowProgressAutoUpdate: (0, _common.ensureDefined)(allowProgressAutoUpdate, true)
                        };
                        const $info = (0, _renderer.default)("<div>").addClass(FILE_MANAGER_PROGRESS_PANEL_INFO_CLASS).prependTo(this._$infosContainer);
                        info.$info = $info;
                        const $common = (0, _renderer.default)("<div>").addClass(FILE_MANAGER_PROGRESS_PANEL_COMMON_CLASS).appendTo($info);
                        info.common = this._createProgressBox($common, {
                            commonText: commonText,
                            showCloseButton: true,
                            showCloseButtonAlways: showCloseButtonAlways,
                            onCloseButtonClick: () => this._closeOperation(info)
                        });
                        return info
                    };
                    _proto.addOperationDetails = function(info, details, showCloseButton) {
                        info.$info.addClass(FILE_MANAGER_PROGRESS_PANEL_INFO_WITH_DETAILS_CLASS);
                        const $details = (0, _renderer.default)("<div>").addClass(FILE_MANAGER_PROGRESS_PANEL_DETAILS_CLASS).appendTo(info.$info);
                        info.details = details.map((itemInfo, index) => {
                            itemInfo.info = info;
                            return this._createDetailsItem($details, itemInfo, index, false, showCloseButton)
                        })
                    };
                    _proto._createDetailsItem = function($container, item, itemIndex, skipProgressBox, showCloseButton) {
                        const $detailsItem = (0, _renderer.default)("<div>").appendTo($container);
                        if (-1 !== itemIndex) {
                            $detailsItem.addClass("dx-card")
                        }
                        return this._createProgressBox($detailsItem, {
                            commonText: item.commonText,
                            imageUrl: item.imageUrl,
                            skipProgressBox: skipProgressBox,
                            showCloseButton: showCloseButton,
                            showCloseButtonAlways: showCloseButton,
                            onCloseButtonClick: () => this._cancelOperationItem(item, itemIndex)
                        })
                    };
                    _proto.completeOperationItem = function(operationInfo, itemIndex, commonProgress) {
                        if (operationInfo.allowProgressAutoUpdate) {
                            this.updateOperationItemProgress(operationInfo, itemIndex, 100, commonProgress)
                        }
                        this._setCloseButtonVisible(operationInfo.details[itemIndex], false)
                    };
                    _proto.updateOperationItemProgress = function(operationInfo, itemIndex, itemProgress, commonProgress) {
                        this.updateOperationCommonProgress(operationInfo, commonProgress);
                        if (operationInfo.details) {
                            const detailsItem = operationInfo.details[itemIndex];
                            detailsItem.progressBar.option("value", itemProgress)
                        }
                    };
                    _proto.updateOperationCommonProgress = function(operationInfo, commonProgress) {
                        var _operationInfo$common;
                        null === (_operationInfo$common = operationInfo.common.progressBar) || void 0 === _operationInfo$common ? void 0 : _operationInfo$common.option("value", commonProgress)
                    };
                    _proto.completeOperation = function(info, commonText, isError, statusText) {
                        info.completed = true;
                        info.common.$commonText.text(commonText);
                        if (isError) {
                            this._removeProgressBar(info.common)
                        } else if (info.allowProgressAutoUpdate) {
                            this.updateOperationCommonProgress(info, 100)
                        }
                        if (statusText) {
                            this._setProgressBarText(info.common, statusText)
                        }
                        this._setCloseButtonVisible(info.common, true)
                    };
                    _proto.completeSingleOperationWithError = function(info, errorText) {
                        var _info$details;
                        const detailsItem = null === (_info$details = info.details) || void 0 === _info$details ? void 0 : _info$details[0];
                        info.completed = true;
                        this._renderOperationError(detailsItem || info.common, errorText);
                        this._setCloseButtonVisible(info.common, true);
                        if (detailsItem) {
                            this._setCloseButtonVisible(detailsItem, false)
                        }
                    };
                    _proto.addOperationDetailsError = function(info, index, errorText) {
                        const detailsItem = info.details[index];
                        this._renderOperationError(detailsItem, errorText);
                        this._setCloseButtonVisible(detailsItem, false)
                    };
                    _proto._renderError = function($container, $target, errorText) {
                        (0, _renderer.default)("<div>").text(errorText).addClass(FILE_MANAGER_PROGRESS_BOX_ERROR_CLASS).appendTo($container)
                    };
                    _proto._renderEmptyListText = function() {
                        this._$infosContainer.text(_message.default.format("dxFileManager-notificationProgressPanelEmptyListText"))
                    };
                    _proto._renderOperationError = function(info, errorText) {
                        this._removeProgressBar(info);
                        this._renderError(info.$wrapper, info.$commonText, errorText)
                    };
                    _proto._removeProgressBar = function(progressBox) {
                        if (progressBox.progressBar) {
                            progressBox.progressBar.dispose();
                            progressBox.progressBar.$element().remove();
                            progressBox.progressBar = null
                        }
                    };
                    _proto._createProgressBox = function($container, options) {
                        $container.addClass("dx-filemanager-progress-box");
                        if (!options.showCloseButtonAlways) {
                            $container.addClass(FILE_MANAGER_PROGRESS_BOX_WITHOUT_CLOSE_BUTTON_CLASS)
                        }
                        if (options.imageUrl) {
                            (0, _icon.getImageContainer)(options.imageUrl).addClass(FILE_MANAGER_PROGRESS_BOX_IMAGE_CLASS).appendTo($container)
                        }
                        const $wrapper = (0, _renderer.default)("<div>").addClass(FILE_MANAGER_PROGRESS_BOX_WRAPPER_CLASS).appendTo($container);
                        const $commonText = (0, _renderer.default)("<div>").addClass(FILE_MANAGER_PROGRESS_BOX_COMMON_CLASS).text(options.commonText).appendTo($wrapper);
                        let progressBar = null;
                        if (!options.skipProgressBox) {
                            const $progressBar = (0, _renderer.default)("<div>").addClass(FILE_MANAGER_PROGRESS_BOX_PROGRESS_BAR_CLASS).appendTo($wrapper);
                            progressBar = this._createComponent($progressBar, _progress_bar.default, {
                                min: 0,
                                max: 100,
                                width: "100%",
                                validationMessageMode: "always",
                                statusFormat: (ratio, value) => this._getStatusString(ratio, value)
                            })
                        }
                        let closeButton = null;
                        if (options.showCloseButton) {
                            const $button = (0, _renderer.default)("<div>").addClass(FILE_MANAGER_PROGRESS_BOX_CLOSE_BUTTON_CLASS).appendTo($container);
                            closeButton = this._createComponent($button, _button.default, {
                                icon: "dx-filemanager-i dx-filemanager-i-cancel",
                                stylingMode: "text",
                                visible: options.showCloseButtonAlways,
                                onClick: options.onCloseButtonClick
                            })
                        }
                        return {
                            $commonText: $commonText,
                            progressBar: progressBar,
                            $element: $container,
                            $wrapper: $wrapper,
                            closeButton: closeButton
                        }
                    };
                    _proto._setCloseButtonVisible = function(progressBox, visible) {
                        if (progressBox.closeButton) {
                            progressBox.$element.toggleClass(FILE_MANAGER_PROGRESS_BOX_WITHOUT_CLOSE_BUTTON_CLASS, !visible);
                            progressBox.closeButton.option("visible", visible)
                        }
                    };
                    _proto._setProgressBarText = function(progressBox, text) {
                        progressBox.progressBar.option("statusFormat", () => text)
                    };
                    _proto._closeOperation = function(info) {
                        if (info.customCloseHandling && !info.completed) {
                            this._raiseOperationCanceled(info);
                            this._setCloseButtonVisible(info.common, false);
                            info.details.forEach(item => this._displayClosedOperationItem(item))
                        } else {
                            this._raiseOperationClosed(info);
                            info.$info.next(".".concat(FILE_MANAGER_PROGRESS_PANEL_SEPARATOR_CLASS)).remove();
                            info.$info.remove();
                            this._operationCount--;
                            if (!this._operationCount) {
                                this._renderEmptyListText()
                            }
                        }
                    };
                    _proto._cancelOperationItem = function(item, itemIndex) {
                        this._raiseOperationItemCanceled(item, itemIndex);
                        const itemInfo = item.info.details[itemIndex];
                        this._displayClosedOperationItem(itemInfo)
                    };
                    _proto._displayClosedOperationItem = function(itemInfo) {
                        this._setProgressBarText(itemInfo, _message.default.format("dxFileManager-notificationProgressPanelOperationCanceled"));
                        this._setCloseButtonVisible(itemInfo, false)
                    };
                    _proto._getStatusString = function(ratio, value) {
                        return 1 === ratio ? _message.default.format("Done") : Math.round(100 * ratio) + "%"
                    };
                    _proto._raiseOperationClosed = function(info) {
                        this._actions.onOperationClosed({
                            info: info
                        })
                    };
                    _proto._raiseOperationCanceled = function(info) {
                        this._actions.onOperationCanceled({
                            info: info
                        })
                    };
                    _proto._raiseOperationItemCanceled = function(item, itemIndex) {
                        this._actions.onOperationItemCanceled({
                            item: item,
                            itemIndex: itemIndex
                        })
                    };
                    _proto._raisePanelClosed = function() {
                        this._actions.onPanelClosed()
                    };
                    return FileManagerProgressPanel
                }(_ui.default);
                var _default = FileManagerProgressPanel;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        35226:
            /*!*****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.notification_manager.js ***!
              \*****************************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.NotificationManagerStub = exports.NotificationManager = exports.MANAGER_ID_NAME = void 0;
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 73176));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _icon = __webpack_require__( /*! ../../core/utils/icon */ 44899);
                var _uiFile_managerNotification = _interopRequireDefault(__webpack_require__( /*! ./ui.file_manager.notification.progress_panel */ 55817));

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

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                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 _inheritsLoose(subClass, superClass) {
                    subClass.prototype = Object.create(superClass.prototype);
                    subClass.prototype.constructor = subClass;
                    _setPrototypeOf(subClass, superClass)
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const FILE_MANAGER_PROGRESS_BOX_ERROR_CLASS = "".concat("dx-filemanager-progress-box", "-error");
                const FILE_MANAGER_PROGRESS_BOX_IMAGE_CLASS = "".concat("dx-filemanager-progress-box", "-image");
                const FILE_MANAGER_PROGRESS_BOX_WRAPPER_CLASS = "".concat("dx-filemanager-progress-box", "-wrapper");
                const FILE_MANAGER_PROGRESS_BOX_COMMON_CLASS = "".concat("dx-filemanager-progress-box", "-common");
                exports.MANAGER_ID_NAME = "__operationInfoManager";
                const ACTION_PROGRESS_STATUS_default = "default",
                    ACTION_PROGRESS_STATUS_progress = "progress",
                    ACTION_PROGRESS_STATUS_error = "error",
                    ACTION_PROGRESS_STATUS_success = "success";
                let NotificationManagerBase = function() {
                    function NotificationManagerBase(_ref) {
                        let {
                            onActionProgressStatusChanged: onActionProgressStatusChanged,
                            isActual: isActual
                        } = _ref;
                        this._id = (new _guid.default).toString();
                        this._isActual = isActual || false;
                        this._actionProgressStatus = ACTION_PROGRESS_STATUS_default;
                        this._raiseActionProgress = onActionProgressStatusChanged
                    }
                    var _proto = NotificationManagerBase.prototype;
                    _proto.getId = function() {
                        return this._id
                    };
                    _proto.isActual = function() {
                        return this._isActual
                    };
                    _proto.createErrorDetailsProgressBox = function($container, item, errorText) {
                        const detailsItem = this._createDetailsItem($container, item);
                        this.renderError(detailsItem.$wrapper, errorText)
                    };
                    _proto.renderError = function($container, errorText) {
                        (0, _renderer.default)("<div>").text(errorText).addClass(FILE_MANAGER_PROGRESS_BOX_ERROR_CLASS).appendTo($container)
                    };
                    _proto.isActionProgressStatusDefault = function() {
                        return this._actionProgressStatus === ACTION_PROGRESS_STATUS_default
                    };
                    _proto._createDetailsItem = function($container, item) {
                        const $detailsItem = (0, _renderer.default)("<div>").appendTo($container);
                        return this._createProgressBox($detailsItem, {
                            commonText: item.commonText,
                            imageUrl: item.imageUrl
                        })
                    };
                    _proto._createProgressBox = function($container, options) {
                        $container.addClass("dx-filemanager-progress-box");
                        if (options.imageUrl) {
                            (0, _icon.getImageContainer)(options.imageUrl).addClass(FILE_MANAGER_PROGRESS_BOX_IMAGE_CLASS).appendTo($container)
                        }
                        const $wrapper = (0, _renderer.default)("<div>").addClass(FILE_MANAGER_PROGRESS_BOX_WRAPPER_CLASS).appendTo($container);
                        const $commonText = (0, _renderer.default)("<div>").addClass(FILE_MANAGER_PROGRESS_BOX_COMMON_CLASS).text(options.commonText).appendTo($wrapper);
                        return {
                            $commonText: $commonText,
                            $element: $container,
                            $wrapper: $wrapper
                        }
                    };
                    return NotificationManagerBase
                }();
                let NotificationManagerStub = function(_NotificationManagerB) {
                    _inheritsLoose(NotificationManagerStub, _NotificationManagerB);

                    function NotificationManagerStub() {
                        return _NotificationManagerB.apply(this, arguments) || this
                    }
                    var _proto2 = NotificationManagerStub.prototype;
                    _proto2.addOperation = function() {
                        return {
                            __operationInfoManager: this._id
                        }
                    };
                    _proto2.addOperationDetails = function() {};
                    _proto2.updateOperationItemProgress = function() {};
                    _proto2.completeOperationItem = function() {};
                    _proto2.finishOperation = function() {};
                    _proto2.completeOperation = function() {};
                    _proto2.completeSingleOperationWithError = function() {};
                    _proto2.addOperationDetailsError = function() {};
                    _proto2.handleDimensionChanged = function() {
                        return false
                    };
                    _proto2.ensureProgressPanelCreated = function() {};
                    _proto2.tryHideActionProgress = function() {
                        this._updateActionProgress("", ACTION_PROGRESS_STATUS_default)
                    };
                    _proto2.updateActionProgressStatus = function() {
                        this._updateActionProgress("", ACTION_PROGRESS_STATUS_default)
                    };
                    _proto2._updateActionProgress = function(message, status) {
                        if (status !== ACTION_PROGRESS_STATUS_default && status !== ACTION_PROGRESS_STATUS_progress) {
                            return
                        }
                        this._actionProgressStatus = status;
                        this._raiseActionProgress(message, status)
                    };
                    _proto2.hasNoOperations = function() {
                        return true
                    };
                    _createClass(NotificationManagerStub, [{
                        key: "_operationInProgressCount",
                        get: function() {
                            return 0
                        },
                        set: function(value) {}
                    }, {
                        key: "_failedOperationCount",
                        get: function() {
                            return 0
                        },
                        set: function(value) {}
                    }]);
                    return NotificationManagerStub
                }(NotificationManagerBase);
                exports.NotificationManagerStub = NotificationManagerStub;
                let NotificationManager = function(_NotificationManagerB2) {
                    _inheritsLoose(NotificationManager, _NotificationManagerB2);

                    function NotificationManager(options) {
                        var _this;
                        _this = _NotificationManagerB2.call(this, options) || this;
                        _this._failedOperationCount = 0;
                        _this._operationInProgressCount = 0;
                        return _this
                    }
                    var _proto3 = NotificationManager.prototype;
                    _proto3.addOperation = function(processingMessage, allowCancel, allowProgressAutoUpdate) {
                        this._operationInProgressCount++;
                        const operationInfo = this._progressPanel.addOperation(processingMessage, allowCancel, allowProgressAutoUpdate);
                        operationInfo.__operationInfoManager = this._id;
                        this._updateActionProgress(processingMessage, ACTION_PROGRESS_STATUS_progress);
                        return operationInfo
                    };
                    _proto3.addOperationDetails = function(operationInfo, details, showCloseButton) {
                        this._progressPanel.addOperationDetails(operationInfo, details, showCloseButton)
                    };
                    _proto3.updateOperationItemProgress = function(operationInfo, itemIndex, itemProgress, commonProgress) {
                        this._progressPanel.updateOperationItemProgress(operationInfo, itemIndex, itemProgress, commonProgress)
                    };
                    _proto3.completeOperationItem = function(operationInfo, itemIndex, commonProgress) {
                        this._progressPanel.completeOperationItem(operationInfo, itemIndex, commonProgress)
                    };
                    _proto3.finishOperation = function(operationInfo, commonProgress) {
                        this._progressPanel.updateOperationCommonProgress(operationInfo, commonProgress)
                    };
                    _proto3.completeOperation = function(operationInfo, commonText, isError, statusText) {
                        this._operationInProgressCount--;
                        if (isError) {
                            this._failedOperationCount++
                        }
                        this._progressPanel.completeOperation(operationInfo, commonText, isError, statusText)
                    };
                    _proto3.completeSingleOperationWithError = function(operationInfo, errorInfo) {
                        this._progressPanel.completeSingleOperationWithError(operationInfo, errorInfo.detailErrorText);
                        this._notifyError(errorInfo)
                    };
                    _proto3.addOperationDetailsError = function(operationInfo, errorInfo) {
                        this._progressPanel.addOperationDetailsError(operationInfo, errorInfo.itemIndex, errorInfo.detailErrorText);
                        this._notifyError(errorInfo)
                    };
                    _proto3.handleDimensionChanged = function() {
                        if (this._progressPanel) {
                            this._progressPanel.$element().detach()
                        }
                        return true
                    };
                    _proto3.ensureProgressPanelCreated = function(container, options) {
                        if (!this._progressPanel) {
                            const $progressPanelElement = (0, _renderer.default)("<div>").appendTo(container);
                            const ProgressPanelClass = this._getProgressPanelComponent();
                            this._progressPanel = new ProgressPanelClass($progressPanelElement, (0, _extend.extend)({}, options, {
                                onOperationClosed: _ref2 => {
                                    let {
                                        info: info
                                    } = _ref2;
                                    return this._onProgressPanelOperationClosed(info)
                                }
                            }))
                        } else {
                            this._progressPanel.$element().appendTo(container)
                        }
                    };
                    _proto3._getProgressPanelComponent = function() {
                        return _uiFile_managerNotification.default
                    };
                    _proto3._onProgressPanelOperationClosed = function(operationInfo) {
                        if (operationInfo.hasError) {
                            this._failedOperationCount--;
                            this.tryHideActionProgress()
                        }
                    };
                    _proto3.tryHideActionProgress = function() {
                        if (this.hasNoOperations()) {
                            this._updateActionProgress("", ACTION_PROGRESS_STATUS_default)
                        }
                    };
                    _proto3.updateActionProgressStatus = function(operationInfo) {
                        if (operationInfo) {
                            const status = 0 === this._failedOperationCount ? ACTION_PROGRESS_STATUS_success : ACTION_PROGRESS_STATUS_error;
                            this._updateActionProgress("", status)
                        }
                    };
                    _proto3._notifyError = function(errorInfo) {
                        const status = this.hasNoOperations() ? ACTION_PROGRESS_STATUS_default : ACTION_PROGRESS_STATUS_error;
                        this._updateActionProgress(errorInfo.commonErrorText, status)
                    };
                    _proto3._updateActionProgress = function(message, status) {
                        this._actionProgressStatus = status;
                        this._raiseActionProgress(message, status)
                    };
                    _proto3.hasNoOperations = function() {
                        return 0 === this._operationInProgressCount && 0 === this._failedOperationCount
                    };
                    _createClass(NotificationManager, [{
                        key: "_operationInProgressCount",
                        get: function() {
                            return this._operationInProgressCountInternal
                        },
                        set: function(value) {
                            this._operationInProgressCountInternal = value
                        }
                    }, {
                        key: "_failedOperationCount",
                        get: function() {
                            return this._failedOperationCountInternal
                        },
                        set: function(value) {
                            this._failedOperationCountInternal = value
                        }
                    }]);
                    return NotificationManager
                }(NotificationManagerBase);
                exports.NotificationManager = NotificationManager
            },
        70166:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/file_manager/ui.file_manager.toolbar.js ***!
              \****************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _uiFile_manager = __webpack_require__( /*! ./ui.file_manager.common */ 75084);
                var _themes = __webpack_require__( /*! ../themes */ 75811);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _toolbar = _interopRequireDefault(__webpack_require__( /*! ../toolbar */ 71042));
                __webpack_require__( /*! ../drop_down_button */ 45231);

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

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const DEFAULT_ITEM_CONFIGS = {
                    showNavPane: {
                        location: "before"
                    },
                    create: {
                        location: "before",
                        compactMode: {
                            showText: "inMenu",
                            locateInMenu: "auto"
                        }
                    },
                    upload: {
                        location: "before",
                        compactMode: {
                            showText: "inMenu",
                            locateInMenu: "auto"
                        }
                    },
                    refresh: {
                        location: "after",
                        showText: "inMenu",
                        cssClass: "dx-filemanager-toolbar-has-large-icon",
                        compactMode: {
                            showText: "inMenu",
                            locateInMenu: "auto"
                        }
                    },
                    switchView: {
                        location: "after"
                    },
                    download: {
                        location: "before",
                        compactMode: {
                            showText: "inMenu",
                            locateInMenu: "auto"
                        }
                    },
                    move: {
                        location: "before",
                        compactMode: {
                            showText: "inMenu",
                            locateInMenu: "auto"
                        }
                    },
                    copy: {
                        location: "before",
                        compactMode: {
                            showText: "inMenu",
                            locateInMenu: "auto"
                        }
                    },
                    rename: {
                        location: "before",
                        compactMode: {
                            showText: "inMenu",
                            locateInMenu: "auto"
                        }
                    },
                    delete: {
                        location: "before",
                        compactMode: {
                            showText: "inMenu"
                        }
                    },
                    clearSelection: {
                        location: "after",
                        locateInMenu: "never",
                        compactMode: {
                            showText: "inMenu"
                        }
                    },
                    separator: {
                        location: "before"
                    }
                };
                const DEFAULT_ITEM_ALLOWED_PROPERTIES = ["visible", "location", "locateInMenu", "disabled", "showText"];
                const DEFAULT_ITEM_ALLOWED_OPTION_PROPERTIES = ["accessKey", "elementAttr", "height", "hint", "icon", "stylingMode", "tabIndex", "text", "width"];
                const ALWAYS_VISIBLE_TOOLBAR_ITEMS = ["separator", "switchView"];
                const REFRESH_ICON_MAP = {
                    default: "dx-filemanager-i dx-filemanager-i-refresh",
                    progress: "dx-filemanager-i dx-filemanager-i-progress",
                    success: "dx-filemanager-i dx-filemanager-i-done",
                    error: "dx-filemanager-i dx-filemanager-i-danger"
                };
                let FileManagerToolbar = function(_Widget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(FileManagerToolbar, _Widget);

                    function FileManagerToolbar() {
                        return _Widget.apply(this, arguments) || this
                    }
                    var _proto = FileManagerToolbar.prototype;
                    _proto._init = function() {
                        _Widget.prototype._init.call(this);
                        this._generalToolbarVisible = true;
                        this._refreshItemState = {
                            message: "",
                            status: "default"
                        }
                    };
                    _proto._initMarkup = function() {
                        this._createItemClickedAction();
                        this._$viewSwitcherPopup = (0, _renderer.default)("<div>").addClass("dx-filemanager-view-switcher-popup");
                        this._generalToolbar = this._createToolbar(this.option("generalItems"), !this._generalToolbarVisible);
                        this._fileToolbar = this._createToolbar(this.option("fileItems"), this._generalToolbarVisible);
                        this._$viewSwitcherPopup.appendTo(this.$element());
                        this.$element().addClass("dx-filemanager-toolbar dx-filemanager-general-toolbar")
                    };
                    _proto._render = function() {
                        _Widget.prototype._render.call(this);
                        const toolbar = this._getVisibleToolbar();
                        this._checkCompactMode(toolbar)
                    };
                    _proto._clean = function() {
                        delete this._commandManager;
                        delete this._itemClickedAction;
                        delete this._$viewSwitcherPopup;
                        delete this._generalToolbar;
                        delete this._fileToolbar;
                        _Widget.prototype._clean.call(this)
                    };
                    _proto._dimensionChanged = function(dimension) {
                        if (!dimension || "height" !== dimension) {
                            const toolbar = this._getVisibleToolbar();
                            this._checkCompactMode(toolbar)
                        }
                    };
                    _proto._getVisibleToolbar = function() {
                        return this._generalToolbarVisible ? this._generalToolbar : this._fileToolbar
                    };
                    _proto._createToolbar = function(items, hidden) {
                        const toolbarItems = this._getPreparedItems(items);
                        const $toolbar = (0, _renderer.default)("<div>").appendTo(this.$element());
                        const result = this._createComponent($toolbar, _toolbar.default, {
                            items: toolbarItems,
                            visible: !hidden,
                            onItemClick: args => this._raiseItemClicked(args)
                        });
                        result.compactMode = false;
                        return result
                    };
                    _proto._getPreparedItems = function(items) {
                        items = items.map(item => {
                            let extendedItem = item;
                            if ((0, _type.isString)(item)) {
                                extendedItem = {
                                    name: item
                                }
                            }
                            const commandName = extendedItem.name;
                            const preparedItem = this._configureItemByCommandName(commandName, extendedItem);
                            preparedItem.originalItemData = item;
                            if ("separator" !== commandName) {
                                this._setItemVisibleAvailable(preparedItem)
                            }
                            return preparedItem
                        });
                        this._updateSeparatorsVisibility(items);
                        return items
                    };
                    _proto._updateSeparatorsVisibility = function(items, toolbar) {
                        let hasModifications = false;
                        const menuItems = this._getMenuItems(toolbar);
                        const hasItemsBefore = {
                            before: false,
                            center: false,
                            after: false
                        };
                        const itemGroups = {
                            before: this._getItemsInGroup(items, menuItems, "before"),
                            center: this._getItemsInGroup(items, menuItems, "center"),
                            after: this._getItemsInGroup(items, menuItems, "after")
                        };
                        items.forEach((item, i) => {
                            const itemLocation = item.location;
                            if ("separator" === item.name) {
                                const isSeparatorVisible = hasItemsBefore[itemLocation] && this._groupHasItemsAfter(itemGroups[itemLocation]);
                                if (item.visible !== isSeparatorVisible) {
                                    hasModifications = true;
                                    item.visible = isSeparatorVisible
                                }
                                hasItemsBefore[itemLocation] = false
                            } else {
                                if (!this._isItemInMenu(menuItems, item)) {
                                    hasItemsBefore[itemLocation] = hasItemsBefore[itemLocation] || item.visible
                                }
                                itemGroups[itemLocation].shift()
                            }
                        });
                        if (toolbar && hasModifications) {
                            toolbar.repaint()
                        }
                        return hasModifications
                    };
                    _proto._getMenuItems = function(toolbar) {
                        const result = toolbar ? toolbar._getMenuItems() : [];
                        return result.map(menuItem => menuItem.originalItemData)
                    };
                    _proto._isItemInMenu = function(menuItems, item) {
                        return !!menuItems.length && "never" !== (0, _common.ensureDefined)(item.locateInMenu, "never") && -1 !== menuItems.indexOf(item.originalItemData)
                    };
                    _proto._getItemsInGroup = function(items, menuItems, groupName) {
                        return items.filter(item => item.location === groupName && !this._isItemInMenu(menuItems, item))
                    };
                    _proto._groupHasItemsAfter = function(items) {
                        for (let i = 0; i < items.length; i++) {
                            if ("separator" !== items[i].name && items[i].visible) {
                                return true
                            }
                        }
                        return false
                    };
                    _proto._configureItemByCommandName = function(commandName, item) {
                        var _result$options;
                        let result = {};
                        const command = this._commandManager.getCommandByName(commandName);
                        if (command) {
                            result = this._createCommandItem(command)
                        }
                        switch (commandName) {
                            case "separator":
                                result = this._createSeparatorItem();
                                break;
                            case "switchView":
                                result = this._createViewModeItem()
                        }
                        if (this._isDefaultItem(commandName)) {
                            const defaultConfig = DEFAULT_ITEM_CONFIGS[commandName];
                            (0, _extend.extend)(true, result, defaultConfig);
                            let resultCssClass = result.cssClass || "";
                            (0, _uiFile_manager.extendAttributes)(result, item, DEFAULT_ITEM_ALLOWED_PROPERTIES);
                            if ((0, _type.isDefined)(item.options)) {
                                (0, _uiFile_manager.extendAttributes)(result.options, item.options, DEFAULT_ITEM_ALLOWED_OPTION_PROPERTIES)
                            }(0, _uiFile_manager.extendAttributes)(result.options, item, ["text", "icon"]);
                            if (item.cssClass) {
                                resultCssClass = "".concat(resultCssClass, " ").concat(item.cssClass)
                            }
                            if (resultCssClass) {
                                result.cssClass = resultCssClass
                            }
                            if (!(0, _type.isDefined)(item.visible)) {
                                result._autoHide = true
                            }
                            if ("dxButton" === result.widget) {
                                if ("inMenu" === result.showText && !(0, _type.isDefined)(result.options.hint)) {
                                    result.options.hint = result.options.text
                                }
                                if (result.compactMode && !(0, _type.isDefined)(result.options.hint)) {
                                    this._configureHintForCompactMode(result)
                                }
                            }
                        } else {
                            (0, _extend.extend)(true, result, item);
                            if (!result.widget) {
                                result.widget = "dxButton"
                            }
                            if ("dxButton" === result.widget && !result.compactMode && !result.showText && result.options && result.options.icon && result.options.text) {
                                result.compactMode = {
                                    showText: "inMenu"
                                }
                            }
                        }
                        if (commandName && !result.name) {
                            (0, _extend.extend)(result, {
                                name: commandName
                            })
                        }
                        result.location = (0, _common.ensureDefined)(result.location, "before");
                        if (!(0, _type.isDefined)(null === (_result$options = result.options) || void 0 === _result$options ? void 0 : _result$options.stylingMode)) {
                            if ("dxButton" === result.widget) {
                                (0, _extend.extend)(true, result, {
                                    options: {
                                        stylingMode: "text"
                                    }
                                })
                            }
                            if ("dxSelectBox" === result.widget) {
                                (0, _extend.extend)(true, result, {
                                    options: {
                                        stylingMode: "filled"
                                    }
                                })
                            }
                        }
                        return result
                    };
                    _proto._isDefaultItem = function(commandName) {
                        return !!DEFAULT_ITEM_CONFIGS[commandName]
                    };
                    _proto._createCommandItem = function(command) {
                        return {
                            widget: "dxButton",
                            options: {
                                text: command.text,
                                hint: command.hint,
                                commandText: command.text,
                                icon: command.icon,
                                stylingMode: "text",
                                onClick: e => this._executeCommand(command)
                            }
                        }
                    };
                    _proto._createSeparatorItem = function() {
                        return {
                            template: (data, index, element) => {
                                (0, _renderer.default)(element).addClass("dx-filemanager-toolbar-separator-item")
                            }
                        }
                    };
                    _proto._createViewModeItem = function() {
                        const commandItems = ["details", "thumbnails"].map(name => {
                            const {
                                text: text,
                                icon: icon
                            } = this._commandManager.getCommandByName(name);
                            return {
                                name: name,
                                text: text,
                                icon: icon
                            }
                        });
                        const selectedIndex = "thumbnails" === this.option("itemViewMode") ? 1 : 0;
                        const dropDownOptions = {
                            container: this._$viewSwitcherPopup
                        };
                        if ((0, _themes.isMaterial)()) {
                            dropDownOptions.width = (0, _themes.isCompact)() ? 28 : 36
                        } else if ((0, _themes.isFluent)()) {
                            dropDownOptions.width = (0, _themes.isCompact)() ? 34 : 40
                        }
                        return {
                            cssClass: "dx-filemanager-toolbar-viewmode-item",
                            widget: "dxDropDownButton",
                            options: {
                                items: commandItems,
                                keyExpr: "name",
                                selectedItemKey: this.option("itemViewMode"),
                                displayExpr: " ",
                                hint: commandItems[selectedIndex].text,
                                stylingMode: "text",
                                showArrowIcon: false,
                                useSelectMode: true,
                                dropDownOptions: dropDownOptions,
                                onItemClick: e => this._executeCommand(e.itemData.name)
                            }
                        }
                    };
                    _proto._configureHintForCompactMode = function(item) {
                        item.options.hint = "";
                        item.compactMode.options = item.compactMode.options || {};
                        item.compactMode.options.hint = item.options.text
                    };
                    _proto._checkCompactMode = function(toolbar) {
                        if (toolbar.compactMode) {
                            this._toggleCompactMode(toolbar, false)
                        }
                        const useCompactMode = this._toolbarHasItemsOverflow(toolbar);
                        if (toolbar.compactMode !== useCompactMode) {
                            if (!toolbar.compactMode) {
                                this._toggleCompactMode(toolbar, useCompactMode)
                            }
                            toolbar.compactMode = useCompactMode
                        } else if (toolbar.compactMode) {
                            this._toggleCompactMode(toolbar, true)
                        }
                    };
                    _proto._toolbarHasItemsOverflow = function(toolbar) {
                        const toolbarWidth = (0, _size.getWidth)(toolbar.$element());
                        const itemsWidth = toolbar._getItemsWidth();
                        return toolbarWidth < itemsWidth
                    };
                    _proto._toggleCompactMode = function(toolbar, useCompactMode) {
                        let hasModifications = false;
                        const items = toolbar.option("items");
                        items.forEach(item => {
                            if (item.compactMode) {
                                let optionsSource = null;
                                if (useCompactMode) {
                                    item.saved = this._getCompactModeOptions(item, item._available);
                                    optionsSource = item.compactMode
                                } else {
                                    optionsSource = item.saved
                                }
                                const options = this._getCompactModeOptions(optionsSource, item._available);
                                (0, _extend.extend)(true, item, options);
                                hasModifications = true
                            }
                        });
                        hasModifications = this._updateSeparatorsVisibility(items) || hasModifications;
                        if (hasModifications) {
                            toolbar.repaint()
                        }
                        this._updateSeparatorsVisibility(items, toolbar)
                    };
                    _proto._getCompactModeOptions = function(_ref, available) {
                        let {
                            showText: showText,
                            locateInMenu: locateInMenu,
                            options: options
                        } = _ref;
                        return {
                            visible: available,
                            showText: (0, _common.ensureDefined)(showText, "always"),
                            locateInMenu: (0, _common.ensureDefined)(locateInMenu, "never"),
                            options: {
                                hint: null === options || void 0 === options ? void 0 : options.hint
                            }
                        }
                    };
                    _proto._ensureAvailableCommandsVisible = function(toolbar) {
                        let hasModifications = false;
                        const items = toolbar.option("items");
                        items.forEach(item => {
                            if ("separator" !== item.name) {
                                const itemVisible = item._available;
                                this._setItemVisibleAvailable(item);
                                if (item._available !== itemVisible) {
                                    hasModifications = true
                                }
                            }
                        });
                        hasModifications = this._updateSeparatorsVisibility(items) || hasModifications;
                        if (hasModifications) {
                            toolbar.repaint()
                        }
                        this._updateSeparatorsVisibility(items, toolbar)
                    };
                    _proto._setItemVisibleAvailable = function(item) {
                        var _item$originalItemDat;
                        const originalVisible = null === (_item$originalItemDat = item.originalItemData) || void 0 === _item$originalItemDat ? void 0 : _item$originalItemDat.visible;
                        item._available = this._isToolbarItemAvailable(item);
                        item.visible = (0, _type.isDefined)(originalVisible) ? originalVisible : item._available
                    };
                    _proto._fileToolbarHasEffectiveItems = function() {
                        const items = this._fileToolbar.option("items");
                        return items.some(item => this._isFileToolbarItemAvailable(item))
                    };
                    _proto._executeCommand = function(command) {
                        this._commandManager.executeCommand(command)
                    };
                    _proto._isToolbarItemAvailable = function(toolbarItem) {
                        if (!this._isDefaultItem(toolbarItem.name) || !toolbarItem._autoHide) {
                            return (0, _common.ensureDefined)(toolbarItem.visible, true)
                        }
                        if ("refresh" === toolbarItem.name) {
                            return this._generalToolbarVisible || !!this._isRefreshVisibleInFileToolbar
                        }
                        if (ALWAYS_VISIBLE_TOOLBAR_ITEMS.indexOf(toolbarItem.name) > -1) {
                            return true
                        }
                        return this._isCommandAvailable(toolbarItem.name)
                    };
                    _proto._isFileToolbarItemAvailable = function(_ref2) {
                        let {
                            name: name,
                            visible: visible
                        } = _ref2;
                        return !this._isDefaultItem(name) && (0, _common.ensureDefined)(visible, true) || "clearSelection" !== name && "refresh" !== name && this._isCommandAvailable(name)
                    };
                    _proto._isCommandAvailable = function(name) {
                        return this._commandManager.isCommandAvailable(name, this.option("contextItems"))
                    };
                    _proto._updateItemInToolbar = function(toolbar, commandName, options) {
                        toolbar.beginUpdate();
                        const items = toolbar.option("items");
                        for (let i = 0; i < items.length; i++) {
                            const item = items[i];
                            if (item.name === commandName) {
                                toolbar.option("items[".concat(i, "]"), options);
                                break
                            }
                        }
                        toolbar.endUpdate()
                    };
                    _proto._raiseItemClicked = function(args) {
                        const changedArgs = (0, _extend.extend)(true, {}, args);
                        changedArgs.itemData = args.itemData.originalItemData;
                        this._itemClickedAction(changedArgs)
                    };
                    _proto._createItemClickedAction = function() {
                        this._itemClickedAction = this._createActionByOption("onItemClick")
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_Widget.prototype._getDefaultOptions.call(this), {
                            commandManager: null,
                            generalItems: [],
                            fileItems: [],
                            contextItems: [],
                            itemViewMode: "details",
                            onItemClick: null
                        })
                    };
                    _proto._optionChanged = function(args) {
                        const name = args.name;
                        switch (name) {
                            case "commandManager":
                            case "itemViewMode":
                            case "generalItems":
                            case "fileItems":
                                this.repaint();
                                break;
                            case "contextItems":
                                this._update();
                                break;
                            case "onItemClick":
                                this._itemClickedAction = this._createActionByOption(name);
                                break;
                            default:
                                _Widget.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto.updateItemPermissions = function() {
                        this.repaint();
                        this._restoreRefreshItemState()
                    };
                    _proto._restoreRefreshItemState = function() {
                        this.updateRefreshItem(this._refreshItemState.message, this._refreshItemState.status)
                    };
                    _proto.updateRefreshItem = function(message, status) {
                        let generalToolbarOptions = null;
                        let text = _message.default.format("dxFileManager-commandRefresh");
                        let showText = "inMenu";
                        this._isRefreshVisibleInFileToolbar = false;
                        this._refreshItemState = {
                            message: message,
                            status: status
                        };
                        if ("default" === status) {
                            generalToolbarOptions = {
                                options: {
                                    icon: REFRESH_ICON_MAP.default
                                }
                            }
                        } else {
                            generalToolbarOptions = {
                                options: {
                                    icon: REFRESH_ICON_MAP[status]
                                }
                            };
                            this._isRefreshVisibleInFileToolbar = true;
                            text = message;
                            showText = "always"
                        }
                        const fileToolbarOptions = (0, _extend.extend)({}, generalToolbarOptions, {
                            visible: this._isRefreshVisibleInFileToolbar
                        });
                        this._applyRefreshItemOptions(generalToolbarOptions, fileToolbarOptions);
                        this._refreshItemTextTimeout = this._updateRefreshItemText("progress" === status, text, showText)
                    };
                    _proto._updateRefreshItemText = function(isDeferredUpdate, text, showText) {
                        const options = {
                            showText: showText,
                            options: {
                                text: text
                            }
                        };
                        if (isDeferredUpdate) {
                            return setTimeout(() => {
                                this._applyRefreshItemOptions(options);
                                this._refreshItemTextTimeout = void 0
                            }, 500)
                        } else {
                            if (this._refreshItemTextTimeout) {
                                clearTimeout(this._refreshItemTextTimeout)
                            }
                            this._applyRefreshItemOptions(options);
                            return
                        }
                    };
                    _proto._applyRefreshItemOptions = function(generalToolbarOptions, fileToolbarOptions) {
                        if (!fileToolbarOptions) {
                            fileToolbarOptions = (0, _extend.extend)({}, generalToolbarOptions)
                        }
                        this._updateItemInToolbar(this._generalToolbar, "refresh", generalToolbarOptions);
                        this._updateItemInToolbar(this._fileToolbar, "refresh", fileToolbarOptions)
                    };
                    _proto._update = function() {
                        const showGeneralToolbar = 0 === this.option("contextItems").length || !this._fileToolbarHasEffectiveItems();
                        if (this._generalToolbarVisible !== showGeneralToolbar) {
                            this._generalToolbar.option("visible", showGeneralToolbar);
                            this._fileToolbar.option("visible", !showGeneralToolbar);
                            this._generalToolbarVisible = showGeneralToolbar;
                            this.$element().toggleClass("dx-filemanager-general-toolbar", showGeneralToolbar);
                            this.$element().toggleClass("dx-filemanager-file-toolbar", !showGeneralToolbar)
                        }
                        const toolbar = this._getVisibleToolbar();
                        this._ensureAvailableCommandsVisible(toolbar);
                        this._checkCompactMode(toolbar)
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(FileManagerToolbar, [{
                        key: "_commandManager",
                        get: function() {
                            return this.option("commandManager")
                        }
                    }]);
                    return FileManagerToolbar
                }(_ui.default);
                var _default = FileManagerToolbar;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        53749:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/file_uploader.js ***!
              \*****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../core/guid */ 73176));
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../events/core/events_engine */ 55994));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../core/utils/callbacks */ 44504));
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);
                var _ajax = _interopRequireDefault(__webpack_require__( /*! ../core/utils/ajax */ 37208));
                var _editor = _interopRequireDefault(__webpack_require__( /*! ./editor/editor */ 96452));
                var _button = _interopRequireDefault(__webpack_require__( /*! ./button */ 63008));
                var _progress_bar = _interopRequireDefault(__webpack_require__( /*! ./progress_bar */ 28080));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../core/devices */ 20530));
                var _index = __webpack_require__( /*! ../events/utils/index */ 39611);
                var _click = __webpack_require__( /*! ../events/click */ 95429);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../localization/message */ 28109));
                var _themes = __webpack_require__( /*! ./themes */ 75811);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../core/dom_adapter */ 73349));

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

                function _inheritsLoose(subClass, superClass) {
                    subClass.prototype = Object.create(superClass.prototype);
                    subClass.prototype.constructor = subClass;
                    _setPrototypeOf(subClass, superClass)
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const window = (0, _window.getWindow)();
                const isFormDataSupported = () => !!window.FormData;
                let FileUploader = function(_Editor) {
                    _inheritsLoose(FileUploader, _Editor);

                    function FileUploader() {
                        return _Editor.apply(this, arguments) || this
                    }
                    var _proto = FileUploader.prototype;
                    _proto._supportedKeys = function() {
                        const click = e => {
                            e.preventDefault();
                            const $selectButton = this._selectButton.$element();
                            _events_engine.default.trigger($selectButton, _click.name)
                        };
                        return (0, _extend.extend)(_Editor.prototype._supportedKeys.call(this), {
                            space: click,
                            enter: click
                        })
                    };
                    _proto._setOptionsByReference = function() {
                        _Editor.prototype._setOptionsByReference.call(this);
                        (0, _extend.extend)(this._optionsByReference, {
                            value: true
                        })
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_Editor.prototype._getDefaultOptions.call(this), {
                            chunkSize: 0,
                            value: [],
                            selectButtonText: _message.default.format("dxFileUploader-selectFile"),
                            uploadButtonText: _message.default.format("dxFileUploader-upload"),
                            labelText: _message.default.format("dxFileUploader-dropFile"),
                            name: "files[]",
                            multiple: false,
                            accept: "",
                            uploadUrl: "/",
                            allowCanceling: true,
                            showFileList: true,
                            progress: 0,
                            dialogTrigger: void 0,
                            dropZone: void 0,
                            readyToUploadMessage: _message.default.format("dxFileUploader-readyToUpload"),
                            uploadedMessage: _message.default.format("dxFileUploader-uploaded"),
                            uploadFailedMessage: _message.default.format("dxFileUploader-uploadFailedMessage"),
                            uploadAbortedMessage: _message.default.format("dxFileUploader-uploadAbortedMessage"),
                            uploadMode: "instantly",
                            uploadMethod: "POST",
                            uploadHeaders: {},
                            uploadCustomData: {},
                            onBeforeSend: null,
                            onUploadStarted: null,
                            onUploaded: null,
                            onFilesUploaded: null,
                            onProgress: null,
                            onUploadError: null,
                            onUploadAborted: null,
                            onDropZoneEnter: null,
                            onDropZoneLeave: null,
                            allowedFileExtensions: [],
                            maxFileSize: 0,
                            minFileSize: 0,
                            inputAttr: {},
                            invalidFileExtensionMessage: _message.default.format("dxFileUploader-invalidFileExtension"),
                            invalidMaxFileSizeMessage: _message.default.format("dxFileUploader-invalidMaxFileSize"),
                            invalidMinFileSizeMessage: _message.default.format("dxFileUploader-invalidMinFileSize"),
                            extendSelection: true,
                            validationMessageMode: "always",
                            uploadFile: null,
                            uploadChunk: null,
                            abortUpload: null,
                            validationMessageOffset: {
                                h: 0,
                                v: 0
                            },
                            hoverStateEnabled: true,
                            useNativeInputClick: false,
                            useDragOver: true,
                            nativeDropSupported: true,
                            _uploadButtonType: "normal",
                            _buttonStylingMode: "contained"
                        })
                    };
                    _proto._defaultOptionsRules = function() {
                        return _Editor.prototype._defaultOptionsRules.call(this).concat([{
                            device: () => "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator(),
                            options: {
                                focusStateEnabled: true
                            }
                        }, {
                            device: [{
                                platform: "android"
                            }],
                            options: {
                                validationMessageOffset: {
                                    v: 0
                                }
                            }
                        }, {
                            device: () => "desktop" !== _devices.default.real().deviceType,
                            options: {
                                useDragOver: false
                            }
                        }, {
                            device: () => !isFormDataSupported(),
                            options: {
                                uploadMode: "useForm"
                            }
                        }, {
                            device: () => "desktop" !== _devices.default.real().deviceType,
                            options: {
                                nativeDropSupported: false
                            }
                        }, {
                            device: () => (0, _themes.isMaterial)(),
                            options: {
                                _uploadButtonType: "default"
                            }
                        }, {
                            device: () => (0, _themes.isFluent)(),
                            options: {
                                _buttonStylingMode: "text"
                            }
                        }])
                    };
                    _proto._initOptions = function(options) {
                        const isLabelTextDefined = "labelText" in options;
                        _Editor.prototype._initOptions.call(this, options);
                        if (!isLabelTextDefined && !this._shouldDragOverBeRendered()) {
                            this.option("labelText", "")
                        }
                    };
                    _proto._init = function() {
                        _Editor.prototype._init.call(this);
                        this._initFileInput();
                        this._initLabel();
                        this._setUploadStrategy();
                        this._createFiles();
                        this._createBeforeSendAction();
                        this._createUploadStartedAction();
                        this._createUploadedAction();
                        this._createFilesUploadedAction();
                        this._createProgressAction();
                        this._createUploadErrorAction();
                        this._createUploadAbortedAction();
                        this._createDropZoneEnterAction();
                        this._createDropZoneLeaveAction()
                    };
                    _proto._setUploadStrategy = function() {
                        let strategy = null;
                        if (this.option("chunkSize") > 0) {
                            const uploadChunk = this.option("uploadChunk");
                            strategy = uploadChunk && (0, _type.isFunction)(uploadChunk) ? new CustomChunksFileUploadStrategy(this) : new DefaultChunksFileUploadStrategy(this)
                        } else {
                            const uploadFile = this.option("uploadFile");
                            strategy = uploadFile && (0, _type.isFunction)(uploadFile) ? new CustomWholeFileUploadStrategy(this) : new DefaultWholeFileUploadStrategy(this)
                        }
                        this._uploadStrategy = strategy
                    };
                    _proto._initFileInput = function() {
                        this._isCustomClickEvent = false;
                        if (!this._$fileInput) {
                            this._$fileInput = (0, _renderer.default)("<input>").attr("type", "file");
                            _events_engine.default.on(this._$fileInput, "change", this._inputChangeHandler.bind(this));
                            _events_engine.default.on(this._$fileInput, "click", e => {
                                e.stopPropagation();
                                this._resetInputValue();
                                return this.option("useNativeInputClick") || this._isCustomClickEvent
                            })
                        }
                        this._$fileInput.prop({
                            multiple: this.option("multiple"),
                            accept: this.option("accept"),
                            title: this.option("hint") || null,
                            tabIndex: -1
                        })
                    };
                    _proto._inputChangeHandler = function() {
                        if (this._doPreventInputChange) {
                            return
                        }
                        const fileName = this._$fileInput.val().replace(/^.*\\/, "");
                        const files = this._$fileInput.prop("files");
                        if (files && !files.length && "useForm" !== this.option("uploadMode")) {
                            return
                        }
                        const value = files ? this._getFiles(files) : [{
                            name: fileName
                        }];
                        this._changeValue(value);
                        if ("instantly" === this.option("uploadMode")) {
                            this._uploadFiles()
                        }
                    };
                    _proto._shouldFileListBeExtended = function() {
                        return "useForm" !== this.option("uploadMode") && this.option("extendSelection") && this.option("multiple")
                    };
                    _proto._changeValue = function(value) {
                        const files = this._shouldFileListBeExtended() ? this.option("value").slice() : [];
                        this.option("value", files.concat(value))
                    };
                    _proto._getFiles = function(fileList) {
                        const values = [];
                        (0, _iterator.each)(fileList, (_, value) => values.push(value));
                        return values
                    };
                    _proto._getFile = function(fileData) {
                        const targetFileValue = (0, _type.isNumeric)(fileData) ? this.option("value")[fileData] : fileData;
                        return this._files.filter(file => file.value === targetFileValue)[0]
                    };
                    _proto._initLabel = function() {
                        if (!this._$inputLabel) {
                            this._$inputLabel = (0, _renderer.default)("<div>")
                        }
                        this._updateInputLabelText()
                    };
                    _proto._updateInputLabelText = function() {
                        const correctedValue = this._isInteractionDisabled() ? "" : this.option("labelText");
                        this._$inputLabel.text(correctedValue)
                    };
                    _proto._focusTarget = function() {
                        return this.$element().find(".dx-fileuploader-button")
                    };
                    _proto._getSubmitElement = function() {
                        return this._$fileInput
                    };
                    _proto._initMarkup = function() {
                        _Editor.prototype._initMarkup.call(this);
                        this.$element().addClass("dx-fileuploader");
                        this._renderWrapper();
                        this._renderInputWrapper();
                        this._renderSelectButton();
                        this._renderInputContainer();
                        this._renderUploadButton();
                        this._preventRecreatingFiles = true;
                        this._activeDropZone = null
                    };
                    _proto._render = function() {
                        this._preventRecreatingFiles = false;
                        this._attachDragEventHandlers(this._$inputWrapper);
                        this._attachDragEventHandlers(this.option("dropZone"));
                        this._renderFiles();
                        _Editor.prototype._render.call(this)
                    };
                    _proto._createFileProgressBar = function(file) {
                        file.progressBar = this._createProgressBar(file.value.size);
                        file.progressBar.$element().appendTo(file.$file);
                        this._initStatusMessage(file);
                        this._ensureCancelButtonInitialized(file)
                    };
                    _proto._setStatusMessage = function(file, message) {
                        setTimeout(() => {
                            if (this.option("showFileList")) {
                                if (file.$statusMessage) {
                                    file.$statusMessage.text(message);
                                    file.$statusMessage.css("display", "");
                                    file.progressBar.$element().remove()
                                }
                            }
                        }, 400)
                    };
                    _proto._getUploadAbortedStatusMessage = function() {
                        return "instantly" === this.option("uploadMode") ? this.option("uploadAbortedMessage") : this.option("readyToUploadMessage")
                    };
                    _proto._createFiles = function() {
                        const value = this.option("value");
                        if (this._files && (0 === value.length || !this._shouldFileListBeExtended())) {
                            this._preventFilesUploading(this._files);
                            this._files = null
                        }
                        if (!this._files) {
                            this._files = []
                        }(0, _iterator.each)(value.slice(this._files.length), (_, value) => {
                            const file = this._createFile(value);
                            this._validateFile(file);
                            this._files.push(file)
                        })
                    };
                    _proto._preventFilesUploading = function(files) {
                        files.forEach(file => this._uploadStrategy.abortUpload(file))
                    };
                    _proto._validateFile = function(file) {
                        file.isValidFileExtension = this._validateFileExtension(file);
                        file.isValidMinSize = this._validateMinFileSize(file);
                        file.isValidMaxSize = this._validateMaxFileSize(file)
                    };
                    _proto._validateFileExtension = function(file) {
                        const allowedExtensions = this.option("allowedFileExtensions");
                        const accept = this.option("accept");
                        const allowedTypes = this._getAllowedFileTypes(accept);
                        const fileExtension = file.value.name.substring(file.value.name.lastIndexOf(".")).toLowerCase();
                        if (0 !== accept.length && !this._isFileTypeAllowed(file.value, allowedTypes)) {
                            return false
                        }
                        if (0 === allowedExtensions.length) {
                            return true
                        }
                        for (let i = 0; i < allowedExtensions.length; i++) {
                            if (fileExtension === allowedExtensions[i].toLowerCase()) {
                                return true
                            }
                        }
                        return false
                    };
                    _proto._validateMaxFileSize = function(file) {
                        const fileSize = file.value.size;
                        const maxFileSize = this.option("maxFileSize");
                        return maxFileSize > 0 ? fileSize <= maxFileSize : true
                    };
                    _proto._validateMinFileSize = function(file) {
                        const fileSize = file.value.size;
                        const minFileSize = this.option("minFileSize");
                        return minFileSize > 0 ? fileSize >= minFileSize : true
                    };
                    _proto._createBeforeSendAction = function() {
                        this._beforeSendAction = this._createActionByOption("onBeforeSend", {
                            excludeValidators: ["readOnly"]
                        })
                    };
                    _proto._createUploadStartedAction = function() {
                        this._uploadStartedAction = this._createActionByOption("onUploadStarted", {
                            excludeValidators: ["readOnly"]
                        })
                    };
                    _proto._createUploadedAction = function() {
                        this._uploadedAction = this._createActionByOption("onUploaded", {
                            excludeValidators: ["readOnly"]
                        })
                    };
                    _proto._createFilesUploadedAction = function() {
                        this._filesUploadedAction = this._createActionByOption("onFilesUploaded", {
                            excludeValidators: ["readOnly"]
                        })
                    };
                    _proto._createProgressAction = function() {
                        this._progressAction = this._createActionByOption("onProgress", {
                            excludeValidators: ["readOnly"]
                        })
                    };
                    _proto._createUploadAbortedAction = function() {
                        this._uploadAbortedAction = this._createActionByOption("onUploadAborted", {
                            excludeValidators: ["readOnly"]
                        })
                    };
                    _proto._createUploadErrorAction = function() {
                        this._uploadErrorAction = this._createActionByOption("onUploadError", {
                            excludeValidators: ["readOnly"]
                        })
                    };
                    _proto._createDropZoneEnterAction = function() {
                        this._dropZoneEnterAction = this._createActionByOption("onDropZoneEnter")
                    };
                    _proto._createDropZoneLeaveAction = function() {
                        this._dropZoneLeaveAction = this._createActionByOption("onDropZoneLeave")
                    };
                    _proto._createFile = function(value) {
                        return {
                            value: value,
                            loadedSize: 0,
                            onProgress: (0, _callbacks.default)(),
                            onAbort: (0, _callbacks.default)(),
                            onLoad: (0, _callbacks.default)(),
                            onError: (0, _callbacks.default)(),
                            onLoadStart: (0, _callbacks.default)(),
                            isValidFileExtension: true,
                            isValidMaxSize: true,
                            isValidMinSize: true,
                            isValid() {
                                return this.isValidFileExtension && this.isValidMaxSize && this.isValidMinSize
                            },
                            isInitialized: false
                        }
                    };
                    _proto._resetFileState = function(file) {
                        file.isAborted = false;
                        file.uploadStarted = false;
                        file.isStartLoad = false;
                        file.loadedSize = 0;
                        file.chunksData = void 0;
                        file.request = void 0
                    };
                    _proto._renderFiles = function() {
                        var _this$_validationMess;
                        const value = this.option("value");
                        if (!this._$filesContainer) {
                            this._$filesContainer = (0, _renderer.default)("<div>").addClass("dx-fileuploader-files-container").appendTo(this._$content)
                        } else if (!this._shouldFileListBeExtended() || 0 === value.length) {
                            this._$filesContainer.empty()
                        }
                        const showFileList = this.option("showFileList");
                        if (showFileList) {
                            (0, _iterator.each)(this._files, (_, file) => {
                                if (!file.$file) {
                                    this._renderFile(file)
                                }
                            })
                        }
                        this.$element().toggleClass("dx-fileuploader-show-file-list", showFileList);
                        this._toggleFileUploaderEmptyClassName();
                        this._updateFileNameMaxWidth();
                        null === (_this$_validationMess = this._validationMessage) || void 0 === _this$_validationMess ? void 0 : _this$_validationMess.repaint()
                    };
                    _proto._renderFile = function(file) {
                        const value = file.value;
                        const $fileContainer = (0, _renderer.default)("<div>").addClass("dx-fileuploader-file-container").appendTo(this._$filesContainer);
                        this._renderFileButtons(file, $fileContainer);
                        file.$file = (0, _renderer.default)("<div>").addClass("dx-fileuploader-file").appendTo($fileContainer);
                        const $fileInfo = (0, _renderer.default)("<div>").addClass("dx-fileuploader-file-info").appendTo(file.$file);
                        file.$statusMessage = (0, _renderer.default)("<div>").addClass("dx-fileuploader-file-status-message").appendTo(file.$file);
                        (0, _renderer.default)("<div>").addClass("dx-fileuploader-file-name").text(value.name).appendTo($fileInfo);
                        if ((0, _type.isDefined)(value.size)) {
                            (0, _renderer.default)("<div>").addClass("dx-fileuploader-file-size").text(this._getFileSize(value.size)).appendTo($fileInfo)
                        }
                        if (file.isValid()) {
                            file.$statusMessage.text(this.option("readyToUploadMessage"))
                        } else {
                            if (!file.isValidFileExtension) {
                                file.$statusMessage.append(this._createValidationElement("invalidFileExtensionMessage"))
                            }
                            if (!file.isValidMaxSize) {
                                file.$statusMessage.append(this._createValidationElement("invalidMaxFileSizeMessage"))
                            }
                            if (!file.isValidMinSize) {
                                file.$statusMessage.append(this._createValidationElement("invalidMinFileSizeMessage"))
                            }
                            $fileContainer.addClass("dx-fileuploader-invalid")
                        }
                    };
                    _proto._createValidationElement = function(key) {
                        return (0, _renderer.default)("<span>").text(this.option(key))
                    };
                    _proto._updateFileNameMaxWidth = function() {
                        const cancelButtonsCount = this.option("allowCanceling") && "useForm" !== this.option("uploadMode") ? 1 : 0;
                        const uploadButtonsCount = "useButtons" === this.option("uploadMode") ? 1 : 0;
                        const filesContainerWidth = (0, _size.getWidth)(this._$filesContainer.find(".dx-fileuploader-file-container").first()) || (0, _size.getWidth)(this._$filesContainer);
                        const $buttonContainer = this._$filesContainer.find(".dx-fileuploader-button-container").eq(0);
                        const buttonsWidth = (0, _size.getWidth)($buttonContainer) * (cancelButtonsCount + uploadButtonsCount);
                        const $fileSize = this._$filesContainer.find(".dx-fileuploader-file-size").eq(0);
                        const prevFileSize = $fileSize.text();
                        $fileSize.text("1000 Mb");
                        const fileSizeWidth = (0, _size.getWidth)($fileSize);
                        $fileSize.text(prevFileSize);
                        this._$filesContainer.find(".dx-fileuploader-file-name").css("maxWidth", filesContainerWidth - buttonsWidth - fileSizeWidth)
                    };
                    _proto._renderFileButtons = function(file, $container) {
                        const $cancelButton = this._getCancelButton(file);
                        $cancelButton && $container.append($cancelButton);
                        const $uploadButton = this._getUploadButton(file);
                        $uploadButton && $container.append($uploadButton)
                    };
                    _proto._getCancelButton = function(file) {
                        if ("useForm" === this.option("uploadMode")) {
                            return null
                        }
                        const {
                            allowCanceling: allowCanceling,
                            readOnly: readOnly,
                            hoverStateEnabled: hoverStateEnabled,
                            _buttonStylingMode: _buttonStylingMode
                        } = this.option();
                        file.cancelButton = this._createComponent((0, _renderer.default)("<div>").addClass("dx-fileuploader-button dx-fileuploader-cancel-button"), _button.default, {
                            onClick: () => this._removeFile(file),
                            icon: "close",
                            visible: allowCanceling,
                            disabled: readOnly,
                            integrationOptions: {},
                            hoverStateEnabled: hoverStateEnabled,
                            stylingMode: _buttonStylingMode
                        });
                        return (0, _renderer.default)("<div>").addClass("dx-fileuploader-button-container").append(file.cancelButton.$element())
                    };
                    _proto._getUploadButton = function(file) {
                        if (!file.isValid() || "useButtons" !== this.option("uploadMode")) {
                            return null
                        }
                        const {
                            hoverStateEnabled: hoverStateEnabled,
                            _buttonStylingMode: _buttonStylingMode
                        } = this.option();
                        file.uploadButton = this._createComponent((0, _renderer.default)("<div>").addClass("dx-fileuploader-button dx-fileuploader-upload-button"), _button.default, {
                            onClick: () => this._uploadFile(file),
                            icon: "upload",
                            hoverStateEnabled: hoverStateEnabled,
                            stylingMode: _buttonStylingMode
                        });
                        file.onLoadStart.add(() => file.uploadButton.option({
                            visible: false,
                            disabled: true
                        }));
                        file.onAbort.add(() => file.uploadButton.option({
                            visible: true,
                            disabled: false
                        }));
                        return (0, _renderer.default)("<div>").addClass("dx-fileuploader-button-container").append(file.uploadButton.$element())
                    };
                    _proto._removeFile = function(file) {
                        var _file$$file;
                        null === (_file$$file = file.$file) || void 0 === _file$$file ? void 0 : _file$$file.parent().remove();
                        this._files.splice(this._files.indexOf(file), 1);
                        const value = this.option("value").slice();
                        value.splice(value.indexOf(file.value), 1);
                        this._preventRecreatingFiles = true;
                        this.option("value", value);
                        this._preventRecreatingFiles = false;
                        this._toggleFileUploaderEmptyClassName();
                        this._resetInputValue(true)
                    };
                    _proto.removeFile = function(fileData) {
                        if ("useForm" === this.option("uploadMode") || !(0, _type.isDefined)(fileData)) {
                            return
                        }
                        const file = this._getFile(fileData);
                        if (file) {
                            if (file.uploadStarted) {
                                this._preventFilesUploading([file])
                            }
                            this._removeFile(file)
                        }
                    };
                    _proto._toggleFileUploaderEmptyClassName = function() {
                        this.$element().toggleClass("dx-fileuploader-empty", !this._files.length || this._hasInvalidFile(this._files))
                    };
                    _proto._hasInvalidFile = function(files) {
                        for (let i = 0; i < files.length; i++) {
                            if (!files[i].isValid()) {
                                return true
                            }
                        }
                        return false
                    };
                    _proto._getFileSize = function(size) {
                        let i = 0;
                        const labels = [_message.default.format("dxFileUploader-bytes"), _message.default.format("dxFileUploader-kb"), _message.default.format("dxFileUploader-Mb"), _message.default.format("dxFileUploader-Gb")];
                        const count = labels.length - 1;
                        while (i < count && size >= 1024) {
                            size /= 1024;
                            i++
                        }
                        return Math.round(size) + " " + labels[i]
                    };
                    _proto._renderSelectButton = function() {
                        const $button = (0, _renderer.default)("<div>").addClass("dx-fileuploader-button").appendTo(this._$inputWrapper);
                        this._selectButton = this._createComponent($button, _button.default, {
                            text: this.option("selectButtonText"),
                            focusStateEnabled: false,
                            integrationOptions: {},
                            disabled: this.option("readOnly"),
                            hoverStateEnabled: this.option("hoverStateEnabled")
                        });
                        this._selectFileDialogHandler = this._selectButtonClickHandler.bind(this);
                        if ("desktop" === _devices.default.real().deviceType) {
                            this._selectButton.option("onClick", this._selectFileDialogHandler)
                        } else {
                            this._attachSelectFileDialogHandler(this._selectButton.$element())
                        }
                        this._attachSelectFileDialogHandler(this.option("dialogTrigger"))
                    };
                    _proto._selectButtonClickHandler = function() {
                        if (this.option("useNativeInputClick")) {
                            return
                        }
                        if (this._isInteractionDisabled()) {
                            return false
                        }
                        this._isCustomClickEvent = true;
                        _events_engine.default.trigger(this._$fileInput, "click");
                        this._isCustomClickEvent = false
                    };
                    _proto._attachSelectFileDialogHandler = function(target) {
                        if (!(0, _type.isDefined)(target)) {
                            return
                        }
                        this._detachSelectFileDialogHandler(target);
                        _events_engine.default.on((0, _renderer.default)(target), "click", this._selectFileDialogHandler)
                    };
                    _proto._detachSelectFileDialogHandler = function(target) {
                        if (!(0, _type.isDefined)(target)) {
                            return
                        }
                        _events_engine.default.off((0, _renderer.default)(target), "click", this._selectFileDialogHandler)
                    };
                    _proto._renderUploadButton = function() {
                        if ("useButtons" !== this.option("uploadMode")) {
                            return
                        }
                        const $uploadButton = (0, _renderer.default)("<div>").addClass("dx-fileuploader-button").addClass("dx-fileuploader-upload-button").appendTo(this._$content);
                        this._uploadButton = this._createComponent($uploadButton, _button.default, {
                            text: this.option("uploadButtonText"),
                            onClick: this._uploadButtonClickHandler.bind(this),
                            type: this.option("_uploadButtonType"),
                            integrationOptions: {},
                            hoverStateEnabled: this.option("hoverStateEnabled")
                        })
                    };
                    _proto._uploadButtonClickHandler = function() {
                        this._uploadFiles()
                    };
                    _proto._shouldDragOverBeRendered = function() {
                        return !this.option("readOnly") && ("useForm" !== this.option("uploadMode") || this.option("nativeDropSupported"))
                    };
                    _proto._isInteractionDisabled = function() {
                        return this.option("readOnly") || this.option("disabled")
                    };
                    _proto._renderInputContainer = function() {
                        this._$inputContainer = (0, _renderer.default)("<div>").addClass("dx-fileuploader-input-container").appendTo(this._$inputWrapper);
                        this._$fileInput.addClass("dx-fileuploader-input");
                        this._renderInput();
                        const labelId = "dx-fileuploader-input-label-".concat(new _guid.default);
                        this._$inputLabel.attr("id", labelId).addClass("dx-fileuploader-input-label").appendTo(this._$inputContainer);
                        this.setAria("labelledby", labelId, this._$fileInput)
                    };
                    _proto._renderInput = function() {
                        if (this.option("useNativeInputClick")) {
                            this._selectButton.option("template", this._selectButtonInputTemplate.bind(this))
                        } else {
                            this._$fileInput.appendTo(this._$inputContainer);
                            this._selectButton.option("template", "content")
                        }
                        this._applyInputAttributes(this.option("inputAttr"))
                    };
                    _proto._selectButtonInputTemplate = function(data, content) {
                        const $content = (0, _renderer.default)(content);
                        const $text = (0, _renderer.default)("<span>").addClass("dx-button-text").text(data.text);
                        $content.append($text).append(this._$fileInput);
                        return $content
                    };
                    _proto._renderInputWrapper = function() {
                        this._$inputWrapper = (0, _renderer.default)("<div>").addClass("dx-fileuploader-input-wrapper").appendTo(this._$content)
                    };
                    _proto._detachDragEventHandlers = function(target) {
                        if (!(0, _type.isDefined)(target)) {
                            return
                        }
                        _events_engine.default.off((0, _renderer.default)(target), (0, _index.addNamespace)("", this.NAME))
                    };
                    _proto._attachDragEventHandlers = function(target) {
                        const isCustomTarget = target !== this._$inputWrapper;
                        if (!(0, _type.isDefined)(target) || !this._shouldDragOverBeRendered()) {
                            return
                        }
                        this._detachDragEventHandlers(target);
                        target = (0, _renderer.default)(target);
                        _events_engine.default.on(target, (0, _index.addNamespace)("dragenter", this.NAME), this._dragEnterHandler.bind(this, isCustomTarget));
                        _events_engine.default.on(target, (0, _index.addNamespace)("dragover", this.NAME), this._dragOverHandler.bind(this, isCustomTarget));
                        _events_engine.default.on(target, (0, _index.addNamespace)("dragleave", this.NAME), this._dragLeaveHandler.bind(this, isCustomTarget));
                        _events_engine.default.on(target, (0, _index.addNamespace)("drop", this.NAME), this._dropHandler.bind(this, isCustomTarget))
                    };
                    _proto._applyInputAttributes = function(customAttributes) {
                        this._$fileInput.attr(customAttributes)
                    };
                    _proto._useInputForDrop = function() {
                        return this.option("nativeDropSupported") && "useForm" === this.option("uploadMode")
                    };
                    _proto._getDropZoneElement = function(isCustomTarget, e) {
                        let targetList = isCustomTarget ? Array.from((0, _renderer.default)(this.option("dropZone"))) : [this._$inputWrapper];
                        targetList = targetList.map(element => (0, _renderer.default)(element).get(0));
                        return targetList[targetList.indexOf(e.currentTarget)]
                    };
                    _proto._dragEnterHandler = function(isCustomTarget, e) {
                        if (this.option("disabled")) {
                            return false
                        }
                        if (!this._useInputForDrop()) {
                            e.preventDefault()
                        }
                        const dropZoneElement = this._getDropZoneElement(isCustomTarget, e);
                        if ((0, _type.isDefined)(dropZoneElement) && this._shouldRaiseDragOver(e, dropZoneElement)) {
                            this._activeDropZone = dropZoneElement;
                            this._tryToggleDropZoneActive(true, isCustomTarget, e)
                        }
                    };
                    _proto._shouldRaiseDragOver = function(e, dropZoneElement) {
                        return null === this._activeDropZone && this.isMouseOverElement(e, dropZoneElement, false) && e.originalEvent.dataTransfer.types.find(item => "Files" === item)
                    };
                    _proto._dragOverHandler = function(isCustomTarget, e) {
                        if (!this._useInputForDrop()) {
                            e.preventDefault()
                        }
                        e.originalEvent.dataTransfer.dropEffect = "copy";
                        if (!isCustomTarget) {
                            const dropZoneElement = this._getDropZoneElement(false, e);
                            if (this._shouldRaiseDragOver(e, dropZoneElement)) {
                                this._dragEnterHandler(false, e)
                            }
                            if (this._shouldRaiseDragLeave(e, false)) {
                                this._dragLeaveHandler(false, e)
                            }
                        }
                    };
                    _proto._dragLeaveHandler = function(isCustomTarget, e) {
                        if (!this._useInputForDrop()) {
                            e.preventDefault()
                        }
                        if (this._shouldRaiseDragLeave(e, isCustomTarget)) {
                            this._tryToggleDropZoneActive(false, isCustomTarget, e);
                            this._activeDropZone = null
                        }
                    };
                    _proto._shouldRaiseDragLeave = function(e, isCustomTarget) {
                        return null !== this._activeDropZone && !this.isMouseOverElement(e, this._activeDropZone, !isCustomTarget, -1)
                    };
                    _proto._tryToggleDropZoneActive = function(active, isCustom, event) {
                        const classAction = active ? "addClass" : "removeClass";
                        const mouseAction = active ? "_dropZoneEnterAction" : "_dropZoneLeaveAction";
                        this[mouseAction]({
                            event: event,
                            dropZoneElement: this._activeDropZone
                        });
                        if (!isCustom) {
                            this.$element()[classAction]("dx-fileuploader-dragover")
                        }
                    };
                    _proto._dropHandler = function(isCustomTarget, e) {
                        this._activeDropZone = null;
                        if (!isCustomTarget) {
                            this.$element().removeClass("dx-fileuploader-dragover")
                        }
                        if (this._useInputForDrop() || isCustomTarget && this._isInteractionDisabled()) {
                            return
                        }
                        e.preventDefault();
                        const fileList = e.originalEvent.dataTransfer.files;
                        const files = this._getFiles(fileList);
                        if (!this.option("multiple") && files.length > 1 || 0 === files.length) {
                            return
                        }
                        this._changeValue(files);
                        if ("instantly" === this.option("uploadMode")) {
                            this._uploadFiles()
                        }
                    };
                    _proto._areAllFilesLoaded = function() {
                        return this._files.every(file => !file.isValid() || file._isError || file._isLoaded || file.isAborted)
                    };
                    _proto._handleAllFilesUploaded = function() {
                        this._recalculateProgress();
                        if (this._areAllFilesLoaded()) {
                            this._filesUploadedAction()
                        }
                    };
                    _proto._getAllowedFileTypes = function(acceptSting) {
                        if (!acceptSting.length) {
                            return []
                        }
                        return acceptSting.split(",").map(item => item.trim())
                    };
                    _proto._isFileTypeAllowed = function(file, allowedTypes) {
                        for (let i = 0, n = allowedTypes.length; i < n; i++) {
                            let allowedType = allowedTypes[i];
                            if ("." === allowedType[0]) {
                                allowedType = allowedType.replace(".", "\\.");
                                if (file.name.match(new RegExp(allowedType + "$", "i"))) {
                                    return true
                                }
                            } else {
                                allowedType = allowedType.replace(new RegExp("\\*", "g"), "");
                                if (file.type.match(new RegExp(allowedType, "i"))) {
                                    return true
                                }
                            }
                        }
                        return false
                    };
                    _proto._renderWrapper = function() {
                        const $wrapper = (0, _renderer.default)("<div>").addClass("dx-fileuploader-wrapper").appendTo(this.$element());
                        const $container = (0, _renderer.default)("<div>").addClass("dx-fileuploader-container").appendTo($wrapper);
                        this._$content = (0, _renderer.default)("<div>").addClass("dx-fileuploader-content").appendTo($container)
                    };
                    _proto._clean = function() {
                        this._$fileInput.detach();
                        delete this._$filesContainer;
                        this._detachSelectFileDialogHandler(this.option("dialogTrigger"));
                        this._detachDragEventHandlers(this.option("dropZone"));
                        if (this._files) {
                            this._files.forEach(file => {
                                file.$file = null;
                                file.$statusMessage = null
                            })
                        }
                        _Editor.prototype._clean.call(this)
                    };
                    _proto.abortUpload = function(fileData) {
                        if ("useForm" === this.option("uploadMode")) {
                            return
                        }
                        if ((0, _type.isDefined)(fileData)) {
                            const file = this._getFile(fileData);
                            if (file) {
                                this._preventFilesUploading([file])
                            }
                        } else {
                            this._preventFilesUploading(this._files)
                        }
                    };
                    _proto.upload = function(fileData) {
                        if ("useForm" === this.option("uploadMode")) {
                            return
                        }
                        if ((0, _type.isDefined)(fileData)) {
                            const file = this._getFile(fileData);
                            if (file && isFormDataSupported()) {
                                this._uploadFile(file)
                            }
                        } else {
                            this._uploadFiles()
                        }
                    };
                    _proto._uploadFiles = function() {
                        if (isFormDataSupported()) {
                            (0, _iterator.each)(this._files, (_, file) => this._uploadFile(file))
                        }
                    };
                    _proto._uploadFile = function(file) {
                        this._uploadStrategy.upload(file)
                    };
                    _proto._updateProgressBar = function(file, loadedFileData) {
                        file.progressBar && file.progressBar.option({
                            value: loadedFileData.loaded,
                            showStatus: true
                        });
                        this._progressAction({
                            file: file.value,
                            segmentSize: loadedFileData.currentSegmentSize,
                            bytesLoaded: loadedFileData.loaded,
                            bytesTotal: loadedFileData.total,
                            event: loadedFileData.event,
                            request: file.request
                        })
                    };
                    _proto._updateTotalProgress = function(totalFilesSize, totalLoadedFilesSize) {
                        let progress = 0;
                        if ((0, _type.isDefined)(totalFilesSize)) {
                            if (this._files.length > 0 && this._areAllFilesLoaded() && 0 === totalFilesSize && 0 === totalLoadedFilesSize) {
                                progress = this._getProgressValue(1)
                            } else if (totalFilesSize) {
                                progress = this._getProgressValue(totalLoadedFilesSize / totalFilesSize)
                            }
                        }
                        this.option("progress", progress);
                        this._setLoadedSize(totalLoadedFilesSize)
                    };
                    _proto._getProgressValue = function(ratio) {
                        return Math.floor(100 * ratio)
                    };
                    _proto._initStatusMessage = function(file) {
                        file.$statusMessage.css("display", "none")
                    };
                    _proto._ensureCancelButtonInitialized = function(file) {
                        if (file.isInitialized) {
                            return
                        }
                        file.cancelButton.option("onClick", () => {
                            this._preventFilesUploading([file]);
                            this._removeFile(file)
                        });
                        const hideCancelButton = () => {
                            setTimeout(() => {
                                file.cancelButton.option({
                                    visible: false
                                })
                            }, 400)
                        };
                        file.onLoad.add(hideCancelButton);
                        file.onError.add(hideCancelButton)
                    };
                    _proto._createProgressBar = function(fileSize) {
                        return this._createComponent((0, _renderer.default)("<div>"), _progress_bar.default, {
                            value: void 0,
                            min: 0,
                            max: fileSize,
                            statusFormat: ratio => this._getProgressValue(ratio) + "%",
                            showStatus: false,
                            statusPosition: "right"
                        })
                    };
                    _proto._getTotalFilesSize = function() {
                        if (!this._totalFilesSize) {
                            this._totalFilesSize = 0;
                            (0, _iterator.each)(this._files, (_, file) => {
                                this._totalFilesSize += file.value.size
                            })
                        }
                        return this._totalFilesSize
                    };
                    _proto._getTotalLoadedFilesSize = function() {
                        if (!this._totalLoadedFilesSize) {
                            this._totalLoadedFilesSize = 0;
                            (0, _iterator.each)(this._files, (_, file) => {
                                this._totalLoadedFilesSize += file.loadedSize
                            })
                        }
                        return this._totalLoadedFilesSize
                    };
                    _proto._setLoadedSize = function(value) {
                        this._totalLoadedFilesSize = value
                    };
                    _proto._recalculateProgress = function() {
                        this._totalFilesSize = 0;
                        this._totalLoadedFilesSize = 0;
                        this._updateTotalProgress(this._getTotalFilesSize(), this._getTotalLoadedFilesSize())
                    };
                    _proto.isMouseOverElement = function(mouseEvent, element, correctPseudoElements) {
                        let dragEventDelta = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 1;
                        if (!element) {
                            return false
                        }
                        const beforeHeight = correctPseudoElements ? parseFloat(window.getComputedStyle(element, ":before").height) : 0;
                        const afterHeight = correctPseudoElements ? parseFloat(window.getComputedStyle(element, ":after").height) : 0;
                        const x = (0, _size.getOffset)(element).left;
                        const y = (0, _size.getOffset)(element).top + beforeHeight;
                        const w = element.offsetWidth;
                        const h = element.offsetHeight - beforeHeight - afterHeight;
                        const eventX = this._getEventX(mouseEvent);
                        const eventY = this._getEventY(mouseEvent);
                        return eventX + dragEventDelta >= x && eventX - dragEventDelta < x + w && eventY + dragEventDelta >= y && eventY - dragEventDelta < y + h
                    };
                    _proto._getEventX = function(e) {
                        return (0, _index.isTouchEvent)(e) ? this._getTouchEventX(e) : e.clientX + this._getDocumentScrollLeft()
                    };
                    _proto._getEventY = function(e) {
                        return (0, _index.isTouchEvent)(e) ? this._getTouchEventY(e) : e.clientY + this._getDocumentScrollTop()
                    };
                    _proto._getTouchEventX = function(e) {
                        let touchPoint = null;
                        if (e.changedTouches.length > 0) {
                            touchPoint = e.changedTouches
                        } else if (e.targetTouches.length > 0) {
                            touchPoint = e.targetTouches
                        }
                        return touchPoint ? touchPoint[0].pageX : 0
                    };
                    _proto._getTouchEventY = function(e) {
                        let touchPoint = null;
                        if (e.changedTouches.length > 0) {
                            touchPoint = e.changedTouches
                        } else if (e.targetTouches.length > 0) {
                            touchPoint = e.targetTouches
                        }
                        return touchPoint ? touchPoint[0].pageY : 0
                    };
                    _proto._getDocumentScrollTop = function() {
                        const document = _dom_adapter.default.getDocument();
                        return document.documentElement.scrollTop || document.body.scrollTop
                    };
                    _proto._getDocumentScrollLeft = function() {
                        const document = _dom_adapter.default.getDocument();
                        return document.documentElement.scrollLeft || document.body.scrollLeft
                    };
                    _proto._updateReadOnlyState = function() {
                        const readOnly = this.option("readOnly");
                        this._selectButton.option("disabled", readOnly);
                        this._files.forEach(file => {
                            var _file$cancelButton;
                            return null === (_file$cancelButton = file.cancelButton) || void 0 === _file$cancelButton ? void 0 : _file$cancelButton.option("disabled", readOnly)
                        });
                        this._updateInputLabelText();
                        this._attachDragEventHandlers(this._$inputWrapper)
                    };
                    _proto._updateHoverState = function() {
                        var _this$_selectButton, _this$_uploadButton;
                        const value = this.option("hoverStateEnabled");
                        null === (_this$_selectButton = this._selectButton) || void 0 === _this$_selectButton ? void 0 : _this$_selectButton.option("hoverStateEnabled", value);
                        null === (_this$_uploadButton = this._uploadButton) || void 0 === _this$_uploadButton ? void 0 : _this$_uploadButton.option("hoverStateEnabled", value);
                        this._files.forEach(file => {
                            var _file$uploadButton, _file$cancelButton2;
                            null === (_file$uploadButton = file.uploadButton) || void 0 === _file$uploadButton ? void 0 : _file$uploadButton.option("hoverStateEnabled", value);
                            null === (_file$cancelButton2 = file.cancelButton) || void 0 === _file$cancelButton2 ? void 0 : _file$cancelButton2.option("hoverStateEnabled", value)
                        })
                    };
                    _proto._optionChanged = function(args) {
                        const {
                            name: name,
                            value: value,
                            previousValue: previousValue
                        } = args;
                        switch (name) {
                            case "height":
                            case "width":
                                this._updateFileNameMaxWidth();
                                _Editor.prototype._optionChanged.call(this, args);
                                break;
                            case "value":
                                !value.length && this._$fileInput.val("");
                                if (!this._preventRecreatingFiles) {
                                    this._createFiles();
                                    this._renderFiles()
                                }
                                this._recalculateProgress();
                                _Editor.prototype._optionChanged.call(this, args);
                                break;
                            case "name":
                                this._initFileInput();
                                _Editor.prototype._optionChanged.call(this, args);
                                break;
                            case "accept":
                                this._initFileInput();
                                break;
                            case "multiple":
                                this._initFileInput();
                                if (!args.value) {
                                    this.clear()
                                }
                                break;
                            case "readOnly":
                                this._updateReadOnlyState();
                                _Editor.prototype._optionChanged.call(this, args);
                                break;
                            case "disabled":
                                this._updateInputLabelText();
                                _Editor.prototype._optionChanged.call(this, args);
                                break;
                            case "selectButtonText":
                                this._selectButton.option("text", value);
                                break;
                            case "uploadButtonText":
                                this._uploadButton && this._uploadButton.option("text", value);
                                break;
                            case "_uploadButtonType":
                                this._uploadButton && this._uploadButton.option("type", value);
                                break;
                            case "_buttonStylingMode":
                                this._files.forEach(file => {
                                    var _file$uploadButton2, _file$cancelButton3;
                                    null === (_file$uploadButton2 = file.uploadButton) || void 0 === _file$uploadButton2 ? void 0 : _file$uploadButton2.option("stylingMode", value);
                                    null === (_file$cancelButton3 = file.cancelButton) || void 0 === _file$cancelButton3 ? void 0 : _file$cancelButton3.option("stylingMode", value)
                                });
                                break;
                            case "dialogTrigger":
                                this._detachSelectFileDialogHandler(previousValue);
                                this._attachSelectFileDialogHandler(value);
                                break;
                            case "dropZone":
                                this._detachDragEventHandlers(previousValue);
                                this._attachDragEventHandlers(value);
                                break;
                            case "maxFileSize":
                            case "minFileSize":
                            case "allowedFileExtensions":
                            case "invalidFileExtensionMessage":
                            case "invalidMaxFileSizeMessage":
                            case "invalidMinFileSizeMessage":
                            case "readyToUploadMessage":
                            case "uploadedMessage":
                            case "uploadFailedMessage":
                            case "uploadAbortedMessage":
                                this._invalidate();
                                break;
                            case "labelText":
                                this._updateInputLabelText();
                                break;
                            case "showFileList":
                                if (!this._preventRecreatingFiles) {
                                    this._renderFiles()
                                }
                                break;
                            case "uploadFile":
                            case "uploadChunk":
                            case "chunkSize":
                                this._setUploadStrategy();
                                break;
                            case "abortUpload":
                            case "uploadUrl":
                            case "progress":
                            case "uploadMethod":
                            case "uploadHeaders":
                            case "uploadCustomData":
                            case "extendSelection":
                                break;
                            case "hoverStateEnabled":
                                this._updateHoverState();
                                _Editor.prototype._optionChanged.call(this, args);
                                break;
                            case "allowCanceling":
                            case "uploadMode":
                                this.clear();
                                this._invalidate();
                                break;
                            case "onBeforeSend":
                                this._createBeforeSendAction();
                                break;
                            case "onUploadStarted":
                                this._createUploadStartedAction();
                                break;
                            case "onUploaded":
                                this._createUploadedAction();
                                break;
                            case "onFilesUploaded":
                                this._createFilesUploadedAction();
                                break;
                            case "onProgress":
                                this._createProgressAction();
                                break;
                            case "onUploadError":
                                this._createUploadErrorAction();
                                break;
                            case "onUploadAborted":
                                this._createUploadAbortedAction();
                                break;
                            case "onDropZoneEnter":
                                this._createDropZoneEnterAction();
                                break;
                            case "onDropZoneLeave":
                                this._createDropZoneLeaveAction();
                                break;
                            case "useNativeInputClick":
                                this._renderInput();
                                break;
                            case "useDragOver":
                                this._attachDragEventHandlers(this._$inputWrapper);
                                break;
                            case "nativeDropSupported":
                                this._invalidate();
                                break;
                            case "inputAttr":
                                this._applyInputAttributes(this.option(name));
                                break;
                            case "hint":
                                this._initFileInput();
                                _Editor.prototype._optionChanged.call(this, args);
                                break;
                            default:
                                _Editor.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto._resetInputValue = function(force) {
                        if ("useForm" === this.option("uploadMode") && !force) {
                            return
                        }
                        this._doPreventInputChange = true;
                        this._$fileInput.val("");
                        this._doPreventInputChange = false
                    };
                    _proto.clear = function() {
                        this.option("value", [])
                    };
                    return FileUploader
                }(_editor.default);
                let FileBlobReader = function() {
                    function FileBlobReader(file, chunkSize) {
                        this.file = file;
                        this.chunkSize = chunkSize;
                        this.index = 0
                    }
                    var _proto2 = FileBlobReader.prototype;
                    _proto2.read = function() {
                        if (!this.file) {
                            return null
                        }
                        const result = this.createBlobResult(this.file, this.index, this.chunkSize);
                        if (result.isCompleted) {
                            this.file = null
                        }
                        this.index++;
                        return result
                    };
                    _proto2.createBlobResult = function(file, index, chunkSize) {
                        const currentPosition = index * chunkSize;
                        return {
                            blob: this.sliceFile(file, currentPosition, chunkSize),
                            index: index,
                            isCompleted: currentPosition + chunkSize >= file.size
                        }
                    };
                    _proto2.sliceFile = function(file, startPos, length) {
                        if (file.slice) {
                            return file.slice(startPos, startPos + length)
                        }
                        if (file.webkitSlice) {
                            return file.webkitSlice(startPos, startPos + length)
                        }
                        return null
                    };
                    return FileBlobReader
                }();
                let FileUploadStrategyBase = function() {
                    function FileUploadStrategyBase(fileUploader) {
                        this.fileUploader = fileUploader
                    }
                    var _proto3 = FileUploadStrategyBase.prototype;
                    _proto3.upload = function(file) {
                        if (file.isInitialized && file.isAborted) {
                            this.fileUploader._resetFileState(file)
                        }
                        if (file.isValid() && !file.uploadStarted) {
                            this._prepareFileBeforeUpload(file);
                            this._uploadCore(file)
                        }
                    };
                    _proto3.abortUpload = function(file) {
                        if (file._isError || file._isLoaded || file.isAborted || !file.uploadStarted) {
                            return
                        }
                        file.isAborted = true;
                        file.request && file.request.abort();
                        if (this._isCustomCallback("abortUpload")) {
                            const abortUpload = this.fileUploader.option("abortUpload");
                            const arg = this._createUploadArgument(file);
                            let deferred = null;
                            try {
                                const result = abortUpload(file.value, arg);
                                deferred = (0, _deferred.fromPromise)(result)
                            } catch (error) {
                                deferred = (new _deferred.Deferred).reject(error).promise()
                            }
                            deferred.done(() => file.onAbort.fire()).fail(error => this._handleFileError(file, error))
                        }
                    };
                    _proto3._beforeSend = function(xhr, file) {
                        const arg = this._createUploadArgument(file);
                        this.fileUploader._beforeSendAction({
                            request: xhr,
                            file: file.value,
                            uploadInfo: arg
                        });
                        file.request = xhr
                    };
                    _proto3._createUploadArgument = function(file) {};
                    _proto3._uploadCore = function(file) {};
                    _proto3._isCustomCallback = function(name) {
                        const callback = this.fileUploader.option(name);
                        return callback && (0, _type.isFunction)(callback)
                    };
                    _proto3._handleProgress = function(file, e) {
                        if (file._isError) {
                            return
                        }
                        file._isProgressStarted = true;
                        this._handleProgressCore(file, e)
                    };
                    _proto3._handleProgressCore = function(file, e) {};
                    _proto3._handleFileError = function(file, error) {
                        file._isError = true;
                        file.onError.fire(error)
                    };
                    _proto3._prepareFileBeforeUpload = function(file) {
                        if (file.$file) {
                            var _file$progressBar;
                            null === (_file$progressBar = file.progressBar) || void 0 === _file$progressBar ? void 0 : _file$progressBar.dispose();
                            this.fileUploader._createFileProgressBar(file)
                        }
                        if (file.isInitialized) {
                            return
                        }
                        file.onLoadStart.add(this._onUploadStarted.bind(this, file));
                        file.onLoad.add(this._onLoadedHandler.bind(this, file));
                        file.onError.add(this._onErrorHandler.bind(this, file));
                        file.onAbort.add(this._onAbortHandler.bind(this, file));
                        file.onProgress.add(this._onProgressHandler.bind(this, file));
                        file.isInitialized = true
                    };
                    _proto3._shouldHandleError = function(file, e) {
                        return (this._isStatusError(e.status) || !file._isProgressStarted) && !file.isAborted
                    };
                    _proto3._isStatusError = function(status) {
                        return 400 <= status && status < 500 || 500 <= status && status < 600
                    };
                    _proto3._onUploadStarted = function(file, e) {
                        file.uploadStarted = true;
                        this.fileUploader._uploadStartedAction({
                            file: file.value,
                            event: e,
                            request: file.request
                        })
                    };
                    _proto3._onAbortHandler = function(file, e) {
                        const args = {
                            file: file.value,
                            event: e,
                            request: file.request,
                            message: this.fileUploader._getUploadAbortedStatusMessage()
                        };
                        this.fileUploader._uploadAbortedAction(args);
                        this.fileUploader._setStatusMessage(file, args.message);
                        this.fileUploader._handleAllFilesUploaded()
                    };
                    _proto3._onErrorHandler = function(file, error) {
                        const args = {
                            file: file.value,
                            event: void 0,
                            request: file.request,
                            error: error,
                            message: this.fileUploader.option("uploadFailedMessage")
                        };
                        this.fileUploader._uploadErrorAction(args);
                        this.fileUploader._setStatusMessage(file, args.message);
                        this.fileUploader._handleAllFilesUploaded()
                    };
                    _proto3._onLoadedHandler = function(file, e) {
                        const args = {
                            file: file.value,
                            event: e,
                            request: file.request,
                            message: this.fileUploader.option("uploadedMessage")
                        };
                        file._isLoaded = true;
                        this.fileUploader._uploadedAction(args);
                        this.fileUploader._setStatusMessage(file, args.message);
                        this.fileUploader._handleAllFilesUploaded()
                    };
                    _proto3._onProgressHandler = function(file, e) {
                        if (file) {
                            const totalFilesSize = this.fileUploader._getTotalFilesSize();
                            const totalLoadedFilesSize = this.fileUploader._getTotalLoadedFilesSize();
                            const loadedSize = Math.min(e.loaded, file.value.size);
                            const segmentSize = loadedSize - file.loadedSize;
                            file.loadedSize = loadedSize;
                            this.fileUploader._updateTotalProgress(totalFilesSize, totalLoadedFilesSize + segmentSize);
                            this.fileUploader._updateProgressBar(file, this._getLoadedData(loadedSize, e.total, segmentSize, e))
                        }
                    };
                    _proto3._getLoadedData = function(loaded, total, currentSegmentSize, event) {
                        return {
                            loaded: loaded,
                            total: total,
                            currentSegmentSize: currentSegmentSize
                        }
                    };
                    _proto3._extendFormData = function(formData) {
                        const formDataEntries = this.fileUploader.option("uploadCustomData");
                        for (const entryName in formDataEntries) {
                            if (Object.prototype.hasOwnProperty.call(formDataEntries, entryName) && (0, _type.isDefined)(formDataEntries[entryName])) {
                                formData.append(entryName, formDataEntries[entryName])
                            }
                        }
                    };
                    return FileUploadStrategyBase
                }();
                let ChunksFileUploadStrategyBase = function(_FileUploadStrategyBa) {
                    _inheritsLoose(ChunksFileUploadStrategyBase, _FileUploadStrategyBa);

                    function ChunksFileUploadStrategyBase(fileUploader) {
                        var _this;
                        _this = _FileUploadStrategyBa.call(this, fileUploader) || this;
                        _this.chunkSize = _this.fileUploader.option("chunkSize");
                        return _this
                    }
                    var _proto4 = ChunksFileUploadStrategyBase.prototype;
                    _proto4._uploadCore = function(file) {
                        const realFile = file.value;
                        const chunksData = {
                            name: realFile.name,
                            loadedBytes: 0,
                            type: realFile.type,
                            blobReader: new FileBlobReader(realFile, this.chunkSize),
                            guid: new _guid.default,
                            fileSize: realFile.size,
                            count: this._getFileChunksCount(realFile),
                            customData: {}
                        };
                        file.chunksData = chunksData;
                        this._sendChunk(file, chunksData)
                    };
                    _proto4._getFileChunksCount = function(jsFile) {
                        return 0 === jsFile.size ? 1 : Math.ceil(jsFile.size / this.chunkSize)
                    };
                    _proto4._sendChunk = function(file, chunksData) {
                        const chunk = chunksData.blobReader.read();
                        chunksData.currentChunk = chunk;
                        if (chunk) {
                            this._sendChunkCore(file, chunksData, chunk).done(() => {
                                if (file.isAborted) {
                                    return
                                }
                                chunksData.loadedBytes += chunk.blob.size;
                                file.onProgress.fire({
                                    loaded: chunksData.loadedBytes,
                                    total: file.value.size
                                });
                                if (chunk.isCompleted) {
                                    file.onLoad.fire()
                                }
                                setTimeout(() => this._sendChunk(file, chunksData))
                            }).fail(error => {
                                if (this._shouldHandleError(file, error)) {
                                    this._handleFileError(file, error)
                                }
                            })
                        }
                    };
                    _proto4._sendChunkCore = function(file, chunksData, chunk) {};
                    _proto4._tryRaiseStartLoad = function(file) {
                        if (!file.isStartLoad) {
                            file.isStartLoad = true;
                            file.onLoadStart.fire()
                        }
                    };
                    _proto4._getEvent = function(e) {
                        return null
                    };
                    _proto4._createUploadArgument = function(file) {
                        return this._createChunksInfo(file.chunksData)
                    };
                    _proto4._createChunksInfo = function(chunksData) {
                        return {
                            bytesUploaded: chunksData.loadedBytes,
                            chunkCount: chunksData.count,
                            customData: chunksData.customData,
                            chunkBlob: chunksData.currentChunk.blob,
                            chunkIndex: chunksData.currentChunk.index
                        }
                    };
                    return ChunksFileUploadStrategyBase
                }(FileUploadStrategyBase);
                let DefaultChunksFileUploadStrategy = function(_ChunksFileUploadStra) {
                    _inheritsLoose(DefaultChunksFileUploadStrategy, _ChunksFileUploadStra);

                    function DefaultChunksFileUploadStrategy() {
                        return _ChunksFileUploadStra.apply(this, arguments) || this
                    }
                    var _proto5 = DefaultChunksFileUploadStrategy.prototype;
                    _proto5._sendChunkCore = function(file, chunksData, chunk) {
                        return _ajax.default.sendRequest({
                            url: this.fileUploader.option("uploadUrl"),
                            method: this.fileUploader.option("uploadMethod"),
                            headers: this.fileUploader.option("uploadHeaders"),
                            beforeSend: xhr => this._beforeSend(xhr, file),
                            upload: {
                                onprogress: e => this._handleProgress(file, e),
                                onloadstart: () => this._tryRaiseStartLoad(file),
                                onabort: () => file.onAbort.fire()
                            },
                            data: this._createFormData({
                                fileName: chunksData.name,
                                blobName: this.fileUploader.option("name"),
                                blob: chunk.blob,
                                index: chunk.index,
                                count: chunksData.count,
                                type: chunksData.type,
                                guid: chunksData.guid,
                                size: chunksData.fileSize
                            })
                        })
                    };
                    _proto5._createFormData = function(options) {
                        const formData = new window.FormData;
                        formData.append(options.blobName, options.blob);
                        formData.append("chunkMetadata", JSON.stringify({
                            FileName: options.fileName,
                            Index: options.index,
                            TotalCount: options.count,
                            FileSize: options.size,
                            FileType: options.type,
                            FileGuid: options.guid
                        }));
                        this._extendFormData(formData);
                        return formData
                    };
                    return DefaultChunksFileUploadStrategy
                }(ChunksFileUploadStrategyBase);
                let CustomChunksFileUploadStrategy = function(_ChunksFileUploadStra2) {
                    _inheritsLoose(CustomChunksFileUploadStrategy, _ChunksFileUploadStra2);

                    function CustomChunksFileUploadStrategy() {
                        return _ChunksFileUploadStra2.apply(this, arguments) || this
                    }
                    var _proto6 = CustomChunksFileUploadStrategy.prototype;
                    _proto6._sendChunkCore = function(file, chunksData) {
                        this._tryRaiseStartLoad(file);
                        const chunksInfo = this._createChunksInfo(chunksData);
                        const uploadChunk = this.fileUploader.option("uploadChunk");
                        try {
                            const result = uploadChunk(file.value, chunksInfo);
                            return (0, _deferred.fromPromise)(result)
                        } catch (error) {
                            return (new _deferred.Deferred).reject(error).promise()
                        }
                    };
                    _proto6._shouldHandleError = function(file, error) {
                        return true
                    };
                    return CustomChunksFileUploadStrategy
                }(ChunksFileUploadStrategyBase);
                let WholeFileUploadStrategyBase = function(_FileUploadStrategyBa2) {
                    _inheritsLoose(WholeFileUploadStrategyBase, _FileUploadStrategyBa2);

                    function WholeFileUploadStrategyBase() {
                        return _FileUploadStrategyBa2.apply(this, arguments) || this
                    }
                    var _proto7 = WholeFileUploadStrategyBase.prototype;
                    _proto7._uploadCore = function(file) {
                        file.loadedSize = 0;
                        this._uploadFile(file).done(() => {
                            if (!file.isAborted) {
                                file.onLoad.fire()
                            }
                        }).fail(error => {
                            if (this._shouldHandleError(file, error)) {
                                this._handleFileError(file, error)
                            }
                        })
                    };
                    _proto7._uploadFile = function(file) {};
                    _proto7._handleProgressCore = function(file, e) {
                        file.onProgress.fire(e)
                    };
                    _proto7._getLoadedData = function(loaded, total, segmentSize, event) {
                        const result = _FileUploadStrategyBa2.prototype._getLoadedData.call(this, loaded, total, segmentSize, event);
                        result.event = event;
                        return result
                    };
                    return WholeFileUploadStrategyBase
                }(FileUploadStrategyBase);
                let DefaultWholeFileUploadStrategy = function(_WholeFileUploadStrat) {
                    _inheritsLoose(DefaultWholeFileUploadStrategy, _WholeFileUploadStrat);

                    function DefaultWholeFileUploadStrategy() {
                        return _WholeFileUploadStrat.apply(this, arguments) || this
                    }
                    var _proto8 = DefaultWholeFileUploadStrategy.prototype;
                    _proto8._uploadFile = function(file) {
                        return _ajax.default.sendRequest({
                            url: this.fileUploader.option("uploadUrl"),
                            method: this.fileUploader.option("uploadMethod"),
                            headers: this.fileUploader.option("uploadHeaders"),
                            beforeSend: xhr => this._beforeSend(xhr, file),
                            upload: {
                                onprogress: e => this._handleProgress(file, e),
                                onloadstart: () => file.onLoadStart.fire(),
                                onabort: () => file.onAbort.fire()
                            },
                            data: this._createFormData(this.fileUploader.option("name"), file.value)
                        })
                    };
                    _proto8._createFormData = function(fieldName, fieldValue) {
                        const formData = new window.FormData;
                        formData.append(fieldName, fieldValue, fieldValue.name);
                        this._extendFormData(formData);
                        return formData
                    };
                    return DefaultWholeFileUploadStrategy
                }(WholeFileUploadStrategyBase);
                let CustomWholeFileUploadStrategy = function(_WholeFileUploadStrat2) {
                    _inheritsLoose(CustomWholeFileUploadStrategy, _WholeFileUploadStrat2);

                    function CustomWholeFileUploadStrategy() {
                        return _WholeFileUploadStrat2.apply(this, arguments) || this
                    }
                    var _proto9 = CustomWholeFileUploadStrategy.prototype;
                    _proto9._uploadFile = function(file) {
                        file.onLoadStart.fire();
                        const progressCallback = loadedBytes => {
                            const arg = {
                                loaded: loadedBytes,
                                total: file.value.size
                            };
                            this._handleProgress(file, arg)
                        };
                        const uploadFile = this.fileUploader.option("uploadFile");
                        try {
                            const result = uploadFile(file.value, progressCallback);
                            return (0, _deferred.fromPromise)(result)
                        } catch (error) {
                            return (new _deferred.Deferred).reject(error).promise()
                        }
                    };
                    _proto9._shouldHandleError = function(file, e) {
                        return true
                    };
                    return CustomWholeFileUploadStrategy
                }(WholeFileUploadStrategyBase);
                (0, _component_registrator.default)("dxFileUploader", FileUploader);
                var _default = FileUploader;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        20301:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/filter_builder.js ***!
              \******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_filter_builder = (obj = __webpack_require__( /*! ../__internal/filter_builder/m_filter_builder */ 88283), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _m_filter_builder.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        17737:
            /*!********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/form.js ***!
              \********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _ui = (obj = __webpack_require__( /*! ./form/ui.form */ 20763), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _ui.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        77509:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/form/components/button_item.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.renderButtonItem = function(_ref) {
                    let {
                        item: item,
                        $parent: $parent,
                        rootElementCssClassList: rootElementCssClassList,
                        validationGroup: validationGroup,
                        createComponentCallback: createComponentCallback
                    } = _ref;
                    const $rootElement = (0, _renderer.default)("<div>").appendTo($parent).addClass(rootElementCssClassList.join(" ")).addClass("dx-field-button-item").css("textAlign", (horizontalAlignment = item.horizontalAlignment, (0, _type.isDefined)(horizontalAlignment) ? horizontalAlignment : "right"));
                    var horizontalAlignment;
                    $parent.css("justifyContent", function(verticalAlignment) {
                        switch (verticalAlignment) {
                            case "center":
                                return "center";
                            case "bottom":
                                return "flex-end";
                            default:
                                return "flex-start"
                        }
                    }(item.verticalAlignment));
                    const $button = (0, _renderer.default)("<div>").appendTo($rootElement);
                    return {
                        $rootElement: $rootElement,
                        buttonInstance: createComponentCallback($button, "dxButton", (0, _extend.extend)({
                            validationGroup: validationGroup
                        }, item.buttonOptions))
                    }
                };
                var _renderer = (obj = __webpack_require__( /*! ../../../core/renderer */ 68374), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306)
            },
        46193:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/form/components/empty_item.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.FIELD_EMPTY_ITEM_CLASS = void 0;
                exports.renderEmptyItem = function(_ref) {
                    let {
                        $parent: $parent,
                        rootElementCssClassList: rootElementCssClassList
                    } = _ref;
                    return (0, _renderer.default)("<div>").addClass("dx-field-empty-item").html("&nbsp;").addClass(rootElementCssClassList.join(" ")).appendTo($parent)
                };
                var _renderer = (obj = __webpack_require__( /*! ../../../core/renderer */ 68374), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                exports.FIELD_EMPTY_ITEM_CLASS = "dx-field-empty-item"
            },
        21014:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/form/components/field_item.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.TOGGLE_CONTROLS_PADDING_CLASS = exports.LABEL_VERTICAL_ALIGNMENT_CLASS = exports.LABEL_HORIZONTAL_ALIGNMENT_CLASS = exports.FLEX_LAYOUT_CLASS = exports.FIELD_ITEM_REQUIRED_CLASS = exports.FIELD_ITEM_OPTIONAL_CLASS = exports.FIELD_ITEM_LABEL_ALIGN_CLASS = exports.FIELD_ITEM_HELP_TEXT_CLASS = exports.FIELD_ITEM_CONTENT_WRAPPER_CLASS = exports.FIELD_ITEM_CONTENT_LOCATION_CLASS = void 0;
                exports.renderFieldItem = function(_ref) {
                    let {
                        $parent: $parent,
                        rootElementCssClassList: rootElementCssClassList,
                        formOrLayoutManager: formOrLayoutManager,
                        createComponentCallback: createComponentCallback,
                        labelOptions: labelOptions,
                        labelNeedBaselineAlign: labelNeedBaselineAlign,
                        labelLocation: labelLocation,
                        needRenderLabel: needRenderLabel,
                        formLabelLocation: formLabelLocation,
                        item: item,
                        editorOptions: editorOptions,
                        isSimpleItem: isSimpleItem,
                        isRequired: isRequired,
                        template: template,
                        helpID: helpID,
                        labelID: labelID,
                        name: name,
                        helpText: helpText,
                        requiredMessageTemplate: requiredMessageTemplate,
                        validationGroup: validationGroup
                    } = _ref;
                    const $rootElement = (0, _renderer.default)("<div>").addClass(rootElementCssClassList.join(" ")).appendTo($parent);
                    $rootElement.addClass(isRequired ? "dx-field-item-required" : "dx-field-item-optional");
                    if (isSimpleItem) {
                        $rootElement.addClass("dx-flex-layout")
                    }
                    if (isSimpleItem && labelNeedBaselineAlign) {
                        $rootElement.addClass("dx-field-item-label-align")
                    }
                    const $fieldEditorContainer = (0, _renderer.default)("<div>");
                    $fieldEditorContainer.data("dx-form-item", item);
                    $fieldEditorContainer.addClass(_constants.FIELD_ITEM_CONTENT_CLASS).addClass("dx-field-item-content-location-" + {
                        right: "left",
                        left: "right",
                        top: "bottom"
                    } [formLabelLocation]);
                    let $label = null;
                    if (needRenderLabel) {
                        if (labelOptions.labelTemplate) {
                            labelOptions.labelTemplateData = getTemplateData(item, editorOptions, formOrLayoutManager)
                        }
                        $label = (0, _label.renderLabel)(labelOptions)
                    }
                    if ($label) {
                        const {
                            editorType: editorType
                        } = item;
                        $rootElement.append($label);
                        if ("top" === labelLocation || "left" === labelLocation) {
                            $rootElement.append($fieldEditorContainer)
                        }
                        if ("right" === labelLocation) {
                            $rootElement.prepend($fieldEditorContainer)
                        }
                        if ("top" === labelLocation) {
                            $rootElement.addClass("dx-label-v-align")
                        } else {
                            $rootElement.addClass("dx-label-h-align")
                        }
                        if ("dxCheckBox" === editorType || "dxSwitch" === editorType) {
                            _events_engine.default.on($label, _click.name, (function() {
                                _events_engine.default.trigger($fieldEditorContainer.children(), _click.name)
                            }))
                        }
                        const toggleControls = ["dxCheckBox", "dxSwitch", "dxRadioGroup"];
                        const isToggleControls = toggleControls.includes(editorType);
                        const labelAlignment = labelOptions.alignment;
                        const isLabelAlignmentLeft = "left" === labelAlignment || !labelAlignment;
                        const hasNotTemplate = !template;
                        const isLabelOnTop = "top" === labelLocation;
                        if (hasNotTemplate && isToggleControls && isLabelOnTop && isLabelAlignmentLeft) {
                            $fieldEditorContainer.addClass("dx-toggle-controls-paddings")
                        }
                    } else {
                        $rootElement.append($fieldEditorContainer)
                    }
                    let widgetInstance;
                    if (template) {
                        template.render({
                            container: (0, _element.getPublicElement)($fieldEditorContainer),
                            model: getTemplateData(item, editorOptions, formOrLayoutManager),
                            onRendered() {
                                const $validationTarget = getValidationTarget($fieldEditorContainer);
                                const validationTargetInstance = function($validationTarget) {
                                    var _$validationTarget$pa, _$validationTarget$pa2;
                                    return (null === $validationTarget || void 0 === $validationTarget ? void 0 : $validationTarget.data("dx-validation-target")) || (null === $validationTarget || void 0 === $validationTarget ? void 0 : null === (_$validationTarget$pa = $validationTarget.parent) || void 0 === _$validationTarget$pa ? void 0 : null === (_$validationTarget$pa2 = _$validationTarget$pa.call($validationTarget)) || void 0 === _$validationTarget$pa2 ? void 0 : _$validationTarget$pa2.data("dx-validation-target"))
                                }($validationTarget);
                                subscribeWrapperInvalidClassToggle(validationTargetInstance)
                            }
                        })
                    } else {
                        const $div = (0, _renderer.default)("<div>").appendTo($fieldEditorContainer);
                        try {
                            widgetInstance = createComponentCallback($div, item.editorType, editorOptions);
                            widgetInstance.setAria("describedby", helpID);
                            if (labelID) {
                                widgetInstance.setAria("labelledby", labelID)
                            }
                            widgetInstance.setAria("required", isRequired)
                        } catch (e) {
                            _ui.default.log("E1035", e.message)
                        }
                    }
                    const $validationTarget = getValidationTarget($fieldEditorContainer);
                    const validationTargetInstance = $validationTarget && $validationTarget.data("dx-validation-target");
                    if (validationTargetInstance) {
                        const isItemHaveCustomLabel = item.label && item.label.text;
                        const itemName = isItemHaveCustomLabel ? null : name;
                        const fieldName = isItemHaveCustomLabel ? item.label.text : itemName && (0, _inflector.captionize)(itemName);
                        let validationRules;
                        if (isSimpleItem) {
                            if (item.validationRules) {
                                validationRules = item.validationRules
                            } else {
                                const requiredMessage = (0, _string.format)(requiredMessageTemplate, fieldName || "");
                                validationRules = item.isRequired ? [{
                                    type: "required",
                                    message: requiredMessage
                                }] : null
                            }
                        }
                        if (Array.isArray(validationRules) && validationRules.length) {
                            createComponentCallback($validationTarget, _validator.default, {
                                validationRules: validationRules,
                                validationGroup: validationGroup,
                                dataGetter: function() {
                                    return {
                                        formItem: item
                                    }
                                }
                            })
                        }
                        subscribeWrapperInvalidClassToggle(validationTargetInstance)
                    }
                    if (helpText && isSimpleItem) {
                        const $editorParent = $fieldEditorContainer.parent();
                        $editorParent.append((0, _renderer.default)("<div>").addClass("dx-field-item-content-wrapper").append($fieldEditorContainer).append((0, _renderer.default)("<div>").addClass("dx-field-item-help-text").attr("id", helpID).text(helpText)))
                    }
                    return {
                        $fieldEditorContainer: $fieldEditorContainer,
                        $rootElement: $rootElement,
                        widgetInstance: widgetInstance
                    }
                };
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../events/core/events_engine */ 55994));
                var _click = __webpack_require__( /*! ../../../events/click */ 95429);
                var _element = __webpack_require__( /*! ../../../core/element */ 6415);
                var _inflector = __webpack_require__( /*! ../../../core/utils/inflector */ 78008);
                var _string = __webpack_require__( /*! ../../../core/utils/string */ 68752);
                var _themes = __webpack_require__( /*! ../../themes */ 75811);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../widget/ui.errors */ 96688));
                var _validator = _interopRequireDefault(__webpack_require__( /*! ../../validator */ 39562));
                var _constants = __webpack_require__( /*! ../constants */ 31093);
                var _label = __webpack_require__( /*! ./label */ 11042);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                exports.FLEX_LAYOUT_CLASS = "dx-flex-layout";
                exports.FIELD_ITEM_OPTIONAL_CLASS = "dx-field-item-optional";
                exports.FIELD_ITEM_REQUIRED_CLASS = "dx-field-item-required";
                exports.FIELD_ITEM_CONTENT_WRAPPER_CLASS = "dx-field-item-content-wrapper";
                exports.FIELD_ITEM_CONTENT_LOCATION_CLASS = "dx-field-item-content-location-";
                exports.FIELD_ITEM_LABEL_ALIGN_CLASS = "dx-field-item-label-align";
                exports.FIELD_ITEM_HELP_TEXT_CLASS = "dx-field-item-help-text";
                exports.LABEL_VERTICAL_ALIGNMENT_CLASS = "dx-label-v-align";
                exports.LABEL_HORIZONTAL_ALIGNMENT_CLASS = "dx-label-h-align";
                exports.TOGGLE_CONTROLS_PADDING_CLASS = "dx-toggle-controls-paddings";

                function getValidationTarget($fieldEditorContainer) {
                    const $editor = $fieldEditorContainer.children().first();
                    return $editor.hasClass("dx-template-wrapper") ? $editor.children().first() : $editor
                }

                function subscribeWrapperInvalidClassToggle(validationTargetInstance) {
                    if (validationTargetInstance && (0, _themes.isMaterialBased)()) {
                        const wrapperClass = ".".concat("dx-field-item-content-wrapper");
                        const toggleInvalidClass = _ref2 => {
                            let {
                                element: element,
                                component: component
                            } = _ref2;
                            const {
                                isValid: isValid,
                                validationMessageMode: validationMessageMode
                            } = component.option();
                            (0, _renderer.default)(element).parents(wrapperClass).toggleClass("dx-invalid", false === isValid && (component._isFocused() || "always" === validationMessageMode))
                        };
                        validationTargetInstance.on("optionChanged", e => {
                            if ("isValid" !== e.name) {
                                return
                            }
                            toggleInvalidClass(e)
                        });
                        validationTargetInstance.on("focusIn", toggleInvalidClass).on("focusOut", toggleInvalidClass).on("enterKey", toggleInvalidClass)
                    }
                }

                function getTemplateData(item, editorOptions, formOrLayoutManager) {
                    return {
                        dataField: item.dataField,
                        editorType: item.editorType,
                        editorOptions: editorOptions,
                        component: formOrLayoutManager,
                        name: item.name
                    }
                }
            },
        11042:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/form/components/label.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.GET_LABEL_WIDTH_BY_TEXT_CLASS = exports.FIELD_ITEM_REQUIRED_MARK_CLASS = exports.FIELD_ITEM_OPTIONAL_MARK_CLASS = exports.FIELD_ITEM_LABEL_TEXT_CLASS = exports.FIELD_ITEM_LABEL_LOCATION_CLASS = void 0;
                exports.renderLabel = function(_ref) {
                    let {
                        text: text,
                        id: id,
                        location: location,
                        alignment: alignment,
                        labelID: labelID = null,
                        markOptions: markOptions = {},
                        labelTemplate: labelTemplate,
                        labelTemplateData: labelTemplateData,
                        onLabelTemplateRendered: onLabelTemplateRendered
                    } = _ref;
                    if ((!(0, _type.isDefined)(text) || text.length <= 0) && !(0, _type.isDefined)(labelTemplate)) {
                        return null
                    }
                    const $label = (0, _renderer.default)("<label>").addClass(_constants.FIELD_ITEM_LABEL_CLASS + " dx-field-item-label-location-" + location).attr("for", id).attr("id", labelID).css("textAlign", alignment);
                    const $labelContainer = (0, _renderer.default)("<span>").addClass(_constants.FIELD_ITEM_LABEL_CONTENT_CLASS);
                    let $labelContent = (0, _renderer.default)("<span>").addClass("dx-field-item-label-text").text(text);
                    if (labelTemplate) {
                        $labelContent = (0, _renderer.default)("<div>").addClass("dx-field-item-custom-label-content");
                        labelTemplateData.text = text;
                        labelTemplate.render({
                            container: (0, _element.getPublicElement)($labelContent),
                            model: labelTemplateData,
                            onRendered() {
                                null === onLabelTemplateRendered || void 0 === onLabelTemplateRendered ? void 0 : onLabelTemplateRendered()
                            }
                        })
                    }
                    return $label.append($labelContainer.append($labelContent, function(markOptions) {
                        const markText = (0, _uiFormLayout_manager.getLabelMarkText)(markOptions);
                        if ("" === markText) {
                            return null
                        }
                        return (0, _renderer.default)("<span>").addClass(markOptions.showRequiredMark ? "dx-field-item-required-mark" : "dx-field-item-optional-mark").text(markText)
                    }(markOptions)))
                };
                exports.setLabelWidthByMaxLabelWidth = function($targetContainer, labelsSelector, labelMarkOptions) {
                    const FIELD_ITEM_LABEL_CONTENT_CLASS_Selector = "".concat(labelsSelector, " > .").concat(_constants.FIELD_ITEM_LABEL_CLASS, ":not(.").concat("dx-field-item-label-location-", "top) > .").concat(_constants.FIELD_ITEM_LABEL_CONTENT_CLASS);
                    const $FIELD_ITEM_LABEL_CONTENT_CLASS_Items = $targetContainer.find(FIELD_ITEM_LABEL_CONTENT_CLASS_Selector);
                    const FIELD_ITEM_LABEL_CONTENT_CLASS_Length = $FIELD_ITEM_LABEL_CONTENT_CLASS_Items.length;
                    let labelWidth;
                    let i;
                    let maxWidth = 0;
                    for (i = 0; i < FIELD_ITEM_LABEL_CONTENT_CLASS_Length; i++) {
                        labelWidth = getLabelWidthByHTML($FIELD_ITEM_LABEL_CONTENT_CLASS_Items[i]);
                        if (labelWidth > maxWidth) {
                            maxWidth = labelWidth
                        }
                    }
                    for (i = 0; i < FIELD_ITEM_LABEL_CONTENT_CLASS_Length; i++) {
                        $FIELD_ITEM_LABEL_CONTENT_CLASS_Items[i].style.width = maxWidth + "px"
                    }
                };
                var _renderer = (obj = __webpack_require__( /*! ../../../core/renderer */ 68374), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _element = __webpack_require__( /*! ../../../core/element */ 6415);
                var _uiFormLayout_manager = __webpack_require__( /*! ../ui.form.layout_manager.utils */ 61961);
                var _constants = __webpack_require__( /*! ../constants */ 31093);
                exports.GET_LABEL_WIDTH_BY_TEXT_CLASS = "dx-layout-manager-hidden-label";
                exports.FIELD_ITEM_REQUIRED_MARK_CLASS = "dx-field-item-required-mark";
                exports.FIELD_ITEM_LABEL_LOCATION_CLASS = "dx-field-item-label-location-";
                exports.FIELD_ITEM_OPTIONAL_MARK_CLASS = "dx-field-item-optional-mark";
                exports.FIELD_ITEM_LABEL_TEXT_CLASS = "dx-field-item-label-text";

                function getLabelWidthByHTML(labelContent) {
                    let result = 0;
                    const itemsCount = labelContent.children.length;
                    for (let i = 0; i < itemsCount; i++) {
                        const child = labelContent.children[i];
                        result += child.offsetWidth
                    }
                    return result
                }
            },
        31093:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/form/constants.js ***!
              \******************************************************************/
            function(__unused_webpack_module, exports) {
                exports.WIDGET_CLASS = exports.SINGLE_COLUMN_ITEM_CONTENT = exports.SIMPLE_ITEM_TYPE = exports.ROOT_SIMPLE_ITEM_CLASS = exports.LAYOUT_MANAGER_ONE_COLUMN = exports.GROUP_COL_COUNT_CLASS = exports.GROUP_COL_COUNT_ATTR = exports.FORM_VALIDATION_SUMMARY = exports.FORM_UNDERLINED_CLASS = exports.FORM_LAYOUT_MANAGER_CLASS = exports.FORM_GROUP_WITH_CAPTION_CLASS = exports.FORM_GROUP_CONTENT_CLASS = exports.FORM_GROUP_CLASS = exports.FORM_GROUP_CAPTION_CLASS = exports.FORM_FIELD_ITEM_COL_CLASS = exports.FORM_CLASS = exports.FIELD_ITEM_TAB_CLASS = exports.FIELD_ITEM_LABEL_CONTENT_CLASS = exports.FIELD_ITEM_LABEL_CLASS = exports.FIELD_ITEM_CONTENT_HAS_TABS_CLASS = exports.FIELD_ITEM_CONTENT_HAS_GROUP_CLASS = exports.FIELD_ITEM_CONTENT_CLASS = exports.FIELD_ITEM_CLASS = void 0;
                exports.WIDGET_CLASS = "dx-widget";
                exports.FORM_CLASS = "dx-form";
                exports.FORM_GROUP_CLASS = "dx-form-group";
                exports.FORM_GROUP_CAPTION_CLASS = "dx-form-group-caption";
                exports.FORM_FIELD_ITEM_COL_CLASS = "dx-col-";
                exports.FIELD_ITEM_CLASS = "dx-field-item";
                exports.LAYOUT_MANAGER_ONE_COLUMN = "dx-layout-manager-one-col";
                exports.FIELD_ITEM_LABEL_CONTENT_CLASS = "dx-field-item-label-content";
                exports.FORM_LAYOUT_MANAGER_CLASS = "dx-layout-manager";
                exports.FIELD_ITEM_LABEL_CLASS = "dx-field-item-label";
                exports.FIELD_ITEM_CONTENT_CLASS = "dx-field-item-content";
                exports.SINGLE_COLUMN_ITEM_CONTENT = "dx-single-column-item-content";
                exports.ROOT_SIMPLE_ITEM_CLASS = "dx-root-simple-item";
                exports.FORM_GROUP_CONTENT_CLASS = "dx-form-group-content";
                exports.FIELD_ITEM_CONTENT_HAS_GROUP_CLASS = "dx-field-item-has-group";
                exports.FIELD_ITEM_CONTENT_HAS_TABS_CLASS = "dx-field-item-has-tabs";
                exports.FORM_GROUP_WITH_CAPTION_CLASS = "dx-form-group-with-caption";
                exports.FIELD_ITEM_TAB_CLASS = "dx-field-item-tab";
                exports.GROUP_COL_COUNT_CLASS = "dx-group-colcount-";
                exports.GROUP_COL_COUNT_ATTR = "group-col-count";
                exports.FORM_VALIDATION_SUMMARY = "dx-form-validation-summary";
                exports.FORM_UNDERLINED_CLASS = "dx-form-styling-mode-underlined";
                exports.SIMPLE_ITEM_TYPE = "simple"
            },
        58887:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/form/ui.form.item_option_action.js ***!
              \***********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _class = (obj = __webpack_require__( /*! ../../core/class */ 38377), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                let ItemOptionAction = function() {
                    function ItemOptionAction(options) {
                        this._options = options;
                        this._itemsRunTimeInfo = this._options.itemsRunTimeInfo
                    }
                    var _proto = ItemOptionAction.prototype;
                    _proto.findInstance = function() {
                        return this._itemsRunTimeInfo.findWidgetInstanceByItem(this._options.item)
                    };
                    _proto.findItemContainer = function() {
                        return this._itemsRunTimeInfo.findItemContainerByItem(this._options.item)
                    };
                    _proto.findPreparedItem = function() {
                        return this._itemsRunTimeInfo.findPreparedItemByItem(this._options.item)
                    };
                    _proto.tryExecute = function() {
                        _class.default.abstract()
                    };
                    return ItemOptionAction
                }();
                exports.default = ItemOptionAction;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        83702:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/form/ui.form.item_options_actions.js ***!
              \*************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _uiForm = (obj = __webpack_require__( /*! ./ui.form.item_option_action */ 58887), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _element_data = __webpack_require__( /*! ../../core/element_data */ 97906);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _uiForm2 = __webpack_require__( /*! ./ui.form.utils */ 35459);

                function _inheritsLoose(subClass, superClass) {
                    subClass.prototype = Object.create(superClass.prototype);
                    subClass.prototype.constructor = subClass;
                    _setPrototypeOf(subClass, superClass)
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let WidgetOptionItemOptionAction = function(_ItemOptionAction) {
                    _inheritsLoose(WidgetOptionItemOptionAction, _ItemOptionAction);

                    function WidgetOptionItemOptionAction() {
                        return _ItemOptionAction.apply(this, arguments) || this
                    }
                    var _proto = WidgetOptionItemOptionAction.prototype;
                    _proto.tryExecute = function() {
                        const {
                            value: value
                        } = this._options;
                        const instance = this.findInstance();
                        if (instance) {
                            instance.option(value);
                            return true
                        }
                        return false
                    };
                    return WidgetOptionItemOptionAction
                }(_uiForm.default);
                let TabOptionItemOptionAction = function(_ItemOptionAction2) {
                    _inheritsLoose(TabOptionItemOptionAction, _ItemOptionAction2);

                    function TabOptionItemOptionAction() {
                        return _ItemOptionAction2.apply(this, arguments) || this
                    }
                    var _proto2 = TabOptionItemOptionAction.prototype;
                    _proto2.tryExecute = function() {
                        const tabPanel = this.findInstance();
                        if (tabPanel) {
                            const {
                                optionName: optionName,
                                item: item,
                                value: value
                            } = this._options;
                            const itemIndex = this._itemsRunTimeInfo.findItemIndexByItem(item);
                            if (itemIndex >= 0) {
                                tabPanel.option((0, _uiForm2.getFullOptionName)("items[".concat(itemIndex, "]"), optionName), value);
                                return true
                            }
                        }
                        return false
                    };
                    return TabOptionItemOptionAction
                }(_uiForm.default);
                let SimpleItemTemplateChangedAction = function(_ItemOptionAction3) {
                    _inheritsLoose(SimpleItemTemplateChangedAction, _ItemOptionAction3);

                    function SimpleItemTemplateChangedAction() {
                        return _ItemOptionAction3.apply(this, arguments) || this
                    }
                    var _proto3 = SimpleItemTemplateChangedAction.prototype;
                    _proto3.tryExecute = function() {
                        return false
                    };
                    return SimpleItemTemplateChangedAction
                }(_uiForm.default);
                let GroupItemTemplateChangedAction = function(_ItemOptionAction4) {
                    _inheritsLoose(GroupItemTemplateChangedAction, _ItemOptionAction4);

                    function GroupItemTemplateChangedAction() {
                        return _ItemOptionAction4.apply(this, arguments) || this
                    }
                    var _proto4 = GroupItemTemplateChangedAction.prototype;
                    _proto4.tryExecute = function() {
                        const preparedItem = this.findPreparedItem();
                        if (null != preparedItem && preparedItem._prepareGroupItemTemplate && preparedItem._renderGroupContentTemplate) {
                            preparedItem._prepareGroupItemTemplate(this._options.item.template);
                            preparedItem._renderGroupContentTemplate();
                            return true
                        }
                        return false
                    };
                    return GroupItemTemplateChangedAction
                }(_uiForm.default);
                let TabsOptionItemOptionAction = function(_ItemOptionAction5) {
                    _inheritsLoose(TabsOptionItemOptionAction, _ItemOptionAction5);

                    function TabsOptionItemOptionAction() {
                        return _ItemOptionAction5.apply(this, arguments) || this
                    }
                    var _proto5 = TabsOptionItemOptionAction.prototype;
                    _proto5.tryExecute = function() {
                        const tabPanel = this.findInstance();
                        if (tabPanel) {
                            const {
                                value: value
                            } = this._options;
                            tabPanel.option("dataSource", value);
                            return true
                        }
                        return false
                    };
                    return TabsOptionItemOptionAction
                }(_uiForm.default);
                let ValidationRulesItemOptionAction = function(_ItemOptionAction6) {
                    _inheritsLoose(ValidationRulesItemOptionAction, _ItemOptionAction6);

                    function ValidationRulesItemOptionAction() {
                        return _ItemOptionAction6.apply(this, arguments) || this
                    }
                    var _proto6 = ValidationRulesItemOptionAction.prototype;
                    _proto6.tryExecute = function() {
                        const {
                            item: item
                        } = this._options;
                        const instance = this.findInstance();
                        const validator = instance && (0, _element_data.data)(instance.$element()[0], "dxValidator");
                        if (validator && item) {
                            const filterRequired = item => "required" === item.type;
                            const oldContainsRequired = (validator.option("validationRules") || []).some(filterRequired);
                            const newContainsRequired = (item.validationRules || []).some(filterRequired);
                            if (!oldContainsRequired && !newContainsRequired || oldContainsRequired && newContainsRequired) {
                                validator.option("validationRules", item.validationRules);
                                return true
                            }
                        }
                        return false
                    };
                    return ValidationRulesItemOptionAction
                }(_uiForm.default);
                let CssClassItemOptionAction = function(_ItemOptionAction7) {
                    _inheritsLoose(CssClassItemOptionAction, _ItemOptionAction7);

                    function CssClassItemOptionAction() {
                        return _ItemOptionAction7.apply(this, arguments) || this
                    }
                    var _proto7 = CssClassItemOptionAction.prototype;
                    _proto7.tryExecute = function() {
                        const $itemContainer = this.findItemContainer();
                        const {
                            previousValue: previousValue,
                            value: value
                        } = this._options;
                        if ($itemContainer) {
                            $itemContainer.removeClass(previousValue).addClass(value);
                            return true
                        }
                        return false
                    };
                    return CssClassItemOptionAction
                }(_uiForm.default);
                var _default = (optionName, itemActionOptions) => {
                    switch (optionName) {
                        case "editorOptions":
                        case "buttonOptions":
                            return new WidgetOptionItemOptionAction(itemActionOptions);
                        case "validationRules":
                            return new ValidationRulesItemOptionAction(itemActionOptions);
                        case "cssClass":
                            return new CssClassItemOptionAction(itemActionOptions);
                        case "badge":
                        case "disabled":
                        case "icon":
                        case "tabTemplate":
                        case "title":
                            return new TabOptionItemOptionAction((0, _extend.extend)(itemActionOptions, {
                                optionName: optionName
                            }));
                        case "tabs":
                            return new TabsOptionItemOptionAction(itemActionOptions);
                        case "template": {
                            var _itemActionOptions$it, _itemActionOptions$it2, _itemActionOptions$it3;
                            const itemType = null !== (_itemActionOptions$it = null === itemActionOptions || void 0 === itemActionOptions ? void 0 : null === (_itemActionOptions$it2 = itemActionOptions.item) || void 0 === _itemActionOptions$it2 ? void 0 : _itemActionOptions$it2.itemType) && void 0 !== _itemActionOptions$it ? _itemActionOptions$it : null === (_itemActionOptions$it3 = itemActionOptions.itemsRunTimeInfo.findPreparedItemByItem(null === itemActionOptions || void 0 === itemActionOptions ? void 0 : itemActionOptions.item)) || void 0 === _itemActionOptions$it3 ? void 0 : _itemActionOptions$it3.itemType;
                            if ("simple" === itemType) {
                                return new SimpleItemTemplateChangedAction(itemActionOptions)
                            } else if ("group" === itemType) {
                                return new GroupItemTemplateChangedAction(itemActionOptions)
                            }
                            return new TabOptionItemOptionAction((0, _extend.extend)(itemActionOptions, {
                                optionName: optionName
                            }))
                        }
                        default:
                            return null
                    }
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        10291:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/form/ui.form.items_runtime_info.js ***!
              \***********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _guid = (obj = __webpack_require__( /*! ../../core/guid */ 73176), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                let FormItemsRunTimeInfo = function() {
                    function FormItemsRunTimeInfo() {
                        this._map = {}
                    }
                    var _proto = FormItemsRunTimeInfo.prototype;
                    _proto._findWidgetInstance = function(condition) {
                        let result;
                        (0, _iterator.each)(this._map, (function(guid, _ref) {
                            let {
                                widgetInstance: widgetInstance,
                                item: item
                            } = _ref;
                            if (condition(item)) {
                                result = widgetInstance;
                                return false
                            }
                        }));
                        return result
                    };
                    _proto._findFieldByCondition = function(callback, valueExpr) {
                        let result;
                        (0, _iterator.each)(this._map, (function(key, value) {
                            if (callback(value)) {
                                result = "guid" === valueExpr ? key : value[valueExpr];
                                return false
                            }
                        }));
                        return result
                    };
                    _proto.clear = function() {
                        this._map = {}
                    };
                    _proto.removeItemsByItems = function(itemsRunTimeInfo) {
                        (0, _iterator.each)(itemsRunTimeInfo.getItems(), guid => this.removeItemByKey(guid))
                    };
                    _proto.removeItemByKey = function(key) {
                        delete this._map[key]
                    };
                    _proto.add = function(options) {
                        const key = options.guid || new _guid.default;
                        this._map[key] = options;
                        return key
                    };
                    _proto.addItemsOrExtendFrom = function(itemsRunTimeInfo) {
                        itemsRunTimeInfo.each((key, itemRunTimeInfo) => {
                            if (this._map[key]) {
                                if (itemRunTimeInfo.widgetInstance) {
                                    this._map[key].widgetInstance = itemRunTimeInfo.widgetInstance
                                }
                                this._map[key].$itemContainer = itemRunTimeInfo.$itemContainer
                            } else {
                                this.add({
                                    item: itemRunTimeInfo.item,
                                    widgetInstance: itemRunTimeInfo.widgetInstance,
                                    guid: key,
                                    $itemContainer: itemRunTimeInfo.$itemContainer
                                })
                            }
                        })
                    };
                    _proto.extendRunTimeItemInfoByKey = function(key, options) {
                        if (this._map[key]) {
                            this._map[key] = (0, _extend.extend)(this._map[key], options)
                        }
                    };
                    _proto.findWidgetInstanceByItem = function(item) {
                        return this._findWidgetInstance(storedItem => storedItem === item)
                    };
                    _proto.findGroupOrTabLayoutManagerByPath = function(targetPath) {
                        return this._findFieldByCondition(_ref2 => {
                            let {
                                path: path
                            } = _ref2;
                            return path === targetPath
                        }, "layoutManager")
                    };
                    _proto.findKeyByPath = function(targetPath) {
                        return this._findFieldByCondition(_ref3 => {
                            let {
                                path: path
                            } = _ref3;
                            return path === targetPath
                        }, "guid")
                    };
                    _proto.findWidgetInstanceByName = function(name) {
                        return this._findWidgetInstance(item => name === item.name)
                    };
                    _proto.findWidgetInstanceByDataField = function(dataField) {
                        return this._findWidgetInstance(item => dataField === ((0, _type.isString)(item) ? item : item.dataField))
                    };
                    _proto.findItemContainerByItem = function(item) {
                        for (const key in this._map) {
                            if (this._map[key].item === item) {
                                return this._map[key].$itemContainer
                            }
                        }
                        return null
                    };
                    _proto.findItemIndexByItem = function(targetItem) {
                        return this._findFieldByCondition(_ref4 => {
                            let {
                                item: item
                            } = _ref4;
                            return item === targetItem
                        }, "itemIndex")
                    };
                    _proto.findPreparedItemByItem = function(item) {
                        return this._findFieldByCondition(_ref5 => {
                            let {
                                item: currentItem
                            } = _ref5;
                            return currentItem === item
                        }, "preparedItem")
                    };
                    _proto.getItems = function() {
                        return this._map
                    };
                    _proto.each = function(handler) {
                        (0, _iterator.each)(this._map, (function(key, itemRunTimeInfo) {
                            handler(key, itemRunTimeInfo)
                        }))
                    };
                    _proto.removeItemsByPathStartWith = function(path) {
                        const keys = Object.keys(this._map);
                        const filteredKeys = keys.filter(key => {
                            if (this._map[key].path) {
                                return this._map[key].path.indexOf(path, 0) > -1
                            }
                            return false
                        });
                        filteredKeys.forEach(key => this.removeItemByKey(key))
                    };
                    return FormItemsRunTimeInfo
                }();
                exports.default = FormItemsRunTimeInfo;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        20763:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/form/ui.form.js ***!
              \****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 73176));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _config = _interopRequireDefault(__webpack_require__( /*! ../../core/config */ 80209));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _visibility_change = __webpack_require__( /*! ../../events/visibility_change */ 80506);
                var _element = __webpack_require__( /*! ../../core/element */ 6415);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _editor = _interopRequireDefault(__webpack_require__( /*! ../editor/editor */ 96452));
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _validation_engine = _interopRequireDefault(__webpack_require__( /*! ../validation_engine */ 90964));
                var _uiForm = _interopRequireDefault(__webpack_require__( /*! ./ui.form.items_runtime_info */ 10291));
                var _tab_panel = _interopRequireDefault(__webpack_require__( /*! ../tab_panel */ 21807));
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../scroll_view/ui.scrollable */ 41183));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _themes = __webpack_require__( /*! ../themes */ 75811);
                var _uiForm2 = _interopRequireDefault(__webpack_require__( /*! ./ui.form.item_options_actions */ 83702));
                var _resize_observer = _interopRequireDefault(__webpack_require__( /*! ../../core/resize_observer */ 91784));
                __webpack_require__( /*! ./ui.form.layout_manager */ 85532);
                var _uiForm4 = __webpack_require__( /*! ./ui.form.utils */ 35459);
                var _uiFormLayout_manager = __webpack_require__( /*! ./ui.form.layout_manager.utils */ 61961);
                var _label = __webpack_require__( /*! ./components/label */ 11042);
                __webpack_require__( /*! ../validation_summary */ 97289);
                __webpack_require__( /*! ../validation_group */ 4401);
                var _constants = __webpack_require__( /*! ./constants */ 31093);
                var _constants2 = __webpack_require__( /*! ../toolbar/constants */ 10329);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const ITEM_OPTIONS_FOR_VALIDATION_UPDATING = ["items", "isRequired", "validationRules", "visible"];
                const Form = _ui.default.inherit({
                    _init: function() {
                        this.callBase();
                        this._dirtyFields = new Set;
                        this._cachedColCountOptions = [];
                        this._itemsRunTimeInfo = new _uiForm.default;
                        this._groupsColCount = [];
                        this._attachSyncSubscriptions()
                    },
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            formID: "dx-" + new _guid.default,
                            formData: {},
                            colCount: 1,
                            screenByWidth: _window.defaultScreenFactorFunc,
                            colCountByScreen: void 0,
                            labelLocation: "left",
                            readOnly: false,
                            onFieldDataChanged: null,
                            customizeItem: null,
                            onEditorEnterKey: null,
                            minColWidth: 200,
                            alignItemLabels: true,
                            alignItemLabelsInAllGroups: true,
                            alignRootItemLabels: true,
                            showColonAfterLabel: true,
                            showRequiredMark: true,
                            showOptionalMark: false,
                            requiredMark: "*",
                            optionalMark: _message.default.format("dxForm-optionalMark"),
                            requiredMessage: _message.default.getFormatter("dxForm-requiredMessage"),
                            showValidationSummary: false,
                            items: void 0,
                            scrollingEnabled: false,
                            validationGroup: void 0,
                            stylingMode: (0, _config.default)().editorStylingMode,
                            labelMode: "outside",
                            isDirty: false
                        })
                    },
                    _defaultOptionsRules: function() {
                        return this.callBase().concat([{
                            device: function() {
                                return (0, _themes.isMaterialBased)()
                            },
                            options: {
                                labelLocation: "top"
                            }
                        }, {
                            device: function() {
                                return (0, _themes.isMaterial)()
                            },
                            options: {
                                showColonAfterLabel: false
                            }
                        }])
                    },
                    _setOptionsByReference: function() {
                        this.callBase();
                        (0, _extend.extend)(this._optionsByReference, {
                            formData: true,
                            validationGroup: true
                        })
                    },
                    _getGroupColCount: function($element) {
                        return parseInt($element.attr(_constants.GROUP_COL_COUNT_ATTR))
                    },
                    _applyLabelsWidthByCol: function($container, index) {
                        let options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                        let labelMarkOptions = arguments.length > 3 ? arguments[3] : void 0;
                        const fieldItemClass = options.inOneColumn ? _constants.FIELD_ITEM_CLASS : _constants.FORM_FIELD_ITEM_COL_CLASS + index;
                        const cssExcludeTabbedSelector = options.excludeTabbed ? ":not(.".concat(_constants.FIELD_ITEM_TAB_CLASS, ")") : "";
                        (0, _label.setLabelWidthByMaxLabelWidth)($container, ".".concat(fieldItemClass).concat(cssExcludeTabbedSelector), labelMarkOptions);
                        return
                    },
                    _applyLabelsWidth: function($container, excludeTabbed, inOneColumn, colCount, labelMarkOptions) {
                        colCount = inOneColumn ? 1 : colCount || this._getGroupColCount($container);
                        const applyLabelsOptions = {
                            excludeTabbed: excludeTabbed,
                            inOneColumn: inOneColumn
                        };
                        let i;
                        for (i = 0; i < colCount; i++) {
                            this._applyLabelsWidthByCol($container, i, applyLabelsOptions, labelMarkOptions)
                        }
                    },
                    _getGroupElementsInColumn: function($container, columnIndex, colCount) {
                        const cssColCountSelector = (0, _type.isDefined)(colCount) ? "." + _constants.GROUP_COL_COUNT_CLASS + colCount : "";
                        const groupSelector = "." + _constants.FORM_FIELD_ITEM_COL_CLASS + columnIndex + " > ." + _constants.FIELD_ITEM_CONTENT_CLASS + " > ." + _constants.FORM_GROUP_CLASS + cssColCountSelector;
                        return $container.find(groupSelector)
                    },
                    _applyLabelsWidthWithGroups: function($container, colCount, excludeTabbed, labelMarkOptions) {
                        if (true === this.option("alignRootItemLabels")) {
                            const $rootSimpleItems = $container.find(".".concat(_constants.ROOT_SIMPLE_ITEM_CLASS));
                            for (let colIndex = 0; colIndex < colCount; colIndex++) {
                                this._applyLabelsWidthByCol($rootSimpleItems, colIndex, excludeTabbed, labelMarkOptions)
                            }
                        }
                        const alignItemLabelsInAllGroups = this.option("alignItemLabelsInAllGroups");
                        if (alignItemLabelsInAllGroups) {
                            this._applyLabelsWidthWithNestedGroups($container, colCount, excludeTabbed, labelMarkOptions)
                        } else {
                            const $groups = this.$element().find("." + _constants.FORM_GROUP_CLASS);
                            let i;
                            for (i = 0; i < $groups.length; i++) {
                                this._applyLabelsWidth($groups.eq(i), excludeTabbed, void 0, void 0, labelMarkOptions)
                            }
                        }
                    },
                    _applyLabelsWidthWithNestedGroups: function($container, colCount, excludeTabbed, labelMarkOptions) {
                        const applyLabelsOptions = {
                            excludeTabbed: excludeTabbed
                        };
                        let colIndex;
                        let groupsColIndex;
                        let groupColIndex;
                        let $groupsByCol;
                        for (colIndex = 0; colIndex < colCount; colIndex++) {
                            $groupsByCol = this._getGroupElementsInColumn($container, colIndex);
                            this._applyLabelsWidthByCol($groupsByCol, 0, applyLabelsOptions, labelMarkOptions);
                            for (groupsColIndex = 0; groupsColIndex < this._groupsColCount.length; groupsColIndex++) {
                                $groupsByCol = this._getGroupElementsInColumn($container, colIndex, this._groupsColCount[groupsColIndex]);
                                const groupColCount = this._getGroupColCount($groupsByCol);
                                for (groupColIndex = 1; groupColIndex < groupColCount; groupColIndex++) {
                                    this._applyLabelsWidthByCol($groupsByCol, groupColIndex, applyLabelsOptions, labelMarkOptions)
                                }
                            }
                        }
                    },
                    _labelLocation: function() {
                        return this.option("labelLocation")
                    },
                    _alignLabelsInColumn: function(_ref) {
                        let {
                            layoutManager: layoutManager,
                            inOneColumn: inOneColumn,
                            $container: $container,
                            excludeTabbed: excludeTabbed,
                            items: items
                        } = _ref;
                        if (!(0, _window.hasWindow)() || "top" === this._labelLocation()) {
                            return
                        }
                        const labelMarkOptions = (0, _uiFormLayout_manager.convertToLabelMarkOptions)(layoutManager._getMarkOptions());
                        if (inOneColumn) {
                            this._applyLabelsWidth($container, excludeTabbed, true, void 0, labelMarkOptions)
                        } else if (this._checkGrouping(items)) {
                            this._applyLabelsWidthWithGroups($container, layoutManager._getColCount(), excludeTabbed, labelMarkOptions)
                        } else {
                            this._applyLabelsWidth($container, excludeTabbed, false, layoutManager._getColCount(), labelMarkOptions)
                        }
                    },
                    _prepareFormData: function() {
                        if (!(0, _type.isDefined)(this.option("formData"))) {
                            this.option("formData", {})
                        }
                    },
                    _setStylingModeClass: function() {
                        if ("underlined" === this.option("stylingMode")) {
                            this.$element().addClass(_constants.FORM_UNDERLINED_CLASS)
                        }
                    },
                    _initMarkup: function() {
                        _validation_engine.default.addGroup(this._getValidationGroup());
                        this._clearCachedInstances();
                        this._prepareFormData();
                        this.$element().addClass(_constants.FORM_CLASS);
                        this._setStylingModeClass();
                        this.callBase();
                        this.setAria("role", "form", this.$element());
                        if (this.option("scrollingEnabled")) {
                            this._renderScrollable()
                        }
                        this._renderLayout();
                        this._renderValidationSummary();
                        this._lastMarkupScreenFactor = this._targetScreenFactor || this._getCurrentScreenFactor();
                        this._attachResizeObserverSubscription()
                    },
                    _attachResizeObserverSubscription: function() {
                        if ((0, _window.hasWindow)()) {
                            const formRootElement = this.$element().get(0);
                            _resize_observer.default.unobserve(formRootElement);
                            _resize_observer.default.observe(formRootElement, () => {
                                this._resizeHandler()
                            })
                        }
                    },
                    _resizeHandler: function() {
                        if (this._cachedLayoutManagers.length) {
                            (0, _iterator.each)(this._cachedLayoutManagers, (_, layoutManager) => {
                                var _layoutManager$option;
                                null === (_layoutManager$option = layoutManager.option("onLayoutChanged")) || void 0 === _layoutManager$option ? void 0 : _layoutManager$option(layoutManager.isSingleColumnMode())
                            })
                        }
                    },
                    _getCurrentScreenFactor: function() {
                        return (0, _window.hasWindow)() ? (0, _window.getCurrentScreenFactor)(this.option("screenByWidth")) : "lg"
                    },
                    _clearCachedInstances: function() {
                        this._itemsRunTimeInfo.clear();
                        this._cachedLayoutManagers = []
                    },
                    _alignLabels: function(layoutManager, inOneColumn) {
                        this._alignLabelsInColumn({
                            $container: this.$element(),
                            layoutManager: layoutManager,
                            excludeTabbed: true,
                            items: this.option("items"),
                            inOneColumn: inOneColumn
                        });
                        (0, _visibility_change.triggerResizeEvent)(this.$element().find(".".concat(_constants2.TOOLBAR_CLASS)))
                    },
                    _clean: function() {
                        this._clearValidationSummary();
                        this.callBase();
                        this._groupsColCount = [];
                        this._cachedColCountOptions = [];
                        this._lastMarkupScreenFactor = void 0;
                        _resize_observer.default.unobserve(this.$element().get(0))
                    },
                    _renderScrollable: function() {
                        const useNativeScrolling = this.option("useNativeScrolling");
                        this._scrollable = new _ui2.default(this.$element(), {
                            useNative: !!useNativeScrolling,
                            useSimulatedScrollbar: !useNativeScrolling,
                            useKeyboard: false,
                            direction: "both",
                            bounceEnabled: false
                        })
                    },
                    _getContent: function() {
                        return this.option("scrollingEnabled") ? (0, _renderer.default)(this._scrollable.content()) : this.$element()
                    },
                    _clearValidationSummary: function() {
                        var _this$_$validationSum;
                        null === (_this$_$validationSum = this._$validationSummary) || void 0 === _this$_$validationSum ? void 0 : _this$_$validationSum.remove();
                        this._$validationSummary = void 0;
                        this._validationSummary = void 0
                    },
                    _renderValidationSummary: function() {
                        this._clearValidationSummary();
                        if (this.option("showValidationSummary")) {
                            this._$validationSummary = (0, _renderer.default)("<div>").addClass(_constants.FORM_VALIDATION_SUMMARY).appendTo(this._getContent());
                            this._validationSummary = this._$validationSummary.dxValidationSummary({
                                validationGroup: this._getValidationGroup()
                            }).dxValidationSummary("instance")
                        }
                    },
                    _prepareItems(items, parentIsTabbedItem, currentPath, isTabs) {
                        if (items) {
                            const result = [];
                            for (let i = 0; i < items.length; i++) {
                                let item = items[i];
                                const path = (0, _uiForm4.concatPaths)(currentPath, (0, _uiForm4.createItemPathByIndex)(i, isTabs));
                                const itemRunTimeInfo = {
                                    item: item,
                                    itemIndex: i,
                                    path: path
                                };
                                const guid = this._itemsRunTimeInfo.add(itemRunTimeInfo);
                                if ((0, _type.isString)(item)) {
                                    item = {
                                        dataField: item
                                    }
                                }
                                if ((0, _type.isObject)(item)) {
                                    const preparedItem = _extends({}, item);
                                    itemRunTimeInfo.preparedItem = preparedItem;
                                    preparedItem.guid = guid;
                                    this._tryPrepareGroupItem(preparedItem);
                                    this._tryPrepareTabbedItem(preparedItem, path);
                                    this._tryPrepareItemTemplate(preparedItem);
                                    if (parentIsTabbedItem) {
                                        preparedItem.cssItemClass = _constants.FIELD_ITEM_TAB_CLASS
                                    }
                                    if (preparedItem.items) {
                                        preparedItem.items = this._prepareItems(preparedItem.items, parentIsTabbedItem, path)
                                    }
                                    result.push(preparedItem)
                                } else {
                                    result.push(item)
                                }
                            }
                            return result
                        }
                    },
                    _tryPrepareGroupItem: function(item) {
                        if ("group" === item.itemType) {
                            item.alignItemLabels = (0, _common.ensureDefined)(item.alignItemLabels, true);
                            item._prepareGroupItemTemplate = itemTemplate => {
                                if (item.template) {
                                    item.groupContentTemplate = this._getTemplate(itemTemplate)
                                }
                                item.template = this._itemGroupTemplate.bind(this, item)
                            };
                            item._prepareGroupItemTemplate(item.template)
                        }
                    },
                    _tryPrepareTabbedItem: function(item, path) {
                        if ("tabbed" === item.itemType) {
                            item.template = this._itemTabbedTemplate.bind(this, item);
                            item.tabs = this._prepareItems(item.tabs, true, path, true)
                        }
                    },
                    _tryPrepareItemTemplate: function(item) {
                        if (item.template) {
                            item.template = this._getTemplate(item.template)
                        }
                    },
                    _checkGrouping: function(items) {
                        if (items) {
                            for (let i = 0; i < items.length; i++) {
                                const item = items[i];
                                if ("group" === item.itemType) {
                                    return true
                                }
                            }
                        }
                    },
                    _renderLayout: function() {
                        const that = this;
                        let items = that.option("items");
                        const $content = that._getContent();
                        items = that._prepareItems(items);
                        that._rootLayoutManager = that._renderLayoutManager($content, this._createLayoutManagerOptions(items, {
                            isRoot: true,
                            colCount: that.option("colCount"),
                            alignItemLabels: that.option("alignItemLabels"),
                            screenByWidth: this.option("screenByWidth"),
                            colCountByScreen: this.option("colCountByScreen"),
                            onLayoutChanged: function(inOneColumn) {
                                that._alignLabels.bind(that)(that._rootLayoutManager, inOneColumn)
                            },
                            onContentReady: function(e) {
                                that._alignLabels(e.component, e.component.isSingleColumnMode())
                            }
                        }))
                    },
                    _tryGetItemsForTemplate: function(item) {
                        return item.items || []
                    },
                    _itemTabbedTemplate: function(item, e, $container) {
                        var _item$tabs;
                        const $tabPanel = (0, _renderer.default)("<div>").appendTo($container);
                        const tabPanelOptions = (0, _extend.extend)({}, item.tabPanelOptions, {
                            dataSource: item.tabs,
                            onItemRendered: args => {
                                var _item$tabPanelOptions, _item$tabPanelOptions2;
                                null === (_item$tabPanelOptions = item.tabPanelOptions) || void 0 === _item$tabPanelOptions ? void 0 : null === (_item$tabPanelOptions2 = _item$tabPanelOptions.onItemRendered) || void 0 === _item$tabPanelOptions2 ? void 0 : _item$tabPanelOptions2.call(_item$tabPanelOptions, args);
                                (0, _visibility_change.triggerShownEvent)(args.itemElement)
                            },
                            itemTemplate: (itemData, e, container) => {
                                const $container = (0, _renderer.default)(container);
                                const alignItemLabels = (0, _common.ensureDefined)(itemData.alignItemLabels, true);
                                const layoutManager = this._renderLayoutManager($container, this._createLayoutManagerOptions(this._tryGetItemsForTemplate(itemData), {
                                    colCount: itemData.colCount,
                                    alignItemLabels: alignItemLabels,
                                    screenByWidth: this.option("screenByWidth"),
                                    colCountByScreen: itemData.colCountByScreen,
                                    cssItemClass: itemData.cssItemClass,
                                    onLayoutChanged: inOneColumn => {
                                        this._alignLabelsInColumn({
                                            $container: $container,
                                            layoutManager: layoutManager,
                                            items: itemData.items,
                                            inOneColumn: inOneColumn
                                        })
                                    }
                                }));
                                if (this._itemsRunTimeInfo) {
                                    this._itemsRunTimeInfo.extendRunTimeItemInfoByKey(itemData.guid, {
                                        layoutManager: layoutManager
                                    })
                                }
                                if (alignItemLabels) {
                                    this._alignLabelsInColumn({
                                        $container: $container,
                                        layoutManager: layoutManager,
                                        items: itemData.items,
                                        inOneColumn: layoutManager.isSingleColumnMode()
                                    })
                                }
                            }
                        });
                        const tryUpdateTabPanelInstance = (items, instance) => {
                            if (Array.isArray(items)) {
                                items.forEach(item => this._itemsRunTimeInfo.extendRunTimeItemInfoByKey(item.guid, {
                                    widgetInstance: instance
                                }))
                            }
                        };
                        const tabPanel = this._createComponent($tabPanel, _tab_panel.default, tabPanelOptions);
                        (0, _renderer.default)($container).parent().addClass(_constants.FIELD_ITEM_CONTENT_HAS_TABS_CLASS);
                        tabPanel.on("optionChanged", e => {
                            if ("dataSource" === e.fullName) {
                                tryUpdateTabPanelInstance(e.value, e.component)
                            }
                        });
                        tryUpdateTabPanelInstance([{
                            guid: item.guid
                        }, ...null !== (_item$tabs = item.tabs) && void 0 !== _item$tabs ? _item$tabs : []], tabPanel)
                    },
                    _itemGroupTemplate: function(item, options, $container) {
                        const id = options.editorOptions.inputAttr.id;
                        const $group = (0, _renderer.default)("<div>").toggleClass(_constants.FORM_GROUP_WITH_CAPTION_CLASS, (0, _type.isDefined)(item.caption) && item.caption.length).addClass(_constants.FORM_GROUP_CLASS).appendTo($container);
                        const groupAria = {
                            role: "group",
                            labelledby: id
                        };
                        this.setAria(groupAria, $group);
                        (0, _renderer.default)($container).parent().addClass(_constants.FIELD_ITEM_CONTENT_HAS_GROUP_CLASS);
                        if (item.caption) {
                            (0, _renderer.default)("<span>").addClass(_constants.FORM_GROUP_CAPTION_CLASS).text(item.caption).attr("id", id).appendTo($group)
                        }
                        const $groupContent = (0, _renderer.default)("<div>").addClass(_constants.FORM_GROUP_CONTENT_CLASS).appendTo($group);
                        if (item.groupContentTemplate) {
                            item._renderGroupContentTemplate = () => {
                                $groupContent.empty();
                                const data = {
                                    formData: this.option("formData"),
                                    component: this
                                };
                                item.groupContentTemplate.render({
                                    model: data,
                                    container: (0, _element.getPublicElement)($groupContent)
                                })
                            };
                            item._renderGroupContentTemplate()
                        } else {
                            const layoutManager = this._renderLayoutManager($groupContent, this._createLayoutManagerOptions(this._tryGetItemsForTemplate(item), {
                                colCount: item.colCount,
                                colCountByScreen: item.colCountByScreen,
                                alignItemLabels: item.alignItemLabels,
                                cssItemClass: item.cssItemClass
                            }));
                            this._itemsRunTimeInfo && this._itemsRunTimeInfo.extendRunTimeItemInfoByKey(item.guid, {
                                layoutManager: layoutManager
                            });
                            const colCount = layoutManager._getColCount();
                            if (!this._groupsColCount.includes(colCount)) {
                                this._groupsColCount.push(colCount)
                            }
                            $group.addClass(_constants.GROUP_COL_COUNT_CLASS + colCount);
                            $group.attr(_constants.GROUP_COL_COUNT_ATTR, colCount)
                        }
                    },
                    _createLayoutManagerOptions: function(items, extendedLayoutManagerOptions) {
                        return (0, _uiForm4.convertToLayoutManagerOptions)({
                            form: this,
                            formOptions: this.option(),
                            $formElement: this.$element(),
                            items: items,
                            validationGroup: this._getValidationGroup(),
                            extendedLayoutManagerOptions: extendedLayoutManagerOptions,
                            onFieldDataChanged: args => {
                                if (!this._isDataUpdating) {
                                    this._triggerOnFieldDataChanged(args)
                                }
                            },
                            onContentReady: args => {
                                this._itemsRunTimeInfo.addItemsOrExtendFrom(args.component._itemsRunTimeInfo);
                                extendedLayoutManagerOptions.onContentReady && extendedLayoutManagerOptions.onContentReady(args)
                            },
                            onDisposing: _ref2 => {
                                let {
                                    component: component
                                } = _ref2;
                                const nestedItemsRunTimeInfo = component.getItemsRunTimeInfo();
                                this._itemsRunTimeInfo.removeItemsByItems(nestedItemsRunTimeInfo)
                            },
                            onFieldItemRendered: () => {
                                var _this$_validationSumm;
                                null === (_this$_validationSumm = this._validationSummary) || void 0 === _this$_validationSumm ? void 0 : _this$_validationSumm.refreshValidationGroup()
                            }
                        })
                    },
                    _renderLayoutManager: function($parent, layoutManagerOptions) {
                        const baseColCountByScreen = {
                            lg: layoutManagerOptions.colCount,
                            md: layoutManagerOptions.colCount,
                            sm: layoutManagerOptions.colCount,
                            xs: 1
                        };
                        this._cachedColCountOptions.push({
                            colCountByScreen: (0, _extend.extend)(baseColCountByScreen, layoutManagerOptions.colCountByScreen)
                        });
                        const $element = (0, _renderer.default)("<div>");
                        $element.appendTo($parent);
                        const instance = this._createComponent($element, "dxLayoutManager", layoutManagerOptions);
                        instance.on("autoColCountChanged", () => {
                            this._clearAutoColCountChangedTimeout();
                            this.autoColCountChangedTimeoutId = setTimeout(() => !this._disposed && this._refresh(), 0)
                        });
                        this._cachedLayoutManagers.push(instance);
                        return instance
                    },
                    _getValidationGroup: function() {
                        return this.option("validationGroup") || this
                    },
                    _createComponent: function($element, type, config) {
                        config = config || {};
                        this._extendConfig(config, {
                            readOnly: this.option("readOnly")
                        });
                        return this.callBase($element, type, config)
                    },
                    _attachSyncSubscriptions: function() {
                        const that = this;
                        that.on("optionChanged", (function(args) {
                            const optionFullName = args.fullName;
                            if ("formData" === optionFullName) {
                                if (!(0, _type.isDefined)(args.value)) {
                                    that._options.silent("formData", args.value = {})
                                }
                                that._triggerOnFieldDataChangedByDataSet(args.value)
                            }
                            if (that._cachedLayoutManagers.length) {
                                (0, _iterator.each)(that._cachedLayoutManagers, (function(index, layoutManager) {
                                    if ("formData" === optionFullName) {
                                        that._isDataUpdating = true;
                                        layoutManager.option("layoutData", args.value);
                                        that._isDataUpdating = false
                                    }
                                    if ("readOnly" === args.name || "disabled" === args.name) {
                                        layoutManager.option(optionFullName, args.value)
                                    }
                                }))
                            }
                        }))
                    },
                    _optionChanged: function(args) {
                        const splitFullName = args.fullName.split(".");
                        if (splitFullName.length > 1 && -1 !== splitFullName[0].search("items") && this._itemsOptionChangedHandler(args)) {
                            return
                        }
                        if (splitFullName.length > 1 && -1 !== splitFullName[0].search("formData") && this._formDataOptionChangedHandler(args)) {
                            return
                        }
                        this._defaultOptionChangedHandler(args)
                    },
                    _defaultOptionChangedHandler: function(args) {
                        switch (args.name) {
                            case "formData":
                                if (!this.option("items")) {
                                    this._invalidate()
                                } else if ((0, _type.isEmptyObject)(args.value)) {
                                    this._clear()
                                }
                                break;
                            case "onFieldDataChanged":
                                break;
                            case "items":
                            case "colCount":
                            case "onEditorEnterKey":
                            case "labelLocation":
                            case "labelMode":
                            case "alignItemLabels":
                            case "showColonAfterLabel":
                            case "customizeItem":
                            case "alignItemLabelsInAllGroups":
                            case "showRequiredMark":
                            case "showOptionalMark":
                            case "requiredMark":
                            case "optionalMark":
                            case "requiredMessage":
                            case "scrollingEnabled":
                            case "formID":
                            case "colCountByScreen":
                            case "screenByWidth":
                            case "stylingMode":
                                this._invalidate();
                                break;
                            case "showValidationSummary":
                                this._renderValidationSummary();
                                break;
                            case "minColWidth":
                                if ("auto" === this.option("colCount")) {
                                    this._invalidate()
                                }
                                break;
                            case "alignRootItemLabels":
                            case "readOnly":
                            case "isDirty":
                                break;
                            case "width":
                                this.callBase(args);
                                this._rootLayoutManager.option(args.name, args.value);
                                this._alignLabels(this._rootLayoutManager, this._rootLayoutManager.isSingleColumnMode());
                                break;
                            case "validationGroup":
                                _validation_engine.default.removeGroup(args.previousValue || this);
                                this._invalidate();
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _itemsOptionChangedHandler: function(args) {
                        const nameParts = args.fullName.split(".");
                        const value = args.value;
                        const itemPath = this._getItemPath(nameParts);
                        const item = this.option(itemPath);
                        const optionNameWithoutPath = args.fullName.replace(itemPath + ".", "");
                        const simpleOptionName = optionNameWithoutPath.split(".")[0].replace(/\[\d+]/, "");
                        const itemAction = this._tryCreateItemOptionAction(simpleOptionName, item, item[simpleOptionName], args.previousValue, itemPath);
                        let result = this._tryExecuteItemOptionAction(itemAction) || this._tryChangeLayoutManagerItemOption(args.fullName, value);
                        if (!result && item) {
                            this._changeItemOption(item, optionNameWithoutPath, value);
                            const items = this._generateItemsFromData(this.option("items"));
                            this.option("items", items);
                            result = true
                        }
                        return result
                    },
                    _formDataOptionChangedHandler: function(args) {
                        const nameParts = args.fullName.split(".");
                        const value = args.value;
                        const dataField = nameParts.slice(1).join(".");
                        const editor = this.getEditor(dataField);
                        if (editor) {
                            editor.option("value", value)
                        } else {
                            this._triggerOnFieldDataChanged({
                                dataField: dataField,
                                value: value
                            })
                        }
                        return true
                    },
                    _tryCreateItemOptionAction: function(optionName, item, value, previousValue, itemPath) {
                        if ("tabs" === optionName) {
                            this._itemsRunTimeInfo.removeItemsByPathStartWith("".concat(itemPath, ".tabs"));
                            value = this._prepareItems(value, true, itemPath, true)
                        }
                        return (0, _uiForm2.default)(optionName, {
                            item: item,
                            value: value,
                            previousValue: previousValue,
                            itemsRunTimeInfo: this._itemsRunTimeInfo
                        })
                    },
                    _tryExecuteItemOptionAction: function(action) {
                        return action && action.tryExecute()
                    },
                    _updateValidationGroupAndSummaryIfNeeded: function(fullName) {
                        const optionName = (0, _uiForm4.getOptionNameFromFullName)(fullName);
                        if (ITEM_OPTIONS_FOR_VALIDATION_UPDATING.indexOf(optionName) > -1) {
                            _validation_engine.default.addGroup(this._getValidationGroup());
                            if (this.option("showValidationSummary")) {
                                var _this$_validationSumm2;
                                null === (_this$_validationSumm2 = this._validationSummary) || void 0 === _this$_validationSumm2 ? void 0 : _this$_validationSumm2.refreshValidationGroup()
                            }
                        }
                    },
                    _setLayoutManagerItemOption(layoutManager, optionName, value, path) {
                        if (this._updateLockCount > 0) {
                            !layoutManager._updateLockCount && layoutManager.beginUpdate();
                            const key = this._itemsRunTimeInfo.findKeyByPath(path);
                            this.postponedOperations.add(key, () => {
                                !layoutManager._disposed && layoutManager.endUpdate();
                                return (new _deferred.Deferred).resolve()
                            })
                        }
                        const contentReadyHandler = e => {
                            e.component.off("contentReady", contentReadyHandler);
                            if ((0, _uiForm4.isFullPathContainsTabs)(path)) {
                                const tabPath = (0, _uiForm4.tryGetTabPath)(path);
                                const tabLayoutManager = this._itemsRunTimeInfo.findGroupOrTabLayoutManagerByPath(tabPath);
                                if (tabLayoutManager) {
                                    this._alignLabelsInColumn({
                                        items: tabLayoutManager.option("items"),
                                        layoutManager: tabLayoutManager,
                                        $container: tabLayoutManager.$element(),
                                        inOneColumn: tabLayoutManager.isSingleColumnMode()
                                    })
                                }
                            } else {
                                this._alignLabels(this._rootLayoutManager, this._rootLayoutManager.isSingleColumnMode())
                            }
                        };
                        layoutManager.on("contentReady", contentReadyHandler);
                        layoutManager.option(optionName, value);
                        this._updateValidationGroupAndSummaryIfNeeded(optionName)
                    },
                    _tryChangeLayoutManagerItemOption(fullName, value) {
                        const nameParts = fullName.split(".");
                        const optionName = (0, _uiForm4.getOptionNameFromFullName)(fullName);
                        if ("items" === optionName && nameParts.length > 1) {
                            const itemPath = this._getItemPath(nameParts);
                            const layoutManager = this._itemsRunTimeInfo.findGroupOrTabLayoutManagerByPath(itemPath);
                            if (layoutManager) {
                                this._itemsRunTimeInfo.removeItemsByItems(layoutManager.getItemsRunTimeInfo());
                                const items = this._prepareItems(value, false, itemPath);
                                this._setLayoutManagerItemOption(layoutManager, optionName, items, itemPath);
                                return true
                            }
                        } else if (nameParts.length > 2) {
                            const endPartIndex = nameParts.length - 2;
                            const itemPath = this._getItemPath(nameParts.slice(0, endPartIndex));
                            const layoutManager = this._itemsRunTimeInfo.findGroupOrTabLayoutManagerByPath(itemPath);
                            if (layoutManager) {
                                const fullOptionName = (0, _uiForm4.getFullOptionName)(nameParts[endPartIndex], optionName);
                                if ("editorType" === optionName) {
                                    if (layoutManager.option(fullOptionName) !== value) {
                                        return false
                                    }
                                }
                                if ("visible" === optionName) {
                                    const formItems = this.option((0, _uiForm4.getFullOptionName)(itemPath, "items"));
                                    if (formItems && formItems.length) {
                                        const layoutManagerItems = layoutManager.option("items");
                                        formItems.forEach((item, index) => {
                                            const layoutItem = layoutManagerItems[index];
                                            layoutItem.visibleIndex = item.visibleIndex
                                        })
                                    }
                                }
                                this._setLayoutManagerItemOption(layoutManager, fullOptionName, value, itemPath);
                                return true
                            }
                        }
                        return false
                    },
                    _tryChangeLayoutManagerItemOptions(itemPath, options) {
                        let result;
                        this.beginUpdate();
                        (0, _iterator.each)(options, (optionName, optionValue) => {
                            result = this._tryChangeLayoutManagerItemOption((0, _uiForm4.getFullOptionName)(itemPath, optionName), optionValue);
                            if (!result) {
                                return false
                            }
                        });
                        this.endUpdate();
                        return result
                    },
                    _getItemPath: function(nameParts) {
                        let itemPath = nameParts[0];
                        let i;
                        for (i = 1; i < nameParts.length; i++) {
                            if (-1 !== nameParts[i].search(/items\[\d+]|tabs\[\d+]/)) {
                                itemPath += "." + nameParts[i]
                            } else {
                                break
                            }
                        }
                        return itemPath
                    },
                    _triggerOnFieldDataChanged: function(args) {
                        this._updateIsDirty(args.dataField);
                        this._createActionByOption("onFieldDataChanged")(args)
                    },
                    _triggerOnFieldDataChangedByDataSet: function(data) {
                        const that = this;
                        if (data && (0, _type.isObject)(data)) {
                            (0, _iterator.each)(data, (function(dataField, value) {
                                that._triggerOnFieldDataChanged({
                                    dataField: dataField,
                                    value: value
                                })
                            }))
                        }
                    },
                    _updateFieldValue: function(dataField, value) {
                        if ((0, _type.isDefined)(this.option("formData"))) {
                            const editor = this.getEditor(dataField);
                            this.option("formData." + dataField, value);
                            if (editor) {
                                const editorValue = editor.option("value");
                                if (editorValue !== value) {
                                    editor.option("value", value)
                                }
                            }
                        }
                    },
                    _generateItemsFromData: function(items) {
                        const formData = this.option("formData");
                        const result = [];
                        if (!items && (0, _type.isDefined)(formData)) {
                            (0, _iterator.each)(formData, (function(dataField) {
                                result.push({
                                    dataField: dataField
                                })
                            }))
                        }
                        if (items) {
                            (0, _iterator.each)(items, (function(index, item) {
                                if ((0, _type.isObject)(item)) {
                                    result.push(item)
                                } else {
                                    result.push({
                                        dataField: item
                                    })
                                }
                            }))
                        }
                        return result
                    },
                    _getItemByField: function(field, items) {
                        const that = this;
                        const fieldParts = (0, _type.isObject)(field) ? field : that._getFieldParts(field);
                        const fieldName = fieldParts.fieldName;
                        const fieldPath = fieldParts.fieldPath;
                        let resultItem;
                        if (items.length) {
                            (0, _iterator.each)(items, (function(index, item) {
                                const itemType = item.itemType;
                                if (fieldPath.length) {
                                    const path = fieldPath.slice();
                                    item = that._getItemByFieldPath(path, fieldName, item)
                                } else if ("group" === itemType && !(item.caption || item.name) || "tabbed" === itemType && !item.name) {
                                    const subItemsField = that._getSubItemField(itemType);
                                    item.items = that._generateItemsFromData(item.items);
                                    item = that._getItemByField({
                                        fieldName: fieldName,
                                        fieldPath: fieldPath
                                    }, item[subItemsField])
                                }
                                if ((0, _uiForm4.isEqualToDataFieldOrNameOrTitleOrCaption)(item, fieldName)) {
                                    resultItem = item;
                                    return false
                                }
                            }))
                        }
                        return resultItem
                    },
                    _getFieldParts: function(field) {
                        let fieldName = field;
                        let separatorIndex = fieldName.indexOf(".");
                        const resultPath = [];
                        while (-1 !== separatorIndex) {
                            resultPath.push(fieldName.substr(0, separatorIndex));
                            fieldName = fieldName.substr(separatorIndex + 1);
                            separatorIndex = fieldName.indexOf(".")
                        }
                        return {
                            fieldName: fieldName,
                            fieldPath: resultPath.reverse()
                        }
                    },
                    _getItemByFieldPath: function(path, fieldName, item) {
                        const that = this;
                        const itemType = item.itemType;
                        const subItemsField = that._getSubItemField(itemType);
                        const isItemWithSubItems = "group" === itemType || "tabbed" === itemType || item.title;
                        let result;
                        do {
                            if (isItemWithSubItems) {
                                const name = item.name || item.caption || item.title;
                                const isGroupWithName = (0, _type.isDefined)(name);
                                const nameWithoutSpaces = (0, _uiForm4.getTextWithoutSpaces)(name);
                                let pathNode;
                                item[subItemsField] = that._generateItemsFromData(item[subItemsField]);
                                if (isGroupWithName) {
                                    pathNode = path.pop()
                                }
                                if (!path.length) {
                                    result = that._getItemByField(fieldName, item[subItemsField]);
                                    if (result) {
                                        break
                                    }
                                }
                                if (!isGroupWithName || isGroupWithName && nameWithoutSpaces === pathNode) {
                                    if (path.length) {
                                        result = that._searchItemInEverySubItem(path, fieldName, item[subItemsField])
                                    }
                                }
                            } else {
                                break
                            }
                        } while (path.length && !(0, _type.isDefined)(result));
                        return result
                    },
                    _getSubItemField: function(itemType) {
                        return "tabbed" === itemType ? "tabs" : "items"
                    },
                    _searchItemInEverySubItem: function(path, fieldName, items) {
                        const that = this;
                        let result;
                        (0, _iterator.each)(items, (function(index, groupItem) {
                            result = that._getItemByFieldPath(path.slice(), fieldName, groupItem);
                            if (result) {
                                return false
                            }
                        }));
                        if (!result) {
                            result = false
                        }
                        return result
                    },
                    _changeItemOption: function(item, option, value) {
                        if ((0, _type.isObject)(item)) {
                            item[option] = value
                        }
                    },
                    _dimensionChanged: function() {
                        const currentScreenFactor = this._getCurrentScreenFactor();
                        if (this._lastMarkupScreenFactor !== currentScreenFactor) {
                            if (this._isColCountChanged(this._lastMarkupScreenFactor, currentScreenFactor)) {
                                this._targetScreenFactor = currentScreenFactor;
                                this._refresh();
                                this._targetScreenFactor = void 0
                            }
                            this._lastMarkupScreenFactor = currentScreenFactor
                        }
                    },
                    _isColCountChanged: function(oldScreenSize, newScreenSize) {
                        let isChanged = false;
                        (0, _iterator.each)(this._cachedColCountOptions, (function(index, item) {
                            if (item.colCountByScreen[oldScreenSize] !== item.colCountByScreen[newScreenSize]) {
                                isChanged = true;
                                return false
                            }
                        }));
                        return isChanged
                    },
                    _refresh: function() {
                        const editorSelector = ".".concat("dx-state-focused", " > :not(.dx-dropdowneditor-input-wrapper) input,") + " .".concat("dx-state-focused", " textarea");
                        _events_engine.default.trigger(this.$element().find(editorSelector), "change");
                        this.callBase()
                    },
                    _updateIsDirty: function(dataField) {
                        const editor = this.getEditor(dataField);
                        if (!editor) {
                            return
                        }
                        if (editor.option("isDirty")) {
                            this._dirtyFields.add(dataField)
                        } else {
                            this._dirtyFields.delete(dataField)
                        }
                        this.option("isDirty", !!this._dirtyFields.size)
                    },
                    updateRunTimeInfoForEachEditor: function(editorAction) {
                        this._itemsRunTimeInfo.each((function(_, itemRunTimeInfo) {
                            const widgetInstance = itemRunTimeInfo.widgetInstance;
                            if ((0, _type.isDefined)(widgetInstance) && _editor.default.isEditor(widgetInstance)) {
                                editorAction(widgetInstance)
                            }
                        }))
                    },
                    _clear: function() {
                        this.updateRunTimeInfoForEachEditor(editor => {
                            editor.clear();
                            editor.option("isValid", true)
                        });
                        _validation_engine.default.resetGroup(this._getValidationGroup())
                    },
                    _updateData: function(data, value, isComplexData) {
                        const that = this;
                        const _data = isComplexData ? value : data;
                        if ((0, _type.isObject)(_data)) {
                            (0, _iterator.each)(_data, (function(dataField, fieldValue) {
                                that._updateData(isComplexData ? data + "." + dataField : dataField, fieldValue, (0, _type.isObject)(fieldValue))
                            }))
                        } else if ((0, _type.isString)(data)) {
                            that._updateFieldValue(data, value)
                        }
                    },
                    registerKeyHandler: function(key, handler) {
                        this.callBase(key, handler);
                        this._itemsRunTimeInfo.each((function(_, itemRunTimeInfo) {
                            if ((0, _type.isDefined)(itemRunTimeInfo.widgetInstance)) {
                                itemRunTimeInfo.widgetInstance.registerKeyHandler(key, handler)
                            }
                        }))
                    },
                    _focusTarget: function() {
                        return this.$element().find("." + _constants.FIELD_ITEM_CONTENT_CLASS + " [tabindex]").first()
                    },
                    _visibilityChanged: function() {
                        this._alignLabels(this._rootLayoutManager, this._rootLayoutManager.isSingleColumnMode())
                    },
                    _clearAutoColCountChangedTimeout: function() {
                        if (this.autoColCountChangedTimeoutId) {
                            clearTimeout(this.autoColCountChangedTimeoutId);
                            this.autoColCountChangedTimeoutId = void 0
                        }
                    },
                    _dispose: function() {
                        this._clearAutoColCountChangedTimeout();
                        _validation_engine.default.removeGroup(this._getValidationGroup());
                        this.callBase()
                    },
                    clear: function() {
                        this._clear()
                    },
                    resetValues: function() {
                        this._clear()
                    },
                    reset: function(editorsData) {
                        this.updateRunTimeInfoForEachEditor(editor => {
                            const editorName = editor.option("name");
                            if (editorsData && editorName in editorsData) {
                                editor.reset(editorsData[editorName])
                            } else {
                                editor.reset()
                            }
                        });
                        this._renderValidationSummary()
                    },
                    updateData: function(data, value) {
                        this._updateData(data, value)
                    },
                    getEditor: function(dataField) {
                        return this._itemsRunTimeInfo.findWidgetInstanceByDataField(dataField) || this._itemsRunTimeInfo.findWidgetInstanceByName(dataField)
                    },
                    getButton: function(name) {
                        return this._itemsRunTimeInfo.findWidgetInstanceByName(name)
                    },
                    updateDimensions: function() {
                        const that = this;
                        const deferred = new _deferred.Deferred;
                        if (that._scrollable) {
                            that._scrollable.update().done((function() {
                                deferred.resolveWith(that)
                            }))
                        } else {
                            deferred.resolveWith(that)
                        }
                        return deferred.promise()
                    },
                    itemOption: function(id, option, value) {
                        const items = this._generateItemsFromData(this.option("items"));
                        const item = this._getItemByField(id, items);
                        const path = (0, _uiForm4.getItemPath)(items, item);
                        if (!item) {
                            return
                        }
                        switch (arguments.length) {
                            case 1:
                                return item;
                            case 3: {
                                const itemAction = this._tryCreateItemOptionAction(option, item, value, item[option], path);
                                this._changeItemOption(item, option, value);
                                const fullName = (0, _uiForm4.getFullOptionName)(path, option);
                                if (!this._tryExecuteItemOptionAction(itemAction) && !this._tryChangeLayoutManagerItemOption(fullName, value)) {
                                    this.option("items", items)
                                }
                                break
                            }
                            default:
                                if ((0, _type.isObject)(option)) {
                                    if (!this._tryChangeLayoutManagerItemOptions(path, option)) {
                                        let allowUpdateItems;
                                        (0, _iterator.each)(option, (optionName, optionValue) => {
                                            const itemAction = this._tryCreateItemOptionAction(optionName, item, optionValue, item[optionName], path);
                                            this._changeItemOption(item, optionName, optionValue);
                                            if (!allowUpdateItems && !this._tryExecuteItemOptionAction(itemAction)) {
                                                allowUpdateItems = true
                                            }
                                        });
                                        allowUpdateItems && this.option("items", items)
                                    }
                                }
                        }
                    },
                    validate: function() {
                        return _validation_engine.default.validateGroup(this._getValidationGroup())
                    },
                    getItemID: function(name) {
                        return "dx_" + this.option("formID") + "_" + (name || new _guid.default)
                    },
                    getTargetScreenFactor: function() {
                        return this._targetScreenFactor
                    }
                });
                (0, _component_registrator.default)("dxForm", Form);
                var _default = Form;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        85532:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/form/ui.form.layout_manager.js ***!
              \*******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _uiForm = _interopRequireDefault(__webpack_require__( /*! ./ui.form.items_runtime_info */ 10291));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _variable_wrapper = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/variable_wrapper */ 26974));
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _array = __webpack_require__( /*! ../../core/utils/array */ 89386);
                var _data = __webpack_require__( /*! ../../core/utils/data */ 47617);
                var _remove = __webpack_require__( /*! ../../events/remove */ 29007);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _responsive_box = _interopRequireDefault(__webpack_require__( /*! ../responsive_box */ 21643));
                var _constants = __webpack_require__( /*! ./constants */ 31093);
                __webpack_require__( /*! ../text_box */ 29837);
                __webpack_require__( /*! ../number_box */ 34171);
                __webpack_require__( /*! ../check_box */ 18859);
                __webpack_require__( /*! ../date_box */ 29589);
                __webpack_require__( /*! ../button */ 63008);
                var _field_item = __webpack_require__( /*! ./components/field_item */ 21014);
                var _button_item = __webpack_require__( /*! ./components/button_item */ 77509);
                var _empty_item = __webpack_require__( /*! ./components/empty_item */ 46193);
                var _uiFormLayout_manager = __webpack_require__( /*! ./ui.form.layout_manager.utils */ 61961);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const LayoutManager = _ui.default.inherit({
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            layoutData: {},
                            readOnly: false,
                            colCount: 1,
                            colCountByScreen: void 0,
                            labelLocation: "left",
                            onFieldDataChanged: null,
                            onEditorEnterKey: null,
                            customizeItem: null,
                            alignItemLabels: true,
                            minColWidth: 200,
                            showRequiredMark: true,
                            screenByWidth: null,
                            showOptionalMark: false,
                            requiredMark: "*",
                            labelMode: "outside",
                            optionalMark: _message.default.format("dxForm-optionalMark"),
                            requiredMessage: _message.default.getFormatter("dxForm-requiredMessage")
                        })
                    },
                    _setOptionsByReference: function() {
                        this.callBase();
                        (0, _extend.extend)(this._optionsByReference, {
                            layoutData: true,
                            validationGroup: true
                        })
                    },
                    _init: function() {
                        const layoutData = this.option("layoutData");
                        this.callBase();
                        this._itemWatchers = [];
                        this._itemsRunTimeInfo = new _uiForm.default;
                        this._updateReferencedOptions(layoutData);
                        this._initDataAndItems(layoutData)
                    },
                    _dispose: function() {
                        this.callBase();
                        this._cleanItemWatchers()
                    },
                    _initDataAndItems: function(initialData) {
                        this._syncDataWithItems();
                        this._updateItems(initialData)
                    },
                    _syncDataWithItems: function() {
                        const layoutData = this.option("layoutData");
                        const userItems = this.option("items");
                        if ((0, _type.isDefined)(userItems)) {
                            userItems.forEach(item => {
                                if (item.dataField && void 0 === this._getDataByField(item.dataField)) {
                                    let value;
                                    if (item.editorOptions) {
                                        value = item.editorOptions.value
                                    }
                                    if ((0, _type.isDefined)(value) || item.dataField in layoutData) {
                                        this._updateFieldValue(item.dataField, value)
                                    }
                                }
                            })
                        }
                    },
                    _getDataByField: function(dataField) {
                        return dataField ? this.option("layoutData." + dataField) : null
                    },
                    _isCheckboxUndefinedStateEnabled: function(_ref) {
                        let {
                            allowIndeterminateState: allowIndeterminateState,
                            editorType: editorType,
                            dataField: dataField
                        } = _ref;
                        if (true === allowIndeterminateState && "dxCheckBox" === editorType) {
                            const nameParts = ["layoutData", ...dataField.split(".")];
                            const propertyName = nameParts.pop();
                            const layoutData = this.option(nameParts.join("."));
                            return layoutData && propertyName in layoutData
                        }
                        return false
                    },
                    _updateFieldValue: function(dataField, value) {
                        const layoutData = this.option("layoutData");
                        let newValue = value;
                        if (!_variable_wrapper.default.isWrapped(layoutData[dataField]) && (0, _type.isDefined)(dataField)) {
                            this.option("layoutData." + dataField, newValue)
                        } else if (_variable_wrapper.default.isWritableWrapped(layoutData[dataField])) {
                            newValue = (0, _type.isFunction)(newValue) ? newValue() : newValue;
                            layoutData[dataField](newValue)
                        }
                        this._triggerOnFieldDataChanged({
                            dataField: dataField,
                            value: newValue
                        })
                    },
                    _triggerOnFieldDataChanged: function(args) {
                        this._createActionByOption("onFieldDataChanged")(args)
                    },
                    _updateItems: function(layoutData) {
                        const that = this;
                        const userItems = this.option("items");
                        const isUserItemsExist = (0, _type.isDefined)(userItems);
                        const customizeItem = that.option("customizeItem");
                        const items = isUserItemsExist ? userItems : this._generateItemsByData(layoutData);
                        if ((0, _type.isDefined)(items)) {
                            const processedItems = [];
                            (0, _iterator.each)(items, (function(index, item) {
                                if (that._isAcceptableItem(item)) {
                                    item = that._processItem(item);
                                    customizeItem && customizeItem(item);
                                    if ((0, _type.isObject)(item) && false !== _variable_wrapper.default.unwrap(item.visible)) {
                                        processedItems.push(item)
                                    }
                                }
                            }));
                            if (!that._itemWatchers.length || !isUserItemsExist) {
                                that._updateItemWatchers(items)
                            }
                            this._setItems(processedItems);
                            this._sortItems()
                        }
                    },
                    _cleanItemWatchers: function() {
                        this._itemWatchers.forEach((function(dispose) {
                            dispose()
                        }));
                        this._itemWatchers = []
                    },
                    _updateItemWatchers: function(items) {
                        const that = this;
                        const watch = that._getWatch();
                        items.forEach((function(item) {
                            if ((0, _type.isObject)(item) && (0, _type.isDefined)(item.visible) && (0, _type.isFunction)(watch)) {
                                that._itemWatchers.push(watch((function() {
                                    return _variable_wrapper.default.unwrap(item.visible)
                                }), (function() {
                                    that._updateItems(that.option("layoutData"));
                                    that.repaint()
                                }), {
                                    skipImmediate: true
                                }))
                            }
                        }))
                    },
                    _generateItemsByData: function(layoutData) {
                        const result = [];
                        if ((0, _type.isDefined)(layoutData)) {
                            (0, _iterator.each)(layoutData, (function(dataField) {
                                result.push({
                                    dataField: dataField
                                })
                            }))
                        }
                        return result
                    },
                    _isAcceptableItem: function(item) {
                        const itemField = item.dataField || item;
                        const itemData = this._getDataByField(itemField);
                        return !((0, _type.isFunction)(itemData) && !_variable_wrapper.default.isWrapped(itemData))
                    },
                    _processItem: function(item) {
                        if ("string" === typeof item) {
                            item = {
                                dataField: item
                            }
                        }
                        if ("object" === typeof item && !item.itemType) {
                            item.itemType = _constants.SIMPLE_ITEM_TYPE
                        }
                        if (!(0, _type.isDefined)(item.editorType) && (0, _type.isDefined)(item.dataField)) {
                            const value = this._getDataByField(item.dataField);
                            item.editorType = (0, _type.isDefined)(value) ? this._getEditorTypeByDataType((0, _type.type)(value)) : "dxTextBox"
                        }
                        if ("dxCheckBox" === item.editorType) {
                            var _item$allowIndetermin;
                            item.allowIndeterminateState = null !== (_item$allowIndetermin = item.allowIndeterminateState) && void 0 !== _item$allowIndetermin ? _item$allowIndetermin : true
                        }
                        return item
                    },
                    _getEditorTypeByDataType: function(dataType) {
                        switch (dataType) {
                            case "number":
                                return "dxNumberBox";
                            case "date":
                                return "dxDateBox";
                            case "boolean":
                                return "dxCheckBox";
                            default:
                                return "dxTextBox"
                        }
                    },
                    _sortItems: function() {
                        (0, _array.normalizeIndexes)(this._items, "visibleIndex");
                        this._sortIndexes()
                    },
                    _sortIndexes: function() {
                        this._items.sort((function(itemA, itemB) {
                            const indexA = itemA.visibleIndex;
                            const indexB = itemB.visibleIndex;
                            let result;
                            if (indexA > indexB) {
                                result = 1
                            } else if (indexA < indexB) {
                                result = -1
                            } else {
                                result = 0
                            }
                            return result
                        }))
                    },
                    _initMarkup: function() {
                        this._itemsRunTimeInfo.clear();
                        this.$element().addClass(_constants.FORM_LAYOUT_MANAGER_CLASS);
                        this.callBase();
                        this._renderResponsiveBox()
                    },
                    _renderResponsiveBox: function() {
                        const that = this;
                        const templatesInfo = [];
                        if (that._items && that._items.length) {
                            const colCount = that._getColCount();
                            const $container = (0, _renderer.default)("<div>").appendTo(that.$element());
                            that._prepareItemsWithMerging(colCount);
                            const layoutItems = that._generateLayoutItems();
                            that._responsiveBox = that._createComponent($container, _responsive_box.default, that._getResponsiveBoxConfig(layoutItems, colCount, templatesInfo));
                            if (!(0, _window.hasWindow)()) {
                                that._renderTemplates(templatesInfo)
                            }
                        }
                    },
                    _itemStateChangedHandler: function(e) {
                        this._refresh()
                    },
                    _renderTemplates: function(templatesInfo) {
                        const that = this;
                        let itemsWithLabelTemplateCount = 0;
                        templatesInfo.forEach(_ref2 => {
                            var _item$label;
                            let {
                                item: item
                            } = _ref2;
                            if (null !== item && void 0 !== item && null !== (_item$label = item.label) && void 0 !== _item$label && _item$label.template) {
                                itemsWithLabelTemplateCount++
                            }
                        });
                        (0, _iterator.each)(templatesInfo, (function(index, info) {
                            switch (info.itemType) {
                                case "empty":
                                    (0, _empty_item.renderEmptyItem)(info);
                                    break;
                                case "button":
                                    that._renderButtonItem(info);
                                    break;
                                default:
                                    that._renderFieldItem(info, itemsWithLabelTemplateCount)
                            }
                        }))
                    },
                    _getResponsiveBoxConfig: function(layoutItems, colCount, templatesInfo) {
                        const that = this;
                        const colCountByScreen = that.option("colCountByScreen");
                        const xsColCount = colCountByScreen && colCountByScreen.xs;
                        return {
                            onItemStateChanged: this._itemStateChangedHandler.bind(this),
                            onLayoutChanged: function() {
                                const onLayoutChanged = that.option("onLayoutChanged");
                                const isSingleColumnMode = that.isSingleColumnMode();
                                if (onLayoutChanged) {
                                    that.$element().toggleClass(_constants.LAYOUT_MANAGER_ONE_COLUMN, isSingleColumnMode);
                                    onLayoutChanged(isSingleColumnMode)
                                }
                            },
                            onContentReady: function(e) {
                                if ((0, _window.hasWindow)()) {
                                    that._renderTemplates(templatesInfo)
                                }
                                if (that.option("onLayoutChanged")) {
                                    that.$element().toggleClass(_constants.LAYOUT_MANAGER_ONE_COLUMN, that.isSingleColumnMode(e.component))
                                }
                            },
                            itemTemplate: function(e, itemData, itemElement) {
                                if (!e.location) {
                                    return
                                }
                                const $itemElement = (0, _renderer.default)(itemElement);
                                const itemRenderedCountInPreviousRows = e.location.row * colCount;
                                const item = that._items[e.location.col + itemRenderedCountInPreviousRows];
                                if (!item) {
                                    return
                                }
                                const itemCssClassList = [item.cssClass];
                                $itemElement.toggleClass(_constants.SINGLE_COLUMN_ITEM_CONTENT, that.isSingleColumnMode(this));
                                if (0 === e.location.row) {
                                    itemCssClassList.push("dx-first-row")
                                }
                                if (0 === e.location.col) {
                                    itemCssClassList.push("dx-first-col")
                                }
                                if (item.itemType === _constants.SIMPLE_ITEM_TYPE && that.option("isRoot")) {
                                    $itemElement.addClass(_constants.ROOT_SIMPLE_ITEM_CLASS)
                                }
                                const isLastColumn = e.location.col === colCount - 1 || e.location.col + e.location.colspan === colCount;
                                const rowsCount = that._getRowsCount();
                                const isLastRow = e.location.row === rowsCount - 1;
                                if (isLastColumn) {
                                    itemCssClassList.push("dx-last-col")
                                }
                                if (isLastRow) {
                                    itemCssClassList.push("dx-last-row")
                                }
                                if ("empty" !== item.itemType) {
                                    itemCssClassList.push(_constants.FIELD_ITEM_CLASS);
                                    itemCssClassList.push(that.option("cssItemClass"));
                                    if ((0, _type.isDefined)(item.col)) {
                                        itemCssClassList.push("dx-col-" + item.col)
                                    }
                                }
                                templatesInfo.push({
                                    itemType: item.itemType,
                                    item: item,
                                    $parent: $itemElement,
                                    rootElementCssClassList: itemCssClassList
                                })
                            },
                            cols: that._generateRatio(colCount),
                            rows: that._generateRatio(that._getRowsCount(), true),
                            dataSource: layoutItems,
                            screenByWidth: that.option("screenByWidth"),
                            singleColumnScreen: xsColCount ? false : "xs"
                        }
                    },
                    _getColCount: function() {
                        let colCount = this.option("colCount");
                        const colCountByScreen = this.option("colCountByScreen");
                        if (colCountByScreen) {
                            let screenFactor = this.option("form").getTargetScreenFactor();
                            if (!screenFactor) {
                                screenFactor = (0, _window.hasWindow)() ? (0, _window.getCurrentScreenFactor)(this.option("screenByWidth")) : "lg"
                            }
                            colCount = colCountByScreen[screenFactor] || colCount
                        }
                        if ("auto" === colCount) {
                            if (this._cashedColCount) {
                                return this._cashedColCount
                            }
                            this._cashedColCount = colCount = this._getMaxColCount()
                        }
                        return colCount < 1 ? 1 : colCount
                    },
                    _getMaxColCount: function() {
                        if (!(0, _window.hasWindow)()) {
                            return 1
                        }
                        const minColWidth = this.option("minColWidth");
                        const width = (0, _size.getWidth)(this.$element());
                        const itemsCount = this._items.length;
                        const maxColCount = Math.floor(width / minColWidth) || 1;
                        return itemsCount < maxColCount ? itemsCount : maxColCount
                    },
                    isCachedColCountObsolete: function() {
                        return this._cashedColCount && this._getMaxColCount() !== this._cashedColCount
                    },
                    _prepareItemsWithMerging: function(colCount) {
                        const items = this._items.slice(0);
                        let item;
                        let itemsMergedByCol;
                        let result = [];
                        let j;
                        let i;
                        for (i = 0; i < items.length; i++) {
                            item = items[i];
                            result.push(item);
                            if (this.option("alignItemLabels") || item.alignItemLabels || item.colSpan) {
                                item.col = this._getColByIndex(result.length - 1, colCount)
                            }
                            if (item.colSpan > 1 && item.col + item.colSpan <= colCount) {
                                itemsMergedByCol = [];
                                for (j = 0; j < item.colSpan - 1; j++) {
                                    itemsMergedByCol.push({
                                        merged: true
                                    })
                                }
                                result = result.concat(itemsMergedByCol)
                            } else {
                                delete item.colSpan
                            }
                        }
                        this._setItems(result)
                    },
                    _getColByIndex: function(index, colCount) {
                        return index % colCount
                    },
                    _setItems: function(items) {
                        this._items = items;
                        this._cashedColCount = null
                    },
                    _generateLayoutItems: function() {
                        const items = this._items;
                        const colCount = this._getColCount();
                        const result = [];
                        let item;
                        let i;
                        for (i = 0; i < items.length; i++) {
                            item = items[i];
                            if (!item.merged) {
                                const generatedItem = {
                                    location: {
                                        row: parseInt(i / colCount),
                                        col: this._getColByIndex(i, colCount)
                                    }
                                };
                                if ((0, _type.isDefined)(item.disabled)) {
                                    generatedItem.disabled = item.disabled
                                }
                                if ((0, _type.isDefined)(item.visible)) {
                                    generatedItem.visible = item.visible
                                }
                                if ((0, _type.isDefined)(item.colSpan)) {
                                    generatedItem.location.colspan = item.colSpan
                                }
                                if ((0, _type.isDefined)(item.rowSpan)) {
                                    generatedItem.location.rowspan = item.rowSpan
                                }
                                result.push(generatedItem)
                            }
                        }
                        return result
                    },
                    _renderEmptyItem: function($container) {
                        (0, _empty_item.renderEmptyItem)({
                            $container: $container
                        })
                    },
                    _renderButtonItem: function(_ref3) {
                        let {
                            item: item,
                            $parent: $parent,
                            rootElementCssClassList: rootElementCssClassList
                        } = _ref3;
                        const {
                            $rootElement: $rootElement,
                            buttonInstance: buttonInstance
                        } = (0, _button_item.renderButtonItem)({
                            item: item,
                            $parent: $parent,
                            rootElementCssClassList: rootElementCssClassList,
                            validationGroup: this.option("validationGroup"),
                            createComponentCallback: this._createComponent.bind(this)
                        });
                        this._itemsRunTimeInfo.add({
                            item: item,
                            widgetInstance: buttonInstance,
                            guid: item.guid,
                            $itemContainer: $rootElement
                        })
                    },
                    _renderFieldItem: function(_ref4, itemsWithLabelTemplateCount) {
                        var _item$label2, _this$option;
                        let {
                            item: item,
                            $parent: $parent,
                            rootElementCssClassList: rootElementCssClassList
                        } = _ref4;
                        const editorValue = this._getDataByField(item.dataField);
                        let canAssignUndefinedValueToEditor = false;
                        if (void 0 === editorValue) {
                            const {
                                allowIndeterminateState: allowIndeterminateState,
                                editorType: editorType,
                                dataField: dataField
                            } = item;
                            canAssignUndefinedValueToEditor = this._isCheckboxUndefinedStateEnabled({
                                allowIndeterminateState: allowIndeterminateState,
                                editorType: editorType,
                                dataField: dataField
                            })
                        }
                        const name = item.dataField || item.name;
                        const formOrLayoutManager = this._getFormOrThis();
                        const {
                            $fieldEditorContainer: $fieldEditorContainer,
                            widgetInstance: widgetInstance,
                            $rootElement: $rootElement
                        } = (0, _field_item.renderFieldItem)((0, _uiFormLayout_manager.convertToRenderFieldItemOptions)({
                            $parent: $parent,
                            rootElementCssClassList: rootElementCssClassList,
                            item: item,
                            name: name,
                            editorValue: editorValue,
                            canAssignUndefinedValueToEditor: canAssignUndefinedValueToEditor,
                            formOrLayoutManager: this._getFormOrThis(),
                            createComponentCallback: this._createComponent.bind(this),
                            formLabelLocation: this.option("labelLocation"),
                            requiredMessageTemplate: this.option("requiredMessage"),
                            validationGroup: this.option("validationGroup"),
                            editorValidationBoundary: this.option("validationBoundary"),
                            editorStylingMode: this.option("form") && this.option("form").option("stylingMode"),
                            showColonAfterLabel: this.option("showColonAfterLabel"),
                            managerLabelLocation: this.option("labelLocation"),
                            template: item.template ? this._getTemplate(item.template) : null,
                            labelTemplate: null !== (_item$label2 = item.label) && void 0 !== _item$label2 && _item$label2.template ? this._getTemplate(item.label.template) : null,
                            itemId: this.option("form") && this.option("form").getItemID(name),
                            managerMarkOptions: this._getMarkOptions(),
                            labelMode: this.option("labelMode"),
                            onLabelTemplateRendered: () => {
                                this._incTemplateRenderedCallCount();
                                if (this._shouldAlignLabelsOnTemplateRendered(formOrLayoutManager, itemsWithLabelTemplateCount)) {
                                    formOrLayoutManager._alignLabels(this, this.isSingleColumnMode(formOrLayoutManager))
                                }
                            }
                        }));
                        null === (_this$option = this.option("onFieldItemRendered")) || void 0 === _this$option ? void 0 : _this$option();
                        if (widgetInstance && item.dataField) {
                            this._bindDataField(widgetInstance, item.dataField, item.editorType, $fieldEditorContainer)
                        }
                        this._itemsRunTimeInfo.add({
                            item: item,
                            widgetInstance: widgetInstance,
                            guid: item.guid,
                            $itemContainer: $rootElement
                        })
                    },
                    _incTemplateRenderedCallCount() {
                        var _this$_labelTemplateR;
                        this._labelTemplateRenderedCallCount = (null !== (_this$_labelTemplateR = this._labelTemplateRenderedCallCount) && void 0 !== _this$_labelTemplateR ? _this$_labelTemplateR : 0) + 1
                    },
                    _shouldAlignLabelsOnTemplateRendered(formOrLayoutManager, totalItemsWithLabelTemplate) {
                        return formOrLayoutManager.option("templatesRenderAsynchronously") && this._labelTemplateRenderedCallCount === totalItemsWithLabelTemplate
                    },
                    _getMarkOptions: function() {
                        return {
                            showRequiredMark: this.option("showRequiredMark"),
                            requiredMark: this.option("requiredMark"),
                            showOptionalMark: this.option("showOptionalMark"),
                            optionalMark: this.option("optionalMark")
                        }
                    },
                    _getFormOrThis: function() {
                        return this.option("form") || this
                    },
                    _bindDataField: function(editorInstance, dataField, editorType, $container) {
                        const formOrThis = this._getFormOrThis();
                        editorInstance.on("enterKey", (function(args) {
                            formOrThis._createActionByOption("onEditorEnterKey")((0, _extend.extend)(args, {
                                dataField: dataField
                            }))
                        }));
                        this._createWatcher(editorInstance, $container, dataField);
                        this.linkEditorToDataField(editorInstance, dataField, editorType)
                    },
                    _createWatcher: function(editorInstance, $container, dataField) {
                        const that = this;
                        const watch = that._getWatch();
                        if (!(0, _type.isFunction)(watch)) {
                            return
                        }
                        const dispose = watch((function() {
                            return that._getDataByField(dataField)
                        }), (function() {
                            const fieldValue = that._getDataByField(dataField);
                            if ("dxTagBox" === editorInstance.NAME) {
                                const editorValue = editorInstance.option("value");
                                if (fieldValue !== editorValue && function(array1, array2) {
                                        if (!Array.isArray(array1) || !Array.isArray(array2) || array1.length !== array2.length) {
                                            return false
                                        }
                                        for (let i = 0; i < array1.length; i++) {
                                            if (array1[i] !== array2[i]) {
                                                return false
                                            }
                                        }
                                        return true
                                    }(fieldValue, editorValue)) {
                                    return
                                }
                            }
                            editorInstance.option("value", fieldValue)
                        }), {
                            deep: true,
                            skipImmediate: true
                        });
                        _events_engine.default.on($container, _remove.removeEvent, dispose)
                    },
                    _getWatch: function() {
                        if (!(0, _type.isDefined)(this._watch)) {
                            const formInstance = this.option("form");
                            this._watch = formInstance && formInstance.option("integrationOptions.watchMethod")
                        }
                        return this._watch
                    },
                    _createComponent: function($editor, type, editorOptions) {
                        const readOnlyState = this.option("readOnly");
                        let hasEditorReadOnly = Object.hasOwn(editorOptions, "readOnly");
                        const instance = this.callBase($editor, type, _extends({}, editorOptions, {
                            readOnly: !hasEditorReadOnly ? readOnlyState : editorOptions.readOnly
                        }));
                        let isChangeByForm = false;
                        instance.on("optionChanged", args => {
                            if ("readOnly" === args.name && !isChangeByForm) {
                                hasEditorReadOnly = true
                            }
                        });
                        this.on("optionChanged", (function(args) {
                            if ("readOnly" === args.name && !hasEditorReadOnly) {
                                isChangeByForm = true;
                                instance.option(args.name, args.value);
                                isChangeByForm = false
                            }
                        }));
                        return instance
                    },
                    _generateRatio: function(count, isAutoSize) {
                        const result = [];
                        let ratio;
                        let i;
                        for (i = 0; i < count; i++) {
                            ratio = {
                                ratio: 1
                            };
                            if (isAutoSize) {
                                ratio.baseSize = "auto"
                            }
                            result.push(ratio)
                        }
                        return result
                    },
                    _getRowsCount: function() {
                        return Math.ceil(this._items.length / this._getColCount())
                    },
                    _updateReferencedOptions: function(newLayoutData) {
                        const layoutData = this.option("layoutData");
                        if ((0, _type.isObject)(layoutData)) {
                            Object.getOwnPropertyNames(layoutData).forEach(property => delete this._optionsByReference["layoutData." + property])
                        }
                        if ((0, _type.isObject)(newLayoutData)) {
                            Object.getOwnPropertyNames(newLayoutData).forEach(property => this._optionsByReference["layoutData." + property] = true)
                        }
                    },
                    _clearWidget(instance) {
                        this._disableEditorValueChangedHandler = true;
                        instance.clear();
                        this._disableEditorValueChangedHandler = false;
                        instance.option("isValid", true)
                    },
                    _optionChanged(args) {
                        if (0 === args.fullName.search("layoutData.")) {
                            return
                        }
                        switch (args.name) {
                            case "showRequiredMark":
                            case "showOptionalMark":
                            case "requiredMark":
                            case "optionalMark":
                                this._cashedRequiredConfig = null;
                                this._invalidate();
                                break;
                            case "layoutData":
                                this._updateReferencedOptions(args.value);
                                if (this.option("items")) {
                                    if (!(0, _type.isEmptyObject)(args.value)) {
                                        this._itemsRunTimeInfo.each((_, itemRunTimeInfo) => {
                                            if ((0, _type.isDefined)(itemRunTimeInfo.item)) {
                                                const dataField = itemRunTimeInfo.item.dataField;
                                                if (dataField && (0, _type.isDefined)(itemRunTimeInfo.widgetInstance)) {
                                                    const valueGetter = (0, _data.compileGetter)(dataField);
                                                    const dataValue = valueGetter(args.value);
                                                    const {
                                                        allowIndeterminateState: allowIndeterminateState,
                                                        editorType: editorType
                                                    } = itemRunTimeInfo.item;
                                                    if (void 0 !== dataValue || this._isCheckboxUndefinedStateEnabled({
                                                            allowIndeterminateState: allowIndeterminateState,
                                                            editorType: editorType,
                                                            dataField: dataField
                                                        })) {
                                                        itemRunTimeInfo.widgetInstance.option("value", dataValue)
                                                    } else {
                                                        this._clearWidget(itemRunTimeInfo.widgetInstance)
                                                    }
                                                }
                                            }
                                        })
                                    }
                                } else {
                                    this._initDataAndItems(args.value);
                                    this._invalidate()
                                }
                                break;
                            case "items":
                                this._cleanItemWatchers();
                                this._initDataAndItems(args.value);
                                this._invalidate();
                                break;
                            case "alignItemLabels":
                            case "labelLocation":
                            case "labelMode":
                            case "requiredMessage":
                                this._invalidate();
                                break;
                            case "customizeItem":
                                this._updateItems(this.option("layoutData"));
                                this._invalidate();
                                break;
                            case "colCount":
                            case "colCountByScreen":
                                this._resetColCount();
                                break;
                            case "minColWidth":
                                if ("auto" === this.option("colCount")) {
                                    this._resetColCount()
                                }
                                break;
                            case "readOnly":
                                break;
                            case "width":
                                this.callBase(args);
                                if ("auto" === this.option("colCount")) {
                                    this._resetColCount()
                                }
                                break;
                            case "onFieldDataChanged":
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _resetColCount: function() {
                        this._cashedColCount = null;
                        this._invalidate()
                    },
                    linkEditorToDataField(editorInstance, dataField) {
                        this.on("optionChanged", args => {
                            if (args.fullName === "layoutData.".concat(dataField)) {
                                editorInstance._setOptionWithoutOptionChange("value", args.value)
                            }
                        });
                        editorInstance.on("valueChanged", args => {
                            const isValueReferenceType = (0, _type.isObject)(args.value) || Array.isArray(args.value);
                            if (!this._disableEditorValueChangedHandler && !(isValueReferenceType && args.value === args.previousValue)) {
                                this._updateFieldValue(dataField, args.value)
                            }
                        })
                    },
                    _dimensionChanged: function() {
                        if ("auto" === this.option("colCount") && this.isCachedColCountObsolete()) {
                            this._eventsStrategy.fireEvent("autoColCountChanged")
                        }
                    },
                    updateData: function(data, value) {
                        const that = this;
                        if ((0, _type.isObject)(data)) {
                            (0, _iterator.each)(data, (function(dataField, fieldValue) {
                                that._updateFieldValue(dataField, fieldValue)
                            }))
                        } else if ("string" === typeof data) {
                            that._updateFieldValue(data, value)
                        }
                    },
                    getEditor: function(field) {
                        return this._itemsRunTimeInfo.findWidgetInstanceByDataField(field) || this._itemsRunTimeInfo.findWidgetInstanceByName(field)
                    },
                    isSingleColumnMode: function(component) {
                        const responsiveBox = this._responsiveBox || component;
                        if (responsiveBox) {
                            return responsiveBox.option("currentScreenFactor") === responsiveBox.option("singleColumnScreen")
                        }
                    },
                    getItemsRunTimeInfo: function() {
                        return this._itemsRunTimeInfo
                    }
                });
                (0, _component_registrator.default)("dxLayoutManager", LayoutManager);
                var _default = LayoutManager;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        61961:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/form/ui.form.layout_manager.utils.js ***!
              \*************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.EDITORS_WITHOUT_LABELS = void 0;
                exports.convertToLabelMarkOptions = convertToLabelMarkOptions;
                exports.convertToRenderFieldItemOptions = function(_ref) {
                    let {
                        $parent: $parent,
                        rootElementCssClassList: rootElementCssClassList,
                        formOrLayoutManager: formOrLayoutManager,
                        createComponentCallback: createComponentCallback,
                        item: item,
                        template: template,
                        labelTemplate: labelTemplate,
                        name: name,
                        formLabelLocation: formLabelLocation,
                        requiredMessageTemplate: requiredMessageTemplate,
                        validationGroup: validationGroup,
                        editorValue: editorValue,
                        canAssignUndefinedValueToEditor: canAssignUndefinedValueToEditor,
                        editorValidationBoundary: editorValidationBoundary,
                        editorStylingMode: editorStylingMode,
                        showColonAfterLabel: showColonAfterLabel,
                        managerLabelLocation: managerLabelLocation,
                        itemId: itemId,
                        managerMarkOptions: managerMarkOptions,
                        labelMode: labelMode,
                        onLabelTemplateRendered: onLabelTemplateRendered
                    } = _ref;
                    const isRequired = (0, _type.isDefined)(item.isRequired) ? item.isRequired : !! function(rules) {
                        let hasRequiredRule;
                        if (rules && rules.length) {
                            (0, _iterator.each)(rules, (function(index, rule) {
                                if ("required" === rule.type) {
                                    hasRequiredRule = true;
                                    return false
                                }
                            }))
                        }
                        return hasRequiredRule
                    }(item.validationRules);
                    const isSimpleItem = item.itemType === _constants.SIMPLE_ITEM_TYPE;
                    const helpID = item.helpText ? "dx-" + new _guid.default : null;
                    const labelOptions = function(_ref5) {
                        let {
                            item: item,
                            id: id,
                            isRequired: isRequired,
                            managerMarkOptions: managerMarkOptions,
                            showColonAfterLabel: showColonAfterLabel,
                            labelLocation: labelLocation,
                            labelTemplate: labelTemplate,
                            formLabelMode: formLabelMode,
                            onLabelTemplateRendered: onLabelTemplateRendered
                        } = _ref5;
                        const isEditorWithoutLabels = EDITORS_WITHOUT_LABELS.includes(item.editorType);
                        const labelOptions = (0, _extend.extend)({
                            showColon: showColonAfterLabel,
                            location: labelLocation,
                            id: id,
                            visible: "outside" === formLabelMode || isEditorWithoutLabels && "hidden" !== formLabelMode,
                            isRequired: isRequired
                        }, item ? item.label : {}, {
                            markOptions: convertToLabelMarkOptions(managerMarkOptions, isRequired),
                            labelTemplate: labelTemplate,
                            onLabelTemplateRendered: onLabelTemplateRendered
                        });
                        if (["dxRadioGroup", "dxCheckBox", "dxLookup", "dxSlider", "dxRangeSlider", "dxSwitch", "dxHtmlEditor", "dxDateRangeBox"].includes(item.editorType)) {
                            labelOptions.labelID = "dx-label-".concat(new _guid.default)
                        }
                        if (!labelOptions.text && item.dataField) {
                            labelOptions.text = (0, _inflector.captionize)(item.dataField)
                        }
                        if (labelOptions.text) {
                            labelOptions.textWithoutColon = labelOptions.text;
                            labelOptions.text += labelOptions.showColon ? ":" : ""
                        }
                        return labelOptions
                    }({
                        item: item,
                        id: itemId,
                        isRequired: isRequired,
                        managerMarkOptions: managerMarkOptions,
                        showColonAfterLabel: showColonAfterLabel,
                        labelLocation: managerLabelLocation,
                        formLabelMode: labelMode,
                        labelTemplate: labelTemplate,
                        onLabelTemplateRendered: onLabelTemplateRendered
                    });
                    const needRenderLabel = labelOptions.visible && (labelOptions.text || labelOptions.labelTemplate && isSimpleItem);
                    const {
                        location: labelLocation,
                        labelID: labelID
                    } = labelOptions;
                    const labelNeedBaselineAlign = "top" !== labelLocation && ["dxTextArea", "dxRadioGroup", "dxCalendar", "dxHtmlEditor"].includes(item.editorType);
                    const editorOptions = function(_ref4) {
                        let {
                            editorType: editorType,
                            defaultEditorName: defaultEditorName,
                            editorValue: editorValue,
                            canAssignUndefinedValueToEditor: canAssignUndefinedValueToEditor,
                            externalEditorOptions: externalEditorOptions,
                            editorInputId: editorInputId,
                            editorValidationBoundary: editorValidationBoundary,
                            editorStylingMode: editorStylingMode,
                            formLabelMode: formLabelMode,
                            labelText: labelText,
                            labelMark: labelMark
                        } = _ref4;
                        const editorOptionsWithValue = {};
                        if (void 0 !== editorValue || canAssignUndefinedValueToEditor) {
                            editorOptionsWithValue.value = editorValue
                        }
                        if (-1 !== EDITORS_WITH_ARRAY_VALUE.indexOf(editorType)) {
                            editorOptionsWithValue.value = editorOptionsWithValue.value || []
                        }
                        let labelMode = null === externalEditorOptions || void 0 === externalEditorOptions ? void 0 : externalEditorOptions.labelMode;
                        if (!(0, _type.isDefined)(labelMode)) {
                            labelMode = "outside" === formLabelMode ? "hidden" : formLabelMode
                        }
                        const stylingMode = (null === externalEditorOptions || void 0 === externalEditorOptions ? void 0 : externalEditorOptions.stylingMode) || editorStylingMode;
                        const result = (0, _extend.extend)(true, editorOptionsWithValue, externalEditorOptions, {
                            inputAttr: {
                                id: editorInputId
                            },
                            validationBoundary: editorValidationBoundary,
                            stylingMode: stylingMode,
                            label: labelText,
                            labelMode: labelMode,
                            labelMark: labelMark
                        });
                        if (externalEditorOptions) {
                            if (result.dataSource) {
                                result.dataSource = externalEditorOptions.dataSource
                            }
                            if (result.items) {
                                result.items = externalEditorOptions.items
                            }
                        }
                        if (defaultEditorName && !result.name) {
                            result.name = defaultEditorName
                        }
                        return result
                    }({
                        editorType: item.editorType,
                        editorValue: editorValue,
                        defaultEditorName: item.dataField,
                        canAssignUndefinedValueToEditor: canAssignUndefinedValueToEditor,
                        externalEditorOptions: item.editorOptions,
                        editorInputId: itemId,
                        editorValidationBoundary: editorValidationBoundary,
                        editorStylingMode: editorStylingMode,
                        formLabelMode: labelMode,
                        labelText: labelOptions.textWithoutColon,
                        labelMark: labelOptions.markOptions.showRequiredMark ? String.fromCharCode(160) + labelOptions.markOptions.requiredMark : ""
                    });
                    const needRenderOptionalMarkAsHelpText = labelOptions.markOptions.showOptionalMark && !labelOptions.visible && "hidden" !== editorOptions.labelMode && !(0, _type.isDefined)(item.helpText);
                    const helpText = needRenderOptionalMarkAsHelpText ? labelOptions.markOptions.optionalMark : item.helpText;
                    return {
                        $parent: $parent,
                        rootElementCssClassList: rootElementCssClassList,
                        formOrLayoutManager: formOrLayoutManager,
                        createComponentCallback: createComponentCallback,
                        labelOptions: labelOptions,
                        labelNeedBaselineAlign: labelNeedBaselineAlign,
                        labelLocation: labelLocation,
                        needRenderLabel: needRenderLabel,
                        item: item,
                        isSimpleItem: isSimpleItem,
                        isRequired: isRequired,
                        template: template,
                        helpID: helpID,
                        labelID: labelID,
                        name: name,
                        helpText: helpText,
                        formLabelLocation: formLabelLocation,
                        requiredMessageTemplate: requiredMessageTemplate,
                        validationGroup: validationGroup,
                        editorOptions: editorOptions
                    }
                };
                exports.getLabelMarkText = function(_ref2) {
                    let {
                        showRequiredMark: showRequiredMark,
                        requiredMark: requiredMark,
                        showOptionalMark: showOptionalMark,
                        optionalMark: optionalMark
                    } = _ref2;
                    if (!showRequiredMark && !showOptionalMark) {
                        return ""
                    }
                    return String.fromCharCode(160) + (showRequiredMark ? requiredMark : optionalMark)
                };
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _inflector = __webpack_require__( /*! ../../core/utils/inflector */ 78008);
                var _guid = (obj = __webpack_require__( /*! ../../core/guid */ 73176), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _constants = __webpack_require__( /*! ./constants */ 31093);
                const EDITORS_WITH_ARRAY_VALUE = ["dxTagBox", "dxRangeSlider", "dxDateRangeBox"];
                const EDITORS_WITHOUT_LABELS = ["dxCalendar", "dxCheckBox", "dxHtmlEditor", "dxRadioGroup", "dxRangeSlider", "dxSlider", "dxSwitch"];
                exports.EDITORS_WITHOUT_LABELS = EDITORS_WITHOUT_LABELS;

                function convertToLabelMarkOptions(_ref3, isRequired) {
                    let {
                        showRequiredMark: showRequiredMark,
                        requiredMark: requiredMark,
                        showOptionalMark: showOptionalMark,
                        optionalMark: optionalMark
                    } = _ref3;
                    return {
                        showRequiredMark: showRequiredMark && isRequired,
                        requiredMark: requiredMark,
                        showOptionalMark: showOptionalMark && !isRequired,
                        optionalMark: optionalMark
                    }
                }
            },
        35459:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/form/ui.form.utils.js ***!
              \**********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.concatPaths = void 0;
                exports.convertToLayoutManagerOptions = function(_ref) {
                    let {
                        form: form,
                        $formElement: $formElement,
                        formOptions: formOptions,
                        items: items,
                        validationGroup: validationGroup,
                        extendedLayoutManagerOptions: extendedLayoutManagerOptions,
                        onFieldDataChanged: onFieldDataChanged,
                        onContentReady: onContentReady,
                        onDisposing: onDisposing,
                        onFieldItemRendered: onFieldItemRendered
                    } = _ref;
                    const baseOptions = {
                        form: form,
                        items: items,
                        $formElement: $formElement,
                        validationGroup: validationGroup,
                        onFieldDataChanged: onFieldDataChanged,
                        onContentReady: onContentReady,
                        onDisposing: onDisposing,
                        onFieldItemRendered: onFieldItemRendered,
                        validationBoundary: formOptions.scrollingEnabled ? $formElement : void 0,
                        scrollingEnabled: formOptions.scrollingEnabled,
                        showRequiredMark: formOptions.showRequiredMark,
                        showOptionalMark: formOptions.showOptionalMark,
                        requiredMark: formOptions.requiredMark,
                        optionalMark: formOptions.optionalMark,
                        requiredMessage: formOptions.requiredMessage,
                        screenByWidth: formOptions.screenByWidth,
                        layoutData: formOptions.formData,
                        labelLocation: formOptions.labelLocation,
                        customizeItem: formOptions.customizeItem,
                        minColWidth: formOptions.minColWidth,
                        showColonAfterLabel: formOptions.showColonAfterLabel,
                        onEditorEnterKey: formOptions.onEditorEnterKey,
                        labelMode: formOptions.labelMode
                    };
                    const result = (0, _extend.extend)(baseOptions, {
                        isRoot: extendedLayoutManagerOptions.isRoot,
                        colCount: extendedLayoutManagerOptions.colCount,
                        alignItemLabels: extendedLayoutManagerOptions.alignItemLabels,
                        cssItemClass: extendedLayoutManagerOptions.cssItemClass,
                        colCountByScreen: extendedLayoutManagerOptions.colCountByScreen,
                        onLayoutChanged: extendedLayoutManagerOptions.onLayoutChanged,
                        width: extendedLayoutManagerOptions.width
                    });
                    return result
                };
                exports.tryGetTabPath = exports.isFullPathContainsTabs = exports.isEqualToDataFieldOrNameOrTitleOrCaption = exports.getTextWithoutSpaces = exports.getOptionNameFromFullName = exports.getItemPath = exports.getFullOptionName = exports.createItemPathByIndex = void 0;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                const createItemPathByIndex = (index, isTabs) => "".concat(isTabs ? "tabs" : "items", "[").concat(index, "]");
                exports.createItemPathByIndex = createItemPathByIndex;
                const concatPaths = (path1, path2) => {
                    if ((0, _type.isDefined)(path1) && (0, _type.isDefined)(path2)) {
                        return "".concat(path1, ".").concat(path2)
                    }
                    return path1 || path2
                };
                exports.concatPaths = concatPaths;
                const getTextWithoutSpaces = text => text ? text.replace(/\s/g, "") : void 0;
                exports.getTextWithoutSpaces = getTextWithoutSpaces;
                exports.isEqualToDataFieldOrNameOrTitleOrCaption = (item, fieldName) => {
                    if (item) {
                        return item.dataField === fieldName || item.name === fieldName || getTextWithoutSpaces(item.title) === fieldName || "group" === item.itemType && getTextWithoutSpaces(item.caption) === fieldName
                    }
                    return false
                };
                exports.getFullOptionName = (path, optionName) => "".concat(path, ".").concat(optionName);
                exports.getOptionNameFromFullName = fullName => {
                    const parts = fullName.split(".");
                    return parts[parts.length - 1].replace(/\[\d+]/, "")
                };
                exports.tryGetTabPath = fullPath => {
                    const pathParts = fullPath.split(".");
                    const resultPathParts = [...pathParts];
                    for (let i = pathParts.length - 1; i >= 0; i--) {
                        if (isFullPathContainsTabs(pathParts[i])) {
                            return resultPathParts.join(".")
                        }
                        resultPathParts.splice(i, 1)
                    }
                    return ""
                };
                const isFullPathContainsTabs = fullPath => fullPath.indexOf("tabs") > -1;
                exports.isFullPathContainsTabs = isFullPathContainsTabs;
                const getItemPath = (items, item, isTabs) => {
                    const index = items.indexOf(item);
                    if (index > -1) {
                        return createItemPathByIndex(index, isTabs)
                    }
                    for (let i = 0; i < items.length; i++) {
                        const targetItem = items[i];
                        const tabOrGroupItems = targetItem.tabs || targetItem.items;
                        if (tabOrGroupItems) {
                            const itemPath = getItemPath(tabOrGroupItems, item, targetItem.tabs);
                            if (itemPath) {
                                return concatPaths(createItemPathByIndex(i, isTabs), itemPath)
                            }
                        }
                    }
                };
                exports.getItemPath = getItemPath
            },
        49433:
            /*!***********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/gallery.js ***!
              \***********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../events/core/events_engine */ 55994));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _element = __webpack_require__( /*! ../core/element */ 6415);
                var _fx = _interopRequireDefault(__webpack_require__( /*! ../animation/fx */ 87209));
                var _click = __webpack_require__( /*! ../events/click */ 95429);
                var _translator = __webpack_require__( /*! ../animation/translator */ 31648);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../core/devices */ 20530));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./widget/ui.widget */ 14390));
                var _index = __webpack_require__( /*! ../events/utils/index */ 39611);
                var _uiCollection_widget = _interopRequireDefault(__webpack_require__( /*! ./collection/ui.collection_widget.edit */ 11050));
                var _swipeable = _interopRequireDefault(__webpack_require__( /*! ../events/gesture/swipeable */ 66894));
                var _bindable_template = __webpack_require__( /*! ../core/templates/bindable_template */ 93280);
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);
                var _visibility_change = __webpack_require__( /*! ../events/visibility_change */ 80506);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../localization/message */ 28109));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const GalleryNavButton = _ui.default.inherit({
                    _supportedKeys: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            pageUp: _common.noop,
                            pageDown: _common.noop
                        })
                    },
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            direction: "next",
                            onClick: null,
                            hoverStateEnabled: true,
                            activeStateEnabled: true
                        })
                    },
                    _render: function() {
                        this.callBase();
                        const that = this;
                        const $element = this.$element();
                        const eventName = (0, _index.addNamespace)(_click.name, this.NAME);
                        $element.addClass("dx-gallery-nav-button-" + this.option("direction"));
                        _events_engine.default.off($element, eventName);
                        _events_engine.default.on($element, eventName, (function(e) {
                            that._createActionByOption("onClick")({
                                event: e
                            })
                        }))
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "onClick":
                            case "direction":
                                this._invalidate();
                                break;
                            default:
                                this.callBase(args)
                        }
                    }
                });
                const Gallery = _uiCollection_widget.default.inherit({
                    _activeStateUnit: ".dx-gallery-item",
                    _wasAnyItemTemplateRendered: false,
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            activeStateEnabled: false,
                            animationDuration: 400,
                            animationEnabled: true,
                            loop: false,
                            swipeEnabled: true,
                            indicatorEnabled: true,
                            showIndicator: true,
                            selectedIndex: 0,
                            slideshowDelay: 0,
                            showNavButtons: false,
                            wrapAround: false,
                            initialItemWidth: void 0,
                            stretchImages: false,
                            _itemAttributes: {
                                role: "option",
                                "aria-label": _message.default.format("dxGallery-itemName")
                            },
                            loopItemFocus: false,
                            selectOnFocus: true,
                            selectionMode: "single",
                            selectionRequired: true,
                            selectByClick: false
                        })
                    },
                    _defaultOptionsRules: function() {
                        return this.callBase().concat([{
                            device: function() {
                                return "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator()
                            },
                            options: {
                                focusStateEnabled: true
                            }
                        }])
                    },
                    _init: function() {
                        this.callBase();
                        this.option("loopItemFocus", this.option("loop"))
                    },
                    _initTemplates: function() {
                        this.callBase();
                        this._templateManager.addDefaultTemplates({
                            item: new _bindable_template.BindableTemplate(function($container, data) {
                                const $img = (0, _renderer.default)("<img>").addClass("dx-gallery-item-image");
                                if ((0, _type.isPlainObject)(data)) {
                                    this._prepareDefaultItemTemplate(data, $container);
                                    $img.attr({
                                        src: data.imageSrc,
                                        alt: data.imageAlt
                                    }).appendTo($container)
                                } else {
                                    $img.attr("src", String(data)).appendTo($container)
                                }
                            }.bind(this), ["imageSrc", "imageAlt", "text", "html"], this.option("integrationOptions.watchMethod"))
                        })
                    },
                    _dataSourceOptions: function() {
                        return {
                            paginate: false
                        }
                    },
                    _itemContainer: function() {
                        return this._$container
                    },
                    _itemClass: function() {
                        return "dx-gallery-item"
                    },
                    _itemDataKey: function() {
                        return "dxGalleryItemData"
                    },
                    _actualItemWidth: function() {
                        const isWrapAround = this.option("wrapAround");
                        if (this.option("stretchImages")) {
                            const itemPerPage = isWrapAround ? this._itemsPerPage() + 1 : this._itemsPerPage();
                            return 1 / itemPerPage
                        }
                        if (isWrapAround) {
                            return this._itemPercentWidth() * this._itemsPerPage() / (this._itemsPerPage() + 1)
                        }
                        return this._itemPercentWidth()
                    },
                    _itemPercentWidth: function() {
                        let percentWidth;
                        const elementWidth = (0, _size.getOuterWidth)(this.$element());
                        const initialItemWidth = this.option("initialItemWidth");
                        if (initialItemWidth && initialItemWidth <= elementWidth) {
                            percentWidth = initialItemWidth / elementWidth
                        } else {
                            percentWidth = 1
                        }
                        return percentWidth
                    },
                    _itemsPerPage: function() {
                        const itemsPerPage = (0, _window.hasWindow)() ? Math.floor(1 / this._itemPercentWidth()) : 1;
                        return Math.min(itemsPerPage, this._itemsCount())
                    },
                    _pagesCount: function() {
                        return Math.ceil(this._itemsCount() / this._itemsPerPage())
                    },
                    _itemsCount: function() {
                        return (this.option("items") || []).length
                    },
                    _offsetDirection: function() {
                        return this.option("rtlEnabled") ? -1 : 1
                    },
                    _initMarkup: function() {
                        this._renderWrapper();
                        this._renderItemsContainer();
                        this.$element().addClass("dx-gallery");
                        this.$element().toggleClass("dx-gallery-loop", this.option("loop"));
                        this.callBase();
                        const useListBoxRole = this._itemsCount() > 0;
                        const ariaAttrs = {
                            role: useListBoxRole ? "listbox" : void 0,
                            label: "gallery"
                        };
                        this.setAria(ariaAttrs)
                    },
                    _render: function() {
                        this._renderDragHandler();
                        this._renderContainerPosition();
                        this._renderItemSizes();
                        this._renderItemPositions();
                        this._renderNavButtons();
                        this._renderIndicator();
                        this._renderSelectedItem();
                        this._renderItemVisibility();
                        this._renderUserInteraction();
                        this._setupSlideShow();
                        this._reviseDimensions();
                        this.callBase()
                    },
                    _dimensionChanged: function() {
                        const selectedIndex = this.option("selectedIndex") || 0;
                        this._stopItemAnimations();
                        this._clearCacheWidth();
                        this._cloneDuplicateItems();
                        this._renderItemSizes();
                        this._renderItemPositions();
                        this._renderIndicator();
                        this._renderContainerPosition(this._calculateIndexOffset(selectedIndex), true);
                        this._renderItemVisibility()
                    },
                    _renderDragHandler: function() {
                        const eventName = (0, _index.addNamespace)("dragstart", this.NAME);
                        _events_engine.default.off(this.$element(), eventName);
                        _events_engine.default.on(this.$element(), eventName, "img", (function() {
                            return false
                        }))
                    },
                    _renderWrapper: function() {
                        if (this._$wrapper) {
                            return
                        }
                        this._$wrapper = (0, _renderer.default)("<div>").addClass("dx-gallery-wrapper").appendTo(this.$element())
                    },
                    _renderItems: function(items) {
                        if (!(0, _window.hasWindow)()) {
                            const selectedIndex = this.option("selectedIndex");
                            items = items.length > selectedIndex ? items.slice(selectedIndex, selectedIndex + 1) : items.slice(0, 1)
                        }
                        this.callBase(items);
                        this._loadNextPageIfNeeded()
                    },
                    _onItemTemplateRendered() {
                        return () => {
                            if (!this._wasAnyItemTemplateRendered) {
                                this._wasAnyItemTemplateRendered = true;
                                (0, _visibility_change.triggerResizeEvent)(this.$element())
                            }
                        }
                    },
                    _renderItemsContainer: function() {
                        if (this._$container) {
                            return
                        }
                        this._$container = (0, _renderer.default)("<div>").addClass("dx-gallery-container").appendTo(this._$wrapper)
                    },
                    _cloneDuplicateItems: function() {
                        if (!this.option("loop")) {
                            return
                        }
                        const items = this.option("items") || [];
                        const itemsCount = items.length;
                        const lastItemIndex = itemsCount - 1;
                        let i;
                        if (!itemsCount) {
                            return
                        }
                        this._getLoopedItems().remove();
                        const duplicateCount = Math.min(this._itemsPerPage(), itemsCount);
                        const $items = this._getRealItems();
                        const $container = this._itemContainer();
                        for (i = 0; i < duplicateCount; i++) {
                            this._cloneItemForDuplicate($items[i], $container)
                        }
                        for (i = 0; i < duplicateCount; i++) {
                            this._cloneItemForDuplicate($items[lastItemIndex - i], $container)
                        }
                    },
                    _cloneItemForDuplicate: function(item, $container) {
                        if (item) {
                            const $clonedItem = (0, _renderer.default)(item).clone(false).addClass("dx-gallery-item-loop").removeAttr("id").css("margin", 0).appendTo($container);
                            this.setAria({
                                hidden: true
                            }, $clonedItem)
                        }
                    },
                    _getRealItems: function() {
                        return this.$element().find(".dx-gallery-item:not(.dx-gallery-item-loop)")
                    },
                    _getLoopedItems: function() {
                        return this.$element().find(".dx-gallery-item-loop")
                    },
                    _emptyMessageContainer: function() {
                        return this._$wrapper
                    },
                    _renderItemSizes: function(startIndex) {
                        let $items = this._itemElements();
                        const itemWidth = this._actualItemWidth();
                        if (void 0 !== startIndex) {
                            $items = $items.slice(startIndex)
                        }
                        $items.each((function(index) {
                            (0, _size.setOuterWidth)((0, _renderer.default)($items[index]), 100 * itemWidth + "%")
                        }))
                    },
                    _renderItemPositions: function() {
                        const itemWidth = this._actualItemWidth();
                        const itemsCount = this._itemsCount();
                        const itemsPerPage = this._itemsPerPage();
                        const loopItemsCount = this.$element().find(".dx-gallery-item-loop").length;
                        const lastItemDuplicateIndex = itemsCount + loopItemsCount - 1;
                        const offsetRatio = this.option("wrapAround") ? .5 : 0;
                        const freeSpace = this._itemFreeSpace();
                        const isGapBetweenImages = !!freeSpace;
                        const rtlEnabled = this.option("rtlEnabled");
                        const selectedIndex = this.option("selectedIndex");
                        const side = rtlEnabled ? "Right" : "Left";
                        this._itemElements().each((function(index) {
                            let realIndex = index;
                            const isLoopItem = (0, _renderer.default)(this).hasClass("dx-gallery-item-loop");
                            if (index > itemsCount + itemsPerPage - 1) {
                                realIndex = lastItemDuplicateIndex - realIndex - itemsPerPage
                            }
                            if (!isLoopItem && 0 !== realIndex) {
                                if (isGapBetweenImages) {
                                    (0, _renderer.default)(this).css("margin" + side, 100 * freeSpace + "%")
                                }
                                return
                            }
                            const itemPosition = itemWidth * (realIndex + offsetRatio) + freeSpace * (realIndex + 1 - offsetRatio);
                            const property = isLoopItem ? side.toLowerCase() : "margin" + side;
                            (0, _renderer.default)(this).css(property, 100 * itemPosition + "%")
                        }));
                        this._relocateItems(selectedIndex, selectedIndex, true)
                    },
                    _itemFreeSpace: function() {
                        let itemsPerPage = this._itemsPerPage();
                        if (this.option("wrapAround")) {
                            itemsPerPage += 1
                        }
                        return (1 - this._actualItemWidth() * itemsPerPage) / (itemsPerPage + 1)
                    },
                    _renderContainerPosition: function(offset, hideItems, animate) {
                        this._releaseInvisibleItems();
                        offset = offset || 0;
                        const that = this;
                        const itemWidth = this._actualItemWidth();
                        const targetIndex = offset;
                        const targetPosition = this._offsetDirection() * targetIndex * (itemWidth + this._itemFreeSpace());
                        let positionReady;
                        if ((0, _type.isDefined)(this._animationOverride)) {
                            animate = this._animationOverride;
                            delete this._animationOverride
                        }
                        if (animate) {
                            that._startSwipe();
                            positionReady = that._animate(targetPosition).done(that._endSwipe.bind(that))
                        } else {
                            (0, _translator.move)(this._$container, {
                                left: targetPosition * this._elementWidth(),
                                top: 0
                            });
                            positionReady = (new _deferred.Deferred).resolveWith(that)
                        }
                        positionReady.done((function() {
                            this._deferredAnimate && that._deferredAnimate.resolveWith(that);
                            hideItems && this._renderItemVisibility()
                        }));
                        return positionReady.promise()
                    },
                    _startSwipe: function() {
                        this.$element().addClass("dx-gallery-active")
                    },
                    _endSwipe: function() {
                        this.$element().removeClass("dx-gallery-active")
                    },
                    _animate: function(targetPosition, extraConfig) {
                        const that = this;
                        const $container = this._$container;
                        const animationComplete = new _deferred.Deferred;
                        _fx.default.animate(this._$container, (0, _extend.extend)({
                            type: "slide",
                            to: {
                                left: targetPosition * this._elementWidth()
                            },
                            duration: that.option("animationDuration"),
                            complete: function() {
                                if (that._needMoveContainerForward()) {
                                    (0, _translator.move)($container, {
                                        left: 0,
                                        top: 0
                                    })
                                }
                                if (that._needMoveContainerBack()) {
                                    (0, _translator.move)($container, {
                                        left: that._maxContainerOffset() * that._elementWidth(),
                                        top: 0
                                    })
                                }
                                animationComplete.resolveWith(that)
                            }
                        }, extraConfig || {}));
                        return animationComplete
                    },
                    _needMoveContainerForward: function() {
                        const expectedPosition = this._$container.position().left * this._offsetDirection();
                        const actualPosition = -this._maxItemWidth() * this._elementWidth() * this._itemsCount();
                        return expectedPosition <= actualPosition + 1
                    },
                    _needMoveContainerBack: function() {
                        const expectedPosition = this._$container.position().left * this._offsetDirection();
                        const actualPosition = this._actualItemWidth() * this._elementWidth();
                        return expectedPosition >= actualPosition - 1
                    },
                    _maxContainerOffset: function() {
                        return -this._maxItemWidth() * (this._itemsCount() - this._itemsPerPage()) * this._offsetDirection()
                    },
                    _maxItemWidth: function() {
                        return this._actualItemWidth() + this._itemFreeSpace()
                    },
                    _reviseDimensions: function() {
                        const that = this;
                        const $firstItem = that._itemElements().first().find(".dx-item-content");
                        if (!$firstItem || $firstItem.is(":hidden")) {
                            return
                        }
                        if (!that.option("height")) {
                            that.option("height", (0, _size.getOuterHeight)($firstItem))
                        }
                        if (!that.option("width")) {
                            that.option("width", (0, _size.getOuterWidth)($firstItem))
                        }
                        this._dimensionChanged()
                    },
                    _renderIndicator: function() {
                        const {
                            showIndicator: showIndicator
                        } = this.option();
                        this._cleanIndicators();
                        this.$element().toggleClass("dx-gallery-indicator-visible", showIndicator);
                        if (!showIndicator) {
                            return
                        }
                        const indicator = this._$indicator = (0, _renderer.default)("<div>").addClass("dx-gallery-indicator").appendTo(this._$wrapper);
                        const isIndicatorEnabled = this.option("indicatorEnabled");
                        for (let i = 0; i < this._pagesCount(); i++) {
                            const $indicatorItem = (0, _renderer.default)("<div>").addClass("dx-gallery-indicator-item").appendTo(indicator);
                            if (isIndicatorEnabled) {
                                this._attachIndicatorClickHandler($indicatorItem, i)
                            }
                        }
                        this._renderSelectedPageIndicator()
                    },
                    _attachIndicatorClickHandler: function($element, index) {
                        _events_engine.default.on($element, (0, _index.addNamespace)(_click.name, this.NAME), function(event) {
                            this._indicatorSelectHandler(event, index)
                        }.bind(this))
                    },
                    _detachIndicatorClickHandler: function($element) {
                        _events_engine.default.off($element, (0, _index.addNamespace)(_click.name, this.NAME))
                    },
                    _toggleIndicatorInteraction: function(clickEnabled) {
                        var _this$_$indicator;
                        const $indicatorItems = (null === (_this$_$indicator = this._$indicator) || void 0 === _this$_$indicator ? void 0 : _this$_$indicator.find(".dx-gallery-indicator-item")) || [];
                        if ($indicatorItems.length) {
                            $indicatorItems.each(function(index, element) {
                                clickEnabled ? this._attachIndicatorClickHandler((0, _renderer.default)(element), index) : this._detachIndicatorClickHandler((0, _renderer.default)(element))
                            }.bind(this))
                        }
                    },
                    _cleanIndicators: function() {
                        if (this._$indicator) {
                            this._$indicator.remove()
                        }
                    },
                    _renderSelectedItem: function() {
                        const selectedIndex = this.option("selectedIndex");
                        this._itemElements().removeClass("dx-gallery-item-selected").eq(selectedIndex).addClass("dx-gallery-item-selected")
                    },
                    _renderItemVisibility: function() {
                        if (this.option("initialItemWidth") || this.option("wrapAround")) {
                            this._releaseInvisibleItems();
                            return
                        }
                        const selectedIndex = this.option("selectedIndex");
                        this._itemElements().each((index, item) => {
                            if (selectedIndex !== index) {
                                (0, _renderer.default)(item).find(".dx-item-content").addClass("dx-gallery-item-invisible")
                            }
                        })
                    },
                    _releaseInvisibleItems: function() {
                        this._itemElements().find(".dx-item-content").removeClass("dx-gallery-item-invisible")
                    },
                    _renderSelectedPageIndicator: function() {
                        if (!this._$indicator) {
                            return
                        }
                        const itemIndex = this.option("selectedIndex");
                        const lastIndex = this._pagesCount() - 1;
                        let pageIndex = Math.ceil(itemIndex / this._itemsPerPage());
                        pageIndex = Math.min(lastIndex, pageIndex);
                        this._$indicator.find(".dx-gallery-indicator-item").removeClass("dx-gallery-indicator-item-selected").eq(pageIndex).addClass("dx-gallery-indicator-item-selected")
                    },
                    _renderUserInteraction: function() {
                        const rootElement = this.$element();
                        const swipeEnabled = this.option("swipeEnabled") && this._itemsCount() > 1;
                        this._createComponent(rootElement, _swipeable.default, {
                            disabled: this.option("disabled") || !swipeEnabled,
                            onStart: this._swipeStartHandler.bind(this),
                            onUpdated: this._swipeUpdateHandler.bind(this),
                            onEnd: this._swipeEndHandler.bind(this),
                            itemSizeFunc: this._elementWidth.bind(this)
                        })
                    },
                    _indicatorSelectHandler: function(e, indicatorIndex) {
                        if (!this.option("indicatorEnabled")) {
                            return
                        }
                        const itemIndex = this._fitPaginatedIndex(indicatorIndex * this._itemsPerPage());
                        this._needLongMove = true;
                        this.option("selectedIndex", itemIndex);
                        this._loadNextPageIfNeeded(itemIndex)
                    },
                    _renderNavButtons: function() {
                        const that = this;
                        if (!that.option("showNavButtons")) {
                            that._cleanNavButtons();
                            return
                        }
                        that._prevNavButton = (0, _renderer.default)("<div>").appendTo(this._$wrapper);
                        that._createComponent(that._prevNavButton, GalleryNavButton, {
                            direction: "prev",
                            onClick: function() {
                                that._prevPage()
                            }
                        });
                        that._nextNavButton = (0, _renderer.default)("<div>").appendTo(this._$wrapper);
                        that._createComponent(that._nextNavButton, GalleryNavButton, {
                            direction: "next",
                            onClick: function() {
                                that._nextPage()
                            }
                        });
                        this._renderNavButtonsVisibility()
                    },
                    _prevPage: function() {
                        const visiblePageSize = this._itemsPerPage();
                        const newSelectedIndex = this.option("selectedIndex") - visiblePageSize;
                        if (newSelectedIndex === -visiblePageSize && visiblePageSize === this._itemsCount()) {
                            return this._relocateItems(newSelectedIndex, 0)
                        } else {
                            return this.goToItem(this._fitPaginatedIndex(newSelectedIndex))
                        }
                    },
                    _nextPage: function() {
                        const visiblePageSize = this._itemsPerPage();
                        const newSelectedIndex = this.option("selectedIndex") + visiblePageSize;
                        if (newSelectedIndex === visiblePageSize && visiblePageSize === this._itemsCount()) {
                            return this._relocateItems(newSelectedIndex, 0)
                        } else {
                            return this.goToItem(this._fitPaginatedIndex(newSelectedIndex)).done(this._loadNextPageIfNeeded)
                        }
                    },
                    _loadNextPageIfNeeded: function(selectedIndex) {
                        selectedIndex = void 0 === selectedIndex ? this.option("selectedIndex") : selectedIndex;
                        if (this._dataSource && this._dataSource.paginate() && this._shouldLoadNextPage(selectedIndex) && !this._isDataSourceLoading() && !this._isLastPage()) {
                            this._loadNextPage().done(function() {
                                this._renderIndicator();
                                this._cloneDuplicateItems();
                                this._renderItemPositions();
                                this._renderNavButtonsVisibility();
                                this._renderItemSizes(selectedIndex)
                            }.bind(this))
                        }
                    },
                    _shouldLoadNextPage: function(selectedIndex) {
                        const visiblePageSize = this._itemsPerPage();
                        return selectedIndex + 2 * visiblePageSize > this.option("items").length
                    },
                    _allowDynamicItemsAppend: function() {
                        return true
                    },
                    _fitPaginatedIndex: function(itemIndex) {
                        const itemsPerPage = this._itemsPerPage();
                        const restItemsCount = itemIndex < 0 ? itemsPerPage + itemIndex : this._itemsCount() - itemIndex;
                        if (itemIndex > this._itemsCount() - 1) {
                            itemIndex = 0;
                            this._goToGhostItem = true
                        } else if (restItemsCount < itemsPerPage && restItemsCount > 0) {
                            if (itemIndex > 0) {
                                itemIndex -= itemsPerPage - restItemsCount
                            } else {
                                itemIndex += itemsPerPage - restItemsCount
                            }
                        }
                        return itemIndex
                    },
                    _cleanNavButtons: function() {
                        if (this._prevNavButton) {
                            this._prevNavButton.remove();
                            delete this._prevNavButton
                        }
                        if (this._nextNavButton) {
                            this._nextNavButton.remove();
                            delete this._nextNavButton
                        }
                    },
                    _renderNavButtonsVisibility: function() {
                        if (!this.option("showNavButtons") || !this._prevNavButton || !this._nextNavButton) {
                            return
                        }
                        const selectedIndex = this.option("selectedIndex");
                        const loop = this.option("loop");
                        const itemsCount = this._itemsCount();
                        this._prevNavButton.show();
                        this._nextNavButton.show();
                        if (0 === itemsCount) {
                            this._prevNavButton.hide();
                            this._nextNavButton.hide()
                        }
                        if (loop) {
                            return
                        }
                        let nextHidden = selectedIndex === itemsCount - this._itemsPerPage();
                        const prevHidden = itemsCount < 2 || 0 === selectedIndex;
                        if (this._dataSource && this._dataSource.paginate()) {
                            nextHidden = nextHidden && this._isLastPage()
                        } else {
                            nextHidden = nextHidden || itemsCount < 2
                        }
                        if (prevHidden) {
                            this._prevNavButton.hide()
                        }
                        if (nextHidden) {
                            this._nextNavButton.hide()
                        }
                    },
                    _setupSlideShow: function() {
                        const that = this;
                        const slideshowDelay = that.option("slideshowDelay");
                        clearTimeout(that._slideshowTimer);
                        if (!slideshowDelay) {
                            return
                        }
                        that._slideshowTimer = setTimeout((function() {
                            if (that._userInteraction) {
                                that._setupSlideShow();
                                return
                            }
                            that.nextItem(true).done(that._setupSlideShow)
                        }), slideshowDelay)
                    },
                    _elementWidth: function() {
                        if (!this._cacheElementWidth) {
                            this._cacheElementWidth = (0, _size.getWidth)(this.$element())
                        }
                        return this._cacheElementWidth
                    },
                    _clearCacheWidth: function() {
                        delete this._cacheElementWidth
                    },
                    _swipeStartHandler: function(e) {
                        this._releaseInvisibleItems();
                        this._clearCacheWidth();
                        this._elementWidth();
                        const itemsCount = this._itemsCount();
                        if (!itemsCount) {
                            e.event.cancel = true;
                            return
                        }
                        this._stopItemAnimations();
                        this._startSwipe();
                        this._userInteraction = true;
                        if (!this.option("loop")) {
                            const selectedIndex = this.option("selectedIndex");
                            const startOffset = itemsCount - selectedIndex - this._itemsPerPage();
                            const endOffset = selectedIndex;
                            const rtlEnabled = this.option("rtlEnabled");
                            e.event.maxLeftOffset = rtlEnabled ? endOffset : startOffset;
                            e.event.maxRightOffset = rtlEnabled ? startOffset : endOffset
                        }
                    },
                    _stopItemAnimations: function() {
                        _fx.default.stop(this._$container, true)
                    },
                    _swipeUpdateHandler: function(e) {
                        const wrapAroundRatio = this.option("wrapAround") ? 1 : 0;
                        const offset = this._offsetDirection() * e.event.offset * (this._itemsPerPage() + wrapAroundRatio) - this.option("selectedIndex");
                        if (offset < 0) {
                            this._loadNextPageIfNeeded(Math.ceil(Math.abs(offset)))
                        }
                        this._renderContainerPosition(offset)
                    },
                    _swipeEndHandler: function(e) {
                        const targetOffset = e.event.targetOffset * this._offsetDirection() * this._itemsPerPage();
                        const selectedIndex = this.option("selectedIndex");
                        const newIndex = this._fitIndex(selectedIndex - targetOffset);
                        const paginatedIndex = this._fitPaginatedIndex(newIndex);
                        if (Math.abs(targetOffset) < this._itemsPerPage()) {
                            this._relocateItems(selectedIndex);
                            return
                        }
                        if (this._itemsPerPage() === this._itemsCount()) {
                            if (targetOffset > 0) {
                                this._relocateItems(-targetOffset)
                            } else {
                                this._relocateItems(0)
                            }
                            return
                        }
                        this.option("selectedIndex", paginatedIndex)
                    },
                    _setFocusOnSelect: function() {
                        this._userInteraction = true;
                        const selectedItem = this._getRealItems().filter(".dx-gallery-item-selected");
                        this.option("focusedElement", (0, _element.getPublicElement)(selectedItem));
                        this._userInteraction = false
                    },
                    _flipIndex: function(index) {
                        const itemsCount = this._itemsCount();
                        index %= itemsCount;
                        if (index > (itemsCount + 1) / 2) {
                            index -= itemsCount
                        }
                        if (index < -(itemsCount - 1) / 2) {
                            index += itemsCount
                        }
                        return index
                    },
                    _fitIndex: function(index) {
                        if (!this.option("loop")) {
                            return index
                        }
                        const itemsCount = this._itemsCount();
                        if (index >= itemsCount || index < 0) {
                            this._goToGhostItem = true
                        }
                        if (index >= itemsCount) {
                            index = itemsCount - index
                        }
                        index %= itemsCount;
                        if (index < 0) {
                            index += itemsCount
                        }
                        return index
                    },
                    _clean: function() {
                        this.callBase();
                        this._cleanIndicators();
                        this._cleanNavButtons()
                    },
                    _dispose: function() {
                        this._wasAnyItemTemplateRendered = null;
                        clearTimeout(this._slideshowTimer);
                        this.callBase()
                    },
                    _updateSelection: function(addedSelection, removedSelection) {
                        this._stopItemAnimations();
                        this._renderNavButtonsVisibility();
                        this._renderSelectedItem();
                        this._relocateItems(addedSelection[0], removedSelection[0]);
                        this._renderSelectedPageIndicator()
                    },
                    _relocateItems: function(newIndex, prevIndex, withoutAnimation) {
                        if (void 0 === prevIndex) {
                            prevIndex = newIndex
                        }
                        const indexOffset = this._calculateIndexOffset(newIndex, prevIndex);
                        this._renderContainerPosition(indexOffset, true, this.option("animationEnabled") && !withoutAnimation).done((function() {
                            this._setFocusOnSelect();
                            this._userInteraction = false;
                            this._setupSlideShow()
                        }))
                    },
                    _focusInHandler: function() {
                        if (_fx.default.isAnimating(this._$container) || this._userInteraction) {
                            return
                        }
                        this.callBase.apply(this, arguments)
                    },
                    _focusOutHandler: function() {
                        if (_fx.default.isAnimating(this._$container) || this._userInteraction) {
                            return
                        }
                        this.callBase.apply(this, arguments)
                    },
                    _selectFocusedItem: _common.noop,
                    _moveFocus: function() {
                        this._stopItemAnimations();
                        this.callBase.apply(this, arguments);
                        const index = this.itemElements().index((0, _renderer.default)(this.option("focusedElement")));
                        this.goToItem(index, this.option("animationEnabled"))
                    },
                    _visibilityChanged: function(visible) {
                        if (visible) {
                            this._reviseDimensions()
                        }
                    },
                    _calculateIndexOffset: function(newIndex, lastIndex) {
                        if (void 0 === lastIndex) {
                            lastIndex = newIndex
                        }
                        let indexOffset = lastIndex - newIndex;
                        if (this.option("loop") && !this._needLongMove && this._goToGhostItem) {
                            if (this._isItemOnFirstPage(newIndex) && this._isItemOnLastPage(lastIndex)) {
                                indexOffset = -this._itemsPerPage()
                            } else if (this._isItemOnLastPage(newIndex) && this._isItemOnFirstPage(lastIndex)) {
                                indexOffset = this._itemsPerPage()
                            }
                            this._goToGhostItem = false
                        }
                        this._needLongMove = false;
                        indexOffset -= lastIndex;
                        return indexOffset
                    },
                    _isItemOnLastPage: function(itemIndex) {
                        return itemIndex >= this._itemsCount() - this._itemsPerPage()
                    },
                    _isItemOnFirstPage: function(itemIndex) {
                        return itemIndex <= this._itemsPerPage()
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "width":
                            case "initialItemWidth":
                                this.callBase.apply(this, arguments);
                                this._dimensionChanged();
                                break;
                            case "animationDuration":
                                this._renderNavButtonsVisibility();
                                break;
                            case "animationEnabled":
                                break;
                            case "loop":
                                this.$element().toggleClass("dx-gallery-loop", args.value);
                                this.option("loopItemFocus", args.value);
                                if ((0, _window.hasWindow)()) {
                                    this._cloneDuplicateItems();
                                    this._renderItemPositions();
                                    this._renderNavButtonsVisibility()
                                }
                                break;
                            case "showIndicator":
                                this._renderIndicator();
                                break;
                            case "showNavButtons":
                                this._renderNavButtons();
                                break;
                            case "slideshowDelay":
                                this._setupSlideShow();
                                break;
                            case "wrapAround":
                            case "stretchImages":
                                if ((0, _window.hasWindow)()) {
                                    this._renderItemSizes();
                                    this._renderItemPositions();
                                    this._renderItemVisibility()
                                }
                                break;
                            case "swipeEnabled":
                                this._renderUserInteraction();
                                break;
                            case "indicatorEnabled":
                                this._toggleIndicatorInteraction(args.value);
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    goToItem: function(itemIndex, animation) {
                        const selectedIndex = this.option("selectedIndex");
                        const itemsCount = this._itemsCount();
                        if (void 0 !== animation) {
                            this._animationOverride = animation
                        }
                        itemIndex = this._fitIndex(itemIndex);
                        this._deferredAnimate = new _deferred.Deferred;
                        if (itemIndex > itemsCount - 1 || itemIndex < 0 || selectedIndex === itemIndex) {
                            return this._deferredAnimate.resolveWith(this).promise()
                        }
                        this.option("selectedIndex", itemIndex);
                        return this._deferredAnimate.promise()
                    },
                    prevItem: function(animation) {
                        return this.goToItem(this.option("selectedIndex") - 1, animation)
                    },
                    nextItem: function(animation) {
                        return this.goToItem(this.option("selectedIndex") + 1, animation)
                    }
                });
                (0, _component_registrator.default)("dxGallery", Gallery);
                var _default = Gallery;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        33465:
            /*!*********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/gantt.js ***!
              \*********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _ui = (obj = __webpack_require__( /*! ./gantt/ui.gantt */ 85183), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _ui.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        70382:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/gantt/gantt_importer.js ***!
              \************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getGanttViewCore = function() {
                    if (!_devexpressGantt.default) {
                        throw _ui.default.Error("E1041", "devexpress-gantt")
                    }
                    return _devexpressGantt.default
                };
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.errors */ 96688));
                var _devexpressGantt = _interopRequireDefault(__webpack_require__( /*! devexpress-gantt */ 27353));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
            },
        87110:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.actions.js ***!
              \**************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.GanttActionsManager = void 0;
                var _renderer = (obj = __webpack_require__( /*! ../../core/renderer */ 68374), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _element = __webpack_require__( /*! ../../core/element */ 6415);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                const Actions_onContextMenuPreparing = "onContextMenuPreparing",
                    Actions_onCustomCommand = "onCustomCommand",
                    Actions_onDependencyDeleted = "onDependencyDeleted",
                    Actions_onDependencyDeleting = "onDependencyDeleting",
                    Actions_onDependencyInserted = "onDependencyInserted",
                    Actions_onDependencyInserting = "onDependencyInserting",
                    Actions_onResourceAssigned = "onResourceAssigned",
                    Actions_onResourceAssigning = "onResourceAssigning",
                    Actions_onResourceDeleted = "onResourceDeleted",
                    Actions_onResourceDeleting = "onResourceDeleting",
                    Actions_onResourceInserted = "onResourceInserted",
                    Actions_onResourceInserting = "onResourceInserting",
                    Actions_onResourceManagerDialogShowing = "onResourceManagerDialogShowing",
                    Actions_onResourceUnassigned = "onResourceUnassigned",
                    Actions_onResourceUnassigning = "onResourceUnassigning",
                    Actions_onSelectionChanged = "onSelectionChanged",
                    Actions_onTaskClick = "onTaskClick",
                    Actions_onTaskDblClick = "onTaskDblClick",
                    Actions_onTaskDeleted = "onTaskDeleted",
                    Actions_onTaskDeleting = "onTaskDeleting",
                    Actions_onTaskEditDialogShowing = "onTaskEditDialogShowing",
                    Actions_onTaskInserted = "onTaskInserted",
                    Actions_onTaskInserting = "onTaskInserting",
                    Actions_onTaskMoving = "onTaskMoving",
                    Actions_onTaskUpdated = "onTaskUpdated",
                    Actions_onTaskUpdating = "onTaskUpdating",
                    Actions_onScaleCellPrepared = "onScaleCellPrepared";
                let GanttActionsManager = function() {
                    function GanttActionsManager(gantt) {
                        this._gantt = gantt;
                        this._mappingHelper = gantt._mappingHelper;
                        this._customFieldsManager = gantt._customFieldsManager
                    }
                    var _proto = GanttActionsManager.prototype;
                    _proto._createActionByOption = function(optionName) {
                        return this._gantt._createActionByOption(optionName)
                    };
                    _proto._getTaskData = function(key) {
                        return this._gantt.getTaskData(key)
                    };
                    _proto._convertCoreToMappedData = function(optionName, coreData) {
                        return this._mappingHelper.convertCoreToMappedData(optionName, coreData)
                    };
                    _proto._convertMappedToCoreData = function(optionName, mappedData) {
                        return this._mappingHelper.convertMappedToCoreData(optionName, mappedData)
                    };
                    _proto._convertMappedToCoreFields = function(optionName, fields) {
                        return this._mappingHelper.convertMappedToCoreFields(optionName, fields)
                    };
                    _proto._convertCoreToMappedFields = function(optionName, fields) {
                        return this._mappingHelper.convertCoreToMappedFields(optionName, fields)
                    };
                    _proto._saveCustomFieldsDataToCache = function(key, data) {
                        let forceUpdateOnKeyExpire = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;
                        let isCustomFieldsUpdateOnly = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : false;
                        this._customFieldsManager.saveCustomFieldsDataToCache(key, data, forceUpdateOnKeyExpire, isCustomFieldsUpdateOnly)
                    };
                    _proto.createTaskDblClickAction = function() {
                        this._taskDblClickAction = this._createActionByOption(Actions_onTaskDblClick)
                    };
                    _proto.taskDblClickAction = function(args) {
                        if (!this._taskDblClickAction) {
                            this.createTaskDblClickAction()
                        }
                        this._taskDblClickAction(args)
                    };
                    _proto.raiseTaskDblClickAction = function(key, event) {
                        const args = {
                            cancel: false,
                            data: this._getTaskData(key),
                            event: event,
                            key: key
                        };
                        this.taskDblClickAction(args);
                        return !args.cancel
                    };
                    _proto.createTaskClickAction = function() {
                        this._taskClickAction = this._createActionByOption(Actions_onTaskClick)
                    };
                    _proto.taskClickAction = function(args) {
                        if (!this._taskClickAction) {
                            this.createTaskClickAction()
                        }
                        this._taskClickAction(args)
                    };
                    _proto.raiseTaskClickAction = function(key, event) {
                        const args = {
                            key: key,
                            event: event,
                            data: this._getTaskData(key)
                        };
                        this.taskClickAction(args)
                    };
                    _proto.createSelectionChangedAction = function() {
                        this._selectionChangedAction = this._createActionByOption(Actions_onSelectionChanged)
                    };
                    _proto.selectionChangedAction = function(args) {
                        if (!this._selectionChangedAction) {
                            this.createSelectionChangedAction()
                        }
                        this._selectionChangedAction(args)
                    };
                    _proto.raiseSelectionChangedAction = function(selectedRowKey) {
                        this.selectionChangedAction({
                            selectedRowKey: selectedRowKey
                        })
                    };
                    _proto.createCustomCommandAction = function() {
                        this._customCommandAction = this._createActionByOption(Actions_onCustomCommand)
                    };
                    _proto.customCommandAction = function(args) {
                        if (!this._customCommandAction) {
                            this.createCustomCommandAction()
                        }
                        this._customCommandAction(args)
                    };
                    _proto.raiseCustomCommand = function(commandName) {
                        this.customCommandAction({
                            name: commandName
                        })
                    };
                    _proto.createContextMenuPreparingAction = function() {
                        this._contextMenuPreparingAction = this._createActionByOption(Actions_onContextMenuPreparing)
                    };
                    _proto.contextMenuPreparingAction = function(args) {
                        if (!this._contextMenuPreparingAction) {
                            this.createContextMenuPreparingAction()
                        }
                        this._contextMenuPreparingAction(args)
                    };
                    _proto.raiseContextMenuPreparing = function(options) {
                        this.contextMenuPreparingAction(options)
                    };
                    _proto._getInsertingAction = function(optionName) {
                        switch (optionName) {
                            case "tasks":
                                return this._getTaskInsertingAction();
                            case "dependencies":
                                return this._getDependencyInsertingAction();
                            case "resources":
                                return this._getResourceInsertingAction();
                            case "resourceAssignments":
                                return this._getResourceAssigningAction()
                        }
                        return () => {}
                    };
                    _proto.raiseInsertingAction = function(optionName, coreArgs) {
                        const action = this._getInsertingAction(optionName);
                        if (action) {
                            const args = {
                                cancel: false,
                                values: this._convertCoreToMappedData(optionName, coreArgs.values)
                            };
                            action(args);
                            coreArgs.cancel = args.cancel;
                            (0, _extend.extend)(coreArgs.values, this._convertMappedToCoreData(optionName, args.values));
                            if ("tasks" === optionName) {
                                this._saveCustomFieldsDataToCache("gantt_new_task_key", args.values)
                            }
                        }
                    };
                    _proto.createTaskInsertingAction = function() {
                        this._taskInsertingAction = this._createActionByOption(Actions_onTaskInserting)
                    };
                    _proto.taskInsertingAction = function(args) {
                        const action = this._getTaskInsertingAction();
                        action(args)
                    };
                    _proto._getTaskInsertingAction = function() {
                        if (!this._taskInsertingAction) {
                            this.createTaskInsertingAction()
                        }
                        return this._taskInsertingAction
                    };
                    _proto.createDependencyInsertingAction = function() {
                        this._dependencyInsertingAction = this._createActionByOption(Actions_onDependencyInserting)
                    };
                    _proto.dependencyInsertingAction = function(args) {
                        const action = this._getDependencyInsertingAction();
                        action(args)
                    };
                    _proto._getDependencyInsertingAction = function() {
                        if (!this._dependencyInsertingAction) {
                            this.createDependencyInsertingAction()
                        }
                        return this._dependencyInsertingAction
                    };
                    _proto.createResourceInsertingAction = function() {
                        this._resourceInsertingAction = this._createActionByOption(Actions_onResourceInserting)
                    };
                    _proto.resourceInsertingAction = function(args) {
                        const action = this._getResourceInsertingAction();
                        action(args)
                    };
                    _proto._getResourceInsertingAction = function() {
                        if (!this._resourceInsertingAction) {
                            this.createResourceInsertingAction()
                        }
                        return this._resourceInsertingAction
                    };
                    _proto.createResourceAssigningAction = function() {
                        this._resourceAssigningAction = this._createActionByOption(Actions_onResourceAssigning)
                    };
                    _proto.resourceAssigningAction = function(args) {
                        const action = this._getResourceAssigningAction();
                        action(args)
                    };
                    _proto._getResourceAssigningAction = function() {
                        if (!this._resourceAssigningAction) {
                            this.createResourceAssigningAction()
                        }
                        return this._resourceAssigningAction
                    };
                    _proto._getInsertedAction = function(optionName) {
                        switch (optionName) {
                            case "tasks":
                                return this._getTaskInsertedAction();
                            case "dependencies":
                                return this._getDependencyInsertedAction();
                            case "resources":
                                return this._getResourceInsertedAction();
                            case "resourceAssignments":
                                return this._getResourceAssignedAction()
                        }
                        return () => {}
                    };
                    _proto.raiseInsertedAction = function(optionName, data, key) {
                        const action = this._getInsertedAction(optionName);
                        if (action) {
                            const args = {
                                values: data,
                                key: key
                            };
                            action(args)
                        }
                    };
                    _proto.createTaskInsertedAction = function() {
                        this._taskInsertedAction = this._createActionByOption(Actions_onTaskInserted)
                    };
                    _proto.taskInsertedAction = function(args) {
                        const action = this._getTaskInsertedAction();
                        action(args)
                    };
                    _proto._getTaskInsertedAction = function() {
                        if (!this._taskInsertedAction) {
                            this.createTaskInsertedAction()
                        }
                        return this._taskInsertedAction
                    };
                    _proto.createDependencyInsertedAction = function() {
                        this._dependencyInsertedAction = this._createActionByOption(Actions_onDependencyInserted)
                    };
                    _proto.dependencyInsertedAction = function(args) {
                        const action = this._getDependencyInsertedAction();
                        action(args)
                    };
                    _proto._getDependencyInsertedAction = function() {
                        if (!this._dependencyInsertedAction) {
                            this.createDependencyInsertedAction()
                        }
                        return this._dependencyInsertedAction
                    };
                    _proto.createResourceInsertedAction = function() {
                        this._resourceInsertedAction = this._createActionByOption(Actions_onResourceInserted)
                    };
                    _proto.resourceInsertedAction = function(args) {
                        const action = this._getResourceInsertedAction();
                        action(args)
                    };
                    _proto._getResourceInsertedAction = function() {
                        if (!this._resourceInsertedAction) {
                            this.createResourceInsertedAction()
                        }
                        return this._resourceInsertedAction
                    };
                    _proto.createResourceAssignedAction = function() {
                        this._resourceAssignedAction = this._createActionByOption(Actions_onResourceAssigned)
                    };
                    _proto.resourceAssignedAction = function(args) {
                        const action = this._getResourceAssignedAction();
                        action(args)
                    };
                    _proto._getResourceAssignedAction = function() {
                        if (!this._resourceAssignedAction) {
                            this.createResourceAssignedAction()
                        }
                        return this._resourceAssignedAction
                    };
                    _proto._getDeletingAction = function(optionName) {
                        switch (optionName) {
                            case "tasks":
                                return this._getTaskDeletingAction();
                            case "dependencies":
                                return this._getDependencyDeletingAction();
                            case "resources":
                                return this._getResourceDeletingAction();
                            case "resourceAssignments":
                                return this._getResourceUnassigningAction()
                        }
                        return () => {}
                    };
                    _proto.raiseDeletingAction = function(optionName, coreArgs) {
                        const action = this._getDeletingAction(optionName);
                        if (action) {
                            const args = {
                                cancel: false,
                                key: coreArgs.key,
                                values: this._convertCoreToMappedData(optionName, coreArgs.values)
                            };
                            action(args);
                            coreArgs.cancel = args.cancel
                        }
                    };
                    _proto.createTaskDeletingAction = function() {
                        this._taskDeletingAction = this._createActionByOption(Actions_onTaskDeleting)
                    };
                    _proto.taskDeletingAction = function(args) {
                        const action = this._getTaskDeletingAction();
                        action(args)
                    };
                    _proto._getTaskDeletingAction = function() {
                        if (!this._taskDeletingAction) {
                            this.createTaskDeletingAction()
                        }
                        return this._taskDeletingAction
                    };
                    _proto.createDependencyDeletingAction = function() {
                        this._dependencyDeletingAction = this._createActionByOption(Actions_onDependencyDeleting)
                    };
                    _proto.dependencyDeletingAction = function(args) {
                        const action = this._getDependencyDeletingAction();
                        action(args)
                    };
                    _proto._getDependencyDeletingAction = function() {
                        if (!this._dependencyDeletingAction) {
                            this.createDependencyDeletingAction()
                        }
                        return this._dependencyDeletingAction
                    };
                    _proto.createResourceDeletingAction = function() {
                        this._resourceDeletingAction = this._createActionByOption(Actions_onResourceDeleting)
                    };
                    _proto.resourceDeletingAction = function(args) {
                        const action = this._getResourceDeletingAction();
                        action(args)
                    };
                    _proto._getResourceDeletingAction = function() {
                        if (!this._resourceDeletingAction) {
                            this.createResourceDeletingAction()
                        }
                        return this._resourceDeletingAction
                    };
                    _proto.createResourceUnassigningAction = function() {
                        this._resourceUnassigningAction = this._createActionByOption(Actions_onResourceUnassigning)
                    };
                    _proto.resourceUnassigningAction = function(args) {
                        const action = this._getResourceUnassigningAction();
                        action(args)
                    };
                    _proto._getResourceUnassigningAction = function() {
                        if (!this._resourceUnassigningAction) {
                            this.createResourceUnassigningAction()
                        }
                        return this._resourceUnassigningAction
                    };
                    _proto._getDeletedAction = function(optionName) {
                        switch (optionName) {
                            case "tasks":
                                return this._getTaskDeletedAction();
                            case "dependencies":
                                return this._getDependencyDeletedAction();
                            case "resources":
                                return this._getResourceDeletedAction();
                            case "resourceAssignments":
                                return this._getResourceUnassignedAction()
                        }
                        return () => {}
                    };
                    _proto.raiseDeletedAction = function(optionName, key, data) {
                        const action = this._getDeletedAction(optionName);
                        if (action) {
                            const args = {
                                key: key,
                                values: data
                            };
                            action(args)
                        }
                    };
                    _proto.createTaskDeletedAction = function() {
                        this._taskDeletedAction = this._createActionByOption(Actions_onTaskDeleted)
                    };
                    _proto.taskDeletedAction = function(args) {
                        const action = this._getTaskDeletedAction();
                        action(args)
                    };
                    _proto._getTaskDeletedAction = function() {
                        if (!this._taskDeletedAction) {
                            this.createTaskDeletedAction()
                        }
                        return this._taskDeletedAction
                    };
                    _proto.createDependencyDeletedAction = function() {
                        this._dependencyDeletedAction = this._createActionByOption(Actions_onDependencyDeleted)
                    };
                    _proto.dependencyDeletedAction = function(args) {
                        const action = this._getDependencyDeletedAction();
                        action(args)
                    };
                    _proto._getDependencyDeletedAction = function() {
                        if (!this._dependencyDeletedAction) {
                            this.createDependencyDeletedAction()
                        }
                        return this._dependencyDeletedAction
                    };
                    _proto.createResourceDeletedAction = function() {
                        this._resourceDeletedAction = this._createActionByOption(Actions_onResourceDeleted)
                    };
                    _proto.resourceDeletedAction = function(args) {
                        const action = this._getResourceDeletedAction();
                        action(args)
                    };
                    _proto._getResourceDeletedAction = function() {
                        if (!this._resourceDeletedAction) {
                            this.createResourceDeletedAction()
                        }
                        return this._resourceDeletedAction
                    };
                    _proto.createResourceUnassignedAction = function() {
                        this._resourceUnassignedAction = this._createActionByOption(Actions_onResourceUnassigned)
                    };
                    _proto.resourceUnassignedAction = function(args) {
                        const action = this._getResourceUnassignedAction();
                        action(args)
                    };
                    _proto._getResourceUnassignedAction = function() {
                        if (!this._resourceUnassignedAction) {
                            this.createResourceUnassignedAction()
                        }
                        return this._resourceUnassignedAction
                    };
                    _proto._getUpdatingAction = function(optionName) {
                        switch (optionName) {
                            case "tasks":
                                return this._getTaskUpdatingAction()
                        }
                        return () => {}
                    };
                    _proto.raiseUpdatingAction = function(optionName, coreArgs, action) {
                        action = action || this._getUpdatingAction(optionName);
                        if (action) {
                            const isTaskUpdating = "tasks" === optionName;
                            const args = {
                                cancel: false,
                                key: coreArgs.key,
                                newValues: this._convertCoreToMappedData(optionName, coreArgs.newValues),
                                values: isTaskUpdating ? this._getTaskData(coreArgs.key) : this._convertCoreToMappedData(optionName, coreArgs.values)
                            };
                            if (isTaskUpdating && this._customFieldsManager.cache.hasData(args.key)) {
                                this._customFieldsManager.addCustomFieldsDataFromCache(args.key, args.newValues)
                            }
                            action(args);
                            coreArgs.cancel = args.cancel;
                            (0, _extend.extend)(coreArgs.newValues, this._convertMappedToCoreData(optionName, args.newValues));
                            if (isTaskUpdating) {
                                if (args.cancel) {
                                    this._customFieldsManager.resetCustomFieldsDataCache(args.key)
                                } else {
                                    const forceUpdateOnKeyExpire = !Object.keys(coreArgs.newValues).length;
                                    this._saveCustomFieldsDataToCache(args.key, args.newValues, forceUpdateOnKeyExpire)
                                }
                            }
                        }
                    };
                    _proto.createTaskUpdatingAction = function() {
                        this._taskUpdatingAction = this._createActionByOption(Actions_onTaskUpdating)
                    };
                    _proto.taskUpdatingAction = function(args) {
                        const action = this._getTaskUpdatingAction();
                        action(args)
                    };
                    _proto._getTaskUpdatingAction = function() {
                        if (!this._taskUpdatingAction) {
                            this.createTaskUpdatingAction()
                        }
                        return this._taskUpdatingAction
                    };
                    _proto._getUpdatedAction = function(optionName) {
                        switch (optionName) {
                            case "tasks":
                                return this._getTaskUpdatedAction()
                        }
                        return () => {}
                    };
                    _proto.raiseUpdatedAction = function(optionName, data, key) {
                        const action = this._getUpdatedAction(optionName);
                        if (action) {
                            const args = {
                                values: data,
                                key: key
                            };
                            action(args)
                        }
                    };
                    _proto.createTaskUpdatedAction = function() {
                        this._taskUpdatedAction = this._createActionByOption(Actions_onTaskUpdated)
                    };
                    _proto.taskUpdatedAction = function(args) {
                        const action = this._getTaskUpdatedAction();
                        action(args)
                    };
                    _proto._getTaskUpdatedAction = function() {
                        if (!this._taskUpdatedAction) {
                            this.createTaskUpdatedAction()
                        }
                        return this._taskUpdatedAction
                    };
                    _proto.createTaskEditDialogShowingAction = function() {
                        this._taskEditDialogShowingAction = this._createActionByOption(Actions_onTaskEditDialogShowing)
                    };
                    _proto.taskEditDialogShowingAction = function(args) {
                        const action = this._getTaskEditDialogShowingAction();
                        action(args)
                    };
                    _proto._getTaskEditDialogShowingAction = function() {
                        if (!this._taskEditDialogShowingAction) {
                            this.createTaskEditDialogShowingAction()
                        }
                        return this._taskEditDialogShowingAction
                    };
                    _proto.raiseTaskEditDialogShowingAction = function(coreArgs) {
                        const action = this._getTaskEditDialogShowingAction();
                        if (action) {
                            const args = {
                                cancel: false,
                                key: coreArgs.key,
                                values: this._convertCoreToMappedData("tasks", coreArgs.values),
                                readOnlyFields: this._convertCoreToMappedFields("tasks", coreArgs.readOnlyFields),
                                hiddenFields: this._convertCoreToMappedFields("tasks", coreArgs.hiddenFields)
                            };
                            action(args);
                            coreArgs.cancel = args.cancel;
                            (0, _extend.extend)(coreArgs.values, this._convertMappedToCoreData("tasks", args.values));
                            coreArgs.readOnlyFields = this._convertMappedToCoreFields("tasks", args.readOnlyFields);
                            coreArgs.hiddenFields = this._convertMappedToCoreFields("tasks", args.hiddenFields)
                        }
                    };
                    _proto.createResourceManagerDialogShowingAction = function() {
                        this._resourceManagerDialogShowingAction = this._createActionByOption(Actions_onResourceManagerDialogShowing)
                    };
                    _proto.resourceManagerDialogShowingAction = function(args) {
                        const action = this._getResourceManagerDialogShowingAction();
                        action(args)
                    };
                    _proto._getResourceManagerDialogShowingAction = function() {
                        if (!this._resourceManagerDialogShowingAction) {
                            this.createResourceManagerDialogShowingAction()
                        }
                        return this._resourceManagerDialogShowingAction
                    };
                    _proto.raiseResourceManagerDialogShowingAction = function(coreArgs) {
                        const action = this._getResourceManagerDialogShowingAction();
                        if (action) {
                            const mappedResources = coreArgs.values.resources.items.map(r => this._convertMappedToCoreData("resources", r));
                            const args = {
                                cancel: false,
                                values: mappedResources
                            };
                            action(args);
                            coreArgs.cancel = args.cancel
                        }
                    };
                    _proto.createTaskMovingAction = function() {
                        this._taskMovingAction = this._createActionByOption(Actions_onTaskMoving)
                    };
                    _proto.taskMovingAction = function(args) {
                        const action = this.getTaskMovingAction();
                        action(args)
                    };
                    _proto.getTaskMovingAction = function() {
                        if (!this._taskMovingAction) {
                            this.createTaskMovingAction()
                        }
                        return this._taskMovingAction
                    };
                    _proto.getScaleCellPreparedAction = function() {
                        if (!this._scaleCellPreparedAction) {
                            this.createScaleCellPreparedAction()
                        }
                        return this._scaleCellPreparedAction
                    };
                    _proto.createScaleCellPreparedAction = function() {
                        this._scaleCellPreparedAction = this._createActionByOption(Actions_onScaleCellPrepared)
                    };
                    _proto.raiseScaleCellPreparedAction = function(data) {
                        const action = this.getScaleCellPreparedAction();
                        if (action) {
                            const args = {
                                scaleIndex: data.scaleIndex,
                                scaleType: this._getScaleType(data.scaleType),
                                scaleElement: (0, _element.getPublicElement)((0, _renderer.default)(data.scaleElement)),
                                separatorElement: (0, _element.getPublicElement)((0, _renderer.default)(data.separatorElement)),
                                startDate: new Date(data.start),
                                endDate: new Date(data.end)
                            };
                            action(args)
                        }
                    };
                    _proto._getScaleType = function(viewType) {
                        switch (viewType) {
                            case 0:
                                return "minutes";
                            case 1:
                                return "hours";
                            case 2:
                                return "sixHours";
                            case 3:
                                return "days";
                            case 4:
                                return "weeks";
                            case 5:
                                return "months";
                            case 6:
                                return "quarters";
                            case 7:
                                return "years";
                            case 8:
                                return "fiveYears";
                            default:
                                return
                        }
                    };
                    return GanttActionsManager
                }();
                exports.GanttActionsManager = GanttActionsManager
            },
        73630:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.bars.js ***!
              \***********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.GanttToolbar = exports.GanttContextMenuBar = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _toolbar = _interopRequireDefault(__webpack_require__( /*! ../toolbar */ 71042));
                var _context_menu = _interopRequireDefault(__webpack_require__( /*! ../context_menu */ 10042));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);

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

                function _inheritsLoose(subClass, superClass) {
                    subClass.prototype = Object.create(superClass.prototype);
                    subClass.prototype.constructor = subClass;
                    _setPrototypeOf(subClass, superClass)
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const COMMANDS_createTask = 0,
                    COMMANDS_createSubTask = 1,
                    COMMANDS_removeTask = 2,
                    COMMANDS_removeDependency = 3,
                    COMMANDS_taskInformation = 4,
                    COMMANDS_taskAddContextItem = 5,
                    COMMANDS_undo = 6,
                    COMMANDS_redo = 7,
                    COMMANDS_zoomIn = 8,
                    COMMANDS_zoomOut = 9,
                    COMMANDS_fullScreen = 10,
                    COMMANDS_collapseAll = 11,
                    COMMANDS_expandAll = 12,
                    COMMANDS_resourceManager = 13,
                    COMMANDS_toggleResources = 14,
                    COMMANDS_toggleDependencies = 15;
                let Bar = function() {
                    function Bar(element, owner) {
                        this._element = element;
                        this._owner = owner;
                        this._items = [];
                        this._createControl()
                    }
                    var _proto = Bar.prototype;
                    _proto.createItems = function(items) {
                        this._cache = null;
                        this._items = this._createItemsCore(items);
                        this._menu.option("items", this._items)
                    };
                    _proto._createItemsCore = function(items) {
                        return items.map(item => {
                            let result;
                            if ("string" === typeof item) {
                                result = this._createItemByText(item)
                            } else {
                                result = item.name ? (0, _extend.extend)(this._createItemByText(item.name), item) : (0, _extend.extend)(this._getDefaultItemOptions(), item)
                            }
                            if (item.items) {
                                result.items = this._createItemsCore(item.items)
                            }
                            return result
                        })
                    };
                    _proto._createItemByText = function(text) {
                        switch (text.toLowerCase()) {
                            case "separator":
                                return this._createSeparator();
                            case "undo":
                                return this._createDefaultItem(COMMANDS_undo, _message.default.format("dxGantt-undo"), this._getIcon("undo"));
                            case "redo":
                                return this._createDefaultItem(COMMANDS_redo, _message.default.format("dxGantt-redo"), this._getIcon("redo"));
                            case "expandall":
                                return this._createDefaultItem(COMMANDS_expandAll, _message.default.format("dxGantt-expandAll"), this._getIcon("expand"));
                            case "collapseall":
                                return this._createDefaultItem(COMMANDS_collapseAll, _message.default.format("dxGantt-collapseAll"), this._getIcon("collapse"));
                            case "addtask":
                                return this._createDefaultItem(COMMANDS_createTask, _message.default.format("dxGantt-addNewTask"), this._getIcon("add"));
                            case "addsubtask":
                                return this._createDefaultItem(COMMANDS_createSubTask, _message.default.format("dxGantt-contextMenuNewSubtask"), this._getIcon("add-sub-task"));
                            case "deletetask":
                                return this._createDefaultItem(COMMANDS_removeTask, _message.default.format("dxGantt-deleteSelectedTask"), this._getIcon("delete"));
                            case "deletedependency":
                                return this._createDefaultItem(COMMANDS_removeDependency, _message.default.format("dxGantt-contextMenuDeleteDependency"), this._getIcon("delete-dependency"));
                            case "zoomin":
                                return this._createDefaultItem(COMMANDS_zoomIn, _message.default.format("dxGantt-zoomIn"), this._getIcon("zoom-in"));
                            case "zoomout":
                                return this._createDefaultItem(COMMANDS_zoomOut, _message.default.format("dxGantt-zoomOut"), this._getIcon("zoom-out"));
                            case "fullscreen":
                                return this._createDefaultItem(COMMANDS_fullScreen, _message.default.format("dxGantt-fullScreen"), this._getIcon("full-screen"));
                            case "taskdetails":
                                return this._createDefaultItem(COMMANDS_taskInformation, _message.default.format("dxGantt-dialogTaskDetailsTitle") + "...", this._getIcon("task-details"));
                            case "resourcemanager":
                                return this._createDefaultItem(COMMANDS_resourceManager, _message.default.format("dxGantt-dialogResourceManagerTitle"), this._getIcon("resource-manager"));
                            case "showresources":
                                return this._createDefaultItem(COMMANDS_toggleResources, _message.default.format("dxGantt-showResources"), this._getIcon("toggle-resources"));
                            case "showdependencies":
                                return this._createDefaultItem(COMMANDS_toggleDependencies, _message.default.format("dxGantt-showDependencies"), this._getIcon("toggle-dependencies"));
                            default:
                                return (0, _extend.extend)(this._getDefaultItemOptions(), {
                                    options: {
                                        text: text
                                    }
                                })
                        }
                    };
                    _proto._getDefaultItemOptions = function() {
                        return {}
                    };
                    _proto._getItemsCache = function() {
                        if (!this._cache) {
                            this._cache = {};
                            this._fillCache(this._items)
                        }
                        return this._cache
                    };
                    _proto._fillCache = function(items) {
                        items.forEach(item => {
                            const key = item.commandId;
                            if (void 0 !== key) {
                                if (!this._cache[key]) {
                                    this._cache[key] = []
                                }
                                this._cache[key].push(item)
                            }
                            if (item.items) {
                                this._fillCache(item.items)
                            }
                        })
                    };
                    _proto._getIcon = function(name) {
                        return "dx-gantt-i dx-gantt-i-" + name
                    };
                    _proto.getCommandKeys = function() {
                        const itemsCache = this._getItemsCache();
                        const result = [];
                        for (const itemKey in itemsCache) {
                            result.push(parseInt(itemKey))
                        }
                        return result
                    };
                    _proto.setItemEnabled = function(key, enabled) {
                        const itemsCache = this._getItemsCache();
                        itemsCache[key].forEach(item => {
                            item.disabled = !enabled
                        })
                    };
                    _proto.setItemVisible = function(key, visible) {
                        const itemsCache = this._getItemsCache();
                        itemsCache[key].forEach(item => {
                            item.visible = visible
                        })
                    };
                    _proto.setItemValue = function(_key, _value) {};
                    _proto.setEnabled = function(enabled) {
                        this._menu.option("disabled", !enabled)
                    };
                    _proto.updateItemsList = function() {};
                    _proto.isVisible = function() {
                        return true
                    };
                    _proto.isContextMenu = function() {
                        return false
                    };
                    _proto.completeUpdate = function() {};
                    return Bar
                }();
                let GanttToolbar = function(_Bar) {
                    _inheritsLoose(GanttToolbar, _Bar);

                    function GanttToolbar() {
                        return _Bar.apply(this, arguments) || this
                    }
                    var _proto2 = GanttToolbar.prototype;
                    _proto2._createControl = function() {
                        this._menu = this._owner._createComponent(this._element, _toolbar.default, {
                            onItemClick: e => {
                                const commandId = e.itemData.commandId;
                                if (void 0 !== commandId) {
                                    this._executeCommand(e.itemData.commandId)
                                }
                            }
                        })
                    };
                    _proto2._executeCommand = function(commandId) {
                        switch (commandId) {
                            case COMMANDS_toggleResources:
                                this._owner.option("showResources", !this._owner.option("showResources"));
                                break;
                            case COMMANDS_toggleDependencies:
                                this._owner.option("showDependencies", !this._owner.option("showDependencies"));
                                break;
                            default:
                                this._owner._executeCoreCommand(commandId)
                        }
                    };
                    _proto2._createDefaultItem = function(commandId, hint, icon) {
                        return {
                            commandId: commandId,
                            disabled: true,
                            widget: "dxButton",
                            location: "before",
                            options: {
                                icon: icon,
                                stylingMode: "text",
                                hint: hint
                            }
                        }
                    };
                    _proto2._createSeparator = function() {
                        return {
                            location: "before",
                            template: (_data, _index, element) => {
                                (0, _renderer.default)(element).addClass("dx-gantt-toolbar-separator")
                            }
                        }
                    };
                    _proto2._getDefaultItemOptions = function() {
                        return {
                            location: "before",
                            widget: "dxButton"
                        }
                    };
                    _proto2.completeUpdate = function() {
                        this._menu.option("items", this._items)
                    };
                    return GanttToolbar
                }(Bar);
                exports.GanttToolbar = GanttToolbar;
                let GanttContextMenuBar = function(_Bar2) {
                    _inheritsLoose(GanttContextMenuBar, _Bar2);

                    function GanttContextMenuBar() {
                        return _Bar2.apply(this, arguments) || this
                    }
                    var _proto3 = GanttContextMenuBar.prototype;
                    _proto3._createControl = function() {
                        this._menu = this._owner._createComponent(this._element, _context_menu.default, {
                            showEvent: void 0,
                            onItemClick: e => {
                                if (void 0 !== e.itemData.commandId) {
                                    this._owner._executeCoreCommand(e.itemData.commandId)
                                } else if (void 0 !== e.itemData.name) {
                                    this._owner._actionsManager.raiseCustomCommand(e.itemData.name)
                                }
                            }
                        })
                    };
                    _proto3.createItems = function(items) {
                        if (!items || 0 === items.length) {
                            items = this._getDefaultItems()
                        }
                        _Bar2.prototype.createItems.call(this, items)
                    };
                    _proto3._getDefaultItems = function() {
                        return [{
                            text: _message.default.format("dxGantt-dialogButtonAdd"),
                            commandId: COMMANDS_taskAddContextItem,
                            icon: this._getIcon("add"),
                            items: [{
                                text: _message.default.format("dxGantt-contextMenuNewTask"),
                                commandId: COMMANDS_createTask,
                                icon: this._getIcon("add-task")
                            }, {
                                text: _message.default.format("dxGantt-contextMenuNewSubtask"),
                                commandId: COMMANDS_createSubTask,
                                icon: this._getIcon("add-sub-task")
                            }]
                        }, {
                            text: _message.default.format("dxGantt-dialogTaskDetailsTitle") + "...",
                            commandId: COMMANDS_taskInformation,
                            icon: this._getIcon("task-details")
                        }, {
                            text: _message.default.format("dxGantt-contextMenuDeleteTask"),
                            commandId: COMMANDS_removeTask,
                            icon: this._getIcon("delete")
                        }, {
                            text: _message.default.format("dxGantt-contextMenuDeleteDependency"),
                            commandId: COMMANDS_removeDependency,
                            icon: this._getIcon("delete-dependency")
                        }]
                    };
                    _proto3._createDefaultItem = function(commandId, text, icon) {
                        return {
                            commandId: commandId,
                            text: text,
                            icon: icon
                        }
                    };
                    _proto3.show = function(point, items) {
                        this._menu.option("items", items || this._items);
                        this._menu.option("position.offset", {
                            x: point.x,
                            y: point.y
                        });
                        this._menu.option("position.collision", "fit");
                        this._menu.show()
                    };
                    _proto3.hide = function() {
                        this._menu.hide()
                    };
                    _proto3.isContextMenu = function() {
                        return true
                    };
                    return GanttContextMenuBar
                }(Bar);
                exports.GanttContextMenuBar = GanttContextMenuBar
            },
        81278:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.cache.js ***!
              \************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.GanttDataCache = void 0;
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                let GanttDataCache = function() {
                    function GanttDataCache() {
                        this._cache = {};
                        this._timers = {}
                    }
                    var _proto = GanttDataCache.prototype;
                    _proto.saveData = function(key, data, keyExpireCallback) {
                        if (data) {
                            this._clearTimer(key);
                            const storage = this._getCache(key, true);
                            (0, _extend.extendFromObject)(storage, data, true);
                            if (keyExpireCallback) {
                                this._setExpireTimer(key, keyExpireCallback)
                            }
                        }
                    };
                    _proto.pullDataFromCache = function(key, target) {
                        const data = this._getCache(key);
                        if (data) {
                            (0, _extend.extendFromObject)(target, data)
                        }
                        this._onKeyExpired(key)
                    };
                    _proto.hasData = function(key) {
                        return !!this._cache[key]
                    };
                    _proto.resetCache = function(key) {
                        this._onKeyExpired(key)
                    };
                    _proto._getCache = function(key, forceCreate) {
                        if (!this._cache[key] && forceCreate) {
                            this._cache[key] = {}
                        }
                        return this._cache[key]
                    };
                    _proto._setExpireTimer = function(key, callback) {
                        this._timers[key] = setTimeout(() => {
                            callback(key, this._getCache(key));
                            this._onKeyExpired(key)
                        }, 200)
                    };
                    _proto._onKeyExpired = function(key) {
                        this._clearCache(key);
                        this._clearTimer(key)
                    };
                    _proto._clearCache = function(key) {
                        delete this._cache[key]
                    };
                    _proto._clearTimer = function(key) {
                        const timers = this._timers;
                        if (timers && timers[key]) {
                            clearTimeout(timers[key]);
                            delete timers[key]
                        }
                    };
                    return GanttDataCache
                }();
                exports.GanttDataCache = GanttDataCache
            },
        74320:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.custom_fields.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.GanttCustomFieldsManager = void 0;
                var _data = __webpack_require__( /*! ../../core/utils/data */ 47617);
                var _uiGantt = __webpack_require__( /*! ./ui.gantt.cache */ 81278);
                var _uiGantt2 = __webpack_require__( /*! ./ui.gantt.helper */ 30631);
                let GanttCustomFieldsManager = function() {
                    function GanttCustomFieldsManager(gantt) {
                        this._gantt = gantt;
                        this._mappingHelper = gantt._mappingHelper;
                        this.cache = new _uiGantt.GanttDataCache
                    }
                    var _proto = GanttCustomFieldsManager.prototype;
                    _proto._getTaskCustomFields = function() {
                        const columns = this._gantt.option("columns");
                        const columnFields = columns && columns.map(c => c.dataField);
                        const mappedFields = this._mappingHelper.getTaskMappedFieldNames();
                        return columnFields ? columnFields.filter(f => mappedFields.indexOf(f) < 0) : []
                    };
                    _proto._getCustomFieldsData = function(data) {
                        return this._getTaskCustomFields().reduce((previous, field) => {
                            if (data && void 0 !== data[field]) {
                                previous[field] = data[field]
                            }
                            return previous
                        }, {})
                    };
                    _proto.addCustomFieldsData = function(key, data) {
                        if (data) {
                            const modelData = this._gantt._tasksOption && this._gantt._tasksOption._getItems();
                            const keyGetter = (0, _data.compileGetter)(this._gantt.option("".concat("tasks", ".keyExpr")));
                            const modelItem = modelData && modelData.filter(obj => keyGetter(obj) === key)[0];
                            const customFields = this._getTaskCustomFields();
                            if (modelItem) {
                                for (let i = 0; i < customFields.length; i++) {
                                    const field = customFields[i];
                                    if (Object.prototype.hasOwnProperty.call(modelItem, field)) {
                                        data[field] = modelItem[field]
                                    }
                                }
                            }
                        }
                    };
                    _proto.appendCustomFields = function(data) {
                        const modelData = this._gantt._tasksOption && this._gantt._tasksOption._getItems();
                        const keyGetter = this._gantt._getTaskKeyGetter();
                        const invertedData = _uiGantt2.GanttHelper.getInvertedData(modelData, keyGetter);
                        return data.reduce((previous, item) => {
                            const key = keyGetter(item);
                            const modelItem = invertedData[key];
                            if (!modelItem) {
                                previous.push(item)
                            } else {
                                const updatedItem = {};
                                for (const field in modelItem) {
                                    updatedItem[field] = Object.prototype.hasOwnProperty.call(item, field) ? item[field] : modelItem[field]
                                }
                                previous.push(updatedItem)
                            }
                            return previous
                        }, [])
                    };
                    _proto.addCustomFieldsDataFromCache = function(key, data) {
                        this.cache.pullDataFromCache(key, data)
                    };
                    _proto.saveCustomFieldsDataToCache = function(key, data) {
                        let forceUpdateOnKeyExpire = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;
                        let isCustomFieldsUpdateOnly = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : false;
                        const customFieldsData = this._getCustomFieldsData(data);
                        if (Object.keys(customFieldsData).length > 0) {
                            const updateCallback = (key, data) => {
                                const dataOption = this._gantt["_".concat("tasks", "Option")];
                                if (dataOption && data) {
                                    dataOption.update(key, data, (data, key) => {
                                        const updatedCustomFields = {};
                                        this.addCustomFieldsData(key, updatedCustomFields);
                                        dataOption._reloadDataSource().done(data => {
                                            this._gantt._ganttTreeList.updateDataSource(null !== data && void 0 !== data ? data : dataOption._dataSource, false, isCustomFieldsUpdateOnly)
                                        });
                                        const selectedRowKey = this._gantt.option("selectedRowKey");
                                        this._gantt._ganttView._selectTask(selectedRowKey);
                                        this._gantt._actionsManager.raiseUpdatedAction("tasks", updatedCustomFields, key)
                                    })
                                }
                            };
                            this.cache.saveData(key, customFieldsData, forceUpdateOnKeyExpire ? updateCallback : null)
                        }
                    };
                    _proto.resetCustomFieldsDataCache = function(key) {
                        this.cache.resetCache(key)
                    };
                    return GanttCustomFieldsManager
                }();
                exports.GanttCustomFieldsManager = GanttCustomFieldsManager
            },
        52609:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.data.option.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _component = __webpack_require__( /*! ../../core/component */ 44297);
                var _data_helper = (obj = __webpack_require__( /*! ../../data_helper */ 53305), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let DataOption = function(_Component) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(DataOption, _Component);

                    function DataOption(optionName, getLoadPanel, dataSourceChangedCallback) {
                        var _this;
                        _this = _Component.call(this) || this;
                        _this._optionName = optionName;
                        _this._getLoadPanel = getLoadPanel;
                        _this._dataSourceChangedCallback = dataSourceChangedCallback;
                        return _this
                    }
                    var _proto = DataOption.prototype;
                    _proto.insert = function(data, callback, errorCallback) {
                        this._showLoadPanel();
                        this._getStore().insert(data).done(response => {
                            if (callback) {
                                callback(response)
                            }
                            this._hideLoadPanel()
                        }).fail(error => {
                            if (errorCallback) {
                                errorCallback(error)
                            }
                            this._hideLoadPanel()
                        })
                    };
                    _proto.update = function(key, data, callback, errorCallback) {
                        this._showLoadPanel();
                        this._getStore().update(key, data).done((data, key) => {
                            if (callback) {
                                callback(data, key)
                            }
                            this._hideLoadPanel()
                        }).fail(error => {
                            if (errorCallback) {
                                errorCallback(error)
                            }
                            this._hideLoadPanel()
                        })
                    };
                    _proto.remove = function(key, callback, errorCallback) {
                        this._showLoadPanel();
                        this._getStore().remove(key).done(key => {
                            if (callback) {
                                callback(key)
                            }
                            this._hideLoadPanel()
                        }).fail(error => {
                            if (errorCallback) {
                                errorCallback(error)
                            }
                            this._hideLoadPanel()
                        })
                    };
                    _proto._dataSourceChangedHandler = function(newItems, e) {
                        this._dataSourceChangedCallback(this._optionName, newItems)
                    };
                    _proto._dataSourceOptions = function() {
                        return {
                            paginate: false
                        }
                    };
                    _proto._dataSourceLoadingChangedHandler = function(isLoading) {
                        if (isLoading && !this._dataSource.isLoaded()) {
                            this._showLoadPanel()
                        } else {
                            this._hideLoadPanel()
                        }
                    };
                    _proto._showLoadPanel = function() {
                        var _this$_getLoadPanel;
                        null === (_this$_getLoadPanel = this._getLoadPanel()) || void 0 === _this$_getLoadPanel ? void 0 : _this$_getLoadPanel.show()
                    };
                    _proto._hideLoadPanel = function() {
                        var _this$_getLoadPanel2;
                        null === (_this$_getLoadPanel2 = this._getLoadPanel()) || void 0 === _this$_getLoadPanel2 ? void 0 : _this$_getLoadPanel2.hide()
                    };
                    _proto._getStore = function() {
                        return this._dataSource.store()
                    };
                    _proto._getItems = function() {
                        return this._getStore()._array || this._dataSource.items()
                    };
                    _proto._reloadDataSource = function() {
                        return this._dataSource.load()
                    };
                    _proto.dispose = function() {
                        this._disposeDataSource()
                    };
                    _proto._optionChanged = function(args) {
                        args.name
                    };
                    return DataOption
                }(_component.Component);
                DataOption.include(_data_helper.default);
                var _default = DataOption;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        28512:
            /*!*************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.data_changes_processing_helper.js ***!
              \*************************************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.GanttDataChangesProcessingHelper = void 0;
                let GanttDataChangesProcessingHelper = function() {
                    function GanttDataChangesProcessingHelper() {
                        this._waitingForGanttViewReady = false;
                        this._waitingForTreeListReady = false;
                        this._completionActions = []
                    }
                    var _proto = GanttDataChangesProcessingHelper.prototype;
                    _proto.onGanttViewReady = function() {
                        this._stopWaitForGanttViewReady();
                        this.executeActionsIfPossible()
                    };
                    _proto.onTreeListReady = function() {
                        this._stopWaitForTreeListReady();
                        this.executeActionsIfPossible()
                    };
                    _proto.addCompletionAction = function(action, waitGanttViewReady, waitTreeListReady) {
                        if (action) {
                            if (waitGanttViewReady) {
                                this._startWaitForGanttViewReady()
                            }
                            if (waitTreeListReady) {
                                this._startWaitForTreeListReady()
                            }
                            this._completionActions.push(action)
                        }
                    };
                    _proto.executeActionsIfPossible = function() {
                        if (this._canExecuteActions()) {
                            this._completionActions.forEach(act => act());
                            this._completionActions = []
                        }
                    };
                    _proto._startWaitForGanttViewReady = function() {
                        this._waitingForGanttViewReady = true
                    };
                    _proto._stopWaitForGanttViewReady = function() {
                        this._waitingForGanttViewReady = false
                    };
                    _proto._startWaitForTreeListReady = function() {
                        this._waitingForTreeListReady = true
                    };
                    _proto._stopWaitForTreeListReady = function() {
                        this._waitingForTreeListReady = false
                    };
                    _proto._canExecuteActions = function() {
                        return !(this._waitingForGanttViewReady || this._waitingForTreeListReady)
                    };
                    return GanttDataChangesProcessingHelper
                }();
                exports.GanttDataChangesProcessingHelper = GanttDataChangesProcessingHelper
            },
        10612:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.dialogs.js ***!
              \**************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.GanttDialog = void 0;
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../popup/ui.popup */ 51495));
                var _form = _interopRequireDefault(__webpack_require__( /*! ../form */ 17737));
                __webpack_require__( /*! ../tag_box */ 31362);
                __webpack_require__( /*! ../radio_group */ 14305);
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../localization/date */ 91500));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                __webpack_require__( /*! ../list_light */ 56757);
                __webpack_require__( /*! ../list/modules/deleting */ 15728);

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

                function _inheritsLoose(subClass, superClass) {
                    subClass.prototype = Object.create(superClass.prototype);
                    subClass.prototype.constructor = subClass;
                    _setPrototypeOf(subClass, superClass)
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let GanttDialog = function() {
                    function GanttDialog(owner, $element) {
                        this._popupInstance = owner._createComponent($element, _ui.default);
                        this.infoMap = {
                            TaskEdit: TaskEditDialogInfo,
                            Resources: ResourcesEditDialogInfo,
                            Confirmation: ConfirmDialogInfo,
                            ConstraintViolation: ConstraintViolationDialogInfo
                        }
                    }
                    var _proto = GanttDialog.prototype;
                    _proto._apply = function() {
                        if (this._dialogInfo.isValidated()) {
                            const result = this._dialogInfo.getResult();
                            this._callback(result);
                            this.hide()
                        }
                    };
                    _proto.show = function(name, parameters, callback, afterClosing, editingOptions) {
                        this._callback = callback;
                        this._afterClosing = afterClosing;
                        if (!this.infoMap[name]) {
                            return
                        }
                        const isRefresh = this._popupInstance._isVisible() && this._dialogInfo && this._dialogInfo instanceof this.infoMap[name];
                        this._dialogInfo = new this.infoMap[name](parameters, this._apply.bind(this), this.hide.bind(this), editingOptions);
                        this._popupInstance.option({
                            showTitle: !!this._dialogInfo.getTitle(),
                            title: this._dialogInfo.getTitle(),
                            toolbarItems: this._dialogInfo.getToolbarItems(),
                            maxWidth: this._dialogInfo.getMaxWidth(),
                            height: this._dialogInfo.getHeight(),
                            contentTemplate: this._dialogInfo.getContentTemplate()
                        });
                        if (this._afterClosing) {
                            this._popupInstance.option("onHidden", this._afterClosing)
                        }
                        if (!isRefresh) {
                            this._popupInstance.show()
                        }
                    };
                    _proto.hide = function() {
                        this._popupInstance.hide();
                        if (this._afterClosing) {
                            this._afterClosing()
                        }
                    };
                    return GanttDialog
                }();
                exports.GanttDialog = GanttDialog;
                let DialogInfoBase = function() {
                    function DialogInfoBase(parameters, applyAction, hideAction, editingOptions) {
                        this._parameters = parameters;
                        this._applyAction = applyAction;
                        this._hideAction = hideAction;
                        this._editingOptions = editingOptions
                    }
                    var _proto2 = DialogInfoBase.prototype;
                    _proto2._getFormItems = function() {
                        return {}
                    };
                    _proto2._getFormCssClass = function() {
                        return ""
                    };
                    _proto2._getFormData = function() {
                        return this._parameters
                    };
                    _proto2._updateParameters = function() {};
                    _proto2._getOkToolbarItem = function() {
                        return this._getToolbarItem("OK", this._applyAction)
                    };
                    _proto2._getCancelToolbarItem = function() {
                        return this._getToolbarItem("Cancel", this._hideAction)
                    };
                    _proto2._getYesToolbarItem = function() {
                        return this._getToolbarItem("Yes", this._applyAction)
                    };
                    _proto2._getNoToolbarItem = function() {
                        return this._getToolbarItem("No", this._hideAction)
                    };
                    _proto2._getToolbarItem = function(localizationText, action) {
                        return {
                            widget: "dxButton",
                            toolbar: "bottom",
                            options: {
                                text: _message.default.format(localizationText),
                                onClick: action
                            }
                        }
                    };
                    _proto2.getTitle = function() {
                        return ""
                    };
                    _proto2.getToolbarItems = function() {
                        return this._editingOptions.enabled ? [this._getOkToolbarItem(), this._getCancelToolbarItem()] : [this._getCancelToolbarItem()]
                    };
                    _proto2.getMaxWidth = function() {
                        return 400
                    };
                    _proto2.getHeight = function() {
                        return "auto"
                    };
                    _proto2.getContentTemplate = function() {
                        return content => {
                            this._form = new _form.default(content, {
                                formData: this._getFormData(),
                                items: this._getFormItems(),
                                elementAttr: {
                                    class: this._getFormCssClass()
                                },
                                rtlEnabled: false
                            });
                            return content
                        }
                    };
                    _proto2.getResult = function() {
                        const formData = this.getFormData();
                        this._updateParameters(formData);
                        return this._parameters
                    };
                    _proto2.getFormData = function() {
                        const formData = this._form && this._form.option("formData");
                        return formData
                    };
                    _proto2.isValidated = function() {
                        return true
                    };
                    return DialogInfoBase
                }();
                let TaskEditDialogInfo = function(_DialogInfoBase) {
                    _inheritsLoose(TaskEditDialogInfo, _DialogInfoBase);

                    function TaskEditDialogInfo() {
                        return _DialogInfoBase.apply(this, arguments) || this
                    }
                    var _proto3 = TaskEditDialogInfo.prototype;
                    _proto3.getTitle = function() {
                        return _message.default.format("dxGantt-dialogTaskDetailsTitle")
                    };
                    _proto3._getFormItems = function() {
                        const readOnly = !this._editingOptions.enabled || !this._editingOptions.allowTaskUpdating;
                        const readOnlyRange = readOnly || !this._parameters.enableRangeEdit;
                        return [{
                            dataField: "title",
                            editorType: "dxTextBox",
                            label: {
                                text: _message.default.format("dxGantt-dialogTitle")
                            },
                            editorOptions: {
                                readOnly: readOnly || this._isReadOnlyField("title")
                            },
                            visible: !this._isHiddenField("title")
                        }, {
                            dataField: "start",
                            editorType: "dxDateBox",
                            label: {
                                text: _message.default.format("dxGantt-dialogStartTitle")
                            },
                            editorOptions: {
                                type: "datetime",
                                width: "100%",
                                readOnly: readOnlyRange || this._isReadOnlyField("start")
                            },
                            visible: !this._isHiddenField("start"),
                            validationRules: [{
                                type: "required",
                                message: _message.default.format("validation-required-formatted", _message.default.format("dxGantt-dialogStartTitle"))
                            }, {
                                type: "custom",
                                validationCallback: e => {
                                    if (this._parameters.isValidationRequired) {
                                        const correctDateRange = this._parameters.getCorrectDateRange(this._parameters.id, e.value, this._parameters.end);
                                        if (correctDateRange.start.getTime() !== e.value.getTime()) {
                                            e.rule.message = this._getValidationMessage(true, correctDateRange.start);
                                            return false
                                        }
                                    }
                                    return true
                                }
                            }]
                        }, {
                            dataField: "end",
                            editorType: "dxDateBox",
                            label: {
                                text: _message.default.format("dxGantt-dialogEndTitle")
                            },
                            editorOptions: {
                                type: "datetime",
                                width: "100%",
                                readOnly: readOnlyRange || this._isReadOnlyField("end")
                            },
                            visible: !this._isHiddenField("end"),
                            validationRules: [{
                                type: "required",
                                message: _message.default.format("validation-required-formatted", _message.default.format("dxGantt-dialogEndTitle"))
                            }, {
                                type: "custom",
                                validationCallback: e => {
                                    if (this._parameters.isValidationRequired) {
                                        const correctDateRange = this._parameters.getCorrectDateRange(this._parameters.id, this._parameters.start, e.value);
                                        if (correctDateRange.end.getTime() !== e.value.getTime()) {
                                            e.rule.message = this._getValidationMessage(false, correctDateRange.end);
                                            return false
                                        }
                                    }
                                    return true
                                }
                            }]
                        }, {
                            dataField: "progress",
                            editorType: "dxNumberBox",
                            label: {
                                text: _message.default.format("dxGantt-dialogProgressTitle")
                            },
                            editorOptions: {
                                showSpinButtons: true,
                                min: 0,
                                max: 1,
                                format: "#0%",
                                step: .01,
                                readOnly: readOnlyRange || this._isReadOnlyField("progress")
                            },
                            visible: !this._isHiddenField("progress")
                        }, {
                            dataField: "assigned.items",
                            editorType: "dxTagBox",
                            label: {
                                text: _message.default.format("dxGantt-dialogResourcesTitle")
                            },
                            editorOptions: {
                                readOnly: readOnly || !this._editingOptions.allowTaskResourceUpdating,
                                dataSource: this._parameters.resources.items,
                                displayExpr: "text",
                                buttons: [{
                                    name: "editResources",
                                    location: "after",
                                    options: {
                                        disabled: !this._editingOptions.allowResourceAdding && !this._editingOptions.allowResourceDeleting,
                                        text: "...",
                                        hint: _message.default.format("dxGantt-dialogEditResourceListHint"),
                                        onClick: () => {
                                            this._parameters.showResourcesDialogCommand.execute(() => {
                                                this._parameters.showTaskEditDialogCommand.execute()
                                            })
                                        }
                                    }
                                }]
                            }
                        }]
                    };
                    _proto3._getValidationMessage = function(isStartDependencies, correctDate) {
                        if (isStartDependencies) {
                            return _message.default.format("dxGantt-dialogStartDateValidation", this._getFormattedDateText(correctDate))
                        }
                        return _message.default.format("dxGantt-dialogEndDateValidation", this._getFormattedDateText(correctDate))
                    };
                    _proto3._getFormattedDateText = function(date) {
                        return date ? _date.default.format(date, "shortDateShortTime") : ""
                    };
                    _proto3._isReadOnlyField = function(field) {
                        return this._parameters.readOnlyFields.indexOf(field) > -1
                    };
                    _proto3._isHiddenField = function(field) {
                        return this._parameters.hiddenFields.indexOf(field) > -1
                    };
                    _proto3._getFormData = function() {
                        const data = {};
                        for (const field in this._parameters) {
                            data[field] = "progress" === field ? this._parameters[field] / 100 : this._parameters[field]
                        }
                        return data
                    };
                    _proto3._updateParameters = function(formData) {
                        this._parameters.title = formData.title;
                        this._parameters.start = formData.start;
                        this._parameters.end = formData.end;
                        this._parameters.progress = 100 * formData.progress;
                        this._parameters.assigned = formData.assigned
                    };
                    _proto3.isValidated = function() {
                        var _this$_form;
                        const validationResult = null === (_this$_form = this._form) || void 0 === _this$_form ? void 0 : _this$_form.validate();
                        return null === validationResult || void 0 === validationResult ? void 0 : validationResult.isValid
                    };
                    return TaskEditDialogInfo
                }(DialogInfoBase);
                let ResourcesEditDialogInfo = function(_DialogInfoBase2) {
                    _inheritsLoose(ResourcesEditDialogInfo, _DialogInfoBase2);

                    function ResourcesEditDialogInfo() {
                        return _DialogInfoBase2.apply(this, arguments) || this
                    }
                    var _proto4 = ResourcesEditDialogInfo.prototype;
                    _proto4.getTitle = function() {
                        return _message.default.format("dxGantt-dialogResourceManagerTitle")
                    };
                    _proto4._getFormItems = function() {
                        return [{
                            label: {
                                visible: false
                            },
                            dataField: "resources.items",
                            editorType: "dxList",
                            editorOptions: {
                                allowItemDeleting: this._editingOptions.enabled && this._editingOptions.allowResourceDeleting,
                                itemDeleteMode: "static",
                                selectionMode: "none",
                                items: this._parameters.resources.items,
                                height: 250,
                                noDataText: _message.default.format("dxGantt-dialogEditNoResources"),
                                onInitialized: e => {
                                    this.list = e.component
                                },
                                onItemDeleted: e => {
                                    this._parameters.resources.remove(e.itemData)
                                }
                            }
                        }, {
                            label: {
                                visible: false
                            },
                            editorType: "dxTextBox",
                            editorOptions: {
                                readOnly: !this._editingOptions.enabled || !this._editingOptions.allowResourceAdding,
                                onInitialized: e => {
                                    this.textBox = e.component
                                },
                                onInput: e => {
                                    const addButton = e.component.getButton("addResource");
                                    const resourceName = e.component.option("text");
                                    addButton.option("disabled", 0 === resourceName.length)
                                },
                                buttons: [{
                                    name: "addResource",
                                    location: "after",
                                    options: {
                                        text: _message.default.format("dxGantt-dialogButtonAdd"),
                                        disabled: true,
                                        onClick: e => {
                                            const newItem = this._parameters.resources.createItem();
                                            newItem.text = this.textBox.option("text");
                                            this._parameters.resources.add(newItem);
                                            this.list.option("items", this._parameters.resources.items);
                                            this.list.scrollToItem(newItem);
                                            this.textBox.clear();
                                            e.component.option("disabled", true)
                                        }
                                    }
                                }]
                            }
                        }]
                    };
                    return ResourcesEditDialogInfo
                }(DialogInfoBase);
                let ConfirmDialogInfo = function(_DialogInfoBase3) {
                    _inheritsLoose(ConfirmDialogInfo, _DialogInfoBase3);

                    function ConfirmDialogInfo() {
                        return _DialogInfoBase3.apply(this, arguments) || this
                    }
                    var _proto5 = ConfirmDialogInfo.prototype;
                    _proto5.getContentTemplate = function() {
                        return content => this._getConfirmMessage()
                    };
                    _proto5._getConfirmMessage = function() {
                        switch (this._parameters.type) {
                            case 0:
                                return _message.default.format("dxGantt-dialogTaskDeleteConfirmation");
                            case 1:
                                return _message.default.format("dxGantt-dialogDependencyDeleteConfirmation");
                            case 2:
                                return _message.default.format("dxGantt-dialogResourcesDeleteConfirmation", this._parameters.message);
                            default:
                                return ""
                        }
                    };
                    _proto5.getToolbarItems = function() {
                        return [this._getYesToolbarItem(), this._getNoToolbarItem()]
                    };
                    return ConfirmDialogInfo
                }(DialogInfoBase);
                let ConstraintViolationDialogInfo = function(_DialogInfoBase4) {
                    _inheritsLoose(ConstraintViolationDialogInfo, _DialogInfoBase4);

                    function ConstraintViolationDialogInfo() {
                        return _DialogInfoBase4.apply(this, arguments) || this
                    }
                    var _proto6 = ConstraintViolationDialogInfo.prototype;
                    _proto6._getFormItems = function() {
                        const hasCriticalErrors = this._parameters.hasCriticalErrors;
                        const severalErrors = this._parameters.errorsCount > 1;
                        const items = [];
                        const deleteMessage = severalErrors ? "dxGantt-dialogDeleteDependenciesMessage" : "dxGantt-dialogDeleteDependencyMessage";
                        const moveMessage = severalErrors ? "dxGantt-dialogMoveTaskAndKeepDependenciesMessage" : "dxGantt-dialogMoveTaskAndKeepDependencyMessage";
                        let titleMessage;
                        if (hasCriticalErrors) {
                            titleMessage = severalErrors ? "dxGantt-dialogConstraintCriticalViolationSeveralTasksMessage" : "dxGantt-dialogConstraintCriticalViolationMessage"
                        } else {
                            titleMessage = severalErrors ? "dxGantt-dialogConstraintViolationSeveralTasksMessage" : "dxGantt-dialogConstraintViolationMessage"
                        }
                        items.push({
                            text: _message.default.format("dxGantt-dialogCancelOperationMessage"),
                            value: 0
                        });
                        items.push({
                            text: _message.default.format(deleteMessage),
                            value: 1
                        });
                        if (!hasCriticalErrors) {
                            items.push({
                                text: _message.default.format(moveMessage),
                                value: 2
                            })
                        }
                        return [{
                            template: _message.default.format(titleMessage)
                        }, {
                            cssClass: "dx-cv-dialog-row",
                            dataField: "option",
                            label: {
                                visible: false
                            },
                            editorType: "dxRadioGroup",
                            editorOptions: {
                                items: items,
                                valueExpr: "value",
                                value: 0
                            }
                        }]
                    };
                    _proto6._getFormCssClass = function() {
                        return "dx-cv-dialog"
                    };
                    _proto6._updateParameters = function(formData) {
                        this._parameters.option = formData.option
                    };
                    return ConstraintViolationDialogInfo
                }(DialogInfoBase)
            },
        83553:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.export_helper.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.GanttExportHelper = void 0;
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _uiGrid_core = _interopRequireDefault(__webpack_require__( /*! ../grid_core/ui.grid_core.utils */ 13615));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../localization/date */ 91500));
                var _number = _interopRequireDefault(__webpack_require__( /*! ../../localization/number */ 18016));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();
                let GanttExportHelper = function() {
                    function GanttExportHelper(gantt) {
                        this._gantt = gantt;
                        this._treeList = gantt._treeList;
                        this._cache = {}
                    }
                    var _proto = GanttExportHelper.prototype;
                    _proto.reset = function() {
                        this._cache = {}
                    };
                    _proto.getTreeListTableStyle = function() {
                        const table = this._getTreeListTable();
                        const style = window.getComputedStyle(table);
                        return {
                            color: style.color,
                            backgroundColor: style.backgroundColor,
                            fontSize: style.fontSize,
                            fontFamily: style.fontFamily,
                            fontWeight: style.fontWeight,
                            fontStyle: style.fontStyle,
                            textAlign: "left",
                            verticalAlign: "middle"
                        }
                    };
                    _proto.getTreeListColCount = function() {
                        const headerView = this._getHeaderView();
                        const widths = headerView.getColumnWidths().filter(w => w > 0);
                        return widths.length
                    };
                    _proto.getTreeListHeaderInfo = function(colIndex) {
                        const element = this._getHeaderElement(colIndex);
                        if (!element) {
                            return null
                        }
                        const style = window.getComputedStyle(element);
                        const styleForExport = {
                            color: style.color,
                            padding: style.padding,
                            paddingLeft: style.paddingLeft,
                            paddingTop: style.paddingTop,
                            paddingRight: style.paddingRight,
                            paddingBottom: style.paddingBottom,
                            verticalAlign: style.verticalAlign,
                            width: this._getColumnWidth(colIndex)
                        };
                        return {
                            content: element.textContent,
                            styles: styleForExport
                        }
                    };
                    _proto.getTreeListCellInfo = function(key, colIndex) {
                        var _cell$textContent;
                        const node = this._treeList.getNodeByKey(key);
                        const visibleRowIndex = this._treeList.getRowIndexByKey(key);
                        const cell = visibleRowIndex > -1 ? this._getDataCell(visibleRowIndex, colIndex) : null;
                        const style = cell ? window.getComputedStyle(cell) : this._getColumnCellStyle(colIndex);
                        const styleForExport = {
                            color: style.color,
                            padding: style.padding,
                            paddingLeft: style.paddingLeft,
                            paddingTop: style.paddingTop,
                            paddingRight: style.paddingRight,
                            paddingBottom: style.paddingBottom,
                            width: this._getColumnWidth(colIndex)
                        };
                        if (0 === colIndex) {
                            styleForExport.extraLeftPadding = this._getEmptySpaceWidth(node.level)
                        }
                        return {
                            content: null !== (_cell$textContent = null === cell || void 0 === cell ? void 0 : cell.textContent) && void 0 !== _cell$textContent ? _cell$textContent : this._getDisplayText(key, colIndex),
                            styles: styleForExport
                        }
                    };
                    _proto.getTreeListEmptyDataCellInfo = function() {
                        return {
                            content: this._treeList.option("noDataText")
                        }
                    };
                    _proto._ensureColumnWidthCache = function(colIndex) {
                        var _this$_cache, _this$_cache$_columnW;
                        null !== (_this$_cache$_columnW = (_this$_cache = this._cache)["columnWidths"]) && void 0 !== _this$_cache$_columnW ? _this$_cache$_columnW : _this$_cache.columnWidths = {};
                        if (!this._cache.columnWidths[colIndex]) {
                            var _header$clientWidth;
                            const header = this._getHeaderElement(colIndex);
                            this._cache.columnWidths[colIndex] = null !== (_header$clientWidth = null === header || void 0 === header ? void 0 : header.clientWidth) && void 0 !== _header$clientWidth ? _header$clientWidth : 0
                        }
                    };
                    _proto._getColumnWidth = function(colIndex) {
                        this._ensureColumnWidthCache(colIndex);
                        const widths = this._cache.columnWidths;
                        return widths && widths[colIndex]
                    };
                    _proto._getEmptySpaceWidth = function(level) {
                        if (!this._cache.emptyWidth) {
                            var _this$_cache2, _this$_cache2$_emptyW, _element$offsetWidth;
                            const element = this._getTreeListElement("dx-treelist-empty-space");
                            null !== (_this$_cache2$_emptyW = (_this$_cache2 = this._cache)["emptyWidth"]) && void 0 !== _this$_cache2$_emptyW ? _this$_cache2$_emptyW : _this$_cache2.emptyWidth = null !== (_element$offsetWidth = element.offsetWidth) && void 0 !== _element$offsetWidth ? _element$offsetWidth : 0
                        }
                        return this._cache.emptyWidth * (level + 1)
                    };
                    _proto._getColumnCellStyle = function(colIndex) {
                        this._ensureColumnCellStyleCache(colIndex);
                        return this._cache.columnStyles[colIndex]
                    };
                    _proto._ensureColumnCellStyleCache = function(colIndex) {
                        var _this$_cache3, _this$_cache3$_column;
                        null !== (_this$_cache3$_column = (_this$_cache3 = this._cache)["columnStyles"]) && void 0 !== _this$_cache3$_column ? _this$_cache3$_column : _this$_cache3.columnStyles = {};
                        if (!this._cache.columnStyles[colIndex]) {
                            const cell = this._getDataCell(0, colIndex);
                            this._cache.columnStyles[colIndex] = window.getComputedStyle(cell)
                        }
                    };
                    _proto._getTask = function(key) {
                        this._ensureTaskCache(key);
                        return this._cache.tasks[key]
                    };
                    _proto._ensureTaskCache = function(key) {
                        var _this$_cache4, _this$_cache4$_tasks, _this$_cache$tasks, _this$_cache$tasks$ke;
                        null !== (_this$_cache4$_tasks = (_this$_cache4 = this._cache)["tasks"]) && void 0 !== _this$_cache4$_tasks ? _this$_cache4$_tasks : _this$_cache4.tasks = {};
                        null !== (_this$_cache$tasks$ke = (_this$_cache$tasks = this._cache.tasks)[key]) && void 0 !== _this$_cache$tasks$ke ? _this$_cache$tasks$ke : _this$_cache$tasks[key] = this._gantt._findTaskByKey(key)
                    };
                    _proto._getTreeListTable = function() {
                        return this._getTreeListElement("dx-treelist-table")
                    };
                    _proto._getTreeListElement = function(className) {
                        return this._treeList._$element.find("." + className).get(0)
                    };
                    _proto._getDataCell = function(rowIndex, colIndex) {
                        const treeList = this._treeList;
                        const cellElement = treeList.getCellElement(rowIndex, colIndex);
                        return cellElement && cellElement.length ? cellElement[0] : cellElement
                    };
                    _proto._getHeaderElement = function(index) {
                        return this._getHeaderView().getHeaderElement(index).get(0)
                    };
                    _proto._getHeaderView = function() {
                        return this._treeList._views.columnHeadersView
                    };
                    _proto._getDisplayText = function(key, colIndex) {
                        const task = this._getTask(key);
                        return task && this._getGridDisplayText(colIndex, task)
                    };
                    _proto._getGridDisplayText = function(colIndex, data) {
                        const columns = this._treeList.getController("columns").getColumns();
                        const column = columns[colIndex];
                        const field = null === column || void 0 === column ? void 0 : column.dataField;
                        const format = null === column || void 0 === column ? void 0 : column.format;
                        const value = _uiGrid_core.default.getDisplayValue(column, data[field], data, "data");
                        if ((0, _type.isDefined)(format)) {
                            if ("date" === (null === column || void 0 === column ? void 0 : column.dataType) || "datetime" === (null === column || void 0 === column ? void 0 : column.dataType)) {
                                const date = (0, _type.isDate)(value) ? value : new Date(value);
                                return _date.default.format(date, format)
                            }
                            if ((0, _type.isNumeric)(value)) {
                                return _number.default.format(value, format)
                            }
                        }
                        return "string" === typeof value ? value : null === value || void 0 === value ? void 0 : value.toString()
                    };
                    return GanttExportHelper
                }();
                exports.GanttExportHelper = GanttExportHelper
            },
        30631:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.helper.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.GanttHelper = void 0;
                var _data = __webpack_require__( /*! ../../core/utils/data */ 47617);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _message = (obj = __webpack_require__( /*! ../../localization/message */ 28109), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const GanttHelper = {
                    prepareMapHandler: getters => data => Object.keys(getters).reduce((previous, key) => {
                        const resultKey = "key" === key ? "id" : key;
                        previous[resultKey] = getters[key](data);
                        return previous
                    }, {}),
                    prepareSetterMapHandler: setters => data => Object.keys(setters).reduce((previous, key) => {
                        const resultKey = "key" === key ? "id" : key;
                        setters[key](previous, data[resultKey]);
                        return previous
                    }, {}),
                    compileGettersByOption(optionValue) {
                        const getters = {};
                        for (const field in optionValue) {
                            const exprMatches = field.match(/(\w*)Expr/);
                            if (exprMatches) {
                                getters[exprMatches[1]] = (0, _data.compileGetter)(optionValue[exprMatches[0]])
                            }
                        }
                        return getters
                    },
                    compileSettersByOption(optionValue) {
                        const setters = {};
                        for (const field in optionValue) {
                            const exprMatches = field.match(/(\w*)Expr/);
                            if (exprMatches && !(0, _type.isFunction)(optionValue[exprMatches[0]])) {
                                setters[exprMatches[1]] = (0, _data.compileSetter)(optionValue[exprMatches[0]])
                            }
                        }
                        return setters
                    },
                    compileFuncSettersByOption(optionValue) {
                        const setters = {};
                        for (const field in optionValue) {
                            const exprMatches = field.match(/(\w*)Expr/);
                            if (exprMatches && (0, _type.isFunction)(optionValue[exprMatches[0]])) {
                                setters[exprMatches[1]] = optionValue[exprMatches[0]]
                            }
                        }
                        return setters
                    },
                    getStoreObject(option, modelObject) {
                        const setters = GanttHelper.compileSettersByOption(option);
                        return Object.keys(setters).reduce((previous, key) => {
                            if ("key" !== key) {
                                setters[key](previous, modelObject[key])
                            }
                            return previous
                        }, {})
                    },
                    getInvertedData(data, keyGetter) {
                        const inverted = {};
                        if (data) {
                            for (let i = 0; i < data.length; i++) {
                                const dataItem = data[i];
                                const key = keyGetter(dataItem);
                                inverted[key] = dataItem
                            }
                        }
                        return inverted
                    },
                    getArrayFromOneElement: element => void 0 === element || null === element ? [] : [element],
                    getSelectionMode: allowSelection => allowSelection ? "single" : "none",
                    convertTreeToList(node, array) {
                        if (null !== node && void 0 !== node && node.data && null !== node && void 0 !== node && node.visible) {
                            array.push(node.data)
                        }
                        for (let i = 0; i < (null === (_node$children = node.children) || void 0 === _node$children ? void 0 : _node$children.length); i++) {
                            var _node$children;
                            const child = node.children[i];
                            GanttHelper.convertTreeToList(child, array)
                        }
                    },
                    getAllParentNodesKeys(node, array) {
                        var _node$parent;
                        if (null !== node && void 0 !== node && node.data) {
                            array.push(node.key)
                        }
                        if (null !== node && void 0 !== node && null !== (_node$parent = node.parent) && void 0 !== _node$parent && _node$parent.data) {
                            GanttHelper.getAllParentNodesKeys(node.parent, array)
                        }
                    },
                    getDefaultOptions: () => ({
                        tasks: {
                            dataSource: null,
                            keyExpr: "id",
                            parentIdExpr: "parentId",
                            startExpr: "start",
                            endExpr: "end",
                            progressExpr: "progress",
                            titleExpr: "title",
                            colorExpr: "color"
                        },
                        dependencies: {
                            dataSource: null,
                            keyExpr: "id",
                            predecessorIdExpr: "predecessorId",
                            successorIdExpr: "successorId",
                            typeExpr: "type"
                        },
                        resources: {
                            dataSource: null,
                            keyExpr: "id",
                            textExpr: "text",
                            colorExpr: "color"
                        },
                        resourceAssignments: {
                            dataSource: null,
                            keyExpr: "id",
                            taskIdExpr: "taskId",
                            resourceIdExpr: "resourceId"
                        },
                        columns: void 0,
                        taskListWidth: 300,
                        showResources: true,
                        showDependencies: true,
                        taskTitlePosition: "inside",
                        firstDayOfWeek: void 0,
                        selectedRowKey: void 0,
                        onSelectionChanged: null,
                        onTaskClick: null,
                        onTaskDblClick: null,
                        onTaskInserting: null,
                        onTaskInserted: null,
                        onTaskDeleting: null,
                        onTaskDeleted: null,
                        onTaskUpdating: null,
                        onTaskUpdated: null,
                        onTaskMoving: null,
                        onTaskEditDialogShowing: null,
                        onDependencyInserting: null,
                        onDependencyInserted: null,
                        onDependencyDeleting: null,
                        onDependencyDeleted: null,
                        onResourceInserting: null,
                        onResourceInserted: null,
                        onResourceDeleting: null,
                        onResourceDeleted: null,
                        onResourceAssigning: null,
                        onResourceAssigned: null,
                        onResourceUnassigning: null,
                        onResourceUnassigned: null,
                        onCustomCommand: null,
                        onContextMenuPreparing: null,
                        allowSelection: true,
                        showRowLines: true,
                        stripLines: void 0,
                        scaleType: "auto",
                        scaleTypeRange: {
                            min: "minutes",
                            max: "years"
                        },
                        editing: {
                            enabled: false,
                            allowTaskAdding: true,
                            allowTaskDeleting: true,
                            allowTaskUpdating: true,
                            allowDependencyAdding: true,
                            allowDependencyDeleting: true,
                            allowResourceAdding: true,
                            allowResourceDeleting: true,
                            allowResourceUpdating: true,
                            allowTaskResourceUpdating: true
                        },
                        validation: {
                            validateDependencies: false,
                            autoUpdateParentTasks: false,
                            enablePredecessorGap: false
                        },
                        toolbar: null,
                        contextMenu: {
                            enabled: true,
                            items: void 0
                        },
                        taskTooltipContentTemplate: null,
                        taskProgressTooltipContentTemplate: null,
                        taskTimeTooltipContentTemplate: null,
                        taskContentTemplate: null,
                        rootValue: 0,
                        sorting: {
                            ascendingText: _message.default.format("dxGantt-sortingAscendingText"),
                            descendingText: _message.default.format("dxGantt-sortingDescendingText"),
                            clearText: _message.default.format("dxGantt-sortingClearText"),
                            mode: "single",
                            showSortIndexes: false
                        },
                        filterRow: void 0,
                        headerFilter: void 0,
                        rtlEnabled: false
                    })
                };
                exports.GanttHelper = GanttHelper
            },
        85183:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.js ***!
              \******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _data = __webpack_require__( /*! ../../core/utils/data */ 47617);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _uiGantt = __webpack_require__( /*! ./ui.gantt.model_changes_listener */ 48604);
                var _uiGanttData = _interopRequireDefault(__webpack_require__( /*! ./ui.gantt.data.option */ 52609));
                var _load_panel = _interopRequireDefault(__webpack_require__( /*! ../load_panel */ 97218));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _splitter = _interopRequireDefault(__webpack_require__( /*! ../splitter */ 93288));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _uiGantt2 = __webpack_require__( /*! ./ui.gantt.actions */ 87110);
                var _uiGantt3 = __webpack_require__( /*! ./ui.gantt.custom_fields */ 74320);
                var _uiGantt4 = __webpack_require__( /*! ./ui.gantt.dialogs */ 10612);
                var _uiGantt5 = __webpack_require__( /*! ./ui.gantt.export_helper */ 83553);
                var _uiGantt6 = __webpack_require__( /*! ./ui.gantt.helper */ 30631);
                var _uiGantt7 = __webpack_require__( /*! ./ui.gantt.mapping_helper */ 32679);
                var _uiGantt8 = __webpack_require__( /*! ./ui.gantt.size_helper */ 28990);
                var _uiGantt9 = __webpack_require__( /*! ./ui.gantt.templates */ 23638);
                var _uiGantt10 = __webpack_require__( /*! ./ui.gantt.bars */ 73630);
                var _uiGantt11 = __webpack_require__( /*! ./ui.gantt.treelist */ 87367);
                var _uiGantt12 = __webpack_require__( /*! ./ui.gantt.view */ 21347);
                var _uiGantt13 = __webpack_require__( /*! ./ui.gantt.data_changes_processing_helper */ 28512);
                var _uiGrid_core = _interopRequireDefault(__webpack_require__( /*! ../grid_core/ui.grid_core.utils */ 13615));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const window = (0, _window.getWindow)();
                let Gantt = function(_Widget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(Gantt, _Widget);

                    function Gantt() {
                        return _Widget.apply(this, arguments) || this
                    }
                    var _proto = Gantt.prototype;
                    _proto._init = function() {
                        _Widget.prototype._init.call(this);
                        _uiGrid_core.default.logHeaderFilterDeprecatedWarningIfNeed(this);
                        this._initGantt();
                        this._isGanttRendered = false;
                        this._initHelpers()
                    };
                    _proto._initGantt = function() {
                        this._refreshDataSources()
                    };
                    _proto._initMarkup = function() {
                        _Widget.prototype._initMarkup.call(this);
                        this.$element().addClass("dx-gantt");
                        this._$toolbarWrapper = (0, _renderer.default)("<div>").addClass("dx-gantt-toolbar-wrapper").appendTo(this.$element());
                        this._$toolbar = (0, _renderer.default)("<div>").appendTo(this._$toolbarWrapper);
                        this._$mainWrapper = (0, _renderer.default)("<div>").addClass("dx-gantt-main-wrapper").appendTo(this.$element());
                        this._$treeListWrapper = (0, _renderer.default)("<div>").addClass("dx-gantt-treelist-wrapper").appendTo(this._$mainWrapper);
                        this._$treeList = (0, _renderer.default)("<div>").appendTo(this._$treeListWrapper);
                        this._$splitter = (0, _renderer.default)("<div>").appendTo(this._$mainWrapper);
                        this._$ganttView = (0, _renderer.default)("<div>").addClass("dx-gantt-view").appendTo(this._$mainWrapper);
                        this._$dialog = (0, _renderer.default)("<div>").appendTo(this.$element());
                        this._$loadPanel = (0, _renderer.default)("<div>").appendTo(this.$element());
                        this._$contextMenu = (0, _renderer.default)("<div>").appendTo(this.$element())
                    };
                    _proto._clean = function() {
                        var _this$_ganttView;
                        null === (_this$_ganttView = this._ganttView) || void 0 === _this$_ganttView ? void 0 : _this$_ganttView._ganttViewCore.cleanMarkup();
                        delete this._ganttView;
                        delete this._dialogInstance;
                        delete this._loadPanel;
                        delete this._exportHelper;
                        _Widget.prototype._clean.call(this)
                    };
                    _proto._refresh = function() {
                        this._isGanttRendered = false;
                        this._contentReadyRaised = false;
                        _Widget.prototype._refresh.call(this)
                    };
                    _proto._fireContentReadyAction = function() {
                        if (!this._contentReadyRaised) {
                            _Widget.prototype._fireContentReadyAction.call(this)
                        }
                        this._contentReadyRaised = true
                    };
                    _proto._dimensionChanged = function() {
                        var _this$_ganttView2;
                        null === (_this$_ganttView2 = this._ganttView) || void 0 === _this$_ganttView2 ? void 0 : _this$_ganttView2._onDimensionChanged()
                    };
                    _proto._visibilityChanged = function(visible) {
                        if (visible) {
                            this._refreshGantt()
                        }
                    };
                    _proto._refreshGantt = function() {
                        this._refreshDataSources();
                        this._refresh()
                    };
                    _proto._refreshDataSources = function() {
                        this._refreshDataSource("tasks");
                        this._refreshDataSource("dependencies");
                        this._refreshDataSource("resources");
                        this._refreshDataSource("resourceAssignments")
                    };
                    _proto._renderContent = function() {
                        this._isMainElementVisible = this.$element().is(":visible");
                        if (this._isMainElementVisible && !this._isGanttRendered) {
                            this._isGanttRendered = true;
                            this._renderBars();
                            this._renderTreeList();
                            this._renderSplitter()
                        }
                    };
                    _proto._renderTreeList = function() {
                        this._ganttTreeList = new _uiGantt11.GanttTreeList(this);
                        this._treeList = this._ganttTreeList.getTreeList();
                        this._ganttTreeList.onAfterTreeListCreate()
                    };
                    _proto._renderSplitter = function() {
                        this._splitter = this._createComponent(this._$splitter, _splitter.default, {
                            container: this.$element(),
                            leftElement: this._$treeListWrapper,
                            rightElement: this._$ganttView,
                            onApplyPanelSize: e => {
                                this._sizeHelper.onApplyPanelSize(e)
                            }
                        });
                        this._splitter.option("initialLeftPanelWidth", this.option("taskListWidth"))
                    };
                    _proto._renderBars = function() {
                        this._bars = [];
                        this._toolbar = new _uiGantt10.GanttToolbar(this._$toolbar, this);
                        this._updateToolbarContent();
                        this._bars.push(this._toolbar);
                        this._contextMenuBar = new _uiGantt10.GanttContextMenuBar(this._$contextMenu, this);
                        this._updateContextMenu();
                        this._bars.push(this._contextMenuBar)
                    };
                    _proto._initHelpers = function() {
                        this._mappingHelper = new _uiGantt7.GanttMappingHelper(this);
                        this._customFieldsManager = new _uiGantt3.GanttCustomFieldsManager(this);
                        this._actionsManager = new _uiGantt2.GanttActionsManager(this);
                        this._ganttTemplatesManager = new _uiGantt9.GanttTemplatesManager(this);
                        this._sizeHelper = new _uiGantt8.GanttSizeHelper(this);
                        this._dataProcessingHelper = new _uiGantt13.GanttDataChangesProcessingHelper
                    };
                    _proto._initGanttView = function() {
                        if (this._ganttView) {
                            return
                        }
                        this._ganttView = this._createComponent(this._$ganttView, _uiGantt12.GanttView, {
                            width: "100%",
                            height: this._ganttTreeList.getOffsetHeight(),
                            rowHeight: this._ganttTreeList.getRowHeight(),
                            headerHeight: this._ganttTreeList.getHeaderHeight(),
                            tasks: this._tasks,
                            dependencies: this._dependencies,
                            resources: this._resources,
                            resourceAssignments: this._resourceAssignments,
                            allowSelection: this.option("allowSelection"),
                            selectedRowKey: this.option("selectedRowKey"),
                            showResources: this.option("showResources"),
                            showDependencies: this.option("showDependencies"),
                            startDateRange: this.option("startDateRange"),
                            endDateRange: this.option("endDateRange"),
                            taskTitlePosition: this.option("taskTitlePosition"),
                            firstDayOfWeek: this.option("firstDayOfWeek"),
                            showRowLines: this.option("showRowLines"),
                            scaleType: this.option("scaleType"),
                            scaleTypeRange: this.option("scaleTypeRange"),
                            editing: this.option("editing"),
                            validation: this.option("validation"),
                            stripLines: this.option("stripLines"),
                            bars: this._bars,
                            mainElement: this.$element(),
                            onSelectionChanged: e => {
                                this._ganttTreeList.selectRows(_uiGantt6.GanttHelper.getArrayFromOneElement(e.id))
                            },
                            onViewTypeChanged: e => {
                                this._onViewTypeChanged(e.type)
                            },
                            onScroll: e => {
                                this._ganttTreeList.scrollBy(e.scrollTop)
                            },
                            onDialogShowing: this._showDialog.bind(this),
                            onPopupMenuShowing: this._showPopupMenu.bind(this),
                            onPopupMenuHiding: this._hidePopupMenu.bind(this),
                            onExpandAll: this._expandAll.bind(this),
                            onCollapseAll: this._collapseAll.bind(this),
                            modelChangesListener: _uiGantt.ModelChangesListener.create(this),
                            exportHelper: this._getExportHelper(),
                            taskTooltipContentTemplate: this._ganttTemplatesManager.getTaskTooltipContentTemplateFunc(this.option("taskTooltipContentTemplate")),
                            taskProgressTooltipContentTemplate: this._ganttTemplatesManager.getTaskProgressTooltipContentTemplateFunc(this.option("taskProgressTooltipContentTemplate")),
                            taskTimeTooltipContentTemplate: this._ganttTemplatesManager.getTaskTimeTooltipContentTemplateFunc(this.option("taskTimeTooltipContentTemplate")),
                            taskContentTemplate: this._ganttTemplatesManager.getTaskContentTemplateFunc(this.option("taskContentTemplate")),
                            onTaskClick: e => {
                                this._ganttTreeList.onRowClick(e)
                            },
                            onTaskDblClick: e => {
                                this._ganttTreeList.onRowDblClick(e)
                            },
                            onAdjustControl: () => {
                                this._sizeHelper.onAdjustControl()
                            },
                            onContentReady: this._onGanttViewContentReady.bind(this)
                        })
                    };
                    _proto._onGanttViewContentReady = function(e) {
                        if (!this._isParentAutoUpdateMode()) {
                            this._fireContentReadyAction()
                        }
                    };
                    _proto._isParentAutoUpdateMode = function() {
                        return this.option("validation.autoUpdateParentTasks")
                    };
                    _proto._onTreeListContentReady = function(e) {
                        if (this._isParentAutoUpdateMode() && this._treeListParentRecalculatedDataUpdating) {
                            this._fireContentReadyAction()
                        }
                        delete this._treeListParentRecalculatedDataUpdating;
                        this._dataProcessingHelper.onTreeListReady()
                    };
                    _proto._onViewTypeChanged = function(type) {
                        this.option("scaleType", this._actionsManager._getScaleType(type))
                    };
                    _proto._refreshDataSource = function(name) {
                        let dataOption = this["_".concat(name, "Option")];
                        if (dataOption) {
                            dataOption.dispose();
                            delete this["_".concat(name, "Option")];
                            delete this["_".concat(name)]
                        }
                        dataOption = new _uiGanttData.default(name, this._getLoadPanel.bind(this), (name, data) => {
                            this._dataSourceChanged(name, data)
                        });
                        dataOption.option("dataSource", this._getSpecificDataSourceOption(name));
                        dataOption._refreshDataSource();
                        this["_".concat(name, "Option")] = dataOption
                    };
                    _proto._getSpecificDataSourceOption = function(name) {
                        const dataSource = this.option("".concat(name, ".dataSource"));
                        if (!dataSource || Array.isArray(dataSource)) {
                            return {
                                store: {
                                    type: "array",
                                    data: null !== dataSource && void 0 !== dataSource ? dataSource : [],
                                    key: this.option("".concat(name, ".keyExpr"))
                                }
                            }
                        }
                        return dataSource
                    };
                    _proto._dataSourceChanged = function(dataSourceName, data) {
                        const getters = _uiGantt6.GanttHelper.compileGettersByOption(this.option(dataSourceName));
                        const validatedData = this._validateSourceData(dataSourceName, data);
                        const mappedData = validatedData.map(_uiGantt6.GanttHelper.prepareMapHandler(getters));
                        this["_".concat(dataSourceName)] = mappedData;
                        this._setGanttViewOption(dataSourceName, mappedData);
                        if ("tasks" === dataSourceName) {
                            var _this$_ganttTreeList, _this$_ganttTreeList2, _this$_ganttTreeList3;
                            this._tasksRaw = validatedData;
                            const forceUpdate = !(null !== (_this$_ganttTreeList = this._ganttTreeList) && void 0 !== _this$_ganttTreeList && _this$_ganttTreeList.getDataSource()) && !this._ganttView;
                            null === (_this$_ganttTreeList2 = this._ganttTreeList) || void 0 === _this$_ganttTreeList2 ? void 0 : _this$_ganttTreeList2.saveExpandedKeys();
                            null === (_this$_ganttTreeList3 = this._ganttTreeList) || void 0 === _this$_ganttTreeList3 ? void 0 : _this$_ganttTreeList3.updateDataSource(validatedData, forceUpdate)
                        }
                    };
                    _proto._validateSourceData = function(dataSourceName, data) {
                        return data && "tasks" === dataSourceName ? this._validateTaskData(data) : data
                    };
                    _proto._validateTaskData = function(data) {
                        var _this$option;
                        const keyGetter = (0, _data.compileGetter)(this.option("".concat("tasks", ".keyExpr")));
                        const parentIdGetter = (0, _data.compileGetter)(this.option("".concat("tasks", ".parentIdExpr")));
                        const rootValue = null !== (_this$option = this.option("rootValue")) && void 0 !== _this$option ? _this$option : "dx_dxt_gantt_default_root_value";
                        const validationTree = {};
                        for (let i = 0; i < data.length; i++) {
                            const item = data[i];
                            if (item) {
                                var _validationTree$key;
                                const key = keyGetter(item);
                                const isRootTask = key === rootValue;
                                const treeItem = null !== (_validationTree$key = validationTree[key]) && void 0 !== _validationTree$key ? _validationTree$key : validationTree[key] = {
                                    key: key,
                                    children: []
                                };
                                if (!isRootTask) {
                                    var _parentIdGetter, _validationTree$paren;
                                    const parentId = null !== (_parentIdGetter = parentIdGetter(item)) && void 0 !== _parentIdGetter ? _parentIdGetter : rootValue;
                                    const parentTreeItem = null !== (_validationTree$paren = validationTree[parentId]) && void 0 !== _validationTree$paren ? _validationTree$paren : validationTree[parentId] = {
                                        key: parentId,
                                        children: []
                                    };
                                    parentTreeItem.children.push(treeItem);
                                    treeItem.parent = parentTreeItem
                                }
                            }
                        }
                        const validKeys = [rootValue];
                        this._appendChildKeys(validationTree[rootValue], validKeys);
                        return data.filter(item => validKeys.indexOf(keyGetter(item)) > -1)
                    };
                    _proto._appendChildKeys = function(treeItem, keys) {
                        const children = null === treeItem || void 0 === treeItem ? void 0 : treeItem.children;
                        for (let i = 0; i < (null === children || void 0 === children ? void 0 : children.length); i++) {
                            const child = children[i];
                            keys.push(child.key);
                            this._appendChildKeys(child, keys)
                        }
                    };
                    _proto._onRecordInserted = function(optionName, record, callback) {
                        const dataOption = this["_".concat(optionName, "Option")];
                        if (dataOption) {
                            const data = _uiGantt6.GanttHelper.getStoreObject(this.option(optionName), record);
                            const isTaskInsert = "tasks" === optionName;
                            if (isTaskInsert) {
                                this._customFieldsManager.addCustomFieldsDataFromCache("gantt_new_task_key", data)
                            }
                            dataOption.insert(data, response => {
                                const keyGetter = (0, _data.compileGetter)(this.option("".concat(optionName, ".keyExpr")));
                                const insertedId = keyGetter(response);
                                callback(insertedId);
                                this._executeFuncSetters(optionName, record, insertedId);
                                this._dataProcessingHelper.addCompletionAction(() => {
                                    this._actionsManager.raiseInsertedAction(optionName, data, insertedId)
                                }, true, isTaskInsert);
                                this._ganttTreeList.saveExpandedKeys();
                                dataOption._reloadDataSource().done(data => {
                                    if (isTaskInsert) {
                                        this._ganttTreeList.onTaskInserted(insertedId, record.parentId)
                                    }
                                })
                            })
                        }
                    };
                    _proto._onRecordUpdated = function(optionName, key, values) {
                        const dataOption = this["_".concat(optionName, "Option")];
                        const isTaskUpdated = "tasks" === optionName;
                        if (dataOption) {
                            const data = this._mappingHelper.convertCoreToMappedData(optionName, values);
                            const hasCustomFieldsData = isTaskUpdated && this._customFieldsManager.cache.hasData(key);
                            if (hasCustomFieldsData) {
                                this._customFieldsManager.addCustomFieldsDataFromCache(key, data)
                            }
                            dataOption.update(key, data, () => {
                                this._executeFuncSetters(optionName, values, key);
                                this._ganttTreeList.saveExpandedKeys();
                                this._dataProcessingHelper.addCompletionAction(() => {
                                    this._actionsManager.raiseUpdatedAction(optionName, data, key)
                                }, true, isTaskUpdated);
                                dataOption._reloadDataSource()
                            })
                        }
                    };
                    _proto._onRecordRemoved = function(optionName, key, data) {
                        const dataOption = this["_".concat(optionName, "Option")];
                        if (dataOption) {
                            dataOption.remove(key, () => {
                                this._ganttTreeList.saveExpandedKeys();
                                this._dataProcessingHelper.addCompletionAction(() => {
                                    this._actionsManager.raiseDeletedAction(optionName, key, this._mappingHelper.convertCoreToMappedData(optionName, data))
                                }, true, "tasks" === optionName);
                                dataOption._reloadDataSource()
                            })
                        }
                    };
                    _proto._onParentTaskUpdated = function(data) {
                        const mappedData = this.getTaskDataByCoreData(data);
                        this._actionsManager.raiseUpdatedAction("tasks", mappedData, data.id)
                    };
                    _proto._onParentTasksRecalculated = function(data) {
                        if (!this.isSieving) {
                            const setters = _uiGantt6.GanttHelper.compileSettersByOption(this.option("tasks"));
                            const treeDataSource = this._customFieldsManager.appendCustomFields(data.map(_uiGantt6.GanttHelper.prepareSetterMapHandler(setters)));
                            setTimeout(() => {
                                var _this$_ganttTreeList4;
                                this._treeListParentRecalculatedDataUpdating = true;
                                null === (_this$_ganttTreeList4 = this._ganttTreeList) || void 0 === _this$_ganttTreeList4 ? void 0 : _this$_ganttTreeList4.setDataSource(treeDataSource)
                            })
                        }
                        this.isSieving = false
                    };
                    _proto._onGanttViewCoreUpdated = function() {
                        this._dataProcessingHelper.onGanttViewReady()
                    };
                    _proto._executeFuncSetters = function(optionName, coreData, key) {
                        const funcSetters = _uiGantt6.GanttHelper.compileFuncSettersByOption(this.option(optionName));
                        const keysToUpdate = Object.keys(funcSetters).filter(k => (0, _type.isDefined)(coreData[k]));
                        if (keysToUpdate.length > 0) {
                            const dataObject = this._getDataSourceItem(optionName, key);
                            keysToUpdate.forEach(k => {
                                const setter = funcSetters[k];
                                setter(dataObject, coreData[k])
                            })
                        }
                    };
                    _proto._sortAndFilter = function() {
                        var _this$_savedSortFilte, _this$_savedSortFilte2, _this$_savedSortFilte3;
                        const treeList = this._treeList;
                        const columns = treeList.getVisibleColumns();
                        const sortedColumns = columns.filter(c => c.sortIndex > -1);
                        const sortedState = sortedColumns.map(c => ({
                            sortIndex: c.sortIndex,
                            sortOrder: c.sortOrder
                        }));
                        const sortedStateChanged = !this._compareSortedState(null === (_this$_savedSortFilte = this._savedSortFilterState) || void 0 === _this$_savedSortFilte ? void 0 : _this$_savedSortFilte.sort, sortedState);
                        const filterValue = treeList.option("filterValue");
                        const filterChanged = treeList.option("expandNodesOnFiltering") && filterValue !== (null === (_this$_savedSortFilte2 = this._savedSortFilterState) || void 0 === _this$_savedSortFilte2 ? void 0 : _this$_savedSortFilte2.filter);
                        const sieveColumn = sortedColumns[0] || columns.filter(c => {
                            var _c$filterValues;
                            return (0, _type.isDefined)(c.filterValue) || (null === (_c$filterValues = c.filterValues) || void 0 === _c$filterValues ? void 0 : _c$filterValues.length)
                        })[0];
                        const isClearSieving = (null === (_this$_savedSortFilte3 = this._savedSortFilterState) || void 0 === _this$_savedSortFilte3 ? void 0 : _this$_savedSortFilte3.sieveColumn) && !sieveColumn;
                        if (sieveColumn || isClearSieving) {
                            const sieveOptions = sieveColumn && {
                                sievedItems: this._ganttTreeList.getSievedItems(),
                                sieveColumn: sieveColumn,
                                expandTasks: filterChanged || filterValue && sortedStateChanged
                            };
                            this.isSieving = !isClearSieving;
                            this._setGanttViewOption("sieve", sieveOptions)
                        }
                        this._savedSortFilterState = {
                            sort: sortedState,
                            filter: filterValue,
                            sieveColumn: sieveColumn
                        }
                    };
                    _proto._compareSortedState = function(state1, state2) {
                        if (!state1 || !state2 || state1.length !== state2.length) {
                            return false
                        }
                        return state1.every((c, i) => c.sortIndex === state2[i].sortIndex && c.sortOrder === state2[i].sortOrder)
                    };
                    _proto._getToolbarItems = function() {
                        const items = this.option("toolbar.items");
                        return items ? items : []
                    };
                    _proto._updateToolbarContent = function() {
                        const items = this._getToolbarItems();
                        if (items.length) {
                            this._$toolbarWrapper.show()
                        } else {
                            this._$toolbarWrapper.hide()
                        }
                        this._toolbar && this._toolbar.createItems(items);
                        this._updateBarItemsState()
                    };
                    _proto._updateContextMenu = function() {
                        const contextMenuOptions = this.option("contextMenu");
                        if (contextMenuOptions.enabled && this._contextMenuBar) {
                            this._contextMenuBar.createItems(contextMenuOptions.items);
                            this._updateBarItemsState()
                        }
                    };
                    _proto._updateBarItemsState = function() {
                        this._ganttView && this._ganttView.updateBarItemsState()
                    };
                    _proto._showDialog = function(e) {
                        if (!this._dialogInstance) {
                            this._dialogInstance = new _uiGantt4.GanttDialog(this, this._$dialog)
                        }
                        this._dialogInstance.show(e.name, e.parameters, e.callback, e.afterClosing, this.option("editing"))
                    };
                    _proto._showPopupMenu = function(info) {
                        if (this.option("contextMenu.enabled")) {
                            this._ganttView.getBarManager().updateContextMenu();
                            const args = {
                                cancel: false,
                                event: info.event,
                                targetType: info.type,
                                targetKey: info.key,
                                items: (0, _extend.extend)(true, [], this._contextMenuBar._items),
                                data: "task" === info.type ? this.getTaskData(info.key) : this.getDependencyData(info.key)
                            };
                            this._actionsManager.raiseContextMenuPreparing(args);
                            if (!args.cancel) {
                                this._contextMenuBar.show(info.position, args.items)
                            }
                        }
                    };
                    _proto._hidePopupMenu = function() {
                        this._contextMenuBar.hide()
                    };
                    _proto._getLoadPanel = function() {
                        if (!this._loadPanel) {
                            this._loadPanel = this._createComponent(this._$loadPanel, _load_panel.default, {
                                position: {
                                    of: this.$element()
                                }
                            })
                        }
                        return this._loadPanel
                    };
                    _proto._getTaskKeyGetter = function() {
                        return this._getDataSourceItemKeyGetter("tasks")
                    };
                    _proto._findTaskByKey = function(key) {
                        return this._getDataSourceItem("tasks", key)
                    };
                    _proto._getDataSourceItem = function(dataOptionName, key) {
                        const dataOption = this["_".concat(dataOptionName, "Option")];
                        const keyGetter = this._getDataSourceItemKeyGetter(dataOptionName);
                        const items = null === dataOption || void 0 === dataOption ? void 0 : dataOption._getItems();
                        return items.find(t => keyGetter(t) === key)
                    };
                    _proto._getDataSourceItemKeyGetter = function(dataOptionName) {
                        return (0, _data.compileGetter)(this.option("".concat(dataOptionName, ".keyExpr")))
                    };
                    _proto._setGanttViewOption = function(optionName, value) {
                        this._ganttView && this._ganttView.option(optionName, value)
                    };
                    _proto._getGanttViewOption = function(optionName, value) {
                        var _this$_ganttView3;
                        return null === (_this$_ganttView3 = this._ganttView) || void 0 === _this$_ganttView3 ? void 0 : _this$_ganttView3.option(optionName)
                    };
                    _proto._getExportHelper = function() {
                        var _this$_exportHelper;
                        null !== (_this$_exportHelper = this._exportHelper) && void 0 !== _this$_exportHelper ? _this$_exportHelper : this._exportHelper = new _uiGantt5.GanttExportHelper(this);
                        return this._exportHelper
                    };
                    _proto._executeCoreCommand = function(id) {
                        this._ganttView.executeCoreCommand(id)
                    };
                    _proto._expandAll = function() {
                        this._changeExpandAll(true)
                    };
                    _proto._collapseAll = function() {
                        this._changeExpandAll(false)
                    };
                    _proto._onTreeListRowExpandChanged = function(e, expanded) {
                        if (!this._lockRowExpandEvent) {
                            this._ganttView.changeTaskExpanded(e.key, expanded);
                            this._sizeHelper.adjustHeight()
                        }
                    };
                    _proto._changeExpandAll = function(expanded, level, rowKey) {
                        var _promise;
                        const allExpandableNodes = [];
                        const nodesToExpand = [];
                        this._treeList.forEachNode(node => {
                            var _node$children;
                            if (null !== (_node$children = node.children) && void 0 !== _node$children && _node$children.length) {
                                allExpandableNodes.push(node)
                            }
                        });
                        if (rowKey) {
                            const node = this._treeList.getNodeByKey(rowKey);
                            _uiGantt6.GanttHelper.getAllParentNodesKeys(node, nodesToExpand)
                        }
                        let promise;
                        this._lockRowExpandEvent = allExpandableNodes.length > 0;
                        const state = allExpandableNodes.reduce((previous, node, index) => {
                            if (rowKey) {
                                expanded = nodesToExpand.includes(node.key)
                            } else if (level) {
                                expanded = node.level < level
                            }
                            previous[node.key] = expanded;
                            const action = expanded ? this._treeList.expandRow : this._treeList.collapseRow;
                            const isLast = index === allExpandableNodes.length - 1;
                            if (isLast) {
                                promise = action(node.key)
                            } else {
                                action(node.key)
                            }
                            return previous
                        }, {});
                        null === (_promise = promise) || void 0 === _promise ? void 0 : _promise.then(() => {
                            this._ganttView.applyTasksExpandedState(state);
                            this._sizeHelper.adjustHeight();
                            delete this._lockRowExpandEvent
                        })
                    };
                    _proto.getTaskResources = function(key) {
                        if (!(0, _type.isDefined)(key)) {
                            return null
                        }
                        const coreData = this._ganttView._ganttViewCore.getTaskResources(key);
                        return coreData.map(r => this._mappingHelper.convertCoreToMappedData("resources", r))
                    };
                    _proto.getVisibleTaskKeys = function() {
                        return this._ganttView._ganttViewCore.getVisibleTaskKeys()
                    };
                    _proto.getVisibleDependencyKeys = function() {
                        return this._ganttView._ganttViewCore.getVisibleDependencyKeys()
                    };
                    _proto.getVisibleResourceKeys = function() {
                        return this._ganttView._ganttViewCore.getVisibleResourceKeys()
                    };
                    _proto.getVisibleResourceAssignmentKeys = function() {
                        return this._ganttView._ganttViewCore.getVisibleResourceAssignmentKeys()
                    };
                    _proto.getTaskData = function(key) {
                        if (!(0, _type.isDefined)(key)) {
                            return null
                        }
                        const coreData = this._ganttView._ganttViewCore.getTaskData(key);
                        const mappedData = this.getTaskDataByCoreData(coreData);
                        return mappedData
                    };
                    _proto.getTaskDataByCoreData = function(coreData) {
                        const mappedData = coreData ? this._mappingHelper.convertCoreToMappedData("tasks", coreData) : null;
                        this._customFieldsManager.addCustomFieldsData(coreData.id, mappedData);
                        return mappedData
                    };
                    _proto.insertTask = function(data) {
                        this._customFieldsManager.saveCustomFieldsDataToCache("gantt_new_task_key", data);
                        this._ganttView._ganttViewCore.insertTask(this._mappingHelper.convertMappedToCoreData("tasks", data))
                    };
                    _proto.deleteTask = function(key) {
                        this._ganttView._ganttViewCore.deleteTask(key)
                    };
                    _proto.updateTask = function(key, data) {
                        const coreTaskData = this._mappingHelper.convertMappedToCoreData("tasks", data);
                        const isCustomFieldsUpdateOnly = !Object.keys(coreTaskData).length;
                        this._customFieldsManager.saveCustomFieldsDataToCache(key, data, true, isCustomFieldsUpdateOnly);
                        if (isCustomFieldsUpdateOnly) {
                            const customFieldsData = this._customFieldsManager._getCustomFieldsData(data);
                            if (Object.keys(customFieldsData).length > 0) {
                                this._actionsManager.raiseUpdatingAction("tasks", {
                                    cancel: false,
                                    key: key,
                                    newValues: {}
                                })
                            }
                        } else {
                            this._ganttView._ganttViewCore.updateTask(key, coreTaskData)
                        }
                    };
                    _proto.getDependencyData = function(key) {
                        if (!(0, _type.isDefined)(key)) {
                            return null
                        }
                        const coreData = this._ganttView._ganttViewCore.getDependencyData(key);
                        return coreData ? this._mappingHelper.convertCoreToMappedData("dependencies", coreData) : null
                    };
                    _proto.insertDependency = function(data) {
                        this._ganttView._ganttViewCore.insertDependency(this._mappingHelper.convertMappedToCoreData("dependencies", data))
                    };
                    _proto.deleteDependency = function(key) {
                        this._ganttView._ganttViewCore.deleteDependency(key)
                    };
                    _proto.getResourceData = function(key) {
                        const coreData = this._ganttView._ganttViewCore.getResourceData(key);
                        return coreData ? this._mappingHelper.convertCoreToMappedData("resources", coreData) : null
                    };
                    _proto.deleteResource = function(key) {
                        this._ganttView._ganttViewCore.deleteResource(key)
                    };
                    _proto.insertResource = function(data, taskKeys) {
                        this._ganttView._ganttViewCore.insertResource(this._mappingHelper.convertMappedToCoreData("resources", data), taskKeys)
                    };
                    _proto.getResourceAssignmentData = function(key) {
                        const coreData = this._ganttView._ganttViewCore.getResourceAssignmentData(key);
                        return coreData ? this._mappingHelper.convertCoreToMappedData("resourceAssignments", coreData) : null
                    };
                    _proto.assignResourceToTask = function(resourceKey, taskKey) {
                        this._ganttView._ganttViewCore.assignResourceToTask(resourceKey, taskKey)
                    };
                    _proto.unassignResourceFromTask = function(resourceKey, taskKey) {
                        this._ganttView._ganttViewCore.unassignResourceFromTask(resourceKey, taskKey)
                    };
                    _proto.unassignAllResourcesFromTask = function(taskKey) {
                        this._ganttView._ganttViewCore.unassignAllResourcesFromTask(taskKey)
                    };
                    _proto.updateDimensions = function() {
                        this._sizeHelper.onAdjustControl()
                    };
                    _proto.scrollToDate = function(date) {
                        this._ganttView._ganttViewCore.scrollToDate(date)
                    };
                    _proto.showResourceManagerDialog = function() {
                        this._ganttView._ganttViewCore.showResourcesDialog()
                    };
                    _proto.showTaskDetailsDialog = function(taskKey) {
                        this._ganttView._ganttViewCore.showTaskDetailsDialog(taskKey)
                    };
                    _proto.exportToPdf = function(options) {
                        return this._exportToPdf(options)
                    };
                    _proto._exportToPdf = function(options) {
                        var _fullOptions$pdfDocum, _fullOptions$docCreat, _window$jspdf$jsPDF, _window$jspdf, _fullOptions$format;
                        this._exportHelper.reset();
                        const fullOptions = (0, _extend.extend)({}, options);
                        if (fullOptions.createDocumentMethod) {
                            fullOptions.docCreateMethod = fullOptions.createDocumentMethod
                        }
                        null !== (_fullOptions$pdfDocum = fullOptions.pdfDocument) && void 0 !== _fullOptions$pdfDocum ? _fullOptions$pdfDocum : fullOptions.pdfDocument = fullOptions.jsPDFDocument;
                        null !== (_fullOptions$docCreat = fullOptions.docCreateMethod) && void 0 !== _fullOptions$docCreat ? _fullOptions$docCreat : fullOptions.docCreateMethod = null !== (_window$jspdf$jsPDF = null === (_window$jspdf = window.jspdf) || void 0 === _window$jspdf ? void 0 : _window$jspdf.jsPDF) && void 0 !== _window$jspdf$jsPDF ? _window$jspdf$jsPDF : window.jsPDF;
                        null !== (_fullOptions$format = fullOptions.format) && void 0 !== _fullOptions$format ? _fullOptions$format : fullOptions.format = "a4";
                        return new Promise(resolve => {
                            var _this$_ganttView4;
                            const doc = null === (_this$_ganttView4 = this._ganttView) || void 0 === _this$_ganttView4 ? void 0 : _this$_ganttView4._ganttViewCore.exportToPdf(fullOptions);
                            resolve(doc)
                        })
                    };
                    _proto.refresh = function() {
                        return new Promise((resolve, reject) => {
                            try {
                                this._refreshGantt();
                                resolve()
                            } catch (e) {
                                reject(e.message)
                            }
                        })
                    };
                    _proto.expandAll = function() {
                        this._expandAll()
                    };
                    _proto.collapseAll = function() {
                        this._collapseAll()
                    };
                    _proto.expandAllToLevel = function(level) {
                        this._changeExpandAll(false, level)
                    };
                    _proto.expandToTask = function(key) {
                        var _node$parent;
                        const node = this._treeList.getNodeByKey(key);
                        this._changeExpandAll(false, 0, null === node || void 0 === node ? void 0 : null === (_node$parent = node.parent) || void 0 === _node$parent ? void 0 : _node$parent.key)
                    };
                    _proto.collapseTask = function(key) {
                        this._treeList.collapseRow(key)
                    };
                    _proto.expandTask = function(key) {
                        this._treeList.expandRow(key)
                    };
                    _proto.showResources = function(value) {
                        this.option("showResources", value)
                    };
                    _proto.showDependencies = function(value) {
                        this.option("showDependencies", value)
                    };
                    _proto.zoomIn = function() {
                        this._ganttView._ganttViewCore.zoomIn()
                    };
                    _proto.zoomOut = function() {
                        this._ganttView._ganttViewCore.zoomOut()
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_Widget.prototype._getDefaultOptions.call(this), _uiGantt6.GanttHelper.getDefaultOptions())
                    };
                    _proto._optionChanged = function(args) {
                        var _this$_ganttTreeList5, _this$_sizeHelper, _this$_ganttTreeList6, _this$_actionsManager, _this$_actionsManager2, _this$_actionsManager3, _this$_actionsManager4, _this$_actionsManager5, _this$_actionsManager6, _this$_actionsManager7, _this$_actionsManager8, _this$_actionsManager9, _this$_actionsManager10, _this$_actionsManager11, _this$_actionsManager12, _this$_actionsManager13, _this$_actionsManager14, _this$_actionsManager15, _this$_actionsManager16, _this$_actionsManager17, _this$_actionsManager18, _this$_actionsManager19, _this$_actionsManager20, _this$_actionsManager21, _this$_actionsManager22, _this$_actionsManager23, _this$_actionsManager24, _this$_actionsManager25, _this$_actionsManager26, _this$_actionsManager27, _this$_ganttTreeList7, _this$_ganttTreeList8, _this$_ganttTemplates, _this$_ganttTemplates2, _this$_ganttTemplates3, _this$_ganttTemplates4, _this$_ganttTreeList9, _this$_sizeHelper2, _this$_sizeHelper3, _this$_ganttTreeList10, _this$_ganttTreeList11, _this$_ganttTreeList12;
                        switch (args.name) {
                            case "tasks":
                                this._refreshDataSource("tasks");
                                break;
                            case "dependencies":
                                this._refreshDataSource("dependencies");
                                break;
                            case "resources":
                                this._refreshDataSource("resources");
                                break;
                            case "resourceAssignments":
                                this._refreshDataSource("resourceAssignments");
                                break;
                            case "columns":
                                null === (_this$_ganttTreeList5 = this._ganttTreeList) || void 0 === _this$_ganttTreeList5 ? void 0 : _this$_ganttTreeList5.setOption("columns", this._ganttTreeList.getColumns());
                                break;
                            case "taskListWidth":
                                null === (_this$_sizeHelper = this._sizeHelper) || void 0 === _this$_sizeHelper ? void 0 : _this$_sizeHelper.setInnerElementsWidth();
                                break;
                            case "showResources":
                                this._setGanttViewOption("showResources", args.value);
                                break;
                            case "showDependencies":
                                this._setGanttViewOption("showDependencies", args.value);
                                break;
                            case "taskTitlePosition":
                                this._setGanttViewOption("taskTitlePosition", args.value);
                                break;
                            case "firstDayOfWeek":
                                this._setGanttViewOption("firstDayOfWeek", args.value);
                                break;
                            case "startDateRange":
                                this._setGanttViewOption("startDateRange", args.value);
                                break;
                            case "endDateRange":
                                this._setGanttViewOption("endDateRange", args.value);
                                break;
                            case "selectedRowKey":
                                null === (_this$_ganttTreeList6 = this._ganttTreeList) || void 0 === _this$_ganttTreeList6 ? void 0 : _this$_ganttTreeList6.selectRows(_uiGantt6.GanttHelper.getArrayFromOneElement(args.value));
                                break;
                            case "onSelectionChanged":
                                null === (_this$_actionsManager = this._actionsManager) || void 0 === _this$_actionsManager ? void 0 : _this$_actionsManager.createSelectionChangedAction();
                                break;
                            case "onTaskClick":
                                null === (_this$_actionsManager2 = this._actionsManager) || void 0 === _this$_actionsManager2 ? void 0 : _this$_actionsManager2.createTaskClickAction();
                                break;
                            case "onTaskDblClick":
                                null === (_this$_actionsManager3 = this._actionsManager) || void 0 === _this$_actionsManager3 ? void 0 : _this$_actionsManager3.createTaskDblClickAction();
                                break;
                            case "onTaskInserting":
                                null === (_this$_actionsManager4 = this._actionsManager) || void 0 === _this$_actionsManager4 ? void 0 : _this$_actionsManager4.createTaskInsertingAction();
                                break;
                            case "onTaskInserted":
                                null === (_this$_actionsManager5 = this._actionsManager) || void 0 === _this$_actionsManager5 ? void 0 : _this$_actionsManager5.createTaskInsertedAction();
                                break;
                            case "onTaskDeleting":
                                null === (_this$_actionsManager6 = this._actionsManager) || void 0 === _this$_actionsManager6 ? void 0 : _this$_actionsManager6.createTaskDeletingAction();
                                break;
                            case "onTaskDeleted":
                                null === (_this$_actionsManager7 = this._actionsManager) || void 0 === _this$_actionsManager7 ? void 0 : _this$_actionsManager7.createTaskDeletedAction();
                                break;
                            case "onTaskUpdating":
                                null === (_this$_actionsManager8 = this._actionsManager) || void 0 === _this$_actionsManager8 ? void 0 : _this$_actionsManager8.createTaskUpdatingAction();
                                break;
                            case "onTaskUpdated":
                                null === (_this$_actionsManager9 = this._actionsManager) || void 0 === _this$_actionsManager9 ? void 0 : _this$_actionsManager9.createTaskUpdatedAction();
                                break;
                            case "onTaskMoving":
                                null === (_this$_actionsManager10 = this._actionsManager) || void 0 === _this$_actionsManager10 ? void 0 : _this$_actionsManager10.createTaskMovingAction();
                                break;
                            case "onTaskEditDialogShowing":
                                null === (_this$_actionsManager11 = this._actionsManager) || void 0 === _this$_actionsManager11 ? void 0 : _this$_actionsManager11.createTaskEditDialogShowingAction();
                                break;
                            case "onResourceManagerDialogShowing":
                                null === (_this$_actionsManager12 = this._actionsManager) || void 0 === _this$_actionsManager12 ? void 0 : _this$_actionsManager12.createResourceManagerDialogShowingAction();
                                break;
                            case "onDependencyInserting":
                                null === (_this$_actionsManager13 = this._actionsManager) || void 0 === _this$_actionsManager13 ? void 0 : _this$_actionsManager13.createDependencyInsertingAction();
                                break;
                            case "onDependencyInserted":
                                null === (_this$_actionsManager14 = this._actionsManager) || void 0 === _this$_actionsManager14 ? void 0 : _this$_actionsManager14.createDependencyInsertedAction();
                                break;
                            case "onDependencyDeleting":
                                null === (_this$_actionsManager15 = this._actionsManager) || void 0 === _this$_actionsManager15 ? void 0 : _this$_actionsManager15.createDependencyDeletingAction();
                                break;
                            case "onDependencyDeleted":
                                null === (_this$_actionsManager16 = this._actionsManager) || void 0 === _this$_actionsManager16 ? void 0 : _this$_actionsManager16.createDependencyDeletedAction();
                                break;
                            case "onResourceInserting":
                                null === (_this$_actionsManager17 = this._actionsManager) || void 0 === _this$_actionsManager17 ? void 0 : _this$_actionsManager17.createResourceInsertingAction();
                                break;
                            case "onResourceInserted":
                                null === (_this$_actionsManager18 = this._actionsManager) || void 0 === _this$_actionsManager18 ? void 0 : _this$_actionsManager18.createResourceInsertedAction();
                                break;
                            case "onResourceDeleting":
                                null === (_this$_actionsManager19 = this._actionsManager) || void 0 === _this$_actionsManager19 ? void 0 : _this$_actionsManager19.createResourceDeletingAction();
                                break;
                            case "onResourceDeleted":
                                null === (_this$_actionsManager20 = this._actionsManager) || void 0 === _this$_actionsManager20 ? void 0 : _this$_actionsManager20.createResourceDeletedAction();
                                break;
                            case "onResourceAssigning":
                                null === (_this$_actionsManager21 = this._actionsManager) || void 0 === _this$_actionsManager21 ? void 0 : _this$_actionsManager21.createResourceAssigningAction();
                                break;
                            case "onResourceAssigned":
                                null === (_this$_actionsManager22 = this._actionsManager) || void 0 === _this$_actionsManager22 ? void 0 : _this$_actionsManager22.createResourceAssignedAction();
                                break;
                            case "onResourceUnassigning":
                                null === (_this$_actionsManager23 = this._actionsManager) || void 0 === _this$_actionsManager23 ? void 0 : _this$_actionsManager23.createResourceUnassigningAction();
                                break;
                            case "onResourceUnassigned":
                                null === (_this$_actionsManager24 = this._actionsManager) || void 0 === _this$_actionsManager24 ? void 0 : _this$_actionsManager24.createResourceUnassignedAction();
                                break;
                            case "onCustomCommand":
                                null === (_this$_actionsManager25 = this._actionsManager) || void 0 === _this$_actionsManager25 ? void 0 : _this$_actionsManager25.createCustomCommandAction();
                                break;
                            case "onContextMenuPreparing":
                                null === (_this$_actionsManager26 = this._actionsManager) || void 0 === _this$_actionsManager26 ? void 0 : _this$_actionsManager26.createContextMenuPreparingAction();
                                break;
                            case "onScaleCellPrepared":
                                null === (_this$_actionsManager27 = this._actionsManager) || void 0 === _this$_actionsManager27 ? void 0 : _this$_actionsManager27.createScaleCellPreparedAction();
                                break;
                            case "allowSelection":
                                null === (_this$_ganttTreeList7 = this._ganttTreeList) || void 0 === _this$_ganttTreeList7 ? void 0 : _this$_ganttTreeList7.setOption("selection.mode", _uiGantt6.GanttHelper.getSelectionMode(args.value));
                                this._setGanttViewOption("allowSelection", args.value);
                                break;
                            case "showRowLines":
                                null === (_this$_ganttTreeList8 = this._ganttTreeList) || void 0 === _this$_ganttTreeList8 ? void 0 : _this$_ganttTreeList8.setOption("showRowLines", args.value);
                                this._setGanttViewOption("showRowLines", args.value);
                                break;
                            case "stripLines":
                                this._setGanttViewOption("stripLines", args.value);
                                break;
                            case "scaleType":
                                this._setGanttViewOption("scaleType", args.value);
                                break;
                            case "scaleTypeRange":
                                this._setGanttViewOption("scaleTypeRange", this.option(args.name));
                                break;
                            case "editing":
                                this._setGanttViewOption("editing", this.option(args.name));
                                break;
                            case "validation":
                                this._setGanttViewOption("validation", this.option(args.name));
                                break;
                            case "toolbar":
                                this._updateToolbarContent();
                                break;
                            case "contextMenu":
                                this._updateContextMenu();
                                break;
                            case "taskTooltipContentTemplate":
                                this._setGanttViewOption("taskTooltipContentTemplate", null === (_this$_ganttTemplates = this._ganttTemplatesManager) || void 0 === _this$_ganttTemplates ? void 0 : _this$_ganttTemplates.getTaskTooltipContentTemplateFunc(args.value));
                                break;
                            case "taskProgressTooltipContentTemplate":
                                this._setGanttViewOption("taskProgressTooltipContentTemplate", null === (_this$_ganttTemplates2 = this._ganttTemplatesManager) || void 0 === _this$_ganttTemplates2 ? void 0 : _this$_ganttTemplates2.getTaskProgressTooltipContentTemplateFunc(args.value));
                                break;
                            case "taskTimeTooltipContentTemplate":
                                this._setGanttViewOption("taskTimeTooltipContentTemplate", null === (_this$_ganttTemplates3 = this._ganttTemplatesManager) || void 0 === _this$_ganttTemplates3 ? void 0 : _this$_ganttTemplates3.getTaskTimeTooltipContentTemplateFunc(args.value));
                                break;
                            case "taskContentTemplate":
                                this._setGanttViewOption("taskContentTemplate", null === (_this$_ganttTemplates4 = this._ganttTemplatesManager) || void 0 === _this$_ganttTemplates4 ? void 0 : _this$_ganttTemplates4.getTaskContentTemplateFunc(args.value));
                                break;
                            case "rootValue":
                                null === (_this$_ganttTreeList9 = this._ganttTreeList) || void 0 === _this$_ganttTreeList9 ? void 0 : _this$_ganttTreeList9.setOption("rootValue", args.value);
                                break;
                            case "width":
                                _Widget.prototype._optionChanged.call(this, args);
                                null === (_this$_sizeHelper2 = this._sizeHelper) || void 0 === _this$_sizeHelper2 ? void 0 : _this$_sizeHelper2.updateGanttWidth();
                                break;
                            case "height":
                                _Widget.prototype._optionChanged.call(this, args);
                                null === (_this$_sizeHelper3 = this._sizeHelper) || void 0 === _this$_sizeHelper3 ? void 0 : _this$_sizeHelper3.setGanttHeight((0, _size.getHeight)(this._$element));
                                break;
                            case "sorting":
                                null === (_this$_ganttTreeList10 = this._ganttTreeList) || void 0 === _this$_ganttTreeList10 ? void 0 : _this$_ganttTreeList10.setOption("sorting", this.option(args.name));
                                break;
                            case "filterRow":
                                null === (_this$_ganttTreeList11 = this._ganttTreeList) || void 0 === _this$_ganttTreeList11 ? void 0 : _this$_ganttTreeList11.setOption("filterRow", this.option(args.name));
                                break;
                            case "headerFilter":
                                null === (_this$_ganttTreeList12 = this._ganttTreeList) || void 0 === _this$_ganttTreeList12 ? void 0 : _this$_ganttTreeList12.setOption("headerFilter", this.option(args.name));
                                break;
                            default:
                                _Widget.prototype._optionChanged.call(this, args)
                        }
                    };
                    return Gantt
                }(_ui.default);
                (0, _component_registrator.default)("dxGantt", Gantt);
                var _default = Gantt;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        32679:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.mapping_helper.js ***!
              \*********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.GanttMappingHelper = void 0;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _data = __webpack_require__( /*! ../../core/utils/data */ 47617);
                const GANTT_MAPPED_FIELD_REGEX = /(\w*)Expr/;
                let GanttMappingHelper = function() {
                    function GanttMappingHelper(gantt) {
                        this._gantt = gantt
                    }
                    var _proto = GanttMappingHelper.prototype;
                    _proto._getMappedFieldName = function(optionName, coreField) {
                        let coreFieldName = coreField;
                        if ("id" === coreField) {
                            coreFieldName = "key"
                        }
                        return this._gantt.option("".concat(optionName, ".").concat(coreFieldName, "Expr"))
                    };
                    _proto.getTaskMappedFieldNames = function() {
                        const mappedFields = [];
                        const mappedFieldsData = this._gantt.option("tasks");
                        for (const field in mappedFieldsData) {
                            const exprMatches = field.match(GANTT_MAPPED_FIELD_REGEX);
                            const mappedFieldName = exprMatches && mappedFieldsData[exprMatches[0]];
                            if (mappedFieldName) {
                                mappedFields.push(mappedFieldName)
                            }
                        }
                        return mappedFields
                    };
                    _proto.convertCoreToMappedData = function(optionName, coreData) {
                        return Object.keys(coreData).reduce((previous, f) => {
                            const mappedField = this._getMappedFieldName(optionName, f);
                            if (mappedField && !(0, _type.isFunction)(mappedField)) {
                                const setter = (0, _data.compileSetter)(mappedField);
                                setter(previous, coreData[f])
                            }
                            return previous
                        }, {})
                    };
                    _proto.convertMappedToCoreData = function(optionName, mappedData) {
                        const coreData = {};
                        if (mappedData) {
                            const mappedFields = this._gantt.option(optionName);
                            for (const field in mappedFields) {
                                const exprMatches = field.match(GANTT_MAPPED_FIELD_REGEX);
                                const mappedFieldName = exprMatches && mappedFields[exprMatches[0]];
                                if (mappedFieldName && void 0 !== mappedData[mappedFieldName]) {
                                    const getter = (0, _data.compileGetter)(mappedFieldName);
                                    const coreFieldName = exprMatches[1];
                                    coreData[coreFieldName] = getter(mappedData)
                                }
                            }
                        }
                        return coreData
                    };
                    _proto.convertCoreToMappedFields = function(optionName, fields) {
                        return fields.reduce((previous, f) => {
                            const mappedField = this._getMappedFieldName(optionName, f);
                            if (mappedField) {
                                previous.push(mappedField)
                            }
                            return previous
                        }, [])
                    };
                    _proto.convertMappedToCoreFields = function(optionName, fields) {
                        const coreFields = [];
                        const mappedFields = this._gantt.option(optionName);
                        for (const field in mappedFields) {
                            const exprMatches = field.match(GANTT_MAPPED_FIELD_REGEX);
                            const mappedFieldName = exprMatches && mappedFields[exprMatches[0]];
                            if (mappedFieldName && fields.indexOf(mappedFieldName) > -1) {
                                const coreFieldName = exprMatches[1];
                                coreFields.push(coreFieldName)
                            }
                        }
                        return coreFields
                    };
                    return GanttMappingHelper
                }();
                exports.GanttMappingHelper = GanttMappingHelper
            },
        48604:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.model_changes_listener.js ***!
              \*****************************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.ModelChangesListener = void 0;
                const ModelChangesListener = {
                    create: gantt => ({
                        NotifyTaskCreated: (task, callback, errorCallback) => {
                            gantt._onRecordInserted("tasks", task, callback)
                        },
                        NotifyTaskRemoved: (taskId, errorCallback, task) => {
                            gantt._onRecordRemoved("tasks", taskId, task)
                        },
                        NotifyTaskUpdated: (taskId, newValues, errorCallback) => {
                            gantt._onRecordUpdated("tasks", taskId, newValues)
                        },
                        NotifyParentTaskUpdated: (task, errorCallback) => {
                            gantt._onParentTaskUpdated(task)
                        },
                        NotifyDependencyInserted: (dependency, callback, errorCallback) => {
                            gantt._onRecordInserted("dependencies", dependency, callback)
                        },
                        NotifyDependencyRemoved: (dependencyId, errorCallback, dependency) => {
                            gantt._onRecordRemoved("dependencies", dependencyId, dependency)
                        },
                        NotifyResourceCreated: (resource, callback, errorCallback) => {
                            gantt._onRecordInserted("resources", resource, callback)
                        },
                        NotifyResourceRemoved: (resourceId, errorCallback, resource) => {
                            gantt._onRecordRemoved("resources", resourceId, resource)
                        },
                        NotifyResourceAssigned: (assignment, callback, errorCallback) => {
                            gantt._onRecordInserted("resourceAssignments", assignment, callback)
                        },
                        NotifyResourceUnassigned: (assignmentId, errorCallback, assignment) => {
                            gantt._onRecordRemoved("resourceAssignments", assignmentId, assignment)
                        },
                        NotifyParentDataRecalculated: data => {
                            gantt._onParentTasksRecalculated(data)
                        },
                        NotifyTaskCreating: args => {
                            gantt._actionsManager.raiseInsertingAction("tasks", args)
                        },
                        NotifyTaskRemoving: args => {
                            gantt._actionsManager.raiseDeletingAction("tasks", args)
                        },
                        NotifyTaskUpdating: args => {
                            gantt._actionsManager.raiseUpdatingAction("tasks", args)
                        },
                        NotifyTaskMoving: args => {
                            gantt._actionsManager.raiseUpdatingAction("tasks", args, gantt._actionsManager.getTaskMovingAction())
                        },
                        NotifyTaskEditDialogShowing: args => {
                            gantt._actionsManager.raiseTaskEditDialogShowingAction(args)
                        },
                        NotifyResourceManagerDialogShowing: args => {
                            gantt._actionsManager.raiseResourceManagerDialogShowingAction(args)
                        },
                        NotifyDependencyInserting: args => {
                            gantt._actionsManager.raiseInsertingAction("dependencies", args)
                        },
                        NotifyDependencyRemoving: args => {
                            gantt._actionsManager.raiseDeletingAction("dependencies", args)
                        },
                        NotifyResourceCreating: args => {
                            gantt._actionsManager.raiseInsertingAction("resources", args)
                        },
                        NotifyResourceRemoving: args => {
                            gantt._actionsManager.raiseDeletingAction("resources", args)
                        },
                        NotifyResourceAssigning: args => {
                            gantt._actionsManager.raiseInsertingAction("resourceAssignments", args)
                        },
                        NotifyResourceUnassigning: args => {
                            gantt._actionsManager.raiseDeletingAction("resourceAssignments", args)
                        },
                        NotifyScaleCellPrepared: args => {
                            gantt._actionsManager.raiseScaleCellPreparedAction(args)
                        },
                        NotifyGanttViewUpdated: () => {
                            gantt._onGanttViewCoreUpdated()
                        }
                    })
                };
                exports.ModelChangesListener = ModelChangesListener
            },
        28990:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.size_helper.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.GanttSizeHelper = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                let GanttSizeHelper = function() {
                    function GanttSizeHelper(gantt) {
                        this._gantt = gantt
                    }
                    var _proto = GanttSizeHelper.prototype;
                    _proto._setTreeListDimension = function(dimension, value) {
                        var _this$_gantt$_ganttTr;
                        const setter = "width" === dimension ? _size.setWidth : _size.setHeight;
                        const getter = "width" === dimension ? _size.getWidth : _size.getHeight;
                        setter(this._gantt._$treeListWrapper, value);
                        null === (_this$_gantt$_ganttTr = this._gantt._ganttTreeList) || void 0 === _this$_gantt$_ganttTr ? void 0 : _this$_gantt$_ganttTr.setOption(dimension, getter(this._gantt._$treeListWrapper))
                    };
                    _proto._setGanttViewDimension = function(dimension, value) {
                        const setter = "width" === dimension ? _size.setWidth : _size.setHeight;
                        const getter = "width" === dimension ? _size.getWidth : _size.getHeight;
                        setter(this._gantt._$ganttView, value);
                        this._gantt._setGanttViewOption(dimension, getter(this._gantt._$ganttView))
                    };
                    _proto._getPanelsWidthByOption = function() {
                        var _leftPanelWidth$index, _leftPanelWidth$index2;
                        const ganttWidth = (0, _size.getWidth)(this._gantt._$element);
                        const leftPanelWidth = this._gantt.option("taskListWidth");
                        let rightPanelWidth;
                        if (!isNaN(leftPanelWidth)) {
                            rightPanelWidth = ganttWidth - parseInt(leftPanelWidth)
                        } else if ((null === (_leftPanelWidth$index = leftPanelWidth.indexOf) || void 0 === _leftPanelWidth$index ? void 0 : _leftPanelWidth$index.call(leftPanelWidth, "px")) > 0) {
                            rightPanelWidth = ganttWidth - parseInt(leftPanelWidth.replace("px", "")) + "px"
                        } else if ((null === (_leftPanelWidth$index2 = leftPanelWidth.indexOf) || void 0 === _leftPanelWidth$index2 ? void 0 : _leftPanelWidth$index2.call(leftPanelWidth, "%")) > 0) {
                            rightPanelWidth = 100 - parseInt(leftPanelWidth.replace("%", "")) + "%"
                        }
                        return {
                            leftPanelWidth: leftPanelWidth,
                            rightPanelWidth: rightPanelWidth
                        }
                    };
                    _proto.onAdjustControl = function() {
                        const elementHeight = (0, _size.getHeight)(this._gantt._$element);
                        this.updateGanttWidth();
                        this.setGanttHeight(elementHeight)
                    };
                    _proto.onApplyPanelSize = function(e) {
                        this.setInnerElementsWidth(e);
                        this.updateGanttRowHeights()
                    };
                    _proto.updateGanttRowHeights = function() {
                        const rowHeight = this._gantt._ganttTreeList.getRowHeight();
                        if (this._gantt._getGanttViewOption("rowHeight") !== rowHeight) {
                            var _this$_gantt$_ganttVi;
                            this._gantt._setGanttViewOption("rowHeight", rowHeight);
                            null === (_this$_gantt$_ganttVi = this._gantt._ganttView) || void 0 === _this$_gantt$_ganttVi ? void 0 : _this$_gantt$_ganttVi._ganttViewCore.updateRowHeights(rowHeight)
                        }
                    };
                    _proto.adjustHeight = function() {
                        if (!this._gantt._hasHeight) {
                            this._gantt._setGanttViewOption("height", 0);
                            this._gantt._setGanttViewOption("height", this._gantt._ganttTreeList.getOffsetHeight())
                        }
                    };
                    _proto.setInnerElementsWidth = function(widths) {
                        if (!(0, _window.hasWindow)()) {
                            return
                        }
                        const takeWithFromOption = !widths;
                        if (takeWithFromOption) {
                            widths = this._getPanelsWidthByOption();
                            this._setTreeListDimension("width", 0);
                            this._setGanttViewDimension("width", 0)
                        }
                        this._setTreeListDimension("width", widths.leftPanelWidth);
                        this._setGanttViewDimension("width", widths.rightPanelWidth);
                        if (takeWithFromOption) {
                            this._gantt._splitter._setSplitterPositionLeft()
                        }
                    };
                    _proto.updateGanttWidth = function() {
                        this._gantt._splitter._dimensionChanged()
                    };
                    _proto.setGanttHeight = function(height) {
                        var _this$_gantt$_ganttVi2;
                        const toolbarHeightOffset = this._gantt._$toolbarWrapper.get(0).offsetHeight;
                        const mainWrapperHeight = height - toolbarHeightOffset;
                        this._setTreeListDimension("height", mainWrapperHeight);
                        this._setGanttViewDimension("height", mainWrapperHeight);
                        null === (_this$_gantt$_ganttVi2 = this._gantt._ganttView) || void 0 === _this$_gantt$_ganttVi2 ? void 0 : _this$_gantt$_ganttVi2._ganttViewCore.resetAndUpdate()
                    };
                    return GanttSizeHelper
                }();
                exports.GanttSizeHelper = GanttSizeHelper
            },
        77133:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.task.area.container.js ***!
              \**************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.TaskAreaContainer = void 0;
                var _scroll_view = (obj = __webpack_require__( /*! ../scroll_view */ 4741), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }
                let TaskAreaContainer = function() {
                    function TaskAreaContainer(element, ganttViewWidget) {
                        this._element = element;
                        this._scrollView = ganttViewWidget._createComponent(this._element, _scroll_view.default, {
                            scrollByContent: false,
                            scrollByThumb: true,
                            showScrollbar: "onHover",
                            direction: "both",
                            onScroll: () => {
                                ganttViewWidget.updateView()
                            }
                        })
                    }
                    var _proto = TaskAreaContainer.prototype;
                    _proto.getWidth = function() {
                        return this._element.offsetWidth
                    };
                    _proto.getHeight = function() {
                        return this._element.offsetHeight
                    };
                    _proto.getElement = function() {
                        return this._element
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(TaskAreaContainer, [{
                        key: "scrollTop",
                        get: function() {
                            return this._scrollView.scrollTop()
                        },
                        set: function(value) {
                            const diff = value - this._scrollView.scrollTop();
                            if (0 !== diff) {
                                this._scrollView.scrollBy({
                                    left: 0,
                                    top: diff
                                })
                            }
                        }
                    }, {
                        key: "scrollLeft",
                        get: function() {
                            return this._scrollView.scrollLeft()
                        },
                        set: function(value) {
                            const diff = value - this._scrollView.scrollLeft();
                            if (0 !== diff) {
                                this._scrollView.scrollBy({
                                    left: diff,
                                    top: 0
                                })
                            }
                        }
                    }, {
                        key: "scrollWidth",
                        get: function() {
                            return this._scrollView.scrollWidth()
                        }
                    }, {
                        key: "scrollHeight",
                        get: function() {
                            return this._scrollView.scrollHeight()
                        }
                    }, {
                        key: "isExternal",
                        get: function() {
                            return true
                        }
                    }]);
                    return TaskAreaContainer
                }();
                exports.TaskAreaContainer = TaskAreaContainer
            },
        23638:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.templates.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.GanttTemplatesManager = void 0;
                var _renderer = (obj = __webpack_require__( /*! ../../core/renderer */ 68374), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _element = __webpack_require__( /*! ../../core/element */ 6415);
                let GanttTemplatesManager = function() {
                    function GanttTemplatesManager(gantt) {
                        this._gantt = gantt
                    }
                    var _proto = GanttTemplatesManager.prototype;
                    _proto.getTaskTooltipContentTemplateFunc = function(taskTooltipContentTemplateOption) {
                        const template = taskTooltipContentTemplateOption && this._gantt._getTemplate(taskTooltipContentTemplateOption);
                        const createTemplateFunction = template && ((container, item, callback) => {
                            template.render({
                                model: this._gantt.getTaskDataByCoreData(item),
                                container: (0, _element.getPublicElement)((0, _renderer.default)(container)),
                                onRendered: () => {
                                    callback()
                                }
                            });
                            return true
                        });
                        return createTemplateFunction
                    };
                    _proto.getTaskProgressTooltipContentTemplateFunc = function(taskTooltipContentTemplateOption) {
                        const template = taskTooltipContentTemplateOption && this._gantt._getTemplate(taskTooltipContentTemplateOption);
                        const createTemplateFunction = template && ((container, item, callback) => {
                            template.render({
                                model: item,
                                container: (0, _element.getPublicElement)((0, _renderer.default)(container)),
                                onRendered: () => {
                                    callback()
                                }
                            });
                            return true
                        });
                        return createTemplateFunction
                    };
                    _proto.getTaskTimeTooltipContentTemplateFunc = function(taskTooltipContentTemplateOption) {
                        const template = taskTooltipContentTemplateOption && this._gantt._getTemplate(taskTooltipContentTemplateOption);
                        const createTemplateFunction = template && ((container, item, callback) => {
                            template.render({
                                model: item,
                                container: (0, _element.getPublicElement)((0, _renderer.default)(container)),
                                onRendered: () => {
                                    callback()
                                }
                            });
                            return true
                        });
                        return createTemplateFunction
                    };
                    _proto.getTaskContentTemplateFunc = function(taskContentTemplateOption) {
                        const template = taskContentTemplateOption && this._gantt._getTemplate(taskContentTemplateOption);
                        const createTemplateFunction = template && ((container, item, callback, index) => {
                            item.taskData = this._gantt.getTaskDataByCoreData(item.taskData);
                            template.render({
                                model: item,
                                container: (0, _element.getPublicElement)((0, _renderer.default)(container)),
                                onRendered: () => {
                                    callback(container, index)
                                }
                            });
                            return true
                        });
                        return createTemplateFunction
                    };
                    return GanttTemplatesManager
                }();
                exports.GanttTemplatesManager = GanttTemplatesManager
            },
        87367:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.treelist.js ***!
              \***************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.GanttTreeList = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _tree_list = _interopRequireDefault(__webpack_require__( /*! ../tree_list */ 82655));
                var _position = __webpack_require__( /*! ../../core/utils/position */ 37518);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _uiGantt = __webpack_require__( /*! ./ui.gantt.helper */ 30631);
                var _data_source = __webpack_require__( /*! ../../data/data_source/data_source */ 85273);
                var _array_store = _interopRequireDefault(__webpack_require__( /*! ../../data/array_store */ 26562));
                var _data = __webpack_require__( /*! ../../core/utils/data */ 47617);
                var _uiGanttTreelist = __webpack_require__( /*! ./ui.gantt.treelist.nodes_state */ 11012);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                let GanttTreeList = function() {
                    function GanttTreeList(gantt) {
                        this._gantt = gantt;
                        this._$treeList = this._gantt._$treeList
                    }
                    var _proto = GanttTreeList.prototype;
                    _proto.getTreeList = function() {
                        const {
                            keyExpr: keyExpr,
                            parentIdExpr: parentIdExpr
                        } = this._gantt.option("tasks");
                        this._treeList = this._gantt._createComponent(this._$treeList, _tree_list.default, {
                            dataSource: this.createDataSource(this._gantt._tasksRaw, keyExpr),
                            keyExpr: keyExpr,
                            filterSyncEnabled: true,
                            parentIdExpr: parentIdExpr,
                            columns: this.getColumns(),
                            columnResizingMode: "nextColumn",
                            height: this._getHeight(),
                            width: this._gantt.option("taskListWidth"),
                            selection: {
                                mode: _uiGantt.GanttHelper.getSelectionMode(this._gantt.option("allowSelection"))
                            },
                            selectedRowKeys: _uiGantt.GanttHelper.getArrayFromOneElement(this._gantt.option("selectedRowKey")),
                            sorting: this._gantt.option("sorting"),
                            filterRow: this._gantt.option("filterRow"),
                            headerFilter: this._gantt.option("headerFilter"),
                            scrolling: {
                                showScrollbar: "onHover",
                                mode: "virtual"
                            },
                            allowColumnResizing: true,
                            autoExpandAll: true,
                            showRowLines: this._gantt.option("showRowLines"),
                            rootValue: this._gantt.option("rootValue"),
                            onContentReady: e => {
                                this._onContentReady(e)
                            },
                            onSelectionChanged: e => {
                                this._onSelectionChanged(e)
                            },
                            onRowCollapsed: e => {
                                this._onRowCollapsed(e)
                            },
                            onRowExpanded: e => {
                                this._onRowExpanded(e)
                            },
                            onRowPrepared: e => {
                                this._onRowPrepared(e)
                            },
                            onContextMenuPreparing: e => {
                                this._onContextMenuPreparing(e)
                            },
                            onRowClick: e => {
                                this.onRowClick(e)
                            },
                            onRowDblClick: e => {
                                this.onRowDblClick(e)
                            },
                            onNodesInitialized: e => {
                                this._onNodesInitialized(e)
                            },
                            _disableDeprecationWarnings: true
                        });
                        return this._treeList
                    };
                    _proto.onAfterTreeListCreate = function() {
                        if (this._postponedGanttInitRequired) {
                            this._initGanttOnContentReady({
                                component: this._treeList
                            });
                            delete this._postponedGanttInitRequired
                        }
                    };
                    _proto._onContentReady = function(e) {
                        const hasTreeList = !!this._treeList;
                        if (hasTreeList) {
                            this._initGanttOnContentReady(e)
                        } else {
                            this._postponedGanttInitRequired = true
                        }
                        this._gantt._onTreeListContentReady(e)
                    };
                    _proto._initGanttOnContentReady = function(e) {
                        if (e.component.getDataSource()) {
                            this._gantt._initGanttView();
                            this._initScrollSync(e.component)
                        }
                        this._gantt._sortAndFilter();
                        this._gantt._sizeHelper.updateGanttRowHeights()
                    };
                    _proto._onSelectionChanged = function(e) {
                        const selectedRowKey = e.currentSelectedRowKeys[0];
                        this._gantt._setGanttViewOption("selectedRowKey", selectedRowKey);
                        this._gantt._setOptionWithoutOptionChange("selectedRowKey", selectedRowKey);
                        this._gantt._actionsManager.raiseSelectionChangedAction(selectedRowKey)
                    };
                    _proto._onRowCollapsed = function(e) {
                        this._gantt._onTreeListRowExpandChanged(e, false)
                    };
                    _proto._onRowExpanded = function(e) {
                        this._gantt._onTreeListRowExpandChanged(e, true)
                    };
                    _proto._onRowPrepared = function(e) {
                        if ("data" === e.rowType && e.node.children.length > 0) {
                            (0, _renderer.default)(e.rowElement).addClass("dx-gantt-collapsable-row")
                        }
                    };
                    _proto._onContextMenuPreparing = function(e) {
                        var _e$row, _e$row2;
                        if ("header" === e.target) {
                            return
                        }
                        if ("data" === (null === (_e$row = e.row) || void 0 === _e$row ? void 0 : _e$row.rowType)) {
                            this.setOption("selectedRowKeys", [e.row.data[this._gantt.option("tasks.keyExpr")]])
                        }
                        e.items = [];
                        const info = {
                            cancel: false,
                            event: e.event,
                            type: "task",
                            key: null === (_e$row2 = e.row) || void 0 === _e$row2 ? void 0 : _e$row2.key,
                            position: {
                                x: e.event.pageX,
                                y: e.event.pageY
                            }
                        };
                        this._gantt._showPopupMenu(info)
                    };
                    _proto._getHeight = function() {
                        if ((0, _size.getHeight)(this._$treeList)) {
                            return (0, _size.getHeight)(this._$treeList)
                        }
                        this._gantt._hasHeight = (0, _type.isDefined)(this._gantt.option("height")) && "" !== this._gantt.option("height");
                        return this._gantt._hasHeight ? "100%" : ""
                    };
                    _proto._initScrollSync = function(treeList) {
                        const treeListScrollable = treeList.getScrollable();
                        if (treeListScrollable) {
                            treeListScrollable.off("scroll");
                            treeListScrollable.on("scroll", e => {
                                this._onScroll(e)
                            })
                        }
                    };
                    _proto._onScroll = function(treeListScrollView) {
                        const ganttViewTaskAreaContainer = this._gantt._ganttView.getTaskAreaContainer();
                        if (ganttViewTaskAreaContainer.scrollTop !== treeListScrollView.component.scrollTop()) {
                            ganttViewTaskAreaContainer.scrollTop = treeListScrollView.component.scrollTop()
                        }
                    };
                    _proto._correctRowsViewRowHeight = function(height) {
                        const view = this._treeList._views && this._treeList._views.rowsView;
                        if ((null === view || void 0 === view ? void 0 : view._rowHeight) !== height) {
                            view._rowHeight = height
                        }
                    };
                    _proto._skipUpdateTreeListDataSource = function() {
                        return this._gantt.option("validation.autoUpdateParentTasks")
                    };
                    _proto.selectRows = function(keys) {
                        this.setOption("selectedRowKeys", keys)
                    };
                    _proto.scrollBy = function(scrollTop) {
                        const treeListScrollable = this._treeList.getScrollable();
                        if (treeListScrollable) {
                            const diff = scrollTop - treeListScrollable.scrollTop();
                            if (Math.abs(diff) >= 1) {
                                treeListScrollable.scrollBy({
                                    left: 0,
                                    top: diff
                                })
                            }
                        }
                    };
                    _proto.updateDataSource = function(data) {
                        let forceUpdate = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false;
                        let forceCustomData = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;
                        if (!this._skipUpdateTreeListDataSource() || forceUpdate) {
                            this.setDataSource(data)
                        } else if (forceCustomData) {
                            const data = this._treeList.option("dataSource");
                            this._gantt._onParentTasksRecalculated(data)
                        }
                    };
                    _proto.setDataSource = function(data) {
                        this.setOption("dataSource", this.createDataSource(data))
                    };
                    _proto.createDataSource = function(data, key) {
                        return data && new _data_source.DataSource({
                            store: new _array_store.default({
                                data: data,
                                key: key || this.getOption("keyExpr")
                            })
                        })
                    };
                    _proto.onRowClick = function(e) {
                        this._gantt._actionsManager.raiseTaskClickAction(e.key, e.event)
                    };
                    _proto.onRowDblClick = function(e) {
                        if (this._gantt._actionsManager.raiseTaskDblClickAction(e.key, e.event)) {
                            this._gantt._ganttView._ganttViewCore.showTaskEditDialog()
                        }
                    };
                    _proto.saveExpandedKeys = function() {
                        const treeList = this._treeList;
                        const visibleRowCount = null === treeList || void 0 === treeList ? void 0 : treeList.getVisibleRows().length;
                        if (visibleRowCount > 0) {
                            const nodes = this.getAllNodes();
                            const keys = this.getOption("expandedRowKeys");
                            const hasExpandedRows = keys && nodes.length !== visibleRowCount;
                            if (hasExpandedRows) {
                                const state = this.getNodesState();
                                state.applyNodes(nodes, this.getOption("rootValue"));
                                state.saveExpandedState(keys)
                            }
                        }
                    };
                    _proto._onNodesInitialized = function(e) {
                        const state = this.getNodesState();
                        const savedKeys = state.getExpandedKeys();
                        const nodes = this.getAllNodes();
                        state.applyNodes(nodes, this.getOption("rootValue"));
                        const expandedKeys = state.getExpandedKeys();
                        if (expandedKeys) {
                            this.setOption("expandedRowKeys", expandedKeys)
                        }
                        if (this.isExpandedStateChanged(savedKeys, expandedKeys)) {
                            const expandedState = nodes.reduce((previous, node) => {
                                previous[node.key] = expandedKeys ? expandedKeys.includes(node.key) : true;
                                return previous
                            }, {});
                            this._gantt._ganttView.applyTasksExpandedState(expandedState)
                        }
                        state.clear()
                    };
                    _proto.getNodesState = function() {
                        if (!this._nodeState) {
                            this._nodeState = new _uiGanttTreelist.GanttTreeListNodesState
                        }
                        return this._nodeState
                    };
                    _proto.getAllNodes = function() {
                        var _this$_treeList, _this$_treeList$getDa, _this$_treeList2;
                        const store = null === (_this$_treeList = this._treeList) || void 0 === _this$_treeList ? void 0 : null === (_this$_treeList$getDa = _this$_treeList.getDataSource()) || void 0 === _this$_treeList$getDa ? void 0 : _this$_treeList$getDa.store();
                        if (!store || !(null !== (_this$_treeList2 = this._treeList) && void 0 !== _this$_treeList2 && _this$_treeList2.getNodeByKey)) {
                            return []
                        }
                        const keyGetter = (0, _data.compileGetter)(store.key());
                        return store._array.map(item => this._treeList.getNodeByKey(keyGetter(item))).filter(item => !!item)
                    };
                    _proto.isExpandedStateChanged = function(keys1, keys2) {
                        if (null === keys1 && null === keys2) {
                            return false
                        }
                        if ((null === keys1 || void 0 === keys1 ? void 0 : keys1.length) !== (null === keys2 || void 0 === keys2 ? void 0 : keys2.length)) {
                            return true
                        }
                        return keys1.some((key, index) => key !== keys2[index])
                    };
                    _proto.getOffsetHeight = function() {
                        return this._gantt._treeList._$element.get(0).offsetHeight
                    };
                    _proto.getRowHeight = function() {
                        const $row = this._treeList._$element.find(".dx-data-row");
                        let height = $row.length ? (0, _position.getBoundingRect)($row.last().get(0)).height : 34;
                        if (!height) {
                            height = 34
                        }
                        this._correctRowsViewRowHeight(height);
                        return height
                    };
                    _proto.getHeaderHeight = function() {
                        return (0, _position.getBoundingRect)(this._treeList._$element.find(".dx-treelist-headers").get(0)).height
                    };
                    _proto.getColumns = function() {
                        const columns = this._gantt.option("columns");
                        if (columns) {
                            for (let i = 0; i < columns.length; i++) {
                                const column = columns[i];
                                const isKeyColumn = column.dataField === this._gantt.option("".concat("tasks", ".keyExpr")) || column.dataField === this._gantt.option("".concat("tasks", ".parentIdExpr"));
                                if (isKeyColumn && !column.dataType) {
                                    column.dataType = "object"
                                }
                            }
                        }
                        return columns
                    };
                    _proto.getSievedItems = function() {
                        const rootNode = this._treeList.getRootNode();
                        if (!rootNode) {
                            return
                        }
                        const resultArray = [];
                        _uiGantt.GanttHelper.convertTreeToList(rootNode, resultArray);
                        const getters = _uiGantt.GanttHelper.compileGettersByOption(this._gantt.option("tasks"));
                        const validatedData = this._gantt._validateSourceData("tasks", resultArray);
                        const mappedData = validatedData.map(_uiGantt.GanttHelper.prepareMapHandler(getters));
                        return mappedData
                    };
                    _proto.setOption = function(optionName, value) {
                        this._treeList && this._treeList.option(optionName, value)
                    };
                    _proto.getOption = function(optionName) {
                        var _this$_treeList3;
                        return null === (_this$_treeList3 = this._treeList) || void 0 === _this$_treeList3 ? void 0 : _this$_treeList3.option(optionName)
                    };
                    _proto.onTaskInserted = function(insertedId, parentId) {
                        if ((0, _type.isDefined)(parentId)) {
                            const expandedRowKeys = this.getOption("expandedRowKeys");
                            if (-1 === expandedRowKeys.indexOf(parentId)) {
                                expandedRowKeys.push(parentId);
                                this.setOption("expandedRowKeys", expandedRowKeys)
                            }
                        }
                        this.selectRows(_uiGantt.GanttHelper.getArrayFromOneElement(insertedId));
                        this.setOption("focusedRowKey", insertedId)
                    };
                    _proto.getDataSource = function() {
                        var _this$_treeList4;
                        return null === (_this$_treeList4 = this._treeList) || void 0 === _this$_treeList4 ? void 0 : _this$_treeList4.getDataSource()
                    };
                    return GanttTreeList
                }();
                exports.GanttTreeList = GanttTreeList
            },
        11012:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.treelist.nodes_state.js ***!
              \***************************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.GanttTreeListNodesState = exports.GanttTreeListNodeState = void 0;
                let GanttTreeListNodeState = function() {
                    function GanttTreeListNodeState(treeListNode) {
                        var _treeListNode$parent;
                        this.collapsed = false;
                        this.key = treeListNode.key;
                        this.children = treeListNode.children.map(node => node.key);
                        this.parentKey = null === (_treeListNode$parent = treeListNode.parent) || void 0 === _treeListNode$parent ? void 0 : _treeListNode$parent.key
                    }
                    var _proto = GanttTreeListNodeState.prototype;
                    _proto.hasChildren = function() {
                        return this.children.length > 0
                    };
                    _proto.removeChild = function(state) {
                        const index = this.children.indexOf(state.key);
                        if (index > -1) {
                            this.children = this.children.splice(index, 1)
                        }
                    };
                    _proto.equal = function(state) {
                        if (!state || state.key !== this.key || state.parentKey !== this.parentKey) {
                            return false
                        }
                        if (this.children.length !== state.children.length || this.children.some((value, index) => value !== state.children[index])) {
                            return false
                        }
                        return true
                    };
                    return GanttTreeListNodeState
                }();
                exports.GanttTreeListNodeState = GanttTreeListNodeState;
                let GanttTreeListNodesState = function() {
                    function GanttTreeListNodesState() {
                        this._resetHash()
                    }
                    var _proto2 = GanttTreeListNodesState.prototype;
                    _proto2.clear = function() {
                        this._resetHash()
                    };
                    _proto2.applyNodes = function(nodes, rootValue) {
                        if (this._rootValue !== rootValue) {
                            this._resetHash();
                            this._rootValue = rootValue
                        }
                        this._removeNonExistentNodes(nodes.map(node => node.key));
                        nodes.forEach(node => this._applyNode(node));
                        this._validateHash()
                    };
                    _proto2.saveExpandedState = function(expandedKeys) {
                        this._hasCollapsed = false;
                        this._forEachState(state => {
                            if (state.hasChildren() && !expandedKeys.includes(state.key)) {
                                state.collapsed = true;
                                this._hasCollapsed = true
                            }
                        })
                    };
                    _proto2.getExpandedKeys = function() {
                        if (this._hasCollapsed) {
                            const keys = [];
                            this._forEachState(state => {
                                if (state.hasChildren() && !state.collapsed) {
                                    keys.push(state.key)
                                }
                            });
                            return keys
                        }
                        return null
                    };
                    _proto2._resetHash = function() {
                        this._nodeHash = {};
                        this._hasCollapsed = false
                    };
                    _proto2._getNodeState = function(key) {
                        return this._nodeHash[key]
                    };
                    _proto2._removeNonExistentNodes = function(existingKeys) {
                        if (existingKeys) {
                            this._forEachState(state => {
                                if (!existingKeys.includes(state.key)) {
                                    this._removeStateWithChildren(state)
                                }
                            })
                        }
                    };
                    _proto2._removeStateWithChildren = function(key) {
                        const state = this._getNodeState(key);
                        if (state) {
                            state.children.forEach(child => this._removeStateWithChildren(child));
                            const parent = this._getNodeState(state.parentKey);
                            if (parent) {
                                parent.removeChild(state)
                            }
                            delete this._nodeHash[key]
                        }
                    };
                    _proto2._applyNode = function(node) {
                        const nodeState = new GanttTreeListNodeState(node);
                        const oldState = this._getNodeState(node.key);
                        if (!(null !== oldState && void 0 !== oldState && oldState.equal(nodeState))) {
                            this._nodeHash[node.key] = nodeState;
                            this._expandTreelineToNode(node.key)
                        }
                    };
                    _proto2._expandTreelineToNode = function(key) {
                        const state = this._getNodeState(key);
                        let parent = this._getNodeState(null === state || void 0 === state ? void 0 : state.parentKey);
                        while (parent) {
                            parent.collapsed = false;
                            parent = this._getNodeState(parent.parentKey)
                        }
                    };
                    _proto2._validateHash = function() {
                        Object.keys(this._nodeHash).forEach(key => {
                            const state = this._getNodeState(key);
                            const parentKey = null === state || void 0 === state ? void 0 : state.parentKey;
                            if (parentKey !== this._rootValue && !this._getNodeState(parentKey)) {
                                this._removeStateWithChildren(key)
                            }
                        })
                    };
                    _proto2._forEachState = function(callback) {
                        Object.keys(this._nodeHash).forEach(key => {
                            const state = this._nodeHash[key];
                            if (state) {
                                callback(state)
                            }
                        })
                    };
                    return GanttTreeListNodesState
                }();
                exports.GanttTreeListNodesState = GanttTreeListNodesState
            },
        21347:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/gantt/ui.gantt.view.js ***!
              \***********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.GanttView = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _gantt_importer = __webpack_require__( /*! ./gantt_importer */ 70382);
                var _uiGanttTaskArea = __webpack_require__( /*! ./ui.gantt.task.area.container */ 77133);
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../localization/date */ 91500));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _string = __webpack_require__( /*! ../../core/utils/string */ 68752);
                var _core = _interopRequireDefault(__webpack_require__( /*! ../../localization/core */ 91331));

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

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let GanttView = function(_Widget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(GanttView, _Widget);

                    function GanttView() {
                        return _Widget.apply(this, arguments) || this
                    }
                    var _proto = GanttView.prototype;
                    _proto._init = function() {
                        _Widget.prototype._init.call(this);
                        this._onSelectionChanged = this._createActionByOption("onSelectionChanged");
                        this._onViewTypeChanged = this._createActionByOption("onViewTypeChanged");
                        this._onScroll = this._createActionByOption("onScroll");
                        this._onDialogShowing = this._createActionByOption("onDialogShowing");
                        this._onPopupMenuShowing = this._createActionByOption("onPopupMenuShowing");
                        this._onPopupMenuHiding = this._createActionByOption("onPopupMenuHiding");
                        this._expandAll = this._createActionByOption("onExpandAll");
                        this._collapseAll = this._createActionByOption("onCollapseAll");
                        this._taskClick = this._createActionByOption("onTaskClick");
                        this._taskDblClick = this._createActionByOption("onTaskDblClick");
                        this._onAdjustControl = this._createActionByOption("onAdjustControl")
                    };
                    _proto._initMarkup = function() {
                        const _GanttView = (0, _gantt_importer.getGanttViewCore)();
                        this._ganttViewCore = new _GanttView(this.$element().get(0), this, {
                            showResources: this.option("showResources"),
                            showDependencies: this.option("showDependencies"),
                            taskTitlePosition: this._getTaskTitlePosition(this.option("taskTitlePosition")),
                            firstDayOfWeek: this._getFirstDayOfWeek(this.option("firstDayOfWeek")),
                            allowSelectTask: this.option("allowSelection"),
                            startDateRange: this.option("startDateRange"),
                            endDateRange: this.option("endDateRange"),
                            editing: this._parseEditingSettings(this.option("editing")),
                            validation: this.option("validation"),
                            stripLines: {
                                stripLines: this.option("stripLines")
                            },
                            areHorizontalBordersEnabled: this.option("showRowLines"),
                            areAlternateRowsEnabled: false,
                            viewType: this._getViewTypeByScaleType(this.option("scaleType")),
                            viewTypeRange: this._parseViewTypeRangeSettings(this.option("scaleTypeRange")),
                            cultureInfo: this._getCultureInfo(),
                            taskTooltipContentTemplate: this.option("taskTooltipContentTemplate"),
                            taskProgressTooltipContentTemplate: this.option("taskProgressTooltipContentTemplate"),
                            taskTimeTooltipContentTemplate: this.option("taskTimeTooltipContentTemplate"),
                            taskContentTemplate: this.option("taskContentTemplate"),
                            sieve: this.option("sieve")
                        });
                        this._selectTask(this.option("selectedRowKey"));
                        this.updateBarItemsState()
                    };
                    _proto._getFirstDayOfWeek = function(value) {
                        return (0, _type.isDefined)(value) ? value : _date.default.firstDayOfWeekIndex()
                    };
                    _proto.getTaskAreaContainer = function() {
                        return this._ganttViewCore.getTaskAreaContainer()
                    };
                    _proto.getBarManager = function() {
                        return this._ganttViewCore.barManager
                    };
                    _proto.executeCoreCommand = function(id) {
                        const command = this._ganttViewCore.getCommandByKey(id);
                        if (command) {
                            command.execute()
                        }
                    };
                    _proto.changeTaskExpanded = function(id, value) {
                        this._ganttViewCore.changeTaskExpanded(id, value)
                    };
                    _proto.updateView = function() {
                        var _this$_ganttViewCore;
                        null === (_this$_ganttViewCore = this._ganttViewCore) || void 0 === _this$_ganttViewCore ? void 0 : _this$_ganttViewCore.updateView()
                    };
                    _proto.updateBarItemsState = function() {
                        this._ganttViewCore.barManager.updateItemsState([])
                    };
                    _proto.setWidth = function(value) {
                        this._ganttViewCore.setWidth(value)
                    };
                    _proto._onDimensionChanged = function() {
                        this._ganttViewCore.onBrowserWindowResize()
                    };
                    _proto._selectTask = function(id) {
                        this._ganttViewCore.selectTaskById(id)
                    };
                    _proto._update = function(keepExpandState) {
                        var _this$_ganttViewCore2;
                        null === (_this$_ganttViewCore2 = this._ganttViewCore) || void 0 === _this$_ganttViewCore2 ? void 0 : _this$_ganttViewCore2.updateWithDataReload(keepExpandState)
                    };
                    _proto._getCultureInfo = function() {
                        return {
                            monthNames: _date.default.getMonthNames("wide"),
                            dayNames: _date.default.getDayNames("wide"),
                            abbrMonthNames: _date.default.getMonthNames("abbreviated"),
                            abbrDayNames: _date.default.getDayNames("abbreviated"),
                            quarterNames: this._getQuarterNames(),
                            amText: this._getAmText(),
                            pmText: this._getPmText(),
                            start: _message.default.format("dxGantt-dialogStartTitle"),
                            end: _message.default.format("dxGantt-dialogEndTitle"),
                            progress: _message.default.format("dxGantt-dialogProgressTitle")
                        }
                    };
                    _proto._getAmText = function() {
                        return this._hasAmPM() ? _date.default.getPeriodNames()[0] : ""
                    };
                    _proto._getPmText = function() {
                        return this._hasAmPM() ? _date.default.getPeriodNames()[1] : ""
                    };
                    _proto._hasAmPM = function() {
                        const date = new Date(Date.UTC(2012, 11, 12, 3, 0, 0));
                        const dateString = date.toLocaleTimeString(_core.default.locale());
                        return dateString.match(/am|pm/i) || date.toString().match(/am|pm/i)
                    };
                    _proto._getQuarterNames = function() {
                        const quarterFormat = _message.default.format("dxGantt-quarter");
                        if (!quarterFormat) {
                            return _date.default.getQuarterNames()
                        }
                        return [(0, _string.format)(quarterFormat, 1), (0, _string.format)(quarterFormat, 2), (0, _string.format)(quarterFormat, 3), (0, _string.format)(quarterFormat, 4)]
                    };
                    _proto._getTaskTitlePosition = function(value) {
                        switch (value) {
                            case "outside":
                                return 1;
                            case "none":
                                return 2;
                            default:
                                return 0
                        }
                    };
                    _proto._getViewTypeByScaleType = function(scaleType) {
                        switch (scaleType) {
                            case "minutes":
                                return 0;
                            case "hours":
                                return 1;
                            case "sixHours":
                                return 2;
                            case "days":
                                return 3;
                            case "weeks":
                                return 4;
                            case "months":
                                return 5;
                            case "quarters":
                                return 6;
                            case "years":
                                return 7;
                            default:
                                return
                        }
                    };
                    _proto._parseEditingSettings = function(value) {
                        return {
                            enabled: value.enabled,
                            allowDependencyDelete: value.allowDependencyDeleting,
                            allowDependencyInsert: value.allowDependencyAdding,
                            allowTaskDelete: value.allowTaskDeleting,
                            allowTaskInsert: value.allowTaskAdding,
                            allowTaskUpdate: value.allowTaskUpdating,
                            allowResourceDelete: value.allowResourceDeleting,
                            allowResourceInsert: value.allowResourceAdding,
                            allowResourceUpdate: value.allowResourceUpdating,
                            allowTaskResourceUpdate: value.allowTaskResourceUpdating
                        }
                    };
                    _proto._parseViewTypeRangeSettings = function(value) {
                        return {
                            min: this._getViewTypeByScaleType(value.min),
                            max: this._getViewTypeByScaleType(value.max)
                        }
                    };
                    _proto._optionChanged = function(args) {
                        switch (args.name) {
                            case "width":
                                _Widget.prototype._optionChanged.call(this, args);
                                this._ganttViewCore.setWidth(args.value);
                                break;
                            case "height":
                                this._ganttViewCore.setHeight(args.value);
                                break;
                            case "tasks":
                            case "dependencies":
                            case "resources":
                            case "resourceAssignments":
                                this._sieveOptions = void 0;
                                this._update(true);
                                break;
                            case "showResources":
                                this._ganttViewCore.setShowResources(args.value);
                                break;
                            case "showDependencies":
                                this._ganttViewCore.setShowDependencies(args.value);
                                break;
                            case "taskTitlePosition":
                                this._ganttViewCore.setTaskTitlePosition(this._getTaskTitlePosition(args.value));
                                break;
                            case "firstDayOfWeek":
                                this._ganttViewCore.setFirstDayOfWeek(this._getFirstDayOfWeek(args.value));
                                break;
                            case "startDateRange":
                                this._ganttViewCore.setStartDateRange(args.value);
                                break;
                            case "endDateRange":
                                this._ganttViewCore.setEndDateRange(args.value);
                                break;
                            case "allowSelection":
                                this._ganttViewCore.setAllowSelection(args.value);
                                break;
                            case "selectedRowKey":
                                this._selectTask(args.value);
                                break;
                            case "editing":
                                this._ganttViewCore.setEditingSettings(this._parseEditingSettings(args.value));
                                break;
                            case "validation":
                                this._ganttViewCore.setValidationSettings(args.value);
                                this._update(true);
                                break;
                            case "showRowLines":
                                this._ganttViewCore.setRowLinesVisible(args.value);
                                break;
                            case "scaleType":
                                this._ganttViewCore.setViewType(this._getViewTypeByScaleType(args.value));
                                break;
                            case "scaleTypeRange":
                                this._ganttViewCore.setViewTypeRange(this._getViewTypeByScaleType(args.value.min), this._getViewTypeByScaleType(args.value.max));
                                break;
                            case "stripLines":
                                this._ganttViewCore.setStripLines({
                                    stripLines: args.value
                                });
                                break;
                            case "taskTooltipContentTemplate":
                                this._ganttViewCore.setTaskTooltipContentTemplate(args.value);
                                break;
                            case "taskProgressTooltipContentTemplate":
                                this._ganttViewCore.setTaskProgressTooltipContentTemplate(args.value);
                                break;
                            case "taskTimeTooltipContentTemplate":
                                this._ganttViewCore.setTaskTimeTooltipContentTemplate(args.value);
                                break;
                            case "taskContentTemplate":
                                this._ganttViewCore.setTaskContentTemplate(args.value);
                                break;
                            case "sieve":
                                this._sortAndFilter(args.value);
                                break;
                            default:
                                _Widget.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto.getRowHeight = function() {
                        return this.option("rowHeight")
                    };
                    _proto.getHeaderHeight = function() {
                        return this.option("headerHeight")
                    };
                    _proto.getGanttTasksData = function() {
                        const tasks = this.option("tasks");
                        const sieveOptions = this.getSieveOptions();
                        if (null !== sieveOptions && void 0 !== sieveOptions && sieveOptions.sievedItems && null !== sieveOptions && void 0 !== sieveOptions && sieveOptions.sieveColumn) {
                            return sieveOptions.sievedItems
                        }
                        return tasks
                    };
                    _proto._sortAndFilter = function(args) {
                        this._sieveOptions = args;
                        this._update(!(null !== args && void 0 !== args && args.expandTasks));
                        const selectedRowKey = this.option("selectedRowKey");
                        this._selectTask(selectedRowKey)
                    };
                    _proto.getSieveOptions = function() {
                        return this._sieveOptions
                    };
                    _proto.getGanttDependenciesData = function() {
                        return this.option("dependencies")
                    };
                    _proto.getGanttResourcesData = function() {
                        return this.option("resources")
                    };
                    _proto.getGanttResourceAssignmentsData = function() {
                        return this.option("resourceAssignments")
                    };
                    _proto.getGanttWorkTimeRules = function() {
                        return null
                    };
                    _proto.getExternalTaskAreaContainer = function(element) {
                        if (!this._taskAreaContainer) {
                            this._taskAreaContainer = new _uiGanttTaskArea.TaskAreaContainer(element, this)
                        }
                        return this._taskAreaContainer
                    };
                    _proto.prepareExternalTaskAreaContainer = function(element, info) {
                        if (null !== info && void 0 !== info && info.height) {
                            this._taskAreaContainer._scrollView.option("height", info.height)
                        }
                    };
                    _proto.changeGanttTaskSelection = function(id, selected) {
                        this._onSelectionChanged({
                            id: id,
                            selected: selected
                        })
                    };
                    _proto.onGanttScroll = function(scrollTop) {
                        this._onScroll({
                            scrollTop: scrollTop
                        })
                    };
                    _proto.showDialog = function(name, parameters, callback, afterClosing) {
                        this._onDialogShowing({
                            name: name,
                            parameters: parameters,
                            callback: callback,
                            afterClosing: afterClosing
                        })
                    };
                    _proto.getModelChangesListener = function() {
                        return this.option("modelChangesListener")
                    };
                    _proto.getExportInfo = function() {
                        return this.option("exportInfo")
                    };
                    _proto.showPopupMenu = function(info) {
                        this._onPopupMenuShowing(info)
                    };
                    _proto.hidePopupMenu = function(info) {
                        this._onPopupMenuHiding(info)
                    };
                    _proto.getMainElement = function() {
                        return this.option("mainElement").get(0)
                    };
                    _proto.adjustControl = function() {
                        this._onAdjustControl()
                    };
                    _proto.getRequireFirstLoadParentAutoCalc = function() {
                        return this.option("validation.autoUpdateParentTasks")
                    };
                    _proto.collapseAll = function() {
                        this._collapseAll()
                    };
                    _proto.expandAll = function() {
                        this._expandAll()
                    };
                    _proto.onTaskClick = function(key, event) {
                        this._taskClick({
                            key: key,
                            event: event
                        });
                        return true
                    };
                    _proto.onTaskDblClick = function(key, event) {
                        return this._taskDblClick({
                            key: key,
                            event: event
                        })
                    };
                    _proto.onGanttViewContextMenu = function(event, key, type) {
                        return true
                    };
                    _proto.getFormattedDateText = function(date) {
                        let result = "";
                        if (date) {
                            const datePart = _date.default.format(date, "shortDate");
                            const timeFormat = this._hasAmPM() ? "hh:mm a" : "HH:mm";
                            const timePart = _date.default.format(date, timeFormat);
                            result = datePart + " " + timePart
                        }
                        return result
                    };
                    _proto.destroyTemplate = function(container) {
                        (0, _renderer.default)(container).empty()
                    };
                    _proto.onTaskAreaSizeChanged = function(info) {
                        const scrollView = this._taskAreaContainer._scrollView;
                        if ((0, _type.isDefined)(null === info || void 0 === info ? void 0 : info.height)) {
                            const direction = (null === info || void 0 === info ? void 0 : info.height) > this._taskAreaContainer.getHeight() ? "both" : "horizontal";
                            scrollView.option("direction", direction)
                        }
                    };
                    _proto.updateGanttViewType = function(type) {
                        this._onViewTypeChanged({
                            type: type
                        })
                    };
                    _proto.getTreeListTableStyle = function() {
                        return this.callExportHelperMethod("getTreeListTableStyle")
                    };
                    _proto.getTreeListColCount = function() {
                        return this.callExportHelperMethod("getTreeListColCount")
                    };
                    _proto.getTreeListHeaderInfo = function(colIndex) {
                        return this.callExportHelperMethod("getTreeListHeaderInfo", colIndex)
                    };
                    _proto.getTreeListCellInfo = function(rowIndex, colIndex, key) {
                        return this.callExportHelperMethod("getTreeListCellInfo", key, colIndex)
                    };
                    _proto.getTreeListEmptyDataCellInfo = function() {
                        return this.callExportHelperMethod("getTreeListEmptyDataCellInfo")
                    };
                    _proto.callExportHelperMethod = function(methodName) {
                        const helper = this.option("exportHelper");
                        for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
                            args[_key - 1] = arguments[_key]
                        }
                        return helper[methodName](...args)
                    };
                    _proto.applyTasksExpandedState = function(state) {
                        var _this$_ganttViewCore3;
                        null === (_this$_ganttViewCore3 = this._ganttViewCore) || void 0 === _this$_ganttViewCore3 ? void 0 : _this$_ganttViewCore3.applyTasksExpandedState(state)
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(GanttView, [{
                        key: "bars",
                        get: function() {
                            return this.option("bars")
                        }
                    }]);
                    return GanttView
                }(_ui.default);
                exports.GanttView = GanttView
            },
        13615:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/grid_core/ui.grid_core.utils.js ***!
              \********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_utils = (obj = __webpack_require__( /*! ../../__internal/grids/grid_core/m_utils */ 60082), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _m_utils.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        71004:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/hierarchical_collection/ui.data_adapter.js ***!
              \*******************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 38377));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../ui/widget/ui.errors */ 96688));
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../../ui/widget/ui.search_box_mixin */ 2630));
                var _text_box = _interopRequireDefault(__webpack_require__( /*! ../../ui/text_box */ 29837));
                var _query = _interopRequireDefault(__webpack_require__( /*! ../../data/query */ 96687));
                var _store_helper = _interopRequireDefault(__webpack_require__( /*! ../../data/store_helper */ 99236));
                var _ui3 = _interopRequireDefault(__webpack_require__( /*! ./ui.data_converter */ 92449));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                _ui2.default.setEditorClass(_text_box.default);
                const DataAdapter = _class.default.inherit({
                    ctor: function(options) {
                        this.options = {};
                        (0, _extend.extend)(this.options, this._defaultOptions(), options);
                        this.options.dataConverter.setDataAccessors(this.options.dataAccessors);
                        this._selectedNodesKeys = [];
                        this._expandedNodesKeys = [];
                        this._dataStructure = [];
                        this._createInternalDataStructure();
                        this.getTreeNodes()
                    },
                    setOption: function(name, value) {
                        this.options[name] = value;
                        if ("recursiveSelection" === name) {
                            this._updateSelection()
                        }
                    },
                    _defaultOptions: function() {
                        return {
                            dataAccessors: void 0,
                            items: [],
                            multipleSelection: true,
                            recursiveSelection: false,
                            recursiveExpansion: false,
                            rootValue: 0,
                            searchValue: "",
                            dataType: "tree",
                            searchMode: "contains",
                            dataConverter: new _ui3.default,
                            onNodeChanged: _common.noop,
                            sort: null
                        }
                    },
                    _createInternalDataStructure: function() {
                        this._initialDataStructure = this.options.dataConverter.createPlainStructure(this.options.items, this.options.rootValue, this.options.dataType);
                        this._dataStructure = this.options.searchValue.length ? this.search(this.options.searchValue) : this._initialDataStructure;
                        this.options.dataConverter._dataStructure = this._dataStructure;
                        this._updateSelection();
                        this._updateExpansion()
                    },
                    _updateSelection: function() {
                        if (this.options.recursiveSelection) {
                            this._setChildrenSelection();
                            this._setParentSelection()
                        }
                        this._selectedNodesKeys = this._updateNodesKeysArray("selected")
                    },
                    _updateExpansion: function(key) {
                        if (this.options.recursiveExpansion) {
                            key ? this._updateOneBranch(key) : this._setParentExpansion()
                        }
                        this._expandedNodesKeys = this._updateNodesKeysArray("expanded")
                    },
                    _updateNodesKeysArray: function(property) {
                        const that = this;
                        let array = [];
                        (0, _iterator.each)(that._getDataBySelectionMode(), (function(_, node) {
                            if (!that._isNodeVisible(node)) {
                                return
                            }
                            if (node.internalFields[property]) {
                                if ("expanded" === property || that.options.multipleSelection) {
                                    array.push(node.internalFields.key)
                                } else {
                                    array.length && that.toggleSelection(array[0], false, true);
                                    array = [node.internalFields.key]
                                }
                            }
                        }));
                        return array
                    },
                    _getDataBySelectionMode: function() {
                        return this.options.multipleSelection ? this.getData() : this.getFullData()
                    },
                    _isNodeVisible: function(node) {
                        return false !== node.internalFields.item.visible
                    },
                    _getByKey: function(data, key) {
                        return data === this._dataStructure ? this.options.dataConverter._getByKey(key) : this.options.dataConverter.getByKey(data, key)
                    },
                    _setChildrenSelection: function() {
                        const that = this;
                        (0, _iterator.each)(this._dataStructure, (function(_, node) {
                            if (!node.internalFields.childrenKeys.length) {
                                return
                            }
                            const isSelected = node.internalFields.selected;
                            true === isSelected && that._toggleChildrenSelection(node, isSelected)
                        }))
                    },
                    _setParentSelection: function() {
                        const that = this;
                        (0, _iterator.each)(this._dataStructure, (function(_, node) {
                            const parent = that.options.dataConverter.getParentNode(node);
                            if (parent && node.internalFields.parentKey !== that.options.rootValue) {
                                that._iterateParents(node, (function(parent) {
                                    const newParentState = that._calculateSelectedState(parent);
                                    that._setFieldState(parent, "selected", newParentState)
                                }))
                            }
                        }))
                    },
                    _setParentExpansion: function() {
                        const that = this;
                        (0, _iterator.each)(this._dataStructure, (function(_, node) {
                            if (!node.internalFields.expanded) {
                                return
                            }
                            that._updateOneBranch(node.internalFields.key)
                        }))
                    },
                    _updateOneBranch: function(key) {
                        const that = this;
                        const node = this.getNodeByKey(key);
                        that._iterateParents(node, (function(parent) {
                            that._setFieldState(parent, "expanded", true)
                        }))
                    },
                    _iterateChildren: function(node, recursive, callback, processedKeys) {
                        if (!(0, _type.isFunction)(callback)) {
                            return
                        }
                        const that = this;
                        const nodeKey = node.internalFields.key;
                        processedKeys = processedKeys || [];
                        if (-1 === processedKeys.indexOf(nodeKey)) {
                            processedKeys.push(nodeKey);
                            (0, _iterator.each)(node.internalFields.childrenKeys, (function(_, key) {
                                const child = that.getNodeByKey(key);
                                callback(child);
                                if (child.internalFields.childrenKeys.length && recursive) {
                                    that._iterateChildren(child, recursive, callback, processedKeys)
                                }
                            }))
                        }
                    },
                    _iterateParents: function(node, callback, processedKeys) {
                        if (node.internalFields.parentKey === this.options.rootValue || !(0, _type.isFunction)(callback)) {
                            return
                        }
                        processedKeys = processedKeys || [];
                        const key = node.internalFields.key;
                        if (-1 === processedKeys.indexOf(key)) {
                            processedKeys.push(key);
                            const parent = this.options.dataConverter.getParentNode(node);
                            if (parent) {
                                callback(parent);
                                if (parent.internalFields.parentKey !== this.options.rootValue) {
                                    this._iterateParents(parent, callback, processedKeys)
                                }
                            }
                        }
                    },
                    _calculateSelectedState: function(node) {
                        const itemsCount = node.internalFields.childrenKeys.length;
                        let selectedItemsCount = 0;
                        let invisibleItemsCount = 0;
                        let result = false;
                        for (let i = 0; i <= itemsCount - 1; i++) {
                            const childNode = this.getNodeByKey(node.internalFields.childrenKeys[i]);
                            const isChildInvisible = false === childNode.internalFields.item.visible;
                            const childState = childNode.internalFields.selected;
                            if (isChildInvisible) {
                                invisibleItemsCount++;
                                continue
                            }
                            if (childState) {
                                selectedItemsCount++
                            } else if (void 0 === childState) {
                                selectedItemsCount += .5
                            }
                        }
                        if (selectedItemsCount) {
                            result = selectedItemsCount === itemsCount - invisibleItemsCount ? true : void 0
                        }
                        return result
                    },
                    _toggleChildrenSelection: function(node, state) {
                        const that = this;
                        this._iterateChildren(node, true, (function(child) {
                            if (that._isNodeVisible(child)) {
                                that._setFieldState(child, "selected", state)
                            }
                        }))
                    },
                    _setFieldState: function(node, field, state) {
                        if (node.internalFields[field] === state) {
                            return
                        }
                        node.internalFields[field] = state;
                        if (node.internalFields.publicNode) {
                            node.internalFields.publicNode[field] = state
                        }
                        this.options.dataAccessors.setters[field](node.internalFields.item, state);
                        this.options.onNodeChanged(node)
                    },
                    _markChildren: function(keys) {
                        const that = this;
                        (0, _iterator.each)(keys, (function(_, key) {
                            const index = that.getIndexByKey(key);
                            const node = that.getNodeByKey(key);
                            that._dataStructure[index] = 0;
                            node.internalFields.childrenKeys.length && that._markChildren(node.internalFields.childrenKeys)
                        }))
                    },
                    _removeNode: function(key) {
                        const node = this.getNodeByKey(key);
                        this._dataStructure[this.getIndexByKey(key)] = 0;
                        this._markChildren(node.internalFields.childrenKeys);
                        const that = this;
                        let counter = 0;
                        const items = (0, _extend.extend)([], this._dataStructure);
                        (0, _iterator.each)(items, (function(index, item) {
                            if (!item) {
                                that._dataStructure.splice(index - counter, 1);
                                counter++
                            }
                        }))
                    },
                    _addNode: function(item) {
                        const dataConverter = this.options.dataConverter;
                        const node = dataConverter._convertItemToNode(item, this.options.dataAccessors.getters.parentKey(item));
                        this._dataStructure = this._dataStructure.concat(node);
                        this._initialDataStructure = this._initialDataStructure.concat(node);
                        dataConverter._dataStructure = dataConverter._dataStructure.concat(node)
                    },
                    _updateFields: function() {
                        this.options.dataConverter.updateChildrenKeys();
                        this._updateSelection();
                        this._updateExpansion()
                    },
                    getSelectedNodesKeys: function() {
                        return this._selectedNodesKeys
                    },
                    getExpandedNodesKeys: function() {
                        return this._expandedNodesKeys
                    },
                    getData: function() {
                        return this._dataStructure
                    },
                    getFullData: function() {
                        return this._initialDataStructure
                    },
                    getNodeByItem: function(item) {
                        let result = null;
                        (0, _iterator.each)(this._dataStructure, (function(_, node) {
                            if (node.internalFields.item === item) {
                                result = node;
                                return false
                            }
                        }));
                        return result
                    },
                    getNodesByItems: function(items) {
                        const that = this;
                        const nodes = [];
                        (0, _iterator.each)(items, (function(_, item) {
                            const node = that.getNodeByItem(item);
                            node && nodes.push(node)
                        }));
                        return nodes
                    },
                    getNodeByKey: function(key, data) {
                        return this._getByKey(data || this._getDataBySelectionMode(), key)
                    },
                    getTreeNodes: function() {
                        return this.options.dataConverter.convertToPublicNodes(this.getRootNodes())
                    },
                    getItemsCount: function() {
                        return this.options.dataConverter.getItemsCount()
                    },
                    getVisibleItemsCount: function() {
                        return this.options.dataConverter.getVisibleItemsCount()
                    },
                    getPublicNode: function(node) {
                        return node.internalFields.publicNode
                    },
                    getRootNodes: function() {
                        return this.getChildrenNodes(this.options.rootValue)
                    },
                    getChildrenNodes: function(parentKey) {
                        return (0, _query.default)(this._dataStructure, {
                            langParams: this.options.langParams
                        }).filter(["internalFields.parentKey", parentKey]).toArray()
                    },
                    getIndexByKey: function(key) {
                        return this.options.dataConverter.getIndexByKey(key)
                    },
                    addItem: function(item) {
                        this._addNode(item);
                        this._updateFields()
                    },
                    removeItem: function(key) {
                        this._removeNode(key);
                        this._updateFields()
                    },
                    toggleSelection: function(key, state, selectRecursive) {
                        const isSingleModeUnselect = this._isSingleModeUnselect(state);
                        const node = this._getByKey(selectRecursive || isSingleModeUnselect ? this._initialDataStructure : this._dataStructure, key);
                        this._setFieldState(node, "selected", state);
                        if (this.options.recursiveSelection && !selectRecursive) {
                            state ? this._setChildrenSelection() : this._toggleChildrenSelection(node, state);
                            this._setParentSelection()
                        }
                        this._selectedNodesKeys = this._updateNodesKeysArray("selected")
                    },
                    _isSingleModeUnselect: function(selectionState) {
                        return !this.options.multipleSelection && !selectionState
                    },
                    toggleNodeDisabledState: function(key, state) {
                        const node = this.getNodeByKey(key);
                        this._setFieldState(node, "disabled", state)
                    },
                    toggleSelectAll: function(state) {
                        if (!(0, _type.isDefined)(state)) {
                            return
                        }
                        const that = this;
                        const lastSelectedKey = that._selectedNodesKeys[that._selectedNodesKeys.length - 1];
                        const dataStructure = that._isSingleModeUnselect(state) ? this._initialDataStructure : this._dataStructure;
                        (0, _iterator.each)(dataStructure, (function(index, node) {
                            if (!that._isNodeVisible(node)) {
                                return
                            }
                            that._setFieldState(node, "selected", state)
                        }));
                        that._selectedNodesKeys = that._updateNodesKeysArray("selected");
                        if (!state && that.options.selectionRequired) {
                            that.toggleSelection(lastSelectedKey, true)
                        }
                    },
                    isAllSelected: function() {
                        if (this.getSelectedNodesKeys().length) {
                            return this.getSelectedNodesKeys().length === this.getVisibleItemsCount() ? true : void 0
                        } else {
                            return false
                        }
                    },
                    toggleExpansion: function(key, state) {
                        const node = this.getNodeByKey(key);
                        this._setFieldState(node, "expanded", state);
                        if (state) {
                            this._updateExpansion(key)
                        }
                        this._expandedNodesKeys = this._updateNodesKeysArray("expanded")
                    },
                    isFiltered: function(item) {
                        return !this.options.searchValue.length || !!this._filterDataStructure(this.options.searchValue, [item]).length
                    },
                    _createCriteria: function(selector, value, operation) {
                        const searchFilter = [];
                        if (!Array.isArray(selector)) {
                            return [selector, operation, value]
                        }(0, _iterator.each)(selector, (function(i, item) {
                            searchFilter.push([item, operation, value], "or")
                        }));
                        searchFilter.pop();
                        return searchFilter
                    },
                    _filterDataStructure: function(filterValue, dataStructure) {
                        const selector = this.options.searchExpr || this.options.dataAccessors.getters.display;
                        const operation = _ui2.default.getOperationBySearchMode(this.options.searchMode);
                        const criteria = this._createCriteria(selector, filterValue, operation);
                        dataStructure = dataStructure || this._initialDataStructure;
                        return (0, _query.default)(dataStructure, {
                            langParams: this.options.langParams
                        }).filter(criteria).toArray()
                    },
                    search: function(searchValue) {
                        const that = this;
                        let matches = this._filterDataStructure(searchValue);
                        const dataConverter = this.options.dataConverter;
                        ! function lookForParents(matches, index) {
                            const length = matches.length;
                            while (index < length) {
                                const node = matches[index];
                                if (node.internalFields.parentKey === that.options.rootValue) {
                                    index++;
                                    continue
                                }
                                const parent = dataConverter.getParentNode(node);
                                if (!parent) {
                                    _ui.default.log("W1007", node.internalFields.parentKey, node.internalFields.key);
                                    index++;
                                    continue
                                }
                                if (!parent.internalFields.expanded) {
                                    that._setFieldState(parent, "expanded", true)
                                }
                                if (matches.includes(parent)) {
                                    index++;
                                    continue
                                }
                                matches.splice(index, 0, parent);
                                lookForParents(matches, index)
                            }
                        }(matches, 0);
                        if (this.options.sort) {
                            matches = _store_helper.default.queryByOptions((0, _query.default)(matches), {
                                sort: this.options.sort,
                                langParams: this.options.langParams
                            }).toArray()
                        }
                        dataConverter._indexByKey = {};
                        (0, _iterator.each)(matches, (function(index, node) {
                            node.internalFields.childrenKeys = [];
                            dataConverter._indexByKey[node.internalFields.key] = index
                        }));
                        dataConverter._dataStructure = matches;
                        dataConverter.setChildrenKeys();
                        return dataConverter._dataStructure
                    }
                });
                var _default = DataAdapter;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        92449:
            /*!*********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/hierarchical_collection/ui.data_converter.js ***!
              \*********************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 38377));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../ui/widget/ui.errors */ 96688));
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const DataConverter = _class.default.inherit({
                    ctor: function() {
                        this._dataStructure = [];
                        this._itemsCount = 0;
                        this._visibleItemsCount = 0
                    },
                    _indexByKey: {},
                    _convertItemsToNodes: function(items, parentKey) {
                        const that = this;
                        (0, _iterator.each)(items, (function(_, item) {
                            const parentId = (0, _type.isDefined)(parentKey) ? parentKey : that._getParentId(item);
                            const node = that._convertItemToNode(item, parentId);
                            that._dataStructure.push(node);
                            that._checkForDuplicateId(node.internalFields.key);
                            that._indexByKey[node.internalFields.key] = that._dataStructure.length - 1;
                            if (that._itemHasChildren(item)) {
                                that._convertItemsToNodes(that._dataAccessors.getters.items(item), node.internalFields.key)
                            }
                        }))
                    },
                    _checkForDuplicateId: function(key) {
                        if ((0, _type.isDefined)(this._indexByKey[key])) {
                            throw _ui.default.Error("E1040", key)
                        }
                    },
                    _getParentId: function(item) {
                        return "plain" === this._dataType ? this._dataAccessors.getters.parentKey(item) : void 0
                    },
                    _itemHasChildren: function(item) {
                        if ("plain" === this._dataType) {
                            return
                        }
                        const items = this._dataAccessors.getters.items(item);
                        return items && items.length
                    },
                    _getUniqueKey: function(item) {
                        const keyGetter = this._dataAccessors.getters.key;
                        const itemKey = keyGetter(item);
                        const isCorrectKey = keyGetter && (itemKey || 0 === itemKey) && (0, _type.isPrimitive)(itemKey);
                        return isCorrectKey ? itemKey : this.getItemsCount()
                    },
                    _convertItemToNode: function(item, parentKey) {
                        this._itemsCount++;
                        false !== item.visible && this._visibleItemsCount++;
                        const node = {
                            internalFields: {
                                disabled: this._dataAccessors.getters.disabled(item, {
                                    defaultValue: false
                                }),
                                expanded: this._dataAccessors.getters.expanded(item, {
                                    defaultValue: false
                                }),
                                selected: this._dataAccessors.getters.selected(item, {
                                    defaultValue: false
                                }),
                                key: this._getUniqueKey(item),
                                parentKey: (0, _type.isDefined)(parentKey) ? parentKey : this._rootValue,
                                item: this._makeObjectFromPrimitive(item),
                                childrenKeys: []
                            }
                        };
                        (0, _extend.extend)(node, item);
                        delete node.items;
                        return node
                    },
                    setChildrenKeys: function() {
                        const that = this;
                        (0, _iterator.each)(this._dataStructure, (function(_, node) {
                            if (node.internalFields.parentKey === that._rootValue) {
                                return
                            }
                            const parent = that.getParentNode(node);
                            parent && parent.internalFields.childrenKeys.push(node.internalFields.key)
                        }))
                    },
                    _makeObjectFromPrimitive: function(item) {
                        if ((0, _type.isPrimitive)(item)) {
                            const key = item;
                            item = {};
                            this._dataAccessors.setters.key(item, key)
                        }
                        return item
                    },
                    _convertToPublicNode: function(node, parent) {
                        if (!node) {
                            return null
                        }
                        const publicNode = {
                            text: this._dataAccessors.getters.display(node),
                            key: node.internalFields.key,
                            selected: node.internalFields.selected,
                            expanded: node.internalFields.expanded,
                            disabled: node.internalFields.disabled,
                            parent: parent || null,
                            itemData: node.internalFields.item,
                            children: [],
                            items: []
                        };
                        if (publicNode.parent) {
                            publicNode.parent.children.push(publicNode);
                            publicNode.parent.items.push(publicNode)
                        }
                        return publicNode
                    },
                    convertToPublicNodes: function(data, parent) {
                        if (!data.length) {
                            return []
                        }
                        const that = this;
                        const publicNodes = [];
                        (0, _iterator.each)(data, (function(_, node) {
                            node = (0, _type.isPrimitive)(node) ? that._getByKey(node) : node;
                            const publicNode = that._convertToPublicNode(node, parent);
                            publicNode.children = that.convertToPublicNodes(node.internalFields.childrenKeys, publicNode);
                            publicNodes.push(publicNode);
                            node.internalFields.publicNode = publicNode
                        }));
                        return publicNodes
                    },
                    setDataAccessors: function(accessors) {
                        this._dataAccessors = accessors
                    },
                    _getByKey: function(key) {
                        return this._dataStructure[this.getIndexByKey(key)] || null
                    },
                    getParentNode: function(node) {
                        return this._getByKey(node.internalFields.parentKey)
                    },
                    getByKey: function(data, key) {
                        if (null === key || void 0 === key) {
                            return null
                        }
                        let result = null;
                        const that = this;
                        return function(data, key) {
                            (0, _iterator.each)(data, (function(_, element) {
                                const currentElementKey = element.internalFields && element.internalFields.key || that._dataAccessors.getters.key(element);
                                if (currentElementKey.toString() === key.toString()) {
                                    result = element;
                                    return false
                                }
                            }));
                            return result
                        }(data, key)
                    },
                    getItemsCount: function() {
                        return this._itemsCount
                    },
                    getVisibleItemsCount: function() {
                        return this._visibleItemsCount
                    },
                    updateIndexByKey: function() {
                        const that = this;
                        this._indexByKey = {};
                        (0, _iterator.each)(this._dataStructure, (function(index, node) {
                            that._checkForDuplicateId(node.internalFields.key);
                            that._indexByKey[node.internalFields.key] = index
                        }))
                    },
                    updateChildrenKeys: function() {
                        this._indexByKey = {};
                        this.removeChildrenKeys();
                        this.updateIndexByKey();
                        this.setChildrenKeys()
                    },
                    removeChildrenKeys: function() {
                        this._indexByKey = {};
                        (0, _iterator.each)(this._dataStructure, (function(index, node) {
                            node.internalFields.childrenKeys = []
                        }))
                    },
                    getIndexByKey: function(key) {
                        return this._indexByKey[key]
                    },
                    createPlainStructure: function(items, rootValue, dataType) {
                        this._itemsCount = 0;
                        this._visibleItemsCount = 0;
                        this._rootValue = rootValue;
                        this._dataType = dataType;
                        this._indexByKey = {};
                        this._convertItemsToNodes(items);
                        this.setChildrenKeys();
                        return this._dataStructure
                    }
                });
                var _default = DataConverter;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        65810:
            /*!*************************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/hierarchical_collection/ui.hierarchical_collection_widget.js ***!
              \*************************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _data = __webpack_require__( /*! ../../core/utils/data */ 47617);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _icon = __webpack_require__( /*! ../../core/utils/icon */ 44899);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./ui.data_adapter */ 71004));
                var _uiCollection_widget = _interopRequireDefault(__webpack_require__( /*! ../collection/ui.collection_widget.edit */ 11050));
                var _bindable_template = __webpack_require__( /*! ../../core/templates/bindable_template */ 93280);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const HierarchicalCollectionWidget = _uiCollection_widget.default.inherit({
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            keyExpr: "id",
                            displayExpr: "text",
                            selectedExpr: "selected",
                            disabledExpr: "disabled",
                            itemsExpr: "items",
                            hoverStateEnabled: true,
                            parentIdExpr: "parentId",
                            expandedExpr: "expanded"
                        })
                    },
                    _defaultOptionsRules: function() {
                        return this.callBase().concat([{
                            device: function() {
                                return "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator()
                            },
                            options: {
                                focusStateEnabled: true
                            }
                        }])
                    },
                    _init: function() {
                        this.callBase();
                        this._initAccessors();
                        this._initDataAdapter();
                        this._initDynamicTemplates()
                    },
                    _initDataSource: function() {
                        this.callBase();
                        this._dataSource && this._dataSource.paginate(false)
                    },
                    _initDataAdapter: function() {
                        const accessors = this._createDataAdapterAccessors();
                        this._dataAdapter = new _ui.default((0, _extend.extend)({
                            dataAccessors: {
                                getters: accessors.getters,
                                setters: accessors.setters
                            },
                            items: this.option("items")
                        }, this._getDataAdapterOptions()))
                    },
                    _getDataAdapterOptions: _common.noop,
                    _getItemExtraPropNames: _common.noop,
                    _initDynamicTemplates: function() {
                        const fields = ["text", "html", "items", "icon"].concat(this._getItemExtraPropNames());
                        this._templateManager.addDefaultTemplates({
                            item: new _bindable_template.BindableTemplate(this._addContent.bind(this), fields, this.option("integrationOptions.watchMethod"), {
                                text: this._displayGetter,
                                items: this._itemsGetter
                            })
                        })
                    },
                    _addContent: function($container, itemData) {
                        $container.html(itemData.html).append(this._getIconContainer(itemData)).append(this._getTextContainer(itemData))
                    },
                    _getLinkContainer: function(iconContainer, textContainer, _ref) {
                        let {
                            linkAttr: linkAttr,
                            url: url
                        } = _ref;
                        const linkAttributes = (0, _type.isObject)(linkAttr) ? linkAttr : {};
                        return (0, _renderer.default)("<a>").addClass("dx-item-url").attr(_extends({}, linkAttributes, {
                            href: url
                        })).append(iconContainer).append(textContainer)
                    },
                    _getIconContainer: function(itemData) {
                        if (!itemData.icon) {
                            return
                        }
                        const $imageContainer = (0, _icon.getImageContainer)(itemData.icon);
                        if ($imageContainer.is("img")) {
                            $imageContainer.attr("alt", "".concat(this.NAME, " item icon"))
                        }
                        return $imageContainer
                    },
                    _getTextContainer: function(itemData) {
                        return (0, _renderer.default)("<span>").text(itemData.text)
                    },
                    _initAccessors: function() {
                        const that = this;
                        (0, _iterator.each)(this._getAccessors(), (function(_, accessor) {
                            that._compileAccessor(accessor)
                        }));
                        this._compileDisplayGetter()
                    },
                    _getAccessors: function() {
                        return ["key", "selected", "items", "disabled", "parentId", "expanded"]
                    },
                    _getChildNodes: function(node) {
                        const that = this;
                        const arr = [];
                        (0, _iterator.each)(node.internalFields.childrenKeys, (function(_, key) {
                            const childNode = that._dataAdapter.getNodeByKey(key);
                            arr.push(childNode)
                        }));
                        return arr
                    },
                    _hasChildren: function(node) {
                        return node && node.internalFields.childrenKeys.length
                    },
                    _compileAccessor: function(optionName) {
                        const getter = "_" + optionName + "Getter";
                        const setter = "_" + optionName + "Setter";
                        const optionExpr = this.option(optionName + "Expr");
                        if (!optionExpr) {
                            this[getter] = _common.noop;
                            this[setter] = _common.noop;
                            return
                        } else if ((0, _type.isFunction)(optionExpr)) {
                            this[setter] = function(obj, value) {
                                obj[optionExpr()] = value
                            };
                            this[getter] = function(obj) {
                                return obj[optionExpr()]
                            };
                            return
                        }
                        this[getter] = (0, _data.compileGetter)(optionExpr);
                        this[setter] = (0, _data.compileSetter)(optionExpr)
                    },
                    _createDataAdapterAccessors: function() {
                        const that = this;
                        const accessors = {
                            getters: {},
                            setters: {}
                        };
                        (0, _iterator.each)(this._getAccessors(), (function(_, accessor) {
                            const getterName = "_" + accessor + "Getter";
                            const setterName = "_" + accessor + "Setter";
                            const newAccessor = "parentId" === accessor ? "parentKey" : accessor;
                            accessors.getters[newAccessor] = that[getterName];
                            accessors.setters[newAccessor] = that[setterName]
                        }));
                        accessors.getters.display = !this._displayGetter ? itemData => itemData.text : this._displayGetter;
                        return accessors
                    },
                    _initMarkup: function() {
                        this.callBase();
                        this._addWidgetClass()
                    },
                    _addWidgetClass: function() {
                        this._focusTarget().addClass(this._widgetClass())
                    },
                    _widgetClass: _common.noop,
                    _renderItemFrame: function(index, itemData) {
                        const $itemFrame = this.callBase.apply(this, arguments);
                        $itemFrame.toggleClass("dx-state-disabled", !!this._disabledGetter(itemData));
                        return $itemFrame
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "displayExpr":
                            case "keyExpr":
                                this._initAccessors();
                                this._initDynamicTemplates();
                                this.repaint();
                                break;
                            case "itemsExpr":
                            case "selectedExpr":
                            case "disabledExpr":
                            case "expandedExpr":
                            case "parentIdExpr":
                                this._initAccessors();
                                this._initDataAdapter();
                                this.repaint();
                                break;
                            case "items":
                                this._initDataAdapter();
                                this.callBase(args);
                                break;
                            default:
                                this.callBase(args)
                        }
                    }
                });
                var _default = HierarchicalCollectionWidget;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        9619:
            /*!***************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor.js ***!
              \***************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _ui = (obj = __webpack_require__( /*! ./html_editor/ui.html_editor */ 15887), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _ui.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        56957:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/converterController.js ***!
              \***********************************************************************************/
            function(module, exports) {
                exports.default = void 0;
                let ConverterController = function() {
                    function ConverterController() {
                        this._converters = {}
                    }
                    var _proto = ConverterController.prototype;
                    _proto.addConverter = function(name, converter) {
                        this._converters[name] = converter
                    };
                    _proto.getConverter = function(name) {
                        return this._converters[name]
                    };
                    return ConverterController
                }();
                const controller = new ConverterController;
                var _default = controller;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        44844:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/converters/delta.js ***!
              \********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _converterController = (obj = __webpack_require__( /*! ../converterController */ 56957), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                let DeltaConverter = function() {
                    function DeltaConverter() {}
                    var _proto = DeltaConverter.prototype;
                    _proto.setQuillInstance = function(quillInstance) {
                        this.quillInstance = quillInstance
                    };
                    _proto.toHtml = function() {
                        if (!this.quillInstance) {
                            return
                        }
                        return this._isQuillEmpty() ? "" : this.quillInstance.getSemanticHTML(0, this.quillInstance.getLength() + 1)
                    };
                    _proto._isQuillEmpty = function() {
                        const delta = this.quillInstance.getContents();
                        return 1 === delta.length() && this._isDeltaEmpty(delta)
                    };
                    _proto._isDeltaEmpty = function(delta) {
                        return delta.reduce((__, _ref) => {
                            let {
                                insert: insert
                            } = _ref;
                            return -1 !== insert.indexOf("\n")
                        })
                    };
                    return DeltaConverter
                }();
                _converterController.default.addConverter("delta", DeltaConverter);
                var _default = DeltaConverter;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        52935:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/converters/markdown.js ***!
              \***********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _turndown = _interopRequireDefault(__webpack_require__( /*! turndown */ 42552));
                var _devextremeShowdown = _interopRequireDefault(__webpack_require__( /*! devextreme-showdown */ 4848));
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 58201);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../widget/ui.errors */ 96688));
                var _converterController = _interopRequireDefault(__webpack_require__( /*! ../converterController */ 56957));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                let MarkdownConverter = function() {
                    function MarkdownConverter() {
                        var _this$_html2Markdown;
                        const window = (0, _window.getWindow)();
                        const turndown = window && window.TurndownService || _turndown.default;
                        const showdown = window && window.showdown || _devextremeShowdown.default;
                        if (!turndown) {
                            throw _ui.default.Error("E1041", "Turndown")
                        }
                        if (!showdown) {
                            throw _ui.default.Error("E1041", "DevExtreme-Showdown")
                        }
                        this._html2Markdown = new turndown;
                        if (null !== (_this$_html2Markdown = this._html2Markdown) && void 0 !== _this$_html2Markdown && _this$_html2Markdown.addRule) {
                            this._html2Markdown.addRule("emptyLine", {
                                filter: element => "p" === element.nodeName.toLowerCase() && "<br>" === element.innerHTML,
                                replacement: function() {
                                    return "<br>"
                                }
                            });
                            this._html2Markdown.keep(["table"])
                        }
                        this._markdown2Html = new showdown.Converter({
                            simpleLineBreaks: true,
                            strikethrough: true,
                            tables: true
                        })
                    }
                    var _proto = MarkdownConverter.prototype;
                    _proto.toMarkdown = function(htmlMarkup) {
                        return this._html2Markdown.turndown(htmlMarkup || "")
                    };
                    _proto.toHtml = function(markdownMarkup) {
                        let markup = this._markdown2Html.makeHtml(markdownMarkup);
                        if (markup) {
                            markup = markup.replace(new RegExp("\\r?\\n", "g"), "")
                        }
                        return markup
                    };
                    return MarkdownConverter
                }();
                _converterController.default.addConverter("markdown", MarkdownConverter);
                var _default = MarkdownConverter;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        90223:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/formats/align.js ***!
              \*****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _devextremeQuill = (obj = __webpack_require__( /*! devextreme-quill */ 9549), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                let AlignStyle = {};
                if (_devextremeQuill.default) {
                    AlignStyle = _devextremeQuill.default.import("attributors/style/align");
                    AlignStyle.whitelist.push("left")
                }
                var _default = AlignStyle;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        73360:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/formats/font.js ***!
              \****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _devextremeQuill = (obj = __webpack_require__( /*! devextreme-quill */ 9549), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                let FontStyle = {};
                if (_devextremeQuill.default) {
                    FontStyle = _devextremeQuill.default.import("attributors/style/font");
                    FontStyle.whitelist = null
                }
                var _default = FontStyle;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        72446:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/formats/image.js ***!
              \*****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _devextremeQuill = (obj = __webpack_require__( /*! devextreme-quill */ 9549), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let ExtImage = {};
                if (_devextremeQuill.default) {
                    const Image = _devextremeQuill.default.import("formats/image");
                    ExtImage = function(_Image) {
                        ! function(subClass, superClass) {
                            subClass.prototype = Object.create(superClass.prototype);
                            subClass.prototype.constructor = subClass;
                            _setPrototypeOf(subClass, superClass)
                        }(ExtImage, _Image);

                        function ExtImage() {
                            return _Image.apply(this, arguments) || this
                        }
                        ExtImage.create = function(data) {
                            const SRC = data && data.src || data;
                            const node = _Image.create.call(this, SRC);
                            if ((0, _type.isObject)(data)) {
                                const setAttribute = (attr, value) => {
                                    data[attr] && node.setAttribute(attr, value)
                                };
                                setAttribute("alt", data.alt);
                                setAttribute("width", data.width);
                                setAttribute("height", data.height)
                            }
                            return node
                        };
                        ExtImage.formats = function(domNode) {
                            const formats = _Image.formats.call(this, domNode);
                            formats.imageSrc = domNode.getAttribute("src");
                            return formats
                        };
                        var _proto = ExtImage.prototype;
                        _proto.formats = function() {
                            const formats = _Image.prototype.formats.call(this);
                            const floatValue = this.domNode.style.float;
                            if (floatValue) {
                                formats.float = floatValue
                            }
                            return formats
                        };
                        _proto.format = function(name, value) {
                            if ("float" === name) {
                                this.domNode.style[name] = value
                            } else {
                                _Image.prototype.format.call(this, name, value)
                            }
                        };
                        ExtImage.value = function(domNode) {
                            return {
                                src: domNode.getAttribute("src"),
                                width: domNode.getAttribute("width"),
                                height: domNode.getAttribute("height"),
                                alt: domNode.getAttribute("alt")
                            }
                        };
                        return ExtImage
                    }(Image);
                    ExtImage.blotName = "extendedImage"
                }
                var _default = ExtImage;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        8980:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/formats/link.js ***!
              \****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _devextremeQuill = (obj = __webpack_require__( /*! devextreme-quill */ 9549), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let ExtLink = {};
                if (_devextremeQuill.default) {
                    const Link = _devextremeQuill.default.import("formats/link");
                    ExtLink = function(_Link) {
                        ! function(subClass, superClass) {
                            subClass.prototype = Object.create(superClass.prototype);
                            subClass.prototype.constructor = subClass;
                            _setPrototypeOf(subClass, superClass)
                        }(ExtLink, _Link);

                        function ExtLink() {
                            return _Link.apply(this, arguments) || this
                        }
                        ExtLink.create = function(data) {
                            var _data$href;
                            const HREF = null !== (_data$href = null === data || void 0 === data ? void 0 : data.href) && void 0 !== _data$href ? _data$href : data;
                            const node = _Link.create.call(this, HREF);
                            if ((0, _type.isObject)(data)) {
                                if (data.text) {
                                    node.innerText = data.text
                                }
                                if (!data.target) {
                                    node.removeAttribute("target")
                                }
                            }
                            return node
                        };
                        ExtLink.formats = function(domNode) {
                            return {
                                href: domNode.getAttribute("href"),
                                target: domNode.getAttribute("target")
                            }
                        };
                        var _proto = ExtLink.prototype;
                        _proto.formats = function() {
                            const formats = _Link.prototype.formats.call(this);
                            const {
                                href: href,
                                target: target
                            } = ExtLink.formats(this.domNode);
                            formats.link = href;
                            formats.target = target;
                            return formats
                        };
                        _proto.format = function(name, value) {
                            if ("link" === name && (0, _type.isObject)(value)) {
                                if (value.text) {
                                    this.domNode.innerText = value.text
                                }
                                if (value.target) {
                                    this.domNode.setAttribute("target", "_blank")
                                } else {
                                    this.domNode.removeAttribute("target")
                                }
                                this.domNode.setAttribute("href", value.href)
                            } else {
                                _Link.prototype.format.call(this, name, value)
                            }
                        };
                        ExtLink.value = function(domNode) {
                            return {
                                href: domNode.getAttribute("href"),
                                text: domNode.innerText,
                                target: !!domNode.getAttribute("target")
                            }
                        };
                        return ExtLink
                    }(Link)
                }
                var _default = ExtLink;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        72410:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/formats/mention.js ***!
              \*******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _devextremeQuill = _interopRequireDefault(__webpack_require__( /*! devextreme-quill */ 9549));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _templates_storage = _interopRequireDefault(__webpack_require__( /*! ../utils/templates_storage */ 68953));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let Mention = {};
                if (_devextremeQuill.default) {
                    const Embed = _devextremeQuill.default.import("blots/embed");
                    const MENTION_CLASS = "dx-mention";
                    Mention = function(_Embed) {
                        ! function(subClass, superClass) {
                            subClass.prototype = Object.create(superClass.prototype);
                            subClass.prototype.constructor = subClass;
                            _setPrototypeOf(subClass, superClass)
                        }(Mention, _Embed);

                        function Mention(scroll, node) {
                            var _this;
                            _this = _Embed.call(this, scroll, node) || this;
                            _this.renderContent(_this.contentNode, Mention.value(node));
                            return _this
                        }
                        Mention.create = function(data) {
                            const node = _Embed.create.call(this);
                            node.setAttribute("spellcheck", false);
                            node.dataset.marker = data.marker;
                            node.dataset.mentionValue = data.value;
                            node.dataset.id = data.id;
                            return node
                        };
                        Mention.value = function(node) {
                            return {
                                marker: node.dataset.marker,
                                id: node.dataset.id,
                                value: node.dataset.mentionValue
                            }
                        };
                        var _proto = Mention.prototype;
                        _proto.renderContent = function(node, data) {
                            const template = Mention._templatesStorage.get({
                                editorKey: data.keyInTemplateStorage,
                                marker: data.marker
                            });
                            if (template) {
                                template.render({
                                    model: data,
                                    container: node
                                })
                            } else {
                                this.baseContentRender(node, data)
                            }
                        };
                        _proto.baseContentRender = function(node, data) {
                            const $marker = (0, _renderer.default)("<span>").text(data.marker);
                            (0, _renderer.default)(node).append($marker).append(data.value)
                        };
                        Mention.addTemplate = function(data, template) {
                            this._templatesStorage.set(data, template)
                        };
                        Mention.removeTemplate = function(data) {
                            this._templatesStorage.delete(data)
                        };
                        return Mention
                    }(Embed);
                    Mention.blotName = "mention";
                    Mention.tagName = "span";
                    Mention.className = MENTION_CLASS;
                    Mention._templatesStorage = new _templates_storage.default
                }
                var _default = Mention;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        2909:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/formats/size.js ***!
              \****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _devextremeQuill = (obj = __webpack_require__( /*! devextreme-quill */ 9549), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                let SizeStyle = {};
                if (_devextremeQuill.default) {
                    SizeStyle = _devextremeQuill.default.import("attributors/style/size");
                    SizeStyle.whitelist = null
                }
                var _default = SizeStyle;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        76195:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/formats/variable.js ***!
              \********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _devextremeQuill = (obj = __webpack_require__( /*! devextreme-quill */ 9549), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 20576);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let Variable = {};
                if (_devextremeQuill.default) {
                    const Embed = _devextremeQuill.default.import("blots/embed");
                    const VARIABLE_CLASS = "dx-variable";
                    Variable = function(_Embed) {
                        ! function(subClass, superClass) {
                            subClass.prototype = Object.create(superClass.prototype);
                            subClass.prototype.constructor = subClass;
                            _setPrototypeOf(subClass, superClass)
                        }(Variable, _Embed);

                        function Variable() {
                            return _Embed.apply(this, arguments) || this
                        }
                        Variable.create = function(data) {
                            const node = _Embed.create.call(this);
                            let startEscapeChar;
                            let endEscapeChar;
                            const text = data.value;
                            if (Array.isArray(data.escapeChar)) {
                                startEscapeChar = (0, _common.ensureDefined)(data.escapeChar[0], "");
                                endEscapeChar = (0, _common.ensureDefined)(data.escapeChar[1], "")
                            } else {
                                startEscapeChar = endEscapeChar = data.escapeChar
                            }
                            node.innerText = startEscapeChar + text + endEscapeChar;
                            node.dataset.varStartEscChar = startEscapeChar;
                            node.dataset.varEndEscChar = endEscapeChar;
                            node.dataset.varValue = data.value;
                            return node
                        };
                        Variable.value = function(node) {
                            return (0, _extend.extend)({}, {
                                value: node.dataset.varValue,
                                escapeChar: [node.dataset.varStartEscChar || "", node.dataset.varEndEscChar || ""]
                            })
                        };
                        return Variable
                    }(Embed);
                    Variable.blotName = "variable";
                    Variable.tagName = "span";
                    Variable.className = VARIABLE_CLASS
                }
                var _default = Variable;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        10803:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/matchers/wordLists.js ***!
              \**********************************************************************************/
            function(module, exports) {
                exports.default = void 0;

                function getListType(matches) {
                    const prefix = matches[1];
                    return prefix.match(/\S+\./) ? "ordered" : "bullet"
                }
                var _default = quill => {
                    const Delta = quill.import("delta");
                    return (node, delta) => {
                        const ops = delta.ops.slice();
                        const insertOperation = ops[0];
                        insertOperation.insert = insertOperation.insert.replace(/^\s+/, "");
                        const listDecoratorMatches = insertOperation.insert.match(/^(\S+)\s+/);
                        const indent = listDecoratorMatches && function(node) {
                            const style = node.getAttribute("style");
                            if (style) {
                                const level = style.replace(/\n+/g, "").match(/level(\d+)/);
                                return level ? level[1] - 1 : 0
                            } else {
                                return false
                            }
                        }(node);
                        if (!listDecoratorMatches || false === indent) {
                            return delta
                        }
                        insertOperation.insert = insertOperation.insert.substring(listDecoratorMatches[0].length, insertOperation.insert.length);
                        ! function(operations) {
                            const newLineOperation = operations[operations.length - 1];
                            newLineOperation.insert = newLineOperation.insert.trim()
                        }(ops);
                        ops.push({
                            insert: "\n",
                            attributes: {
                                list: getListType(listDecoratorMatches),
                                indent: indent
                            }
                        });
                        return new Delta(ops)
                    }
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        30963:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/modules/base.js ***!
              \****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _devextremeQuill = _interopRequireDefault(__webpack_require__( /*! devextreme-quill */ 9549));
                var _empty = _interopRequireDefault(__webpack_require__( /*! ./empty */ 56764));
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let BaseModule = _empty.default;
                if (_devextremeQuill.default) {
                    const BaseQuillModule = _devextremeQuill.default.import("core/module");
                    BaseModule = function(_BaseQuillModule) {
                        ! function(subClass, superClass) {
                            subClass.prototype = Object.create(superClass.prototype);
                            subClass.prototype.constructor = subClass;
                            _setPrototypeOf(subClass, superClass)
                        }(BaseHtmlEditorModule, _BaseQuillModule);

                        function BaseHtmlEditorModule(quill, options) {
                            var _this;
                            _this = _BaseQuillModule.call(this, quill, options) || this;
                            _this.editorInstance = options.editorInstance;
                            return _this
                        }
                        var _proto = BaseHtmlEditorModule.prototype;
                        _proto.saveValueChangeEvent = function(event) {
                            this.editorInstance._saveValueChangeEvent(event)
                        };
                        _proto.addCleanCallback = function(callback) {
                            this.editorInstance.addCleanCallback(callback)
                        };
                        _proto.handleOptionChangeValue = function(changes) {
                            if ((0, _type.isObject)(changes)) {
                                Object.entries(changes).forEach(_ref => {
                                    let [name, value] = _ref;
                                    return this.option(name, value)
                                })
                            } else if (!(0, _type.isDefined)(changes)) {
                                null === this || void 0 === this ? void 0 : this.clean()
                            }
                        };
                        return BaseHtmlEditorModule
                    }(BaseQuillModule)
                }
                var _default = BaseModule;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        78859:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/modules/dropImage.js ***!
              \*********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _devextremeQuill = _interopRequireDefault(__webpack_require__( /*! devextreme-quill */ 9549));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../events/core/events_engine */ 55994));
                var _index = __webpack_require__( /*! ../../../events/utils/index */ 39611);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 95479);
                var _browser = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/browser */ 47810));
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 58201);
                var _base = _interopRequireDefault(__webpack_require__( /*! ./base */ 30963));

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

                function _assertThisInitialized(self) {
                    if (void 0 === self) {
                        throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                    }
                    return self
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let DropImageModule = _base.default;
                if (_devextremeQuill.default) {
                    DropImageModule = function(_BaseModule) {
                        ! function(subClass, superClass) {
                            subClass.prototype = Object.create(superClass.prototype);
                            subClass.prototype.constructor = subClass;
                            _setPrototypeOf(subClass, superClass)
                        }(DropImageModule, _BaseModule);

                        function DropImageModule(quill, options) {
                            var _this;
                            _this = _BaseModule.call(this, quill, options) || this;
                            const widgetName = _this.editorInstance.NAME;
                            _events_engine.default.on(_this.quill.root, (0, _index.addNamespace)("drop", widgetName), _this._dropHandler.bind(_assertThisInitialized(_this)));
                            _events_engine.default.on(_this.quill.root, (0, _index.addNamespace)("paste", widgetName), _this._pasteHandler.bind(_assertThisInitialized(_this)));
                            return _this
                        }
                        var _proto = DropImageModule.prototype;
                        _proto._dropHandler = function(e) {
                            var _dataTransfer$files;
                            const dataTransfer = e.originalEvent.dataTransfer;
                            const hasFiles = null === dataTransfer || void 0 === dataTransfer ? void 0 : null === (_dataTransfer$files = dataTransfer.files) || void 0 === _dataTransfer$files ? void 0 : _dataTransfer$files.length;
                            this.saveValueChangeEvent(e);
                            e.preventDefault();
                            if (hasFiles) {
                                this._getImage(dataTransfer.files, this._addImage.bind(this))
                            }
                        };
                        _proto._pasteHandler = function(e) {
                            var _clipboardData$items;
                            const {
                                clipboardData: clipboardData
                            } = e.originalEvent;
                            this.saveValueChangeEvent(e);
                            if (!clipboardData) {
                                return
                            }
                            const hasDataItems = null === (_clipboardData$items = clipboardData.items) || void 0 === _clipboardData$items ? void 0 : _clipboardData$items.length;
                            const isHtmlData = clipboardData.getData("text/html");
                            if (!isHtmlData && hasDataItems) {
                                this._getImage(clipboardData.items, imageData => {
                                    if (_browser.default.mozilla) {
                                        return
                                    }
                                    this._addImage(imageData)
                                })
                            }
                        };
                        _proto._isImage = function(file) {
                            return !!file.type.match(/^image\/(a?png|bmp|gif|p?jpe?g|svg|vnd\.microsoft\.icon|webp)/i)
                        };
                        _proto._getImage = function(files, callback) {
                            const window = (0, _window.getWindow)();
                            (0, _iterator.each)(files, (index, file) => {
                                if (!this._isImage(file)) {
                                    return
                                }
                                const reader = new window.FileReader;
                                reader.onload = _ref => {
                                    let {
                                        target: target
                                    } = _ref;
                                    callback(target.result)
                                };
                                const readableFile = file.getAsFile ? file.getAsFile() : file;
                                if (readableFile instanceof window.Blob) {
                                    reader.readAsDataURL(readableFile)
                                }
                            })
                        };
                        _proto._addImage = function(data) {
                            const selection = this.quill.getSelection();
                            const pasteIndex = selection ? selection.index : this.quill.getLength();
                            this.quill.insertEmbed(pasteIndex, "extendedImage", data, "user")
                        };
                        return DropImageModule
                    }(_base.default)
                }
                var _default = DropImageModule;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        56764:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/modules/empty.js ***!
              \*****************************************************************************/
            function(module, exports) {
                exports.default = void 0;
                exports.default = function() {};
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        80900:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/modules/imageCursor.js ***!
              \***********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _devextremeQuill = _interopRequireDefault(__webpack_require__( /*! devextreme-quill */ 9549));
                var _base = _interopRequireDefault(__webpack_require__( /*! ./base */ 30963));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../events/core/events_engine */ 55994));
                var _index = __webpack_require__( /*! ../../../events/utils/index */ 39611);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const clickEvent = (0, _index.addNamespace)("dxclick", "dxHtmlEditorImageCursor");
                let ImageCursorModule = _base.default;
                if (_devextremeQuill.default) {
                    ImageCursorModule = function(_BaseModule) {
                        ! function(subClass, superClass) {
                            subClass.prototype = Object.create(superClass.prototype);
                            subClass.prototype.constructor = subClass;
                            _setPrototypeOf(subClass, superClass)
                        }(ImageCursorModule, _BaseModule);

                        function ImageCursorModule(quill, options) {
                            var _this;
                            _this = _BaseModule.call(this, quill, options) || this;
                            _this.addCleanCallback(_this.clean.bind(function(self) {
                                if (void 0 === self) {
                                    throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                                }
                                return self
                            }(_this)));
                            _this._attachEvents();
                            return _this
                        }
                        var _proto = ImageCursorModule.prototype;
                        _proto._attachEvents = function() {
                            _events_engine.default.on(this.quill.root, clickEvent, this._clickHandler.bind(this))
                        };
                        _proto._detachEvents = function() {
                            _events_engine.default.off(this.quill.root, clickEvent)
                        };
                        _proto._clickHandler = function(e) {
                            if (this._isAllowedTarget(e.target)) {
                                this._adjustSelection(e)
                            }
                        };
                        _proto._isAllowedTarget = function(targetElement) {
                            return this._isImage(targetElement)
                        };
                        _proto._isImage = function(targetElement) {
                            return "IMG" === targetElement.tagName.toUpperCase()
                        };
                        _proto._adjustSelection = function(e) {
                            const blot = this.quill.scroll.find(e.target);
                            if (blot) {
                                const index = blot.offset(this.quill.scroll);
                                this.quill.setSelection(index + 1, 0)
                            } else {
                                this.quill.setSelection(0, 0)
                            }
                        };
                        _proto.clean = function() {
                            this._detachEvents()
                        };
                        return ImageCursorModule
                    }(_base.default)
                }
                var _default = ImageCursorModule;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        75990:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/modules/imageUpload.js ***!
              \***********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _devextremeQuill = _interopRequireDefault(__webpack_require__( /*! devextreme-quill */ 9549));
                var _base = _interopRequireDefault(__webpack_require__( /*! ./base */ 30963));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../events/core/events_engine */ 55994));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _image_uploader_helper = __webpack_require__( /*! ../utils/image_uploader_helper */ 10046);
                var _index = __webpack_require__( /*! ../../../events/utils/index */ 39611);
                var _file_uploader = _interopRequireDefault(__webpack_require__( /*! ../../file_uploader */ 53749));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let ImageUploadModule = _base.default;
                if (_devextremeQuill.default) {
                    ImageUploadModule = function(_BaseModule) {
                        ! function(subClass, superClass) {
                            subClass.prototype = Object.create(superClass.prototype);
                            subClass.prototype.constructor = subClass;
                            _setPrototypeOf(subClass, superClass)
                        }(ImageUploadModule, _BaseModule);

                        function ImageUploadModule(quill, options) {
                            var _this;
                            _this = _BaseModule.call(this, quill, options) || this;
                            _this.options = options;
                            _this._quillContainer = _this.editorInstance._getQuillContainer();
                            _this.addCleanCallback(_this.prepareCleanCallback());
                            _this._handleServerUpload();
                            return _this
                        }
                        var _proto = ImageUploadModule.prototype;
                        _proto._handleServerUpload = function() {
                            const useServerUpload = (0, _type.isDefined)(this.options.fileUploadMode) && "base64" !== this.options.fileUploadMode;
                            useServerUpload ? this._enableDragAndDropUploading() : this._disableDragAndDropUploading()
                        };
                        _proto._getUploaderModule = function() {
                            if (!this._uploaderModule) {
                                this._uploaderModule = this.quill.getModule("uploader")
                            }
                            return this._uploaderModule
                        };
                        _proto._disableDragAndDropUploading = function() {
                            var _this$_fileUploader;
                            this._getUploaderModule().preventImageUploading(false);
                            this._detachEvents();
                            null === (_this$_fileUploader = this._fileUploader) || void 0 === _this$_fileUploader ? void 0 : _this$_fileUploader.dispose()
                        };
                        _proto._enableDragAndDropUploading = function() {
                            this._initFileUploader();
                            this._getUploaderModule().preventImageUploading(true);
                            this._attachEvents()
                        };
                        _proto._initFileUploader = function() {
                            const $container = (0, _renderer.default)("<div>").addClass("dx-htmleditor-hidden-content").appendTo(this._quillContainer);
                            const fileUploaderOptions = (0, _extend.extend)({}, (0, _image_uploader_helper.getFileUploaderBaseOptions)(), {
                                uploadUrl: this.options.uploadUrl,
                                onUploaded: this._onUploaded.bind(this)
                            }, this.options.fileUploaderOptions);
                            this._fileUploader = this.editorInstance._createComponent($container, _file_uploader.default, fileUploaderOptions);
                            return $container
                        };
                        _proto._onUploaded = function(data) {
                            var _this$quill$getSelect;
                            const {
                                index: pasteIndex
                            } = null !== (_this$quill$getSelect = this.quill.getSelection()) && void 0 !== _this$quill$getSelect ? _this$quill$getSelect : {
                                index: this.quill.getLength()
                            };
                            (0, _image_uploader_helper.serverUpload)(this.options.uploadDirectory, data.file.name, this.quill, pasteIndex)
                        };
                        _proto._attachEvents = function() {
                            _events_engine.default.on(this.quill.root, (0, _index.addNamespace)("drop", "dxHtmlEditorImageUpload"), this._dropHandler.bind(this));
                            _events_engine.default.on(this.quill.root, (0, _index.addNamespace)("paste", "dxHtmlEditorImageUpload"), this._pasteHandler.bind(this))
                        };
                        _proto._detachEvents = function() {
                            _events_engine.default.off(this.quill.root, "dxHtmlEditorImageUpload")
                        };
                        _proto._dropHandler = function(e) {
                            this._handleInsertImages(e, "dataTransfer")
                        };
                        _proto._pasteHandler = function(e) {
                            this._handleInsertImages(e, "clipboardData")
                        };
                        _proto._handleInsertImages = function(e, filesField) {
                            this.saveValueChangeEvent(e);
                            const files = Array.from(e.originalEvent[filesField].files || []);
                            const uploads = files;
                            if (uploads.length) {
                                e.preventDefault();
                                e.stopPropagation();
                                this._fileUploader.option("value", uploads);
                                this._fileUploader.upload()
                            }
                        };
                        _proto.clean = function() {
                            this._disableDragAndDropUploading()
                        };
                        _proto.prepareCleanCallback = function() {
                            return () => {
                                this.clean()
                            }
                        };
                        _proto.option = function(_option, value) {
                            switch (_option) {
                                case "imageUpload":
                                    this.handleOptionChangeValue(value);
                                    break;
                                case "fileUploadMode":
                                    this.options.fileUploadMode = value;
                                    this._handleServerUpload();
                                    break;
                                case "fileUploaderOptions":
                                    this._fileUploader.option(value)
                            }
                        };
                        return ImageUploadModule
                    }(_base.default)
                }
                var _default = ImageUploadModule;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        12542:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/modules/mentions.js ***!
              \********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _devextremeQuill = _interopRequireDefault(__webpack_require__( /*! devextreme-quill */ 9549));
                var _data = __webpack_require__( /*! ../../../core/utils/data */ 47617);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _element = __webpack_require__( /*! ../../../core/element */ 6415);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../events/core/events_engine */ 55994));
                var _base = _interopRequireDefault(__webpack_require__( /*! ./base */ 30963));
                var _popup = _interopRequireDefault(__webpack_require__( /*! ./popup */ 2269));
                var _mention = _interopRequireDefault(__webpack_require__( /*! ../formats/mention */ 72410));

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

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _assertThisInitialized(self) {
                    if (void 0 === self) {
                        throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                    }
                    return self
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let MentionModule = _base.default;
                if (_devextremeQuill.default) {
                    const USER_ACTION = "user";
                    const DEFAULT_MARKER = "@";
                    const KEYS = {
                        ARROW_UP: "upArrow",
                        ARROW_DOWN: "downArrow",
                        ARROW_LEFT: "leftArrow",
                        ARROW_RIGHT: "rightArrow",
                        ENTER: "enter",
                        ESCAPE: "escape",
                        SPACE: "space",
                        PAGE_UP: "pageUp",
                        PAGE_DOWN: "pageDown",
                        END: "end",
                        HOME: "home"
                    };
                    const NAVIGATION_KEYS = [KEYS.ARROW_LEFT, KEYS.ARROW_RIGHT, KEYS.PAGE_UP, KEYS.PAGE_DOWN, KEYS.END, KEYS.HOME];
                    const ALLOWED_PREFIX_CHARS = [" ", "\n"];
                    const DISABLED_STATE_CLASS = "dx-state-disabled";
                    _devextremeQuill.default.register({
                        "formats/mention": _mention.default
                    }, true);
                    MentionModule = function(_PopupModule) {
                        ! function(subClass, superClass) {
                            subClass.prototype = Object.create(superClass.prototype);
                            subClass.prototype.constructor = subClass;
                            _setPrototypeOf(subClass, superClass)
                        }(MentionModule, _PopupModule);
                        var _proto = MentionModule.prototype;
                        _proto._getDefaultOptions = function() {
                            const baseConfig = _PopupModule.prototype._getDefaultOptions.call(this);
                            return (0, _extend.extend)(baseConfig, {
                                itemTemplate: "item",
                                valueExpr: "this",
                                displayExpr: "this",
                                template: null,
                                searchExpr: null,
                                searchTimeout: 500,
                                minSearchLength: 0
                            })
                        };

                        function MentionModule(quill, options) {
                            var _this;
                            _this = _PopupModule.call(this, quill, options) || this;
                            _this._mentions = {};
                            options.mentions.forEach(item => {
                                let marker = item.marker;
                                if (!marker) {
                                    item.marker = marker = DEFAULT_MARKER
                                }
                                const template = item.template;
                                if (template) {
                                    const preparedTemplate = _this.editorInstance._getTemplate(template);
                                    preparedTemplate && _mention.default.addTemplate({
                                        marker: marker,
                                        editorKey: _this.editorInstance.getMentionKeyInTemplateStorage()
                                    }, preparedTemplate)
                                }
                                _this._mentions[marker] = (0, _extend.extend)({}, _this._getDefaultOptions(), item)
                            });
                            _this._attachKeyboardHandlers();
                            _this.addCleanCallback(_this.clean.bind(_assertThisInitialized(_this)));
                            _this.quill.on("text-change", _this.onTextChange.bind(_assertThisInitialized(_this)));
                            return _this
                        }
                        _proto._attachKeyboardHandlers = function() {
                            this.quill.keyboard.addBinding({
                                key: KEYS.ARROW_UP
                            }, this._moveToItem.bind(this, "prev"));
                            this.quill.keyboard.addBinding({
                                key: KEYS.ARROW_DOWN
                            }, this._moveToItem.bind(this, "next"));
                            this.quill.keyboard.addBinding({
                                key: [KEYS.ENTER, KEYS.SPACE]
                            }, this._selectItemHandler.bind(this));
                            const enterBindings = this.quill.keyboard.bindings[KEYS.ENTER];
                            enterBindings.unshift(enterBindings.pop());
                            this.quill.keyboard.addBinding({
                                key: KEYS.ESCAPE
                            }, this._escapeKeyHandler.bind(this));
                            this.quill.keyboard.addBinding({
                                key: [KEYS.ARROW_LEFT, KEYS.ARROW_RIGHT],
                                shiftKey: true
                            }, this._ignoreKeyHandler.bind(this));
                            this.quill.keyboard.addBinding({
                                key: NAVIGATION_KEYS
                            }, this._ignoreKeyHandler.bind(this))
                        };
                        _proto._moveToItem = function(direction) {
                            const dataSource = this._list.getDataSource();
                            if (this._isMentionActive && !dataSource.isLoading()) {
                                const $focusedItem = (0, _renderer.default)(this._list.option("focusedElement"));
                                const defaultItemPosition = "next" === direction ? "first" : "last";
                                let $nextItem = $focusedItem[direction]();
                                $nextItem = $nextItem.length ? $nextItem : this._activeListItems[defaultItemPosition]();
                                this._list.option("focusedElement", (0, _element.getPublicElement)($nextItem));
                                this._list.scrollToItem($nextItem)
                            }
                            return !this._isMentionActive
                        };
                        _proto._ignoreKeyHandler = function() {
                            return !this._isMentionActive
                        };
                        _proto._fitIntoRange = function(value, start, end) {
                            if (value > end) {
                                return start
                            }
                            if (value < start) {
                                return end
                            }
                            return value
                        };
                        _proto._selectItemHandler = function() {
                            if (this._isMentionActive) {
                                this._list.option("items").length ? this._list.selectItem(this._list.option("focusedElement")) : this._popup.hide()
                            }
                            return !this._isMentionActive
                        };
                        _proto._escapeKeyHandler = function() {
                            if (this._isMentionActive) {
                                this._popup.hide()
                            }
                            return !this._isMentionActive
                        };
                        _proto.renderList = function($container, options) {
                            this.compileGetters(this.options);
                            _PopupModule.prototype.renderList.call(this, $container, options)
                        };
                        _proto.compileGetters = function(_ref) {
                            let {
                                displayExpr: displayExpr,
                                valueExpr: valueExpr
                            } = _ref;
                            this._valueGetter = (0, _data.compileGetter)(displayExpr);
                            this._idGetter = (0, _data.compileGetter)(valueExpr)
                        };
                        _proto._getListConfig = function(options) {
                            const baseConfig = _PopupModule.prototype._getListConfig.call(this, options);
                            return (0, _extend.extend)(baseConfig, {
                                itemTemplate: this.options.itemTemplate,
                                onContentReady: () => {
                                    if (this._hasSearch) {
                                        this._popup.repaint();
                                        this._focusFirstElement();
                                        this._hasSearch = false
                                    }
                                }
                            })
                        };
                        _proto.insertEmbedContent = function() {
                            const markerLength = this._activeMentionConfig.marker.length;
                            const textLength = markerLength + this._searchValue.length;
                            const caretPosition = this.getPosition();
                            const selectedItem = this._list.option("selectedItem");
                            const value = {
                                value: this._valueGetter(selectedItem),
                                id: this._idGetter(selectedItem),
                                marker: this._activeMentionConfig.marker,
                                keyInTemplateStorage: this.editorInstance.getMentionKeyInTemplateStorage()
                            };
                            const Delta = _devextremeQuill.default.import("delta");
                            const startIndex = Math.max(0, caretPosition - markerLength);
                            const newDelta = (new Delta).retain(startIndex).delete(textLength).insert({
                                mention: value
                            }).insert(" ");
                            this.quill.updateContents(newDelta);
                            this.quill.setSelection(startIndex + 2)
                        };
                        _proto._getLastInsertOperation = function(ops) {
                            const lastOperation = ops[ops.length - 1];
                            const isLastOperationInsert = "insert" in lastOperation;
                            if (isLastOperationInsert) {
                                return lastOperation
                            }
                            const isLastOperationDelete = "delete" in lastOperation;
                            if (isLastOperationDelete && ops.length >= 2) {
                                const penultOperation = ops[ops.length - 2];
                                const isPenultOperationInsert = "insert" in penultOperation;
                                const isSelectionReplacing = isLastOperationDelete && isPenultOperationInsert;
                                if (isSelectionReplacing) {
                                    return penultOperation
                                }
                            }
                            return null
                        };
                        _proto.onTextChange = function(newDelta, oldDelta, source) {
                            if (source === USER_ACTION) {
                                const lastOperation = newDelta.ops[newDelta.ops.length - 1];
                                if (this._isMentionActive && this._isPopupVisible) {
                                    this._processSearchValue(lastOperation) && this._filterList(this._searchValue)
                                } else {
                                    const {
                                        ops: ops
                                    } = newDelta;
                                    const lastInsertOperation = this._getLastInsertOperation(ops);
                                    if (lastInsertOperation) {
                                        this.checkMentionRequest(lastInsertOperation, ops)
                                    }
                                }
                            }
                        };
                        _proto._processSearchValue = function(operation) {
                            const isInsertOperation = "insert" in operation;
                            if (isInsertOperation) {
                                this._searchValue += operation.insert
                            } else if (!this._searchValue.length || operation.delete > 1) {
                                this._popup.hide();
                                return false
                            } else {
                                this._searchValue = this._searchValue.slice(0, -1)
                            }
                            return true
                        };
                        _proto.checkMentionRequest = function(_ref2, ops) {
                            let {
                                insert: insert
                            } = _ref2;
                            const caret = this.quill.getSelection();
                            if (!insert || !(0, _type.isString)(insert) || !caret || this._isMarkerPartOfText(ops[0].retain)) {
                                return
                            }
                            this._activeMentionConfig = this._mentions[insert];
                            if (this._activeMentionConfig) {
                                this._updateList(this._activeMentionConfig);
                                const isOnNewLine = caret.index && "\n" === this._getCharByIndex(caret.index - 1);
                                this.savePosition(caret.index + isOnNewLine);
                                this._popup.option("position", this._popupPosition);
                                this._searchValue = "";
                                this._popup.show()
                            }
                        };
                        _proto._isMarkerPartOfText = function(retain) {
                            if (!retain || -1 !== ALLOWED_PREFIX_CHARS.indexOf(this._getCharByIndex(retain - 1))) {
                                return false
                            }
                            return true
                        };
                        _proto._getCharByIndex = function(index) {
                            return this.quill.getContents(index, 1).ops[0].insert
                        };
                        _proto._updateList = function(_ref3) {
                            let {
                                dataSource: dataSource,
                                displayExpr: displayExpr,
                                valueExpr: valueExpr,
                                itemTemplate: itemTemplate,
                                searchExpr: searchExpr
                            } = _ref3;
                            this.compileGetters({
                                displayExpr: displayExpr,
                                valueExpr: valueExpr
                            });
                            this._list.unselectAll();
                            this._list.option({
                                dataSource: dataSource,
                                displayExpr: displayExpr,
                                itemTemplate: itemTemplate,
                                searchExpr: searchExpr
                            })
                        };
                        _proto._filterList = function(searchValue) {
                            if (!this._isMinSearchLengthExceeded(searchValue)) {
                                this._resetFilter();
                                return
                            }
                            const searchTimeout = this._activeMentionConfig.searchTimeout;
                            if (searchTimeout) {
                                clearTimeout(this._searchTimer);
                                this._searchTimer = setTimeout(() => {
                                    this._search(searchValue)
                                }, searchTimeout)
                            } else {
                                this._search(searchValue)
                            }
                        };
                        _proto._isMinSearchLengthExceeded = function(searchValue) {
                            return searchValue.length >= this._activeMentionConfig.minSearchLength
                        };
                        _proto._resetFilter = function() {
                            clearTimeout(this._searchTimer);
                            this._search(null)
                        };
                        _proto._search = function(searchValue) {
                            this._hasSearch = true;
                            this._list.option("searchValue", searchValue)
                        };
                        _proto._focusFirstElement = function() {
                            if (!this._list) {
                                return
                            }
                            const $firstItem = this._activeListItems.first();
                            this._list.option("focusedElement", (0, _element.getPublicElement)($firstItem));
                            this._list.scrollToItem($firstItem)
                        };
                        _proto._getPopupConfig = function() {
                            return (0, _extend.extend)(_PopupModule.prototype._getPopupConfig.call(this), {
                                hideOnParentScroll: false,
                                onShown: () => {
                                    this._isMentionActive = true;
                                    this._hasSearch = false;
                                    this._focusFirstElement()
                                },
                                onHidden: () => {
                                    this._list.unselectAll();
                                    this._list.option("focusedElement", null);
                                    this._isMentionActive = false;
                                    this._search(null)
                                },
                                focusStateEnabled: false
                            })
                        };
                        _proto.clean = function() {
                            Object.keys(this._mentions).forEach(marker => {
                                if (this._mentions[marker].template) {
                                    _mention.default.removeTemplate({
                                        marker: marker,
                                        editorKey: this.editorInstance.getMentionKeyInTemplateStorage()
                                    })
                                }
                            })
                        };
                        ! function(Constructor, protoProps, staticProps) {
                            if (protoProps) {
                                _defineProperties(Constructor.prototype, protoProps)
                            }
                            if (staticProps) {
                                _defineProperties(Constructor, staticProps)
                            }
                            Object.defineProperty(Constructor, "prototype", {
                                writable: false
                            });
                            return Constructor
                        }(MentionModule, [{
                            key: "_isPopupVisible",
                            get: function() {
                                var _this$_popup;
                                return null === (_this$_popup = this._popup) || void 0 === _this$_popup ? void 0 : _this$_popup.option("visible")
                            }
                        }, {
                            key: "_popupPosition",
                            get: function() {
                                const position = this.getPosition();
                                const {
                                    left: mentionLeft,
                                    top: mentionTop,
                                    height: mentionHeight
                                } = this.quill.getBounds(position ? position - 1 : position);
                                const {
                                    left: leftOffset,
                                    top: topOffset
                                } = (0, _renderer.default)(this.quill.root).offset();
                                const positionEvent = _events_engine.default.Event("positionEvent", {
                                    pageX: leftOffset + mentionLeft,
                                    pageY: topOffset + mentionTop
                                });
                                return {
                                    of: positionEvent,
                                    offset: {
                                        v: mentionHeight
                                    },
                                    my: "top left",
                                    at: "top left",
                                    collision: {
                                        y: "flip",
                                        x: "flipfit"
                                    }
                                }
                            }
                        }, {
                            key: "_activeListItems",
                            get: function() {
                                return this._list.itemElements().filter(":not(.".concat(DISABLED_STATE_CLASS, ")"))
                            }
                        }]);
                        return MentionModule
                    }(_popup.default)
                }
                var _default = MentionModule;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        2269:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/modules/popup.js ***!
              \*****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../../core/utils/size */ 58664);
                var _devextremeQuill = _interopRequireDefault(__webpack_require__( /*! devextreme-quill */ 9549));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 58201);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../events/core/events_engine */ 55994));
                var _index = __webpack_require__( /*! ../../../events/utils/index */ 39611);
                var _base = _interopRequireDefault(__webpack_require__( /*! ./base */ 30963));
                var _popup = _interopRequireDefault(__webpack_require__( /*! ../../popup */ 39114));
                var _list_light = _interopRequireDefault(__webpack_require__( /*! ../../list_light */ 56757));

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

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let ListPopupModule = _base.default;
                if (_devextremeQuill.default) {
                    const SUGGESTION_LIST_CLASS = "dx-suggestion-list";
                    const SUGGESTION_LIST_WRAPPER_CLASS = "dx-suggestion-list-wrapper";
                    const MIN_HEIGHT = 100;
                    ListPopupModule = function(_BaseModule) {
                        ! function(subClass, superClass) {
                            subClass.prototype = Object.create(superClass.prototype);
                            subClass.prototype.constructor = subClass;
                            _setPrototypeOf(subClass, superClass)
                        }(ListPopupModule, _BaseModule);
                        var _proto = ListPopupModule.prototype;
                        _proto._getDefaultOptions = function() {
                            return {
                                dataSource: null
                            }
                        };

                        function ListPopupModule(quill, options) {
                            var _this;
                            _this = _BaseModule.call(this, quill, options) || this;
                            _this.options = (0, _extend.extend)({}, _this._getDefaultOptions(), options);
                            _this._popup = _this.renderPopup();
                            _this._popup.$wrapper().addClass(SUGGESTION_LIST_WRAPPER_CLASS);
                            _this._renderPreventFocusOut();
                            return _this
                        }
                        _proto.renderList = function($container, options) {
                            const $list = (0, _renderer.default)("<div>").addClass(SUGGESTION_LIST_CLASS).appendTo($container);
                            this._list = this.options.editorInstance._createComponent($list, _list_light.default, options)
                        };
                        _proto.renderPopup = function() {
                            const editorInstance = this.options.editorInstance;
                            const $container = (0, _renderer.default)("<div>").appendTo(editorInstance.$element());
                            const popupConfig = this._getPopupConfig();
                            return editorInstance._createComponent($container, _popup.default, popupConfig)
                        };
                        _proto._getPopupConfig = function() {
                            return {
                                contentTemplate: contentElem => {
                                    const listConfig = this._getListConfig(this.options);
                                    this.renderList((0, _renderer.default)(contentElem), listConfig)
                                },
                                deferRendering: false,
                                onShown: () => {
                                    this._list.focus()
                                },
                                onHidden: () => {
                                    this._list.unselectAll();
                                    this._list.option("focusedElement", null)
                                },
                                showTitle: false,
                                width: "auto",
                                height: "auto",
                                shading: false,
                                hideOnParentScroll: true,
                                hideOnOutsideClick: true,
                                animation: {
                                    show: {
                                        type: "fade",
                                        duration: 0,
                                        from: 0,
                                        to: 1
                                    },
                                    hide: {
                                        type: "fade",
                                        duration: 400,
                                        from: 1,
                                        to: 0
                                    }
                                },
                                fullScreen: false,
                                maxHeight: this.maxHeight
                            }
                        };
                        _proto._getListConfig = function(options) {
                            return {
                                dataSource: options.dataSource,
                                onSelectionChanged: this.selectionChangedHandler.bind(this),
                                selectionMode: "single",
                                pageLoadMode: "scrollBottom"
                            }
                        };
                        _proto.selectionChangedHandler = function(e) {
                            if (this._popup.option("visible")) {
                                this._popup.hide();
                                this.insertEmbedContent(e)
                            }
                        };
                        _proto._renderPreventFocusOut = function() {
                            const eventName = (0, _index.addNamespace)("mousedown", "dxHtmlEditorPopupModule");
                            _events_engine.default.on(this._popup.$wrapper(), eventName, e => {
                                e.preventDefault()
                            })
                        };
                        _proto.insertEmbedContent = function(selectionChangedEvent) {};
                        _proto.showPopup = function() {
                            this._popup && this._popup.show()
                        };
                        _proto.savePosition = function(position) {
                            this.caretPosition = position
                        };
                        _proto.getPosition = function() {
                            return this.caretPosition
                        };
                        ! function(Constructor, protoProps, staticProps) {
                            if (protoProps) {
                                _defineProperties(Constructor.prototype, protoProps)
                            }
                            if (staticProps) {
                                _defineProperties(Constructor, staticProps)
                            }
                            Object.defineProperty(Constructor, "prototype", {
                                writable: false
                            });
                            return Constructor
                        }(ListPopupModule, [{
                            key: "maxHeight",
                            get: function() {
                                const window = (0, _window.getWindow)();
                                const windowHeight = window && (0, _size.getHeight)(window) || 0;
                                return Math.max(MIN_HEIGHT, .5 * windowHeight)
                            }
                        }]);
                        return ListPopupModule
                    }(_base.default)
                }
                var _default = ListPopupModule;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        91787:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/modules/resizing.js ***!
              \********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../events/core/events_engine */ 55994));
                var _click = __webpack_require__( /*! ../../../events/click */ 95429);
                var _index = __webpack_require__( /*! ../../../events/utils/index */ 39611);
                var _translator = __webpack_require__( /*! ../../../animation/translator */ 31648);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 20530));
                var _resizable = _interopRequireDefault(__webpack_require__( /*! ../../resizable */ 46743));
                var _position = __webpack_require__( /*! ../../../core/utils/position */ 37518);
                var _devextremeQuill = _interopRequireDefault(__webpack_require__( /*! devextreme-quill */ 9549));
                var _base = _interopRequireDefault(__webpack_require__( /*! ./base */ 30963));
                var _size = __webpack_require__( /*! ../../../core/utils/size */ 58664);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const KEYDOWN_EVENT = (0, _index.addNamespace)("keydown", "dxHtmlResizingModule");
                const SCROLL_EVENT = (0, _index.addNamespace)("scroll", "dxHtmlResizingModule");
                const MOUSEDOWN_EVENT = (0, _index.addNamespace)("mousedown", "dxHtmlResizingModule");
                let ResizingModule = function(_BaseModule) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(ResizingModule, _BaseModule);

                    function ResizingModule(quill, options) {
                        var _this;
                        _this = _BaseModule.call(this, quill, options) || this;
                        _this.allowedTargets = options.allowedTargets || ["image"];
                        _this.enabled = !!options.enabled;
                        _this._hideFrameWithContext = _this.hideFrame.bind(function(self) {
                            if (void 0 === self) {
                                throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                            }
                            return self
                        }(_this));
                        _this._framePositionChangedHandler = _this._prepareFramePositionChangedHandler();
                        if (_this.enabled) {
                            _this._attachEvents();
                            _this._createResizeFrame()
                        }
                        return _this
                    }
                    var _proto = ResizingModule.prototype;
                    _proto._attachEvents = function() {
                        _events_engine.default.on(this.quill.root, (0, _index.addNamespace)(_click.name, "dxHtmlResizingModule"), this._clickHandler.bind(this));
                        _events_engine.default.on(this.quill.root, SCROLL_EVENT, this._framePositionChangedHandler);
                        this.editorInstance.on("focusOut", this._hideFrameWithContext);
                        this.quill.on("text-change", this._framePositionChangedHandler)
                    };
                    _proto._detachEvents = function() {
                        _events_engine.default.off(this.quill.root, "dxHtmlResizingModule");
                        this.editorInstance.off("focusOut", this._hideFrameWithContext);
                        this.quill.off("text-change", this._framePositionChangedHandler)
                    };
                    _proto._clickHandler = function(e) {
                        if (this._isAllowedTarget(e.target)) {
                            if (this._$target === e.target) {
                                return
                            }
                            this._$target = e.target;
                            const $target = (0, _renderer.default)(this._$target);
                            const minWidth = Math.max((0, _size.getOuterWidth)($target) - (0, _size.getWidth)($target), this.resizable.option("minWidth"));
                            const minHeight = Math.max((0, _size.getOuterHeight)($target) - (0, _size.getHeight)($target), this.resizable.option("minHeight"));
                            this.resizable.option({
                                minWidth: minWidth,
                                minHeight: minHeight
                            });
                            this.updateFramePosition();
                            this.showFrame();
                            this._adjustSelection()
                        } else if (this._$target) {
                            this.hideFrame()
                        }
                    };
                    _proto._prepareFramePositionChangedHandler = function(e) {
                        return () => {
                            if (this._$target) {
                                this.updateFramePosition()
                            }
                        }
                    };
                    _proto._adjustSelection = function() {
                        if (!this.quill.getSelection()) {
                            this.quill.setSelection(0, 0)
                        }
                    };
                    _proto._isAllowedTarget = function(targetElement) {
                        return this._isImage(targetElement)
                    };
                    _proto._isImage = function(targetElement) {
                        return -1 !== this.allowedTargets.indexOf("image") && "IMG" === targetElement.tagName.toUpperCase()
                    };
                    _proto.showFrame = function() {
                        this._$resizeFrame.show();
                        _events_engine.default.on(this.quill.root, KEYDOWN_EVENT, this._handleFrameKeyDown.bind(this))
                    };
                    _proto._handleFrameKeyDown = function(e) {
                        const keyName = (0, _index.normalizeKeyName)(e);
                        if ("del" === keyName || "backspace" === keyName) {
                            this._deleteImage()
                        }
                        this.hideFrame()
                    };
                    _proto.hideFrame = function() {
                        this._$target = null;
                        this._$resizeFrame.hide();
                        _events_engine.default.off(this.quill.root, KEYDOWN_EVENT)
                    };
                    _proto.updateFramePosition = function() {
                        const {
                            height: height,
                            width: width,
                            top: targetTop,
                            left: targetLeft
                        } = (0, _position.getBoundingRect)(this._$target);
                        const {
                            top: containerTop,
                            left: containerLeft
                        } = (0, _position.getBoundingRect)(this.quill.root);
                        const borderWidth = this._getBorderWidth();
                        this._$resizeFrame.css({
                            height: height,
                            width: width,
                            padding: 1,
                            top: targetTop - containerTop - borderWidth - 1,
                            left: targetLeft - containerLeft - borderWidth - 1
                        });
                        (0, _translator.move)(this._$resizeFrame, {
                            left: 0,
                            top: 0
                        })
                    };
                    _proto._getBorderWidth = function() {
                        return parseInt(this._$resizeFrame.css("borderTopWidth"))
                    };
                    _proto._createResizeFrame = function() {
                        if (this._$resizeFrame) {
                            return
                        }
                        const {
                            deviceType: deviceType
                        } = _devices.default.current();
                        this._$resizeFrame = (0, _renderer.default)("<div>").addClass("dx-resize-frame").toggleClass("dx-touch-device", "desktop" !== deviceType).appendTo(this.editorInstance._getQuillContainer()).hide();
                        _events_engine.default.on(this._$resizeFrame, MOUSEDOWN_EVENT, e => {
                            e.preventDefault()
                        });
                        this.resizable = this.editorInstance._createComponent(this._$resizeFrame, _resizable.default, {
                            onResize: e => {
                                if (!this._$target) {
                                    return
                                }(0, _renderer.default)(this._$target).attr({
                                    height: e.height,
                                    width: e.width
                                });
                                this.updateFramePosition()
                            }
                        })
                    };
                    _proto._deleteImage = function() {
                        if (this._isAllowedTarget(this._$target)) {
                            var _Quill$find;
                            null === (_Quill$find = _devextremeQuill.default.find(this._$target)) || void 0 === _Quill$find ? void 0 : _Quill$find.deleteAt(0)
                        }
                    };
                    _proto.option = function(_option, value) {
                        if ("mediaResizing" === _option) {
                            this.handleOptionChangeValue(value);
                            return
                        }
                        if ("enabled" === _option) {
                            this.enabled = value;
                            value ? this._attachEvents() : this._detachEvents()
                        } else if ("allowedTargets" === _option && Array.isArray(value)) {
                            this.allowedTargets = value
                        }
                    };
                    _proto.clean = function() {
                        this._detachEvents();
                        this._$resizeFrame.remove();
                        this._$resizeFrame = void 0
                    };
                    return ResizingModule
                }(_base.default);
                exports.default = ResizingModule;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        31700:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/modules/tableContextMenu.js ***!
              \****************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _devextremeQuill = _interopRequireDefault(__webpack_require__( /*! devextreme-quill */ 9549));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _base = _interopRequireDefault(__webpack_require__( /*! ./base */ 30963));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../events/core/events_engine */ 55994));
                var _index = __webpack_require__( /*! ../../../events/utils/index */ 39611);
                var _context_menu = _interopRequireDefault(__webpack_require__( /*! ../../context_menu */ 10042));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../localization/message */ 28109));
                var _table_helper = __webpack_require__( /*! ../utils/table_helper */ 28822);
                var _toolbar_helper = __webpack_require__( /*! ../utils/toolbar_helper */ 92077);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _inflector = __webpack_require__( /*! ../../../core/utils/inflector */ 78008);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const CONTEXT_MENU_EVENT = (0, _index.addNamespace)("dxcontextmenu", "dxHtmlEditorTableContextMenu");
                let TableContextMenuModule = _base.default;
                const localize = name => _message.default.format("dxHtmlEditor-".concat((0, _inflector.camelize)(name)));
                if (_devextremeQuill.default) {
                    TableContextMenuModule = function(_BaseModule) {
                        ! function(subClass, superClass) {
                            subClass.prototype = Object.create(superClass.prototype);
                            subClass.prototype.constructor = subClass;
                            _setPrototypeOf(subClass, superClass)
                        }(TableContextMenuModule, _BaseModule);

                        function TableContextMenuModule(quill, options) {
                            var _this;
                            _this = _BaseModule.call(this, quill, options) || this;
                            _this.enabled = !!options.enabled;
                            _this._quillContainer = _this.editorInstance._getQuillContainer();
                            _this.addCleanCallback(_this.prepareCleanCallback());
                            _this._formatHandlers = (0, _toolbar_helper.getFormatHandlers)(function(self) {
                                if (void 0 === self) {
                                    throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                                }
                                return self
                            }(_this));
                            _this._tableFormats = (0, _table_helper.getTableFormats)(quill);
                            if (_this.enabled) {
                                _this._enableContextMenu(options.items)
                            }
                            return _this
                        }
                        var _proto = TableContextMenuModule.prototype;
                        _proto._enableContextMenu = function(items) {
                            var _this$_contextMenu;
                            null === (_this$_contextMenu = this._contextMenu) || void 0 === _this$_contextMenu ? void 0 : _this$_contextMenu.dispose();
                            this._contextMenu = this._createContextMenu(items);
                            this._attachEvents()
                        };
                        _proto._attachEvents = function() {
                            _events_engine.default.on(this.editorInstance._getContent(), CONTEXT_MENU_EVENT, this._prepareContextMenuHandler())
                        };
                        _proto._detachEvents = function() {
                            _events_engine.default.off(this.editorInstance._getContent(), CONTEXT_MENU_EVENT)
                        };
                        _proto._createContextMenu = function(items) {
                            const $container = (0, _renderer.default)("<div>").appendTo(this.editorInstance.$element());
                            const menuConfig = this._getMenuConfig(items);
                            return this.editorInstance._createComponent($container, _context_menu.default, menuConfig)
                        };
                        _proto.showPropertiesForm = function() {
                            let type = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "cell";
                            const $element = (0, _renderer.default)(this._targetElement).closest("cell" === type ? "th, td" : "table");
                            this._contextMenu.hide();
                            this._formatHandlers["".concat(type, "Properties")]($element);
                            this._targetElement = null
                        };
                        _proto._isAcceptableItem = function(widget, acceptableWidgetName) {
                            return !widget || widget === acceptableWidgetName
                        };
                        _proto._handleObjectItem = function(item) {
                            if (item.name && this._isAcceptableItem(item.widget, "dxButton")) {
                                const defaultButtonItemConfig = this._prepareMenuItemConfig(item.name);
                                const buttonItemConfig = (0, _extend.extend)(true, defaultButtonItemConfig, item);
                                return buttonItemConfig
                            } else if (item.items) {
                                item.items = this._prepareMenuItems(item.items);
                                return item
                            } else {
                                return item
                            }
                        };
                        _proto._prepareMenuItemConfig = function(name) {
                            var _ICON_MAP$name, _this$_formatHandlers;
                            const iconName = null !== (_ICON_MAP$name = _toolbar_helper.ICON_MAP[name]) && void 0 !== _ICON_MAP$name ? _ICON_MAP$name : name;
                            const buttonText = (0, _inflector.titleize)(name);
                            return {
                                text: localize(buttonText),
                                icon: iconName.toLowerCase(),
                                onClick: null !== (_this$_formatHandlers = this._formatHandlers[name]) && void 0 !== _this$_formatHandlers ? _this$_formatHandlers : (0, _toolbar_helper.getDefaultClickHandler)(this, name)
                            }
                        };
                        _proto._prepareMenuItems = function(items) {
                            const resultItems = [];
                            (0, _iterator.each)(items, (_, item) => {
                                let newItem;
                                if ((0, _type.isObject)(item)) {
                                    newItem = this._handleObjectItem(item)
                                } else if ((0, _type.isString)(item)) {
                                    newItem = this._prepareMenuItemConfig(item)
                                }
                                if (newItem) {
                                    resultItems.push(newItem)
                                }
                            });
                            return resultItems
                        };
                        _proto._getMenuConfig = function(items) {
                            const defaultItems = [{
                                text: localize("insert"),
                                items: ["insertHeaderRow", "insertRowAbove", "insertRowBelow", (0, _extend.extend)(this._prepareMenuItemConfig("insertColumnLeft"), {
                                    beginGroup: true
                                }), "insertColumnRight"]
                            }, {
                                text: localize("delete"),
                                items: ["deleteColumn", "deleteRow", "deleteTable"]
                            }, (0, _extend.extend)(this._prepareMenuItemConfig("cellProperties"), {
                                onClick: e => {
                                    this.showPropertiesForm("cell")
                                }
                            }), (0, _extend.extend)(this._prepareMenuItemConfig("tableProperties"), {
                                onClick: e => {
                                    this.showPropertiesForm("table")
                                }
                            })];
                            const customItems = this._prepareMenuItems(null !== items && void 0 !== items && items.length ? items : defaultItems);
                            return {
                                target: this._quillContainer,
                                showEvent: null,
                                hideOnParentScroll: false,
                                items: customItems
                            }
                        };
                        _proto._prepareContextMenuHandler = function() {
                            return event => {
                                if (this._isTableTarget(event.target)) {
                                    this._targetElement = event.target;
                                    this._setContextMenuPosition(event);
                                    this._contextMenu.show();
                                    event.preventDefault()
                                }
                            }
                        };
                        _proto._setContextMenuPosition = function(event) {
                            const startPosition = this._quillContainer.get(0).getBoundingClientRect();
                            this._contextMenu.option({
                                position: {
                                    my: "left top",
                                    at: "left top",
                                    collision: "fit fit",
                                    offset: {
                                        x: event.clientX - startPosition.left,
                                        y: event.clientY - startPosition.top
                                    }
                                }
                            })
                        };
                        _proto._isTableTarget = function(targetElement) {
                            return !!(0, _renderer.default)(targetElement).closest(".dx-htmleditor-content td, .dx-htmleditor-content th").length
                        };
                        _proto.clean = function() {
                            this._detachEvents()
                        };
                        _proto.option = function(_option, value) {
                            if ("tableContextMenu" === _option) {
                                this.handleOptionChangeValue(value);
                                return
                            }
                            if ("enabled" === _option) {
                                this.enabled = value;
                                value ? this._enableContextMenu() : this.clean()
                            } else if ("items" === _option) {
                                var _this$_contextMenu2;
                                null === (_this$_contextMenu2 = this._contextMenu) || void 0 === _this$_contextMenu2 ? void 0 : _this$_contextMenu2.dispose();
                                this._contextMenu = this._createContextMenu(value)
                            }
                        };
                        _proto.prepareCleanCallback = function() {
                            return () => {
                                this.clean()
                            }
                        };
                        return TableContextMenuModule
                    }(_base.default)
                }
                var _default = TableContextMenuModule;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        56459:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/modules/tableResizing.js ***!
              \*************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../events/core/events_engine */ 55994));
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _index = __webpack_require__( /*! ../../../events/utils/index */ 39611);
                var _resize_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/resize_callbacks */ 55814));
                var _translator = __webpack_require__( /*! ../../../animation/translator */ 31648);
                var _position = __webpack_require__( /*! ../../../core/utils/position */ 37518);
                var _base = _interopRequireDefault(__webpack_require__( /*! ./base */ 30963));
                var _draggable = _interopRequireDefault(__webpack_require__( /*! ../../draggable */ 42160));
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 95479);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 58201);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _table_helper = __webpack_require__( /*! ../utils/table_helper */ 28822);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const DEFAULTS = {
                    minColumnWidth: 40,
                    minRowHeight: 24
                };
                const POINTERDOWN_EVENT = (0, _index.addNamespace)("dxpointerdown", "dxHtmlTableResizingModule");
                const SCROLL_EVENT = (0, _index.addNamespace)("scroll", "dxHtmlTableResizingModule");
                let TableResizingModule = function(_BaseModule) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(TableResizingModule, _BaseModule);

                    function TableResizingModule(quill, options) {
                        var _this;
                        _this = _BaseModule.call(this, quill, options) || this;
                        _this.enabled = !!options.enabled;
                        _this._tableResizeFrames = [];
                        _this._minColumnWidth = _this._minSizeLimit("minColumnWidth", options.minColumnWidth);
                        _this._minRowHeight = _this._minSizeLimit("minRowHeight", options.minRowHeight);
                        _this._quillContainer = _this.editorInstance._getQuillContainer();
                        _this._tableData = [];
                        if (_this.enabled) {
                            _this._applyResizing()
                        }
                        return _this
                    }
                    var _proto = TableResizingModule.prototype;
                    _proto._applyResizing = function(forcedStart) {
                        if (forcedStart) {
                            this._applyResizingImpl()
                        } else {
                            this.editorInstance.addContentInitializedCallback(this._applyResizingImpl.bind(this))
                        }
                        this.addCleanCallback(this.clean.bind(this));
                        this._resizeHandlerWithContext = _resize_callbacks.default.add(this._resizeHandler.bind(this))
                    };
                    _proto._minSizeLimit = function(propertyName, newValue) {
                        return (0, _type.isDefined)(newValue) ? Math.max(newValue, 0) : DEFAULTS[propertyName]
                    };
                    _proto._applyResizingImpl = function() {
                        const $tables = this._findTables();
                        if ($tables.length) {
                            this._fixTablesWidths($tables);
                            this._createResizeFrames($tables);
                            this._updateFramesPositions();
                            this._updateFramesSeparators()
                        }
                        this._attachEvents()
                    };
                    _proto._attachEvents = function() {
                        _events_engine.default.on(this.editorInstance._getContent(), SCROLL_EVENT, this._updateFramesPositions.bind(this));
                        this.quill.on("text-change", this._getQuillTextChangeHandler())
                    };
                    _proto._detachEvents = function() {
                        _events_engine.default.off(this.editorInstance._getContent(), "dxHtmlTableResizingModule");
                        this.quill.off("text-change", this._quillTextChangeHandler)
                    };
                    _proto._getQuillTextChangeHandler = function(delta, oldContent, source) {
                        return (delta, oldContent, source) => {
                            if (this._isTableChanging()) {
                                const $tables = this._findTables();
                                this._removeResizeFrames();
                                if ("api" === source) {
                                    this._fixTablesWidths($tables)
                                }
                                this._updateTablesColumnsWidth($tables);
                                this._createResizeFrames($tables);
                                this._updateFramesPositions();
                                this._updateFramesSeparators()
                            } else {
                                this._updateFramesPositions();
                                if (!this._isDragging) {
                                    this._updateFramesSeparators()
                                }
                            }
                        }
                    };
                    _proto._getFrameForTable = function($table) {
                        var _this$_framesForTable;
                        return null === (_this$_framesForTable = this._framesForTables) || void 0 === _this$_framesForTable ? void 0 : _this$_framesForTable.get($table.get(0))
                    };
                    _proto._resizeHandler = function() {
                        this._windowResizeTimeout = setTimeout(() => {
                            const $tables = this._findTables();
                            (0, _iterator.each)($tables, (index, table) => {
                                const $table = (0, _renderer.default)(table);
                                const frame = this._tableResizeFrames[index];
                                const actualTableWidth = (0, _size.getOuterWidth)($table);
                                const lastTableWidth = this._tableLastWidth(frame);
                                if (Math.abs(actualTableWidth - lastTableWidth) > 1) {
                                    this._tableLastWidth(frame, actualTableWidth);
                                    this._updateColumnsWidth($table, index)
                                }
                            });
                            this._updateFramesPositions();
                            this._updateFramesSeparators()
                        })
                    };
                    _proto._findTables = function() {
                        return (0, _renderer.default)(this._quillContainer).find("table")
                    };
                    _proto._getWidthStyleValue = function($element) {
                        const styleValue = $element[0].style.width;
                        return "" !== styleValue ? parseInt(styleValue) : void 0
                    };
                    _proto._tableLastWidth = function(frame, newValue) {
                        if ((0, _type.isDefined)(newValue)) {
                            frame.lastWidth = newValue
                        } else {
                            return null === frame || void 0 === frame ? void 0 : frame.lastWidth
                        }
                    };
                    _proto._fixTablesWidths = function($tables) {
                        (0, _iterator.each)($tables, (index, table) => {
                            const $table = (0, _renderer.default)(table);
                            const $columnElements = this._getTableDeterminantElements($table, "horizontal");
                            if (!this._tableResizeFrames[index]) {
                                this._tableResizeFrames[index] = {
                                    lastWidth: void 0
                                }
                            }
                            const frame = this._getFrameForTable($table);
                            if (!frame) {
                                this._tableResizeFrames.push({
                                    $table: $table
                                })
                            }
                            if (0 === (0, _table_helper.getAutoSizedElements)($table).length) {
                                var _this$_tableLastWidth;
                                const {
                                    columnsSum: columnsSum
                                } = this._getColumnElementsSum($columnElements);
                                (0, _table_helper.unfixTableWidth)($table, {
                                    quill: this.quill
                                });
                                const tableWidth = null !== (_this$_tableLastWidth = this._tableLastWidth(frame)) && void 0 !== _this$_tableLastWidth ? _this$_tableLastWidth : (0, _size.getOuterWidth)($table);
                                if (frame) {
                                    this._tableLastWidth(frame, Math.max(columnsSum, tableWidth))
                                }
                            }
                        })
                    };
                    _proto._createResizeFrames = function($tables) {
                        this._framesForTables = new Map;
                        $tables.each((index, table) => {
                            var _this$_tableResizeFra;
                            const $table = (0, _renderer.default)(table);
                            const $lastTable = null === (_this$_tableResizeFra = this._tableResizeFrames[index]) || void 0 === _this$_tableResizeFra ? void 0 : _this$_tableResizeFra.$table;
                            const $tableLastWidth = this._tableResizeFrames[index].lastWidth;
                            this._tableResizeFrames[index] = {
                                $frame: this._createTableResizeFrame(table),
                                $table: $table,
                                index: index,
                                lastWidth: $lastTable && table === $lastTable.get(0) ? $tableLastWidth : void 0,
                                columnsCount: this._getTableDeterminantElements($table, "horizontal").length,
                                rowsCount: this._getTableDeterminantElements($table, "vertical").length
                            };
                            this._framesForTables.set(table, this._tableResizeFrames[index])
                        });
                        this._tableResizeFrames.length = $tables.length
                    };
                    _proto._isTableChanging = function() {
                        const $tables = this._findTables();
                        let result = false;
                        if ($tables.length !== this._tableResizeFrames.length) {
                            result = true
                        } else {
                            (0, _iterator.each)($tables, (index, table) => {
                                const $table = (0, _renderer.default)(table);
                                const frame = this._tableResizeFrames[index];
                                const isColumnsCountChanged = (null === frame || void 0 === frame ? void 0 : frame.columnsCount) !== this._getTableDeterminantElements($table, "horizontal").length;
                                const isRowCountChanged = (null === frame || void 0 === frame ? void 0 : frame.rowsCount) !== this._getTableDeterminantElements($table, "vertical").length;
                                if (isColumnsCountChanged || isRowCountChanged) {
                                    result = true;
                                    return false
                                }
                            })
                        }
                        return result
                    };
                    _proto._removeResizeFrames = function(clearArray) {
                        var _this$_framesForTable2;
                        (0, _iterator.each)(this._tableResizeFrames, (index, resizeFrame) => {
                            if (resizeFrame.$frame) {
                                var _resizeFrame$$frame;
                                const resizerElementsSelector = ".".concat("dx-htmleditor-column-resizer", ", .").concat("dx-htmleditor-row-resizer");
                                this._detachSeparatorEvents(null === (_resizeFrame$$frame = resizeFrame.$frame) || void 0 === _resizeFrame$$frame ? void 0 : _resizeFrame$$frame.find(resizerElementsSelector));
                                resizeFrame.$frame.remove()
                            }
                        });
                        null === (_this$_framesForTable2 = this._framesForTables) || void 0 === _this$_framesForTable2 ? void 0 : _this$_framesForTable2.clear();
                        if (clearArray) {
                            this._tableResizeFrames = []
                        }
                    };
                    _proto._detachSeparatorEvents = function($lineSeparators) {
                        $lineSeparators.each((i, $lineSeparator) => {
                            _events_engine.default.off($lineSeparator, POINTERDOWN_EVENT)
                        })
                    };
                    _proto._createTableResizeFrame = function() {
                        return (0, _renderer.default)("<div>").addClass("dx-table-resize-frame").appendTo(this._quillContainer)
                    };
                    _proto._updateFramesPositions = function() {
                        (0, _iterator.each)(this._tableResizeFrames, (index, tableResizeFrame) => {
                            this._updateFramePosition(tableResizeFrame.$table, tableResizeFrame.$frame)
                        })
                    };
                    _proto._updateFramePosition = function($table, $frame) {
                        const {
                            height: height,
                            width: width,
                            top: targetTop,
                            left: targetLeft
                        } = (0, _position.getBoundingRect)($table.get(0));
                        const {
                            top: containerTop,
                            left: containerLeft
                        } = (0, _position.getBoundingRect)(this.quill.root);
                        $frame.css({
                            height: height,
                            width: width,
                            top: targetTop - containerTop,
                            left: targetLeft - containerLeft
                        });
                        (0, _translator.move)($frame, {
                            left: 0,
                            top: 0
                        })
                    };
                    _proto._updateFramesSeparators = function(direction) {
                        (0, _iterator.each)(this._tableResizeFrames, (index, frame) => {
                            if (direction) {
                                this._updateFrameSeparators(frame, direction)
                            } else {
                                this._updateFrameSeparators(frame, "vertical");
                                this._updateFrameSeparators(frame, "horizontal")
                            }
                        })
                    };
                    _proto._isDraggable = function($element) {
                        return $element.hasClass("dx-draggable") && $element.is(":visible")
                    };
                    _proto._removeDraggable = function($currentLineSeparator, lineResizerClass) {
                        if (this._isDraggable($currentLineSeparator)) {
                            const draggable = (0, _renderer.default)($currentLineSeparator).dxDraggable("instance");
                            draggable.dispose();
                            (0, _renderer.default)($currentLineSeparator).addClass(lineResizerClass)
                        }
                    };
                    _proto._getDirectionInfo = function(direction) {
                        if ("vertical" === direction) {
                            return {
                                lineResizerClass: "dx-htmleditor-row-resizer",
                                sizeFunction: x => (0, _size.getOuterHeight)(x),
                                positionCoordinate: "top",
                                positionStyleProperty: "height",
                                positionCoordinateName: "y"
                            }
                        } else {
                            return {
                                lineResizerClass: "dx-htmleditor-column-resizer",
                                sizeFunction: x => (0, _size.getOuterWidth)(x),
                                positionCoordinate: this.editorInstance.option("rtlEnabled") ? "right" : "left",
                                positionStyleProperty: "width",
                                positionCoordinateName: "x"
                            }
                        }
                    };
                    _proto._getSize = function($element, directionInfo) {
                        return directionInfo.sizeFunction($element)
                    };
                    _proto._updateFrameSeparators = function(frame, direction) {
                        const $determinantElements = this._getTableDeterminantElements(frame.$table, direction);
                        const determinantElementsCount = $determinantElements.length;
                        const determinantElementsSeparatorsCount = determinantElementsCount - 1;
                        const directionInfo = this._getDirectionInfo(direction);
                        const lineSeparators = frame.$frame.find(".".concat(directionInfo.lineResizerClass));
                        const styleOptions = {
                            transform: "none"
                        };
                        let currentPosition = 0;
                        for (let i = 0; i <= determinantElementsSeparatorsCount; i++) {
                            currentPosition += this._getSize($determinantElements.eq(i), directionInfo);
                            if (!(0, _type.isDefined)(lineSeparators[i])) {
                                lineSeparators[i] = (0, _renderer.default)("<div>").addClass(directionInfo.lineResizerClass).appendTo(frame.$frame).get(0)
                            }
                            const $currentLineSeparator = (0, _renderer.default)(lineSeparators[i]);
                            this._removeDraggable($currentLineSeparator, directionInfo.lineResizerClass);
                            styleOptions[directionInfo.positionCoordinate] = currentPosition - 2;
                            (0, _renderer.default)($currentLineSeparator).css(styleOptions);
                            const attachSeparatorData = {
                                lineSeparator: lineSeparators[i],
                                index: i,
                                $determinantElements: $determinantElements,
                                frame: frame,
                                direction: direction
                            };
                            this._attachColumnSeparatorEvents(attachSeparatorData)
                        }
                    };
                    _proto._getTableDeterminantElements = function($table, direction) {
                        if ("vertical" === direction) {
                            return $table.find("th:first-child, td:first-child")
                        } else {
                            return (0, _table_helper.getColumnElements)($table)
                        }
                    };
                    _proto._attachColumnSeparatorEvents = function(options) {
                        _events_engine.default.on(options.lineSeparator, POINTERDOWN_EVENT, () => {
                            this._createDraggableElement(options)
                        })
                    };
                    _proto._dragStartHandler = function(_ref) {
                        let {
                            $determinantElements: $determinantElements,
                            index: index,
                            frame: frame,
                            direction: direction,
                            lineSeparator: lineSeparator
                        } = _ref;
                        const directionInfo = this._getDirectionInfo(direction);
                        this._isDragging = true;
                        this._fixColumnsWidth(frame.$table);
                        this._startLineSize = parseInt(this._getSize((0, _renderer.default)($determinantElements[index]), directionInfo));
                        this._startTableWidth = (0, _size.getOuterWidth)(frame.$table);
                        this._startLineSeparatorPosition = parseInt((0, _renderer.default)(lineSeparator).css(directionInfo.positionCoordinate));
                        this._nextLineSize = 0;
                        if ($determinantElements[index + 1]) {
                            this._nextLineSize = parseInt(this._getSize((0, _renderer.default)($determinantElements[index + 1]), directionInfo))
                        } else if ("horizontal" === direction) {
                            (0, _table_helper.unfixTableWidth)(frame.$table, {
                                quill: this.quill
                            })
                        }
                    };
                    _proto._shouldRevertOffset = function(direction) {
                        return "horizontal" === direction && this.editorInstance.option("rtlEnabled")
                    };
                    _proto._isNextColumnWidthEnough = function(nextColumnNewSize, $nextColumnElement, eventOffset) {
                        if (!this._nextLineSize) {
                            return true
                        } else if (nextColumnNewSize >= this._minColumnWidth) {
                            const isWidthIncreased = this._nextColumnOffsetLimit ? eventOffset < this._nextColumnOffsetLimit : eventOffset < 0;
                            const isWidthLimited = Math.abs(this._getWidthStyleValue($nextColumnElement) - (0, _size.getOuterWidth)($nextColumnElement)) > 3;
                            return isWidthIncreased || !isWidthLimited
                        }
                        return false
                    };
                    _proto._shouldSetNextColumnWidth = function(nextColumnNewSize) {
                        return this._nextLineSize && nextColumnNewSize > 0
                    };
                    _proto._horizontalDragHandler = function(_ref2) {
                        let {
                            currentLineNewSize: currentLineNewSize,
                            directionInfo: directionInfo,
                            eventOffset: eventOffset,
                            $determinantElements: $determinantElements,
                            index: index,
                            frame: frame
                        } = _ref2;
                        let nextColumnNewSize = this._nextLineSize && this._nextLineSize - eventOffset;
                        const isCurrentColumnWidthEnough = currentLineNewSize >= this._minColumnWidth;
                        const $lineElements = (0, _table_helper.getLineElements)(frame.$table, index);
                        const $nextLineElements = (0, _table_helper.getLineElements)(frame.$table, index + 1);
                        const realWidthDiff = (0, _size.getOuterWidth)($lineElements.eq(0)) - currentLineNewSize;
                        if (isCurrentColumnWidthEnough) {
                            if (this._isNextColumnWidthEnough(nextColumnNewSize, $determinantElements.eq(index + 1), eventOffset)) {
                                (0, _table_helper.setLineElementsFormat)(this, {
                                    elements: $lineElements,
                                    property: directionInfo.positionStyleProperty,
                                    value: currentLineNewSize
                                });
                                if (this._shouldSetNextColumnWidth(nextColumnNewSize)) {
                                    (0, _table_helper.setLineElementsFormat)(this, {
                                        elements: $nextLineElements,
                                        property: directionInfo.positionStyleProperty,
                                        value: nextColumnNewSize
                                    })
                                }
                                const isTableWidthChanged = Math.abs(this._startTableWidth - (0, _size.getOuterWidth)(frame.$table)) < 3;
                                const shouldRevertNewValue = Math.abs(realWidthDiff) > 3 || !this._nextLineSize && isTableWidthChanged;
                                if (shouldRevertNewValue) {
                                    (0, _table_helper.setLineElementsFormat)(this, {
                                        elements: $lineElements,
                                        property: directionInfo.positionStyleProperty,
                                        value: (0, _size.getOuterWidth)($lineElements.eq(0))
                                    });
                                    nextColumnNewSize += currentLineNewSize - (0, _size.getOuterWidth)($lineElements.eq(0));
                                    if (this._shouldSetNextColumnWidth(nextColumnNewSize)) {
                                        (0, _table_helper.setLineElementsFormat)(this, {
                                            elements: $nextLineElements,
                                            property: directionInfo.positionStyleProperty,
                                            value: nextColumnNewSize
                                        })
                                    }
                                }
                            } else {
                                this._nextColumnOffsetLimit = this._nextColumnOffsetLimit || eventOffset
                            }
                        }
                        this._$highlightedElement.css(directionInfo.positionCoordinate, this._startLineSeparatorPosition + eventOffset + realWidthDiff + "px")
                    };
                    _proto._verticalDragHandler = function(_ref3) {
                        let {
                            currentLineNewSize: currentLineNewSize,
                            directionInfo: directionInfo,
                            eventOffset: eventOffset,
                            $determinantElements: $determinantElements,
                            index: index,
                            frame: frame
                        } = _ref3;
                        const newHeight = Math.max(currentLineNewSize, this._minRowHeight);
                        const $lineElements = (0, _table_helper.getLineElements)(frame.$table, index, "vertical");
                        (0, _table_helper.setLineElementsFormat)(this, {
                            elements: $lineElements,
                            property: directionInfo.positionStyleProperty,
                            value: newHeight
                        });
                        const rowHeightDiff = (0, _size.getOuterHeight)($determinantElements.eq(index)) - currentLineNewSize;
                        this._$highlightedElement.css(directionInfo.positionCoordinate, this._startLineSeparatorPosition + eventOffset + rowHeightDiff + "px")
                    };
                    _proto._dragMoveHandler = function(event, _ref4) {
                        let {
                            $determinantElements: $determinantElements,
                            index: index,
                            frame: frame,
                            direction: direction
                        } = _ref4;
                        const directionInfo = this._getDirectionInfo(direction);
                        let eventOffset = event.offset[directionInfo.positionCoordinateName];
                        this.editorInstance._saveValueChangeEvent(event);
                        if (this._shouldRevertOffset(direction)) {
                            eventOffset = -eventOffset
                        }
                        const currentLineNewSize = this._startLineSize + eventOffset;
                        if ("horizontal" === direction) {
                            this._horizontalDragHandler({
                                currentLineNewSize: currentLineNewSize,
                                directionInfo: directionInfo,
                                eventOffset: eventOffset,
                                $determinantElements: $determinantElements,
                                index: index,
                                frame: frame
                            })
                        } else {
                            this._verticalDragHandler({
                                currentLineNewSize: currentLineNewSize,
                                directionInfo: directionInfo,
                                eventOffset: eventOffset,
                                $determinantElements: $determinantElements,
                                index: index,
                                frame: frame
                            })
                        }
                        this._updateFramePosition(frame.$table, frame.$frame)
                    };
                    _proto._dragEndHandler = function(options) {
                        var _this$_$highlightedEl;
                        null === (_this$_$highlightedEl = this._$highlightedElement) || void 0 === _this$_$highlightedEl ? void 0 : _this$_$highlightedEl.remove();
                        this._isDragging = void 0;
                        this._nextColumnOffsetLimit = void 0;
                        this._tableLastWidth(options.frame, (0, _size.getOuterWidth)(options.frame.$table));
                        this._updateFramesPositions();
                        this._updateFramesSeparators()
                    };
                    _proto._isLastColumnResizing = function(_ref5) {
                        let {
                            $determinantElements: $determinantElements,
                            index: index
                        } = _ref5;
                        return !(0, _type.isDefined)($determinantElements[index + 1])
                    };
                    _proto._getBoundaryConfig = function(options) {
                        const result = {};
                        if ("vertical" === options.direction) {
                            result.boundary = options.frame.$table;
                            result.boundOffset = {
                                bottom: (0, _window.hasWindow)() ? -(0, _size.getHeight)((0, _window.getWindow)()) : -(0, _size.getOuterHeight)(this._quillContainer),
                                top: 0,
                                left: 0,
                                right: 0
                            }
                        } else if (!this._isLastColumnResizing(options)) {
                            result.boundary = options.frame.$table
                        } else {
                            const $content = this.editorInstance._getContent();
                            result.boundary = $content;
                            result.boundOffset = {
                                bottom: 0,
                                top: 0,
                                left: $content.css("paddingLeft"),
                                right: $content.css("paddingRight")
                            }
                        }
                        return result
                    };
                    _proto._createDraggableElement = function(options) {
                        var _this$_$highlightedEl2;
                        const boundaryConfig = this._getBoundaryConfig(options);
                        const directionClass = "vertical" === options.direction ? "dx-htmleditor-highlighted-row" : "dx-htmleditor-highlighted-column";
                        null === (_this$_$highlightedEl2 = this._$highlightedElement) || void 0 === _this$_$highlightedEl2 ? void 0 : _this$_$highlightedEl2.remove();
                        this._$highlightedElement = (0, _renderer.default)("<div>").addClass("".concat(directionClass)).insertAfter((0, _renderer.default)(options.lineSeparator));
                        const config = {
                            contentTemplate: null,
                            allowMoveByClick: false,
                            dragDirection: options.direction,
                            onDragMove: _ref6 => {
                                let {
                                    component: component,
                                    event: event
                                } = _ref6;
                                this._dragMoveHandler(event, options)
                            },
                            onDragStart: () => {
                                this._dragStartHandler(options)
                            },
                            onDragEnd: () => {
                                this._dragEndHandler(options)
                            }
                        };
                        (0, _extend.extend)(config, boundaryConfig);
                        this._currentDraggableElement = this.editorInstance._createComponent(options.lineSeparator, _draggable.default, config)
                    };
                    _proto._fixColumnsWidth = function($table) {
                        const determinantElements = this._getTableDeterminantElements($table);
                        (0, _iterator.each)(determinantElements, (index, element) => {
                            const columnWidth = (0, _size.getOuterWidth)(element);
                            const $lineElements = (0, _table_helper.getLineElements)($table, index);
                            (0, _table_helper.setLineElementsFormat)(this, {
                                elements: $lineElements,
                                property: "width",
                                value: Math.max(columnWidth, this._minColumnWidth)
                            })
                        })
                    };
                    _proto._getColumnElementsSum = function(columnElements) {
                        const columnsWidths = [];
                        let columnsSum = 0;
                        (0, _iterator.each)(columnElements, (index, element) => {
                            const $element = (0, _renderer.default)(element);
                            const columnWidth = this._getWidthStyleValue($element) || (0, _size.getOuterWidth)($element);
                            columnsWidths[index] = Math.max(columnWidth, this._minColumnWidth);
                            columnsSum += columnsWidths[index]
                        });
                        return {
                            columnsWidths: columnsWidths,
                            columnsSum: columnsSum
                        }
                    };
                    _proto._setColumnsRatioWidth = function(columnElements, ratio, columnsWidths, $table) {
                        (0, _iterator.each)(columnElements, index => {
                            const $lineElements = (0, _table_helper.getLineElements)($table, index);
                            let resultWidth;
                            if (ratio > 0) {
                                resultWidth = this._minColumnWidth + Math.round((columnsWidths[index] - this._minColumnWidth) * ratio)
                            } else {
                                resultWidth = this._minColumnWidth
                            }(0, _table_helper.setLineElementsFormat)(this, {
                                elements: $lineElements,
                                property: "width",
                                value: resultWidth
                            })
                        })
                    };
                    _proto._updateColumnsWidth = function($table, frameIndex) {
                        const determinantElements = this._getTableDeterminantElements($table);
                        let frame = this._tableResizeFrames[frameIndex];
                        if (!frame) {
                            this._tableResizeFrames[frameIndex] = {}
                        }
                        frame = this._tableResizeFrames[frameIndex];
                        const tableWidth = this._tableLastWidth(frame) || (0, _size.getOuterWidth)($table);
                        let ratio;
                        const {
                            columnsWidths: columnsWidths,
                            columnsSum: columnsSum
                        } = this._getColumnElementsSum(determinantElements);
                        const minWidthForColumns = determinantElements.length * this._minColumnWidth;
                        if (columnsSum > minWidthForColumns) {
                            ratio = (tableWidth - minWidthForColumns) / (columnsSum - minWidthForColumns)
                        } else {
                            ratio = -1
                        }
                        this._tableLastWidth(frame, ratio > 0 ? tableWidth : minWidthForColumns);
                        this._setColumnsRatioWidth(determinantElements, ratio, columnsWidths, $table)
                    };
                    _proto._updateTablesColumnsWidth = function($tables) {
                        (0, _iterator.each)($tables, (index, table) => {
                            this._updateColumnsWidth((0, _renderer.default)(table), index)
                        })
                    };
                    _proto.option = function(_option, value) {
                        if ("tableResizing" === _option) {
                            this.handleOptionChangeValue(value);
                            return
                        }
                        if ("enabled" === _option) {
                            this.enabled = value;
                            value ? this._applyResizing(true) : this.clean()
                        } else if (["minColumnWidth", "minRowHeight"].includes(_option)) {
                            this["_".concat(_option)] = this._minSizeLimit(_option, value)
                        }
                    };
                    _proto.clean = function() {
                        this._removeResizeFrames(true);
                        this._detachEvents();
                        _resize_callbacks.default.remove(this._resizeHandlerWithContext);
                        clearTimeout(this._windowResizeTimeout);
                        this._resizeHandlerWithContext = void 0;
                        this._isDragging = void 0;
                        this._startTableWidth = void 0;
                        clearTimeout(this._attachResizerTimeout)
                    };
                    return TableResizingModule
                }(_base.default);
                exports.default = TableResizingModule;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        77616:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/modules/toolbar.js ***!
              \*******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _devextremeQuill = _interopRequireDefault(__webpack_require__( /*! devextreme-quill */ 9549));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _base = _interopRequireDefault(__webpack_require__( /*! ./base */ 30963));
                var _toolbar = _interopRequireDefault(__webpack_require__( /*! ../../toolbar */ 71042));
                __webpack_require__( /*! ../../select_box */ 78665);
                __webpack_require__( /*! ../../color_box/color_view */ 89838);
                __webpack_require__( /*! ../../number_box */ 34171);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../widget/ui.errors */ 96688));
                var _widget_collector = _interopRequireDefault(__webpack_require__( /*! ./widget_collector */ 38110));
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../localization/message */ 28109));
                var _inflector = __webpack_require__( /*! ../../../core/utils/inflector */ 78008);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../events/core/events_engine */ 55994));
                var _index = __webpack_require__( /*! ../../../events/utils/index */ 39611);
                var _table_helper = __webpack_require__( /*! ../utils/table_helper */ 28822);
                var _toolbar_helper = __webpack_require__( /*! ../utils/toolbar_helper */ 92077);

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

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let ToolbarModule = _base.default;
                if (_devextremeQuill.default) {
                    const TOOLBAR_WRAPPER_CLASS = "dx-htmleditor-toolbar-wrapper";
                    const TOOLBAR_CLASS = "dx-htmleditor-toolbar";
                    const TOOLBAR_FORMAT_WIDGET_CLASS = "dx-htmleditor-toolbar-format";
                    const TOOLBAR_SEPARATOR_CLASS = "dx-htmleditor-toolbar-separator";
                    const TOOLBAR_MENU_SEPARATOR_CLASS = "dx-htmleditor-toolbar-menu-separator";
                    const ACTIVE_FORMAT_CLASS = "dx-format-active";
                    const SELECTED_STATE_CLASS = "dx-state-selected";
                    const ICON_CLASS = "dx-icon";
                    const SELECTION_CHANGE_EVENT = "selection-change";
                    const USER_ACTION = "user";
                    const SILENT_ACTION = "silent";
                    const FORMAT_HOTKEYS = {
                        66: "bold",
                        73: "italic",
                        85: "underline"
                    };
                    const KEY_CODES = {
                        b: 66,
                        i: 73,
                        u: 85
                    };
                    const localize = name => _message.default.format("dxHtmlEditor-".concat((0, _inflector.camelize)(name)));
                    const localizeValue = (value, name) => {
                        if ("header" === name) {
                            const isHeaderValue = (0, _type.isDefined)(value) && false !== value;
                            return isHeaderValue ? "".concat(localize("heading"), " ").concat(value) : localize("normalText")
                        }
                        return localize(value) || value
                    };
                    ToolbarModule = function(_BaseModule) {
                        ! function(subClass, superClass) {
                            subClass.prototype = Object.create(superClass.prototype);
                            subClass.prototype.constructor = subClass;
                            _setPrototypeOf(subClass, superClass)
                        }(ToolbarModule, _BaseModule);

                        function ToolbarModule(quill, options) {
                            var _this;
                            _this = _BaseModule.call(this, quill, options) || this;
                            _this._toolbarWidgets = new _widget_collector.default;
                            _this._formatHandlers = (0, _toolbar_helper.getFormatHandlers)(function(self) {
                                if (void 0 === self) {
                                    throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                                }
                                return self
                            }(_this));
                            _this._tableFormats = (0, _table_helper.getTableFormats)(quill);
                            if ((0, _type.isDefined)(options.items)) {
                                _this._addCallbacks();
                                _this._renderToolbar();
                                const toolbarMenu = _this.toolbarInstance._layoutStrategy._menu;
                                if (toolbarMenu) {
                                    const _renderPopup = toolbarMenu._renderPopup;
                                    toolbarMenu._renderPopup = function() {
                                        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
                                            args[_key] = arguments[_key]
                                        }
                                        _renderPopup.apply(toolbarMenu, ...args);
                                        toolbarMenu._popup.on("showing", () => {
                                            _this._updateToolbar(true)
                                        })
                                    }
                                }
                                _this.quill.on("editor-change", (eventName, newValue, oldValue, eventSource) => {
                                    const isSilentMode = eventSource === SILENT_ACTION && (0, _type.isEmptyObject)(_this.quill.getFormat());
                                    if (!isSilentMode) {
                                        const isSelectionChanged = eventName === SELECTION_CHANGE_EVENT;
                                        _this._updateToolbar(isSelectionChanged)
                                    }
                                })
                            }
                            return _this
                        }
                        var _proto = ToolbarModule.prototype;
                        _proto._addCallbacks = function() {
                            this.addCleanCallback(this.clean.bind(this));
                            this.editorInstance.addContentInitializedCallback(this.updateHistoryWidgets.bind(this))
                        };
                        _proto._updateToolbar = function(isSelectionChanged) {
                            this.updateFormatWidgets(isSelectionChanged);
                            this.updateHistoryWidgets();
                            this.updateTableWidgets()
                        };
                        _proto._updateFormatWidget = function(name, isApplied, formats) {
                            const widget = this._toolbarWidgets.getByName(name);
                            if (!widget) {
                                return
                            }
                            if (isApplied) {
                                this._markActiveFormatWidget(name, widget, formats)
                            } else {
                                this._resetFormatWidget(name, widget);
                                if (Object.prototype.hasOwnProperty.call(name)) {
                                    delete formats[name]
                                }
                            }
                            this._toggleClearFormatting(isApplied || !(0, _type.isEmptyObject)(formats))
                        };
                        _proto._renderToolbar = function() {
                            const container = this.options.container || this._getContainer();
                            this._$toolbar = (0, _renderer.default)("<div>").addClass(TOOLBAR_CLASS).appendTo(container);
                            this._$toolbarContainer = (0, _renderer.default)(container).addClass(TOOLBAR_WRAPPER_CLASS);
                            _events_engine.default.on(this._$toolbarContainer, (0, _index.addNamespace)("mousedown", this.editorInstance.NAME), e => {
                                e.target.focus();
                                e.preventDefault()
                            });
                            this._subscribeFormatHotKeys();
                            this.toolbarInstance = this.editorInstance._createComponent(this._$toolbar, _toolbar.default, this.toolbarConfig);
                            this.editorInstance.on("optionChanged", _ref => {
                                let {
                                    name: name
                                } = _ref;
                                if ("readOnly" === name || "disabled" === name) {
                                    this.toolbarInstance.option("disabled", this.isInteractionDisabled)
                                }
                            })
                        };
                        _proto.isMultilineMode = function() {
                            var _this$options$multili;
                            return null !== (_this$options$multili = this.options.multiline) && void 0 !== _this$options$multili ? _this$options$multili : true
                        };
                        _proto.clean = function() {
                            this._toolbarWidgets.clear();
                            if (this._$toolbarContainer) {
                                this._$toolbarContainer.empty().removeClass(TOOLBAR_WRAPPER_CLASS)
                            }
                        };
                        _proto.repaint = function() {
                            this.toolbarInstance && this.toolbarInstance.repaint()
                        };
                        _proto._getContainer = function() {
                            const $container = (0, _renderer.default)("<div>");
                            this.editorInstance.$element().prepend($container);
                            return $container
                        };
                        _proto._detectRenamedOptions = function(item) {
                            const optionsInfo = [{
                                newName: "name",
                                oldName: "formatName"
                            }, {
                                newName: "acceptedValues",
                                oldName: "formatValues"
                            }];
                            if ((0, _type.isObject)(item)) {
                                (0, _iterator.each)(optionsInfo, (index, optionName) => {
                                    if (Object.prototype.hasOwnProperty.call(item, optionName.oldName)) {
                                        _ui.default.log("W1016", optionName.oldName, optionName.newName)
                                    }
                                })
                            }
                        };
                        _proto._subscribeFormatHotKeys = function() {
                            this.quill.keyboard.addBinding({
                                which: KEY_CODES.b,
                                shortKey: true
                            }, this._handleFormatHotKey.bind(this));
                            this.quill.keyboard.addBinding({
                                which: KEY_CODES.i,
                                shortKey: true
                            }, this._handleFormatHotKey.bind(this));
                            this.quill.keyboard.addBinding({
                                which: KEY_CODES.u,
                                shortKey: true
                            }, this._handleFormatHotKey.bind(this))
                        };
                        _proto._handleFormatHotKey = function(range, context, _ref2) {
                            let {
                                which: which
                            } = _ref2;
                            const formatName = FORMAT_HOTKEYS[which];
                            this._updateButtonState(formatName)
                        };
                        _proto._updateButtonState = function(formatName) {
                            const formatWidget = this._toolbarWidgets.getByName(formatName);
                            const currentFormat = this.quill.getFormat();
                            const formatValue = currentFormat[formatName];
                            if (formatValue) {
                                this._markActiveFormatWidget(formatName, formatWidget, currentFormat)
                            } else {
                                this._resetFormatWidget(formatName, formatWidget)
                            }
                        };
                        _proto._prepareToolbarItems = function() {
                            const resultItems = [];
                            (0, _iterator.each)(this.options.items, (index, item) => {
                                let newItem;
                                this._detectRenamedOptions(item);
                                if ((0, _type.isObject)(item)) {
                                    newItem = this._handleObjectItem(item)
                                } else if ((0, _type.isString)(item)) {
                                    const buttonItemConfig = this._prepareButtonItemConfig(item);
                                    newItem = this._getToolbarItem(buttonItemConfig)
                                }
                                if (newItem) {
                                    resultItems.push(newItem)
                                }
                            });
                            return resultItems
                        };
                        _proto._handleObjectItem = function(item) {
                            if (item.name && item.acceptedValues && this._isAcceptableItem(item.widget, "dxSelectBox")) {
                                const selectItemConfig = this._prepareSelectItemConfig(item);
                                return this._getToolbarItem(selectItemConfig)
                            } else if (item.name && this._isAcceptableItem(item.widget, "dxButton")) {
                                const defaultButtonItemConfig = this._prepareButtonItemConfig(item.name);
                                const buttonItemConfig = (0, _extend.extend)(true, defaultButtonItemConfig, item);
                                return this._getToolbarItem(buttonItemConfig)
                            } else {
                                return this._getToolbarItem(item)
                            }
                        };
                        _proto._isAcceptableItem = function(widget, acceptableWidgetName) {
                            return !widget || widget === acceptableWidgetName
                        };
                        _proto._prepareButtonItemConfig = function(name) {
                            var _ICON_MAP$name;
                            const iconName = null !== (_ICON_MAP$name = _toolbar_helper.ICON_MAP[name]) && void 0 !== _ICON_MAP$name ? _ICON_MAP$name : name;
                            const buttonText = (0, _inflector.titleize)(name);
                            return {
                                widget: "dxButton",
                                name: name,
                                options: {
                                    hint: localize(buttonText),
                                    text: localize(buttonText),
                                    icon: iconName.toLowerCase(),
                                    onClick: this._formatHandlers[name] || (0, _toolbar_helper.getDefaultClickHandler)(this, name),
                                    stylingMode: "text"
                                },
                                showText: "inMenu"
                            }
                        };
                        _proto._prepareSelectItemConfig = function(item) {
                            const {
                                name: name,
                                acceptedValues: acceptedValues
                            } = item;
                            return (0, _extend.extend)(true, {
                                widget: "dxSelectBox",
                                name: name,
                                options: {
                                    stylingMode: "filled",
                                    dataSource: acceptedValues,
                                    displayExpr: value => localizeValue(value, name),
                                    placeholder: localize(name),
                                    onValueChanged: e => {
                                        if (!this._isReset) {
                                            this._hideAdaptiveMenu();
                                            (0, _toolbar_helper.applyFormat)(this, [name, e.value, USER_ACTION], e.event);
                                            this._setValueSilent(e.component, e.value)
                                        }
                                    }
                                }
                            }, item)
                        };
                        _proto._hideAdaptiveMenu = function() {
                            if (this.toolbarInstance.option("overflowMenuVisible")) {
                                this.toolbarInstance.option("overflowMenuVisible", false)
                            }
                        };
                        _proto._getToolbarItem = function(item) {
                            const baseItem = {
                                options: {
                                    onInitialized: e => {
                                        if (item.name) {
                                            e.component.$element().addClass(TOOLBAR_FORMAT_WIDGET_CLASS);
                                            e.component.$element().toggleClass("dx-".concat(item.name.toLowerCase(), "-format"), !!item.name);
                                            this._toolbarWidgets.add(item.name, e.component)
                                        }
                                    },
                                    onDisposing: () => {
                                        this._toolbarWidgets.remove(item.name)
                                    }
                                }
                            };
                            return (0, _extend.extend)(true, {
                                location: "before",
                                locateInMenu: "auto"
                            }, this._getDefaultConfig(item.name), item, baseItem)
                        };
                        _proto._getDefaultItemsConfig = function() {
                            return {
                                clear: {
                                    options: {
                                        disabled: true
                                    }
                                },
                                undo: {
                                    options: {
                                        disabled: true
                                    }
                                },
                                redo: {
                                    options: {
                                        disabled: true
                                    }
                                },
                                insertRowAbove: {
                                    options: {
                                        disabled: true
                                    }
                                },
                                insertRowBelow: {
                                    options: {
                                        disabled: true
                                    }
                                },
                                insertHeaderRow: {
                                    options: {
                                        disabled: true
                                    }
                                },
                                insertColumnLeft: {
                                    options: {
                                        disabled: true
                                    }
                                },
                                insertColumnRight: {
                                    options: {
                                        disabled: true
                                    }
                                },
                                deleteRow: {
                                    options: {
                                        disabled: true
                                    }
                                },
                                deleteColumn: {
                                    options: {
                                        disabled: true
                                    }
                                },
                                deleteTable: {
                                    options: {
                                        disabled: true
                                    }
                                },
                                cellProperties: {
                                    options: {
                                        disabled: true
                                    }
                                },
                                tableProperties: {
                                    options: {
                                        disabled: true
                                    }
                                },
                                separator: {
                                    template: (data, index, element) => {
                                        (0, _renderer.default)(element).addClass(TOOLBAR_SEPARATOR_CLASS)
                                    },
                                    menuItemTemplate: (data, index, element) => {
                                        (0, _renderer.default)(element).addClass(TOOLBAR_MENU_SEPARATOR_CLASS)
                                    }
                                }
                            }
                        };
                        _proto._getDefaultConfig = function(name) {
                            return this._getDefaultItemsConfig()[name]
                        };
                        _proto.updateHistoryWidgets = function() {
                            const historyModule = this.quill.history;
                            if (!historyModule) {
                                return
                            }
                            const {
                                undo: undoOps,
                                redo: redoOps
                            } = historyModule.stack;
                            this._updateManipulationWidget(this._toolbarWidgets.getByName("undo"), Boolean(undoOps.length));
                            this._updateManipulationWidget(this._toolbarWidgets.getByName("redo"), Boolean(redoOps.length))
                        };
                        _proto.updateTableWidgets = function() {
                            const table = this.quill.getModule("table");
                            if (!table) {
                                return
                            }
                            const selection = this.quill.getSelection();
                            const formats = selection && this.quill.getFormat(selection) || {};
                            const isTableOperationsEnabled = this._tableFormats.some(format => Boolean(formats[format]));
                            _table_helper.TABLE_OPERATIONS.forEach(operationName => {
                                const isInsertTable = "insertTable" === operationName;
                                const widget = this._toolbarWidgets.getByName(operationName);
                                this._updateManipulationWidget(widget, isInsertTable ? !isTableOperationsEnabled : isTableOperationsEnabled)
                            })
                        };
                        _proto._updateManipulationWidget = function(widget, isOperationEnabled) {
                            if (!widget) {
                                return
                            }
                            widget.option("disabled", !isOperationEnabled)
                        };
                        _proto.updateFormatWidgets = function(isResetRequired) {
                            const selection = this.quill.getSelection();
                            if (!selection) {
                                return
                            }
                            const formats = this.quill.getFormat(selection);
                            const hasFormats = !(0, _type.isEmptyObject)(formats);
                            if (!hasFormats || isResetRequired) {
                                this._resetFormatWidgets()
                            }
                            for (const formatName in formats) {
                                const widgetName = this._getFormatWidgetName(formatName, formats);
                                const formatWidget = this._toolbarWidgets.getByName(widgetName) || this._toolbarWidgets.getByName(formatName);
                                if (!formatWidget) {
                                    continue
                                }
                                this._markActiveFormatWidget(formatName, formatWidget, formats)
                            }
                            this._toggleClearFormatting(hasFormats || selection.length > 1)
                        };
                        _proto._markActiveFormatWidget = function(name, widget, formats) {
                            if (this._isColorFormat(name)) {
                                this._updateColorWidget(name, formats[name])
                            }
                            if ("value" in widget.option()) {
                                this._setValueSilent(widget, formats[name])
                            } else {
                                widget.$element().addClass(ACTIVE_FORMAT_CLASS);
                                widget.$element().addClass(SELECTED_STATE_CLASS)
                            }
                        };
                        _proto._toggleClearFormatting = function(hasFormats) {
                            const clearWidget = this._toolbarWidgets.getByName("clear");
                            if (clearWidget) {
                                clearWidget.option("disabled", !hasFormats)
                            }
                        };
                        _proto._isColorFormat = function(name) {
                            return "color" === name || "background" === name
                        };
                        _proto._updateColorWidget = function(name, color) {
                            const formatWidget = this._toolbarWidgets.getByName(name);
                            if (!formatWidget) {
                                return
                            }
                            formatWidget.$element().find(".".concat(ICON_CLASS)).css("borderBottomColor", color || "transparent")
                        };
                        _proto._getFormatWidgetName = function(name, formats) {
                            let widgetName;
                            switch (name) {
                                case "align":
                                    widgetName = name + (0, _inflector.titleize)(formats[name]);
                                    break;
                                case "list":
                                    widgetName = formats[name] + (0, _inflector.titleize)(name);
                                    break;
                                case "code-block":
                                    widgetName = "codeBlock";
                                    break;
                                case "script":
                                    widgetName = formats[name] + name;
                                    break;
                                case "imageSrc":
                                    widgetName = "image";
                                    break;
                                default:
                                    widgetName = name
                            }
                            return widgetName
                        };
                        _proto._setValueSilent = function(widget, value) {
                            this._isReset = true;
                            widget.option("value", value);
                            this._isReset = false
                        };
                        _proto._resetFormatWidgets = function() {
                            this._toolbarWidgets.each((name, widget) => {
                                this._resetFormatWidget(name, widget)
                            })
                        };
                        _proto._resetFormatWidget = function(name, widget) {
                            widget.$element().removeClass(ACTIVE_FORMAT_CLASS);
                            widget.$element().removeClass(SELECTED_STATE_CLASS);
                            if (this._isColorFormat(name)) {
                                this._updateColorWidget(name)
                            }
                            if ("clear" === name) {
                                widget.option("disabled", true)
                            }
                            if ("dxSelectBox" === widget.NAME) {
                                this._setValueSilent(widget, null)
                            }
                        };
                        _proto.addClickHandler = function(name, handler) {
                            this._formatHandlers[name] = handler;
                            const formatWidget = this._toolbarWidgets.getByName(name);
                            if (formatWidget && "dxButton" === formatWidget.NAME) {
                                formatWidget.option("onClick", handler)
                            }
                        };
                        ! function(Constructor, protoProps, staticProps) {
                            if (protoProps) {
                                _defineProperties(Constructor.prototype, protoProps)
                            }
                            if (staticProps) {
                                _defineProperties(Constructor, staticProps)
                            }
                            Object.defineProperty(Constructor, "prototype", {
                                writable: false
                            });
                            return Constructor
                        }(ToolbarModule, [{
                            key: "toolbarConfig",
                            get: function() {
                                return {
                                    dataSource: this._prepareToolbarItems(),
                                    disabled: this.isInteractionDisabled,
                                    menuContainer: this._$toolbarContainer,
                                    multiline: this.isMultilineMode()
                                }
                            }
                        }, {
                            key: "isInteractionDisabled",
                            get: function() {
                                return this.editorInstance.option("readOnly") || this.editorInstance.option("disabled")
                            }
                        }]);
                        return ToolbarModule
                    }(_base.default)
                }
                var _default = ToolbarModule;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        55179:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/modules/variables.js ***!
              \*********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _devextremeQuill = _interopRequireDefault(__webpack_require__( /*! devextreme-quill */ 9549));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _position = __webpack_require__( /*! ../../../core/utils/position */ 37518);
                var _popup = _interopRequireDefault(__webpack_require__( /*! ./popup */ 2269));
                var _base = _interopRequireDefault(__webpack_require__( /*! ./base */ 30963));
                var _variable = _interopRequireDefault(__webpack_require__( /*! ../formats/variable */ 76195));
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);

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

                function _assertThisInitialized(self) {
                    if (void 0 === self) {
                        throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
                    }
                    return self
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let VariableModule = _base.default;
                if (_devextremeQuill.default) {
                    const VARIABLE_FORMAT_CLASS = "dx-variable-format";
                    const ACTIVE_FORMAT_CLASS = "dx-format-active";
                    const SELECTED_STATE_CLASS = "dx-state-selected";
                    _devextremeQuill.default.register({
                        "formats/variable": _variable.default
                    }, true);
                    VariableModule = function(_PopupModule) {
                        ! function(subClass, superClass) {
                            subClass.prototype = Object.create(superClass.prototype);
                            subClass.prototype.constructor = subClass;
                            _setPrototypeOf(subClass, superClass)
                        }(VariableModule, _PopupModule);
                        var _proto = VariableModule.prototype;
                        _proto._getDefaultOptions = function() {
                            const baseConfig = _PopupModule.prototype._getDefaultOptions.call(this);
                            return (0, _extend.extend)(baseConfig, {
                                escapeChar: ""
                            })
                        };

                        function VariableModule(quill, options) {
                            var _this;
                            _this = _PopupModule.call(this, quill, options) || this;
                            const toolbar = quill.getModule("toolbar");
                            if (toolbar) {
                                toolbar.addClickHandler("variable", _this.showPopup.bind(_assertThisInitialized(_this)))
                            }
                            quill.keyboard.addBinding({
                                key: "P",
                                altKey: true
                            }, _this.showPopup.bind(_assertThisInitialized(_this)));
                            _this._popup.on("shown", e => {
                                const $ofElement = (0, _renderer.default)(e.component.option("position").of);
                                if ($ofElement.hasClass(VARIABLE_FORMAT_CLASS)) {
                                    $ofElement.addClass(ACTIVE_FORMAT_CLASS);
                                    $ofElement.addClass(SELECTED_STATE_CLASS)
                                }
                            });
                            return _this
                        }
                        _proto.showPopup = function(event) {
                            const selection = this.quill.getSelection(true);
                            const position = selection ? selection.index : this.quill.getLength();
                            this.savePosition(position);
                            this._resetPopupPosition(event, position);
                            _PopupModule.prototype.showPopup.call(this)
                        };
                        _proto._resetPopupPosition = function(event, position) {
                            if (event && event.element) {
                                this._popup.option("position", {
                                    of: event.element,
                                    offset: {
                                        h: 0,
                                        v: 0
                                    },
                                    my: "top center",
                                    at: "bottom center",
                                    collision: "fit"
                                })
                            } else {
                                const mentionBounds = this.quill.getBounds(position);
                                const rootRect = (0, _position.getBoundingRect)(this.quill.root);
                                this._popup.option("position", {
                                    of: this.quill.root,
                                    offset: {
                                        h: mentionBounds.left,
                                        v: mentionBounds.bottom - rootRect.height
                                    },
                                    my: "top center",
                                    at: "bottom left",
                                    collision: "fit flip"
                                })
                            }
                        };
                        _proto.insertEmbedContent = function(selectionChangedEvent) {
                            const caretPosition = this.getPosition();
                            const selectedItem = selectionChangedEvent.component.option("selectedItem");
                            const variableData = (0, _extend.extend)({}, {
                                value: selectedItem,
                                escapeChar: this.options.escapeChar
                            });
                            setTimeout(function() {
                                this.quill.insertEmbed(caretPosition, "variable", variableData);
                                this.quill.setSelection(caretPosition + 1)
                            }.bind(this))
                        };
                        return VariableModule
                    }(_popup.default)
                }
                var _default = VariableModule;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        38110:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/modules/widget_collector.js ***!
              \****************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 95479);
                let WidgetCollector = function() {
                    function WidgetCollector() {
                        this._collection = []
                    }
                    var _proto = WidgetCollector.prototype;
                    _proto.clear = function() {
                        this._collection = []
                    };
                    _proto.add = function(name, instance) {
                        this._collection.push({
                            name: name,
                            instance: instance
                        })
                    };
                    _proto.remove = function(name) {
                        this._collection = this._collection.filter(item => item.name !== name)
                    };
                    _proto.getByName = function(widgetName) {
                        let widget = null;
                        (0, _iterator.each)(this._collection, (index, _ref) => {
                            let {
                                name: name,
                                instance: instance
                            } = _ref;
                            if (name === widgetName) {
                                widget = instance;
                                return false
                            }
                        });
                        return widget
                    };
                    _proto.each = function(handler) {
                        this._collection.forEach(_ref2 => {
                            let {
                                name: name,
                                instance: instance
                            } = _ref2;
                            return instance && handler(name, instance)
                        })
                    };
                    return WidgetCollector
                }();
                exports.default = WidgetCollector;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        60148:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/quill_importer.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getQuill = function() {
                    if (!_devextremeQuill.default) {
                        throw _ui.default.Error("E1041", "Quill")
                    }
                    return _devextremeQuill.default
                };
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.errors */ 96688));
                var _devextremeQuill = _interopRequireDefault(__webpack_require__( /*! devextreme-quill */ 9549));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
            },
        1702:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/quill_registrator.js ***!
              \*********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _quill_importer = __webpack_require__( /*! ./quill_importer */ 60148);
                var _base = _interopRequireDefault(__webpack_require__( /*! ./themes/base */ 80560));
                var _image = _interopRequireDefault(__webpack_require__( /*! ./formats/image */ 72446));
                var _link = _interopRequireDefault(__webpack_require__( /*! ./formats/link */ 8980));
                var _font = _interopRequireDefault(__webpack_require__( /*! ./formats/font */ 73360));
                var _size = _interopRequireDefault(__webpack_require__( /*! ./formats/size */ 2909));
                var _align = _interopRequireDefault(__webpack_require__( /*! ./formats/align */ 90223));
                var _toolbar = _interopRequireDefault(__webpack_require__( /*! ./modules/toolbar */ 77616));
                var _dropImage = _interopRequireDefault(__webpack_require__( /*! ./modules/dropImage */ 78859));
                var _variables = _interopRequireDefault(__webpack_require__( /*! ./modules/variables */ 55179));
                var _resizing = _interopRequireDefault(__webpack_require__( /*! ./modules/resizing */ 91787));
                var _tableResizing = _interopRequireDefault(__webpack_require__( /*! ./modules/tableResizing */ 56459));
                var _tableContextMenu = _interopRequireDefault(__webpack_require__( /*! ./modules/tableContextMenu */ 31700));
                var _imageUpload = _interopRequireDefault(__webpack_require__( /*! ./modules/imageUpload */ 75990));
                var _imageCursor = _interopRequireDefault(__webpack_require__( /*! ./modules/imageCursor */ 80900));
                var _mentions = _interopRequireDefault(__webpack_require__( /*! ./modules/mentions */ 12542));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                let QuillRegistrator = function() {
                    function QuillRegistrator() {
                        if (QuillRegistrator.initialized) {
                            return
                        }
                        const quill = this.getQuill();
                        const DirectionStyle = quill.import("attributors/style/direction");
                        quill.register({
                            "formats/align": _align.default,
                            "formats/direction": DirectionStyle,
                            "formats/font": _font.default,
                            "formats/size": _size.default,
                            "formats/extendedImage": _image.default,
                            "formats/link": _link.default,
                            "modules/toolbar": _toolbar.default,
                            "modules/dropImage": _dropImage.default,
                            "modules/variables": _variables.default,
                            "modules/resizing": _resizing.default,
                            "modules/tableResizing": _tableResizing.default,
                            "modules/tableContextMenu": _tableContextMenu.default,
                            "modules/imageUpload": _imageUpload.default,
                            "modules/imageCursor": _imageCursor.default,
                            "modules/mentions": _mentions.default,
                            "themes/basic": _base.default
                        }, true);
                        this._customModules = [];
                        QuillRegistrator._initialized = true
                    }
                    var _proto = QuillRegistrator.prototype;
                    _proto.createEditor = function(container, config) {
                        const quill = this.getQuill();
                        return new quill(container, config)
                    };
                    _proto.registerModules = function(modulesConfig) {
                        const isModule = RegExp("modules/*");
                        const quill = this.getQuill();
                        const isRegisteredModule = modulePath => !!quill.imports[modulePath];
                        for (const modulePath in modulesConfig) {
                            if (isModule.test(modulePath) && !isRegisteredModule(modulePath)) {
                                this._customModules.push(modulePath.slice(8))
                            }
                        }
                        quill.register(modulesConfig, true)
                    };
                    _proto.getRegisteredModuleNames = function() {
                        return this._customModules
                    };
                    _proto.getQuill = function() {
                        return (0, _quill_importer.getQuill)()
                    };
                    return QuillRegistrator
                }();
                var _default = QuillRegistrator;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        80560:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/themes/base.js ***!
              \***************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _devextremeQuill = (obj = __webpack_require__( /*! devextreme-quill */ 9549), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let BaseTheme;
                if (_devextremeQuill.default) {
                    const Theme = _devextremeQuill.default.import("core/theme");
                    BaseTheme = function(_Theme) {
                        ! function(subClass, superClass) {
                            subClass.prototype = Object.create(superClass.prototype);
                            subClass.prototype.constructor = subClass;
                            _setPrototypeOf(subClass, superClass)
                        }(BaseTheme, _Theme);

                        function BaseTheme(quill, options) {
                            var _this;
                            _this = _Theme.call(this, quill, options) || this;
                            _this.quill.root.classList.add("dx-htmleditor-content");
                            _this.quill.root.setAttribute("role", "textbox");
                            _this.quill.root.setAttribute("aria-label", "Editor content");
                            return _this
                        }
                        return BaseTheme
                    }(Theme)
                } else {
                    BaseTheme = {}
                }
                var _default = BaseTheme;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        15887:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/ui.html_editor.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _element = __webpack_require__( /*! ../../core/element */ 6415);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _empty_template = __webpack_require__( /*! ../../core/templates/empty_template */ 10688);
                var _editor = _interopRequireDefault(__webpack_require__( /*! ../editor/editor */ 96452));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.errors */ 96688));
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/callbacks */ 44504));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _index2 = __webpack_require__( /*! ../../events/index */ 66365);
                var _emitterGesture = _interopRequireDefault(__webpack_require__( /*! ../../events/gesture/emitter.gesture.scroll */ 37334));
                var _utils = __webpack_require__( /*! ../text_box/utils.scroll */ 51203);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../events/pointer */ 93786));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _quill_registrator = _interopRequireDefault(__webpack_require__( /*! ./quill_registrator */ 1702));
                __webpack_require__( /*! ./converters/delta */ 44844);
                var _converterController = _interopRequireDefault(__webpack_require__( /*! ./converterController */ 56957));
                var _wordLists = _interopRequireDefault(__webpack_require__( /*! ./matchers/wordLists */ 10803));
                var _formDialog = _interopRequireDefault(__webpack_require__( /*! ./ui/formDialog */ 67600));
                var _config = _interopRequireDefault(__webpack_require__( /*! ../../core/config */ 80209));

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const isIos = "ios" === _devices.default.current().platform;
                let editorsCount = 0;
                const HtmlEditor = _editor.default.inherit({
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            focusStateEnabled: true,
                            valueType: "html",
                            placeholder: "",
                            toolbar: null,
                            variables: null,
                            mediaResizing: null,
                            tableResizing: null,
                            mentions: null,
                            customizeModules: null,
                            tableContextMenu: null,
                            allowSoftLineBreak: false,
                            formDialogOptions: null,
                            imageUpload: null,
                            stylingMode: (0, _config.default)().editorStylingMode || "outlined"
                        })
                    },
                    _init: function() {
                        this._mentionKeyInTemplateStorage = editorsCount++;
                        this.callBase();
                        this._cleanCallback = (0, _callbacks.default)();
                        this._contentInitializedCallback = (0, _callbacks.default)()
                    },
                    _getAnonymousTemplateName: function() {
                        return "htmlContent"
                    },
                    _initTemplates: function() {
                        this._templateManager.addDefaultTemplates({
                            htmlContent: new _empty_template.EmptyTemplate
                        });
                        this.callBase()
                    },
                    _focusTarget: function() {
                        return this._getContent()
                    },
                    _getContent: function() {
                        return this.$element().find(".".concat("dx-htmleditor-content"))
                    },
                    _focusInHandler: function(_ref) {
                        let {
                            relatedTarget: relatedTarget
                        } = _ref;
                        if (this._shouldSkipFocusEvent(relatedTarget)) {
                            return
                        }
                        this._toggleFocusClass(true, this.$element());
                        this.callBase.apply(this, arguments)
                    },
                    _focusOutHandler: function(_ref2) {
                        let {
                            relatedTarget: relatedTarget
                        } = _ref2;
                        if (this._shouldSkipFocusEvent(relatedTarget)) {
                            return
                        }
                        this._toggleFocusClass(false, this.$element());
                        this.callBase.apply(this, arguments)
                    },
                    _shouldSkipFocusEvent: function(relatedTarget) {
                        return (0, _renderer.default)(relatedTarget).hasClass("ql-clipboard")
                    },
                    _initMarkup: function() {
                        this._$htmlContainer = (0, _renderer.default)("<div>").addClass("dx-quill-container");
                        this.$element().attr("role", "application").addClass("dx-htmleditor").wrapInner(this._$htmlContainer);
                        this._renderStylingMode();
                        const template = this._getTemplate("htmlContent");
                        this._$templateResult = template && template.render({
                            container: (0, _element.getPublicElement)(this._$htmlContainer),
                            noModel: true,
                            transclude: true
                        });
                        this._renderSubmitElement();
                        this.callBase();
                        this._updateContainerMarkup()
                    },
                    _renderValidationState() {
                        const $content = this._getContent();
                        if (1 === $content.length) {
                            this.callBase()
                        }
                    },
                    _renderSubmitElement: function() {
                        this._$submitElement = (0, _renderer.default)("<textarea>").addClass("dx-htmleditor-submit-element").attr("hidden", true).appendTo(this.$element());
                        this._setSubmitValue(this.option("value"))
                    },
                    _setSubmitValue: function(value) {
                        this._getSubmitElement().val(value)
                    },
                    _getSubmitElement: function() {
                        return this._$submitElement
                    },
                    _createNoScriptFrame: function() {
                        return (0, _renderer.default)("<iframe>").css("display", "none").attr({
                            srcdoc: "",
                            id: "xss-frame",
                            sandbox: "allow-same-origin"
                        })
                    },
                    _removeXSSVulnerableHtml: function(value) {
                        const $frame = this._createNoScriptFrame().appendTo("body");
                        const frame = $frame.get(0);
                        const frameWindow = frame.contentWindow;
                        const frameDocument = frameWindow.document;
                        const frameDocumentBody = frameDocument.body;
                        frameDocumentBody.innerHTML = value;
                        const removeInlineHandlers = element => {
                            if (element.attributes) {
                                for (let i = 0; i < element.attributes.length; i++) {
                                    const name = element.attributes[i].name;
                                    if (name.startsWith("on")) {
                                        element.removeAttribute(name)
                                    }
                                }
                            }
                            if (element.childNodes) {
                                for (let i = 0; i < element.childNodes.length; i++) {
                                    removeInlineHandlers(element.childNodes[i])
                                }
                            }
                        };
                        removeInlineHandlers(frameDocumentBody);
                        frameDocumentBody.querySelectorAll("script").forEach(scriptNode => {
                            scriptNode.remove()
                        });
                        const sanitizedHtml = frameDocumentBody.innerHTML;
                        $frame.remove();
                        return sanitizedHtml
                    },
                    _updateContainerMarkup: function() {
                        let markup = this.option("value");
                        if (this._isMarkdownValue()) {
                            this._prepareMarkdownConverter();
                            markup = this._markdownConverter.toHtml(markup)
                        }
                        if (markup) {
                            const sanitizedMarkup = this._removeXSSVulnerableHtml(markup);
                            this._$htmlContainer.html(sanitizedMarkup)
                        }
                    },
                    _prepareMarkdownConverter: function() {
                        const MarkdownConverter = _converterController.default.getConverter("markdown");
                        if (MarkdownConverter) {
                            this._markdownConverter = new MarkdownConverter
                        } else {
                            throw _ui.default.Error("E1051", "markdown")
                        }
                    },
                    _render: function() {
                        this._prepareConverters();
                        this.callBase()
                    },
                    _prepareQuillRegistrator: function() {
                        if (!this._quillRegistrator) {
                            this._quillRegistrator = new _quill_registrator.default
                        }
                    },
                    _getRegistrator: function() {
                        this._prepareQuillRegistrator();
                        return this._quillRegistrator
                    },
                    _prepareConverters: function() {
                        if (!this._deltaConverter) {
                            const DeltaConverter = _converterController.default.getConverter("delta");
                            if (DeltaConverter) {
                                this._deltaConverter = new DeltaConverter
                            }
                        }
                        if ("markdown" === this.option("valueType") && !this._markdownConverter) {
                            this._prepareMarkdownConverter()
                        }
                    },
                    _renderContentImpl: function() {
                        this._contentRenderedDeferred = new _deferred.Deferred;
                        const renderContentPromise = this._contentRenderedDeferred.promise();
                        this.callBase();
                        this._renderHtmlEditor();
                        this._renderFormDialog();
                        this._addKeyPressHandler();
                        return renderContentPromise
                    },
                    _pointerMoveHandler: function(e) {
                        if (isIos) {
                            e.stopPropagation()
                        }
                    },
                    _attachFocusEvents: function() {
                        (0, _common.deferRender)(this.callBase.bind(this))
                    },
                    _addKeyPressHandler: function() {
                        const keyDownEvent = (0, _index.addNamespace)("keydown", "".concat(this.NAME, "TextChange"));
                        _events_engine.default.on(this._$htmlContainer, keyDownEvent, this._keyDownHandler.bind(this))
                    },
                    _keyDownHandler: function(e) {
                        this._saveValueChangeEvent(e)
                    },
                    _renderHtmlEditor: function() {
                        const customizeModules = this.option("customizeModules");
                        const modulesConfig = this._getModulesConfig();
                        if ((0, _type.isFunction)(customizeModules)) {
                            customizeModules(modulesConfig)
                        }
                        this._quillInstance = this._getRegistrator().createEditor(this._$htmlContainer[0], {
                            placeholder: this.option("placeholder"),
                            readOnly: this.option("readOnly") || this.option("disabled"),
                            modules: modulesConfig,
                            theme: "basic"
                        });
                        this._renderValidationState();
                        this._deltaConverter.setQuillInstance(this._quillInstance);
                        this._textChangeHandlerWithContext = this._textChangeHandler.bind(this);
                        this._quillInstance.on("text-change", this._textChangeHandlerWithContext);
                        this._renderScrollHandler();
                        if (this._hasTranscludedContent()) {
                            this._updateContentTask = (0, _common.executeAsync)(() => {
                                this._applyTranscludedContent()
                            })
                        } else {
                            this._finalizeContentRendering()
                        }
                    },
                    _renderScrollHandler: function() {
                        const $scrollContainer = this._getContent();
                        const initScrollData = (0, _utils.prepareScrollData)($scrollContainer);
                        _events_engine.default.on($scrollContainer, (0, _index.addNamespace)(_emitterGesture.default.init, this.NAME), initScrollData, _common.noop);
                        _events_engine.default.on($scrollContainer, (0, _index.addNamespace)(_pointer.default.move, this.NAME), this._pointerMoveHandler.bind(this))
                    },
                    _applyTranscludedContent: function() {
                        const valueOption = this.option("value");
                        if (!(0, _type.isDefined)(valueOption)) {
                            const html = this._deltaConverter.toHtml();
                            const newDelta = this._quillInstance.clipboard.convert({
                                html: html
                            });
                            if (newDelta.ops.length) {
                                this._quillInstance.setContents(newDelta);
                                return
                            }
                        }
                        this._finalizeContentRendering()
                    },
                    _hasTranscludedContent: function() {
                        return this._$templateResult && this._$templateResult.length
                    },
                    _getModulesConfig: function() {
                        const quill = this._getRegistrator().getQuill();
                        const wordListMatcher = (0, _wordLists.default)(quill);
                        const modulesConfig = (0, _extend.extend)({}, {
                            table: true,
                            toolbar: this._getModuleConfigByOption("toolbar"),
                            variables: this._getModuleConfigByOption("variables"),
                            resizing: this._getModuleConfigByOption("mediaResizing"),
                            tableResizing: this._getModuleConfigByOption("tableResizing"),
                            tableContextMenu: this._getModuleConfigByOption("tableContextMenu"),
                            imageUpload: this._getModuleConfigByOption("imageUpload"),
                            imageCursor: this._getBaseModuleConfig(),
                            mentions: this._getModuleConfigByOption("mentions"),
                            uploader: {
                                onDrop: e => this._saveValueChangeEvent((0, _index2.Event)(e)),
                                imageBlot: "extendedImage"
                            },
                            keyboard: {
                                onKeydown: e => this._saveValueChangeEvent((0, _index2.Event)(e))
                            },
                            clipboard: {
                                onPaste: e => this._saveValueChangeEvent((0, _index2.Event)(e)),
                                onCut: e => this._saveValueChangeEvent((0, _index2.Event)(e)),
                                matchers: [
                                    ["p.MsoListParagraphCxSpFirst", wordListMatcher],
                                    ["p.MsoListParagraphCxSpMiddle", wordListMatcher],
                                    ["p.MsoListParagraphCxSpLast", wordListMatcher]
                                ]
                            },
                            multiline: Boolean(this.option("allowSoftLineBreak"))
                        }, this._getCustomModules());
                        return modulesConfig
                    },
                    _getModuleConfigByOption: function(userOptionName) {
                        const optionValue = this.option(userOptionName);
                        let config = {};
                        if (!(0, _type.isDefined)(optionValue)) {
                            return
                        }
                        if (Array.isArray(optionValue)) {
                            config[userOptionName] = optionValue
                        } else {
                            config = optionValue
                        }
                        return (0, _extend.extend)(this._getBaseModuleConfig(), config)
                    },
                    _getBaseModuleConfig: function() {
                        return {
                            editorInstance: this
                        }
                    },
                    _getCustomModules: function() {
                        const modules = {};
                        const moduleNames = this._getRegistrator().getRegisteredModuleNames();
                        moduleNames.forEach(modulePath => {
                            modules[modulePath] = this._getBaseModuleConfig()
                        });
                        return modules
                    },
                    _textChangeHandler: function(newDelta, oldDelta, source) {
                        const htmlMarkup = this._deltaConverter.toHtml();
                        const convertedValue = this._isMarkdownValue() ? this._updateValueByType("markdown", htmlMarkup) : htmlMarkup;
                        const currentValue = this.option("value");
                        if (currentValue !== convertedValue && !this._isNullValueConverted(currentValue, convertedValue)) {
                            this._isEditorUpdating = true;
                            this.option("value", convertedValue)
                        }
                        this._finalizeContentRendering()
                    },
                    _isNullValueConverted: function(currentValue, convertedValue) {
                        return null === currentValue && "" === convertedValue
                    },
                    _finalizeContentRendering: function() {
                        if (this._contentRenderedDeferred) {
                            this.clearHistory();
                            this._contentInitializedCallback.fire();
                            this._contentRenderedDeferred.resolve();
                            this._contentRenderedDeferred = void 0
                        }
                    },
                    _updateValueByType: function(valueType, value) {
                        const converter = this._markdownConverter;
                        if (!(0, _type.isDefined)(converter)) {
                            return
                        }
                        const currentValue = (0, _common.ensureDefined)(value, this.option("value"));
                        return "markdown" === valueType ? converter.toMarkdown(currentValue) : converter.toHtml(currentValue)
                    },
                    _isMarkdownValue: function() {
                        return "markdown" === this.option("valueType")
                    },
                    _resetEnabledState: function() {
                        if (this._quillInstance) {
                            const isEnabled = !(this.option("readOnly") || this.option("disabled"));
                            this._quillInstance.enable(isEnabled)
                        }
                    },
                    _renderFormDialog: function() {
                        const userOptions = (0, _extend.extend)(true, {
                            width: "auto",
                            height: "auto",
                            hideOnOutsideClick: true
                        }, this.option("formDialogOptions"));
                        this._formDialog = new _formDialog.default(this, userOptions)
                    },
                    _getStylingModePrefix: function() {
                        return "dx-htmleditor-"
                    },
                    _getQuillContainer: function() {
                        return this._$htmlContainer
                    },
                    _prepareModuleOptions(args) {
                        var _args$fullName;
                        const optionData = null === (_args$fullName = args.fullName) || void 0 === _args$fullName ? void 0 : _args$fullName.split(".");
                        let value = args.value;
                        const optionName = optionData.length >= 2 ? optionData[1] : args.name;
                        if (3 === optionData.length) {
                            value = {
                                [optionData[2]]: value
                            }
                        }
                        return [optionName, value]
                    },
                    _moduleOptionChanged: function(moduleName, args) {
                        const moduleInstance = this.getModule(moduleName);
                        const shouldPassOptionsToModule = Boolean(moduleInstance);
                        if (shouldPassOptionsToModule) {
                            moduleInstance.option(...this._prepareModuleOptions(args))
                        } else {
                            this._invalidate()
                        }
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "value": {
                                if (this._quillInstance) {
                                    if (this._isEditorUpdating) {
                                        this._isEditorUpdating = false
                                    } else {
                                        const updatedValue = this._isMarkdownValue() ? this._updateValueByType("HTML", args.value) : args.value;
                                        this._suppressValueChangeAction();
                                        this._updateHtmlContent(updatedValue);
                                        this._resumeValueChangeAction()
                                    }
                                } else {
                                    this._$htmlContainer.html(args.value)
                                }
                                const value = this.option("value");
                                if (value !== args.previousValue) {
                                    this._setSubmitValue(value);
                                    this.callBase(_extends({}, args, {
                                        value: value
                                    }))
                                }
                                break
                            }
                            case "placeholder":
                            case "variables":
                            case "toolbar":
                            case "mentions":
                            case "customizeModules":
                            case "allowSoftLineBreak":
                                this._invalidate();
                                break;
                            case "tableResizing":
                                this._moduleOptionChanged("tableResizing", args);
                                break;
                            case "valueType": {
                                this._prepareConverters();
                                const newValue = this._updateValueByType(args.value);
                                if ("html" === args.value && this._quillInstance) {
                                    this._updateHtmlContent(newValue)
                                } else {
                                    this.option("value", newValue)
                                }
                                break
                            }
                            case "stylingMode":
                                this._renderStylingMode();
                                break;
                            case "readOnly":
                            case "disabled":
                                this.callBase(args);
                                this._resetEnabledState();
                                break;
                            case "formDialogOptions":
                                this._renderFormDialog();
                                break;
                            case "tableContextMenu":
                                this._moduleOptionChanged("tableContextMenu", args);
                                break;
                            case "mediaResizing":
                                if (!args.previousValue || !args.value) {
                                    this._invalidate()
                                } else {
                                    this.getModule("resizing").option(args.name, args.value)
                                }
                                break;
                            case "width":
                                this.callBase(args);
                                this._repaintToolbar();
                                break;
                            case "imageUpload":
                                this._moduleOptionChanged("imageUpload", args);
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _repaintToolbar: function() {
                        this._applyToolbarMethod("repaint")
                    },
                    _updateHtmlContent: function(html) {
                        const newDelta = this._quillInstance.clipboard.convert({
                            html: html
                        });
                        this._quillInstance.setContents(newDelta)
                    },
                    _clean: function() {
                        if (this._quillInstance) {
                            _events_engine.default.off(this._getContent(), ".".concat(this.NAME));
                            this._quillInstance.off("text-change", this._textChangeHandlerWithContext);
                            this._cleanCallback.fire()
                        }
                        this._abortUpdateContentTask();
                        this._cleanCallback.empty();
                        this._contentInitializedCallback.empty();
                        this.callBase()
                    },
                    _abortUpdateContentTask: function() {
                        if (this._updateContentTask) {
                            this._updateContentTask.abort();
                            this._updateContentTask = void 0
                        }
                    },
                    _applyQuillMethod(methodName, args) {
                        if (this._quillInstance) {
                            return this._quillInstance[methodName].apply(this._quillInstance, args)
                        }
                    },
                    _applyQuillHistoryMethod(methodName) {
                        if (this._quillInstance && this._quillInstance.history) {
                            this._quillInstance.history[methodName]()
                        }
                    },
                    _applyToolbarMethod(methodName) {
                        var _this$getModule;
                        null === (_this$getModule = this.getModule("toolbar")) || void 0 === _this$getModule ? void 0 : _this$getModule[methodName]()
                    },
                    addCleanCallback(callback) {
                        this._cleanCallback.add(callback)
                    },
                    addContentInitializedCallback(callback) {
                        this._contentInitializedCallback.add(callback)
                    },
                    register: function(components) {
                        this._getRegistrator().registerModules(components);
                        if (this._quillInstance) {
                            this.repaint()
                        }
                    },
                    get: function(modulePath) {
                        return this._getRegistrator().getQuill().import(modulePath)
                    },
                    getModule: function(moduleName) {
                        return this._applyQuillMethod("getModule", arguments)
                    },
                    getQuillInstance: function() {
                        return this._quillInstance
                    },
                    getSelection: function(focus) {
                        return this._applyQuillMethod("getSelection", arguments)
                    },
                    setSelection: function(index, length) {
                        this._applyQuillMethod("setSelection", arguments)
                    },
                    getText: function(index, length) {
                        return this._applyQuillMethod("getText", arguments)
                    },
                    format: function(formatName, formatValue) {
                        this._applyQuillMethod("format", arguments)
                    },
                    formatText: function(index, length, formatName, formatValue) {
                        this._applyQuillMethod("formatText", arguments)
                    },
                    formatLine: function(index, length, formatName, formatValue) {
                        this._applyQuillMethod("formatLine", arguments)
                    },
                    getFormat: function(index, length) {
                        return this._applyQuillMethod("getFormat", arguments)
                    },
                    removeFormat: function(index, length) {
                        return this._applyQuillMethod("removeFormat", arguments)
                    },
                    clearHistory: function() {
                        this._applyQuillHistoryMethod("clear");
                        this._applyToolbarMethod("updateHistoryWidgets")
                    },
                    undo: function() {
                        this._applyQuillHistoryMethod("undo")
                    },
                    redo: function() {
                        this._applyQuillHistoryMethod("redo")
                    },
                    getLength: function() {
                        return this._applyQuillMethod("getLength")
                    },
                    getBounds: function(index, length) {
                        return this._applyQuillMethod("getBounds", arguments)
                    },
                    delete: function(index, length) {
                        this._applyQuillMethod("deleteText", arguments)
                    },
                    insertText: function(index, text, formats) {
                        this._applyQuillMethod("insertText", arguments)
                    },
                    insertEmbed: function(index, type, config) {
                        this._applyQuillMethod("insertEmbed", arguments)
                    },
                    showFormDialog: function(formConfig) {
                        return this._formDialog.show(formConfig)
                    },
                    formDialogOption: function(optionName, optionValue) {
                        return this._formDialog.popupOption.apply(this._formDialog, arguments)
                    },
                    focus: function() {
                        this.callBase();
                        this._applyQuillMethod("focus")
                    },
                    blur: function() {
                        this._applyQuillMethod("blur")
                    },
                    getMentionKeyInTemplateStorage() {
                        return this._mentionKeyInTemplateStorage
                    }
                });
                (0, _component_registrator.default)("dxHtmlEditor", HtmlEditor);
                var _default = HtmlEditor;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        67600:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/ui/formDialog.js ***!
              \*****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _popup = _interopRequireDefault(__webpack_require__( /*! ../../popup */ 39114));
                var _form = _interopRequireDefault(__webpack_require__( /*! ../../form */ 17737));
                var _deferred = __webpack_require__( /*! ../../../core/utils/deferred */ 62754);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../localization/message */ 28109));
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 58201);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 20530));
                var _themes = __webpack_require__( /*! ../../themes */ 75811);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const getApplyButtonConfig = () => {
                    if ((0, _themes.isFluent)()) {
                        return {
                            stylingMode: "contained",
                            type: "default"
                        }
                    }
                    return {}
                };
                const getCancelButtonConfig = () => {
                    if ((0, _themes.isFluent)()) {
                        return {
                            stylingMode: "outlined",
                            type: "normal"
                        }
                    }
                    return {}
                };
                let FormDialog = function() {
                    function FormDialog(editorInstance, popupConfig) {
                        this._editorInstance = editorInstance;
                        this._popupUserConfig = popupConfig;
                        this._renderPopup();
                        this._attachOptionChangedHandler()
                    }
                    var _proto = FormDialog.prototype;
                    _proto._renderPopup = function() {
                        const editorInstance = this._editorInstance;
                        const $container = (0, _renderer.default)("<div>").addClass("dx-formdialog").appendTo(editorInstance.$element());
                        const popupConfig = this._getPopupConfig();
                        return editorInstance._createComponent($container, _popup.default, popupConfig)
                    };
                    _proto._attachOptionChangedHandler = function() {
                        var _this$_popup;
                        null === (_this$_popup = this._popup) || void 0 === _this$_popup ? void 0 : _this$_popup.on("optionChanged", _ref => {
                            let {
                                name: name,
                                value: value
                            } = _ref;
                            if ("title" === name) {
                                this._updateFormLabel(value)
                            }
                        })
                    };
                    _proto._escKeyHandler = function() {
                        this._popup.hide()
                    };
                    _proto._addEscapeHandler = function(e) {
                        e.component.registerKeyHandler("escape", this._escKeyHandler.bind(this))
                    };
                    _proto._isSmallScreen = function() {
                        const screenFactor = (0, _window.hasWindow)() ? (0, _window.getCurrentScreenFactor)() : null;
                        return "phone" === _devices.default.real().deviceType || "xs" === screenFactor
                    };
                    _proto._getPopupConfig = function() {
                        return (0, _extend.extend)({
                            onInitialized: e => {
                                this._popup = e.component;
                                this._popup.on("hiding", () => this.onHiding());
                                this._popup.on("shown", () => {
                                    this._form.focus()
                                })
                            },
                            deferRendering: false,
                            focusStateEnabled: false,
                            showCloseButton: false,
                            fullScreen: this._isSmallScreen(),
                            contentTemplate: contentElem => {
                                const $formContainer = (0, _renderer.default)("<div>").appendTo(contentElem);
                                this._renderForm($formContainer, {
                                    onEditorEnterKey: e => this.callAddButtonAction(e.event),
                                    customizeItem: item => {
                                        if ("simple" === item.itemType) {
                                            item.editorOptions = (0, _extend.extend)(true, {}, item.editorOptions, {
                                                onInitialized: this._addEscapeHandler.bind(this)
                                            })
                                        }
                                    }
                                })
                            },
                            toolbarItems: [{
                                toolbar: "bottom",
                                location: "after",
                                widget: "dxButton",
                                options: _extends({
                                    onInitialized: this._addEscapeHandler.bind(this),
                                    text: _message.default.format("OK"),
                                    onClick: e => this.callAddButtonAction(e.event)
                                }, getApplyButtonConfig())
                            }, {
                                toolbar: "bottom",
                                location: "after",
                                widget: "dxButton",
                                options: _extends({
                                    onInitialized: this._addEscapeHandler.bind(this),
                                    text: _message.default.format("Cancel"),
                                    onClick: () => {
                                        this._popup.hide()
                                    }
                                }, getCancelButtonConfig())
                            }],
                            _wrapperClassExternal: "dx-formdialog"
                        }, this._popupUserConfig)
                    };
                    _proto.onHiding = function() {
                        this.beforeAddButtonAction = void 0;
                        this.deferred.reject()
                    };
                    _proto.callAddButtonAction = function(event) {
                        if (this.beforeAddButtonAction && !this.beforeAddButtonAction()) {
                            return
                        }
                        this.hide(this._form.option("formData"), event)
                    };
                    _proto._renderForm = function($container, options) {
                        $container.addClass("dx-formdialog-form");
                        this._form = this._editorInstance._createComponent($container, _form.default, options);
                        this._updateFormLabel()
                    };
                    _proto._updateFormLabel = function(text) {
                        var _this$_form;
                        const label = null !== text && void 0 !== text ? text : this.popupOption("title");
                        null === (_this$_form = this._form) || void 0 === _this$_form ? void 0 : _this$_form.$element().attr("aria-label", label)
                    };
                    _proto._getDefaultFormOptions = function() {
                        return {
                            colCount: 1,
                            width: "auto",
                            labelLocation: (0, _themes.isMaterialBased)() ? "top" : "left"
                        }
                    };
                    _proto.formOption = function(optionName, optionValue) {
                        return this._form.option.apply(this._form, arguments)
                    };
                    _proto.show = function(formUserConfig) {
                        if (this._popup.option("visible")) {
                            return
                        }
                        this.deferred = new _deferred.Deferred;
                        const formConfig = (0, _extend.extend)(this._getDefaultFormOptions(), formUserConfig);
                        this._form.option(formConfig);
                        this._popup.show();
                        return this.deferred.promise()
                    };
                    _proto.hide = function(formData, event) {
                        this.deferred.resolve(formData, event);
                        this._popup.hide()
                    };
                    _proto.popupOption = function(optionName, optionValue) {
                        return this._popup.option.apply(this._popup, arguments)
                    };
                    return FormDialog
                }();
                var _default = FormDialog;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        10046:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/utils/image_uploader_helper.js ***!
              \*******************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.ImageUploader = void 0;
                exports.correctSlashesInUrl = correctSlashesInUrl;
                exports.getFileUploaderBaseOptions = getFileUploaderBaseOptions;
                exports.serverUpload = serverUpload;
                exports.urlUpload = urlUpload;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../localization/message */ 28109));
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 95479);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _size = __webpack_require__( /*! ../../../core/utils/size */ 58664);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 20530));
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _themes = __webpack_require__( /*! ../../themes */ 75811);
                var _button_group = _interopRequireDefault(__webpack_require__( /*! ../../button_group */ 28236));
                var _file_uploader = _interopRequireDefault(__webpack_require__( /*! ../../file_uploader */ 53749));
                var _text_box = _interopRequireDefault(__webpack_require__( /*! ../../text_box */ 29837));
                const _excluded = ["imageSrc", "src"];

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

                function _inheritsLoose(subClass, superClass) {
                    subClass.prototype = Object.create(superClass.prototype);
                    subClass.prototype.constructor = subClass;
                    _setPrototypeOf(subClass, superClass)
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const isMobile = "phone" === _devices.default.current().deviceType;
                let ImageUploader = function() {
                    function ImageUploader(module, config) {
                        this.module = module;
                        this.config = null !== config && void 0 !== config ? config : {};
                        this.quill = this.module.quill;
                        this.editorInstance = this.module.editorInstance
                    }
                    var _proto = ImageUploader.prototype;
                    _proto.render = function() {
                        if (this.editorInstance._formDialog) {
                            this.editorInstance._formDialog.beforeAddButtonAction = () => this.getCurrentTab().upload()
                        }
                        this.tabPanelIndex = 0;
                        this.formData = this.getFormData();
                        this.isUpdating = this.isImageUpdating();
                        this.tabsModel = this.createTabsModel(this.config.tabs);
                        this.tabs = this.createTabs(this.formData);
                        const formConfig = this.getFormConfig();
                        this.updatePopupConfig();
                        this.updateAddButtonState();
                        this.editorInstance.showFormDialog(formConfig).done((formData, event) => {
                            this.tabs[this.getActiveTabIndex()].strategy.pasteImage(formData, event)
                        }).always(() => {
                            this.resetDialogPopupOptions();
                            this.quill.focus()
                        })
                    };
                    _proto.getCurrentTab = function() {
                        return this.tabs[this.tabPanelIndex]
                    };
                    _proto.updateAddButtonState = function() {
                        const isDisabled = this.getCurrentTab().isDisableButton();
                        this.setAddButtonDisabled(isDisabled)
                    };
                    _proto.setAddButtonDisabled = function(value) {
                        this.editorInstance.formDialogOption({
                            "toolbarItems[0].options.disabled": value
                        })
                    };
                    _proto.getActiveTabIndex = function() {
                        return this.isUpdating ? 0 : this.tabPanelIndex
                    };
                    _proto.getFormData = function() {
                        return this.getUpdateDialogFormData(this.quill.getFormat())
                    };
                    _proto.getUpdateDialogFormData = function(formData) {
                        const {
                            imageSrc: imageSrc,
                            src: src
                        } = formData, props = function(source, excluded) {
                            if (null == source) {
                                return {}
                            }
                            var target = {};
                            var sourceKeys = Object.keys(source);
                            var key, i;
                            for (i = 0; i < sourceKeys.length; i++) {
                                key = sourceKeys[i];
                                if (excluded.indexOf(key) >= 0) {
                                    continue
                                }
                                target[key] = source[key]
                            }
                            return target
                        }(formData, _excluded);
                        return _extends({
                            src: null !== imageSrc && void 0 !== imageSrc ? imageSrc : src
                        }, props)
                    };
                    _proto.createUrlTab = function(formData) {
                        return new UrlTab(this.module, {
                            config: this.config,
                            formData: formData,
                            isUpdating: this.isUpdating
                        }, () => this.updateAddButtonState())
                    };
                    _proto.createFileTab = function() {
                        return new FileTab(this.module, {
                            config: this.config
                        }, () => this.updateAddButtonState())
                    };
                    _proto.createTabsModel = function() {
                        let model = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];
                        if (0 === model.length || this.isUpdating) {
                            return ["url"]
                        }
                        return model.map(tab => "object" === typeof tab ? tab.name : tab)
                    };
                    _proto.createTabs = function(formData) {
                        return this.tabsModel.map(tabName => {
                            const isUrlTab = "url" === tabName;
                            return isUrlTab ? this.createUrlTab(formData) : this.createFileTab()
                        })
                    };
                    _proto.isImageUpdating = function() {
                        var _this$module$quill$ge;
                        return Object.prototype.hasOwnProperty.call(null !== (_this$module$quill$ge = this.module.quill.getFormat()) && void 0 !== _this$module$quill$ge ? _this$module$quill$ge : {}, "imageSrc")
                    };
                    _proto.updatePopupConfig = function() {
                        let wrapperClasses = "".concat("dx-htmleditor-add-image-popup", " ").concat("dx-formdialog");
                        if (this.useTabbedItems()) {
                            wrapperClasses += " ".concat("dx-htmleditor-add-image-popup-with-tabs")
                        }
                        const titleKey = this.isUpdating ? "dxHtmlEditor-dialogUpdateImageCaption" : "dxHtmlEditor-dialogImageCaption";
                        const addButtonTextKey = this.isUpdating ? "dxHtmlEditor-dialogImageUpdateButton" : "dxHtmlEditor-dialogImageAddButton";
                        this.editorInstance.formDialogOption({
                            title: _message.default.format(titleKey),
                            "toolbarItems[0].options.text": _message.default.format(addButtonTextKey),
                            wrapperAttr: {
                                class: wrapperClasses
                            }
                        })
                    };
                    _proto.resetDialogPopupOptions = function() {
                        this.editorInstance.formDialogOption({
                            "toolbarItems[0].options.text": _message.default.format("OK"),
                            "toolbarItems[0].options.visible": true,
                            "toolbarItems[0].options.disabled": false,
                            wrapperAttr: {
                                class: "dx-formdialog"
                            }
                        })
                    };
                    _proto.useTabbedItems = function() {
                        return this.tabsModel.length > 1
                    };
                    _proto.getFormWidth = function() {
                        return isMobile ? "100%" : 493
                    };
                    _proto.getFormConfig = function() {
                        return {
                            formData: this.formData,
                            width: this.getFormWidth(),
                            labelLocation: "top",
                            colCount: this.useTabbedItems() ? 1 : 11,
                            items: this.getItemsConfig()
                        }
                    };
                    _proto.getItemsConfig = function() {
                        if (this.useTabbedItems()) {
                            const tabsConfig = (0, _iterator.map)(this.tabs, tabController => ({
                                title: tabController.getTabName(),
                                colCount: 11,
                                items: tabController.getItemsConfig()
                            }));
                            return [{
                                itemType: "tabbed",
                                tabPanelOptions: {
                                    onSelectionChanged: e => {
                                        this.tabPanelIndex = e.component.option("selectedIndex");
                                        this.updateAddButtonState()
                                    }
                                },
                                tabs: tabsConfig
                            }]
                        }
                        return this.tabs[0].getItemsConfig()
                    };
                    return ImageUploader
                }();
                exports.ImageUploader = ImageUploader;
                let BaseTab = function() {
                    function BaseTab(module, _ref, onFileSelected) {
                        let {
                            config: config,
                            formData: formData,
                            isUpdating: isUpdating
                        } = _ref;
                        this.module = module;
                        this.config = config;
                        this.formData = formData;
                        this.isUpdating = isUpdating;
                        this.onFileSelected = onFileSelected;
                        this.strategy = this.createStrategy()
                    }
                    var _proto2 = BaseTab.prototype;
                    _proto2.getItemsConfig = function() {
                        return this.strategy.getItemsConfig()
                    };
                    _proto2.createStrategy = function() {
                        return this.isUpdating ? new UpdateUrlStrategy(this.module, this.config, this.formData) : new AddUrlStrategy(this.module, this.config, this.onFileSelected)
                    };
                    _proto2.isDisableButton = function() {
                        return false
                    };
                    _proto2.upload = function() {
                        return this.strategy.upload()
                    };
                    return BaseTab
                }();
                let UrlTab = function(_BaseTab) {
                    _inheritsLoose(UrlTab, _BaseTab);

                    function UrlTab() {
                        return _BaseTab.apply(this, arguments) || this
                    }
                    var _proto3 = UrlTab.prototype;
                    _proto3.getTabName = function() {
                        return _message.default.format("dxHtmlEditor-dialogImageSpecifyUrl")
                    };
                    return UrlTab
                }(BaseTab);
                let FileTab = function(_BaseTab2) {
                    _inheritsLoose(FileTab, _BaseTab2);

                    function FileTab() {
                        return _BaseTab2.apply(this, arguments) || this
                    }
                    var _proto4 = FileTab.prototype;
                    _proto4.getTabName = function() {
                        return _message.default.format("dxHtmlEditor-dialogImageSelectFile")
                    };
                    _proto4.createStrategy = function() {
                        return new FileStrategy(this.module, this.config, this.onFileSelected)
                    };
                    _proto4.isDisableButton = function() {
                        return !this.strategy.isValid()
                    };
                    return FileTab
                }(BaseTab);
                let BaseStrategy = function() {
                    function BaseStrategy(module, config) {
                        this.module = module;
                        this.config = config;
                        this.editorInstance = module.editorInstance;
                        this.quill = module.quill;
                        this.selection = this.getQuillSelection()
                    }
                    var _proto5 = BaseStrategy.prototype;
                    _proto5.getQuillSelection = function() {
                        const selection = this.quill.getSelection();
                        return null !== selection && void 0 !== selection ? selection : {
                            index: this.quill.getLength(),
                            length: 0
                        }
                    };
                    _proto5.pasteImage = function() {};
                    _proto5.isValid = function() {
                        return true
                    };
                    _proto5.upload = function() {};
                    return BaseStrategy
                }();
                let AddUrlStrategy = function(_BaseStrategy) {
                    _inheritsLoose(AddUrlStrategy, _BaseStrategy);

                    function AddUrlStrategy(module, config, onFileSelected) {
                        var _this;
                        _this = _BaseStrategy.call(this, module, config, onFileSelected) || this;
                        _this.shouldKeepAspectRatio = true;
                        return _this
                    }
                    var _proto6 = AddUrlStrategy.prototype;
                    _proto6.pasteImage = function(formData, event) {
                        this.module.saveValueChangeEvent(event);
                        urlUpload(this.quill, this.selection.index, formData)
                    };
                    _proto6.keepAspectRatio = function(data, _ref2) {
                        let {
                            dependentEditor: dependentEditor,
                            e: e
                        } = _ref2;
                        const newValue = parseInt(e.value);
                        const previousValue = parseInt(e.previousValue);
                        const previousDependentEditorValue = parseInt(dependentEditor.option("value"));
                        data.component.updateData(data.dataField, newValue);
                        if (this.shouldKeepAspectRatio && previousDependentEditorValue && previousValue && !this.preventRecalculating) {
                            this.preventRecalculating = true;
                            dependentEditor.option("value", Math.round(newValue * previousDependentEditorValue / parseInt(previousValue)).toString())
                        }
                        this.preventRecalculating = false
                    };
                    _proto6.createKeepAspectRatioEditor = function($container, data, dependentEditorDataField) {
                        return this.editorInstance._createComponent($container, _text_box.default, (0, _extend.extend)(true, data.editorOptions, {
                            value: data.component.option("formData")[data.dataField],
                            onEnterKey: data.component.option("onEditorEnterKey").bind(this.editorInstance._formDialog, data),
                            onValueChanged: e => {
                                this.keepAspectRatio(data, {
                                    dependentEditor: this[dependentEditorDataField + "Editor"],
                                    e: e
                                })
                            }
                        }))
                    };
                    _proto6.upload = function() {
                        const result = this.editorInstance._formDialog._form.validate();
                        return result.isValid
                    };
                    _proto6.getItemsConfig = function() {
                        const stylingMode = (0, _themes.isFluent)() ? "text" : "outlined";
                        return [{
                            dataField: "src",
                            colSpan: 11,
                            label: {
                                text: _message.default.format("dxHtmlEditor-dialogImageUrlField")
                            },
                            validationRules: [{
                                type: "required"
                            }, {
                                type: "stringLength",
                                min: 1
                            }]
                        }, {
                            dataField: "width",
                            colSpan: 6,
                            label: {
                                text: _message.default.format("dxHtmlEditor-dialogImageWidthField")
                            },
                            template: data => {
                                const $content = (0, _renderer.default)("<div>").addClass("dx-fix-ratio-container");
                                const $widthEditor = (0, _renderer.default)("<div>").appendTo($content);
                                this.widthEditor = this.createKeepAspectRatioEditor($widthEditor, data, "height");
                                const $ratioEditor = (0, _renderer.default)("<div>").appendTo($content);
                                this.editorInstance._createComponent($ratioEditor, _button_group.default, {
                                    items: [{
                                        icon: "imgarlock",
                                        value: "keepRatio"
                                    }],
                                    hint: _message.default.format("dxHtmlEditor-dialogImageKeepAspectRatio"),
                                    focusStateEnabled: false,
                                    keyExpr: "value",
                                    stylingMode: stylingMode,
                                    selectionMode: "multiple",
                                    selectedItemKeys: ["keepRatio"],
                                    onSelectionChanged: e => {
                                        this.shouldKeepAspectRatio = !!e.component.option("selectedItems").length
                                    }
                                });
                                return $content
                            }
                        }, {
                            dataField: "height",
                            colSpan: 5,
                            label: {
                                text: _message.default.format("dxHtmlEditor-dialogImageHeightField")
                            },
                            template: data => {
                                const $content = (0, _renderer.default)("<div>");
                                this.heightEditor = this.createKeepAspectRatioEditor($content, data, "width");
                                return $content
                            }
                        }, {
                            dataField: "alt",
                            colSpan: 11,
                            label: {
                                text: _message.default.format("dxHtmlEditor-dialogImageAltField")
                            }
                        }]
                    };
                    return AddUrlStrategy
                }(BaseStrategy);
                let UpdateUrlStrategy = function(_AddUrlStrategy) {
                    _inheritsLoose(UpdateUrlStrategy, _AddUrlStrategy);

                    function UpdateUrlStrategy(module, config, formData, onFileSelected) {
                        var _this2;
                        _this2 = _AddUrlStrategy.call(this, module, config, onFileSelected) || this;
                        _this2.formData = formData;
                        _this2.modifyFormData();
                        return _this2
                    }
                    var _proto7 = UpdateUrlStrategy.prototype;
                    _proto7.modifyFormData = function() {
                        const {
                            imageSrc: imageSrc
                        } = this.quill.getFormat(this.selection.index - 1, 1);
                        if (!imageSrc || 0 === this.selection.index) {
                            this.selection = {
                                index: this.selection.index + 1,
                                length: 0
                            };
                            this.quill.setSelection(this.selection.index, this.selection.length, "silent")
                        }
                        const imgElement = this.quill.getLeaf(this.selection.index)[0].domNode;
                        if (imgElement) {
                            var _this$formData$width, _this$formData$height;
                            this.formData.width = null !== (_this$formData$width = this.formData.width) && void 0 !== _this$formData$width ? _this$formData$width : (0, _size.getWidth)((0, _renderer.default)(imgElement));
                            this.formData.height = null !== (_this$formData$height = this.formData.height) && void 0 !== _this$formData$height ? _this$formData$height : (0, _size.getHeight)((0, _renderer.default)(imgElement))
                        }
                    };
                    _proto7.pasteImage = function(formData, event) {
                        this.quill.deleteText(this.embedFormatIndex(), 1, "silent");
                        this.selection.index -= 1;
                        _AddUrlStrategy.prototype.pasteImage.call(this, formData, event)
                    };
                    _proto7.embedFormatIndex = function() {
                        var _this$selection;
                        const selection = null !== (_this$selection = this.selection) && void 0 !== _this$selection ? _this$selection : this.quill.getSelection();
                        if (selection) {
                            if (selection.length) {
                                return selection.index
                            } else {
                                return selection.index - 1
                            }
                        } else {
                            return this.quill.getLength()
                        }
                    };
                    return UpdateUrlStrategy
                }(AddUrlStrategy);
                let FileStrategy = function(_BaseStrategy2) {
                    _inheritsLoose(FileStrategy, _BaseStrategy2);

                    function FileStrategy(module, config, onFileSelected) {
                        var _this3;
                        _this3 = _BaseStrategy2.call(this, module, config, onFileSelected) || this;
                        _this3.useBase64 = !(0, _type.isDefined)(_this3.config.fileUploadMode) || "base64" === _this3.config.fileUploadMode;
                        _this3.isValidInternal = false;
                        _this3.onFileSelected = onFileSelected;
                        _this3.data = null;
                        return _this3
                    }
                    var _proto8 = FileStrategy.prototype;
                    _proto8.upload = function() {
                        if (this.useBase64) {
                            this.base64Upload(this.data)
                        } else if (this.data.value.length) {
                            this.data.component.upload()
                        }
                        return true
                    };
                    _proto8.isValid = function() {
                        return this.isValidInternal
                    };
                    _proto8.onUploaded = function(data) {
                        serverUpload(this.config.uploadDirectory, data.file.name, this.quill, this.selection.index)
                    };
                    _proto8.base64Upload = function(data) {
                        this.quill.getModule("uploader").upload(this.selection, data.value, true)
                    };
                    _proto8.pasteImage = function(formData, event) {
                        if (this.useBase64) {
                            _BaseStrategy2.prototype.pasteImage.call(this, formData, event)
                        }
                    };
                    _proto8.isBase64Editable = function() {
                        return "both" === this.config.fileUploadMode
                    };
                    _proto8.validate = function(e) {
                        const fileUploader = e.component;
                        this.isValidInternal = !fileUploader._files.some(file => !file.isValid());
                        if (0 === fileUploader._files.length) {
                            this.isValidInternal = false
                        }
                    };
                    _proto8.getFileUploaderOptions = function() {
                        const fileUploaderOptions = {
                            uploadUrl: this.config.uploadUrl,
                            onValueChanged: data => {
                                this.validate(data);
                                this.data = data;
                                this.onFileSelected()
                            },
                            onUploaded: e => this.onUploaded(e)
                        };
                        return (0, _extend.extend)({}, getFileUploaderBaseOptions(), fileUploaderOptions, this.config.fileUploaderOptions)
                    };
                    _proto8.getItemsConfig = function() {
                        return [{
                            itemType: "simple",
                            dataField: "files",
                            colSpan: 11,
                            label: {
                                visible: false
                            },
                            template: () => {
                                const $content = (0, _renderer.default)("<div>");
                                this.module.editorInstance._createComponent($content, _file_uploader.default, this.getFileUploaderOptions());
                                return $content
                            }
                        }, {
                            itemType: "simple",
                            colSpan: 11,
                            label: {
                                visible: false
                            },
                            editorType: "dxCheckBox",
                            editorOptions: {
                                value: this.useBase64,
                                visible: this.isBase64Editable(),
                                text: _message.default.format("dxHtmlEditor-dialogImageEncodeToBase64"),
                                onValueChanged: e => {
                                    if (this.isBase64Editable()) {
                                        this.useBase64 = e.value
                                    }
                                }
                            }
                        }]
                    };
                    return FileStrategy
                }(BaseStrategy);

                function correctSlashesInUrl(url) {
                    return "/" !== url[url.length - 1] ? url + "/" : url
                }

                function getFileUploaderBaseOptions() {
                    return {
                        value: [],
                        name: "dx-htmleditor-image",
                        accept: "image/*",
                        uploadMode: "useButtons"
                    }
                }

                function urlUpload(quill, index, attributes) {
                    quill.insertEmbed(index, "extendedImage", attributes, "user");
                    quill.setSelection(index + 1, 0, "user")
                }

                function serverUpload(url, fileName, quill, pasteIndex) {
                    if (url) {
                        const imageUrl = correctSlashesInUrl(url) + fileName;
                        urlUpload(quill, pasteIndex, {
                            src: imageUrl
                        })
                    }
                }
            },
        28822:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/utils/table_helper.js ***!
              \**********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.TABLE_OPERATIONS = void 0;
                exports.getAutoSizedElements = function($table) {
                    let direction = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "horizontal";
                    const result = [];
                    const isHorizontal = "horizontal" === direction;
                    const $lineElements = isHorizontal ? getColumnElements($table) : getRowElements($table);
                    $lineElements.each((index, element) => {
                        const $element = (0, _renderer.default)(element);
                        if ("" === $element.get(0).style[isHorizontal ? "width" : "height"]) {
                            result.push($element)
                        }
                    });
                    return result
                };
                exports.getColumnElements = getColumnElements;
                exports.getLineElements = function($table, index) {
                    let direction = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "horizontal";
                    return "horizontal" === direction ? getRowElements($table, index) : getColumnElements($table, index)
                };
                exports.getRowElements = getRowElements;
                exports.getTableFormats = function(quill) {
                    const tableModule = quill.getModule("table");
                    return null !== tableModule && void 0 !== tableModule && tableModule.tableFormats ? tableModule.tableFormats() : TABLE_FORMATS
                };
                exports.getTableOperationHandler = function(quill, operationName) {
                    for (var _len = arguments.length, rest = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
                        rest[_key - 2] = arguments[_key]
                    }
                    return () => {
                        const table = quill.getModule("table");
                        if (!table) {
                            return
                        }
                        quill.focus();
                        return table[operationName](...rest)
                    }
                };
                exports.hasEmbedContent = function(module, selection) {
                    return !!selection && module.quill.getText(selection).length < selection.length
                };
                exports.setLineElementsFormat = function(module, _ref2) {
                    let {
                        elements: elements,
                        property: property,
                        value: value
                    } = _ref2;
                    const tableBlotNames = module.quill.getModule("table").tableBlots;
                    const fullPropertyName = "cell".concat((0, _inflector.camelize)(property, true));
                    (0, _iterator.each)(elements, (i, element) => {
                        var _formatBlot;
                        let formatBlot = module.quill.scroll.find(element);
                        if (!tableBlotNames.includes(formatBlot.statics.blotName)) {
                            const descendBlot = formatBlot.descendant(blot => tableBlotNames.includes(blot.statics.blotName));
                            formatBlot = descendBlot ? descendBlot[0] : null
                        }
                        null === (_formatBlot = formatBlot) || void 0 === _formatBlot ? void 0 : _formatBlot.format(fullPropertyName, value + "px")
                    })
                };
                exports.unfixTableWidth = function($table, _ref) {
                    let {
                        tableBlot: tableBlot,
                        quill: quill
                    } = _ref;
                    const formatBlot = null !== tableBlot && void 0 !== tableBlot ? tableBlot : quill.scroll.find($table.get(0));
                    formatBlot.format("tableWidth", "initial")
                };
                var _renderer = (obj = __webpack_require__( /*! ../../../core/renderer */ 68374), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 95479);
                var _inflector = __webpack_require__( /*! ../../../core/utils/inflector */ 78008);
                const TABLE_FORMATS = ["table", "tableHeaderCell"];
                exports.TABLE_OPERATIONS = ["insertTable", "insertHeaderRow", "insertRowAbove", "insertRowBelow", "insertColumnLeft", "insertColumnRight", "deleteColumn", "deleteRow", "deleteTable", "cellProperties", "tableProperties"];

                function getColumnElements($table) {
                    let index = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;
                    return $table.find("tr").eq(index).find("th, td")
                }

                function getRowElements($table) {
                    let index = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;
                    return $table.find("th:nth-child(".concat(1 + index, "), td:nth-child(").concat(1 + index, ")"))
                }
            },
        68953:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/utils/templates_storage.js ***!
              \***************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                let TemplatesStorage = function() {
                    function TemplatesStorage() {
                        this._storage = {}
                    }
                    var _proto = TemplatesStorage.prototype;
                    _proto.set = function(_ref, value) {
                        var _this$_storage, _this$_storage$editor;
                        let {
                            editorKey: editorKey,
                            marker: marker
                        } = _ref;
                        null !== (_this$_storage$editor = (_this$_storage = this._storage)[editorKey]) && void 0 !== _this$_storage$editor ? _this$_storage$editor : _this$_storage[editorKey] = {};
                        this._storage[editorKey][marker] = value
                    };
                    _proto.get = function(_ref2) {
                        var _Object$values$at, _this$_storage$editor2;
                        let {
                            editorKey: editorKey,
                            marker: marker
                        } = _ref2;
                        const isQuillFormatCall = !(0, _type.isDefined)(editorKey);
                        return isQuillFormatCall ? null === (_Object$values$at = Object.values(this._storage).at(-1)) || void 0 === _Object$values$at ? void 0 : _Object$values$at[marker] : null === (_this$_storage$editor2 = this._storage[editorKey]) || void 0 === _this$_storage$editor2 ? void 0 : _this$_storage$editor2[marker]
                    };
                    _proto.delete = function(_ref3) {
                        let {
                            editorKey: editorKey,
                            marker: marker
                        } = _ref3;
                        if (!this._storage[editorKey]) {
                            return
                        }
                        delete this._storage[editorKey][marker];
                        if ((0, _type.isEmptyObject)(this._storage[editorKey])) {
                            delete this._storage[editorKey]
                        }
                    };
                    return TemplatesStorage
                }();
                exports.default = TemplatesStorage;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        92077:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/html_editor/utils/toolbar_helper.js ***!
              \************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.ICON_MAP = void 0;
                exports.applyFormat = applyFormat;
                exports.getDefaultClickHandler = getDefaultClickHandler;
                exports.getFormatHandlers = function(module) {
                    return {
                        clear: _ref => {
                            let {
                                event: event
                            } = _ref;
                            const range = module.quill.getSelection();
                            if (range) {
                                var _getToolbarModule;
                                module.saveValueChangeEvent(event);
                                module.quill.removeFormat(range);
                                null === (_getToolbarModule = getToolbarModule(module)) || void 0 === _getToolbarModule ? void 0 : _getToolbarModule.updateFormatWidgets()
                            }
                        },
                        link: prepareLinkHandler(module),
                        image: prepareImageHandler(module, module.editorInstance.option("imageUpload")),
                        color: prepareColorClickHandler(module, "color"),
                        background: prepareColorClickHandler(module, "background"),
                        orderedList: prepareShortcutHandler(module, "list", "ordered"),
                        bulletList: prepareShortcutHandler(module, "list", "bullet"),
                        alignLeft: prepareShortcutHandler(module, "align", "left"),
                        alignCenter: prepareShortcutHandler(module, "align", "center"),
                        alignRight: prepareShortcutHandler(module, "align", "right"),
                        alignJustify: prepareShortcutHandler(module, "align", "justify"),
                        codeBlock: getDefaultClickHandler(module, "code-block"),
                        undo: _ref2 => {
                            let {
                                event: event
                            } = _ref2;
                            module.saveValueChangeEvent(event);
                            module.quill.history.undo()
                        },
                        redo: _ref3 => {
                            let {
                                event: event
                            } = _ref3;
                            module.saveValueChangeEvent(event);
                            module.quill.history.redo()
                        },
                        increaseIndent: _ref4 => {
                            let {
                                event: event
                            } = _ref4;
                            applyFormat(module, ["indent", "+1", "user"], event)
                        },
                        decreaseIndent: _ref5 => {
                            let {
                                event: event
                            } = _ref5;
                            applyFormat(module, ["indent", "-1", "user"], event)
                        },
                        superscript: prepareShortcutHandler(module, "script", "super"),
                        subscript: prepareShortcutHandler(module, "script", "sub"),
                        insertTable: prepareInsertTableHandler(module),
                        insertHeaderRow: (0, _table_helper.getTableOperationHandler)(module.quill, "insertHeaderRow"),
                        insertRowAbove: (0, _table_helper.getTableOperationHandler)(module.quill, "insertRowAbove"),
                        insertRowBelow: (0, _table_helper.getTableOperationHandler)(module.quill, "insertRowBelow"),
                        insertColumnLeft: (0, _table_helper.getTableOperationHandler)(module.quill, "insertColumnLeft"),
                        insertColumnRight: (0, _table_helper.getTableOperationHandler)(module.quill, "insertColumnRight"),
                        deleteColumn: (0, _table_helper.getTableOperationHandler)(module.quill, "deleteColumn"),
                        deleteRow: (0, _table_helper.getTableOperationHandler)(module.quill, "deleteRow"),
                        deleteTable: (0, _table_helper.getTableOperationHandler)(module.quill, "deleteTable"),
                        cellProperties: prepareShowFormProperties(module, "cell"),
                        tableProperties: prepareShowFormProperties(module, "table")
                    }
                };
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../../localization/message */ 28109));
                var _table_helper = __webpack_require__( /*! ./table_helper */ 28822);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 95479);
                var _form = _interopRequireDefault(__webpack_require__( /*! ../../form */ 17737));
                var _button_group = _interopRequireDefault(__webpack_require__( /*! ../../button_group */ 28236));
                var _color_box = _interopRequireDefault(__webpack_require__( /*! ../../color_box */ 4278));
                var _scroll_view = _interopRequireDefault(__webpack_require__( /*! ../../scroll_view */ 4741));
                var _size = __webpack_require__( /*! ../../../core/utils/size */ 58664);
                var _image_uploader_helper = __webpack_require__( /*! ./image_uploader_helper */ 10046);
                var _inflector = __webpack_require__( /*! ../../../core/utils/inflector */ 78008);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 58201);
                var _quill_importer = __webpack_require__( /*! ../quill_importer */ 60148);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const BORDER_STYLES_TRANSLATED = ["none", "hidden", "dotted", "dashed", "solid", "double", "groove", "ridge", "inset", "outset"].map(style => ({
                    id: style,
                    value: _message.default.format("dxHtmlEditor-borderStyle".concat((0, _inflector.camelize)(style, true)))
                }));
                exports.ICON_MAP = {
                    insertHeaderRow: "header",
                    clear: "clearformat"
                };

                function resetFormDialogOptions(editorInstance, _ref6) {
                    let {
                        contentTemplate: contentTemplate,
                        title: title,
                        minHeight: minHeight,
                        minWidth: minWidth,
                        maxWidth: maxWidth
                    } = _ref6;
                    editorInstance.formDialogOption({
                        contentTemplate: contentTemplate,
                        title: title,
                        minHeight: null !== minHeight && void 0 !== minHeight ? minHeight : 0,
                        minWidth: null !== minWidth && void 0 !== minWidth ? minWidth : 0,
                        maxWidth: null !== maxWidth && void 0 !== maxWidth ? maxWidth : "none"
                    })
                }

                function prepareShowFormProperties(module, type) {
                    return $element => {
                        var _$element, _module$quill$getModu;
                        if (!(null !== (_$element = $element) && void 0 !== _$element && _$element.length)) {
                            $element = (0, _renderer.default)(function(module, partName) {
                                const currentSelectionParts = module.quill.getModule("table").getTable();
                                return "table" === partName ? currentSelectionParts[0].domNode : currentSelectionParts[2].domNode
                            }(module, type))
                        }
                        const [tableBlot, rowBlot] = null !== (_module$quill$getModu = module.quill.getModule("table").getTable()) && void 0 !== _module$quill$getModu ? _module$quill$getModu : [];
                        const formats = module.quill.getFormat(module.editorInstance.getSelection(true));
                        const tablePropertiesFormConfig = function(type) {
                            return "cell" === type ? getCellPropertiesFormConfig : getTablePropertiesFormConfig
                        }(type)(module, {
                            $element: $element,
                            formats: formats,
                            tableBlot: tableBlot,
                            rowBlot: rowBlot
                        });
                        const {
                            contentTemplate: contentTemplate,
                            title: title,
                            minHeight: minHeight,
                            minWidth: minWidth,
                            maxWidth: maxWidth
                        } = module.editorInstance._formDialog._popup.option();
                        const savedOptions = {
                            contentTemplate: contentTemplate,
                            title: title,
                            minHeight: minHeight,
                            minWidth: minWidth,
                            maxWidth: maxWidth
                        };
                        let formInstance;
                        module.editorInstance.formDialogOption({
                            contentTemplate: container => {
                                const $content = (0, _renderer.default)("<div>").appendTo(container);
                                const $form = (0, _renderer.default)("<div>").appendTo($content);
                                module.editorInstance._createComponent($form, _form.default, tablePropertiesFormConfig.formOptions);
                                module.editorInstance._createComponent($content, _scroll_view.default, {});
                                formInstance = $form.dxForm("instance");
                                return $content
                            },
                            title: _message.default.format("dxHtmlEditor-".concat(type, "Properties")),
                            minHeight: 400,
                            minWidth: Math.min(800, .9 * (0, _size.getWidth)((0, _window.getWindow)()) - 1),
                            maxWidth: .9 * (0, _size.getWidth)((0, _window.getWindow)())
                        });
                        const promise = module.editorInstance.showFormDialog();
                        promise.done((formData, event) => {
                            module.saveValueChangeEvent(event);
                            tablePropertiesFormConfig.applyHandler(formInstance);
                            resetFormDialogOptions(module.editorInstance, savedOptions)
                        });
                        promise.fail(() => {
                            module.quill.focus();
                            resetFormDialogOptions(module.editorInstance, savedOptions)
                        })
                    }
                }

                function applyFormat(module, formatArgs, event) {
                    module.saveValueChangeEvent(event);
                    module.quill.format(...formatArgs)
                }

                function getColorFromFormat(value) {
                    return Array.isArray(value) ? value[0] : value
                }

                function prepareLinkHandler(module) {
                    return () => {
                        var _selection;
                        module.quill.focus();
                        let selection = module.quill.getSelection();
                        const formats = selection ? module.quill.getFormat() : {};
                        const isCursorAtLink = void 0 !== formats.link && 0 === (null === (_selection = selection) || void 0 === _selection ? void 0 : _selection.length);
                        let href = formats.link || "";
                        if (isCursorAtLink) {
                            const linkRange = function(module, range) {
                                const Quill = (0, _quill_importer.getQuill)();
                                const LinkBlot = Quill.import("formats/link");
                                let link;
                                let linkOffset;
                                [link, linkOffset] = module.quill.scroll.descendant(LinkBlot, range.index);
                                if (!link && 0 === range.length) {
                                    [link, linkOffset] = module.quill.scroll.descendant(LinkBlot, range.index - 1);
                                    if (link) {
                                        linkOffset += 1
                                    }
                                }
                                const result = !link ? null : {
                                    index: range.index - linkOffset,
                                    length: link.length()
                                };
                                return result
                            }(module, selection);
                            if (linkRange) {
                                selection = linkRange
                            } else {
                                href = ""
                            }
                        }
                        const selectionHasEmbedContent = (0, _table_helper.hasEmbedContent)(module, selection);
                        const formData = {
                            href: href,
                            text: selection && !selectionHasEmbedContent ? module.quill.getText(selection) : "",
                            target: Object.prototype.hasOwnProperty.call(formats, "target") ? !!formats.target : true
                        };
                        module.editorInstance.formDialogOption("title", _message.default.format("dxHtmlEditor-dialogLinkCaption"));
                        const promise = module.editorInstance.showFormDialog({
                            formData: formData,
                            items: getLinkFormItems(selectionHasEmbedContent)
                        });
                        promise.done((formData, event) => {
                            if (selection && !selectionHasEmbedContent) {
                                const text = formData.text || formData.href;
                                const {
                                    index: index,
                                    length: length
                                } = selection;
                                formData.text = void 0;
                                module.saveValueChangeEvent(event);
                                length && module.quill.deleteText(index, length, "silent");
                                module.quill.insertText(index, text, "link", formData, "user");
                                module.quill.setSelection(index + text.length, 0, "user")
                            } else {
                                formData.text = !selection && !formData.text ? formData.href : formData.text;
                                applyFormat(module, ["link", formData, "user"], event)
                            }
                        });
                        promise.fail(() => {
                            module.quill.focus()
                        })
                    }
                }

                function prepareImageHandler(module, imageUploadOption) {
                    const imageUploader = new _image_uploader_helper.ImageUploader(module, imageUploadOption);
                    return () => {
                        imageUploader.render()
                    }
                }

                function getLinkFormItems(selectionHasEmbedContent) {
                    return [{
                        dataField: "href",
                        label: {
                            text: _message.default.format("dxHtmlEditor-dialogLinkUrlField")
                        }
                    }, {
                        dataField: "text",
                        label: {
                            text: _message.default.format("dxHtmlEditor-dialogLinkTextField")
                        },
                        visible: !selectionHasEmbedContent
                    }, {
                        dataField: "target",
                        editorType: "dxCheckBox",
                        editorOptions: {
                            text: _message.default.format("dxHtmlEditor-dialogLinkTargetField")
                        },
                        cssClass: "dx-formdialog-field-target",
                        label: {
                            visible: false
                        }
                    }]
                }

                function prepareColorClickHandler(module, name) {
                    return () => {
                        const formData = module.quill.getFormat();
                        const caption = "color" === name ? "dxHtmlEditor-dialogColorCaption" : "dxHtmlEditor-dialogBackgroundCaption";
                        module.editorInstance.formDialogOption("title", _message.default.format(caption));
                        const promise = module.editorInstance.showFormDialog({
                            formData: formData,
                            items: [{
                                dataField: name,
                                editorType: "dxColorView",
                                editorOptions: {
                                    focusStateEnabled: false
                                },
                                label: {
                                    visible: false
                                }
                            }]
                        });
                        promise.done((formData, event) => {
                            applyFormat(module, [name, formData[name], "user"], event)
                        });
                        promise.fail(() => {
                            module.quill.focus()
                        })
                    }
                }

                function prepareShortcutHandler(module, name, shortcutValue) {
                    return _ref7 => {
                        var _getToolbarModule2;
                        let {
                            event: event
                        } = _ref7;
                        const formats = module.quill.getFormat();
                        const value = formats[name] === shortcutValue ? false : shortcutValue;
                        applyFormat(module, [name, value, "user"], event);
                        null === (_getToolbarModule2 = getToolbarModule(module)) || void 0 === _getToolbarModule2 ? void 0 : _getToolbarModule2.updateFormatWidgets(true)
                    }
                }

                function getToolbarModule(module) {
                    return module._updateFormatWidget ? module : module.quill.getModule("toolbar")
                }

                function getDefaultClickHandler(module, name) {
                    return _ref8 => {
                        var _getToolbarModule3;
                        let {
                            event: event
                        } = _ref8;
                        const formats = module.quill.getFormat();
                        const value = formats[name];
                        const newValue = !((0, _type.isBoolean)(value) ? value : (0, _type.isDefined)(value));
                        applyFormat(module, [name, newValue, "user"], event);
                        null === (_getToolbarModule3 = getToolbarModule(module)) || void 0 === _getToolbarModule3 ? void 0 : _getToolbarModule3._updateFormatWidget(name, newValue, formats)
                    }
                }

                function prepareInsertTableHandler(module) {
                    return () => {
                        const formats = module.quill.getFormat();
                        const isTableFocused = module._tableFormats.some(format => Object.prototype.hasOwnProperty.call(formats, format));
                        if (isTableFocused) {
                            module.quill.focus();
                            return
                        }
                        module.editorInstance.formDialogOption("title", _message.default.format("dxHtmlEditor-dialogInsertTableCaption"));
                        const promise = module.editorInstance.showFormDialog({
                            formData: {
                                rows: 1,
                                columns: 1
                            },
                            items: [{
                                dataField: "columns",
                                editorType: "dxNumberBox",
                                editorOptions: {
                                    min: 1
                                },
                                label: {
                                    text: _message.default.format("dxHtmlEditor-dialogInsertTableRowsField")
                                }
                            }, {
                                dataField: "rows",
                                editorType: "dxNumberBox",
                                editorOptions: {
                                    min: 1
                                },
                                label: {
                                    text: _message.default.format("dxHtmlEditor-dialogInsertTableColumnsField")
                                }
                            }]
                        });
                        promise.done((formData, event) => {
                            module.quill.focus();
                            const table = module.quill.getModule("table");
                            if (table) {
                                module.saveValueChangeEvent(event);
                                const {
                                    columns: columns,
                                    rows: rows
                                } = formData;
                                table.insertTable(columns, rows)
                            }
                        }).always(() => {
                            module.quill.focus()
                        })
                    }
                }

                function getTablePropertiesFormConfig(module, _ref9) {
                    let {
                        $element: $element,
                        formats: formats,
                        tableBlot: tableBlot
                    } = _ref9;
                    const window = (0, _window.getWindow)();
                    let alignmentEditorInstance;
                    let borderColorEditorInstance;
                    let backgroundColorEditorInstance;
                    const $table = $element;
                    const editorInstance = module.editorInstance;
                    const startTableWidth = parseInt(formats.tableWidth) || (0, _size.getOuterWidth)($table);
                    const tableStyles = window.getComputedStyle($table.get(0));
                    const startTextAlign = "start" === tableStyles.textAlign ? "left" : tableStyles.textAlign;
                    const formOptions = {
                        colCount: 2,
                        formData: {
                            width: startTableWidth,
                            height: (0, _type.isDefined)(formats.tableHeight) ? parseInt(formats.tableHeight) : (0, _size.getOuterHeight)($table),
                            backgroundColor: formats.tableBackgroundColor || tableStyles.backgroundColor,
                            borderStyle: formats.tableBorderStyle || tableStyles.borderTopStyle,
                            borderColor: formats.tableBorderColor || tableStyles.borderTopColor,
                            borderWidth: parseInt((0, _type.isDefined)(formats.tableBorderWidth) ? formats.tableBorderWidth : tableStyles.borderTopWidth),
                            alignment: formats.tableAlign || startTextAlign
                        },
                        items: [{
                            itemType: "group",
                            caption: _message.default.format("dxHtmlEditor-border"),
                            colCountByScreen: {
                                xs: 2
                            },
                            colCount: 2,
                            items: [{
                                dataField: "borderStyle",
                                label: {
                                    text: _message.default.format("dxHtmlEditor-style")
                                },
                                editorType: "dxSelectBox",
                                editorOptions: {
                                    items: BORDER_STYLES_TRANSLATED,
                                    valueExpr: "id",
                                    displayExpr: "value",
                                    placeholder: "Select style"
                                }
                            }, {
                                dataField: "borderWidth",
                                label: {
                                    text: _message.default.format("dxHtmlEditor-borderWidth")
                                },
                                editorOptions: {
                                    placeholder: _message.default.format("dxHtmlEditor-pixels")
                                }
                            }, {
                                itemType: "simple",
                                dataField: "borderColor",
                                label: {
                                    text: _message.default.format("dxHtmlEditor-borderColor")
                                },
                                colSpan: 2,
                                template: e => {
                                    const $content = (0, _renderer.default)("<div>");
                                    editorInstance._createComponent($content, _color_box.default, {
                                        editAlphaChannel: true,
                                        value: e.component.option("formData").borderColor,
                                        onInitialized: e => {
                                            borderColorEditorInstance = e.component
                                        }
                                    });
                                    return $content
                                }
                            }]
                        }, {
                            itemType: "group",
                            caption: _message.default.format("dxHtmlEditor-dimensions"),
                            colCountByScreen: {
                                xs: 2
                            },
                            colCount: 2,
                            items: [{
                                dataField: "width",
                                label: {
                                    text: _message.default.format("dxHtmlEditor-width")
                                },
                                editorOptions: {
                                    min: 0,
                                    placeholder: _message.default.format("dxHtmlEditor-pixels")
                                }
                            }, {
                                dataField: "height",
                                label: {
                                    text: _message.default.format("dxHtmlEditor-height")
                                },
                                editorOptions: {
                                    min: 0,
                                    placeholder: _message.default.format("dxHtmlEditor-pixels")
                                }
                            }]
                        }, {
                            itemType: "group",
                            caption: _message.default.format("dxHtmlEditor-tableBackground"),
                            items: [{
                                itemType: "simple",
                                dataField: "backgroundColor",
                                label: {
                                    text: _message.default.format("dxHtmlEditor-borderColor")
                                },
                                template: e => {
                                    const $content = (0, _renderer.default)("<div>");
                                    editorInstance._createComponent($content, _color_box.default, {
                                        editAlphaChannel: true,
                                        value: e.component.option("formData").backgroundColor,
                                        onInitialized: e => {
                                            backgroundColorEditorInstance = e.component
                                        }
                                    });
                                    return $content
                                }
                            }]
                        }, {
                            itemType: "group",
                            caption: _message.default.format("dxHtmlEditor-alignment"),
                            items: [{
                                itemType: "simple",
                                label: {
                                    text: _message.default.format("dxHtmlEditor-horizontal")
                                },
                                template: () => {
                                    const $content = (0, _renderer.default)("<div>");
                                    editorInstance._createComponent($content, _button_group.default, {
                                        items: [{
                                            value: "left",
                                            icon: "alignleft"
                                        }, {
                                            value: "center",
                                            icon: "aligncenter"
                                        }, {
                                            value: "right",
                                            icon: "alignright"
                                        }, {
                                            value: "justify",
                                            icon: "alignjustify"
                                        }],
                                        keyExpr: "value",
                                        selectedItemKeys: [startTextAlign],
                                        onInitialized: e => {
                                            alignmentEditorInstance = e.component
                                        }
                                    });
                                    return $content
                                }
                            }]
                        }],
                        showColonAfterLabel: true,
                        labelLocation: "top",
                        minColWidth: 400
                    };
                    return {
                        formOptions: formOptions,
                        applyHandler: formInstance => {
                            const formData = formInstance.option("formData");
                            const newWidth = formData.width === startTableWidth ? void 0 : formData.width;
                            const newHeight = formData.height;
                            ! function(module, _ref11) {
                                let {
                                    $table: $table,
                                    newHeight: newHeight,
                                    newWidth: newWidth,
                                    tableBlot: tableBlot
                                } = _ref11;
                                if ((0, _type.isDefined)(newWidth)) {
                                    const autoWidthColumns = (0, _table_helper.getAutoSizedElements)($table);
                                    if (autoWidthColumns.length > 0) {
                                        module.editorInstance.format("tableWidth", newWidth + "px")
                                    } else {
                                        const $columns = (0, _table_helper.getColumnElements)($table);
                                        const oldTableWidth = (0, _size.getOuterWidth)($table);
                                        (0, _table_helper.unfixTableWidth)($table, {
                                            tableBlot: tableBlot
                                        });
                                        (0, _iterator.each)($columns, (i, element) => {
                                            const $element = (0, _renderer.default)(element);
                                            const newElementWidth = newWidth / oldTableWidth * (0, _size.getOuterWidth)($element);
                                            const $lineElements = (0, _table_helper.getLineElements)($table, $element.index(), "horizontal");
                                            (0, _table_helper.setLineElementsFormat)(module, {
                                                elements: $lineElements,
                                                property: "width",
                                                value: newElementWidth
                                            })
                                        })
                                    }
                                }
                                const autoHeightRows = (0, _table_helper.getAutoSizedElements)($table, "vertical");
                                if ((null === autoHeightRows || void 0 === autoHeightRows ? void 0 : autoHeightRows.length) > 0) {
                                    tableBlot.format("tableHeight", newHeight + "px")
                                } else {
                                    const $rows = (0, _table_helper.getRowElements)($table);
                                    const oldTableHeight = (0, _size.getOuterHeight)($table);
                                    (0, _iterator.each)($rows, (i, element) => {
                                        const $element = (0, _renderer.default)(element);
                                        const newElementHeight = newHeight / oldTableHeight * (0, _size.getOuterHeight)($element);
                                        const $lineElements = (0, _table_helper.getLineElements)($table, i, "vertical");
                                        (0, _table_helper.setLineElementsFormat)(module, {
                                            elements: $lineElements,
                                            property: "height",
                                            value: newElementHeight
                                        })
                                    })
                                }
                            }(module, {
                                $table: $table,
                                newHeight: newHeight,
                                newWidth: newWidth,
                                tableBlot: tableBlot
                            });
                            module.editorInstance.format("tableBorderStyle", formData.borderStyle);
                            module.editorInstance.format("tableBorderWidth", formData.borderWidth + "px");
                            module.editorInstance.format("tableBorderColor", borderColorEditorInstance.option("value"));
                            module.editorInstance.format("tableBackgroundColor", backgroundColorEditorInstance.option("value"));
                            module.editorInstance.format("tableTextAlign", alignmentEditorInstance.option("selectedItemKeys")[0])
                        }
                    }
                }

                function getCellPropertiesFormConfig(module, _ref10) {
                    let {
                        $element: $element,
                        formats: formats,
                        tableBlot: tableBlot,
                        rowBlot: rowBlot
                    } = _ref10;
                    const window = (0, _window.getWindow)();
                    let alignmentEditorInstance;
                    let verticalAlignmentEditorInstance;
                    let borderColorEditorInstance;
                    let backgroundColorEditorInstance;
                    const $cell = $element;
                    const startCellWidth = (0, _type.isDefined)(formats.cellWidth) ? parseInt(formats.cellWidth) : (0, _size.getOuterWidth)($cell);
                    const editorInstance = module.editorInstance;
                    const cellStyles = window.getComputedStyle($cell.get(0));
                    const startTextAlign = "start" === cellStyles.textAlign ? "left" : cellStyles.textAlign;
                    const formOptions = {
                        colCount: 2,
                        formData: {
                            width: startCellWidth,
                            height: (0, _type.isDefined)(formats.cellHeight) ? parseInt(formats.cellHeight) : (0, _size.getOuterHeight)($cell),
                            backgroundColor: getColorFromFormat(formats.cellBackgroundColor) || cellStyles.backgroundColor,
                            borderStyle: formats.cellBorderStyle || cellStyles.borderTopStyle,
                            borderColor: getColorFromFormat(formats.cellBorderColor) || cellStyles.borderTopColor,
                            borderWidth: parseInt((0, _type.isDefined)(formats.cellBorderWidth) ? formats.cellBorderWidth : cellStyles.borderTopWidth),
                            alignment: formats.cellTextAlign || startTextAlign,
                            verticalAlignment: formats.cellVerticalAlign || cellStyles.verticalAlign,
                            verticalPadding: parseInt((0, _type.isDefined)(formats.cellPaddingTop) ? formats.cellPaddingTop : cellStyles.paddingTop),
                            horizontalPadding: parseInt((0, _type.isDefined)(formats.cellPaddingLeft) ? formats.cellPaddingLeft : cellStyles.paddingLeft)
                        },
                        items: [{
                            itemType: "group",
                            caption: _message.default.format("dxHtmlEditor-border"),
                            colCountByScreen: {
                                xs: 2
                            },
                            colCount: 2,
                            items: [{
                                dataField: "borderStyle",
                                label: {
                                    text: _message.default.format("dxHtmlEditor-style")
                                },
                                editorType: "dxSelectBox",
                                editorOptions: {
                                    items: BORDER_STYLES_TRANSLATED,
                                    valueExpr: "id",
                                    displayExpr: "value"
                                }
                            }, {
                                dataField: "borderWidth",
                                label: {
                                    text: _message.default.format("dxHtmlEditor-borderWidth")
                                },
                                editorOptions: {
                                    placeholder: _message.default.format("dxHtmlEditor-pixels")
                                }
                            }, {
                                itemType: "simple",
                                dataField: "borderColor",
                                colSpan: 2,
                                label: {
                                    text: _message.default.format("dxHtmlEditor-borderColor")
                                },
                                template: e => {
                                    const $content = (0, _renderer.default)("<div>");
                                    editorInstance._createComponent($content, _color_box.default, {
                                        editAlphaChannel: true,
                                        value: e.component.option("formData").borderColor,
                                        onInitialized: e => {
                                            borderColorEditorInstance = e.component
                                        }
                                    });
                                    return $content
                                }
                            }]
                        }, {
                            itemType: "group",
                            caption: _message.default.format("dxHtmlEditor-dimensions"),
                            colCount: 2,
                            colCountByScreen: {
                                xs: 2
                            },
                            items: [{
                                dataField: "width",
                                label: {
                                    text: _message.default.format("dxHtmlEditor-width")
                                },
                                editorOptions: {
                                    min: 0,
                                    placeholder: _message.default.format("dxHtmlEditor-pixels")
                                }
                            }, {
                                dataField: "height",
                                label: {
                                    text: _message.default.format("dxHtmlEditor-height")
                                },
                                editorOptions: {
                                    min: 0,
                                    placeholder: _message.default.format("dxHtmlEditor-pixels")
                                }
                            }, {
                                dataField: "verticalPadding",
                                label: {
                                    text: _message.default.format("dxHtmlEditor-paddingVertical")
                                },
                                editorOptions: {
                                    placeholder: _message.default.format("dxHtmlEditor-pixels")
                                }
                            }, {
                                label: {
                                    text: _message.default.format("dxHtmlEditor-paddingHorizontal")
                                },
                                dataField: "horizontalPadding",
                                editorOptions: {
                                    placeholder: _message.default.format("dxHtmlEditor-pixels")
                                }
                            }]
                        }, {
                            itemType: "group",
                            caption: _message.default.format("dxHtmlEditor-tableBackground"),
                            items: [{
                                itemType: "simple",
                                dataField: "backgroundColor",
                                label: {
                                    text: _message.default.format("dxHtmlEditor-borderColor")
                                },
                                template: e => {
                                    const $content = (0, _renderer.default)("<div>");
                                    editorInstance._createComponent($content, _color_box.default, {
                                        editAlphaChannel: true,
                                        value: e.component.option("formData").backgroundColor,
                                        onInitialized: e => {
                                            backgroundColorEditorInstance = e.component
                                        }
                                    });
                                    return $content
                                }
                            }]
                        }, {
                            itemType: "group",
                            caption: _message.default.format("dxHtmlEditor-alignment"),
                            colCount: 2,
                            items: [{
                                itemType: "simple",
                                label: {
                                    text: _message.default.format("dxHtmlEditor-horizontal")
                                },
                                template: () => {
                                    const $content = (0, _renderer.default)("<div>");
                                    editorInstance._createComponent($content, _button_group.default, {
                                        items: [{
                                            value: "left",
                                            icon: "alignleft"
                                        }, {
                                            value: "center",
                                            icon: "aligncenter"
                                        }, {
                                            value: "right",
                                            icon: "alignright"
                                        }, {
                                            value: "justify",
                                            icon: "alignjustify"
                                        }],
                                        keyExpr: "value",
                                        selectedItemKeys: [startTextAlign],
                                        onInitialized: e => {
                                            alignmentEditorInstance = e.component
                                        }
                                    });
                                    return $content
                                }
                            }, {
                                itemType: "simple",
                                label: {
                                    text: _message.default.format("dxHtmlEditor-vertical")
                                },
                                template: () => {
                                    const $content = (0, _renderer.default)("<div>");
                                    editorInstance._createComponent($content, _button_group.default, {
                                        items: [{
                                            value: "top",
                                            icon: "verticalaligntop"
                                        }, {
                                            value: "middle",
                                            icon: "verticalaligncenter"
                                        }, {
                                            value: "bottom",
                                            icon: "verticalalignbottom"
                                        }],
                                        keyExpr: "value",
                                        selectedItemKeys: [cellStyles.verticalAlign],
                                        onInitialized: e => {
                                            verticalAlignmentEditorInstance = e.component
                                        }
                                    });
                                    return $content
                                }
                            }]
                        }],
                        showColonAfterLabel: true,
                        labelLocation: "top",
                        minColWidth: 400
                    };
                    return {
                        formOptions: formOptions,
                        applyHandler: formInstance => {
                            const formData = formInstance.option("formData");
                            const newWidth = formData.width === parseInt(startCellWidth) ? void 0 : formData.width;
                            const newHeight = formData.height;
                            ! function(module, _ref12) {
                                let {
                                    $cell: $cell,
                                    newHeight: newHeight,
                                    newWidth: newWidth,
                                    tableBlot: tableBlot,
                                    rowBlot: rowBlot
                                } = _ref12;
                                const $table = (0, _renderer.default)($cell.closest("table"));
                                if ((0, _type.isDefined)(newWidth)) {
                                    const index = (0, _renderer.default)($cell).index();
                                    let $verticalCells = (0, _table_helper.getLineElements)($table, index);
                                    const widthDiff = newWidth - (0, _size.getOuterWidth)($cell);
                                    const tableWidth = (0, _size.getOuterWidth)($table);
                                    if (newWidth > tableWidth) {
                                        (0, _table_helper.unfixTableWidth)($table, {
                                            tableBlot: tableBlot
                                        })
                                    }(0, _table_helper.setLineElementsFormat)(module, {
                                        elements: $verticalCells,
                                        property: "width",
                                        value: newWidth
                                    });
                                    const $nextColumnCell = $cell.next();
                                    const shouldUpdateNearestColumnWidth = 0 === (0, _table_helper.getAutoSizedElements)($table).length;
                                    if (shouldUpdateNearestColumnWidth) {
                                        (0, _table_helper.unfixTableWidth)($table, {
                                            tableBlot: tableBlot
                                        });
                                        if (1 === $nextColumnCell.length) {
                                            $verticalCells = (0, _table_helper.getLineElements)($table, index + 1);
                                            const nextColumnWidth = (0, _size.getOuterWidth)($verticalCells.eq(0)) - widthDiff;
                                            (0, _table_helper.setLineElementsFormat)(module, {
                                                elements: $verticalCells,
                                                property: "width",
                                                value: Math.max(nextColumnWidth, 0)
                                            })
                                        } else {
                                            const $prevColumnCell = $cell.prev();
                                            if (1 === $prevColumnCell.length) {
                                                $verticalCells = (0, _table_helper.getLineElements)($table, index - 1);
                                                const prevColumnWidth = (0, _size.getOuterWidth)($verticalCells.eq(0)) - widthDiff;
                                                (0, _table_helper.setLineElementsFormat)(module, {
                                                    elements: $verticalCells,
                                                    property: "width",
                                                    value: Math.max(prevColumnWidth, 0)
                                                })
                                            }
                                        }
                                    }
                                }
                                rowBlot.children.forEach(rowCell => {
                                    rowCell.format("cellHeight", newHeight + "px")
                                });
                                const autoHeightRows = (0, _table_helper.getAutoSizedElements)($table, "vertical");
                                if (0 === autoHeightRows.length) {
                                    $table.css("height", "auto")
                                }
                            }(module, {
                                $cell: $cell,
                                newHeight: newHeight,
                                newWidth: newWidth,
                                tableBlot: tableBlot,
                                rowBlot: rowBlot
                            });
                            module.editorInstance.format("cellBorderWidth", formData.borderWidth + "px");
                            module.editorInstance.format("cellBorderColor", borderColorEditorInstance.option("value"));
                            module.editorInstance.format("cellBorderStyle", formData.borderStyle);
                            module.editorInstance.format("cellBackgroundColor", backgroundColorEditorInstance.option("value"));
                            module.editorInstance.format("cellTextAlign", alignmentEditorInstance.option("selectedItemKeys")[0]);
                            module.editorInstance.format("cellVerticalAlign", verticalAlignmentEditorInstance.option("selectedItemKeys")[0]);
                            module.editorInstance.format("cellPaddingLeft", formData.horizontalPadding + "px");
                            module.editorInstance.format("cellPaddingRight", formData.horizontalPadding + "px");
                            module.editorInstance.format("cellPaddingTop", formData.verticalPadding + "px");
                            module.editorInstance.format("cellPaddingBottom", formData.verticalPadding + "px")
                        }
                    }
                }
            },
        86e3:
            /*!********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/list.js ***!
              \********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _list_light = (obj = __webpack_require__( /*! ./list_light */ 56757), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                __webpack_require__( /*! ./list/modules/selection */ 20551);
                __webpack_require__( /*! ./list/modules/deleting */ 15728);
                __webpack_require__( /*! ./list/modules/dragging */ 82778);
                __webpack_require__( /*! ./list/modules/context */ 29184);
                __webpack_require__( /*! ./list/modules/search */ 68724);
                var _default = _list_light.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        37945:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/list/item.js ***!
              \*************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _item = _interopRequireDefault(__webpack_require__( /*! ../collection/item */ 54778));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const ListItem = _item.default.inherit({
                    _renderWatchers: function() {
                        this.callBase();
                        this._startWatcher("badge", this._renderBadge.bind(this));
                        this._startWatcher("showChevron", this._renderShowChevron.bind(this))
                    },
                    _renderBadge: function(badge) {
                        this._$element.children(".dx-list-item-badge-container").remove();
                        if (!badge) {
                            return
                        }
                        const $badge = (0, _renderer.default)("<div>").addClass("dx-list-item-badge-container").append((0, _renderer.default)("<div>").addClass("dx-list-item-badge").addClass("dx-badge").text(badge));
                        const $chevron = this._$element.children(".dx-list-item-chevron-container").first();
                        $chevron.length > 0 ? $badge.insertBefore($chevron) : $badge.appendTo(this._$element)
                    },
                    _renderShowChevron: function(showChevron) {
                        this._$element.children(".dx-list-item-chevron-container").remove();
                        if (!showChevron) {
                            return
                        }
                        const $chevronContainer = (0, _renderer.default)("<div>").addClass("dx-list-item-chevron-container");
                        const $chevron = (0, _renderer.default)("<div>").addClass("dx-list-item-chevron");
                        $chevronContainer.append($chevron).appendTo(this._$element)
                    }
                });
                var _default = ListItem;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        29184:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/list/modules/context.js ***!
              \************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ../ui.list.edit.decorator.context */ 27445)
            },
        52654:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/list/modules/deleting.context.js ***!
              \*********************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ./context */ 29184)
            },
        15728:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/list/modules/deleting.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ./deleting.context */ 52654);
                __webpack_require__( /*! ./deleting.slideButton */ 51257);
                __webpack_require__( /*! ./deleting.slideItem */ 22116);
                __webpack_require__( /*! ./deleting.static */ 3589);
                __webpack_require__( /*! ./deleting.swipe */ 3181);
                __webpack_require__( /*! ./deleting.toggle */ 78290)
            },
        51257:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/list/modules/deleting.slideButton.js ***!
              \*************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ../ui.list.edit.decorator.switchable.button */ 96782)
            },
        22116:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/list/modules/deleting.slideItem.js ***!
              \***********************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ../ui.list.edit.decorator.switchable.slide */ 36279)
            },
        3589:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/list/modules/deleting.static.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ../ui.list.edit.decorator.static */ 47970)
            },
        3181:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/list/modules/deleting.swipe.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ../ui.list.edit.decorator.swipe */ 33329)
            },
        78290:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/list/modules/deleting.toggle.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ../ui.list.edit.decorator.switchable.button */ 96782)
            },
        82778:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/list/modules/dragging.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ../ui.list.edit.decorator.reorder */ 65436)
            },
        68724:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/list/modules/search.js ***!
              \***********************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../widget/ui.search_box_mixin */ 2630));
                var _text_box = _interopRequireDefault(__webpack_require__( /*! ../../text_box */ 29837));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                _ui.default.setEditorClass(_text_box.default)
            },
        20551:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/list/modules/selection.js ***!
              \**************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                __webpack_require__( /*! ../ui.list.edit.decorator.selection */ 81362)
            },
        31583:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/list/ui.list.base.js ***!
              \*********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.ListBase = void 0;
                exports.setScrollView = function(value) {
                    _scrollView = value
                };
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _icon = __webpack_require__( /*! ../../core/utils/icon */ 44899);
                var _element = __webpack_require__( /*! ../../core/element */ 6415);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _data = __webpack_require__( /*! ../../core/utils/data */ 47617);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _fx = _interopRequireDefault(__webpack_require__( /*! ../../animation/fx */ 87209));
                var _click = __webpack_require__( /*! ../../events/click */ 95429);
                var _swipe = __webpack_require__( /*! ../../events/swipe */ 34309);
                var _support = __webpack_require__( /*! ../../core/utils/support */ 60137);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _utils = __webpack_require__( /*! ../widget/utils.ink_ripple */ 72672);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _item = _interopRequireDefault(__webpack_require__( /*! ./item */ 37945));
                var _button = _interopRequireDefault(__webpack_require__( /*! ../button */ 63008));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _themes = __webpack_require__( /*! ../themes */ 75811);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _scroll_view = _interopRequireDefault(__webpack_require__( /*! ../scroll_view */ 4741));
                var _uiScrollable = __webpack_require__( /*! ../scroll_view/ui.scrollable.device */ 82205);
                var _uiCollection_widget = _interopRequireDefault(__webpack_require__( /*! ../collection/ui.collection_widget.live_update */ 69010));
                var _bindable_template = __webpack_require__( /*! ../../core/templates/bindable_template */ 93280);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _grouped_data_converter_mixin = _interopRequireDefault(__webpack_require__( /*! ../shared/grouped_data_converter_mixin */ 37178));
                var _get_element_style = __webpack_require__( /*! ../../renovation/ui/scroll_view/utils/get_element_style */ 42136);
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 73176));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const LIST_ITEM_SELECTOR = ".dx-list-item";
                const groupItemsGetter = (0, _data.compileGetter)("items");
                let _scrollView;
                const ListBase = _uiCollection_widget.default.inherit({
                    _activeStateUnit: [LIST_ITEM_SELECTOR, ".dx-list-select-all"].join(","),
                    _supportedKeys: function() {
                        const that = this;
                        const moveFocusPerPage = function(direction) {
                            let $item = getEdgeVisibleItem(direction);
                            const isFocusedItem = $item.is(that.option("focusedElement"));
                            if (isFocusedItem) {
                                ! function($item, direction) {
                                    let resultPosition = $item.position().top;
                                    if ("prev" === direction) {
                                        resultPosition = $item.position().top - (0, _size.getHeight)(that.$element()) + (0, _size.getOuterHeight)($item)
                                    }
                                    that.scrollTo(resultPosition)
                                }($item, direction);
                                $item = getEdgeVisibleItem(direction)
                            }
                            that.option("focusedElement", (0, _element.getPublicElement)($item));
                            that.scrollToItem($item)
                        };

                        function getEdgeVisibleItem(direction) {
                            const scrollTop = that.scrollTop();
                            const containerHeight = (0, _size.getHeight)(that.$element());
                            let $item = (0, _renderer.default)(that.option("focusedElement"));
                            let isItemVisible = true;
                            if (!$item.length) {
                                return (0, _renderer.default)()
                            }
                            while (isItemVisible) {
                                const $nextItem = $item[direction]();
                                if (!$nextItem.length) {
                                    break
                                }
                                const nextItemLocation = $nextItem.position().top + (0, _size.getOuterHeight)($nextItem) / 2;
                                isItemVisible = nextItemLocation < containerHeight + scrollTop && nextItemLocation > scrollTop;
                                if (isItemVisible) {
                                    $item = $nextItem
                                }
                            }
                            return $item
                        }
                        return (0, _extend.extend)(this.callBase(), {
                            leftArrow: _common.noop,
                            rightArrow: _common.noop,
                            pageUp: function() {
                                moveFocusPerPage("prev");
                                return false
                            },
                            pageDown: function() {
                                moveFocusPerPage("next");
                                return false
                            }
                        })
                    },
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            hoverStateEnabled: true,
                            pullRefreshEnabled: false,
                            scrollingEnabled: true,
                            selectByClick: true,
                            showScrollbar: "onScroll",
                            useNativeScrolling: true,
                            bounceEnabled: true,
                            scrollByContent: true,
                            scrollByThumb: false,
                            pullingDownText: _message.default.format("dxList-pullingDownText"),
                            pulledDownText: _message.default.format("dxList-pulledDownText"),
                            refreshingText: _message.default.format("dxList-refreshingText"),
                            pageLoadingText: _message.default.format("dxList-pageLoadingText"),
                            onScroll: null,
                            onPullRefresh: null,
                            onPageLoading: null,
                            pageLoadMode: "scrollBottom",
                            nextButtonText: _message.default.format("dxList-nextButtonText"),
                            onItemSwipe: null,
                            grouped: false,
                            onGroupRendered: null,
                            collapsibleGroups: false,
                            groupTemplate: "group",
                            indicateLoading: true,
                            activeStateEnabled: true,
                            _itemAttributes: {
                                role: "option"
                            },
                            useInkRipple: false,
                            wrapItemText: false,
                            _swipeEnabled: true,
                            showChevronExpr: function(data) {
                                return data ? data.showChevron : void 0
                            },
                            badgeExpr: function(data) {
                                return data ? data.badge : void 0
                            }
                        })
                    },
                    _defaultOptionsRules: function() {
                        const themeName = (0, _themes.current)();
                        return this.callBase().concat((0, _uiScrollable.deviceDependentOptions)(), [{
                            device: function() {
                                return !_support.nativeScrolling
                            },
                            options: {
                                useNativeScrolling: false
                            }
                        }, {
                            device: function(device) {
                                return !_support.nativeScrolling && !_devices.default.isSimulator() && "desktop" === _devices.default.real().deviceType && "generic" === device.platform
                            },
                            options: {
                                showScrollbar: "onHover",
                                pageLoadMode: "nextButton"
                            }
                        }, {
                            device: function() {
                                return "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator()
                            },
                            options: {
                                focusStateEnabled: true
                            }
                        }, {
                            device: function() {
                                return (0, _themes.isMaterial)(themeName)
                            },
                            options: {
                                useInkRipple: true
                            }
                        }, {
                            device: function() {
                                return (0, _themes.isMaterialBased)(themeName)
                            },
                            options: {
                                pullingDownText: "",
                                pulledDownText: "",
                                refreshingText: "",
                                pageLoadingText: ""
                            }
                        }])
                    },
                    _visibilityChanged: function(visible) {
                        if (visible) {
                            this._updateLoadingState(true)
                        }
                    },
                    _itemClass: function() {
                        return "dx-list-item"
                    },
                    _itemDataKey: function() {
                        return "dxListItemData"
                    },
                    _itemContainer: function() {
                        return this._$container
                    },
                    _getItemsContainer: function() {
                        return this._$listContainer
                    },
                    _cleanItemContainer: function() {
                        this.callBase();
                        const listContainer = this._getItemsContainer();
                        (0, _renderer.default)(listContainer).empty();
                        listContainer.appendTo(this._$container)
                    },
                    _saveSelectionChangeEvent: function(e) {
                        this._selectionChangeEventInstance = e
                    },
                    _getSelectionChangeEvent: function() {
                        return this._selectionChangeEventInstance
                    },
                    _refreshItemElements: function() {
                        if (!this.option("grouped")) {
                            this._itemElementsCache = this._getItemsContainer().children(this._itemSelector())
                        } else {
                            this._itemElementsCache = this._getItemsContainer().children(".dx-list-group").children(".dx-list-group-body").children(this._itemSelector())
                        }
                    },
                    _modifyByChanges: function() {
                        this.callBase.apply(this, arguments);
                        this._refreshItemElements();
                        this._updateLoadingState(true)
                    },
                    reorderItem: function(itemElement, toItemElement) {
                        const promise = this.callBase(itemElement, toItemElement);
                        return promise.done((function() {
                            this._refreshItemElements()
                        }))
                    },
                    deleteItem: function(itemElement) {
                        const promise = this.callBase(itemElement);
                        return promise.done((function() {
                            this._refreshItemElements()
                        }))
                    },
                    _itemElements: function() {
                        return this._itemElementsCache
                    },
                    _itemSelectHandler: function(e) {
                        if ("single" === this.option("selectionMode") && this.isItemSelected(e.currentTarget)) {
                            return
                        }
                        return this.callBase(e)
                    },
                    _allowDynamicItemsAppend: function() {
                        return true
                    },
                    _init: function() {
                        this.callBase();
                        this._dataController.resetDataSourcePageIndex();
                        this._$container = this.$element();
                        this._$listContainer = (0, _renderer.default)("<div>").addClass("dx-list-items");
                        this._initScrollView();
                        this._feedbackShowTimeout = 70;
                        this._createGroupRenderAction()
                    },
                    _scrollBottomMode: function() {
                        return "scrollBottom" === this.option("pageLoadMode")
                    },
                    _nextButtonMode: function() {
                        return "nextButton" === this.option("pageLoadMode")
                    },
                    _dataSourceOptions: function() {
                        const scrollBottom = this._scrollBottomMode();
                        const nextButton = this._nextButtonMode();
                        return (0, _extend.extend)(this.callBase(), {
                            paginate: (0, _common.ensureDefined)(scrollBottom || nextButton, true)
                        })
                    },
                    _getGroupedOption: function() {
                        return this.option("grouped")
                    },
                    _getGroupContainerByIndex: function(groupIndex) {
                        return this._getItemsContainer().find(".".concat("dx-list-group")).eq(groupIndex).find(".".concat("dx-list-group-body"))
                    },
                    _dataSourceFromUrlLoadMode: function() {
                        return "raw"
                    },
                    _initScrollView: function() {
                        const scrollingEnabled = this.option("scrollingEnabled");
                        const pullRefreshEnabled = scrollingEnabled && this.option("pullRefreshEnabled");
                        const autoPagingEnabled = scrollingEnabled && this._scrollBottomMode() && !!this._dataController.getDataSource();
                        this._scrollView = this._createComponent(this.$element(), _scrollView || _scroll_view.default, {
                            height: this.option("height"),
                            width: this.option("width"),
                            disabled: this.option("disabled") || !scrollingEnabled,
                            onScroll: this._scrollHandler.bind(this),
                            onPullDown: pullRefreshEnabled ? this._pullDownHandler.bind(this) : null,
                            onReachBottom: autoPagingEnabled ? this._scrollBottomHandler.bind(this) : null,
                            showScrollbar: this.option("showScrollbar"),
                            useNative: this.option("useNativeScrolling"),
                            bounceEnabled: this.option("bounceEnabled"),
                            scrollByContent: this.option("scrollByContent"),
                            scrollByThumb: this.option("scrollByThumb"),
                            pullingDownText: this.option("pullingDownText"),
                            pulledDownText: this.option("pulledDownText"),
                            refreshingText: this.option("refreshingText"),
                            reachBottomText: this.option("pageLoadingText"),
                            useKeyboard: false
                        });
                        this._$container = (0, _renderer.default)(this._scrollView.content());
                        this._$listContainer.appendTo(this._$container);
                        this._toggleWrapItemText(this.option("wrapItemText"));
                        this._createScrollViewActions()
                    },
                    _toggleWrapItemText: function(value) {
                        this._$listContainer.toggleClass("dx-wrap-item-text", value)
                    },
                    _createScrollViewActions: function() {
                        this._scrollAction = this._createActionByOption("onScroll");
                        this._pullRefreshAction = this._createActionByOption("onPullRefresh");
                        this._pageLoadingAction = this._createActionByOption("onPageLoading")
                    },
                    _scrollHandler: function(e) {
                        this._scrollAction && this._scrollAction(e)
                    },
                    _initTemplates: function() {
                        this._templateManager.addDefaultTemplates({
                            group: new _bindable_template.BindableTemplate((function($container, data) {
                                if ((0, _type.isPlainObject)(data)) {
                                    if (data.key) {
                                        $container.text(data.key)
                                    }
                                } else {
                                    $container.text(String(data))
                                }
                            }), ["key"], this.option("integrationOptions.watchMethod"))
                        });
                        this.callBase()
                    },
                    _prepareDefaultItemTemplate: function(data, $container) {
                        this.callBase(data, $container);
                        if (data.icon) {
                            const $icon = (0, _icon.getImageContainer)(data.icon).addClass("dx-list-item-icon");
                            const $iconContainer = (0, _renderer.default)("<div>").addClass("dx-list-item-icon-container");
                            $iconContainer.append($icon);
                            $container.prepend($iconContainer)
                        }
                    },
                    _getBindableFields: function() {
                        return ["text", "html", "icon"]
                    },
                    _updateLoadingState: function(tryLoadMore) {
                        const dataController = this._dataController;
                        const shouldLoadNextPage = this._scrollBottomMode() && tryLoadMore && !dataController.isLoading() && !this._isLastPage();
                        if (this._shouldContinueLoading(shouldLoadNextPage)) {
                            this._infiniteDataLoading()
                        } else {
                            this._scrollView.release(!shouldLoadNextPage && !dataController.isLoading());
                            this._toggleNextButton(this._shouldRenderNextButton() && !this._isLastPage());
                            this._loadIndicationSuppressed(false)
                        }
                    },
                    _shouldRenderNextButton: function() {
                        return this._nextButtonMode() && this._dataController.isLoaded()
                    },
                    _isDataSourceFirstLoadCompleted: function(newValue) {
                        if ((0, _type.isDefined)(newValue)) {
                            this._isFirstLoadCompleted = newValue
                        }
                        return this._isFirstLoadCompleted
                    },
                    _dataSourceLoadingChangedHandler: function(isLoading) {
                        if (this._loadIndicationSuppressed()) {
                            return
                        }
                        if (isLoading && this.option("indicateLoading")) {
                            this._showLoadingIndicatorTimer = setTimeout(function() {
                                const isEmpty = !this._itemElements().length;
                                const shouldIndicateLoading = !isEmpty || this._isDataSourceFirstLoadCompleted();
                                if (shouldIndicateLoading) {
                                    var _this$_scrollView;
                                    null === (_this$_scrollView = this._scrollView) || void 0 === _this$_scrollView ? void 0 : _this$_scrollView.startLoading()
                                }
                            }.bind(this))
                        } else {
                            clearTimeout(this._showLoadingIndicatorTimer);
                            this._scrollView && this._scrollView.finishLoading()
                        }
                        if (!isLoading) {
                            this._isDataSourceFirstLoadCompleted(false)
                        }
                    },
                    _dataSourceChangedHandler: function() {
                        if (!this._shouldAppendItems() && (0, _window.hasWindow)()) {
                            this._scrollView && this._scrollView.scrollTo(0)
                        }
                        this.callBase.apply(this, arguments);
                        this._isDataSourceFirstLoadCompleted(true)
                    },
                    _refreshContent: function() {
                        this._prepareContent();
                        this._fireContentReadyAction()
                    },
                    _hideLoadingIfLoadIndicationOff: function() {
                        if (!this.option("indicateLoading")) {
                            this._dataSourceLoadingChangedHandler(false)
                        }
                    },
                    _loadIndicationSuppressed: function(value) {
                        if (!arguments.length) {
                            return this._isLoadIndicationSuppressed
                        }
                        this._isLoadIndicationSuppressed = value
                    },
                    _scrollViewIsFull: function() {
                        const scrollView = this._scrollView;
                        return !scrollView || (0, _size.getHeight)(scrollView.content()) > (0, _size.getHeight)(scrollView.container())
                    },
                    _pullDownHandler: function(e) {
                        this._pullRefreshAction(e);
                        const dataController = this._dataController;
                        if (dataController.getDataSource() && !dataController.isLoading()) {
                            this._clearSelectedItems();
                            dataController.pageIndex(0);
                            dataController.reload()
                        } else {
                            this._updateLoadingState()
                        }
                    },
                    _shouldContinueLoading: function(shouldLoadNextPage) {
                        var _this$_scrollView$scr, _this$_scrollView$scr2;
                        const isBottomReached = (0, _size.getHeight)(this._scrollView.content()) - (0, _size.getHeight)(this._scrollView.container()) < (null !== (_this$_scrollView$scr = null === (_this$_scrollView$scr2 = this._scrollView.scrollOffset()) || void 0 === _this$_scrollView$scr2 ? void 0 : _this$_scrollView$scr2.top) && void 0 !== _this$_scrollView$scr ? _this$_scrollView$scr : 0);
                        return shouldLoadNextPage && (!this._scrollViewIsFull() || isBottomReached)
                    },
                    _infiniteDataLoading: function() {
                        const isElementVisible = this.$element().is(":visible");
                        if (isElementVisible) {
                            clearTimeout(this._loadNextPageTimer);
                            this._loadNextPageTimer = setTimeout(() => {
                                this._loadNextPage()
                            })
                        }
                    },
                    _scrollBottomHandler: function(e) {
                        this._pageLoadingAction(e);
                        const dataController = this._dataController;
                        if (!dataController.isLoading() && !this._isLastPage()) {
                            this._loadNextPage()
                        } else {
                            this._updateLoadingState()
                        }
                    },
                    _renderItems: function(items) {
                        if (this.option("grouped")) {
                            (0, _iterator.each)(items, this._renderGroup.bind(this));
                            this._attachGroupCollapseEvent();
                            this._renderEmptyMessage();
                            if ((0, _themes.isMaterial)()) {
                                this.attachGroupHeaderInkRippleEvents()
                            }
                        } else {
                            this.callBase.apply(this, arguments)
                        }
                        this._refreshItemElements();
                        this._updateLoadingState(true)
                    },
                    _attachGroupCollapseEvent: function() {
                        const eventName = (0, _index.addNamespace)(_click.name, this.NAME);
                        const $element = this.$element();
                        const collapsibleGroups = this.option("collapsibleGroups");
                        $element.toggleClass("dx-list-collapsible-groups", collapsibleGroups);
                        _events_engine.default.off($element, eventName, ".dx-list-group-header");
                        if (collapsibleGroups) {
                            _events_engine.default.on($element, eventName, ".dx-list-group-header", function(e) {
                                this._createAction(function(e) {
                                    const $group = (0, _renderer.default)(e.event.currentTarget).parent();
                                    this._collapseGroupHandler($group);
                                    if (this.option("focusStateEnabled")) {
                                        this.option("focusedElement", (0, _element.getPublicElement)($group.find(".dx-list-item").eq(0)))
                                    }
                                }.bind(this), {
                                    validatingTargetName: "element"
                                })({
                                    event: e
                                })
                            }.bind(this))
                        }
                    },
                    _collapseGroupHandler: function($group, toggle) {
                        const deferred = new _deferred.Deferred;
                        if ($group.hasClass("dx-list-group-collapsed") === toggle) {
                            return deferred.resolve()
                        }
                        const $groupBody = $group.children(".dx-list-group-body");
                        const startHeight = (0, _size.getOuterHeight)($groupBody);
                        let endHeight = 0;
                        if (0 === startHeight) {
                            (0, _size.setHeight)($groupBody, "auto");
                            endHeight = (0, _size.getOuterHeight)($groupBody)
                        }
                        $group.toggleClass("dx-list-group-collapsed", toggle);
                        _fx.default.animate($groupBody, {
                            type: "custom",
                            from: {
                                height: startHeight
                            },
                            to: {
                                height: endHeight
                            },
                            duration: 200,
                            complete: function() {
                                this.updateDimensions();
                                this._updateLoadingState(true);
                                deferred.resolve()
                            }.bind(this)
                        });
                        return deferred.promise()
                    },
                    _dataSourceLoadErrorHandler: function() {
                        this._forgetNextPageLoading();
                        if (this._initialized) {
                            this._renderEmptyMessage();
                            this._updateLoadingState()
                        }
                    },
                    _initMarkup: function() {
                        this._itemElementsCache = (0, _renderer.default)();
                        this.$element().addClass("dx-list");
                        this.callBase();
                        this.option("useInkRipple") && this._renderInkRipple();
                        this.setAria({
                            role: "group",
                            roledescription: "list"
                        }, this.$element());
                        this.setAria({
                            role: "group"
                        }, this._focusTarget());
                        this._setListAria()
                    },
                    _setListAria() {
                        const {
                            items: items
                        } = this.option();
                        const listArea = null !== items && void 0 !== items && items.length ? {
                            role: "listbox",
                            label: "Items"
                        } : {
                            role: void 0,
                            label: void 0
                        };
                        this.setAria(listArea, this._$listContainer)
                    },
                    _focusTarget: function() {
                        return this._itemContainer()
                    },
                    _renderInkRipple: function() {
                        this._inkRipple = (0, _utils.render)()
                    },
                    _toggleActiveState: function($element, value, e) {
                        this.callBase.apply(this, arguments);
                        const that = this;
                        if (!this._inkRipple) {
                            return
                        }
                        const config = {
                            element: $element,
                            event: e
                        };
                        if (value) {
                            if ((0, _themes.isMaterial)()) {
                                this._inkRippleTimer = setTimeout((function() {
                                    that._inkRipple.showWave(config)
                                }), 35)
                            } else {
                                that._inkRipple.showWave(config)
                            }
                        } else {
                            clearTimeout(this._inkRippleTimer);
                            this._inkRipple.hideWave(config)
                        }
                    },
                    _postprocessRenderItem: function(args) {
                        this._refreshItemElements();
                        this.callBase.apply(this, arguments);
                        if (this.option("_swipeEnabled")) {
                            this._attachSwipeEvent((0, _renderer.default)(args.itemElement))
                        }
                    },
                    _attachSwipeEvent: function($itemElement) {
                        const endEventName = (0, _index.addNamespace)(_swipe.end, this.NAME);
                        _events_engine.default.on($itemElement, endEventName, this._itemSwipeEndHandler.bind(this))
                    },
                    _itemSwipeEndHandler: function(e) {
                        this._itemDXEventHandler(e, "onItemSwipe", {
                            direction: e.offset < 0 ? "left" : "right"
                        })
                    },
                    _nextButtonHandler: function(e) {
                        this._pageLoadingAction(e);
                        const dataController = this._dataController;
                        if (dataController.getDataSource() && !dataController.isLoading()) {
                            this._scrollView.toggleLoading(true);
                            this._$nextButton.detach();
                            this._loadIndicationSuppressed(true);
                            this._loadNextPage()
                        }
                    },
                    _renderGroup: function(index, group) {
                        const $groupElement = (0, _renderer.default)("<div>").addClass("dx-list-group").appendTo(this._getItemsContainer());
                        const id = "dx-".concat((new _guid.default).toString());
                        const groupAria = {
                            role: "group",
                            labelledby: id
                        };
                        this.setAria(groupAria, $groupElement);
                        const $groupHeaderElement = (0, _renderer.default)("<div>").addClass("dx-list-group-header").attr("id", id).appendTo($groupElement);
                        const groupTemplateName = this.option("groupTemplate");
                        const groupTemplate = this._getTemplate(group.template || groupTemplateName, group, index, $groupHeaderElement);
                        const renderArgs = {
                            index: index,
                            itemData: group,
                            container: (0, _element.getPublicElement)($groupHeaderElement)
                        };
                        this._createItemByTemplate(groupTemplate, renderArgs);
                        (0, _renderer.default)("<div>").addClass("dx-list-group-header-indicator").prependTo($groupHeaderElement);
                        this._renderingGroupIndex = index;
                        const $groupBody = (0, _renderer.default)("<div>").addClass("dx-list-group-body").appendTo($groupElement);
                        (0, _iterator.each)(groupItemsGetter(group) || [], function(itemIndex, item) {
                            this._renderItem({
                                group: index,
                                item: itemIndex
                            }, item, $groupBody)
                        }.bind(this));
                        this._groupRenderAction({
                            groupElement: (0, _element.getPublicElement)($groupElement),
                            groupIndex: index,
                            groupData: group
                        })
                    },
                    downInkRippleHandler: function(e) {
                        this._toggleActiveState((0, _renderer.default)(e.currentTarget), true, e)
                    },
                    upInkRippleHandler: function(e) {
                        this._toggleActiveState((0, _renderer.default)(e.currentTarget), false)
                    },
                    attachGroupHeaderInkRippleEvents: function() {
                        const $element = this.$element();
                        this._downInkRippleHandler = this._downInkRippleHandler || this.downInkRippleHandler.bind(this);
                        this._upInkRippleHandler = this._upInkRippleHandler || this.upInkRippleHandler.bind(this);
                        const downArguments = [$element, "dxpointerdown", ".dx-list-group-header", this._downInkRippleHandler];
                        const upArguments = [$element, "dxpointerup dxpointerout", ".dx-list-group-header", this._upInkRippleHandler];
                        _events_engine.default.off(...downArguments);
                        _events_engine.default.on(...downArguments);
                        _events_engine.default.off(...upArguments);
                        _events_engine.default.on(...upArguments)
                    },
                    _createGroupRenderAction: function() {
                        this._groupRenderAction = this._createActionByOption("onGroupRendered")
                    },
                    _clean: function() {
                        clearTimeout(this._inkRippleTimer);
                        if (this._$nextButton) {
                            this._$nextButton.remove();
                            this._$nextButton = null
                        }
                        this.callBase.apply(this, arguments)
                    },
                    _dispose: function() {
                        this._isDataSourceFirstLoadCompleted(false);
                        clearTimeout(this._holdTimer);
                        clearTimeout(this._loadNextPageTimer);
                        clearTimeout(this._showLoadingIndicatorTimer);
                        this.callBase()
                    },
                    _toggleDisabledState: function(value) {
                        this.callBase(value);
                        this._scrollView.option("disabled", value || !this.option("scrollingEnabled"))
                    },
                    _toggleNextButton: function(value) {
                        const dataController = this._dataController;
                        const $nextButton = this._getNextButton();
                        this.$element().toggleClass("dx-has-next", value);
                        if (value && dataController.isLoaded()) {
                            $nextButton.appendTo(this._itemContainer())
                        }
                        if (!value) {
                            $nextButton.detach()
                        }
                    },
                    _getNextButton: function() {
                        if (!this._$nextButton) {
                            this._$nextButton = this._createNextButton()
                        }
                        return this._$nextButton
                    },
                    _createNextButton: function() {
                        const $result = (0, _renderer.default)("<div>").addClass("dx-list-next-button");
                        const $button = (0, _renderer.default)("<div>").appendTo($result);
                        this._createComponent($button, _button.default, {
                            text: this.option("nextButtonText"),
                            onClick: this._nextButtonHandler.bind(this),
                            type: (0, _themes.isMaterialBased)() ? "default" : void 0,
                            integrationOptions: {}
                        });
                        return $result
                    },
                    _moveFocus: function() {
                        this.callBase.apply(this, arguments);
                        this.scrollToItem(this.option("focusedElement"))
                    },
                    _refresh: function() {
                        if (!(0, _window.hasWindow)()) {
                            this.callBase()
                        } else {
                            const scrollTop = this._scrollView.scrollTop();
                            this.callBase();
                            scrollTop && this._scrollView.scrollTo(scrollTop)
                        }
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "pageLoadMode":
                                this._toggleNextButton(args.value);
                                this._initScrollView();
                                break;
                            case "dataSource":
                                this.callBase(args);
                                this._initScrollView();
                                this._isDataSourceFirstLoadCompleted(false);
                                break;
                            case "items":
                                this.callBase(args);
                                this._isDataSourceFirstLoadCompleted(false);
                                break;
                            case "pullingDownText":
                            case "pulledDownText":
                            case "refreshingText":
                            case "pageLoadingText":
                            case "showScrollbar":
                            case "bounceEnabled":
                            case "scrollByContent":
                            case "scrollByThumb":
                            case "useNativeScrolling":
                            case "scrollingEnabled":
                            case "pullRefreshEnabled":
                                this._initScrollView();
                                this._updateLoadingState(true);
                                break;
                            case "nextButtonText":
                            case "onItemSwipe":
                            case "useInkRipple":
                                this._invalidate();
                                break;
                            case "onScroll":
                            case "onPullRefresh":
                            case "onPageLoading":
                                this._createScrollViewActions();
                                break;
                            case "grouped":
                            case "collapsibleGroups":
                            case "groupTemplate":
                                this._invalidate();
                                break;
                            case "wrapItemText":
                                this._toggleWrapItemText(args.value);
                                break;
                            case "onGroupRendered":
                                this._createGroupRenderAction();
                                break;
                            case "width":
                            case "height":
                                this.callBase(args);
                                this._scrollView.option(args.name, args.value);
                                this._scrollView.update();
                                break;
                            case "indicateLoading":
                                this._hideLoadingIfLoadIndicationOff();
                                break;
                            case "visible":
                                this.callBase(args);
                                this._scrollView.update();
                                break;
                            case "rtlEnabled":
                                this._initScrollView();
                                this.callBase(args);
                                break;
                            case "showChevronExpr":
                            case "badgeExpr":
                                this._invalidate();
                                break;
                            case "_swipeEnabled":
                            case "selectByClick":
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _extendActionArgs: function($itemElement) {
                        if (!this.option("grouped")) {
                            return this.callBase($itemElement)
                        }
                        const $group = $itemElement.closest(".dx-list-group");
                        const $item = $group.find(".dx-list-item");
                        return (0, _extend.extend)(this.callBase($itemElement), {
                            itemIndex: {
                                group: $group.index(),
                                item: $item.index($itemElement)
                            }
                        })
                    },
                    expandGroup: function(groupIndex) {
                        const deferred = new _deferred.Deferred;
                        const $group = this._getItemsContainer().find(".".concat("dx-list-group")).eq(groupIndex);
                        this._collapseGroupHandler($group, false).done(function() {
                            deferred.resolveWith(this)
                        }.bind(this));
                        return deferred.promise()
                    },
                    collapseGroup: function(groupIndex) {
                        const deferred = new _deferred.Deferred;
                        const $group = this._getItemsContainer().find(".".concat("dx-list-group")).eq(groupIndex);
                        this._collapseGroupHandler($group, true).done(function() {
                            deferred.resolveWith(this)
                        }.bind(this));
                        return deferred
                    },
                    updateDimensions: function() {
                        const that = this;
                        const deferred = new _deferred.Deferred;
                        if (that._scrollView) {
                            that._scrollView.update().done((function() {
                                !that._scrollViewIsFull() && that._updateLoadingState(true);
                                deferred.resolveWith(that)
                            }))
                        } else {
                            deferred.resolveWith(that)
                        }
                        return deferred.promise()
                    },
                    reload: function() {
                        this.callBase();
                        this.scrollTo(0);
                        this._pullDownHandler()
                    },
                    repaint: function() {
                        this.scrollTo(0);
                        this.callBase()
                    },
                    scrollTop: function() {
                        return this._scrollView.scrollOffset().top
                    },
                    clientHeight: function() {
                        return this._scrollView.clientHeight()
                    },
                    scrollHeight: function() {
                        return this._scrollView.scrollHeight()
                    },
                    scrollBy: function(distance) {
                        this._scrollView.scrollBy(distance)
                    },
                    scrollTo: function(location) {
                        this._scrollView.scrollTo(location)
                    },
                    scrollToItem: function(itemElement) {
                        const $item = this._editStrategy.getItemElement(itemElement);
                        const item = null === $item || void 0 === $item ? void 0 : $item.get(0);
                        this._scrollView.scrollToElement(item, {
                            bottom: (0, _get_element_style.getElementMargin)(item, "bottom")
                        })
                    },
                    _dimensionChanged: function() {
                        this.updateDimensions()
                    }
                }).include(_grouped_data_converter_mixin.default);
                exports.ListBase = ListBase;
                ListBase.ItemClass = _item.default
            },
        27445:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/list/ui.list.edit.decorator.context.js ***!
              \***************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _uiListEdit = _interopRequireDefault(__webpack_require__( /*! ./ui.list.edit.decorator_menu_helper */ 86976));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _uiListEdit2 = __webpack_require__( /*! ./ui.list.edit.decorator_registry */ 40245);
                var _uiListEdit3 = _interopRequireDefault(__webpack_require__( /*! ./ui.list.edit.decorator */ 61225));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../overlay/ui.overlay */ 89799));
                var _uiList = __webpack_require__( /*! ./ui.list.base */ 31583);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }(0, _uiListEdit2.register)("menu", "context", _uiListEdit3.default.inherit({
                    _init: function() {
                        const $menu = (0, _renderer.default)("<div>").addClass("dx-list-context-menu");
                        this._list.$element().append($menu);
                        this._menu = this._renderOverlay($menu)
                    },
                    _renderOverlay: function($element) {
                        return this._list._createComponent($element, _ui.default, {
                            shading: false,
                            deferRendering: true,
                            hideOnParentScroll: true,
                            hideOnOutsideClick: function(e) {
                                return !(0, _renderer.default)(e.target).closest(".dx-list-context-menu").length
                            },
                            animation: {
                                show: {
                                    type: "slide",
                                    duration: 300,
                                    from: {
                                        height: 0,
                                        opacity: 1
                                    },
                                    to: {
                                        height: function() {
                                            return (0, _size.getOuterHeight)(this._$menuList)
                                        }.bind(this),
                                        opacity: 1
                                    }
                                },
                                hide: {
                                    type: "slide",
                                    duration: 0,
                                    from: {
                                        opacity: 1
                                    },
                                    to: {
                                        opacity: 0
                                    }
                                }
                            },
                            _ignoreFunctionValueDeprecation: true,
                            height: function() {
                                return this._$menuList ? (0, _size.getOuterHeight)(this._$menuList) : 0
                            }.bind(this),
                            width: function() {
                                return (0, _size.getOuterWidth)(this._list.$element())
                            }.bind(this),
                            onContentReady: this._renderMenuContent.bind(this)
                        })
                    },
                    _renderMenuContent: function(e) {
                        const $overlayContent = e.component.$content();
                        const items = this._menuItems().slice();
                        if (this._deleteEnabled()) {
                            items.push({
                                text: _message.default.format("dxListEditDecorator-delete"),
                                action: this._deleteItem.bind(this)
                            })
                        }
                        this._$menuList = (0, _renderer.default)("<div>");
                        this._list._createComponent(this._$menuList, _uiList.ListBase, {
                            items: items,
                            onItemClick: this._menuItemClickHandler.bind(this),
                            height: "auto",
                            integrationOptions: {}
                        });
                        $overlayContent.addClass("dx-list-context-menucontent");
                        $overlayContent.append(this._$menuList)
                    },
                    _menuItemClickHandler: function(args) {
                        this._menu.hide();
                        this._fireMenuAction(this._$itemWithMenu, args.itemData.action)
                    },
                    _deleteItem: function() {
                        this._list.deleteItem(this._$itemWithMenu)
                    },
                    handleContextMenu: function($itemElement) {
                        this._$itemWithMenu = $itemElement;
                        this._menu.option({
                            position: {
                                my: "top",
                                at: "bottom",
                                of: $itemElement,
                                collision: "flip"
                            }
                        });
                        this._menu.show();
                        return true
                    },
                    dispose: function() {
                        if (this._menu) {
                            this._menu.$element().remove()
                        }
                        this.callBase.apply(this, arguments)
                    }
                }).include(_uiListEdit.default))
            },
        61225:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/list/ui.list.edit.decorator.js ***!
              \*******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 38377));
                var _swipe = __webpack_require__( /*! ../../events/swipe */ 34309);
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const SWIPE_START_EVENT_NAME = (0, _index.addNamespace)(_swipe.start, "dxListEditDecorator");
                const SWIPE_UPDATE_EVENT_NAME = (0, _index.addNamespace)(_swipe.swipe, "dxListEditDecorator");
                const SWIPE_END_EVENT_NAME = (0, _index.addNamespace)(_swipe.end, "dxListEditDecorator");
                const EditDecorator = _class.default.inherit({
                    ctor: function(list) {
                        this._list = list;
                        this._init()
                    },
                    _init: _common.noop,
                    _shouldHandleSwipe: false,
                    _attachSwipeEvent: function(config) {
                        const swipeConfig = {
                            itemSizeFunc: function() {
                                if (this._clearSwipeCache) {
                                    this._itemWidthCache = (0, _size.getWidth)(this._list.$element());
                                    this._clearSwipeCache = false
                                }
                                return this._itemWidthCache
                            }.bind(this)
                        };
                        _events_engine.default.on(config.$itemElement, SWIPE_START_EVENT_NAME, swipeConfig, this._itemSwipeStartHandler.bind(this));
                        _events_engine.default.on(config.$itemElement, SWIPE_UPDATE_EVENT_NAME, this._itemSwipeUpdateHandler.bind(this));
                        _events_engine.default.on(config.$itemElement, SWIPE_END_EVENT_NAME, this._itemSwipeEndHandler.bind(this))
                    },
                    _itemSwipeStartHandler: function(e) {
                        const $itemElement = (0, _renderer.default)(e.currentTarget);
                        if ($itemElement.is(".dx-state-disabled, .dx-state-disabled *")) {
                            e.cancel = true;
                            return
                        }
                        clearTimeout(this._list._inkRippleTimer);
                        this._swipeStartHandler($itemElement, e)
                    },
                    _itemSwipeUpdateHandler: function(e) {
                        const $itemElement = (0, _renderer.default)(e.currentTarget);
                        this._swipeUpdateHandler($itemElement, e)
                    },
                    _itemSwipeEndHandler: function(e) {
                        const $itemElement = (0, _renderer.default)(e.currentTarget);
                        this._swipeEndHandler($itemElement, e);
                        this._clearSwipeCache = true
                    },
                    beforeBag: _common.noop,
                    afterBag: _common.noop,
                    _commonOptions: function() {
                        return {
                            activeStateEnabled: this._list.option("activeStateEnabled"),
                            hoverStateEnabled: this._list.option("hoverStateEnabled"),
                            focusStateEnabled: this._list.option("focusStateEnabled")
                        }
                    },
                    modifyElement: function(config) {
                        if (this._shouldHandleSwipe) {
                            this._attachSwipeEvent(config);
                            this._clearSwipeCache = true
                        }
                    },
                    afterRender: _common.noop,
                    handleClick: _common.noop,
                    handleKeyboardEvents: _common.noop,
                    handleEnterPressing: _common.noop,
                    handleContextMenu: _common.noop,
                    _swipeStartHandler: _common.noop,
                    _swipeUpdateHandler: _common.noop,
                    _swipeEndHandler: _common.noop,
                    visibilityChange: _common.noop,
                    getExcludedSelectors: _common.noop,
                    dispose: _common.noop
                });
                var _default = EditDecorator;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        65436:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/list/ui.list.edit.decorator.reorder.js ***!
              \***************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _uiListEdit = __webpack_require__( /*! ./ui.list.edit.decorator_registry */ 40245);
                var _uiListEdit2 = _interopRequireDefault(__webpack_require__( /*! ./ui.list.edit.decorator */ 61225));
                var _sortable = _interopRequireDefault(__webpack_require__( /*! ../sortable */ 66843));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }(0, _uiListEdit.register)("reorder", "default", _uiListEdit2.default.inherit({
                    _init: function() {
                        const list = this._list;
                        this._groupedEnabled = this._list.option("grouped");
                        this._lockedDrag = false;
                        const filter = this._groupedEnabled ? "> .dx-list-items > .dx-list-group > .dx-list-group-body > .dx-list-item" : "> .dx-list-items > .dx-list-item";
                        this._sortable = list._createComponent(list._scrollView.content(), _sortable.default, (0, _extend.extend)({
                            component: list,
                            contentTemplate: null,
                            allowReordering: false,
                            filter: filter,
                            container: list.$element(),
                            dragDirection: list.option("itemDragging.group") ? "both" : "vertical",
                            handle: ".".concat("dx-list-reorder-handle"),
                            dragTemplate: this._dragTemplate,
                            onDragStart: this._dragStartHandler.bind(this),
                            onDragChange: this._dragChangeHandler.bind(this),
                            onReorder: this._reorderHandler.bind(this)
                        }, list.option("itemDragging")))
                    },
                    afterRender: function() {
                        this._sortable.update()
                    },
                    _dragTemplate: function(e) {
                        const result = (0, _renderer.default)(e.itemElement).clone().addClass("dx-list-item-ghost-reordering").addClass("dx-state-hover");
                        (0, _size.setWidth)(result, (0, _size.getWidth)(e.itemElement));
                        return result
                    },
                    _dragStartHandler: function(e) {
                        if (this._lockedDrag) {
                            e.cancel = true;
                            return
                        }
                    },
                    _dragChangeHandler: function(e) {
                        if (this._groupedEnabled && !this._sameParent(e.fromIndex, e.toIndex)) {
                            e.cancel = true;
                            return
                        }
                    },
                    _sameParent: function(fromIndex, toIndex) {
                        const $dragging = this._list.getItemElementByFlatIndex(fromIndex);
                        const $over = this._list.getItemElementByFlatIndex(toIndex);
                        return $over.parent().get(0) === $dragging.parent().get(0)
                    },
                    _reorderHandler: function(e) {
                        const $targetElement = this._list.getItemElementByFlatIndex(e.toIndex);
                        this._list.reorderItem((0, _renderer.default)(e.itemElement), $targetElement)
                    },
                    afterBag: function(config) {
                        const $handle = (0, _renderer.default)("<div>").addClass("dx-list-reorder-handle");
                        _events_engine.default.on($handle, "dxpointerdown", e => {
                            this._lockedDrag = !(0, _index.isMouseEvent)(e)
                        });
                        _events_engine.default.on($handle, "dxhold", {
                            timeout: 30
                        }, e => {
                            e.cancel = true;
                            this._lockedDrag = false
                        });
                        config.$container.addClass("dx-list-reorder-handle-container").append($handle)
                    }
                }))
            },
        81362:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/list/ui.list.edit.decorator.selection.js ***!
              \*****************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _click = __webpack_require__( /*! ../../events/click */ 95429);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.errors */ 96688));
                var _check_box = _interopRequireDefault(__webpack_require__( /*! ../check_box */ 18859));
                var _radio_button = _interopRequireDefault(__webpack_require__( /*! ../radio_group/radio_button */ 6282));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _uiListEdit = __webpack_require__( /*! ./ui.list.edit.decorator_registry */ 40245);
                var _uiListEdit2 = _interopRequireDefault(__webpack_require__( /*! ./ui.list.edit.decorator */ 61225));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const CLICK_EVENT_NAME = (0, _index.addNamespace)(_click.name, "dxListEditDecorator");
                (0, _uiListEdit.register)("selection", "default", _uiListEdit2.default.inherit({
                    _init: function() {
                        this.callBase.apply(this, arguments);
                        const selectionMode = this._list.option("selectionMode");
                        this._singleStrategy = "single" === selectionMode;
                        this._containerClass = this._singleStrategy ? "dx-list-select-radiobutton-container" : "dx-list-select-checkbox-container";
                        this._controlClass = this._singleStrategy ? "dx-list-select-radiobutton" : "dx-list-select-checkbox";
                        this._controlWidget = this._singleStrategy ? _radio_button.default : _check_box.default;
                        this._list.$element().addClass("dx-list-select-decorator-enabled")
                    },
                    beforeBag: function(config) {
                        const $itemElement = config.$itemElement;
                        const $container = config.$container.addClass(this._containerClass);
                        const $control = (0, _renderer.default)("<div>").addClass(this._controlClass).appendTo($container);
                        new this._controlWidget($control, (0, _extend.extend)(this._commonOptions(), {
                            value: this._isSelected($itemElement),
                            elementAttr: {
                                "aria-label": "Check State"
                            },
                            focusStateEnabled: false,
                            hoverStateEnabled: false,
                            onValueChanged: function(e) {
                                e.event && this._list._saveSelectionChangeEvent(e.event);
                                this._processCheckedState($itemElement, e.value);
                                e.event && e.event.stopPropagation()
                            }.bind(this)
                        }))
                    },
                    modifyElement: function(config) {
                        this.callBase.apply(this, arguments);
                        const $itemElement = config.$itemElement;
                        const control = this._controlWidget.getInstance($itemElement.find("." + this._controlClass));
                        _events_engine.default.on($itemElement, "stateChanged", function(e, state) {
                            control.option("value", state)
                        }.bind(this))
                    },
                    _updateSelectAllState: function() {
                        if (!this._$selectAll) {
                            return
                        }
                        this._selectAllCheckBox.option("value", this._list.isSelectAll())
                    },
                    afterRender: function() {
                        if ("all" !== this._list.option("selectionMode")) {
                            return
                        }
                        if (!this._$selectAll) {
                            this._renderSelectAll()
                        } else {
                            this._updateSelectAllState()
                        }
                    },
                    handleKeyboardEvents: function(currentFocusedIndex, moveFocusUp) {
                        const moveFocusDown = !moveFocusUp;
                        const list = this._list;
                        const $selectAll = this._$selectAll;
                        const lastItemIndex = list._getLastItemIndex();
                        const isFocusOutOfList = moveFocusUp && 0 === currentFocusedIndex || moveFocusDown && currentFocusedIndex === lastItemIndex;
                        const hasSelectAllItem = !!$selectAll;
                        if (hasSelectAllItem && isFocusOutOfList) {
                            list.option("focusedElement", $selectAll);
                            list.scrollToItem(list.option("focusedElement"));
                            return true
                        }
                        return false
                    },
                    handleEnterPressing: function(e) {
                        if (this._$selectAll && this._$selectAll.hasClass("dx-state-focused")) {
                            e.target = this._$selectAll.get(0);
                            this._list._saveSelectionChangeEvent(e);
                            this._selectAllCheckBox.option("value", !this._selectAllCheckBox.option("value"));
                            return true
                        }
                    },
                    _renderSelectAll: function() {
                        const $selectAll = this._$selectAll = (0, _renderer.default)("<div>").addClass("dx-list-select-all");
                        const list = this._list;
                        const downArrowHandler = list._supportedKeys().downArrow.bind(list);
                        this._selectAllCheckBox = list._createComponent((0, _renderer.default)("<div>").addClass("dx-list-select-all-checkbox").appendTo($selectAll), _check_box.default, {
                            elementAttr: {
                                "aria-label": "Select All"
                            },
                            focusStateEnabled: false,
                            hoverStateEnabled: false
                        });
                        this._selectAllCheckBox.registerKeyHandler("downArrow", downArrowHandler);
                        (0, _renderer.default)("<div>").addClass("dx-list-select-all-label").text(this._list.option("selectAllText")).appendTo($selectAll);
                        this._list.itemsContainer().prepend($selectAll);
                        this._updateSelectAllState();
                        this._attachSelectAllHandler()
                    },
                    _attachSelectAllHandler: function() {
                        this._selectAllCheckBox.option("onValueChanged", this._selectAllHandler.bind(this));
                        _events_engine.default.off(this._$selectAll, CLICK_EVENT_NAME);
                        _events_engine.default.on(this._$selectAll, CLICK_EVENT_NAME, this._selectAllClickHandler.bind(this))
                    },
                    _selectAllHandler: function(e) {
                        e.event && e.event.stopPropagation();
                        const isSelectedAll = this._selectAllCheckBox.option("value");
                        e.event && this._list._saveSelectionChangeEvent(e.event);
                        if (true === isSelectedAll) {
                            this._selectAllItems()
                        } else if (false === isSelectedAll) {
                            this._unselectAllItems()
                        }
                        this._list._createActionByOption("onSelectAllValueChanged")({
                            value: isSelectedAll
                        })
                    },
                    _checkSelectAllCapability: function() {
                        const list = this._list;
                        const dataController = list._dataController;
                        if ("allPages" === list.option("selectAllMode") && list.option("grouped") && !dataController.group()) {
                            _ui.default.log("W1010");
                            return false
                        }
                        return true
                    },
                    _selectAllItems: function() {
                        if (!this._checkSelectAllCapability()) {
                            return
                        }
                        this._list._selection.selectAll("page" === this._list.option("selectAllMode"))
                    },
                    _unselectAllItems: function() {
                        if (!this._checkSelectAllCapability()) {
                            return
                        }
                        this._list._selection.deselectAll("page" === this._list.option("selectAllMode"))
                    },
                    _selectAllClickHandler: function(e) {
                        this._list._saveSelectionChangeEvent(e);
                        this._selectAllCheckBox.option("value", !this._selectAllCheckBox.option("value"))
                    },
                    _isSelected: function($itemElement) {
                        return this._list.isItemSelected($itemElement)
                    },
                    _processCheckedState: function($itemElement, checked) {
                        if (checked) {
                            this._list.selectItem($itemElement)
                        } else {
                            this._list.unselectItem($itemElement)
                        }
                    },
                    dispose: function() {
                        this._disposeSelectAll();
                        this._list.$element().removeClass("dx-list-select-decorator-enabled");
                        this.callBase.apply(this, arguments)
                    },
                    _disposeSelectAll: function() {
                        if (this._$selectAll) {
                            this._$selectAll.remove();
                            this._$selectAll = null
                        }
                    }
                }))
            },
        47970:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/list/ui.list.edit.decorator.static.js ***!
              \**************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _button = _interopRequireDefault(__webpack_require__( /*! ../button */ 63008));
                var _uiListEdit = __webpack_require__( /*! ./ui.list.edit.decorator_registry */ 40245);
                var _uiListEdit2 = _interopRequireDefault(__webpack_require__( /*! ./ui.list.edit.decorator */ 61225));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }(0, _uiListEdit.register)("delete", "static", _uiListEdit2.default.inherit({
                    afterBag: function(config) {
                        const $itemElement = config.$itemElement;
                        const $container = config.$container;
                        const $button = (0, _renderer.default)("<div>").addClass("dx-list-static-delete-button");
                        this._list._createComponent($button, _button.default, {
                            icon: "remove",
                            onClick: function(args) {
                                args.event.stopPropagation();
                                this._deleteItem($itemElement)
                            }.bind(this),
                            integrationOptions: {}
                        });
                        $container.addClass("dx-list-static-delete-button-container").append($button)
                    },
                    _deleteItem: function($itemElement) {
                        if ($itemElement.is(".dx-state-disabled, .dx-state-disabled *")) {
                            return
                        }
                        this._list.deleteItem($itemElement)
                    }
                }))
            },
        33329:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/list/ui.list.edit.decorator.swipe.js ***!
              \*************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _translator = __webpack_require__( /*! ../../animation/translator */ 31648);
                var _fx = _interopRequireDefault(__webpack_require__( /*! ../../animation/fx */ 87209));
                var _uiListEdit = __webpack_require__( /*! ./ui.list.edit.decorator_registry */ 40245);
                var _uiListEdit2 = _interopRequireDefault(__webpack_require__( /*! ./ui.list.edit.decorator */ 61225));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }(0, _uiListEdit.register)("delete", "swipe", _uiListEdit2.default.inherit({
                    _shouldHandleSwipe: true,
                    _renderItemPosition: function($itemElement, offset, animate) {
                        const deferred = new _deferred.Deferred;
                        const itemOffset = offset * this._itemElementWidth;
                        if (animate) {
                            _fx.default.animate($itemElement, {
                                to: {
                                    left: itemOffset
                                },
                                type: "slide",
                                complete: function() {
                                    deferred.resolve($itemElement, offset)
                                }
                            })
                        } else {
                            (0, _translator.move)($itemElement, {
                                left: itemOffset
                            });
                            deferred.resolve()
                        }
                        return deferred.promise()
                    },
                    _swipeStartHandler: function($itemElement) {
                        this._itemElementWidth = (0, _size.getWidth)($itemElement);
                        return true
                    },
                    _swipeUpdateHandler: function($itemElement, args) {
                        this._renderItemPosition($itemElement, args.offset);
                        return true
                    },
                    _swipeEndHandler: function($itemElement, args) {
                        const offset = args.targetOffset;
                        this._renderItemPosition($itemElement, offset, true).done(function($itemElement, offset) {
                            if (Math.abs(offset)) {
                                this._list.deleteItem($itemElement).fail(function() {
                                    this._renderItemPosition($itemElement, 0, true)
                                }.bind(this))
                            }
                        }.bind(this));
                        return true
                    }
                }))
            },
        96782:
            /*!*************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/list/ui.list.edit.decorator.switchable.button.js ***!
              \*************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _fx = _interopRequireDefault(__webpack_require__( /*! ../../animation/fx */ 87209));
                var _button = _interopRequireDefault(__webpack_require__( /*! ../button */ 63008));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _uiListEdit = __webpack_require__( /*! ./ui.list.edit.decorator_registry */ 40245);
                var _uiListEditDecorator = _interopRequireDefault(__webpack_require__( /*! ./ui.list.edit.decorator.switchable */ 81139));
                var _themes = __webpack_require__( /*! ../themes */ 75811);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const SwitchableButtonEditDecorator = _uiListEditDecorator.default.inherit({
                    _init: function() {
                        this.callBase.apply(this, arguments);
                        const $buttonContainer = (0, _renderer.default)("<div>").addClass("dx-list-switchable-delete-button-container");
                        const $buttonWrapper = (0, _renderer.default)("<div>").addClass("dx-list-switchable-delete-button-wrapper");
                        const $buttonInnerWrapper = (0, _renderer.default)("<div>").addClass("dx-list-switchable-delete-button-inner-wrapper");
                        const $button = (0, _renderer.default)("<div>").addClass("dx-list-switchable-delete-button");
                        this._list._createComponent($button, _button.default, {
                            text: _message.default.format("dxListEditDecorator-delete"),
                            type: "danger",
                            stylingMode: (0, _themes.isMaterialBased)() ? "text" : "contained",
                            onClick: function(e) {
                                this._deleteItem();
                                e.event.stopPropagation()
                            }.bind(this),
                            integrationOptions: {}
                        });
                        $buttonContainer.append($buttonWrapper);
                        $buttonWrapper.append($buttonInnerWrapper);
                        $buttonInnerWrapper.append($button);
                        this._$buttonContainer = $buttonContainer
                    },
                    _enablePositioning: function($itemElement) {
                        this.callBase.apply(this, arguments);
                        _fx.default.stop(this._$buttonContainer, true);
                        this._$buttonContainer.appendTo($itemElement)
                    },
                    _disablePositioning: function() {
                        this.callBase.apply(this, arguments);
                        this._$buttonContainer.detach()
                    },
                    _animatePrepareDeleteReady: function() {
                        const rtl = this._isRtlEnabled();
                        const listWidth = (0, _size.getWidth)(this._list.$element());
                        const buttonWidth = this._buttonWidth();
                        const fromValue = rtl ? listWidth : -buttonWidth;
                        const toValue = rtl ? listWidth - buttonWidth : 0;
                        return _fx.default.animate(this._$buttonContainer, {
                            type: "custom",
                            duration: 200,
                            from: {
                                right: fromValue
                            },
                            to: {
                                right: toValue
                            }
                        })
                    },
                    _animateForgetDeleteReady: function() {
                        const rtl = this._isRtlEnabled();
                        const listWidth = (0, _size.getWidth)(this._list.$element());
                        const buttonWidth = this._buttonWidth();
                        const fromValue = rtl ? listWidth - buttonWidth : 0;
                        const toValue = rtl ? listWidth : -buttonWidth;
                        return _fx.default.animate(this._$buttonContainer, {
                            type: "custom",
                            duration: 200,
                            from: {
                                right: fromValue
                            },
                            to: {
                                right: toValue
                            }
                        })
                    },
                    _buttonWidth: function() {
                        if (!this._buttonContainerWidth) {
                            this._buttonContainerWidth = (0, _size.getOuterWidth)(this._$buttonContainer)
                        }
                        return this._buttonContainerWidth
                    },
                    dispose: function() {
                        if (this._$buttonContainer) {
                            this._$buttonContainer.remove()
                        }
                        this.callBase.apply(this, arguments)
                    }
                });
                (0, _uiListEdit.register)("delete", "toggle", SwitchableButtonEditDecorator.inherit({
                    beforeBag: function(config) {
                        const $itemElement = config.$itemElement;
                        const $container = config.$container;
                        const $toggle = (0, _renderer.default)("<div>").addClass("dx-list-toggle-delete-switch");
                        this._list._createComponent($toggle, _button.default, {
                            icon: "toggle-delete",
                            onClick: function(e) {
                                _fx.default.stop(this._$buttonContainer, false);
                                this._toggleDeleteReady($itemElement);
                                e.event.stopPropagation()
                            }.bind(this),
                            integrationOptions: {}
                        });
                        $container.addClass("dx-list-toggle-delete-switch-container");
                        $container.append($toggle)
                    }
                }));
                (0, _uiListEdit.register)("delete", "slideButton", SwitchableButtonEditDecorator.inherit({
                    _shouldHandleSwipe: true,
                    _swipeEndHandler: function($itemElement, args) {
                        if (0 !== args.targetOffset) {
                            _fx.default.stop(this._$buttonContainer, false);
                            this._toggleDeleteReady($itemElement)
                        }
                        return true
                    }
                }));
                var _default = SwitchableButtonEditDecorator;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        81139:
            /*!******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/list/ui.list.edit.decorator.switchable.js ***!
              \******************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _uiListEdit = _interopRequireDefault(__webpack_require__( /*! ./ui.list.edit.decorator */ 61225));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../events/pointer */ 93786));
                var _emitter = __webpack_require__( /*! ../../events/core/emitter.feedback */ 91633);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const abstract = _uiListEdit.default.abstract;
                const POINTER_DOWN_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.down, "dxListEditDecorator");
                const ACTIVE_EVENT_NAME = (0, _index.addNamespace)(_emitter.active, "dxListEditDecorator");
                const SwitchableEditDecorator = _uiListEdit.default.inherit({
                    _init: function() {
                        this._$topShield = (0, _renderer.default)("<div>").addClass("dx-list-switchable-delete-top-shield");
                        this._$bottomShield = (0, _renderer.default)("<div>").addClass("dx-list-switchable-delete-bottom-shield");
                        this._$itemContentShield = (0, _renderer.default)("<div>").addClass("dx-list-switchable-delete-item-content-shield");
                        _events_engine.default.on(this._$topShield, POINTER_DOWN_EVENT_NAME, this._cancelDeleteReadyItem.bind(this));
                        _events_engine.default.on(this._$bottomShield, POINTER_DOWN_EVENT_NAME, this._cancelDeleteReadyItem.bind(this));
                        this._list.$element().append(this._$topShield.toggle(false)).append(this._$bottomShield.toggle(false))
                    },
                    handleClick: function() {
                        return this._cancelDeleteReadyItem()
                    },
                    _cancelDeleteReadyItem: function() {
                        if (!this._$readyToDeleteItem) {
                            return false
                        }
                        this._cancelDelete(this._$readyToDeleteItem);
                        return true
                    },
                    _cancelDelete: function($itemElement) {
                        this._toggleDeleteReady($itemElement, false)
                    },
                    _toggleDeleteReady: function($itemElement, readyToDelete) {
                        if (void 0 === readyToDelete) {
                            readyToDelete = !this._isReadyToDelete($itemElement)
                        }
                        this._toggleShields($itemElement, readyToDelete);
                        this._toggleScrolling(readyToDelete);
                        this._cacheReadyToDeleteItem($itemElement, readyToDelete);
                        this._animateToggleDelete($itemElement, readyToDelete)
                    },
                    _isReadyToDelete: function($itemElement) {
                        return $itemElement.hasClass("dx-list-switchable-delete-ready")
                    },
                    _toggleShields: function($itemElement, enabled) {
                        this._list.$element().toggleClass("dx-list-switchable-menu-shield-positioning", enabled);
                        this._$topShield.toggle(enabled);
                        this._$bottomShield.toggle(enabled);
                        if (enabled) {
                            this._updateShieldsHeight($itemElement)
                        }
                        this._toggleContentShield($itemElement, enabled)
                    },
                    _updateShieldsHeight: function($itemElement) {
                        const $list = this._list.$element();
                        const listTopOffset = $list.offset().top;
                        const listHeight = (0, _size.getOuterHeight)($list);
                        const itemTopOffset = $itemElement.offset().top;
                        const itemHeight = (0, _size.getOuterHeight)($itemElement);
                        const dirtyTopShieldHeight = itemTopOffset - listTopOffset;
                        const dirtyBottomShieldHeight = listHeight - itemHeight - dirtyTopShieldHeight;
                        (0, _size.setHeight)(this._$topShield, Math.max(dirtyTopShieldHeight, 0));
                        (0, _size.setHeight)(this._$bottomShield, Math.max(dirtyBottomShieldHeight, 0))
                    },
                    _toggleContentShield: function($itemElement, enabled) {
                        if (enabled) {
                            $itemElement.find(".dx-list-item-content").first().append(this._$itemContentShield)
                        } else {
                            this._$itemContentShield.detach()
                        }
                    },
                    _toggleScrolling: function(readyToDelete) {
                        const scrollView = this._list.$element().dxScrollView("instance");
                        if (readyToDelete) {
                            scrollView.on("start", this._cancelScrolling)
                        } else {
                            scrollView.off("start", this._cancelScrolling)
                        }
                    },
                    _cancelScrolling: function(args) {
                        args.event.cancel = true
                    },
                    _cacheReadyToDeleteItem: function($itemElement, cache) {
                        if (cache) {
                            this._$readyToDeleteItem = $itemElement
                        } else {
                            delete this._$readyToDeleteItem
                        }
                    },
                    _animateToggleDelete: function($itemElement, readyToDelete) {
                        if (readyToDelete) {
                            this._enablePositioning($itemElement);
                            this._prepareDeleteReady($itemElement);
                            this._animatePrepareDeleteReady($itemElement);
                            _events_engine.default.off($itemElement, _pointer.default.up)
                        } else {
                            this._forgetDeleteReady($itemElement);
                            this._animateForgetDeleteReady($itemElement).done(this._disablePositioning.bind(this, $itemElement))
                        }
                    },
                    _enablePositioning: function($itemElement) {
                        $itemElement.addClass("dx-list-switchable-menu-item-shield-positioning");
                        _events_engine.default.on($itemElement, ACTIVE_EVENT_NAME, _common.noop);
                        _events_engine.default.one($itemElement, _pointer.default.up, this._disablePositioning.bind(this, $itemElement))
                    },
                    _disablePositioning: function($itemElement) {
                        $itemElement.removeClass("dx-list-switchable-menu-item-shield-positioning");
                        _events_engine.default.off($itemElement, ACTIVE_EVENT_NAME)
                    },
                    _prepareDeleteReady: function($itemElement) {
                        $itemElement.addClass("dx-list-switchable-delete-ready")
                    },
                    _forgetDeleteReady: function($itemElement) {
                        $itemElement.removeClass("dx-list-switchable-delete-ready")
                    },
                    _animatePrepareDeleteReady: abstract,
                    _animateForgetDeleteReady: abstract,
                    _getDeleteButtonContainer: function($itemElement) {
                        $itemElement = $itemElement || this._$readyToDeleteItem;
                        return $itemElement.children(".dx-list-switchable-delete-button-container")
                    },
                    _deleteItem: function($itemElement) {
                        $itemElement = $itemElement || this._$readyToDeleteItem;
                        this._getDeleteButtonContainer($itemElement).detach();
                        if ($itemElement.is(".dx-state-disabled, .dx-state-disabled *")) {
                            return
                        }
                        this._list.deleteItem($itemElement).always(this._cancelDelete.bind(this, $itemElement))
                    },
                    _isRtlEnabled: function() {
                        return this._list.option("rtlEnabled")
                    },
                    dispose: function() {
                        if (this._$topShield) {
                            this._$topShield.remove()
                        }
                        if (this._$bottomShield) {
                            this._$bottomShield.remove()
                        }
                        this.callBase.apply(this, arguments)
                    }
                });
                var _default = SwitchableEditDecorator;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        36279:
            /*!************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/list/ui.list.edit.decorator.switchable.slide.js ***!
              \************************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _click = __webpack_require__( /*! ../../events/click */ 95429);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _translator = __webpack_require__( /*! ../../animation/translator */ 31648);
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _emitter = __webpack_require__( /*! ../../events/core/emitter.feedback */ 91633);
                var _uiListEdit = _interopRequireDefault(__webpack_require__( /*! ./ui.list.edit.decorator_menu_helper */ 86976));
                var _uiListEdit2 = __webpack_require__( /*! ./ui.list.edit.decorator_registry */ 40245);
                var _uiListEditDecorator = _interopRequireDefault(__webpack_require__( /*! ./ui.list.edit.decorator.switchable */ 81139));
                var _fx = _interopRequireDefault(__webpack_require__( /*! ../../animation/fx */ 87209));
                var _themes = __webpack_require__( /*! ../themes */ 75811);
                var _action_sheet = _interopRequireDefault(__webpack_require__( /*! ../action_sheet */ 81476));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const CLICK_EVENT_NAME = (0, _index.addNamespace)(_click.name, "dxListEditDecorator");
                const ACTIVE_EVENT_NAME = (0, _index.addNamespace)(_emitter.active, "dxListEditDecorator");
                (0, _uiListEdit2.register)("menu", "slide", _uiListEditDecorator.default.inherit({
                    _shouldHandleSwipe: true,
                    _init: function() {
                        this.callBase.apply(this, arguments);
                        this._$buttonsContainer = (0, _renderer.default)("<div>").addClass("dx-list-slide-menu-buttons-container");
                        _events_engine.default.on(this._$buttonsContainer, ACTIVE_EVENT_NAME, _common.noop);
                        this._$buttons = (0, _renderer.default)("<div>").addClass("dx-list-slide-menu-buttons").appendTo(this._$buttonsContainer);
                        this._renderMenu();
                        this._renderDeleteButton()
                    },
                    _renderMenu: function() {
                        if (!this._menuEnabled()) {
                            return
                        }
                        const menuItems = this._menuItems();
                        if (1 === menuItems.length) {
                            const menuItem = menuItems[0];
                            this._renderMenuButton(menuItem.text, function(e) {
                                e.stopPropagation();
                                this._fireAction(menuItem)
                            }.bind(this))
                        } else {
                            const $menu = (0, _renderer.default)("<div>").addClass("dx-list-slide-menu");
                            this._menu = this._list._createComponent($menu, _action_sheet.default, {
                                showTitle: false,
                                items: menuItems,
                                onItemClick: function(args) {
                                    this._fireAction(args.itemData)
                                }.bind(this),
                                integrationOptions: {}
                            });
                            $menu.appendTo(this._list.$element());
                            const $menuButton = this._renderMenuButton(_message.default.format("dxListEditDecorator-more"), function(e) {
                                e.stopPropagation();
                                this._menu.show()
                            }.bind(this));
                            this._menu.option("target", $menuButton)
                        }
                    },
                    _renderMenuButton: function(text, action) {
                        const $menuButton = (0, _renderer.default)("<div>").addClass("dx-list-slide-menu-button").addClass("dx-list-slide-menu-button-menu").text(text);
                        this._$buttons.append($menuButton);
                        _events_engine.default.on($menuButton, CLICK_EVENT_NAME, action);
                        return $menuButton
                    },
                    _renderDeleteButton: function() {
                        if (!this._deleteEnabled()) {
                            return
                        }
                        const $deleteButton = (0, _renderer.default)("<div>").addClass("dx-list-slide-menu-button").addClass("dx-list-slide-menu-button-delete").text((0, _themes.isMaterialBased)() ? "" : _message.default.format("dxListEditDecorator-delete"));
                        _events_engine.default.on($deleteButton, CLICK_EVENT_NAME, function(e) {
                            e.stopPropagation();
                            this._deleteItem()
                        }.bind(this));
                        this._$buttons.append($deleteButton)
                    },
                    _fireAction: function(menuItem) {
                        this._fireMenuAction((0, _renderer.default)(this._cachedNode), menuItem.action);
                        this._cancelDeleteReadyItem()
                    },
                    modifyElement: function(config) {
                        this.callBase.apply(this, arguments);
                        const $itemElement = config.$itemElement;
                        $itemElement.addClass("dx-list-slide-menu-wrapper");
                        const $slideMenuContent = (0, _renderer.default)("<div>").addClass("dx-list-slide-menu-content");
                        $itemElement.wrapInner($slideMenuContent)
                    },
                    _getDeleteButtonContainer: function() {
                        return this._$buttonsContainer
                    },
                    handleClick: function(_, e) {
                        if ((0, _renderer.default)(e.target).closest(".dx-list-slide-menu-content").length) {
                            return this.callBase.apply(this, arguments)
                        }
                        return false
                    },
                    _swipeStartHandler: function($itemElement) {
                        this._enablePositioning($itemElement);
                        this._cacheItemData($itemElement);
                        this._setPositions(this._getPositions(0))
                    },
                    _swipeUpdateHandler: function($itemElement, args) {
                        const rtl = this._isRtlEnabled();
                        const signCorrection = rtl ? -1 : 1;
                        const isItemReadyToDelete = this._isReadyToDelete($itemElement);
                        const moveJustStarted = this._getCurrentPositions().content === this._getStartPositions().content;
                        if (moveJustStarted && !isItemReadyToDelete && args.offset * signCorrection > 0) {
                            args.cancel = true;
                            return
                        }
                        const offset = this._cachedItemWidth * args.offset;
                        const startOffset = isItemReadyToDelete ? -this._cachedButtonWidth * signCorrection : 0;
                        const correctedOffset = (offset + startOffset) * signCorrection;
                        const percent = correctedOffset < 0 ? Math.abs((offset + startOffset) / this._cachedButtonWidth) : 0;
                        this._setPositions(this._getPositions(percent));
                        return true
                    },
                    _getStartPositions: function() {
                        const rtl = this._isRtlEnabled();
                        const signCorrection = rtl ? -1 : 1;
                        return {
                            content: 0,
                            buttonsContainer: rtl ? -this._cachedButtonWidth : this._cachedItemWidth,
                            buttons: -this._cachedButtonWidth * signCorrection
                        }
                    },
                    _getPositions: function(percent) {
                        const rtl = this._isRtlEnabled();
                        const signCorrection = rtl ? -1 : 1;
                        const startPositions = this._getStartPositions();
                        return {
                            content: startPositions.content - percent * this._cachedButtonWidth * signCorrection,
                            buttonsContainer: startPositions.buttonsContainer - Math.min(percent, 1) * this._cachedButtonWidth * signCorrection,
                            buttons: startPositions.buttons + Math.min(percent, 1) * this._cachedButtonWidth * signCorrection
                        }
                    },
                    _getCurrentPositions: function() {
                        return {
                            content: (0, _translator.locate)(this._$cachedContent).left,
                            buttonsContainer: (0, _translator.locate)(this._$buttonsContainer).left,
                            buttons: (0, _translator.locate)(this._$buttons).left
                        }
                    },
                    _setPositions: function(positions) {
                        (0, _translator.move)(this._$cachedContent, {
                            left: positions.content
                        });
                        (0, _translator.move)(this._$buttonsContainer, {
                            left: positions.buttonsContainer
                        });
                        (0, _translator.move)(this._$buttons, {
                            left: positions.buttons
                        })
                    },
                    _cacheItemData: function($itemElement) {
                        if ($itemElement[0] === this._cachedNode) {
                            return
                        }
                        this._$cachedContent = $itemElement.find(".dx-list-slide-menu-content");
                        this._cachedItemWidth = (0, _size.getOuterWidth)($itemElement);
                        this._cachedButtonWidth = this._cachedButtonWidth || (0, _size.getOuterWidth)(this._$buttons);
                        (0, _size.setWidth)(this._$buttonsContainer, this._cachedButtonWidth);
                        if (this._$cachedContent.length) {
                            this._cachedNode = $itemElement[0]
                        }
                    },
                    _minButtonContainerLeftOffset: function() {
                        return this._cachedItemWidth - this._cachedButtonWidth
                    },
                    _swipeEndHandler: function($itemElement, args) {
                        this._cacheItemData($itemElement);
                        const signCorrection = this._isRtlEnabled() ? 1 : -1;
                        const offset = this._cachedItemWidth * args.offset;
                        const endedAtReadyToDelete = !this._isReadyToDelete($itemElement) && offset * signCorrection > .2 * this._cachedButtonWidth;
                        const readyToDelete = args.targetOffset === signCorrection && endedAtReadyToDelete;
                        this._toggleDeleteReady($itemElement, readyToDelete);
                        return true
                    },
                    _enablePositioning: function($itemElement) {
                        _fx.default.stop(this._$cachedContent, true);
                        this.callBase.apply(this, arguments);
                        this._$buttonsContainer.appendTo($itemElement)
                    },
                    _disablePositioning: function() {
                        this.callBase.apply(this, arguments);
                        this._$buttonsContainer.detach()
                    },
                    _animatePrepareDeleteReady: function() {
                        return this._animateToPositions(this._getPositions(1))
                    },
                    _animateForgetDeleteReady: function($itemElement) {
                        this._cacheItemData($itemElement);
                        return this._animateToPositions(this._getPositions(0))
                    },
                    _animateToPositions: function(positions) {
                        const that = this;
                        const currentPosition = this._getCurrentPositions();
                        const durationTimePart = Math.min(Math.abs(currentPosition.content - positions.content) / this._cachedButtonWidth, 1);
                        return _fx.default.animate(this._$cachedContent, {
                            from: currentPosition,
                            to: positions,
                            easing: "cubic-bezier(0.075, 0.82, 0.165, 1)",
                            duration: 400 * durationTimePart,
                            strategy: "frame",
                            draw: function(positions) {
                                that._setPositions(positions)
                            }
                        })
                    },
                    dispose: function() {
                        if (this._menu) {
                            this._menu.$element().remove()
                        }
                        if (this._$buttonsContainer) {
                            this._$buttonsContainer.remove()
                        }
                        this.callBase.apply(this, arguments)
                    }
                }).include(_uiListEdit.default))
            },
        86976:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/list/ui.list.edit.decorator_menu_helper.js ***!
              \*******************************************************************************************/
            function(module, exports) {
                exports.default = void 0;
                var _default = {
                    _menuEnabled: function() {
                        return !!this._menuItems().length
                    },
                    _menuItems: function() {
                        return this._list.option("menuItems")
                    },
                    _deleteEnabled: function() {
                        return this._list.option("allowItemDeleting")
                    },
                    _fireMenuAction: function($itemElement, action) {
                        this._list._itemEventHandlerByHandler($itemElement, action, {}, {
                            excludeValidators: ["disabled", "readOnly"]
                        })
                    }
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        40245:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/list/ui.list.edit.decorator_registry.js ***!
              \****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.register = function(option, type, decoratorClass) {
                    const decoratorsRegistry = registry;
                    const decoratorConfig = {};
                    decoratorConfig[option] = decoratorsRegistry[option] ? decoratorsRegistry[option] : {};
                    decoratorConfig[option][type] = decoratorClass;
                    (0, _extend.extend)(decoratorsRegistry, decoratorConfig)
                };
                exports.registry = void 0;
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                const registry = {};
                exports.registry = registry
            },
        77834:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/list/ui.list.edit.js ***!
              \*********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _uiListEditStrategy = _interopRequireDefault(__webpack_require__( /*! ./ui.list.edit.strategy.grouped */ 24232));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _uiListEdit = _interopRequireDefault(__webpack_require__( /*! ./ui.list.edit.provider */ 85057));
                var _uiList = __webpack_require__( /*! ./ui.list.base */ 31583);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const ListEdit = _uiList.ListBase.inherit({
                    _supportedKeys() {
                        const that = this;
                        const parent = this.callBase();
                        const moveFocusedItem = (e, moveUp) => {
                            const editStrategy = this._editStrategy;
                            const focusedElement = this.option("focusedElement");
                            const focusedItemIndex = editStrategy.getNormalizedIndex(focusedElement);
                            const isLastIndexFocused = focusedItemIndex === this._getLastItemIndex();
                            if (isLastIndexFocused && this._dataController.isLoading()) {
                                return
                            }
                            if (e.shiftKey && that.option("itemDragging.allowReordering")) {
                                const nextItemIndex = focusedItemIndex + (moveUp ? -1 : 1);
                                const $nextItem = editStrategy.getItemElement(nextItemIndex);
                                this.reorderItem(focusedElement, $nextItem);
                                this.scrollToItem(focusedElement);
                                e.preventDefault()
                            } else {
                                const editProvider = this._editProvider;
                                const isInternalMoving = editProvider.handleKeyboardEvents(focusedItemIndex, moveUp);
                                if (!isInternalMoving) {
                                    moveUp ? parent.upArrow(e) : parent.downArrow(e)
                                }
                            }
                        };
                        return (0, _extend.extend)({}, parent, {
                            del: e => {
                                if (that.option("allowItemDeleting")) {
                                    e.preventDefault();
                                    that.deleteItem(that.option("focusedElement"))
                                }
                            },
                            upArrow: e => moveFocusedItem(e, true),
                            downArrow: e => moveFocusedItem(e),
                            enter: function(e) {
                                if (!this._editProvider.handleEnterPressing(e)) {
                                    parent.enter.apply(this, arguments)
                                }
                            },
                            space: function(e) {
                                if (!this._editProvider.handleEnterPressing(e)) {
                                    parent.space.apply(this, arguments)
                                }
                            }
                        })
                    },
                    _updateSelection() {
                        this._editProvider.afterItemsRendered();
                        this.callBase()
                    },
                    _getLastItemIndex() {
                        return this._itemElements().length - 1
                    },
                    _refreshItemElements() {
                        this.callBase();
                        const excludedSelectors = this._editProvider.getExcludedItemSelectors();
                        if (excludedSelectors.length) {
                            this._itemElementsCache = this._itemElementsCache.not(excludedSelectors)
                        }
                    },
                    _isItemStrictEquals: function(item1, item2) {
                        const privateKey = item1 && item1.__dx_key__;
                        if (privateKey && !this.key() && this._selection.isItemSelected(privateKey)) {
                            return false
                        }
                        return this.callBase(item1, item2)
                    },
                    _getDefaultOptions() {
                        return (0, _extend.extend)(this.callBase(), {
                            showSelectionControls: false,
                            selectionMode: "none",
                            selectAllMode: "page",
                            onSelectAllValueChanged: null,
                            selectAllText: _message.default.format("dxList-selectAll"),
                            menuItems: [],
                            menuMode: "context",
                            allowItemDeleting: false,
                            itemDeleteMode: "static",
                            itemDragging: {}
                        })
                    },
                    _defaultOptionsRules() {
                        return this.callBase().concat([{
                            device: device => "ios" === device.platform,
                            options: {
                                menuMode: "slide",
                                itemDeleteMode: "slideItem"
                            }
                        }, {
                            device: {
                                platform: "android"
                            },
                            options: {
                                itemDeleteMode: "swipe"
                            }
                        }])
                    },
                    _init() {
                        this.callBase();
                        this._initEditProvider()
                    },
                    _initDataSource() {
                        this.callBase();
                        if (!this._isPageSelectAll()) {
                            this._dataSource && this._dataSource.requireTotalCount(true)
                        }
                    },
                    _isPageSelectAll() {
                        return "page" === this.option("selectAllMode")
                    },
                    _initEditProvider() {
                        this._editProvider = new _uiListEdit.default(this)
                    },
                    _disposeEditProvider() {
                        if (this._editProvider) {
                            this._editProvider.dispose()
                        }
                    },
                    _refreshEditProvider() {
                        this._disposeEditProvider();
                        this._initEditProvider()
                    },
                    _initEditStrategy() {
                        if (this.option("grouped")) {
                            this._editStrategy = new _uiListEditStrategy.default(this)
                        } else {
                            this.callBase()
                        }
                    },
                    _initMarkup() {
                        this._refreshEditProvider();
                        this.callBase()
                    },
                    _renderItems() {
                        this.callBase(...arguments);
                        this._editProvider.afterItemsRendered()
                    },
                    _selectedItemClass: () => "dx-list-item-selected",
                    _itemResponseWaitClass: () => "dx-list-item-response-wait",
                    _itemClickHandler(e) {
                        const $itemElement = (0, _renderer.default)(e.currentTarget);
                        if ($itemElement.is(".dx-state-disabled, .dx-state-disabled *")) {
                            return
                        }
                        const handledByEditProvider = this._editProvider.handleClick($itemElement, e);
                        if (handledByEditProvider) {
                            return
                        }
                        this._saveSelectionChangeEvent(e);
                        this.callBase(...arguments)
                    },
                    _shouldFireContextMenuEvent() {
                        return this.callBase(...arguments) || this._editProvider.contextMenuHandlerExists()
                    },
                    _itemHoldHandler(e) {
                        const $itemElement = (0, _renderer.default)(e.currentTarget);
                        if ($itemElement.is(".dx-state-disabled, .dx-state-disabled *")) {
                            return
                        }
                        const handledByEditProvider = (0, _index.isTouchEvent)(e) && this._editProvider.handleContextMenu($itemElement, e);
                        if (handledByEditProvider) {
                            e.handledByEditProvider = true;
                            return
                        }
                        this.callBase(...arguments)
                    },
                    _getItemContainer: function(changeData) {
                        if (this.option("grouped")) {
                            var _this$_editStrategy$g;
                            const groupIndex = null === (_this$_editStrategy$g = this._editStrategy.getIndexByItemData(changeData)) || void 0 === _this$_editStrategy$g ? void 0 : _this$_editStrategy$g.group;
                            return this._getGroupContainerByIndex(groupIndex)
                        } else {
                            return this.callBase(changeData)
                        }
                    },
                    _itemContextMenuHandler(e) {
                        const $itemElement = (0, _renderer.default)(e.currentTarget);
                        if ($itemElement.is(".dx-state-disabled, .dx-state-disabled *")) {
                            return
                        }
                        const handledByEditProvider = !e.handledByEditProvider && this._editProvider.handleContextMenu($itemElement, e);
                        if (handledByEditProvider) {
                            e.preventDefault();
                            return
                        }
                        this.callBase(...arguments)
                    },
                    _postprocessRenderItem(args) {
                        this.callBase(...arguments);
                        this._editProvider.modifyItemElement(args)
                    },
                    _clean() {
                        this._disposeEditProvider();
                        this.callBase()
                    },
                    focusListItem(index) {
                        const $item = this._editStrategy.getItemElement(index);
                        this.option("focusedElement", $item);
                        this.focus();
                        this.scrollToItem(this.option("focusedElement"))
                    },
                    _optionChanged(args) {
                        switch (args.name) {
                            case "selectAllMode":
                                this._initDataSource();
                                this._dataController.pageIndex(0);
                                this._dataController.load();
                                break;
                            case "grouped":
                                this._clearSelectedItems();
                                delete this._renderingGroupIndex;
                                this._initEditStrategy();
                                this.callBase(args);
                                break;
                            case "showSelectionControls":
                            case "menuItems":
                            case "menuMode":
                            case "allowItemDeleting":
                            case "itemDeleteMode":
                            case "itemDragging":
                            case "selectAllText":
                                this._invalidate();
                                break;
                            case "onSelectAllValueChanged":
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    selectAll() {
                        return this._selection.selectAll(this._isPageSelectAll())
                    },
                    unselectAll() {
                        return this._selection.deselectAll(this._isPageSelectAll())
                    },
                    isSelectAll() {
                        return this._selection.getSelectAllState(this._isPageSelectAll())
                    },
                    getFlatIndexByItemElement(itemElement) {
                        return this._itemElements().index(itemElement)
                    },
                    getItemElementByFlatIndex(flatIndex) {
                        const $itemElements = this._itemElements();
                        if (flatIndex < 0 || flatIndex >= $itemElements.length) {
                            return (0, _renderer.default)()
                        }
                        return $itemElements.eq(flatIndex)
                    },
                    getItemByIndex(index) {
                        return this._editStrategy.getItemDataByIndex(index)
                    },
                    deleteItem(itemElement) {
                        const editStrategy = this._editStrategy;
                        const deletingElementIndex = editStrategy.getNormalizedIndex(itemElement);
                        const focusedElement = this.option("focusedElement");
                        const focusedItemIndex = focusedElement ? editStrategy.getNormalizedIndex(focusedElement) : deletingElementIndex;
                        const isLastIndexFocused = focusedItemIndex === this._getLastItemIndex();
                        const nextFocusedItem = isLastIndexFocused || deletingElementIndex < focusedItemIndex ? focusedItemIndex - 1 : focusedItemIndex;
                        const promise = this.callBase(itemElement);
                        return promise.done((function() {
                            return this.focusListItem(nextFocusedItem)
                        }))
                    }
                });
                var _default = ListEdit;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        85057:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/list/ui.list.edit.provider.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 38377));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.errors */ 96688));
                var _uiListEdit = __webpack_require__( /*! ./ui.list.edit.decorator_registry */ 40245);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const editOptionsRegistry = [];
                const registerOption = function(enabledFunc, decoratorTypeFunc, decoratorSubTypeFunc) {
                    editOptionsRegistry.push({
                        enabled: enabledFunc,
                        decoratorType: decoratorTypeFunc,
                        decoratorSubType: decoratorSubTypeFunc
                    })
                };
                registerOption((function() {
                    return this.option("menuItems").length
                }), (function() {
                    return "menu"
                }), (function() {
                    return this.option("menuMode")
                }));
                registerOption((function() {
                    return !this.option("menuItems").length && this.option("allowItemDeleting")
                }), (function() {
                    const mode = this.option("itemDeleteMode");
                    return "toggle" === mode || "slideButton" === mode || "swipe" === mode || "static" === mode ? "delete" : "menu"
                }), (function() {
                    let mode = this.option("itemDeleteMode");
                    if ("slideItem" === mode) {
                        mode = "slide"
                    }
                    return mode
                }));
                registerOption((function() {
                    return "none" !== this.option("selectionMode") && this.option("showSelectionControls")
                }), (function() {
                    return "selection"
                }), (function() {
                    return "default"
                }));
                registerOption((function() {
                    return this.option("itemDragging.allowReordering") || this.option("itemDragging.allowDropInsideItem") || this.option("itemDragging.group")
                }), (function() {
                    return "reorder"
                }), (function() {
                    return "default"
                }));
                const EditProvider = _class.default.inherit({
                    ctor: function(list) {
                        this._list = list;
                        this._fetchRequiredDecorators()
                    },
                    dispose: function() {
                        if (this._decorators && this._decorators.length) {
                            (0, _iterator.each)(this._decorators, (function(_, decorator) {
                                decorator.dispose()
                            }))
                        }
                    },
                    _fetchRequiredDecorators: function() {
                        this._decorators = [];
                        (0, _iterator.each)(editOptionsRegistry, function(_, option) {
                            const optionEnabled = option.enabled.call(this._list);
                            if (optionEnabled) {
                                const decoratorType = option.decoratorType.call(this._list);
                                const decoratorSubType = option.decoratorSubType.call(this._list);
                                const decorator = this._createDecorator(decoratorType, decoratorSubType);
                                this._decorators.push(decorator)
                            }
                        }.bind(this))
                    },
                    _createDecorator: function(type, subType) {
                        const decoratorClass = this._findDecorator(type, subType);
                        return new decoratorClass(this._list)
                    },
                    _findDecorator: function(type, subType) {
                        var _registry$type;
                        const foundDecorator = null === (_registry$type = _uiListEdit.registry[type]) || void 0 === _registry$type ? void 0 : _registry$type[subType];
                        if (!foundDecorator) {
                            throw _ui.default.Error("E1012", type, subType)
                        }
                        return foundDecorator
                    },
                    modifyItemElement: function(args) {
                        const $itemElement = (0, _renderer.default)(args.itemElement);
                        const config = {
                            $itemElement: $itemElement
                        };
                        this._prependBeforeBags($itemElement, config);
                        this._appendAfterBags($itemElement, config);
                        this._applyDecorators("modifyElement", config)
                    },
                    afterItemsRendered: function() {
                        this._applyDecorators("afterRender")
                    },
                    _prependBeforeBags: function($itemElement, config) {
                        const $beforeBags = this._collectDecoratorsMarkup("beforeBag", config, "dx-list-item-before-bag");
                        $itemElement.prepend($beforeBags)
                    },
                    _appendAfterBags: function($itemElement, config) {
                        const $afterBags = this._collectDecoratorsMarkup("afterBag", config, "dx-list-item-after-bag");
                        $itemElement.append($afterBags)
                    },
                    _collectDecoratorsMarkup: function(method, config, containerClass) {
                        const $collector = (0, _renderer.default)("<div>");
                        (0, _iterator.each)(this._decorators, (function() {
                            const $container = (0, _renderer.default)("<div>").addClass(containerClass);
                            this[method]((0, _extend.extend)({
                                $container: $container
                            }, config));
                            if ($container.children().length) {
                                $collector.append($container)
                            }
                        }));
                        return $collector.children()
                    },
                    _applyDecorators: function(method, config) {
                        (0, _iterator.each)(this._decorators, (function() {
                            this[method](config)
                        }))
                    },
                    _handlerExists: function(name) {
                        if (!this._decorators) {
                            return false
                        }
                        const decorators = this._decorators;
                        const length = decorators.length;
                        for (let i = 0; i < length; i++) {
                            if (decorators[i][name] !== _common.noop) {
                                return true
                            }
                        }
                        return false
                    },
                    _eventHandler: function(name, $itemElement, e) {
                        if (!this._decorators) {
                            return false
                        }
                        let response = false;
                        const decorators = this._decorators;
                        const length = decorators.length;
                        for (let i = 0; i < length; i++) {
                            response = decorators[i][name]($itemElement, e);
                            if (response) {
                                break
                            }
                        }
                        return response
                    },
                    handleClick: function($itemElement, e) {
                        return this._eventHandler("handleClick", $itemElement, e)
                    },
                    handleKeyboardEvents: function(currentFocusedIndex, moveFocusUp) {
                        return this._eventHandler("handleKeyboardEvents", currentFocusedIndex, moveFocusUp)
                    },
                    handleEnterPressing: function(e) {
                        return this._eventHandler("handleEnterPressing", e)
                    },
                    contextMenuHandlerExists: function() {
                        return this._handlerExists("handleContextMenu")
                    },
                    handleContextMenu: function($itemElement, e) {
                        return this._eventHandler("handleContextMenu", $itemElement, e)
                    },
                    getExcludedItemSelectors: function() {
                        const excludedSelectors = [];
                        this._applyDecorators("getExcludedSelectors", excludedSelectors);
                        return excludedSelectors.join(",")
                    }
                });
                var _default = EditProvider;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        27473:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/list/ui.list.edit.search.js ***!
              \****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _uiList = _interopRequireDefault(__webpack_require__( /*! ./ui.list.edit */ 77834));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.search_box_mixin */ 2630));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const ListSearch = _uiList.default.inherit(_ui.default).inherit({
                    _addWidgetPrefix: function(className) {
                        return "dx-list-" + className
                    },
                    _getCombinedFilter: function() {
                        const dataController = this._dataController;
                        const storeLoadOptions = {
                            filter: dataController.filter()
                        };
                        dataController.addSearchFilter(storeLoadOptions);
                        const filter = storeLoadOptions.filter;
                        return filter
                    },
                    _initDataSource: function() {
                        const value = this.option("searchValue");
                        const expr = this.option("searchExpr");
                        const mode = this.option("searchMode");
                        this.callBase();
                        const dataController = this._dataController;
                        value && value.length && dataController.searchValue(value);
                        mode.length && dataController.searchOperation(_ui.default.getOperationBySearchMode(mode));
                        expr && dataController.searchExpr(expr)
                    }
                });
                var _default = ListSearch;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        24232:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/list/ui.list.edit.strategy.grouped.js ***!
              \**************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _store_helper = _interopRequireDefault(__webpack_require__( /*! ../../data/store_helper */ 99236));
                var _query = _interopRequireDefault(__webpack_require__( /*! ../../data/query */ 96687));
                var _uiCollection_widgetEditStrategy = _interopRequireDefault(__webpack_require__( /*! ../collection/ui.collection_widget.edit.strategy.plain */ 14174));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const combineIndex = function(indices) {
                    return (indices.group << 20) + indices.item
                };
                const splitIndex = function(combinedIndex) {
                    return {
                        group: combinedIndex >> 20,
                        item: 1048575 & combinedIndex
                    }
                };
                const GroupedEditStrategy = _uiCollection_widgetEditStrategy.default.inherit({
                    _groupElements: function() {
                        return this._collectionWidget._itemContainer().find(".dx-list-group")
                    },
                    _groupItemElements: function($group) {
                        return $group.find(".dx-list-item")
                    },
                    getIndexByItemData: function(itemData) {
                        const groups = this._collectionWidget.option("items");
                        let index = false;
                        if (!itemData) {
                            return false
                        }
                        if (itemData.items && itemData.items.length) {
                            itemData = itemData.items[0]
                        }(0, _iterator.each)(groups, (function(groupIndex, group) {
                            if (!group.items) {
                                return false
                            }(0, _iterator.each)(group.items, (function(itemIndex, item) {
                                if (item !== itemData) {
                                    return true
                                }
                                index = {
                                    group: groupIndex,
                                    item: itemIndex
                                };
                                return false
                            }));
                            if (index) {
                                return false
                            }
                        }));
                        return index
                    },
                    getItemDataByIndex: function(index) {
                        const items = this._collectionWidget.option("items");
                        if ((0, _type.isNumeric)(index)) {
                            return this.itemsGetter()[index]
                        }
                        return index && items[index.group] && items[index.group].items[index.item] || null
                    },
                    itemsGetter: function() {
                        let resultItems = [];
                        const items = this._collectionWidget.option("items");
                        for (let i = 0; i < items.length; i++) {
                            if (items[i] && items[i].items) {
                                resultItems = resultItems.concat(items[i].items)
                            } else {
                                resultItems.push(items[i])
                            }
                        }
                        return resultItems
                    },
                    deleteItemAtIndex: function(index) {
                        const indices = splitIndex(index);
                        const itemGroup = this._collectionWidget.option("items")[indices.group].items;
                        itemGroup.splice(indices.item, 1)
                    },
                    getKeysByItems: function(items) {
                        let plainItems = [];
                        let i;
                        for (i = 0; i < items.length; i++) {
                            if (items[i] && items[i].items) {
                                plainItems = plainItems.concat(items[i].items)
                            } else {
                                plainItems.push(items[i])
                            }
                        }
                        const result = [];
                        for (i = 0; i < plainItems.length; i++) {
                            result.push(this._collectionWidget.keyOf(plainItems[i]))
                        }
                        return result
                    },
                    getIndexByKey: function(key, items) {
                        const groups = items || this._collectionWidget.option("items");
                        let index = -1;
                        const that = this;
                        (0, _iterator.each)(groups, (function(groupIndex, group) {
                            if (!group.items) {
                                return
                            }(0, _iterator.each)(group.items, (function(itemIndex, item) {
                                const itemKey = that._collectionWidget.keyOf(item);
                                if (that._equalKeys(itemKey, key)) {
                                    index = {
                                        group: groupIndex,
                                        item: itemIndex
                                    };
                                    return false
                                }
                            }));
                            if (-1 !== index) {
                                return false
                            }
                        }));
                        return index
                    },
                    _getGroups: function(items) {
                        const dataController = this._collectionWidget._dataController;
                        const group = dataController.group();
                        if (group) {
                            return _store_helper.default.queryByOptions((0, _query.default)(items), {
                                group: group
                            }).toArray()
                        }
                        return this._collectionWidget.option("items")
                    },
                    getItemsByKeys: function(keys, items) {
                        const result = [];
                        const groups = this._getGroups(items);
                        const groupItemByKeyMap = {};
                        const getItemMeta = key => {
                            const index = this.getIndexByKey(key, groups);
                            const group = index && groups[index.group];
                            if (!group) {
                                return
                            }
                            return {
                                groupKey: group.key,
                                item: group.items[index.item]
                            }
                        };
                        (0, _iterator.each)(keys, (function(_, key) {
                            const itemMeta = getItemMeta(key);
                            if (!itemMeta) {
                                return
                            }
                            const groupKey = itemMeta.groupKey;
                            const item = itemMeta.item;
                            let selectedGroup = groupItemByKeyMap[groupKey];
                            if (!selectedGroup) {
                                selectedGroup = {
                                    key: groupKey,
                                    items: []
                                };
                                groupItemByKeyMap[groupKey] = selectedGroup;
                                result.push(selectedGroup)
                            }
                            selectedGroup.items.push(item)
                        }));
                        return result
                    },
                    moveItemAtIndexToIndex: function(movingIndex, destinationIndex) {
                        const items = this._collectionWidget.option("items");
                        const movingIndices = splitIndex(movingIndex);
                        const destinationIndices = splitIndex(destinationIndex);
                        const movingItemGroup = items[movingIndices.group].items;
                        const destinationItemGroup = items[destinationIndices.group].items;
                        const movedItemData = movingItemGroup[movingIndices.item];
                        movingItemGroup.splice(movingIndices.item, 1);
                        destinationItemGroup.splice(destinationIndices.item, 0, movedItemData)
                    },
                    _isItemIndex: function(index) {
                        return index && (0, _type.isNumeric)(index.group) && (0, _type.isNumeric)(index.item)
                    },
                    _getNormalizedItemIndex: function(itemElement) {
                        const $item = (0, _renderer.default)(itemElement);
                        const $group = $item.closest(".dx-list-group");
                        if (!$group.length) {
                            return -1
                        }
                        return combineIndex({
                            group: this._groupElements().index($group),
                            item: this._groupItemElements($group).index($item)
                        })
                    },
                    _normalizeItemIndex: function(index) {
                        return combineIndex(index)
                    },
                    _denormalizeItemIndex: function(index) {
                        return splitIndex(index)
                    },
                    _getItemByNormalizedIndex: function(index) {
                        const indices = splitIndex(index);
                        const $group = this._groupElements().eq(indices.group);
                        return this._groupItemElements($group).eq(indices.item)
                    },
                    _itemsFromSameParent: function(firstIndex, secondIndex) {
                        return splitIndex(firstIndex).group === splitIndex(secondIndex).group
                    }
                });
                var _default = GroupedEditStrategy;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        56757:
            /*!**************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/list_light.js ***!
              \**************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _uiListEdit = _interopRequireDefault(__webpack_require__( /*! ./list/ui.list.edit.search */ 27473));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }(0, _component_registrator.default)("dxList", _uiListEdit.default);
                var _default = _uiListEdit.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        2492:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/load_indicator.js ***!
              \******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _support = __webpack_require__( /*! ../core/utils/support */ 60137);
                var _themes = __webpack_require__( /*! ./themes */ 75811);
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../core/devices */ 20530));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./widget/ui.widget */ 14390));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const navigator = (0, _window.getNavigator)();
                const LoadIndicator = _ui.default.inherit({
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            indicatorSrc: "",
                            activeStateEnabled: false,
                            hoverStateEnabled: false,
                            _animatingSegmentCount: 1,
                            _animatingSegmentInner: false
                        })
                    },
                    _defaultOptionsRules: function() {
                        const themeName = (0, _themes.current)();
                        return this.callBase().concat([{
                            device: function() {
                                const realDevice = _devices.default.real();
                                const obsoleteAndroid = "android" === realDevice.platform && !/chrome/i.test(navigator.userAgent);
                                return obsoleteAndroid
                            },
                            options: {
                                viaImage: true
                            }
                        }, {
                            device: function() {
                                return (0, _themes.isMaterialBased)(themeName)
                            },
                            options: {
                                _animatingSegmentCount: 2,
                                _animatingSegmentInner: true
                            }
                        }, {
                            device: function() {
                                return (0, _themes.isGeneric)(themeName)
                            },
                            options: {
                                _animatingSegmentCount: 7
                            }
                        }])
                    },
                    _useTemplates: function() {
                        return false
                    },
                    _init: function() {
                        this.callBase();
                        this.$element().addClass("dx-loadindicator")
                    },
                    _initMarkup: function() {
                        this.callBase();
                        this._renderWrapper();
                        this._renderIndicatorContent();
                        this._renderMarkup()
                    },
                    _renderWrapper: function() {
                        this._$wrapper = (0, _renderer.default)("<div>").addClass("dx-loadindicator-wrapper");
                        this.$element().append(this._$wrapper)
                    },
                    _renderIndicatorContent: function() {
                        this._$content = (0, _renderer.default)("<div>").addClass("dx-loadindicator-content");
                        this._$wrapper.append(this._$content)
                    },
                    _renderMarkup: function() {
                        const {
                            viaImage: viaImage,
                            indicatorSrc: indicatorSrc
                        } = this.option();
                        if ((0, _support.animation)() && !viaImage && !indicatorSrc) {
                            this._renderMarkupForAnimation()
                        } else {
                            this._renderMarkupForImage()
                        }
                    },
                    _renderMarkupForAnimation: function() {
                        const animatingSegmentInner = this.option("_animatingSegmentInner");
                        this._$indicator = (0, _renderer.default)("<div>").addClass("dx-loadindicator-icon");
                        this._$content.append(this._$indicator);
                        for (let i = this.option("_animatingSegmentCount"); i >= 0; --i) {
                            const $segment = (0, _renderer.default)("<div>").addClass("dx-loadindicator-segment").addClass("dx-loadindicator-segment" + i);
                            if (animatingSegmentInner) {
                                $segment.append((0, _renderer.default)("<div>").addClass("dx-loadindicator-segment-inner"))
                            }
                            this._$indicator.append($segment)
                        }
                    },
                    _renderMarkupForImage: function() {
                        const {
                            indicatorSrc: indicatorSrc
                        } = this.option();
                        if (indicatorSrc) {
                            this._$wrapper.addClass("dx-loadindicator-image");
                            this._$wrapper.css("backgroundImage", "url(" + indicatorSrc + ")")
                        } else if ((0, _support.animation)()) {
                            this._renderMarkupForAnimation()
                        }
                    },
                    _renderDimensions: function() {
                        this.callBase();
                        this._updateContentSizeForAnimation()
                    },
                    _updateContentSizeForAnimation: function() {
                        if (!this._$indicator) {
                            return
                        }
                        let width = this.option("width");
                        let height = this.option("height");
                        if (width || height) {
                            width = (0, _size.getWidth)(this.$element());
                            height = (0, _size.getHeight)(this.$element());
                            const minDimension = Math.min(height, width);
                            this._$wrapper.css({
                                height: minDimension,
                                width: minDimension,
                                fontSize: minDimension
                            })
                        }
                    },
                    _clean: function() {
                        this.callBase();
                        this._removeMarkupForAnimation();
                        this._removeMarkupForImage()
                    },
                    _removeMarkupForAnimation: function() {
                        if (!this._$indicator) {
                            return
                        }
                        this._$indicator.remove();
                        delete this._$indicator
                    },
                    _removeMarkupForImage: function() {
                        this._$wrapper.css("backgroundImage", "none")
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "_animatingSegmentCount":
                            case "_animatingSegmentInner":
                            case "indicatorSrc":
                                this._invalidate();
                                break;
                            default:
                                this.callBase(args)
                        }
                    }
                });
                (0, _component_registrator.default)("dxLoadIndicator", LoadIndicator);
                var _default = LoadIndicator;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        97218:
            /*!**************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/load_panel.js ***!
              \**************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../localization/message */ 28109));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _load_indicator = _interopRequireDefault(__webpack_require__( /*! ./load_indicator */ 2492));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./overlay/ui.overlay */ 89799));
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);
                var _themes = __webpack_require__( /*! ./themes */ 75811);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const LoadPanel = _ui.default.inherit({
                    _supportedKeys: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            escape: _common.noop
                        })
                    },
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            message: _message.default.format("Loading"),
                            width: 222,
                            height: 90,
                            animation: null,
                            showIndicator: true,
                            indicatorSrc: "",
                            showPane: true,
                            delay: 0,
                            templatesRenderAsynchronously: false,
                            hideTopOverlayHandler: null,
                            focusStateEnabled: false,
                            propagateOutsideClick: true,
                            preventScrollEvents: false
                        })
                    },
                    _defaultOptionsRules: function() {
                        return this.callBase().concat([{
                            device: {
                                platform: "generic"
                            },
                            options: {
                                shadingColor: "transparent"
                            }
                        }, {
                            device: function() {
                                return (0, _themes.isMaterial)()
                            },
                            options: {
                                message: "",
                                width: 60,
                                height: 60,
                                maxHeight: 60,
                                maxWidth: 60
                            }
                        }, {
                            device: function() {
                                return (0, _themes.isFluent)()
                            },
                            options: {
                                width: "auto",
                                height: "auto"
                            }
                        }])
                    },
                    _init: function() {
                        this.callBase.apply(this, arguments)
                    },
                    _render: function() {
                        this.callBase();
                        this.$element().addClass("dx-loadpanel");
                        this.$wrapper().addClass("dx-loadpanel-wrapper");
                        this._setWrapperAria()
                    },
                    _setWrapperAria() {
                        const {
                            message: message
                        } = this.option();
                        const defaultLabel = (0, _themes.isMaterialBased)() ? message : null;
                        const label = message ? defaultLabel : _message.default.format("Loading");
                        const aria = {
                            role: "alert",
                            label: label
                        };
                        this.setAria(aria, this.$wrapper())
                    },
                    _renderContentImpl: function() {
                        this.callBase();
                        this.$content().addClass("dx-loadpanel-content");
                        this._$loadPanelContentWrapper = (0, _renderer.default)("<div>").addClass("dx-loadpanel-content-wrapper");
                        this._$loadPanelContentWrapper.appendTo(this.$content());
                        this._togglePaneVisible();
                        this._cleanPreviousContent();
                        this._renderLoadIndicator();
                        this._renderMessage()
                    },
                    _show: function() {
                        const delay = this.option("delay");
                        if (!delay) {
                            return this.callBase()
                        }
                        const deferred = new _deferred.Deferred;
                        const callBase = this.callBase.bind(this);
                        this._clearShowTimeout();
                        this._showTimeout = setTimeout((function() {
                            callBase().done((function() {
                                deferred.resolve()
                            }))
                        }), delay);
                        return deferred.promise()
                    },
                    _hide: function() {
                        this._clearShowTimeout();
                        return this.callBase()
                    },
                    _clearShowTimeout: function() {
                        clearTimeout(this._showTimeout)
                    },
                    _renderMessage: function() {
                        if (!this._$loadPanelContentWrapper) {
                            return
                        }
                        const message = this.option("message");
                        if (!message) {
                            return
                        }
                        const $message = (0, _renderer.default)("<div>").addClass("dx-loadpanel-message").text(message);
                        this._$loadPanelContentWrapper.append($message)
                    },
                    _renderLoadIndicator: function() {
                        if (!this._$loadPanelContentWrapper || !this.option("showIndicator")) {
                            return
                        }
                        if (!this._$indicator) {
                            this._$indicator = (0, _renderer.default)("<div>").addClass("dx-loadpanel-indicator").appendTo(this._$loadPanelContentWrapper)
                        }
                        this._createComponent(this._$indicator, _load_indicator.default, {
                            indicatorSrc: this.option("indicatorSrc")
                        })
                    },
                    _cleanPreviousContent: function() {
                        this.$content().find(".dx-loadpanel-message").remove();
                        this.$content().find(".dx-loadpanel-indicator").remove();
                        delete this._$indicator
                    },
                    _togglePaneVisible: function() {
                        this.$content().toggleClass("dx-loadpanel-pane-hidden", !this.option("showPane"))
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "delay":
                                break;
                            case "message":
                            case "showIndicator":
                                this._cleanPreviousContent();
                                this._renderLoadIndicator();
                                this._renderMessage();
                                this._setWrapperAria();
                                break;
                            case "showPane":
                                this._togglePaneVisible();
                                break;
                            case "indicatorSrc":
                                this._renderLoadIndicator();
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _dispose: function() {
                        this._clearShowTimeout();
                        this.callBase()
                    }
                });
                (0, _component_registrator.default)("dxLoadPanel", LoadPanel);
                var _default = LoadPanel;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        55935:
            /*!**********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/lookup.js ***!
              \**********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../events/core/events_engine */ 55994));
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _support = __webpack_require__( /*! ../core/utils/support */ 60137);
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);
                var _element = __webpack_require__( /*! ../core/element */ 6415);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _utils = __webpack_require__( /*! ../core/options/utils */ 45434);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../localization/message */ 28109));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../core/devices */ 20530));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./drop_down_editor/ui.drop_down_list */ 32468));
                var _themes = __webpack_require__( /*! ./themes */ 75811);
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ./popover/ui.popover */ 17287));
                var _text_box = _interopRequireDefault(__webpack_require__( /*! ./text_box */ 29837));
                var _child_default_template = __webpack_require__( /*! ../core/templates/child_default_template */ 91627);
                var _translator = __webpack_require__( /*! ../animation/translator */ 31648);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _utils2 = __webpack_require__( /*! ./drop_down_editor/utils */ 61902);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();
                const Lookup = _ui.default.inherit({
                    _supportedKeys: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            space: function(e) {
                                e.preventDefault();
                                this._validatedOpening()
                            },
                            enter: function() {
                                this._validatedOpening()
                            }
                        })
                    },
                    _getDefaultOptions: function() {
                        const getSize = side => {
                            let size;
                            if ("phone" === _devices.default.real().deviceType && window.visualViewport) {
                                size = window.visualViewport[side]
                            } else {
                                size = "width" === side ? (0, _size.getWidth)(window) : (0, _size.getHeight)(window)
                            }
                            return .8 * size
                        };
                        return (0, _extend.extend)(this.callBase(), {
                            placeholder: _message.default.format("Select"),
                            searchPlaceholder: _message.default.format("Search"),
                            searchEnabled: true,
                            searchStartEvent: "input change keyup",
                            cleanSearchOnOpening: true,
                            showCancelButton: true,
                            showClearButton: false,
                            clearButtonText: _message.default.format("Clear"),
                            applyButtonText: _message.default.format("OK"),
                            pullRefreshEnabled: false,
                            useNativeScrolling: true,
                            pullingDownText: _message.default.format("dxList-pullingDownText"),
                            pulledDownText: _message.default.format("dxList-pulledDownText"),
                            refreshingText: _message.default.format("dxList-refreshingText"),
                            pageLoadingText: _message.default.format("dxList-pageLoadingText"),
                            onScroll: null,
                            onPullRefresh: null,
                            onPageLoading: null,
                            pageLoadMode: "scrollBottom",
                            nextButtonText: _message.default.format("dxList-nextButtonText"),
                            grouped: false,
                            groupTemplate: "group",
                            usePopover: false,
                            openOnFieldClick: true,
                            showDropDownButton: false,
                            focusStateEnabled: false,
                            dropDownOptions: {
                                showTitle: true,
                                width: function() {
                                    return getSize("width")
                                },
                                height: function() {
                                    return getSize("height")
                                },
                                shading: true,
                                hideOnOutsideClick: false,
                                position: void 0,
                                animation: {},
                                title: "",
                                titleTemplate: "title",
                                onTitleRendered: null,
                                fullScreen: false
                            },
                            dropDownCentered: false,
                            _scrollToSelectedItemEnabled: false,
                            useHiddenSubmitElement: true
                        })
                    },
                    _setDeprecatedOptions() {
                        this.callBase();
                        (0, _extend.extend)(this._deprecatedOptions, {
                            valueChangeEvent: {
                                since: "22.1",
                                alias: "searchStartEvent"
                            }
                        })
                    },
                    _defaultOptionsRules: function() {
                        const themeName = (0, _themes.current)();
                        return this.callBase().concat([{
                            device: function() {
                                return !_support.nativeScrolling
                            },
                            options: {
                                useNativeScrolling: false
                            }
                        }, {
                            device: function(device) {
                                return !_devices.default.isSimulator() && "desktop" === _devices.default.real().deviceType && "generic" === device.platform
                            },
                            options: {
                                usePopover: true,
                                dropDownOptions: {
                                    height: "auto"
                                }
                            }
                        }, {
                            device: {
                                platform: "ios",
                                phone: true
                            },
                            options: {
                                dropDownOptions: {
                                    fullScreen: true
                                }
                            }
                        }, {
                            device: {
                                platform: "ios",
                                tablet: true
                            },
                            options: {
                                dropDownOptions: {
                                    width: function() {
                                        return .4 * Math.min((0, _size.getWidth)(window), (0, _size.getHeight)(window))
                                    },
                                    height: "auto"
                                },
                                usePopover: true
                            }
                        }, {
                            device: function() {
                                return "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator()
                            },
                            options: {
                                focusStateEnabled: true
                            }
                        }, {
                            device: function() {
                                return (0, _themes.isMaterial)(themeName)
                            },
                            options: {
                                usePopover: false,
                                searchEnabled: false,
                                showCancelButton: false,
                                dropDownCentered: true,
                                _scrollToSelectedItemEnabled: true,
                                dropDownOptions: {
                                    hideOnOutsideClick: true,
                                    _ignoreFunctionValueDeprecation: true,
                                    width: () => (0, _utils2.getElementWidth)(this.$element()),
                                    height: function() {
                                        return this._getPopupHeight()
                                    }.bind(this),
                                    showTitle: false,
                                    shading: false
                                }
                            }
                        }])
                    },
                    _init: function() {
                        this.callBase();
                        this._initActions()
                    },
                    _initActions() {
                        this.callBase();
                        this._initScrollAction();
                        this._initPageLoadingAction();
                        this._initPullRefreshAction()
                    },
                    _initPageLoadingAction: function() {
                        this._pageLoadingAction = this._createActionByOption("onPageLoading")
                    },
                    _initPullRefreshAction: function() {
                        this._pullRefreshAction = this._createActionByOption("onPullRefresh")
                    },
                    _initScrollAction: function() {
                        this._scrollAction = this._createActionByOption("onScroll")
                    },
                    _scrollHandler: function(e) {
                        this._scrollAction(e)
                    },
                    _pullRefreshHandler: function(e) {
                        this._pullRefreshAction(e)
                    },
                    _pageLoadingHandler: function(e) {
                        this._pageLoadingAction(e)
                    },
                    _initTemplates: function() {
                        this.callBase();
                        this._templateManager.addDefaultTemplates({
                            group: new _child_default_template.ChildDefaultTemplate("group"),
                            title: new _child_default_template.ChildDefaultTemplate("title")
                        })
                    },
                    _initMarkup: function() {
                        this.$element().addClass("dx-lookup").toggleClass("dx-lookup-popover-mode", this.option("usePopover"));
                        this.callBase()
                    },
                    _inputWrapper: function() {
                        return this.$element().find(".dx-lookup-field-wrapper")
                    },
                    _dataSourceOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            paginate: true
                        })
                    },
                    _fireContentReadyAction: _common.noop,
                    _popupWrapperClass: function() {
                        return ""
                    },
                    _renderInput: function() {
                        this._$field = (0, _renderer.default)("<div>").addClass("dx-lookup-field");
                        this._applyInputAttributes(this.option("inputAttr"));
                        const $arrow = (0, _renderer.default)("<div>").addClass("dx-lookup-arrow");
                        this._$fieldWrapper = (0, _renderer.default)("<div>").addClass("dx-lookup-field-wrapper").append(this._$field).append($arrow).appendTo(this.$element())
                    },
                    _applyInputAttributes(attributes) {
                        this._$field.attr(attributes)
                    },
                    _getInputContainer() {
                        return this._$fieldWrapper
                    },
                    _renderField: function() {
                        const fieldTemplate = this._getTemplateByOption("fieldTemplate");
                        if (fieldTemplate && this.option("fieldTemplate")) {
                            this._renderFieldTemplate(fieldTemplate);
                            return
                        }
                        const displayValue = this.option("displayValue");
                        this._updateField(displayValue);
                        const isFieldEmpty = !this.option("selectedItem");
                        this.$element().toggleClass("dx-lookup-empty", isFieldEmpty).toggleClass("dx-texteditor-empty", isFieldEmpty)
                    },
                    _getLabelContainer: function() {
                        return this._$field
                    },
                    _renderDisplayText: function(text) {
                        if (this._input().length) {
                            this.callBase(text)
                        } else {
                            this._updateField(text)
                        }
                    },
                    _updateField: function(text) {
                        text = (0, _type.isDefined)(text) && String(text);
                        this._$field.empty();
                        if (text) {
                            this._$field.text(text)
                        } else {
                            const $placeholder = (0, _renderer.default)("<div>").attr({
                                "data-dx_placeholder": this.option("placeholder")
                            });
                            this._$field.append($placeholder);
                            $placeholder.addClass("dx-placeholder")
                        }
                    },
                    _renderFieldTemplate: function(template) {
                        this._$field.empty();
                        const data = this._fieldRenderData();
                        template.render({
                            model: data,
                            container: (0, _element.getPublicElement)(this._$field)
                        })
                    },
                    _fieldRenderData: function() {
                        return this.option("selectedItem")
                    },
                    _popupShowingHandler: function() {
                        this.callBase.apply(this, arguments);
                        if (this.option("cleanSearchOnOpening")) {
                            if (this.option("searchEnabled") && this._searchBox.option("value")) {
                                this._searchBox.option("value", "");
                                this._searchCanceled()
                            }
                            this._list && this._list.option("focusedElement", null)
                        }
                        if (this.option("dropDownOptions.fullScreen") && this.option("_scrollToSelectedItemEnabled")) {
                            this._popup.option("position").of = (0, _renderer.default)(window)
                        }
                    },
                    _popupShownHandler: function() {
                        const scrollToSelectedItemEnabled = this.option("_scrollToSelectedItemEnabled");
                        const fullScreen = this.option("dropDownOptions.fullScreen");
                        if (!fullScreen && scrollToSelectedItemEnabled) {
                            this._setPopupPosition()
                        }
                        this.callBase()
                    },
                    _scrollToSelectedItem: function() {
                        const selectedIndex = this._list.option("selectedIndex");
                        const listItems = this._list.option("items");
                        const itemsCount = listItems.length;
                        if (0 !== itemsCount) {
                            if (this._list.option("grouped")) {
                                this._list.scrollToItem({
                                    group: itemsCount - 1,
                                    item: listItems[itemsCount - 1].items.length - 1
                                })
                            } else {
                                this._list.scrollToItem(itemsCount - 1)
                            }
                            this._list.scrollToItem(selectedIndex)
                        }
                    },
                    _getDifferenceOffsets: function(selectedListItem) {
                        return selectedListItem.offset().top - (0, _renderer.default)(this.element()).offset().top
                    },
                    _isCenteringEnabled: (index, count) => 1 < index && index < count - 2,
                    _getPopupOffset: function() {
                        const listItemsCount = this._listItemElements().length;
                        if (0 === listItemsCount) {
                            return
                        }
                        const selectedListItem = (0, _renderer.default)(this._list.element()).find(".dx-list-item-selected");
                        const selectedIndex = this._listItemElements().index(selectedListItem);
                        const differenceOfHeights = ((0, _size.getHeight)(selectedListItem) - (0, _size.getHeight)(this.element())) / 2;
                        const lookupOffset = (0, _renderer.default)(this._list.element()).offset().top;
                        const dropDownHeightOption = this.option("dropDownOptions.height");
                        const popupHeight = "function" === typeof dropDownHeightOption ? dropDownHeightOption() : dropDownHeightOption;
                        const windowHeight = (0, _size.getHeight)(window);
                        let offsetTop = 0;
                        if (-1 !== selectedIndex) {
                            if (this._isCenteringEnabled(selectedIndex, listItemsCount)) {
                                this._scrollToSelectedItem();
                                const scrollOffsetTop = (popupHeight - (0, _size.getHeight)(selectedListItem)) / 2 - this._getDifferenceOffsets(selectedListItem);
                                this._list.scrollTo(this._list.scrollTop() + 4 - scrollOffsetTop);
                                offsetTop = differenceOfHeights + this._getDifferenceOffsets(selectedListItem);
                                if (lookupOffset < offsetTop && selectedIndex !== listItemsCount - 3) {
                                    this._list.scrollTo(this._list.scrollTop() + this._getDifferenceOffsets(selectedListItem) / 2);
                                    offsetTop = differenceOfHeights + this._getDifferenceOffsets(selectedListItem)
                                }
                            } else if (selectedIndex <= 1) {
                                this._list.scrollTo(0);
                                offsetTop = differenceOfHeights + this._getDifferenceOffsets(selectedListItem)
                            } else if (selectedIndex >= listItemsCount - 2) {
                                this._scrollToSelectedItem();
                                offsetTop = differenceOfHeights + this._getDifferenceOffsets(selectedListItem)
                            }
                            if (lookupOffset < offsetTop) {
                                this._scrollToSelectedItem();
                                offsetTop = differenceOfHeights + 8
                            }
                        }
                        const offsetBottom = popupHeight - offsetTop - (0, _size.getHeight)(this.element());
                        if (windowHeight - lookupOffset < offsetBottom) {
                            this._list.scrollTo(this._list.scrollTop() + differenceOfHeights - offsetBottom);
                            offsetTop = popupHeight - (0, _size.getHeight)(this.element()) - 8
                        }
                        return offsetTop
                    },
                    _setPopupPosition: function() {
                        if (!this.option("dropDownCentered")) {
                            return
                        }
                        const flipped = this._popup.$wrapper().hasClass("dx-popover-flipped-vertical");
                        if (flipped) {
                            return
                        }
                        const popupContentParent = (0, _renderer.default)(this._popup.$content()).parent();
                        const popupOffset = this._getPopupOffset();
                        const position = (0, _translator.locate)(popupContentParent);
                        (0, _translator.move)(popupContentParent, {
                            top: position.top - popupOffset
                        })
                    },
                    _listItemGroupedElements: function() {
                        const groups = this._list._getItemsContainer().children();
                        const items = [];
                        groups.each((_, group) => {
                            items.push((0, _renderer.default)(group).find(".dx-list-group-header")[0]);
                            const groupedItems = (0, _renderer.default)(group).find(".dx-list-item");
                            groupedItems.each((_, item) => {
                                items.push(item)
                            })
                        });
                        return (0, _renderer.default)(items)
                    },
                    _calculateListHeight: function(grouped) {
                        const listItems = grouped ? this._listItemGroupedElements() : this._listItemElements();
                        const selectedListItem = (0, _renderer.default)(".dx-list-item-selected");
                        const selectedIndex = listItems.index(selectedListItem);
                        let listHeight = 0;
                        let requireListItems = [];
                        if (0 === listItems.length) {
                            listHeight += 8
                        } else if (listItems.length < 5) {
                            listItems.each((_, item) => {
                                listHeight += (0, _size.getOuterHeight)(item)
                            })
                        } else {
                            if (selectedIndex <= 1) {
                                requireListItems = listItems.slice(0, 5)
                            } else if (this._isCenteringEnabled(selectedIndex, listItems.length)) {
                                requireListItems = listItems.slice(selectedIndex - 2, selectedIndex + 3)
                            } else {
                                requireListItems = listItems.slice(listItems.length - 5, listItems.length)
                            }
                            requireListItems.each((_, item) => {
                                listHeight += (0, _size.getOuterHeight)(item)
                            })
                        }
                        return listHeight + (grouped ? 8 : 16)
                    },
                    _getPopupHeight: function() {
                        var _this$_list;
                        if (null !== (_this$_list = this._list) && void 0 !== _this$_list && _this$_list.itemElements().length) {
                            return this._calculateListHeight(this.option("grouped")) + (this._$searchWrapper ? (0, _size.getOuterHeight)(this._$searchWrapper) : 0) + (this._popup._$bottom ? (0, _size.getOuterHeight)(this._popup._$bottom) : 0) + (this._popup._$title ? (0, _size.getOuterHeight)(this._popup._$title) : 0)
                        } else {
                            return "auto"
                        }
                    },
                    _popupTabHandler: _common.noop,
                    _renderPopup: function() {
                        if (this.option("usePopover") && !this.option("dropDownOptions.fullScreen")) {
                            if (this.option("_scrollToSelectedItemEnabled")) {
                                this.callBase()
                            } else {
                                this._renderPopover();
                                this._attachPopupKeyHandler()
                            }
                        } else {
                            this.callBase()
                        }
                        this._$popup.addClass("dx-lookup-popup");
                        this._popup.$wrapper().addClass("dx-lookup-popup-wrapper")
                    },
                    _renderPopover: function() {
                        this._popup = this._createComponent(this._$popup, _ui2.default, (0, _extend.extend)(this._popupConfig(), this._options.cache("dropDownOptions"), {
                            showEvent: null,
                            hideEvent: null,
                            target: this.$element(),
                            fullScreen: false,
                            shading: false,
                            hideOnParentScroll: true,
                            _fixWrapperPosition: false,
                            width: this._isInitialOptionValue("dropDownOptions.width") ? function() {
                                return (0, _size.getOuterWidth)(this.$element())
                            }.bind(this) : this._popupConfig().width
                        }));
                        this._popup.$overlayContent().attr("role", "dialog");
                        this._popup.on({
                            showing: this._popupShowingHandler.bind(this),
                            shown: this._popupShownHandler.bind(this),
                            hiding: this._popupHidingHandler.bind(this),
                            hidden: this._popupHiddenHandler.bind(this),
                            contentReady: this._contentReadyHandler.bind(this)
                        });
                        if (this.option("_scrollToSelectedItemEnabled")) {
                            this._popup._$arrow.remove()
                        }
                        this._setPopupContentId(this._popup.$content());
                        this._contentReadyHandler()
                    },
                    _popupHidingHandler: function() {
                        this.callBase();
                        this.option("focusStateEnabled") && this.focus()
                    },
                    _popupHiddenHandler: function() {
                        this.callBase();
                        if (this.option("_scrollToSelectedItemEnabled")) {
                            (0, _translator.resetPosition)((0, _renderer.default)(this._popup.content()).parent())
                        }
                    },
                    _preventFocusOnPopup: _common.noop,
                    _popupConfig: function() {
                        const result = (0, _extend.extend)(this.callBase(), {
                            toolbarItems: this._getPopupToolbarItems(),
                            hideOnParentScroll: false,
                            onPositioned: null,
                            maxHeight: "100vh",
                            showTitle: this.option("dropDownOptions.showTitle"),
                            title: this.option("dropDownOptions.title"),
                            titleTemplate: this._getTemplateByOption("dropDownOptions.titleTemplate"),
                            onTitleRendered: this.option("dropDownOptions.onTitleRendered"),
                            fullScreen: this.option("dropDownOptions.fullScreen"),
                            shading: this.option("dropDownOptions.shading"),
                            hideOnOutsideClick: this.option("dropDownOptions.hideOnOutsideClick") || this.option("dropDownOptions.closeOnOutsideClick")
                        });
                        delete result.animation;
                        delete result.position;
                        if (this.option("_scrollToSelectedItemEnabled")) {
                            result.position = this.option("dropDownCentered") ? {
                                my: "left top",
                                at: "left top",
                                of: this.element()
                            } : {
                                my: "left top",
                                at: "left bottom",
                                of: this.element()
                            };
                            result.hideOnParentScroll = true
                        }(0, _iterator.each)(["position", "animation", "width", "height"], (_, optionName) => {
                            const popupOptionValue = this.option("dropDownOptions.".concat(optionName));
                            if (void 0 !== popupOptionValue) {
                                result[optionName] = popupOptionValue
                            }
                        });
                        return result
                    },
                    _getPopupToolbarItems: function() {
                        const buttonsConfig = "useButtons" === this.option("applyValueMode") ? this._popupToolbarItemsConfig() : [];
                        const cancelButton = this._getCancelButtonConfig();
                        if (cancelButton) {
                            buttonsConfig.push(cancelButton)
                        }
                        const clearButton = this._getClearButtonConfig();
                        if (clearButton) {
                            buttonsConfig.push(clearButton)
                        }
                        return this._applyButtonsLocation(buttonsConfig)
                    },
                    _popupToolbarItemsConfig: function() {
                        return [{
                            shortcut: "done",
                            options: {
                                onClick: this._applyButtonHandler.bind(this),
                                text: this.option("applyButtonText")
                            }
                        }]
                    },
                    _getCancelButtonConfig: function() {
                        return this.option("showCancelButton") ? {
                            shortcut: "cancel",
                            onClick: this._cancelButtonHandler.bind(this),
                            options: {
                                text: this.option("cancelButtonText")
                            }
                        } : null
                    },
                    _getClearButtonConfig: function() {
                        return this.option("showClearButton") ? {
                            shortcut: "clear",
                            onClick: this._resetValue.bind(this),
                            options: {
                                text: this.option("clearButtonText")
                            }
                        } : null
                    },
                    _applyButtonHandler: function(args) {
                        if (args) {
                            this._saveValueChangeEvent(args.event)
                        }
                        this.option("value", this._valueGetter(this._currentSelectedItem()));
                        this.callBase()
                    },
                    _cancelButtonHandler: function() {
                        this._refreshSelected();
                        this.callBase()
                    },
                    _refreshPopupVisibility: function() {
                        if (this.option("opened")) {
                            this._updateListDimensions()
                        }
                    },
                    _dimensionChanged: function() {
                        if (this.option("usePopover") && !this.option("dropDownOptions.width")) {
                            this.option("dropDownOptions.width", (0, _size.getWidth)(this.$element()))
                        }
                        this._updateListDimensions()
                    },
                    _input: function() {
                        return this._$searchBox || this.callBase()
                    },
                    _renderPopupContent: function() {
                        this.callBase();
                        this._renderSearch()
                    },
                    _renderValueChangeEvent: _common.noop,
                    _renderSearch: function() {
                        const isSearchEnabled = this.option("searchEnabled");
                        this._toggleSearchClass(isSearchEnabled);
                        if (isSearchEnabled) {
                            const $searchWrapper = this._$searchWrapper = (0, _renderer.default)("<div>").addClass("dx-lookup-search-wrapper");
                            const $searchBox = this._$searchBox = (0, _renderer.default)("<div>").addClass("dx-lookup-search").appendTo($searchWrapper);
                            const currentDevice = _devices.default.current();
                            const searchMode = currentDevice.android ? "text" : "search";
                            let isKeyboardListeningEnabled = false;
                            const textBoxOptions = {
                                mode: searchMode,
                                showClearButton: true,
                                valueChangeEvent: this.option("searchStartEvent"),
                                inputAttr: {
                                    "aria-label": "Search"
                                },
                                onDisposing: () => isKeyboardListeningEnabled = false,
                                onFocusIn: () => isKeyboardListeningEnabled = true,
                                onFocusOut: () => isKeyboardListeningEnabled = false,
                                onKeyboardHandled: opts => isKeyboardListeningEnabled && this._list._keyboardHandler(opts),
                                onValueChanged: e => this._searchHandler(e)
                            };
                            this._searchBox = this._createComponent($searchBox, _text_box.default, textBoxOptions);
                            this._registerSearchKeyHandlers();
                            $searchWrapper.insertBefore(this._$list);
                            this._setSearchPlaceholder()
                        }
                    },
                    _updateActiveDescendant() {
                        this.callBase();
                        if (!this._$searchBox) {
                            return
                        }
                        const $input = this._$searchBox.find("input");
                        this.callBase($input)
                    },
                    _removeSearch: function() {
                        this._$searchWrapper && this._$searchWrapper.remove();
                        delete this._$searchWrapper;
                        this._$searchBox && this._$searchBox.remove();
                        delete this._$searchBox;
                        delete this._searchBox
                    },
                    _selectListItemHandler: function(e) {
                        const $itemElement = (0, _renderer.default)(this._list.option("focusedElement"));
                        if (!$itemElement.length) {
                            return
                        }
                        e.preventDefault();
                        e.target = $itemElement.get(0);
                        this._saveValueChangeEvent(e);
                        this._selectListItem(e.itemData, $itemElement)
                    },
                    _registerSearchKeyHandlers: function() {
                        this._searchBox.registerKeyHandler("enter", this._selectListItemHandler.bind(this));
                        this._searchBox.registerKeyHandler("space", this._selectListItemHandler.bind(this));
                        this._searchBox.registerKeyHandler("end", _common.noop);
                        this._searchBox.registerKeyHandler("home", _common.noop)
                    },
                    _toggleSearchClass: function(isSearchEnabled) {
                        if (this._popup) {
                            this._popup.$wrapper().toggleClass("dx-lookup-popup-search", isSearchEnabled)
                        }
                    },
                    _setSearchPlaceholder: function() {
                        if (!this._$searchBox) {
                            return
                        }
                        const minSearchLength = this.option("minSearchLength");
                        let placeholder = this.option("searchPlaceholder");
                        if (minSearchLength && placeholder === _message.default.format("Search")) {
                            placeholder = _message.default.getFormatter("dxLookup-searchPlaceholder")(minSearchLength)
                        }
                        this._searchBox.option("placeholder", placeholder)
                    },
                    _setAriaTargetForList: _common.noop,
                    _listConfig: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            tabIndex: 0,
                            grouped: this.option("grouped"),
                            groupTemplate: this._getTemplateByOption("groupTemplate"),
                            pullRefreshEnabled: this.option("pullRefreshEnabled"),
                            useNativeScrolling: this.option("useNativeScrolling"),
                            pullingDownText: this.option("pullingDownText"),
                            pulledDownText: this.option("pulledDownText"),
                            refreshingText: this.option("refreshingText"),
                            pageLoadingText: this.option("pageLoadingText"),
                            onScroll: this._scrollHandler.bind(this),
                            onPullRefresh: this._pullRefreshHandler.bind(this),
                            onPageLoading: this._pageLoadingHandler.bind(this),
                            pageLoadMode: this.option("pageLoadMode"),
                            nextButtonText: this.option("nextButtonText"),
                            indicateLoading: this.option("searchEnabled"),
                            onSelectionChanged: this._getSelectionChangedHandler()
                        })
                    },
                    _getSelectionChangedHandler: function() {
                        return this.option("showSelectionControls") ? this._selectionChangeHandler.bind(this) : _common.noop
                    },
                    _listContentReadyHandler: function() {
                        this.callBase(...arguments);
                        this._refreshSelected()
                    },
                    _runWithoutCloseOnScroll: function(callback) {
                        const {
                            _scrollToSelectedItemEnabled: _scrollToSelectedItemEnabled
                        } = this.option();
                        const hideOnParentScroll = this._popup.option("hideOnParentScroll");
                        if (!_scrollToSelectedItemEnabled) {
                            callback()
                        } else {
                            this._popup.option("hideOnParentScroll", false);
                            callback();
                            this._hideOnParentScrollTimer = setTimeout(() => {
                                this._popup.option("hideOnParentScroll", hideOnParentScroll)
                            })
                        }
                    },
                    _setFocusPolicy: function() {
                        if (!this.option("focusStateEnabled")) {
                            return
                        }
                        this._runWithoutCloseOnScroll(() => {
                            if (this.option("searchEnabled")) {
                                this._searchBox.focus()
                            } else {
                                this._list.focus()
                            }
                        })
                    },
                    _focusTarget: function() {
                        return this._$field
                    },
                    _keyboardEventBindingTarget: function() {
                        return this._$field
                    },
                    _listItemClickHandler: function(e) {
                        this._saveValueChangeEvent(e.event);
                        this._selectListItem(e.itemData, e.event.currentTarget)
                    },
                    _selectListItem: function(itemData, target) {
                        this._list.selectItem(target);
                        if ("instantly" === this.option("applyValueMode")) {
                            this._applyButtonHandler()
                        }
                    },
                    _currentSelectedItem: function() {
                        return this.option("grouped") ? this._list.option("selectedItems[0]").items[0] : this._list.option("selectedItems[0]")
                    },
                    _resetValue: function(e) {
                        this._saveValueChangeEvent(e.event);
                        this.option("value", null);
                        this.option("opened", false)
                    },
                    _searchValue: function() {
                        return this.option("searchEnabled") && this._searchBox ? this._searchBox.option("value") : ""
                    },
                    _renderInputValue: function() {
                        return this.callBase().always(() => {
                            this._refreshSelected()
                        })
                    },
                    _renderPlaceholder: function() {
                        if (0 === this.$element().find(".dx-texteditor-input").length) {
                            return
                        }
                        this.callBase()
                    },
                    _clean: function() {
                        this._$fieldWrapper.remove();
                        clearTimeout(this._hideOnParentScrollTimer);
                        this._hideOnParentScrollTimer = null;
                        this._$searchBox = null;
                        this.callBase()
                    },
                    _optionChanged: function(args) {
                        var _this$_searchBox;
                        const {
                            name: name,
                            fullName: fullName,
                            value: value
                        } = args;
                        switch (name) {
                            case "dataSource":
                                this.callBase(...arguments);
                                this._renderField();
                                break;
                            case "searchEnabled":
                                if (this._popup) {
                                    this._removeSearch();
                                    this._renderSearch()
                                }
                                break;
                            case "searchPlaceholder":
                                this._setSearchPlaceholder();
                                break;
                            case "minSearchLength":
                                this._setSearchPlaceholder();
                                this.callBase(...arguments);
                                break;
                            case "inputAttr":
                                this._applyInputAttributes(value);
                                break;
                            case "usePopover":
                            case "placeholder":
                                this._invalidate();
                                break;
                            case "clearButtonText":
                            case "showClearButton":
                            case "showCancelButton":
                                this._setPopupOption("toolbarItems", this._getPopupToolbarItems());
                                break;
                            case "applyValueMode":
                                this.callBase(...arguments);
                                break;
                            case "onPageLoading":
                                this._initPageLoadingAction();
                                break;
                            case "onPullRefresh":
                                this._initPullRefreshAction();
                                break;
                            case "pullRefreshEnabled":
                            case "useNativeScrolling":
                            case "pullingDownText":
                            case "pulledDownText":
                            case "refreshingText":
                            case "pageLoadingText":
                            case "nextButtonText":
                            case "grouped":
                            case "groupTemplate":
                                this._setListOption(name);
                                break;
                            case "searchStartEvent":
                                null === (_this$_searchBox = this._searchBox) || void 0 === _this$_searchBox ? void 0 : _this$_searchBox.option("valueChangeEvent", value);
                                break;
                            case "onScroll":
                                this._initScrollAction();
                                break;
                            case "pageLoadMode":
                                this._setListOption("pageLoadMode", this.option("pageLoadMode"));
                                break;
                            case "cleanSearchOnOpening":
                            case "_scrollToSelectedItemEnabled":
                                break;
                            case "dropDownOptions":
                                switch (fullName) {
                                    case "dropDownOptions.width":
                                    case "dropDownOptions.height":
                                        this._popupOptionChanged({
                                            name: name,
                                            fullName: fullName,
                                            value: "auto" === value ? this.initialOption("dropDownOptions")[(0, _utils.getFieldName)(fullName)] : value
                                        });
                                        this._options.cache("dropDownOptions", this.option("dropDownOptions"));
                                        break;
                                    default:
                                        this.callBase(...arguments)
                                }
                                break;
                            case "dropDownCentered":
                                if (this.option("_scrollToSelectedItemEnabled")) {
                                    this.option("dropDownOptions.position", void 0);
                                    this._renderPopup()
                                }
                                break;
                            default:
                                this.callBase(...arguments)
                        }
                    },
                    focus: function() {
                        this.option("opened") ? this._setFocusPolicy() : _events_engine.default.trigger(this._focusTarget(), "focus")
                    },
                    field: function() {
                        return this._$field
                    }
                });
                (0, _component_registrator.default)("dxLookup", Lookup);
                var _default = Lookup;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        64304:
            /*!*******************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/map.js ***!
              \*******************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../events/core/events_engine */ 55994));
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./widget/ui.errors */ 96688));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../core/devices */ 20530));
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ./widget/ui.widget */ 14390));
                var _inflector = __webpack_require__( /*! ../core/utils/inflector */ 78008);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _array = __webpack_require__( /*! ../core/utils/array */ 89386);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _index = __webpack_require__( /*! ../events/utils/index */ 39611);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../events/pointer */ 93786));
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);
                var _provider = _interopRequireDefault(__webpack_require__( /*! ./map/provider.google_static */ 48112));
                var _providerDynamic = _interopRequireDefault(__webpack_require__( /*! ./map/provider.dynamic.google */ 71430));
                var _providerDynamic2 = _interopRequireDefault(__webpack_require__( /*! ./map/provider.dynamic.bing */ 253));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const PROVIDERS = {
                    googleStatic: _provider.default,
                    google: _providerDynamic.default,
                    bing: _providerDynamic2.default
                };
                const Map = _ui2.default.inherit({
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            bounds: {
                                northEast: null,
                                southWest: null
                            },
                            center: {
                                lat: 0,
                                lng: 0
                            },
                            zoom: 1,
                            width: 300,
                            height: 300,
                            type: "roadmap",
                            provider: "google",
                            autoAdjust: true,
                            markers: [],
                            markerIconSrc: null,
                            onMarkerAdded: null,
                            onMarkerRemoved: null,
                            routes: [],
                            onRouteAdded: null,
                            onRouteRemoved: null,
                            apiKey: {
                                bing: "",
                                google: "",
                                googleStatic: ""
                            },
                            controls: false,
                            onReady: null,
                            onUpdated: null,
                            onClick: null
                        })
                    },
                    _defaultOptionsRules: function() {
                        return this.callBase().concat([{
                            device: function() {
                                return "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator()
                            },
                            options: {
                                focusStateEnabled: true
                            }
                        }])
                    },
                    _renderFocusTarget: _common.noop,
                    _init: function() {
                        this.callBase();
                        this.$element().addClass("dx-map");
                        this._lastAsyncAction = Promise.resolve();
                        this._checkOption("provider");
                        this._checkOption("markers");
                        this._checkOption("routes");
                        this._initContainer();
                        this._grabEvents();
                        this._rendered = {}
                    },
                    _useTemplates: function() {
                        return false
                    },
                    _checkOption: function(option) {
                        const value = this.option(option);
                        if ("markers" === option && !Array.isArray(value)) {
                            throw _ui.default.Error("E1022")
                        }
                        if ("routes" === option && !Array.isArray(value)) {
                            throw _ui.default.Error("E1023")
                        }
                    },
                    _initContainer: function() {
                        this._$container = (0, _renderer.default)("<div>").addClass("dx-map-container");
                        this.$element().append(this._$container)
                    },
                    _grabEvents: function() {
                        const eventName = (0, _index.addNamespace)(_pointer.default.down, this.NAME);
                        _events_engine.default.on(this.$element(), eventName, this._cancelEvent.bind(this))
                    },
                    _cancelEvent: function(e) {
                        const cancelByProvider = this._provider && this._provider.isEventsCanceled(e) && !this.option("disabled");
                        if (cancelByProvider) {
                            e.stopPropagation()
                        }
                    },
                    _saveRendered: function(option) {
                        const value = this.option(option);
                        this._rendered[option] = value.slice()
                    },
                    _render: function() {
                        this.callBase();
                        this._renderShield();
                        this._saveRendered("markers");
                        this._saveRendered("routes");
                        this._provider = new(PROVIDERS[this.option("provider")])(this, this._$container);
                        this._queueAsyncAction("render", this._rendered.markers, this._rendered.routes)
                    },
                    _renderShield: function() {
                        let $shield;
                        if (this.option("disabled")) {
                            $shield = (0, _renderer.default)("<div>").addClass("dx-map-shield");
                            this.$element().append($shield)
                        } else {
                            $shield = this.$element().find(".dx-map-shield");
                            $shield.remove()
                        }
                    },
                    _clean: function() {
                        this._cleanFocusState();
                        if (this._provider) {
                            this._provider.clean()
                        }
                        this._provider = null;
                        this._lastAsyncAction = Promise.resolve();
                        this.setOptionSilent("bounds", {
                            northEast: null,
                            southWest: null
                        });
                        delete this._suppressAsyncAction
                    },
                    _optionChanged: function(args) {
                        const name = args.name;
                        const changeBag = this._optionChangeBag;
                        this._optionChangeBag = null;
                        switch (name) {
                            case "disabled":
                                this._renderShield();
                                this.callBase(args);
                                break;
                            case "width":
                            case "height":
                                this.callBase(args);
                                this._dimensionChanged();
                                break;
                            case "provider":
                                this._suppressAsyncAction = true;
                                this._invalidate();
                                break;
                            case "apiKey":
                                _ui.default.log("W1001");
                                break;
                            case "bounds":
                                this._queueAsyncAction("updateBounds");
                                break;
                            case "center":
                                this._queueAsyncAction("updateCenter");
                                break;
                            case "zoom":
                                this._queueAsyncAction("updateZoom");
                                break;
                            case "type":
                                this._queueAsyncAction("updateMapType");
                                break;
                            case "controls":
                                this._queueAsyncAction("updateControls", this._rendered.markers, this._rendered.routes);
                                break;
                            case "autoAdjust":
                                this._queueAsyncAction("adjustViewport");
                                break;
                            case "markers":
                            case "routes": {
                                this._checkOption(name);
                                const prevValue = this._rendered[name];
                                this._saveRendered(name);
                                this._queueAsyncAction("update" + (0, _inflector.titleize)(name), changeBag ? changeBag.removed : prevValue, changeBag ? changeBag.added : this._rendered[name]).then((function(result) {
                                    if (changeBag) {
                                        changeBag.resolve(result)
                                    }
                                }));
                                break
                            }
                            case "markerIconSrc":
                                this._queueAsyncAction("updateMarkers", this._rendered.markers, this._rendered.markers);
                                break;
                            case "onReady":
                            case "onUpdated":
                            case "onMarkerAdded":
                            case "onMarkerRemoved":
                            case "onRouteAdded":
                            case "onRouteRemoved":
                            case "onClick":
                                break;
                            default:
                                this.callBase.apply(this, arguments)
                        }
                    },
                    _visibilityChanged: function(visible) {
                        if (visible) {
                            this._dimensionChanged()
                        }
                    },
                    _dimensionChanged: function() {
                        this._queueAsyncAction("updateDimensions")
                    },
                    _queueAsyncAction: function(name) {
                        const options = [].slice.call(arguments).slice(1);
                        const isActionSuppressed = this._suppressAsyncAction;
                        this._lastAsyncAction = this._lastAsyncAction.then(function() {
                            if (!this._provider || isActionSuppressed) {
                                return Promise.resolve()
                            }
                            return this._provider[name].apply(this._provider, options).then(function(result) {
                                result = (0, _array.wrapToArray)(result);
                                const mapRefreshed = result[0];
                                if (mapRefreshed && !this._disposed) {
                                    this._triggerReadyAction()
                                }
                                return result[1]
                            }.bind(this))
                        }.bind(this));
                        return this._lastAsyncAction
                    },
                    _triggerReadyAction: function() {
                        this._createActionByOption("onReady")({
                            originalMap: this._provider.map()
                        })
                    },
                    _triggerUpdateAction: function() {
                        this._createActionByOption("onUpdated")()
                    },
                    setOptionSilent: function(name, value) {
                        this._setOptionWithoutOptionChange(name, value)
                    },
                    addMarker: function(marker) {
                        return this._addFunction("markers", marker)
                    },
                    removeMarker: function(marker) {
                        return this._removeFunction("markers", marker)
                    },
                    addRoute: function(route) {
                        return this._addFunction("routes", route)
                    },
                    removeRoute: function(route) {
                        return this._removeFunction("routes", route)
                    },
                    _addFunction: function(optionName, addingValue) {
                        const optionValue = this.option(optionName);
                        const addingValues = (0, _array.wrapToArray)(addingValue);
                        optionValue.push.apply(optionValue, addingValues);
                        return this._partialArrayOptionChange(optionName, optionValue, addingValues, [])
                    },
                    _removeFunction: function(optionName, removingValue) {
                        const optionValue = this.option(optionName);
                        const removingValues = (0, _array.wrapToArray)(removingValue);
                        (0, _iterator.each)(removingValues, (function(removingIndex, removingValue) {
                            const index = (0, _type.isNumeric)(removingValue) ? removingValue : null === optionValue || void 0 === optionValue ? void 0 : optionValue.indexOf(removingValue);
                            if (-1 !== index) {
                                const removing = optionValue.splice(index, 1)[0];
                                removingValues.splice(removingIndex, 1, removing)
                            } else {
                                throw _ui.default.log("E1021", (0, _inflector.titleize)(optionName.substring(0, optionName.length - 1)), removingValue)
                            }
                        }));
                        return this._partialArrayOptionChange(optionName, optionValue, [], removingValues)
                    },
                    _partialArrayOptionChange: function(optionName, optionValue, addingValues, removingValues) {
                        return (0, _deferred.fromPromise)(new Promise(function(resolve) {
                            this._optionChangeBag = {
                                resolve: resolve,
                                added: addingValues,
                                removed: removingValues
                            };
                            this.option(optionName, optionValue)
                        }.bind(this)).then((function(result) {
                            return result && 1 === result.length ? result[0] : result
                        })), this)
                    }
                });
                (0, _component_registrator.default)("dxMap", Map);
                var _default = Map;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        253:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/map/provider.dynamic.bing.js ***!
              \*****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.errors */ 96688));
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _provider = _interopRequireDefault(__webpack_require__( /*! ./provider.dynamic */ 67526));
                var _color = _interopRequireDefault(__webpack_require__( /*! ../../color */ 52752));
                var _ajax = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/ajax */ 37208));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();
                const msMapsLoaded = function() {
                    return window.Microsoft && window.Microsoft.Maps
                };
                let msMapsLoader;
                const BingProvider = _provider.default.inherit({
                    _mapType: function(type) {
                        const mapTypes = {
                            roadmap: Microsoft.Maps.MapTypeId.road,
                            hybrid: Microsoft.Maps.MapTypeId.aerial,
                            satellite: Microsoft.Maps.MapTypeId.aerial
                        };
                        return mapTypes[type] || mapTypes.road
                    },
                    _movementMode: function(type) {
                        const movementTypes = {
                            driving: Microsoft.Maps.Directions.RouteMode.driving,
                            walking: Microsoft.Maps.Directions.RouteMode.walking
                        };
                        return movementTypes[type] || movementTypes.driving
                    },
                    _resolveLocation: function(location) {
                        return new Promise(function(resolve) {
                            const latLng = this._getLatLng(location);
                            if (latLng) {
                                resolve(new Microsoft.Maps.Location(latLng.lat, latLng.lng))
                            } else {
                                this._geocodeLocation(location).then((function(geocodedLocation) {
                                    resolve(geocodedLocation)
                                }))
                            }
                        }.bind(this))
                    },
                    _geocodedLocations: {},
                    _geocodeLocationImpl: function(location) {
                        return new Promise(function(resolve) {
                            if (!(0, _type.isDefined)(location)) {
                                resolve(new Microsoft.Maps.Location(0, 0));
                                return
                            }
                            const searchManager = new Microsoft.Maps.Search.SearchManager(this._map);
                            const searchRequest = {
                                where: location,
                                count: 1,
                                callback: function(searchResponse) {
                                    const result = searchResponse.results[0];
                                    if (result) {
                                        const boundsBox = searchResponse.results[0].location;
                                        resolve(new Microsoft.Maps.Location(boundsBox.latitude, boundsBox.longitude))
                                    } else {
                                        resolve(new Microsoft.Maps.Location(0, 0))
                                    }
                                }
                            };
                            searchManager.geocode(searchRequest)
                        }.bind(this))
                    },
                    _normalizeLocation: function(location) {
                        return {
                            lat: location.latitude,
                            lng: location.longitude
                        }
                    },
                    _normalizeLocationRect: function(locationRect) {
                        const northWest = this._normalizeLocation(locationRect.getNorthwest());
                        const southEast = this._normalizeLocation(locationRect.getSoutheast());
                        return {
                            northEast: {
                                lat: northWest.lat,
                                lng: southEast.lng
                            },
                            southWest: {
                                lat: southEast.lat,
                                lng: northWest.lng
                            }
                        }
                    },
                    _loadImpl: function() {
                        return new Promise(function(resolve) {
                            if (msMapsLoaded()) {
                                resolve()
                            } else {
                                if (!msMapsLoader) {
                                    msMapsLoader = this._loadMapScript()
                                }
                                msMapsLoader.then(function() {
                                    if (msMapsLoaded()) {
                                        resolve();
                                        return
                                    }
                                    this._loadMapScript().then(resolve)
                                }.bind(this))
                            }
                        }.bind(this)).then((function() {
                            return Promise.all([new Promise((function(resolve) {
                                Microsoft.Maps.loadModule("Microsoft.Maps.Search", {
                                    callback: resolve
                                })
                            })), new Promise((function(resolve) {
                                Microsoft.Maps.loadModule("Microsoft.Maps.Directions", {
                                    callback: resolve
                                })
                            }))])
                        }))
                    },
                    _loadMapScript: function() {
                        return new Promise((function(resolve) {
                            window._bingScriptReady = resolve;
                            _ajax.default.sendRequest({
                                url: "https://www.bing.com/api/maps/mapcontrol?callback=_bingScriptReady",
                                dataType: "script"
                            })
                        })).then((function() {
                            try {
                                delete window._bingScriptReady
                            } catch (e) {
                                window._bingScriptReady = void 0
                            }
                        }))
                    },
                    _init: function() {
                        this._createMap();
                        return Promise.resolve()
                    },
                    _createMap: function() {
                        const controls = this._option("controls");
                        this._map = new Microsoft.Maps.Map(this._$container[0], {
                            credentials: this._keyOption("bing"),
                            zoom: this._option("zoom"),
                            showDashboard: controls,
                            showMapTypeSelector: controls,
                            showScalebar: controls
                        })
                    },
                    _attachHandlers: function() {
                        this._providerViewChangeHandler = Microsoft.Maps.Events.addHandler(this._map, "viewchange", this._viewChangeHandler.bind(this));
                        this._providerClickHandler = Microsoft.Maps.Events.addHandler(this._map, "click", this._clickActionHandler.bind(this))
                    },
                    _viewChangeHandler: function() {
                        const bounds = this._map.getBounds();
                        this._option("bounds", this._normalizeLocationRect(bounds));
                        const center = this._map.getCenter();
                        this._option("center", this._normalizeLocation(center));
                        if (!this._preventZoomChangeEvent) {
                            this._option("zoom", this._map.getZoom())
                        }
                    },
                    _clickActionHandler: function(e) {
                        if ("map" === e.targetType) {
                            this._fireClickAction({
                                location: this._normalizeLocation(e.location)
                            })
                        }
                    },
                    updateDimensions: function() {
                        const $container = this._$container;
                        this._map.setOptions({
                            width: (0, _size.getWidth)($container),
                            height: (0, _size.getHeight)($container)
                        });
                        return Promise.resolve()
                    },
                    updateMapType: function() {
                        const type = this._option("type");
                        const labelOverlay = Microsoft.Maps.LabelOverlay;
                        this._map.setView({
                            animate: false,
                            mapTypeId: this._mapType(type),
                            labelOverlay: "satellite" === type ? labelOverlay.hidden : labelOverlay.visible
                        });
                        return Promise.resolve()
                    },
                    updateBounds: function() {
                        return Promise.all([this._resolveLocation(this._option("bounds.northEast")), this._resolveLocation(this._option("bounds.southWest"))]).then(function(result) {
                            const bounds = new Microsoft.Maps.LocationRect.fromLocations(result[0], result[1]);
                            this._map.setView({
                                animate: false,
                                bounds: bounds
                            })
                        }.bind(this))
                    },
                    updateCenter: function() {
                        return this._resolveLocation(this._option("center")).then(function(center) {
                            this._map.setView({
                                animate: false,
                                center: center
                            })
                        }.bind(this))
                    },
                    updateZoom: function() {
                        this._map.setView({
                            animate: false,
                            zoom: this._option("zoom")
                        });
                        return Promise.resolve()
                    },
                    updateControls: function() {
                        this.clean();
                        return this.render.apply(this, arguments)
                    },
                    _renderMarker: function(options) {
                        return this._resolveLocation(options.location).then(function(location) {
                            const pushpinOptions = {
                                icon: options.iconSrc || this._option("markerIconSrc")
                            };
                            if (options.html) {
                                (0, _extend.extend)(pushpinOptions, {
                                    htmlContent: options.html,
                                    width: null,
                                    height: null
                                });
                                const htmlOffset = options.htmlOffset;
                                if (htmlOffset) {
                                    pushpinOptions.anchor = new Microsoft.Maps.Point(-htmlOffset.left, -htmlOffset.top)
                                }
                            }
                            const pushpin = new Microsoft.Maps.Pushpin(location, pushpinOptions);
                            this._map.entities.push(pushpin);
                            const infobox = this._renderTooltip(location, options.tooltip);
                            let handler;
                            if (options.onClick || options.tooltip) {
                                const markerClickAction = this._mapWidget._createAction(options.onClick || _common.noop);
                                const markerNormalizedLocation = this._normalizeLocation(location);
                                handler = Microsoft.Maps.Events.addHandler(pushpin, "click", (function() {
                                    markerClickAction({
                                        location: markerNormalizedLocation
                                    });
                                    if (infobox) {
                                        infobox.setOptions({
                                            visible: true
                                        })
                                    }
                                }))
                            }
                            return {
                                location: location,
                                marker: pushpin,
                                infobox: infobox,
                                handler: handler
                            }
                        }.bind(this))
                    },
                    _renderTooltip: function(location, options) {
                        if (!options) {
                            return
                        }
                        options = this._parseTooltipOptions(options);
                        const infobox = new Microsoft.Maps.Infobox(location, {
                            description: options.text,
                            offset: new Microsoft.Maps.Point(0, 13),
                            visible: options.visible
                        });
                        infobox.setMap(this._map);
                        return infobox
                    },
                    _destroyMarker: function(marker) {
                        this._map.entities.remove(marker.marker);
                        if (marker.infobox) {
                            marker.infobox.setMap(null)
                        }
                        if (marker.handler) {
                            Microsoft.Maps.Events.removeHandler(marker.handler)
                        }
                    },
                    _renderRoute: function(options) {
                        return Promise.all((0, _iterator.map)(options.locations, function(point) {
                            return this._resolveLocation(point)
                        }.bind(this))).then(function(locations) {
                            return new Promise(function(resolve) {
                                const direction = new Microsoft.Maps.Directions.DirectionsManager(this._map);
                                const color = new _color.default(options.color || this._defaultRouteColor()).toHex();
                                const routeColor = new Microsoft.Maps.Color.fromHex(color);
                                routeColor.a = 255 * (options.opacity || this._defaultRouteOpacity());
                                direction.setRenderOptions({
                                    autoUpdateMapView: false,
                                    displayRouteSelector: false,
                                    waypointPushpinOptions: {
                                        visible: false
                                    },
                                    drivingPolylineOptions: {
                                        strokeColor: routeColor,
                                        strokeThickness: options.weight || this._defaultRouteWeight()
                                    },
                                    walkingPolylineOptions: {
                                        strokeColor: routeColor,
                                        strokeThickness: options.weight || this._defaultRouteWeight()
                                    }
                                });
                                direction.setRequestOptions({
                                    routeMode: this._movementMode(options.mode),
                                    routeDraggable: false
                                });
                                (0, _iterator.each)(locations, (function(_, location) {
                                    const waypoint = new Microsoft.Maps.Directions.Waypoint({
                                        location: location
                                    });
                                    direction.addWaypoint(waypoint)
                                }));
                                const directionHandlers = [];
                                directionHandlers.push(Microsoft.Maps.Events.addHandler(direction, "directionsUpdated", (function(args) {
                                    while (directionHandlers.length) {
                                        Microsoft.Maps.Events.removeHandler(directionHandlers.pop())
                                    }
                                    const routeSummary = args.routeSummary[0];
                                    resolve({
                                        instance: direction,
                                        northEast: routeSummary.northEast,
                                        southWest: routeSummary.southWest
                                    })
                                })));
                                directionHandlers.push(Microsoft.Maps.Events.addHandler(direction, "directionsError", (function(args) {
                                    while (directionHandlers.length) {
                                        Microsoft.Maps.Events.removeHandler(directionHandlers.pop())
                                    }
                                    const status = "RouteResponseCode: " + args.responseCode + " - " + args.message;
                                    _ui.default.log("W1006", status);
                                    resolve({
                                        instance: direction
                                    })
                                })));
                                direction.calculateDirections()
                            }.bind(this))
                        }.bind(this))
                    },
                    _destroyRoute: function(routeObject) {
                        routeObject.instance.dispose()
                    },
                    _fitBounds: function() {
                        this._updateBounds();
                        if (this._bounds && this._option("autoAdjust")) {
                            const zoomBeforeFitting = this._map.getZoom();
                            this._preventZoomChangeEvent = true;
                            const bounds = this._bounds.clone();
                            bounds.height = 1.1 * bounds.height;
                            bounds.width = 1.1 * bounds.width;
                            this._map.setView({
                                animate: false,
                                bounds: bounds,
                                zoom: zoomBeforeFitting
                            });
                            const zoomAfterFitting = this._map.getZoom();
                            if (zoomBeforeFitting < zoomAfterFitting) {
                                this._map.setView({
                                    animate: false,
                                    zoom: zoomBeforeFitting
                                })
                            } else {
                                this._option("zoom", zoomAfterFitting)
                            }
                            delete this._preventZoomChangeEvent
                        }
                        return Promise.resolve()
                    },
                    _extendBounds: function(location) {
                        if (this._bounds) {
                            this._bounds = new Microsoft.Maps.LocationRect.fromLocations(this._bounds.getNorthwest(), this._bounds.getSoutheast(), location)
                        } else {
                            this._bounds = new Microsoft.Maps.LocationRect(location, 1e-16, 1e-16)
                        }
                    },
                    clean: function() {
                        if (this._map) {
                            Microsoft.Maps.Events.removeHandler(this._providerViewChangeHandler);
                            Microsoft.Maps.Events.removeHandler(this._providerClickHandler);
                            this._clearMarkers();
                            this._clearRoutes();
                            this._map.dispose()
                        }
                        return Promise.resolve()
                    }
                });
                var _default = BingProvider;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        71430:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/map/provider.dynamic.google.js ***!
              \*******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _provider = _interopRequireDefault(__webpack_require__( /*! ./provider.dynamic */ 67526));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.errors */ 96688));
                var _color = _interopRequireDefault(__webpack_require__( /*! ../../color */ 52752));
                var _ajax = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/ajax */ 37208));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();
                let CustomMarker;
                const googleMapsLoaded = function() {
                    return window.google && window.google.maps
                };
                let googleMapsLoader;
                const GoogleProvider = _provider.default.inherit({
                    _mapType: function(type) {
                        const mapTypes = {
                            hybrid: google.maps.MapTypeId.HYBRID,
                            roadmap: google.maps.MapTypeId.ROADMAP,
                            satellite: google.maps.MapTypeId.SATELLITE
                        };
                        return mapTypes[type] || mapTypes.hybrid
                    },
                    _movementMode: function(type) {
                        const movementTypes = {
                            driving: google.maps.TravelMode.DRIVING,
                            walking: google.maps.TravelMode.WALKING
                        };
                        return movementTypes[type] || movementTypes.driving
                    },
                    _resolveLocation: function(location) {
                        return new Promise(function(resolve) {
                            const latLng = this._getLatLng(location);
                            if (latLng) {
                                resolve(new google.maps.LatLng(latLng.lat, latLng.lng))
                            } else {
                                this._geocodeLocation(location).then((function(geocodedLocation) {
                                    resolve(geocodedLocation)
                                }))
                            }
                        }.bind(this))
                    },
                    _geocodedLocations: {},
                    _geocodeLocationImpl: function(location) {
                        return new Promise((function(resolve) {
                            if (!(0, _type.isDefined)(location)) {
                                resolve(new google.maps.LatLng(0, 0));
                                return
                            }
                            const geocoder = new google.maps.Geocoder;
                            geocoder.geocode({
                                address: location
                            }, (function(results, status) {
                                if (status === google.maps.GeocoderStatus.OK) {
                                    resolve(results[0].geometry.location)
                                } else {
                                    _ui.default.log("W1006", status);
                                    resolve(new google.maps.LatLng(0, 0))
                                }
                            }))
                        }))
                    },
                    _normalizeLocation: function(location) {
                        return {
                            lat: location.lat(),
                            lng: location.lng()
                        }
                    },
                    _normalizeLocationRect: function(locationRect) {
                        return {
                            northEast: this._normalizeLocation(locationRect.getNorthEast()),
                            southWest: this._normalizeLocation(locationRect.getSouthWest())
                        }
                    },
                    _loadImpl: function() {
                        return new Promise(function(resolve) {
                            if (googleMapsLoaded()) {
                                resolve()
                            } else {
                                if (!googleMapsLoader) {
                                    googleMapsLoader = this._loadMapScript()
                                }
                                googleMapsLoader.then(function() {
                                    if (googleMapsLoaded()) {
                                        resolve();
                                        return
                                    }
                                    this._loadMapScript().then(resolve)
                                }.bind(this))
                            }
                        }.bind(this)).then((function() {
                            ! function() {
                                CustomMarker = function(options) {
                                    this._position = options.position;
                                    this._offset = options.offset;
                                    this._$overlayContainer = (0, _renderer.default)("<div>").css({
                                        position: "absolute",
                                        display: "none",
                                        cursor: "pointer"
                                    }).append(options.html);
                                    this.setMap(options.map)
                                };
                                CustomMarker.prototype = new google.maps.OverlayView;
                                CustomMarker.prototype.onAdd = function() {
                                    const $pane = (0, _renderer.default)(this.getPanes().overlayMouseTarget);
                                    $pane.append(this._$overlayContainer);
                                    this._clickListener = google.maps.event.addDomListener(this._$overlayContainer.get(0), "click", function(e) {
                                        google.maps.event.trigger(this, "click");
                                        e.preventDefault()
                                    }.bind(this));
                                    this.draw()
                                };
                                CustomMarker.prototype.onRemove = function() {
                                    google.maps.event.removeListener(this._clickListener);
                                    this._$overlayContainer.remove()
                                };
                                CustomMarker.prototype.draw = function() {
                                    const position = this.getProjection().fromLatLngToDivPixel(this._position);
                                    this._$overlayContainer.css({
                                        left: position.x + this._offset.left,
                                        top: position.y + this._offset.top,
                                        display: "block"
                                    })
                                }
                            }()
                        }))
                    },
                    _loadMapScript: function() {
                        return new Promise(function(resolve) {
                            const key = this._keyOption("google");
                            window._googleScriptReady = resolve;
                            _ajax.default.sendRequest({
                                url: "https://maps.googleapis.com/maps/api/js?callback=_googleScriptReady" + (key ? "&key=" + key : ""),
                                dataType: "script"
                            })
                        }.bind(this)).then((function() {
                            try {
                                delete window._googleScriptReady
                            } catch (e) {
                                window._googleScriptReady = void 0
                            }
                        }))
                    },
                    _init: function() {
                        return new Promise(function(resolve) {
                            this._resolveLocation(this._option("center")).then(function(center) {
                                const showDefaultUI = this._option("controls");
                                this._map = new google.maps.Map(this._$container[0], {
                                    zoom: this._option("zoom"),
                                    center: center,
                                    disableDefaultUI: !showDefaultUI
                                });
                                const listener = google.maps.event.addListener(this._map, "idle", (function() {
                                    resolve(listener)
                                }))
                            }.bind(this))
                        }.bind(this)).then((function(listener) {
                            google.maps.event.removeListener(listener)
                        }))
                    },
                    _attachHandlers: function() {
                        this._boundsChangeListener = google.maps.event.addListener(this._map, "bounds_changed", this._boundsChangeHandler.bind(this));
                        this._clickListener = google.maps.event.addListener(this._map, "click", this._clickActionHandler.bind(this))
                    },
                    _boundsChangeHandler: function() {
                        const bounds = this._map.getBounds();
                        this._option("bounds", this._normalizeLocationRect(bounds));
                        const center = this._map.getCenter();
                        this._option("center", this._normalizeLocation(center));
                        if (!this._preventZoomChangeEvent) {
                            this._option("zoom", this._map.getZoom())
                        }
                    },
                    _clickActionHandler: function(e) {
                        this._fireClickAction({
                            location: this._normalizeLocation(e.latLng)
                        })
                    },
                    updateDimensions: function() {
                        const center = this._option("center");
                        google.maps.event.trigger(this._map, "resize");
                        this._option("center", center);
                        return this.updateCenter()
                    },
                    updateMapType: function() {
                        this._map.setMapTypeId(this._mapType(this._option("type")));
                        return Promise.resolve()
                    },
                    updateBounds: function() {
                        return Promise.all([this._resolveLocation(this._option("bounds.northEast")), this._resolveLocation(this._option("bounds.southWest"))]).then(function(result) {
                            const bounds = new google.maps.LatLngBounds;
                            bounds.extend(result[0]);
                            bounds.extend(result[1]);
                            this._map.fitBounds(bounds)
                        }.bind(this))
                    },
                    updateCenter: function() {
                        return this._resolveLocation(this._option("center")).then(function(center) {
                            this._map.setCenter(center);
                            this._option("center", this._normalizeLocation(center))
                        }.bind(this))
                    },
                    updateZoom: function() {
                        this._map.setZoom(this._option("zoom"));
                        return Promise.resolve()
                    },
                    updateControls: function() {
                        const showDefaultUI = this._option("controls");
                        this._map.setOptions({
                            disableDefaultUI: !showDefaultUI
                        });
                        return Promise.resolve()
                    },
                    isEventsCanceled: function(e) {
                        const gestureHandling = this._map && this._map.get("gestureHandling");
                        const isInfoWindowContent = (0, _renderer.default)(e.target).closest(".".concat("gm-style-iw")).length > 0;
                        if (isInfoWindowContent || "desktop" !== _devices.default.real().deviceType && "cooperative" === gestureHandling) {
                            return false
                        }
                        return this.callBase()
                    },
                    _renderMarker: function(options) {
                        return this._resolveLocation(options.location).then(function(location) {
                            let marker;
                            if (options.html) {
                                marker = new CustomMarker({
                                    map: this._map,
                                    position: location,
                                    html: options.html,
                                    offset: (0, _extend.extend)({
                                        top: 0,
                                        left: 0
                                    }, options.htmlOffset)
                                })
                            } else {
                                marker = new google.maps.Marker({
                                    position: location,
                                    map: this._map,
                                    icon: options.iconSrc || this._option("markerIconSrc")
                                })
                            }
                            const infoWindow = this._renderTooltip(marker, options.tooltip);
                            let listener;
                            if (options.onClick || options.tooltip) {
                                const markerClickAction = this._mapWidget._createAction(options.onClick || _common.noop);
                                const markerNormalizedLocation = this._normalizeLocation(location);
                                listener = google.maps.event.addListener(marker, "click", function() {
                                    markerClickAction({
                                        location: markerNormalizedLocation
                                    });
                                    if (infoWindow) {
                                        infoWindow.open(this._map, marker)
                                    }
                                }.bind(this))
                            }
                            return {
                                location: location,
                                marker: marker,
                                listener: listener
                            }
                        }.bind(this))
                    },
                    _renderTooltip: function(marker, options) {
                        if (!options) {
                            return
                        }
                        options = this._parseTooltipOptions(options);
                        const infoWindow = new google.maps.InfoWindow({
                            content: options.text
                        });
                        if (options.visible) {
                            infoWindow.open(this._map, marker)
                        }
                        return infoWindow
                    },
                    _destroyMarker: function(marker) {
                        marker.marker.setMap(null);
                        if (marker.listener) {
                            google.maps.event.removeListener(marker.listener)
                        }
                    },
                    _renderRoute: function(options) {
                        return Promise.all((0, _iterator.map)(options.locations, function(point) {
                            return this._resolveLocation(point)
                        }.bind(this))).then(function(locations) {
                            return new Promise(function(resolve) {
                                const origin = locations.shift();
                                const destination = locations.pop();
                                const waypoints = (0, _iterator.map)(locations, (function(location) {
                                    return {
                                        location: location,
                                        stopover: true
                                    }
                                }));
                                const request = {
                                    origin: origin,
                                    destination: destination,
                                    waypoints: waypoints,
                                    optimizeWaypoints: true,
                                    travelMode: this._movementMode(options.mode)
                                };
                                (new google.maps.DirectionsService).route(request, function(response, status) {
                                    if (status === google.maps.DirectionsStatus.OK) {
                                        const color = new _color.default(options.color || this._defaultRouteColor()).toHex();
                                        const directionOptions = {
                                            directions: response,
                                            map: this._map,
                                            suppressMarkers: true,
                                            preserveViewport: true,
                                            polylineOptions: {
                                                strokeWeight: options.weight || this._defaultRouteWeight(),
                                                strokeOpacity: options.opacity || this._defaultRouteOpacity(),
                                                strokeColor: color
                                            }
                                        };
                                        const route = new google.maps.DirectionsRenderer(directionOptions);
                                        const bounds = response.routes[0].bounds;
                                        resolve({
                                            instance: route,
                                            northEast: bounds.getNorthEast(),
                                            southWest: bounds.getSouthWest()
                                        })
                                    } else {
                                        _ui.default.log("W1006", status);
                                        resolve({
                                            instance: new google.maps.DirectionsRenderer({})
                                        })
                                    }
                                }.bind(this))
                            }.bind(this))
                        }.bind(this))
                    },
                    _destroyRoute: function(routeObject) {
                        routeObject.instance.setMap(null)
                    },
                    _fitBounds: function() {
                        this._updateBounds();
                        if (this._bounds && this._option("autoAdjust")) {
                            const zoomBeforeFitting = this._map.getZoom();
                            this._preventZoomChangeEvent = true;
                            this._map.fitBounds(this._bounds);
                            this._boundsChangeHandler();
                            const zoomAfterFitting = this._map.getZoom();
                            if (zoomBeforeFitting < zoomAfterFitting) {
                                this._map.setZoom(zoomBeforeFitting)
                            } else {
                                this._option("zoom", zoomAfterFitting)
                            }
                            delete this._preventZoomChangeEvent
                        }
                        return Promise.resolve()
                    },
                    _extendBounds: function(location) {
                        if (this._bounds) {
                            this._bounds.extend(location)
                        } else {
                            this._bounds = new google.maps.LatLngBounds;
                            this._bounds.extend(location)
                        }
                    },
                    clean: function() {
                        if (this._map) {
                            google.maps.event.removeListener(this._boundsChangeListener);
                            google.maps.event.removeListener(this._clickListener);
                            this._clearMarkers();
                            this._clearRoutes();
                            delete this._map;
                            this._$container.empty()
                        }
                        return Promise.resolve()
                    }
                });
                var _default = GoogleProvider;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        67526:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/map/provider.dynamic.js ***!
              \************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _provider = (obj = __webpack_require__( /*! ./provider */ 90169), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const abstract = _provider.default.abstract;
                const DynamicProvider = _provider.default.inherit({
                    _geocodeLocation: function(location) {
                        return new Promise(function(resolve) {
                            const cache = this._geocodedLocations;
                            const cachedLocation = cache[location];
                            if (cachedLocation) {
                                resolve(cachedLocation)
                            } else {
                                this._geocodeLocationImpl(location).then((function(geocodedLocation) {
                                    cache[location] = geocodedLocation;
                                    resolve(geocodedLocation)
                                }))
                            }
                        }.bind(this))
                    },
                    _renderImpl: function() {
                        return this._load().then(function() {
                            return this._init()
                        }.bind(this)).then(function() {
                            return Promise.all([this.updateMapType(), this._areBoundsSet() ? this.updateBounds() : this.updateCenter()])
                        }.bind(this)).then(function() {
                            this._attachHandlers();
                            return new Promise((function(resolve) {
                                const timeout = setTimeout((function() {
                                    clearTimeout(timeout);
                                    resolve()
                                }))
                            }))
                        }.bind(this))
                    },
                    _load: function() {
                        if (!this._mapsLoader) {
                            this._mapsLoader = this._loadImpl()
                        }
                        this._markers = [];
                        this._routes = [];
                        return this._mapsLoader
                    },
                    _loadImpl: abstract,
                    _init: abstract,
                    _attachHandlers: abstract,
                    addMarkers: function(options) {
                        return Promise.all((0, _iterator.map)(options, function(options) {
                            return this._addMarker(options)
                        }.bind(this))).then(function(markerObjects) {
                            this._fitBounds();
                            return [false, (0, _iterator.map)(markerObjects, (function(markerObject) {
                                return markerObject.marker
                            }))]
                        }.bind(this))
                    },
                    _addMarker: function(options) {
                        return this._renderMarker(options).then(function(markerObject) {
                            this._markers.push((0, _extend.extend)({
                                options: options
                            }, markerObject));
                            this._fireMarkerAddedAction({
                                options: options,
                                originalMarker: markerObject.marker
                            });
                            return markerObject
                        }.bind(this))
                    },
                    _renderMarker: abstract,
                    removeMarkers: function(markersOptionsToRemove) {
                        const that = this;
                        (0, _iterator.each)(markersOptionsToRemove, (function(_, markerOptionToRemove) {
                            that._removeMarker(markerOptionToRemove)
                        }));
                        return Promise.resolve()
                    },
                    _removeMarker: function(markersOptionToRemove) {
                        const that = this;
                        (0, _iterator.each)(this._markers, (function(markerIndex, markerObject) {
                            if (markerObject.options !== markersOptionToRemove) {
                                return true
                            }
                            that._destroyMarker(markerObject);
                            that._markers.splice(markerIndex, 1);
                            that._fireMarkerRemovedAction({
                                options: markerObject.options
                            });
                            return false
                        }))
                    },
                    _destroyMarker: abstract,
                    _clearMarkers: function() {
                        while (this._markers.length > 0) {
                            this._removeMarker(this._markers[0].options)
                        }
                    },
                    addRoutes: function(options) {
                        return Promise.all((0, _iterator.map)(options, function(options) {
                            return this._addRoute(options)
                        }.bind(this))).then(function(routeObjects) {
                            this._fitBounds();
                            return [false, (0, _iterator.map)(routeObjects, (function(routeObject) {
                                return routeObject.instance
                            }))]
                        }.bind(this))
                    },
                    _addRoute: function(options) {
                        return this._renderRoute(options).then(function(routeObject) {
                            this._routes.push((0, _extend.extend)({
                                options: options
                            }, routeObject));
                            this._fireRouteAddedAction({
                                options: options,
                                originalRoute: routeObject.instance
                            });
                            return routeObject
                        }.bind(this))
                    },
                    _renderRoute: abstract,
                    removeRoutes: function(options) {
                        const that = this;
                        (0, _iterator.each)(options, (function(routeIndex, options) {
                            that._removeRoute(options)
                        }));
                        return Promise.resolve()
                    },
                    _removeRoute: function(options) {
                        const that = this;
                        (0, _iterator.each)(this._routes, (function(routeIndex, routeObject) {
                            if (routeObject.options !== options) {
                                return true
                            }
                            that._destroyRoute(routeObject);
                            that._routes.splice(routeIndex, 1);
                            that._fireRouteRemovedAction({
                                options: options
                            });
                            return false
                        }))
                    },
                    _destroyRoute: abstract,
                    _clearRoutes: function() {
                        while (this._routes.length > 0) {
                            this._removeRoute(this._routes[0].options)
                        }
                    },
                    adjustViewport: function() {
                        return this._fitBounds()
                    },
                    isEventsCanceled: function() {
                        return true
                    },
                    _fitBounds: abstract,
                    _updateBounds: function() {
                        const that = this;
                        this._clearBounds();
                        if (!this._option("autoAdjust")) {
                            return
                        }(0, _iterator.each)(this._markers, (function(_, markerObject) {
                            that._extendBounds(markerObject.location)
                        }));
                        (0, _iterator.each)(this._routes, (function(_, routeObject) {
                            routeObject.northEast && that._extendBounds(routeObject.northEast);
                            routeObject.southWest && that._extendBounds(routeObject.southWest)
                        }))
                    },
                    _clearBounds: function() {
                        this._bounds = null
                    },
                    _extendBounds: abstract
                });
                var _default = DynamicProvider;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        48112:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/map/provider.google_static.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _provider = _interopRequireDefault(__webpack_require__( /*! ./provider */ 90169));
                var _color = _interopRequireDefault(__webpack_require__( /*! ../../color */ 52752));
                var _click = __webpack_require__( /*! ../../events/click */ 95429);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const GoogleStaticProvider = _provider.default.inherit({
                    _locationToString: function(location) {
                        const latLng = this._getLatLng(location);
                        return latLng ? latLng.lat + "," + latLng.lng : location.toString().replace(/ /g, "+")
                    },
                    _renderImpl: function() {
                        return this._updateMap()
                    },
                    updateDimensions: function() {
                        return this._updateMap()
                    },
                    updateMapType: function() {
                        return this._updateMap()
                    },
                    updateBounds: function() {
                        return Promise.resolve()
                    },
                    updateCenter: function() {
                        return this._updateMap()
                    },
                    updateZoom: function() {
                        return this._updateMap()
                    },
                    updateControls: function() {
                        return Promise.resolve()
                    },
                    addMarkers: function(options) {
                        const that = this;
                        return this._updateMap().then((function(result) {
                            (0, _iterator.each)(options, (function(_, options) {
                                that._fireMarkerAddedAction({
                                    options: options
                                })
                            }));
                            return result
                        }))
                    },
                    removeMarkers: function(options) {
                        const that = this;
                        return this._updateMap().then((function(result) {
                            (0, _iterator.each)(options, (function(_, options) {
                                that._fireMarkerRemovedAction({
                                    options: options
                                })
                            }));
                            return result
                        }))
                    },
                    adjustViewport: function() {
                        return Promise.resolve()
                    },
                    addRoutes: function(options) {
                        const that = this;
                        return this._updateMap().then((function(result) {
                            (0, _iterator.each)(options, (function(_, options) {
                                that._fireRouteAddedAction({
                                    options: options
                                })
                            }));
                            return result
                        }))
                    },
                    removeRoutes: function(options) {
                        const that = this;
                        return this._updateMap().then((function(result) {
                            (0, _iterator.each)(options, (function(_, options) {
                                that._fireRouteRemovedAction({
                                    options: options
                                })
                            }));
                            return result
                        }))
                    },
                    clean: function() {
                        this._$container.css("backgroundImage", "none");
                        _events_engine.default.off(this._$container, this._addEventNamespace(_click.name));
                        return Promise.resolve()
                    },
                    mapRendered: function() {
                        return true
                    },
                    _updateMap: function() {
                        const key = this._keyOption("googleStatic");
                        const $container = this._$container;
                        const requestOptions = ["sensor=false", "size=" + Math.round((0, _size.getWidth)($container)) + "x" + Math.round((0, _size.getHeight)($container)), "maptype=" + this._option("type"), "center=" + this._locationToString(this._option("center")), "zoom=" + this._option("zoom"), this._markersSubstring()];
                        requestOptions.push.apply(requestOptions, this._routeSubstrings());
                        if (key) {
                            requestOptions.push("key=" + key)
                        }
                        const request = "https://maps.google.com/maps/api/staticmap?" + requestOptions.join("&");
                        this._$container.css("background", 'url("' + request + '") no-repeat 0 0');
                        this._attachClickEvent();
                        return Promise.resolve(true)
                    },
                    _markersSubstring: function() {
                        const that = this;
                        const markers = [];
                        const markerIcon = this._option("markerIconSrc");
                        if (markerIcon) {
                            markers.push("icon:" + markerIcon)
                        }(0, _iterator.each)(this._option("markers"), (function(_, marker) {
                            markers.push(that._locationToString(marker.location))
                        }));
                        return "markers=" + markers.join("|")
                    },
                    _routeSubstrings: function() {
                        const that = this;
                        const routes = [];
                        (0, _iterator.each)(this._option("routes"), (function(_, route) {
                            const color = new _color.default(route.color || that._defaultRouteColor()).toHex().replace("#", "0x");
                            const opacity = Math.round(255 * (route.opacity || that._defaultRouteOpacity())).toString(16);
                            const width = route.weight || that._defaultRouteWeight();
                            const locations = [];
                            (0, _iterator.each)(route.locations, (function(_, routePoint) {
                                locations.push(that._locationToString(routePoint))
                            }));
                            routes.push("path=color:" + color + opacity + "|weight:" + width + "|" + locations.join("|"))
                        }));
                        return routes
                    },
                    _attachClickEvent: function() {
                        const that = this;
                        const eventName = this._addEventNamespace(_click.name);
                        _events_engine.default.off(this._$container, eventName);
                        _events_engine.default.on(this._$container, eventName, (function(e) {
                            that._fireClickAction({
                                event: e
                            })
                        }))
                    }
                });
                var _default = GoogleStaticProvider;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        90169:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/map/provider.js ***!
              \****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _class = (obj = __webpack_require__( /*! ../../core/class */ 38377), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                const abstract = _class.default.abstract;
                const Provider = _class.default.inherit({
                    _defaultRouteWeight: function() {
                        return 5
                    },
                    _defaultRouteOpacity: function() {
                        return .5
                    },
                    _defaultRouteColor: function() {
                        return "#0000FF"
                    },
                    ctor: function(map, $container) {
                        this._mapWidget = map;
                        this._$container = $container
                    },
                    render: function(markerOptions, routeOptions) {
                        return this._renderImpl().then(function() {
                            return Promise.all([this._applyFunctionIfNeeded("addMarkers", markerOptions), this._applyFunctionIfNeeded("addRoutes", routeOptions)]).then((function() {
                                return true
                            }))
                        }.bind(this))
                    },
                    _renderImpl: abstract,
                    updateDimensions: abstract,
                    updateMapType: abstract,
                    updateBounds: abstract,
                    updateCenter: abstract,
                    updateZoom: abstract,
                    updateControls: abstract,
                    updateMarkers: function(markerOptionsToRemove, markerOptionsToAdd) {
                        return new Promise(function(resolve) {
                            return this._applyFunctionIfNeeded("removeMarkers", markerOptionsToRemove).then(function(removeValue) {
                                this._applyFunctionIfNeeded("addMarkers", markerOptionsToAdd).then((function(addValue) {
                                    resolve(addValue ? addValue : removeValue)
                                }))
                            }.bind(this))
                        }.bind(this))
                    },
                    addMarkers: abstract,
                    removeMarkers: abstract,
                    adjustViewport: abstract,
                    updateRoutes: function(routeOptionsToRemove, routeOptionsToAdd) {
                        return new Promise(function(resolve) {
                            return this._applyFunctionIfNeeded("removeRoutes", routeOptionsToRemove).then(function(removeValue) {
                                this._applyFunctionIfNeeded("addRoutes", routeOptionsToAdd).then((function(addValue) {
                                    resolve(addValue ? addValue : removeValue)
                                }))
                            }.bind(this))
                        }.bind(this))
                    },
                    addRoutes: abstract,
                    removeRoutes: abstract,
                    clean: abstract,
                    map: function() {
                        return this._map
                    },
                    isEventsCanceled: function() {
                        return false
                    },
                    _option: function(name, value) {
                        if (void 0 === value) {
                            return this._mapWidget.option(name)
                        }
                        this._mapWidget.setOptionSilent(name, value)
                    },
                    _keyOption: function(providerName) {
                        const key = this._option("apiKey");
                        return void 0 === key[providerName] ? key : key[providerName]
                    },
                    _parseTooltipOptions: function(option) {
                        return {
                            text: option.text || option,
                            visible: option.isShown || false
                        }
                    },
                    _getLatLng: function(location) {
                        if ("string" === typeof location) {
                            const coords = (0, _iterator.map)(location.split(","), (function(item) {
                                return item.trim()
                            }));
                            const numericRegex = /^[-+]?[0-9]*\.?[0-9]*$/;
                            if (2 === coords.length && coords[0].match(numericRegex) && coords[1].match(numericRegex)) {
                                return {
                                    lat: parseFloat(coords[0]),
                                    lng: parseFloat(coords[1])
                                }
                            }
                        } else if (Array.isArray(location) && 2 === location.length) {
                            return {
                                lat: location[0],
                                lng: location[1]
                            }
                        } else if ((0, _type.isPlainObject)(location) && (0, _type.isNumeric)(location.lat) && (0, _type.isNumeric)(location.lng)) {
                            return location
                        }
                        return null
                    },
                    _areBoundsSet: function() {
                        return this._option("bounds.northEast") && this._option("bounds.southWest")
                    },
                    _addEventNamespace: function(name) {
                        return (0, _index.addNamespace)(name, this._mapWidget.NAME)
                    },
                    _applyFunctionIfNeeded: function(fnName, array) {
                        if (!array.length) {
                            return Promise.resolve()
                        }
                        return this[fnName](array)
                    },
                    _fireAction: function(name, actionArguments) {
                        this._mapWidget._createActionByOption(name)(actionArguments)
                    },
                    _fireClickAction: function(actionArguments) {
                        this._fireAction("onClick", actionArguments)
                    },
                    _fireMarkerAddedAction: function(actionArguments) {
                        this._fireAction("onMarkerAdded", actionArguments)
                    },
                    _fireMarkerRemovedAction: function(actionArguments) {
                        this._fireAction("onMarkerRemoved", actionArguments)
                    },
                    _fireRouteAddedAction: function(actionArguments) {
                        this._fireAction("onRouteAdded", actionArguments)
                    },
                    _fireRouteRemovedAction: function(actionArguments) {
                        this._fireAction("onRouteRemoved", actionArguments)
                    }
                });
                var _default = Provider;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        76995:
            /*!********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/menu.js ***!
              \********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _ui = (obj = __webpack_require__( /*! ./menu/ui.menu */ 2616), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _ui.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        2616:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/menu/ui.menu.js ***!
              \****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _element = __webpack_require__( /*! ../../core/element */ 6415);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _utils = __webpack_require__( /*! ../overlay/utils */ 13660);
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../events/pointer */ 93786));
                var _hover = __webpack_require__( /*! ../../events/hover */ 24028);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../context_menu/ui.menu_base */ 46377));
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../overlay/ui.overlay */ 89799));
                var _ui3 = _interopRequireDefault(__webpack_require__( /*! ./ui.submenu */ 59987));
                var _button = _interopRequireDefault(__webpack_require__( /*! ../button */ 63008));
                var _tree_view = _interopRequireDefault(__webpack_require__( /*! ../tree_view */ 30254));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const DEFAULT_DELAY = {
                    show: 50,
                    hide: 300
                };
                const ACTIONS = ["onSubmenuShowing", "onSubmenuShown", "onSubmenuHiding", "onSubmenuHidden", "onItemContextMenu", "onItemClick", "onSelectionChanged", "onItemRendered"];
                let Menu = function(_MenuBase) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(Menu, _MenuBase);

                    function Menu() {
                        return _MenuBase.apply(this, arguments) || this
                    }
                    var _proto = Menu.prototype;
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_MenuBase.prototype._getDefaultOptions.call(this), {
                            orientation: "horizontal",
                            submenuDirection: "auto",
                            showFirstSubmenuMode: {
                                name: "onClick",
                                delay: {
                                    show: 50,
                                    hide: 300
                                }
                            },
                            hideSubmenuOnMouseLeave: false,
                            onSubmenuShowing: null,
                            onSubmenuShown: null,
                            onSubmenuHiding: null,
                            onSubmenuHidden: null,
                            adaptivityEnabled: false
                        })
                    };
                    _proto._setOptionsByReference = function() {
                        _MenuBase.prototype._setOptionsByReference.call(this);
                        (0, _extend.extend)(this._optionsByReference, {
                            animation: true,
                            selectedItem: true
                        })
                    };
                    _proto._itemElements = function() {
                        const rootMenuElements = _MenuBase.prototype._itemElements.call(this);
                        const submenuElements = this._submenuItemElements();
                        return rootMenuElements.add(submenuElements)
                    };
                    _proto._submenuItemElements = function() {
                        let elements = [];
                        const itemSelector = ".".concat("dx-menu-item");
                        const currentSubmenu = this._submenus.length && this._submenus[0];
                        if (currentSubmenu && currentSubmenu.itemsContainer()) {
                            elements = currentSubmenu.itemsContainer().find(itemSelector)
                        }
                        return elements
                    };
                    _proto._focusTarget = function() {
                        return this.$element()
                    };
                    _proto._isMenuHorizontal = function() {
                        return "horizontal" === this.option("orientation")
                    };
                    _proto._moveFocus = function(location) {
                        const $items = this._getAvailableItems();
                        const isMenuHorizontal = this._isMenuHorizontal();
                        const $activeItem = this._getActiveItem(true);
                        let argument;
                        let operation;
                        let navigationAction;
                        let $newTarget;
                        switch (location) {
                            case "up":
                                operation = isMenuHorizontal ? "showSubmenu" : this._getItemsNavigationOperation("prevItem");
                                argument = isMenuHorizontal ? $activeItem : $items;
                                navigationAction = this._getKeyboardNavigationAction(operation, argument);
                                $newTarget = navigationAction();
                                break;
                            case "down":
                                operation = isMenuHorizontal ? "showSubmenu" : this._getItemsNavigationOperation("nextItem");
                                argument = isMenuHorizontal ? $activeItem : $items;
                                navigationAction = this._getKeyboardNavigationAction(operation, argument);
                                $newTarget = navigationAction();
                                break;
                            case "right":
                                operation = isMenuHorizontal ? this._getItemsNavigationOperation("nextItem") : "showSubmenu";
                                argument = isMenuHorizontal ? $items : $activeItem;
                                navigationAction = this._getKeyboardNavigationAction(operation, argument);
                                $newTarget = navigationAction();
                                break;
                            case "left":
                                operation = isMenuHorizontal ? this._getItemsNavigationOperation("prevItem") : "showSubmenu";
                                argument = isMenuHorizontal ? $items : $activeItem;
                                navigationAction = this._getKeyboardNavigationAction(operation, argument);
                                $newTarget = navigationAction();
                                break;
                            default:
                                return _MenuBase.prototype._moveFocus.call(this, location)
                        }
                        if ($newTarget && 0 !== $newTarget.length) {
                            this.option("focusedElement", (0, _element.getPublicElement)($newTarget))
                        }
                    };
                    _proto._getItemsNavigationOperation = function(operation) {
                        let navOperation = operation;
                        if (this.option("rtlEnabled")) {
                            navOperation = "prevItem" === operation ? "nextItem" : "prevItem"
                        }
                        return navOperation
                    };
                    _proto._getKeyboardNavigationAction = function(operation, argument) {
                        let action = _common.noop;
                        switch (operation) {
                            case "showSubmenu":
                                if (!argument.hasClass("dx-state-disabled")) {
                                    action = this._showSubmenu.bind(this, argument)
                                }
                                break;
                            case "nextItem":
                                action = this._nextItem.bind(this, argument);
                                break;
                            case "prevItem":
                                action = this._prevItem.bind(this, argument)
                        }
                        return action
                    };
                    _proto._clean = function() {
                        _MenuBase.prototype._clean.call(this);
                        this.option("templatesRenderAsynchronously") && clearTimeout(this._resizeEventTimer)
                    };
                    _proto._visibilityChanged = function(visible) {
                        if (visible) {
                            if (!this._menuItemsWidth) {
                                this._updateItemsWidthCache()
                            }
                            this._dimensionChanged()
                        }
                    };
                    _proto._isAdaptivityEnabled = function() {
                        return this.option("adaptivityEnabled") && "horizontal" === this.option("orientation")
                    };
                    _proto._updateItemsWidthCache = function() {
                        const $menuItems = this.$element().find("ul").first().children("li").children(".".concat("dx-menu-item"));
                        this._menuItemsWidth = this._getSummaryItemsSize("width", $menuItems, true)
                    };
                    _proto._dimensionChanged = function() {
                        if (!this._isAdaptivityEnabled()) {
                            return
                        }
                        const containerWidth = (0, _size.getOuterWidth)(this.$element());
                        this._toggleAdaptiveMode(this._menuItemsWidth > containerWidth)
                    };
                    _proto._init = function() {
                        _MenuBase.prototype._init.call(this);
                        this._submenus = []
                    };
                    _proto._initActions = function() {
                        this._actions = {};
                        (0, _iterator.each)(ACTIONS, (index, action) => {
                            this._actions[action] = this._createActionByOption(action)
                        })
                    };
                    _proto._initMarkup = function() {
                        this._visibleSubmenu = null;
                        this.$element().addClass("dx-menu");
                        _MenuBase.prototype._initMarkup.call(this);
                        this._addCustomCssClass(this.$element());
                        this.setAria("role", "menubar")
                    };
                    _proto._render = function() {
                        _MenuBase.prototype._render.call(this);
                        this._initAdaptivity()
                    };
                    _proto._renderHamburgerButton = function() {
                        this._hamburger = new _button.default((0, _renderer.default)("<div>").addClass("dx-menu-hamburger-button"), {
                            icon: "menu",
                            activeStateEnabled: false,
                            onClick: this._toggleTreeView.bind(this)
                        });
                        return this._hamburger.$element()
                    };
                    _proto._toggleTreeView = function(state) {
                        if ((0, _type.isPlainObject)(state)) {
                            state = !this._overlay.option("visible")
                        }
                        this._overlay.option("visible", state);
                        if (state) {
                            this._treeView.focus()
                        }
                        this._toggleHamburgerActiveState(state)
                    };
                    _proto._toggleHamburgerActiveState = function(state) {
                        this._hamburger && this._hamburger.$element().toggleClass("dx-state-active", state)
                    };
                    _proto._toggleAdaptiveMode = function(state) {
                        const $menuItemsContainer = this.$element().find(".".concat("dx-menu-horizontal"));
                        const $adaptiveElements = this.$element().find(".".concat("dx-menu-adaptive-mode"));
                        if (state) {
                            this._hideVisibleSubmenu()
                        } else {
                            this._treeView && this._treeView.collapseAll();
                            this._overlay && this._toggleTreeView(state)
                        }
                        $menuItemsContainer.toggle(!state);
                        $adaptiveElements.toggle(state)
                    };
                    _proto._removeAdaptivity = function() {
                        if (!this._$adaptiveContainer) {
                            return
                        }
                        this._toggleAdaptiveMode(false);
                        this._$adaptiveContainer.remove();
                        this._$adaptiveContainer = null;
                        this._treeView = null;
                        this._hamburger = null;
                        this._overlay = null
                    };
                    _proto._treeviewItemClickHandler = function(e) {
                        this._actions.onItemClick(e);
                        if (!e.node.children.length) {
                            this._toggleTreeView(false)
                        }
                    };
                    _proto._getAdaptiveOverlayOptions = function() {
                        const rtl = this.option("rtlEnabled");
                        const position = rtl ? "right" : "left";
                        return {
                            _ignoreFunctionValueDeprecation: true,
                            maxHeight: () => (0, _utils.getElementMaxHeightByWindow)(this.$element()),
                            deferRendering: false,
                            shading: false,
                            animation: false,
                            hideOnParentScroll: true,
                            onHidden: () => {
                                this._toggleHamburgerActiveState(false)
                            },
                            height: "auto",
                            hideOnOutsideClick: e => !(0, _renderer.default)(e.target).closest(".".concat("dx-menu-hamburger-button")).length,
                            position: {
                                collision: "flipfit",
                                at: "bottom " + position,
                                my: "top " + position,
                                of: this._hamburger.$element()
                            }
                        }
                    };
                    _proto._getTreeViewOptions = function() {
                        const menuOptions = {};
                        (0, _iterator.each)(["rtlEnabled", "width", "accessKey", "activeStateEnabled", "animation", "dataSource", "disabled", "displayExpr", "displayExpr", "focusStateEnabled", "hint", "hoverStateEnabled", "itemsExpr", "items", "itemTemplate", "selectedExpr", "selectionMode", "tabIndex", "visible"], (_, option) => {
                            menuOptions[option] = this.option(option)
                        });
                        (0, _iterator.each)(["onItemContextMenu", "onSelectionChanged", "onItemRendered"], (_, actionName) => {
                            menuOptions[actionName] = e => {
                                this._actions[actionName](e)
                            }
                        });
                        return (0, _extend.extend)(menuOptions, {
                            dataSource: this.getDataSource(),
                            animationEnabled: !!this.option("animation"),
                            onItemClick: this._treeviewItemClickHandler.bind(this),
                            onItemExpanded: e => {
                                this._overlay.repaint();
                                this._actions.onSubmenuShown(e)
                            },
                            onItemCollapsed: e => {
                                this._overlay.repaint();
                                this._actions.onSubmenuHidden(e)
                            },
                            selectNodesRecursive: false,
                            selectByClick: this.option("selectByClick"),
                            expandEvent: "click"
                        })
                    };
                    _proto._initAdaptivity = function() {
                        if (!this._isAdaptivityEnabled()) {
                            return
                        }
                        this._$adaptiveContainer = (0, _renderer.default)("<div>").addClass("dx-menu-adaptive-mode");
                        const $hamburger = this._renderHamburgerButton();
                        this._treeView = this._createComponent((0, _renderer.default)("<div>"), _tree_view.default, this._getTreeViewOptions());
                        this._overlay = this._createComponent((0, _renderer.default)("<div>"), _ui2.default, this._getAdaptiveOverlayOptions());
                        this._overlay.$content().append(this._treeView.$element()).addClass("dx-menu-adaptive-mode").addClass(this.option("cssClass"));
                        this._overlay.$wrapper().addClass("dx-menu-adaptive-mode-overlay-wrapper");
                        this._$adaptiveContainer.append($hamburger);
                        this._$adaptiveContainer.append(this._overlay.$element());
                        this.$element().append(this._$adaptiveContainer);
                        this._updateItemsWidthCache();
                        this._dimensionChanged()
                    };
                    _proto._getDelay = function(delayType) {
                        const delay = this.option("showFirstSubmenuMode").delay;
                        if (!(0, _type.isDefined)(delay)) {
                            return DEFAULT_DELAY[delayType]
                        } else {
                            return (0, _type.isObject)(delay) ? delay[delayType] : delay
                        }
                    };
                    _proto._keyboardHandler = function(e) {
                        return _MenuBase.prototype._keyboardHandler.call(this, e, !!this._visibleSubmenu)
                    };
                    _proto._renderContainer = function() {
                        const $wrapper = (0, _renderer.default)("<div>");
                        $wrapper.appendTo(this.$element()).addClass(this._isMenuHorizontal() ? "dx-menu-horizontal" : "dx-menu-vertical");
                        return _MenuBase.prototype._renderContainer.call(this, $wrapper)
                    };
                    _proto._renderSubmenuItems = function(node, $itemFrame) {
                        const submenu = this._createSubmenu(node, $itemFrame);
                        this._submenus.push(submenu);
                        this._renderBorderElement($itemFrame);
                        return submenu
                    };
                    _proto._getKeyboardListeners = function() {
                        return _MenuBase.prototype._getKeyboardListeners.call(this).concat(this._visibleSubmenu)
                    };
                    _proto._createSubmenu = function(node, $rootItem) {
                        const $submenuContainer = (0, _renderer.default)("<div>").addClass("dx-context-menu").appendTo($rootItem);
                        const items = this._getChildNodes(node);
                        const subMenu = this._createComponent($submenuContainer, _ui3.default, (0, _extend.extend)(this._getSubmenuOptions(), {
                            _dataAdapter: this._dataAdapter,
                            _parentKey: node.internalFields.key,
                            items: items,
                            onHoverStart: this._clearTimeouts.bind(this),
                            position: this.getSubmenuPosition($rootItem)
                        }));
                        this._attachSubmenuHandlers($rootItem, subMenu);
                        return subMenu
                    };
                    _proto._getSubmenuOptions = function() {
                        const $submenuTarget = (0, _renderer.default)("<div>");
                        const isMenuHorizontal = this._isMenuHorizontal();
                        return {
                            itemTemplate: this.option("itemTemplate"),
                            target: $submenuTarget,
                            orientation: this.option("orientation"),
                            selectionMode: this.option("selectionMode"),
                            cssClass: this.option("cssClass"),
                            selectByClick: this.option("selectByClick"),
                            hoverStateEnabled: this.option("hoverStateEnabled"),
                            activeStateEnabled: this.option("activeStateEnabled"),
                            focusStateEnabled: this.option("focusStateEnabled"),
                            animation: this.option("animation"),
                            showSubmenuMode: this.option("showSubmenuMode"),
                            displayExpr: this.option("displayExpr"),
                            disabledExpr: this.option("disabledExpr"),
                            selectedExpr: this.option("selectedExpr"),
                            itemsExpr: this.option("itemsExpr"),
                            onFocusedItemChanged: e => {
                                if (!e.component.option("visible")) {
                                    return
                                }
                                this.option("focusedElement", e.component.option("focusedElement"))
                            },
                            onSelectionChanged: this._nestedItemOnSelectionChangedHandler.bind(this),
                            onItemClick: this._nestedItemOnItemClickHandler.bind(this),
                            onItemRendered: this._nestedItemOnItemRenderedHandler.bind(this),
                            onLeftFirstItem: isMenuHorizontal ? null : this._moveMainMenuFocus.bind(this, "prevItem"),
                            onLeftLastItem: isMenuHorizontal ? null : this._moveMainMenuFocus.bind(this, "nextItem"),
                            onCloseRootSubmenu: this._moveMainMenuFocus.bind(this, isMenuHorizontal ? "prevItem" : null),
                            onExpandLastSubmenu: isMenuHorizontal ? this._moveMainMenuFocus.bind(this, "nextItem") : null
                        }
                    };
                    _proto._getShowFirstSubmenuMode = function() {
                        if (!this._isDesktopDevice()) {
                            return "onClick"
                        }
                        const optionValue = this.option("showFirstSubmenuMode");
                        return (0, _type.isObject)(optionValue) ? optionValue.name : optionValue
                    };
                    _proto._moveMainMenuFocus = function(direction) {
                        const $items = this._getAvailableItems();
                        const itemCount = $items.length;
                        const $currentItem = $items.filter(".".concat("dx-menu-item-expanded")).eq(0);
                        let itemIndex = $items.index($currentItem);
                        this._hideSubmenu(this._visibleSubmenu);
                        itemIndex += "prevItem" === direction ? -1 : 1;
                        if (itemIndex >= itemCount) {
                            itemIndex = 0
                        } else if (itemIndex < 0) {
                            itemIndex = itemCount - 1
                        }
                        const $newItem = $items.eq(itemIndex);
                        this.option("focusedElement", (0, _element.getPublicElement)($newItem))
                    };
                    _proto._nestedItemOnSelectionChangedHandler = function(args) {
                        const selectedItem = args.addedItems.length && args.addedItems[0];
                        const submenu = _ui3.default.getInstance(args.element);
                        const onSelectionChanged = this._actions.onSelectionChanged;
                        onSelectionChanged(args);
                        selectedItem && this._clearSelectionInSubmenus(selectedItem[0], submenu);
                        this._clearRootSelection();
                        this._setOptionWithoutOptionChange("selectedItem", selectedItem)
                    };
                    _proto._clearSelectionInSubmenus = function(item, targetSubmenu) {
                        const cleanAllSubmenus = !arguments.length;
                        (0, _iterator.each)(this._submenus, (index, submenu) => {
                            const $submenu = submenu._itemContainer();
                            const isOtherItem = !$submenu.is(targetSubmenu && targetSubmenu._itemContainer());
                            const $selectedItem = $submenu.find(".".concat(this._selectedItemClass()));
                            if (isOtherItem && $selectedItem.length || cleanAllSubmenus) {
                                $selectedItem.removeClass(this._selectedItemClass());
                                const selectedItemData = this._getItemData($selectedItem);
                                if (selectedItemData) {
                                    selectedItemData.selected = false
                                }
                                submenu._clearSelectedItems()
                            }
                        })
                    };
                    _proto._clearRootSelection = function() {
                        const $prevSelectedItem = this.$element().find(".".concat("dx-menu-items-container")).first().children().children().filter(".".concat(this._selectedItemClass()));
                        if ($prevSelectedItem.length) {
                            const prevSelectedItemData = this._getItemData($prevSelectedItem);
                            prevSelectedItemData.selected = false;
                            $prevSelectedItem.removeClass(this._selectedItemClass())
                        }
                    };
                    _proto._nestedItemOnItemClickHandler = function(e) {
                        this._actions.onItemClick(e)
                    };
                    _proto._nestedItemOnItemRenderedHandler = function(e) {
                        this._actions.onItemRendered(e)
                    };
                    _proto._attachSubmenuHandlers = function($rootItem, submenu) {
                        const $submenuOverlayContent = submenu.getOverlayContent();
                        const submenus = $submenuOverlayContent.find(".".concat("dx-submenu"));
                        const submenuMouseLeaveName = (0, _index.addNamespace)(_hover.end, this.NAME + "_submenu");
                        submenu.option({
                            onShowing: this._submenuOnShowingHandler.bind(this, $rootItem, submenu),
                            onShown: this._submenuOnShownHandler.bind(this, $rootItem, submenu),
                            onHiding: this._submenuOnHidingHandler.bind(this, $rootItem, submenu),
                            onHidden: this._submenuOnHiddenHandler.bind(this, $rootItem, submenu)
                        });
                        (0, _iterator.each)(submenus, (index, submenu) => {
                            _events_engine.default.off(submenu, submenuMouseLeaveName);
                            _events_engine.default.on(submenu, submenuMouseLeaveName, null, this._submenuMouseLeaveHandler.bind(this, $rootItem))
                        })
                    };
                    _proto._submenuOnShowingHandler = function($rootItem, submenu) {
                        const $border = $rootItem.children(".".concat("dx-context-menu-container-border"));
                        this._actions.onSubmenuShowing({
                            rootItem: (0, _element.getPublicElement)($rootItem),
                            submenu: submenu
                        });
                        $border.show();
                        $rootItem.addClass("dx-menu-item-expanded")
                    };
                    _proto._submenuOnShownHandler = function($rootItem, submenu) {
                        this._actions.onSubmenuShown({
                            rootItem: (0, _element.getPublicElement)($rootItem),
                            submenu: submenu
                        })
                    };
                    _proto._submenuOnHidingHandler = function($rootItem, submenu, eventArgs) {
                        const $border = $rootItem.children(".".concat("dx-context-menu-container-border"));
                        const args = eventArgs;
                        args.rootItem = (0, _element.getPublicElement)($rootItem);
                        args.submenu = submenu;
                        this._actions.onSubmenuHiding(args);
                        eventArgs = args;
                        if (!eventArgs.cancel) {
                            if (this._visibleSubmenu === submenu) {
                                this._visibleSubmenu = null
                            }
                            $border.hide();
                            $rootItem.removeClass("dx-menu-item-expanded")
                        }
                    };
                    _proto._submenuOnHiddenHandler = function($rootItem, submenu) {
                        this._actions.onSubmenuHidden({
                            rootItem: (0, _element.getPublicElement)($rootItem),
                            submenu: submenu
                        })
                    };
                    _proto._submenuMouseLeaveHandler = function($rootItem, eventArgs) {
                        const target = (0, _renderer.default)(eventArgs.relatedTarget).parents(".".concat("dx-context-menu"))[0];
                        const contextMenu = this._getSubmenuByRootElement($rootItem).getOverlayContent()[0];
                        if (this.option("hideSubmenuOnMouseLeave") && target !== contextMenu) {
                            this._clearTimeouts();
                            setTimeout(this._hideSubmenuAfterTimeout.bind(this), this._getDelay("hide"))
                        }
                    };
                    _proto._hideSubmenuAfterTimeout = function() {
                        if (!this._visibleSubmenu) {
                            return
                        }
                        const isRootItemHovered = (0, _renderer.default)(this._visibleSubmenu.$element().context).hasClass("dx-state-hover");
                        const isSubmenuItemHovered = this._visibleSubmenu.getOverlayContent().find(".".concat("dx-state-hover")).length;
                        const hoveredElementFromSubMenu = this._visibleSubmenu.getOverlayContent().get(0).querySelector(":hover");
                        if (!hoveredElementFromSubMenu && !isSubmenuItemHovered && !isRootItemHovered) {
                            this._visibleSubmenu.hide()
                        }
                    };
                    _proto._getSubmenuByRootElement = function($rootItem) {
                        if (!$rootItem) {
                            return false
                        }
                        const $submenu = $rootItem.children(".".concat("dx-context-menu"));
                        return $submenu.length && _ui3.default.getInstance($submenu)
                    };
                    _proto.getSubmenuPosition = function($rootItem) {
                        const isHorizontalMenu = this._isMenuHorizontal();
                        const submenuDirection = this.option("submenuDirection").toLowerCase();
                        const rtlEnabled = this.option("rtlEnabled");
                        const submenuPosition = {
                            collision: "flip",
                            of: $rootItem,
                            precise: true
                        };
                        switch (submenuDirection) {
                            case "leftortop":
                                submenuPosition.at = "left top";
                                submenuPosition.my = isHorizontalMenu ? "left bottom" : "right top";
                                break;
                            case "rightorbottom":
                                submenuPosition.at = isHorizontalMenu ? "left bottom" : "right top";
                                submenuPosition.my = "left top";
                                break;
                            default:
                                if (isHorizontalMenu) {
                                    submenuPosition.at = rtlEnabled ? "right bottom" : "left bottom";
                                    submenuPosition.my = rtlEnabled ? "right top" : "left top"
                                } else {
                                    submenuPosition.at = rtlEnabled ? "left top" : "right top";
                                    submenuPosition.my = rtlEnabled ? "right top" : "left top"
                                }
                        }
                        return submenuPosition
                    };
                    _proto._renderBorderElement = function($item) {
                        (0, _renderer.default)("<div>").appendTo($item).addClass("dx-context-menu-container-border").hide()
                    };
                    _proto._itemPointerDownHandler = function(e) {
                        const $target = (0, _renderer.default)(e.target);
                        const $closestItem = $target.closest(this._itemElements());
                        if ($closestItem.hasClass("dx-menu-item-has-submenu")) {
                            this.option("focusedElement", null);
                            return
                        }
                        _MenuBase.prototype._itemPointerDownHandler.call(this, e)
                    };
                    _proto._hoverStartHandler = function(e) {
                        const mouseMoveEventName = (0, _index.addNamespace)(_pointer.default.move, this.NAME);
                        const $item = this._getItemElementByEventArgs(e);
                        const node = this._dataAdapter.getNodeByItem(this._getItemData($item));
                        const isSelectionActive = (0, _type.isDefined)(e.buttons) && 1 === e.buttons || !(0, _type.isDefined)(e.buttons) && 1 === e.which;
                        if (this._isItemDisabled($item)) {
                            return
                        }
                        _events_engine.default.off($item, mouseMoveEventName);
                        if (!this._hasChildren(node)) {
                            this._showSubmenuTimer = setTimeout(this._hideSubmenuAfterTimeout.bind(this), this._getDelay("hide"));
                            return
                        }
                        if ("onHover" === this._getShowFirstSubmenuMode() && !isSelectionActive) {
                            const submenu = this._getSubmenuByElement($item);
                            this._clearTimeouts();
                            if (!submenu.isOverlayVisible()) {
                                _events_engine.default.on($item, mouseMoveEventName, this._itemMouseMoveHandler.bind(this));
                                this._showSubmenuTimer = this._getDelay("hide")
                            }
                        }
                    };
                    _proto._hoverEndHandler = function(eventArg) {
                        const $item = this._getItemElementByEventArgs(eventArg);
                        const relatedTarget = (0, _renderer.default)(eventArg.relatedTarget);
                        _MenuBase.prototype._hoverEndHandler.call(this, eventArg);
                        this._clearTimeouts();
                        if (this._isItemDisabled($item)) {
                            return
                        }
                        if (relatedTarget.hasClass("dx-context-menu-content-delimiter")) {
                            return
                        }
                        if (this.option("hideSubmenuOnMouseLeave") && !relatedTarget.hasClass("dx-menu-items-container")) {
                            this._hideSubmenuTimer = setTimeout(() => {
                                this._hideSubmenuAfterTimeout()
                            }, this._getDelay("hide"))
                        }
                    };
                    _proto._hideVisibleSubmenu = function() {
                        if (!this._visibleSubmenu) {
                            return false
                        }
                        this._hideSubmenu(this._visibleSubmenu);
                        return true
                    };
                    _proto._showSubmenu = function($itemElement) {
                        const submenu = this._getSubmenuByElement($itemElement);
                        if (this._visibleSubmenu !== submenu) {
                            this._hideVisibleSubmenu()
                        }
                        if (submenu) {
                            this._clearTimeouts();
                            this.focus();
                            submenu.show();
                            this.option("focusedElement", submenu.option("focusedElement"))
                        }
                        this._visibleSubmenu = submenu;
                        this._hoveredRootItem = $itemElement
                    };
                    _proto._hideSubmenu = function(submenu) {
                        submenu && submenu.hide();
                        if (this._visibleSubmenu === submenu) {
                            this._visibleSubmenu = null
                        }
                        this._hoveredRootItem = null
                    };
                    _proto._itemMouseMoveHandler = function(e) {
                        if (e.pointers && e.pointers.length) {
                            return
                        }
                        const $item = (0, _renderer.default)(e.currentTarget);
                        if (!(0, _type.isDefined)(this._showSubmenuTimer)) {
                            return
                        }
                        this._clearTimeouts();
                        this._showSubmenuTimer = setTimeout(() => {
                            const submenu = this._getSubmenuByElement($item);
                            if (submenu && !submenu.isOverlayVisible()) {
                                this._showSubmenu($item)
                            }
                        }, this._getDelay("show"))
                    };
                    _proto._clearTimeouts = function() {
                        clearTimeout(this._hideSubmenuTimer);
                        clearTimeout(this._showSubmenuTimer)
                    };
                    _proto._getSubmenuByElement = function($itemElement, itemData) {
                        const submenu = this._getSubmenuByRootElement($itemElement);
                        if (submenu) {
                            return submenu
                        } else {
                            itemData = itemData || this._getItemData($itemElement);
                            const node = this._dataAdapter.getNodeByItem(itemData);
                            return this._hasChildren(node) && this._renderSubmenuItems(node, $itemElement)
                        }
                    };
                    _proto._updateSubmenuVisibilityOnClick = function(actionArgs) {
                        const args = actionArgs.args.length && actionArgs.args[0];
                        if (!args || this._disabledGetter(args.itemData)) {
                            return
                        }
                        const $itemElement = (0, _renderer.default)(args.itemElement);
                        const currentSubmenu = this._getSubmenuByElement($itemElement, args.itemData);
                        this._updateSelectedItemOnClick(actionArgs);
                        if (this._visibleSubmenu) {
                            if (this._visibleSubmenu === currentSubmenu) {
                                if ("onClick" === this.option("showFirstSubmenuMode")) {
                                    this._hideSubmenu(this._visibleSubmenu)
                                }
                                return
                            } else {
                                this._hideSubmenu(this._visibleSubmenu)
                            }
                        }
                        if (!currentSubmenu) {
                            return
                        }
                        if (!currentSubmenu.isOverlayVisible()) {
                            this._showSubmenu($itemElement);
                            return
                        }
                    };
                    _proto._optionChanged = function(args) {
                        if (ACTIONS.indexOf(args.name) >= 0) {
                            this._initActions();
                            return
                        }
                        switch (args.name) {
                            case "orientation":
                            case "submenuDirection":
                                this._invalidate();
                                break;
                            case "showFirstSubmenuMode":
                            case "hideSubmenuOnMouseLeave":
                                break;
                            case "showSubmenuMode":
                                this._changeSubmenusOption(args.name, args.value);
                                break;
                            case "adaptivityEnabled":
                                args.value ? this._initAdaptivity() : this._removeAdaptivity();
                                break;
                            case "width":
                                if (this._isAdaptivityEnabled()) {
                                    this._treeView.option(args.name, args.value);
                                    this._overlay.option(args.name, args.value)
                                }
                                _MenuBase.prototype._optionChanged.call(this, args);
                                this._dimensionChanged();
                                break;
                            case "animation":
                                if (this._isAdaptivityEnabled()) {
                                    this._treeView.option("animationEnabled", !!args.value)
                                }
                                _MenuBase.prototype._optionChanged.call(this, args);
                                break;
                            default:
                                if (this._isAdaptivityEnabled() && (args.name === args.fullName || "items" === args.name)) {
                                    this._treeView.option(args.fullName, args.value)
                                }
                                _MenuBase.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto._changeSubmenusOption = function(name, value) {
                        (0, _iterator.each)(this._submenus, (index, submenu) => {
                            submenu.option(name, value)
                        })
                    };
                    _proto.selectItem = function(itemElement) {
                        this._hideSubmenu(this._visibleSubmenu);
                        _MenuBase.prototype.selectItem.call(this, itemElement)
                    };
                    _proto.unselectItem = function(itemElement) {
                        this._hideSubmenu(this._visibleSubmenu);
                        _MenuBase.prototype.selectItem.call(this, itemElement)
                    };
                    return Menu
                }(_ui.default);
                (0, _component_registrator.default)("dxMenu", Menu);
                var _default = Menu;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        59987:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/menu/ui.submenu.js ***!
              \*******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _element = __webpack_require__( /*! ../../core/element */ 6415);
                var _position = _interopRequireDefault(__webpack_require__( /*! ../../animation/position */ 49387));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _context_menu = _interopRequireDefault(__webpack_require__( /*! ../context_menu */ 10042));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let Submenu = function(_ContextMenu) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(Submenu, _ContextMenu);

                    function Submenu() {
                        return _ContextMenu.apply(this, arguments) || this
                    }
                    var _proto = Submenu.prototype;
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_ContextMenu.prototype._getDefaultOptions.call(this), {
                            orientation: "horizontal",
                            tabIndex: null,
                            onHoverStart: _common.noop
                        })
                    };
                    _proto._initDataAdapter = function() {
                        this._dataAdapter = this.option("_dataAdapter");
                        if (!this._dataAdapter) {
                            _ContextMenu.prototype._initDataAdapter.call(this)
                        }
                    };
                    _proto._renderContentImpl = function() {
                        this._renderContextMenuOverlay();
                        _ContextMenu.prototype._renderContentImpl.call(this);
                        const node = this._dataAdapter.getNodeByKey(this.option("_parentKey"));
                        node && this._renderItems(this._getChildNodes(node));
                        this._renderDelimiter()
                    };
                    _proto._renderDelimiter = function() {
                        this.$contentDelimiter = (0, _renderer.default)("<div>").appendTo(this._itemContainer()).addClass("dx-context-menu-content-delimiter")
                    };
                    _proto._getOverlayOptions = function() {
                        return (0, _extend.extend)(true, _ContextMenu.prototype._getOverlayOptions.call(this), {
                            onPositioned: this._overlayPositionedActionHandler.bind(this),
                            position: {
                                precise: true
                            }
                        })
                    };
                    _proto._overlayPositionedActionHandler = function(arg) {
                        this._showDelimiter(arg)
                    };
                    _proto._hoverEndHandler = function(e) {
                        _ContextMenu.prototype._hoverEndHandler.call(this, e);
                        this._toggleFocusClass(false, e.currentTarget)
                    };
                    _proto._isMenuHorizontal = function() {
                        return "horizontal" === this.option("orientation")
                    };
                    _proto._hoverStartHandler = function(e) {
                        const hoverStartAction = this.option("onHoverStart");
                        hoverStartAction(e);
                        _ContextMenu.prototype._hoverStartHandler.call(this, e);
                        this._toggleFocusClass(true, e.currentTarget)
                    };
                    _proto._drawSubmenu = function($rootItem) {
                        this._actions.onShowing({
                            rootItem: (0, _element.getPublicElement)($rootItem),
                            submenu: this
                        });
                        _ContextMenu.prototype._drawSubmenu.call(this, $rootItem);
                        this._actions.onShown({
                            rootItem: (0, _element.getPublicElement)($rootItem),
                            submenu: this
                        })
                    };
                    _proto._hideSubmenu = function($rootItem) {
                        this._actions.onHiding({
                            cancel: true,
                            rootItem: (0, _element.getPublicElement)($rootItem),
                            submenu: this
                        });
                        _ContextMenu.prototype._hideSubmenu.call(this, $rootItem);
                        this._actions.onHidden({
                            rootItem: (0, _element.getPublicElement)($rootItem),
                            submenu: this
                        })
                    };
                    _proto._showDelimiter = function(arg) {
                        if (!this.$contentDelimiter) {
                            return
                        }
                        const $submenu = this._itemContainer().children(".".concat("dx-submenu")).eq(0);
                        const $rootItem = this.option("position").of.find(".dx-context-menu-container-border");
                        const position = {
                            of: $submenu,
                            precise: true
                        };
                        const containerOffset = arg.position;
                        const vLocation = containerOffset.v.location;
                        const hLocation = containerOffset.h.location;
                        const rootOffset = $rootItem.offset();
                        const offsetLeft = Math.round(rootOffset.left);
                        const offsetTop = Math.round(rootOffset.top);
                        const rootWidth = (0, _size.getWidth)($rootItem);
                        const rootHeight = (0, _size.getHeight)($rootItem);
                        const submenuWidth = (0, _size.getWidth)($submenu);
                        const submenuHeight = (0, _size.getHeight)($submenu);
                        this.$contentDelimiter.css("display", "block");
                        (0, _size.setWidth)(this.$contentDelimiter, this._isMenuHorizontal() ? rootWidth < submenuWidth ? rootWidth : submenuWidth : 3);
                        (0, _size.setHeight)(this.$contentDelimiter, this._isMenuHorizontal() ? 3 : rootHeight < submenuHeight ? rootHeight : submenuHeight);
                        if (this._isMenuHorizontal()) {
                            if (vLocation > offsetTop) {
                                if (Math.round(hLocation) === offsetLeft) {
                                    position.offset = "0 -2.5";
                                    position.at = position.my = "left top"
                                } else {
                                    position.offset = "0 -2.5";
                                    position.at = position.my = "right top"
                                }
                            } else {
                                (0, _size.setHeight)(this.$contentDelimiter, 5);
                                if (Math.round(hLocation) === offsetLeft) {
                                    position.offset = "0 5";
                                    position.at = position.my = "left bottom"
                                } else {
                                    position.offset = "0 5";
                                    position.at = position.my = "right bottom"
                                }
                            }
                        } else if (hLocation > offsetLeft) {
                            if (Math.round(vLocation) === offsetTop) {
                                position.offset = "-2.5 0";
                                position.at = position.my = "left top"
                            } else {
                                position.offset = "-2.5 0";
                                position.at = position.my = "left bottom"
                            }
                        } else if (Math.round(vLocation) === offsetTop) {
                            position.offset = "2.5 0";
                            position.at = position.my = "right top"
                        } else {
                            position.offset = "2.5 0";
                            position.at = position.my = "right bottom"
                        }
                        _position.default.setup(this.$contentDelimiter, position)
                    };
                    _proto._getContextMenuPosition = function() {
                        return this.option("position")
                    };
                    _proto.isOverlayVisible = function() {
                        return this._overlay.option("visible")
                    };
                    _proto.getOverlayContent = function() {
                        return this._overlay.$content()
                    };
                    return Submenu
                }(_context_menu.default);
                var _default = Submenu;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        86478:
            /*!**************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/multi_view.js ***!
              \**************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _translator2 = __webpack_require__( /*! ../animation/translator */ 31648);
                var _uiMulti_view = __webpack_require__( /*! ./multi_view/ui.multi_view.animation */ 22053);
                var _math = __webpack_require__( /*! ../core/utils/math */ 60810);
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);
                var _visibility_change = __webpack_require__( /*! ../events/visibility_change */ 80506);
                var _element = __webpack_require__( /*! ../core/element */ 6415);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../core/devices */ 20530));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _uiCollection_widget = _interopRequireDefault(__webpack_require__( /*! ./collection/ui.collection_widget.live_update */ 69010));
                var _swipeable = _interopRequireDefault(__webpack_require__( /*! ../events/gesture/swipeable */ 66894));
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../localization/message */ 28109));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const toNumber = value => +value;
                const MultiView = _uiCollection_widget.default.inherit({
                    _activeStateUnit: ".dx-multiview-item",
                    _supportedKeys: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            pageUp: _common.noop,
                            pageDown: _common.noop
                        })
                    },
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            selectedIndex: 0,
                            swipeEnabled: true,
                            animationEnabled: true,
                            loop: false,
                            deferRendering: true,
                            loopItemFocus: false,
                            selectOnFocus: true,
                            selectionMode: "single",
                            selectionRequired: true,
                            selectByClick: false
                        })
                    },
                    _defaultOptionsRules: function() {
                        return this.callBase().concat([{
                            device: function() {
                                return "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator()
                            },
                            options: {
                                focusStateEnabled: true
                            }
                        }])
                    },
                    _itemClass: function() {
                        return "dx-multiview-item"
                    },
                    _itemDataKey: function() {
                        return "dxMultiViewItemData"
                    },
                    _itemContainer: function() {
                        return this._$itemContainer
                    },
                    _itemElements: function() {
                        return this._itemContainer().children(this._itemSelector())
                    },
                    _itemWidth: function() {
                        if (!this._itemWidthValue) {
                            this._itemWidthValue = (0, _size.getWidth)(this._$wrapper)
                        }
                        return this._itemWidthValue
                    },
                    _clearItemWidthCache: function() {
                        delete this._itemWidthValue
                    },
                    _itemsCount: function() {
                        return this.option("items").length
                    },
                    _normalizeIndex: function(index) {
                        const count = this._itemsCount();
                        if (index < 0) {
                            index += count
                        }
                        if (index >= count) {
                            index -= count
                        }
                        return index
                    },
                    _getRTLSignCorrection: function() {
                        return this.option("rtlEnabled") ? -1 : 1
                    },
                    _init: function() {
                        this.callBase.apply(this, arguments);
                        const $element = this.$element();
                        $element.addClass("dx-multiview");
                        this._$wrapper = (0, _renderer.default)("<div>").addClass("dx-multiview-wrapper");
                        this._$wrapper.appendTo($element);
                        this._$itemContainer = (0, _renderer.default)("<div>").addClass("dx-multiview-item-container");
                        this._$itemContainer.appendTo(this._$wrapper);
                        this.option("loopItemFocus", this.option("loop"));
                        this._findBoundaryIndices();
                        this._initSwipeable()
                    },
                    _initMarkup: function() {
                        this._deferredItems = [];
                        this.callBase();
                        const selectedItemIndices = this._getSelectedItemIndices();
                        this._updateItemsVisibility(selectedItemIndices[0]);
                        this._setElementAria();
                        this._setItemsAria()
                    },
                    _afterItemElementDeleted: function($item, deletedActionArgs) {
                        this.callBase($item, deletedActionArgs);
                        if (this._deferredItems) {
                            this._deferredItems.splice(deletedActionArgs.itemIndex, 1)
                        }
                    },
                    _beforeItemElementInserted: function(change) {
                        this.callBase.apply(this, arguments);
                        if (this._deferredItems) {
                            this._deferredItems.splice(change.index, 0, null)
                        }
                    },
                    _executeItemRenderAction: function(index, itemData, itemElement) {
                        index = (this.option("items") || []).indexOf(itemData);
                        this.callBase(index, itemData, itemElement)
                    },
                    _renderItemContent: function(args) {
                        const renderContentDeferred = new _deferred.Deferred;
                        const that = this;
                        const callBase = this.callBase;
                        const deferred = new _deferred.Deferred;
                        deferred.done((function() {
                            const $itemContent = callBase.call(that, args);
                            renderContentDeferred.resolve($itemContent)
                        }));
                        this._deferredItems[args.index] = deferred;
                        this.option("deferRendering") || deferred.resolve();
                        return renderContentDeferred.promise()
                    },
                    _render: function() {
                        this.callBase();
                        (0, _common.deferRender)(() => {
                            const selectedItemIndices = this._getSelectedItemIndices();
                            this._updateItems(selectedItemIndices[0])
                        })
                    },
                    _getElementAria: () => ({
                        role: "group",
                        roledescription: _message.default.format("dxMultiView-elementAriaRoleDescription"),
                        label: _message.default.format("dxMultiView-elementAriaLabel")
                    }),
                    _setElementAria() {
                        const aria = this._getElementAria();
                        this.setAria(aria, this.$element())
                    },
                    _setItemsAria() {
                        const $itemElements = this._itemElements();
                        const itemsCount = this._itemsCount();
                        $itemElements.each((itemIndex, item) => {
                            const aria = this._getItemAria({
                                itemIndex: itemIndex,
                                itemsCount: itemsCount
                            });
                            this.setAria(aria, (0, _renderer.default)(item))
                        })
                    },
                    _getItemAria(_ref) {
                        let {
                            itemIndex: itemIndex,
                            itemsCount: itemsCount
                        } = _ref;
                        const aria = {
                            role: "group",
                            roledescription: _message.default.format("dxMultiView-itemAriaRoleDescription"),
                            label: _message.default.format("dxMultiView-itemAriaLabel", itemIndex + 1, itemsCount)
                        };
                        return aria
                    },
                    _updateItems: function(selectedIndex, newIndex) {
                        this._updateItemsPosition(selectedIndex, newIndex);
                        this._updateItemsVisibility(selectedIndex, newIndex)
                    },
                    _modifyByChanges: function() {
                        this.callBase.apply(this, arguments);
                        const selectedItemIndices = this._getSelectedItemIndices();
                        this._updateItemsVisibility(selectedItemIndices[0])
                    },
                    _updateItemsPosition: function(selectedIndex, newIndex) {
                        const $itemElements = this._itemElements();
                        const positionSign = (0, _type.isDefined)(newIndex) ? -this._animationDirection(newIndex, selectedIndex) : void 0;
                        const $selectedItem = $itemElements.eq(selectedIndex);
                        _uiMulti_view._translator.move($selectedItem, 0);
                        if ((0, _type.isDefined)(newIndex)) {
                            _uiMulti_view._translator.move($itemElements.eq(newIndex), 100 * positionSign + "%")
                        }
                    },
                    _updateItemsVisibility(selectedIndex, newIndex) {
                        const $itemElements = this._itemElements();
                        $itemElements.each((itemIndex, item) => {
                            const $item = (0, _renderer.default)(item);
                            const isHidden = itemIndex !== selectedIndex && itemIndex !== newIndex;
                            if (!isHidden) {
                                this._renderSpecificItem(itemIndex)
                            }
                            $item.toggleClass("dx-multiview-item-hidden", isHidden);
                            this.setAria("hidden", isHidden || void 0, $item)
                        })
                    },
                    _renderSpecificItem: function(index) {
                        const $item = this._itemElements().eq(index);
                        const hasItemContent = $item.find(this._itemContentClass()).length > 0;
                        if ((0, _type.isDefined)(index) && !hasItemContent) {
                            this._deferredItems[index].resolve();
                            (0, _visibility_change.triggerResizeEvent)($item)
                        }
                    },
                    _refreshItem: function($item, item) {
                        this.callBase($item, item);
                        this._updateItemsVisibility(this.option("selectedIndex"))
                    },
                    _setAriaSelectionAttribute: _common.noop,
                    _updateSelection: function(addedSelection, removedSelection) {
                        const newIndex = addedSelection[0];
                        const prevIndex = removedSelection[0];
                        _uiMulti_view.animation.complete(this._$itemContainer);
                        this._updateItems(prevIndex, newIndex);
                        const animationDirection = this._animationDirection(newIndex, prevIndex);
                        this._animateItemContainer(animationDirection * this._itemWidth(), function() {
                            _uiMulti_view._translator.move(this._$itemContainer, 0);
                            this._updateItems(newIndex);
                            (0, _size.getWidth)(this._$itemContainer)
                        }.bind(this))
                    },
                    _animateItemContainer: function(position, completeCallback) {
                        const duration = this.option("animationEnabled") ? 200 : 0;
                        _uiMulti_view.animation.moveTo(this._$itemContainer, position, duration, completeCallback)
                    },
                    _animationDirection: function(newIndex, prevIndex) {
                        const containerPosition = ($element = this._$itemContainer, (0, _translator2.locate)($element).left);
                        var $element;
                        const indexDifference = (prevIndex - newIndex) * this._getRTLSignCorrection() * this._getItemFocusLoopSignCorrection();
                        const isSwipePresent = 0 !== containerPosition;
                        const directionSignVariable = isSwipePresent ? containerPosition : indexDifference;
                        return (0, _math.sign)(directionSignVariable)
                    },
                    _getSwipeDisabledState() {
                        return !this.option("swipeEnabled") || this._itemsCount() <= 1
                    },
                    _initSwipeable() {
                        this._createComponent(this.$element(), _swipeable.default, {
                            disabled: this._getSwipeDisabledState(),
                            elastic: false,
                            itemSizeFunc: this._itemWidth.bind(this),
                            onStart: args => this._swipeStartHandler(args.event),
                            onUpdated: args => this._swipeUpdateHandler(args.event),
                            onEnd: args => this._swipeEndHandler(args.event)
                        })
                    },
                    _findBoundaryIndices() {
                        var _firstIndex2, _lastIndex;
                        const items = this.option("items");
                        let firstIndex;
                        let lastIndex;
                        items.forEach((item, index) => {
                            const isDisabled = Boolean(null === item || void 0 === item ? void 0 : item.disabled);
                            if (!isDisabled) {
                                var _firstIndex;
                                null !== (_firstIndex = firstIndex) && void 0 !== _firstIndex ? _firstIndex : firstIndex = index;
                                lastIndex = index
                            }
                        });
                        this._boundaryIndices = {
                            firstAvailableIndex: null !== (_firstIndex2 = firstIndex) && void 0 !== _firstIndex2 ? _firstIndex2 : 0,
                            lastAvailableIndex: null !== (_lastIndex = lastIndex) && void 0 !== _lastIndex ? _lastIndex : items.length - 1,
                            firstTrueIndex: 0,
                            lastTrueIndex: items.length - 1
                        }
                    },
                    _swipeStartHandler: function(e) {
                        _uiMulti_view.animation.complete(this._$itemContainer);
                        const selectedIndex = this.option("selectedIndex");
                        const loop = this.option("loop");
                        const {
                            firstAvailableIndex: firstAvailableIndex,
                            lastAvailableIndex: lastAvailableIndex
                        } = this._boundaryIndices;
                        const rtl = this.option("rtlEnabled");
                        e.maxLeftOffset = toNumber(loop || (rtl ? selectedIndex > firstAvailableIndex : selectedIndex < lastAvailableIndex));
                        e.maxRightOffset = toNumber(loop || (rtl ? selectedIndex < lastAvailableIndex : selectedIndex > firstAvailableIndex));
                        this._swipeDirection = null
                    },
                    _swipeUpdateHandler: function(e) {
                        const offset = e.offset;
                        const swipeDirection = (0, _math.sign)(offset) * this._getRTLSignCorrection();
                        _uiMulti_view._translator.move(this._$itemContainer, offset * this._itemWidth());
                        if (swipeDirection !== this._swipeDirection) {
                            this._swipeDirection = swipeDirection;
                            const selectedIndex = this.option("selectedIndex");
                            const newIndex = this._normalizeIndex(selectedIndex - swipeDirection);
                            this._updateItems(selectedIndex, newIndex)
                        }
                    },
                    _findNextAvailableIndex(index, offset) {
                        const {
                            items: items,
                            loop: loop
                        } = this.option();
                        const {
                            firstAvailableIndex: firstAvailableIndex,
                            lastAvailableIndex: lastAvailableIndex,
                            firstTrueIndex: firstTrueIndex,
                            lastTrueIndex: lastTrueIndex
                        } = this._boundaryIndices;
                        const isFirstActive = [firstTrueIndex, firstAvailableIndex].includes(index);
                        const isLastActive = [lastTrueIndex, lastAvailableIndex].includes(index);
                        if (loop) {
                            if (isFirstActive && offset < 0) {
                                return lastAvailableIndex
                            } else if (isLastActive && offset > 0) {
                                return firstAvailableIndex
                            }
                        }
                        for (let i = index + offset; i >= firstAvailableIndex && i <= lastAvailableIndex; i += offset) {
                            const isDisabled = Boolean(items[i].disabled);
                            if (!isDisabled) {
                                return i
                            }
                        }
                        return index
                    },
                    _swipeEndHandler: function(e) {
                        const targetOffset = e.targetOffset * this._getRTLSignCorrection();
                        if (targetOffset) {
                            const newSelectedIndex = this._findNextAvailableIndex(this.option("selectedIndex"), -targetOffset);
                            this.option("selectedIndex", newSelectedIndex);
                            const $selectedElement = this.itemElements().filter(".dx-item-selected");
                            this.option("focusStateEnabled") && this.option("focusedElement", (0, _element.getPublicElement)($selectedElement))
                        } else {
                            this._animateItemContainer(0, _common.noop)
                        }
                    },
                    _getItemFocusLoopSignCorrection: function() {
                        return this._itemFocusLooped ? -1 : 1
                    },
                    _moveFocus: function() {
                        this.callBase.apply(this, arguments);
                        this._itemFocusLooped = false
                    },
                    _prevItem: function($items) {
                        const $result = this.callBase.apply(this, arguments);
                        this._itemFocusLooped = $result.is($items.last());
                        return $result
                    },
                    _nextItem: function($items) {
                        const $result = this.callBase.apply(this, arguments);
                        this._itemFocusLooped = $result.is($items.first());
                        return $result
                    },
                    _dimensionChanged: function() {
                        this._clearItemWidthCache()
                    },
                    _visibilityChanged: function(visible) {
                        if (visible) {
                            this._dimensionChanged()
                        }
                    },
                    _updateSwipeDisabledState() {
                        const disabled = this._getSwipeDisabledState();
                        _swipeable.default.getInstance(this.$element()).option("disabled", disabled)
                    },
                    _dispose: function() {
                        delete this._boundaryIndices;
                        this.callBase()
                    },
                    _optionChanged: function(args) {
                        const value = args.value;
                        switch (args.name) {
                            case "loop":
                                this.option("loopItemFocus", value);
                                break;
                            case "animationEnabled":
                                break;
                            case "swipeEnabled":
                                this._updateSwipeDisabledState();
                                break;
                            case "deferRendering":
                                this._invalidate();
                                break;
                            case "items":
                                this._updateSwipeDisabledState();
                                this._findBoundaryIndices();
                                this.callBase(args);
                                break;
                            default:
                                this.callBase(args)
                        }
                    }
                });
                (0, _component_registrator.default)("dxMultiView", MultiView);
                var _default = MultiView;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        22053:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/multi_view/ui.multi_view.animation.js ***!
              \**************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.animation = exports._translator = void 0;
                var _fx = (obj = __webpack_require__( /*! ../../animation/fx */ 87209), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _translator2 = __webpack_require__( /*! ../../animation/translator */ 31648);
                const _translator = {
                    move($element, position) {
                        (0, _translator2.move)($element, {
                            left: position
                        })
                    }
                };
                exports._translator = _translator;
                const animation = {
                    moveTo($element, position, duration, completeAction) {
                        _fx.default.animate($element, {
                            type: "slide",
                            to: {
                                left: position
                            },
                            duration: duration,
                            complete: completeAction
                        })
                    },
                    complete($element) {
                        _fx.default.stop($element, true)
                    }
                };
                exports.animation = animation
            },
        59958:
            /*!**********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/notify.js ***!
              \**********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _view_port = __webpack_require__( /*! ../core/utils/view_port */ 77695);
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _toast = _interopRequireDefault(__webpack_require__( /*! ./toast */ 37748));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();
                let $notify = null;
                const $containers = {};
                const getDefaultDirection = position => (0, _type.isString)(position) && position.includes("top") ? "down-push" : "up-push";
                const getStackContainer = key => {
                    const $container = $containers[key];
                    return $container ? $container : (key => {
                        const $container = (0, _renderer.default)("<div>").appendTo((0, _view_port.value)());
                        $containers[key] = $container;
                        return $container
                    })(key)
                };
                const setContainerClasses = (container, direction) => {
                    const containerClasses = "dx-toast-stack dx-toast-stack-".concat(direction, "-direction");
                    container.removeAttr("class").addClass(containerClasses)
                };
                const setContainerStyles = (container, direction, position) => {
                    const {
                        offsetWidth: toastWidth,
                        offsetHeight: toastHeight
                    } = container.children().first().get(0);
                    const dimensions = {
                        toastWidth: toastWidth,
                        toastHeight: toastHeight,
                        windowHeight: window.innerHeight,
                        windowWidth: window.innerWidth
                    };
                    const coordinates = (0, _type.isString)(position) ? getCoordinatesByAlias(position, dimensions) : position;
                    const styles = getPositionStylesByCoordinates(direction, coordinates, dimensions);
                    container.css(styles)
                };
                const getCoordinatesByAlias = (alias, _ref) => {
                    let {
                        toastWidth: toastWidth,
                        toastHeight: toastHeight,
                        windowHeight: windowHeight,
                        windowWidth: windowWidth
                    } = _ref;
                    switch (alias) {
                        case "top left":
                            return {
                                top: 10, left: 10
                            };
                        case "top right":
                            return {
                                top: 10, right: 10
                            };
                        case "bottom left":
                            return {
                                bottom: 10, left: 10
                            };
                        case "bottom right":
                            return {
                                bottom: 10, right: 10
                            };
                        case "top center":
                            return {
                                top: 10, left: Math.round(windowWidth / 2 - toastWidth / 2)
                            };
                        case "left center":
                            return {
                                top: Math.round(windowHeight / 2 - toastHeight / 2), left: 10
                            };
                        case "right center":
                            return {
                                top: Math.round(windowHeight / 2 - toastHeight / 2), right: 10
                            };
                        case "center":
                            return {
                                top: Math.round(windowHeight / 2 - toastHeight / 2), left: Math.round(windowWidth / 2 - toastWidth / 2)
                            };
                        case "bottom center":
                        default:
                            return {
                                bottom: 10, left: Math.round(windowWidth / 2 - toastWidth / 2)
                            }
                    }
                };
                const getPositionStylesByCoordinates = (direction, coordinates, dimensions) => {
                    var _coordinates$bottom, _coordinates$left, _coordinates$right, _coordinates$top, _coordinates$left2, _coordinates$right2, _coordinates$right3, _coordinates$top2, _coordinates$bottom2, _coordinates$left3, _coordinates$top3, _coordinates$bottom3;
                    const {
                        toastWidth: toastWidth,
                        toastHeight: toastHeight,
                        windowHeight: windowHeight,
                        windowWidth: windowWidth
                    } = dimensions;
                    switch (direction.replace(/-push|-stack/g, "")) {
                        case "up":
                            return {
                                bottom: null !== (_coordinates$bottom = coordinates.bottom) && void 0 !== _coordinates$bottom ? _coordinates$bottom : windowHeight - toastHeight - coordinates.top, top: "", left: null !== (_coordinates$left = coordinates.left) && void 0 !== _coordinates$left ? _coordinates$left : "", right: null !== (_coordinates$right = coordinates.right) && void 0 !== _coordinates$right ? _coordinates$right : ""
                            };
                        case "down":
                            return {
                                top: null !== (_coordinates$top = coordinates.top) && void 0 !== _coordinates$top ? _coordinates$top : windowHeight - toastHeight - coordinates.bottom, bottom: "", left: null !== (_coordinates$left2 = coordinates.left) && void 0 !== _coordinates$left2 ? _coordinates$left2 : "", right: null !== (_coordinates$right2 = coordinates.right) && void 0 !== _coordinates$right2 ? _coordinates$right2 : ""
                            };
                        case "left":
                            return {
                                right: null !== (_coordinates$right3 = coordinates.right) && void 0 !== _coordinates$right3 ? _coordinates$right3 : windowWidth - toastWidth - coordinates.left, left: "", top: null !== (_coordinates$top2 = coordinates.top) && void 0 !== _coordinates$top2 ? _coordinates$top2 : "", bottom: null !== (_coordinates$bottom2 = coordinates.bottom) && void 0 !== _coordinates$bottom2 ? _coordinates$bottom2 : ""
                            };
                        case "right":
                            return {
                                left: null !== (_coordinates$left3 = coordinates.left) && void 0 !== _coordinates$left3 ? _coordinates$left3 : windowWidth - toastWidth - coordinates.right, right: "", top: null !== (_coordinates$top3 = coordinates.top) && void 0 !== _coordinates$top3 ? _coordinates$top3 : "", bottom: null !== (_coordinates$bottom3 = coordinates.bottom) && void 0 !== _coordinates$bottom3 ? _coordinates$bottom3 : ""
                            }
                    }
                };
                var _default = function(message, typeOrStack, displayTime) {
                    const options = (0, _type.isPlainObject)(message) ? message : {
                        message: message
                    };
                    const stack = (0, _type.isPlainObject)(typeOrStack) ? typeOrStack : void 0;
                    const type = (0, _type.isPlainObject)(typeOrStack) ? void 0 : typeOrStack;
                    const {
                        onHidden: userOnHidden
                    } = options;
                    if (null !== stack && void 0 !== stack && stack.position) {
                        const {
                            position: position
                        } = stack;
                        const direction = stack.direction || getDefaultDirection(position);
                        const containerKey = (0, _type.isString)(position) ? position : "".concat(position.top, "-").concat(position.left, "-").concat(position.bottom, "-").concat(position.right);
                        const {
                            onShowing: userOnShowing
                        } = options;
                        const $container = getStackContainer(containerKey);
                        setContainerClasses($container, direction);
                        (0, _extend.extend)(options, {
                            container: $container,
                            _skipContentPositioning: true,
                            onShowing: function(args) {
                                setContainerStyles($container, direction, position);
                                null === userOnShowing || void 0 === userOnShowing ? void 0 : userOnShowing(args)
                            }
                        })
                    }(0, _extend.extend)(options, {
                        type: type,
                        displayTime: displayTime,
                        onHidden: function(args) {
                            (0, _renderer.default)(args.element).remove();
                            null === userOnHidden || void 0 === userOnHidden ? void 0 : userOnHidden(args)
                        }
                    });
                    $notify = (0, _renderer.default)("<div>").appendTo((0, _view_port.value)());
                    new _toast.default($notify, options).show()
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        34171:
            /*!**************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/number_box.js ***!
              \**************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _number_box = (obj = __webpack_require__( /*! ./number_box/number_box */ 96248), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _number_box.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        35567:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/number_box/number_box.base.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _math = __webpack_require__( /*! ../../core/utils/math */ 60810);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _browser = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/browser */ 47810));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../text_box/ui.text_editor */ 63513));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _number_box = _interopRequireDefault(__webpack_require__( /*! ./number_box.spins */ 25353));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const math = Math;
                const FIREFOX_CONTROL_KEYS = ["tab", "del", "backspace", "leftArrow", "rightArrow", "home", "end", "enter"];
                const NumberBoxBase = _ui.default.inherit({
                    _supportedKeys: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            upArrow: function(e) {
                                if (!(0, _index.isCommandKeyPressed)(e)) {
                                    e.preventDefault();
                                    e.stopPropagation();
                                    this._spinUpChangeHandler(e)
                                }
                            },
                            downArrow: function(e) {
                                if (!(0, _index.isCommandKeyPressed)(e)) {
                                    e.preventDefault();
                                    e.stopPropagation();
                                    this._spinDownChangeHandler(e)
                                }
                            },
                            enter: function() {}
                        })
                    },
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            value: 0,
                            min: void 0,
                            max: void 0,
                            step: 1,
                            showSpinButtons: false,
                            useLargeSpinButtons: true,
                            mode: "text",
                            invalidValueMessage: _message.default.format("dxNumberBox-invalidValueMessage"),
                            buttons: void 0
                        })
                    },
                    _useTemplates: function() {
                        return false
                    },
                    _getDefaultButtons: function() {
                        return this.callBase().concat([{
                            name: "spins",
                            Ctor: _number_box.default
                        }])
                    },
                    _isSupportInputMode: function() {
                        const version = parseFloat(_browser.default.version);
                        return _browser.default.chrome && version >= 66 || _browser.default.safari && version >= 12
                    },
                    _defaultOptionsRules: function() {
                        return this.callBase().concat([{
                            device: function() {
                                return _devices.default.real().generic && !_devices.default.isSimulator()
                            },
                            options: {
                                useLargeSpinButtons: false
                            }
                        }, {
                            device: function() {
                                return "desktop" !== _devices.default.real().deviceType && !this._isSupportInputMode()
                            }.bind(this),
                            options: {
                                mode: "number"
                            }
                        }])
                    },
                    _initMarkup: function() {
                        this._renderSubmitElement();
                        this.$element().addClass("dx-numberbox");
                        this.callBase()
                    },
                    _getDefaultAttributes: function() {
                        const attributes = this.callBase();
                        attributes.inputmode = "decimal";
                        return attributes
                    },
                    _renderContentImpl: function() {
                        this.option("isValid") && this._validateValue(this.option("value"));
                        this.setAria("role", "spinbutton")
                    },
                    _renderSubmitElement: function() {
                        this._$submitElement = (0, _renderer.default)("<input>").attr("type", "hidden").appendTo(this.$element());
                        this._setSubmitValue(this.option("value"))
                    },
                    _setSubmitValue: function(value) {
                        this._getSubmitElement().val((0, _common.applyServerDecimalSeparator)(value))
                    },
                    _getSubmitElement: function() {
                        return this._$submitElement
                    },
                    _keyPressHandler: function(e) {
                        this.callBase(e);
                        const char = (0, _index.getChar)(e);
                        const isInputCharValid = /[\d.,eE\-+]/.test(char);
                        if (!isInputCharValid) {
                            const keyName = (0, _index.normalizeKeyName)(e);
                            if ((0, _index.isCommandKeyPressed)(e) || keyName && FIREFOX_CONTROL_KEYS.includes(keyName)) {
                                return
                            }
                            e.preventDefault();
                            return false
                        }
                        this._keyPressed = true
                    },
                    _onMouseWheel: function(dxEvent) {
                        dxEvent.delta > 0 ? this._spinValueChange(1, dxEvent) : this._spinValueChange(-1, dxEvent)
                    },
                    _renderValue: function() {
                        const inputValue = this._input().val();
                        const value = this.option("value");
                        if (!inputValue.length || Number(inputValue) !== value) {
                            this._forceValueRender();
                            this._toggleEmptinessEventHandler()
                        }
                        const valueText = (0, _type.isDefined)(value) ? null : _message.default.format("dxNumberBox-noDataText");
                        this.setAria({
                            valuenow: (0, _common.ensureDefined)(value, ""),
                            valuetext: valueText
                        });
                        this.option("text", this._input().val());
                        this._updateButtons();
                        return (new _deferred.Deferred).resolve()
                    },
                    _forceValueRender: function() {
                        const value = this.option("value");
                        const number = Number(value);
                        const formattedValue = isNaN(number) ? "" : this._applyDisplayValueFormatter(value);
                        this._renderDisplayText(formattedValue)
                    },
                    _applyDisplayValueFormatter: function(value) {
                        return this.option("displayValueFormatter")(value)
                    },
                    _renderProps: function() {
                        this._input().prop({
                            min: this.option("min"),
                            max: this.option("max"),
                            step: this.option("step")
                        });
                        this.setAria({
                            valuemin: (0, _common.ensureDefined)(this.option("min"), ""),
                            valuemax: (0, _common.ensureDefined)(this.option("max"), "")
                        })
                    },
                    _spinButtonsPointerDownHandler: function() {
                        const $input = this._input();
                        if (!this.option("useLargeSpinButtons") && _dom_adapter.default.getActiveElement() !== $input[0]) {
                            _events_engine.default.trigger($input, "focus")
                        }
                    },
                    _spinUpChangeHandler: function(e) {
                        if (!this.option("readOnly")) {
                            this._spinValueChange(1, e.event || e)
                        }
                    },
                    _spinDownChangeHandler: function(e) {
                        if (!this.option("readOnly")) {
                            this._spinValueChange(-1, e.event || e)
                        }
                    },
                    _spinValueChange: function(sign, dxEvent) {
                        const step = parseFloat(this.option("step"));
                        if (0 === step) {
                            return
                        }
                        let value = parseFloat(this._normalizeInputValue()) || 0;
                        value = this._correctRounding(value, step * sign);
                        const min = this.option("min");
                        const max = this.option("max");
                        if ((0, _type.isDefined)(min)) {
                            value = Math.max(min, value)
                        }
                        if ((0, _type.isDefined)(max)) {
                            value = Math.min(max, value)
                        }
                        this._saveValueChangeEvent(dxEvent);
                        this.option("value", value)
                    },
                    _correctRounding: function(value, step) {
                        const regex = /[,.](.*)/;
                        const isFloatValue = regex.test(value);
                        const isFloatStep = regex.test(step);
                        if (isFloatValue || isFloatStep) {
                            const valueAccuracy = isFloatValue ? regex.exec(value)[0].length : 0;
                            const stepAccuracy = isFloatStep ? regex.exec(step)[0].length : 0;
                            const accuracy = math.max(valueAccuracy, stepAccuracy);
                            value = this._round(value + step, accuracy);
                            return value
                        }
                        return value + step
                    },
                    _round: function(value, precision) {
                        precision = precision || 0;
                        const multiplier = Math.pow(10, precision);
                        value *= multiplier;
                        value = Math.round(value) / multiplier;
                        return value
                    },
                    _renderValueChangeEvent: function() {
                        this.callBase();
                        const forceValueChangeEvent = (0, _index.addNamespace)("focusout", "NumberBoxForceValueChange");
                        _events_engine.default.off(this.element(), forceValueChangeEvent);
                        _events_engine.default.on(this.element(), forceValueChangeEvent, this._forceRefreshInputValue.bind(this))
                    },
                    _forceRefreshInputValue: function() {
                        if ("number" === this.option("mode")) {
                            return
                        }
                        const $input = this._input();
                        const formattedValue = this._applyDisplayValueFormatter(this.option("value"));
                        $input.val(null);
                        $input.val(formattedValue)
                    },
                    _valueChangeEventHandler: function(e) {
                        const $input = this._input();
                        const inputValue = this._normalizeText();
                        const value = this._parseValue(inputValue);
                        const valueHasDigits = "." !== inputValue && "-" !== inputValue;
                        if (this._isValueValid() && !this._validateValue(value)) {
                            $input.val(this._applyDisplayValueFormatter(value));
                            return
                        }
                        if (valueHasDigits) {
                            this.callBase(e, isNaN(value) ? null : value)
                        }
                        this._applyValueBoundaries(inputValue, value);
                        this.validationRequest.fire({
                            value: value,
                            editor: this
                        })
                    },
                    _applyValueBoundaries: function(inputValue, parsedValue) {
                        const isValueIncomplete = this._isValueIncomplete(inputValue);
                        const isValueCorrect = this._isValueInRange(inputValue);
                        if (!isValueIncomplete && !isValueCorrect && null !== parsedValue) {
                            if (Number(inputValue) !== parsedValue) {
                                this._input().val(this._applyDisplayValueFormatter(parsedValue))
                            }
                        }
                    },
                    _replaceCommaWithPoint: function(value) {
                        return value.replace(",", ".")
                    },
                    _inputIsInvalid: function() {
                        const isNumberMode = "number" === this.option("mode");
                        const validityState = this._input().get(0).validity;
                        return isNumberMode && validityState && validityState.badInput
                    },
                    _renderDisplayText: function(text) {
                        if (this._inputIsInvalid()) {
                            return
                        }
                        this.callBase(text)
                    },
                    _isValueIncomplete: function(value) {
                        return /(^-$)|(^-?\d*\.$)|(\d+e-?$)/i.test(value)
                    },
                    _isValueInRange: function(value) {
                        return (0, _math.inRange)(value, this.option("min"), this.option("max"))
                    },
                    _isNumber: function(value) {
                        return null !== this._parseValue(value)
                    },
                    _validateValue: function(value) {
                        const inputValue = this._normalizeText();
                        const isValueValid = this._isValueValid();
                        let isValid = true;
                        const isNumber = this._isNumber(inputValue);
                        if (isNaN(Number(value))) {
                            isValid = false
                        }
                        if (!value && isValueValid) {
                            isValid = true
                        } else if (!isNumber && !isValueValid) {
                            isValid = false
                        }
                        this.option({
                            isValid: isValid,
                            validationError: isValid ? null : {
                                editorSpecific: true,
                                message: this.option("invalidValueMessage")
                            }
                        });
                        return isValid
                    },
                    _normalizeInputValue: function() {
                        return this._parseValue(this._normalizeText())
                    },
                    _normalizeText: function() {
                        const value = this._input().val().trim();
                        return this._replaceCommaWithPoint(value)
                    },
                    _parseValue: function(value) {
                        const number = parseFloat(value);
                        if (isNaN(number)) {
                            return null
                        }
                        return (0, _math.fitIntoRange)(number, this.option("min"), this.option("max"))
                    },
                    _clearValue: function() {
                        if (this._inputIsInvalid()) {
                            this._input().val("");
                            this._validateValue()
                        }
                        this.callBase()
                    },
                    clear: function() {
                        if (null === this.option("value")) {
                            this.option("text", "");
                            if (this._input().length) {
                                this._renderValue()
                            }
                        } else {
                            this.option("value", null)
                        }
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "value":
                                this._validateValue(args.value);
                                this._setSubmitValue(args.value);
                                this.callBase(args);
                                this._resumeValueChangeAction();
                                break;
                            case "step":
                                this._renderProps();
                                break;
                            case "min":
                            case "max":
                                this._renderProps();
                                this.option("value", this._parseValue(this.option("value")));
                                break;
                            case "showSpinButtons":
                            case "useLargeSpinButtons":
                                this._updateButtons(["spins"]);
                                break;
                            case "invalidValueMessage":
                                break;
                            default:
                                this.callBase(args)
                        }
                    }
                });
                var _default = NumberBoxBase;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        58048:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/number_box/number_box.caret.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getCaretBoundaries = exports.getCaretAfterFormat = void 0;
                exports.getCaretInBoundaries = getCaretInBoundaries;
                exports.isCaretInBoundaries = exports.getCaretWithOffset = exports.getCaretOffset = void 0;
                var _math = __webpack_require__( /*! ../../core/utils/math */ 60810);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _number = (obj = __webpack_require__( /*! ../../localization/number */ 18016), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _utils = __webpack_require__( /*! ./utils */ 7206);
                const getCaretBoundaries = function(text, format) {
                    if ("string" === typeof format) {
                        const signParts = format.split(";");
                        const sign = _number.default.getSign(text, format);
                        signParts[1] = signParts[1] || "-" + signParts[0];
                        format = signParts[sign < 0 ? 1 : 0];
                        const mockEscapedStubs = str => str.replace(/'([^']*)'/g, str => str.split("").map(() => " ").join("").substr(2));
                        format = mockEscapedStubs(format);
                        const prefixStubLength = /^[^#0.,]*/.exec(format)[0].length;
                        const postfixStubLength = /[^#0.,]*$/.exec(format)[0].length;
                        return {
                            start: prefixStubLength,
                            end: text.length - postfixStubLength
                        }
                    } else {
                        return {
                            start: 0,
                            end: text.length
                        }
                    }
                };
                exports.getCaretBoundaries = getCaretBoundaries;
                const _getDigitCountBeforeIndex = function(index, text) {
                    const decimalSeparator = _number.default.getDecimalSeparator();
                    const regExp = new RegExp("[^0-9" + (0, _common.escapeRegExp)(decimalSeparator) + "]", "g");
                    const textBeforePosition = text.slice(0, index);
                    return textBeforePosition.replace(regExp, "").length
                };
                const _reverseText = function(text) {
                    return text.split("").reverse().join("")
                };
                const _getDigitPositionByIndex = function(digitIndex, text) {
                    if (!digitIndex) {
                        return -1
                    }
                    const regExp = /[0-9]/g;
                    let counter = 1;
                    let index = null;
                    let result = regExp.exec(text);
                    while (result) {
                        index = result.index;
                        if (counter >= digitIndex) {
                            return index
                        }
                        counter++;
                        result = regExp.exec(text)
                    }
                    return null === index ? text.length : index
                };
                const getCaretWithOffset = function(caret, offset) {
                    if (void 0 === caret.start) {
                        caret = {
                            start: caret,
                            end: caret
                        }
                    }
                    return {
                        start: caret.start + offset,
                        end: caret.end + offset
                    }
                };
                exports.getCaretWithOffset = getCaretWithOffset;
                exports.getCaretAfterFormat = function(text, formatted, caret, format) {
                    caret = getCaretWithOffset(caret, 0);
                    const point = _number.default.getDecimalSeparator();
                    const isSeparatorBasedText = function(text) {
                        return 1 === text.length && !!text.match(/^[,.][0-9]*$/g)
                    }(text);
                    const realSeparatorOccurrenceIndex = (0, _utils.getRealSeparatorIndex)(format).occurrence;
                    const pointPosition = isSeparatorBasedText ? 0 : (0, _utils.getNthOccurrence)(text, point, realSeparatorOccurrenceIndex);
                    const newPointPosition = (0, _utils.getNthOccurrence)(formatted, point, realSeparatorOccurrenceIndex);
                    const textParts = (0, _utils.splitByIndex)(text, pointPosition);
                    const formattedParts = (0, _utils.splitByIndex)(formatted, newPointPosition);
                    const isCaretOnFloat = -1 !== pointPosition && caret.start > pointPosition;
                    if (isCaretOnFloat) {
                        const relativeIndex = caret.start - pointPosition - 1;
                        const digitsBefore = _getDigitCountBeforeIndex(relativeIndex, textParts[1]);
                        const newPosition = formattedParts[1] ? newPointPosition + 1 + _getDigitPositionByIndex(digitsBefore, formattedParts[1]) + 1 : formatted.length;
                        return getCaretInBoundaries(newPosition, formatted, format)
                    } else {
                        const formattedIntPart = function(text) {
                            return text.replace(/[^0-9e]+$/, "")
                        }(formattedParts[0]);
                        const positionFromEnd = textParts[0].length - caret.start;
                        const digitsFromEnd = _getDigitCountBeforeIndex(positionFromEnd, _reverseText(textParts[0]));
                        const newPositionFromEnd = _getDigitPositionByIndex(digitsFromEnd, _reverseText(formattedIntPart));
                        const newPositionFromBegin = formattedIntPart.length - (newPositionFromEnd + 1);
                        return getCaretInBoundaries(newPositionFromBegin, formatted, format)
                    }
                };
                exports.isCaretInBoundaries = function(caret, text, format) {
                    caret = getCaretWithOffset(caret, 0);
                    const boundaries = getCaretInBoundaries(caret, text, format);
                    return caret.start >= boundaries.start && caret.end <= boundaries.end
                };

                function getCaretInBoundaries(caret, text, format) {
                    caret = getCaretWithOffset(caret, 0);
                    const boundaries = getCaretBoundaries(text, format);
                    const adjustedCaret = {
                        start: (0, _math.fitIntoRange)(caret.start, boundaries.start, boundaries.end),
                        end: (0, _math.fitIntoRange)(caret.end, boundaries.start, boundaries.end)
                    };
                    return adjustedCaret
                }
                exports.getCaretOffset = function(previousText, newText, format) {
                    const previousBoundaries = getCaretBoundaries(previousText, format);
                    const newBoundaries = getCaretBoundaries(newText, format);
                    return newBoundaries.start - previousBoundaries.start
                }
            },
        96248:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/number_box/number_box.js ***!
              \*************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _number_box = _interopRequireDefault(__webpack_require__( /*! ./number_box.mask */ 29983));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }(0, _component_registrator.default)("dxNumberBox", _number_box.default);
                var _default = _number_box.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        29983:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/number_box/number_box.mask.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _math = __webpack_require__( /*! ../../core/utils/math */ 60810);
                var _number = _interopRequireDefault(__webpack_require__( /*! ../../localization/number */ 18016));
                var _number_box = __webpack_require__( /*! ./number_box.caret */ 58048);
                var _number2 = __webpack_require__( /*! ../../localization/ldml/number */ 70629);
                var _number_box2 = _interopRequireDefault(__webpack_require__( /*! ./number_box.base */ 35567));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _utils = __webpack_require__( /*! ./utils */ 7206);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const NumberBoxMask = _number_box2.default.inherit({
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            useMaskBehavior: true,
                            format: null
                        })
                    },
                    _isDeleteKey: function(key) {
                        return "del" === key
                    },
                    _supportedKeys: function() {
                        if (!this._useMaskBehavior()) {
                            return this.callBase()
                        }
                        return (0, _extend.extend)(this.callBase(), {
                            minus: this._revertSign.bind(this),
                            del: this._removeHandler.bind(this),
                            backspace: this._removeHandler.bind(this),
                            leftArrow: this._arrowHandler.bind(this, -1),
                            rightArrow: this._arrowHandler.bind(this, 1),
                            home: this._moveCaretToBoundaryEventHandler.bind(this, 1),
                            enter: this._updateFormattedValue.bind(this),
                            end: this._moveCaretToBoundaryEventHandler.bind(this, -1)
                        })
                    },
                    _getTextSeparatorIndex: function(text) {
                        const decimalSeparator = _number.default.getDecimalSeparator();
                        const realSeparatorOccurrenceIndex = (0, _utils.getRealSeparatorIndex)(this.option("format")).occurrence;
                        return (0, _utils.getNthOccurrence)(text, decimalSeparator, realSeparatorOccurrenceIndex)
                    },
                    _focusInHandler: function(e) {
                        if (!this._preventNestedFocusEvent(e)) {
                            this.clearCaretTimeout();
                            this._caretTimeout = setTimeout(function() {
                                this._caretTimeout = void 0;
                                const caret = this._caret();
                                if (caret.start === caret.end && this._useMaskBehavior()) {
                                    const text = this._getInputVal();
                                    const decimalSeparatorIndex = this._getTextSeparatorIndex(text);
                                    if (decimalSeparatorIndex >= 0) {
                                        this._caret({
                                            start: decimalSeparatorIndex,
                                            end: decimalSeparatorIndex
                                        })
                                    } else {
                                        this._moveCaretToBoundaryEventHandler(-1, e)
                                    }
                                }
                            }.bind(this), 0)
                        }
                        this.callBase(e)
                    },
                    _focusOutHandler: function(e) {
                        const shouldHandleEvent = !this._preventNestedFocusEvent(e);
                        if (shouldHandleEvent) {
                            this._focusOutOccurs = true;
                            if (this._useMaskBehavior()) {
                                this._updateFormattedValue()
                            }
                        }
                        this.callBase(e);
                        if (shouldHandleEvent) {
                            this._focusOutOccurs = false
                        }
                    },
                    _hasValueBeenChanged(inputValue) {
                        const format = this._getFormatPattern();
                        const value = this.option("value");
                        const formatted = this._format(value, format) || "";
                        return formatted !== inputValue
                    },
                    _updateFormattedValue: function() {
                        const inputValue = this._getInputVal();
                        if (this._hasValueBeenChanged(inputValue)) {
                            this._updateParsedValue();
                            this._adjustParsedValue();
                            this._setTextByParsedValue();
                            if (this._parsedValue !== this.option("value")) {
                                _events_engine.default.trigger(this._input(), "change")
                            }
                        }
                    },
                    _arrowHandler: function(step, e) {
                        if (!this._useMaskBehavior()) {
                            return
                        }
                        const text = this._getInputVal();
                        const format = this._getFormatPattern();
                        let nextCaret = (0, _number_box.getCaretWithOffset)(this._caret(), step);
                        if (!(0, _number_box.isCaretInBoundaries)(nextCaret, text, format)) {
                            nextCaret = 1 === step ? nextCaret.end : nextCaret.start;
                            e.preventDefault();
                            this._caret((0, _number_box.getCaretInBoundaries)(nextCaret, text, format))
                        }
                    },
                    _moveCaretToBoundary: function(direction) {
                        const boundaries = (0, _number_box.getCaretBoundaries)(this._getInputVal(), this._getFormatPattern());
                        const newCaret = (0, _number_box.getCaretWithOffset)(1 === direction ? boundaries.start : boundaries.end, 0);
                        this._caret(newCaret)
                    },
                    _moveCaretToBoundaryEventHandler: function(direction, e) {
                        if (!this._useMaskBehavior() || e && e.shiftKey) {
                            return
                        }
                        this._moveCaretToBoundary(direction);
                        e && e.preventDefault()
                    },
                    _shouldMoveCaret: function(text, caret) {
                        const decimalSeparator = _number.default.getDecimalSeparator();
                        const isDecimalSeparatorNext = text.charAt(caret.end) === decimalSeparator;
                        const moveToFloat = (this._lastKey === decimalSeparator || "." === this._lastKey || "," === this._lastKey) && isDecimalSeparatorNext;
                        return moveToFloat
                    },
                    _getInputVal: function() {
                        return _number.default.convertDigits(this._input().val(), true)
                    },
                    _keyboardHandler: function(e) {
                        this.clearCaretTimeout();
                        this._lastKey = _number.default.convertDigits((0, _index.getChar)(e), true);
                        this._lastKeyName = (0, _index.normalizeKeyName)(e);
                        if (!this._shouldHandleKey(e.originalEvent)) {
                            return this.callBase(e)
                        }
                        const normalizedText = this._getInputVal();
                        const caret = this._caret();
                        const enteredChar = "minus" === this._lastKeyName ? "" : this._lastKey;
                        const newValue = this._tryParse(normalizedText, caret, enteredChar);
                        if (this._shouldMoveCaret(normalizedText, caret)) {
                            this._moveCaret(1);
                            e.originalEvent.preventDefault()
                        }
                        if (void 0 === newValue) {
                            if ("minus" !== this._lastKeyName) {
                                e.originalEvent.preventDefault()
                            }
                        } else {
                            this._parsedValue = newValue
                        }
                        return this.callBase(e)
                    },
                    _keyPressHandler: function(e) {
                        if (!this._useMaskBehavior()) {
                            this.callBase(e)
                        }
                    },
                    _removeHandler: function(e) {
                        const caret = this._caret();
                        const text = this._getInputVal();
                        let start = caret.start;
                        let end = caret.end;
                        this._lastKey = (0, _index.getChar)(e);
                        this._lastKeyName = (0, _index.normalizeKeyName)(e);
                        const isDeleteKey = this._isDeleteKey(this._lastKeyName);
                        const isBackspaceKey = !isDeleteKey;
                        if (start === end) {
                            const caretPosition = start;
                            const canDelete = isBackspaceKey && caretPosition > 0 || isDeleteKey && caretPosition < text.length;
                            if (canDelete) {
                                isDeleteKey && end++;
                                isBackspaceKey && start--
                            } else {
                                e.preventDefault();
                                return
                            }
                        }
                        const char = text.slice(start, end);
                        if (this._isStub(char)) {
                            this._moveCaret(isDeleteKey ? 1 : -1);
                            if (this._parsedValue < 0 || 1 / this._parsedValue === -1 / 0) {
                                this._revertSign(e);
                                this._setTextByParsedValue();
                                const shouldTriggerInputEvent = this.option("valueChangeEvent").split(" ").includes("input");
                                if (shouldTriggerInputEvent) {
                                    _events_engine.default.trigger(this._input(), "input")
                                }
                            }
                            e.preventDefault();
                            return
                        }
                        const decimalSeparator = _number.default.getDecimalSeparator();
                        if (char === decimalSeparator) {
                            const decimalSeparatorIndex = text.indexOf(decimalSeparator);
                            if (this._isNonStubAfter(decimalSeparatorIndex + 1)) {
                                this._moveCaret(isDeleteKey ? 1 : -1);
                                e.preventDefault()
                            }
                            return
                        }
                        if (end - start < text.length) {
                            const editedText = this._replaceSelectedText(text, {
                                start: start,
                                end: end
                            }, "");
                            const noDigits = editedText.search(/[0-9]/) < 0;
                            if (noDigits && this._isValueInRange(0)) {
                                this._parsedValue = this._parsedValue < 0 || 1 / this._parsedValue === -1 / 0 ? -0 : 0;
                                return
                            }
                        }
                        const valueAfterRemoving = this._tryParse(text, {
                            start: start,
                            end: end
                        }, "");
                        if (void 0 === valueAfterRemoving) {
                            e.preventDefault()
                        } else {
                            this._parsedValue = valueAfterRemoving
                        }
                    },
                    _isPercentFormat: function() {
                        const format = this._getFormatPattern();
                        const noEscapedFormat = format.replace(/'[^']+'/g, "");
                        return -1 !== noEscapedFormat.indexOf("%")
                    },
                    _parse: function(text, format) {
                        const formatOption = this.option("format");
                        const isCustomParser = (0, _type.isFunction)(formatOption.parser);
                        const parser = isCustomParser ? formatOption.parser : _number.default.parse;
                        let integerPartStartIndex = 0;
                        if (!isCustomParser) {
                            const formatPointIndex = (0, _utils.getRealSeparatorIndex)(format).index;
                            const textPointIndex = this._getTextSeparatorIndex(text);
                            const formatIntegerPartLength = -1 !== formatPointIndex ? formatPointIndex : format.length;
                            const textIntegerPartLength = -1 !== textPointIndex ? textPointIndex : text.length;
                            if (textIntegerPartLength > formatIntegerPartLength && -1 === format.indexOf("#")) {
                                integerPartStartIndex = textIntegerPartLength - formatIntegerPartLength
                            }
                        }
                        text = text.substr(integerPartStartIndex);
                        return parser(text, format)
                    },
                    _format: function(value, format) {
                        const formatOption = this.option("format");
                        const customFormatter = (null === formatOption || void 0 === formatOption ? void 0 : formatOption.formatter) || formatOption;
                        const formatter = (0, _type.isFunction)(customFormatter) ? customFormatter : _number.default.format;
                        const formattedValue = null === value ? "" : formatter(value, format);
                        return formattedValue
                    },
                    _getFormatPattern: function() {
                        if (!this._currentFormat) {
                            this._updateFormat()
                        }
                        return this._currentFormat
                    },
                    _updateFormat: function() {
                        const format = this.option("format");
                        const isCustomParser = (0, _type.isFunction)(null === format || void 0 === format ? void 0 : format.parser);
                        const isLDMLPattern = (0, _type.isString)(format) && (format.indexOf("0") >= 0 || format.indexOf("#") >= 0);
                        const isExponentialFormat = "exponential" === format || "exponential" === (null === format || void 0 === format ? void 0 : format.type);
                        const shouldUseFormatAsIs = isCustomParser || isLDMLPattern || isExponentialFormat;
                        this._currentFormat = shouldUseFormatAsIs ? format : (0, _number2.getFormat)(value => {
                            const text = this._format(value, format);
                            return _number.default.convertDigits(text, true)
                        })
                    },
                    _getFormatForSign: function(text) {
                        const format = this._getFormatPattern();
                        if ((0, _type.isString)(format)) {
                            const signParts = format.split(";");
                            const sign = _number.default.getSign(text, format);
                            signParts[1] = signParts[1] || "-" + signParts[0];
                            return sign < 0 ? signParts[1] : signParts[0]
                        } else {
                            const sign = _number.default.getSign(text);
                            return sign < 0 ? "-" : ""
                        }
                    },
                    _removeStubs: function(text, excludeComma) {
                        const format = this._getFormatForSign(text);
                        const thousandsSeparator = _number.default.getThousandsSeparator();
                        const stubs = this._getStubs(format);
                        let result = text;
                        if (stubs.length) {
                            const prefixStubs = stubs[0];
                            const postfixRegex = new RegExp("(" + (0, _common.escapeRegExp)(stubs[1] || "") + ")$", "g");
                            const decoratorsRegex = new RegExp("[-" + (0, _common.escapeRegExp)(excludeComma ? "" : thousandsSeparator) + "]", "g");
                            result = result.replace(prefixStubs, "").replace(postfixRegex, "").replace(decoratorsRegex, "")
                        }
                        return result
                    },
                    _getStubs: function(format) {
                        const regExpResult = /[^']([#0.,]+)/g.exec(format);
                        const pattern = regExpResult && regExpResult[0].trim();
                        return format.split(pattern).map((function(stub) {
                            return stub.replace(/'/g, "")
                        }))
                    },
                    _truncateToPrecision: function(value, maxPrecision) {
                        if ((0, _type.isDefined)(value)) {
                            const strValue = value.toString();
                            const decimalSeparatorIndex = strValue.indexOf(".");
                            if (strValue && decimalSeparatorIndex > -1) {
                                const parsedValue = parseFloat(strValue.substr(0, decimalSeparatorIndex + maxPrecision + 1));
                                return isNaN(parsedValue) ? value : parsedValue
                            }
                        }
                        return value
                    },
                    _tryParse: function(text, selection, char) {
                        const isTextSelected = selection.start !== selection.end;
                        const isWholeTextSelected = isTextSelected && 0 === selection.start && selection.end === text.length;
                        const decimalSeparator = _number.default.getDecimalSeparator();
                        if (isWholeTextSelected && char === decimalSeparator) {
                            return 0
                        }
                        const editedText = this._replaceSelectedText(text, selection, char);
                        const format = this._getFormatPattern();
                        let parsedValue = this._getParsedValue(editedText, format);
                        const maxPrecision = !format.parser && this._getPrecisionLimits(editedText).max;
                        const isValueChanged = parsedValue !== this._parsedValue;
                        const isDecimalPointRestricted = char === decimalSeparator && 0 === maxPrecision;
                        const isUselessCharRestricted = !isTextSelected && !isValueChanged && "-" !== char && !this._isValueIncomplete(editedText) && this._isStub(char);
                        if (isDecimalPointRestricted || isUselessCharRestricted) {
                            return
                        }
                        if ("" === this._removeStubs(editedText)) {
                            parsedValue = Math.abs(0 * this._parsedValue)
                        }
                        if (isNaN(parsedValue)) {
                            return
                        }
                        const value = null === parsedValue ? this._parsedValue : parsedValue;
                        parsedValue = maxPrecision ? this._truncateToPrecision(value, maxPrecision) : parsedValue;
                        return !format.parser && this._isPercentFormat() ? (0, _utils.adjustPercentValue)(parsedValue, maxPrecision) : parsedValue
                    },
                    _getParsedValue: function(text, format) {
                        const sign = _number.default.getSign(text, (null === format || void 0 === format ? void 0 : format.formatter) || format);
                        const textWithoutStubs = this._removeStubs(text, true);
                        const parsedValue = this._parse(textWithoutStubs, format);
                        const parsedValueSign = parsedValue < 0 ? -1 : 1;
                        const parsedValueWithSign = (0, _type.isNumeric)(parsedValue) && sign !== parsedValueSign ? sign * parsedValue : parsedValue;
                        return parsedValueWithSign
                    },
                    _isValueIncomplete: function(text) {
                        if (!this._useMaskBehavior()) {
                            return this.callBase(text)
                        }
                        const caret = this._caret();
                        const point = _number.default.getDecimalSeparator();
                        const pointIndex = this._getTextSeparatorIndex(text);
                        const isCaretOnFloat = pointIndex >= 0 && pointIndex < caret.start;
                        const textParts = this._removeStubs(text, true).split(point);
                        if (!isCaretOnFloat || 2 !== textParts.length) {
                            return false
                        }
                        const floatLength = textParts[1].length;
                        const format = this._getFormatPattern();
                        const isCustomParser = !!format.parser;
                        const precision = !isCustomParser && this._getPrecisionLimits(this._getFormatPattern(), text);
                        const isPrecisionInRange = isCustomParser ? true : (0, _math.inRange)(floatLength, precision.min, precision.max);
                        const endsWithZero = "0" === textParts[1].charAt(floatLength - 1);
                        return isPrecisionInRange && (endsWithZero || !floatLength)
                    },
                    _isValueInRange: function(value) {
                        const min = (0, _common.ensureDefined)(this.option("min"), -1 / 0);
                        const max = (0, _common.ensureDefined)(this.option("max"), 1 / 0);
                        return (0, _math.inRange)(value, min, max)
                    },
                    _setInputText: function(text) {
                        const normalizedText = _number.default.convertDigits(text, true);
                        const newCaret = (0, _number_box.getCaretAfterFormat)(this._getInputVal(), normalizedText, this._caret(), this._getFormatPattern());
                        this._input().val(text);
                        this._toggleEmptinessEventHandler();
                        this._formattedValue = text;
                        if (!this._focusOutOccurs) {
                            this._caret(newCaret)
                        }
                    },
                    _useMaskBehavior: function() {
                        return !!this.option("format") && this.option("useMaskBehavior")
                    },
                    _renderInputType: function() {
                        const isNumberType = "number" === this.option("mode");
                        const isDesktop = "desktop" === _devices.default.real().deviceType;
                        if (this._useMaskBehavior() && isNumberType) {
                            this._setInputType(isDesktop || this._isSupportInputMode() ? "text" : "tel")
                        } else {
                            this.callBase()
                        }
                    },
                    _isChar: function(str) {
                        return (0, _type.isString)(str) && 1 === str.length
                    },
                    _moveCaret: function(offset) {
                        if (!offset) {
                            return
                        }
                        const newCaret = (0, _number_box.getCaretWithOffset)(this._caret(), offset);
                        const adjustedCaret = (0, _number_box.getCaretInBoundaries)(newCaret, this._getInputVal(), this._getFormatPattern());
                        this._caret(adjustedCaret)
                    },
                    _shouldHandleKey: function(e) {
                        const keyName = (0, _index.normalizeKeyName)(e);
                        const isSpecialChar = (0, _index.isCommandKeyPressed)(e) || e.altKey || e.shiftKey || !this._isChar(keyName);
                        const isMinusKey = "minus" === keyName;
                        const useMaskBehavior = this._useMaskBehavior();
                        return useMaskBehavior && !isSpecialChar && !isMinusKey
                    },
                    _renderInput: function() {
                        this.callBase();
                        this._renderFormatter()
                    },
                    _renderFormatter: function() {
                        this._clearCache();
                        this._detachFormatterEvents();
                        if (this._useMaskBehavior()) {
                            this._attachFormatterEvents()
                        }
                    },
                    _detachFormatterEvents: function() {
                        _events_engine.default.off(this._input(), ".dxNumberFormatter")
                    },
                    _isInputFromPaste: function(e) {
                        const inputType = e.originalEvent && e.originalEvent.inputType;
                        if ((0, _type.isDefined)(inputType)) {
                            return "insertFromPaste" === inputType
                        } else {
                            return this._isValuePasted
                        }
                    },
                    _attachFormatterEvents: function() {
                        const $input = this._input();
                        _events_engine.default.on($input, (0, _index.addNamespace)("input", "dxNumberFormatter"), function(e) {
                            this._formatValue(e);
                            this._isValuePasted = false
                        }.bind(this));
                        _events_engine.default.on($input, (0, _index.addNamespace)("dxclick", "dxNumberFormatter"), function() {
                            if (!this._caretTimeout) {
                                this._caretTimeout = setTimeout(function() {
                                    this._caretTimeout = void 0;
                                    this._caret((0, _number_box.getCaretInBoundaries)(this._caret(), this._getInputVal(), this._getFormatPattern()))
                                }.bind(this), 0)
                            }
                        }.bind(this));
                        _events_engine.default.on($input, "dxdblclick", function() {
                            this.clearCaretTimeout()
                        }.bind(this))
                    },
                    clearCaretTimeout: function() {
                        clearTimeout(this._caretTimeout);
                        this._caretTimeout = void 0
                    },
                    _forceRefreshInputValue: function() {
                        if (!this._useMaskBehavior()) {
                            return this.callBase()
                        }
                    },
                    _isNonStubAfter: function(index) {
                        const text = this._getInputVal().slice(index);
                        return text && !this._isStub(text, true)
                    },
                    _isStub: function(str, isString) {
                        const escapedDecimalSeparator = (0, _common.escapeRegExp)(_number.default.getDecimalSeparator());
                        const regExpString = "^[^0-9" + escapedDecimalSeparator + "]+$";
                        const stubRegExp = new RegExp(regExpString, "g");
                        return stubRegExp.test(str) && (isString || this._isChar(str))
                    },
                    _parseValue: function(text) {
                        if (!this._useMaskBehavior()) {
                            return this.callBase(text)
                        }
                        return this._parsedValue
                    },
                    _getPrecisionLimits: function(text) {
                        const currentFormat = this._getFormatForSign(text);
                        const realSeparatorIndex = (0, _utils.getRealSeparatorIndex)(currentFormat).index;
                        const floatPart = ((0, _utils.splitByIndex)(currentFormat, realSeparatorIndex)[1] || "").replace(/[^#0]/g, "");
                        const minPrecision = floatPart.replace(/^(0*)#*/, "$1").length;
                        const maxPrecision = floatPart.length;
                        return {
                            min: minPrecision,
                            max: maxPrecision
                        }
                    },
                    _revertSign: function(e) {
                        if (!this._useMaskBehavior()) {
                            return
                        }
                        const caret = this._caret();
                        if (caret.start !== caret.end) {
                            if ("minus" === (0, _index.normalizeKeyName)(e)) {
                                this._applyRevertedSign(e, caret, true);
                                return
                            } else {
                                this._caret((0, _number_box.getCaretInBoundaries)(0, this._getInputVal(), this._getFormatPattern()))
                            }
                        }
                        this._applyRevertedSign(e, caret)
                    },
                    _applyRevertedSign: function(e, caret, preserveSelectedText) {
                        const newValue = -1 * (0, _common.ensureDefined)(this._parsedValue, null);
                        if (this._isValueInRange(newValue) || 0 === newValue) {
                            this._parsedValue = newValue;
                            if (preserveSelectedText) {
                                const format = this._getFormatPattern();
                                const previousText = this._getInputVal();
                                this._setTextByParsedValue();
                                e.preventDefault();
                                const currentText = this._getInputVal();
                                const offset = (0, _number_box.getCaretOffset)(previousText, currentText, format);
                                caret = (0, _number_box.getCaretWithOffset)(caret, offset);
                                const caretInBoundaries = (0, _number_box.getCaretInBoundaries)(caret, currentText, format);
                                this._caret(caretInBoundaries)
                            }
                        }
                    },
                    _removeMinusFromText: function(text, caret) {
                        const isMinusPressed = "minus" === this._lastKeyName && "-" === text.charAt(caret.start - 1);
                        return isMinusPressed ? this._replaceSelectedText(text, {
                            start: caret.start - 1,
                            end: caret.start
                        }, "") : text
                    },
                    _setTextByParsedValue: function() {
                        const format = this._getFormatPattern();
                        const parsed = this._parseValue();
                        const formatted = this._format(parsed, format) || "";
                        this._setInputText(formatted)
                    },
                    _formatValue: function(e) {
                        let normalizedText = this._getInputVal();
                        const caret = this._caret();
                        const textWithoutMinus = this._removeMinusFromText(normalizedText, caret);
                        const wasMinusRemoved = textWithoutMinus !== normalizedText;
                        normalizedText = textWithoutMinus;
                        if (!this._isInputFromPaste(e) && this._isValueIncomplete(textWithoutMinus)) {
                            this._formattedValue = normalizedText;
                            if (wasMinusRemoved) {
                                this._setTextByParsedValue()
                            }
                            return
                        }
                        const textWasChanged = _number.default.convertDigits(this._formattedValue, true) !== normalizedText;
                        if (textWasChanged) {
                            const value = this._tryParse(normalizedText, caret, "");
                            if ((0, _type.isDefined)(value)) {
                                this._parsedValue = value
                            }
                        }
                        this._setTextByParsedValue()
                    },
                    _renderDisplayText: function() {
                        if (this._useMaskBehavior()) {
                            this._toggleEmptinessEventHandler()
                        } else {
                            this.callBase.apply(this, arguments)
                        }
                    },
                    _renderValue: function() {
                        if (this._useMaskBehavior()) {
                            this._parsedValue = this.option("value");
                            this._setTextByParsedValue()
                        }
                        return this.callBase()
                    },
                    _updateParsedValue: function() {
                        const inputValue = this._getInputVal();
                        this._parsedValue = this._tryParse(inputValue, this._caret())
                    },
                    _adjustParsedValue: function() {
                        if (!this._useMaskBehavior()) {
                            return
                        }
                        const clearedText = this._removeStubs(this._getInputVal());
                        const parsedValue = clearedText ? this._parseValue() : null;
                        if (!(0, _type.isNumeric)(parsedValue)) {
                            this._parsedValue = parsedValue;
                            return
                        }
                        this._parsedValue = (0, _math.fitIntoRange)(parsedValue, this.option("min"), this.option("max"))
                    },
                    _valueChangeEventHandler: function(e) {
                        if (!this._useMaskBehavior()) {
                            return this.callBase(e)
                        }
                        const caret = this._caret();
                        this._saveValueChangeEvent(e);
                        this._lastKey = null;
                        this._lastKeyName = null;
                        this._updateParsedValue();
                        this._adjustParsedValue();
                        this.option("value", this._parsedValue);
                        if (caret) {
                            this._caret(caret)
                        }
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "format":
                            case "useMaskBehavior":
                                this._renderInputType();
                                this._updateFormat();
                                this._renderFormatter();
                                this._renderValue();
                                this._refreshValueChangeEvent();
                                this._refreshEvents();
                                break;
                            case "min":
                            case "max":
                                this._adjustParsedValue();
                                this.callBase(args);
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _clearCache: function() {
                        delete this._formattedValue;
                        delete this._lastKey;
                        delete this._lastKeyName;
                        delete this._parsedValue;
                        delete this._focusOutOccurs;
                        clearTimeout(this._caretTimeout);
                        delete this._caretTimeout
                    },
                    _clean: function() {
                        this._clearCache();
                        this.callBase()
                    }
                });
                var _default = NumberBoxMask;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        30306:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/number_box/number_box.spin.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../events/pointer */ 93786));
                var _emitter = __webpack_require__( /*! ../../events/core/emitter.feedback */ 91633);
                var _hold = _interopRequireDefault(__webpack_require__( /*! ../../events/hold */ 11699));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const POINTERUP_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.up, "dxNumberBox");
                const POINTERCANCEL_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.cancel, "dxNumberBox");
                const SpinButton = _ui.default.inherit({
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            direction: "up",
                            onChange: null,
                            activeStateEnabled: true,
                            hoverStateEnabled: true
                        })
                    },
                    _initMarkup: function() {
                        this.callBase();
                        const direction = "dx-numberbox-spin-" + this.option("direction");
                        this.$element().addClass("dx-numberbox-spin-button").addClass(direction);
                        this._spinIcon = (0, _renderer.default)("<div>").addClass(direction + "-icon").appendTo(this.$element())
                    },
                    _render: function() {
                        this.callBase();
                        const eventName = (0, _index.addNamespace)(_pointer.default.down, this.NAME);
                        const $element = this.$element();
                        _events_engine.default.off($element, eventName);
                        _events_engine.default.on($element, eventName, this._spinDownHandler.bind(this));
                        this._spinChangeHandler = this._createActionByOption("onChange")
                    },
                    _spinDownHandler: function(e) {
                        e.preventDefault();
                        this._clearTimer();
                        _events_engine.default.on(this.$element(), _hold.default.name, function() {
                            this._feedBackDeferred = new _deferred.Deferred;
                            (0, _emitter.lock)(this._feedBackDeferred);
                            this._spinChangeHandler({
                                event: e
                            });
                            this._holdTimer = setInterval(this._spinChangeHandler, 100, {
                                event: e
                            })
                        }.bind(this));
                        const document = _dom_adapter.default.getDocument();
                        _events_engine.default.on(document, POINTERUP_EVENT_NAME, this._clearTimer.bind(this));
                        _events_engine.default.on(document, POINTERCANCEL_EVENT_NAME, this._clearTimer.bind(this));
                        this._spinChangeHandler({
                            event: e
                        })
                    },
                    _dispose: function() {
                        this._clearTimer();
                        this.callBase()
                    },
                    _clearTimer: function() {
                        _events_engine.default.off(this.$element(), _hold.default.name);
                        const document = _dom_adapter.default.getDocument();
                        _events_engine.default.off(document, POINTERUP_EVENT_NAME);
                        _events_engine.default.off(document, POINTERCANCEL_EVENT_NAME);
                        if (this._feedBackDeferred) {
                            this._feedBackDeferred.resolve()
                        }
                        if (this._holdTimer) {
                            clearInterval(this._holdTimer)
                        }
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "onChange":
                            case "direction":
                                this._invalidate();
                                break;
                            default:
                                this.callBase(args)
                        }
                    }
                });
                var _default = SpinButton;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        25353:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/number_box/number_box.spins.js ***!
              \*******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _button = _interopRequireDefault(__webpack_require__( /*! ../text_box/texteditor_button_collection/button */ 11483));
                var _number_box = _interopRequireDefault(__webpack_require__( /*! ./number_box.spin */ 30306));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../events/pointer */ 93786));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let SpinButtons = function(_TextEditorButton) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(SpinButtons, _TextEditorButton);

                    function SpinButtons() {
                        return _TextEditorButton.apply(this, arguments) || this
                    }
                    var _proto = SpinButtons.prototype;
                    _proto._attachEvents = function(instance, $spinContainer) {
                        const {
                            editor: editor
                        } = this;
                        const eventName = (0, _index.addNamespace)(_pointer.default.down, editor.NAME);
                        const $spinContainerChildren = $spinContainer.children();
                        const pointerDownAction = editor._createAction(e => editor._spinButtonsPointerDownHandler(e));
                        _events_engine.default.off($spinContainer, eventName);
                        _events_engine.default.on($spinContainer, eventName, e => pointerDownAction({
                            event: e
                        }));
                        _number_box.default.getInstance($spinContainerChildren.eq(0)).option("onChange", e => editor._spinUpChangeHandler(e));
                        _number_box.default.getInstance($spinContainerChildren.eq(1)).option("onChange", e => editor._spinDownChangeHandler(e))
                    };
                    _proto._create = function() {
                        const {
                            editor: editor
                        } = this;
                        const $spinContainer = (0, _renderer.default)("<div>").addClass("dx-numberbox-spin-container");
                        const $spinUp = (0, _renderer.default)("<div>").appendTo($spinContainer);
                        const $spinDown = (0, _renderer.default)("<div>").appendTo($spinContainer);
                        const options = this._getOptions();
                        this._addToContainer($spinContainer);
                        editor._createComponent($spinUp, _number_box.default, (0, _extend.extend)({
                            direction: "up"
                        }, options));
                        editor._createComponent($spinDown, _number_box.default, (0, _extend.extend)({
                            direction: "down"
                        }, options));
                        this._legacyRender(editor.$element(), this._isTouchFriendly(), options.visible);
                        return {
                            instance: $spinContainer,
                            $element: $spinContainer
                        }
                    };
                    _proto._getOptions = function() {
                        const {
                            editor: editor
                        } = this;
                        const visible = this._isVisible();
                        const disabled = editor.option("disabled");
                        return {
                            visible: visible,
                            disabled: disabled
                        }
                    };
                    _proto._isVisible = function() {
                        const {
                            editor: editor
                        } = this;
                        return _TextEditorButton.prototype._isVisible.call(this) && editor.option("showSpinButtons")
                    };
                    _proto._isTouchFriendly = function() {
                        const {
                            editor: editor
                        } = this;
                        return editor.option("showSpinButtons") && editor.option("useLargeSpinButtons")
                    };
                    _proto._legacyRender = function($editor, isTouchFriendly, isVisible) {
                        $editor.toggleClass("dx-numberbox-spin-touch-friendly", isTouchFriendly);
                        $editor.toggleClass("dx-numberbox-spin", isVisible)
                    };
                    _proto.update = function() {
                        const shouldUpdate = _TextEditorButton.prototype.update.call(this);
                        if (shouldUpdate) {
                            const {
                                editor: editor,
                                instance: instance
                            } = this;
                            const $editor = editor.$element();
                            const isVisible = this._isVisible();
                            const isTouchFriendly = this._isTouchFriendly();
                            const $spinButtons = instance.children();
                            const spinUp = _number_box.default.getInstance($spinButtons.eq(0));
                            const spinDown = _number_box.default.getInstance($spinButtons.eq(1));
                            const options = this._getOptions();
                            spinUp.option(options);
                            spinDown.option(options);
                            this._legacyRender($editor, isTouchFriendly, isVisible)
                        }
                    };
                    return SpinButtons
                }(_button.default);
                exports.default = SpinButtons;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        7206:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/number_box/utils.js ***!
              \********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.splitByIndex = exports.getRealSeparatorIndex = exports.getNthOccurrence = exports.adjustPercentValue = void 0;
                var _math = __webpack_require__( /*! ../../core/utils/math */ 60810);
                exports.getRealSeparatorIndex = function(str) {
                    let quoteBalance = 0;
                    let separatorCount = 0;
                    for (let i = 0; i < str.length; ++i) {
                        if ("'" === str[i]) {
                            quoteBalance++
                        }
                        if ("." === str[i]) {
                            ++separatorCount;
                            if (quoteBalance % 2 === 0) {
                                return {
                                    occurrence: separatorCount,
                                    index: i
                                }
                            }
                        }
                    }
                    return {
                        occurrence: 1,
                        index: -1
                    }
                };
                exports.getNthOccurrence = function(str, c, n) {
                    let i = -1;
                    while (n-- && i++ < str.length) {
                        i = str.indexOf(c, i)
                    }
                    return i
                };
                exports.splitByIndex = function(str, index) {
                    if (-1 === index) {
                        return [str]
                    }
                    return [str.slice(0, index), str.slice(index + 1)]
                };
                exports.adjustPercentValue = function(rawValue, precision) {
                    return rawValue && (0, _math.adjust)(rawValue / 100, precision)
                }
            },
        49314:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/overlay/overlay_position_controller.js ***!
              \***************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.OverlayPositionController = exports.OVERLAY_POSITION_ALIASES = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _position = _interopRequireDefault(__webpack_require__( /*! ../../animation/position */ 49387));
                var _translator = __webpack_require__( /*! ../../animation/translator */ 31648);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _swatch_container = _interopRequireDefault(__webpack_require__( /*! ../widget/swatch_container */ 92591));

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

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }
                const window = (0, _window.getWindow)();
                const OVERLAY_POSITION_ALIASES = {
                    top: {
                        my: "top center",
                        at: "top center"
                    },
                    bottom: {
                        my: "bottom center",
                        at: "bottom center"
                    },
                    right: {
                        my: "right center",
                        at: "right center"
                    },
                    left: {
                        my: "left center",
                        at: "left center"
                    },
                    center: {
                        my: "center",
                        at: "center"
                    },
                    "right bottom": {
                        my: "right bottom",
                        at: "right bottom"
                    },
                    "right top": {
                        my: "right top",
                        at: "right top"
                    },
                    "left bottom": {
                        my: "left bottom",
                        at: "left bottom"
                    },
                    "left top": {
                        my: "left top",
                        at: "left top"
                    }
                };
                exports.OVERLAY_POSITION_ALIASES = OVERLAY_POSITION_ALIASES;
                const OVERLAY_DEFAULT_BOUNDARY_OFFSET = {
                    h: 0,
                    v: 0
                };
                let OverlayPositionController = function() {
                    function OverlayPositionController(_ref) {
                        let {
                            position: position,
                            container: container,
                            visualContainer: visualContainer,
                            $root: $root,
                            $content: $content,
                            $wrapper: $wrapper,
                            onPositioned: onPositioned,
                            onVisualPositionChanged: onVisualPositionChanged,
                            restorePosition: restorePosition,
                            _fixWrapperPosition: _fixWrapperPosition,
                            _skipContentPositioning: _skipContentPositioning
                        } = _ref;
                        this._props = {
                            position: position,
                            container: container,
                            visualContainer: visualContainer,
                            restorePosition: restorePosition,
                            onPositioned: onPositioned,
                            onVisualPositionChanged: onVisualPositionChanged,
                            _fixWrapperPosition: _fixWrapperPosition,
                            _skipContentPositioning: _skipContentPositioning
                        };
                        this._$root = $root;
                        this._$content = $content;
                        this._$wrapper = $wrapper;
                        this._$markupContainer = void 0;
                        this._$visualContainer = void 0;
                        this._shouldRenderContentInitialPosition = true;
                        this._visualPosition = void 0;
                        this._initialPosition = void 0;
                        this._previousVisualPosition = void 0;
                        this.updateContainer(container);
                        this.updatePosition(position);
                        this.updateVisualContainer(visualContainer)
                    }
                    var _proto = OverlayPositionController.prototype;
                    _proto.restorePositionOnNextRender = function(value) {
                        this._shouldRenderContentInitialPosition = value || !this._visualPosition
                    };
                    _proto.openingHandled = function() {
                        const shouldRestorePosition = this._props.restorePosition;
                        this.restorePositionOnNextRender(shouldRestorePosition)
                    };
                    _proto.updatePosition = function(positionProp) {
                        this._props.position = positionProp;
                        this._position = this._normalizePosition(positionProp);
                        this.updateVisualContainer()
                    };
                    _proto.updateContainer = function() {
                        let containerProp = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._props.container;
                        this._props.container = containerProp;
                        this._$markupContainer = containerProp ? (0, _renderer.default)(containerProp) : _swatch_container.default.getSwatchContainer(this._$root);
                        this.updateVisualContainer(this._props.visualContainer)
                    };
                    _proto.updateVisualContainer = function() {
                        let visualContainer = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._props.visualContainer;
                        this._props.visualContainer = visualContainer;
                        this._$visualContainer = this._getVisualContainer()
                    };
                    _proto.detectVisualPositionChange = function(event) {
                        this._updateVisualPositionValue();
                        this._raisePositionedEvents(event)
                    };
                    _proto.positionContent = function() {
                        if (this._shouldRenderContentInitialPosition) {
                            this._renderContentInitialPosition()
                        } else {
                            (0, _translator.move)(this._$content, this._visualPosition);
                            this.detectVisualPositionChange()
                        }
                    };
                    _proto.positionWrapper = function() {
                        if (this._$visualContainer) {
                            _position.default.setup(this._$wrapper, {
                                my: "top left",
                                at: "top left",
                                of: this._$visualContainer
                            })
                        }
                    };
                    _proto.styleWrapperPosition = function() {
                        const useFixed = (0, _type.isWindow)(this.$visualContainer.get(0)) || this._props._fixWrapperPosition;
                        const positionStyle = useFixed ? "fixed" : "absolute";
                        this._$wrapper.css("position", positionStyle)
                    };
                    _proto._updateVisualPositionValue = function() {
                        this._previousVisualPosition = this._visualPosition;
                        this._visualPosition = (0, _translator.locate)(this._$content)
                    };
                    _proto._renderContentInitialPosition = function() {
                        this._renderBoundaryOffset();
                        (0, _translator.resetPosition)(this._$content);
                        const wrapperOverflow = this._$wrapper.css("overflow");
                        this._$wrapper.css("overflow", "hidden");
                        if (!this._props._skipContentPositioning) {
                            const resultPosition = _position.default.setup(this._$content, this._position);
                            this._initialPosition = resultPosition
                        }
                        this._$wrapper.css("overflow", wrapperOverflow);
                        this.detectVisualPositionChange()
                    };
                    _proto._raisePositionedEvents = function(event) {
                        const previousPosition = this._previousVisualPosition;
                        const newPosition = this._visualPosition;
                        const isVisualPositionChanged = (null === previousPosition || void 0 === previousPosition ? void 0 : previousPosition.top) !== newPosition.top || (null === previousPosition || void 0 === previousPosition ? void 0 : previousPosition.left) !== newPosition.left;
                        if (isVisualPositionChanged) {
                            this._props.onVisualPositionChanged({
                                previousPosition: previousPosition,
                                position: newPosition,
                                event: event
                            })
                        }
                        this._props.onPositioned({
                            position: this._initialPosition
                        })
                    };
                    _proto._renderBoundaryOffset = function() {
                        var _this$_position;
                        const boundaryOffset = null !== (_this$_position = this._position) && void 0 !== _this$_position ? _this$_position : {
                            boundaryOffset: OVERLAY_DEFAULT_BOUNDARY_OFFSET
                        };
                        this._$content.css("margin", "".concat(boundaryOffset.v, "px ").concat(boundaryOffset.h, "px"))
                    };
                    _proto._getVisualContainer = function() {
                        var _this$_props$position, _this$_props$position2;
                        const containerProp = this._props.container;
                        const visualContainerProp = this._props.visualContainer;
                        const positionOf = (0, _type.isEvent)(null === (_this$_props$position = this._props.position) || void 0 === _this$_props$position ? void 0 : _this$_props$position.of) ? this._props.position.of.target : null === (_this$_props$position2 = this._props.position) || void 0 === _this$_props$position2 ? void 0 : _this$_props$position2.of;
                        if (visualContainerProp) {
                            return (0, _renderer.default)(visualContainerProp)
                        }
                        if (containerProp) {
                            return (0, _renderer.default)(containerProp)
                        }
                        if (positionOf) {
                            return (0, _renderer.default)(positionOf)
                        }
                        return (0, _renderer.default)(window)
                    };
                    _proto._normalizePosition = function(positionProp) {
                        const defaultPositionConfig = {
                            boundaryOffset: OVERLAY_DEFAULT_BOUNDARY_OFFSET
                        };
                        if ((0, _type.isDefined)(positionProp)) {
                            return (0, _extend.extend)(true, {}, defaultPositionConfig, this._positionToObject(positionProp))
                        } else {
                            return defaultPositionConfig
                        }
                    };
                    _proto._positionToObject = function(position) {
                        if ((0, _type.isString)(position)) {
                            return (0, _extend.extend)({}, OVERLAY_POSITION_ALIASES[position])
                        }
                        return position
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(OverlayPositionController, [{
                        key: "$container",
                        get: function() {
                            this.updateContainer();
                            return this._$markupContainer
                        }
                    }, {
                        key: "$visualContainer",
                        get: function() {
                            return this._$visualContainer
                        }
                    }, {
                        key: "position",
                        get: function() {
                            return this._position
                        }
                    }, {
                        key: "fixWrapperPosition",
                        set: function(fixWrapperPosition) {
                            this._props._fixWrapperPosition = fixWrapperPosition;
                            this.styleWrapperPosition()
                        }
                    }, {
                        key: "restorePosition",
                        set: function(restorePosition) {
                            this._props.restorePosition = restorePosition
                        }
                    }]);
                    return OverlayPositionController
                }();
                exports.OverlayPositionController = OverlayPositionController
            },
        89799:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/overlay/ui.overlay.js ***!
              \**********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _fx = _interopRequireDefault(__webpack_require__( /*! ../../animation/fx */ 87209));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _element = __webpack_require__( /*! ../../core/element */ 6415);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _empty_template = __webpack_require__( /*! ../../core/templates/empty_template */ 10688);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _dom = __webpack_require__( /*! ../../core/utils/dom */ 3532);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/ready_callbacks */ 24311));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _view_port = __webpack_require__( /*! ../../core/utils/view_port */ 77695);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../core/errors */ 17381));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.errors */ 96688));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _drag = __webpack_require__( /*! ../../events/drag */ 23174);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../events/pointer */ 93786));
                var _short = __webpack_require__( /*! ../../events/short */ 72918);
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _visibility_change = __webpack_require__( /*! ../../events/visibility_change */ 80506);
                var _hide_callback = __webpack_require__( /*! ../../mobile/hide_callback */ 4928);
                var _selectors = __webpack_require__( /*! ../widget/selectors */ 31421);
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _browser = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/browser */ 47810));
                var zIndexPool = function(obj, nodeInterop) {
                    if (!nodeInterop && obj && obj.__esModule) {
                        return obj
                    }
                    if (null === obj || "object" !== typeof obj && "function" !== typeof obj) {
                        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 ("default" !== key && 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
                }(__webpack_require__( /*! ./z_index */ 85421));
                var _overlay_position_controller = __webpack_require__( /*! ./overlay_position_controller */ 49314);

                function _getRequireWildcardCache(nodeInterop) {
                    if ("function" !== typeof WeakMap) {
                        return null
                    }
                    var cacheBabelInterop = new WeakMap;
                    var cacheNodeInterop = new WeakMap;
                    return (_getRequireWildcardCache = function(nodeInterop) {
                        return nodeInterop ? cacheNodeInterop : cacheBabelInterop
                    })(nodeInterop)
                }

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const ready = _ready_callbacks.default.add;
                const window = (0, _window.getWindow)();
                const viewPortChanged = _view_port.changeCallback;
                const OVERLAY_STACK = [];
                ready(() => {
                    _events_engine.default.subscribeGlobal(_dom_adapter.default.getDocument(), _pointer.default.down, e => {
                        for (let i = OVERLAY_STACK.length - 1; i >= 0; i--) {
                            if (!OVERLAY_STACK[i]._proxiedDocumentDownHandler(e)) {
                                return
                            }
                        }
                    })
                });
                const Overlay = _ui2.default.inherit({
                    _supportedKeys: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            escape: function() {
                                this.hide()
                            }
                        })
                    },
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            activeStateEnabled: false,
                            visible: false,
                            deferRendering: true,
                            shading: true,
                            shadingColor: "",
                            wrapperAttr: {},
                            position: (0, _extend.extend)({}, _overlay_position_controller.OVERLAY_POSITION_ALIASES.center),
                            width: "80vw",
                            minWidth: null,
                            maxWidth: null,
                            height: "80vh",
                            minHeight: null,
                            maxHeight: null,
                            animation: {
                                show: {
                                    type: "pop",
                                    duration: 300,
                                    from: {
                                        scale: .55
                                    }
                                },
                                hide: {
                                    type: "pop",
                                    duration: 300,
                                    from: {
                                        opacity: 1,
                                        scale: 1
                                    },
                                    to: {
                                        opacity: 0,
                                        scale: .55
                                    }
                                }
                            },
                            closeOnOutsideClick: false,
                            hideOnOutsideClick: false,
                            copyRootClassesToWrapper: false,
                            _ignoreCopyRootClassesToWrapperDeprecation: false,
                            _ignoreElementAttrDeprecation: false,
                            _ignorePreventScrollEventsDeprecation: false,
                            onShowing: null,
                            onShown: null,
                            onHiding: null,
                            onHidden: null,
                            contentTemplate: "content",
                            innerOverlay: false,
                            restorePosition: true,
                            container: void 0,
                            visualContainer: void 0,
                            hideTopOverlayHandler: () => {
                                this.hide()
                            },
                            hideOnParentScroll: false,
                            preventScrollEvents: true,
                            onPositioned: null,
                            propagateOutsideClick: false,
                            ignoreChildEvents: true,
                            _checkParentVisibility: true,
                            _hideOnParentScrollTarget: void 0,
                            _fixWrapperPosition: false
                        })
                    },
                    _defaultOptionsRules: function() {
                        return this.callBase().concat([{
                            device: function() {
                                return !(0, _window.hasWindow)()
                            },
                            options: {
                                width: null,
                                height: null,
                                animation: null,
                                _checkParentVisibility: false
                            }
                        }])
                    },
                    _setOptionsByReference: function() {
                        this.callBase();
                        (0, _extend.extend)(this._optionsByReference, {
                            animation: true
                        })
                    },
                    $wrapper: function() {
                        return this._$wrapper
                    },
                    _eventBindingTarget: function() {
                        return this._$content
                    },
                    _setDeprecatedOptions() {
                        this.callBase();
                        (0, _extend.extend)(this._deprecatedOptions, {
                            closeOnOutsideClick: {
                                since: "22.1",
                                alias: "hideOnOutsideClick"
                            }
                        })
                    },
                    ctor: function(element, options) {
                        this.callBase(element, options);
                        if (options) {
                            if (options.copyRootClassesToWrapper && !options._ignoreCopyRootClassesToWrapperDeprecation) {
                                this._logDeprecatedOptionWarning("copyRootClassesToWrapper", {
                                    since: "21.2",
                                    message: 'Use the "wrapperAttr" option instead'
                                })
                            }
                            if (options.elementAttr && !options._ignoreElementAttrDeprecation) {
                                this._logDeprecatedOptionWarning("elementAttr", {
                                    since: "21.2",
                                    message: 'Use the "wrapperAttr" option instead'
                                })
                            }
                            if ("preventScrollEvents" in options && !options._ignorePreventScrollEventsDeprecation) {
                                this._logDeprecatedPreventScrollEventsInfo()
                            }
                        }
                    },
                    _logDeprecatedPreventScrollEventsInfo() {
                        this._logDeprecatedOptionWarning("preventScrollEvents", {
                            since: "23.1",
                            message: "If you enable this option, end-users may experience scrolling issues."
                        })
                    },
                    _init: function() {
                        this.callBase();
                        this._initActions();
                        this._initHideOnOutsideClickHandler();
                        this._initTabTerminatorHandler();
                        this._customWrapperClass = null;
                        this._$wrapper = (0, _renderer.default)("<div>").addClass("dx-overlay-wrapper");
                        this._$content = (0, _renderer.default)("<div>").addClass("dx-overlay-content");
                        this._initInnerOverlayClass();
                        const $element = this.$element();
                        if (this.option("copyRootClassesToWrapper")) {
                            this._$wrapper.addClass($element.attr("class"))
                        }
                        $element.addClass("dx-overlay");
                        this._$wrapper.attr("data-bind", "dxControlsDescendantBindings: true");
                        this._toggleViewPortSubscription(true);
                        this._initHideTopOverlayHandler(this.option("hideTopOverlayHandler"));
                        this._parentsScrollSubscriptionInfo = {
                            handler: e => {
                                this._hideOnParentsScrollHandler(e)
                            }
                        };
                        this.warnPositionAsFunction()
                    },
                    warnPositionAsFunction() {
                        if ((0, _type.isFunction)(this.option("position"))) {
                            _errors.default.log("W0018")
                        }
                    },
                    _initInnerOverlayClass: function() {
                        this._$content.toggleClass("dx-inner-overlay", this.option("innerOverlay"))
                    },
                    _initHideTopOverlayHandler: function(handler) {
                        this._hideTopOverlayHandler = handler
                    },
                    _getActionsList: function() {
                        return ["onShowing", "onShown", "onHiding", "onHidden", "onPositioned", "onVisualPositionChanged"]
                    },
                    _initActions: function() {
                        this._actions = {};
                        const actions = this._getActionsList();
                        (0, _iterator.each)(actions, (_, action) => {
                            this._actions[action] = this._createActionByOption(action, {
                                excludeValidators: ["disabled", "readOnly"]
                            }) || _common.noop
                        })
                    },
                    _initHideOnOutsideClickHandler: function() {
                        var _this = this;
                        this._proxiedDocumentDownHandler = function() {
                            return _this._documentDownHandler(...arguments)
                        }
                    },
                    _initMarkup() {
                        this.callBase();
                        this._renderWrapperAttributes();
                        this._initPositionController()
                    },
                    _documentDownHandler: function(e) {
                        if (this._showAnimationProcessing) {
                            this._stopAnimation()
                        }
                        const isAttachedTarget = (0, _renderer.default)(window.document).is(e.target) || (0, _dom.contains)(window.document, e.target);
                        const isInnerOverlay = (0, _renderer.default)(e.target).closest(".".concat("dx-inner-overlay")).length;
                        const outsideClick = isAttachedTarget && !isInnerOverlay && !(this._$content.is(e.target) || (0, _dom.contains)(this._$content.get(0), e.target));
                        if (outsideClick && this._shouldHideOnOutsideClick(e)) {
                            this._outsideClickHandler(e)
                        }
                        return this.option("propagateOutsideClick")
                    },
                    _shouldHideOnOutsideClick: function(e) {
                        const {
                            hideOnOutsideClick: hideOnOutsideClick
                        } = this.option();
                        if ((0, _type.isFunction)(hideOnOutsideClick)) {
                            return hideOnOutsideClick(e)
                        }
                        return hideOnOutsideClick
                    },
                    _outsideClickHandler(e) {
                        if (this.option("shading")) {
                            e.preventDefault()
                        }
                        this.hide()
                    },
                    _getAnonymousTemplateName: function() {
                        return "content"
                    },
                    _initTemplates: function() {
                        this._templateManager.addDefaultTemplates({
                            content: new _empty_template.EmptyTemplate
                        });
                        this.callBase()
                    },
                    _isTopOverlay: function() {
                        const overlayStack = this._overlayStack();
                        for (let i = overlayStack.length - 1; i >= 0; i--) {
                            const tabbableElements = overlayStack[i]._findTabbableBounds();
                            if (tabbableElements.first || tabbableElements.last) {
                                return overlayStack[i] === this
                            }
                        }
                        return false
                    },
                    _overlayStack: function() {
                        return OVERLAY_STACK
                    },
                    _zIndexInitValue: function() {
                        return Overlay.baseZIndex()
                    },
                    _toggleViewPortSubscription: function(toggle) {
                        var _this2 = this;
                        viewPortChanged.remove(this._viewPortChangeHandle);
                        if (toggle) {
                            this._viewPortChangeHandle = function() {
                                _this2._viewPortChangeHandler(...arguments)
                            };
                            viewPortChanged.add(this._viewPortChangeHandle)
                        }
                    },
                    _viewPortChangeHandler: function() {
                        this._positionController.updateContainer(this.option("container"));
                        this._refresh()
                    },
                    _renderWrapperAttributes() {
                        const {
                            wrapperAttr: wrapperAttr
                        } = this.option();
                        const attributes = (0, _extend.extend)({}, wrapperAttr);
                        const classNames = attributes.class;
                        delete attributes.class;
                        this.$wrapper().attr(attributes).removeClass(this._customWrapperClass).addClass(classNames);
                        this._customWrapperClass = classNames
                    },
                    _renderVisibilityAnimate: function(visible) {
                        this._stopAnimation();
                        return visible ? this._show() : this._hide()
                    },
                    _getAnimationConfig: function() {
                        return this._getOptionValue("animation", this)
                    },
                    _toggleBodyScroll: _common.noop,
                    _animateShowing: function() {
                        var _this$_getAnimationCo, _showAnimation$start, _showAnimation$comple, _this3 = this;
                        const animation = null !== (_this$_getAnimationCo = this._getAnimationConfig()) && void 0 !== _this$_getAnimationCo ? _this$_getAnimationCo : {};
                        const showAnimation = this._normalizeAnimation(animation.show, "to");
                        const startShowAnimation = null !== (_showAnimation$start = null === showAnimation || void 0 === showAnimation ? void 0 : showAnimation.start) && void 0 !== _showAnimation$start ? _showAnimation$start : _common.noop;
                        const completeShowAnimation = null !== (_showAnimation$comple = null === showAnimation || void 0 === showAnimation ? void 0 : showAnimation.complete) && void 0 !== _showAnimation$comple ? _showAnimation$comple : _common.noop;
                        this._animate(showAnimation, (function() {
                            if (_this3._isAnimationPaused) {
                                return
                            }
                            if (_this3.option("focusStateEnabled")) {
                                _events_engine.default.trigger(_this3._focusTarget(), "focus")
                            }
                            for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
                                args[_key] = arguments[_key]
                            }
                            completeShowAnimation.call(_this3, ...args);
                            _this3._showAnimationProcessing = false;
                            _this3._isHidden = false;
                            _this3._actions.onShown();
                            _this3._toggleSafariScrolling();
                            _this3._showingDeferred.resolve()
                        }), (function() {
                            if (_this3._isAnimationPaused) {
                                return
                            }
                            for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
                                args[_key2] = arguments[_key2]
                            }
                            startShowAnimation.call(_this3, ...args);
                            _this3._showAnimationProcessing = true
                        }))
                    },
                    _processShowingHidingCancel: function(cancelArg, applyFunction, cancelFunction) {
                        if ((0, _type.isPromise)(cancelArg)) {
                            cancelArg.then(shouldCancel => {
                                if (shouldCancel) {
                                    cancelFunction()
                                } else {
                                    applyFunction()
                                }
                            }).catch(() => applyFunction())
                        } else {
                            cancelArg ? cancelFunction() : applyFunction()
                        }
                    },
                    _show: function() {
                        this._showingDeferred = new _deferred.Deferred;
                        this._parentHidden = this._isParentHidden();
                        this._showingDeferred.done(() => {
                            delete this._parentHidden
                        });
                        if (this._parentHidden) {
                            this._isHidden = true;
                            return this._showingDeferred.resolve()
                        }
                        if (this._currentVisible) {
                            return (new _deferred.Deferred).resolve().promise()
                        }
                        this._currentVisible = true;
                        if (this._isHidingActionCanceled) {
                            delete this._isHidingActionCanceled;
                            this._showingDeferred.reject()
                        } else {
                            const show = () => {
                                this._stopAnimation();
                                this._toggleBodyScroll(this.option("enableBodyScroll"));
                                this._toggleVisibility(true);
                                this._$content.css("visibility", "hidden");
                                this._$content.toggleClass("dx-state-invisible", false);
                                this._updateZIndexStackPosition(true);
                                this._positionController.openingHandled();
                                this._renderContent();
                                const showingArgs = {
                                    cancel: false
                                };
                                this._actions.onShowing(showingArgs);
                                this._processShowingHidingCancel(showingArgs.cancel, () => {
                                    this._$content.css("visibility", "");
                                    this._renderVisibility(true);
                                    this._animateShowing()
                                }, () => {
                                    this._toggleVisibility(false);
                                    this._$content.css("visibility", "");
                                    this._$content.toggleClass("dx-state-invisible", true);
                                    this._isShowingActionCanceled = true;
                                    this._moveFromContainer();
                                    this._toggleBodyScroll(true);
                                    this.option("visible", false);
                                    this._showingDeferred.resolve()
                                })
                            };
                            if (this.option("templatesRenderAsynchronously")) {
                                this._stopShowTimer();
                                this._asyncShowTimeout = setTimeout(show)
                            } else {
                                show()
                            }
                        }
                        return this._showingDeferred.promise()
                    },
                    _normalizeAnimation: function(showHideConfig, direction) {
                        if (showHideConfig) {
                            showHideConfig = (0, _extend.extend)({
                                type: "slide",
                                skipElementInitialStyles: true
                            }, showHideConfig);
                            if ((0, _type.isObject)(showHideConfig[direction])) {
                                (0, _extend.extend)(showHideConfig[direction], {
                                    position: this._positionController.position
                                })
                            }
                        }
                        return showHideConfig
                    },
                    _animateHiding: function() {
                        var _this$_getAnimationCo2, _hideAnimation$start, _hideAnimation$comple, _this4 = this;
                        const animation = null !== (_this$_getAnimationCo2 = this._getAnimationConfig()) && void 0 !== _this$_getAnimationCo2 ? _this$_getAnimationCo2 : {};
                        const hideAnimation = this._normalizeAnimation(animation.hide, "from");
                        const startHideAnimation = null !== (_hideAnimation$start = null === hideAnimation || void 0 === hideAnimation ? void 0 : hideAnimation.start) && void 0 !== _hideAnimation$start ? _hideAnimation$start : _common.noop;
                        const completeHideAnimation = null !== (_hideAnimation$comple = null === hideAnimation || void 0 === hideAnimation ? void 0 : hideAnimation.complete) && void 0 !== _hideAnimation$comple ? _hideAnimation$comple : _common.noop;
                        this._animate(hideAnimation, (function() {
                            var _this4$_actions;
                            _this4._$content.css("pointerEvents", "");
                            _this4._renderVisibility(false);
                            for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
                                args[_key3] = arguments[_key3]
                            }
                            completeHideAnimation.call(_this4, ...args);
                            _this4._hideAnimationProcessing = false;
                            null === (_this4$_actions = _this4._actions) || void 0 === _this4$_actions ? void 0 : _this4$_actions.onHidden();
                            _this4._hidingDeferred.resolve()
                        }), (function() {
                            _this4._$content.css("pointerEvents", "none");
                            for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
                                args[_key4] = arguments[_key4]
                            }
                            startHideAnimation.call(_this4, ...args);
                            _this4._hideAnimationProcessing = true
                        }))
                    },
                    _hide: function() {
                        if (!this._currentVisible) {
                            return (new _deferred.Deferred).resolve().promise()
                        }
                        this._currentVisible = false;
                        this._hidingDeferred = new _deferred.Deferred;
                        const hidingArgs = {
                            cancel: false
                        };
                        if (this._isShowingActionCanceled) {
                            delete this._isShowingActionCanceled;
                            this._hidingDeferred.reject()
                        } else {
                            this._actions.onHiding(hidingArgs);
                            this._toggleSafariScrolling();
                            this._toggleBodyScroll(true);
                            const cancelHide = () => {
                                this._isHidingActionCanceled = true;
                                this._toggleBodyScroll(this.option("enableBodyScroll"));
                                this.option("visible", true);
                                this._hidingDeferred.resolve()
                            };
                            const applyHide = () => {
                                this._forceFocusLost();
                                this._toggleShading(false);
                                this._toggleSubscriptions(false);
                                this._stopShowTimer();
                                this._animateHiding()
                            };
                            this._processShowingHidingCancel(hidingArgs.cancel, applyHide, cancelHide)
                        }
                        return this._hidingDeferred.promise()
                    },
                    _forceFocusLost: function() {
                        const activeElement = _dom_adapter.default.getActiveElement();
                        const shouldResetActiveElement = !!this._$content.find(activeElement).length;
                        if (shouldResetActiveElement) {
                            (0, _dom.resetActiveElement)()
                        }
                    },
                    _animate: function(animation, completeCallback, startCallback) {
                        if (animation) {
                            startCallback = startCallback || animation.start || _common.noop;
                            _fx.default.animate(this._$content, (0, _extend.extend)({}, animation, {
                                start: startCallback,
                                complete: completeCallback
                            }))
                        } else {
                            completeCallback()
                        }
                    },
                    _stopAnimation: function() {
                        _fx.default.stop(this._$content, true)
                    },
                    _renderVisibility: function(visible) {
                        if (visible && this._isParentHidden()) {
                            return
                        }
                        this._currentVisible = visible;
                        this._stopAnimation();
                        if (!visible) {
                            (0, _visibility_change.triggerHidingEvent)(this._$content)
                        }
                        if (visible) {
                            this._checkContainerExists();
                            this._moveToContainer();
                            this._renderGeometry();
                            (0, _visibility_change.triggerShownEvent)(this._$content);
                            (0, _visibility_change.triggerResizeEvent)(this._$content)
                        } else {
                            this._toggleVisibility(visible);
                            this._$content.toggleClass("dx-state-invisible", !visible);
                            this._updateZIndexStackPosition(visible);
                            this._moveFromContainer()
                        }
                        this._toggleShading(visible);
                        this._toggleSubscriptions(visible)
                    },
                    _updateZIndexStackPosition: function(pushToStack) {
                        const overlayStack = this._overlayStack();
                        const index = overlayStack.indexOf(this);
                        if (pushToStack) {
                            if (-1 === index) {
                                this._zIndex = zIndexPool.create(this._zIndexInitValue());
                                overlayStack.push(this)
                            }
                            this._$wrapper.css("zIndex", this._zIndex);
                            this._$content.css("zIndex", this._zIndex)
                        } else if (-1 !== index) {
                            overlayStack.splice(index, 1);
                            zIndexPool.remove(this._zIndex)
                        }
                    },
                    _toggleShading: function(visible) {
                        this._$wrapper.toggleClass("dx-overlay-shader", visible && this.option("shading"));
                        this._$wrapper.css("backgroundColor", this.option("shading") ? this.option("shadingColor") : "");
                        this._toggleTabTerminator(visible && this.option("shading"))
                    },
                    _initTabTerminatorHandler: function() {
                        var _this5 = this;
                        this._proxiedTabTerminatorHandler = function() {
                            _this5._tabKeyHandler(...arguments)
                        }
                    },
                    _toggleTabTerminator: function(enabled) {
                        const eventName = (0, _index.addNamespace)("keydown", this.NAME);
                        if (enabled) {
                            _events_engine.default.on(_dom_adapter.default.getDocument(), eventName, this._proxiedTabTerminatorHandler)
                        } else {
                            _events_engine.default.off(_dom_adapter.default.getDocument(), eventName, this._proxiedTabTerminatorHandler)
                        }
                    },
                    _findTabbableBounds: function() {
                        const $elements = this._$wrapper.find("*");
                        const elementsCount = $elements.length - 1;
                        const result = {
                            first: null,
                            last: null
                        };
                        for (let i = 0; i <= elementsCount; i++) {
                            if (!result.first && $elements.eq(i).is(_selectors.tabbable)) {
                                result.first = $elements.eq(i)
                            }
                            if (!result.last && $elements.eq(elementsCount - i).is(_selectors.tabbable)) {
                                result.last = $elements.eq(elementsCount - i)
                            }
                            if (result.first && result.last) {
                                break
                            }
                        }
                        return result
                    },
                    _tabKeyHandler: function(e) {
                        if ("tab" !== (0, _index.normalizeKeyName)(e) || !this._isTopOverlay()) {
                            return
                        }
                        const tabbableElements = this._findTabbableBounds();
                        const $firstTabbable = tabbableElements.first;
                        const $lastTabbable = tabbableElements.last;
                        const isTabOnLast = !e.shiftKey && e.target === $lastTabbable.get(0);
                        const isShiftTabOnFirst = e.shiftKey && e.target === $firstTabbable.get(0);
                        const isEmptyTabList = 0 === tabbableElements.length;
                        const isOutsideTarget = !(0, _dom.contains)(this._$wrapper.get(0), e.target);
                        if (isTabOnLast || isShiftTabOnFirst || isEmptyTabList || isOutsideTarget) {
                            e.preventDefault();
                            const $focusElement = e.shiftKey ? $lastTabbable : $firstTabbable;
                            _events_engine.default.trigger($focusElement, "focusin");
                            _events_engine.default.trigger($focusElement, "focus")
                        }
                    },
                    _toggleSubscriptions: function(enabled) {
                        if ((0, _window.hasWindow)()) {
                            this._toggleHideTopOverlayCallback(enabled);
                            this._toggleHideOnParentsScrollSubscription(enabled)
                        }
                    },
                    _toggleHideTopOverlayCallback: function(subscribe) {
                        if (!this._hideTopOverlayHandler) {
                            return
                        }
                        if (subscribe) {
                            _hide_callback.hideCallback.add(this._hideTopOverlayHandler)
                        } else {
                            _hide_callback.hideCallback.remove(this._hideTopOverlayHandler)
                        }
                    },
                    _toggleHideOnParentsScrollSubscription: function(needSubscribe) {
                        var _this$_parentsScrollS;
                        const scrollEvent = (0, _index.addNamespace)("scroll", this.NAME);
                        const {
                            prevTargets: prevTargets,
                            handler: handler
                        } = null !== (_this$_parentsScrollS = this._parentsScrollSubscriptionInfo) && void 0 !== _this$_parentsScrollS ? _this$_parentsScrollS : {};
                        _events_engine.default.off(prevTargets, scrollEvent, handler);
                        const hideOnScroll = this.option("hideOnParentScroll");
                        if (needSubscribe && hideOnScroll) {
                            let $parents = this._getHideOnParentScrollTarget().parents();
                            if ("desktop" === _devices.default.real().deviceType) {
                                $parents = $parents.add(window)
                            }
                            _events_engine.default.on($parents, scrollEvent, handler);
                            this._parentsScrollSubscriptionInfo.prevTargets = $parents
                        }
                    },
                    _hideOnParentsScrollHandler: function(e) {
                        let hideHandled = false;
                        const hideOnScroll = this.option("hideOnParentScroll");
                        if ((0, _type.isFunction)(hideOnScroll)) {
                            hideHandled = hideOnScroll(e)
                        }
                        if (!hideHandled && !this._showAnimationProcessing) {
                            this.hide()
                        }
                    },
                    _getHideOnParentScrollTarget: function() {
                        const $hideOnParentScrollTarget = (0, _renderer.default)(this.option("_hideOnParentScrollTarget"));
                        if ($hideOnParentScrollTarget.length) {
                            return $hideOnParentScrollTarget
                        }
                        return this._$wrapper
                    },
                    _render: function() {
                        this.callBase();
                        this._appendContentToElement();
                        this._renderVisibilityAnimate(this.option("visible"))
                    },
                    _appendContentToElement: function() {
                        if (!this._$content.parent().is(this.$element())) {
                            this._$content.appendTo(this.$element())
                        }
                    },
                    _renderContent: function() {
                        const shouldDeferRendering = !this._currentVisible && this.option("deferRendering");
                        const isParentHidden = this.option("visible") && this._isParentHidden();
                        if (isParentHidden) {
                            this._isHidden = true;
                            return
                        }
                        if (this._contentAlreadyRendered || shouldDeferRendering) {
                            return
                        }
                        this._contentAlreadyRendered = true;
                        this._appendContentToElement();
                        this.callBase()
                    },
                    _isParentHidden: function() {
                        if (!this.option("_checkParentVisibility")) {
                            return false
                        }
                        if (void 0 !== this._parentHidden) {
                            return this._parentHidden
                        }
                        const $parent = this.$element().parent();
                        if ($parent.is(":visible")) {
                            return false
                        }
                        let isHidden = false;
                        $parent.add($parent.parents()).each((function() {
                            const $element = (0, _renderer.default)(this);
                            if ("none" === $element.css("display")) {
                                isHidden = true;
                                return false
                            }
                        }));
                        return isHidden || !_dom_adapter.default.getBody().contains($parent.get(0))
                    },
                    _renderContentImpl: function() {
                        const whenContentRendered = new _deferred.Deferred;
                        const contentTemplateOption = this.option("contentTemplate");
                        const contentTemplate = this._getTemplate(contentTemplateOption);
                        const transclude = this._templateManager.anonymousTemplateName === contentTemplateOption;
                        contentTemplate && contentTemplate.render({
                            container: (0, _element.getPublicElement)(this.$content()),
                            noModel: true,
                            transclude: transclude,
                            onRendered: () => {
                                whenContentRendered.resolve();
                                if (this.option("templatesRenderAsynchronously")) {
                                    this._dimensionChanged()
                                }
                            }
                        });
                        this._toggleWrapperScrollEventsSubscription(this.option("preventScrollEvents"));
                        whenContentRendered.done(() => {
                            if (this.option("visible")) {
                                this._moveToContainer()
                            }
                        });
                        return whenContentRendered.promise()
                    },
                    _getPositionControllerConfig() {
                        const {
                            container: container,
                            visualContainer: visualContainer,
                            _fixWrapperPosition: _fixWrapperPosition,
                            restorePosition: restorePosition,
                            _skipContentPositioning: _skipContentPositioning
                        } = this.option();
                        return {
                            container: container,
                            visualContainer: visualContainer,
                            $root: this.$element(),
                            $content: this._$content,
                            $wrapper: this._$wrapper,
                            onPositioned: this._actions.onPositioned,
                            onVisualPositionChanged: this._actions.onVisualPositionChanged,
                            restorePosition: restorePosition,
                            _fixWrapperPosition: _fixWrapperPosition,
                            _skipContentPositioning: _skipContentPositioning
                        }
                    },
                    _initPositionController() {
                        this._positionController = new _overlay_position_controller.OverlayPositionController(this._getPositionControllerConfig())
                    },
                    _toggleWrapperScrollEventsSubscription: function(enabled) {
                        const eventName = (0, _index.addNamespace)(_drag.move, this.NAME);
                        _events_engine.default.off(this._$wrapper, eventName);
                        if (enabled) {
                            _events_engine.default.on(this._$wrapper, eventName, {
                                validate: function() {
                                    return true
                                },
                                getDirection: function() {
                                    return "both"
                                },
                                _toggleGestureCover: function(toggle) {
                                    if (!toggle) {
                                        this._toggleGestureCoverImpl(toggle)
                                    }
                                },
                                _clearSelection: _common.noop,
                                isNative: true
                            }, e => {
                                const originalEvent = e.originalEvent.originalEvent;
                                const {
                                    type: type
                                } = originalEvent || {};
                                const isWheel = "wheel" === type;
                                const isMouseMove = "mousemove" === type;
                                const isScrollByWheel = isWheel && !(0, _index.isCommandKeyPressed)(e);
                                e._cancelPreventDefault = true;
                                if (originalEvent && false !== e.cancelable && (!isMouseMove && !isWheel || isScrollByWheel)) {
                                    e.preventDefault()
                                }
                            })
                        }
                    },
                    _moveFromContainer: function() {
                        this._$content.appendTo(this.$element());
                        this._$wrapper.detach()
                    },
                    _checkContainerExists() {
                        const $wrapperContainer = this._positionController.$container;
                        if (void 0 === $wrapperContainer) {
                            return
                        }
                        const containerExists = $wrapperContainer.length > 0;
                        if (!containerExists) {
                            _ui.default.log("W1021", this.NAME)
                        }
                    },
                    _moveToContainer: function() {
                        const $wrapperContainer = this._positionController.$container;
                        this._$wrapper.appendTo($wrapperContainer);
                        this._$content.appendTo(this._$wrapper)
                    },
                    _renderGeometry: function(options) {
                        const {
                            visible: visible
                        } = this.option();
                        if (visible && (0, _window.hasWindow)()) {
                            this._stopAnimation();
                            this._renderGeometryImpl()
                        }
                    },
                    _renderGeometryImpl: function() {
                        this._positionController.updatePosition(this._getOptionValue("position"));
                        this._renderWrapper();
                        this._renderDimensions();
                        this._renderPosition()
                    },
                    _renderPosition() {
                        this._positionController.positionContent()
                    },
                    _isAllWindowCovered: function() {
                        return (0, _type.isWindow)(this._positionController.$visualContainer.get(0)) && this.option("shading")
                    },
                    _toggleSafariScrolling: function() {
                        const visible = this.option("visible");
                        const $body = (0, _renderer.default)(_dom_adapter.default.getBody());
                        const isIosSafari = "ios" === _devices.default.real().platform && _browser.default.safari;
                        const isAllWindowCovered = this._isAllWindowCovered();
                        const isScrollingPrevented = $body.hasClass("dx-prevent-safari-scrolling");
                        const shouldPreventScrolling = !isScrollingPrevented && visible && isAllWindowCovered;
                        const shouldEnableScrolling = isScrollingPrevented && (!visible || !isAllWindowCovered || this._disposed);
                        if (isIosSafari) {
                            if (shouldEnableScrolling) {
                                $body.removeClass("dx-prevent-safari-scrolling");
                                window.scrollTo(0, this._cachedBodyScrollTop);
                                this._cachedBodyScrollTop = void 0
                            } else if (shouldPreventScrolling) {
                                this._cachedBodyScrollTop = window.pageYOffset;
                                $body.addClass("dx-prevent-safari-scrolling")
                            }
                        }
                    },
                    _renderWrapper: function() {
                        this._positionController.styleWrapperPosition();
                        this._renderWrapperDimensions();
                        this._positionController.positionWrapper()
                    },
                    _renderWrapperDimensions: function() {
                        const $visualContainer = this._positionController.$visualContainer;
                        const documentElement = _dom_adapter.default.getDocumentElement();
                        const isVisualContainerWindow = (0, _type.isWindow)($visualContainer.get(0));
                        const wrapperWidth = isVisualContainerWindow ? documentElement.clientWidth : (0, _size.getOuterWidth)($visualContainer);
                        const wrapperHeight = isVisualContainerWindow ? window.innerHeight : (0, _size.getOuterHeight)($visualContainer);
                        this._$wrapper.css({
                            width: wrapperWidth,
                            height: wrapperHeight
                        })
                    },
                    _renderDimensions: function() {
                        const content = this._$content.get(0);
                        this._$content.css({
                            minWidth: this._getOptionValue("minWidth", content),
                            maxWidth: this._getOptionValue("maxWidth", content),
                            minHeight: this._getOptionValue("minHeight", content),
                            maxHeight: this._getOptionValue("maxHeight", content),
                            width: this._getOptionValue("width", content),
                            height: this._getOptionValue("height", content)
                        })
                    },
                    _focusTarget: function() {
                        return this._$content
                    },
                    _attachKeyboardEvents: function() {
                        this._keyboardListenerId = _short.keyboard.on(this._$content, null, opts => this._keyboardHandler(opts))
                    },
                    _keyboardHandler: function(options) {
                        const e = options.originalEvent;
                        const $target = (0, _renderer.default)(e.target);
                        if ($target.is(this._$content) || !this.option("ignoreChildEvents")) {
                            this.callBase(...arguments)
                        }
                    },
                    _isVisible: function() {
                        return this.option("visible")
                    },
                    _visibilityChanged: function(visible) {
                        if (visible) {
                            if (this.option("visible")) {
                                this._renderVisibilityAnimate(visible)
                            }
                        } else {
                            this._renderVisibilityAnimate(visible)
                        }
                    },
                    _dimensionChanged: function() {
                        this._renderGeometry()
                    },
                    _clean: function() {
                        const options = this.option();
                        if (!this._contentAlreadyRendered && !options.isRenovated) {
                            this.$content().empty()
                        }
                        this._renderVisibility(false);
                        this._stopShowTimer();
                        this._cleanFocusState()
                    },
                    _stopShowTimer() {
                        if (this._asyncShowTimeout) {
                            clearTimeout(this._asyncShowTimeout)
                        }
                        this._asyncShowTimeout = null
                    },
                    _dispose: function() {
                        _fx.default.stop(this._$content, false);
                        clearTimeout(this._deferShowTimer);
                        this._toggleViewPortSubscription(false);
                        this._toggleSubscriptions(false);
                        this._updateZIndexStackPosition(false);
                        this._toggleTabTerminator(false);
                        this._actions = null;
                        this._parentsScrollSubscriptionInfo = null;
                        this.callBase();
                        this._toggleSafariScrolling();
                        this.option("visible") && zIndexPool.remove(this._zIndex);
                        this._$wrapper.remove();
                        this._$content.remove()
                    },
                    _toggleRTLDirection: function(rtl) {
                        this._$content.toggleClass("dx-rtl", rtl)
                    },
                    _optionChanged: function(args) {
                        const {
                            value: value,
                            name: name
                        } = args;
                        if (this._getActionsList().includes(name)) {
                            this._initActions();
                            return
                        }
                        switch (name) {
                            case "animation":
                                break;
                            case "shading":
                                this._toggleShading(this.option("visible"));
                                this._toggleSafariScrolling();
                                break;
                            case "shadingColor":
                                this._toggleShading(this.option("visible"));
                                break;
                            case "width":
                            case "height":
                                this._renderGeometry();
                                break;
                            case "minWidth":
                            case "maxWidth":
                            case "minHeight":
                            case "maxHeight":
                                this._renderGeometry();
                                break;
                            case "position":
                                this._positionController.updatePosition(this.option("position"));
                                this._positionController.restorePositionOnNextRender(true);
                                this._renderGeometry();
                                this._toggleSafariScrolling();
                                break;
                            case "visible":
                                this._renderVisibilityAnimate(value).done(() => {
                                    var _this$_animateDeferre;
                                    return null === (_this$_animateDeferre = this._animateDeferred) || void 0 === _this$_animateDeferre ? void 0 : _this$_animateDeferre.resolveWith(this)
                                }).fail(() => {
                                    var _this$_animateDeferre2;
                                    return null === (_this$_animateDeferre2 = this._animateDeferred) || void 0 === _this$_animateDeferre2 ? void 0 : _this$_animateDeferre2.reject()
                                });
                                break;
                            case "container":
                                this._positionController.updateContainer(value);
                                this._invalidate();
                                this._toggleSafariScrolling();
                                break;
                            case "visualContainer":
                                this._positionController.updateVisualContainer(value);
                                this._renderWrapper();
                                this._toggleSafariScrolling();
                                break;
                            case "innerOverlay":
                                this._initInnerOverlayClass();
                                break;
                            case "deferRendering":
                            case "contentTemplate":
                                this._contentAlreadyRendered = false;
                                this._clean();
                                this._invalidate();
                                break;
                            case "hideTopOverlayHandler":
                                this._toggleHideTopOverlayCallback(false);
                                this._initHideTopOverlayHandler(value);
                                this._toggleHideTopOverlayCallback(this.option("visible"));
                                break;
                            case "hideOnParentScroll":
                            case "_hideOnParentScrollTarget":
                                this._toggleHideOnParentsScrollSubscription(this.option("visible"));
                                break;
                            case "closeOnOutsideClick":
                            case "hideOnOutsideClick":
                            case "propagateOutsideClick":
                                break;
                            case "rtlEnabled":
                                this._contentAlreadyRendered = false;
                                this.callBase(args);
                                break;
                            case "_fixWrapperPosition":
                                this._positionController.fixWrapperPosition = value;
                                break;
                            case "wrapperAttr":
                                this._renderWrapperAttributes();
                                break;
                            case "restorePosition":
                                this._positionController.restorePosition = value;
                                break;
                            case "preventScrollEvents":
                                this._logDeprecatedPreventScrollEventsInfo();
                                this._toggleWrapperScrollEventsSubscription(value);
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    toggle: function(showing) {
                        showing = void 0 === showing ? !this.option("visible") : showing;
                        const result = new _deferred.Deferred;
                        if (showing === this.option("visible")) {
                            return result.resolveWith(this, [showing]).promise()
                        }
                        const animateDeferred = new _deferred.Deferred;
                        this._animateDeferred = animateDeferred;
                        this.option("visible", showing);
                        animateDeferred.promise().done(() => {
                            delete this._animateDeferred;
                            result.resolveWith(this, [this.option("visible")])
                        }).fail(() => {
                            delete this._animateDeferred;
                            result.reject()
                        });
                        return result.promise()
                    },
                    $content: function() {
                        return this._$content
                    },
                    show: function() {
                        return this.toggle(true)
                    },
                    hide: function() {
                        return this.toggle(false)
                    },
                    content: function() {
                        return (0, _element.getPublicElement)(this._$content)
                    },
                    repaint: function() {
                        if (this._contentAlreadyRendered) {
                            this._positionController.restorePositionOnNextRender(true);
                            this._renderGeometry({
                                forceStopAnimation: true
                            });
                            (0, _visibility_change.triggerResizeEvent)(this._$content)
                        } else {
                            this.callBase()
                        }
                    }
                });
                Overlay.baseZIndex = zIndex => zIndexPool.base(zIndex);
                (0, _component_registrator.default)("dxOverlay", Overlay);
                var _default = Overlay;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        13660:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/overlay/utils.js ***!
              \*****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.getElementMaxHeightByWindow = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = (obj = __webpack_require__( /*! ../../core/renderer */ 68374), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                exports.getElementMaxHeightByWindow = ($element, startLocation) => {
                    const $window = (0, _renderer.default)((0, _window.getWindow)());
                    const {
                        top: elementOffset
                    } = $element.offset();
                    let actualOffset;
                    if ((0, _type.isNumeric)(startLocation)) {
                        if (startLocation < elementOffset) {
                            return elementOffset - startLocation
                        } else {
                            actualOffset = (0, _size.getInnerHeight)($window) - startLocation + $window.scrollTop()
                        }
                    } else {
                        const offsetTop = elementOffset - $window.scrollTop();
                        const offsetBottom = (0, _size.getInnerHeight)($window) - offsetTop - (0, _size.getOuterHeight)($element);
                        actualOffset = Math.max(offsetTop, offsetBottom)
                    }
                    return .9 * actualOffset
                }
            },
        85421:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/overlay/z_index.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.remove = exports.isLastZIndexInStack = exports.create = exports.clearStack = exports.base = void 0;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                let baseZIndex = 1500;
                let zIndexStack = [];
                exports.base = ZIndex => {
                    baseZIndex = (0, _common.ensureDefined)(ZIndex, baseZIndex);
                    return baseZIndex
                };
                exports.create = function() {
                    let baseIndex = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : baseZIndex;
                    const length = zIndexStack.length;
                    const index = (length ? zIndexStack[length - 1] : baseIndex) + 1;
                    zIndexStack.push(index);
                    return index
                };
                exports.remove = zIndex => {
                    const position = zIndexStack.indexOf(zIndex);
                    if (position >= 0) {
                        zIndexStack.splice(position, 1)
                    }
                };
                exports.isLastZIndexInStack = zIndex => zIndexStack.length && zIndexStack[zIndexStack.length - 1] === zIndex;
                exports.clearStack = () => {
                    zIndexStack = []
                }
            },
        79383:
            /*!*********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/pager.js ***!
              \*********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _pager = (obj = __webpack_require__( /*! ../renovation/ui/pager/pager.j */ 47854), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _pager.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        96089:
            /*!**************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/pivot_grid.js ***!
              \**************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _ui = (obj = __webpack_require__( /*! ./pivot_grid/ui.pivot_grid */ 41e3), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _ui.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        98713:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/pivot_grid/data_source.js ***!
              \**************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_data_source = __webpack_require__( /*! ../../__internal/grids/pivot_grid/data_source/m_data_source */ 16710);
                var _default = _m_data_source.PivotGridDataSource;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        77271:
            /*!******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/pivot_grid/ui.pivot_grid.field_chooser.js ***!
              \******************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_field_chooser = __webpack_require__( /*! ../../__internal/grids/pivot_grid/field_chooser/m_field_chooser */ 63857);
                var _default = _m_field_chooser.FieldChooser;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        41e3:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/pivot_grid/ui.pivot_grid.js ***!
              \****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_widget = __webpack_require__( /*! ../../__internal/grids/pivot_grid/m_widget */ 61550);
                var _default = _m_widget.PivotGrid;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        9170:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/pivot_grid/xmla_store.js ***!
              \*************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_xmla_store = __webpack_require__( /*! ../../__internal/grids/pivot_grid/xmla_store/m_xmla_store */ 79755);
                var _default = _m_xmla_store.XmlaStore;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        32014:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/pivot_grid_field_chooser.js ***!
              \****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _uiPivot_grid = (obj = __webpack_require__( /*! ./pivot_grid/ui.pivot_grid.field_chooser */ 77271), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _uiPivot_grid.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        22348:
            /*!***********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/popover.js ***!
              \***********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _uiPopover = (obj = __webpack_require__( /*! ./popover/ui.popover.full */ 65224), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _uiPopover.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        84228:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/popover/popover_position_controller.js ***!
              \***************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.PopoverPositionController = exports.POPOVER_POSITION_ALIASES = void 0;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _position = (obj = __webpack_require__( /*! ../../animation/position */ 49387), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _utils = __webpack_require__( /*! ../../renovation/ui/resizable/utils */ 19234);
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _overlay_position_controller = __webpack_require__( /*! ../overlay/overlay_position_controller */ 49314);
                const _excluded = ["shading", "target", "$arrow"];

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const WEIGHT_OF_SIDES = {
                    left: -1,
                    top: -1,
                    center: 0,
                    right: 1,
                    bottom: 1
                };
                const POPOVER_POSITION_ALIASES = {
                    top: {
                        my: "bottom center",
                        at: "top center",
                        collision: "fit flip"
                    },
                    bottom: {
                        my: "top center",
                        at: "bottom center",
                        collision: "fit flip"
                    },
                    right: {
                        my: "left center",
                        at: "right center",
                        collision: "flip fit"
                    },
                    left: {
                        my: "right center",
                        at: "left center",
                        collision: "flip fit"
                    }
                };
                exports.POPOVER_POSITION_ALIASES = POPOVER_POSITION_ALIASES;
                const POPOVER_DEFAULT_BOUNDARY_OFFSET = {
                    h: 10,
                    v: 10
                };
                let PopoverPositionController = function(_OverlayPositionContr) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(PopoverPositionController, _OverlayPositionContr);

                    function PopoverPositionController(_ref) {
                        var _this;
                        let {
                            shading: shading,
                            target: target,
                            $arrow: $arrow
                        } = _ref, args = function(source, excluded) {
                            if (null == source) {
                                return {}
                            }
                            var target = {};
                            var sourceKeys = Object.keys(source);
                            var key, i;
                            for (i = 0; i < sourceKeys.length; i++) {
                                key = sourceKeys[i];
                                if (excluded.indexOf(key) >= 0) {
                                    continue
                                }
                                target[key] = source[key]
                            }
                            return target
                        }(_ref, _excluded);
                        _this = _OverlayPositionContr.call(this, args) || this;
                        _this._props = _extends({}, _this._props, {
                            shading: shading,
                            target: target
                        });
                        _this._$arrow = $arrow;
                        _this._positionSide = void 0;
                        _this.updatePosition(_this._props.position);
                        return _this
                    }
                    var _proto = PopoverPositionController.prototype;
                    _proto.positionWrapper = function() {
                        if (this._props.shading) {
                            this._$wrapper.css({
                                top: 0,
                                left: 0
                            })
                        }
                    };
                    _proto.updateTarget = function(target) {
                        this._props.target = target;
                        this.updatePosition(this._props.position)
                    };
                    _proto._renderBoundaryOffset = function() {};
                    _proto._getContainerPosition = function() {
                        const offset = (0, _common.pairToObject)(this._position.offset || "");
                        let {
                            h: hOffset,
                            v: vOffset
                        } = offset;
                        const isVerticalSide = this._isVerticalSide();
                        const isHorizontalSide = this._isHorizontalSide();
                        if (isVerticalSide || isHorizontalSide) {
                            const isPopoverInside = this._isPopoverInside();
                            const sign = (isPopoverInside ? -1 : 1) * WEIGHT_OF_SIDES[this._positionSide];
                            const arrowSize = isVerticalSide ? (0, _size.getHeight)(this._$arrow) : (0, _size.getWidth)(this._$arrow);
                            const arrowSizeCorrection = this._getContentBorderWidth(this._positionSide);
                            const arrowOffset = sign * (arrowSize - arrowSizeCorrection);
                            isVerticalSide ? vOffset += arrowOffset : hOffset += arrowOffset
                        }
                        return (0, _extend.extend)({}, this._position, {
                            offset: hOffset + " " + vOffset
                        })
                    };
                    _proto._getContentBorderWidth = function(side) {
                        const borderWidth = this._$content.css(_utils.borderWidthStyles[side]);
                        return parseInt(borderWidth) || 0
                    };
                    _proto._isPopoverInside = function() {
                        const my = _position.default.setup.normalizeAlign(this._position.my);
                        const at = _position.default.setup.normalizeAlign(this._position.at);
                        return my.h === at.h && my.v === at.v
                    };
                    _proto._isVerticalSide = function() {
                        let side = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._positionSide;
                        return "top" === side || "bottom" === side
                    };
                    _proto._isHorizontalSide = function() {
                        let side = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._positionSide;
                        return "left" === side || "right" === side
                    };
                    _proto._getDisplaySide = function(position) {
                        const my = _position.default.setup.normalizeAlign(position.my);
                        const at = _position.default.setup.normalizeAlign(position.at);
                        const weightSign = WEIGHT_OF_SIDES[my.h] === WEIGHT_OF_SIDES[at.h] && WEIGHT_OF_SIDES[my.v] === WEIGHT_OF_SIDES[at.v] ? -1 : 1;
                        const horizontalWeight = Math.abs(WEIGHT_OF_SIDES[my.h] - weightSign * WEIGHT_OF_SIDES[at.h]);
                        const verticalWeight = Math.abs(WEIGHT_OF_SIDES[my.v] - weightSign * WEIGHT_OF_SIDES[at.v]);
                        return horizontalWeight > verticalWeight ? at.h : at.v
                    };
                    _proto._normalizePosition = function(positionProp) {
                        const defaultPositionConfig = {
                            of: this._props.target,
                            boundaryOffset: POPOVER_DEFAULT_BOUNDARY_OFFSET
                        };
                        let resultPosition;
                        if ((0, _type.isDefined)(positionProp)) {
                            resultPosition = (0, _extend.extend)(true, {}, defaultPositionConfig, this._positionToObject(positionProp))
                        } else {
                            resultPosition = defaultPositionConfig
                        }
                        this._positionSide = this._getDisplaySide(resultPosition);
                        return resultPosition
                    };
                    _proto._positionToObject = function(positionProp) {
                        if ((0, _type.isString)(positionProp)) {
                            return (0, _extend.extend)({}, POPOVER_POSITION_ALIASES[positionProp])
                        }
                        return positionProp
                    };
                    return PopoverPositionController
                }(_overlay_position_controller.OverlayPositionController);
                exports.PopoverPositionController = PopoverPositionController
            },
        65224:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/popover/ui.popover.full.js ***!
              \***************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                __webpack_require__( /*! ../toolbar */ 71042);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../popover/ui.popover */ 17287));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let PopoverFull = function(_Popover) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(PopoverFull, _Popover);

                    function PopoverFull() {
                        return _Popover.apply(this, arguments) || this
                    }
                    var _proto = PopoverFull.prototype;
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_Popover.prototype._getDefaultOptions.call(this), {
                            preventScrollEvents: false
                        })
                    };
                    _proto._getToolbarName = function() {
                        return "dxToolbar"
                    };
                    return PopoverFull
                }(_ui.default);
                exports.default = PopoverFull;
                PopoverFull.defaultOptions = function(rule) {
                    _ui.default.defaultOptions(rule)
                };
                (0, _component_registrator.default)("dxPopover", PopoverFull);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        17287:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/popover/ui.popover.js ***!
              \**********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _element = __webpack_require__( /*! ../../core/element */ 6415);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _translator = __webpack_require__( /*! ../../animation/translator */ 31648);
                var _position = _interopRequireDefault(__webpack_require__( /*! ../../animation/position */ 49387));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _math = __webpack_require__( /*! ../../core/utils/math */ 60810);
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.errors */ 96688));
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../popup/ui.popup */ 51495));
                var _position2 = __webpack_require__( /*! ../../core/utils/position */ 37518);
                var _themes = __webpack_require__( /*! ../themes */ 75811);
                var _popover_position_controller = __webpack_require__( /*! ./popover_position_controller */ 84228);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const POSITION_FLIP_MAP = {
                    left: "right",
                    top: "bottom",
                    right: "left",
                    bottom: "top",
                    center: "center"
                };
                const getEventNameByOption = function(optionValue) {
                    return (0, _type.isObject)(optionValue) ? optionValue.name : optionValue
                };
                const getEventName = function(that, optionName) {
                    const optionValue = that.option(optionName);
                    return getEventNameByOption(optionValue)
                };
                const attachEvent = function(that, name) {
                    const {
                        target: target,
                        shading: shading,
                        disabled: disabled,
                        hideEvent: hideEvent
                    } = that.option();
                    const isSelector = (0, _type.isString)(target);
                    const shouldIgnoreHideEvent = shading && "hide" === name;
                    const event = shouldIgnoreHideEvent ? null : getEventName(that, "".concat(name, "Event"));
                    if (shouldIgnoreHideEvent && hideEvent) {
                        _ui.default.log("W1020")
                    }
                    if (!event || disabled) {
                        return
                    }
                    const eventName = (0, _index.addNamespace)(event, that.NAME);
                    const action = that._createAction(function() {
                        const delay = function(that, optionName) {
                            const optionValue = that.option(optionName);
                            return (0, _type.isObject)(optionValue) && optionValue.delay
                        }(that, name + "Event");
                        this._clearEventsTimeouts();
                        if (delay) {
                            this._timeouts[name] = setTimeout((function() {
                                that[name]()
                            }), delay)
                        } else {
                            that[name]()
                        }
                    }.bind(that), {
                        validatingTargetName: "target"
                    });
                    const handler = function(e) {
                        action({
                            event: e,
                            target: (0, _renderer.default)(e.currentTarget)
                        })
                    };
                    const EVENT_HANDLER_NAME = "_" + name + "EventHandler";
                    if (isSelector) {
                        that[EVENT_HANDLER_NAME] = handler;
                        _events_engine.default.on(_dom_adapter.default.getDocument(), eventName, target, handler)
                    } else {
                        const targetElement = (0, _element.getPublicElement)((0, _renderer.default)(target));
                        that[EVENT_HANDLER_NAME] = void 0;
                        _events_engine.default.on(targetElement, eventName, handler)
                    }
                };
                const detachEvent = function(that, target, name, event) {
                    let eventName = event || getEventName(that, name + "Event");
                    if (!eventName) {
                        return
                    }
                    eventName = (0, _index.addNamespace)(eventName, that.NAME);
                    const EVENT_HANDLER_NAME = "_" + name + "EventHandler";
                    if (that[EVENT_HANDLER_NAME]) {
                        _events_engine.default.off(_dom_adapter.default.getDocument(), eventName, target, that[EVENT_HANDLER_NAME])
                    } else {
                        _events_engine.default.off((0, _element.getPublicElement)((0, _renderer.default)(target)), eventName)
                    }
                };
                const Popover = _ui2.default.inherit({
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            target: void 0,
                            shading: false,
                            position: (0, _extend.extend)({}, _popover_position_controller.POPOVER_POSITION_ALIASES.bottom),
                            hideOnOutsideClick: true,
                            animation: {
                                show: {
                                    type: "fade",
                                    from: 0,
                                    to: 1
                                },
                                hide: {
                                    type: "fade",
                                    from: 1,
                                    to: 0
                                }
                            },
                            showTitle: false,
                            width: "auto",
                            height: "auto",
                            dragEnabled: false,
                            resizeEnabled: false,
                            fullScreen: false,
                            hideOnParentScroll: true,
                            arrowPosition: "",
                            arrowOffset: 0,
                            _fixWrapperPosition: true
                        })
                    },
                    _defaultOptionsRules: function() {
                        return [{
                            device: {
                                platform: "ios"
                            },
                            options: {
                                arrowPosition: {
                                    boundaryOffset: {
                                        h: 20,
                                        v: -10
                                    },
                                    collision: "fit"
                                }
                            }
                        }, {
                            device: function() {
                                return !(0, _window.hasWindow)()
                            },
                            options: {
                                animation: null
                            }
                        }, {
                            device: function() {
                                return (0, _themes.isMaterialBased)()
                            },
                            options: {
                                useFlatToolbarButtons: true
                            }
                        }, {
                            device: function() {
                                return (0, _themes.isMaterial)()
                            },
                            options: {
                                useDefaultToolbarButtons: true,
                                showCloseButton: false
                            }
                        }]
                    },
                    _init: function() {
                        var _this$option;
                        this.callBase();
                        this._renderArrow();
                        this._timeouts = {};
                        this.$element().addClass("dx-popover");
                        this.$wrapper().addClass("dx-popover-wrapper");
                        const isInteractive = null === (_this$option = this.option("toolbarItems")) || void 0 === _this$option ? void 0 : _this$option.length;
                        this.setAria("role", isInteractive ? "dialog" : "tooltip")
                    },
                    _render: function() {
                        this.callBase.apply(this, arguments);
                        this._detachEvents(this.option("target"));
                        this._attachEvents()
                    },
                    _detachEvents: function(target) {
                        detachEvent(this, target, "show");
                        detachEvent(this, target, "hide")
                    },
                    _attachEvents: function() {
                        attachEvent(this, "show");
                        attachEvent(this, "hide")
                    },
                    _renderArrow: function() {
                        this._$arrow = (0, _renderer.default)("<div>").addClass("dx-popover-arrow").prependTo(this.$overlayContent())
                    },
                    _documentDownHandler: function(e) {
                        if (this._isOutsideClick(e)) {
                            return this.callBase(e)
                        }
                        return true
                    },
                    _isOutsideClick: function(e) {
                        return !(0, _renderer.default)(e.target).closest(this.option("target")).length
                    },
                    _animate: function(animation) {
                        if (animation && animation.to && "object" === typeof animation.to) {
                            (0, _extend.extend)(animation.to, {
                                position: this._getContainerPosition()
                            })
                        }
                        this.callBase.apply(this, arguments)
                    },
                    _stopAnimation: function() {
                        this.callBase.apply(this, arguments)
                    },
                    _renderTitle: function() {
                        this.$wrapper().toggleClass("dx-popover-without-title", !this.option("showTitle"));
                        this.callBase()
                    },
                    _renderPosition: function() {
                        let shouldUpdateDimensions = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : true;
                        this.callBase();
                        this._renderOverlayPosition(shouldUpdateDimensions);
                        this._actions.onPositioned()
                    },
                    _renderOverlayPosition: function(shouldUpdateDimensions) {
                        this._resetOverlayPosition(shouldUpdateDimensions);
                        this._updateContentSize(shouldUpdateDimensions);
                        const contentPosition = this._getContainerPosition();
                        const resultLocation = _position.default.setup(this.$overlayContent(), contentPosition);
                        const positionSide = this._getSideByLocation(resultLocation);
                        this._togglePositionClass("dx-position-" + positionSide);
                        this._toggleFlippedClass(resultLocation.h.flip, resultLocation.v.flip);
                        const isArrowVisible = this._isHorizontalSide() || this._isVerticalSide();
                        if (isArrowVisible) {
                            this._renderArrowPosition(positionSide)
                        }
                    },
                    _resetOverlayPosition: function(shouldUpdateDimensions) {
                        this._setContentHeight(shouldUpdateDimensions);
                        this._togglePositionClass("dx-position-" + this._positionController._positionSide);
                        (0, _translator.move)(this.$overlayContent(), {
                            left: 0,
                            top: 0
                        });
                        this._$arrow.css({
                            top: "auto",
                            right: "auto",
                            bottom: "auto",
                            left: "auto"
                        })
                    },
                    _updateContentSize: function(shouldUpdateDimensions) {
                        if (!this.$content() || !shouldUpdateDimensions) {
                            return
                        }
                        const containerLocation = _position.default.calculate(this.$overlayContent(), this._getContainerPosition());
                        if (containerLocation.h.oversize > 0 && this._isHorizontalSide() && !containerLocation.h.fit) {
                            const newContainerWidth = (0, _size.getWidth)(this.$overlayContent()) - containerLocation.h.oversize;
                            (0, _size.setWidth)(this.$overlayContent(), newContainerWidth)
                        }
                        if (containerLocation.v.oversize > 0 && this._isVerticalSide() && !containerLocation.v.fit) {
                            const newOverlayContentHeight = (0, _size.getHeight)(this.$overlayContent()) - containerLocation.v.oversize;
                            const newPopupContentHeight = (0, _size.getHeight)(this.$content()) - containerLocation.v.oversize;
                            (0, _size.setHeight)(this.$overlayContent(), newOverlayContentHeight);
                            (0, _size.setHeight)(this.$content(), newPopupContentHeight)
                        }
                    },
                    _getContainerPosition: function() {
                        return this._positionController._getContainerPosition()
                    },
                    _getHideOnParentScrollTarget: function() {
                        return (0, _renderer.default)(this._positionController._position.of || this.callBase())
                    },
                    _getSideByLocation: function(location) {
                        const isFlippedByVertical = location.v.flip;
                        const isFlippedByHorizontal = location.h.flip;
                        return this._isVerticalSide() && isFlippedByVertical || this._isHorizontalSide() && isFlippedByHorizontal || this._isPopoverInside() ? POSITION_FLIP_MAP[this._positionController._positionSide] : this._positionController._positionSide
                    },
                    _togglePositionClass: function(positionClass) {
                        this.$wrapper().removeClass("dx-position-left dx-position-right dx-position-top dx-position-bottom").addClass(positionClass)
                    },
                    _toggleFlippedClass: function(isFlippedHorizontal, isFlippedVertical) {
                        this.$wrapper().toggleClass("dx-popover-flipped-horizontal", isFlippedHorizontal).toggleClass("dx-popover-flipped-vertical", isFlippedVertical)
                    },
                    _renderArrowPosition: function(side) {
                        const arrowRect = (0, _position2.getBoundingRect)(this._$arrow.get(0));
                        const arrowFlip = -(this._isVerticalSide(side) ? arrowRect.height : arrowRect.width);
                        this._$arrow.css(POSITION_FLIP_MAP[side], arrowFlip);
                        const axis = this._isVerticalSide(side) ? "left" : "top";
                        const sizeProperty = this._isVerticalSide(side) ? "width" : "height";
                        const $target = (0, _renderer.default)(this._positionController._position.of);
                        const targetOffset = _position.default.offset($target) || {
                            top: 0,
                            left: 0
                        };
                        const contentOffset = _position.default.offset(this.$overlayContent());
                        const arrowSize = arrowRect[sizeProperty];
                        const contentLocation = contentOffset[axis];
                        const contentSize = (0, _position2.getBoundingRect)(this.$overlayContent().get(0))[sizeProperty];
                        const targetLocation = targetOffset[axis];
                        const targetElement = $target.get(0);
                        const targetSize = targetElement && !targetElement.preventDefault ? (0, _position2.getBoundingRect)(targetElement)[sizeProperty] : 0;
                        const min = Math.max(contentLocation, targetLocation);
                        const max = Math.min(contentLocation + contentSize, targetLocation + targetSize);
                        let arrowLocation;
                        if ("start" === this.option("arrowPosition")) {
                            arrowLocation = min - contentLocation
                        } else if ("end" === this.option("arrowPosition")) {
                            arrowLocation = max - contentLocation - arrowSize
                        } else {
                            arrowLocation = (min + max) / 2 - contentLocation - arrowSize / 2
                        }
                        const borderWidth = this._positionController._getContentBorderWidth(side);
                        const finalArrowLocation = (0, _math.fitIntoRange)(arrowLocation - borderWidth + this.option("arrowOffset"), borderWidth, contentSize - arrowSize - 2 * borderWidth);
                        this._$arrow.css(axis, finalArrowLocation)
                    },
                    _isPopoverInside: function() {
                        return this._positionController._isPopoverInside()
                    },
                    _setContentHeight: function(fullUpdate) {
                        if (fullUpdate) {
                            this.callBase()
                        }
                    },
                    _getPositionControllerConfig() {
                        const {
                            shading: shading,
                            target: target
                        } = this.option();
                        return (0, _extend.extend)({}, this.callBase(), {
                            target: target,
                            shading: shading,
                            $arrow: this._$arrow
                        })
                    },
                    _initPositionController() {
                        this._positionController = new _popover_position_controller.PopoverPositionController(this._getPositionControllerConfig())
                    },
                    _renderWrapperDimensions: function() {
                        if (this.option("shading")) {
                            this.$wrapper().css({
                                width: "100%",
                                height: "100%"
                            })
                        }
                    },
                    _isVerticalSide: function(side) {
                        return this._positionController._isVerticalSide(side)
                    },
                    _isHorizontalSide: function(side) {
                        return this._positionController._isHorizontalSide(side)
                    },
                    _clearEventTimeout: function(name) {
                        clearTimeout(this._timeouts[name])
                    },
                    _clearEventsTimeouts: function() {
                        this._clearEventTimeout("show");
                        this._clearEventTimeout("hide")
                    },
                    _clean: function() {
                        this._detachEvents(this.option("target"));
                        this.callBase.apply(this, arguments)
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "arrowPosition":
                            case "arrowOffset":
                                this._renderGeometry();
                                break;
                            case "fullScreen":
                                if (args.value) {
                                    this.option("fullScreen", false)
                                }
                                break;
                            case "target":
                                args.previousValue && this._detachEvents(args.previousValue);
                                this._positionController.updateTarget(args.value);
                                this._invalidate();
                                break;
                            case "showEvent":
                            case "hideEvent": {
                                const name = args.name.substring(0, 4);
                                const event = getEventNameByOption(args.previousValue);
                                this.hide();
                                detachEvent(this, this.option("target"), name, event);
                                attachEvent(this, name);
                                break
                            }
                            case "visible":
                                this._clearEventTimeout(args.value ? "show" : "hide");
                                this.callBase(args);
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    show: function(target) {
                        if (target) {
                            this.option("target", target)
                        }
                        return this.callBase()
                    }
                });
                (0, _component_registrator.default)("dxPopover", Popover);
                var _default = Popover;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        39114:
            /*!*********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/popup.js ***!
              \*********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _uiPopup = (obj = __webpack_require__( /*! ./popup/ui.popup.full */ 84640), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _uiPopup.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        1351:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/popup/popup_drag.js ***!
              \********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _translator = __webpack_require__( /*! ../../animation/translator */ 31648);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _math = __webpack_require__( /*! ../../core/utils/math */ 60810);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _drag = __webpack_require__( /*! ../../events/drag */ 23174);
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                let PopupDrag = function() {
                    function PopupDrag(config) {
                        this.init(config)
                    }
                    var _proto = PopupDrag.prototype;
                    _proto.init = function(_ref) {
                        let {
                            dragEnabled: dragEnabled,
                            handle: handle,
                            draggableElement: draggableElement,
                            positionController: positionController
                        } = _ref;
                        this._positionController = positionController;
                        this._draggableElement = draggableElement;
                        this._handle = handle;
                        this._dragEnabled = dragEnabled;
                        this.unsubscribe();
                        if (!dragEnabled) {
                            return
                        }
                        this.subscribe()
                    };
                    _proto.moveDown = function(e) {
                        this._moveTo(5, 0, e)
                    };
                    _proto.moveUp = function(e) {
                        this._moveTo(-5, 0, e)
                    };
                    _proto.moveLeft = function(e) {
                        this._moveTo(0, -5, e)
                    };
                    _proto.moveRight = function(e) {
                        this._moveTo(0, 5, e)
                    };
                    _proto.subscribe = function() {
                        const eventNames = this._getEventNames();
                        _events_engine.default.on(this._handle, eventNames.startEventName, e => {
                            this._dragStartHandler(e)
                        });
                        _events_engine.default.on(this._handle, eventNames.updateEventName, e => {
                            this._dragUpdateHandler(e)
                        });
                        _events_engine.default.on(this._handle, eventNames.endEventName, e => {
                            this._dragEndHandler(e)
                        })
                    };
                    _proto.unsubscribe = function() {
                        const eventNames = this._getEventNames();
                        _events_engine.default.off(this._handle, eventNames.startEventName);
                        _events_engine.default.off(this._handle, eventNames.updateEventName);
                        _events_engine.default.off(this._handle, eventNames.endEventName)
                    };
                    _proto._getEventNames = function() {
                        const startEventName = (0, _index.addNamespace)(_drag.start, "overlayDrag");
                        const updateEventName = (0, _index.addNamespace)(_drag.move, "overlayDrag");
                        const endEventName = (0, _index.addNamespace)(_drag.end, "overlayDrag");
                        return {
                            startEventName: startEventName,
                            updateEventName: updateEventName,
                            endEventName: endEventName
                        }
                    };
                    _proto._dragStartHandler = function(e) {
                        const allowedOffsets = this._getAllowedOffsets();
                        this._prevOffset = {
                            x: 0,
                            y: 0
                        };
                        e.targetElements = [];
                        e.maxTopOffset = allowedOffsets.top;
                        e.maxBottomOffset = allowedOffsets.bottom;
                        e.maxLeftOffset = allowedOffsets.left;
                        e.maxRightOffset = allowedOffsets.right
                    };
                    _proto._dragUpdateHandler = function(e) {
                        const targetOffset = {
                            top: e.offset.y - this._prevOffset.y,
                            left: e.offset.x - this._prevOffset.x
                        };
                        this._moveByOffset(targetOffset);
                        this._prevOffset = e.offset
                    };
                    _proto._dragEndHandler = function(event) {
                        this._positionController.dragHandled();
                        this._positionController.detectVisualPositionChange(event)
                    };
                    _proto._moveTo = function(top, left, e) {
                        if (!this._dragEnabled) {
                            return
                        }
                        e.preventDefault();
                        e.stopPropagation();
                        const offset = this._fitOffsetIntoAllowedRange(top, left);
                        this._moveByOffset(offset);
                        this._dragEndHandler(e)
                    };
                    _proto._fitOffsetIntoAllowedRange = function(top, left) {
                        const allowedOffsets = this._getAllowedOffsets();
                        return {
                            top: (0, _math.fitIntoRange)(top, -allowedOffsets.top, allowedOffsets.bottom),
                            left: (0, _math.fitIntoRange)(left, -allowedOffsets.left, allowedOffsets.right)
                        }
                    };
                    _proto._getContainerDimensions = function() {
                        const document = _dom_adapter.default.getDocument();
                        const container = this._positionController.$dragResizeContainer.get(0);
                        let containerWidth = (0, _size.getOuterWidth)(container);
                        let containerHeight = (0, _size.getOuterHeight)(container);
                        if ((0, _type.isWindow)(container)) {
                            containerHeight = Math.max(document.body.clientHeight, containerHeight);
                            containerWidth = Math.max(document.body.clientWidth, containerWidth)
                        }
                        return {
                            width: containerWidth,
                            height: containerHeight
                        }
                    };
                    _proto._getContainerPosition = function() {
                        const container = this._positionController.$dragResizeContainer.get(0);
                        return (0, _type.isWindow)(container) ? {
                            top: 0,
                            left: 0
                        } : (0, _size.getOffset)(container)
                    };
                    _proto._getElementPosition = function() {
                        return (0, _size.getOffset)(this._draggableElement)
                    };
                    _proto._getInnerDelta = function() {
                        const containerDimensions = this._getContainerDimensions();
                        const elementDimensions = this._getElementDimensions();
                        return {
                            x: containerDimensions.width - elementDimensions.width,
                            y: containerDimensions.height - elementDimensions.height
                        }
                    };
                    _proto._getOuterDelta = function() {
                        const {
                            width: width,
                            height: height
                        } = this._getElementDimensions();
                        const outsideDragFactor = this._positionController.outsideDragFactor;
                        return {
                            x: width * outsideDragFactor,
                            y: height * outsideDragFactor
                        }
                    };
                    _proto._getFullDelta = function() {
                        const fullDelta = this._getInnerDelta();
                        const outerDelta = this._getOuterDelta();
                        return {
                            x: fullDelta.x + outerDelta.x,
                            y: fullDelta.y + outerDelta.y
                        }
                    };
                    _proto._getElementDimensions = function() {
                        return {
                            width: this._draggableElement.offsetWidth,
                            height: this._draggableElement.offsetHeight
                        }
                    };
                    _proto._getAllowedOffsets = function() {
                        const fullDelta = this._getFullDelta();
                        const isDragAllowed = fullDelta.y >= 0 && fullDelta.x >= 0;
                        if (!isDragAllowed) {
                            return {
                                top: 0,
                                bottom: 0,
                                left: 0,
                                right: 0
                            }
                        }
                        const elementPosition = this._getElementPosition();
                        const containerPosition = this._getContainerPosition();
                        const outerDelta = this._getOuterDelta();
                        return {
                            top: elementPosition.top - containerPosition.top + outerDelta.y,
                            bottom: -elementPosition.top + containerPosition.top + fullDelta.y,
                            left: elementPosition.left - containerPosition.left + outerDelta.x,
                            right: -elementPosition.left + containerPosition.left + fullDelta.x
                        }
                    };
                    _proto._moveByOffset = function(offset) {
                        const currentPosition = (0, _translator.locate)(this._draggableElement);
                        const newPosition = {
                            left: currentPosition.left + offset.left,
                            top: currentPosition.top + offset.top
                        };
                        (0, _translator.move)(this._draggableElement, newPosition)
                    };
                    return PopupDrag
                }();
                var _default = PopupDrag;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        62300:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/popup/popup_overflow_manager.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.createBodyOverflowManager = void 0;
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const overflowManagerMock = {
                    setOverflow: _common.noop,
                    restoreOverflow: _common.noop
                };
                exports.createBodyOverflowManager = () => {
                    if (!(0, _window.hasWindow)()) {
                        return overflowManagerMock
                    }
                    const window = (0, _window.getWindow)();
                    const documentElement = _dom_adapter.default.getDocument().documentElement;
                    const body = _dom_adapter.default.getBody();
                    const isIosDevice = "ios" === _devices.default.real().platform;
                    const prevSettings = {
                        overflow: null,
                        overflowX: null,
                        overflowY: null,
                        paddingRight: null,
                        position: null,
                        top: null,
                        left: null
                    };
                    const setBodyPaddingRight = () => {
                        const scrollBarWidth = window.innerWidth - documentElement.clientWidth;
                        if (prevSettings.paddingRight || scrollBarWidth <= 0) {
                            return
                        }
                        const paddingRight = window.getComputedStyle(body).getPropertyValue("padding-right");
                        const computedBodyPaddingRight = parseInt(paddingRight, 10);
                        prevSettings.paddingRight = computedBodyPaddingRight;
                        body.style.setProperty("padding-right", "".concat(computedBodyPaddingRight + scrollBarWidth, "px"))
                    };
                    const restoreBodyPaddingRight = () => {
                        if (!(0, _type.isDefined)(prevSettings.paddingRight)) {
                            return
                        }
                        if (prevSettings.paddingRight) {
                            body.style.setProperty("padding-right", "".concat(prevSettings.paddingRight, "px"))
                        } else {
                            body.style.removeProperty("padding-right")
                        }
                        prevSettings.paddingRight = null
                    };
                    return {
                        setOverflow: isIosDevice ? () => {
                            if ((0, _type.isDefined)(prevSettings.position) || "fixed" === body.style.position) {
                                return
                            }
                            const {
                                scrollY: scrollY,
                                scrollX: scrollX
                            } = window;
                            prevSettings.position = body.style.position;
                            prevSettings.top = body.style.top;
                            prevSettings.left = body.style.left;
                            body.style.setProperty("position", "fixed");
                            body.style.setProperty("top", "".concat(-scrollY, "px"));
                            body.style.setProperty("left", "".concat(-scrollX, "px"))
                        } : () => {
                            setBodyPaddingRight();
                            if (prevSettings.overflow || "hidden" === body.style.overflow) {
                                return
                            }
                            prevSettings.overflow = body.style.overflow;
                            prevSettings.overflowX = body.style.overflowX;
                            prevSettings.overflowY = body.style.overflowY;
                            body.style.setProperty("overflow", "hidden")
                        },
                        restoreOverflow: isIosDevice ? () => {
                            if (!(0, _type.isDefined)(prevSettings.position)) {
                                return
                            }
                            const scrollY = -parseInt(body.style.top, 10);
                            const scrollX = -parseInt(body.style.left, 10);
                            ["position", "top", "left"].forEach(property => {
                                if (prevSettings[property]) {
                                    body.style.setProperty(property, prevSettings[property])
                                } else {
                                    body.style.removeProperty(property)
                                }
                            });
                            window.scrollTo(scrollX, scrollY);
                            prevSettings.position = null
                        } : () => {
                            restoreBodyPaddingRight();
                            ["overflow", "overflowX", "overflowY"].forEach(property => {
                                if (!(0, _type.isDefined)(prevSettings[property])) {
                                    return
                                }
                                const propertyInKebabCase = property.replace(/(X)|(Y)/, symbol => "-".concat(symbol.toLowerCase()));
                                if (prevSettings[property]) {
                                    body.style.setProperty(propertyInKebabCase, prevSettings[property])
                                } else {
                                    body.style.removeProperty(propertyInKebabCase)
                                }
                                prevSettings[property] = null
                            })
                        }
                    }
                }
            },
        39665:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/popup/popup_position_controller.js ***!
              \***********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.PopupPositionController = void 0;
                var _renderer = (obj = __webpack_require__( /*! ../../core/renderer */ 68374), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _translator = __webpack_require__( /*! ../../animation/translator */ 31648);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _view_port = __webpack_require__( /*! ../../core/utils/view_port */ 77695);
                var _overlay_position_controller = __webpack_require__( /*! ../overlay/overlay_position_controller */ 49314);
                const _excluded = ["fullScreen", "forceApplyBindings", "dragOutsideBoundary", "dragAndResizeArea", "outsideDragFactor"];

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }

                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, (arg = descriptor.key, key = void 0, key = function(input, hint) {
                            if ("object" !== typeof input || null === input) {
                                return input
                            }
                            var prim = input[Symbol.toPrimitive];
                            if (void 0 !== prim) {
                                var res = prim.call(input, hint || "default");
                                if ("object" !== typeof res) {
                                    return res
                                }
                                throw new TypeError("@@toPrimitive must return a primitive value.")
                            }
                            return ("string" === hint ? String : Number)(input)
                        }(arg, "string"), "symbol" === typeof key ? key : String(key)), descriptor)
                    }
                    var arg, key
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const window = (0, _window.getWindow)();
                let PopupPositionController = function(_OverlayPositionContr) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(PopupPositionController, _OverlayPositionContr);

                    function PopupPositionController(_ref) {
                        var _this;
                        let {
                            fullScreen: fullScreen,
                            forceApplyBindings: forceApplyBindings,
                            dragOutsideBoundary: dragOutsideBoundary,
                            dragAndResizeArea: dragAndResizeArea,
                            outsideDragFactor: outsideDragFactor
                        } = _ref, args = function(source, excluded) {
                            if (null == source) {
                                return {}
                            }
                            var target = {};
                            var sourceKeys = Object.keys(source);
                            var key, i;
                            for (i = 0; i < sourceKeys.length; i++) {
                                key = sourceKeys[i];
                                if (excluded.indexOf(key) >= 0) {
                                    continue
                                }
                                target[key] = source[key]
                            }
                            return target
                        }(_ref, _excluded);
                        _this = _OverlayPositionContr.call(this, args) || this;
                        _this._props = _extends({}, _this._props, {
                            fullScreen: fullScreen,
                            forceApplyBindings: forceApplyBindings,
                            dragOutsideBoundary: dragOutsideBoundary,
                            dragAndResizeArea: dragAndResizeArea,
                            outsideDragFactor: outsideDragFactor
                        });
                        _this._$dragResizeContainer = void 0;
                        _this._updateDragResizeContainer();
                        return _this
                    }
                    var _proto = PopupPositionController.prototype;
                    _proto.updateContainer = function(containerProp) {
                        _OverlayPositionContr.prototype.updateContainer.call(this, containerProp);
                        this._updateDragResizeContainer()
                    };
                    _proto.dragHandled = function() {
                        this.restorePositionOnNextRender(false)
                    };
                    _proto.resizeHandled = function() {
                        this.restorePositionOnNextRender(false)
                    };
                    _proto.positionContent = function() {
                        if (this._props.fullScreen) {
                            (0, _translator.move)(this._$content, {
                                top: 0,
                                left: 0
                            });
                            this.detectVisualPositionChange()
                        } else {
                            var _this$_props$forceApp, _this$_props;
                            null === (_this$_props$forceApp = (_this$_props = this._props).forceApplyBindings) || void 0 === _this$_props$forceApp ? void 0 : _this$_props$forceApp.call(_this$_props);
                            _OverlayPositionContr.prototype.positionContent.call(this)
                        }
                    };
                    _proto._updateDragResizeContainer = function() {
                        this._$dragResizeContainer = this._getDragResizeContainer()
                    };
                    _proto._getDragResizeContainer = function() {
                        if (this._props.dragOutsideBoundary) {
                            return (0, _renderer.default)(window)
                        }
                        if (this._props.dragAndResizeArea) {
                            return (0, _renderer.default)(this._props.dragAndResizeArea)
                        }
                        const isContainerDefined = (0, _view_port.originalViewPort)().get(0) || this._props.container;
                        return isContainerDefined ? this._$markupContainer : (0, _renderer.default)(window)
                    };
                    _proto._getVisualContainer = function() {
                        if (this._props.fullScreen) {
                            return (0, _renderer.default)(window)
                        }
                        return _OverlayPositionContr.prototype._getVisualContainer.call(this)
                    };
                    _proto._fullScreenEnabled = function() {
                        this.restorePositionOnNextRender(false)
                    };
                    _proto._fullScreenDisabled = function() {
                        this.restorePositionOnNextRender(true)
                    };
                    ! function(Constructor, protoProps, staticProps) {
                        if (protoProps) {
                            _defineProperties(Constructor.prototype, protoProps)
                        }
                        if (staticProps) {
                            _defineProperties(Constructor, staticProps)
                        }
                        Object.defineProperty(Constructor, "prototype", {
                            writable: false
                        });
                        return Constructor
                    }(PopupPositionController, [{
                        key: "fullScreen",
                        set: function(fullScreen) {
                            this._props.fullScreen = fullScreen;
                            if (fullScreen) {
                                this._fullScreenEnabled()
                            } else {
                                this._fullScreenDisabled()
                            }
                        }
                    }, {
                        key: "$dragResizeContainer",
                        get: function() {
                            return this._$dragResizeContainer
                        }
                    }, {
                        key: "outsideDragFactor",
                        get: function() {
                            if (this._props.dragOutsideBoundary) {
                                return 1
                            }
                            return this._props.outsideDragFactor
                        },
                        set: function(outsideDragFactor) {
                            this._props.outsideDragFactor = outsideDragFactor
                        }
                    }, {
                        key: "dragAndResizeArea",
                        set: function(dragAndResizeArea) {
                            this._props.dragAndResizeArea = dragAndResizeArea;
                            this._updateDragResizeContainer()
                        }
                    }, {
                        key: "dragOutsideBoundary",
                        set: function(dragOutsideBoundary) {
                            this._props.dragOutsideBoundary = dragOutsideBoundary;
                            this._updateDragResizeContainer()
                        }
                    }]);
                    return PopupPositionController
                }(_overlay_position_controller.OverlayPositionController);
                exports.PopupPositionController = PopupPositionController
            },
        84640:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/popup/ui.popup.full.js ***!
              \***********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                __webpack_require__( /*! ../toolbar */ 71042);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../popup/ui.popup */ 51495));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let PopupFull = function(_Popup) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(PopupFull, _Popup);

                    function PopupFull() {
                        return _Popup.apply(this, arguments) || this
                    }
                    var _proto = PopupFull.prototype;
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_Popup.prototype._getDefaultOptions.call(this), {
                            preventScrollEvents: false
                        })
                    };
                    _proto._getToolbarName = function() {
                        return "dxToolbar"
                    };
                    return PopupFull
                }(_ui.default);
                exports.default = PopupFull;
                PopupFull.defaultOptions = function(rule) {
                    _ui.default.defaultOptions(rule)
                };
                (0, _component_registrator.default)("dxPopup", PopupFull);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        51495:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/popup/ui.popup.js ***!
              \******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _element = __webpack_require__( /*! ../../core/element */ 6415);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _empty_template = __webpack_require__( /*! ../../core/templates/empty_template */ 10688);
                var _browser = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/browser */ 47810));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _inflector = __webpack_require__( /*! ../../core/utils/inflector */ 78008);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _position = __webpack_require__( /*! ../../core/utils/position */ 37518);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _version = __webpack_require__( /*! ../../core/utils/version */ 58020);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _visibility_change = __webpack_require__( /*! ../../events/visibility_change */ 80506);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _popup_drag = _interopRequireDefault(__webpack_require__( /*! ./popup_drag */ 1351));
                var _resizable = _interopRequireDefault(__webpack_require__( /*! ../resizable */ 46743));
                var _button = _interopRequireDefault(__webpack_require__( /*! ../button */ 63008));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../overlay/ui.overlay */ 89799));
                var _themes = __webpack_require__( /*! ../themes */ 75811);
                __webpack_require__( /*! ../toolbar/ui.toolbar.base */ 997);
                var _resize_observer = _interopRequireDefault(__webpack_require__( /*! ../../core/resize_observer */ 91784));
                var zIndexPool = function(obj, nodeInterop) {
                    if (!nodeInterop && obj && obj.__esModule) {
                        return obj
                    }
                    if (null === obj || "object" !== typeof obj && "function" !== typeof obj) {
                        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 ("default" !== key && 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
                }(__webpack_require__( /*! ../overlay/z_index */ 85421));
                var _popup_position_controller = __webpack_require__( /*! ./popup_position_controller */ 39665);
                var _popup_overflow_manager = __webpack_require__( /*! ./popup_overflow_manager */ 62300);
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 73176));

                function _getRequireWildcardCache(nodeInterop) {
                    if ("function" !== typeof WeakMap) {
                        return null
                    }
                    var cacheBabelInterop = new WeakMap;
                    var cacheNodeInterop = new WeakMap;
                    return (_getRequireWildcardCache = function(nodeInterop) {
                        return nodeInterop ? cacheNodeInterop : cacheBabelInterop
                    })(nodeInterop)
                }

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();
                const ALLOWED_TOOLBAR_ITEM_ALIASES = ["cancel", "clear", "done"];
                const IS_OLD_SAFARI = _browser.default.safari && (0, _version.compare)(_browser.default.version, [11]) < 0;
                const HEIGHT_STRATEGIES = {
                    static: "",
                    inherit: "dx-popup-inherit-height",
                    flex: "dx-popup-flex-height"
                };
                const Popup = _ui.default.inherit({
                    _supportedKeys: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            upArrow: e => {
                                var _this$_drag;
                                null === (_this$_drag = this._drag) || void 0 === _this$_drag ? void 0 : _this$_drag.moveUp(e)
                            },
                            downArrow: e => {
                                var _this$_drag2;
                                null === (_this$_drag2 = this._drag) || void 0 === _this$_drag2 ? void 0 : _this$_drag2.moveDown(e)
                            },
                            leftArrow: e => {
                                var _this$_drag3;
                                null === (_this$_drag3 = this._drag) || void 0 === _this$_drag3 ? void 0 : _this$_drag3.moveLeft(e)
                            },
                            rightArrow: e => {
                                var _this$_drag4;
                                null === (_this$_drag4 = this._drag) || void 0 === _this$_drag4 ? void 0 : _this$_drag4.moveRight(e)
                            }
                        })
                    },
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            fullScreen: false,
                            title: "",
                            showTitle: true,
                            titleTemplate: "title",
                            onTitleRendered: null,
                            dragOutsideBoundary: false,
                            dragEnabled: false,
                            dragAndResizeArea: void 0,
                            enableBodyScroll: true,
                            outsideDragFactor: 0,
                            onResizeStart: null,
                            onResize: null,
                            onResizeEnd: null,
                            resizeEnabled: false,
                            toolbarItems: [],
                            showCloseButton: false,
                            bottomTemplate: "bottom",
                            useDefaultToolbarButtons: false,
                            useFlatToolbarButtons: false,
                            autoResizeEnabled: true
                        })
                    },
                    _defaultOptionsRules: function() {
                        return this.callBase().concat([{
                            device: {
                                platform: "ios"
                            },
                            options: {
                                animation: this._iosAnimation
                            }
                        }, {
                            device: {
                                platform: "android"
                            },
                            options: {
                                animation: this._androidAnimation
                            }
                        }, {
                            device: {
                                platform: "generic"
                            },
                            options: {
                                showCloseButton: true
                            }
                        }, {
                            device: function(device) {
                                return "desktop" === _devices.default.real().deviceType && "generic" === device.platform
                            },
                            options: {
                                dragEnabled: true
                            }
                        }, {
                            device: function() {
                                return "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator()
                            },
                            options: {
                                focusStateEnabled: true
                            }
                        }, {
                            device: function() {
                                return (0, _themes.isMaterialBased)()
                            },
                            options: {
                                useFlatToolbarButtons: true
                            }
                        }, {
                            device: function() {
                                return (0, _themes.isMaterial)()
                            },
                            options: {
                                useDefaultToolbarButtons: true,
                                showCloseButton: false
                            }
                        }])
                    },
                    _iosAnimation: {
                        show: {
                            type: "slide",
                            duration: 400,
                            from: {
                                position: {
                                    my: "top",
                                    at: "bottom"
                                }
                            },
                            to: {
                                position: {
                                    my: "center",
                                    at: "center"
                                }
                            }
                        },
                        hide: {
                            type: "slide",
                            duration: 400,
                            from: {
                                opacity: 1,
                                position: {
                                    my: "center",
                                    at: "center"
                                }
                            },
                            to: {
                                opacity: 1,
                                position: {
                                    my: "top",
                                    at: "bottom"
                                }
                            }
                        }
                    },
                    _androidAnimation: function() {
                        return this.option("fullScreen") ? {
                            show: {
                                type: "slide",
                                duration: 300,
                                from: {
                                    top: "30%",
                                    opacity: 0
                                },
                                to: {
                                    top: 0,
                                    opacity: 1
                                }
                            },
                            hide: {
                                type: "slide",
                                duration: 300,
                                from: {
                                    top: 0,
                                    opacity: 1
                                },
                                to: {
                                    top: "30%",
                                    opacity: 0
                                }
                            }
                        } : {
                            show: {
                                type: "fade",
                                duration: 400,
                                from: 0,
                                to: 1
                            },
                            hide: {
                                type: "fade",
                                duration: 400,
                                from: 1,
                                to: 0
                            }
                        }
                    },
                    _init: function() {
                        const popupWrapperClassExternal = this.option("_wrapperClassExternal");
                        const popupWrapperClasses = popupWrapperClassExternal ? "".concat("dx-popup-wrapper", " ").concat(popupWrapperClassExternal) : "dx-popup-wrapper";
                        this.callBase();
                        this._createBodyOverflowManager();
                        this._updateResizeCallbackSkipCondition();
                        this.$element().addClass("dx-popup");
                        this.$wrapper().addClass(popupWrapperClasses);
                        this._$popupContent = this._$content.wrapInner((0, _renderer.default)("<div>").addClass("dx-popup-content")).children().eq(0);
                        this._toggleContentScrollClass();
                        this.$overlayContent().attr("role", "dialog")
                    },
                    _render: function() {
                        const isFullscreen = this.option("fullScreen");
                        this._toggleFullScreenClass(isFullscreen);
                        this.callBase()
                    },
                    _createBodyOverflowManager: function() {
                        this._bodyOverflowManager = (0, _popup_overflow_manager.createBodyOverflowManager)()
                    },
                    _toggleFullScreenClass: function(value) {
                        this.$overlayContent().toggleClass("dx-popup-fullscreen", value).toggleClass("dx-popup-normal", !value)
                    },
                    _initTemplates: function() {
                        this.callBase();
                        this._templateManager.addDefaultTemplates({
                            title: new _empty_template.EmptyTemplate,
                            bottom: new _empty_template.EmptyTemplate
                        })
                    },
                    _getActionsList: function() {
                        return this.callBase().concat(["onResizeStart", "onResize", "onResizeEnd"])
                    },
                    _contentResizeHandler: function(entry) {
                        if (!this._shouldSkipContentResize(entry)) {
                            this._renderGeometry({
                                shouldOnlyReposition: true
                            })
                        }
                    },
                    _doesShowAnimationChangeDimensions: function() {
                        const animation = this.option("animation");
                        return ["to", "from"].some(prop => {
                            var _animation$show;
                            const config = null === animation || void 0 === animation ? void 0 : null === (_animation$show = animation.show) || void 0 === _animation$show ? void 0 : _animation$show[prop];
                            return (0, _type.isObject)(config) && ("width" in config || "height" in config)
                        })
                    },
                    _updateResizeCallbackSkipCondition() {
                        const doesShowAnimationChangeDimensions = this._doesShowAnimationChangeDimensions();
                        this._shouldSkipContentResize = entry => doesShowAnimationChangeDimensions && this._showAnimationProcessing || this._areContentDimensionsRendered(entry)
                    },
                    _observeContentResize: function(shouldObserve) {
                        if (!this.option("useResizeObserver")) {
                            return
                        }
                        const contentElement = this._$content.get(0);
                        if (shouldObserve) {
                            _resize_observer.default.observe(contentElement, entry => {
                                this._contentResizeHandler(entry)
                            })
                        } else {
                            _resize_observer.default.unobserve(contentElement)
                        }
                    },
                    _areContentDimensionsRendered: function(entry) {
                        var _entry$contentBoxSize, _this$_renderedDimens3, _this$_renderedDimens4;
                        const contentBox = null === (_entry$contentBoxSize = entry.contentBoxSize) || void 0 === _entry$contentBoxSize ? void 0 : _entry$contentBoxSize[0];
                        if (contentBox) {
                            var _this$_renderedDimens, _this$_renderedDimens2;
                            return parseInt(contentBox.inlineSize, 10) === (null === (_this$_renderedDimens = this._renderedDimensions) || void 0 === _this$_renderedDimens ? void 0 : _this$_renderedDimens.width) && parseInt(contentBox.blockSize, 10) === (null === (_this$_renderedDimens2 = this._renderedDimensions) || void 0 === _this$_renderedDimens2 ? void 0 : _this$_renderedDimens2.height)
                        }
                        const contentRect = entry.contentRect;
                        return parseInt(contentRect.width, 10) === (null === (_this$_renderedDimens3 = this._renderedDimensions) || void 0 === _this$_renderedDimens3 ? void 0 : _this$_renderedDimens3.width) && parseInt(contentRect.height, 10) === (null === (_this$_renderedDimens4 = this._renderedDimensions) || void 0 === _this$_renderedDimens4 ? void 0 : _this$_renderedDimens4.height)
                    },
                    _renderContent() {
                        this.callBase();
                        this._observeContentResize(true)
                    },
                    _renderContentImpl: function() {
                        this._renderTitle();
                        this.callBase();
                        this._renderResize();
                        this._renderBottom()
                    },
                    _renderTitle: function() {
                        const items = this._getToolbarItems("top");
                        const {
                            title: title,
                            showTitle: showTitle
                        } = this.option();
                        if (showTitle && !!title) {
                            items.unshift({
                                location: _devices.default.current().ios ? "center" : "before",
                                text: title
                            })
                        }
                        if (showTitle || items.length > 0) {
                            this._$title && this._$title.remove();
                            const $title = (0, _renderer.default)("<div>").addClass("dx-popup-title").insertBefore(this.$content());
                            this._$title = this._renderTemplateByType("titleTemplate", items, $title).addClass("dx-popup-title");
                            this._renderDrag();
                            this._executeTitleRenderAction(this._$title);
                            this._$title.toggleClass("dx-has-close-button", this._hasCloseButton())
                        } else if (this._$title) {
                            this._$title.detach()
                        }
                        this._toggleAriaLabel()
                    },
                    _toggleAriaLabel() {
                        var _this$_$title;
                        const {
                            title: title,
                            showTitle: showTitle
                        } = this.option();
                        const shouldSetAriaLabel = showTitle && !!title;
                        const titleId = shouldSetAriaLabel ? new _guid.default : null;
                        null === (_this$_$title = this._$title) || void 0 === _this$_$title ? void 0 : _this$_$title.find(".".concat("dx-toolbar-label")).eq(0).attr("id", titleId);
                        this.$overlayContent().attr("aria-labelledby", titleId)
                    },
                    _renderTemplateByType: function(optionName, data, $container, additionalToolbarOptions) {
                        const {
                            rtlEnabled: rtlEnabled,
                            useDefaultToolbarButtons: useDefaultToolbarButtons,
                            useFlatToolbarButtons: useFlatToolbarButtons,
                            disabled: disabled
                        } = this.option();
                        const template = this._getTemplateByOption(optionName);
                        const toolbarTemplate = template instanceof _empty_template.EmptyTemplate;
                        if (toolbarTemplate) {
                            const integrationOptions = (0, _extend.extend)({}, this.option("integrationOptions"), {
                                skipTemplates: ["content", "title"]
                            });
                            const toolbarOptions = (0, _extend.extend)(additionalToolbarOptions, {
                                items: data,
                                rtlEnabled: rtlEnabled,
                                useDefaultButtons: useDefaultToolbarButtons,
                                useFlatButtons: useFlatToolbarButtons,
                                disabled: disabled,
                                integrationOptions: integrationOptions
                            });
                            this._getTemplate("dx-polymorph-widget").render({
                                container: $container,
                                model: {
                                    widget: this._getToolbarName(),
                                    options: toolbarOptions
                                }
                            });
                            const $toolbar = $container.children("div");
                            $container.replaceWith($toolbar);
                            return $toolbar
                        } else {
                            const $result = (0, _renderer.default)(template.render({
                                container: (0, _element.getPublicElement)($container)
                            }));
                            if ($result.hasClass("dx-template-wrapper")) {
                                $container.replaceWith($result);
                                $container = $result
                            }
                            return $container
                        }
                    },
                    _getToolbarName: function() {
                        return "dxToolbarBase"
                    },
                    _renderVisibilityAnimate: function(visible) {
                        return this.callBase(visible)
                    },
                    _hide() {
                        this._observeContentResize(false);
                        return this.callBase()
                    },
                    _executeTitleRenderAction: function($titleElement) {
                        this._getTitleRenderAction()({
                            titleElement: (0, _element.getPublicElement)($titleElement)
                        })
                    },
                    _getTitleRenderAction: function() {
                        return this._titleRenderAction || this._createTitleRenderAction()
                    },
                    _createTitleRenderAction: function() {
                        return this._titleRenderAction = this._createActionByOption("onTitleRendered", {
                            element: this.element(),
                            excludeValidators: ["disabled", "readOnly"]
                        })
                    },
                    _getCloseButton: function() {
                        return {
                            toolbar: "top",
                            location: "after",
                            template: this._getCloseButtonRenderer()
                        }
                    },
                    _getCloseButtonRenderer: function() {
                        return (_, __, container) => {
                            const $button = (0, _renderer.default)("<div>").addClass("dx-closebutton");
                            this._createComponent($button, _button.default, {
                                icon: "close",
                                onClick: this._createToolbarItemAction(void 0),
                                stylingMode: "text",
                                integrationOptions: {}
                            });
                            (0, _renderer.default)(container).append($button)
                        }
                    },
                    _getToolbarItems: function(toolbar) {
                        const toolbarItems = this.option("toolbarItems");
                        const toolbarsItems = [];
                        this._toolbarItemClasses = [];
                        const currentPlatform = _devices.default.current().platform;
                        let index = 0;
                        (0, _iterator.each)(toolbarItems, (_, data) => {
                            const isShortcut = (0, _type.isDefined)(data.shortcut);
                            const item = isShortcut ? (name => {
                                const device = _devices.default.current();
                                const platform = device.platform;
                                let toolbar = "bottom";
                                let location = "before";
                                if ("ios" === platform) {
                                    switch (name) {
                                        case "cancel":
                                            toolbar = "top";
                                            break;
                                        case "clear":
                                            toolbar = "top";
                                            location = "after";
                                            break;
                                        case "done":
                                            location = "after"
                                    }
                                } else if ("android" === platform) {
                                    switch (name) {
                                        case "cancel":
                                        case "done":
                                            location = "after"
                                    }
                                }
                                return {
                                    toolbar: toolbar,
                                    location: location
                                }
                            })(data.shortcut) : data;
                            if (isShortcut && "ios" === currentPlatform && index < 2) {
                                item.toolbar = "top";
                                index++
                            }
                            item.toolbar = data.toolbar || item.toolbar || "top";
                            if (item && item.toolbar === toolbar) {
                                if (isShortcut) {
                                    (0, _extend.extend)(item, {
                                        location: data.location
                                    }, this._getToolbarItemByAlias(data))
                                }
                                const isLTROrder = "generic" === currentPlatform;
                                if ("done" === data.shortcut && isLTROrder || "cancel" === data.shortcut && !isLTROrder) {
                                    toolbarsItems.unshift(item)
                                } else {
                                    toolbarsItems.push(item)
                                }
                            }
                        });
                        if ("top" === toolbar && this._hasCloseButton()) {
                            toolbarsItems.push(this._getCloseButton())
                        }
                        return toolbarsItems
                    },
                    _hasCloseButton() {
                        return this.option("showCloseButton") && this.option("showTitle")
                    },
                    _getLocalizationKey: itemType => "done" === itemType.toLowerCase() ? "OK" : (0, _inflector.camelize)(itemType, true),
                    _getToolbarButtonStylingMode: function(shortcut) {
                        if ((0, _themes.isFluent)()) {
                            return "done" === shortcut ? "contained" : "outlined"
                        }
                        return this.option("useFlatToolbarButtons") ? "text" : "contained"
                    },
                    _getToolbarButtonType: function(shortcut) {
                        if ((0, _themes.isFluent)() && "done" === shortcut || this.option("useDefaultToolbarButtons")) {
                            return "default"
                        }
                        return "normal"
                    },
                    _getToolbarItemByAlias: function(data) {
                        const that = this;
                        const itemType = data.shortcut;
                        if (!ALLOWED_TOOLBAR_ITEM_ALIASES.includes(itemType)) {
                            return false
                        }
                        const itemConfig = (0, _extend.extend)({
                            text: _message.default.format(this._getLocalizationKey(itemType)),
                            onClick: this._createToolbarItemAction(data.onClick),
                            integrationOptions: {},
                            type: this._getToolbarButtonType(itemType),
                            stylingMode: this._getToolbarButtonStylingMode(itemType)
                        }, data.options || {});
                        const itemClass = "dx-popup-" + itemType;
                        this._toolbarItemClasses.push(itemClass);
                        return {
                            template: function(_, __, container) {
                                const $toolbarItem = (0, _renderer.default)("<div>").addClass(itemClass).appendTo(container);
                                that._createComponent($toolbarItem, _button.default, itemConfig)
                            }
                        }
                    },
                    _createToolbarItemAction: function(clickAction) {
                        return this._createAction(clickAction, {
                            afterExecute: function(e) {
                                e.component.hide()
                            }
                        })
                    },
                    _renderBottom: function() {
                        const items = this._getToolbarItems("bottom");
                        if (items.length) {
                            this._$bottom && this._$bottom.remove();
                            const $bottom = (0, _renderer.default)("<div>").addClass("dx-popup-bottom").insertAfter(this.$content());
                            this._$bottom = this._renderTemplateByType("bottomTemplate", items, $bottom, {
                                compactMode: true
                            }).addClass("dx-popup-bottom");
                            this._toggleClasses()
                        } else {
                            this._$bottom && this._$bottom.detach()
                        }
                    },
                    _toggleDisabledState: function(value) {
                        this.callBase(...arguments);
                        this.$content().toggleClass("dx-state-disabled", Boolean(value))
                    },
                    _toggleClasses: function() {
                        const aliases = ALLOWED_TOOLBAR_ITEM_ALIASES;
                        (0, _iterator.each)(aliases, (_, alias) => {
                            const className = "dx-popup-" + alias;
                            if (this._toolbarItemClasses.includes(className)) {
                                this.$wrapper().addClass(className + "-visible");
                                this._$bottom.addClass(className)
                            } else {
                                this.$wrapper().removeClass(className + "-visible");
                                this._$bottom.removeClass(className)
                            }
                        })
                    },
                    _toggleFocusClass(isFocused, $element) {
                        this.callBase(isFocused, $element);
                        if (isFocused && !zIndexPool.isLastZIndexInStack(this._zIndex)) {
                            const zIndex = zIndexPool.create(this._zIndexInitValue());
                            zIndexPool.remove(this._zIndex);
                            this._zIndex = zIndex;
                            this._$wrapper.css("zIndex", zIndex);
                            this._$content.css("zIndex", zIndex)
                        }
                    },
                    _toggleContentScrollClass() {
                        const isNativeScrollingEnabled = !this.option("preventScrollEvents");
                        this.$content().toggleClass("dx-popup-content-scrollable", isNativeScrollingEnabled)
                    },
                    _getPositionControllerConfig() {
                        const {
                            fullScreen: fullScreen,
                            forceApplyBindings: forceApplyBindings,
                            dragOutsideBoundary: dragOutsideBoundary,
                            dragAndResizeArea: dragAndResizeArea,
                            outsideDragFactor: outsideDragFactor
                        } = this.option();
                        return (0, _extend.extend)({}, this.callBase(), {
                            fullScreen: fullScreen,
                            forceApplyBindings: forceApplyBindings,
                            dragOutsideBoundary: dragOutsideBoundary,
                            dragAndResizeArea: dragAndResizeArea,
                            outsideDragFactor: outsideDragFactor
                        })
                    },
                    _initPositionController() {
                        this._positionController = new _popup_position_controller.PopupPositionController(this._getPositionControllerConfig())
                    },
                    _getDragTarget: function() {
                        return this.topToolbar()
                    },
                    _renderGeometry: function(options) {
                        const {
                            visible: visible,
                            useResizeObserver: useResizeObserver
                        } = this.option();
                        if (visible && (0, _window.hasWindow)()) {
                            const isAnimated = this._showAnimationProcessing;
                            const shouldRepeatAnimation = isAnimated && !(null !== options && void 0 !== options && options.forceStopAnimation) && useResizeObserver;
                            this._isAnimationPaused = shouldRepeatAnimation || void 0;
                            this._stopAnimation();
                            if (null !== options && void 0 !== options && options.shouldOnlyReposition) {
                                this._renderPosition(false)
                            } else {
                                this._renderGeometryImpl(null === options || void 0 === options ? void 0 : options.isDimensionChange)
                            }
                            if (shouldRepeatAnimation) {
                                this._animateShowing();
                                this._isAnimationPaused = void 0
                            }
                        }
                    },
                    _cacheDimensions: function() {
                        if (!this.option("useResizeObserver")) {
                            return
                        }
                        this._renderedDimensions = {
                            width: parseInt((0, _size.getWidth)(this._$content), 10),
                            height: parseInt((0, _size.getHeight)(this._$content), 10)
                        }
                    },
                    _renderGeometryImpl: function() {
                        let isDimensionChange = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false;
                        if (!isDimensionChange) {
                            this._resetContentHeight()
                        }
                        this.callBase();
                        this._cacheDimensions();
                        this._setContentHeight()
                    },
                    _resetContentHeight: function() {
                        const height = this._getOptionValue("height");
                        if ("auto" === height) {
                            this.$content().css({
                                height: "auto",
                                maxHeight: "none"
                            })
                        }
                    },
                    _renderDrag: function() {
                        const $dragTarget = this._getDragTarget();
                        const dragEnabled = this.option("dragEnabled");
                        if (!$dragTarget) {
                            return
                        }
                        const config = {
                            dragEnabled: dragEnabled,
                            handle: $dragTarget.get(0),
                            draggableElement: this._$content.get(0),
                            positionController: this._positionController
                        };
                        if (this._drag) {
                            this._drag.init(config)
                        } else {
                            this._drag = new _popup_drag.default(config)
                        }
                        this.$overlayContent().toggleClass("dx-popup-draggable", dragEnabled)
                    },
                    _renderResize: function() {
                        this._resizable = this._createComponent(this._$content, _resizable.default, {
                            handles: this.option("resizeEnabled") ? "all" : "none",
                            onResizeEnd: e => {
                                this._resizeEndHandler(e);
                                this._observeContentResize(true)
                            },
                            onResize: e => {
                                this._setContentHeight();
                                this._actions.onResize(e)
                            },
                            onResizeStart: e => {
                                this._observeContentResize(false);
                                this._actions.onResizeStart(e)
                            },
                            minHeight: 100,
                            minWidth: 100,
                            area: this._positionController.$dragResizeContainer,
                            keepAspectRatio: false
                        })
                    },
                    _resizeEndHandler: function(e) {
                        const width = this._resizable.option("width");
                        const height = this._resizable.option("height");
                        width && this._setOptionWithoutOptionChange("width", width);
                        height && this._setOptionWithoutOptionChange("height", height);
                        this._cacheDimensions();
                        this._positionController.resizeHandled();
                        this._positionController.detectVisualPositionChange(e.event);
                        this._actions.onResizeEnd(e)
                    },
                    _setContentHeight: function() {
                        (this.option("forceApplyBindings") || _common.noop)();
                        const overlayContent = this.$overlayContent().get(0);
                        const currentHeightStrategyClass = this._chooseHeightStrategy(overlayContent);
                        this.$content().css(this._getHeightCssStyles(currentHeightStrategyClass, overlayContent));
                        this._setHeightClasses(this.$overlayContent(), currentHeightStrategyClass)
                    },
                    _heightStrategyChangeOffset: function(currentHeightStrategyClass, popupVerticalPaddings) {
                        return currentHeightStrategyClass === HEIGHT_STRATEGIES.flex ? -popupVerticalPaddings : 0
                    },
                    _chooseHeightStrategy: function(overlayContent) {
                        const isAutoWidth = "auto" === overlayContent.style.width || "" === overlayContent.style.width;
                        let currentHeightStrategyClass = HEIGHT_STRATEGIES.static;
                        if (this._isAutoHeight() && this.option("autoResizeEnabled")) {
                            if (isAutoWidth || IS_OLD_SAFARI) {
                                currentHeightStrategyClass = HEIGHT_STRATEGIES.inherit
                            } else {
                                currentHeightStrategyClass = HEIGHT_STRATEGIES.flex
                            }
                        }
                        return currentHeightStrategyClass
                    },
                    _getHeightCssStyles: function(currentHeightStrategyClass, overlayContent) {
                        let cssStyles = {};
                        const contentMaxHeight = this._getOptionValue("maxHeight", overlayContent);
                        const contentMinHeight = this._getOptionValue("minHeight", overlayContent);
                        const popupHeightParts = this._splitPopupHeight();
                        const toolbarsAndVerticalOffsetsHeight = popupHeightParts.header + popupHeightParts.footer + popupHeightParts.contentVerticalOffsets + popupHeightParts.popupVerticalOffsets + this._heightStrategyChangeOffset(currentHeightStrategyClass, popupHeightParts.popupVerticalPaddings);
                        if (currentHeightStrategyClass === HEIGHT_STRATEGIES.static) {
                            if (!this._isAutoHeight() || contentMaxHeight || contentMinHeight) {
                                const overlayHeight = this.option("fullScreen") ? Math.min((0, _position.getBoundingRect)(overlayContent).height, (0, _window.getWindow)().innerHeight) : (0, _position.getBoundingRect)(overlayContent).height;
                                const contentHeight = overlayHeight - toolbarsAndVerticalOffsetsHeight;
                                cssStyles = {
                                    height: Math.max(0, contentHeight),
                                    minHeight: "auto",
                                    maxHeight: "auto"
                                }
                            }
                        } else {
                            const container = (0, _renderer.default)(this._positionController.$visualContainer).get(0);
                            const maxHeightValue = (0, _size.addOffsetToMaxHeight)(contentMaxHeight, -toolbarsAndVerticalOffsetsHeight, container);
                            const minHeightValue = (0, _size.addOffsetToMinHeight)(contentMinHeight, -toolbarsAndVerticalOffsetsHeight, container);
                            cssStyles = {
                                height: "auto",
                                minHeight: minHeightValue,
                                maxHeight: maxHeightValue
                            }
                        }
                        return cssStyles
                    },
                    _setHeightClasses: function($container, currentClass) {
                        let excessClasses = "";
                        for (const name in HEIGHT_STRATEGIES) {
                            if (HEIGHT_STRATEGIES[name] !== currentClass) {
                                excessClasses += " " + HEIGHT_STRATEGIES[name]
                            }
                        }
                        $container.removeClass(excessClasses).addClass(currentClass)
                    },
                    _isAutoHeight: function() {
                        return "auto" === this.$overlayContent().get(0).style.height
                    },
                    _splitPopupHeight: function() {
                        const topToolbar = this.topToolbar();
                        const bottomToolbar = this.bottomToolbar();
                        return {
                            header: (0, _size.getVisibleHeight)(topToolbar && topToolbar.get(0)),
                            footer: (0, _size.getVisibleHeight)(bottomToolbar && bottomToolbar.get(0)),
                            contentVerticalOffsets: (0, _size.getVerticalOffsets)(this.$overlayContent().get(0), true),
                            popupVerticalOffsets: (0, _size.getVerticalOffsets)(this.$content().get(0), true),
                            popupVerticalPaddings: (0, _size.getVerticalOffsets)(this.$content().get(0), false)
                        }
                    },
                    _isAllWindowCovered: function() {
                        return this.callBase() || this.option("fullScreen")
                    },
                    _renderDimensions: function() {
                        if (this.option("fullScreen")) {
                            this.$overlayContent().css({
                                width: "100%",
                                height: "100%",
                                minWidth: "",
                                maxWidth: "",
                                minHeight: "",
                                maxHeight: ""
                            })
                        } else {
                            this.callBase()
                        }
                        if ((0, _window.hasWindow)()) {
                            this._renderFullscreenWidthClass()
                        }
                    },
                    _dimensionChanged: function() {
                        this._renderGeometry({
                            isDimensionChange: true
                        })
                    },
                    _clean: function() {
                        this.callBase();
                        this._observeContentResize(false)
                    },
                    _dispose: function() {
                        this.callBase();
                        this._toggleBodyScroll(true)
                    },
                    _renderFullscreenWidthClass: function() {
                        this.$overlayContent().toggleClass("dx-popup-fullscreen-width", (0, _size.getOuterWidth)(this.$overlayContent()) === (0, _size.getWidth)(window))
                    },
                    _toggleSafariScrolling() {
                        if (!this.option("enableBodyScroll")) {
                            return
                        }
                        this.callBase()
                    },
                    _toggleBodyScroll: function(enabled) {
                        if (!this._bodyOverflowManager) {
                            return
                        }
                        const {
                            setOverflow: setOverflow,
                            restoreOverflow: restoreOverflow
                        } = this._bodyOverflowManager;
                        if (enabled) {
                            restoreOverflow()
                        } else {
                            setOverflow()
                        }
                    },
                    refreshPosition: function() {
                        this._renderPosition()
                    },
                    _optionChanged: function(args) {
                        var _this$_resizable2;
                        const {
                            value: value,
                            name: name
                        } = args;
                        switch (name) {
                            case "disabled":
                                this.callBase(args);
                                this._renderTitle();
                                this._renderBottom();
                                break;
                            case "animation":
                                this._updateResizeCallbackSkipCondition();
                                break;
                            case "enableBodyScroll":
                                if (this.option("visible")) {
                                    this._toggleBodyScroll(value)
                                }
                                break;
                            case "showTitle":
                            case "title":
                            case "titleTemplate":
                                this._renderTitle();
                                this._renderGeometry();
                                (0, _visibility_change.triggerResizeEvent)(this.$overlayContent());
                                break;
                            case "bottomTemplate":
                                this._renderBottom();
                                this._renderGeometry();
                                (0, _visibility_change.triggerResizeEvent)(this.$overlayContent());
                                break;
                            case "container":
                                this.callBase(args);
                                if (this.option("resizeEnabled")) {
                                    var _this$_resizable;
                                    null === (_this$_resizable = this._resizable) || void 0 === _this$_resizable ? void 0 : _this$_resizable.option("area", this._positionController.$dragResizeContainer)
                                }
                                break;
                            case "width":
                            case "height":
                                this.callBase(args);
                                null === (_this$_resizable2 = this._resizable) || void 0 === _this$_resizable2 ? void 0 : _this$_resizable2.option(name, value);
                                break;
                            case "onTitleRendered":
                                this._createTitleRenderAction(value);
                                break;
                            case "toolbarItems":
                            case "useDefaultToolbarButtons":
                            case "useFlatToolbarButtons": {
                                const shouldRenderGeometry = !args.fullName.match(/^toolbarItems((\[\d+\])(\.(options|visible).*)?)?$/);
                                this._renderTitle();
                                this._renderBottom();
                                if (shouldRenderGeometry) {
                                    this._renderGeometry();
                                    (0, _visibility_change.triggerResizeEvent)(this.$overlayContent())
                                }
                                break
                            }
                            case "dragEnabled":
                                this._renderDrag();
                                break;
                            case "dragAndResizeArea":
                                this._positionController.dragAndResizeArea = value;
                                if (this.option("resizeEnabled")) {
                                    this._resizable.option("area", this._positionController.$dragResizeContainer)
                                }
                                this._positionController.positionContent();
                                break;
                            case "dragOutsideBoundary":
                                this._positionController.dragOutsideBoundary = value;
                                if (this.option("resizeEnabled")) {
                                    this._resizable.option("area", this._positionController.$dragResizeContainer)
                                }
                                break;
                            case "outsideDragFactor":
                                this._positionController.outsideDragFactor = value;
                                break;
                            case "resizeEnabled":
                                this._renderResize();
                                this._renderGeometry();
                                break;
                            case "autoResizeEnabled":
                                this._renderGeometry();
                                (0, _visibility_change.triggerResizeEvent)(this.$overlayContent());
                                break;
                            case "fullScreen":
                                this._positionController.fullScreen = value;
                                this._toggleFullScreenClass(value);
                                this._toggleSafariScrolling();
                                this._renderGeometry();
                                (0, _visibility_change.triggerResizeEvent)(this.$overlayContent());
                                break;
                            case "showCloseButton":
                                this._renderTitle();
                                break;
                            case "preventScrollEvents":
                                this.callBase(args);
                                this._toggleContentScrollClass();
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    bottomToolbar: function() {
                        return this._$bottom
                    },
                    topToolbar: function() {
                        return this._$title
                    },
                    $content: function() {
                        return this._$popupContent
                    },
                    content: function() {
                        return (0, _element.getPublicElement)(this.$content())
                    },
                    $overlayContent: function() {
                        return this._$content
                    },
                    getFocusableElements: function() {
                        return this.$wrapper().find("[tabindex]").filter((index, item) => item.getAttribute("tabindex") >= 0)
                    }
                });
                (0, _component_registrator.default)("dxPopup", Popup);
                var _default = Popup;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        28080:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/progress_bar.js ***!
              \****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _track_bar = _interopRequireDefault(__webpack_require__( /*! ./track_bar */ 39661));
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const ProgressBar = _track_bar.default.inherit({
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            value: 0,
                            statusFormat: function(ratio) {
                                return "Progress: " + Math.round(100 * ratio) + "%"
                            },
                            showStatus: true,
                            onComplete: null,
                            activeStateEnabled: false,
                            statusPosition: "bottom left",
                            _animatingSegmentCount: 0
                        })
                    },
                    _defaultOptionsRules: function() {
                        return this.callBase().concat([{
                            device: function(device) {
                                return "android" === device.platform
                            },
                            options: {
                                _animatingSegmentCount: 2
                            }
                        }])
                    },
                    _initMarkup: function() {
                        this._renderStatus();
                        this._createCompleteAction();
                        this.callBase();
                        this.$element().addClass("dx-progressbar");
                        this._$wrapper.addClass("dx-progressbar-wrapper");
                        this._$bar.addClass("dx-progressbar-container");
                        this.setAria("role", "progressbar");
                        (0, _renderer.default)("<div>").addClass("dx-progressbar-range-container").appendTo(this._$wrapper).append(this._$bar);
                        this._$range.addClass("dx-progressbar-range");
                        this._toggleStatus(this.option("showStatus"))
                    },
                    _useTemplates: function() {
                        return false
                    },
                    _createCompleteAction: function() {
                        this._completeAction = this._createActionByOption("onComplete")
                    },
                    _renderStatus: function() {
                        this._$status = (0, _renderer.default)("<div>").addClass("dx-progressbar-status")
                    },
                    _renderIndeterminateState: function() {
                        this._$segmentContainer = (0, _renderer.default)("<div>").addClass("dx-progressbar-animating-container");
                        const segments = this.option("_animatingSegmentCount");
                        for (let i = 0; i < segments; i++) {
                            (0, _renderer.default)("<div>").addClass("dx-progressbar-animating-segment").addClass("dx-progressbar-animating-segment-" + (i + 1)).appendTo(this._$segmentContainer)
                        }
                        this._$segmentContainer.appendTo(this._$wrapper)
                    },
                    _toggleStatus: function(value) {
                        const splitPosition = this.option("statusPosition").split(" ");
                        if (value) {
                            if ("top" === splitPosition[0] || "left" === splitPosition[0]) {
                                this._$status.prependTo(this._$wrapper)
                            } else {
                                this._$status.appendTo(this._$wrapper)
                            }
                        } else {
                            this._$status.detach()
                        }
                        this._togglePositionClass()
                    },
                    _togglePositionClass: function() {
                        const position = this.option("statusPosition");
                        const splitPosition = position.split(" ");
                        this._$wrapper.removeClass("dx-position-top-left dx-position-top-right dx-position-bottom-left dx-position-bottom-right dx-position-left dx-position-right");
                        let positionClass = "dx-position-" + splitPosition[0];
                        if (splitPosition[1]) {
                            positionClass += "-" + splitPosition[1]
                        }
                        this._$wrapper.addClass(positionClass)
                    },
                    _toggleIndeterminateState: function(value) {
                        if (value) {
                            this._renderIndeterminateState();
                            this._$bar.toggle(false)
                        } else {
                            this._$bar.toggle(true);
                            this._$segmentContainer.remove();
                            delete this._$segmentContainer
                        }
                    },
                    _renderValue: function() {
                        const val = this.option("value");
                        const max = this.option("max");
                        if (!val && 0 !== val) {
                            this._toggleIndeterminateState(true);
                            return
                        }
                        if (this._$segmentContainer) {
                            this._toggleIndeterminateState(false)
                        }
                        if (val === max) {
                            this._completeAction()
                        }
                        this.callBase();
                        this._setStatus()
                    },
                    _setStatus: function() {
                        let format = this.option("statusFormat");
                        if ((0, _type.isFunction)(format)) {
                            format = format.bind(this)
                        } else {
                            format = function(value) {
                                return value
                            }
                        }
                        const statusText = format(this._currentRatio, this.option("value"));
                        this._$status.text(statusText)
                    },
                    _dispose: function() {
                        this._$status.remove();
                        this.callBase()
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "statusFormat":
                                this._setStatus();
                                break;
                            case "showStatus":
                                this._toggleStatus(args.value);
                                break;
                            case "statusPosition":
                                this._toggleStatus(this.option("showStatus"));
                                break;
                            case "onComplete":
                                this._createCompleteAction();
                                break;
                            case "_animatingSegmentCount":
                                break;
                            default:
                                this.callBase(args)
                        }
                    }
                });
                (0, _component_registrator.default)("dxProgressBar", ProgressBar);
                var _default = ProgressBar;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        14305:
            /*!***************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/radio_group.js ***!
              \***************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _radio_group = (obj = __webpack_require__( /*! ./radio_group/radio_group */ 4060), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _radio_group.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        6282:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/radio_group/radio_button.js ***!
              \****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _editor = _interopRequireDefault(__webpack_require__( /*! ../editor/editor */ 96452));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _click = __webpack_require__( /*! ../../events/click */ 95429);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const RadioButton = _editor.default.inherit({
                    _supportedKeys: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            space: function(e) {
                                e.preventDefault();
                                this._clickAction({
                                    event: e
                                })
                            }
                        })
                    },
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            hoverStateEnabled: true,
                            activeStateEnabled: true,
                            value: false
                        })
                    },
                    _canValueBeChangedByClick: function() {
                        return true
                    },
                    _defaultOptionsRules: function() {
                        return this.callBase().concat([{
                            device: function() {
                                return "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator()
                            },
                            options: {
                                focusStateEnabled: true
                            }
                        }])
                    },
                    _init: function() {
                        this.callBase();
                        this.$element().addClass("dx-radiobutton")
                    },
                    _initMarkup: function() {
                        this.callBase();
                        this._renderIcon();
                        this._renderCheckedState(this.option("value"));
                        this._renderClick();
                        this.setAria("role", "radio")
                    },
                    _renderIcon: function() {
                        this._$icon = (0, _renderer.default)("<div>").addClass("dx-radiobutton-icon");
                        (0, _renderer.default)("<div>").addClass("dx-radiobutton-icon-dot").appendTo(this._$icon);
                        this.$element().append(this._$icon)
                    },
                    _renderCheckedState: function(checked) {
                        this.$element().toggleClass("dx-radiobutton-checked", checked).find(".dx-radiobutton-icon").toggleClass("dx-radiobutton-icon-checked", checked);
                        this.setAria("checked", checked)
                    },
                    _renderClick: function() {
                        const eventName = (0, _index.addNamespace)(_click.name, this.NAME);
                        this._clickAction = this._createAction(function(args) {
                            this._clickHandler(args.event)
                        }.bind(this));
                        _events_engine.default.off(this.$element(), eventName);
                        _events_engine.default.on(this.$element(), eventName, function(e) {
                            this._clickAction({
                                event: e
                            })
                        }.bind(this))
                    },
                    _clickHandler: function(e) {
                        this._saveValueChangeEvent(e);
                        this.option("value", true)
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "value":
                                this._renderCheckedState(args.value);
                                this.callBase(args);
                                break;
                            default:
                                this.callBase(args)
                        }
                    }
                });
                (0, _component_registrator.default)("dxRadioButton", RadioButton);
                var _default = RadioButton;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        4060:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/radio_group/radio_group.js ***!
              \***************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _uiCollection_widget = _interopRequireDefault(__webpack_require__( /*! ../collection/ui.collection_widget.edit */ 11050));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../editor/ui.data_expression */ 88718));
                var _editor = _interopRequireDefault(__webpack_require__( /*! ../editor/editor */ 96452));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);

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

                function _inheritsLoose(subClass, superClass) {
                    subClass.prototype = Object.create(superClass.prototype);
                    subClass.prototype.constructor = subClass;
                    _setPrototypeOf(subClass, superClass)
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let RadioCollection = function(_CollectionWidget) {
                    _inheritsLoose(RadioCollection, _CollectionWidget);

                    function RadioCollection() {
                        return _CollectionWidget.apply(this, arguments) || this
                    }
                    var _proto = RadioCollection.prototype;
                    _proto._focusTarget = function() {
                        return this.$element().parent()
                    };
                    _proto._nullValueSelectionSupported = function() {
                        return true
                    };
                    _proto._getDefaultOptions = function() {
                        const defaultOptions = _CollectionWidget.prototype._getDefaultOptions.call(this);
                        return (0, _extend.extend)(defaultOptions, _ui.default._dataExpressionDefaultOptions(), {
                            _itemAttributes: {
                                role: "radio"
                            }
                        })
                    };
                    _proto._initMarkup = function() {
                        _CollectionWidget.prototype._initMarkup.call(this);
                        (0, _common.deferRender)(() => {
                            this.itemElements().addClass("dx-radiobutton")
                        })
                    };
                    _proto._keyboardEventBindingTarget = function() {
                        return this._focusTarget()
                    };
                    _proto._postprocessRenderItem = function(args) {
                        const {
                            itemData: {
                                html: html
                            },
                            itemElement: itemElement
                        } = args;
                        if (!html) {
                            const $radio = (0, _renderer.default)("<div>").addClass("dx-radiobutton-icon");
                            (0, _renderer.default)("<div>").addClass("dx-radiobutton-icon-dot").appendTo($radio);
                            const $radioContainer = (0, _renderer.default)("<div>").append($radio).addClass("dx-radio-value-container");
                            (0, _renderer.default)(itemElement).prepend($radioContainer)
                        }
                        _CollectionWidget.prototype._postprocessRenderItem.call(this, args)
                    };
                    _proto._processSelectableItem = function($itemElement, isSelected) {
                        _CollectionWidget.prototype._processSelectableItem.call(this, $itemElement, isSelected);
                        $itemElement.toggleClass("dx-radiobutton-checked", isSelected).find(".".concat("dx-radiobutton-icon")).first().toggleClass("dx-radiobutton-icon-checked", isSelected);
                        this.setAria("checked", isSelected, $itemElement)
                    };
                    _proto._refreshContent = function() {
                        this._prepareContent();
                        this._renderContent()
                    };
                    _proto._supportedKeys = function() {
                        const parent = _CollectionWidget.prototype._supportedKeys.call(this);
                        return (0, _extend.extend)({}, parent, {
                            enter: function(e) {
                                e.preventDefault();
                                return parent.enter.apply(this, arguments)
                            },
                            space: function(e) {
                                e.preventDefault();
                                return parent.space.apply(this, arguments)
                            }
                        })
                    };
                    _proto._itemElements = function() {
                        return this._itemContainer().children(this._itemSelector())
                    };
                    _proto._setAriaSelectionAttribute = function() {};
                    return RadioCollection
                }(_uiCollection_widget.default);
                let RadioGroup = function(_Editor) {
                    _inheritsLoose(RadioGroup, _Editor);

                    function RadioGroup() {
                        return _Editor.apply(this, arguments) || this
                    }
                    var _proto2 = RadioGroup.prototype;
                    _proto2._dataSourceOptions = function() {
                        return {
                            paginate: false
                        }
                    };
                    _proto2._defaultOptionsRules = function() {
                        const defaultOptionsRules = _Editor.prototype._defaultOptionsRules.call(this);
                        return defaultOptionsRules.concat([{
                            device: {
                                tablet: true
                            },
                            options: {
                                layout: "horizontal"
                            }
                        }, {
                            device: () => "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator(),
                            options: {
                                focusStateEnabled: true
                            }
                        }])
                    };
                    _proto2._fireContentReadyAction = function(force) {
                        force && _Editor.prototype._fireContentReadyAction.call(this)
                    };
                    _proto2._focusTarget = function() {
                        return this.$element()
                    };
                    _proto2._getAriaTarget = function() {
                        return this.$element()
                    };
                    _proto2._getDefaultOptions = function() {
                        const defaultOptions = _Editor.prototype._getDefaultOptions.call(this);
                        return (0, _extend.extend)(defaultOptions, (0, _extend.extend)(_ui.default._dataExpressionDefaultOptions(), {
                            hoverStateEnabled: true,
                            activeStateEnabled: true,
                            layout: "vertical"
                        }))
                    };
                    _proto2._getItemValue = function(item) {
                        return this._valueGetter ? this._valueGetter(item) : item.text
                    };
                    _proto2._getSubmitElement = function() {
                        return this._$submitElement
                    };
                    _proto2._init = function() {
                        _Editor.prototype._init.call(this);
                        this._activeStateUnit = ".".concat("dx-radiobutton");
                        this._feedbackHideTimeout = 100;
                        this._initDataExpressions()
                    };
                    _proto2._initMarkup = function() {
                        this.$element().addClass("dx-radiogroup");
                        this._renderSubmitElement();
                        this.setAria("role", "radiogroup");
                        this._renderRadios();
                        this._renderLayout();
                        _Editor.prototype._initMarkup.call(this)
                    };
                    _proto2._itemClickHandler = function(_ref) {
                        let {
                            itemElement: itemElement,
                            event: event,
                            itemData: itemData
                        } = _ref;
                        if (this.itemElements().is(itemElement)) {
                            const newValue = this._getItemValue(itemData);
                            if (newValue !== this.option("value")) {
                                this._saveValueChangeEvent(event);
                                this.option("value", newValue)
                            }
                        }
                    };
                    _proto2._getSelectedItemKeys = function() {
                        let value = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.option("value");
                        const isNullSelectable = "this" !== this.option("valueExpr");
                        const shouldSelectValue = isNullSelectable && null === value || (0, _type.isDefined)(value);
                        return shouldSelectValue ? [value] : []
                    };
                    _proto2._setSelection = function(currentValue) {
                        const value = this._unwrappedValue(currentValue);
                        this._setCollectionWidgetOption("selectedItemKeys", this._getSelectedItemKeys(value))
                    };
                    _proto2._renderValidationState = function() {
                        var _this$_validationMess;
                        _Editor.prototype._renderValidationState.call(this);
                        null === (_this$_validationMess = this._validationMessage) || void 0 === _this$_validationMess ? void 0 : _this$_validationMess.$content().attr("role", "alert")
                    };
                    _proto2._optionChanged = function(args) {
                        const {
                            name: name,
                            value: value
                        } = args;
                        this._dataExpressionOptionChanged(args);
                        switch (name) {
                            case "dataSource":
                                this._invalidate();
                                break;
                            case "focusStateEnabled":
                            case "accessKey":
                            case "tabIndex":
                                this._setCollectionWidgetOption(name, value);
                                break;
                            case "disabled":
                                _Editor.prototype._optionChanged.call(this, args);
                                this._setCollectionWidgetOption(name, value);
                                break;
                            case "valueExpr":
                                this._setCollectionWidgetOption("keyExpr", this._getCollectionKeyExpr());
                                break;
                            case "value":
                                this._setSelection(value);
                                this._setSubmitValue(value);
                                _Editor.prototype._optionChanged.call(this, args);
                                break;
                            case "items":
                                this._setSelection(this.option("value"));
                                break;
                            case "itemTemplate":
                            case "displayExpr":
                                break;
                            case "layout":
                                this._renderLayout();
                                this._updateItemsSize();
                                break;
                            default:
                                _Editor.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto2._render = function() {
                        _Editor.prototype._render.call(this);
                        this._updateItemsSize()
                    };
                    _proto2._renderLayout = function() {
                        const layout = this.option("layout");
                        const $element = this.$element();
                        $element.toggleClass("dx-radiogroup-vertical", "vertical" === layout);
                        $element.toggleClass("dx-radiogroup-horizontal", "horizontal" === layout)
                    };
                    _proto2._renderRadios = function() {
                        this._areRadiosCreated = new _deferred.Deferred;
                        const $radios = (0, _renderer.default)("<div>").appendTo(this.$element());
                        const {
                            displayExpr: displayExpr,
                            accessKey: accessKey,
                            focusStateEnabled: focusStateEnabled,
                            itemTemplate: itemTemplate,
                            tabIndex: tabIndex
                        } = this.option();
                        this._createComponent($radios, RadioCollection, {
                            onInitialized: _ref2 => {
                                let {
                                    component: component
                                } = _ref2;
                                this._radios = component
                            },
                            onContentReady: e => {
                                this._fireContentReadyAction(true)
                            },
                            onItemClick: this._itemClickHandler.bind(this),
                            displayExpr: displayExpr,
                            accessKey: accessKey,
                            dataSource: this._dataSource,
                            focusStateEnabled: focusStateEnabled,
                            itemTemplate: itemTemplate,
                            keyExpr: this._getCollectionKeyExpr(),
                            noDataText: "",
                            scrollingEnabled: false,
                            selectByClick: false,
                            selectionMode: "single",
                            selectedItemKeys: this._getSelectedItemKeys(),
                            tabIndex: tabIndex
                        });
                        this._areRadiosCreated.resolve()
                    };
                    _proto2._renderSubmitElement = function() {
                        this._$submitElement = (0, _renderer.default)("<input>").attr("type", "hidden").appendTo(this.$element());
                        this._setSubmitValue()
                    };
                    _proto2._setOptionsByReference = function() {
                        _Editor.prototype._setOptionsByReference.call(this);
                        (0, _extend.extend)(this._optionsByReference, {
                            value: true
                        })
                    };
                    _proto2._setSubmitValue = function(value) {
                        var _value;
                        value = null !== (_value = value) && void 0 !== _value ? _value : this.option("value");
                        const submitValue = "this" === this.option("valueExpr") ? this._displayGetter(value) : value;
                        this._$submitElement.val(submitValue)
                    };
                    _proto2._setCollectionWidgetOption = function() {
                        this._areRadiosCreated.done(this._setWidgetOption.bind(this, "_radios", arguments))
                    };
                    _proto2._updateItemsSize = function() {
                        if ("horizontal" === this.option("layout")) {
                            this.itemElements().css("height", "auto")
                        } else {
                            const itemsCount = this.option("items").length;
                            this.itemElements().css("height", 100 / itemsCount + "%")
                        }
                    };
                    _proto2.focus = function() {
                        var _this$_radios;
                        null === (_this$_radios = this._radios) || void 0 === _this$_radios ? void 0 : _this$_radios.focus()
                    };
                    _proto2.itemElements = function() {
                        var _this$_radios2;
                        return null === (_this$_radios2 = this._radios) || void 0 === _this$_radios2 ? void 0 : _this$_radios2.itemElements()
                    };
                    return RadioGroup
                }(_editor.default);
                RadioGroup.include(_ui.default);
                (0, _component_registrator.default)("dxRadioGroup", RadioGroup);
                var _default = RadioGroup;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        36992:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/range_slider.js ***!
              \****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../events/core/events_engine */ 55994));
                var _slider = _interopRequireDefault(__webpack_require__( /*! ./slider */ 97834));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./slider/ui.slider_handle */ 6320));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);
                var _index = __webpack_require__( /*! ../events/utils/index */ 39611);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../localization/message */ 28109));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const RangeSlider = _slider.default.inherit({
                    _supportedKeys: function() {
                        const isRTL = this.option("rtlEnabled");
                        const that = this;
                        const _changeHandle = function(e, capturedHandle) {
                            if (that.option("start") === that.option("end")) {
                                that._capturedHandle = capturedHandle;
                                e.target = that._capturedHandle;
                                _events_engine.default.trigger(that._capturedHandle, "focus")
                            }
                        };
                        const _setHandleValue = function(e, step, sign) {
                            const isStart = (0, _renderer.default)(e.target).hasClass("dx-rangeslider-start-handle");
                            const valueOption = isStart ? "start" : "end";
                            let val = that.option(valueOption);
                            step = that._valueStep(step);
                            val += sign * (isRTL ? -step : step);
                            that.option(valueOption, val)
                        };
                        const moveHandleRight = function(e, step) {
                            _changeHandle(e, isRTL ? that._$handleStart : that._$handleEnd);
                            _setHandleValue(e, step, 1)
                        };
                        const moveHandleLeft = function(e, step) {
                            _changeHandle(e, isRTL ? that._$handleEnd : that._$handleStart);
                            _setHandleValue(e, step, -1)
                        };
                        return (0, _extend.extend)(this.callBase(), {
                            leftArrow: function(e) {
                                this._processKeyboardEvent(e);
                                moveHandleLeft(e, this.option("step"))
                            },
                            rightArrow: function(e) {
                                this._processKeyboardEvent(e);
                                moveHandleRight(e, this.option("step"))
                            },
                            pageUp: function(e) {
                                this._processKeyboardEvent(e);
                                moveHandleRight(e, this.option("step") * this.option("keyStep"))
                            },
                            pageDown: function(e) {
                                this._processKeyboardEvent(e);
                                moveHandleLeft(e, this.option("step") * this.option("keyStep"))
                            },
                            home: function(e) {
                                this._processKeyboardEvent(e);
                                const isStart = (0, _renderer.default)(e.target).hasClass("dx-rangeslider-start-handle");
                                const valueOption = isStart ? "start" : "end";
                                const startOption = isStart ? "min" : "start";
                                const val = this.option(startOption);
                                this.option(valueOption, val)
                            },
                            end: function(e) {
                                this._processKeyboardEvent(e);
                                const isStart = (0, _renderer.default)(e.target).hasClass("dx-rangeslider-start-handle");
                                const valueOption = isStart ? "start" : "end";
                                const endOption = isStart ? "end" : "max";
                                const val = this.option(endOption);
                                this.option(valueOption, val)
                            }
                        })
                    },
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            start: 40,
                            end: 60,
                            value: [40, 60],
                            startName: "",
                            endName: ""
                        })
                    },
                    _renderSubmitElement: function() {
                        const $element = this.$element();
                        this._$submitStartElement = (0, _renderer.default)("<input>").attr("type", "hidden").attr("name", this.option("startName")).appendTo($element);
                        this._$submitEndElement = (0, _renderer.default)("<input>").attr("type", "hidden").attr("name", this.option("endName")).appendTo($element)
                    },
                    _initOptions: function(options) {
                        this.callBase(options);
                        const initialValue = this.initialOption("value");
                        const value = this.option("value");
                        if (value[0] === initialValue[0] && value[1] === initialValue[1]) {
                            this.option("value", [this.option("start"), this.option("end")])
                        } else {
                            this.option({
                                start: value[0],
                                end: value[1]
                            })
                        }
                    },
                    _initMarkup: function() {
                        this.$element().addClass("dx-rangeslider");
                        this.callBase()
                    },
                    _renderContentImpl: function() {
                        this._callHandlerMethod("repaint");
                        this.callBase()
                    },
                    _renderHandle: function() {
                        this._$handleStart = this._renderHandleImpl(this.option("start"), this._$handleStart).addClass("dx-rangeslider-start-handle");
                        this._$handleEnd = this._renderHandleImpl(this.option("end"), this._$handleEnd).addClass("dx-rangeslider-end-handle");
                        this._updateHandleAriaLabels()
                    },
                    _startHandler: function(args) {
                        const e = args.event;
                        const $range = this._$range;
                        const rangeWidth = (0, _size.getWidth)($range);
                        const eventOffsetX = (0, _index.eventData)(e).x - this._$bar.offset().left;
                        const startHandleX = $range.position().left;
                        const endHandleX = $range.position().left + rangeWidth;
                        const rtlEnabled = this.option("rtlEnabled");
                        const startHandleIsClosest = (rtlEnabled ? -1 : 1) * ((startHandleX + endHandleX) / 2 - eventOffsetX) > 0;
                        this._capturedHandle = startHandleIsClosest ? this._$handleStart : this._$handleEnd;
                        this.callBase(args)
                    },
                    _updateHandleAriaLabels: function() {
                        this.setAria("label", _message.default.getFormatter("dxRangeSlider-ariaFrom")(this.option("dxRangeSlider-ariaFrom")), this._$handleStart);
                        this.setAria("label", _message.default.getFormatter("dxRangeSlider-ariaTill")(this.option("dxRangeSlider-ariaTill")), this._$handleEnd)
                    },
                    _activeHandle: function() {
                        return this._capturedHandle
                    },
                    _updateHandlePosition: function(e) {
                        const rtlEnabled = this.option("rtlEnabled");
                        const offsetDirection = rtlEnabled ? -1 : 1;
                        const max = this.option("max");
                        const min = this.option("min");
                        let newRatio = this._startOffset + offsetDirection * e.event.offset / this._swipePixelRatio();
                        newRatio = newRatio.toPrecision(12);
                        const newValue = newRatio * (max - min) + min;
                        this._updateSelectedRangePosition(newRatio, newRatio);
                        _ui.default.getInstance(this._activeHandle()).fitTooltipPosition;
                        this._changeValueOnSwipe(newRatio);
                        const [startValue, endValue] = this._getActualValue();
                        let $nextHandle;
                        if (startValue === endValue) {
                            if (newValue < startValue) {
                                $nextHandle = this._$handleStart
                            } else {
                                $nextHandle = this._$handleEnd
                            }
                            _events_engine.default.trigger($nextHandle, "focus");
                            if ($nextHandle && $nextHandle !== this._capturedHandle) {
                                this._updateSelectedRangePosition((startValue - min) / (max - min), (endValue - min) / (max - min));
                                this._toggleActiveState(this._activeHandle(), false);
                                this._toggleActiveState($nextHandle, true);
                                this._capturedHandle = $nextHandle
                            }
                            this._updateSelectedRangePosition(newRatio, newRatio);
                            this._changeValueOnSwipe(newRatio)
                        }
                    },
                    _updateSelectedRangePosition: function(leftRatio, rightRatio) {
                        const rtlEnabled = this.option("rtlEnabled");
                        const moveRight = this._capturedHandle === this._$handleStart && rtlEnabled || this._capturedHandle === this._$handleEnd && !rtlEnabled;
                        const prop = moveRight ? "right" : "left";
                        if (rtlEnabled ^ moveRight) {
                            this._$range.css(prop, 100 - 100 * rightRatio + "%")
                        } else {
                            this._$range.css(prop, 100 * leftRatio + "%")
                        }
                    },
                    _setValueOnSwipe: function(value) {
                        const option = this._capturedHandle === this._$handleStart ? "start" : "end";
                        let [start, end] = this._getActualValue();
                        const max = this.option("max");
                        const min = this.option("min");
                        start = Math.min(Math.max(start, min), max);
                        end = Math.min(Math.max(end, min), max);
                        if ("start" === option) {
                            start = value > end ? end : value
                        } else {
                            end = value < start ? start : value
                        }
                        if ("onHandleMove" === this.option("valueChangeMode")) {
                            this.option("value", [start, end])
                        } else {
                            this._actualValue = [start, end];
                            this._renderValue()
                        }
                    },
                    _renderValue: function() {
                        let [valStart, valEnd] = this._getActualValue();
                        const min = this.option("min");
                        const max = this.option("max");
                        const rtlEnabled = this.option("rtlEnabled");
                        valStart = Math.max(min, Math.min(valStart, max));
                        valEnd = Math.max(valStart, Math.min(valEnd, max));
                        if ("onHandleMove" === this.option("valueChangeMode")) {
                            this._setOptionWithoutOptionChange("start", valStart);
                            this._setOptionWithoutOptionChange("end", valEnd);
                            this._setOptionWithoutOptionChange("value", [valStart, valEnd])
                        }
                        this._$submitStartElement.val((0, _common.applyServerDecimalSeparator)(valStart));
                        this._$submitEndElement.val((0, _common.applyServerDecimalSeparator)(valEnd));
                        const ratio1 = max === min ? 0 : (valStart - min) / (max - min);
                        const ratio2 = max === min ? 0 : (valEnd - min) / (max - min);
                        const startOffset = parseFloat((100 * ratio1).toPrecision(12)) + "%";
                        const endOffset = parseFloat((100 * (1 - ratio2)).toPrecision(12)) + "%";
                        !this._needPreventAnimation && this._setRangeStyles({
                            right: rtlEnabled ? startOffset : endOffset,
                            left: rtlEnabled ? endOffset : startOffset
                        });
                        _ui.default.getInstance(this._$handleStart).option("value", valStart);
                        _ui.default.getInstance(this._$handleEnd).option("value", valEnd)
                    },
                    _callHandlerMethod: function(name, args) {
                        _ui.default.getInstance(this._$handleStart)[name](args);
                        _ui.default.getInstance(this._$handleEnd)[name](args)
                    },
                    _setValueOption: function() {
                        const start = this.option("start");
                        const end = this.option("end");
                        this.option("value", [start, end])
                    },
                    _rangesAreEqual: (firstRange, secondRange) => firstRange[0] === secondRange[0] && firstRange[1] === secondRange[1],
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "value": {
                                if (this._rangesAreEqual(args.value, args.previousValue)) {
                                    break
                                }
                                this._setOptionWithoutOptionChange("start", args.value[0]);
                                this._setOptionWithoutOptionChange("end", args.value[1]);
                                this._renderValue();
                                const start = this.option("start");
                                const end = this.option("end");
                                const isDirty = !this._rangesAreEqual(this._initialValue, args.value);
                                this.option("isDirty", isDirty);
                                this._createActionByOption("onValueChanged", {
                                    excludeValidators: ["disabled", "readOnly"]
                                })({
                                    start: start,
                                    end: end,
                                    value: [start, end],
                                    event: this._valueChangeEventInstance,
                                    previousValue: args.previousValue
                                });
                                this.validationRequest.fire({
                                    value: [start, end],
                                    editor: this
                                });
                                this._saveValueChangeEvent(void 0);
                                break
                            }
                            case "start":
                            case "end":
                                this._setValueOption();
                                break;
                            case "startName":
                                this._$submitStartElement.attr("name", args.value);
                                break;
                            case "endName":
                                this._$submitEndElement.attr("name", args.value);
                                break;
                            case "name":
                                break;
                            default:
                                this.callBase(args)
                        }
                    }
                });
                (0, _component_registrator.default)("dxRangeSlider", RangeSlider);
                var _default = RangeSlider;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        46743:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/resizable.js ***!
              \*************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../core/utils/size */ 58664);
                var _translator = __webpack_require__( /*! ../animation/translator */ 31648);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _dom_component = _interopRequireDefault(__webpack_require__( /*! ../core/dom_component */ 13046));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _math = __webpack_require__( /*! ../core/utils/math */ 60810);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../events/core/events_engine */ 55994));
                var _drag = __webpack_require__( /*! ../events/drag */ 23174);
                var _index = __webpack_require__( /*! ../events/utils/index */ 39611);
                var _visibility_change = __webpack_require__( /*! ../events/visibility_change */ 80506);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const DRAGSTART_START_EVENT_NAME = (0, _index.addNamespace)(_drag.start, "dxResizable");
                const DRAGSTART_EVENT_NAME = (0, _index.addNamespace)(_drag.move, "dxResizable");
                const DRAGSTART_END_EVENT_NAME = (0, _index.addNamespace)(_drag.end, "dxResizable");
                const SIDE_BORDER_WIDTH_STYLES = {
                    left: "borderLeftWidth",
                    top: "borderTopWidth",
                    right: "borderRightWidth",
                    bottom: "borderBottomWidth"
                };
                const Resizable = _dom_component.default.inherit({
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            handles: "all",
                            step: "1",
                            stepPrecision: "simple",
                            area: void 0,
                            minWidth: 30,
                            maxWidth: 1 / 0,
                            minHeight: 30,
                            maxHeight: 1 / 0,
                            onResizeStart: null,
                            onResize: null,
                            onResizeEnd: null,
                            roundStepValue: true,
                            keepAspectRatio: true
                        })
                    },
                    _init: function() {
                        this.callBase();
                        this.$element().addClass("dx-resizable")
                    },
                    _initMarkup: function() {
                        this.callBase();
                        this._renderHandles()
                    },
                    _render: function() {
                        this.callBase();
                        this._renderActions()
                    },
                    _renderActions: function() {
                        this._resizeStartAction = this._createActionByOption("onResizeStart");
                        this._resizeEndAction = this._createActionByOption("onResizeEnd");
                        this._resizeAction = this._createActionByOption("onResize")
                    },
                    _renderHandles: function() {
                        this._handles = [];
                        const handles = this.option("handles");
                        if ("none" === handles || !handles) {
                            return
                        }
                        const directions = "all" === handles ? ["top", "bottom", "left", "right"] : handles.split(" ");
                        const activeHandlesMap = {};
                        (0, _iterator.each)(directions, (index, handleName) => {
                            activeHandlesMap[handleName] = true;
                            this._renderHandle(handleName)
                        });
                        activeHandlesMap.bottom && activeHandlesMap.right && this._renderHandle("corner-bottom-right");
                        activeHandlesMap.bottom && activeHandlesMap.left && this._renderHandle("corner-bottom-left");
                        activeHandlesMap.top && activeHandlesMap.right && this._renderHandle("corner-top-right");
                        activeHandlesMap.top && activeHandlesMap.left && this._renderHandle("corner-top-left");
                        this._attachEventHandlers()
                    },
                    _renderHandle: function(handleName) {
                        const $handle = (0, _renderer.default)("<div>").addClass("dx-resizable-handle").addClass("dx-resizable-handle-" + handleName).appendTo(this.$element());
                        this._handles.push($handle)
                    },
                    _attachEventHandlers: function() {
                        if (this.option("disabled")) {
                            return
                        }
                        const handlers = {};
                        handlers[DRAGSTART_START_EVENT_NAME] = this._dragStartHandler.bind(this);
                        handlers[DRAGSTART_EVENT_NAME] = this._dragHandler.bind(this);
                        handlers[DRAGSTART_END_EVENT_NAME] = this._dragEndHandler.bind(this);
                        this._handles.forEach(handleElement => {
                            _events_engine.default.on(handleElement, handlers, {
                                direction: "both",
                                immediate: true
                            })
                        })
                    },
                    _detachEventHandlers: function() {
                        this._handles.forEach(handleElement => {
                            _events_engine.default.off(handleElement)
                        })
                    },
                    _toggleEventHandlers: function(shouldAttachEvents) {
                        shouldAttachEvents ? this._attachEventHandlers() : this._detachEventHandlers()
                    },
                    _getElementSize: function() {
                        const $element = this.$element();
                        return "border-box" === $element.css("boxSizing") ? {
                            width: (0, _size.getOuterWidth)($element),
                            height: (0, _size.getOuterHeight)($element)
                        } : {
                            width: (0, _size.getWidth)($element),
                            height: (0, _size.getHeight)($element)
                        }
                    },
                    _dragStartHandler: function(e) {
                        const $element = this.$element();
                        if ($element.is(".dx-state-disabled, .dx-state-disabled *")) {
                            e.cancel = true;
                            return
                        }
                        this._toggleResizingClass(true);
                        this._movingSides = this._getMovingSides(e);
                        this._elementLocation = (0, _translator.locate)($element);
                        this._elementSize = this._getElementSize();
                        this._renderDragOffsets(e);
                        this._resizeStartAction({
                            event: e,
                            width: this._elementSize.width,
                            height: this._elementSize.height,
                            handles: this._movingSides
                        });
                        e.targetElements = null
                    },
                    _toggleResizingClass: function(value) {
                        this.$element().toggleClass("dx-resizable-resizing", value)
                    },
                    _renderDragOffsets: function(e) {
                        const area = this._getArea();
                        if (!area) {
                            return
                        }
                        const $handle = (0, _renderer.default)(e.target).closest(".dx-resizable-handle");
                        const handleWidth = (0, _size.getOuterWidth)($handle);
                        const handleHeight = (0, _size.getOuterHeight)($handle);
                        const handleOffset = $handle.offset();
                        const areaOffset = area.offset;
                        const scrollOffset = this._getAreaScrollOffset();
                        e.maxLeftOffset = this._leftMaxOffset = handleOffset.left - areaOffset.left - scrollOffset.scrollX;
                        e.maxRightOffset = this._rightMaxOffset = areaOffset.left + area.width - handleOffset.left - handleWidth + scrollOffset.scrollX;
                        e.maxTopOffset = this._topMaxOffset = handleOffset.top - areaOffset.top - scrollOffset.scrollY;
                        e.maxBottomOffset = this._bottomMaxOffset = areaOffset.top + area.height - handleOffset.top - handleHeight + scrollOffset.scrollY
                    },
                    _getBorderWidth: function($element, direction) {
                        if ((0, _type.isWindow)($element.get(0))) {
                            return 0
                        }
                        const borderWidth = $element.css(SIDE_BORDER_WIDTH_STYLES[direction]);
                        return parseInt(borderWidth) || 0
                    },
                    _proportionate: function(direction, value) {
                        const size = this._elementSize;
                        const factor = "x" === direction ? size.width / size.height : size.height / size.width;
                        return value * factor
                    },
                    _getProportionalDelta: function(_ref) {
                        let {
                            x: x,
                            y: y
                        } = _ref;
                        const proportionalY = this._proportionate("y", x);
                        if (proportionalY >= y) {
                            return {
                                x: x,
                                y: proportionalY
                            }
                        }
                        const proportionalX = this._proportionate("x", y);
                        if (proportionalX >= x) {
                            return {
                                x: proportionalX,
                                y: y
                            }
                        }
                        return {
                            x: 0,
                            y: 0
                        }
                    },
                    _getDirectionName: function(axis) {
                        const sides = this._movingSides;
                        if ("x" === axis) {
                            return sides.left ? "left" : "right"
                        } else {
                            return sides.top ? "top" : "bottom"
                        }
                    },
                    _fitIntoArea: function(axis, value) {
                        var _this;
                        const directionName = this._getDirectionName(axis);
                        return Math.min(value, null !== (_this = this["_".concat(directionName, "MaxOffset")]) && void 0 !== _this ? _this : 1 / 0)
                    },
                    _fitDeltaProportionally: function(delta) {
                        let fittedDelta = _extends({}, delta);
                        const size = this._elementSize;
                        const {
                            minWidth: minWidth,
                            minHeight: minHeight,
                            maxWidth: maxWidth,
                            maxHeight: maxHeight
                        } = this.option();
                        const getWidth = () => size.width + fittedDelta.x;
                        const getHeight = () => size.height + fittedDelta.y;
                        const isInArea = axis => fittedDelta[axis] === this._fitIntoArea(axis, fittedDelta[axis]);
                        const isFittedX = () => (0, _math.inRange)(getWidth(), minWidth, maxWidth) && isInArea("x");
                        const isFittedY = () => (0, _math.inRange)(getHeight(), minHeight, maxHeight) && isInArea("y");
                        if (!isFittedX()) {
                            const x = this._fitIntoArea("x", (0, _math.fitIntoRange)(getWidth(), minWidth, maxWidth) - size.width);
                            fittedDelta = {
                                x: x,
                                y: this._proportionate("y", x)
                            }
                        }
                        if (!isFittedY()) {
                            const y = this._fitIntoArea("y", (0, _math.fitIntoRange)(getHeight(), minHeight, maxHeight) - size.height);
                            fittedDelta = {
                                x: this._proportionate("x", y),
                                y: y
                            }
                        }
                        return isFittedX() && isFittedY() ? fittedDelta : {
                            x: 0,
                            y: 0
                        }
                    },
                    _fitDelta: function(_ref2) {
                        let {
                            x: x,
                            y: y
                        } = _ref2;
                        const size = this._elementSize;
                        const {
                            minWidth: minWidth,
                            minHeight: minHeight,
                            maxWidth: maxWidth,
                            maxHeight: maxHeight
                        } = this.option();
                        return {
                            x: (0, _math.fitIntoRange)(size.width + x, minWidth, maxWidth) - size.width,
                            y: (0, _math.fitIntoRange)(size.height + y, minHeight, maxHeight) - size.height
                        }
                    },
                    _getDeltaByOffset: function(offset) {
                        const sides = this._movingSides;
                        const shouldKeepAspectRatio = this._isCornerHandler(sides) && this.option("keepAspectRatio");
                        let delta = {
                            x: offset.x * (sides.left ? -1 : 1),
                            y: offset.y * (sides.top ? -1 : 1)
                        };
                        if (shouldKeepAspectRatio) {
                            const proportionalDelta = this._getProportionalDelta(delta);
                            const fittedProportionalDelta = this._fitDeltaProportionally(proportionalDelta);
                            delta = fittedProportionalDelta
                        } else {
                            const fittedDelta = this._fitDelta(delta);
                            const roundedFittedDelta = this._roundByStep(fittedDelta);
                            delta = roundedFittedDelta
                        }
                        return delta
                    },
                    _updatePosition: function(delta, _ref3) {
                        let {
                            width: width,
                            height: height
                        } = _ref3;
                        const location = this._elementLocation;
                        const sides = this._movingSides;
                        const $element = this.$element();
                        const elementRect = this._getElementSize();
                        const offsetTop = delta.y * (sides.top ? -1 : 1) - ((elementRect.height || height) - height);
                        const offsetLeft = delta.x * (sides.left ? -1 : 1) - ((elementRect.width || width) - width);
                        (0, _translator.move)($element, {
                            top: location.top + (sides.top ? offsetTop : 0),
                            left: location.left + (sides.left ? offsetLeft : 0)
                        })
                    },
                    _dragHandler: function(e) {
                        const offset = this._getOffset(e);
                        const delta = this._getDeltaByOffset(offset);
                        const dimensions = this._updateDimensions(delta);
                        this._updatePosition(delta, dimensions);
                        this._triggerResizeAction(e, dimensions)
                    },
                    _updateDimensions: function(delta) {
                        const isAbsoluteSize = size => "px" === size.substring(size.length - 2);
                        const isStepPrecisionStrict = "strict" === this.option("stepPrecision");
                        const size = this._elementSize;
                        const width = size.width + delta.x;
                        const height = size.height + delta.y;
                        const elementStyle = this.$element().get(0).style;
                        const shouldRenderWidth = delta.x || isStepPrecisionStrict || isAbsoluteSize(elementStyle.width);
                        const shouldRenderHeight = delta.y || isStepPrecisionStrict || isAbsoluteSize(elementStyle.height);
                        if (shouldRenderWidth) {
                            this.option({
                                width: width
                            })
                        }
                        if (shouldRenderHeight) {
                            this.option({
                                height: height
                            })
                        }
                        return {
                            width: shouldRenderWidth ? width : size.width,
                            height: shouldRenderHeight ? height : size.height
                        }
                    },
                    _triggerResizeAction: function(e, _ref4) {
                        let {
                            width: width,
                            height: height
                        } = _ref4;
                        this._resizeAction({
                            event: e,
                            width: this.option("width") || width,
                            height: this.option("height") || height,
                            handles: this._movingSides
                        });
                        (0, _visibility_change.triggerResizeEvent)(this.$element())
                    },
                    _isCornerHandler: sides => 0 === Object.values(sides).reduce((xor, value) => xor ^ value, 0),
                    _getOffset: function(e) {
                        const offset = e.offset;
                        const sides = this._movingSides;
                        if (!sides.left && !sides.right) {
                            offset.x = 0
                        }
                        if (!sides.top && !sides.bottom) {
                            offset.y = 0
                        }
                        return offset
                    },
                    _roundByStep: function(delta) {
                        return "strict" === this.option("stepPrecision") ? this._roundStrict(delta) : this._roundNotStrict(delta)
                    },
                    _getSteps: function() {
                        return (0, _common.pairToObject)(this.option("step"), !this.option("roundStepValue"))
                    },
                    _roundNotStrict: function(delta) {
                        const steps = this._getSteps();
                        return {
                            x: delta.x - delta.x % steps.h,
                            y: delta.y - delta.y % steps.v
                        }
                    },
                    _roundStrict: function(delta) {
                        const sides = this._movingSides;
                        const offset = {
                            x: delta.x * (sides.left ? -1 : 1),
                            y: delta.y * (sides.top ? -1 : 1)
                        };
                        const steps = this._getSteps();
                        const location = this._elementLocation;
                        const size = this._elementSize;
                        const xPos = sides.left ? location.left : location.left + size.width;
                        const yPos = sides.top ? location.top : location.top + size.height;
                        const newXShift = (xPos + offset.x) % steps.h;
                        const newYShift = (yPos + offset.y) % steps.v;
                        const sign = Math.sign || (x => {
                            x = +x;
                            if (0 === x || isNaN(x)) {
                                return x
                            }
                            return x > 0 ? 1 : -1
                        });
                        const separatorOffset = (steps, offset) => (1 + .2 * sign(offset)) % 1 * steps;
                        const isSmallOffset = (offset, steps) => Math.abs(offset) < .2 * steps;
                        let newOffsetX = offset.x - newXShift;
                        let newOffsetY = offset.y - newYShift;
                        if (newXShift > separatorOffset(steps.h, offset.x)) {
                            newOffsetX += steps.h
                        }
                        if (newYShift > separatorOffset(steps.v, offset.y)) {
                            newOffsetY += steps.v
                        }
                        const roundedOffset_x = (sides.left || sides.right) && !isSmallOffset(offset.x, steps.h) ? newOffsetX : 0,
                            roundedOffset_y = (sides.top || sides.bottom) && !isSmallOffset(offset.y, steps.v) ? newOffsetY : 0;
                        return {
                            x: roundedOffset_x * (sides.left ? -1 : 1),
                            y: roundedOffset_y * (sides.top ? -1 : 1)
                        }
                    },
                    _getMovingSides: function(e) {
                        const $target = (0, _renderer.default)(e.target);
                        const hasCornerTopLeftClass = $target.hasClass("dx-resizable-handle-corner-top-left");
                        const hasCornerTopRightClass = $target.hasClass("dx-resizable-handle-corner-top-right");
                        const hasCornerBottomLeftClass = $target.hasClass("dx-resizable-handle-corner-bottom-left");
                        const hasCornerBottomRightClass = $target.hasClass("dx-resizable-handle-corner-bottom-right");
                        return {
                            top: $target.hasClass("dx-resizable-handle-top") || hasCornerTopLeftClass || hasCornerTopRightClass,
                            left: $target.hasClass("dx-resizable-handle-left") || hasCornerTopLeftClass || hasCornerBottomLeftClass,
                            bottom: $target.hasClass("dx-resizable-handle-bottom") || hasCornerBottomLeftClass || hasCornerBottomRightClass,
                            right: $target.hasClass("dx-resizable-handle-right") || hasCornerTopRightClass || hasCornerBottomRightClass
                        }
                    },
                    _getArea: function() {
                        let area = this.option("area");
                        if ((0, _type.isFunction)(area)) {
                            area = area.call(this)
                        }
                        if ((0, _type.isPlainObject)(area)) {
                            return this._getAreaFromObject(area)
                        }
                        return this._getAreaFromElement(area)
                    },
                    _getAreaScrollOffset: function() {
                        const area = this.option("area");
                        const isElement = !(0, _type.isFunction)(area) && !(0, _type.isPlainObject)(area);
                        const scrollOffset = {
                            scrollY: 0,
                            scrollX: 0
                        };
                        if (isElement) {
                            const areaElement = (0, _renderer.default)(area)[0];
                            if ((0, _type.isWindow)(areaElement)) {
                                scrollOffset.scrollX = areaElement.pageXOffset;
                                scrollOffset.scrollY = areaElement.pageYOffset
                            }
                        }
                        return scrollOffset
                    },
                    _getAreaFromObject: function(area) {
                        const result = {
                            width: area.right - area.left,
                            height: area.bottom - area.top,
                            offset: {
                                left: area.left,
                                top: area.top
                            }
                        };
                        this._correctAreaGeometry(result);
                        return result
                    },
                    _getAreaFromElement: function(area) {
                        const $area = (0, _renderer.default)(area);
                        let result;
                        if ($area.length) {
                            result = {
                                width: (0, _size.getInnerWidth)($area),
                                height: (0, _size.getInnerHeight)($area),
                                offset: (0, _extend.extend)({
                                    top: 0,
                                    left: 0
                                }, (0, _type.isWindow)($area[0]) ? {} : $area.offset())
                            };
                            this._correctAreaGeometry(result, $area)
                        }
                        return result
                    },
                    _correctAreaGeometry: function(result, $area) {
                        const areaBorderLeft = $area ? this._getBorderWidth($area, "left") : 0;
                        const areaBorderTop = $area ? this._getBorderWidth($area, "top") : 0;
                        result.offset.left += areaBorderLeft + this._getBorderWidth(this.$element(), "left");
                        result.offset.top += areaBorderTop + this._getBorderWidth(this.$element(), "top");
                        result.width -= (0, _size.getOuterWidth)(this.$element()) - (0, _size.getInnerWidth)(this.$element());
                        result.height -= (0, _size.getOuterHeight)(this.$element()) - (0, _size.getInnerHeight)(this.$element())
                    },
                    _dragEndHandler: function(e) {
                        const $element = this.$element();
                        this._resizeEndAction({
                            event: e,
                            width: (0, _size.getOuterWidth)($element),
                            height: (0, _size.getOuterHeight)($element),
                            handles: this._movingSides
                        });
                        this._toggleResizingClass(false)
                    },
                    _renderWidth: function(width) {
                        this.option("width", (0, _math.fitIntoRange)(width, this.option("minWidth"), this.option("maxWidth")))
                    },
                    _renderHeight: function(height) {
                        this.option("height", (0, _math.fitIntoRange)(height, this.option("minHeight"), this.option("maxHeight")))
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "disabled":
                                this._toggleEventHandlers(!args.value);
                                this.callBase(args);
                                break;
                            case "handles":
                                this._invalidate();
                                break;
                            case "minWidth":
                            case "maxWidth":
                                (0, _window.hasWindow)() && this._renderWidth((0, _size.getOuterWidth)(this.$element()));
                                break;
                            case "minHeight":
                            case "maxHeight":
                                (0, _window.hasWindow)() && this._renderHeight((0, _size.getOuterHeight)(this.$element()));
                                break;
                            case "onResize":
                            case "onResizeStart":
                            case "onResizeEnd":
                                this._renderActions();
                                break;
                            case "area":
                            case "stepPrecision":
                            case "step":
                            case "roundStepValue":
                            case "keepAspectRatio":
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _clean: function() {
                        this.$element().find(".dx-resizable-handle").remove()
                    },
                    _useTemplates: function() {
                        return false
                    }
                });
                (0, _component_registrator.default)("dxResizable", Resizable);
                var _default = Resizable;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        21643:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/responsive_box.js ***!
              \******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./widget/ui.errors */ 96688));
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _box = _interopRequireDefault(__webpack_require__( /*! ./box */ 55551));
                var _uiCollection_widget = _interopRequireDefault(__webpack_require__( /*! ./collection/ui.collection_widget.edit */ 11050));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const ResponsiveBox = _uiCollection_widget.default.inherit({
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            rows: [],
                            cols: [],
                            screenByWidth: null,
                            singleColumnScreen: "",
                            height: "100%",
                            width: "100%",
                            activeStateEnabled: false,
                            focusStateEnabled: false,
                            onItemStateChanged: void 0,
                            onLayoutChanged: null,
                            currentScreenFactor: void 0
                        })
                    },
                    _init: function() {
                        if (!this.option("screenByWidth")) {
                            this._options.silent("screenByWidth", _window.defaultScreenFactorFunc)
                        }
                        this.callBase();
                        this._initLayoutChangedAction()
                    },
                    _initLayoutChangedAction: function() {
                        this._layoutChangedAction = this._createActionByOption("onLayoutChanged", {
                            excludeValidators: ["disabled", "readonly"]
                        })
                    },
                    _itemClass: function() {
                        return "dx-box-item"
                    },
                    _itemDataKey: function() {
                        return "dxBoxItemData"
                    },
                    _initMarkup: function() {
                        this.callBase();
                        this.$element().addClass("dx-responsivebox")
                    },
                    _renderItems: function() {
                        this._setScreenSize();
                        this._screenItems = this._itemsByScreen();
                        this._prepareGrid();
                        this._spreadItems();
                        this._layoutItems();
                        this._linkNodeToItem()
                    },
                    _itemOptionChanged: function(item) {
                        const $item = this._findItemElementByItem(item);
                        if (!$item.length) {
                            return
                        }
                        this._refreshItem($item, item);
                        this._clearItemNodeTemplates();
                        this._update(true)
                    },
                    _setScreenSize: function() {
                        const currentScreen = this._getCurrentScreen();
                        this._removeScreenSizeClass();
                        this.$element().addClass("dx-responsivebox-screen-" + currentScreen);
                        this.option("currentScreenFactor", currentScreen)
                    },
                    _removeScreenSizeClass: function() {
                        const currentScreenFactor = this.option("currentScreenFactor");
                        currentScreenFactor && this.$element().removeClass("dx-responsivebox-screen-" + currentScreenFactor)
                    },
                    _prepareGrid: function() {
                        const grid = this._grid = [];
                        this._prepareRowsAndCols();
                        (0, _iterator.each)(this._rows, function() {
                            const row = [];
                            grid.push(row);
                            (0, _iterator.each)(this._cols, function() {
                                row.push(this._createEmptyCell())
                            }.bind(this))
                        }.bind(this))
                    },
                    getSingleColumnRows: function() {
                        const rows = this.option("rows");
                        const screenItemsLength = this._screenItems.length;
                        if (rows.length) {
                            const filteredRows = this._filterByScreen(rows);
                            const result = [];
                            for (let i = 0; i < screenItemsLength; i++) {
                                const sizeConfig = this._defaultSizeConfig();
                                if (i < filteredRows.length && (0, _type.isDefined)(filteredRows[i].shrink)) {
                                    sizeConfig.shrink = filteredRows[i].shrink
                                }
                                result.push(sizeConfig)
                            }
                            return result
                        } else {
                            return this._defaultSizeConfig(screenItemsLength)
                        }
                    },
                    _prepareRowsAndCols: function() {
                        if (this._isSingleColumnScreen()) {
                            this._prepareSingleColumnScreenItems();
                            this._rows = this.getSingleColumnRows();
                            this._cols = this._defaultSizeConfig(1)
                        } else {
                            this._rows = this._sizesByScreen(this.option("rows"));
                            this._cols = this._sizesByScreen(this.option("cols"))
                        }
                    },
                    _isSingleColumnScreen: function() {
                        return this._screenRegExp().test(this.option("singleColumnScreen")) || !this.option("rows").length || !this.option("cols").length
                    },
                    _prepareSingleColumnScreenItems: function() {
                        this._screenItems.sort((function(item1, item2) {
                            return item1.location.row - item2.location.row || item1.location.col - item2.location.col
                        }));
                        (0, _iterator.each)(this._screenItems, (function(index, item) {
                            (0, _extend.extend)(item.location, {
                                row: index,
                                col: 0,
                                rowspan: 1,
                                colspan: 1
                            })
                        }))
                    },
                    _sizesByScreen: function(sizeConfigs) {
                        return (0, _iterator.map)(this._filterByScreen(sizeConfigs), function(sizeConfig) {
                            return (0, _extend.extend)(this._defaultSizeConfig(), sizeConfig)
                        }.bind(this))
                    },
                    _createDefaultSizeConfig: function() {
                        return {
                            ratio: 1,
                            baseSize: 0,
                            minSize: 0,
                            maxSize: 0
                        }
                    },
                    _defaultSizeConfig: function(size) {
                        const defaultSizeConfig = this._createDefaultSizeConfig();
                        if (!arguments.length) {
                            return defaultSizeConfig
                        }
                        const result = [];
                        for (let i = 0; i < size; i++) {
                            result.push(defaultSizeConfig)
                        }
                        return result
                    },
                    _filterByScreen: function(items) {
                        const screenRegExp = this._screenRegExp();
                        return (0, _common.grep)(items, (function(item) {
                            return !item.screen || screenRegExp.test(item.screen)
                        }))
                    },
                    _screenRegExp: function() {
                        const screen = this._getCurrentScreen();
                        return new RegExp("(^|\\s)" + screen + "($|\\s)", "i")
                    },
                    _getCurrentScreen: function() {
                        const width = this._screenWidth();
                        return this.option("screenByWidth")(width)
                    },
                    _screenWidth: function() {
                        return (0, _window.hasWindow)() ? (0, _size.getWidth)((0, _window.getWindow)()) : 1920
                    },
                    _createEmptyCell: function() {
                        return {
                            item: {},
                            location: {
                                colspan: 1,
                                rowspan: 1
                            }
                        }
                    },
                    _spreadItems: function() {
                        (0, _iterator.each)(this._screenItems, function(_, itemInfo) {
                            const location = itemInfo.location || {};
                            const itemCol = location.col;
                            const itemRow = location.row;
                            const row = this._grid[itemRow];
                            const itemCell = row && row[itemCol];
                            this._occupyCells(itemCell, itemInfo)
                        }.bind(this))
                    },
                    _itemsByScreen: function() {
                        return this.option("items").reduce((result, item) => {
                            let locations = item.location || {};
                            locations = (0, _type.isPlainObject)(locations) ? [locations] : locations;
                            this._filterByScreen(locations).forEach(location => {
                                result.push({
                                    item: item,
                                    location: (0, _extend.extend)({
                                        rowspan: 1,
                                        colspan: 1
                                    }, location)
                                })
                            });
                            return result
                        }, [])
                    },
                    _occupyCells: function(itemCell, itemInfo) {
                        if (!itemCell || this._isItemCellOccupied(itemCell, itemInfo)) {
                            return
                        }(0, _extend.extend)(itemCell, itemInfo);
                        this._markSpanningCell(itemCell)
                    },
                    _isItemCellOccupied: function(itemCell, itemInfo) {
                        if (!(0, _type.isEmptyObject)(itemCell.item)) {
                            return true
                        }
                        let result = false;
                        this._loopOverSpanning(itemInfo.location, (function(cell) {
                            result = result || !(0, _type.isEmptyObject)(cell.item)
                        }));
                        return result
                    },
                    _loopOverSpanning: function(location, callback) {
                        const rowEnd = location.row + location.rowspan - 1;
                        const colEnd = location.col + location.colspan - 1;
                        const boundRowEnd = Math.min(rowEnd, this._rows.length - 1);
                        const boundColEnd = Math.min(colEnd, this._cols.length - 1);
                        location.rowspan -= rowEnd - boundRowEnd;
                        location.colspan -= colEnd - boundColEnd;
                        for (let rowIndex = location.row; rowIndex <= boundRowEnd; rowIndex++) {
                            for (let colIndex = location.col; colIndex <= boundColEnd; colIndex++) {
                                if (rowIndex !== location.row || colIndex !== location.col) {
                                    callback(this._grid[rowIndex][colIndex])
                                }
                            }
                        }
                    },
                    _markSpanningCell: function(itemCell) {
                        this._loopOverSpanning(itemCell.location, (function(cell) {
                            (0, _extend.extend)(cell, {
                                item: itemCell.item,
                                spanningCell: itemCell
                            })
                        }))
                    },
                    _linkNodeToItem: function() {
                        (0, _iterator.each)(this._itemElements(), (function(_, itemNode) {
                            const $item = (0, _renderer.default)(itemNode);
                            const item = $item.data("dxBoxItemData");
                            if (!item.box) {
                                item.node = $item.children()
                            }
                        }))
                    },
                    _layoutItems: function() {
                        const rowsCount = this._grid.length;
                        const colsCount = rowsCount && this._grid[0].length;
                        if (!rowsCount && !colsCount) {
                            return
                        }
                        const result = this._layoutBlock({
                            direction: "col",
                            row: {
                                start: 0,
                                end: rowsCount - 1
                            },
                            col: {
                                start: 0,
                                end: colsCount - 1
                            }
                        });
                        const rootBox = this._prepareBoxConfig(result.box || {
                            direction: "row",
                            items: [(0, _extend.extend)(result, {
                                ratio: 1
                            })]
                        });
                        (0, _extend.extend)(rootBox, this._rootBoxConfig(rootBox.items));
                        this._$root = (0, _renderer.default)("<div>").appendTo(this._itemContainer());
                        this._createComponent(this._$root, _box.default, rootBox)
                    },
                    _rootBoxConfig: function(items) {
                        const rootItems = (0, _iterator.each)(items, function(index, item) {
                            this._needApplyAutoBaseSize(item) && (0, _extend.extend)(item, {
                                baseSize: "auto"
                            })
                        }.bind(this));
                        return {
                            width: "100%",
                            height: "100%",
                            items: rootItems,
                            itemTemplate: this._getTemplateByOption("itemTemplate"),
                            itemHoldTimeout: this.option("itemHoldTimeout"),
                            onItemHold: this._createActionByOption("onItemHold"),
                            onItemClick: this._createActionByOption("onItemClick"),
                            onItemContextMenu: this._createActionByOption("onItemContextMenu"),
                            onItemRendered: this._createActionByOption("onItemRendered")
                        }
                    },
                    _needApplyAutoBaseSize: function(item) {
                        return !item.baseSize && (!item.minSize || "auto" === item.minSize) && (!item.maxSize || "auto" === item.maxSize)
                    },
                    _prepareBoxConfig: function(config) {
                        return (0, _extend.extend)(config || {}, {
                            crossAlign: "stretch",
                            onItemStateChanged: this.option("onItemStateChanged")
                        })
                    },
                    _layoutBlock: function(options) {
                        if (this._isSingleItem(options)) {
                            return this._itemByCell(options.row.start, options.col.start)
                        }
                        return this._layoutDirection(options)
                    },
                    _isSingleItem: function(options) {
                        const firstCellLocation = this._grid[options.row.start][options.col.start].location;
                        const isItemRowSpanned = options.row.end - options.row.start === firstCellLocation.rowspan - 1;
                        const isItemColSpanned = options.col.end - options.col.start === firstCellLocation.colspan - 1;
                        return isItemRowSpanned && isItemColSpanned
                    },
                    _itemByCell: function(rowIndex, colIndex) {
                        const itemCell = this._grid[rowIndex][colIndex];
                        return itemCell.spanningCell ? null : itemCell.item
                    },
                    _layoutDirection: function(options) {
                        const items = [];
                        const direction = options.direction;
                        const crossDirection = this._crossDirection(direction);
                        let block;
                        while (block = this._nextBlock(options)) {
                            if (this._isBlockIndivisible(options.prevBlockOptions, block)) {
                                throw _ui.default.Error("E1025")
                            }
                            const item = this._layoutBlock({
                                direction: crossDirection,
                                row: block.row,
                                col: block.col,
                                prevBlockOptions: options
                            });
                            if (item) {
                                (0, _extend.extend)(item, this._blockSize(block, crossDirection));
                                items.push(item)
                            }
                            options[crossDirection].start = block[crossDirection].end + 1
                        }
                        return {
                            box: this._prepareBoxConfig({
                                direction: direction,
                                items: items
                            })
                        }
                    },
                    _isBlockIndivisible: function(options, block) {
                        return options && options.col.start === block.col.start && options.col.end === block.col.end && options.row.start === block.row.start && options.row.end === block.row.end
                    },
                    _crossDirection: function(direction) {
                        return "col" === direction ? "row" : "col"
                    },
                    _nextBlock: function(options) {
                        const direction = options.direction;
                        const crossDirection = this._crossDirection(direction);
                        const startIndex = options[direction].start;
                        const endIndex = options[direction].end;
                        const crossStartIndex = options[crossDirection].start;
                        if (crossStartIndex > options[crossDirection].end) {
                            return null
                        }
                        let crossSpan = 1;
                        for (let crossIndex = crossStartIndex; crossIndex < crossStartIndex + crossSpan; crossIndex++) {
                            let lineCrossSpan = 1;
                            for (let index = startIndex; index <= endIndex; index++) {
                                const cell = this._cellByDirection(direction, index, crossIndex);
                                lineCrossSpan = Math.max(lineCrossSpan, cell.location[crossDirection + "span"])
                            }
                            const lineCrossEndIndex = crossIndex + lineCrossSpan;
                            const crossEndIndex = crossStartIndex + crossSpan;
                            if (lineCrossEndIndex > crossEndIndex) {
                                crossSpan += lineCrossEndIndex - crossEndIndex
                            }
                        }
                        const result = {};
                        result[direction] = {
                            start: startIndex,
                            end: endIndex
                        };
                        result[crossDirection] = {
                            start: crossStartIndex,
                            end: crossStartIndex + crossSpan - 1
                        };
                        return result
                    },
                    _cellByDirection: function(direction, index, crossIndex) {
                        return "col" === direction ? this._grid[crossIndex][index] : this._grid[index][crossIndex]
                    },
                    _blockSize: function(block, direction) {
                        const defaultMinSize = "row" === direction ? "auto" : 0;
                        const sizeConfigs = "row" === direction ? this._rows : this._cols;
                        const result = (0, _extend.extend)(this._createDefaultSizeConfig(), {
                            ratio: 0
                        });
                        for (let index = block[direction].start; index <= block[direction].end; index++) {
                            const sizeConfig = sizeConfigs[index];
                            result.ratio += sizeConfig.ratio;
                            result.baseSize += sizeConfig.baseSize;
                            result.minSize += sizeConfig.minSize;
                            result.maxSize += sizeConfig.maxSize;
                            if ((0, _type.isDefined)(sizeConfig.shrink)) {
                                result.shrink = sizeConfig.shrink
                            }
                        }
                        result.minSize = result.minSize ? result.minSize : defaultMinSize;
                        result.maxSize = result.maxSize ? result.maxSize : "auto";
                        this._isSingleColumnScreen() && (result.baseSize = "auto");
                        return result
                    },
                    _update: function(forceRemoveRoot) {
                        const $existingRoot = this._$root;
                        this._renderItems();
                        if ($existingRoot) {
                            if (forceRemoveRoot) {
                                $existingRoot.remove()
                            } else {
                                $existingRoot.detach();
                                this._saveAssistantRoot($existingRoot)
                            }
                        }
                        this._layoutChangedAction()
                    },
                    _saveAssistantRoot: function($root) {
                        this._assistantRoots = this._assistantRoots || [];
                        this._assistantRoots.push($root)
                    },
                    _dispose: function() {
                        this._clearItemNodeTemplates();
                        this._cleanUnusedRoots();
                        this.callBase.apply(this, arguments)
                    },
                    _cleanUnusedRoots: function() {
                        if (!this._assistantRoots) {
                            return
                        }(0, _iterator.each)(this._assistantRoots, (function(_, item) {
                            (0, _renderer.default)(item).remove()
                        }))
                    },
                    _clearItemNodeTemplates: function() {
                        (0, _iterator.each)(this.option("items"), (function() {
                            delete this.node
                        }))
                    },
                    _attachClickEvent: _common.noop,
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "rows":
                            case "cols":
                            case "screenByWidth":
                            case "singleColumnScreen":
                                this._clearItemNodeTemplates();
                                this._invalidate();
                                break;
                            case "width":
                            case "height":
                                this.callBase(args);
                                this._update();
                                break;
                            case "onLayoutChanged":
                                this._initLayoutChangedAction();
                                break;
                            case "itemTemplate":
                                this._clearItemNodeTemplates();
                                this.callBase(args);
                                break;
                            case "currentScreenFactor":
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _dimensionChanged: function() {
                        if (this._getCurrentScreen() !== this.option("currentScreenFactor")) {
                            this._update()
                        }
                    },
                    repaint: function() {
                        this._update()
                    }
                });
                (0, _component_registrator.default)("dxResponsiveBox", ResponsiveBox);
                var _default = ResponsiveBox;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        9508:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/scheduler.js ***!
              \*************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _ui = (obj = __webpack_require__( /*! ./scheduler/ui.scheduler */ 98230), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _ui.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        98230:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/scheduler/ui.scheduler.js ***!
              \**************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_scheduler = (obj = __webpack_require__( /*! ../../__internal/scheduler/m_scheduler */ 97468), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _m_scheduler.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        32511:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/scheduler/utils.timeZone.js ***!
              \****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_utils_time_zone = (obj = __webpack_require__( /*! ../../__internal/scheduler/m_utils_time_zone */ 57880), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _m_utils_time_zone.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        4741:
            /*!***************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/scroll_view.js ***!
              \***************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _ui = (obj = __webpack_require__( /*! ./scroll_view/ui.scroll_view */ 3164), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _ui.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        6866:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/scroll_view/animator.js ***!
              \************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _class = (obj = __webpack_require__( /*! ../../core/class */ 38377), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _frame = __webpack_require__( /*! ../../animation/frame */ 90057);
                const abstract = _class.default.abstract;
                const Animator = _class.default.inherit({
                    ctor: function() {
                        this._finished = true;
                        this._stopped = false;
                        this._proxiedStepCore = this._stepCore.bind(this)
                    },
                    start: function() {
                        this._stopped = false;
                        this._finished = false;
                        this._stepCore()
                    },
                    stop: function() {
                        this._stopped = true;
                        (0, _frame.cancelAnimationFrame)(this._stepAnimationFrame)
                    },
                    _stepCore: function() {
                        if (this._isStopped()) {
                            this._stop();
                            return
                        }
                        if (this._isFinished()) {
                            this._finished = true;
                            this._complete();
                            return
                        }
                        this._step();
                        this._stepAnimationFrame = (0, _frame.requestAnimationFrame)(this._proxiedStepCore)
                    },
                    _step: abstract,
                    _isFinished: _common.noop,
                    _stop: _common.noop,
                    _complete: _common.noop,
                    _isStopped: function() {
                        return this._stopped
                    },
                    inProgress: function() {
                        return !(this._stopped || this._finished)
                    }
                });
                var _default = Animator;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        3164:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/scroll_view/ui.scroll_view.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _element = __webpack_require__( /*! ../../core/element */ 6415);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _uiScroll_viewNative = _interopRequireDefault(__webpack_require__( /*! ./ui.scroll_view.native.pull_down */ 27765));
                var _uiScroll_viewNative2 = _interopRequireDefault(__webpack_require__( /*! ./ui.scroll_view.native.swipe_down */ 90778));
                var _uiScroll_view = _interopRequireDefault(__webpack_require__( /*! ./ui.scroll_view.simulated */ 91616));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./ui.scrollable */ 41183));
                var _load_indicator = _interopRequireDefault(__webpack_require__( /*! ../load_indicator */ 2492));
                var _themes = __webpack_require__( /*! ./../themes */ 75811);
                var _load_panel = _interopRequireDefault(__webpack_require__( /*! ../load_panel */ 97218));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const refreshStrategies = {
                    pullDown: _uiScroll_viewNative.default,
                    swipeDown: _uiScroll_viewNative2.default,
                    simulated: _uiScroll_view.default
                };
                const isServerSide = !(0, _window.hasWindow)();
                const scrollViewServerConfig = {
                    finishLoading: _common.noop,
                    release: _common.noop,
                    refresh: _common.noop,
                    scrollOffset: () => ({
                        top: 0,
                        left: 0
                    }),
                    _optionChanged: function(args) {
                        if ("onUpdated" !== args.name) {
                            return this.callBase.apply(this, arguments)
                        }
                    }
                };
                const ScrollView = _ui.default.inherit(isServerSide ? scrollViewServerConfig : {
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            pullingDownText: _message.default.format("dxScrollView-pullingDownText"),
                            pulledDownText: _message.default.format("dxScrollView-pulledDownText"),
                            refreshingText: _message.default.format("dxScrollView-refreshingText"),
                            reachBottomText: _message.default.format("dxScrollView-reachBottomText"),
                            onPullDown: null,
                            onReachBottom: null,
                            refreshStrategy: "pullDown"
                        })
                    },
                    _defaultOptionsRules: function() {
                        return this.callBase().concat([{
                            device: function() {
                                const realDevice = _devices.default.real();
                                return "android" === realDevice.platform
                            },
                            options: {
                                refreshStrategy: "swipeDown"
                            }
                        }, {
                            device: function() {
                                return (0, _themes.isMaterialBased)()
                            },
                            options: {
                                pullingDownText: "",
                                pulledDownText: "",
                                refreshingText: "",
                                reachBottomText: ""
                            }
                        }])
                    },
                    _init: function() {
                        this.callBase();
                        this._loadingIndicatorEnabled = true
                    },
                    _initScrollableMarkup: function() {
                        this.callBase();
                        this.$element().addClass("dx-scrollview");
                        this._initContent();
                        this._initTopPocket();
                        this._initBottomPocket();
                        this._initLoadPanel()
                    },
                    _initContent: function() {
                        const $content = (0, _renderer.default)("<div>").addClass("dx-scrollview-content");
                        this._$content.wrapInner($content)
                    },
                    _initTopPocket: function() {
                        const $topPocket = this._$topPocket = (0, _renderer.default)("<div>").addClass("dx-scrollview-top-pocket");
                        const $pullDown = this._$pullDown = (0, _renderer.default)("<div>").addClass("dx-scrollview-pull-down");
                        $topPocket.append($pullDown);
                        this._$content.prepend($topPocket)
                    },
                    _initBottomPocket: function() {
                        const $bottomPocket = this._$bottomPocket = (0, _renderer.default)("<div>").addClass("dx-scrollview-bottom-pocket");
                        const $reachBottom = this._$reachBottom = (0, _renderer.default)("<div>").addClass("dx-scrollview-scrollbottom");
                        const $loadContainer = (0, _renderer.default)("<div>").addClass("dx-scrollview-scrollbottom-indicator");
                        const $loadIndicator = new _load_indicator.default((0, _renderer.default)("<div>")).$element();
                        const $text = this._$reachBottomText = (0, _renderer.default)("<div>").addClass("dx-scrollview-scrollbottom-text");
                        this._updateReachBottomText();
                        $reachBottom.append($loadContainer.append($loadIndicator)).append($text);
                        $bottomPocket.append($reachBottom);
                        this._$content.append($bottomPocket)
                    },
                    _initLoadPanel: function() {
                        const $loadPanelElement = (0, _renderer.default)("<div>").addClass("dx-scrollview-loadpanel").appendTo(this.$element());
                        const loadPanelOptions = {
                            shading: false,
                            delay: 400,
                            message: this.option("refreshingText"),
                            position: {
                                of: this.$element()
                            }
                        };
                        this._loadPanel = this._createComponent($loadPanelElement, _load_panel.default, loadPanelOptions)
                    },
                    _updateReachBottomText: function() {
                        this._$reachBottomText.text(this.option("reachBottomText"))
                    },
                    _createStrategy: function() {
                        const strategyName = this.option("useNative") ? this.option("refreshStrategy") : "simulated";
                        const strategyClass = refreshStrategies[strategyName];
                        this._strategy = new strategyClass(this);
                        this._strategy.pullDownCallbacks.add(this._pullDownHandler.bind(this));
                        this._strategy.releaseCallbacks.add(this._releaseHandler.bind(this));
                        this._strategy.reachBottomCallbacks.add(this._reachBottomHandler.bind(this))
                    },
                    _createActions: function() {
                        this.callBase();
                        this._pullDownAction = this._createActionByOption("onPullDown");
                        this._reachBottomAction = this._createActionByOption("onReachBottom");
                        this._tryRefreshPocketState()
                    },
                    _tryRefreshPocketState: function() {
                        this._pullDownEnable(this.hasActionSubscription("onPullDown"));
                        this._reachBottomEnable(this.hasActionSubscription("onReachBottom"))
                    },
                    on: function(eventName) {
                        const result = this.callBase.apply(this, arguments);
                        if ("pullDown" === eventName || "reachBottom" === eventName) {
                            this._tryRefreshPocketState()
                        }
                        return result
                    },
                    _pullDownEnable: function(enabled) {
                        if (0 === arguments.length) {
                            return this._pullDownEnabled
                        }
                        if (this._$pullDown && this._strategy) {
                            this._$pullDown.toggle(enabled);
                            this._strategy.pullDownEnable(enabled);
                            this._pullDownEnabled = enabled
                        }
                    },
                    _reachBottomEnable: function(enabled) {
                        if (0 === arguments.length) {
                            return this._reachBottomEnabled
                        }
                        if (this._$reachBottom && this._strategy) {
                            this._$reachBottom.toggle(enabled);
                            this._strategy.reachBottomEnable(enabled);
                            this._reachBottomEnabled = enabled
                        }
                    },
                    _pullDownHandler: function() {
                        this._loadingIndicator(false);
                        this._pullDownLoading()
                    },
                    _loadingIndicator: function(value) {
                        if (arguments.length < 1) {
                            return this._loadingIndicatorEnabled
                        }
                        this._loadingIndicatorEnabled = value
                    },
                    _pullDownLoading: function() {
                        this.startLoading();
                        this._pullDownAction()
                    },
                    _reachBottomHandler: function() {
                        this._loadingIndicator(false);
                        this._reachBottomLoading()
                    },
                    _reachBottomLoading: function() {
                        this.startLoading();
                        this._reachBottomAction()
                    },
                    _releaseHandler: function() {
                        this.finishLoading();
                        this._loadingIndicator(true)
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "onPullDown":
                            case "onReachBottom":
                                this._createActions();
                                break;
                            case "pullingDownText":
                            case "pulledDownText":
                            case "refreshingText":
                            case "refreshStrategy":
                                this._invalidate();
                                break;
                            case "reachBottomText":
                                this._updateReachBottomText();
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    content: function() {
                        return (0, _element.getPublicElement)(this._$content.children().eq(1))
                    },
                    release: function(preventReachBottom) {
                        if (void 0 !== preventReachBottom) {
                            this.toggleLoading(!preventReachBottom)
                        }
                        return this._strategy.release()
                    },
                    toggleLoading: function(showOrHide) {
                        this._reachBottomEnable(showOrHide)
                    },
                    refresh: function() {
                        if (!this.hasActionSubscription("onPullDown")) {
                            return
                        }
                        this._strategy.pendingRelease();
                        this._pullDownLoading()
                    },
                    startLoading: function() {
                        if (this._loadingIndicator() && this.$element().is(":visible")) {
                            this._loadPanel.show()
                        }
                        this._lock()
                    },
                    finishLoading: function() {
                        this._loadPanel.hide();
                        this._unlock()
                    },
                    _dispose: function() {
                        this._strategy.dispose();
                        this.callBase();
                        if (this._loadPanel) {
                            this._loadPanel.$element().remove()
                        }
                    }
                });
                (0, _component_registrator.default)("dxScrollView", ScrollView);
                var _default = ScrollView;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        27765:
            /*!***********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/scroll_view/ui.scroll_view.native.pull_down.js ***!
              \***********************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/callbacks */ 44504));
                var _translator = __webpack_require__( /*! ../../animation/translator */ 31648);
                var _uiScrollable = _interopRequireDefault(__webpack_require__( /*! ./ui.scrollable.native */ 78831));
                var _load_indicator = _interopRequireDefault(__webpack_require__( /*! ../load_indicator */ 2492));
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const PullDownNativeScrollViewStrategy = _uiScrollable.default.inherit({
                    _init: function(scrollView) {
                        this.callBase(scrollView);
                        this._$topPocket = scrollView._$topPocket;
                        this._$pullDown = scrollView._$pullDown;
                        this._$refreshingText = scrollView._$refreshingText;
                        this._$scrollViewContent = (0, _renderer.default)(scrollView.content());
                        this._$container = (0, _renderer.default)(scrollView.container());
                        this._initCallbacks()
                    },
                    _initCallbacks: function() {
                        this.pullDownCallbacks = (0, _callbacks.default)();
                        this.releaseCallbacks = (0, _callbacks.default)();
                        this.reachBottomCallbacks = (0, _callbacks.default)()
                    },
                    render: function() {
                        this.callBase();
                        this._renderPullDown();
                        this._releaseState()
                    },
                    _renderPullDown: function() {
                        const $image = (0, _renderer.default)("<div>").addClass("dx-scrollview-pull-down-image");
                        const $loadContainer = (0, _renderer.default)("<div>").addClass("dx-scrollview-pull-down-indicator");
                        const $loadIndicator = new _load_indicator.default((0, _renderer.default)("<div>")).$element();
                        const $text = this._$pullDownText = (0, _renderer.default)("<div>").addClass("dx-scrollview-pull-down-text");
                        this._$pullingDownText = (0, _renderer.default)("<div>").text(this.option("pullingDownText")).appendTo($text);
                        this._$pulledDownText = (0, _renderer.default)("<div>").text(this.option("pulledDownText")).appendTo($text);
                        this._$refreshingText = (0, _renderer.default)("<div>").text(this.option("refreshingText")).appendTo($text);
                        this._$pullDown.empty().append($image).append($loadContainer.append($loadIndicator)).append($text)
                    },
                    _releaseState: function() {
                        this._state = 0;
                        this._refreshPullDownText()
                    },
                    _refreshPullDownText: function() {
                        const that = this;
                        const pullDownTextItems = [{
                            element: this._$pullingDownText,
                            visibleState: 0
                        }, {
                            element: this._$pulledDownText,
                            visibleState: 1
                        }, {
                            element: this._$refreshingText,
                            visibleState: 2
                        }];
                        (0, _iterator.each)(pullDownTextItems, (function(_, item) {
                            const action = that._state === item.visibleState ? "addClass" : "removeClass";
                            item.element[action]("dx-scrollview-pull-down-text-visible")
                        }))
                    },
                    update: function() {
                        this.callBase();
                        this._setTopPocketOffset()
                    },
                    _updateDimensions: function() {
                        this.callBase();
                        this._topPocketSize = this._$topPocket.get(0).clientHeight;
                        const contentEl = this._$scrollViewContent.get(0);
                        const containerEl = this._$container.get(0);
                        this._bottomBoundary = Math.max(contentEl.clientHeight - containerEl.clientHeight, 0)
                    },
                    _allowedDirections: function() {
                        const allowedDirections = this.callBase();
                        allowedDirections.vertical = allowedDirections.vertical || this._pullDownEnabled;
                        return allowedDirections
                    },
                    _setTopPocketOffset: function() {
                        this._$topPocket.css({
                            top: -this._topPocketSize
                        })
                    },
                    handleEnd: function() {
                        this.callBase();
                        this._complete()
                    },
                    handleStop: function() {
                        this.callBase();
                        this._complete()
                    },
                    _complete: function() {
                        if (1 === this._state) {
                            this._setPullDownOffset(this._topPocketSize);
                            clearTimeout(this._pullDownRefreshTimeout);
                            this._pullDownRefreshTimeout = setTimeout(function() {
                                this._pullDownRefreshing()
                            }.bind(this), 400)
                        }
                    },
                    _setPullDownOffset: function(offset) {
                        (0, _translator.move)(this._$topPocket, {
                            top: offset
                        });
                        (0, _translator.move)(this._$scrollViewContent, {
                            top: offset
                        })
                    },
                    handleScroll: function(e) {
                        this.callBase(e);
                        if (2 === this._state) {
                            return
                        }
                        const currentLocation = this.location().top;
                        const scrollDelta = (this._location || 0) - currentLocation;
                        this._location = currentLocation;
                        if (this._isPullDown()) {
                            this._pullDownReady()
                        } else if (scrollDelta > 0 && this._isReachBottom()) {
                            this._reachBottom()
                        } else {
                            this._stateReleased()
                        }
                    },
                    _isPullDown: function() {
                        return this._pullDownEnabled && this._location >= this._topPocketSize
                    },
                    _isReachBottom: function() {
                        return this._reachBottomEnabled && Math.round(this._bottomBoundary + Math.floor(this._location)) <= 1
                    },
                    _reachBottom: function() {
                        if (3 === this._state) {
                            return
                        }
                        this._state = 3;
                        this.reachBottomCallbacks.fire()
                    },
                    _pullDownReady: function() {
                        if (1 === this._state) {
                            return
                        }
                        this._state = 1;
                        this._$pullDown.addClass("dx-scrollview-pull-down-ready");
                        this._refreshPullDownText()
                    },
                    _stateReleased: function() {
                        if (0 === this._state) {
                            return
                        }
                        this._$pullDown.removeClass("dx-scrollview-pull-down-loading").removeClass("dx-scrollview-pull-down-ready");
                        this._releaseState()
                    },
                    _pullDownRefreshing: function() {
                        if (2 === this._state) {
                            return
                        }
                        this._state = 2;
                        this._$pullDown.addClass("dx-scrollview-pull-down-loading").removeClass("dx-scrollview-pull-down-ready");
                        this._refreshPullDownText();
                        this.pullDownCallbacks.fire()
                    },
                    pullDownEnable: function(enabled) {
                        if (enabled) {
                            this._updateDimensions();
                            this._setTopPocketOffset()
                        }
                        this._pullDownEnabled = enabled
                    },
                    reachBottomEnable: function(enabled) {
                        this._reachBottomEnabled = enabled
                    },
                    pendingRelease: function() {
                        this._state = 1
                    },
                    release: function() {
                        const deferred = new _deferred.Deferred;
                        this._updateDimensions();
                        clearTimeout(this._releaseTimeout);
                        if (3 === this._state) {
                            this._state = 0
                        }
                        this._releaseTimeout = setTimeout(function() {
                            this._setPullDownOffset(0);
                            this._stateReleased();
                            this.releaseCallbacks.fire();
                            this._updateAction();
                            deferred.resolve()
                        }.bind(this), 400);
                        return deferred.promise()
                    },
                    dispose: function() {
                        clearTimeout(this._pullDownRefreshTimeout);
                        clearTimeout(this._releaseTimeout);
                        this.callBase()
                    }
                });
                var _default = PullDownNativeScrollViewStrategy;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        90778:
            /*!************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/scroll_view/ui.scroll_view.native.swipe_down.js ***!
              \************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/callbacks */ 44504));
                var _translator = __webpack_require__( /*! ../../animation/translator */ 31648);
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _uiScrollable = _interopRequireDefault(__webpack_require__( /*! ./ui.scrollable.native */ 78831));
                var _load_indicator = _interopRequireDefault(__webpack_require__( /*! ../load_indicator */ 2492));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const SwipeDownNativeScrollViewStrategy = _uiScrollable.default.inherit({
                    _init: function(scrollView) {
                        this.callBase(scrollView);
                        this._$topPocket = scrollView._$topPocket;
                        this._$pullDown = scrollView._$pullDown;
                        this._$scrollViewContent = (0, _renderer.default)(scrollView.content());
                        this._$container = (0, _renderer.default)(scrollView.container());
                        this._initCallbacks();
                        this._location = 0
                    },
                    _initCallbacks: function() {
                        this.pullDownCallbacks = (0, _callbacks.default)();
                        this.releaseCallbacks = (0, _callbacks.default)();
                        this.reachBottomCallbacks = (0, _callbacks.default)()
                    },
                    render: function() {
                        this.callBase();
                        this._renderPullDown();
                        this._releaseState()
                    },
                    _renderPullDown: function() {
                        const $loadContainer = (0, _renderer.default)("<div>").addClass("dx-scrollview-pull-down-indicator");
                        const $loadIndicator = new _load_indicator.default((0, _renderer.default)("<div>")).$element();
                        this._$icon = (0, _renderer.default)("<div>").addClass("dx-icon-pulldown");
                        this._$pullDown.empty().append(this._$icon).append($loadContainer.append($loadIndicator))
                    },
                    _releaseState: function() {
                        this._state = 0;
                        this._releasePullDown();
                        this._updateDimensions()
                    },
                    _releasePullDown: function() {
                        this._$pullDown.css({
                            opacity: 0
                        })
                    },
                    _updateDimensions: function() {
                        this.callBase();
                        this._topPocketSize = this._$topPocket.get(0).clientHeight;
                        const contentEl = this._$scrollViewContent.get(0);
                        const containerEl = this._$container.get(0);
                        this._bottomBoundary = Math.max(contentEl.clientHeight - containerEl.clientHeight, 0)
                    },
                    _allowedDirections: function() {
                        const allowedDirections = this.callBase();
                        allowedDirections.vertical = allowedDirections.vertical || this._pullDownEnabled;
                        return allowedDirections
                    },
                    handleInit: function(e) {
                        this.callBase(e);
                        if (0 === this._state && 0 === this._location) {
                            this._startClientY = (0, _index.eventData)(e.originalEvent).y;
                            this._state = 4
                        }
                    },
                    handleMove: function(e) {
                        this.callBase(e);
                        this._deltaY = (0, _index.eventData)(e.originalEvent).y - this._startClientY;
                        if (4 === this._state) {
                            if (this._pullDownEnabled && this._deltaY > 0) {
                                this._state = 5
                            } else {
                                this._complete()
                            }
                        }
                        if (5 === this._state) {
                            e.preventDefault();
                            this._movePullDown()
                        }
                    },
                    _movePullDown: function() {
                        const pullDownHeight = this._getPullDownHeight();
                        const top = Math.min(3 * pullDownHeight, this._deltaY + this._getPullDownStartPosition());
                        const angle = 180 * top / pullDownHeight / 3;
                        this._$pullDown.css({
                            opacity: 1
                        }).toggleClass("dx-scrollview-pull-down-refreshing", top < pullDownHeight);
                        (0, _translator.move)(this._$pullDown, {
                            top: top
                        });
                        this._$icon.css({
                            transform: "rotate(" + angle + "deg)"
                        })
                    },
                    _isPullDown: function() {
                        return this._pullDownEnabled && 5 === this._state && this._deltaY >= this._getPullDownHeight() - this._getPullDownStartPosition()
                    },
                    _getPullDownHeight: function() {
                        return Math.round(.05 * (0, _size.getOuterHeight)(this._$element))
                    },
                    _getPullDownStartPosition: function() {
                        return -Math.round(1.5 * (0, _size.getOuterHeight)(this._$pullDown))
                    },
                    handleEnd: function() {
                        if (this._isPullDown()) {
                            this._pullDownRefreshing()
                        }
                        this._complete()
                    },
                    handleStop: function() {
                        this._complete()
                    },
                    _complete: function() {
                        if (4 === this._state || 5 === this._state) {
                            this._releaseState()
                        }
                    },
                    handleScroll: function(e) {
                        this.callBase(e);
                        if (2 === this._state) {
                            return
                        }
                        const currentLocation = this.location().top;
                        const scrollDelta = this._location - currentLocation;
                        this._location = currentLocation;
                        if (scrollDelta > 0 && this._isReachBottom()) {
                            this._reachBottom()
                        } else {
                            this._stateReleased()
                        }
                    },
                    _isReachBottom: function() {
                        return this._reachBottomEnabled && Math.round(this._bottomBoundary + Math.floor(this._location)) <= 1
                    },
                    _reachBottom: function() {
                        this.reachBottomCallbacks.fire()
                    },
                    _stateReleased: function() {
                        if (0 === this._state) {
                            return
                        }
                        this._$pullDown.removeClass("dx-scrollview-pull-down-loading");
                        this._releaseState()
                    },
                    _pullDownRefreshing: function() {
                        this._state = 2;
                        this._pullDownRefreshHandler()
                    },
                    _pullDownRefreshHandler: function() {
                        this._refreshPullDown();
                        this.pullDownCallbacks.fire()
                    },
                    _refreshPullDown: function() {
                        this._$pullDown.addClass("dx-scrollview-pull-down-loading");
                        (0, _translator.move)(this._$pullDown, {
                            top: this._getPullDownHeight()
                        })
                    },
                    pullDownEnable: function(enabled) {
                        this._$topPocket.toggle(enabled);
                        this._pullDownEnabled = enabled
                    },
                    reachBottomEnable: function(enabled) {
                        this._reachBottomEnabled = enabled
                    },
                    pendingRelease: function() {
                        this._state = 1
                    },
                    release: function() {
                        const deferred = new _deferred.Deferred;
                        this._updateDimensions();
                        clearTimeout(this._releaseTimeout);
                        this._releaseTimeout = setTimeout(function() {
                            this._stateReleased();
                            this.releaseCallbacks.fire();
                            this._updateAction();
                            deferred.resolve()
                        }.bind(this), 800);
                        return deferred.promise()
                    },
                    dispose: function() {
                        clearTimeout(this._pullDownRefreshTimeout);
                        clearTimeout(this._releaseTimeout);
                        this.callBase()
                    }
                });
                var _default = SwipeDownNativeScrollViewStrategy;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        91616:
            /*!****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/scroll_view/ui.scroll_view.simulated.js ***!
              \****************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/callbacks */ 44504));
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _uiScrollable = __webpack_require__( /*! ./ui.scrollable.simulated */ 54142);
                var _load_indicator = _interopRequireDefault(__webpack_require__( /*! ../load_indicator */ 2492));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const math = Math;
                const ScrollViewScroller = _uiScrollable.Scroller.inherit({
                    ctor: function() {
                        this._topPocketSize = 0;
                        this._bottomPocketSize = 0;
                        this.callBase.apply(this, arguments);
                        this._initCallbacks();
                        this._releaseState()
                    },
                    _releaseState: function() {
                        this._state = 0;
                        this._refreshPullDownText()
                    },
                    _refreshPullDownText: function() {
                        const that = this;
                        const pullDownTextItems = [{
                            element: this._$pullingDownText,
                            visibleState: 0
                        }, {
                            element: this._$pulledDownText,
                            visibleState: 1
                        }, {
                            element: this._$refreshingText,
                            visibleState: 2
                        }];
                        (0, _iterator.each)(pullDownTextItems, (function(_, item) {
                            const action = that._state === item.visibleState ? "addClass" : "removeClass";
                            item.element[action]("dx-scrollview-pull-down-text-visible")
                        }))
                    },
                    _initCallbacks: function() {
                        this.pullDownCallbacks = (0, _callbacks.default)();
                        this.releaseCallbacks = (0, _callbacks.default)();
                        this.reachBottomCallbacks = (0, _callbacks.default)()
                    },
                    _updateBounds: function() {
                        const considerPockets = "horizontal" !== this._direction;
                        if (considerPockets) {
                            this._topPocketSize = this._$topPocket.get(0).clientHeight;
                            this._bottomPocketSize = this._$bottomPocket.get(0).clientHeight;
                            const containerEl = this._$container.get(0);
                            const contentEl = this._$content.get(0);
                            this._bottomBoundary = Math.max(contentEl.clientHeight - this._bottomPocketSize - containerEl.clientHeight, 0)
                        }
                        this.callBase()
                    },
                    _updateScrollbar: function() {
                        this._scrollbar.option({
                            containerSize: this._containerSize(),
                            contentSize: this._contentSize() - this._topPocketSize - this._bottomPocketSize,
                            scaleRatio: this._getScaleRatio()
                        })
                    },
                    _moveContent: function() {
                        this.callBase();
                        if (this._isPullDown()) {
                            this._pullDownReady()
                        } else if (this._isReachBottom()) {
                            this._reachBottomReady()
                        } else if (0 !== this._state) {
                            this._stateReleased()
                        }
                    },
                    _moveScrollbar: function() {
                        this._scrollbar.moveTo(this._topPocketSize + this._location)
                    },
                    _isPullDown: function() {
                        return this._pullDownEnabled && this._location >= 0
                    },
                    _isReachBottom: function() {
                        const containerEl = this._$container.get(0);
                        return this._reachBottomEnabled && Math.round(this._bottomBoundary - Math.ceil(containerEl.scrollTop)) <= 1
                    },
                    _scrollComplete: function() {
                        if (this._inBounds() && 1 === this._state) {
                            this._pullDownRefreshing()
                        } else if (this._inBounds() && 3 === this._state) {
                            this._reachBottomLoading()
                        } else {
                            this.callBase()
                        }
                    },
                    _reachBottomReady: function() {
                        if (3 === this._state) {
                            return
                        }
                        this._state = 3;
                        this._minOffset = this._getMinOffset()
                    },
                    _getMaxOffset: function() {
                        return -this._topPocketSize
                    },
                    _getMinOffset: function() {
                        return math.min(this.callBase(), -this._topPocketSize)
                    },
                    _reachBottomLoading: function() {
                        this.reachBottomCallbacks.fire()
                    },
                    _pullDownReady: function() {
                        if (1 === this._state) {
                            return
                        }
                        this._state = 1;
                        this._maxOffset = 0;
                        this._$pullDown.addClass("dx-scrollview-pull-down-ready");
                        this._refreshPullDownText()
                    },
                    _stateReleased: function() {
                        if (0 === this._state) {
                            return
                        }
                        this._releaseState();
                        this._updateBounds();
                        this._$pullDown.removeClass("dx-scrollview-pull-down-loading").removeClass("dx-scrollview-pull-down-ready");
                        this.releaseCallbacks.fire()
                    },
                    _pullDownRefreshing: function() {
                        if (2 === this._state) {
                            return
                        }
                        this._state = 2;
                        this._$pullDown.addClass("dx-scrollview-pull-down-loading").removeClass("dx-scrollview-pull-down-ready");
                        this._refreshPullDownText();
                        this.pullDownCallbacks.fire()
                    },
                    _releaseHandler: function() {
                        if (0 === this._state) {
                            this._moveToBounds()
                        }
                        this._update();
                        if (this._releaseTask) {
                            this._releaseTask.abort()
                        }
                        this._releaseTask = (0, _common.executeAsync)(this._release.bind(this));
                        return this._releaseTask.promise
                    },
                    _release: function() {
                        this._stateReleased();
                        this._scrollComplete()
                    },
                    _reachBottomEnablingHandler: function(enabled) {
                        if (this._reachBottomEnabled === enabled) {
                            return
                        }
                        this._reachBottomEnabled = enabled;
                        this._updateBounds()
                    },
                    _pullDownEnablingHandler: function(enabled) {
                        if (this._pullDownEnabled === enabled) {
                            return
                        }
                        this._pullDownEnabled = enabled;
                        this._considerTopPocketChange();
                        this._updateHandler()
                    },
                    _considerTopPocketChange: function() {
                        this._location -= (0, _size.getHeight)(this._$topPocket) || -this._topPocketSize;
                        this._maxOffset = 0;
                        this._move()
                    },
                    _pendingReleaseHandler: function() {
                        this._state = 1
                    },
                    dispose: function() {
                        if (this._releaseTask) {
                            this._releaseTask.abort()
                        }
                        this.callBase()
                    }
                });
                const SimulatedScrollViewStrategy = _uiScrollable.SimulatedStrategy.inherit({
                    _init: function(scrollView) {
                        this.callBase(scrollView);
                        this._$pullDown = scrollView._$pullDown;
                        this._$topPocket = scrollView._$topPocket;
                        this._$bottomPocket = scrollView._$bottomPocket;
                        this._initCallbacks()
                    },
                    _initCallbacks: function() {
                        this.pullDownCallbacks = (0, _callbacks.default)();
                        this.releaseCallbacks = (0, _callbacks.default)();
                        this.reachBottomCallbacks = (0, _callbacks.default)()
                    },
                    render: function() {
                        this._renderPullDown();
                        this.callBase()
                    },
                    _renderPullDown: function() {
                        const $image = (0, _renderer.default)("<div>").addClass("dx-scrollview-pull-down-image");
                        const $loadContainer = (0, _renderer.default)("<div>").addClass("dx-scrollview-pull-down-indicator");
                        const $loadIndicator = new _load_indicator.default((0, _renderer.default)("<div>")).$element();
                        const $text = this._$pullDownText = (0, _renderer.default)("<div>").addClass("dx-scrollview-pull-down-text");
                        this._$pullingDownText = (0, _renderer.default)("<div>").text(this.option("pullingDownText")).appendTo($text);
                        this._$pulledDownText = (0, _renderer.default)("<div>").text(this.option("pulledDownText")).appendTo($text);
                        this._$refreshingText = (0, _renderer.default)("<div>").text(this.option("refreshingText")).appendTo($text);
                        this._$pullDown.empty().append($image).append($loadContainer.append($loadIndicator)).append($text)
                    },
                    pullDownEnable: function(enabled) {
                        this._eventHandler("pullDownEnabling", enabled)
                    },
                    reachBottomEnable: function(enabled) {
                        this._eventHandler("reachBottomEnabling", enabled)
                    },
                    _createScroller: function(direction) {
                        const that = this;
                        const scroller = that._scrollers[direction] = new ScrollViewScroller(that._scrollerOptions(direction));
                        scroller.pullDownCallbacks.add((function() {
                            that.pullDownCallbacks.fire()
                        }));
                        scroller.releaseCallbacks.add((function() {
                            that.releaseCallbacks.fire()
                        }));
                        scroller.reachBottomCallbacks.add((function() {
                            that.reachBottomCallbacks.fire()
                        }))
                    },
                    _scrollerOptions: function(direction) {
                        return (0, _extend.extend)(this.callBase(direction), {
                            $topPocket: this._$topPocket,
                            $bottomPocket: this._$bottomPocket,
                            $pullDown: this._$pullDown,
                            $pullDownText: this._$pullDownText,
                            $pullingDownText: this._$pullingDownText,
                            $pulledDownText: this._$pulledDownText,
                            $refreshingText: this._$refreshingText
                        })
                    },
                    pendingRelease: function() {
                        this._eventHandler("pendingRelease")
                    },
                    release: function() {
                        return this._eventHandler("release").done(this._updateAction)
                    },
                    location: function() {
                        const location = this.callBase();
                        location.top += (0, _size.getHeight)(this._$topPocket);
                        return location
                    },
                    dispose: function() {
                        (0, _iterator.each)(this._scrollers, (function() {
                            this.dispose()
                        }));
                        this.callBase()
                    }
                });
                var _default = SimulatedScrollViewStrategy;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        82205:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/scroll_view/ui.scrollable.device.js ***!
              \************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.deviceDependentOptions = void 0;
                var _devices = (obj = __webpack_require__( /*! ../../core/devices */ 20530), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _support = __webpack_require__( /*! ../../core/utils/support */ 60137);
                exports.deviceDependentOptions = function() {
                    return [{
                        device: function() {
                            return !_support.nativeScrolling
                        },
                        options: {
                            useNative: false
                        }
                    }, {
                        device: function(device) {
                            return !_devices.default.isSimulator() && "desktop" === _devices.default.real().deviceType && "generic" === device.platform
                        },
                        options: {
                            bounceEnabled: false,
                            scrollByThumb: true,
                            scrollByContent: _support.touch,
                            showScrollbar: "onHover"
                        }
                    }]
                }
            },
        41183:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/scroll_view/ui.scrollable.js ***!
              \*****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _uiScrollable = (obj = __webpack_require__( /*! ./ui.scrollable.old */ 58788), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _uiScrollable.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        78831:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/scroll_view/ui.scrollable.native.js ***!
              \************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 38377));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./ui.scrollbar */ 89043));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const NativeStrategy = _class.default.inherit({
                    ctor: function(scrollable) {
                        this._init(scrollable)
                    },
                    _init: function(scrollable) {
                        this._component = scrollable;
                        this._$element = scrollable.$element();
                        this._$container = (0, _renderer.default)(scrollable.container());
                        this._$content = scrollable.$content();
                        this._direction = scrollable.option("direction");
                        this._useSimulatedScrollbar = scrollable.option("useSimulatedScrollbar");
                        this.option = scrollable.option.bind(scrollable);
                        this._createActionByOption = scrollable._createActionByOption.bind(scrollable);
                        this._isLocked = scrollable._isLocked.bind(scrollable);
                        this._isDirection = scrollable._isDirection.bind(scrollable);
                        this._allowedDirection = scrollable._allowedDirection.bind(scrollable);
                        this._getMaxOffset = scrollable._getMaxOffset.bind(scrollable);
                        this._isRtlNativeStrategy = scrollable._isRtlNativeStrategy.bind(scrollable)
                    },
                    render: function() {
                        const device = _devices.default.real();
                        const deviceType = device.platform;
                        this._$element.addClass("dx-scrollable-native").addClass("dx-scrollable-native-" + deviceType).toggleClass("dx-scrollable-scrollbars-hidden", !this._isScrollbarVisible());
                        if (this._isScrollbarVisible() && this._useSimulatedScrollbar) {
                            this._renderScrollbars()
                        }
                    },
                    updateRtlPosition: function(isFirstRender) {
                        if (isFirstRender && this.option("rtlEnabled")) {
                            if (this._isScrollbarVisible() && this._useSimulatedScrollbar) {
                                this._moveScrollbars()
                            }
                        }
                    },
                    _renderScrollbars: function() {
                        this._scrollbars = {};
                        this._hideScrollbarTimeout = 0;
                        this._$element.addClass("dx-scrollable-scrollbar-simulated");
                        this._renderScrollbar("vertical");
                        this._renderScrollbar("horizontal")
                    },
                    _renderScrollbar: function(direction) {
                        if (!this._isDirection(direction)) {
                            return
                        }
                        this._scrollbars[direction] = new _ui.default((0, _renderer.default)("<div>").appendTo(this._$element), {
                            direction: direction,
                            expandable: this._component.option("scrollByThumb")
                        })
                    },
                    handleInit: _common.noop,
                    handleStart: _common.noop,
                    handleMove: function(e) {
                        if (this._isLocked()) {
                            e.cancel = true;
                            return
                        }
                        if (this._allowedDirection()) {
                            e.originalEvent.isScrollingEvent = true
                        }
                    },
                    handleEnd: _common.noop,
                    handleCancel: _common.noop,
                    handleStop: _common.noop,
                    _eachScrollbar: function(callback) {
                        callback = callback.bind(this);
                        (0, _iterator.each)(this._scrollbars || {}, (function(direction, scrollbar) {
                            callback(scrollbar, direction)
                        }))
                    },
                    createActions: function() {
                        this._scrollAction = this._createActionByOption("onScroll");
                        this._updateAction = this._createActionByOption("onUpdated")
                    },
                    _createActionArgs: function() {
                        const {
                            left: left,
                            top: top
                        } = this.location();
                        return {
                            event: this._eventForUserAction,
                            scrollOffset: this._getScrollOffset(),
                            reachedLeft: this._isRtlNativeStrategy() ? this._isReachedRight(-left) : this._isReachedLeft(left),
                            reachedRight: this._isRtlNativeStrategy() ? this._isReachedLeft(-Math.abs(left)) : this._isReachedRight(left),
                            reachedTop: this._isDirection("vertical") ? Math.round(top) >= 0 : void 0,
                            reachedBottom: this._isDirection("vertical") ? Math.round(Math.abs(top) - this._getMaxOffset().top) >= 0 : void 0
                        }
                    },
                    _getScrollOffset: function() {
                        const {
                            top: top,
                            left: left
                        } = this.location();
                        return {
                            top: -top,
                            left: this._normalizeOffsetLeft(-left)
                        }
                    },
                    _normalizeOffsetLeft(scrollLeft) {
                        if (this._isRtlNativeStrategy()) {
                            return this._getMaxOffset().left + scrollLeft
                        }
                        return scrollLeft
                    },
                    _isReachedLeft: function(left) {
                        return this._isDirection("horizontal") ? Math.round(left) >= 0 : void 0
                    },
                    _isReachedRight: function(left) {
                        return this._isDirection("horizontal") ? Math.round(Math.abs(left) - this._getMaxOffset().left) >= 0 : void 0
                    },
                    _isScrollbarVisible: function() {
                        const {
                            showScrollbar: showScrollbar
                        } = this.option();
                        return "never" !== showScrollbar && false !== showScrollbar
                    },
                    handleScroll: function(e) {
                        this._eventForUserAction = e;
                        this._moveScrollbars();
                        this._scrollAction(this._createActionArgs())
                    },
                    _moveScrollbars: function() {
                        const {
                            top: top,
                            left: left
                        } = this._getScrollOffset();
                        this._eachScrollbar((function(scrollbar) {
                            scrollbar.moveTo({
                                top: -top,
                                left: -left
                            });
                            scrollbar.option("visible", true)
                        }));
                        this._hideScrollbars()
                    },
                    _hideScrollbars: function() {
                        clearTimeout(this._hideScrollbarTimeout);
                        this._hideScrollbarTimeout = setTimeout(function() {
                            this._eachScrollbar((function(scrollbar) {
                                scrollbar.option("visible", false)
                            }))
                        }.bind(this), 500)
                    },
                    location: function() {
                        return {
                            left: -this._$container.scrollLeft(),
                            top: -this._$container.scrollTop()
                        }
                    },
                    disabledChanged: _common.noop,
                    update: function() {
                        this._update();
                        this._updateAction(this._createActionArgs())
                    },
                    _update: function() {
                        this._updateDimensions();
                        this._updateScrollbars()
                    },
                    _updateDimensions: function() {
                        this._containerSize = {
                            height: (0, _size.getHeight)(this._$container),
                            width: (0, _size.getWidth)(this._$container)
                        };
                        this._componentContentSize = {
                            height: (0, _size.getHeight)(this._component.$content()),
                            width: (0, _size.getWidth)(this._component.$content())
                        };
                        this._contentSize = {
                            height: (0, _size.getHeight)(this._$content),
                            width: (0, _size.getWidth)(this._$content)
                        }
                    },
                    _updateScrollbars: function() {
                        this._eachScrollbar((function(scrollbar, direction) {
                            const dimension = "vertical" === direction ? "height" : "width";
                            scrollbar.option({
                                containerSize: this._containerSize[dimension],
                                contentSize: this._componentContentSize[dimension]
                            });
                            scrollbar.update()
                        }))
                    },
                    _allowedDirections: function() {
                        return {
                            vertical: this._isDirection("vertical") && this._contentSize.height > this._containerSize.height,
                            horizontal: this._isDirection("horizontal") && this._contentSize.width > this._containerSize.width
                        }
                    },
                    dispose: function() {
                        const className = this._$element.get(0).className;
                        const scrollableNativeRegexp = new RegExp("dx-scrollable-native\\S*", "g");
                        if (scrollableNativeRegexp.test(className)) {
                            this._$element.removeClass(className.match(scrollableNativeRegexp).join(" "))
                        }
                        _events_engine.default.off(this._$element, ".dxNativeScrollable");
                        _events_engine.default.off(this._$container, ".dxNativeScrollable");
                        this._removeScrollbars();
                        clearTimeout(this._hideScrollbarTimeout)
                    },
                    _removeScrollbars: function() {
                        this._eachScrollbar((function(scrollbar) {
                            scrollbar.$element().remove()
                        }))
                    },
                    scrollBy: function(distance) {
                        const location = this.location();
                        this._$container.scrollTop(Math.round(-location.top - distance.top));
                        this._$container.scrollLeft(Math.round(-location.left - distance.left))
                    },
                    validate: function(e) {
                        if (this.option("disabled")) {
                            return false
                        }
                        if ((0, _index.isDxMouseWheelEvent)(e) && this._isScrolledInMaxDirection(e)) {
                            return false
                        }
                        return !!this._allowedDirection()
                    },
                    _isScrolledInMaxDirection(e) {
                        const container = this._$container.get(0);
                        let result;
                        if (e.delta > 0) {
                            result = e.shiftKey ? !container.scrollLeft : !container.scrollTop
                        } else if (e.shiftKey) {
                            result = container.scrollLeft >= this._getMaxOffset().left
                        } else {
                            result = container.scrollTop >= this._getMaxOffset().top
                        }
                        return result
                    },
                    getDirection: function() {
                        return this._allowedDirection()
                    }
                });
                var _default = NativeStrategy;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        58788:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/scroll_view/ui.scrollable.old.js ***!
              \*********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _support = __webpack_require__( /*! ../../core/utils/support */ 60137);
                var _browser = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/browser */ 47810));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _element = __webpack_require__( /*! ../../core/element */ 6415);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _dom_component = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_component */ 13046));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _emitterGesture = _interopRequireDefault(__webpack_require__( /*! ../../events/gesture/emitter.gesture.scroll */ 37334));
                var _uiScrollable = __webpack_require__( /*! ./ui.scrollable.simulated */ 54142);
                var _uiScrollable2 = _interopRequireDefault(__webpack_require__( /*! ./ui.scrollable.native */ 78831));
                var _uiScrollable3 = __webpack_require__( /*! ./ui.scrollable.device */ 82205);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _get_element_location_internal = __webpack_require__( /*! ../../renovation/ui/scroll_view/utils/get_element_location_internal */ 60650);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const SCROLLABLE = "dxScrollable";
                const Scrollable = _dom_component.default.inherit({
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            disabled: false,
                            onScroll: null,
                            direction: "vertical",
                            showScrollbar: "onScroll",
                            useNative: true,
                            bounceEnabled: true,
                            scrollByContent: true,
                            scrollByThumb: false,
                            onUpdated: null,
                            onStart: null,
                            onEnd: null,
                            onBounce: null,
                            useSimulatedScrollbar: false,
                            useKeyboard: true,
                            inertiaEnabled: true,
                            updateManually: false
                        })
                    },
                    _defaultOptionsRules: function() {
                        return this.callBase().concat((0, _uiScrollable3.deviceDependentOptions)(), [{
                            device: function() {
                                return _support.nativeScrolling && "android" === _devices.default.real().platform && !_browser.default.mozilla
                            },
                            options: {
                                useSimulatedScrollbar: true
                            }
                        }])
                    },
                    _initOptions: function(options) {
                        this.callBase(options);
                        if (!("useSimulatedScrollbar" in options)) {
                            this._setUseSimulatedScrollbar()
                        }
                    },
                    _setUseSimulatedScrollbar: function() {
                        if (!this.initialOption("useSimulatedScrollbar")) {
                            this.option("useSimulatedScrollbar", !this.option("useNative"))
                        }
                    },
                    _init: function() {
                        this.callBase();
                        this._initScrollableMarkup();
                        this._locked = false
                    },
                    _visibilityChanged: function(visible) {
                        if (visible) {
                            this.update();
                            this._updateRtlPosition();
                            this._savedScrollOffset && this.scrollTo(this._savedScrollOffset);
                            delete this._savedScrollOffset
                        } else {
                            this._savedScrollOffset = this.scrollOffset()
                        }
                    },
                    _initScrollableMarkup: function() {
                        const $element = this.$element().addClass("dx-scrollable");
                        const $container = this._$container = (0, _renderer.default)("<div>").addClass("dx-scrollable-container");
                        const $wrapper = this._$wrapper = (0, _renderer.default)("<div>").addClass("dx-scrollable-wrapper");
                        const $content = this._$content = (0, _renderer.default)("<div>").addClass("dx-scrollable-content");
                        $content.append($element.contents()).appendTo($container);
                        $container.appendTo($wrapper);
                        $wrapper.appendTo($element)
                    },
                    _dimensionChanged: function() {
                        this.update();
                        this._updateRtlPosition()
                    },
                    _initMarkup: function() {
                        this.callBase();
                        this._renderDirection()
                    },
                    _render: function() {
                        this._renderStrategy();
                        this._attachEventHandlers();
                        this._renderDisabledState();
                        this._createActions();
                        this.update();
                        this.callBase();
                        this._updateRtlPosition(true)
                    },
                    _updateRtlPosition: function(needInitializeRtlConfig) {
                        this._strategy.updateRtlPosition(needInitializeRtlConfig)
                    },
                    _getMaxOffset: function() {
                        const {
                            scrollWidth: scrollWidth,
                            clientWidth: clientWidth,
                            scrollHeight: scrollHeight,
                            clientHeight: clientHeight
                        } = (0, _renderer.default)(this.container()).get(0);
                        return {
                            left: scrollWidth - clientWidth,
                            top: scrollHeight - clientHeight
                        }
                    },
                    _attachEventHandlers: function() {
                        const strategy = this._strategy;
                        const initEventData = {
                            getDirection: strategy.getDirection.bind(strategy),
                            validate: this._validate.bind(this),
                            isNative: this.option("useNative"),
                            scrollTarget: this._$container
                        };
                        _events_engine.default.off(this._$wrapper, "." + SCROLLABLE);
                        _events_engine.default.on(this._$wrapper, (0, _index.addNamespace)(_emitterGesture.default.init, SCROLLABLE), initEventData, this._initHandler.bind(this));
                        _events_engine.default.on(this._$wrapper, (0, _index.addNamespace)(_emitterGesture.default.start, SCROLLABLE), strategy.handleStart.bind(strategy));
                        _events_engine.default.on(this._$wrapper, (0, _index.addNamespace)(_emitterGesture.default.move, SCROLLABLE), strategy.handleMove.bind(strategy));
                        _events_engine.default.on(this._$wrapper, (0, _index.addNamespace)(_emitterGesture.default.end, SCROLLABLE), strategy.handleEnd.bind(strategy));
                        _events_engine.default.on(this._$wrapper, (0, _index.addNamespace)(_emitterGesture.default.cancel, SCROLLABLE), strategy.handleCancel.bind(strategy));
                        _events_engine.default.on(this._$wrapper, (0, _index.addNamespace)(_emitterGesture.default.stop, SCROLLABLE), strategy.handleStop.bind(strategy));
                        _events_engine.default.off(this._$container, "." + SCROLLABLE);
                        _events_engine.default.on(this._$container, (0, _index.addNamespace)("scroll", SCROLLABLE), strategy.handleScroll.bind(strategy))
                    },
                    _validate: function(e) {
                        if (this._isLocked()) {
                            return false
                        }
                        this._updateIfNeed();
                        return this._moveIsAllowed(e)
                    },
                    _moveIsAllowed(e) {
                        return this._strategy.validate(e)
                    },
                    handleMove(e) {
                        this._strategy.handleMove(e)
                    },
                    _prepareDirections(value) {
                        this._strategy._prepareDirections(value)
                    },
                    _initHandler: function() {
                        const strategy = this._strategy;
                        strategy.handleInit.apply(strategy, arguments)
                    },
                    _renderDisabledState: function() {
                        this.$element().toggleClass("dx-scrollable-disabled", this.option("disabled"));
                        if (this.option("disabled")) {
                            this._lock()
                        } else {
                            this._unlock()
                        }
                    },
                    _renderDirection: function() {
                        this.$element().removeClass("dx-scrollable-horizontal").removeClass("dx-scrollable-vertical").removeClass("dx-scrollable-both").addClass("dx-scrollable-" + this.option("direction"))
                    },
                    _renderStrategy: function() {
                        this._createStrategy();
                        this._strategy.render();
                        this.$element().data("dxScrollableStrategy", this._strategy)
                    },
                    _createStrategy: function() {
                        this._strategy = this.option("useNative") ? new _uiScrollable2.default(this) : new _uiScrollable.SimulatedStrategy(this)
                    },
                    _createActions: function() {
                        this._strategy && this._strategy.createActions()
                    },
                    _clean: function() {
                        this._strategy && this._strategy.dispose()
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "onStart":
                            case "onEnd":
                            case "onUpdated":
                            case "onScroll":
                            case "onBounce":
                                this._createActions();
                                break;
                            case "direction":
                                this._resetInactiveDirection();
                                this._invalidate();
                                break;
                            case "useNative":
                                this._setUseSimulatedScrollbar();
                                this._invalidate();
                                break;
                            case "inertiaEnabled":
                            case "scrollByThumb":
                            case "bounceEnabled":
                            case "useKeyboard":
                            case "showScrollbar":
                            case "useSimulatedScrollbar":
                                this._invalidate();
                                break;
                            case "disabled":
                                this._renderDisabledState();
                                this._strategy && this._strategy.disabledChanged();
                                break;
                            case "updateManually":
                            case "scrollByContent":
                                break;
                            case "width":
                                this.callBase(args);
                                this._updateRtlPosition();
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _resetInactiveDirection: function() {
                        const inactiveProp = this._getInactiveProp();
                        if (!inactiveProp || !(0, _window.hasWindow)()) {
                            return
                        }
                        const scrollOffset = this.scrollOffset();
                        scrollOffset[inactiveProp] = 0;
                        this.scrollTo(scrollOffset)
                    },
                    _getInactiveProp: function() {
                        const direction = this.option("direction");
                        if ("vertical" === direction) {
                            return "left"
                        }
                        if ("horizontal" === direction) {
                            return "top"
                        }
                    },
                    _location: function() {
                        return this._strategy.location()
                    },
                    _normalizeLocation: function(location) {
                        if ((0, _type.isPlainObject)(location)) {
                            const left = (0, _common.ensureDefined)(location.left, location.x);
                            const top = (0, _common.ensureDefined)(location.top, location.y);
                            return {
                                left: (0, _type.isDefined)(left) ? -left : void 0,
                                top: (0, _type.isDefined)(top) ? -top : void 0
                            }
                        } else {
                            const direction = this.option("direction");
                            return {
                                left: "vertical" !== direction ? -location : void 0,
                                top: "horizontal" !== direction ? -location : void 0
                            }
                        }
                    },
                    _isLocked: function() {
                        return this._locked
                    },
                    _lock: function() {
                        this._locked = true
                    },
                    _unlock: function() {
                        if (!this.option("disabled")) {
                            this._locked = false
                        }
                    },
                    _isDirection: function(direction) {
                        const current = this.option("direction");
                        if ("vertical" === direction) {
                            return "horizontal" !== current
                        }
                        if ("horizontal" === direction) {
                            return "vertical" !== current
                        }
                        return current === direction
                    },
                    _updateAllowedDirection: function() {
                        const allowedDirections = this._strategy._allowedDirections();
                        if (this._isDirection("both") && allowedDirections.vertical && allowedDirections.horizontal) {
                            this._allowedDirectionValue = "both"
                        } else if (this._isDirection("horizontal") && allowedDirections.horizontal) {
                            this._allowedDirectionValue = "horizontal"
                        } else if (this._isDirection("vertical") && allowedDirections.vertical) {
                            this._allowedDirectionValue = "vertical"
                        } else {
                            this._allowedDirectionValue = null
                        }
                    },
                    _allowedDirection: function() {
                        return this._allowedDirectionValue
                    },
                    $content: function() {
                        return this._$content
                    },
                    content: function() {
                        return (0, _element.getPublicElement)(this._$content)
                    },
                    container: function() {
                        return (0, _element.getPublicElement)(this._$container)
                    },
                    scrollOffset: function() {
                        return this._strategy._getScrollOffset()
                    },
                    _isRtlNativeStrategy: function() {
                        const {
                            useNative: useNative,
                            rtlEnabled: rtlEnabled
                        } = this.option();
                        return useNative && rtlEnabled
                    },
                    scrollTop: function() {
                        return this.scrollOffset().top
                    },
                    scrollLeft: function() {
                        return this.scrollOffset().left
                    },
                    clientHeight: function() {
                        return (0, _size.getHeight)(this._$container)
                    },
                    scrollHeight: function() {
                        return (0, _size.getOuterHeight)(this.$content())
                    },
                    clientWidth: function() {
                        return (0, _size.getWidth)(this._$container)
                    },
                    scrollWidth: function() {
                        return (0, _size.getOuterWidth)(this.$content())
                    },
                    update: function() {
                        if (!this._strategy) {
                            return
                        }
                        return (0, _deferred.when)(this._strategy.update()).done(function() {
                            this._updateAllowedDirection()
                        }.bind(this))
                    },
                    scrollBy: function(distance) {
                        distance = this._normalizeLocation(distance);
                        if (!distance.top && !distance.left) {
                            return
                        }
                        this._updateIfNeed();
                        this._strategy.scrollBy(distance)
                    },
                    scrollTo: function(targetLocation) {
                        targetLocation = this._normalizeLocation(targetLocation);
                        this._updateIfNeed();
                        let location = this._location();
                        if (!this.option("useNative")) {
                            targetLocation = this._strategy._applyScaleRatio(targetLocation);
                            location = this._strategy._applyScaleRatio(location)
                        }
                        if (this._isRtlNativeStrategy()) {
                            location.left = location.left - this._getMaxOffset().left
                        }
                        const distance = this._normalizeLocation({
                            left: location.left - (0, _common.ensureDefined)(targetLocation.left, location.left),
                            top: location.top - (0, _common.ensureDefined)(targetLocation.top, location.top)
                        });
                        if (!distance.top && !distance.left) {
                            return
                        }
                        this._strategy.scrollBy(distance)
                    },
                    scrollToElement: function(element, offset) {
                        const $element = (0, _renderer.default)(element);
                        const elementInsideContent = this.$content().find(element).length;
                        const elementIsInsideContent = $element.parents(".dx-scrollable").length - $element.parents(".dx-scrollable-content").length === 0;
                        if (!elementInsideContent || !elementIsInsideContent) {
                            return
                        }
                        const scrollPosition = {
                            top: 0,
                            left: 0
                        };
                        const direction = this.option("direction");
                        if ("vertical" !== direction) {
                            scrollPosition.left = this.getScrollElementPosition($element, "horizontal", offset)
                        }
                        if ("horizontal" !== direction) {
                            scrollPosition.top = this.getScrollElementPosition($element, "vertical", offset)
                        }
                        this.scrollTo(scrollPosition)
                    },
                    getScrollElementPosition: function($element, direction, offset) {
                        const scrollOffset = this.scrollOffset();
                        return (0, _get_element_location_internal.getElementLocationInternal)($element.get(0), direction, (0, _renderer.default)(this.container()).get(0), scrollOffset, offset)
                    },
                    _updateIfNeed: function() {
                        if (!this.option("updateManually")) {
                            this.update()
                        }
                    },
                    _useTemplates: function() {
                        return false
                    },
                    isRenovated: function() {
                        return !!Scrollable.IS_RENOVATED_WIDGET
                    }
                });
                (0, _component_registrator.default)(SCROLLABLE, Scrollable);
                var _default = Scrollable;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        54142:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/scroll_view/ui.scrollable.simulated.js ***!
              \***************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.SimulatedStrategy = exports.Scroller = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _inflector = __webpack_require__( /*! ../../core/utils/inflector */ 78008);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _position = __webpack_require__( /*! ../../core/utils/position */ 37518);
                var _translator = __webpack_require__( /*! ../../animation/translator */ 31648);
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 38377));
                var _animator = _interopRequireDefault(__webpack_require__( /*! ./animator */ 6866));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./ui.scrollbar */ 89043));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const HORIZONTAL = "horizontal";
                const FRAME_DURATION = Math.round(1e3 / 60);
                const BOUNCE_FRAMES = 400 / FRAME_DURATION;
                const BOUNCE_ACCELERATION_SUM = (1 - Math.pow(.92, BOUNCE_FRAMES)) / (1 - .92);
                const KEY_CODES_PAGE_UP = "pageUp",
                    KEY_CODES_PAGE_DOWN = "pageDown",
                    KEY_CODES_END = "end",
                    KEY_CODES_HOME = "home",
                    KEY_CODES_LEFT = "leftArrow",
                    KEY_CODES_UP = "upArrow",
                    KEY_CODES_RIGHT = "rightArrow",
                    KEY_CODES_DOWN = "downArrow",
                    KEY_CODES_TAB = "tab";
                const InertiaAnimator = _animator.default.inherit({
                    ctor: function(scroller) {
                        this.callBase();
                        this.scroller = scroller
                    },
                    VELOCITY_LIMIT: 1,
                    _isFinished: function() {
                        return Math.abs(this.scroller._velocity) <= this.VELOCITY_LIMIT
                    },
                    _step: function() {
                        this.scroller._scrollStep(this.scroller._velocity);
                        this.scroller._velocity *= this._acceleration()
                    },
                    _acceleration: function() {
                        return this.scroller._inBounds() ? .92 : .5
                    },
                    _complete: function() {
                        this.scroller._scrollComplete()
                    }
                });
                const BounceAnimator = InertiaAnimator.inherit({
                    VELOCITY_LIMIT: .2,
                    _isFinished: function() {
                        return this.scroller._crossBoundOnNextStep() || this.callBase()
                    },
                    _acceleration: function() {
                        return .92
                    },
                    _complete: function() {
                        this.scroller._move(this.scroller._bounceLocation);
                        this.callBase()
                    }
                });
                const Scroller = _class.default.inherit({
                    ctor: function(options) {
                        this._initOptions(options);
                        this._initAnimators();
                        this._initScrollbar()
                    },
                    _initOptions: function(options) {
                        this._location = 0;
                        this._topReached = false;
                        this._bottomReached = false;
                        this._axis = options.direction === HORIZONTAL ? "x" : "y";
                        this._prop = options.direction === HORIZONTAL ? "left" : "top";
                        this._dimension = options.direction === HORIZONTAL ? "width" : "height";
                        this._scrollProp = options.direction === HORIZONTAL ? "scrollLeft" : "scrollTop";
                        (0, _iterator.each)(options, (optionName, optionValue) => {
                            this["_" + optionName] = optionValue
                        })
                    },
                    _initAnimators: function() {
                        this._inertiaAnimator = new InertiaAnimator(this);
                        this._bounceAnimator = new BounceAnimator(this)
                    },
                    _initScrollbar: function() {
                        this._scrollbar = new _ui.default((0, _renderer.default)("<div>").appendTo(this._$container), {
                            direction: this._direction,
                            visible: this._scrollByThumb,
                            visibilityMode: this._visibilityModeNormalize(this._scrollbarVisible),
                            expandable: this._scrollByThumb
                        });
                        this._$scrollbar = this._scrollbar.$element()
                    },
                    _visibilityModeNormalize: function(mode) {
                        return true === mode ? "onScroll" : false === mode ? "never" : mode
                    },
                    _scrollStep: function(delta) {
                        const prevLocation = this._location;
                        this._location += delta;
                        this._suppressBounce();
                        this._move();
                        if (Math.abs(prevLocation - this._location) < 1) {
                            return
                        }
                        _events_engine.default.triggerHandler(this._$container, {
                            type: "scroll"
                        })
                    },
                    _suppressBounce: function() {
                        if (this._bounceEnabled || this._inBounds(this._location)) {
                            return
                        }
                        this._velocity = 0;
                        this._location = this._boundLocation()
                    },
                    _boundLocation: function(location) {
                        location = void 0 !== location ? location : this._location;
                        return Math.max(Math.min(location, this._maxOffset), this._minOffset)
                    },
                    _move: function(location) {
                        this._location = void 0 !== location ? location * this._getScaleRatio() : this._location;
                        this._moveContent();
                        this._moveScrollbar()
                    },
                    _moveContent: function() {
                        const location = this._location;
                        this._$container[this._scrollProp](-location / this._getScaleRatio());
                        this._moveContentByTranslator(location)
                    },
                    _getScaleRatio: function() {
                        if ((0, _window.hasWindow)() && !this._scaleRatio) {
                            const element = this._$element.get(0);
                            const realDimension = this._getRealDimension(element, this._dimension);
                            const baseDimension = this._getBaseDimension(element, this._dimension);
                            this._scaleRatio = Math.round(realDimension / baseDimension * 100) / 100
                        }
                        return this._scaleRatio || 1
                    },
                    _getRealDimension: function(element, dimension) {
                        return Math.round((0, _position.getBoundingRect)(element)[dimension])
                    },
                    _getBaseDimension: function(element, dimension) {
                        const dimensionName = "offset" + (0, _inflector.titleize)(dimension);
                        return element[dimensionName]
                    },
                    _moveContentByTranslator: function(location) {
                        let translateOffset;
                        const minOffset = -this._maxScrollPropValue;
                        if (location > 0) {
                            translateOffset = location
                        } else if (location <= minOffset) {
                            translateOffset = location - minOffset
                        } else {
                            translateOffset = location % 1
                        }
                        if (this._translateOffset === translateOffset) {
                            return
                        }
                        const targetLocation = {};
                        targetLocation[this._prop] = translateOffset;
                        this._translateOffset = translateOffset;
                        if (0 === translateOffset) {
                            (0, _translator.resetPosition)(this._$content);
                            return
                        }(0, _translator.move)(this._$content, targetLocation)
                    },
                    _moveScrollbar: function() {
                        this._scrollbar.moveTo(this._location)
                    },
                    _scrollComplete: function() {
                        if (this._inBounds()) {
                            this._hideScrollbar();
                            if (this._completeDeferred) {
                                this._completeDeferred.resolve()
                            }
                        }
                        this._scrollToBounds()
                    },
                    _scrollToBounds: function() {
                        if (this._inBounds()) {
                            return
                        }
                        this._bounceAction();
                        this._setupBounce();
                        this._bounceAnimator.start()
                    },
                    _setupBounce: function() {
                        const boundLocation = this._bounceLocation = this._boundLocation();
                        const bounceDistance = boundLocation - this._location;
                        this._velocity = bounceDistance / BOUNCE_ACCELERATION_SUM
                    },
                    _inBounds: function(location) {
                        location = void 0 !== location ? location : this._location;
                        return this._boundLocation(location) === location
                    },
                    _crossBoundOnNextStep: function() {
                        const location = this._location;
                        const nextLocation = location + this._velocity;
                        return location < this._minOffset && nextLocation >= this._minOffset || location > this._maxOffset && nextLocation <= this._maxOffset
                    },
                    _initHandler: function(e) {
                        this._stopScrolling();
                        this._prepareThumbScrolling(e)
                    },
                    _stopScrolling: (0, _common.deferRenderer)((function() {
                        this._hideScrollbar();
                        this._inertiaAnimator.stop();
                        this._bounceAnimator.stop()
                    })),
                    _prepareThumbScrolling: function(e) {
                        if ((0, _index.isDxMouseWheelEvent)(e.originalEvent)) {
                            return
                        }
                        const $target = (0, _renderer.default)(e.originalEvent.target);
                        const scrollbarClicked = this._isScrollbar($target);
                        if (scrollbarClicked) {
                            this._moveToMouseLocation(e)
                        }
                        this._thumbScrolling = scrollbarClicked || this._isThumb($target);
                        this._crossThumbScrolling = !this._thumbScrolling && this._isAnyThumbScrolling($target);
                        if (this._thumbScrolling) {
                            this._scrollbar.feedbackOn()
                        }
                    },
                    _isThumbScrollingHandler: function($target) {
                        return this._isThumb($target)
                    },
                    _moveToMouseLocation: function(e) {
                        const mouseLocation = e["page" + this._axis.toUpperCase()] - this._$element.offset()[this._prop];
                        const location = this._location + mouseLocation / this._containerToContentRatio() - (0, _size.getHeight)(this._$container) / 2;
                        this._scrollStep(-Math.round(location))
                    },
                    _startHandler: function() {
                        this._showScrollbar()
                    },
                    _moveHandler: function(delta) {
                        if (this._crossThumbScrolling) {
                            return
                        }
                        if (this._thumbScrolling) {
                            delta[this._axis] = -Math.round(delta[this._axis] / this._containerToContentRatio())
                        }
                        this._scrollBy(delta)
                    },
                    _scrollBy: function(delta) {
                        delta = delta[this._axis];
                        if (!this._inBounds()) {
                            delta *= .5
                        }
                        this._scrollStep(delta)
                    },
                    _scrollByHandler: function(delta) {
                        this._scrollBy(delta);
                        this._scrollComplete()
                    },
                    _containerToContentRatio: function() {
                        return this._scrollbar.containerToContentRatio()
                    },
                    _endHandler: function(velocity) {
                        this._completeDeferred = new _deferred.Deferred;
                        this._velocity = velocity[this._axis];
                        this._inertiaHandler();
                        this._resetThumbScrolling();
                        return this._completeDeferred.promise()
                    },
                    _inertiaHandler: function() {
                        this._suppressInertia();
                        this._inertiaAnimator.start()
                    },
                    _suppressInertia: function() {
                        if (!this._inertiaEnabled || this._thumbScrolling) {
                            this._velocity = 0
                        }
                    },
                    _resetThumbScrolling: function() {
                        this._thumbScrolling = false;
                        this._crossThumbScrolling = false
                    },
                    _stopHandler: function() {
                        if (this._thumbScrolling) {
                            this._scrollComplete()
                        }
                        this._resetThumbScrolling();
                        this._scrollToBounds()
                    },
                    _disposeHandler: function() {
                        this._stopScrolling();
                        this._$scrollbar.remove()
                    },
                    _updateHandler: function() {
                        this._update();
                        this._moveToBounds()
                    },
                    _update: function() {
                        this._stopScrolling();
                        return (0, _common.deferUpdate)(() => {
                            this._resetScaleRatio();
                            this._updateLocation();
                            this._updateBounds();
                            this._updateScrollbar();
                            (0, _common.deferRender)(() => {
                                this._moveScrollbar();
                                this._scrollbar.update()
                            })
                        })
                    },
                    _resetScaleRatio: function() {
                        this._scaleRatio = null
                    },
                    _updateLocation: function() {
                        this._location = ((0, _translator.locate)(this._$content)[this._prop] - this._$container[this._scrollProp]()) * this._getScaleRatio()
                    },
                    _updateBounds: function() {
                        this._maxOffset = this._getMaxOffset();
                        this._minOffset = this._getMinOffset()
                    },
                    _getMaxOffset: function() {
                        return 0
                    },
                    _getMinOffset: function() {
                        this._maxScrollPropValue = Math.max(this._contentSize() - this._containerSize(), 0);
                        return -this._maxScrollPropValue
                    },
                    _updateScrollbar: (0, _common.deferUpdater)((function() {
                        const containerSize = this._containerSize();
                        const contentSize = this._contentSize();
                        const baseContainerSize = this._getBaseDimension(this._$container.get(0), this._dimension);
                        const baseContentSize = this._getBaseDimension(this._$content.get(0), this._dimension);
                        (0, _common.deferRender)(() => {
                            this._scrollbar.option({
                                containerSize: containerSize,
                                contentSize: contentSize,
                                baseContainerSize: baseContainerSize,
                                baseContentSize: baseContentSize,
                                scaleRatio: this._getScaleRatio()
                            })
                        })
                    })),
                    _moveToBounds: (0, _common.deferRenderer)((0, _common.deferUpdater)((0, _common.deferRenderer)((function() {
                        const location = this._boundLocation();
                        const locationChanged = location !== this._location;
                        this._location = location;
                        this._move();
                        if (locationChanged) {
                            this._scrollAction()
                        }
                    })))),
                    _createActionsHandler: function(actions) {
                        this._scrollAction = actions.scroll;
                        this._bounceAction = actions.bounce
                    },
                    _showScrollbar: function() {
                        this._scrollbar.option("visible", true)
                    },
                    _hideScrollbar: function() {
                        this._scrollbar.option("visible", false)
                    },
                    _containerSize: function() {
                        return this._getRealDimension(this._$container.get(0), this._dimension)
                    },
                    _contentSize: function() {
                        const isOverflowHidden = "hidden" === this._$content.css("overflow" + this._axis.toUpperCase());
                        let contentSize = this._getRealDimension(this._$content.get(0), this._dimension);
                        if (!isOverflowHidden) {
                            const containerScrollSize = this._$content[0]["scroll" + (0, _inflector.titleize)(this._dimension)] * this._getScaleRatio();
                            contentSize = Math.max(containerScrollSize, contentSize)
                        }
                        return contentSize
                    },
                    _validateEvent: function(e) {
                        const $target = (0, _renderer.default)(e.originalEvent.target);
                        return this._isThumb($target) || this._isScrollbar($target)
                    },
                    _isThumb: function($element) {
                        return this._scrollByThumb && this._scrollbar.isThumb($element)
                    },
                    _isScrollbar: function($element) {
                        return this._scrollByThumb && $element && $element.is(this._$scrollbar)
                    },
                    _reachedMin: function() {
                        return Math.round(this._location - this._minOffset) <= 0
                    },
                    _reachedMax: function() {
                        return Math.round(this._location - this._maxOffset) >= 0
                    },
                    _cursorEnterHandler: function() {
                        this._resetScaleRatio();
                        this._updateScrollbar();
                        this._scrollbar.cursorEnter()
                    },
                    _cursorLeaveHandler: function() {
                        this._scrollbar.cursorLeave()
                    },
                    dispose: _common.noop
                });
                exports.Scroller = Scroller;
                let hoveredScrollable;
                let activeScrollable;
                const SimulatedStrategy = _class.default.inherit({
                    ctor: function(scrollable) {
                        this._init(scrollable)
                    },
                    _init: function(scrollable) {
                        this._component = scrollable;
                        this._$element = scrollable.$element();
                        this._$container = (0, _renderer.default)(scrollable.container());
                        this._$wrapper = scrollable._$wrapper;
                        this._$content = scrollable.$content();
                        this.option = scrollable.option.bind(scrollable);
                        this._createActionByOption = scrollable._createActionByOption.bind(scrollable);
                        this._isLocked = scrollable._isLocked.bind(scrollable);
                        this._isDirection = scrollable._isDirection.bind(scrollable);
                        this._allowedDirection = scrollable._allowedDirection.bind(scrollable);
                        this._getMaxOffset = scrollable._getMaxOffset.bind(scrollable)
                    },
                    render: function() {
                        this._$element.addClass("dx-scrollable-simulated");
                        this._createScrollers();
                        if (this.option("useKeyboard")) {
                            this._$container.prop("tabIndex", 0)
                        }
                        this._attachKeyboardHandler();
                        this._attachCursorHandlers()
                    },
                    _createScrollers: function() {
                        this._scrollers = {};
                        if (this._isDirection(HORIZONTAL)) {
                            this._createScroller(HORIZONTAL)
                        }
                        if (this._isDirection("vertical")) {
                            this._createScroller("vertical")
                        }
                        this._$element.toggleClass("dx-scrollable-scrollbars-alwaysvisible", "always" === this.option("showScrollbar"))
                    },
                    _createScroller: function(direction) {
                        this._scrollers[direction] = new Scroller(this._scrollerOptions(direction))
                    },
                    _scrollerOptions: function(direction) {
                        return {
                            direction: direction,
                            $content: this._$content,
                            $container: this._$container,
                            $wrapper: this._$wrapper,
                            $element: this._$element,
                            scrollByThumb: this.option("scrollByThumb"),
                            scrollbarVisible: this.option("showScrollbar"),
                            bounceEnabled: this.option("bounceEnabled"),
                            inertiaEnabled: this.option("inertiaEnabled"),
                            isAnyThumbScrolling: this._isAnyThumbScrolling.bind(this)
                        }
                    },
                    _applyScaleRatio: function(targetLocation) {
                        for (const direction in this._scrollers) {
                            const prop = this._getPropByDirection(direction);
                            if ((0, _type.isDefined)(targetLocation[prop])) {
                                const scroller = this._scrollers[direction];
                                targetLocation[prop] *= scroller._getScaleRatio()
                            }
                        }
                        return targetLocation
                    },
                    _isAnyThumbScrolling: function($target) {
                        let result = false;
                        this._eventHandler("isThumbScrolling", $target).done((function(isThumbScrollingVertical, isThumbScrollingHorizontal) {
                            result = isThumbScrollingVertical || isThumbScrollingHorizontal
                        }));
                        return result
                    },
                    handleInit: function(e) {
                        this._suppressDirections(e);
                        this._eventForUserAction = e;
                        this._eventHandler("init", e)
                    },
                    _suppressDirections: function(e) {
                        if ((0, _index.isDxMouseWheelEvent)(e.originalEvent)) {
                            this._prepareDirections(true);
                            return
                        }
                        this._prepareDirections();
                        this._eachScroller((function(scroller, direction) {
                            const $target = (0, _renderer.default)(e.originalEvent.target);
                            const isValid = scroller._validateEvent(e) || this.option("scrollByContent") && this._isContent($target);
                            this._validDirections[direction] = isValid
                        }))
                    },
                    _isContent: function($element) {
                        return !!$element.closest(this._$element).length
                    },
                    _prepareDirections: function(value) {
                        value = value || false;
                        this._validDirections = {};
                        this._validDirections[HORIZONTAL] = value;
                        this._validDirections.vertical = value
                    },
                    _eachScroller: function(callback) {
                        callback = callback.bind(this);
                        (0, _iterator.each)(this._scrollers, (function(direction, scroller) {
                            callback(scroller, direction)
                        }))
                    },
                    handleStart: function(e) {
                        this._eventForUserAction = e;
                        this._eventHandler("start").done(this._startAction)
                    },
                    _saveActive: function() {
                        activeScrollable = this
                    },
                    _resetActive: function() {
                        if (activeScrollable === this) {
                            activeScrollable = null
                        }
                    },
                    handleMove: function(e) {
                        if (this._isLocked()) {
                            e.cancel = true;
                            this._resetActive();
                            return
                        }
                        this._saveActive();
                        e.preventDefault && e.preventDefault();
                        this._adjustDistance(e, e.delta);
                        this._eventForUserAction = e;
                        this._eventHandler("move", e.delta)
                    },
                    _adjustDistance: function(e, distance) {
                        distance.x *= this._validDirections[HORIZONTAL];
                        distance.y *= this._validDirections.vertical;
                        const devicePixelRatio = this._tryGetDevicePixelRatio();
                        if (devicePixelRatio && (0, _index.isDxMouseWheelEvent)(e.originalEvent)) {
                            distance.x = Math.round(distance.x / devicePixelRatio * 100) / 100;
                            distance.y = Math.round(distance.y / devicePixelRatio * 100) / 100
                        }
                    },
                    _tryGetDevicePixelRatio: function() {
                        if ((0, _window.hasWindow)()) {
                            return (0, _window.getWindow)().devicePixelRatio
                        }
                    },
                    handleEnd: function(e) {
                        this._resetActive();
                        this._refreshCursorState(e.originalEvent && e.originalEvent.target);
                        this._adjustDistance(e, e.velocity);
                        this._eventForUserAction = e;
                        return this._eventHandler("end", e.velocity).done(this._endAction)
                    },
                    handleCancel: function(e) {
                        this._resetActive();
                        this._eventForUserAction = e;
                        return this._eventHandler("end", {
                            x: 0,
                            y: 0
                        })
                    },
                    handleStop: function() {
                        this._resetActive();
                        this._eventHandler("stop")
                    },
                    handleScroll: function() {
                        this._updateRtlConfig();
                        this._scrollAction()
                    },
                    _attachKeyboardHandler: function() {
                        _events_engine.default.off(this._$element, ".".concat("dxSimulatedScrollableKeyboard"));
                        if (!this.option("disabled") && this.option("useKeyboard")) {
                            _events_engine.default.on(this._$element, (0, _index.addNamespace)("keydown", "dxSimulatedScrollableKeyboard"), this._keyDownHandler.bind(this))
                        }
                    },
                    _keyDownHandler: function(e) {
                        clearTimeout(this._updateHandlerTimeout);
                        this._updateHandlerTimeout = setTimeout(() => {
                            if ((0, _index.normalizeKeyName)(e) === KEY_CODES_TAB) {
                                this._eachScroller(scroller => {
                                    scroller._updateHandler()
                                })
                            }
                        });
                        if (!this._$container.is(_dom_adapter.default.getActiveElement(this._$container.get(0)))) {
                            return
                        }
                        let handled = true;
                        switch ((0, _index.normalizeKeyName)(e)) {
                            case KEY_CODES_DOWN:
                                this._scrollByLine({
                                    y: 1
                                });
                                break;
                            case KEY_CODES_UP:
                                this._scrollByLine({
                                    y: -1
                                });
                                break;
                            case KEY_CODES_RIGHT:
                                this._scrollByLine({
                                    x: 1
                                });
                                break;
                            case KEY_CODES_LEFT:
                                this._scrollByLine({
                                    x: -1
                                });
                                break;
                            case KEY_CODES_PAGE_DOWN:
                                this._scrollByPage(1);
                                break;
                            case KEY_CODES_PAGE_UP:
                                this._scrollByPage(-1);
                                break;
                            case KEY_CODES_HOME:
                                this._scrollToHome();
                                break;
                            case KEY_CODES_END:
                                this._scrollToEnd();
                                break;
                            default:
                                handled = false
                        }
                        if (handled) {
                            e.stopPropagation();
                            e.preventDefault()
                        }
                    },
                    _scrollByLine: function(lines) {
                        const devicePixelRatio = this._tryGetDevicePixelRatio();
                        let scrollOffset = 40;
                        if (devicePixelRatio) {
                            scrollOffset = Math.abs(scrollOffset / devicePixelRatio * 100) / 100
                        }
                        this.scrollBy({
                            top: (lines.y || 0) * -scrollOffset,
                            left: (lines.x || 0) * -scrollOffset
                        })
                    },
                    _scrollByPage: function(page) {
                        const prop = this._wheelProp();
                        const dimension = this._dimensionByProp(prop);
                        const distance = {};
                        const getter = "width" === dimension ? _size.getWidth : _size.getHeight;
                        distance[prop] = page * -getter(this._$container);
                        this.scrollBy(distance)
                    },
                    _dimensionByProp: function(prop) {
                        return "left" === prop ? "width" : "height"
                    },
                    _getPropByDirection: function(direction) {
                        return direction === HORIZONTAL ? "left" : "top"
                    },
                    _scrollToHome: function() {
                        const prop = this._wheelProp();
                        const distance = {};
                        distance[prop] = 0;
                        this._component.scrollTo(distance)
                    },
                    _scrollToEnd: function() {
                        const prop = this._wheelProp();
                        const dimension = this._dimensionByProp(prop);
                        const distance = {};
                        const getter = "width" === dimension ? _size.getWidth : _size.getHeight;
                        distance[prop] = getter(this._$content) - getter(this._$container);
                        this._component.scrollTo(distance)
                    },
                    createActions: function() {
                        this._startAction = this._createActionHandler("onStart");
                        this._endAction = this._createActionHandler("onEnd");
                        this._updateAction = this._createActionHandler("onUpdated");
                        this._createScrollerActions()
                    },
                    _createScrollerActions: function() {
                        this._scrollAction = this._createActionHandler("onScroll");
                        this._bounceAction = this._createActionHandler("onBounce");
                        this._eventHandler("createActions", {
                            scroll: this._scrollAction,
                            bounce: this._bounceAction
                        })
                    },
                    _createActionHandler: function(optionName) {
                        const actionHandler = this._createActionByOption(optionName);
                        return () => {
                            actionHandler((0, _extend.extend)(this._createActionArgs(), arguments))
                        }
                    },
                    _createActionArgs: function() {
                        const {
                            horizontal: scrollerX,
                            vertical: scrollerY
                        } = this._scrollers;
                        const offset = this._getScrollOffset();
                        this._scrollOffset = {
                            top: scrollerY && offset.top,
                            left: scrollerX && offset.left
                        };
                        return {
                            event: this._eventForUserAction,
                            scrollOffset: this._scrollOffset,
                            reachedLeft: scrollerX && scrollerX._reachedMax(),
                            reachedRight: scrollerX && scrollerX._reachedMin(),
                            reachedTop: scrollerY && scrollerY._reachedMax(),
                            reachedBottom: scrollerY && scrollerY._reachedMin()
                        }
                    },
                    _getScrollOffset() {
                        return {
                            top: -this.location().top,
                            left: -this.location().left
                        }
                    },
                    _eventHandler: function(eventName) {
                        const args = [].slice.call(arguments).slice(1);
                        const deferreds = (0, _iterator.map)(this._scrollers, scroller => scroller["_" + eventName + "Handler"].apply(scroller, args));
                        return _deferred.when.apply(_renderer.default, deferreds).promise()
                    },
                    location: function() {
                        const location = (0, _translator.locate)(this._$content);
                        location.top -= this._$container.scrollTop();
                        location.left -= this._$container.scrollLeft();
                        return location
                    },
                    disabledChanged: function() {
                        this._attachCursorHandlers()
                    },
                    _attachCursorHandlers: function() {
                        _events_engine.default.off(this._$element, ".".concat("dxSimulatedScrollableCursor"));
                        if (!this.option("disabled") && this._isHoverMode()) {
                            _events_engine.default.on(this._$element, (0, _index.addNamespace)("mouseenter", "dxSimulatedScrollableCursor"), this._cursorEnterHandler.bind(this));
                            _events_engine.default.on(this._$element, (0, _index.addNamespace)("mouseleave", "dxSimulatedScrollableCursor"), this._cursorLeaveHandler.bind(this))
                        }
                    },
                    _isHoverMode: function() {
                        return "onHover" === this.option("showScrollbar")
                    },
                    _cursorEnterHandler: function(e) {
                        e = e || {};
                        e.originalEvent = e.originalEvent || {};
                        if (activeScrollable || e.originalEvent._hoverHandled) {
                            return
                        }
                        if (hoveredScrollable) {
                            hoveredScrollable._cursorLeaveHandler()
                        }
                        hoveredScrollable = this;
                        this._eventHandler("cursorEnter");
                        e.originalEvent._hoverHandled = true
                    },
                    _cursorLeaveHandler: function(e) {
                        if (hoveredScrollable !== this || activeScrollable === hoveredScrollable) {
                            return
                        }
                        this._eventHandler("cursorLeave");
                        hoveredScrollable = null;
                        this._refreshCursorState(e && e.relatedTarget)
                    },
                    _refreshCursorState: function(target) {
                        if (!this._isHoverMode() && (!target || activeScrollable)) {
                            return
                        }
                        const $target = (0, _renderer.default)(target);
                        const $scrollable = $target.closest(".".concat("dx-scrollable-simulated", ":not(.dx-state-disabled)"));
                        const targetScrollable = $scrollable.length && $scrollable.data("dxScrollableStrategy");
                        if (hoveredScrollable && hoveredScrollable !== targetScrollable) {
                            hoveredScrollable._cursorLeaveHandler()
                        }
                        if (targetScrollable) {
                            targetScrollable._cursorEnterHandler()
                        }
                    },
                    update: function() {
                        const result = this._eventHandler("update").done(this._updateAction);
                        return (0, _deferred.when)(result, (0, _common.deferUpdate)(() => {
                            const allowedDirections = this._allowedDirections();
                            (0, _common.deferRender)(() => {
                                let touchDirection = allowedDirections.vertical ? "pan-x" : "";
                                touchDirection = allowedDirections.horizontal ? "pan-y" : touchDirection;
                                touchDirection = allowedDirections.vertical && allowedDirections.horizontal ? "none" : touchDirection;
                                this._$container.css("touchAction", touchDirection)
                            });
                            return (0, _deferred.when)().promise()
                        }))
                    },
                    _allowedDirections: function() {
                        const bounceEnabled = this.option("bounceEnabled");
                        const verticalScroller = this._scrollers.vertical;
                        const horizontalScroller = this._scrollers[HORIZONTAL];
                        return {
                            vertical: verticalScroller && (verticalScroller._minOffset < 0 || bounceEnabled),
                            horizontal: horizontalScroller && (horizontalScroller._minOffset < 0 || bounceEnabled)
                        }
                    },
                    _updateBounds: function() {
                        this._scrollers[HORIZONTAL] && this._scrollers[HORIZONTAL]._updateBounds()
                    },
                    _isHorizontalAndRtlEnabled: function() {
                        return this.option("rtlEnabled") && "vertical" !== this.option("direction")
                    },
                    updateRtlPosition: function(needInitializeRtlConfig) {
                        if (needInitializeRtlConfig) {
                            this._rtlConfig = {
                                scrollRight: 0,
                                clientWidth: this._$container.get(0).clientWidth,
                                windowPixelRatio: this._getWindowDevicePixelRatio()
                            }
                        }
                        this._updateBounds();
                        if (this._isHorizontalAndRtlEnabled()) {
                            let scrollLeft = this._getMaxOffset().left - this._rtlConfig.scrollRight;
                            if (scrollLeft <= 0) {
                                scrollLeft = 0;
                                this._rtlConfig.scrollRight = this._getMaxOffset().left
                            }
                            if (this._getScrollOffset().left !== scrollLeft) {
                                this._rtlConfig.skipUpdating = true;
                                this._component.scrollTo({
                                    left: scrollLeft
                                });
                                this._rtlConfig.skipUpdating = false
                            }
                        }
                    },
                    _updateRtlConfig: function() {
                        if (this._isHorizontalAndRtlEnabled() && !this._rtlConfig.skipUpdating) {
                            const {
                                clientWidth: clientWidth,
                                scrollLeft: scrollLeft
                            } = this._$container.get(0);
                            const windowPixelRatio = this._getWindowDevicePixelRatio();
                            if (this._rtlConfig.windowPixelRatio === windowPixelRatio && this._rtlConfig.clientWidth === clientWidth) {
                                this._rtlConfig.scrollRight = this._getMaxOffset().left - scrollLeft
                            }
                            this._rtlConfig.clientWidth = clientWidth;
                            this._rtlConfig.windowPixelRatio = windowPixelRatio
                        }
                    },
                    _getWindowDevicePixelRatio: function() {
                        return (0, _window.hasWindow)() ? (0, _window.getWindow)().devicePixelRatio : 1
                    },
                    scrollBy: function(distance) {
                        const verticalScroller = this._scrollers.vertical;
                        const horizontalScroller = this._scrollers[HORIZONTAL];
                        if (verticalScroller) {
                            distance.top = verticalScroller._boundLocation(distance.top + verticalScroller._location) - verticalScroller._location
                        }
                        if (horizontalScroller) {
                            distance.left = horizontalScroller._boundLocation(distance.left + horizontalScroller._location) - horizontalScroller._location
                        }
                        this._prepareDirections(true);
                        this._startAction();
                        this._eventHandler("scrollBy", {
                            x: distance.left,
                            y: distance.top
                        });
                        this._endAction();
                        this._updateRtlConfig()
                    },
                    validate: function(e) {
                        if ((0, _index.isDxMouseWheelEvent)(e) && (0, _index.isCommandKeyPressed)(e)) {
                            return false
                        }
                        if (this.option("disabled")) {
                            return false
                        }
                        if (this.option("bounceEnabled")) {
                            return true
                        }
                        return (0, _index.isDxMouseWheelEvent)(e) ? this._validateWheel(e) : this._validateMove(e)
                    },
                    _validateWheel: function(e) {
                        const scroller = this._scrollers[this._wheelDirection(e)];
                        const reachedMin = scroller._reachedMin();
                        const reachedMax = scroller._reachedMax();
                        const contentGreaterThanContainer = !reachedMin || !reachedMax;
                        const locatedNotAtBound = !reachedMin && !reachedMax;
                        const scrollFromMin = reachedMin && e.delta > 0;
                        const scrollFromMax = reachedMax && e.delta < 0;
                        let validated = contentGreaterThanContainer && (locatedNotAtBound || scrollFromMin || scrollFromMax);
                        validated = validated || void 0 !== this._validateWheelTimer;
                        if (validated) {
                            clearTimeout(this._validateWheelTimer);
                            this._validateWheelTimer = setTimeout(() => {
                                this._validateWheelTimer = void 0
                            }, 500)
                        }
                        return validated
                    },
                    _validateMove: function(e) {
                        if (!this.option("scrollByContent") && !(0, _renderer.default)(e.target).closest(".".concat("dx-scrollable-scrollbar")).length) {
                            return false
                        }
                        return this._allowedDirection()
                    },
                    getDirection: function(e) {
                        return (0, _index.isDxMouseWheelEvent)(e) ? this._wheelDirection(e) : this._allowedDirection()
                    },
                    _wheelProp: function() {
                        return this._wheelDirection() === HORIZONTAL ? "left" : "top"
                    },
                    _wheelDirection: function(e) {
                        switch (this.option("direction")) {
                            case HORIZONTAL:
                                return HORIZONTAL;
                            case "vertical":
                                return "vertical";
                            default:
                                return e && e.shiftKey ? HORIZONTAL : "vertical"
                        }
                    },
                    dispose: function() {
                        this._resetActive();
                        if (hoveredScrollable === this) {
                            hoveredScrollable = null
                        }
                        this._eventHandler("dispose");
                        this._detachEventHandlers();
                        this._$element.removeClass("dx-scrollable-simulated");
                        this._eventForUserAction = null;
                        clearTimeout(this._validateWheelTimer);
                        clearTimeout(this._updateHandlerTimeout)
                    },
                    _detachEventHandlers: function() {
                        _events_engine.default.off(this._$element, ".".concat("dxSimulatedScrollableCursor"));
                        _events_engine.default.off(this._$container, ".".concat("dxSimulatedScrollableKeyboard"))
                    }
                });
                exports.SimulatedStrategy = SimulatedStrategy
            },
        89043:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/scroll_view/ui.scrollbar.js ***!
              \****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/ready_callbacks */ 24311));
                var _translator = __webpack_require__( /*! ../../animation/translator */ 31648);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../events/pointer */ 93786));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const SCROLLABLE_SCROLLBAR_ACTIVE_CLASS = "".concat("dx-scrollable-scrollbar", "-active");
                const SCROLLBAR_VISIBLE_onScroll = "onScroll",
                    SCROLLBAR_VISIBLE_onHover = "onHover",
                    SCROLLBAR_VISIBLE_always = "always",
                    SCROLLBAR_VISIBLE_never = "never";
                let activeScrollbar = null;
                const Scrollbar = _ui.default.inherit({
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            direction: null,
                            visible: false,
                            activeStateEnabled: false,
                            visibilityMode: SCROLLBAR_VISIBLE_onScroll,
                            containerSize: 0,
                            contentSize: 0,
                            expandable: true,
                            scaleRatio: 1
                        })
                    },
                    _init: function() {
                        this.callBase();
                        this._isHovered = false
                    },
                    _initMarkup: function() {
                        this._renderThumb();
                        this.callBase()
                    },
                    _render: function() {
                        this.callBase();
                        this._renderDirection();
                        this._update();
                        this._attachPointerDownHandler();
                        this.option("hoverStateEnabled", this._isHoverMode());
                        this.$element().toggleClass("dx-scrollbar-hoverable", this.option("hoverStateEnabled"))
                    },
                    _renderThumb: function() {
                        this._$thumb = (0, _renderer.default)("<div>").addClass("dx-scrollable-scroll");
                        (0, _renderer.default)("<div>").addClass("dx-scrollable-scroll-content").appendTo(this._$thumb);
                        this.$element().addClass("dx-scrollable-scrollbar").append(this._$thumb)
                    },
                    isThumb: function($element) {
                        return !!this.$element().find($element).length
                    },
                    _isHoverMode: function() {
                        const visibilityMode = this.option("visibilityMode");
                        return (visibilityMode === SCROLLBAR_VISIBLE_onHover || visibilityMode === SCROLLBAR_VISIBLE_always) && this.option("expandable")
                    },
                    _renderDirection: function() {
                        const direction = this.option("direction");
                        this.$element().addClass("dx-scrollbar-" + direction);
                        this._dimension = "horizontal" === direction ? "width" : "height";
                        this._prop = "horizontal" === direction ? "left" : "top"
                    },
                    _attachPointerDownHandler: function() {
                        _events_engine.default.on(this._$thumb, (0, _index.addNamespace)(_pointer.default.down, "dxScrollbar"), this.feedbackOn.bind(this))
                    },
                    feedbackOn: function() {
                        this.$element().addClass(SCROLLABLE_SCROLLBAR_ACTIVE_CLASS);
                        activeScrollbar = this
                    },
                    feedbackOff: function() {
                        this.$element().removeClass(SCROLLABLE_SCROLLBAR_ACTIVE_CLASS);
                        activeScrollbar = null
                    },
                    cursorEnter: function() {
                        this._isHovered = true;
                        if (this._needScrollbar()) {
                            this.option("visible", true)
                        }
                    },
                    cursorLeave: function() {
                        this._isHovered = false;
                        this.option("visible", false)
                    },
                    _renderDimensions: function() {
                        this._$thumb.css({
                            width: this.option("width"),
                            height: this.option("height")
                        })
                    },
                    _toggleVisibility: function(visible) {
                        if (this.option("visibilityMode") === SCROLLBAR_VISIBLE_onScroll) {
                            this._$thumb.css("opacity")
                        }
                        visible = this._adjustVisibility(visible);
                        this.option().visible = visible;
                        this._$thumb.toggleClass("dx-state-invisible", !visible)
                    },
                    _adjustVisibility: function(visible) {
                        if (this._baseContainerToContentRatio && !this._needScrollbar()) {
                            return false
                        }
                        switch (this.option("visibilityMode")) {
                            case SCROLLBAR_VISIBLE_onScroll:
                                break;
                            case SCROLLBAR_VISIBLE_onHover:
                                visible = visible || !!this._isHovered;
                                break;
                            case SCROLLBAR_VISIBLE_never:
                                visible = false;
                                break;
                            case SCROLLBAR_VISIBLE_always:
                                visible = true
                        }
                        return visible
                    },
                    moveTo: function(location) {
                        if (this._isHidden()) {
                            return
                        }
                        if ((0, _type.isPlainObject)(location)) {
                            location = location[this._prop] || 0
                        }
                        const scrollBarLocation = {};
                        scrollBarLocation[this._prop] = this._calculateScrollBarPosition(location);
                        (0, _translator.move)(this._$thumb, scrollBarLocation)
                    },
                    _calculateScrollBarPosition: function(location) {
                        return -location * this._thumbRatio
                    },
                    _update: function() {
                        const containerSize = Math.round(this.option("containerSize"));
                        const contentSize = Math.round(this.option("contentSize"));
                        let baseContainerSize = Math.round(this.option("baseContainerSize"));
                        let baseContentSize = Math.round(this.option("baseContentSize"));
                        if (isNaN(baseContainerSize)) {
                            baseContainerSize = containerSize;
                            baseContentSize = contentSize
                        }
                        this._baseContainerToContentRatio = baseContentSize ? baseContainerSize / baseContentSize : baseContainerSize;
                        this._realContainerToContentRatio = contentSize ? containerSize / contentSize : containerSize;
                        const thumbSize = Math.round(Math.max(Math.round(containerSize * this._realContainerToContentRatio), 15));
                        this._thumbRatio = (containerSize - thumbSize) / (this.option("scaleRatio") * (contentSize - containerSize));
                        this.option(this._dimension, thumbSize / this.option("scaleRatio"));
                        this.$element().css("display", this._needScrollbar() ? "" : "none")
                    },
                    _isHidden: function() {
                        return this.option("visibilityMode") === SCROLLBAR_VISIBLE_never
                    },
                    _needScrollbar: function() {
                        return !this._isHidden() && this._baseContainerToContentRatio < 1
                    },
                    containerToContentRatio: function() {
                        return this._realContainerToContentRatio
                    },
                    _normalizeSize: function(size) {
                        return (0, _type.isPlainObject)(size) ? size[this._dimension] || 0 : size
                    },
                    _clean: function() {
                        this.callBase();
                        if (this === activeScrollbar) {
                            activeScrollbar = null
                        }
                        _events_engine.default.off(this._$thumb, ".dxScrollbar")
                    },
                    _optionChanged: function(args) {
                        if (this._isHidden()) {
                            return
                        }
                        switch (args.name) {
                            case "containerSize":
                            case "contentSize":
                                this.option()[args.name] = this._normalizeSize(args.value);
                                this._update();
                                break;
                            case "baseContentSize":
                            case "baseContainerSize":
                                this._update();
                                break;
                            case "visibilityMode":
                            case "direction":
                                this._invalidate();
                                break;
                            case "scaleRatio":
                                this._update();
                                break;
                            default:
                                this.callBase.apply(this, arguments)
                        }
                    },
                    update: (0, _common.deferRenderer)((function() {
                        this._adjustVisibility() && this.option("visible", true)
                    }))
                });
                _ready_callbacks.default.add((function() {
                    _events_engine.default.subscribeGlobal(_dom_adapter.default.getDocument(), (0, _index.addNamespace)(_pointer.default.up, "dxScrollbar"), (function() {
                        if (activeScrollbar) {
                            activeScrollbar.feedbackOff()
                        }
                    }))
                }));
                var _default = Scrollbar;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        78665:
            /*!**************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/select_box.js ***!
              \**************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);
                var _element = __webpack_require__( /*! ../core/element */ 6415);
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../core/errors */ 17381));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../core/dom_adapter */ 73349));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../localization/message */ 28109));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./drop_down_editor/ui.drop_down_list */ 32468));
                __webpack_require__( /*! ./list/modules/selection */ 20551);
                var _index = __webpack_require__( /*! ../events/utils/index */ 39611);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const SelectBox = _ui.default.inherit({
                    _supportedKeys: function() {
                        const that = this;
                        const parent = this.callBase();
                        const clearSelectBox = function(e) {
                            const isEditable = this._isEditable();
                            if (!isEditable) {
                                if (this.option("showClearButton")) {
                                    e.preventDefault();
                                    this.clear()
                                }
                            } else if (this._valueSubstituted()) {
                                this._preventFiltering = true
                            }
                            this._savedTextRemoveEvent = e;
                            this._preventSubstitution = true
                        };
                        const searchIfNeeded = function() {
                            if (that.option("searchEnabled") && that._valueSubstituted()) {
                                that._searchHandler()
                            }
                        };
                        return (0, _extend.extend)({}, parent, {
                            tab: function() {
                                if (this.option("opened") && !this._popup.getFocusableElements().length) {
                                    this._resetCaretPosition(true)
                                }
                                parent.tab && parent.tab.apply(this, arguments);
                                this._cancelSearchIfNeed()
                            },
                            upArrow: function(e) {
                                if (parent.upArrow.apply(this, arguments)) {
                                    if (!this.option("opened")) {
                                        this._setNextValue(e)
                                    }
                                    return true
                                }
                            },
                            downArrow: function(e) {
                                if (parent.downArrow.apply(this, arguments)) {
                                    if (!this.option("opened")) {
                                        this._setNextValue(e)
                                    }
                                    return true
                                }
                            },
                            leftArrow: function() {
                                searchIfNeeded();
                                parent.leftArrow && parent.leftArrow.apply(this, arguments)
                            },
                            rightArrow: function() {
                                searchIfNeeded();
                                parent.rightArrow && parent.rightArrow.apply(this, arguments)
                            },
                            home: function() {
                                searchIfNeeded();
                                parent.home && parent.home.apply(this, arguments)
                            },
                            end: function() {
                                searchIfNeeded();
                                parent.end && parent.end.apply(this, arguments)
                            },
                            escape: function() {
                                const result = parent.escape && parent.escape.apply(this, arguments);
                                this._cancelEditing();
                                return null !== result && void 0 !== result ? result : true
                            },
                            enter: function(e) {
                                const isOpened = this.option("opened");
                                const inputText = this._input().val().trim();
                                const isCustomText = inputText && this._list && !this._list.option("focusedElement");
                                if (!inputText && (0, _type.isDefined)(this.option("value")) && this.option("allowClearing")) {
                                    this._saveValueChangeEvent(e);
                                    this.option({
                                        selectedItem: null,
                                        value: null
                                    });
                                    this.close()
                                } else {
                                    if (this.option("acceptCustomValue")) {
                                        e.preventDefault();
                                        if (isCustomText) {
                                            if (isOpened) {
                                                this._toggleOpenState()
                                            }
                                            this._valueChangeEventHandler(e)
                                        }
                                        return isOpened
                                    }
                                    if (parent.enter && parent.enter.apply(this, arguments)) {
                                        return isOpened
                                    }
                                }
                            },
                            space: function(e) {
                                const isOpened = this.option("opened");
                                const isSearchEnabled = this.option("searchEnabled");
                                const acceptCustomValue = this.option("acceptCustomValue");
                                if (!isOpened || isSearchEnabled || acceptCustomValue) {
                                    return
                                }
                                e.preventDefault();
                                this._valueChangeEventHandler(e);
                                return true
                            },
                            backspace: clearSelectBox,
                            del: clearSelectBox
                        })
                    },
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            placeholder: _message.default.format("Select"),
                            fieldTemplate: null,
                            customItemCreateEvent: "change",
                            valueChangeEvent: "change",
                            acceptCustomValue: false,
                            onCustomItemCreating: function(e) {
                                if (!(0, _type.isDefined)(e.customItem)) {
                                    e.customItem = e.text
                                }
                            },
                            showSelectionControls: false,
                            allowClearing: true,
                            tooltipEnabled: false,
                            openOnFieldClick: true,
                            showDropDownButton: true,
                            displayCustomValue: false,
                            useHiddenSubmitElement: true
                        })
                    },
                    _init: function() {
                        this.callBase();
                        this._initCustomItemCreatingAction()
                    },
                    _initMarkup: function() {
                        this.$element().addClass("dx-selectbox");
                        this._renderTooltip();
                        this.callBase();
                        this._$container.addClass("dx-selectbox-container")
                    },
                    _createPopup: function() {
                        this.callBase();
                        this._popup.$element().addClass("dx-selectbox-popup");
                        this._popup.$overlayContent().attr("tabindex", -1)
                    },
                    _popupWrapperClass: function() {
                        return this.callBase() + " dx-selectbox-popup-wrapper"
                    },
                    _setDeprecatedOptions() {
                        this.callBase();
                        (0, _extend.extend)(this._deprecatedOptions, {
                            valueChangeEvent: {
                                since: "22.2",
                                alias: "customItemCreateEvent"
                            }
                        })
                    },
                    _cancelEditing: function() {
                        if (!this.option("searchEnabled") && this._list) {
                            this._focusListElement(null);
                            this._updateField(this.option("selectedItem"))
                        }
                    },
                    _renderOpenedState: function() {
                        this.callBase();
                        if (this.option("opened")) {
                            this._scrollToSelectedItem();
                            this._focusSelectedElement()
                        }
                    },
                    _focusSelectedElement: function() {
                        var _items$indexOf;
                        const searchValue = this._searchValue();
                        if (!searchValue) {
                            this._focusListElement(null);
                            return
                        }
                        const {
                            items: items,
                            selectedItem: selectedItem
                        } = this.option();
                        const $listItems = this._list._itemElements();
                        const index = null !== (_items$indexOf = null === items || void 0 === items ? void 0 : items.indexOf(selectedItem)) && void 0 !== _items$indexOf ? _items$indexOf : -1;
                        const focusedElement = -1 !== index && !this._isCustomItemSelected() ? $listItems.eq(index) : null;
                        this._focusListElement(focusedElement)
                    },
                    _renderFocusedElement: function() {
                        if (!this._list) {
                            return
                        }
                        const searchValue = this._searchValue();
                        if (!searchValue || this.option("acceptCustomValue")) {
                            this._focusListElement(null);
                            return
                        }
                        const $listItems = this._list._itemElements();
                        const focusedElement = $listItems.not(".dx-state-disabled").eq(0);
                        this._focusListElement(focusedElement)
                    },
                    _focusListElement: function(element) {
                        this._preventInputValueRender = true;
                        this._list.option("focusedElement", (0, _element.getPublicElement)(element));
                        delete this._preventInputValueRender
                    },
                    _scrollToSelectedItem: function() {
                        this._list && this._list.scrollToItem(this._list.option("selectedItem"))
                    },
                    _listContentReadyHandler: function() {
                        this.callBase();
                        const isPaginate = this._dataController.paginate();
                        if (isPaginate && this._needPopupRepaint()) {
                            return
                        }
                        this._scrollToSelectedItem()
                    },
                    _renderValue: function() {
                        this._renderInputValue();
                        this._setSubmitValue();
                        return (new _deferred.Deferred).resolve()
                    },
                    _renderInputValue: function() {
                        return this.callBase().always(function() {
                            this._renderInputValueAsync()
                        }.bind(this))
                    },
                    _renderInputValueAsync: function() {
                        this._renderTooltip();
                        this._renderInputValueImpl().always(function() {
                            this._refreshSelected()
                        }.bind(this))
                    },
                    _renderInputValueImpl: function() {
                        this._renderField();
                        return (new _deferred.Deferred).resolve()
                    },
                    _setNextItem: function(step) {
                        const item = this._calcNextItem(step);
                        const value = this._valueGetter(item);
                        this._setValue(value)
                    },
                    _setNextValue: function(e) {
                        const dataSourceIsLoaded = this._dataController.isLoaded() ? (new _deferred.Deferred).resolve() : this._dataController.load();
                        dataSourceIsLoaded.done(function() {
                            const selectedIndex = this._getSelectedIndex();
                            const hasPages = this._dataController.pageSize();
                            const isLastPage = this._dataController.isLastPage();
                            const isLastItem = selectedIndex === this._items().length - 1;
                            this._saveValueChangeEvent(e);
                            const step = "downArrow" === (0, _index.normalizeKeyName)(e) ? 1 : -1;
                            if (hasPages && !isLastPage && isLastItem && step > 0) {
                                if (!this._popup) {
                                    this._createPopup()
                                }
                                if (!this._dataController.isLoading()) {
                                    this._list._loadNextPage().done(this._setNextItem.bind(this, step))
                                }
                            } else {
                                this._setNextItem(step)
                            }
                        }.bind(this))
                    },
                    _setSelectedItem: function(item) {
                        const isUnknownItem = !this._isCustomValueAllowed() && void 0 === item;
                        this.callBase(isUnknownItem ? null : item);
                        if (!isUnknownItem && (!this._isEditable() || this._isCustomItemSelected())) {
                            this._setListOption("selectedItem", this.option("selectedItem"))
                        }
                    },
                    _isCustomValueAllowed: function() {
                        return this.option("acceptCustomValue") || this.callBase()
                    },
                    _displayValue: function(item) {
                        item = !(0, _type.isDefined)(item) && this._isCustomValueAllowed() ? this.option("value") : item;
                        return this.callBase(item)
                    },
                    _listConfig: function() {
                        const result = (0, _extend.extend)(this.callBase(), {
                            pageLoadMode: "scrollBottom",
                            onSelectionChanged: this._getSelectionChangeHandler(),
                            selectedItem: this.option("selectedItem"),
                            onFocusedItemChanged: this._listFocusedItemChangeHandler.bind(this)
                        });
                        if (this.option("showSelectionControls")) {
                            (0, _extend.extend)(result, {
                                showSelectionControls: true,
                                selectByClick: true
                            })
                        }
                        return result
                    },
                    _listFocusedItemChangeHandler: function(e) {
                        if (this._preventInputValueRender) {
                            return
                        }
                        const list = e.component;
                        const focusedElement = (0, _renderer.default)(list.option("focusedElement"));
                        const focusedItem = list._getItemData(focusedElement);
                        this._updateField(focusedItem)
                    },
                    _updateField: function(item) {
                        const fieldTemplate = this._getTemplateByOption("fieldTemplate");
                        if (!(fieldTemplate && this.option("fieldTemplate"))) {
                            const text = this._displayGetter(item);
                            this.option("text", text);
                            this._renderDisplayText(text);
                            return
                        }
                        this._renderField()
                    },
                    _getSelectionChangeHandler: function() {
                        return this.option("showSelectionControls") ? this._selectionChangeHandler.bind(this) : _common.noop
                    },
                    _selectionChangeHandler: function(e) {
                        (0, _iterator.each)(e.addedItems || [], function(_, addedItem) {
                            this._setValue(this._valueGetter(addedItem))
                        }.bind(this))
                    },
                    _getActualSearchValue: function() {
                        return this._dataController.searchValue()
                    },
                    _toggleOpenState: function(isVisible) {
                        if (this.option("disabled")) {
                            return
                        }
                        isVisible = arguments.length ? isVisible : !this.option("opened");
                        if (!isVisible && !this._shouldClearFilter()) {
                            this._restoreInputText(true)
                        }
                        if (this._wasSearch() && isVisible) {
                            this._wasSearch(false);
                            const showDataImmediately = this.option("showDataBeforeSearch") || this._isMinSearchLengthExceeded();
                            if (showDataImmediately && this._dataController.getDataSource()) {
                                if (this._searchTimer) {
                                    return
                                }
                                const searchValue = this._getActualSearchValue();
                                searchValue && this._wasSearch(true);
                                this._filterDataSource(searchValue || null)
                            } else {
                                this._setListOption("items", [])
                            }
                        }
                        if (isVisible) {
                            this._scrollToSelectedItem()
                        }
                        this.callBase(isVisible)
                    },
                    _renderTooltip: function() {
                        if (this.option("tooltipEnabled")) {
                            this.$element().attr("title", this.option("displayValue"))
                        }
                    },
                    _renderDimensions: function() {
                        this.callBase();
                        this._updatePopupWidth();
                        this._updateListDimensions()
                    },
                    _isValueEqualInputText: function() {
                        const initialSelectedItem = this.option("selectedItem");
                        if (null === initialSelectedItem) {
                            return false
                        }
                        const value = this._displayGetter(initialSelectedItem);
                        const displayValue = value ? String(value) : "";
                        const inputText = this._searchValue();
                        return displayValue === inputText
                    },
                    _popupHidingHandler: function() {
                        if (this._isValueEqualInputText()) {
                            this._cancelEditing()
                        }
                        this.callBase()
                    },
                    _popupHiddenHandler: function() {
                        this.callBase();
                        if (this._shouldCancelSearch()) {
                            this._wasSearch(false);
                            this._searchCanceled();
                            this._shouldCancelSearch(false)
                        }
                    },
                    _restoreInputText: function(saveEditingValue) {
                        if (this.option("readOnly")) {
                            return
                        }
                        this._loadItemDeferred && this._loadItemDeferred.always(function() {
                            const {
                                acceptCustomValue: acceptCustomValue,
                                text: text,
                                selectedItem: initialSelectedItem
                            } = this.option();
                            if (acceptCustomValue) {
                                if (!saveEditingValue && !this._isValueChanging) {
                                    this._updateField(null !== initialSelectedItem && void 0 !== initialSelectedItem ? initialSelectedItem : this._createCustomItem(text));
                                    this._clearFilter()
                                }
                                return
                            }
                            if (this.option("searchEnabled")) {
                                if (!this._searchValue() && this.option("allowClearing")) {
                                    this._clearTextValue();
                                    return
                                }
                            }
                            if (this._isValueEqualInputText()) {
                                return
                            }
                            this._renderInputValue().always(function(selectedItem) {
                                const newSelectedItem = (0, _common.ensureDefined)(selectedItem, initialSelectedItem);
                                this._setSelectedItem(newSelectedItem);
                                this._updateField(newSelectedItem);
                                this._clearFilter()
                            }.bind(this))
                        }.bind(this))
                    },
                    _valueChangeEventIncludesBlur: function() {
                        const valueChangeEvent = this.option(this._getValueChangeEventOptionName());
                        return valueChangeEvent.includes("blur")
                    },
                    _isPreventedFocusOutEvent: function(e) {
                        return this._preventNestedFocusEvent(e) || this._valueChangeEventIncludesBlur()
                    },
                    _focusOutHandler: function(e) {
                        if (!this._isPreventedFocusOutEvent(e)) {
                            const isOverlayTarget = this._isOverlayNestedTarget(e.relatedTarget);
                            if (!isOverlayTarget) {
                                this._restoreInputText();
                                this._clearSearchTimer()
                            }
                            this._cancelSearchIfNeed(e)
                        }
                        e.target = this._input().get(0);
                        this.callBase(e)
                    },
                    _cancelSearchIfNeed: function(e) {
                        const {
                            searchEnabled: searchEnabled
                        } = this.option();
                        const isOverlayTarget = this._isOverlayNestedTarget(null === e || void 0 === e ? void 0 : e.relatedTarget);
                        const shouldCancelSearch = this._wasSearch() && searchEnabled && !isOverlayTarget;
                        if (shouldCancelSearch) {
                            var _this$_popup;
                            const isPopupVisible = null === (_this$_popup = this._popup) || void 0 === _this$_popup ? void 0 : _this$_popup._hideAnimationProcessing;
                            this._clearSearchTimer();
                            if (isPopupVisible) {
                                this._shouldCancelSearch(true)
                            } else {
                                this._wasSearch(false);
                                this._searchCanceled()
                            }
                        }
                    },
                    _shouldCancelSearch: function(value) {
                        if (!arguments.length) {
                            return this._shouldCancelSearchValue
                        }
                        this._shouldCancelSearchValue = value
                    },
                    _isOverlayNestedTarget: function(target) {
                        return !!(0, _renderer.default)(target).closest(".".concat("dx-selectbox-popup-wrapper")).length
                    },
                    _clearTextValue: function() {
                        const selectedItem = this.option("selectedItem");
                        const selectedItemText = this._displayGetter(selectedItem);
                        const shouldRestoreValue = selectedItem && "" !== selectedItemText;
                        if (shouldRestoreValue) {
                            if (this._savedTextRemoveEvent) {
                                this._saveValueChangeEvent(this._savedTextRemoveEvent)
                            }
                            this.option("value", null)
                        }
                        delete this._savedTextRemoveEvent
                    },
                    _shouldOpenPopup: function() {
                        return this._needPassDataSourceToList() && this._wasSearch()
                    },
                    _isFocused: function() {
                        const activeElement = _dom_adapter.default.getActiveElement(this.element());
                        return this.callBase() && (0, _renderer.default)(activeElement).closest(this._input()).length > 0
                    },
                    _getValueChangeEventOptionName: function() {
                        return "customItemCreateEvent"
                    },
                    _renderValueChangeEvent: function() {
                        if (this._isEditable()) {
                            this.callBase()
                        }
                    },
                    _fieldRenderData: function() {
                        const $listFocused = this._list && this.option("opened") && (0, _renderer.default)(this._list.option("focusedElement"));
                        if ($listFocused && $listFocused.length) {
                            return this._list._getItemData($listFocused)
                        }
                        return this.option("selectedItem")
                    },
                    _isSelectedValue: function(value) {
                        return this._isValueEquals(value, this.option("value"))
                    },
                    _shouldCloseOnItemClick: function() {
                        return !(this.option("showSelectionControls") && "single" !== this.option("selectionMode"))
                    },
                    _listItemClickHandler: function(e) {
                        const previousValue = this._getCurrentValue();
                        this._focusListElement((0, _renderer.default)(e.itemElement));
                        this._saveValueChangeEvent(e.event);
                        this._completeSelection(this._valueGetter(e.itemData));
                        if (this._shouldCloseOnItemClick()) {
                            this.option("opened", false)
                        }
                        if (this.option("searchEnabled") && previousValue === this._valueGetter(e.itemData)) {
                            this._updateField(e.itemData)
                        }
                        if (this._shouldClearFilter()) {
                            this._cancelSearchIfNeed()
                        }
                    },
                    _shouldClearFilter: function() {
                        return this._wasSearch()
                    },
                    _completeSelection: function(value) {
                        this._setValue(value)
                    },
                    _loadItem: function(value, cache) {
                        const that = this;
                        const deferred = new _deferred.Deferred;
                        this.callBase(value, cache).done(function(item) {
                            deferred.resolve(item)
                        }.bind(this)).fail(function(args) {
                            if (null !== args && void 0 !== args && args.shouldSkipCallback) {
                                return
                            }
                            const selectedItem = that.option("selectedItem");
                            if (that.option("acceptCustomValue") && value === that._valueGetter(selectedItem)) {
                                deferred.resolve(selectedItem)
                            } else {
                                deferred.reject()
                            }
                        }.bind(this));
                        return deferred.promise()
                    },
                    _loadInputValue: function(value, callback) {
                        this._loadItemDeferred = this._loadItem(value).always(callback);
                        return this._loadItemDeferred
                    },
                    _isCustomItemSelected: function() {
                        const selectedItem = this.option("selectedItem");
                        const searchValue = this._searchValue();
                        const selectedItemText = this._displayGetter(selectedItem);
                        return !selectedItemText || searchValue !== selectedItemText.toString()
                    },
                    _valueChangeEventHandler: function(e) {
                        if (this.option("acceptCustomValue") && this._isCustomItemSelected() && !this._isValueChanging) {
                            this._isValueChanging = true;
                            this._customItemAddedHandler(e)
                        }
                    },
                    _initCustomItemCreatingAction: function() {
                        this._customItemCreatingAction = this._createActionByOption("onCustomItemCreating")
                    },
                    _createCustomItem: function(text) {
                        const params = {
                            text: text
                        };
                        const actionResult = this._customItemCreatingAction(params);
                        const item = (0, _common.ensureDefined)(actionResult, params.customItem);
                        if ((0, _type.isDefined)(actionResult)) {
                            _errors.default.log("W0015", "onCustomItemCreating", "customItem")
                        }
                        return item
                    },
                    _customItemAddedHandler: function(e) {
                        const searchValue = this._searchValue();
                        const item = this._createCustomItem(searchValue);
                        this._saveValueChangeEvent(e);
                        if (void 0 === item) {
                            this._renderValue();
                            throw _errors.default.Error("E0121")
                        }
                        if ((0, _type.isPromise)(item)) {
                            (0, _deferred.fromPromise)(item).done(this._setCustomItem.bind(this)).fail(this._setCustomItem.bind(this, null))
                        } else {
                            this._setCustomItem(item)
                        }
                    },
                    _setCustomItem: function(item) {
                        if (this._disposed) {
                            return
                        }
                        item = item || null;
                        this.option("selectedItem", item);
                        this._cancelSearchIfNeed();
                        this._setValue(this._valueGetter(item));
                        this._renderDisplayText(this._displayGetter(item));
                        this._isValueChanging = false
                    },
                    _clearValueHandler: function(e) {
                        this._preventFiltering = true;
                        this.callBase(e);
                        this._searchCanceled();
                        return false
                    },
                    _wasSearch: function(value) {
                        if (!arguments.length) {
                            return !!this._wasSearchValue
                        }
                        this._wasSearchValue = value
                    },
                    _searchHandler: function() {
                        if (this._preventFiltering) {
                            delete this._preventFiltering;
                            return
                        }
                        if (this._needPassDataSourceToList()) {
                            this._wasSearch(true)
                        }
                        this.callBase(arguments)
                    },
                    _dataSourceFiltered: function(searchValue) {
                        this.callBase();
                        if (null !== searchValue) {
                            this._renderInputSubstitution();
                            this._renderFocusedElement()
                        }
                    },
                    _valueSubstituted: function() {
                        const input = this._input().get(0);
                        const currentSearchLength = this._searchValue().length;
                        const isAllSelected = 0 === input.selectionStart && input.selectionEnd === currentSearchLength;
                        const inputHasSelection = input.selectionStart !== input.selectionEnd;
                        const isLastSymbolSelected = currentSearchLength === input.selectionEnd;
                        return this._wasSearch() && inputHasSelection && !isAllSelected && isLastSymbolSelected && this._shouldSubstitutionBeRendered()
                    },
                    _shouldSubstitutionBeRendered: function() {
                        return !this._preventSubstitution && this.option("searchEnabled") && !this.option("acceptCustomValue") && "startswith" === this.option("searchMode")
                    },
                    _renderInputSubstitution: function() {
                        if (!this._shouldSubstitutionBeRendered()) {
                            delete this._preventSubstitution;
                            return
                        }
                        const item = this._list && this._getPlainItems(this._list.option("items"))[0];
                        if (!item) {
                            return
                        }
                        const $input = this._input();
                        const valueLength = $input.val().length;
                        if (0 === valueLength) {
                            return
                        }
                        const inputElement = $input.get(0);
                        const displayValue = this._displayGetter(item).toString();
                        inputElement.value = displayValue;
                        this._caret({
                            start: valueLength,
                            end: displayValue.length
                        })
                    },
                    _dispose: function() {
                        this._renderInputValueAsync = _common.noop;
                        delete this._loadItemDeferred;
                        this.callBase()
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "customItemCreateEvent":
                                this._refreshValueChangeEvent();
                                this._refreshFocusEvent();
                                this._refreshEvents();
                                break;
                            case "onCustomItemCreating":
                                this._initCustomItemCreatingAction();
                                break;
                            case "tooltipEnabled":
                                this._renderTooltip();
                                break;
                            case "displayCustomValue":
                            case "acceptCustomValue":
                            case "showSelectionControls":
                                this._invalidate();
                                break;
                            case "allowClearing":
                                break;
                            default:
                                this.callBase(args)
                        }
                    }
                });
                (0, _component_registrator.default)("dxSelectBox", SelectBox);
                var _default = SelectBox;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        68198:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/selection/selection.js ***!
              \***********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _selectionStrategy = _interopRequireDefault(__webpack_require__( /*! ./selection.strategy.deferred */ 83014));
                var _selectionStrategy2 = _interopRequireDefault(__webpack_require__( /*! ./selection.strategy.standard */ 78600));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                let Selection = function() {
                    function Selection(options) {
                        this.options = (0, _extend.extend)(this._getDefaultOptions(), options, {
                            selectedItemKeys: options.selectedKeys || []
                        });
                        this._selectionStrategy = this.options.deferred ? new _selectionStrategy.default(this.options) : new _selectionStrategy2.default(this.options);
                        this._focusedItemIndex = -1;
                        if (!this.options.equalByReference) {
                            this._selectionStrategy.updateSelectedItemKeyHash(this.options.selectedItemKeys)
                        }
                    }
                    var _proto = Selection.prototype;
                    _proto._getDefaultOptions = function() {
                        return {
                            allowNullValue: false,
                            deferred: false,
                            equalByReference: false,
                            mode: "multiple",
                            selectedItems: [],
                            selectionFilter: [],
                            maxFilterLengthInRequest: 0,
                            onSelectionChanged: _common.noop,
                            key: _common.noop,
                            keyOf: function(item) {
                                return item
                            },
                            load: function() {
                                return (new _deferred.Deferred).resolve([])
                            },
                            totalCount: function() {
                                return -1
                            },
                            isSelectableItem: function() {
                                return true
                            },
                            isItemSelected: function() {
                                return false
                            },
                            getItemData: function(item) {
                                return item
                            },
                            dataFields: _common.noop,
                            filter: _common.noop
                        }
                    };
                    _proto.validate = function() {
                        this._selectionStrategy.validate()
                    };
                    _proto.getSelectedItemKeys = function() {
                        return this._selectionStrategy.getSelectedItemKeys()
                    };
                    _proto.getSelectedItems = function() {
                        return this._selectionStrategy.getSelectedItems()
                    };
                    _proto.selectionFilter = function(value) {
                        if (void 0 === value) {
                            return this.options.selectionFilter
                        }
                        const filterIsChanged = this.options.selectionFilter !== value && JSON.stringify(this.options.selectionFilter) !== JSON.stringify(value);
                        this.options.selectionFilter = value;
                        filterIsChanged && this.onSelectionChanged()
                    };
                    _proto.setSelection = function(keys, updatedKeys) {
                        return this.selectedItemKeys(keys, false, false, false, updatedKeys)
                    };
                    _proto.select = function(keys) {
                        return this.selectedItemKeys(keys, true)
                    };
                    _proto.deselect = function(keys) {
                        return this.selectedItemKeys(keys, true, true)
                    };
                    _proto.selectedItemKeys = function(keys, preserve, isDeselect, isSelectAll, updatedKeys) {
                        var _keys;
                        keys = null !== (_keys = keys) && void 0 !== _keys ? _keys : [];
                        keys = Array.isArray(keys) ? keys : [keys];
                        this.validate();
                        return this._selectionStrategy.selectedItemKeys(keys, preserve, isDeselect, isSelectAll, updatedKeys)
                    };
                    _proto.clearSelection = function() {
                        return this.selectedItemKeys([])
                    };
                    _proto._addSelectedItem = function(itemData, key) {
                        this._selectionStrategy.addSelectedItem(key, itemData)
                    };
                    _proto._removeSelectedItem = function(key) {
                        this._selectionStrategy.removeSelectedItem(key)
                    };
                    _proto._setSelectedItems = function(keys, items) {
                        this._selectionStrategy.setSelectedItems(keys, items)
                    };
                    _proto.onSelectionChanged = function() {
                        this._selectionStrategy.onSelectionChanged()
                    };
                    _proto.changeItemSelection = function(itemIndex, keys, setFocusOnly) {
                        var _this$options$allowLo, _this$options;
                        let isSelectedItemsChanged;
                        const items = this.options.plainItems();
                        const item = items[itemIndex];
                        let deferred;
                        const allowLoadByRange = null === (_this$options$allowLo = (_this$options = this.options).allowLoadByRange) || void 0 === _this$options$allowLo ? void 0 : _this$options$allowLo.call(_this$options);
                        let indexOffset;
                        let focusedItemNotInLoadedRange = false;
                        let shiftFocusedItemNotInLoadedRange = false;
                        const itemIsNotInLoadedRange = index => index >= 0 && !items.filter(it => it.loadIndex === index).length;
                        if (allowLoadByRange && (0, _type.isDefined)(item)) {
                            indexOffset = item.loadIndex - itemIndex;
                            itemIndex = item.loadIndex;
                            focusedItemNotInLoadedRange = itemIsNotInLoadedRange(this._focusedItemIndex);
                            if ((0, _type.isDefined)(this._shiftFocusedItemIndex)) {
                                shiftFocusedItemNotInLoadedRange = itemIsNotInLoadedRange(this._shiftFocusedItemIndex)
                            }
                        }
                        if (!this.isSelectable() || !this.isDataItem(item)) {
                            return false
                        }
                        const itemData = this.options.getItemData(item);
                        const itemKey = this.options.keyOf(itemData);
                        keys = keys || {};
                        if (keys.shift && "multiple" === this.options.mode && this._focusedItemIndex >= 0) {
                            if (focusedItemNotInLoadedRange || shiftFocusedItemNotInLoadedRange) {
                                isSelectedItemsChanged = itemIndex !== this._shiftFocusedItemIndex || this._focusedItemIndex !== this._shiftFocusedItemIndex;
                                if (isSelectedItemsChanged) {
                                    deferred = this.changeItemSelectionWhenShiftKeyInVirtualPaging(itemIndex)
                                }
                            } else {
                                isSelectedItemsChanged = this.changeItemSelectionWhenShiftKeyPressed(itemIndex, items, indexOffset)
                            }
                        } else if (keys.control) {
                            this._resetItemSelectionWhenShiftKeyPressed();
                            if (!setFocusOnly) {
                                const isSelected = this._selectionStrategy.isItemDataSelected(itemData);
                                if ("single" === this.options.mode) {
                                    this.clearSelectedItems()
                                }
                                if (isSelected) {
                                    this._removeSelectedItem(itemKey)
                                } else {
                                    this._addSelectedItem(itemData, itemKey)
                                }
                            }
                            isSelectedItemsChanged = true
                        } else {
                            this._resetItemSelectionWhenShiftKeyPressed();
                            const isKeysEqual = this._selectionStrategy.equalKeys(this.options.selectedItemKeys[0], itemKey);
                            if (1 !== this.options.selectedItemKeys.length || !isKeysEqual) {
                                this._setSelectedItems([itemKey], [itemData]);
                                isSelectedItemsChanged = true
                            }
                        }
                        if (isSelectedItemsChanged) {
                            (0, _deferred.when)(deferred).done(() => {
                                this._focusedItemIndex = itemIndex;
                                !setFocusOnly && this.onSelectionChanged()
                            });
                            return true
                        }
                    };
                    _proto.isDataItem = function(item) {
                        return this.options.isSelectableItem(item)
                    };
                    _proto.isSelectable = function() {
                        return "single" === this.options.mode || "multiple" === this.options.mode
                    };
                    _proto.isItemDataSelected = function(data) {
                        return this._selectionStrategy.isItemDataSelected(data, {
                            checkPending: true
                        })
                    };
                    _proto.isItemSelected = function(arg, options) {
                        return this._selectionStrategy.isItemKeySelected(arg, options)
                    };
                    _proto._resetItemSelectionWhenShiftKeyPressed = function() {
                        delete this._shiftFocusedItemIndex
                    };
                    _proto._resetFocusedItemIndex = function() {
                        this._focusedItemIndex = -1
                    };
                    _proto.changeItemSelectionWhenShiftKeyInVirtualPaging = function(loadIndex) {
                        const loadOptions = this.options.getLoadOptions(loadIndex, this._focusedItemIndex, this._shiftFocusedItemIndex);
                        const deferred = new _deferred.Deferred;
                        const indexOffset = loadOptions.skip;
                        this.options.load(loadOptions).done(items => {
                            this.changeItemSelectionWhenShiftKeyPressed(loadIndex, items, indexOffset);
                            deferred.resolve()
                        });
                        return deferred.promise()
                    };
                    _proto.changeItemSelectionWhenShiftKeyPressed = function(itemIndex, items, indexOffset) {
                        let isSelectedItemsChanged = false;
                        let itemIndexStep;
                        const indexOffsetDefined = (0, _type.isDefined)(indexOffset);
                        let index = indexOffsetDefined ? this._focusedItemIndex - indexOffset : this._focusedItemIndex;
                        const keyOf = this.options.keyOf;
                        const focusedItem = items[index];
                        const focusedData = this.options.getItemData(focusedItem);
                        const focusedKey = keyOf(focusedData);
                        const isFocusedItemSelected = focusedItem && this.isItemDataSelected(focusedData);
                        if (!(0, _type.isDefined)(this._shiftFocusedItemIndex)) {
                            this._shiftFocusedItemIndex = this._focusedItemIndex
                        }
                        let data;
                        let itemKey;
                        let startIndex;
                        let endIndex;
                        if (this._shiftFocusedItemIndex !== this._focusedItemIndex) {
                            itemIndexStep = this._focusedItemIndex < this._shiftFocusedItemIndex ? 1 : -1;
                            startIndex = indexOffsetDefined ? this._focusedItemIndex - indexOffset : this._focusedItemIndex;
                            endIndex = indexOffsetDefined ? this._shiftFocusedItemIndex - indexOffset : this._shiftFocusedItemIndex;
                            for (index = startIndex; index !== endIndex; index += itemIndexStep) {
                                if (indexOffsetDefined || this.isDataItem(items[index])) {
                                    itemKey = keyOf(this.options.getItemData(items[index]));
                                    this._removeSelectedItem(itemKey);
                                    isSelectedItemsChanged = true
                                }
                            }
                        }
                        if (itemIndex !== this._shiftFocusedItemIndex) {
                            itemIndexStep = itemIndex < this._shiftFocusedItemIndex ? 1 : -1;
                            startIndex = indexOffsetDefined ? itemIndex - indexOffset : itemIndex;
                            endIndex = indexOffsetDefined ? this._shiftFocusedItemIndex - indexOffset : this._shiftFocusedItemIndex;
                            for (index = startIndex; index !== endIndex; index += itemIndexStep) {
                                if (indexOffsetDefined || this.isDataItem(items[index])) {
                                    data = this.options.getItemData(items[index]);
                                    itemKey = keyOf(data);
                                    this._addSelectedItem(data, itemKey);
                                    isSelectedItemsChanged = true
                                }
                            }
                        }
                        if ((indexOffsetDefined || this.isDataItem(focusedItem)) && !isFocusedItemSelected) {
                            this._addSelectedItem(focusedData, focusedKey);
                            isSelectedItemsChanged = true
                        }
                        return isSelectedItemsChanged
                    };
                    _proto.clearSelectedItems = function() {
                        this._setSelectedItems([], [])
                    };
                    _proto.selectAll = function(isOnePage) {
                        this._resetFocusedItemIndex();
                        if (isOnePage) {
                            return this._onePageSelectAll(false)
                        } else {
                            return this.selectedItemKeys([], true, false, true)
                        }
                    };
                    _proto.deselectAll = function(isOnePage) {
                        this._resetFocusedItemIndex();
                        if (isOnePage) {
                            return this._onePageSelectAll(true)
                        } else {
                            return this.selectedItemKeys([], true, true, true)
                        }
                    };
                    _proto._onePageSelectAll = function(isDeselect) {
                        const items = this._selectionStrategy.getSelectableItems(this.options.plainItems());
                        for (let i = 0; i < items.length; i++) {
                            const item = items[i];
                            if (this.isDataItem(item)) {
                                const itemData = this.options.getItemData(item);
                                const itemKey = this.options.keyOf(itemData);
                                const isSelected = this.isItemSelected(itemKey);
                                if (!isSelected && !isDeselect) {
                                    this._addSelectedItem(itemData, itemKey)
                                }
                                if (isSelected && isDeselect) {
                                    this._removeSelectedItem(itemKey)
                                }
                            }
                        }
                        this.onSelectionChanged();
                        return (new _deferred.Deferred).resolve()
                    };
                    _proto.getSelectAllState = function(visibleOnly) {
                        return this._selectionStrategy.getSelectAllState(visibleOnly)
                    };
                    _proto.loadSelectedItemsWithFilter = function() {
                        return this._selectionStrategy.loadSelectedItemsWithFilter()
                    };
                    return Selection
                }();
                exports.default = Selection;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        83014:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/selection/selection.strategy.deferred.js ***!
              \*****************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _selection = _interopRequireDefault(__webpack_require__( /*! ./selection.strategy */ 34344));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.errors */ 96688));
                var _query = _interopRequireDefault(__webpack_require__( /*! ../../data/query */ 96687));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let DeferredStrategy = function(_SelectionStrategy) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(DeferredStrategy, _SelectionStrategy);

                    function DeferredStrategy() {
                        return _SelectionStrategy.apply(this, arguments) || this
                    }
                    var _proto = DeferredStrategy.prototype;
                    _proto.getSelectedItems = function() {
                        return this._loadFilteredData(this.options.selectionFilter)
                    };
                    _proto.getSelectedItemKeys = function() {
                        const d = new _deferred.Deferred;
                        const that = this;
                        const key = this.options.key();
                        const select = (0, _type.isString)(key) ? [key] : key;
                        this._loadFilteredData(this.options.selectionFilter, null, select).done((function(items) {
                            const keys = items.map((function(item) {
                                return that.options.keyOf(item)
                            }));
                            d.resolve(keys)
                        })).fail(d.reject);
                        return d.promise()
                    };
                    _proto.selectedItemKeys = function(keys, preserve, isDeselect, isSelectAll) {
                        if (isSelectAll) {
                            const filter = this.options.filter();
                            const needResetSelectionFilter = !filter || JSON.stringify(filter) === JSON.stringify(this.options.selectionFilter) && isDeselect;
                            if (needResetSelectionFilter) {
                                this._setOption("selectionFilter", isDeselect ? [] : null)
                            } else {
                                this._addSelectionFilter(isDeselect, filter, isSelectAll)
                            }
                        } else {
                            if (!preserve) {
                                this._setOption("selectionFilter", [])
                            }
                            for (let i = 0; i < keys.length; i++) {
                                if (isDeselect) {
                                    this.removeSelectedItem(keys[i])
                                } else {
                                    this.addSelectedItem(keys[i], isSelectAll, !preserve)
                                }
                            }
                        }
                        this.onSelectionChanged();
                        return (new _deferred.Deferred).resolve()
                    };
                    _proto.setSelectedItems = function(keys) {
                        this._setOption("selectionFilter", null);
                        for (let i = 0; i < keys.length; i++) {
                            this.addSelectedItem(keys[i])
                        }
                    };
                    _proto.isItemDataSelected = function(itemData) {
                        return this.isItemKeySelected(itemData)
                    };
                    _proto.isItemKeySelected = function(itemData) {
                        const selectionFilter = this.options.selectionFilter;
                        if (!selectionFilter) {
                            return true
                        }
                        return !!(0, _query.default)([itemData]).filter(selectionFilter).toArray().length
                    };
                    _proto._getKeyExpr = function() {
                        const keyField = this.options.key();
                        if (Array.isArray(keyField) && 1 === keyField.length) {
                            return keyField[0]
                        }
                        return keyField
                    };
                    _proto._normalizeKey = function(key) {
                        const keyExpr = this.options.key();
                        if (Array.isArray(keyExpr) && 1 === keyExpr.length) {
                            return key[keyExpr[0]]
                        }
                        return key
                    };
                    _proto._getFilterByKey = function(key) {
                        const keyField = this._getKeyExpr();
                        let filter = [keyField, "=", this._normalizeKey(key)];
                        if (Array.isArray(keyField)) {
                            filter = [];
                            for (let i = 0; i < keyField.length; i++) {
                                filter.push([keyField[i], "=", key[keyField[i]]]);
                                if (i !== keyField.length - 1) {
                                    filter.push("and")
                                }
                            }
                        }
                        return filter
                    };
                    _proto.addSelectedItem = function(key, isSelectAll, skipFilter) {
                        const filter = this._getFilterByKey(key);
                        this._addSelectionFilter(false, filter, isSelectAll, skipFilter)
                    };
                    _proto.removeSelectedItem = function(key) {
                        const filter = this._getFilterByKey(key);
                        this._addSelectionFilter(true, filter)
                    };
                    _proto.validate = function() {
                        const key = this.options.key;
                        if (key && void 0 === key()) {
                            throw _ui.default.Error("E1042", "Deferred selection")
                        }
                    };
                    _proto._findSubFilter = function(selectionFilter, filter) {
                        if (!selectionFilter) {
                            return -1
                        }
                        const filterString = JSON.stringify(filter);
                        for (let index = 0; index < selectionFilter.length; index++) {
                            const subFilter = selectionFilter[index];
                            if (subFilter && JSON.stringify(subFilter) === filterString) {
                                return index
                            }
                        }
                        return -1
                    };
                    _proto._isLastSubFilter = function(selectionFilter, filter) {
                        if (selectionFilter && filter) {
                            return this._findSubFilter(selectionFilter, filter) === selectionFilter.length - 1 || 0 === this._findSubFilter([selectionFilter], filter)
                        }
                        return false
                    };
                    _proto._addFilterOperator = function(selectionFilter, filterOperator) {
                        if (selectionFilter.length > 1 && (0, _type.isString)(selectionFilter[1]) && selectionFilter[1] !== filterOperator) {
                            selectionFilter = [selectionFilter]
                        }
                        if (selectionFilter.length) {
                            selectionFilter.push(filterOperator)
                        }
                        return selectionFilter
                    };
                    _proto._denormalizeFilter = function(filter) {
                        if (filter && (0, _type.isString)(filter[0])) {
                            filter = [filter]
                        }
                        return filter
                    };
                    _proto._isOnlyNegativeFiltersLeft = function(filters) {
                        return filters.every((filterItem, i) => {
                            if (i % 2 === 0) {
                                return Array.isArray(filterItem) && "!" === filterItem[0]
                            } else {
                                return "and" === filterItem
                            }
                        })
                    };
                    _proto._addSelectionFilter = function(isDeselect, filter, isSelectAll, skipFilter) {
                        var _selectionFilter;
                        const that = this;
                        const currentFilter = isDeselect ? ["!", filter] : filter;
                        const currentOperation = isDeselect ? "and" : "or";
                        let needAddFilter = true;
                        let selectionFilter = that.options.selectionFilter || [];
                        selectionFilter = that._denormalizeFilter(selectionFilter);
                        if (null !== (_selectionFilter = selectionFilter) && void 0 !== _selectionFilter && _selectionFilter.length && !skipFilter) {
                            const removedIndex = that._removeSameFilter(selectionFilter, filter, isDeselect, isSelectAll);
                            const filterIndex = that._removeSameFilter(selectionFilter, filter, !isDeselect);
                            const shouldCleanFilter = isDeselect && (-1 !== removedIndex || -1 !== filterIndex) && this._isOnlyNegativeFiltersLeft(selectionFilter);
                            if (shouldCleanFilter) {
                                selectionFilter = []
                            }
                            const isKeyOperatorsAfterRemoved = this._isKeyFilter(filter) && this._hasKeyFiltersOnlyStartingFromIndex(selectionFilter, filterIndex);
                            needAddFilter = filter.length && !isKeyOperatorsAfterRemoved
                        }
                        if (needAddFilter) {
                            selectionFilter = that._addFilterOperator(selectionFilter, currentOperation);
                            selectionFilter.push(currentFilter)
                        }
                        selectionFilter = that._normalizeFilter(selectionFilter);
                        that._setOption("selectionFilter", !isDeselect && !selectionFilter.length ? null : selectionFilter)
                    };
                    _proto._normalizeFilter = function(filter) {
                        if (filter && 1 === filter.length) {
                            filter = filter[0]
                        }
                        return filter
                    };
                    _proto._removeFilterByIndex = function(filter, filterIndex, isSelectAll) {
                        const operation = filter[1];
                        if (filterIndex > 0) {
                            filter.splice(filterIndex - 1, 2)
                        } else {
                            filter.splice(filterIndex, 2)
                        }
                        if (isSelectAll && "and" === operation) {
                            filter.splice(0, filter.length)
                        }
                    };
                    _proto._isSimpleKeyFilter = function(filter, key) {
                        return 3 === filter.length && filter[0] === key && "=" === filter[1]
                    };
                    _proto._isKeyFilter = function(filter) {
                        if (2 === filter.length && "!" === filter[0]) {
                            return this._isKeyFilter(filter[1])
                        }
                        const keyField = this._getKeyExpr();
                        if (Array.isArray(keyField)) {
                            if (filter.length !== 2 * keyField.length - 1) {
                                return false
                            }
                            for (let i = 0; i < keyField.length; i++) {
                                if (i > 0 && "and" !== filter[2 * i - 1]) {
                                    return false
                                }
                                if (!this._isSimpleKeyFilter(filter[2 * i], keyField[i])) {
                                    return false
                                }
                            }
                            return true
                        }
                        return this._isSimpleKeyFilter(filter, keyField)
                    };
                    _proto._hasKeyFiltersOnlyStartingFromIndex = function(selectionFilter, filterIndex) {
                        if (filterIndex >= 0) {
                            for (let i = filterIndex; i < selectionFilter.length; i++) {
                                if ("string" !== typeof selectionFilter[i] && !this._isKeyFilter(selectionFilter[i])) {
                                    return false
                                }
                            }
                            return true
                        }
                        return false
                    };
                    _proto._removeSameFilter = function(selectionFilter, filter, inverted, isSelectAll) {
                        filter = inverted ? ["!", filter] : filter;
                        if (JSON.stringify(filter) === JSON.stringify(selectionFilter)) {
                            selectionFilter.splice(0, selectionFilter.length);
                            return 0
                        }
                        const filterIndex = this._findSubFilter(selectionFilter, filter);
                        if (filterIndex >= 0) {
                            this._removeFilterByIndex(selectionFilter, filterIndex, isSelectAll);
                            return filterIndex
                        } else {
                            for (let i = 0; i < selectionFilter.length; i++) {
                                if (Array.isArray(selectionFilter[i]) && selectionFilter[i].length > 2) {
                                    const filterIndex = this._removeSameFilter(selectionFilter[i], filter, false, isSelectAll);
                                    if (filterIndex >= 0) {
                                        if (!selectionFilter[i].length) {
                                            this._removeFilterByIndex(selectionFilter, i, isSelectAll)
                                        } else if (1 === selectionFilter[i].length) {
                                            selectionFilter[i] = selectionFilter[i][0]
                                        }
                                        return filterIndex
                                    }
                                }
                            }
                            return -1
                        }
                    };
                    _proto.getSelectAllState = function() {
                        const filter = this.options.filter();
                        let selectionFilter = this.options.selectionFilter;
                        if (!selectionFilter) {
                            return true
                        }
                        if (!selectionFilter.length) {
                            return false
                        }
                        if (!filter || !filter.length) {
                            return
                        }
                        selectionFilter = this._denormalizeFilter(selectionFilter);
                        if (this._isLastSubFilter(selectionFilter, filter)) {
                            return true
                        }
                        if (this._isLastSubFilter(selectionFilter, ["!", filter])) {
                            return false
                        }
                        return
                    };
                    _proto.loadSelectedItemsWithFilter = function() {
                        const componentFilter = this.options.filter();
                        const selectionFilter = this.options.selectionFilter;
                        const filter = componentFilter ? [componentFilter, "and", selectionFilter] : selectionFilter;
                        return this._loadFilteredData(filter)
                    };
                    return DeferredStrategy
                }(_selection.default);
                exports.default = DeferredStrategy;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        34344:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/selection/selection.strategy.js ***!
              \********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _query = (obj = __webpack_require__( /*! ../../data/query */ 96687), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                let SelectionStrategy = function() {
                    function SelectionStrategy(options) {
                        this.options = options;
                        this._setOption("disabledItemKeys", []);
                        this._clearItemKeys()
                    }
                    var _proto = SelectionStrategy.prototype;
                    _proto._clearItemKeys = function() {
                        this._setOption("addedItemKeys", []);
                        this._setOption("removedItemKeys", []);
                        this._setOption("removedItems", []);
                        this._setOption("addedItems", [])
                    };
                    _proto.validate = function() {};
                    _proto._setOption = function(name, value) {
                        this.options[name] = value
                    };
                    _proto.onSelectionChanged = function() {
                        const addedItemKeys = this.options.addedItemKeys;
                        const removedItemKeys = this.options.removedItemKeys;
                        const addedItems = this.options.addedItems;
                        const removedItems = this.options.removedItems;
                        const selectedItems = this.options.selectedItems;
                        const selectedItemKeys = this.options.selectedItemKeys;
                        const onSelectionChanged = this.options.onSelectionChanged || _common.noop;
                        this._clearItemKeys();
                        onSelectionChanged({
                            selectedItems: selectedItems,
                            selectedItemKeys: selectedItemKeys,
                            addedItemKeys: addedItemKeys,
                            removedItemKeys: removedItemKeys,
                            addedItems: addedItems,
                            removedItems: removedItems
                        })
                    };
                    _proto.equalKeys = function(key1, key2) {
                        if (this.options.equalByReference) {
                            if ((0, _type.isObject)(key1) && (0, _type.isObject)(key2)) {
                                return key1 === key2
                            }
                        }
                        return (0, _common.equalByValue)(key1, key2)
                    };
                    _proto.getSelectableItems = function(items) {
                        return items.filter((function(item) {
                            return !(null !== item && void 0 !== item && item.disabled)
                        }))
                    };
                    _proto._clearSelection = function(keys, preserve, isDeselect, isSelectAll) {
                        keys = keys || [];
                        keys = Array.isArray(keys) ? keys : [keys];
                        this.validate();
                        return this.selectedItemKeys(keys, preserve, isDeselect, isSelectAll)
                    };
                    _proto._removeTemplateProperty = function(remoteFilter) {
                        if (Array.isArray(remoteFilter)) {
                            return remoteFilter.map(f => this._removeTemplateProperty(f))
                        }
                        if ((0, _type.isObject)(remoteFilter)) {
                            delete remoteFilter.template
                        }
                        return remoteFilter
                    };
                    _proto._loadFilteredData = function(remoteFilter, localFilter, select, isSelectAll) {
                        const filterLength = encodeURI(JSON.stringify(this._removeTemplateProperty(remoteFilter))).length;
                        const needLoadAllData = this.options.maxFilterLengthInRequest && filterLength > this.options.maxFilterLengthInRequest;
                        const deferred = new _deferred.Deferred;
                        const loadOptions = {
                            filter: needLoadAllData ? void 0 : remoteFilter,
                            select: needLoadAllData ? this.options.dataFields() : select || this.options.dataFields()
                        };
                        if (remoteFilter && 0 === remoteFilter.length) {
                            deferred.resolve([])
                        } else {
                            this.options.load(loadOptions).done((function(items) {
                                let filteredItems = (0, _type.isPlainObject)(items) ? items.data : items;
                                if (localFilter && !isSelectAll) {
                                    filteredItems = filteredItems.filter(localFilter)
                                } else if (needLoadAllData) {
                                    filteredItems = (0, _query.default)(filteredItems).filter(remoteFilter).toArray()
                                }
                                deferred.resolve(filteredItems)
                            })).fail(deferred.reject.bind(deferred))
                        }
                        return deferred
                    };
                    _proto.updateSelectedItemKeyHash = function(keys) {
                        for (let i = 0; i < keys.length; i++) {
                            const keyHash = (0, _common.getKeyHash)(keys[i]);
                            if (!(0, _type.isObject)(keyHash)) {
                                this.options.keyHashIndices[keyHash] = this.options.keyHashIndices[keyHash] || [];
                                const keyIndices = this.options.keyHashIndices[keyHash];
                                keyIndices.push(i)
                            }
                        }
                    };
                    _proto._isAnyItemSelected = function(items) {
                        for (let i = 0; i < items.length; i++) {
                            if (this.options.isItemSelected(items[i])) {
                                return
                            }
                        }
                        return false
                    };
                    _proto._getFullSelectAllState = function() {
                        const items = this.options.plainItems();
                        const dataFilter = this.options.filter();
                        let selectedItems = this.options.ignoreDisabledItems ? this.options.selectedItems : this.options.selectedItems.filter(item => !(null !== item && void 0 !== item && item.disabled));
                        if (dataFilter) {
                            selectedItems = (0, _query.default)(selectedItems).filter(dataFilter).toArray()
                        }
                        const selectedItemsLength = selectedItems.length;
                        const disabledItemsLength = items.length - this.getSelectableItems(items).length;
                        if (!selectedItemsLength) {
                            return this._isAnyItemSelected(items)
                        }
                        if (selectedItemsLength >= this.options.totalCount() - disabledItemsLength) {
                            return true
                        }
                        return
                    };
                    _proto._getVisibleSelectAllState = function() {
                        const items = this.getSelectableItems(this.options.plainItems());
                        let hasSelectedItems = false;
                        let hasUnselectedItems = false;
                        for (let i = 0; i < items.length; i++) {
                            const item = items[i];
                            const itemData = this.options.getItemData(item);
                            const key = this.options.keyOf(itemData);
                            if (this.options.isSelectableItem(item)) {
                                if (this.isItemKeySelected(key)) {
                                    hasSelectedItems = true
                                } else {
                                    hasUnselectedItems = true
                                }
                            }
                        }
                        if (hasSelectedItems) {
                            return !hasUnselectedItems ? true : void 0
                        } else {
                            return false
                        }
                    };
                    return SelectionStrategy
                }();
                exports.default = SelectionStrategy;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        78600:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/selection/selection.strategy.standard.js ***!
              \*****************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _array = __webpack_require__( /*! ../../core/utils/array */ 89386);
                var _array_compare = __webpack_require__( /*! ../../core/utils/array_compare */ 34671);
                var _query = _interopRequireDefault(__webpack_require__( /*! ../../data/query */ 96687));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _selection_filter = __webpack_require__( /*! ../../core/utils/selection_filter */ 49601);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.errors */ 96688));
                var _selection = _interopRequireDefault(__webpack_require__( /*! ./selection.strategy */ 34344));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let StandardStrategy = function(_SelectionStrategy) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(StandardStrategy, _SelectionStrategy);

                    function StandardStrategy(options) {
                        var _this;
                        _this = _SelectionStrategy.call(this, options) || this;
                        _this._initSelectedItemKeyHash();
                        return _this
                    }
                    var _proto = StandardStrategy.prototype;
                    _proto._initSelectedItemKeyHash = function() {
                        this._setOption("keyHashIndices", this.options.equalByReference ? null : {})
                    };
                    _proto.getSelectedItemKeys = function() {
                        return this.options.selectedItemKeys.slice(0)
                    };
                    _proto.getSelectedItems = function() {
                        return this.options.selectedItems.slice(0)
                    };
                    _proto._preserveSelectionUpdate = function(items, isDeselect) {
                        const keyOf = this.options.keyOf;
                        let keyIndicesToRemoveMap;
                        let keyIndex;
                        let i;
                        if (!keyOf) {
                            return
                        }
                        const isBatchDeselect = isDeselect && items.length > 1 && !this.options.equalByReference;
                        if (isBatchDeselect) {
                            keyIndicesToRemoveMap = {}
                        }
                        for (i = 0; i < items.length; i++) {
                            const item = items[i];
                            const key = keyOf(item);
                            if (isDeselect) {
                                keyIndex = this.removeSelectedItem(key, keyIndicesToRemoveMap, null === item || void 0 === item ? void 0 : item.disabled);
                                if (keyIndicesToRemoveMap && keyIndex >= 0) {
                                    keyIndicesToRemoveMap[keyIndex] = true
                                }
                            } else {
                                this.addSelectedItem(key, item)
                            }
                        }
                        if (isBatchDeselect) {
                            this._batchRemoveSelectedItems(keyIndicesToRemoveMap)
                        }
                    };
                    _proto._batchRemoveSelectedItems = function(keyIndicesToRemoveMap) {
                        const selectedItemKeys = this.options.selectedItemKeys.slice(0);
                        const selectedItems = this.options.selectedItems.slice(0);
                        this.options.selectedItemKeys.length = 0;
                        this.options.selectedItems.length = 0;
                        for (let i = 0; i < selectedItemKeys.length; i++) {
                            if (!keyIndicesToRemoveMap[i]) {
                                this.options.selectedItemKeys.push(selectedItemKeys[i]);
                                this.options.selectedItems.push(selectedItems[i])
                            }
                        }
                        this._initSelectedItemKeyHash();
                        this.updateSelectedItemKeyHash(this.options.selectedItemKeys)
                    };
                    _proto._loadSelectedItemsCore = function(keys, isDeselect, isSelectAll, filter) {
                        let forceCombinedFilter = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : false;
                        let deferred = new _deferred.Deferred;
                        const key = this.options.key();
                        if (!keys.length && !isSelectAll) {
                            deferred.resolve([]);
                            return deferred
                        }
                        if (isSelectAll && isDeselect && !filter) {
                            deferred.resolve(this.getSelectedItems());
                            return deferred
                        }
                        const selectionFilterCreator = new _selection_filter.SelectionFilterCreator(keys, isSelectAll);
                        const combinedFilter = selectionFilterCreator.getCombinedFilter(key, filter, forceCombinedFilter);
                        let deselectedItems = [];
                        if (isDeselect) {
                            const selectedItems = this.options.selectedItems;
                            deselectedItems = combinedFilter && keys.length !== selectedItems.length ? (0, _query.default)(selectedItems).filter(combinedFilter).toArray() : selectedItems.slice(0)
                        }
                        let filteredItems = deselectedItems.length ? deselectedItems : this.options.plainItems(true).filter(this.options.isSelectableItem).map(this.options.getItemData);
                        const localFilter = selectionFilterCreator.getLocalFilter(this.options.keyOf, this.equalKeys.bind(this), this.options.equalByReference, key);
                        filteredItems = filteredItems.filter(localFilter);
                        if (deselectedItems.length || !isSelectAll && filteredItems.length === keys.length) {
                            deferred.resolve(filteredItems)
                        } else {
                            deferred = this._loadFilteredData(combinedFilter, localFilter, null, isSelectAll)
                        }
                        return deferred
                    };
                    _proto._replaceSelectionUpdate = function(items) {
                        const internalKeys = [];
                        const keyOf = this.options.keyOf;
                        if (!keyOf) {
                            return
                        }
                        for (let i = 0; i < items.length; i++) {
                            const item = items[i];
                            const key = keyOf(item);
                            internalKeys.push(key)
                        }
                        this.setSelectedItems(internalKeys, items)
                    };
                    _proto._warnOnIncorrectKeys = function(keys) {
                        const allowNullValue = this.options.allowNullValue;
                        for (let i = 0; i < keys.length; i++) {
                            const key = keys[i];
                            if ((!allowNullValue || null !== key) && !this.isItemKeySelected(key)) {
                                _ui.default.log("W1002", key)
                            }
                        }
                    };
                    _proto._isMultiSelectEnabled = function() {
                        const mode = this.options.mode;
                        return "all" === mode || "multiple" === mode
                    };
                    _proto._requestInProgress = function() {
                        var _this$_lastLoadDeferr;
                        return "pending" === (null === (_this$_lastLoadDeferr = this._lastLoadDeferred) || void 0 === _this$_lastLoadDeferr ? void 0 : _this$_lastLoadDeferr.state())
                    };
                    _proto._concatRequestsItems = function(keys, isDeselect, oldRequestItems, updatedKeys) {
                        let selectedItems;
                        const deselectedItems = isDeselect ? keys : [];
                        if (updatedKeys) {
                            selectedItems = updatedKeys
                        } else {
                            selectedItems = (0, _array.removeDuplicates)(keys, this.options.selectedItemKeys)
                        }
                        return {
                            addedItems: oldRequestItems.added.concat(selectedItems),
                            removedItems: oldRequestItems.removed.concat(deselectedItems),
                            keys: keys
                        }
                    };
                    _proto._collectLastRequestData = function(keys, isDeselect, isSelectAll, updatedKeys) {
                        const isDeselectAll = isDeselect && isSelectAll;
                        const oldRequestItems = {
                            added: [],
                            removed: []
                        };
                        const multiSelectEnabled = this._isMultiSelectEnabled();
                        let lastRequestData = multiSelectEnabled ? this._lastRequestData : {};
                        if (multiSelectEnabled) {
                            if (this._shouldMergeWithLastRequest) {
                                if (isDeselectAll) {
                                    this._lastLoadDeferred.reject();
                                    lastRequestData = {}
                                } else if (!(0, _array_compare.isKeysEqual)(keys, this.options.selectedItemKeys)) {
                                    oldRequestItems.added = lastRequestData.addedItems;
                                    oldRequestItems.removed = lastRequestData.removedItems;
                                    if (!isDeselect) {
                                        this._lastLoadDeferred.reject()
                                    }
                                }
                            }
                            lastRequestData = this._concatRequestsItems(keys, isDeselect, oldRequestItems, this._shouldMergeWithLastRequest ? void 0 : updatedKeys)
                        }
                        return lastRequestData
                    };
                    _proto._updateKeysByLastRequestData = function(keys, isDeselect, isSelectAll) {
                        let currentKeys = keys;
                        if (this._isMultiSelectEnabled() && this._shouldMergeWithLastRequest && !isDeselect && !isSelectAll) {
                            var _this$_lastRequestDat, _this$_lastRequestDat2;
                            currentKeys = (0, _array.removeDuplicates)(keys.concat(null === (_this$_lastRequestDat = this._lastRequestData) || void 0 === _this$_lastRequestDat ? void 0 : _this$_lastRequestDat.addedItems), null === (_this$_lastRequestDat2 = this._lastRequestData) || void 0 === _this$_lastRequestDat2 ? void 0 : _this$_lastRequestDat2.removedItems);
                            currentKeys = (0, _array.getUniqueValues)(currentKeys)
                        }
                        return currentKeys
                    };
                    _proto._loadSelectedItems = function(keys, isDeselect, isSelectAll, updatedKeys) {
                        let forceCombinedFilter = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : false;
                        const that = this;
                        const deferred = new _deferred.Deferred;
                        const filter = that.options.filter();
                        this._shouldMergeWithLastRequest = this._requestInProgress();
                        this._lastRequestData = this._collectLastRequestData(keys, isDeselect, isSelectAll, updatedKeys);
                        (0, _deferred.when)(that._lastLoadDeferred).always((function() {
                            const currentKeys = that._updateKeysByLastRequestData(keys, isDeselect, isSelectAll);
                            that._shouldMergeWithLastRequest = false;
                            that._loadSelectedItemsCore(currentKeys, isDeselect, isSelectAll, filter, forceCombinedFilter).done(deferred.resolve).fail(deferred.reject)
                        }));
                        that._lastLoadDeferred = deferred;
                        return deferred
                    };
                    _proto.selectedItemKeys = function(keys, preserve, isDeselect, isSelectAll, updatedKeys) {
                        let forceCombinedFilter = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : false;
                        const that = this;
                        const deferred = that._loadSelectedItems(keys, isDeselect, isSelectAll, updatedKeys, forceCombinedFilter);
                        deferred.done((function(items) {
                            if (preserve) {
                                that._preserveSelectionUpdate(items, isDeselect)
                            } else {
                                that._replaceSelectionUpdate(items)
                            }
                            that.onSelectionChanged()
                        }));
                        return deferred
                    };
                    _proto.addSelectedItem = function(key, itemData) {
                        if ((0, _type.isDefined)(itemData) && !this.options.ignoreDisabledItems && itemData.disabled) {
                            if (-1 === this.options.disabledItemKeys.indexOf(key)) {
                                this.options.disabledItemKeys.push(key)
                            }
                            return
                        }
                        const keyHash = this._getKeyHash(key);
                        if (-1 === this._indexOfSelectedItemKey(keyHash)) {
                            if (!(0, _type.isObject)(keyHash) && this.options.keyHashIndices) {
                                this.options.keyHashIndices[keyHash] = [this.options.selectedItemKeys.length]
                            }
                            this.options.selectedItemKeys.push(key);
                            this.options.addedItemKeys.push(key);
                            this.options.addedItems.push(itemData);
                            this.options.selectedItems.push(itemData)
                        }
                    };
                    _proto._getSelectedIndexByKey = function(key, ignoreIndicesMap) {
                        const selectedItemKeys = this.options.selectedItemKeys;
                        for (let index = 0; index < selectedItemKeys.length; index++) {
                            if ((!ignoreIndicesMap || !ignoreIndicesMap[index]) && this.equalKeys(selectedItemKeys[index], key)) {
                                return index
                            }
                        }
                        return -1
                    };
                    _proto._getSelectedIndexByHash = function(key, ignoreIndicesMap) {
                        let indices = this.options.keyHashIndices[key];
                        if (indices && indices.length > 1 && ignoreIndicesMap) {
                            indices = indices.filter((function(index) {
                                return !ignoreIndicesMap[index]
                            }))
                        }
                        return indices && indices[0] >= 0 ? indices[0] : -1
                    };
                    _proto._indexOfSelectedItemKey = function(key, ignoreIndicesMap) {
                        let selectedIndex;
                        if (this.options.equalByReference) {
                            selectedIndex = this.options.selectedItemKeys.indexOf(key)
                        } else if ((0, _type.isObject)(key)) {
                            selectedIndex = this._getSelectedIndexByKey(key, ignoreIndicesMap)
                        } else {
                            selectedIndex = this._getSelectedIndexByHash(key, ignoreIndicesMap)
                        }
                        return selectedIndex
                    };
                    _proto._shiftSelectedKeyIndices = function(keyIndex) {
                        for (let currentKeyIndex = keyIndex; currentKeyIndex < this.options.selectedItemKeys.length; currentKeyIndex++) {
                            const currentKey = this.options.selectedItemKeys[currentKeyIndex];
                            const currentKeyHash = (0, _common.getKeyHash)(currentKey);
                            const currentKeyIndices = this.options.keyHashIndices[currentKeyHash];
                            if (!currentKeyIndices) {
                                continue
                            }
                            for (let i = 0; i < currentKeyIndices.length; i++) {
                                if (currentKeyIndices[i] > keyIndex) {
                                    currentKeyIndices[i]--
                                }
                            }
                        }
                    };
                    _proto.removeSelectedItem = function(key, keyIndicesToRemoveMap, isDisabled) {
                        if (!this.options.ignoreDisabledItems && isDisabled) {
                            return
                        }
                        const keyHash = this._getKeyHash(key);
                        const isBatchDeselect = !!keyIndicesToRemoveMap;
                        const keyIndex = this._indexOfSelectedItemKey(keyHash, keyIndicesToRemoveMap);
                        if (keyIndex < 0) {
                            return keyIndex
                        }
                        this.options.removedItemKeys.push(key);
                        this.options.removedItems.push(this.options.selectedItems[keyIndex]);
                        if (isBatchDeselect) {
                            return keyIndex
                        }
                        this.options.selectedItemKeys.splice(keyIndex, 1);
                        this.options.selectedItems.splice(keyIndex, 1);
                        if ((0, _type.isObject)(keyHash) || !this.options.keyHashIndices) {
                            return keyIndex
                        }
                        const keyIndices = this.options.keyHashIndices[keyHash];
                        if (!keyIndices) {
                            return keyIndex
                        }
                        keyIndices.shift();
                        if (!keyIndices.length) {
                            delete this.options.keyHashIndices[keyHash]
                        }
                        this._shiftSelectedKeyIndices(keyIndex);
                        return keyIndex
                    };
                    _proto._updateAddedItemKeys = function(keys, items) {
                        for (let i = 0; i < keys.length; i++) {
                            if (!this.isItemKeySelected(keys[i])) {
                                this.options.addedItemKeys.push(keys[i]);
                                this.options.addedItems.push(items[i])
                            }
                        }
                    };
                    _proto._updateRemovedItemKeys = function(keys, oldSelectedKeys, oldSelectedItems) {
                        for (let i = 0; i < oldSelectedKeys.length; i++) {
                            if (!this.isItemKeySelected(oldSelectedKeys[i])) {
                                this.options.removedItemKeys.push(oldSelectedKeys[i]);
                                this.options.removedItems.push(oldSelectedItems[i])
                            }
                        }
                    };
                    _proto._isItemSelectionInProgress = function(key, checkPending) {
                        const shouldCheckPending = checkPending && this._lastRequestData && this._requestInProgress();
                        if (shouldCheckPending) {
                            var _this$_lastRequestDat3;
                            const addedItems = null !== (_this$_lastRequestDat3 = this._lastRequestData.addedItems) && void 0 !== _this$_lastRequestDat3 ? _this$_lastRequestDat3 : [];
                            return addedItems.includes(key)
                        } else {
                            return false
                        }
                    };
                    _proto._getKeyHash = function(key) {
                        return this.options.equalByReference ? key : (0, _common.getKeyHash)(key)
                    };
                    _proto.setSelectedItems = function(keys, items) {
                        this._updateAddedItemKeys(keys, items);
                        const oldSelectedKeys = this.options.selectedItemKeys;
                        const oldSelectedItems = this.options.selectedItems;
                        if (!this.options.equalByReference) {
                            this._initSelectedItemKeyHash();
                            this.updateSelectedItemKeyHash(keys)
                        }
                        this._setOption("selectedItemKeys", keys);
                        this._setOption("selectedItems", items);
                        this._updateRemovedItemKeys(keys, oldSelectedKeys, oldSelectedItems)
                    };
                    _proto.isItemDataSelected = function(itemData) {
                        let options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                        const key = this.options.keyOf(itemData);
                        return this.isItemKeySelected(key, options)
                    };
                    _proto.isItemKeySelected = function(key) {
                        let options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                        let result = this._isItemSelectionInProgress(key, options.checkPending);
                        if (!result) {
                            const keyHash = this._getKeyHash(key);
                            const index = this._indexOfSelectedItemKey(keyHash);
                            result = -1 !== index
                        }
                        return result
                    };
                    _proto.getSelectAllState = function(visibleOnly) {
                        if (visibleOnly) {
                            return this._getVisibleSelectAllState()
                        } else {
                            return this._getFullSelectAllState()
                        }
                    };
                    _proto.loadSelectedItemsWithFilter = function() {
                        const keyExpr = this.options.key();
                        const keys = this.getSelectedItemKeys();
                        const filter = this.options.filter();
                        if (!keys.length) {
                            return (0, _deferred.Deferred)().resolve([])
                        }
                        const selectionFilterCreator = new _selection_filter.SelectionFilterCreator(keys);
                        const combinedFilter = selectionFilterCreator.getCombinedFilter(keyExpr, filter, true);
                        return this._loadFilteredData(combinedFilter)
                    };
                    return StandardStrategy
                }(_selection.default);
                exports.default = StandardStrategy;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        56756:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/shared/accessibility.js ***!
              \************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.hiddenFocus = function(element, preventScroll) {
                    isHiddenFocusing = true;
                    element.focus({
                        preventScroll: preventScroll
                    });
                    isHiddenFocusing = false
                };
                exports.registerKeyboardAction = function(viewName, instance, $element, selector, action, executeKeyDown) {
                    if (instance.option("useLegacyKeyboardNavigation")) {
                        return _common.noop
                    }
                    const getMainElement = () => (0, _renderer.default)(instance.element());
                    const keyDownHandler = e => function(viewName, instance, event, action, $mainElement, executeKeyDown) {
                        const isHandled = function(instance, event, executeAction) {
                            const args = {
                                event: event,
                                handled: false
                            };
                            if (executeAction) {
                                executeAction(args)
                            } else {
                                instance._createActionByOption("onKeyDown")(args)
                            }
                            return args.handled
                        }(instance, event.originalEvent, executeKeyDown);
                        if (isHandled) {
                            return
                        }
                        const keyName = (0, _index.normalizeKeyName)(event);
                        if ("enter" === keyName || "space" === keyName) {
                            saveFocusedElementInfo(event.target, instance);
                            action && action({
                                event: event
                            })
                        } else if ("tab" === keyName) {
                            $mainElement.addClass("dx-state-focused")
                        } else {
                            selectView(viewName, instance, event)
                        }
                    }(viewName, instance, e, action, getMainElement(), executeKeyDown);
                    const mouseDownHandler = () => {
                        isMouseDown = true;
                        getMainElement().removeClass("dx-state-focused")
                    };
                    const focusinHandler = () => {
                        const needShowOverlay = !isMouseDown && !isHiddenFocusing;
                        if (needShowOverlay) {
                            getMainElement().addClass("dx-state-focused")
                        }
                        isMouseDown = false
                    };
                    _events_engine.default.on($element, "keydown", selector, keyDownHandler);
                    _events_engine.default.on($element, "mousedown", selector, mouseDownHandler);
                    _events_engine.default.on($element, "focusin", selector, focusinHandler);
                    return () => {
                        _events_engine.default.off($element, "keydown", selector, keyDownHandler);
                        _events_engine.default.off($element, "mousedown", selector, mouseDownHandler);
                        _events_engine.default.off($element, "focusin", selector, focusinHandler)
                    }
                };
                exports.restoreFocus = function(instance) {
                    if (!instance.option("useLegacyKeyboardNavigation") && focusedElementInfo) {
                        const viewInstance = focusedElementInfo.viewInstance;
                        if (viewInstance) {
                            const $activeElements = getActiveAccessibleElements(focusedElementInfo.ariaLabel, viewInstance.element());
                            const $targetElement = $activeElements.eq(focusedElementInfo.index);
                            focusedElementInfo = null;
                            _events_engine.default.trigger($targetElement, "focus")
                        }
                    }
                };
                exports.saveFocusedElementInfo = saveFocusedElementInfo;
                exports.selectView = selectView;
                exports.setTabIndex = function(instance, $element) {
                    if (!instance.option("useLegacyKeyboardnavigation")) {
                        $element.attr("tabindex", instance.option("tabindex") || 0)
                    }
                };
                exports.subscribeVisibilityChange = function() {
                    _events_engine.default.on(_dom_adapter.default.getDocument(), "visibilitychange", onDocumentVisibilityChange)
                };
                exports.unsubscribeVisibilityChange = function() {
                    _events_engine.default.off(_dom_adapter.default.getDocument(), "visibilitychange", onDocumentVisibilityChange)
                };
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const GRID_CELL_SELECTOR = "".concat(".dx-datagrid-rowsview .dx-row", " > td");
                const TREELIST_CELL_SELECTOR = "".concat(".dx-treelist-rowsview .dx-row", " > td");
                const viewItemSelectorMap = {
                    groupPanel: [".dx-datagrid-group-panel .dx-group-panel-item[tabindex]"],
                    columnHeaders: [".dx-datagrid-headers .dx-header-row > td.dx-datagrid-action", ".dx-treelist-headers .dx-header-row > td.dx-treelist-action"],
                    filterRow: [".dx-datagrid-headers .dx-datagrid-filter-row .dx-editor-cell .dx-texteditor-input", ".dx-treelist-headers .dx-treelist-filter-row .dx-editor-cell .dx-texteditor-input"],
                    rowsView: ["".concat(".dx-row-focused"), "".concat(".dx-datagrid-rowsview .dx-row", "[tabindex]"), "".concat(GRID_CELL_SELECTOR, "[tabindex]"), "".concat(GRID_CELL_SELECTOR), "".concat(".dx-treelist-rowsview .dx-row", "[tabindex]"), "".concat(TREELIST_CELL_SELECTOR, "[tabindex]"), "".concat(TREELIST_CELL_SELECTOR)],
                    footer: [".dx-datagrid-total-footer .dx-datagrid-summary-item", ".dx-treelist-total-footer .dx-treelist-summary-item"],
                    filterPanel: [".dx-datagrid-filter-panel .dx-icon-filter", ".dx-treelist-filter-panel .dx-icon-filter"],
                    pager: [".dx-datagrid-pager [tabindex]", ".dx-treelist-pager [tabindex]"]
                };
                let isMouseDown = false;
                let isHiddenFocusing = false;
                let focusedElementInfo = null;

                function saveFocusedElementInfo(target, instance) {
                    const $target = (0, _renderer.default)(target);
                    const ariaLabel = $target.attr("aria-label");
                    const $activeElements = getActiveAccessibleElements(ariaLabel, instance.element());
                    const targetIndex = $activeElements.index($target);
                    focusedElementInfo = (0, _extend.extend)({}, {
                        ariaLabel: ariaLabel,
                        index: targetIndex
                    }, {
                        viewInstance: instance
                    })
                }

                function getActiveAccessibleElements(ariaLabel, viewElement) {
                    const $viewElement = (0, _renderer.default)(viewElement);
                    let $activeElements;
                    if (ariaLabel) {
                        $activeElements = $viewElement.find('[aria-label="'.concat(ariaLabel, '"][tabindex]'))
                    } else {
                        $activeElements = $viewElement.find("[tabindex]")
                    }
                    return $activeElements
                }

                function findFocusedViewElement(viewSelectors, element) {
                    const root = (null === element || void 0 === element ? void 0 : element.getRootNode()) || _dom_adapter.default.getDocument();
                    for (const index in viewSelectors) {
                        const selector = viewSelectors[index];
                        const $focusViewElement = (0, _renderer.default)(root).find(selector).first();
                        if ($focusViewElement.length) {
                            return $focusViewElement
                        }
                    }
                }

                function onDocumentVisibilityChange() {
                    isHiddenFocusing = "visible" === _dom_adapter.default.getDocument().visibilityState
                }

                function selectView(viewName, instance, event) {
                    const keyName = (0, _index.normalizeKeyName)(event);
                    if (event.ctrlKey && ("upArrow" === keyName || "downArrow" === keyName)) {
                        const viewNames = Object.keys(viewItemSelectorMap);
                        let viewItemIndex = viewNames.indexOf(viewName);
                        while (viewItemIndex >= 0 && viewItemIndex < viewNames.length) {
                            viewItemIndex = "upArrow" === keyName ? --viewItemIndex : ++viewItemIndex;
                            const viewName = viewNames[viewItemIndex];
                            const viewSelectors = viewItemSelectorMap[viewName];
                            const $focusViewElement = findFocusedViewElement(viewSelectors, event.target);
                            if ($focusViewElement && $focusViewElement.length) {
                                $focusViewElement.attr("tabindex", instance.option("tabindex") || 0);
                                _events_engine.default.trigger($focusViewElement, "focus");
                                $focusViewElement.removeClass("dx-cell-focus-disabled");
                                break
                            }
                        }
                    }
                }
            },
        18740:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/shared/filtering.js ***!
              \********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                const DEFAULT_DATE_INTERVAL = ["year", "month", "day"];
                const DEFAULT_DATETIME_INTERVAL = ["year", "month", "day", "hour", "minute"];
                const isDateType = function(dataType) {
                    return "date" === dataType || "datetime" === dataType
                };
                const getGroupInterval = function(column) {
                    let index;
                    let result = [];
                    const dateIntervals = ["year", "month", "day", "hour", "minute", "second"];
                    const groupInterval = column.headerFilter && column.headerFilter.groupInterval;
                    const interval = "quarter" === groupInterval ? "month" : groupInterval;
                    if (isDateType(column.dataType) && null !== groupInterval) {
                        result = "datetime" === column.dataType ? DEFAULT_DATETIME_INTERVAL : DEFAULT_DATE_INTERVAL;
                        index = dateIntervals.indexOf(interval);
                        if (index >= 0) {
                            result = dateIntervals.slice(0, index);
                            result.push(groupInterval);
                            return result
                        }
                        return result
                    } else if ((0, _type.isDefined)(groupInterval)) {
                        return Array.isArray(groupInterval) ? groupInterval : [groupInterval]
                    }
                };
                var _default = function() {
                    const getFilterSelector = function(column, target) {
                        let selector = column.dataField || column.selector;
                        if ("search" === target) {
                            selector = column.displayField || column.calculateDisplayValue || selector
                        }
                        return selector
                    };
                    const getFilterExpressionByRange = function(filterValue, target) {
                        const column = this;
                        let endFilterValue;
                        let startFilterExpression;
                        let endFilterExpression;
                        const selector = getFilterSelector(column, target);
                        if (Array.isArray(filterValue) && (0, _type.isDefined)(filterValue[0]) && (0, _type.isDefined)(filterValue[1])) {
                            startFilterExpression = [selector, ">=", filterValue[0]];
                            endFilterExpression = [selector, "<=", filterValue[1]];
                            if (isDateType(column.dataType) && (date = filterValue[1], date.getHours() + date.getMinutes() + date.getSeconds() + date.getMilliseconds() < 1)) {
                                endFilterValue = new Date(filterValue[1].getTime());
                                if ("date" === column.dataType) {
                                    endFilterValue.setDate(filterValue[1].getDate() + 1)
                                }
                                endFilterExpression = [selector, "<", endFilterValue]
                            }
                            return [startFilterExpression, "and", endFilterExpression]
                        }
                        var date
                    };
                    const getFilterExpressionForDate = function(filterValue, selectedFilterOperation, target) {
                        const column = this;
                        let dateStart;
                        let dateEnd;
                        let dateInterval;
                        const values = function(dateValue) {
                            if ((0, _type.isDate)(dateValue)) {
                                return [dateValue.getFullYear(), dateValue.getMonth(), dateValue.getDate(), dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds()]
                            }
                            return (0, _iterator.map)(("" + dateValue).split("/"), (function(value, index) {
                                return 1 === index ? Number(value) - 1 : Number(value)
                            }))
                        }(filterValue);
                        const selector = getFilterSelector(column, target);
                        if ("headerFilter" === target) {
                            dateInterval = getGroupInterval(column)[values.length - 1]
                        } else if ("datetime" === column.dataType) {
                            dateInterval = "minute"
                        }
                        switch (dateInterval) {
                            case "year":
                                dateStart = new Date(values[0], 0, 1);
                                dateEnd = new Date(values[0] + 1, 0, 1);
                                break;
                            case "month":
                                dateStart = new Date(values[0], values[1], 1);
                                dateEnd = new Date(values[0], values[1] + 1, 1);
                                break;
                            case "quarter":
                                dateStart = new Date(values[0], 3 * values[1], 1);
                                dateEnd = new Date(values[0], 3 * values[1] + 3, 1);
                                break;
                            case "hour":
                                dateStart = new Date(values[0], values[1], values[2], values[3]);
                                dateEnd = new Date(values[0], values[1], values[2], values[3] + 1);
                                break;
                            case "minute":
                                dateStart = new Date(values[0], values[1], values[2], values[3], values[4]);
                                dateEnd = new Date(values[0], values[1], values[2], values[3], values[4] + 1);
                                break;
                            case "second":
                                dateStart = new Date(values[0], values[1], values[2], values[3], values[4], values[5]);
                                dateEnd = new Date(values[0], values[1], values[2], values[3], values[4], values[5] + 1);
                                break;
                            default:
                                dateStart = new Date(values[0], values[1], values[2]);
                                dateEnd = new Date(values[0], values[1], values[2] + 1)
                        }
                        switch (selectedFilterOperation) {
                            case "<":
                                return [selector, "<", dateStart];
                            case "<=":
                                return [selector, "<", dateEnd];
                            case ">":
                                return [selector, ">=", dateEnd];
                            case ">=":
                                return [selector, ">=", dateStart];
                            case "<>":
                                return [
                                    [selector, "<", dateStart], "or", [selector, ">=", dateEnd]
                                ];
                            default:
                                return [
                                    [selector, ">=", dateStart], "and", [selector, "<", dateEnd]
                                ]
                        }
                    };
                    const getFilterExpressionForNumber = function(filterValue, selectedFilterOperation, target) {
                        const selector = getFilterSelector(this, target);
                        const groupInterval = getGroupInterval(this);
                        if ("headerFilter" === target && groupInterval && (0, _type.isDefined)(filterValue)) {
                            const values = ("" + filterValue).split("/");
                            const value = Number(values[values.length - 1]);
                            const interval = groupInterval[values.length - 1];
                            const startFilterValue = [selector, ">=", value];
                            const endFilterValue = [selector, "<", value + interval];
                            const condition = [startFilterValue, "and", endFilterValue];
                            return condition
                        }
                        return [selector, selectedFilterOperation || "=", filterValue]
                    };
                    return {
                        defaultCalculateFilterExpression: function(filterValue, selectedFilterOperation, target) {
                            const column = this;
                            const selector = getFilterSelector(column, target);
                            const isSearchByDisplayValue = column.calculateDisplayValue && "search" === target;
                            const dataType = isSearchByDisplayValue && column.lookup && column.lookup.dataType || column.dataType;
                            let filter = null;
                            if (("headerFilter" === target || "filterBuilder" === target) && null === filterValue) {
                                filter = [selector, selectedFilterOperation || "=", null];
                                if ("string" === dataType) {
                                    filter = [filter, "=" === selectedFilterOperation ? "or" : "and", [selector, selectedFilterOperation || "=", ""]]
                                }
                            } else if ("string" === dataType && (!column.lookup || isSearchByDisplayValue)) {
                                filter = [selector, selectedFilterOperation || "contains", filterValue]
                            } else if ("between" === selectedFilterOperation) {
                                return getFilterExpressionByRange.apply(column, [filterValue, target])
                            } else if (isDateType(dataType) && (0, _type.isDefined)(filterValue)) {
                                return getFilterExpressionForDate.apply(column, arguments)
                            } else if ("number" === dataType) {
                                return getFilterExpressionForNumber.apply(column, arguments)
                            } else {
                                filter = [selector, selectedFilterOperation || "=", filterValue]
                            }
                            return filter
                        },
                        getGroupInterval: getGroupInterval
                    }
                }();
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        37178:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/shared/grouped_data_converter_mixin.js ***!
              \***************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _default = {
                    _getSpecificDataSourceOption: function() {
                        let dataSource = this.option("dataSource");
                        let hasSimpleItems = false;
                        let data = {};
                        if (this._getGroupedOption() && (data => Array.isArray(data) && data.every(item => {
                                const hasTwoFields = 2 === Object.keys(item).length;
                                const hasCorrectFields = "key" in item && "items" in item;
                                return hasTwoFields && hasCorrectFields && Array.isArray(item.items)
                            }))(dataSource)) {
                            data = dataSource.reduce((accumulator, item) => {
                                const items = item.items.map(innerItem => {
                                    if (!(0, _type.isObject)(innerItem)) {
                                        innerItem = {
                                            text: innerItem
                                        };
                                        hasSimpleItems = true
                                    }
                                    if (!("key" in innerItem)) {
                                        innerItem.key = item.key
                                    }
                                    return innerItem
                                });
                                return accumulator.concat(items)
                            }, []);
                            dataSource = {
                                store: {
                                    type: "array",
                                    data: data
                                },
                                group: {
                                    selector: "key",
                                    keepInitialKeyOrder: true
                                }
                            };
                            if (hasSimpleItems) {
                                dataSource.searchExpr = "text"
                            }
                        }
                        return dataSource
                    }
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        15653:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/shared/ui.editor_factory_mixin.js ***!
              \**********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _variable_wrapper = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/variable_wrapper */ 26974));
                var _data = __webpack_require__( /*! ../../core/utils/data */ 47617);
                var _browser = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/browser */ 47810));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _element = __webpack_require__( /*! ../../core/element */ 6415);
                var _utils = __webpack_require__( /*! ../../data/data_source/utils */ 9234);
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                __webpack_require__( /*! ../text_box */ 29837);
                __webpack_require__( /*! ../number_box */ 34171);
                __webpack_require__( /*! ../check_box */ 18859);
                __webpack_require__( /*! ../select_box */ 78665);
                __webpack_require__( /*! ../date_box */ 29589);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const {
                    isWrapped: isWrapped
                } = _variable_wrapper.default;
                const EditorFactoryMixin = function() {
                    const getResultConfig = function(config, options) {
                        return (0, _extend.extend)(config, {
                            readOnly: options.readOnly,
                            placeholder: options.placeholder,
                            inputAttr: {
                                id: options.id,
                                "aria-labelledby": options["aria-labelledby"]
                            },
                            tabIndex: options.tabIndex
                        }, options.editorOptions)
                    };
                    const checkEnterBug = function() {
                        return _browser.default.mozilla || _devices.default.real().ios
                    };
                    const getTextEditorConfig = function(options) {
                        const data = {};
                        const isEnterBug = checkEnterBug();
                        const sharedData = options.sharedData || data;
                        return getResultConfig({
                            placeholder: options.placeholder,
                            width: options.width,
                            value: options.value,
                            onValueChanged: function(e) {
                                const needDelayedUpdate = "filterRow" === options.parentType || "searchPanel" === options.parentType;
                                const isInputOrKeyUpEvent = e.event && ("input" === e.event.type || "keyup" === e.event.type);
                                const updateValue = function(e, notFireEvent) {
                                    options && options.setValue(e.value, notFireEvent)
                                };
                                clearTimeout(data.valueChangeTimeout);
                                if (isInputOrKeyUpEvent && needDelayedUpdate) {
                                    sharedData.valueChangeTimeout = data.valueChangeTimeout = setTimeout((function() {
                                        updateValue(e, data.valueChangeTimeout !== sharedData.valueChangeTimeout)
                                    }), (0, _type.isDefined)(options.updateValueTimeout) ? options.updateValueTimeout : 0)
                                } else {
                                    updateValue(e)
                                }
                            },
                            onKeyDown: function(e) {
                                if (isEnterBug && "enter" === (0, _index.normalizeKeyName)(e.event)) {
                                    _events_engine.default.trigger((0, _renderer.default)(e.component._input()), "change")
                                }
                            },
                            valueChangeEvent: "change" + ("filterRow" === options.parentType ? " keyup input" : "")
                        }, options)
                    };
                    const prepareDateBox = function(options) {
                        options.editorName = "dxDateBox";
                        options.editorOptions = getResultConfig({
                            value: options.value,
                            onValueChanged: function(args) {
                                options.setValue(args.value)
                            },
                            onKeyDown: function(_ref) {
                                let {
                                    component: component,
                                    event: event
                                } = _ref;
                                const useMaskBehavior = component.option("useMaskBehavior");
                                if ((checkEnterBug() || useMaskBehavior) && "enter" === (0, _index.normalizeKeyName)(event)) {
                                    component.blur();
                                    component.focus()
                                }
                            },
                            displayFormat: options.format,
                            type: options.dataType,
                            dateSerializationFormat: null,
                            width: "filterBuilder" === options.parentType ? void 0 : "auto"
                        }, options)
                    };
                    const prepareTextBox = function(options) {
                        const config = getTextEditorConfig(options);
                        const isSearching = "searchPanel" === options.parentType;
                        if (options.editorType && "dxTextBox" !== options.editorType) {
                            config.value = options.value
                        } else {
                            config.value = (value = options.value, (0, _type.isDefined)(value) ? value.toString() : "")
                        }
                        var value;
                        config.valueChangeEvent += isSearching ? " keyup input search" : "";
                        config.mode = config.mode || (isSearching ? "search" : "text");
                        options.editorName = "dxTextBox";
                        options.editorOptions = config
                    };
                    const prepareNumberBox = function(options) {
                        const config = getTextEditorConfig(options);
                        config.value = (0, _type.isDefined)(options.value) ? options.value : null;
                        options.editorName = "dxNumberBox";
                        options.editorOptions = config
                    };

                    function prepareLookupEditor(options) {
                        const lookup = options.lookup;
                        let displayGetter;
                        let dataSource;
                        let postProcess;
                        const isFilterRow = "filterRow" === options.parentType;
                        if (lookup) {
                            var _options$editorType;
                            displayGetter = (0, _data.compileGetter)(lookup.displayExpr);
                            dataSource = lookup.dataSource;
                            if ((0, _type.isFunction)(dataSource) && !isWrapped(dataSource)) {
                                dataSource = dataSource(options.row || {});
                                ! function(options) {
                                    if (options.row && options.row.watch && "dataRow" === options.parentType) {
                                        const editorOptions = options.editorOptions || {};
                                        options.editorOptions = editorOptions;
                                        let selectBox;
                                        const onInitialized = editorOptions.onInitialized;
                                        editorOptions.onInitialized = function(e) {
                                            onInitialized && onInitialized.apply(this, arguments);
                                            selectBox = e.component;
                                            selectBox.on("disposing", stopWatch)
                                        };
                                        let dataSource;
                                        const stopWatch = options.row.watch(() => {
                                            dataSource = options.lookup.dataSource(options.row);
                                            return dataSource && dataSource.filter
                                        }, () => {
                                            selectBox.option("dataSource", dataSource)
                                        }, row => {
                                            options.row = row
                                        })
                                    }
                                }(options)
                            }
                            if ((0, _type.isObject)(dataSource) || Array.isArray(dataSource)) {
                                dataSource = (0, _utils.normalizeDataSourceOptions)(dataSource);
                                if (isFilterRow) {
                                    postProcess = dataSource.postProcess;
                                    dataSource.postProcess = function(items) {
                                        if (0 === this.pageIndex()) {
                                            items = items.slice(0);
                                            items.unshift(null)
                                        }
                                        if (postProcess) {
                                            return postProcess.call(this, items)
                                        }
                                        return items
                                    }
                                }
                            }
                            const allowClearing = Boolean(lookup.allowClearing && !isFilterRow);
                            options.editorName = null !== (_options$editorType = options.editorType) && void 0 !== _options$editorType ? _options$editorType : "dxSelectBox";
                            options.editorOptions = getResultConfig({
                                searchEnabled: true,
                                value: options.value,
                                valueExpr: options.lookup.valueExpr,
                                searchExpr: options.lookup.searchExpr || options.lookup.displayExpr,
                                allowClearing: allowClearing,
                                showClearButton: allowClearing,
                                displayExpr: function(data) {
                                    if (null === data) {
                                        return options.showAllText
                                    }
                                    return displayGetter(data)
                                },
                                dataSource: dataSource,
                                onValueChanged: function(e) {
                                    const params = [e.value];
                                    !isFilterRow && params.push(e.component.option("text"));
                                    options.setValue.apply(this, params)
                                }
                            }, options)
                        }
                    }

                    function prepareCheckBox(options) {
                        options.editorName = "dxCheckBox";
                        options.editorOptions = getResultConfig({
                            elementAttr: {
                                id: options.id
                            },
                            value: (0, _type.isDefined)(options.value) ? options.value : void 0,
                            hoverStateEnabled: !options.readOnly,
                            focusStateEnabled: !options.readOnly,
                            activeStateEnabled: false,
                            onValueChanged: function(e) {
                                options.setValue && options.setValue(e.value, e)
                            }
                        }, options)
                    }
                    const prepareCustomEditor = options => {
                        options.editorName = options.editorType;
                        options.editorOptions = getResultConfig({
                            value: options.value,
                            onValueChanged: function(args) {
                                options.setValue(args.value)
                            }
                        }, options)
                    };
                    const prepareEditor = options => {
                        const prepareDefaultEditor = {
                            dxDateBox: prepareDateBox,
                            dxCheckBox: prepareCheckBox,
                            dxNumberBox: prepareNumberBox,
                            dxTextBox: prepareTextBox
                        };
                        if (options.lookup) {
                            prepareLookupEditor(options)
                        } else if (options.editorType) {
                            var _prepareDefaultEditor;
                            (null !== (_prepareDefaultEditor = prepareDefaultEditor[options.editorType]) && void 0 !== _prepareDefaultEditor ? _prepareDefaultEditor : prepareCustomEditor)(options)
                        } else {
                            switch (options.dataType) {
                                case "date":
                                case "datetime":
                                    prepareDateBox(options);
                                    break;
                                case "boolean":
                                    ! function(options) {
                                        if ("filterRow" === options.parentType || "filterBuilder" === options.parentType) {
                                            prepareLookupEditor((0, _extend.extend)(options, {
                                                lookup: {
                                                    displayExpr: function(data) {
                                                        if (true === data) {
                                                            return options.trueText || "true"
                                                        } else if (false === data) {
                                                            return options.falseText || "false"
                                                        }
                                                    },
                                                    dataSource: [true, false]
                                                }
                                            }))
                                        } else {
                                            prepareCheckBox(options)
                                        }
                                    }(options);
                                    break;
                                case "number":
                                    prepareNumberBox(options);
                                    break;
                                default:
                                    prepareTextBox(options)
                            }
                        }
                    };
                    return {
                        createEditor: function($container, options) {
                            options.cancel = false;
                            options.editorElement = (0, _element.getPublicElement)($container);
                            if (!(0, _type.isDefined)(options.tabIndex)) {
                                options.tabIndex = this.option("tabIndex")
                            }
                            prepareEditor(options);
                            this.executeAction("onEditorPreparing", options);
                            if (options.cancel) {
                                return
                            }
                            if ("dataRow" === options.parentType && !options.isOnForm && !(0, _type.isDefined)(options.editorOptions.showValidationMark)) {
                                options.editorOptions.showValidationMark = false
                            }! function(that, options) {
                                const $editorElement = (0, _renderer.default)(options.editorElement);
                                if (options.editorName && options.editorOptions && $editorElement[options.editorName]) {
                                    if ("dxCheckBox" === options.editorName || "dxSwitch" === options.editorName) {
                                        if (!options.isOnForm) {
                                            $editorElement.addClass(that.addWidgetPrefix("checkbox-size"));
                                            $editorElement.parent().addClass("dx-editor-inline-block")
                                        }
                                    }
                                    that._createComponent($editorElement, options.editorName, options.editorOptions);
                                    if ("dxDateBox" === options.editorName) {
                                        const dateBox = $editorElement.dxDateBox("instance");
                                        const defaultEnterKeyHandler = dateBox._supportedKeys().enter;
                                        dateBox.registerKeyHandler("enter", e => {
                                            if (dateBox.option("opened")) {
                                                defaultEnterKeyHandler(e)
                                            }
                                            return true
                                        })
                                    }
                                    if ("dxTextArea" === options.editorName) {
                                        $editorElement.dxTextArea("instance").registerKeyHandler("enter", (function(event) {
                                            if ("enter" === (0, _index.normalizeKeyName)(event) && !event.ctrlKey && !event.shiftKey) {
                                                event.stopPropagation()
                                            }
                                        }))
                                    }
                                }
                            }(this, options);
                            this.executeAction("onEditorPrepared", options)
                        }
                    }
                }();
                var _default = EditorFactoryMixin;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        97834:
            /*!**********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/slider.js ***!
              \**********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _ui = (obj = __webpack_require__( /*! ./slider/ui.slider */ 63570), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _ui.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        73437:
            /*!*********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/slider/slider_tooltip_position_controller.js ***!
              \*********************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.SliderTooltipPositionController = void 0;
                var _popover_position_controller = __webpack_require__( /*! ../popover/popover_position_controller */ 84228);
                var _translator = __webpack_require__( /*! ../../animation/translator */ 31648);
                var _position = (obj = __webpack_require__( /*! ../../animation/position */ 49387), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const SLIDER_TOOLTIP_POSITION_ALIASES = {
                    top: {
                        my: "bottom center",
                        at: "top center",
                        collision: "fit none"
                    },
                    bottom: {
                        my: "top center",
                        at: "bottom center",
                        collision: "fit none"
                    }
                };
                const SLIDER_TOOLTIP_DEFAULT_BOUNDARY_OFFSET = {
                    h: 2,
                    v: 1
                };
                let SliderTooltipPositionController = function(_PopoverPositionContr) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(SliderTooltipPositionController, _PopoverPositionContr);

                    function SliderTooltipPositionController() {
                        return _PopoverPositionContr.apply(this, arguments) || this
                    }
                    var _proto = SliderTooltipPositionController.prototype;
                    _proto._normalizePosition = function(positionProp) {
                        const $sliderHandle = this._props.target;
                        const sliderClass = ".".concat("dx-slider");
                        const $slider = null === $sliderHandle || void 0 === $sliderHandle ? void 0 : $sliderHandle.closest(sliderClass);
                        const defaultPositionConfig = {
                            of: $sliderHandle,
                            boundaryOffset: SLIDER_TOOLTIP_DEFAULT_BOUNDARY_OFFSET,
                            boundary: null === $slider || void 0 === $slider ? void 0 : $slider.get(0)
                        };
                        const resultPosition = (0, _extend.extend)(true, {}, defaultPositionConfig, this._positionToObject(positionProp));
                        this._positionSide = this._getDisplaySide(resultPosition);
                        return resultPosition
                    };
                    _proto._renderContentInitialPosition = function() {
                        _PopoverPositionContr.prototype._renderContentInitialPosition.call(this);
                        this._fitIntoSlider()
                    };
                    _proto._fitIntoSlider = function() {
                        const {
                            collisionSide: collisionSide,
                            oversize: oversize
                        } = _position.default.calculate(this._$content, this._position).h;
                        const left = this._visualPosition.left;
                        const isLeftSide = "left" === collisionSide;
                        const offset = (isLeftSide ? 1 : -1) * oversize;
                        (0, _translator.move)(this._$content, {
                            left: left + offset
                        });
                        this._updateVisualPositionValue()
                    };
                    _proto._positionToObject = function(positionProp) {
                        if ((0, _type.isString)(positionProp)) {
                            return (0, _extend.extend)({}, SLIDER_TOOLTIP_POSITION_ALIASES[positionProp])
                        }
                        return positionProp
                    };
                    return SliderTooltipPositionController
                }(_popover_position_controller.PopoverPositionController);
                exports.SliderTooltipPositionController = SliderTooltipPositionController
            },
        63570:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/slider/ui.slider.js ***!
              \********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _click = __webpack_require__( /*! ../../events/click */ 95429);
                var _emitter = __webpack_require__( /*! ../../events/core/emitter.feedback */ 91633);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _swipeable = _interopRequireDefault(__webpack_require__( /*! ../../events/gesture/swipeable */ 66894));
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../events/pointer */ 93786));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _number = _interopRequireDefault(__webpack_require__( /*! ../../localization/number */ 18016));
                var _themes = __webpack_require__( /*! ../themes */ 75811);
                var _track_bar = _interopRequireDefault(__webpack_require__( /*! ../track_bar */ 39661));
                var _utils = __webpack_require__( /*! ../widget/utils.ink_ripple */ 72672);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./ui.slider_handle */ 6320));
                var _math = __webpack_require__( /*! ../../core/utils/math */ 60810);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const Slider = _track_bar.default.inherit({
                    _activeStateUnit: ".dx-slider-handle",
                    _supportedKeys: function() {
                        const isRTL = this.option("rtlEnabled");
                        const roundedValue = (offset, isLeftDirection) => {
                            offset = this._valueStep(offset);
                            const step = this.option("step");
                            const value = this.option("value");
                            const currentPosition = value - this.option("min");
                            const remainder = (0, _math.getRemainderByDivision)(currentPosition, step, this._getValueExponentLength());
                            let result = isLeftDirection ? value - offset + (remainder ? step - remainder : 0) : value + offset - remainder;
                            const min = this.option("min");
                            const max = this.option("max");
                            if (result < min) {
                                result = min
                            } else if (result > max) {
                                result = max
                            }
                            return this._roundToExponentLength(result)
                        };
                        const moveHandleRight = offset => {
                            this.option("value", roundedValue(offset, isRTL))
                        };
                        const moveHandleLeft = offset => {
                            this.option("value", roundedValue(offset, !isRTL))
                        };
                        return (0, _extend.extend)(this.callBase(), {
                            leftArrow: function(e) {
                                this._processKeyboardEvent(e);
                                moveHandleLeft(this.option("step"))
                            },
                            rightArrow: function(e) {
                                this._processKeyboardEvent(e);
                                moveHandleRight(this.option("step"))
                            },
                            pageUp: function(e) {
                                this._processKeyboardEvent(e);
                                moveHandleRight(this.option("step") * this.option("keyStep"))
                            },
                            pageDown: function(e) {
                                this._processKeyboardEvent(e);
                                moveHandleLeft(this.option("step") * this.option("keyStep"))
                            },
                            home: function(e) {
                                this._processKeyboardEvent(e);
                                const min = this.option("min");
                                this.option("value", min)
                            },
                            end: function(e) {
                                this._processKeyboardEvent(e);
                                const max = this.option("max");
                                this.option("value", max)
                            }
                        })
                    },
                    _processKeyboardEvent: function(e) {
                        e.preventDefault();
                        e.stopPropagation();
                        this._saveValueChangeEvent(e)
                    },
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            value: 50,
                            hoverStateEnabled: true,
                            activeStateEnabled: true,
                            step: 1,
                            showRange: true,
                            tooltip: {
                                enabled: false,
                                format: function(value) {
                                    return value
                                },
                                position: "top",
                                showMode: "onHover"
                            },
                            label: {
                                visible: false,
                                position: "bottom",
                                format: function(value) {
                                    return value
                                }
                            },
                            keyStep: 1,
                            useInkRipple: false,
                            validationMessageOffset: (0, _themes.isMaterial)() ? {
                                h: 18,
                                v: 0
                            } : {
                                h: 7,
                                v: 4
                            },
                            focusStateEnabled: true,
                            valueChangeMode: "onHandleMove"
                        })
                    },
                    _toggleValidationMessage: function(visible) {
                        if (!this.option("isValid")) {
                            this.$element().toggleClass("dx-invalid-message-visible", visible)
                        }
                    },
                    _defaultOptionsRules: function() {
                        return this.callBase().concat([{
                            device: function() {
                                return "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator()
                            },
                            options: {
                                focusStateEnabled: true
                            }
                        }, {
                            device: function() {
                                const themeName = (0, _themes.current)();
                                return (0, _themes.isMaterial)(themeName)
                            },
                            options: {
                                useInkRipple: true
                            }
                        }])
                    },
                    _initMarkup: function() {
                        this.$element().addClass("dx-slider");
                        this._renderSubmitElement();
                        this.option("useInkRipple") && this._renderInkRipple();
                        this.callBase();
                        this._renderLabels();
                        this._renderStartHandler();
                        this._renderAriaMinAndMax()
                    },
                    _attachFocusEvents: function() {
                        this.callBase();
                        const namespace = this.NAME + "Validation";
                        const focusInEvent = (0, _index.addNamespace)("focusin", namespace);
                        const focusOutEvent = (0, _index.addNamespace)("focusout", namespace);
                        const $focusTarget = this._focusTarget();
                        _events_engine.default.on($focusTarget, focusInEvent, this._toggleValidationMessage.bind(this, true));
                        _events_engine.default.on($focusTarget, focusOutEvent, this._toggleValidationMessage.bind(this, false))
                    },
                    _detachFocusEvents: function() {
                        this.callBase();
                        const $focusTarget = this._focusTarget();
                        this._toggleValidationMessage(false);
                        _events_engine.default.off($focusTarget, this.NAME + "Validation")
                    },
                    _render: function() {
                        this.callBase();
                        this._repaintHandle()
                    },
                    _renderSubmitElement: function() {
                        this._$submitElement = (0, _renderer.default)("<input>").attr("type", "hidden").appendTo(this.$element())
                    },
                    _getSubmitElement: function() {
                        return this._$submitElement
                    },
                    _renderInkRipple: function() {
                        this._inkRipple = (0, _utils.render)({
                            waveSizeCoefficient: .7,
                            isCentered: true,
                            wavesNumber: 2,
                            useHoldAnimation: false
                        })
                    },
                    _renderInkWave: function(element, dxEvent, doRender, waveIndex) {
                        if (!this._inkRipple) {
                            return
                        }
                        const config = {
                            element: element,
                            event: dxEvent,
                            wave: waveIndex
                        };
                        if (doRender) {
                            this._inkRipple.showWave(config)
                        } else {
                            this._inkRipple.hideWave(config)
                        }
                    },
                    _visibilityChanged: function() {
                        this.repaint()
                    },
                    _renderWrapper: function() {
                        this.callBase();
                        this._$wrapper.addClass("dx-slider-wrapper");
                        this._createComponent(this._$wrapper, _swipeable.default, {
                            elastic: false,
                            immediate: true,
                            immediateTimeout: 0,
                            onStart: this._swipeStartHandler.bind(this),
                            onUpdated: this._swipeUpdateHandler.bind(this),
                            onEnd: this._swipeEndHandler.bind(this),
                            itemSizeFunc: this._itemWidthFunc.bind(this)
                        })
                    },
                    _renderContainer: function() {
                        this.callBase();
                        this._$bar.addClass("dx-slider-bar")
                    },
                    _renderRange: function() {
                        this.callBase();
                        this._$range.addClass("dx-slider-range");
                        this._renderHandle();
                        this._renderRangeVisibility()
                    },
                    _renderRangeVisibility: function() {
                        this._$range.toggleClass("dx-slider-range-visible", Boolean(this.option("showRange")))
                    },
                    _renderHandle: function() {
                        this._$handle = this._renderHandleImpl(this.option("value"), this._$handle)
                    },
                    _renderHandleImpl: function(value, $element) {
                        const $handle = $element || (0, _renderer.default)("<div>").appendTo(this._$range);
                        const tooltip = this.option("tooltip");
                        this.$element().toggleClass("dx-slider-tooltip-position-bottom", tooltip.enabled && "bottom" === tooltip.position).toggleClass("dx-slider-tooltip-position-top", tooltip.enabled && "top" === tooltip.position);
                        this._createComponent($handle, _ui.default, {
                            value: value,
                            tooltip: tooltip
                        });
                        return $handle
                    },
                    _renderAriaMinAndMax: function() {
                        this.setAria({
                            valuemin: this.option("min"),
                            valuemax: this.option("max")
                        }, this._$handle)
                    },
                    _toggleActiveState: function($element, value) {
                        this.callBase($element, value);
                        this._renderInkWave($element, null, !!value, 1)
                    },
                    _toggleFocusClass: function(isFocused, $element) {
                        this.callBase(isFocused, $element);
                        if (this._disposed) {
                            return
                        }
                        const $focusTarget = (0, _renderer.default)($element || this._focusTarget());
                        this._renderInkWave($focusTarget, null, isFocused, 0)
                    },
                    _renderLabels: function() {
                        this.$element().removeClass("dx-slider-label-position-bottom").removeClass("dx-slider-label-position-top");
                        if (this.option("label.visible")) {
                            const min = this.option("min");
                            const max = this.option("max");
                            const position = this.option("label.position");
                            const labelFormat = this.option("label.format");
                            if (!this._$minLabel) {
                                this._$minLabel = (0, _renderer.default)("<div>").addClass("dx-slider-label").appendTo(this._$wrapper)
                            }
                            this._$minLabel.text(_number.default.format(min, labelFormat));
                            if (!this._$maxLabel) {
                                this._$maxLabel = (0, _renderer.default)("<div>").addClass("dx-slider-label").appendTo(this._$wrapper)
                            }
                            this._$maxLabel.text(_number.default.format(max, labelFormat));
                            this.$element().addClass("dx-slider-label-position-" + position)
                        } else {
                            if (this._$minLabel) {
                                this._$minLabel.remove();
                                delete this._$minLabel
                            }
                            if (this._$maxLabel) {
                                this._$maxLabel.remove();
                                delete this._$maxLabel
                            }
                        }
                    },
                    _renderStartHandler: function() {
                        const pointerDownEventName = (0, _index.addNamespace)(_pointer.default.down, this.NAME);
                        const clickEventName = (0, _index.addNamespace)(_click.name, this.NAME);
                        const startAction = this._createAction(this._startHandler.bind(this));
                        const $element = this.$element();
                        _events_engine.default.off($element, pointerDownEventName);
                        _events_engine.default.on($element, pointerDownEventName, e => {
                            if ((0, _index.isMouseEvent)(e)) {
                                startAction({
                                    event: e
                                })
                            }
                        });
                        _events_engine.default.off($element, clickEventName);
                        _events_engine.default.on($element, clickEventName, e => {
                            const $handle = this._activeHandle();
                            if ($handle) {
                                _events_engine.default.trigger($handle, "focusin");
                                _events_engine.default.trigger($handle, "focus")
                            }
                            startAction({
                                event: e
                            });
                            if ("onHandleRelease" === this.option("valueChangeMode")) {
                                this.option("value", this._getActualValue());
                                this._actualValue = void 0
                            }
                        })
                    },
                    _itemWidthFunc: function() {
                        return this._itemWidthRatio
                    },
                    _swipeStartHandler: function(e) {
                        const rtlEnabled = this.option("rtlEnabled");
                        if ((0, _index.isTouchEvent)(e.event)) {
                            this._createAction(this._startHandler.bind(this))({
                                event: e.event
                            })
                        }
                        this._feedbackDeferred = new _deferred.Deferred;
                        (0, _emitter.lock)(this._feedbackDeferred);
                        this._toggleActiveState(this._activeHandle(), this.option("activeStateEnabled"));
                        this._startOffset = this._currentRatio;
                        const startOffset = this._startOffset * this._swipePixelRatio();
                        const endOffset = (1 - this._startOffset) * this._swipePixelRatio();
                        e.event.maxLeftOffset = rtlEnabled ? endOffset : startOffset;
                        e.event.maxRightOffset = rtlEnabled ? startOffset : endOffset;
                        this._itemWidthRatio = (0, _size.getWidth)(this.$element()) / this._swipePixelRatio();
                        this._needPreventAnimation = true
                    },
                    _swipeEndHandler: function(e) {
                        if (this._isSingleValuePossible()) {
                            return
                        }
                        this._feedbackDeferred.resolve();
                        this._toggleActiveState(this._activeHandle(), false);
                        const offsetDirection = this.option("rtlEnabled") ? -1 : 1;
                        const ratio = this._startOffset + offsetDirection * e.event.targetOffset / this._swipePixelRatio();
                        delete this._needPreventAnimation;
                        this._saveValueChangeEvent(e.event);
                        this._changeValueOnSwipe(ratio);
                        if ("onHandleRelease" === this.option("valueChangeMode")) {
                            this.option("value", this._getActualValue())
                        }
                        this._actualValue = void 0;
                        delete this._startOffset;
                        this._renderValue()
                    },
                    _activeHandle: function() {
                        return this._$handle
                    },
                    _swipeUpdateHandler: function(e) {
                        if (this._isSingleValuePossible()) {
                            return
                        }
                        this._saveValueChangeEvent(e.event);
                        this._updateHandlePosition(e)
                    },
                    _updateHandlePosition: function(e) {
                        const offsetDirection = this.option("rtlEnabled") ? -1 : 1;
                        const newRatio = Math.min(this._startOffset + offsetDirection * e.event.offset / this._swipePixelRatio(), 1);
                        (0, _size.setWidth)(this._$range, 100 * newRatio + "%");
                        _ui.default.getInstance(this._activeHandle()).fitTooltipPosition;
                        this._changeValueOnSwipe(newRatio)
                    },
                    _swipePixelRatio: function() {
                        const min = this.option("min");
                        const max = this.option("max");
                        const step = this._valueStep(this.option("step"));
                        return (max - min) / step
                    },
                    _valueStep: function(step) {
                        if (!step || isNaN(step)) {
                            step = 1
                        }
                        return step
                    },
                    _getValueExponentLength: function() {
                        const {
                            step: step,
                            min: min
                        } = this.option();
                        return Math.max((0, _math.getExponentLength)(step), (0, _math.getExponentLength)(min))
                    },
                    _roundToExponentLength: function(value) {
                        const valueExponentLength = this._getValueExponentLength();
                        return (0, _math.roundFloatPart)(value, valueExponentLength)
                    },
                    _changeValueOnSwipe: function(ratio) {
                        const min = this.option("min");
                        const max = this.option("max");
                        const step = this._valueStep(this.option("step"));
                        const newChange = ratio * (max - min);
                        let newValue = min + newChange;
                        if (step < 0) {
                            return
                        }
                        if (newValue === max || newValue === min) {
                            this._setValueOnSwipe(newValue)
                        } else {
                            const stepCount = Math.round((newValue - min) / step);
                            newValue = this._roundToExponentLength(stepCount * step + min);
                            this._setValueOnSwipe(Math.max(Math.min(newValue, max), min))
                        }
                    },
                    _setValueOnSwipe: function(value) {
                        this._actualValue = value;
                        if ("onHandleRelease" === this.option("valueChangeMode")) {
                            _ui.default.getInstance(this._activeHandle()).option("value", value)
                        } else {
                            this.option("value", value);
                            this._saveValueChangeEvent(void 0)
                        }
                    },
                    _getActualValue: function() {
                        var _this$_actualValue;
                        return null !== (_this$_actualValue = this._actualValue) && void 0 !== _this$_actualValue ? _this$_actualValue : this.option("value")
                    },
                    _isSingleValuePossible: function() {
                        const {
                            min: min,
                            max: max
                        } = this.option();
                        return min === max
                    },
                    _startHandler: function(args) {
                        if (this._isSingleValuePossible()) {
                            return
                        }
                        const e = args.event;
                        this._currentRatio = ((0, _index.eventData)(e).x - this._$bar.offset().left) / (0, _size.getWidth)(this._$bar);
                        if (this.option("rtlEnabled")) {
                            this._currentRatio = 1 - this._currentRatio
                        }
                        this._saveValueChangeEvent(e);
                        this._changeValueOnSwipe(this._currentRatio)
                    },
                    _renderValue: function() {
                        this.callBase();
                        const value = this._getActualValue();
                        this._getSubmitElement().val((0, _common.applyServerDecimalSeparator)(value));
                        _ui.default.getInstance(this._activeHandle()).option("value", value)
                    },
                    _setRangeStyles: function(options) {
                        options && this._$range.css(options)
                    },
                    _callHandlerMethod: function(name, args) {
                        _ui.default.getInstance(this._$handle)[name](args)
                    },
                    _repaintHandle: function() {
                        this._callHandlerMethod("repaint")
                    },
                    _fitTooltip: function() {
                        this._callHandlerMethod("updateTooltipPosition")
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "visible":
                                this.callBase(args);
                                this._renderHandle();
                                this._repaintHandle();
                                break;
                            case "min":
                            case "max":
                                this._renderValue();
                                this.callBase(args);
                                this._renderLabels();
                                this._renderAriaMinAndMax();
                                this._fitTooltip();
                                break;
                            case "step":
                                this._renderValue();
                                break;
                            case "keyStep":
                                break;
                            case "showRange":
                                this._renderRangeVisibility();
                                break;
                            case "tooltip":
                                this._renderHandle();
                                break;
                            case "label":
                                this._renderLabels();
                                break;
                            case "useInkRipple":
                                this._invalidate();
                                break;
                            case "valueChangeMode":
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _refresh: function() {
                        this._toggleRTLDirection(this.option("rtlEnabled"));
                        this._renderDimensions();
                        this._renderValue();
                        this._renderHandle();
                        this._repaintHandle()
                    },
                    _clean: function() {
                        delete this._inkRipple;
                        delete this._actualValue;
                        this.callBase()
                    }
                });
                (0, _component_registrator.default)("dxSlider", Slider);
                var _default = Slider;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        6320:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/slider/ui.slider_handle.js ***!
              \***************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ./ui.slider_tooltip */ 52554));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const SliderHandle = _ui.default.inherit({
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            hoverStateEnabled: false,
                            value: 0,
                            tooltip: {
                                enabled: false,
                                format: value => value,
                                position: "top",
                                showMode: "onHover"
                            }
                        })
                    },
                    _initMarkup: function() {
                        this.callBase();
                        this.$element().addClass("dx-slider-handle");
                        this.setAria({
                            role: "slider",
                            valuenow: this.option("value"),
                            label: "Slider"
                        })
                    },
                    _render: function() {
                        this.callBase();
                        this._renderTooltip()
                    },
                    _renderTooltip: function() {
                        const {
                            tooltip: tooltip,
                            value: value
                        } = this.option();
                        const {
                            position: position,
                            format: format,
                            enabled: enabled,
                            showMode: showMode
                        } = tooltip;
                        const $sliderTooltip = (0, _renderer.default)("<div>");
                        this._sliderTooltip = this._createComponent($sliderTooltip, _ui2.default, {
                            target: this.$element(),
                            container: $sliderTooltip,
                            position: position,
                            visible: enabled,
                            showMode: showMode,
                            format: format,
                            value: value
                        })
                    },
                    _clean: function() {
                        this.callBase();
                        this._sliderTooltip = null
                    },
                    _updateTooltipOptions(args) {
                        var _this$_sliderTooltip;
                        const tooltipOptions = _ui.default.getOptionsFromContainer(args);
                        this._setWidgetOption("_sliderTooltip", [tooltipOptions]);
                        null === (_this$_sliderTooltip = this._sliderTooltip) || void 0 === _this$_sliderTooltip ? void 0 : _this$_sliderTooltip.option("visible", tooltipOptions.enabled)
                    },
                    _optionChanged: function(args) {
                        const {
                            name: name,
                            value: value
                        } = args;
                        switch (name) {
                            case "value":
                                var _this$_sliderTooltip2;
                                null === (_this$_sliderTooltip2 = this._sliderTooltip) || void 0 === _this$_sliderTooltip2 ? void 0 : _this$_sliderTooltip2.option("value", value);
                                this.setAria("valuenow", value);
                                break;
                            case "tooltip":
                                this._updateTooltipOptions(args);
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    updateTooltipPosition: function() {
                        var _this$_sliderTooltip3;
                        null === (_this$_sliderTooltip3 = this._sliderTooltip) || void 0 === _this$_sliderTooltip3 ? void 0 : _this$_sliderTooltip3.updatePosition()
                    },
                    repaint: function() {
                        var _this$_sliderTooltip4;
                        null === (_this$_sliderTooltip4 = this._sliderTooltip) || void 0 === _this$_sliderTooltip4 ? void 0 : _this$_sliderTooltip4.repaint()
                    }
                });
                var _default = SliderHandle;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        52554:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/slider/ui.slider_tooltip.js ***!
              \****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _tooltip = _interopRequireDefault(__webpack_require__( /*! ../tooltip */ 94920));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _slider_tooltip_position_controller = __webpack_require__( /*! ./slider_tooltip_position_controller */ 73437);
                var _number = _interopRequireDefault(__webpack_require__( /*! ../../localization/number */ 18016));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const SliderTooltip = _tooltip.default.inherit({
                    _getDefaultOptions() {
                        return (0, _extend.extend)(this.callBase(), {
                            visible: false,
                            position: "top",
                            hideOnOutsideClick: false,
                            hideTopOverlayHandler: null,
                            hideOnParentScroll: false,
                            animation: null,
                            arrowPosition: null,
                            templatesRenderAsynchronously: false,
                            _fixWrapperPosition: false,
                            useResizeObserver: false,
                            showMode: "onHover",
                            format: value => value,
                            value: 0
                        })
                    },
                    _initMarkup() {
                        this.callBase();
                        this._attachToMarkup(this.option("visible"));
                        this._toggleShowModeClass()
                    },
                    _renderContent() {
                        this.callBase();
                        this._renderContentText()
                    },
                    _toggleAriaAttributes() {},
                    _renderContentText() {
                        const {
                            value: value,
                            format: format
                        } = this.option();
                        const formattedText = _number.default.format(null !== value && void 0 !== value ? value : 0, format);
                        this.$content().text(formattedText);
                        this._renderPosition()
                    },
                    _toggleShowModeClass() {
                        const isHoverMode = "onHover" === this.option("showMode");
                        const $sliderHandle = this.option("target");
                        $sliderHandle.toggleClass("dx-slider-tooltip-visible-on-hover", isHoverMode)
                    },
                    _initPositionController() {
                        this._positionController = new _slider_tooltip_position_controller.SliderTooltipPositionController(this._getPositionControllerConfig())
                    },
                    _attachToMarkup(enabled) {
                        const $sliderHandle = this.option("target");
                        enabled ? this.$element().appendTo($sliderHandle) : this.$element().detach()
                    },
                    _optionChanged(args) {
                        const {
                            name: name,
                            value: value
                        } = args;
                        switch (name) {
                            case "visible":
                                this._attachToMarkup(value);
                                this.callBase(args);
                                break;
                            case "showMode":
                                this._toggleShowModeClass();
                                break;
                            case "format":
                            case "value":
                                this._renderContentText();
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    updatePosition() {
                        this._renderPosition()
                    }
                });
                var _default = SliderTooltip;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        66843:
            /*!************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/sortable.js ***!
              \************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_sortable = (obj = __webpack_require__( /*! ../__internal/m_sortable */ 75500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _m_sortable.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        17017:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/speed_dial_action.js ***!
              \*********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _speed_dial_action = (obj = __webpack_require__( /*! ./speed_dial_action/speed_dial_action */ 43161), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _speed_dial_action.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        81374:
            /*!****************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/speed_dial_action/repaint_floating_action_button.js ***!
              \****************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _speed_dial_main_item = __webpack_require__( /*! ./speed_dial_main_item */ 18058);
                var _default = _speed_dial_main_item.repaint;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        43161:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/speed_dial_action/speed_dial_action.js ***!
              \***************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 73176));
                var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/ready_callbacks */ 24311));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.widget */ 14390));
                var _speed_dial_main_item = __webpack_require__( /*! ./speed_dial_main_item */ 18058);
                var _swatch_container = _interopRequireDefault(__webpack_require__( /*! ../widget/swatch_container */ 92591));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const {
                    getSwatchContainer: getSwatchContainer
                } = _swatch_container.default;
                const ready = _ready_callbacks.default.add;
                let SpeedDialAction = function(_Widget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(SpeedDialAction, _Widget);

                    function SpeedDialAction() {
                        return _Widget.apply(this, arguments) || this
                    }
                    var _proto = SpeedDialAction.prototype;
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_Widget.prototype._getDefaultOptions.call(this), {
                            icon: "",
                            onClick: null,
                            label: "",
                            visible: true,
                            index: 0,
                            onContentReady: null,
                            activeStateEnabled: true,
                            hoverStateEnabled: true,
                            animation: {
                                show: {
                                    type: "pop",
                                    duration: 200,
                                    easing: "cubic-bezier(0.4, 0, 0.2, 1)",
                                    from: {
                                        scale: 0,
                                        opacity: 0
                                    },
                                    to: {
                                        scale: 1,
                                        opacity: 1
                                    }
                                },
                                hide: {
                                    type: "pop",
                                    duration: 200,
                                    easing: "cubic-bezier(0.4, 0, 0.2, 1)",
                                    from: {
                                        scale: 1,
                                        opacity: 1
                                    },
                                    to: {
                                        scale: 0,
                                        opacity: 0
                                    }
                                }
                            },
                            id: new _guid.default
                        })
                    };
                    _proto._optionChanged = function(args) {
                        switch (args.name) {
                            case "onClick":
                            case "icon":
                            case "label":
                            case "visible":
                            case "index":
                            case "onInitializing":
                                (0, _speed_dial_main_item.initAction)(this);
                                break;
                            case "animation":
                            case "id":
                                break;
                            default:
                                _Widget.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto._render = function() {
                        this._toggleVisibility(false);
                        if (!getSwatchContainer(this.$element())) {
                            ready(() => (0, _speed_dial_main_item.initAction)(this))
                        } else {
                            (0, _speed_dial_main_item.initAction)(this)
                        }
                    };
                    _proto._dispose = function() {
                        (0, _speed_dial_main_item.disposeAction)(this._options.silent("id"));
                        _Widget.prototype._dispose.call(this)
                    };
                    return SpeedDialAction
                }(_ui.default);
                (0, _component_registrator.default)("dxSpeedDialAction", SpeedDialAction);
                var _default = SpeedDialAction;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        37668:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/speed_dial_action/speed_dial_item.js ***!
              \*************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _click = __webpack_require__( /*! ../../events/click */ 95429);
                var _icon = __webpack_require__( /*! ../../core/utils/icon */ 44899);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../overlay/ui.overlay */ 89799));
                var _utils = __webpack_require__( /*! ../widget/utils.ink_ripple */ 72672);
                var _themes = __webpack_require__( /*! ../themes */ 75811);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let SpeedDialItem = function(_Overlay) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(SpeedDialItem, _Overlay);

                    function SpeedDialItem() {
                        return _Overlay.apply(this, arguments) || this
                    }
                    var _proto = SpeedDialItem.prototype;
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_Overlay.prototype._getDefaultOptions.call(this), {
                            shading: false,
                            useInkRipple: false,
                            callOverlayRenderShading: false,
                            width: "auto",
                            zIndex: 1500,
                            _observeContentResize: false
                        })
                    };
                    _proto._defaultOptionsRules = function() {
                        return _Overlay.prototype._defaultOptionsRules.call(this).concat([{
                            device: () => (0, _themes.isMaterial)(),
                            options: {
                                useInkRipple: true
                            }
                        }])
                    };
                    _proto._moveToContainer = function() {
                        this._$wrapper.appendTo(this.$element());
                        this._$content.appendTo(this._$wrapper)
                    };
                    _proto._render = function() {
                        this.$element().addClass("dx-fa-button");
                        this._renderIcon();
                        this._renderLabel();
                        _Overlay.prototype._render.call(this);
                        this.option("useInkRipple") && this._renderInkRipple();
                        this._renderClick()
                    };
                    _proto._renderLabel = function() {
                        !!this._$label && this._$label.remove();
                        const labelText = this.option("label");
                        if (!labelText) {
                            this._$label = null;
                            return
                        }
                        const $element = (0, _renderer.default)("<div>").addClass("dx-fa-button-label");
                        const $wrapper = (0, _renderer.default)("<div>").addClass("dx-fa-button-label-wrapper");
                        this._$label = $wrapper.prependTo(this.$content()).append($element.text(labelText));
                        this.$content().toggleClass("dx-fa-button-content-reverse", this._isPositionLeft(this.option("parentPosition")))
                    };
                    _proto._isPositionLeft = function(position) {
                        let currentLocation = "";
                        if (position) {
                            if ((0, _type.isPlainObject)(position) && position.at) {
                                if (position.at.x) {
                                    currentLocation = position.at.x
                                } else {
                                    currentLocation = position.at
                                }
                            } else if ("string" === typeof position) {
                                currentLocation = position
                            }
                        }
                        return "left" === currentLocation.split(" ")[0]
                    };
                    _proto._renderButtonIcon = function($element, icon, iconClass) {
                        !!$element && $element.remove();
                        $element = (0, _renderer.default)("<div>").addClass(iconClass);
                        const $iconElement = (0, _icon.getImageContainer)(icon);
                        $element.append($iconElement).appendTo(this.$content());
                        return $element
                    };
                    _proto._renderIcon = function() {
                        this._$icon = this._renderButtonIcon(this._$icon, this._options.silent("icon"), "dx-fa-button-icon")
                    };
                    _proto._renderWrapper = function() {
                        if (this._options.silent("callOverlayRenderShading")) {
                            _Overlay.prototype._renderWrapper.call(this)
                        }
                    };
                    _proto._getVisibleActions = function(actions) {
                        const currentActions = actions || this.option("actions") || [];
                        return currentActions.filter(action => action.option("visible"))
                    };
                    _proto._getActionComponent = function() {
                        if (1 === this._getVisibleActions().length) {
                            return this._getVisibleActions()[0]
                        } else {
                            return this.option("actionComponent") || this.option("actions")[0]
                        }
                    };
                    _proto._initContentReadyAction = function() {
                        this._contentReadyAction = this._getActionComponent()._createActionByOption("onContentReady", {
                            excludeValidators: ["disabled", "readOnly"]
                        }, true)
                    };
                    _proto._fireContentReadyAction = function() {
                        this._contentReadyAction({
                            actionElement: this.$element()
                        })
                    };
                    _proto._updateZIndexStackPosition = function() {
                        const zIndex = this.option("zIndex");
                        this._$wrapper.css("zIndex", zIndex);
                        this._$content.css("zIndex", zIndex)
                    };
                    _proto._setClickAction = function() {
                        const eventName = (0, _index.addNamespace)(_click.name, this.NAME);
                        const overlayContent = this.$element().find(".dx-overlay-content");
                        _events_engine.default.off(overlayContent, eventName);
                        _events_engine.default.on(overlayContent, eventName, e => {
                            const clickActionArgs = {
                                event: e,
                                actionElement: this.element(),
                                element: this._getActionComponent().$element()
                            };
                            this._clickAction(clickActionArgs)
                        })
                    };
                    _proto._defaultActionArgs = function() {
                        return {
                            component: this._getActionComponent()
                        }
                    };
                    _proto._renderClick = function() {
                        this._clickAction = this._getActionComponent()._createActionByOption("onClick");
                        this._setClickAction()
                    };
                    _proto._renderInkRipple = function() {
                        this._inkRipple = (0, _utils.render)()
                    };
                    _proto._getInkRippleContainer = function() {
                        return this._$icon
                    };
                    _proto._toggleActiveState = function($element, value, e) {
                        _Overlay.prototype._toggleActiveState.apply(this, arguments);
                        if (!this._inkRipple) {
                            return
                        }
                        const config = {
                            element: this._getInkRippleContainer(),
                            event: e
                        };
                        if (value) {
                            this._inkRipple.showWave(config)
                        } else {
                            this._inkRipple.hideWave(config)
                        }
                    };
                    _proto._optionChanged = function(args) {
                        switch (args.name) {
                            case "icon":
                                this._renderIcon();
                                break;
                            case "onClick":
                                this._renderClick();
                                break;
                            case "label":
                                this._renderLabel();
                                break;
                            case "visible":
                                this._currentVisible = args.previousValue;
                                args.value ? this._show() : this._hide();
                                break;
                            case "useInkRipple":
                                this._render();
                                break;
                            default:
                                _Overlay.prototype._optionChanged.call(this, args)
                        }
                    };
                    return SpeedDialItem
                }(_ui.default);
                var _default = SpeedDialItem;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        18058:
            /*!******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/speed_dial_action/speed_dial_main_item.js ***!
              \******************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.disposeAction = function(actionId) {
                    if (!speedDialMainItem) {
                        return
                    }
                    let savedActions = speedDialMainItem.option("actions");
                    const savedActionsCount = savedActions.length;
                    savedActions = savedActions.filter(action => action._options.silent("id") !== actionId);
                    if (savedActionsCount === savedActions.length) {
                        return
                    }
                    if (!savedActions.length) {
                        speedDialMainItem.dispose();
                        speedDialMainItem.$element().remove();
                        speedDialMainItem = null
                    } else if (1 === savedActions.length) {
                        speedDialMainItem.option((0, _extend.extend)({}, modifyActionOptions(savedActions[0]), {
                            actions: savedActions
                        }))
                    } else {
                        speedDialMainItem.option({
                            actions: savedActions
                        })
                    }
                };
                exports.initAction = function(newAction) {
                    newAction._options.silent("onInitializing", null);
                    let isActionExist = false;
                    if (!speedDialMainItem) {
                        const $fabMainElement = (0, _renderer.default)("<div>").appendTo(getSwatchContainer(newAction.$element()));
                        speedDialMainItem = newAction._createComponent($fabMainElement, SpeedDialMainItem, (0, _extend.extend)({}, modifyActionOptions(newAction), {
                            actions: [newAction]
                        }))
                    } else {
                        const savedActions = speedDialMainItem.option("actions");
                        savedActions.forEach(action => {
                            if (action._options.silent("id") === newAction._options.silent("id")) {
                                isActionExist = true;
                                return newAction
                            }
                        });
                        delete speedDialMainItem._options.position;
                        if (!isActionExist) {
                            if (speedDialMainItem._getVisibleActions(savedActions).length >= speedDialMainItem.option("maxSpeedDialActionCount")) {
                                newAction.dispose();
                                _ui.default.log("W1014");
                                return
                            }
                            savedActions.push(newAction);
                            speedDialMainItem.option((0, _extend.extend)(speedDialMainItem._getCurrentOptions(savedActions), {
                                actions: savedActions
                            }))
                        } else if (1 === savedActions.length) {
                            speedDialMainItem.option((0, _extend.extend)({}, modifyActionOptions(savedActions[0]), {
                                actions: savedActions,
                                position: speedDialMainItem._getPosition()
                            }))
                        } else {
                            speedDialMainItem.option((0, _extend.extend)(speedDialMainItem._getCurrentOptions(savedActions), {
                                actions: savedActions
                            }))
                        }
                    }
                };
                exports.repaint = function() {
                    if (!speedDialMainItem) {
                        return
                    }
                    const visibleActions = speedDialMainItem._getVisibleActions();
                    const icon = 1 === visibleActions.length ? visibleActions[0].option("icon") : speedDialMainItem._getDefaultOptions().icon;
                    const label = 1 === visibleActions.length ? visibleActions[0].option("label") : speedDialMainItem._getDefaultOptions().label;
                    speedDialMainItem.option({
                        actions: speedDialMainItem.option("actions"),
                        icon: icon,
                        closeIcon: speedDialMainItem._getDefaultOptions().closeIcon,
                        position: speedDialMainItem._getPosition(),
                        label: label,
                        maxSpeedDialActionCount: speedDialMainItem._getDefaultOptions().maxSpeedDialActionCount,
                        direction: speedDialMainItem._getDefaultOptions().direction
                    })
                };
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _config = _interopRequireDefault(__webpack_require__( /*! ../../core/config */ 80209));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.errors */ 96688));
                var _swatch_container = _interopRequireDefault(__webpack_require__( /*! ../widget/swatch_container */ 92591));
                var _speed_dial_item = _interopRequireDefault(__webpack_require__( /*! ./speed_dial_item */ 37668));
                var _themes = __webpack_require__( /*! ../themes */ 75811);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const {
                    getSwatchContainer: getSwatchContainer
                } = _swatch_container.default;
                let speedDialMainItem = null;
                const modifyActionOptions = action => {
                    const {
                        animation: animation,
                        actionComponent: actionComponent,
                        actionVisible: actionVisible,
                        actions: actions,
                        activeStateEnabled: activeStateEnabled,
                        direction: direction,
                        elementAttr: elementAttr,
                        hint: hint,
                        hoverStateEnabled: hoverStateEnabled,
                        icon: icon,
                        id: id,
                        index: index,
                        label: label,
                        onClick: onClick,
                        onContentReady: onContentReady,
                        parentPosition: parentPosition,
                        position: position,
                        visible: visible,
                        zIndex: zIndex
                    } = action.option();
                    return (0, _extend.extend)({}, {
                        animation: animation,
                        actionComponent: actionComponent,
                        actionVisible: actionVisible,
                        actions: actions,
                        activeStateEnabled: activeStateEnabled,
                        direction: direction,
                        elementAttr: elementAttr,
                        hint: hint,
                        hoverStateEnabled: hoverStateEnabled,
                        icon: icon,
                        id: id,
                        index: index,
                        label: label,
                        onClick: onClick,
                        onContentReady: onContentReady,
                        parentPosition: parentPosition,
                        position: position,
                        visible: visible,
                        zIndex: zIndex,
                        _ignoreElementAttrDeprecation: true
                    }, {
                        onInitialized: null,
                        onDisposing: null
                    })
                };
                let SpeedDialMainItem = function(_SpeedDialItem) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(SpeedDialMainItem, _SpeedDialItem);

                    function SpeedDialMainItem() {
                        return _SpeedDialItem.apply(this, arguments) || this
                    }
                    var _proto = SpeedDialMainItem.prototype;
                    _proto._getDefaultOptions = function() {
                        const defaultOptions = {
                            icon: "add",
                            closeIcon: "close",
                            position: {
                                at: "right bottom",
                                my: "right bottom",
                                offset: {
                                    x: -16,
                                    y: -16
                                }
                            },
                            maxSpeedDialActionCount: 5,
                            hint: "",
                            label: "",
                            direction: "auto",
                            actions: [],
                            activeStateEnabled: true,
                            hoverStateEnabled: true,
                            indent: (0, _themes.isCompact)() ? 49 : 55,
                            childIndent: 40,
                            childOffset: (0, _themes.isCompact)() ? 2 : 9,
                            callOverlayRenderShading: true,
                            hideOnOutsideClick: true
                        };
                        return (0, _extend.extend)(_SpeedDialItem.prototype._getDefaultOptions.call(this), (0, _extend.extend)(defaultOptions, (0, _config.default)().floatingActionButtonConfig, {
                            shading: false
                        }))
                    };
                    _proto._defaultOptionsRules = function() {
                        return _SpeedDialItem.prototype._defaultOptionsRules.call(this).concat([{
                            device: () => (0, _themes.isFluent)() && !(0, _themes.isCompact)(),
                            options: {
                                indent: 60,
                                childIndent: 60,
                                childOffset: 0
                            }
                        }, {
                            device: () => (0, _themes.isFluent)() && (0, _themes.isCompact)(),
                            options: {
                                indent: 48,
                                childIndent: 48,
                                childOffset: 0
                            }
                        }, {
                            device: () => (0, _themes.isMaterial)() && !(0, _themes.isCompact)(),
                            options: {
                                indent: 72,
                                childIndent: 56,
                                childOffset: 8
                            }
                        }, {
                            device: () => (0, _themes.isMaterial)() && (0, _themes.isCompact)(),
                            options: {
                                indent: 58,
                                childIndent: 48,
                                childOffset: 1
                            }
                        }])
                    };
                    _proto._render = function() {
                        this.$element().addClass("dx-fa-button-main");
                        _SpeedDialItem.prototype._render.call(this);
                        this._moveToContainer();
                        this._renderCloseIcon();
                        this._renderClick()
                    };
                    _proto._renderLabel = function() {
                        _SpeedDialItem.prototype._renderLabel.call(this);
                        this.$element().toggleClass("dx-fa-button-with-label", !!this._$label)
                    };
                    _proto._renderIcon = function() {
                        _SpeedDialItem.prototype._renderIcon.call(this);
                        this.$element().toggleClass("dx-fa-button-without-icon", !this.option("icon"))
                    };
                    _proto._renderCloseIcon = function() {
                        this._$closeIcon = this._renderButtonIcon(this._$closeIcon, this._options.silent("closeIcon"), "dx-fa-button-icon-close");
                        this._$closeIcon.addClass("dx-state-invisible")
                    };
                    _proto._renderClick = function() {
                        this._clickAction = 1 === this._getVisibleActions().length ? this._getActionComponent()._createActionByOption("onClick") : this._createAction(this._clickHandler.bind(this));
                        this._setClickAction()
                    };
                    _proto._getVisibleActions = function(actions) {
                        const currentActions = actions || this.option("actions");
                        return currentActions.filter(action => action.option("visible"))
                    };
                    _proto._getCurrentOptions = function(actions) {
                        const visibleActions = speedDialMainItem._getVisibleActions(actions);
                        const defaultOptions = this._getDefaultOptions();
                        delete defaultOptions.elementAttr;
                        delete defaultOptions.closeOnOutsideClick;
                        return 1 === visibleActions.length ? (0, _extend.extend)(modifyActionOptions(visibleActions[0]), {
                            position: this._getPosition()
                        }) : (0, _extend.extend)(defaultOptions, {
                            visible: 0 !== visibleActions.length
                        })
                    };
                    _proto._clickHandler = function() {
                        const actions = this._actionItems.filter(action => action.option("actionVisible")).sort((action, nextAction) => action.option("index") - nextAction.option("index"));
                        if (1 === actions.length) {
                            return
                        }
                        const lastActionIndex = actions.length - 1;
                        for (let i = 0; i < actions.length; i++) {
                            actions[i].option("animation", this._getActionAnimation(actions[i], i, lastActionIndex));
                            actions[i].option("position", this._getActionPosition(actions, i));
                            actions[i]._$wrapper.css("position", this._$wrapper.css("position"));
                            actions[i].toggle()
                        }
                        if ((0, _config.default)().floatingActionButtonConfig.shading) {
                            this._isShadingShown = !this.option("shading");
                            this.option("shading", this._isShadingShown)
                        }
                        this._$icon.toggleClass("dx-state-invisible");
                        this._$closeIcon.toggleClass("dx-state-invisible")
                    };
                    _proto._updateZIndexStackPosition = function() {
                        _SpeedDialItem.prototype._updateZIndexStackPosition.call(this);
                        const overlayStack = this._overlayStack();
                        overlayStack.push(this)
                    };
                    _proto._renderActions = function() {
                        const actions = this.option("actions");
                        if (this._actionItems && this._actionItems.length) {
                            this._actionItems.forEach(actionItem => {
                                actionItem.dispose();
                                actionItem.$element().remove()
                            });
                            this._actionItems = []
                        }
                        this._actionItems = [];
                        if (1 === actions.length) {
                            return
                        }
                        for (let i = 0; i < actions.length; i++) {
                            const action = actions[i];
                            const $actionElement = (0, _renderer.default)("<div>").appendTo(getSwatchContainer(action.$element()));
                            _events_engine.default.off($actionElement, "click");
                            _events_engine.default.on($actionElement, "click", () => {
                                this._clickHandler()
                            });
                            action._options.silent("actionComponent", action);
                            action._options.silent("parentPosition", this._getPosition());
                            action._options.silent("actionVisible", action._options.silent("visible"));
                            this._actionItems.push(this._createComponent($actionElement, _speed_dial_item.default, (0, _extend.extend)({}, modifyActionOptions(action), {
                                visible: false
                            })))
                        }
                    };
                    _proto._getActionAnimation = function(action, index, lastActionIndex) {
                        action._options.silent("animation.show.delay", 30 * index);
                        action._options.silent("animation.hide.delay", 30 * (lastActionIndex - index));
                        return action._options.silent("animation")
                    };
                    _proto._getDirectionIndex = function(actions, direction) {
                        if ("auto" === direction) {
                            const contentHeight = (0, _size.getHeight)(this.$content());
                            const actionsHeight = this.initialOption("indent") + this.initialOption("childIndent") * actions.length - contentHeight;
                            const offsetTop = this.$content().offset().top;
                            if (actionsHeight < offsetTop) {
                                return -1
                            } else {
                                const offsetBottom = (0, _size.getHeight)(this._positionController._$wrapperCoveredElement) - contentHeight - offsetTop;
                                return offsetTop >= offsetBottom ? -1 : 1
                            }
                        }
                        return "down" !== direction ? -1 : 1
                    };
                    _proto._getActionPosition = function(actions, index) {
                        const action = actions[index];
                        const actionOffsetXValue = this.initialOption("childOffset");
                        const actionOffsetX = action._options.silent("label") && !this._$label ? this._isPositionLeft(this._getPosition()) ? actionOffsetXValue : -actionOffsetXValue : 0;
                        const actionOffsetYValue = this.initialOption("indent") + this.initialOption("childIndent") * index;
                        const actionOffsetY = this._getDirectionIndex(actions, this.option("direction")) * actionOffsetYValue;
                        const actionPositionAtMy = action._options.silent("label") ? this._isPositionLeft(this._getPosition()) ? "left" : "right" : "center";
                        return {
                            of: this.$content(),
                            at: actionPositionAtMy,
                            my: actionPositionAtMy,
                            offset: {
                                x: actionOffsetX,
                                y: actionOffsetY
                            }
                        }
                    };
                    _proto._outsideClickHandler = function(e) {
                        if (this._isShadingShown) {
                            const isShadingClick = (0, _renderer.default)(e.target)[0] === this._$wrapper[0];
                            if (isShadingClick) {
                                e.preventDefault();
                                this._clickHandler()
                            }
                        }
                    };
                    _proto._setPosition = function() {
                        if (this.option("visible")) {
                            this._hide();
                            this._show()
                        }
                    };
                    _proto._getPosition = function() {
                        return this._getDefaultOptions().position
                    };
                    _proto._getInkRippleContainer = function() {
                        return this.$content()
                    };
                    _proto._optionChanged = function(args) {
                        switch (args.name) {
                            case "actions":
                                if (this._isVisible()) {
                                    this._renderIcon();
                                    this._renderLabel()
                                }
                                this._renderCloseIcon();
                                this._renderClick();
                                this._renderActions();
                                break;
                            case "maxSpeedDialActionCount":
                                this._renderActions();
                                break;
                            case "closeIcon":
                                this._renderCloseIcon();
                                break;
                            case "position":
                                _SpeedDialItem.prototype._optionChanged.call(this, args);
                                this._setPosition();
                                break;
                            case "label":
                                if (this._isVisible()) {
                                    this._renderLabel()
                                }
                                this._setPosition();
                                break;
                            case "icon":
                                if (this._isVisible()) {
                                    this._renderIcon()
                                }
                                break;
                            default:
                                _SpeedDialItem.prototype._optionChanged.call(this, args)
                        }
                    };
                    return SpeedDialMainItem
                }(_speed_dial_item.default)
            },
        93288:
            /*!************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/splitter.js ***!
              \************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./widget/ui.widget */ 14390));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../core/dom_adapter */ 73349));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../events/core/events_engine */ 55994));
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../events/pointer */ 93786));
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _index = __webpack_require__( /*! ../events/utils/index */ 39611);
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../core/guid */ 73176));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const window = (0, _window.getWindow)();
                const SPLITTER_WRAPPER_CLASS = "".concat("dx-splitter", "-wrapper");
                const SPLITTER_INACTIVE_CLASS = "".concat("dx-splitter", "-inactive");
                const SPLITTER_BORDER_CLASS = "".concat("dx-splitter", "-border");
                const SPLITTER_INITIAL_STATE_CLASS = "".concat("dx-splitter", "-initial");
                let SplitterControl = function(_Widget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(SplitterControl, _Widget);

                    function SplitterControl() {
                        return _Widget.apply(this, arguments) || this
                    }
                    var _proto = SplitterControl.prototype;
                    _proto._init = function() {
                        _Widget.prototype._init.call(this);
                        const eventGuid = (new _guid.default).toString();
                        this.SPLITTER_POINTER_DOWN_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.down, "dxSplitterResizing" + eventGuid);
                        this.SPLITTER_POINTER_MOVE_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.move, "dxSplitterResizing" + eventGuid);
                        this.SPLITTER_POINTER_UP_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.up, "dxSplitterResizing" + eventGuid)
                    };
                    _proto._initMarkup = function() {
                        _Widget.prototype._initMarkup.call(this);
                        this._initActions();
                        this._$container = this.option("container");
                        this._$leftElement = this.option("leftElement");
                        this._$rightElement = this.option("rightElement");
                        this.$element().addClass(SPLITTER_WRAPPER_CLASS).addClass(SPLITTER_INITIAL_STATE_CLASS);
                        this._$splitterBorder = (0, _renderer.default)("<div>").addClass(SPLITTER_BORDER_CLASS).appendTo(this.$element());
                        this._$splitter = (0, _renderer.default)("<div>").addClass("dx-splitter").addClass(SPLITTER_INACTIVE_CLASS).appendTo(this._$splitterBorder)
                    };
                    _proto._initActions = function() {
                        this._actions = {
                            onApplyPanelSize: this._createActionByOption("onApplyPanelSize"),
                            onActiveStateChanged: this._createActionByOption("onActiveStateChanged")
                        }
                    };
                    _proto._render = function() {
                        _Widget.prototype._render.call(this);
                        this._detachEventHandlers();
                        this._attachEventHandlers()
                    };
                    _proto._clean = function() {
                        this._detachEventHandlers();
                        _Widget.prototype._clean.call(this)
                    };
                    _proto._attachEventHandlers = function() {
                        const document = _dom_adapter.default.getDocument();
                        _events_engine.default.on(this._$splitterBorder, this.SPLITTER_POINTER_DOWN_EVENT_NAME, this._onMouseDownHandler.bind(this));
                        _events_engine.default.on(document, this.SPLITTER_POINTER_MOVE_EVENT_NAME, this._onMouseMoveHandler.bind(this));
                        _events_engine.default.on(document, this.SPLITTER_POINTER_UP_EVENT_NAME, this._onMouseUpHandler.bind(this))
                    };
                    _proto._detachEventHandlers = function() {
                        const document = _dom_adapter.default.getDocument();
                        _events_engine.default.off(this._$splitterBorder, this.SPLITTER_POINTER_DOWN_EVENT_NAME);
                        _events_engine.default.off(document, this.SPLITTER_POINTER_MOVE_EVENT_NAME);
                        _events_engine.default.off(document, this.SPLITTER_POINTER_UP_EVENT_NAME)
                    };
                    _proto._dimensionChanged = function(dimension) {
                        if (!dimension || "height" !== dimension) {
                            this._containerWidth = this._$container.get(0).clientWidth;
                            this._setSplitterPositionLeft({
                                needUpdatePanels: true,
                                usePercentagePanelsWidth: true
                            })
                        }
                    };
                    _proto._onMouseDownHandler = function(e) {
                        e.preventDefault();
                        this._offsetX = e.pageX - this._$splitterBorder.offset().left <= this._getSplitterBorderWidth() ? e.pageX - this._$splitterBorder.offset().left : 0;
                        this._containerWidth = this._$container.get(0).clientWidth;
                        this.$element().removeClass(SPLITTER_INITIAL_STATE_CLASS);
                        this._toggleActive(true);
                        this._setSplitterPositionLeft({
                            needUpdatePanels: true
                        })
                    };
                    _proto._onMouseMoveHandler = function(e) {
                        if (!this._isSplitterActive) {
                            return
                        }
                        this._setSplitterPositionLeft({
                            splitterPositionLeft: this._getNewSplitterPositionLeft(e),
                            needUpdatePanels: true
                        })
                    };
                    _proto._onMouseUpHandler = function() {
                        if (!this._isSplitterActive) {
                            return
                        }
                        this._leftPanelPercentageWidth = null;
                        this._toggleActive(false);
                        this._setSplitterPositionLeft({
                            needUpdatePanels: true,
                            usePercentagePanelsWidth: true
                        })
                    };
                    _proto._getNewSplitterPositionLeft = function(e) {
                        let newSplitterPositionLeft = e.pageX - this._getContainerLeftOffset() - this._offsetX;
                        newSplitterPositionLeft = Math.max(0 - this._getSplitterOffset(), newSplitterPositionLeft);
                        newSplitterPositionLeft = Math.min(this._containerWidth - this._getSplitterOffset() - this._getSplitterWidth(), newSplitterPositionLeft);
                        return newSplitterPositionLeft
                    };
                    _proto._getContainerLeftOffset = function() {
                        let offsetLeft = this._$container.offset().left;
                        if (window) {
                            const style = window.getComputedStyle(this._$container.get(0));
                            const paddingLeft = parseFloat(style.paddingLeft) || 0;
                            const borderLeft = parseFloat(style.borderLeftWidth) || 0;
                            offsetLeft += paddingLeft + borderLeft
                        }
                        return offsetLeft
                    };
                    _proto._getSplitterOffset = function() {
                        return (this._getSplitterBorderWidth() - this._getSplitterWidth()) / 2
                    };
                    _proto._getSplitterWidth = function() {
                        return this._$splitter.get(0).clientWidth
                    };
                    _proto._getSplitterBorderWidth = function() {
                        return this._$splitterBorder.get(0).clientWidth
                    };
                    _proto._getLeftPanelWidth = function() {
                        return this._$leftElement.get(0).clientWidth
                    };
                    _proto.getSplitterBorderElement = function() {
                        return this._$splitterBorder
                    };
                    _proto._toggleActive = function(isActive) {
                        this.$element().toggleClass(SPLITTER_INACTIVE_CLASS, !isActive);
                        this._$splitter.toggleClass(SPLITTER_INACTIVE_CLASS, !isActive);
                        this._isSplitterActive = isActive;
                        this._actions.onActiveStateChanged({
                            isActive: isActive
                        })
                    };
                    _proto.toggleDisabled = function(isDisabled) {
                        this.$element().toggleClass("dx-state-disabled", isDisabled);
                        this._$splitter.toggleClass("dx-state-disabled", isDisabled)
                    };
                    _proto.isSplitterMoved = function() {
                        return !this.$element().hasClass(SPLITTER_INITIAL_STATE_CLASS)
                    };
                    _proto.disableSplitterCalculation = function(value) {
                        this._isSplitterCalculationDisabled = value
                    };
                    _proto._setSplitterPositionLeft = function() {
                        let {
                            splitterPositionLeft: splitterPositionLeft = null,
                            needUpdatePanels: needUpdatePanels = false,
                            usePercentagePanelsWidth: usePercentagePanelsWidth = false
                        } = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                        splitterPositionLeft = splitterPositionLeft || this._getLeftPanelWidth() - this._getSplitterOffset();
                        const leftPanelWidth = splitterPositionLeft + this._getSplitterOffset();
                        const rightPanelWidth = this._containerWidth - leftPanelWidth;
                        if (!this._isSplitterCalculationDisabled) {
                            this.$element().css("left", splitterPositionLeft)
                        }
                        this._leftPanelPercentageWidth = this._leftPanelPercentageWidth || this._convertToPercentage(leftPanelWidth);
                        const rightPanelPercentageWidth = this._convertToPercentage(this._containerWidth - this._convertToPixels(this._leftPanelPercentageWidth));
                        if (!needUpdatePanels) {
                            return
                        }
                        this._actions.onApplyPanelSize({
                            leftPanelWidth: usePercentagePanelsWidth ? "".concat(this._leftPanelPercentageWidth, "%") : leftPanelWidth,
                            rightPanelWidth: usePercentagePanelsWidth ? "".concat(rightPanelPercentageWidth, "%") : rightPanelWidth
                        })
                    };
                    _proto._optionChanged = function(args) {
                        switch (args.name) {
                            case "initialLeftPanelWidth":
                                this._leftPanelPercentageWidth = this._convertToPercentage(args.value);
                                this._dimensionChanged();
                                break;
                            case "leftElement":
                                this.repaint();
                                break;
                            case "onActiveStateChanged":
                            case "onApplyPanelSize":
                                this._actions[args.name] = this._createActionByOption(args.name);
                                break;
                            default:
                                _Widget.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto._convertToPercentage = function(pixelWidth) {
                        return pixelWidth / this._$container.get(0).clientWidth * 100
                    };
                    _proto._convertToPixels = function(percentageWidth) {
                        return percentageWidth / 100 * this._$container.get(0).clientWidth
                    };
                    return SplitterControl
                }(_ui.default);
                exports.default = SplitterControl;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        31609:
            /*!**********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/switch.js ***!
              \**********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../events/core/events_engine */ 55994));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../core/devices */ 20530));
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _editor = _interopRequireDefault(__webpack_require__( /*! ./editor/editor */ 96452));
                var _index = __webpack_require__( /*! ../events/utils/index */ 39611);
                var _emitter = __webpack_require__( /*! ../events/core/emitter.feedback */ 91633);
                var _position = __webpack_require__( /*! ../core/utils/position */ 37518);
                var _fx = _interopRequireDefault(__webpack_require__( /*! ../animation/fx */ 87209));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../localization/message */ 28109));
                var _click = __webpack_require__( /*! ../events/click */ 95429);
                var _swipeable = _interopRequireDefault(__webpack_require__( /*! ../events/gesture/swipeable */ 66894));
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const Switch = _editor.default.inherit({
                    _supportedKeys: function() {
                        const isRTL = this.option("rtlEnabled");
                        const click = function(e) {
                            e.preventDefault();
                            this._clickAction({
                                event: e
                            })
                        };
                        const move = function(value, e) {
                            e.preventDefault();
                            e.stopPropagation();
                            this._saveValueChangeEvent(e);
                            this._animateValue(value)
                        };
                        return (0, _extend.extend)(this.callBase(), {
                            space: click,
                            enter: click,
                            leftArrow: move.bind(this, isRTL ? true : false),
                            rightArrow: move.bind(this, isRTL ? false : true)
                        })
                    },
                    _useTemplates: function() {
                        return false
                    },
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            hoverStateEnabled: true,
                            activeStateEnabled: true,
                            switchedOnText: _message.default.format("dxSwitch-switchedOnText"),
                            switchedOffText: _message.default.format("dxSwitch-switchedOffText"),
                            value: false
                        })
                    },
                    _defaultOptionsRules: function() {
                        return this.callBase().concat([{
                            device: function() {
                                return "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator()
                            },
                            options: {
                                focusStateEnabled: true
                            }
                        }])
                    },
                    _feedbackHideTimeout: 0,
                    _animating: false,
                    _initMarkup: function() {
                        this._renderContainers();
                        this.$element().addClass("dx-switch").append(this._$switchWrapper);
                        this._renderSubmitElement();
                        this._renderClick();
                        this.setAria("role", "button");
                        this._renderSwipeable();
                        this.callBase();
                        this._renderSwitchInner();
                        this._renderLabels();
                        this._renderValue()
                    },
                    _getInnerOffset: function(value, offset) {
                        const ratio = (offset - this._offsetDirection() * Number(!value)) / 2;
                        return 100 * ratio + "%"
                    },
                    _getHandleOffset: function(value, offset) {
                        if (this.option("rtlEnabled")) {
                            value = !value
                        }
                        if (value) {
                            const calcValue = 100 * -offset - 100;
                            return calcValue + "%"
                        } else {
                            return 100 * -offset + "%"
                        }
                    },
                    _renderSwitchInner: function() {
                        this._$switchInner = (0, _renderer.default)("<div>").addClass("dx-switch-inner").appendTo(this._$switchContainer);
                        this._$handle = (0, _renderer.default)("<div>").addClass("dx-switch-handle").appendTo(this._$switchInner)
                    },
                    _renderLabels: function() {
                        this._$labelOn = (0, _renderer.default)("<div>").addClass("dx-switch-on").prependTo(this._$switchInner);
                        this._$labelOff = (0, _renderer.default)("<div>").addClass("dx-switch-off").appendTo(this._$switchInner);
                        this._setLabelsText()
                    },
                    _renderContainers: function() {
                        this._$switchContainer = (0, _renderer.default)("<div>").addClass("dx-switch-container");
                        this._$switchWrapper = (0, _renderer.default)("<div>").addClass("dx-switch-wrapper").append(this._$switchContainer)
                    },
                    _renderSwipeable: function() {
                        this._createComponent(this.$element(), _swipeable.default, {
                            elastic: false,
                            immediate: true,
                            onStart: this._swipeStartHandler.bind(this),
                            onUpdated: this._swipeUpdateHandler.bind(this),
                            onEnd: this._swipeEndHandler.bind(this),
                            itemSizeFunc: this._getItemSizeFunc.bind(this)
                        })
                    },
                    _getItemSizeFunc: function() {
                        return (0, _size.getOuterWidth)(this._$switchContainer, true) - (0, _position.getBoundingRect)(this._$handle.get(0)).width
                    },
                    _renderSubmitElement: function() {
                        this._$submitElement = (0, _renderer.default)("<input>").attr("type", "hidden").appendTo(this.$element())
                    },
                    _getSubmitElement: function() {
                        return this._$submitElement
                    },
                    _offsetDirection: function() {
                        return this.option("rtlEnabled") ? -1 : 1
                    },
                    _renderPosition: function(state, swipeOffset) {
                        const innerOffset = this._getInnerOffset(state, swipeOffset);
                        const handleOffset = this._getHandleOffset(state, swipeOffset);
                        this._$switchInner.css("transform", " translateX(" + innerOffset + ")");
                        this._$handle.css("transform", " translateX(" + handleOffset + ")")
                    },
                    _validateValue: function() {
                        const check = this.option("value");
                        if ("boolean" !== typeof check) {
                            this._options.silent("value", !!check)
                        }
                    },
                    _renderClick: function() {
                        const eventName = (0, _index.addNamespace)(_click.name, this.NAME);
                        const $element = this.$element();
                        this._clickAction = this._createAction(this._clickHandler.bind(this));
                        _events_engine.default.off($element, eventName);
                        _events_engine.default.on($element, eventName, function(e) {
                            this._clickAction({
                                event: e
                            })
                        }.bind(this))
                    },
                    _clickHandler: function(args) {
                        const e = args.event;
                        this._saveValueChangeEvent(e);
                        if (this._animating || this._swiping) {
                            return
                        }
                        this._animateValue(!this.option("value"))
                    },
                    _animateValue: function(value) {
                        const startValue = this.option("value");
                        const endValue = value;
                        if (startValue === endValue) {
                            return
                        }
                        this._animating = true;
                        const fromInnerOffset = this._getInnerOffset(startValue, 0);
                        const toInnerOffset = this._getInnerOffset(endValue, 0);
                        const fromHandleOffset = this._getHandleOffset(startValue, 0);
                        const toHandleOffset = this._getHandleOffset(endValue, 0);
                        const that = this;
                        const fromInnerConfig = {};
                        const toInnerConfig = {};
                        const fromHandleConfig = {};
                        const toHandlerConfig = {};
                        fromInnerConfig.transform = " translateX(" + fromInnerOffset + ")";
                        toInnerConfig.transform = " translateX(" + toInnerOffset + ")";
                        fromHandleConfig.transform = " translateX(" + fromHandleOffset + ")";
                        toHandlerConfig.transform = " translateX(" + toHandleOffset + ")";
                        this.$element().toggleClass("dx-switch-on-value", endValue);
                        _fx.default.animate(this._$handle, {
                            from: fromHandleConfig,
                            to: toHandlerConfig,
                            duration: 100
                        });
                        _fx.default.animate(this._$switchInner, {
                            from: fromInnerConfig,
                            to: toInnerConfig,
                            duration: 100,
                            complete: function() {
                                that._animating = false;
                                that.option("value", endValue)
                            }
                        })
                    },
                    _swipeStartHandler: function(e) {
                        const state = this.option("value");
                        const rtlEnabled = this.option("rtlEnabled");
                        const maxOffOffset = rtlEnabled ? 0 : 1;
                        const maxOnOffset = rtlEnabled ? 1 : 0;
                        e.event.maxLeftOffset = state ? maxOffOffset : maxOnOffset;
                        e.event.maxRightOffset = state ? maxOnOffset : maxOffOffset;
                        this._swiping = true;
                        this._feedbackDeferred = new _deferred.Deferred;
                        (0, _emitter.lock)(this._feedbackDeferred);
                        this._toggleActiveState(this.$element(), this.option("activeStateEnabled"))
                    },
                    _swipeUpdateHandler: function(e) {
                        this._renderPosition(this.option("value"), e.event.offset)
                    },
                    _swipeEndHandler: function(e) {
                        const that = this;
                        const offsetDirection = this._offsetDirection();
                        const toInnerConfig = {};
                        const toHandleConfig = {};
                        const innerOffset = this._getInnerOffset(that.option("value"), e.event.targetOffset);
                        const handleOffset = this._getHandleOffset(that.option("value"), e.event.targetOffset);
                        toInnerConfig.transform = " translateX(" + innerOffset + ")";
                        toHandleConfig.transform = " translateX(" + handleOffset + ")";
                        _fx.default.animate(this._$handle, {
                            to: toHandleConfig,
                            duration: 100
                        });
                        _fx.default.animate(this._$switchInner, {
                            to: toInnerConfig,
                            duration: 100,
                            complete: function() {
                                that._swiping = false;
                                const pos = that.option("value") + offsetDirection * e.event.targetOffset;
                                that._saveValueChangeEvent(e.event);
                                that.option("value", Boolean(pos));
                                that._feedbackDeferred.resolve();
                                that._toggleActiveState(that.$element(), false)
                            }
                        })
                    },
                    _renderValue: function() {
                        this._validateValue();
                        const val = this.option("value");
                        this._renderPosition(val, 0);
                        this.$element().toggleClass("dx-switch-on-value", val);
                        this._getSubmitElement().val(val);
                        this.setAria({
                            pressed: val,
                            label: val ? this.option("switchedOnText") : this.option("switchedOffText")
                        })
                    },
                    _setLabelsText: function() {
                        this._$labelOn && this._$labelOn.text(this.option("switchedOnText"));
                        this._$labelOff && this._$labelOff.text(this.option("switchedOffText"))
                    },
                    _visibilityChanged: function(visible) {
                        if (visible) {
                            this.repaint()
                        }
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "width":
                                delete this._marginBound;
                                this._refresh();
                                break;
                            case "switchedOnText":
                            case "switchedOffText":
                                this._setLabelsText();
                                break;
                            case "value":
                                this._renderValue();
                                this.callBase(args);
                                break;
                            default:
                                this.callBase(args)
                        }
                    }
                });
                (0, _component_registrator.default)("dxSwitch", Switch);
                var _default = Switch;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        21807:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/tab_panel.js ***!
              \*************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _support = __webpack_require__( /*! ../core/utils/support */ 60137);
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../core/devices */ 20530));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../core/dom_adapter */ 73349));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _multi_view = _interopRequireDefault(__webpack_require__( /*! ./multi_view */ 86478));
                var _tabs = _interopRequireDefault(__webpack_require__( /*! ./tabs */ 13453));
                var _item = _interopRequireDefault(__webpack_require__( /*! ./tab_panel/item */ 31590));
                var _icon = __webpack_require__( /*! ../core/utils/icon */ 44899);
                var _element = __webpack_require__( /*! ../core/element */ 6415);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _bindable_template = __webpack_require__( /*! ../core/templates/bindable_template */ 93280);
                var _themes = __webpack_require__( /*! ./themes */ 75811);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const TABPANEL_TABS_POSITION_CLASS = {
                    top: "dx-tabpanel-tabs-position-top",
                    right: "dx-tabpanel-tabs-position-right",
                    bottom: "dx-tabpanel-tabs-position-bottom",
                    left: "dx-tabpanel-tabs-position-left"
                };
                const TABS_POSITION = {
                    top: "top",
                    right: "right",
                    bottom: "bottom",
                    left: "left"
                };
                const TABS_INDICATOR_POSITION_BY_TABS_POSITION = {
                    top: "bottom",
                    right: "left",
                    bottom: "top",
                    left: "right"
                };
                const TABS_ORIENTATION_horizontal = "horizontal",
                    TABS_ORIENTATION_vertical = "vertical";
                const ICON_POSITION_top = "top",
                    ICON_POSITION_start = "start";
                const STYLING_MODE_primary = "primary",
                    STYLING_MODE_secondary = "secondary";
                const TabPanel = _multi_view.default.inherit({
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            itemTitleTemplate: "title",
                            hoverStateEnabled: true,
                            showNavButtons: false,
                            scrollByContent: true,
                            scrollingEnabled: true,
                            tabsPosition: TABS_POSITION.top,
                            iconPosition: ICON_POSITION_start,
                            stylingMode: STYLING_MODE_primary,
                            onTitleClick: null,
                            onTitleHold: null,
                            onTitleRendered: null,
                            badgeExpr: function(data) {
                                return data ? data.badge : void 0
                            },
                            _tabsIndicatorPosition: null
                        })
                    },
                    _defaultOptionsRules: function() {
                        const themeName = (0, _themes.current)();
                        return this.callBase().concat([{
                            device: function() {
                                return "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator()
                            },
                            options: {
                                focusStateEnabled: true
                            }
                        }, {
                            device: function() {
                                return !_support.touch
                            },
                            options: {
                                swipeEnabled: false
                            }
                        }, {
                            device: {
                                platform: "generic"
                            },
                            options: {
                                animationEnabled: false
                            }
                        }, {
                            device: () => (0, _themes.isFluent)(themeName),
                            options: {
                                stylingMode: STYLING_MODE_secondary
                            }
                        }, {
                            device: () => (0, _themes.isMaterialBased)(themeName),
                            options: {
                                iconPosition: ICON_POSITION_top
                            }
                        }])
                    },
                    _init: function() {
                        this.callBase();
                        this.$element().addClass("dx-tabpanel");
                        this._toggleTabPanelTabsPositionClass()
                    },
                    _getElementAria: () => ({
                        role: "tabpanel"
                    }),
                    _getItemAria: () => ({
                        role: "tabpanel"
                    }),
                    _initMarkup: function() {
                        this.callBase();
                        this._createTitleActions();
                        this._renderLayout()
                    },
                    _prepareTabsItemTemplate(data, $container) {
                        const $iconElement = (0, _icon.getImageContainer)(null === data || void 0 === data ? void 0 : data.icon);
                        if ($iconElement) {
                            $container.append($iconElement)
                        }
                        const title = (0, _type.isPlainObject)(data) ? null === data || void 0 === data ? void 0 : data.title : data;
                        if ((0, _type.isDefined)(title) && !(0, _type.isPlainObject)(title)) {
                            const $tabTextSpan = (0, _renderer.default)("<span>").addClass("dx-tab-text-span");
                            $tabTextSpan.append(_dom_adapter.default.createTextNode(title));
                            const $tabTextSpanPseudo = (0, _renderer.default)("<span>").addClass("dx-tab-text-span-pseudo");
                            $tabTextSpanPseudo.append(_dom_adapter.default.createTextNode(title));
                            $tabTextSpanPseudo.appendTo($tabTextSpan);
                            $tabTextSpan.appendTo($container)
                        }
                    },
                    _initTemplates() {
                        this.callBase();
                        this._templateManager.addDefaultTemplates({
                            title: new _bindable_template.BindableTemplate(($container, data) => {
                                this._prepareTabsItemTemplate(data, $container);
                                const $tabItem = (0, _renderer.default)("<div>").addClass("dx-tab-text");
                                $container.wrapInner($tabItem)
                            }, ["title", "icon"], this.option("integrationOptions.watchMethod"))
                        })
                    },
                    _createTitleActions: function() {
                        this._createTitleClickAction();
                        this._createTitleHoldAction();
                        this._createTitleRenderedAction()
                    },
                    _createTitleClickAction: function() {
                        this._titleClickAction = this._createActionByOption("onTitleClick")
                    },
                    _createTitleHoldAction: function() {
                        this._titleHoldAction = this._createActionByOption("onTitleHold")
                    },
                    _createTitleRenderedAction: function() {
                        this._titleRenderedAction = this._createActionByOption("onTitleRendered")
                    },
                    _renderLayout: function() {
                        if (this._tabs) {
                            return
                        }
                        const $element = this.$element();
                        this._$tabContainer = (0, _renderer.default)("<div>").addClass("dx-tabpanel-tabs").appendTo($element);
                        const $tabs = (0, _renderer.default)("<div>").appendTo(this._$tabContainer);
                        this._tabs = this._createComponent($tabs, _tabs.default, this._tabConfig());
                        this._$container = (0, _renderer.default)("<div>").addClass("dx-tabpanel-container").appendTo($element);
                        this._$container.append(this._$wrapper)
                    },
                    _refreshActiveDescendant: function() {
                        if (!this._tabs) {
                            return
                        }
                        const tabs = this._tabs;
                        const tabItems = tabs.itemElements();
                        const $activeTab = (0, _renderer.default)(tabItems[tabs.option("selectedIndex")]);
                        const id = this.getFocusedItemId();
                        this.setAria("controls", void 0, (0, _renderer.default)(tabItems));
                        this.setAria("controls", id, $activeTab)
                    },
                    _getTabsIndicatorPosition() {
                        const {
                            _tabsIndicatorPosition: _tabsIndicatorPosition,
                            tabsPosition: tabsPosition
                        } = this.option();
                        return null !== _tabsIndicatorPosition && void 0 !== _tabsIndicatorPosition ? _tabsIndicatorPosition : TABS_INDICATOR_POSITION_BY_TABS_POSITION[tabsPosition]
                    },
                    _tabConfig() {
                        const tabsIndicatorPosition = this._getTabsIndicatorPosition();
                        return {
                            selectOnFocus: true,
                            focusStateEnabled: this.option("focusStateEnabled"),
                            hoverStateEnabled: this.option("hoverStateEnabled"),
                            repaintChangesOnly: this.option("repaintChangesOnly"),
                            tabIndex: this.option("tabIndex"),
                            selectedIndex: this.option("selectedIndex"),
                            badgeExpr: this.option("badgeExpr"),
                            onItemClick: this._titleClickAction.bind(this),
                            onItemHold: this._titleHoldAction.bind(this),
                            itemHoldTimeout: this.option("itemHoldTimeout"),
                            onSelectionChanged: function(e) {
                                this.option("selectedIndex", e.component.option("selectedIndex"));
                                this._refreshActiveDescendant()
                            }.bind(this),
                            onItemRendered: this._titleRenderedAction.bind(this),
                            itemTemplate: this._getTemplateByOption("itemTitleTemplate"),
                            items: this.option("items"),
                            noDataText: null,
                            scrollingEnabled: this.option("scrollingEnabled"),
                            scrollByContent: this.option("scrollByContent"),
                            showNavButtons: this.option("showNavButtons"),
                            itemTemplateProperty: "tabTemplate",
                            loopItemFocus: this.option("loop"),
                            selectionRequired: true,
                            onOptionChanged: function(args) {
                                if ("focusedElement" === args.name) {
                                    if (args.value) {
                                        const $value = (0, _renderer.default)(args.value);
                                        const $newItem = this._itemElements().eq($value.index());
                                        this.option("focusedElement", (0, _element.getPublicElement)($newItem))
                                    } else {
                                        this.option("focusedElement", args.value)
                                    }
                                }
                            }.bind(this),
                            onFocusIn: function(args) {
                                this._focusInHandler(args.event)
                            }.bind(this),
                            onFocusOut: function(args) {
                                if (!this._isFocusOutHandlerExecuting) {
                                    this._focusOutHandler(args.event)
                                }
                            }.bind(this),
                            orientation: this._getTabsOrientation(),
                            iconPosition: this.option("iconPosition"),
                            stylingMode: this.option("stylingMode"),
                            _itemAttributes: {
                                class: "dx-tabpanel-tab"
                            },
                            _indicatorPosition: tabsIndicatorPosition
                        }
                    },
                    _renderFocusTarget: function() {
                        this._focusTarget().attr("tabIndex", -1)
                    },
                    _getTabsOrientation() {
                        const {
                            tabsPosition: tabsPosition
                        } = this.option();
                        if ([TABS_POSITION.right, TABS_POSITION.left].includes(tabsPosition)) {
                            return TABS_ORIENTATION_vertical
                        }
                        return TABS_ORIENTATION_horizontal
                    },
                    _getTabPanelTabsPositionClass() {
                        const position = this.option("tabsPosition");
                        switch (position) {
                            case TABS_POSITION.right:
                                return TABPANEL_TABS_POSITION_CLASS.right;
                            case TABS_POSITION.bottom:
                                return TABPANEL_TABS_POSITION_CLASS.bottom;
                            case TABS_POSITION.left:
                                return TABPANEL_TABS_POSITION_CLASS.left;
                            case TABS_POSITION.top:
                            default:
                                return TABPANEL_TABS_POSITION_CLASS.top
                        }
                    },
                    _toggleTabPanelTabsPositionClass() {
                        for (const key in TABPANEL_TABS_POSITION_CLASS) {
                            this.$element().removeClass(TABPANEL_TABS_POSITION_CLASS[key])
                        }
                        const newClass = this._getTabPanelTabsPositionClass();
                        this.$element().addClass(newClass)
                    },
                    _updateTabsOrientation() {
                        const orientation = this._getTabsOrientation();
                        this._setTabsOption("orientation", orientation)
                    },
                    _toggleWrapperFocusedClass(isFocused) {
                        this._toggleFocusClass(isFocused, this._$wrapper)
                    },
                    _toggleDisabledFocusedClass(isFocused) {
                        this._focusTarget().toggleClass("dx-disabled-focused-tab", isFocused)
                    },
                    _updateFocusState: function(e, isFocused) {
                        this.callBase(e, isFocused);
                        const isTabsTarget = e.target === this._tabs._focusTarget().get(0);
                        const isMultiViewTarget = e.target === this._focusTarget().get(0);
                        if (isTabsTarget) {
                            this._toggleFocusClass(isFocused, this._focusTarget())
                        }
                        if (isTabsTarget || isMultiViewTarget) {
                            const isDisabled = this._isDisabled(this.option("focusedElement"));
                            this._toggleWrapperFocusedClass(isFocused && !isDisabled);
                            this._toggleDisabledFocusedClass(isFocused && isDisabled)
                        }
                        if (isMultiViewTarget) {
                            this._toggleFocusClass(isFocused, this._tabs.option("focusedElement"))
                        }
                    },
                    _focusOutHandler: function(e) {
                        this._isFocusOutHandlerExecuting = true;
                        this.callBase.apply(this, arguments);
                        this._tabs._focusOutHandler(e);
                        this._isFocusOutHandlerExecuting = false
                    },
                    _setTabsOption(name, value) {
                        if (this._tabs) {
                            this._tabs.option(name, value)
                        }
                    },
                    _visibilityChanged: function(visible) {
                        if (visible) {
                            this._tabs._dimensionChanged()
                        }
                    },
                    registerKeyHandler: function(key, handler) {
                        this.callBase(key, handler);
                        if (this._tabs) {
                            this._tabs.registerKeyHandler(key, handler)
                        }
                    },
                    repaint: function() {
                        this.callBase();
                        this._tabs.repaint()
                    },
                    _updateTabsIndicatorPosition() {
                        const value = this._getTabsIndicatorPosition();
                        this._setTabsOption("_indicatorPosition", value)
                    },
                    _optionChanged: function(args) {
                        const {
                            name: name,
                            value: value,
                            fullName: fullName
                        } = args;
                        switch (name) {
                            case "dataSource":
                                this.callBase(args);
                                break;
                            case "items":
                                this._setTabsOption(name, this.option(name));
                                if (!this.option("repaintChangesOnly")) {
                                    this._tabs.repaint()
                                }
                                this.callBase(args);
                                break;
                            case "width":
                                this.callBase(args);
                                this._tabs.repaint();
                                break;
                            case "selectedIndex":
                            case "selectedItem":
                                this._setTabsOption(fullName, value);
                                this.callBase(args);
                                if (true === this.option("focusStateEnabled")) {
                                    const selectedIndex = this.option("selectedIndex");
                                    const selectedTabContent = this._itemElements().eq(selectedIndex);
                                    this.option("focusedElement", (0, _element.getPublicElement)(selectedTabContent))
                                }
                                break;
                            case "itemHoldTimeout":
                            case "focusStateEnabled":
                            case "hoverStateEnabled":
                                this._setTabsOption(fullName, value);
                                this.callBase(args);
                                break;
                            case "scrollingEnabled":
                            case "scrollByContent":
                            case "showNavButtons":
                                this._setTabsOption(fullName, value);
                                break;
                            case "focusedElement": {
                                const id = value ? (0, _renderer.default)(value).index() : value;
                                const newItem = value ? this._tabs._itemElements().eq(id) : value;
                                this._setTabsOption("focusedElement", (0, _element.getPublicElement)(newItem));
                                if (value) {
                                    const isDisabled = this._isDisabled(value);
                                    this._toggleWrapperFocusedClass(!isDisabled);
                                    this._toggleDisabledFocusedClass(isDisabled)
                                }
                                this.callBase(args);
                                break
                            }
                            case "itemTitleTemplate":
                                this._setTabsOption("itemTemplate", this._getTemplateByOption("itemTitleTemplate"));
                                break;
                            case "onTitleClick":
                                this._createTitleClickAction();
                                this._setTabsOption("onItemClick", this._titleClickAction.bind(this));
                                break;
                            case "onTitleHold":
                                this._createTitleHoldAction();
                                this._setTabsOption("onItemHold", this._titleHoldAction.bind(this));
                                break;
                            case "onTitleRendered":
                                this._createTitleRenderedAction();
                                this._setTabsOption("onItemRendered", this._titleRenderedAction.bind(this));
                                break;
                            case "loop":
                                this._setTabsOption("loopItemFocus", value);
                                break;
                            case "badgeExpr":
                                this._invalidate();
                                break;
                            case "tabsPosition":
                                this._toggleTabPanelTabsPositionClass();
                                this._updateTabsIndicatorPosition();
                                this._updateTabsOrientation();
                                break;
                            case "iconPosition":
                                this._setTabsOption("iconPosition", value);
                                break;
                            case "stylingMode":
                                this._setTabsOption("stylingMode", value);
                                break;
                            case "_tabsIndicatorPosition":
                                this._setTabsOption("_indicatorPosition", value);
                                break;
                            default:
                                this.callBase(args)
                        }
                    }
                });
                TabPanel.ItemClass = _item.default;
                (0, _component_registrator.default)("dxTabPanel", TabPanel);
                var _default = TabPanel;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        31590:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/tab_panel/item.js ***!
              \******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _item = (obj = __webpack_require__( /*! ../collection/item */ 54778), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let TabPanelItem = function(_CollectionWidgetItem) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(TabPanelItem, _CollectionWidgetItem);

                    function TabPanelItem() {
                        return _CollectionWidgetItem.apply(this, arguments) || this
                    }
                    var _proto = TabPanelItem.prototype;
                    _proto._renderWatchers = function() {
                        this._startWatcher("badge", _common.noop);
                        return _CollectionWidgetItem.prototype._renderWatchers.call(this)
                    };
                    return TabPanelItem
                }(_item.default);
                exports.default = TabPanelItem;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        13453:
            /*!********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/tabs.js ***!
              \********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../events/core/events_engine */ 55994));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../core/devices */ 20530));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _button = _interopRequireDefault(__webpack_require__( /*! ./button */ 63008));
                var _utils = __webpack_require__( /*! ./widget/utils.ink_ripple */ 72672);
                var _index = __webpack_require__( /*! ../events/utils/index */ 39611);
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../events/pointer */ 93786));
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _item = _interopRequireDefault(__webpack_require__( /*! ./tabs/item */ 25411));
                var _constants = __webpack_require__( /*! ./tabs/constants */ 98897);
                var _themes = __webpack_require__( /*! ./themes */ 75811);
                var _hold = _interopRequireDefault(__webpack_require__( /*! ../events/hold */ 11699));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./scroll_view/ui.scrollable */ 41183));
                var _uiCollection_widget = _interopRequireDefault(__webpack_require__( /*! ./collection/ui.collection_widget.live_update */ 69010));
                var _icon = __webpack_require__( /*! ../core/utils/icon */ 44899);
                var _bindable_template = __webpack_require__( /*! ../core/templates/bindable_template */ 93280);
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);
                var _get_boundary_props = __webpack_require__( /*! ../renovation/ui/scroll_view/utils/get_boundary_props */ 70602);
                var _get_scroll_left_max = __webpack_require__( /*! ../renovation/ui/scroll_view/utils/get_scroll_left_max */ 92721);
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const TABS_ORIENTATION_CLASS_vertical = "dx-tabs-vertical",
                    TABS_ORIENTATION_CLASS_horizontal = "dx-tabs-horizontal";
                const INDICATOR_POSITION_CLASS = {
                    top: "dx-tab-indicator-position-top",
                    right: "dx-tab-indicator-position-right",
                    bottom: "dx-tab-indicator-position-bottom",
                    left: "dx-tab-indicator-position-left"
                };
                const TABS_ICON_POSITION_CLASS = {
                    top: "dx-tabs-icon-position-top",
                    end: "dx-tabs-icon-position-end",
                    bottom: "dx-tabs-icon-position-bottom",
                    start: "dx-tabs-icon-position-start"
                };
                const TABS_STYLING_MODE_CLASS = {
                    primary: "dx-tabs-styling-mode-primary",
                    secondary: "dx-tabs-styling-mode-secondary"
                };
                const ORIENTATION_horizontal = "horizontal",
                    ORIENTATION_vertical = "vertical";
                const INDICATOR_POSITION_right = "right",
                    INDICATOR_POSITION_bottom = "bottom",
                    INDICATOR_POSITION_left = "left";
                const SCROLLABLE_DIRECTION_horizontal = "horizontal",
                    SCROLLABLE_DIRECTION_vertical = "vertical";
                const ICON_POSITION_top = "top",
                    ICON_POSITION_end = "end",
                    ICON_POSITION_bottom = "bottom",
                    ICON_POSITION_start = "start";
                const STYLING_MODE_primary = "primary",
                    STYLING_MODE_secondary = "secondary";
                const Tabs = _uiCollection_widget.default.inherit({
                    _activeStateUnit: ".dx-tab",
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            hoverStateEnabled: true,
                            showNavButtons: true,
                            scrollByContent: true,
                            scrollingEnabled: true,
                            selectionMode: "single",
                            orientation: ORIENTATION_horizontal,
                            iconPosition: ICON_POSITION_start,
                            stylingMode: STYLING_MODE_primary,
                            activeStateEnabled: true,
                            selectionRequired: false,
                            selectOnFocus: true,
                            loopItemFocus: false,
                            useInkRipple: false,
                            badgeExpr: function(data) {
                                return data ? data.badge : void 0
                            },
                            _itemAttributes: {
                                role: "tab"
                            },
                            _indicatorPosition: null
                        })
                    },
                    _defaultOptionsRules: function() {
                        const themeName = (0, _themes.current)();
                        return this.callBase().concat([{
                            device: () => "desktop" !== _devices.default.real().deviceType,
                            options: {
                                showNavButtons: false
                            }
                        }, {
                            device: {
                                deviceType: "desktop"
                            },
                            options: {
                                scrollByContent: false
                            }
                        }, {
                            device: () => "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator(),
                            options: {
                                focusStateEnabled: true
                            }
                        }, {
                            device: () => (0, _themes.isFluent)(themeName),
                            options: {
                                iconPosition: ICON_POSITION_top,
                                stylingMode: STYLING_MODE_secondary
                            }
                        }, {
                            device: () => (0, _themes.isMaterial)(themeName),
                            options: {
                                useInkRipple: true,
                                selectOnFocus: false,
                                iconPosition: ICON_POSITION_top
                            }
                        }])
                    },
                    _init() {
                        const {
                            orientation: orientation,
                            stylingMode: stylingMode,
                            scrollingEnabled: scrollingEnabled
                        } = this.option();
                        const indicatorPosition = this._getIndicatorPosition();
                        this.callBase();
                        this.$element().addClass("dx-tabs");
                        this._toggleScrollingEnabledClass(scrollingEnabled);
                        this._toggleOrientationClass(orientation);
                        this._toggleIndicatorPositionClass(indicatorPosition);
                        this._toggleIconPositionClass();
                        this._toggleStylingModeClass(stylingMode);
                        this._renderWrapper();
                        this._renderMultiple();
                        this._feedbackHideTimeout = 100
                    },
                    _prepareDefaultItemTemplate(data, $container) {
                        const text = (0, _type.isPlainObject)(data) ? null === data || void 0 === data ? void 0 : data.text : data;
                        if ((0, _type.isDefined)(text)) {
                            const $tabTextSpan = (0, _renderer.default)("<span>").addClass("dx-tab-text-span");
                            $tabTextSpan.text(text);
                            const $tabTextSpanPseudo = (0, _renderer.default)("<span>").addClass("dx-tab-text-span-pseudo");
                            $tabTextSpanPseudo.text(text);
                            $tabTextSpanPseudo.appendTo($tabTextSpan);
                            $tabTextSpan.appendTo($container)
                        }
                        if ((0, _type.isDefined)(data.html)) {
                            $container.html(data.html)
                        }
                    },
                    _initTemplates() {
                        this.callBase();
                        this._templateManager.addDefaultTemplates({
                            item: new _bindable_template.BindableTemplate((($container, data) => {
                                this._prepareDefaultItemTemplate(data, $container);
                                const $iconElement = (0, _icon.getImageContainer)(data.icon);
                                $iconElement && $iconElement.prependTo($container);
                                const $tabItem = (0, _renderer.default)("<div>").addClass("dx-tab-text");
                                $container.wrapInner($tabItem)
                            }).bind(this), ["text", "html", "icon"], this.option("integrationOptions.watchMethod"))
                        })
                    },
                    _createItemByTemplate: function(itemTemplate, renderArgs) {
                        const {
                            itemData: itemData,
                            container: container,
                            index: index
                        } = renderArgs;
                        this._deferredTemplates[index] = new _deferred.Deferred;
                        return itemTemplate.render({
                            model: itemData,
                            container: container,
                            index: index,
                            onRendered: () => this._deferredTemplates[index].resolve()
                        })
                    },
                    _itemClass: function() {
                        return "dx-tab"
                    },
                    _selectedItemClass: function() {
                        return "dx-tab-selected"
                    },
                    _itemDataKey: function() {
                        return "dxTabData"
                    },
                    _initMarkup: function() {
                        this._deferredTemplates = [];
                        this.callBase();
                        this.option("useInkRipple") && this._renderInkRipple();
                        this.$element().addClass("dx-overflow-hidden")
                    },
                    _render: function() {
                        this.callBase();
                        this._deferRenderScrolling()
                    },
                    _deferRenderScrolling() {
                        _deferred.when.apply(this, this._deferredTemplates).done(() => this._renderScrolling())
                    },
                    _renderScrolling() {
                        const removeClasses = ["dx-tabs-stretched", _constants.TABS_EXPANDED_CLASS, "dx-overflow-hidden"];
                        this.$element().removeClass(removeClasses.join(" "));
                        if (this.option("scrollingEnabled") && this._isItemsSizeExceeded()) {
                            if (!this._scrollable) {
                                this._renderScrollable();
                                this._renderNavButtons()
                            }
                            const scrollable = this.getScrollable();
                            scrollable.update();
                            if (this.option("rtlEnabled")) {
                                const maxLeftOffset = (0, _get_scroll_left_max.getScrollLeftMax)((0, _renderer.default)(this.getScrollable().container()).get(0));
                                scrollable.scrollTo({
                                    left: maxLeftOffset
                                })
                            }
                            this._updateNavButtonsState();
                            this._scrollToItem(this.option("selectedItem"))
                        }
                        if (!(this.option("scrollingEnabled") && this._isItemsSizeExceeded())) {
                            this._cleanScrolling();
                            if (this._needStretchItems()) {
                                this.$element().addClass("dx-tabs-stretched")
                            }
                            this.$element().removeClass("dx-tabs-nav-buttons").addClass(_constants.TABS_EXPANDED_CLASS)
                        }
                    },
                    _isVertical() {
                        return this.option("orientation") === ORIENTATION_vertical
                    },
                    _isItemsSizeExceeded() {
                        const isVertical = this._isVertical();
                        const isItemsSizeExceeded = isVertical ? this._isItemsHeightExceeded() : this._isItemsWidthExceeded();
                        return isItemsSizeExceeded
                    },
                    _isItemsWidthExceeded() {
                        const $visibleItems = this._getVisibleItems();
                        const tabItemTotalWidth = this._getSummaryItemsSize("width", $visibleItems, true);
                        const elementWidth = (0, _size.getWidth)(this.$element());
                        if ([tabItemTotalWidth, elementWidth].includes(0)) {
                            return false
                        }
                        const isItemsWidthExceeded = tabItemTotalWidth > elementWidth - 1;
                        return isItemsWidthExceeded
                    },
                    _isItemsHeightExceeded() {
                        const $visibleItems = this._getVisibleItems();
                        const itemsHeight = this._getSummaryItemsSize("height", $visibleItems, true);
                        const elementHeight = (0, _size.getHeight)(this.$element());
                        const isItemsHeightExceeded = itemsHeight - 1 > elementHeight;
                        return isItemsHeightExceeded
                    },
                    _needStretchItems() {
                        const $visibleItems = this._getVisibleItems();
                        const elementWidth = (0, _size.getWidth)(this.$element());
                        const itemsWidth = [];
                        (0, _iterator.each)($visibleItems, (_, item) => {
                            itemsWidth.push((0, _size.getOuterWidth)(item, true))
                        });
                        const maxTabItemWidth = Math.max.apply(null, itemsWidth);
                        const requireWidth = elementWidth / $visibleItems.length;
                        const needStretchItems = maxTabItemWidth > requireWidth + 1;
                        return needStretchItems
                    },
                    _cleanNavButtons: function() {
                        if (!this._leftButton || !this._rightButton) {
                            return
                        }
                        this._leftButton.$element().remove();
                        this._rightButton.$element().remove();
                        this._leftButton = null;
                        this._rightButton = null
                    },
                    _cleanScrolling: function() {
                        if (!this._scrollable) {
                            return
                        }
                        this._$wrapper.appendTo(this.$element());
                        this._scrollable.$element().remove();
                        this._scrollable = null;
                        this._cleanNavButtons()
                    },
                    _renderInkRipple: function() {
                        this._inkRipple = (0, _utils.render)()
                    },
                    _getPointerEvent: () => _pointer.default.up,
                    _toggleActiveState: function($element, value, e) {
                        this.callBase.apply(this, arguments);
                        if (!this._inkRipple) {
                            return
                        }
                        const config = {
                            element: $element,
                            event: e
                        };
                        if (value) {
                            this._inkRipple.showWave(config)
                        } else {
                            this._inkRipple.hideWave(config)
                        }
                    },
                    _renderMultiple: function() {
                        if ("multiple" === this.option("selectionMode")) {
                            this.option("selectOnFocus", false)
                        }
                    },
                    _renderWrapper: function() {
                        this._$wrapper = (0, _renderer.default)("<div>").addClass("dx-tabs-wrapper");
                        this.setAria("role", "tablist", this._$wrapper);
                        this.$element().append(this._$wrapper)
                    },
                    _itemContainer: function() {
                        return this._$wrapper
                    },
                    _getScrollableDirection() {
                        const isVertical = this._isVertical();
                        const scrollableDirection = isVertical ? SCROLLABLE_DIRECTION_vertical : SCROLLABLE_DIRECTION_horizontal;
                        return scrollableDirection
                    },
                    _updateScrollable() {
                        if (this.getScrollable()) {
                            this._cleanScrolling()
                        }
                        this._renderScrolling()
                    },
                    _renderScrollable() {
                        const $itemContainer = this.$element().wrapInner((0, _renderer.default)("<div>").addClass("dx-tabs-scrollable")).children();
                        this._scrollable = this._createComponent($itemContainer, _ui.default, {
                            direction: this._getScrollableDirection(),
                            showScrollbar: "never",
                            useKeyboard: false,
                            useNative: false,
                            scrollByContent: this.option("scrollByContent"),
                            onScroll: () => {
                                this._updateNavButtonsState()
                            }
                        });
                        this.$element().append(this._scrollable.$element())
                    },
                    _scrollToItem: function(itemData) {
                        if (!this._scrollable) {
                            return
                        }
                        const $item = this._editStrategy.getItemElement(itemData);
                        this._scrollable.scrollToElement($item)
                    },
                    _renderNavButtons: function() {
                        this.$element().toggleClass("dx-tabs-nav-buttons", this.option("showNavButtons"));
                        if (!this.option("showNavButtons")) {
                            return
                        }
                        const rtlEnabled = this.option("rtlEnabled");
                        this._leftButton = this._createNavButton(-30, rtlEnabled ? "chevronnext" : "chevronprev");
                        const $leftButton = this._leftButton.$element();
                        $leftButton.addClass("dx-tabs-nav-button-left");
                        this.$element().prepend($leftButton);
                        this._rightButton = this._createNavButton(30, rtlEnabled ? "chevronprev" : "chevronnext");
                        const $rightButton = this._rightButton.$element();
                        $rightButton.addClass("dx-tabs-nav-button-right");
                        this.$element().append($rightButton)
                    },
                    _updateNavButtonsState() {
                        const isVertical = this._isVertical();
                        const scrollable = this.getScrollable();
                        if (isVertical) {
                            var _this$_leftButton, _this$_rightButton;
                            null === (_this$_leftButton = this._leftButton) || void 0 === _this$_leftButton ? void 0 : _this$_leftButton.option("disabled", (0, _get_boundary_props.isReachedTop)(scrollable.scrollTop(), 1));
                            null === (_this$_rightButton = this._rightButton) || void 0 === _this$_rightButton ? void 0 : _this$_rightButton.option("disabled", (0, _get_boundary_props.isReachedBottom)((0, _renderer.default)(scrollable.container()).get(0), scrollable.scrollTop(), 0, 1))
                        } else {
                            var _this$_leftButton2, _this$_rightButton2;
                            null === (_this$_leftButton2 = this._leftButton) || void 0 === _this$_leftButton2 ? void 0 : _this$_leftButton2.option("disabled", (0, _get_boundary_props.isReachedLeft)(scrollable.scrollLeft(), 1));
                            null === (_this$_rightButton2 = this._rightButton) || void 0 === _this$_rightButton2 ? void 0 : _this$_rightButton2.option("disabled", (0, _get_boundary_props.isReachedRight)((0, _renderer.default)(scrollable.container()).get(0), scrollable.scrollLeft(), 1))
                        }
                    },
                    _updateScrollPosition: function(offset, duration) {
                        this._scrollable.update();
                        this._scrollable.scrollBy(offset / duration)
                    },
                    _createNavButton: function(offset, icon) {
                        const that = this;
                        const holdAction = that._createAction((function() {
                            that._holdInterval = setInterval((function() {
                                that._updateScrollPosition(offset, 5)
                            }), 5)
                        }));
                        const holdEventName = (0, _index.addNamespace)(_hold.default.name, "dxNavButton");
                        const pointerUpEventName = (0, _index.addNamespace)(_pointer.default.up, "dxNavButton");
                        const pointerOutEventName = (0, _index.addNamespace)(_pointer.default.out, "dxNavButton");
                        const navButton = this._createComponent((0, _renderer.default)("<div>").addClass("dx-tabs-nav-button"), _button.default, {
                            focusStateEnabled: false,
                            icon: icon,
                            onClick: function() {
                                that._updateScrollPosition(offset, 1)
                            },
                            integrationOptions: {}
                        });
                        const $navButton = navButton.$element();
                        _events_engine.default.on($navButton, holdEventName, {
                            timeout: 300
                        }, function(e) {
                            holdAction({
                                event: e
                            })
                        }.bind(this));
                        _events_engine.default.on($navButton, pointerUpEventName, (function() {
                            that._clearInterval()
                        }));
                        _events_engine.default.on($navButton, pointerOutEventName, (function() {
                            that._clearInterval()
                        }));
                        return navButton
                    },
                    _clearInterval: function() {
                        if (this._holdInterval) {
                            clearInterval(this._holdInterval)
                        }
                    },
                    _updateSelection: function(addedSelection) {
                        this._scrollable && this._scrollable.scrollToElement(this.itemElements().eq(addedSelection[0]))
                    },
                    _visibilityChanged: function(visible) {
                        if (visible) {
                            this._dimensionChanged()
                        }
                    },
                    _dimensionChanged: function() {
                        this._renderScrolling()
                    },
                    _itemSelectHandler: function(e) {
                        if ("single" === this.option("selectionMode") && this.isItemSelected(e.currentTarget)) {
                            return
                        }
                        this.callBase(e)
                    },
                    _refreshActiveDescendant: function() {
                        this.callBase(this._$wrapper)
                    },
                    _clean: function() {
                        this._deferredTemplates = [];
                        this._cleanScrolling();
                        this.callBase()
                    },
                    _toggleTabsVerticalClass(value) {
                        this.$element().toggleClass(TABS_ORIENTATION_CLASS_vertical, value)
                    },
                    _toggleTabsHorizontalClass(value) {
                        this.$element().toggleClass(TABS_ORIENTATION_CLASS_horizontal, value)
                    },
                    _getIndicatorPositionClass: indicatorPosition => INDICATOR_POSITION_CLASS[indicatorPosition],
                    _getIndicatorPosition() {
                        const {
                            _indicatorPosition: _indicatorPosition,
                            rtlEnabled: rtlEnabled
                        } = this.option();
                        if (_indicatorPosition) {
                            return _indicatorPosition
                        }
                        const isVertical = this._isVertical();
                        if (rtlEnabled) {
                            return isVertical ? INDICATOR_POSITION_left : INDICATOR_POSITION_bottom
                        } else {
                            return isVertical ? INDICATOR_POSITION_right : INDICATOR_POSITION_bottom
                        }
                    },
                    _toggleIndicatorPositionClass(indicatorPosition) {
                        const newClass = this._getIndicatorPositionClass(indicatorPosition);
                        this._toggleElementClasses(INDICATOR_POSITION_CLASS, newClass)
                    },
                    _toggleScrollingEnabledClass(scrollingEnabled) {
                        this.$element().toggleClass("dx-tabs-scrolling-enabled", Boolean(scrollingEnabled))
                    },
                    _toggleOrientationClass(orientation) {
                        const isVertical = orientation === ORIENTATION_vertical;
                        this._toggleTabsVerticalClass(isVertical);
                        this._toggleTabsHorizontalClass(!isVertical)
                    },
                    _getTabsIconPositionClass() {
                        const position = this.option("iconPosition");
                        switch (position) {
                            case ICON_POSITION_top:
                                return TABS_ICON_POSITION_CLASS.top;
                            case ICON_POSITION_end:
                                return TABS_ICON_POSITION_CLASS.end;
                            case ICON_POSITION_bottom:
                                return TABS_ICON_POSITION_CLASS.bottom;
                            case ICON_POSITION_start:
                            default:
                                return TABS_ICON_POSITION_CLASS.start
                        }
                    },
                    _toggleIconPositionClass() {
                        const newClass = this._getTabsIconPositionClass();
                        this._toggleElementClasses(TABS_ICON_POSITION_CLASS, newClass)
                    },
                    _toggleStylingModeClass(value) {
                        var _TABS_STYLING_MODE_CL;
                        const newClass = null !== (_TABS_STYLING_MODE_CL = TABS_STYLING_MODE_CLASS[value]) && void 0 !== _TABS_STYLING_MODE_CL ? _TABS_STYLING_MODE_CL : TABS_STYLING_MODE_CLASS.primary;
                        this._toggleElementClasses(TABS_STYLING_MODE_CLASS, newClass)
                    },
                    _toggleElementClasses(classMap, newClass) {
                        for (const key in classMap) {
                            this.$element().removeClass(classMap[key])
                        }
                        this.$element().addClass(newClass)
                    },
                    _toggleFocusedDisabledNextClass(currentIndex, isNextDisabled) {
                        this._itemElements().eq(currentIndex).toggleClass("dx-focused-disabled-next-tab", isNextDisabled)
                    },
                    _toggleFocusedDisabledPrevClass(currentIndex, isPrevDisabled) {
                        this._itemElements().eq(currentIndex).toggleClass("dx-focused-disabled-prev-tab", isPrevDisabled)
                    },
                    _toggleFocusedDisabledClasses(value) {
                        const {
                            selectedIndex: currentIndex
                        } = this.option();
                        this._itemElements().removeClass("dx-focused-disabled-next-tab").removeClass("dx-focused-disabled-prev-tab");
                        const prevItemIndex = currentIndex - 1;
                        const nextItemIndex = currentIndex + 1;
                        const nextFocusedIndex = (0, _renderer.default)(value).index();
                        const isNextDisabled = this._itemElements().eq(nextItemIndex).hasClass("dx-state-disabled");
                        const isPrevDisabled = this._itemElements().eq(prevItemIndex).hasClass("dx-state-disabled");
                        const shouldNextClassBeSetted = isNextDisabled && nextFocusedIndex === nextItemIndex;
                        const shouldPrevClassBeSetted = isPrevDisabled && nextFocusedIndex === prevItemIndex;
                        this._toggleFocusedDisabledNextClass(currentIndex, shouldNextClassBeSetted);
                        this._toggleFocusedDisabledPrevClass(currentIndex, shouldPrevClassBeSetted)
                    },
                    _updateFocusedElement() {
                        const {
                            focusStateEnabled: focusStateEnabled,
                            selectedIndex: selectedIndex
                        } = this.option();
                        const itemElements = this._itemElements();
                        if (focusStateEnabled && itemElements.length) {
                            const selectedItem = itemElements.get(selectedIndex);
                            this.option({
                                focusedElement: selectedItem
                            })
                        }
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "useInkRipple":
                            case "scrollingEnabled":
                                this._toggleScrollingEnabledClass(args.value);
                                this._invalidate();
                                break;
                            case "showNavButtons":
                                this._invalidate();
                                break;
                            case "scrollByContent":
                                this._scrollable && this._scrollable.option(args.name, args.value);
                                break;
                            case "width":
                            case "height":
                                this.callBase(args);
                                this._dimensionChanged();
                                break;
                            case "selectionMode":
                                this._renderMultiple();
                                this.callBase(args);
                                break;
                            case "badgeExpr":
                                this._invalidate();
                                break;
                            case "focusedElement":
                                this._toggleFocusedDisabledClasses(args.value);
                                this.callBase(args);
                                this._scrollToItem(args.value);
                                break;
                            case "rtlEnabled": {
                                this.callBase(args);
                                const indicatorPosition = this._getIndicatorPosition();
                                this._toggleIndicatorPositionClass(indicatorPosition);
                                break
                            }
                            case "orientation": {
                                this._toggleOrientationClass(args.value);
                                const indicatorPosition = this._getIndicatorPosition();
                                this._toggleIndicatorPositionClass(indicatorPosition);
                                if ((0, _window.hasWindow)()) {
                                    this._updateScrollable()
                                }
                                break
                            }
                            case "iconPosition":
                                this._toggleIconPositionClass();
                                if ((0, _window.hasWindow)()) {
                                    this._dimensionChanged()
                                }
                                break;
                            case "stylingMode":
                                this._toggleStylingModeClass(args.value);
                                if ((0, _window.hasWindow)()) {
                                    this._dimensionChanged()
                                }
                                break;
                            case "_indicatorPosition":
                                this._toggleIndicatorPositionClass(args.value);
                                break;
                            case "selectedIndex":
                            case "selectedItem":
                            case "selectedItems":
                                this.callBase(args);
                                this._updateFocusedElement();
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _afterItemElementInserted() {
                        this.callBase();
                        this._deferRenderScrolling()
                    },
                    _afterItemElementDeleted($item, deletedActionArgs) {
                        this.callBase($item, deletedActionArgs);
                        this._renderScrolling()
                    },
                    getScrollable() {
                        return this._scrollable
                    }
                });
                Tabs.ItemClass = _item.default;
                (0, _component_registrator.default)("dxTabs", Tabs);
                var _default = Tabs;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        98897:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/tabs/constants.js ***!
              \******************************************************************/
            function(__unused_webpack_module, exports) {
                exports.TABS_EXPANDED_CLASS = void 0;
                exports.TABS_EXPANDED_CLASS = "dx-tabs-expanded"
            },
        25411:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/tabs/item.js ***!
              \*************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _item = _interopRequireDefault(__webpack_require__( /*! ../collection/item */ 54778));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const TabsItem = _item.default.inherit({
                    _renderWatchers: function() {
                        this.callBase();
                        this._startWatcher("badge", this._renderBadge.bind(this))
                    },
                    _renderBadge: function(badge) {
                        this._$element.children(".dx-badge").remove();
                        if (!badge) {
                            return
                        }
                        const $badge = (0, _renderer.default)("<div>").addClass("dx-tabs-item-badge").addClass("dx-badge").text(badge);
                        this._$element.append($badge)
                    }
                });
                var _default = TabsItem;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        31362:
            /*!***********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/tag_box.js ***!
              \***********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../core/devices */ 20530));
                var _element_data = __webpack_require__( /*! ../core/element_data */ 97906);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../events/core/events_engine */ 55994));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);
                var _selection_filter = __webpack_require__( /*! ../core/utils/selection_filter */ 49601);
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);
                var _dom = __webpack_require__( /*! ../core/utils/dom */ 3532);
                var _element = __webpack_require__( /*! ../core/element */ 6415);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _array = __webpack_require__( /*! ../core/utils/array */ 89386);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../localization/message */ 28109));
                var _index = __webpack_require__( /*! ../events/utils/index */ 39611);
                var _click = __webpack_require__( /*! ../events/click */ 95429);
                var _utils = _interopRequireDefault(__webpack_require__( /*! ./text_box/utils.caret */ 21516));
                var _utils2 = __webpack_require__( /*! ../data/data_source/utils */ 9234);
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../core/guid */ 73176));
                var _select_box = _interopRequireDefault(__webpack_require__( /*! ./select_box */ 78665));
                var _bindable_template = __webpack_require__( /*! ../core/templates/bindable_template */ 93280);
                var _utils3 = __webpack_require__( /*! ./text_box/utils.scroll */ 51203);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./widget/ui.errors */ 96688));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const TagBox = _select_box.default.inherit({
                    _supportedKeys: function() {
                        const parent = this.callBase();
                        const sendToList = options => this._list._keyboardHandler(options);
                        const rtlEnabled = this.option("rtlEnabled");
                        return (0, _extend.extend)({}, parent, {
                            backspace: function(e) {
                                if (!this._isCaretAtTheStart()) {
                                    return
                                }
                                this._processKeyboardEvent(e);
                                this._isTagRemoved = true;
                                const $tagToDelete = this._$focusedTag || this._tagElements().last();
                                if (this._$focusedTag) {
                                    this._moveTagFocus("prev", true)
                                }
                                if (0 === $tagToDelete.length) {
                                    return
                                }
                                this._preserveFocusedTag = true;
                                this._removeTagElement($tagToDelete);
                                delete this._preserveFocusedTag
                            },
                            upArrow: (e, opts) => e.altKey || !this._list ? parent.upArrow.call(this, e) : sendToList(opts),
                            downArrow: (e, opts) => e.altKey || !this._list ? parent.downArrow.call(this, e) : sendToList(opts),
                            del: function(e) {
                                if (!this._$focusedTag || !this._isCaretAtTheStart()) {
                                    return
                                }
                                this._processKeyboardEvent(e);
                                this._isTagRemoved = true;
                                const $tagToDelete = this._$focusedTag;
                                this._moveTagFocus("next", true);
                                this._preserveFocusedTag = true;
                                this._removeTagElement($tagToDelete);
                                delete this._preserveFocusedTag
                            },
                            enter: function(e, options) {
                                const isListItemFocused = this._list && null !== this._list.option("focusedElement");
                                const isCustomItem = this.option("acceptCustomValue") && !isListItemFocused;
                                if (isCustomItem) {
                                    e.preventDefault();
                                    "" !== this._searchValue() && this._customItemAddedHandler(e);
                                    return
                                }
                                if (this.option("opened")) {
                                    this._saveValueChangeEvent(e);
                                    sendToList(options);
                                    e.preventDefault()
                                }
                            },
                            space: function(e, options) {
                                const isOpened = this.option("opened");
                                const isInputActive = this._shouldRenderSearchEvent();
                                if (isOpened && !isInputActive) {
                                    this._saveValueChangeEvent(e);
                                    sendToList(options);
                                    e.preventDefault()
                                }
                            },
                            leftArrow: function(e) {
                                if (!this._isCaretAtTheStart() || this._isEmpty() || this._isEditable() && rtlEnabled && !this._$focusedTag) {
                                    return
                                }
                                e.preventDefault();
                                const direction = rtlEnabled ? "next" : "prev";
                                this._moveTagFocus(direction);
                                !this.option("multiline") && this._scrollContainer(direction)
                            },
                            rightArrow: function(e) {
                                if (!this._isCaretAtTheStart() || this._isEmpty() || this._isEditable() && !rtlEnabled && !this._$focusedTag) {
                                    return
                                }
                                e.preventDefault();
                                const direction = rtlEnabled ? "prev" : "next";
                                this._moveTagFocus(direction);
                                !this.option("multiline") && this._scrollContainer(direction)
                            }
                        })
                    },
                    _processKeyboardEvent: function(e) {
                        e.preventDefault();
                        e.stopPropagation();
                        this._saveValueChangeEvent(e)
                    },
                    _isEmpty: function() {
                        return 0 === this._getValue().length
                    },
                    _updateTagsContainer: function($element) {
                        this._$tagsContainer = $element.addClass("dx-tag-container")
                    },
                    _allowSelectItemByTab: function() {
                        return false
                    },
                    _isCaretAtTheStart: function() {
                        const position = (0, _utils.default)(this._input());
                        return 0 === position.start && 0 === position.end
                    },
                    _updateInputAriaActiveDescendant(id) {
                        this.setAria("activedescendant", id, this._input())
                    },
                    _moveTagFocus: function(direction, clearOnBoundary) {
                        if (!this._$focusedTag) {
                            const tagElements = this._tagElements();
                            this._$focusedTag = "next" === direction ? tagElements.first() : tagElements.last();
                            this._toggleFocusClass(true, this._$focusedTag);
                            this._updateInputAriaActiveDescendant(this._$focusedTag.attr("id"));
                            return
                        }
                        const $nextFocusedTag = this._$focusedTag[direction](".".concat("dx-tag"));
                        if ($nextFocusedTag.length > 0) {
                            this._replaceFocusedTag($nextFocusedTag);
                            this._updateInputAriaActiveDescendant($nextFocusedTag.attr("id"))
                        } else if (clearOnBoundary || "next" === direction && this._isEditable()) {
                            this._clearTagFocus();
                            this._updateInputAriaActiveDescendant()
                        }
                    },
                    _replaceFocusedTag: function($nextFocusedTag) {
                        this._toggleFocusClass(false, this._$focusedTag);
                        this._$focusedTag = $nextFocusedTag;
                        this._toggleFocusClass(true, this._$focusedTag)
                    },
                    _clearTagFocus: function() {
                        if (!this._$focusedTag) {
                            return
                        }
                        this._toggleFocusClass(false, this._$focusedTag);
                        this._updateInputAriaActiveDescendant();
                        delete this._$focusedTag
                    },
                    _focusClassTarget: function($element) {
                        if ($element && $element.length && $element[0] !== this._focusTarget()[0]) {
                            return $element
                        }
                        return this.callBase()
                    },
                    _getLabelContainer: function() {
                        return this._$tagsContainer
                    },
                    _getFieldElement() {
                        return this._input()
                    },
                    _scrollContainer: function(direction) {
                        if (this.option("multiline") || !(0, _window.hasWindow)()) {
                            return
                        }
                        if (!this._$tagsContainer) {
                            return
                        }
                        const scrollPosition = this._getScrollPosition(direction);
                        this._$tagsContainer.scrollLeft(scrollPosition)
                    },
                    _getScrollPosition: function(direction) {
                        if ("start" === direction || "end" === direction) {
                            return this._getBorderPosition(direction)
                        }
                        return this._$focusedTag ? this._getFocusedTagPosition(direction) : this._getBorderPosition("end")
                    },
                    _getBorderPosition: function(direction) {
                        const rtlEnabled = this.option("rtlEnabled");
                        const isScrollLeft = "end" === direction ^ rtlEnabled;
                        const scrollSign = rtlEnabled ? -1 : 1;
                        return isScrollLeft ^ !rtlEnabled ? 0 : scrollSign * (this._$tagsContainer.get(0).scrollWidth - (0, _size.getOuterWidth)(this._$tagsContainer))
                    },
                    _getFocusedTagPosition: function(direction) {
                        const rtlEnabled = this.option("rtlEnabled");
                        const isScrollLeft = "next" === direction ^ rtlEnabled;
                        let {
                            left: scrollOffset
                        } = this._$focusedTag.position();
                        let scrollLeft = this._$tagsContainer.scrollLeft();
                        if (isScrollLeft) {
                            scrollOffset += (0, _size.getOuterWidth)(this._$focusedTag, true) - (0, _size.getOuterWidth)(this._$tagsContainer)
                        }
                        if (isScrollLeft ^ scrollOffset < 0) {
                            scrollLeft += scrollOffset
                        }
                        return scrollLeft
                    },
                    _setNextValue: _common.noop,
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            value: [],
                            showDropDownButton: false,
                            maxFilterQueryLength: 1500,
                            tagTemplate: "tag",
                            selectAllText: _message.default.format("dxList-selectAll"),
                            hideSelectedItems: false,
                            selectedItems: [],
                            selectAllMode: "page",
                            onSelectAllValueChanged: null,
                            maxDisplayedTags: void 0,
                            showMultiTagOnly: true,
                            onMultiTagPreparing: null,
                            multiline: true,
                            useSubmitBehavior: true
                        })
                    },
                    _init: function() {
                        this.callBase();
                        this._selectedItems = [];
                        this._initSelectAllValueChangedAction()
                    },
                    _initActions: function() {
                        this.callBase();
                        this._initMultiTagPreparingAction()
                    },
                    _initMultiTagPreparingAction: function() {
                        this._multiTagPreparingAction = this._createActionByOption("onMultiTagPreparing", {
                            beforeExecute: function(e) {
                                this._multiTagPreparingHandler(e.args[0])
                            }.bind(this),
                            excludeValidators: ["disabled", "readOnly"]
                        })
                    },
                    _multiTagPreparingHandler: function(args) {
                        const {
                            length: selectedCount
                        } = this._getValue();
                        if (!this.option("showMultiTagOnly")) {
                            args.text = _message.default.getFormatter("dxTagBox-moreSelected")(selectedCount - this.option("maxDisplayedTags") + 1)
                        } else {
                            args.text = _message.default.getFormatter("dxTagBox-selected")(selectedCount)
                        }
                    },
                    _initDynamicTemplates: function() {
                        this.callBase();
                        this._templateManager.addDefaultTemplates({
                            tag: new _bindable_template.BindableTemplate(($container, data) => {
                                var _data$text;
                                const $tagContent = (0, _renderer.default)("<div>").addClass("dx-tag-content");
                                (0, _renderer.default)("<span>").text(null !== (_data$text = data.text) && void 0 !== _data$text ? _data$text : data).appendTo($tagContent);
                                (0, _renderer.default)("<div>").addClass("dx-tag-remove-button").appendTo($tagContent);
                                $container.append($tagContent)
                            }, ["text"], this.option("integrationOptions.watchMethod"), {
                                text: this._displayGetter
                            })
                        })
                    },
                    _toggleSubmitElement: function(enabled) {
                        if (enabled) {
                            this._renderSubmitElement();
                            this._setSubmitValue()
                        } else {
                            this._$submitElement && this._$submitElement.remove();
                            delete this._$submitElement
                        }
                    },
                    _renderSubmitElement: function() {
                        if (!this.option("useSubmitBehavior")) {
                            return
                        }
                        this._$submitElement = (0, _renderer.default)("<select>").attr({
                            multiple: "multiple",
                            "aria-label": "Selected items"
                        }).css("display", "none").appendTo(this.$element())
                    },
                    _setSubmitValue: function() {
                        if (!this.option("useSubmitBehavior")) {
                            return
                        }
                        const value = this._getValue();
                        const $options = [];
                        for (let i = 0, n = value.length; i < n; i++) {
                            const useDisplayText = this._shouldUseDisplayValue(value[i]);
                            $options.push((0, _renderer.default)("<option>").val(useDisplayText ? this._displayGetter(value[i]) : value[i]).attr("selected", "selected"))
                        }
                        this._getSubmitElement().empty().append($options)
                    },
                    _initMarkup: function() {
                        this._tagElementsCache = (0, _renderer.default)();
                        const isSingleLineMode = !this.option("multiline");
                        this.$element().addClass("dx-tagbox").toggleClass("dx-tagbox-only-select", !(this.option("searchEnabled") || this.option("acceptCustomValue"))).toggleClass("dx-tagbox-single-line", isSingleLineMode);
                        this.setAria({
                            role: "group",
                            roledescription: "tagbox"
                        }, this.$element());
                        this._initTagTemplate();
                        this.callBase()
                    },
                    _getNewLabelId(actualId, newId, shouldRemove) {
                        if (!actualId) {
                            return newId
                        }
                        if (shouldRemove) {
                            if (actualId === newId) {
                                return
                            }
                            return actualId.split(" ").filter(id => id !== newId).join(" ")
                        }
                        return "".concat(actualId, " ").concat(newId)
                    },
                    _updateElementAria(id, shouldRemove) {
                        const shouldClearLabel = !id;
                        if (shouldClearLabel) {
                            this.setAria("labelledby", void 0, this.$element());
                            return
                        }
                        const labelId = this.$element().attr("aria-labelledby");
                        const newLabelId = this._getNewLabelId(labelId, id, shouldRemove);
                        this.setAria("labelledby", newLabelId, this.$element())
                    },
                    _render: function() {
                        this.callBase();
                        this._renderTagRemoveAction();
                        this._renderSingleLineScroll();
                        this._scrollContainer("start")
                    },
                    _initTagTemplate: function() {
                        this._tagTemplate = this._getTemplateByOption("tagTemplate")
                    },
                    _renderField: function() {
                        const isDefaultFieldTemplate = !(0, _type.isDefined)(this.option("fieldTemplate"));
                        this.$element().toggleClass("dx-tagbox-default-template", isDefaultFieldTemplate).toggleClass("dx-tagbox-custom-template", !isDefaultFieldTemplate);
                        this.callBase()
                    },
                    _renderTagRemoveAction: function() {
                        const tagRemoveAction = this._createAction(this._removeTagHandler.bind(this));
                        const eventName = (0, _index.addNamespace)(_click.name, "dxTagBoxTagRemove");
                        _events_engine.default.off(this._$tagsContainer, eventName);
                        _events_engine.default.on(this._$tagsContainer, eventName, ".".concat("dx-tag-remove-button"), event => {
                            tagRemoveAction({
                                event: event
                            })
                        })
                    },
                    _renderSingleLineScroll: function() {
                        const mouseWheelEvent = (0, _index.addNamespace)("dxmousewheel", this.NAME);
                        const $element = this.$element();
                        const isMultiline = this.option("multiline");
                        _events_engine.default.off($element, mouseWheelEvent);
                        if ("desktop" !== _devices.default.real().deviceType) {
                            this._$tagsContainer && this._$tagsContainer.css("overflowX", isMultiline ? "" : "auto");
                            return
                        }
                        if (isMultiline) {
                            return
                        }
                        _events_engine.default.on($element, mouseWheelEvent, this._tagContainerMouseWheelHandler.bind(this))
                    },
                    _tagContainerMouseWheelHandler: function(e) {
                        const scrollLeft = this._$tagsContainer.scrollLeft();
                        const delta = -.3 * e.delta;
                        if (!(0, _index.isCommandKeyPressed)(e) && (0, _utils3.allowScroll)(this._$tagsContainer, delta, true)) {
                            this._$tagsContainer.scrollLeft(scrollLeft + delta);
                            return false
                        }
                    },
                    _renderEvents: function() {
                        this.callBase();
                        const input = this._input();
                        const namespace = (0, _index.addNamespace)("keydown", this.NAME);
                        _events_engine.default.on(input, namespace, e => {
                            const keyName = (0, _index.normalizeKeyName)(e);
                            if (!this._isControlKey(keyName) && this._isEditable()) {
                                this._clearTagFocus()
                            }
                        })
                    },
                    _popupWrapperClass: function() {
                        return this.callBase() + " dx-tagbox-popup-wrapper"
                    },
                    _renderInput: function() {
                        this.callBase();
                        this._renderPreventBlurOnInputClick()
                    },
                    _renderPreventBlurOnInputClick: function() {
                        const eventName = (0, _index.addNamespace)("mousedown", "dxTagBox");
                        _events_engine.default.off(this._inputWrapper(), eventName);
                        _events_engine.default.on(this._inputWrapper(), eventName, e => {
                            if (e.target !== this._input()[0] && this._isFocused()) {
                                e.preventDefault()
                            }
                        })
                    },
                    _renderInputValueImpl: function() {
                        return this._renderMultiSelect()
                    },
                    _loadInputValue: function() {
                        return (0, _deferred.when)()
                    },
                    _clearTextValue: function() {
                        this._input().val("");
                        this._toggleEmptinessEventHandler();
                        this.option("text", "")
                    },
                    _focusInHandler: function(e) {
                        if (!this._preventNestedFocusEvent(e)) {
                            this._scrollContainer("end")
                        }
                        this.callBase(e)
                    },
                    _renderInputValue: function() {
                        this.option("displayValue", this._searchValue());
                        return this.callBase()
                    },
                    _restoreInputText: function(saveEditingValue) {
                        if (!saveEditingValue) {
                            this._clearTextValue()
                        }
                    },
                    _focusOutHandler: function(e) {
                        if (!this._preventNestedFocusEvent(e)) {
                            this._clearTagFocus();
                            this._scrollContainer("start")
                        }
                        this.callBase(e)
                    },
                    _initSelectAllValueChangedAction: function() {
                        this._selectAllValueChangeAction = this._createActionByOption("onSelectAllValueChanged")
                    },
                    _renderList: function() {
                        this.callBase();
                        this._setListDataSourceFilter()
                    },
                    _canListHaveFocus: function() {
                        return "useButtons" === this.option("applyValueMode")
                    },
                    _listConfig: function() {
                        const selectionMode = this.option("showSelectionControls") ? "all" : "multiple";
                        return (0, _extend.extend)(this.callBase(), {
                            maxFilterLengthInRequest: this.option("maxFilterQueryLength"),
                            selectionMode: selectionMode,
                            selectAllText: this.option("selectAllText"),
                            onSelectAllValueChanged: _ref => {
                                let {
                                    value: value
                                } = _ref;
                                this._selectAllValueChangeAction({
                                    value: value
                                })
                            },
                            selectAllMode: this.option("selectAllMode"),
                            selectedItems: this._selectedItems,
                            onFocusedItemChanged: null
                        })
                    },
                    _renderMultiSelect: function() {
                        const d = new _deferred.Deferred;
                        this._updateTagsContainer(this._$textEditorInputContainer);
                        this._renderInputSize();
                        this._renderTags().done(() => {
                            this._popup && this._popup.refreshPosition();
                            d.resolve()
                        }).fail(d.reject);
                        return d.promise()
                    },
                    _listItemClickHandler: function(e) {
                        !this.option("showSelectionControls") && this._clearTextValue();
                        if ("useButtons" === this.option("applyValueMode")) {
                            return
                        }
                        this.callBase(e);
                        this._saveValueChangeEvent(void 0)
                    },
                    _shouldClearFilter: function() {
                        const shouldClearFilter = this.callBase();
                        const showSelectionControls = this.option("showSelectionControls");
                        return !showSelectionControls && shouldClearFilter
                    },
                    _renderInputSize: function() {
                        const $input = this._input();
                        const value = $input.val();
                        const isEmptyInput = (0, _type.isString)(value) && value;
                        let width = "";
                        let size = "";
                        const canTypeText = this.option("searchEnabled") || this.option("acceptCustomValue");
                        if (isEmptyInput && canTypeText) {
                            const $calculationElement = (0, _dom.createTextElementHiddenCopy)($input, value, {
                                includePaddings: true
                            });
                            $calculationElement.insertAfter($input);
                            width = (0, _size.getOuterWidth)($calculationElement) + 5;
                            $calculationElement.remove()
                        } else if (!value) {
                            size = 1
                        }
                        $input.css("width", width);
                        $input.attr("size", size)
                    },
                    _renderInputSubstitution: function() {
                        this.callBase();
                        this._updateWidgetHeight()
                    },
                    _getValue: function() {
                        return this.option("value") || []
                    },
                    _multiTagRequired: function() {
                        const values = this._getValue();
                        const maxDisplayedTags = this.option("maxDisplayedTags");
                        return (0, _type.isDefined)(maxDisplayedTags) && values.length > maxDisplayedTags
                    },
                    _renderMultiTag: function($input) {
                        const $tag = (0, _renderer.default)("<div>").addClass("dx-tag").addClass("dx-tagbox-multi-tag");
                        const args = {
                            multiTagElement: (0, _element.getPublicElement)($tag),
                            selectedItems: this.option("selectedItems")
                        };
                        this._multiTagPreparingAction(args);
                        if (args.cancel) {
                            return false
                        }
                        $tag.data("dxTagData", args.text);
                        $tag.insertBefore($input);
                        this._tagTemplate.render({
                            model: args.text,
                            container: (0, _element.getPublicElement)($tag)
                        });
                        return $tag
                    },
                    _getFilter: function(creator) {
                        const dataSourceFilter = this._dataController.filter();
                        const filterExpr = creator.getCombinedFilter(this.option("valueExpr"), dataSourceFilter);
                        const filterQueryLength = encodeURI(JSON.stringify(filterExpr)).length;
                        const maxFilterQueryLength = this.option("maxFilterQueryLength");
                        if (filterQueryLength <= maxFilterQueryLength) {
                            return filterExpr
                        }
                        _ui.default.log("W1019", maxFilterQueryLength)
                    },
                    _getFilteredItems: function(values) {
                        var _this$_loadFilteredIt, _this$_list;
                        null === (_this$_loadFilteredIt = this._loadFilteredItemsPromise) || void 0 === _this$_loadFilteredIt ? void 0 : _this$_loadFilteredIt.reject();
                        const creator = new _selection_filter.SelectionFilterCreator(values);
                        const listSelectedItems = null === (_this$_list = this._list) || void 0 === _this$_list ? void 0 : _this$_list.option("selectedItems");
                        const isListItemsLoaded = !!listSelectedItems && this._list._dataController.isLoaded();
                        const selectedItems = listSelectedItems || this.option("selectedItems");
                        const clientFilterFunction = creator.getLocalFilter(this._valueGetter);
                        const filteredItems = selectedItems.filter(clientFilterFunction);
                        const selectedItemsAlreadyLoaded = filteredItems.length === values.length;
                        const d = new _deferred.Deferred;
                        const dataController = this._dataController;
                        if ((!this._isDataSourceChanged || isListItemsLoaded) && selectedItemsAlreadyLoaded) {
                            return d.resolve(filteredItems).promise()
                        } else {
                            const {
                                customQueryParams: customQueryParams,
                                expand: expand,
                                select: select
                            } = dataController.loadOptions();
                            const filter = this._getFilter(creator);
                            dataController.loadFromStore({
                                filter: filter,
                                customQueryParams: customQueryParams,
                                expand: expand,
                                select: select
                            }).done((data, extra) => {
                                this._isDataSourceChanged = false;
                                if (this._disposed) {
                                    d.reject();
                                    return
                                }
                                const {
                                    data: items
                                } = (0, _utils2.normalizeLoadResult)(data, extra);
                                const mappedItems = dataController.applyMapFunction(items);
                                d.resolve(mappedItems.filter(clientFilterFunction))
                            }).fail(d.reject);
                            this._loadFilteredItemsPromise = d;
                            return d.promise()
                        }
                    },
                    _createTagsData: function(values, filteredItems) {
                        const items = [];
                        const cache = {};
                        const isValueExprSpecified = "this" === this._valueGetterExpr();
                        const filteredValues = {};
                        filteredItems.forEach(filteredItem => {
                            const filteredItemValue = isValueExprSpecified ? JSON.stringify(filteredItem) : this._valueGetter(filteredItem);
                            filteredValues[filteredItemValue] = filteredItem
                        });
                        const loadItemPromises = [];
                        values.forEach((value, index) => {
                            const currentItem = filteredValues[isValueExprSpecified ? JSON.stringify(value) : value];
                            if (isValueExprSpecified && !(0, _type.isDefined)(currentItem)) {
                                loadItemPromises.push(this._loadItem(value, cache).always(item => {
                                    const newItem = this._createTagData(item, value);
                                    items.splice(index, 0, newItem)
                                }))
                            } else {
                                const newItem = this._createTagData(currentItem, value);
                                items.splice(index, 0, newItem)
                            }
                        });
                        const d = new _deferred.Deferred;
                        _deferred.when.apply(this, loadItemPromises).always((function() {
                            d.resolve(items)
                        }));
                        return d.promise()
                    },
                    _createTagData: function(item, value) {
                        if ((0, _type.isDefined)(item)) {
                            this._selectedItems.push(item);
                            return item
                        } else {
                            const selectedItem = this.option("selectedItem");
                            const customItem = this._valueGetter(selectedItem) === value ? selectedItem : value;
                            return customItem
                        }
                    },
                    _isGroupedData: function() {
                        return this.option("grouped") && !this._dataController.group()
                    },
                    _getItemsByValues: function(values) {
                        const resultItems = [];
                        values.forEach(function(value) {
                            const item = this._getItemFromPlain(value);
                            if ((0, _type.isDefined)(item)) {
                                resultItems.push(item)
                            }
                        }.bind(this));
                        return resultItems
                    },
                    _getFilteredGroupedItems: function(values) {
                        const selectedItems = new _deferred.Deferred;
                        if (this._filteredGroupedItemsLoadPromise) {
                            this._dataController.cancel(this._filteredGroupedItemsLoadPromise.operationId)
                        }
                        if (!this._dataController.items().length) {
                            this._filteredGroupedItemsLoadPromise = this._dataController.load().done(() => {
                                selectedItems.resolve(this._getItemsByValues(values))
                            }).fail(() => {
                                selectedItems.resolve([])
                            }).always(() => {
                                this._filteredGroupedItemsLoadPromise = void 0
                            })
                        } else {
                            selectedItems.resolve(this._getItemsByValues(values))
                        }
                        return selectedItems.promise()
                    },
                    _loadTagsData: function() {
                        const values = this._getValue();
                        const tagData = new _deferred.Deferred;
                        this._selectedItems = [];
                        const filteredItemsPromise = this._isGroupedData() ? this._getFilteredGroupedItems(values) : this._getFilteredItems(values);
                        filteredItemsPromise.done(filteredItems => {
                            const items = this._createTagsData(values, filteredItems);
                            items.always((function(data) {
                                tagData.resolve(data)
                            }))
                        }).fail(tagData.reject.bind(this));
                        return tagData.promise()
                    },
                    _renderTags: function() {
                        const d = new _deferred.Deferred;
                        let isPlainDataUsed = false;
                        if (this._shouldGetItemsFromPlain(this._valuesToUpdate)) {
                            this._selectedItems = this._getItemsFromPlain(this._valuesToUpdate);
                            if (this._selectedItems.length === this._valuesToUpdate.length) {
                                this._renderTagsImpl(this._selectedItems);
                                isPlainDataUsed = true;
                                d.resolve()
                            }
                        }
                        if (!isPlainDataUsed) {
                            this._loadTagsData().done(items => {
                                if (this._disposed) {
                                    d.reject();
                                    return
                                }
                                this._renderTagsImpl(items);
                                d.resolve()
                            }).fail(d.reject)
                        }
                        return d.promise()
                    },
                    _renderTagsImpl: function(items) {
                        this._renderTagsCore(items);
                        this._renderEmptyState();
                        if (!this._preserveFocusedTag) {
                            this._clearTagFocus()
                        }
                    },
                    _shouldGetItemsFromPlain: function(values) {
                        return values && this._dataController.isLoaded() && values.length <= this._getPlainItems().length
                    },
                    _getItemsFromPlain: function(values) {
                        let selectedItems = this._getSelectedItemsFromList(values);
                        const needFilterPlainItems = 0 === selectedItems.length && values.length > 0 || selectedItems.length < values.length;
                        if (needFilterPlainItems) {
                            const plainItems = this._getPlainItems();
                            selectedItems = this._filterSelectedItems(plainItems, values)
                        }
                        return selectedItems
                    },
                    _getSelectedItemsFromList: function(values) {
                        var _this$_list2;
                        const listSelectedItems = null === (_this$_list2 = this._list) || void 0 === _this$_list2 ? void 0 : _this$_list2.option("selectedItems");
                        let selectedItems = [];
                        if (values.length === (null === listSelectedItems || void 0 === listSelectedItems ? void 0 : listSelectedItems.length)) {
                            selectedItems = this._filterSelectedItems(listSelectedItems, values)
                        }
                        return selectedItems
                    },
                    _filterSelectedItems: function(plainItems, values) {
                        const selectedItems = plainItems.filter(dataItem => {
                            let currentValue;
                            for (let i = 0; i < values.length; i++) {
                                currentValue = values[i];
                                if ((0, _type.isObject)(currentValue)) {
                                    if (this._isValueEquals(dataItem, currentValue)) {
                                        return true
                                    }
                                } else if (this._isValueEquals(this._valueGetter(dataItem), currentValue)) {
                                    return true
                                }
                            }
                            return false
                        }, this);
                        return selectedItems
                    },
                    _integrateInput: function() {
                        this._isInputReady.resolve();
                        this.callBase();
                        const tagsContainer = this.$element().find(".".concat("dx-texteditor-input-container"));
                        this._updateTagsContainer(tagsContainer);
                        this._renderTagRemoveAction()
                    },
                    _renderTagsCore: function(items) {
                        var _this$_isInputReady;
                        null === (_this$_isInputReady = this._isInputReady) || void 0 === _this$_isInputReady ? void 0 : _this$_isInputReady.reject();
                        this._isInputReady = new _deferred.Deferred;
                        this._renderField();
                        this.option("selectedItems", this._selectedItems.slice());
                        this._cleanTags();
                        if (this._input().length > 0) {
                            this._isInputReady.resolve()
                        }(0, _deferred.when)(this._isInputReady).done(() => {
                            this._renderTagsElements(items)
                        })
                    },
                    _renderTagsElements(items) {
                        const $multiTag = this._multiTagRequired() && this._renderMultiTag(this._input());
                        const showMultiTagOnly = this.option("showMultiTagOnly");
                        const maxDisplayedTags = this.option("maxDisplayedTags");
                        items.forEach((item, index) => {
                            if ($multiTag && showMultiTagOnly || $multiTag && !showMultiTagOnly && index - maxDisplayedTags >= -1) {
                                return false
                            }
                            this._renderTag(item, $multiTag || this._input())
                        });
                        if (this._isFocused()) {
                            this._scrollContainer("end")
                        }
                        this._refreshTagElements()
                    },
                    _cleanTags: function() {
                        if (this._multiTagRequired()) {
                            this._tagElements().remove()
                        } else {
                            const $tags = this._tagElements();
                            const values = this._getValue();
                            (0, _iterator.each)($tags, (function(_, tag) {
                                const $tag = (0, _renderer.default)(tag);
                                const tagData = $tag.data("dxTagData");
                                if (!(null !== values && void 0 !== values && values.includes(tagData))) {
                                    $tag.remove()
                                }
                            }))
                        }
                        this._updateElementAria()
                    },
                    _renderEmptyState: function() {
                        const isEmpty = !(this._getValue().length || this._selectedItems.length || this._searchValue());
                        this._toggleEmptiness(isEmpty);
                        this._renderDisplayText()
                    },
                    _renderDisplayText: function() {
                        this._renderInputSize()
                    },
                    _refreshTagElements: function() {
                        this._tagElementsCache = this.$element().find(".".concat("dx-tag"))
                    },
                    _tagElements: function() {
                        return this._tagElementsCache
                    },
                    _applyTagTemplate: function(item, $tag) {
                        this._tagTemplate.render({
                            model: item,
                            container: (0, _element.getPublicElement)($tag)
                        })
                    },
                    _renderTag: function(item, $input) {
                        const value = this._valueGetter(item);
                        if (!(0, _type.isDefined)(value)) {
                            return
                        }
                        let $tag = this._getTag(value);
                        const displayValue = this._displayGetter(item);
                        const itemModel = this._getItemModel(item, displayValue);
                        if ($tag) {
                            if ((0, _type.isDefined)(displayValue)) {
                                $tag.empty();
                                this._applyTagTemplate(itemModel, $tag)
                            }
                            $tag.removeClass("dx-tag-custom");
                            this._updateElementAria($tag.attr("id"))
                        } else {
                            const tagId = "dx-".concat(new _guid.default);
                            $tag = this._createTag(value, $input, tagId);
                            if ((0, _type.isDefined)(item)) {
                                this._applyTagTemplate(itemModel, $tag)
                            } else {
                                $tag.addClass("dx-tag-custom");
                                this._applyTagTemplate(value, $tag)
                            }
                            this._updateElementAria(tagId)
                        }
                    },
                    _getItemModel: function(item, displayValue) {
                        if ((0, _type.isObject)(item) && (0, _type.isDefined)(displayValue)) {
                            return item
                        } else {
                            return (0, _common.ensureDefined)(displayValue, "")
                        }
                    },
                    _getTag: function(value) {
                        const $tags = this._tagElements();
                        const tagsLength = $tags.length;
                        let result = false;
                        for (let i = 0; i < tagsLength; i++) {
                            const $tag = $tags[i];
                            const tagData = (0, _element_data.data)($tag, "dxTagData");
                            if (value === tagData || (0, _common.equalByValue)(value, tagData)) {
                                result = (0, _renderer.default)($tag);
                                break
                            }
                        }
                        return result
                    },
                    _createTag: function(value, $input, tagId) {
                        return (0, _renderer.default)("<div>").attr("id", tagId).addClass("dx-tag").data("dxTagData", value).insertBefore($input)
                    },
                    _toggleEmptinessEventHandler: function() {
                        this._toggleEmptiness(!this._getValue().length && !this._searchValue().length)
                    },
                    _customItemAddedHandler: function(e) {
                        this.callBase(e);
                        this._clearTextValue()
                    },
                    _removeTagHandler: function(args) {
                        const e = args.event;
                        e.stopPropagation();
                        this._saveValueChangeEvent(e);
                        const $tag = (0, _renderer.default)(e.target).closest(".".concat("dx-tag"));
                        this._removeTagElement($tag)
                    },
                    _removeTagElement: function($tag) {
                        if ($tag.hasClass("dx-tagbox-multi-tag")) {
                            if (!this.option("showMultiTagOnly")) {
                                this.option("value", this._getValue().slice(0, this.option("maxDisplayedTags")))
                            } else {
                                this.clear()
                            }
                            return
                        }
                        const itemValue = $tag.data("dxTagData");
                        const itemId = $tag.attr("id");
                        this._removeTagWithUpdate(itemValue);
                        this._updateElementAria(itemId, true);
                        this._refreshTagElements()
                    },
                    _updateField: _common.noop,
                    _removeTagWithUpdate: function(itemValue) {
                        const value = this._getValue().slice();
                        this._removeTag(value, itemValue);
                        this.option("value", value);
                        this.option("selectedItem", null);
                        if (0 === value.length) {
                            this._clearTagFocus()
                        }
                    },
                    _getCurrentValue: function() {
                        return this._lastValue()
                    },
                    _selectionChangeHandler: function(e) {
                        if ("useButtons" === this.option("applyValueMode")) {
                            return
                        }
                        const value = this._getValue().slice();
                        (0, _iterator.each)(e.removedItems || [], (_, removedItem) => {
                            this._removeTag(value, this._valueGetter(removedItem))
                        });
                        (0, _iterator.each)(e.addedItems || [], (_, addedItem) => {
                            this._addTag(value, this._valueGetter(addedItem))
                        });
                        this._updateWidgetHeight();
                        if (!(0, _common.equalByValue)(this._list.option("selectedItemKeys"), this.option("value"))) {
                            const listSelectionChangeEvent = this._list._getSelectionChangeEvent();
                            listSelectionChangeEvent && this._saveValueChangeEvent(listSelectionChangeEvent);
                            this.option("value", value)
                        }
                        this._list._saveSelectionChangeEvent(void 0)
                    },
                    _removeTag: function(value, item) {
                        const index = this._valueIndex(item, value);
                        if (index >= 0) {
                            value.splice(index, 1)
                        }
                    },
                    _addTag: function(value, item) {
                        const index = this._valueIndex(item);
                        if (index < 0) {
                            value.push(item)
                        }
                    },
                    _fieldRenderData: function() {
                        return this._selectedItems.slice()
                    },
                    _completeSelection: function(value) {
                        if (!this.option("showSelectionControls")) {
                            this._setValue(value)
                        }
                    },
                    _setValue: function(value) {
                        if (null === value) {
                            return
                        }
                        const useButtons = "useButtons" === this.option("applyValueMode");
                        const valueIndex = this._valueIndex(value);
                        const values = (useButtons ? this._list.option("selectedItemKeys") : this._getValue()).slice();
                        if (valueIndex >= 0) {
                            values.splice(valueIndex, 1)
                        } else {
                            values.push(value)
                        }
                        if ("useButtons" === this.option("applyValueMode")) {
                            this._list.option("selectedItemKeys", values)
                        } else {
                            this.option("value", values)
                        }
                    },
                    _isSelectedValue: function(value, cache) {
                        return this._valueIndex(value, null, cache) > -1
                    },
                    _valueIndex: function(value, values, cache) {
                        let result = -1;
                        if (cache && "object" !== typeof value) {
                            if (!cache.indexByValues) {
                                cache.indexByValues = {};
                                values = values || this._getValue();
                                values.forEach((function(value, index) {
                                    cache.indexByValues[value] = index
                                }))
                            }
                            if (value in cache.indexByValues) {
                                return cache.indexByValues[value]
                            }
                        }
                        values = values || this._getValue();
                        (0, _iterator.each)(values, (index, selectedValue) => {
                            if (this._isValueEquals(value, selectedValue)) {
                                result = index;
                                return false
                            }
                        });
                        return result
                    },
                    _lastValue: function() {
                        const values = this._getValue();
                        const lastValue = values[values.length - 1];
                        return null !== lastValue && void 0 !== lastValue ? lastValue : null
                    },
                    _shouldRenderSearchEvent: function() {
                        return this.option("searchEnabled") || this.option("acceptCustomValue")
                    },
                    _searchHandler: function(e) {
                        if (this.option("searchEnabled") && !!e && !this._isTagRemoved) {
                            this.callBase(arguments);
                            this._setListDataSourceFilter()
                        }
                        this._updateWidgetHeight();
                        delete this._isTagRemoved
                    },
                    _updateWidgetHeight: function() {
                        const element = this.$element();
                        const originalHeight = (0, _size.getHeight)(element);
                        this._renderInputSize();
                        const currentHeight = (0, _size.getHeight)(element);
                        if (this._popup && this.option("opened") && this._isEditable() && currentHeight !== originalHeight) {
                            this._popup.repaint()
                        }
                    },
                    _refreshSelected: function() {
                        var _this$_list3;
                        (null === (_this$_list3 = this._list) || void 0 === _this$_list3 ? void 0 : _this$_list3.getDataSource()) && this._list.option("selectedItems", this._selectedItems)
                    },
                    _resetListDataSourceFilter: function() {
                        const dataController = this._dataController;
                        delete this._userFilter;
                        dataController.filter(null);
                        dataController.reload()
                    },
                    _setListDataSourceFilter: function() {
                        if (!this.option("hideSelectedItems") || !this._list) {
                            return
                        }
                        const dataController = this._dataController;
                        const valueGetterExpr = this._valueGetterExpr();
                        if ((0, _type.isString)(valueGetterExpr) && "this" !== valueGetterExpr) {
                            const filter = this._dataSourceFilterExpr();
                            if (void 0 === this._userFilter) {
                                this._userFilter = dataController.filter() || null
                            }
                            this._userFilter && filter.push(this._userFilter);
                            filter.length ? dataController.filter(filter) : dataController.filter(null)
                        } else {
                            dataController.filter(this._dataSourceFilterFunction.bind(this))
                        }
                        dataController.load()
                    },
                    _dataSourceFilterExpr: function() {
                        const filter = [];
                        this._getValue().forEach(value => filter.push(["!", [this._valueGetterExpr(), value]]));
                        return filter
                    },
                    _dataSourceFilterFunction: function(itemData) {
                        const itemValue = this._valueGetter(itemData);
                        let result = true;
                        (0, _iterator.each)(this._getValue(), (index, value) => {
                            if (this._isValueEquals(value, itemValue)) {
                                result = false;
                                return false
                            }
                        });
                        return result
                    },
                    _dataSourceChangedHandler: function() {
                        this._isDataSourceChanged = true;
                        this.callBase.apply(this, arguments)
                    },
                    _applyButtonHandler: function(args) {
                        this._saveValueChangeEvent(args.event);
                        this.option("value", this._getSortedListValues());
                        this._clearTextValue();
                        this.callBase();
                        this._cancelSearchIfNeed()
                    },
                    _getSortedListValues: function() {
                        const listValues = this._getListValues();
                        const currentValue = this.option("value") || [];
                        const existedItems = listValues.length ? (0, _array.getIntersection)(currentValue, listValues) : [];
                        const newItems = existedItems.length ? (0, _array.removeDuplicates)(listValues, currentValue) : listValues;
                        return existedItems.concat(newItems)
                    },
                    _getListValues: function() {
                        if (!this._list) {
                            return []
                        }
                        return this._getPlainItems(this._list.option("selectedItems")).map(item => this._valueGetter(item))
                    },
                    _setListDataSource: function() {
                        const currentValue = this._getValue();
                        this.callBase();
                        if (currentValue !== this.option("value")) {
                            this.option("value", currentValue)
                        }
                        this._refreshSelected()
                    },
                    _renderOpenedState: function() {
                        this.callBase();
                        if ("useButtons" === this.option("applyValueMode") && !this.option("opened")) {
                            this._refreshSelected()
                        }
                    },
                    clear: function() {
                        this._restoreInputText();
                        const defaultValue = this._getDefaultOptions().value;
                        const currentValue = this.option("value");
                        if (defaultValue && 0 === defaultValue.length && currentValue && defaultValue.length === currentValue.length) {
                            return
                        }
                        this.callBase()
                    },
                    _clean: function() {
                        this.callBase();
                        delete this._defaultTagTemplate;
                        delete this._valuesToUpdate;
                        delete this._tagTemplate
                    },
                    _getSelectedItemsDifference(newItems, previousItems) {
                        if (!newItems.length) {
                            return {
                                addedItems: [],
                                removedItems: previousItems.slice()
                            }
                        }
                        if (!previousItems.length) {
                            return {
                                addedItems: newItems.slice(),
                                removedItems: []
                            }
                        }
                        const previousItemsValuesMap = previousItems.reduce((map, item) => {
                            const value = this._valueGetter(item);
                            map[value] = item;
                            return map
                        }, {});
                        const addedItems = [];
                        newItems.forEach(item => {
                            const value = this._valueGetter(item);
                            if (!previousItemsValuesMap[value]) {
                                addedItems.push(item)
                            }
                            delete previousItemsValuesMap[value]
                        });
                        return {
                            addedItems: addedItems,
                            removedItems: Object.values(previousItemsValuesMap)
                        }
                    },
                    _optionChanged: function(args) {
                        const {
                            name: name,
                            value: value,
                            previousValue: previousValue
                        } = args;
                        switch (name) {
                            case "onSelectAllValueChanged":
                                this._initSelectAllValueChangedAction();
                                break;
                            case "onMultiTagPreparing":
                                this._initMultiTagPreparingAction();
                                this._renderTags();
                                break;
                            case "hideSelectedItems":
                                if (value) {
                                    this._setListDataSourceFilter()
                                } else {
                                    this._resetListDataSourceFilter()
                                }
                                break;
                            case "useSubmitBehavior":
                                this._toggleSubmitElement(value);
                                break;
                            case "displayExpr":
                                this.callBase(args);
                                this._initTemplates();
                                this._invalidate();
                                break;
                            case "tagTemplate":
                                this._initTagTemplate();
                                this._invalidate();
                                break;
                            case "selectAllText":
                                this._setListOption("selectAllText", this.option("selectAllText"));
                                break;
                            case "readOnly":
                            case "disabled":
                                this.callBase(args);
                                !value && this._refreshEvents();
                                break;
                            case "value":
                                this._valuesToUpdate = value;
                                this.callBase(args);
                                this._valuesToUpdate = void 0;
                                this._setListDataSourceFilter();
                                break;
                            case "maxDisplayedTags":
                            case "showMultiTagOnly":
                                this._renderTags();
                                break;
                            case "selectAllMode":
                                this._setListOption(name, value);
                                break;
                            case "selectedItem":
                                break;
                            case "selectedItems":
                                this._selectionChangedAction(this._getSelectedItemsDifference(value, previousValue));
                                break;
                            case "multiline":
                                this.$element().toggleClass("dx-tagbox-single-line", !value);
                                this._renderSingleLineScroll();
                                break;
                            case "maxFilterQueryLength":
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _getActualSearchValue: function() {
                        return this.callBase() || this._searchValue()
                    },
                    _popupHidingHandler: function() {
                        this.callBase();
                        this._clearFilter()
                    }
                });
                (0, _component_registrator.default)("dxTagBox", TagBox);
                var _default = TagBox;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        51237:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/text_area.js ***!
              \*************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../events/core/events_engine */ 55994));
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _index = __webpack_require__( /*! ../events/utils/index */ 39611);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../events/pointer */ 93786));
                var _emitterGesture = _interopRequireDefault(__webpack_require__( /*! ../events/gesture/emitter.gesture.scroll */ 37334));
                var _size = __webpack_require__( /*! ../core/utils/size */ 58664);
                var _utils = __webpack_require__( /*! ./text_box/utils.scroll */ 51203);
                var _text_box = _interopRequireDefault(__webpack_require__( /*! ./text_box */ 29837));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const TextArea = _text_box.default.inherit({
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            spellcheck: true,
                            minHeight: void 0,
                            maxHeight: void 0,
                            autoResizeEnabled: false
                        })
                    },
                    _initMarkup: function() {
                        this.$element().addClass("dx-textarea");
                        this.callBase();
                        this.setAria("multiline", "true")
                    },
                    _renderContentImpl: function() {
                        this._updateInputHeight();
                        this.callBase()
                    },
                    _renderInput: function() {
                        this.callBase();
                        this._renderScrollHandler()
                    },
                    _createInput: function() {
                        const $input = (0, _renderer.default)("<textarea>");
                        this._applyInputAttributes($input, this.option("inputAttr"));
                        this._updateInputAutoResizeAppearance($input);
                        return $input
                    },
                    _setInputMinHeight: _common.noop,
                    _renderScrollHandler: function() {
                        this._eventY = 0;
                        const $input = this._input();
                        const initScrollData = (0, _utils.prepareScrollData)($input, true);
                        _events_engine.default.on($input, (0, _index.addNamespace)(_emitterGesture.default.init, this.NAME), initScrollData, _common.noop);
                        _events_engine.default.on($input, (0, _index.addNamespace)(_pointer.default.down, this.NAME), this._pointerDownHandler.bind(this));
                        _events_engine.default.on($input, (0, _index.addNamespace)(_pointer.default.move, this.NAME), this._pointerMoveHandler.bind(this))
                    },
                    _pointerDownHandler: function(e) {
                        this._eventY = (0, _index.eventData)(e).y
                    },
                    _pointerMoveHandler: function(e) {
                        const currentEventY = (0, _index.eventData)(e).y;
                        const delta = this._eventY - currentEventY;
                        if ((0, _utils.allowScroll)(this._input(), delta)) {
                            e.isScrollingEvent = true;
                            e.stopPropagation()
                        }
                        this._eventY = currentEventY
                    },
                    _renderDimensions: function() {
                        const $element = this.$element();
                        const element = $element.get(0);
                        const width = this._getOptionValue("width", element);
                        const height = this._getOptionValue("height", element);
                        const minHeight = this.option("minHeight");
                        const maxHeight = this.option("maxHeight");
                        $element.css({
                            minHeight: void 0 !== minHeight ? minHeight : "",
                            maxHeight: void 0 !== maxHeight ? maxHeight : "",
                            width: width,
                            height: height
                        })
                    },
                    _resetDimensions: function() {
                        this.$element().css({
                            height: "",
                            minHeight: "",
                            maxHeight: ""
                        })
                    },
                    _renderEvents: function() {
                        if (this.option("autoResizeEnabled")) {
                            _events_engine.default.on(this._input(), (0, _index.addNamespace)("input paste", this.NAME), this._updateInputHeight.bind(this))
                        }
                        this.callBase()
                    },
                    _refreshEvents: function() {
                        _events_engine.default.off(this._input(), (0, _index.addNamespace)("input paste", this.NAME));
                        this.callBase()
                    },
                    _getHeightDifference($input) {
                        return (0, _size.getVerticalOffsets)(this._$element.get(0), false) + (0, _size.getVerticalOffsets)(this._$textEditorContainer.get(0), false) + (0, _size.getVerticalOffsets)(this._$textEditorInputContainer.get(0), false) + (0, _size.getElementBoxParams)("height", (0, _window.getWindow)().getComputedStyle($input.get(0))).margin
                    },
                    _updateInputHeight: function() {
                        if (!(0, _window.hasWindow)()) {
                            return
                        }
                        const $input = this._input();
                        const height = this.option("height");
                        const autoHeightResizing = void 0 === height && this.option("autoResizeEnabled");
                        const shouldCalculateInputHeight = autoHeightResizing || void 0 === height && this.option("minHeight");
                        if (!shouldCalculateInputHeight) {
                            $input.css("height", "");
                            return
                        }
                        this._resetDimensions();
                        this._$element.css("height", (0, _size.getOuterHeight)(this._$element));
                        $input.css("height", 0);
                        const heightDifference = this._getHeightDifference($input);
                        this._renderDimensions();
                        const minHeight = this._getBoundaryHeight("minHeight");
                        const maxHeight = this._getBoundaryHeight("maxHeight");
                        let inputHeight = $input[0].scrollHeight;
                        if (void 0 !== minHeight) {
                            inputHeight = Math.max(inputHeight, minHeight - heightDifference)
                        }
                        if (void 0 !== maxHeight) {
                            const adjustedMaxHeight = maxHeight - heightDifference;
                            const needScroll = inputHeight > adjustedMaxHeight;
                            inputHeight = Math.min(inputHeight, adjustedMaxHeight);
                            this._updateInputAutoResizeAppearance($input, !needScroll)
                        }
                        $input.css("height", inputHeight);
                        if (autoHeightResizing) {
                            this._$element.css("height", "auto")
                        }
                    },
                    _getBoundaryHeight: function(optionName) {
                        const boundaryValue = this.option(optionName);
                        if ((0, _type.isDefined)(boundaryValue)) {
                            return "number" === typeof boundaryValue ? boundaryValue : (0, _size.parseHeight)(boundaryValue, this.$element().get(0).parentElement, this._$element.get(0))
                        }
                    },
                    _renderInputType: _common.noop,
                    _visibilityChanged: function(visible) {
                        if (visible) {
                            this._updateInputHeight()
                        }
                    },
                    _updateInputAutoResizeAppearance: function($input, isAutoResizeEnabled) {
                        if ($input) {
                            const autoResizeEnabled = (0, _common.ensureDefined)(isAutoResizeEnabled, this.option("autoResizeEnabled"));
                            $input.toggleClass("dx-texteditor-input-auto-resize", autoResizeEnabled)
                        }
                    },
                    _dimensionChanged: function() {
                        if (this.option("visible")) {
                            this._updateInputHeight()
                        }
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "autoResizeEnabled":
                                this._updateInputAutoResizeAppearance(this._input(), args.value);
                                this._refreshEvents();
                                this._updateInputHeight();
                                break;
                            case "value":
                            case "height":
                                this.callBase(args);
                                this._updateInputHeight();
                                break;
                            case "minHeight":
                            case "maxHeight":
                                this._renderDimensions();
                                this._updateInputHeight();
                                break;
                            case "visible":
                                this.callBase(args);
                                args.value && this._updateInputHeight();
                                break;
                            default:
                                this.callBase(args)
                        }
                    }
                });
                (0, _component_registrator.default)("dxTextArea", TextArea);
                var _default = TextArea;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        29837:
            /*!************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/text_box.js ***!
              \************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _text_box = (obj = __webpack_require__( /*! ./text_box/text_box */ 98356), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _text_box.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        98356:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/text_box/text_box.js ***!
              \*********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./ui.text_editor */ 63513));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();
                const ignoreKeys = ["backspace", "tab", "enter", "pageUp", "pageDown", "end", "home", "leftArrow", "rightArrow", "downArrow", "upArrow", "del"];
                const TextBox = _ui.default.inherit({
                    ctor: function(element, options) {
                        if (options) {
                            this._showClearButton = options.showClearButton
                        }
                        this.callBase.apply(this, arguments)
                    },
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            value: "",
                            mode: "text",
                            maxLength: null
                        })
                    },
                    _initMarkup: function() {
                        this.$element().addClass("dx-textbox");
                        this.callBase();
                        this.setAria("role", "textbox")
                    },
                    _renderInputType: function() {
                        this.callBase();
                        this._renderSearchMode()
                    },
                    _useTemplates: function() {
                        return false
                    },
                    _renderProps: function() {
                        this.callBase();
                        this._toggleMaxLengthProp()
                    },
                    _toggleMaxLengthProp: function() {
                        const maxLength = this._getMaxLength();
                        if (maxLength && maxLength > 0) {
                            this._input().attr("maxLength", maxLength)
                        } else {
                            this._input().removeAttr("maxLength")
                        }
                    },
                    _renderSearchMode: function() {
                        const $element = this._$element;
                        if ("search" === this.option("mode")) {
                            $element.addClass("dx-searchbox");
                            this._renderSearchIcon();
                            if (void 0 === this._showClearButton) {
                                this._showClearButton = this.option("showClearButton");
                                this.option("showClearButton", true)
                            }
                        } else {
                            $element.removeClass("dx-searchbox");
                            this._$searchIcon && this._$searchIcon.remove();
                            this.option("showClearButton", void 0 === this._showClearButton ? this.option("showClearButton") : this._showClearButton);
                            delete this._showClearButton
                        }
                    },
                    _renderSearchIcon: function() {
                        const $searchIcon = (0, _renderer.default)("<div>").addClass("dx-icon").addClass("dx-icon-search");
                        $searchIcon.prependTo(this._input().parent());
                        this._$searchIcon = $searchIcon
                    },
                    _getLabelContainerWidth: function() {
                        if (this._$searchIcon) {
                            const $inputContainer = this._input().parent();
                            return (0, _size.getWidth)($inputContainer) - this._getLabelBeforeWidth()
                        }
                        return this.callBase()
                    },
                    _getLabelBeforeWidth: function() {
                        let labelBeforeWidth = this.callBase();
                        if (this._$searchIcon) {
                            labelBeforeWidth += (0, _size.getOuterWidth)(this._$searchIcon)
                        }
                        return labelBeforeWidth
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "maxLength":
                                this._toggleMaxLengthProp();
                                break;
                            case "mode":
                                this.callBase(args);
                                this._updateLabelWidth();
                                break;
                            case "mask":
                                this.callBase(args);
                                this._toggleMaxLengthProp();
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _onKeyDownCutOffHandler: function(e) {
                        const actualMaxLength = this._getMaxLength();
                        if (actualMaxLength && !e.ctrlKey && !this._hasSelection()) {
                            const $input = (0, _renderer.default)(e.target);
                            const key = (0, _index.normalizeKeyName)(e);
                            this._cutOffExtraChar($input);
                            return $input.val().length < actualMaxLength || ignoreKeys.includes(key) || "" !== window.getSelection().toString()
                        } else {
                            return true
                        }
                    },
                    _onChangeCutOffHandler: function(e) {
                        const $input = (0, _renderer.default)(e.target);
                        if (this.option("maxLength")) {
                            this._cutOffExtraChar($input)
                        }
                    },
                    _cutOffExtraChar: function($input) {
                        const actualMaxLength = this._getMaxLength();
                        const textInput = $input.val();
                        if (actualMaxLength && textInput.length > actualMaxLength) {
                            $input.val(textInput.substr(0, actualMaxLength))
                        }
                    },
                    _getMaxLength: function() {
                        const isMaskSpecified = !!this.option("mask");
                        return isMaskSpecified ? null : this.option("maxLength")
                    }
                });
                (0, _component_registrator.default)("dxTextBox", TextBox);
                var _default = TextBox;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        11483:
            /*!************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/text_box/texteditor_button_collection/button.js ***!
              \************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = (obj = __webpack_require__( /*! ../../../core/renderer */ 68374), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                let TextEditorButton = function() {
                    function TextEditorButton(name, editor, options) {
                        this.instance = null;
                        this.$container = null;
                        this.$placeMarker = null;
                        this.editor = editor;
                        this.name = name;
                        this.options = options || {}
                    }
                    var _proto = TextEditorButton.prototype;
                    _proto._addPlaceMarker = function($container) {
                        this.$placeMarker = (0, _renderer.default)("<div>").appendTo($container)
                    };
                    _proto._addToContainer = function($element) {
                        const {
                            $placeMarker: $placeMarker,
                            $container: $container
                        } = this;
                        $placeMarker ? $placeMarker.replaceWith($element) : $element.appendTo($container)
                    };
                    _proto._attachEvents = function() {
                        throw "Not implemented"
                    };
                    _proto._create = function() {
                        throw "Not implemented"
                    };
                    _proto._isRendered = function() {
                        return !!this.instance
                    };
                    _proto._isVisible = function() {
                        const {
                            editor: editor,
                            options: options
                        } = this;
                        return options.visible || !editor.option("readOnly")
                    };
                    _proto._isDisabled = function() {
                        throw "Not implemented"
                    };
                    _proto._shouldRender = function() {
                        return this._isVisible() && !this._isRendered()
                    };
                    _proto.dispose = function() {
                        const {
                            instance: instance,
                            $placeMarker: $placeMarker
                        } = this;
                        if (instance) {
                            instance.dispose ? instance.dispose() : instance.remove();
                            this.instance = null
                        }
                        $placeMarker && $placeMarker.remove()
                    };
                    _proto.render = function() {
                        let $container = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.$container;
                        this.$container = $container;
                        if (this._isVisible()) {
                            const {
                                instance: instance,
                                $element: $element
                            } = this._create();
                            this.instance = instance;
                            this._attachEvents(instance, $element)
                        } else {
                            this._addPlaceMarker($container)
                        }
                    };
                    _proto.update = function() {
                        if (this._shouldRender()) {
                            this.render()
                        }
                        return !!this.instance
                    };
                    return TextEditorButton
                }();
                exports.default = TextEditorButton;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        44470:
            /*!************************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/text_box/texteditor_button_collection/custom.js ***!
              \************************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _button = _interopRequireDefault(__webpack_require__( /*! ./button */ 11483));
                var _button2 = _interopRequireDefault(__webpack_require__( /*! ../../button */ 63008));
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../events/core/events_engine */ 55994));
                var _hover = __webpack_require__( /*! ../../../events/hover */ 24028);
                var _click = __webpack_require__( /*! ../../../events/click */ 95429);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let CustomButton = function(_TextEditorButton) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(CustomButton, _TextEditorButton);

                    function CustomButton() {
                        return _TextEditorButton.apply(this, arguments) || this
                    }
                    var _proto = CustomButton.prototype;
                    _proto._attachEvents = function(instance, $element) {
                        const {
                            editor: editor
                        } = this;
                        _events_engine.default.on($element, _hover.start, () => {
                            editor.$element().addClass("dx-custom-button-hovered")
                        });
                        _events_engine.default.on($element, _hover.end, () => {
                            editor.$element().removeClass("dx-custom-button-hovered")
                        });
                        _events_engine.default.on($element, _click.name, e => {
                            e.stopPropagation()
                        })
                    };
                    _proto._create = function() {
                        const {
                            editor: editor
                        } = this;
                        const $element = (0, _renderer.default)("<div>");
                        this._addToContainer($element);
                        const instance = editor._createComponent($element, _button2.default, (0, _extend.extend)({}, this.options, {
                            ignoreParentReadOnly: true,
                            disabled: this._isDisabled(),
                            integrationOptions: this._prepareIntegrationOptions(editor)
                        }));
                        return {
                            $element: $element,
                            instance: instance
                        }
                    };
                    _proto._prepareIntegrationOptions = function(editor) {
                        return (0, _extend.extend)({}, editor.option("integrationOptions"), {
                            skipTemplates: ["content"]
                        })
                    };
                    _proto.update = function() {
                        const isUpdated = _TextEditorButton.prototype.update.call(this);
                        if (this.instance) {
                            this.instance.option("disabled", this._isDisabled())
                        }
                        return isUpdated
                    };
                    _proto._isVisible = function() {
                        const {
                            editor: editor
                        } = this;
                        return editor.option("visible")
                    };
                    _proto._isDisabled = function() {
                        const isDefinedByUser = void 0 !== this.options.disabled;
                        if (isDefinedByUser) {
                            return this.instance ? this.instance.option("disabled") : this.options.disabled
                        } else {
                            return this.editor.option("readOnly")
                        }
                    };
                    return CustomButton
                }(_button.default);
                exports.default = CustomButton;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        91202:
            /*!***********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/text_box/texteditor_button_collection/index.js ***!
              \***********************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _custom = _interopRequireDefault(__webpack_require__( /*! ./custom */ 44470));
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../widget/ui.errors */ 96688));

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

                function checkNamesUniqueness(existingNames, newName) {
                    if (-1 !== existingNames.indexOf(newName)) {
                        throw _ui.default.Error("E1055", newName)
                    }
                    existingNames.push(newName)
                }
                let TextEditorButtonCollection = function() {
                    function TextEditorButtonCollection(editor, defaultButtonsInfo) {
                        this.buttons = [];
                        this.defaultButtonsInfo = defaultButtonsInfo;
                        this.editor = editor
                    }
                    var _proto = TextEditorButtonCollection.prototype;
                    _proto._compileButtonInfo = function(buttons) {
                        const names = [];
                        return buttons.map(button => {
                            const isStringButton = "string" === typeof button;
                            if (!isStringButton) {
                                ! function(buttonInfo) {
                                    (() => {
                                        if (!buttonInfo || "object" !== typeof buttonInfo || Array.isArray(buttonInfo)) {
                                            throw _ui.default.Error("E1053")
                                        }
                                    })();
                                    (() => {
                                        if (!("name" in buttonInfo)) {
                                            throw _ui.default.Error("E1054")
                                        }
                                    })();
                                    (() => {
                                        const {
                                            name: name
                                        } = buttonInfo;
                                        if ("string" !== typeof name) {
                                            throw _ui.default.Error("E1055")
                                        }
                                    })();
                                    (() => {
                                        const {
                                            location: location
                                        } = buttonInfo;
                                        if ("location" in buttonInfo && "after" !== location && "before" !== location) {
                                            buttonInfo.location = "after"
                                        }
                                    })()
                                }(button)
                            }
                            const isDefaultButton = isStringButton || (name = button.name, predefinedButtonsInfo = this.defaultButtonsInfo, !!predefinedButtonsInfo.find(info => info.name === name));
                            var name, predefinedButtonsInfo;
                            if (isDefaultButton) {
                                const defaultButtonInfo = this.defaultButtonsInfo.find(_ref => {
                                    let {
                                        name: name
                                    } = _ref;
                                    return name === button || name === button.name
                                });
                                if (!defaultButtonInfo) {
                                    throw _ui.default.Error("E1056", this.editor.NAME, button)
                                }
                                checkNamesUniqueness(names, button);
                                return defaultButtonInfo
                            } else {
                                const {
                                    name: name
                                } = button;
                                checkNamesUniqueness(names, name);
                                return (0, _extend.extend)(button, {
                                    Ctor: _custom.default
                                })
                            }
                        })
                    };
                    _proto._createButton = function(buttonsInfo) {
                        const {
                            Ctor: Ctor,
                            options: options,
                            name: name
                        } = buttonsInfo;
                        const button = new Ctor(name, this.editor, options);
                        this.buttons.push(button);
                        return button
                    };
                    _proto._renderButtons = function(buttons, $container, targetLocation) {
                        let $buttonsContainer = null;
                        const buttonsInfo = buttons ? this._compileButtonInfo(buttons) : this.defaultButtonsInfo;
                        buttonsInfo.forEach(buttonsInfo => {
                            const {
                                location: location = "after"
                            } = buttonsInfo;
                            if (location === targetLocation) {
                                this._createButton(buttonsInfo).render((() => {
                                    $buttonsContainer = $buttonsContainer || (0, _renderer.default)("<div>").addClass("dx-texteditor-buttons-container");
                                    "before" === targetLocation ? $container.prepend($buttonsContainer) : $container.append($buttonsContainer);
                                    return $buttonsContainer
                                })())
                            }
                        });
                        return $buttonsContainer
                    };
                    _proto.clean = function() {
                        this.buttons.forEach(button => button.dispose());
                        this.buttons = []
                    };
                    _proto.getButton = function(buttonName) {
                        const button = this.buttons.find(_ref2 => {
                            let {
                                name: name
                            } = _ref2;
                            return name === buttonName
                        });
                        return button && button.instance
                    };
                    _proto.renderAfterButtons = function(buttons, $container) {
                        return this._renderButtons(buttons, $container, "after")
                    };
                    _proto.renderBeforeButtons = function(buttons, $container) {
                        return this._renderButtons(buttons, $container, "before")
                    };
                    _proto.updateButtons = function(names) {
                        this.buttons.forEach(button => {
                            if (!names || -1 !== names.indexOf(button.name)) {
                                button.update()
                            }
                        })
                    };
                    return TextEditorButtonCollection
                }();
                exports.default = TextEditorButtonCollection;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        86530:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/text_box/ui.text_editor.base.js ***!
              \********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _selectors = __webpack_require__( /*! ../widget/selectors */ 31421);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _themes = __webpack_require__( /*! ../themes */ 75811);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _editor = _interopRequireDefault(__webpack_require__( /*! ../editor/editor */ 96452));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../events/pointer */ 93786));
                var _uiText_editor = _interopRequireDefault(__webpack_require__( /*! ./ui.text_editor.clear */ 49714));
                var _index2 = _interopRequireDefault(__webpack_require__( /*! ./texteditor_button_collection/index */ 91202));
                var _config = _interopRequireDefault(__webpack_require__( /*! ../../core/config */ 80209));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.errors */ 96688));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _load_indicator = _interopRequireDefault(__webpack_require__( /*! ../load_indicator */ 2492));
                var _uiText_editor2 = __webpack_require__( /*! ./ui.text_editor.label */ 78986);
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _resize_observer = _interopRequireDefault(__webpack_require__( /*! ../../core/resize_observer */ 91784));
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 73176));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const EVENTS_LIST = ["KeyDown", "KeyPress", "KeyUp", "Change", "Cut", "Copy", "Paste", "Input"];
                const CONTROL_KEYS = ["tab", "enter", "shift", "control", "alt", "escape", "pageUp", "pageDown", "end", "home", "leftArrow", "upArrow", "rightArrow", "downArrow"];
                let TextEditorLabelCreator = _uiText_editor2.TextEditorLabel;

                function checkButtonsOptionType(buttons) {
                    if ((0, _type.isDefined)(buttons) && !Array.isArray(buttons)) {
                        throw _ui.default.Error("E1053")
                    }
                }
                const TextEditorBase = _editor.default.inherit({
                    ctor: function(_, options) {
                        if (options) {
                            checkButtonsOptionType(options.buttons)
                        }
                        this._buttonCollection = new _index2.default(this, this._getDefaultButtons());
                        this._$beforeButtonsContainer = null;
                        this._$afterButtonsContainer = null;
                        this._labelContainerElement = null;
                        this.callBase.apply(this, arguments)
                    },
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            buttons: void 0,
                            value: "",
                            spellcheck: false,
                            showClearButton: false,
                            valueChangeEvent: "change",
                            placeholder: "",
                            inputAttr: {},
                            onFocusIn: null,
                            onFocusOut: null,
                            onKeyDown: null,
                            onKeyUp: null,
                            onChange: null,
                            onInput: null,
                            onCut: null,
                            onCopy: null,
                            onPaste: null,
                            onEnterKey: null,
                            mode: "text",
                            hoverStateEnabled: true,
                            focusStateEnabled: true,
                            text: void 0,
                            displayValueFormatter: function(value) {
                                return (0, _type.isDefined)(value) && false !== value ? value : ""
                            },
                            stylingMode: (0, _config.default)().editorStylingMode || "outlined",
                            showValidationMark: true,
                            label: "",
                            labelMode: "static",
                            labelMark: ""
                        })
                    },
                    _defaultOptionsRules: function() {
                        return this.callBase().concat([{
                            device: function() {
                                const themeName = (0, _themes.current)();
                                return (0, _themes.isMaterial)(themeName)
                            },
                            options: {
                                labelMode: "floating",
                                stylingMode: (0, _config.default)().editorStylingMode || "filled"
                            }
                        }, {
                            device: function() {
                                const themeName = (0, _themes.current)();
                                return (0, _themes.isFluent)(themeName)
                            },
                            options: {
                                labelMode: "outside"
                            }
                        }])
                    },
                    _getDefaultButtons: function() {
                        return [{
                            name: "clear",
                            Ctor: _uiText_editor.default
                        }]
                    },
                    _isClearButtonVisible: function() {
                        return this.option("showClearButton") && !this.option("readOnly")
                    },
                    _input: function() {
                        return this.$element().find(".dx-texteditor-input").first()
                    },
                    _isFocused: function() {
                        return (0, _selectors.focused)(this._input()) || this.callBase()
                    },
                    _inputWrapper: function() {
                        return this.$element()
                    },
                    _buttonsContainer: function() {
                        return this._inputWrapper().find(".dx-texteditor-buttons-container").eq(0)
                    },
                    _isControlKey: function(key) {
                        return -1 !== CONTROL_KEYS.indexOf(key)
                    },
                    _renderStylingMode: function() {
                        this.callBase();
                        this._updateButtonsStyling(this.option("stylingMode"))
                    },
                    _initMarkup: function() {
                        this.$element().addClass("dx-texteditor");
                        this._renderInput();
                        this._renderStylingMode();
                        this._renderInputType();
                        this._renderPlaceholder();
                        this._renderProps();
                        this.callBase();
                        this._renderValue();
                        this._renderLabel()
                    },
                    _render: function() {
                        this.callBase();
                        this._refreshValueChangeEvent();
                        this._renderEvents();
                        this._renderEnterKeyAction();
                        this._renderEmptinessEvent()
                    },
                    _renderInput: function() {
                        this._$buttonsContainer = this._$textEditorContainer = (0, _renderer.default)("<div>").addClass("dx-texteditor-container").appendTo(this.$element());
                        this._$textEditorInputContainer = (0, _renderer.default)("<div>").addClass("dx-texteditor-input-container").appendTo(this._$textEditorContainer);
                        this._$textEditorInputContainer.append(this._createInput());
                        this._renderButtonContainers()
                    },
                    _getInputContainer() {
                        return this._$textEditorInputContainer
                    },
                    _renderPendingIndicator: function() {
                        this.$element().addClass("dx-validation-pending");
                        const $inputContainer = this._getInputContainer();
                        const $indicatorElement = (0, _renderer.default)("<div>").addClass("dx-pending-indicator").appendTo($inputContainer);
                        this._pendingIndicator = this._createComponent($indicatorElement, _load_indicator.default)
                    },
                    _disposePendingIndicator: function() {
                        if (!this._pendingIndicator) {
                            return
                        }
                        this._pendingIndicator.dispose();
                        this._pendingIndicator.$element().remove();
                        this._pendingIndicator = null;
                        this.$element().removeClass("dx-validation-pending")
                    },
                    _renderValidationState: function() {
                        this.callBase();
                        const isPending = "pending" === this.option("validationStatus");
                        if (isPending) {
                            !this._pendingIndicator && this._renderPendingIndicator();
                            this._showValidMark = false
                        } else {
                            if ("invalid" === this.option("validationStatus")) {
                                this._showValidMark = false
                            }
                            if (!this._showValidMark && true === this.option("showValidationMark")) {
                                this._showValidMark = "valid" === this.option("validationStatus") && !!this._pendingIndicator
                            }
                            this._disposePendingIndicator()
                        }
                        this._toggleValidMark()
                    },
                    _renderButtonContainers: function() {
                        const buttons = this.option("buttons");
                        this._$beforeButtonsContainer = this._buttonCollection.renderBeforeButtons(buttons, this._$buttonsContainer);
                        this._$afterButtonsContainer = this._buttonCollection.renderAfterButtons(buttons, this._$buttonsContainer)
                    },
                    _cleanButtonContainers: function() {
                        var _this$_$beforeButtons, _this$_$afterButtonsC;
                        null === (_this$_$beforeButtons = this._$beforeButtonsContainer) || void 0 === _this$_$beforeButtons ? void 0 : _this$_$beforeButtons.remove();
                        null === (_this$_$afterButtonsC = this._$afterButtonsContainer) || void 0 === _this$_$afterButtonsC ? void 0 : _this$_$afterButtonsC.remove();
                        this._buttonCollection.clean()
                    },
                    _clean() {
                        this._buttonCollection.clean();
                        this._disposePendingIndicator();
                        this._unobserveLabelContainerResize();
                        this._$beforeButtonsContainer = null;
                        this._$afterButtonsContainer = null;
                        this._$textEditorContainer = null;
                        this._$buttonsContainer = null;
                        this.callBase()
                    },
                    _createInput: function() {
                        const $input = (0, _renderer.default)("<input>");
                        this._applyInputAttributes($input, this.option("inputAttr"));
                        return $input
                    },
                    _setSubmitElementName: function(name) {
                        const inputAttrName = this.option("inputAttr.name");
                        return this.callBase(name || inputAttrName || "")
                    },
                    _applyInputAttributes: function($input, customAttributes) {
                        const inputAttributes = (0, _extend.extend)(this._getDefaultAttributes(), customAttributes);
                        $input.attr(inputAttributes).addClass("dx-texteditor-input");
                        this._setInputMinHeight($input)
                    },
                    _setInputMinHeight: function($input) {
                        $input.css("minHeight", this.option("height") ? "0" : "")
                    },
                    _getPlaceholderAttr() {
                        const {
                            ios: ios,
                            mac: mac
                        } = _devices.default.real();
                        const {
                            placeholder: placeholder
                        } = this.option();
                        const value = placeholder || (ios || mac ? " " : null);
                        return value
                    },
                    _getDefaultAttributes() {
                        const defaultAttributes = {
                            autocomplete: "off",
                            placeholder: this._getPlaceholderAttr()
                        };
                        return defaultAttributes
                    },
                    _updateButtons: function(names) {
                        this._buttonCollection.updateButtons(names)
                    },
                    _updateButtonsStyling: function(editorStylingMode) {
                        (0, _iterator.each)(this.option("buttons"), (_, _ref) => {
                            let {
                                options: options,
                                name: buttonName
                            } = _ref;
                            if (options && !options.stylingMode && this.option("visible")) {
                                const buttonInstance = this.getButton(buttonName);
                                buttonInstance.option && buttonInstance.option("stylingMode", "underlined" === editorStylingMode ? "text" : "contained")
                            }
                        })
                    },
                    _renderValue: function() {
                        const renderInputPromise = this._renderInputValue();
                        return renderInputPromise.promise()
                    },
                    _renderInputValue: function(value) {
                        var _value;
                        value = null !== (_value = value) && void 0 !== _value ? _value : this.option("value");
                        let text = this.option("text");
                        const displayValue = this.option("displayValue");
                        const displayValueFormatter = this.option("displayValueFormatter");
                        if (void 0 !== displayValue && null !== value) {
                            text = displayValueFormatter(displayValue)
                        } else if (!(0, _type.isDefined)(text)) {
                            text = displayValueFormatter(value)
                        }
                        this.option("text", text);
                        if (this._input().val() !== ((0, _type.isDefined)(text) ? text : "")) {
                            this._renderDisplayText(text)
                        } else {
                            this._toggleEmptinessEventHandler()
                        }
                        return (new _deferred.Deferred).resolve()
                    },
                    _renderDisplayText: function(text) {
                        this._input().val(text);
                        this._toggleEmptinessEventHandler()
                    },
                    _isValueValid: function() {
                        if (this._input().length) {
                            const validity = this._input().get(0).validity;
                            if (validity) {
                                return validity.valid
                            }
                        }
                        return true
                    },
                    _toggleEmptiness: function(isEmpty) {
                        this.$element().toggleClass("dx-texteditor-empty", isEmpty);
                        this._togglePlaceholder(isEmpty)
                    },
                    _togglePlaceholder: function(isEmpty) {
                        this.$element().find(".".concat("dx-placeholder")).eq(0).toggleClass("dx-state-invisible", !isEmpty)
                    },
                    _renderProps: function() {
                        this._toggleReadOnlyState();
                        this._toggleSpellcheckState();
                        this._toggleTabIndex()
                    },
                    _toggleDisabledState: function(value) {
                        this.callBase.apply(this, arguments);
                        const $input = this._input();
                        $input.prop("disabled", value)
                    },
                    _toggleTabIndex: function() {
                        const $input = this._input();
                        const disabled = this.option("disabled");
                        const focusStateEnabled = this.option("focusStateEnabled");
                        if (disabled || !focusStateEnabled) {
                            $input.attr("tabIndex", -1)
                        } else {
                            $input.removeAttr("tabIndex")
                        }
                    },
                    _toggleReadOnlyState: function() {
                        this._input().prop("readOnly", this._readOnlyPropValue());
                        this.callBase()
                    },
                    _readOnlyPropValue: function() {
                        return this.option("readOnly")
                    },
                    _toggleSpellcheckState: function() {
                        this._input().prop("spellcheck", this.option("spellcheck"))
                    },
                    _unobserveLabelContainerResize: function() {
                        if (this._labelContainerElement) {
                            _resize_observer.default.unobserve(this._labelContainerElement);
                            this._labelContainerElement = null
                        }
                    },
                    _getLabelContainer: function() {
                        return this._input()
                    },
                    _getLabelContainerWidth: function() {
                        return (0, _size.getWidth)(this._getLabelContainer())
                    },
                    _getLabelBeforeWidth: function() {
                        const buttonsBeforeWidth = this._$beforeButtonsContainer && (0, _size.getWidth)(this._$beforeButtonsContainer);
                        return null !== buttonsBeforeWidth && void 0 !== buttonsBeforeWidth ? buttonsBeforeWidth : 0
                    },
                    _updateLabelWidth: function() {
                        this._label.updateBeforeWidth(this._getLabelBeforeWidth());
                        this._label.updateMaxWidth(this._getLabelContainerWidth())
                    },
                    _getFieldElement() {
                        return this._getLabelContainer()
                    },
                    _setFieldAria(force) {
                        const {
                            "aria-label": ariaLabel
                        } = this.option("inputAttr");
                        const labelId = this._label.getId();
                        const value = ariaLabel ? void 0 : labelId;
                        if (value || force) {
                            const aria = {
                                labelledby: value,
                                label: ariaLabel
                            };
                            this.setAria(aria, this._getFieldElement())
                        }
                    },
                    _renderLabel: function() {
                        this._unobserveLabelContainerResize();
                        this._labelContainerElement = (0, _renderer.default)(this._getLabelContainer()).get(0);
                        const {
                            label: label,
                            labelMode: labelMode,
                            labelMark: labelMark,
                            rtlEnabled: rtlEnabled
                        } = this.option();
                        const labelConfig = {
                            onClickHandler: () => {
                                this.focus()
                            },
                            onHoverHandler: e => {
                                e.stopPropagation()
                            },
                            onActiveHandler: e => {
                                e.stopPropagation()
                            },
                            $editor: this.$element(),
                            text: label,
                            mark: labelMark,
                            mode: labelMode,
                            rtlEnabled: rtlEnabled,
                            containsButtonsBefore: !!this._$beforeButtonsContainer,
                            getContainerWidth: () => this._getLabelContainerWidth(),
                            getBeforeWidth: () => this._getLabelBeforeWidth()
                        };
                        this._label = new TextEditorLabelCreator(labelConfig);
                        this._setFieldAria();
                        if (this._labelContainerElement) {
                            _resize_observer.default.observe(this._labelContainerElement, this._updateLabelWidth.bind(this))
                        }
                    },
                    _renderPlaceholder: function() {
                        this._renderPlaceholderMarkup();
                        this._attachPlaceholderEvents()
                    },
                    _renderPlaceholderMarkup: function() {
                        if (this._$placeholder) {
                            this._$placeholder.remove();
                            this._$placeholder = null
                        }
                        const $input = this._input();
                        const placeholder = this.option("placeholder");
                        const placeholderAttributes = {
                            id: placeholder ? "dx-".concat(new _guid.default) : void 0,
                            "data-dx_placeholder": placeholder
                        };
                        const $placeholder = this._$placeholder = (0, _renderer.default)("<div>").attr(placeholderAttributes);
                        $placeholder.insertAfter($input);
                        $placeholder.addClass("dx-placeholder")
                    },
                    _attachPlaceholderEvents: function() {
                        const startEvent = (0, _index.addNamespace)(_pointer.default.up, this.NAME);
                        _events_engine.default.on(this._$placeholder, startEvent, () => {
                            _events_engine.default.trigger(this._input(), "focus")
                        });
                        this._toggleEmptinessEventHandler()
                    },
                    _placeholder: function() {
                        return this._$placeholder || (0, _renderer.default)()
                    },
                    _clearValueHandler: function(e) {
                        const $input = this._input();
                        e.stopPropagation();
                        this._saveValueChangeEvent(e);
                        this._clearValue();
                        !this._isFocused() && _events_engine.default.trigger($input, "focus");
                        _events_engine.default.trigger($input, "input")
                    },
                    _clearValue: function() {
                        this.clear()
                    },
                    _renderEvents: function() {
                        const $input = this._input();
                        (0, _iterator.each)(EVENTS_LIST, (_, event) => {
                            if (this.hasActionSubscription("on" + event)) {
                                const action = this._createActionByOption("on" + event, {
                                    excludeValidators: ["readOnly"]
                                });
                                _events_engine.default.on($input, (0, _index.addNamespace)(event.toLowerCase(), this.NAME), e => {
                                    if (this._disposed) {
                                        return
                                    }
                                    action({
                                        event: e
                                    })
                                })
                            }
                        })
                    },
                    _refreshEvents: function() {
                        const $input = this._input();
                        (0, _iterator.each)(EVENTS_LIST, (_, event) => {
                            _events_engine.default.off($input, (0, _index.addNamespace)(event.toLowerCase(), this.NAME))
                        });
                        this._renderEvents()
                    },
                    _keyPressHandler: function() {
                        this.option("text", this._input().val())
                    },
                    _keyDownHandler: function(e) {
                        const $input = this._input();
                        const isCtrlEnter = e.ctrlKey && "enter" === (0, _index.normalizeKeyName)(e);
                        const isNewValue = $input.val() !== this.option("value");
                        if (isCtrlEnter && isNewValue) {
                            _events_engine.default.trigger($input, "change")
                        }
                    },
                    _getValueChangeEventOptionName: function() {
                        return "valueChangeEvent"
                    },
                    _renderValueChangeEvent: function() {
                        const keyPressEvent = (0, _index.addNamespace)(this._renderValueEventName(), "".concat(this.NAME, "TextChange"));
                        const valueChangeEvent = (0, _index.addNamespace)(this.option(this._getValueChangeEventOptionName()), "".concat(this.NAME, "ValueChange"));
                        const keyDownEvent = (0, _index.addNamespace)("keydown", "".concat(this.NAME, "TextChange"));
                        const $input = this._input();
                        _events_engine.default.on($input, keyPressEvent, this._keyPressHandler.bind(this));
                        _events_engine.default.on($input, valueChangeEvent, this._valueChangeEventHandler.bind(this));
                        _events_engine.default.on($input, keyDownEvent, this._keyDownHandler.bind(this))
                    },
                    _cleanValueChangeEvent: function() {
                        const valueChangeNamespace = ".".concat(this.NAME, "ValueChange");
                        const textChangeNamespace = ".".concat(this.NAME, "TextChange");
                        _events_engine.default.off(this._input(), valueChangeNamespace);
                        _events_engine.default.off(this._input(), textChangeNamespace)
                    },
                    _refreshValueChangeEvent: function() {
                        this._cleanValueChangeEvent();
                        this._renderValueChangeEvent()
                    },
                    _renderValueEventName: function() {
                        return "input change keypress"
                    },
                    _focusTarget: function() {
                        return this._input()
                    },
                    _focusEventTarget: function() {
                        return this.element()
                    },
                    _isInput: function(element) {
                        return element === this._input().get(0)
                    },
                    _preventNestedFocusEvent: function(event) {
                        if (event.isDefaultPrevented()) {
                            return true
                        }
                        let shouldPrevent = this._isNestedTarget(event.relatedTarget);
                        if ("focusin" === event.type) {
                            shouldPrevent = shouldPrevent && this._isNestedTarget(event.target) && !this._isInput(event.target)
                        } else if (!shouldPrevent) {
                            this._toggleFocusClass(false, this.$element())
                        }
                        shouldPrevent && event.preventDefault();
                        return shouldPrevent
                    },
                    _isNestedTarget: function(target) {
                        return !!this.$element().find(target).length
                    },
                    _focusClassTarget: function() {
                        return this.$element()
                    },
                    _focusInHandler: function(event) {
                        this._preventNestedFocusEvent(event);
                        this.callBase.apply(this, arguments)
                    },
                    _focusOutHandler: function(event) {
                        this._preventNestedFocusEvent(event);
                        this.callBase.apply(this, arguments)
                    },
                    _toggleFocusClass: function(isFocused, $element) {
                        this.callBase(isFocused, this._focusClassTarget($element))
                    },
                    _hasFocusClass: function(element) {
                        return this.callBase((0, _renderer.default)(element || this.$element()))
                    },
                    _renderEmptinessEvent: function() {
                        const $input = this._input();
                        _events_engine.default.on($input, "input blur", this._toggleEmptinessEventHandler.bind(this))
                    },
                    _toggleEmptinessEventHandler: function() {
                        const text = this._input().val();
                        const isEmpty = ("" === text || null === text) && this._isValueValid();
                        this._toggleEmptiness(isEmpty)
                    },
                    _valueChangeEventHandler: function(e, formattedValue) {
                        if (this.option("readOnly")) {
                            return
                        }
                        this._saveValueChangeEvent(e);
                        this.option("value", arguments.length > 1 ? formattedValue : this._input().val());
                        this._saveValueChangeEvent(void 0)
                    },
                    _renderEnterKeyAction: function() {
                        this._enterKeyAction = this._createActionByOption("onEnterKey", {
                            excludeValidators: ["readOnly"]
                        });
                        _events_engine.default.off(this._input(), "keyup.onEnterKey.dxTextEditor");
                        _events_engine.default.on(this._input(), "keyup.onEnterKey.dxTextEditor", this._enterKeyHandlerUp.bind(this))
                    },
                    _enterKeyHandlerUp: function(e) {
                        if (this._disposed) {
                            return
                        }
                        if ("enter" === (0, _index.normalizeKeyName)(e)) {
                            this._enterKeyAction({
                                event: e
                            })
                        }
                    },
                    _updateValue: function() {
                        this._options.silent("text", null);
                        this._renderValue()
                    },
                    _dispose: function() {
                        this._enterKeyAction = void 0;
                        this.callBase()
                    },
                    _getSubmitElement: function() {
                        return this._input()
                    },
                    _hasActiveElement: function() {
                        return this._input().is(_dom_adapter.default.getActiveElement(this._input()[0]))
                    },
                    _optionChanged: function(args) {
                        const {
                            name: name,
                            fullName: fullName,
                            value: value
                        } = args;
                        const eventName = name.replace("on", "");
                        if (EVENTS_LIST.includes(eventName)) {
                            this._refreshEvents();
                            return
                        }
                        switch (name) {
                            case "valueChangeEvent":
                                this._refreshValueChangeEvent();
                                this._refreshFocusEvent();
                                this._refreshEvents();
                                break;
                            case "onValueChanged":
                                this._createValueChangeAction();
                                break;
                            case "focusStateEnabled":
                                this.callBase(args);
                                this._toggleTabIndex();
                                break;
                            case "spellcheck":
                                this._toggleSpellcheckState();
                                break;
                            case "mode":
                                this._renderInputType();
                                break;
                            case "onEnterKey":
                                this._renderEnterKeyAction();
                                break;
                            case "placeholder":
                                this._renderPlaceholder();
                                this._setFieldAria(true);
                                this._input().attr({
                                    placeholder: this._getPlaceholderAttr()
                                });
                                break;
                            case "label":
                                this._label.updateText(value);
                                this._setFieldAria(true);
                                break;
                            case "labelMark":
                                this._label.updateMark(value);
                                break;
                            case "labelMode":
                                this._label.updateMode(value);
                                this._setFieldAria();
                                break;
                            case "width":
                                this.callBase(args);
                                this._label.updateMaxWidth(this._getLabelContainerWidth());
                                break;
                            case "readOnly":
                            case "disabled":
                                this._updateButtons();
                                this.callBase(args);
                                break;
                            case "showClearButton":
                                this._updateButtons(["clear"]);
                                break;
                            case "text":
                                break;
                            case "value":
                                this._updateValue();
                                this.callBase(args);
                                break;
                            case "inputAttr":
                                this._applyInputAttributes(this._input(), this.option(name));
                                break;
                            case "stylingMode":
                                this._renderStylingMode();
                                this._updateLabelWidth();
                                break;
                            case "buttons":
                                if (fullName === name) {
                                    checkButtonsOptionType(value)
                                }
                                this._cleanButtonContainers();
                                this._renderButtonContainers();
                                this._updateButtonsStyling(this.option("stylingMode"));
                                this._updateLabelWidth();
                                this._label.updateContainsButtonsBefore(!!this._$beforeButtonsContainer);
                                break;
                            case "visible":
                                this.callBase(args);
                                if (value && this.option("buttons")) {
                                    this._cleanButtonContainers();
                                    this._renderButtonContainers();
                                    this._updateButtonsStyling(this.option("stylingMode"))
                                }
                                break;
                            case "displayValueFormatter":
                                this._invalidate();
                                break;
                            case "showValidationMark":
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _renderInputType: function() {
                        this._setInputType(this.option("mode"))
                    },
                    _setInputType: function(type) {
                        const input = this._input();
                        if ("search" === type) {
                            type = "text"
                        }
                        try {
                            input.prop("type", type)
                        } catch (e) {
                            input.prop("type", "text")
                        }
                    },
                    getButton(name) {
                        return this._buttonCollection.getButton(name)
                    },
                    focus: function() {
                        _events_engine.default.trigger(this._input(), "focus")
                    },
                    clear: function() {
                        if (this._showValidMark) {
                            this._showValidMark = false;
                            this._renderValidationState()
                        }
                        const defaultOptions = this._getDefaultOptions();
                        if (this.option("value") === defaultOptions.value) {
                            this._options.silent("text", "");
                            this._renderValue()
                        } else {
                            this.option("value", defaultOptions.value)
                        }
                    },
                    _resetToInitialValue() {
                        if (this.option("value") === this._initialValue) {
                            this._options.silent("text", this._initialValue);
                            this._renderValue()
                        } else {
                            this.callBase()
                        }
                        this._disposePendingIndicator();
                        this._showValidMark = false;
                        this._toggleValidMark()
                    },
                    _toggleValidMark() {
                        this.$element().toggleClass("dx-valid", !!this._showValidMark)
                    },
                    reset: function() {
                        let value = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : void 0;
                        if (arguments.length) {
                            this.callBase(value)
                        } else {
                            this.callBase()
                        }
                    },
                    on: function(eventName, eventHandler) {
                        const result = this.callBase(eventName, eventHandler);
                        const event = eventName.charAt(0).toUpperCase() + eventName.substr(1);
                        if (EVENTS_LIST.indexOf(event) >= 0) {
                            this._refreshEvents()
                        }
                        return result
                    }
                });
                var _default = TextEditorBase;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        49714:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/text_box/ui.text_editor.clear.js ***!
              \*********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _button = _interopRequireDefault(__webpack_require__( /*! ./texteditor_button_collection/button */ 11483));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../events/pointer */ 93786));
                var _click = __webpack_require__( /*! ../../events/click */ 95429);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const pointerDown = _pointer.default.down;
                let ClearButton = function(_TextEditorButton) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(ClearButton, _TextEditorButton);

                    function ClearButton() {
                        return _TextEditorButton.apply(this, arguments) || this
                    }
                    var _proto = ClearButton.prototype;
                    _proto._create = function() {
                        const $element = (0, _renderer.default)("<span>").addClass("dx-clear-button-area").append((0, _renderer.default)("<span>").addClass("dx-icon").addClass("dx-icon-clear"));
                        this._addToContainer($element);
                        this.update(true);
                        return {
                            instance: $element,
                            $element: $element
                        }
                    };
                    _proto._isVisible = function() {
                        const {
                            editor: editor
                        } = this;
                        return editor._isClearButtonVisible()
                    };
                    _proto._attachEvents = function(instance, $button) {
                        const {
                            editor: editor
                        } = this;
                        const editorName = editor.NAME;
                        _events_engine.default.on($button, (0, _index.addNamespace)(pointerDown, editorName), e => {
                            e.preventDefault();
                            if ("mouse" !== e.pointerType) {
                                editor._clearValueHandler(e)
                            }
                        });
                        _events_engine.default.on($button, (0, _index.addNamespace)(_click.name, editorName), e => editor._clearValueHandler(e))
                    };
                    _proto._legacyRender = function($editor, isVisible) {
                        $editor.toggleClass("dx-show-clear-button", isVisible)
                    };
                    _proto.update = function() {
                        let rendered = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false;
                        !rendered && _TextEditorButton.prototype.update.call(this);
                        const {
                            editor: editor,
                            instance: instance
                        } = this;
                        const $editor = editor.$element();
                        const isVisible = this._isVisible();
                        instance && instance.toggleClass("dx-state-invisible", !isVisible);
                        this._legacyRender($editor, isVisible)
                    };
                    return ClearButton
                }(_button.default);
                exports.default = ClearButton;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        63513:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/text_box/ui.text_editor.js ***!
              \***************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _uiText_editor = _interopRequireDefault(__webpack_require__( /*! ./ui.text_editor.mask */ 88839));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }(0, _component_registrator.default)("dxTextEditor", _uiText_editor.default);
                var _default = _uiText_editor.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        78986:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/text_box/ui.text_editor.label.js ***!
              \*********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.TextEditorLabel = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 73176));
                var _click = __webpack_require__( /*! ../../events/click */ 95429);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _hover = __webpack_require__( /*! ../../events/hover */ 24028);
                var _emitter = __webpack_require__( /*! ../../events/core/emitter.feedback */ 91633);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                let TextEditorLabel = function() {
                    function TextEditorLabel(props) {
                        this.NAME = "dxLabel";
                        this._props = props;
                        this._id = "".concat("dx-texteditor-label", "-").concat(new _guid.default);
                        this._render();
                        this._toggleMarkupVisibility()
                    }
                    var _proto = TextEditorLabel.prototype;
                    _proto._isVisible = function() {
                        return !!this._props.text && "hidden" !== this._props.mode
                    };
                    _proto._render = function() {
                        this._$before = (0, _renderer.default)("<div>").addClass("dx-label-before");
                        this._$labelSpan = (0, _renderer.default)("<span>");
                        this._$label = (0, _renderer.default)("<div>").addClass("dx-label").append(this._$labelSpan);
                        this._$after = (0, _renderer.default)("<div>").addClass("dx-label-after");
                        this._$root = (0, _renderer.default)("<div>").addClass("dx-texteditor-label").attr("id", this._id).append(this._$before).append(this._$label).append(this._$after);
                        this._updateMark();
                        this._updateText();
                        this._updateBeforeWidth();
                        this._updateMaxWidth()
                    };
                    _proto._toggleMarkupVisibility = function() {
                        const visible = this._isVisible();
                        this._updateEditorBeforeButtonsClass(visible);
                        this._updateEditorLabelClass(visible);
                        visible ? this._$root.appendTo(this._props.$editor) : this._$root.detach();
                        this._attachEvents()
                    };
                    _proto._attachEvents = function() {
                        const clickEventName = (0, _index.addNamespace)(_click.name, this.NAME);
                        const hoverStartEventName = (0, _index.addNamespace)(_hover.start, this.NAME);
                        const activeEventName = (0, _index.addNamespace)(_emitter.active, this.NAME);
                        _events_engine.default.off(this._$labelSpan, clickEventName);
                        _events_engine.default.off(this._$labelSpan, hoverStartEventName);
                        _events_engine.default.off(this._$labelSpan, activeEventName);
                        if (this._isVisible() && this._isOutsideMode()) {
                            _events_engine.default.on(this._$labelSpan, clickEventName, e => {
                                const selectedText = (0, _window.getWindow)().getSelection().toString();
                                if ("" === selectedText) {
                                    this._props.onClickHandler();
                                    e.preventDefault()
                                }
                            });
                            _events_engine.default.on(this._$labelSpan, hoverStartEventName, e => {
                                this._props.onHoverHandler(e)
                            });
                            _events_engine.default.on(this._$labelSpan, activeEventName, e => {
                                this._props.onActiveHandler(e)
                            })
                        }
                    };
                    _proto._updateEditorLabelClass = function(visible) {
                        this._props.$editor.removeClass("dx-texteditor-with-floating-label").removeClass("dx-texteditor-label-outside").removeClass("dx-texteditor-with-label");
                        if (visible) {
                            const labelClass = "floating" === this._props.mode ? "dx-texteditor-with-floating-label" : "dx-texteditor-with-label";
                            this._props.$editor.addClass(labelClass);
                            if (this._isOutsideMode()) {
                                this._props.$editor.addClass("dx-texteditor-label-outside")
                            }
                        }
                    };
                    _proto._isOutsideMode = function() {
                        return "outside" === this._props.mode
                    };
                    _proto._updateEditorBeforeButtonsClass = function() {
                        let visible = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._isVisible();
                        this._props.$editor.removeClass("dx-texteditor-with-before-buttons");
                        if (visible) {
                            const beforeButtonsClass = this._props.containsButtonsBefore ? "dx-texteditor-with-before-buttons" : "";
                            this._props.$editor.addClass(beforeButtonsClass)
                        }
                    };
                    _proto._updateMark = function() {
                        this._$labelSpan.attr("data-mark", this._props.mark)
                    };
                    _proto._updateText = function() {
                        this._$labelSpan.text(this._props.text)
                    };
                    _proto._updateBeforeWidth = function() {
                        if (this._isVisible()) {
                            var _this$_props$beforeWi;
                            const width = null !== (_this$_props$beforeWi = this._props.beforeWidth) && void 0 !== _this$_props$beforeWi ? _this$_props$beforeWi : this._props.getBeforeWidth();
                            this._$before.css({
                                width: width
                            });
                            this._updateLabelTransform()
                        }
                    };
                    _proto._updateLabelTransform = function() {
                        let offset = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0;
                        this._$labelSpan.css("transform", "");
                        if (this._isVisible() && this._isOutsideMode()) {
                            const sign = this._props.rtlEnabled ? 1 : -1;
                            const labelTranslateX = sign * ((0, _size.getWidth)(this._$before) + offset);
                            this._$labelSpan.css("transform", "translateX(".concat(labelTranslateX, "px)"))
                        }
                    };
                    _proto._updateMaxWidth = function() {
                        if (this._isVisible() && !this._isOutsideMode()) {
                            var _this$_props$containe;
                            const maxWidth = null !== (_this$_props$containe = this._props.containerWidth) && void 0 !== _this$_props$containe ? _this$_props$containe : this._props.getContainerWidth();
                            this._$label.css({
                                maxWidth: maxWidth
                            })
                        }
                    };
                    _proto.$element = function() {
                        return this._$root
                    };
                    _proto.isVisible = function() {
                        return this._isVisible()
                    };
                    _proto.getId = function() {
                        if (this._isVisible()) {
                            return this._id
                        }
                    };
                    _proto.updateMode = function(mode) {
                        this._props.mode = mode;
                        this._toggleMarkupVisibility();
                        this._updateBeforeWidth();
                        this._updateMaxWidth()
                    };
                    _proto.updateText = function(text) {
                        this._props.text = text;
                        this._updateText();
                        this._toggleMarkupVisibility();
                        this._updateBeforeWidth();
                        this._updateMaxWidth()
                    };
                    _proto.updateMark = function(mark) {
                        this._props.mark = mark;
                        this._updateMark()
                    };
                    _proto.updateContainsButtonsBefore = function(containsButtonsBefore) {
                        this._props.containsButtonsBefore = containsButtonsBefore;
                        this._updateEditorBeforeButtonsClass()
                    };
                    _proto.updateBeforeWidth = function(beforeWidth) {
                        this._props.beforeWidth = beforeWidth;
                        this._updateBeforeWidth()
                    };
                    _proto.updateMaxWidth = function(containerWidth) {
                        this._props.containerWidth = containerWidth;
                        this._updateMaxWidth()
                    };
                    return TextEditorLabel
                }();
                exports.TextEditorLabel = TextEditorLabel
            },
        88839:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/text_box/ui.text_editor.mask.js ***!
              \********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _utils = _interopRequireDefault(__webpack_require__( /*! ./utils.caret */ 21516));
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _selectors = __webpack_require__( /*! ../widget/selectors */ 31421);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _string = __webpack_require__( /*! ../../core/utils/string */ 68752);
                var _wheel = __webpack_require__( /*! ../../events/core/wheel */ 765);
                var _uiText_editorMask = __webpack_require__( /*! ./ui.text_editor.mask.rule */ 20175);
                var _uiText_editor = _interopRequireDefault(__webpack_require__( /*! ./ui.text_editor.base */ 86530));
                var _uiText_editorMask2 = _interopRequireDefault(__webpack_require__( /*! ./ui.text_editor.mask.strategy */ 78013));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const caret = _utils.default;
                const buildInMaskRules = {
                    0: /[0-9]/,
                    9: /[0-9\s]/,
                    "#": /[-+0-9\s]/,
                    L: function(char) {
                        return isLiteralChar(char)
                    },
                    l: function(char) {
                        return isLiteralChar(char) || isSpaceChar(char)
                    },
                    C: /\S/,
                    c: /./,
                    A: function(char) {
                        return isLiteralChar(char) || isNumericChar(char)
                    },
                    a: function(char) {
                        return isLiteralChar(char) || isNumericChar(char) || isSpaceChar(char)
                    }
                };

                function isNumericChar(char) {
                    return /[0-9]/.test(char)
                }

                function isLiteralChar(char) {
                    const code = char.charCodeAt();
                    return 64 < code && code < 91 || 96 < code && code < 123 || code > 127
                }

                function isSpaceChar(char) {
                    return " " === char
                }
                const TextEditorMask = _uiText_editor.default.inherit({
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            mask: "",
                            maskChar: "_",
                            maskRules: {},
                            maskInvalidMessage: _message.default.format("validation-mask"),
                            useMaskedValue: false,
                            showMaskMode: "always"
                        })
                    },
                    _supportedKeys: function() {
                        const that = this;
                        const keyHandlerMap = {
                            del: that._maskStrategy.getHandler("del"),
                            enter: that._changeHandler
                        };
                        const result = that.callBase();
                        (0, _iterator.each)(keyHandlerMap, (function(key, callback) {
                            const parentHandler = result[key];
                            result[key] = function(e) {
                                that.option("mask") && callback.call(that, e);
                                parentHandler && parentHandler(e)
                            }
                        }));
                        return result
                    },
                    _getSubmitElement: function() {
                        return !this.option("mask") ? this.callBase() : this._$hiddenElement
                    },
                    _init: function() {
                        this.callBase();
                        this._initMaskStrategy()
                    },
                    _initMaskStrategy: function() {
                        this._maskStrategy = new _uiText_editorMask2.default(this)
                    },
                    _initMarkup: function() {
                        this._renderHiddenElement();
                        this.callBase()
                    },
                    _attachMouseWheelEventHandlers: function() {
                        const hasMouseWheelHandler = this._onMouseWheel !== _common.noop;
                        if (!hasMouseWheelHandler) {
                            return
                        }
                        const input = this._input();
                        const eventName = (0, _index.addNamespace)(_wheel.name, this.NAME);
                        const mouseWheelAction = this._createAction(function(e) {
                            const {
                                event: event
                            } = e;
                            if ((0, _selectors.focused)(input) && !(0, _index.isCommandKeyPressed)(event)) {
                                this._onMouseWheel(event);
                                event.preventDefault();
                                event.stopPropagation()
                            }
                        }.bind(this));
                        _events_engine.default.off(input, eventName);
                        _events_engine.default.on(input, eventName, (function(e) {
                            mouseWheelAction({
                                event: e
                            })
                        }))
                    },
                    _onMouseWheel: _common.noop,
                    _useMaskBehavior() {
                        return Boolean(this.option("mask"))
                    },
                    _attachDropEventHandler() {
                        const useMaskBehavior = this._useMaskBehavior();
                        if (!useMaskBehavior) {
                            return
                        }
                        const eventName = (0, _index.addNamespace)("drop", this.NAME);
                        const input = this._input();
                        _events_engine.default.off(input, eventName);
                        _events_engine.default.on(input, eventName, e => e.preventDefault())
                    },
                    _render() {
                        this._renderMask();
                        this.callBase();
                        this._attachDropEventHandler();
                        this._attachMouseWheelEventHandlers()
                    },
                    _renderHiddenElement: function() {
                        if (this.option("mask")) {
                            this._$hiddenElement = (0, _renderer.default)("<input>").attr("type", "hidden").appendTo(this._inputWrapper())
                        }
                    },
                    _removeHiddenElement: function() {
                        this._$hiddenElement && this._$hiddenElement.remove()
                    },
                    _renderMask: function() {
                        this.$element().removeClass("dx-texteditor-masked");
                        this._maskRulesChain = null;
                        this._maskStrategy.detachEvents();
                        if (!this.option("mask")) {
                            return
                        }
                        this.$element().addClass("dx-texteditor-masked");
                        this._maskStrategy.attachEvents();
                        this._parseMask();
                        this._renderMaskedValue()
                    },
                    _changeHandler: function(e) {
                        const $input = this._input();
                        const inputValue = $input.val();
                        if (inputValue === this._changedValue) {
                            return
                        }
                        this._changedValue = inputValue;
                        const changeEvent = (0, _index.createEvent)(e, {
                            type: "change"
                        });
                        _events_engine.default.trigger($input, changeEvent)
                    },
                    _parseMask: function() {
                        this._maskRules = (0, _extend.extend)({}, buildInMaskRules, this.option("maskRules"));
                        this._maskRulesChain = this._parseMaskRule(0)
                    },
                    _parseMaskRule: function(index) {
                        const mask = this.option("mask");
                        if (index >= mask.length) {
                            return new _uiText_editorMask.EmptyMaskRule
                        }
                        const currentMaskChar = mask[index];
                        const isEscapedChar = "\\" === currentMaskChar;
                        const result = isEscapedChar ? new _uiText_editorMask.StubMaskRule({
                            maskChar: mask[index + 1]
                        }) : this._getMaskRule(currentMaskChar);
                        result.next(this._parseMaskRule(index + 1 + isEscapedChar));
                        return result
                    },
                    _getMaskRule: function(pattern) {
                        let ruleConfig;
                        (0, _iterator.each)(this._maskRules, (function(rulePattern, allowedChars) {
                            if (rulePattern === pattern) {
                                ruleConfig = {
                                    pattern: rulePattern,
                                    allowedChars: allowedChars
                                };
                                return false
                            }
                        }));
                        return (0, _type.isDefined)(ruleConfig) ? new _uiText_editorMask.MaskRule((0, _extend.extend)({
                            maskChar: this.option("maskChar") || " "
                        }, ruleConfig)) : new _uiText_editorMask.StubMaskRule({
                            maskChar: pattern
                        })
                    },
                    _renderMaskedValue: function() {
                        if (!this._maskRulesChain) {
                            return
                        }
                        const value = this.option("value") || "";
                        this._maskRulesChain.clear(this._normalizeChainArguments());
                        const chainArgs = {
                            length: value.length
                        };
                        chainArgs[this._isMaskedValueMode() ? "text" : "value"] = value;
                        this._handleChain(chainArgs);
                        this._displayMask()
                    },
                    _replaceSelectedText: function(text, selection, char) {
                        if (void 0 === char) {
                            return text
                        }
                        const textBefore = text.slice(0, selection.start);
                        const textAfter = text.slice(selection.end);
                        const edited = textBefore + char + textAfter;
                        return edited
                    },
                    _isMaskedValueMode: function() {
                        return this.option("useMaskedValue")
                    },
                    _displayMask: function(caret) {
                        caret = caret || this._caret();
                        this._renderValue();
                        this._caret(caret)
                    },
                    _isValueEmpty: function() {
                        return (0, _string.isEmpty)(this._value)
                    },
                    _shouldShowMask: function() {
                        const showMaskMode = this.option("showMaskMode");
                        if ("onFocus" === showMaskMode) {
                            return (0, _selectors.focused)(this._input()) || !this._isValueEmpty()
                        }
                        return true
                    },
                    _showMaskPlaceholder: function() {
                        if (this._shouldShowMask()) {
                            const text = this._maskRulesChain.text();
                            this.option("text", text);
                            if ("onFocus" === this.option("showMaskMode")) {
                                this._renderDisplayText(text)
                            }
                        }
                    },
                    _renderValue: function() {
                        if (this._maskRulesChain) {
                            this._showMaskPlaceholder();
                            if (this._$hiddenElement) {
                                const value = this._maskRulesChain.value();
                                const submitElementValue = !(0, _string.isEmpty)(value) ? this._getPreparedValue() : "";
                                this._$hiddenElement.val(submitElementValue)
                            }
                        }
                        return this.callBase()
                    },
                    _getPreparedValue: function() {
                        return this._convertToValue().replace(/\s+$/, "")
                    },
                    _valueChangeEventHandler: function(e) {
                        if (!this._maskRulesChain) {
                            this.callBase.apply(this, arguments);
                            return
                        }
                        this._saveValueChangeEvent(e);
                        this.option("value", this._getPreparedValue())
                    },
                    _isControlKeyFired: function(e) {
                        return this._isControlKey((0, _index.normalizeKeyName)(e)) || (0, _index.isCommandKeyPressed)(e)
                    },
                    _handleChain: function(args) {
                        const handledCount = this._maskRulesChain.handle(this._normalizeChainArguments(args));
                        this._updateMaskInfo();
                        return handledCount
                    },
                    _normalizeChainArguments: function(args) {
                        args = args || {};
                        args.index = 0;
                        args.fullText = this._maskRulesChain.text();
                        return args
                    },
                    _convertToValue: function(text) {
                        if (this._isMaskedValueMode()) {
                            text = this._replaceMaskCharWithEmpty(text || this._textValue || "")
                        } else {
                            text = text || this._value || ""
                        }
                        return text
                    },
                    _replaceMaskCharWithEmpty: function(text) {
                        return text.replace(new RegExp(this.option("maskChar"), "g"), " ")
                    },
                    _maskKeyHandler: function(e, keyHandler) {
                        if (this.option("readOnly")) {
                            return
                        }
                        this.setForwardDirection();
                        e.preventDefault();
                        this._handleSelection();
                        const previousText = this._input().val();
                        const raiseInputEvent = () => {
                            if (previousText !== this._input().val()) {
                                _events_engine.default.trigger(this._input(), "input")
                            }
                        };
                        const handled = keyHandler();
                        if (handled) {
                            handled.then(raiseInputEvent)
                        } else {
                            this.setForwardDirection();
                            this._adjustCaret();
                            this._displayMask();
                            this._maskRulesChain.reset();
                            raiseInputEvent()
                        }
                    },
                    _handleKey: function(key, direction) {
                        this._direction(direction || "forward");
                        this._adjustCaret(key);
                        this._handleKeyChain(key);
                        this._moveCaret()
                    },
                    _handleSelection: function() {
                        if (!this._hasSelection()) {
                            return
                        }
                        const caret = this._caret();
                        const emptyChars = new Array(caret.end - caret.start + 1).join(" ");
                        this._handleKeyChain(emptyChars)
                    },
                    _handleKeyChain: function(chars) {
                        const caret = this._caret();
                        const start = this.isForwardDirection() ? caret.start : caret.start - 1;
                        const end = this.isForwardDirection() ? caret.end : caret.end - 1;
                        const length = start === end ? 1 : end - start;
                        this._handleChain({
                            text: chars,
                            start: start,
                            length: length
                        })
                    },
                    _tryMoveCaretBackward: function() {
                        this.setBackwardDirection();
                        const currentCaret = this._caret().start;
                        this._adjustCaret();
                        return !currentCaret || currentCaret !== this._caret().start
                    },
                    _adjustCaret: function(char) {
                        const caretStart = this._caret().start;
                        const isForwardDirection = this.isForwardDirection();
                        const caret = this._maskRulesChain.adjustedCaret(caretStart, isForwardDirection, char);
                        this._caret({
                            start: caret,
                            end: caret
                        })
                    },
                    _moveCaret: function() {
                        const currentCaret = this._caret().start;
                        const maskRuleIndex = currentCaret + (this.isForwardDirection() ? 0 : -1);
                        const caret = this._maskRulesChain.isAccepted(maskRuleIndex) ? currentCaret + (this.isForwardDirection() ? 1 : -1) : currentCaret;
                        this._caret({
                            start: caret,
                            end: caret
                        })
                    },
                    _caret: function(position, force) {
                        const $input = this._input();
                        if (!$input.length) {
                            return
                        }
                        if (!arguments.length) {
                            return caret($input)
                        }
                        caret($input, position, force)
                    },
                    _hasSelection: function() {
                        const caret = this._caret();
                        return caret.start !== caret.end
                    },
                    _direction: function(direction) {
                        if (!arguments.length) {
                            return this._typingDirection
                        }
                        this._typingDirection = direction
                    },
                    setForwardDirection: function() {
                        this._direction("forward")
                    },
                    setBackwardDirection: function() {
                        this._direction("backward")
                    },
                    isForwardDirection: function() {
                        return "forward" === this._direction()
                    },
                    _updateMaskInfo() {
                        this._textValue = this._maskRulesChain.text();
                        this._value = this._maskRulesChain.value()
                    },
                    _clean: function() {
                        this._maskStrategy && this._maskStrategy.clean();
                        this.callBase()
                    },
                    _validateMask: function() {
                        if (!this._maskRulesChain) {
                            return
                        }
                        const isValid = (0, _string.isEmpty)(this.option("value")) || this._maskRulesChain.isValid(this._normalizeChainArguments());
                        this.option({
                            isValid: isValid,
                            validationError: isValid ? null : {
                                editorSpecific: true,
                                message: this.option("maskInvalidMessage")
                            }
                        })
                    },
                    _updateHiddenElement: function() {
                        this._removeHiddenElement();
                        if (this.option("mask")) {
                            this._input().removeAttr("name");
                            this._renderHiddenElement()
                        }
                        this._setSubmitElementName(this.option("name"))
                    },
                    _updateMaskOption: function() {
                        this._updateHiddenElement();
                        this._renderMask();
                        this._validateMask()
                    },
                    _processEmptyMask: function(mask) {
                        if (mask) {
                            return
                        }
                        const value = this.option("value");
                        this.option({
                            text: value,
                            isValid: true
                        });
                        this.validationRequest.fire({
                            value: value,
                            editor: this
                        });
                        this._renderValue()
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "mask":
                                this._updateMaskOption();
                                this._processEmptyMask(args.value);
                                break;
                            case "maskChar":
                            case "maskRules":
                            case "useMaskedValue":
                                this._updateMaskOption();
                                break;
                            case "value":
                                this._renderMaskedValue();
                                this._validateMask();
                                this.callBase(args);
                                this._changedValue = this._input().val();
                                break;
                            case "maskInvalidMessage":
                                break;
                            case "showMaskMode":
                                this.option("text", "");
                                this._renderValue();
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    clear: function() {
                        const {
                            value: defaultValue
                        } = this._getDefaultOptions();
                        if (this.option("value") === defaultValue) {
                            this._renderMaskedValue()
                        }
                        this.callBase()
                    }
                });
                var _default = TextEditorMask;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        20175:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/text_box/ui.text_editor.mask.rule.js ***!
              \*************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.StubMaskRule = exports.MaskRule = exports.EmptyMaskRule = void 0;
                var _class = (obj = __webpack_require__( /*! ../../core/class */ 38377), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                const BaseMaskRule = _class.default.inherit({
                    ctor: function(config) {
                        this._value = " ";
                        (0, _extend.extend)(this, config)
                    },
                    next: function(rule) {
                        if (!arguments.length) {
                            return this._next
                        }
                        this._next = rule
                    },
                    text: _common.noop,
                    value: _common.noop,
                    rawValue: _common.noop,
                    handle: _common.noop,
                    _prepareHandlingArgs: function(args, config) {
                        var _config$str, _config$start, _config$length;
                        config = config || {};
                        const handlingProperty = Object.prototype.hasOwnProperty.call(args, "value") ? "value" : "text";
                        args[handlingProperty] = null !== (_config$str = config.str) && void 0 !== _config$str ? _config$str : args[handlingProperty];
                        args.start = null !== (_config$start = config.start) && void 0 !== _config$start ? _config$start : args.start;
                        args.length = null !== (_config$length = config.length) && void 0 !== _config$length ? _config$length : args.length;
                        args.index = args.index + 1;
                        return args
                    },
                    reset: _common.noop,
                    clear: _common.noop,
                    first: function(index) {
                        index = index || 0;
                        return this.next().first(index + 1)
                    },
                    isAccepted: function() {
                        return false
                    },
                    adjustedCaret: function(caret, isForwardDirection, char) {
                        return isForwardDirection ? this._adjustedForward(caret, 0, char) : this._adjustedBackward(caret, 0, char)
                    },
                    _adjustedForward: _common.noop,
                    _adjustedBackward: _common.noop,
                    isValid: _common.noop
                });
                const EmptyMaskRule = BaseMaskRule.inherit({
                    next: _common.noop,
                    handle: function() {
                        return 0
                    },
                    text: function() {
                        return ""
                    },
                    value: function() {
                        return ""
                    },
                    first: function() {
                        return 0
                    },
                    rawValue: function() {
                        return ""
                    },
                    adjustedCaret: function() {
                        return 0
                    },
                    isValid: function() {
                        return true
                    }
                });
                exports.EmptyMaskRule = EmptyMaskRule;
                const MaskRule = BaseMaskRule.inherit({
                    text: function() {
                        return (" " !== this._value ? this._value : this.maskChar) + this.next().text()
                    },
                    value: function() {
                        return this._value + this.next().value()
                    },
                    rawValue: function() {
                        return this._value + this.next().rawValue()
                    },
                    handle: function(args) {
                        const str = Object.prototype.hasOwnProperty.call(args, "value") ? args.value : args.text;
                        if (!str || !str.length || !args.length) {
                            return 0
                        }
                        if (args.start) {
                            return this.next().handle(this._prepareHandlingArgs(args, {
                                start: args.start - 1
                            }))
                        }
                        const char = str[0];
                        const rest = str.substring(1);
                        this._tryAcceptChar(char, args);
                        return this._accepted() ? this.next().handle(this._prepareHandlingArgs(args, {
                            str: rest,
                            length: args.length - 1
                        })) + 1 : this.handle(this._prepareHandlingArgs(args, {
                            str: rest,
                            length: args.length - 1
                        }))
                    },
                    clear: function(args) {
                        this._tryAcceptChar(" ", args);
                        this.next().clear(this._prepareHandlingArgs(args))
                    },
                    reset: function() {
                        this._accepted(false);
                        this.next().reset()
                    },
                    _tryAcceptChar: function(char, args) {
                        this._accepted(false);
                        if (!this._isAllowed(char, args)) {
                            return
                        }
                        const acceptedChar = " " === char ? this.maskChar : char;
                        args.fullText = args.fullText.substring(0, args.index) + acceptedChar + args.fullText.substring(args.index + 1);
                        this._accepted(true);
                        this._value = char
                    },
                    _accepted: function(value) {
                        if (!arguments.length) {
                            return !!this._isAccepted
                        }
                        this._isAccepted = !!value
                    },
                    first: function(index) {
                        return " " === this._value ? index || 0 : this.callBase(index)
                    },
                    _isAllowed: function(char, args) {
                        if (" " === char) {
                            return true
                        }
                        return this._isValid(char, args)
                    },
                    _isValid: function(char, args) {
                        const allowedChars = this.allowedChars;
                        if (allowedChars instanceof RegExp) {
                            return allowedChars.test(char)
                        }
                        if ((0, _type.isFunction)(allowedChars)) {
                            return allowedChars(char, args.index, args.fullText)
                        }
                        if (Array.isArray(allowedChars)) {
                            return allowedChars.includes(char)
                        }
                        return allowedChars === char
                    },
                    isAccepted: function(caret) {
                        return 0 === caret ? this._accepted() : this.next().isAccepted(caret - 1)
                    },
                    _adjustedForward: function(caret, index, char) {
                        if (index >= caret) {
                            return index
                        }
                        return this.next()._adjustedForward(caret, index + 1, char) || index + 1
                    },
                    _adjustedBackward: function(caret, index) {
                        if (index >= caret - 1) {
                            return caret
                        }
                        return this.next()._adjustedBackward(caret, index + 1) || index + 1
                    },
                    isValid: function(args) {
                        return this._isValid(this._value, args) && this.next().isValid(this._prepareHandlingArgs(args))
                    }
                });
                exports.MaskRule = MaskRule;
                const StubMaskRule = MaskRule.inherit({
                    value: function() {
                        return this.next().value()
                    },
                    handle: function(args) {
                        const hasValueProperty = Object.prototype.hasOwnProperty.call(args, "value");
                        const str = hasValueProperty ? args.value : args.text;
                        if (!str.length || !args.length) {
                            return 0
                        }
                        if (args.start || hasValueProperty) {
                            return this.next().handle(this._prepareHandlingArgs(args, {
                                start: args.start && args.start - 1
                            }))
                        }
                        const char = str[0];
                        const rest = str.substring(1);
                        this._tryAcceptChar(char);
                        const nextArgs = this._isAllowed(char) ? this._prepareHandlingArgs(args, {
                            str: rest,
                            length: args.length - 1
                        }) : args;
                        return this.next().handle(nextArgs) + 1
                    },
                    clear: function(args) {
                        this._accepted(false);
                        this.next().clear(this._prepareHandlingArgs(args))
                    },
                    _tryAcceptChar: function(char) {
                        this._accepted(this._isValid(char))
                    },
                    _isValid: function(char) {
                        return char === this.maskChar
                    },
                    first: function(index) {
                        index = index || 0;
                        return this.next().first(index + 1)
                    },
                    _adjustedForward: function(caret, index, char) {
                        if (index >= caret && char === this.maskChar) {
                            return index
                        }
                        if (caret === index + 1 && this._accepted()) {
                            return caret
                        }
                        return this.next()._adjustedForward(caret, index + 1, char)
                    },
                    _adjustedBackward: function(caret, index) {
                        if (index >= caret - 1) {
                            return 0
                        }
                        return this.next()._adjustedBackward(caret, index + 1)
                    },
                    isValid: function(args) {
                        return this.next().isValid(this._prepareHandlingArgs(args))
                    }
                });
                exports.StubMaskRule = StubMaskRule
            },
        78013:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/text_box/ui.text_editor.mask.strategy.js ***!
              \*****************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _browser = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/browser */ 47810));
                var _dom = __webpack_require__( /*! ../../core/utils/dom */ 3532);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const DELETE_INPUT_TYPES = ["deleteContentBackward", "deleteSoftLineBackward", "deleteContent", "deleteHardLineBackward"];
                const HISTORY_INPUT_TYPES = ["historyUndo", "historyRedo"];
                const EVENT_NAMES = ["focusIn", "focusOut", "input", "paste", "cut", "drop", "beforeInput"];

                function getEmptyString(length) {
                    return " ".repeat(length)
                }
                let MaskStrategy = function() {
                    function MaskStrategy(editor) {
                        this.editor = editor
                    }
                    var _proto = MaskStrategy.prototype;
                    _proto._editorOption = function() {
                        return this.editor.option(...arguments)
                    };
                    _proto._editorInput = function() {
                        return this.editor._input()
                    };
                    _proto._editorCaret = function(newCaret) {
                        if (!newCaret) {
                            return this.editor._caret()
                        }
                        this.editor._caret(newCaret)
                    };
                    _proto._attachChangeEventHandler = function() {
                        if (!this._editorOption("valueChangeEvent").split(" ").includes("change")) {
                            return
                        }
                        const $input = this._editorInput();
                        const namespace = (0, _index.addNamespace)("blur beforedeactivate", "dxMask");
                        _events_engine.default.on($input, namespace, e => {
                            this.editor._changeHandler(e)
                        })
                    };
                    _proto._beforeInputHandler = function() {
                        this._previousText = this._editorOption("text");
                        this._prevCaret = this._editorCaret()
                    };
                    _proto._inputHandler = function(event) {
                        const {
                            originalEvent: originalEvent
                        } = event;
                        if (!originalEvent) {
                            return
                        }
                        const {
                            inputType: inputType
                        } = originalEvent;
                        if (HISTORY_INPUT_TYPES.includes(inputType)) {
                            this._handleHistoryInputEvent()
                        } else if (DELETE_INPUT_TYPES.includes(inputType)) {
                            this._handleBackwardDeleteInputEvent()
                        } else {
                            const currentCaret = this._editorCaret();
                            if (!currentCaret.end) {
                                return
                            }
                            this._clearSelectedText();
                            this._autoFillHandler(originalEvent);
                            this._editorCaret(currentCaret);
                            this._handleInsertTextInputEvent(originalEvent.data)
                        }
                        if (this._editorOption("text") === this._previousText) {
                            event.stopImmediatePropagation()
                        }
                    };
                    _proto._handleHistoryInputEvent = function() {
                        const caret = this._editorCaret();
                        this._updateEditorMask({
                            start: caret.start,
                            length: caret.end - caret.start,
                            text: ""
                        });
                        this._editorCaret(this._prevCaret)
                    };
                    _proto._handleBackwardDeleteInputEvent = function() {
                        this._clearSelectedText();
                        const caret = this._editorCaret();
                        this.editor.setForwardDirection();
                        this.editor._adjustCaret();
                        const adjustedForwardCaret = this._editorCaret();
                        if (adjustedForwardCaret.start !== caret.start) {
                            this.editor.setBackwardDirection();
                            this.editor._adjustCaret()
                        }
                    };
                    _proto._clearSelectedText = function() {
                        var _this$_prevCaret, _this$_prevCaret2;
                        const length = (null === (_this$_prevCaret = this._prevCaret) || void 0 === _this$_prevCaret ? void 0 : _this$_prevCaret.end) - (null === (_this$_prevCaret2 = this._prevCaret) || void 0 === _this$_prevCaret2 ? void 0 : _this$_prevCaret2.start) || 1;
                        const caret = this._editorCaret();
                        if (!this._isAutoFill()) {
                            this.editor.setBackwardDirection();
                            this._updateEditorMask({
                                start: caret.start,
                                length: length,
                                text: getEmptyString(length)
                            })
                        }
                    };
                    _proto._handleInsertTextInputEvent = function(data) {
                        var _this$_prevCaret$star, _this$_prevCaret3;
                        const text = null !== data && void 0 !== data ? data : "";
                        this.editor.setForwardDirection();
                        const hasValidChars = this._updateEditorMask({
                            start: null !== (_this$_prevCaret$star = null === (_this$_prevCaret3 = this._prevCaret) || void 0 === _this$_prevCaret3 ? void 0 : _this$_prevCaret3.start) && void 0 !== _this$_prevCaret$star ? _this$_prevCaret$star : 0,
                            length: text.length || 1,
                            text: text
                        });
                        if (!hasValidChars) {
                            this._editorCaret(this._prevCaret)
                        }
                    };
                    _proto._updateEditorMask = function(args) {
                        const textLength = args.text.length;
                        const processedCharsCount = this.editor._handleChain(args);
                        this.editor._displayMask();
                        if (this.editor.isForwardDirection()) {
                            const {
                                start: start,
                                end: end
                            } = this._editorCaret();
                            const correction = processedCharsCount - textLength;
                            const hasSkippedStub = processedCharsCount > 1;
                            if (hasSkippedStub && 1 === textLength) {
                                this._editorCaret({
                                    start: start + correction,
                                    end: end + correction
                                })
                            }
                            this.editor._adjustCaret()
                        }
                        return !!processedCharsCount
                    };
                    _proto._focusInHandler = function() {
                        this.editor._showMaskPlaceholder();
                        this.editor.setForwardDirection();
                        if (!this.editor._isValueEmpty() && this._editorOption("isValid")) {
                            this.editor._adjustCaret()
                        } else {
                            const caret = this.editor._maskRulesChain.first();
                            this._caretTimeout = setTimeout(() => {
                                this._editorCaret({
                                    start: caret,
                                    end: caret
                                })
                            }, 0)
                        }
                    };
                    _proto._focusOutHandler = function(event) {
                        this.editor._changeHandler(event);
                        if ("onFocus" === this._editorOption("showMaskMode") && this.editor._isValueEmpty()) {
                            this._editorOption("text", "");
                            this.editor._renderDisplayText("")
                        }
                    };
                    _proto._delHandler = function(event) {
                        const {
                            editor: editor
                        } = this;
                        editor._maskKeyHandler(event, () => {
                            if (!editor._hasSelection()) {
                                editor._handleKey(" ")
                            }
                        })
                    };
                    _proto._cutHandler = function(event) {
                        const caret = this._editorCaret();
                        const selectedText = this._editorInput().val().substring(caret.start, caret.end);
                        this.editor._maskKeyHandler(event, () => (0, _dom.clipboardText)(event, selectedText))
                    };
                    _proto._dropHandler = function() {
                        this._clearDragTimer();
                        this._dragTimer = setTimeout(() => {
                            const value = this.editor._convertToValue(this._editorInput().val());
                            this._editorOption("value", value)
                        })
                    };
                    _proto._pasteHandler = function(event) {
                        const {
                            editor: editor
                        } = this;
                        if (this._editorOption("disabled")) {
                            return
                        }
                        const caret = this._editorCaret();
                        editor._maskKeyHandler(event, () => {
                            const pastedText = (0, _dom.clipboardText)(event);
                            const restText = editor._maskRulesChain.text().substring(caret.end);
                            const accepted = editor._handleChain({
                                text: pastedText,
                                start: caret.start,
                                length: pastedText.length
                            });
                            const newCaret = caret.start + accepted;
                            editor._handleChain({
                                text: restText,
                                start: newCaret,
                                length: restText.length
                            });
                            editor._caret({
                                start: newCaret,
                                end: newCaret
                            })
                        })
                    };
                    _proto._autoFillHandler = function(event) {
                        const {
                            editor: editor
                        } = this;
                        const inputVal = this._editorInput().val();
                        this._inputHandlerTimer = setTimeout(() => {
                            if (this._isAutoFill()) {
                                editor._maskKeyHandler(event, () => {
                                    editor._handleChain({
                                        text: inputVal,
                                        start: 0,
                                        length: inputVal.length
                                    })
                                });
                                editor._validateMask()
                            }
                        })
                    };
                    _proto._isAutoFill = function() {
                        const $input = this._editorInput();
                        if (_browser.default.webkit) {
                            var _input$matches;
                            const input = $input.get(0);
                            return null !== (_input$matches = null === input || void 0 === input ? void 0 : input.matches(":-webkit-autofill")) && void 0 !== _input$matches ? _input$matches : false
                        }
                        return false
                    };
                    _proto._clearDragTimer = function() {
                        clearTimeout(this._dragTimer)
                    };
                    _proto.getHandler = function(handlerName) {
                        return args => {
                            var _this;
                            null === (_this = this["_".concat(handlerName, "Handler")]) || void 0 === _this ? void 0 : _this.call(this, args)
                        }
                    };
                    _proto.attachEvents = function() {
                        const $input = this._editorInput();
                        EVENT_NAMES.forEach(eventName => {
                            const namespace = (0, _index.addNamespace)(eventName.toLowerCase(), "dxMask");
                            _events_engine.default.on($input, namespace, this.getHandler(eventName))
                        });
                        this._attachChangeEventHandler()
                    };
                    _proto.detachEvents = function() {
                        _events_engine.default.off(this._editorInput(), ".".concat("dxMask"))
                    };
                    _proto.clean = function() {
                        this._clearDragTimer();
                        clearTimeout(this._caretTimeout);
                        clearTimeout(this._inputHandlerTimer)
                    };
                    return MaskStrategy
                }();
                exports.default = MaskStrategy;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        21516:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/text_box/utils.caret.js ***!
              \************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const {
                    ios: ios,
                    mac: mac
                } = _devices.default.real();
                const isFocusingOnCaretChange = ios || mac;
                const getCaret = function(input) {
                    let range;
                    try {
                        range = {
                            start: input.selectionStart,
                            end: input.selectionEnd
                        }
                    } catch (e) {
                        range = {
                            start: 0,
                            end: 0
                        }
                    }
                    return range
                };
                const setCaret = function(input, position) {
                    const body = _dom_adapter.default.getBody();
                    if (!body.contains(input) && !body.contains(input.getRootNode().host)) {
                        return
                    }
                    try {
                        input.selectionStart = position.start;
                        input.selectionEnd = position.end
                    } catch (e) {}
                };
                var _default = function(input, position) {
                    let force = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;
                    input = (0, _renderer.default)(input).get(0);
                    if (!(0, _type.isDefined)(position)) {
                        return getCaret(input)
                    }
                    if (!force && isFocusingOnCaretChange && _dom_adapter.default.getActiveElement(input) !== input) {
                        return
                    }
                    setCaret(input, position)
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        51203:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/text_box/utils.scroll.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.prepareScrollData = exports.allowScroll = void 0;
                var _renderer = (obj = __webpack_require__( /*! ../../core/renderer */ 68374), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                const allowScroll = function(container, delta, shiftKey) {
                    const $container = (0, _renderer.default)(container);
                    const scrollTopPos = shiftKey ? $container.scrollLeft() : $container.scrollTop();
                    const prop = shiftKey ? "Width" : "Height";
                    const scrollSize = $container.prop("scroll".concat(prop));
                    const clientSize = $container.prop("client".concat(prop));
                    const scrollBottomPos = scrollSize - clientSize - scrollTopPos | 0;
                    if (0 === scrollTopPos && 0 === scrollBottomPos) {
                        return false
                    }
                    const isScrollFromTop = 0 === scrollTopPos && delta >= 0;
                    const isScrollFromBottom = 0 === scrollBottomPos && delta <= 0;
                    const isScrollFromMiddle = scrollTopPos > 0 && scrollBottomPos > 0;
                    if (isScrollFromTop || isScrollFromBottom || isScrollFromMiddle) {
                        return true
                    }
                };
                exports.allowScroll = allowScroll;
                exports.prepareScrollData = function(container, validateTarget) {
                    const $container = (0, _renderer.default)(container);
                    return {
                        validate: function(e) {
                            if ((0, _index.isDxMouseWheelEvent)(e) && (eventTarget = e.target, validateTarget ? (0, _renderer.default)(eventTarget).is(container) : true)) {
                                if (allowScroll($container, -e.delta, e.shiftKey)) {
                                    e._needSkipEvent = true;
                                    return true
                                }
                                return false
                            }
                            var eventTarget
                        }
                    }
                }
            },
        75811:
            /*!**********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/themes.js ***!
              \**********************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.attachCssClasses = attachCssClasses;
                exports.current = current;
                exports.default = void 0;
                exports.detachCssClasses = detachCssClasses;
                exports.init = init;
                exports.initialized = initialized;
                exports.isCompact = isCompact;
                exports.isDark = isDark;
                exports.isFluent = isFluent;
                exports.isGeneric = isGeneric;
                exports.isMaterial = isMaterial;
                exports.isMaterialBased = isMaterialBased;
                exports.isPendingThemeLoaded = isPendingThemeLoaded;
                exports.isWebFontLoaded = isWebFontLoaded;
                exports.ready = themeReady;
                exports.resetTheme = resetTheme;
                exports.setDefaultTimeout = setDefaultTimeout;
                exports.waitForThemeLoad = waitForThemeLoad;
                exports.waitWebFont = waitWebFont;
                var _size = __webpack_require__( /*! ../core/utils/size */ 58664);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../core/devices */ 20530));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../core/dom_adapter */ 73349));
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);
                var _html_parser = __webpack_require__( /*! ../core/utils/html_parser */ 61371);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../core/utils/ready_callbacks */ 24311));
                var _view_port = __webpack_require__( /*! ../core/utils/view_port */ 77695);
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _themes_callback = __webpack_require__( /*! ./themes_callback */ 89729);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./widget/ui.errors */ 96688));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();
                const ready = _ready_callbacks.default.add;
                const viewPort = _view_port.value;
                const viewPortChanged = _view_port.changeCallback;
                let initDeferred = new _deferred.Deferred;
                let context;
                let $activeThemeLink;
                let knownThemes;
                let currentThemeName;
                let pendingThemeName;
                let defaultTimeout = 15e3;

                function readThemeMarker() {
                    if (!(0, _window.hasWindow)()) {
                        return null
                    }
                    const element = (0, _renderer.default)("<div>", context).addClass("dx-theme-marker").appendTo(context.documentElement);
                    let result;
                    try {
                        result = window.getComputedStyle(element.get(0)).fontFamily;
                        if (!result) {
                            return null
                        }
                        result = result.replace(/["']/g, "");
                        if ("dx." !== result.substr(0, "dx.".length)) {
                            return null
                        }
                        return result.substr("dx.".length)
                    } finally {
                        element.remove()
                    }
                }

                function waitForThemeLoad(themeName) {
                    let waitStartTime;
                    let timerId;
                    let intervalCleared = true;
                    pendingThemeName = themeName;

                    function handleLoaded() {
                        pendingThemeName = null;
                        clearInterval(timerId);
                        intervalCleared = true;
                        _themes_callback.themeReadyCallback.fire();
                        _themes_callback.themeReadyCallback.empty();
                        initDeferred.resolve()
                    }
                    if (isPendingThemeLoaded() || !defaultTimeout) {
                        handleLoaded()
                    } else {
                        if (!intervalCleared) {
                            if (pendingThemeName) {
                                pendingThemeName = themeName
                            }
                            return
                        }
                        waitStartTime = Date.now();
                        intervalCleared = false;
                        timerId = setInterval((function() {
                            const isLoaded = isPendingThemeLoaded();
                            const isTimeout = !isLoaded && Date.now() - waitStartTime > defaultTimeout;
                            if (isTimeout) {
                                _ui.default.log("W0004", pendingThemeName)
                            }
                            if (isLoaded || isTimeout) {
                                handleLoaded()
                            }
                        }), 10)
                    }
                }

                function isPendingThemeLoaded() {
                    if (!pendingThemeName) {
                        return true
                    }
                    const anyThemePending = "any" === pendingThemeName;
                    if ("resolved" === initDeferred.state() && anyThemePending) {
                        return true
                    }
                    const themeMarker = readThemeMarker();
                    if (themeMarker && anyThemePending) {
                        return true
                    }
                    return themeMarker === pendingThemeName
                }

                function resolveFullThemeName(desiredThemeName) {
                    const desiredThemeParts = desiredThemeName ? desiredThemeName.split(".") : [];
                    let result = null;
                    if (knownThemes) {
                        if (desiredThemeName in knownThemes) {
                            return desiredThemeName
                        }(0, _iterator.each)(knownThemes, (function(knownThemeName, themeData) {
                            const knownThemeParts = knownThemeName.split(".");
                            if (desiredThemeParts[0] && knownThemeParts[0] !== desiredThemeParts[0]) {
                                return
                            }
                            if (desiredThemeParts[1] && desiredThemeParts[1] !== knownThemeParts[1]) {
                                return
                            }
                            if (desiredThemeParts[2] && desiredThemeParts[2] !== knownThemeParts[2]) {
                                return
                            }
                            if (!result || themeData.isActive) {
                                result = knownThemeName
                            }
                            if (themeData.isActive) {
                                return false
                            }
                        }))
                    }
                    return result
                }

                function init(options) {
                    options = options || {};
                    ! function(newContext) {
                        try {
                            if (newContext !== context) {
                                knownThemes = null
                            }
                        } catch (x) {
                            knownThemes = null
                        }
                        context = newContext
                    }(options.context || _dom_adapter.default.getDocument());
                    if (!context) {
                        return
                    }! function() {
                        const $allThemeLinks = (0, _renderer.default)("link[rel=dx-theme]", context);
                        if (!$allThemeLinks.length) {
                            return
                        }
                        knownThemes = {};
                        $activeThemeLink = (0, _renderer.default)((0, _html_parser.parseHTML)("<link rel=stylesheet>"), context);
                        $allThemeLinks.each((function() {
                            const link = (0, _renderer.default)(this, context);
                            const fullThemeName = link.attr("data-theme");
                            const url = link.attr("href");
                            const isActive = "true" === link.attr("data-active");
                            knownThemes[fullThemeName] = {
                                url: url,
                                isActive: isActive
                            }
                        }));
                        $allThemeLinks.last().after($activeThemeLink);
                        $allThemeLinks.remove()
                    }();
                    currentThemeName = void 0;
                    current(options)
                }

                function current(options) {
                    if (!arguments.length) {
                        currentThemeName = currentThemeName || readThemeMarker();
                        return currentThemeName
                    }
                    detachCssClasses(viewPort());
                    options = options || {};
                    if ("string" === typeof options) {
                        options = {
                            theme: options
                        }
                    }
                    const isAutoInit = options._autoInit;
                    const loadCallback = options.loadCallback;
                    let currentThemeData;
                    currentThemeName = resolveFullThemeName(options.theme || currentThemeName);
                    if (currentThemeName) {
                        currentThemeData = knownThemes[currentThemeName]
                    }
                    if (loadCallback) {
                        _themes_callback.themeReadyCallback.add(loadCallback)
                    }
                    if (currentThemeData) {
                        $activeThemeLink.attr("href", knownThemes[currentThemeName].url);
                        if (_themes_callback.themeReadyCallback.has() || "resolved" !== initDeferred.state() || options._forceTimeout) {
                            waitForThemeLoad(currentThemeName)
                        }
                    } else if (isAutoInit) {
                        if ((0, _window.hasWindow)()) {
                            waitForThemeLoad("any")
                        }
                        _themes_callback.themeReadyCallback.fire();
                        _themes_callback.themeReadyCallback.empty()
                    } else {
                        throw _ui.default.Error("E0021", currentThemeName)
                    }
                    initDeferred.done(() => attachCssClasses((0, _view_port.originalViewPort)(), currentThemeName))
                }
                let themeClasses;

                function attachCssClasses(element, themeName) {
                    themeClasses = function(themeName) {
                        themeName = themeName || current();
                        const result = [];
                        const themeNameParts = themeName && themeName.split(".");
                        if (themeNameParts) {
                            result.push("dx-theme-" + themeNameParts[0], "dx-theme-" + themeNameParts[0] + "-typography");
                            if (themeNameParts.length > 1) {
                                result.push("dx-color-scheme-" + themeNameParts[1] + (isMaterialBased(themeName) ? "-" + themeNameParts[2] : ""))
                            }
                        }
                        return result
                    }(themeName).join(" ");
                    (0, _renderer.default)(element).addClass(themeClasses);
                    ! function() {
                        const pixelRatio = (0, _window.hasWindow)() && window.devicePixelRatio;
                        if (!pixelRatio || pixelRatio < 2) {
                            return
                        }
                        const $tester = (0, _renderer.default)("<div>");
                        $tester.css("border", ".5px solid transparent");
                        (0, _renderer.default)("body").append($tester);
                        if (1 === (0, _size.getOuterHeight)($tester)) {
                            (0, _renderer.default)(element).addClass("dx-hairlines");
                            themeClasses += " dx-hairlines"
                        }
                        $tester.remove()
                    }()
                }

                function detachCssClasses(element) {
                    (0, _renderer.default)(element).removeClass(themeClasses)
                }

                function themeReady(callback) {
                    _themes_callback.themeReadyCallback.add(callback)
                }

                function isTheme(themeRegExp, themeName) {
                    if (!themeName) {
                        themeName = currentThemeName || readThemeMarker()
                    }
                    return new RegExp(themeRegExp).test(themeName)
                }

                function isMaterialBased(themeName) {
                    return isMaterial(themeName) || isFluent(themeName)
                }

                function isMaterial(themeName) {
                    return isTheme("material", themeName)
                }

                function isFluent(themeName) {
                    return isTheme("fluent", themeName)
                }

                function isGeneric(themeName) {
                    return isTheme("generic", themeName)
                }

                function isDark(themeName) {
                    return isTheme("dark", themeName)
                }

                function isCompact(themeName) {
                    return isTheme("compact", themeName)
                }

                function isWebFontLoaded(text, fontWeight) {
                    const document = _dom_adapter.default.getDocument();
                    const testElement = document.createElement("span");
                    testElement.style.position = "absolute";
                    testElement.style.top = "-9999px";
                    testElement.style.left = "-9999px";
                    testElement.style.visibility = "hidden";
                    testElement.style.fontFamily = "Arial";
                    testElement.style.fontSize = "250px";
                    testElement.style.fontWeight = fontWeight;
                    testElement.innerHTML = text;
                    document.body.appendChild(testElement);
                    const etalonFontWidth = testElement.offsetWidth;
                    testElement.style.fontFamily = "Roboto, RobotoFallback, Arial";
                    const testedFontWidth = testElement.offsetWidth;
                    testElement.parentNode.removeChild(testElement);
                    return etalonFontWidth !== testedFontWidth
                }

                function waitWebFont(text, fontWeight) {
                    return new Promise(resolve => {
                        const clear = () => {
                            clearInterval(intervalId);
                            clearTimeout(timeoutId);
                            resolve()
                        };
                        const intervalId = setInterval(() => {
                            if (isWebFontLoaded(text, fontWeight)) {
                                clear()
                            }
                        }, 15);
                        const timeoutId = setTimeout(clear, 2e3)
                    })
                }

                function autoInit() {
                    init({
                        _autoInit: true,
                        _forceTimeout: true
                    });
                    if ((0, _renderer.default)("link[rel=dx-theme]", context).length) {
                        throw _ui.default.Error("E0022")
                    }
                }
                if ((0, _window.hasWindow)()) {
                    autoInit()
                } else {
                    ready(autoInit)
                }
                viewPortChanged.add((function(viewPort, prevViewPort) {
                    initDeferred.done((function() {
                        detachCssClasses(prevViewPort);
                        attachCssClasses(viewPort)
                    }))
                }));
                _devices.default.changed.add((function() {
                    init({
                        _autoInit: true
                    })
                }));

                function resetTheme() {
                    $activeThemeLink && $activeThemeLink.attr("href", "about:blank");
                    currentThemeName = null;
                    pendingThemeName = null;
                    initDeferred = new _deferred.Deferred
                }

                function initialized(callback) {
                    initDeferred.done(callback)
                }

                function setDefaultTimeout(timeout) {
                    defaultTimeout = timeout
                }
                var _default = {
                    setDefaultTimeout: setDefaultTimeout,
                    initialized: initialized,
                    resetTheme: resetTheme,
                    ready: themeReady,
                    waitWebFont: waitWebFont,
                    isWebFontLoaded: isWebFontLoaded,
                    isCompact: isCompact,
                    isDark: isDark,
                    isGeneric: isGeneric,
                    isMaterial: isMaterial,
                    isFluent: isFluent,
                    isMaterialBased: isMaterialBased,
                    detachCssClasses: detachCssClasses,
                    attachCssClasses: attachCssClasses,
                    current: current,
                    waitForThemeLoad: waitForThemeLoad,
                    isPendingThemeLoaded: isPendingThemeLoaded
                };
                exports.default = _default
            },
        89729:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/themes_callback.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.themeReadyCallback = void 0;
                var _callbacks = (obj = __webpack_require__( /*! ../core/utils/callbacks */ 44504), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const themeReadyCallback = (0, _callbacks.default)();
                exports.themeReadyCallback = themeReadyCallback
            },
        93094:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/tile_view.js ***!
              \*************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../core/devices */ 20530));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _element = __webpack_require__( /*! ../core/element */ 6415);
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);
                var _support = __webpack_require__( /*! ../core/utils/support */ 60137);
                var _scroll_view = _interopRequireDefault(__webpack_require__( /*! ./scroll_view */ 4741));
                var _uiCollection_widget = _interopRequireDefault(__webpack_require__( /*! ./collection/ui.collection_widget.edit */ 11050));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const CONFIGS = {
                    horizontal: {
                        itemMainRatio: "widthRatio",
                        itemCrossRatio: "heightRatio",
                        baseItemMainDimension: "baseItemWidth",
                        baseItemCrossDimension: "baseItemHeight",
                        mainDimension: "width",
                        crossDimension: "height",
                        mainPosition: "left",
                        crossPosition: "top"
                    },
                    vertical: {
                        itemMainRatio: "heightRatio",
                        itemCrossRatio: "widthRatio",
                        baseItemMainDimension: "baseItemHeight",
                        baseItemCrossDimension: "baseItemWidth",
                        mainDimension: "height",
                        crossDimension: "width",
                        mainPosition: "top",
                        crossPosition: "left"
                    }
                };
                const TileView = _uiCollection_widget.default.inherit({
                    _activeStateUnit: ".dx-tile",
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            items: null,
                            direction: "horizontal",
                            hoverStateEnabled: true,
                            showScrollbar: "never",
                            height: 500,
                            baseItemWidth: 100,
                            baseItemHeight: 100,
                            itemMargin: 20,
                            activeStateEnabled: true,
                            indicateLoading: true
                        })
                    },
                    _defaultOptionsRules: function() {
                        return this.callBase().concat([{
                            device: function() {
                                return "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator()
                            },
                            options: {
                                focusStateEnabled: true
                            }
                        }, {
                            device: function() {
                                return _support.nativeScrolling
                            },
                            options: {
                                showScrollbar: "onScroll"
                            }
                        }])
                    },
                    _itemClass: function() {
                        return "dx-tile"
                    },
                    _itemDataKey: function() {
                        return "dxTileData"
                    },
                    _itemContainer: function() {
                        return this._$container
                    },
                    _init: function() {
                        this.callBase();
                        this.$element().addClass("dx-tileview");
                        this._initScrollView()
                    },
                    _dataSourceLoadingChangedHandler: function(isLoading) {
                        const scrollView = this._scrollView;
                        if (!scrollView || !scrollView.startLoading) {
                            return
                        }
                        if (isLoading && this.option("indicateLoading")) {
                            scrollView.startLoading()
                        } else {
                            scrollView.finishLoading()
                        }
                    },
                    _hideLoadingIfLoadIndicationOff: function() {
                        if (!this.option("indicateLoading")) {
                            this._dataSourceLoadingChangedHandler(false)
                        }
                    },
                    _initScrollView: function() {
                        const {
                            width: width,
                            height: height,
                            direction: direction,
                            showScrollbar: showScrollbar
                        } = this.option();
                        this._scrollView = this._createComponent(this.$element(), _scroll_view.default, {
                            direction: direction,
                            width: width,
                            height: height,
                            scrollByContent: true,
                            useKeyboard: false,
                            showScrollbar: showScrollbar
                        });
                        this._$container = (0, _renderer.default)(this._scrollView.content());
                        this._$container.addClass("dx-tileview-wrapper");
                        this._scrollView.option("onUpdated", this._renderGeometry.bind(this))
                    },
                    _initMarkup: function() {
                        this.callBase();
                        (0, _common.deferRender)(function() {
                            this._cellsPerDimension = 1;
                            this._renderGeometry();
                            this._updateScrollView();
                            this._fireContentReadyAction()
                        }.bind(this))
                    },
                    _updateScrollView: function() {
                        this._scrollView.option("direction", this.option("direction"));
                        this._scrollView.update();
                        this._indicateLoadingIfAlreadyStarted()
                    },
                    _indicateLoadingIfAlreadyStarted: function() {
                        if (this._isDataSourceLoading()) {
                            this._dataSourceLoadingChangedHandler(true)
                        }
                    },
                    _renderGeometry: function() {
                        this._config = CONFIGS[this.option("direction")];
                        const items = this.option("items") || [];
                        const config = this._config;
                        const itemMargin = this.option("itemMargin");
                        const maxItemCrossRatio = Math.max.apply(Math, (0, _iterator.map)(items || [], (function(item) {
                            return Math.round(item[config.itemCrossRatio] || 1)
                        })));
                        let crossDimensionValue;
                        if (_window.hasWindow) {
                            crossDimensionValue = ("width" === config.crossDimension ? _size.getWidth : _size.getHeight)(this.$element())
                        } else {
                            crossDimensionValue = parseInt(this.$element().get(0).style[config.crossDimension])
                        }
                        this._cellsPerDimension = Math.floor(crossDimensionValue / (this.option(config.baseItemCrossDimension) + itemMargin));
                        this._cellsPerDimension = Math.max(this._cellsPerDimension, maxItemCrossRatio);
                        this._cells = [];
                        this._cells.push(new Array(this._cellsPerDimension));
                        this._arrangeItems(items);
                        this._renderContentSize(config, itemMargin)
                    },
                    _renderContentSize: function(_ref, itemMargin) {
                        let {
                            mainDimension: mainDimension,
                            baseItemMainDimension: baseItemMainDimension
                        } = _ref;
                        if ((0, _window.hasWindow)()) {
                            const actualContentSize = this._cells.length * this.option(baseItemMainDimension) + (this._cells.length + 1) * itemMargin;
                            const elementSize = ("width" === mainDimension ? _size.getWidth : _size.getHeight)(this.$element());
                            ("width" === mainDimension ? _size.setWidth : _size.setHeight)(this._$container, Math.max(actualContentSize, elementSize))
                        }
                    },
                    _arrangeItems: function(items) {
                        const config = this._config;
                        const itemMainRatio = config.itemMainRatio;
                        const itemCrossRatio = config.itemCrossRatio;
                        const mainPosition = config.mainPosition;
                        this._itemsPositions = [];
                        (0, _iterator.each)(items, function(index, item) {
                            const currentItem = {};
                            currentItem[itemMainRatio] = item[itemMainRatio] || 1;
                            currentItem[itemCrossRatio] = item[itemCrossRatio] || 1;
                            currentItem.index = index;
                            currentItem[itemMainRatio] = currentItem[itemMainRatio] <= 0 ? 0 : Math.round(currentItem[config.itemMainRatio]);
                            currentItem[itemCrossRatio] = currentItem[itemCrossRatio] <= 0 ? 0 : Math.round(currentItem[config.itemCrossRatio]);
                            const itemPosition = this._getItemPosition(currentItem);
                            if (-1 === itemPosition[mainPosition]) {
                                itemPosition[mainPosition] = this._cells.push(new Array(this._cellsPerDimension)) - 1
                            }
                            this._occupyCells(currentItem, itemPosition);
                            this._arrangeItem(currentItem, itemPosition);
                            this._itemsPositions.push(itemPosition)
                        }.bind(this))
                    },
                    _getItemPosition: function(item) {
                        const config = this._config;
                        const mainPosition = config.mainPosition;
                        const crossPosition = config.crossPosition;
                        const position = {};
                        position[mainPosition] = -1;
                        position[crossPosition] = 0;
                        for (let main = 0; main < this._cells.length; main++) {
                            for (let cross = 0; cross < this._cellsPerDimension; cross++) {
                                if (this._itemFit(main, cross, item)) {
                                    position[mainPosition] = main;
                                    position[crossPosition] = cross;
                                    break
                                }
                            }
                            if (position[mainPosition] > -1) {
                                break
                            }
                        }
                        return position
                    },
                    _itemFit: function(mainPosition, crossPosition, item) {
                        let result = true;
                        const config = this._config;
                        const itemRatioMain = item[config.itemMainRatio];
                        const itemRatioCross = item[config.itemCrossRatio];
                        if (crossPosition + itemRatioCross > this._cellsPerDimension) {
                            return false
                        }
                        for (let main = mainPosition; main < mainPosition + itemRatioMain; main++) {
                            for (let cross = crossPosition; cross < crossPosition + itemRatioCross; cross++) {
                                if (this._cells.length - 1 < main) {
                                    this._cells.push(new Array(this._cellsPerDimension))
                                } else if (void 0 !== this._cells[main][cross]) {
                                    result = false;
                                    break
                                }
                            }
                        }
                        return result
                    },
                    _occupyCells: function(item, itemPosition) {
                        const config = this._config;
                        const itemPositionMain = itemPosition[config.mainPosition];
                        const itemPositionCross = itemPosition[config.crossPosition];
                        const itemRatioMain = item[config.itemMainRatio];
                        const itemRatioCross = item[config.itemCrossRatio];
                        for (let main = itemPositionMain; main < itemPositionMain + itemRatioMain; main++) {
                            for (let cross = itemPositionCross; cross < itemPositionCross + itemRatioCross; cross++) {
                                this._cells[main][cross] = item.index
                            }
                        }
                    },
                    _arrangeItem: function(item, itemPosition) {
                        const config = this._config;
                        const itemPositionMain = itemPosition[config.mainPosition];
                        const itemPositionCross = itemPosition[config.crossPosition];
                        const itemRatioMain = item[config.itemMainRatio];
                        const itemRatioCross = item[config.itemCrossRatio];
                        const baseItemCross = this.option(config.baseItemCrossDimension);
                        const baseItemMain = this.option(config.baseItemMainDimension);
                        const itemMargin = this.option("itemMargin");
                        const cssProps = {
                            display: itemRatioMain <= 0 || itemRatioCross <= 0 ? "none" : ""
                        };
                        const mainDimension = itemRatioMain * baseItemMain + (itemRatioMain - 1) * itemMargin;
                        const crossDimension = itemRatioCross * baseItemCross + (itemRatioCross - 1) * itemMargin;
                        cssProps[config.mainDimension] = mainDimension < 0 ? 0 : mainDimension;
                        cssProps[config.crossDimension] = crossDimension < 0 ? 0 : crossDimension;
                        cssProps[config.mainPosition] = itemPositionMain * baseItemMain + (itemPositionMain + 1) * itemMargin;
                        cssProps[config.crossPosition] = itemPositionCross * baseItemCross + (itemPositionCross + 1) * itemMargin;
                        if (this.option("rtlEnabled")) {
                            const offsetCorrection = (0, _size.getWidth)(this._$container);
                            const baseItemWidth = this.option("baseItemWidth");
                            const itemPositionX = itemPosition.left;
                            const offsetPosition = itemPositionX * baseItemWidth;
                            const itemBaseOffset = baseItemWidth + itemMargin;
                            const itemWidth = itemBaseOffset * item.widthRatio;
                            const subItemMargins = itemPositionX * itemMargin;
                            cssProps.left = offsetCorrection - (offsetPosition + itemWidth + subItemMargins)
                        }
                        this._itemElements().eq(item.index).css(cssProps)
                    },
                    _moveFocus: function(location) {
                        const FOCUS_UP = "up";
                        const FOCUS_DOWN = "down";
                        const FOCUS_LEFT = this.option("rtlEnabled") ? "right" : "left";
                        const FOCUS_RIGHT = this.option("rtlEnabled") ? "left" : "right";
                        const FOCUS_PAGE_UP = "pageup";
                        const FOCUS_PAGE_DOWN = "pagedown";
                        const horizontalDirection = "horizontal" === this.option("direction");
                        const cells = this._cells;
                        const index = (0, _renderer.default)(this.option("focusedElement")).index();
                        let targetCol = this._itemsPositions[index].left;
                        let targetRow = this._itemsPositions[index].top;
                        const colCount = (horizontalDirection ? cells : cells[0]).length;
                        const rowCount = (horizontalDirection ? cells[0] : cells).length;
                        const getCell = function(col, row) {
                            if (horizontalDirection) {
                                return cells[col][row]
                            }
                            return cells[row][col]
                        };
                        switch (location) {
                            case FOCUS_PAGE_UP:
                            case FOCUS_UP:
                                while (targetRow > 0 && index === getCell(targetCol, targetRow)) {
                                    targetRow--
                                }
                                if (targetRow < 0) {
                                    targetRow = 0
                                }
                                break;
                            case FOCUS_PAGE_DOWN:
                            case FOCUS_DOWN:
                                while (targetRow < rowCount && index === getCell(targetCol, targetRow)) {
                                    targetRow++
                                }
                                if (targetRow === rowCount) {
                                    targetRow = rowCount - 1
                                }
                                break;
                            case FOCUS_RIGHT:
                                while (targetCol < colCount && index === getCell(targetCol, targetRow)) {
                                    targetCol++
                                }
                                if (targetCol === colCount) {
                                    targetCol = colCount - 1
                                }
                                break;
                            case FOCUS_LEFT:
                                while (targetCol >= 0 && index === getCell(targetCol, targetRow)) {
                                    targetCol--
                                }
                                if (targetCol < 0) {
                                    targetCol = 0
                                }
                                break;
                            default:
                                this.callBase.apply(this, arguments);
                                return
                        }
                        const newTargetIndex = getCell(targetCol, targetRow);
                        if (!(0, _type.isDefined)(newTargetIndex)) {
                            return
                        }
                        const $newTarget = this._itemElements().eq(newTargetIndex);
                        this.option("focusedElement", (0, _element.getPublicElement)($newTarget));
                        this._scrollToItem($newTarget)
                    },
                    _scrollToItem: function($itemElement) {
                        if (!$itemElement.length) {
                            return
                        }
                        const config = this._config;
                        const outerMainGetter = "width" === config.mainDimension ? _size.getOuterWidth : _size.getOuterHeight;
                        const itemMargin = this.option("itemMargin");
                        const itemPosition = $itemElement.position()[config.mainPosition];
                        const itemDimension = outerMainGetter($itemElement);
                        const itemTail = itemPosition + itemDimension;
                        const scrollPosition = this.scrollPosition();
                        const clientWidth = outerMainGetter(this.$element());
                        if (scrollPosition <= itemPosition && itemTail <= scrollPosition + clientWidth) {
                            return
                        }
                        if (scrollPosition > itemPosition) {
                            this._scrollView.scrollTo(itemPosition - itemMargin)
                        } else {
                            this._scrollView.scrollTo(itemPosition + itemDimension - clientWidth + itemMargin)
                        }
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "items":
                                this.callBase(args);
                                this._renderGeometry();
                                this._updateScrollView();
                                break;
                            case "showScrollbar":
                                this._initScrollView();
                                break;
                            case "disabled":
                                this._scrollView.option("disabled", args.value);
                                this.callBase(args);
                                break;
                            case "baseItemWidth":
                            case "baseItemHeight":
                            case "itemMargin":
                                this._renderGeometry();
                                break;
                            case "width":
                            case "height":
                                this.callBase(args);
                                this._renderGeometry();
                                this._scrollView.option(args.name, args.value);
                                this._updateScrollView();
                                break;
                            case "direction":
                                this._renderGeometry();
                                this._updateScrollView();
                                break;
                            case "indicateLoading":
                                this._hideLoadingIfLoadIndicationOff();
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    scrollPosition: function() {
                        return this._scrollView.scrollOffset()[this._config.mainPosition]
                    }
                });
                (0, _component_registrator.default)("dxTileView", TileView);
                var _default = TileView;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        37748:
            /*!*********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/toast.js ***!
              \*********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _ui = (obj = __webpack_require__( /*! ./toast/ui.toast */ 18517), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _ui.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        33964:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/toast/hide_toasts.js ***!
              \*********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = (obj = __webpack_require__( /*! ../../core/renderer */ 68374), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = function(container) {
                    const toasts = (0, _renderer.default)(".".concat("dx-toast")).toArray();
                    if (!arguments.length) {
                        toasts.forEach(toast => {
                            (0, _renderer.default)(toast).dxToast("hide")
                        });
                        return
                    }
                    const containerElement = (0, _renderer.default)(container).get(0);
                    toasts.map(toast => (0, _renderer.default)(toast).dxToast("instance")).filter(instance => {
                        const toastContainerElement = (0, _renderer.default)(instance.option("container")).get(0);
                        return containerElement === toastContainerElement && containerElement
                    }).forEach(instance => {
                        instance.hide()
                    })
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        18517:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/toast/ui.toast.js ***!
              \******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/ready_callbacks */ 24311));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../events/pointer */ 93786));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../overlay/ui.overlay */ 89799));
                var _themes = __webpack_require__( /*! ../themes */ 75811);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const ready = _ready_callbacks.default.add;
                const toastTypes = ["info", "warning", "error", "success"];
                const TOAST_STACK = [];
                const POSITION_ALIASES = {
                    top: {
                        my: "top",
                        at: "top",
                        of: null,
                        offset: "0 0"
                    },
                    bottom: {
                        my: "bottom",
                        at: "bottom",
                        of: null,
                        offset: "0 -20"
                    },
                    center: {
                        my: "center",
                        at: "center",
                        of: null,
                        offset: "0 0"
                    },
                    right: {
                        my: "center right",
                        at: "center right",
                        of: null,
                        offset: "0 0"
                    },
                    left: {
                        my: "center left",
                        at: "center left",
                        of: null,
                        offset: "0 0"
                    }
                };
                const DEFAULT_BOUNDARY_OFFSET = {
                    h: 0,
                    v: 0
                };
                ready((function() {
                    _events_engine.default.subscribeGlobal(_dom_adapter.default.getDocument(), _pointer.default.down, (function(e) {
                        for (let i = TOAST_STACK.length - 1; i >= 0; i--) {
                            if (!TOAST_STACK[i]._proxiedDocumentDownHandler(e)) {
                                return
                            }
                        }
                    }))
                }));
                const Toast = _ui.default.inherit({
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            message: "",
                            type: "info",
                            displayTime: 2e3,
                            position: "bottom center",
                            animation: {
                                show: {
                                    type: "fade",
                                    duration: 400,
                                    from: 0,
                                    to: 1
                                },
                                hide: {
                                    type: "fade",
                                    duration: 400,
                                    from: 1,
                                    to: 0
                                }
                            },
                            shading: false,
                            height: "auto",
                            hideTopOverlayHandler: null,
                            preventScrollEvents: false,
                            closeOnSwipe: true,
                            closeOnClick: false
                        })
                    },
                    _defaultOptionsRules: function() {
                        const tabletAndMobileCommonOptions = {
                            displayTime: (0, _themes.isMaterialBased)() ? 4e3 : 2e3,
                            hideOnOutsideClick: true,
                            animation: {
                                show: {
                                    type: "fade",
                                    duration: 200,
                                    from: 0,
                                    to: 1
                                },
                                hide: {
                                    type: "fade",
                                    duration: 200,
                                    from: 1,
                                    to: 0
                                }
                            }
                        };
                        return this.callBase().concat([{
                            device: device => "phone" === device.deviceType,
                            options: _extends({
                                width: "calc(100vw - ".concat(40, "px)")
                            }, tabletAndMobileCommonOptions)
                        }, {
                            device: device => "tablet" === device.deviceType,
                            options: _extends({
                                width: "auto",
                                maxWidth: "80vw"
                            }, tabletAndMobileCommonOptions)
                        }, {
                            device: device => (0, _themes.isMaterialBased)() && "desktop" === device.deviceType,
                            options: {
                                minWidth: 344,
                                maxWidth: 568,
                                displayTime: 4e3
                            }
                        }])
                    },
                    _init: function() {
                        this.callBase();
                        this._posStringToObject()
                    },
                    _renderContentImpl: function() {
                        this._message = (0, _renderer.default)("<div>").addClass("dx-toast-message").text(this.option("message")).appendTo(this.$content());
                        this.setAria("role", "alert", this._message);
                        if (toastTypes.includes(this.option("type").toLowerCase())) {
                            this.$content().prepend((0, _renderer.default)("<div>").addClass("dx-toast-icon"))
                        }
                        this.callBase()
                    },
                    _render: function() {
                        this.callBase();
                        this.$element().addClass("dx-toast");
                        this.$wrapper().addClass("dx-toast-wrapper");
                        this.$content().addClass("dx-toast-" + String(this.option("type")).toLowerCase());
                        this.$content().addClass("dx-toast-content");
                        this._toggleCloseEvents("Swipe");
                        this._toggleCloseEvents("Click")
                    },
                    _toggleCloseEvents: function(event) {
                        const dxEvent = "dx" + event.toLowerCase();
                        _events_engine.default.off(this.$content(), dxEvent);
                        this.option("closeOn" + event) && _events_engine.default.on(this.$content(), dxEvent, this.hide.bind(this))
                    },
                    _posStringToObject: function() {
                        if (!(0, _type.isString)(this.option("position"))) {
                            return
                        }
                        const verticalPosition = this.option("position").split(" ")[0];
                        const horizontalPosition = this.option("position").split(" ")[1];
                        this.option("position", (0, _extend.extend)({
                            boundaryOffset: DEFAULT_BOUNDARY_OFFSET
                        }, POSITION_ALIASES[verticalPosition]));
                        switch (horizontalPosition) {
                            case "center":
                            case "left":
                            case "right":
                                this.option("position").at += " " + horizontalPosition;
                                this.option("position").my += " " + horizontalPosition
                        }
                    },
                    _show: function() {
                        return this.callBase.apply(this, arguments).always(function() {
                            clearTimeout(this._hideTimeout);
                            this._hideTimeout = setTimeout(this.hide.bind(this), this.option("displayTime"))
                        }.bind(this))
                    },
                    _overlayStack: function() {
                        return TOAST_STACK
                    },
                    _zIndexInitValue: function() {
                        return this.callBase() + 8e3
                    },
                    _dispose: function() {
                        clearTimeout(this._hideTimeout);
                        this.callBase()
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "type":
                                this.$content().removeClass("dx-toast-" + args.previousValue);
                                this.$content().addClass("dx-toast-" + String(args.value).toLowerCase());
                                break;
                            case "message":
                                if (this._message) {
                                    this._message.text(args.value)
                                }
                                break;
                            case "closeOnSwipe":
                                this._toggleCloseEvents("Swipe");
                                break;
                            case "closeOnClick":
                                this._toggleCloseEvents("Click");
                                break;
                            case "displayTime":
                                break;
                            default:
                                this.callBase(args)
                        }
                    }
                });
                (0, _component_registrator.default)("dxToast", Toast);
                var _default = Toast;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        71042:
            /*!***********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/toolbar.js ***!
              \***********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _ui = (obj = __webpack_require__( /*! ./toolbar/ui.toolbar */ 70314), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _ui.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        10329:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/toolbar/constants.js ***!
              \*********************************************************************/
            function(__unused_webpack_module, exports) {
                exports.TOOLBAR_CLASS = void 0;
                exports.TOOLBAR_CLASS = "dx-toolbar"
            },
        49150:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/toolbar/internal/ui.toolbar.menu.js ***!
              \************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../../core/devices */ 20530));
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../../widget/ui.widget */ 14390));
                var _button = _interopRequireDefault(__webpack_require__( /*! ../../button */ 63008));
                var _uiToolbarMenu = _interopRequireDefault(__webpack_require__( /*! ./ui.toolbar.menu.list */ 64017));
                var _themes = __webpack_require__( /*! ../../themes */ 75811);
                var _child_default_template = __webpack_require__( /*! ../../../core/templates/child_default_template */ 91627);
                var _uiToolbar = __webpack_require__( /*! ../ui.toolbar.utils */ 61939);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 58201);
                __webpack_require__( /*! ../../popup */ 39114);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let DropDownMenu = function(_Widget) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(DropDownMenu, _Widget);

                    function DropDownMenu() {
                        return _Widget.apply(this, arguments) || this
                    }
                    var _proto = DropDownMenu.prototype;
                    _proto._supportedKeys = function() {
                        let extension = {};
                        if (!this.option("opened") || !this._list.option("focusedElement")) {
                            extension = this._button._supportedKeys()
                        }
                        return (0, _extend.extend)(_Widget.prototype._supportedKeys.call(this), extension, {
                            tab: function() {
                                this._popup && this._popup.hide()
                            }
                        })
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_Widget.prototype._getDefaultOptions.call(this), {
                            items: [],
                            onItemClick: null,
                            dataSource: null,
                            itemTemplate: "item",
                            onButtonClick: null,
                            activeStateEnabled: true,
                            hoverStateEnabled: true,
                            opened: false,
                            onItemRendered: null,
                            closeOnClick: true,
                            useInkRipple: false,
                            container: void 0,
                            animation: {
                                show: {
                                    type: "fade",
                                    from: 0,
                                    to: 1
                                },
                                hide: {
                                    type: "fade",
                                    to: 0
                                }
                            }
                        })
                    };
                    _proto._defaultOptionsRules = function() {
                        return _Widget.prototype._defaultOptionsRules.call(this).concat([{
                            device: function() {
                                return "desktop" === _devices.default.real().deviceType && !_devices.default.isSimulator()
                            },
                            options: {
                                focusStateEnabled: true
                            }
                        }, {
                            device: function() {
                                return (0, _themes.isMaterialBased)()
                            },
                            options: {
                                useInkRipple: true,
                                animation: {
                                    show: {
                                        type: "pop",
                                        duration: 200,
                                        from: {
                                            scale: 0
                                        },
                                        to: {
                                            scale: 1
                                        }
                                    },
                                    hide: {
                                        type: "pop",
                                        duration: 200,
                                        from: {
                                            scale: 1
                                        },
                                        to: {
                                            scale: 0
                                        }
                                    }
                                }
                            }
                        }])
                    };
                    _proto._init = function() {
                        _Widget.prototype._init.call(this);
                        this.$element().addClass("dx-dropdownmenu");
                        this._initItemClickAction();
                        this._initButtonClickAction()
                    };
                    _proto._initItemClickAction = function() {
                        this._itemClickAction = this._createActionByOption("onItemClick")
                    };
                    _proto._initButtonClickAction = function() {
                        this._buttonClickAction = this._createActionByOption("onButtonClick")
                    };
                    _proto._initTemplates = function() {
                        this._templateManager.addDefaultTemplates({
                            content: new _child_default_template.ChildDefaultTemplate("content")
                        });
                        _Widget.prototype._initTemplates.call(this)
                    };
                    _proto._initMarkup = function() {
                        this._renderButton();
                        _Widget.prototype._initMarkup.call(this)
                    };
                    _proto._render = function() {
                        _Widget.prototype._render.call(this);
                        this.setAria({
                            haspopup: true,
                            expanded: this.option("opened")
                        })
                    };
                    _proto._renderContentImpl = function() {
                        if (this.option("opened")) {
                            this._renderPopup()
                        }
                    };
                    _proto._clean = function() {
                        this._cleanFocusState();
                        this._list && this._list.$element().remove();
                        this._popup && this._popup.$element().remove();
                        delete this._list;
                        delete this._popup
                    };
                    _proto._renderButton = function() {
                        const $button = this.$element().addClass("dx-dropdownmenu-button");
                        this._button = this._createComponent($button, _button.default, {
                            icon: "overflow",
                            template: "content",
                            stylingMode: (0, _themes.isFluent)() ? "text" : "contained",
                            useInkRipple: this.option("useInkRipple"),
                            hoverStateEnabled: false,
                            focusStateEnabled: false,
                            onClick: e => {
                                this.option("opened", !this.option("opened"));
                                this._buttonClickAction(e)
                            }
                        })
                    };
                    _proto._toggleActiveState = function($element, value, e) {
                        this._button._toggleActiveState($element, value, e)
                    };
                    _proto._toggleMenuVisibility = function(opened) {
                        const state = null !== opened && void 0 !== opened ? opened : !this._popup.option("visible");
                        if (opened) {
                            this._renderPopup()
                        }
                        this._popup.toggle(state);
                        this.setAria("expanded", state)
                    };
                    _proto._renderPopup = function() {
                        if (this._$popup) {
                            return
                        }
                        this._$popup = (0, _renderer.default)("<div>").appendTo(this.$element());
                        const {
                            rtlEnabled: rtlEnabled,
                            container: container,
                            animation: animation
                        } = this.option();
                        this._popup = this._createComponent(this._$popup, "dxPopup", {
                            onInitialized(_ref) {
                                let {
                                    component: component
                                } = _ref;
                                component.$wrapper().addClass("dx-dropdownmenu-popup-wrapper").addClass("dx-dropdownmenu-popup")
                            },
                            deferRendering: false,
                            contentTemplate: contentElement => this._renderList(contentElement),
                            _ignoreFunctionValueDeprecation: true,
                            maxHeight: () => this._getMaxHeight(),
                            position: {
                                my: "top ".concat(rtlEnabled ? "left" : "right"),
                                at: "bottom ".concat(rtlEnabled ? "left" : "right"),
                                collision: "fit flip",
                                offset: {
                                    v: 3
                                },
                                of: this.$element()
                            },
                            animation: animation,
                            onOptionChanged: _ref2 => {
                                let {
                                    name: name,
                                    value: value
                                } = _ref2;
                                if ("visible" === name) {
                                    this.option("opened", value)
                                }
                            },
                            container: container,
                            autoResizeEnabled: false,
                            height: "auto",
                            width: "auto",
                            hideOnOutsideClick: e => this._closeOutsideDropDownHandler(e),
                            hideOnParentScroll: true,
                            shading: false,
                            dragEnabled: false,
                            showTitle: false,
                            fullScreen: false,
                            _fixWrapperPosition: true
                        })
                    };
                    _proto._getMaxHeight = function() {
                        const $element = this.$element();
                        const offsetTop = $element.offset().top;
                        const windowHeight = (0, _size.getOuterHeight)((0, _window.getWindow)());
                        const maxHeight = Math.max(offsetTop, windowHeight - offsetTop - (0, _size.getOuterHeight)($element));
                        return Math.min(windowHeight, maxHeight - 3 - 10)
                    };
                    _proto._closeOutsideDropDownHandler = function(e) {
                        const isOutsideClick = !(0, _renderer.default)(e.target).closest(this.$element()).length;
                        return isOutsideClick
                    };
                    _proto._renderList = function(contentElement) {
                        const $content = (0, _renderer.default)(contentElement);
                        $content.addClass("dx-dropdownmenu-list");
                        this._list = this._createComponent($content, _uiToolbarMenu.default, {
                            dataSource: this._getListDataSource(),
                            pageLoadMode: "scrollBottom",
                            indicateLoading: false,
                            noDataText: "",
                            itemTemplate: this.option("itemTemplate"),
                            onItemClick: e => {
                                if (this.option("closeOnClick")) {
                                    this.option("opened", false)
                                }
                                this._itemClickAction(e)
                            },
                            tabIndex: -1,
                            focusStateEnabled: false,
                            activeStateEnabled: true,
                            onItemRendered: this.option("onItemRendered"),
                            _itemAttributes: {
                                role: "menuitem"
                            }
                        })
                    };
                    _proto._itemOptionChanged = function(item, property, value) {
                        var _this$_list;
                        null === (_this$_list = this._list) || void 0 === _this$_list ? void 0 : _this$_list._itemOptionChanged(item, property, value);
                        (0, _uiToolbar.toggleItemFocusableElementTabIndex)(this._list, item)
                    };
                    _proto._getListDataSource = function() {
                        var _this$option;
                        return null !== (_this$option = this.option("dataSource")) && void 0 !== _this$option ? _this$option : this.option("items")
                    };
                    _proto._setListDataSource = function() {
                        var _this$_list2;
                        null === (_this$_list2 = this._list) || void 0 === _this$_list2 ? void 0 : _this$_list2.option("dataSource", this._getListDataSource());
                        delete this._deferRendering
                    };
                    _proto._getKeyboardListeners = function() {
                        return _Widget.prototype._getKeyboardListeners.call(this).concat([this._list])
                    };
                    _proto._toggleVisibility = function(visible) {
                        _Widget.prototype._toggleVisibility.call(this, visible);
                        this._button.option("visible", visible)
                    };
                    _proto._optionChanged = function(args) {
                        var _this$_list3, _this$_list4, _this$_list5;
                        const {
                            name: name,
                            value: value
                        } = args;
                        switch (name) {
                            case "items":
                            case "dataSource":
                                if (!this.option("opened")) {
                                    this._deferRendering = true
                                } else {
                                    this._setListDataSource()
                                }
                                break;
                            case "itemTemplate":
                                null === (_this$_list3 = this._list) || void 0 === _this$_list3 ? void 0 : _this$_list3.option(name, this._getTemplate(value));
                                break;
                            case "onItemClick":
                                this._initItemClickAction();
                                break;
                            case "onButtonClick":
                                this._buttonClickAction();
                                break;
                            case "useInkRipple":
                                this._invalidate();
                                break;
                            case "focusStateEnabled":
                                null === (_this$_list4 = this._list) || void 0 === _this$_list4 ? void 0 : _this$_list4.option(name, value);
                                _Widget.prototype._optionChanged.call(this, args);
                                break;
                            case "onItemRendered":
                                null === (_this$_list5 = this._list) || void 0 === _this$_list5 ? void 0 : _this$_list5.option(name, value);
                                break;
                            case "opened":
                                if (this._deferRendering) {
                                    this._setListDataSource()
                                }
                                this._toggleMenuVisibility(value);
                                this._updateFocusableItemsTabIndex();
                                break;
                            case "closeOnClick":
                                break;
                            case "container":
                                this._popup && this._popup.option(name, value);
                                break;
                            case "disabled":
                                if (this._list) {
                                    this._updateFocusableItemsTabIndex()
                                }
                                break;
                            default:
                                _Widget.prototype._optionChanged.call(this, args)
                        }
                    };
                    _proto._updateFocusableItemsTabIndex = function() {
                        this.option("items").forEach(item => (0, _uiToolbar.toggleItemFocusableElementTabIndex)(this._list, item))
                    };
                    return DropDownMenu
                }(_ui.default);
                exports.default = DropDownMenu;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        64017:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/toolbar/internal/ui.toolbar.menu.list.js ***!
              \*****************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = (obj = __webpack_require__( /*! ../../../core/renderer */ 68374), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 95479);
                var _uiList = __webpack_require__( /*! ../../list/ui.list.base */ 31583);

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let ToolbarMenuList = function(_ListBase) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(ToolbarMenuList, _ListBase);

                    function ToolbarMenuList() {
                        return _ListBase.apply(this, arguments) || this
                    }
                    var _proto = ToolbarMenuList.prototype;
                    _proto._init = function() {
                        _ListBase.prototype._init.call(this);
                        this._activeStateUnit = ".".concat("dx-toolbar-menu-action", ":not(.").concat("dx-toolbar-hidden-button-group", ")")
                    };
                    _proto._initMarkup = function() {
                        this._renderSections();
                        _ListBase.prototype._initMarkup.call(this);
                        this._setMenuRole()
                    };
                    _proto._getSections = function() {
                        return this._itemContainer().children()
                    };
                    _proto._itemElements = function() {
                        return this._getSections().children(this._itemSelector())
                    };
                    _proto._renderSections = function() {
                        const $container = this._itemContainer();
                        (0, _iterator.each)(["before", "center", "after", "menu"], (_, section) => {
                            const sectionName = "_$".concat(section, "Section");
                            if (!this[sectionName]) {
                                this[sectionName] = (0, _renderer.default)("<div>").addClass("dx-toolbar-menu-section")
                            }
                            this[sectionName].appendTo($container)
                        })
                    };
                    _proto._renderItems = function() {
                        _ListBase.prototype._renderItems.apply(this, arguments);
                        this._updateSections()
                    };
                    _proto._setMenuRole = function() {
                        const $menuContainer = this.$element().find(".".concat("dx-scrollview-content"));
                        $menuContainer.attr("role", "menu")
                    };
                    _proto._updateSections = function() {
                        const $sections = this.$element().find(".".concat("dx-toolbar-menu-section"));
                        $sections.removeClass("dx-toolbar-menu-last-section");
                        $sections.not(":empty").eq(-1).addClass("dx-toolbar-menu-last-section")
                    };
                    _proto._renderItem = function(index, item, itemContainer, $after) {
                        var _item$location;
                        const location = null !== (_item$location = item.location) && void 0 !== _item$location ? _item$location : "menu";
                        const $container = this["_$".concat(location, "Section")];
                        const itemElement = _ListBase.prototype._renderItem.call(this, index, item, $container, $after);
                        if (this._getItemTemplateName({
                                itemData: item
                            })) {
                            itemElement.addClass("dx-toolbar-menu-custom")
                        }
                        if ("menu" === location || "dxButton" === item.widget || "dxButtonGroup" === item.widget || item.isAction) {
                            itemElement.addClass("dx-toolbar-menu-action")
                        }
                        if ("dxButton" === item.widget) {
                            itemElement.addClass("dx-toolbar-hidden-button")
                        }
                        if ("dxButtonGroup" === item.widget) {
                            itemElement.addClass("dx-toolbar-hidden-button-group")
                        }
                        itemElement.addClass(item.cssClass);
                        return itemElement
                    };
                    _proto._getItemTemplateName = function(args) {
                        const template = _ListBase.prototype._getItemTemplateName.call(this, args);
                        const data = args.itemData;
                        const menuTemplate = data && data.menuItemTemplate;
                        return menuTemplate || template
                    };
                    _proto._dataSourceOptions = function() {
                        return {
                            paginate: false
                        }
                    };
                    _proto._itemClickHandler = function(e, args, config) {
                        if ((0, _renderer.default)(e.target).closest(".".concat("dx-toolbar-menu-action")).length) {
                            _ListBase.prototype._itemClickHandler.call(this, e, args, config)
                        }
                    };
                    _proto._clean = function() {
                        this._getSections().empty();
                        _ListBase.prototype._clean.call(this)
                    };
                    return ToolbarMenuList
                }(_uiList.ListBase);
                exports.default = ToolbarMenuList;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        69762:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/toolbar/strategy/toolbar.multiline.js ***!
              \**************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.MultiLineStrategy = void 0;
                var _size = __webpack_require__( /*! ../../../core/utils/size */ 58664);
                let MultiLineStrategy = function() {
                    function MultiLineStrategy(toolbar) {
                        this._toolbar = toolbar
                    }
                    var _proto = MultiLineStrategy.prototype;
                    _proto._initMarkup = function() {};
                    _proto._updateMenuVisibility = function() {};
                    _proto._renderMenuItems = function() {};
                    _proto._renderItem = function() {};
                    _proto._getMenuItems = function() {};
                    _proto._getToolbarItems = function() {
                        var _this$_toolbar$option;
                        return null !== (_this$_toolbar$option = this._toolbar.option("items")) && void 0 !== _this$_toolbar$option ? _this$_toolbar$option : []
                    };
                    _proto._getItemsWidth = function() {
                        return this._toolbar._getSummaryItemsSize("width", this._toolbar.itemElements(), true)
                    };
                    _proto._arrangeItems = function() {
                        const $label = this._toolbar._$toolbarItemsContainer.find(".".concat("dx-toolbar-label")).eq(0);
                        if (!$label.length) {
                            return
                        }
                        const elementWidth = (0, _size.getWidth)(this._toolbar.$element());
                        const labelPaddings = (0, _size.getOuterWidth)($label) - (0, _size.getWidth)($label);
                        $label.css("maxWidth", elementWidth - labelPaddings)
                    };
                    _proto._hideOverflowItems = function() {};
                    _proto._dimensionChanged = function() {};
                    _proto._itemOptionChanged = function() {};
                    _proto._optionChanged = function() {};
                    return MultiLineStrategy
                }();
                exports.MultiLineStrategy = MultiLineStrategy
            },
        12086:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/toolbar/strategy/toolbar.singleline.js ***!
              \***************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.SingleLineStrategy = void 0;
                var _size = __webpack_require__( /*! ../../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 95479);
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 20576);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _uiToolbar = _interopRequireDefault(__webpack_require__( /*! ../internal/ui.toolbar.menu */ 49150));
                var _data = __webpack_require__( /*! ../../../core/utils/data */ 47617);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                let SingleLineStrategy = function() {
                    function SingleLineStrategy(toolbar) {
                        this._toolbar = toolbar
                    }
                    var _proto = SingleLineStrategy.prototype;
                    _proto._initMarkup = function() {
                        (0, _common.deferRender)(() => {
                            this._renderOverflowMenu();
                            this._renderMenuItems()
                        })
                    };
                    _proto._renderOverflowMenu = function() {
                        if (!this._hasVisibleMenuItems()) {
                            return
                        }
                        this._renderMenuButtonContainer();
                        const $menu = (0, _renderer.default)("<div>").appendTo(this._overflowMenuContainer());
                        const itemClickAction = this._toolbar._createActionByOption("onItemClick");
                        const menuItemTemplate = this._toolbar._getTemplateByOption("menuItemTemplate");
                        this._menu = this._toolbar._createComponent($menu, _uiToolbar.default, {
                            disabled: this._toolbar.option("disabled"),
                            itemTemplate: () => menuItemTemplate,
                            onItemClick: e => {
                                itemClickAction(e)
                            },
                            container: this._toolbar.option("menuContainer"),
                            onOptionChanged: _ref => {
                                let {
                                    name: name,
                                    value: value
                                } = _ref;
                                if ("opened" === name) {
                                    this._toolbar.option("overflowMenuVisible", value)
                                }
                                if ("items" === name) {
                                    this._updateMenuVisibility(value)
                                }
                            }
                        })
                    };
                    _proto.renderMenuItems = function() {
                        if (!this._menu) {
                            this._renderOverflowMenu()
                        }
                        this._menu && this._menu.option("items", this._getMenuItems());
                        if (this._menu && !this._menu.option("items").length) {
                            this._menu.option("opened", false)
                        }
                    };
                    _proto._renderMenuButtonContainer = function() {
                        this._$overflowMenuContainer = (0, _renderer.default)("<div>").appendTo(this._toolbar._$afterSection).addClass("dx-toolbar-button").addClass("dx-toolbar-menu-container")
                    };
                    _proto._overflowMenuContainer = function() {
                        return this._$overflowMenuContainer
                    };
                    _proto._updateMenuVisibility = function(menuItems) {
                        const items = null !== menuItems && void 0 !== menuItems ? menuItems : this._getMenuItems();
                        const isMenuVisible = items.length && this._hasVisibleMenuItems(items);
                        this._toggleMenuVisibility(isMenuVisible)
                    };
                    _proto._toggleMenuVisibility = function(value) {
                        if (!this._overflowMenuContainer()) {
                            return
                        }
                        this._overflowMenuContainer().toggleClass("dx-state-invisible", !value)
                    };
                    _proto._renderMenuItems = function() {
                        (0, _common.deferRender)(() => {
                            this.renderMenuItems()
                        })
                    };
                    _proto._dimensionChanged = function() {
                        this.renderMenuItems()
                    };
                    _proto._getToolbarItems = function() {
                        var _this$_toolbar$option;
                        return (0, _common.grep)(null !== (_this$_toolbar$option = this._toolbar.option("items")) && void 0 !== _this$_toolbar$option ? _this$_toolbar$option : [], item => !this._toolbar._isMenuItem(item))
                    };
                    _proto._getHiddenItems = function() {
                        return this._toolbar._itemContainer().children(".".concat("dx-toolbar-item-auto-hide", ".").concat("dx-toolbar-item-invisible")).not(".".concat("dx-state-invisible"))
                    };
                    _proto._getMenuItems = function() {
                        var _this$_toolbar$option2, _this$_restoreItems;
                        const menuItems = (0, _common.grep)(null !== (_this$_toolbar$option2 = this._toolbar.option("items")) && void 0 !== _this$_toolbar$option2 ? _this$_toolbar$option2 : [], item => this._toolbar._isMenuItem(item));
                        const $hiddenItems = this._getHiddenItems();
                        this._restoreItems = null !== (_this$_restoreItems = this._restoreItems) && void 0 !== _this$_restoreItems ? _this$_restoreItems : [];
                        const overflowItems = [].slice.call($hiddenItems).map(hiddenItem => {
                            const itemData = this._toolbar._getItemData(hiddenItem);
                            const $itemContainer = (0, _renderer.default)(hiddenItem);
                            const $itemMarkup = $itemContainer.children();
                            return (0, _extend.extend)({
                                menuItemTemplate: () => {
                                    this._restoreItems.push({
                                        container: $itemContainer,
                                        item: $itemMarkup
                                    });
                                    const $container = (0, _renderer.default)("<div>").addClass("dx-toolbar-item-auto-hide");
                                    return $container.append($itemMarkup)
                                }
                            }, itemData)
                        });
                        return [...overflowItems, ...menuItems]
                    };
                    _proto._hasVisibleMenuItems = function(items) {
                        const menuItems = null !== items && void 0 !== items ? items : this._toolbar.option("items");
                        let result = false;
                        const optionGetter = (0, _data.compileGetter)("visible");
                        const overflowGetter = (0, _data.compileGetter)("locateInMenu");
                        (0, _iterator.each)(menuItems, (function(index, item) {
                            const itemVisible = optionGetter(item, {
                                functionsAsIs: true
                            });
                            const itemOverflow = overflowGetter(item, {
                                functionsAsIs: true
                            });
                            if (false !== itemVisible && ("auto" === itemOverflow || "always" === itemOverflow) || "menu" === item.location) {
                                result = true
                            }
                        }));
                        return result
                    };
                    _proto._arrangeItems = function() {
                        var _this$_restoreItems2;
                        this._toolbar._$centerSection.css({
                            margin: "0 auto",
                            float: "none"
                        });
                        (0, _iterator.each)(null !== (_this$_restoreItems2 = this._restoreItems) && void 0 !== _this$_restoreItems2 ? _this$_restoreItems2 : [], (function(_, obj) {
                            (0, _renderer.default)(obj.container).append(obj.item)
                        }));
                        this._restoreItems = [];
                        const elementWidth = (0, _size.getWidth)(this._toolbar.$element());
                        this._hideOverflowItems(elementWidth);
                        return elementWidth
                    };
                    _proto._hideOverflowItems = function(elementWidth) {
                        var _elementWidth;
                        const overflowItems = this._toolbar.$element().find(".".concat("dx-toolbar-item-auto-hide"));
                        if (!overflowItems.length) {
                            return
                        }
                        elementWidth = null !== (_elementWidth = elementWidth) && void 0 !== _elementWidth ? _elementWidth : (0, _size.getWidth)(this._toolbar.$element());
                        (0, _renderer.default)(overflowItems).removeClass("dx-toolbar-item-invisible");
                        let itemsWidth = this._getItemsWidth();
                        while (overflowItems.length && elementWidth < itemsWidth) {
                            const $item = overflowItems.eq(-1);
                            $item.addClass("dx-toolbar-item-invisible");
                            itemsWidth = this._getItemsWidth();
                            overflowItems.splice(-1, 1)
                        }
                    };
                    _proto._getItemsWidth = function() {
                        return this._toolbar._getSummaryItemsSize("width", [this._toolbar._$beforeSection, this._toolbar._$centerSection, this._toolbar._$afterSection])
                    };
                    _proto._itemOptionChanged = function(item, property, value) {
                        if ("disabled" === property || "options.disabled" === property) {
                            if (this._toolbar._isMenuItem(item)) {
                                var _this$_menu;
                                null === (_this$_menu = this._menu) || void 0 === _this$_menu ? void 0 : _this$_menu._itemOptionChanged(item, property, value);
                                return
                            }
                        }
                        this.renderMenuItems()
                    };
                    _proto._renderItem = function(item, itemElement) {
                        if ("auto" === item.locateInMenu) {
                            itemElement.addClass("dx-toolbar-item-auto-hide")
                        }
                    };
                    _proto._optionChanged = function(name, value) {
                        var _this$_menu2, _this$_menu3, _this$_menu4, _this$_menu5, _this$_menu6;
                        switch (name) {
                            case "disabled":
                                null === (_this$_menu2 = this._menu) || void 0 === _this$_menu2 ? void 0 : _this$_menu2.option(name, value);
                                break;
                            case "overflowMenuVisible":
                                null === (_this$_menu3 = this._menu) || void 0 === _this$_menu3 ? void 0 : _this$_menu3.option("opened", value);
                                break;
                            case "onItemClick":
                                null === (_this$_menu4 = this._menu) || void 0 === _this$_menu4 ? void 0 : _this$_menu4.option(name, value);
                                break;
                            case "menuContainer":
                                null === (_this$_menu5 = this._menu) || void 0 === _this$_menu5 ? void 0 : _this$_menu5.option("container", value);
                                break;
                            case "menuItemTemplate":
                                null === (_this$_menu6 = this._menu) || void 0 === _this$_menu6 ? void 0 : _this$_menu6.option("itemTemplate", value)
                        }
                    };
                    return SingleLineStrategy
                }();
                exports.SingleLineStrategy = SingleLineStrategy
            },
        997:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/toolbar/ui.toolbar.base.js ***!
              \***************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _themes = __webpack_require__( /*! ../themes */ 75811);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _position = __webpack_require__( /*! ../../core/utils/position */ 37518);
                var _uiCollection_widget = _interopRequireDefault(__webpack_require__( /*! ../collection/ui.collection_widget.async */ 25970));
                var _bindable_template = __webpack_require__( /*! ../../core/templates/bindable_template */ 93280);
                var _fx = _interopRequireDefault(__webpack_require__( /*! ../../animation/fx */ 87209));
                var _constants = __webpack_require__( /*! ./constants */ 10329);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let ToolbarBase = function(_AsyncCollectionWidge) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(ToolbarBase, _AsyncCollectionWidge);

                    function ToolbarBase() {
                        return _AsyncCollectionWidge.apply(this, arguments) || this
                    }
                    var _proto = ToolbarBase.prototype;
                    _proto._getSynchronizableOptionsForCreateComponent = function() {
                        return _AsyncCollectionWidge.prototype._getSynchronizableOptionsForCreateComponent.call(this).filter(item => "disabled" !== item)
                    };
                    _proto._initTemplates = function() {
                        _AsyncCollectionWidge.prototype._initTemplates.call(this);
                        const template = new _bindable_template.BindableTemplate(function($container, data, rawModel) {
                            if ((0, _type.isPlainObject)(data)) {
                                const {
                                    text: text,
                                    html: html,
                                    widget: widget
                                } = data;
                                if (text) {
                                    $container.text(text).wrapInner("<div>")
                                }
                                if (html) {
                                    $container.html(html)
                                }
                                if ("dxDropDownButton" === widget) {
                                    var _data$options;
                                    data.options = null !== (_data$options = data.options) && void 0 !== _data$options ? _data$options : {};
                                    if (!(0, _type.isDefined)(data.options.stylingMode)) {
                                        data.options.stylingMode = this.option("useFlatButtons") ? "text" : "contained"
                                    }
                                }
                                if ("dxButton" === widget) {
                                    if (this.option("useFlatButtons")) {
                                        var _data$options2, _data$options$styling;
                                        data.options = null !== (_data$options2 = data.options) && void 0 !== _data$options2 ? _data$options2 : {};
                                        data.options.stylingMode = null !== (_data$options$styling = data.options.stylingMode) && void 0 !== _data$options$styling ? _data$options$styling : "text"
                                    }
                                    if (this.option("useDefaultButtons")) {
                                        var _data$options3, _data$options$type;
                                        data.options = null !== (_data$options3 = data.options) && void 0 !== _data$options3 ? _data$options3 : {};
                                        data.options.type = null !== (_data$options$type = data.options.type) && void 0 !== _data$options$type ? _data$options$type : "default"
                                    }
                                }
                            } else {
                                $container.text(String(data))
                            }
                            this._getTemplate("dx-polymorph-widget").render({
                                container: $container,
                                model: rawModel,
                                parent: this
                            })
                        }.bind(this), ["text", "html", "widget", "options"], this.option("integrationOptions.watchMethod"));
                        this._templateManager.addDefaultTemplates({
                            item: template,
                            menuItem: template
                        })
                    };
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_AsyncCollectionWidge.prototype._getDefaultOptions.call(this), {
                            renderAs: "topToolbar",
                            grouped: false,
                            useFlatButtons: false,
                            useDefaultButtons: false
                        })
                    };
                    _proto._defaultOptionsRules = function() {
                        return _AsyncCollectionWidge.prototype._defaultOptionsRules.call(this).concat([{
                            device: function() {
                                return (0, _themes.isMaterialBased)()
                            },
                            options: {
                                useFlatButtons: true
                            }
                        }])
                    };
                    _proto._itemContainer = function() {
                        return this._$toolbarItemsContainer.find([".".concat("dx-toolbar-before"), ".".concat("dx-toolbar-center"), ".".concat("dx-toolbar-after")].join(","))
                    };
                    _proto._itemClass = function() {
                        return "dx-toolbar-item"
                    };
                    _proto._itemDataKey = function() {
                        return "dxToolbarItemDataKey"
                    };
                    _proto._dimensionChanged = function() {
                        if (this._disposed) {
                            return
                        }
                        this._arrangeItems();
                        this._applyCompactMode()
                    };
                    _proto._initMarkup = function() {
                        this._renderToolbar();
                        this._renderSections();
                        _AsyncCollectionWidge.prototype._initMarkup.call(this)
                    };
                    _proto._render = function() {
                        _AsyncCollectionWidge.prototype._render.call(this);
                        this._renderItemsAsync();
                        this._updateDimensionsInMaterial()
                    };
                    _proto._postProcessRenderItems = function() {
                        this._arrangeItems()
                    };
                    _proto._renderToolbar = function() {
                        this.$element().addClass(_constants.TOOLBAR_CLASS);
                        this._$toolbarItemsContainer = (0, _renderer.default)("<div>").addClass("dx-toolbar-items-container").appendTo(this.$element());
                        this.setAria("role", "toolbar")
                    };
                    _proto._renderSections = function() {
                        const $container = this._$toolbarItemsContainer;
                        (0, _iterator.each)(["before", "center", "after"], (_, section) => {
                            const sectionClass = "dx-toolbar-".concat(section);
                            const $section = $container.find(".".concat(sectionClass));
                            if (!$section.length) {
                                this["_$".concat(section, "Section")] = (0, _renderer.default)("<div>").addClass(sectionClass).attr("role", "presentation").appendTo($container)
                            }
                        })
                    };
                    _proto._arrangeItems = function(elementWidth) {
                        var _elementWidth;
                        elementWidth = null !== (_elementWidth = elementWidth) && void 0 !== _elementWidth ? _elementWidth : (0, _size.getWidth)(this.$element());
                        this._$centerSection.css({
                            margin: "0 auto",
                            float: "none"
                        });
                        const beforeRect = (0, _position.getBoundingRect)(this._$beforeSection.get(0));
                        const afterRect = (0, _position.getBoundingRect)(this._$afterSection.get(0));
                        this._alignCenterSection(beforeRect, afterRect, elementWidth);
                        const $label = this._$toolbarItemsContainer.find(".".concat("dx-toolbar-label")).eq(0);
                        const $section = $label.parent();
                        if (!$label.length) {
                            return
                        }
                        const labelOffset = beforeRect.width ? beforeRect.width : $label.position().left;
                        const widthBeforeSection = $section.hasClass("dx-toolbar-before") ? 0 : labelOffset;
                        const widthAfterSection = $section.hasClass("dx-toolbar-after") ? 0 : afterRect.width;
                        let elemsAtSectionWidth = 0;
                        $section.children().not(".".concat("dx-toolbar-label")).each((function() {
                            elemsAtSectionWidth += (0, _size.getOuterWidth)(this)
                        }));
                        const freeSpace = elementWidth - elemsAtSectionWidth;
                        const sectionMaxWidth = Math.max(freeSpace - widthBeforeSection - widthAfterSection, 0);
                        if ($section.hasClass("dx-toolbar-before")) {
                            this._alignSection(this._$beforeSection, sectionMaxWidth)
                        } else {
                            const labelPaddings = (0, _size.getOuterWidth)($label) - (0, _size.getWidth)($label);
                            $label.css("maxWidth", sectionMaxWidth - labelPaddings)
                        }
                    };
                    _proto._alignCenterSection = function(beforeRect, afterRect, elementWidth) {
                        this._alignSection(this._$centerSection, elementWidth - beforeRect.width - afterRect.width);
                        const isRTL = this.option("rtlEnabled");
                        const leftRect = isRTL ? afterRect : beforeRect;
                        const rightRect = isRTL ? beforeRect : afterRect;
                        const centerRect = (0, _position.getBoundingRect)(this._$centerSection.get(0));
                        if (leftRect.right > centerRect.left || centerRect.right > rightRect.left) {
                            this._$centerSection.css({
                                marginLeft: leftRect.width,
                                marginRight: rightRect.width,
                                float: leftRect.width > rightRect.width ? "none" : "right"
                            })
                        }
                    };
                    _proto._alignSection = function($section, maxWidth) {
                        const $labels = $section.find(".".concat("dx-toolbar-label"));
                        let labels = $labels.toArray();
                        maxWidth -= this._getCurrentLabelsPaddings(labels);
                        const currentWidth = this._getCurrentLabelsWidth(labels);
                        const difference = Math.abs(currentWidth - maxWidth);
                        if (maxWidth < currentWidth) {
                            labels = labels.reverse();
                            this._alignSectionLabels(labels, difference, false)
                        } else {
                            this._alignSectionLabels(labels, difference, true)
                        }
                    };
                    _proto._alignSectionLabels = function(labels, difference, expanding) {
                        const getRealLabelWidth = function(label) {
                            return (0, _position.getBoundingRect)(label).width
                        };
                        for (let i = 0; i < labels.length; i++) {
                            const $label = (0, _renderer.default)(labels[i]);
                            const currentLabelWidth = Math.ceil(getRealLabelWidth(labels[i]));
                            let labelMaxWidth;
                            if (expanding) {
                                $label.css("maxWidth", "inherit")
                            }
                            const possibleLabelWidth = Math.ceil(expanding ? getRealLabelWidth(labels[i]) : currentLabelWidth);
                            if (possibleLabelWidth < difference) {
                                labelMaxWidth = expanding ? possibleLabelWidth : 0;
                                difference -= possibleLabelWidth
                            } else {
                                labelMaxWidth = expanding ? currentLabelWidth + difference : currentLabelWidth - difference;
                                $label.css("maxWidth", labelMaxWidth);
                                break
                            }
                            $label.css("maxWidth", labelMaxWidth)
                        }
                    };
                    _proto._applyCompactMode = function() {
                        const $element = this.$element();
                        $element.removeClass("dx-toolbar-compact");
                        if (this.option("compactMode") && this._getSummaryItemsSize("width", this.itemElements(), true) > (0, _size.getWidth)($element)) {
                            $element.addClass("dx-toolbar-compact")
                        }
                    };
                    _proto._getCurrentLabelsWidth = function(labels) {
                        let width = 0;
                        labels.forEach((function(label, index) {
                            width += (0, _size.getOuterWidth)(label)
                        }));
                        return width
                    };
                    _proto._getCurrentLabelsPaddings = function(labels) {
                        let padding = 0;
                        labels.forEach((function(label, index) {
                            padding += (0, _size.getOuterWidth)(label) - (0, _size.getWidth)(label)
                        }));
                        return padding
                    };
                    _proto._renderItem = function(index, item, itemContainer, $after) {
                        var _item$location, _item$text;
                        const location = null !== (_item$location = item.location) && void 0 !== _item$location ? _item$location : "center";
                        const container = null !== itemContainer && void 0 !== itemContainer ? itemContainer : this["_$".concat(location, "Section")];
                        const itemHasText = !!(null !== (_item$text = item.text) && void 0 !== _item$text ? _item$text : item.html);
                        const itemElement = _AsyncCollectionWidge.prototype._renderItem.call(this, index, item, container, $after);
                        itemElement.toggleClass("dx-toolbar-button", !itemHasText).toggleClass("dx-toolbar-label", itemHasText).addClass(item.cssClass);
                        return itemElement
                    };
                    _proto._renderGroupedItems = function() {
                        (0, _iterator.each)(this.option("items"), (groupIndex, group) => {
                            var _group$location;
                            const groupItems = group.items;
                            const $container = (0, _renderer.default)("<div>").addClass("dx-toolbar-group");
                            const location = null !== (_group$location = group.location) && void 0 !== _group$location ? _group$location : "center";
                            if (!groupItems || !groupItems.length) {
                                return
                            }(0, _iterator.each)(groupItems, (itemIndex, item) => {
                                this._renderItem(itemIndex, item, $container, null)
                            });
                            this._$toolbarItemsContainer.find(".dx-toolbar-".concat(location)).append($container)
                        })
                    };
                    _proto._renderItems = function(items) {
                        const grouped = this.option("grouped") && items.length && items[0].items;
                        grouped ? this._renderGroupedItems() : _AsyncCollectionWidge.prototype._renderItems.call(this, items)
                    };
                    _proto._getToolbarItems = function() {
                        var _this$option;
                        return null !== (_this$option = this.option("items")) && void 0 !== _this$option ? _this$option : []
                    };
                    _proto._renderContentImpl = function() {
                        const items = this._getToolbarItems();
                        this.$element().toggleClass("dx-toolbar-mini", 0 === items.length);
                        if (this._renderedItemsCount) {
                            this._renderItems(items.slice(this._renderedItemsCount))
                        } else {
                            this._renderItems(items)
                        }
                        this._applyCompactMode()
                    };
                    _proto._renderEmptyMessage = function() {};
                    _proto._clean = function() {
                        this._$toolbarItemsContainer.children().empty();
                        this.$element().empty();
                        delete this._$beforeSection;
                        delete this._$centerSection;
                        delete this._$afterSection
                    };
                    _proto._visibilityChanged = function(visible) {
                        if (visible) {
                            this._arrangeItems()
                        }
                    };
                    _proto._isVisible = function() {
                        return (0, _size.getWidth)(this.$element()) > 0 && (0, _size.getHeight)(this.$element()) > 0
                    };
                    _proto._getIndexByItem = function(item) {
                        return this._getToolbarItems().indexOf(item)
                    };
                    _proto._itemOptionChanged = function(item, property, value) {
                        _AsyncCollectionWidge.prototype._itemOptionChanged.apply(this, [item, property, value]);
                        this._arrangeItems()
                    };
                    _proto._optionChanged = function(_ref) {
                        let {
                            name: name,
                            value: value
                        } = _ref;
                        switch (name) {
                            case "width":
                                _AsyncCollectionWidge.prototype._optionChanged.apply(this, arguments);
                                this._dimensionChanged();
                                break;
                            case "renderAs":
                            case "useFlatButtons":
                            case "useDefaultButtons":
                                this._invalidate();
                                break;
                            case "compactMode":
                                this._applyCompactMode();
                                break;
                            case "grouped":
                                break;
                            default:
                                _AsyncCollectionWidge.prototype._optionChanged.apply(this, arguments)
                        }
                    };
                    _proto._dispose = function() {
                        _AsyncCollectionWidge.prototype._dispose.call(this);
                        clearTimeout(this._waitParentAnimationTimeout)
                    };
                    _proto._updateDimensionsInMaterial = function() {
                        if ((0, _themes.isMaterial)()) {
                            const _waitParentAnimationFinished = () => new Promise(resolve => {
                                const check = () => {
                                    let readyToResolve = true;
                                    this.$element().parents().each((_, parent) => {
                                        if (_fx.default.isAnimating((0, _renderer.default)(parent))) {
                                            readyToResolve = false;
                                            return false
                                        }
                                    });
                                    if (readyToResolve) {
                                        resolve()
                                    }
                                    return readyToResolve
                                };
                                const runCheck = () => {
                                    clearTimeout(this._waitParentAnimationTimeout);
                                    this._waitParentAnimationTimeout = setTimeout(() => check() || runCheck(), 15)
                                };
                                runCheck()
                            });
                            const _checkWebFontForLabelsLoaded = () => {
                                const $labels = this.$element().find(".".concat("dx-toolbar-label"));
                                const promises = [];
                                $labels.each((_, label) => {
                                    const text = (0, _renderer.default)(label).text();
                                    const fontWeight = (0, _renderer.default)(label).css("fontWeight");
                                    promises.push((0, _themes.waitWebFont)(text, fontWeight))
                                });
                                return Promise.all(promises)
                            };
                            Promise.all([_waitParentAnimationFinished(), _checkWebFontForLabelsLoaded()]).then(() => {
                                this._dimensionChanged()
                            })
                        }
                    };
                    return ToolbarBase
                }(_uiCollection_widget.default);
                (0, _component_registrator.default)("dxToolbarBase", ToolbarBase);
                var _default = ToolbarBase;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        70314:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/toolbar/ui.toolbar.js ***!
              \**********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _uiToolbar = _interopRequireDefault(__webpack_require__( /*! ./ui.toolbar.base */ 997));
                var _uiToolbar2 = __webpack_require__( /*! ./ui.toolbar.utils */ 61939);
                var _toolbar = __webpack_require__( /*! ./strategy/toolbar.multiline */ 69762);
                var _toolbar2 = __webpack_require__( /*! ./strategy/toolbar.singleline */ 12086);

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let Toolbar = function(_ToolbarBase) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(Toolbar, _ToolbarBase);

                    function Toolbar() {
                        return _ToolbarBase.apply(this, arguments) || this
                    }
                    var _proto = Toolbar.prototype;
                    _proto._getDefaultOptions = function() {
                        return (0, _extend.extend)(_ToolbarBase.prototype._getDefaultOptions.call(this), {
                            menuItemTemplate: "menuItem",
                            menuContainer: void 0,
                            overflowMenuVisible: false,
                            multiline: false
                        })
                    };
                    _proto._isMultiline = function() {
                        return this.option("multiline")
                    };
                    _proto._dimensionChanged = function(dimension) {
                        if ("height" === dimension) {
                            return
                        }
                        _ToolbarBase.prototype._dimensionChanged.call(this);
                        this._layoutStrategy._dimensionChanged()
                    };
                    _proto._initMarkup = function() {
                        _ToolbarBase.prototype._initMarkup.call(this);
                        this._updateFocusableItemsTabIndex();
                        this._layoutStrategy._initMarkup()
                    };
                    _proto._renderToolbar = function() {
                        _ToolbarBase.prototype._renderToolbar.call(this);
                        this._renderLayoutStrategy()
                    };
                    _proto._itemContainer = function() {
                        if (this._isMultiline()) {
                            return this._$toolbarItemsContainer
                        }
                        return _ToolbarBase.prototype._itemContainer.call(this)
                    };
                    _proto._renderLayoutStrategy = function() {
                        this.$element().toggleClass("dx-toolbar-multiline", this._isMultiline());
                        this._layoutStrategy = this._isMultiline() ? new _toolbar.MultiLineStrategy(this) : new _toolbar2.SingleLineStrategy(this)
                    };
                    _proto._renderSections = function() {
                        if (this._isMultiline()) {
                            return
                        }
                        return _ToolbarBase.prototype._renderSections.call(this)
                    };
                    _proto._postProcessRenderItems = function() {
                        this._layoutStrategy._hideOverflowItems();
                        this._layoutStrategy._updateMenuVisibility();
                        _ToolbarBase.prototype._postProcessRenderItems.call(this);
                        this._layoutStrategy._renderMenuItems()
                    };
                    _proto._renderItem = function(index, item, itemContainer, $after) {
                        const itemElement = _ToolbarBase.prototype._renderItem.call(this, index, item, itemContainer, $after);
                        this._layoutStrategy._renderItem(item, itemElement);
                        const {
                            widget: widget,
                            showText: showText
                        } = item;
                        if ("dxButton" === widget && "inMenu" === showText) {
                            itemElement.toggleClass("dx-toolbar-text-auto-hide")
                        }
                        return itemElement
                    };
                    _proto._getItemsWidth = function() {
                        return this._layoutStrategy._getItemsWidth()
                    };
                    _proto._getMenuItems = function() {
                        return this._layoutStrategy._getMenuItems()
                    };
                    _proto._getToolbarItems = function() {
                        return this._layoutStrategy._getToolbarItems()
                    };
                    _proto._arrangeItems = function() {
                        if (this.$element().is(":hidden")) {
                            return
                        }
                        const elementWidth = this._layoutStrategy._arrangeItems();
                        if (!this._isMultiline()) {
                            _ToolbarBase.prototype._arrangeItems.call(this, elementWidth)
                        }
                    };
                    _proto._itemOptionChanged = function(item, property, value) {
                        if (!this._isMenuItem(item)) {
                            _ToolbarBase.prototype._itemOptionChanged.call(this, item, property, value)
                        }
                        this._layoutStrategy._itemOptionChanged(item, property, value);
                        if ("disabled" === property || "options.disabled" === property) {
                            (0, _uiToolbar2.toggleItemFocusableElementTabIndex)(this, item)
                        }
                        if ("location" === property) {
                            this.repaint()
                        }
                    };
                    _proto._updateFocusableItemsTabIndex = function() {
                        this._getToolbarItems().forEach(item => (0, _uiToolbar2.toggleItemFocusableElementTabIndex)(this, item))
                    };
                    _proto._isMenuItem = function(itemData) {
                        return "menu" === itemData.location || "always" === itemData.locateInMenu
                    };
                    _proto._isToolbarItem = function(itemData) {
                        return void 0 === itemData.location || "never" === itemData.locateInMenu
                    };
                    _proto._optionChanged = function(_ref) {
                        let {
                            name: name,
                            value: value
                        } = _ref;
                        this._layoutStrategy._optionChanged(name, value);
                        switch (name) {
                            case "menuContainer":
                            case "menuItemTemplate":
                            case "overflowMenuVisible":
                                break;
                            case "multiline":
                                this._invalidate();
                                break;
                            case "disabled":
                                _ToolbarBase.prototype._optionChanged.apply(this, arguments);
                                this._updateFocusableItemsTabIndex();
                                break;
                            default:
                                _ToolbarBase.prototype._optionChanged.apply(this, arguments)
                        }
                    };
                    _proto.updateDimensions = function() {
                        this._dimensionChanged()
                    };
                    return Toolbar
                }(_uiToolbar.default);
                (0, _component_registrator.default)("dxToolbar", Toolbar);
                var _default = Toolbar;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        61939:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/toolbar/ui.toolbar.utils.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.toggleItemFocusableElementTabIndex = function(context, item) {
                    var _itemData$options;
                    if (!context) {
                        return
                    }
                    const $item = context._findItemElementByItem(item);
                    if (!$item.length) {
                        return
                    }
                    const itemData = context._getItemData($item);
                    const isItemNotFocusable = !!(null !== (_itemData$options = itemData.options) && void 0 !== _itemData$options && _itemData$options.disabled || itemData.disabled || context.option("disabled"));
                    const {
                        widget: widget
                    } = itemData;
                    if (widget && -1 !== TOOLBAR_ITEMS.indexOf(widget)) {
                        const $widget = $item.find(widget.toLowerCase().replace("dx", ".dx-"));
                        if ($widget.length) {
                            var _itemInstance$_focusT, _itemData$options2;
                            const itemInstance = function($element) {
                                const itemData = $element.data && $element.data();
                                const dxComponents = itemData && itemData.dxComponents;
                                const widgetName = dxComponents && dxComponents[0];
                                return widgetName && itemData[widgetName]
                            }($widget);
                            if (!itemInstance) {
                                return
                            }
                            let $focusTarget = null === (_itemInstance$_focusT = itemInstance._focusTarget) || void 0 === _itemInstance$_focusT ? void 0 : _itemInstance$_focusT.call(itemInstance);
                            if ("dxDropDownButton" === widget) {
                                $focusTarget = $focusTarget && $focusTarget.find(".".concat("dx-buttongroup"))
                            } else {
                                var _$focusTarget;
                                $focusTarget = null !== (_$focusTarget = $focusTarget) && void 0 !== _$focusTarget ? _$focusTarget : (0, _renderer.default)(itemInstance.element())
                            }
                            const tabIndex = null === (_itemData$options2 = itemData.options) || void 0 === _itemData$options2 ? void 0 : _itemData$options2.tabIndex;
                            if (isItemNotFocusable) {
                                $focusTarget.attr("tabIndex", -1)
                            } else {
                                $focusTarget.attr("tabIndex", null !== tabIndex && void 0 !== tabIndex ? tabIndex : 0)
                            }
                        }
                    }
                };
                var _renderer = (obj = __webpack_require__( /*! ../../core/renderer */ 68374), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const TOOLBAR_ITEMS = ["dxAutocomplete", "dxButton", "dxCheckBox", "dxDateBox", "dxMenu", "dxSelectBox", "dxTabs", "dxTextBox", "dxButtonGroup", "dxDropDownButton"]
            },
        94920:
            /*!***********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/tooltip.js ***!
              \***********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _tooltip = (obj = __webpack_require__( /*! ./tooltip/tooltip */ 4731), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _tooltip.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        4731:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/tooltip/tooltip.js ***!
              \*******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../../core/guid */ 73176));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../popover/ui.popover */ 17287));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const Tooltip = _ui.default.inherit({
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            toolbarItems: [],
                            showCloseButton: false,
                            enableBodyScroll: true,
                            showTitle: false,
                            title: null,
                            titleTemplate: null,
                            onTitleRendered: null,
                            bottomTemplate: null,
                            preventScrollEvents: false,
                            propagateOutsideClick: true
                        })
                    },
                    _render: function() {
                        this.$element().addClass("dx-tooltip");
                        this.$wrapper().addClass("dx-tooltip-wrapper");
                        this.callBase()
                    },
                    _renderContent: function() {
                        this.callBase();
                        this._toggleAriaAttributes()
                    },
                    _toggleAriaDescription: function(showing) {
                        const $target = (0, _renderer.default)(this.option("target"));
                        const label = showing ? this._contentId : void 0;
                        if (!(0, _type.isWindow)($target.get(0))) {
                            this.setAria("describedby", label, $target)
                        }
                    },
                    _toggleAriaAttributes: function() {
                        this._contentId = "dx-".concat(new _guid.default);
                        this.$overlayContent().attr({
                            id: this._contentId
                        });
                        this._toggleAriaDescription(true)
                    }
                });
                (0, _component_registrator.default)("dxTooltip", Tooltip);
                var _default = Tooltip;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        63898:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/tooltip/ui.tooltip.js ***!
              \**********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.hide = function() {
                    if (!tooltip) {
                        return (new _deferred.Deferred).resolve()
                    }
                    return tooltip.hide().done(removeTooltip).promise()
                };
                exports.show = function(options) {
                    removeTooltip();
                    ! function(options) {
                        options = (0, _extend.extend)({
                            position: "top"
                        }, options);
                        const content = options.content;
                        delete options.content;
                        const $tooltip = (0, _renderer.default)("<div>").html(content).appendTo((0, _view_port.value)());
                        removeTooltipElement = function() {
                            $tooltip.remove()
                        };
                        tooltip = new _tooltip.default($tooltip, options)
                    }(options);
                    return tooltip.show()
                };
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _tooltip = _interopRequireDefault(__webpack_require__( /*! ./tooltip */ 4731));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _view_port = __webpack_require__( /*! ../../core/utils/view_port */ 77695);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                let tooltip = null;
                let removeTooltipElement = null;
                const removeTooltip = function() {
                    if (!tooltip) {
                        return
                    }
                    removeTooltipElement();
                    tooltip = null
                }
            },
        39661:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/track_bar.js ***!
              \*************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _editor = _interopRequireDefault(__webpack_require__( /*! ./editor/editor */ 96452));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _window = __webpack_require__( /*! ../core/utils/window */ 58201);
                var _fx = _interopRequireDefault(__webpack_require__( /*! ../animation/fx */ 87209));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const TrackBar = _editor.default.inherit({
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            min: 0,
                            max: 100,
                            value: 0
                        })
                    },
                    _initMarkup: function() {
                        this.$element().addClass("dx-trackbar");
                        this._renderWrapper();
                        this._renderContainer();
                        this._renderRange();
                        this._renderValue();
                        this._setRangeStyles();
                        this.callBase()
                    },
                    _render: function() {
                        this.callBase();
                        this._setRangeStyles(this._rangeStylesConfig())
                    },
                    _renderWrapper: function() {
                        this._$wrapper = (0, _renderer.default)("<div>").addClass("dx-trackbar-wrapper").appendTo(this.$element())
                    },
                    _renderContainer: function() {
                        this._$bar = (0, _renderer.default)("<div>").addClass("dx-trackbar-container").appendTo(this._$wrapper)
                    },
                    _renderRange: function() {
                        this._$range = (0, _renderer.default)("<div>").addClass("dx-trackbar-range").appendTo(this._$bar)
                    },
                    _renderValue: function() {
                        const val = this.option("value");
                        const min = this.option("min");
                        const max = this.option("max");
                        if (min > max) {
                            return
                        }
                        if (val < min) {
                            this.option("value", min);
                            this._currentRatio = 0;
                            return
                        }
                        if (val > max) {
                            this.option("value", max);
                            this._currentRatio = 1;
                            return
                        }
                        const ratio = min === max ? 0 : (val - min) / (max - min);
                        !this._needPreventAnimation && this._setRangeStyles({
                            width: 100 * ratio + "%"
                        });
                        this.setAria({
                            valuemin: this.option("min"),
                            valuemax: max,
                            valuenow: val
                        });
                        this._currentRatio = ratio
                    },
                    _rangeStylesConfig: function() {
                        return {
                            width: 100 * this._currentRatio + "%"
                        }
                    },
                    _setRangeStyles: function(options) {
                        _fx.default.stop(this._$range);
                        if (!options) {
                            this._$range.css({
                                width: 0
                            });
                            return
                        }
                        if (this._needPreventAnimation || !(0, _window.hasWindow)()) {
                            return
                        }
                        _fx.default.animate(this._$range, {
                            type: "custom",
                            duration: 100,
                            to: options
                        })
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "value":
                                this._renderValue();
                                this.callBase(args);
                                break;
                            case "max":
                            case "min":
                                this._renderValue();
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _dispose: function() {
                        _fx.default.stop(this._$range);
                        this.callBase()
                    }
                });
                (0, _component_registrator.default)("dxTrackBar", TrackBar);
                var _default = TrackBar;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        82655:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/tree_list.js ***!
              \*************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_widget = (obj = __webpack_require__( /*! ../__internal/grids/tree_list/m_widget */ 1977), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                __webpack_require__( /*! ./tree_list/ui.tree_list.base */ 65132);
                var _default = _m_widget.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        65132:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/tree_list/ui.tree_list.base.js ***!
              \*******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_widget_base = (obj = __webpack_require__( /*! ../../__internal/grids/tree_list/m_widget_base */ 14126), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _m_widget_base.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        30254:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/tree_view.js ***!
              \*************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _uiTree_view = (obj = __webpack_require__( /*! ./tree_view/ui.tree_view.search */ 76986), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _uiTree_view.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        60903:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/tree_view/ui.tree_view.base.js ***!
              \*******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _click = __webpack_require__( /*! ../../events/click */ 95429);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _element = __webpack_require__( /*! ../../core/element */ 6415);
                var _check_box = _interopRequireDefault(__webpack_require__( /*! ../check_box */ 18859));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../hierarchical_collection/ui.hierarchical_collection_widget */ 65810));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../events/pointer */ 93786));
                var _double_click = __webpack_require__( /*! ../../events/double_click */ 85272);
                var _fx = _interopRequireDefault(__webpack_require__( /*! ../../animation/fx */ 87209));
                var _ui2 = _interopRequireDefault(__webpack_require__( /*! ../scroll_view/ui.scrollable */ 41183));
                var _load_indicator = _interopRequireDefault(__webpack_require__( /*! ../load_indicator */ 2492));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _support = __webpack_require__( /*! ../../core/utils/support */ 60137);
                var _get_relative_offset = __webpack_require__( /*! ../../renovation/ui/scroll_view/utils/get_relative_offset */ 1515);
                var _consts = __webpack_require__( /*! ../../renovation/ui/scroll_view/common/consts */ 23842);
                var _icon = __webpack_require__( /*! ../../core/utils/icon */ 44899);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const NODE_CLASS = "".concat("dx-treeview", "-node");
                const NODE_CONTAINER_CLASS = "".concat(NODE_CLASS, "-container");
                const NODE_LOAD_INDICATOR_CLASS = "".concat(NODE_CLASS, "-loadindicator");
                const OPENED_NODE_CONTAINER_CLASS = "".concat(NODE_CLASS, "-container-opened");
                const IS_LEAF = "".concat(NODE_CLASS, "-is-leaf");
                const ITEM_CLASS = "".concat("dx-treeview", "-item");
                const ITEM_WITH_CHECKBOX_CLASS = "".concat(ITEM_CLASS, "-with-checkbox");
                const ITEM_WITH_CUSTOM_EXPANDER_ICON_CLASS = "".concat(ITEM_CLASS, "-with-custom-expander-icon");
                const CUSTOM_EXPANDER_ICON_ITEM_CONTAINER_CLASS = "".concat("dx-treeview", "-custom-expander-icon-item-container");
                const ITEM_WITHOUT_CHECKBOX_CLASS = "".concat(ITEM_CLASS, "-without-checkbox");
                const ITEM_DATA_KEY = "".concat(ITEM_CLASS, "-data");
                const TOGGLE_ITEM_VISIBILITY_CLASS = "".concat("dx-treeview", "-toggle-item-visibility");
                const CUSTOM_COLLAPSE_ICON_CLASS = "".concat("dx-treeview", "-custom-collapse-icon");
                const CUSTOM_EXPAND_ICON_CLASS = "".concat("dx-treeview", "-custom-expand-icon");
                const LOAD_INDICATOR_CLASS = "".concat("dx-treeview", "-loadindicator");
                const LOAD_INDICATOR_WRAPPER_CLASS = "".concat("dx-treeview", "-loadindicator-wrapper");
                const TOGGLE_ITEM_VISIBILITY_OPENED_CLASS = "".concat("dx-treeview", "-toggle-item-visibility-opened");
                const SELECT_ALL_ITEM_CLASS = "".concat("dx-treeview", "-select-all-item");
                const ROOT_NODE_CLASS = "".concat("dx-treeview", "-root-node");
                const EXPANDER_ICON_STUB_CLASS = "".concat("dx-treeview", "-expander-icon-stub");
                const TreeViewBase = _ui.default.inherit({
                    _supportedKeys: function(e) {
                        const click = e => {
                            const $itemElement = (0, _renderer.default)(this.option("focusedElement"));
                            if (!$itemElement.length) {
                                return
                            }
                            e.target = $itemElement;
                            e.currentTarget = $itemElement;
                            this._itemClickHandler(e, $itemElement.children("." + ITEM_CLASS));
                            const expandEventName = this._getEventNameByOption(this.option("expandEvent"));
                            const expandByClick = expandEventName === (0, _index.addNamespace)(_click.name, "dxTreeView_expand");
                            if (expandByClick) {
                                this._expandEventHandler(e)
                            }
                        };
                        const select = e => {
                            e.preventDefault();
                            const $focusedElement = (0, _renderer.default)(this.option("focusedElement"));
                            const checkboxInstance = this._getCheckBoxInstance($focusedElement);
                            if (!checkboxInstance.option("disabled")) {
                                const currentState = checkboxInstance.option("value");
                                this._updateItemSelection(!currentState, $focusedElement.find("." + ITEM_CLASS).get(0), true)
                            }
                        };
                        const toggleExpandedNestedItems = function(state, e) {
                            if (!this.option("expandAllEnabled")) {
                                return
                            }
                            e.preventDefault();
                            const $rootElement = (0, _renderer.default)(this.option("focusedElement"));
                            if (!$rootElement.length) {
                                return
                            }
                            const rootItem = this._getItemData($rootElement.find(".".concat(ITEM_CLASS)));
                            this._toggleExpandedNestedItems([rootItem], state)
                        };
                        return (0, _extend.extend)(this.callBase(), {
                            enter: this._showCheckboxes() ? select : click,
                            space: this._showCheckboxes() ? select : click,
                            asterisk: toggleExpandedNestedItems.bind(this, true),
                            minus: toggleExpandedNestedItems.bind(this, false)
                        })
                    },
                    _toggleExpandedNestedItems: function(items, state) {
                        if (!items) {
                            return
                        }
                        for (let i = 0, len = items.length; i < len; i++) {
                            const item = items[i];
                            const node = this._dataAdapter.getNodeByItem(item);
                            this._toggleExpandedState(node, state);
                            this._toggleExpandedNestedItems(item.items, state)
                        }
                    },
                    _getNodeElement: function(node, cache) {
                        const key = this._encodeString(node.internalFields.key);
                        if (cache) {
                            if (!cache.$nodeByKey) {
                                cache.$nodeByKey = {};
                                this.$element().find(".".concat(NODE_CLASS)).each((function() {
                                    const $node = (0, _renderer.default)(this);
                                    const key = $node.attr("data-item-id");
                                    cache.$nodeByKey[key] = $node
                                }))
                            }
                            return cache.$nodeByKey[key] || (0, _renderer.default)()
                        }
                        const element = this.$element().get(0).querySelector("[".concat("data-item-id", '="').concat(key, '"]'));
                        return (0, _renderer.default)(element)
                    },
                    _activeStateUnit: "." + ITEM_CLASS,
                    _widgetClass: function() {
                        return "dx-treeview"
                    },
                    _getDefaultOptions: function() {
                        const defaultOptions = (0, _extend.extend)(this.callBase(), {
                            animationEnabled: true,
                            dataStructure: "tree",
                            deferRendering: true,
                            expandAllEnabled: false,
                            hasItemsExpr: "hasItems",
                            selectNodesRecursive: true,
                            expandNodesRecursive: true,
                            showCheckBoxesMode: "none",
                            expandIcon: null,
                            collapseIcon: null,
                            selectAllText: _message.default.format("dxList-selectAll"),
                            onItemSelectionChanged: null,
                            onItemExpanded: null,
                            onItemCollapsed: null,
                            scrollDirection: "vertical",
                            useNativeScrolling: true,
                            virtualModeEnabled: false,
                            rootValue: 0,
                            focusStateEnabled: false,
                            selectionMode: "multiple",
                            expandEvent: "dblclick",
                            selectByClick: false,
                            createChildren: null,
                            onSelectAllValueChanged: null
                        });
                        return (0, _extend.extend)(true, defaultOptions, {
                            integrationOptions: {
                                useDeferUpdateForTemplates: false
                            }
                        })
                    },
                    _defaultOptionsRules: function() {
                        return this.callBase().concat([{
                            device: function() {
                                return !_support.nativeScrolling
                            },
                            options: {
                                useNativeScrolling: false
                            }
                        }])
                    },
                    _initSelectedItems: _common.noop,
                    _syncSelectionOptions: _common.asyncNoop,
                    _fireSelectionChanged: function() {
                        const selectionChangePromise = this._selectionChangePromise;
                        (0, _deferred.when)(selectionChangePromise).done(function() {
                            this._createActionByOption("onSelectionChanged", {
                                excludeValidators: ["disabled", "readOnly"]
                            })()
                        }.bind(this))
                    },
                    _createSelectAllValueChangedAction: function() {
                        this._selectAllValueChangedAction = this._createActionByOption("onSelectAllValueChanged", {
                            excludeValidators: ["disabled", "readOnly"]
                        })
                    },
                    _fireSelectAllValueChanged: function(value) {
                        this._selectAllValueChangedAction({
                            value: value
                        })
                    },
                    _checkBoxModeChange: function(value, previousValue) {
                        const searchEnabled = this.option("searchEnabled");
                        const previousSelectAllEnabled = this._selectAllEnabled(previousValue);
                        const previousItemsContainer = this._itemContainer(searchEnabled, previousSelectAllEnabled);
                        this._detachClickEvent(previousItemsContainer);
                        this._detachExpandEvent(previousItemsContainer);
                        if ("none" === previousValue || "none" === value) {
                            return
                        }
                        const selectAllExists = this._$selectAllItem && this._$selectAllItem.length;
                        switch (value) {
                            case "selectAll":
                                if (!selectAllExists) {
                                    this._createSelectAllValueChangedAction();
                                    this._renderSelectAllItem()
                                }
                                break;
                            case "normal":
                                if (selectAllExists) {
                                    this._$selectAllItem.remove();
                                    delete this._$selectAllItem
                                }
                        }
                    },
                    _removeSelection: function() {
                        const that = this;
                        (0, _iterator.each)(this._dataAdapter.getFullData(), (function(_, node) {
                            if (!that._hasChildren(node)) {
                                return
                            }
                            that._dataAdapter.toggleSelection(node.internalFields.key, false, true)
                        }))
                    },
                    _optionChanged: function(args) {
                        const {
                            name: name,
                            value: value,
                            previousValue: previousValue
                        } = args;
                        switch (name) {
                            case "selectAllText":
                                if (this._$selectAllItem) {
                                    this._$selectAllItem.dxCheckBox("instance").option("text", value)
                                }
                                break;
                            case "showCheckBoxesMode":
                                this._checkBoxModeChange(value, previousValue);
                                this._invalidate();
                                break;
                            case "scrollDirection":
                                this.getScrollable().option("direction", value);
                                break;
                            case "useNativeScrolling":
                                this.getScrollable().option("useNative", value);
                                break;
                            case "items":
                                delete this._$selectAllItem;
                                this.callBase(args);
                                break;
                            case "dataSource":
                                this.callBase(args);
                                this._initDataAdapter();
                                this._filter = {};
                                break;
                            case "hasItemsExpr":
                                this._initAccessors();
                                this.repaint();
                                break;
                            case "expandEvent":
                                this._attachExpandEvent();
                                break;
                            case "deferRendering":
                            case "dataStructure":
                            case "rootValue":
                            case "createChildren":
                            case "expandNodesRecursive":
                            case "onItemSelectionChanged":
                            case "onItemExpanded":
                            case "onItemCollapsed":
                            case "expandAllEnabled":
                            case "animationEnabled":
                            case "virtualModeEnabled":
                            case "selectByClick":
                                break;
                            case "selectionMode":
                                this._initDataAdapter();
                                this.callBase(args);
                                break;
                            case "onSelectAllValueChanged":
                                this._createSelectAllValueChangedAction();
                                break;
                            case "selectNodesRecursive":
                                this._dataAdapter.setOption("recursiveSelection", args.value);
                                this.repaint();
                                break;
                            case "expandIcon":
                            case "collapseIcon":
                                this.repaint();
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _initDataSource: function() {
                        if (this._useCustomChildrenLoader()) {
                            this._loadChildrenByCustomLoader(null).done(function(newItems) {
                                if (newItems && newItems.length) {
                                    this.option("items", newItems)
                                }
                            }.bind(this))
                        } else {
                            this.callBase();
                            this._isVirtualMode() && this._initVirtualMode()
                        }
                    },
                    _initVirtualMode: function() {
                        const filter = this._filter;
                        if (!filter.custom) {
                            filter.custom = this._dataSource.filter()
                        }
                        if (!filter.internal) {
                            filter.internal = [this.option("parentIdExpr"), this.option("rootValue")]
                        }
                    },
                    _useCustomChildrenLoader: function() {
                        return (0, _type.isFunction)(this.option("createChildren")) && this._isDataStructurePlain()
                    },
                    _loadChildrenByCustomLoader: function(parentNode) {
                        const invocationResult = this.option("createChildren").call(this, parentNode);
                        if (Array.isArray(invocationResult)) {
                            return (new _deferred.Deferred).resolve(invocationResult).promise()
                        }
                        if (invocationResult && (0, _type.isFunction)(invocationResult.then)) {
                            return (0, _deferred.fromPromise)(invocationResult)
                        }
                        return (new _deferred.Deferred).resolve([]).promise()
                    },
                    _combineFilter: function() {
                        if (!this._filter.custom || !this._filter.custom.length) {
                            return this._filter.internal
                        }
                        return [this._filter.custom, this._filter.internal]
                    },
                    _dataSourceLoadErrorHandler: function() {
                        this._renderEmptyMessage()
                    },
                    _init: function() {
                        this._filter = {};
                        this.callBase();
                        this._initStoreChangeHandlers()
                    },
                    _dataSourceChangedHandler: function(newItems) {
                        const items = this.option("items");
                        if (this._initialized && this._isVirtualMode() && items.length) {
                            return
                        }
                        this.option("items", newItems)
                    },
                    _removeTreeViewLoadIndicator: function() {
                        if (!this._treeViewLoadIndicator) {
                            return
                        }
                        this._treeViewLoadIndicator.remove();
                        this._treeViewLoadIndicator = null
                    },
                    _createTreeViewLoadIndicator: function() {
                        this._treeViewLoadIndicator = (0, _renderer.default)("<div>").addClass(LOAD_INDICATOR_CLASS);
                        this._createComponent(this._treeViewLoadIndicator, _load_indicator.default, {});
                        return this._treeViewLoadIndicator
                    },
                    _dataSourceLoadingChangedHandler: function(isLoading) {
                        let resultFilter;
                        if (this._isVirtualMode()) {
                            resultFilter = this._combineFilter();
                            this._dataSource.filter(resultFilter)
                        }
                        if (isLoading && !this._dataSource.isLoaded()) {
                            this.option("items", []);
                            const $wrapper = (0, _renderer.default)("<div>").addClass(LOAD_INDICATOR_WRAPPER_CLASS);
                            this._createTreeViewLoadIndicator().appendTo($wrapper);
                            this.itemsContainer().append($wrapper);
                            if (this._isVirtualMode() && this._dataSource.filter() !== resultFilter) {
                                this._dataSource.filter([])
                            }
                        } else {
                            this._removeTreeViewLoadIndicator()
                        }
                    },
                    _initStoreChangeHandlers: function() {
                        if ("plain" !== this.option("dataStructure")) {
                            return
                        }
                        this._dataSource && this._dataSource.store().on("inserted", newItem => {
                            this.option().items = this.option("items").concat(newItem);
                            this._dataAdapter.addItem(newItem);
                            if (!this._dataAdapter.isFiltered(newItem)) {
                                return
                            }
                            this._updateLevel(this._parentIdGetter(newItem))
                        }).on("removed", removedKey => {
                            const node = this._dataAdapter.getNodeByKey(removedKey);
                            if ((0, _type.isDefined)(node)) {
                                this.option("items")[this._dataAdapter.getIndexByKey(node.internalFields.key)] = 0;
                                this._markChildrenItemsToRemove(node);
                                this._removeItems();
                                this._dataAdapter.removeItem(removedKey);
                                this._updateLevel(this._parentIdGetter(node))
                            }
                        })
                    },
                    _markChildrenItemsToRemove: function(node) {
                        const keys = node.internalFields.childrenKeys;
                        (0, _iterator.each)(keys, (_, key) => {
                            this.option("items")[this._dataAdapter.getIndexByKey(key)] = 0;
                            this._markChildrenItemsToRemove(this._dataAdapter.getNodeByKey(key))
                        })
                    },
                    _removeItems: function() {
                        const items = (0, _extend.extend)(true, [], this.option("items"));
                        let counter = 0;
                        (0, _iterator.each)(items, (index, item) => {
                            if (!item) {
                                this.option("items").splice(index - counter, 1);
                                counter++
                            }
                        })
                    },
                    _updateLevel: function(parentId) {
                        const $container = this._getContainerByParentKey(parentId);
                        this._renderItems($container, this._dataAdapter.getChildrenNodes(parentId))
                    },
                    _getOldContainer: function($itemElement) {
                        if ($itemElement.length) {
                            return $itemElement.children(".".concat(NODE_CONTAINER_CLASS))
                        }
                        const scrollable = this.getScrollable();
                        if (scrollable) {
                            return (0, _renderer.default)(scrollable.content()).children()
                        }
                        return (0, _renderer.default)()
                    },
                    _getContainerByParentKey: function(parentId) {
                        const node = this._dataAdapter.getNodeByKey(parentId);
                        const $itemElement = node ? this._getNodeElement(node) : [];
                        this._getOldContainer($itemElement).remove();
                        const $container = this._renderNodeContainer($itemElement);
                        if (this._isRootLevel(parentId)) {
                            const scrollable = this.getScrollable();
                            if (!scrollable) {
                                this._renderScrollableContainer()
                            }(0, _renderer.default)(scrollable.content()).append($container)
                        }
                        return $container
                    },
                    _isRootLevel: function(parentId) {
                        return parentId === this.option("rootValue")
                    },
                    _getAccessors: function() {
                        const accessors = this.callBase();
                        accessors.push("hasItems");
                        return accessors
                    },
                    _getDataAdapterOptions: function() {
                        var _this$_dataSource, _this$_dataSource$loa, _this$_dataSource$loa2;
                        return {
                            rootValue: this.option("rootValue"),
                            multipleSelection: !this._isSingleSelection(),
                            recursiveSelection: this._isRecursiveSelection(),
                            recursiveExpansion: this.option("expandNodesRecursive"),
                            selectionRequired: this.option("selectionRequired"),
                            dataType: this.option("dataStructure"),
                            sort: this._dataSource && this._dataSource.sort(),
                            langParams: null === (_this$_dataSource = this._dataSource) || void 0 === _this$_dataSource ? void 0 : null === (_this$_dataSource$loa = _this$_dataSource.loadOptions) || void 0 === _this$_dataSource$loa ? void 0 : null === (_this$_dataSource$loa2 = _this$_dataSource$loa.call(_this$_dataSource)) || void 0 === _this$_dataSource$loa2 ? void 0 : _this$_dataSource$loa2.langParams
                        }
                    },
                    _initMarkup() {
                        this._renderScrollableContainer();
                        this._renderEmptyMessage(this._dataAdapter.getRootNodes());
                        this.callBase();
                        this._setAriaRole()
                    },
                    _setAriaRole() {
                        const {
                            items: items
                        } = this.option();
                        if (null !== items && void 0 !== items && items.length) {
                            this.setAria({
                                role: "tree"
                            })
                        }
                    },
                    _renderContentImpl: function() {
                        const $nodeContainer = this._renderNodeContainer();
                        (0, _renderer.default)(this.getScrollable().content()).append($nodeContainer);
                        if (!this.option("items") || !this.option("items").length) {
                            return
                        }
                        this._renderItems($nodeContainer, this._dataAdapter.getRootNodes());
                        this._attachExpandEvent();
                        if (this._selectAllEnabled()) {
                            this._createSelectAllValueChangedAction();
                            this._renderSelectAllItem($nodeContainer)
                        }
                    },
                    _isVirtualMode: function() {
                        return this.option("virtualModeEnabled") && this._isDataStructurePlain() && !!this.option("dataSource")
                    },
                    _isDataStructurePlain: function() {
                        return "plain" === this.option("dataStructure")
                    },
                    _fireContentReadyAction: function() {
                        const dataSource = this.getDataSource();
                        const skipContentReadyAction = dataSource && !dataSource.isLoaded() || this._skipContentReadyAndItemExpanded;
                        const scrollable = this.getScrollable();
                        if (scrollable && (0, _window.hasWindow)()) {
                            scrollable.update()
                        }
                        if (!skipContentReadyAction) {
                            this.callBase()
                        }
                        if (scrollable && (0, _window.hasWindow)()) {
                            scrollable.update()
                        }
                    },
                    _renderScrollableContainer: function() {
                        this._scrollable = this._createComponent((0, _renderer.default)("<div>").appendTo(this.$element()), _ui2.default, {
                            useNative: this.option("useNativeScrolling"),
                            direction: this.option("scrollDirection"),
                            useKeyboard: false
                        })
                    },
                    _renderNodeContainer: function($parent) {
                        const $container = (0, _renderer.default)("<ul>").addClass(NODE_CONTAINER_CLASS);
                        this.setAria("role", "group", $container);
                        if ($parent && $parent.length) {
                            const itemData = this._getItemData($parent.children("." + ITEM_CLASS));
                            if (this._expandedGetter(itemData)) {
                                $container.addClass(OPENED_NODE_CONTAINER_CLASS)
                            }
                            $container.appendTo($parent)
                        }
                        return $container
                    },
                    _createDOMElement: function($nodeContainer, node) {
                        var _node$internalFields, _node$internalFields$;
                        const $node = (0, _renderer.default)("<li>").addClass(NODE_CLASS).attr("data-item-id", this._encodeString(node.internalFields.key)).prependTo($nodeContainer);
                        const attrs = {
                            role: "treeitem",
                            label: this._displayGetter(node.internalFields.item) || "",
                            level: this._getLevel($nodeContainer)
                        };
                        const hasChildNodes = !!(null !== node && void 0 !== node && null !== (_node$internalFields = node.internalFields) && void 0 !== _node$internalFields && null !== (_node$internalFields$ = _node$internalFields.childrenKeys) && void 0 !== _node$internalFields$ && _node$internalFields$.length);
                        if (hasChildNodes) {
                            attrs.expanded = node.internalFields.expanded || false
                        }
                        this.setAria(attrs, $node);
                        return $node
                    },
                    _getLevel: function($nodeContainer) {
                        const parent = $nodeContainer.parent();
                        return parent.hasClass("dx-scrollable-content") ? 1 : parseInt(parent.attr("aria-level")) + 1
                    },
                    _showCheckboxes: function() {
                        return "none" !== this.option("showCheckBoxesMode")
                    },
                    _hasCustomExpanderIcons: function() {
                        return this.option("expandIcon") || this.option("collapseIcon")
                    },
                    _selectAllEnabled: function(showCheckBoxesMode) {
                        const mode = null !== showCheckBoxesMode && void 0 !== showCheckBoxesMode ? showCheckBoxesMode : this.option("showCheckBoxesMode");
                        return "selectAll" === mode && !this._isSingleSelection()
                    },
                    _renderItems: function($nodeContainer, nodes) {
                        const length = nodes.length - 1;
                        for (let i = length; i >= 0; i--) {
                            this._renderItem(i, nodes[i], $nodeContainer)
                        }
                        this._renderedItemsCount += nodes.length
                    },
                    _renderItem: function(nodeIndex, node, $nodeContainer) {
                        const $node = this._createDOMElement($nodeContainer, node);
                        const nodeData = node.internalFields;
                        const showCheckBox = this._showCheckboxes();
                        $node.addClass(showCheckBox ? ITEM_WITH_CHECKBOX_CLASS : ITEM_WITHOUT_CHECKBOX_CLASS);
                        $node.toggleClass("dx-state-invisible", false === nodeData.item.visible);
                        if (this._hasCustomExpanderIcons()) {
                            $node.addClass(ITEM_WITH_CUSTOM_EXPANDER_ICON_CLASS);
                            $nodeContainer.addClass(CUSTOM_EXPANDER_ICON_ITEM_CONTAINER_CLASS)
                        }
                        this.setAria("selected", nodeData.selected, $node);
                        this._toggleSelectedClass($node, nodeData.selected);
                        if (nodeData.disabled) {
                            this.setAria("disabled", nodeData.disabled, $node)
                        }
                        this.callBase(this._renderedItemsCount + nodeIndex, nodeData.item, $node);
                        const parent = this._getNode(node.internalFields.parentKey);
                        if (!parent) {
                            $node.addClass(ROOT_NODE_CLASS)
                        }
                        if (false !== nodeData.item.visible) {
                            this._renderChildren($node, node)
                        }
                    },
                    _setAriaSelectionAttribute: _common.noop,
                    _renderChildren: function($node, node) {
                        if (!this._hasChildren(node)) {
                            this._addLeafClass($node);
                            (0, _renderer.default)("<div>").addClass(EXPANDER_ICON_STUB_CLASS).appendTo(this._getItem($node));
                            return
                        }
                        if (this._hasCustomExpanderIcons()) {
                            this._renderCustomExpanderIcons($node, node)
                        } else {
                            this._renderDefaultExpanderIcons($node, node)
                        }
                        if (this._shouldRenderSublevel(node.internalFields.expanded)) {
                            this._loadSublevel(node).done(childNodes => {
                                this._renderSublevel($node, this._getActualNode(node), childNodes)
                            })
                        }
                    },
                    _shouldRenderSublevel: function(expanded) {
                        return expanded || !this.option("deferRendering")
                    },
                    _getActualNode: function(cachedNode) {
                        return this._dataAdapter.getNodeByKey(cachedNode.internalFields.key)
                    },
                    _hasChildren: function(node) {
                        if (this._isVirtualMode() || this._useCustomChildrenLoader()) {
                            return false !== this._hasItemsGetter(node.internalFields.item)
                        }
                        return this.callBase(node)
                    },
                    _loadSublevel: function(node) {
                        const deferred = new _deferred.Deferred;
                        const childrenNodes = this._getChildNodes(node);
                        if (childrenNodes.length) {
                            deferred.resolve(childrenNodes)
                        } else {
                            this._loadNestedItems(node).done(items => {
                                deferred.resolve(this._dataAdapter.getNodesByItems(items))
                            })
                        }
                        return deferred.promise()
                    },
                    _getItemExtraPropNames: () => ["url", "linkAttr"],
                    _addContent: function($container, itemData) {
                        const {
                            html: html,
                            url: url
                        } = itemData;
                        if (url) {
                            $container.html(html);
                            const link = this._getLinkContainer(this._getIconContainer(itemData), this._getTextContainer(itemData), itemData);
                            $container.append(link)
                        } else {
                            this.callBase($container, itemData)
                        }
                    },
                    _postprocessRenderItem(args) {
                        const {
                            itemData: itemData,
                            itemElement: itemElement
                        } = args;
                        if (this._showCheckboxes()) {
                            this._renderCheckBox(itemElement, this._getNode(itemData))
                        }
                        this.callBase(args)
                    },
                    _renderSublevel: function($node, node, childNodes) {
                        const $nestedNodeContainer = this._renderNodeContainer($node, node);
                        const childNodesByChildrenKeys = childNodes.filter(childNode => -1 !== node.internalFields.childrenKeys.indexOf(childNode.internalFields.key));
                        this._renderItems($nestedNodeContainer, childNodesByChildrenKeys);
                        if (childNodesByChildrenKeys.length && !node.internalFields.selected) {
                            const firstChild = childNodesByChildrenKeys[0];
                            this._updateParentsState(firstChild, this._getNodeElement(firstChild))
                        }
                        this._normalizeIconState($node, childNodesByChildrenKeys.length);
                        if (node.internalFields.expanded) {
                            $nestedNodeContainer.addClass(OPENED_NODE_CONTAINER_CLASS)
                        }
                    },
                    _executeItemRenderAction: function(itemIndex, itemData, itemElement) {
                        const node = this._getNode(itemElement);
                        this._getItemRenderAction()({
                            itemElement: itemElement,
                            itemIndex: itemIndex,
                            itemData: itemData,
                            node: this._dataAdapter.getPublicNode(node)
                        })
                    },
                    _addLeafClass: function($node) {
                        $node.addClass(IS_LEAF)
                    },
                    _expandEventHandler: function(e) {
                        const $nodeElement = (0, _renderer.default)(e.currentTarget.parentNode);
                        if (!$nodeElement.hasClass(IS_LEAF)) {
                            this._toggleExpandedState(e.currentTarget, void 0, e)
                        }
                    },
                    _attachExpandEvent: function() {
                        const expandedEventName = this._getEventNameByOption(this.option("expandEvent"));
                        const $itemsContainer = this._itemContainer();
                        this._detachExpandEvent($itemsContainer);
                        _events_engine.default.on($itemsContainer, expandedEventName, this._itemSelector(), this._expandEventHandler.bind(this))
                    },
                    _detachExpandEvent(itemsContainer) {
                        _events_engine.default.off(itemsContainer, ".".concat("dxTreeView_expand"), this._itemSelector())
                    },
                    _getEventNameByOption: function(name) {
                        const event = "click" === name ? _click.name : _double_click.name;
                        return (0, _index.addNamespace)(event, "dxTreeView_expand")
                    },
                    _getNode: function(identifier) {
                        if (!(0, _type.isDefined)(identifier)) {
                            return null
                        }
                        if (identifier.internalFields) {
                            return identifier
                        }
                        if ((0, _type.isPrimitive)(identifier)) {
                            return this._dataAdapter.getNodeByKey(identifier)
                        }
                        const itemElement = (0, _renderer.default)(identifier).get(0);
                        if (!itemElement) {
                            return null
                        }
                        if (_dom_adapter.default.isElementNode(itemElement)) {
                            return this._getNodeByElement(itemElement)
                        }
                        return this._dataAdapter.getNodeByItem(itemElement)
                    },
                    _getNodeByElement: function(itemElement) {
                        const $node = (0, _renderer.default)(itemElement).closest("." + NODE_CLASS);
                        const key = this._decodeString($node.attr("data-item-id"));
                        return this._dataAdapter.getNodeByKey(key)
                    },
                    _toggleExpandedState: function(itemElement, state, e) {
                        const node = this._getNode(itemElement);
                        if (!node) {
                            return (new _deferred.Deferred).reject().promise()
                        }
                        if (node.internalFields.disabled) {
                            return (new _deferred.Deferred).reject().promise()
                        }
                        const currentState = node.internalFields.expanded;
                        if (currentState === state) {
                            return (new _deferred.Deferred).resolve().promise()
                        }
                        if (this._hasChildren(node)) {
                            const $node = this._getNodeElement(node);
                            if ($node.find(".".concat(NODE_LOAD_INDICATOR_CLASS, ":not(.").concat("dx-state-invisible", ")")).length) {
                                return (new _deferred.Deferred).reject().promise()
                            }
                            if (!currentState && !this._nodeHasRenderedChildren($node)) {
                                this._createLoadIndicator($node)
                            }
                        }
                        if (!(0, _type.isDefined)(state)) {
                            state = !currentState
                        }
                        this._dataAdapter.toggleExpansion(node.internalFields.key, state);
                        return this._updateExpandedItemsUI(node, state, e)
                    },
                    _nodeHasRenderedChildren($node) {
                        const $nodeContainer = $node.children(".".concat(NODE_CONTAINER_CLASS));
                        return $nodeContainer.not(":empty").length
                    },
                    _getItem: function($node) {
                        return $node.children(".".concat(ITEM_CLASS)).eq(0)
                    },
                    _createLoadIndicator: function($node) {
                        const $treeviewItem = this._getItem($node);
                        this._createComponent((0, _renderer.default)("<div>").addClass(NODE_LOAD_INDICATOR_CLASS), _load_indicator.default, {}).$element().appendTo($treeviewItem);
                        const $icon = $treeviewItem.children(".".concat(TOGGLE_ITEM_VISIBILITY_CLASS, ",.").concat(CUSTOM_EXPAND_ICON_CLASS));
                        $icon.hide()
                    },
                    _renderExpanderIcon: function($node, node, $icon, iconClass) {
                        $icon.appendTo(this._getItem($node));
                        $icon.addClass(iconClass);
                        if (node.internalFields.disabled) {
                            $icon.addClass("dx-state-disabled")
                        }
                        this._renderToggleItemVisibilityIconClick($icon, node)
                    },
                    _renderDefaultExpanderIcons: function($node, node) {
                        const $treeViewItem = this._getItem($node);
                        const $icon = (0, _renderer.default)("<div>").addClass(TOGGLE_ITEM_VISIBILITY_CLASS).appendTo($treeViewItem);
                        if (node.internalFields.expanded) {
                            $icon.addClass(TOGGLE_ITEM_VISIBILITY_OPENED_CLASS);
                            $node.parent().addClass(OPENED_NODE_CONTAINER_CLASS)
                        }
                        if (node.internalFields.disabled) {
                            $icon.addClass("dx-state-disabled")
                        }
                        this._renderToggleItemVisibilityIconClick($icon, node)
                    },
                    _renderCustomExpanderIcons: function($node, node) {
                        const {
                            expandIcon: expandIcon,
                            collapseIcon: collapseIcon
                        } = this.option();
                        const $expandIcon = (0, _icon.getImageContainer)(null !== expandIcon && void 0 !== expandIcon ? expandIcon : collapseIcon);
                        const $collapseIcon = (0, _icon.getImageContainer)(null !== collapseIcon && void 0 !== collapseIcon ? collapseIcon : expandIcon);
                        this._renderExpanderIcon($node, node, $expandIcon, CUSTOM_EXPAND_ICON_CLASS);
                        this._renderExpanderIcon($node, node, $collapseIcon, CUSTOM_COLLAPSE_ICON_CLASS);
                        const isNodeExpanded = node.internalFields.expanded;
                        if (isNodeExpanded) {
                            $node.parent().addClass(OPENED_NODE_CONTAINER_CLASS)
                        }
                        this._toggleCustomExpanderIcons($expandIcon, $collapseIcon, isNodeExpanded)
                    },
                    _renderToggleItemVisibilityIconClick: function($icon, node) {
                        const eventName = (0, _index.addNamespace)(_click.name, this.NAME);
                        _events_engine.default.off($icon, eventName);
                        _events_engine.default.on($icon, eventName, e => {
                            this._toggleExpandedState(node.internalFields.key, void 0, e);
                            return false
                        })
                    },
                    _toggleCustomExpanderIcons: function($expandIcon, $collapseIcon, isNodeExpanded) {
                        $collapseIcon.toggle(isNodeExpanded);
                        $expandIcon.toggle(!isNodeExpanded)
                    },
                    _updateExpandedItemsUI: function(node, state, e) {
                        const $node = this._getNodeElement(node);
                        const isHiddenNode = !$node.length || state && $node.is(":hidden");
                        if (this.option("expandNodesRecursive") && isHiddenNode) {
                            const parentNode = this._getNode(node.internalFields.parentKey);
                            if (parentNode) {
                                this._updateExpandedItemsUI(parentNode, state, e)
                            }
                        }
                        if (!this._hasCustomExpanderIcons()) {
                            const $icon = this._getItem($node).children(".".concat(TOGGLE_ITEM_VISIBILITY_CLASS));
                            $icon.toggleClass(TOGGLE_ITEM_VISIBILITY_OPENED_CLASS, state)
                        } else if (this._nodeHasRenderedChildren($node)) {
                            const $item = this._getItem($node);
                            const $childExpandIcons = $item.children(".".concat(CUSTOM_EXPAND_ICON_CLASS));
                            const $childCollapseIcons = $item.children(".".concat(CUSTOM_COLLAPSE_ICON_CLASS));
                            this._toggleCustomExpanderIcons($childExpandIcons, $childCollapseIcons, state)
                        }
                        const $nodeContainer = $node.children(".".concat(NODE_CONTAINER_CLASS));
                        const nodeContainerExists = $nodeContainer.length > 0;
                        const completionCallback = new _deferred.Deferred;
                        if (!state || nodeContainerExists && !$nodeContainer.is(":empty")) {
                            this._animateNodeContainer(node, state, e, completionCallback);
                            return completionCallback.promise()
                        }
                        if (0 === node.internalFields.childrenKeys.length && (this._isVirtualMode() || this._useCustomChildrenLoader())) {
                            this._loadNestedItemsWithUpdate(node, state, e, completionCallback);
                            return completionCallback.promise()
                        }
                        this._renderSublevel($node, node, this._getChildNodes(node));
                        this._fireContentReadyAction();
                        this._animateNodeContainer(node, state, e, completionCallback);
                        return completionCallback.promise()
                    },
                    _loadNestedItemsWithUpdate: function(node, state, e, completionCallback) {
                        const $node = this._getNodeElement(node);
                        this._loadNestedItems(node).done(items => {
                            const actualNodeData = this._getActualNode(node);
                            this._renderSublevel($node, actualNodeData, this._dataAdapter.getNodesByItems(items));
                            if (!items || !items.length) {
                                completionCallback.resolve();
                                return
                            }
                            this._fireContentReadyAction();
                            this._animateNodeContainer(actualNodeData, state, e, completionCallback)
                        })
                    },
                    _loadNestedItems: function(node) {
                        if (this._useCustomChildrenLoader()) {
                            const publicNode = this._dataAdapter.getPublicNode(node);
                            return this._loadChildrenByCustomLoader(publicNode).done(newItems => {
                                if (!this._areNodesExists(newItems)) {
                                    this._appendItems(newItems)
                                }
                            })
                        }
                        if (!this._isVirtualMode()) {
                            return (new _deferred.Deferred).resolve([]).promise()
                        }
                        this._filter.internal = [this.option("parentIdExpr"), node.internalFields.key];
                        this._dataSource.filter(this._combineFilter());
                        return this._dataSource.load().done(newItems => {
                            if (!this._areNodesExists(newItems)) {
                                this._appendItems(newItems)
                            }
                        })
                    },
                    _areNodesExists: function(newItems, items) {
                        const keyOfRootItem = this.keyOf(newItems[0]);
                        const fullData = this._dataAdapter.getFullData();
                        return !!this._dataAdapter.getNodeByKey(keyOfRootItem, fullData)
                    },
                    _appendItems: function(newItems) {
                        this.option().items = this.option("items").concat(newItems);
                        this._initDataAdapter()
                    },
                    _animateNodeContainer: function(node, state, e, completionCallback) {
                        const $node = this._getNodeElement(node);
                        const $nodeContainer = $node.children(".".concat(NODE_CONTAINER_CLASS));
                        if (node && completionCallback && 0 === $nodeContainer.length) {
                            completionCallback.resolve()
                        }
                        $nodeContainer.addClass(OPENED_NODE_CONTAINER_CLASS);
                        const nodeHeight = (0, _size.getHeight)($nodeContainer);
                        _fx.default.stop($nodeContainer, true);
                        _fx.default.animate($nodeContainer, {
                            type: "custom",
                            duration: this.option("animationEnabled") ? 400 : 0,
                            from: {
                                maxHeight: state ? 0 : nodeHeight
                            },
                            to: {
                                maxHeight: state ? nodeHeight : 0
                            },
                            complete: function() {
                                $nodeContainer.css("maxHeight", "none");
                                $nodeContainer.toggleClass(OPENED_NODE_CONTAINER_CLASS, state);
                                this.setAria("expanded", state, $node);
                                this.getScrollable().update();
                                this._fireExpandedStateUpdatedEvent(state, node, e);
                                if (completionCallback) {
                                    completionCallback.resolve()
                                }
                            }.bind(this)
                        })
                    },
                    _fireExpandedStateUpdatedEvent: function(isExpanded, node, e) {
                        if (!this._hasChildren(node) || this._skipContentReadyAndItemExpanded) {
                            return
                        }
                        const optionName = isExpanded ? "onItemExpanded" : "onItemCollapsed";
                        if ((0, _type.isDefined)(e)) {
                            this._itemDXEventHandler(e, optionName, {
                                node: this._dataAdapter.getPublicNode(node)
                            })
                        } else {
                            const target = this._getNodeElement(node);
                            this._itemEventHandler(target, optionName, {
                                event: e,
                                node: this._dataAdapter.getPublicNode(node)
                            })
                        }
                    },
                    _normalizeIconState: function($node, hasNewItems) {
                        const $loadIndicator = $node.find(".".concat(NODE_LOAD_INDICATOR_CLASS));
                        if ($loadIndicator.length) {
                            var _LoadIndicator$getIns;
                            null === (_LoadIndicator$getIns = _load_indicator.default.getInstance($loadIndicator)) || void 0 === _LoadIndicator$getIns ? void 0 : _LoadIndicator$getIns.option("visible", false)
                        }
                        const $treeViewItem = this._getItem($node);
                        const $toggleItem = $treeViewItem.children(".".concat(CUSTOM_COLLAPSE_ICON_CLASS, ",.").concat(TOGGLE_ITEM_VISIBILITY_CLASS));
                        if (hasNewItems) {
                            $toggleItem.show();
                            return
                        }
                        $toggleItem.removeClass(TOGGLE_ITEM_VISIBILITY_CLASS);
                        $node.addClass(IS_LEAF)
                    },
                    _emptyMessageContainer: function() {
                        const scrollable = this.getScrollable();
                        return scrollable ? (0, _renderer.default)(scrollable.content()) : this.callBase()
                    },
                    _renderContent: function() {
                        const items = this.option("items");
                        if (items && items.length) {
                            this._contentAlreadyRendered = true
                        }
                        this.callBase()
                    },
                    _renderSelectAllItem: function($container) {
                        const {
                            selectAllText: selectAllText,
                            focusStateEnabled: focusStateEnabled
                        } = this.option();
                        $container = $container || this.$element().find(".".concat(NODE_CONTAINER_CLASS)).first();
                        this._$selectAllItem = (0, _renderer.default)("<div>").addClass(SELECT_ALL_ITEM_CLASS);
                        const value = this._dataAdapter.isAllSelected();
                        this._createComponent(this._$selectAllItem, _check_box.default, {
                            value: value,
                            elementAttr: {
                                "aria-label": "Select All"
                            },
                            text: selectAllText,
                            focusStateEnabled: focusStateEnabled,
                            onValueChanged: this._onSelectAllCheckboxValueChanged.bind(this),
                            onInitialized: _ref => {
                                let {
                                    component: component
                                } = _ref;
                                component.registerKeyHandler("enter", () => {
                                    component.option("value", !component.option("value"))
                                })
                            }
                        });
                        this._toggleSelectedClass(this._$selectAllItem, value);
                        $container.before(this._$selectAllItem)
                    },
                    _onSelectAllCheckboxValueChanged: function(args) {
                        this._toggleSelectAll(args);
                        this._fireSelectAllValueChanged(args.value)
                    },
                    _toggleSelectAll: function(args) {
                        this._dataAdapter.toggleSelectAll(args.value);
                        this._updateItemsUI();
                        this._fireSelectionChanged()
                    },
                    _renderCheckBox: function($node, node) {
                        const $checkbox = (0, _renderer.default)("<div>").appendTo($node);
                        this._createComponent($checkbox, _check_box.default, {
                            value: node.internalFields.selected,
                            onValueChanged: this._changeCheckboxValue.bind(this),
                            focusStateEnabled: false,
                            elementAttr: {
                                "aria-label": "Check State"
                            },
                            disabled: this._disabledGetter(node)
                        })
                    },
                    _toggleSelectedClass: function($node, value) {
                        $node.toggleClass("dx-state-selected", !!value)
                    },
                    _toggleNodeDisabledState: function(node, state) {
                        const $node = this._getNodeElement(node);
                        const $item = $node.find("." + ITEM_CLASS).eq(0);
                        this._dataAdapter.toggleNodeDisabledState(node.internalFields.key, state);
                        $item.toggleClass("dx-state-disabled", !!state);
                        if (this._showCheckboxes()) {
                            const checkbox = this._getCheckBoxInstance($node);
                            checkbox.option("disabled", !!state)
                        }
                    },
                    _itemOptionChanged: function(item, property, value) {
                        const node = this._dataAdapter.getNodeByItem(item);
                        if (property === this.option("disabledExpr")) {
                            this._toggleNodeDisabledState(node, value)
                        }
                    },
                    _changeCheckboxValue: function(e) {
                        const $node = (0, _renderer.default)(e.element).closest(".".concat(NODE_CLASS));
                        const $item = this._getItem($node);
                        const item = this._getItemData($item);
                        const node = this._getNodeByElement($item);
                        const value = e.value;
                        if (node && node.internalFields.selected === value) {
                            return
                        }
                        this._updateItemSelection(value, item, e.event)
                    },
                    _isSingleSelection: function() {
                        return "single" === this.option("selectionMode")
                    },
                    _isRecursiveSelection: function() {
                        return this.option("selectNodesRecursive") && "single" !== this.option("selectionMode")
                    },
                    _isLastSelectedBranch: function(publicNode, selectedNodesKeys, deep) {
                        const keyIndex = selectedNodesKeys.indexOf(publicNode.key);
                        if (keyIndex >= 0) {
                            selectedNodesKeys.splice(keyIndex, 1)
                        }
                        if (deep) {
                            (0, _iterator.each)(publicNode.children, function(_, childNode) {
                                this._isLastSelectedBranch(childNode, selectedNodesKeys, true)
                            }.bind(this))
                        }
                        if (publicNode.parent) {
                            this._isLastSelectedBranch(publicNode.parent, selectedNodesKeys)
                        }
                        return 0 === selectedNodesKeys.length
                    },
                    _isLastRequired: function(node) {
                        const selectionRequired = this.option("selectionRequired");
                        const isSingleMode = this._isSingleSelection();
                        const selectedNodesKeys = this.getSelectedNodeKeys();
                        if (!selectionRequired) {
                            return
                        }
                        if (isSingleMode) {
                            return 1 === selectedNodesKeys.length
                        } else {
                            return this._isLastSelectedBranch(node.internalFields.publicNode, selectedNodesKeys.slice(), true)
                        }
                    },
                    _updateItemSelection: function(value, itemElement, dxEvent) {
                        const node = this._getNode(itemElement);
                        if (!node || false === node.visible) {
                            return false
                        }
                        if (node.internalFields.selected === value) {
                            return true
                        }
                        if (!value && this._isLastRequired(node)) {
                            if (this._showCheckboxes()) {
                                const $node = this._getNodeElement(node);
                                this._getCheckBoxInstance($node).option("value", true)
                            }
                            return false
                        }
                        if (value && this._isSingleSelection()) {
                            const selectedKeys = this.getSelectedNodeKeys();
                            (0, _iterator.each)(selectedKeys, (index, key) => {
                                this._dataAdapter.toggleSelection(key, false);
                                this._updateItemsUI();
                                this._fireItemSelectionChanged(this._getNode(key))
                            })
                        }
                        this._dataAdapter.toggleSelection(node.internalFields.key, value);
                        const isAllSelected = this._dataAdapter.isAllSelected();
                        const needFireSelectAllChanged = this._selectAllEnabled() && this._$selectAllItem.dxCheckBox("instance").option("value") !== isAllSelected;
                        this._updateItemsUI();
                        this._fireItemSelectionChanged(node, dxEvent);
                        this._fireSelectionChanged();
                        if (needFireSelectAllChanged) {
                            this._fireSelectAllValueChanged(isAllSelected)
                        }
                        return true
                    },
                    _fireItemSelectionChanged: function(node, dxEvent) {
                        const initiator = dxEvent || this._findItemElementByItem(node.internalFields.item);
                        const handler = dxEvent ? this._itemDXEventHandler : this._itemEventHandler;
                        handler.call(this, initiator, "onItemSelectionChanged", {
                            node: this._dataAdapter.getPublicNode(node),
                            itemData: node.internalFields.item
                        })
                    },
                    _getCheckBoxInstance: function($node) {
                        const $treeViewItem = this._getItem($node);
                        return $treeViewItem.children(".".concat("dx-checkbox")).dxCheckBox("instance")
                    },
                    _updateItemsUI: function() {
                        const cache = {};
                        (0, _iterator.each)(this._dataAdapter.getData(), (_, node) => {
                            const $node = this._getNodeElement(node, cache);
                            const nodeSelection = node.internalFields.selected;
                            if (!$node.length) {
                                return
                            }
                            this._toggleSelectedClass($node, nodeSelection);
                            this.setAria("selected", nodeSelection, $node);
                            if (this._showCheckboxes()) {
                                this._getCheckBoxInstance($node).option("value", nodeSelection)
                            }
                        });
                        if (this._selectAllEnabled()) {
                            const selectAllCheckbox = this._$selectAllItem.dxCheckBox("instance");
                            selectAllCheckbox.option("onValueChanged", void 0);
                            selectAllCheckbox.option("value", this._dataAdapter.isAllSelected());
                            selectAllCheckbox.option("onValueChanged", this._onSelectAllCheckboxValueChanged.bind(this))
                        }
                    },
                    _updateParentsState: function(node, $node) {
                        if (!$node) {
                            return
                        }
                        const parentNode = this._dataAdapter.getNodeByKey(node.internalFields.parentKey);
                        const $parentNode = (0, _renderer.default)($node.parents("." + NODE_CLASS)[0]);
                        if (this._showCheckboxes()) {
                            const parentValue = parentNode.internalFields.selected;
                            this._getCheckBoxInstance($parentNode).option("value", parentValue);
                            this._toggleSelectedClass($parentNode, parentValue)
                        }
                        if (parentNode.internalFields.parentKey !== this.option("rootValue")) {
                            this._updateParentsState(parentNode, $parentNode)
                        }
                    },
                    _itemEventHandlerImpl: function(initiator, action, actionArgs) {
                        const $itemElement = (0, _renderer.default)(initiator).closest("." + NODE_CLASS).children("." + ITEM_CLASS);
                        return action((0, _extend.extend)(this._extendActionArgs($itemElement), actionArgs))
                    },
                    _itemContextMenuHandler: function(e) {
                        this._createEventHandler("onItemContextMenu", e)
                    },
                    _itemHoldHandler: function(e) {
                        this._createEventHandler("onItemHold", e)
                    },
                    _createEventHandler: function(eventName, e) {
                        const node = this._getNodeByElement(e.currentTarget);
                        this._itemDXEventHandler(e, eventName, {
                            node: this._dataAdapter.getPublicNode(node)
                        })
                    },
                    _itemClass: function() {
                        return ITEM_CLASS
                    },
                    _itemDataKey: function() {
                        return ITEM_DATA_KEY
                    },
                    _attachClickEvent: function() {
                        const $itemContainer = this._itemContainer();
                        this._detachClickEvent($itemContainer);
                        const {
                            clickEventNamespace: clickEventNamespace,
                            itemSelector: itemSelector,
                            pointerDownEventNamespace: pointerDownEventNamespace,
                            nodeSelector: nodeSelector
                        } = this._getItemClickEventData();
                        _events_engine.default.on($itemContainer, clickEventNamespace, itemSelector, e => {
                            if ((0, _renderer.default)(e.target).hasClass("dx-checkbox-icon") || (0, _renderer.default)(e.target).hasClass("dx-checkbox")) {
                                return
                            }
                            this._itemClickHandler(e, (0, _renderer.default)(e.currentTarget))
                        });
                        _events_engine.default.on($itemContainer, pointerDownEventNamespace, nodeSelector, e => {
                            this._itemPointerDownHandler(e)
                        })
                    },
                    _detachClickEvent: function(itemsContainer) {
                        const {
                            clickEventNamespace: clickEventNamespace,
                            itemSelector: itemSelector,
                            pointerDownEventNamespace: pointerDownEventNamespace,
                            nodeSelector: nodeSelector
                        } = this._getItemClickEventData();
                        _events_engine.default.off(itemsContainer, clickEventNamespace, itemSelector);
                        _events_engine.default.off(itemsContainer, pointerDownEventNamespace, nodeSelector)
                    },
                    _getItemClickEventData: function() {
                        const itemSelector = ".".concat(this._itemClass());
                        const nodeSelector = ".".concat(NODE_CLASS, ", .").concat(SELECT_ALL_ITEM_CLASS);
                        const clickEventNamespace = (0, _index.addNamespace)(_click.name, this.NAME);
                        const pointerDownEventNamespace = (0, _index.addNamespace)(_pointer.default.down, this.NAME);
                        return {
                            clickEventNamespace: clickEventNamespace,
                            itemSelector: itemSelector,
                            pointerDownEventNamespace: pointerDownEventNamespace,
                            nodeSelector: nodeSelector
                        }
                    },
                    _itemClick: function(actionArgs) {
                        const args = actionArgs.args[0];
                        const target = args.event.target[0] || args.event.target;
                        const link = target.getElementsByClassName("dx-item-url")[0];
                        if (args.itemData.url && link) {
                            link.click()
                        }
                    },
                    _itemClickHandler: function(e, $item) {
                        const itemData = this._getItemData($item);
                        const node = this._getNodeByElement($item);
                        this._itemDXEventHandler(e, "onItemClick", {
                            node: this._dataAdapter.getPublicNode(node)
                        }, {
                            beforeExecute: this._itemClick
                        });
                        if (this.option("selectByClick") && !e.isDefaultPrevented()) {
                            this._updateItemSelection(!node.internalFields.selected, itemData, e)
                        }
                    },
                    _updateSelectionToFirstItem: function($items, startIndex) {
                        let itemIndex = startIndex;
                        while (itemIndex >= 0) {
                            const $item = (0, _renderer.default)($items[itemIndex]);
                            this._updateItemSelection(true, $item.find("." + ITEM_CLASS).get(0));
                            itemIndex--
                        }
                    },
                    _updateSelectionToLastItem: function($items, startIndex) {
                        const length = $items.length;
                        let itemIndex = startIndex;
                        while (itemIndex < length) {
                            const $item = (0, _renderer.default)($items[itemIndex]);
                            this._updateItemSelection(true, $item.find("." + ITEM_CLASS).get(0));
                            itemIndex++
                        }
                    },
                    focus: function() {
                        if (this._selectAllEnabled()) {
                            _events_engine.default.trigger(this._$selectAllItem, "focus");
                            return
                        }
                        this.callBase()
                    },
                    _focusInHandler: function(e) {
                        this._updateFocusState(e, true);
                        const isSelectAllItem = (0, _renderer.default)(e.target).hasClass(SELECT_ALL_ITEM_CLASS);
                        if (isSelectAllItem || this.option("focusedElement")) {
                            clearTimeout(this._setFocusedItemTimeout);
                            this._setFocusedItemTimeout = setTimeout(() => {
                                const element = isSelectAllItem ? (0, _element.getPublicElement)(this._$selectAllItem) : (0, _renderer.default)(this.option("focusedElement"));
                                this._setFocusedItem(element)
                            });
                            return
                        }
                        const $activeItem = this._getActiveItem();
                        this.option("focusedElement", (0, _element.getPublicElement)($activeItem.closest("." + NODE_CLASS)))
                    },
                    _itemPointerDownHandler: function(e) {
                        if (!this.option("focusStateEnabled")) {
                            return
                        }
                        const $target = (0, _renderer.default)(e.target).closest("." + NODE_CLASS + ", ." + SELECT_ALL_ITEM_CLASS);
                        if (!$target.length) {
                            return
                        }
                        const itemElement = $target.hasClass("dx-state-disabled") ? null : $target;
                        this.option("focusedElement", (0, _element.getPublicElement)(itemElement))
                    },
                    _findNonDisabledNodes: function($nodes) {
                        return $nodes.not((function() {
                            return (0, _renderer.default)(this).children("." + ITEM_CLASS).hasClass("dx-state-disabled")
                        }))
                    },
                    _moveFocus: function(location, e) {
                        const FOCUS_UP = "up";
                        const FOCUS_DOWN = "down";
                        const FOCUS_FIRST = "first";
                        const FOCUS_LAST = "last";
                        const FOCUS_LEFT = this.option("rtlEnabled") ? "right" : "left";
                        const FOCUS_RIGHT = this.option("rtlEnabled") ? "left" : "right";
                        this.$element().find(".".concat(NODE_CONTAINER_CLASS)).each((function() {
                            _fx.default.stop(this, true)
                        }));
                        const $items = this._nodeElements();
                        if (!$items || !$items.length) {
                            return
                        }
                        switch (location) {
                            case FOCUS_UP: {
                                const $prevItem = this._prevItem($items);
                                this.option("focusedElement", (0, _element.getPublicElement)($prevItem));
                                const prevItemElement = this._getNodeItemElement($prevItem);
                                this.getScrollable().scrollToElement(prevItemElement);
                                if (e.shiftKey && this._showCheckboxes()) {
                                    this._updateItemSelection(true, prevItemElement)
                                }
                                break
                            }
                            case FOCUS_DOWN: {
                                const $nextItem = this._nextItem($items);
                                this.option("focusedElement", (0, _element.getPublicElement)($nextItem));
                                const nextItemElement = this._getNodeItemElement($nextItem);
                                this.getScrollable().scrollToElement(nextItemElement);
                                if (e.shiftKey && this._showCheckboxes()) {
                                    this._updateItemSelection(true, nextItemElement)
                                }
                                break
                            }
                            case FOCUS_FIRST: {
                                const $firstItem = $items.first();
                                if (e.shiftKey && this._showCheckboxes()) {
                                    this._updateSelectionToFirstItem($items, $items.index(this._prevItem($items)))
                                }
                                this.option("focusedElement", (0, _element.getPublicElement)($firstItem));
                                this.getScrollable().scrollToElement(this._getNodeItemElement($firstItem));
                                break
                            }
                            case FOCUS_LAST: {
                                const $lastItem = $items.last();
                                if (e.shiftKey && this._showCheckboxes()) {
                                    this._updateSelectionToLastItem($items, $items.index(this._nextItem($items)))
                                }
                                this.option("focusedElement", (0, _element.getPublicElement)($lastItem));
                                this.getScrollable().scrollToElement(this._getNodeItemElement($lastItem));
                                break
                            }
                            case FOCUS_RIGHT:
                                this._expandFocusedContainer();
                                break;
                            case FOCUS_LEFT:
                                this._collapseFocusedContainer();
                                break;
                            default:
                                this.callBase.apply(this, arguments);
                                return
                        }
                    },
                    _getNodeItemElement: function($node) {
                        return $node.find("." + ITEM_CLASS).get(0)
                    },
                    _nodeElements: function() {
                        return this.$element().find("." + NODE_CLASS).not(":hidden")
                    },
                    _expandFocusedContainer: function() {
                        const $focusedNode = (0, _renderer.default)(this.option("focusedElement"));
                        if (!$focusedNode.length || $focusedNode.hasClass(IS_LEAF)) {
                            return
                        }
                        const $node = $focusedNode.find(".".concat(NODE_CONTAINER_CLASS)).eq(0);
                        if ($node.hasClass(OPENED_NODE_CONTAINER_CLASS)) {
                            const $nextItem = this._nextItem(this._findNonDisabledNodes(this._nodeElements()));
                            this.option("focusedElement", (0, _element.getPublicElement)($nextItem));
                            this.getScrollable().scrollToElement(this._getNodeItemElement($nextItem));
                            return
                        }
                        const node = this._getNodeByElement(this._getItem($focusedNode));
                        this._toggleExpandedState(node, true)
                    },
                    _getClosestNonDisabledNode: function($node) {
                        do {
                            $node = $node.parent().closest("." + NODE_CLASS)
                        } while ($node.children(".dx-treeview-item.dx-state-disabled").length);
                        return $node
                    },
                    _collapseFocusedContainer: function() {
                        const $focusedNode = (0, _renderer.default)(this.option("focusedElement"));
                        if (!$focusedNode.length) {
                            return
                        }
                        const nodeElement = $focusedNode.find(".".concat(NODE_CONTAINER_CLASS)).eq(0);
                        if (!$focusedNode.hasClass(IS_LEAF) && nodeElement.hasClass(OPENED_NODE_CONTAINER_CLASS)) {
                            const node = this._getNodeByElement(this._getItem($focusedNode));
                            this._toggleExpandedState(node, false)
                        } else {
                            const collapsedNode = this._getClosestNonDisabledNode($focusedNode);
                            collapsedNode.length && this.option("focusedElement", (0, _element.getPublicElement)(collapsedNode));
                            this.getScrollable().scrollToElement(this._getNodeItemElement(collapsedNode))
                        }
                    },
                    _encodeString: function(value) {
                        return (0, _type.isString)(value) ? encodeURI(value) : value
                    },
                    _decodeString: function(value) {
                        return (0, _type.isString)(value) ? decodeURI(value) : value
                    },
                    getScrollable: function() {
                        return this._scrollable
                    },
                    updateDimensions: function() {
                        const deferred = new _deferred.Deferred;
                        const scrollable = this.getScrollable();
                        if (scrollable) {
                            scrollable.update().done(() => {
                                deferred.resolveWith(this)
                            })
                        } else {
                            deferred.resolveWith(this)
                        }
                        return deferred.promise()
                    },
                    selectItem: function(itemElement) {
                        return this._updateItemSelection(true, itemElement)
                    },
                    unselectItem: function(itemElement) {
                        return this._updateItemSelection(false, itemElement)
                    },
                    expandItem: function(itemElement) {
                        return this._toggleExpandedState(itemElement, true)
                    },
                    collapseItem: function(itemElement) {
                        return this._toggleExpandedState(itemElement, false)
                    },
                    getNodes: function() {
                        return this._dataAdapter.getTreeNodes()
                    },
                    getSelectedNodes: function() {
                        return this.getSelectedNodeKeys().map(key => {
                            const node = this._dataAdapter.getNodeByKey(key);
                            return this._dataAdapter.getPublicNode(node)
                        })
                    },
                    getSelectedNodeKeys: function() {
                        return this._dataAdapter.getSelectedNodesKeys()
                    },
                    selectAll: function() {
                        if (this._selectAllEnabled()) {
                            this._$selectAllItem.dxCheckBox("instance").option("value", true)
                        } else {
                            this._toggleSelectAll({
                                value: true
                            })
                        }
                    },
                    unselectAll: function() {
                        if (this._selectAllEnabled()) {
                            this._$selectAllItem.dxCheckBox("instance").option("value", false)
                        } else {
                            this._toggleSelectAll({
                                value: false
                            })
                        }
                    },
                    _allItemsExpandedHandler: function() {
                        this._skipContentReadyAndItemExpanded = false;
                        this._fireContentReadyAction()
                    },
                    expandAll: function() {
                        const nodes = this._dataAdapter.getData();
                        const expandingPromises = [];
                        this._skipContentReadyAndItemExpanded = true;
                        nodes.forEach(node => expandingPromises.push(this._toggleExpandedState(node.internalFields.key, true)));
                        Promise.allSettled(expandingPromises).then(() => {
                            var _this$_allItemsExpand;
                            return null === (_this$_allItemsExpand = this._allItemsExpandedHandler) || void 0 === _this$_allItemsExpand ? void 0 : _this$_allItemsExpand.call(this)
                        })
                    },
                    collapseAll: function() {
                        (0, _iterator.each)(this._dataAdapter.getExpandedNodesKeys(), function(_, key) {
                            this._toggleExpandedState(key, false)
                        }.bind(this))
                    },
                    scrollToItem: function(keyOrItemOrElement) {
                        const node = this._getNode(keyOrItemOrElement);
                        if (!node) {
                            return (new _deferred.Deferred).reject().promise()
                        }
                        const nodeKeysToExpand = [];
                        let parentNode = node.internalFields.publicNode.parent;
                        while (null != parentNode) {
                            if (!parentNode.expanded) {
                                nodeKeysToExpand.push(parentNode.key)
                            }
                            parentNode = parentNode.parent
                        }
                        const scrollCallback = new _deferred.Deferred;
                        this._expandNodes(nodeKeysToExpand.reverse()).always(() => {
                            const $element = this._getNodeElement(node);
                            if ($element && $element.length) {
                                this.scrollToElementTopLeft($element.get(0));
                                scrollCallback.resolve()
                            } else {
                                scrollCallback.reject()
                            }
                        });
                        return scrollCallback.promise()
                    },
                    scrollToElementTopLeft: function(targetElement) {
                        const scrollable = this.getScrollable();
                        const {
                            scrollDirection: scrollDirection,
                            rtlEnabled: rtlEnabled
                        } = this.option();
                        const targetLocation = {
                            top: 0,
                            left: 0
                        };
                        const relativeOffset = (0, _get_relative_offset.getRelativeOffset)(_consts.SCROLLABLE_CONTENT_CLASS, targetElement);
                        if (scrollDirection !== _consts.DIRECTION_VERTICAL) {
                            const containerElement = (0, _renderer.default)(scrollable.container()).get(0);
                            targetLocation.left = rtlEnabled ? relativeOffset.left + targetElement.offsetWidth - containerElement.clientWidth : relativeOffset.left
                        }
                        if (scrollDirection !== _consts.DIRECTION_HORIZONTAL) {
                            targetLocation.top = relativeOffset.top
                        }
                        scrollable.scrollTo(targetLocation)
                    },
                    _expandNodes: function(keysToExpand) {
                        if (!keysToExpand || 0 === keysToExpand.length) {
                            return (new _deferred.Deferred).resolve().promise()
                        }
                        const resultCallback = new _deferred.Deferred;
                        const callbacksByNodes = keysToExpand.map(key => this.expandItem(key));
                        _deferred.when.apply(_renderer.default, callbacksByNodes).done(() => resultCallback.resolve()).fail(() => resultCallback.reject());
                        return resultCallback.promise()
                    },
                    _dispose: function() {
                        this.callBase();
                        clearTimeout(this._setFocusedItemTimeout);
                        this._allItemsExpandedHandler = null
                    }
                });
                var _default = TreeViewBase;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        76986:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/tree_view/ui.tree_view.search.js ***!
              \*********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.search_box_mixin */ 2630));
                var _text_box = _interopRequireDefault(__webpack_require__( /*! ../text_box */ 29837));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _uiTree_view = _interopRequireDefault(__webpack_require__( /*! ./ui.tree_view.base */ 60903));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                _ui.default.setEditorClass(_text_box.default);
                const NODE_CONTAINER_CLASS = "".concat("dx-treeview", "-node-container");
                const TreeViewSearch = _uiTree_view.default.inherit(_ui.default).inherit({
                    _addWidgetPrefix: function(className) {
                        return "".concat("dx-treeview", "-").concat(className)
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "searchValue":
                                if (this._showCheckboxes() && this._isRecursiveSelection()) {
                                    this._removeSelection()
                                }
                                this._initDataAdapter();
                                this._updateSearch();
                                this._repaintContainer();
                                this.option("focusedElement", null);
                                break;
                            case "searchExpr":
                                this._initDataAdapter();
                                this.repaint();
                                break;
                            case "searchMode":
                                this.option("expandNodesRecursive") ? this._updateDataAdapter() : this._initDataAdapter();
                                this.repaint();
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _updateDataAdapter: function() {
                        this._setOptionWithoutOptionChange("expandNodesRecursive", false);
                        this._initDataAdapter();
                        this._setOptionWithoutOptionChange("expandNodesRecursive", true)
                    },
                    _getDataAdapterOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            searchValue: this.option("searchValue"),
                            searchMode: this.option("searchMode") || "contains",
                            searchExpr: this.option("searchExpr")
                        })
                    },
                    _getNodeContainer: function() {
                        return this.$element().find(".".concat(NODE_CONTAINER_CLASS)).first()
                    },
                    _updateSearch: function() {
                        if (this._searchEditor) {
                            const editorOptions = this._getSearchEditorOptions();
                            this._searchEditor.option(editorOptions)
                        }
                    },
                    _repaintContainer: function() {
                        const $container = this._getNodeContainer();
                        let rootNodes;
                        if ($container.length) {
                            $container.empty();
                            rootNodes = this._dataAdapter.getRootNodes();
                            this._renderEmptyMessage(rootNodes);
                            this._renderItems($container, rootNodes);
                            this._fireContentReadyAction()
                        }
                    },
                    _focusTarget: function() {
                        return this._itemContainer(this.option("searchEnabled"))
                    },
                    _cleanItemContainer: function() {
                        this.$element().empty()
                    },
                    _itemContainer: function(isSearchMode, selectAllEnabled) {
                        var _selectAllEnabled;
                        null !== (_selectAllEnabled = selectAllEnabled) && void 0 !== _selectAllEnabled ? _selectAllEnabled : selectAllEnabled = this._selectAllEnabled();
                        if (selectAllEnabled) {
                            return this._getNodeContainer()
                        }
                        if (this._scrollable && isSearchMode) {
                            return (0, _renderer.default)(this._scrollable.content())
                        }
                        return this.callBase()
                    },
                    _addWidgetClass: function() {
                        this.$element().addClass(this._widgetClass())
                    },
                    _clean: function() {
                        this.callBase();
                        this._removeSearchBox()
                    }
                });
                (0, _component_registrator.default)("dxTreeView", TreeViewSearch);
                var _default = TreeViewSearch;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        76299:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/validation/default_adapter.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _class = (obj = __webpack_require__( /*! ../../core/class */ 38377), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const DefaultAdapter = _class.default.inherit({
                    ctor(editor, validator) {
                        this.editor = editor;
                        this.validator = validator;
                        this.validationRequestsCallbacks = [];
                        const handler = args => {
                            this.validationRequestsCallbacks.forEach(item => item(args))
                        };
                        editor.validationRequest.add(handler);
                        editor.on("disposing", (function() {
                            editor.validationRequest.remove(handler)
                        }))
                    },
                    getValue() {
                        return this.editor.option("value")
                    },
                    getCurrentValidationError() {
                        return this.editor.option("validationError")
                    },
                    bypass() {
                        return this.editor.option("disabled")
                    },
                    applyValidationResults(params) {
                        this.editor.option({
                            validationErrors: params.brokenRules,
                            validationStatus: params.status
                        })
                    },
                    reset() {
                        this.editor.clear()
                    },
                    focus() {
                        this.editor.focus()
                    }
                });
                var _default = DefaultAdapter;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        90964:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/validation_engine.js ***!
              \*********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _class = _interopRequireDefault(__webpack_require__( /*! ../core/class */ 38377));
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _events_strategy = __webpack_require__( /*! ../core/events_strategy */ 80566);
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../core/errors */ 17381));
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _number = _interopRequireDefault(__webpack_require__( /*! ../localization/number */ 18016));
                var _message = _interopRequireDefault(__webpack_require__( /*! ../localization/message */ 28109));
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);

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

                function _inheritsLoose(subClass, superClass) {
                    subClass.prototype = Object.create(superClass.prototype);
                    subClass.prototype.constructor = subClass;
                    _setPrototypeOf(subClass, superClass)
                }

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                const EMAIL_VALIDATION_REGEX = /^[\d\w.+_-]+@[\d\w._-]+\.[\w]+$/i;
                const STATUS_valid = "valid",
                    STATUS_invalid = "invalid",
                    STATUS_pending = "pending";
                let BaseRuleValidator = function() {
                    function BaseRuleValidator() {
                        this.NAME = "base"
                    }
                    var _proto = BaseRuleValidator.prototype;
                    _proto.defaultMessage = function(value) {
                        return _message.default.getFormatter("validation-".concat(this.NAME))(value)
                    };
                    _proto.defaultFormattedMessage = function(value) {
                        return _message.default.getFormatter("validation-".concat(this.NAME, "-formatted"))(value)
                    };
                    _proto._isValueEmpty = function(value) {
                        return !rulesValidators.required.validate(value, {})
                    };
                    _proto.validate = function(value, rule) {
                        const valueArray = Array.isArray(value) ? value : [value];
                        let result = true;
                        if (valueArray.length) {
                            valueArray.every(itemValue => {
                                result = this._validate(itemValue, rule);
                                return result
                            })
                        } else {
                            result = this._validate(null, rule)
                        }
                        return result
                    };
                    return BaseRuleValidator
                }();
                let RequiredRuleValidator = function(_BaseRuleValidator) {
                    _inheritsLoose(RequiredRuleValidator, _BaseRuleValidator);

                    function RequiredRuleValidator() {
                        var _this;
                        _this = _BaseRuleValidator.call(this) || this;
                        _this.NAME = "required";
                        return _this
                    }
                    var _proto2 = RequiredRuleValidator.prototype;
                    _proto2._validate = function(value, rule) {
                        if (!(0, _type.isDefined)(value)) {
                            return false
                        }
                        if (false === value) {
                            return false
                        }
                        value = String(value);
                        if (rule.trim || !(0, _type.isDefined)(rule.trim)) {
                            value = value.trim()
                        }
                        return "" !== value
                    };
                    return RequiredRuleValidator
                }(BaseRuleValidator);
                let NumericRuleValidator = function(_BaseRuleValidator2) {
                    _inheritsLoose(NumericRuleValidator, _BaseRuleValidator2);

                    function NumericRuleValidator() {
                        var _this2;
                        _this2 = _BaseRuleValidator2.call(this) || this;
                        _this2.NAME = "numeric";
                        return _this2
                    }
                    var _proto3 = NumericRuleValidator.prototype;
                    _proto3._validate = function(value, rule) {
                        if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) {
                            return true
                        }
                        if (rule.useCultureSettings && (0, _type.isString)(value)) {
                            return !isNaN(_number.default.parse(value))
                        } else {
                            return (0, _type.isNumeric)(value)
                        }
                    };
                    return NumericRuleValidator
                }(BaseRuleValidator);
                let RangeRuleValidator = function(_BaseRuleValidator3) {
                    _inheritsLoose(RangeRuleValidator, _BaseRuleValidator3);

                    function RangeRuleValidator() {
                        var _this3;
                        _this3 = _BaseRuleValidator3.call(this) || this;
                        _this3.NAME = "range";
                        return _this3
                    }
                    var _proto4 = RangeRuleValidator.prototype;
                    _proto4._validate = function(value, rule) {
                        if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) {
                            return true
                        }
                        const validNumber = rulesValidators.numeric.validate(value, rule);
                        const validValue = (0, _type.isDefined)(value) && "" !== value;
                        const number = validNumber ? parseFloat(value) : validValue && value.valueOf();
                        const min = rule.min;
                        const max = rule.max;
                        if (!(validNumber || (0, _type.isDate)(value)) && !validValue) {
                            return false
                        }
                        if ((0, _type.isDefined)(min)) {
                            if ((0, _type.isDefined)(max)) {
                                return number >= min && number <= max
                            }
                            return number >= min
                        } else if ((0, _type.isDefined)(max)) {
                            return number <= max
                        } else {
                            throw _errors.default.Error("E0101")
                        }
                    };
                    return RangeRuleValidator
                }(BaseRuleValidator);
                let StringLengthRuleValidator = function(_BaseRuleValidator4) {
                    _inheritsLoose(StringLengthRuleValidator, _BaseRuleValidator4);

                    function StringLengthRuleValidator() {
                        var _this4;
                        _this4 = _BaseRuleValidator4.call(this) || this;
                        _this4.NAME = "stringLength";
                        return _this4
                    }
                    var _proto5 = StringLengthRuleValidator.prototype;
                    _proto5._validate = function(value, rule) {
                        var _value;
                        value = String(null !== (_value = value) && void 0 !== _value ? _value : "");
                        if (rule.trim || !(0, _type.isDefined)(rule.trim)) {
                            value = value.trim()
                        }
                        if (rule.ignoreEmptyValue && this._isValueEmpty(value)) {
                            return true
                        }
                        return rulesValidators.range.validate(value.length, (0, _extend.extend)({}, rule))
                    };
                    return StringLengthRuleValidator
                }(BaseRuleValidator);
                let CustomRuleValidator = function(_BaseRuleValidator5) {
                    _inheritsLoose(CustomRuleValidator, _BaseRuleValidator5);

                    function CustomRuleValidator() {
                        var _this5;
                        _this5 = _BaseRuleValidator5.call(this) || this;
                        _this5.NAME = "custom";
                        return _this5
                    }
                    var _proto6 = CustomRuleValidator.prototype;
                    _proto6.validate = function(value, rule) {
                        if (rule.ignoreEmptyValue && this._isValueEmpty(value)) {
                            return true
                        }
                        const validator = rule.validator;
                        const dataGetter = validator && (0, _type.isFunction)(validator.option) && validator.option("dataGetter");
                        const extraParams = (0, _type.isFunction)(dataGetter) && dataGetter();
                        const params = {
                            value: value,
                            validator: validator,
                            rule: rule
                        };
                        if (extraParams) {
                            (0, _extend.extend)(params, extraParams)
                        }
                        return rule.validationCallback(params)
                    };
                    return CustomRuleValidator
                }(BaseRuleValidator);
                let AsyncRuleValidator = function(_CustomRuleValidator) {
                    _inheritsLoose(AsyncRuleValidator, _CustomRuleValidator);

                    function AsyncRuleValidator() {
                        var _this6;
                        _this6 = _CustomRuleValidator.call(this) || this;
                        _this6.NAME = "async";
                        return _this6
                    }
                    var _proto7 = AsyncRuleValidator.prototype;
                    _proto7.validate = function(value, rule) {
                        if (!(0, _type.isDefined)(rule.reevaluate)) {
                            (0, _extend.extend)(rule, {
                                reevaluate: true
                            })
                        }
                        if (rule.ignoreEmptyValue && this._isValueEmpty(value)) {
                            return true
                        }
                        const validator = rule.validator;
                        const dataGetter = validator && (0, _type.isFunction)(validator.option) && validator.option("dataGetter");
                        const extraParams = (0, _type.isFunction)(dataGetter) && dataGetter();
                        const params = {
                            value: value,
                            validator: validator,
                            rule: rule
                        };
                        if (extraParams) {
                            (0, _extend.extend)(params, extraParams)
                        }
                        const callbackResult = rule.validationCallback(params);
                        if (!(0, _type.isPromise)(callbackResult)) {
                            throw _errors.default.Error("E0103")
                        }
                        return this._getWrappedPromise((0, _deferred.fromPromise)(callbackResult).promise())
                    };
                    _proto7._getWrappedPromise = function(promise) {
                        const deferred = new _deferred.Deferred;
                        promise.then((function(res) {
                            deferred.resolve(res)
                        }), (function(err) {
                            const res = {
                                isValid: false
                            };
                            if ((0, _type.isDefined)(err)) {
                                if ((0, _type.isString)(err)) {
                                    res.message = err
                                } else if ((0, _type.isObject)(err) && (0, _type.isDefined)(err.message) && (0, _type.isString)(err.message)) {
                                    res.message = err.message
                                }
                            }
                            deferred.resolve(res)
                        }));
                        return deferred.promise()
                    };
                    return AsyncRuleValidator
                }(CustomRuleValidator);
                let CompareRuleValidator = function(_BaseRuleValidator6) {
                    _inheritsLoose(CompareRuleValidator, _BaseRuleValidator6);

                    function CompareRuleValidator() {
                        var _this7;
                        _this7 = _BaseRuleValidator6.call(this) || this;
                        _this7.NAME = "compare";
                        return _this7
                    }
                    var _proto8 = CompareRuleValidator.prototype;
                    _proto8._validate = function(value, rule) {
                        if (!rule.comparisonTarget) {
                            throw _errors.default.Error("E0102")
                        }
                        if (rule.ignoreEmptyValue && this._isValueEmpty(value)) {
                            return true
                        }(0, _extend.extend)(rule, {
                            reevaluate: true
                        });
                        const otherValue = rule.comparisonTarget();
                        const type = rule.comparisonType || "==";
                        switch (type) {
                            case "==":
                                return value == otherValue;
                            case "!=":
                                return value != otherValue;
                            case "===":
                                return value === otherValue;
                            case "!==":
                                return value !== otherValue;
                            case ">":
                                return value > otherValue;
                            case ">=":
                                return value >= otherValue;
                            case "<":
                                return value < otherValue;
                            case "<=":
                                return value <= otherValue
                        }
                    };
                    return CompareRuleValidator
                }(BaseRuleValidator);
                let PatternRuleValidator = function(_BaseRuleValidator7) {
                    _inheritsLoose(PatternRuleValidator, _BaseRuleValidator7);

                    function PatternRuleValidator() {
                        var _this8;
                        _this8 = _BaseRuleValidator7.call(this) || this;
                        _this8.NAME = "pattern";
                        return _this8
                    }
                    var _proto9 = PatternRuleValidator.prototype;
                    _proto9._validate = function(value, rule) {
                        if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) {
                            return true
                        }
                        let pattern = rule.pattern;
                        if ((0, _type.isString)(pattern)) {
                            pattern = new RegExp(pattern)
                        }
                        return pattern.test(value)
                    };
                    return PatternRuleValidator
                }(BaseRuleValidator);
                let EmailRuleValidator = function(_BaseRuleValidator8) {
                    _inheritsLoose(EmailRuleValidator, _BaseRuleValidator8);

                    function EmailRuleValidator() {
                        var _this9;
                        _this9 = _BaseRuleValidator8.call(this) || this;
                        _this9.NAME = "email";
                        return _this9
                    }
                    var _proto10 = EmailRuleValidator.prototype;
                    _proto10._validate = function(value, rule) {
                        if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) {
                            return true
                        }
                        return rulesValidators.pattern.validate(value, (0, _extend.extend)({}, rule, {
                            pattern: EMAIL_VALIDATION_REGEX
                        }))
                    };
                    return EmailRuleValidator
                }(BaseRuleValidator);
                const rulesValidators = {
                    required: new RequiredRuleValidator,
                    numeric: new NumericRuleValidator,
                    range: new RangeRuleValidator,
                    stringLength: new StringLengthRuleValidator,
                    custom: new CustomRuleValidator,
                    async: new AsyncRuleValidator,
                    compare: new CompareRuleValidator,
                    pattern: new PatternRuleValidator,
                    email: new EmailRuleValidator
                };
                const GroupConfig = _class.default.inherit({
                    ctor(group) {
                        this.group = group;
                        this.validators = [];
                        this._pendingValidators = [];
                        this._onValidatorStatusChanged = this._onValidatorStatusChanged.bind(this);
                        this._resetValidationInfo();
                        this._eventsStrategy = new _events_strategy.EventsStrategy(this)
                    },
                    validate() {
                        const result = {
                            isValid: true,
                            brokenRules: [],
                            validators: [],
                            status: STATUS_valid,
                            complete: null
                        };
                        this._unsubscribeFromAllChangeEvents();
                        this._pendingValidators = [];
                        this._resetValidationInfo();
                        (0, _iterator.each)(this.validators, (_, validator) => {
                            const validatorResult = validator.validate();
                            result.isValid = result.isValid && validatorResult.isValid;
                            if (validatorResult.brokenRules) {
                                result.brokenRules = result.brokenRules.concat(validatorResult.brokenRules)
                            }
                            result.validators.push(validator);
                            if (validatorResult.status === STATUS_pending) {
                                this._addPendingValidator(validator)
                            }
                            this._subscribeToChangeEvents(validator)
                        });
                        if (this._pendingValidators.length) {
                            result.status = STATUS_pending
                        } else {
                            result.status = result.isValid ? STATUS_valid : STATUS_invalid;
                            this._unsubscribeFromAllChangeEvents();
                            this._raiseValidatedEvent(result)
                        }
                        this._updateValidationInfo(result);
                        return (0, _extend.extend)({}, this._validationInfo.result)
                    },
                    _subscribeToChangeEvents(validator) {
                        validator.on("validating", this._onValidatorStatusChanged);
                        validator.on("validated", this._onValidatorStatusChanged)
                    },
                    _unsubscribeFromChangeEvents(validator) {
                        validator.off("validating", this._onValidatorStatusChanged);
                        validator.off("validated", this._onValidatorStatusChanged)
                    },
                    _unsubscribeFromAllChangeEvents() {
                        (0, _iterator.each)(this.validators, (_, validator) => {
                            this._unsubscribeFromChangeEvents(validator)
                        })
                    },
                    _updateValidationInfo(result) {
                        this._validationInfo.result = result;
                        if (result.status !== STATUS_pending) {
                            return
                        }
                        if (!this._validationInfo.deferred) {
                            this._validationInfo.deferred = new _deferred.Deferred;
                            this._validationInfo.result.complete = this._validationInfo.deferred.promise()
                        }
                    },
                    _addPendingValidator(validator) {
                        const foundValidator = (0, _common.grep)(this._pendingValidators, (function(val) {
                            return val === validator
                        }))[0];
                        if (!foundValidator) {
                            this._pendingValidators.push(validator)
                        }
                    },
                    _removePendingValidator(validator) {
                        const index = this._pendingValidators.indexOf(validator);
                        if (index >= 0) {
                            this._pendingValidators.splice(index, 1)
                        }
                    },
                    _orderBrokenRules(brokenRules) {
                        let orderedRules = [];
                        (0, _iterator.each)(this.validators, (function(_, validator) {
                            const foundRules = (0, _common.grep)(brokenRules, (function(rule) {
                                return rule.validator === validator
                            }));
                            if (foundRules.length) {
                                orderedRules = orderedRules.concat(foundRules)
                            }
                        }));
                        return orderedRules
                    },
                    _updateBrokenRules(result) {
                        if (!this._validationInfo.result) {
                            return
                        }
                        let brokenRules = this._validationInfo.result.brokenRules;
                        const rules = (0, _common.grep)(brokenRules, (function(rule) {
                            return rule.validator !== result.validator
                        }));
                        if (result.brokenRules) {
                            brokenRules = rules.concat(result.brokenRules)
                        }
                        this._validationInfo.result.brokenRules = this._orderBrokenRules(brokenRules)
                    },
                    _onValidatorStatusChanged(result) {
                        if (result.status === STATUS_pending) {
                            this._addPendingValidator(result.validator);
                            return
                        }
                        this._resolveIfComplete(result)
                    },
                    _resolveIfComplete(result) {
                        this._removePendingValidator(result.validator);
                        this._updateBrokenRules(result);
                        if (!this._pendingValidators.length) {
                            this._unsubscribeFromAllChangeEvents();
                            if (!this._validationInfo.result) {
                                return
                            }
                            this._validationInfo.result.status = 0 === this._validationInfo.result.brokenRules.length ? STATUS_valid : STATUS_invalid;
                            this._validationInfo.result.isValid = this._validationInfo.result.status === STATUS_valid;
                            const res = (0, _extend.extend)({}, this._validationInfo.result, {
                                complete: null
                            });
                            const deferred = this._validationInfo.deferred;
                            this._validationInfo.deferred = null;
                            this._raiseValidatedEvent(res);
                            deferred && setTimeout(() => {
                                deferred.resolve(res)
                            })
                        }
                    },
                    _raiseValidatedEvent(result) {
                        this._eventsStrategy.fireEvent("validated", [result])
                    },
                    _resetValidationInfo() {
                        this._validationInfo = {
                            result: null,
                            deferred: null
                        }
                    },
                    _synchronizeValidationInfo() {
                        if (this._validationInfo.result) {
                            this._validationInfo.result.validators = this.validators
                        }
                    },
                    removeRegisteredValidator(validator) {
                        const index = this.validators.indexOf(validator);
                        if (index > -1) {
                            this.validators.splice(index, 1);
                            this._synchronizeValidationInfo();
                            this._resolveIfComplete({
                                validator: validator
                            })
                        }
                    },
                    registerValidator(validator) {
                        if (!this.validators.includes(validator)) {
                            this.validators.push(validator);
                            this._synchronizeValidationInfo()
                        }
                    },
                    reset() {
                        (0, _iterator.each)(this.validators, (function(_, validator) {
                            validator.reset()
                        }));
                        this._pendingValidators = [];
                        this._resetValidationInfo()
                    },
                    on(eventName, eventHandler) {
                        this._eventsStrategy.on(eventName, eventHandler);
                        return this
                    },
                    off(eventName, eventHandler) {
                        this._eventsStrategy.off(eventName, eventHandler);
                        return this
                    }
                });
                const ValidationEngine = {
                    groups: [],
                    getGroupConfig(group) {
                        const result = (0, _common.grep)(this.groups, (function(config) {
                            return config.group === group
                        }));
                        if (result.length) {
                            return result[0]
                        }
                    },
                    findGroup($element, model) {
                        var _$element$data, _$element$data$dxComp;
                        const hasValidationGroup = null === (_$element$data = $element.data()) || void 0 === _$element$data ? void 0 : null === (_$element$data$dxComp = _$element$data.dxComponents) || void 0 === _$element$data$dxComp ? void 0 : _$element$data$dxComp.includes("dxValidationGroup");
                        const validationGroup = hasValidationGroup && $element.dxValidationGroup("instance");
                        if (validationGroup) {
                            return validationGroup
                        }
                        const $dxGroup = $element.parents(".dx-validationgroup").first();
                        if ($dxGroup.length) {
                            return $dxGroup.dxValidationGroup("instance")
                        }
                        return model
                    },
                    initGroups() {
                        this.groups = [];
                        this.addGroup()
                    },
                    addGroup(group) {
                        let config = this.getGroupConfig(group);
                        if (!config) {
                            config = new GroupConfig(group);
                            this.groups.push(config)
                        }
                        return config
                    },
                    removeGroup(group) {
                        const config = this.getGroupConfig(group);
                        const index = this.groups.indexOf(config);
                        if (index > -1) {
                            this.groups.splice(index, 1)
                        }
                        return config
                    },
                    _setDefaultMessage(info) {
                        const {
                            rule: rule,
                            validator: validator,
                            name: name
                        } = info;
                        if (!(0, _type.isDefined)(rule.message)) {
                            if (validator.defaultFormattedMessage && (0, _type.isDefined)(name)) {
                                rule.message = validator.defaultFormattedMessage(name)
                            } else {
                                rule.message = validator.defaultMessage()
                            }
                        }
                    },
                    _addBrokenRule(info) {
                        const {
                            result: result,
                            rule: rule
                        } = info;
                        if (!result.brokenRule) {
                            result.brokenRule = rule
                        }
                        if (!result.brokenRules) {
                            result.brokenRules = []
                        }
                        result.brokenRules.push(rule)
                    },
                    validate(value, rules, name) {
                        var _rules$;
                        let result = {
                            name: name,
                            value: value,
                            brokenRule: null,
                            brokenRules: null,
                            isValid: true,
                            validationRules: rules,
                            pendingRules: null,
                            status: STATUS_valid,
                            complete: null
                        };
                        const validator = null === rules || void 0 === rules ? void 0 : null === (_rules$ = rules[0]) || void 0 === _rules$ ? void 0 : _rules$.validator;
                        const asyncRuleItems = [];
                        (0, _iterator.each)(rules || [], (_, rule) => {
                            const ruleValidator = rulesValidators[rule.type];
                            let ruleValidationResult;
                            if (ruleValidator) {
                                if ((0, _type.isDefined)(rule.isValid) && rule.value === value && !rule.reevaluate) {
                                    if (!rule.isValid) {
                                        result.isValid = false;
                                        this._addBrokenRule({
                                            result: result,
                                            rule: rule
                                        });
                                        return false
                                    }
                                    return true
                                }
                                rule.value = value;
                                if ("async" === rule.type) {
                                    asyncRuleItems.push({
                                        rule: rule,
                                        ruleValidator: ruleValidator
                                    });
                                    return true
                                }
                                ruleValidationResult = ruleValidator.validate(value, rule);
                                rule.isValid = ruleValidationResult;
                                if (!ruleValidationResult) {
                                    result.isValid = false;
                                    this._setDefaultMessage({
                                        rule: rule,
                                        validator: ruleValidator,
                                        name: name
                                    });
                                    this._addBrokenRule({
                                        result: result,
                                        rule: rule
                                    })
                                }
                                if (!rule.isValid) {
                                    return false
                                }
                            } else {
                                throw _errors.default.Error("E0100")
                            }
                        });
                        if (result.isValid && !result.brokenRules && asyncRuleItems.length) {
                            result = this._validateAsyncRules({
                                value: value,
                                items: asyncRuleItems,
                                result: result,
                                name: name
                            })
                        }
                        this._synchronizeGroupValidationInfo(validator, result);
                        result.status = result.pendingRules ? STATUS_pending : result.isValid ? STATUS_valid : STATUS_invalid;
                        return result
                    },
                    _synchronizeGroupValidationInfo(validator, result) {
                        var _result$brokenRules;
                        if (!validator) {
                            return
                        }
                        const groupConfig = ValidationEngine.getGroupConfig(validator._validationGroup);
                        groupConfig._updateBrokenRules.call(groupConfig, {
                            validator: validator,
                            brokenRules: null !== (_result$brokenRules = result.brokenRules) && void 0 !== _result$brokenRules ? _result$brokenRules : []
                        })
                    },
                    _validateAsyncRules(_ref) {
                        let {
                            result: result,
                            value: value,
                            items: items,
                            name: name
                        } = _ref;
                        const asyncResults = [];
                        (0, _iterator.each)(items, (_, item) => {
                            const validateResult = item.ruleValidator.validate(value, item.rule);
                            if (!(0, _type.isPromise)(validateResult)) {
                                this._updateRuleConfig({
                                    rule: item.rule,
                                    ruleResult: this._getPatchedRuleResult(validateResult),
                                    validator: item.ruleValidator,
                                    name: name
                                })
                            } else {
                                if (!result.pendingRules) {
                                    result.pendingRules = []
                                }
                                result.pendingRules.push(item.rule);
                                const asyncResult = validateResult.then(res => {
                                    const ruleResult = this._getPatchedRuleResult(res);
                                    this._updateRuleConfig({
                                        rule: item.rule,
                                        ruleResult: ruleResult,
                                        validator: item.ruleValidator,
                                        name: name
                                    });
                                    return ruleResult
                                });
                                asyncResults.push(asyncResult)
                            }
                        });
                        if (asyncResults.length) {
                            result.complete = Promise.all(asyncResults).then(values => this._getAsyncRulesResult({
                                result: result,
                                values: values
                            }))
                        }
                        return result
                    },
                    _updateRuleConfig(_ref2) {
                        let {
                            rule: rule,
                            ruleResult: ruleResult,
                            validator: validator,
                            name: name
                        } = _ref2;
                        rule.isValid = ruleResult.isValid;
                        if (!ruleResult.isValid) {
                            if ((0, _type.isDefined)(ruleResult.message) && (0, _type.isString)(ruleResult.message) && ruleResult.message.length) {
                                rule.message = ruleResult.message
                            } else {
                                this._setDefaultMessage({
                                    rule: rule,
                                    validator: validator,
                                    name: name
                                })
                            }
                        }
                    },
                    _getPatchedRuleResult(ruleResult) {
                        let result;
                        if ((0, _type.isObject)(ruleResult)) {
                            result = (0, _extend.extend)({}, ruleResult);
                            if (!(0, _type.isDefined)(result.isValid)) {
                                result.isValid = true
                            }
                        } else {
                            result = {
                                isValid: (0, _type.isBoolean)(ruleResult) ? ruleResult : true
                            }
                        }
                        return result
                    },
                    _getAsyncRulesResult(_ref3) {
                        let {
                            values: values,
                            result: result
                        } = _ref3;
                        (0, _iterator.each)(values, (index, val) => {
                            if (false === val.isValid) {
                                result.isValid = val.isValid;
                                const rule = result.pendingRules[index];
                                this._addBrokenRule({
                                    result: result,
                                    rule: rule
                                })
                            }
                        });
                        result.pendingRules = null;
                        result.complete = null;
                        result.status = result.isValid ? STATUS_valid : STATUS_invalid;
                        return result
                    },
                    registerValidatorInGroup(group, validator) {
                        const groupConfig = ValidationEngine.addGroup(group);
                        groupConfig.registerValidator.call(groupConfig, validator)
                    },
                    _shouldRemoveGroup(group, validatorsInGroup) {
                        const isDefaultGroup = void 0 === group;
                        const isValidationGroupInstance = group && "dxValidationGroup" === group.NAME;
                        return !isDefaultGroup && !isValidationGroupInstance && !validatorsInGroup.length
                    },
                    removeRegisteredValidator(group, validator) {
                        const config = ValidationEngine.getGroupConfig(group);
                        if (config) {
                            config.removeRegisteredValidator.call(config, validator);
                            const validatorsInGroup = config.validators;
                            if (this._shouldRemoveGroup(group, validatorsInGroup)) {
                                this.removeGroup(group)
                            }
                        }
                    },
                    initValidationOptions(options) {
                        const initedOptions = {};
                        if (options) {
                            const syncOptions = ["isValid", "validationStatus", "validationError", "validationErrors"];
                            syncOptions.forEach(prop => {
                                if (prop in options) {
                                    (0, _extend.extend)(initedOptions, this.synchronizeValidationOptions({
                                        name: prop,
                                        value: options[prop]
                                    }, options))
                                }
                            })
                        }
                        return initedOptions
                    },
                    synchronizeValidationOptions(_ref4, options) {
                        let {
                            name: name,
                            value: value
                        } = _ref4;
                        switch (name) {
                            case "validationStatus": {
                                const isValid = value === STATUS_valid || value === STATUS_pending;
                                return options.isValid !== isValid ? {
                                    isValid: isValid
                                } : {}
                            }
                            case "isValid": {
                                const {
                                    validationStatus: validationStatus
                                } = options;
                                let newStatus = validationStatus;
                                if (value && validationStatus === STATUS_invalid) {
                                    newStatus = STATUS_valid
                                } else if (!value && validationStatus !== STATUS_invalid) {
                                    newStatus = STATUS_invalid
                                }
                                return newStatus !== validationStatus ? {
                                    validationStatus: newStatus
                                } : {}
                            }
                            case "validationErrors": {
                                const validationError = !value || !value.length ? null : value[0];
                                return options.validationError !== validationError ? {
                                    validationError: validationError
                                } : {}
                            }
                            case "validationError": {
                                const {
                                    validationErrors: validationErrors
                                } = options;
                                if (!value && validationErrors) {
                                    return {
                                        validationErrors: null
                                    }
                                } else if (value && !validationErrors) {
                                    return {
                                        validationErrors: [value]
                                    }
                                } else if (value && validationErrors && value !== validationErrors[0]) {
                                    validationErrors[0] = value;
                                    return {
                                        validationErrors: validationErrors.slice()
                                    }
                                }
                            }
                        }
                        return {}
                    },
                    validateGroup(group) {
                        const groupConfig = ValidationEngine.getGroupConfig(group);
                        if (!groupConfig) {
                            throw _errors.default.Error("E0110")
                        }
                        return groupConfig.validate()
                    },
                    resetGroup(group) {
                        const groupConfig = ValidationEngine.getGroupConfig(group);
                        if (!groupConfig) {
                            throw _errors.default.Error("E0110")
                        }
                        return groupConfig.reset()
                    }
                };
                ValidationEngine.initGroups();
                var _default = ValidationEngine;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        4401:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/validation_group.js ***!
              \********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _dom_component = _interopRequireDefault(__webpack_require__( /*! ../core/dom_component */ 13046));
                var _validation_summary = _interopRequireDefault(__webpack_require__( /*! ./validation_summary */ 97289));
                var _validation_engine = _interopRequireDefault(__webpack_require__( /*! ./validation_engine */ 90964));
                var _validator = _interopRequireDefault(__webpack_require__( /*! ./validator */ 39562));

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

                function _setPrototypeOf(o, p) {
                    _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
                        o.__proto__ = p;
                        return o
                    };
                    return _setPrototypeOf(o, p)
                }
                let ValidationGroup = function(_DOMComponent) {
                    ! function(subClass, superClass) {
                        subClass.prototype = Object.create(superClass.prototype);
                        subClass.prototype.constructor = subClass;
                        _setPrototypeOf(subClass, superClass)
                    }(ValidationGroup, _DOMComponent);

                    function ValidationGroup() {
                        return _DOMComponent.apply(this, arguments) || this
                    }
                    var _proto = ValidationGroup.prototype;
                    _proto._getDefaultOptions = function() {
                        return _DOMComponent.prototype._getDefaultOptions.call(this)
                    };
                    _proto._init = function() {
                        _DOMComponent.prototype._init.call(this);
                        _validation_engine.default.addGroup(this)
                    };
                    _proto._initMarkup = function() {
                        const $element = this.$element();
                        $element.addClass("dx-validationgroup");
                        $element.find(".".concat("dx-validator")).each((function(_, validatorContainer) {
                            _validator.default.getInstance((0, _renderer.default)(validatorContainer))._initGroupRegistration()
                        }));
                        $element.find(".".concat("dx-validationsummary")).each((function(_, summaryContainer) {
                            _validation_summary.default.getInstance((0, _renderer.default)(summaryContainer)).refreshValidationGroup()
                        }));
                        _DOMComponent.prototype._initMarkup.call(this)
                    };
                    _proto.validate = function() {
                        return _validation_engine.default.validateGroup(this)
                    };
                    _proto.reset = function() {
                        return _validation_engine.default.resetGroup(this)
                    };
                    _proto._dispose = function() {
                        _validation_engine.default.removeGroup(this);
                        this.$element().removeClass("dx-validationgroup");
                        _DOMComponent.prototype._dispose.call(this)
                    };
                    _proto._useTemplates = function() {
                        return false
                    };
                    return ValidationGroup
                }(_dom_component.default);
                (0, _component_registrator.default)("dxValidationGroup", ValidationGroup);
                var _default = ValidationGroup;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        8336:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/validation_message.js ***!
              \**********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _size = __webpack_require__( /*! ../core/utils/size */ 58664);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../core/renderer */ 68374));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./overlay/ui.overlay */ 89799));
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _string = __webpack_require__( /*! ../core/utils/string */ 68752);
                var _position = __webpack_require__( /*! ../core/utils/position */ 37518);

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

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const ValidationMessage = _ui.default.inherit({
                    _getDefaultOptions() {
                        return (0, _extend.extend)(this.callBase(), {
                            integrationOptions: {},
                            templatesRenderAsynchronously: false,
                            shading: false,
                            width: "auto",
                            height: "auto",
                            hideOnOutsideClick: false,
                            animation: null,
                            visible: true,
                            propagateOutsideClick: true,
                            _checkParentVisibility: false,
                            rtlEnabled: false,
                            contentTemplate: this._renderInnerHtml,
                            maxWidth: "100%",
                            container: this.$element(),
                            target: void 0,
                            mode: "auto",
                            validationErrors: void 0,
                            preventScrollEvents: false,
                            positionSide: "top",
                            boundary: void 0,
                            offset: {
                                h: 0,
                                v: 0
                            },
                            contentId: void 0
                        })
                    },
                    _init() {
                        this.callBase();
                        this.updateMaxWidth();
                        this._updatePosition()
                    },
                    _initMarkup() {
                        this.callBase();
                        this._ensureMessageNotEmpty();
                        this._updatePositionByTarget();
                        this._toggleModeClass();
                        this._updateContentId()
                    },
                    _updatePositionByTarget: function() {
                        const {
                            target: target
                        } = this.option();
                        this.option("position.of", target)
                    },
                    _ensureMessageNotEmpty: function() {
                        this._textMarkup = this._getTextMarkup();
                        const shouldShowMessage = this.option("visible") && this._textMarkup;
                        this._toggleVisibilityClasses(shouldShowMessage)
                    },
                    _toggleVisibilityClasses: function(visible) {
                        if (visible) {
                            this.$element().addClass("dx-invalid-message");
                            this.$wrapper().addClass("dx-invalid-message")
                        } else {
                            this.$element().removeClass("dx-invalid-message");
                            this.$wrapper().removeClass("dx-invalid-message")
                        }
                    },
                    _updateContentId() {
                        const {
                            container: container,
                            contentId: contentId
                        } = this.option();
                        const id = null !== contentId && void 0 !== contentId ? contentId : (0, _renderer.default)(container).attr("aria-describedby");
                        this.$content().addClass("dx-invalid-message-content").attr("id", id)
                    },
                    _renderInnerHtml(element) {
                        const $element = element && (0, _renderer.default)(element);
                        null === $element || void 0 === $element ? void 0 : $element.html(this._textMarkup)
                    },
                    _getTextMarkup() {
                        var _this$option;
                        const validationErrors = null !== (_this$option = this.option("validationErrors")) && void 0 !== _this$option ? _this$option : [];
                        let validationErrorMessage = "";
                        validationErrors.forEach(err => {
                            var _err$message;
                            const separator = validationErrorMessage ? "<br />" : "";
                            validationErrorMessage += separator + (0, _string.encodeHtml)(null !== (_err$message = null === err || void 0 === err ? void 0 : err.message) && void 0 !== _err$message ? _err$message : "")
                        });
                        return validationErrorMessage
                    },
                    _toggleModeClass() {
                        const mode = this.option("mode");
                        this.$wrapper().toggleClass("dx-invalid-message-auto", "auto" === mode).toggleClass("dx-invalid-message-always", "always" === mode)
                    },
                    updateMaxWidth() {
                        const target = this.option("target");
                        const targetWidth = (0, _size.getOuterWidth)(target);
                        let maxWidth = "100%";
                        if (targetWidth) {
                            maxWidth = Math.max(targetWidth, 100)
                        }
                        this.option({
                            maxWidth: maxWidth
                        })
                    },
                    _getPositionsArray: function(positionSide, rtlSide) {
                        switch (positionSide) {
                            case "top":
                                return ["".concat(rtlSide, " bottom"), "".concat(rtlSide, " top")];
                            case "left":
                                return ["right", "left"];
                            case "right":
                                return ["left", "right"];
                            default:
                                return ["".concat(rtlSide, " top"), "".concat(rtlSide, " bottom")]
                        }
                    },
                    _updatePosition: function() {
                        const {
                            positionSide: positionSide,
                            rtlEnabled: rtlEnabled,
                            offset: componentOffset,
                            boundary: boundary
                        } = this.option();
                        const rtlSide = (0, _position.getDefaultAlignment)(rtlEnabled);
                        const positions = this._getPositionsArray(positionSide, rtlSide);
                        const offset = _extends({}, componentOffset);
                        this.$element().addClass("dx-invalid-message-".concat(positionSide));
                        if (rtlEnabled && "left" !== positionSide && "right" !== positionSide) {
                            offset.h = -offset.h
                        }
                        if ("top" === positionSide) {
                            offset.v = -offset.v
                        }
                        if ("left" === positionSide) {
                            offset.h = -offset.h
                        }
                        this.option("position", {
                            offset: offset,
                            boundary: boundary,
                            my: positions[0],
                            at: positions[1],
                            collision: "none flip"
                        })
                    },
                    _optionChanged(args) {
                        const {
                            name: name,
                            value: value,
                            previousValue: previousValue
                        } = args;
                        switch (name) {
                            case "target":
                                this._updatePositionByTarget();
                                this.updateMaxWidth();
                                this.callBase(args);
                                break;
                            case "boundary":
                                this.option("position.boundary", value);
                                break;
                            case "mode":
                                this._toggleModeClass(value);
                                break;
                            case "rtlEnabled":
                            case "offset":
                            case "positionSide":
                                this.$element().removeClass("dx-invalid-message-".concat(previousValue));
                                this._updatePosition();
                                break;
                            case "container":
                                this._updateContentId();
                                this.callBase(args);
                                break;
                            case "contentId":
                                this._updateContentId();
                                break;
                            case "validationErrors":
                                this._ensureMessageNotEmpty();
                                this._renderInnerHtml(this.$content());
                                break;
                            default:
                                this.callBase(args)
                        }
                    }
                });
                (0, _component_registrator.default)("dxValidationMessage", ValidationMessage);
                var _default = ValidationMessage;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        97289:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/validation_summary.js ***!
              \**********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../events/core/events_engine */ 55994));
                var _common = __webpack_require__( /*! ../core/utils/common */ 20576);
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _validation_engine = _interopRequireDefault(__webpack_require__( /*! ./validation_engine */ 90964));
                var _uiCollection_widget = _interopRequireDefault(__webpack_require__( /*! ./collection/ui.collection_widget.edit */ 11050));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const ValidationSummary = _uiCollection_widget.default.inherit({
                    _getDefaultOptions() {
                        return (0, _extend.extend)(this.callBase(), {
                            focusStateEnabled: false,
                            noDataText: null
                        })
                    },
                    _setOptionsByReference() {
                        this.callBase();
                        (0, _extend.extend)(this._optionsByReference, {
                            validationGroup: true
                        })
                    },
                    _init() {
                        this.callBase();
                        this._initGroupRegistration()
                    },
                    _initGroupRegistration() {
                        const $element = this.$element();
                        const group = this.option("validationGroup") || _validation_engine.default.findGroup($element, this._modelByElement($element));
                        const groupConfig = _validation_engine.default.addGroup(group);
                        this._unsubscribeGroup();
                        this._groupWasInit = true;
                        this._validationGroup = group;
                        this.groupSubscription = this._groupValidationHandler.bind(this);
                        groupConfig.on("validated", this.groupSubscription)
                    },
                    _unsubscribeGroup() {
                        const groupConfig = _validation_engine.default.getGroupConfig(this._validationGroup);
                        groupConfig && groupConfig.off("validated", this.groupSubscription)
                    },
                    _getOrderedItems(validators, items) {
                        let orderedItems = [];
                        (0, _iterator.each)(validators, (function(_, validator) {
                            const foundItems = (0, _common.grep)(items, (function(item) {
                                if (item.validator === validator) {
                                    return true
                                }
                            }));
                            if (foundItems.length) {
                                orderedItems = orderedItems.concat(foundItems)
                            }
                        }));
                        return orderedItems
                    },
                    _groupValidationHandler(params) {
                        const items = this._getOrderedItems(params.validators, (0, _iterator.map)(params.brokenRules, (function(rule) {
                            return {
                                text: rule.message,
                                validator: rule.validator,
                                index: rule.index
                            }
                        })));
                        this.validators = params.validators;
                        (0, _iterator.each)(this.validators, (_, validator) => {
                            if (validator._validationSummary !== this) {
                                let handler = this._itemValidationHandler.bind(this);
                                const disposingHandler = function() {
                                    validator.off("validated", handler);
                                    validator._validationSummary = null;
                                    handler = null
                                };
                                validator.on("validated", handler);
                                validator.on("disposing", disposingHandler);
                                validator._validationSummary = this
                            }
                        });
                        this.option("items", items)
                    },
                    _itemValidationHandler(_ref) {
                        let {
                            isValid: isValid,
                            validator: validator,
                            brokenRules: brokenRules
                        } = _ref;
                        let items = this.option("items");
                        let itemsChanged = false;
                        let itemIndex = 0;
                        while (itemIndex < items.length) {
                            const item = items[itemIndex];
                            if (item.validator === validator) {
                                const foundRule = (0, _common.grep)(brokenRules || [], (function(rule) {
                                    return rule.index === item.index
                                }))[0];
                                if (isValid || !foundRule) {
                                    items.splice(itemIndex, 1);
                                    itemsChanged = true;
                                    continue
                                }
                                if (foundRule.message !== item.text) {
                                    item.text = foundRule.message;
                                    itemsChanged = true
                                }
                            }
                            itemIndex++
                        }(0, _iterator.each)(brokenRules, (function(_, rule) {
                            const foundItem = (0, _common.grep)(items, (function(item) {
                                return item.validator === validator && item.index === rule.index
                            }))[0];
                            if (!foundItem) {
                                items.push({
                                    text: rule.message,
                                    validator: validator,
                                    index: rule.index
                                });
                                itemsChanged = true
                            }
                        }));
                        if (itemsChanged) {
                            items = this._getOrderedItems(this.validators, items);
                            this.option("items", items)
                        }
                    },
                    _initMarkup() {
                        this.$element().addClass("dx-validationsummary");
                        this.callBase()
                    },
                    _optionChanged(args) {
                        switch (args.name) {
                            case "validationGroup":
                                this._initGroupRegistration();
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _itemClass: () => "dx-validationsummary-item",
                    _itemDataKey: () => "dx-validationsummary-item-data",
                    _postprocessRenderItem(params) {
                        _events_engine.default.on(params.itemElement, "click", (function() {
                            params.itemData.validator && params.itemData.validator.focus && params.itemData.validator.focus()
                        }))
                    },
                    _dispose() {
                        this.callBase();
                        this._unsubscribeGroup()
                    },
                    refreshValidationGroup() {
                        this._initGroupRegistration()
                    }
                });
                (0, _component_registrator.default)("dxValidationSummary", ValidationSummary);
                var _default = ValidationSummary;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        39562:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/validator.js ***!
              \*************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _element_data = __webpack_require__( /*! ../core/element_data */ 97906);
                var _callbacks = _interopRequireDefault(__webpack_require__( /*! ../core/utils/callbacks */ 44504));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ./widget/ui.errors */ 96688));
                var _dom_component = _interopRequireDefault(__webpack_require__( /*! ../core/dom_component */ 13046));
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _validation_engine = _interopRequireDefault(__webpack_require__( /*! ./validation_engine */ 90964));
                var _default_adapter = _interopRequireDefault(__webpack_require__( /*! ./validation/default_adapter */ 76299));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../core/component_registrator */ 99393));
                var _deferred = __webpack_require__( /*! ../core/utils/deferred */ 62754);
                var _guid = _interopRequireDefault(__webpack_require__( /*! ../core/guid */ 73176));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const Validator = _dom_component.default.inherit({
                    _initOptions: function(options) {
                        this.callBase.apply(this, arguments);
                        this.option(_validation_engine.default.initValidationOptions(options))
                    },
                    _getDefaultOptions() {
                        return (0, _extend.extend)(this.callBase(), {
                            validationRules: []
                        })
                    },
                    _init() {
                        this.callBase();
                        this._initGroupRegistration();
                        this.focused = (0, _callbacks.default)();
                        this._initAdapter();
                        this._validationInfo = {
                            result: null,
                            deferred: null,
                            skipValidation: false
                        }
                    },
                    _initGroupRegistration() {
                        const group = this._findGroup();
                        if (!this._groupWasInit) {
                            this.on("disposing", (function(args) {
                                _validation_engine.default.removeRegisteredValidator(args.component._validationGroup, args.component)
                            }))
                        }
                        if (!this._groupWasInit || this._validationGroup !== group) {
                            _validation_engine.default.removeRegisteredValidator(this._validationGroup, this);
                            this._groupWasInit = true;
                            this._validationGroup = group;
                            _validation_engine.default.registerValidatorInGroup(group, this)
                        }
                    },
                    _setOptionsByReference() {
                        this.callBase();
                        (0, _extend.extend)(this._optionsByReference, {
                            validationGroup: true
                        })
                    },
                    _getEditor() {
                        const element = this.$element()[0];
                        return (0, _element_data.data)(element, "dx-validation-target")
                    },
                    _initAdapter() {
                        const dxStandardEditor = this._getEditor();
                        let adapter = this.option("adapter");
                        if (!adapter) {
                            if (dxStandardEditor) {
                                adapter = new _default_adapter.default(dxStandardEditor, this);
                                adapter.validationRequestsCallbacks.push(args => {
                                    if (this._validationInfo.skipValidation) {
                                        return
                                    }
                                    this.validate(args)
                                });
                                this.option("adapter", adapter);
                                return
                            }
                            throw _ui.default.Error("E0120")
                        }
                        const callbacks = adapter.validationRequestsCallbacks;
                        if (callbacks) {
                            callbacks.push(args => {
                                this.validate(args)
                            })
                        }
                    },
                    _toggleRTLDirection(isRtl) {
                        var _this$option$editor$o, _this$option, _this$option$editor;
                        const rtlEnabled = null !== (_this$option$editor$o = null === (_this$option = this.option("adapter")) || void 0 === _this$option ? void 0 : null === (_this$option$editor = _this$option.editor) || void 0 === _this$option$editor ? void 0 : _this$option$editor.option("rtlEnabled")) && void 0 !== _this$option$editor$o ? _this$option$editor$o : isRtl;
                        this.callBase(rtlEnabled)
                    },
                    _initMarkup() {
                        this.$element().addClass("dx-validator");
                        this.callBase()
                    },
                    _render() {
                        this.callBase();
                        this._toggleAccessibilityAttributes()
                    },
                    _toggleAccessibilityAttributes() {
                        const dxStandardEditor = this._getEditor();
                        if (dxStandardEditor) {
                            const rules = this.option("validationRules") || [];
                            const isRequired = rules.some(_ref => {
                                let {
                                    type: type
                                } = _ref;
                                return "required" === type
                            }) || null;
                            if (dxStandardEditor.isInitialized()) {
                                dxStandardEditor.setAria("required", isRequired)
                            }
                            dxStandardEditor.option("_onMarkupRendered", () => {
                                dxStandardEditor.setAria("required", isRequired)
                            })
                        }
                    },
                    _visibilityChanged(visible) {
                        if (visible) {
                            this._initGroupRegistration()
                        }
                    },
                    _optionChanged(args) {
                        switch (args.name) {
                            case "validationGroup":
                                this._initGroupRegistration();
                                return;
                            case "validationRules":
                                this._resetValidationRules();
                                this._toggleAccessibilityAttributes();
                                void 0 !== this.option("isValid") && this.validate();
                                return;
                            case "adapter":
                                this._initAdapter();
                                break;
                            case "isValid":
                            case "validationStatus":
                                this.option(_validation_engine.default.synchronizeValidationOptions(args, this.option()));
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _getValidationRules() {
                        if (!this._validationRules) {
                            this._validationRules = (0, _iterator.map)(this.option("validationRules"), (rule, index) => (0, _extend.extend)({}, rule, {
                                validator: this,
                                index: index
                            }))
                        }
                        return this._validationRules
                    },
                    _findGroup() {
                        const $element = this.$element();
                        return this.option("validationGroup") || _validation_engine.default.findGroup($element, this._modelByElement($element))
                    },
                    _resetValidationRules() {
                        delete this._validationRules
                    },
                    validate(args) {
                        const adapter = this.option("adapter");
                        const name = this.option("name");
                        const bypass = adapter.bypass && adapter.bypass();
                        const value = args && void 0 !== args.value ? args.value : adapter.getValue();
                        const currentError = adapter.getCurrentValidationError && adapter.getCurrentValidationError();
                        const rules = this._getValidationRules();
                        const currentResult = this._validationInfo && this._validationInfo.result;
                        if (currentResult && "pending" === currentResult.status && currentResult.value === value) {
                            return (0, _extend.extend)({}, currentResult)
                        }
                        let result;
                        if (bypass) {
                            result = {
                                isValid: true,
                                status: "valid"
                            }
                        } else if (currentError && currentError.editorSpecific) {
                            currentError.validator = this;
                            result = {
                                isValid: false,
                                status: "invalid",
                                brokenRule: currentError,
                                brokenRules: [currentError]
                            }
                        } else {
                            result = _validation_engine.default.validate(value, rules, name)
                        }
                        result.id = (new _guid.default).toString();
                        this._applyValidationResult(result, adapter);
                        result.complete && result.complete.then(res => {
                            if (res.id === this._validationInfo.result.id) {
                                this._applyValidationResult(res, adapter)
                            }
                        });
                        return (0, _extend.extend)({}, this._validationInfo.result)
                    },
                    reset() {
                        const adapter = this.option("adapter");
                        const result = {
                            id: null,
                            isValid: true,
                            brokenRule: null,
                            brokenRules: null,
                            pendingRules: null,
                            status: "valid",
                            complete: null
                        };
                        this._validationInfo.skipValidation = true;
                        adapter.reset();
                        this._validationInfo.skipValidation = false;
                        this._resetValidationRules();
                        this._applyValidationResult(result, adapter)
                    },
                    _updateValidationResult(result) {
                        if (!this._validationInfo.result || this._validationInfo.result.id !== result.id) {
                            const complete = this._validationInfo.deferred && this._validationInfo.result.complete;
                            this._validationInfo.result = (0, _extend.extend)({}, result, {
                                complete: complete
                            })
                        } else {
                            for (const prop in result) {
                                if ("id" !== prop && "complete" !== prop) {
                                    this._validationInfo.result[prop] = result[prop]
                                }
                            }
                        }
                    },
                    _applyValidationResult(result, adapter) {
                        const validatedAction = this._createActionByOption("onValidated", {
                            excludeValidators: ["readOnly"]
                        });
                        result.validator = this;
                        this._updateValidationResult(result);
                        adapter.applyValidationResults && adapter.applyValidationResults(this._validationInfo.result);
                        this.option({
                            validationStatus: this._validationInfo.result.status
                        });
                        if ("pending" === this._validationInfo.result.status) {
                            if (!this._validationInfo.deferred) {
                                this._validationInfo.deferred = new _deferred.Deferred;
                                this._validationInfo.result.complete = this._validationInfo.deferred.promise()
                            }
                            this._eventsStrategy.fireEvent("validating", [this._validationInfo.result]);
                            return
                        }
                        if ("pending" !== this._validationInfo.result.status) {
                            validatedAction(result);
                            if (this._validationInfo.deferred) {
                                this._validationInfo.deferred.resolve(result);
                                this._validationInfo.deferred = null
                            }
                        }
                    },
                    focus() {
                        const adapter = this.option("adapter");
                        adapter && adapter.focus && adapter.focus()
                    },
                    _useTemplates: function() {
                        return false
                    }
                });
                (0, _component_registrator.default)("dxValidator", Validator);
                var _default = Validator;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        31421:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/widget/selectors.js ***!
              \********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.tabbable = exports.focused = exports.focusable = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const focusableFn = function(element, tabIndex) {
                    if (! function(element) {
                            const $element = (0, _renderer.default)(element);
                            return $element.is(":visible") && "hidden" !== $element.css("visibility") && "hidden" !== $element.parents().css("visibility")
                        }(element)) {
                        return false
                    }
                    const nodeName = element.nodeName.toLowerCase();
                    const isTabIndexNotNaN = !isNaN(tabIndex);
                    const isDisabled = element.disabled;
                    const isDefaultFocus = /^(input|select|textarea|button|object|iframe)$/.test(nodeName);
                    const isHyperlink = "a" === nodeName;
                    let isFocusable;
                    const isContentEditable = element.isContentEditable;
                    if (isDefaultFocus || isContentEditable) {
                        isFocusable = !isDisabled
                    } else if (isHyperlink) {
                        isFocusable = element.href || isTabIndexNotNaN
                    } else {
                        isFocusable = isTabIndexNotNaN
                    }
                    return isFocusable
                };
                exports.focusable = function(index, element) {
                    return focusableFn(element, (0, _renderer.default)(element).attr("tabIndex"))
                };
                exports.tabbable = function(index, element) {
                    const tabIndex = (0, _renderer.default)(element).attr("tabIndex");
                    return (isNaN(tabIndex) || tabIndex >= 0) && focusableFn(element, tabIndex)
                };
                exports.focused = function($element) {
                    const element = (0, _renderer.default)($element).get(0);
                    return _dom_adapter.default.getActiveElement(element) === element
                }
            },
        92591:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/widget/swatch_container.js ***!
              \***************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = (obj = __webpack_require__( /*! ../../core/renderer */ 68374), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _view_port = __webpack_require__( /*! ../../core/utils/view_port */ 77695);
                var _default = {
                    getSwatchContainer: element => {
                        const $element = (0, _renderer.default)(element);
                        const swatchContainer = $element.closest('[class^="'.concat("dx-swatch-", '"], [class*=" ').concat("dx-swatch-", '"]'));
                        const viewport = (0, _view_port.value)();
                        if (!swatchContainer.length) {
                            return viewport
                        }
                        const swatchClassRegex = new RegExp("(\\s|^)(".concat("dx-swatch-", ".*?)(\\s|$)"));
                        const swatchClass = swatchContainer[0].className.match(swatchClassRegex)[2];
                        let viewportSwatchContainer = viewport.children("." + swatchClass);
                        if (!viewportSwatchContainer.length) {
                            viewportSwatchContainer = (0, _renderer.default)("<div>").addClass(swatchClass).appendTo(viewport)
                        }
                        return viewportSwatchContainer
                    }
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        96688:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/widget/ui.errors.js ***!
              \********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _error = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/error */ 95640));
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../core/errors */ 17381));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                var _default = (0, _error.default)(_errors.default.ERROR_MESSAGES, {
                    E1001: "Module '{0}'. Controller '{1}' is already registered",
                    E1002: "Module '{0}'. Controller '{1}' does not inherit from DevExpress.ui.dxDataGrid.Controller",
                    E1003: "Module '{0}'. View '{1}' is already registered",
                    E1004: "Module '{0}'. View '{1}' does not inherit from DevExpress.ui.dxDataGrid.View",
                    E1005: "Public method '{0}' is already registered",
                    E1006: "Public method '{0}.{1}' does not exist",
                    E1007: "State storing cannot be provided due to the restrictions of the browser",
                    E1010: "The template does not contain the TextBox widget",
                    E1011: 'Items cannot be deleted from the List. Implement the "remove" function in the data store',
                    E1012: "Editing type '{0}' with the name '{1}' is unsupported",
                    E1016: "Unexpected type of data source is provided for a lookup column",
                    E1018: "The 'collapseAll' method cannot be called if you use a remote data source",
                    E1019: "Search mode '{0}' is unavailable",
                    E1020: "The type cannot be changed after initialization",
                    E1021: "{0} '{1}' you are trying to remove does not exist",
                    E1022: 'The "markers" option is given an invalid value. Assign an array instead',
                    E1023: 'The "routes" option is given an invalid value. Assign an array instead',
                    E1025: "This layout is too complex to render",
                    E1026: 'The "calculateCustomSummary" function is missing from a field whose "summaryType" option is set to "custom"',
                    E1031: "Unknown subscription in the Scheduler widget: '{0}'",
                    E1032: "Unknown start date in an appointment: '{0}'",
                    E1033: "Unknown step in the date navigator: '{0}'",
                    E1034: "The browser does not implement an API for saving files",
                    E1035: "The editor cannot be created: {0}",
                    E1037: "Invalid structure of grouped data",
                    E1038: "The browser does not support local storages for local web pages",
                    E1039: "A cell's position cannot be calculated",
                    E1040: "The '{0}' key value is not unique within the data array",
                    E1041: "The '{0}' script is referenced after the DevExtreme scripts or not referenced at all",
                    E1042: "{0} requires the key field to be specified",
                    E1043: "Changes cannot be processed due to the incorrectly set key",
                    E1044: "The key field specified by the keyExpr option does not match the key field specified in the data store",
                    E1045: "Editing requires the key field to be specified in the data store",
                    E1046: "The '{0}' key field is not found in data objects",
                    E1047: 'The "{0}" field is not found in the fields array',
                    E1048: 'The "{0}" operation is not found in the filterOperations array',
                    E1049: "Column '{0}': filtering is allowed but the 'dataField' or 'name' option is not specified",
                    E1050: "The validationRules option does not apply to third-party editors defined in the editCellTemplate",
                    E1051: 'HtmlEditor\'s valueType is "{0}", but the {0} converter was not imported.',
                    E1052: '{0} should have the "dataSource" option specified',
                    E1053: 'The "buttons" option accepts an array that contains only objects or string values',
                    E1054: "All text editor buttons must have names",
                    E1055: 'One or several text editor buttons have invalid or non-unique "name" values',
                    E1056: 'The {0} widget does not support buttons of the "{1}" type',
                    E1058: 'The "startDayHour" and "endDayHour" options must be integers in the [0, 24] range, with "endDayHour" being greater than "startDayHour".',
                    E1059: "The following column names are not unique: {0}",
                    E1060: "All editable columns must have names",
                    E1061: 'The "offset" option must be an integer in the [-1440, 1440] range, divisible by 5 without a remainder.',
                    E1062: 'The "cellDuration" must be a positive integer, evenly dividing the ("endDayHour" - "startDayHour") interval into minutes.',
                    W1001: 'The "key" option cannot be modified after initialization',
                    W1002: "An item with the key '{0}' does not exist",
                    W1003: "A group with the key '{0}' in which you are trying to select items does not exist",
                    W1004: "The item '{0}' you are trying to select in the group '{1}' does not exist",
                    W1005: "Due to column data types being unspecified, data has been loaded twice in order to apply initial filter settings. To resolve this issue, specify data types for all grid columns.",
                    W1006: "The map service returned the following error: '{0}'",
                    W1007: "No item with key {0} was found in the data source, but this key was used as the parent key for item {1}",
                    W1008: "Cannot scroll to the '{0}' date because it does not exist on the current view",
                    W1009: "Searching works only if data is specified using the dataSource option",
                    W1010: "The capability to select all items works with source data of plain structure only",
                    W1011: 'The "keyExpr" option is not applied when dataSource is not an array',
                    W1012: "The '{0}' key field is not found in data objects",
                    W1013: 'The "message" field in the dialog component was renamed to "messageHtml". Change your code correspondingly. In addition, if you used HTML code in the message, make sure that it is secure',
                    W1014: "The Floating Action Button exceeds the recommended speed dial action count. If you need to display more speed dial actions, increase the maxSpeedDialActionCount option value in the global config.",
                    W1016: "The '{0}' field in the HTML Editor toolbar item configuration was renamed to '{1}'. Please make a corresponding change in your code.",
                    W1017: "The 'key' property is not specified for a lookup data source. Please specify it to prevent requests for the entire dataset when users filter data.",
                    W1018: "Infinite scrolling may not work properly with multiple selection. To use these features together, set 'selection.deferred' to true or set 'selection.selectAllMode' to 'page'.",
                    W1019: "Filter query string exceeds maximum length limit of {0} characters.",
                    W1020: "hideEvent is ignored when the shading property is true",
                    W1021: "The '{0}' is not rendered because none of the DOM elements match the value of the \"container\" property.",
                    W1022: "{0} JSON parsing error: '{1}'",
                    W1023: "Appointments require unique keys. Otherwise, the agenda view may not work correctly.",
                    W1024: "The client-side export is enabled. Implement the 'onExporting' function.",
                    W1025: "'scrolling.mode' is set to 'virtual' or 'infinite'. Specify the height of the component."
                });
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        2630:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/widget/ui.search_box_mixin.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _ui = _interopRequireDefault(__webpack_require__( /*! ../widget/ui.errors */ 96688));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _stubs = __webpack_require__( /*! ../../core/utils/stubs */ 2146);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                let EditorClass = (0, _stubs.stubComponent)("TextBox");
                var _default = {
                    _getDefaultOptions: function() {
                        return (0, _extend.extend)(this.callBase(), {
                            searchMode: "",
                            searchExpr: null,
                            searchValue: "",
                            searchEnabled: false,
                            searchEditorOptions: {}
                        })
                    },
                    _initMarkup: function() {
                        this._renderSearch();
                        this.callBase()
                    },
                    _renderSearch: function() {
                        const $element = this.$element();
                        const searchEnabled = this.option("searchEnabled");
                        const searchBoxClassName = this._addWidgetPrefix("search");
                        const rootElementClassName = this._addWidgetPrefix("with-search");
                        if (!searchEnabled) {
                            $element.removeClass(rootElementClassName);
                            this._removeSearchBox();
                            return
                        }
                        const editorOptions = this._getSearchEditorOptions();
                        if (this._searchEditor) {
                            this._searchEditor.option(editorOptions)
                        } else {
                            $element.addClass(rootElementClassName);
                            this._$searchEditorElement = (0, _renderer.default)("<div>").addClass(searchBoxClassName).prependTo($element);
                            this._searchEditor = this._createComponent(this._$searchEditorElement, EditorClass, editorOptions)
                        }
                    },
                    _removeSearchBox: function() {
                        this._$searchEditorElement && this._$searchEditorElement.remove();
                        delete this._$searchEditorElement;
                        delete this._searchEditor
                    },
                    _getSearchEditorOptions: function() {
                        const that = this;
                        const userEditorOptions = that.option("searchEditorOptions");
                        const searchText = _message.default.format("Search");
                        return (0, _extend.extend)({
                            mode: "search",
                            placeholder: searchText,
                            tabIndex: that.option("tabIndex"),
                            value: that.option("searchValue"),
                            valueChangeEvent: "input",
                            inputAttr: {
                                "aria-label": searchText
                            },
                            onValueChanged: function(e) {
                                const searchTimeout = that.option("searchTimeout");
                                that._valueChangeDeferred = new _deferred.Deferred;
                                clearTimeout(that._valueChangeTimeout);
                                that._valueChangeDeferred.done(function() {
                                    this.option("searchValue", e.value)
                                }.bind(that));
                                if (e.event && "input" === e.event.type && searchTimeout) {
                                    that._valueChangeTimeout = setTimeout((function() {
                                        that._valueChangeDeferred.resolve()
                                    }), searchTimeout)
                                } else {
                                    that._valueChangeDeferred.resolve()
                                }
                            }
                        }, userEditorOptions)
                    },
                    _getAriaTarget: function() {
                        if (this.option("searchEnabled")) {
                            return this._itemContainer(true)
                        }
                        return this.callBase()
                    },
                    _focusTarget: function() {
                        if (this.option("searchEnabled")) {
                            return this._itemContainer(true)
                        }
                        return this.callBase()
                    },
                    _updateFocusState: function(e, isFocused) {
                        if (this.option("searchEnabled")) {
                            this._toggleFocusClass(isFocused, this.$element())
                        }
                        this.callBase(e, isFocused)
                    },
                    getOperationBySearchMode: function(searchMode) {
                        return "equals" === searchMode ? "=" : searchMode
                    },
                    _optionChanged: function(args) {
                        switch (args.name) {
                            case "searchEnabled":
                            case "searchEditorOptions":
                                this._invalidate();
                                break;
                            case "searchExpr":
                            case "searchMode":
                            case "searchValue":
                                if (!this._dataSource) {
                                    _ui.default.log("W1009");
                                    return
                                }
                                if ("searchMode" === args.name) {
                                    this._dataSource.searchOperation(this.getOperationBySearchMode(args.value))
                                } else {
                                    this._dataSource[args.name](args.value)
                                }
                                this._dataSource.load();
                                break;
                            case "searchTimeout":
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    focus: function() {
                        if (!this.option("focusedElement") && this.option("searchEnabled")) {
                            this._searchEditor && this._searchEditor.focus();
                            return
                        }
                        this.callBase()
                    },
                    _cleanAria: function() {
                        const $element = this.$element();
                        this.setAria({
                            role: null,
                            activedescendant: null
                        }, $element);
                        $element.attr("tabIndex", null)
                    },
                    _clean() {
                        this.callBase();
                        this._cleanAria()
                    },
                    _refresh: function() {
                        if (this._valueChangeDeferred) {
                            this._valueChangeDeferred.resolve()
                        }
                        this.callBase()
                    },
                    setEditorClass: function(value) {
                        EditorClass = value
                    }
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        14390:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/widget/ui.widget.js ***!
              \********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _action = _interopRequireDefault(__webpack_require__( /*! ../../core/action */ 62414));
                var _dom_component = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_component */ 13046));
                var _short = __webpack_require__( /*! ../../events/short */ 72918);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _selectors = __webpack_require__( /*! ./selectors */ 31421);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _devices = _interopRequireDefault(__webpack_require__( /*! ../../core/devices */ 20530));
                var _version = __webpack_require__( /*! ../../core/utils/version */ 58020);
                __webpack_require__( /*! ../../events/click */ 95429);
                __webpack_require__( /*! ../../events/core/emitter.feedback */ 91633);
                __webpack_require__( /*! ../../events/hover */ 24028);

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

                function setAttribute(name, value, target) {
                    name = "role" === name || "id" === name ? name : "aria-".concat(name);
                    value = (0, _type.isDefined)(value) ? value.toString() : null;
                    target.attr(name, value)
                }
                const Widget = _dom_component.default.inherit({
                    _feedbackHideTimeout: 400,
                    _feedbackShowTimeout: 30,
                    _supportedKeys: () => ({}),
                    _getDefaultOptions() {
                        return (0, _extend.extend)(this.callBase(), {
                            hoveredElement: null,
                            isActive: false,
                            disabled: false,
                            visible: true,
                            hint: void 0,
                            activeStateEnabled: false,
                            onContentReady: null,
                            hoverStateEnabled: false,
                            focusStateEnabled: false,
                            tabIndex: 0,
                            accessKey: void 0,
                            onFocusIn: null,
                            onFocusOut: null,
                            onKeyboardHandled: null,
                            ignoreParentReadOnly: false,
                            useResizeObserver: true
                        })
                    },
                    _defaultOptionsRules: function() {
                        return this.callBase().concat([{
                            device: function() {
                                const device = _devices.default.real();
                                const platform = device.platform;
                                const version = device.version;
                                return "ios" === platform && (0, _version.compare)(version, "13.3") <= 0
                            },
                            options: {
                                useResizeObserver: false
                            }
                        }])
                    },
                    _init() {
                        this.callBase();
                        this._initContentReadyAction()
                    },
                    _innerWidgetOptionChanged: function(innerWidget, args) {
                        const options = Widget.getOptionsFromContainer(args);
                        innerWidget && innerWidget.option(options);
                        this._options.cache(args.name, options)
                    },
                    _bindInnerWidgetOptions(innerWidget, optionsContainer) {
                        const syncOptions = () => this._options.silent(optionsContainer, (0, _extend.extend)({}, innerWidget.option()));
                        syncOptions();
                        innerWidget.on("optionChanged", syncOptions)
                    },
                    _getAriaTarget() {
                        return this._focusTarget()
                    },
                    _initContentReadyAction() {
                        this._contentReadyAction = this._createActionByOption("onContentReady", {
                            excludeValidators: ["disabled", "readOnly"]
                        })
                    },
                    _initMarkup() {
                        const {
                            disabled: disabled,
                            visible: visible
                        } = this.option();
                        this.$element().addClass("dx-widget");
                        this._toggleDisabledState(disabled);
                        this._toggleVisibility(visible);
                        this._renderHint();
                        this._isFocusable() && this._renderFocusTarget();
                        this.callBase()
                    },
                    _render() {
                        this.callBase();
                        this._renderContent();
                        this._renderFocusState();
                        this._attachFeedbackEvents();
                        this._attachHoverEvents();
                        this._toggleIndependentState()
                    },
                    _renderHint() {
                        const {
                            hint: hint
                        } = this.option();
                        this.$element().attr("title", hint || null)
                    },
                    _renderContent() {
                        (0, _common.deferRender)(() => !this._disposed ? this._renderContentImpl() : void 0).done(() => !this._disposed ? this._fireContentReadyAction() : void 0)
                    },
                    _renderContentImpl: _common.noop,
                    _fireContentReadyAction: (0, _common.deferRenderer)((function() {
                        return this._contentReadyAction()
                    })),
                    _dispose() {
                        this._contentReadyAction = null;
                        this._detachKeyboardEvents();
                        this.callBase()
                    },
                    _resetActiveState() {
                        this._toggleActiveState(this._eventBindingTarget(), false)
                    },
                    _clean() {
                        this._cleanFocusState();
                        this._resetActiveState();
                        this.callBase();
                        this.$element().empty()
                    },
                    _toggleVisibility(visible) {
                        this.$element().toggleClass("dx-state-invisible", !visible)
                    },
                    _renderFocusState() {
                        this._attachKeyboardEvents();
                        if (this._isFocusable()) {
                            this._renderFocusTarget();
                            this._attachFocusEvents();
                            this._renderAccessKey()
                        }
                    },
                    _renderAccessKey() {
                        const $el = this._focusTarget();
                        const {
                            accessKey: accessKey
                        } = this.option();
                        $el.attr("accesskey", accessKey)
                    },
                    _isFocusable() {
                        const {
                            focusStateEnabled: focusStateEnabled,
                            disabled: disabled
                        } = this.option();
                        return focusStateEnabled && !disabled
                    },
                    _eventBindingTarget() {
                        return this.$element()
                    },
                    _focusTarget() {
                        return this._getActiveElement()
                    },
                    _isFocusTarget: function(element) {
                        const focusTargets = (0, _renderer.default)(this._focusTarget()).toArray();
                        return focusTargets.includes(element)
                    },
                    _findActiveTarget($element) {
                        return $element.find(this._activeStateUnit).not(".dx-state-disabled")
                    },
                    _getActiveElement() {
                        const activeElement = this._eventBindingTarget();
                        if (this._activeStateUnit) {
                            return this._findActiveTarget(activeElement)
                        }
                        return activeElement
                    },
                    _renderFocusTarget() {
                        const {
                            tabIndex: tabIndex
                        } = this.option();
                        this._focusTarget().attr("tabIndex", tabIndex)
                    },
                    _keyboardEventBindingTarget() {
                        return this._eventBindingTarget()
                    },
                    _refreshFocusEvent() {
                        this._detachFocusEvents();
                        this._attachFocusEvents()
                    },
                    _focusEventTarget() {
                        return this._focusTarget()
                    },
                    _focusInHandler(event) {
                        if (!event.isDefaultPrevented()) {
                            this._createActionByOption("onFocusIn", {
                                beforeExecute: () => this._updateFocusState(event, true),
                                excludeValidators: ["readOnly"]
                            })({
                                event: event
                            })
                        }
                    },
                    _focusOutHandler(event) {
                        if (!event.isDefaultPrevented()) {
                            this._createActionByOption("onFocusOut", {
                                beforeExecute: () => this._updateFocusState(event, false),
                                excludeValidators: ["readOnly", "disabled"]
                            })({
                                event: event
                            })
                        }
                    },
                    _updateFocusState(_ref, isFocused) {
                        let {
                            target: target
                        } = _ref;
                        if (this._isFocusTarget(target)) {
                            this._toggleFocusClass(isFocused, (0, _renderer.default)(target))
                        }
                    },
                    _toggleFocusClass(isFocused, $element) {
                        const $focusTarget = $element && $element.length ? $element : this._focusTarget();
                        $focusTarget.toggleClass("dx-state-focused", isFocused)
                    },
                    _hasFocusClass(element) {
                        const $focusTarget = (0, _renderer.default)(element || this._focusTarget());
                        return $focusTarget.hasClass("dx-state-focused")
                    },
                    _isFocused() {
                        return this._hasFocusClass()
                    },
                    _getKeyboardListeners: () => [],
                    _attachKeyboardEvents() {
                        this._detachKeyboardEvents();
                        const {
                            focusStateEnabled: focusStateEnabled,
                            onKeyboardHandled: onKeyboardHandled
                        } = this.option();
                        const hasChildListeners = this._getKeyboardListeners().length;
                        const hasKeyboardEventHandler = !!onKeyboardHandled;
                        const shouldAttach = focusStateEnabled || hasChildListeners || hasKeyboardEventHandler;
                        if (shouldAttach) {
                            this._keyboardListenerId = _short.keyboard.on(this._keyboardEventBindingTarget(), this._focusTarget(), opts => this._keyboardHandler(opts))
                        }
                    },
                    _keyboardHandler(options, onlyChildProcessing) {
                        if (!onlyChildProcessing) {
                            const {
                                originalEvent: originalEvent,
                                keyName: keyName,
                                which: which
                            } = options;
                            const keys = this._supportedKeys(originalEvent);
                            const func = keys[keyName] || keys[which];
                            if (void 0 !== func) {
                                const handler = func.bind(this);
                                const result = handler(originalEvent, options);
                                if (!result) {
                                    return false
                                }
                            }
                        }
                        const keyboardListeners = this._getKeyboardListeners();
                        const {
                            onKeyboardHandled: onKeyboardHandled
                        } = this.option();
                        keyboardListeners.forEach(listener => listener && listener._keyboardHandler(options));
                        onKeyboardHandled && onKeyboardHandled(options);
                        return true
                    },
                    _refreshFocusState() {
                        this._cleanFocusState();
                        this._renderFocusState()
                    },
                    _cleanFocusState() {
                        const $element = this._focusTarget();
                        $element.removeAttr("tabIndex");
                        this._toggleFocusClass(false);
                        this._detachFocusEvents();
                        this._detachKeyboardEvents()
                    },
                    _detachKeyboardEvents() {
                        _short.keyboard.off(this._keyboardListenerId);
                        this._keyboardListenerId = null
                    },
                    _attachHoverEvents() {
                        const {
                            hoverStateEnabled: hoverStateEnabled
                        } = this.option();
                        const selector = this._activeStateUnit;
                        const $el = this._eventBindingTarget();
                        _short.hover.off($el, {
                            selector: selector,
                            namespace: "UIFeedback"
                        });
                        if (hoverStateEnabled) {
                            _short.hover.on($el, new _action.default(_ref2 => {
                                let {
                                    event: event,
                                    element: element
                                } = _ref2;
                                this._hoverStartHandler(event);
                                this.option("hoveredElement", (0, _renderer.default)(element))
                            }, {
                                excludeValidators: ["readOnly"]
                            }), event => {
                                this.option("hoveredElement", null);
                                this._hoverEndHandler(event)
                            }, {
                                selector: selector,
                                namespace: "UIFeedback"
                            })
                        }
                    },
                    _attachFeedbackEvents() {
                        const {
                            activeStateEnabled: activeStateEnabled
                        } = this.option();
                        const selector = this._activeStateUnit;
                        const $el = this._eventBindingTarget();
                        _short.active.off($el, {
                            namespace: "UIFeedback",
                            selector: selector
                        });
                        if (activeStateEnabled) {
                            _short.active.on($el, new _action.default(_ref3 => {
                                let {
                                    event: event,
                                    element: element
                                } = _ref3;
                                return this._toggleActiveState((0, _renderer.default)(element), true, event)
                            }), new _action.default(_ref4 => {
                                let {
                                    event: event,
                                    element: element
                                } = _ref4;
                                return this._toggleActiveState((0, _renderer.default)(element), false, event)
                            }, {
                                excludeValidators: ["disabled", "readOnly"]
                            }), {
                                showTimeout: this._feedbackShowTimeout,
                                hideTimeout: this._feedbackHideTimeout,
                                selector: selector,
                                namespace: "UIFeedback"
                            })
                        }
                    },
                    _detachFocusEvents() {
                        const $el = this._focusEventTarget();
                        _short.focus.off($el, {
                            namespace: "".concat(this.NAME, "Focus")
                        })
                    },
                    _attachFocusEvents() {
                        const $el = this._focusEventTarget();
                        _short.focus.on($el, e => this._focusInHandler(e), e => this._focusOutHandler(e), {
                            namespace: "".concat(this.NAME, "Focus"),
                            isFocusable: (index, el) => (0, _renderer.default)(el).is(_selectors.focusable)
                        })
                    },
                    _hoverStartHandler: _common.noop,
                    _hoverEndHandler: _common.noop,
                    _toggleActiveState($element, value) {
                        this.option("isActive", value);
                        $element.toggleClass("dx-state-active", value)
                    },
                    _updatedHover() {
                        const hoveredElement = this._options.silent("hoveredElement");
                        this._hover(hoveredElement, hoveredElement)
                    },
                    _findHoverTarget($el) {
                        return $el && $el.closest(this._activeStateUnit || this._eventBindingTarget())
                    },
                    _hover($el, $previous) {
                        const {
                            hoverStateEnabled: hoverStateEnabled,
                            disabled: disabled,
                            isActive: isActive
                        } = this.option();
                        $previous = this._findHoverTarget($previous);
                        $previous && $previous.toggleClass("dx-state-hover", false);
                        if ($el && hoverStateEnabled && !disabled && !isActive) {
                            const newHoveredElement = this._findHoverTarget($el);
                            newHoveredElement && newHoveredElement.toggleClass("dx-state-hover", true)
                        }
                    },
                    _toggleDisabledState(value) {
                        this.$element().toggleClass("dx-state-disabled", Boolean(value));
                        this.setAria("disabled", value || void 0)
                    },
                    _toggleIndependentState() {
                        this.$element().toggleClass("dx-state-independent", this.option("ignoreParentReadOnly"))
                    },
                    _setWidgetOption(widgetName, args) {
                        if (!this[widgetName]) {
                            return
                        }
                        if ((0, _type.isPlainObject)(args[0])) {
                            (0, _iterator.each)(args[0], (option, value) => this._setWidgetOption(widgetName, [option, value]));
                            return
                        }
                        const optionName = args[0];
                        let value = args[1];
                        if (1 === args.length) {
                            value = this.option(optionName)
                        }
                        const widgetOptionMap = this["".concat(widgetName, "OptionMap")];
                        this[widgetName].option(widgetOptionMap ? widgetOptionMap(optionName) : optionName, value)
                    },
                    _optionChanged(args) {
                        const {
                            name: name,
                            value: value,
                            previousValue: previousValue
                        } = args;
                        switch (name) {
                            case "disabled":
                                this._toggleDisabledState(value);
                                this._updatedHover();
                                this._refreshFocusState();
                                break;
                            case "hint":
                                this._renderHint();
                                break;
                            case "ignoreParentReadOnly":
                                this._toggleIndependentState();
                                break;
                            case "activeStateEnabled":
                                this._attachFeedbackEvents();
                                break;
                            case "hoverStateEnabled":
                                this._attachHoverEvents();
                                this._updatedHover();
                                break;
                            case "tabIndex":
                            case "focusStateEnabled":
                                this._refreshFocusState();
                                break;
                            case "onFocusIn":
                            case "onFocusOut":
                            case "useResizeObserver":
                                break;
                            case "accessKey":
                                this._renderAccessKey();
                                break;
                            case "hoveredElement":
                                this._hover(value, previousValue);
                                break;
                            case "isActive":
                                this._updatedHover();
                                break;
                            case "visible":
                                this._toggleVisibility(value);
                                if (this._isVisibilityChangeSupported()) {
                                    this._checkVisibilityChanged(value ? "shown" : "hiding")
                                }
                                break;
                            case "onKeyboardHandled":
                                this._attachKeyboardEvents();
                                break;
                            case "onContentReady":
                                this._initContentReadyAction();
                                break;
                            default:
                                this.callBase(args)
                        }
                    },
                    _isVisible() {
                        const {
                            visible: visible
                        } = this.option();
                        return this.callBase() && visible
                    },
                    beginUpdate() {
                        this._ready(false);
                        this.callBase()
                    },
                    endUpdate() {
                        this.callBase();
                        if (this._initialized) {
                            this._ready(true)
                        }
                    },
                    _ready(value) {
                        if (0 === arguments.length) {
                            return this._isReady
                        }
                        this._isReady = value
                    },
                    setAria() {
                        if (!(0, _type.isPlainObject)(arguments.length <= 0 ? void 0 : arguments[0])) {
                            setAttribute(arguments.length <= 0 ? void 0 : arguments[0], arguments.length <= 1 ? void 0 : arguments[1], (arguments.length <= 2 ? void 0 : arguments[2]) || this._getAriaTarget())
                        } else {
                            const target = (arguments.length <= 1 ? void 0 : arguments[1]) || this._getAriaTarget();
                            (0, _iterator.each)(arguments.length <= 0 ? void 0 : arguments[0], (name, value) => setAttribute(name, value, target))
                        }
                    },
                    isReady() {
                        return this._ready()
                    },
                    repaint() {
                        this._refresh()
                    },
                    focus() {
                        _short.focus.trigger(this._focusTarget())
                    },
                    registerKeyHandler(key, handler) {
                        const currentKeys = this._supportedKeys();
                        this._supportedKeys = () => (0, _extend.extend)(currentKeys, {
                            [key]: handler
                        })
                    }
                });
                Widget.getOptionsFromContainer = _ref5 => {
                    let {
                        name: name,
                        fullName: fullName,
                        value: value
                    } = _ref5;
                    let options = {};
                    if (name === fullName) {
                        options = value
                    } else {
                        const option = fullName.split(".").pop();
                        options[option] = value
                    }
                    return options
                };
                var _default = Widget;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        72672:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/ui/widget/utils.ink_ripple.js ***!
              \***************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.hideWave = hideWave;
                exports.render = exports.initConfig = void 0;
                exports.showWave = showWave;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _renderer = (obj = __webpack_require__( /*! ../../core/renderer */ 68374), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const initConfig = function() {
                    let config = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                    const {
                        useHoldAnimation: useHoldAnimation,
                        waveSizeCoefficient: waveSizeCoefficient,
                        isCentered: isCentered,
                        wavesNumber: wavesNumber
                    } = config;
                    return {
                        waveSizeCoefficient: waveSizeCoefficient || 2,
                        isCentered: isCentered || false,
                        wavesNumber: wavesNumber || 1,
                        durations: getDurations(null !== useHoldAnimation && void 0 !== useHoldAnimation ? useHoldAnimation : true)
                    }
                };
                exports.initConfig = initConfig;
                exports.render = function(args) {
                    const config = initConfig(args);
                    return {
                        showWave: showWave.bind(this, config),
                        hideWave: hideWave.bind(this, config)
                    }
                };
                const getWaves = function(element, wavesNumber) {
                    const inkRipple = function(element) {
                        let result = element.children(".dx-inkripple");
                        if (0 === result.length) {
                            result = (0, _renderer.default)("<div>").addClass("dx-inkripple").appendTo(element)
                        }
                        return result
                    }((0, _renderer.default)(element));
                    const result = inkRipple.children(".dx-inkripple-wave").toArray();
                    for (let i = result.length; i < wavesNumber; i++) {
                        const $currentWave = (0, _renderer.default)("<div>").appendTo(inkRipple).addClass("dx-inkripple-wave");
                        result.push($currentWave[0])
                    }
                    return (0, _renderer.default)(result)
                };

                function showWave(args, config) {
                    const $wave = getWaves(config.element, args.wavesNumber).eq(config.wave || 0);
                    args.hidingTimeout && clearTimeout(args.hidingTimeout);
                    hideSelectedWave($wave);
                    $wave.css(function(args, config) {
                        const element = (0, _renderer.default)(config.element);
                        const elementWidth = (0, _size.getOuterWidth)(element);
                        const elementHeight = (0, _size.getOuterHeight)(element);
                        const elementDiagonal = parseInt(Math.sqrt(elementWidth * elementWidth + elementHeight * elementHeight));
                        const waveSize = Math.min(4e3, parseInt(elementDiagonal * args.waveSizeCoefficient));
                        let left;
                        let top;
                        if (args.isCentered) {
                            left = (elementWidth - waveSize) / 2;
                            top = (elementHeight - waveSize) / 2
                        } else {
                            const event = config.event;
                            const position = element.offset();
                            const x = event.pageX - position.left;
                            const y = event.pageY - position.top;
                            left = x - waveSize / 2;
                            top = y - waveSize / 2
                        }
                        return {
                            left: left,
                            top: top,
                            height: waveSize,
                            width: waveSize
                        }
                    }(args, config));
                    args.showingTimeout = setTimeout(showingWaveHandler.bind(this, args, $wave), 0)
                }

                function showingWaveHandler(args, $wave) {
                    const durationCss = args.durations.showingScale + "ms";
                    $wave.addClass("dx-inkripple-showing").css("transitionDuration", durationCss)
                }

                function getDurations(useHoldAnimation) {
                    return {
                        showingScale: useHoldAnimation ? 1e3 : 300,
                        hidingScale: 300,
                        hidingOpacity: 300
                    }
                }

                function hideSelectedWave($wave) {
                    $wave.removeClass("dx-inkripple-hiding").css("transitionDuration", "")
                }

                function hideWave(args, config) {
                    args.showingTimeout && clearTimeout(args.showingTimeout);
                    const $wave = getWaves(config.element, config.wavesNumber).eq(config.wave || 0);
                    const durations = args.durations;
                    const durationCss = durations.hidingScale + "ms, " + durations.hidingOpacity + "ms";
                    $wave.addClass("dx-inkripple-hiding").removeClass("dx-inkripple-showing").css("transitionDuration", durationCss);
                    const animationDuration = Math.max(durations.hidingScale, durations.hidingOpacity);
                    args.hidingTimeout = setTimeout(hideSelectedWave.bind(this, $wave), animationDuration)
                }
            },
        53805:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/axes/axes_constants.js ***!
              \************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _default = {
                    logarithmic: "logarithmic",
                    discrete: "discrete",
                    numeric: "numeric",
                    left: "left",
                    right: "right",
                    top: "top",
                    bottom: "bottom",
                    center: "center",
                    horizontal: "horizontal",
                    vertical: "vertical",
                    convertTicksToValues: function(ticks) {
                        return (0, _utils.map)(ticks || [], (function(item) {
                            return item.value
                        }))
                    },
                    validateOverlappingMode: function(mode) {
                        return "ignore" === mode || "none" === mode ? mode : "hide"
                    },
                    getTicksCountInRange: function(ticks, valueKey, range) {
                        let i = 1;
                        if (ticks.length > 1) {
                            for (; i < ticks.length; i++) {
                                if (Math.abs(ticks[i].coords[valueKey] - ticks[0].coords[valueKey]) >= range) {
                                    break
                                }
                            }
                        }
                        return i
                    },
                    areLabelsOverlap: function(bBox1, bBox2, spacing, alignment) {
                        const horizontalInverted = bBox1.x > bBox2.x;
                        const verticalInverted = bBox1.y > bBox2.y;
                        let x1 = bBox1.x;
                        let x2 = bBox2.x;
                        const width1 = bBox1.width;
                        const width2 = bBox2.width;
                        if ("left" === alignment) {
                            x1 += width1 / 2;
                            x2 += width2 / 2
                        } else if ("right" === alignment) {
                            x1 -= width1 / 2;
                            x2 -= width2 / 2
                        }
                        const hasHorizontalOverlapping = horizontalInverted ? x2 + width2 + spacing > x1 : x1 + width1 + spacing > x2;
                        const hasVerticalOverlapping = verticalInverted ? bBox2.y + bBox2.height > bBox1.y : bBox1.y + bBox1.height > bBox2.y;
                        return hasHorizontalOverlapping && hasVerticalOverlapping
                    }
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        32945:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/axes/axes_utils.js ***!
              \********************************************************************/
            function(__unused_webpack_module, exports) {
                exports.measureLabels = exports.calculateCanvasMargins = void 0;
                const _max = Math.max;
                exports.calculateCanvasMargins = function(bBoxes, canvas) {
                    const cLeft = canvas.left;
                    const cTop = canvas.top;
                    const cRight = canvas.width - canvas.right;
                    const cBottom = canvas.height - canvas.bottom;
                    return bBoxes.reduce((function(margins, bBox) {
                        if (!bBox || bBox.isEmpty) {
                            return margins
                        }
                        return {
                            left: _max(margins.left, cLeft - bBox.x),
                            top: _max(margins.top, cTop - bBox.y),
                            right: _max(margins.right, bBox.x + bBox.width - cRight),
                            bottom: _max(margins.bottom, bBox.y + bBox.height - cBottom)
                        }
                    }), {
                        left: 0,
                        right: 0,
                        top: 0,
                        bottom: 0
                    })
                };
                exports.measureLabels = function(items) {
                    items.forEach((function(item) {
                        const label = item.getContentContainer();
                        item.labelBBox = label ? label.getBBox() : {
                            x: 0,
                            y: 0,
                            width: 0,
                            height: 0
                        }
                    }))
                }
            },
        41278:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/axes/base_axis.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Axis = void 0;
                var _smart_formatter = __webpack_require__( /*! ./smart_formatter */ 41583);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _axes_constants = _interopRequireDefault(__webpack_require__( /*! ./axes_constants */ 53805));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _format_helper = _interopRequireDefault(__webpack_require__( /*! ../../format_helper */ 30343));
                var _parse_utils = __webpack_require__( /*! ../components/parse_utils */ 8587);
                var _tick_generator = __webpack_require__( /*! ./tick_generator */ 45971);
                var _translator2d = __webpack_require__( /*! ../translators/translator2d */ 87276);
                var _range = __webpack_require__( /*! ../translators/range */ 21177);
                var _tick = __webpack_require__( /*! ./tick */ 41013);
                var _math2 = __webpack_require__( /*! ../../core/utils/math */ 60810);
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../core/errors */ 17381));
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 91198));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _xy_axes = _interopRequireDefault(__webpack_require__( /*! ./xy_axes */ 99415));
                var polarMethods = function(obj, nodeInterop) {
                    if (!nodeInterop && obj && obj.__esModule) {
                        return obj
                    }
                    if (null === obj || "object" !== typeof obj && "function" !== typeof obj) {
                        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 ("default" !== key && 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
                }(__webpack_require__( /*! ./polar_axes */ 4331));
                var _constant_line = _interopRequireDefault(__webpack_require__( /*! ./constant_line */ 87713));
                var _strip = _interopRequireDefault(__webpack_require__( /*! ./strip */ 54978));
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _axes_utils = __webpack_require__( /*! ./axes_utils */ 32945);

                function _getRequireWildcardCache(nodeInterop) {
                    if ("function" !== typeof WeakMap) {
                        return null
                    }
                    var cacheBabelInterop = new WeakMap;
                    var cacheNodeInterop = new WeakMap;
                    return (_getRequireWildcardCache = function(nodeInterop) {
                        return nodeInterop ? cacheNodeInterop : cacheBabelInterop
                    })(nodeInterop)
                }

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const convertTicksToValues = _axes_constants.default.convertTicksToValues;
                const _math = Math;
                const _abs = _math.abs;
                const _max = _math.max;
                const _min = _math.min;
                const _isArray = Array.isArray;
                const TOP = _axes_constants.default.top;
                const BOTTOM = _axes_constants.default.bottom;
                const LEFT = _axes_constants.default.left;
                const RIGHT = _axes_constants.default.right;
                const CENTER = _axes_constants.default.center;
                const KEEP = "keep";
                const SHIFT = "shift";
                const RESET = "reset";
                const dateIntervals_day = 864e5,
                    dateIntervals_week = 6048e5;

                function getTickGenerator(options, incidentOccurred, skipTickGeneration, rangeIsEmpty, adjustDivisionFactor, _ref) {
                    var _options$workWeek;
                    let {
                        allowNegatives: allowNegatives,
                        linearThreshold: linearThreshold
                    } = _ref;
                    return (0, _tick_generator.tickGenerator)({
                        axisType: options.type,
                        dataType: options.dataType,
                        logBase: options.logarithmBase,
                        allowNegatives: allowNegatives,
                        linearThreshold: linearThreshold,
                        axisDivisionFactor: adjustDivisionFactor(options.axisDivisionFactor || 50),
                        minorAxisDivisionFactor: adjustDivisionFactor(options.minorAxisDivisionFactor || 15),
                        numberMultipliers: options.numberMultipliers,
                        calculateMinors: options.minorTick.visible || options.minorGrid.visible || options.calculateMinors,
                        allowDecimals: options.allowDecimals,
                        endOnTick: options.endOnTick,
                        incidentOccurred: incidentOccurred,
                        firstDayOfWeek: null === (_options$workWeek = options.workWeek) || void 0 === _options$workWeek ? void 0 : _options$workWeek[0],
                        skipTickGeneration: skipTickGeneration,
                        skipCalculationLimits: options.skipCalculationLimits,
                        generateExtraTick: options.generateExtraTick,
                        minTickInterval: options.minTickInterval,
                        rangeIsEmpty: rangeIsEmpty
                    })
                }

                function createMajorTick(axis, renderer, skippedCategory) {
                    const options = axis.getOptions();
                    return (0, _tick.tick)(axis, renderer, options.tick, options.grid, skippedCategory, false)
                }

                function createMinorTick(axis, renderer) {
                    const options = axis.getOptions();
                    return (0, _tick.tick)(axis, renderer, options.minorTick, options.minorGrid)
                }

                function createBoundaryTick(axis, renderer, isFirst) {
                    const options = axis.getOptions();
                    return (0, _tick.tick)(axis, renderer, (0, _extend.extend)({}, options.tick, {
                        visible: options.showCustomBoundaryTicks
                    }), options.grid, void 0, false, isFirst ? -1 : 1)
                }

                function callAction(elements, action, actionArgument1, actionArgument2) {
                    (elements || []).forEach(e => e[action](actionArgument1, actionArgument2))
                }

                function initTickCoords(ticks) {
                    callAction(ticks, "initCoords")
                }

                function drawTickMarks(ticks, options) {
                    callAction(ticks, "drawMark", options)
                }

                function drawGrids(ticks, drawLine) {
                    callAction(ticks, "drawGrid", drawLine)
                }

                function updateTicksPosition(ticks, options, animate) {
                    callAction(ticks, "updateTickPosition", options, animate)
                }

                function updateGridsPosition(ticks, animate) {
                    callAction(ticks, "updateGridPosition", animate)
                }

                function cleanUpInvalidTicks(ticks) {
                    let i = ticks.length - 1;
                    for (i; i >= 0; i--) {
                        if (!removeInvalidTick(ticks, i)) {
                            break
                        }
                    }
                    for (i = 0; i < ticks.length; i++) {
                        if (removeInvalidTick(ticks, i)) {
                            i--
                        } else {
                            break
                        }
                    }
                }

                function removeInvalidTick(ticks, i) {
                    if (null === ticks[i].coords.x || null === ticks[i].coords.y) {
                        ticks.splice(i, 1);
                        return true
                    }
                    return false
                }

                function getOptimalAngle(boxes, labelOpt) {
                    const angle = 180 * _math.asin((boxes[0].height + labelOpt.minSpacing) / (boxes[1].x - boxes[0].x)) / _math.PI;
                    return angle < 45 ? -45 : -90
                }

                function updateLabels(ticks, step, func) {
                    ticks.forEach((function(tick, index) {
                        if (tick.getContentContainer()) {
                            if (index % step !== 0) {
                                tick.removeLabel()
                            } else if (func) {
                                func(tick, index)
                            }
                        }
                    }))
                }

                function getZoomBoundValue(optionValue, dataValue) {
                    if (void 0 === optionValue) {
                        return dataValue
                    } else if (null === optionValue) {
                        return
                    } else {
                        return optionValue
                    }
                }
                const Axis = function(renderSettings) {
                    this._renderer = renderSettings.renderer;
                    this._incidentOccurred = renderSettings.incidentOccurred;
                    this._eventTrigger = renderSettings.eventTrigger;
                    this._stripsGroup = renderSettings.stripsGroup;
                    this._stripLabelAxesGroup = renderSettings.stripLabelAxesGroup;
                    this._labelsAxesGroup = renderSettings.labelsAxesGroup;
                    this._constantLinesGroup = renderSettings.constantLinesGroup;
                    this._scaleBreaksGroup = renderSettings.scaleBreaksGroup;
                    this._axesContainerGroup = renderSettings.axesContainerGroup;
                    this._gridContainerGroup = renderSettings.gridGroup;
                    this._axisCssPrefix = renderSettings.widgetClass + "-" + (renderSettings.axisClass ? renderSettings.axisClass + "-" : "");
                    this._setType(renderSettings.axisType, renderSettings.drawingType);
                    this._createAxisGroups();
                    this._translator = this._createTranslator();
                    this.isArgumentAxis = renderSettings.isArgumentAxis;
                    this._viewport = {};
                    this._prevDataInfo = {};
                    this._firstDrawing = true;
                    this._initRange = {};
                    this._getTemplate = renderSettings.getTemplate
                };
                exports.Axis = Axis;
                Axis.prototype = {
                    constructor: Axis,
                    _drawAxis() {
                        const options = this._options;
                        if (!options.visible) {
                            return
                        }
                        this._axisElement = this._createAxisElement();
                        this._updateAxisElementPosition();
                        this._axisElement.attr({
                            "stroke-width": options.width,
                            stroke: options.color,
                            "stroke-opacity": options.opacity
                        }).sharp(this._getSharpParam(true), this.getAxisSharpDirection()).append(this._axisLineGroup)
                    },
                    _createPathElement(points, attr, sharpDirection) {
                        return this.sharp(this._renderer.path(points, "line").attr(attr), sharpDirection)
                    },
                    sharp(svgElement) {
                        let sharpDirection = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;
                        return svgElement.sharp(this._getSharpParam(), sharpDirection)
                    },
                    customPositionIsAvailable: () => false,
                    getOrthogonalAxis: _common.noop,
                    getCustomPosition: _common.noop,
                    getCustomBoundaryPosition: _common.noop,
                    resolveOverlappingForCustomPositioning: _common.noop,
                    hasNonBoundaryPosition: () => false,
                    customPositionIsBoundaryOrthogonalAxis: () => false,
                    getResolvedBoundaryPosition() {
                        return this.getOptions().position
                    },
                    getAxisSharpDirection() {
                        const position = this.getResolvedBoundaryPosition();
                        return this.hasNonBoundaryPosition() || position !== BOTTOM && position !== RIGHT ? 1 : -1
                    },
                    getSharpDirectionByCoords(coords) {
                        const canvas = this._getCanvasStartEnd();
                        const maxCoord = Math.max(canvas.start, canvas.end);
                        return this.getRadius ? 0 : maxCoord !== coords[this._isHorizontal ? "x" : "y"] ? 1 : -1
                    },
                    _getGridLineDrawer: function() {
                        const that = this;
                        return function(tick, gridStyle) {
                            const grid = that._getGridPoints(tick.coords);
                            if (grid.points) {
                                return that._createPathElement(grid.points, gridStyle, that.getSharpDirectionByCoords(tick.coords))
                            }
                            return null
                        }
                    },
                    _getGridPoints: function(coords) {
                        const isHorizontal = this._isHorizontal;
                        const tickPositionField = isHorizontal ? "x" : "y";
                        const orthogonalPositions = this._orthogonalPositions;
                        const positionFrom = orthogonalPositions.start;
                        const positionTo = orthogonalPositions.end;
                        const borderOptions = this.borderOptions;
                        const canvasStart = isHorizontal ? LEFT : TOP;
                        const canvasEnd = isHorizontal ? RIGHT : BOTTOM;
                        const axisCanvas = this.getCanvas();
                        const canvas = {
                            left: axisCanvas.left,
                            right: axisCanvas.width - axisCanvas.right,
                            top: axisCanvas.top,
                            bottom: axisCanvas.height - axisCanvas.bottom
                        };
                        const firstBorderLinePosition = borderOptions.visible && borderOptions[canvasStart] ? canvas[canvasStart] : void 0;
                        const lastBorderLinePosition = borderOptions.visible && borderOptions[canvasEnd] ? canvas[canvasEnd] : void 0;
                        const minDelta = 4 + firstBorderLinePosition;
                        const maxDelta = lastBorderLinePosition - 4;
                        if (this.areCoordsOutsideAxis(coords) || void 0 === coords[tickPositionField] || coords[tickPositionField] < minDelta || coords[tickPositionField] > maxDelta) {
                            return {
                                points: null
                            }
                        }
                        return {
                            points: isHorizontal ? null !== coords[tickPositionField] ? [coords[tickPositionField], positionFrom, coords[tickPositionField], positionTo] : null : null !== coords[tickPositionField] ? [positionFrom, coords[tickPositionField], positionTo, coords[tickPositionField]] : null
                        }
                    },
                    _getConstantLinePos: function(parsedValue, canvasStart, canvasEnd) {
                        const value = this._getTranslatedCoord(parsedValue);
                        if (!(0, _type.isDefined)(value) || value < _min(canvasStart, canvasEnd) || value > _max(canvasStart, canvasEnd)) {
                            return
                        }
                        return value
                    },
                    _getConstantLineGraphicAttributes: function(value) {
                        const positionFrom = this._orthogonalPositions.start;
                        const positionTo = this._orthogonalPositions.end;
                        return {
                            points: this._isHorizontal ? [value, positionFrom, value, positionTo] : [positionFrom, value, positionTo, value]
                        }
                    },
                    _createConstantLine: function(value, attr) {
                        return this._createPathElement(this._getConstantLineGraphicAttributes(value).points, attr, (coord = value, axisCanvas = this._getCanvasStartEnd(), Math.max(axisCanvas.start, axisCanvas.end) !== coord ? 1 : -1));
                        var coord, axisCanvas
                    },
                    _drawConstantLineLabelText: function(text, x, y, _ref2, group) {
                        let {
                            font: font,
                            cssClass: cssClass
                        } = _ref2;
                        return this._renderer.text(text, x, y).css((0, _utils.patchFontOptions)((0, _extend.extend)({}, this._options.label.font, font))).attr({
                            align: "center",
                            class: cssClass
                        }).append(group)
                    },
                    _drawConstantLineLabels: function(parsedValue, lineLabelOptions, value, group) {
                        var _text;
                        let text = lineLabelOptions.text;
                        const options = this._options;
                        const labelOptions = options.label;
                        this._checkAlignmentConstantLineLabels(lineLabelOptions);
                        text = null !== (_text = text) && void 0 !== _text ? _text : this.formatLabel(parsedValue, labelOptions);
                        const coords = this._getConstantLineLabelsCoords(value, lineLabelOptions);
                        return this._drawConstantLineLabelText(text, coords.x, coords.y, lineLabelOptions, group)
                    },
                    _getStripPos: function(startValue, endValue, canvasStart, canvasEnd, range) {
                        const isContinuous = !!(range.minVisible || range.maxVisible);
                        const categories = (range.categories || []).reduce((function(result, cat) {
                            result.push(cat.valueOf());
                            return result
                        }), []);
                        let start;
                        let end;
                        let swap;
                        let startCategoryIndex;
                        let endCategoryIndex;
                        if (!isContinuous) {
                            if ((0, _type.isDefined)(startValue) && (0, _type.isDefined)(endValue)) {
                                var _parsedStartValue$val, _parsedEndValue$value;
                                const parsedStartValue = this.parser(startValue);
                                const parsedEndValue = this.parser(endValue);
                                startCategoryIndex = categories.indexOf(null !== (_parsedStartValue$val = null === parsedStartValue || void 0 === parsedStartValue ? void 0 : parsedStartValue.valueOf()) && void 0 !== _parsedStartValue$val ? _parsedStartValue$val : void 0);
                                endCategoryIndex = categories.indexOf(null !== (_parsedEndValue$value = null === parsedEndValue || void 0 === parsedEndValue ? void 0 : parsedEndValue.valueOf()) && void 0 !== _parsedEndValue$value ? _parsedEndValue$value : void 0);
                                if (-1 === startCategoryIndex || -1 === endCategoryIndex) {
                                    return {
                                        from: 0,
                                        to: 0,
                                        outOfCanvas: true
                                    }
                                }
                                if (startCategoryIndex > endCategoryIndex) {
                                    swap = endValue;
                                    endValue = startValue;
                                    startValue = swap
                                }
                            }
                        }
                        if ((0, _type.isDefined)(startValue)) {
                            startValue = this.validateUnit(startValue, "E2105", "strip");
                            start = this._getTranslatedCoord(startValue, -1)
                        } else {
                            start = canvasStart
                        }
                        if ((0, _type.isDefined)(endValue)) {
                            endValue = this.validateUnit(endValue, "E2105", "strip");
                            end = this._getTranslatedCoord(endValue, 1)
                        } else {
                            end = canvasEnd
                        }
                        const stripPosition = start < end ? {
                            from: start,
                            to: end
                        } : {
                            from: end,
                            to: start
                        };
                        const visibleArea = this.getVisibleArea();
                        if (stripPosition.from <= visibleArea[0] && stripPosition.to <= visibleArea[0] || stripPosition.from >= visibleArea[1] && stripPosition.to >= visibleArea[1]) {
                            stripPosition.outOfCanvas = true
                        }
                        return stripPosition
                    },
                    _getStripGraphicAttributes: function(fromPoint, toPoint) {
                        let x;
                        let y;
                        let width;
                        let height;
                        const orthogonalPositions = this._orthogonalPositions;
                        const positionFrom = orthogonalPositions.start;
                        const positionTo = orthogonalPositions.end;
                        if (this._isHorizontal) {
                            x = fromPoint;
                            y = _min(positionFrom, positionTo);
                            width = toPoint - fromPoint;
                            height = _abs(positionFrom - positionTo)
                        } else {
                            x = _min(positionFrom, positionTo);
                            y = fromPoint;
                            width = _abs(positionFrom - positionTo);
                            height = _abs(fromPoint - toPoint)
                        }
                        return {
                            x: x,
                            y: y,
                            width: width,
                            height: height
                        }
                    },
                    _createStrip: function(attrs) {
                        return this._renderer.rect(attrs.x, attrs.y, attrs.width, attrs.height)
                    },
                    _adjustStripLabels: function() {
                        const that = this;
                        this._strips.forEach((function(strip) {
                            if (strip.label) {
                                strip.label.attr(that._getAdjustedStripLabelCoords(strip))
                            }
                        }))
                    },
                    _adjustLabelsCoord(offset, maxWidth, checkCanvas) {
                        const getContainerAttrs = tick => this._getLabelAdjustedCoord(tick, offset + (tick.labelOffset || 0), maxWidth, checkCanvas);
                        this._majorTicks.forEach((function(tick) {
                            if (tick.label) {
                                tick.updateMultilineTextAlignment();
                                tick.label.attr(getContainerAttrs(tick))
                            } else {
                                tick.templateContainer && tick.templateContainer.attr(getContainerAttrs(tick))
                            }
                        }))
                    },
                    _adjustLabels: function(offset) {
                        const options = this.getOptions();
                        const positionsAreConsistent = options.position === options.label.position;
                        const maxSize = this._majorTicks.reduce((function(size, tick) {
                            if (!tick.getContentContainer()) {
                                return size
                            }
                            const bBox = tick.labelRotationAngle ? (0, _utils.rotateBBox)(tick.labelBBox, [tick.labelCoords.x, tick.labelCoords.y], -tick.labelRotationAngle) : tick.labelBBox;
                            return {
                                width: _max(size.width || 0, bBox.width),
                                height: _max(size.height || 0, bBox.height),
                                offset: _max(size.offset || 0, tick.labelOffset || 0)
                            }
                        }), {});
                        const additionalOffset = positionsAreConsistent ? this._isHorizontal ? maxSize.height : maxSize.width : 0;
                        this._adjustLabelsCoord(offset, maxSize.width);
                        return offset + additionalOffset + (additionalOffset && this._options.label.indentFromAxis) + (positionsAreConsistent ? maxSize.offset : 0)
                    },
                    _getLabelAdjustedCoord: function(tick, offset, maxWidth) {
                        offset = offset || 0;
                        const options = this._options;
                        const templateBox = tick.templateContainer && tick.templateContainer.getBBox();
                        const box = templateBox || (0, _utils.rotateBBox)(tick.labelBBox, [tick.labelCoords.x, tick.labelCoords.y], -tick.labelRotationAngle || 0);
                        const textAlign = tick.labelAlignment || options.label.alignment;
                        const isDiscrete = "discrete" === this._options.type;
                        const isFlatLabel = tick.labelRotationAngle % 90 === 0;
                        const indentFromAxis = options.label.indentFromAxis;
                        const labelPosition = options.label.position;
                        const axisPosition = this._axisPosition;
                        const labelCoords = tick.labelCoords;
                        const labelX = labelCoords.x;
                        let translateX;
                        let translateY;
                        if (this._isHorizontal) {
                            if (labelPosition === BOTTOM) {
                                translateY = axisPosition + indentFromAxis - box.y + offset
                            } else {
                                translateY = axisPosition - indentFromAxis - (box.y + box.height) - offset
                            }
                            if (textAlign === RIGHT) {
                                translateX = isDiscrete && isFlatLabel ? tick.coords.x - (box.x + box.width) : labelX - box.x - box.width
                            } else if (textAlign === LEFT) {
                                translateX = isDiscrete && isFlatLabel ? labelX - box.x - (tick.coords.x - labelX) : labelX - box.x
                            } else {
                                translateX = labelX - box.x - box.width / 2
                            }
                        } else {
                            translateY = labelCoords.y - box.y - box.height / 2;
                            if (labelPosition === LEFT) {
                                if (textAlign === LEFT) {
                                    translateX = axisPosition - indentFromAxis - maxWidth - box.x
                                } else if (textAlign === CENTER) {
                                    translateX = axisPosition - indentFromAxis - maxWidth / 2 - box.x - box.width / 2
                                } else {
                                    translateX = axisPosition - indentFromAxis - box.x - box.width
                                }
                                translateX -= offset
                            } else {
                                if (textAlign === RIGHT) {
                                    translateX = axisPosition + indentFromAxis + maxWidth - box.x - box.width
                                } else if (textAlign === CENTER) {
                                    translateX = axisPosition + indentFromAxis + maxWidth / 2 - box.x - box.width / 2
                                } else {
                                    translateX = axisPosition + indentFromAxis - box.x
                                }
                                translateX += offset
                            }
                        }
                        return {
                            translateX: translateX,
                            translateY: translateY
                        }
                    },
                    _createAxisConstantLineGroups: function() {
                        const renderer = this._renderer;
                        const classSelector = this._axisCssPrefix;
                        const constantLinesClass = classSelector + "constant-lines";
                        const insideGroup = renderer.g().attr({
                            class: constantLinesClass
                        });
                        const outsideGroup1 = renderer.g().attr({
                            class: constantLinesClass
                        });
                        const outsideGroup2 = renderer.g().attr({
                            class: constantLinesClass
                        });
                        return {
                            inside: insideGroup,
                            outside1: outsideGroup1,
                            left: outsideGroup1,
                            top: outsideGroup1,
                            outside2: outsideGroup2,
                            right: outsideGroup2,
                            bottom: outsideGroup2,
                            remove: function() {
                                this.inside.remove();
                                this.outside1.remove();
                                this.outside2.remove()
                            },
                            clear: function() {
                                this.inside.clear();
                                this.outside1.clear();
                                this.outside2.clear()
                            }
                        }
                    },
                    _createAxisGroups: function() {
                        const renderer = this._renderer;
                        const classSelector = this._axisCssPrefix;
                        this._axisGroup = renderer.g().attr({
                            class: classSelector + "axis"
                        }).enableLinks();
                        this._axisStripGroup = renderer.g().attr({
                            class: classSelector + "strips"
                        });
                        this._axisGridGroup = renderer.g().attr({
                            class: classSelector + "grid"
                        });
                        this._axisElementsGroup = renderer.g().attr({
                            class: classSelector + "elements"
                        });
                        this._axisLineGroup = renderer.g().attr({
                            class: classSelector + "line"
                        }).linkOn(this._axisGroup, "axisLine").linkAppend();
                        this._axisTitleGroup = renderer.g().attr({
                            class: classSelector + "title"
                        }).append(this._axisGroup);
                        this._axisConstantLineGroups = {
                            above: this._createAxisConstantLineGroups(),
                            under: this._createAxisConstantLineGroups()
                        };
                        this._axisStripLabelGroup = renderer.g().attr({
                            class: classSelector + "axis-labels"
                        })
                    },
                    _clearAxisGroups: function() {
                        const that = this;
                        that._axisGroup.remove();
                        that._axisStripGroup.remove();
                        that._axisStripLabelGroup.remove();
                        that._axisConstantLineGroups.above.remove();
                        that._axisConstantLineGroups.under.remove();
                        that._axisGridGroup.remove();
                        that._axisTitleGroup.clear();
                        if (!that._options.label.template || !that.isRendered()) {
                            that._axisElementsGroup.remove();
                            that._axisElementsGroup.clear()
                        }
                        that._axisLineGroup && that._axisLineGroup.clear();
                        that._axisStripGroup && that._axisStripGroup.clear();
                        that._axisGridGroup && that._axisGridGroup.clear();
                        that._axisConstantLineGroups.above.clear();
                        that._axisConstantLineGroups.under.clear();
                        that._axisStripLabelGroup && that._axisStripLabelGroup.clear()
                    },
                    _getLabelFormatObject: function(value, labelOptions, range, point, tickInterval, ticks) {
                        range = range || this._getViewportRange();
                        const formatObject = {
                            value: value,
                            valueText: (0, _smart_formatter.smartFormatter)(value, {
                                labelOptions: labelOptions,
                                ticks: ticks || convertTicksToValues(this._majorTicks),
                                tickInterval: null !== tickInterval && void 0 !== tickInterval ? tickInterval : this._tickInterval,
                                dataType: this._options.dataType,
                                logarithmBase: this._options.logarithmBase,
                                type: this._options.type,
                                showTransition: !this._options.marker.visible,
                                point: point
                            }) || "",
                            min: range.minVisible,
                            max: range.maxVisible
                        };
                        if (point) {
                            formatObject.point = point
                        }
                        return formatObject
                    },
                    formatLabel: function(value, labelOptions, range, point, tickInterval, ticks) {
                        const formatObject = this._getLabelFormatObject(value, labelOptions, range, point, tickInterval, ticks);
                        return (0, _type.isFunction)(labelOptions.customizeText) ? labelOptions.customizeText.call(formatObject, formatObject) : formatObject.valueText
                    },
                    formatHint: function(value, labelOptions, range) {
                        const formatObject = this._getLabelFormatObject(value, labelOptions, range);
                        return (0, _type.isFunction)(labelOptions.customizeHint) ? labelOptions.customizeHint.call(formatObject, formatObject) : void 0
                    },
                    formatRange(startValue, endValue, interval, argumentFormat) {
                        return (0, _smart_formatter.formatRange)({
                            startValue: startValue,
                            endValue: endValue,
                            tickInterval: interval,
                            argumentFormat: argumentFormat,
                            axisOptions: this.getOptions()
                        })
                    },
                    _setTickOffset: function() {
                        const options = this._options;
                        const discreteAxisDivisionMode = options.discreteAxisDivisionMode;
                        this._tickOffset = +("crossLabels" !== discreteAxisDivisionMode || !discreteAxisDivisionMode)
                    },
                    aggregatedPointBetweenTicks() {
                        return "crossTicks" === this._options.aggregatedPointsPosition
                    },
                    resetApplyingAnimation: function(isFirstDrawing) {
                        this._resetApplyingAnimation = true;
                        if (isFirstDrawing) {
                            this._firstDrawing = true
                        }
                    },
                    isFirstDrawing() {
                        return this._firstDrawing
                    },
                    getMargins: function() {
                        const that = this;
                        const {
                            position: position,
                            offset: offset,
                            customPosition: customPosition,
                            placeholderSize: placeholderSize,
                            grid: grid,
                            tick: tick,
                            crosshairMargin: crosshairMargin
                        } = that._options;
                        const isDefinedCustomPositionOption = (0, _type.isDefined)(customPosition);
                        const boundaryPosition = that.getResolvedBoundaryPosition();
                        const canvas = that.getCanvas();
                        const cLeft = canvas.left;
                        const cTop = canvas.top;
                        const cRight = canvas.width - canvas.right;
                        const cBottom = canvas.height - canvas.bottom;
                        const edgeMarginCorrection = _max(grid.visible && grid.width || 0, tick.visible && tick.width || 0);
                        const constantLineAboveSeries = that._axisConstantLineGroups.above;
                        const constantLineUnderSeries = that._axisConstantLineGroups.under;
                        const boxes = [that._axisElementsGroup, constantLineAboveSeries.outside1, constantLineAboveSeries.outside2, constantLineUnderSeries.outside1, constantLineUnderSeries.outside2, that._axisLineGroup].map(group => group && group.getBBox()).concat(function(group) {
                            const box = group && group.getBBox();
                            if (!box || box.isEmpty) {
                                return box
                            }
                            if (that._isHorizontal) {
                                box.x = cLeft;
                                box.width = cRight - cLeft
                            } else {
                                box.y = cTop;
                                box.height = cBottom - cTop
                            }
                            return box
                        }(that._axisTitleGroup));
                        const margins = (0, _axes_utils.calculateCanvasMargins)(boxes, canvas);
                        margins[position] += crosshairMargin;
                        if (that.hasNonBoundaryPosition() && isDefinedCustomPositionOption) {
                            margins[boundaryPosition] = 0
                        }
                        if (placeholderSize) {
                            margins[position] = placeholderSize
                        }
                        if (edgeMarginCorrection) {
                            if (that._isHorizontal && canvas.right < edgeMarginCorrection && margins.right < edgeMarginCorrection) {
                                margins.right = edgeMarginCorrection
                            }
                            if (!that._isHorizontal && canvas.bottom < edgeMarginCorrection && margins.bottom < edgeMarginCorrection) {
                                margins.bottom = edgeMarginCorrection
                            }
                        }
                        if (!isDefinedCustomPositionOption && (0, _type.isDefined)(offset)) {
                            const moveByOffset = that.customPositionIsBoundary() && (offset > 0 && (boundaryPosition === LEFT || boundaryPosition === TOP) || offset < 0 && (boundaryPosition === RIGHT || boundaryPosition === BOTTOM));
                            margins[boundaryPosition] -= moveByOffset ? offset : 0
                        }
                        return margins
                    },
                    validateUnit: function(unit, idError, parameters) {
                        const that = this;
                        unit = that.parser(unit);
                        if (void 0 === unit && idError) {
                            that._incidentOccurred(idError, [parameters])
                        }
                        return unit
                    },
                    _setType: function(axisType, drawingType) {
                        let axisTypeMethods;
                        switch (axisType) {
                            case "xyAxes":
                                axisTypeMethods = _xy_axes.default;
                                break;
                            case "polarAxes":
                                axisTypeMethods = polarMethods
                        }(0, _extend.extend)(this, axisTypeMethods[drawingType])
                    },
                    _getSharpParam: function() {
                        return true
                    },
                    _disposeBreaksGroup: _common.noop,
                    dispose: function() {
                        [this._axisElementsGroup, this._axisStripGroup, this._axisGroup].forEach((function(g) {
                            g.dispose()
                        }));
                        this._strips = this._title = null;
                        this._axisStripGroup = this._axisConstantLineGroups = this._axisStripLabelGroup = this._axisBreaksGroup = null;
                        this._axisLineGroup = this._axisElementsGroup = this._axisGridGroup = null;
                        this._axisGroup = this._axisTitleGroup = null;
                        this._axesContainerGroup = this._stripsGroup = this._constantLinesGroup = this._labelsAxesGroup = null;
                        this._renderer = this._options = this._textOptions = this._textFontStyles = null;
                        this._translator = null;
                        this._majorTicks = this._minorTicks = null;
                        this._disposeBreaksGroup();
                        this._templatesRendered && this._templatesRendered.reject()
                    },
                    getOptions: function() {
                        return this._options
                    },
                    setPane: function(pane) {
                        this.pane = pane;
                        this._options.pane = pane
                    },
                    setTypes: function(type, axisType, typeSelector) {
                        this._options.type = type || this._options.type;
                        this._options[typeSelector] = axisType || this._options[typeSelector];
                        this._updateTranslator()
                    },
                    resetTypes: function(typeSelector) {
                        this._options.type = this._initTypes.type;
                        this._options[typeSelector] = this._initTypes[typeSelector]
                    },
                    getTranslator: function() {
                        return this._translator
                    },
                    updateOptions: function(options) {
                        const that = this;
                        const labelOpt = options.label;
                        ! function(options) {
                            var _labelOptions$minSpac;
                            const labelOptions = options.label;
                            let position = options.position;
                            const defaultPosition = options.isHorizontal ? BOTTOM : LEFT;
                            const secondaryPosition = options.isHorizontal ? TOP : RIGHT;
                            let labelPosition = labelOptions.position;
                            if (position !== defaultPosition && position !== secondaryPosition) {
                                position = defaultPosition
                            }
                            if (!labelPosition || "outside" === labelPosition) {
                                labelPosition = position
                            } else if ("inside" === labelPosition) {
                                labelPosition = {
                                    [TOP]: BOTTOM,
                                    [BOTTOM]: TOP,
                                    [LEFT]: RIGHT,
                                    [RIGHT]: LEFT
                                } [position]
                            }
                            if (labelPosition !== defaultPosition && labelPosition !== secondaryPosition) {
                                labelPosition = position
                            }
                            if (labelOptions.alignment !== CENTER && !labelOptions.userAlignment) {
                                labelOptions.alignment = {
                                    [TOP]: CENTER,
                                    [BOTTOM]: CENTER,
                                    [LEFT]: RIGHT,
                                    [RIGHT]: LEFT
                                } [labelPosition]
                            }
                            options.position = position;
                            labelOptions.position = labelPosition;
                            options.hoverMode = options.hoverMode ? options.hoverMode.toLowerCase() : "none";
                            labelOptions.minSpacing = null !== (_labelOptions$minSpac = labelOptions.minSpacing) && void 0 !== _labelOptions$minSpac ? _labelOptions$minSpac : 5;
                            options.type && (options.type = options.type.toLowerCase());
                            options.argumentType && (options.argumentType = options.argumentType.toLowerCase());
                            options.valueType && (options.valueType = options.valueType.toLowerCase())
                        }(options);
                        ! function(isValueAxis, options) {
                            if (isValueAxis && "shift" === options.visualRangeUpdateMode) {
                                _errors.default.log("W0016", "valueAxis.visualRangeUpdateMode", "shift", "23.1", "Specify another value")
                            }
                        }(!that.isArgumentAxis, options);
                        that._options = options;
                        options.tick = options.tick || {};
                        options.minorTick = options.minorTick || {};
                        options.grid = options.grid || {};
                        options.minorGrid = options.minorGrid || {};
                        options.title = options.title || {};
                        options.marker = options.marker || {};
                        that._initTypes = {
                            type: options.type,
                            argumentType: options.argumentType,
                            valueType: options.valueType
                        };
                        that._setTickOffset();
                        that._isHorizontal = options.isHorizontal;
                        that.pane = options.pane;
                        that.name = options.name;
                        that.priority = options.priority;
                        that._hasLabelFormat = "" !== labelOpt.format && (0, _type.isDefined)(labelOpt.format);
                        that._textOptions = {
                            opacity: labelOpt.opacity,
                            align: "center",
                            class: labelOpt.cssClass
                        };
                        that._textFontStyles = (0, _utils.patchFontOptions)(labelOpt.font);
                        if (options.type === _axes_constants.default.logarithmic) {
                            if (options.logarithmBaseError) {
                                that._incidentOccurred("E2104");
                                delete options.logarithmBaseError
                            }
                        }
                        that._updateTranslator();
                        that._createConstantLines();
                        that._strips = (options.strips || []).map(o => (0, _strip.default)(that, o));
                        that._majorTicks = that._minorTicks = null;
                        that._firstDrawing = true
                    },
                    calculateInterval: function(value, prevValue) {
                        const options = this._options;
                        if (!options || options.type !== _axes_constants.default.logarithmic) {
                            return _abs(value - prevValue)
                        }
                        const {
                            allowNegatives: allowNegatives,
                            linearThreshold: linearThreshold
                        } = new _range.Range(this.getTranslator().getBusinessRange());
                        return _abs((0, _utils.getLogExt)(value, options.logarithmBase, allowNegatives, linearThreshold) - (0, _utils.getLogExt)(prevValue, options.logarithmBase, allowNegatives, linearThreshold))
                    },
                    getCanvasRange() {
                        const translator = this._translator;
                        return {
                            startValue: translator.from(translator.translate("canvas_position_start")),
                            endValue: translator.from(translator.translate("canvas_position_end"))
                        }
                    },
                    _processCanvas: function(canvas) {
                        return canvas
                    },
                    updateCanvas: function(canvas, canvasRedesign) {
                        if (!canvasRedesign) {
                            const positions = this._orthogonalPositions = {
                                start: !this._isHorizontal ? canvas.left : canvas.top,
                                end: !this._isHorizontal ? canvas.width - canvas.right : canvas.height - canvas.bottom
                            };
                            positions.center = positions.start + (positions.end - positions.start) / 2
                        } else {
                            this._orthogonalPositions = null
                        }
                        this._canvas = canvas;
                        this._translator.updateCanvas(this._processCanvas(canvas));
                        this._initAxisPositions()
                    },
                    getCanvas: function() {
                        return this._canvas
                    },
                    getAxisShift() {
                        return this._axisShift || 0
                    },
                    hideTitle: function() {
                        const that = this;
                        if (that._options.title.text) {
                            that._incidentOccurred("W2105", [that._isHorizontal ? "horizontal" : "vertical"]);
                            that._axisTitleGroup.clear()
                        }
                    },
                    getTitle: function() {
                        return this._title
                    },
                    hideOuterElements: function() {
                        const that = this;
                        const options = that._options;
                        if ((options.label.visible || that._outsideConstantLines.length) && !that._translator.getBusinessRange().isEmpty()) {
                            that._incidentOccurred("W2106", [that._isHorizontal ? "horizontal" : "vertical"]);
                            that._axisElementsGroup.clear();
                            callAction(that._outsideConstantLines, "removeLabel")
                        }
                    },
                    _resolveLogarithmicOptionsForRange(range) {
                        const options = this._options;
                        if (options.type === _axes_constants.default.logarithmic) {
                            range.addRange({
                                allowNegatives: void 0 !== options.allowNegatives ? options.allowNegatives : range.min <= 0
                            });
                            if (!isNaN(options.linearThreshold)) {
                                range.linearThreshold = options.linearThreshold
                            }
                        }
                    },
                    adjustViewport(businessRange) {
                        const options = this._options;
                        const isDiscrete = options.type === _axes_constants.default.discrete;
                        let categories = this._seriesData && this._seriesData.categories || [];
                        const wholeRange = this.adjustRange((0, _utils.getVizRangeObject)(options.wholeRange));
                        const visualRange = this.getViewport() || {};
                        const result = new _range.Range(businessRange);
                        this._addConstantLinesToRange(result);
                        let minDefined = (0, _type.isDefined)(visualRange.startValue);
                        let maxDefined = (0, _type.isDefined)(visualRange.endValue);
                        if (!isDiscrete) {
                            minDefined = minDefined && (!(0, _type.isDefined)(wholeRange.endValue) || visualRange.startValue < wholeRange.endValue);
                            maxDefined = maxDefined && (!(0, _type.isDefined)(wholeRange.startValue) || visualRange.endValue > wholeRange.startValue)
                        }
                        const minVisible = minDefined ? visualRange.startValue : result.minVisible;
                        const maxVisible = maxDefined ? visualRange.endValue : result.maxVisible;
                        if (!isDiscrete) {
                            var _wholeRange$startValu, _wholeRange$endValue;
                            result.min = null !== (_wholeRange$startValu = wholeRange.startValue) && void 0 !== _wholeRange$startValu ? _wholeRange$startValu : result.min;
                            result.max = null !== (_wholeRange$endValue = wholeRange.endValue) && void 0 !== _wholeRange$endValue ? _wholeRange$endValue : result.max
                        } else {
                            const categoriesInfo = (0, _utils.getCategoriesInfo)(categories, wholeRange.startValue, wholeRange.endValue);
                            categories = categoriesInfo.categories;
                            result.categories = categories
                        }
                        const adjustedVisualRange = (0, _utils.adjustVisualRange)({
                            axisType: options.type,
                            dataType: options.dataType,
                            base: options.logarithmBase
                        }, {
                            startValue: minDefined ? visualRange.startValue : void 0,
                            endValue: maxDefined ? visualRange.endValue : void 0,
                            length: visualRange.length
                        }, {
                            categories: categories,
                            min: wholeRange.startValue,
                            max: wholeRange.endValue
                        }, {
                            categories: categories,
                            min: minVisible,
                            max: maxVisible
                        });
                        result.minVisible = adjustedVisualRange.startValue;
                        result.maxVisible = adjustedVisualRange.endValue;
                        !(0, _type.isDefined)(result.min) && (result.min = result.minVisible);
                        !(0, _type.isDefined)(result.max) && (result.max = result.maxVisible);
                        result.addRange({});
                        this._resolveLogarithmicOptionsForRange(result);
                        return result
                    },
                    adjustRange(range) {
                        range = range || {};
                        const isDiscrete = this._options.type === _axes_constants.default.discrete;
                        const isLogarithmic = this._options.type === _axes_constants.default.logarithmic;
                        const disabledNegatives = false === this._options.allowNegatives;
                        if (isLogarithmic) {
                            range.startValue = disabledNegatives && range.startValue <= 0 ? null : range.startValue;
                            range.endValue = disabledNegatives && range.endValue <= 0 ? null : range.endValue
                        }
                        if (!isDiscrete && (0, _type.isDefined)(range.startValue) && (0, _type.isDefined)(range.endValue) && range.startValue > range.endValue) {
                            const tmp = range.endValue;
                            range.endValue = range.startValue;
                            range.startValue = tmp
                        }
                        return range
                    },
                    _getVisualRangeUpdateMode(viewport, newRange, oppositeValue) {
                        let value = this._options.visualRangeUpdateMode;
                        const translator = this._translator;
                        const range = this._seriesData;
                        const prevDataInfo = this._prevDataInfo;
                        if (prevDataInfo.isEmpty && !prevDataInfo.containsConstantLine) {
                            return KEEP
                        }
                        if (!this.isArgumentAxis) {
                            const viewport = this.getViewport();
                            if (!(0, _type.isDefined)(viewport.startValue) && !(0, _type.isDefined)(viewport.endValue) && !(0, _type.isDefined)(viewport.length)) {
                                return RESET
                            }
                        }
                        if (this.isArgumentAxis) {
                            if (-1 === [SHIFT, KEEP, RESET].indexOf(value)) {
                                if (range.axisType === _axes_constants.default.discrete) {
                                    const categories = range.categories;
                                    const newCategories = newRange.categories;
                                    const visualRange = this.visualRange();
                                    if (categories && newCategories && categories.length && -1 !== newCategories.map(c => c.valueOf()).join(",").indexOf(categories.map(c => c.valueOf()).join(",")) && (visualRange.startValue.valueOf() !== categories[0].valueOf() || visualRange.endValue.valueOf() !== categories[categories.length - 1].valueOf())) {
                                        value = KEEP
                                    } else {
                                        value = RESET
                                    }
                                } else {
                                    const minPoint = translator.translate(range.min);
                                    const minVisiblePoint = translator.translate(viewport.startValue);
                                    const maxPoint = translator.translate(range.max);
                                    const maxVisiblePoint = translator.translate(viewport.endValue);
                                    if (minPoint === minVisiblePoint && maxPoint === maxVisiblePoint) {
                                        value = RESET
                                    } else if (minPoint !== minVisiblePoint && maxPoint === maxVisiblePoint) {
                                        value = SHIFT
                                    } else {
                                        value = KEEP
                                    }
                                }
                                if (value === KEEP && prevDataInfo.isEmpty && prevDataInfo.containsConstantLine) {
                                    value = RESET
                                }
                            }
                        } else if (-1 === [KEEP, RESET].indexOf(value)) {
                            if (oppositeValue === KEEP) {
                                value = KEEP
                            } else {
                                value = RESET
                            }
                        }
                        return value
                    },
                    _handleBusinessRangeChanged(oppositeVisualRangeUpdateMode, axisReinitialized, newRange) {
                        const that = this;
                        const visualRange = this.visualRange();
                        if (axisReinitialized || that._translator.getBusinessRange().isEmpty()) {
                            return
                        }
                        const visualRangeUpdateMode = that._lastVisualRangeUpdateMode = that._getVisualRangeUpdateMode(visualRange, newRange, oppositeVisualRangeUpdateMode);
                        if (visualRangeUpdateMode === KEEP) {
                            that._setVisualRange([visualRange.startValue, visualRange.endValue])
                        } else if (visualRangeUpdateMode === RESET) {
                            that._setVisualRange([null, null])
                        } else if (visualRangeUpdateMode === SHIFT) {
                            that._setVisualRange({
                                length: that.getVisualRangeLength()
                            })
                        }
                    },
                    getVisualRangeLength(range) {
                        const currentBusinessRange = range || this._translator.getBusinessRange();
                        const {
                            type: type
                        } = this._options;
                        let length;
                        if (type === _axes_constants.default.logarithmic) {
                            length = (0, _math2.adjust)(this.calculateInterval(currentBusinessRange.maxVisible, currentBusinessRange.minVisible))
                        } else if (type === _axes_constants.default.discrete) {
                            const categoriesInfo = (0, _utils.getCategoriesInfo)(currentBusinessRange.categories, currentBusinessRange.minVisible, currentBusinessRange.maxVisible);
                            length = categoriesInfo.categories.length
                        } else {
                            length = currentBusinessRange.maxVisible - currentBusinessRange.minVisible
                        }
                        return length
                    },
                    getVisualRangeCenter(range, useMerge) {
                        const translator = this.getTranslator();
                        const businessRange = translator.getBusinessRange();
                        const currentBusinessRange = useMerge ? (0, _extend.extend)(true, {}, businessRange, range || {}) : range || businessRange;
                        const {
                            type: type,
                            logarithmBase: logarithmBase
                        } = this._options;
                        let center;
                        if (!(0, _type.isDefined)(currentBusinessRange.minVisible) || !(0, _type.isDefined)(currentBusinessRange.maxVisible)) {
                            return
                        }
                        if (type === _axes_constants.default.logarithmic) {
                            const {
                                allowNegatives: allowNegatives,
                                linearThreshold: linearThreshold,
                                minVisible: minVisible,
                                maxVisible: maxVisible
                            } = currentBusinessRange;
                            center = (0, _utils.raiseToExt)((0, _math2.adjust)((0, _utils.getLogExt)(maxVisible, logarithmBase, allowNegatives, linearThreshold) + (0, _utils.getLogExt)(minVisible, logarithmBase, allowNegatives, linearThreshold)) / 2, logarithmBase, allowNegatives, linearThreshold)
                        } else if (type === _axes_constants.default.discrete) {
                            const categoriesInfo = (0, _utils.getCategoriesInfo)(currentBusinessRange.categories, currentBusinessRange.minVisible, currentBusinessRange.maxVisible);
                            const index = Math.ceil(categoriesInfo.categories.length / 2) - 1;
                            center = businessRange.categories.indexOf(categoriesInfo.categories[index])
                        } else {
                            center = translator.toValue((currentBusinessRange.maxVisible.valueOf() + currentBusinessRange.minVisible.valueOf()) / 2)
                        }
                        return center
                    },
                    setBusinessRange(range, axisReinitialized, oppositeVisualRangeUpdateMode, argCategories) {
                        var _that$_seriesData$min, _that$_seriesData$max;
                        const that = this;
                        const options = that._options;
                        const isDiscrete = options.type === _axes_constants.default.discrete;
                        that._handleBusinessRangeChanged(oppositeVisualRangeUpdateMode, axisReinitialized, range);
                        that._seriesData = new _range.Range(range);
                        const dataIsEmpty = that._seriesData.isEmpty();
                        const rangeWithConstantLines = new _range.Range(that._seriesData);
                        that._addConstantLinesToRange(rangeWithConstantLines);
                        that._prevDataInfo = {
                            isEmpty: dataIsEmpty,
                            containsConstantLine: rangeWithConstantLines.containsConstantLine
                        };
                        that._seriesData.addRange({
                            categories: options.categories,
                            dataType: options.dataType,
                            axisType: options.type,
                            base: options.logarithmBase,
                            invert: options.inverted
                        });
                        that._resolveLogarithmicOptionsForRange(that._seriesData);
                        if (!isDiscrete) {
                            if (!(0, _type.isDefined)(that._seriesData.min) && !(0, _type.isDefined)(that._seriesData.max)) {
                                const visualRange = that.getViewport();
                                visualRange && that._seriesData.addRange({
                                    min: visualRange.startValue,
                                    max: visualRange.endValue
                                })
                            }
                            const synchronizedValue = options.synchronizedValue;
                            if ((0, _type.isDefined)(synchronizedValue)) {
                                that._seriesData.addRange({
                                    min: synchronizedValue,
                                    max: synchronizedValue
                                })
                            }
                        }
                        that._seriesData.minVisible = null !== (_that$_seriesData$min = that._seriesData.minVisible) && void 0 !== _that$_seriesData$min ? _that$_seriesData$min : that._seriesData.min;
                        that._seriesData.maxVisible = null !== (_that$_seriesData$max = that._seriesData.maxVisible) && void 0 !== _that$_seriesData$max ? _that$_seriesData$max : that._seriesData.max;
                        if (!that.isArgumentAxis && options.showZero) {
                            that._seriesData.correctValueZeroLevel()
                        }
                        that._seriesData.sortCategories(that.getCategoriesSorter(argCategories));
                        that._seriesData.userBreaks = that._seriesData.isEmpty() ? [] : that._getScaleBreaks(options, that._seriesData, that._series, that.isArgumentAxis);
                        that._translator.updateBusinessRange(that._getViewportRange())
                    },
                    _addConstantLinesToRange(dataRange) {
                        this._outsideConstantLines.concat(this._insideConstantLines || []).forEach(cl => {
                            if (cl.options.extendAxis) {
                                const value = cl.getParsedValue();
                                dataRange.addRange({
                                    containsConstantLine: true,
                                    minVisible: value,
                                    maxVisible: value,
                                    min: !(0, _type.isDefined)(dataRange.min) ? value : dataRange.min,
                                    max: !(0, _type.isDefined)(dataRange.max) ? value : dataRange.max
                                })
                            }
                        })
                    },
                    setGroupSeries: function(series) {
                        this._series = series
                    },
                    getLabelsPosition: function() {
                        const options = this._options;
                        const position = options.position;
                        const labelShift = options.label.indentFromAxis + (this._axisShift || 0) + this._constantLabelOffset;
                        const axisPosition = this._axisPosition;
                        return position === TOP || position === LEFT ? axisPosition - labelShift : axisPosition + labelShift
                    },
                    getFormattedValue: function(value, options, point) {
                        const labelOptions = this._options.label;
                        return (0, _type.isDefined)(value) ? this.formatLabel(value, (0, _extend.extend)(true, {}, labelOptions, options), void 0, point) : null
                    },
                    _getBoundaryTicks: function(majors, viewPort) {
                        const that = this;
                        const length = majors.length;
                        const options = that._options;
                        const customBounds = options.customBoundTicks;
                        const min = viewPort.minVisible;
                        const max = viewPort.maxVisible;
                        const addMinMax = options.showCustomBoundaryTicks ? that._boundaryTicksVisibility : {};
                        let boundaryTicks = [];
                        if (options.type === _axes_constants.default.discrete) {
                            if (that._tickOffset && 0 !== majors.length) {
                                boundaryTicks = [majors[0], majors[majors.length - 1]]
                            }
                        } else if (customBounds) {
                            if (addMinMax.min && (0, _type.isDefined)(customBounds[0])) {
                                boundaryTicks.push(customBounds[0])
                            }
                            if (addMinMax.max && (0, _type.isDefined)(customBounds[1])) {
                                boundaryTicks.push(customBounds[1])
                            }
                        } else {
                            if (addMinMax.min && (0 === length || majors[0] > min)) {
                                boundaryTicks.push(min)
                            }
                            if (addMinMax.max && (0 === length || majors[length - 1] < max)) {
                                boundaryTicks.push(max)
                            }
                        }
                        return boundaryTicks
                    },
                    setPercentLabelFormat: function() {
                        if (!this._hasLabelFormat) {
                            this._options.label.format = "percent"
                        }
                    },
                    resetAutoLabelFormat: function() {
                        if (!this._hasLabelFormat) {
                            delete this._options.label.format
                        }
                    },
                    getMultipleAxesSpacing: function() {
                        return this._options.multipleAxesSpacing || 0
                    },
                    getTicksValues: function() {
                        return {
                            majorTicksValues: convertTicksToValues(this._majorTicks),
                            minorTicksValues: convertTicksToValues(this._minorTicks)
                        }
                    },
                    estimateTickInterval: function(canvas) {
                        this.updateCanvas(canvas);
                        return this._tickInterval !== this._getTicks(this._getViewportRange(), _common.noop, true).tickInterval
                    },
                    setTicks: function(ticks) {
                        const majors = ticks.majorTicks || [];
                        this._majorTicks = majors.map(createMajorTick(this, this._renderer, this._getSkippedCategory(majors)));
                        this._minorTicks = (ticks.minorTicks || []).map(createMinorTick(this, this._renderer));
                        this._isSynchronized = true
                    },
                    _adjustDivisionFactor: function(val) {
                        return val
                    },
                    _getTicks: function(viewPort, incidentOccurred, skipTickGeneration) {
                        const options = this._options;
                        const customTicks = options.customTicks;
                        const customMinorTicks = options.customMinorTicks;
                        return getTickGenerator(options, incidentOccurred || this._incidentOccurred, skipTickGeneration, this._translator.getBusinessRange().isEmpty(), this._adjustDivisionFactor.bind(this), viewPort)({
                            min: viewPort.minVisible,
                            max: viewPort.maxVisible,
                            categories: viewPort.categories,
                            isSpacedMargin: viewPort.isSpacedMargin
                        }, this._getScreenDelta(), options.tickInterval, "ignore" === options.label.overlappingBehavior || options.forceUserTickInterval, {
                            majors: customTicks,
                            minors: customMinorTicks
                        }, options.minorTickInterval, options.minorTickCount, this._initialBreaks)
                    },
                    _createTicksAndLabelFormat: function(range, incidentOccurred) {
                        const options = this._options;
                        const ticks = this._getTicks(range, incidentOccurred, false);
                        if (!range.isEmpty() && options.type === _axes_constants.default.discrete && "datetime" === options.dataType && !this._hasLabelFormat && ticks.ticks.length) {
                            options.label.format = _format_helper.default.getDateFormatByTicks(ticks.ticks)
                        }
                        return ticks
                    },
                    getAggregationInfo(useAllAggregatedPoints, range) {
                        var _visualRange$startVal, _visualRange$endValue, _that$_seriesData;
                        const that = this;
                        const options = that._options;
                        const marginOptions = that._marginOptions;
                        const businessRange = new _range.Range(that.getTranslator().getBusinessRange()).addRange(range);
                        const visualRange = that.getViewport();
                        const minVisible = null !== (_visualRange$startVal = null === visualRange || void 0 === visualRange ? void 0 : visualRange.startValue) && void 0 !== _visualRange$startVal ? _visualRange$startVal : businessRange.minVisible;
                        const maxVisible = null !== (_visualRange$endValue = null === visualRange || void 0 === visualRange ? void 0 : visualRange.endValue) && void 0 !== _visualRange$endValue ? _visualRange$endValue : businessRange.maxVisible;
                        let ticks = [];
                        if (options.type === _axes_constants.default.discrete && options.aggregateByCategory) {
                            return {
                                aggregateByCategory: true
                            }
                        }
                        const aggregationInterval = options.aggregationInterval;
                        let aggregationGroupWidth = options.aggregationGroupWidth;
                        if (!aggregationGroupWidth && marginOptions) {
                            if (marginOptions.checkInterval) {
                                aggregationGroupWidth = options.axisDivisionFactor
                            }
                            if (marginOptions.sizePointNormalState) {
                                aggregationGroupWidth = Math.min(marginOptions.sizePointNormalState, options.axisDivisionFactor)
                            }
                        }
                        const minInterval = !options.aggregationGroupWidth && !aggregationInterval && range.interval;
                        const generateTicks = function(options, axisDivisionFactor, viewPort, screenDelta, minTickInterval) {
                            const tickGeneratorOptions = (0, _extend.extend)({}, options, {
                                endOnTick: true,
                                axisDivisionFactor: axisDivisionFactor,
                                skipCalculationLimits: true,
                                generateExtraTick: true,
                                minTickInterval: minTickInterval
                            });
                            return function(tickInterval, skipTickGeneration, min, max, breaks) {
                                return getTickGenerator(tickGeneratorOptions, _common.noop, skipTickGeneration, viewPort.isEmpty(), v => v, viewPort)({
                                    min: min,
                                    max: max,
                                    categories: viewPort.categories,
                                    isSpacedMargin: viewPort.isSpacedMargin
                                }, screenDelta, tickInterval, (0, _type.isDefined)(tickInterval), void 0, void 0, void 0, breaks)
                            }
                        }(options, aggregationGroupWidth, businessRange, that._getScreenDelta(), minInterval);
                        const tickInterval = generateTicks(aggregationInterval, true, minVisible, maxVisible, null === (_that$_seriesData = that._seriesData) || void 0 === _that$_seriesData ? void 0 : _that$_seriesData.breaks).tickInterval;
                        if (options.type !== _axes_constants.default.discrete) {
                            const min = useAllAggregatedPoints ? businessRange.min : minVisible;
                            const max = useAllAggregatedPoints ? businessRange.max : maxVisible;
                            if ((0, _type.isDefined)(min) && (0, _type.isDefined)(max)) {
                                const add = (0, _utils.getAddFunction)({
                                    base: options.logarithmBase,
                                    axisType: options.type,
                                    dataType: options.dataType
                                }, false);
                                let start = min;
                                let end = max;
                                if (!useAllAggregatedPoints && (0, _type.isDefined)(tickInterval)) {
                                    const maxMinDistance = Math.max(that.calculateInterval(max, min), "datetime" === options.dataType ? _date.default.dateToMilliseconds(tickInterval) : tickInterval);
                                    start = add(min, maxMinDistance, -1);
                                    end = add(max, maxMinDistance)
                                }
                                start = start < businessRange.min ? businessRange.min : start;
                                end = end > businessRange.max ? businessRange.max : end;
                                const breaks = that._getScaleBreaks(options, {
                                    minVisible: start,
                                    maxVisible: end
                                }, that._series, that.isArgumentAxis);
                                const filteredBreaks = that._filterBreaks(breaks, {
                                    minVisible: start,
                                    maxVisible: end
                                }, options.breakStyle);
                                ticks = generateTicks(tickInterval, false, start, end, filteredBreaks).ticks
                            }
                        }
                        that._aggregationInterval = tickInterval;
                        return {
                            interval: tickInterval,
                            ticks: ticks
                        }
                    },
                    getTickInterval() {
                        return this._tickInterval
                    },
                    getAggregationInterval() {
                        return this._aggregationInterval
                    },
                    createTicks: function(canvas) {
                        const that = this;
                        const renderer = that._renderer;
                        const options = that._options;
                        if (!canvas) {
                            return
                        }
                        that._isSynchronized = false;
                        that.updateCanvas(canvas);
                        const range = that._getViewportRange();
                        that._initialBreaks = range.breaks = this._seriesData.breaks = that._filterBreaks(this._seriesData.userBreaks, range, options.breakStyle);
                        that._estimatedTickInterval = that._getTicks(that.adjustViewport(this._seriesData), _common.noop, true).tickInterval;
                        const margins = this._calculateValueMargins();
                        range.addRange({
                            minVisible: margins.minValue,
                            maxVisible: margins.maxValue,
                            isSpacedMargin: margins.isSpacedMargin
                        });
                        const ticks = that._createTicksAndLabelFormat(range);
                        const boundaryTicks = that._getBoundaryTicks(ticks.ticks, that._getViewportRange());
                        if (options.showCustomBoundaryTicks && boundaryTicks.length) {
                            that._boundaryTicks = [boundaryTicks[0]].map(createBoundaryTick(that, renderer, true));
                            if (boundaryTicks.length > 1) {
                                that._boundaryTicks = that._boundaryTicks.concat([boundaryTicks[1]].map(createBoundaryTick(that, renderer, false)))
                            }
                        } else {
                            that._boundaryTicks = []
                        }
                        const minors = (ticks.minorTicks || []).filter((function(minor) {
                            return !boundaryTicks.some((function(boundary) {
                                return (0, _utils.valueOf)(boundary) === (0, _utils.valueOf)(minor)
                            }))
                        }));
                        that._tickInterval = ticks.tickInterval;
                        that._minorTickInterval = ticks.minorTickInterval;
                        const oldMajorTicks = that._majorTicks || [];
                        const majorTicksByValues = oldMajorTicks.reduce((r, t) => {
                            r[t.value.valueOf()] = t;
                            return r
                        }, {});
                        const sameType = (0, _type.type)(ticks.ticks[0]) === (0, _type.type)(oldMajorTicks[0] && oldMajorTicks[0].value);
                        const skippedCategory = that._getSkippedCategory(ticks.ticks);
                        const majorTicks = ticks.ticks.map(v => {
                            const tick = majorTicksByValues[v.valueOf()];
                            if (tick && sameType) {
                                delete majorTicksByValues[v.valueOf()];
                                tick.setSkippedCategory(skippedCategory);
                                return tick
                            } else {
                                return createMajorTick(that, renderer, skippedCategory)(v)
                            }
                        });
                        that._majorTicks = majorTicks;
                        const oldMinorTicks = that._minorTicks || [];
                        that._minorTicks = minors.map((v, i) => {
                            const minorTick = oldMinorTicks[i];
                            if (minorTick) {
                                minorTick.updateValue(v);
                                return minorTick
                            }
                            return createMinorTick(that, renderer)(v)
                        });
                        that._ticksToRemove = Object.keys(majorTicksByValues).map(k => majorTicksByValues[k]).concat(oldMinorTicks.slice(that._minorTicks.length, oldMinorTicks.length));
                        that._ticksToRemove.forEach(t => {
                            var _t$label;
                            return null === (_t$label = t.label) || void 0 === _t$label ? void 0 : _t$label.removeTitle()
                        });
                        if (ticks.breaks) {
                            that._seriesData.breaks = ticks.breaks
                        }
                        that._reinitTranslator(that._getViewportRange())
                    },
                    _reinitTranslator: function(range) {
                        const translator = this._translator;
                        if (this._isSynchronized) {
                            return
                        }
                        translator.updateBusinessRange(range)
                    },
                    _getViewportRange() {
                        return this.adjustViewport(this._seriesData)
                    },
                    setMarginOptions: function(options) {
                        this._marginOptions = options
                    },
                    getMarginOptions() {
                        var _this$_marginOptions;
                        return null !== (_this$_marginOptions = this._marginOptions) && void 0 !== _this$_marginOptions ? _this$_marginOptions : {}
                    },
                    _calculateRangeInterval: function(interval) {
                        const isDateTime = "datetime" === this._options.dataType;
                        const minArgs = [];
                        const addToArgs = function(value) {
                            (0, _type.isDefined)(value) && minArgs.push(isDateTime ? _date.default.dateToMilliseconds(value) : value)
                        };
                        addToArgs(this._tickInterval);
                        addToArgs(this._estimatedTickInterval);
                        (0, _type.isDefined)(interval) && minArgs.push(interval);
                        addToArgs(this._aggregationInterval);
                        return this._calculateWorkWeekInterval(_min.apply(this, minArgs))
                    },
                    _calculateWorkWeekInterval(businessInterval) {
                        const options = this._options;
                        if ("datetime" === options.dataType && options.workdaysOnly && businessInterval) {
                            const workWeek = options.workWeek.length * dateIntervals_day;
                            const weekend = dateIntervals_week - workWeek;
                            if (workWeek !== businessInterval && weekend < businessInterval) {
                                const weekendsCount = Math.ceil(businessInterval / dateIntervals_week);
                                businessInterval -= weekend * weekendsCount
                            } else if (weekend >= businessInterval && businessInterval > dateIntervals_day) {
                                businessInterval = dateIntervals_day
                            }
                        }
                        return businessInterval
                    },
                    _getConvertIntervalCoefficient(intervalInPx, screenDelta) {
                        const ratioOfCanvasRange = this._translator.ratioOfCanvasRange();
                        return ratioOfCanvasRange / (ratioOfCanvasRange * screenDelta / (intervalInPx + screenDelta))
                    },
                    _calculateValueMargins(ticks) {
                        this._resetMargins();
                        const that = this;
                        const margins = that.getMarginOptions();
                        const marginSize = (margins.size || 0) / 2;
                        const options = that._options;
                        const dataRange = that._getViewportRange();
                        const viewPort = that.getViewport();
                        const screenDelta = that._getScreenDelta();
                        const isDiscrete = -1 !== (options.type || "").indexOf(_axes_constants.default.discrete);
                        const valueMarginsEnabled = options.valueMarginsEnabled && !isDiscrete && !that.customPositionIsBoundaryOrthogonalAxis();
                        const translator = that._translator;
                        const minValueMargin = options.minValueMargin;
                        const maxValueMargin = options.maxValueMargin;
                        let minPadding = 0;
                        let maxPadding = 0;
                        let interval = 0;
                        let rangeInterval;
                        if (dataRange.stubData || !screenDelta) {
                            return {
                                startPadding: 0,
                                endPadding: 0
                            }
                        }
                        if (that.isArgumentAxis && margins.checkInterval) {
                            rangeInterval = that._calculateRangeInterval(dataRange.interval);
                            const pxInterval = translator.getInterval(rangeInterval);
                            if (isFinite(pxInterval)) {
                                interval = Math.ceil(pxInterval / (2 * that._getConvertIntervalCoefficient(pxInterval, screenDelta)))
                            } else {
                                rangeInterval = 0
                            }
                        }
                        let minPercentPadding;
                        let maxPercentPadding;
                        const maxPaddingValue = .8 * screenDelta / 2;
                        if (valueMarginsEnabled) {
                            if ((0, _type.isDefined)(minValueMargin)) {
                                minPercentPadding = isFinite(minValueMargin) ? minValueMargin : 0
                            } else if (!that.isArgumentAxis && margins.checkInterval && (0, _utils.valueOf)(dataRange.minVisible) > 0 && (0, _utils.valueOf)(dataRange.minVisible) === (0, _utils.valueOf)(dataRange.min)) {
                                minPadding = 5
                            } else {
                                minPadding = Math.max(marginSize, interval);
                                minPadding = Math.min(maxPaddingValue, minPadding)
                            }
                            if ((0, _type.isDefined)(maxValueMargin)) {
                                maxPercentPadding = isFinite(maxValueMargin) ? maxValueMargin : 0
                            } else if (!that.isArgumentAxis && margins.checkInterval && (0, _utils.valueOf)(dataRange.maxVisible) < 0 && (0, _utils.valueOf)(dataRange.maxVisible) === (0, _utils.valueOf)(dataRange.max)) {
                                maxPadding = 5
                            } else {
                                maxPadding = Math.max(marginSize, interval);
                                maxPadding = Math.min(maxPaddingValue, maxPadding)
                            }
                        }
                        const percentStick = margins.percentStick && !this.isArgumentAxis;
                        if (percentStick) {
                            if (1 === _abs(dataRange.max)) {
                                maxPadding = 0
                            }
                            if (1 === _abs(dataRange.min)) {
                                minPadding = 0
                            }
                        }
                        const canvasStartEnd = that._getCanvasStartEnd();
                        const commonMargin = 1 + (minPercentPadding || 0) + (maxPercentPadding || 0);
                        const screenDeltaWithMargins = (screenDelta - minPadding - maxPadding) / commonMargin || screenDelta;
                        if (void 0 !== minPercentPadding || void 0 !== maxPercentPadding) {
                            if (void 0 !== minPercentPadding) {
                                minPadding = screenDeltaWithMargins * minPercentPadding
                            }
                            if (void 0 !== maxPercentPadding) {
                                maxPadding = screenDeltaWithMargins * maxPercentPadding
                            }
                        }
                        let minValue;
                        let maxValue;
                        if (options.type !== _axes_constants.default.discrete && ticks && ticks.length > 1 && !options.skipViewportExtending && !viewPort.action && false !== options.endOnTick) {
                            const length = ticks.length;
                            const firstTickPosition = translator.translate(ticks[0].value);
                            const lastTickPosition = translator.translate(ticks[length - 1].value);
                            const invertMultiplier = firstTickPosition > lastTickPosition ? -1 : 1;
                            const minTickPadding = _max(invertMultiplier * (canvasStartEnd.start - firstTickPosition), 0);
                            const maxTickPadding = _max(invertMultiplier * (lastTickPosition - canvasStartEnd.end), 0);
                            if (minTickPadding > minPadding || maxTickPadding > maxPadding) {
                                const commonPadding = maxTickPadding + minTickPadding;
                                const coeff = that._getConvertIntervalCoefficient(commonPadding, screenDelta);
                                if (minTickPadding >= minPadding) {
                                    minValue = ticks[0].value
                                }
                                if (maxTickPadding >= maxPadding) {
                                    maxValue = ticks[length - 1].value
                                }
                                minPadding = _max(minTickPadding, minPadding) / coeff;
                                maxPadding = _max(maxTickPadding, maxPadding) / coeff
                            }
                        }
                        minPercentPadding = void 0 === minPercentPadding ? minPadding / screenDeltaWithMargins : minPercentPadding;
                        maxPercentPadding = void 0 === maxPercentPadding ? maxPadding / screenDeltaWithMargins : maxPercentPadding;
                        if (!isDiscrete) {
                            if (this._translator.isInverted()) {
                                var _minValue, _maxValue;
                                minValue = null !== (_minValue = minValue) && void 0 !== _minValue ? _minValue : translator.from(canvasStartEnd.start + screenDelta * minPercentPadding, -1);
                                maxValue = null !== (_maxValue = maxValue) && void 0 !== _maxValue ? _maxValue : translator.from(canvasStartEnd.end - screenDelta * maxPercentPadding, 1)
                            } else {
                                var _minValue2, _maxValue2;
                                minValue = null !== (_minValue2 = minValue) && void 0 !== _minValue2 ? _minValue2 : translator.from(canvasStartEnd.start - screenDelta * minPercentPadding, -1);
                                maxValue = null !== (_maxValue2 = maxValue) && void 0 !== _maxValue2 ? _maxValue2 : translator.from(canvasStartEnd.end + screenDelta * maxPercentPadding, 1)
                            }
                        }
                        const {
                            correctedMin: correctedMin,
                            correctedMax: correctedMax,
                            start: start,
                            end: end
                        } = that.getCorrectedValuesToZero(minValue, maxValue);
                        minPadding = null !== start && void 0 !== start ? start : minPadding;
                        maxPadding = null !== end && void 0 !== end ? end : maxPadding;
                        return {
                            startPadding: translator.isInverted() ? maxPadding : minPadding,
                            endPadding: translator.isInverted() ? minPadding : maxPadding,
                            minValue: null !== correctedMin && void 0 !== correctedMin ? correctedMin : minValue,
                            maxValue: null !== correctedMax && void 0 !== correctedMax ? correctedMax : maxValue,
                            interval: rangeInterval,
                            isSpacedMargin: minPadding === maxPadding && 0 !== minPadding
                        }
                    },
                    getCorrectedValuesToZero(minValue, maxValue) {
                        const that = this;
                        const translator = that._translator;
                        const canvasStartEnd = that._getCanvasStartEnd();
                        const dataRange = that._getViewportRange();
                        const screenDelta = that._getScreenDelta();
                        const options = that._options;
                        let start;
                        let end;
                        let correctedMin;
                        let correctedMax;
                        const correctZeroLevel = (minPoint, maxPoint) => {
                            const minExpectedPadding = _abs(canvasStartEnd.start - minPoint);
                            const maxExpectedPadding = _abs(canvasStartEnd.end - maxPoint);
                            const coeff = that._getConvertIntervalCoefficient(minExpectedPadding + maxExpectedPadding, screenDelta);
                            start = minExpectedPadding / coeff;
                            end = maxExpectedPadding / coeff
                        };
                        if (!that.isArgumentAxis && "datetime" !== options.dataType) {
                            if (minValue * dataRange.min <= 0 && minValue * dataRange.minVisible <= 0) {
                                correctZeroLevel(translator.translate(0), translator.translate(maxValue));
                                correctedMin = 0
                            }
                            if (maxValue * dataRange.max <= 0 && maxValue * dataRange.maxVisible <= 0) {
                                correctZeroLevel(translator.translate(minValue), translator.translate(0));
                                correctedMax = 0
                            }
                        }
                        return {
                            start: isFinite(start) ? start : null,
                            end: isFinite(end) ? end : null,
                            correctedMin: correctedMin,
                            correctedMax: correctedMax
                        }
                    },
                    applyMargins() {
                        if (this._isSynchronized) {
                            return
                        }
                        const margins = this._calculateValueMargins(this._majorTicks);
                        const canvas = (0, _extend.extend)({}, this._canvas, {
                            startPadding: margins.startPadding,
                            endPadding: margins.endPadding
                        });
                        this._translator.updateCanvas(this._processCanvas(canvas));
                        if (isFinite(margins.interval)) {
                            const br = this._translator.getBusinessRange();
                            br.addRange({
                                interval: margins.interval
                            });
                            this._translator.updateBusinessRange(br)
                        }
                    },
                    _resetMargins: function() {
                        this._reinitTranslator(this._getViewportRange());
                        if (this._canvas) {
                            this._translator.updateCanvas(this._processCanvas(this._canvas))
                        }
                    },
                    _createConstantLines() {
                        const constantLines = (this._options.constantLines || []).map(o => (0, _constant_line.default)(this, o));
                        this._outsideConstantLines = constantLines.filter(l => "outside" === l.labelPosition);
                        this._insideConstantLines = constantLines.filter(l => "inside" === l.labelPosition)
                    },
                    draw: function(canvas, borderOptions) {
                        const that = this;
                        const options = this._options;
                        that.borderOptions = borderOptions || {
                            visible: false
                        };
                        that._resetMargins();
                        that.createTicks(canvas);
                        that.applyMargins();
                        that._clearAxisGroups();
                        initTickCoords(that._majorTicks);
                        initTickCoords(that._minorTicks);
                        initTickCoords(that._boundaryTicks);
                        that._axisGroup.append(that._axesContainerGroup);
                        that._drawAxis();
                        that._drawTitle();
                        drawTickMarks(that._majorTicks, options.tick);
                        drawTickMarks(that._minorTicks, options.minorTick);
                        drawTickMarks(that._boundaryTicks, options.tick);
                        const drawGridLine = that._getGridLineDrawer();
                        drawGrids(that._majorTicks, drawGridLine);
                        drawGrids(that._minorTicks, drawGridLine);
                        callAction(that._majorTicks, "drawLabel", that._getViewportRange(), that._getTemplate(options.label.template));
                        that._templatesRendered && that._templatesRendered.reject();
                        that._templatesRendered = new _deferred.Deferred;
                        that._majorTicks.forEach((function(tick) {
                            tick.labelRotationAngle = 0;
                            tick.labelAlignment = void 0;
                            tick.labelOffset = 0
                        }));
                        callAction(that._outsideConstantLines.concat(that._insideConstantLines), "draw");
                        callAction(that._strips, "draw");
                        that._dateMarkers = that._drawDateMarkers() || [];
                        that._stripLabelAxesGroup && that._axisStripLabelGroup.append(that._stripLabelAxesGroup);
                        that._gridContainerGroup && that._axisGridGroup.append(that._gridContainerGroup);
                        that._stripsGroup && that._axisStripGroup.append(that._stripsGroup);
                        that._labelsAxesGroup && that._axisElementsGroup.append(that._labelsAxesGroup);
                        if (that._constantLinesGroup) {
                            that._axisConstantLineGroups.above.inside.append(that._constantLinesGroup.above);
                            that._axisConstantLineGroups.above.outside1.append(that._constantLinesGroup.above);
                            that._axisConstantLineGroups.above.outside2.append(that._constantLinesGroup.above);
                            that._axisConstantLineGroups.under.inside.append(that._constantLinesGroup.under);
                            that._axisConstantLineGroups.under.outside1.append(that._constantLinesGroup.under);
                            that._axisConstantLineGroups.under.outside2.append(that._constantLinesGroup.under)
                        }
                        that._measureTitle();
                        (0, _axes_utils.measureLabels)(that._majorTicks);
                        !options.label.template && that._applyWordWrap();
                        (0, _axes_utils.measureLabels)(that._outsideConstantLines);
                        (0, _axes_utils.measureLabels)(that._insideConstantLines);
                        (0, _axes_utils.measureLabels)(that._strips);
                        (0, _axes_utils.measureLabels)(that._dateMarkers);
                        that._adjustConstantLineLabels(that._insideConstantLines);
                        that._adjustStripLabels();
                        let offset = that._constantLabelOffset = that._adjustConstantLineLabels(that._outsideConstantLines);
                        if (!that._translator.getBusinessRange().isEmpty()) {
                            that._setLabelsPlacement();
                            offset = that._adjustLabels(offset)
                        }
                        _deferred.when.apply(this, that._majorTicks.map(tick => tick.getTemplateDeferred())).done(() => {
                            that._templatesRendered.resolve()
                        });
                        offset = that._adjustDateMarkers(offset);
                        that._adjustTitle(offset)
                    },
                    getTemplatesDef() {
                        return this._templatesRendered
                    },
                    setRenderedState(state) {
                        this._drawn = state
                    },
                    isRendered() {
                        return this._drawn
                    },
                    _applyWordWrap() {
                        const that = this;
                        let convertedTickInterval;
                        let textWidth;
                        let textHeight;
                        const options = this._options;
                        const tickInterval = that._tickInterval;
                        if ((0, _type.isDefined)(tickInterval)) {
                            convertedTickInterval = that.getTranslator().getInterval("datetime" === options.dataType ? _date.default.dateToMilliseconds(tickInterval) : tickInterval)
                        }
                        const displayMode = that._validateDisplayMode(options.label.displayMode);
                        const overlappingMode = that._validateOverlappingMode(options.label.overlappingBehavior, displayMode);
                        const wordWrapMode = options.label.wordWrap || "none";
                        const overflowMode = options.label.textOverflow || "none";
                        if (("none" !== wordWrapMode || "none" !== overflowMode) && "rotate" !== displayMode && "rotate" !== overlappingMode && "auto" !== overlappingMode) {
                            const usefulSpace = (0, _type.isDefined)(options.placeholderSize) ? options.placeholderSize - options.label.indentFromAxis : void 0;
                            if (that._isHorizontal) {
                                textWidth = convertedTickInterval;
                                textHeight = usefulSpace
                            } else {
                                textWidth = usefulSpace;
                                textHeight = convertedTickInterval
                            }
                            let correctByWidth = false;
                            let correctByHeight = false;
                            if (textWidth) {
                                if (that._majorTicks.some(tick => tick.labelBBox.width > textWidth)) {
                                    correctByWidth = true
                                }
                            }
                            if (textHeight) {
                                if (that._majorTicks.some(tick => tick.labelBBox.height > textHeight)) {
                                    correctByHeight = true
                                }
                            }
                            if (correctByWidth || correctByHeight) {
                                that._majorTicks.forEach(tick => {
                                    tick.label && tick.label.setMaxSize(textWidth, textHeight, options.label)
                                });
                                (0, _axes_utils.measureLabels)(that._majorTicks)
                            }
                        }
                    },
                    _measureTitle: _common.noop,
                    animate() {
                        callAction(this._majorTicks, "animateLabels")
                    },
                    updateSize(canvas, animate) {
                        let updateTitle = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : true;
                        const that = this;
                        that.updateCanvas(canvas);
                        if (updateTitle) {
                            that._checkTitleOverflow();
                            that._measureTitle();
                            that._updateTitleCoords()
                        }
                        that._reinitTranslator(that._getViewportRange());
                        that.applyMargins();
                        const animationEnabled = !that._firstDrawing && animate;
                        const options = that._options;
                        initTickCoords(that._majorTicks);
                        initTickCoords(that._minorTicks);
                        initTickCoords(that._boundaryTicks);
                        if (that._resetApplyingAnimation && !that._firstDrawing) {
                            that._resetStartCoordinates()
                        }
                        cleanUpInvalidTicks(that._majorTicks);
                        cleanUpInvalidTicks(that._minorTicks);
                        cleanUpInvalidTicks(that._boundaryTicks);
                        if (that._axisElement) {
                            that._updateAxisElementPosition()
                        }
                        updateTicksPosition(that._majorTicks, options.tick, animationEnabled);
                        updateTicksPosition(that._minorTicks, options.minorTick, animationEnabled);
                        updateTicksPosition(that._boundaryTicks, options.tick);
                        callAction(that._majorTicks, "updateLabelPosition", animationEnabled);
                        that._outsideConstantLines.concat(that._insideConstantLines || []).forEach(l => l.updatePosition(animationEnabled));
                        callAction(that._strips, "updatePosition", animationEnabled);
                        updateGridsPosition(that._majorTicks, animationEnabled);
                        updateGridsPosition(that._minorTicks, animationEnabled);
                        if (animationEnabled) {
                            callAction(that._ticksToRemove || [], "fadeOutElements")
                        }
                        that.prepareAnimation();
                        that._ticksToRemove = null;
                        if (!that._translator.getBusinessRange().isEmpty()) {
                            that._firstDrawing = false
                        }
                        that._resetApplyingAnimation = false;
                        that._updateLabelsPosition()
                    },
                    _updateLabelsPosition: _common.noop,
                    prepareAnimation() {
                        const action = "saveCoords";
                        callAction(this._majorTicks, action);
                        callAction(this._minorTicks, action);
                        callAction(this._insideConstantLines, action);
                        callAction(this._outsideConstantLines, action);
                        callAction(this._strips, action)
                    },
                    _resetStartCoordinates() {
                        const action = "resetCoordinates";
                        callAction(this._majorTicks, action);
                        callAction(this._minorTicks, action);
                        callAction(this._insideConstantLines, action);
                        callAction(this._outsideConstantLines, action);
                        callAction(this._strips, action)
                    },
                    applyClipRects: function(elementsClipID, canvasClipID) {
                        this._axisGroup.attr({
                            "clip-path": canvasClipID
                        });
                        this._axisStripGroup.attr({
                            "clip-path": elementsClipID
                        });
                        this._axisElementsGroup.attr({
                            "clip-path": canvasClipID
                        })
                    },
                    _validateVisualRange(optionValue) {
                        const range = (0, _utils.getVizRangeObject)(optionValue);
                        if (void 0 !== range.startValue) {
                            range.startValue = this.validateUnit(range.startValue)
                        }
                        if (void 0 !== range.endValue) {
                            range.endValue = this.validateUnit(range.endValue)
                        }
                        return (0, _utils.convertVisualRangeObject)(range, !_isArray(optionValue))
                    },
                    _validateOptions(options) {
                        options.wholeRange = this._validateVisualRange(options.wholeRange);
                        options.visualRange = options._customVisualRange = this._validateVisualRange(options._customVisualRange);
                        this._setVisualRange(options._customVisualRange)
                    },
                    validate() {
                        const options = this._options;
                        const dataType = this.isArgumentAxis ? options.argumentType : options.valueType;
                        const parser = dataType ? (0, _parse_utils.getParser)(dataType) : function(unit) {
                            return unit
                        };
                        this.parser = parser;
                        options.dataType = dataType;
                        this._validateOptions(options)
                    },
                    resetVisualRange(isSilent) {
                        this._seriesData.minVisible = this._seriesData.min;
                        this._seriesData.maxVisible = this._seriesData.max;
                        this.handleZooming([null, null], {
                            start: !!isSilent,
                            end: !!isSilent
                        })
                    },
                    _setVisualRange(visualRange, allowPartialUpdate) {
                        const range = this.adjustRange((0, _utils.getVizRangeObject)(visualRange));
                        if (allowPartialUpdate) {
                            (0, _type.isDefined)(range.startValue) && (this._viewport.startValue = range.startValue);
                            (0, _type.isDefined)(range.endValue) && (this._viewport.endValue = range.endValue)
                        } else {
                            this._viewport = range
                        }
                    },
                    _applyZooming(visualRange, allowPartialUpdate) {
                        this._resetVisualRangeOption();
                        this._setVisualRange(visualRange, allowPartialUpdate);
                        const viewPort = this.getViewport();
                        this._seriesData.userBreaks = this._getScaleBreaks(this._options, {
                            minVisible: viewPort.startValue,
                            maxVisible: viewPort.endValue
                        }, this._series, this.isArgumentAxis);
                        this._translator.updateBusinessRange(this._getViewportRange())
                    },
                    getZoomStartEventArg(event, actionType) {
                        return {
                            axis: this,
                            range: this.visualRange(),
                            cancel: false,
                            event: event,
                            actionType: actionType
                        }
                    },
                    _getZoomEndEventArg(previousRange, event, actionType, zoomFactor, shift) {
                        const newRange = this.visualRange();
                        return {
                            axis: this,
                            previousRange: previousRange,
                            range: newRange,
                            cancel: false,
                            event: event,
                            actionType: actionType,
                            zoomFactor: zoomFactor,
                            shift: shift,
                            rangeStart: newRange.startValue,
                            rangeEnd: newRange.endValue
                        }
                    },
                    getZoomBounds() {
                        const wholeRange = (0, _utils.getVizRangeObject)(this._options.wholeRange);
                        const range = this.getTranslator().getBusinessRange();
                        const secondPriorityRange = {
                            startValue: getZoomBoundValue(this._initRange.startValue, range.min),
                            endValue: getZoomBoundValue(this._initRange.endValue, range.max)
                        };
                        return {
                            startValue: getZoomBoundValue(wholeRange.startValue, secondPriorityRange.startValue),
                            endValue: getZoomBoundValue(wholeRange.endValue, secondPriorityRange.endValue)
                        }
                    },
                    setInitRange() {
                        this._initRange = {};
                        if (0 === Object.keys(this._options.wholeRange || {}).length) {
                            this._initRange = this.getZoomBounds()
                        }
                    },
                    _resetVisualRangeOption() {
                        this._options._customVisualRange = {}
                    },
                    getTemplatesGroups() {
                        const ticks = this._majorTicks;
                        if (ticks) {
                            return this._majorTicks.map(tick => tick.templateContainer).filter(item => (0, _type.isDefined)(item))
                        } else {
                            return []
                        }
                    },
                    setCustomVisualRange(range) {
                        this._options._customVisualRange = range
                    },
                    visualRange() {
                        const that = this;
                        const args = arguments;
                        let visualRange;
                        if (0 === args.length) {
                            const adjustedRange = that._getAdjustedBusinessRange();
                            let startValue = adjustedRange.minVisible;
                            let endValue = adjustedRange.maxVisible;
                            if (that._options.type === _axes_constants.default.discrete) {
                                var _startValue, _endValue;
                                startValue = null !== (_startValue = startValue) && void 0 !== _startValue ? _startValue : adjustedRange.categories[0];
                                endValue = null !== (_endValue = endValue) && void 0 !== _endValue ? _endValue : adjustedRange.categories[adjustedRange.categories.length - 1];
                                return {
                                    startValue: startValue,
                                    endValue: endValue,
                                    categories: (0, _utils.getCategoriesInfo)(adjustedRange.categories, startValue, endValue).categories
                                }
                            }
                            return {
                                startValue: startValue,
                                endValue: endValue
                            }
                        } else if (_isArray(args[0])) {
                            visualRange = args[0]
                        } else if ((0, _type.isPlainObject)(args[0])) {
                            visualRange = (0, _extend.extend)({}, args[0])
                        } else {
                            visualRange = [args[0], args[1]]
                        }
                        const zoomResults = that.handleZooming(visualRange, args[1]);
                        if (!zoomResults.isPrevented) {
                            that._visualRange(that, zoomResults)
                        }
                    },
                    handleZooming(visualRange, preventEvents, domEvent, action) {
                        const that = this;
                        preventEvents = preventEvents || {};
                        if ((0, _type.isDefined)(visualRange)) {
                            visualRange = that._validateVisualRange(visualRange);
                            visualRange.action = action
                        }
                        const zoomStartEvent = that.getZoomStartEventArg(domEvent, action);
                        const previousRange = zoomStartEvent.range;
                        !preventEvents.start && that._eventTrigger("zoomStart", zoomStartEvent);
                        const zoomResults = {
                            isPrevented: zoomStartEvent.cancel,
                            skipEventRising: preventEvents.skipEventRising,
                            range: visualRange || zoomStartEvent.range
                        };
                        if (!zoomStartEvent.cancel) {
                            (0, _type.isDefined)(visualRange) && that._applyZooming(visualRange, preventEvents.allowPartialUpdate);
                            if (!(0, _type.isDefined)(that._storedZoomEndParams)) {
                                that._storedZoomEndParams = {
                                    startRange: previousRange,
                                    type: this.getOptions().type
                                }
                            }
                            that._storedZoomEndParams.event = domEvent;
                            that._storedZoomEndParams.action = action;
                            that._storedZoomEndParams.prevent = !!preventEvents.end
                        }
                        return zoomResults
                    },
                    handleZoomEnd() {
                        const that = this;
                        if ((0, _type.isDefined)(that._storedZoomEndParams) && !that._storedZoomEndParams.prevent) {
                            const previousRange = that._storedZoomEndParams.startRange;
                            const domEvent = that._storedZoomEndParams.event;
                            const action = that._storedZoomEndParams.action;
                            const previousBusinessRange = {
                                minVisible: previousRange.startValue,
                                maxVisible: previousRange.endValue,
                                categories: previousRange.categories
                            };
                            const typeIsNotChanged = that.getOptions().type === that._storedZoomEndParams.type;
                            const shift = typeIsNotChanged ? (0, _math2.adjust)(that.getVisualRangeCenter() - that.getVisualRangeCenter(previousBusinessRange, false)) : NaN;
                            const zoomFactor = typeIsNotChanged ? +(Math.round(that.getVisualRangeLength(previousBusinessRange) / (that.getVisualRangeLength() || 1) + "e+2") + "e-2") : NaN;
                            const zoomEndEvent = that._getZoomEndEventArg(previousRange, domEvent, action, zoomFactor, shift);
                            zoomEndEvent.cancel = that.checkZoomingLowerLimitOvercome(1 === zoomFactor ? "pan" : "zoom", zoomFactor).stopInteraction;
                            that._eventTrigger("zoomEnd", zoomEndEvent);
                            if (zoomEndEvent.cancel) {
                                that._restorePreviousVisualRange(previousRange)
                            }
                            that._storedZoomEndParams = null
                        }
                    },
                    _restorePreviousVisualRange(previousRange) {
                        this._storedZoomEndParams = null;
                        this._applyZooming(previousRange);
                        this._visualRange(this, previousRange)
                    },
                    checkZoomingLowerLimitOvercome(actionType, zoomFactor, range) {
                        const that = this;
                        const options = that._options;
                        const translator = that._translator;
                        let minZoom = options.minVisualRangeLength;
                        let correctedRange = range;
                        let visualRange;
                        let isOvercoming = "zoom" === actionType && zoomFactor >= 1;
                        const businessRange = translator.getBusinessRange();
                        if (range) {
                            visualRange = that.adjustRange((0, _utils.getVizRangeObject)(range));
                            visualRange = {
                                minVisible: visualRange.startValue,
                                maxVisible: visualRange.endValue,
                                categories: businessRange.categories
                            }
                        }
                        const beforeVisualRangeLength = that.getVisualRangeLength(businessRange);
                        const afterVisualRangeLength = that.getVisualRangeLength(visualRange);
                        if ((0, _type.isDefined)(minZoom) || "discrete" === options.type) {
                            minZoom = translator.convert(minZoom);
                            if (visualRange && minZoom < beforeVisualRangeLength && minZoom >= afterVisualRangeLength) {
                                correctedRange = (0, _utils.getVizRangeObject)(translator.getRangeByMinZoomValue(minZoom, visualRange));
                                isOvercoming = false
                            } else {
                                isOvercoming &= minZoom > afterVisualRangeLength
                            }
                        } else {
                            const canvasLength = that._translator.canvasLength;
                            const fullRange = {
                                minVisible: businessRange.min,
                                maxVisible: businessRange.max,
                                categories: businessRange.categories
                            };
                            isOvercoming &= that.getVisualRangeLength(fullRange) / canvasLength >= afterVisualRangeLength
                        }
                        return {
                            stopInteraction: !!isOvercoming,
                            correctedRange: correctedRange
                        }
                    },
                    isExtremePosition(isMax) {
                        let extremeDataValue;
                        let seriesData;
                        if ("discrete" === this._options.type) {
                            seriesData = this._translator.getBusinessRange();
                            extremeDataValue = isMax ? seriesData.categories[seriesData.categories.length - 1] : seriesData.categories[0]
                        } else {
                            seriesData = this.getZoomBounds();
                            extremeDataValue = isMax ? seriesData.endValue : seriesData.startValue
                        }
                        const translator = this.getTranslator();
                        const extremePoint = translator.translate(extremeDataValue);
                        const visualRange = this.visualRange();
                        const visualRangePoint = isMax ? translator.translate(visualRange.endValue) : translator.translate(visualRange.startValue);
                        return _abs(visualRangePoint - extremePoint) < 5
                    },
                    getViewport() {
                        return this._viewport
                    },
                    getFullTicks: function() {
                        const majors = this._majorTicks || [];
                        if (this._options.type === _axes_constants.default.discrete) {
                            return convertTicksToValues(majors)
                        } else {
                            return convertTicksToValues(majors.concat(this._minorTicks, this._boundaryTicks)).sort((function(a, b) {
                                return (0, _utils.valueOf)(a) - (0, _utils.valueOf)(b)
                            }))
                        }
                    },
                    measureLabels: function(canvas, withIndents) {
                        const that = this;
                        const options = that._options;
                        const widthAxis = options.visible ? options.width : 0;
                        let ticks;
                        const indent = withIndents ? options.label.indentFromAxis + .5 * options.tick.length : 0;
                        let tickInterval;
                        const viewportRange = that._getViewportRange();
                        if (viewportRange.isEmpty() || !options.label.visible || !that._axisElementsGroup) {
                            return {
                                height: widthAxis,
                                width: widthAxis,
                                x: 0,
                                y: 0
                            }
                        }
                        if (that._majorTicks) {
                            ticks = convertTicksToValues(that._majorTicks)
                        } else {
                            that.updateCanvas(canvas);
                            ticks = that._createTicksAndLabelFormat(viewportRange, _common.noop);
                            tickInterval = ticks.tickInterval;
                            ticks = ticks.ticks
                        }
                        const maxText = ticks.reduce((function(prevLabel, tick, index) {
                            const label = that.formatLabel(tick, options.label, viewportRange, void 0, tickInterval, ticks);
                            if (prevLabel.length < label.length) {
                                return label
                            } else {
                                return prevLabel
                            }
                        }), that.formatLabel(ticks[0], options.label, viewportRange, void 0, tickInterval, ticks));
                        const text = that._renderer.text(maxText, 0, 0).css(that._textFontStyles).attr(that._textOptions).append(that._renderer.root);
                        const box = text.getBBox();
                        text.remove();
                        return {
                            x: box.x,
                            y: box.y,
                            width: box.width + indent,
                            height: box.height + indent
                        }
                    },
                    _setLabelsPlacement: function() {
                        if (!this._options.label.visible) {
                            return
                        }
                        const that = this;
                        const labelOpt = that._options.label;
                        const displayMode = that._validateDisplayMode(labelOpt.displayMode);
                        const overlappingMode = that._validateOverlappingMode(labelOpt.overlappingBehavior, displayMode);
                        const ignoreOverlapping = "none" === overlappingMode || "ignore" === overlappingMode;
                        const behavior = {
                            rotationAngle: labelOpt.rotationAngle,
                            staggeringSpacing: labelOpt.staggeringSpacing
                        };
                        let notRecastStep;
                        const boxes = that._majorTicks.map((function(tick) {
                            return tick.labelBBox
                        }));
                        let step = that._getStep(boxes);
                        switch (displayMode) {
                            case "rotate":
                                if (ignoreOverlapping) {
                                    notRecastStep = true;
                                    step = 1
                                }
                                that._applyLabelMode(displayMode, step, boxes, labelOpt, notRecastStep);
                                break;
                            case "stagger":
                                if (ignoreOverlapping) {
                                    step = 2
                                }
                                that._applyLabelMode(displayMode, _max(step, 2), boxes, labelOpt);
                                break;
                            default:
                                that._applyLabelOverlapping(boxes, overlappingMode, step, behavior)
                        }
                    },
                    _applyLabelOverlapping: function(boxes, mode, step, behavior) {
                        const that = this;
                        const labelOpt = that._options.label;
                        const majorTicks = that._majorTicks;
                        if ("none" === mode || "ignore" === mode) {
                            return
                        }
                        if (step > 1 && boxes.some((function(box, index, array) {
                                if (0 === index) {
                                    return false
                                }
                                return _axes_constants.default.areLabelsOverlap(box, array[index - 1], labelOpt.minSpacing, labelOpt.alignment)
                            }))) {
                            that._applyLabelMode(mode, step, boxes, behavior)
                        }
                        that._checkBoundedLabelsOverlapping(majorTicks, boxes, mode);
                        that._checkShiftedLabels(majorTicks, boxes, labelOpt.minSpacing, labelOpt.alignment)
                    },
                    _applyLabelMode: function(mode, step, boxes, behavior, notRecastStep) {
                        const that = this;
                        const majorTicks = that._majorTicks;
                        const labelOpt = that._options.label;
                        const angle = behavior.rotationAngle;
                        let labelHeight;
                        let alignment;
                        let func;
                        switch (mode) {
                            case "rotate":
                                if (!labelOpt.userAlignment) {
                                    alignment = angle < 0 ? RIGHT : LEFT;
                                    if (angle % 90 === 0) {
                                        alignment = CENTER
                                    }
                                }
                                step = notRecastStep ? step : that._getStep(boxes, angle);
                                func = function(tick) {
                                    const contentContainer = tick.getContentContainer();
                                    if (!contentContainer) {
                                        return
                                    }
                                    contentContainer.rotate(angle);
                                    tick.labelRotationAngle = angle;
                                    alignment && (tick.labelAlignment = alignment)
                                };
                                updateLabels(majorTicks, step, func);
                                break;
                            case "stagger":
                                labelHeight = that._getMaxLabelHeight(boxes, behavior.staggeringSpacing);
                                func = function(tick, index) {
                                    if (index / (step - 1) % 2 !== 0) {
                                        tick.labelOffset = labelHeight
                                    }
                                };
                                updateLabels(majorTicks, step - 1, func);
                                break;
                            case "auto":
                            case "_auto":
                                if (2 === step) {
                                    that._applyLabelMode("stagger", step, boxes, behavior)
                                } else {
                                    that._applyLabelMode("rotate", step, boxes, {
                                        rotationAngle: getOptimalAngle(boxes, labelOpt)
                                    })
                                }
                                break;
                            default:
                                updateLabels(majorTicks, step)
                        }
                    },
                    getMarkerTrackers: _common.noop,
                    _drawDateMarkers: _common.noop,
                    _adjustDateMarkers: _common.noop,
                    coordsIn: _common.noop,
                    areCoordsOutsideAxis: _common.noop,
                    _getSkippedCategory: _common.noop,
                    _initAxisPositions: _common.noop,
                    _drawTitle: _common.noop,
                    _updateTitleCoords: _common.noop,
                    _adjustConstantLineLabels: _common.noop,
                    _createTranslator: function() {
                        return new _translator2d.Translator2D({}, {}, {})
                    },
                    _updateTranslator: function() {
                        const translator = this._translator;
                        translator.update(translator.getBusinessRange(), this._canvas || {}, this._getTranslatorOptions())
                    },
                    _getTranslatorOptions: function() {
                        var _options$workWeek2, _options$breakStyle$w, _options$breakStyle;
                        const options = this._options;
                        return {
                            isHorizontal: this._isHorizontal,
                            shiftZeroValue: !this.isArgumentAxis,
                            interval: options.semiDiscreteInterval,
                            firstDayOfWeek: null === (_options$workWeek2 = options.workWeek) || void 0 === _options$workWeek2 ? void 0 : _options$workWeek2[0],
                            stick: this._getStick(),
                            breaksSize: null !== (_options$breakStyle$w = null === (_options$breakStyle = options.breakStyle) || void 0 === _options$breakStyle ? void 0 : _options$breakStyle.width) && void 0 !== _options$breakStyle$w ? _options$breakStyle$w : 0
                        }
                    },
                    getVisibleArea() {
                        const canvas = this._getCanvasStartEnd();
                        return [canvas.start, canvas.end].sort((a, b) => a - b)
                    },
                    _getCanvasStartEnd: function() {
                        const isHorizontal = this._isHorizontal;
                        const canvas = this._canvas || {};
                        const invert = this._translator.getBusinessRange().invert;
                        const coords = isHorizontal ? [canvas.left, canvas.width - canvas.right] : [canvas.height - canvas.bottom, canvas.top];
                        invert && coords.reverse();
                        return {
                            start: coords[0],
                            end: coords[1]
                        }
                    },
                    _getScreenDelta: function() {
                        const canvas = this._getCanvasStartEnd();
                        const breaks = this._seriesData ? this._seriesData.breaks || [] : [];
                        const breaksLength = breaks.length;
                        const screenDelta = _abs(canvas.start - canvas.end);
                        return screenDelta - (breaksLength ? breaks[breaksLength - 1].cumulativeWidth : 0)
                    },
                    _getScaleBreaks: function() {
                        return []
                    },
                    _filterBreaks: function() {
                        return []
                    },
                    _adjustTitle: _common.noop,
                    _checkTitleOverflow: _common.noop,
                    getSpiderTicks: _common.noop,
                    setSpiderTicks: _common.noop,
                    _checkBoundedLabelsOverlapping: _common.noop,
                    _checkShiftedLabels: _common.noop,
                    drawScaleBreaks: _common.noop,
                    _visualRange: _common.noop,
                    _rotateConstantLine: _common.noop,
                    applyVisualRangeSetter(visualRangeSetter) {
                        this._visualRange = visualRangeSetter
                    },
                    getCategoriesSorter(argCategories) {
                        let sort;
                        if (this.isArgumentAxis) {
                            sort = argCategories
                        } else {
                            const categoriesSortingMethod = this._options.categoriesSortingMethod;
                            sort = null !== categoriesSortingMethod && void 0 !== categoriesSortingMethod ? categoriesSortingMethod : this._options.categories
                        }
                        return sort
                    },
                    _getAdjustedBusinessRange() {
                        return this.adjustViewport(this._translator.getBusinessRange())
                    }
                }
            },
        87713:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/axes/constant_line.js ***!
              \***********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = function(axis, options) {
                    const labelOptions = options.label || {};
                    const labelPosition = labelOptions.position || "inside";
                    let parsedValue;
                    let valueIsParsed = false;
                    let lastStoredCoordinates;
                    axis._checkAlignmentConstantLineLabels(labelOptions);
                    let storedCoord;
                    return {
                        options: options,
                        labelOptions: labelOptions,
                        labelPosition: labelPosition,
                        label: null,
                        line: null,
                        getParsedValue() {
                            if (!valueIsParsed) {
                                parsedValue = axis.validateUnit(options.value, "E2105", "constantLine");
                                valueIsParsed = true;
                                return parsedValue
                            }
                            return parsedValue
                        },
                        draw() {
                            if (!(0, _type.isDefined)(options.value) || axis._translator.getBusinessRange().isEmpty()) {
                                return this
                            }
                            const canvas = axis._getCanvasStartEnd();
                            const parsedValue = this.getParsedValue();
                            this.coord = axis._getConstantLinePos(parsedValue, canvas.start, canvas.end);
                            const rootGroup = options.displayBehindSeries ? axis._axisConstantLineGroups.under : axis._axisConstantLineGroups.above;
                            let group = rootGroup[labelPosition];
                            if (!group) {
                                const side = axis._isHorizontal ? labelOptions.verticalAlignment : labelOptions.horizontalAlignment;
                                group = rootGroup[side]
                            }
                            if (!(0, _type.isDefined)(this.coord)) {
                                return this
                            }
                            const path = axis._createConstantLine(this.coord, {
                                stroke: options.color,
                                "stroke-width": options.width,
                                dashStyle: options.dashStyle
                            });
                            this.line = path.append(rootGroup.inside);
                            this.label = labelOptions.visible ? axis._drawConstantLineLabels(parsedValue, labelOptions, this.coord, group) : null;
                            this.updatePosition();
                            return this
                        },
                        getContentContainer() {
                            return this.label
                        },
                        removeLabel() {
                            this.label && this.label.remove()
                        },
                        updatePosition(animate) {
                            const canvas = axis._getCanvasStartEnd();
                            const coord = axis._getConstantLinePos(this.getParsedValue(), canvas.start, canvas.end);
                            if (!(0, _type.isDefined)(coord)) {
                                return
                            }
                            this.coord = coord;
                            if (animate && storedCoord) {
                                this.label && this.label.attr(axis._getConstantLineLabelsCoords(storedCoord, this.labelOptions));
                                this.line && this.line.attr(axis._getConstantLineGraphicAttributes(storedCoord));
                                this.label && this.label.animate(axis._getConstantLineLabelsCoords(this.coord, this.labelOptions));
                                this.line && this.line.animate(axis._getConstantLineGraphicAttributes(this.coord))
                            } else {
                                this.label && this.label.attr(axis._getConstantLineLabelsCoords(this.coord, this.labelOptions));
                                this.line && this.line.attr(axis._getConstantLineGraphicAttributes(this.coord));
                                axis._rotateConstantLine(this.line, this.coord)
                            }
                        },
                        saveCoords() {
                            lastStoredCoordinates = storedCoord;
                            storedCoord = this.coord
                        },
                        resetCoordinates() {
                            storedCoord = lastStoredCoordinates
                        }
                    }
                };
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        89530:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/axes/datetime_breaks.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.generateDateBreaks = function(min, max, workWeek, singleWorkdays, holidays) {
                    const weekendDayIndices = function(workDays) {
                        const indices = (workdays = workDays, days.filter((function(day) {
                            return !workdays.some((function(workDay) {
                                return workDay === day
                            }))
                        })));
                        var workdays;
                        if (indices.length < 7) {
                            while (getNextDayIndex(indices[indices.length - 1]) === indices[0]) {
                                indices.unshift(indices.pop())
                            }
                        }
                        return indices
                    }(workWeek);
                    const breaks = function(min, max, weekendDayIndices) {
                        let day = min.getDate();
                        const breaks = [];
                        const weekends = weekendDayIndices.reduce((function(obj, day) {
                            let currentWeekEnd = obj[1];
                            if (void 0 === currentWeekEnd.start) {
                                currentWeekEnd = {
                                    start: day,
                                    end: getNextDayIndex(day)
                                };
                                obj[0].push(currentWeekEnd);
                                return [obj[0], currentWeekEnd]
                            } else if (currentWeekEnd.end === day) {
                                currentWeekEnd.end = getNextDayIndex(day);
                                return obj
                            }
                            currentWeekEnd = {
                                start: day,
                                end: getNextDayIndex(day)
                            };
                            obj[0].push(currentWeekEnd);
                            return [obj[0], currentWeekEnd]
                        }), [
                            [], {}
                        ]);
                        weekends[0].forEach((function(weekend) {
                            let currentDate = new Date(min);
                            currentDate = _date.default.trimTime(currentDate);
                            while (currentDate < max) {
                                day = currentDate.getDay();
                                const date = currentDate.getDate();
                                if (dayBetweenWeekend(weekend, day)) {
                                    const from = new Date(currentDate);
                                    currentDate.setDate(date + getDaysDistance(day, weekend.end));
                                    const to = new Date(currentDate);
                                    breaks.push({
                                        from: from,
                                        to: to
                                    })
                                }
                                currentDate.setDate(currentDate.getDate() + 1)
                            }
                        }));
                        return breaks
                    }(min, max, weekendDayIndices);
                    breaks.push.apply(breaks, function(min, max, holidays, weekendDayIndices) {
                        let day;
                        const dayInWeekend = function(dayIndex) {
                            return dayIndex === day
                        };
                        const adjustedMin = _date.default.trimTime(min);
                        const adjustedMax = _date.default.trimTime(max);
                        adjustedMax.setDate(max.getDate() + 1);
                        return holidays.reduce((function(breaks, holiday) {
                            let holidayStart;
                            let holidayEnd;
                            holiday = new Date(holiday);
                            day = holiday.getDay();
                            if (!weekendDayIndices.some(dayInWeekend) && holiday >= adjustedMin && holiday <= adjustedMax) {
                                holidayStart = _date.default.trimTime(holiday);
                                holidayEnd = new Date(holidayStart);
                                holidayEnd.setDate(holidayStart.getDate() + 1);
                                breaks.push({
                                    from: holidayStart,
                                    to: holidayEnd
                                })
                            }
                            return breaks
                        }), [])
                    }(min, max, holidays || [], weekendDayIndices));
                    return function(breaks) {
                        return breaks.map((function(b) {
                            return {
                                from: b.from,
                                to: b.to,
                                gapSize: _date.default.convertMillisecondsToDateUnits(b.to - b.from)
                            }
                        }))
                    }(function(breaks, exactWorkDays) {
                        const result = breaks.slice();
                        let i;
                        const processWorkDay = function(workday) {
                            workday = _date.default.trimTime(new Date(workday));
                            if (result[i].from <= workday && result[i].to > workday) {
                                const separatedBreak = function(scaleBreak, day) {
                                    const result = [];
                                    const dayEnd = new Date(day);
                                    dayEnd.setDate(day.getDate() + 1);
                                    if (day > scaleBreak.from) {
                                        result.push({
                                            from: scaleBreak.from,
                                            to: day
                                        })
                                    }
                                    if (dayEnd < scaleBreak.to) {
                                        result.push({
                                            from: dayEnd,
                                            to: scaleBreak.to
                                        })
                                    }
                                    return result
                                }(result[i], workday);
                                if (2 === separatedBreak.length) {
                                    result.splice(i, 1, separatedBreak[0], separatedBreak[1])
                                } else if (1 === separatedBreak.length) {
                                    result.splice(i, 1, separatedBreak[0])
                                } else {
                                    result.splice(i, 1)
                                }
                            }
                        };
                        for (i = 0; i < result.length; i++) {
                            exactWorkDays.forEach(processWorkDay)
                        }
                        return result
                    }(breaks, singleWorkdays || []))
                };
                var _date = (obj = __webpack_require__( /*! ../../core/utils/date */ 91198), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const days = [0, 1, 2, 3, 4, 5, 6];

                function getNextDayIndex(dayIndex) {
                    return (dayIndex + 1) % 7
                }

                function dayBetweenWeekend(weekend, day) {
                    let start = weekend.start;
                    const end = weekend.end;
                    while (start !== end) {
                        if (start === day) {
                            return true
                        }
                        start = getNextDayIndex(start)
                    }
                    return false
                }

                function getDaysDistance(day, end) {
                    let length = 0;
                    while (day !== end) {
                        day = getNextDayIndex(day);
                        length++
                    }
                    return length
                }
            },
        4331:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/axes/polar_axes.js ***!
              \********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.linearSpider = exports.linear = exports.circularSpider = exports.circular = void 0;
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _axes_constants = _interopRequireDefault(__webpack_require__( /*! ./axes_constants */ 53805));
                var _xy_axes = _interopRequireDefault(__webpack_require__( /*! ./xy_axes */ 99415));
                var _tick = __webpack_require__( /*! ./tick */ 41013);
                var _axes_utils = __webpack_require__( /*! ./axes_utils */ 32945);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const {
                    PI: PI,
                    abs: abs,
                    atan: atan,
                    round: round
                } = Math;
                const _min = Math.min;
                const _max = Math.max;
                const xyAxesLinear = _xy_axes.default.linear;

                function getPolarQuarter(angle) {
                    let quarter;
                    angle = (0, _utils.normalizeAngle)(angle);
                    if (angle >= 315 && angle <= 360 || angle < 45 && angle >= 0) {
                        quarter = 1
                    } else if (angle >= 45 && angle < 135) {
                        quarter = 2
                    } else if (angle >= 135 && angle < 225) {
                        quarter = 3
                    } else if (angle >= 225 && angle < 315) {
                        quarter = 4
                    }
                    return quarter
                }
                const circularAxes = {
                    _calculateValueMargins(ticks) {
                        let {
                            minVisible: minVisible,
                            maxVisible: maxVisible
                        } = this._getViewportRange();
                        if (ticks && ticks.length > 1) {
                            minVisible = minVisible < ticks[0].value ? minVisible : ticks[0].value;
                            maxVisible = minVisible > ticks[ticks.length - 1].value ? maxVisible : ticks[ticks.length - 1].value
                        }
                        return {
                            minValue: minVisible,
                            maxValue: maxVisible
                        }
                    },
                    applyMargins() {
                        const margins = this._calculateValueMargins(this._majorTicks);
                        const br = this._translator.getBusinessRange();
                        br.addRange({
                            minVisible: margins.minValue,
                            maxVisible: margins.maxValue,
                            interval: this._calculateRangeInterval(br.interval)
                        });
                        this._translator.updateBusinessRange(br)
                    },
                    _getTranslatorOptions: function() {
                        return {
                            isHorizontal: true,
                            conversionValue: true,
                            addSpiderCategory: this._getSpiderCategoryOption(),
                            stick: this._getStick()
                        }
                    },
                    getCenter: function() {
                        return this._center
                    },
                    getRadius: function() {
                        return this._radius
                    },
                    getAngles: function() {
                        const options = this._options;
                        return [options.startAngle, options.endAngle]
                    },
                    _updateRadius(canvas) {
                        const rad = _min(canvas.width - canvas.left - canvas.right, canvas.height - canvas.top - canvas.bottom) / 2;
                        this._radius = rad < 0 ? 0 : rad
                    },
                    _updateCenter: function(canvas) {
                        this._center = {
                            x: canvas.left + (canvas.width - canvas.right - canvas.left) / 2,
                            y: canvas.top + (canvas.height - canvas.top - canvas.bottom) / 2
                        }
                    },
                    _processCanvas: function(canvas) {
                        this._updateRadius(canvas);
                        this._updateCenter(canvas);
                        return {
                            left: 0,
                            right: 0,
                            width: this._getScreenDelta()
                        }
                    },
                    _createAxisElement: function() {
                        return this._renderer.circle()
                    },
                    _updateAxisElementPosition: function() {
                        const center = this.getCenter();
                        this._axisElement.attr({
                            cx: center.x,
                            cy: center.y,
                            r: this.getRadius()
                        })
                    },
                    _boundaryTicksVisibility: {
                        min: true
                    },
                    _getSpiderCategoryOption: function() {
                        return this._options.firstPointOnStartAngle
                    },
                    _validateOptions(options) {
                        const that = this;
                        let originValue = options.originValue;
                        const wholeRange = options.wholeRange = {};
                        const period = options.period;
                        if ((0, _type.isDefined)(originValue)) {
                            originValue = that.validateUnit(originValue)
                        }
                        if (period > 0 && options.argumentType === _axes_constants.default.numeric) {
                            originValue = originValue || 0;
                            wholeRange.endValue = originValue + period;
                            that._viewport = (0, _utils.getVizRangeObject)([originValue, wholeRange.endValue])
                        }
                        if ((0, _type.isDefined)(originValue)) {
                            wholeRange.startValue = originValue
                        }
                    },
                    getMargins() {
                        const tickOptions = this._options.tick;
                        const tickOuterLength = _max(tickOptions.visible ? tickOptions.length / 2 + tickOptions.shift : 0, 0);
                        const radius = this.getRadius();
                        const {
                            x: x,
                            y: y
                        } = this._center;
                        const labelBoxes = this._majorTicks.map(t => t.label && t.label.getBBox()).filter(b => b);
                        const canvas = (0, _extend.extend)({}, this._canvas, {
                            left: x - radius,
                            top: y - radius,
                            right: this._canvas.width - (x + radius),
                            bottom: this._canvas.height - (y + radius)
                        });
                        const margins = (0, _axes_utils.calculateCanvasMargins)(labelBoxes, canvas);
                        Object.keys(margins).forEach(k => margins[k] = margins[k] < tickOuterLength ? tickOuterLength : margins[k]);
                        return margins
                    },
                    _updateLabelsPosition() {
                        (0, _axes_utils.measureLabels)(this._majorTicks);
                        this._adjustLabelsCoord(0, 0, true);
                        this._checkBoundedLabelsOverlapping(this._majorTicks, this._majorTicks.map(t => t.labelBBox))
                    },
                    _setVisualRange: _common.noop,
                    applyVisualRangeSetter: _common.noop,
                    _getStick: function() {
                        return this._options.firstPointOnStartAngle || this._options.type !== _axes_constants.default.discrete
                    },
                    _getTranslatedCoord: function(value, offset) {
                        return this._translator.translate(value, offset) - 90
                    },
                    _getCanvasStartEnd: function() {
                        return {
                            start: -90,
                            end: 270
                        }
                    },
                    _getStripGraphicAttributes: function(fromAngle, toAngle) {
                        const center = this.getCenter();
                        const angle = this.getAngles()[0];
                        const r = this.getRadius();
                        return {
                            x: center.x,
                            y: center.y,
                            innerRadius: 0,
                            outerRadius: r,
                            startAngle: -toAngle - angle,
                            endAngle: -fromAngle - angle
                        }
                    },
                    _createStrip: function(coords) {
                        return this._renderer.arc(coords.x, coords.y, coords.innerRadius, coords.outerRadius, coords.startAngle, coords.endAngle)
                    },
                    _getStripLabelCoords: function(from, to) {
                        const coords = this._getStripGraphicAttributes(from, to);
                        const angle = coords.startAngle + (coords.endAngle - coords.startAngle) / 2;
                        const cosSin = (0, _utils.getCosAndSin)(angle);
                        const halfRad = this.getRadius() / 2;
                        const center = this.getCenter();
                        const x = round(center.x + halfRad * cosSin.cos);
                        const y = round(center.y - halfRad * cosSin.sin);
                        return {
                            x: x,
                            y: y,
                            align: _axes_constants.default.center
                        }
                    },
                    _getConstantLineGraphicAttributes: function(value) {
                        const center = this.getCenter();
                        const r = this.getRadius();
                        return {
                            points: [center.x, center.y, center.x + r, center.y]
                        }
                    },
                    _createConstantLine: function(value, attr) {
                        return this._createPathElement(this._getConstantLineGraphicAttributes(value).points, attr)
                    },
                    _rotateConstantLine(line, value) {
                        const {
                            x: x,
                            y: y
                        } = this.getCenter();
                        line.rotate(value + this.getAngles()[0], x, y)
                    },
                    _getConstantLineLabelsCoords: function(value) {
                        const cosSin = (0, _utils.getCosAndSin)(-value - this.getAngles()[0]);
                        const halfRad = this.getRadius() / 2;
                        const center = this.getCenter();
                        const x = round(center.x + halfRad * cosSin.cos);
                        const y = round(center.y - halfRad * cosSin.sin);
                        return {
                            x: x,
                            y: y
                        }
                    },
                    _checkAlignmentConstantLineLabels: _common.noop,
                    _adjustDivisionFactor: function(val) {
                        return 180 * val / (this.getRadius() * PI)
                    },
                    _getScreenDelta: function() {
                        const angles = this.getAngles();
                        return abs(angles[0] - angles[1])
                    },
                    _getTickMarkPoints: function(coords, length, _ref) {
                        let {
                            shift: shift = 0
                        } = _ref;
                        const center = this.getCenter();
                        const radiusWithTicks = this.getRadius() + length * {
                            inside: -1,
                            center: -.5,
                            outside: 0
                        } [this._options.tickOrientation || "center"];
                        return [center.x + radiusWithTicks + shift, center.y, center.x + radiusWithTicks + length + shift, center.y]
                    },
                    _getLabelAdjustedCoord: function(tick, _offset, _maxWidth, checkCanvas) {
                        const that = this;
                        const labelCoords = tick.labelCoords;
                        const labelY = labelCoords.y;
                        const labelAngle = labelCoords.angle;
                        const cosSin = (0, _utils.getCosAndSin)(labelAngle);
                        const cos = cosSin.cos;
                        const sin = cosSin.sin;
                        const box = tick.labelBBox;
                        const halfWidth = box.width / 2;
                        const halfHeight = box.height / 2;
                        const indentFromAxis = that._options.label.indentFromAxis || 0;
                        const x = labelCoords.x + indentFromAxis * cos;
                        const y = labelY + (labelY - box.y - halfHeight) + indentFromAxis * sin;
                        let shiftX = 0;
                        let shiftY = 0;
                        switch (getPolarQuarter(labelAngle)) {
                            case 1:
                                shiftX = halfWidth;
                                shiftY = halfHeight * sin;
                                break;
                            case 2:
                                shiftX = halfWidth * cos;
                                shiftY = halfHeight;
                                break;
                            case 3:
                                shiftX = -halfWidth;
                                shiftY = halfHeight * sin;
                                break;
                            case 4:
                                shiftX = halfWidth * cos;
                                shiftY = -halfHeight
                        }
                        if (checkCanvas) {
                            const canvas = that._canvas;
                            const boxShiftX = x - labelCoords.x + shiftX;
                            const boxShiftY = y - labelCoords.y + shiftY;
                            if (box.x + boxShiftX < canvas.originalLeft) {
                                shiftX -= box.x + boxShiftX - canvas.originalLeft
                            }
                            if (box.x + box.width + boxShiftX > canvas.width - canvas.originalRight) {
                                shiftX -= box.x + box.width + boxShiftX - (canvas.width - canvas.originalRight)
                            }
                            if (box.y + boxShiftY < canvas.originalTop) {
                                shiftY -= box.y + boxShiftY - canvas.originalTop
                            }
                            if (box.y + box.height + boxShiftY > canvas.height - canvas.originalBottom) {
                                shiftY -= box.y + box.height + boxShiftY - (canvas.height - canvas.originalBottom)
                            }
                        }
                        return {
                            x: x + shiftX,
                            y: y + shiftY
                        }
                    },
                    _getGridLineDrawer: function() {
                        const that = this;
                        return function(tick, gridStyle) {
                            const center = that.getCenter();
                            return that._createPathElement(that._getGridPoints().points, gridStyle).rotate(tick.coords.angle, center.x, center.y)
                        }
                    },
                    _getGridPoints: function() {
                        const r = this.getRadius();
                        const center = this.getCenter();
                        return {
                            points: [center.x, center.y, center.x + r, center.y]
                        }
                    },
                    _getTranslatedValue: function(value, offset) {
                        const startAngle = this.getAngles()[0];
                        const angle = this._translator.translate(value, -offset);
                        const coords = (0, _utils.convertPolarToXY)(this.getCenter(), startAngle, angle, this.getRadius());
                        return {
                            x: coords.x,
                            y: coords.y,
                            angle: this.getTranslatedAngle(angle)
                        }
                    },
                    _getAdjustedStripLabelCoords: function(strip) {
                        const box = strip.labelBBox;
                        return {
                            translateY: strip.label.attr("y") - box.y - box.height / 2
                        }
                    },
                    coordsIn: function(x, y) {
                        return (0, _utils.convertXYToPolar)(this.getCenter(), x, y).r > this.getRadius()
                    },
                    _rotateTick: function(element, coords) {
                        const center = this.getCenter();
                        element.rotate(coords.angle, center.x, center.y)
                    },
                    _validateOverlappingMode: function(mode) {
                        return _axes_constants.default.validateOverlappingMode(mode)
                    },
                    _validateDisplayMode: function() {
                        return "standard"
                    },
                    _getStep: function(boxes) {
                        const radius = this.getRadius() + (this._options.label.indentFromAxis || 0);
                        const maxLabelBox = boxes.reduce((function(prevValue, box) {
                            const curValue = prevValue;
                            if (prevValue.width < box.width) {
                                curValue.width = box.width
                            }
                            if (prevValue.height < box.height) {
                                curValue.height = box.height
                            }
                            return curValue
                        }), {
                            width: 0,
                            height: 0
                        });
                        const angle1 = abs(2 * atan(maxLabelBox.height / (2 * radius - maxLabelBox.width)) * 180 / PI);
                        const angle2 = abs(2 * atan(maxLabelBox.width / (2 * radius - maxLabelBox.height)) * 180 / PI);
                        return _axes_constants.default.getTicksCountInRange(this._majorTicks, "angle", _max(angle1, angle2))
                    },
                    _checkBoundedLabelsOverlapping: function(majorTicks, boxes, mode) {
                        const labelOpt = this._options.label;
                        mode = mode || this._validateOverlappingMode(labelOpt.overlappingBehavior);
                        if ("hide" !== mode) {
                            return
                        }
                        const lastVisibleLabelIndex = majorTicks.reduce((lastVisibleLabelIndex, tick, index) => tick.label ? index : lastVisibleLabelIndex, null);
                        if (!lastVisibleLabelIndex) {
                            return
                        }
                        if (_axes_constants.default.areLabelsOverlap(boxes[0], boxes[lastVisibleLabelIndex], labelOpt.minSpacing, _axes_constants.default.center)) {
                            "first" === labelOpt.hideFirstOrLast ? majorTicks[0].removeLabel() : majorTicks[lastVisibleLabelIndex].removeLabel()
                        }
                    },
                    shift: function(margins) {
                        this._axisGroup.attr({
                            translateX: margins.right,
                            translateY: margins.bottom
                        });
                        this._axisElementsGroup.attr({
                            translateX: margins.right,
                            translateY: margins.bottom
                        })
                    },
                    getTranslatedAngle(angle) {
                        const startAngle = this.getAngles()[0];
                        return angle + startAngle - 90
                    }
                };
                const circular = circularAxes;
                exports.circular = circular;
                const circularSpider = (0, _extend.extend)({}, circularAxes, {
                    _createAxisElement: function() {
                        return this._renderer.path([], "area")
                    },
                    _updateAxisElementPosition: function() {
                        this._axisElement.attr({
                            points: (0, _utils.map)(this.getSpiderTicks(), (function(tick) {
                                return {
                                    x: tick.coords.x,
                                    y: tick.coords.y
                                }
                            }))
                        })
                    },
                    _getStick: function() {
                        return true
                    },
                    _getSpiderCategoryOption: function() {
                        return true
                    },
                    getSpiderTicks: function() {
                        const ticks = this.getFullTicks();
                        this._spiderTicks = ticks.map((0, _tick.tick)(this, this.renderer, {}, {}, this._getSkippedCategory(ticks), true));
                        this._spiderTicks.forEach((function(tick) {
                            tick.initCoords()
                        }));
                        return this._spiderTicks
                    },
                    _getStripGraphicAttributes: function(fromAngle, toAngle) {
                        const center = this.getCenter();
                        const spiderTicks = this.getSpiderTicks();
                        let firstTick;
                        let lastTick;
                        let nextTick;
                        let tick;
                        const points = [];
                        let i = 0;
                        const len = spiderTicks.length;
                        while (i < len) {
                            tick = spiderTicks[i].coords;
                            if (tick.angle >= fromAngle && tick.angle <= toAngle) {
                                if (!firstTick) {
                                    firstTick = (spiderTicks[i - 1] || spiderTicks[spiderTicks.length - 1]).coords;
                                    points.push((tick.x + firstTick.x) / 2, (tick.y + firstTick.y) / 2)
                                }
                                points.push(tick.x, tick.y);
                                nextTick = (spiderTicks[i + 1] || spiderTicks[0]).coords;
                                lastTick = {
                                    x: (tick.x + nextTick.x) / 2,
                                    y: (tick.y + nextTick.y) / 2
                                }
                            }
                            i++
                        }
                        points.push(lastTick.x, lastTick.y);
                        points.push(center.x, center.y);
                        return {
                            points: points
                        }
                    },
                    _createStrip: function(_ref2) {
                        let {
                            points: points
                        } = _ref2;
                        return this._renderer.path(points, "area")
                    },
                    _getTranslatedCoord: function(value, offset) {
                        return this._translator.translate(value, offset) - 90
                    },
                    _setTickOffset: function() {
                        this._tickOffset = false
                    }
                });
                exports.circularSpider = circularSpider;
                const linear = {
                    _resetMargins() {
                        this._reinitTranslator(this._getViewportRange())
                    },
                    _getStick: xyAxesLinear._getStick,
                    _getSpiderCategoryOption: _common.noop,
                    _getTranslatorOptions: function() {
                        return {
                            isHorizontal: true,
                            stick: this._getStick()
                        }
                    },
                    getRadius: circularAxes.getRadius,
                    getCenter: circularAxes.getCenter,
                    getAngles: circularAxes.getAngles,
                    _updateRadius: circularAxes._updateRadius,
                    _updateCenter: circularAxes._updateCenter,
                    _processCanvas(canvas) {
                        this._updateRadius(canvas);
                        this._updateCenter(canvas);
                        return {
                            left: 0,
                            right: 0,
                            startPadding: canvas.startPadding,
                            endPadding: canvas.endPadding,
                            width: this.getRadius()
                        }
                    },
                    _createAxisElement: xyAxesLinear._createAxisElement,
                    _updateAxisElementPosition: function() {
                        const centerCoord = this.getCenter();
                        this._axisElement.attr({
                            points: [centerCoord.x, centerCoord.y, centerCoord.x + this.getRadius(), centerCoord.y]
                        }).rotate(this.getAngles()[0] - 90, centerCoord.x, centerCoord.y)
                    },
                    _getScreenDelta: function() {
                        return this.getRadius()
                    },
                    _getTickMarkPoints: function(coords, length) {
                        return [coords.x - length / 2, coords.y, coords.x + length / 2, coords.y]
                    },
                    _getLabelAdjustedCoord: function(tick) {
                        const labelCoords = tick.labelCoords;
                        const labelY = labelCoords.y;
                        const cosSin = (0, _utils.getCosAndSin)(labelCoords.angle);
                        const indentFromAxis = this._options.label.indentFromAxis || 0;
                        const box = tick.labelBBox;
                        const x = labelCoords.x - abs(indentFromAxis * cosSin.sin) + abs(box.width / 2 * cosSin.cos) - box.width / 2;
                        const y = labelY + (labelY - box.y) - abs(box.height / 2 * cosSin.sin) + abs(indentFromAxis * cosSin.cos);
                        return {
                            x: x,
                            y: y
                        }
                    },
                    _getGridLineDrawer: function() {
                        const that = this;
                        return function(tick, gridStyle) {
                            const grid = that._getGridPoints(tick.coords);
                            return that._renderer.circle(grid.cx, grid.cy, grid.r).attr(gridStyle).sharp()
                        }
                    },
                    _getGridPoints: function(coords) {
                        const pos = this.getCenter();
                        const radius = (0, _utils.getDistance)(pos.x, pos.y, coords.x, coords.y);
                        if (radius > this.getRadius()) {
                            return {
                                cx: null,
                                cy: null,
                                r: null
                            }
                        }
                        return {
                            cx: pos.x,
                            cy: pos.y,
                            r: radius
                        }
                    },
                    _getTranslatedValue: function(value, offset) {
                        const startAngle = this.getAngles()[0];
                        const xy = (0, _utils.convertPolarToXY)(this.getCenter(), startAngle, 0, this._translator.translate(value, offset));
                        return {
                            x: xy.x,
                            y: xy.y,
                            angle: startAngle - 90
                        }
                    },
                    _getTranslatedCoord: function(value, offset) {
                        return this._translator.translate(value, offset)
                    },
                    _getCanvasStartEnd() {
                        const invert = this.getTranslator().getBusinessRange().invert;
                        const coords = [0, this.getRadius()];
                        invert && coords.reverse();
                        return {
                            start: coords[0],
                            end: coords[1]
                        }
                    },
                    _getStripGraphicAttributes: function(fromPoint, toPoint) {
                        const center = this.getCenter();
                        return {
                            x: center.x,
                            y: center.y,
                            innerRadius: fromPoint,
                            outerRadius: toPoint
                        }
                    },
                    _createStrip: function(attrs) {
                        return this._renderer.arc(attrs.x, attrs.y, attrs.innerRadius, attrs.outerRadius, 0, 360)
                    },
                    _getAdjustedStripLabelCoords: circularAxes._getAdjustedStripLabelCoords,
                    _getStripLabelCoords: function(from, to) {
                        const labelPos = from + (to - from) / 2;
                        const center = this.getCenter();
                        const y = round(center.y - labelPos);
                        return {
                            x: center.x,
                            y: y,
                            align: _axes_constants.default.center
                        }
                    },
                    _getConstantLineGraphicAttributes: function(value) {
                        const center = this.getCenter();
                        return {
                            cx: center.x,
                            cy: center.y,
                            r: value
                        }
                    },
                    _createConstantLine: function(value, attr) {
                        const attrs = this._getConstantLineGraphicAttributes(value);
                        return this._renderer.circle(attrs.cx, attrs.cy, attrs.r).attr(attr).sharp()
                    },
                    _getConstantLineLabelsCoords: function(value) {
                        const center = this.getCenter();
                        const y = round(center.y - value);
                        return {
                            x: center.x,
                            y: y
                        }
                    },
                    _checkAlignmentConstantLineLabels: _common.noop,
                    _rotateTick: function(element, coords, isGridLine) {
                        !isGridLine && element.rotate(coords.angle + 90, coords.x, coords.y)
                    },
                    _validateOverlappingMode: circularAxes._validateOverlappingMode,
                    _validateDisplayMode: circularAxes._validateDisplayMode,
                    _getStep: function(boxes) {
                        const quarter = getPolarQuarter(this.getAngles()[0]);
                        const spacing = this._options.label.minSpacing;
                        const func = 2 === quarter || 4 === quarter ? function(box) {
                            return box.width + spacing
                        } : function(box) {
                            return box.height
                        };
                        const maxLabelLength = boxes.reduce((prevValue, box) => _max(prevValue, func(box)), 0);
                        return _axes_constants.default.getTicksCountInRange(this._majorTicks, 2 === quarter || 4 === quarter ? "x" : "y", maxLabelLength)
                    }
                };
                exports.linear = linear;
                const linearSpider = (0, _extend.extend)({}, linear, {
                    _createPathElement: function(points, attr) {
                        return this._renderer.path(points, "area").attr(attr).sharp()
                    },
                    setSpiderTicks: function(ticks) {
                        this._spiderTicks = ticks
                    },
                    _getGridLineDrawer: function() {
                        const that = this;
                        return function(tick, gridStyle) {
                            return that._createPathElement(that._getGridPoints(tick.coords).points, gridStyle)
                        }
                    },
                    _getGridPoints: function(coords) {
                        const pos = this.getCenter();
                        const radius = (0, _utils.getDistance)(pos.x, pos.y, coords.x, coords.y);
                        return this._getGridPointsByRadius(radius)
                    },
                    _getGridPointsByRadius: function(radius) {
                        const pos = this.getCenter();
                        if (radius > this.getRadius()) {
                            return {
                                points: null
                            }
                        }
                        return {
                            points: (0, _utils.map)(this._spiderTicks, (function(tick) {
                                const cosSin = (0, _utils.getCosAndSin)(tick.coords.angle);
                                return {
                                    x: round(pos.x + radius * cosSin.cos),
                                    y: round(pos.y + radius * cosSin.sin)
                                }
                            }))
                        }
                    },
                    _getStripGraphicAttributes: function(fromPoint, toPoint) {
                        const innerPoints = this._getGridPointsByRadius(toPoint).points;
                        const outerPoints = this._getGridPointsByRadius(fromPoint).points;
                        return {
                            points: [outerPoints, innerPoints.reverse()]
                        }
                    },
                    _createStrip: circularSpider._createStrip,
                    _getConstantLineGraphicAttributes: function(value) {
                        return this._getGridPointsByRadius(value)
                    },
                    _createConstantLine: function(value, attr) {
                        return this._createPathElement(this._getConstantLineGraphicAttributes(value).points, attr)
                    }
                });
                exports.linearSpider = linearSpider
            },
        41583:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/axes/smart_formatter.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.formatRange = function(_ref2) {
                    let {
                        startValue: startValue,
                        endValue: endValue,
                        tickInterval: tickInterval,
                        argumentFormat: argumentFormat,
                        axisOptions: {
                            dataType: dataType,
                            type: type,
                            logarithmBase: logarithmBase
                        }
                    } = _ref2;
                    if ("discrete" === type) {
                        return ""
                    }
                    if ("datetime" === dataType) {
                        return function(startValue, endValue, tickInterval) {
                            const diff = getDatesDifferences(startValue, endValue);
                            const typeFormat = _date.default.getDateFormatByTickInterval(tickInterval);
                            const diffFormatType = _format_helper.default.getDateFormatByDifferences(diff, typeFormat);
                            const diffFormat = createFormat(diffFormatType);
                            const values = [];
                            if (tickInterval in diff) {
                                const rangeFormat = function(diff, interval) {
                                    let stop = false;
                                    for (const i in diff) {
                                        if (stop) {
                                            diff[i] = false
                                        } else if (i === interval) {
                                            stop = true
                                        } else {
                                            diff[i] = true
                                        }
                                    }
                                    return createFormat(_format_helper.default.getDateFormatByDifferences(diff))
                                }(getDatesDifferences(startValue, endValue), tickInterval);
                                const value = _format(startValue, rangeFormat);
                                if (value) {
                                    values.push(value)
                                }
                            } else {
                                const rangeFormat = function(diff) {
                                    let stop = false;
                                    for (const i in diff) {
                                        if (true === diff[i] || "hour" === i || stop) {
                                            diff[i] = false;
                                            stop = true
                                        } else if (false === diff[i]) {
                                            diff[i] = true
                                        }
                                    }
                                    return createFormat(_format_helper.default.getDateFormatByDifferences(diff))
                                }(getDatesDifferences(startValue, endValue));
                                const highValue = _format(startValue, rangeFormat);
                                if (highValue) {
                                    values.push(highValue)
                                }
                                values.push("".concat(_format(startValue, diffFormat), " - ").concat(_format(endValue, diffFormat)))
                            }
                            return values.join(", ")
                        }(startValue, endValue, function(interval) {
                            if ((0, _type.isObject)(interval)) {
                                const dateUnits = Object.keys(interval);
                                const sum = dateUnits.reduce((sum, k) => interval[k] + sum, 0);
                                if (1 === sum) {
                                    const dateUnit = dateUnits.filter(k => 1 === interval[k])[0];
                                    return dateUnit.slice(0, dateUnit.length - 1)
                                }
                            }
                            return interval
                        }(tickInterval))
                    }
                    const formatOptions = {
                        ticks: [],
                        type: type,
                        dataType: dataType,
                        tickInterval: tickInterval,
                        logarithmBase: logarithmBase,
                        labelOptions: {
                            format: argumentFormat
                        }
                    };
                    return "".concat(smartFormatter(startValue, formatOptions), " - ").concat(smartFormatter(endValue, formatOptions))
                };
                exports.smartFormatter = smartFormatter;
                var _format_helper = _interopRequireDefault(__webpack_require__( /*! ../../format_helper */ 30343));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 91198));
                var _math = __webpack_require__( /*! ../../core/utils/math */ 60810);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const _format = _format_helper.default.format;
                const {
                    abs: abs,
                    floor: floor
                } = Math;
                const formats = ["fixedPoint", "thousands", "millions", "billions", "trillions", "exponential"];
                const dateUnitIntervals = ["millisecond", "second", "minute", "hour", "day", "month", "year"];
                const INTERVALS_MAP = {
                    week: "day",
                    quarter: "month",
                    shorttime: "hour",
                    longtime: "second"
                };

                function getDatesDifferences(prevDate, curDate, nextDate, tickIntervalFormat) {
                    tickIntervalFormat = INTERVALS_MAP[tickIntervalFormat] || tickIntervalFormat;
                    const tickFormatIndex = dateUnitIntervals.indexOf(tickIntervalFormat);
                    if (nextDate) {
                        const nextDifferences = _date.default.getDatesDifferences(curDate, nextDate);
                        if (nextDifferences[tickIntervalFormat]) {
                            ! function(differences, tickFormatIndex) {
                                for (let i = tickFormatIndex; i < dateUnitIntervals.length - 1; i++) {
                                    const dateUnitInterval = dateUnitIntervals[i];
                                    if (i === tickFormatIndex) {
                                        setDateUnitInterval(differences, tickFormatIndex + (differences.millisecond ? 2 : 1));
                                        break
                                    } else if (differences[dateUnitInterval] && differences.count > 1) {
                                        resetDateUnitInterval(differences, i);
                                        break
                                    }
                                }
                            }(nextDifferences, tickFormatIndex)
                        }
                        return nextDifferences
                    } else {
                        const prevDifferences = _date.default.getDatesDifferences(prevDate, curDate);
                        const patched = function(differences, tickFormatIndex) {
                            let patched = false;
                            for (let i = dateUnitIntervals.length - 1; i >= tickFormatIndex; i--) {
                                const dateUnitInterval = dateUnitIntervals[i];
                                if (differences[dateUnitInterval]) {
                                    if (i - tickFormatIndex > 1) {
                                        for (let j = 0; j <= tickFormatIndex; j++) {
                                            resetDateUnitInterval(differences, j);
                                            patched = true
                                        }
                                        break
                                    }
                                }
                            }
                            return patched
                        }(prevDifferences, tickFormatIndex);
                        if (!patched && 1 === prevDifferences.count) {
                            setDateUnitInterval(prevDifferences, tickFormatIndex)
                        }
                        return prevDifferences
                    }
                }

                function resetDateUnitInterval(differences, intervalIndex) {
                    const dateUnitInterval = dateUnitIntervals[intervalIndex];
                    if (differences[dateUnitInterval]) {
                        differences[dateUnitInterval] = false;
                        differences.count--
                    }
                }

                function setDateUnitInterval(differences, intervalIndex) {
                    const dateUnitInterval = dateUnitIntervals[intervalIndex];
                    if (false === differences[dateUnitInterval]) {
                        differences[dateUnitInterval] = true;
                        differences.count++
                    }
                }

                function getTransitionTickIndex(ticks, value) {
                    let i;
                    let curDiff;
                    let minDiff;
                    let nearestTickIndex = 0;
                    minDiff = abs(value - ticks[0]);
                    for (i = 1; i < ticks.length; i++) {
                        curDiff = abs(value - ticks[i]);
                        if (curDiff < minDiff) {
                            minDiff = curDiff;
                            nearestTickIndex = i
                        }
                    }
                    return nearestTickIndex
                }

                function splitDecimalNumber(value) {
                    return value.toString().split(".")
                }

                function createFormat(type) {
                    let formatter;
                    if ((0, _type.isFunction)(type)) {
                        formatter = type;
                        type = null
                    }
                    return {
                        type: type,
                        formatter: formatter
                    }
                }

                function getFormatExponential(tick, tickInterval) {
                    const stringTick = abs(tick).toString();
                    if ((0, _type.isExponential)(tick)) {
                        return Math.max(abs((0, _math.getExponent)(tick) - (0, _math.getExponent)(tickInterval)), abs((0, _math.getPrecision)(tick) - (0, _math.getPrecision)(tickInterval)))
                    } else {
                        return abs((str = stringTick.split(".")[1], str.length - parseInt(str).toString().length) - (0, _math.getExponent)(tickInterval) + 1)
                    }
                    var str
                }

                function smartFormatter(tick, options) {
                    let tickInterval = options.tickInterval;
                    const stringTick = abs(tick).toString();
                    let format = options.labelOptions.format;
                    const ticks = options.ticks;
                    const isLogarithmic = "logarithmic" === options.type;
                    if (1 === ticks.length && 0 === ticks.indexOf(tick) && !(0, _type.isDefined)(tickInterval)) {
                        tickInterval = abs(tick) >= 1 ? 1 : (0, _math.adjust)(1 - abs(tick), tick)
                    }
                    if (Object.is(tick, -0)) {
                        tick = 0
                    }
                    if (!(0, _type.isDefined)(format) && "discrete" !== options.type && tick && (10 === options.logarithmBase || !isLogarithmic)) {
                        if ("datetime" !== options.dataType && (0, _type.isDefined)(tickInterval)) {
                            if (ticks.length && -1 === ticks.indexOf(tick)) {
                                const indexOfTick = getTransitionTickIndex(ticks, tick);
                                tickInterval = (0, _math.adjust)(abs(tick - ticks[indexOfTick]), tick)
                            }
                            if (isLogarithmic) {
                                return function(tick) {
                                    const log10Tick = (0, _utils.getAdjustedLog10)(abs(tick));
                                    let type;
                                    if (log10Tick > 0) {
                                        type = formats[floor(log10Tick / 3)] || "exponential"
                                    } else if (log10Tick < -4) {
                                        type = "exponential"
                                    } else {
                                        return _format((0, _math.adjust)(tick))
                                    }
                                    return _format(tick, {
                                        type: type,
                                        precision: 0
                                    })
                                }(tick)
                            } else {
                                let separatedTickInterval = splitDecimalNumber(tickInterval);
                                if (separatedTickInterval < 2) {
                                    separatedTickInterval = splitDecimalNumber(tick)
                                }
                                if (separatedTickInterval.length > 1 && !(0, _type.isExponential)(tickInterval)) {
                                    format = {
                                        type: formats[0],
                                        precision: separatedTickInterval[1].length
                                    }
                                } else if ((0, _type.isExponential)(tickInterval) && (-1 !== stringTick.indexOf(".") || (0, _type.isExponential)(tick))) {
                                    format = {
                                        type: "exponential",
                                        precision: getFormatExponential(tick, tickInterval)
                                    }
                                } else {
                                    format = function(tick, tickInterval) {
                                        const tickIntervalIndex = floor((0, _utils.getAdjustedLog10)(tickInterval));
                                        let tickIndex;
                                        let precision = 0;
                                        let actualIndex = tickIndex = floor((0, _utils.getAdjustedLog10)(abs(tick)));
                                        if (tickIndex - tickIntervalIndex >= 2) {
                                            actualIndex = tickIntervalIndex
                                        }
                                        let indexOfFormat = floor(actualIndex / 3);
                                        const offset = 3 * indexOfFormat;
                                        if (indexOfFormat < 0) {
                                            indexOfFormat = 0
                                        }
                                        const typeFormat = formats[indexOfFormat] || formats[formats.length - 1];
                                        if (offset > 0) {
                                            const separatedTickInterval = splitDecimalNumber(tickInterval / Math.pow(10, offset));
                                            if (separatedTickInterval[1]) {
                                                precision = separatedTickInterval[1].length
                                            }
                                        }
                                        return {
                                            precision: precision,
                                            type: typeFormat
                                        }
                                    }(tick, tickInterval)
                                }
                            }
                        } else if ("datetime" === options.dataType) {
                            format = function(tick, _ref) {
                                let {
                                    showTransition: showTransition,
                                    ticks: ticks,
                                    tickInterval: tickInterval
                                } = _ref;
                                let typeFormat = _date.default.getDateFormatByTickInterval(tickInterval);
                                let prevDateIndex;
                                let nextDateIndex;
                                if (showTransition && ticks.length) {
                                    const indexOfTick = ticks.map(Number).indexOf(+tick);
                                    if (1 === ticks.length && 0 === indexOfTick) {
                                        typeFormat = _format_helper.default.getDateFormatByTicks(ticks)
                                    } else {
                                        if (-1 === indexOfTick) {
                                            prevDateIndex = getTransitionTickIndex(ticks, tick)
                                        } else {
                                            prevDateIndex = 0 === indexOfTick ? ticks.length - 1 : indexOfTick - 1;
                                            nextDateIndex = 0 === indexOfTick ? 1 : -1
                                        }
                                        const datesDifferences = getDatesDifferences(ticks[prevDateIndex], tick, ticks[nextDateIndex], typeFormat);
                                        typeFormat = _format_helper.default.getDateFormatByDifferences(datesDifferences, typeFormat)
                                    }
                                }
                                return createFormat(typeFormat)
                            }(tick, options)
                        }
                    }
                    return _format(tick, format)
                }
            },
        54978:
            /*!***************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/axes/strip.js ***!
              \***************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = function(axis, options) {
                    let storedCoord;
                    let lastStoredCoordinates;
                    const labelOptions = options.label || {};
                    return {
                        options: options,
                        label: null,
                        rect: null,
                        _getCoord() {
                            const canvas = axis._getCanvasStartEnd();
                            const range = axis._translator.getBusinessRange();
                            return axis._getStripPos(options.startValue, options.endValue, canvas.start, canvas.end, range)
                        },
                        _drawLabel: coords => axis._renderer.text(labelOptions.text, coords.x, coords.y).css((0, _utils.patchFontOptions)((0, _extend.extend)({}, axis.getOptions().label.font, labelOptions.font))).attr({
                            align: "center",
                            class: labelOptions.cssClass
                        }).append(axis._axisStripLabelGroup),
                        draw() {
                            if (axis._translator.getBusinessRange().isEmpty()) {
                                return
                            }
                            if (((0, _type.isDefined)(options.startValue) || (0, _type.isDefined)(options.endValue)) && (0, _type.isDefined)(options.color)) {
                                const stripPos = this._getCoord();
                                this.labelCoords = labelOptions.text ? axis._getStripLabelCoords(stripPos.from, stripPos.to, labelOptions) : null;
                                if (stripPos.outOfCanvas || !(0, _type.isDefined)(stripPos.to) || !(0, _type.isDefined)(stripPos.from)) {
                                    return
                                }
                                this.rect = axis._createStrip(axis._getStripGraphicAttributes(stripPos.from, stripPos.to)).attr({
                                    fill: options.color
                                }).append(axis._axisStripGroup);
                                this.label = labelOptions.text ? this._drawLabel(this.labelCoords) : null
                            }
                        },
                        getContentContainer() {
                            return this.label
                        },
                        removeLabel() {},
                        updatePosition(animate) {
                            const stripPos = this._getCoord();
                            if (animate && storedCoord) {
                                this.label && this.label.attr(axis._getStripLabelCoords(storedCoord.from, storedCoord.to, options.label));
                                this.rect && this.rect.attr(axis._getStripGraphicAttributes(storedCoord.from, storedCoord.to));
                                this.label && this.label.animate(axis._getStripLabelCoords(stripPos.from, stripPos.to, options.label));
                                this.rect && this.rect.animate(axis._getStripGraphicAttributes(stripPos.from, stripPos.to))
                            } else {
                                this.label && this.label.attr(axis._getStripLabelCoords(stripPos.from, stripPos.to, options.label));
                                this.rect && this.rect.attr(axis._getStripGraphicAttributes(stripPos.from, stripPos.to))
                            }
                        },
                        saveCoords() {
                            lastStoredCoordinates = storedCoord;
                            storedCoord = this._getCoord()
                        },
                        resetCoordinates() {
                            storedCoord = lastStoredCoordinates
                        }
                    }
                };
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        41013:
            /*!**************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/axes/tick.js ***!
              \**************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.tick = function(axis, renderer, tickOptions, gridOptions, skippedCategory, skipLabels, offset) {
                    const tickOffset = offset || axis._tickOffset;
                    const lineGroup = axis._axisLineGroup;
                    const elementsGroup = axis._axisElementsGroup;
                    const tickStyle = getPathStyle(tickOptions);
                    const gridStyle = getPathStyle(gridOptions);
                    const emptyStrRegExp = /^\s+$/;
                    const axisOptions = axis.getOptions();
                    const labelOptions = axisOptions.label;
                    const labelStyle = axis._textOptions;

                    function getLabelFontStyle(tick) {
                        let fontStyle = axis._textFontStyles;
                        const customizeColor = labelOptions.customizeColor;
                        if (customizeColor && customizeColor.call) {
                            fontStyle = (0, _extend.extend)({}, axis._textFontStyles, {
                                fill: customizeColor.call(tick, tick)
                            })
                        }
                        return fontStyle
                    }

                    function createLabelHint(tick, range) {
                        const labelHint = axis.formatHint(tick.value, labelOptions, range);
                        if ((0, _type.isDefined)(labelHint) && "" !== labelHint) {
                            tick.getContentContainer().setTitle(labelHint)
                        }
                    }
                    return function(value) {
                        const tick = {
                            value: value,
                            updateValue(newValue) {
                                this.value = value = newValue
                            },
                            initCoords: function() {
                                this.coords = axis._getTranslatedValue(value, tickOffset);
                                this.labelCoords = axis._getTranslatedValue(value)
                            },
                            saveCoords() {
                                this._lastStoredCoordinates = {
                                    coords: this._storedCoords,
                                    labelCoords: this._storedLabelsCoords
                                };
                                this._storedCoords = this.coords;
                                this._storedLabelsCoords = this.templateContainer ? this._getTemplateCoords() : this.labelCoords
                            },
                            resetCoordinates() {
                                if (this._lastStoredCoordinates) {
                                    this._storedCoords = this._lastStoredCoordinates.coords;
                                    this._storedLabelsCoords = this._lastStoredCoordinates.labelCoords
                                }
                            },
                            drawMark(options) {
                                if (!tickOptions.visible || skippedCategory === value) {
                                    return
                                }
                                if (axis.areCoordsOutsideAxis(this.coords)) {
                                    return
                                }
                                if (this.mark) {
                                    this.mark.append(lineGroup);
                                    axis.sharp(this.mark, axis.getSharpDirectionByCoords(this.coords));
                                    this.updateTickPosition(options)
                                } else {
                                    this.mark = axis._createPathElement([], tickStyle, axis.getSharpDirectionByCoords(this.coords)).append(lineGroup);
                                    this.updateTickPosition(options)
                                }
                            },
                            setSkippedCategory(category) {
                                skippedCategory = category
                            },
                            _updateLine(lineElement, settings, storedSettings, animate, isGridLine) {
                                if (!lineElement) {
                                    return
                                }
                                if (null === settings.points || null === settings.r) {
                                    lineElement.remove();
                                    return
                                }
                                if (animate && storedSettings && null !== storedSettings.points) {
                                    settings.opacity = 1;
                                    lineElement.attr(storedSettings);
                                    lineElement.animate(settings)
                                } else {
                                    settings.opacity = animate ? 0 : 1;
                                    lineElement.attr(settings);
                                    animate && lineElement.animate({
                                        opacity: 1
                                    }, {
                                        delay: .5,
                                        partitionDuration: .5
                                    })
                                }
                                this.coords.angle && axis._rotateTick(lineElement, this.coords, isGridLine)
                            },
                            updateTickPosition: function(options, animate) {
                                this._updateLine(this.mark, {
                                    points: axis._getTickMarkPoints(tick.coords, tickOptions.length, options)
                                }, this._storedCoords && {
                                    points: axis._getTickMarkPoints(tick._storedCoords, tickOptions.length, options)
                                }, animate, false)
                            },
                            drawLabel: function(range, template) {
                                if (this.templateContainer && axis.isRendered()) {
                                    this.updateLabelPosition();
                                    return
                                }
                                const labelIsVisible = labelOptions.visible && !skipLabels && !axis.getTranslator().getBusinessRange().isEmpty() && !axis.areCoordsOutsideAxis(this.labelCoords);
                                if (!labelIsVisible) {
                                    if (this.label) {
                                        this.removeLabel()
                                    }
                                    return
                                }
                                const templateOption = labelOptions.template;
                                const text = axis.formatLabel(value, labelOptions, range);
                                if (this.label) {
                                    this.label.attr({
                                        text: text,
                                        rotate: 0
                                    }).append(elementsGroup);
                                    createLabelHint(this, range);
                                    this.updateLabelPosition();
                                    return
                                }
                                if (templateOption) {
                                    this.templateContainer = renderer.g().append(elementsGroup);
                                    this._templateDef && this._templateDef.reject();
                                    this._templateDef = new _deferred.Deferred;
                                    template.render({
                                        model: {
                                            valueText: text,
                                            value: this.value,
                                            labelFontStyle: getLabelFontStyle(this),
                                            labelStyle: labelStyle
                                        },
                                        container: this.templateContainer.element,
                                        onRendered: () => {
                                            this.updateLabelPosition();
                                            this._templateDef && this._templateDef.resolve()
                                        }
                                    })
                                } else if ((0, _type.isDefined)(text) && "" !== text && !emptyStrRegExp.test(text)) {
                                    this.label = renderer.text(text).css(getLabelFontStyle(this)).attr(labelStyle).append(elementsGroup);
                                    this.updateLabelPosition();
                                    createLabelHint(this, range)
                                }
                                const containerForData = this.getContentContainer();
                                containerForData && containerForData.data("chart-data-argument", this.value);
                                this.templateContainer && createLabelHint(this, range)
                            },
                            getTemplateDeferred() {
                                return this._templateDef
                            },
                            getContentContainer() {
                                return this.templateContainer || this.label
                            },
                            fadeOutElements() {
                                const startSettings = {
                                    opacity: 1
                                };
                                const endSettings = {
                                    opacity: 0
                                };
                                const animationSettings = {
                                    partitionDuration: .5
                                };
                                if (this.getContentContainer()) {
                                    this._fadeOutLabel()
                                }
                                if (this.grid) {
                                    this.grid.append(axis._axisGridGroup).attr(startSettings).animate(endSettings, animationSettings)
                                }
                                if (this.mark) {
                                    this.mark.append(axis._axisLineGroup).attr(startSettings).animate(endSettings, animationSettings)
                                }
                            },
                            _fadeInLabel() {
                                const group = axis._renderer.g().attr({
                                    opacity: 0
                                }).append(axis._axisElementsGroup).animate({
                                    opacity: 1
                                }, {
                                    delay: .5,
                                    partitionDuration: .5
                                });
                                this.getContentContainer().append(group)
                            },
                            _fadeOutLabel() {
                                const group = axis._renderer.g().attr({
                                    opacity: 1
                                }).animate({
                                    opacity: 0
                                }, {
                                    partitionDuration: .5
                                }).append(axis._axisElementsGroup).toBackground();
                                this.getContentContainer().append(group)
                            },
                            _getTemplateCoords() {
                                return axis._getLabelAdjustedCoord(this, (axis._constantLabelOffset || 0) + (tick.labelOffset || 0))
                            },
                            updateLabelPosition: function(animate) {
                                const templateContainer = this.templateContainer;
                                if (!this.getContentContainer()) {
                                    return
                                }
                                if (animate && this._storedLabelsCoords) {
                                    if (templateContainer) {
                                        templateContainer.attr(this._storedLabelsCoords);
                                        const lCoords = this._getTemplateCoords();
                                        templateContainer.animate(lCoords)
                                    } else {
                                        this.label.attr({
                                            x: this._storedLabelsCoords.x,
                                            y: this._storedLabelsCoords.y
                                        });
                                        this.label.animate({
                                            x: this.labelCoords.x,
                                            y: this.labelCoords.y
                                        })
                                    }
                                } else {
                                    if (templateContainer) {
                                        const lCoords = this._getTemplateCoords();
                                        templateContainer.attr(lCoords)
                                    } else {
                                        this.label.attr({
                                            x: this.labelCoords.x,
                                            y: this.labelCoords.y
                                        })
                                    }
                                    if (animate) {
                                        this._fadeInLabel()
                                    }
                                }
                            },
                            updateMultilineTextAlignment() {
                                if (labelOptions.template || !this.label) {
                                    return
                                }
                                this.label.attr({
                                    textsAlignment: this.labelAlignment || axis.getOptions().label.alignment
                                })
                            },
                            drawGrid: function(drawLine) {
                                if (gridOptions.visible && skippedCategory !== this.value) {
                                    if (this.grid) {
                                        this.grid.append(axis._axisGridGroup);
                                        axis.sharp(this.grid, axis.getSharpDirectionByCoords(this.coords));
                                        this.updateGridPosition()
                                    } else {
                                        this.grid = drawLine(this, gridStyle);
                                        this.grid && this.grid.append(axis._axisGridGroup)
                                    }
                                }
                            },
                            updateGridPosition: function(animate) {
                                this._updateLine(this.grid, axis._getGridPoints(tick.coords), this._storedCoords && axis._getGridPoints(this._storedCoords), animate, true)
                            },
                            removeLabel() {
                                const contentContainer = this.getContentContainer();
                                contentContainer && contentContainer.remove();
                                this._templateDef && this._templateDef.reject();
                                this._templateDef = this.templateContainer = this.label = null
                            }
                        };
                        return tick
                    }
                };
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);

                function getPathStyle(options) {
                    return {
                        stroke: options.color,
                        "stroke-width": options.width,
                        "stroke-opacity": options.opacity,
                        opacity: 1
                    }
                }
            },
        45971:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/axes/tick_generator.js ***!
              \************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.tickGenerator = void 0;
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _date = (obj = __webpack_require__( /*! ../../core/utils/date */ 91198), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _math = __webpack_require__( /*! ../../core/utils/math */ 60810);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                const convertDateUnitToMilliseconds = _date.default.convertDateUnitToMilliseconds;
                const dateToMilliseconds = _date.default.dateToMilliseconds;
                const math = Math;
                const mathAbs = math.abs;
                const mathFloor = math.floor;
                const mathCeil = math.ceil;
                const mathPow = math.pow;
                const NUMBER_MULTIPLIERS = [1, 2, 2.5, 5];
                const LOGARITHMIC_MULTIPLIERS = [1, 2, 3, 5];
                const DATETIME_MULTIPLIERS = {
                    millisecond: [1, 2, 5, 10, 25, 50, 100, 250, 500],
                    second: [1, 2, 3, 5, 10, 15, 20, 30],
                    minute: [1, 2, 3, 5, 10, 15, 20, 30],
                    hour: [1, 2, 3, 4, 6, 8, 12],
                    day: [1, 2],
                    week: [1, 2],
                    month: [1, 2, 3, 6]
                };
                const DATETIME_MULTIPLIERS_WITH_BIG_WEEKEND = (0, _extend.extend)({}, DATETIME_MULTIPLIERS, {
                    day: [1]
                });
                const DATETIME_MINOR_MULTIPLIERS = {
                    millisecond: [1, 2, 5, 10, 25, 50, 100, 250, 500],
                    second: [1, 2, 3, 5, 10, 15, 20, 30],
                    minute: [1, 2, 3, 5, 10, 15, 20, 30],
                    hour: [1, 2, 3, 4, 6, 8, 12],
                    day: [1, 2, 3, 7, 14],
                    month: [1, 2, 3, 6]
                };
                const MINOR_DELIMITERS = [2, 4, 5, 8, 10];
                const getValue = value => value;
                const getLogValue = (base, allowNegatives, linearThreshold) => value => (0, _utils.getLogExt)(value, base, allowNegatives, linearThreshold);
                const correctValueByInterval = (post, round, getValue) => (value, interval) => (0, _math.adjust)(post(round((0, _math.adjust)(getValue(value) / interval)) * interval));

                function correctMinValueByEndOnTick(floorFunc, ceilFunc, resolveEndOnTick, endOnTick) {
                    if ((0, _type.isDefined)(endOnTick)) {
                        return endOnTick ? floorFunc : ceilFunc
                    }
                    return function(value, interval, businessViewInfo, forceEndOnTick) {
                        const floorTickValue = floorFunc(value, interval);
                        if (value - floorTickValue === 0 || !(0, _type.isDefined)(businessViewInfo) || resolveEndOnTick(value, floorTickValue, interval, businessViewInfo) || forceEndOnTick) {
                            return floorTickValue
                        }
                        return ceilFunc(value, interval)
                    }
                }

                function resolveEndOnTick(curValue, tickValue, interval, businessViewInfo) {
                    const prevTickDataDiff = interval - mathAbs(tickValue - curValue);
                    const intervalCount = math.max(mathCeil(businessViewInfo.businessDelta / interval), 2);
                    const businessRatio = businessViewInfo.screenDelta / (intervalCount * interval);
                    const potentialTickScreenDiff = math.round(businessRatio * prevTickDataDiff);
                    const delimiterFactor = (0, _utils.getLogExt)(businessRatio * interval / businessViewInfo.axisDivisionFactor, 2) + 1;
                    const delimiterMultiplier = (businessViewInfo.isSpacedMargin ? 2 : 1) * delimiterFactor;
                    const screenDelimiter = math.round(3 * delimiterMultiplier);
                    return businessViewInfo.businessDelta > businessViewInfo.interval && potentialTickScreenDiff >= screenDelimiter
                }

                function resolveEndOnTickLog(base) {
                    return function(curValue, tickValue, interval, businessViewInfo) {
                        return resolveEndOnTick((0, _utils.getLogExt)(curValue, base), (0, _utils.getLogExt)(tickValue, base), interval, businessViewInfo)
                    }
                }

                function resolveEndOnTickDate(curValue, tickValue, interval, businessViewInfo) {
                    return resolveEndOnTick(curValue.valueOf(), tickValue.valueOf(), dateToMilliseconds(interval), businessViewInfo)
                }

                function getBusinessDelta(data, breaks) {
                    let spacing = 0;
                    if (breaks) {
                        spacing = breaks.reduce((prev, item) => prev + (item.to - item.from), 0)
                    }
                    return mathAbs(data.max - data.min - spacing)
                }

                function getIntervalByFactor(businessDelta, screenDelta, axisDivisionFactor, addTickCount) {
                    let count = screenDelta / axisDivisionFactor - (addTickCount || 0);
                    count = count < 1 ? 1 : count;
                    return businessDelta / count
                }

                function getMultiplierFactor(interval, factorDelta) {
                    return mathPow(10, mathFloor((0, _utils.getLogExt)(interval, 10)) + (factorDelta || 0))
                }

                function calculateTickInterval(businessDelta, screenDelta, tickInterval, forceTickInterval, axisDivisionFactor, multipliers, allowDecimals, addTickCount, _, minTickInterval) {
                    const interval = getIntervalByFactor(businessDelta, screenDelta, axisDivisionFactor, addTickCount);
                    let result = 1;
                    const onlyIntegers = false === allowDecimals;
                    if (!forceTickInterval || !tickInterval) {
                        if (interval >= 1 || !onlyIntegers && interval > 0) {
                            result = adjustInterval(interval, multipliers, onlyIntegers)
                        }
                        if (!tickInterval || !forceTickInterval && tickInterval < result) {
                            tickInterval = result
                        }
                    }
                    if (!forceTickInterval && minTickInterval) {
                        minTickInterval = adjustInterval(minTickInterval, multipliers, onlyIntegers);
                        if (minTickInterval > tickInterval) {
                            tickInterval = minTickInterval
                        }
                    }
                    return tickInterval
                }

                function adjustInterval(interval, multipliers, onlyIntegers) {
                    const factor = getMultiplierFactor(interval, -1);
                    let result = 1;
                    multipliers = multipliers || NUMBER_MULTIPLIERS;
                    if (interval > 0) {
                        interval /= factor;
                        result = multipliers.concat(10 * multipliers[0]).map(m => 10 * m).reduce((r, m) => {
                            if (.1 === factor && onlyIntegers && 25 === m) {
                                return r
                            }
                            return r < interval ? m : r
                        }, 0);
                        result = (0, _math.adjust)(result * factor, factor)
                    }
                    return result
                }

                function calculateMinorTickInterval(businessDelta, screenDelta, tickInterval, axisDivisionFactor) {
                    const interval = getIntervalByFactor(businessDelta, screenDelta, axisDivisionFactor);
                    return tickInterval || MINOR_DELIMITERS.reduce((r, d) => {
                        const cur = businessDelta / d;
                        return cur >= interval ? cur : r
                    }, 0)
                }

                function getAdjustIntervalLog(skipCalculationLimits) {
                    return function(interval, multipliers) {
                        let factor = getMultiplierFactor(interval);
                        multipliers = multipliers || LOGARITHMIC_MULTIPLIERS;
                        if (!skipCalculationLimits && factor < 1) {
                            factor = 1
                        }
                        return multipliers.concat(10 * multipliers[0]).reduce((r, m) => r < interval ? m * factor : r, 0)
                    }
                }

                function numbersReducer(interval, key) {
                    return function(r, m) {
                        if (!r && interval <= convertDateUnitToMilliseconds(key, m)) {
                            r = {};
                            r[key + "s"] = m
                        }
                        return r
                    }
                }

                function yearsReducer(interval, factor) {
                    return function(r, m) {
                        const years = factor * m;
                        if (!r && interval <= convertDateUnitToMilliseconds("year", years) && 2.5 !== years) {
                            r = {
                                years: years
                            }
                        }
                        return r
                    }
                }

                function calculateTickIntervalDateTime(businessDelta, screenDelta, tickInterval, forceTickInterval, axisDivisionFactor, multipliers, allowDecimals, addTickCount, gapSize, minTickInterval) {
                    if (!forceTickInterval || !tickInterval) {
                        const result = adjustIntervalDateTime(getIntervalByFactor(businessDelta, screenDelta, axisDivisionFactor), multipliers, null, gapSize);
                        if (!tickInterval || !forceTickInterval && dateToMilliseconds(tickInterval) <= dateToMilliseconds(result)) {
                            tickInterval = result
                        }
                    }
                    if (!forceTickInterval && minTickInterval) {
                        minTickInterval = adjustIntervalDateTime(minTickInterval, multipliers, null, gapSize);
                        if (dateToMilliseconds(minTickInterval) > dateToMilliseconds(tickInterval)) {
                            tickInterval = minTickInterval
                        }
                    }
                    return tickInterval
                }

                function adjustIntervalDateTime(interval, multipliers, _, gapSize) {
                    let result;
                    multipliers = multipliers || function(gapSize) {
                        if (gapSize && gapSize > 2) {
                            return DATETIME_MULTIPLIERS_WITH_BIG_WEEKEND
                        } else {
                            return DATETIME_MULTIPLIERS
                        }
                    }(gapSize);
                    for (const key in multipliers) {
                        result = multipliers[key].reduce(numbersReducer(interval, key), result);
                        if (result) {
                            break
                        }
                    }
                    if (!result) {
                        for (let factor = 1;; factor *= 10) {
                            result = NUMBER_MULTIPLIERS.reduce(yearsReducer(interval, factor), result);
                            if (result) {
                                break
                            }
                        }
                    }
                    return result
                }

                function calculateMinorTickIntervalDateTime(businessDelta, screenDelta, tickInterval, axisDivisionFactor) {
                    return calculateTickIntervalDateTime(businessDelta, screenDelta, tickInterval, true, axisDivisionFactor, DATETIME_MINOR_MULTIPLIERS)
                }

                function getTickIntervalByCustomTicks(getValue, postProcess) {
                    return ticks => ticks ? postProcess(mathAbs((0, _math.adjust)(getValue(ticks[1]) - getValue(ticks[0])))) || void 0 : void 0
                }

                function addInterval(value, interval, isNegative) {
                    return _date.default.addInterval(value, interval, isNegative)
                }

                function addIntervalDate(value, interval, isNegative) {
                    return addInterval(value, interval, isNegative)
                }

                function addIntervalWithBreaks(addInterval, breaks, correctValue) {
                    breaks = breaks.filter(b => !b.gapSize);
                    return function(value, interval, isNegative) {
                        let breakSize;
                        value = addInterval(value, interval, isNegative);
                        if (!breaks.every(item => {
                                if (value >= addInterval(item.from, interval) && addInterval(value, interval) < item.to) {
                                    breakSize = item.to - item.from - 2 * (addInterval(item.from, interval) - item.from)
                                }
                                return !breakSize
                            })) {
                            value = correctValue(addInterval(value, breakSize), interval)
                        }
                        return value
                    }
                }

                function calculateTicks(addInterval, correctMinValue, adjustInterval, resolveEndOnTick) {
                    return function(data, tickInterval, endOnTick, gaps, breaks, businessDelta, screenDelta, axisDivisionFactor, generateExtraTick) {
                        const correctTickValue = function(addInterval, breaks) {
                            return function(value) {
                                let gapSize;
                                if (!breaks.every(item => {
                                        if (value >= item.from && value < item.to) {
                                            gapSize = item.gapSize
                                        }
                                        return !gapSize
                                    })) {
                                    value = addInterval(value, gapSize)
                                }
                                return value
                            }
                        }(addInterval, gaps);
                        const min = data.min;
                        const max = data.max;
                        const businessViewInfo = {
                            screenDelta: screenDelta,
                            businessDelta: businessDelta,
                            axisDivisionFactor: axisDivisionFactor,
                            isSpacedMargin: data.isSpacedMargin,
                            interval: tickInterval
                        };
                        let cur = correctMinValue(min, tickInterval, businessViewInfo);
                        const ticks = [];
                        if (null !== breaks && void 0 !== breaks && breaks.length) {
                            addInterval = addIntervalWithBreaks(addInterval, breaks, correctMinValue)
                        }
                        if (cur > max) {
                            cur = correctMinValue(min, adjustInterval(businessDelta / 2), businessViewInfo);
                            if (cur > max) {
                                endOnTick = true;
                                cur = correctMinValue(min, tickInterval, businessViewInfo, endOnTick)
                            }
                        }
                        cur = correctTickValue(cur);
                        let prev;
                        while (cur < max && cur !== prev || generateExtraTick && cur <= max) {
                            ticks.push(cur);
                            prev = cur;
                            cur = correctTickValue(addInterval(cur, tickInterval))
                        }
                        if (endOnTick || cur - max === 0 || !(0, _type.isDefined)(endOnTick) && resolveEndOnTick(max, cur, tickInterval, businessViewInfo)) {
                            ticks.push(cur)
                        }
                        return ticks
                    }
                }

                function calculateMinorTicks(updateTickInterval, addInterval, correctMinValue, correctTickValue, ceil) {
                    return function(min, max, majorTicks, minorTickInterval, tickInterval, breaks, maxCount) {
                        const factor = tickInterval / minorTickInterval;
                        const lastMajor = majorTicks[majorTicks.length - 1];
                        const firstMajor = majorTicks[0];
                        let tickBalance = maxCount - 1;
                        if (null !== breaks && void 0 !== breaks && breaks.length) {
                            addInterval = addIntervalWithBreaks(addInterval, breaks, correctMinValue)
                        }
                        minorTickInterval = updateTickInterval(minorTickInterval, firstMajor, firstMajor, factor);
                        if (0 === minorTickInterval) {
                            return []
                        }
                        let cur = correctTickValue(correctMinValue(min, tickInterval, min), minorTickInterval);
                        minorTickInterval = updateTickInterval(minorTickInterval, firstMajor, cur, factor);
                        let ticks = [];
                        while (cur < firstMajor && (!tickBalance || tickBalance > 0)) {
                            cur >= min && ticks.push(cur);
                            tickBalance--;
                            cur = addInterval(cur, minorTickInterval)
                        }
                        const middleTicks = majorTicks.reduce((r, tick) => {
                            tickBalance = maxCount - 1;
                            if (null === r.prevTick) {
                                r.prevTick = tick;
                                return r
                            }
                            minorTickInterval = updateTickInterval(minorTickInterval, tick, r.prevTick, factor);
                            let cur = correctTickValue(r.prevTick, minorTickInterval);
                            while (cur < tick && (!tickBalance || tickBalance > 0)) {
                                cur !== r.prevTick && r.minors.push(cur);
                                tickBalance--;
                                cur = addInterval(cur, minorTickInterval)
                            }
                            r.prevTick = tick;
                            return r
                        }, {
                            prevTick: null,
                            minors: []
                        });
                        ticks = ticks.concat(middleTicks.minors);
                        const maxValue = ceil(max, tickInterval, min);
                        minorTickInterval = updateTickInterval(minorTickInterval, maxValue, maxValue, factor);
                        cur = correctTickValue(lastMajor, minorTickInterval);
                        let prev;
                        while (cur < max && cur !== prev) {
                            ticks.push(cur);
                            prev = cur;
                            cur = addInterval(cur, minorTickInterval)
                        }
                        if (lastMajor - max !== 0 && cur - max === 0) {
                            ticks.push(cur)
                        }
                        return ticks
                    }
                }

                function filterTicks(ticks, breaks) {
                    if (breaks.length) {
                        const result = breaks.reduce((result, b) => {
                            const tmpTicks = [];
                            let i;
                            for (i = result[1]; i < ticks.length; i++) {
                                const tickValue = ticks[i];
                                if (tickValue < b.from) {
                                    tmpTicks.push(tickValue)
                                }
                                if (tickValue >= b.to) {
                                    break
                                }
                            }
                            return [result[0].concat(tmpTicks), i]
                        }, [
                            [], 0
                        ]);
                        return result[0].concat(ticks.slice(result[1]))
                    }
                    return ticks
                }

                function generator(options, getBusinessDelta, calculateTickInterval, calculateMinorTickInterval, getMajorTickIntervalByCustomTicks, getMinorTickIntervalByCustomTicks, convertTickInterval, calculateTicks, calculateMinorTicks, processScaleBreaks) {
                    function correctUserTickInterval(tickInterval, businessDelta, limit) {
                        if (tickInterval && businessDelta / convertTickInterval(tickInterval) >= limit + 1) {
                            options.incidentOccurred("W2003");
                            tickInterval = void 0
                        }
                        return tickInterval
                    }
                    return function(data, screenDelta, tickInterval, forceTickInterval, customTicks, minorTickInterval, minorTickCount, breaks) {
                        customTicks = customTicks || {};
                        const businessDelta = getBusinessDelta(data, breaks);
                        let result = function(customTicks) {
                            return {
                                tickInterval: getMajorTickIntervalByCustomTicks(customTicks.majors),
                                ticks: customTicks.majors || [],
                                minorTickInterval: getMinorTickIntervalByCustomTicks(customTicks.minors),
                                minorTicks: customTicks.minors || []
                            }
                        }(customTicks);
                        if (!isNaN(businessDelta)) {
                            if (0 === businessDelta && !customTicks.majors) {
                                result.ticks = [data.min]
                            } else {
                                result = function(ticks, data, businessDelta, screenDelta, tickInterval, forceTickInterval, customTicks, breaks) {
                                    if (customTicks.majors) {
                                        ticks.breaks = breaks;
                                        return ticks
                                    }
                                    const gaps = breaks.filter(b => b.gapSize);
                                    let majorTicks;
                                    tickInterval = options.skipCalculationLimits ? tickInterval : correctUserTickInterval(tickInterval, businessDelta, screenDelta);
                                    tickInterval = calculateTickInterval(businessDelta, screenDelta, tickInterval, forceTickInterval, options.axisDivisionFactor, options.numberMultipliers, options.allowDecimals, breaks.length, gaps[0] && gaps[0].gapSize.days, options.minTickInterval);
                                    if (!options.skipTickGeneration) {
                                        majorTicks = calculateTicks(data, tickInterval, options.endOnTick, gaps, breaks, businessDelta, screenDelta, options.axisDivisionFactor, options.generateExtraTick);
                                        breaks = processScaleBreaks(breaks, majorTicks, tickInterval);
                                        majorTicks = filterTicks(majorTicks, breaks);
                                        ticks.breaks = breaks;
                                        ticks.ticks = ticks.ticks.concat(majorTicks)
                                    }
                                    ticks.tickInterval = tickInterval;
                                    return ticks
                                }(result, data, businessDelta, screenDelta, tickInterval, forceTickInterval, customTicks, breaks || []);
                                if (!options.skipTickGeneration && businessDelta > 0) {
                                    result = function(ticks, data, businessDelta, screenDelta, minorTickInterval, minorTickCount, customTicks) {
                                        if (!options.calculateMinors) {
                                            return ticks
                                        }
                                        if (customTicks.minors) {
                                            return ticks
                                        }
                                        const minorBusinessDelta = convertTickInterval(ticks.tickInterval);
                                        const minorScreenDelta = screenDelta * minorBusinessDelta / businessDelta;
                                        const breaks = ticks.breaks;
                                        if (!minorTickInterval && minorTickCount) {
                                            minorTickInterval = getMinorTickIntervalByCustomTicks([minorBusinessDelta / (minorTickCount + 1), minorBusinessDelta / (minorTickCount + 1) * 2])
                                        } else {
                                            minorTickCount = void 0
                                        }
                                        minorTickInterval = correctUserTickInterval(minorTickInterval, minorBusinessDelta, minorScreenDelta);
                                        minorTickInterval = calculateMinorTickInterval(minorBusinessDelta, minorScreenDelta, minorTickInterval, options.minorAxisDivisionFactor);
                                        ticks.minorTicks = filterTicks(ticks.minorTicks.concat(calculateMinorTicks(data.min, data.max, ticks.ticks, minorTickInterval, ticks.tickInterval, breaks, minorTickCount)), breaks);
                                        ticks.minorTickInterval = minorTickInterval;
                                        return ticks
                                    }(result, data, businessDelta, screenDelta, minorTickInterval, minorTickCount, customTicks)
                                }
                            }
                        }
                        return result
                    }
                }

                function getBaseTick(breakValue, _ref, interval, getValue) {
                    let [tick, insideTick] = _ref;
                    if (!(0, _type.isDefined)(tick) || mathAbs(getValue(breakValue) - getValue(tick)) / interval > .25) {
                        if ((0, _type.isDefined)(insideTick) && mathAbs(getValue(insideTick) - getValue(tick)) / interval < 2) {
                            tick = insideTick
                        } else if (!(0, _type.isDefined)(tick)) {
                            tick = breakValue
                        }
                    }
                    return tick
                }

                function getScaleBreaksProcessor(convertTickInterval, getValue, addCorrection) {
                    return function(breaks, ticks, tickInterval) {
                        const interval = convertTickInterval(tickInterval);
                        const correction = .5 * interval;
                        return breaks.reduce((result, b) => {
                            let breakTicks = ticks.filter(tick => tick <= b.from);
                            const from = addCorrection(getBaseTick(b.from, [].concat(breakTicks[breakTicks.length - 1], ticks[breakTicks.length]), interval, getValue), correction);
                            breakTicks = ticks.filter(tick => tick >= b.to);
                            const to = addCorrection(getBaseTick(b.to, [].concat(breakTicks[0], ticks[ticks.length - breakTicks.length - 1]), interval, getValue), -correction);
                            if (getValue(to) - getValue(from) < interval && !b.gapSize) {
                                return result
                            }
                            if (b.gapSize) {
                                return result.concat([b])
                            }
                            return result.concat([{
                                from: from,
                                to: to,
                                cumulativeWidth: b.cumulativeWidth
                            }])
                        }, [])
                    }
                }
                const correctValueByIntervalLog = (post, getRound, getValue) => (value, interval) => (0, _math.sign)(value) * (0, _math.adjust)(post(getRound(value)((0, _math.adjust)(getValue(value) / interval)) * interval));

                function logarithmicGenerator(options) {
                    const base = options.logBase;
                    const raise = ((base, allowNegatives, linearThreshold) => value => (0, _utils.raiseToExt)(value, base, allowNegatives, linearThreshold))(base, options.allowNegatives, options.linearThreshold);
                    const log = getLogValue(base, options.allowNegatives, options.linearThreshold);
                    const absLog = (base => value => 0 === value ? 0 : (0, _utils.getLog)(mathAbs(value), base))(base);
                    const absRaise = (base => value => (0, _utils.raiseTo)(value, base))(base);
                    const floor = correctValueByIntervalLog(absRaise, value => value < 0 ? mathCeil : mathFloor, absLog);
                    const ceil = correctValueByIntervalLog(absRaise, value => value < 0 ? mathFloor : mathCeil, absLog);
                    const ceilNumber = correctValueByInterval(getValue, mathCeil, getValue);
                    return generator(options, function(base, allowNegatives, linearThreshold) {
                        const getLog = getLogValue(base, allowNegatives, linearThreshold);
                        return function(data, breaks) {
                            let spacing = 0;
                            if (breaks) {
                                spacing = breaks.reduce((prev, item) => prev + mathAbs(getLog(item.to / item.from)), 0)
                            }
                            return mathCeil(mathAbs(getLog(data.max) - getLog(data.min)) - spacing)
                        }
                    }(base, options.allowNegatives, options.linearThreshold), (skipCalculationLimits = options.skipCalculationLimits, function(businessDelta, screenDelta, tickInterval, forceTickInterval, axisDivisionFactor, multipliers, allowDecimals, _, __, minTickInterval) {
                        const interval = getIntervalByFactor(businessDelta, screenDelta, axisDivisionFactor);
                        let result = 0;
                        const adjustInterval = getAdjustIntervalLog(skipCalculationLimits);
                        if (!forceTickInterval || !tickInterval) {
                            if (interval > 0) {
                                result = adjustInterval(interval, multipliers)
                            }
                            if (!tickInterval || !forceTickInterval && tickInterval < result) {
                                tickInterval = result
                            }
                        }
                        if (!forceTickInterval && minTickInterval) {
                            minTickInterval = adjustInterval(minTickInterval, multipliers);
                            if (minTickInterval > tickInterval) {
                                tickInterval = minTickInterval
                            }
                        }
                        return tickInterval
                    }), calculateMinorTickInterval, getTickIntervalByCustomTicks(log, getValue), getTickIntervalByCustomTicks(getValue, getValue), getValue, calculateTicks(function(log, raise) {
                        return (value, interval, isNegative) => raise(addInterval(log(value), interval, isNegative))
                    }(log, raise), correctMinValueByEndOnTick(floor, ceil, resolveEndOnTickLog(base), options.endOnTick), getAdjustIntervalLog(options.skipCalculationLimits), resolveEndOnTickLog(base)), calculateMinorTicks((_, tick, prevTick, factor) => Math.max(Math.abs(tick), Math.abs(prevTick)) / factor, addInterval, floor, ceilNumber, ceil), getScaleBreaksProcessor(getValue, log, (value, correction) => raise(log(value) + correction)));
                    var skipCalculationLimits
                }
                exports.tickGenerator = function(options) {
                    let result;
                    if (options.rangeIsEmpty) {
                        result = function(options) {
                            return function(data, screenDelta, tickInterval, forceTickInterval) {
                                let count = mathFloor(screenDelta / options.axisDivisionFactor);
                                count = count < 1 ? 1 : count;
                                const interval = screenDelta / count;
                                return {
                                    ticks: interval > 0 ? Array.apply(null, new Array(count + 1)).map((_, i) => interval * i) : [],
                                    tickInterval: interval
                                }
                            }
                        }(options)
                    } else if ("discrete" === options.axisType) {
                        result = function(options) {
                            return function(data, screenDelta, tickInterval, forceTickInterval) {
                                const categories = (0, _utils.getCategoriesInfo)(data.categories, data.min, data.max).categories;
                                return {
                                    ticks: categories,
                                    tickInterval: mathCeil(categories.length * options.axisDivisionFactor / screenDelta)
                                }
                            }
                        }(options)
                    } else if ("logarithmic" === options.axisType) {
                        result = logarithmicGenerator(options)
                    } else if ("datetime" === options.dataType) {
                        result = function(options) {
                            function floor(value, interval) {
                                const floorNumber = correctValueByInterval(getValue, mathFloor, getValue);
                                let intervalObject = (0, _type.isString)(interval) ? _date.default.getDateIntervalByString(interval.toLowerCase()) : interval;
                                const divider = dateToMilliseconds(interval);
                                if (intervalObject.days % 7 === 0 || interval.quarters) {
                                    intervalObject = adjustIntervalDateTime(divider)
                                }
                                const correctDateWithUnitBeginning = v => _date.default.correctDateWithUnitBeginning(v, intervalObject, null, options.firstDayOfWeek);
                                const floorAtStartDate = v => new Date(mathFloor((v.getTime() - 6e4 * v.getTimezoneOffset()) / divider) * divider + 6e4 * v.getTimezoneOffset());
                                value = correctDateWithUnitBeginning(value);
                                if ("years" in intervalObject) {
                                    value.setFullYear(floorNumber(value.getFullYear(), intervalObject.years))
                                } else if ("quarters" in intervalObject) {
                                    value = correctDateWithUnitBeginning(floorAtStartDate(value))
                                } else if ("months" in intervalObject) {
                                    value.setMonth(floorNumber(value.getMonth(), intervalObject.months))
                                } else if ("weeks" in intervalObject || "days" in intervalObject) {
                                    value = correctDateWithUnitBeginning(floorAtStartDate(value))
                                } else if ("hours" in intervalObject) {
                                    value.setHours(floorNumber(value.getHours(), intervalObject.hours))
                                } else if ("minutes" in intervalObject) {
                                    value.setMinutes(floorNumber(value.getMinutes(), intervalObject.minutes))
                                } else if ("seconds" in intervalObject) {
                                    value.setSeconds(floorNumber(value.getSeconds(), intervalObject.seconds))
                                } else if ("milliseconds" in intervalObject) {
                                    value = floorAtStartDate(value)
                                }
                                return value
                            }
                            const calculateTickIntervalByCustomTicks = getTickIntervalByCustomTicks(getValue, _date.default.convertMillisecondsToDateUnits);
                            return generator(options, getBusinessDelta, calculateTickIntervalDateTime, calculateMinorTickIntervalDateTime, calculateTickIntervalByCustomTicks, calculateTickIntervalByCustomTicks, dateToMilliseconds, calculateTicks(addIntervalDate, correctMinValueByEndOnTick(floor, (function(value, interval) {
                                let newValue = floor(value, interval);
                                while (value - newValue > 0) {
                                    newValue = addIntervalDate(newValue, interval)
                                }
                                return newValue
                            }), resolveEndOnTickDate, options.endOnTick), adjustIntervalDateTime, resolveEndOnTickDate), calculateMinorTicks(getValue, addIntervalDate, floor, addIntervalDate, getValue), getScaleBreaksProcessor(dateToMilliseconds, getValue, (value, correction) => new Date(value.getTime() + correction)))
                        }(options)
                    } else {
                        result = function(options) {
                            const floor = correctValueByInterval(getValue, mathFloor, getValue);
                            const ceil = correctValueByInterval(getValue, mathCeil, getValue);
                            const calculateTickIntervalByCustomTicks = getTickIntervalByCustomTicks(getValue, getValue);
                            return generator(options, getBusinessDelta, calculateTickInterval, calculateMinorTickInterval, calculateTickIntervalByCustomTicks, calculateTickIntervalByCustomTicks, getValue, calculateTicks(addInterval, correctMinValueByEndOnTick(floor, ceil, resolveEndOnTick, options.endOnTick), adjustInterval, resolveEndOnTick), calculateMinorTicks(getValue, addInterval, floor, addInterval, getValue), getScaleBreaksProcessor(getValue, getValue, (value, correction) => value + correction))
                        }(options)
                    }
                    return result
                }
            },
        99415:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/axes/xy_axes.js ***!
              \*****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _range = __webpack_require__( /*! ../translators/range */ 21177);
                var _format_helper = _interopRequireDefault(__webpack_require__( /*! ../../format_helper */ 30343));
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 91198));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _datetime_breaks = __webpack_require__( /*! ./datetime_breaks */ 89530);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _axes_constants = _interopRequireDefault(__webpack_require__( /*! ./axes_constants */ 53805));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const getNextDateUnit = _date.default.getNextDateUnit;
                const correctDateWithUnitBeginning = _date.default.correctDateWithUnitBeginning;
                const _math = Math;
                const _max = _math.max;
                const TOP = _axes_constants.default.top;
                const BOTTOM = _axes_constants.default.bottom;
                const LEFT = _axes_constants.default.left;
                const RIGHT = _axes_constants.default.right;
                const CENTER = _axes_constants.default.center;
                const TICKS_CORRECTIONS = {
                    left: -1,
                    top: -1,
                    right: 0,
                    bottom: 0,
                    center: -.5
                };

                function sortingBreaks(breaks) {
                    return breaks.sort((function(a, b) {
                        return a.from - b.from
                    }))
                }

                function getMarkerFormat(curDate, prevDate, tickInterval, markerInterval) {
                    let format = markerInterval;
                    const datesDifferences = prevDate && _date.default.getDatesDifferences(prevDate, curDate);
                    if (prevDate && "year" !== tickInterval) {
                        ! function(datesDifferences, tickInterval) {
                            let dateUnitInterval;
                            let i;
                            if ("week" === tickInterval) {
                                tickInterval = "day"
                            }
                            if ("quarter" === tickInterval) {
                                tickInterval = "month"
                            }
                            if (datesDifferences[tickInterval]) {
                                for (i = 0; i < _date.default.dateUnitIntervals.length; i++) {
                                    dateUnitInterval = _date.default.dateUnitIntervals[i];
                                    if (datesDifferences[dateUnitInterval]) {
                                        datesDifferences[dateUnitInterval] = false;
                                        datesDifferences.count--
                                    }
                                    if (dateUnitInterval === tickInterval) {
                                        break
                                    }
                                }
                            }
                        }(datesDifferences, tickInterval);
                        format = _format_helper.default.getDateFormatByDifferences(datesDifferences)
                    }
                    return format
                }

                function getMaxSide(act, boxes) {
                    return boxes.reduce((function(prevValue, box) {
                        return _max(prevValue, act(box))
                    }), 0)
                }

                function getConstantLineLabelMarginForVerticalAlignment(constantLines, alignment, labelHeight) {
                    return constantLines.some((function(options) {
                        return options.label.verticalAlignment === alignment
                    })) && labelHeight || 0
                }

                function getLeftMargin(bBox) {
                    return _math.abs(bBox.x) || 0
                }

                function getRightMargin(bBox) {
                    return _math.abs(bBox.width - _math.abs(bBox.x)) || 0
                }
                var _default = {
                    linear: {
                        _getStep: function(boxes, rotationAngle) {
                            const spacing = this._options.label.minSpacing;
                            const func = this._isHorizontal ? function(box) {
                                return box.width + spacing
                            } : function(box) {
                                return box.height
                            };
                            let maxLabelLength = getMaxSide(func, boxes);
                            if (rotationAngle) {
                                maxLabelLength = function(bBox, rotationAngle) {
                                    rotationAngle = _math.abs(rotationAngle);
                                    rotationAngle = rotationAngle % 180 >= 90 ? 90 - rotationAngle % 90 : rotationAngle % 90;
                                    const a = rotationAngle * (_math.PI / 180);
                                    if (a >= _math.atan(bBox.height / bBox.width)) {
                                        return bBox.height / _math.abs(_math.sin(a))
                                    } else {
                                        return bBox.width
                                    }
                                }({
                                    width: maxLabelLength,
                                    height: this._getMaxLabelHeight(boxes, 0)
                                }, rotationAngle)
                            }
                            return _axes_constants.default.getTicksCountInRange(this._majorTicks, this._isHorizontal ? "x" : "y", maxLabelLength)
                        },
                        _getMaxLabelHeight: function(boxes, spacing) {
                            return getMaxSide((function(box) {
                                return box.height
                            }), boxes) + spacing
                        },
                        _validateOverlappingMode: function(mode, displayMode) {
                            if (this._isHorizontal && ("rotate" === displayMode || "stagger" === displayMode) || !this._isHorizontal) {
                                return _axes_constants.default.validateOverlappingMode(mode)
                            }
                            return mode
                        },
                        _validateDisplayMode: function(mode) {
                            return this._isHorizontal ? mode : "standard"
                        },
                        getMarkerTrackers: function() {
                            return this._markerTrackers
                        },
                        _getSharpParam: function(opposite) {
                            return this._isHorizontal ^ opposite ? "h" : "v"
                        },
                        _createAxisElement: function() {
                            return this._renderer.path([], "line")
                        },
                        _updateAxisElementPosition: function() {
                            const axisCoord = this._axisPosition;
                            const canvas = this._getCanvasStartEnd();
                            this._axisElement.attr({
                                points: this._isHorizontal ? [canvas.start, axisCoord, canvas.end, axisCoord] : [axisCoord, canvas.start, axisCoord, canvas.end]
                            })
                        },
                        _getTranslatedCoord: function(value, offset) {
                            return this._translator.translate(value, offset)
                        },
                        _initAxisPositions() {
                            const that = this;
                            if (that.customPositionIsAvailable()) {
                                that._customBoundaryPosition = that.getCustomBoundaryPosition()
                            }
                            if (!that.customPositionIsAvailable() || that.customPositionIsBoundary()) {
                                that._axisPosition = that.getPredefinedPosition(that.getResolvedBoundaryPosition())
                            } else {
                                that._axisPosition = that.getCustomPosition()
                            }
                        },
                        _getTickMarkPoints(coords, length, tickOptions) {
                            const isHorizontal = this._isHorizontal;
                            const tickOrientation = this._options.tickOrientation;
                            const labelPosition = this._options.label.position;
                            let tickStartCoord;
                            if ((0, _type.isDefined)(tickOrientation)) {
                                tickStartCoord = TICKS_CORRECTIONS[tickOrientation] * length
                            } else {
                                let shift = tickOptions.shift || 0;
                                if (!isHorizontal && labelPosition === LEFT || isHorizontal && labelPosition !== BOTTOM) {
                                    shift = -shift
                                }
                                tickStartCoord = shift + this.getTickStartPositionShift(length)
                            }
                            return [coords.x + (isHorizontal ? 0 : tickStartCoord), coords.y + (isHorizontal ? tickStartCoord : 0), coords.x + (isHorizontal ? 0 : tickStartCoord + length), coords.y + (isHorizontal ? tickStartCoord + length : 0)]
                        },
                        getTickStartPositionShift(length) {
                            const width = this._options.width;
                            const position = this.getResolvedBoundaryPosition();
                            return length % 2 === 1 ? width % 2 === 0 && (position === LEFT || position === TOP) || width % 2 === 1 && (position === RIGHT || position === BOTTOM) && !this.hasNonBoundaryPosition() ? Math.floor(-length / 2) : -Math.floor(length / 2) : -length / 2 + (width % 2 === 0 ? 0 : position === BOTTOM || position === RIGHT ? -1 : 1)
                        },
                        _getTitleCoords: function() {
                            const horizontal = this._isHorizontal;
                            let x = this._axisPosition;
                            let y = this._axisPosition;
                            const align = this._options.title.alignment;
                            const canvas = this._getCanvasStartEnd();
                            const fromStartToEnd = horizontal || this._options.position === LEFT;
                            const canvasStart = fromStartToEnd ? canvas.start : canvas.end;
                            const canvasEnd = fromStartToEnd ? canvas.end : canvas.start;
                            const coord = align === LEFT ? canvasStart : align === RIGHT ? canvasEnd : canvas.start + (canvas.end - canvas.start) / 2;
                            if (horizontal) {
                                x = coord
                            } else {
                                y = coord
                            }
                            return {
                                x: x,
                                y: y
                            }
                        },
                        _drawTitleText: function(group, coords) {
                            const options = this._options;
                            const titleOptions = options.title;
                            const attrs = {
                                opacity: titleOptions.opacity,
                                align: titleOptions.alignment,
                                class: titleOptions.cssClass
                            };
                            if (!titleOptions.text || !group) {
                                return
                            }
                            coords = coords || this._getTitleCoords();
                            if (!this._isHorizontal) {
                                attrs.rotate = options.position === LEFT ? 270 : 90
                            }
                            const text = this._renderer.text(titleOptions.text, coords.x, coords.y).css((0, _utils.patchFontOptions)(titleOptions.font)).attr(attrs).append(group);
                            this._checkTitleOverflow(text);
                            return text
                        },
                        _updateTitleCoords: function() {
                            this._title && this._title.element.attr(this._getTitleCoords())
                        },
                        _drawTitle: function() {
                            const title = this._drawTitleText(this._axisTitleGroup);
                            if (title) {
                                this._title = {
                                    element: title
                                }
                            }
                        },
                        _measureTitle: function() {
                            if (this._title) {
                                if (this._title.bBox && !this._title.originalSize) {
                                    this._title.originalSize = this._title.bBox
                                }
                                this._title.bBox = this._title.element.getBBox()
                            }
                        },
                        _drawDateMarker: function(date, options, range) {
                            const that = this;
                            const markerOptions = that._options.marker;
                            const invert = that._translator.getBusinessRange().invert;
                            const textIndent = markerOptions.width + markerOptions.textLeftIndent;
                            let pathElement;
                            if (null === options.x) {
                                return
                            }
                            if (!options.withoutStick) {
                                pathElement = that._renderer.path([options.x, options.y, options.x, options.y + markerOptions.separatorHeight], "line").attr({
                                    "stroke-width": markerOptions.width,
                                    stroke: markerOptions.color,
                                    "stroke-opacity": markerOptions.opacity,
                                    sharp: "h"
                                }).append(that._axisElementsGroup)
                            }
                            const text = String(that.formatLabel(date, options.labelOptions, range));
                            return {
                                date: date,
                                x: options.x,
                                y: options.y,
                                cropped: options.withoutStick,
                                label: that._renderer.text(text, options.x, options.y).css((0, _utils.patchFontOptions)(markerOptions.label.font)).append(that._axisElementsGroup),
                                line: pathElement,
                                getContentContainer() {
                                    return this.label
                                },
                                getEnd: function() {
                                    return this.x + (invert ? -1 : 1) * (textIndent + this.labelBBox.width)
                                },
                                setTitle: function() {
                                    this.title = text
                                },
                                hideLabel: function() {
                                    this.label.dispose();
                                    this.label = null;
                                    this.title = text
                                },
                                hide: function() {
                                    if (pathElement) {
                                        pathElement.dispose();
                                        pathElement = null
                                    }
                                    this.label.dispose();
                                    this.label = null;
                                    this.hidden = true
                                }
                            }
                        },
                        _drawDateMarkers: function() {
                            const that = this;
                            const options = that._options;
                            const translator = that._translator;
                            const viewport = that._getViewportRange();
                            const minBound = viewport.minVisible;
                            let dateMarkers = [];
                            let dateMarker;

                            function draw(markerDate, format, withoutStick) {
                                return that._drawDateMarker(markerDate, {
                                    x: translator.translate(markerDate),
                                    y: markersAreaTop,
                                    labelOptions: that._getLabelFormatOptions(format),
                                    withoutStick: withoutStick
                                }, viewport)
                            }
                            if (viewport.isEmpty() || !options.marker.visible || "datetime" !== options.argumentType || "discrete" === options.type || that._majorTicks.length <= 1) {
                                return []
                            }
                            const markersAreaTop = that._axisPosition + options.marker.topIndent;
                            const tickInterval = _date.default.getDateUnitInterval(this._tickInterval);
                            const markerInterval = function(tickInterval) {
                                let markerInterval = getNextDateUnit(tickInterval);
                                if ("quarter" === markerInterval) {
                                    markerInterval = getNextDateUnit(markerInterval)
                                }
                                return markerInterval
                            }(tickInterval);
                            const markerDates = function(min, max, markerInterval) {
                                const origMin = min;
                                let dates;
                                min = correctDateWithUnitBeginning(min, markerInterval);
                                max = correctDateWithUnitBeginning(max, markerInterval);
                                dates = _date.default.getSequenceByInterval(min, max, markerInterval);
                                if (dates.length && origMin > dates[0]) {
                                    dates = dates.slice(1)
                                }
                                return dates
                            }(minBound, viewport.maxVisible, markerInterval);
                            if (markerDates.length > 1 || 1 === markerDates.length && minBound < markerDates[0]) {
                                dateMarkers = markerDates.reduce((function(markers, curDate, i, dates) {
                                    const marker = draw(curDate, getMarkerFormat(curDate, dates[i - 1] || minBound < curDate && minBound, tickInterval, markerInterval));
                                    marker && markers.push(marker);
                                    return markers
                                }), []);
                                if (minBound < markerDates[0]) {
                                    dateMarker = draw(minBound, getMarkerFormat(minBound, markerDates[0], tickInterval, markerInterval), true);
                                    dateMarker && dateMarkers.unshift(dateMarker)
                                }
                            }
                            return dateMarkers
                        },
                        _adjustDateMarkers: function(offset) {
                            offset = offset || 0;
                            const that = this;
                            const markerOptions = this._options.marker;
                            const textIndent = markerOptions.width + markerOptions.textLeftIndent;
                            const invert = this._translator.getBusinessRange().invert;
                            const canvas = that._getCanvasStartEnd();
                            const dateMarkers = this._dateMarkers;
                            if (!dateMarkers.length) {
                                return offset
                            }
                            if (dateMarkers[0].cropped) {
                                if (!this._checkMarkersPosition(invert, dateMarkers[1], dateMarkers[0])) {
                                    dateMarkers[0].hideLabel()
                                }
                            }
                            let prevDateMarker;
                            dateMarkers.forEach((function(marker, i, markers) {
                                if (marker.cropped) {
                                    return
                                }
                                if (invert ? marker.getEnd() < canvas.end : marker.getEnd() > canvas.end) {
                                    marker.hideLabel()
                                } else if (that._checkMarkersPosition(invert, marker, prevDateMarker)) {
                                    prevDateMarker = marker
                                } else {
                                    marker.hide()
                                }
                            }));
                            this._dateMarkers.forEach((function(marker) {
                                if (marker.label) {
                                    const labelBBox = marker.labelBBox;
                                    const dy = marker.y + markerOptions.textTopIndent - labelBBox.y;
                                    marker.label.attr({
                                        translateX: invert ? marker.x - textIndent - labelBBox.x - labelBBox.width : marker.x + textIndent - labelBBox.x,
                                        translateY: dy + offset
                                    })
                                }
                                if (marker.line) {
                                    marker.line.attr({
                                        translateY: offset
                                    })
                                }
                            }));
                            that._initializeMarkersTrackers(offset);
                            return offset + markerOptions.topIndent + markerOptions.separatorHeight
                        },
                        _checkMarkersPosition: function(invert, dateMarker, prevDateMarker) {
                            if (void 0 === prevDateMarker) {
                                return true
                            }
                            return invert ? dateMarker.x < prevDateMarker.getEnd() : dateMarker.x > prevDateMarker.getEnd()
                        },
                        _initializeMarkersTrackers: function(offset) {
                            const separatorHeight = this._options.marker.separatorHeight;
                            const renderer = this._renderer;
                            const businessRange = this._translator.getBusinessRange();
                            const canvas = this._getCanvasStartEnd();
                            const group = this._axisElementsGroup;
                            this._markerTrackers = this._dateMarkers.filter((function(marker) {
                                return !marker.hidden
                            })).map((function(marker, i, markers) {
                                const nextMarker = markers[i + 1] || {
                                    x: canvas.end,
                                    date: businessRange.max
                                };
                                const x = marker.x;
                                const y = marker.y + offset;
                                const markerTracker = renderer.path([x, y, x, y + separatorHeight, nextMarker.x, y + separatorHeight, nextMarker.x, y, x, y], "area").attr({
                                    "stroke-width": 1,
                                    stroke: "grey",
                                    fill: "grey",
                                    opacity: 1e-4
                                }).append(group);
                                markerTracker.data("range", {
                                    startValue: marker.date,
                                    endValue: nextMarker.date
                                });
                                if (marker.title) {
                                    markerTracker.setTitle(marker.title)
                                }
                                return markerTracker
                            }))
                        },
                        _getLabelFormatOptions: function(formatString) {
                            const that = this;
                            let markerLabelOptions = that._markerLabelOptions;
                            if (!markerLabelOptions) {
                                that._markerLabelOptions = markerLabelOptions = (0, _extend.extend)(true, {}, that._options.marker.label)
                            }
                            if (!(0, _type.isDefined)(that._options.marker.label.format)) {
                                markerLabelOptions.format = formatString
                            }
                            return markerLabelOptions
                        },
                        _adjustConstantLineLabels: function(constantLines) {
                            const that = this;
                            const axisPosition = that._options.position;
                            const canvas = that.getCanvas();
                            const canvasLeft = canvas.left;
                            const canvasRight = canvas.width - canvas.right;
                            const canvasTop = canvas.top;
                            const canvasBottom = canvas.height - canvas.bottom;
                            const verticalCenter = canvasTop + (canvasBottom - canvasTop) / 2;
                            const horizontalCenter = canvasLeft + (canvasRight - canvasLeft) / 2;
                            let maxLabel = 0;
                            constantLines.forEach((function(item) {
                                const isHorizontal = that._isHorizontal;
                                const linesOptions = item.options;
                                const paddingTopBottom = linesOptions.paddingTopBottom;
                                const paddingLeftRight = linesOptions.paddingLeftRight;
                                const labelOptions = linesOptions.label;
                                const labelVerticalAlignment = labelOptions.verticalAlignment;
                                const labelHorizontalAlignment = labelOptions.horizontalAlignment;
                                const labelIsInside = "inside" === labelOptions.position;
                                const label = item.label;
                                const box = item.labelBBox;
                                let translateX;
                                let translateY;
                                if (null === label || box.isEmpty) {
                                    return
                                }
                                if (isHorizontal) {
                                    if (labelIsInside) {
                                        if (labelHorizontalAlignment === LEFT) {
                                            translateX = item.coord - paddingLeftRight - box.x - box.width
                                        } else {
                                            translateX = item.coord + paddingLeftRight - box.x
                                        }
                                        switch (labelVerticalAlignment) {
                                            case CENTER:
                                                translateY = verticalCenter - box.y - box.height / 2;
                                                break;
                                            case BOTTOM:
                                                translateY = canvasBottom - paddingTopBottom - box.y - box.height;
                                                break;
                                            default:
                                                translateY = canvasTop + paddingTopBottom - box.y
                                        }
                                    } else {
                                        if (axisPosition === labelVerticalAlignment) {
                                            maxLabel = _max(maxLabel, box.height + paddingTopBottom)
                                        }
                                        translateX = item.coord - box.x - box.width / 2;
                                        if (labelVerticalAlignment === BOTTOM) {
                                            translateY = canvasBottom + paddingTopBottom - box.y
                                        } else {
                                            translateY = canvasTop - paddingTopBottom - box.y - box.height
                                        }
                                    }
                                } else if (labelIsInside) {
                                    if (labelVerticalAlignment === BOTTOM) {
                                        translateY = item.coord + paddingTopBottom - box.y
                                    } else {
                                        translateY = item.coord - paddingTopBottom - box.y - box.height
                                    }
                                    switch (labelHorizontalAlignment) {
                                        case CENTER:
                                            translateX = horizontalCenter - box.x - box.width / 2;
                                            break;
                                        case RIGHT:
                                            translateX = canvasRight - paddingLeftRight - box.x - box.width;
                                            break;
                                        default:
                                            translateX = canvasLeft + paddingLeftRight - box.x
                                    }
                                } else {
                                    if (axisPosition === labelHorizontalAlignment) {
                                        maxLabel = _max(maxLabel, box.width + paddingLeftRight)
                                    }
                                    translateY = item.coord - box.y - box.height / 2;
                                    if (labelHorizontalAlignment === RIGHT) {
                                        translateX = canvasRight + paddingLeftRight - box.x
                                    } else {
                                        translateX = canvasLeft - paddingLeftRight - box.x - box.width
                                    }
                                }
                                label.attr({
                                    translateX: translateX,
                                    translateY: translateY
                                })
                            }));
                            return maxLabel
                        },
                        _drawConstantLinesForEstimating: function(constantLines) {
                            const that = this;
                            const renderer = this._renderer;
                            const group = renderer.g();
                            constantLines.forEach((function(options) {
                                that._drawConstantLineLabelText(options.label.text, 0, 0, options.label, group).attr({
                                    align: "center"
                                })
                            }));
                            return group.append(renderer.root)
                        },
                        _estimateLabelHeight: function(bBox, labelOptions) {
                            let height = bBox.height;
                            const drawingType = labelOptions.drawingType;
                            if ("stagger" === this._validateDisplayMode(drawingType) || "stagger" === this._validateOverlappingMode(labelOptions.overlappingBehavior, drawingType)) {
                                height = 2 * height + labelOptions.staggeringSpacing
                            }
                            if ("rotate" === this._validateDisplayMode(drawingType) || "rotate" === this._validateOverlappingMode(labelOptions.overlappingBehavior, drawingType)) {
                                const sinCos = (0, _utils.getCosAndSin)(labelOptions.rotationAngle);
                                height = height * sinCos.cos + bBox.width * sinCos.sin
                            }
                            return height && (height + labelOptions.indentFromAxis || 0) || 0
                        },
                        estimateMargins: function(canvas) {
                            this.updateCanvas(canvas);
                            const range = this._getViewportRange();
                            const ticksData = this._createTicksAndLabelFormat(range);
                            const ticks = ticksData.ticks;
                            const tickInterval = ticksData.tickInterval;
                            const options = this._options;
                            const constantLineOptions = this._outsideConstantLines.filter(l => l.labelOptions.visible).map(l => l.options);
                            const rootElement = this._renderer.root;
                            const labelIsVisible = options.label.visible && !range.isEmpty() && ticks.length;
                            const labelValue = labelIsVisible && this.formatLabel(ticks[ticks.length - 1], options.label, void 0, void 0, tickInterval, ticks);
                            const labelElement = labelIsVisible && this._renderer.text(labelValue, 0, 0).css(this._textFontStyles).attr(this._textOptions).append(rootElement);
                            const titleElement = this._drawTitleText(rootElement, {
                                x: 0,
                                y: 0
                            });
                            const constantLinesLabelsElement = this._drawConstantLinesForEstimating(constantLineOptions);
                            const labelBox = !options.label.template && labelElement && labelElement.getBBox() || {
                                x: 0,
                                y: 0,
                                width: 0,
                                height: 0
                            };
                            const titleBox = titleElement && titleElement.getBBox() || {
                                x: 0,
                                y: 0,
                                width: 0,
                                height: 0
                            };
                            const constantLinesBox = constantLinesLabelsElement.getBBox();
                            const titleHeight = titleBox.height ? titleBox.height + options.title.margin : 0;
                            const labelHeight = this._estimateLabelHeight(labelBox, options.label);
                            const constantLinesHeight = constantLinesBox.height ? constantLinesBox.height + (constantLines = constantLineOptions, constantLines.reduce((function(padding, options) {
                                return _max(padding, options.paddingTopBottom)
                            }), 0)) : 0;
                            var constantLines;
                            const height = labelHeight + titleHeight;
                            const margins = {
                                left: _max(getLeftMargin(labelBox), getLeftMargin(constantLinesBox)),
                                right: _max(getRightMargin(labelBox), getRightMargin(constantLinesBox)),
                                top: ("top" === options.position ? height : 0) + getConstantLineLabelMarginForVerticalAlignment(constantLineOptions, "top", constantLinesHeight),
                                bottom: ("top" !== options.position ? height : 0) + getConstantLineLabelMarginForVerticalAlignment(constantLineOptions, "bottom", constantLinesHeight)
                            };
                            labelElement && labelElement.remove();
                            titleElement && titleElement.remove();
                            constantLinesLabelsElement && constantLinesLabelsElement.remove();
                            return margins
                        },
                        _checkAlignmentConstantLineLabels: function(labelOptions) {
                            const position = labelOptions.position;
                            let verticalAlignment = (labelOptions.verticalAlignment || "").toLowerCase();
                            let horizontalAlignment = (labelOptions.horizontalAlignment || "").toLowerCase();
                            if (this._isHorizontal) {
                                if ("outside" === position) {
                                    verticalAlignment = verticalAlignment === BOTTOM ? BOTTOM : TOP;
                                    horizontalAlignment = CENTER
                                } else {
                                    verticalAlignment = verticalAlignment === CENTER ? CENTER : verticalAlignment === BOTTOM ? BOTTOM : TOP;
                                    horizontalAlignment = horizontalAlignment === LEFT ? LEFT : RIGHT
                                }
                            } else if ("outside" === position) {
                                verticalAlignment = CENTER;
                                horizontalAlignment = horizontalAlignment === LEFT ? LEFT : RIGHT
                            } else {
                                verticalAlignment = verticalAlignment === BOTTOM ? BOTTOM : TOP;
                                horizontalAlignment = horizontalAlignment === RIGHT ? RIGHT : horizontalAlignment === CENTER ? CENTER : LEFT
                            }
                            labelOptions.verticalAlignment = verticalAlignment;
                            labelOptions.horizontalAlignment = horizontalAlignment
                        },
                        _getConstantLineLabelsCoords: function(value, lineLabelOptions) {
                            const that = this;
                            let x = value;
                            let y = value;
                            if (that._isHorizontal) {
                                y = that._orthogonalPositions["top" === lineLabelOptions.verticalAlignment ? "start" : "end"]
                            } else {
                                x = that._orthogonalPositions["right" === lineLabelOptions.horizontalAlignment ? "end" : "start"]
                            }
                            return {
                                x: x,
                                y: y
                            }
                        },
                        _getAdjustedStripLabelCoords: function(strip) {
                            const stripOptions = strip.options;
                            const paddingTopBottom = stripOptions.paddingTopBottom;
                            const paddingLeftRight = stripOptions.paddingLeftRight;
                            const horizontalAlignment = stripOptions.label.horizontalAlignment;
                            const verticalAlignment = stripOptions.label.verticalAlignment;
                            const box = strip.labelBBox;
                            const labelHeight = box.height;
                            const labelWidth = box.width;
                            const labelCoords = strip.labelCoords;
                            let y = labelCoords.y - box.y;
                            let x = labelCoords.x - box.x;
                            if (verticalAlignment === TOP) {
                                y += paddingTopBottom
                            } else if (verticalAlignment === CENTER) {
                                y -= labelHeight / 2
                            } else if (verticalAlignment === BOTTOM) {
                                y -= paddingTopBottom + labelHeight
                            }
                            if (horizontalAlignment === LEFT) {
                                x += paddingLeftRight
                            } else if (horizontalAlignment === CENTER) {
                                x -= labelWidth / 2
                            } else if (horizontalAlignment === RIGHT) {
                                x -= paddingLeftRight + labelWidth
                            }
                            return {
                                translateX: x,
                                translateY: y
                            }
                        },
                        _adjustTitle: function(offset) {
                            offset = offset || 0;
                            if (!this._title) {
                                return
                            }
                            const options = this._options;
                            const position = options.position;
                            const margin = options.title.margin;
                            const title = this._title;
                            const boxTitle = title.bBox;
                            const x = boxTitle.x;
                            const y = boxTitle.y;
                            const width = boxTitle.width;
                            const height = boxTitle.height;
                            const axisPosition = this._axisPosition;
                            const loCoord = axisPosition - margin - offset;
                            const hiCoord = axisPosition + margin + offset;
                            const params = {};
                            if (this._isHorizontal) {
                                if (position === TOP) {
                                    params.translateY = loCoord - (y + height)
                                } else {
                                    params.translateY = hiCoord - y
                                }
                            } else if (position === LEFT) {
                                params.translateX = loCoord - (x + width)
                            } else {
                                params.translateX = hiCoord - x
                            }
                            title.element.attr(params)
                        },
                        _checkTitleOverflow: function(titleElement) {
                            if (!this._title && !titleElement) {
                                return
                            }
                            const canvasLength = this._getScreenDelta();
                            const title = titleElement ? {
                                bBox: titleElement.getBBox(),
                                element: titleElement
                            } : this._title;
                            const titleOptions = this._options.title;
                            const boxTitle = title.bBox;
                            if ((this._isHorizontal ? boxTitle.width : boxTitle.height) > canvasLength) {
                                title.element.setMaxSize(canvasLength, void 0, {
                                    wordWrap: titleOptions.wordWrap || "none",
                                    textOverflow: titleOptions.textOverflow || "ellipsis"
                                });
                                this._wrapped = titleOptions.wordWrap && "none" !== titleOptions.wordWrap
                            } else {
                                const moreThanOriginalSize = title.originalSize && canvasLength > (this._isHorizontal ? title.originalSize.width : title.originalSize.height);
                                !this._wrapped && moreThanOriginalSize && title.element.restoreText()
                            }
                        },
                        coordsIn: function(x, y) {
                            const canvas = this.getCanvas();
                            const isHorizontal = this._options.isHorizontal;
                            const position = this._options.position;
                            const coord = isHorizontal ? y : x;
                            if (isHorizontal && (x < canvas.left || x > canvas.width - canvas.right) || !isHorizontal && (y < canvas.top || y > canvas.height - canvas.bottom)) {
                                return false
                            }
                            if (isHorizontal && position === _axes_constants.default.top || !isHorizontal && position === _axes_constants.default.left) {
                                return coord < canvas[position]
                            }
                            return coord > canvas[isHorizontal ? "height" : "width"] - canvas[position]
                        },
                        _boundaryTicksVisibility: {
                            min: true,
                            max: true
                        },
                        adjust() {
                            const seriesData = this._seriesData;
                            const viewport = this._series.filter(s => s.isVisible()).reduce((range, s) => {
                                const seriesRange = s.getViewport();
                                range.min = (0, _type.isDefined)(seriesRange.min) ? range.min < seriesRange.min ? range.min : seriesRange.min : range.min;
                                range.max = (0, _type.isDefined)(seriesRange.max) ? range.max > seriesRange.max ? range.max : seriesRange.max : range.max;
                                if (s.showZero) {
                                    range = new _range.Range(range);
                                    range.correctValueZeroLevel()
                                }
                                return range
                            }, {});
                            if ((0, _type.isDefined)(viewport.min) && (0, _type.isDefined)(viewport.max)) {
                                seriesData.minVisible = viewport.min;
                                seriesData.maxVisible = viewport.max
                            }
                            seriesData.userBreaks = this._getScaleBreaks(this._options, {
                                minVisible: seriesData.minVisible,
                                maxVisible: seriesData.maxVisible
                            }, this._series, this.isArgumentAxis);
                            this._translator.updateBusinessRange(this._getViewportRange())
                        },
                        hasWrap() {
                            return this._wrapped
                        },
                        getAxisPosition() {
                            return this._axisPosition
                        },
                        _getStick: function() {
                            return !this._options.valueMarginsEnabled
                        },
                        _getStripLabelCoords: function(from, to, stripLabelOptions) {
                            const orthogonalPositions = this._orthogonalPositions;
                            const isHorizontal = this._isHorizontal;
                            const horizontalAlignment = stripLabelOptions.horizontalAlignment;
                            const verticalAlignment = stripLabelOptions.verticalAlignment;
                            let x;
                            let y;
                            if (isHorizontal) {
                                if (horizontalAlignment === CENTER) {
                                    x = from + (to - from) / 2
                                } else if (horizontalAlignment === LEFT) {
                                    x = from
                                } else if (horizontalAlignment === RIGHT) {
                                    x = to
                                }
                                y = orthogonalPositions[function(alignment) {
                                    let position = "start";
                                    if ("center" === alignment) {
                                        position = "center"
                                    }
                                    if ("bottom" === alignment) {
                                        position = "end"
                                    }
                                    return position
                                }(verticalAlignment)]
                            } else {
                                x = orthogonalPositions[function(alignment) {
                                    let position = "start";
                                    if ("center" === alignment) {
                                        position = "center"
                                    }
                                    if ("right" === alignment) {
                                        position = "end"
                                    }
                                    return position
                                }(horizontalAlignment)];
                                if (verticalAlignment === TOP) {
                                    y = from
                                } else if (verticalAlignment === CENTER) {
                                    y = to + (from - to) / 2
                                } else if (verticalAlignment === BOTTOM) {
                                    y = to
                                }
                            }
                            return {
                                x: x,
                                y: y
                            }
                        },
                        _getTranslatedValue: function(value, offset) {
                            const pos1 = this._translator.translate(value, offset, "semidiscrete" === this._options.type && this._options.tickInterval);
                            const pos2 = this._axisPosition;
                            const isHorizontal = this._isHorizontal;
                            return {
                                x: isHorizontal ? pos1 : pos2,
                                y: isHorizontal ? pos2 : pos1
                            }
                        },
                        areCoordsOutsideAxis: function(coords) {
                            const coord = this._isHorizontal ? coords.x : coords.y;
                            const visibleArea = this.getVisibleArea();
                            if (coord < visibleArea[0] || coord > visibleArea[1]) {
                                return true
                            }
                            return false
                        },
                        _getSkippedCategory: function(ticks) {
                            let skippedCategory;
                            if (this._options.type === _axes_constants.default.discrete && this._tickOffset && 0 !== ticks.length) {
                                skippedCategory = ticks[ticks.length - 1]
                            }
                            return skippedCategory
                        },
                        _filterBreaks: function(breaks, viewport, breakStyle) {
                            const minVisible = viewport.minVisible;
                            const maxVisible = viewport.maxVisible;
                            const breakSize = breakStyle ? breakStyle.width : 0;
                            return breaks.reduce((function(result, currentBreak) {
                                let from = currentBreak.from;
                                let to = currentBreak.to;
                                const lastResult = result[result.length - 1];
                                let newBreak;
                                if (!(0, _type.isDefined)(from) || !(0, _type.isDefined)(to)) {
                                    return result
                                }
                                if (from > to) {
                                    to = [from, from = to][0]
                                }
                                if (result.length && from < lastResult.to) {
                                    if (to > lastResult.to) {
                                        lastResult.to = to > maxVisible ? maxVisible : to;
                                        if (lastResult.gapSize) {
                                            lastResult.gapSize = void 0;
                                            lastResult.cumulativeWidth += breakSize
                                        }
                                    }
                                } else if (from >= minVisible && from < maxVisible || to <= maxVisible && to > minVisible) {
                                    from = from >= minVisible ? from : minVisible;
                                    to = to <= maxVisible ? to : maxVisible;
                                    if (to - from < maxVisible - minVisible) {
                                        var _lastResult$cumulativ;
                                        newBreak = {
                                            from: from,
                                            to: to,
                                            cumulativeWidth: (null !== (_lastResult$cumulativ = null === lastResult || void 0 === lastResult ? void 0 : lastResult.cumulativeWidth) && void 0 !== _lastResult$cumulativ ? _lastResult$cumulativ : 0) + breakSize
                                        };
                                        if (currentBreak.gapSize) {
                                            var _lastResult$cumulativ2;
                                            newBreak.gapSize = _date.default.convertMillisecondsToDateUnits(to - from);
                                            newBreak.cumulativeWidth = null !== (_lastResult$cumulativ2 = null === lastResult || void 0 === lastResult ? void 0 : lastResult.cumulativeWidth) && void 0 !== _lastResult$cumulativ2 ? _lastResult$cumulativ2 : 0
                                        }
                                        result.push(newBreak)
                                    }
                                }
                                return result
                            }), [])
                        },
                        _getScaleBreaks: function(axisOptions, viewport, series, isArgumentAxis) {
                            const that = this;
                            let breaks = (axisOptions.breaks || []).map((function(b) {
                                return {
                                    from: that.parser(b.startValue),
                                    to: that.parser(b.endValue)
                                }
                            }));
                            if ("discrete" !== axisOptions.type && "datetime" === axisOptions.dataType && axisOptions.workdaysOnly) {
                                breaks = breaks.concat((0, _datetime_breaks.generateDateBreaks)(viewport.minVisible, viewport.maxVisible, axisOptions.workWeek, axisOptions.singleWorkdays, axisOptions.holidays))
                            }
                            if (!isArgumentAxis && "discrete" !== axisOptions.type && "datetime" !== axisOptions.dataType && axisOptions.autoBreaksEnabled && 0 !== axisOptions.maxAutoBreakCount) {
                                breaks = breaks.concat(function(_ref, series, _ref2) {
                                    let {
                                        logarithmBase: logarithmBase,
                                        type: type,
                                        maxAutoBreakCount: maxAutoBreakCount
                                    } = _ref;
                                    let {
                                        minVisible: minVisible,
                                        maxVisible: maxVisible
                                    } = _ref2;
                                    const breaks = [];
                                    const getRange = "logarithmic" === type ? (min, max) => (0, _utils.getLog)(max / min, logarithmBase) : (min, max) => max - min;
                                    let visibleRange = getRange(minVisible, maxVisible);
                                    const points = series.reduce((result, s) => {
                                        const points = s.getPointsInViewPort();
                                        result[0] = result[0].concat(points[0]);
                                        result[1] = result[1].concat(points[1]);
                                        return result
                                    }, [
                                        [],
                                        []
                                    ]);
                                    const sortedAllPoints = points[0].concat(points[1]).sort((a, b) => b - a);
                                    const edgePoints = points[1].filter(p => points[0].indexOf(p) < 0);
                                    let minDiff = .3 * visibleRange;
                                    const ranges = function(points, edgePoints, getRange) {
                                        let i;
                                        let length;
                                        let maxRange = null;
                                        const ranges = [];
                                        let curValue;
                                        let prevValue;
                                        let curRange;
                                        for (i = 1, length = points.length; i < length; i++) {
                                            curValue = points[i];
                                            prevValue = points[i - 1];
                                            curRange = getRange(curValue, prevValue);
                                            if (edgePoints.indexOf(curValue) >= 0) {
                                                if (!maxRange || curRange > maxRange.length) {
                                                    maxRange = {
                                                        start: curValue,
                                                        end: prevValue,
                                                        length: curRange
                                                    }
                                                }
                                            } else {
                                                if (maxRange && curRange < maxRange.length) {
                                                    ranges.push(maxRange)
                                                } else {
                                                    ranges.push({
                                                        start: curValue,
                                                        end: prevValue,
                                                        length: curRange
                                                    })
                                                }
                                                maxRange = null
                                            }
                                        }
                                        if (maxRange) {
                                            ranges.push(maxRange)
                                        }
                                        return ranges
                                    }(sortedAllPoints, edgePoints, getRange).sort((a, b) => b.length - a.length);
                                    const epsilon = _math.min.apply(null, ranges.map(r => r.length)) / 1e3;
                                    const _maxAutoBreakCount = (0, _type.isDefined)(maxAutoBreakCount) ? _math.min(maxAutoBreakCount, ranges.length) : ranges.length;
                                    for (let i = 0; i < _maxAutoBreakCount; i++) {
                                        if (ranges[i].length >= minDiff) {
                                            if (visibleRange <= ranges[i].length) {
                                                break
                                            }
                                            visibleRange -= ranges[i].length;
                                            if (visibleRange > epsilon || visibleRange < -epsilon) {
                                                breaks.push({
                                                    from: ranges[i].start,
                                                    to: ranges[i].end
                                                });
                                                minDiff = .3 * visibleRange
                                            }
                                        } else {
                                            break
                                        }
                                    }
                                    sortingBreaks(breaks);
                                    return breaks
                                }(axisOptions, series, viewport))
                            }
                            return sortingBreaks(breaks)
                        },
                        _drawBreak: function(translatedEnd, positionFrom, positionTo, width, options, group) {
                            const breakStart = translatedEnd - (!this._translator.isInverted() ? width + 1 : 0);
                            const attr = {
                                "stroke-width": 1,
                                stroke: options.borderColor,
                                sharp: !options.isWaved ? options.isHorizontal ? "h" : "v" : void 0
                            };
                            const spaceAttr = {
                                stroke: options.color,
                                "stroke-width": width
                            };
                            const getPoints = this._isHorizontal ? rotateLine : function(p) {
                                return p
                            };
                            const drawer = getLineDrawer(this._renderer, group, getPoints, positionFrom, breakStart, positionTo, options.isWaved);
                            drawer(width / 2, spaceAttr);
                            drawer(0, attr);
                            drawer(width, attr)
                        },
                        _createBreakClipRect: function(from, to) {
                            const that = this;
                            const canvas = that._canvas;
                            const clipWidth = to - from;
                            let clipRect;
                            if (that._isHorizontal) {
                                clipRect = that._renderer.clipRect(canvas.left, from, canvas.width, clipWidth)
                            } else {
                                clipRect = that._renderer.clipRect(from, canvas.top, clipWidth, canvas.height)
                            }
                            that._breaksElements = that._breaksElements || [];
                            that._breaksElements.push(clipRect);
                            return clipRect.id
                        },
                        _createBreaksGroup: function(clipFrom, clipTo) {
                            const group = this._renderer.g().attr({
                                class: this._axisCssPrefix + "breaks",
                                "clip-path": this._createBreakClipRect(clipFrom, clipTo)
                            }).append(this._scaleBreaksGroup);
                            this._breaksElements = this._breaksElements || [];
                            this._breaksElements.push(group);
                            return group
                        },
                        _disposeBreaksGroup: function() {
                            (this._breaksElements || []).forEach((function(clipRect) {
                                clipRect.dispose()
                            }));
                            this._breaksElements = null
                        },
                        drawScaleBreaks: function(customCanvas) {
                            const that = this;
                            const options = that._options;
                            const breakStyle = options.breakStyle;
                            const position = options.position;
                            let positionFrom;
                            let positionTo;
                            const breaks = that._translator.getBusinessRange().breaks || [];
                            let additionGroup;
                            let additionBreakFrom;
                            let additionBreakTo;
                            that._disposeBreaksGroup();
                            if (!(breaks && breaks.length)) {
                                return
                            }
                            const breakOptions = {
                                color: that._options.containerColor,
                                borderColor: breakStyle.color,
                                isHorizontal: that._isHorizontal,
                                isWaved: "straight" !== breakStyle.line.toLowerCase()
                            };
                            if (customCanvas) {
                                positionFrom = customCanvas.start;
                                positionTo = customCanvas.end
                            } else {
                                positionFrom = that._orthogonalPositions.start - (options.visible && !that._axisShift && (position === LEFT || position === TOP) ? 3 : 0);
                                positionTo = that._orthogonalPositions.end + (options.visible && (position === RIGHT || position === BOTTOM) ? 3 : 0)
                            }
                            const mainGroup = that._createBreaksGroup(positionFrom, positionTo);
                            if (that._axisShift && options.visible) {
                                additionBreakFrom = that._axisPosition - that._axisShift - 3;
                                additionBreakTo = additionBreakFrom + 6;
                                additionGroup = that._createBreaksGroup(additionBreakFrom, additionBreakTo)
                            }
                            breaks.forEach((function(br) {
                                if (!br.gapSize) {
                                    const breakCoord = that._getTranslatedCoord(br.to);
                                    that._drawBreak(breakCoord, positionFrom, positionTo, breakStyle.width, breakOptions, mainGroup);
                                    if (that._axisShift && options.visible) {
                                        that._drawBreak(breakCoord, additionBreakFrom, additionBreakTo, breakStyle.width, breakOptions, additionGroup)
                                    }
                                }
                            }))
                        },
                        _getSpiderCategoryOption: _common.noop,
                        shift: function(margins) {
                            const options = this._options;
                            const isHorizontal = options.isHorizontal;
                            const axesSpacing = this.getMultipleAxesSpacing();
                            const constantLinesGroups = this._axisConstantLineGroups;

                            function shiftGroup(side, group) {
                                const attr = {
                                    translateX: 0,
                                    translateY: 0
                                };
                                const shift = margins[side] ? margins[side] + axesSpacing : 0;
                                attr[isHorizontal ? "translateY" : "translateX"] = (side === LEFT || side === TOP ? -1 : 1) * shift;
                                (group[side] || group).attr(attr);
                                return shift
                            }
                            this._axisShift = shiftGroup(options.position, this._axisGroup);
                            shiftGroup(options.position, this._axisElementsGroup);
                            (isHorizontal ? [TOP, BOTTOM] : [LEFT, RIGHT]).forEach(side => {
                                shiftGroup(side, constantLinesGroups.above);
                                shiftGroup(side, constantLinesGroups.under)
                            })
                        },
                        getCustomPosition(position) {
                            const that = this;
                            const orthogonalAxis = that.getOrthogonalAxis();
                            const resolvedPosition = null !== position && void 0 !== position ? position : that.getResolvedPositionOption();
                            const offset = that.getOptions().offset;
                            const orthogonalTranslator = orthogonalAxis.getTranslator();
                            const orthogonalAxisType = orthogonalAxis.getOptions().type;
                            let validPosition = orthogonalAxis.validateUnit(resolvedPosition);
                            let currentPosition;
                            if ("discrete" === orthogonalAxisType && (!orthogonalTranslator._categories || orthogonalTranslator._categories.indexOf(validPosition) < 0)) {
                                validPosition = void 0
                            }
                            if (that.positionIsBoundary(resolvedPosition)) {
                                currentPosition = that.getPredefinedPosition(resolvedPosition)
                            } else if (!(0, _type.isDefined)(validPosition)) {
                                currentPosition = that.getPredefinedPosition(that.getOptions().position)
                            } else {
                                currentPosition = orthogonalTranslator.to(validPosition, -1)
                            }
                            if (isFinite(currentPosition) && isFinite(offset)) {
                                currentPosition += offset
                            }
                            return currentPosition
                        },
                        getCustomBoundaryPosition(position) {
                            const that = this;
                            const {
                                customPosition: customPosition,
                                offset: offset
                            } = that.getOptions();
                            const resolvedPosition = null !== position && void 0 !== position ? position : that.getResolvedPositionOption();
                            const orthogonalAxis = that.getOrthogonalAxis();
                            const orthogonalTranslator = orthogonalAxis.getTranslator();
                            const visibleArea = orthogonalTranslator.getCanvasVisibleArea();
                            if (!(0, _type.isDefined)(orthogonalAxis._orthogonalPositions) || 0 === orthogonalTranslator.canvasLength) {
                                return
                            }
                            const currentPosition = that.getCustomPosition(resolvedPosition);
                            if (!(0, _type.isDefined)(currentPosition)) {
                                return that.getResolvedBoundaryPosition()
                            } else if ((0, _type.isDefined)(customPosition)) {
                                if (currentPosition <= visibleArea.min) {
                                    return that._isHorizontal ? TOP : LEFT
                                } else if (currentPosition >= visibleArea.max) {
                                    return that._isHorizontal ? BOTTOM : RIGHT
                                }
                            } else if ((0, _type.isDefined)(offset)) {
                                if (currentPosition <= that._orthogonalPositions.start) {
                                    return that._isHorizontal ? TOP : LEFT
                                } else if (currentPosition >= that._orthogonalPositions.end) {
                                    return that._isHorizontal ? BOTTOM : RIGHT
                                }
                            }
                            return currentPosition
                        },
                        getResolvedPositionOption() {
                            var _options$customPositi;
                            const options = this.getOptions();
                            return null !== (_options$customPositi = options.customPosition) && void 0 !== _options$customPositi ? _options$customPositi : options.position
                        },
                        customPositionIsAvailable() {
                            const options = this.getOptions();
                            return (0, _type.isDefined)(this.getOrthogonalAxis()) && ((0, _type.isDefined)(options.customPosition) || isFinite(options.offset))
                        },
                        hasNonBoundaryPosition() {
                            return this.customPositionIsAvailable() && !this.customPositionIsBoundary()
                        },
                        getResolvedBoundaryPosition() {
                            return this.customPositionIsBoundary() ? this._customBoundaryPosition : this.getOptions().position
                        },
                        customPositionEqualsToPredefined() {
                            return this.customPositionIsBoundary() && this._customBoundaryPosition === this.getOptions().position
                        },
                        customPositionIsBoundary() {
                            return this.positionIsBoundary(this._customBoundaryPosition)
                        },
                        positionIsBoundary: position => [TOP, LEFT, BOTTOM, RIGHT].indexOf(position) >= 0,
                        getPredefinedPosition(position) {
                            var _this$_orthogonalPosi;
                            return null === (_this$_orthogonalPosi = this._orthogonalPositions) || void 0 === _this$_orthogonalPosi ? void 0 : _this$_orthogonalPosi[position === TOP || position === LEFT ? "start" : "end"]
                        },
                        resolveOverlappingForCustomPositioning(oppositeAxes) {
                            const that = this;
                            if (!that.hasNonBoundaryPosition() && !that.customPositionIsBoundary() && !oppositeAxes.some(a => a.hasNonBoundaryPosition())) {
                                return
                            }
                            const overlappingObj = {
                                axes: [],
                                ticks: []
                            };
                            oppositeAxes.filter(orthogonalAxis => orthogonalAxis.pane === that.pane).forEach(orthogonalAxis => {
                                for (let i = 0; i < that._majorTicks.length; i++) {
                                    const tick = that._majorTicks[i];
                                    const label = tick.label;
                                    if (label) {
                                        if (overlappingObj.axes.indexOf(orthogonalAxis) < 0 && that._detectElementsOverlapping(label, orthogonalAxis._axisElement)) {
                                            overlappingObj.axes.push(orthogonalAxis);
                                            that._shiftThroughOrthogonalAxisOverlappedTick(label, orthogonalAxis)
                                        }
                                        for (let j = 0; j < orthogonalAxis._majorTicks.length; j++) {
                                            const oppositeTick = orthogonalAxis._majorTicks[j];
                                            const oppositeLabel = oppositeTick.label;
                                            if (oppositeLabel && that._detectElementsOverlapping(label, oppositeLabel)) {
                                                overlappingObj.ticks.push(tick);
                                                that._shiftThroughAxisOverlappedTick(tick);
                                                i = that._majorTicks.length;
                                                break
                                            }
                                        }
                                    }
                                    if (tick.mark && overlappingObj.ticks.indexOf(tick) < 0) {
                                        if (that._isHorizontal && tick.mark.attr("translateY")) {
                                            tick.mark.attr({
                                                translateY: 0
                                            })
                                        } else if (!that._isHorizontal && tick.mark.attr("translateX")) {
                                            tick.mark.attr({
                                                translateX: 0
                                            })
                                        }
                                    }
                                }
                            })
                        },
                        _shiftThroughOrthogonalAxisOverlappedTick(label, orthogonalAxis) {
                            const labelBBox = label.getBBox();
                            const orthogonalAxisPosition = orthogonalAxis.getAxisPosition();
                            const orthogonalAxisLabelOptions = orthogonalAxis.getOptions().label;
                            const orthogonalAxisLabelPosition = orthogonalAxisLabelOptions.position;
                            const orthogonalAxisLabelIndent = orthogonalAxisLabelOptions.indentFromAxis / 2;
                            const translateCoordName = this._isHorizontal ? "translateX" : "translateY";
                            const defaultOrthogonalAxisLabelPosition = this._isHorizontal ? LEFT : TOP;
                            const translate = label.attr(translateCoordName);
                            const labelCoord = (this._isHorizontal ? labelBBox.x : labelBBox.y) + translate;
                            const labelSize = this._isHorizontal ? labelBBox.width : labelBBox.height;
                            const outsidePart = orthogonalAxisPosition - labelCoord;
                            const insidePart = labelCoord + labelSize - orthogonalAxisPosition;
                            const attr = {};
                            attr[translateCoordName] = translate;
                            if (outsidePart > 0 && insidePart > 0) {
                                if (insidePart - outsidePart > 1) {
                                    attr[translateCoordName] += outsidePart + orthogonalAxisLabelIndent
                                } else if (outsidePart - insidePart > 1) {
                                    attr[translateCoordName] -= insidePart + orthogonalAxisLabelIndent
                                } else {
                                    attr[translateCoordName] += orthogonalAxisLabelPosition === defaultOrthogonalAxisLabelPosition ? outsidePart + orthogonalAxisLabelIndent : -(insidePart + orthogonalAxisLabelIndent)
                                }
                                label.attr(attr)
                            }
                        },
                        _shiftThroughAxisOverlappedTick(tick) {
                            var _tick$mark;
                            const that = this;
                            const label = tick.label;
                            if (!label) {
                                return
                            }
                            const labelBBox = label.getBBox();
                            const tickMarkBBox = null === (_tick$mark = tick.mark) || void 0 === _tick$mark ? void 0 : _tick$mark.getBBox();
                            const axisPosition = that.getAxisPosition();
                            const labelOptions = that.getOptions().label;
                            const labelIndent = labelOptions.indentFromAxis;
                            const labelPosition = labelOptions.position;
                            const defaultLabelPosition = that._isHorizontal ? TOP : LEFT;
                            const translateCoordName = that._isHorizontal ? "translateY" : "translateX";
                            const translate = label.attr(translateCoordName);
                            const labelCoord = (that._isHorizontal ? labelBBox.y : labelBBox.x) + translate;
                            const labelSize = that._isHorizontal ? labelBBox.height : labelBBox.width;
                            const attr = {};
                            attr[translateCoordName] = translate + (labelPosition === defaultLabelPosition ? axisPosition - labelCoord + labelIndent : -(labelCoord - axisPosition + labelSize + labelIndent));
                            label.attr(attr);
                            if (tick.mark) {
                                const markerSize = that._isHorizontal ? tickMarkBBox.height : tickMarkBBox.width;
                                const dir = labelPosition === defaultLabelPosition ? 1 : -1;
                                attr[translateCoordName] = dir * (markerSize - 1);
                                tick.mark.attr(attr)
                            }
                        },
                        _detectElementsOverlapping(element1, element2) {
                            if (!element1 || !element2) {
                                return false
                            }
                            const bBox1 = element1.getBBox();
                            const x1 = bBox1.x + element1.attr("translateX");
                            const y1 = bBox1.y + element1.attr("translateY");
                            const bBox2 = element2.getBBox();
                            const x2 = bBox2.x + element2.attr("translateX");
                            const y2 = bBox2.y + element2.attr("translateY");
                            return (x2 >= x1 && x2 <= x1 + bBox1.width || x1 >= x2 && x1 <= x2 + bBox2.width) && (y2 >= y1 && y2 <= y1 + bBox1.height || y1 >= y2 && y1 <= y2 + bBox2.height)
                        }
                    }
                };
                exports.default = _default;

                function getLineDrawer(renderer, root, rotatePoints, positionFrom, breakStart, positionTo, isWaved) {
                    const elementType = isWaved ? "bezier" : "line";
                    const group = renderer.g().append(root);
                    return function(offset, attr) {
                        renderer.path(rotatePoints(function(positionFrom, breakStart, positionTo, offset, isWaved) {
                            if (!isWaved) {
                                return [positionFrom, breakStart + offset, positionTo, breakStart + offset]
                            }
                            breakStart += offset;
                            let currentPosition;
                            const topPoint = breakStart + 0;
                            const centerPoint = breakStart + 2;
                            const bottomPoint = breakStart + 4;
                            const points = [
                                [positionFrom, centerPoint]
                            ];
                            for (currentPosition = positionFrom; currentPosition < positionTo + 24; currentPosition += 24) {
                                points.push([currentPosition + 6, topPoint, currentPosition + 6, topPoint, currentPosition + 12, centerPoint, currentPosition + 18, bottomPoint, currentPosition + 18, bottomPoint, currentPosition + 24, centerPoint])
                            }
                            return [].concat.apply([], points)
                        }(positionFrom, breakStart, positionTo, offset, isWaved)), elementType).attr(attr).append(group)
                    }
                }

                function rotateLine(lineCoords) {
                    const points = [];
                    let i;
                    for (i = 0; i < lineCoords.length; i += 2) {
                        points.push(lineCoords[i + 1]);
                        points.push(lineCoords[i])
                    }
                    return points
                }
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        45888:
            /*!**************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/bar_gauge.js ***!
              \**************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _bar_gauge = __webpack_require__( /*! ./gauges/bar_gauge */ 44898);
                var _default = _bar_gauge.dxBarGauge;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        88950:
            /*!***********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/bullet.js ***!
              \***********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _bullet = (obj = __webpack_require__( /*! ./sparklines/bullet */ 59989), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _bullet.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        99511:
            /*!**********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/chart.js ***!
              \**********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_chart = (obj = __webpack_require__( /*! ../__internal/viz/m_chart */ 4096), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _m_chart.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        97574:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/chart_components/crosshair.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Crosshair = Crosshair;
                exports.getMargins = function() {
                    return {
                        x: 8,
                        y: 4
                    }
                };
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                const math = Math;
                const mathAbs = math.abs;
                const mathMin = math.min;
                const mathMax = math.max;
                const mathFloor = math.floor;

                function getRectangleBBox(bBox) {
                    return {
                        x: bBox.x - 8,
                        y: bBox.y - 4,
                        width: bBox.width + 16,
                        height: bBox.height + 8
                    }
                }

                function getLabelCheckerPosition(x, y, isHorizontal, canvas) {
                    const params = isHorizontal ? ["x", "width", "y", "height", y, 0] : ["y", "height", "x", "width", x, 1];
                    return function(bBox, position, coord) {
                        const labelCoord = {
                            x: coord.x,
                            y: coord.y
                        };
                        const rectangleBBox = getRectangleBBox(bBox);
                        const delta = isHorizontal ? coord.y - bBox.y - bBox.height / 2 : coord.y - bBox.y;
                        labelCoord.y = isHorizontal || !isHorizontal && "bottom" === position ? coord.y + delta : coord.y;
                        if (rectangleBBox[params[0]] < 0) {
                            labelCoord[params[0]] -= rectangleBBox[params[0]]
                        } else if (rectangleBBox[params[0]] + rectangleBBox[params[1]] + delta * params[5] > canvas[params[1]]) {
                            labelCoord[params[0]] -= rectangleBBox[params[0]] + rectangleBBox[params[1]] + delta * params[5] - canvas[params[1]]
                        }
                        if (params[4] - rectangleBBox[params[3]] / 2 < 0) {
                            labelCoord[params[2]] -= params[4] - rectangleBBox[params[3]] / 2
                        } else if (params[4] + rectangleBBox[params[3]] / 2 > canvas[params[3]]) {
                            labelCoord[params[2]] -= params[4] + rectangleBBox[params[3]] / 2 - canvas[params[3]]
                        }
                        return labelCoord
                    }
                }

                function Crosshair(renderer, options, params, group) {
                    this._renderer = renderer;
                    this._crosshairGroup = group;
                    this._options = {};
                    this.update(options, params)
                }
                Crosshair.prototype = {
                    constructor: Crosshair,
                    update: function(options, params) {
                        const canvas = params.canvas;
                        this._canvas = {
                            top: canvas.top,
                            bottom: canvas.height - canvas.bottom,
                            left: canvas.left,
                            right: canvas.width - canvas.right,
                            width: canvas.width,
                            height: canvas.height
                        };
                        this._axes = params.axes;
                        this._panes = params.panes;
                        this._prepareOptions(options, "horizontal");
                        this._prepareOptions(options, "vertical")
                    },
                    dispose: function() {
                        this._renderer = this._crosshairGroup = this._options = this._axes = this._canvas = this._horizontalGroup = this._verticalGroup = this._horizontal = this._vertical = this._circle = this._panes = null
                    },
                    _prepareOptions: function(options, direction) {
                        const lineOptions = options[direction + "Line"];
                        this._options[direction] = {
                            visible: lineOptions.visible,
                            line: {
                                stroke: lineOptions.color || options.color,
                                "stroke-width": lineOptions.width || options.width,
                                dashStyle: lineOptions.dashStyle || options.dashStyle,
                                opacity: lineOptions.opacity || options.opacity,
                                "stroke-linecap": "butt"
                            },
                            label: (0, _extend.extend)(true, {}, options.label, lineOptions.label)
                        }
                    },
                    _createLines: function(options, sharpParam, group) {
                        const lines = [];
                        const canvas = this._canvas;
                        const points = [canvas.left, canvas.top, canvas.left, canvas.top];
                        for (let i = 0; i < 2; i++) {
                            lines.push(this._renderer.path(points, "line").attr(options).sharp(sharpParam).append(group))
                        }
                        return lines
                    },
                    render: function() {
                        const that = this;
                        const renderer = that._renderer;
                        const options = that._options;
                        const verticalOptions = options.vertical;
                        const horizontalOptions = options.horizontal;
                        const extraOptions = horizontalOptions.visible ? horizontalOptions.line : verticalOptions.line;
                        const circleOptions = {
                            stroke: extraOptions.stroke,
                            "stroke-width": extraOptions["stroke-width"],
                            dashStyle: extraOptions.dashStyle,
                            opacity: extraOptions.opacity
                        };
                        const canvas = that._canvas;
                        that._horizontal = {};
                        that._vertical = {};
                        that._circle = renderer.circle(canvas.left, canvas.top, 0).attr(circleOptions).append(that._crosshairGroup);
                        that._horizontalGroup = renderer.g().append(that._crosshairGroup);
                        that._verticalGroup = renderer.g().append(that._crosshairGroup);
                        if (verticalOptions.visible) {
                            that._vertical.lines = that._createLines(verticalOptions.line, "h", that._verticalGroup);
                            that._vertical.labels = that._createLabels(that._axes[0], verticalOptions, false, that._verticalGroup)
                        }
                        if (horizontalOptions.visible) {
                            that._horizontal.lines = that._createLines(horizontalOptions.line, "v", that._horizontalGroup);
                            that._horizontal.labels = that._createLabels(that._axes[1], horizontalOptions, true, that._horizontalGroup)
                        }
                        that.hide()
                    },
                    _createLabels: function(axes, options, isHorizontal, group) {
                        const canvas = this._canvas;
                        const renderer = this._renderer;
                        let x;
                        let y;
                        let text;
                        const labels = [];
                        let background;
                        let currentLabelPos;
                        const labelOptions = options.label;
                        if (labelOptions.visible) {
                            axes.forEach((function(axis) {
                                const position = axis.getOptions().position;
                                if (axis.getTranslator().getBusinessRange().isEmpty()) {
                                    return
                                }
                                currentLabelPos = axis.getLabelsPosition();
                                if (isHorizontal) {
                                    y = canvas.top;
                                    x = currentLabelPos
                                } else {
                                    x = canvas.left;
                                    y = currentLabelPos
                                }
                                const align = "top" === position || "bottom" === position ? "center" : "right" === position ? "left" : "right";
                                background = renderer.rect(0, 0, 0, 0).attr({
                                    fill: labelOptions.backgroundColor || options.line.stroke
                                }).append(group);
                                text = renderer.text("0", 0, 0).css((0, _utils.patchFontOptions)(options.label.font)).attr({
                                    align: align,
                                    class: labelOptions.cssClass
                                }).append(group);
                                labels.push({
                                    text: text,
                                    background: background,
                                    axis: axis,
                                    options: labelOptions,
                                    pos: {
                                        coord: currentLabelPos,
                                        side: position
                                    },
                                    startXY: {
                                        x: x,
                                        y: y
                                    }
                                })
                            }))
                        }
                        return labels
                    },
                    _updateText: function(value, axisName, labels, point, func) {
                        const that = this;
                        labels.forEach((function(label) {
                            const axis = label.axis;
                            const coord = label.startXY;
                            const textElement = label.text;
                            const backgroundElement = label.background;
                            let text = "";
                            if (!axis.name || axis.name === axisName) {
                                text = axis.getFormattedValue(value, label.options, point)
                            }
                            if (text) {
                                textElement.attr({
                                    text: text,
                                    x: coord.x,
                                    y: coord.y
                                });
                                textElement.attr(func(textElement.getBBox(), label.pos.side, coord));
                                that._updateLinesCanvas(label);
                                backgroundElement.attr(getRectangleBBox(textElement.getBBox()))
                            } else {
                                textElement.attr({
                                    text: ""
                                });
                                backgroundElement.attr({
                                    x: 0,
                                    y: 0,
                                    width: 0,
                                    height: 0
                                })
                            }
                        }))
                    },
                    hide: function() {
                        this._crosshairGroup.attr({
                            visibility: "hidden"
                        })
                    },
                    _updateLinesCanvas: function(label) {
                        const position = label.pos.side;
                        const labelCoord = label.pos.coord;
                        const coords = this._linesCanvas;
                        const canvas = this._canvas;
                        coords[position] = coords[position] !== canvas[position] && mathAbs(coords[position] - canvas[position]) < mathAbs(labelCoord - canvas[position]) ? coords[position] : labelCoord
                    },
                    _updateLines: function(lines, x, y, r, isHorizontal) {
                        const coords = this._linesCanvas;
                        const canvas = this._canvas;
                        const points = isHorizontal ? [
                            [mathMin(x - r, coords.left), canvas.top, x - r, canvas.top],
                            [x + r, canvas.top, mathMax(coords.right, x + r), canvas.top]
                        ] : [
                            [canvas.left, mathMin(coords.top, y - r), canvas.left, y - r],
                            [canvas.left, y + r, canvas.left, mathMax(coords.bottom, y + r)]
                        ];
                        for (let i = 0; i < 2; i++) {
                            lines[i].attr({
                                points: points[i]
                            }).sharp(isHorizontal ? "v" : "h", isHorizontal ? y === canvas.bottom ? -1 : 1 : x === canvas.right ? -1 : 1)
                        }
                    },
                    _resetLinesCanvas: function() {
                        const canvas = this._canvas;
                        this._linesCanvas = {
                            left: canvas.left,
                            right: canvas.right,
                            top: canvas.top,
                            bottom: canvas.bottom
                        }
                    },
                    _getClipRectForPane: function(x, y) {
                        const panes = this._panes;
                        let i;
                        let coords;
                        for (i = 0; i < panes.length; i++) {
                            coords = panes[i].coords;
                            if (coords.left <= x && coords.right >= x && coords.top <= y && coords.bottom >= y) {
                                return panes[i].clipRect
                            }
                        }
                        return {
                            id: null
                        }
                    },
                    show: function(data) {
                        const that = this;
                        const point = data.point;
                        const pointData = point.getCrosshairData(data.x, data.y);
                        const r = point.getPointRadius();
                        const horizontal = that._horizontal;
                        const vertical = that._vertical;
                        const rad = !r ? 0 : r + 3;
                        const canvas = that._canvas;
                        const x = mathFloor(pointData.x);
                        const y = mathFloor(pointData.y);
                        if (x >= canvas.left && x <= canvas.right && y >= canvas.top && y <= canvas.bottom) {
                            that._crosshairGroup.attr({
                                visibility: "visible"
                            });
                            that._resetLinesCanvas();
                            that._circle.attr({
                                cx: x,
                                cy: y,
                                r: rad,
                                "clip-path": that._getClipRectForPane(x, y).id
                            });
                            if (horizontal.lines) {
                                that._updateText(pointData.yValue, pointData.axis, horizontal.labels, point, getLabelCheckerPosition(x, y, true, canvas));
                                that._updateLines(horizontal.lines, x, y, rad, true);
                                that._horizontalGroup.attr({
                                    translateY: y - canvas.top
                                })
                            }
                            if (vertical.lines) {
                                that._updateText(pointData.xValue, pointData.axis, vertical.labels, point, getLabelCheckerPosition(x, y, false, canvas));
                                that._updateLines(vertical.lines, x, y, rad, false);
                                that._verticalGroup.attr({
                                    translateX: x - canvas.left
                                })
                            }
                        } else {
                            that.hide()
                        }
                    }
                }
            },
        61189:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/chart_components/layout_manager.js ***!
              \************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.LayoutManager = LayoutManager;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _consts = (obj = __webpack_require__( /*! ../components/consts */ 32410), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _layout_element = __webpack_require__( /*! ../core/layout_element */ 73711);
                const {
                    floor: floor,
                    sqrt: sqrt
                } = Math;
                const _min = Math.min;
                const _max = Math.max;
                const RADIAL_LABEL_INDENT = _consts.default.radialLabelIndent;

                function getNearestCoord(firstCoord, secondCoord, pointCenterCoord) {
                    let nearestCoord;
                    if (pointCenterCoord < firstCoord) {
                        nearestCoord = firstCoord
                    } else if (secondCoord < pointCenterCoord) {
                        nearestCoord = secondCoord
                    } else {
                        nearestCoord = pointCenterCoord
                    }
                    return nearestCoord
                }

                function getLabelLayout(point) {
                    if (point._label.isVisible() && "inside" !== point._label.getLayoutOptions().position) {
                        return point._label.getBoundingRect()
                    }
                }

                function getPieRadius(series, paneCenterX, paneCenterY, accessibleRadius, minR) {
                    series.some((function(singleSeries) {
                        return singleSeries.getVisiblePoints().reduce((function(radiusIsFound, point) {
                            const labelBBox = getLabelLayout(point);
                            if (labelBBox) {
                                const xCoords = getNearestCoord(labelBBox.x, labelBBox.x + labelBBox.width, paneCenterX);
                                const yCoords = getNearestCoord(labelBBox.y, labelBBox.y + labelBBox.height, paneCenterY);
                                accessibleRadius = _min(_max(function(x, y, paneCenterX, paneCenterY) {
                                    return sqrt((x - paneCenterX) * (x - paneCenterX) + (y - paneCenterY) * (y - paneCenterY))
                                }(xCoords, yCoords, paneCenterX, paneCenterY) - RADIAL_LABEL_INDENT, minR), accessibleRadius);
                                radiusIsFound = true
                            }
                            return radiusIsFound
                        }), false)
                    }));
                    return accessibleRadius
                }

                function getSizeLabels(series) {
                    return series.reduce((function(res, singleSeries) {
                        let maxWidth = singleSeries.getVisiblePoints().reduce((function(width, point) {
                            const labelBBox = getLabelLayout(point);
                            if (labelBBox && labelBBox.width > width) {
                                width = labelBBox.width
                            }
                            return width
                        }), 0);
                        let rWidth = maxWidth;
                        if (maxWidth) {
                            res.outerLabelsCount++;
                            if (res.outerLabelsCount > 1) {
                                maxWidth += _consts.default.pieLabelSpacing
                            }
                            rWidth += _consts.default.pieLabelSpacing
                        }
                        res.sizes.push(maxWidth);
                        res.rSizes.push(rWidth);
                        res.common += maxWidth;
                        return res
                    }), {
                        sizes: [],
                        rSizes: [],
                        common: 0,
                        outerLabelsCount: 0
                    })
                }

                function correctLabelRadius(labelSizes, radius, series, canvas, averageWidthLabels, centerX) {
                    let curRadius;
                    let i;
                    let runningWidth = 0;
                    const sizes = labelSizes.sizes;
                    const rSizes = labelSizes.rSizes;
                    for (i = 0; i < series.length; i++) {
                        if (0 === sizes[i]) {
                            curRadius && (curRadius += rSizes[i - 1]);
                            continue
                        }
                        curRadius = floor(curRadius ? curRadius + rSizes[i - 1] : radius);
                        series[i].correctLabelRadius(curRadius);
                        runningWidth += averageWidthLabels || sizes[i];
                        rSizes[i] = averageWidthLabels || rSizes[i];
                        series[i].setVisibleArea({
                            left: floor(centerX - radius - runningWidth),
                            right: floor(canvas.width - (centerX + radius + runningWidth)),
                            top: canvas.top,
                            bottom: canvas.bottom,
                            width: canvas.width,
                            height: canvas.height
                        })
                    }
                }

                function getInnerRadius(_ref) {
                    let {
                        type: type,
                        innerRadius: innerRadius
                    } = _ref;
                    return "pie" === type ? 0 : (0, _type.isNumeric)(innerRadius) ? Number(innerRadius) : .5
                }

                function LayoutManager() {}

                function getAverageLabelWidth(centerX, radius, canvas, sizeLabels) {
                    return (centerX - radius - RADIAL_LABEL_INDENT - canvas.left) / sizeLabels.outerLabelsCount
                }

                function correctAvailableRadius(availableRadius, canvas, series, minR, paneCenterX, paneCenterY) {
                    const sizeLabels = getSizeLabels(series);
                    let averageWidthLabels;
                    const fullRadiusWithLabels = function(centerX, canvas, sizeLabels) {
                        return centerX - canvas.left - (sizeLabels.outerLabelsCount > 0 ? sizeLabels.common + RADIAL_LABEL_INDENT : 0)
                    }(paneCenterX, canvas, sizeLabels);
                    if (fullRadiusWithLabels < minR) {
                        availableRadius = minR;
                        averageWidthLabels = getAverageLabelWidth(paneCenterX, availableRadius, canvas, sizeLabels)
                    } else {
                        availableRadius = _min(getPieRadius(series, paneCenterX, paneCenterY, availableRadius, minR), fullRadiusWithLabels)
                    }
                    correctLabelRadius(sizeLabels, availableRadius + RADIAL_LABEL_INDENT, series, canvas, averageWidthLabels, paneCenterX);
                    return availableRadius
                }

                function toLayoutElementCoords(canvas) {
                    return new _layout_element.WrapperLayoutElement(null, {
                        x: canvas.left,
                        y: canvas.top,
                        width: canvas.width - canvas.left - canvas.right,
                        height: canvas.height - canvas.top - canvas.bottom
                    })
                }
                LayoutManager.prototype = {
                    constructor: LayoutManager,
                    setOptions: function(options) {
                        this._options = options
                    },
                    applyPieChartSeriesLayout: function(canvas, series, hideLayoutLabels) {
                        const paneSpaceHeight = canvas.height - canvas.top - canvas.bottom;
                        const paneSpaceWidth = canvas.width - canvas.left - canvas.right;
                        const paneCenterX = paneSpaceWidth / 2 + canvas.left;
                        const paneCenterY = paneSpaceHeight / 2 + canvas.top;
                        const piePercentage = this._options.piePercentage;
                        let availableRadius;
                        let minR;
                        if ((0, _type.isNumeric)(piePercentage)) {
                            availableRadius = minR = piePercentage * _min(canvas.height, canvas.width) / 2
                        } else {
                            availableRadius = _min(paneSpaceWidth, paneSpaceHeight) / 2;
                            minR = this._options.minPiePercentage * availableRadius
                        }
                        if (!hideLayoutLabels) {
                            availableRadius = correctAvailableRadius(availableRadius, canvas, series, minR, paneCenterX, paneCenterY)
                        }
                        return {
                            centerX: floor(paneCenterX),
                            centerY: floor(paneCenterY),
                            radiusInner: floor(availableRadius * getInnerRadius(series[0])),
                            radiusOuter: floor(availableRadius)
                        }
                    },
                    applyEqualPieChartLayout: function(series, layout) {
                        const radius = layout.radius;
                        return {
                            centerX: floor(layout.x),
                            centerY: floor(layout.y),
                            radiusInner: floor(radius * getInnerRadius(series[0])),
                            radiusOuter: floor(radius)
                        }
                    },
                    correctPieLabelRadius: function(series, layout, canvas) {
                        const sizeLabels = getSizeLabels(series);
                        let averageWidthLabels;
                        const radius = layout.radiusOuter + RADIAL_LABEL_INDENT;
                        const availableLabelWidth = layout.centerX - canvas.left - radius;
                        if (sizeLabels.common + RADIAL_LABEL_INDENT > availableLabelWidth) {
                            averageWidthLabels = getAverageLabelWidth(layout.centerX, layout.radiusOuter, canvas, sizeLabels)
                        }
                        correctLabelRadius(sizeLabels, radius, series, canvas, averageWidthLabels, layout.centerX)
                    },
                    needMoreSpaceForPanesCanvas(panes, rotated, fixedSizeCallback) {
                        const options = this._options;
                        const width = options.width;
                        const height = options.height;
                        const piePercentage = options.piePercentage;
                        const percentageIsValid = (0, _type.isNumeric)(piePercentage);
                        let needHorizontalSpace = 0;
                        let needVerticalSpace = 0;
                        panes.forEach(pane => {
                            const paneCanvas = pane.canvas;
                            const minSize = percentageIsValid ? _min(paneCanvas.width, paneCanvas.height) * piePercentage : void 0;
                            const paneSized = fixedSizeCallback ? fixedSizeCallback(pane) : {
                                width: false,
                                height: false
                            };
                            const needPaneHorizontalSpace = !paneSized.width ? (percentageIsValid ? minSize : width) - (paneCanvas.width - paneCanvas.left - paneCanvas.right) : 0;
                            const needPaneVerticalSpace = !paneSized.height ? (percentageIsValid ? minSize : height) - (paneCanvas.height - paneCanvas.top - paneCanvas.bottom) : 0;
                            if (rotated) {
                                needHorizontalSpace += needPaneHorizontalSpace > 0 ? needPaneHorizontalSpace : 0;
                                needVerticalSpace = _max(needPaneVerticalSpace > 0 ? needPaneVerticalSpace : 0, needVerticalSpace)
                            } else {
                                needHorizontalSpace = _max(needPaneHorizontalSpace > 0 ? needPaneHorizontalSpace : 0, needHorizontalSpace);
                                needVerticalSpace += needPaneVerticalSpace > 0 ? needPaneVerticalSpace : 0
                            }
                        });
                        return needHorizontalSpace > 0 || needVerticalSpace > 0 ? {
                            width: needHorizontalSpace,
                            height: needVerticalSpace
                        } : false
                    },
                    layoutInsideLegend: function(legend, canvas) {
                        const layoutOptions = legend.getLayoutOptions();
                        if (!layoutOptions) {
                            return
                        }
                        const position = layoutOptions.position;
                        const cutSide = layoutOptions.cutSide;
                        const my = {
                            horizontal: position.horizontal,
                            vertical: position.vertical
                        };
                        canvas[layoutOptions.cutLayoutSide] += "horizontal" === layoutOptions.cutSide ? layoutOptions.width : layoutOptions.height;
                        my[cutSide] = {
                            left: "right",
                            right: "left",
                            top: "bottom",
                            bottom: "top",
                            center: "center"
                        } [my[cutSide]];
                        legend.position({
                            of: toLayoutElementCoords(canvas),
                            my: my,
                            at: position
                        })
                    }
                }
            },
        42597:
            /*!*********************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/chart_components/multi_axes_synchronizer.js ***!
              \*********************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                __webpack_require__( /*! ../../core/utils/console */ 30869);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _math2 = __webpack_require__( /*! ../../core/utils/math */ 60810);
                const _math = Math;
                const _floor = _math.floor;
                const _max = _math.max;
                const _abs = _math.abs;
                const linearConverter = br => ({
                    transform: function(v, b) {
                        return (0, _math2.adjust)((0, _utils.getLogExt)(v, b, br.allowNegatives, br.linearThreshold))
                    },
                    getTicks: function(interval, tickValues, base) {
                        const ticks = [];
                        let tick = this.transform(tickValues[0], base);
                        while (ticks.length < tickValues.length) {
                            ticks.push(tick);
                            tick = (0, _math2.adjust)(tick + interval)
                        }
                        return ticks
                    }
                });
                const logConverter = br => ({
                    transform: function(v, b) {
                        return (0, _math2.adjust)((0, _utils.raiseToExt)(v, b, br.allowNegatives, br.linearThreshold))
                    },
                    getTicks: function(interval, tickValues, base) {
                        const ticks = [];
                        let tick;
                        for (let i = 0; i < tickValues.length; i += 1) {
                            tick = this.transform(tickValues[i], base);
                            ticks.push(tick)
                        }
                        return ticks
                    }
                });

                function convertAxisInfo(axisInfo, converter) {
                    if (!axisInfo.isLogarithmic) {
                        return
                    }
                    const base = axisInfo.logarithmicBase;
                    const tickValues = axisInfo.tickValues;
                    axisInfo.minValue = converter.transform(axisInfo.minValue, base);
                    axisInfo.oldMinValue = converter.transform(axisInfo.oldMinValue, base);
                    axisInfo.maxValue = converter.transform(axisInfo.maxValue, base);
                    axisInfo.oldMaxValue = converter.transform(axisInfo.oldMaxValue, base);
                    axisInfo.tickInterval = _math.round(axisInfo.tickInterval);
                    if (axisInfo.tickInterval < 1) {
                        axisInfo.tickInterval = 1
                    }
                    const ticks = converter.getTicks(axisInfo.tickInterval, tickValues, base);
                    ticks.tickInterval = axisInfo.tickInterval;
                    axisInfo.tickValues = ticks
                }

                function getAxisRange(axisInfo) {
                    return axisInfo.maxValue - axisInfo.minValue || 1
                }

                function getMainAxisInfo(axesInfo) {
                    for (let i = 0; i < axesInfo.length; i++) {
                        if (!axesInfo[i].stubData) {
                            return axesInfo[i]
                        }
                    }
                    return null
                }
                const multiAxesSynchronizer = {
                    synchronize: function(valueAxes) {
                        (0, _iterator.each)(function(valueAxes) {
                            const result = {};
                            valueAxes.forEach(axis => {
                                const pane = axis.pane;
                                if (!result[pane]) {
                                    result[pane] = []
                                }
                                result[pane].push(axis)
                            });
                            return result
                        }(valueAxes), (function(_, axes) {
                            let axesInfo;
                            let paddings;
                            if (axes.length > 1) {
                                axesInfo = function(axes) {
                                    return axes.reduce((function(result, axis) {
                                        const ticksValues = axis.getTicksValues();
                                        const majorTicks = ticksValues.majorTicksValues;
                                        const options = axis.getOptions();
                                        const businessRange = axis.getTranslator().getBusinessRange();
                                        const visibleArea = axis.getVisibleArea();
                                        let axisInfo;
                                        let tickInterval = axis._tickInterval;
                                        const synchronizedValue = options.synchronizedValue;
                                        const action = axis.getViewport().action;
                                        if (majorTicks && majorTicks.length > 0 && (0, _type.isNumeric)(majorTicks[0]) && "discrete" !== options.type && !businessRange.isEmpty() && !(businessRange.breaks && businessRange.breaks.length) && "zoom" !== action && "pan" !== action) {
                                            axis.applyMargins();
                                            const startValue = axis.getTranslator().from(visibleArea[0]);
                                            const endValue = axis.getTranslator().from(visibleArea[1]);
                                            let minValue = startValue < endValue ? startValue : endValue;
                                            let maxValue = startValue < endValue ? endValue : startValue;
                                            if (minValue === maxValue && (0, _type.isDefined)(synchronizedValue)) {
                                                tickInterval = _abs(majorTicks[0] - synchronizedValue) || 1;
                                                minValue = majorTicks[0] - tickInterval;
                                                maxValue = majorTicks[0] + tickInterval
                                            }
                                            axisInfo = {
                                                axis: axis,
                                                isLogarithmic: "logarithmic" === options.type,
                                                logarithmicBase: businessRange.base,
                                                tickValues: majorTicks,
                                                minorValues: ticksValues.minorTicksValues,
                                                minorTickInterval: axis._minorTickInterval,
                                                minValue: minValue,
                                                oldMinValue: minValue,
                                                maxValue: maxValue,
                                                oldMaxValue: maxValue,
                                                inverted: businessRange.invert,
                                                tickInterval: tickInterval,
                                                synchronizedValue: synchronizedValue
                                            };
                                            convertAxisInfo(axisInfo, linearConverter(axis.getTranslator().getBusinessRange()));
                                            result.push(axisInfo)
                                        }
                                        return result
                                    }), [])
                                }(axes);
                                if (axesInfo.length < 2 || !getMainAxisInfo(axesInfo)) {
                                    return
                                }! function(axesInfo) {
                                    const maxTicksCount = axesInfo.reduce((max, axisInfo) => _max(max, axisInfo.tickValues.length), 0);
                                    axesInfo.forEach(axisInfo => {
                                        let ticksMultiplier;
                                        let ticksCount;
                                        let additionalStartTicksCount = 0;
                                        const synchronizedValue = axisInfo.synchronizedValue;
                                        const tickValues = axisInfo.tickValues;
                                        const tickInterval = axisInfo.tickInterval;
                                        if ((0, _type.isDefined)(synchronizedValue)) {
                                            axisInfo.baseTickValue = axisInfo.invertedBaseTickValue = synchronizedValue;
                                            axisInfo.tickValues = [axisInfo.baseTickValue]
                                        } else {
                                            if (tickValues.length > 1 && tickInterval) {
                                                ticksMultiplier = _floor((maxTicksCount + 1) / tickValues.length);
                                                ticksCount = ticksMultiplier > 1 ? _floor((maxTicksCount + 1) / ticksMultiplier) : maxTicksCount;
                                                additionalStartTicksCount = _floor((ticksCount - tickValues.length) / 2);
                                                while (additionalStartTicksCount > 0 && 0 !== tickValues[0]) {
                                                    tickValues.unshift((0, _math2.adjust)(tickValues[0] - tickInterval));
                                                    additionalStartTicksCount--
                                                }
                                                while (tickValues.length < ticksCount) {
                                                    tickValues.push((0, _math2.adjust)(tickValues[tickValues.length - 1] + tickInterval))
                                                }
                                                axisInfo.tickInterval = tickInterval / ticksMultiplier
                                            }
                                            axisInfo.baseTickValue = tickValues[0];
                                            axisInfo.invertedBaseTickValue = tickValues[tickValues.length - 1]
                                        }
                                    })
                                }(axesInfo);
                                ! function(axesInfo) {
                                    const mainAxisInfo = getMainAxisInfo(axesInfo);
                                    const mainAxisInfoTickInterval = mainAxisInfo.tickInterval;
                                    axesInfo.forEach(axisInfo => {
                                        let scale;
                                        let move;
                                        let mainAxisBaseValueOffset;
                                        let valueFromAxisInfo;
                                        if (axisInfo !== mainAxisInfo) {
                                            if (mainAxisInfoTickInterval && axisInfo.tickInterval) {
                                                if (axisInfo.stubData && (0, _type.isDefined)(axisInfo.synchronizedValue)) {
                                                    axisInfo.oldMinValue = axisInfo.minValue = axisInfo.baseTickValue - (mainAxisInfo.baseTickValue - mainAxisInfo.minValue) / mainAxisInfoTickInterval * axisInfo.tickInterval;
                                                    axisInfo.oldMaxValue = axisInfo.maxValue = axisInfo.baseTickValue - (mainAxisInfo.baseTickValue - mainAxisInfo.maxValue) / mainAxisInfoTickInterval * axisInfo.tickInterval
                                                }
                                                scale = mainAxisInfoTickInterval / getAxisRange(mainAxisInfo) / axisInfo.tickInterval * getAxisRange(axisInfo);
                                                axisInfo.maxValue = axisInfo.minValue + getAxisRange(axisInfo) / scale
                                            }
                                            if (mainAxisInfo.inverted && !axisInfo.inverted || !mainAxisInfo.inverted && axisInfo.inverted) {
                                                mainAxisBaseValueOffset = mainAxisInfo.maxValue - mainAxisInfo.invertedBaseTickValue
                                            } else {
                                                mainAxisBaseValueOffset = mainAxisInfo.baseTickValue - mainAxisInfo.minValue
                                            }
                                            valueFromAxisInfo = getAxisRange(axisInfo);
                                            move = (mainAxisBaseValueOffset / getAxisRange(mainAxisInfo) - (axisInfo.baseTickValue - axisInfo.minValue) / valueFromAxisInfo) * valueFromAxisInfo;
                                            axisInfo.minValue -= move;
                                            axisInfo.maxValue -= move
                                        }
                                    })
                                }(axesInfo);
                                paddings = function(axesInfo) {
                                    let minPadding;
                                    let maxPadding;
                                    let startPadding = 0;
                                    let endPadding = 0;
                                    axesInfo.forEach(axisInfo => {
                                        const inverted = axisInfo.inverted;
                                        minPadding = axisInfo.minValue > axisInfo.oldMinValue ? (axisInfo.minValue - axisInfo.oldMinValue) / getAxisRange(axisInfo) : 0;
                                        maxPadding = axisInfo.maxValue < axisInfo.oldMaxValue ? (axisInfo.oldMaxValue - axisInfo.maxValue) / getAxisRange(axisInfo) : 0;
                                        startPadding = _max(startPadding, inverted ? maxPadding : minPadding);
                                        endPadding = _max(endPadding, inverted ? minPadding : maxPadding)
                                    });
                                    return {
                                        start: startPadding,
                                        end: endPadding
                                    }
                                }(axesInfo);
                                paddings = function(axesInfo, paddings) {
                                    if (! function(axesInfo) {
                                            let allPositive = true;
                                            let allNegative = true;
                                            axesInfo.forEach(axis => {
                                                if (axis.oldMinValue > 0 || axis.oldMaxValue > 0) {
                                                    allNegative = false
                                                }
                                                if (axis.oldMinValue < 0 || axis.oldMaxValue < 0) {
                                                    allPositive = false
                                                }
                                            });
                                            return allPositive || allNegative
                                        }(axesInfo)) {
                                        return paddings
                                    }
                                    return axesInfo.reduce((prev, info) => {
                                        const inverted = info.inverted;
                                        const {
                                            start: start,
                                            end: end
                                        } = info.axis.getCorrectedValuesToZero(info.minValue, info.maxValue);
                                        if ((0, _type.isDefined)(start) || (0, _type.isDefined)(end)) {
                                            return inverted ? {
                                                start: prev.start,
                                                end: Math.min(prev.end, end)
                                            } : {
                                                start: Math.min(prev.start, start),
                                                end: prev.end
                                            }
                                        }
                                        return prev
                                    }, paddings)
                                }(axesInfo, paddings);
                                ! function(axesInfo, paddings) {
                                    axesInfo.forEach(info => {
                                        const range = getAxisRange(info);
                                        const inverted = info.inverted;
                                        info.minValue = (0, _math2.adjust)(info.minValue - paddings[inverted ? "end" : "start"] * range);
                                        info.maxValue = (0, _math2.adjust)(info.maxValue + paddings[inverted ? "start" : "end"] * range)
                                    })
                                }(axesInfo, paddings);
                                ! function(axesInfo) {
                                    const invalidAxisInfo = [];
                                    let correctValue;
                                    axesInfo.forEach(info => {
                                        if (info.oldMaxValue - info.oldMinValue === 0) {
                                            invalidAxisInfo.push(info)
                                        } else if (!(0, _type.isDefined)(correctValue) && !(0, _type.isDefined)(info.synchronizedValue)) {
                                            correctValue = _abs((info.maxValue - info.minValue) / (info.tickValues[_floor(info.tickValues.length / 2)] - info.minValue || info.maxValue))
                                        }
                                    });
                                    if (!(0, _type.isDefined)(correctValue)) {
                                        return
                                    }
                                    invalidAxisInfo.forEach(info => {
                                        const firstTick = info.tickValues[0];
                                        const correctedTick = firstTick * correctValue;
                                        if (firstTick > 0) {
                                            info.maxValue = correctedTick;
                                            info.minValue = 0
                                        } else if (firstTick < 0) {
                                            info.minValue = correctedTick;
                                            info.maxValue = 0
                                        }
                                    })
                                }(axesInfo);
                                ! function(axesInfo) {
                                    let hasSynchronizedValue = false;
                                    axesInfo.forEach(info => {
                                        hasSynchronizedValue = hasSynchronizedValue || (0, _type.isDefined)(info.synchronizedValue)
                                    });
                                    axesInfo.forEach(info => {
                                        const tickInterval = info.tickInterval;
                                        const tickValues = info.tickValues;
                                        const maxValue = info.maxValue;
                                        const minValue = info.minValue;
                                        let tick;
                                        if (hasSynchronizedValue && tickInterval) {
                                            while ((tick = (0, _math2.adjust)(tickValues[0] - tickInterval)) >= minValue) {
                                                tickValues.unshift(tick)
                                            }
                                            tick = tickValues[tickValues.length - 1];
                                            while ((tick = (0, _math2.adjust)(tick + tickInterval)) <= maxValue) {
                                                tickValues.push(tick)
                                            }
                                        }
                                        while (tickValues[0] + tickInterval / 10 < minValue) {
                                            tickValues.shift()
                                        }
                                        while (tickValues[tickValues.length - 1] - tickInterval / 10 > maxValue) {
                                            tickValues.pop()
                                        }
                                    })
                                }(axesInfo);
                                ! function(axesInfo) {
                                    axesInfo.forEach((function(axisInfo) {
                                        if (!axisInfo.minorTickInterval) {
                                            return
                                        }
                                        const ticks = [];
                                        const interval = axisInfo.minorTickInterval;
                                        const tickCount = axisInfo.tickInterval / interval - 1;
                                        for (let i = 1; i < axisInfo.tickValues.length; i++) {
                                            let tick = axisInfo.tickValues[i - 1];
                                            for (let j = 0; j < tickCount; j++) {
                                                tick += interval;
                                                ticks.push(tick)
                                            }
                                        }
                                        axisInfo.minorValues = ticks
                                    }))
                                }(axesInfo);
                                axesInfo.forEach(info => {
                                    convertAxisInfo(info, logConverter(info.axis.getTranslator().getBusinessRange()))
                                });
                                ! function(axesInfo) {
                                    axesInfo.forEach(info => {
                                        const axis = info.axis;
                                        const range = axis.getTranslator().getBusinessRange();
                                        if (range.min === range.minVisible) {
                                            range.min = info.minValue
                                        }
                                        if (range.max === range.maxVisible) {
                                            range.max = info.maxValue
                                        }
                                        range.minVisible = info.minValue;
                                        range.maxVisible = info.maxValue;
                                        if (range.min > range.minVisible) {
                                            range.min = range.minVisible
                                        }
                                        if (range.max < range.maxVisible) {
                                            range.max = range.maxVisible
                                        }
                                        axis.getTranslator().updateBusinessRange(range);
                                        axis.setTicks({
                                            majorTicks: info.tickValues,
                                            minorTicks: info.minorValues
                                        })
                                    })
                                }(axesInfo)
                            }
                        }))
                    }
                };
                var _default = multiAxesSynchronizer;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        97882:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/chart_components/scroll_bar.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.ScrollBar = void 0;
                var _events_engine = (obj = __webpack_require__( /*! ../../events/core/events_engine */ 55994), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _translator2d = __webpack_require__( /*! ../translators/translator2d */ 87276);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _drag = __webpack_require__( /*! ../../events/drag */ 23174);
                const _min = Math.min;
                const _max = Math.max;
                const ScrollBar = function(renderer, group) {
                    this._translator = new _translator2d.Translator2D({}, {}, {});
                    this._scroll = renderer.rect().append(group);
                    this._addEvents()
                };
                exports.ScrollBar = ScrollBar;

                function _getXCoord(canvas, pos, offset, width) {
                    let x = 0;
                    if ("right" === pos) {
                        x = canvas.width - canvas.right + offset
                    } else if ("left" === pos) {
                        x = canvas.left - offset - width
                    }
                    return x
                }

                function _getYCoord(canvas, pos, offset, width) {
                    let y = 0;
                    if ("top" === pos) {
                        y = canvas.top - offset
                    } else if ("bottom" === pos) {
                        y = canvas.height - canvas.bottom + width + offset
                    }
                    return y
                }
                ScrollBar.prototype = {
                    _addEvents: function() {
                        const scrollElement = this._scroll.element;
                        _events_engine.default.on(scrollElement, _drag.start, e => {
                            (0, _index.fireEvent)({
                                type: "dxc-scroll-start",
                                originalEvent: e,
                                target: scrollElement
                            })
                        });
                        _events_engine.default.on(scrollElement, _drag.move, e => {
                            const dX = -e.offset.x * this._scale;
                            const dY = -e.offset.y * this._scale;
                            const lx = this._offset - (this._layoutOptions.vertical ? dY : dX) / this._scale;
                            this._applyPosition(lx, lx + this._translator.canvasLength / this._scale);
                            (0, _index.fireEvent)({
                                type: "dxc-scroll-move",
                                originalEvent: e,
                                target: scrollElement,
                                offset: {
                                    x: dX,
                                    y: dY
                                }
                            })
                        });
                        _events_engine.default.on(scrollElement, _drag.end, e => {
                            (0, _index.fireEvent)({
                                type: "dxc-scroll-end",
                                originalEvent: e,
                                target: scrollElement,
                                offset: {
                                    x: -e.offset.x * this._scale,
                                    y: -e.offset.y * this._scale
                                }
                            })
                        })
                    },
                    update: function(options) {
                        let position = options.position;
                        const isVertical = options.rotated;
                        const defaultPosition = isVertical ? "right" : "top";
                        const secondaryPosition = isVertical ? "left" : "bottom";
                        if (position !== defaultPosition && position !== secondaryPosition) {
                            position = defaultPosition
                        }
                        this._scroll.attr({
                            rotate: !options.rotated ? -90 : 0,
                            rotateX: 0,
                            rotateY: 0,
                            fill: options.color,
                            width: options.width,
                            opacity: options.opacity
                        });
                        this._layoutOptions = {
                            width: options.width,
                            offset: options.offset,
                            vertical: isVertical,
                            position: position
                        };
                        return this
                    },
                    init: function(range, stick) {
                        const isDiscrete = "discrete" === range.axisType;
                        this._translateWithOffset = isDiscrete && !stick ? 1 : 0;
                        this._translator.update((0, _extend.extend)({}, range, {
                            minVisible: null,
                            maxVisible: null,
                            visibleCategories: null
                        }, isDiscrete && {
                            min: null,
                            max: null
                        } || {}), this._canvas, {
                            isHorizontal: !this._layoutOptions.vertical,
                            stick: stick
                        });
                        return this
                    },
                    getOptions: function() {
                        return this._layoutOptions
                    },
                    setPane: function(panes) {
                        const position = this._layoutOptions.position;
                        let pane;
                        if ("left" === position || "top" === position) {
                            pane = panes[0]
                        } else {
                            pane = panes[panes.length - 1]
                        }
                        this.pane = pane.name;
                        return this
                    },
                    updateSize: function(canvas) {
                        this._canvas = (0, _extend.extend)({}, canvas);
                        const options = this._layoutOptions;
                        const pos = options.position;
                        const offset = options.offset;
                        const width = options.width;
                        this._scroll.attr({
                            translateX: _getXCoord(canvas, pos, offset, width),
                            translateY: _getYCoord(canvas, pos, offset, width)
                        })
                    },
                    getMultipleAxesSpacing: function() {
                        return 0
                    },
                    estimateMargins: function() {
                        return this.getMargins()
                    },
                    getMargins: function() {
                        const options = this._layoutOptions;
                        const margins = {
                            left: 0,
                            top: 0,
                            right: 0,
                            bottom: 0
                        };
                        margins[options.position] = options.width + options.offset;
                        return margins
                    },
                    shift: function(margins) {
                        var _that$_scroll$attr, _that$_scroll$attr2;
                        const options = this._layoutOptions;
                        const side = options.position;
                        const isVertical = options.vertical;
                        const attr = {
                            translateX: null !== (_that$_scroll$attr = this._scroll.attr("translateX")) && void 0 !== _that$_scroll$attr ? _that$_scroll$attr : 0,
                            translateY: null !== (_that$_scroll$attr2 = this._scroll.attr("translateY")) && void 0 !== _that$_scroll$attr2 ? _that$_scroll$attr2 : 0
                        };
                        const shift = margins[side];
                        attr[isVertical ? "translateX" : "translateY"] += ("left" === side || "top" === side ? -1 : 1) * shift;
                        this._scroll.attr(attr)
                    },
                    hideTitle: _common.noop,
                    hideOuterElements: _common.noop,
                    setPosition: function(min, max) {
                        const translator = this._translator;
                        const minPoint = (0, _type.isDefined)(min) ? translator.translate(min, -this._translateWithOffset) : translator.translate("canvas_position_start");
                        const maxPoint = (0, _type.isDefined)(max) ? translator.translate(max, this._translateWithOffset) : translator.translate("canvas_position_end");
                        this._offset = _min(minPoint, maxPoint);
                        this._scale = translator.getScale(min, max);
                        this._applyPosition(_min(minPoint, maxPoint), _max(minPoint, maxPoint))
                    },
                    customPositionIsAvailable: () => false,
                    dispose: function() {
                        this._scroll.dispose();
                        this._scroll = this._translator = null
                    },
                    _applyPosition: function(x1, x2) {
                        const visibleArea = this._translator.getCanvasVisibleArea();
                        x1 = _max(x1, visibleArea.min);
                        x1 = _min(x1, visibleArea.max);
                        x2 = _min(x2, visibleArea.max);
                        x2 = _max(x2, visibleArea.min);
                        const height = Math.abs(x2 - x1);
                        this._scroll.attr({
                            y: x1,
                            height: height < 2 ? 2 : height
                        })
                    }
                }
            },
        70714:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/chart_components/shutter_zoom.js ***!
              \**********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _drag = __webpack_require__( /*! ../../events/drag */ 23174);
                const DRAG_START_EVENT_NAME = _drag.start + ".shutter-zoom";
                const DRAG_UPDATE_EVENT_NAME = _drag.move + ".shutter-zoom";
                const DRAG_END_EVENT_NAME = _drag.end + ".shutter-zoom";

                function getPointerCoord(rootOffset, canvas, rotated, e) {
                    let coord = Math.floor(rotated ? e.pageY - rootOffset.top : e.pageX - rootOffset.left);
                    const min = rotated ? canvas.y1 : canvas.x1;
                    const max = rotated ? canvas.y2 : canvas.x2;
                    if (coord < min) {
                        coord = min
                    } else if (coord > max) {
                        coord = max
                    }
                    return coord
                }

                function shutterZoom(options) {
                    const chart = options.chart;
                    const renderer = options.renderer;
                    const rotated = options.rotated;
                    const rect = renderer.rect(0, 0, 0, 0).attr(options.shutterOptions);
                    const shutter = {
                        rect: rect,
                        root: renderer.root,
                        rotated: rotated,
                        triggerStart: function() {
                            chart._eventTrigger("zoomStart")
                        },
                        triggerEnd: function() {
                            const tr = chart._argumentAxes[0].getTranslator();
                            const rangeStart = Math.min(this.startCoord, this.curCoord);
                            const rangeEnd = Math.max(this.startCoord, this.curCoord);
                            chart._eventTrigger("zoomEnd", {
                                rangeStart: tr.from(rangeStart),
                                rangeEnd: tr.from(rangeEnd)
                            })
                        },
                        dispose: function() {
                            renderer.root.off(".shutter-zoom");
                            rect.dispose()
                        },
                        getRootOffset: function() {
                            return renderer.getRootOffset()
                        },
                        getCanvas: function() {
                            const canvas = chart._canvas;
                            const panes = chart.panes;
                            const firstPane = panes[0].canvas;
                            const lastPane = panes[panes.length - 1].canvas;
                            return {
                                x1: firstPane.left,
                                y1: firstPane.top,
                                x2: canvas.width - lastPane.right,
                                y2: canvas.height - lastPane.bottom,
                                width: canvas.width - firstPane.left - lastPane.right,
                                height: canvas.height - firstPane.top - lastPane.bottom
                            }
                        }
                    };
                    renderer.root.off(".shutter-zoom").on(DRAG_START_EVENT_NAME, {
                        direction: rotated ? "vertical" : "horizontal",
                        immediate: true
                    }, (ctx = shutter, function(e) {
                        const offset = ctx.getRootOffset();
                        const canvas = ctx.getCanvas();
                        if (! function(rootOffset, canvas, e) {
                                const x = e.pageX - rootOffset.left;
                                const y = e.pageY - rootOffset.top;
                                return x >= canvas.x1 && x <= canvas.x2 && y >= canvas.y1 && y <= canvas.y2
                            }(offset, canvas, e)) {
                            e.cancel = true;
                            return
                        }
                        ctx.rootOffset = offset;
                        ctx.canvas = canvas;
                        ctx.startCoord = getPointerCoord(offset, canvas, ctx.rotated, e);
                        ctx.triggerStart();
                        ctx.rect.attr({
                            x: canvas.x1,
                            y: canvas.y1,
                            width: canvas.width,
                            height: canvas.height
                        }).append(ctx.root)
                    })).on(DRAG_UPDATE_EVENT_NAME, function(ctx) {
                        return function(e) {
                            const curCoord = getPointerCoord(ctx.rootOffset, ctx.canvas, ctx.rotated, e);
                            const attr = {};
                            ctx.curCoord = curCoord;
                            attr[ctx.rotated ? "y" : "x"] = Math.min(ctx.startCoord, curCoord);
                            attr[ctx.rotated ? "height" : "width"] = Math.abs(ctx.startCoord - curCoord);
                            ctx.rect.attr(attr)
                        }
                    }(shutter)).on(DRAG_END_EVENT_NAME, function(ctx) {
                        return function(e) {
                            ctx.triggerEnd();
                            ctx.rect.remove()
                        }
                    }(shutter));
                    var ctx;
                    return shutter
                }
                var _default = {
                    name: "shutter_zoom",
                    init: function() {
                        const options = this.option("shutterZoom") || {};
                        if (!options.enabled) {
                            return
                        }
                        this._shutterZoom = shutterZoom({
                            chart: this,
                            renderer: this._renderer,
                            rotated: this.option("rotated"),
                            shutterOptions: options
                        })
                    },
                    dispose: function() {
                        this._shutterZoom && this._shutterZoom.dispose()
                    }
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        19957:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/chart_components/tracker.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.PieTracker = exports.ChartTracker = void 0;
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _click = __webpack_require__( /*! ../../events/click */ 95429);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _consts = _interopRequireDefault(__webpack_require__( /*! ../components/consts */ 32410));
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../events/pointer */ 93786));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../core/errors */ 17381));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const _floor = Math.floor;
                const eventsConsts = _consts.default.events;
                const statesConsts = _consts.default.states;
                const HOVER_STATE = statesConsts.hoverMark;
                const NORMAL_STATE = statesConsts.normalMark;
                const EVENT_NS = "dxChartTracker";
                const POINTER_ACTION = (0, _index.addNamespace)([_pointer.default.down, _pointer.default.move], EVENT_NS);
                const LEGEND_HOVER_MODES = ["includepoints", "excludepoints", "none"];

                function getData(event, dataKey, tryCheckParent) {
                    const target = event.target;
                    if ("tspan" === target.tagName) {
                        return target.parentNode[dataKey]
                    }
                    const data = target[dataKey];
                    if (tryCheckParent && !(0, _type.isDefined)(data)) {
                        const getParentData = function(node) {
                            if (node.parentNode) {
                                if ((0, _type.isDefined)(node.parentNode[dataKey])) {
                                    return node.parentNode[dataKey]
                                } else {
                                    return getParentData(node.parentNode)
                                }
                            }
                            return
                        };
                        return getParentData(target)
                    }
                    return data
                }

                function eventCanceled(_ref, target, clickTarget) {
                    let {
                        event: event,
                        cancel: cancel
                    } = _ref;
                    const deprecatedCancel = event.cancel;
                    const eventCanceled = cancel || deprecatedCancel;
                    if (deprecatedCancel) {
                        _errors.default.log("W0003", "".concat(clickTarget, "Click handler argument"), "event.cancel", "22.1", "Use the 'cancel' field instead")
                    }
                    return eventCanceled || !target.getOptions()
                }

                function correctHoverMode(target) {
                    const mode = target.getOptions().hoverMode;
                    return "none" === mode ? mode : "allargumentpoints"
                }
                const baseTrackerPrototype = {
                    ctor: function(options) {
                        const that = this;
                        const data = {
                            tracker: that
                        };
                        that._renderer = options.renderer;
                        that._legend = options.legend;
                        that._tooltip = options.tooltip;
                        that._eventTrigger = options.eventTrigger;
                        that._seriesGroup = options.seriesGroup;
                        options.seriesGroup.off(".dxChartTracker").on((0, _index.addNamespace)(eventsConsts.showPointTooltip, EVENT_NS), data, that._showPointTooltip).on((0, _index.addNamespace)(eventsConsts.hidePointTooltip, EVENT_NS), data, that._hidePointTooltip);
                        that._renderer.root.off(".dxChartTracker").on(POINTER_ACTION, data, that._pointerHandler).on((0, _index.addNamespace)(_pointer.default.up, EVENT_NS), () => clearTimeout(that._holdTimer)).on((0, _index.addNamespace)(_click.name, EVENT_NS), data, that._clickHandler)
                    },
                    update: function(options) {
                        this._chart = options.chart
                    },
                    updateSeries(series, resetDecorations) {
                        const that = this;
                        const noHoveredSeries = !(null !== series && void 0 !== series && series.some(s => s === that.hoveredSeries) || that._hoveredPoint && that._hoveredPoint.series);
                        if (that._storedSeries !== series) {
                            that._storedSeries = series || []
                        }
                        if (noHoveredSeries) {
                            that._clean();
                            that._renderer.initDefsElements()
                        }
                        if (resetDecorations) {
                            that.clearSelection();
                            if (!noHoveredSeries) {
                                that._hideTooltip(that.pointAtShownTooltip);
                                that.clearHover()
                            }
                        }
                    },
                    setCanvases: function(mainCanvas, paneCanvases) {
                        this._mainCanvas = mainCanvas;
                        this._canvases = paneCanvases
                    },
                    repairTooltip: function() {
                        const point = this.pointAtShownTooltip;
                        if (!point || !point.series || !point.isVisible()) {
                            this._hideTooltip(point, true)
                        } else {
                            this._showTooltip(point)
                        }
                    },
                    _setHoveredPoint: function(point) {
                        if (point === this._hoveredPoint) {
                            return
                        }
                        this._releaseHoveredPoint();
                        point.hover();
                        this._hoveredPoint = point
                    },
                    _releaseHoveredPoint: function(isPointerOut) {
                        if (this._hoveredPoint && this._hoveredPoint.getOptions()) {
                            this._hoveredPoint.clearHover();
                            this._hoveredPoint = null;
                            if (this._tooltip.isEnabled()) {
                                this._hideTooltip(this._hoveredPoint, false, isPointerOut)
                            }
                        }
                    },
                    _setHoveredSeries: function(series, mode) {
                        this._releaseHoveredSeries();
                        this._releaseHoveredPoint();
                        series.hover(mode);
                        this.hoveredSeries = series
                    },
                    _releaseHoveredSeries() {
                        if (this.hoveredSeries) {
                            this.hoveredSeries.clearHover();
                            this.hoveredSeries = null
                        }
                    },
                    clearSelection() {
                        this._storedSeries.forEach(series => {
                            if (series) {
                                series.clearSelection();
                                series.getPoints().forEach(point => point.clearSelection())
                            }
                        })
                    },
                    _clean: function() {
                        this.hoveredPoint = this.hoveredSeries = this._hoveredArgumentPoints = null;
                        this._hideTooltip(this.pointAtShownTooltip)
                    },
                    clearHover: function(isPointerOut) {
                        this._resetHoveredArgument();
                        this._releaseHoveredSeries();
                        this._releaseHoveredPoint(isPointerOut)
                    },
                    _hideTooltip: function(point, silent, isPointerOut) {
                        const that = this;
                        if (!that._tooltip || point && that.pointAtShownTooltip !== point) {
                            return
                        }
                        if (!silent && that.pointAtShownTooltip) {
                            that.pointAtShownTooltip = null
                        }
                        that._tooltip.hide(!!isPointerOut)
                    },
                    _showTooltip: function(point) {
                        const that = this;
                        let tooltipFormatObject;
                        const eventData = {
                            target: point
                        };
                        if (null !== point && void 0 !== point && point.getOptions()) {
                            tooltipFormatObject = point.getTooltipFormatObject(that._tooltip, that._tooltip.isShared() && that._chart.getStackedPoints(point));
                            if (!(0, _type.isDefined)(tooltipFormatObject.valueText) && !tooltipFormatObject.points || !point.isVisible()) {
                                return
                            }
                            const coords = point.getTooltipParams(that._tooltip.getLocation());
                            const rootOffset = that._renderer.getRootOffset();
                            coords.x += rootOffset.left;
                            coords.y += rootOffset.top;
                            const callback = result => {
                                result && (that.pointAtShownTooltip = point)
                            };
                            callback(that._tooltip.show(tooltipFormatObject, coords, eventData, void 0, callback))
                        }
                    },
                    _showPointTooltip: function(event, point) {
                        const that = event.data.tracker;
                        const pointWithTooltip = that.pointAtShownTooltip;
                        if (pointWithTooltip && pointWithTooltip !== point) {
                            that._hideTooltip(pointWithTooltip)
                        }
                        that._showTooltip(point)
                    },
                    _hidePointTooltip: function(event, point) {
                        event.data.tracker._hideTooltip(point, false, true)
                    },
                    _enableOutHandler: function() {
                        if (this._outHandler) {
                            return
                        }
                        const that = this;
                        const handler = function(e) {
                            const rootOffset = that._renderer.getRootOffset();
                            const x = _floor(e.pageX - rootOffset.left);
                            const y = _floor(e.pageY - rootOffset.top);
                            if (!(0, _utils.pointInCanvas)(that._mainCanvas, x, y) && !that._isCursorOnTooltip(e)) {
                                that._pointerOut();
                                that._disableOutHandler()
                            }
                        };
                        _events_engine.default.on(_dom_adapter.default.getDocument(), POINTER_ACTION, handler);
                        this._outHandler = handler
                    },
                    _isCursorOnTooltip: function(e) {
                        return this._tooltip.isEnabled() && this._tooltip.isCursorOnTooltip(e.pageX, e.pageY)
                    },
                    _disableOutHandler: function() {
                        this._outHandler && _events_engine.default.off(_dom_adapter.default.getDocument(), POINTER_ACTION, this._outHandler);
                        this._outHandler = null
                    },
                    stopCurrentHandling: function() {
                        this._pointerOut(true)
                    },
                    _pointerOut: function(force) {
                        this.clearHover(true);
                        (force || this._tooltip.isEnabled()) && this._hideTooltip(this.pointAtShownTooltip, false, true)
                    },
                    _triggerLegendClick: function(eventArgs, elementClick) {
                        const eventTrigger = this._eventTrigger;
                        eventTrigger("legendClick", eventArgs, (function() {
                            !eventCanceled(eventArgs, eventArgs.target, "legend") && eventTrigger(elementClick, eventArgs)
                        }))
                    },
                    _hoverLegendItem: function(x, y) {
                        const that = this;
                        const item = that._legend.getItemByCoord(x, y);
                        let series;
                        const legendHoverMode = function(mode) {
                            if (LEGEND_HOVER_MODES.indexOf(mode) > -1) {
                                return mode
                            } else {
                                return "includepoints"
                            }
                        }(that._legend.getOptions().hoverMode);
                        if (item) {
                            series = that._storedSeries[item.id];
                            if (!series.isHovered() || series.lastHoverMode !== legendHoverMode) {
                                that._setHoveredSeries(series, legendHoverMode)
                            }
                            that._tooltip.isEnabled() && that._hideTooltip(that.pointAtShownTooltip)
                        } else {
                            that.clearHover()
                        }
                    },
                    _hoverArgument: function(argument, argumentIndex) {
                        const that = this;
                        const hoverMode = that._getArgumentHoverMode();
                        if ((0, _type.isDefined)(argument)) {
                            that._releaseHoveredPoint();
                            that._hoveredArgument = argument;
                            that._argumentIndex = argumentIndex;
                            that._notifySeries({
                                action: "pointHover",
                                notifyLegend: that._notifyLegendOnHoverArgument,
                                target: {
                                    argument: argument,
                                    fullState: HOVER_STATE,
                                    argumentIndex: argumentIndex,
                                    getOptions: function() {
                                        return {
                                            hoverMode: hoverMode
                                        }
                                    }
                                }
                            })
                        }
                    },
                    _resetHoveredArgument: function() {
                        const that = this;
                        let hoverMode;
                        if ((0, _type.isDefined)(that._hoveredArgument)) {
                            hoverMode = that._getArgumentHoverMode();
                            that._notifySeries({
                                action: "clearPointHover",
                                notifyLegend: that._notifyLegendOnHoverArgument,
                                target: {
                                    fullState: NORMAL_STATE,
                                    argumentIndex: that._argumentIndex,
                                    argument: that._hoveredArgument,
                                    getOptions: function() {
                                        return {
                                            hoverMode: hoverMode
                                        }
                                    }
                                }
                            });
                            that._hoveredArgument = null
                        }
                    },
                    _notifySeries: function(data) {
                        this._storedSeries.forEach((function(series) {
                            series.notify(data)
                        }))
                    },
                    _pointerHandler: function(e) {
                        var _series;
                        const that = e.data.tracker;
                        const rootOffset = that._renderer.getRootOffset();
                        const x = _floor(e.pageX - rootOffset.left);
                        const y = _floor(e.pageY - rootOffset.top);
                        const canvas = that._getCanvas(x, y);
                        let series = getData(e, "chart-data-series");
                        let point = getData(e, "chart-data-point") || (null === (_series = series) || void 0 === _series ? void 0 : _series.getPointByCoord(x, y));
                        that._isHolding = false;
                        clearTimeout(that._holdTimer);
                        if (e.type === _pointer.default.down) {
                            that._holdTimer = setTimeout(() => that._isHolding = true, 300)
                        }
                        if (point && !point.getMarkerVisibility()) {
                            point = void 0
                        }
                        that._enableOutHandler();
                        if (that._legend.coordsIn(x, y)) {
                            that._hoverLegendItem(x, y);
                            return
                        }
                        if (that.hoveredSeries && that.hoveredSeries !== that._stuckSeries) {
                            that._releaseHoveredSeries()
                        }
                        if (that._hoverArgumentAxis(x, y, e)) {
                            return
                        }
                        if (that._isPointerOut(canvas, point)) {
                            that._pointerOut()
                        }
                        if (!canvas && !point) {
                            return
                        }
                        if (series && !point) {
                            point = series.getNeighborPoint(x, y);
                            if (!that._stickyHovering && point && !point.coordsIn(x, y)) {
                                point = null
                            }
                            if (series !== that.hoveredSeries) {
                                that._setTimeout((function() {
                                    that._setHoveredSeries(series);
                                    that._setStuckSeries(e, series, x, y);
                                    that._pointerComplete(point, x, y)
                                }), series);
                                return
                            }
                        } else if (point) {
                            if (e.type !== _pointer.default.move && "touch" !== e.pointerType) {
                                return
                            }
                            if (that.hoveredSeries) {
                                that._setTimeout(() => that._pointerOnPoint(point, x, y, e), point)
                            } else {
                                that._pointerOnPoint(point, x, y, e)
                            }
                            return
                        } else if (that._setStuckSeries(e, void 0, x, y) && that._stickyHovering) {
                            var _point;
                            series = that._stuckSeries;
                            point = series.getNeighborPoint(x, y);
                            that._releaseHoveredSeries();
                            (null === (_point = point) || void 0 === _point ? void 0 : _point.getMarkerVisibility()) && that._setHoveredPoint(point)
                        } else if (!that._stickyHovering) {
                            that._pointerOut()
                        }
                        that._pointerComplete(point, x, y)
                    },
                    _pointerOnPoint: function(point, x, y) {
                        this._resetHoveredArgument();
                        this._setHoveredPoint(point);
                        this._pointerComplete(point, x, y)
                    },
                    _pointerComplete: function(point) {
                        this.pointAtShownTooltip !== point && this._tooltip.isEnabled() && this._showTooltip(point)
                    },
                    _clickHandler: function(e) {
                        var _point2;
                        const that = e.data.tracker;
                        if (that._isHolding) {
                            return
                        }
                        const rootOffset = that._renderer.getRootOffset();
                        const x = _floor(e.pageX - rootOffset.left);
                        const y = _floor(e.pageY - rootOffset.top);
                        let point = getData(e, "chart-data-point");
                        const series = that._stuckSeries || getData(e, "chart-data-series") || (null === (_point2 = point) || void 0 === _point2 ? void 0 : _point2.series);
                        const axis = that._argumentAxis;
                        if (that._legend.coordsIn(x, y)) {
                            const item = that._legend.getItemByCoord(x, y);
                            if (item) {
                                that._legendClick(item, e)
                            }
                        } else if (null !== axis && void 0 !== axis && axis.coordsIn(x, y)) {
                            const argument = getData(e, "chart-data-argument", true);
                            if ((0, _type.isDefined)(argument)) {
                                that._eventTrigger("argumentAxisClick", {
                                    argument: argument,
                                    event: e
                                })
                            }
                        } else if (series) {
                            var _point3;
                            point = point || series.getPointByCoord(x, y);
                            if (null !== (_point3 = point) && void 0 !== _point3 && _point3.getMarkerVisibility()) {
                                that._pointClick(point, e)
                            } else {
                                getData(e, "chart-data-series") && that._eventTrigger("seriesClick", {
                                    target: series,
                                    event: e
                                })
                            }
                        }
                    },
                    dispose: function() {
                        this._disableOutHandler();
                        this._renderer.root.off(".dxChartTracker");
                        this._seriesGroup.off(".dxChartTracker")
                    }
                };
                const ChartTracker = function(options) {
                    this.ctor(options)
                };
                exports.ChartTracker = ChartTracker;
                (0, _extend.extend)(ChartTracker.prototype, baseTrackerPrototype, {
                    _pointClick: function(point, event) {
                        const eventTrigger = this._eventTrigger;
                        const series = point.series;
                        const eventArgs = {
                            target: point,
                            event: event
                        };
                        eventTrigger("pointClick", eventArgs, (function() {
                            !eventCanceled(eventArgs, series, "point") && eventTrigger("seriesClick", {
                                target: series,
                                event: event
                            })
                        }))
                    },
                    update: function(options) {
                        baseTrackerPrototype.update.call(this, options);
                        this._argumentAxis = options.argumentAxis || {};
                        this._axisHoverEnabled = this._argumentAxis && "allargumentpoints" === (0, _utils.normalizeEnum)(this._argumentAxis.getOptions().hoverMode);
                        this._rotated = options.rotated;
                        this._crosshair = options.crosshair;
                        this._stickyHovering = options.stickyHovering
                    },
                    _getCanvas: function(x, y) {
                        const canvases = this._canvases || [];
                        for (let i = 0; i < canvases.length; i++) {
                            const c = canvases[i];
                            if ((0, _utils.pointInCanvas)(c, x, y)) {
                                return c
                            }
                        }
                        return null
                    },
                    _isPointerOut: function(canvas) {
                        return !canvas && this._stuckSeries
                    },
                    _hideCrosshair: function() {
                        var _this$_crosshair;
                        null === (_this$_crosshair = this._crosshair) || void 0 === _this$_crosshair ? void 0 : _this$_crosshair.hide()
                    },
                    _moveCrosshair: function(point, x, y) {
                        if (this._crosshair && null !== point && void 0 !== point && point.isVisible()) {
                            this._crosshair.show({
                                point: point,
                                x: x,
                                y: y
                            })
                        }
                    },
                    _clean: function() {
                        baseTrackerPrototype._clean.call(this);
                        this._resetTimer();
                        this._stuckSeries = null
                    },
                    _getSeriesForShared: function(x, y) {
                        var _point4;
                        const that = this;
                        const points = [];
                        let point = null;
                        let distance = 1 / 0;
                        if (that._tooltip.isShared() && !that.hoveredSeries) {
                            (0, _iterator.each)(that._storedSeries, (function(_, series) {
                                const point = series.getNeighborPoint(x, y);
                                point && points.push(point)
                            }));
                            (0, _iterator.each)(points, (function(_, p) {
                                const coords = p.getCrosshairData(x, y);
                                const d = (0, _utils.getDistance)(x, y, coords.x, coords.y);
                                if (d < distance) {
                                    point = p;
                                    distance = d
                                }
                            }))
                        }
                        return null === (_point4 = point) || void 0 === _point4 ? void 0 : _point4.series
                    },
                    _setTimeout: function(callback, keeper) {
                        const that = this;
                        if (that._timeoutKeeper !== keeper) {
                            that._resetTimer();
                            that._hoverTimeout = setTimeout((function() {
                                callback();
                                that._timeoutKeeper = null
                            }), 100);
                            that._timeoutKeeper = keeper
                        }
                    },
                    _resetTimer: function() {
                        clearTimeout(this._hoverTimeout);
                        this._timeoutKeeper = this._hoverTimeout = null
                    },
                    _stopEvent: function(e) {
                        if (!(0, _type.isDefined)(e.cancelable) || e.cancelable) {
                            e.preventDefault();
                            e.stopPropagation()
                        }
                    },
                    _setStuckSeries: function(e, series, x, y) {
                        if ("mouse" !== e.pointerType) {
                            this._stuckSeries = null
                        } else {
                            this._stuckSeries = series || this._stuckSeries || this._getSeriesForShared(x, y)
                        }
                        return !!this._stuckSeries
                    },
                    _pointerOut: function() {
                        const that = this;
                        that._stuckSeries = null;
                        that._hideCrosshair();
                        that._resetTimer();
                        baseTrackerPrototype._pointerOut.apply(that, arguments)
                    },
                    _hoverArgumentAxis: function(x, y, e) {
                        const that = this;
                        that._resetHoveredArgument();
                        if (that._axisHoverEnabled && that._argumentAxis.coordsIn(x, y)) {
                            that._hoverArgument(getData(e, "chart-data-argument", true));
                            return true
                        }
                    },
                    _pointerComplete: function(point, x, y) {
                        this.hoveredSeries && this.hoveredSeries.updateHover(x, y);
                        this._resetTimer();
                        this._moveCrosshair(point, x, y);
                        baseTrackerPrototype._pointerComplete.call(this, point)
                    },
                    _legendClick: function(item, e) {
                        const series = this._storedSeries[item.id];
                        this._triggerLegendClick({
                            target: series,
                            event: e
                        }, "seriesClick")
                    },
                    _hoverLegendItem: function(x, y) {
                        this._stuckSeries = null;
                        this._hideCrosshair();
                        baseTrackerPrototype._hoverLegendItem.call(this, x, y)
                    },
                    _pointerOnPoint: function(point, x, y, e) {
                        this._setStuckSeries(e, point.series, x, y);
                        this._releaseHoveredSeries();
                        baseTrackerPrototype._pointerOnPoint.call(this, point, x, y, e)
                    },
                    _notifyLegendOnHoverArgument: false,
                    _getArgumentHoverMode: function() {
                        return correctHoverMode(this._argumentAxis)
                    },
                    dispose: function() {
                        this._resetTimer();
                        baseTrackerPrototype.dispose.call(this)
                    }
                });
                const PieTracker = function(options) {
                    this.ctor(options)
                };
                exports.PieTracker = PieTracker;
                (0, _extend.extend)(PieTracker.prototype, baseTrackerPrototype, {
                    _isPointerOut: function(_, point) {
                        return !point
                    },
                    _legendClick: function(item, e) {
                        const points = [];
                        this._storedSeries.forEach(s => points.push.apply(points, s.getPointsByKeys(item.argument, item.argumentIndex)));
                        this._eventTrigger("legendClick", {
                            target: item.argument,
                            points: points,
                            event: e
                        })
                    },
                    _pointClick: function(point, e) {
                        this._eventTrigger("pointClick", {
                            target: point,
                            event: e
                        })
                    },
                    _hoverLegendItem: function(x, y) {
                        const that = this;
                        const item = that._legend.getItemByCoord(x, y);
                        if (item && that._hoveredArgument !== item.argument) {
                            that._resetHoveredArgument();
                            that._hoverArgument(item.argument, item.argumentIndex)
                        } else if (!item) {
                            that.clearHover()
                        }
                    },
                    _getArgumentHoverMode: function() {
                        return correctHoverMode(this._legend)
                    },
                    _hoverArgumentAxis: _common.noop,
                    _setStuckSeries: _common.noop,
                    _getCanvas: _common.noop,
                    _notifyLegendOnHoverArgument: true
                })
            },
        59345:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/chart_components/zoom_and_pan.js ***!
              \**********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _wheel = __webpack_require__( /*! ../../events/core/wheel */ 765);
                var transformEvents = function(obj, nodeInterop) {
                    if (!nodeInterop && obj && obj.__esModule) {
                        return obj
                    }
                    if (null === obj || "object" !== typeof obj && "function" !== typeof obj) {
                        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 ("default" !== key && 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
                }(__webpack_require__( /*! ../../events/transform */ 91093));
                var _drag = __webpack_require__( /*! ../../events/drag */ 23174);

                function _getRequireWildcardCache(nodeInterop) {
                    if ("function" !== typeof WeakMap) {
                        return null
                    }
                    var cacheBabelInterop = new WeakMap;
                    var cacheNodeInterop = new WeakMap;
                    return (_getRequireWildcardCache = function(nodeInterop) {
                        return nodeInterop ? cacheNodeInterop : cacheBabelInterop
                    })(nodeInterop)
                }

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const EVENTS_NS = ".zoomAndPanNS";
                const DRAG_START_EVENT_NAME = _drag.start + EVENTS_NS;
                const DRAG_EVENT_NAME = _drag.move + EVENTS_NS;
                const DRAG_END_EVENT_NAME = _drag.end + EVENTS_NS;
                const PINCH_START_EVENT_NAME = transformEvents.pinchstart + EVENTS_NS;
                const PINCH_EVENT_NAME = transformEvents.pinch + EVENTS_NS;
                const PINCH_END_EVENT_NAME = transformEvents.pinchend + EVENTS_NS;
                const _min = Math.min;
                const _max = Math.max;
                const _abs = Math.abs;

                function canvasToRect(canvas) {
                    return {
                        x: canvas.left,
                        y: canvas.top,
                        width: canvas.width - canvas.left - canvas.right,
                        height: canvas.height - canvas.top - canvas.bottom
                    }
                }

                function checkCoords(rect, coords) {
                    const x = coords.x;
                    const y = coords.y;
                    return x >= rect.x && x <= rect.width + rect.x && y >= rect.y && y <= rect.height + rect.y
                }

                function getFilteredAxes(axes) {
                    return axes.filter(a => !a.getTranslator().getBusinessRange().isEmpty())
                }

                function isAxisAvailablePanning(axes) {
                    return axes.some(axis => !axis.isExtremePosition(false) || !axis.isExtremePosition(true))
                }

                function axisZoom(axis, onlyAxisToNotify, getRange, getParameters, actionField, scale, e) {
                    const silent = onlyAxisToNotify && axis !== onlyAxisToNotify;
                    const range = getRange(axis);
                    const {
                        stopInteraction: stopInteraction,
                        correctedRange: correctedRange
                    } = axis.checkZoomingLowerLimitOvercome(actionField, scale, range);
                    const result = axis.handleZooming(stopInteraction ? null : correctedRange, getParameters(silent), e, actionField);
                    stopInteraction && axis.handleZoomEnd();
                    return {
                        stopInteraction: stopInteraction,
                        result: result
                    }
                }

                function zoomAxes(e, axes, getRange, zoom, params, onlyAxisToNotify) {
                    axes = function(axes, onlyAxisToNotify) {
                        if (onlyAxisToNotify) {
                            axes = axes.sort((a, b) => {
                                if (a === onlyAxisToNotify) {
                                    return -1
                                }
                                if (b === onlyAxisToNotify) {
                                    return 1
                                }
                                return 0
                            })
                        }
                        return axes
                    }(axes, onlyAxisToNotify);
                    let zoomStarted = false;
                    const getParameters = silent => ({
                        start: !!silent,
                        end: !!silent
                    });
                    getFilteredAxes(axes).some(axis => {
                        const translator = axis.getTranslator();
                        const scale = translator.getMinScale(zoom);
                        const {
                            stopInteraction: stopInteraction,
                            result: result
                        } = axisZoom(axis, onlyAxisToNotify, getRange(_extends({
                            scale: scale,
                            translator: translator,
                            axis: axis
                        }, params)), getParameters, "zoom", scale, e);
                        zoomStarted = !stopInteraction;
                        return onlyAxisToNotify && result.isPrevented
                    });
                    return zoomStarted
                }

                function cancelEvent(e) {
                    if (e.originalEvent) {
                        cancelEvent(e.originalEvent)
                    }
                    if (false !== e.cancelable) {
                        e.cancel = true
                    }
                }
                var _default = {
                    name: "zoom_and_pan",
                    init: function() {
                        const chart = this;
                        const renderer = this._renderer;

                        function getAxesCopy(zoomAndPan, actionField) {
                            let axes = [];
                            const options = zoomAndPan.options;
                            const actionData = zoomAndPan.actionData;
                            if (options.argumentAxis[actionField]) {
                                axes.push(chart.getArgumentAxis())
                            }
                            if (options.valueAxis[actionField]) {
                                axes = axes.concat(actionData.valueAxes)
                            }
                            return axes
                        }

                        function startAxesViewportChanging(zoomAndPan, actionField, e) {
                            const axes = getAxesCopy(zoomAndPan, actionField);
                            getFilteredAxes(axes).some(axis => axis.handleZooming(null, {
                                end: true
                            }, e, actionField).isPrevented) && cancelEvent(e)
                        }

                        function axesViewportChanging(zoomAndPan, actionField, e, offsetCalc, centerCalc) {
                            function zoomAxes(axes, criteria, coordField, e, actionData) {
                                let zoom = {
                                    zoomed: false
                                };
                                criteria && getFilteredAxes(axes).forEach(axis => {
                                    const options = axis.getOptions();
                                    const viewport = axis.visualRange();
                                    const scale = axis.getTranslator().getEventScale(e);
                                    const translate = -offsetCalc(e, actionData, coordField, scale);
                                    zoom = (0, _extend.extend)(true, zoom, axis.getTranslator().zoom(translate, scale, axis.getZoomBounds()));
                                    const range = axis.adjustRange((0, _utils.getVizRangeObject)([zoom.min, zoom.max]));
                                    const {
                                        stopInteraction: stopInteraction,
                                        correctedRange: correctedRange
                                    } = axis.checkZoomingLowerLimitOvercome(actionField, scale, range);
                                    if (!(0, _type.isDefined)(viewport) || viewport.startValue.valueOf() !== correctedRange.startValue.valueOf() || viewport.endValue.valueOf() !== correctedRange.endValue.valueOf()) {
                                        axis.handleZooming(stopInteraction ? null : correctedRange, {
                                            start: true,
                                            end: true
                                        }, e, actionField);
                                        if (!stopInteraction) {
                                            zoom.zoomed = true;
                                            zoom.deltaTranslate = translate - zoom.translate
                                        }
                                    } else if ("touch" === e.pointerType && "discrete" === options.type) {
                                        const isMinPosition = axis.isExtremePosition(false);
                                        const isMaxPosition = axis.isExtremePosition(true);
                                        const zoomInEnabled = scale > 1 && !stopInteraction;
                                        const zoomOutEnabled = scale < 1 && (!isMinPosition || !isMaxPosition);
                                        const panningEnabled = 1 === scale && !(isMinPosition && (translate < 0 && !options.inverted || translate > 0 && options.inverted) || isMaxPosition && (translate > 0 && !options.inverted || translate < 0 && options.inverted));
                                        zoom.enabled = zoomInEnabled || zoomOutEnabled || panningEnabled
                                    }
                                });
                                return zoom
                            }

                            function storeOffset(e, actionData, zoom, coordField) {
                                if (zoom.zoomed) {
                                    actionData.offset[coordField] = (e.offset ? e.offset[coordField] : actionData.offset[coordField]) + zoom.deltaTranslate
                                }
                            }

                            function storeCenter(center, actionData, zoom, coordField) {
                                if (zoom.zoomed) {
                                    actionData.center[coordField] = center[coordField] + zoom.deltaTranslate
                                }
                            }
                            const rotated = chart.option("rotated");
                            const actionData = zoomAndPan.actionData;
                            const options = zoomAndPan.options;
                            let argZoom = {};
                            let valZoom = {};
                            if (!actionData.fallback) {
                                argZoom = zoomAxes(chart._argumentAxes, options.argumentAxis[actionField], rotated ? "y" : "x", e, actionData);
                                valZoom = zoomAxes(actionData.valueAxes, options.valueAxis[actionField], rotated ? "x" : "y", e, actionData);
                                chart._requestChange(["VISUAL_RANGE"]);
                                storeOffset(e, actionData, argZoom, rotated ? "y" : "x");
                                storeOffset(e, actionData, valZoom, rotated ? "x" : "y")
                            }
                            const center = centerCalc(e);
                            storeCenter(center, actionData, argZoom, rotated ? "y" : "x");
                            storeCenter(center, actionData, valZoom, rotated ? "x" : "y");
                            if (!argZoom.zoomed && !valZoom.zoomed) {
                                actionData.center = center
                            }
                            return argZoom.zoomed || valZoom.zoomed || actionData.fallback || argZoom.enabled || valZoom.enabled
                        }

                        function finishAxesViewportChanging(zoomAndPan, actionField, e, offsetCalc) {
                            function zoomAxes(axes, coordField, actionData, onlyAxisToNotify) {
                                let zoomStarted = false;
                                const scale = e.scale || 1;
                                const getRange = axis => {
                                    const zoom = axis.getTranslator().zoom(-offsetCalc(e, actionData, coordField, scale), scale, axis.getZoomBounds());
                                    return {
                                        startValue: zoom.min,
                                        endValue: zoom.max
                                    }
                                };
                                const getParameters = silent => ({
                                    start: true,
                                    end: silent
                                });
                                getFilteredAxes(axes).forEach(axis => {
                                    zoomStarted = !axisZoom(axis, onlyAxisToNotify, getRange, getParameters, actionField, scale, e).stopInteraction
                                });
                                return zoomStarted
                            }
                            const rotated = chart.option("rotated");
                            const actionData = zoomAndPan.actionData;
                            const options = zoomAndPan.options;
                            let zoomStarted = true;
                            if (actionData.fallback) {
                                zoomStarted &= options.argumentAxis[actionField] && zoomAxes(chart._argumentAxes, rotated ? "y" : "x", actionData, chart.getArgumentAxis());
                                zoomStarted |= options.valueAxis[actionField] && zoomAxes(actionData.valueAxes, rotated ? "x" : "y", actionData)
                            } else {
                                const axes = getAxesCopy(zoomAndPan, actionField);
                                getFilteredAxes(axes).forEach(axis => {
                                    axis.handleZooming(null, {
                                        start: true
                                    }, e, actionField)
                                });
                                zoomStarted = axes.length
                            }
                            zoomStarted && chart._requestChange(["VISUAL_RANGE"])
                        }

                        function prepareActionData(coords, action) {
                            const axes = chart._argumentAxes.filter(axis => checkCoords(canvasToRect(axis.getCanvas()), coords));
                            return {
                                fallback: chart._lastRenderingTime > 300,
                                cancel: !axes.length || !(0, _type.isDefined)(action),
                                action: action,
                                curAxisRect: axes.length && canvasToRect(axes[0].getCanvas()),
                                valueAxes: axes.length && chart._valueAxes.filter(axis => checkCoords(canvasToRect(axis.getCanvas()), coords)),
                                offset: {
                                    x: 0,
                                    y: 0
                                },
                                center: coords,
                                startCenter: coords
                            }
                        }

                        function getPointerCoord(rect, e) {
                            const rootOffset = renderer.getRootOffset();
                            return {
                                x: _min(_max(e.pageX - rootOffset.left, rect.x), rect.width + rect.x),
                                y: _min(_max(e.pageY - rootOffset.top, rect.y), rect.height + rect.y)
                            }
                        }

                        function calcCenterForPinch(e) {
                            const rootOffset = renderer.getRootOffset();
                            const x1 = e.pointers[0].pageX;
                            const x2 = e.pointers[1].pageX;
                            const y1 = e.pointers[0].pageY;
                            const y2 = e.pointers[1].pageY;
                            return {
                                x: _min(x1, x2) + _abs(x2 - x1) / 2 - rootOffset.left,
                                y: _min(y1, y2) + _abs(y2 - y1) / 2 - rootOffset.top
                            }
                        }

                        function calcCenterForDrag(e) {
                            const rootOffset = renderer.getRootOffset();
                            return {
                                x: e.pageX - rootOffset.left,
                                y: e.pageY - rootOffset.top
                            }
                        }

                        function calcOffsetForDrag(e, actionData, coordField) {
                            return e.offset[coordField] - actionData.offset[coordField]
                        }

                        function preventDefaults(e) {
                            if (false !== e.cancelable) {
                                e.preventDefault();
                                e.stopPropagation()
                            }
                            chart._stopCurrentHandling()
                        }
                        const zoomAndPan = {
                            dragStartHandler: function(e) {
                                const options = zoomAndPan.options;
                                const isTouch = "touch" === e.pointerType;
                                const wantPan = options.argumentAxis.pan || options.valueAxis.pan;
                                const wantZoom = options.argumentAxis.zoom || options.valueAxis.zoom;
                                const panKeyPressed = (0, _type.isDefined)(options.panKey) && e[(0, _utils.normalizeEnum)(options.panKey) + "Key"];
                                const dragToZoom = options.dragToZoom;
                                let action;
                                e._cancelPreventDefault = true;
                                if (isTouch) {
                                    if (options.allowTouchGestures && wantPan) {
                                        const cancelPanning = !zoomAndPan.panningVisualRangeEnabled() || zoomAndPan.skipEvent;
                                        action = cancelPanning ? null : "pan"
                                    }
                                } else if (dragToZoom && wantPan && panKeyPressed || !dragToZoom && wantPan) {
                                    action = "pan"
                                } else if (dragToZoom && wantZoom) {
                                    action = "zoom"
                                }
                                const actionData = prepareActionData(calcCenterForDrag(e), action);
                                if (actionData.cancel) {
                                    zoomAndPan.skipEvent = false;
                                    if (false !== e.cancelable) {
                                        e.cancel = true
                                    }
                                    return
                                }
                                zoomAndPan.actionData = actionData;
                                if ("zoom" === action) {
                                    actionData.startCoords = getPointerCoord(actionData.curAxisRect, e);
                                    actionData.rect = renderer.rect(0, 0, 0, 0).attr(options.dragBoxStyle).append(renderer.root)
                                } else {
                                    startAxesViewportChanging(zoomAndPan, "pan", e)
                                }
                            },
                            dragHandler: function(e) {
                                const rotated = chart.option("rotated");
                                const options = zoomAndPan.options;
                                const actionData = zoomAndPan.actionData;
                                const isTouch = "touch" === e.pointerType;
                                e._cancelPreventDefault = true;
                                if (!actionData || isTouch && !zoomAndPan.panningVisualRangeEnabled()) {
                                    return
                                }
                                if ("zoom" === actionData.action) {
                                    preventDefaults(e);
                                    const curCanvas = actionData.curAxisRect;
                                    const startCoords = actionData.startCoords;
                                    const curCoords = getPointerCoord(curCanvas, e);
                                    const zoomArg = options.argumentAxis.zoom;
                                    const zoomVal = options.valueAxis.zoom;
                                    const rect = {
                                        x: _min(startCoords.x, curCoords.x),
                                        y: _min(startCoords.y, curCoords.y),
                                        width: _abs(startCoords.x - curCoords.x),
                                        height: _abs(startCoords.y - curCoords.y)
                                    };
                                    if (!zoomArg || !zoomVal) {
                                        if (!zoomArg && !rotated || !zoomVal && rotated) {
                                            rect.x = curCanvas.x;
                                            rect.width = curCanvas.width
                                        } else {
                                            rect.y = curCanvas.y;
                                            rect.height = curCanvas.height
                                        }
                                    }
                                    actionData.rect.attr(rect)
                                } else if ("pan" === actionData.action) {
                                    axesViewportChanging(zoomAndPan, "pan", e, calcOffsetForDrag, e => e.offset);
                                    const deltaOffsetY = Math.abs(e.offset.y - actionData.offset.y);
                                    const deltaOffsetX = Math.abs(e.offset.x - actionData.offset.x);
                                    if (isTouch && (deltaOffsetY > 5 && deltaOffsetY > Math.abs(actionData.offset.x) || deltaOffsetX > 5 && deltaOffsetX > Math.abs(actionData.offset.y))) {
                                        return
                                    }
                                    preventDefaults(e)
                                }
                            },
                            dragEndHandler: function(e) {
                                const rotated = chart.option("rotated");
                                const options = zoomAndPan.options;
                                const actionData = zoomAndPan.actionData;
                                const isTouch = "touch" === e.pointerType;
                                const getRange = _ref => {
                                    let {
                                        translator: translator,
                                        startCoord: startCoord,
                                        curCoord: curCoord
                                    } = _ref;
                                    return () => [translator.from(startCoord), translator.from(curCoord)]
                                };
                                const getCoords = (curCoords, startCoords, field) => ({
                                    curCoord: curCoords[field],
                                    startCoord: startCoords[field]
                                });
                                const needToZoom = (axisOption, coords) => axisOption.zoom && _abs(coords.curCoord - coords.startCoord) > 5;
                                const panIsEmpty = actionData && "pan" === actionData.action && !actionData.fallback && 0 === actionData.offset.x && 0 === actionData.offset.y;
                                if (!actionData || isTouch && !zoomAndPan.panningVisualRangeEnabled() || panIsEmpty) {
                                    return
                                }!isTouch && preventDefaults(e);
                                if ("zoom" === actionData.action) {
                                    const curCoords = getPointerCoord(actionData.curAxisRect, e);
                                    const argumentCoords = getCoords(curCoords, actionData.startCoords, rotated ? "y" : "x");
                                    const valueCoords = getCoords(curCoords, actionData.startCoords, rotated ? "x" : "y");
                                    const argumentAxesZoomed = needToZoom(options.argumentAxis, argumentCoords) && zoomAxes(e, chart._argumentAxes, getRange, true, argumentCoords, chart.getArgumentAxis());
                                    const valueAxesZoomed = needToZoom(options.valueAxis, valueCoords) && zoomAxes(e, actionData.valueAxes, getRange, true, valueCoords);
                                    if (valueAxesZoomed || argumentAxesZoomed) {
                                        chart._requestChange(["VISUAL_RANGE"])
                                    }
                                    actionData.rect.dispose()
                                } else if ("pan" === actionData.action) {
                                    finishAxesViewportChanging(zoomAndPan, "pan", e, calcOffsetForDrag)
                                }
                                zoomAndPan.actionData = null
                            },
                            pinchStartHandler: function(e) {
                                const actionData = prepareActionData(calcCenterForPinch(e), "zoom");
                                if (actionData.cancel) {
                                    cancelEvent(e);
                                    return
                                }
                                zoomAndPan.actionData = actionData;
                                startAxesViewportChanging(zoomAndPan, "zoom", e)
                            },
                            pinchHandler: function(e) {
                                if (!zoomAndPan.actionData) {
                                    return
                                }
                                axesViewportChanging(zoomAndPan, "zoom", e, (e, actionData, coordField, scale) => calcCenterForPinch(e)[coordField] - actionData.center[coordField] + (actionData.center[coordField] - actionData.center[coordField] * scale), calcCenterForPinch);
                                preventDefaults(e)
                            },
                            pinchEndHandler: function(e) {
                                if (!zoomAndPan.actionData) {
                                    return
                                }
                                finishAxesViewportChanging(zoomAndPan, "zoom", e, (e, actionData, coordField, scale) => actionData.center[coordField] - actionData.startCenter[coordField] + (actionData.startCenter[coordField] - actionData.startCenter[coordField] * scale));
                                zoomAndPan.actionData = null
                            },
                            mouseWheelHandler: function(e) {
                                const options = zoomAndPan.options;
                                const rotated = chart.option("rotated");
                                const getRange = _ref2 => {
                                    let {
                                        translator: translator,
                                        coord: coord,
                                        scale: scale,
                                        axis: axis
                                    } = _ref2;
                                    return () => {
                                        const zoom = translator.zoom(-(coord - coord * scale), scale, axis.getZoomBounds());
                                        return {
                                            startValue: zoom.min,
                                            endValue: zoom.max
                                        }
                                    }
                                };
                                const coords = calcCenterForDrag(e);
                                let axesZoomed = false;
                                let targetAxes;
                                if (options.valueAxis.zoom) {
                                    targetAxes = chart._valueAxes.filter(axis => checkCoords(canvasToRect(axis.getCanvas()), coords));
                                    if (0 === targetAxes.length) {
                                        const targetCanvas = chart._valueAxes.reduce((r, axis) => {
                                            if (!r && axis.coordsIn(coords.x, coords.y)) {
                                                r = axis.getCanvas()
                                            }
                                            return r
                                        }, null);
                                        if (targetCanvas) {
                                            targetAxes = chart._valueAxes.filter(axis => checkCoords(canvasToRect(axis.getCanvas()), {
                                                x: targetCanvas.left,
                                                y: targetCanvas.top
                                            }))
                                        }
                                    }
                                    axesZoomed |= zoomAxes(e, targetAxes, getRange, e.delta > 0, {
                                        coord: rotated ? coords.x : coords.y
                                    })
                                }
                                if (options.argumentAxis.zoom) {
                                    const canZoom = chart._argumentAxes.some(axis => {
                                        if (checkCoords(canvasToRect(axis.getCanvas()), coords) || axis.coordsIn(coords.x, coords.y)) {
                                            return true
                                        }
                                        return false
                                    });
                                    axesZoomed |= canZoom && zoomAxes(e, chart._argumentAxes, getRange, e.delta > 0, {
                                        coord: rotated ? coords.y : coords.x
                                    }, chart.getArgumentAxis())
                                }
                                if (axesZoomed) {
                                    chart._requestChange(["VISUAL_RANGE"]);
                                    if (targetAxes && isAxisAvailablePanning(targetAxes) || !targetAxes && zoomAndPan.panningVisualRangeEnabled()) {
                                        preventDefaults(e)
                                    }
                                }
                            },
                            cleanup: function() {
                                renderer.root.off(EVENTS_NS);
                                zoomAndPan.actionData && zoomAndPan.actionData.rect && zoomAndPan.actionData.rect.dispose();
                                zoomAndPan.actionData = null;
                                renderer.root.css({
                                    "touch-action": ""
                                })
                            },
                            setup: function(options) {
                                zoomAndPan.cleanup();
                                if (!options.argumentAxis.pan) {
                                    renderer.root.on("dxc-scroll-start.zoomAndPanNS", cancelEvent)
                                }
                                if (options.argumentAxis.none && options.valueAxis.none) {
                                    return
                                }
                                zoomAndPan.options = options;
                                if ((options.argumentAxis.zoom || options.valueAxis.zoom) && options.allowMouseWheel) {
                                    renderer.root.on(_wheel.name + EVENTS_NS, zoomAndPan.mouseWheelHandler)
                                }
                                if ((options.argumentAxis.zoom || options.valueAxis.zoom) && options.allowTouchGestures) {
                                    renderer.root.on(PINCH_START_EVENT_NAME, {
                                        passive: false
                                    }, zoomAndPan.pinchStartHandler).on(PINCH_EVENT_NAME, {
                                        passive: false
                                    }, zoomAndPan.pinchHandler).on(PINCH_END_EVENT_NAME, zoomAndPan.pinchEndHandler)
                                }
                                renderer.root.on(DRAG_START_EVENT_NAME, {
                                    immediate: true,
                                    passive: false
                                }, zoomAndPan.dragStartHandler).on(DRAG_EVENT_NAME, {
                                    immediate: true,
                                    passive: false
                                }, zoomAndPan.dragHandler).on(DRAG_END_EVENT_NAME, zoomAndPan.dragEndHandler);
                                renderer.root.on("dxc-scroll-start.zoomAndPanNS", (function(e) {
                                    zoomAndPan.actionData = {
                                        valueAxes: [],
                                        offset: {
                                            x: 0,
                                            y: 0
                                        },
                                        center: {
                                            x: 0,
                                            y: 0
                                        }
                                    };
                                    preventDefaults(e);
                                    startAxesViewportChanging(zoomAndPan, "pan", e)
                                })).on("dxc-scroll-move.zoomAndPanNS", (function(e) {
                                    preventDefaults(e);
                                    axesViewportChanging(zoomAndPan, "pan", e, calcOffsetForDrag, e => e.offset)
                                })).on("dxc-scroll-end.zoomAndPanNS", (function(e) {
                                    preventDefaults(e);
                                    finishAxesViewportChanging(zoomAndPan, "pan", e, calcOffsetForDrag);
                                    zoomAndPan.actionData = null
                                }))
                            },
                            panningVisualRangeEnabled: function() {
                                return isAxisAvailablePanning(chart._valueAxes) || isAxisAvailablePanning(chart._argumentAxes)
                            }
                        };
                        this._zoomAndPan = zoomAndPan
                    },
                    members: {
                        _setupZoomAndPan: function() {
                            this._zoomAndPan.setup(this._themeManager.getOptions("zoomAndPan"))
                        }
                    },
                    dispose: function() {
                        this._zoomAndPan.cleanup()
                    },
                    customize: function(constructor) {
                        constructor.addChange({
                            code: "ZOOM_AND_PAN",
                            handler: function() {
                                this._setupZoomAndPan()
                            },
                            isThemeDependent: true,
                            isOptionChange: true,
                            option: "zoomAndPan"
                        })
                    }
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        39847:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/circular_gauge.js ***!
              \*******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _circular_gauge = (obj = __webpack_require__( /*! ./gauges/circular_gauge */ 31500), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _circular_gauge.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        99327:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/components/chart_theme_manager.js ***!
              \***********************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.ThemeManager = void 0;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _base_theme_manager = __webpack_require__( /*! ../core/base_theme_manager */ 43637);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                const ThemeManager = _base_theme_manager.BaseThemeManager.inherit(function() {
                    const processAxisOptions = function(axisOptions) {
                        if (!axisOptions) {
                            return {}
                        }
                        axisOptions = (0, _extend.extend)(true, {}, axisOptions);
                        axisOptions.title = (options = axisOptions.title, (0, _type.isString)(options) ? {
                            text: options
                        } : options);
                        var options;
                        if ("logarithmic" === axisOptions.type && axisOptions.logarithmBase <= 0 || axisOptions.logarithmBase && !(0, _type.isNumeric)(axisOptions.logarithmBase)) {
                            axisOptions.logarithmBase = void 0;
                            axisOptions.logarithmBaseError = true
                        }
                        if (axisOptions.label) {
                            if (axisOptions.label.alignment) {
                                axisOptions.label.userAlignment = true
                            }
                        }
                        return axisOptions
                    };
                    const applyParticularAxisOptions = function(name, userOptions, rotated) {
                        const theme = this._theme;
                        const position = !(rotated ^ "valueAxis" === name) ? "horizontalAxis" : "verticalAxis";
                        const processedUserOptions = processAxisOptions(userOptions);
                        const commonAxisSettings = processAxisOptions(this._userOptions.commonAxisSettings);
                        const mergeOptions = (0, _extend.extend)(true, {}, theme.commonAxisSettings, theme[position], theme[name], commonAxisSettings, processedUserOptions);
                        mergeOptions.workWeek = processedUserOptions.workWeek || theme[name].workWeek;
                        mergeOptions.forceUserTickInterval |= (0, _type.isDefined)(processedUserOptions.tickInterval) && !(0, _type.isDefined)(processedUserOptions.axisDivisionFactor);
                        return mergeOptions
                    };
                    const mergeOptions = function(name, userOptions) {
                        userOptions = userOptions || this._userOptions[name];
                        const theme = this._theme[name];
                        let result = this._mergedSettings[name];
                        if (result) {
                            return result
                        }
                        if ((0, _type.isPlainObject)(theme) && (0, _type.isPlainObject)(userOptions)) {
                            result = (0, _extend.extend)(true, {}, theme, userOptions)
                        } else {
                            result = (0, _type.isDefined)(userOptions) ? userOptions : theme
                        }
                        this._mergedSettings[name] = result;
                        return result
                    };
                    const applyParticularTheme = {
                        base: mergeOptions,
                        argumentAxis: applyParticularAxisOptions,
                        valueAxisRangeSelector: function() {
                            return mergeOptions.call(this, "valueAxis")
                        },
                        valueAxis: applyParticularAxisOptions,
                        series: function(name, userOptions, seriesCount) {
                            const that = this;
                            const theme = that._theme;
                            let userCommonSettings = that._userOptions.commonSeriesSettings || {};
                            const themeCommonSettings = theme.commonSeriesSettings;
                            const widgetType = that._themeSection.split(".").slice(-1)[0];
                            const type = (0, _utils.normalizeEnum)(userOptions.type || userCommonSettings.type || themeCommonSettings.type || "pie" === widgetType && theme.type);
                            const palette = that.palette;
                            const isBar = ~type.indexOf("bar");
                            const isLine = ~type.indexOf("line");
                            const isArea = ~type.indexOf("area");
                            const isBubble = "bubble" === type;
                            let mainSeriesColor;
                            const resolveLabelsOverlapping = that.getOptions("resolveLabelsOverlapping");
                            const containerBackgroundColor = that.getOptions("containerBackgroundColor");
                            const seriesTemplate = applyParticularTheme.seriesTemplate.call(this);
                            let seriesVisibility;
                            if (isBar || isBubble) {
                                userOptions = (0, _extend.extend)(true, {}, userCommonSettings, userCommonSettings[type], userOptions);
                                seriesVisibility = userOptions.visible;
                                userCommonSettings = {
                                    type: {}
                                };
                                (0, _extend.extend)(true, userOptions, userOptions.point);
                                userOptions.visible = seriesVisibility
                            }
                            const settings = (0, _extend.extend)(true, {
                                aggregation: {}
                            }, themeCommonSettings, themeCommonSettings[type], userCommonSettings, userCommonSettings[type], userOptions);
                            settings.aggregation.enabled = "chart" === widgetType && !!settings.aggregation.enabled;
                            settings.type = type;
                            settings.widgetType = widgetType;
                            settings.containerBackgroundColor = containerBackgroundColor;
                            if ("pie" !== widgetType) {
                                mainSeriesColor = (0, _utils.extractColor)(settings.color, true) || palette.getNextColor(seriesCount)
                            } else {
                                mainSeriesColor = function(argument, index, count) {
                                    const cat = "".concat(argument, "-").concat(index);
                                    if (!that._multiPieColors[cat]) {
                                        that._multiPieColors[cat] = palette.getNextColor(count)
                                    }
                                    return that._multiPieColors[cat]
                                }
                            }
                            settings.mainSeriesColor = mainSeriesColor;
                            settings.resolveLabelsOverlapping = resolveLabelsOverlapping;
                            if (settings.label && (isLine || isArea && "rangearea" !== type || "scatter" === type)) {
                                settings.label.position = "outside"
                            }
                            if (seriesTemplate) {
                                settings.nameField = seriesTemplate.nameField
                            }
                            return settings
                        },
                        animation: function(name) {
                            let userOptions = this._userOptions[name];
                            userOptions = (0, _type.isPlainObject)(userOptions) ? userOptions : (0, _type.isDefined)(userOptions) ? {
                                enabled: !!userOptions
                            } : {};
                            return mergeOptions.call(this, name, userOptions)
                        },
                        seriesTemplate() {
                            const value = mergeOptions.call(this, "seriesTemplate");
                            if (value) {
                                value.nameField = value.nameField || "series"
                            }
                            return value
                        },
                        zoomAndPan() {
                            function parseOption(option) {
                                option = (0, _utils.normalizeEnum)(option);
                                const pan = "pan" === option || "both" === option;
                                const zoom = "zoom" === option || "both" === option;
                                return {
                                    pan: pan,
                                    zoom: zoom,
                                    none: !pan && !zoom
                                }
                            }
                            const options = mergeOptions.call(this, "zoomAndPan");
                            return {
                                valueAxis: parseOption(options.valueAxis),
                                argumentAxis: parseOption(options.argumentAxis),
                                dragToZoom: !!options.dragToZoom,
                                dragBoxStyle: {
                                    class: "dxc-shutter",
                                    fill: options.dragBoxStyle.color,
                                    opacity: options.dragBoxStyle.opacity
                                },
                                panKey: options.panKey,
                                allowMouseWheel: !!options.allowMouseWheel,
                                allowTouchGestures: !!options.allowTouchGestures
                            }
                        }
                    };
                    return {
                        _themeSection: "chart",
                        ctor: function(params) {
                            const that = this;
                            that.callBase.apply(that, arguments);
                            const options = params.options || {};
                            that._userOptions = options;
                            that._mergeAxisTitleOptions = [];
                            that._multiPieColors = {};
                            that._callback = _common.noop
                        },
                        dispose: function() {
                            const that = this;
                            that.palette && that.palette.dispose();
                            that.palette = that._userOptions = that._mergedSettings = that._multiPieColors = null;
                            return that.callBase.apply(that, arguments)
                        },
                        resetPalette: function() {
                            this.palette.reset();
                            this._multiPieColors = {}
                        },
                        getOptions: function(name) {
                            return (applyParticularTheme[name] || applyParticularTheme.base).apply(this, arguments)
                        },
                        refresh: function() {
                            this._mergedSettings = {};
                            return this.callBase.apply(this, arguments)
                        },
                        _initializeTheme: function() {
                            const that = this;
                            that.callBase.apply(that, arguments);
                            that.updatePalette()
                        },
                        resetOptions: function(name) {
                            this._mergedSettings[name] = null
                        },
                        update: function(options) {
                            this._userOptions = options
                        },
                        updatePalette: function() {
                            this.palette = this.createPalette(this.getOptions("palette"), {
                                useHighlight: true,
                                extensionMode: this.getOptions("paletteExtensionMode")
                            })
                        }
                    }
                }());
                exports.ThemeManager = ThemeManager
            },
        32410:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/components/consts.js ***!
              \**********************************************************************/
            function(module, exports) {
                exports.default = void 0;
                exports.default = {
                    events: {
                        mouseover: "mouseover",
                        mouseout: "mouseout",
                        mousemove: "mousemove",
                        touchstart: "touchstart",
                        touchmove: "touchmove",
                        touchend: "touchend",
                        mousedown: "mousedown",
                        mouseup: "mouseup",
                        click: "click",
                        selectSeries: "selectseries",
                        deselectSeries: "deselectseries",
                        selectPoint: "selectpoint",
                        deselectPoint: "deselectpoint",
                        showPointTooltip: "showpointtooltip",
                        hidePointTooltip: "hidepointtooltip"
                    },
                    states: {
                        hover: "hover",
                        normal: "normal",
                        selection: "selection",
                        normalMark: 0,
                        hoverMark: 1,
                        selectedMark: 2,
                        applyHover: "applyHover",
                        applySelected: "applySelected",
                        resetItem: "resetItem"
                    },
                    radialLabelIndent: 30,
                    pieLabelSpacing: 10,
                    pieSeriesSpacing: 4
                };
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        45865:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/components/data_validator.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.validateData = function(data, groupsData, incidentOccurred, options) {
                    data = function(source, incidentOccurred) {
                        const data = [];
                        const sourceIsDefined = (0, _type.isDefined)(source);
                        let hasError = sourceIsDefined && !_isArray(source);
                        let i;
                        let ii;
                        let k;
                        let item;
                        if (sourceIsDefined && !hasError) {
                            for (i = 0, ii = source.length, k = 0; i < ii; ++i) {
                                item = source[i];
                                if ((0, _type.isObject)(item)) {
                                    data[k++] = item
                                } else if (item) {
                                    hasError = true
                                }
                            }
                        }
                        if (hasError) {
                            incidentOccurred("E2001")
                        }
                        return data
                    }(data, incidentOccurred);
                    groupsData.argumentType = groupsData.argumentAxisType = null;
                    groups = groupsData.groups, void groups.forEach((function(group) {
                        group.valueType = group.valueAxisType = null;
                        group.series.forEach((function(series) {
                            series.updateDataType({})
                        }));
                        group.valueAxis && group.valueAxis.resetTypes("valueType")
                    }));
                    var groups;
                    axes = groupsData.argumentAxes, void(axes && axes.forEach((function(axis) {
                        axis.resetTypes("argumentType")
                    })));
                    var axes;
                    ! function(data, groupsData, checkTypeForAllData) {
                        const groupsWithUndefinedValueType = [];
                        const groupsWithUndefinedArgumentType = [];
                        const argumentTypeGroup = groupsData.argumentOptions && axisTypeParser(groupsData.argumentOptions.argumentType);
                        let groupsIndexes;
                        groupsData.groups.forEach((function(group) {
                            if (!group.series.length) {
                                return
                            }
                            const valueTypeGroup = group.valueOptions && axisTypeParser(group.valueOptions.valueType);
                            group.valueType = valueTypeGroup;
                            groupsData.argumentType = argumentTypeGroup;
                            !valueTypeGroup && groupsWithUndefinedValueType.push(group);
                            !argumentTypeGroup && groupsWithUndefinedArgumentType.push(group)
                        }));
                        if (groupsWithUndefinedValueType.length || groupsWithUndefinedArgumentType.length) {
                            groupsIndexes = groupsWithUndefinedValueType.map((function(_, index) {
                                return index
                            }));
                            data.some((function(cell) {
                                let defineArg;
                                groupsWithUndefinedValueType.forEach((function(group, groupIndex) {
                                    if (function(group, cell) {
                                            group.series.forEach((function(series) {
                                                series.getValueFields().forEach((function(field) {
                                                    group.valueType = getType(cell[field], group.valueType)
                                                }))
                                            }));
                                            return group.valueType
                                        }(group, cell) && groupsIndexes.indexOf(groupIndex) >= 0) {
                                        groupsIndexes.splice(groupIndex, 1)
                                    }
                                }));
                                if (!defineArg) {
                                    groupsWithUndefinedArgumentType.forEach((function(group) {
                                        defineArg = function(series, cell, groupsData) {
                                            series.forEach((function(currentSeries) {
                                                groupsData.argumentType = getType(cell[currentSeries.getArgumentField()], groupsData.argumentType)
                                            }));
                                            return groupsData.argumentType
                                        }(group.series, cell, groupsData)
                                    }))
                                }
                                if (!checkTypeForAllData && defineArg && 0 === groupsIndexes.length) {
                                    return true
                                }
                            }))
                        }
                    }(data, groupsData, options.checkTypeForAllData);
                    ! function(groupsData, incidentOccurred) {
                        const argumentOptions = groupsData.argumentOptions || {};
                        const userArgumentCategories = argumentOptions && argumentOptions.categories || [];
                        const argumentAxisType = correctAxisType(groupsData.argumentType, argumentOptions.type, !!userArgumentCategories.length, incidentOccurred);
                        groupsData.groups.forEach((function(group) {
                            const valueOptions = group.valueOptions || {};
                            const valueCategories = valueOptions.categories || [];
                            const valueAxisType = correctAxisType(group.valueType, valueOptions.type, !!valueCategories.length, incidentOccurred);
                            group.series.forEach((function(series) {
                                const optionsSeries = {};
                                optionsSeries.argumentAxisType = argumentAxisType;
                                optionsSeries.valueAxisType = valueAxisType;
                                groupsData.argumentAxisType = groupsData.argumentAxisType || optionsSeries.argumentAxisType;
                                group.valueAxisType = group.valueAxisType || optionsSeries.valueAxisType;
                                optionsSeries.argumentType = groupsData.argumentType;
                                optionsSeries.valueType = group.valueType;
                                optionsSeries.showZero = valueOptions.showZero;
                                series.updateDataType(optionsSeries)
                            }));
                            group.valueAxisType = group.valueAxisType || valueAxisType;
                            if (group.valueAxis) {
                                group.valueAxis.setTypes(group.valueAxisType, group.valueType, "valueType");
                                group.valueAxis.validate()
                            }
                        }));
                        groupsData.argumentAxisType = groupsData.argumentAxisType || argumentAxisType;
                        if (groupsData.argumentAxes) {
                            groupsData.argumentAxes.forEach((function(axis) {
                                axis.setTypes(groupsData.argumentAxisType, groupsData.argumentType, "argumentType");
                                axis.validate()
                            }))
                        }
                    }(groupsData, incidentOccurred);
                    if (options.convertToAxisDataType) {
                        data = function(data, parsers) {
                            const parsedData = [];
                            let i;
                            const ii = data.length;
                            parsedData.length = ii;
                            for (i = 0; i < ii; ++i) {
                                parsedData[i] = getParsedCell(data[i], parsers)
                            }
                            return parsedData
                        }(data, function(groupsData, incidentOccurred) {
                            const argumentParser = createParserUnit(groupsData.argumentType, groupsData.argumentAxisType, incidentOccurred);
                            let sizeParser;
                            let valueParser;
                            const categoryParsers = [argumentParser];
                            const cache = {};
                            const list = [];
                            groupsData.groups.forEach((function(group, groupIndex) {
                                group.series.forEach((function(series) {
                                    valueParser = createParserUnit(group.valueType, group.valueAxisType, incidentOccurred);
                                    sizeParser = createParserUnit("numeric", "continuous", incidentOccurred);
                                    cache[series.getArgumentField()] = argumentParser;
                                    series.getValueFields().forEach((function(field) {
                                        categoryParsers[groupIndex + 1] = valueParser;
                                        cache[field] = valueParser
                                    }));
                                    if (series.getSizeField()) {
                                        cache[series.getSizeField()] = sizeParser
                                    }
                                }))
                            }));
                            for (const field in cache) {
                                list.push([field, cache[field]])
                            }
                            list.length && function(groupsData, parsers) {
                                const argumentCategories = groupsData.argumentOptions && groupsData.argumentOptions.categories;
                                groupsData.groups.forEach((function(valueGroup, i) {
                                    const categories = valueGroup.valueOptions && valueGroup.valueOptions.categories;
                                    if (categories) {
                                        valueGroup.valueOptions.categories = parseCategories(categories, parsers[i + 1])
                                    }
                                }));
                                if (argumentCategories) {
                                    groupsData.argumentOptions.categories = parseCategories(argumentCategories, parsers[0])
                                }
                            }(groupsData, categoryParsers);
                            return list
                        }(groupsData, incidentOccurred))
                    }! function(data, groupsData) {
                        const firstSeries = groupsData.groups[0] && groupsData.groups[0].series[0];
                        const isPie = firstSeries && ("pie" === firstSeries.type || "doughnut" === firstSeries.type || "donut" === firstSeries.type);
                        if (!isPie) {
                            return
                        }
                        groupsData.groups.forEach((function(group) {
                            group.series.forEach((function(series) {
                                ! function(originalData, argumentField, valueField, smallValuesGrouping) {
                                    smallValuesGrouping = smallValuesGrouping || {};
                                    const mode = smallValuesGrouping.mode;
                                    const others = {};
                                    if (!mode || "none" === mode) {
                                        return
                                    }
                                    others[argumentField] = String(smallValuesGrouping.groupName || "others");
                                    others[valueField] = 0;
                                    const data = sortValues(originalData.slice(), false, (function(a) {
                                        return a[valueField]
                                    }));
                                    ! function(data, others, valueField, index) {
                                        if (index >= 0) {
                                            data.slice(index).forEach((function(cell) {
                                                if ((0, _type.isDefined)(cell[valueField])) {
                                                    others[valueField] += cell[valueField];
                                                    cell[valueField] = void 0
                                                }
                                            }))
                                        }
                                    }(data, others, valueField, "smallValueThreshold" === mode ? function(data, valueField, threshold) {
                                        let i;
                                        const ii = data.length;
                                        let value;
                                        for (i = 0; i < ii; ++i) {
                                            value = data[i][valueField];
                                            if ((0, _type.isDefined)(value) && threshold > value) {
                                                break
                                            }
                                        }
                                        return i
                                    }(data, valueField, smallValuesGrouping.threshold) : smallValuesGrouping.topCount);
                                    others[valueField] && originalData.push(others)
                                }(data, series.getArgumentField(), series.getValueFields()[0], series.getOptions().smallValuesGrouping)
                            }))
                        }))
                    }(data, groupsData);
                    const dataByArgumentFields = function(data, groupsData, options, uniqueArgumentFields) {
                        const dataByArguments = {};
                        const isDiscrete = "discrete" === groupsData.argumentAxisType;
                        const userCategories = isDiscrete && groupsData.argumentOptions && groupsData.argumentOptions.categories;
                        let sortFunction = function(data) {
                            return data
                        };
                        const sortingMethodOption = options.sortingMethod;
                        let reSortCategories;
                        if (!userCategories && (0, _type.isFunction)(sortingMethodOption)) {
                            data = function(data, callback) {
                                return data.slice().sort(callback)
                            }(data, sortingMethodOption)
                        }
                        if (isDiscrete) {
                            groupsData.categories = function(data, uniqueArgumentFields, userCategories) {
                                const categories = userCategories ? userCategories.slice() : [];
                                uniqueArgumentFields.forEach((function(field) {
                                    data.forEach((function(item) {
                                        const dataItem = item[field];
                                        (0, _type.isDefined)(dataItem) && function(collection, item) {
                                            return -1 === collection.map((function(collectionItem) {
                                                return collectionItem.valueOf()
                                            })).indexOf(item.valueOf())
                                        }(categories, dataItem) && categories.push(dataItem)
                                    }))
                                }));
                                return categories
                            }(data, uniqueArgumentFields, userCategories)
                        }
                        if (userCategories || !(0, _type.isFunction)(sortingMethodOption) && "string" === groupsData.argumentType && !options._skipArgumentSorting) {
                            sortFunction = function(categories) {
                                const hash = {};
                                categories.forEach((function(value, i) {
                                    hash[value] = i
                                }));
                                return function(data, argumentField) {
                                    return sortValues(data.slice(), true, (function(a) {
                                        return hash[a[argumentField]]
                                    }))
                                }
                            }(groupsData.categories)
                        } else if (true === sortingMethodOption && "string" !== groupsData.argumentType) {
                            sortFunction = sortByArgument;
                            reSortCategories = isDiscrete
                        }
                        uniqueArgumentFields.forEach((function(field) {
                            dataByArguments[field] = sortFunction(data, field)
                        }));
                        if (reSortCategories) {
                            groupsData.categories = groupsData.categories.sort(sort)
                        }
                        return dataByArguments
                    }(data, groupsData, options, function(groupsData) {
                        const uniqueArgumentFields = [];
                        const hash = {};
                        groupsData.groups.forEach((function(group) {
                            group.series.forEach((function(series) {
                                ! function(item, collection, itemsHash) {
                                    if (!itemsHash[item]) {
                                        collection.push(item);
                                        itemsHash[item] = true
                                    }
                                }(series.getArgumentField(), uniqueArgumentFields, hash)
                            }))
                        }));
                        return uniqueArgumentFields
                    }(groupsData));
                    return dataByArgumentFields
                };
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _parse_utils = __webpack_require__( /*! ./parse_utils */ 8587);
                const axisTypeParser = (0, _utils.enumParser)(["string", "numeric", "datetime"]);
                const _isArray = Array.isArray;

                function sortValues(data, asc, selector) {
                    const func = asc ? function(a, b) {
                        return a - b
                    } : function(a, b) {
                        return b - a
                    };
                    data.sort((function(a, b) {
                        const valA = selector(a);
                        const valB = selector(b);
                        const aa = (0, _type.isDefined)(valA) ? 1 : 0;
                        const bb = (0, _type.isDefined)(valB) ? 1 : 0;
                        return aa && bb ? func(valA, valB) : func(aa, bb)
                    }));
                    return data
                }

                function parseCategories(categories, parser) {
                    const newArray = [];
                    categories.forEach((function(category) {
                        const parsedCategory = parser(category);
                        void 0 !== parsedCategory && newArray.push(parsedCategory)
                    }));
                    return newArray
                }

                function eigen(x) {
                    return x
                }

                function getType(unit, type) {
                    let result = type;
                    if ("string" === type || (0, _type.isString)(unit)) {
                        result = "string"
                    } else if ("datetime" === type || (0, _type.isDate)(unit)) {
                        result = "datetime"
                    } else if ((0, _type.isNumeric)(unit)) {
                        result = "numeric"
                    }
                    return result
                }

                function correctAxisType(type, axisType, hasCategories, incidentOccurred) {
                    if ("string" === type && ("continuous" === axisType || "logarithmic" === axisType || "semidiscrete" === axisType)) {
                        incidentOccurred("E2002")
                    }
                    return "logarithmic" === axisType ? "logarithmic" : hasCategories || "discrete" === axisType || "string" === type ? "discrete" : "semidiscrete" === axisType ? "semidiscrete" : "continuous"
                }

                function createParserUnit(type, axisType, incidentOccurred) {
                    const parser = type ? (0, _parse_utils.getParser)(type) : eigen;
                    const filterInfinity = "discrete" !== axisType ? function(x) {
                        return isFinite(x) || void 0 === x ? x : null
                    } : eigen;
                    return function(unit, field) {
                        const parseUnit = filterInfinity(parser(unit));
                        if (void 0 === parseUnit) {
                            ! function(unit, field, incidentOccurred) {
                                if (unit) {
                                    incidentOccurred(!(0, _type.isNumeric)(unit) && !(0, _type.isDate)(unit) && !(0, _type.isString)(unit) ? "E2003" : "E2004", [field])
                                }
                            }(unit, field, incidentOccurred)
                        }
                        return parseUnit
                    }
                }

                function getParsedCell(cell, parsers) {
                    let i;
                    const ii = parsers.length;
                    const obj = (0, _extend.extend)({}, cell);
                    let field;
                    let value;
                    for (i = 0; i < ii; ++i) {
                        field = parsers[i][0];
                        value = cell[field];
                        obj[field] = parsers[i][1](value, field)
                    }
                    return obj
                }

                function sort(a, b) {
                    const result = a - b;
                    if (isNaN(result)) {
                        if (!(0, _type.isDefined)(a)) {
                            return 1
                        }
                        if (!(0, _type.isDefined)(b)) {
                            return -1
                        }
                        return 0
                    }
                    return result
                }

                function sortByArgument(data, argumentField) {
                    return data.slice().sort((function(a, b) {
                        return sort(a[argumentField], b[argumentField])
                    }))
                }
            },
        16342:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/components/legend.js ***!
              \**********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.plugin = exports.Legend = void 0;
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _layout_element = __webpack_require__( /*! ../core/layout_element */ 73711);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _title = __webpack_require__( /*! ../core/title */ 17384);
                var _object = __webpack_require__( /*! ../../core/utils/object */ 48013);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _renderer = __webpack_require__( /*! ../core/renderers/renderer */ 56453);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                const _Number = Number;
                const _math = Math;
                const _round = _math.round;
                const _max = _math.max;
                const _min = _math.min;
                const _ceil = _math.ceil;
                const _isDefined = _type.isDefined;
                const _isFunction = _type.isFunction;
                const _enumParser = _utils.enumParser;
                const _normalizeEnum = _utils.normalizeEnum;
                const _extend = _extend2.extend;
                const CENTER = "center";
                const RIGHT = "right";
                const LEFT = "left";
                const TOP = "top";
                const BOTTOM = "bottom";
                const parseHorizontalAlignment = _enumParser([LEFT, CENTER, RIGHT]);
                const parseVerticalAlignment = _enumParser([TOP, BOTTOM]);
                const parseOrientation = _enumParser(["vertical", "horizontal"]);
                const parseItemTextPosition = _enumParser([LEFT, RIGHT, TOP, BOTTOM]);
                const parsePosition = _enumParser(["outside", "inside"]);
                const parseItemsAlignment = _enumParser([LEFT, CENTER, RIGHT]);

                function getState(state, color, stateName) {
                    if (!state) {
                        return
                    }
                    const colorFromAction = state.fill;
                    return (0, _extend2.extend)({}, {
                        state: stateName,
                        fill: "none" === colorFromAction ? color : colorFromAction,
                        opacity: state.opacity,
                        filter: state.filter,
                        hatching: _extend({}, state.hatching, {
                            step: 5,
                            width: 2
                        })
                    })
                }

                function getAttributes(item, state, size) {
                    const attrs = (0, _renderer.processHatchingAttrs)(item, state);
                    if (attrs.fill && 0 === attrs.fill.indexOf("DevExpress")) {
                        attrs.fill = (0, _renderer.getFuncIri)(attrs.fill)
                    }
                    attrs.opacity = attrs.opacity >= 0 ? attrs.opacity : 1;
                    return (0, _extend2.extend)({}, attrs, {
                        size: size
                    })
                }

                function applyMarkerState(id, idToIndexMap, items, stateName) {
                    const item = idToIndexMap && items[idToIndexMap[id]];
                    if (item) {
                        item.renderMarker(item.states[stateName])
                    }
                }

                function parseOptions(options, textField, allowInsidePosition) {
                    if (!options) {
                        return null
                    }! function(options) {
                        let margin = options.margin;
                        if (margin >= 0) {
                            margin = _Number(options.margin);
                            margin = {
                                top: margin,
                                bottom: margin,
                                left: margin,
                                right: margin
                            }
                        } else {
                            margin = {
                                top: margin.top >= 0 ? _Number(margin.top) : 10,
                                bottom: margin.bottom >= 0 ? _Number(margin.bottom) : 10,
                                left: margin.left >= 0 ? _Number(margin.left) : 10,
                                right: margin.right >= 0 ? _Number(margin.right) : 10
                            }
                        }
                        options.margin = margin
                    }(options);
                    options.horizontalAlignment = parseHorizontalAlignment(options.horizontalAlignment, RIGHT);
                    options.verticalAlignment = parseVerticalAlignment(options.verticalAlignment, options.horizontalAlignment === CENTER ? BOTTOM : TOP);
                    options.orientation = parseOrientation(options.orientation, options.horizontalAlignment === CENTER ? "horizontal" : "vertical");
                    options.itemTextPosition = parseItemTextPosition(options.itemTextPosition, "horizontal" === options.orientation ? BOTTOM : RIGHT);
                    options.position = allowInsidePosition ? parsePosition(options.position, "outside") : "outside";
                    options.itemsAlignment = parseItemsAlignment(options.itemsAlignment, null);
                    options.hoverMode = _normalizeEnum(options.hoverMode);
                    options.customizeText = _isFunction(options.customizeText) ? options.customizeText : function() {
                        return this[textField]
                    };
                    options.customizeHint = _isFunction(options.customizeHint) ? options.customizeHint : _common.noop;
                    options._incidentOccurred = options._incidentOccurred || _common.noop;
                    return options
                }

                function createSquareMarker(renderer, size) {
                    return renderer.rect(0, 0, size, size)
                }

                function createCircleMarker(renderer, size) {
                    return renderer.circle(size / 2, size / 2, size / 2)
                }

                function inRect(rect, x, y) {
                    return x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom
                }

                function checkLinesSize(lines, layoutOptions, countItems, margins) {
                    const position = {
                        x: 0,
                        y: 0
                    };
                    let maxMeasureLength = 0;
                    let maxAltMeasureLength = 0;
                    let margin = 0;
                    if ("y" === layoutOptions.direction) {
                        margin = margins.top + margins.bottom
                    } else {
                        margin = margins.left + margins.right
                    }
                    lines.forEach((function(line, i) {
                        const firstItem = line[0];
                        const lineLength = line.length;
                        line.forEach((function(item, index) {
                            const offset = item.offset || layoutOptions.spacing;
                            position[layoutOptions.direction] += item[layoutOptions.measure] + (index !== lineLength - 1 ? offset : 0);
                            maxMeasureLength = _max(maxMeasureLength, position[layoutOptions.direction])
                        }));
                        position[layoutOptions.direction] = 0;
                        position[layoutOptions.altDirection] += firstItem[layoutOptions.altMeasure] + firstItem.altOffset || layoutOptions.altSpacing;
                        maxAltMeasureLength = _max(maxAltMeasureLength, position[layoutOptions.altDirection])
                    }));
                    if (maxMeasureLength + margin > layoutOptions.length) {
                        layoutOptions.countItem = function(layoutOptions, countItems) {
                            layoutOptions.altCountItem++;
                            return _ceil(countItems / layoutOptions.altCountItem)
                        }(layoutOptions, countItems);
                        return true
                    }
                }

                function getLineLength(line, layoutOptions) {
                    return line.reduce((lineLength, item) => {
                        const offset = item.offset || layoutOptions.spacing;
                        return lineLength + item[layoutOptions.measure] + offset
                    }, 0)
                }

                function getPos(layoutOptions) {
                    switch (layoutOptions.itemTextPosition) {
                        case BOTTOM:
                            return {
                                horizontal: CENTER, vertical: TOP
                            };
                        case TOP:
                            return {
                                horizontal: CENTER, vertical: BOTTOM
                            };
                        case LEFT:
                            return {
                                horizontal: RIGHT, vertical: CENTER
                            };
                        case RIGHT:
                            return {
                                horizontal: LEFT, vertical: CENTER
                            }
                    }
                }

                function setMaxInLine(line, measure) {
                    const maxLineSize = line.reduce((maxLineSize, item) => {
                        const itemMeasure = item ? item[measure] : maxLineSize;
                        return _max(maxLineSize, itemMeasure)
                    }, 0);
                    line.forEach(item => {
                        if (item) {
                            item[measure] = maxLineSize
                        }
                    })
                }

                function transpose(array) {
                    const width = array.length;
                    const height = array[0].length;
                    let i;
                    let j;
                    const transposeArray = [];
                    for (i = 0; i < height; i++) {
                        transposeArray[i] = [];
                        for (j = 0; j < width; j++) {
                            transposeArray[i][j] = array[j][i]
                        }
                    }
                    return transposeArray
                }
                let getMarkerCreator = function(type) {
                    return function(type) {
                        return "circle" === _normalizeEnum(type)
                    }(type) ? createCircleMarker : createSquareMarker
                };

                function getTitleHorizontalAlignment(options) {
                    if (options.horizontalAlignment === CENTER) {
                        return CENTER
                    } else if (options.itemTextPosition === RIGHT) {
                        return LEFT
                    } else if (options.itemTextPosition === LEFT) {
                        return RIGHT
                    } else {
                        return CENTER
                    }
                }
                let Legend = function(settings) {
                    this._renderer = settings.renderer;
                    this._legendGroup = settings.group;
                    this._backgroundClass = settings.backgroundClass;
                    this._itemGroupClass = settings.itemGroupClass;
                    this._textField = settings.textField;
                    this._getCustomizeObject = settings.getFormatObject;
                    this._titleGroupClass = settings.titleGroupClass;
                    this._allowInsidePosition = settings.allowInsidePosition;
                    this._widget = settings.widget;
                    this._updated = false
                };
                exports.Legend = Legend;
                const _Legend = Legend;
                const legendPrototype = _Legend.prototype = (0, _object.clone)(_layout_element.LayoutElement.prototype);
                (0, _extend2.extend)(legendPrototype, {
                    constructor: _Legend,
                    getOptions: function() {
                        return this._options
                    },
                    update: function() {
                        let data = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];
                        let options = arguments.length > 1 ? arguments[1] : void 0;
                        let themeManagerTitleOptions = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                        const that = this;
                        options = that._options = parseOptions(options, that._textField, that._allowInsidePosition) || {};
                        const initMarkerSize = options.markerSize;
                        this._updated = true;
                        this._data = data.map(dataItem => {
                            dataItem.size = _Number(dataItem.size > 0 ? dataItem.size : initMarkerSize);
                            dataItem.marker = getAttributes(dataItem, dataItem.states.normal);
                            Object.defineProperty(dataItem.marker, "size", {
                                get: () => dataItem.size,
                                set(value) {
                                    dataItem.size = value
                                }
                            });
                            Object.defineProperty(dataItem.marker, "opacity", {
                                get: () => dataItem.states.normal.opacity,
                                set(value) {
                                    dataItem.states.normal.opacity = dataItem.states.hover.opacity = dataItem.states.selection.opacity = value
                                }
                            });
                            return dataItem
                        });
                        if (options.customizeItems) {
                            that._data = options.customizeItems(data.slice()) || data
                        }
                        that._boundingRect = {
                            width: 0,
                            height: 0,
                            x: 0,
                            y: 0
                        };
                        if (that.isVisible() && !that._title) {
                            that._title = new _title.Title({
                                renderer: that._renderer,
                                cssClass: that._titleGroupClass,
                                root: that._legendGroup
                            })
                        }
                        if (that._title) {
                            const titleOptions = options.title;
                            themeManagerTitleOptions.horizontalAlignment = getTitleHorizontalAlignment(options);
                            that._title.update(themeManagerTitleOptions, titleOptions)
                        }
                        this.erase();
                        return that
                    },
                    isVisible: function() {
                        return this._options && this._options.visible
                    },
                    draw: function(width, height) {
                        const that = this;
                        const items = that._getItemData();
                        that.erase();
                        if (!(that.isVisible() && items && items.length)) {
                            return that
                        }
                        that._insideLegendGroup = that._renderer.g().enableLinks().append(that._legendGroup);
                        that._title.changeLink(that._insideLegendGroup);
                        that._createBackground();
                        if (that._title.hasText()) {
                            const horizontalPadding = that._background ? 2 * that._options.paddingLeftRight : 0;
                            that._title.draw(width - horizontalPadding, height)
                        }
                        that._markersGroup = that._renderer.g().attr({
                            class: that._itemGroupClass
                        }).append(that._insideLegendGroup);
                        that._createItems(items);
                        that._updateElementsPosition(width, height);
                        return that
                    },
                    _measureElements: function() {
                        const options = this._options;
                        let maxBBoxHeight = 0;
                        this._items.forEach(item => {
                            const labelBBox = item.label.getBBox();
                            const markerBBox = item.marker.getBBox();
                            item.markerBBox = markerBBox;
                            item.markerSize = Math.max(markerBBox.width, markerBBox.height);
                            const bBox = function(options, markerBBox, labelBBox) {
                                let width;
                                let height;
                                switch (options.itemTextPosition) {
                                    case LEFT:
                                    case RIGHT:
                                        width = markerBBox.width + 7 + labelBBox.width;
                                        height = _max(markerBBox.height, labelBBox.height);
                                        break;
                                    case TOP:
                                    case BOTTOM:
                                        width = _max(markerBBox.width, labelBBox.width);
                                        height = markerBBox.height + 4 + labelBBox.height
                                }
                                return {
                                    width: width,
                                    height: height
                                }
                            }(options, markerBBox, labelBBox);
                            item.labelBBox = labelBBox;
                            item.bBox = bBox;
                            maxBBoxHeight = _max(maxBBoxHeight, bBox.height)
                        });
                        if (options.equalRowHeight) {
                            this._items.forEach(item => item.bBox.height = maxBBoxHeight)
                        }
                    },
                    _updateElementsPosition: function(width, height) {
                        const that = this;
                        const options = that._options;
                        this._size = {
                            width: width,
                            height: height
                        };
                        that._measureElements();
                        that._locateElements(options);
                        that._finalUpdate(options);
                        const size = that.getLayoutOptions();
                        if (size.width > width || size.height > height) {
                            that.freeSpace()
                        }
                    },
                    _createItems: function(items) {
                        const that = this;
                        const options = that._options;
                        const renderer = that._renderer;
                        const createMarker = getMarkerCreator(options.markerShape);
                        that._markersId = {};
                        const templateFunction = !options.markerTemplate ? (dataItem, group) => {
                            const attrs = dataItem.marker;
                            createMarker(renderer, attrs.size).attr({
                                fill: attrs.fill,
                                opacity: attrs.opacity,
                                filter: attrs.filter
                            }).append({
                                element: group
                            })
                        } : options.markerTemplate;
                        const template = that._widget._getTemplate(templateFunction);
                        const markersGroup = that._markersGroup;
                        markersGroup.css((0, _utils.patchFontOptions)(options.font));
                        that._deferredItems = [];
                        that._templatesGroups = [];
                        that._items = (items || []).map((dataItem, i) => {
                            const stateOfDataItem = dataItem.states;
                            const normalState = stateOfDataItem.normal;
                            const normalStateFill = normalState.fill;
                            dataItem.size = dataItem.marker.size;
                            const states = {
                                normal: (0, _extend2.extend)(normalState, {
                                    fill: normalStateFill || options.markerColor || options.defaultColor,
                                    state: "normal"
                                }),
                                hover: getState(stateOfDataItem.hover, normalStateFill, "hovered"),
                                selection: getState(stateOfDataItem.selection, normalStateFill, "selected")
                            };
                            dataItem.states = states;
                            const itemGroup = renderer.g().append(markersGroup);
                            const markerGroup = renderer.g().attr({
                                class: "dxl-marker"
                            }).append(itemGroup);
                            that._deferredItems[i] = new _deferred.Deferred;
                            that._templatesGroups.push(markerGroup);
                            const item = {
                                label: that._createLabel(dataItem, itemGroup),
                                marker: markerGroup,
                                renderer: renderer,
                                group: itemGroup,
                                tracker: {
                                    id: dataItem.id,
                                    argument: dataItem.argument,
                                    argumentIndex: dataItem.argumentIndex
                                },
                                states: states,
                                itemTextPosition: options.itemTextPosition,
                                markerOffset: 0,
                                bBoxes: [],
                                renderMarker(state) {
                                    dataItem.marker = getAttributes(item, state, dataItem.size);
                                    markerGroup.clear();
                                    template.render({
                                        model: dataItem,
                                        container: markerGroup.element,
                                        onRendered: that._deferredItems[i].resolve
                                    })
                                }
                            };
                            item.renderMarker(states.normal);
                            that._createHint(dataItem, itemGroup);
                            if (void 0 !== dataItem.id) {
                                that._markersId[dataItem.id] = i
                            }
                            return item
                        })
                    },
                    getTemplatesGroups: function() {
                        return this._templatesGroups || []
                    },
                    getTemplatesDef: function() {
                        return this._deferredItems || []
                    },
                    _getItemData: function() {
                        let items = this._data || [];
                        const options = this._options || {};
                        if (options.inverted) {
                            items = items.slice().reverse()
                        }
                        return items.filter(i => i.visible)
                    },
                    _finalUpdate: function(options) {
                        this._adjustBackgroundSettings(options);
                        this._setBoundingRect(options.margin)
                    },
                    erase: function() {
                        const insideLegendGroup = this._insideLegendGroup;
                        insideLegendGroup && insideLegendGroup.dispose();
                        this._insideLegendGroup = this._markersGroup = this._x1 = this._x2 = this._y2 = this._y2 = null;
                        return this
                    },
                    _locateElements: function(locationOptions) {
                        this._moveInInitialValues();
                        this._locateRowsColumns(locationOptions)
                    },
                    _moveInInitialValues: function() {
                        this._title.hasText() && this._title.move([0, 0]);
                        this._legendGroup && this._legendGroup.move(0, 0);
                        this._background && this._background.attr({
                            x: 0,
                            y: 0,
                            width: 0,
                            height: 0
                        })
                    },
                    applySelected: function(id) {
                        applyMarkerState(id, this._markersId, this._items, "selection");
                        return this
                    },
                    applyHover: function(id) {
                        applyMarkerState(id, this._markersId, this._items, "hover");
                        return this
                    },
                    resetItem: function(id) {
                        applyMarkerState(id, this._markersId, this._items, "normal");
                        return this
                    },
                    _createLabel: function(data, group) {
                        const labelFormatObject = this._getCustomizeObject(data);
                        const options = this._options;
                        const align = function(position) {
                            switch (position) {
                                case TOP:
                                case BOTTOM:
                                    return CENTER;
                                case LEFT:
                                    return RIGHT;
                                case RIGHT:
                                    return LEFT
                            }
                        }(options.itemTextPosition);
                        const text = options.customizeText.call(labelFormatObject, labelFormatObject);
                        const fontStyle = _isDefined(data.textOpacity) ? {
                            color: options.font.color,
                            opacity: data.textOpacity
                        } : {};
                        return this._renderer.text(text, 0, 0).css((0, _utils.patchFontOptions)(fontStyle)).attr({
                            align: align,
                            class: options.cssClass
                        }).append(group)
                    },
                    _createHint: function(data, group) {
                        const labelFormatObject = this._getCustomizeObject(data);
                        const text = this._options.customizeHint.call(labelFormatObject, labelFormatObject);
                        if (_isDefined(text) && "" !== text) {
                            group.setTitle(text)
                        }
                    },
                    _createBackground: function() {
                        const that = this;
                        const isInside = "inside" === that._options.position;
                        const color = that._options.backgroundColor;
                        const fill = color || (isInside ? that._options.containerBackgroundColor : "none");
                        if (that._options.border.visible || (isInside || color) && "none" !== color) {
                            that._background = that._renderer.rect(0, 0, 0, 0).attr({
                                fill: fill,
                                class: that._backgroundClass
                            }).append(that._insideLegendGroup)
                        }
                    },
                    _locateRowsColumns: function(options) {
                        const that = this;
                        let iteration = 0;
                        const layoutOptions = that._getItemsLayoutOptions();
                        const countItems = that._items.length;
                        let lines;
                        do {
                            lines = [];
                            that._createLines(lines, layoutOptions);
                            that._alignLines(lines, layoutOptions);
                            iteration++
                        } while (checkLinesSize(lines, layoutOptions, countItems, options.margin) && iteration < countItems);
                        that._applyItemPosition(lines, layoutOptions)
                    },
                    _createLines: function(lines, layoutOptions) {
                        this._items.forEach((item, i) => {
                            const tableLine = function(lines, layoutOptions, itemIndex) {
                                const tableLine = {};
                                if (itemIndex % layoutOptions.countItem === 0) {
                                    if (layoutOptions.markerOffset) {
                                        lines.push([], [])
                                    } else {
                                        lines.push([])
                                    }
                                }
                                if (layoutOptions.markerOffset) {
                                    tableLine.firstLine = lines[lines.length - 1];
                                    tableLine.secondLine = lines[lines.length - 2]
                                } else {
                                    tableLine.firstLine = tableLine.secondLine = lines[lines.length - 1]
                                }
                                return tableLine
                            }(lines, layoutOptions, i);
                            const labelBox = {
                                width: item.labelBBox.width,
                                height: item.labelBBox.height,
                                element: item.label,
                                bBox: item.labelBBox,
                                pos: getPos(layoutOptions),
                                itemIndex: i
                            };
                            const markerBox = {
                                width: item.markerBBox.width,
                                height: item.markerBBox.height,
                                element: item.marker,
                                pos: {
                                    horizontal: CENTER,
                                    vertical: CENTER
                                },
                                bBox: {
                                    width: item.markerBBox.width,
                                    height: item.markerBBox.height,
                                    x: item.markerBBox.x,
                                    y: item.markerBBox.y
                                },
                                itemIndex: i
                            };
                            let firstItem;
                            let secondItem;
                            const offsetDirection = layoutOptions.markerOffset ? "altOffset" : "offset";
                            if (layoutOptions.inverseLabelPosition) {
                                firstItem = labelBox;
                                secondItem = markerBox
                            } else {
                                firstItem = markerBox;
                                secondItem = labelBox
                            }
                            firstItem[offsetDirection] = layoutOptions.labelOffset;
                            tableLine.secondLine.push(firstItem);
                            tableLine.firstLine.push(secondItem)
                        })
                    },
                    _alignLines: function(lines, layoutOptions) {
                        let i;
                        let measure = layoutOptions.altMeasure;
                        lines.forEach(line => setMaxInLine(line, measure));
                        measure = layoutOptions.measure;
                        if (layoutOptions.itemsAlignment) {
                            if (layoutOptions.markerOffset) {
                                for (i = 0; i < lines.length;) {
                                    transpose([lines[i++], lines[i++]]).forEach(processLine)
                                }
                            }
                        } else {
                            transpose(lines).forEach(processLine)
                        }

                        function processLine(line) {
                            setMaxInLine(line, measure)
                        }
                    },
                    _applyItemPosition: function(lines, layoutOptions) {
                        const that = this;
                        const position = {
                            x: 0,
                            y: 0
                        };
                        const maxLineLength = function(lines, layoutOptions) {
                            return lines.reduce((maxLineLength, line) => _max(maxLineLength, getLineLength(line, layoutOptions)), 0)
                        }(lines, layoutOptions);
                        lines.forEach(line => {
                            const firstItem = line[0];
                            const altOffset = firstItem.altOffset || layoutOptions.altSpacing;
                            position[layoutOptions.direction] = function(line, layoutOptions, maxLineLength) {
                                const lineLength = getLineLength(line, layoutOptions);
                                let initPosition;
                                switch (layoutOptions.itemsAlignment) {
                                    case RIGHT:
                                        initPosition = maxLineLength - lineLength;
                                        break;
                                    case CENTER:
                                        initPosition = (maxLineLength - lineLength) / 2;
                                        break;
                                    default:
                                        initPosition = 0
                                }
                                return initPosition
                            }(line, layoutOptions, maxLineLength);
                            line.forEach(item => {
                                const offset = item.offset || layoutOptions.spacing;
                                const wrap = new _layout_element.WrapperLayoutElement(item.element, item.bBox);
                                const itemBBoxOptions = {
                                    x: position.x,
                                    y: position.y,
                                    width: item.width,
                                    height: item.height
                                };
                                const itemBBox = new _layout_element.WrapperLayoutElement(null, itemBBoxOptions);
                                const itemLegend = that._items[item.itemIndex];
                                wrap.position({
                                    of: itemBBox,
                                    my: item.pos,
                                    at: item.pos
                                });
                                itemLegend.bBoxes.push(itemBBox);
                                position[layoutOptions.direction] += item[layoutOptions.measure] + offset
                            });
                            position[layoutOptions.altDirection] += firstItem[layoutOptions.altMeasure] + altOffset
                        });
                        this._items.forEach(item => {
                            const itemBBox = function(markerBBox, labelBBox) {
                                const bBox = {};
                                bBox.left = _min(markerBBox.x, labelBBox.x);
                                bBox.top = _min(markerBBox.y, labelBBox.y);
                                bBox.right = _max(markerBBox.x + markerBBox.width, labelBBox.x + labelBBox.width);
                                bBox.bottom = _max(markerBBox.y + markerBBox.height, labelBBox.y + labelBBox.height);
                                return bBox
                            }(item.bBoxes[0].getLayoutOptions(), item.bBoxes[1].getLayoutOptions());
                            const horizontal = that._options.columnItemSpacing / 2;
                            const vertical = that._options.rowItemSpacing / 2;
                            item.tracker.left = itemBBox.left - horizontal;
                            item.tracker.right = itemBBox.right + horizontal;
                            item.tracker.top = itemBBox.top - vertical;
                            item.tracker.bottom = itemBBox.bottom + vertical
                        })
                    },
                    _getItemsLayoutOptions: function() {
                        const that = this;
                        const options = that._options;
                        const orientation = options.orientation;
                        const layoutOptions = {
                            itemsAlignment: options.itemsAlignment,
                            orientation: options.orientation
                        };
                        const width = that._size.width - (that._background ? 2 * options.paddingLeftRight : 0);
                        const height = that._size.height - (that._background ? 2 * options.paddingTopBottom : 0);
                        if ("horizontal" === orientation) {
                            layoutOptions.length = width;
                            layoutOptions.spacing = options.columnItemSpacing;
                            layoutOptions.direction = "x";
                            layoutOptions.measure = "width";
                            layoutOptions.altMeasure = "height";
                            layoutOptions.altDirection = "y";
                            layoutOptions.altSpacing = options.rowItemSpacing;
                            layoutOptions.countItem = options.columnCount;
                            layoutOptions.altCountItem = options.rowCount;
                            layoutOptions.marginTextLabel = 4;
                            layoutOptions.labelOffset = 7;
                            if (options.itemTextPosition === BOTTOM || options.itemTextPosition === TOP) {
                                layoutOptions.labelOffset = 4;
                                layoutOptions.markerOffset = true
                            }
                        } else {
                            layoutOptions.length = height;
                            layoutOptions.spacing = options.rowItemSpacing;
                            layoutOptions.direction = "y";
                            layoutOptions.measure = "height";
                            layoutOptions.altMeasure = "width";
                            layoutOptions.altDirection = "x";
                            layoutOptions.altSpacing = options.columnItemSpacing;
                            layoutOptions.countItem = options.rowCount;
                            layoutOptions.altCountItem = options.columnCount;
                            layoutOptions.marginTextLabel = 7;
                            layoutOptions.labelOffset = 4;
                            if (options.itemTextPosition === RIGHT || options.itemTextPosition === LEFT) {
                                layoutOptions.labelOffset = 7;
                                layoutOptions.markerOffset = true
                            }
                        }
                        if (!layoutOptions.countItem) {
                            if (layoutOptions.altCountItem) {
                                layoutOptions.countItem = _ceil(that._items.length / layoutOptions.altCountItem)
                            } else {
                                layoutOptions.countItem = that._items.length
                            }
                        }
                        if (options.itemTextPosition === TOP || options.itemTextPosition === LEFT) {
                            layoutOptions.inverseLabelPosition = true
                        }
                        layoutOptions.itemTextPosition = options.itemTextPosition;
                        layoutOptions.altCountItem = layoutOptions.altCountItem || _ceil(that._items.length / layoutOptions.countItem);
                        return layoutOptions
                    },
                    _adjustBackgroundSettings: function(locationOptions) {
                        if (!this._background) {
                            return
                        }
                        const border = locationOptions.border;
                        const legendBox = this._calculateTotalBox();
                        const backgroundSettings = {
                            x: _round(legendBox.x - locationOptions.paddingLeftRight),
                            y: _round(legendBox.y - locationOptions.paddingTopBottom),
                            width: _round(legendBox.width) + 2 * locationOptions.paddingLeftRight,
                            height: _round(legendBox.height),
                            opacity: locationOptions.backgroundOpacity
                        };
                        if (border.visible && border.width && border.color && "none" !== border.color) {
                            backgroundSettings["stroke-width"] = border.width;
                            backgroundSettings.stroke = border.color;
                            backgroundSettings["stroke-opacity"] = border.opacity;
                            backgroundSettings.dashStyle = border.dashStyle;
                            backgroundSettings.rx = border.cornerRadius || 0;
                            backgroundSettings.ry = border.cornerRadius || 0
                        }
                        this._background.attr(backgroundSettings)
                    },
                    _setBoundingRect: function(margin) {
                        if (!this._insideLegendGroup) {
                            return
                        }
                        const box = this._calculateTotalBox();
                        box.height += margin.top + margin.bottom;
                        box.widthWithoutMargins = box.width;
                        box.width += margin.left + margin.right;
                        box.x -= margin.left;
                        box.y -= margin.top;
                        this._boundingRect = box
                    },
                    _calculateTotalBox: function() {
                        const markerBox = this._markersGroup.getBBox();
                        const titleBox = this._title.getCorrectedLayoutOptions();
                        const box = this._insideLegendGroup.getBBox();
                        const verticalPadding = this._background ? 2 * this._options.paddingTopBottom : 0;
                        box.height = markerBox.height + titleBox.height + verticalPadding;
                        titleBox.width > box.width && (box.width = titleBox.width);
                        return box
                    },
                    getActionCallback: function(point) {
                        const that = this;
                        if (that._options.visible) {
                            return function(act) {
                                that[act](point.index)
                            }
                        } else {
                            return _common.noop
                        }
                    },
                    getLayoutOptions: function() {
                        const options = this._options;
                        const boundingRect = this._insideLegendGroup ? this._boundingRect : {
                            width: 0,
                            height: 0,
                            x: 0,
                            y: 0
                        };
                        if (options) {
                            boundingRect.verticalAlignment = options.verticalAlignment;
                            boundingRect.horizontalAlignment = options.horizontalAlignment;
                            if ("horizontal" === options.orientation) {
                                boundingRect.cutLayoutSide = options.verticalAlignment;
                                boundingRect.cutSide = "vertical"
                            } else if (options.horizontalAlignment === CENTER) {
                                boundingRect.cutLayoutSide = options.verticalAlignment;
                                boundingRect.cutSide = "vertical"
                            } else {
                                boundingRect.cutLayoutSide = options.horizontalAlignment;
                                boundingRect.cutSide = "horizontal"
                            }
                            boundingRect.position = {
                                horizontal: options.horizontalAlignment,
                                vertical: options.verticalAlignment
                            };
                            return boundingRect
                        }
                        return null
                    },
                    shift: function(x, y) {
                        const that = this;
                        let box = {};
                        if (that._insideLegendGroup) {
                            that._insideLegendGroup.attr({
                                translateX: x - that._boundingRect.x,
                                translateY: y - that._boundingRect.y
                            })
                        }
                        that._title && that._shiftTitle(that._boundingRect.widthWithoutMargins);
                        that._markersGroup && that._shiftMarkers();
                        if (that._insideLegendGroup) {
                            box = that._legendGroup.getBBox()
                        }
                        that._x1 = box.x;
                        that._y1 = box.y;
                        that._x2 = box.x + box.width;
                        that._y2 = box.y + box.height;
                        return that
                    },
                    _shiftTitle: function(boxWidth) {
                        const that = this;
                        const title = that._title;
                        const titleBox = title.getCorrectedLayoutOptions();
                        if (!titleBox || !title.hasText()) {
                            return
                        }
                        const width = boxWidth - (that._background ? 2 * that._options.paddingLeftRight : 0);
                        const titleOptions = title.getOptions();
                        let titleY = titleBox.y + titleOptions.margin.top;
                        let titleX = 0;
                        if (titleOptions.verticalAlignment === BOTTOM && that._markersGroup) {
                            titleY += that._markersGroup.getBBox().height
                        }
                        if (titleOptions.horizontalAlignment === RIGHT) {
                            titleX = width - titleBox.width
                        } else if (titleOptions.horizontalAlignment === CENTER) {
                            titleX = (width - titleBox.width) / 2
                        }
                        title.shift(titleX, titleY)
                    },
                    _shiftMarkers: function() {
                        const titleBox = this._title.getLayoutOptions();
                        const markerBox = this._markersGroup.getBBox();
                        const titleOptions = this._title.getOptions() || {};
                        let center = 0;
                        let y = 0;
                        if (titleBox.width > markerBox.width && this._options.horizontalAlignment === CENTER) {
                            center = titleBox.width / 2 - markerBox.width / 2
                        }
                        if (titleOptions.verticalAlignment === TOP) {
                            y = titleBox.height
                        }
                        if (0 !== center || 0 !== y) {
                            this._markersGroup.attr({
                                translateX: center,
                                translateY: y
                            });
                            this._items.forEach(item => {
                                item.tracker.left += center;
                                item.tracker.right += center;
                                item.tracker.top += y;
                                item.tracker.bottom += y
                            })
                        }
                    },
                    getPosition: function() {
                        return this._options.position
                    },
                    coordsIn: function(x, y) {
                        return x >= this._x1 && x <= this._x2 && y >= this._y1 && y <= this._y2
                    },
                    getItemByCoord: function(x, y) {
                        const items = this._items;
                        const legendGroup = this._insideLegendGroup;
                        x -= legendGroup.attr("translateX");
                        y -= legendGroup.attr("translateY");
                        for (let i = 0; i < items.length; i++) {
                            if (inRect(items[i].tracker, x, y)) {
                                return items[i].tracker
                            }
                        }
                        return null
                    },
                    dispose: function() {
                        this._title && this._title.dispose();
                        this._legendGroup = this._insideLegendGroup = this._title = this._renderer = this._options = this._data = this._items = null;
                        return this
                    },
                    layoutOptions: function() {
                        if (!this.isVisible()) {
                            return null
                        }
                        const pos = this.getLayoutOptions();
                        return {
                            horizontalAlignment: this._options.horizontalAlignment,
                            verticalAlignment: this._options.verticalAlignment,
                            side: pos.cutSide,
                            priority: 1,
                            position: this.getPosition()
                        }
                    },
                    measure: function(size) {
                        if (this._updated || !this._insideLegendGroup) {
                            this.draw(size[0], size[1]);
                            this._updated = false
                        } else {
                            this._items.forEach(item => {
                                item.bBoxes = []
                            });
                            this._updateElementsPosition(size[0], size[1])
                        }
                        const rect = this.getLayoutOptions();
                        return [rect.width, rect.height]
                    },
                    move: function(rect) {
                        this.shift(rect[0], rect[1])
                    },
                    freeSpace: function() {
                        this._options._incidentOccurred("W2104");
                        this.erase()
                    }
                });
                const plugin = {
                    name: "legend",
                    init: function() {
                        const group = this._renderer.g().attr({
                            class: this._rootClassPrefix + "-legend"
                        }).enableLinks().append(this._renderer.root);
                        this._legend = new Legend({
                            renderer: this._renderer,
                            group: group,
                            widget: this,
                            itemGroupClass: this._rootClassPrefix + "-item",
                            titleGroupClass: this._rootClassPrefix + "-title",
                            textField: "text",
                            getFormatObject: function(data) {
                                return {
                                    item: data.item,
                                    text: data.text
                                }
                            }
                        });
                        this._layout.add(this._legend)
                    },
                    extenders: {
                        _applyTilesAppearance: function() {
                            const that = this;
                            this._items.forEach((function(item) {
                                that._applyLegendItemStyle(item.id, item.getState())
                            }))
                        },
                        _buildNodes: function() {
                            this._createLegendItems()
                        }
                    },
                    members: {
                        _applyLegendItemStyle: function(id, state) {
                            const legend = this._legend;
                            switch (state) {
                                case "hover":
                                    legend.applyHover(id);
                                    break;
                                case "selection":
                                    legend.applySelected(id);
                                    break;
                                default:
                                    legend.resetItem(id)
                            }
                        },
                        _createLegendItems: function() {
                            if (this._legend.update(this._getLegendData(), this._getOption("legend"), this._themeManager.theme("legend").title)) {
                                this._requestChange(["LAYOUT"])
                            }
                        }
                    },
                    dispose: function() {
                        this._legend.dispose()
                    },
                    customize: function(constructor) {
                        constructor.prototype._proxyData.push((function(x, y) {
                            if (this._legend.coordsIn(x, y)) {
                                const item = this._legend.getItemByCoord(x, y);
                                if (item) {
                                    return {
                                        id: item.id,
                                        type: "legend"
                                    }
                                }
                            }
                        }));
                        constructor.addChange({
                            code: "LEGEND",
                            handler: function() {
                                this._createLegendItems()
                            },
                            isThemeDependent: true,
                            option: "legend",
                            isOptionChange: true
                        })
                    }
                };
                exports.plugin = plugin
            },
        8587:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/components/parse_utils.js ***!
              \***************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.correctValueType = correctValueType;
                exports.getParser = void 0;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _date_serialization = (obj = __webpack_require__( /*! ../../core/utils/date_serialization */ 69434), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                const parsers = {
                    string: function(val) {
                        return (0, _type.isDefined)(val) ? "" + val : val
                    },
                    numeric: function(val) {
                        if (!(0, _type.isDefined)(val)) {
                            return val
                        }
                        let parsedVal = Number(val);
                        if (isNaN(parsedVal)) {
                            parsedVal = void 0
                        }
                        return parsedVal
                    },
                    datetime: function(val) {
                        if (!(0, _type.isDefined)(val)) {
                            return val
                        }
                        let parsedVal;
                        const numVal = Number(val);
                        if (!isNaN(numVal)) {
                            parsedVal = new Date(numVal)
                        } else {
                            parsedVal = _date_serialization.default.deserializeDate(val)
                        }
                        if (isNaN(Number(parsedVal))) {
                            parsedVal = void 0
                        }
                        return parsedVal
                    }
                };

                function correctValueType(type) {
                    return "numeric" === type || "datetime" === type || "string" === type ? type : ""
                }
                exports.getParser = function(valueType) {
                    return parsers[correctValueType(valueType)] || _common.noop
                }
            },
        88997:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/components/tracker.js ***!
              \***********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Tracker = Tracker;
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _click = __webpack_require__( /*! ../../events/click */ 95429);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../events/pointer */ 93786));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const downPointerEventName = _pointer.default.down;
                const movePointerEventName = _pointer.default.move;

                function Tracker(parameters) {
                    this._initHandlers(parameters)
                }
                Tracker.prototype = {
                    constructor: Tracker,
                    _initHandlers: function(parameters) {
                        const document = _dom_adapter.default.getDocument();
                        parameters.getCoords = function(e) {
                            const data = (0, _index.eventData)(e);
                            const offset = parameters.widget._renderer.getRootOffset();
                            return [data.x - offset.left, data.y - offset.top]
                        };
                        parameters.root.on(_click.name, clickHandler);
                        parameters.root.on(downPointerEventName, downHandler);
                        _events_engine.default.on(document, downPointerEventName, downHandler);
                        _events_engine.default.on(document, movePointerEventName, moveHandler);
                        this._disposeHandlers = function() {
                            parameters.root.off(_click.name, clickHandler);
                            parameters.root.off(downPointerEventName, downHandler);
                            _events_engine.default.off(document, downPointerEventName, downHandler);
                            _events_engine.default.off(document, movePointerEventName, moveHandler)
                        };

                        function clickHandler(e) {
                            ! function(e, params) {
                                const id = params.getData(e);
                                if (id >= 0) {
                                    params.click({
                                        node: params.getNode(id),
                                        coords: params.getCoords(e),
                                        event: e
                                    })
                                }
                            }(e, parameters)
                        }
                        let isRootDown = false;

                        function downHandler(e) {
                            if (isRootDown) {
                                isRootDown = false
                            } else {
                                if (void 0 !== parameters.getData(e)) {
                                    isRootDown = true
                                }
                                moveHandler(e)
                            }
                        }

                        function moveHandler(e) {
                            ! function(e, params) {
                                const id = params.getData(e);
                                if (id >= 0) {
                                    params.getNode(id).setHover()
                                } else {
                                    params.widget.clearHover()
                                }
                            }(e, parameters);
                            parameters.widget._getOption("tooltip").enabled && function(e, params) {
                                const id = params.getData(e, true);
                                let coords;
                                if (id >= 0) {
                                    coords = (0, _index.eventData)(e);
                                    params.getNode(id).showTooltip([coords.x, coords.y])
                                } else {
                                    params.widget.hideTooltip()
                                }
                            }(e, parameters)
                        }
                    },
                    dispose: function() {
                        this._disposeHandlers()
                    }
                }
            },
        77129:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/annotations.js ***!
              \*********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.plugins = exports.createAnnotations = void 0;
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _tooltip = __webpack_require__( /*! ../core/tooltip */ 14371);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _utils = __webpack_require__( /*! ./utils */ 19157);
                var _plaque = __webpack_require__( /*! ./plaque */ 64509);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../events/pointer */ 93786));
                var _drag = __webpack_require__( /*! ../../events/drag */ 23174);
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const getDocument = _dom_adapter.default.getDocument;
                const POINTER_ACTION = (0, _index.addNamespace)([_pointer.default.down, _pointer.default.move], "annotations");
                const POINTER_UP_EVENT_NAME = (0, _index.addNamespace)(_pointer.default.up, "annotations");
                const DRAG_START_EVENT_NAME = _drag.start + ".annotations";
                const DRAG_EVENT_NAME = _drag.move + ".annotations";
                const DRAG_END_EVENT_NAME = _drag.end + ".annotations";

                function coreAnnotation(options, contentTemplate) {
                    return {
                        draw: function(widget, group) {
                            const annotationGroup = widget._renderer.g().append(group).css((0, _utils.patchFontOptions)(options.font));
                            if (this.plaque) {
                                this.plaque.clear()
                            }
                            this.plaque = new _plaque.Plaque((0, _extend.extend)(true, {}, options, {
                                cornerRadius: (options.border || {}).cornerRadius
                            }), widget, annotationGroup, contentTemplate, widget._isAnnotationBounded(options));
                            this.plaque.draw(widget._getAnnotationCoords(this));
                            if (options.allowDragging) {
                                annotationGroup.on(DRAG_START_EVENT_NAME, {
                                    immediate: true
                                }, e => {
                                    this._dragOffsetX = this.plaque.x - e.pageX;
                                    this._dragOffsetY = this.plaque.y - e.pageY
                                }).on(DRAG_EVENT_NAME, e => {
                                    this.plaque.move(e.pageX + this._dragOffsetX, e.pageY + this._dragOffsetY)
                                }).on(DRAG_END_EVENT_NAME, e => {
                                    this.offsetX = (this.offsetX || 0) + e.offset.x;
                                    this.offsetY = (this.offsetY || 0) + e.offset.y
                                })
                            }
                        },
                        hitTest(x, y) {
                            return this.plaque.hitTest(x, y)
                        },
                        showTooltip(tooltip, _ref) {
                            let {
                                x: x,
                                y: y
                            } = _ref;
                            const that = this;
                            const options = that.options;
                            if (tooltip.annotation !== that) {
                                tooltip.setTemplate(options.tooltipTemplate);
                                const callback = result => {
                                    result && (tooltip.annotation = that)
                                };
                                callback(tooltip.show(options, {
                                    x: x,
                                    y: y
                                }, {
                                    target: options
                                }, options.customizeTooltip, callback))
                            } else if (!tooltip.isCursorOnTooltip(x, y)) {
                                tooltip.move(x, y)
                            }
                        }
                    }
                }

                function getTemplateFunction(options, widget) {
                    let template;
                    if ("text" === options.type) {
                        template = function(item, groupElement) {
                            const text = widget._renderer.text(item.text).attr({
                                class: item.cssClass
                            }).append({
                                element: groupElement
                            });
                            if (item.width > 0 || item.height > 0) {
                                text.setMaxSize(item.width, item.height, {
                                    wordWrap: item.wordWrap,
                                    textOverflow: item.textOverflow
                                })
                            }
                        }
                    } else if ("image" === options.type) {
                        template = function(item, groupElement) {
                            const {
                                width: width,
                                height: height,
                                url: url,
                                location: location
                            } = item.image || {};
                            const {
                                width: outerWidth,
                                height: outerHeight
                            } = item;
                            const imageWidth = outerWidth > 0 ? Math.min(width, outerWidth) : width;
                            const imageHeight = outerHeight > 0 ? Math.min(height, outerHeight) : height;
                            widget._renderer.image(0, 0, imageWidth, imageHeight, url, location || "center").append({
                                element: groupElement
                            })
                        }
                    } else if ("custom" === options.type) {
                        template = options.template
                    }
                    return template
                }

                function getImageObject(image) {
                    return "string" === typeof image ? {
                        url: image
                    } : image
                }
                let createAnnotations = function(widget, items) {
                    let commonAnnotationSettings = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                    let customizeAnnotation = arguments.length > 3 ? arguments[3] : void 0;
                    let pullOptions = arguments.length > 4 ? arguments[4] : void 0;
                    const commonImageOptions = getImageObject(commonAnnotationSettings.image);
                    return items.reduce((arr, item) => {
                        const currentImageOptions = getImageObject(item.image);
                        const customizedItem = (0, _type.isFunction)(customizeAnnotation) ? customizeAnnotation(item) : {};
                        if (customizedItem) {
                            customizedItem.image = getImageObject(customizedItem.image)
                        }
                        const options = (0, _extend.extend)(true, {}, commonAnnotationSettings, item, {
                            image: commonImageOptions
                        }, {
                            image: currentImageOptions
                        }, customizedItem);
                        const templateFunction = getTemplateFunction(options, widget);
                        const annotation = templateFunction && (0, _extend.extend)(true, pullOptions(options), coreAnnotation(options, widget._getTemplate(templateFunction)));
                        annotation && arr.push(annotation);
                        return arr
                    }, [])
                };
                exports.createAnnotations = createAnnotations;
                const chartPlugin = {
                    name: "annotations_chart",
                    init() {},
                    dispose() {},
                    members: {
                        _getAnnotationCoords(annotation) {
                            var _axis, _axis2;
                            const coords = {
                                offsetX: annotation.offsetX,
                                offsetY: annotation.offsetY
                            };
                            const argCoordName = this._options.silent("rotated") ? "y" : "x";
                            const valCoordName = this._options.silent("rotated") ? "x" : "y";
                            const argAxis = this.getArgumentAxis();
                            const argument = argAxis.validateUnit(annotation.argument);
                            let axis = this.getValueAxis(annotation.axis);
                            let series;
                            let pane = null === (_axis = axis) || void 0 === _axis ? void 0 : _axis.pane;
                            if (annotation.series) {
                                var _series;
                                series = this.series.filter(s => s.name === annotation.series)[0];
                                axis = null === (_series = series) || void 0 === _series ? void 0 : _series.getValueAxis();
                                (0, _type.isDefined)(axis) && (pane = axis.pane)
                            }
                            if ((0, _type.isDefined)(argument)) {
                                if (series) {
                                    const center = series.getPointCenterByArg(argument);
                                    center && (coords[argCoordName] = center[argCoordName])
                                } else {
                                    coords[argCoordName] = argAxis.getTranslator().translate(argument)
                                }!(0, _type.isDefined)(pane) && (pane = argAxis.pane)
                            }
                            const value = null === (_axis2 = axis) || void 0 === _axis2 ? void 0 : _axis2.validateUnit(annotation.value);
                            if ((0, _type.isDefined)(value)) {
                                var _axis3;
                                coords[valCoordName] = null === (_axis3 = axis) || void 0 === _axis3 ? void 0 : _axis3.getTranslator().translate(value);
                                !(0, _type.isDefined)(pane) && (0, _type.isDefined)(axis) && (pane = axis.pane)
                            }
                            coords.canvas = this._getCanvasForPane(pane);
                            if ((0, _type.isDefined)(coords[argCoordName]) && !(0, _type.isDefined)(value)) {
                                var _series2;
                                if (!(0, _type.isDefined)(axis) && !(0, _type.isDefined)(series)) {
                                    coords[valCoordName] = argAxis.getAxisPosition()
                                } else if ((0, _type.isDefined)(axis) && !(0, _type.isDefined)(series)) {
                                    coords[valCoordName] = this._argumentAxes.filter(a => a.pane === axis.pane)[0].getAxisPosition()
                                } else if (null !== (_series2 = series) && void 0 !== _series2 && _series2.checkSeriesViewportCoord(argAxis, coords[argCoordName])) {
                                    coords[valCoordName] = series.getSeriesPairCoord(coords[argCoordName], true)
                                }
                            }
                            if (!(0, _type.isDefined)(argument) && (0, _type.isDefined)(coords[valCoordName])) {
                                if ((0, _type.isDefined)(axis) && !(0, _type.isDefined)(series)) {
                                    coords[argCoordName] = axis.getAxisPosition()
                                } else if ((0, _type.isDefined)(series)) {
                                    if (series.checkSeriesViewportCoord(axis, coords[valCoordName])) {
                                        coords[argCoordName] = series.getSeriesPairCoord(coords[valCoordName], false)
                                    }
                                }
                            }
                            return coords
                        },
                        _annotationsPointerEventHandler(event) {
                            if (this._disposed) {
                                return
                            }
                            const originalEvent = event.originalEvent || {};
                            const touch = originalEvent.touches && originalEvent.touches[0] || {};
                            const rootOffset = this._renderer.getRootOffset();
                            const coords = {
                                x: touch.pageX || originalEvent.pageX || event.pageX,
                                y: touch.pageY || originalEvent.pageY || event.pageY
                            };
                            const annotation = this._annotations.items.filter(a => a.hitTest(coords.x - rootOffset.left, coords.y - rootOffset.top))[0];
                            if (!annotation || !annotation.options.tooltipEnabled) {
                                this._annotations.hideTooltip();
                                return
                            }
                            this._clear();
                            if (annotation.options.allowDragging && event.type === _pointer.default.down) {
                                this._annotations._hideToolTipForDrag = true
                            }
                            if (!this._annotations._hideToolTipForDrag) {
                                annotation.showTooltip(this._annotations.tooltip, coords);
                                event.stopPropagation()
                            }
                        },
                        _isAnnotationBounded: options => (0, _type.isDefined)(options.value) || (0, _type.isDefined)(options.argument),
                        _pullOptions: options => ({
                            type: options.type,
                            name: options.name,
                            x: options.x,
                            y: options.y,
                            value: options.value,
                            argument: options.argument,
                            axis: options.axis,
                            series: options.series,
                            options: options,
                            offsetX: options.offsetX,
                            offsetY: options.offsetY
                        }),
                        _forceAnnotationRender() {
                            this._change(["FORCE_RENDER"])
                        },
                        _clear() {
                            this.hideTooltip();
                            this.clearHover()
                        }
                    }
                };
                const polarChartPlugin = {
                    name: "annotations_polar_chart",
                    init() {},
                    dispose() {},
                    members: {
                        _getAnnotationCoords(annotation) {
                            const coords = {
                                offsetX: annotation.offsetX,
                                offsetY: annotation.offsetY,
                                canvas: this._calcCanvas()
                            };
                            const argAxis = this.getArgumentAxis();
                            let argument = argAxis.validateUnit(annotation.argument);
                            const value = this.getValueAxis().validateUnit(annotation.value);
                            const radius = annotation.radius;
                            const angle = annotation.angle;
                            let pointCoords;
                            let series;
                            if (annotation.series) {
                                series = this.series.filter(s => s.name === annotation.series)[0]
                            }(0, _extend.extend)(true, coords, this.getXYFromPolar(angle, radius, argument, value));
                            if ((0, _type.isDefined)(series)) {
                                if ((0, _type.isDefined)(coords.angle) && !(0, _type.isDefined)(value) && !(0, _type.isDefined)(radius)) {
                                    if (!(0, _type.isDefined)(argument)) {
                                        argument = argAxis.getTranslator().from(isFinite(angle) ? this.getActualAngle(angle) : coords.angle)
                                    }
                                    pointCoords = series.getSeriesPairCoord({
                                        argument: argument,
                                        angle: -coords.angle
                                    }, true)
                                } else if ((0, _type.isDefined)(coords.radius) && !(0, _type.isDefined)(argument) && !(0, _type.isDefined)(angle)) {
                                    pointCoords = series.getSeriesPairCoord({
                                        radius: coords.radius
                                    }, false)
                                }
                                if ((0, _type.isDefined)(pointCoords)) {
                                    coords.x = pointCoords.x;
                                    coords.y = pointCoords.y
                                }
                            }
                            if (annotation.series && !(0, _type.isDefined)(pointCoords)) {
                                coords.x = coords.y = void 0
                            }
                            return coords
                        },
                        _annotationsPointerEventHandler: chartPlugin.members._annotationsPointerEventHandler,
                        _isAnnotationBounded: chartPlugin.members._isAnnotationBounded,
                        _pullOptions(options) {
                            const polarOptions = (0, _extend.extend)({}, {
                                radius: options.radius,
                                angle: options.angle
                            }, chartPlugin.members._pullOptions(options));
                            delete polarOptions.axis;
                            return polarOptions
                        },
                        _forceAnnotationRender: chartPlugin.members._forceAnnotationRender,
                        _clear: chartPlugin.members._clear
                    }
                };
                const vectorMapPlugin = {
                    name: "annotations_vector_map",
                    init() {},
                    dispose() {
                        this._annotations._offTracker();
                        this._annotations._offTracker = null
                    },
                    members: {
                        _getAnnotationCoords(annotation) {
                            const coords = {
                                offsetX: annotation.offsetX,
                                offsetY: annotation.offsetY
                            };
                            coords.canvas = this._projection.getCanvas();
                            if (annotation.coordinates) {
                                const data = this._projection.toScreenPoint(annotation.coordinates);
                                coords.x = data[0];
                                coords.y = data[1]
                            }
                            return coords
                        },
                        _annotationsPointerEventHandler: chartPlugin.members._annotationsPointerEventHandler,
                        _isAnnotationBounded: options => (0, _type.isDefined)(options.coordinates),
                        _pullOptions(options) {
                            const vectorMapOptions = (0, _extend.extend)({}, {
                                coordinates: options.coordinates
                            }, chartPlugin.members._pullOptions(options));
                            delete vectorMapOptions.axis;
                            delete vectorMapOptions.series;
                            delete vectorMapOptions.argument;
                            delete vectorMapOptions.value;
                            return vectorMapOptions
                        },
                        _forceAnnotationRender() {
                            this._change(["EXTRA_ELEMENTS"])
                        },
                        _getAnnotationStyles: () => ({
                            "text-anchor": "start"
                        }),
                        _clear() {}
                    },
                    extenders: {
                        _prepareExtraElements() {
                            const that = this;
                            const renderElements = () => {
                                that._renderExtraElements()
                            };
                            that._annotations._offTracker = that._tracker.on({
                                move: renderElements,
                                zoom: renderElements,
                                end: renderElements
                            })
                        }
                    }
                };
                const pieChartPlugin = {
                    name: "annotations_pie_chart",
                    init() {},
                    dispose() {},
                    members: {
                        _getAnnotationCoords(annotation) {
                            let series;
                            const coords = {
                                offsetX: annotation.offsetX,
                                offsetY: annotation.offsetY,
                                canvas: this._canvas
                            };
                            if (annotation.argument) {
                                if (annotation.series) {
                                    series = this.getSeriesByName(annotation.series)
                                } else {
                                    series = this.series[0]
                                }
                                const argument = series.getPointsByArg(annotation.argument)[0];
                                const {
                                    x: x,
                                    y: y
                                } = argument.getAnnotationCoords(annotation.location);
                                coords.x = x;
                                coords.y = y
                            }
                            return coords
                        },
                        _isAnnotationBounded: options => options.argument,
                        _annotationsPointerEventHandler: chartPlugin.members._annotationsPointerEventHandler,
                        _pullOptions(options) {
                            const pieChartOptions = (0, _extend.extend)({}, {
                                location: options.location
                            }, chartPlugin.members._pullOptions(options));
                            delete pieChartOptions.axis;
                            return pieChartOptions
                        },
                        _clear: chartPlugin.members._clear,
                        _forceAnnotationRender: chartPlugin.members._forceAnnotationRender
                    }
                };
                const corePlugin = {
                    name: "annotations_core",
                    init() {
                        this._annotations = {
                            items: [],
                            _hideToolTipForDrag: false,
                            tooltip: new _tooltip.Tooltip({
                                cssClass: "".concat(this._rootClassPrefix, "-annotation-tooltip"),
                                eventTrigger: this._eventTrigger,
                                widgetRoot: this.element(),
                                widget: this
                            }),
                            hideTooltip() {
                                this.tooltip.annotation = null;
                                this.tooltip.hide()
                            },
                            clearItems() {
                                this.items.forEach(i => i.plaque.clear());
                                this.items = []
                            }
                        };
                        this._annotations.tooltip.setRendererOptions(this._getRendererOptions())
                    },
                    dispose() {
                        this._annotationsGroup.linkRemove().linkOff();
                        _events_engine.default.off(getDocument(), ".annotations");
                        this._annotationsGroup.off(".annotations");
                        this._annotations.tooltip && this._annotations.tooltip.dispose()
                    },
                    extenders: {
                        _createHtmlStructure() {
                            this._annotationsGroup = this._renderer.g().attr({
                                class: "".concat(this._rootClassPrefix, "-annotations")
                            }).css(this._getAnnotationStyles()).linkOn(this._renderer.root, "annotations").linkAppend();
                            _events_engine.default.on(getDocument(), POINTER_ACTION, e => {
                                if (this._disposed) {
                                    return
                                }
                                if (!this._annotations.tooltip.isCursorOnTooltip(e.pageX, e.pageY)) {
                                    this._annotations.hideTooltip()
                                }
                            });
                            _events_engine.default.on(getDocument(), POINTER_UP_EVENT_NAME, event => {
                                this._annotations._hideToolTipForDrag = false;
                                this._annotationsPointerEventHandler(event)
                            });
                            this._annotationsGroup.on(POINTER_ACTION, this._annotationsPointerEventHandler.bind(this))
                        },
                        _renderExtraElements() {
                            this._annotationsGroup.clear();
                            this._annotations.items.forEach(item => item.draw(this, this._annotationsGroup))
                        },
                        _stopCurrentHandling() {
                            this._annotations.hideTooltip()
                        }
                    },
                    members: {
                        _buildAnnotations() {
                            this._annotations.clearItems();
                            const items = this._getOption("annotations", true);
                            if (!(null !== items && void 0 !== items && items.length)) {
                                return
                            }
                            this._annotations.items = createAnnotations(this, items, this._getOption("commonAnnotationSettings"), this._getOption("customizeAnnotation", true), this._pullOptions)
                        },
                        _setAnnotationTooltipOptions() {
                            const tooltipOptions = (0, _extend.extend)({}, this._getOption("tooltip"));
                            tooltipOptions.contentTemplate = tooltipOptions.customizeTooltip = void 0;
                            this._annotations.tooltip.update(tooltipOptions)
                        },
                        _getAnnotationCoords: () => ({}),
                        _pullOptions: () => ({}),
                        _getAnnotationStyles: () => ({})
                    },
                    customize(constructor) {
                        constructor.addChange({
                            code: "ANNOTATIONITEMS",
                            handler() {
                                this._requestChange(["ANNOTATIONS"])
                            },
                            isOptionChange: true,
                            option: "annotations"
                        });
                        constructor.addChange({
                            code: "ANNOTATIONSSETTINGS",
                            handler() {
                                this._requestChange(["ANNOTATIONS"])
                            },
                            isOptionChange: true,
                            option: "commonAnnotationSettings"
                        });
                        constructor.addChange({
                            code: "ANNOTATIONS",
                            handler() {
                                this._buildAnnotations();
                                this._setAnnotationTooltipOptions();
                                this._forceAnnotationRender()
                            },
                            isThemeDependent: true,
                            isOptionChange: true
                        })
                    },
                    fontFields: ["commonAnnotationSettings.font"]
                };
                const plugins = {
                    core: corePlugin,
                    chart: chartPlugin,
                    polarChart: polarChartPlugin,
                    vectorMap: vectorMapPlugin,
                    pieChart: pieChartPlugin
                };
                exports.plugins = plugins
            },
        43637:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/base_theme_manager.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.BaseThemeManager = void 0;
                var _class = (obj = __webpack_require__( /*! ../../core/class */ 38377), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _palette = __webpack_require__( /*! ../palette */ 23696);
                var _utils = __webpack_require__( /*! ./utils */ 19157);
                var _themes = __webpack_require__( /*! ../themes */ 86231);
                const _getTheme = _themes.getTheme;
                const _addCacheItem = _themes.addCacheItem;
                const _removeCacheItem = _themes.removeCacheItem;
                const _extend = _extend2.extend;
                const _each = _iterator.each;

                function getThemePart(theme, path) {
                    let _theme = theme;
                    path && _each(path.split("."), (function(_, pathItem) {
                        return _theme = _theme[pathItem]
                    }));
                    return _theme
                }
                const BaseThemeManager = _class.default.inherit({
                    ctor: function(options) {
                        this._themeSection = options.themeSection;
                        this._fontFields = options.fontFields || [];
                        _addCacheItem(this)
                    },
                    dispose: function() {
                        _removeCacheItem(this);
                        this._callback = this._theme = this._font = null;
                        return this
                    },
                    setCallback: function(callback) {
                        this._callback = callback;
                        return this
                    },
                    setTheme: function(theme, rtl) {
                        this._current = theme;
                        this._rtl = rtl;
                        return this.refresh()
                    },
                    refresh: function() {
                        const that = this;
                        const current = that._current || {};
                        let theme = _getTheme(current.name || current);
                        that._themeName = theme.name;
                        that._defaultPalette = theme.defaultPalette;
                        that._font = _extend({}, theme.font, current.font);
                        that._themeSection && _each(that._themeSection.split("."), (function(_, path) {
                            theme = _extend(true, {}, theme[path])
                        }));
                        that._theme = _extend(true, {}, theme, (0, _type.isString)(current) ? {} : current);
                        that._initializeTheme();
                        if ((0, _utils.parseScalar)(that._rtl, that._theme.rtlEnabled)) {
                            _extend(true, that._theme, that._theme._rtl)
                        }
                        that._callback();
                        return that
                    },
                    theme: function(path) {
                        return getThemePart(this._theme, path)
                    },
                    themeName: function() {
                        return this._themeName
                    },
                    createPalette: function(palette, options) {
                        return (0, _palette.createPalette)(palette, options, this._defaultPalette)
                    },
                    createDiscretePalette: function(palette, count) {
                        return (0, _palette.getDiscretePalette)(palette, count, this._defaultPalette)
                    },
                    createGradientPalette: function(palette) {
                        return (0, _palette.getGradientPalette)(palette, this._defaultPalette)
                    },
                    getAccentColor: function(palette) {
                        return (0, _palette.getAccentColor)(palette, this._defaultPalette)
                    },
                    _initializeTheme: function() {
                        const that = this;
                        _each(that._fontFields || [], (function(_, path) {
                            that._initializeFont(getThemePart(that._theme, path))
                        }))
                    },
                    _initializeFont: function(font) {
                        _extend(font, this._font, _extend({}, font))
                    }
                });
                exports.BaseThemeManager = BaseThemeManager
            },
        98469:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/base_widget.utils.js ***!
              \***************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.createEventTrigger = function(eventsMap, callbackGetter) {
                    let triggers = {};
                    (0, _iterator.each)(eventsMap, (function(name, info) {
                        if (info.name) {
                            createEvent(name)
                        }
                    }));
                    let changes;
                    triggerEvent.change = function(name) {
                        const eventInfo = eventsMap[name];
                        if (eventInfo) {
                            (changes = changes || {})[name] = eventInfo
                        }
                        return !!eventInfo
                    };
                    triggerEvent.applyChanges = function() {
                        if (changes) {
                            (0, _iterator.each)(changes, (function(name, eventInfo) {
                                createEvent(eventInfo.newName || name)
                            }));
                            changes = null
                        }
                    };
                    triggerEvent.dispose = function() {
                        eventsMap = callbackGetter = triggers = null
                    };
                    return triggerEvent;

                    function createEvent(name) {
                        const eventInfo = eventsMap[name];
                        triggers[eventInfo.name] = callbackGetter(name, eventInfo.actionSettings)
                    }

                    function triggerEvent(name, arg, complete) {
                        triggers[name](arg);
                        complete && complete()
                    }
                };
                exports.createIncidentOccurred = void 0;
                exports.createResizeHandler = function(contentElement, redrawOnResize, resize) {
                    let disposeHandler;
                    const resizeManager = (resizeCallback = resize, (observe, unsubscribe) => {
                        const {
                            handler: handler,
                            dispose: dispose
                        } = function(callback, unsubscribe) {
                            let timeout;
                            const handler = function() {
                                clearTimeout(timeout);
                                timeout = setTimeout(callback, 100)
                            };
                            return {
                                handler: handler,
                                dispose() {
                                    clearTimeout(timeout);
                                    unsubscribe(handler)
                                }
                            }
                        }(resizeCallback, unsubscribe);
                        observe(handler);
                        return dispose
                    });
                    var resizeCallback;
                    if ("windowonly" === (0, _utils.normalizeEnum)(redrawOnResize)) {
                        disposeHandler = resizeManager(handler => _resize_callbacks.default.add(handler), handler => _resize_callbacks.default.remove(handler))
                    } else if (true === redrawOnResize) {
                        disposeHandler = resizeManager(handler => _resize_observer.default.observe(contentElement, handler), () => _resize_observer.default.unobserve(contentElement))
                    }
                    return disposeHandler
                };
                var _version = __webpack_require__( /*! ../../core/version */ 36739);
                var _string = __webpack_require__( /*! ../../core/utils/string */ 68752);
                var _errors_warnings = _interopRequireDefault(__webpack_require__( /*! ./errors_warnings */ 80726));
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _resize_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/resize_callbacks */ 55814));
                var _resize_observer = _interopRequireDefault(__webpack_require__( /*! ../../core/resize_observer */ 91784));
                var _utils = __webpack_require__( /*! ./utils */ 19157);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const ERROR_MESSAGES = _errors_warnings.default.ERROR_MESSAGES;
                exports.createIncidentOccurred = function(widgetName, eventTrigger) {
                    return function(id, args) {
                        eventTrigger("incidentOccurred", {
                            target: {
                                id: id,
                                type: "E" === id[0] ? "error" : "warning",
                                args: args,
                                text: _string.format.apply(null, [ERROR_MESSAGES[id]].concat(args || [])),
                                widget: widgetName,
                                version: _version.version
                            }
                        })
                    }
                }
            },
        56672:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/center_template.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.plugins = void 0;
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                const pieChartPlugin = {
                    name: "center_template_pie_chart",
                    init: _common.noop,
                    dispose: function() {
                        this._centerTemplateGroup.linkOff().dispose()
                    },
                    extenders: {
                        _createHtmlStructure() {
                            const patchedFontOptions = (0, _utils.patchFontOptions)(this._themeManager._font);
                            this._centerTemplateGroup = this._renderer.g().attr({
                                class: "dxc-hole-template"
                            }).linkOn(this._renderer.root, "center-template").css(patchedFontOptions).linkAppend()
                        },
                        _renderExtraElements() {
                            this._requestChange(["CENTER_TEMPLATE"])
                        }
                    },
                    members: {
                        _renderCenterTemplate() {
                            const template = this.option("centerTemplate");
                            const centerTemplateGroup = this._centerTemplateGroup.clear();
                            if (!template) {
                                return
                            }
                            centerTemplateGroup.attr({
                                visibility: "hidden"
                            });
                            const center = this._getCenter();
                            this._getTemplate(template).render({
                                model: this,
                                container: centerTemplateGroup.element,
                                onRendered: () => {
                                    const group = centerTemplateGroup;
                                    const bBox = group.getBBox();
                                    const bBoxCenterX = bBox.x + bBox.width / 2;
                                    const bBoxCenterY = bBox.y + bBox.height / 2;
                                    group.move(center.x - bBoxCenterX, center.y - bBoxCenterY);
                                    group.attr({
                                        visibility: "visible"
                                    })
                                }
                            })
                        }
                    },
                    customize(constructor) {
                        constructor.addChange({
                            code: "CENTER_TEMPLATE",
                            handler: function() {
                                this._renderCenterTemplate()
                            },
                            option: "centerTemplate"
                        })
                    }
                };
                const gaugePlugin = {
                    name: "center_template_gauge",
                    init: _common.noop,
                    dispose: pieChartPlugin.dispose,
                    extenders: {
                        _initCore() {
                            this._createCenterTemplateGroup()
                        },
                        _renderContent() {
                            const patchedFontOptions = (0, _utils.patchFontOptions)(this._themeManager._font);
                            this._centerTemplateGroup.css(patchedFontOptions);
                            this._requestChange(["CENTER_TEMPLATE"])
                        },
                        _updateExtraElements() {
                            this._requestChange(["CENTER_TEMPLATE"])
                        }
                    },
                    members: {
                        _renderCenterTemplate: pieChartPlugin.members._renderCenterTemplate,
                        _createCenterTemplateGroup() {
                            this._centerTemplateGroup = this._renderer.g().attr({
                                class: "dxg-hole-template"
                            }).linkOn(this._renderer.root, "center-template").linkAppend()
                        }
                    },
                    customize: pieChartPlugin.customize
                };
                const plugins = {
                    pieChart: pieChartPlugin,
                    gauge: gaugePlugin
                };
                exports.plugins = plugins
            },
        1539:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/data_source.js ***!
              \*********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.plugin = void 0;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _data_helper = (obj = __webpack_require__( /*! ../../data_helper */ 53305), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const postCtor = _data_helper.default.postCtor;
                let name;
                const members = {
                    _dataSourceLoadErrorHandler: function() {
                        this._dataSourceChangedHandler()
                    },
                    _dataSourceOptions: function() {
                        return {
                            paginate: false
                        }
                    },
                    _updateDataSource: function() {
                        this._refreshDataSource();
                        if (!this.option("dataSource")) {
                            this._dataSourceChangedHandler()
                        }
                    },
                    _dataIsLoaded: function() {
                        return !this._dataSource || this._dataSource.isLoaded()
                    },
                    _dataSourceItems: function() {
                        return this._dataSource && this._dataSource.items()
                    }
                };
                for (name in _data_helper.default) {
                    if ("postCtor" === name) {
                        continue
                    }
                    members[name] = _data_helper.default[name]
                }
                const plugin = {
                    name: "data_source",
                    init: function() {
                        postCtor.call(this)
                    },
                    dispose: _common.noop,
                    members: members
                };
                exports.plugin = plugin
            },
        80726:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/errors_warnings.js ***!
              \*************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _error = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/error */ 95640));
                var _errors = _interopRequireDefault(__webpack_require__( /*! ../../core/errors */ 17381));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                var _default = (0, _error.default)(_errors.default.ERROR_MESSAGES, {
                    E2001: "Invalid data source",
                    E2002: "Axis type and data type are incompatible",
                    E2003: 'The "{0}" data source field contains data of unsupported type',
                    E2004: 'The "{0}" data source field is inconsistent',
                    E2005: 'The value field "{0}" is absent in the data source or all its values are negative',
                    E2006: "A cycle is detected in provided data",
                    E2007: 'The value field "{0}" is absent in the data source',
                    E2008: 'The value field "{0}" must be a string',
                    E2009: 'The value field "{0}" must be a positive numeric value',
                    E2101: "Unknown series type: {0}",
                    E2102: "Ambiguity occurred between two value axes with the same name",
                    E2103: 'The "{0}" option is given an invalid value. Assign a function instead',
                    E2104: "Invalid logarithm base",
                    E2105: 'Invalid value of a "{0}"',
                    E2202: "Invalid {0} scale value",
                    E2203: "The range you are trying to set is invalid",
                    W2002: "The {0} series cannot be drawn because the {1} data field is missing",
                    W2003: "Tick interval is too small",
                    W2101: 'The "{0}" pane does not exist; the last pane is used by default',
                    W2102: 'A value axis with the "{0}" name was created automatically',
                    W2103: "The chart title was hidden due to the container size",
                    W2104: "The legend was hidden due to the container size",
                    W2105: 'The title of the "{0}" axis was hidden due to the container size',
                    W2106: 'The labels of the "{0}" axis were hidden due to the container size',
                    W2107: "The export menu was hidden due to the container size",
                    W2108: "The browser does not support exporting images to {0} format.",
                    W2301: "Invalid value range"
                });
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        82454:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/export.js ***!
              \****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.plugin = exports.getMarkup = exports.exportWidgets = exports.exportFromMarkup = exports.combineMarkups = exports.ExportMenu = void 0;
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _utils = __webpack_require__( /*! ./utils */ 19157);
                var _svg = __webpack_require__( /*! ../../core/utils/svg */ 19155);
                var _exporter = __webpack_require__( /*! ../../exporter */ 78292);
                var _message = _interopRequireDefault(__webpack_require__( /*! ../../localization/message */ 28109));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _themes = __webpack_require__( /*! ../themes */ 86231);
                var _hover = __webpack_require__( /*! ../../events/hover */ 24028);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../events/pointer */ 93786));
                var _console = __webpack_require__( /*! ../../core/utils/console */ 30869);
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const pointerActions = [_pointer.default.down, _pointer.default.move].join(" ");
                const ICON_COORDS = [
                    [9, 12, 26, 12, 26, 14, 9, 14],
                    [9, 17, 26, 17, 26, 19, 9, 19],
                    [9, 22, 26, 22, 26, 24, 9, 24]
                ];
                const ALLOWED_IMAGE_FORMATS = ["PNG", "JPEG", "GIF"];
                const ALLOWED_EXTRA_FORMATS = ["PDF", "SVG"];
                const GET_COLOR_REGEX = /data-backgroundcolor="([^"]*)"/;

                function getValidFormats() {
                    const imageFormats = _exporter.image.testFormats(ALLOWED_IMAGE_FORMATS);
                    return {
                        unsupported: imageFormats.unsupported,
                        supported: imageFormats.supported.concat(ALLOWED_EXTRA_FORMATS)
                    }
                }

                function validateFormat(format, incidentOccurred, validFormats) {
                    validFormats = validFormats || getValidFormats();
                    format = String(format).toUpperCase();
                    if (-1 !== validFormats.supported.indexOf(format)) {
                        return format
                    }
                    if (-1 !== validFormats.unsupported.indexOf(format)) {
                        incidentOccurred && incidentOccurred("W2108", [format])
                    }
                }

                function getCreatorFunc(format) {
                    if ("SVG" === format) {
                        return _exporter.svg.getData
                    } else if ("PDF" === format) {
                        return _exporter.pdf.getData
                    } else {
                        return _exporter.image.getData
                    }
                }

                function print(imageSrc, options) {
                    const document = (0, _window.getWindow)().document;
                    const iFrame = document.createElement("iframe");
                    iFrame.onload = function(imageSrc, options) {
                        return function() {
                            let window = this.contentWindow;
                            const img = window.document.createElement("img");
                            window.document.body.appendChild(img);
                            const widthRatio = function(iFrameBody) {
                                iFrameBody.style.width = "21cm";
                                const width = (0, _size.getWidth)(iFrameBody);
                                iFrameBody.style.width = "";
                                return width
                            }(window.document.body) / options.width;
                            if (widthRatio < 1) {
                                window.document.body.style.transform = "scale(".concat(widthRatio, ")");
                                window.document.body.style["transform-origin"] = "0 0"
                            }
                            const removeFrame = () => {
                                this.parentElement.removeChild(this)
                            };
                            img.addEventListener("load", () => {
                                window.focus();
                                window.print()
                            });
                            img.addEventListener("error", removeFrame);
                            window.addEventListener("afterprint", () => {
                                setTimeout(removeFrame, 0)
                            });
                            img.src = imageSrc
                        }
                    }(imageSrc, options);
                    iFrame.style.position = "fixed";
                    iFrame.style.width = "0";
                    iFrame.style.height = "0";
                    iFrame.style.right = "0";
                    iFrame.style.bottom = "0";
                    document.body.appendChild(iFrame)
                }

                function createMenuItem(renderer, options, settings) {
                    const itemData = {};
                    const type = settings.type;
                    const format = settings.format;
                    const attr = function(options, type, itemIndex) {
                        const x = -85;
                        const y = 40 + 30 * itemIndex;
                        const attr = {
                            rect: {
                                width: 118,
                                height: 30,
                                x: -84,
                                y: y
                            },
                            text: {
                                x: x + (options.rtl ? 105 : 15),
                                y: y + 30 - 8
                            }
                        };
                        if ("printing" === type) {
                            attr.separator = {
                                stroke: options.button.default.borderColor,
                                "stroke-width": 1,
                                cursor: "pointer",
                                sharp: "v",
                                d: "M -85 " + (y + 30 - 1) + " L 35 " + (y + 30 - 1)
                            }
                        }
                        return attr
                    }(options, type, settings.itemIndex);
                    const fontStyle = (0, _utils.patchFontOptions)(options.font);
                    fontStyle["pointer-events"] = "none";
                    const menuItem = renderer.g().attr({
                        class: "dx-export-menu-list-item"
                    });
                    itemData["export-element-type"] = type;
                    if (format) {
                        itemData["export-element-format"] = format
                    }
                    const rect = renderer.rect();
                    rect.attr(attr.rect).css({
                        cursor: "pointer",
                        "pointer-events": "all"
                    }).data(itemData);
                    rect.on(_hover.start + ".export", () => rect.attr({
                        fill: options.button.hover.backgroundColor
                    })).on(_hover.end + ".export", () => rect.attr({
                        fill: null
                    }));
                    rect.append(menuItem);
                    const text = renderer.text(settings.text).css(fontStyle).attr(attr.text).append(menuItem);
                    if ("printing" === type) {
                        renderer.path(null, "line").attr(attr.separator).append(menuItem)
                    }
                    return {
                        g: menuItem,
                        rect: rect,
                        resetState: () => rect.attr({
                            fill: null
                        }),
                        fixPosition: () => {
                            const textBBox = text.getBBox();
                            text.move(attr.text.x - textBBox.x - (options.rtl ? textBBox.width : 0))
                        }
                    }
                }
                const exportFromMarkup = function(markup, options) {
                    options.format = validateFormat(options.format) || "PNG";
                    options.fileName = options.fileName || "file";
                    options.exportingAction = options.onExporting;
                    options.exportedAction = options.onExported;
                    options.fileSavingAction = options.onFileSaving;
                    options.margin = (0, _type.isDefined)(options.margin) ? options.margin : 10;
                    options.backgroundColor = (0, _type.isDefined)(options.backgroundColor) ? options.backgroundColor : function(markup) {
                        const parsedMarkup = GET_COLOR_REGEX.exec(markup);
                        return null === parsedMarkup || void 0 === parsedMarkup ? void 0 : parsedMarkup[1]
                    }(markup) || (0, _themes.getTheme)().backgroundColor;
                    (0, _exporter.export)(markup, options, getCreatorFunc(options.format))
                };
                exports.exportFromMarkup = exportFromMarkup;
                exports.getMarkup = widgets => combineMarkups(widgets).markup;
                exports.exportWidgets = function(widgets, options) {
                    options = options || {};
                    const markupInfo = combineMarkups(widgets, {
                        gridLayout: options.gridLayout,
                        verticalAlignment: options.verticalAlignment,
                        horizontalAlignment: options.horizontalAlignment
                    });
                    options.width = markupInfo.width;
                    options.height = markupInfo.height;
                    exportFromMarkup(markupInfo.markup, options)
                };
                let combineMarkups = function(widgets) {
                    let options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
                    if (!Array.isArray(widgets)) {
                        widgets = [
                            [widgets]
                        ]
                    } else if (!Array.isArray(widgets[0])) {
                        widgets = widgets.map(item => [item])
                    }
                    const compactView = !options.gridLayout;
                    const exportItems = widgets.reduce((r, row, rowIndex) => {
                        const rowInfo = row.reduce((r, item, colIndex) => {
                            const size = item.getSize();
                            const backgroundColor = item.option("backgroundColor") || (0, _themes.getTheme)(item.option("theme")).backgroundColor;
                            backgroundColor && -1 === r.backgroundColors.indexOf(backgroundColor) && r.backgroundColors.push(backgroundColor);
                            r.hOffset = r.width;
                            r.width += size.width;
                            r.height = Math.max(r.height, size.height);
                            r.itemWidth = Math.max(r.itemWidth, size.width);
                            r.items.push({
                                markup: item.svg(),
                                width: size.width,
                                height: size.height,
                                c: colIndex,
                                r: rowIndex,
                                hOffset: r.hOffset
                            });
                            return r
                        }, {
                            items: [],
                            height: 0,
                            itemWidth: 0,
                            hOffset: 0,
                            width: 0,
                            backgroundColors: r.backgroundColors
                        });
                        r.rowOffsets.push(r.totalHeight);
                        r.rowHeights.push(rowInfo.height);
                        r.totalHeight += rowInfo.height;
                        r.items = r.items.concat(rowInfo.items);
                        r.itemWidth = Math.max(r.itemWidth, rowInfo.itemWidth);
                        r.maxItemLen = Math.max(r.maxItemLen, rowInfo.items.length);
                        r.totalWidth = compactView ? Math.max(r.totalWidth, rowInfo.width) : r.maxItemLen * r.itemWidth;
                        return r
                    }, {
                        items: [],
                        rowOffsets: [],
                        rowHeights: [],
                        itemWidth: 0,
                        totalHeight: 0,
                        maxItemLen: 0,
                        totalWidth: 0,
                        backgroundColors: []
                    });
                    const backgroundColor = 'data-backgroundcolor="'.concat(1 === exportItems.backgroundColors.length ? exportItems.backgroundColors[0] : "", '" ');
                    const getVOffset = item => {
                        const align = options.verticalAlignment;
                        const dy = exportItems.rowHeights[item.r] - item.height;
                        return exportItems.rowOffsets[item.r] + ("bottom" === align ? dy : "center" === align ? dy / 2 : 0)
                    };
                    const getHOffset = item => {
                        if (compactView) {
                            return item.hOffset
                        }
                        const align = options.horizontalAlignment;
                        const colWidth = exportItems.itemWidth;
                        const dx = colWidth - item.width;
                        return item.c * colWidth + ("right" === align ? dx : "center" === align ? dx / 2 : 0)
                    };
                    const totalHeight = exportItems.totalHeight;
                    const totalWidth = exportItems.totalWidth;
                    return {
                        markup: "<svg " + backgroundColor + 'height="' + totalHeight + '" width="' + totalWidth + '" version="1.1" xmlns="http://www.w3.org/2000/svg">' + exportItems.items.map(item => '<g transform="translate('.concat(getHOffset(item), ",").concat(getVOffset(item), ')">').concat(item.markup, "</g>")).join("") + "</svg>",
                        width: totalWidth,
                        height: totalHeight
                    }
                };
                exports.combineMarkups = combineMarkups;
                let ExportMenu = function(params) {
                    const renderer = this._renderer = params.renderer;
                    this._incidentOccurred = params.incidentOccurred;
                    this._exportTo = params.exportTo;
                    this._print = params.print;
                    this._shadow = renderer.shadowFilter("-50%", "-50%", "200%", "200%", 2, 6, 3);
                    this._shadow.attr({
                        opacity: .8
                    });
                    this._group = renderer.g().attr({
                        class: "dx-export-menu",
                        [_svg.HIDDEN_FOR_EXPORT]: true
                    }).linkOn(renderer.root, {
                        name: "export-menu",
                        after: "peripheral"
                    });
                    this._buttonGroup = renderer.g().attr({
                        class: "dx-export-menu-button"
                    }).append(this._group);
                    this._listGroup = renderer.g().attr({
                        class: "dx-export-menu-list"
                    }).append(this._group);
                    this._overlay = renderer.rect(-85, 39, 120, 0);
                    this._overlay.attr({
                        "stroke-width": 1,
                        cursor: "pointer",
                        rx: 4,
                        ry: 4,
                        filter: this._shadow.id
                    });
                    this._overlay.data({
                        "export-element-type": "list"
                    });
                    this.validFormats = getValidFormats();
                    this._subscribeEvents()
                };
                exports.ExportMenu = ExportMenu;
                (0, _extend.extend)(ExportMenu.prototype, {
                    getLayoutOptions() {
                        if (this._hiddenDueToLayout) {
                            return {
                                width: 0,
                                height: 0,
                                cutSide: "vertical",
                                cutLayoutSide: "top"
                            }
                        }
                        const bBox = this._buttonGroup.getBBox();
                        bBox.cutSide = "vertical";
                        bBox.cutLayoutSide = "top";
                        bBox.height += 10;
                        bBox.position = {
                            vertical: "top",
                            horizontal: "right"
                        };
                        bBox.verticalAlignment = "top";
                        bBox.horizontalAlignment = "right";
                        return bBox
                    },
                    shift(_, y) {
                        this._group.attr({
                            translateY: this._group.attr("translateY") + y
                        })
                    },
                    draw(width, height, canvas) {
                        this._group.move(width - 35 - 2 - 3 + canvas.left, Math.floor(height / 2 - 17.5));
                        const layoutOptions = this.getLayoutOptions();
                        if (layoutOptions.width > width || layoutOptions.height > height) {
                            this.freeSpace()
                        }
                        return this
                    },
                    show() {
                        this._group.linkAppend()
                    },
                    hide() {
                        this._group.linkRemove()
                    },
                    setOptions(options) {
                        this._options = options;
                        if (options.formats) {
                            options.formats = options.formats.reduce((r, format) => {
                                format = validateFormat(format, this._incidentOccurred, this.validFormats);
                                format && r.push(format);
                                return r
                            }, [])
                        } else {
                            options.formats = this.validFormats.supported.slice()
                        }
                        options.printingEnabled = void 0 === options.printingEnabled ? true : options.printingEnabled;
                        if (options.enabled && (options.formats.length || options.printingEnabled)) {
                            this.show();
                            this._updateButton();
                            this._updateList();
                            this._hideList()
                        } else {
                            this.hide()
                        }
                    },
                    dispose() {
                        this._unsubscribeEvents();
                        this._group.linkRemove().linkOff();
                        this._group.dispose();
                        this._shadow.dispose()
                    },
                    layoutOptions() {
                        return this._options.enabled && {
                            horizontalAlignment: "right",
                            verticalAlignment: "top",
                            weak: true
                        }
                    },
                    measure() {
                        this._fillSpace();
                        const margin = this._options.button.margin;
                        return [35 + margin.left + margin.right, 35 + margin.top + margin.bottom]
                    },
                    move(rect) {
                        const margin = this._options.button.margin;
                        this._group.attr({
                            translateX: Math.round(rect[0]) + margin.left,
                            translateY: Math.round(rect[1]) + margin.top
                        })
                    },
                    _fillSpace() {
                        this._hiddenDueToLayout = false;
                        this.show()
                    },
                    freeSpace() {
                        this._incidentOccurred("W2107");
                        this._hiddenDueToLayout = true;
                        this.hide()
                    },
                    _hideList() {
                        this._listGroup.remove();
                        this._listShown = false;
                        this._setButtonState("default");
                        this._menuItems.forEach(item => item.resetState())
                    },
                    _showList() {
                        this._listGroup.append(this._group);
                        this._listShown = true;
                        this._menuItems.forEach(item => item.fixPosition())
                    },
                    _setButtonState(state) {
                        const style = this._options.button[state];
                        this._button.attr({
                            stroke: style.borderColor,
                            fill: style.backgroundColor
                        });
                        this._icon.attr({
                            fill: style.color
                        })
                    },
                    _subscribeEvents() {
                        this._renderer.root.on(_pointer.default.up + ".export", e => {
                            const elementType = e.target["export-element-type"];
                            if (!elementType) {
                                if (this._button) {
                                    this._hideList()
                                }
                                return
                            }
                            if ("button" === elementType) {
                                if (this._listShown) {
                                    this._setButtonState("default");
                                    this._hideList()
                                } else {
                                    this._setButtonState("focus");
                                    this._showList()
                                }
                            } else if ("printing" === elementType) {
                                this._print();
                                this._hideList()
                            } else if ("exporting" === elementType) {
                                this._exportTo(e.target["export-element-format"]);
                                this._hideList()
                            }
                        });
                        this._listGroup.on(pointerActions, e => e.stopPropagation());
                        this._buttonGroup.on(_pointer.default.enter, () => this._setButtonState("hover"));
                        this._buttonGroup.on(_pointer.default.leave, () => this._setButtonState(this._listShown ? "focus" : "default"));
                        this._buttonGroup.on(_pointer.default.down + ".export", () => this._setButtonState("active"))
                    },
                    _unsubscribeEvents() {
                        this._renderer.root.off(".export");
                        this._listGroup.off();
                        this._buttonGroup.off()
                    },
                    _updateButton() {
                        const renderer = this._renderer;
                        const options = this._options;
                        const exportData = {
                            "export-element-type": "button"
                        };
                        if (!this._button) {
                            this._button = renderer.rect(0, 0, 35, 35).append(this._buttonGroup);
                            this._button.attr({
                                rx: 4,
                                ry: 4,
                                fill: options.button.default.backgroundColor,
                                stroke: options.button.default.borderColor,
                                "stroke-width": 1,
                                cursor: "pointer"
                            });
                            this._button.data(exportData);
                            this._icon = renderer.path(ICON_COORDS).append(this._buttonGroup);
                            this._icon.attr({
                                fill: options.button.default.color,
                                cursor: "pointer"
                            });
                            this._icon.data(exportData);
                            this._buttonGroup.setTitle(_message.default.format("vizExport-titleMenuText"))
                        }
                    },
                    _updateList() {
                        const options = this._options;
                        const buttonDefault = options.button.default;
                        const listGroup = this._listGroup;
                        const items = function(renderer, options) {
                            let items = [];
                            if (options.printingEnabled) {
                                items.push(createMenuItem(renderer, options, {
                                    type: "printing",
                                    text: _message.default.format("vizExport-printingButtonText"),
                                    itemIndex: items.length
                                }))
                            }
                            items = options.formats.reduce((r, format) => {
                                r.push(createMenuItem(renderer, options, {
                                    type: "exporting",
                                    text: _message.default.getFormatter("vizExport-exportButtonText")(format),
                                    format: format,
                                    itemIndex: r.length
                                }));
                                return r
                            }, items);
                            return items
                        }(this._renderer, options);
                        this._shadow.attr({
                            color: options.shadowColor
                        });
                        this._overlay.attr({
                            height: 30 * items.length + 2,
                            fill: buttonDefault.backgroundColor,
                            stroke: buttonDefault.borderColor
                        });
                        listGroup.clear();
                        this._overlay.append(listGroup);
                        items.forEach(item => item.g.append(listGroup));
                        this._menuItems = items
                    }
                });

                function getExportOptions(widget, exportOptions, fileName, format) {
                    if (format || exportOptions.format) {
                        format = validateFormat(format || exportOptions.format, widget._incidentOccurred)
                    }
                    const {
                        width: width,
                        height: height
                    } = widget.getSize();
                    return {
                        format: format || "PNG",
                        fileName: fileName || exportOptions.fileName || "file",
                        backgroundColor: exportOptions.backgroundColor,
                        width: width,
                        height: height,
                        margin: exportOptions.margin,
                        svgToCanvas: exportOptions.svgToCanvas,
                        exportingAction: widget._createActionByOption("onExporting", {
                            excludeValidators: ["disabled"]
                        }),
                        exportedAction: widget._createActionByOption("onExported", {
                            excludeValidators: ["disabled"]
                        }),
                        fileSavingAction: widget._createActionByOption("onFileSaving", {
                            excludeValidators: ["disabled"]
                        })
                    }
                }
                const plugin = {
                    name: "export",
                    init() {
                        this._exportMenu = new ExportMenu({
                            renderer: this._renderer,
                            incidentOccurred: this._incidentOccurred,
                            print: () => this.print(),
                            exportTo: format => this.exportTo(void 0, format)
                        });
                        this._layout.add(this._exportMenu)
                    },
                    dispose() {
                        this._exportMenu.dispose()
                    },
                    members: {
                        _getExportMenuOptions() {
                            return (0, _extend.extend)({}, this._getOption("export"), {
                                rtl: this._getOption("rtlEnabled", true)
                            })
                        },
                        _disablePointerEvents() {
                            const pointerEventsValue = this._renderer.root.attr("pointer-events");
                            this._renderer.root.attr({
                                "pointer-events": "none"
                            });
                            return pointerEventsValue
                        },
                        exportTo(fileName, format) {
                            const menu = this._exportMenu;
                            const options = getExportOptions(this, this._getOption("export") || {}, fileName, format);
                            menu && menu.hide();
                            const pointerEventsValue = this._disablePointerEvents();
                            const promise = (0, _exporter.export)(this._renderer.root.element, options, getCreatorFunc(options.format)).fail(_console.logger.error).always(() => {
                                this._renderer.root.attr({
                                    "pointer-events": pointerEventsValue
                                })
                            });
                            menu && menu.show();
                            return promise
                        },
                        print() {
                            const menu = this._exportMenu;
                            const options = getExportOptions(this, this._getOption("export") || {});
                            options.exportingAction = null;
                            options.exportedAction = null;
                            options.margin = 0;
                            options.format = "PNG";
                            options.useBase64 = true;
                            options.fileSavingAction = eventArgs => {
                                print("data:image/png;base64,".concat(eventArgs.data), {
                                    width: options.width,
                                    __test: options.__test
                                });
                                eventArgs.cancel = true
                            };
                            const pointerEventsValue = this._disablePointerEvents();
                            menu && menu.hide();
                            const promise = (0, _exporter.export)(this._renderer.root.element, options, getCreatorFunc(options.format)).fail(_console.logger.error).always(() => {
                                this._renderer.root.attr({
                                    "pointer-events": pointerEventsValue
                                })
                            });
                            menu && menu.show();
                            return promise
                        }
                    },
                    customize(constructor) {
                        const proto = constructor.prototype;
                        constructor.addChange({
                            code: "EXPORT",
                            handler() {
                                this._exportMenu.setOptions(this._getExportMenuOptions());
                                this._change(["LAYOUT"])
                            },
                            isThemeDependent: true,
                            isOptionChange: true,
                            option: "export"
                        });
                        proto._optionChangesMap.onExporting = "EXPORT";
                        proto._optionChangesMap.onExported = "EXPORT";
                        proto._optionChangesMap.onFileSaving = "EXPORT"
                    },
                    fontFields: ["export.font"]
                };
                exports.plugin = plugin
            },
        3603:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/helpers.js ***!
              \*****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.changes = function() {
                    return new Flags
                };
                exports.expand = expand;
                exports.replaceInherit = void 0;
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                const isServerSide = !(0, _window.hasWindow)();

                function Flags() {
                    this.reset()
                }
                Flags.prototype = {
                    constructor: Flags,
                    add: function(codes) {
                        let i;
                        const ii = codes.length;
                        const flags = this._flags;
                        for (i = 0; i < ii; ++i) {
                            flags[codes[i]] = 1
                        }
                    },
                    has: function(code) {
                        return this._flags[code] > 0
                    },
                    count: function() {
                        return Object.keys(this._flags).length
                    },
                    reset: function() {
                        this._flags = {}
                    }
                };

                function combineMaps(baseMap, thisMap) {
                    return baseMap !== thisMap ? (0, _extend2.extend)({}, baseMap, thisMap) : (0, _extend2.extend)({}, baseMap)
                }

                function combineLists(baseList, thisList) {
                    return baseList !== thisList ? baseList.concat(thisList) : baseList.slice()
                }

                function buildTotalChanges(proto) {
                    proto._totalChangesOrder = proto._optionChangesOrder.concat(proto._layoutChangesOrder, proto._customChangesOrder)
                }

                function addChange(settings) {
                    const proto = this.prototype;
                    const code = settings.code;
                    proto["_change_" + code] = settings.handler;
                    if (settings.isThemeDependent) {
                        proto._themeDependentChanges.push(code)
                    }
                    if (settings.option) {
                        proto._optionChangesMap[settings.option] = code
                    }(settings.isOptionChange ? proto._optionChangesOrder : proto._customChangesOrder).push(code);
                    buildTotalChanges(proto)
                }

                function createChainExecutor() {
                    const executeChain = function() {
                        let i;
                        const ii = executeChain._chain.length;
                        let result;
                        for (i = 0; i < ii; ++i) {
                            result = executeChain._chain[i].apply(this, arguments)
                        }
                        return result
                    };
                    executeChain._chain = [];
                    executeChain.add = function(item) {
                        executeChain._chain.push(item)
                    };
                    executeChain.copy = function(executor) {
                        executeChain._chain = executor._chain.slice()
                    };
                    return executeChain
                }

                function expand(target, name, expander) {
                    let current = target[name];
                    if (!current) {
                        current = expander
                    } else if (!current.add) {
                        current = createChainExecutor();
                        current.add(target[name]);
                        current.add(expander)
                    } else {
                        if (false === Object.prototype.hasOwnProperty.call(target, name)) {
                            current = createChainExecutor();
                            current.copy(target[name])
                        }
                        current.add(expander)
                    }
                    target[name] = current
                }

                function addPlugin(plugin) {
                    const proto = this.prototype;
                    proto._plugins.push(plugin);
                    plugin.fontFields && proto._fontFields.push.apply(proto._fontFields, plugin.fontFields);
                    if (plugin.members) {
                        (0, _extend2.extend)(this.prototype, plugin.members)
                    }
                    if (plugin.customize) {
                        plugin.customize(this)
                    }
                    if (plugin.extenders) {
                        Object.keys(plugin.extenders).forEach((function(key) {
                            const func = plugin.extenders[key];
                            expand(proto, key, func)
                        }), this)
                    }
                }
                const replaceInherit = isServerSide ? function(widget) {
                    const _inherit = widget.inherit;
                    widget.inherit = function() {
                        const result = _inherit.apply(this, arguments);
                        const proto = result.prototype;
                        ["_plugins", "_eventsMap", "_initialChanges", "_themeDependentChanges", "_optionChangesMap", "_optionChangesOrder", "_layoutChangesOrder", "_customChangesOrder", "_totalChangesOrder"].forEach((function(key) {
                            proto[key] = {}
                        }));
                        result.addPlugin = _common.noop;
                        return result
                    };
                    widget.addChange = _common.noop;
                    widget.addPlugin = _common.noop
                } : function(widget) {
                    const _inherit = widget.inherit;
                    widget.inherit = function() {
                        let proto = this.prototype;
                        const plugins = proto._plugins;
                        const fontFields = proto._fontFields;
                        const eventsMap = proto._eventsMap;
                        const initialChanges = proto._initialChanges;
                        const themeDependentChanges = proto._themeDependentChanges;
                        const optionChangesMap = proto._optionChangesMap;
                        const partialOptionChangesMap = proto._partialOptionChangesMap;
                        const partialOptionChangesPath = proto._partialOptionChangesPath;
                        const optionChangesOrder = proto._optionChangesOrder;
                        const layoutChangesOrder = proto._layoutChangesOrder;
                        const customChangesOrder = proto._customChangesOrder;
                        const result = _inherit.apply(this, arguments);
                        proto = result.prototype;
                        proto._plugins = combineLists(plugins, proto._plugins);
                        proto._fontFields = combineLists(fontFields, proto._fontFields);
                        proto._eventsMap = combineMaps(eventsMap, proto._eventsMap);
                        proto._initialChanges = combineLists(initialChanges, proto._initialChanges);
                        proto._themeDependentChanges = combineLists(themeDependentChanges, proto._themeDependentChanges);
                        proto._optionChangesMap = combineMaps(optionChangesMap, proto._optionChangesMap);
                        proto._partialOptionChangesMap = combineMaps(partialOptionChangesMap, proto._partialOptionChangesMap);
                        proto._partialOptionChangesPath = combineMaps(partialOptionChangesPath, proto._partialOptionChangesPath);
                        proto._optionChangesOrder = combineLists(optionChangesOrder, proto._optionChangesOrder);
                        proto._layoutChangesOrder = combineLists(layoutChangesOrder, proto._layoutChangesOrder);
                        proto._customChangesOrder = combineLists(customChangesOrder, proto._customChangesOrder);
                        buildTotalChanges(proto);
                        result.addPlugin = addPlugin;
                        return result
                    };
                    widget.prototype._plugins = [];
                    widget.prototype._fontFields = [];
                    widget.addChange = addChange;
                    widget.addPlugin = addPlugin
                };
                exports.replaceInherit = replaceInherit
            },
        94551:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/layout.js ***!
              \****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _utils = __webpack_require__( /*! ./utils */ 19157);
                const _min = Math.min;
                const _max = Math.max;
                const _round = Math.round;
                const horizontalAlignmentMap = {
                    left: 0,
                    center: 1,
                    right: 2
                };
                const verticalAlignmentMap = {
                    top: 0,
                    center: 1,
                    bottom: 2
                };
                const sideMap = {
                    horizontal: 0,
                    vertical: 1
                };
                const slicersMap = {};
                slicersMap[0] = function(a, b, size) {
                    return [a, _min(b, a + size)]
                };
                slicersMap[1] = function(a, b, size) {
                    return [_max(a, (a + b - size) / 2), _min(b, (a + b + size) / 2)]
                };
                slicersMap[2] = function(a, b, size) {
                    return [_max(a, b - size), b]
                };

                function pickValue(value, map, defaultValue) {
                    const val = (0, _utils.normalizeEnum)(value);
                    return val in map ? map[val] : defaultValue
                }

                function normalizeLayoutOptions(options) {
                    const side = pickValue(options.side, sideMap, 1);
                    const alignment = [pickValue(options.horizontalAlignment, horizontalAlignmentMap, 1), pickValue(options.verticalAlignment, verticalAlignmentMap, 0)];
                    return {
                        side: side,
                        primary: (primary = alignment[side], primary < 2 ? 0 : 2),
                        secondary: alignment[1 - side],
                        weak: options.weak,
                        priority: options.priority || 0,
                        header: options.header,
                        position: options.position
                    };
                    var primary
                }

                function getShrink(alignment, size) {
                    return (alignment > 0 ? -1 : 1) * size
                }

                function processForward(item, rect, minSize) {
                    const side = item.side;
                    const size = item.element.measure([rect[2] - rect[0], rect[3] - rect[1]]);
                    const minSide = "indside" === item.position ? 0 : minSize[side];
                    const isValid = size[side] < rect[2 + side] - rect[side] - minSide;
                    if (isValid) {
                        if ("inside" !== item.position) {
                            rect[item.primary + side] += getShrink(item.primary, size[side])
                        }
                        item.size = size
                    }
                    return isValid
                }

                function processRectBackward(item, rect, alignmentRect) {
                    const primarySide = item.side;
                    const secondarySide = (side = primarySide, 1 - side);
                    var side;
                    const itemRect = [];
                    const secondary = (alignment = item.secondary, a = alignmentRect[secondarySide], b = alignmentRect[2 + secondarySide], size = item.size[secondarySide], slicersMap[alignment](a, b, size));
                    var alignment, a, b, size;
                    itemRect[primarySide] = _round(itemRect[2 + primarySide] = rect[item.primary + primarySide] + ("inside" === item.position ? getShrink(item.primary, item.size[primarySide]) : 0));
                    itemRect[item.primary + primarySide] = _round(rect[item.primary + primarySide] - getShrink(item.primary, item.size[primarySide]));
                    if ("inside" !== item.position) {
                        rect[item.primary + primarySide] = itemRect[item.primary + primarySide]
                    }
                    itemRect[secondarySide] = _round(secondary[0]);
                    itemRect[2 + secondarySide] = _round(secondary[1]);
                    return itemRect
                }

                function processBackward(item, rect, alignmentRect, fitRect, size, targetRect) {
                    const itemRect = processRectBackward(item, rect, alignmentRect);
                    const itemFitRect = processRectBackward(item, fitRect, fitRect);
                    if (size[item.side] > 0) {
                        size[item.side] -= item.size[item.side];
                        targetRect[item.primary + item.side] = itemRect[item.primary + item.side];
                        item.element.freeSpace()
                    } else {
                        item.element.move(itemRect, itemFitRect)
                    }
                }

                function Layout() {
                    this._targets = []
                }
                Layout.prototype = {
                    constructor: Layout,
                    dispose: function() {
                        this._targets = null
                    },
                    add: function(target) {
                        this._targets.push(target)
                    },
                    forward: function(targetRect, minSize) {
                        const rect = targetRect.slice();
                        const targets = function(targets) {
                            let i;
                            const ii = targets.length;
                            let collection = [];
                            let layout;
                            for (i = 0; i < ii; ++i) {
                                layout = targets[i].layoutOptions();
                                if (layout) {
                                    layout = normalizeLayoutOptions(layout);
                                    layout.element = targets[i];
                                    collection.push(layout)
                                }
                            }
                            collection.sort((function(a, b) {
                                return b.side - a.side || a.priority - b.priority
                            }));
                            collection = function(collection) {
                                const weakItem = collection.filter((function(item) {
                                    return true === item.weak
                                }))[0];
                                let headerItem;
                                if (weakItem) {
                                    headerItem = collection.filter((function(item) {
                                        return weakItem.primary === item.primary && item.side === weakItem.side && item !== weakItem
                                    }))[0]
                                }
                                if (weakItem && headerItem) {
                                    return [makeHeader(headerItem, weakItem)].concat(collection.filter((function(item) {
                                        return !(item === headerItem || item === weakItem)
                                    })))
                                }
                                return collection
                            }(collection);
                            return collection
                        }(this._targets);
                        let i;
                        const ii = targets.length;
                        const cache = [];
                        for (i = 0; i < ii; ++i) {
                            if (processForward(targets[i], rect, minSize)) {
                                cache.push(targets[i])
                            } else {
                                targets[i].element.freeSpace()
                            }
                        }
                        this._cache = cache.reverse();
                        return rect
                    },
                    backward: function(targetRect, alignmentRect) {
                        let size = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : [0, 0];
                        let backwardRect = targetRect.slice();
                        const fitRect = targetRect.slice();
                        const targets = this._cache;
                        let targetSide = 0;
                        let target;
                        let i;
                        const ii = targets.length;
                        for (i = 0; i < ii; ++i) {
                            target = targets[i];
                            if (target.side !== targetSide) {
                                backwardRect = targetRect.slice()
                            }
                            processBackward(target, backwardRect, alignmentRect, fitRect, size, targetRect);
                            targetSide = target.side
                        }
                        return size
                    }
                };

                function processBackwardHeaderRect(element, rect) {
                    const rectCopy = rect.slice();
                    const itemRect = processRectBackward(element, rectCopy, rectCopy);
                    itemRect[element.side] = rect[element.side];
                    itemRect[2 + element.side] = rect[2 + element.side];
                    return itemRect
                }

                function makeHeader(header, weakElement) {
                    const side = header.side;
                    const primary = header.primary;
                    const secondary = header.secondary;
                    return {
                        side: side,
                        primary: primary,
                        secondary: secondary,
                        priority: 0,
                        element: {
                            measure: function(targetSize) {
                                const result = targetSize.slice();
                                const weakSize = weakElement.element.measure(targetSize.slice());
                                targetSize[primary] -= weakSize[primary];
                                const headerSize = header.element.measure(targetSize.slice());
                                result[side] = weakSize[side] = headerSize[side] = Math.max(headerSize[side], weakSize[side]);
                                weakElement.size = weakSize;
                                header.size = headerSize;
                                return result
                            },
                            move: function(rect, fitRect) {
                                if (fitRect[2] - fitRect[0] < header.size[0] + weakElement.size[0] - 2) {
                                    this.freeSpace();
                                    return
                                }
                                const weakRect = processBackwardHeaderRect(weakElement, fitRect);
                                fitRect[2 + weakElement.primary] = weakRect[weakElement.primary];
                                const headerFitReact = processBackwardHeaderRect(header, fitRect);
                                if (fitRect[2 + weakElement.primary] < rect[2 + weakElement.primary] && header.size[header.primary] > rect[2 + header.primary] - rect[header.primary]) {
                                    rect[2 + weakElement.primary] = fitRect[2 + weakElement.primary]
                                }
                                let headerRect = processBackwardHeaderRect(header, rect);
                                if (headerRect[2 + weakElement.primary] > fitRect[2 + weakElement.primary]) {
                                    rect[2 + weakElement.primary] = fitRect[2 + weakElement.primary];
                                    headerRect = processBackwardHeaderRect(header, rect)
                                }
                                weakElement.element.move(weakRect);
                                header.element.move(headerRect, headerFitReact)
                            },
                            freeSpace: function() {
                                header.element.freeSpace();
                                weakElement.element.freeSpace()
                            }
                        }
                    }
                }
                var _default = Layout;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        73711:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/layout_element.js ***!
              \************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.LayoutElement = LayoutElement;
                exports.WrapperLayoutElement = WrapperLayoutElement;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _object = __webpack_require__( /*! ../../core/utils/object */ 48013);
                const _round = Math.round;
                const defaultOffset = {
                    horizontal: 0,
                    vertical: 0
                };
                const alignFactors = {
                    center: .5,
                    right: 1,
                    bottom: 1,
                    left: 0,
                    top: 0
                };

                function LayoutElement(options) {
                    this._options = options
                }
                LayoutElement.prototype = {
                    constructor: LayoutElement,
                    position: function(options) {
                        const ofBBox = options.of.getLayoutOptions();
                        const myBBox = this.getLayoutOptions();
                        const at = options.at;
                        const my = options.my;
                        const offset = options.offset || defaultOffset;
                        const shiftX = -alignFactors[my.horizontal] * myBBox.width + ofBBox.x + alignFactors[at.horizontal] * ofBBox.width + parseInt(offset.horizontal);
                        const shiftY = -alignFactors[my.vertical] * myBBox.height + ofBBox.y + alignFactors[at.vertical] * ofBBox.height + parseInt(offset.vertical);
                        this.shift(_round(shiftX), _round(shiftY))
                    },
                    getLayoutOptions: _common.noop
                };

                function WrapperLayoutElement(renderElement, bBox) {
                    this._renderElement = renderElement;
                    this._cacheBBox = bBox
                }
                const wrapperLayoutElementPrototype = WrapperLayoutElement.prototype = (0, _object.clone)(LayoutElement.prototype);
                wrapperLayoutElementPrototype.constructor = WrapperLayoutElement;
                wrapperLayoutElementPrototype.getLayoutOptions = function() {
                    return this._cacheBBox || this._renderElement.getBBox()
                };
                wrapperLayoutElementPrototype.shift = function(shiftX, shiftY) {
                    const bBox = this.getLayoutOptions();
                    this._renderElement.move(_round(shiftX - bBox.x), _round(shiftY - bBox.y))
                }
            },
        64758:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/loading_indicator.js ***!
              \***************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.plugin = exports.LoadingIndicator = void 0;
                var _utils = __webpack_require__( /*! ./utils */ 19157);
                let LoadingIndicator = function(parameters) {
                    const renderer = parameters.renderer;
                    this._group = renderer.g().attr({
                        class: "dx-loading-indicator"
                    }).linkOn(renderer.root, {
                        name: "loading-indicator",
                        after: "peripheral"
                    });
                    this._rect = renderer.rect().attr({
                        opacity: 0
                    }).append(this._group);
                    this._text = renderer.text().attr({
                        align: "center"
                    }).append(this._group);
                    this._createStates(parameters.eventTrigger, this._group, renderer.root, parameters.notify)
                };
                exports.LoadingIndicator = LoadingIndicator;
                LoadingIndicator.prototype = {
                    constructor: LoadingIndicator,
                    _createStates: function(eventTrigger, group, root, notify) {
                        this._states = [{
                            opacity: 0,
                            start: function() {
                                notify(false)
                            },
                            complete: function() {
                                group.linkRemove();
                                root.css({
                                    "pointer-events": ""
                                });
                                eventTrigger("loadingIndicatorReady")
                            }
                        }, {
                            opacity: .85,
                            start: function() {
                                group.linkAppend();
                                root.css({
                                    "pointer-events": "none"
                                });
                                notify(true)
                            },
                            complete: function() {
                                eventTrigger("loadingIndicatorReady")
                            }
                        }];
                        this._state = 0
                    },
                    setSize: function(size) {
                        const width = size.width;
                        const height = size.height;
                        this._rect.attr({
                            width: width,
                            height: height
                        });
                        this._text.attr({
                            x: width / 2,
                            y: height / 2
                        })
                    },
                    setOptions: function(options) {
                        this._rect.attr({
                            fill: options.backgroundColor
                        });
                        this._text.css((0, _utils.patchFontOptions)(options.font)).attr({
                            text: options.text,
                            class: options.cssClass
                        });
                        this[options.show ? "show" : "hide"]()
                    },
                    dispose: function() {
                        this._group.linkRemove().linkOff();
                        this._group = this._rect = this._text = this._states = null
                    },
                    _transit: function(stateId) {
                        const that = this;
                        let state;
                        if (that._state !== stateId) {
                            that._state = stateId;
                            that._isHiding = false;
                            state = that._states[stateId];
                            that._rect.stopAnimation().animate({
                                opacity: state.opacity
                            }, {
                                complete: state.complete,
                                easing: "linear",
                                duration: 400,
                                unstoppable: true
                            });
                            that._noHiding = true;
                            state.start();
                            that._noHiding = false
                        }
                    },
                    show: function() {
                        this._transit(1)
                    },
                    hide: function() {
                        this._transit(0)
                    },
                    scheduleHiding: function() {
                        if (!this._noHiding) {
                            this._isHiding = true
                        }
                    },
                    fulfillHiding: function() {
                        if (this._isHiding) {
                            this.hide()
                        }
                    }
                };
                const plugin = {
                    name: "loading_indicator",
                    init: function() {
                        const that = this;
                        that._loadingIndicator = new LoadingIndicator({
                            eventTrigger: that._eventTrigger,
                            renderer: that._renderer,
                            notify: function(state) {
                                that._skipLoadingIndicatorOptions = true;
                                that.option("loadingIndicator", {
                                    show: state
                                });
                                that._skipLoadingIndicatorOptions = false;
                                if (state) {
                                    that._stopCurrentHandling()
                                }
                            }
                        });
                        that._scheduleLoadingIndicatorHiding()
                    },
                    dispose: function() {
                        this._loadingIndicator.dispose();
                        this._loadingIndicator = null
                    },
                    members: {
                        _scheduleLoadingIndicatorHiding: function() {
                            this._loadingIndicator.scheduleHiding()
                        },
                        _fulfillLoadingIndicatorHiding: function() {
                            this._loadingIndicator.fulfillHiding()
                        },
                        showLoadingIndicator: function() {
                            this._loadingIndicator.show()
                        },
                        hideLoadingIndicator: function() {
                            this._loadingIndicator.hide()
                        },
                        _onBeginUpdate: function() {
                            if (!this._optionChangedLocker) {
                                this._scheduleLoadingIndicatorHiding()
                            }
                        }
                    },
                    extenders: {
                        _dataSourceLoadingChangedHandler(isLoading) {
                            if (isLoading && (this._options.silent("loadingIndicator") || {}).enabled) {
                                this._loadingIndicator.show()
                            }
                        },
                        _setContentSize() {
                            this._loadingIndicator.setSize(this._canvas)
                        },
                        endUpdate() {
                            if (this._initialized && this._dataIsReady()) {
                                this._fulfillLoadingIndicatorHiding()
                            }
                        }
                    },
                    customize: function(constructor) {
                        const proto = constructor.prototype;
                        if (proto._dataSourceChangedHandler) {
                            const _dataSourceChangedHandler = proto._dataSourceChangedHandler;
                            proto._dataSourceChangedHandler = function() {
                                this._scheduleLoadingIndicatorHiding();
                                _dataSourceChangedHandler.apply(this, arguments)
                            }
                        }
                        constructor.addChange({
                            code: "LOADING_INDICATOR",
                            handler: function() {
                                if (!this._skipLoadingIndicatorOptions) {
                                    this._loadingIndicator.setOptions(this._getOption("loadingIndicator"))
                                }
                                this._scheduleLoadingIndicatorHiding()
                            },
                            isThemeDependent: true,
                            option: "loadingIndicator",
                            isOptionChange: true
                        });
                        proto._eventsMap.onLoadingIndicatorReady = {
                            name: "loadingIndicatorReady"
                        };
                        const _drawn = proto._drawn;
                        proto._drawn = function() {
                            _drawn.apply(this, arguments);
                            if (this._dataIsReady()) {
                                this._fulfillLoadingIndicatorHiding()
                            }
                        }
                    },
                    fontFields: ["loadingIndicator.font"]
                };
                exports.plugin = plugin
            },
        64509:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/plaque.js ***!
              \****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Plaque = void 0;
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                const _excluded = ["x", "y", "canvas", "offsetX", "offsetY", "offset"];

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const math = Math;
                const round = math.round;
                const max = math.max;
                const min = math.min;
                const sin = math.sin;
                const cos = math.cos;
                const asin = math.asin;
                const PI = math.PI;
                const buildPath = function() {
                    for (var _len = arguments.length, points = new Array(_len), _key = 0; _key < _len; _key++) {
                        points[_key] = arguments[_key]
                    }
                    return points.join("")
                };

                function getArc(cornerRadius, xDirection, yDirection) {
                    return "a ".concat(cornerRadius, " ").concat(cornerRadius, " 0 0 1 ").concat(xDirection * cornerRadius, " ").concat(yDirection * cornerRadius)
                }

                function getAbsoluteArc(cornerRadius, x, y) {
                    return "A ".concat(cornerRadius, " ").concat(cornerRadius, " 0 0 1 ").concat(x, " ").concat(y)
                }

                function rotateX(x, y, angle, x0, y0) {
                    return (x - x0) * round(cos(angle)) + (y - y0) * round(sin(angle)) + x0
                }

                function rotateY(x, y, angle, x0, y0) {
                    return -(x - x0) * round(sin(angle)) + (y - y0) * round(cos(angle)) + y0
                }

                function rotateSize(options, angle) {
                    if (angle % 90 === 0 && angle % 180 !== 0) {
                        return {
                            width: options.height,
                            height: options.width
                        }
                    }
                    return options
                }

                function getCloudAngle(_ref, x, y, anchorX, anchorY) {
                    let {
                        width: width,
                        height: height
                    } = _ref;
                    const halfWidth = width / 2;
                    const halfHeight = height / 2;
                    const xr = Math.ceil(x + halfWidth);
                    const xl = Math.floor(x - halfWidth);
                    const yt = Math.floor(y - halfHeight);
                    const yb = Math.ceil(y + halfHeight);
                    if (anchorX < xl && anchorY < yt || anchorX >= xl && anchorX <= xr && anchorY < yt) {
                        return 270
                    }
                    if (anchorX > xr && anchorY > yb || anchorX >= xl && anchorX <= xr && anchorY > yb) {
                        return 90
                    } else if (anchorX < xl && anchorY > yb || anchorX < xl && anchorY >= yt && anchorY <= yb) {
                        return 180
                    }
                    return 0
                }

                function getCloudPoints(_ref2, x, y, anchorX, anchorY, _ref3, bounded) {
                    let {
                        width: width,
                        height: height
                    } = _ref2;
                    let {
                        arrowWidth: arrowWidth,
                        cornerRadius: cornerRadius = 0
                    } = _ref3;
                    const halfArrowWidth = arrowWidth / 2;
                    const halfWidth = width / 2;
                    const halfHeight = height / 2;
                    const xr = Math.ceil(x + halfWidth);
                    const xl = Math.floor(x - halfWidth);
                    const yt = Math.floor(y - halfHeight);
                    const yb = Math.ceil(y + halfHeight);
                    const leftTopCorner = [xl, yt];
                    const rightTopCorner = [xr, yt];
                    const rightBottomCorner = [xr, yb];
                    const leftBottomCorner = [xl, yb];
                    const arrowX = anchorX <= xl ? xl : xr <= anchorX ? xr : anchorX;
                    const arrowY = anchorY <= yt ? yt : yb <= anchorY ? yb : anchorY;
                    const arrowBaseBottom = min(arrowY + halfArrowWidth, yb);
                    const arrowBaseTop = max(arrowY - halfArrowWidth, yt);
                    const arrowBaseLeft = max(arrowX - halfArrowWidth, xl);
                    cornerRadius = Math.min(width / 2, height / 2, cornerRadius);
                    let points;
                    leftTopCorner[1] += cornerRadius;
                    rightTopCorner[0] -= cornerRadius;
                    rightBottomCorner[1] -= cornerRadius;
                    leftBottomCorner[0] += cornerRadius;
                    if (!bounded || xl <= anchorX && anchorX <= xr && yt <= anchorY && anchorY <= yb) {
                        points = buildPath(leftTopCorner, getArc(cornerRadius, 1, -1), "L", rightTopCorner, getArc(cornerRadius, 1, 1), "L", rightBottomCorner, getArc(cornerRadius, -1, 1), "L", leftBottomCorner, getArc(cornerRadius, -1, -1))
                    } else if (anchorX > xr && anchorY < yt) {
                        const arrowAngle = arrowWidth / cornerRadius || 0;
                        const angle = PI / 4 + arrowAngle / 2;
                        const endAngle = PI / 4 - arrowAngle / 2;
                        const arrowEndPointX = rightTopCorner[0] + cos(endAngle) * cornerRadius;
                        const arrowEndPointY = rightTopCorner[1] + (1 - sin(endAngle)) * cornerRadius;
                        let arrowArc = buildPath("L", rightTopCorner, getArc(cornerRadius, cos(angle), 1 - sin(angle)), "L", [anchorX, anchorY, arrowEndPointX, arrowEndPointY], getAbsoluteArc(cornerRadius, rightTopCorner[0] + cornerRadius, rightTopCorner[1] + cornerRadius));
                        if (Math.abs(angle) > PI / 2) {
                            arrowArc = buildPath("L", [arrowBaseLeft, yt, anchorX, anchorY, xr, arrowBaseBottom])
                        }
                        points = buildPath(leftTopCorner, getArc(cornerRadius, 1, -1), arrowArc, "L", rightBottomCorner, getArc(cornerRadius, -1, 1), "L", leftBottomCorner, getArc(cornerRadius, -1, -1))
                    } else if (anchorX > xr && anchorY >= yt && anchorY <= yb) {
                        let arrowArc;
                        if (arrowBaseTop >= rightTopCorner[1] + cornerRadius && arrowBaseBottom <= rightBottomCorner[1]) {
                            arrowArc = buildPath(getArc(cornerRadius, 1, 1), "L", [xr, arrowBaseTop, anchorX, anchorY, xr, arrowBaseBottom], "L", rightBottomCorner, getArc(cornerRadius, -1, 1))
                        } else if (arrowBaseTop < rightTopCorner[1] + cornerRadius && arrowBaseBottom >= rightTopCorner[1] + cornerRadius && arrowBaseBottom <= rightBottomCorner[1]) {
                            const arrowWidthRest = rightTopCorner[1] + cornerRadius - arrowBaseTop;
                            const angle = arrowWidthRest / cornerRadius;
                            const arrowBaseTopX = rightTopCorner[0] + cos(angle) * cornerRadius;
                            const arrowBaseTopY = rightTopCorner[1] + (1 - sin(angle)) * cornerRadius;
                            arrowArc = buildPath(getArc(cornerRadius, cos(angle), 1 - sin(angle)), "L", [arrowBaseTopX, arrowBaseTopY, anchorX, anchorY, xr, arrowBaseBottom], "L", rightBottomCorner, getArc(cornerRadius, -1, 1))
                        } else if (arrowBaseTop < rightTopCorner[1] + cornerRadius && arrowBaseBottom < rightTopCorner[1] + cornerRadius) {
                            const arrowWidthRest = rightTopCorner[1] + cornerRadius - arrowBaseTop;
                            const arrowAngle = arrowWidthRest / cornerRadius;
                            const angle = arrowAngle;
                            const arrowBaseTopX = rightTopCorner[0] + cos(angle) * cornerRadius;
                            const arrowBaseTopY = rightTopCorner[1] + (1 - sin(angle)) * cornerRadius;
                            const bottomAngle = Math.sin((rightTopCorner[1] + cornerRadius - arrowBaseBottom) / cornerRadius);
                            const arrowBaseBottomX = rightTopCorner[0] + cornerRadius * cos(bottomAngle);
                            const arrowBaseBottomY = rightTopCorner[1] + cornerRadius * (1 - sin(bottomAngle));
                            arrowArc = buildPath(getArc(cornerRadius, cos(angle), 1 - sin(angle)), "L", [arrowBaseTopX, arrowBaseTopY, anchorX, anchorY, arrowBaseBottomX, arrowBaseBottomY], getAbsoluteArc(cornerRadius, rightTopCorner[0] + cornerRadius, rightTopCorner[1] + cornerRadius), "L", rightBottomCorner, getArc(cornerRadius, -1, 1))
                        } else if (arrowBaseTop <= rightTopCorner[1] + cornerRadius && arrowBaseBottom >= rightBottomCorner[1]) {
                            const topAngle = asin((rightTopCorner[1] + cornerRadius - arrowBaseTop) / cornerRadius);
                            const arrowBaseTopX = rightTopCorner[0] + cornerRadius * cos(topAngle);
                            const arrowBaseTopY = rightTopCorner[1] + cornerRadius * (1 - sin(topAngle));
                            const bottomAngle = asin((arrowBaseBottom - rightBottomCorner[1]) / cornerRadius);
                            const arrowBaseBottomX = rightBottomCorner[0] + cornerRadius * (cos(bottomAngle) - 1);
                            const arrowBaseBottomY = rightBottomCorner[1] + cornerRadius * sin(bottomAngle);
                            arrowArc = buildPath(getArc(cornerRadius, cos(topAngle), 1 - sin(topAngle)), "L", [arrowBaseTopX, arrowBaseTopY, anchorX, anchorY, arrowBaseBottomX, arrowBaseBottomY], getAbsoluteArc(cornerRadius, rightBottomCorner[0] - cornerRadius, rightBottomCorner[1] + cornerRadius))
                        } else if (arrowBaseTop > rightTopCorner[1] + cornerRadius && arrowBaseTop <= rightBottomCorner[1] && arrowBaseBottom > rightBottomCorner[1]) {
                            const bottomAngle = asin((arrowBaseBottom - rightBottomCorner[1]) / cornerRadius);
                            const arrowBaseBottomX = rightBottomCorner[0] + cornerRadius * (cos(bottomAngle) - 1);
                            const arrowBaseBottomY = rightBottomCorner[1] + cornerRadius * sin(bottomAngle);
                            arrowArc = buildPath(getArc(cornerRadius, 1, 1), "L", [xr, arrowBaseTop, anchorX, anchorY, arrowBaseBottomX, arrowBaseBottomY], getAbsoluteArc(cornerRadius, rightBottomCorner[0] - cornerRadius, rightBottomCorner[1] + cornerRadius))
                        } else if (arrowBaseTop > rightTopCorner[1] + cornerRadius && arrowBaseBottom > rightBottomCorner[1]) {
                            const bottomAngle = asin((arrowBaseBottom - rightBottomCorner[1]) / cornerRadius);
                            const arrowBaseBottomX = rightBottomCorner[0] + cornerRadius * (cos(bottomAngle) - 1);
                            const arrowBaseBottomY = rightBottomCorner[1] + cornerRadius * sin(bottomAngle);
                            const topAngle = asin((arrowBaseTop - rightBottomCorner[1]) / cornerRadius);
                            const arrowBaseTopX = rightBottomCorner[0] + cornerRadius * (cos(topAngle) - 1);
                            const arrowBaseTopY = rightBottomCorner[1] + cornerRadius * sin(topAngle);
                            arrowArc = buildPath(getArc(cornerRadius, 1, 1), "L", rightBottomCorner, getArc(cornerRadius, cos(topAngle) - 1, sin(topAngle)), "L", [arrowBaseTopX, arrowBaseTopY, anchorX, anchorY, arrowBaseBottomX, arrowBaseBottomY], getAbsoluteArc(cornerRadius, rightBottomCorner[0] - cornerRadius, rightBottomCorner[1] + cornerRadius))
                        }
                        points = buildPath(leftTopCorner, getArc(cornerRadius, 1, -1), "L", rightTopCorner, arrowArc, "L", leftBottomCorner, getArc(cornerRadius, -1, -1))
                    }
                    return buildPath("M", points, "Z")
                }
                let Plaque = function() {
                    function Plaque(options, widget, root, contentTemplate) {
                        let bounded = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : true;
                        let measureContent = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : (_, g) => g.getBBox();
                        let moveContentGroup = arguments.length > 6 && void 0 !== arguments[6] ? arguments[6] : (_, g, x, y) => g.move(x, y);
                        this.widget = widget;
                        this.options = options;
                        this.root = root;
                        this.contentTemplate = contentTemplate;
                        this.bonded = bounded;
                        this.measureContent = measureContent;
                        this.moveContentGroup = moveContentGroup
                    }
                    var _proto = Plaque.prototype;
                    _proto.draw = function(_ref4) {
                        let {
                            x: anchorX,
                            y: anchorY,
                            canvas: canvas = {},
                            offsetX: offsetX,
                            offsetY: offsetY,
                            offset: offset = 0
                        } = _ref4, restProps = function(source, excluded) {
                            if (null == source) {
                                return {}
                            }
                            var target = {};
                            var sourceKeys = Object.keys(source);
                            var key, i;
                            for (i = 0; i < sourceKeys.length; i++) {
                                key = sourceKeys[i];
                                if (excluded.indexOf(key) >= 0) {
                                    continue
                                }
                                target[key] = source[key]
                            }
                            return target
                        }(_ref4, _excluded);
                        const options = this.options;
                        let {
                            x: x,
                            y: y
                        } = options;
                        const bounds_xl = canvas.left,
                            bounds_xr = canvas.width - canvas.right,
                            bounds_width = canvas.width - canvas.right - canvas.left,
                            bounds_yt = canvas.top,
                            bounds_yb = canvas.height - canvas.bottom,
                            bounds_height = canvas.height - canvas.bottom - canvas.top;
                        if (!((0, _type.isDefined)(anchorX) && (0, _type.isDefined)(anchorY)) && !((0, _type.isDefined)(x) && (0, _type.isDefined)(y))) {
                            return false
                        }
                        if ((0, _type.isDefined)(anchorX) && (anchorX < bounds_xl || bounds_xr < anchorX || anchorY < bounds_yt || bounds_yb < anchorY)) {
                            return false
                        }
                        if (!this._root) {
                            this._draw()
                        }
                        const shadowSettings = (0, _extend.extend)({
                            x: "-50%",
                            y: "-50%",
                            width: "200%",
                            height: "200%"
                        }, options.shadow);
                        const contentWidth = options.width > 0 ? options.width : null;
                        const contentHeight = options.height > 0 ? options.height : null;
                        const onRender = () => {
                            var _this$_root;
                            const bBox = this._contentBBox = this.measureContent(this.widget, this._contentGroup);
                            const size = this._size = {
                                width: max(contentWidth, bBox.width) + 2 * options.paddingLeftRight,
                                height: max(contentHeight, bBox.height) + 2 * options.paddingTopBottom,
                                offset: offset
                            };
                            const xOff = shadowSettings.offsetX;
                            const yOff = shadowSettings.offsetY;
                            const blur = 2 * shadowSettings.blur + 1;
                            const lm = max(blur - xOff, 0);
                            const rm = max(blur + xOff, 0);
                            const tm = max(blur - yOff, 0);
                            const bm = max(blur + yOff, 0);
                            this.margins = {
                                lm: lm,
                                rm: rm,
                                tm: tm,
                                bm: bm
                            };
                            if (!(0, _type.isDefined)(x)) {
                                if ((0, _type.isDefined)(offsetX)) {
                                    x = anchorX + offsetX
                                } else if (bounds_width < size.width) {
                                    x = round(bounds_xl + bounds_width / 2)
                                } else {
                                    x = min(max(anchorX, Math.ceil(bounds_xl + size.width / 2 + lm)), Math.floor(bounds_xr - size.width / 2 - rm))
                                }
                            } else {
                                x += offsetX || 0;
                                if (!(0, _type.isDefined)(anchorX)) {
                                    anchorX = x
                                }
                            }
                            if (!(0, _type.isDefined)(y)) {
                                if ((0, _type.isDefined)(offsetY)) {
                                    y = anchorY + offsetY
                                } else {
                                    const y_top = anchorY - options.arrowLength - size.height / 2 - offset;
                                    const y_bottom = anchorY + options.arrowLength + size.height / 2 + offset;
                                    if (bounds_height < size.height + options.arrowLength) {
                                        y = round(bounds_yt + size.height / 2)
                                    } else if (y_top - size.height / 2 - tm < bounds_yt) {
                                        if (y_bottom + size.height / 2 + bm < bounds_yb) {
                                            y = y_bottom;
                                            anchorY += offset
                                        } else {
                                            y = round(bounds_yt + size.height / 2)
                                        }
                                    } else {
                                        y = y_top;
                                        anchorY -= offset
                                    }
                                }
                            } else {
                                y += offsetY || 0;
                                if (!(0, _type.isDefined)(anchorY)) {
                                    anchorY = y + size.height / 2
                                }
                            }
                            this.anchorX = anchorX;
                            this.anchorY = anchorY;
                            this.move(x, y);
                            null === (_this$_root = this._root) || void 0 === _this$_root ? void 0 : _this$_root.append(this.root)
                        };
                        if (this.contentTemplate.render) {
                            this.contentTemplate.render({
                                model: options,
                                container: this._contentGroup.element,
                                onRendered: onRender
                            })
                        } else {
                            return this.contentTemplate(_extends({
                                group: this._contentGroup,
                                onRender: onRender
                            }, restProps))
                        }
                        return true
                    };
                    _proto._draw = function() {
                        const renderer = this.widget._renderer;
                        const options = this.options;
                        const shadowSettings = (0, _extend.extend)({
                            x: "-50%",
                            y: "-50%",
                            width: "200%",
                            height: "200%"
                        }, options.shadow);
                        const shadow = this._shadow = renderer.shadowFilter().attr(shadowSettings);
                        const cloudSettings = {
                            opacity: options.opacity,
                            "stroke-width": 0,
                            fill: options.color
                        };
                        const borderOptions = options.border || {};
                        if (borderOptions.visible) {
                            (0, _extend.extend)(cloudSettings, {
                                "stroke-width": borderOptions.width,
                                stroke: borderOptions.color,
                                "stroke-opacity": borderOptions.opacity,
                                dashStyle: borderOptions.dashStyle
                            })
                        }
                        const group = this._root = renderer.g().append(this.root);
                        if (options.type) {
                            group.attr({
                                class: "dxc-".concat(options.type, "-annotation")
                            })
                        }
                        const cloudGroup = renderer.g().attr({
                            filter: shadow.id
                        }).append(group);
                        this._cloud = renderer.path([], "area").attr(cloudSettings).sharp().append(cloudGroup);
                        this._contentGroup = renderer.g().append(group)
                    };
                    _proto.getBBox = function() {
                        const size = this._size || {};
                        const margins = this.margins || {};
                        const rotationAngle = getCloudAngle(size, this.x, this.y, this.anchorX, this.anchorY);
                        return {
                            x: Math.floor(this.x - size.width / 2 - margins.lm),
                            y: Math.floor(this.y - size.height / 2 - margins.tm - (270 === rotationAngle ? this.options.arrowLength : 0)),
                            width: size.width + margins.lm + margins.rm,
                            height: size.height + margins.tm + margins.bm + (90 === rotationAngle || 270 === rotationAngle ? this.options.arrowLength : 0)
                        }
                    };
                    _proto.clear = function() {
                        if (this._root) {
                            this._root.remove();
                            this._shadow.remove();
                            this._root = null
                        }
                        return this
                    };
                    _proto.customizeCloud = function(attr) {
                        if (this._cloud) {
                            this._cloud.attr(attr)
                        }
                    };
                    _proto.moveRoot = function(x, y) {
                        if (this._root) {
                            this._root.move(x, y)
                        }
                    };
                    _proto.move = function(x, y) {
                        x = round(x);
                        y = round(y);
                        this.x = x;
                        this.y = y;
                        const rotationAngle = getCloudAngle(this._size, x, y, this.anchorX, this.anchorY);
                        const radRotationAngle = rotationAngle * PI / 180;
                        this._cloud.attr({
                            d: getCloudPoints(rotateSize(this._size, rotationAngle), x, y, rotateX(this.anchorX, this.anchorY, radRotationAngle, x, y), rotateY(this.anchorX, this.anchorY, radRotationAngle, x, y), this.options, this.bonded)
                        }).rotate(rotationAngle, x, y);
                        this.moveContentGroup(this.widget, this._contentGroup, x - this._contentBBox.x - this._contentBBox.width / 2, y - this._contentBBox.y - this._contentBBox.height / 2)
                    };
                    _proto.hitTest = function(x, y) {
                        const {
                            width: width,
                            height: height
                        } = this._size || {};
                        return Math.abs(x - this.x) <= width / 2 && Math.abs(y - this.y) <= height / 2
                    };
                    return Plaque
                }();
                exports.Plaque = Plaque
            },
        91577:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/renderers/animation.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.AnimationController = AnimationController;
                exports.easingFunctions = exports.animationSvgStep = void 0;
                var _frame = __webpack_require__( /*! ../../../animation/frame */ 90057);
                const noop = function() {};
                const easingFunctions = {
                    easeOutCubic: function(pos, start, end) {
                        return 1 === pos ? end : (1 - Math.pow(1 - pos, 3)) * (end - start) + +start
                    },
                    linear: function(pos, start, end) {
                        return 1 === pos ? end : pos * (end - start) + +start
                    }
                };
                exports.easingFunctions = easingFunctions;
                const animationSvgStep = {
                    segments: function(elem, params, progress, easing, currentParams) {
                        const from = params.from;
                        const to = params.to;
                        let curSeg;
                        let seg;
                        let i;
                        let j;
                        const segments = [];
                        for (i = 0; i < from.length; i++) {
                            curSeg = from[i];
                            seg = [curSeg[0]];
                            if (curSeg.length > 1) {
                                for (j = 1; j < curSeg.length; j++) {
                                    seg.push(easing(progress, curSeg[j], to[i][j]))
                                }
                            }
                            segments.push(seg)
                        }
                        currentParams.segments = params.end && 1 === progress ? params.end : segments;
                        elem.attr({
                            segments: segments
                        })
                    },
                    arc: function(elem, params, progress, easing) {
                        const from = params.from;
                        const to = params.to;
                        const current = {};
                        for (const i in from) {
                            current[i] = easing(progress, from[i], to[i])
                        }
                        elem.attr(current)
                    },
                    transform: function(elem, params, progress, easing, currentParams) {
                        const from = params.from;
                        const to = params.to;
                        const current = {};
                        for (const i in from) {
                            current[i] = currentParams[i] = easing(progress, from[i], to[i])
                        }
                        elem.attr(current)
                    },
                    base: function(elem, params, progress, easing, currentParams, attributeName) {
                        const obj = {};
                        obj[attributeName] = currentParams[attributeName] = easing(progress, params.from, params.to);
                        elem.attr(obj)
                    },
                    _: noop,
                    complete: function(element, currentSettings) {
                        element.attr(currentSettings)
                    }
                };
                exports.animationSvgStep = animationSvgStep;

                function step(now) {
                    const that = this;
                    const animateStep = that._animateStep;
                    let attrName;
                    that._progress = that._calcProgress(now);
                    for (attrName in that.params) {
                        const anim = animateStep[attrName] || animateStep.base;
                        anim(that.element, that.params[attrName], that._progress, that._easing, that._currentParams, attrName)
                    }
                    that.options.step && that.options.step(that._easing(that._progress, 0, 1), that._progress);
                    if (1 === that._progress) {
                        return that.stop()
                    }
                    return true
                }

                function delayTick(now) {
                    if (now - this._startTime >= this.delay) {
                        this.tick = step
                    }
                    return true
                }

                function start(now) {
                    this._startTime = now;
                    this.tick = this.delay ? delayTick : step;
                    return true
                }

                function Animation(element, params, options) {
                    this._progress = 0;
                    this.element = element;
                    this.params = params;
                    this.options = options;
                    this.duration = options.partitionDuration ? options.duration * options.partitionDuration : options.duration;
                    this.delay = options.delay && options.duration * options.delay || 0;
                    this._animateStep = options.animateStep || animationSvgStep;
                    this._easing = easingFunctions[options.easing] || easingFunctions.easeOutCubic;
                    this._currentParams = {};
                    this.tick = start
                }
                Animation.prototype = {
                    _calcProgress: function(now) {
                        return Math.min(1, (now - this.delay - this._startTime) / this.duration)
                    },
                    stop: function(disableComplete) {
                        const options = this.options;
                        const animateStep = this._animateStep;
                        this.stop = this.tick = noop;
                        animateStep.complete && animateStep.complete(this.element, this._currentParams);
                        options.complete && !disableComplete && options.complete()
                    }
                };

                function AnimationController(element) {
                    this._animationCount = 0;
                    this._timerId = null;
                    this._animations = {};
                    this.element = element
                }
                AnimationController.prototype = {
                    _loop: function() {
                        const that = this;
                        const animations = that._animations;
                        let activeAnimation = 0;
                        const now = (new Date).getTime();
                        let an;
                        const endAnimation = that._endAnimation;
                        for (an in animations) {
                            if (!animations[an].tick(now)) {
                                delete animations[an]
                            }
                            activeAnimation++
                        }
                        if (0 === activeAnimation) {
                            that.stop();
                            that._endAnimationTimer = endAnimation && setTimeout((function() {
                                if (0 === that._animationCount) {
                                    endAnimation();
                                    that._endAnimation = null
                                }
                            }));
                            return
                        }
                        that._timerId = _frame.requestAnimationFrame.call(null, (function() {
                            that._loop()
                        }), that.element)
                    },
                    addAnimation: function(animation) {
                        const that = this;
                        that._animations[that._animationCount++] = animation;
                        clearTimeout(that._endAnimationTimer);
                        if (!that._timerId) {
                            clearTimeout(that._startDelay);
                            that._startDelay = setTimeout((function() {
                                that._timerId = 1;
                                that._loop()
                            }), 0)
                        }
                    },
                    animateElement: function(elem, params, options) {
                        if (elem && params && options) {
                            elem.animation && elem.animation.stop();
                            this.addAnimation(elem.animation = new Animation(elem, params, options))
                        }
                    },
                    onEndAnimation: function(endAnimation) {
                        this._animationCount ? this._endAnimation = endAnimation : endAnimation()
                    },
                    dispose: function() {
                        this.stop();
                        this.element = null
                    },
                    stop: function() {
                        this._animations = {};
                        this._animationCount = 0;
                        (0, _frame.cancelAnimationFrame)(this._timerId);
                        clearTimeout(this._startDelay);
                        clearTimeout(this._endAnimationTimer);
                        this._timerId = null
                    },
                    lock: function() {
                        let an;
                        const animations = this._animations;
                        let unstoppable;
                        let hasUnstoppableInAnimations;
                        for (an in animations) {
                            unstoppable = animations[an].options.unstoppable;
                            hasUnstoppableInAnimations = hasUnstoppableInAnimations || unstoppable;
                            if (!unstoppable) {
                                animations[an].stop(true);
                                delete animations[an]
                            }
                        }!hasUnstoppableInAnimations && this.stop()
                    }
                }
            },
        56453:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/renderers/renderer.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.RectSvgElement = exports.PathSvgElement = exports.ArcSvgElement = void 0;
                exports.Renderer = Renderer;
                exports.TextSvgElement = exports.SvgElement = void 0;
                exports.getFuncIri = getFuncIri;
                exports.processHatchingAttrs = processHatchingAttrs;
                exports.refreshPaths = void 0;
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../../core/renderer */ 68374));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../../core/dom_adapter */ 73349));
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 58201);
                var _call_once = _interopRequireDefault(__webpack_require__( /*! ../../../core/utils/call_once */ 39618));
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../../events/core/events_engine */ 55994));
                var _svg = __webpack_require__( /*! ../../../core/utils/svg */ 19155);
                var _animation = __webpack_require__( /*! ./animation */ 91577);
                var _utils = __webpack_require__( /*! ../utils */ 19157);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();
                const {
                    max: max,
                    round: round
                } = Math;
                const pxAddingExceptions = {
                    "column-count": true,
                    "fill-opacity": true,
                    "flex-grow": true,
                    "flex-shrink": true,
                    "font-weight": true,
                    "line-height": true,
                    opacity: true,
                    order: true,
                    orphans: true,
                    widows: true,
                    "z-index": true,
                    zoom: true
                };
                const NONE = "none";
                const objectCreate = function() {
                    if (!Object.create) {
                        return function(proto) {
                            const F = function() {};
                            F.prototype = proto;
                            return new F
                        }
                    } else {
                        return function(proto) {
                            return Object.create(proto)
                        }
                    }
                }();
                const DEFAULTS = {
                    scaleX: 1,
                    scaleY: 1,
                    "pointer-events": null
                };
                const getBackup = (0, _call_once.default)((function() {
                    const backupContainer = _dom_adapter.default.createElement("div");
                    backupContainer.style.left = "-9999px";
                    backupContainer.style.position = "absolute";
                    return {
                        backupContainer: backupContainer,
                        backupCounter: 0
                    }
                }));

                function isObjectArgument(value) {
                    return value && "string" !== typeof value
                }

                function createElement(tagName) {
                    return _dom_adapter.default.createElementNS("http://www.w3.org/2000/svg", tagName)
                }

                function getFuncIri(id, pathModified) {
                    return null !== id ? "url(" + (pathModified ? window.location.href.split("#")[0] : "") + "#" + id + ")" : id
                }

                function extend(target, source) {
                    let key;
                    for (key in source) {
                        target[key] = source[key]
                    }
                    return target
                }
                const preserveAspectRatioMap = {
                    full: NONE,
                    lefttop: "xMinYMin",
                    leftcenter: "xMinYMid",
                    leftbottom: "xMinYMax",
                    centertop: "xMidYMin",
                    center: "xMidYMid",
                    centerbottom: "xMidYMax",
                    righttop: "xMaxYMin",
                    rightcenter: "xMaxYMid",
                    rightbottom: "xMaxYMax"
                };

                function processHatchingAttrs(element, attrs) {
                    if (attrs.hatching && "none" !== (0, _utils.normalizeEnum)(attrs.hatching.direction)) {
                        attrs = extend({}, attrs);
                        attrs.fill = element._hatching = element.renderer.lockDefsElements({
                            color: attrs.fill,
                            hatching: attrs.hatching
                        }, element._hatching, "pattern");
                        delete attrs.filter
                    } else if (element._hatching) {
                        element.renderer.releaseDefsElements(element._hatching);
                        element._hatching = null;
                        delete attrs.filter
                    } else if (attrs.filter) {
                        attrs = extend({}, attrs);
                        attrs.filter = element._filter = element.renderer.lockDefsElements({}, element._filter, "filter")
                    } else if (element._filter) {
                        element.renderer.releaseDefsElements(element._filter);
                        element._filter = null
                    }
                    delete attrs.hatching;
                    return attrs
                }
                const buildArcPath = function(x, y, innerR, outerR, startAngleCos, startAngleSin, endAngleCos, endAngleSin, isCircle, longFlag) {
                    return ["M", (x + outerR * startAngleCos).toFixed(5), (y - outerR * startAngleSin).toFixed(5), "A", outerR.toFixed(5), outerR.toFixed(5), 0, longFlag, 0, (x + outerR * endAngleCos).toFixed(5), (y - outerR * endAngleSin).toFixed(5), isCircle ? "M" : "L", (x + innerR * endAngleCos).toFixed(5), (y - innerR * endAngleSin).toFixed(5), "A", innerR.toFixed(5), innerR.toFixed(5), 0, longFlag, 1, (x + innerR * startAngleCos).toFixed(5), (y - innerR * startAngleSin).toFixed(5), "Z"].join(" ")
                };

                function buildPathSegments(points, type) {
                    let list = [
                        ["M", 0, 0]
                    ];
                    switch (type) {
                        case "line":
                            list = buildLineSegments(points);
                            break;
                        case "area":
                            list = buildLineSegments(points, true);
                            break;
                        case "bezier":
                            list = buildCurveSegments(points);
                            break;
                        case "bezierarea":
                            list = buildCurveSegments(points, true)
                    }
                    return list
                }

                function buildLineSegments(points, close) {
                    return buildSegments(points, buildSimpleLineSegment, close)
                }

                function buildCurveSegments(points, close) {
                    return buildSegments(points, buildSimpleCurveSegment, close)
                }

                function buildSegments(points, buildSimpleSegment, close) {
                    var _points$;
                    let i;
                    let ii;
                    const list = [];
                    if (null !== (_points$ = points[0]) && void 0 !== _points$ && _points$.length) {
                        for (i = 0, ii = points.length; i < ii; ++i) {
                            buildSimpleSegment(points[i], close, list)
                        }
                    } else {
                        buildSimpleSegment(points, close, list)
                    }
                    return list
                }

                function buildSimpleLineSegment(points, close, list) {
                    let i = 0;
                    const k0 = list.length;
                    let k = k0;
                    const ii = (points || []).length;
                    if (ii) {
                        if (void 0 !== points[0].x) {
                            for (; i < ii;) {
                                list[k++] = ["L", points[i].x, points[i++].y]
                            }
                        } else {
                            for (; i < ii;) {
                                list[k++] = ["L", points[i++], points[i++]]
                            }
                        }
                        list[k0][0] = "M"
                    } else {
                        list[k] = ["M", 0, 0]
                    }
                    close && list.push(["Z"]);
                    return list
                }

                function buildSimpleCurveSegment(points, close, list) {
                    let i;
                    let k = list.length;
                    const ii = (points || []).length;
                    if (ii) {
                        if (void 0 !== points[0].x) {
                            list[k++] = ["M", points[0].x, points[0].y];
                            for (i = 1; i < ii;) {
                                list[k++] = ["C", points[i].x, points[i++].y, points[i].x, points[i++].y, points[i].x, points[i++].y]
                            }
                        } else {
                            list[k++] = ["M", points[0], points[1]];
                            for (i = 2; i < ii;) {
                                list[k++] = ["C", points[i++], points[i++], points[i++], points[i++], points[i++], points[i++]]
                            }
                        }
                    } else {
                        list[k] = ["M", 0, 0]
                    }
                    close && list.push(["Z"]);
                    return list
                }

                function prepareConstSegment(constSeg, type) {
                    const x = constSeg[constSeg.length - 2];
                    const y = constSeg[constSeg.length - 1];
                    switch (type) {
                        case "line":
                        case "area":
                            constSeg[0] = "L";
                            break;
                        case "bezier":
                        case "bezierarea":
                            constSeg[0] = "C";
                            constSeg[1] = constSeg[3] = constSeg[5] = x;
                            constSeg[2] = constSeg[4] = constSeg[6] = y
                    }
                }

                function makeEqualLineSegments(short, long, type) {
                    const constSeg = short[short.length - 1].slice();
                    let i = short.length;
                    prepareConstSegment(constSeg, type);
                    for (; i < long.length; i++) {
                        short[i] = constSeg.slice(0)
                    }
                }

                function makeEqualAreaSegments(short, long, type) {
                    let i;
                    let head;
                    const shortLength = short.length;
                    const longLength = long.length;
                    let constsSeg1;
                    let constsSeg2;
                    if ((shortLength - 1) % 2 === 0 && (longLength - 1) % 2 === 0) {
                        i = (shortLength - 1) / 2 - 1;
                        head = short.slice(0, i + 1);
                        constsSeg1 = head[head.length - 1].slice(0);
                        constsSeg2 = short.slice(i + 1)[0].slice(0);
                        prepareConstSegment(constsSeg1, type);
                        prepareConstSegment(constsSeg2, type);
                        for (let j = i; j < (longLength - 1) / 2 - 1; j++) {
                            short.splice(j + 1, 0, constsSeg1);
                            short.splice(j + 3, 0, constsSeg2)
                        }
                    }
                }

                function baseCss(that, styles) {
                    const elemStyles = that._styles;
                    let key;
                    let value;
                    styles = styles || {};
                    for (key in styles) {
                        value = styles[key];
                        if ((0, _type.isDefined)(value)) {
                            value += "number" === typeof value && !pxAddingExceptions[key] ? "px" : "";
                            elemStyles[key] = "" !== value ? value : null
                        }
                    }
                    for (key in elemStyles) {
                        value = elemStyles[key];
                        if (value) {
                            that.element.style[key] = value
                        } else if (null === value) {
                            that.element.style[key] = ""
                        }
                    }
                    return that
                }

                function fixFuncIri(wrapper, attribute) {
                    const element = wrapper.element;
                    const id = wrapper.attr(attribute);
                    if (id && -1 !== id.indexOf("DevExpress")) {
                        element.removeAttribute(attribute);
                        element.setAttribute(attribute, getFuncIri(id, wrapper.renderer.pathModified))
                    }
                }

                function baseAttr(that, attrs) {
                    attrs = attrs || {};
                    const settings = that._settings;
                    const attributes = {};
                    let key;
                    let value;
                    const elem = that.element;
                    const renderer = that.renderer;
                    const rtl = renderer.rtl;
                    let hasTransformations;
                    let recalculateDashStyle;
                    let sw;
                    let i;
                    if (!isObjectArgument(attrs)) {
                        if (attrs in settings) {
                            return settings[attrs]
                        }
                        if (attrs in DEFAULTS) {
                            return DEFAULTS[attrs]
                        }
                        return 0
                    }
                    extend(attributes, attrs);
                    for (key in attributes) {
                        value = attributes[key];
                        if (void 0 === value) {
                            continue
                        }
                        settings[key] = value;
                        if ("align" === key) {
                            key = "text-anchor";
                            value = {
                                left: rtl ? "end" : "start",
                                center: "middle",
                                right: rtl ? "start" : "end"
                            } [value] || null
                        } else if ("dashStyle" === key) {
                            recalculateDashStyle = true;
                            continue
                        } else if ("stroke-width" === key) {
                            recalculateDashStyle = true
                        } else if (value && ("fill" === key || "clip-path" === key || "filter" === key) && 0 === value.indexOf("DevExpress")) {
                            that._addFixIRICallback();
                            value = getFuncIri(value, renderer.pathModified)
                        } else if (/^(translate(X|Y)|rotate[XY]?|scale(X|Y)|sharp|sharpDirection)$/i.test(key)) {
                            hasTransformations = true;
                            continue
                        } else if (/^(x|y|d)$/i.test(key)) {
                            hasTransformations = true
                        }
                        if (null === value) {
                            elem.removeAttribute(key)
                        } else {
                            elem.setAttribute(key, value)
                        }
                    }
                    if (recalculateDashStyle && "dashStyle" in settings) {
                        value = settings.dashStyle;
                        sw = ("_originalSW" in that ? that._originalSW : settings["stroke-width"]) || 1;
                        key = "stroke-dasharray";
                        value = null === value ? "" : (0, _utils.normalizeEnum)(value);
                        if ("" === value || "solid" === value || value === NONE) {
                            that.element.removeAttribute(key)
                        } else {
                            value = value.replace(/longdash/g, "8,3,").replace(/dash/g, "4,3,").replace(/dot/g, "1,3,").replace(/,$/, "").split(",");
                            i = value.length;
                            while (i--) {
                                value[i] = parseInt(value[i]) * sw
                            }
                            that.element.setAttribute(key, value.join(","))
                        }
                    }
                    if (hasTransformations) {
                        that._applyTransformation()
                    }
                    return that
                }

                function createTspans(items, element, fieldName) {
                    let i;
                    let ii;
                    let item;
                    for (i = 0, ii = items.length; i < ii; ++i) {
                        item = items[i];
                        item[fieldName] = createElement("tspan");
                        item[fieldName].appendChild(_dom_adapter.default.createTextNode(item.value));
                        item.style && baseCss({
                            element: item[fieldName],
                            _styles: {}
                        }, item.style);
                        item.className && item[fieldName].setAttribute("class", item.className);
                        element.appendChild(item[fieldName])
                    }
                }

                function restoreText() {
                    if (this._hasEllipsis) {
                        this.attr({
                            text: this._settings.text
                        })
                    }
                }

                function cloneAndRemoveAttrs(node) {
                    let clone;
                    if (node) {
                        clone = node.cloneNode();
                        clone.removeAttribute("y");
                        clone.removeAttribute("x")
                    }
                    return clone || node
                }

                function detachTitleElements(element) {
                    const titleElements = _dom_adapter.default.querySelectorAll(element, "title");
                    for (let i = 0; i < titleElements.length; i++) {
                        element.removeChild(titleElements[i])
                    }
                    return titleElements
                }

                function detachAndStoreTitleElements(element) {
                    const titleElements = detachTitleElements(element);
                    return () => {
                        for (let i = 0; i < titleElements.length; i++) {
                            element.appendChild(titleElements[i])
                        }
                    }
                }

                function getIndexForEllipsis(text, maxWidth, startBox, endBox) {
                    let k;
                    let kk;
                    if (startBox <= maxWidth && endBox > maxWidth) {
                        for (k = 1, kk = text.value.length; k <= kk; ++k) {
                            if (startBox + text.tspan.getSubStringLength(0, k) > maxWidth) {
                                return k - 1
                            }
                        }
                    }
                }

                function getTextWidth(text) {
                    return text.value.length ? text.tspan.getSubStringLength(0, text.value.length) : 0
                }

                function getEllipsisString(ellipsisMaxWidth, _ref) {
                    let {
                        hideOverflowEllipsis: hideOverflowEllipsis
                    } = _ref;
                    return hideOverflowEllipsis && 0 === ellipsisMaxWidth ? "" : "..."
                }

                function setEllipsis(text, ellipsisMaxWidth, options) {
                    const ellipsis = getEllipsisString(ellipsisMaxWidth, options);
                    if (text.value.length && text.tspan.parentNode) {
                        for (let i = text.value.length - 1; i >= 1; i--) {
                            if (text.startBox + text.tspan.getSubStringLength(0, i) < ellipsisMaxWidth) {
                                setNewText(text, i, ellipsis);
                                break
                            } else if (1 === i) {
                                setNewText(text, 0, ellipsis)
                            }
                        }
                    }
                }

                function setMaxHeight(lines, ellipsisMaxWidth, options, maxHeight, lineHeight) {
                    const textOverflow = options.textOverflow;
                    if (!isFinite(maxHeight) || 0 === Number(maxHeight) || "none" === textOverflow) {
                        return lines
                    }
                    const result = lines.reduce((_ref2, l, index, arr) => {
                        let [lines, commonHeight] = _ref2;
                        const height = function(line, lineHeight) {
                            return line.parts.reduce((height, text) => max(height, getItemLineHeight(text, lineHeight)), 0)
                        }(l, lineHeight);
                        commonHeight += height;
                        if (commonHeight < maxHeight) {
                            lines.push(l)
                        } else {
                            l.parts.forEach(item => {
                                removeTextSpan(item)
                            });
                            if ("ellipsis" === textOverflow) {
                                const prevLine = arr[index - 1];
                                if (prevLine) {
                                    const text = prevLine.parts[prevLine.parts.length - 1];
                                    if (!text.hasEllipsis) {
                                        if (0 === ellipsisMaxWidth || text.endBox < ellipsisMaxWidth) {
                                            setNewText(text, text.value.length, getEllipsisString(ellipsisMaxWidth, options))
                                        } else {
                                            setEllipsis(text, ellipsisMaxWidth, options)
                                        }
                                    }
                                }
                            }
                        }
                        return [lines, commonHeight]
                    }, [
                        [], 0
                    ]);
                    if ("hide" === textOverflow && result[1] > maxHeight) {
                        result[0].forEach(l => {
                            l.parts.forEach(item => {
                                removeTextSpan(item)
                            })
                        });
                        return []
                    }
                    return result[0]
                }

                function applyOverflowRules(element, texts, maxWidth, ellipsisMaxWidth, options) {
                    if (!texts) {
                        const textValue = element.textContent;
                        const text = {
                            value: textValue,
                            height: 0,
                            line: 0
                        };
                        element.textContent = "";
                        createTspans([text], element, "tspan");
                        texts = [text]
                    }
                    return texts.reduce((_ref3, text) => {
                        let [lines, startBox, endBox, stop, lineNumber] = _ref3;
                        const line = lines[lines.length - 1];
                        if (stop) {
                            return [lines, startBox, endBox, stop]
                        }
                        if (!line || text.line !== lineNumber) {
                            text.startBox = startBox = 0;
                            lines.push({
                                commonLength: text.value.length,
                                parts: [text]
                            })
                        } else {
                            text.startBox = startBox;
                            if (startBox > ellipsisMaxWidth && "none" === options.wordWrap && "ellipsis" === options.textOverflow) {
                                removeTextSpan(text);
                                return [lines, startBox, endBox, stop, lineNumber]
                            }
                            line.parts.push(text);
                            line.commonLength += text.value.length
                        }
                        text.endBox = endBox = startBox + getTextWidth(text);
                        startBox = endBox;
                        if ((0, _type.isDefined)(maxWidth) && endBox > maxWidth) {
                            const wordWrapLines = function wordWrap(text, maxWidth, ellipsisMaxWidth, options, lastStepBreakIndex) {
                                const wholeText = text.value;
                                let breakIndex;
                                if ("none" !== options.wordWrap) {
                                    breakIndex = "normal" === options.wordWrap ? function(text, maxWidth) {
                                        const initialIndices = text.startBox > 0 ? [0] : [];
                                        const spaceIndices = text.value.split("").reduce((indices, char, index) => {
                                            if (" " === char) {
                                                indices.push(index)
                                            }
                                            return indices
                                        }, initialIndices);
                                        let spaceIndex = 0;
                                        while (void 0 !== spaceIndices[spaceIndex + 1] && text.startBox + text.tspan.getSubStringLength(0, spaceIndices[spaceIndex + 1]) < maxWidth) {
                                            spaceIndex++
                                        }
                                        return spaceIndices[spaceIndex]
                                    }(text, maxWidth) : function(text, maxWidth) {
                                        for (let i = 0; i < text.value.length - 1; i++) {
                                            if (text.startBox + text.tspan.getSubStringLength(0, i + 1) > maxWidth) {
                                                return i
                                            }
                                        }
                                    }(text, maxWidth)
                                }
                                let restLines = [];
                                let restText;
                                if (isFinite(breakIndex) && !(0 === lastStepBreakIndex && 0 === breakIndex)) {
                                    setNewText(text, breakIndex, "");
                                    const newTextOffset = " " === wholeText[breakIndex] ? 1 : 0;
                                    const restString = wholeText.slice(breakIndex + newTextOffset);
                                    if (restString.length) {
                                        const restTspan = cloneAndRemoveAttrs(text.tspan);
                                        restTspan.textContent = restString;
                                        text.tspan.parentNode.appendChild(restTspan);
                                        restText = extend(extend({}, text), {
                                            value: restString,
                                            startBox: 0,
                                            height: 0,
                                            tspan: restTspan,
                                            stroke: cloneAndRemoveAttrs(text.stroke),
                                            endBox: restTspan.getSubStringLength(0, restString.length)
                                        });
                                        restText.stroke && (restText.stroke.textContent = restString);
                                        if (restText.endBox > maxWidth) {
                                            restLines = wordWrap(restText, maxWidth, ellipsisMaxWidth, options, breakIndex);
                                            if (!restLines.length) {
                                                return []
                                            }
                                        }
                                    }
                                }
                                if (text.value.length) {
                                    if ("ellipsis" === options.textOverflow && text.tspan.getSubStringLength(0, text.value.length) > maxWidth) {
                                        setEllipsis(text, ellipsisMaxWidth, options)
                                    }
                                    if ("hide" === options.textOverflow && text.tspan.getSubStringLength(0, text.value.length) > maxWidth) {
                                        return []
                                    }
                                } else {
                                    text.tspan.parentNode.removeChild(text.tspan)
                                }
                                const parts = [];
                                if (restText) {
                                    parts.push(restText)
                                }
                                return [{
                                    commonLength: wholeText.length,
                                    parts: parts
                                }].concat(restLines)
                            }(text, maxWidth, ellipsisMaxWidth, options);
                            if (!wordWrapLines.length) {
                                lines = [];
                                stop = true
                            } else {
                                lines = lines.concat(wordWrapLines.filter(l => l.parts.length > 0))
                            }
                        }
                        return [lines, startBox, endBox, stop, text.line]
                    }, [
                        [], 0, 0, false, 0
                    ])[0]
                }

                function setNewText(text, index) {
                    let insertString = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "...";
                    const newText = text.value.substr(0, index) + insertString;
                    text.value = text.tspan.textContent = newText;
                    text.stroke && (text.stroke.textContent = newText);
                    if ("..." === insertString) {
                        text.hasEllipsis = true
                    }
                }

                function removeTextSpan(text) {
                    text.tspan.parentNode && text.tspan.parentNode.removeChild(text.tspan);
                    text.stroke && text.stroke.parentNode && text.stroke.parentNode.removeChild(text.stroke)
                }

                function setTextNodeAttribute(item, name, value) {
                    item.tspan.setAttribute(name, value);
                    item.stroke && item.stroke.setAttribute(name, value)
                }

                function getItemLineHeight(item, defaultValue) {
                    return item.inherits ? maxLengthFontSize(item.height, defaultValue) : item.height || defaultValue
                }

                function locateTextNodes(wrapper) {
                    if (!wrapper._texts) {
                        return
                    }
                    const items = wrapper._texts;
                    const x = wrapper._settings.x;
                    const lineHeight = wrapper._getLineHeight();
                    let i;
                    let ii;
                    let item = items[0];
                    setTextNodeAttribute(item, "x", x);
                    setTextNodeAttribute(item, "y", wrapper._settings.y);
                    for (i = 1, ii = items.length; i < ii; ++i) {
                        item = items[i];
                        if (parseFloat(item.height) >= 0) {
                            setTextNodeAttribute(item, "x", x);
                            const height = getItemLineHeight(item, lineHeight);
                            setTextNodeAttribute(item, "dy", height)
                        }
                    }
                }

                function maxLengthFontSize(fontSize1, fontSize2) {
                    const parsedHeight1 = parseFloat(fontSize1);
                    const parsedHeight2 = parseFloat(fontSize2);
                    const height1 = parsedHeight1 || 12;
                    const height2 = parsedHeight2 || 12;
                    return height1 > height2 ? !isNaN(parsedHeight1) ? fontSize1 : height1 : !isNaN(parsedHeight2) ? fontSize2 : height2
                }

                function baseAnimate(that, params, options, complete) {
                    options = options || {};
                    let key;
                    let value;
                    const renderer = that.renderer;
                    const settings = that._settings;
                    const animationParams = {};
                    const defaults = {
                        translateX: 0,
                        translateY: 0,
                        scaleX: 1,
                        scaleY: 1,
                        rotate: 0,
                        rotateX: 0,
                        rotateY: 0
                    };
                    if (complete) {
                        options.complete = complete
                    }
                    if (renderer.animationEnabled()) {
                        for (key in params) {
                            value = params[key];
                            if (/^(translate(X|Y)|rotate[XY]?|scale(X|Y))$/i.test(key)) {
                                animationParams.transform = animationParams.transform || {
                                    from: {},
                                    to: {}
                                };
                                animationParams.transform.from[key] = key in settings ? Number(settings[key].toFixed(3)) : defaults[key];
                                animationParams.transform.to[key] = value
                            } else if ("arc" === key || "segments" === key) {
                                animationParams[key] = value
                            } else {
                                animationParams[key] = {
                                    from: key in settings ? settings[key] : parseFloat(that.element.getAttribute(key) || 0),
                                    to: value
                                }
                            }
                        }
                        renderer.animateElement(that, animationParams, extend(extend({}, renderer._animation), options))
                    } else {
                        options.step && options.step.call(that, 1, 1);
                        options.complete && options.complete.call(that);
                        that.attr(params)
                    }
                    return that
                }

                function buildLink(target, parameters) {
                    const obj = {
                        is: false,
                        name: parameters.name || parameters,
                        after: parameters.after
                    };
                    if (target) {
                        obj.to = target
                    } else {
                        obj.virtual = true
                    }
                    return obj
                }
                let SvgElement = function(renderer, tagName, type) {
                    const that = this;
                    that.renderer = renderer;
                    that.element = createElement(tagName);
                    that._settings = {};
                    that._styles = {};
                    if ("path" === tagName) {
                        that.type = type || "line"
                    }
                };
                exports.SvgElement = SvgElement;

                function removeFuncIriCallback(callback) {
                    fixFuncIriCallbacks.remove(callback)
                }
                SvgElement.prototype = {
                    constructor: SvgElement,
                    _getJQElement: function() {
                        return this._$element || (this._$element = (0, _renderer.default)(this.element))
                    },
                    _addFixIRICallback: function() {
                        const that = this;
                        const fn = function() {
                            fixFuncIri(that, "fill");
                            fixFuncIri(that, "clip-path");
                            fixFuncIri(that, "filter")
                        };
                        that.element._fixFuncIri = fn;
                        fn.renderer = that.renderer;
                        fixFuncIriCallbacks.add(fn);
                        that._addFixIRICallback = function() {}
                    },
                    _clearChildrenFuncIri: function() {
                        const clearChildren = function(element) {
                            let i;
                            for (i = 0; i < element.childNodes.length; i++) {
                                removeFuncIriCallback(element.childNodes[i]._fixFuncIri);
                                clearChildren(element.childNodes[i])
                            }
                        };
                        clearChildren(this.element)
                    },
                    dispose: function() {
                        removeFuncIriCallback(this.element._fixFuncIri);
                        this._clearChildrenFuncIri();
                        this._getJQElement().remove();
                        return this
                    },
                    append: function(parent) {
                        (parent || this.renderer.root).element.appendChild(this.element);
                        return this
                    },
                    remove: function() {
                        const element = this.element;
                        element.parentNode && element.parentNode.removeChild(element);
                        return this
                    },
                    enableLinks: function() {
                        this._links = [];
                        return this
                    },
                    virtualLink: function(parameters) {
                        linkItem({
                            _link: buildLink(null, parameters)
                        }, this);
                        return this
                    },
                    linkAfter: function(name) {
                        this._linkAfter = name;
                        return this
                    },
                    linkOn: function(target, parameters) {
                        this._link = buildLink(target, parameters);
                        linkItem(this, target);
                        return this
                    },
                    linkOff: function() {
                        ! function(target) {
                            let i;
                            const items = target._link.to._links;
                            for (i = 0; items[i] !== target; ++i) {}
                            items.splice(i, 1);
                            updateIndexes(items, i)
                        }(this);
                        this._link = null;
                        return this
                    },
                    linkAppend: function() {
                        const link = this._link;
                        const items = link.to._links;
                        let i;
                        let next;
                        for (i = link.i + 1;
                            (next = items[i]) && !next._link.is; ++i) {}
                        this._insert(link.to, next);
                        link.is = true;
                        return this
                    },
                    _insert: function(parent, next) {
                        parent.element.insertBefore(this.element, next ? next.element : null)
                    },
                    linkRemove: function() {
                        this.remove();
                        this._link.is = false;
                        return this
                    },
                    clear: function() {
                        this._clearChildrenFuncIri();
                        this._getJQElement().empty();
                        return this
                    },
                    toBackground: function() {
                        const elem = this.element;
                        const parent = elem.parentNode;
                        parent && parent.insertBefore(elem, parent.firstChild);
                        return this
                    },
                    toForeground: function() {
                        const elem = this.element;
                        const parent = elem.parentNode;
                        parent && parent.appendChild(elem);
                        return this
                    },
                    attr: function(attrs) {
                        return baseAttr(this, attrs)
                    },
                    smartAttr: function(attrs) {
                        return this.attr(processHatchingAttrs(this, attrs))
                    },
                    css: function(styles) {
                        return baseCss(this, styles)
                    },
                    animate: function(params, options, complete) {
                        return baseAnimate(this, params, options, complete)
                    },
                    sharp(pos, sharpDirection) {
                        return this.attr({
                            sharp: pos || true,
                            sharpDirection: sharpDirection
                        })
                    },
                    _applyTransformation() {
                        const tr = this._settings;
                        let rotateX;
                        let rotateY;
                        const transformations = [];
                        const sharpMode = tr.sharp;
                        const trDirection = tr.sharpDirection || 1;
                        const strokeOdd = tr["stroke-width"] % 2;
                        const correctionX = strokeOdd && ("h" === sharpMode || true === sharpMode) ? .5 * trDirection : 0;
                        const correctionY = strokeOdd && ("v" === sharpMode || true === sharpMode) ? .5 * trDirection : 0;
                        transformations.push("translate(" + ((tr.translateX || 0) + correctionX) + "," + ((tr.translateY || 0) + correctionY) + ")");
                        if (tr.rotate) {
                            if ("rotateX" in tr) {
                                rotateX = tr.rotateX
                            } else {
                                rotateX = tr.x
                            }
                            if ("rotateY" in tr) {
                                rotateY = tr.rotateY
                            } else {
                                rotateY = tr.y
                            }
                            transformations.push("rotate(" + tr.rotate + "," + (rotateX || 0) + "," + (rotateY || 0) + ")")
                        }
                        const scaleXDefined = (0, _type.isDefined)(tr.scaleX);
                        const scaleYDefined = (0, _type.isDefined)(tr.scaleY);
                        if (scaleXDefined || scaleYDefined) {
                            transformations.push("scale(" + (scaleXDefined ? tr.scaleX : 1) + "," + (scaleYDefined ? tr.scaleY : 1) + ")")
                        }
                        if (transformations.length) {
                            this.element.setAttribute("transform", transformations.join(" "))
                        }
                    },
                    move: function(x, y, animate, animOptions) {
                        const obj = {};
                        (0, _type.isDefined)(x) && (obj.translateX = x);
                        (0, _type.isDefined)(y) && (obj.translateY = y);
                        if (!animate) {
                            this.attr(obj)
                        } else {
                            this.animate(obj, animOptions)
                        }
                        return this
                    },
                    rotate: function(angle, x, y, animate, animOptions) {
                        const obj = {
                            rotate: angle || 0
                        };
                        (0, _type.isDefined)(x) && (obj.rotateX = x);
                        (0, _type.isDefined)(y) && (obj.rotateY = y);
                        if (!animate) {
                            this.attr(obj)
                        } else {
                            this.animate(obj, animOptions)
                        }
                        return this
                    },
                    _getElementBBox: function() {
                        const elem = this.element;
                        let bBox;
                        try {
                            bBox = elem.getBBox && elem.getBBox()
                        } catch (e) {}
                        return bBox || {
                            x: 0,
                            y: 0,
                            width: elem.offsetWidth || 0,
                            height: elem.offsetHeight || 0
                        }
                    },
                    getBBox: function() {
                        const transformation = this._settings;
                        let bBox = this._getElementBBox();
                        if (transformation.rotate) {
                            bBox = (0, _utils.rotateBBox)(bBox, [("rotateX" in transformation ? transformation.rotateX : transformation.x) || 0, ("rotateY" in transformation ? transformation.rotateY : transformation.y) || 0], -transformation.rotate)
                        } else {
                            bBox = (0, _utils.normalizeBBox)(bBox)
                        }
                        return bBox
                    },
                    markup: function() {
                        return (0, _svg.getSvgMarkup)(this.element)
                    },
                    getOffset: function() {
                        return this._getJQElement().offset()
                    },
                    stopAnimation: function(disableComplete) {
                        const animation = this.animation;
                        animation && animation.stop(disableComplete);
                        return this
                    },
                    setTitle: function(text) {
                        const titleElem = createElement("title");
                        titleElem.textContent = text || "";
                        this.element.appendChild(titleElem)
                    },
                    removeTitle() {
                        detachTitleElements(this.element)
                    },
                    data: function(obj, val) {
                        const elem = this.element;
                        let key;
                        if (void 0 !== val) {
                            elem[obj] = val
                        } else {
                            for (key in obj) {
                                elem[key] = obj[key]
                            }
                        }
                        return this
                    },
                    on: function() {
                        const args = [this._getJQElement()];
                        args.push.apply(args, arguments);
                        _events_engine.default.on.apply(_events_engine.default, args);
                        return this
                    },
                    off: function() {
                        const args = [this._getJQElement()];
                        args.push.apply(args, arguments);
                        _events_engine.default.off.apply(_events_engine.default, args);
                        return this
                    },
                    trigger: function() {
                        const args = [this._getJQElement()];
                        args.push.apply(args, arguments);
                        _events_engine.default.trigger.apply(_events_engine.default, args);
                        return this
                    }
                };
                let PathSvgElement = function(renderer, type) {
                    SvgElement.call(this, renderer, "path", type)
                };
                exports.PathSvgElement = PathSvgElement;
                PathSvgElement.prototype = objectCreate(SvgElement.prototype);
                extend(PathSvgElement.prototype, {
                    constructor: PathSvgElement,
                    attr: function(attrs) {
                        const that = this;
                        let segments;
                        if (isObjectArgument(attrs)) {
                            attrs = extend({}, attrs);
                            segments = attrs.segments;
                            if ("points" in attrs) {
                                segments = buildPathSegments(attrs.points, that.type);
                                delete attrs.points
                            }
                            if (segments) {
                                attrs.d = function(segments) {
                                    const d = [];
                                    let k = 0;
                                    let i;
                                    const ii = segments.length;
                                    let segment;
                                    let j;
                                    let jj;
                                    for (i = 0; i < ii; ++i) {
                                        segment = segments[i];
                                        for (j = 0, jj = segment.length; j < jj; ++j) {
                                            d[k++] = segment[j]
                                        }
                                    }
                                    return d.join(" ")
                                }(segments);
                                that.segments = segments;
                                delete attrs.segments
                            }
                        }
                        return baseAttr(that, attrs)
                    },
                    animate: function(params, options, complete) {
                        const that = this;
                        const curSegments = that.segments || [];
                        let newSegments;
                        let endSegments;
                        if (that.renderer.animationEnabled() && "points" in params) {
                            newSegments = buildPathSegments(params.points, that.type);
                            endSegments = function(oldSegments, newSegments, type) {
                                const oldLength = oldSegments.length;
                                const newLength = newSegments.length;
                                let i;
                                let originalNewSegments;
                                const makeEqualSegments = -1 !== type.indexOf("area") ? makeEqualAreaSegments : makeEqualLineSegments;
                                if (0 === oldLength) {
                                    for (i = 0; i < newLength; i++) {
                                        oldSegments.push(newSegments[i].slice(0))
                                    }
                                } else if (oldLength < newLength) {
                                    makeEqualSegments(oldSegments, newSegments, type)
                                } else if (oldLength > newLength) {
                                    originalNewSegments = newSegments.slice(0);
                                    makeEqualSegments(newSegments, oldSegments, type)
                                }
                                return originalNewSegments
                            }(curSegments, newSegments, that.type);
                            params.segments = {
                                from: curSegments,
                                to: newSegments,
                                end: endSegments
                            };
                            delete params.points
                        }
                        return baseAnimate(that, params, options, complete)
                    }
                });
                let ArcSvgElement = function(renderer) {
                    SvgElement.call(this, renderer, "path", "arc")
                };
                exports.ArcSvgElement = ArcSvgElement;
                ArcSvgElement.prototype = objectCreate(SvgElement.prototype);
                extend(ArcSvgElement.prototype, {
                    constructor: ArcSvgElement,
                    attr: function(attrs) {
                        const settings = this._settings;
                        let x;
                        let y;
                        let innerRadius;
                        let outerRadius;
                        let startAngle;
                        let endAngle;
                        if (isObjectArgument(attrs)) {
                            attrs = extend({}, attrs);
                            if ("x" in attrs || "y" in attrs || "innerRadius" in attrs || "outerRadius" in attrs || "startAngle" in attrs || "endAngle" in attrs) {
                                settings.x = x = "x" in attrs ? attrs.x : settings.x;
                                delete attrs.x;
                                settings.y = y = "y" in attrs ? attrs.y : settings.y;
                                delete attrs.y;
                                settings.innerRadius = innerRadius = "innerRadius" in attrs ? attrs.innerRadius : settings.innerRadius;
                                delete attrs.innerRadius;
                                settings.outerRadius = outerRadius = "outerRadius" in attrs ? attrs.outerRadius : settings.outerRadius;
                                delete attrs.outerRadius;
                                settings.startAngle = startAngle = "startAngle" in attrs ? attrs.startAngle : settings.startAngle;
                                delete attrs.startAngle;
                                settings.endAngle = endAngle = "endAngle" in attrs ? attrs.endAngle : settings.endAngle;
                                delete attrs.endAngle;
                                attrs.d = buildArcPath.apply(null, (0, _utils.normalizeArcParams)(x, y, innerRadius, outerRadius, startAngle, endAngle))
                            }
                        }
                        return baseAttr(this, attrs)
                    },
                    animate: function(params, options, complete) {
                        const settings = this._settings;
                        const arcParams = {
                            from: {},
                            to: {}
                        };
                        if (this.renderer.animationEnabled() && ("x" in params || "y" in params || "innerRadius" in params || "outerRadius" in params || "startAngle" in params || "endAngle" in params)) {
                            arcParams.from.x = settings.x || 0;
                            arcParams.from.y = settings.y || 0;
                            arcParams.from.innerRadius = settings.innerRadius || 0;
                            arcParams.from.outerRadius = settings.outerRadius || 0;
                            arcParams.from.startAngle = settings.startAngle || 0;
                            arcParams.from.endAngle = settings.endAngle || 0;
                            arcParams.to.x = "x" in params ? params.x : settings.x;
                            delete params.x;
                            arcParams.to.y = "y" in params ? params.y : settings.y;
                            delete params.y;
                            arcParams.to.innerRadius = "innerRadius" in params ? params.innerRadius : settings.innerRadius;
                            delete params.innerRadius;
                            arcParams.to.outerRadius = "outerRadius" in params ? params.outerRadius : settings.outerRadius;
                            delete params.outerRadius;
                            arcParams.to.startAngle = "startAngle" in params ? params.startAngle : settings.startAngle;
                            delete params.startAngle;
                            arcParams.to.endAngle = "endAngle" in params ? params.endAngle : settings.endAngle;
                            delete params.endAngle;
                            params.arc = arcParams
                        }
                        return baseAnimate(this, params, options, complete)
                    }
                });
                let RectSvgElement = function(renderer) {
                    SvgElement.call(this, renderer, "rect")
                };
                exports.RectSvgElement = RectSvgElement;
                RectSvgElement.prototype = objectCreate(SvgElement.prototype);
                extend(RectSvgElement.prototype, {
                    constructor: RectSvgElement,
                    attr: function(attrs) {
                        const that = this;
                        let x;
                        let y;
                        let width;
                        let height;
                        let sw;
                        let maxSW;
                        let newSW;
                        if (isObjectArgument(attrs)) {
                            attrs = extend({}, attrs);
                            if (void 0 !== attrs.x || void 0 !== attrs.y || void 0 !== attrs.width || void 0 !== attrs.height || void 0 !== attrs["stroke-width"]) {
                                void 0 !== attrs.x ? x = that._originalX = attrs.x : x = that._originalX || 0;
                                void 0 !== attrs.y ? y = that._originalY = attrs.y : y = that._originalY || 0;
                                void 0 !== attrs.width ? width = that._originalWidth = attrs.width : width = that._originalWidth || 0;
                                void 0 !== attrs.height ? height = that._originalHeight = attrs.height : height = that._originalHeight || 0;
                                void 0 !== attrs["stroke-width"] ? sw = that._originalSW = attrs["stroke-width"] : sw = that._originalSW;
                                maxSW = ~~((width < height ? width : height) / 2);
                                newSW = (sw || 0) < maxSW ? sw || 0 : maxSW;
                                attrs.x = x + newSW / 2;
                                attrs.y = y + newSW / 2;
                                attrs.width = width - newSW;
                                attrs.height = height - newSW;
                                ((sw || 0) !== newSW || !(0 === newSW && void 0 === sw)) && (attrs["stroke-width"] = newSW)
                            }
                            if ("sharp" in attrs) {
                                delete attrs.sharp
                            }
                        }
                        return baseAttr(that, attrs)
                    }
                });
                let TextSvgElement = function(renderer) {
                    SvgElement.call(this, renderer, "text");
                    this.css({
                        "white-space": "pre"
                    })
                };
                exports.TextSvgElement = TextSvgElement;
                TextSvgElement.prototype = objectCreate(SvgElement.prototype);
                extend(TextSvgElement.prototype, {
                    constructor: TextSvgElement,
                    attr: function(attrs) {
                        const that = this;
                        let isResetRequired;
                        if (!isObjectArgument(attrs)) {
                            return baseAttr(that, attrs)
                        }
                        attrs = extend({}, attrs);
                        const settings = that._settings;
                        const wasStroked = (0, _type.isDefined)(settings.stroke) && (0, _type.isDefined)(settings["stroke-width"]);
                        if (void 0 !== attrs.text) {
                            settings.text = attrs.text;
                            delete attrs.text;
                            isResetRequired = true
                        }
                        if (void 0 !== attrs.stroke) {
                            settings.stroke = attrs.stroke;
                            delete attrs.stroke
                        }
                        if (void 0 !== attrs["stroke-width"]) {
                            settings["stroke-width"] = attrs["stroke-width"];
                            delete attrs["stroke-width"]
                        }
                        if (void 0 !== attrs["stroke-opacity"]) {
                            settings["stroke-opacity"] = attrs["stroke-opacity"];
                            delete attrs["stroke-opacity"]
                        }
                        if (void 0 !== attrs.textsAlignment) {
                            ! function(wrapper, alignment) {
                                if (!wrapper._texts || "center" === alignment) {
                                    return
                                }
                                const items = wrapper._texts;
                                const direction = "left" === alignment ? -1 : 1;
                                const maxTextWidth = Math.max.apply(Math, items.map(t => getTextWidth(t)));
                                for (let i = 0; i < items.length; i++) {
                                    const item = items[i];
                                    const textWidth = getTextWidth(item);
                                    if (0 !== maxTextWidth && maxTextWidth !== textWidth) {
                                        setTextNodeAttribute(item, "dx", direction * round((maxTextWidth - textWidth) / 2 * 10) / 10)
                                    }
                                }
                            }(that, attrs.textsAlignment);
                            delete attrs.textsAlignment
                        }
                        const isStroked = (0, _type.isDefined)(settings.stroke) && (0, _type.isDefined)(settings["stroke-width"]);
                        baseAttr(that, attrs);
                        isResetRequired = isResetRequired || isStroked !== wasStroked && settings.text;
                        if (isResetRequired) {
                            ! function(wrapper, text, isStroked) {
                                let items;
                                let parsedHtml;
                                wrapper._texts = null;
                                wrapper.clear();
                                if (null === text) {
                                    return
                                }
                                text = "" + text;
                                if (!wrapper.renderer.encodeHtml && (/<[a-z][\s\S]*>/i.test(text) || -1 !== text.indexOf("&"))) {
                                    parsedHtml = function(html) {
                                        const findStyleAndClassAttrs = /(style|class)\s*=\s*(["'])(?:(?!\2).)*\2\s?/gi;
                                        return html.replace(/(?:(<[a-z0-9]+\s*))([\s\S]*?)(>|\/>)/gi, (function(allTagAttrs, p1, p2, p3) {
                                            p2 = (p2 && p2.match(findStyleAndClassAttrs) || []).map((function(str) {
                                                return str
                                            })).join(" ");
                                            return p1 + p2 + p3
                                        }))
                                    }(text);
                                    items = function(text) {
                                        const items = [];
                                        const div = _dom_adapter.default.createElement("div");
                                        div.innerHTML = text.replace(/\r/g, "").replace(/\n/g, "<br/>").replace(/style=/g, "data-style=");
                                        div.querySelectorAll("[data-style]").forEach(element => {
                                            element.style = element.getAttribute("data-style");
                                            element.removeAttribute("data-style")
                                        });
                                        ! function orderHtmlTree(list, line, node, parentStyle, parentClassName) {
                                            let style;
                                            let realStyle;
                                            let i;
                                            let ii;
                                            let nodes;
                                            if (void 0 !== node.wholeText) {
                                                list.push({
                                                    value: node.wholeText,
                                                    style: parentStyle,
                                                    className: parentClassName,
                                                    line: line,
                                                    height: parentStyle["font-size"] || 0
                                                })
                                            } else if ("BR" === node.tagName) {
                                                ++line
                                            } else if (_dom_adapter.default.isElementNode(node)) {
                                                extend(style = {}, parentStyle);
                                                switch (node.tagName) {
                                                    case "B":
                                                    case "STRONG":
                                                        style["font-weight"] = "bold";
                                                        break;
                                                    case "I":
                                                    case "EM":
                                                        style["font-style"] = "italic";
                                                        break;
                                                    case "U":
                                                        style["text-decoration"] = "underline"
                                                }
                                                realStyle = node.style;
                                                realStyle.color && (style.fill = realStyle.color);
                                                realStyle.fontSize && (style["font-size"] = realStyle.fontSize);
                                                realStyle.fontStyle && (style["font-style"] = realStyle.fontStyle);
                                                realStyle.fontWeight && (style["font-weight"] = realStyle.fontWeight);
                                                realStyle.textDecoration && (style["text-decoration"] = realStyle.textDecoration);
                                                for (i = 0, nodes = node.childNodes, ii = nodes.length; i < ii; ++i) {
                                                    line = orderHtmlTree(list, line, nodes[i], style, node.className || parentClassName)
                                                }
                                            }
                                            return line
                                        }(items, 0, div, {}, "");
                                        ! function(items) {
                                            let i;
                                            let ii;
                                            let currentItem = items[0];
                                            let item;
                                            for (i = 1, ii = items.length; i < ii; ++i) {
                                                item = items[i];
                                                if (item.line === currentItem.line) {
                                                    currentItem.height = maxLengthFontSize(currentItem.height, item.height);
                                                    currentItem.inherits = currentItem.inherits || 0 === parseFloat(item.height);
                                                    item.height = NaN
                                                } else {
                                                    currentItem = item
                                                }
                                            }
                                        }(items);
                                        return items
                                    }(parsedHtml)
                                } else if (/\n/g.test(text)) {
                                    items = function(text) {
                                        const texts = text.replace(/\r/g, "").split(/\n/g);
                                        let i = 0;
                                        const items = [];
                                        for (; i < texts.length; i++) {
                                            items.push({
                                                value: texts[i].trim(),
                                                height: 0,
                                                line: i
                                            })
                                        }
                                        return items
                                    }(text)
                                } else if (isStroked) {
                                    items = [{
                                        value: text.trim(),
                                        height: 0
                                    }]
                                }
                                if (items) {
                                    if (items.length) {
                                        wrapper._texts = items;
                                        if (isStroked) {
                                            createTspans(items, wrapper.element, "stroke")
                                        }
                                        createTspans(items, wrapper.element, "tspan")
                                    }
                                } else {
                                    wrapper.element.appendChild(_dom_adapter.default.createTextNode(text))
                                }
                            }(that, settings.text, isStroked);
                            that._hasEllipsis = false
                        }
                        if (isResetRequired || void 0 !== attrs.x || void 0 !== attrs.y) {
                            locateTextNodes(that)
                        }
                        if (isStroked) {
                            ! function(wrapper) {
                                if (!wrapper._texts) {
                                    return
                                }
                                const items = wrapper._texts;
                                const stroke = wrapper._settings.stroke;
                                const strokeWidth = wrapper._settings["stroke-width"];
                                const strokeOpacity = wrapper._settings["stroke-opacity"] || 1;
                                let tspan;
                                let i;
                                let ii;
                                for (i = 0, ii = items.length; i < ii; ++i) {
                                    tspan = items[i].stroke;
                                    tspan.setAttribute("stroke", stroke);
                                    tspan.setAttribute("stroke-width", strokeWidth);
                                    tspan.setAttribute("stroke-opacity", strokeOpacity);
                                    tspan.setAttribute("stroke-linejoin", "round")
                                }
                            }(that)
                        }
                        return that
                    },
                    css: function(styles) {
                        styles = styles || {};
                        baseCss(this, styles);
                        if ("font-size" in styles) {
                            locateTextNodes(this)
                        }
                        return this
                    },
                    applyEllipsis: function(maxWidth) {
                        const that = this;
                        let lines;
                        let hasEllipsis = false;
                        let i;
                        let ii;
                        let lineParts;
                        let j;
                        let jj;
                        let text;
                        restoreText.call(that);
                        const ellipsis = that.renderer.text("...").attr(that._styles).append(that.renderer.root);
                        const ellipsisWidth = ellipsis.getBBox().width;
                        if (that._getElementBBox().width > maxWidth) {
                            if (maxWidth - ellipsisWidth < 0) {
                                maxWidth = 0
                            } else {
                                maxWidth -= ellipsisWidth
                            }
                            lines = function(element, texts, maxWidth) {
                                let lines = [];
                                let i;
                                let ii;
                                let text;
                                let startBox;
                                let endBox;
                                if (texts) {
                                    for (i = 0, ii = texts.length; i < ii; ++i) {
                                        text = texts[i];
                                        if (!lines[text.line]) {
                                            text.startBox = startBox = 0;
                                            lines.push({
                                                commonLength: text.value.length,
                                                parts: [text]
                                            })
                                        } else {
                                            text.startBox = startBox;
                                            lines[text.line].parts.push(text);
                                            lines[text.line].commonLength += text.value.length
                                        }
                                        endBox = startBox + text.tspan.getSubStringLength(0, text.value.length);
                                        text.endIndex = getIndexForEllipsis(text, maxWidth, startBox, endBox);
                                        startBox = endBox
                                    }
                                } else {
                                    text = {
                                        value: element.textContent,
                                        tspan: element
                                    };
                                    text.startBox = startBox = 0;
                                    endBox = startBox + getTextWidth(text);
                                    text.endIndex = getIndexForEllipsis(text, maxWidth, startBox, endBox);
                                    lines = [{
                                        commonLength: element.textContent.length,
                                        parts: [text]
                                    }]
                                }
                                return lines
                            }(that.element, that._texts, maxWidth);
                            for (i = 0, ii = lines.length; i < ii; ++i) {
                                lineParts = lines[i].parts;
                                if (1 === lines[i].commonLength) {
                                    continue
                                }
                                for (j = 0, jj = lineParts.length; j < jj; ++j) {
                                    text = lineParts[j];
                                    if ((0, _type.isDefined)(text.endIndex)) {
                                        setNewText(text, text.endIndex);
                                        hasEllipsis = true
                                    } else if (text.startBox > maxWidth) {
                                        removeTextSpan(text)
                                    }
                                }
                            }
                        }
                        ellipsis.remove();
                        that._hasEllipsis = hasEllipsis;
                        return hasEllipsis
                    },
                    setMaxSize: function(maxWidth, maxHeight) {
                        let options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
                        const that = this;
                        let lines = [];
                        let textChanged = false;
                        let textIsEmpty = false;
                        let ellipsisMaxWidth = maxWidth;
                        restoreText.call(that);
                        const restoreTitleElement = detachAndStoreTitleElements(this.element);
                        const ellipsis = that.renderer.text("...").attr(that._styles).append(that.renderer.root);
                        const ellipsisWidth = ellipsis.getBBox().width;
                        const {
                            width: width,
                            height: height
                        } = that._getElementBBox();
                        if ((width || height) && (width > maxWidth || maxHeight && height > maxHeight)) {
                            if (maxWidth - ellipsisWidth < 0) {
                                ellipsisMaxWidth = 0
                            } else {
                                ellipsisMaxWidth -= ellipsisWidth
                            }
                            lines = applyOverflowRules(that.element, that._texts, maxWidth, ellipsisMaxWidth, options);
                            lines = setMaxHeight(lines, ellipsisMaxWidth, options, maxHeight, parseFloat(this._getLineHeight()));
                            this._texts = lines.reduce((texts, line) => texts.concat(line.parts), []).filter(t => "" !== t.value).map(t => {
                                t.stroke && t.tspan.parentNode.appendChild(t.stroke);
                                return t
                            }).map(t => {
                                t.tspan.parentNode.appendChild(t.tspan);
                                return t
                            });
                            !this._texts.length && (this._texts = null);
                            textChanged = true;
                            if (this._texts) {
                                locateTextNodes(this)
                            } else {
                                this.element.textContent = "";
                                textIsEmpty = true
                            }
                        }
                        ellipsis.remove();
                        that._hasEllipsis = textChanged;
                        restoreTitleElement();
                        return {
                            rowCount: lines.length,
                            textChanged: textChanged,
                            textIsEmpty: textIsEmpty
                        }
                    },
                    restoreText: restoreText,
                    _getLineHeight() {
                        return !isNaN(parseFloat(this._styles["font-size"])) ? this._styles["font-size"] : 12
                    }
                });

                function updateIndexes(items, k) {
                    let i;
                    let item;
                    for (i = k; item = items[i]; ++i) {
                        item._link.i = i
                    }
                }

                function linkItem(target, container) {
                    const items = container._links;
                    const key = target._link.after = target._link.after || container._linkAfter;
                    let i;
                    let item;
                    if (key) {
                        for (i = 0;
                            (item = items[i]) && item._link.name !== key; ++i) {}
                        if (item) {
                            for (++i;
                                (item = items[i]) && item._link.after === key; ++i) {}
                        }
                    } else {
                        i = items.length
                    }
                    items.splice(i, 0, target);
                    updateIndexes(items, i)
                }

                function Renderer(options) {
                    this.root = this._createElement("svg", {
                        xmlns: "http://www.w3.org/2000/svg",
                        version: "1.1",
                        fill: NONE,
                        stroke: NONE,
                        "stroke-width": 0
                    }).attr({
                        class: options.cssClass
                    }).css({
                        "line-height": "normal",
                        "-moz-user-select": NONE,
                        "-webkit-user-select": NONE,
                        "-webkit-tap-highlight-color": "rgba(0, 0, 0, 0)",
                        display: "block",
                        overflow: "hidden"
                    });
                    this._init();
                    this.pathModified = !!options.pathModified;
                    this._$container = (0, _renderer.default)(options.container);
                    this.root.append({
                        element: options.container
                    });
                    this._locker = 0;
                    this._backed = false
                }
                Renderer.prototype = {
                    constructor: Renderer,
                    _init: function() {
                        this._defs = this._createElement("defs").append(this.root);
                        this._animationController = new _animation.AnimationController(this.root.element);
                        this._animation = {
                            enabled: true,
                            duration: 1e3,
                            easing: "easeOutCubic"
                        }
                    },
                    setOptions: function(options) {
                        this.rtl = !!options.rtl;
                        this.encodeHtml = !!options.encodeHtml;
                        this.updateAnimationOptions(options.animation || {});
                        this.root.attr({
                            direction: this.rtl ? "rtl" : "ltr"
                        });
                        return this
                    },
                    _createElement: function(tagName, attr, type) {
                        const elem = new SvgElement(this, tagName, type);
                        attr && elem.attr(attr);
                        return elem
                    },
                    lock: function() {
                        const that = this;
                        if (0 === that._locker) {
                            that._backed = !that._$container.is(":visible");
                            if (that._backed) {
                                ! function(root) {
                                    if (0 === getBackup().backupCounter) {
                                        _dom_adapter.default.getBody().appendChild(getBackup().backupContainer)
                                    }++getBackup().backupCounter;
                                    root.append({
                                        element: getBackup().backupContainer
                                    })
                                }(that.root)
                            }
                        }++that._locker;
                        return that
                    },
                    unlock: function() {
                        const that = this;
                        --that._locker;
                        if (0 === that._locker) {
                            if (that._backed) {
                                ! function(root, container) {
                                    root.append({
                                        element: container
                                    });
                                    --getBackup().backupCounter;
                                    if (0 === getBackup().backupCounter) {
                                        _dom_adapter.default.getBody().removeChild(getBackup().backupContainer)
                                    }
                                }(that.root, that._$container[0])
                            }
                            that._backed = false
                        }
                        return that
                    },
                    resize: function(width, height) {
                        if (width >= 0 && height >= 0) {
                            this.root.attr({
                                width: width,
                                height: height
                            })
                        }
                        return this
                    },
                    dispose: function() {
                        const that = this;
                        let key;
                        that.root.dispose();
                        that._defs.dispose();
                        that._animationController.dispose();
                        fixFuncIriCallbacks.removeByRenderer(that);
                        for (key in that) {
                            that[key] = null
                        }
                        return that
                    },
                    animationEnabled: function() {
                        return !!this._animation.enabled
                    },
                    updateAnimationOptions: function(newOptions) {
                        extend(this._animation, newOptions);
                        return this
                    },
                    stopAllAnimations: function(lock) {
                        this._animationController[lock ? "lock" : "stop"]();
                        return this
                    },
                    animateElement: function(element, params, options) {
                        this._animationController.animateElement(element, params, options);
                        return this
                    },
                    svg: function() {
                        return this.root.markup()
                    },
                    getRootOffset: function() {
                        return this.root.getOffset()
                    },
                    onEndAnimation: function(endAnimation) {
                        this._animationController.onEndAnimation(endAnimation)
                    },
                    rect: function(x, y, width, height) {
                        const elem = new RectSvgElement(this);
                        return elem.attr({
                            x: x || 0,
                            y: y || 0,
                            width: width || 0,
                            height: height || 0
                        })
                    },
                    simpleRect: function() {
                        return this._createElement("rect")
                    },
                    circle: function(x, y, r) {
                        return this._createElement("circle", {
                            cx: x || 0,
                            cy: y || 0,
                            r: r || 0
                        })
                    },
                    g: function() {
                        return this._createElement("g")
                    },
                    image: function(x, y, w, h, href, location) {
                        const image = this._createElement("image", {
                            x: x || 0,
                            y: y || 0,
                            width: w || 0,
                            height: h || 0,
                            preserveAspectRatio: preserveAspectRatioMap[(0, _utils.normalizeEnum)(location)] || NONE
                        });
                        image.element.setAttributeNS("http://www.w3.org/1999/xlink", "href", href || "");
                        return image
                    },
                    path: function(points, type) {
                        const elem = new PathSvgElement(this, type);
                        return elem.attr({
                            points: points || []
                        })
                    },
                    arc: function(x, y, innerRadius, outerRadius, startAngle, endAngle) {
                        const elem = new ArcSvgElement(this);
                        return elem.attr({
                            x: x || 0,
                            y: y || 0,
                            innerRadius: innerRadius || 0,
                            outerRadius: outerRadius || 0,
                            startAngle: startAngle || 0,
                            endAngle: endAngle || 0
                        })
                    },
                    text: function(text, x, y) {
                        const elem = new TextSvgElement(this);
                        return elem.attr({
                            text: text,
                            x: x || 0,
                            y: y || 0
                        })
                    },
                    linearGradient: function(stops) {
                        let id = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : (0, _utils.getNextDefsSvgId)();
                        let rotationAngle = arguments.length > 2 ? arguments[2] : void 0;
                        const gradient = this._createElement("linearGradient", {
                            id: id,
                            gradientTransform: "rotate(".concat(rotationAngle || 0, ")")
                        }).append(this._defs);
                        gradient.id = id;
                        this._createGradientStops(stops, gradient);
                        return gradient
                    },
                    radialGradient: function(stops, id) {
                        const gradient = this._createElement("radialGradient", {
                            id: id
                        }).append(this._defs);
                        this._createGradientStops(stops, gradient);
                        return gradient
                    },
                    _createGradientStops: function(stops, group) {
                        stops.forEach(stop => {
                            var _stop$stopColor;
                            this._createElement("stop", {
                                offset: stop.offset,
                                "stop-color": null !== (_stop$stopColor = stop["stop-color"]) && void 0 !== _stop$stopColor ? _stop$stopColor : stop.color,
                                "stop-opacity": stop.opacity
                            }).append(group)
                        })
                    },
                    pattern: function(color, hatching, _id) {
                        hatching = hatching || {};
                        const step = hatching.step || 6;
                        const stepTo2 = step / 2;
                        const stepBy15 = 1.5 * step;
                        const id = _id || (0, _utils.getNextDefsSvgId)();
                        const d = "right" === (0, _utils.normalizeEnum)(hatching.direction) ? "M " + stepTo2 + " " + -stepTo2 + " L " + -stepTo2 + " " + stepTo2 + " M 0 " + step + " L " + step + " 0 M " + stepBy15 + " " + stepTo2 + " L " + stepTo2 + " " + stepBy15 : "M 0 0 L " + step + " " + step + " M " + -stepTo2 + " " + stepTo2 + " L " + stepTo2 + " " + stepBy15 + " M " + stepTo2 + " " + -stepTo2 + " L " + stepBy15 + " " + stepTo2;
                        const pattern = this._createElement("pattern", {
                            id: id,
                            width: step,
                            height: step,
                            patternUnits: "userSpaceOnUse"
                        }).append(this._defs);
                        pattern.id = id;
                        this.rect(0, 0, step, step).attr({
                            fill: color,
                            opacity: hatching.opacity
                        }).append(pattern);
                        new PathSvgElement(this).attr({
                            d: d,
                            "stroke-width": hatching.width || 1,
                            stroke: color
                        }).append(pattern);
                        return pattern
                    },
                    customPattern: function(id, template, width, height) {
                        const option = {
                            id: id,
                            width: width,
                            height: height,
                            patternContentUnits: "userSpaceOnUse",
                            patternUnits: this._getPatternUnits(width, height)
                        };
                        const pattern = this._createElement("pattern", option).append(this._defs);
                        template.render({
                            container: pattern.element
                        });
                        return pattern
                    },
                    _getPatternUnits: function(width, height) {
                        if (Number(width) && Number(height)) {
                            return "userSpaceOnUse"
                        }
                    },
                    _getPointsWithYOffset: function(points, offset) {
                        return points.map((function(point, index) {
                            if (index % 2 !== 0) {
                                return point + offset
                            }
                            return point
                        }))
                    },
                    clipShape: function(method, methodArgs) {
                        const id = (0, _utils.getNextDefsSvgId)();
                        let clipPath = this._createElement("clipPath", {
                            id: id
                        }).append(this._defs);
                        const shape = method.apply(this, methodArgs).append(clipPath);
                        shape.id = id;
                        shape.remove = function() {
                            throw "Not implemented"
                        };
                        shape.dispose = function() {
                            clipPath.dispose();
                            clipPath = null;
                            return this
                        };
                        return shape
                    },
                    clipRect(x, y, width, height) {
                        return this.clipShape(this.rect, arguments)
                    },
                    clipCircle(x, y, radius) {
                        return this.clipShape(this.circle, arguments)
                    },
                    shadowFilter: function(x, y, width, height, offsetX, offsetY, blur, color, opacity) {
                        const id = (0, _utils.getNextDefsSvgId)();
                        const filter = this._createElement("filter", {
                            id: id,
                            x: x || 0,
                            y: y || 0,
                            width: width || 0,
                            height: height || 0
                        }).append(this._defs);
                        const gaussianBlur = this._createElement("feGaussianBlur", {
                            in: "SourceGraphic",
                            result: "gaussianBlurResult",
                            stdDeviation: blur || 0
                        }).append(filter);
                        const offset = this._createElement("feOffset", {
                            in: "gaussianBlurResult",
                            result: "offsetResult",
                            dx: offsetX || 0,
                            dy: offsetY || 0
                        }).append(filter);
                        const flood = this._createElement("feFlood", {
                            result: "floodResult",
                            "flood-color": color || "",
                            "flood-opacity": opacity
                        }).append(filter);
                        const composite = this._createElement("feComposite", {
                            in: "floodResult",
                            in2: "offsetResult",
                            operator: "in",
                            result: "compositeResult"
                        }).append(filter);
                        const finalComposite = this._createElement("feComposite", {
                            in: "SourceGraphic",
                            in2: "compositeResult",
                            operator: "over"
                        }).append(filter);
                        filter.id = id;
                        filter.gaussianBlur = gaussianBlur;
                        filter.offset = offset;
                        filter.flood = flood;
                        filter.composite = composite;
                        filter.finalComposite = finalComposite;
                        filter.attr = function(attrs) {
                            const filterAttrs = {};
                            const offsetAttrs = {};
                            const floodAttrs = {};
                            "x" in attrs && (filterAttrs.x = attrs.x);
                            "y" in attrs && (filterAttrs.y = attrs.y);
                            "width" in attrs && (filterAttrs.width = attrs.width);
                            "height" in attrs && (filterAttrs.height = attrs.height);
                            baseAttr(this, filterAttrs);
                            "blur" in attrs && this.gaussianBlur.attr({
                                stdDeviation: attrs.blur
                            });
                            "offsetX" in attrs && (offsetAttrs.dx = attrs.offsetX);
                            "offsetY" in attrs && (offsetAttrs.dy = attrs.offsetY);
                            this.offset.attr(offsetAttrs);
                            "color" in attrs && (floodAttrs["flood-color"] = attrs.color);
                            "opacity" in attrs && (floodAttrs["flood-opacity"] = attrs.opacity);
                            this.flood.attr(floodAttrs);
                            return this
                        };
                        return filter
                    },
                    brightFilter: function(type, slope) {
                        const id = (0, _utils.getNextDefsSvgId)();
                        const filter = this._createElement("filter", {
                            id: id
                        }).append(this._defs);
                        const componentTransferElement = this._createElement("feComponentTransfer").append(filter);
                        const attrs = {
                            type: type,
                            slope: slope
                        };
                        filter.id = id;
                        this._createElement("feFuncR", attrs).append(componentTransferElement);
                        this._createElement("feFuncG", attrs).append(componentTransferElement);
                        this._createElement("feFuncB", attrs).append(componentTransferElement);
                        return filter
                    },
                    getGrayScaleFilter: function() {
                        if (this._grayScaleFilter) {
                            return this._grayScaleFilter
                        }
                        const id = (0, _utils.getNextDefsSvgId)();
                        const filter = this._createElement("filter", {
                            id: id
                        }).append(this._defs);
                        this._createElement("feColorMatrix").attr({
                            type: "matrix",
                            values: "0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 0.6 0"
                        }).append(filter);
                        filter.id = id;
                        this._grayScaleFilter = filter;
                        return filter
                    },
                    lightenFilter: function(id) {
                        const filter = this._createElement("filter", {
                            id: id
                        }).append(this._defs);
                        this._createElement("feColorMatrix", {
                            type: "matrix",
                            values: "".concat(1.3, " 0 0 0 0 0 ").concat(1.3, " 0 0 0 0 0 ").concat(1.3, " 0 0 0 0 0 1 0")
                        }).append(filter);
                        filter.id = id;
                        return filter
                    },
                    initDefsElements: function() {
                        const storage = this._defsElementsStorage = this._defsElementsStorage || {
                            byHash: {},
                            baseId: (0, _utils.getNextDefsSvgId)()
                        };
                        const byHash = storage.byHash;
                        let name;
                        for (name in byHash) {
                            byHash[name].pattern.dispose()
                        }
                        storage.byHash = {};
                        storage.refToHash = {};
                        storage.nextId = 0
                    },
                    drawPattern: function(_ref4, storageId, nextId) {
                        let {
                            color: color,
                            hatching: hatching
                        } = _ref4;
                        return this.pattern(color, hatching, "".concat(storageId, "-hatching-").concat(nextId++))
                    },
                    drawFilter: function(_, storageId, nextId) {
                        return this.lightenFilter("".concat(storageId, "-lightening-").concat(nextId++))
                    },
                    lockDefsElements: function(attrs, ref, type) {
                        const storage = this._defsElementsStorage;
                        let storageItem;
                        const hash = "pattern" === type ? function(_ref5) {
                            let {
                                color: color,
                                hatching: hatching
                            } = _ref5;
                            return "@" + color + "::" + hatching.step + ":" + hatching.width + ":" + hatching.opacity + ":" + hatching.direction
                        }(attrs) : "@filter::lightening";
                        const method = "pattern" === type ? this.drawPattern : this.drawFilter;
                        let pattern;
                        if (storage.refToHash[ref] !== hash) {
                            if (ref) {
                                this.releaseDefsElements(ref)
                            }
                            storageItem = storage.byHash[hash];
                            if (!storageItem) {
                                pattern = method.call(this, attrs, storage.baseId, storage.nextId++);
                                storageItem = storage.byHash[hash] = {
                                    pattern: pattern,
                                    count: 0
                                };
                                storage.refToHash[pattern.id] = hash
                            }++storageItem.count;
                            ref = storageItem.pattern.id
                        }
                        return ref
                    },
                    releaseDefsElements: function(ref) {
                        const storage = this._defsElementsStorage;
                        const hash = storage.refToHash[ref];
                        const storageItem = storage.byHash[hash];
                        if (storageItem && 0 === --storageItem.count) {
                            storageItem.pattern.dispose();
                            delete storage.byHash[hash];
                            delete storage.refToHash[ref]
                        }
                    }
                };
                const fixFuncIriCallbacks = function() {
                    let callbacks = [];
                    return {
                        add: function(fn) {
                            callbacks.push(fn)
                        },
                        remove: function(fn) {
                            callbacks = callbacks.filter((function(el) {
                                return el !== fn
                            }))
                        },
                        removeByRenderer: function(renderer) {
                            callbacks = callbacks.filter((function(el) {
                                return el.renderer !== renderer
                            }))
                        },
                        fire: function() {
                            callbacks.forEach((function(fn) {
                                fn()
                            }))
                        }
                    }
                }();
                exports.refreshPaths = function() {
                    fixFuncIriCallbacks.fire()
                }
            },
        1939:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/series_family.js ***!
              \***********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.SeriesFamily = SeriesFamily;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _math = __webpack_require__( /*! ../../core/utils/math */ 60810);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _utils = __webpack_require__( /*! ./utils */ 19157);
                var _date = (obj = __webpack_require__( /*! ../../core/utils/date */ 91198), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const {
                    round: round,
                    abs: abs,
                    pow: pow,
                    sqrt: sqrt
                } = Math;
                const _min = Math.min;

                function correctStackCoordinates(series, currentStacks, arg, stack, parameters, barsArea, seriesStackIndexCallback) {
                    series.forEach((function(series) {
                        const stackIndex = seriesStackIndexCallback(currentStacks.indexOf(stack), currentStacks.length);
                        const points = series.getPointsByArg(arg, true);
                        const barPadding = function(barPadding) {
                            return barPadding < 0 || barPadding > 1 ? void 0 : barPadding
                        }(series.getOptions().barPadding);
                        const barWidth = series.getOptions().barWidth;
                        let offset = getOffset(stackIndex, parameters);
                        let width = parameters.width;
                        let extraParameters;
                        if (-1 === stackIndex) {
                            return
                        }
                        if ((0, _type.isDefined)(barPadding) || (0, _type.isDefined)(barWidth)) {
                            extraParameters = calculateParams(barsArea, currentStacks.length, 1 - barPadding, barWidth);
                            width = extraParameters.width;
                            if (!series.getBarOverlapGroup()) {
                                offset = getOffset(stackIndex, extraParameters)
                            }
                        }! function(points, width, offset) {
                            (0, _iterator.each)(points, (function(_, point) {
                                point.correctCoordinates({
                                    width: width,
                                    offset: offset
                                })
                            }))
                        }(points, width, offset)
                    }))
                }

                function getStackName(series) {
                    return series.getStackName() || series.getBarOverlapGroup()
                }

                function adjustBarSeriesDimensionsCore(series, options, seriesStackIndexCallback) {
                    var _series$, _series$2;
                    const commonStacks = [];
                    const allArguments = [];
                    const seriesInStacks = {};
                    const barGroupWidth = options.barGroupWidth;
                    const argumentAxis = null === (_series$ = series[0]) || void 0 === _series$ ? void 0 : _series$.getArgumentAxis();
                    let interval;
                    if (null !== (_series$2 = series[0]) && void 0 !== _series$2 && _series$2.useAggregation()) {
                        var _series$3;
                        const isDateArgAxis = "datetime" === (null === (_series$3 = series[0]) || void 0 === _series$3 ? void 0 : _series$3.argumentType);
                        let tickInterval = argumentAxis.getTickInterval();
                        let aggregationInterval = argumentAxis.getAggregationInterval();
                        tickInterval = isDateArgAxis ? _date.default.dateToMilliseconds(tickInterval) : tickInterval;
                        aggregationInterval = isDateArgAxis ? _date.default.dateToMilliseconds(aggregationInterval) : aggregationInterval;
                        interval = aggregationInterval < tickInterval ? aggregationInterval : tickInterval
                    }
                    interval = null === argumentAxis || void 0 === argumentAxis ? void 0 : argumentAxis.getTranslator().getInterval(interval);
                    const barsArea = barGroupWidth ? interval > barGroupWidth ? barGroupWidth : interval : interval * (1 - (barGroupPadding = options.barGroupPadding, barGroupPadding < 0 || barGroupPadding > 1 ? .3 : barGroupPadding));
                    var barGroupPadding;
                    series.forEach((function(s, i) {
                        const stackName = getStackName(s) || i.toString();
                        let argument;
                        for (argument in s.pointsByArgument) {
                            if (-1 === allArguments.indexOf(argument.valueOf())) {
                                allArguments.push(argument.valueOf())
                            }
                        }
                        if (-1 === commonStacks.indexOf(stackName)) {
                            commonStacks.push(stackName);
                            seriesInStacks[stackName] = []
                        }
                        seriesInStacks[stackName].push(s)
                    }));
                    allArguments.forEach((function(arg) {
                        const currentStacks = commonStacks.reduce((stacks, stack) => {
                            if (function(series, arg) {
                                    return series.some((function(s) {
                                        return !s.getOptions().ignoreEmptyPoints || s.getPointsByArg(arg, true).some((function(point) {
                                            return point.hasValue()
                                        }))
                                    }))
                                }(seriesInStacks[stack], arg)) {
                                stacks.push(stack)
                            }
                            return stacks
                        }, []);
                        const parameters = calculateParams(barsArea, currentStacks.length);
                        commonStacks.forEach(stack => {
                            correctStackCoordinates(seriesInStacks[stack], currentStacks, arg, stack, parameters, barsArea, seriesStackIndexCallback)
                        })
                    }))
                }

                function calculateParams(barsArea, count, percentWidth, fixedBarWidth) {
                    let spacing;
                    let width;
                    if (fixedBarWidth) {
                        width = _min(fixedBarWidth, barsArea / count);
                        spacing = count > 1 ? round((barsArea - round(width) * count) / (count - 1)) : 0
                    } else if ((0, _type.isDefined)(percentWidth)) {
                        width = barsArea * percentWidth / count;
                        spacing = count > 1 ? round((barsArea - barsArea * percentWidth) / (count - 1)) : 0
                    } else {
                        spacing = round(barsArea / count * .2);
                        width = (barsArea - spacing * (count - 1)) / count
                    }
                    return {
                        width: width > 1 ? round(width) : 1,
                        spacing: spacing,
                        middleIndex: count / 2,
                        rawWidth: width
                    }
                }

                function getOffset(stackIndex, parameters) {
                    const width = parameters.rawWidth < 1 ? parameters.rawWidth : parameters.width;
                    return (stackIndex - parameters.middleIndex + .5) * width - (parameters.middleIndex - stackIndex - .5) * parameters.spacing
                }

                function getVisibleSeries(that) {
                    return that.series.filter((function(s) {
                        return s.isVisible()
                    }))
                }

                function getAbsStackSumByArg(stackKeepers, stackName, argument) {
                    const positiveStackValue = (stackKeepers.positive[stackName] || {})[argument] || 0;
                    const negativeStackValue = -(stackKeepers.negative[stackName] || {})[argument] || 0;
                    return positiveStackValue + negativeStackValue
                }

                function getSeriesStackIndexCallback(inverted) {
                    if (!inverted) {
                        return function(index) {
                            return index
                        }
                    } else {
                        return function(index, stackCount) {
                            return stackCount - index - 1
                        }
                    }
                }

                function isInverted(series) {
                    return series[0] && series[0].getArgumentAxis().getTranslator().isInverted()
                }

                function adjustBarSeriesDimensions() {
                    const series = getVisibleSeries(this);
                    adjustBarSeriesDimensionsCore(series, this._options, getSeriesStackIndexCallback(isInverted(series)))
                }

                function adjustStackedSeriesValues() {
                    const negativesAsZeroes = this._options.negativesAsZeroes;
                    const series = getVisibleSeries(this);
                    const stackKeepers = {
                        positive: {},
                        negative: {}
                    };
                    const holesStack = {
                        left: {},
                        right: {}
                    };
                    const lastSeriesInPositiveStack = {};
                    const lastSeriesInNegativeStack = {};
                    series.forEach((function(singleSeries) {
                        const stackName = getStackName(singleSeries);
                        let hole = false;
                        const stack = function(series) {
                            const points = series.getPoints();
                            let value;
                            for (let i = 0; i < points.length; i++) {
                                const point = points[i];
                                value = point.initialValue && point.initialValue.valueOf();
                                if (abs(value) > 0) {
                                    break
                                }
                            }
                            return (0, _math.sign)(value)
                        }(singleSeries) < 0 ? lastSeriesInNegativeStack : lastSeriesInPositiveStack;
                        singleSeries._prevSeries = stack[stackName];
                        stack[stackName] = singleSeries;
                        singleSeries.holes = (0, _extend.extend)(true, {}, holesStack);
                        singleSeries.getPoints().forEach((function(point, index, points) {
                            let value = point.initialValue && point.initialValue.valueOf();
                            let argument = point.argument.valueOf();
                            let stacks = value >= 0 ? stackKeepers.positive : stackKeepers.negative;
                            const isNotBarSeries = "bar" !== singleSeries.type;
                            if (negativesAsZeroes && value < 0) {
                                stacks = stackKeepers.positive;
                                value = 0;
                                point.resetValue()
                            }
                            stacks[stackName] = stacks[stackName] || {};
                            const currentStack = stacks[stackName];
                            if (currentStack[argument]) {
                                if (isNotBarSeries) {
                                    point.correctValue(currentStack[argument])
                                }
                                currentStack[argument] += value
                            } else {
                                currentStack[argument] = value;
                                if (isNotBarSeries) {
                                    point.resetCorrection()
                                }
                            }
                            if (!point.hasValue()) {
                                const prevPoint = points[index - 1];
                                if (!hole && prevPoint && prevPoint.hasValue()) {
                                    argument = prevPoint.argument.valueOf();
                                    prevPoint._skipSetRightHole = true;
                                    holesStack.right[argument] = (holesStack.right[argument] || 0) + (prevPoint.value.valueOf() - (isFinite(prevPoint.minValue) ? prevPoint.minValue.valueOf() : 0))
                                }
                                hole = true
                            } else if (hole) {
                                hole = false;
                                holesStack.left[argument] = (holesStack.left[argument] || 0) + (point.value.valueOf() - (isFinite(point.minValue) ? point.minValue.valueOf() : 0));
                                point._skipSetLeftHole = true
                            }
                        }))
                    }));
                    series.forEach((function(singleSeries) {
                        const holes = singleSeries.holes;
                        singleSeries.getPoints().forEach((function(point) {
                            const argument = point.argument.valueOf();
                            point.resetHoles();
                            !point._skipSetLeftHole && point.setHole(holes.left[argument] || holesStack.left[argument] && 0, "left");
                            !point._skipSetRightHole && point.setHole(holes.right[argument] || holesStack.right[argument] && 0, "right");
                            point._skipSetLeftHole = null;
                            point._skipSetRightHole = null
                        }))
                    }));
                    this._stackKeepers = stackKeepers;
                    series.forEach((function(singleSeries) {
                        singleSeries.getPoints().forEach((function(point) {
                            const argument = point.argument.valueOf();
                            const stackName = getStackName(singleSeries);
                            const absTotal = getAbsStackSumByArg(stackKeepers, stackName, argument);
                            const total = function(stackKeepers, stackName, argument) {
                                const positiveStackValue = (stackKeepers.positive[stackName] || {})[argument] || 0;
                                const negativeStackValue = (stackKeepers.negative[stackName] || {})[argument] || 0;
                                return positiveStackValue + negativeStackValue
                            }(stackKeepers, stackName, argument);
                            point.setPercentValue(absTotal, total, holesStack.left[argument], holesStack.right[argument])
                        }))
                    }))
                }

                function updateStackedSeriesValues() {
                    const that = this;
                    const series = getVisibleSeries(that);
                    const stack = that._stackKeepers;
                    const stackKeepers = {
                        positive: {},
                        negative: {}
                    };
                    (0, _iterator.each)(series, (function(_, singleSeries) {
                        const minBarSize = singleSeries.getOptions().minBarSize;
                        const valueAxisTranslator = singleSeries.getValueAxis().getTranslator();
                        const minShownBusinessValue = minBarSize && valueAxisTranslator.getMinBarSize(minBarSize);
                        const stackName = singleSeries.getStackName();
                        (0, _iterator.each)(singleSeries.getPoints(), (function(index, point) {
                            if (!point.hasValue()) {
                                return
                            }
                            let value = point.initialValue && point.initialValue.valueOf();
                            const argument = point.argument.valueOf();
                            if (that.fullStacked) {
                                value = value / getAbsStackSumByArg(stack, stackName, argument) || 0
                            }
                            const updateValue = valueAxisTranslator.checkMinBarSize(value, minShownBusinessValue, point.value);
                            const valueType = function(value) {
                                return value >= 0 ? "positive" : "negative"
                            }(updateValue);
                            const currentStack = stackKeepers[valueType][stackName] = stackKeepers[valueType][stackName] || {};
                            if (currentStack[argument]) {
                                point.minValue = currentStack[argument];
                                currentStack[argument] += updateValue
                            } else {
                                currentStack[argument] = updateValue
                            }
                            point.value = currentStack[argument]
                        }))
                    }));
                    if (that.fullStacked) {
                        ! function(series, stackKeepers) {
                            (0, _iterator.each)(series, (function(_, singleSeries) {
                                const stackName = singleSeries.getStackName ? singleSeries.getStackName() : "default";
                                (0, _iterator.each)(singleSeries.getPoints(), (function(index, point) {
                                    const stackSum = getAbsStackSumByArg(stackKeepers, stackName, point.argument.valueOf());
                                    if (0 !== stackSum) {
                                        point.value = point.value / stackSum;
                                        if ((0, _type.isNumeric)(point.minValue)) {
                                            point.minValue = point.minValue / stackSum
                                        }
                                    }
                                }))
                            }))
                        }(series, stackKeepers)
                    }
                }

                function updateRangeSeriesValues() {
                    const series = getVisibleSeries(this);
                    (0, _iterator.each)(series, (function(_, singleSeries) {
                        const minBarSize = singleSeries.getOptions().minBarSize;
                        const valueAxisTranslator = singleSeries.getValueAxis().getTranslator();
                        const minShownBusinessValue = minBarSize && valueAxisTranslator.getMinBarSize(minBarSize);
                        if (minShownBusinessValue) {
                            (0, _iterator.each)(singleSeries.getPoints(), (function(_, point) {
                                if (!point.hasValue()) {
                                    return
                                }
                                if (point.value.valueOf() - point.minValue.valueOf() < minShownBusinessValue) {
                                    point.value = point.value.valueOf() + minShownBusinessValue / 2;
                                    point.minValue = point.minValue.valueOf() - minShownBusinessValue / 2
                                }
                            }))
                        }
                    }))
                }

                function updateBarSeriesValues() {
                    (0, _iterator.each)(this.series, (function(_, singleSeries) {
                        const minBarSize = singleSeries.getOptions().minBarSize;
                        const valueAxisTranslator = singleSeries.getValueAxis().getTranslator();
                        const minShownBusinessValue = minBarSize && valueAxisTranslator.getMinBarSize(minBarSize);
                        if (minShownBusinessValue) {
                            (0, _iterator.each)(singleSeries.getPoints(), (function(index, point) {
                                if (point.hasValue()) {
                                    point.value = valueAxisTranslator.checkMinBarSize(point.initialValue, minShownBusinessValue)
                                }
                            }))
                        }
                    }))
                }

                function adjustCandlestickSeriesDimensions() {
                    const series = getVisibleSeries(this);
                    adjustBarSeriesDimensionsCore(series, {
                        barGroupPadding: .3
                    }, getSeriesStackIndexCallback(isInverted(series)))
                }

                function adjustBubbleSeriesDimensions() {
                    const series = getVisibleSeries(this);
                    if (!series.length) {
                        return
                    }
                    const options = this._options;
                    const visibleAreaX = series[0].getArgumentAxis().getVisibleArea();
                    const visibleAreaY = series[0].getValueAxis().getVisibleArea();
                    const min = _min(visibleAreaX[1] - visibleAreaX[0], visibleAreaY[1] - visibleAreaY[0]);
                    const minBubbleArea = pow(options.minBubbleSize, 2);
                    const maxBubbleArea = pow(min * options.maxBubbleSize, 2);
                    const equalBubbleSize = (min * options.maxBubbleSize + options.minBubbleSize) / 2;
                    let minPointSize = 1 / 0;
                    let maxPointSize = -1 / 0;
                    let pointSize;
                    let bubbleArea;
                    let sizeProportion;
                    (0, _iterator.each)(series, (function(_, seriesItem) {
                        (0, _iterator.each)(seriesItem.getPoints(), (function(_, point) {
                            maxPointSize = maxPointSize > point.size ? maxPointSize : point.size;
                            minPointSize = minPointSize < point.size ? minPointSize : point.size
                        }))
                    }));
                    const sizeDispersion = maxPointSize - minPointSize;
                    const areaDispersion = abs(maxBubbleArea - minBubbleArea);
                    (0, _iterator.each)(series, (function(_, seriesItem) {
                        (0, _iterator.each)(seriesItem.getPoints(), (function(_, point) {
                            if (maxPointSize === minPointSize) {
                                pointSize = round(equalBubbleSize)
                            } else {
                                sizeProportion = abs(point.size - minPointSize) / sizeDispersion;
                                bubbleArea = areaDispersion * sizeProportion + minBubbleArea;
                                pointSize = round(sqrt(bubbleArea))
                            }
                            point.correctCoordinates(pointSize)
                        }))
                    }))
                }

                function SeriesFamily(options) {
                    const that = this;
                    that.type = (0, _utils.normalizeEnum)(options.type);
                    that.pane = options.pane;
                    that.series = [];
                    that.updateOptions(options);
                    switch (that.type) {
                        case "bar":
                            that.adjustSeriesDimensions = adjustBarSeriesDimensions;
                            that.updateSeriesValues = updateBarSeriesValues;
                            that.adjustSeriesValues = adjustStackedSeriesValues;
                            break;
                        case "rangebar":
                            that.adjustSeriesDimensions = adjustBarSeriesDimensions;
                            that.updateSeriesValues = updateRangeSeriesValues;
                            break;
                        case "fullstackedbar":
                            that.fullStacked = true;
                            that.adjustSeriesDimensions = adjustBarSeriesDimensions;
                            that.adjustSeriesValues = adjustStackedSeriesValues;
                            that.updateSeriesValues = updateStackedSeriesValues;
                            break;
                        case "stackedbar":
                            that.adjustSeriesDimensions = adjustBarSeriesDimensions;
                            that.adjustSeriesValues = adjustStackedSeriesValues;
                            that.updateSeriesValues = updateStackedSeriesValues;
                            break;
                        case "fullstackedarea":
                        case "fullstackedline":
                        case "fullstackedspline":
                        case "fullstackedsplinearea":
                            that.fullStacked = true;
                            that.adjustSeriesValues = adjustStackedSeriesValues;
                            break;
                        case "stackedarea":
                        case "stackedsplinearea":
                        case "stackedline":
                        case "stackedspline":
                            that.adjustSeriesValues = adjustStackedSeriesValues;
                            break;
                        case "candlestick":
                        case "stock":
                            that.adjustSeriesDimensions = adjustCandlestickSeriesDimensions;
                            break;
                        case "bubble":
                            that.adjustSeriesDimensions = adjustBubbleSeriesDimensions
                    }
                }
                SeriesFamily.prototype = {
                    constructor: SeriesFamily,
                    adjustSeriesDimensions: _common.noop,
                    adjustSeriesValues: _common.noop,
                    updateSeriesValues: _common.noop,
                    updateOptions: function(options) {
                        this._options = options
                    },
                    dispose: function() {
                        this.series = null
                    },
                    add: function(series) {
                        const type = this.type;
                        this.series = (0, _utils.map)(series, singleSeries => singleSeries.type === type ? singleSeries : null)
                    }
                }
            },
        31987:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/themes/fluent.js ***!
              \***********************************************************************/
            function(module, exports) {
                exports.default = void 0;
                var _default = [{
                    theme: {
                        name: "fluent.blue.light"
                    },
                    baseThemeName: "material.blue.light"
                }, {
                    theme: {
                        name: "fluent.blue.light.compact"
                    },
                    baseThemeName: "fluent.blue.light"
                }, {
                    theme: {
                        name: "fluent.blue.dark"
                    },
                    baseThemeName: "material.blue.dark"
                }, {
                    theme: {
                        name: "fluent.blue.dark.compact"
                    },
                    baseThemeName: "fluent.blue.dark"
                }];
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        39726:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/themes/generic.carmine.js ***!
              \********************************************************************************/
            function(module, exports) {
                exports.default = void 0;
                var _default = [{
                    theme: {
                        name: "generic.carmine",
                        defaultPalette: "Carmine",
                        backgroundColor: "#fff",
                        primaryTitleColor: "#333",
                        secondaryTitleColor: "#8899a8",
                        gridColor: "#dee1e3",
                        axisColor: "#707070",
                        export: {
                            backgroundColor: "#fff",
                            font: {
                                color: "#333"
                            },
                            button: {
                                default: {
                                    color: "#333",
                                    borderColor: "#b1b7bd",
                                    backgroundColor: "#fff"
                                },
                                hover: {
                                    color: "#333",
                                    borderColor: "#b1b7bd",
                                    backgroundColor: "#faf2f0"
                                },
                                focus: {
                                    color: "#333",
                                    borderColor: "#6d7781",
                                    backgroundColor: "#faf2f0"
                                },
                                active: {
                                    color: "#333",
                                    borderColor: "#6d7781",
                                    backgroundColor: "#f5e7e4"
                                }
                            }
                        },
                        legend: {
                            font: {
                                color: "#707070"
                            }
                        },
                        tooltip: {
                            color: "#fff",
                            border: {
                                color: "#dee1e3"
                            },
                            font: {
                                color: "#333"
                            }
                        },
                        "chart:common": {
                            commonSeriesSettings: {
                                label: {
                                    border: {
                                        color: "#dee1e3"
                                    }
                                }
                            }
                        },
                        "chart:common:annotation": {
                            font: {
                                color: "#333"
                            },
                            border: {
                                color: "#dee1e3"
                            },
                            color: "#fff"
                        },
                        chart: {
                            commonPaneSettings: {
                                border: {
                                    color: "#dee1e3"
                                }
                            },
                            commonAxisSettings: {
                                breakStyle: {
                                    color: "#c1c5c7"
                                }
                            }
                        },
                        rangeSelector: {
                            scale: {
                                breakStyle: {
                                    color: "#c1c5c7"
                                },
                                tick: {
                                    opacity: .12
                                }
                            },
                            selectedRangeColor: "#f05b41",
                            sliderMarker: {
                                color: "#f05b41"
                            },
                            sliderHandle: {
                                color: "#f05b41",
                                opacity: .5
                            }
                        },
                        sparkline: {
                            pointColor: "#fff",
                            minColor: "#f0ad4e",
                            maxColor: "#f74d61"
                        },
                        treeMap: {
                            group: {
                                color: "#dee1e3",
                                label: {
                                    font: {
                                        color: "#8899a8"
                                    }
                                }
                            }
                        },
                        bullet: {
                            color: "#f05b41"
                        },
                        gauge: {
                            valueIndicators: {
                                rangebar: {
                                    color: "#f05b41"
                                },
                                textcloud: {
                                    color: "#f05b41"
                                }
                            }
                        }
                    },
                    baseThemeName: "generic.light"
                }, {
                    theme: {
                        name: "generic.carmine.compact"
                    },
                    baseThemeName: "generic.carmine"
                }];
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        14870:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/themes/generic.contrast.js ***!
              \*********************************************************************************/
            function(module, exports) {
                exports.default = void 0;
                const WHITE = "#ffffff";
                const BLACK = "#000000";
                var _default = [{
                    theme: {
                        name: "generic.contrast",
                        defaultPalette: "Bright",
                        font: {
                            color: WHITE
                        },
                        backgroundColor: BLACK,
                        primaryTitleColor: WHITE,
                        secondaryTitleColor: WHITE,
                        gridColor: WHITE,
                        axisColor: WHITE,
                        export: {
                            backgroundColor: BLACK,
                            font: {
                                color: WHITE
                            },
                            button: {
                                default: {
                                    color: WHITE,
                                    borderColor: WHITE,
                                    backgroundColor: BLACK
                                },
                                hover: {
                                    color: WHITE,
                                    borderColor: WHITE,
                                    backgroundColor: "#cf00d7"
                                },
                                focus: {
                                    color: WHITE,
                                    borderColor: "#cf00d7",
                                    backgroundColor: BLACK
                                },
                                active: {
                                    color: BLACK,
                                    borderColor: WHITE,
                                    backgroundColor: WHITE
                                }
                            },
                            borderColor: WHITE,
                            menuButtonColor: BLACK,
                            activeBackgroundColor: WHITE,
                            activeColor: BLACK,
                            selectedBorderColor: "#cf00da",
                            selectedColor: "#cf00da",
                            shadowColor: "none"
                        },
                        tooltip: {
                            border: {
                                color: WHITE
                            },
                            font: {
                                color: WHITE
                            },
                            color: BLACK
                        },
                        "chart:common": {
                            commonSeriesSettings: {
                                valueErrorBar: {
                                    color: WHITE
                                },
                                hoverStyle: {
                                    hatching: {
                                        opacity: .5
                                    }
                                },
                                selectionStyle: {
                                    hatching: {
                                        opacity: .35
                                    }
                                },
                                label: {
                                    font: {
                                        color: WHITE
                                    },
                                    border: {
                                        color: WHITE
                                    }
                                }
                            }
                        },
                        "chart:common:axis": {
                            constantLineStyle: {
                                color: WHITE
                            }
                        },
                        "chart:common:annotation": {
                            font: {
                                color: WHITE
                            },
                            border: {
                                color: WHITE
                            },
                            color: BLACK
                        },
                        chart: {
                            commonSeriesSettings: {},
                            crosshair: {
                                color: "#cf00d7"
                            },
                            commonPaneSettings: {
                                backgroundColor: BLACK,
                                border: {
                                    color: WHITE
                                }
                            },
                            scrollBar: {
                                color: WHITE
                            },
                            commonAxisSettings: {
                                breakStyle: {
                                    color: "#cf00d7"
                                }
                            },
                            zoomAndPan: {
                                dragBoxStyle: {
                                    color: WHITE,
                                    opacity: .7
                                }
                            }
                        },
                        pie: {
                            commonSeriesSettings: {
                                pie: {
                                    hoverStyle: {
                                        hatching: {
                                            opacity: .5
                                        }
                                    },
                                    selectionStyle: {
                                        hatching: {
                                            opacity: .35
                                        }
                                    }
                                },
                                doughnut: {
                                    hoverStyle: {
                                        hatching: {
                                            opacity: .5
                                        }
                                    },
                                    selectionStyle: {
                                        hatching: {
                                            opacity: .35
                                        }
                                    }
                                },
                                donut: {
                                    hoverStyle: {
                                        hatching: {
                                            opacity: .5
                                        }
                                    },
                                    selectionStyle: {
                                        hatching: {
                                            opacity: .35
                                        }
                                    }
                                }
                            }
                        },
                        gauge: {
                            rangeContainer: {
                                backgroundColor: WHITE
                            },
                            valueIndicators: {
                                _default: {
                                    color: WHITE
                                },
                                rangebar: {
                                    color: WHITE,
                                    backgroundColor: BLACK
                                },
                                twocolorneedle: {
                                    secondColor: WHITE
                                },
                                trianglemarker: {
                                    color: WHITE
                                },
                                textcloud: {
                                    color: WHITE,
                                    text: {
                                        font: {
                                            color: BLACK
                                        }
                                    }
                                }
                            }
                        },
                        barGauge: {
                            backgroundColor: "#3c3c3c"
                        },
                        rangeSelector: {
                            scale: {
                                tick: {
                                    color: WHITE,
                                    opacity: .4
                                },
                                minorTick: {
                                    color: WHITE,
                                    opacity: .12
                                },
                                breakStyle: {
                                    color: "#cf00d7"
                                }
                            },
                            selectedRangeColor: "#cf00da",
                            sliderMarker: {
                                color: "#cf00da"
                            },
                            sliderHandle: {
                                color: "#cf00da",
                                opacity: 1
                            },
                            shutter: {
                                opacity: .75
                            },
                            background: {
                                color: BLACK
                            }
                        },
                        map: {
                            background: {
                                borderColor: WHITE
                            },
                            layer: {
                                label: {
                                    stroke: BLACK,
                                    font: {
                                        color: WHITE
                                    }
                                }
                            },
                            "layer:area": {
                                borderColor: BLACK,
                                color: "#686868",
                                hoveredBorderColor: WHITE,
                                selectedBorderColor: WHITE,
                                label: {
                                    font: {
                                        opacity: 1
                                    }
                                }
                            },
                            "layer:line": {
                                color: "#267cff",
                                hoveredColor: "#f613ff",
                                selectedColor: WHITE
                            },
                            "layer:marker:dot": {
                                borderColor: BLACK,
                                color: "#f8ca00",
                                backColor: BLACK,
                                backOpacity: .32
                            },
                            "layer:marker:bubble": {
                                color: "#f8ca00",
                                hoveredBorderColor: WHITE,
                                selectedBorderColor: WHITE
                            },
                            "layer:marker:pie": {
                                hoveredBorderColor: WHITE,
                                selectedBorderColor: WHITE
                            },
                            controlBar: {
                                borderColor: WHITE,
                                color: BLACK,
                                opacity: .3
                            }
                        },
                        treeMap: {
                            tile: {
                                color: "#70c92f"
                            },
                            group: {
                                color: "#797979",
                                label: {
                                    font: {
                                        color: WHITE
                                    }
                                }
                            }
                        },
                        sparkline: {
                            pointColor: BLACK
                        },
                        bullet: {},
                        polar: {
                            commonSeriesSettings: {}
                        },
                        funnel: {
                            label: {
                                connector: {
                                    opacity: 1
                                }
                            }
                        },
                        sankey: {
                            label: {
                                font: {
                                    color: WHITE
                                },
                                shadow: {
                                    opacity: 0
                                }
                            },
                            node: {
                                border: {
                                    visible: true,
                                    width: 1,
                                    color: WHITE
                                }
                            },
                            link: {
                                opacity: .5,
                                border: {
                                    visible: true,
                                    width: 1,
                                    color: WHITE
                                },
                                hoverStyle: {
                                    opacity: .9
                                }
                            }
                        }
                    },
                    baseThemeName: "generic.light"
                }, {
                    theme: {
                        name: "generic.contrast.compact"
                    },
                    baseThemeName: "generic.contrast"
                }];
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        17374:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/themes/generic.dark.js ***!
              \*****************************************************************************/
            function(module, exports) {
                exports.default = void 0;
                const WHITE = "#ffffff";
                var _default = [{
                    theme: {
                        name: "generic.dark",
                        font: {
                            color: "#808080"
                        },
                        backgroundColor: "#2a2a2a",
                        primaryTitleColor: "#dedede",
                        secondaryTitleColor: "#a3a3a3",
                        gridColor: "#555555",
                        axisColor: "#a3a3a3",
                        export: {
                            backgroundColor: "#2a2a2a",
                            font: {
                                color: "#dbdbdb"
                            },
                            button: {
                                default: {
                                    color: "#dedede",
                                    borderColor: "#4d4d4d",
                                    backgroundColor: "#2e2e2e"
                                },
                                hover: {
                                    color: "#dedede",
                                    borderColor: "#6c6c6c",
                                    backgroundColor: "#444"
                                },
                                focus: {
                                    color: "#dedede",
                                    borderColor: "#8d8d8d",
                                    backgroundColor: "#444444"
                                },
                                active: {
                                    color: "#dedede",
                                    borderColor: "#8d8d8d",
                                    backgroundColor: "#555555"
                                }
                            },
                            shadowColor: "#292929"
                        },
                        tooltip: {
                            color: "#2b2b2b",
                            border: {
                                color: "#494949"
                            },
                            font: {
                                color: "#929292"
                            }
                        },
                        "chart:common": {
                            commonSeriesSettings: {
                                label: {
                                    border: {
                                        color: "#494949"
                                    }
                                },
                                valueErrorBar: {
                                    color: WHITE
                                }
                            }
                        },
                        "chart:common:axis": {
                            constantLineStyle: {
                                color: WHITE
                            }
                        },
                        "chart:common:annotation": {
                            font: {
                                color: "#929292"
                            },
                            border: {
                                color: "#494949"
                            },
                            color: "#2b2b2b",
                            shadow: {
                                opacity: .008,
                                offsetY: 4,
                                blur: 8
                            }
                        },
                        chart: {
                            commonPaneSettings: {
                                border: {
                                    color: "#494949"
                                }
                            },
                            commonAxisSettings: {
                                breakStyle: {
                                    color: "#818181"
                                }
                            },
                            zoomAndPan: {
                                dragBoxStyle: {
                                    color: WHITE
                                }
                            }
                        },
                        gauge: {
                            rangeContainer: {
                                backgroundColor: "#b5b5b5"
                            },
                            valueIndicators: {
                                _default: {
                                    color: "#b5b5b5"
                                },
                                rangebar: {
                                    color: "#84788b"
                                },
                                twocolorneedle: {
                                    secondColor: "#ba544d"
                                },
                                trianglemarker: {
                                    color: "#b7918f"
                                },
                                textcloud: {
                                    color: "#ba544d"
                                }
                            }
                        },
                        barGauge: {
                            backgroundColor: "#3c3c3c"
                        },
                        rangeSelector: {
                            scale: {
                                tick: {
                                    color: WHITE,
                                    opacity: .32
                                },
                                minorTick: {
                                    color: WHITE,
                                    opacity: .1
                                },
                                breakStyle: {
                                    color: "#818181"
                                }
                            },
                            selectedRangeColor: "#b5b5b5",
                            sliderMarker: {
                                color: "#b5b5b5",
                                font: {
                                    color: "#303030"
                                }
                            },
                            sliderHandle: {
                                color: WHITE,
                                opacity: .2
                            },
                            shutter: {
                                color: "#2b2b2b",
                                opacity: .9
                            }
                        },
                        map: {
                            background: {
                                borderColor: "#3f3f3f"
                            },
                            layer: {
                                label: {
                                    stroke: "#000000",
                                    font: {
                                        color: WHITE
                                    }
                                }
                            },
                            "layer:area": {
                                borderColor: "#303030",
                                color: "#686868",
                                hoveredBorderColor: WHITE,
                                selectedBorderColor: WHITE
                            },
                            "layer:line": {
                                color: "#c77244",
                                hoveredColor: "#ff5d04",
                                selectedColor: "#ff784f"
                            },
                            "layer:marker:bubble": {
                                hoveredBorderColor: WHITE,
                                selectedBorderColor: WHITE
                            },
                            "layer:marker:pie": {
                                hoveredBorderColor: WHITE,
                                selectedBorderColor: WHITE
                            },
                            legend: {
                                border: {
                                    color: "#3f3f3f"
                                },
                                font: {
                                    color: WHITE
                                }
                            },
                            controlBar: {
                                borderColor: "#c7c7c7",
                                color: "#303030"
                            }
                        },
                        treeMap: {
                            group: {
                                color: "#4c4c4c",
                                label: {
                                    font: {
                                        color: "#a3a3a3"
                                    }
                                }
                            }
                        },
                        sparkline: {
                            lineColor: "#c7c7c7",
                            firstLastColor: "#c7c7c7",
                            barPositiveColor: "#b8b8b8",
                            barNegativeColor: "#8e8e8e",
                            winColor: "#b8b8b8",
                            lossColor: "#8e8e8e",
                            pointColor: "#303030"
                        },
                        bullet: {
                            targetColor: "#8e8e8e"
                        },
                        funnel: {
                            item: {
                                border: {
                                    color: "#2a2a2a"
                                }
                            }
                        },
                        sankey: {
                            label: {
                                font: {
                                    color: WHITE
                                },
                                shadow: {
                                    opacity: 0
                                }
                            },
                            node: {
                                border: {
                                    color: "#2a2a2a"
                                }
                            },
                            link: {
                                color: "#888888",
                                border: {
                                    color: "#2a2a2a"
                                },
                                hoverStyle: {
                                    color: "#bbbbbb"
                                }
                            }
                        }
                    },
                    baseThemeName: "generic.light"
                }, {
                    theme: {
                        name: "generic.dark.compact"
                    },
                    baseThemeName: "generic.dark"
                }];
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        83313:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/themes/generic.darkmoon.js ***!
              \*********************************************************************************/
            function(module, exports) {
                exports.default = void 0;
                var _default = [{
                    theme: {
                        name: "generic.darkmoon",
                        defaultPalette: "Dark Moon",
                        backgroundColor: "#465672",
                        primaryTitleColor: "#fff",
                        secondaryTitleColor: "#919bac",
                        gridColor: "#596980",
                        axisColor: "#c7ccd4",
                        export: {
                            backgroundColor: "#465672",
                            font: {
                                color: "#fff"
                            },
                            button: {
                                default: {
                                    color: "#fff",
                                    borderColor: "#7a889e",
                                    backgroundColor: "#465672"
                                },
                                hover: {
                                    color: "#fff",
                                    borderColor: "#9da8b8",
                                    backgroundColor: "#596e92"
                                },
                                focus: {
                                    color: "#fff",
                                    borderColor: "#c4cad4",
                                    backgroundColor: "#596e92"
                                },
                                active: {
                                    color: "#fff",
                                    borderColor: "#c4cad4",
                                    backgroundColor: "#6b80a4"
                                }
                            }
                        },
                        legend: {
                            font: {
                                color: "#c7ccd4"
                            }
                        },
                        tooltip: {
                            color: "#62789e",
                            border: {
                                color: "#596980"
                            },
                            font: {
                                color: "#fff"
                            }
                        },
                        "chart:common": {
                            commonSeriesSettings: {
                                label: {
                                    border: {
                                        color: "#596980"
                                    }
                                }
                            }
                        },
                        "chart:common:annotation": {
                            font: {
                                color: "#fff"
                            },
                            border: {
                                color: "#596980"
                            },
                            color: "#62789e"
                        },
                        chart: {
                            commonPaneSettings: {
                                border: {
                                    color: "#596980"
                                }
                            },
                            commonAxisSettings: {
                                breakStyle: {
                                    color: "#73869e"
                                }
                            }
                        },
                        gauge: {
                            valueIndicators: {
                                rangebar: {
                                    color: "#3debd3"
                                },
                                textcloud: {
                                    color: "#3debd3",
                                    text: {
                                        font: {
                                            color: "#465672"
                                        }
                                    }
                                }
                            }
                        },
                        barGauge: {
                            backgroundColor: "#526280"
                        },
                        funnel: {
                            item: {
                                border: {
                                    color: "#465672"
                                }
                            }
                        },
                        sparkline: {
                            pointColor: "#465672",
                            minColor: "#f0ad4e",
                            maxColor: "#f9517e"
                        },
                        treeMap: {
                            group: {
                                color: "#596980",
                                label: {
                                    font: {
                                        color: "#fff"
                                    }
                                }
                            }
                        },
                        map: {
                            background: {
                                borderColor: "#596980"
                            },
                            "layer:area": {
                                color: "#97a3b6",
                                borderColor: "#465672"
                            }
                        },
                        rangeSelector: {
                            shutter: {
                                color: "#465672"
                            },
                            scale: {
                                breakStyle: {
                                    color: "#73869e"
                                },
                                tick: {
                                    opacity: .2
                                }
                            },
                            selectedRangeColor: "#3debd3",
                            sliderMarker: {
                                color: "#3debd3",
                                font: {
                                    color: "#000"
                                }
                            },
                            sliderHandle: {
                                color: "#3debd3",
                                opacity: .5
                            }
                        },
                        bullet: {
                            color: "#3debd3"
                        },
                        sankey: {
                            link: {
                                border: {
                                    color: "#465672"
                                }
                            },
                            node: {
                                border: {
                                    color: "#465672"
                                }
                            }
                        }
                    },
                    baseThemeName: "generic.dark"
                }, {
                    theme: {
                        name: "generic.darkmoon.compact"
                    },
                    baseThemeName: "generic.darkmoon"
                }];
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        25257:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/themes/generic.darkviolet.js ***!
              \***********************************************************************************/
            function(module, exports) {
                exports.default = void 0;
                var _default = [{
                    theme: {
                        name: "generic.darkviolet",
                        defaultPalette: "Dark Violet",
                        backgroundColor: "#17171f",
                        primaryTitleColor: "#f5f6f7",
                        secondaryTitleColor: "#fff",
                        gridColor: "#343840",
                        axisColor: "#b2b2b6",
                        export: {
                            backgroundColor: "#17171f",
                            font: {
                                color: "#f5f6f7"
                            },
                            button: {
                                default: {
                                    color: "#f5f6f7",
                                    borderColor: "#414152",
                                    backgroundColor: "#17171f"
                                },
                                hover: {
                                    color: "#f5f6f7",
                                    borderColor: "#5c5c74",
                                    backgroundColor: "#2d2d3c"
                                },
                                focus: {
                                    color: "#f5f6f7",
                                    borderColor: "#7c7c97",
                                    backgroundColor: "#2d2d3c"
                                },
                                active: {
                                    color: "#f5f6f7",
                                    borderColor: "#7c7c97",
                                    backgroundColor: "#3c3c51"
                                }
                            }
                        },
                        legend: {
                            font: {
                                color: "#b2b2b6"
                            }
                        },
                        tooltip: {
                            color: "#17171f",
                            border: {
                                color: "#414152"
                            },
                            font: {
                                color: "#f5f6f7"
                            }
                        },
                        "chart:common": {
                            commonSeriesSettings: {
                                label: {
                                    border: {
                                        color: "#343840"
                                    }
                                }
                            }
                        },
                        "chart:common:annotation": {
                            font: {
                                color: "#f5f6f7"
                            },
                            border: {
                                color: "#414152"
                            },
                            color: "#17171f"
                        },
                        chart: {
                            commonPaneSettings: {
                                border: {
                                    color: "#343840"
                                }
                            },
                            commonAxisSettings: {
                                breakStyle: {
                                    color: "#575e6b"
                                }
                            }
                        },
                        funnel: {
                            item: {
                                border: {
                                    color: "#17171f"
                                }
                            }
                        },
                        sparkline: {
                            pointColor: "#17171f",
                            minColor: "#f0ad4e",
                            maxColor: "#d9534f"
                        },
                        treeMap: {
                            group: {
                                color: "#343840",
                                label: {
                                    font: {
                                        color: "#fff"
                                    }
                                }
                            }
                        },
                        rangeSelector: {
                            shutter: {
                                color: "#17171f"
                            },
                            scale: {
                                breakStyle: {
                                    color: "#575e6b"
                                },
                                tick: {
                                    opacity: .2
                                }
                            },
                            selectedRangeColor: "#9c63ff",
                            sliderMarker: {
                                color: "#9c63ff",
                                font: {
                                    color: "#fff"
                                }
                            },
                            sliderHandle: {
                                color: "#9c63ff",
                                opacity: .5
                            }
                        },
                        bullet: {
                            color: "#9c63ff"
                        },
                        gauge: {
                            valueIndicators: {
                                rangebar: {
                                    color: "#9c63ff"
                                },
                                textcloud: {
                                    color: "#9c63ff"
                                }
                            }
                        },
                        sankey: {
                            link: {
                                border: {
                                    color: "#17171f"
                                }
                            },
                            node: {
                                border: {
                                    color: "#17171f"
                                }
                            }
                        }
                    },
                    baseThemeName: "generic.dark"
                }, {
                    theme: {
                        name: "generic.darkviolet.compact"
                    },
                    baseThemeName: "generic.darkviolet"
                }];
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        84253:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/themes/generic.greenmist.js ***!
              \**********************************************************************************/
            function(module, exports) {
                exports.default = void 0;
                var _default = [{
                    theme: {
                        name: "generic.greenmist",
                        defaultPalette: "Green Mist",
                        backgroundColor: "#f5f5f5",
                        primaryTitleColor: "#28484f",
                        secondaryTitleColor: "#7eb2be",
                        gridColor: "#dedede",
                        axisColor: "#657c80",
                        export: {
                            backgroundColor: "#f5f5f5",
                            font: {
                                color: "#28484f"
                            },
                            button: {
                                default: {
                                    color: "#28484f",
                                    borderColor: "#a2b4b8",
                                    backgroundColor: "#f5f5f5"
                                },
                                hover: {
                                    color: "#28484f",
                                    borderColor: "#7f989e",
                                    backgroundColor: "rgba(222, 222, 222, 0.4)"
                                },
                                focus: {
                                    color: "#28484f",
                                    borderColor: "#5f777c",
                                    backgroundColor: "rgba(222, 222, 222, 0.4)"
                                },
                                active: {
                                    color: "#28484f",
                                    borderColor: "#5f777c",
                                    backgroundColor: "rgba(222, 222, 222, 0.8)"
                                }
                            }
                        },
                        legend: {
                            font: {
                                color: "#657c80"
                            }
                        },
                        tooltip: {
                            color: "#fff",
                            border: {
                                color: "#dedede"
                            },
                            font: {
                                color: "#28484f"
                            }
                        },
                        "chart:common": {
                            commonSeriesSettings: {
                                label: {
                                    border: {
                                        color: "#dedede"
                                    }
                                }
                            }
                        },
                        "chart:common:annotation": {
                            color: "#fff",
                            border: {
                                color: "#dedede"
                            },
                            font: {
                                color: "#28484f"
                            }
                        },
                        chart: {
                            commonPaneSettings: {
                                border: {
                                    color: "#dedede"
                                }
                            },
                            commonAxisSettings: {
                                breakStyle: {
                                    color: "#c1c1c1"
                                }
                            }
                        },
                        funnel: {
                            item: {
                                border: {
                                    color: "#f5f5f5"
                                }
                            }
                        },
                        sparkline: {
                            pointColor: "#f5f5f5",
                            minColor: "#ffc852",
                            maxColor: "#f74a5e"
                        },
                        treeMap: {
                            group: {
                                color: "#dedede",
                                label: {
                                    font: {
                                        color: "#7eb2be"
                                    }
                                }
                            }
                        },
                        rangeSelector: {
                            shutter: {
                                color: "#f5f5f5"
                            },
                            scale: {
                                breakStyle: {
                                    color: "#c1c1c1"
                                },
                                tick: {
                                    opacity: .12
                                }
                            },
                            selectedRangeColor: "#3cbab2",
                            sliderMarker: {
                                color: "#3cbab2"
                            },
                            sliderHandle: {
                                color: "#3cbab2",
                                opacity: .5
                            }
                        },
                        bullet: {
                            color: "#3cbab2"
                        },
                        gauge: {
                            valueIndicators: {
                                rangebar: {
                                    color: "#3cbab2"
                                },
                                textcloud: {
                                    color: "#3cbab2"
                                }
                            }
                        }
                    },
                    baseThemeName: "generic.light"
                }, {
                    theme: {
                        name: "generic.greenmist.compact"
                    },
                    baseThemeName: "generic.greenmist"
                }];
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        8839:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/themes/generic.light.js ***!
              \******************************************************************************/
            function(module, exports) {
                exports.default = void 0;
                const WHITE = "#ffffff";
                const BLACK = "#000000";
                const RED = "#ff0000";
                const NONE = "none";
                const SOLID = "solid";
                const TOP = "top";
                const RIGHT = "right";
                const LEFT = "left";
                const CENTER = "center";
                var _default = [{
                    theme: {
                        name: "generic.light",
                        isDefault: true,
                        font: {
                            color: "#767676",
                            family: "'Segoe UI', 'Helvetica Neue', 'Trebuchet MS', Verdana, sans-serif",
                            weight: 400,
                            size: 12,
                            cursor: "default"
                        },
                        redrawOnResize: true,
                        backgroundColor: WHITE,
                        primaryTitleColor: "#232323",
                        secondaryTitleColor: "#767676",
                        gridColor: "#d3d3d3",
                        axisColor: "#767676",
                        title: {
                            backgroundColor: WHITE,
                            font: {
                                size: 28,
                                family: "'Segoe UI Light', 'Helvetica Neue Light', 'Segoe UI', 'Helvetica Neue', 'Trebuchet MS', Verdana, sans-serif",
                                weight: 200
                            },
                            subtitle: {
                                font: {
                                    size: 16
                                },
                                offset: 0,
                                wordWrap: "normal",
                                textOverflow: "ellipsis"
                            },
                            wordWrap: "normal",
                            textOverflow: "ellipsis"
                        },
                        loadingIndicator: {
                            text: "Loading..."
                        },
                        export: {
                            backgroundColor: WHITE,
                            margin: 10,
                            font: {
                                size: 14,
                                color: "#232323",
                                weight: 400
                            },
                            button: {
                                margin: {
                                    top: 8,
                                    left: 10,
                                    right: 10,
                                    bottom: 8
                                },
                                default: {
                                    color: "#333",
                                    borderColor: "#ddd",
                                    backgroundColor: WHITE
                                },
                                hover: {
                                    color: "#333",
                                    borderColor: "#bebebe",
                                    backgroundColor: "#e6e6e6"
                                },
                                focus: {
                                    color: BLACK,
                                    borderColor: "#9d9d9d",
                                    backgroundColor: "#e6e6e6"
                                },
                                active: {
                                    color: "#333",
                                    borderColor: "#9d9d9d",
                                    backgroundColor: "#d4d4d4"
                                }
                            },
                            shadowColor: "#d3d3d3"
                        },
                        tooltip: {
                            enabled: false,
                            border: {
                                width: 1,
                                color: "#d3d3d3",
                                dashStyle: SOLID,
                                visible: true
                            },
                            font: {
                                color: "#232323"
                            },
                            color: WHITE,
                            arrowLength: 10,
                            paddingLeftRight: 18,
                            paddingTopBottom: 15,
                            textAlignment: "center",
                            shared: false,
                            location: CENTER,
                            shadow: {
                                opacity: .4,
                                offsetX: 0,
                                offsetY: 4,
                                blur: 2,
                                color: BLACK
                            },
                            interactive: false
                        },
                        legend: {
                            hoverMode: "includePoints",
                            verticalAlignment: TOP,
                            horizontalAlignment: RIGHT,
                            position: "outside",
                            visible: true,
                            margin: 10,
                            markerSize: 12,
                            border: {
                                visible: false,
                                width: 1,
                                cornerRadius: 0,
                                dashStyle: SOLID
                            },
                            paddingLeftRight: 20,
                            paddingTopBottom: 15,
                            columnCount: 0,
                            rowCount: 0,
                            columnItemSpacing: 20,
                            rowItemSpacing: 8,
                            title: {
                                backgroundColor: WHITE,
                                margin: {
                                    left: 0,
                                    bottom: 9,
                                    right: 0,
                                    top: 0
                                },
                                font: {
                                    size: 18,
                                    weight: 200
                                },
                                subtitle: {
                                    offset: 0,
                                    font: {
                                        size: 14
                                    },
                                    wordWrap: "none",
                                    textOverflow: "ellipsis"
                                },
                                wordWrap: "none",
                                textOverflow: "ellipsis"
                            }
                        },
                        "chart:common": {
                            animation: {
                                enabled: true,
                                duration: 1e3,
                                easing: "easeOutCubic",
                                maxPointCountSupported: 300
                            },
                            commonSeriesSettings: {
                                border: {
                                    visible: false,
                                    width: 2
                                },
                                showInLegend: true,
                                visible: true,
                                hoverMode: "nearestPoint",
                                selectionMode: "includePoints",
                                hoverStyle: {
                                    hatching: {
                                        direction: RIGHT,
                                        width: 2,
                                        step: 6,
                                        opacity: .75
                                    },
                                    highlight: true,
                                    border: {
                                        visible: false,
                                        width: 3
                                    }
                                },
                                selectionStyle: {
                                    hatching: {
                                        direction: RIGHT,
                                        width: 2,
                                        step: 6,
                                        opacity: .5
                                    },
                                    highlight: true,
                                    border: {
                                        visible: false,
                                        width: 3
                                    }
                                },
                                valueErrorBar: {
                                    displayMode: "auto",
                                    value: 1,
                                    color: BLACK,
                                    lineWidth: 2,
                                    edgeLength: 8
                                },
                                label: {
                                    visible: false,
                                    alignment: CENTER,
                                    rotationAngle: 0,
                                    horizontalOffset: 0,
                                    verticalOffset: 0,
                                    radialOffset: 0,
                                    showForZeroValues: true,
                                    customizeText: void 0,
                                    maxLabelCount: void 0,
                                    position: "outside",
                                    font: {
                                        color: WHITE
                                    },
                                    border: {
                                        visible: false,
                                        width: 1,
                                        color: "#d3d3d3",
                                        dashStyle: SOLID
                                    },
                                    connector: {
                                        visible: false,
                                        width: 1
                                    }
                                }
                            },
                            seriesSelectionMode: "single",
                            pointSelectionMode: "single",
                            equalRowHeight: true,
                            dataPrepareSettings: {
                                checkTypeForAllData: false,
                                convertToAxisDataType: true,
                                sortingMethod: true
                            },
                            title: {
                                margin: 10
                            },
                            adaptiveLayout: {
                                width: 80,
                                height: 80,
                                keepLabels: true
                            },
                            _rtl: {
                                legend: {
                                    itemTextPosition: LEFT
                                }
                            },
                            resolveLabelOverlapping: NONE
                        },
                        "chart:common:axis": {
                            visible: true,
                            valueMarginsEnabled: true,
                            placeholderSize: null,
                            logarithmBase: 10,
                            discreteAxisDivisionMode: "betweenLabels",
                            aggregatedPointsPosition: "betweenTicks",
                            width: 1,
                            label: {
                                visible: true
                            },
                            grid: {
                                visible: false,
                                width: 1
                            },
                            minorGrid: {
                                visible: false,
                                width: 1,
                                opacity: .3
                            },
                            tick: {
                                visible: true,
                                width: 1,
                                length: 7,
                                shift: 3
                            },
                            minorTick: {
                                visible: false,
                                width: 1,
                                opacity: .3,
                                length: 7,
                                shift: 3
                            },
                            stripStyle: {
                                paddingLeftRight: 10,
                                paddingTopBottom: 5
                            },
                            constantLineStyle: {
                                width: 1,
                                color: BLACK,
                                dashStyle: SOLID,
                                label: {
                                    visible: true,
                                    position: "inside"
                                }
                            },
                            marker: {
                                label: {}
                            }
                        },
                        "chart:common:annotation": {
                            font: {
                                color: "#333333"
                            },
                            tooltipEnabled: true,
                            border: {
                                width: 1,
                                color: "#dddddd",
                                dashStyle: SOLID,
                                visible: true
                            },
                            color: WHITE,
                            opacity: .9,
                            arrowLength: 14,
                            arrowWidth: 14,
                            paddingLeftRight: 10,
                            paddingTopBottom: 10,
                            shadow: {
                                opacity: .15,
                                offsetX: 0,
                                offsetY: 1,
                                blur: 4,
                                color: BLACK
                            },
                            image: {
                                width: 30,
                                height: 30
                            },
                            wordWrap: "normal",
                            textOverflow: "ellipsis",
                            allowDragging: false
                        },
                        chart: {
                            commonSeriesSettings: {
                                type: "line",
                                stack: "default",
                                aggregation: {
                                    enabled: void 0
                                },
                                point: {
                                    visible: true,
                                    symbol: "circle",
                                    size: 12,
                                    border: {
                                        visible: false,
                                        width: 1
                                    },
                                    hoverMode: "onlyPoint",
                                    selectionMode: "onlyPoint",
                                    hoverStyle: {
                                        border: {
                                            visible: true,
                                            width: 4
                                        }
                                    },
                                    selectionStyle: {
                                        border: {
                                            visible: true,
                                            width: 4
                                        }
                                    }
                                },
                                scatter: {},
                                line: {
                                    width: 2,
                                    dashStyle: SOLID,
                                    hoverStyle: {
                                        width: 3,
                                        hatching: {
                                            direction: NONE
                                        },
                                        highlight: false
                                    },
                                    selectionStyle: {
                                        width: 3
                                    }
                                },
                                stackedline: {
                                    width: 2,
                                    dashStyle: SOLID,
                                    hoverStyle: {
                                        width: 3,
                                        hatching: {
                                            direction: NONE
                                        },
                                        highlight: false
                                    },
                                    selectionStyle: {
                                        width: 3
                                    }
                                },
                                stackedspline: {
                                    width: 2,
                                    dashStyle: SOLID,
                                    hoverStyle: {
                                        width: 3,
                                        hatching: {
                                            direction: NONE
                                        },
                                        highlight: false
                                    },
                                    selectionStyle: {
                                        width: 3
                                    }
                                },
                                fullstackedline: {
                                    width: 2,
                                    dashStyle: SOLID,
                                    hoverStyle: {
                                        width: 3,
                                        hatching: {
                                            direction: NONE
                                        },
                                        highlight: false
                                    },
                                    selectionStyle: {
                                        width: 3
                                    }
                                },
                                fullstackedspline: {
                                    width: 2,
                                    dashStyle: SOLID,
                                    hoverStyle: {
                                        width: 3,
                                        hatching: {
                                            direction: NONE
                                        },
                                        highlight: false
                                    },
                                    selectionStyle: {
                                        width: 3
                                    }
                                },
                                stepline: {
                                    width: 2,
                                    dashStyle: SOLID,
                                    hoverStyle: {
                                        width: 3,
                                        hatching: {
                                            direction: NONE
                                        },
                                        highlight: false
                                    },
                                    selectionStyle: {
                                        width: 3
                                    }
                                },
                                area: {
                                    point: {
                                        visible: false
                                    },
                                    opacity: .5
                                },
                                stackedarea: {
                                    point: {
                                        visible: false
                                    },
                                    opacity: .5
                                },
                                fullstackedarea: {
                                    point: {
                                        visible: false
                                    },
                                    opacity: .5
                                },
                                fullstackedsplinearea: {
                                    point: {
                                        visible: false
                                    },
                                    opacity: .5
                                },
                                steparea: {
                                    border: {
                                        visible: true,
                                        width: 2
                                    },
                                    point: {
                                        visible: false
                                    },
                                    hoverStyle: {
                                        border: {
                                            visible: true,
                                            width: 3
                                        }
                                    },
                                    selectionStyle: {
                                        border: {
                                            visible: true,
                                            width: 3
                                        }
                                    },
                                    opacity: .5
                                },
                                spline: {
                                    width: 2,
                                    hoverStyle: {
                                        width: 3,
                                        hatching: {
                                            direction: NONE
                                        },
                                        highlight: false
                                    },
                                    selectionStyle: {
                                        width: 3
                                    }
                                },
                                splinearea: {
                                    point: {
                                        visible: false
                                    },
                                    opacity: .5
                                },
                                stackedsplinearea: {
                                    point: {
                                        visible: false
                                    },
                                    opacity: .5
                                },
                                bar: {
                                    cornerRadius: 0,
                                    point: {
                                        hoverStyle: {
                                            border: {
                                                visible: false
                                            }
                                        },
                                        selectionStyle: {
                                            border: {
                                                visible: false
                                            }
                                        }
                                    }
                                },
                                stackedbar: {
                                    cornerRadius: 0,
                                    point: {
                                        hoverStyle: {
                                            border: {
                                                visible: false
                                            }
                                        },
                                        selectionStyle: {
                                            border: {
                                                visible: false
                                            }
                                        }
                                    },
                                    label: {
                                        position: "inside"
                                    }
                                },
                                fullstackedbar: {
                                    cornerRadius: 0,
                                    point: {
                                        hoverStyle: {
                                            border: {
                                                visible: false
                                            }
                                        },
                                        selectionStyle: {
                                            border: {
                                                visible: false
                                            }
                                        }
                                    },
                                    label: {
                                        position: "inside"
                                    }
                                },
                                rangebar: {
                                    cornerRadius: 0,
                                    point: {
                                        hoverStyle: {
                                            border: {
                                                visible: false
                                            }
                                        },
                                        selectionStyle: {
                                            border: {
                                                visible: false
                                            }
                                        }
                                    }
                                },
                                rangearea: {
                                    point: {
                                        visible: false
                                    },
                                    opacity: .5
                                },
                                rangesplinearea: {
                                    point: {
                                        visible: false
                                    },
                                    opacity: .5
                                },
                                bubble: {
                                    opacity: .5,
                                    point: {
                                        hoverStyle: {
                                            border: {
                                                visible: false
                                            }
                                        },
                                        selectionStyle: {
                                            border: {
                                                visible: false
                                            }
                                        }
                                    }
                                },
                                candlestick: {
                                    width: 1,
                                    reduction: {
                                        color: RED
                                    },
                                    hoverStyle: {
                                        width: 3,
                                        hatching: {
                                            direction: NONE
                                        },
                                        highlight: false
                                    },
                                    selectionStyle: {
                                        width: 3,
                                        highlight: false
                                    },
                                    point: {
                                        border: {
                                            visible: true
                                        }
                                    }
                                },
                                stock: {
                                    width: 1,
                                    reduction: {
                                        color: RED
                                    },
                                    hoverStyle: {
                                        width: 3,
                                        hatching: {
                                            direction: NONE
                                        },
                                        highlight: false
                                    },
                                    selectionStyle: {
                                        width: 3,
                                        highlight: false
                                    },
                                    point: {
                                        border: {
                                            visible: true
                                        }
                                    }
                                }
                            },
                            crosshair: {
                                enabled: false,
                                color: "#f05b41",
                                width: 1,
                                dashStyle: SOLID,
                                label: {
                                    visible: false,
                                    font: {
                                        color: WHITE,
                                        size: 12
                                    }
                                },
                                verticalLine: {
                                    visible: true
                                },
                                horizontalLine: {
                                    visible: true
                                }
                            },
                            commonAxisSettings: {
                                multipleAxesSpacing: 5,
                                forceUserTickInterval: false,
                                breakStyle: {
                                    width: 5,
                                    color: "#ababab",
                                    line: "waved"
                                },
                                label: {
                                    displayMode: "standard",
                                    overlappingBehavior: "hide",
                                    indentFromAxis: 10,
                                    wordWrap: "normal",
                                    textOverflow: "none"
                                },
                                title: {
                                    font: {
                                        size: 16
                                    },
                                    margin: 6,
                                    alignment: CENTER
                                },
                                constantLineStyle: {
                                    paddingLeftRight: 10,
                                    paddingTopBottom: 10
                                }
                            },
                            horizontalAxis: {
                                position: "bottom",
                                axisDivisionFactor: 70,
                                label: {
                                    rotationAngle: 90,
                                    staggeringSpacing: 5,
                                    alignment: CENTER
                                },
                                stripStyle: {
                                    label: {
                                        horizontalAlignment: CENTER,
                                        verticalAlignment: TOP
                                    }
                                },
                                constantLineStyle: {
                                    label: {
                                        horizontalAlignment: RIGHT,
                                        verticalAlignment: TOP
                                    }
                                },
                                constantLines: []
                            },
                            verticalAxis: {
                                position: LEFT,
                                axisDivisionFactor: 40,
                                label: {
                                    alignment: RIGHT
                                },
                                stripStyle: {
                                    label: {
                                        horizontalAlignment: LEFT,
                                        verticalAlignment: CENTER
                                    }
                                },
                                constantLineStyle: {
                                    label: {
                                        horizontalAlignment: LEFT,
                                        verticalAlignment: TOP
                                    }
                                },
                                constantLines: []
                            },
                            argumentAxis: {
                                endOnTick: false,
                                aggregateByCategory: true,
                                workWeek: [1, 2, 3, 4, 5]
                            },
                            valueAxis: {
                                grid: {
                                    visible: true
                                },
                                autoBreaksEnabled: false,
                                maxAutoBreakCount: 4
                            },
                            commonPaneSettings: {
                                backgroundColor: NONE,
                                border: {
                                    color: "#d3d3d3",
                                    width: 1,
                                    visible: false,
                                    top: true,
                                    bottom: true,
                                    left: true,
                                    right: true,
                                    dashStyle: SOLID
                                }
                            },
                            scrollBar: {
                                visible: false,
                                offset: 5,
                                color: "gray",
                                width: 10
                            },
                            adjustOnZoom: true,
                            autoHidePointMarkers: true,
                            rotated: false,
                            synchronizeMultiAxes: true,
                            stickyHovering: true,
                            barGroupPadding: .3,
                            minBubbleSize: 12,
                            maxBubbleSize: .2,
                            zoomAndPan: {
                                dragBoxStyle: {
                                    color: "#2a2a2a",
                                    opacity: .2
                                },
                                panKey: "shift",
                                allowMouseWheel: true,
                                allowTouchGestures: true
                            }
                        },
                        pie: {
                            innerRadius: .5,
                            minDiameter: .5,
                            type: "pie",
                            dataPrepareSettings: {
                                _skipArgumentSorting: true
                            },
                            commonSeriesSettings: {
                                pie: {
                                    border: {
                                        visible: false,
                                        width: 2,
                                        color: WHITE
                                    },
                                    hoverStyle: {
                                        hatching: {
                                            direction: RIGHT,
                                            width: 4,
                                            step: 10,
                                            opacity: .75
                                        },
                                        highlight: true,
                                        border: {
                                            visible: false,
                                            width: 2
                                        }
                                    },
                                    selectionStyle: {
                                        hatching: {
                                            direction: RIGHT,
                                            width: 4,
                                            step: 10,
                                            opacity: .5
                                        },
                                        highlight: true,
                                        border: {
                                            visible: false,
                                            width: 2
                                        }
                                    }
                                },
                                doughnut: {
                                    border: {
                                        visible: false,
                                        width: 2,
                                        color: WHITE
                                    },
                                    hoverStyle: {
                                        hatching: {
                                            direction: RIGHT,
                                            width: 4,
                                            step: 10,
                                            opacity: .75
                                        },
                                        highlight: true,
                                        border: {
                                            visible: false,
                                            width: 2
                                        }
                                    },
                                    selectionStyle: {
                                        hatching: {
                                            direction: RIGHT,
                                            width: 4,
                                            step: 10,
                                            opacity: .5
                                        },
                                        highlight: true,
                                        border: {
                                            visible: false,
                                            width: 2
                                        }
                                    }
                                },
                                donut: {
                                    border: {
                                        visible: false,
                                        width: 2,
                                        color: WHITE
                                    },
                                    hoverStyle: {
                                        hatching: {
                                            direction: RIGHT,
                                            width: 4,
                                            step: 10,
                                            opacity: .75
                                        },
                                        highlight: true,
                                        border: {
                                            visible: false,
                                            width: 2
                                        }
                                    },
                                    selectionStyle: {
                                        hatching: {
                                            direction: RIGHT,
                                            width: 4,
                                            step: 10,
                                            opacity: .5
                                        },
                                        highlight: true,
                                        border: {
                                            visible: false,
                                            width: 2
                                        }
                                    }
                                },
                                label: {
                                    textOverflow: "ellipsis",
                                    wordWrap: "normal"
                                }
                            },
                            legend: {
                                hoverMode: "allArgumentPoints",
                                backgroundColor: NONE
                            },
                            adaptiveLayout: {
                                keepLabels: false
                            }
                        },
                        gauge: {
                            scale: {
                                tick: {
                                    visible: true,
                                    length: 5,
                                    width: 2,
                                    opacity: 1
                                },
                                minorTick: {
                                    visible: false,
                                    length: 3,
                                    width: 1,
                                    opacity: 1
                                },
                                label: {
                                    visible: true,
                                    alignment: CENTER,
                                    hideFirstOrLast: "last",
                                    overlappingBehavior: "hide"
                                },
                                position: TOP,
                                endOnTick: false
                            },
                            rangeContainer: {
                                offset: 0,
                                width: 5,
                                backgroundColor: "#808080"
                            },
                            valueIndicators: {
                                _default: {
                                    color: "#c2c2c2"
                                },
                                rangebar: {
                                    space: 2,
                                    size: 10,
                                    color: "#cbc5cf",
                                    backgroundColor: NONE,
                                    text: {
                                        indent: 0,
                                        font: {
                                            size: 14,
                                            color: null
                                        }
                                    }
                                },
                                twocolorneedle: {
                                    secondColor: "#e18e92"
                                },
                                trianglemarker: {
                                    space: 2,
                                    length: 14,
                                    width: 13,
                                    color: "#8798a5"
                                },
                                textcloud: {
                                    arrowLength: 5,
                                    horizontalOffset: 6,
                                    verticalOffset: 3,
                                    color: "#679ec5",
                                    text: {
                                        font: {
                                            color: WHITE,
                                            size: 18
                                        }
                                    }
                                }
                            },
                            indicator: {
                                hasPositiveMeaning: true,
                                layout: {
                                    horizontalAlignment: CENTER,
                                    verticalAlignment: "bottom"
                                },
                                text: {
                                    font: {
                                        size: 18
                                    }
                                }
                            },
                            _circular: {
                                scale: {
                                    scaleDivisionFactor: 17,
                                    orientation: "outside",
                                    label: {
                                        indentFromTick: 10
                                    }
                                },
                                rangeContainer: {
                                    orientation: "outside"
                                },
                                valueIndicatorType: "rectangleneedle",
                                subvalueIndicatorType: "trianglemarker",
                                valueIndicators: {
                                    _type: "rectangleneedle",
                                    _default: {
                                        offset: 20,
                                        indentFromCenter: 0,
                                        width: 2,
                                        spindleSize: 14,
                                        spindleGapSize: 10,
                                        beginAdaptingAtRadius: 50
                                    },
                                    triangleneedle: {
                                        width: 4
                                    },
                                    twocolorneedle: {
                                        space: 2,
                                        secondFraction: .4
                                    },
                                    rangebar: {
                                        offset: 30
                                    },
                                    trianglemarker: {
                                        offset: 6
                                    },
                                    textcloud: {
                                        offset: -6
                                    }
                                }
                            },
                            _linear: {
                                scale: {
                                    scaleDivisionFactor: 25,
                                    horizontalOrientation: RIGHT,
                                    verticalOrientation: "bottom",
                                    label: {
                                        indentFromTick: -10
                                    }
                                },
                                rangeContainer: {
                                    horizontalOrientation: RIGHT,
                                    verticalOrientation: "bottom"
                                },
                                valueIndicatorType: "rangebar",
                                subvalueIndicatorType: "trianglemarker",
                                valueIndicators: {
                                    _type: "rectangle",
                                    _default: {
                                        offset: 2.5,
                                        length: 15,
                                        width: 15
                                    },
                                    rectangle: {
                                        width: 10
                                    },
                                    rangebar: {
                                        offset: 10,
                                        horizontalOrientation: RIGHT,
                                        verticalOrientation: "bottom"
                                    },
                                    trianglemarker: {
                                        offset: 10,
                                        horizontalOrientation: LEFT,
                                        verticalOrientation: TOP
                                    },
                                    textcloud: {
                                        offset: -1,
                                        horizontalOrientation: LEFT,
                                        verticalOrientation: TOP
                                    }
                                }
                            }
                        },
                        barGauge: {
                            backgroundColor: "#e0e0e0",
                            relativeInnerRadius: .3,
                            barSpacing: 4,
                            resolveLabelOverlapping: "hide",
                            label: {
                                indent: 20,
                                connectorWidth: 2,
                                font: {
                                    size: 16
                                }
                            },
                            legend: {
                                visible: false
                            },
                            indicator: {
                                hasPositiveMeaning: true,
                                layout: {
                                    horizontalAlignment: CENTER,
                                    verticalAlignment: "bottom"
                                },
                                text: {
                                    font: {
                                        size: 18
                                    }
                                }
                            }
                        },
                        rangeSelector: {
                            scale: {
                                valueMarginsEnabled: true,
                                width: 1,
                                color: BLACK,
                                opacity: .1,
                                showCustomBoundaryTicks: true,
                                aggregateByCategory: true,
                                label: {
                                    overlappingBehavior: "hide",
                                    alignment: CENTER,
                                    visible: true,
                                    topIndent: 7,
                                    font: {
                                        size: 11
                                    }
                                },
                                tick: {
                                    width: 1,
                                    color: BLACK,
                                    opacity: .17,
                                    visible: true,
                                    length: 12
                                },
                                minorTick: {
                                    width: 1,
                                    color: BLACK,
                                    opacity: .05,
                                    visible: true,
                                    length: 12
                                },
                                marker: {
                                    width: 1,
                                    color: "#000000",
                                    opacity: .1,
                                    visible: true,
                                    separatorHeight: 33,
                                    topIndent: 10,
                                    textLeftIndent: 7,
                                    textTopIndent: 11,
                                    label: {}
                                },
                                logarithmBase: 10,
                                workWeek: [1, 2, 3, 4, 5],
                                breakStyle: {
                                    width: 5,
                                    color: "#ababab",
                                    line: "waved"
                                },
                                endOnTick: false
                            },
                            selectedRangeColor: "#606060",
                            sliderMarker: {
                                visible: true,
                                paddingTopBottom: 2,
                                paddingLeftRight: 4,
                                color: "#606060",
                                invalidRangeColor: RED,
                                font: {
                                    color: WHITE,
                                    size: 11
                                }
                            },
                            sliderHandle: {
                                width: 1,
                                color: BLACK,
                                opacity: .2
                            },
                            shutter: {
                                opacity: .75
                            },
                            background: {
                                color: "#c0bae1",
                                visible: true,
                                image: {
                                    location: "full"
                                }
                            },
                            behavior: {
                                snapToTicks: true,
                                animationEnabled: true,
                                moveSelectedRangeByClick: true,
                                manualRangeSelectionEnabled: true,
                                allowSlidersSwap: true,
                                valueChangeMode: "onHandleRelease"
                            },
                            redrawOnResize: true,
                            chart: {
                                barGroupPadding: .3,
                                minBubbleSize: 12,
                                maxBubbleSize: .2,
                                topIndent: .1,
                                bottomIndent: 0,
                                valueAxis: {
                                    inverted: false,
                                    logarithmBase: 10
                                },
                                commonSeriesSettings: {
                                    type: "area",
                                    aggregation: {
                                        enabled: void 0
                                    },
                                    point: {
                                        visible: false
                                    },
                                    scatter: {
                                        point: {
                                            visible: true
                                        }
                                    }
                                }
                            }
                        },
                        map: {
                            title: {
                                margin: 10
                            },
                            background: {
                                borderWidth: 1,
                                borderColor: "#cacaca"
                            },
                            layer: {
                                label: {
                                    enabled: false,
                                    stroke: WHITE,
                                    "stroke-width": 1,
                                    "stroke-opacity": .7,
                                    font: {
                                        color: "#2b2b2b",
                                        size: 12
                                    }
                                }
                            },
                            "layer:area": {
                                borderWidth: 1,
                                borderColor: WHITE,
                                color: "#d2d2d2",
                                hoveredBorderColor: "#303030",
                                selectedBorderWidth: 2,
                                selectedBorderColor: "#303030",
                                label: {
                                    "stroke-width": 2,
                                    font: {
                                        size: 16
                                    }
                                }
                            },
                            "layer:line": {
                                borderWidth: 2,
                                color: "#ba8365",
                                hoveredColor: "#a94813",
                                selectedBorderWidth: 3,
                                selectedColor: "#e55100",
                                label: {
                                    "stroke-width": 2,
                                    font: {
                                        size: 16
                                    }
                                }
                            },
                            "layer:marker": {
                                label: {
                                    enabled: true,
                                    "stroke-width": 1,
                                    font: {
                                        size: 12
                                    }
                                }
                            },
                            "layer:marker:dot": {
                                borderWidth: 2,
                                borderColor: WHITE,
                                size: 8,
                                selectedStep: 2,
                                backStep: 18,
                                backColor: WHITE,
                                backOpacity: .32,
                                shadow: true
                            },
                            "layer:marker:bubble": {
                                minSize: 20,
                                maxSize: 50,
                                hoveredBorderWidth: 1,
                                hoveredBorderColor: "#303030",
                                selectedBorderWidth: 2,
                                selectedBorderColor: "#303030"
                            },
                            "layer:marker:pie": {
                                size: 50,
                                hoveredBorderWidth: 1,
                                hoveredBorderColor: "#303030",
                                selectedBorderWidth: 2,
                                selectedBorderColor: "#303030"
                            },
                            "layer:marker:image": {
                                size: 20
                            },
                            legend: {
                                verticalAlignment: "bottom",
                                horizontalAlignment: RIGHT,
                                position: "inside",
                                backgroundOpacity: .65,
                                border: {
                                    visible: true
                                },
                                paddingLeftRight: 16,
                                paddingTopBottom: 12
                            },
                            controlBar: {
                                borderColor: "#5d5d5d",
                                borderWidth: 3,
                                color: WHITE,
                                margin: 20,
                                opacity: .3
                            },
                            _rtl: {
                                legend: {
                                    itemTextPosition: LEFT
                                }
                            }
                        },
                        treeMap: {
                            tile: {
                                border: {
                                    width: 1,
                                    opacity: .2,
                                    color: "#000000"
                                },
                                color: "#5f8b95",
                                hoverStyle: {
                                    hatching: {
                                        opacity: .75,
                                        step: 6,
                                        width: 2,
                                        direction: "right"
                                    },
                                    border: {}
                                },
                                selectionStyle: {
                                    hatching: {
                                        opacity: .5,
                                        step: 6,
                                        width: 2,
                                        direction: "right"
                                    },
                                    border: {
                                        opacity: 1
                                    }
                                },
                                label: {
                                    visible: true,
                                    paddingLeftRight: 5,
                                    paddingTopBottom: 4,
                                    font: {
                                        color: "#ffffff",
                                        weight: 600
                                    },
                                    shadow: {
                                        opacity: .6,
                                        offsetX: 0,
                                        offsetY: 1,
                                        blur: 2,
                                        color: "#000000"
                                    },
                                    wordWrap: "normal",
                                    textOverflow: "ellipsis"
                                }
                            },
                            group: {
                                padding: 4,
                                border: {
                                    width: 1
                                },
                                color: "#eeeeee",
                                hoverStyle: {
                                    hatching: {
                                        opacity: 0,
                                        step: 6,
                                        width: 2,
                                        direction: "right"
                                    },
                                    border: {}
                                },
                                selectionStyle: {
                                    hatching: {
                                        opacity: 0,
                                        step: 6,
                                        width: 2,
                                        direction: "right"
                                    },
                                    border: {}
                                },
                                label: {
                                    visible: true,
                                    paddingLeftRight: 5,
                                    paddingTopBottom: 4,
                                    font: {
                                        color: "#767676",
                                        weight: 600
                                    },
                                    textOverflow: "ellipsis"
                                }
                            },
                            title: {
                                subtitle: {}
                            },
                            tooltip: {},
                            loadingIndicator: {}
                        },
                        sparkline: {
                            lineColor: "#666666",
                            lineWidth: 2,
                            areaOpacity: .2,
                            minColor: "#e8c267",
                            maxColor: "#e55253",
                            barPositiveColor: "#a9a9a9",
                            barNegativeColor: "#d7d7d7",
                            winColor: "#a9a9a9",
                            lossColor: "#d7d7d7",
                            firstLastColor: "#666666",
                            pointSymbol: "circle",
                            pointColor: WHITE,
                            pointSize: 4,
                            type: "line",
                            argumentField: "arg",
                            valueField: "val",
                            winlossThreshold: 0,
                            showFirstLast: true,
                            showMinMax: false,
                            tooltip: {
                                enabled: true
                            }
                        },
                        bullet: {
                            color: "#e8c267",
                            targetColor: "#666666",
                            targetWidth: 4,
                            showTarget: true,
                            showZeroLevel: true,
                            tooltip: {
                                enabled: true
                            }
                        },
                        polar: {
                            commonSeriesSettings: {
                                type: "scatter",
                                closed: true,
                                point: {
                                    visible: true,
                                    symbol: "circle",
                                    size: 12,
                                    border: {
                                        visible: false,
                                        width: 1
                                    },
                                    hoverMode: "onlyPoint",
                                    selectionMode: "onlyPoint",
                                    hoverStyle: {
                                        border: {
                                            visible: true,
                                            width: 4
                                        },
                                        size: 12
                                    },
                                    selectionStyle: {
                                        border: {
                                            visible: true,
                                            width: 4
                                        },
                                        size: 12
                                    }
                                },
                                scatter: {},
                                line: {
                                    width: 2,
                                    dashStyle: SOLID,
                                    hoverStyle: {
                                        width: 3,
                                        hatching: {
                                            direction: NONE
                                        }
                                    },
                                    selectionStyle: {
                                        width: 3
                                    }
                                },
                                area: {
                                    point: {
                                        visible: false
                                    },
                                    opacity: .5
                                },
                                stackedline: {
                                    width: 2
                                },
                                bar: {
                                    opacity: .8
                                },
                                stackedbar: {
                                    opacity: .8
                                }
                            },
                            adaptiveLayout: {
                                width: 80,
                                height: 80,
                                keepLabels: true
                            },
                            barGroupPadding: .3,
                            commonAxisSettings: {
                                visible: true,
                                forceUserTickInterval: false,
                                label: {
                                    overlappingBehavior: "hide",
                                    indentFromAxis: 5
                                },
                                grid: {
                                    visible: true
                                },
                                minorGrid: {
                                    visible: true
                                },
                                tick: {
                                    visible: true
                                },
                                title: {
                                    font: {
                                        size: 16
                                    },
                                    margin: 10
                                }
                            },
                            argumentAxis: {
                                startAngle: 0,
                                firstPointOnStartAngle: false,
                                period: void 0
                            },
                            valueAxis: {
                                endOnTick: false,
                                tick: {
                                    visible: false
                                }
                            },
                            horizontalAxis: {
                                position: TOP,
                                axisDivisionFactor: 50,
                                label: {
                                    alignment: CENTER
                                }
                            },
                            verticalAxis: {
                                position: TOP,
                                axisDivisionFactor: 30,
                                label: {
                                    alignment: RIGHT
                                }
                            }
                        },
                        funnel: {
                            sortData: true,
                            valueField: "val",
                            colorField: "color",
                            argumentField: "arg",
                            hoverEnabled: true,
                            selectionMode: "single",
                            item: {
                                border: {
                                    visible: false,
                                    width: 2,
                                    color: WHITE
                                },
                                hoverStyle: {
                                    hatching: {
                                        opacity: .75,
                                        step: 6,
                                        width: 2,
                                        direction: RIGHT
                                    },
                                    border: {}
                                },
                                selectionStyle: {
                                    hatching: {
                                        opacity: .5,
                                        step: 6,
                                        width: 2,
                                        direction: RIGHT
                                    },
                                    border: {}
                                }
                            },
                            title: {
                                margin: 10
                            },
                            adaptiveLayout: {
                                width: 80,
                                height: 80,
                                keepLabels: true
                            },
                            legend: {
                                visible: false
                            },
                            _rtl: {
                                legend: {
                                    itemTextPosition: LEFT
                                }
                            },
                            tooltip: {
                                customizeTooltip: function(info) {
                                    return {
                                        text: info.item.argument + " " + info.valueText
                                    }
                                }
                            },
                            inverted: false,
                            algorithm: "dynamicSlope",
                            neckWidth: 0,
                            neckHeight: 0,
                            resolveLabelOverlapping: "shift",
                            label: {
                                textOverflow: "ellipsis",
                                wordWrap: "normal",
                                visible: true,
                                horizontalAlignment: RIGHT,
                                horizontalOffset: 0,
                                verticalOffset: 0,
                                showForZeroValues: false,
                                customizeText: function(info) {
                                    return info.item.argument + " " + info.valueText
                                },
                                position: "columns",
                                font: {
                                    color: WHITE
                                },
                                border: {
                                    visible: false,
                                    width: 1,
                                    color: "#d3d3d3",
                                    dashStyle: SOLID
                                },
                                connector: {
                                    visible: true,
                                    width: 1,
                                    opacity: .5
                                }
                            }
                        },
                        sankey: {
                            sourceField: "source",
                            targetField: "target",
                            weightField: "weight",
                            hoverEnabled: true,
                            alignment: CENTER,
                            adaptiveLayout: {
                                width: 80,
                                height: 80,
                                keepLabels: true
                            },
                            label: {
                                visible: true,
                                horizontalOffset: 8,
                                verticalOffset: 0,
                                overlappingBehavior: "ellipsis",
                                useNodeColors: false,
                                font: {
                                    color: BLACK,
                                    weight: 500
                                },
                                border: {
                                    visible: false,
                                    width: 2,
                                    color: WHITE
                                },
                                customizeText: function(info) {
                                    return info.title
                                },
                                shadow: {
                                    opacity: .2,
                                    offsetX: 0,
                                    offsetY: 1,
                                    blur: 1,
                                    color: WHITE
                                }
                            },
                            title: {
                                margin: 10,
                                font: {
                                    size: 28,
                                    weight: 200
                                },
                                subtitle: {
                                    font: {
                                        size: 16
                                    }
                                }
                            },
                            tooltip: {
                                enabled: true
                            },
                            node: {
                                padding: 30,
                                width: 8,
                                opacity: 1,
                                border: {
                                    color: WHITE,
                                    width: 1,
                                    visible: false
                                },
                                hoverStyle: {
                                    hatching: {
                                        opacity: .75,
                                        step: 6,
                                        width: 2,
                                        direction: RIGHT
                                    },
                                    border: {}
                                }
                            },
                            link: {
                                color: "#888888",
                                colorMode: "none",
                                opacity: .3,
                                border: {
                                    color: WHITE,
                                    width: 1,
                                    visible: false
                                },
                                hoverStyle: {
                                    opacity: .5,
                                    hatching: {
                                        opacity: .75,
                                        step: 6,
                                        width: 2,
                                        direction: RIGHT
                                    },
                                    border: {}
                                }
                            }
                        }
                    },
                    baseThemeName: void 0
                }, {
                    theme: {
                        name: "generic.light.compact"
                    },
                    baseThemeName: "generic.light"
                }];
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        60350:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/themes/generic.softblue.js ***!
              \*********************************************************************************/
            function(module, exports) {
                exports.default = void 0;
                var _default = [{
                    theme: {
                        name: "generic.softblue",
                        defaultPalette: "Soft Blue",
                        backgroundColor: "#fff",
                        primaryTitleColor: "#333",
                        secondaryTitleColor: "#99a1a8",
                        gridColor: "#e8eaeb",
                        axisColor: "#707070",
                        export: {
                            backgroundColor: "#fff",
                            font: {
                                color: "#333"
                            },
                            button: {
                                default: {
                                    color: "#333",
                                    borderColor: "#c9d0d4",
                                    backgroundColor: "#fff"
                                },
                                hover: {
                                    color: "#333",
                                    borderColor: "#a7b2b9",
                                    backgroundColor: "#e6e6e6"
                                },
                                focus: {
                                    color: "#333",
                                    borderColor: "#82929b",
                                    backgroundColor: "#e6e6e6"
                                },
                                active: {
                                    color: "#333",
                                    borderColor: "#82929b",
                                    backgroundColor: "#d4d4d4"
                                }
                            }
                        },
                        legend: {
                            font: {
                                color: "#707070"
                            }
                        },
                        tooltip: {
                            color: "#fff",
                            border: {
                                color: "#e8eaeb"
                            },
                            font: {
                                color: "#333"
                            }
                        },
                        "chart:common": {
                            commonSeriesSettings: {
                                label: {
                                    border: {
                                        color: "#e8eaeb"
                                    }
                                }
                            }
                        },
                        "chart:common:annotation": {
                            color: "#fff",
                            border: {
                                color: "#e8eaeb"
                            },
                            font: {
                                color: "#333"
                            }
                        },
                        chart: {
                            commonPaneSettings: {
                                border: {
                                    color: "#e8eaeb"
                                }
                            },
                            commonAxisSettings: {
                                breakStyle: {
                                    color: "#cfd2d3"
                                }
                            }
                        },
                        rangeSelector: {
                            scale: {
                                breakStyle: {
                                    color: "#cfd2d3"
                                },
                                tick: {
                                    opacity: .12
                                }
                            },
                            selectedRangeColor: "#7ab8eb",
                            sliderMarker: {
                                color: "#7ab8eb"
                            },
                            sliderHandle: {
                                color: "#7ab8eb",
                                opacity: .5
                            }
                        },
                        sparkline: {
                            pointColor: "#fff",
                            minColor: "#f0ad4e",
                            maxColor: "#d9534f"
                        },
                        treeMap: {
                            group: {
                                color: "#e8eaeb",
                                label: {
                                    font: {
                                        color: "#99a1a8"
                                    }
                                }
                            }
                        },
                        bullet: {
                            color: "#7ab8eb"
                        },
                        gauge: {
                            valueIndicators: {
                                rangebar: {
                                    color: "#7ab8eb"
                                },
                                textcloud: {
                                    color: "#7ab8eb"
                                }
                            }
                        }
                    },
                    baseThemeName: "generic.light"
                }, {
                    theme: {
                        name: "generic.softblue.compact"
                    },
                    baseThemeName: "generic.softblue"
                }];
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        11239:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/themes/material.js ***!
              \*************************************************************************/
            function(module, exports) {
                exports.default = void 0;
                const FONT_FAMILY = "'Roboto', 'RobotoFallback', 'Helvetica', 'Arial', sans-serif";
                const WHITE = "#ffffff";
                const themes = [{
                    theme: {
                        name: "material",
                        defaultPalette: "Material",
                        font: {
                            family: FONT_FAMILY
                        },
                        title: {
                            margin: {
                                top: 20,
                                bottom: 20,
                                left: 0,
                                right: 0
                            },
                            font: {
                                size: 20,
                                family: FONT_FAMILY,
                                weight: 500
                            },
                            horizontalAlignment: "left",
                            subtitle: {
                                font: {
                                    size: 14
                                },
                                horizontalAlignment: "left"
                            }
                        },
                        tooltip: {
                            shadow: {
                                opacity: 0
                            },
                            border: {
                                visible: false
                            },
                            paddingLeftRight: 8,
                            paddingTopBottom: 6,
                            arrowLength: 0,
                            location: "edge",
                            color: "#616161",
                            font: {
                                color: WHITE
                            },
                            cornerRadius: 4
                        },
                        chart: {
                            commonAxisSettings: {
                                minorTick: {
                                    opacity: .5
                                },
                                label: {
                                    font: {
                                        size: 11
                                    }
                                }
                            },
                            commonAnnotationSettings: {
                                font: {
                                    color: WHITE
                                },
                                border: {
                                    color: "#616161"
                                },
                                color: "#616161",
                                arrowLength: 14,
                                arrowWidth: 0,
                                shadow: {
                                    opacity: .08,
                                    offsetY: 4,
                                    blur: 8
                                },
                                cornerRadius: 4
                            }
                        },
                        pie: {
                            title: {
                                horizontalAlignment: "center",
                                subtitle: {
                                    horizontalAlignment: "center"
                                }
                            }
                        },
                        polar: {
                            commonAxisSettings: {
                                minorTick: {
                                    opacity: .5
                                }
                            },
                            title: {
                                horizontalAlignment: "center",
                                subtitle: {
                                    horizontalAlignment: "center"
                                }
                            }
                        },
                        funnel: {
                            title: {
                                horizontalAlignment: "center",
                                subtitle: {
                                    horizontalAlignment: "center"
                                }
                            }
                        },
                        gauge: {
                            title: {
                                horizontalAlignment: "center",
                                subtitle: {
                                    horizontalAlignment: "center"
                                }
                            }
                        },
                        barGauge: {
                            title: {
                                horizontalAlignment: "center",
                                subtitle: {
                                    horizontalAlignment: "center"
                                }
                            }
                        },
                        rangeSelector: {
                            sliderHandle: {
                                opacity: .5
                            }
                        },
                        treeMap: {
                            group: {
                                label: {
                                    font: {
                                        weight: 500
                                    }
                                }
                            }
                        }
                    },
                    baseThemeName: "generic.light"
                }, {
                    theme: {
                        name: "material.light",
                        gridColor: "#e0e0e0",
                        axisColor: "rgba(0,0,0,0.54)",
                        primaryTitleColor: "rgba(0,0,0,0.87)",
                        legend: {
                            font: {
                                color: "rgba(0,0,0,0.54)"
                            }
                        },
                        chart: {
                            scrollBar: {
                                color: "#bfbfbf",
                                opacity: .7
                            }
                        },
                        gauge: {
                            rangeContainer: {
                                backgroundColor: "rgba(0,0,0,0.2)"
                            }
                        },
                        barGauge: {
                            backgroundColor: "#efefef"
                        }
                    },
                    baseThemeName: "material"
                }, {
                    theme: {
                        name: "material.dark",
                        gridColor: "#515159",
                        backgroundColor: "#363640",
                        axisColor: "rgba(255,255,255,0.54)",
                        font: {
                            color: "rgba(255,255,255,0.54)"
                        },
                        primaryTitleColor: "rgba(255,255,255,0.87)",
                        secondaryTitleColor: "rgba(255,255,255,0.87)",
                        tooltip: {
                            color: "#000"
                        },
                        export: {
                            backgroundColor: "#363640",
                            font: {
                                color: "#dbdbdb"
                            },
                            button: {
                                default: {
                                    color: "#dedede",
                                    borderColor: "#4d4d4d",
                                    backgroundColor: "#363640"
                                },
                                hover: {
                                    color: "#dedede",
                                    borderColor: "#6c6c6c",
                                    backgroundColor: "#3f3f4b"
                                },
                                focus: {
                                    color: "#dedede",
                                    borderColor: "#8d8d8d",
                                    backgroundColor: "#494956"
                                },
                                active: {
                                    color: "#dedede",
                                    borderColor: "#8d8d8d",
                                    backgroundColor: "#494956"
                                }
                            },
                            shadowColor: "#292929"
                        },
                        "chart:common": {
                            commonSeriesSettings: {
                                label: {
                                    border: {
                                        color: "#494949"
                                    }
                                },
                                valueErrorBar: {
                                    color: WHITE
                                }
                            }
                        },
                        "chart:common:axis": {
                            constantLineStyle: {
                                color: WHITE
                            }
                        },
                        "chart:common:annotation": {
                            border: {
                                color: "#000"
                            },
                            color: "#000"
                        },
                        chart: {
                            commonPaneSettings: {
                                border: {
                                    color: "#494949"
                                }
                            },
                            commonAxisSettings: {
                                breakStyle: {
                                    color: "#818181"
                                }
                            },
                            zoomAndPan: {
                                dragBoxStyle: {
                                    color: WHITE
                                }
                            }
                        },
                        gauge: {
                            rangeContainer: {
                                backgroundColor: "#b5b5b5"
                            },
                            valueIndicators: {
                                _default: {
                                    color: "#b5b5b5"
                                },
                                rangebar: {
                                    color: "#84788b"
                                },
                                twocolorneedle: {
                                    secondColor: "#ba544d"
                                },
                                trianglemarker: {
                                    color: "#b7918f"
                                },
                                textcloud: {
                                    color: "#ba544d"
                                }
                            }
                        },
                        barGauge: {
                            backgroundColor: "#3c3c3c"
                        },
                        rangeSelector: {
                            scale: {
                                tick: {
                                    color: WHITE,
                                    opacity: .32
                                },
                                minorTick: {
                                    color: WHITE,
                                    opacity: .1
                                },
                                breakStyle: {
                                    color: "#818181"
                                }
                            },
                            selectedRangeColor: "#b5b5b5",
                            sliderMarker: {
                                color: "#b5b5b5",
                                font: {
                                    color: "#363640"
                                }
                            },
                            sliderHandle: {
                                color: WHITE,
                                opacity: .2
                            },
                            shutter: {
                                color: WHITE,
                                opacity: .1
                            }
                        },
                        map: {
                            background: {
                                borderColor: "#3f3f3f"
                            },
                            layer: {
                                label: {
                                    stroke: "#000000",
                                    font: {
                                        color: WHITE
                                    }
                                }
                            },
                            "layer:area": {
                                borderColor: "#363640",
                                color: "#686868",
                                hoveredBorderColor: WHITE,
                                selectedBorderColor: WHITE
                            },
                            "layer:line": {
                                color: "#c77244",
                                hoveredColor: "#ff5d04",
                                selectedColor: "#ff784f"
                            },
                            "layer:marker:bubble": {
                                hoveredBorderColor: WHITE,
                                selectedBorderColor: WHITE
                            },
                            "layer:marker:pie": {
                                hoveredBorderColor: WHITE,
                                selectedBorderColor: WHITE
                            },
                            legend: {
                                border: {
                                    color: "#3f3f3f"
                                },
                                font: {
                                    color: WHITE
                                }
                            },
                            controlBar: {
                                borderColor: "#c7c7c7",
                                color: "#363640"
                            }
                        },
                        treeMap: {
                            group: {
                                color: "#4c4c4c",
                                label: {
                                    font: {
                                        color: "#a3a3a3"
                                    }
                                }
                            }
                        },
                        sparkline: {
                            lineColor: "#c7c7c7",
                            firstLastColor: "#c7c7c7",
                            barPositiveColor: "#b8b8b8",
                            barNegativeColor: "#8e8e8e",
                            winColor: "#b8b8b8",
                            lossColor: "#8e8e8e",
                            pointColor: "#363640"
                        },
                        bullet: {
                            targetColor: "#8e8e8e"
                        },
                        funnel: {
                            item: {
                                border: {
                                    color: "#363640"
                                }
                            }
                        },
                        sankey: {
                            label: {
                                font: {
                                    color: WHITE
                                }
                            }
                        }
                    },
                    baseThemeName: "material"
                }];

                function getMaterialColorScheme(accentName, themeName, accentColor) {
                    return {
                        theme: {
                            name: "material." + accentName + "." + themeName,
                            rangeSelector: {
                                selectedRangeColor: accentColor,
                                sliderMarker: {
                                    color: accentColor
                                },
                                sliderHandle: {
                                    color: accentColor
                                }
                            },
                            map: {
                                "layer:marker:dot": {
                                    color: accentColor
                                },
                                "layer:marker:bubble": {
                                    color: accentColor
                                },
                                legend: {
                                    markerColor: accentColor
                                }
                            },
                            bullet: {
                                color: accentColor
                            },
                            gauge: {
                                valueIndicators: {
                                    rangebar: {
                                        color: accentColor
                                    },
                                    textcloud: {
                                        color: accentColor
                                    }
                                }
                            }
                        },
                        baseThemeName: "material." + themeName
                    }
                }
                const materialAccents = {
                    blue: "#03a9f4",
                    lime: "#cddc39",
                    orange: "#ff5722",
                    purple: "#9c27b0",
                    teal: "#009688"
                };
                for (const accent in materialAccents) {
                    if (Object.prototype.hasOwnProperty.call(materialAccents, accent)) {
                        const color = materialAccents[accent];
                        themes.push(getMaterialColorScheme(accent, "light", color), getMaterialColorScheme(accent, "dark", color), {
                            theme: {
                                name: "material.".concat(accent, ".light.compact")
                            },
                            baseThemeName: "material.".concat(accent, ".light")
                        }, {
                            theme: {
                                name: "material.".concat(accent, ".dark.compact")
                            },
                            baseThemeName: "material.".concat(accent, ".dark")
                        })
                    }
                }
                var _default = themes;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        17384:
            /*!***************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/title.js ***!
              \***************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.plugin = exports.Title = void 0;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _utils = __webpack_require__( /*! ./utils */ 19157);
                var _layout_element = __webpack_require__( /*! ./layout_element */ 73711);
                const _Number = Number;
                const parseHorizontalAlignment = (0, _utils.enumParser)(["left", "center", "right"]);
                const parseVerticalAlignment = (0, _utils.enumParser)(["top", "bottom"]);

                function hasText(text) {
                    return !!(text && String(text).length > 0)
                }

                function processTitleLength(elem, text, width, options, placeholderSize) {
                    if (elem.attr({
                            text: text
                        }).setMaxSize(width, placeholderSize, options).textChanged) {
                        elem.setTitle(text)
                    }
                }

                function pickMarginValue(value) {
                    return value >= 0 ? _Number(value) : 10
                }
                let Title = function(params) {
                    this._params = params;
                    this._group = params.renderer.g().attr({
                        class: params.cssClass
                    }).linkOn(params.root || params.renderer.root, "title");
                    this._hasText = false
                };
                exports.Title = Title;
                (0, _extend.extend)(Title.prototype, _layout_element.LayoutElement.prototype, {
                    dispose: function() {
                        const that = this;
                        that._group.linkRemove();
                        that._group.linkOff();
                        if (that._titleElement) {
                            that._clipRect.dispose();
                            that._titleElement = that._subtitleElement = that._clipRect = null
                        }
                        that._params = that._group = that._options = null
                    },
                    _updateOptions: function(options) {
                        this._options = options;
                        this._options.horizontalAlignment = parseHorizontalAlignment(options.horizontalAlignment, "center");
                        this._options.verticalAlignment = parseVerticalAlignment(options.verticalAlignment, "top");
                        this._options.margin = function(margin) {
                            let result;
                            if (margin >= 0) {
                                result = {
                                    left: _Number(margin),
                                    top: _Number(margin),
                                    right: _Number(margin),
                                    bottom: _Number(margin)
                                }
                            } else {
                                margin = margin || {};
                                result = {
                                    left: pickMarginValue(margin.left),
                                    top: pickMarginValue(margin.top),
                                    right: pickMarginValue(margin.right),
                                    bottom: pickMarginValue(margin.bottom)
                                }
                            }
                            return result
                        }(options.margin)
                    },
                    _updateStructure: function() {
                        const that = this;
                        const renderer = that._params.renderer;
                        const group = that._group;
                        const options = that._options;
                        const align = options.horizontalAlignment;
                        if (!that._titleElement) {
                            that._titleElement = renderer.text().append(group);
                            that._subtitleElement = renderer.text();
                            that._clipRect = renderer.clipRect();
                            group.attr({
                                "clip-path": that._clipRect.id
                            })
                        }
                        that._titleElement.attr({
                            align: align,
                            class: options.cssClass
                        });
                        that._subtitleElement.attr({
                            align: align,
                            class: options.subtitle.cssClass
                        });
                        group.linkAppend();
                        hasText(options.subtitle.text) ? that._subtitleElement.append(group) : that._subtitleElement.remove()
                    },
                    _updateTexts: function() {
                        const options = this._options;
                        const subtitleOptions = options.subtitle;
                        const titleElement = this._titleElement;
                        const subtitleElement = this._subtitleElement;
                        let titleBox;
                        titleElement.attr({
                            text: "A",
                            y: 0
                        }).css((0, _utils.patchFontOptions)(options.font));
                        titleBox = titleElement.getBBox();
                        this._baseLineCorrection = titleBox.height + titleBox.y;
                        titleElement.attr({
                            text: options.text
                        });
                        titleBox = titleElement.getBBox();
                        const y = -titleBox.y;
                        titleElement.attr({
                            y: y
                        });
                        if (hasText(subtitleOptions.text)) {
                            subtitleElement.attr({
                                text: subtitleOptions.text,
                                y: 0
                            }).css((0, _utils.patchFontOptions)(subtitleOptions.font))
                        }
                    },
                    _shiftSubtitle() {
                        const titleBox = this._titleElement.getBBox();
                        const element = this._subtitleElement;
                        const offset = this._options.subtitle.offset;
                        element.move(0, titleBox.y + titleBox.height - element.getBBox().y - offset)
                    },
                    _updateBoundingRectAlignment: function() {
                        const boundingRect = this._boundingRect;
                        const options = this._options;
                        boundingRect.verticalAlignment = options.verticalAlignment;
                        boundingRect.horizontalAlignment = options.horizontalAlignment;
                        boundingRect.cutLayoutSide = options.verticalAlignment;
                        boundingRect.cutSide = "vertical";
                        boundingRect.position = {
                            horizontal: options.horizontalAlignment,
                            vertical: options.verticalAlignment
                        }
                    },
                    hasText: function() {
                        return this._hasText
                    },
                    update: function(themeOptions, userOptions) {
                        const that = this;
                        const options = (0, _extend.extend)(true, {}, themeOptions, function(options) {
                            const newOptions = (0, _type.isString)(options) ? {
                                text: options
                            } : options || {};
                            newOptions.subtitle = (0, _type.isString)(newOptions.subtitle) ? {
                                text: newOptions.subtitle
                            } : newOptions.subtitle || {};
                            return newOptions
                        }(userOptions));
                        const _hasText = hasText(options.text);
                        const isLayoutChanged = _hasText || _hasText !== that._hasText;
                        that._baseLineCorrection = 0;
                        that._updateOptions(options);
                        that._boundingRect = {};
                        if (_hasText) {
                            that._updateStructure();
                            that._updateTexts()
                        } else {
                            that._group.linkRemove()
                        }
                        that._updateBoundingRect();
                        that._updateBoundingRectAlignment();
                        that._hasText = _hasText;
                        return isLayoutChanged
                    },
                    draw: function(width, height) {
                        const that = this;
                        if (that._hasText) {
                            that._group.linkAppend();
                            that._correctTitleLength(width);
                            if (that._group.getBBox().height > height) {
                                this.freeSpace()
                            }
                        }
                        return that
                    },
                    _correctTitleLength: function(width) {
                        const that = this;
                        const options = that._options;
                        const margin = options.margin;
                        const maxWidth = width - margin.left - margin.right;
                        let placeholderSize = options.placeholderSize;
                        processTitleLength(that._titleElement, options.text, maxWidth, options, placeholderSize);
                        if (that._subtitleElement) {
                            if (_Number(placeholderSize) > 0) {
                                placeholderSize -= that._titleElement.getBBox().height
                            }
                            processTitleLength(that._subtitleElement, options.subtitle.text, maxWidth, options.subtitle, placeholderSize);
                            that._shiftSubtitle()
                        }
                        that._updateBoundingRect();
                        const {
                            x: x,
                            y: y,
                            height: height
                        } = this.getCorrectedLayoutOptions();
                        this._clipRect.attr({
                            x: x,
                            y: y,
                            width: width,
                            height: height
                        })
                    },
                    getLayoutOptions: function() {
                        return this._boundingRect || null
                    },
                    shift: function(x, y) {
                        const box = this.getLayoutOptions();
                        this._group.move(x - box.x, y - box.y);
                        return this
                    },
                    _updateBoundingRect: function() {
                        const that = this;
                        const options = that._options;
                        const margin = options.margin;
                        const boundingRect = that._boundingRect;
                        const box = that._hasText ? that._group.getBBox() : {
                            width: 0,
                            height: 0,
                            x: 0,
                            y: 0,
                            isEmpty: true
                        };
                        if (!box.isEmpty) {
                            box.height += margin.top + margin.bottom - that._baseLineCorrection;
                            box.width += margin.left + margin.right;
                            box.x -= margin.left;
                            box.y += that._baseLineCorrection - margin.top
                        }
                        if (options.placeholderSize > 0) {
                            box.height = options.placeholderSize
                        }
                        boundingRect.height = box.height;
                        boundingRect.width = box.width;
                        boundingRect.x = box.x;
                        boundingRect.y = box.y
                    },
                    getCorrectedLayoutOptions() {
                        const srcBox = this.getLayoutOptions();
                        const correction = this._baseLineCorrection;
                        return (0, _extend.extend)({}, srcBox, {
                            y: srcBox.y - correction,
                            height: srcBox.height + correction
                        })
                    },
                    layoutOptions: function() {
                        if (!this._hasText) {
                            return null
                        }
                        return {
                            horizontalAlignment: this._boundingRect.horizontalAlignment,
                            verticalAlignment: this._boundingRect.verticalAlignment,
                            priority: 0
                        }
                    },
                    measure: function(size) {
                        this.draw(size[0], size[1]);
                        return [this._boundingRect.width, this._boundingRect.height]
                    },
                    move: function(rect, fitRect) {
                        const boundingRect = this._boundingRect;
                        if (function(rect, boundingRect) {
                                return rect[2] - rect[0] < boundingRect.width || rect[3] - rect[1] < boundingRect.height
                            }(rect, boundingRect)) {
                            this.shift(fitRect[0], fitRect[1])
                        } else {
                            this.shift(Math.round(rect[0]), Math.round(rect[1]))
                        }
                    },
                    freeSpace: function() {
                        this._params.incidentOccurred("W2103");
                        this._group.linkRemove();
                        this._boundingRect.width = this._boundingRect.height = 0
                    },
                    getOptions: function() {
                        return this._options
                    },
                    changeLink: function(root) {
                        this._group.linkRemove();
                        this._group.linkOn(root, "title")
                    }
                });
                const plugin = {
                    name: "title",
                    init: function() {
                        this._title = new Title({
                            renderer: this._renderer,
                            cssClass: this._rootClassPrefix + "-title",
                            incidentOccurred: this._incidentOccurred
                        });
                        this._layout.add(this._title)
                    },
                    dispose: function() {
                        this._title.dispose();
                        this._title = null
                    },
                    customize: function(constructor) {
                        constructor.addChange({
                            code: "TITLE",
                            handler: function() {
                                if (this._title.update(this._themeManager.theme("title"), this.option("title"))) {
                                    this._change(["LAYOUT"])
                                }
                            },
                            isThemeDependent: true,
                            option: "title",
                            isOptionChange: true
                        })
                    },
                    fontFields: ["title.font", "title.subtitle.font"]
                };
                exports.plugin = plugin
            },
        14371:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/tooltip.js ***!
              \*****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.plugin = exports.Tooltip = void 0;
                var _size = __webpack_require__( /*! ../../core/utils/size */ 58664);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _dom = __webpack_require__( /*! ../../core/utils/dom */ 3532);
                var _inflector = __webpack_require__( /*! ../../core/utils/inflector */ 78008);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _renderer2 = __webpack_require__( /*! ./renderers/renderer */ 56453);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _utils = __webpack_require__( /*! ./utils */ 19157);
                var _format_helper = _interopRequireDefault(__webpack_require__( /*! ../../format_helper */ 30343));
                var _plaque = __webpack_require__( /*! ./plaque */ 64509);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const format = _format_helper.default.format;
                const mathCeil = Math.ceil;
                const mathMax = Math.max;
                const mathMin = Math.min;
                const window = (0, _window.getWindow)();

                function hideElement($element) {
                    $element.css({
                        left: "-9999px"
                    }).detach()
                }

                function createTextHtml() {
                    return (0, _renderer.default)("<div>").css({
                        position: "relative",
                        display: "inline-block",
                        padding: 0,
                        margin: 0,
                        border: "0px solid transparent"
                    })
                }
                let Tooltip = function(params) {
                    this._eventTrigger = params.eventTrigger;
                    this._widgetRoot = params.widgetRoot;
                    this._widget = params.widget;
                    this._textHtmlContainers = [];
                    this._wrapper = (0, _renderer.default)("<div>").css({
                        position: "absolute",
                        overflow: "hidden",
                        pointerEvents: "none"
                    }).addClass(params.cssClass);
                    const renderer = this._renderer = new _renderer2.Renderer({
                        pathModified: params.pathModified,
                        container: this._wrapper[0]
                    });
                    const root = renderer.root;
                    root.attr({
                        "pointer-events": "none"
                    });
                    this._text = renderer.text(void 0, 0, 0);
                    this._textGroupHtml = (0, _renderer.default)("<div>").css({
                        position: "absolute",
                        padding: 0,
                        margin: 0,
                        border: "0px solid transparent"
                    }).appendTo(this._wrapper);
                    this._textHtml = createTextHtml().appendTo(this._textGroupHtml)
                };
                exports.Tooltip = Tooltip;
                Tooltip.prototype = {
                    constructor: Tooltip,
                    dispose: function() {
                        this._wrapper.remove();
                        this._renderer.dispose();
                        this._options = this._widgetRoot = null
                    },
                    _getContainer: function() {
                        const options = this._options;
                        let container = (0, _renderer.default)(this._widgetRoot).closest(options.container);
                        if (0 === container.length) {
                            container = (0, _renderer.default)(options.container)
                        }
                        return (container.length ? container : (0, _renderer.default)("body")).get(0)
                    },
                    setTemplate(contentTemplate) {
                        this._template = contentTemplate ? this._widget._getTemplate(contentTemplate) : null
                    },
                    setOptions: function(options) {
                        options = options || {};
                        const that = this;
                        that._options = options;
                        that._textFontStyles = (0, _utils.patchFontOptions)(options.font);
                        that._textFontStyles.color = that._textFontStyles.fill;
                        that._wrapper.css({
                            zIndex: options.zIndex
                        });
                        that._customizeTooltip = options.customizeTooltip;
                        const textGroupHtml = that._textGroupHtml;
                        if (this.plaque) {
                            this.plaque.clear()
                        }
                        this.setTemplate(options.contentTemplate);
                        const pointerEvents = options.interactive ? "auto" : "none";
                        if (options.interactive) {
                            this._renderer.root.css({
                                "-moz-user-select": "auto",
                                "-webkit-user-select": "auto"
                            })
                        }
                        this.plaque = new _plaque.Plaque({
                            opacity: that._options.opacity,
                            color: that._options.color,
                            border: that._options.border,
                            paddingLeftRight: that._options.paddingLeftRight,
                            paddingTopBottom: that._options.paddingTopBottom,
                            arrowLength: that._options.arrowLength,
                            arrowWidth: 20,
                            shadow: that._options.shadow,
                            cornerRadius: that._options.cornerRadius
                        }, that, that._renderer.root, _ref => {
                            let {
                                group: group,
                                onRender: onRender,
                                eventData: eventData,
                                isMoving: isMoving,
                                templateCallback: templateCallback = (() => {})
                            } = _ref;
                            const state = that._state;
                            if (!isMoving) {
                                const template = that._template;
                                const useTemplate = template && !state.formatObject.skipTemplate;
                                if (state.html || useTemplate) {
                                    textGroupHtml.css({
                                        color: state.textColor,
                                        width: 3e3,
                                        pointerEvents: pointerEvents
                                    });
                                    if (useTemplate) {
                                        const htmlContainers = that._textHtmlContainers;
                                        const containerToTemplateRender = createTextHtml().appendTo(that._textGroupHtml);
                                        htmlContainers.push(containerToTemplateRender);
                                        template.render({
                                            model: state.formatObject,
                                            container: containerToTemplateRender,
                                            onRendered: () => {
                                                elements = htmlContainers.splice(0, htmlContainers.length - 1), void elements.forEach(el => el.remove());
                                                var elements;
                                                that._textHtml = (0, _dom.replaceWith)(that._textHtml, containerToTemplateRender);
                                                state.html = that._textHtml.html();
                                                if (0 === (0, _size.getWidth)(that._textHtml) && 0 === (0, _size.getHeight)(that._textHtml)) {
                                                    this.plaque.clear();
                                                    templateCallback(false);
                                                    return
                                                }
                                                onRender();
                                                that._riseEvents(eventData);
                                                that._moveWrapper();
                                                that.plaque.customizeCloud({
                                                    fill: state.color,
                                                    stroke: state.borderColor,
                                                    "pointer-events": pointerEvents
                                                });
                                                templateCallback(true);
                                                that._textHtmlContainers = []
                                            }
                                        });
                                        return
                                    } else {
                                        that._text.attr({
                                            text: ""
                                        });
                                        that._textHtml.html(state.html)
                                    }
                                } else {
                                    that._text.css({
                                        fill: state.textColor
                                    }).attr({
                                        text: state.text,
                                        class: options.cssClass,
                                        "pointer-events": pointerEvents
                                    }).append(group.attr({
                                        align: options.textAlignment
                                    }))
                                }
                                that._riseEvents(eventData);
                                that.plaque.customizeCloud({
                                    fill: state.color,
                                    stroke: state.borderColor,
                                    "pointer-events": pointerEvents
                                })
                            }
                            onRender();
                            that._moveWrapper();
                            return true
                        }, true, (tooltip, g) => {
                            const state = tooltip._state;
                            if (state.html) {
                                let bBox = window.getComputedStyle(that._textHtml.get(0));
                                bBox = {
                                    x: 0,
                                    y: 0,
                                    width: mathCeil(parseFloat(bBox.width)),
                                    height: mathCeil(parseFloat(bBox.height))
                                };
                                return bBox
                            }
                            return g.getBBox()
                        }, (tooltip, g, x, y) => {
                            const state = tooltip._state;
                            if (state.html) {
                                that._textGroupHtml.css({
                                    left: x,
                                    top: y
                                })
                            } else {
                                g.move(x, y)
                            }
                        });
                        return that
                    },
                    _riseEvents: function(eventData) {
                        this._eventData && this._eventTrigger("tooltipHidden", this._eventData);
                        this._eventData = eventData;
                        this._eventTrigger("tooltipShown", this._eventData)
                    },
                    setRendererOptions: function(options) {
                        this._renderer.setOptions(options);
                        this._textGroupHtml.css({
                            direction: options.rtl ? "rtl" : "ltr"
                        });
                        return this
                    },
                    update: function(options) {
                        const that = this;
                        that.setOptions(options);
                        hideElement(that._wrapper);
                        const normalizedCSS = {};
                        for (const name in that._textFontStyles) {
                            normalizedCSS[(0, _inflector.camelize)(name)] = that._textFontStyles[name]
                        }
                        that._textGroupHtml.css(normalizedCSS);
                        that._text.css(that._textFontStyles);
                        that._eventData = null;
                        return that
                    },
                    _prepare: function(formatObject, state) {
                        let customizeTooltip = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : this._customizeTooltip;
                        const options = this._options;
                        let customize = {};
                        if ((0, _type.isFunction)(customizeTooltip)) {
                            customize = customizeTooltip.call(formatObject, formatObject);
                            customize = (0, _type.isPlainObject)(customize) ? customize : {};
                            if ("text" in customize) {
                                state.text = (0, _type.isDefined)(customize.text) ? String(customize.text) : ""
                            }
                            if ("html" in customize) {
                                state.html = (0, _type.isDefined)(customize.html) ? String(customize.html) : ""
                            }
                        }
                        if (!("text" in state) && !("html" in state)) {
                            state.text = formatObject.valueText || formatObject.description || ""
                        }
                        state.color = customize.color || options.color;
                        state.borderColor = customize.borderColor || (options.border || {}).color;
                        state.textColor = customize.fontColor || (this._textFontStyles || {}).color;
                        return !!state.text || !!state.html || !!this._template
                    },
                    show: function(formatObject, params, eventData, customizeTooltip, templateCallback) {
                        const that = this;
                        if (that._options.forceEvents) {
                            eventData.x = params.x;
                            eventData.y = params.y - params.offset;
                            that._riseEvents(eventData);
                            return true
                        }
                        const state = {
                            formatObject: formatObject,
                            eventData: eventData,
                            templateCallback: templateCallback
                        };
                        if (!that._prepare(formatObject, state, customizeTooltip)) {
                            return false
                        }
                        that._state = state;
                        that._wrapper.appendTo(that._getContainer());
                        that._clear();
                        const parameters = (0, _extend.extend)({}, that._options, {
                            canvas: that._getCanvas()
                        }, state, {
                            x: params.x,
                            y: params.y,
                            offset: params.offset
                        });
                        return this.plaque.clear().draw(parameters)
                    },
                    isCursorOnTooltip: function(x, y) {
                        if (this._options.interactive) {
                            const box = this.plaque.getBBox();
                            return x > box.x && x < box.x + box.width && y > box.y && y < box.y + box.height
                        }
                        return false
                    },
                    hide: function(isPointerOut) {
                        const that = this;
                        hideElement(that._wrapper);
                        if (that._eventData) {
                            that._eventTrigger("tooltipHidden", that._options.forceEvents ? (0, _extend.extend)({
                                isPointerOut: isPointerOut
                            }, that._eventData) : that._eventData);
                            that._clear();
                            that._eventData = null
                        }
                    },
                    _clear() {
                        this._textHtml.empty()
                    },
                    move: function(x, y, offset) {
                        this.plaque.draw({
                            x: x,
                            y: y,
                            offset: offset,
                            canvas: this._getCanvas(),
                            isMoving: true
                        })
                    },
                    _moveWrapper: function() {
                        const that = this;
                        const plaqueBBox = this.plaque.getBBox();
                        that._renderer.resize(plaqueBBox.width, plaqueBBox.height);
                        const offset = that._wrapper.css({
                            left: 0,
                            top: 0
                        }).offset();
                        const left = plaqueBBox.x;
                        const top = plaqueBBox.y;
                        that._wrapper.css({
                            left: left - offset.left,
                            top: top - offset.top
                        });
                        this.plaque.moveRoot(-left, -top);
                        if (this._state.html) {
                            that._textHtml.css({
                                left: -left,
                                top: -top
                            });
                            that._textGroupHtml.css({
                                width: mathCeil((0, _size.getWidth)(that._textHtml))
                            })
                        }
                    },
                    formatValue: function(value, _specialFormat) {
                        const options = _specialFormat ? function(options, specialFormat) {
                            let result = options;
                            switch (specialFormat) {
                                case "argument":
                                    result = {
                                        format: options.argumentFormat
                                    };
                                    break;
                                case "percent":
                                    result = {
                                        format: {
                                            type: "percent",
                                            precision: options.format && options.format.percentPrecision
                                        }
                                    }
                            }
                            return result
                        }(this._options, _specialFormat) : this._options;
                        return format(value, options.format)
                    },
                    getOptions() {
                        return this._options
                    },
                    getLocation: function() {
                        return (0, _utils.normalizeEnum)(this._options.location)
                    },
                    isEnabled: function() {
                        return !!this._options.enabled || !!this._options.forceEvents
                    },
                    isShared: function() {
                        return !!this._options.shared
                    },
                    _getCanvas: function() {
                        const container = this._getContainer();
                        const containerBox = container.getBoundingClientRect();
                        const html = _dom_adapter.default.getDocumentElement();
                        const document = _dom_adapter.default.getDocument();
                        let left = window.pageXOffset || html.scrollLeft || 0;
                        let top = window.pageYOffset || html.scrollTop || 0;
                        const box = {
                            left: left,
                            top: top,
                            width: mathMax(html.clientWidth, document.body.clientWidth) + left,
                            height: mathMax(document.body.scrollHeight, html.scrollHeight, document.body.offsetHeight, html.offsetHeight, document.body.clientHeight, html.clientHeight),
                            right: 0,
                            bottom: 0
                        };
                        if (container !== _dom_adapter.default.getBody()) {
                            left = mathMax(box.left, box.left + containerBox.left);
                            top = mathMax(box.top, box.top + containerBox.top);
                            box.width = mathMin(containerBox.width, box.width) + left + box.left;
                            box.height = mathMin(containerBox.height, box.height) + top + box.top;
                            box.left = left;
                            box.top = top
                        }
                        return box
                    }
                };
                const plugin = {
                    name: "tooltip",
                    init: function() {
                        this._initTooltip()
                    },
                    dispose: function() {
                        this._disposeTooltip()
                    },
                    members: {
                        _initTooltip: function() {
                            this._tooltip = new Tooltip({
                                cssClass: this._rootClassPrefix + "-tooltip",
                                eventTrigger: this._eventTrigger,
                                pathModified: this.option("pathModified"),
                                widgetRoot: this.element(),
                                widget: this
                            })
                        },
                        _disposeTooltip: function() {
                            this._tooltip.dispose();
                            this._tooltip = null
                        },
                        _setTooltipRendererOptions: function() {
                            this._tooltip.setRendererOptions(this._getRendererOptions())
                        },
                        _setTooltipOptions: function() {
                            this._tooltip.update(this._getOption("tooltip"))
                        }
                    },
                    extenders: {
                        _stopCurrentHandling() {
                            this._tooltip && this._tooltip.hide()
                        }
                    },
                    customize: function(constructor) {
                        const proto = constructor.prototype;
                        proto._eventsMap.onTooltipShown = {
                            name: "tooltipShown"
                        };
                        proto._eventsMap.onTooltipHidden = {
                            name: "tooltipHidden"
                        };
                        constructor.addChange({
                            code: "TOOLTIP_RENDERER",
                            handler: function() {
                                this._setTooltipRendererOptions()
                            },
                            isThemeDependent: true,
                            isOptionChange: true
                        });
                        constructor.addChange({
                            code: "TOOLTIP",
                            handler: function() {
                                this._setTooltipOptions()
                            },
                            isThemeDependent: true,
                            isOptionChange: true,
                            option: "tooltip"
                        })
                    },
                    fontFields: ["tooltip.font"]
                };
                exports.plugin = plugin
            },
        19157:
            /*!***************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/core/utils.js ***!
              \***************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.PANE_PADDING = void 0;
                exports.adjustVisualRange = function(options, visualRange, wholeRange, dataRange) {
                    const minDefined = (0, _type.isDefined)(visualRange.startValue);
                    const maxDefined = (0, _type.isDefined)(visualRange.endValue);
                    const nonDiscrete = "discrete" !== options.axisType;
                    dataRange = dataRange || wholeRange;
                    const add = getAddFunction(options, false);
                    let min = minDefined ? visualRange.startValue : dataRange.min;
                    let max = maxDefined ? visualRange.endValue : dataRange.max;
                    let rangeLength = visualRange.length;
                    const categories = dataRange.categories;
                    if (nonDiscrete && !(0, _type.isDefined)(min) && !(0, _type.isDefined)(max)) {
                        return {
                            startValue: min,
                            endValue: max
                        }
                    }
                    if ((0, _type.isDefined)(rangeLength)) {
                        if (nonDiscrete) {
                            if ("datetime" === options.dataType && !(0, _type.isNumeric)(rangeLength)) {
                                rangeLength = dateToMilliseconds(rangeLength)
                            }
                            if (maxDefined && !minDefined || !maxDefined && !minDefined) {
                                (0, _type.isDefined)(wholeRange.max) && (max = max > wholeRange.max ? wholeRange.max : max);
                                min = add(max, rangeLength, -1)
                            } else if (minDefined && !maxDefined) {
                                (0, _type.isDefined)(wholeRange.min) && (min = min < wholeRange.min ? wholeRange.min : min);
                                max = add(min, rangeLength)
                            }
                        } else {
                            rangeLength = parseInt(rangeLength);
                            if (!isNaN(rangeLength) && isFinite(rangeLength)) {
                                rangeLength--;
                                if (!maxDefined && !minDefined) {
                                    max = categories[categories.length - 1];
                                    min = categories[categories.length - 1 - rangeLength]
                                } else if (minDefined && !maxDefined) {
                                    const categoriesInfo = getCategoriesInfo(categories, min, void 0);
                                    max = categoriesInfo.categories[rangeLength]
                                } else if (!minDefined && maxDefined) {
                                    const categoriesInfo = getCategoriesInfo(categories, void 0, max);
                                    min = categoriesInfo.categories[categoriesInfo.categories.length - 1 - rangeLength]
                                }
                            }
                        }
                    }
                    if (nonDiscrete) {
                        if ((0, _type.isDefined)(wholeRange.max) && max > wholeRange.max) {
                            max = wholeRange.max
                        }
                        if ((0, _type.isDefined)(wholeRange.min) && min < wholeRange.min) {
                            min = wholeRange.min
                        }
                    }
                    return {
                        startValue: min,
                        endValue: max
                    }
                };
                exports.convertAngleToRendererSpace = void 0;
                exports.convertPolarToXY = function(centerCoords, startAngle, angle, radius) {
                    const normalizedRadius = radius > 0 ? radius : 0;
                    angle = (0, _type.isDefined)(angle) ? angle + startAngle - 90 : 0;
                    const cosSin = getCosAndSin(angle);
                    return {
                        x: _round(centerCoords.x + normalizedRadius * cosSin.cos),
                        y: _round(centerCoords.y + normalizedRadius * cosSin.sin)
                    }
                };
                exports.convertVisualRangeObject = function(visualRange, convertToVisualRange) {
                    if (convertToVisualRange) {
                        return visualRange
                    }
                    return [visualRange.startValue, visualRange.endValue]
                };
                exports.enumParser = exports.degreesToRadians = exports.decreaseGaps = exports.convertXYToPolar = void 0;
                exports.extractColor = function(color, isBase) {
                    if ((0, _type.isString)(color) || !color) {
                        return color
                    } else if (isBase) {
                        return color.base
                    } else {
                        return color.fillId || color.base
                    }
                };
                exports.getAddFunction = getAddFunction;
                exports.getLog = exports.getDistance = exports.getDecimalOrder = exports.getCosAndSin = exports.getCategoriesInfo = exports.getAppropriateFormat = exports.getAdjustedLog10 = void 0;
                exports.getLogExt = getLogExt;
                exports.getVerticallyShiftedAngularCoords = exports.getPower = exports.getNextDefsSvgId = void 0;
                exports.getVizRangeObject = function(value) {
                    if (Array.isArray(value)) {
                        return {
                            startValue: value[0],
                            endValue: value[1]
                        }
                    } else {
                        return value || {}
                    }
                };
                exports.isRelativeHeightPane = isRelativeHeightPane;
                exports.map = map;
                exports.mergeMarginOptions = function(opt1, opt2) {
                    return {
                        checkInterval: opt1.checkInterval || opt2.checkInterval,
                        size: _max(opt1.size || 0, opt2.size || 0),
                        percentStick: opt1.percentStick || opt2.percentStick,
                        sizePointNormalState: _max(opt1.sizePointNormalState || 0, opt2.sizePointNormalState || 0)
                    }
                };
                exports.normalizeAngle = void 0;
                exports.normalizeArcParams = function(x, y, innerRadius, outerRadius, startAngle, endAngle) {
                    let isCircle;
                    let noArc = true;
                    const angleDiff = roundValue(endAngle, 3) - roundValue(startAngle, 3);
                    if (angleDiff) {
                        if (abs(angleDiff) % 360 === 0) {
                            startAngle = 0;
                            endAngle = 360;
                            isCircle = true;
                            endAngle -= .01
                        }
                        if (startAngle > 360) {
                            startAngle %= 360
                        }
                        if (endAngle > 360) {
                            endAngle %= 360
                        }
                        if (startAngle > endAngle) {
                            startAngle -= 360
                        }
                        noArc = false
                    }
                    startAngle *= PI_DIV_180;
                    endAngle *= PI_DIV_180;
                    return [x, y, Math.min(outerRadius, innerRadius), Math.max(outerRadius, innerRadius), Math.cos(startAngle), Math.sin(startAngle), Math.cos(endAngle), Math.sin(endAngle), isCircle, floor(abs(endAngle - startAngle) / PI) % 2 ? "1" : "0", noArc]
                };
                exports.normalizeBBox = normalizeBBox;
                exports.normalizeEnum = normalizeEnum;
                exports.normalizePanesHeight = function(panes) {
                    panes.forEach(pane => {
                        const height = pane.height;
                        let unit = 0;
                        let parsedHeight = parseFloat(height) || void 0;
                        if ((0, _type.isString)(height) && height.indexOf("px") > -1 || (0, _type.isNumeric)(height) && height > 1) {
                            parsedHeight = _round(parsedHeight);
                            unit = 1
                        }
                        if (!unit && parsedHeight) {
                            if ((0, _type.isString)(height) && height.indexOf("%") > -1) {
                                parsedHeight /= 100;
                                unit = 2
                            } else if (parsedHeight < 0) {
                                parsedHeight = parsedHeight < -1 ? 1 : abs(parsedHeight)
                            }
                        }
                        pane.height = parsedHeight;
                        pane.unit = unit
                    });
                    const relativeHeightPanes = panes.filter(isRelativeHeightPane);
                    const weightSum = relativeHeightPanes.reduce((prev, next) => prev + (next.height || 0), 0);
                    const weightHeightCount = relativeHeightPanes.length;
                    const emptyHeightPanes = relativeHeightPanes.filter(pane => !pane.height);
                    const emptyHeightCount = emptyHeightPanes.length;
                    if (weightSum < 1 && emptyHeightCount) {
                        emptyHeightPanes.forEach(pane => pane.height = (1 - weightSum) / emptyHeightCount)
                    } else if (weightSum > 1 || weightSum < 1 && !emptyHeightCount || 1 === weightSum && emptyHeightCount) {
                        if (emptyHeightCount) {
                            const weightForEmpty = weightSum / weightHeightCount;
                            const emptyWeightSum = emptyHeightCount * weightForEmpty;
                            relativeHeightPanes.filter(pane => pane.height).forEach(pane => pane.height *= (weightSum - emptyWeightSum) / weightSum);
                            emptyHeightPanes.forEach(pane => pane.height = weightForEmpty)
                        }
                        relativeHeightPanes.forEach(pane => pane.height *= 1 / weightSum)
                    }
                };
                exports.patchFontOptions = exports.parseScalar = void 0;
                exports.pointInCanvas = function(canvas, x, y) {
                    return x >= canvas.left && x <= canvas.right && y >= canvas.top && y <= canvas.bottom
                };
                exports.raiseTo = exports.processSeriesTemplate = void 0;
                exports.raiseToExt = raiseToExt;
                exports.rangesAreEqual = function(range, rangeFromOptions) {
                    if (Array.isArray(rangeFromOptions)) {
                        return range.length === rangeFromOptions.length && range.every((item, i) => valueOf(item) === valueOf(rangeFromOptions[i]))
                    } else {
                        return valueOf(range.startValue) === valueOf(rangeFromOptions.startValue) && valueOf(range.endValue) === valueOf(rangeFromOptions.endValue)
                    }
                };
                exports.rotateBBox = function(bBox, center, angle) {
                    const cos = _Number(_cos(angle * PI_DIV_180).toFixed(3));
                    const sin = _Number(_sin(angle * PI_DIV_180).toFixed(3));
                    const w2 = bBox.width / 2;
                    const h2 = bBox.height / 2;
                    const centerX = bBox.x + w2;
                    const centerY = bBox.y + h2;
                    const w2_ = abs(w2 * cos) + abs(h2 * sin);
                    const h2_ = abs(w2 * sin) + abs(h2 * cos);
                    const centerX_ = center[0] + (centerX - center[0]) * cos + (centerY - center[1]) * sin;
                    const centerY_ = center[1] - (centerX - center[0]) * sin + (centerY - center[1]) * cos;
                    return normalizeBBox({
                        x: centerX_ - w2_,
                        y: centerY_ - h2_,
                        width: 2 * w2_,
                        height: 2 * h2_
                    })
                };
                exports.roundValue = void 0;
                exports.setCanvasValues = setCanvasValues;
                exports.unique = void 0;
                exports.updatePanesCanvases = function(panes, canvas, rotated) {
                    let distributedSpace = 0;
                    const paneSpace = rotated ? canvas.width - canvas.left - canvas.right : canvas.height - canvas.top - canvas.bottom;
                    const totalCustomSpace = panes.reduce((prev, cur) => prev + (!isRelativeHeightPane(cur) ? cur.height : 0), 0);
                    const usefulSpace = paneSpace - 10 * (panes.length - 1) - totalCustomSpace;
                    const startName = rotated ? "left" : "top";
                    const endName = rotated ? "right" : "bottom";
                    panes.forEach(pane => {
                        const calcLength = !isRelativeHeightPane(pane) ? pane.height : _round(pane.height * usefulSpace);
                        pane.canvas = pane.canvas || {};
                        (0, _extend.extend)(pane.canvas, canvas);
                        pane.canvas[startName] = canvas[startName] + distributedSpace;
                        pane.canvas[endName] = canvas[endName] + (paneSpace - calcLength - distributedSpace);
                        distributedSpace = distributedSpace + calcLength + 10;
                        setCanvasValues(pane.canvas)
                    })
                };
                exports.valueOf = valueOf;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _math = __webpack_require__( /*! ../../core/utils/math */ 60810);
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 91198));
                var _color = _interopRequireDefault(__webpack_require__( /*! ../../color */ 52752));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const {
                    PI: PI,
                    LN10: LN10,
                    abs: abs,
                    log: log,
                    floor: floor,
                    ceil: ceil,
                    pow: pow,
                    sqrt: sqrt,
                    atan2: atan2
                } = Math;
                const _min = Math.min;
                const _max = Math.max;
                const _cos = Math.cos;
                const _sin = Math.sin;
                const _round = Math.round;
                const dateToMilliseconds = _date.default.dateToMilliseconds;
                const PI_DIV_180 = PI / 180;
                const _isNaN = isNaN;
                const _Number = Number;
                let numDefsSvgElements = 1;
                exports.PANE_PADDING = 10;
                const getLog = function(value, base) {
                    if (!value) {
                        return NaN
                    }
                    return log(value) / log(base)
                };
                exports.getLog = getLog;
                exports.getAdjustedLog10 = function(value) {
                    return (0, _math.adjust)(getLog(value, 10))
                };
                const raiseTo = function(power, base) {
                    return pow(base, power)
                };
                exports.raiseTo = raiseTo;
                const normalizeAngle = function(angle) {
                    return (angle % 360 + 360) % 360
                };
                exports.normalizeAngle = normalizeAngle;
                exports.convertAngleToRendererSpace = function(angle) {
                    return 90 - angle
                };
                const degreesToRadians = function(value) {
                    return PI * value / 180
                };
                exports.degreesToRadians = degreesToRadians;
                const getCosAndSin = function(angle) {
                    const angleInRadians = degreesToRadians(angle);
                    return {
                        cos: _cos(angleInRadians),
                        sin: _sin(angleInRadians)
                    }
                };
                exports.getCosAndSin = getCosAndSin;
                const getDistance = function(x1, y1, x2, y2) {
                    const diffX = x2 - x1;
                    const diffY = y2 - y1;
                    return sqrt(diffY * diffY + diffX * diffX)
                };
                exports.getDistance = getDistance;
                const getDecimalOrder = function(number) {
                    let n = abs(number);
                    let cn;
                    if (!_isNaN(n)) {
                        if (n > 0) {
                            n = log(n) / LN10;
                            cn = ceil(n);
                            return cn - n < 1e-14 ? cn : floor(n)
                        }
                        return 0
                    }
                    return NaN
                };
                exports.getDecimalOrder = getDecimalOrder;
                exports.getAppropriateFormat = function(start, end, count) {
                    const order = _max(getDecimalOrder(start), getDecimalOrder(end));
                    let precision = -getDecimalOrder(abs(end - start) / count);
                    let format;
                    if (!_isNaN(order) && !_isNaN(precision)) {
                        if (abs(order) <= 4) {
                            format = "fixedPoint";
                            precision < 0 && (precision = 0);
                            precision > 4 && (precision = 4)
                        } else {
                            format = "exponential";
                            precision += order - 1;
                            precision > 3 && (precision = 3)
                        }
                        return {
                            type: format,
                            precision: precision
                        }
                    }
                    return null
                };
                const roundValue = function(value, precision) {
                    if (precision > 20) {
                        precision = 20
                    }
                    if ((0, _type.isNumeric)(value)) {
                        if ((0, _type.isExponential)(value)) {
                            return _Number(value.toExponential(precision))
                        } else {
                            return _Number(value.toFixed(precision))
                        }
                    }
                };
                exports.roundValue = roundValue;
                exports.getPower = function(value) {
                    return value.toExponential().split("e")[1]
                };

                function map(array, callback) {
                    let i = 0;
                    const len = array.length;
                    const result = [];
                    let value;
                    while (i < len) {
                        value = callback(array[i], i);
                        if (null !== value) {
                            result.push(value)
                        }
                        i++
                    }
                    return result
                }

                function selectByKeys(object, keys) {
                    return map(keys, key => object[key] ? object[key] : null)
                }

                function decreaseFields(object, keys, eachDecrease, decrease) {
                    let dec = decrease;
                    (0, _iterator.each)(keys, (_, key) => {
                        if (object[key]) {
                            object[key] -= eachDecrease;
                            dec -= eachDecrease
                        }
                    });
                    return dec
                }

                function normalizeEnum(value) {
                    return String(value).toLowerCase()
                }

                function setCanvasValues(canvas) {
                    if (canvas) {
                        canvas.originalTop = canvas.top;
                        canvas.originalBottom = canvas.bottom;
                        canvas.originalLeft = canvas.left;
                        canvas.originalRight = canvas.right
                    }
                    return canvas
                }

                function normalizeBBoxField(value) {
                    return -1e10 < value && value < 1e10 ? value : 0
                }

                function normalizeBBox(bBox) {
                    const xl = normalizeBBoxField(floor(bBox.x));
                    const yt = normalizeBBoxField(floor(bBox.y));
                    const xr = normalizeBBoxField(ceil(bBox.width + bBox.x));
                    const yb = normalizeBBoxField(ceil(bBox.height + bBox.y));
                    const result = {
                        x: xl,
                        y: yt,
                        width: xr - xl,
                        height: yb - yt
                    };
                    result.isEmpty = !result.x && !result.y && !result.width && !result.height;
                    return result
                }
                exports.decreaseGaps = function(object, keys, decrease) {
                    let arrayGaps;
                    do {
                        arrayGaps = selectByKeys(object, keys);
                        arrayGaps.push(ceil(decrease / arrayGaps.length));
                        decrease = decreaseFields(object, keys, _min.apply(null, arrayGaps), decrease)
                    } while (decrease > 0 && arrayGaps.length > 1);
                    return decrease
                };
                exports.parseScalar = function(value, defaultValue) {
                    return void 0 !== value ? value : defaultValue
                };
                exports.enumParser = function(values) {
                    const stored = {};
                    let i;
                    let ii;
                    for (i = 0, ii = values.length; i < ii; ++i) {
                        stored[normalizeEnum(values[i])] = 1
                    }
                    return function(value, defaultValue) {
                        const _value = normalizeEnum(value);
                        return stored[_value] ? _value : defaultValue
                    }
                };
                exports.patchFontOptions = function(options) {
                    const fontOptions = {};
                    (0, _iterator.each)(options || {}, (function(key, value) {
                        if (/^(cursor)$/i.test(key)) {} else if ("opacity" === key) {
                            value = null
                        } else if ("color" === key) {
                            key = "fill";
                            if ("opacity" in options) {
                                const color = new _color.default(value);
                                value = "rgba(".concat(color.r, ",").concat(color.g, ",").concat(color.b, ",").concat(options.opacity, ")")
                            }
                        } else {
                            key = "font-" + key
                        }
                        fontOptions[key] = value
                    }));
                    return fontOptions
                };
                exports.convertXYToPolar = function(centerCoords, x, y) {
                    const radius = getDistance(centerCoords.x, centerCoords.y, x, y);
                    const angle = atan2(y - centerCoords.y, x - centerCoords.x);
                    return {
                        phi: _round(normalizeAngle(180 * angle / PI)),
                        r: _round(radius)
                    }
                };
                exports.processSeriesTemplate = function(seriesTemplate, items) {
                    const customizeSeries = (0, _type.isFunction)(seriesTemplate.customizeSeries) ? seriesTemplate.customizeSeries : _common.noop;
                    const nameField = seriesTemplate.nameField;
                    const generatedSeries = {};
                    const seriesOrder = [];
                    let series;
                    let i = 0;
                    let length;
                    let data;
                    items = items || [];
                    for (length = items.length; i < length; i++) {
                        data = items[i];
                        if (nameField in data) {
                            series = generatedSeries[data[nameField]];
                            if (!series) {
                                series = generatedSeries[data[nameField]] = {
                                    name: data[nameField],
                                    nameFieldValue: data[nameField]
                                };
                                seriesOrder.push(series.name)
                            }
                        }
                    }
                    return map(seriesOrder, (function(orderedName) {
                        const group = generatedSeries[orderedName];
                        return (0, _extend.extend)(group, customizeSeries.call(null, group.name))
                    }))
                };
                const getCategoriesInfo = function(categories, startValue, endValue) {
                    if (0 === categories.length) {
                        return {
                            categories: []
                        }
                    }
                    startValue = (0, _type.isDefined)(startValue) ? startValue : categories[0];
                    endValue = (0, _type.isDefined)(endValue) ? endValue : categories[categories.length - 1];
                    const categoriesValue = map(categories, category => null === category || void 0 === category ? void 0 : category.valueOf());
                    let indexStartValue = categoriesValue.indexOf(startValue.valueOf());
                    let indexEndValue = categoriesValue.indexOf(endValue.valueOf());
                    let swapBuf;
                    let inverted = false;
                    indexStartValue < 0 && (indexStartValue = 0);
                    indexEndValue < 0 && (indexEndValue = categories.length - 1);
                    if (indexEndValue < indexStartValue) {
                        swapBuf = indexEndValue;
                        indexEndValue = indexStartValue;
                        indexStartValue = swapBuf;
                        inverted = true
                    }
                    const visibleCategories = categories.slice(indexStartValue, indexEndValue + 1);
                    const lastIdx = visibleCategories.length - 1;
                    return {
                        categories: visibleCategories,
                        start: visibleCategories[inverted ? lastIdx : 0],
                        end: visibleCategories[inverted ? 0 : lastIdx],
                        inverted: inverted
                    }
                };
                exports.getCategoriesInfo = getCategoriesInfo;

                function isRelativeHeightPane(pane) {
                    return !(pane.unit % 2)
                }
                exports.unique = function(array) {
                    const values = {};
                    return map(array, (function(item) {
                        const result = !values[item] ? item : null;
                        values[item] = true;
                        return result
                    }))
                };
                exports.getVerticallyShiftedAngularCoords = function(bBox, dy, center) {
                    const isPositive = bBox.x + bBox.width / 2 >= center.x;
                    const horizontalOffset1 = (isPositive ? bBox.x : bBox.x + bBox.width) - center.x;
                    const verticalOffset1 = bBox.y - center.y;
                    const verticalOffset2 = verticalOffset1 + dy;
                    const horizontalOffset2 = _round(sqrt(horizontalOffset1 * horizontalOffset1 + verticalOffset1 * verticalOffset1 - verticalOffset2 * verticalOffset2));
                    const dx = (isPositive ? +horizontalOffset2 : -horizontalOffset2) || horizontalOffset1;
                    return {
                        x: center.x + (isPositive ? dx : dx - bBox.width),
                        y: bBox.y + dy
                    }
                };

                function getAddFunction(range, correctZeroLevel) {
                    if ("datetime" === range.dataType) {
                        return function(rangeValue, marginValue) {
                            let sign = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1;
                            return new Date(rangeValue.getTime() + sign * marginValue)
                        }
                    }
                    if ("logarithmic" === range.axisType) {
                        return function(rangeValue, marginValue) {
                            let sign = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1;
                            const log = getLogExt(rangeValue, range.base) + sign * marginValue;
                            return raiseToExt(log, range.base)
                        }
                    }
                    return function(rangeValue, marginValue) {
                        let sign = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1;
                        const newValue = rangeValue + sign * marginValue;
                        return correctZeroLevel && newValue * rangeValue <= 0 ? 0 : newValue
                    }
                }

                function getLogExt(value, base) {
                    let allowNegatives = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;
                    let linearThreshold = arguments.length > 3 ? arguments[3] : void 0;
                    if (!allowNegatives) {
                        return getLog(value, base)
                    }
                    if (0 === value) {
                        return 0
                    }
                    const transformValue = getLog(abs(value), base) - (linearThreshold - 1);
                    if (transformValue < 0) {
                        return 0
                    }
                    return (0, _math.adjust)((0, _math.sign)(value) * transformValue, Number(pow(base, linearThreshold - 1).toFixed(abs(linearThreshold))))
                }

                function raiseToExt(value, base) {
                    let allowNegatives = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;
                    let linearThreshold = arguments.length > 3 ? arguments[3] : void 0;
                    if (!allowNegatives) {
                        return raiseTo(value, base)
                    }
                    if (0 === value) {
                        return 0
                    }
                    const transformValue = raiseTo(abs(value) + (linearThreshold - 1), base);
                    if (transformValue < 0) {
                        return 0
                    }
                    return (0, _math.adjust)((0, _math.sign)(value) * transformValue, Number(pow(base, linearThreshold).toFixed(abs(linearThreshold))))
                }

                function valueOf(value) {
                    return value && value.valueOf()
                }
                exports.getNextDefsSvgId = () => "DevExpress_".concat(numDefsSvgElements++)
            },
        5259:
            /*!***********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/export.js ***!
              \***********************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                var _export = __webpack_require__( /*! ./core/export */ 82454);
                Object.keys(_export).forEach((function(key) {
                    if ("default" === key || "__esModule" === key) {
                        return
                    }
                    if (key in exports && exports[key] === _export[key]) {
                        return
                    }
                    Object.defineProperty(exports, key, {
                        enumerable: true,
                        get: function() {
                            return _export[key]
                        }
                    })
                }))
            },
        30187:
            /*!***********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/funnel.js ***!
              \***********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _funnel = (obj = __webpack_require__( /*! ./funnel/funnel */ 44697), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _label = __webpack_require__( /*! ./funnel/label */ 47250);
                var _export = __webpack_require__( /*! ./core/export */ 82454);
                var _title = __webpack_require__( /*! ./core/title */ 17384);
                var _legend = __webpack_require__( /*! ./components/legend */ 16342);
                var _tracker = __webpack_require__( /*! ./funnel/tracker */ 76686);
                var _tooltip = __webpack_require__( /*! ./funnel/tooltip */ 32037);
                var _loading_indicator = __webpack_require__( /*! ./core/loading_indicator */ 64758);
                _funnel.default.addPlugin(_label.plugin);
                _funnel.default.addPlugin(_export.plugin);
                _funnel.default.addPlugin(_title.plugin);
                _funnel.default.addPlugin(_legend.plugin);
                _funnel.default.addPlugin(_tracker.plugin);
                _funnel.default.addPlugin(_tooltip.plugin);
                _funnel.default.addPlugin(_loading_indicator.plugin);
                var _default = _funnel.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        44697:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/funnel/funnel.js ***!
              \******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _tiling = __webpack_require__( /*! ./tiling */ 68074);
                var _tiling2 = _interopRequireDefault(__webpack_require__( /*! ./tiling.funnel */ 89482));
                var _tiling3 = _interopRequireDefault(__webpack_require__( /*! ./tiling.pyramid */ 2356));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _m_base_widget = _interopRequireDefault(__webpack_require__( /*! ../../__internal/viz/core/m_base_widget */ 55845));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _item = _interopRequireDefault(__webpack_require__( /*! ./item */ 65700));
                var _data_source = __webpack_require__( /*! ../core/data_source */ 1539);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }(0, _tiling.addAlgorithm)("dynamicslope", _tiling2.default, true);
                (0, _tiling.addAlgorithm)("dynamicheight", _tiling3.default);

                function getLegendItemState(itemState) {
                    return {
                        fill: itemState.fill,
                        hatching: itemState.hatching
                    }
                }
                const dxFunnel = _m_base_widget.default.inherit({
                    _rootClass: "dxf-funnel",
                    _rootClassPrefix: "dxf",
                    _proxyData: [],
                    _optionChangesMap: {
                        dataSource: "DATA_SOURCE",
                        neckWidth: "NODES_CREATE",
                        neckHeight: "NODES_CREATE",
                        inverted: "NODES_CREATE",
                        algorithm: "NODES_CREATE",
                        item: "NODES_CREATE",
                        valueField: "NODES_CREATE",
                        argumentField: "NODES_CREATE",
                        colorField: "NODES_CREATE",
                        palette: "NODES_CREATE",
                        paletteExtensionMode: "NODES_CREATE",
                        sortData: "NODES_CREATE"
                    },
                    _themeDependentChanges: ["NODES_CREATE"],
                    _getDefaultSize: function() {
                        return {
                            width: 400,
                            height: 400
                        }
                    },
                    _themeSection: "funnel",
                    _fontFields: ["legend.title.font", "legend.title.subtitle.font", "legend.font"],
                    _optionChangesOrder: ["DATA_SOURCE"],
                    _initialChanges: ["DATA_SOURCE"],
                    _initCore: function() {
                        this._group = this._renderer.g().append(this._renderer.root);
                        this._items = []
                    },
                    _eventsMap: {
                        onHoverChanged: {
                            name: "hoverChanged"
                        },
                        onSelectionChanged: {
                            name: "selectionChanged"
                        }
                    },
                    _disposeCore: _common.noop,
                    _applySize: function(rect) {
                        this._rect = rect.slice();
                        this._change(["TILING"]);
                        return this._rect
                    },
                    _getAlignmentRect: function() {
                        return this._rect
                    },
                    _change_TILING: function() {
                        const that = this;
                        const items = that._items;
                        const rect = that._rect;
                        const convertCoord = function(coord, index) {
                            const offset = index % 2;
                            return rect[0 + offset] + (rect[2 + offset] - rect[0 + offset]) * coord
                        };
                        this._group.clear();
                        items.forEach((function(item, index) {
                            const coords = item.figure.map(convertCoord);
                            const element = that._renderer.path([], "area").attr({
                                points: coords
                            }).append(that._group);
                            item.coords = coords;
                            item.element = element
                        }));
                        this._requestChange(["TILES"])
                    },
                    _customChangesOrder: ["NODES_CREATE", "LAYOUT", "TILING", "TILES", "DRAWN"],
                    _dataSourceChangedHandler: function() {
                        this._requestChange(["NODES_CREATE"])
                    },
                    _change_DRAWN: function() {
                        this._drawn()
                    },
                    _change_DATA_SOURCE: function() {
                        this._change(["DRAWN"]);
                        this._updateDataSource()
                    },
                    _change_NODES_CREATE: function() {
                        this._buildNodes()
                    },
                    _change_TILES: function() {
                        this._applyTilesAppearance()
                    },
                    _suspend: function() {
                        if (!this._applyingChanges) {
                            this._suspendChanges()
                        }
                    },
                    _resume: function() {
                        if (!this._applyingChanges) {
                            this._resumeChanges()
                        }
                    },
                    _applyTilesAppearance: function() {
                        this._items.forEach((function(item) {
                            const state = item.getState();
                            item.element.smartAttr(item.states[state])
                        }))
                    },
                    _hitTestTargets: function(x, y) {
                        const that = this;
                        let data;
                        this._proxyData.some((function(callback) {
                            data = callback.call(that, x, y);
                            if (data) {
                                return true
                            }
                        }));
                        return data
                    },
                    clearHover: function() {
                        this._suspend();
                        this._items.forEach((function(item) {
                            item.isHovered() && item.hover(false)
                        }));
                        this._resume()
                    },
                    clearSelection: function() {
                        this._suspend();
                        this._items.forEach((function(item) {
                            item.isSelected() && item.select(false)
                        }));
                        this._resume()
                    },
                    _getData: function() {
                        const that = this;
                        const data = that._dataSourceItems() || [];
                        const valueField = that._getOption("valueField", true);
                        const argumentField = that._getOption("argumentField", true);
                        const colorField = that._getOption("colorField", true);
                        const processedData = data.reduce((function(d, item) {
                            const value = Number(item[valueField]);
                            if (value >= 0) {
                                d[0].push({
                                    value: value,
                                    color: item[colorField],
                                    argument: item[argumentField],
                                    dataItem: item
                                });
                                d[1] += value
                            }
                            return d
                        }), [
                            [], 0
                        ]);
                        const items = processedData[0];
                        if (data.length > 0 && 0 === items.length) {
                            that._incidentOccurred("E2005", valueField)
                        }
                        if (!processedData[1]) {
                            return []
                        }
                        if (that._getOption("sortData", true)) {
                            items.sort((function(a, b) {
                                return b.value - a.value
                            }))
                        }
                        return items
                    },
                    _buildNodes: function() {
                        const that = this;
                        const data = that._getData();
                        const algorithm = (0, _tiling.getAlgorithm)(that._getOption("algorithm", true));
                        const percents = algorithm.normalizeValues(data);
                        const itemOptions = that._getOption("item");
                        const figures = algorithm.getFigures(percents, that._getOption("neckWidth", true), that._getOption("neckHeight", true));
                        const palette = that._themeManager.createPalette(that._getOption("palette", true), {
                            useHighlight: true,
                            extensionMode: that._getOption("paletteExtensionMode", true),
                            count: figures.length
                        });
                        that._items = figures.map((function(figure, index) {
                            const curData = data[index];
                            const node = new _item.default(that, {
                                figure: figure,
                                data: curData,
                                percent: percents[index],
                                id: index,
                                color: curData.color || palette.getNextColor(),
                                itemOptions: itemOptions
                            });
                            return node
                        }));
                        if (that._getOption("inverted", true)) {
                            that._items.forEach((function(item) {
                                item.figure = (figure = item.figure, figure.map((function(coord, index) {
                                    return index % 2 ? 1 - coord : coord
                                })));
                                var figure
                            }))
                        }
                        that._renderer.initDefsElements();
                        that._change(["TILING", "DRAWN"])
                    },
                    _showTooltip: _common.noop,
                    hideTooltip: _common.noop,
                    getAllItems: function() {
                        return this._items.slice()
                    },
                    _getLegendData() {
                        return this._items.map(item => {
                            const states = item.states;
                            return {
                                id: item.id,
                                visible: true,
                                text: item.argument,
                                item: item,
                                states: {
                                    normal: getLegendItemState(states.normal),
                                    hover: getLegendItemState(states.hover),
                                    selection: getLegendItemState(states.selection)
                                }
                            }
                        })
                    },
                    _getMinSize: function() {
                        const adaptiveLayout = this._getOption("adaptiveLayout");
                        return [adaptiveLayout.width, adaptiveLayout.height]
                    }
                });
                (0, _component_registrator.default)("dxFunnel", dxFunnel);
                var _default = dxFunnel;
                exports.default = _default;
                dxFunnel.addPlugin(_data_source.plugin);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        65700:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/funnel/item.js ***!
              \****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                const states = ["normal", "hover", "selection", "selection"];

                function parseStyles(color, style, baseStyle) {
                    const border = style.border;
                    const baseBorder = baseStyle.border;
                    const borderVisible = (0, _type.isDefined)(border.visible) ? border.visible : baseBorder.visible;
                    const borderWidth = (0, _type.isDefined)(border.width) ? border.width : baseBorder.width;
                    return {
                        fill: color,
                        hatching: style.hatching,
                        stroke: border.color || baseBorder.color,
                        "stroke-width": borderVisible ? borderWidth : 0
                    }
                }

                function Item(widget, options) {
                    const data = options.data;
                    this.code = 0;
                    this.widget = widget;
                    this.figure = options.figure;
                    this.argument = data.argument;
                    this.value = data.value;
                    this.data = data.dataItem;
                    this.percent = options.percent;
                    this.id = options.id;
                    this.color = options.color;
                    this.states = {
                        normal: parseStyles(options.color, options.itemOptions, options.itemOptions),
                        hover: parseStyles(options.color, options.itemOptions.hoverStyle, options.itemOptions),
                        selection: parseStyles(options.color, options.itemOptions.selectionStyle, options.itemOptions)
                    }
                }
                Item.prototype = {
                    getState: function() {
                        return states[this.code]
                    },
                    getNormalStyle: function() {
                        return this.states.normal
                    },
                    setHover: function() {
                        this.hover(true)
                    },
                    hover: function(state) {
                        if (!this.widget._getOption("hoverEnabled", true) || state === this.isHovered()) {
                            return
                        }
                        this.widget._suspend();
                        state && this.widget.clearHover();
                        this.setState(1, state);
                        this.widget._eventTrigger("hoverChanged", {
                            item: this
                        });
                        this.widget._resume()
                    },
                    setState: function(code, state) {
                        if (state) {
                            this.code |= code
                        } else {
                            this.code &= ~code
                        }
                        this.widget._applyTilesAppearance()
                    },
                    select: function(state) {
                        const mode = this.widget._getOption("selectionMode", true);
                        if ("none" === mode || state === this.isSelected()) {
                            return
                        }
                        this.widget._suspend();
                        if (state && "multiple" !== mode) {
                            this.widget.clearSelection()
                        }
                        this.setState(2, state);
                        this.widget._eventTrigger("selectionChanged", {
                            item: this
                        });
                        this.widget._resume()
                    },
                    showTooltip: function(coords) {
                        this.widget._showTooltip(this.id, coords)
                    },
                    getColor: function() {
                        return this.color
                    },
                    isHovered: function() {
                        return !!(1 & this.code)
                    },
                    isSelected: function() {
                        return !!(2 & this.code)
                    }
                };
                var _default = Item;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        47250:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/funnel/label.js ***!
              \*****************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.plugin = void 0;
                var _label = __webpack_require__( /*! ../series/points/label */ 28318);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);

                function isOutsidePosition(pos) {
                    pos = (0, _utils.normalizeEnum)(pos);
                    return "outside" === pos || "inside" !== pos
                }

                function correctYForInverted(y, bBox, inverted) {
                    return inverted ? y - bBox.height : y
                }

                function getOutsideRightLabelPosition(coords, bBox, options, inverted) {
                    return {
                        x: coords[2] + options.horizontalOffset + 5,
                        y: correctYForInverted(coords[3] + options.verticalOffset, bBox, inverted)
                    }
                }

                function getOutsideLeftLabelPosition(coords, bBox, options, inverted) {
                    return {
                        x: coords[0] - bBox.width - options.horizontalOffset - 5,
                        y: correctYForInverted(coords[1] + options.verticalOffset, bBox, inverted)
                    }
                }

                function getInsideLabelPosition(coords, bBox, options) {
                    const width = coords[2] - coords[0];
                    const height = coords[7] - coords[1];
                    return {
                        x: coords[0] + width / 2 + options.horizontalOffset - bBox.width / 2,
                        y: coords[1] + options.verticalOffset + height / 2 - bBox.height / 2
                    }
                }
                const plugin = {
                    name: "lables",
                    init: _common.noop,
                    dispose: _common.noop,
                    extenders: {
                        _initCore: function() {
                            this._labelsGroup = this._renderer.g().attr({
                                class: this._rootClassPrefix + "-labels"
                            }).append(this._renderer.root);
                            this._labels = []
                        },
                        _applySize: function() {
                            const options = this._getOption("label");
                            const adaptiveLayout = this._getOption("adaptiveLayout");
                            const rect = this._rect;
                            let labelWidth = 0;
                            const width = rect[2] - rect[0];
                            this._labelRect = rect.slice();
                            if (!this._labels.length || !isOutsidePosition(options.position)) {
                                if ((0, _utils.normalizeEnum)("none" !== this._getOption("resolveLabelOverlapping", true))) {
                                    this._labels.forEach(l => !l.isVisible() && l.draw(true))
                                }
                                return
                            }
                            const groupWidth = this._labels.map((function(label) {
                                label.resetEllipsis();
                                return label.getBoundingRect().width
                            })).reduce((function(max, width) {
                                return Math.max(max, width)
                            }), 0);
                            labelWidth = groupWidth + options.horizontalOffset + function(pos) {
                                pos = (0, _utils.normalizeEnum)(pos);
                                if ("outside" === pos) {
                                    return 5
                                } else if ("inside" === pos) {
                                    return 0
                                }
                                return 20
                            }(options.position);
                            if (!adaptiveLayout.keepLabels && width - labelWidth < adaptiveLayout.width) {
                                this._labels.forEach((function(label) {
                                    label.draw(false)
                                }));
                                return
                            } else {
                                if (width - labelWidth < adaptiveLayout.width) {
                                    labelWidth = width - adaptiveLayout.width;
                                    labelWidth = labelWidth > 0 ? labelWidth : 0
                                }
                                this._labels.forEach((function(label) {
                                    label.draw(true)
                                }))
                            }
                            if ("left" === options.horizontalAlignment) {
                                rect[0] += labelWidth
                            } else {
                                rect[2] -= labelWidth
                            }
                        },
                        _buildNodes: function() {
                            this._createLabels()
                        },
                        _change_TILING: function() {
                            const that = this;
                            const options = that._getOption("label");
                            let getCoords = getInsideLabelPosition;
                            const inverted = that._getOption("inverted", true);
                            let textAlignment;
                            if (isOutsidePosition(options.position)) {
                                if ("outside" === (0, _utils.normalizeEnum)(options.position)) {
                                    getCoords = "left" === options.horizontalAlignment ? getOutsideLeftLabelPosition : getOutsideRightLabelPosition
                                } else {
                                    textAlignment = this._defaultLabelTextAlignment();
                                    getCoords = "left" === options.horizontalAlignment ? function(labelRect, rect, textAlignment) {
                                        return function(coords, bBox, options, inverted) {
                                            return {
                                                x: "left" === textAlignment ? labelRect[0] : rect[0] - bBox.width - options.horizontalOffset - 20,
                                                y: correctYForInverted(coords[3] + options.verticalOffset, bBox, inverted)
                                            }
                                        }
                                    }(this._labelRect, this._rect, textAlignment) : function(labelRect, rect, textAlignment) {
                                        return function(coords, bBox, options, inverted) {
                                            return {
                                                x: "left" === textAlignment ? rect[2] + options.horizontalOffset + 20 : labelRect[2] - bBox.width,
                                                y: correctYForInverted(coords[3] + options.verticalOffset, bBox, inverted)
                                            }
                                        }
                                    }(this._labelRect, this._rect, textAlignment)
                                }
                            }
                            that._labels.forEach((function(label, index) {
                                const item = that._items[index];
                                const borderWidth = item.getNormalStyle()["stroke-width"];
                                const halfBorderWidth = inverted ? borderWidth / 2 : -borderWidth / 2;
                                const coords = halfBorderWidth ? item.coords.map((function(coord, index) {
                                    if (1 === index || 3 === index) {
                                        return coord - halfBorderWidth
                                    } else if (2 === index) {
                                        return coord - borderWidth
                                    } else if (0 === index) {
                                        return coord + borderWidth
                                    }
                                    return coord
                                })) : item.coords;
                                if (!options.showForZeroValues && 0 === item.value) {
                                    label.draw(false);
                                    return
                                }
                                if (isOutsidePosition(options.position)) {
                                    that._correctLabelWidth(label, item.coords, options)
                                }
                                const bBox = label.getBoundingRect();
                                const pos = function(pos, bBox, rect) {
                                    if (pos.x < rect[0]) {
                                        pos.x = rect[0]
                                    }
                                    if (pos.x + bBox.width > rect[2]) {
                                        pos.x = rect[2] - bBox.width
                                    }
                                    if (pos.y < rect[1]) {
                                        pos.y = rect[1]
                                    }
                                    if (pos.y + bBox.height > rect[3]) {
                                        pos.y = rect[3] - bBox.height
                                    }
                                    return pos
                                }(getCoords(coords, bBox, options, inverted), bBox, that._labelRect);
                                label.setFigureToDrawConnector(coords);
                                label.shift(pos.x, pos.y)
                            }));
                            that._resolveLabelOverlapping()
                        }
                    },
                    members: {
                        _resolveLabelOverlapping() {
                            const that = this;
                            const resolveLabelOverlapping = (0, _utils.normalizeEnum)(that._getOption("resolveLabelOverlapping", true));
                            const labels = this._getOption("inverted", true) ? that._labels.slice().reverse() : that._labels;
                            if ("hide" === resolveLabelOverlapping) {
                                labels.reduce((height, label) => {
                                    if (label.getBoundingRect().y < height) {
                                        label.hide()
                                    } else {
                                        height = label.getBoundingRect().y + label.getBoundingRect().height
                                    }
                                    return height
                                }, 0)
                            } else if ("shift" === resolveLabelOverlapping) {
                                const maxHeight = this._labelRect[3];
                                labels.filter(label => label.isVisible()).reduce((_ref, label, index, labels) => {
                                    let [height, emptySpace] = _ref;
                                    const bBox = label.getBoundingRect();
                                    let y = bBox.y;
                                    if (bBox.y < height) {
                                        label.shift(bBox.x, height);
                                        y = height
                                    }
                                    if (y - height > 0) {
                                        emptySpace += y - height
                                    }
                                    if (y + bBox.height > maxHeight) {
                                        if (emptySpace && emptySpace > y + bBox.height - maxHeight) {
                                            ! function(labels, requiredSpace, startPoint) {
                                                labels.reduce((requiredSpace, label, index, labels) => {
                                                    const prevLabel = labels[index + 1];
                                                    if (requiredSpace > 0) {
                                                        const bBox = label.getBoundingRect();
                                                        const point = prevLabel ? prevLabel.getBoundingRect().y + prevLabel.getBoundingRect().height : startPoint;
                                                        const emptySpace = bBox.y - point;
                                                        const shift = Math.min(emptySpace, requiredSpace);
                                                        labels.slice(0, index + 1).forEach(label => {
                                                            const bBox = label.getBoundingRect();
                                                            label.shift(bBox.x, bBox.y - shift)
                                                        });
                                                        requiredSpace -= shift
                                                    }
                                                    return requiredSpace
                                                }, requiredSpace)
                                            }(labels.slice(0, index).reverse(), y + bBox.height - maxHeight, that._labelRect[1]);
                                            emptySpace -= y + bBox.height - maxHeight;
                                            label.shift(bBox.x, y - (y + bBox.height - maxHeight));
                                            height = y - (y + bBox.height - maxHeight) + bBox.height
                                        } else {
                                            label.hide()
                                        }
                                    } else {
                                        height = y + bBox.height
                                    }
                                    return [height, emptySpace]
                                }, [this._labelRect[1], 0])
                            }
                        },
                        _defaultLabelTextAlignment: function() {
                            return this._getOption("rtlEnabled", true) ? "right" : "left"
                        },
                        _correctLabelWidth: function(label, item, options) {
                            const isLeftPos = "left" === options.horizontalAlignment;
                            const minX = isLeftPos ? this._labelRect[0] : item[2];
                            const maxX = isLeftPos ? item[0] : this._labelRect[2];
                            const maxWidth = maxX - minX;
                            if (label.getBoundingRect().width > maxWidth) {
                                label.fit(maxWidth)
                            }
                        },
                        _createLabels: function() {
                            const that = this;
                            const labelOptions = that._getOption("label");
                            const connectorStrategy = function(options, inverted) {
                                const isLeftPos = "left" === options.horizontalAlignment;
                                const connectorIndent = isLeftPos ? 4 : -4;
                                const verticalCorrection = inverted ? -1 : 0;

                                function getFigureCenter(figure) {
                                    return isLeftPos ? [figure[0] + 1, figure[1] + verticalCorrection] : [figure[2] - 1, figure[3] + verticalCorrection]
                                }
                                return {
                                    isLabelInside: function() {
                                        return !isOutsidePosition(options.position)
                                    },
                                    getFigureCenter: getFigureCenter,
                                    prepareLabelPoints: function(bBox) {
                                        const x = bBox.x + connectorIndent;
                                        const y = bBox.y;
                                        const x1 = x + bBox.width;
                                        return [...Array(bBox.height + 1)].map((_, i) => [x, y + i]).concat([...Array(bBox.height + 1)].map((_, i) => [x1, y + i]))
                                    },
                                    isHorizontal: function() {
                                        return true
                                    },
                                    findFigurePoint: function(figure) {
                                        return getFigureCenter(figure)
                                    },
                                    adjustPoints: function(points) {
                                        return points.map(Math.round)
                                    }
                                }
                            }(labelOptions, that._getOption("inverted", true));
                            this._labelsGroup.clear();
                            if (!labelOptions.visible) {
                                return
                            }
                            this._labels = that._items.map((function(item) {
                                const label = new _label.Label({
                                    renderer: that._renderer,
                                    labelsGroup: that._labelsGroup,
                                    strategy: connectorStrategy
                                });
                                label.setOptions(function(labelOptions, defaultColor, defaultTextAlignment) {
                                    const opt = labelOptions || {};
                                    const labelFont = (0, _extend.extend)({}, opt.font) || {};
                                    const labelBorder = opt.border || {};
                                    const labelConnector = opt.connector || {};
                                    const backgroundAttr = {
                                        fill: opt.backgroundColor || defaultColor,
                                        "stroke-width": labelBorder.visible ? labelBorder.width || 0 : 0,
                                        stroke: labelBorder.visible && labelBorder.width ? labelBorder.color : "none",
                                        dashStyle: labelBorder.dashStyle
                                    };
                                    const connectorAttr = {
                                        stroke: labelConnector.visible && labelConnector.width ? labelConnector.color || defaultColor : "none",
                                        "stroke-width": labelConnector.visible ? labelConnector.width || 0 : 0,
                                        opacity: labelConnector.opacity
                                    };
                                    labelFont.color = "none" === opt.backgroundColor && "#ffffff" === (0, _utils.normalizeEnum)(labelFont.color) && "inside" !== opt.position ? defaultColor : labelFont.color;
                                    return {
                                        format: opt.format,
                                        textAlignment: opt.textAlignment || (isOutsidePosition(opt.position) ? defaultTextAlignment : "center"),
                                        customizeText: opt.customizeText,
                                        attributes: {
                                            font: labelFont
                                        },
                                        visible: 0 !== labelFont.size ? opt.visible : false,
                                        showForZeroValues: opt.showForZeroValues,
                                        horizontalOffset: opt.horizontalOffset,
                                        verticalOffset: opt.verticalOffset,
                                        background: backgroundAttr,
                                        connector: connectorAttr,
                                        wordWrap: labelOptions.wordWrap,
                                        textOverflow: labelOptions.textOverflow
                                    }
                                }(labelOptions, item.color, that._defaultLabelTextAlignment()));
                                label.setData({
                                    item: item,
                                    value: item.value,
                                    percent: item.percent
                                });
                                label.draw(true);
                                return label
                            }));
                            if (this._labels.length && isOutsidePosition(labelOptions.position)) {
                                this._requestChange(["LAYOUT"])
                            }
                        }
                    },
                    customize: function(constructor) {
                        constructor.prototype._proxyData.push((function(x, y) {
                            const that = this;
                            let data;
                            that._labels.forEach((function(label, index) {
                                const rect = label.getBoundingRect();
                                if (x >= rect.x && x <= rect.x + rect.width && y >= rect.y && y <= rect.y + rect.height) {
                                    const pos = isOutsidePosition(that._getOption("label").position) ? "outside" : "inside";
                                    data = {
                                        id: index,
                                        type: pos + "-label"
                                    };
                                    return true
                                }
                            }));
                            return data
                        }));
                        ["label", "resolveLabelOverlapping"].forEach(optionName => {
                            constructor.addChange({
                                code: optionName.toUpperCase(),
                                handler: function() {
                                    this._createLabels();
                                    this._requestChange(["LAYOUT"])
                                },
                                isThemeDependent: true,
                                isOptionChange: true,
                                option: optionName
                            })
                        })
                    },
                    fontFields: ["label.font"]
                };
                exports.plugin = plugin
            },
        89482:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/funnel/tiling.funnel.js ***!
              \*************************************************************************/
            function(module, exports) {
                exports.default = void 0;
                var _default = {
                    getFigures: function(data) {
                        const height = 1 / data.length;
                        return data.map((function(value, index, array) {
                            const nextValue = array[index + 1] ? array[index + 1] : array[index];
                            return [.5 - value / 2, height * index, .5 + value / 2, height * index, .5 + nextValue / 2, height * (index + 1), .5 - nextValue / 2, height * (index + 1)]
                        }))
                    },
                    normalizeValues: function(items) {
                        const max = items.reduce((function(max, item) {
                            return Math.max(item.value, max)
                        }), items[0] && items[0].value || 0);
                        return items.map((function(item) {
                            return item.value / max
                        }))
                    }
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        68074:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/funnel/tiling.js ***!
              \******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.addAlgorithm = function(name, callback, setDefault) {
                    algorithms[name] = callback;
                    if (setDefault) {
                        defaultAlgorithm = algorithms[name]
                    }
                };
                exports.getAlgorithm = function(name) {
                    return algorithms[(0, _utils.normalizeEnum)(name)] || defaultAlgorithm
                };
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                const algorithms = {};
                let defaultAlgorithm
            },
        2356:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/funnel/tiling.pyramid.js ***!
              \**************************************************************************/
            function(module, exports) {
                exports.default = void 0;
                var _default = {
                    getFigures: function(data, neckWidth, neckHeight) {
                        let height = 0;
                        let y = 0;
                        let x = 0;
                        let offsetX = 0;
                        const halfNeckWidth = neckWidth / 2;
                        const offsetFromCorner = .5 - halfNeckWidth;
                        const funnelHeight = 1 - neckHeight;
                        const neckLeftCorner = .5 - halfNeckWidth;
                        const neckRightCorner = .5 + halfNeckWidth;
                        return data.map((function(value) {
                            x = offsetX;
                            y = height;
                            height += value;
                            offsetX = offsetFromCorner * height / funnelHeight;
                            if (y <= funnelHeight && height <= funnelHeight) {
                                return [x, y, 1 - x, y, 1 - offsetX, height, 0 + offsetX, height]
                            } else if (y <= funnelHeight && height > funnelHeight) {
                                return [x, y, 1 - x, y, neckRightCorner, funnelHeight, neckRightCorner, height, neckLeftCorner, height, neckLeftCorner, funnelHeight]
                            } else {
                                return [neckLeftCorner, y, neckRightCorner, y, neckRightCorner, height, neckLeftCorner, height]
                            }
                        }))
                    },
                    normalizeValues: function(items) {
                        const sum = items.reduce((function(sum, item) {
                            return sum + item.value
                        }), 0);
                        return items.map((function(item) {
                            return item.value / sum
                        }))
                    }
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        32037:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/funnel/tooltip.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.plugin = void 0;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _tooltip = __webpack_require__( /*! ../core/tooltip */ 14371);

                function getCoords(coords, figureCoords, renderer) {
                    const offset = renderer.getRootOffset();
                    return coords || figureCoords && [(figureCoords[0] + figureCoords[2]) / 2 + offset.left, (figureCoords[1] + figureCoords[5]) / 2 + offset.top] || [-1e3, -1e3]
                }
                const plugin = {
                    name: "funnel-tooltip",
                    init: _common.noop,
                    dispose: _common.noop,
                    extenders: {
                        _buildNodes: function() {
                            this.hideTooltip()
                        },
                        _change_TILING: function() {
                            if (this._tooltipIndex >= 0) {
                                this._moveTooltip(this._items[this._tooltipIndex])
                            }
                        }
                    },
                    members: {
                        hideTooltip: function() {
                            if (this._tooltipIndex >= 0) {
                                this._tooltipIndex = -1;
                                this._tooltip.hide()
                            }
                        },
                        _moveTooltip: function(item, coords) {
                            const xy = getCoords(coords, item.coords, this._renderer);
                            this._tooltip.move(xy[0], xy[1], 0)
                        },
                        _showTooltip: function(index, coords) {
                            const that = this;
                            const tooltip = that._tooltip;
                            const item = that._items[index];
                            if (that._tooltipIndex === index) {
                                that._moveTooltip(item, coords);
                                return
                            }
                            const callback = result => {
                                if (void 0 === result) {
                                    return
                                }
                                if (!result) {
                                    tooltip.hide()
                                }
                                that._tooltipIndex = result ? index : -1
                            };
                            const xy = getCoords(coords, item.coords, this._renderer);
                            callback(tooltip.show({
                                value: item.value,
                                valueText: tooltip.formatValue(item.value),
                                percentText: tooltip.formatValue(item.percent, "percent"),
                                percent: item.percent,
                                item: item
                            }, {
                                x: xy[0],
                                y: xy[1],
                                offset: 0
                            }, {
                                item: item
                            }, void 0, callback))
                        }
                    },
                    customize: function(constructor) {
                        constructor.addPlugin(_tooltip.plugin)
                    }
                };
                exports.plugin = plugin
            },
        76686:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/funnel/tracker.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.plugin = void 0;
                var _funnel = (obj = __webpack_require__( /*! ./funnel */ 44697), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _tracker = __webpack_require__( /*! ../components/tracker */ 88997);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                let dataKeyModifier = 0;
                const proto = _funnel.default.prototype;
                proto._eventsMap.onItemClick = {
                    name: "itemClick"
                };
                proto._eventsMap.onLegendClick = {
                    name: "legendClick"
                };
                const plugin = {
                    name: "tracker",
                    init: function() {
                        const that = this;
                        const dataKey = "__funnel_data_" + dataKeyModifier++;
                        const getProxyData = function(e) {
                            const rootOffset = that._renderer.getRootOffset();
                            const x = Math.floor(e.pageX - rootOffset.left);
                            const y = Math.floor(e.pageY - rootOffset.top);
                            return that._hitTestTargets(x, y)
                        };
                        that._tracker = new _tracker.Tracker({
                            widget: that,
                            root: that._renderer.root,
                            getData: function(e, tooltipData) {
                                const target = e.target;
                                const data = target[dataKey];
                                if ((0, _type.isDefined)(data)) {
                                    return data
                                }
                                const proxyData = getProxyData(e);
                                if (tooltipData && proxyData && "inside-label" !== proxyData.type) {
                                    return
                                }
                                return proxyData && proxyData.id
                            },
                            getNode: function(index) {
                                return that._items[index]
                            },
                            click: function(e) {
                                const proxyData = getProxyData(e.event);
                                const dataType = proxyData && proxyData.type;
                                const event = "legend" === dataType ? "legendClick" : "itemClick";
                                that._eventTrigger(event, {
                                    item: e.node,
                                    event: e.event
                                })
                            }
                        });
                        this._dataKey = dataKey
                    },
                    dispose: function() {
                        this._tracker.dispose()
                    },
                    extenders: {
                        _change_TILING: function() {
                            const dataKey = this._dataKey;
                            this._items.forEach((function(item, index) {
                                item.element.data(dataKey, index)
                            }))
                        }
                    }
                };
                exports.plugin = plugin
            },
        44898:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/gauges/bar_gauge.js ***!
              \*********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.dxBarGauge = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _object = __webpack_require__( /*! ../../core/utils/object */ 48013);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _m_base_chart = __webpack_require__( /*! ../../__internal/viz/chart_components/m_base_chart */ 14107);
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _base_gauge = __webpack_require__( /*! ./base_gauge */ 18029);
                var _circular_gauge = _interopRequireDefault(__webpack_require__( /*! ./circular_gauge */ 31500));
                var _legend = __webpack_require__( /*! ../components/legend */ 16342);
                var _center_template = __webpack_require__( /*! ../core/center_template */ 56672);
                var _math = __webpack_require__( /*! ../../core/utils/math */ 60810);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const PI_DIV_180 = Math.PI / 180;
                const _abs = Math.abs;
                const _round = Math.round;
                const _floor = Math.floor;
                const _min = Math.min;
                const _max = Math.max;
                const _getSampleText = _base_gauge.getSampleText;
                const _formatValue = _base_gauge.formatValue;
                const _compareArrays = _base_gauge.compareArrays;
                const _isArray = Array.isArray;
                const _convertAngleToRendererSpace = _utils.convertAngleToRendererSpace;
                const _getCosAndSin = _utils.getCosAndSin;
                const _patchFontOptions = _utils.patchFontOptions;
                const _Number = Number;
                const _isFinite = isFinite;
                const _noop = _common.noop;
                const _extend = _extend2.extend;
                let BarWrapper;
                const dxBarGauge = _base_gauge.BaseGauge.inherit({
                    _rootClass: "dxbg-bar-gauge",
                    _themeSection: "barGauge",
                    _fontFields: ["label.font", "legend.font", "legend.title.font", "legend.title.subtitle.font"],
                    _initCore: function() {
                        const that = this;
                        that.callBase.apply(that, arguments);
                        that._barsGroup = that._renderer.g().attr({
                            class: "dxbg-bars"
                        }).linkOn(that._renderer.root, "bars");
                        that._values = [];
                        that._context = {
                            renderer: that._renderer,
                            translator: that._translator,
                            tracker: that._tracker,
                            group: that._barsGroup
                        };
                        that._animateStep = function(pos) {
                            const bars = that._bars;
                            let i;
                            let ii;
                            for (i = 0, ii = bars.length; i < ii; ++i) {
                                bars[i].animate(pos)
                            }
                        };
                        that._animateComplete = function() {
                            that._bars.forEach(bar => bar.endAnimation());
                            that._checkOverlap()
                        }
                    },
                    _disposeCore: function() {
                        const that = this;
                        that._barsGroup.linkOff();
                        that._barsGroup = that._values = that._context = that._animateStep = that._animateComplete = null;
                        that.callBase.apply(that, arguments)
                    },
                    _setupDomainCore: function() {
                        let startValue = this.option("startValue");
                        let endValue = this.option("endValue");
                        _isFinite(startValue) || (startValue = 0);
                        _isFinite(endValue) || (endValue = 100);
                        this._translator.setDomain(startValue, endValue);
                        this._baseValue = this._translator.adjust(this.option("baseValue"));
                        _isFinite(this._baseValue) || (this._baseValue = startValue < endValue ? startValue : endValue)
                    },
                    _getDefaultSize: function() {
                        return {
                            width: 300,
                            height: 300
                        }
                    },
                    _setupCodomain: _circular_gauge.default.prototype._setupCodomain,
                    _getApproximateScreenRange: function() {
                        const sides = this._area.sides;
                        const width = this._canvas.width / (sides.right - sides.left);
                        const height = this._canvas.height / (sides.down - sides.up);
                        const r = width < height ? width : height;
                        return -this._translator.getCodomainRange() * r * PI_DIV_180
                    },
                    _setupAnimationSettings: function() {
                        const that = this;
                        that.callBase.apply(that, arguments);
                        if (that._animationSettings) {
                            that._animationSettings.step = that._animateStep;
                            that._animationSettings.complete = that._animateComplete
                        }
                    },
                    _cleanContent: function() {
                        this._barsGroup.linkRemove();
                        this._animationSettings && this._barsGroup.stopAnimation();
                        this._barsGroup.clear()
                    },
                    _renderContent: function() {
                        const that = this;
                        let labelOptions = that.option("label");
                        let text;
                        let bBox;
                        const context = that._context;
                        that._barsGroup.linkAppend();
                        context.textEnabled = void 0 === labelOptions || labelOptions && (!("visible" in labelOptions) || labelOptions.visible);
                        if (context.textEnabled) {
                            context.textColor = labelOptions && labelOptions.font && labelOptions.font.color || null;
                            labelOptions = _extend(true, {}, that._themeManager.theme().label, labelOptions);
                            context.formatOptions = {
                                format: void 0 !== labelOptions.format ? labelOptions.format : that._defaultFormatOptions,
                                customizeText: labelOptions.customizeText
                            };
                            context.textOptions = {
                                align: "center"
                            };
                            context.fontStyles = _patchFontOptions(_extend({}, that._themeManager.theme().label.font, labelOptions.font, {
                                color: null
                            }));
                            that._textIndent = labelOptions.indent > 0 ? _Number(labelOptions.indent) : 0;
                            context.lineWidth = labelOptions.connectorWidth > 0 ? _Number(labelOptions.connectorWidth) : 0;
                            context.lineColor = labelOptions.connectorColor || null;
                            text = that._renderer.text(_getSampleText(that._translator, context.formatOptions), 0, 0).attr(context.textOptions).css(context.fontStyles).append(that._barsGroup);
                            bBox = text.getBBox();
                            text.remove();
                            context.textY = bBox.y;
                            context.textWidth = bBox.width;
                            context.textHeight = bBox.height
                        }
                        _circular_gauge.default.prototype._applyMainLayout.call(that);
                        that._renderBars()
                    },
                    _measureMainElements: function() {
                        const result = {
                            maxRadius: this._area.radius
                        };
                        if (this._context.textEnabled) {
                            result.horizontalMargin = this._context.textWidth;
                            result.verticalMargin = this._context.textHeight;
                            result.inverseHorizontalMargin = this._context.textWidth / 2;
                            result.inverseVerticalMargin = this._context.textHeight / 2
                        }
                        return result
                    },
                    _renderBars: function() {
                        const that = this;
                        const options = _extend({}, that._themeManager.theme(), that.option());
                        let radius;
                        const area = that._area;
                        const relativeInnerRadius = options.relativeInnerRadius > 0 && options.relativeInnerRadius < 1 ? _Number(options.relativeInnerRadius) : .1;
                        radius = area.radius;
                        if (that._context.textEnabled) {
                            that._textIndent = _round(_min(that._textIndent, radius / 2));
                            radius -= that._textIndent
                        }
                        that._outerRadius = _floor(radius);
                        that._innerRadius = _floor(radius * relativeInnerRadius);
                        that._barSpacing = options.barSpacing > 0 ? _Number(options.barSpacing) : 0;
                        _extend(that._context, {
                            backgroundColor: options.backgroundColor,
                            x: area.x,
                            y: area.y,
                            startAngle: area.startCoord,
                            endAngle: area.endCoord,
                            baseAngle: that._translator.translate(that._baseValue)
                        });
                        that._arrangeBars()
                    },
                    _arrangeBars: function() {
                        const that = this;
                        let radius = that._outerRadius - that._innerRadius;
                        const context = that._context;
                        let i;
                        const count = that._bars.length;
                        that._beginValueChanging();
                        context.barSize = count > 0 ? _max((radius - (count - 1) * that._barSpacing) / count, 1) : 0;
                        const spacing = count > 1 ? _max(_min((radius - count * context.barSize) / (count - 1), that._barSpacing), 0) : 0;
                        const _count = _min(_floor((radius + spacing) / context.barSize), count);
                        that._setBarsCount(count);
                        radius = that._outerRadius;
                        context.textRadius = radius;
                        context.textIndent = that._textIndent;
                        that._palette.reset();
                        const unitOffset = context.barSize + spacing;
                        const colors = that._palette.generateColors(_count);
                        for (i = 0; i < _count; ++i, radius -= unitOffset) {
                            that._bars[i].arrange({
                                radius: radius,
                                color: colors[i]
                            })
                        }
                        for (let i = _count; i < count; i++) {
                            that._bars[i].hide()
                        }
                        if (that._animationSettings && !that._noAnimation) {
                            that._animateBars()
                        } else {
                            that._updateBars()
                        }
                        that._endValueChanging()
                    },
                    _setBarsCount: function() {
                        const that = this;
                        if (that._bars.length > 0) {
                            if (that._dummyBackground) {
                                that._dummyBackground.dispose();
                                that._dummyBackground = null
                            }
                        } else {
                            if (!that._dummyBackground) {
                                that._dummyBackground = that._renderer.arc().attr({
                                    "stroke-linejoin": "round"
                                })
                            }
                            that._dummyBackground.attr({
                                x: that._context.x,
                                y: that._context.y,
                                outerRadius: that._outerRadius,
                                innerRadius: that._innerRadius,
                                startAngle: that._context.endAngle,
                                endAngle: that._context.startAngle,
                                fill: that._context.backgroundColor
                            }).append(that._barsGroup)
                        }
                    },
                    _getCenter: function() {
                        return {
                            x: this._context.x,
                            y: this._context.y
                        }
                    },
                    _updateBars: function() {
                        this._bars.forEach(bar => bar.applyValue());
                        this._checkOverlap()
                    },
                    _checkOverlap: function() {
                        const that = this;
                        const overlapStrategy = (0, _utils.normalizeEnum)(that._getOption("resolveLabelOverlapping", true));

                        function shiftFunction(box, length) {
                            return (0, _utils.getVerticallyShiftedAngularCoords)(box, -length, that._context)
                        }
                        if ("none" === overlapStrategy) {
                            return
                        }
                        if ("shift" === overlapStrategy) {
                            const newBars = that._dividePoints();
                            _m_base_chart.overlapping.resolveLabelOverlappingInOneDirection(newBars.left, that._canvas, false, false, shiftFunction);
                            _m_base_chart.overlapping.resolveLabelOverlappingInOneDirection(newBars.right, that._canvas, false, false, shiftFunction);
                            that._clearLabelsCrossTitle();
                            that._drawConnector()
                        } else {
                            that._clearOverlappingLabels()
                        }
                    },
                    _drawConnector() {
                        const that = this;
                        const bars = that._bars;
                        const {
                            connectorWidth: connectorWidth
                        } = that._getOption("label");
                        bars.forEach(bar => {
                            if (!bar._isLabelShifted) {
                                return
                            }
                            const x = bar._bar.attr("x");
                            const y = bar._bar.attr("y");
                            const innerRadius = bar._bar.attr("innerRadius");
                            const outerRadius = bar._bar.attr("outerRadius");
                            const startAngle = bar._bar.attr("startAngle");
                            const endAngle = bar._bar.attr("endAngle");
                            const coordStart = getStartCoordsArc.apply(null, (0, _utils.normalizeArcParams)(x, y, innerRadius, outerRadius, startAngle, endAngle));
                            const {
                                cos: cos,
                                sin: sin
                            } = _getCosAndSin(bar._angle);
                            const xStart = coordStart.x - sin * connectorWidth / 2 - cos;
                            const yStart = coordStart.y - cos * connectorWidth / 2 + sin;
                            const box = bar._text.getBBox();
                            const lastCoords = bar._text._lastCoords;
                            const indentFromLabel = that._context.textWidth / 2;
                            const originalXLabelCoord = box.x + box.width / 2 + lastCoords.x;
                            const originalPoints = [xStart, yStart, originalXLabelCoord, box.y + lastCoords.y];
                            if (bar._angle > 90) {
                                originalPoints[2] += indentFromLabel
                            } else {
                                originalPoints[2] -= indentFromLabel
                            }
                            if (bar._angle <= 180 && bar._angle > 0) {
                                originalPoints[3] += box.height
                            }
                            if (connectorWidth % 2) {
                                const xDeviation = -sin / 2;
                                const yDeviation = -cos / 2;
                                if (bar._angle > 180) {
                                    originalPoints[0] -= xDeviation;
                                    originalPoints[1] -= yDeviation
                                } else if (bar._angle > 0 && bar._angle <= 90) {
                                    originalPoints[0] += xDeviation;
                                    originalPoints[1] += yDeviation
                                }
                            }
                            const points = originalPoints.map(coordinate => (0, _math.roundFloatPart)(coordinate, 4));
                            bar._line.attr({
                                points: points
                            });
                            bar._line.rotate(0);
                            bar._isLabelShifted = false
                        })
                    },
                    _dividePoints() {
                        const bars = this._bars;
                        return bars.reduce((function(stackBars, bar) {
                            const angle = (0, _utils.normalizeAngle)(bar._angle);
                            const isRightSide = angle <= 90 || angle >= 270;
                            bar._text._lastCoords = {
                                x: 0,
                                y: 0
                            };
                            const barToExtend = isRightSide ? stackBars.right : stackBars.left;
                            barToExtend.push({
                                series: {
                                    isStackedSeries: () => false,
                                    isFullStackedSeries: () => false
                                },
                                getLabels: () => [{
                                    isVisible: () => true,
                                    getBoundingRect: () => {
                                        const {
                                            height: height,
                                            width: width,
                                            x: x,
                                            y: y
                                        } = bar._text.getBBox();
                                        const lastCoords = bar._text._lastCoords;
                                        return {
                                            x: x + lastCoords.x,
                                            y: y + lastCoords.y,
                                            width: width,
                                            height: height
                                        }
                                    },
                                    shift: (x, y) => {
                                        const box = bar._text.getBBox();
                                        bar._text._lastCoords = {
                                            x: x - box.x,
                                            y: y - box.y
                                        };
                                        bar._text.attr({
                                            translateX: x - box.x,
                                            translateY: y - box.y
                                        });
                                        bar._isLabelShifted = true
                                    },
                                    draw: () => bar.hideLabel(),
                                    getData: () => ({
                                        value: bar.getValue()
                                    }),
                                    hideInsideLabel: () => false
                                }]
                            });
                            return stackBars
                        }), {
                            left: [],
                            right: []
                        })
                    },
                    _clearOverlappingLabels() {
                        const bars = this._bars;
                        let currentIndex = 0;
                        let nextIndex = 1;
                        const sortedBars = bars.concat().sort((a, b) => a.getValue() - b.getValue());
                        while (currentIndex < sortedBars.length && nextIndex < sortedBars.length) {
                            const current = sortedBars[currentIndex];
                            const next = sortedBars[nextIndex];
                            if (current.checkIntersect(next)) {
                                next.hideLabel();
                                nextIndex++
                            } else {
                                currentIndex = nextIndex;
                                nextIndex = currentIndex + 1
                            }
                        }
                    },
                    _clearLabelsCrossTitle() {
                        const bars = this._bars;
                        const titleCoords = this._title.getLayoutOptions() || {
                            x: 0,
                            y: 0,
                            height: 0,
                            width: 0
                        };
                        const minY = titleCoords.y + titleCoords.height;
                        bars.forEach(bar => {
                            const box = bar._text.getBBox();
                            const lastCoords = bar._text._lastCoords;
                            if (minY > box.y + lastCoords.y) {
                                bar.hideLabel()
                            }
                        })
                    },
                    _animateBars: function() {
                        const that = this;
                        let i;
                        const ii = that._bars.length;
                        if (ii > 0) {
                            for (i = 0; i < ii; ++i) {
                                that._bars[i].beginAnimation()
                            }
                            that._barsGroup.animate({
                                _: 0
                            }, that._animationSettings)
                        }
                    },
                    _buildNodes() {
                        const that = this;
                        const options = that._options.silent();
                        that._palette = that._themeManager.createPalette(options.palette, {
                            useHighlight: true,
                            extensionMode: options.paletteExtensionMode
                        });
                        that._palette.reset();
                        that._bars = that._bars || [];
                        that._animationSettings && that._barsGroup.stopAnimation();
                        const barValues = that._values.filter(_isFinite);
                        const count = barValues.length;
                        if (that._bars.length > count) {
                            const ii = that._bars.length;
                            for (let i = count; i < ii; ++i) {
                                that._bars[i].dispose()
                            }
                            that._bars.splice(count, ii - count)
                        } else if (that._bars.length < count) {
                            for (let i = that._bars.length; i < count; ++i) {
                                that._bars.push(new BarWrapper(i, that._context))
                            }
                        }
                        that._bars.forEach((bar, index) => {
                            bar.update({
                                color: that._palette.getNextColor(count),
                                value: barValues[index]
                            })
                        })
                    },
                    _updateValues: function(values) {
                        const that = this;
                        const list = _isArray(values) && values || _isFinite(values) && [values] || [];
                        let i;
                        const ii = list.length;
                        let value;
                        that._values.length = ii;
                        for (i = 0; i < ii; ++i) {
                            value = list[i];
                            that._values[i] = _Number(_isFinite(value) ? value : that._values[i])
                        }
                        if (!that._resizing) {
                            if (!_compareArrays(that._values, that.option("values"))) {
                                that.option("values", that._values.slice())
                            }
                        }
                        this._change(["NODES"])
                    },
                    values: function(arg) {
                        if (void 0 !== arg) {
                            this._updateValues(arg);
                            return this
                        } else {
                            return this._values.slice(0)
                        }
                    },
                    _optionChangesMap: {
                        backgroundColor: "MOSTLY_TOTAL",
                        relativeInnerRadius: "MOSTLY_TOTAL",
                        barSpacing: "MOSTLY_TOTAL",
                        label: "MOSTLY_TOTAL",
                        resolveLabelOverlapping: "MOSTLY_TOTAL",
                        palette: "MOSTLY_TOTAL",
                        paletteExtensionMode: "MOSTLY_TOTAL",
                        values: "VALUES"
                    },
                    _change_VALUES: function() {
                        this._updateValues(this.option("values"))
                    },
                    _factory: (0, _object.clone)(_base_gauge.BaseGauge.prototype._factory),
                    _optionChangesOrder: ["VALUES", "NODES"],
                    _initialChanges: ["VALUES"],
                    _change_NODES() {
                        this._buildNodes()
                    },
                    _change_MOSTLY_TOTAL: function() {
                        this._change(["NODES"]);
                        this.callBase()
                    },
                    _proxyData: [],
                    _getLegendData() {
                        const that = this;
                        const formatOptions = {};
                        const options = that._options.silent();
                        const labelFormatOptions = (options.label || {}).format;
                        const legendFormatOptions = (options.legend || {}).itemTextFormat;
                        if (legendFormatOptions) {
                            formatOptions.format = legendFormatOptions
                        } else {
                            formatOptions.format = labelFormatOptions || that._defaultFormatOptions
                        }
                        return (this._bars || []).map(b => ({
                            id: b.index,
                            item: {
                                value: b.getValue(),
                                color: b.getColor(),
                                index: b.index
                            },
                            text: _formatValue(b.getValue(), formatOptions),
                            visible: true,
                            states: {
                                normal: {
                                    fill: b.getColor()
                                }
                            }
                        }))
                    }
                });
                exports.dxBarGauge = dxBarGauge;
                BarWrapper = function(index, context) {
                    this._context = context;
                    this._tracker = context.renderer.arc().attr({
                        "stroke-linejoin": "round"
                    });
                    this.index = index
                };
                _extend(BarWrapper.prototype, {
                    dispose: function() {
                        const that = this;
                        that._background.dispose();
                        that._bar.dispose();
                        if (that._context.textEnabled) {
                            that._line.dispose();
                            that._text.dispose()
                        }
                        that._context.tracker.detach(that._tracker);
                        that._context = that._settings = that._background = that._bar = that._line = that._text = that._tracker = null;
                        return that
                    },
                    arrange: function(options) {
                        const that = this;
                        const context = that._context;
                        this._visible = true;
                        context.tracker.attach(that._tracker, that, {
                            index: that.index
                        });
                        that._background = context.renderer.arc().attr({
                            "stroke-linejoin": "round",
                            fill: context.backgroundColor
                        }).append(context.group);
                        that._settings = that._settings || {
                            x: context.x,
                            y: context.y,
                            startAngle: context.baseAngle,
                            endAngle: context.baseAngle
                        };
                        that._bar = context.renderer.arc().attr(_extend({
                            "stroke-linejoin": "round"
                        }, that._settings)).append(context.group);
                        if (context.textEnabled) {
                            that._line = context.renderer.path([], "line").attr({
                                "stroke-width": context.lineWidth
                            }).append(context.group);
                            that._text = context.renderer.text().css(context.fontStyles).attr(context.textOptions).append(context.group)
                        }
                        that._angle = isFinite(that._angle) ? that._angle : context.baseAngle;
                        that._settings.outerRadius = options.radius;
                        that._settings.innerRadius = options.radius - context.barSize;
                        that._settings.x = context.x;
                        that._settings.y = context.y;
                        that._background.attr(_extend({}, that._settings, {
                            startAngle: context.endAngle,
                            endAngle: context.startAngle,
                            fill: that._context.backgroundColor
                        }));
                        that._bar.attr({
                            x: context.x,
                            y: context.y,
                            outerRadius: that._settings.outerRadius,
                            innerRadius: that._settings.innerRadius,
                            fill: that._color
                        });
                        that._tracker.attr(that._settings);
                        if (context.textEnabled) {
                            that._line.attr({
                                points: [context.x, context.y - that._settings.innerRadius, context.x, context.y - context.textRadius - context.textIndent],
                                stroke: context.lineColor || that._color
                            }).sharp();
                            that._text.css({
                                fill: context.textColor || that._color
                            })
                        }
                        return that
                    },
                    getTooltipParameters: function() {
                        const cosSin = _getCosAndSin((this._angle + this._context.baseAngle) / 2);
                        return {
                            x: _round(this._context.x + (this._settings.outerRadius + this._settings.innerRadius) / 2 * cosSin.cos),
                            y: _round(this._context.y - (this._settings.outerRadius + this._settings.innerRadius) / 2 * cosSin.sin),
                            offset: 0,
                            color: this._color,
                            value: this._value
                        }
                    },
                    setAngle: function(angle) {
                        const that = this;
                        const context = that._context;
                        const settings = that._settings;
                        let cosSin;
                        that._angle = angle;
                        setAngles(settings, context.baseAngle, angle);
                        that._bar.attr(settings);
                        that._tracker.attr(settings);
                        if (context.textEnabled) {
                            cosSin = _getCosAndSin(angle);
                            const indent = context.textIndent;
                            const radius = context.textRadius + indent;
                            let x = context.x + radius * cosSin.cos;
                            let y = context.y - radius * cosSin.sin;
                            const halfWidth = .5 * context.textWidth;
                            const textHeight = context.textHeight;
                            const textY = context.textY;
                            if (_abs(x - context.x) > indent) {
                                x += x < context.x ? -halfWidth : halfWidth
                            }
                            if (_abs(y - context.y) <= indent) {
                                y -= textY + .5 * textHeight
                            } else {
                                y -= y < context.y ? textY + textHeight : textY
                            }
                            const text = _formatValue(that._value, context.formatOptions, {
                                index: that.index
                            });
                            const visibility = "" === text ? "hidden" : null;
                            that._text.attr({
                                text: text,
                                x: x,
                                y: y,
                                visibility: visibility
                            });
                            that._line.attr({
                                visibility: visibility
                            });
                            that._line.rotate(_convertAngleToRendererSpace(angle), context.x, context.y)
                        }
                        return that
                    },
                    hideLabel: function() {
                        this._text.attr({
                            visibility: "hidden"
                        });
                        this._line.attr({
                            visibility: "hidden"
                        })
                    },
                    checkIntersect: function(anotherBar) {
                        const coords = this.calculateLabelCoords();
                        const anotherCoords = anotherBar.calculateLabelCoords();
                        if (!coords || !anotherCoords) {
                            return false
                        }
                        const width = Math.max(0, Math.min(coords.bottomRight.x, anotherCoords.bottomRight.x) - Math.max(coords.topLeft.x, anotherCoords.topLeft.x));
                        const height = Math.max(0, Math.min(coords.bottomRight.y, anotherCoords.bottomRight.y) - Math.max(coords.topLeft.y, anotherCoords.topLeft.y));
                        return width * height !== 0
                    },
                    calculateLabelCoords: function() {
                        if (!this._text) {
                            return
                        }
                        const box = this._text.getBBox();
                        return {
                            topLeft: {
                                x: box.x,
                                y: box.y
                            },
                            bottomRight: {
                                x: box.x + box.width,
                                y: box.y + box.height
                            }
                        }
                    },
                    _processValue: function(value) {
                        return this._context.translator.translate(this._context.translator.adjust(value))
                    },
                    applyValue() {
                        if (!this._visible) {
                            return this
                        }
                        return this.setAngle(this._processValue(this.getValue()))
                    },
                    update(_ref) {
                        let {
                            color: color,
                            value: value
                        } = _ref;
                        this._color = color;
                        this._value = value
                    },
                    hide() {
                        this._visible = false
                    },
                    getColor() {
                        return this._color
                    },
                    getValue() {
                        return this._value
                    },
                    beginAnimation: function() {
                        if (!this._visible) {
                            return this
                        }
                        const that = this;
                        const angle = this._processValue(this.getValue());
                        if (!compareFloats(that._angle, angle)) {
                            that._start = that._angle;
                            that._delta = angle - that._angle;
                            that._tracker.attr({
                                visibility: "hidden"
                            });
                            if (that._context.textEnabled) {
                                that._line.attr({
                                    visibility: "hidden"
                                });
                                that._text.attr({
                                    visibility: "hidden"
                                })
                            }
                        } else {
                            that.animate = _noop;
                            that.setAngle(that._angle)
                        }
                    },
                    animate: function(pos) {
                        if (!this._visible) {
                            return this
                        }
                        this._angle = this._start + this._delta * pos;
                        setAngles(this._settings, this._context.baseAngle, this._angle);
                        this._bar.attr(this._settings)
                    },
                    endAnimation: function() {
                        const that = this;
                        if (void 0 !== that._delta) {
                            if (compareFloats(that._angle, that._start + that._delta)) {
                                that._tracker.attr({
                                    visibility: null
                                });
                                that.setAngle(that._angle)
                            }
                        } else {
                            delete that.animate
                        }
                        delete that._start;
                        delete that._delta
                    }
                });

                function setAngles(target, angle1, angle2) {
                    target.startAngle = angle1 < angle2 ? angle1 : angle2;
                    target.endAngle = angle1 < angle2 ? angle2 : angle1
                }

                function compareFloats(value1, value2) {
                    return _abs(value1 - value2) < 1e-4
                }

                function getStartCoordsArc(x, y, innerR, outerR, startAngleCos, startAngleSin) {
                    return {
                        x: (x + outerR * startAngleCos).toFixed(5),
                        y: (y - outerR * startAngleSin).toFixed(5)
                    }
                }(0, _component_registrator.default)("dxBarGauge", dxBarGauge);
                dxBarGauge.addPlugin(_legend.plugin);
                dxBarGauge.addPlugin(_center_template.plugins.gauge)
            },
        18029:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/gauges/base_gauge.js ***!
              \**********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.BaseGauge = void 0;
                exports.compareArrays = function(array1, array2) {
                    return array1 && array2 && array1.length === array2.length && function(array1, array2) {
                        let i;
                        const ii = array1.length;
                        let array1ValueIsNaN;
                        let array2ValueIsNaN;
                        for (i = 0; i < ii; ++i) {
                            array1ValueIsNaN = array1[i] !== array1[i];
                            array2ValueIsNaN = array2[i] !== array2[i];
                            if (array1ValueIsNaN && array2ValueIsNaN) {
                                continue
                            }
                            if (array1[i] !== array2[i]) {
                                return false
                            }
                        }
                        return true
                    }(array1, array2)
                };
                exports.getSampleText = exports.formatValue = void 0;
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _translator1d = __webpack_require__( /*! ../translators/translator1d */ 17953);
                var _m_base_widget = _interopRequireDefault(__webpack_require__( /*! ../../__internal/viz/core/m_base_widget */ 55845));
                var _theme_manager = _interopRequireDefault(__webpack_require__( /*! ./theme_manager */ 41802));
                var _tracker = _interopRequireDefault(__webpack_require__( /*! ./tracker */ 57298));
                var _format_helper = _interopRequireDefault(__webpack_require__( /*! ../../format_helper */ 30343));
                var _export = __webpack_require__( /*! ../core/export */ 82454);
                var _title = __webpack_require__( /*! ../core/title */ 17384);
                var _tooltip = __webpack_require__( /*! ../core/tooltip */ 14371);
                var _loading_indicator = __webpack_require__( /*! ../core/loading_indicator */ 64758);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const _Number = Number;
                const _extend = _extend2.extend;
                const _format = _format_helper.default.format;
                const BaseGauge = _m_base_widget.default.inherit({
                    _rootClassPrefix: "dxg",
                    _themeSection: "gauge",
                    _createThemeManager: function() {
                        return new _theme_manager.default.ThemeManager(this._getThemeManagerOptions())
                    },
                    _initCore: function() {
                        const root = this._renderer.root;
                        this._valueChangingLocker = 0;
                        this._translator = this._factory.createTranslator();
                        this._tracker = this._factory.createTracker({
                            renderer: this._renderer,
                            container: root
                        });
                        this._setTrackerCallbacks()
                    },
                    _beginValueChanging: function() {
                        this._resetIsReady();
                        this._onBeginUpdate();
                        ++this._valueChangingLocker
                    },
                    _endValueChanging: function() {
                        if (0 === --this._valueChangingLocker) {
                            this._drawn()
                        }
                    },
                    _setTrackerCallbacks: function() {
                        const renderer = this._renderer;
                        const tooltip = this._tooltip;
                        this._tracker.setCallbacks({
                            "tooltip-show": function(target, info, callback) {
                                const tooltipParameters = target.getTooltipParameters();
                                const offset = renderer.getRootOffset();
                                const formatObject = _extend({
                                    value: tooltipParameters.value,
                                    valueText: tooltip.formatValue(tooltipParameters.value),
                                    color: tooltipParameters.color
                                }, info);
                                return tooltip.show(formatObject, {
                                    x: tooltipParameters.x + offset.left,
                                    y: tooltipParameters.y + offset.top,
                                    offset: tooltipParameters.offset
                                }, {
                                    target: info
                                }, void 0, callback)
                            },
                            "tooltip-hide": function() {
                                return tooltip.hide()
                            }
                        })
                    },
                    _dispose: function() {
                        this._cleanCore();
                        this.callBase.apply(this, arguments)
                    },
                    _disposeCore: function() {
                        this._themeManager.dispose();
                        this._tracker.dispose();
                        this._translator = this._tracker = null
                    },
                    _cleanCore: function() {
                        this._tracker.deactivate();
                        this._cleanContent()
                    },
                    _renderCore: function() {
                        if (!this._isValidDomain) {
                            return
                        }
                        this._renderContent();
                        this._renderGraphicObjects();
                        this._tracker.setTooltipState(this._tooltip.isEnabled());
                        this._tracker.activate();
                        this._noAnimation = false
                    },
                    _applyChanges: function() {
                        this.callBase.apply(this, arguments);
                        this._resizing = this._noAnimation = false
                    },
                    _setContentSize: function() {
                        const that = this;
                        that._resizing = that._noAnimation = 2 === that._changes.count();
                        that.callBase.apply(that, arguments)
                    },
                    _applySize: function(rect) {
                        this._innerRect = {
                            left: rect[0],
                            top: rect[1],
                            right: rect[2],
                            bottom: rect[3]
                        };
                        const layoutCache = this._layout._cache;
                        this._cleanCore();
                        this._renderCore();
                        this._layout._cache = this._layout._cache || layoutCache;
                        return [rect[0], this._innerRect.top, rect[2], this._innerRect.bottom]
                    },
                    _initialChanges: ["DOMAIN"],
                    _themeDependentChanges: ["DOMAIN"],
                    _optionChangesMap: {
                        subtitle: "MOSTLY_TOTAL",
                        indicator: "MOSTLY_TOTAL",
                        geometry: "MOSTLY_TOTAL",
                        animation: "MOSTLY_TOTAL",
                        startValue: "DOMAIN",
                        endValue: "DOMAIN"
                    },
                    _optionChangesOrder: ["DOMAIN", "MOSTLY_TOTAL"],
                    _change_DOMAIN: function() {
                        this._setupDomain()
                    },
                    _change_MOSTLY_TOTAL: function() {
                        this._applyMostlyTotalChange()
                    },
                    _updateExtraElements: _common.noop,
                    _setupDomain: function() {
                        const that = this;
                        that._setupDomainCore();
                        that._isValidDomain = isFinite(1 / (that._translator.getDomain()[1] - that._translator.getDomain()[0]));
                        if (!that._isValidDomain) {
                            that._incidentOccurred("W2301")
                        }
                        that._change(["MOSTLY_TOTAL"])
                    },
                    _applyMostlyTotalChange: function() {
                        this._setupCodomain();
                        this._setupAnimationSettings();
                        this._setupDefaultFormat();
                        this._change(["LAYOUT"])
                    },
                    _setupAnimationSettings: function() {
                        const that = this;
                        let option = that.option("animation");
                        that._animationSettings = null;
                        if (void 0 === option || option) {
                            option = _extend({
                                enabled: true,
                                duration: 1e3,
                                easing: "easeOutCubic"
                            }, option);
                            if (option.enabled && option.duration > 0) {
                                that._animationSettings = {
                                    duration: _Number(option.duration),
                                    easing: option.easing
                                }
                            }
                        }
                        that._containerBackgroundColor = that.option("containerBackgroundColor") || that._themeManager.theme().containerBackgroundColor
                    },
                    _setupDefaultFormat: function() {
                        const domain = this._translator.getDomain();
                        this._defaultFormatOptions = (0, _utils.getAppropriateFormat)(domain[0], domain[1], this._getApproximateScreenRange())
                    },
                    _setupDomainCore: null,
                    _calculateSize: null,
                    _cleanContent: null,
                    _renderContent: null,
                    _setupCodomain: null,
                    _getApproximateScreenRange: null,
                    _factory: {
                        createTranslator: function() {
                            return new _translator1d.Translator1D
                        },
                        createTracker: function(parameters) {
                            return new _tracker.default(parameters)
                        }
                    }
                });
                exports.BaseGauge = BaseGauge;
                const formatValue = function(value, options, extra) {
                    if (Object.is(value, -0)) {
                        value = 0
                    }
                    options = options || {};
                    const text = _format(value, options.format);
                    let formatObject;
                    if ("function" === typeof options.customizeText) {
                        formatObject = _extend({
                            value: value,
                            valueText: text
                        }, extra);
                        return String(options.customizeText.call(formatObject, formatObject))
                    }
                    return text
                };
                exports.formatValue = formatValue;
                exports.getSampleText = function(translator, options) {
                    const text1 = formatValue(translator.getDomainStart(), options);
                    const text2 = formatValue(translator.getDomainEnd(), options);
                    return text1.length >= text2.length ? text1 : text2
                };
                BaseGauge.addPlugin(_export.plugin);
                BaseGauge.addPlugin(_title.plugin);
                BaseGauge.addPlugin(_tooltip.plugin);
                BaseGauge.addPlugin(_loading_indicator.plugin);
                const _setTooltipOptions = BaseGauge.prototype._setTooltipOptions;
                BaseGauge.prototype._setTooltipOptions = function() {
                    _setTooltipOptions.apply(this, arguments);
                    this._tracker && this._tracker.setTooltipState(this._tooltip.isEnabled())
                }
            },
        3446:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/gauges/base_indicators.js ***!
              \***************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.BaseTextCloudMarker = exports.BaseRangeBar = exports.BaseIndicator = exports.BaseElement = void 0;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _base_gauge = __webpack_require__( /*! ./base_gauge */ 18029);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _class = (obj = __webpack_require__( /*! ../../core/class */ 38377), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const _isFinite = isFinite;
                const _Number = Number;
                const _round = Math.round;
                const _formatValue = _base_gauge.formatValue;
                const _getSampleText = _base_gauge.getSampleText;
                const BaseElement = _class.default.inherit({
                    ctor: function(parameters) {
                        const that = this;
                        (0, _iterator.each)(parameters, (function(name, value) {
                            that["_" + name] = value
                        }));
                        that._init()
                    },
                    dispose: function() {
                        const that = this;
                        that._dispose();
                        (0, _iterator.each)(that, (function(name) {
                            that[name] = null
                        }));
                        return that
                    },
                    getOffset: function() {
                        return _Number(this._options.offset) || 0
                    }
                });
                exports.BaseElement = BaseElement;
                const BaseIndicator = BaseElement.inherit({
                    _init: function() {
                        this._rootElement = this._createRoot().linkOn(this._owner, {
                            name: "value-indicator",
                            after: "core"
                        });
                        this._trackerElement = this._createTracker()
                    },
                    _dispose: function() {
                        this._rootElement.linkOff()
                    },
                    _setupAnimation: function() {
                        const that = this;
                        if (that._options.animation) {
                            that._animation = {
                                step: function(pos) {
                                    that._actualValue = that._animation.start + that._animation.delta * pos;
                                    that._actualPosition = that._translator.translate(that._actualValue);
                                    that._move()
                                },
                                duration: that._options.animation.duration > 0 ? _Number(that._options.animation.duration) : 0,
                                easing: that._options.animation.easing
                            }
                        }
                    },
                    _runAnimation: function(value) {
                        const animation = this._animation;
                        animation.start = this._actualValue;
                        animation.delta = value - this._actualValue;
                        this._rootElement.animate({
                            _: 0
                        }, {
                            step: animation.step,
                            duration: animation.duration,
                            easing: animation.easing
                        })
                    },
                    _createRoot: function() {
                        return this._renderer.g().attr({
                            class: this._className
                        })
                    },
                    _createTracker: function() {
                        return this._renderer.path([], "area")
                    },
                    _getTrackerSettings: _common.noop,
                    clean: function() {
                        this._animation && this._rootElement.stopAnimation();
                        this._rootElement.linkRemove().clear();
                        this._clear();
                        this._tracker.detach(this._trackerElement);
                        this._options = this.enabled = this._animation = null;
                        return this
                    },
                    render: function(options) {
                        const that = this;
                        that.type = options.type;
                        that._options = options;
                        that._actualValue = that._currentValue = that._translator.adjust(that._options.currentValue);
                        that.enabled = that._isEnabled();
                        if (that.enabled) {
                            that._setupAnimation();
                            that._rootElement.attr({
                                fill: (0, _utils.extractColor)(that._options.color)
                            }).linkAppend();
                            that._tracker.attach(that._trackerElement, that, that._trackerInfo)
                        }
                        return that
                    },
                    resize: function(layout) {
                        const that = this;
                        that._rootElement.clear();
                        that._clear();
                        that.visible = that._isVisible(layout);
                        if (that.visible) {
                            (0, _extend.extend)(that._options, layout);
                            that._actualPosition = that._translator.translate(that._actualValue);
                            that._render();
                            that._trackerElement.attr(that._getTrackerSettings());
                            that._move()
                        }
                        return that
                    },
                    value: function(arg, _noAnimation) {
                        const that = this;
                        let val;
                        const rootElement = this._rootElement;
                        let visibility = null;
                        if (void 0 === arg) {
                            return that._currentValue
                        }
                        if (null === arg) {
                            visibility = "hidden";
                            that._currentValue = arg
                        } else {
                            val = that._translator.adjust(arg);
                            if (that._currentValue !== val && _isFinite(val)) {
                                that._currentValue = val;
                                if (that.visible) {
                                    if (that._animation && !_noAnimation) {
                                        that._runAnimation(val)
                                    } else {
                                        that._actualValue = val;
                                        that._actualPosition = that._translator.translate(val);
                                        that._move()
                                    }
                                }
                            }
                        }
                        rootElement.attr({
                            visibility: visibility
                        });
                        return that
                    },
                    _isEnabled: null,
                    _isVisible: null,
                    _render: null,
                    _clear: null,
                    _move: null
                });
                exports.BaseIndicator = BaseIndicator;
                const COEFFICIENTS_MAP = {};
                COEFFICIENTS_MAP["right-bottom"] = COEFFICIENTS_MAP.rb = [0, -1, -1, 0, 0, 1, 1, 0];
                COEFFICIENTS_MAP["bottom-right"] = COEFFICIENTS_MAP.br = [-1, 0, 0, -1, 1, 0, 0, 1];
                COEFFICIENTS_MAP["left-bottom"] = COEFFICIENTS_MAP.lb = [0, -1, 1, 0, 0, 1, -1, 0];
                COEFFICIENTS_MAP["bottom-left"] = COEFFICIENTS_MAP.bl = [1, 0, 0, -1, -1, 0, 0, 1];
                COEFFICIENTS_MAP["left-top"] = COEFFICIENTS_MAP.lt = [0, 1, 1, 0, 0, -1, -1, 0];
                COEFFICIENTS_MAP["top-left"] = COEFFICIENTS_MAP.tl = [1, 0, 0, 1, -1, 0, 0, -1];
                COEFFICIENTS_MAP["right-top"] = COEFFICIENTS_MAP.rt = [0, 1, -1, 0, 0, -1, 1, 0];
                COEFFICIENTS_MAP["top-right"] = COEFFICIENTS_MAP.tr = [-1, 0, 0, 1, 1, 0, 0, -1];
                const BaseTextCloudMarker = BaseIndicator.inherit({
                    _move: function() {
                        const options = this._options;
                        const textCloudOptions = this._getTextCloudOptions();
                        const text = _formatValue(this._actualValue, options.text);
                        this._text.attr({
                            text: text
                        });
                        const bBox = this._text.getBBox();
                        const x = textCloudOptions.x;
                        const y = textCloudOptions.y;
                        const cloudWidth = (bBox.width || text.length * this._textUnitWidth) + 2 * options.horizontalOffset;
                        const cloudHeight = (bBox.height || this._textHeight) + 2 * options.verticalOffset;
                        const info = function(options) {
                            let x = options.x;
                            let y = options.y;
                            const type = COEFFICIENTS_MAP[options.type];
                            const cloudWidth = options.cloudWidth;
                            const cloudHeight = options.cloudHeight;
                            let tailWidth;
                            let tailHeight;
                            const cx = x;
                            const cy = y;
                            tailWidth = tailHeight = options.tailLength;
                            if (1 & type[0]) {
                                tailHeight = Math.min(tailHeight, cloudHeight / 3)
                            } else {
                                tailWidth = Math.min(tailWidth, cloudWidth / 3)
                            }
                            return {
                                cx: _round(cx + type[0] * tailWidth + (type[0] + type[2]) * cloudWidth / 2),
                                cy: _round(cy + type[1] * tailHeight + (type[1] + type[3]) * cloudHeight / 2),
                                points: [_round(x), _round(y), _round(x += type[0] * (cloudWidth + tailWidth)), _round(y += type[1] * (cloudHeight + tailHeight)), _round(x += type[2] * cloudWidth), _round(y += type[3] * cloudHeight), _round(x += type[4] * cloudWidth), _round(y += type[5] * cloudHeight), _round(x += type[6] * (cloudWidth - tailWidth)), _round(y += type[7] * (cloudHeight - tailHeight))]
                            }
                        }({
                            x: x,
                            y: y,
                            cloudWidth: cloudWidth,
                            cloudHeight: cloudHeight,
                            tailLength: options.arrowLength,
                            type: this._correctCloudType(textCloudOptions.type, {
                                x: x,
                                y: y
                            }, {
                                width: cloudWidth,
                                height: cloudHeight
                            })
                        });
                        this._text.attr({
                            x: info.cx,
                            y: info.cy + this._textVerticalOffset
                        });
                        this._cloud.attr({
                            points: info.points
                        });
                        this._trackerElement && this._trackerElement.attr({
                            points: info.points
                        })
                    },
                    _measureText: function() {
                        const that = this;
                        let root;
                        let text;
                        let bBox;
                        let sampleText;
                        if (!that._textVerticalOffset) {
                            root = that._createRoot().append(that._owner);
                            sampleText = _getSampleText(that._translator, that._options.text);
                            text = that._renderer.text(sampleText, 0, 0).attr({
                                align: "center"
                            }).css((0, _utils.patchFontOptions)(that._options.text.font)).append(root);
                            bBox = text.getBBox();
                            root.remove();
                            that._textVerticalOffset = -bBox.y - bBox.height / 2;
                            that._textWidth = bBox.width;
                            that._textHeight = bBox.height;
                            that._textUnitWidth = that._textWidth / sampleText.length;
                            that._textFullWidth = that._textWidth + 2 * that._options.horizontalOffset;
                            that._textFullHeight = that._textHeight + 2 * that._options.verticalOffset
                        }
                    },
                    _render: function() {
                        this._measureText();
                        this._cloud = this._cloud || this._renderer.path([], "area").append(this._rootElement);
                        this._text = this._text || this._renderer.text().append(this._rootElement);
                        this._text.attr({
                            align: "center"
                        }).css((0, _utils.patchFontOptions)(this._options.text.font))
                    },
                    _clear: function() {
                        delete this._cloud;
                        delete this._text
                    },
                    getTooltipParameters: function() {
                        const position = this._getTextCloudOptions();
                        return {
                            x: position.x,
                            y: position.y,
                            value: this._currentValue,
                            color: this._options.color
                        }
                    },
                    _correctCloudType: type => type
                });
                exports.BaseTextCloudMarker = BaseTextCloudMarker;
                const BaseRangeBar = BaseIndicator.inherit({
                    _measureText: function() {
                        const that = this;
                        let root;
                        let text;
                        let bBox;
                        that._hasText = that._isTextVisible();
                        if (that._hasText && !that._textVerticalOffset) {
                            root = that._createRoot().append(that._owner);
                            text = that._renderer.text(_getSampleText(that._translator, that._options.text), 0, 0).attr({
                                class: "dxg-text",
                                align: "center"
                            }).css((0, _utils.patchFontOptions)(that._options.text.font)).append(root);
                            bBox = text.getBBox();
                            root.remove();
                            that._textVerticalOffset = -bBox.y - bBox.height / 2;
                            that._textWidth = bBox.width;
                            that._textHeight = bBox.height
                        }
                    },
                    _move: function() {
                        const that = this;
                        that._updateBarItemsPositions();
                        if (that._hasText) {
                            that._text.attr({
                                text: _formatValue(that._actualValue, that._options.text)
                            });
                            that._updateTextPosition();
                            that._updateLinePosition()
                        }
                    },
                    _updateBarItems: function() {
                        const that = this;
                        const options = that._options;
                        let spaceColor;
                        const translator = that._translator;
                        that._setBarSides();
                        that._startPosition = translator.translate(translator.getDomainStart());
                        that._endPosition = translator.translate(translator.getDomainEnd());
                        that._basePosition = translator.translate(options.baseValue);
                        that._space = that._getSpace();
                        const backgroundColor = options.backgroundColor || "none";
                        if ("none" !== backgroundColor && that._space > 0) {
                            spaceColor = options.containerBackgroundColor || "none"
                        } else {
                            that._space = 0;
                            spaceColor = "none"
                        }
                        that._backItem1.attr({
                            fill: backgroundColor
                        });
                        that._backItem2.attr({
                            fill: backgroundColor
                        });
                        that._spaceItem1.attr({
                            fill: spaceColor
                        });
                        that._spaceItem2.attr({
                            fill: spaceColor
                        })
                    },
                    _getSpace: function() {
                        return 0
                    },
                    _updateTextItems: function() {
                        const that = this;
                        if (that._hasText) {
                            that._line = that._line || that._renderer.path([], "line").attr({
                                class: "dxg-main-bar",
                                "stroke-linecap": "square"
                            }).append(that._rootElement);
                            that._text = that._text || that._renderer.text("", 0, 0).attr({
                                class: "dxg-text"
                            }).append(that._rootElement);
                            that._text.attr({
                                align: that._getTextAlign()
                            }).css(that._getFontOptions());
                            that._setTextItemsSides()
                        } else {
                            if (that._line) {
                                that._line.remove();
                                delete that._line
                            }
                            if (that._text) {
                                that._text.remove();
                                delete that._text
                            }
                        }
                    },
                    _isTextVisible: function() {
                        return false
                    },
                    _getTextAlign: function() {
                        return "center"
                    },
                    _getFontOptions: function() {
                        const options = this._options;
                        let font = options.text.font;
                        if (!font || !font.color) {
                            font = (0, _extend.extend)({}, font, {
                                color: options.color
                            })
                        }
                        return (0, _utils.patchFontOptions)(font)
                    },
                    _updateBarItemsPositions: function() {
                        const positions = this._getPositions();
                        this._backItem1.attr(this._buildItemSettings(positions.start, positions.back1));
                        this._backItem2.attr(this._buildItemSettings(positions.back2, positions.end));
                        this._spaceItem1.attr(this._buildItemSettings(positions.back1, positions.main1));
                        this._spaceItem2.attr(this._buildItemSettings(positions.main2, positions.back2));
                        this._mainItem.attr(this._buildItemSettings(positions.main1, positions.main2));
                        this._trackerElement && this._trackerElement.attr(this._buildItemSettings(positions.main1, positions.main2))
                    },
                    _render: function() {
                        const that = this;
                        that._measureText();
                        if (!that._backItem1) {
                            that._backItem1 = that._createBarItem();
                            that._backItem1.attr({
                                class: "dxg-back-bar"
                            })
                        }
                        if (!that._backItem2) {
                            that._backItem2 = that._createBarItem();
                            that._backItem2.attr({
                                class: "dxg-back-bar"
                            })
                        }
                        if (!that._spaceItem1) {
                            that._spaceItem1 = that._createBarItem();
                            that._spaceItem1.attr({
                                class: "dxg-space-bar"
                            })
                        }
                        if (!that._spaceItem2) {
                            that._spaceItem2 = that._createBarItem();
                            that._spaceItem2.attr({
                                class: "dxg-space-bar"
                            })
                        }
                        if (!that._mainItem) {
                            that._mainItem = that._createBarItem();
                            that._mainItem.attr({
                                class: "dxg-main-bar"
                            })
                        }
                        that._updateBarItems();
                        that._updateTextItems()
                    },
                    _clear: function() {
                        delete this._backItem1;
                        delete this._backItem2;
                        delete this._spaceItem1;
                        delete this._spaceItem2;
                        delete this._mainItem;
                        delete this._hasText;
                        delete this._line;
                        delete this._text
                    },
                    getTooltipParameters: function() {
                        const position = this._getTooltipPosition();
                        return {
                            x: position.x,
                            y: position.y,
                            value: this._currentValue,
                            color: this._options.color,
                            offset: 0
                        }
                    }
                });
                exports.BaseRangeBar = BaseRangeBar
            },
        84165:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/gauges/base_range_container.js ***!
              \********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _base_indicators = __webpack_require__( /*! ./base_indicators */ 3446);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                const _Number = Number;
                const _isArray = Array.isArray;
                const _isFinite = isFinite;
                const BaseRangeContainer = _base_indicators.BaseElement.inherit({
                    _init: function() {
                        this._root = this._renderer.g().attr({
                            class: "dxg-range-container"
                        }).linkOn(this._container, "range-container")
                    },
                    _dispose: function() {
                        this._root.linkOff()
                    },
                    clean: function() {
                        this._root.linkRemove().clear();
                        this._options = this.enabled = null;
                        return this
                    },
                    _getRanges: function() {
                        const options = this._options;
                        const translator = this._translator;
                        const totalStart = translator.getDomain()[0];
                        const totalEnd = translator.getDomain()[1];
                        const totalDelta = totalEnd - totalStart;
                        const isValidSegment = totalDelta >= 0 ? isValidSegmentAsc : isValidSegmentDesc;
                        const subtractSegment = totalDelta >= 0 ? subtractSegmentAsc : subtractSegmentDesc;
                        let list = [];
                        let ranges = [];
                        let backgroundRanges = [{
                            start: totalStart,
                            end: totalEnd
                        }];
                        const backgroundColor = (0, _utils.extractColor)(options.backgroundColor) || "none";
                        const width = options.width || {};
                        const startWidth = _Number(width > 0 ? width : width.start);
                        const endWidth = _Number(width > 0 ? width : width.end);
                        const deltaWidth = endWidth - startWidth;
                        if (void 0 !== options.ranges && !_isArray(options.ranges)) {
                            return null
                        }
                        if (!(startWidth >= 0 && endWidth >= 0 && startWidth + endWidth > 0)) {
                            return null
                        }
                        list = (_isArray(options.ranges) ? options.ranges : []).reduce((result, rangeOptions, i) => {
                            rangeOptions = rangeOptions || {};
                            const start = translator.adjust(rangeOptions.startValue);
                            const end = translator.adjust(rangeOptions.endValue);
                            if (_isFinite(start) && _isFinite(end) && isValidSegment(start, end, rangeOptions)) {
                                result.push({
                                    start: start,
                                    end: end,
                                    color: (0, _utils.extractColor)(rangeOptions.color),
                                    classIndex: i
                                })
                            }
                            return result
                        }, []);
                        const palette = this._themeManager.createPalette(options.palette, {
                            type: "indicatingSet",
                            extensionMode: options.paletteExtensionMode,
                            keepLastColorInEnd: true,
                            count: list.length
                        });
                        (0, _iterator.each)(list, (function(_, item) {
                            const paletteColor = palette.getNextColor();
                            item.color = (0, _type.isString)(item.color) && item.color || paletteColor || "none";
                            item.className = "dxg-range dxg-range-" + item.classIndex;
                            delete item.classIndex
                        }));
                        (0, _iterator.each)(list, (function(_, item) {
                            let i;
                            let ii;
                            let sub;
                            let subs;
                            let range;
                            const newRanges = [];
                            const newBackgroundRanges = [];
                            for (i = 0, ii = ranges.length; i < ii; ++i) {
                                range = ranges[i];
                                subs = subtractSegment(range.start, range.end, item.start, item.end);
                                (sub = subs[0]) && (sub.color = range.color) && (sub.className = range.className) && newRanges.push(sub);
                                (sub = subs[1]) && (sub.color = range.color) && (sub.className = range.className) && newRanges.push(sub)
                            }
                            newRanges.push(item);
                            ranges = newRanges;
                            for (i = 0, ii = backgroundRanges.length; i < ii; ++i) {
                                range = backgroundRanges[i];
                                subs = subtractSegment(range.start, range.end, item.start, item.end);
                                (sub = subs[0]) && newBackgroundRanges.push(sub);
                                (sub = subs[1]) && newBackgroundRanges.push(sub)
                            }
                            backgroundRanges = newBackgroundRanges
                        }));
                        (0, _iterator.each)(backgroundRanges, (function(_, range) {
                            range.color = backgroundColor;
                            range.className = "dxg-range dxg-background-range";
                            ranges.push(range)
                        }));
                        (0, _iterator.each)(ranges, (function(_, range) {
                            range.startWidth = (range.start - totalStart) / totalDelta * deltaWidth + startWidth;
                            range.endWidth = (range.end - totalStart) / totalDelta * deltaWidth + startWidth
                        }));
                        return ranges
                    },
                    render: function(options) {
                        const that = this;
                        that._options = options;
                        that._processOptions();
                        that._ranges = that._getRanges();
                        if (that._ranges) {
                            that.enabled = true;
                            that._root.linkAppend()
                        }
                        return that
                    },
                    resize: function(layout) {
                        const that = this;
                        that._root.clear();
                        if (that._isVisible(layout)) {
                            (0, _iterator.each)(that._ranges, (function(_, range) {
                                that._createRange(range, layout).attr({
                                    fill: range.color,
                                    class: range.className
                                }).append(that._root)
                            }))
                        }
                        return that
                    },
                    _processOptions: null,
                    _isVisible: null,
                    _createRange: null,
                    getColorForValue: function(value) {
                        let color = null;
                        (0, _iterator.each)(this._ranges, (function(_, range) {
                            if (range.start <= value && value <= range.end || range.start >= value && value >= range.end) {
                                color = range.color;
                                return false
                            }
                        }));
                        return color
                    }
                });

                function subtractSegmentAsc(segmentStart, segmentEnd, otherStart, otherEnd) {
                    let result;
                    if (otherStart > segmentStart && otherEnd < segmentEnd) {
                        result = [{
                            start: segmentStart,
                            end: otherStart
                        }, {
                            start: otherEnd,
                            end: segmentEnd
                        }]
                    } else if (otherStart >= segmentEnd || otherEnd <= segmentStart) {
                        result = [{
                            start: segmentStart,
                            end: segmentEnd
                        }]
                    } else if (otherStart <= segmentStart && otherEnd >= segmentEnd) {
                        result = []
                    } else if (otherStart > segmentStart) {
                        result = [{
                            start: segmentStart,
                            end: otherStart
                        }]
                    } else if (otherEnd < segmentEnd) {
                        result = [{
                            start: otherEnd,
                            end: segmentEnd
                        }]
                    }
                    return result
                }

                function subtractSegmentDesc(segmentStart, segmentEnd, otherStart, otherEnd) {
                    let result;
                    if (otherStart < segmentStart && otherEnd > segmentEnd) {
                        result = [{
                            start: segmentStart,
                            end: otherStart
                        }, {
                            start: otherEnd,
                            end: segmentEnd
                        }]
                    } else if (otherStart <= segmentEnd || otherEnd >= segmentStart) {
                        result = [{
                            start: segmentStart,
                            end: segmentEnd
                        }]
                    } else if (otherStart >= segmentStart && otherEnd <= segmentEnd) {
                        result = []
                    } else if (otherStart < segmentStart) {
                        result = [{
                            start: segmentStart,
                            end: otherStart
                        }]
                    } else if (otherEnd > segmentEnd) {
                        result = [{
                            start: otherEnd,
                            end: segmentEnd
                        }]
                    }
                    return result
                }

                function areEqualValues(start, end, _ref) {
                    let {
                        startValue: startValue,
                        endValue: endValue
                    } = _ref;
                    return endValue === startValue && startValue === start && end === start
                }

                function isValidSegmentAsc(start, end, options) {
                    return end - start > 0 || areEqualValues(start, end, options)
                }

                function isValidSegmentDesc(start, end, options) {
                    return start - end > 0 || areEqualValues(start, end, options)
                }
                var _default = BaseRangeContainer;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        31500:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/gauges/circular_gauge.js ***!
              \**************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _object = __webpack_require__( /*! ../../core/utils/object */ 48013);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _base_gauge = __webpack_require__( /*! ./base_gauge */ 18029);
                var _common = __webpack_require__( /*! ./common */ 88917);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _center_template = __webpack_require__( /*! ../core/center_template */ 56672);
                var circularIndicators = function(obj, nodeInterop) {
                    if (!nodeInterop && obj && obj.__esModule) {
                        return obj
                    }
                    if (null === obj || "object" !== typeof obj && "function" !== typeof obj) {
                        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 ("default" !== key && 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
                }(__webpack_require__( /*! ./circular_indicators */ 16030));
                var _circular_range_container = _interopRequireDefault(__webpack_require__( /*! ./circular_range_container */ 27172));

                function _getRequireWildcardCache(nodeInterop) {
                    if ("function" !== typeof WeakMap) {
                        return null
                    }
                    var cacheBabelInterop = new WeakMap;
                    var cacheNodeInterop = new WeakMap;
                    return (_getRequireWildcardCache = function(nodeInterop) {
                        return nodeInterop ? cacheNodeInterop : cacheBabelInterop
                    })(nodeInterop)
                }

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const _isFinite = isFinite;
                const _normalizeAngle = _utils.normalizeAngle;
                const _getCosAndSin = _utils.getCosAndSin;
                const _abs = Math.abs;
                const _max = Math.max;
                const _min = Math.min;
                const _round = Math.round;
                const _each = _iterator.each;
                const PI = Math.PI;
                const dxCircularGauge = _common.dxGauge.inherit({
                    _rootClass: "dxg-circular-gauge",
                    _factoryMethods: {
                        rangeContainer: "createCircularRangeContainer",
                        indicator: "createCircularIndicator"
                    },
                    _gridSpacingFactor: 17,
                    _scaleTypes: {
                        type: "polarAxes",
                        drawingType: "circular"
                    },
                    _getThemeManagerOptions() {
                        const options = this.callBase.apply(this, arguments);
                        options.subTheme = "_circular";
                        return options
                    },
                    _updateScaleTickIndent: function(scaleOptions) {
                        const indentFromTick = scaleOptions.label.indentFromTick;
                        const length = scaleOptions.tick.visible ? scaleOptions.tick.length : 0;
                        const textParams = this._scale.measureLabels((0, _extend.extend)({}, this._canvas));
                        const scaleOrientation = scaleOptions.orientation;
                        const tickCorrection = length;
                        let indentFromAxis = indentFromTick;
                        if (indentFromTick >= 0) {
                            if ("outside" === scaleOrientation) {
                                indentFromAxis += tickCorrection
                            } else if ("center" === scaleOrientation) {
                                indentFromAxis += tickCorrection / 2
                            }
                        } else {
                            const labelCorrection = _max(textParams.width, textParams.height);
                            indentFromAxis -= labelCorrection;
                            if ("inside" === scaleOrientation) {
                                indentFromAxis -= tickCorrection
                            } else if ("center" === scaleOrientation) {
                                indentFromAxis -= tickCorrection / 2
                            }
                        }
                        scaleOptions.label.indentFromAxis = indentFromAxis;
                        this._scale.updateOptions(scaleOptions)
                    },
                    _setupCodomain: function() {
                        const geometry = this.option("geometry") || {};
                        let startAngle = geometry.startAngle;
                        let endAngle = geometry.endAngle;
                        let sides;
                        startAngle = _isFinite(startAngle) ? _normalizeAngle(startAngle) : 225;
                        endAngle = _isFinite(endAngle) ? _normalizeAngle(endAngle) : -45;
                        if (_abs(startAngle - endAngle) < 1) {
                            endAngle -= 360;
                            sides = {
                                left: -1,
                                up: -1,
                                right: 1,
                                down: 1
                            }
                        } else {
                            startAngle < endAngle && (endAngle -= 360);
                            sides = function(startAngle, endAngle) {
                                const startCosSin = _getCosAndSin(startAngle);
                                const endCosSin = _getCosAndSin(endAngle);
                                const startCos = startCosSin.cos;
                                const startSin = startCosSin.sin;
                                const endCos = endCosSin.cos;
                                const endSin = endCosSin.sin;
                                return {
                                    left: startSin <= 0 && endSin >= 0 || startSin <= 0 && endSin <= 0 && startCos <= endCos || startSin >= 0 && endSin >= 0 && startCos >= endCos ? -1 : _min(startCos, endCos, 0),
                                    right: startSin >= 0 && endSin <= 0 || startSin >= 0 && endSin >= 0 && startCos >= endCos || startSin <= 0 && endSin <= 0 && startCos <= endCos ? 1 : _max(startCos, endCos, 0),
                                    up: startCos <= 0 && endCos >= 0 || startCos <= 0 && endCos <= 0 && startSin >= endSin || startCos >= 0 && endCos >= 0 && startSin <= endSin ? -1 : -_max(startSin, endSin, 0),
                                    down: startCos >= 0 && endCos <= 0 || startCos >= 0 && endCos >= 0 && startSin <= endSin || startCos <= 0 && endCos <= 0 && startSin >= endSin ? 1 : -_min(startSin, endSin, 0)
                                }
                            }(startAngle, endAngle)
                        }
                        this._area = {
                            x: 0,
                            y: 0,
                            radius: 100,
                            startCoord: startAngle,
                            endCoord: endAngle,
                            sides: sides
                        };
                        this._translator.setCodomain(startAngle, endAngle)
                    },
                    _getCenter: function() {
                        return this._getElementLayout()
                    },
                    _shiftScale: function(layout) {
                        const scale = this._scale;
                        const canvas = scale.getCanvas();
                        canvas.width = canvas.height = 2 * layout.radius;
                        scale.draw(canvas);
                        const centerCoords = scale.getCenter();
                        scale.shift({
                            right: layout.x - centerCoords.x,
                            bottom: layout.y - centerCoords.y
                        })
                    },
                    _getScaleLayoutValue: function() {
                        return this._area.radius
                    },
                    _getTicksOrientation: function(scaleOptions) {
                        return scaleOptions.orientation
                    },
                    _getTicksCoefficients: function(options) {
                        const coefs = {
                            inner: 0,
                            outer: 1
                        };
                        if ("inside" === options.orientation) {
                            coefs.inner = 1;
                            coefs.outer = 0
                        } else if ("center" === options.orientation) {
                            coefs.inner = coefs.outer = .5
                        }
                        return coefs
                    },
                    _correctScaleIndents: function(result, indentFromTick, textParams) {
                        if (indentFromTick >= 0) {
                            result.horizontalOffset = indentFromTick + textParams.width;
                            result.verticalOffset = indentFromTick + textParams.height
                        } else {
                            result.horizontalOffset = result.verticalOffset = 0;
                            result.min -= -indentFromTick + _max(textParams.width, textParams.height)
                        }
                        result.inverseHorizontalOffset = textParams.width / 2;
                        result.inverseVerticalOffset = textParams.height / 2
                    },
                    _measureMainElements: function(elements, scaleMeasurement) {
                        const radius = this._area.radius;
                        let maxRadius = 0;
                        let minRadius = 1 / 0;
                        let maxHorizontalOffset = 0;
                        let maxVerticalOffset = 0;
                        let maxInverseHorizontalOffset = 0;
                        let maxInverseVerticalOffset = 0;
                        const scale = this._scale;
                        _each(elements.concat(scale), (function(_, element) {
                            const bounds = element.measure ? element.measure({
                                radius: radius - element.getOffset()
                            }) : scaleMeasurement;
                            bounds.min > 0 && (minRadius = _min(minRadius, bounds.min));
                            bounds.max > 0 && (maxRadius = _max(maxRadius, bounds.max));
                            bounds.horizontalOffset > 0 && (maxHorizontalOffset = _max(maxHorizontalOffset, bounds.max + bounds.horizontalOffset));
                            bounds.verticalOffset > 0 && (maxVerticalOffset = _max(maxVerticalOffset, bounds.max + bounds.verticalOffset));
                            bounds.inverseHorizontalOffset > 0 && (maxInverseHorizontalOffset = _max(maxInverseHorizontalOffset, bounds.inverseHorizontalOffset));
                            bounds.inverseVerticalOffset > 0 && (maxInverseVerticalOffset = _max(maxInverseVerticalOffset, bounds.inverseVerticalOffset))
                        }));
                        maxHorizontalOffset = _max(maxHorizontalOffset - maxRadius, 0);
                        maxVerticalOffset = _max(maxVerticalOffset - maxRadius, 0);
                        return {
                            minRadius: minRadius,
                            maxRadius: maxRadius,
                            horizontalMargin: maxHorizontalOffset,
                            verticalMargin: maxVerticalOffset,
                            inverseHorizontalMargin: maxInverseHorizontalOffset,
                            inverseVerticalMargin: maxInverseVerticalOffset
                        }
                    },
                    _applyMainLayout: function(elements, scaleMeasurement) {
                        const measurements = this._measureMainElements(elements, scaleMeasurement);
                        const area = this._area;
                        const sides = area.sides;
                        const margins = {
                            left: (sides.left < -.1 ? measurements.horizontalMargin : measurements.inverseHorizontalMargin) || 0,
                            right: (sides.right > .1 ? measurements.horizontalMargin : measurements.inverseHorizontalMargin) || 0,
                            top: (sides.up < -.1 ? measurements.verticalMargin : measurements.inverseVerticalMargin) || 0,
                            bottom: (sides.down > .1 ? measurements.verticalMargin : measurements.inverseVerticalMargin) || 0
                        };
                        const rect = function(srcRect, aspectRatio, margins) {
                            const rect = (0, _extend.extend)({}, srcRect);
                            let selfAspectRatio;
                            let width = 0;
                            let height = 0;
                            margins = margins || {};
                            if (aspectRatio > 0) {
                                rect.left += margins.left || 0;
                                rect.right -= margins.right || 0;
                                rect.top += margins.top || 0;
                                rect.bottom -= margins.bottom || 0;
                                if (getWidth(rect) > 0 && getHeight(rect) > 0) {
                                    selfAspectRatio = getHeight(rect) / getWidth(rect);
                                    if (selfAspectRatio > 1) {
                                        aspectRatio < selfAspectRatio ? width = getWidth(rect) : height = getHeight(rect)
                                    } else {
                                        aspectRatio > selfAspectRatio ? height = getHeight(rect) : width = getWidth(rect)
                                    }
                                    width > 0 || (width = height / aspectRatio);
                                    height > 0 || (height = width * aspectRatio);
                                    width = (getWidth(rect) - width) / 2;
                                    height = (getHeight(rect) - height) / 2;
                                    rect.left += width;
                                    rect.right -= width;
                                    rect.top += height;
                                    rect.bottom -= height
                                } else {
                                    rect.left = rect.right = (rect.left + rect.right) / 2;
                                    rect.top = rect.bottom = (rect.top + rect.bottom) / 2
                                }
                            }
                            return rect
                        }(this._innerRect, (sides.down - sides.up) / (sides.right - sides.left), margins);
                        let radius = _min(getWidth(rect) / (sides.right - sides.left), getHeight(rect) / (sides.down - sides.up));
                        radius = radius - measurements.maxRadius + area.radius;
                        const x = rect.left - getWidth(rect) * sides.left / (sides.right - sides.left);
                        const y = rect.top - getHeight(rect) * sides.up / (sides.down - sides.up);
                        area.x = _round(x);
                        area.y = _round(y);
                        area.radius = radius;
                        rect.left -= margins.left;
                        rect.right += margins.right;
                        rect.top -= margins.top;
                        rect.bottom += margins.bottom;
                        this._innerRect = rect
                    },
                    _getElementLayout: function() {
                        let offset = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0;
                        return {
                            x: this._area.x,
                            y: this._area.y,
                            radius: _round(this._area.radius - offset)
                        }
                    },
                    _getApproximateScreenRange: function() {
                        const area = this._area;
                        let r = _min(this._canvas.width / (area.sides.right - area.sides.left), this._canvas.height / (area.sides.down - area.sides.up));
                        r > area.totalRadius && (r = area.totalRadius);
                        r *= .8;
                        return -this._translator.getCodomainRange() * r * PI / 180
                    },
                    _getDefaultSize: function() {
                        return {
                            width: 300,
                            height: 300
                        }
                    },
                    _factory: (0, _object.clone)(_base_gauge.BaseGauge.prototype._factory)
                });

                function getWidth(rect) {
                    return rect.right - rect.left
                }

                function getHeight(rect) {
                    return rect.bottom - rect.top
                }
                const indicators = dxCircularGauge.prototype._factory.indicators = {};
                dxCircularGauge.prototype._factory.createIndicator = (0, _common.createIndicatorCreator)(indicators);
                indicators._default = circularIndicators._default;
                indicators.rectangleneedle = circularIndicators.rectangleneedle;
                indicators.triangleneedle = circularIndicators.triangleneedle;
                indicators.twocolorneedle = circularIndicators.twocolorneedle;
                indicators.trianglemarker = circularIndicators.trianglemarker;
                indicators.textcloud = circularIndicators.textcloud;
                indicators.rangebar = circularIndicators.rangebar;
                dxCircularGauge.prototype._factory.RangeContainer = _circular_range_container.default;
                (0, _component_registrator.default)("dxCircularGauge", dxCircularGauge);
                dxCircularGauge.addPlugin(_center_template.plugins.gauge);
                var _default = dxCircularGauge;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        16030:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/gauges/circular_indicators.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.twocolorneedle = exports.triangleneedle = exports.trianglemarker = exports.textcloud = exports.rectangleneedle = exports.rangebar = exports._default = void 0;
                var _base_indicators = __webpack_require__( /*! ./base_indicators */ 3446);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                const _Number = Number;
                const _getCosAndSin = _utils.getCosAndSin;
                const _convertAngleToRendererSpace = _utils.convertAngleToRendererSpace;

                function correctRadius(layout, size) {
                    if (layout && layout.radius - size <= 0) {
                        layout.radius = size + 1
                    }
                    return layout
                }
                const SimpleIndicator = _base_indicators.BaseIndicator.inherit({
                    _move: function() {
                        const options = this._options;
                        const angle = _convertAngleToRendererSpace(this._actualPosition);
                        this._rootElement.rotate(angle, options.x, options.y);
                        this._trackerElement && this._trackerElement.rotate(angle, options.x, options.y)
                    },
                    _isEnabled: function() {
                        return this._options.width > 0
                    },
                    _isVisible: function(layout) {
                        return layout.radius - _Number(this._options.indentFromCenter) > 0
                    },
                    _getTrackerSettings: function() {
                        const options = this._options;
                        const radius = this._getRadius();
                        const indentFromCenter = this._getIndentFromCenter();
                        const x = options.x;
                        const y = options.y - (radius + indentFromCenter) / 2;
                        let width = options.width / 2;
                        let length = (radius - indentFromCenter) / 2;
                        width > 10 || (width = 10);
                        length > 10 || (length = 10);
                        return {
                            points: [x - width, y - length, x - width, y + length, x + width, y + length, x + width, y - length]
                        }
                    },
                    _render: function() {
                        this._renderPointer()
                    },
                    _clearPointer: function() {
                        delete this._element
                    },
                    _clear: function() {
                        this._clearPointer()
                    },
                    _getIndentFromCenter: function(radius) {
                        return Number(this._options.indentFromCenter) || 0
                    },
                    _getRadius: function() {
                        return 0
                    },
                    measure: function(layout) {
                        const result = {
                            max: layout.radius
                        };
                        if (this._options.indentFromCenter < 0) {
                            result.inverseHorizontalOffset = result.inverseVerticalOffset = -_Number(this._options.indentFromCenter)
                        }
                        return result
                    },
                    getTooltipParameters: function() {
                        const options = this._options;
                        const cosSin = _getCosAndSin(this._actualPosition);
                        const r = (this._getRadius() + this._getIndentFromCenter()) / 2;
                        return {
                            x: options.x + cosSin.cos * r,
                            y: options.y - cosSin.sin * r,
                            value: this._currentValue,
                            color: options.color,
                            offset: options.width / 2
                        }
                    }
                });
                const NeedleIndicator = SimpleIndicator.inherit({
                    _isVisible: function(layout) {
                        const indentFromCenter = this._adjustOffset(Number(this._options.indentFromCenter), layout.radius);
                        const offset = this._adjustOffset(Number(this._options.offset), layout.radius);
                        return layout.radius - indentFromCenter - offset > 0
                    },
                    getOffset: function() {
                        return 0
                    },
                    _adjustOffset: function(value, radius) {
                        const minRadius = Number(this._options.beginAdaptingAtRadius);
                        const diff = radius / minRadius;
                        if (diff < 1) {
                            value = Math.floor(value * diff)
                        }
                        return value || 0
                    },
                    _getIndentFromCenter: function(radius) {
                        return this._adjustOffset(Number(this._options.indentFromCenter), this._options.radius)
                    },
                    _getRadius: function() {
                        const options = this._options;
                        return options.radius - this._adjustOffset(Number(options.offset), options.radius)
                    },
                    _renderSpindle: function() {
                        const that = this;
                        const options = that._options;
                        const radius = options.radius;
                        const spindleSize = 2 * this._adjustOffset(_Number(options.spindleSize) / 2, radius);
                        let gapSize = 2 * this._adjustOffset(_Number(options.spindleGapSize) / 2, radius) || 0;
                        if (gapSize > 0) {
                            gapSize = gapSize <= spindleSize ? gapSize : spindleSize
                        }
                        if (spindleSize > 0) {
                            that._spindleOuter = that._spindleOuter || that._renderer.circle().append(that._rootElement);
                            that._spindleInner = that._spindleInner || that._renderer.circle().append(that._rootElement);
                            that._spindleOuter.attr({
                                class: "dxg-spindle-border",
                                cx: options.x,
                                cy: options.y,
                                r: spindleSize / 2
                            });
                            that._spindleInner.attr({
                                class: "dxg-spindle-hole",
                                cx: options.x,
                                cy: options.y,
                                r: gapSize / 2,
                                fill: options.containerBackgroundColor
                            })
                        }
                    },
                    _render: function() {
                        this.callBase();
                        this._renderSpindle()
                    },
                    _clear: function() {
                        this.callBase();
                        delete this._spindleOuter;
                        delete this._spindleInner
                    }
                });
                const rectangleNeedle = NeedleIndicator.inherit({
                    _renderPointer: function() {
                        const options = this._options;
                        const y2 = options.y - this._getRadius();
                        const y1 = options.y - this._getIndentFromCenter();
                        const x1 = options.x - options.width / 2;
                        const x2 = x1 + _Number(options.width);
                        this._element = this._element || this._renderer.path([], "area").append(this._rootElement);
                        this._element.attr({
                            points: [x1, y1, x1, y2, x2, y2, x2, y1]
                        })
                    }
                });
                exports.rectangleneedle = exports._default = rectangleNeedle;
                const triangleNeedle = NeedleIndicator.inherit({
                    _renderPointer: function() {
                        const options = this._options;
                        const y2 = options.y - this._getRadius();
                        const y1 = options.y - this._getIndentFromCenter();
                        const x1 = options.x - options.width / 2;
                        const x2 = options.x + options.width / 2;
                        this._element = this._element || this._renderer.path([], "area").append(this._rootElement);
                        this._element.attr({
                            points: [x1, y1, options.x, y2, x2, y1]
                        })
                    }
                });
                exports.triangleneedle = triangleNeedle;
                const twoColorNeedle = NeedleIndicator.inherit({
                    _renderPointer: function() {
                        const options = this._options;
                        const x1 = options.x - options.width / 2;
                        const x2 = options.x + options.width / 2;
                        const y4 = options.y - this._getRadius();
                        const y1 = options.y - this._getIndentFromCenter();
                        const fraction = _Number(options.secondFraction) || 0;
                        let y2;
                        let y3;
                        if (fraction >= 1) {
                            y2 = y3 = y1
                        } else if (fraction <= 0) {
                            y2 = y3 = y4
                        } else {
                            y3 = y4 + (y1 - y4) * fraction;
                            y2 = y3 + _Number(options.space)
                        }
                        this._firstElement = this._firstElement || this._renderer.path([], "area").append(this._rootElement);
                        this._spaceElement = this._spaceElement || this._renderer.path([], "area").append(this._rootElement);
                        this._secondElement = this._secondElement || this._renderer.path([], "area").append(this._rootElement);
                        this._firstElement.attr({
                            points: [x1, y1, x1, y2, x2, y2, x2, y1]
                        });
                        this._spaceElement.attr({
                            points: [x1, y2, x1, y3, x2, y3, x2, y2],
                            class: "dxg-hole",
                            fill: options.containerBackgroundColor
                        });
                        this._secondElement.attr({
                            points: [x1, y3, x1, y4, x2, y4, x2, y3],
                            class: "dxg-part",
                            fill: options.secondColor
                        })
                    },
                    _clearPointer: function() {
                        delete this._firstElement;
                        delete this._secondElement;
                        delete this._spaceElement
                    }
                });
                exports.twocolorneedle = twoColorNeedle;
                const triangleMarker = SimpleIndicator.inherit({
                    _isEnabled: function() {
                        return this._options.length > 0 && this._options.width > 0
                    },
                    _isVisible: layout => true,
                    resize(layout) {
                        return this.callBase(correctRadius(layout, 0))
                    },
                    _render: function() {
                        const options = this._options;
                        const x = options.x;
                        const y1 = options.y - options.radius;
                        const dx = options.width / 2 || 0;
                        const y2 = y1 - _Number(options.length);
                        this._element = this._element || this._renderer.path([], "area").append(this._rootElement);
                        const settings = {
                            points: [x, y1, x - dx, y2, x + dx, y2],
                            stroke: "none",
                            "stroke-width": 0,
                            "stroke-linecap": "square"
                        };
                        if (options.space > 0) {
                            settings["stroke-width"] = Math.min(options.space, options.width / 4) || 0;
                            settings.stroke = settings["stroke-width"] > 0 ? options.containerBackgroundColor || "none" : "none"
                        }
                        this._element.attr(settings).sharp()
                    },
                    _clear: function() {
                        delete this._element
                    },
                    _getTrackerSettings: function() {
                        const options = this._options;
                        const x = options.x;
                        const y = options.y - options.radius - options.length / 2;
                        let width = options.width / 2;
                        let length = options.length / 2;
                        width > 10 || (width = 10);
                        length > 10 || (length = 10);
                        return {
                            points: [x - width, y - length, x - width, y + length, x + width, y + length, x + width, y - length]
                        }
                    },
                    measure: function(layout) {
                        return {
                            min: layout.radius,
                            max: layout.radius + _Number(this._options.length)
                        }
                    },
                    getTooltipParameters: function() {
                        const options = this._options;
                        const cosSin = _getCosAndSin(this._actualPosition);
                        const r = options.radius + options.length / 2;
                        const parameters = this.callBase();
                        parameters.x = options.x + cosSin.cos * r;
                        parameters.y = options.y - cosSin.sin * r;
                        parameters.offset = options.length / 2;
                        return parameters
                    }
                });
                exports.trianglemarker = triangleMarker;
                const textCloud = _base_indicators.BaseTextCloudMarker.inherit({
                    _isEnabled: function() {
                        return true
                    },
                    _isVisible: layout => true,
                    resize(layout) {
                        return this.callBase(correctRadius(layout, 0))
                    },
                    _getTextCloudOptions: function() {
                        const cosSin = _getCosAndSin(this._actualPosition);
                        const nAngle = (0, _utils.normalizeAngle)(this._actualPosition);
                        return {
                            x: this._options.x + cosSin.cos * this._options.radius,
                            y: this._options.y - cosSin.sin * this._options.radius,
                            type: nAngle > 270 ? "left-top" : nAngle > 180 ? "top-right" : nAngle > 90 ? "right-bottom" : "bottom-left"
                        }
                    },
                    measure: function(layout) {
                        const arrowLength = _Number(this._options.arrowLength) || 0;
                        this._measureText();
                        const verticalOffset = this._textFullHeight + arrowLength;
                        const horizontalOffset = this._textFullWidth + arrowLength;
                        return {
                            min: layout.radius,
                            max: layout.radius,
                            horizontalOffset: horizontalOffset,
                            verticalOffset: verticalOffset,
                            inverseHorizontalOffset: horizontalOffset,
                            inverseVerticalOffset: verticalOffset
                        }
                    }
                });
                exports.textcloud = textCloud;
                const rangeBar = _base_indicators.BaseRangeBar.inherit({
                    _isEnabled: function() {
                        return this._options.size > 0
                    },
                    _isVisible: layout => true,
                    resize(layout) {
                        return this.callBase(correctRadius(layout, _Number(this._options.size)))
                    },
                    _createBarItem: function() {
                        return this._renderer.arc().attr({
                            "stroke-linejoin": "round"
                        }).append(this._rootElement)
                    },
                    _createTracker: function() {
                        return this._renderer.arc().attr({
                            "stroke-linejoin": "round"
                        })
                    },
                    _setBarSides: function() {
                        this._maxSide = this._options.radius;
                        this._minSide = this._maxSide - _Number(this._options.size)
                    },
                    _getSpace: function() {
                        const options = this._options;
                        return options.space > 0 ? 180 * options.space / options.radius / Math.PI : 0
                    },
                    _isTextVisible: function() {
                        const options = this._options.text || {};
                        return options.indent > 0
                    },
                    _setTextItemsSides: function() {
                        const options = this._options;
                        const indent = _Number(options.text.indent);
                        this._lineFrom = options.y - options.radius;
                        this._lineTo = this._lineFrom - indent;
                        this._textRadius = options.radius + indent
                    },
                    _getPositions: function() {
                        const basePosition = this._basePosition;
                        const actualPosition = this._actualPosition;
                        let mainPosition1;
                        let mainPosition2;
                        if (basePosition >= actualPosition) {
                            mainPosition1 = basePosition;
                            mainPosition2 = actualPosition
                        } else {
                            mainPosition1 = actualPosition;
                            mainPosition2 = basePosition
                        }
                        return {
                            start: this._startPosition,
                            end: this._endPosition,
                            main1: mainPosition1,
                            main2: mainPosition2,
                            back1: Math.min(mainPosition1 + this._space, this._startPosition),
                            back2: Math.max(mainPosition2 - this._space, this._endPosition)
                        }
                    },
                    _buildItemSettings: function(from, to) {
                        return {
                            x: this._options.x,
                            y: this._options.y,
                            innerRadius: this._minSide,
                            outerRadius: this._maxSide,
                            startAngle: to,
                            endAngle: from
                        }
                    },
                    _updateTextPosition: function() {
                        const cosSin = _getCosAndSin(this._actualPosition);
                        let x = this._options.x + this._textRadius * cosSin.cos;
                        let y = this._options.y - this._textRadius * cosSin.sin;
                        x += cosSin.cos * this._textWidth * .6;
                        y -= cosSin.sin * this._textHeight * .6;
                        this._text.attr({
                            x: x,
                            y: y + this._textVerticalOffset
                        })
                    },
                    _updateLinePosition: function() {
                        const x = this._options.x;
                        let x1;
                        let x2;
                        if (this._basePosition > this._actualPosition) {
                            x1 = x - 2;
                            x2 = x
                        } else if (this._basePosition < this._actualPosition) {
                            x1 = x;
                            x2 = x + 2
                        } else {
                            x1 = x - 1;
                            x2 = x + 1
                        }
                        this._line.attr({
                            points: [x1, this._lineFrom, x1, this._lineTo, x2, this._lineTo, x2, this._lineFrom]
                        }).rotate(_convertAngleToRendererSpace(this._actualPosition), x, this._options.y).sharp()
                    },
                    _getTooltipPosition: function() {
                        const cosSin = _getCosAndSin((this._basePosition + this._actualPosition) / 2);
                        const r = (this._minSide + this._maxSide) / 2;
                        return {
                            x: this._options.x + cosSin.cos * r,
                            y: this._options.y - cosSin.sin * r
                        }
                    },
                    measure: function(layout) {
                        const that = this;
                        const result = {
                            min: layout.radius - _Number(that._options.size),
                            max: layout.radius
                        };
                        that._measureText();
                        if (that._hasText) {
                            result.max += _Number(that._options.text.indent);
                            result.horizontalOffset = that._textWidth;
                            result.verticalOffset = that._textHeight
                        }
                        return result
                    }
                });
                exports.rangebar = rangeBar
            },
        27172:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/gauges/circular_range_container.js ***!
              \************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _base_range_container = (obj = __webpack_require__( /*! ./base_range_container */ 84165), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                const _Number = Number;
                const _max = Math.max;
                const CircularRangeContainer = _base_range_container.default.inherit({
                    _processOptions: function() {
                        const that = this;
                        that._inner = that._outer = 0;
                        switch ((0, _utils.normalizeEnum)(that._options.orientation)) {
                            case "inside":
                                that._inner = 1;
                                break;
                            case "center":
                                that._inner = that._outer = .5;
                                break;
                            default:
                                that._outer = 1
                        }
                    },
                    _isVisible: function(layout) {
                        let width = this._options.width;
                        width = _Number(width) || _max(_Number(width.start), _Number(width.end));
                        return layout.radius - this._inner * width > 0
                    },
                    _createRange: function(range, layout) {
                        const width = (range.startWidth + range.endWidth) / 2;
                        return this._renderer.arc(layout.x, layout.y, layout.radius - this._inner * width, layout.radius + this._outer * width, this._translator.translate(range.end), this._translator.translate(range.start)).attr({
                            "stroke-linejoin": "round"
                        })
                    },
                    measure: function(layout) {
                        let width = this._options.width;
                        width = _Number(width) || _max(_Number(width.start), _Number(width.end));
                        return {
                            min: layout.radius - this._inner * width,
                            max: layout.radius + this._outer * width
                        }
                    }
                });
                var _default = CircularRangeContainer;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        88917:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/gauges/common.js ***!
              \******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.createIndicatorCreator = function(indicators) {
                    return function(parameters, type, _strict) {
                        const indicatorType = indicators[(0, _utils.normalizeEnum)(type)] || !_strict && indicators._default;
                        return indicatorType ? new indicatorType(parameters) : null
                    }
                };
                exports.dxGauge = void 0;
                var _base_gauge = __webpack_require__( /*! ./base_gauge */ 18029);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _base_axis = __webpack_require__( /*! ../axes/base_axis */ 41278);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                const _isArray = Array.isArray;
                const _isFinite = isFinite;
                const _Number = Number;
                const _min = Math.min;
                const _max = Math.max;
                const _extend = _extend2.extend;
                const DEFAULT_NUMBER_MULTIPLIERS = [1, 2, 5];

                function processValue(value, fallbackValue) {
                    if (null === value) {
                        return value
                    }
                    return _isFinite(value) ? _Number(value) : fallbackValue
                }

                function parseArrayOfNumbers(arg) {
                    return _isArray(arg) ? arg : (0, _type.isNumeric)(arg) ? [arg] : null
                }
                const dxGauge = _base_gauge.BaseGauge.inherit({
                    _initCore: function() {
                        const that = this;
                        const renderer = that._renderer;
                        that._setupValue(that.option("value"));
                        that.__subvalues = parseArrayOfNumbers(that.option("subvalues"));
                        that._setupSubvalues(that.__subvalues);
                        selectMode(that);
                        that.callBase.apply(that, arguments);
                        that._rangeContainer = new that._factory.RangeContainer({
                            renderer: renderer,
                            container: renderer.root,
                            translator: that._translator,
                            themeManager: that._themeManager
                        });
                        that._initScale();
                        that._subvalueIndicatorContainer = that._renderer.g().attr({
                            class: "dxg-subvalue-indicators"
                        }).linkOn(that._renderer.root, "valueIndicator").enableLinks()
                    },
                    _fontFields: ["scale.label.font", "valueIndicators.rangebar.text.font", "valueIndicators.textcloud.text.font", "indicator.text.font"],
                    _initScale: function() {
                        this._scaleGroup = this._renderer.g().attr({
                            class: "dxg-scale"
                        }).linkOn(this._renderer.root, "scale");
                        this._labelsAxesGroup = this._renderer.g().attr({
                            class: "dxg-scale-elements"
                        }).linkOn(this._renderer.root, "scale-elements");
                        this._scale = new _base_axis.Axis({
                            incidentOccurred: this._incidentOccurred,
                            renderer: this._renderer,
                            axesContainerGroup: this._scaleGroup,
                            labelsAxesGroup: this._labelsAxesGroup,
                            axisType: this._scaleTypes.type,
                            drawingType: this._scaleTypes.drawingType,
                            widgetClass: "dxg",
                            getTemplate() {}
                        })
                    },
                    _disposeCore: function() {
                        const that = this;
                        that.callBase.apply(that, arguments);
                        that._scale.dispose();
                        that._scaleGroup.linkOff();
                        that._labelsAxesGroup.linkOff();
                        that._rangeContainer.dispose();
                        that._disposeValueIndicators();
                        that._subvalueIndicatorContainer.linkOff();
                        that._scale = that._scaleGroup = that._labelsAxesGroup = that._rangeContainer = null
                    },
                    _disposeValueIndicators: function() {
                        this._valueIndicator && this._valueIndicator.dispose();
                        this._subvalueIndicatorsSet && this._subvalueIndicatorsSet.dispose();
                        this._valueIndicator = this._subvalueIndicatorsSet = null
                    },
                    _setupDomainCore: function() {
                        const scaleOption = this.option("scale") || {};
                        let startValue = this.option("startValue");
                        let endValue = this.option("endValue");
                        startValue = (0, _type.isNumeric)(startValue) ? _Number(startValue) : (0, _type.isNumeric)(scaleOption.startValue) ? _Number(scaleOption.startValue) : 0;
                        endValue = (0, _type.isNumeric)(endValue) ? _Number(endValue) : (0, _type.isNumeric)(scaleOption.endValue) ? _Number(scaleOption.endValue) : 100;
                        this._baseValue = startValue < endValue ? startValue : endValue;
                        this._translator.setDomain(startValue, endValue)
                    },
                    _cleanContent: function() {
                        this._rangeContainer.clean();
                        this._cleanValueIndicators()
                    },
                    _measureScale: function(scaleOptions) {
                        const majorTick = scaleOptions.tick;
                        const majorTickEnabled = majorTick.visible && majorTick.length > 0 && majorTick.width > 0;
                        const minorTick = scaleOptions.minorTick;
                        const minorTickEnabled = minorTick.visible && minorTick.length > 0 && minorTick.width > 0;
                        const label = scaleOptions.label;
                        const indentFromTick = Number(label.indentFromTick);
                        if (!majorTickEnabled && !minorTickEnabled && !label.visible) {
                            return {}
                        }
                        const textParams = this._scale.measureLabels((0, _extend2.extend)({}, this._canvas));
                        const layoutValue = this._getScaleLayoutValue();
                        const result = {
                            min: layoutValue,
                            max: layoutValue
                        };
                        const coefs = this._getTicksCoefficients(scaleOptions);
                        const innerCoef = coefs.inner;
                        const outerCoef = coefs.outer;
                        if (majorTickEnabled) {
                            result.min = _min(result.min, layoutValue - innerCoef * majorTick.length);
                            result.max = _max(result.max, layoutValue + outerCoef * majorTick.length)
                        }
                        if (minorTickEnabled) {
                            result.min = _min(result.min, layoutValue - innerCoef * minorTick.length);
                            result.max = _max(result.max, layoutValue + outerCoef * minorTick.length)
                        }
                        label.visible && this._correctScaleIndents(result, indentFromTick, textParams);
                        return result
                    },
                    _renderContent: function() {
                        const that = this;
                        const scaleOptions = that._prepareScaleSettings();
                        that._rangeContainer.render(_extend(that._getOption("rangeContainer"), {
                            vertical: that._area.vertical
                        }));
                        that._renderScale(scaleOptions);
                        that._subvalueIndicatorContainer.linkAppend();
                        const elements = (0, _utils.map)([that._rangeContainer].concat(that._prepareValueIndicators()), (function(element) {
                            return element && element.enabled ? element : null
                        }));
                        that._applyMainLayout(elements, that._measureScale(scaleOptions));
                        elements.forEach(element => element.resize(that._getElementLayout(element.getOffset())));
                        that._shiftScale(that._getElementLayout(0), scaleOptions);
                        that._beginValueChanging();
                        that._updateActiveElements();
                        that._endValueChanging()
                    },
                    _prepareScaleSettings: function() {
                        const that = this;
                        const userOptions = that.option("scale");
                        const scaleOptions = (0, _extend2.extend)(true, {}, that._themeManager.theme("scale"), userOptions);
                        scaleOptions.label.indentFromAxis = 0;
                        scaleOptions.isHorizontal = !that._area.vertical;
                        scaleOptions.forceUserTickInterval |= (0, _type.isDefined)(userOptions) && (0, _type.isDefined)(userOptions.tickInterval) && !(0, _type.isDefined)(userOptions.scaleDivisionFactor);
                        scaleOptions.axisDivisionFactor = scaleOptions.scaleDivisionFactor || that._gridSpacingFactor;
                        scaleOptions.minorAxisDivisionFactor = scaleOptions.minorScaleDivisionFactor || 5;
                        scaleOptions.numberMultipliers = DEFAULT_NUMBER_MULTIPLIERS;
                        scaleOptions.tickOrientation = that._getTicksOrientation(scaleOptions);
                        if (scaleOptions.label.useRangeColors) {
                            scaleOptions.label.customizeColor = function() {
                                return that._rangeContainer.getColorForValue(this.value)
                            }
                        }
                        return scaleOptions
                    },
                    _renderScale: function(scaleOptions) {
                        const bounds = this._translator.getDomain();
                        const startValue = bounds[0];
                        const endValue = bounds[1];
                        const angles = this._translator.getCodomain();
                        const invert = !!(startValue > endValue ^ scaleOptions.inverted);
                        const min = _min(startValue, endValue);
                        const max = _max(startValue, endValue);
                        scaleOptions.min = min;
                        scaleOptions.max = max;
                        scaleOptions.startAngle = 90 - angles[0];
                        scaleOptions.endAngle = 90 - angles[1];
                        scaleOptions.skipViewportExtending = true;
                        scaleOptions.inverted = invert;
                        this._scale.updateOptions(scaleOptions);
                        this._scale.setBusinessRange({
                            axisType: "continuous",
                            dataType: "numeric",
                            min: min,
                            max: max,
                            invert: invert
                        });
                        this._updateScaleTickIndent(scaleOptions);
                        this._scaleGroup.linkAppend();
                        this._labelsAxesGroup.linkAppend();
                        this._scale.draw((0, _extend2.extend)({}, this._canvas))
                    },
                    _updateIndicatorSettings: function(settings) {
                        const that = this;
                        settings.currentValue = settings.baseValue = _isFinite(that._translator.translate(settings.baseValue)) ? _Number(settings.baseValue) : that._baseValue;
                        settings.vertical = that._area.vertical;
                        if (settings.text && !settings.text.format) {
                            settings.text.format = that._defaultFormatOptions
                        }
                    },
                    _prepareIndicatorSettings: function(options, defaultTypeField) {
                        const theme = this._themeManager.theme("valueIndicators");
                        const type = (0, _utils.normalizeEnum)(options.type || this._themeManager.theme(defaultTypeField));
                        const settings = _extend(true, {}, theme._default, theme[type], options);
                        settings.type = type;
                        settings.animation = this._animationSettings;
                        settings.containerBackgroundColor = this._containerBackgroundColor;
                        this._updateIndicatorSettings(settings);
                        return settings
                    },
                    _cleanValueIndicators: function() {
                        this._valueIndicator && this._valueIndicator.clean();
                        this._subvalueIndicatorsSet && this._subvalueIndicatorsSet.clean()
                    },
                    _prepareValueIndicators: function() {
                        this._prepareValueIndicator();
                        null !== this.__subvalues && this._prepareSubvalueIndicators();
                        return [this._valueIndicator, this._subvalueIndicatorsSet]
                    },
                    _updateActiveElements: function() {
                        this._updateValueIndicator();
                        this._updateSubvalueIndicators()
                    },
                    _prepareValueIndicator: function() {
                        const that = this;
                        let target = that._valueIndicator;
                        const settings = that._prepareIndicatorSettings(that.option("valueIndicator") || {}, "valueIndicatorType");
                        if (target && target.type !== settings.type) {
                            target.dispose();
                            target = null
                        }
                        if (!target) {
                            target = that._valueIndicator = that._createIndicator(settings.type, that._renderer.root, "dxg-value-indicator", "value-indicator")
                        }
                        target.render(settings)
                    },
                    _createSubvalueIndicatorsSet: function() {
                        const that = this;
                        const root = that._subvalueIndicatorContainer;
                        return new ValueIndicatorsSet({
                            createIndicator: function(type, i) {
                                return that._createIndicator(type, root, "dxg-subvalue-indicator", "subvalue-indicator", i)
                            },
                            createPalette: function(palette) {
                                return that._themeManager.createPalette(palette)
                            }
                        })
                    },
                    _prepareSubvalueIndicators: function() {
                        const that = this;
                        let target = that._subvalueIndicatorsSet;
                        const settings = that._prepareIndicatorSettings(that.option("subvalueIndicator") || {}, "subvalueIndicatorType");
                        if (!target) {
                            target = that._subvalueIndicatorsSet = that._createSubvalueIndicatorsSet()
                        }
                        const isRecreate = settings.type !== target.type;
                        target.type = settings.type;
                        const dummy = that._createIndicator(settings.type, that._renderer.root);
                        if (dummy) {
                            dummy.dispose();
                            target.render(settings, isRecreate)
                        }
                    },
                    _setupValue: function(value) {
                        this.__value = processValue(value, this.__value)
                    },
                    _setupSubvalues: function(subvalues) {
                        const vals = void 0 === subvalues ? this.__subvalues : parseArrayOfNumbers(subvalues);
                        let i;
                        let ii;
                        let list;
                        if (null === vals) {
                            return
                        }
                        for (i = 0, ii = vals.length, list = []; i < ii; ++i) {
                            list.push(processValue(vals[i], this.__subvalues[i]))
                        }
                        this.__subvalues = list
                    },
                    _updateValueIndicator: function() {
                        this._valueIndicator && this._valueIndicator.value(this.__value, this._noAnimation)
                    },
                    _updateSubvalueIndicators: function() {
                        this._subvalueIndicatorsSet && this._subvalueIndicatorsSet.values(this.__subvalues, this._noAnimation)
                    },
                    value: function(arg) {
                        if (void 0 !== arg) {
                            this._changeValue(arg);
                            return this
                        }
                        return this.__value
                    },
                    subvalues: function(arg) {
                        if (void 0 !== arg) {
                            this._changeSubvalues(arg);
                            return this
                        }
                        return null !== this.__subvalues ? this.__subvalues.slice() : void 0
                    },
                    _changeValue: function(value) {
                        this._setupValue(value);
                        this._beginValueChanging();
                        this._updateValueIndicator();
                        this._updateExtraElements();
                        if (this.__value !== this.option("value")) {
                            this.option("value", this.__value)
                        }
                        this._endValueChanging()
                    },
                    _changeSubvalues: function(subvalues) {
                        if (null !== this.__subvalues) {
                            this._setupSubvalues(subvalues);
                            this._beginValueChanging();
                            this._updateSubvalueIndicators();
                            this._updateExtraElements();
                            this._endValueChanging()
                        } else {
                            this.__subvalues = parseArrayOfNumbers(subvalues);
                            this._setContentSize();
                            this._renderContent()
                        }
                        if (!(0, _base_gauge.compareArrays)(this.__subvalues, this.option("subvalues"))) {
                            this.option("subvalues", this.__subvalues)
                        }
                    },
                    _optionChangesMap: {
                        scale: "DOMAIN",
                        rangeContainer: "MOSTLY_TOTAL",
                        valueIndicator: "MOSTLY_TOTAL",
                        subvalueIndicator: "MOSTLY_TOTAL",
                        containerBackgroundColor: "MOSTLY_TOTAL",
                        value: "VALUE",
                        subvalues: "SUBVALUES",
                        valueIndicators: "MOSTLY_TOTAL"
                    },
                    _customChangesOrder: ["VALUE", "SUBVALUES"],
                    _change_VALUE: function() {
                        this._changeValue(this.option("value"))
                    },
                    _change_SUBVALUES: function() {
                        this._changeSubvalues(this.option("subvalues"))
                    },
                    _applyMainLayout: null,
                    _getElementLayout: null,
                    _createIndicator: function(type, owner, className, trackerType, trackerIndex, _strict) {
                        const indicator = this._factory.createIndicator({
                            renderer: this._renderer,
                            translator: this._translator,
                            owner: owner,
                            tracker: this._tracker,
                            className: className
                        }, type, _strict);
                        if (indicator) {
                            indicator.type = type;
                            indicator._trackerInfo = {
                                type: trackerType,
                                index: trackerIndex
                            }
                        }
                        return indicator
                    },
                    _getApproximateScreenRange: null
                });
                exports.dxGauge = dxGauge;

                function valueGetter(arg) {
                    return arg ? arg.value : null
                }

                function setupValues(that, fieldName, optionItems) {
                    const currentValues = that[fieldName];
                    const newValues = _isArray(optionItems) ? (0, _utils.map)(optionItems, valueGetter) : [];
                    let i = 0;
                    const ii = newValues.length;
                    const list = [];
                    for (; i < ii; ++i) {
                        list.push(processValue(newValues[i], currentValues[i]))
                    }
                    that[fieldName] = list
                }

                function selectMode(gauge) {
                    if (void 0 === gauge.option("value") && void 0 === gauge.option("subvalues")) {
                        if (void 0 !== gauge.option("valueIndicators")) {
                            ! function(that) {
                                that.value = that.subvalues = _common.noop;
                                that._setupValue = that._setupSubvalues = that._updateValueIndicator = that._updateSubvalueIndicators = null
                            }(gauge);
                            ! function(that) {
                                that._indicatorValues = [];
                                setupValues(that, "_indicatorValues", that.option("valueIndicators"));
                                that._valueIndicators = [];
                                const _applyMostlyTotalChange = that._applyMostlyTotalChange;
                                that._applyMostlyTotalChange = function() {
                                    setupValues(this, "_indicatorValues", this.option("valueIndicators"));
                                    _applyMostlyTotalChange.call(this)
                                };
                                that._updateActiveElements = updateActiveElements_hardMode;
                                that._prepareValueIndicators = prepareValueIndicators_hardMode;
                                that._disposeValueIndicators = disposeValueIndicators_hardMode;
                                that._cleanValueIndicators = cleanValueIndicators_hardMode;
                                that.indicatorValue = indicatorValue_hardMode
                            }(gauge)
                        }
                    }
                }

                function updateActiveElements_hardMode() {
                    const that = this;
                    that._valueIndicators.forEach(valueIndicator => {
                        valueIndicator.value(that._indicatorValues[valueIndicator.index], that._noAnimation)
                    })
                }

                function prepareValueIndicators_hardMode() {
                    const that = this;
                    const valueIndicators = that._valueIndicators || [];
                    const userOptions = that.option("valueIndicators");
                    const optionList = [];
                    let i = 0;
                    let ii;
                    for (ii = _isArray(userOptions) ? userOptions.length : 0; i < ii; ++i) {
                        optionList.push(userOptions[i])
                    }
                    for (ii = valueIndicators.length; i < ii; ++i) {
                        optionList.push(null)
                    }
                    const newValueIndicators = [];
                    optionList.forEach((userSettings, i) => {
                        let valueIndicator = valueIndicators[i];
                        if (!userSettings) {
                            valueIndicator && valueIndicator.dispose();
                            return
                        }
                        const settings = that._prepareIndicatorSettings(userSettings, "valueIndicatorType");
                        if (valueIndicator && valueIndicator.type !== settings.type) {
                            valueIndicator.dispose();
                            valueIndicator = null
                        }
                        if (!valueIndicator) {
                            valueIndicator = that._createIndicator(settings.type, that._renderer.root, "dxg-value-indicator", "value-indicator", i, true)
                        }
                        if (valueIndicator) {
                            valueIndicator.index = i;
                            valueIndicator.render(settings);
                            newValueIndicators.push(valueIndicator)
                        }
                    });
                    that._valueIndicators = newValueIndicators;
                    return that._valueIndicators
                }

                function disposeValueIndicators_hardMode() {
                    this._valueIndicators.forEach(valueIndicator => valueIndicator.dispose());
                    this._valueIndicators = null
                }

                function cleanValueIndicators_hardMode() {
                    this._valueIndicators.forEach(valueIndicator => valueIndicator.clean())
                }

                function indicatorValue_hardMode(index, value) {
                    return function(that, pointers, values, index, value) {
                        if (void 0 !== value) {
                            if (void 0 !== values[index]) {
                                values[index] = processValue(value, values[index]);
                                pointers[index] && pointers[index].value(values[index])
                            }
                            return that
                        } else {
                            return values[index]
                        }
                    }(this, this._valueIndicators, this._indicatorValues, index, value)
                }

                function ValueIndicatorsSet(parameters) {
                    this._parameters = parameters;
                    this._indicators = []
                }
                ValueIndicatorsSet.prototype = {
                    constructor: ValueIndicatorsSet,
                    dispose: function() {
                        this._indicators.forEach(indicator => indicator.dispose());
                        this._parameters = this._options = this._indicators = this._colorPalette = this._palette = null;
                        return this
                    },
                    clean: function() {
                        this._sample && this._sample.clean().dispose();
                        this._indicators.forEach(indicator => indicator.clean());
                        this._sample = this._options = this._palette = null;
                        return this
                    },
                    render: function(options, isRecreate) {
                        const that = this;
                        that._options = options;
                        that._sample = that._parameters.createIndicator(that.type);
                        that._sample.render(options);
                        that.enabled = that._sample.enabled;
                        that._palette = (0, _type.isDefined)(options.palette) ? that._parameters.createPalette(options.palette) : null;
                        if (that.enabled) {
                            that._generatePalette(that._indicators.length);
                            that._indicators = (0, _utils.map)(that._indicators, (function(indicator, i) {
                                if (isRecreate) {
                                    indicator.dispose();
                                    indicator = that._parameters.createIndicator(that.type, i)
                                }
                                indicator.render(that._getIndicatorOptions(i));
                                return indicator
                            }))
                        }
                        return that
                    },
                    getOffset: function() {
                        return this._sample.getOffset()
                    },
                    resize: function(layout) {
                        this._layout = layout;
                        this._indicators.forEach(indicator => indicator.resize(layout));
                        return this
                    },
                    measure: function(layout) {
                        return this._sample.measure(layout)
                    },
                    _getIndicatorOptions: function(index) {
                        let result = this._options;
                        if (this._colorPalette) {
                            result = _extend({}, result, {
                                color: this._colorPalette[index]
                            })
                        }
                        return result
                    },
                    _generatePalette: function(count) {
                        const that = this;
                        let colors = null;
                        if (that._palette) {
                            that._palette.reset();
                            colors = that._palette.generateColors(count, {
                                repeat: true
                            })
                        }
                        that._colorPalette = colors
                    },
                    _adjustIndicatorsCount: function(count) {
                        const that = this;
                        const indicators = that._indicators;
                        let i;
                        let ii;
                        let indicator;
                        const indicatorsLen = indicators.length;
                        if (indicatorsLen > count) {
                            for (i = count, ii = indicatorsLen; i < ii; ++i) {
                                indicators[i].clean().dispose()
                            }
                            that._indicators = indicators.slice(0, count);
                            that._generatePalette(indicators.length)
                        } else if (indicatorsLen < count) {
                            that._generatePalette(count);
                            for (i = indicatorsLen, ii = count; i < ii; ++i) {
                                indicator = that._parameters.createIndicator(that.type, i);
                                indicator.render(that._getIndicatorOptions(i)).resize(that._layout);
                                indicators.push(indicator)
                            }
                        }
                    },
                    values: function(arg, _noAnimation) {
                        const that = this;
                        if (!that.enabled) {
                            return
                        }
                        if (void 0 !== arg) {
                            if (!_isArray(arg)) {
                                arg = _isFinite(arg) ? [Number(arg)] : null
                            }
                            if (arg) {
                                that._adjustIndicatorsCount(arg.length);
                                that._indicators.forEach((indicator, i) => indicator.value(arg[i], _noAnimation))
                            }
                            return that
                        }
                        return (0, _utils.map)(that._indicators, (function(indicator) {
                            return indicator.value()
                        }))
                    }
                }
            },
        62987:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/gauges/linear_gauge.js ***!
              \************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _object = __webpack_require__( /*! ../../core/utils/object */ 48013);
                var _base_gauge = __webpack_require__( /*! ./base_gauge */ 18029);
                var _common = __webpack_require__( /*! ./common */ 88917);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var linearIndicators = function(obj, nodeInterop) {
                    if (!nodeInterop && obj && obj.__esModule) {
                        return obj
                    }
                    if (null === obj || "object" !== typeof obj && "function" !== typeof obj) {
                        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 ("default" !== key && 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
                }(__webpack_require__( /*! ./linear_indicators */ 79615));
                var _linear_range_container = _interopRequireDefault(__webpack_require__( /*! ./linear_range_container */ 74425));

                function _getRequireWildcardCache(nodeInterop) {
                    if ("function" !== typeof WeakMap) {
                        return null
                    }
                    var cacheBabelInterop = new WeakMap;
                    var cacheNodeInterop = new WeakMap;
                    return (_getRequireWildcardCache = function(nodeInterop) {
                        return nodeInterop ? cacheNodeInterop : cacheBabelInterop
                    })(nodeInterop)
                }

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const _max = Math.max;
                const _min = Math.min;
                const _round = Math.round;
                const dxLinearGauge = _common.dxGauge.inherit({
                    _rootClass: "dxg-linear-gauge",
                    _factoryMethods: {
                        rangeContainer: "createLinearRangeContainer",
                        indicator: "createLinearIndicator"
                    },
                    _gridSpacingFactor: 25,
                    _scaleTypes: {
                        type: "xyAxes",
                        drawingType: "linear"
                    },
                    _getTicksOrientation: function(scaleOptions) {
                        return scaleOptions.isHorizontal ? scaleOptions.verticalOrientation : scaleOptions.horizontalOrientation
                    },
                    _getThemeManagerOptions() {
                        const options = this.callBase.apply(this, arguments);
                        options.subTheme = "_linear";
                        return options
                    },
                    _getInvertedState() {
                        return !this._area.vertical && this.option("rtlEnabled")
                    },
                    _prepareScaleSettings: function() {
                        const scaleOptions = this.callBase();
                        scaleOptions.inverted = this._getInvertedState();
                        return scaleOptions
                    },
                    _updateScaleTickIndent: function(scaleOptions) {
                        const indentFromTick = scaleOptions.label.indentFromTick;
                        const length = scaleOptions.tick.length;
                        const textParams = this._scale.measureLabels((0, _extend.extend)({}, this._canvas));
                        const verticalTextCorrection = scaleOptions.isHorizontal ? textParams.height + textParams.y : 0;
                        const isIndentPositive = indentFromTick > 0;
                        let orientation;
                        let textCorrection;
                        let tickCorrection;
                        if (scaleOptions.isHorizontal) {
                            orientation = isIndentPositive ? {
                                center: .5,
                                top: 0,
                                bottom: 1
                            } : {
                                center: .5,
                                top: 1,
                                bottom: 0
                            };
                            tickCorrection = length * orientation[scaleOptions.verticalOrientation];
                            textCorrection = textParams.y
                        } else {
                            orientation = isIndentPositive ? {
                                center: .5,
                                left: 0,
                                right: 1
                            } : {
                                center: .5,
                                left: 1,
                                right: 0
                            };
                            tickCorrection = length * orientation[scaleOptions.horizontalOrientation];
                            textCorrection = -textParams.width
                        }
                        scaleOptions.label.indentFromAxis = -indentFromTick + (isIndentPositive ? -tickCorrection + textCorrection : tickCorrection - verticalTextCorrection);
                        this._scale.updateOptions(scaleOptions)
                    },
                    _shiftScale: function(layout, scaleOptions) {
                        const canvas = (0, _extend.extend)({}, this._canvas);
                        const isHorizontal = scaleOptions.isHorizontal;
                        const scale = this._scale;
                        canvas[isHorizontal ? "left" : "top"] = this._area[isHorizontal ? "startCoord" : "endCoord"];
                        canvas[isHorizontal ? "right" : "bottom"] = canvas[isHorizontal ? "width" : "height"] - this._area[isHorizontal ? "endCoord" : "startCoord"];
                        scale.draw(canvas);
                        scale.shift({
                            left: -layout.x,
                            top: -layout.y
                        })
                    },
                    _setupCodomain: function() {
                        const geometry = this.option("geometry") || {};
                        const vertical = "vertical" === (0, _utils.normalizeEnum)(geometry.orientation);
                        this._area = {
                            vertical: vertical,
                            x: 0,
                            y: 0,
                            startCoord: -100,
                            endCoord: 100
                        };
                        this._rangeContainer.vertical = vertical;
                        this._translator.setInverted(this._getInvertedState());
                        this._translator.setCodomain(-100, 100)
                    },
                    _getScaleLayoutValue: function() {
                        return this._area[this._area.vertical ? "x" : "y"]
                    },
                    _getTicksCoefficients: function(options) {
                        const coefs = {
                            inner: 0,
                            outer: 1
                        };
                        if (this._area.vertical) {
                            if ("left" === options.horizontalOrientation) {
                                coefs.inner = 1;
                                coefs.outer = 0
                            } else if ("center" === options.horizontalOrientation) {
                                coefs.inner = coefs.outer = .5
                            }
                        } else if ("top" === options.verticalOrientation) {
                            coefs.inner = 1;
                            coefs.outer = 0
                        } else if ("center" === options.verticalOrientation) {
                            coefs.inner = coefs.outer = .5
                        }
                        return coefs
                    },
                    _correctScaleIndents: function(result, indentFromTick, textParams) {
                        const vertical = this._area.vertical;
                        if (indentFromTick >= 0) {
                            result.max += indentFromTick + textParams[vertical ? "width" : "height"]
                        } else {
                            result.min -= -indentFromTick + textParams[vertical ? "width" : "height"]
                        }
                        result.indent = textParams[vertical ? "height" : "width"] / 2
                    },
                    _measureMainElements: function(elements, scaleMeasurement) {
                        const x = this._area.x;
                        const y = this._area.y;
                        let minBound = 1e3;
                        let maxBound = 0;
                        let indent = 0;
                        const scale = this._scale;
                        (0, _iterator.each)(elements.concat(scale), (function(_, element) {
                            const bounds = element.measure ? element.measure({
                                x: x + element.getOffset(),
                                y: y + element.getOffset()
                            }) : scaleMeasurement;
                            void 0 !== bounds.max && (maxBound = _max(maxBound, bounds.max));
                            void 0 !== bounds.min && (minBound = _min(minBound, bounds.min));
                            bounds.indent > 0 && (indent = _max(indent, bounds.indent))
                        }));
                        return {
                            minBound: minBound,
                            maxBound: maxBound,
                            indent: indent
                        }
                    },
                    _applyMainLayout: function(elements, scaleMeasurement) {
                        const that = this;
                        const measurements = that._measureMainElements(elements, scaleMeasurement);
                        const area = that._area;
                        let rect;
                        let offset;
                        if (area.vertical) {
                            rect = selectRectBySizes(that._innerRect, {
                                width: measurements.maxBound - measurements.minBound
                            });
                            offset = (rect.left + rect.right) / 2 - (measurements.minBound + measurements.maxBound) / 2;
                            area.startCoord = rect.bottom - measurements.indent;
                            area.endCoord = rect.top + measurements.indent;
                            area.x = _round(area.x + offset)
                        } else {
                            rect = selectRectBySizes(that._innerRect, {
                                height: measurements.maxBound - measurements.minBound
                            });
                            offset = (rect.top + rect.bottom) / 2 - (measurements.minBound + measurements.maxBound) / 2;
                            area.startCoord = rect.left + measurements.indent;
                            area.endCoord = rect.right - measurements.indent;
                            area.y = _round(area.y + offset)
                        }
                        that._translator.setCodomain(area.startCoord, area.endCoord);
                        that._innerRect = rect
                    },
                    _getElementLayout: function(offset) {
                        return {
                            x: _round(this._area.x + offset),
                            y: _round(this._area.y + offset)
                        }
                    },
                    _getApproximateScreenRange: function() {
                        const area = this._area;
                        let s = area.vertical ? this._canvas.height : this._canvas.width;
                        s > area.totalSize && (s = area.totalSize);
                        s *= .8;
                        return s
                    },
                    _getDefaultSize: function() {
                        const geometry = this.option("geometry") || {};
                        if ("vertical" === geometry.orientation) {
                            return {
                                width: 100,
                                height: 300
                            }
                        } else {
                            return {
                                width: 300,
                                height: 100
                            }
                        }
                    },
                    _factory: (0, _object.clone)(_base_gauge.BaseGauge.prototype._factory)
                });

                function selectRectBySizes(srcRect, sizes, margins) {
                    const rect = (0, _extend.extend)({}, srcRect);
                    let step;
                    margins = margins || {};
                    if (sizes) {
                        rect.left += margins.left || 0;
                        rect.right -= margins.right || 0;
                        rect.top += margins.top || 0;
                        rect.bottom -= margins.bottom || 0;
                        if (sizes.width > 0) {
                            step = (rect.right - rect.left - sizes.width) / 2;
                            if (step > 0) {
                                rect.left += step;
                                rect.right -= step
                            }
                        }
                        if (sizes.height > 0) {
                            step = (rect.bottom - rect.top - sizes.height) / 2;
                            if (step > 0) {
                                rect.top += step;
                                rect.bottom -= step
                            }
                        }
                    }
                    return rect
                }
                const indicators = dxLinearGauge.prototype._factory.indicators = {};
                dxLinearGauge.prototype._factory.createIndicator = (0, _common.createIndicatorCreator)(indicators);
                indicators._default = linearIndicators._default;
                indicators.rectangle = linearIndicators.rectangle;
                indicators.rhombus = linearIndicators.rhombus;
                indicators.circle = linearIndicators.circle;
                indicators.trianglemarker = linearIndicators.trianglemarker;
                indicators.textcloud = linearIndicators.textcloud;
                indicators.rangebar = linearIndicators.rangebar;
                dxLinearGauge.prototype._factory.RangeContainer = _linear_range_container.default;
                (0, _component_registrator.default)("dxLinearGauge", dxLinearGauge);
                var _default = dxLinearGauge;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        79615:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/gauges/linear_indicators.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.trianglemarker = exports.textcloud = exports.rhombus = exports.rectangle = exports.rangebar = exports.circle = exports._default = void 0;
                var _base_indicators = __webpack_require__( /*! ./base_indicators */ 3446);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                const _Number = Number;
                const SimpleIndicator = _base_indicators.BaseIndicator.inherit({
                    _move: function() {
                        const delta = this._actualPosition - this._zeroPosition;
                        this._rootElement.move(this.vertical ? 0 : delta, this.vertical ? delta : 0);
                        this._trackerElement && this._trackerElement.move(this.vertical ? 0 : delta, this.vertical ? delta : 0)
                    },
                    _isEnabled: function() {
                        this.vertical = this._options.vertical;
                        return this._options.length > 0 && this._options.width > 0
                    },
                    _isVisible: function() {
                        return true
                    },
                    _getTrackerSettings: function() {
                        const options = this._options;
                        let x1;
                        let x2;
                        let y1;
                        let y2;
                        let width = options.width / 2;
                        let length = options.length / 2;
                        const p = this._zeroPosition;
                        width > 10 || (width = 10);
                        length > 10 || (length = 10);
                        if (this.vertical) {
                            x1 = options.x - length;
                            x2 = options.x + length;
                            y1 = p + width;
                            y2 = p - width
                        } else {
                            x1 = p - width;
                            x2 = p + width;
                            y1 = options.y + length;
                            y2 = options.y - length
                        }
                        return {
                            points: [x1, y1, x1, y2, x2, y2, x2, y1]
                        }
                    },
                    _render: function() {
                        this._zeroPosition = this._translator.getCodomainStart()
                    },
                    _clear: function() {
                        delete this._element
                    },
                    measure: function(layout) {
                        const p = this.vertical ? layout.x : layout.y;
                        return {
                            min: p - this._options.length / 2,
                            max: p + this._options.length / 2
                        }
                    },
                    getTooltipParameters: function() {
                        const options = this._options;
                        const p = this._actualPosition;
                        const parameters = {
                            x: p,
                            y: p,
                            value: this._currentValue,
                            color: options.color,
                            offset: options.width / 2
                        };
                        this.vertical ? parameters.x = options.x : parameters.y = options.y;
                        return parameters
                    }
                });
                const rectangle = SimpleIndicator.inherit({
                    _render: function() {
                        const options = this._options;
                        let x1;
                        let x2;
                        let y1;
                        let y2;
                        this.callBase();
                        const p = this._zeroPosition;
                        if (this.vertical) {
                            x1 = options.x - options.length / 2;
                            x2 = options.x + options.length / 2;
                            y1 = p + options.width / 2;
                            y2 = p - options.width / 2
                        } else {
                            x1 = p - options.width / 2;
                            x2 = p + options.width / 2;
                            y1 = options.y + options.length / 2;
                            y2 = options.y - options.length / 2
                        }
                        this._element = this._element || this._renderer.path([], "area").append(this._rootElement);
                        this._element.attr({
                            points: [x1, y1, x1, y2, x2, y2, x2, y1]
                        })
                    }
                });
                exports.rectangle = rectangle;
                const rhombus = SimpleIndicator.inherit({
                    _render: function() {
                        const that = this;
                        const options = that._options;
                        let x;
                        let y;
                        let dx;
                        let dy;
                        that.callBase();
                        if (that.vertical) {
                            x = options.x;
                            y = that._zeroPosition;
                            dx = options.length / 2 || 0;
                            dy = options.width / 2 || 0
                        } else {
                            x = that._zeroPosition;
                            y = options.y;
                            dx = options.width / 2 || 0;
                            dy = options.length / 2 || 0
                        }
                        that._element = that._element || that._renderer.path([], "area").append(that._rootElement);
                        that._element.attr({
                            points: [x - dx, y, x, y - dy, x + dx, y, x, y + dy]
                        })
                    }
                });
                exports.rhombus = rhombus;
                const circle = SimpleIndicator.inherit({
                    _render: function() {
                        const that = this;
                        const options = that._options;
                        let x;
                        let y;
                        that.callBase();
                        if (that.vertical) {
                            x = options.x;
                            y = that._zeroPosition
                        } else {
                            x = that._zeroPosition;
                            y = options.y
                        }
                        const r = options.length / 2 || 0;
                        that._element = that._element || that._renderer.circle().append(that._rootElement);
                        that._element.attr({
                            cx: x,
                            cy: y,
                            r: r
                        })
                    }
                });
                exports.circle = circle;
                const triangleMarker = SimpleIndicator.inherit({
                    _isEnabled: function() {
                        this.vertical = this._options.vertical;
                        this._inverted = this.vertical ? "right" === (0, _utils.normalizeEnum)(this._options.horizontalOrientation) : "bottom" === (0, _utils.normalizeEnum)(this._options.verticalOrientation);
                        return this._options.length > 0 && this._options.width > 0
                    },
                    _isVisible: function() {
                        return true
                    },
                    _render: function() {
                        const that = this;
                        const options = that._options;
                        let x1;
                        let x2;
                        let y1;
                        let y2;
                        const settings = {
                            stroke: "none",
                            "stroke-width": 0,
                            "stroke-linecap": "square"
                        };
                        that.callBase();
                        if (that.vertical) {
                            x1 = options.x;
                            y1 = that._zeroPosition;
                            x2 = x1 + _Number(that._inverted ? options.length : -options.length);
                            settings.points = [x1, y1, x2, y1 - options.width / 2, x2, y1 + options.width / 2]
                        } else {
                            y1 = options.y;
                            x1 = that._zeroPosition;
                            y2 = y1 + _Number(that._inverted ? options.length : -options.length);
                            settings.points = [x1, y1, x1 - options.width / 2, y2, x1 + options.width / 2, y2]
                        }
                        if (options.space > 0) {
                            settings["stroke-width"] = Math.min(options.space, options.width / 4) || 0;
                            settings.stroke = settings["stroke-width"] > 0 ? options.containerBackgroundColor || "none" : "none"
                        }
                        that._element = that._element || that._renderer.path([], "area").append(that._rootElement);
                        that._element.attr(settings).sharp()
                    },
                    _getTrackerSettings: function() {
                        const that = this;
                        const options = that._options;
                        let width = options.width / 2;
                        let length = _Number(options.length);
                        let x1;
                        let x2;
                        let y1;
                        let y2;
                        let result;
                        width > 10 || (width = 10);
                        length > 20 || (length = 20);
                        if (that.vertical) {
                            x1 = options.x;
                            x2 = x1 + (that._inverted ? length : -length);
                            y1 = that._zeroPosition + width;
                            y2 = that._zeroPosition - width;
                            result = [x1, y1, x2, y1, x2, y2, x1, y2]
                        } else {
                            y1 = options.y;
                            y2 = y1 + (that._inverted ? length : -length);
                            x1 = that._zeroPosition - width;
                            x2 = that._zeroPosition + width;
                            result = [x1, y1, x1, y2, x2, y2, x2, y1]
                        }
                        return {
                            points: result
                        }
                    },
                    measure: function(layout) {
                        const that = this;
                        const length = _Number(that._options.length);
                        let minBound;
                        let maxBound;
                        if (that.vertical) {
                            minBound = maxBound = layout.x;
                            if (that._inverted) {
                                maxBound = minBound + length
                            } else {
                                minBound = maxBound - length
                            }
                        } else {
                            minBound = maxBound = layout.y;
                            if (that._inverted) {
                                maxBound = minBound + length
                            } else {
                                minBound = maxBound - length
                            }
                        }
                        return {
                            min: minBound,
                            max: maxBound
                        }
                    },
                    getTooltipParameters: function() {
                        const options = this._options;
                        const s = (this._inverted ? options.length : -options.length) / 2;
                        const parameters = this.callBase();
                        this.vertical ? parameters.x += s : parameters.y += s;
                        parameters.offset = options.length / 2;
                        return parameters
                    }
                });
                exports.trianglemarker = triangleMarker;
                const textCloud = _base_indicators.BaseTextCloudMarker.inherit({
                    _isEnabled: function() {
                        this.vertical = this._options.vertical;
                        this._inverted = this.vertical ? "right" === (0, _utils.normalizeEnum)(this._options.horizontalOrientation) : "bottom" === (0, _utils.normalizeEnum)(this._options.verticalOrientation);
                        return true
                    },
                    _isVisible: function() {
                        return true
                    },
                    _getTextCloudOptions: function() {
                        const that = this;
                        let x = that._actualPosition;
                        let y = that._actualPosition;
                        let type;
                        if (that.vertical) {
                            x = that._options.x;
                            type = that._inverted ? "top-left" : "top-right"
                        } else {
                            y = that._options.y;
                            type = that._inverted ? "right-top" : "right-bottom"
                        }
                        return {
                            x: x,
                            y: y,
                            type: type
                        }
                    },
                    measure: function(layout) {
                        const that = this;
                        let minBound;
                        let maxBound;
                        const arrowLength = _Number(that._options.arrowLength) || 0;
                        that._measureText();
                        if (that.vertical) {
                            if (that._inverted) {
                                minBound = layout.x;
                                maxBound = layout.x + arrowLength + that._textFullWidth
                            } else {
                                minBound = layout.x - arrowLength - that._textFullWidth;
                                maxBound = layout.x
                            }
                        } else if (that._inverted) {
                            minBound = layout.y;
                            maxBound = layout.y + arrowLength + that._textFullHeight
                        } else {
                            minBound = layout.y - arrowLength - that._textFullHeight;
                            maxBound = layout.y
                        }
                        return {
                            min: minBound,
                            max: maxBound,
                            indent: 0
                        }
                    },
                    _correctCloudType(type, _ref, _ref2) {
                        let {
                            x: x,
                            y: y
                        } = _ref;
                        let {
                            width: width,
                            height: height
                        } = _ref2;
                        if ("right-top" === type || "right-bottom" === type) {
                            if (x - width < this._translator.getCodomainStart()) {
                                type = "left-".concat(type.split("-")[1])
                            }
                        } else if ("top-left" === type || "top-right" === type) {
                            if (y + height > this._translator.getCodomainStart()) {
                                type = "bottom-".concat(type.split("-")[1])
                            }
                        }
                        return type
                    }
                });
                exports.textcloud = textCloud;
                const rangeBar = _base_indicators.BaseRangeBar.inherit({
                    _isEnabled: function() {
                        this.vertical = this._options.vertical;
                        this._inverted = this.vertical ? "right" === (0, _utils.normalizeEnum)(this._options.horizontalOrientation) : "bottom" === (0, _utils.normalizeEnum)(this._options.verticalOrientation);
                        return this._options.size > 0
                    },
                    _isVisible: function() {
                        return true
                    },
                    _createBarItem: function() {
                        return this._renderer.path([], "area").append(this._rootElement)
                    },
                    _createTracker: function() {
                        return this._renderer.path([], "area")
                    },
                    _setBarSides: function() {
                        const that = this;
                        const options = that._options;
                        const size = _Number(options.size);
                        let minSide;
                        let maxSide;
                        if (that.vertical) {
                            if (that._inverted) {
                                minSide = options.x;
                                maxSide = options.x + size
                            } else {
                                minSide = options.x - size;
                                maxSide = options.x
                            }
                        } else if (that._inverted) {
                            minSide = options.y;
                            maxSide = options.y + size
                        } else {
                            minSide = options.y - size;
                            maxSide = options.y
                        }
                        that._minSide = minSide;
                        that._maxSide = maxSide;
                        that._minBound = minSide;
                        that._maxBound = maxSide
                    },
                    _getSpace: function() {
                        const options = this._options;
                        return options.space > 0 ? _Number(options.space) : 0
                    },
                    _isTextVisible: function() {
                        const textOptions = this._options.text || {};
                        return textOptions.indent > 0 || textOptions.indent < 0
                    },
                    _getTextAlign: function() {
                        return this.vertical ? this._options.text.indent > 0 ? "left" : "right" : "center"
                    },
                    _setTextItemsSides: function() {
                        const that = this;
                        const indent = _Number(that._options.text.indent);
                        if (indent > 0) {
                            that._lineStart = that._maxSide;
                            that._lineEnd = that._maxSide + indent;
                            that._textPosition = that._lineEnd + (that.vertical ? 2 : that._textHeight / 2);
                            that._maxBound = that._textPosition + (that.vertical ? that._textWidth : that._textHeight / 2)
                        } else if (indent < 0) {
                            that._lineStart = that._minSide;
                            that._lineEnd = that._minSide + indent;
                            that._textPosition = that._lineEnd - (that.vertical ? 2 : that._textHeight / 2);
                            that._minBound = that._textPosition - (that.vertical ? that._textWidth : that._textHeight / 2)
                        }
                    },
                    _getPositions: function() {
                        const startPosition = this._startPosition;
                        const endPosition = this._endPosition;
                        const space = this._space;
                        const basePosition = this._basePosition;
                        const actualPosition = this._actualPosition;
                        let mainPosition1;
                        let mainPosition2;
                        let backPosition1;
                        let backPosition2;
                        if (startPosition < endPosition) {
                            if (basePosition < actualPosition) {
                                mainPosition1 = basePosition;
                                mainPosition2 = actualPosition
                            } else {
                                mainPosition1 = actualPosition;
                                mainPosition2 = basePosition
                            }
                            backPosition1 = mainPosition1 - space;
                            backPosition2 = mainPosition2 + space
                        } else {
                            if (basePosition > actualPosition) {
                                mainPosition1 = basePosition;
                                mainPosition2 = actualPosition
                            } else {
                                mainPosition1 = actualPosition;
                                mainPosition2 = basePosition
                            }
                            backPosition1 = mainPosition1 + space;
                            backPosition2 = mainPosition2 - space
                        }
                        return {
                            start: startPosition,
                            end: endPosition,
                            main1: mainPosition1,
                            main2: mainPosition2,
                            back1: backPosition1,
                            back2: backPosition2
                        }
                    },
                    _buildItemSettings: function(from, to) {
                        const side1 = this._minSide;
                        const side2 = this._maxSide;
                        const points = this.vertical ? [side1, from, side1, to, side2, to, side2, from] : [from, side1, from, side2, to, side2, to, side1];
                        return {
                            points: points
                        }
                    },
                    _updateTextPosition: function() {
                        this._text.attr(this.vertical ? {
                            x: this._textPosition,
                            y: this._actualPosition + this._textVerticalOffset
                        } : {
                            x: this._actualPosition,
                            y: this._textPosition + this._textVerticalOffset
                        })
                    },
                    _updateLinePosition: function() {
                        const that = this;
                        const actualPosition = that._actualPosition;
                        let side1;
                        let side2;
                        let points;
                        if (that.vertical) {
                            if (that._basePosition >= actualPosition) {
                                side1 = actualPosition;
                                side2 = actualPosition + 2
                            } else {
                                side1 = actualPosition - 2;
                                side2 = actualPosition
                            }
                            points = [that._lineStart, side1, that._lineStart, side2, that._lineEnd, side2, that._lineEnd, side1]
                        } else {
                            if (that._basePosition <= actualPosition) {
                                side1 = actualPosition - 2;
                                side2 = actualPosition
                            } else {
                                side1 = actualPosition;
                                side2 = actualPosition + 2
                            }
                            points = [side1, that._lineStart, side1, that._lineEnd, side2, that._lineEnd, side2, that._lineStart]
                        }
                        that._line.attr({
                            points: points
                        }).sharp()
                    },
                    _getTooltipPosition: function() {
                        const crossCenter = (this._minSide + this._maxSide) / 2;
                        const alongCenter = (this._basePosition + this._actualPosition) / 2;
                        return this.vertical ? {
                            x: crossCenter,
                            y: alongCenter
                        } : {
                            x: alongCenter,
                            y: crossCenter
                        }
                    },
                    measure: function(layout) {
                        const that = this;
                        const size = _Number(that._options.size);
                        const textIndent = _Number(that._options.text.indent);
                        let minBound;
                        let maxBound;
                        let indent;
                        that._measureText();
                        if (that.vertical) {
                            minBound = maxBound = layout.x;
                            if (that._inverted) {
                                maxBound += size
                            } else {
                                minBound -= size
                            }
                            if (that._hasText) {
                                indent = that._textHeight / 2;
                                if (textIndent > 0) {
                                    maxBound += textIndent + that._textWidth
                                }
                                if (textIndent < 0) {
                                    minBound += textIndent - that._textWidth
                                }
                            }
                        } else {
                            minBound = maxBound = layout.y;
                            if (that._inverted) {
                                maxBound += size
                            } else {
                                minBound -= size
                            }
                            if (that._hasText) {
                                indent = that._textWidth / 2;
                                if (textIndent > 0) {
                                    maxBound += textIndent + that._textHeight
                                }
                                if (textIndent < 0) {
                                    minBound += textIndent - that._textHeight
                                }
                            }
                        }
                        return {
                            min: minBound,
                            max: maxBound,
                            indent: indent
                        }
                    }
                });
                exports.rangebar = exports._default = rangeBar
            },
        74425:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/gauges/linear_range_container.js ***!
              \**********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _base_range_container = (obj = __webpack_require__( /*! ./base_range_container */ 84165), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                const _Number = Number;
                const _max = Math.max;
                const LinearRangeContainer = _base_range_container.default.inherit({
                    _processOptions: function() {
                        const that = this;
                        that.vertical = that._options.vertical;
                        that._inner = that._outer = 0;
                        if (that.vertical) {
                            switch ((0, _utils.normalizeEnum)(that._options.horizontalOrientation)) {
                                case "left":
                                    that._inner = 1;
                                    break;
                                case "center":
                                    that._inner = that._outer = .5;
                                    break;
                                default:
                                    that._outer = 1
                            }
                        } else {
                            switch ((0, _utils.normalizeEnum)(that._options.verticalOrientation)) {
                                case "top":
                                    that._inner = 1;
                                    break;
                                case "center":
                                    that._inner = that._outer = .5;
                                    break;
                                default:
                                    that._outer = 1
                            }
                        }
                    },
                    _isVisible: function() {
                        return true
                    },
                    _createRange: function(range, layout) {
                        const inner = this._inner;
                        const outer = this._outer;
                        const startPosition = this._translator.translate(range.start);
                        const endPosition = this._translator.translate(range.end);
                        let points;
                        const x = layout.x;
                        const y = layout.y;
                        const startWidth = range.startWidth;
                        const endWidth = range.endWidth;
                        if (this.vertical) {
                            points = [x - startWidth * inner, startPosition, x - endWidth * inner, endPosition, x + endWidth * outer, endPosition, x + startWidth * outer, startPosition]
                        } else {
                            points = [startPosition, y + startWidth * outer, startPosition, y - startWidth * inner, endPosition, y - endWidth * inner, endPosition, y + endWidth * outer]
                        }
                        return this._renderer.path(points, "area")
                    },
                    measure: function(layout) {
                        const result = {};
                        let width;
                        result.min = result.max = layout[this.vertical ? "x" : "y"];
                        width = this._options.width;
                        width = _Number(width) || _max(_Number(width.start), _Number(width.end));
                        result.min -= this._inner * width;
                        result.max += this._outer * width;
                        return result
                    }
                });
                var _default = LinearRangeContainer;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        41802:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/gauges/theme_manager.js ***!
              \*************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _base_theme_manager = __webpack_require__( /*! ../core/base_theme_manager */ 43637);
                const _extend = _extend2.extend;
                const ThemeManager = _base_theme_manager.BaseThemeManager.inherit({
                    ctor(options) {
                        this.callBase.apply(this, arguments);
                        this._subTheme = options.subTheme
                    },
                    _initializeTheme: function() {
                        const that = this;
                        let subTheme;
                        if (that._subTheme) {
                            subTheme = _extend(true, {}, that._theme[that._subTheme], that._theme);
                            _extend(true, that._theme, subTheme)
                        }
                        that.callBase.apply(that, arguments)
                    }
                });
                var _default = {
                    ThemeManager: ThemeManager
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        57298:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/gauges/tracker.js ***!
              \*******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _class = _interopRequireDefault(__webpack_require__( /*! ../../core/class */ 38377));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _wheel = __webpack_require__( /*! ../../events/core/wheel */ 765);
                var _ready_callbacks = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/ready_callbacks */ 24311));
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../events/pointer */ 93786));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const EVENT_NS = "gauge-tooltip";
                const ready = _ready_callbacks.default.add;
                const Tracker = _class.default.inherit({
                    ctor: function(parameters) {
                        const that = this;
                        that._element = parameters.renderer.g().attr({
                            class: "dxg-tracker",
                            stroke: "none",
                            "stroke-width": 0,
                            fill: "#000000",
                            opacity: 1e-4
                        }).linkOn(parameters.container, {
                            name: "tracker",
                            after: "peripheral"
                        });
                        that._showTooltipCallback = function() {
                            const target = that._tooltipEvent.target;
                            const data_target = target["gauge-data-target"];
                            const data_info = target["gauge-data-info"];
                            that._targetEvent = null;
                            if (that._tooltipTarget !== target) {
                                const callback = result => {
                                    result && (that._tooltipTarget = target)
                                };
                                callback(that._callbacks["tooltip-show"](data_target, data_info, callback))
                            }
                        };
                        that._hideTooltipCallback = function() {
                            that._hideTooltipTimeout = null;
                            that._targetEvent = null;
                            if (that._tooltipTarget) {
                                that._callbacks["tooltip-hide"]();
                                that._tooltipTarget = null
                            }
                        };
                        that._dispose = function() {
                            clearTimeout(that._hideTooltipTimeout);
                            that._showTooltipCallback = that._hideTooltipCallback = that._dispose = null
                        }
                    },
                    dispose: function() {
                        this._dispose();
                        this.deactivate();
                        this._element.off("." + EVENT_NS);
                        this._element.linkOff();
                        this._element = this._context = this._callbacks = null;
                        return this
                    },
                    activate: function() {
                        this._element.linkAppend();
                        return this
                    },
                    deactivate: function() {
                        this._element.linkRemove().clear();
                        return this
                    },
                    attach: function(element, target, info) {
                        element.data({
                            "gauge-data-target": target,
                            "gauge-data-info": info
                        }).append(this._element);
                        return this
                    },
                    detach: function(element) {
                        element.remove();
                        return this
                    },
                    setTooltipState: function(state) {
                        const that = this;
                        that._element.off("." + EVENT_NS);
                        if (state) {
                            const data = {
                                tracker: that
                            };
                            that._element.on((0, _index.addNamespace)([_pointer.default.move], EVENT_NS), data, handleTooltipMouseOver).on((0, _index.addNamespace)([_pointer.default.out], EVENT_NS), data, handleTooltipMouseOut).on((0, _index.addNamespace)([_pointer.default.down], EVENT_NS), data, handleTooltipTouchStart).on((0, _index.addNamespace)([_pointer.default.up], EVENT_NS), data, handleTooltipTouchEnd).on((0, _index.addNamespace)([_wheel.name], EVENT_NS), data, handleTooltipMouseWheel)
                        }
                        return that
                    },
                    setCallbacks: function(callbacks) {
                        this._callbacks = callbacks;
                        return this
                    },
                    _showTooltip: function(event) {
                        clearTimeout(this._hideTooltipTimeout);
                        this._hideTooltipTimeout = null;
                        if (this._tooltipTarget === event.target) {
                            return
                        }
                        this._tooltipEvent = event;
                        this._showTooltipCallback()
                    },
                    _hideTooltip: function(delay) {
                        const that = this;
                        clearTimeout(that._hideTooltipTimeout);
                        if (delay) {
                            that._hideTooltipTimeout = setTimeout(that._hideTooltipCallback, delay)
                        } else {
                            that._hideTooltipCallback()
                        }
                    }
                });
                let active_touch_tooltip_tracker = null;

                function handleTooltipMouseOver(event) {
                    const tracker = event.data.tracker;
                    tracker._x = event.pageX;
                    tracker._y = event.pageY;
                    tracker._showTooltip(event)
                }

                function handleTooltipMouseOut(event) {
                    event.data.tracker._hideTooltip(100)
                }

                function handleTooltipMouseWheel(event) {
                    event.data.tracker._hideTooltip()
                }

                function handleTooltipTouchStart(event) {
                    const tracker = active_touch_tooltip_tracker = event.data.tracker;
                    tracker._touch = true;
                    handleTooltipMouseOver(event)
                }

                function handleTooltipTouchEnd() {
                    active_touch_tooltip_tracker._touch = false
                }

                function handleDocumentTooltipTouchStart(event) {
                    const tracker = active_touch_tooltip_tracker;
                    if (tracker && !tracker._touch) {
                        tracker._hideTooltip(100);
                        active_touch_tooltip_tracker = null
                    }
                }
                ready((function() {
                    _events_engine.default.subscribeGlobal(_dom_adapter.default.getDocument(), (0, _index.addNamespace)([_pointer.default.down], EVENT_NS), handleDocumentTooltipTouchStart)
                }));
                var _default = Tracker;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        99630:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/linear_gauge.js ***!
              \*****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _linear_gauge = (obj = __webpack_require__( /*! ./gauges/linear_gauge */ 62987), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _linear_gauge.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        23696:
            /*!************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/palette.js ***!
              \************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.createPalette = createPalette;
                exports.currentPalette = currentPalette;
                exports.generateColors = function(palette, count) {
                    let options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {
                        keepLastColorInEnd: false
                    };
                    options.type = options.baseColorSet;
                    options.extensionMode = options.paletteExtensionMode;
                    return createPalette(palette, options).generateColors(count)
                };
                exports.getAccentColor = function(palette, themeDefault) {
                    palette = getPalette(palette, {
                        themeDefault: themeDefault
                    });
                    return palette.accentColor || palette[0]
                };
                exports.getDiscretePalette = function(source, size, themeDefaultPalette) {
                    const palette = size > 0 ? function(source, count) {
                        const colorCount = count - 1;
                        const sourceCount = source.length - 1;
                        const colors = [];
                        const gradient = [];
                        let i;

                        function addColor(pos) {
                            const k = sourceCount * pos;
                            const kl = _floor(k);
                            const kr = _ceil(k);
                            gradient.push(colors[kl].blend(colors[kr], k - kl).toHex())
                        }
                        for (i = 0; i <= sourceCount; ++i) {
                            colors.push(new _color.default(source[i]))
                        }
                        if (colorCount > 0) {
                            for (i = 0; i <= colorCount; ++i) {
                                addColor(i / colorCount)
                            }
                        } else {
                            addColor(.5)
                        }
                        return gradient
                    }(getPalette(source, {
                        type: "gradientSet",
                        themeDefault: themeDefaultPalette
                    }), size) : [];
                    return {
                        getColor: function(index) {
                            return palette[index] || null
                        }
                    }
                };
                exports.getGradientPalette = function(source, themeDefaultPalette) {
                    const palette = getPalette(source, {
                        type: "gradientSet",
                        themeDefault: themeDefaultPalette
                    });
                    const color1 = new _color.default(palette[0]);
                    const color2 = new _color.default(palette[1]);
                    return {
                        getColor: function(ratio) {
                            return 0 <= ratio && ratio <= 1 ? color1.blend(color2, ratio).toHex() : null
                        }
                    }
                };
                exports.getPalette = getPalette;
                exports.registerPalette = function(name, palette) {
                    const item = {};
                    let paletteName;
                    if (_isArray(palette)) {
                        item.simpleSet = palette.slice(0)
                    } else if (palette) {
                        item.simpleSet = _isArray(palette.simpleSet) ? palette.simpleSet.slice(0) : void 0;
                        item.indicatingSet = _isArray(palette.indicatingSet) ? palette.indicatingSet.slice(0) : void 0;
                        item.gradientSet = _isArray(palette.gradientSet) ? palette.gradientSet.slice(0) : void 0;
                        item.accentColor = palette.accentColor
                    }
                    if (!item.accentColor) {
                        item.accentColor = item.simpleSet && item.simpleSet[0]
                    }
                    if (item.simpleSet || item.indicatingSet || item.gradientSet) {
                        paletteName = (0, _utils.normalizeEnum)(name);
                        (0, _extend.extend)(palettes[paletteName] = palettes[paletteName] || {}, item)
                    }
                };
                var _utils = __webpack_require__( /*! ./core/utils */ 19157);
                var _extend = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _color = (obj = __webpack_require__( /*! ../color */ 52752), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                const _floor = Math.floor;
                const _ceil = Math.ceil;
                const _isArray = Array.isArray;
                const palettes = {
                    material: {
                        simpleSet: ["#1db2f5", "#f5564a", "#97c95c", "#ffc720", "#eb3573", "#a63db8"],
                        indicatingSet: ["#97c95c", "#ffc720", "#f5564a"],
                        gradientSet: ["#1db2f5", "#97c95c"],
                        accentColor: "#1db2f5"
                    },
                    office: {
                        simpleSet: ["#5f8b95", "#ba4d51", "#af8a53", "#955f71", "#859666", "#7e688c"],
                        indicatingSet: ["#a3b97c", "#e1b676", "#ec7f83"],
                        gradientSet: ["#5f8b95", "#ba4d51"],
                        accentColor: "#ba4d51"
                    },
                    "harmony light": {
                        simpleSet: ["#fcb65e", "#679ec5", "#ad79ce", "#7abd5c", "#e18e92", "#b6d623", "#b7abea", "#85dbd5"],
                        indicatingSet: ["#b6d623", "#fcb65e", "#e18e92"],
                        gradientSet: ["#7abd5c", "#fcb65e"],
                        accentColor: "#679ec5"
                    },
                    "soft pastel": {
                        simpleSet: ["#60a69f", "#78b6d9", "#6682bb", "#a37182", "#eeba69", "#90ba58", "#456c68", "#7565a4"],
                        indicatingSet: ["#90ba58", "#eeba69", "#a37182"],
                        gradientSet: ["#78b6d9", "#eeba69"],
                        accentColor: "#60a69f"
                    },
                    pastel: {
                        simpleSet: ["#bb7862", "#70b3a1", "#bb626a", "#057d85", "#ab394b", "#dac599", "#153459", "#b1d2c6"],
                        indicatingSet: ["#70b3a1", "#dac599", "#bb626a"],
                        gradientSet: ["#bb7862", "#70b3a1"],
                        accentColor: "#bb7862"
                    },
                    bright: {
                        simpleSet: ["#70c92f", "#f8ca00", "#bd1550", "#e97f02", "#9d419c", "#7e4452", "#9ab57e", "#36a3a6"],
                        indicatingSet: ["#70c92f", "#f8ca00", "#bd1550"],
                        gradientSet: ["#e97f02", "#f8ca00"],
                        accentColor: "#e97f02"
                    },
                    soft: {
                        simpleSet: ["#cbc87b", "#9ab57e", "#e55253", "#7e4452", "#e8c267", "#565077", "#6babac", "#ad6082"],
                        indicatingSet: ["#9ab57e", "#e8c267", "#e55253"],
                        gradientSet: ["#9ab57e", "#e8c267"],
                        accentColor: "#565077"
                    },
                    ocean: {
                        simpleSet: ["#75c099", "#acc371", "#378a8a", "#5fa26a", "#064970", "#38c5d2", "#00a7c6", "#6f84bb"],
                        indicatingSet: ["#c8e394", "#7bc59d", "#397c8b"],
                        gradientSet: ["#acc371", "#38c5d2"],
                        accentColor: "#378a8a"
                    },
                    vintage: {
                        simpleSet: ["#dea484", "#efc59c", "#cb715e", "#eb9692", "#a85c4c", "#f2c0b5", "#c96374", "#dd956c"],
                        indicatingSet: ["#ffe5c6", "#f4bb9d", "#e57660"],
                        gradientSet: ["#efc59c", "#cb715e"],
                        accentColor: "#cb715e"
                    },
                    violet: {
                        simpleSet: ["#d1a1d1", "#eeacc5", "#7b5685", "#7e7cad", "#a13d73", "#5b41ab", "#e287e2", "#689cc1"],
                        indicatingSet: ["#d8e2f6", "#d0b2da", "#d56a8a"],
                        gradientSet: ["#eeacc5", "#7b5685"],
                        accentColor: "#7b5685"
                    },
                    carmine: {
                        simpleSet: ["#fb7764", "#73d47f", "#fed85e", "#d47683", "#dde392", "#757ab2"],
                        indicatingSet: ["#5cb85c", "#f0ad4e", "#d9534f"],
                        gradientSet: ["#fb7764", "#73d47f"],
                        accentColor: "#f05b41"
                    },
                    "dark moon": {
                        simpleSet: ["#4ddac1", "#f4c99a", "#80dd9b", "#f998b3", "#4aaaa0", "#a5aef1"],
                        indicatingSet: ["#59d8a4", "#f0ad4e", "#f9517e"],
                        gradientSet: ["#4ddac1", "#f4c99a"],
                        accentColor: "#3debd3"
                    },
                    "soft blue": {
                        simpleSet: ["#7ab8eb", "#97da97", "#facb86", "#e78683", "#839bda", "#4db7be"],
                        indicatingSet: ["#5cb85c", "#f0ad4e", "#d9534f"],
                        gradientSet: ["#7ab8eb", "#97da97"],
                        accentColor: "#7ab8eb"
                    },
                    "dark violet": {
                        simpleSet: ["#9c63ff", "#64c064", "#eead51", "#d2504b", "#4b6bbf", "#2da7b0"],
                        indicatingSet: ["#5cb85c", "#f0ad4e", "#d9534f"],
                        gradientSet: ["#9c63ff", "#64c064"],
                        accentColor: "#9c63ff"
                    },
                    "green mist": {
                        simpleSet: ["#3cbab2", "#8ed962", "#5b9d95", "#efcc7c", "#f1929f", "#4d8dab"],
                        indicatingSet: ["#72d63c", "#ffc852", "#f74a5e"],
                        gradientSet: ["#3cbab2", "#8ed962"],
                        accentColor: "#3cbab2"
                    }
                };
                let currentPaletteName;

                function currentPalette(name) {
                    if (void 0 === name) {
                        return currentPaletteName || "material"
                    } else {
                        name = (0, _utils.normalizeEnum)(name);
                        currentPaletteName = name in palettes ? name : void 0
                    }
                }

                function getPalette(palette, parameters) {
                    parameters = parameters || {};
                    palette = palette || (void 0 === currentPaletteName ? parameters.themeDefault : currentPalette());
                    let result;
                    const type = parameters.type;
                    if (_isArray(palette)) {
                        return palette.slice(0)
                    } else {
                        if ((0, _type.isString)(palette)) {
                            result = palettes[(0, _utils.normalizeEnum)(palette)]
                        }
                        if (!result) {
                            result = palettes[currentPalette()]
                        }
                    }
                    return type ? result[type].slice(0) : result
                }

                function RingBuf(buf) {
                    let ind = 0;
                    this.next = function() {
                        const res = buf[ind++];
                        if (ind === buf.length) {
                            this.reset()
                        }
                        return res
                    };
                    this.reset = function() {
                        ind = 0
                    }
                }

                function getAlternateColorsStrategy(palette, parameters) {
                    const stepHighlight = parameters.useHighlight ? 50 : 0;
                    const paletteSteps = new RingBuf([0, stepHighlight, -stepHighlight]);
                    let currentPalette = [];

                    function reset() {
                        const step = paletteSteps.next();
                        currentPalette = step ? function(originalPalette, step) {
                            const palette = [];
                            let i;
                            const ii = originalPalette.length;
                            for (i = 0; i < ii; ++i) {
                                palette.push(getNewColor(originalPalette[i], step))
                            }
                            return palette
                        }(palette, step) : palette.slice(0)
                    }
                    return {
                        getColor: function(index) {
                            const color = currentPalette[index % palette.length];
                            if (index % palette.length === palette.length - 1) {
                                reset()
                            }
                            return color
                        },
                        generateColors: function(count) {
                            const colors = [];
                            count = count || parameters.count;
                            for (let i = 0; i < count; i++) {
                                colors.push(this.getColor(i))
                            }
                            return colors
                        },
                        reset: function() {
                            paletteSteps.reset();
                            reset()
                        }
                    }
                }

                function getExtrapolateColorsStrategy(palette, parameters) {
                    return {
                        getColor: function(index, count) {
                            const paletteCount = palette.length;
                            const cycles = _floor((count - 1) / paletteCount + 1);
                            const color = palette[index % paletteCount];
                            if (cycles > 1) {
                                return function(color, cycleIndex, cycleCount) {
                                    const hsl = new _color.default(color).hsl;
                                    let l = hsl.l / 100;
                                    const diapason = cycleCount - 1 / cycleCount;
                                    let minL = l - .5 * diapason;
                                    let maxL = l + .5 * diapason;
                                    const cycleMiddle = (cycleCount - 1) / 2;
                                    const cycleDiff = cycleIndex - cycleMiddle;
                                    if (minL < Math.min(.5, .9 * l)) {
                                        minL = Math.min(.5, .9 * l)
                                    }
                                    if (maxL > Math.max(.8, l + .15 * (1 - l))) {
                                        maxL = Math.max(.8, l + .15 * (1 - l))
                                    }
                                    if (cycleDiff < 0) {
                                        l -= (minL - l) * cycleDiff / cycleMiddle
                                    } else {
                                        l += cycleDiff / cycleMiddle * (maxL - l)
                                    }
                                    hsl.l = 100 * l;
                                    return _color.default.prototype.fromHSL(hsl).toHex()
                                }(color, _floor(index / paletteCount), cycles)
                            }
                            return color
                        },
                        generateColors: function(count) {
                            const colors = [];
                            count = count || parameters.count;
                            for (let i = 0; i < count; i++) {
                                colors.push(this.getColor(i, count))
                            }
                            return colors
                        },
                        reset: function() {}
                    }
                }

                function getColorMixer(palette, parameters) {
                    const paletteCount = palette.length;
                    let extendedPalette = [];

                    function distributeColors(count, colorsCount, startIndex, distribution) {
                        const groupSize = Math.floor(count / colorsCount);
                        let extraItems = count - colorsCount * groupSize;
                        let i = startIndex;
                        let middleIndex;
                        let size;
                        while (i < startIndex + count) {
                            size = groupSize;
                            if (extraItems > 0) {
                                size += 1;
                                extraItems--
                            }
                            middleIndex = size > 2 ? Math.floor(size / 2) : 0;
                            distribution.push(i + middleIndex);
                            i += size
                        }
                        return distribution.sort((function(a, b) {
                            return a - b
                        }))
                    }

                    function getColorAndDistance(arr, startIndex, count) {
                        startIndex = (count + startIndex) % count;
                        let distance = 0;
                        for (let i = startIndex; i < 2 * count; i += 1) {
                            const index = (count + i) % count;
                            if (arr[index]) {
                                return [arr[index], distance]
                            }
                            distance++
                        }
                    }

                    function extendPalette(count) {
                        if (count <= paletteCount) {
                            return palette
                        }
                        let result = [];
                        const colorInGroups = paletteCount - 2;
                        let currentColorIndex = 0;
                        let cleanColorIndices = [];
                        if (parameters.keepLastColorInEnd) {
                            cleanColorIndices = distributeColors(count - 2, colorInGroups, 1, [0, count - 1])
                        } else {
                            cleanColorIndices = distributeColors(count - 1, paletteCount - 1, 1, [0])
                        }
                        for (let i = 0; i < count; i++) {
                            if (cleanColorIndices.indexOf(i) > -1) {
                                result[i] = palette[currentColorIndex++]
                            }
                        }
                        result = function(paletteWithEmptyColors, paletteLength) {
                            for (let i = 0; i < paletteLength; i++) {
                                const color = paletteWithEmptyColors[i];
                                if (!color) {
                                    let color1 = paletteWithEmptyColors[i - 1];
                                    if (!color1) {
                                        continue
                                    } else {
                                        const c2 = getColorAndDistance(paletteWithEmptyColors, i, paletteLength);
                                        const color2 = new _color.default(c2[0]);
                                        color1 = new _color.default(color1);
                                        for (let j = 0; j < c2[1]; j++, i++) {
                                            paletteWithEmptyColors[i] = color1.blend(color2, (j + 1) / (c2[1] + 1)).toHex()
                                        }
                                    }
                                }
                            }
                            return paletteWithEmptyColors
                        }(result, count);
                        return result
                    }
                    return {
                        getColor: function(index, count) {
                            count = count || parameters.count || paletteCount;
                            if (extendedPalette.length !== count) {
                                extendedPalette = extendPalette(count)
                            }
                            return extendedPalette[index % count]
                        },
                        generateColors: function(count, repeat) {
                            count = count || parameters.count || paletteCount;
                            if (repeat && count > paletteCount) {
                                const colors = extendPalette(paletteCount);
                                for (let i = 0; i < count - paletteCount; i++) {
                                    colors.push(colors[i])
                                }
                                return colors
                            } else {
                                return paletteCount > 0 ? extendPalette(count).slice(0, count) : []
                            }
                        },
                        reset: function() {}
                    }
                }

                function createPalette(palette, parameters, themeDefaultPalette) {
                    const paletteObj = {
                        dispose() {
                            this._extensionStrategy = null
                        },
                        getNextColor(count) {
                            return this._extensionStrategy.getColor(this._currentColor++, count)
                        },
                        generateColors(count, parameters) {
                            return this._extensionStrategy.generateColors(count, (parameters || {}).repeat)
                        },
                        reset() {
                            this._currentColor = 0;
                            this._extensionStrategy.reset();
                            return this
                        }
                    };
                    parameters = parameters || {};
                    const extensionMode = (parameters.extensionMode || "").toLowerCase();
                    const colors = getPalette(palette, {
                        type: parameters.type || "simpleSet",
                        themeDefault: themeDefaultPalette
                    });
                    if ("alternate" === extensionMode) {
                        paletteObj._extensionStrategy = getAlternateColorsStrategy(colors, parameters)
                    } else if ("extrapolate" === extensionMode) {
                        paletteObj._extensionStrategy = getExtrapolateColorsStrategy(colors, parameters)
                    } else {
                        paletteObj._extensionStrategy = getColorMixer(colors, parameters)
                    }
                    paletteObj.reset();
                    return paletteObj
                }

                function getNewColor(currentColor, step) {
                    let newColor = new _color.default(currentColor).alter(step);
                    const lightness = (color = newColor, .3 * color.r + .59 * color.g + .11 * color.b);
                    var color;
                    if (lightness > 200 || lightness < 55) {
                        newColor = new _color.default(currentColor).alter(-step / 2)
                    }
                    return newColor.toHex()
                }
            },
        72111:
            /*!**************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/pie_chart.js ***!
              \**************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_pie_chart = (obj = __webpack_require__( /*! ../__internal/viz/m_pie_chart */ 88647), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _m_pie_chart.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        80919:
            /*!****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/polar_chart.js ***!
              \****************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _m_polar_chart = (obj = __webpack_require__( /*! ../__internal/viz/m_polar_chart */ 86139), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _m_polar_chart.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        82879:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/range_selector.js ***!
              \*******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _range_selector = (obj = __webpack_require__( /*! ./range_selector/range_selector */ 91009), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _range_selector.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        11378:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/range_selector/common.js ***!
              \**************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.utils = exports.formatValue = exports.consts = exports.HEIGHT_COMPACT_MODE = void 0;
                var _smart_formatter = __webpack_require__( /*! ../axes/smart_formatter */ 41583);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                exports.HEIGHT_COMPACT_MODE = 24;
                exports.utils = {
                    trackerSettings: {
                        fill: "grey",
                        stroke: "grey",
                        opacity: 1e-4
                    },
                    animationSettings: {
                        duration: 250
                    }
                };
                const consts = {
                    emptySliderMarkerText: ". . .",
                    pointerSize: 4
                };
                exports.consts = consts;
                exports.formatValue = function(value, formatOptions, tickIntervalsInfo, valueType, type, logarithmBase) {
                    const formatObject = {
                        value: value,
                        valueText: (0, _smart_formatter.smartFormatter)(value, {
                            labelOptions: formatOptions,
                            ticks: tickIntervalsInfo ? tickIntervalsInfo.ticks : [],
                            tickInterval: tickIntervalsInfo ? tickIntervalsInfo.tickInterval : void 0,
                            dataType: valueType,
                            type: type,
                            logarithmBase: logarithmBase
                        })
                    };
                    return String((0, _type.isFunction)(formatOptions.customizeText) ? formatOptions.customizeText.call(formatObject, formatObject) : formatObject.valueText)
                }
            },
        91009:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/range_selector/range_selector.js ***!
              \**********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _type2 = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 91198));
                var _math = __webpack_require__( /*! ../../core/utils/math */ 60810);
                var _range = __webpack_require__( /*! ../translators/range */ 21177);
                var _base_axis = __webpack_require__( /*! ../axes/base_axis */ 41278);
                var _parse_utils = __webpack_require__( /*! ../components/parse_utils */ 8587);
                var _format_helper = _interopRequireDefault(__webpack_require__( /*! ../../format_helper */ 30343));
                var _common = __webpack_require__( /*! ./common */ 11378);
                var _sliders_controller = __webpack_require__( /*! ./sliders_controller */ 56481);
                var _tracker = __webpack_require__( /*! ./tracker */ 43695);
                var _range_view = __webpack_require__( /*! ./range_view */ 25104);
                var _series_data_source = __webpack_require__( /*! ./series_data_source */ 79302);
                var _tick_generator = __webpack_require__( /*! ../axes/tick_generator */ 45971);
                var _axes_constants = _interopRequireDefault(__webpack_require__( /*! ../axes/axes_constants */ 53805));
                var _m_base_widget = _interopRequireDefault(__webpack_require__( /*! ../../__internal/viz/core/m_base_widget */ 55845));
                var _export = __webpack_require__( /*! ../core/export */ 82454);
                var _title = __webpack_require__( /*! ../core/title */ 17384);
                var _loading_indicator = __webpack_require__( /*! ../core/loading_indicator */ 64758);
                var _data_source = __webpack_require__( /*! ../core/data_source */ 1539);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const _max = Math.max;
                const _ceil = Math.ceil;
                const _floor = Math.floor;
                const VALUE = "value";

                function calculateMarkerHeight(renderer, value, sliderMarkerOptions) {
                    const formattedText = void 0 === value ? _common.consts.emptySliderMarkerText : (0, _common.formatValue)(value, sliderMarkerOptions);
                    const textBBox = getTextBBox(renderer, formattedText, sliderMarkerOptions.font);
                    return _ceil(textBBox.height) + 2 * sliderMarkerOptions.paddingTopBottom + _common.consts.pointerSize
                }

                function calculateScaleLabelHalfWidth(renderer, value, scaleOptions, tickIntervalsInfo) {
                    const formattedText = (0, _common.formatValue)(value, scaleOptions.label, tickIntervalsInfo, scaleOptions.valueType, scaleOptions.type, scaleOptions.logarithmBase);
                    const textBBox = getTextBBox(renderer, formattedText, scaleOptions.label.font);
                    return _ceil(textBBox.width / 2)
                }

                function calculateValueType(firstValue, secondValue) {
                    const typeFirstValue = (0, _type2.type)(firstValue);
                    const typeSecondValue = (0, _type2.type)(secondValue);
                    const validType = function(type) {
                        return typeFirstValue === type || typeSecondValue === type
                    };
                    return validType("date") ? "datetime" : validType("number") ? "numeric" : validType("string") ? "string" : ""
                }

                function showScaleMarkers(scaleOptions) {
                    return "datetime" === scaleOptions.valueType && scaleOptions.marker.visible
                }

                function checkLogarithmicOptions(options, defaultLogarithmBase, incidentOccurred) {
                    if (!options) {
                        return
                    }
                    const logarithmBase = options.logarithmBase;
                    if ("logarithmic" === options.type && logarithmBase <= 0 || logarithmBase && !(0, _type2.isNumeric)(logarithmBase)) {
                        options.logarithmBase = defaultLogarithmBase;
                        incidentOccurred("E2104")
                    } else if ("logarithmic" !== options.type) {
                        options.logarithmBase = void 0
                    }
                }

                function calculateScaleAreaHeight(renderer, scaleOptions, visibleMarkers, tickIntervalsInfo) {
                    const labelScaleOptions = scaleOptions.label;
                    const markerScaleOptions = scaleOptions.marker;
                    const placeholderHeight = scaleOptions.placeholderHeight;
                    const ticks = "semidiscrete" === scaleOptions.type ? scaleOptions.customTicks : tickIntervalsInfo.ticks;
                    const text = (0, _common.formatValue)(ticks[0], labelScaleOptions);
                    if (placeholderHeight) {
                        return placeholderHeight
                    } else {
                        return (labelScaleOptions.visible ? labelScaleOptions.topIndent + getTextBBox(renderer, text, labelScaleOptions.font).height : 0) + (visibleMarkers ? markerScaleOptions.topIndent + markerScaleOptions.separatorHeight : 0)
                    }
                }

                function getNextTickInterval(tickInterval, minorTickInterval, isDateType) {
                    if (!tickInterval) {
                        tickInterval = minorTickInterval
                    } else if (isDateType) {
                        tickInterval = _date.default.getNextDateUnit(tickInterval)
                    } else {
                        tickInterval += minorTickInterval
                    }
                    return tickInterval
                }

                function updateTickIntervals(scaleOptions, screenDelta, incidentOccurred, range) {
                    let result;
                    const min = (0, _type2.isDefined)(range.minVisible) ? range.minVisible : range.min;
                    const max = (0, _type2.isDefined)(range.maxVisible) ? range.maxVisible : range.max;
                    const categoriesInfo = scaleOptions._categoriesInfo;
                    let ticksInfo;
                    let length;
                    const bounds = {};
                    if ("semidiscrete" === scaleOptions.type) {
                        result = function(scaleOptions, min, max, screenDelta) {
                            const minorTickInterval = scaleOptions.minorTickInterval;
                            let tickInterval = scaleOptions.tickInterval;
                            let interval;
                            const isDateType = "datetime" === scaleOptions.valueType;
                            const gridSpacingFactor = scaleOptions.axisDivisionFactor || {};
                            let tickCountByInterval;
                            let tickCountByScreen;
                            if (!tickInterval) {
                                do {
                                    interval = getNextTickInterval(tickInterval, minorTickInterval, isDateType);
                                    if (tickInterval !== interval) {
                                        tickInterval = interval
                                    } else {
                                        break
                                    }
                                    if (isDateType) {
                                        interval = _date.default.dateToMilliseconds(tickInterval)
                                    }
                                    tickCountByInterval = _ceil((max - min) / interval);
                                    tickCountByScreen = _floor(screenDelta / (gridSpacingFactor[tickInterval] || 50)) || 1
                                } while (interval && tickCountByInterval > tickCountByScreen)
                            }
                            return {
                                tickInterval: tickInterval,
                                minorTickInterval: minorTickInterval,
                                bounds: {
                                    minVisible: min,
                                    maxVisible: max
                                },
                                ticks: []
                            }
                        }(scaleOptions, min, max, screenDelta)
                    } else {
                        ticksInfo = (0, _tick_generator.tickGenerator)({
                            axisType: scaleOptions.type,
                            dataType: scaleOptions.valueType,
                            logBase: scaleOptions.logarithmBase,
                            allowNegatives: true,
                            linearThreshold: Math.abs(scaleOptions.linearThreshold || 0),
                            axisDivisionFactor: scaleOptions.axisDivisionFactor,
                            minorAxisDivisionFactor: scaleOptions.minorAxisDivisionFactor,
                            calculateMinors: true,
                            allowDecimals: scaleOptions.allowDecimals,
                            endOnTick: scaleOptions.endOnTick,
                            incidentOccurred: incidentOccurred,
                            rangeIsEmpty: range.isEmpty()
                        })({
                            min: min,
                            max: max,
                            categories: (0, _type2.isDefined)(categoriesInfo) ? categoriesInfo.categories : []
                        }, screenDelta, scaleOptions.tickInterval, scaleOptions.forceUserTickInterval, void 0, scaleOptions.minorTickInterval, scaleOptions.minorTickCount);
                        length = ticksInfo.ticks.length;
                        bounds.minVisible = ticksInfo.ticks[0] < min ? ticksInfo.ticks[0] : min;
                        bounds.maxVisible = ticksInfo.ticks[length - 1] > max ? ticksInfo.ticks[length - 1] : max;
                        result = {
                            tickInterval: ticksInfo.tickInterval,
                            minorTickInterval: 0 === scaleOptions.minorTickInterval ? 0 : ticksInfo.minorTickInterval,
                            bounds: bounds,
                            ticks: ticksInfo.ticks
                        }
                    }
                    return result
                }

                function getFirstDayOfWeek(options) {
                    var _options$workWeek;
                    return null === (_options$workWeek = options.workWeek) || void 0 === _options$workWeek ? void 0 : _options$workWeek[0]
                }

                function getTextBBox(renderer, text, fontOptions) {
                    const textElement = renderer.text(text, -1e3, -1e3).css((0, _utils.patchFontOptions)(fontOptions)).append(renderer.root);
                    const textBBox = textElement.getBBox();
                    textElement.remove();
                    return textBBox
                }

                function updateScaleOptions(scaleOptions, seriesDataSource, translatorRange, tickIntervalsInfo, checkDateMarkerVisibility) {
                    let bounds;
                    let isEmptyInterval;
                    const categoriesInfo = scaleOptions._categoriesInfo;
                    let intervals;
                    const isDateTime = "datetime" === scaleOptions.valueType;
                    if (seriesDataSource && !seriesDataSource.isEmpty() && !translatorRange.isEmpty()) {
                        bounds = tickIntervalsInfo.bounds;
                        translatorRange.addRange(bounds);
                        scaleOptions.startValue = translatorRange.invert ? bounds.maxVisible : bounds.minVisible;
                        scaleOptions.endValue = translatorRange.invert ? bounds.minVisible : bounds.maxVisible
                    }
                    scaleOptions.marker.visible = checkDateMarkerVisibility(isDateTime && -1 === scaleOptions.type.indexOf("discrete"), scaleOptions.marker.visible, scaleOptions.startValue, scaleOptions.endValue, tickIntervalsInfo.tickInterval);
                    if (categoriesInfo) {
                        scaleOptions.startValue = categoriesInfo.start;
                        scaleOptions.endValue = categoriesInfo.end
                    }
                    if (-1 === scaleOptions.type.indexOf("discrete")) {
                        isEmptyInterval = (0, _type2.isDate)(scaleOptions.startValue) && (0, _type2.isDate)(scaleOptions.endValue) && scaleOptions.startValue.getTime() === scaleOptions.endValue.getTime() || scaleOptions.startValue === scaleOptions.endValue
                    }
                    scaleOptions.isEmpty = (start = scaleOptions.startValue, end = scaleOptions.endValue, !(0, _type2.isDefined)(start) || !(0, _type2.isDefined)(end)) || isEmptyInterval;
                    var start, end;
                    if (scaleOptions.isEmpty) {
                        scaleOptions.startValue = scaleOptions.endValue = void 0
                    } else {
                        scaleOptions.minorTickInterval = tickIntervalsInfo.minorTickInterval;
                        scaleOptions.tickInterval = tickIntervalsInfo.tickInterval;
                        if (isDateTime && (!(0, _type2.isDefined)(scaleOptions.label.format) || "semidiscrete" === scaleOptions.type && scaleOptions.minorTickInterval !== scaleOptions.tickInterval)) {
                            if ("discrete" === scaleOptions.type) {
                                scaleOptions.label.format = _format_helper.default.getDateFormatByTicks(tickIntervalsInfo.ticks)
                            } else if (!scaleOptions.marker.visible) {
                                scaleOptions.label.format = _format_helper.default.getDateFormatByTickInterval(scaleOptions.startValue, scaleOptions.endValue, scaleOptions.tickInterval)
                            } else {
                                scaleOptions.label.format = _date.default.getDateFormatByTickInterval(scaleOptions.tickInterval)
                            }
                        }
                    }
                    if ("semidiscrete" === scaleOptions.type) {
                        intervals = function(options) {
                            let min = options.startValue;
                            let max = options.endValue;
                            const isDate = "datetime" === options.valueType;
                            const firstDayOfWeek = getFirstDayOfWeek(options);
                            const tickInterval = options.tickInterval;
                            const res = {
                                intervals: []
                            };
                            if (!(0, _type2.isDefined)(min) || !(0, _type2.isDefined)(max)) {
                                return res
                            }
                            res.intervals = _date.default.getSequenceByInterval(min, max, options.minorTickInterval);
                            if (tickInterval !== options.minorTickInterval) {
                                res.altIntervals = res.intervals;
                                min = correctValueByInterval(min, isDate, tickInterval, firstDayOfWeek);
                                max = correctValueByInterval(max, isDate, tickInterval, firstDayOfWeek);
                                res.intervals = _date.default.getSequenceByInterval(min, max, tickInterval);
                                res.intervals[0] = res.altIntervals[0]
                            }
                            return res
                        }(scaleOptions);
                        scaleOptions.customMinorTicks = intervals.altIntervals;
                        scaleOptions.customTicks = intervals.intervals;
                        scaleOptions.customBoundTicks = [scaleOptions.customTicks[0]]
                    }
                }

                function correctValueByInterval(value, isDate, interval, firstDayOfWeek) {
                    if ((0, _type2.isDefined)(value)) {
                        value = isDate ? _date.default.correctDateWithUnitBeginning(new Date(value), interval, null, firstDayOfWeek) : (0, _math.adjust)(_floor((0, _math.adjust)(value / interval)) * interval)
                    }
                    return value
                }

                function getPrecisionForSlider(startValue, endValue, screenDelta) {
                    const d = Math.abs(endValue - startValue) / screenDelta;
                    const tail = d - _floor(d);
                    return tail > 0 ? _ceil(Math.abs((0, _math.adjust)((0, _utils.getLog)(tail, 10)))) : 0
                }
                const dxRangeSelector = _m_base_widget.default.inherit({
                    _toggleParentsScrollSubscription() {},
                    _eventsMap: {
                        onValueChanged: {
                            name: "valueChanged"
                        }
                    },
                    _rootClassPrefix: "dxrs",
                    _rootClass: "dxrs-range-selector",
                    _dataIsReady: function() {
                        return this._dataIsLoaded()
                    },
                    _initialChanges: ["DATA_SOURCE", "VALUE"],
                    _themeDependentChanges: ["MOSTLY_TOTAL"],
                    _themeSection: "rangeSelector",
                    _fontFields: ["scale.label.font", "sliderMarker.font"],
                    _setDeprecatedOptions() {
                        this.callBase();
                        (0, _extend.extend)(this._deprecatedOptions, {
                            "behavior.callValueChanged": {
                                since: "23.1",
                                message: 'Use the "behavior.valueChangeMode" property instead'
                            },
                            "scale.aggregateByCategory": {
                                since: "23.1",
                                message: "Use the aggregation.enabled property"
                            }
                        })
                    },
                    _initCore: function() {
                        const that = this;
                        const renderer = that._renderer;
                        const root = renderer.root;
                        root.css({
                            "touch-action": "pan-y"
                        });
                        that._clipRect = renderer.clipRect();
                        const rangeViewGroup = renderer.g().attr({
                            class: "dxrs-view"
                        }).append(root);
                        const slidersGroup = renderer.g().attr({
                            class: "dxrs-slidersContainer",
                            "clip-path": that._clipRect.id
                        }).append(root);
                        const scaleGroup = renderer.g().attr({
                            class: "dxrs-scale",
                            "clip-path": that._clipRect.id
                        }).append(root);
                        const labelsAxesGroup = renderer.g().attr({
                            class: "dxrs-scale-elements",
                            "clip-path": that._clipRect.id
                        }).append(root);
                        const scaleBreaksGroup = renderer.g().attr({
                            class: "dxrs-scale-breaks"
                        }).append(root);
                        const trackersGroup = renderer.g().attr({
                            class: "dxrs-trackers"
                        }).append(root);
                        that._axis = new AxisWrapper({
                            renderer: renderer,
                            root: scaleGroup,
                            scaleBreaksGroup: scaleBreaksGroup,
                            labelsAxesGroup: labelsAxesGroup,
                            updateSelectedRange: function(range, e) {
                                that.setValue((0, _utils.convertVisualRangeObject)(range), e)
                            },
                            incidentOccurred: that._incidentOccurred
                        });
                        that._rangeView = new _range_view.RangeView({
                            renderer: renderer,
                            root: rangeViewGroup,
                            translator: that._axis.getTranslator()
                        });
                        that._slidersController = new _sliders_controller.SlidersController({
                            renderer: renderer,
                            root: slidersGroup,
                            trackersGroup: trackersGroup,
                            updateSelectedRange: function(range, lastSelectedRange, e) {
                                if (!that._rangeOption) {
                                    that.option(VALUE, (0, _utils.convertVisualRangeObject)(range, (0, _type2.isPlainObject)(that._options.silent(VALUE))))
                                }
                                that._eventTrigger("valueChanged", {
                                    value: (0, _utils.convertVisualRangeObject)(range),
                                    previousValue: (0, _utils.convertVisualRangeObject)(lastSelectedRange),
                                    event: e
                                })
                            },
                            axis: that._axis,
                            translator: that._axis.getTranslator()
                        });
                        that._tracker = new _tracker.Tracker({
                            renderer: renderer,
                            controller: that._slidersController
                        })
                    },
                    _getDefaultSize: function() {
                        return {
                            width: 400,
                            height: 160
                        }
                    },
                    _disposeCore: function() {
                        this._axis.dispose();
                        this._slidersController.dispose();
                        this._tracker.dispose()
                    },
                    _applySize: function(rect) {
                        this._clientRect = rect.slice();
                        this._change(["MOSTLY_TOTAL"])
                    },
                    _optionChangesMap: {
                        scale: "SCALE",
                        value: "VALUE",
                        dataSource: "DATA_SOURCE"
                    },
                    _optionChangesOrder: ["SCALE", "DATA_SOURCE"],
                    _change_SCALE: function() {
                        this._change(["MOSTLY_TOTAL"])
                    },
                    _setValueByDataSource() {
                        const that = this;
                        const options = that._options.silent();
                        const axis = that._axis;
                        if (options.dataSource) {
                            let selectedRangeUpdateMode = that.option("selectedRangeUpdateMode");
                            const value = that.getValue();
                            const valueIsReady = (0, _type2.isDefined)(value[0]) && (0, _type2.isDefined)(value[1]);
                            if ((0, _type2.isDefined)(selectedRangeUpdateMode)) {
                                selectedRangeUpdateMode = (0, _utils.normalizeEnum)(selectedRangeUpdateMode);
                                that.__skipAnimation = true
                            } else if (valueIsReady && !that._dataSourceIsAsync) {
                                selectedRangeUpdateMode = "reset"
                            }
                            if ("auto" === selectedRangeUpdateMode && valueIsReady) {
                                const rangesInfo = axis.allScaleSelected(value);
                                if (rangesInfo.startValue && rangesInfo.endValue) {
                                    selectedRangeUpdateMode = "reset"
                                } else if (rangesInfo.endValue) {
                                    selectedRangeUpdateMode = "shift"
                                } else {
                                    selectedRangeUpdateMode = "keep"
                                }
                            }
                            if ("reset" === selectedRangeUpdateMode) {
                                options[VALUE] = null
                            } else if ("shift" === selectedRangeUpdateMode && valueIsReady) {
                                const value = that.getValue();
                                that.__skipAnimation = true;
                                options[VALUE] = {
                                    length: axis.getVisualRangeLength({
                                        minVisible: value[0],
                                        maxVisible: value[1]
                                    })
                                }
                            } else if ("keep" === selectedRangeUpdateMode) {
                                that.__skipAnimation = true
                            }
                        }
                        that._dataSourceIsAsync = void 0
                    },
                    _change_DATA_SOURCE: function() {
                        if (this._options.silent("dataSource")) {
                            this._updateDataSource()
                        }
                    },
                    _customChangesOrder: ["MOSTLY_TOTAL", "VALUE", "SLIDER_SELECTION"],
                    _change_MOSTLY_TOTAL: function() {
                        this._applyMostlyTotalChange()
                    },
                    _change_SLIDER_SELECTION: function() {
                        const value = this._options.silent(VALUE);
                        this._slidersController.setSelectedRange(value && (0, _utils.getVizRangeObject)(value))
                    },
                    _change_VALUE: function() {
                        const that = this;
                        const option = that._rangeOption;
                        that._dataSourceIsAsync = !that._dataIsReady();
                        if (option) {
                            that._options.silent(VALUE, option);
                            that.setValue(option)
                        }
                    },
                    _validateRange: function(start, end) {
                        const ensureValueInvalid = value => (0, _type2.isDefined)(value) && !this._axis.getTranslator().isValid(value);
                        if (this._dataIsReady() && (ensureValueInvalid(start) || ensureValueInvalid(end))) {
                            this._incidentOccurred("E2203")
                        }
                    },
                    _applyChanges: function() {
                        const that = this;
                        const value = that._options.silent(VALUE);
                        if (that._changes.has("VALUE") && value) {
                            that._rangeOption = value
                        }
                        that.callBase.apply(that, arguments);
                        that._rangeOption = null;
                        that.__isResizing = that.__skipAnimation = false
                    },
                    _applyMostlyTotalChange: function() {
                        const renderer = this._renderer;
                        const rect = this._clientRect;
                        let currentAnimationEnabled;
                        const canvas = {
                            left: rect[0],
                            top: rect[1],
                            width: rect[2] - rect[0],
                            height: rect[3] - rect[1]
                        };
                        if (this.__isResizing || this.__skipAnimation) {
                            currentAnimationEnabled = renderer.animationEnabled();
                            renderer.updateAnimationOptions({
                                enabled: false
                            })
                        }
                        this._clipRect.attr({
                            x: rect[0],
                            y: rect[1],
                            width: rect[2] - rect[0],
                            height: rect[3] - rect[1]
                        });
                        this._axis.getTranslator().update(new _range.Range, canvas, {
                            isHorizontal: true
                        });
                        this._updateContent({
                            left: rect[0],
                            top: rect[1],
                            width: rect[2] - rect[0],
                            height: rect[3] - rect[1]
                        });
                        if (this.__isResizing || this.__skipAnimation) {
                            renderer.updateAnimationOptions({
                                enabled: currentAnimationEnabled
                            })
                        }
                        this._drawn()
                    },
                    _dataSourceChangedHandler: function() {
                        this._setValueByDataSource();
                        this._requestChange(["MOSTLY_TOTAL"])
                    },
                    _completeSeriesDataSourceCreation(scaleOptions, seriesDataSource) {
                        const rect = this._clientRect;
                        const canvas = {
                            left: rect[0],
                            top: rect[1],
                            width: rect[2] - rect[0],
                            height: rect[3] - rect[1]
                        };
                        this._axis.updateOptions((0, _extend.extend)({}, scaleOptions, {
                            isHorizontal: true,
                            label: {}
                        }));
                        seriesDataSource.isShowChart() && this._axis.setMarginOptions(seriesDataSource.getMarginOptions(canvas));
                        this._axis.updateCanvas(canvas);
                        seriesDataSource.createPoints()
                    },
                    _updateContent: function(canvas) {
                        const that = this;
                        const chartOptions = that.option("chart");
                        const seriesDataSource = that._createSeriesDataSource(chartOptions);
                        const isCompactMode = !(seriesDataSource && seriesDataSource.isShowChart() || that.option("background.image.url"));
                        const scaleOptions = function(scaleOption, calculatedValueType, incidentOccurred, containerColor) {
                            let parsedValue = 0;
                            let valueType = (0, _parse_utils.correctValueType)((0, _utils.normalizeEnum)(scaleOption.valueType));
                            const validateStartEndValues = function(field, parser) {
                                const messageToIncidentOccurred = "startValue" === field ? "start" : "end";
                                if ((0, _type2.isDefined)(scaleOption[field])) {
                                    parsedValue = parser(scaleOption[field]);
                                    if ((0, _type2.isDefined)(parsedValue)) {
                                        scaleOption[field] = parsedValue
                                    } else {
                                        scaleOption[field] = void 0;
                                        incidentOccurred("E2202", [messageToIncidentOccurred])
                                    }
                                }
                            };
                            valueType = calculatedValueType || valueType;
                            if (!valueType) {
                                valueType = calculateValueType(scaleOption.startValue, scaleOption.endValue) || "numeric"
                            }
                            if ("string" === valueType || scaleOption.categories) {
                                scaleOption.type = "discrete";
                                valueType = "string"
                            }
                            scaleOption.containerColor = containerColor;
                            scaleOption.valueType = valueType;
                            scaleOption.dataType = valueType;
                            const parser = (0, _parse_utils.getParser)(valueType);
                            validateStartEndValues("startValue", parser);
                            validateStartEndValues("endValue", parser);
                            checkLogarithmicOptions(scaleOption, 10, incidentOccurred);
                            if (!scaleOption.type) {
                                scaleOption.type = "continuous"
                            }
                            scaleOption.parser = parser;
                            if ("semidiscrete" === scaleOption.type) {
                                scaleOption.minorTick.visible = false;
                                scaleOption.minorTickInterval = scaleOption.minRange;
                                scaleOption.marker.visible = false;
                                scaleOption.maxRange = void 0
                            }
                            scaleOption.forceUserTickInterval |= (0, _type2.isDefined)(scaleOption.tickInterval) && !(0, _type2.isDefined)(scaleOption.axisDivisionFactor);
                            scaleOption.axisDivisionFactor = (0, _type2.isDefined)(scaleOption.axisDivisionFactor) ? scaleOption.axisDivisionFactor : 30;
                            scaleOption.minorAxisDivisionFactor = (0, _type2.isDefined)(scaleOption.minorAxisDivisionFactor) ? scaleOption.minorAxisDivisionFactor : 15;
                            return scaleOption
                        }(that._getOption("scale"), seriesDataSource && seriesDataSource.getCalculatedValueType(), that._incidentOccurred, this._getOption("containerBackgroundColor", true));
                        seriesDataSource && that._completeSeriesDataSourceCreation(scaleOptions, seriesDataSource);
                        const argTranslatorRange = function(seriesDataSource, scaleOptions) {
                            let minValue;
                            let maxValue;
                            let inverted = false;
                            let startValue = scaleOptions.startValue;
                            let endValue = scaleOptions.endValue;
                            let categories;
                            let categoriesInfo;
                            let translatorRange = seriesDataSource ? seriesDataSource.getBoundRange().arg : new _range.Range;
                            let rangeForCategories;
                            const isDate = "datetime" === scaleOptions.valueType;
                            const firstDayOfWeek = getFirstDayOfWeek(scaleOptions);
                            const minRange = scaleOptions.minRange;
                            if ("discrete" === scaleOptions.type) {
                                rangeForCategories = new _range.Range({
                                    minVisible: startValue,
                                    maxVisible: endValue
                                });
                                rangeForCategories.addRange(translatorRange);
                                translatorRange = rangeForCategories;
                                categories = seriesDataSource ? seriesDataSource.argCategories : scaleOptions.categories || startValue && endValue && [startValue, endValue];
                                categories = categories || [];
                                scaleOptions._categoriesInfo = categoriesInfo = (0, _utils.getCategoriesInfo)(categories, startValue, endValue)
                            }
                            if ("semidiscrete" === scaleOptions.type) {
                                startValue = scaleOptions.startValue = correctValueByInterval(scaleOptions.startValue, isDate, minRange, firstDayOfWeek);
                                endValue = scaleOptions.endValue = correctValueByInterval(scaleOptions.endValue, isDate, minRange, firstDayOfWeek);
                                translatorRange.minVisible = correctValueByInterval(translatorRange.minVisible, isDate, minRange, firstDayOfWeek);
                                translatorRange.maxVisible = correctValueByInterval(translatorRange.maxVisible, isDate, minRange, firstDayOfWeek);
                                translatorRange.min = correctValueByInterval(translatorRange.min, isDate, minRange, firstDayOfWeek);
                                translatorRange.max = correctValueByInterval(translatorRange.max, isDate, minRange, firstDayOfWeek)
                            }
                            if ((0, _type2.isDefined)(startValue) && (0, _type2.isDefined)(endValue)) {
                                inverted = categoriesInfo ? categoriesInfo.inverted : startValue > endValue;
                                minValue = categoriesInfo ? categoriesInfo.start : inverted ? endValue : startValue;
                                maxValue = categoriesInfo ? categoriesInfo.end : inverted ? startValue : endValue
                            } else if ((0, _type2.isDefined)(startValue) || (0, _type2.isDefined)(endValue)) {
                                minValue = startValue;
                                maxValue = endValue
                            } else if (categoriesInfo) {
                                minValue = categoriesInfo.start;
                                maxValue = categoriesInfo.end
                            }
                            translatorRange.addRange({
                                invert: inverted,
                                min: minValue,
                                max: maxValue,
                                minVisible: minValue,
                                maxVisible: maxValue,
                                dataType: scaleOptions.valueType
                            });
                            translatorRange.addRange({
                                categories: !seriesDataSource ? categories : void 0,
                                base: scaleOptions.logarithmBase,
                                axisType: scaleOptions.type,
                                dataType: scaleOptions.valueType
                            });
                            seriesDataSource && translatorRange.sortCategories(categories);
                            return translatorRange
                        }(seriesDataSource, scaleOptions);
                        const tickIntervalsInfo = updateTickIntervals(scaleOptions, canvas.width, that._incidentOccurred, argTranslatorRange);
                        const chartThemeManager = seriesDataSource && seriesDataSource.isShowChart() && seriesDataSource.getThemeManager();
                        if (chartThemeManager) {
                            checkLogarithmicOptions(chartOptions && chartOptions.valueAxis, chartThemeManager.getOptions("valueAxis").logarithmBase, that._incidentOccurred)
                        }
                        updateScaleOptions(scaleOptions, seriesDataSource, argTranslatorRange, tickIntervalsInfo, (screenDelta = canvas.width, function(isDateScale, isMarkerVisible, min, max, tickInterval) {
                            if (isMarkerVisible && isDateScale) {
                                if (!(0, _type2.isDefined)(tickInterval) || tickInterval.years || tickInterval.months >= 6 || screenDelta / 50 < _ceil((max - min) / _date.default.dateToMilliseconds("year")) + 1) {
                                    isMarkerVisible = false
                                }
                            }
                            return isMarkerVisible
                        }));
                        var screenDelta;
                        ! function(translatorRange, scaleOptions) {
                            let intervalX = scaleOptions.minorTickInterval || scaleOptions.tickInterval;
                            if ("datetime" === scaleOptions.valueType) {
                                intervalX = _date.default.dateToMilliseconds(intervalX)
                            }
                            translatorRange.addRange({
                                interval: intervalX
                            })
                        }(argTranslatorRange, scaleOptions);
                        const sliderMarkerOptions = that._prepareSliderMarkersOptions(scaleOptions, canvas.width, tickIntervalsInfo, argTranslatorRange);
                        const indents = function(renderer, scale, sliderMarkerOptions, indentOptions, tickIntervalsInfo) {
                            let leftMarkerHeight;
                            let leftScaleLabelWidth = 0;
                            let rightScaleLabelWidth = 0;
                            let rightMarkerHeight;
                            let placeholderWidthLeft;
                            let placeholderWidthRight;
                            let placeholderHeight;
                            const ticks = "semidiscrete" === scale.type ? scale.customTicks : tickIntervalsInfo.ticks;
                            let startTickValue;
                            let endTickValue;
                            indentOptions = indentOptions || {};
                            placeholderWidthLeft = indentOptions.left;
                            placeholderWidthRight = indentOptions.right;
                            placeholderHeight = sliderMarkerOptions.placeholderHeight;
                            if (sliderMarkerOptions.visible) {
                                leftMarkerHeight = calculateMarkerHeight(renderer, scale.startValue, sliderMarkerOptions);
                                rightMarkerHeight = calculateMarkerHeight(renderer, scale.endValue, sliderMarkerOptions);
                                if (void 0 === placeholderHeight) {
                                    placeholderHeight = _max(leftMarkerHeight, rightMarkerHeight)
                                }
                            }
                            if (scale.label.visible) {
                                startTickValue = (0, _type2.isDefined)(scale.startValue) ? ticks[0] : void 0;
                                endTickValue = (0, _type2.isDefined)(scale.endValue) ? ticks[ticks.length - 1] : void 0;
                                leftScaleLabelWidth = calculateScaleLabelHalfWidth(renderer, startTickValue, scale, tickIntervalsInfo);
                                rightScaleLabelWidth = calculateScaleLabelHalfWidth(renderer, endTickValue, scale, tickIntervalsInfo)
                            }
                            placeholderWidthLeft = void 0 !== placeholderWidthLeft ? placeholderWidthLeft : leftScaleLabelWidth;
                            placeholderWidthRight = (void 0 !== placeholderWidthRight ? placeholderWidthRight : rightScaleLabelWidth) || 1;
                            return {
                                left: placeholderWidthLeft,
                                right: placeholderWidthRight,
                                top: placeholderHeight || 0,
                                bottom: 0
                            }
                        }(that._renderer, scaleOptions, sliderMarkerOptions, that.option("indent"), tickIntervalsInfo);
                        const rangeContainerCanvas = {
                            left: canvas.left + indents.left,
                            top: canvas.top + indents.top,
                            width: canvas.left + indents.left + _max(canvas.width - indents.left - indents.right, 1),
                            height: _max(!isCompactMode ? canvas.height - indents.top - indents.bottom - calculateScaleAreaHeight(that._renderer, scaleOptions, showScaleMarkers(scaleOptions), tickIntervalsInfo) : _common.HEIGHT_COMPACT_MODE, 0),
                            right: 0,
                            bottom: 0
                        };
                        that._axis.update(scaleOptions, isCompactMode, rangeContainerCanvas, argTranslatorRange, seriesDataSource);
                        scaleOptions.minorTickInterval = scaleOptions.isEmpty ? 0 : scaleOptions.minorTickInterval;
                        that._updateElements(scaleOptions, sliderMarkerOptions, isCompactMode, rangeContainerCanvas, seriesDataSource);
                        if (chartThemeManager) {
                            chartThemeManager.dispose()
                        }
                    },
                    _updateElements: function(scaleOptions, sliderMarkerOptions, isCompactMode, canvas, seriesDataSource) {
                        const behavior = this._getOption("behavior");
                        const shutterOptions = this._getOption("shutter");
                        const isNotSemiDiscrete = "semidiscrete" !== scaleOptions.type;
                        shutterOptions.color = shutterOptions.color || this._getOption("containerBackgroundColor", true);
                        this._rangeView.update(this.option("background"), this._themeManager.theme("background"), canvas, isCompactMode, behavior.animationEnabled && this._renderer.animationEnabled(), seriesDataSource);
                        this._isUpdating = true;
                        this._slidersController.update([canvas.top, canvas.top + canvas.height], behavior, isCompactMode, this._getOption("sliderHandle"), sliderMarkerOptions, shutterOptions, {
                            minRange: isNotSemiDiscrete ? this.option("scale.minRange") : void 0,
                            maxRange: isNotSemiDiscrete ? this.option("scale.maxRange") : void 0
                        }, this._axis.getFullTicks(), this._getOption("selectedRangeColor", true));
                        this._requestChange(["SLIDER_SELECTION"]);
                        this._isUpdating = false;
                        this._tracker.update(!this._axis.getTranslator().getBusinessRange().isEmpty(), behavior)
                    },
                    _createSeriesDataSource: function(chartOptions) {
                        const that = this;
                        let seriesDataSource;
                        const dataSource = that._dataSourceItems();
                        const scaleOptions = that._getOption("scale");
                        const valueType = scaleOptions.valueType || calculateValueType(scaleOptions.startValue, scaleOptions.endValue);
                        const valueAxis = new _base_axis.Axis({
                            renderer: that._renderer,
                            axisType: "xyAxes",
                            drawingType: "linear"
                        });
                        valueAxis.updateOptions({
                            isHorizontal: false,
                            label: {},
                            categoriesSortingMethod: that._getOption("chart").valueAxis.categoriesSortingMethod
                        });
                        if (dataSource || chartOptions && chartOptions.series) {
                            chartOptions = (0, _extend.extend)({}, chartOptions, {
                                theme: that.option("theme")
                            });
                            seriesDataSource = new _series_data_source.SeriesDataSource({
                                renderer: that._renderer,
                                dataSource: dataSource,
                                valueType: (0, _utils.normalizeEnum)(valueType),
                                axisType: scaleOptions.type,
                                chart: chartOptions,
                                dataSourceField: that.option("dataSourceField"),
                                incidentOccurred: that._incidentOccurred,
                                categories: scaleOptions.categories,
                                argumentAxis: that._axis,
                                valueAxis: valueAxis
                            })
                        }
                        return seriesDataSource
                    },
                    _prepareSliderMarkersOptions: function(scaleOptions, screenDelta, tickIntervalsInfo, argRange) {
                        const minorTickInterval = tickIntervalsInfo.minorTickInterval;
                        const tickInterval = tickIntervalsInfo.tickInterval;
                        let interval = tickInterval;
                        const endValue = scaleOptions.endValue;
                        const startValue = scaleOptions.startValue;
                        const sliderMarkerOptions = this._getOption("sliderMarker");
                        const doNotSnap = !this._getOption("behavior").snapToTicks;
                        const isTypeDiscrete = "discrete" === scaleOptions.type;
                        const isValueTypeDatetime = "datetime" === scaleOptions.valueType;
                        sliderMarkerOptions.borderColor = this._getOption("containerBackgroundColor", true);
                        if (!sliderMarkerOptions.format && !argRange.isEmpty()) {
                            if (doNotSnap && (0, _type2.isNumeric)(scaleOptions.startValue)) {
                                sliderMarkerOptions.format = {
                                    type: "fixedPoint",
                                    precision: getPrecisionForSlider(startValue, endValue, screenDelta)
                                }
                            }
                            if (isValueTypeDatetime && !isTypeDiscrete) {
                                if ((0, _type2.isDefined)(minorTickInterval) && 0 !== minorTickInterval) {
                                    interval = function(tickInterval, minorTickInterval, withCorrection) {
                                        let interval = _date.default.getDateUnitInterval(minorTickInterval);
                                        const majorUnit = _date.default.getDateUnitInterval(tickInterval);
                                        const idx = _date.default.dateUnitIntervals.indexOf(interval);
                                        if (withCorrection && interval === majorUnit && idx > 0) {
                                            interval = _date.default.dateUnitIntervals[idx - 1]
                                        }
                                        return interval
                                    }(tickInterval, minorTickInterval, doNotSnap)
                                }
                                if (!scaleOptions.marker.visible) {
                                    if ((0, _type2.isDefined)(startValue) && (0, _type2.isDefined)(endValue)) {
                                        sliderMarkerOptions.format = _format_helper.default.getDateFormatByTickInterval(startValue, endValue, interval)
                                    }
                                } else {
                                    sliderMarkerOptions.format = _date.default.getDateFormatByTickInterval(interval)
                                }
                            }
                            if (isValueTypeDatetime && isTypeDiscrete && tickIntervalsInfo.ticks.length) {
                                sliderMarkerOptions.format = _format_helper.default.getDateFormatByTicks(tickIntervalsInfo.ticks)
                            }
                        }
                        return sliderMarkerOptions
                    },
                    getValue: function() {
                        return (0, _utils.convertVisualRangeObject)(this._slidersController.getSelectedRange())
                    },
                    setValue: function(value, e) {
                        const visualRange = (0, _utils.getVizRangeObject)(value);
                        if (!this._isUpdating && value) {
                            this._validateRange(visualRange.startValue, visualRange.endValue);
                            !(0, _utils.rangesAreEqual)(visualRange, this._slidersController.getSelectedRange()) && this._slidersController.setSelectedRange(visualRange, e)
                        }
                    },
                    _setContentSize: function() {
                        this.__isResizing = 2 === this._changes.count();
                        this.callBase.apply(this, arguments)
                    }
                });
                (0, _iterator.each)(["selectedRangeColor", "containerBackgroundColor", "sliderMarker", "sliderHandle", "shutter", "background", "behavior", "chart", "indent"], (function(_, name) {
                    dxRangeSelector.prototype._optionChangesMap[name] = "MOSTLY_TOTAL"
                }));

                function getSharpDirection() {
                    return 1
                }

                function getTickStartPositionShift(length) {
                    return length % 2 === 1 ? -_floor(length / 2) : -length / 2
                }

                function checkShiftedLabels(majorTicks, boxes, minSpacing, alignment) {
                    function checkLabelsOverlapping(nearestLabelsIndexes) {
                        if (2 === nearestLabelsIndexes.length && _axes_constants.default.areLabelsOverlap(boxes[nearestLabelsIndexes[0]], boxes[nearestLabelsIndexes[1]], minSpacing, alignment)) {
                            majorTicks[nearestLabelsIndexes[0]].removeLabel()
                        }
                    }

                    function getTwoVisibleLabels(startIndex) {
                        const labels = [];
                        for (let i = startIndex; labels.length < 2 && i < majorTicks.length; i++) {
                            majorTicks[i].label && labels.push(i)
                        }
                        return labels
                    }
                    if (majorTicks.length < 3) {
                        return
                    }
                    checkLabelsOverlapping(getTwoVisibleLabels(0));
                    checkLabelsOverlapping(getTwoVisibleLabels(majorTicks.length - 2).reverse())
                }

                function AxisWrapper(params) {
                    this._axis = new _base_axis.Axis({
                        renderer: params.renderer,
                        axesContainerGroup: params.root,
                        scaleBreaksGroup: params.scaleBreaksGroup,
                        labelsAxesGroup: params.labelsAxesGroup,
                        incidentOccurred: params.incidentOccurred,
                        axisType: "xyAxes",
                        drawingType: "linear",
                        widgetClass: "dxrs",
                        axisClass: "range-selector",
                        isArgumentAxis: true,
                        getTemplate() {}
                    });
                    this._updateSelectedRangeCallback = params.updateSelectedRange;
                    this._axis.getAxisSharpDirection = this._axis.getSharpDirectionByCoords = getSharpDirection;
                    this._axis.getTickStartPositionShift = getTickStartPositionShift;
                    this._axis._checkShiftedLabels = checkShiftedLabels
                }
                AxisWrapper.prototype = {
                    constructor: AxisWrapper,
                    update: function(options, isCompactMode, canvas, businessRange, seriesDataSource) {
                        const axis = this._axis;
                        axis.updateOptions(function(scaleOptions, isCompactMode, height, axisPosition) {
                            scaleOptions.marker.label.font = scaleOptions.label.font;
                            scaleOptions.color = scaleOptions.marker.color = scaleOptions.tick.color;
                            scaleOptions.opacity = scaleOptions.marker.opacity = scaleOptions.tick.opacity;
                            scaleOptions.width = scaleOptions.marker.width = scaleOptions.tick.width;
                            scaleOptions.placeholderSize = (scaleOptions.placeholderHeight || 0) + axisPosition;
                            scaleOptions.argumentType = scaleOptions.valueType;
                            scaleOptions.visible = isCompactMode;
                            scaleOptions.isHorizontal = true;
                            scaleOptions.calculateMinors = true;
                            scaleOptions.semiDiscreteInterval = scaleOptions.minRange;
                            if (!isCompactMode) {
                                scaleOptions.minorTick.length = scaleOptions.tick.length = height
                            }
                            scaleOptions.label.indentFromAxis = scaleOptions.label.topIndent + axisPosition;
                            return scaleOptions
                        }(options, isCompactMode, canvas.height, canvas.height / 2 - _ceil(options.width / 2)));
                        axis.validate();
                        axis.setBusinessRange(businessRange, true);
                        if (void 0 !== seriesDataSource && seriesDataSource.isShowChart()) {
                            axis.setMarginOptions(seriesDataSource.getMarginOptions(canvas))
                        }
                        axis.draw(canvas);
                        axis.shift({
                            left: 0,
                            bottom: -canvas.height / 2 + canvas.top
                        });
                        if (axis.getMarkerTrackers()) {
                            ! function(scaleOptions, markerTrackers, setSelectedRange) {
                                (0, _iterator.each)(markerTrackers, (function(_, value) {
                                    value.on("dxpointerdown", onPointerDown)
                                }));

                                function onPointerDown(e) {
                                    const range = e.target.range;
                                    const minRange = scaleOptions.minRange ? _date.default.addInterval(range.startValue, scaleOptions.minRange) : void 0;
                                    const maxRange = scaleOptions.maxRange ? _date.default.addInterval(range.startValue, scaleOptions.maxRange) : void 0;
                                    if (!(minRange && minRange > range.endValue || maxRange && maxRange < range.endValue)) {
                                        setSelectedRange(range, e)
                                    }
                                }
                            }(options, axis.getMarkerTrackers(), this._updateSelectedRangeCallback)
                        }
                        axis.drawScaleBreaks({
                            start: canvas.top,
                            end: canvas.top + canvas.height
                        })
                    },
                    visualRange: function() {},
                    getViewport: function() {
                        return {}
                    },
                    allScaleSelected(value) {
                        const {
                            startValue: startValue,
                            endValue: endValue
                        } = this._axis.visualRange();
                        return {
                            startValue: value[0].valueOf() === startValue.valueOf(),
                            endValue: value[1].valueOf() === endValue.valueOf()
                        }
                    },
                    getOptions() {
                        return this._axis.getOptions() || {}
                    }
                };
                (0, _iterator.each)(_base_axis.Axis.prototype, field => {
                    if ("constructor" !== field && "_" !== field[0] && (0, _type2.isFunction)(_base_axis.Axis.prototype[field]) && !(field in AxisWrapper.prototype)) {
                        AxisWrapper.prototype[field] = function() {
                            const axis = this._axis;
                            return axis[field].apply(axis, arguments)
                        }
                    }
                });
                (0, _component_registrator.default)("dxRangeSelector", dxRangeSelector);
                var _default = dxRangeSelector;
                exports.default = _default;
                dxRangeSelector.addPlugin(_export.plugin);
                dxRangeSelector.addPlugin(_title.plugin);
                dxRangeSelector.addPlugin(_loading_indicator.plugin);
                dxRangeSelector.addPlugin(_data_source.plugin);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        25104:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/range_selector/range_view.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.RangeView = RangeView;

                function merge(a, b) {
                    return void 0 !== a ? a : b
                }

                function RangeView(params) {
                    this._params = params;
                    this._clipRect = params.renderer.clipRect();
                    params.root.attr({
                        "clip-path": this._clipRect.id
                    })
                }
                RangeView.prototype = {
                    constructor: RangeView,
                    update: function(backgroundOption, backgroundTheme, canvas, isCompactMode, isAnimationEnabled, seriesDataSource) {
                        const renderer = this._params.renderer;
                        const root = this._params.root;
                        const canvasWidth = canvas.width - canvas.left;
                        let seriesGroup;
                        backgroundOption = backgroundOption || {};
                        root.clear();
                        this._clipRect.attr({
                            x: canvas.left,
                            y: canvas.top,
                            width: canvasWidth,
                            height: canvas.height
                        });
                        if (!isCompactMode) {
                            if (merge(backgroundOption.visible, backgroundTheme.visible)) {
                                if (backgroundOption.color) {
                                    renderer.rect(canvas.left, canvas.top, canvasWidth + 1, canvas.height).attr({
                                        fill: merge(backgroundOption.color, backgroundTheme.color),
                                        class: "dx-range-selector-background"
                                    }).append(root)
                                }
                                if (backgroundOption.image && backgroundOption.image.url) {
                                    renderer.image(canvas.left, canvas.top, canvasWidth + 1, canvas.height, backgroundOption.image.url, merge(backgroundOption.image.location, backgroundTheme.image.location)).append(root)
                                }
                            }
                            if (seriesDataSource && seriesDataSource.isShowChart()) {
                                seriesGroup = renderer.g().attr({
                                    class: "dxrs-series-group"
                                }).append(root);
                                ! function(root, seriesDataSource, canvas, isAnimationEnabled) {
                                    const seriesList = seriesDataSource.getSeries();
                                    if (!seriesList.length) {
                                        return
                                    }
                                    const valueAxis = seriesList[0].getValueAxis();
                                    valueAxis.updateCanvas({
                                        top: canvas.top,
                                        bottom: 0,
                                        height: canvas.height + canvas.top
                                    });
                                    seriesDataSource.adjustSeriesDimensions();
                                    const valueRange = seriesDataSource.getBoundRange().val;
                                    valueRange.sortCategories(valueAxis.getCategoriesSorter());
                                    valueAxis.setBusinessRange(valueRange);
                                    seriesList.forEach(series => {
                                        series._extGroups.seriesGroup = series._extGroups.labelsGroup = root;
                                        series.draw(isAnimationEnabled)
                                    })
                                }(seriesGroup, seriesDataSource, canvas, isAnimationEnabled)
                            }
                        }
                    }
                }
            },
        79302:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/range_selector/series_data_source.js ***!
              \**************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.SeriesDataSource = void 0;
                var _base_series = __webpack_require__( /*! ../series/base_series */ 54932);
                var _series_family = __webpack_require__( /*! ../core/series_family */ 1939);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _range = __webpack_require__( /*! ../translators/range */ 21177);
                var _data_validator = __webpack_require__( /*! ../components/data_validator */ 45865);
                var _chart_theme_manager = __webpack_require__( /*! ../components/chart_theme_manager */ 99327);
                const SeriesDataSource = function(options) {
                    const themeManager = this._themeManager = (chartOptions = options.chart, new _chart_theme_manager.ThemeManager({
                        options: chartOptions,
                        themeSection: "rangeSelector.chart",
                        fontFields: ["commonSeriesSettings.label.font"]
                    }));
                    var chartOptions;
                    themeManager.setTheme(options.chart.theme);
                    const topIndent = themeManager.getOptions("topIndent");
                    const bottomIndent = themeManager.getOptions("bottomIndent");
                    this._indent = {
                        top: topIndent >= 0 && topIndent < 1 ? topIndent : 0,
                        bottom: bottomIndent >= 0 && bottomIndent < 1 ? bottomIndent : 0
                    };
                    this._valueAxis = themeManager.getOptions("valueAxisRangeSelector") || {};
                    this._hideChart = false;
                    this._series = this._calculateSeries(options);
                    this._seriesFamilies = []
                };
                exports.SeriesDataSource = SeriesDataSource;
                SeriesDataSource.prototype = {
                    constructor: SeriesDataSource,
                    _calculateSeries: function(options) {
                        const that = this;
                        const series = [];
                        let particularSeriesOptions;
                        let seriesTheme;
                        const data = options.dataSource || [];
                        let parsedData;
                        const chartThemeManager = that._themeManager;
                        const seriesTemplate = chartThemeManager.getOptions("seriesTemplate");
                        let allSeriesOptions = seriesTemplate ? (0, _utils.processSeriesTemplate)(seriesTemplate, data) : options.chart.series;
                        let dataSourceField;
                        const valueAxis = that._valueAxis;
                        let i;
                        let newSeries;
                        let groupsData;
                        if (options.dataSource && !allSeriesOptions) {
                            dataSourceField = options.dataSourceField || "arg";
                            allSeriesOptions = {
                                argumentField: dataSourceField,
                                valueField: dataSourceField
                            };
                            that._hideChart = true
                        }
                        allSeriesOptions = Array.isArray(allSeriesOptions) ? allSeriesOptions : allSeriesOptions ? [allSeriesOptions] : [];
                        for (i = 0; i < allSeriesOptions.length; i++) {
                            particularSeriesOptions = (0, _extend.extend)(true, {}, allSeriesOptions[i]);
                            particularSeriesOptions.rotated = false;
                            seriesTheme = chartThemeManager.getOptions("series", particularSeriesOptions, allSeriesOptions.length);
                            seriesTheme.argumentField = seriesTheme.argumentField || options.dataSourceField;
                            if (!seriesTheme.name) {
                                seriesTheme.name = "Series " + (i + 1).toString()
                            }
                            if (data && data.length > 0) {
                                newSeries = new _base_series.Series({
                                    renderer: options.renderer,
                                    argumentAxis: options.argumentAxis,
                                    valueAxis: options.valueAxis,
                                    incidentOccurred: options.incidentOccurred
                                }, seriesTheme);
                                series.push(newSeries)
                            }
                        }
                        if (series.length) {
                            groupsData = {
                                groups: [{
                                    series: series,
                                    valueAxis: options.valueAxis,
                                    valueOptions: {
                                        type: valueAxis.type,
                                        valueType: dataSourceField ? options.valueType : valueAxis.valueType
                                    }
                                }],
                                argumentOptions: {
                                    categories: options.categories,
                                    argumentType: options.valueType,
                                    type: options.axisType
                                }
                            };
                            parsedData = (0, _data_validator.validateData)(data, groupsData, options.incidentOccurred, chartThemeManager.getOptions("dataPrepareSettings"));
                            that.argCategories = groupsData.categories;
                            for (i = 0; i < series.length; i++) {
                                series[i].updateData(parsedData[series[i].getArgumentField()])
                            }
                        }
                        return series
                    },
                    createPoints() {
                        if (0 === this._series.length) {
                            return
                        }
                        const series = this._series;
                        const viewport = new _range.Range;
                        const axis = series[0].getArgumentAxis();
                        const themeManager = this._themeManager;
                        const negativesAsZeroes = themeManager.getOptions("negativesAsZeroes");
                        const negativesAsZeros = themeManager.getOptions("negativesAsZeros");
                        series.forEach((function(s) {
                            viewport.addRange(s.getArgumentRange())
                        }));
                        axis.getTranslator().updateBusinessRange(viewport);
                        series.forEach((function(s) {
                            s.createPoints()
                        }));
                        this._seriesFamilies = function(series, minBubbleSize, maxBubbleSize, barOptions, negativesAsZeroes) {
                            const families = [];
                            const types = [];
                            (0, _iterator.each)(series, (function(i, item) {
                                if (!types.includes(item.type)) {
                                    types.push(item.type)
                                }
                            }));
                            (0, _iterator.each)(types, (function(_, type) {
                                const family = new _series_family.SeriesFamily({
                                    type: type,
                                    minBubbleSize: minBubbleSize,
                                    maxBubbleSize: maxBubbleSize,
                                    barGroupPadding: barOptions.barGroupPadding,
                                    barGroupWidth: barOptions.barGroupWidth,
                                    negativesAsZeroes: negativesAsZeroes
                                });
                                family.add(series);
                                family.adjustSeriesValues();
                                families.push(family)
                            }));
                            return families
                        }(series, themeManager.getOptions("minBubbleSize"), themeManager.getOptions("maxBubbleSize"), {
                            barGroupPadding: themeManager.getOptions("barGroupPadding"),
                            barGroupWidth: themeManager.getOptions("barGroupWidth")
                        }, (0, _type.isDefined)(negativesAsZeroes) ? negativesAsZeroes : negativesAsZeros)
                    },
                    adjustSeriesDimensions: function() {
                        (0, _iterator.each)(this._seriesFamilies, (function(_, family) {
                            family.adjustSeriesDimensions()
                        }))
                    },
                    getBoundRange: function() {
                        const that = this;
                        let rangeData;
                        const valueAxis = that._valueAxis;
                        const valRange = new _range.Range({
                            min: valueAxis.min,
                            minVisible: valueAxis.min,
                            max: valueAxis.max,
                            maxVisible: valueAxis.max,
                            axisType: valueAxis.type,
                            base: valueAxis.logarithmBase
                        });
                        const argRange = new _range.Range({});
                        let rangeYSize;
                        let rangeVisibleSizeY;
                        let minIndent;
                        let maxIndent;
                        (0, _iterator.each)(that._series, (function(_, series) {
                            rangeData = series.getRangeData();
                            valRange.addRange(rangeData.val);
                            argRange.addRange(rangeData.arg)
                        }));
                        if (!valRange.isEmpty() && !argRange.isEmpty()) {
                            minIndent = valueAxis.inverted ? that._indent.top : that._indent.bottom;
                            maxIndent = valueAxis.inverted ? that._indent.bottom : that._indent.top;
                            rangeYSize = valRange.max - valRange.min;
                            rangeVisibleSizeY = ((0, _type.isNumeric)(valRange.maxVisible) ? valRange.maxVisible : valRange.max) - ((0, _type.isNumeric)(valRange.minVisible) ? valRange.minVisible : valRange.min);
                            if ((0, _type.isDate)(valRange.min)) {
                                valRange.min = new Date(valRange.min.valueOf() - rangeYSize * minIndent)
                            } else {
                                valRange.min -= rangeYSize * minIndent
                            }
                            if ((0, _type.isDate)(valRange.max)) {
                                valRange.max = new Date(valRange.max.valueOf() + rangeYSize * maxIndent)
                            } else {
                                valRange.max += rangeYSize * maxIndent
                            }
                            if ((0, _type.isNumeric)(rangeVisibleSizeY)) {
                                valRange.maxVisible = valRange.maxVisible ? valRange.maxVisible + rangeVisibleSizeY * maxIndent : void 0;
                                valRange.minVisible = valRange.minVisible ? valRange.minVisible - rangeVisibleSizeY * minIndent : void 0
                            }
                            valRange.invert = valueAxis.inverted
                        }
                        return {
                            arg: argRange,
                            val: valRange
                        }
                    },
                    getMarginOptions: function(canvas) {
                        const bubbleSize = Math.min(canvas.width, canvas.height) * this._themeManager.getOptions("maxBubbleSize");
                        return this._series.reduce((function(marginOptions, series) {
                            const seriesOptions = series.getMarginOptions();
                            if (true === seriesOptions.processBubbleSize) {
                                seriesOptions.size = bubbleSize
                            }
                            return (0, _utils.mergeMarginOptions)(marginOptions, seriesOptions)
                        }), {})
                    },
                    getSeries: function() {
                        return this._series
                    },
                    isEmpty: function() {
                        return 0 === this.getSeries().length
                    },
                    isShowChart: function() {
                        return !this._hideChart
                    },
                    getCalculatedValueType: function() {
                        const series = this._series[0];
                        return null === series || void 0 === series ? void 0 : series.argumentType
                    },
                    getThemeManager: function() {
                        return this._themeManager
                    }
                }
            },
        48942:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/range_selector/slider.js ***!
              \**************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _common = __webpack_require__( /*! ./common */ 11378);
                var _slider_marker = (obj = __webpack_require__( /*! ./slider_marker */ 79090), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _support = __webpack_require__( /*! ../../core/utils/support */ 60137);
                const animationSettings = _common.utils.animationSettings;

                function Slider(params, index) {
                    this._translator = params.translator;
                    this._sliderGroup = params.renderer.g().attr({
                        class: "slider"
                    }).append(params.root);
                    this._line = params.renderer.path(null, "line").append(this._sliderGroup);
                    this._marker = new _slider_marker.default(params.renderer, this._sliderGroup, 1 === index);
                    this._tracker = params.renderer.rect().attr({
                        class: "slider-tracker",
                        fill: "#000000",
                        opacity: 1e-4
                    }).css({
                        cursor: "w-resize"
                    }).append(params.trackersGroup)
                }
                Slider.prototype = {
                    constructor: Slider,
                    cancelAnimation: function() {
                        this._sliderGroup.stopAnimation();
                        this._tracker.stopAnimation()
                    },
                    applyPosition: function(isAnimated) {
                        const slider = this._sliderGroup;
                        const tracker = this._tracker;
                        const attrs = {
                            translateX: this._position
                        };
                        this._marker.setPosition(this._position);
                        if (isAnimated) {
                            slider.animate(attrs, animationSettings);
                            tracker.animate(attrs, animationSettings)
                        } else {
                            slider.attr(attrs);
                            tracker.attr(attrs)
                        }
                    },
                    _setValid: function(isValid) {
                        this._marker.setValid(isValid);
                        this._line.attr({
                            stroke: this._colors[Number(isValid)]
                        })
                    },
                    _setText: function(text) {
                        this._marker.setText(text)
                    },
                    update: function(verticalRange, sliderHandleOptions, sliderMarkerOptions) {
                        this._formatOptions = {
                            format: sliderMarkerOptions.format,
                            customizeText: sliderMarkerOptions.customizeText
                        };
                        this._marker.applyOptions(sliderMarkerOptions, this._translator.getScreenRange());
                        this._colors = [sliderMarkerOptions.invalidRangeColor, sliderHandleOptions.color];
                        this._sliderGroup.attr({
                            translateY: verticalRange[0]
                        });
                        this._line.attr({
                            "stroke-width": sliderHandleOptions.width,
                            stroke: sliderHandleOptions.color,
                            "stroke-opacity": sliderHandleOptions.opacity,
                            sharp: "h",
                            points: [0, 0, 0, verticalRange[1] - verticalRange[0]]
                        });
                        const trackerWidth = (sliderHandleWidth = sliderHandleOptions.width, _support.touchEvents || _support.pointerEvents ? 20 : 8 < sliderHandleWidth ? sliderHandleWidth : 8);
                        var sliderHandleWidth;
                        this._tracker.attr({
                            x: -trackerWidth / 2,
                            y: 0,
                            width: trackerWidth,
                            height: verticalRange[1] - verticalRange[0],
                            translateY: verticalRange[0]
                        })
                    },
                    toForeground: function() {
                        this._sliderGroup.toForeground()
                    },
                    getSliderTracker: function() {
                        return this._tracker
                    },
                    getPosition: function() {
                        return this._position
                    },
                    setDisplayValue: function(value) {
                        this._value = value;
                        this._setText((0, _common.formatValue)(value, this._formatOptions))
                    },
                    setOverlapped: function(isOverlapped) {
                        this._marker.setOverlapped(isOverlapped)
                    },
                    getValue: function() {
                        return this._value
                    },
                    on: function(event, handler) {
                        this._tracker.on(event, handler);
                        this._marker.getTracker().on(event, handler)
                    },
                    getCloudBorder: function() {
                        return this._marker.getBorderPosition()
                    },
                    dispose: function() {
                        this._marker.dispose()
                    }
                };
                var _default = Slider;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        79090:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/range_selector/slider_marker.js ***!
              \*********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _common = __webpack_require__( /*! ./common */ 11378);
                const POINTER_SIZE = _common.consts.pointerSize;

                function SliderMarker(renderer, root, isLeftPointer) {
                    this._isLeftPointer = isLeftPointer;
                    this._isOverlapped = false;
                    this._group = renderer.g().attr({
                        class: "slider-marker"
                    }).append(root);
                    this._area = renderer.path(null, "area").append(this._group);
                    this._label = renderer.text().attr({
                        align: "left"
                    }).append(this._group);
                    this._tracker = renderer.rect().attr({
                        class: "slider-marker-tracker",
                        fill: "#000000",
                        opacity: 1e-4
                    }).css({
                        cursor: "pointer"
                    }).append(this._group);
                    this._border = renderer.rect(0, 0, 1, 0)
                }
                SliderMarker.prototype = {
                    constructor: SliderMarker,
                    _getRectSize: function(textSize) {
                        return {
                            width: Math.round(2 * this._paddingLeftRight + textSize.width),
                            height: Math.round(2 * this._paddingTopBottom + textSize.height)
                        }
                    },
                    _getTextSize: function() {
                        const textSize = this._label.getBBox();
                        if (!this._textHeight && isFinite(textSize.height)) {
                            this._textHeight = textSize.height
                        }
                        return {
                            width: textSize.width,
                            height: this._textHeight,
                            y: textSize.y
                        }
                    },
                    _getAreaPointsInfo: function(textSize) {
                        const that = this;
                        const rectSize = that._getRectSize(textSize);
                        const rectWidth = rectSize.width;
                        const rectHeight = rectSize.height;
                        let rectLeftBorder = -rectWidth;
                        let rectRightBorder = 0;
                        let pointerRightPoint = POINTER_SIZE;
                        let pointerCenterPoint = 0;
                        let pointerLeftPoint = -POINTER_SIZE;
                        const position = that._position;
                        const isLeft = that._isLeftPointer;
                        const correctCloudBorders = function() {
                            rectLeftBorder++;
                            rectRightBorder++;
                            pointerRightPoint++;
                            pointerCenterPoint++;
                            pointerLeftPoint++
                        };
                        const checkPointerBorders = function() {
                            if (pointerRightPoint > rectRightBorder) {
                                pointerRightPoint = rectRightBorder
                            } else if (pointerLeftPoint < rectLeftBorder) {
                                pointerLeftPoint = rectLeftBorder
                            }
                            isLeft && correctCloudBorders()
                        };
                        let borderPosition = position;
                        if (isLeft) {
                            if (position > that._range[1] - rectWidth) {
                                rectRightBorder = -position + that._range[1];
                                rectLeftBorder = rectRightBorder - rectWidth;
                                checkPointerBorders();
                                borderPosition += rectLeftBorder
                            } else {
                                rectLeftBorder = pointerLeftPoint = 0;
                                rectRightBorder = rectWidth
                            }
                        } else if (position - that._range[0] < rectWidth) {
                            rectLeftBorder = -(position - that._range[0]);
                            rectRightBorder = rectLeftBorder + rectWidth;
                            checkPointerBorders();
                            borderPosition += rectRightBorder
                        } else {
                            pointerRightPoint = 0;
                            correctCloudBorders()
                        }
                        that._borderPosition = borderPosition;
                        return {
                            offset: rectLeftBorder,
                            isCut: (!isLeft || pointerCenterPoint !== pointerLeftPoint) && (isLeft || pointerCenterPoint !== pointerRightPoint),
                            points: [rectLeftBorder, 0, rectRightBorder, 0, rectRightBorder, rectHeight, pointerRightPoint, rectHeight, pointerCenterPoint, rectHeight + POINTER_SIZE, pointerLeftPoint, rectHeight, rectLeftBorder, rectHeight]
                        }
                    },
                    _update: function() {
                        const that = this;
                        let textSize;
                        clearTimeout(that._timeout);
                        that._label.attr({
                            text: that._text || ""
                        });
                        const currentTextSize = that._getTextSize();
                        const rectSize = that._getRectSize(currentTextSize);
                        textSize = that._textSize || currentTextSize;
                        textSize = that._textSize = currentTextSize.width > textSize.width || currentTextSize.height > textSize.height ? currentTextSize : textSize;
                        that._timeout = setTimeout((function() {
                            updateSliderMarker(currentTextSize, rectSize);
                            that._textSize = currentTextSize
                        }), 75);

                        function updateSliderMarker(size, rectSize) {
                            rectSize = rectSize || that._getRectSize(size);
                            that._group.attr({
                                translateY: -(rectSize.height + POINTER_SIZE)
                            });
                            const pointsData = that._getAreaPointsInfo(size);
                            const points = pointsData.points;
                            const offset = pointsData.offset;
                            that._area.attr({
                                points: points
                            });
                            that._border.attr({
                                x: that._isLeftPointer ? points[0] - 1 : points[2],
                                height: pointsData.isCut ? rectSize.height : rectSize.height + POINTER_SIZE
                            });
                            that._tracker.attr({
                                translateX: offset,
                                width: rectSize.width,
                                height: rectSize.height + POINTER_SIZE
                            });
                            that._label.attr({
                                translateX: that._paddingLeftRight + offset,
                                translateY: rectSize.height / 2 - (size.y + size.height / 2)
                            })
                        }
                        updateSliderMarker(textSize)
                    },
                    setText: function(value) {
                        this._text = value
                    },
                    setPosition: function(position) {
                        this._position = position;
                        this._update()
                    },
                    applyOptions: function(options, screenRange) {
                        this._range = screenRange;
                        this._paddingLeftRight = options.paddingLeftRight;
                        this._paddingTopBottom = options.paddingTopBottom;
                        this._textHeight = null;
                        this._colors = [options.invalidRangeColor, options.color];
                        this._area.attr({
                            fill: options.color
                        });
                        this._border.attr({
                            fill: options.borderColor
                        });
                        this._label.css((0, _utils.patchFontOptions)(options.font));
                        this._update()
                    },
                    getTracker: function() {
                        return this._tracker
                    },
                    setValid: function(isValid) {
                        this._area.attr({
                            fill: this._colors[Number(isValid)]
                        })
                    },
                    setColor: function(color) {
                        this._area.attr({
                            fill: color
                        })
                    },
                    dispose: function() {
                        clearTimeout(this._timeout)
                    },
                    setOverlapped: function(isOverlapped) {
                        const that = this;
                        if (that._isOverlapped !== isOverlapped) {
                            if (isOverlapped) {
                                that._border.append(that._group)
                            } else {
                                that._isOverlapped && that._border.remove()
                            }
                            that._isOverlapped = isOverlapped
                        }
                    },
                    getBorderPosition: function() {
                        return this._borderPosition
                    }
                };
                var _default = SliderMarker;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        56481:
            /*!**************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/range_selector/sliders_controller.js ***!
              \**************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.SlidersController = SlidersController;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _common2 = __webpack_require__( /*! ./common */ 11378);
                var _slider = (obj = __webpack_require__( /*! ./slider */ 48942), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _math = __webpack_require__( /*! ../../core/utils/math */ 60810);
                const animationSettings = _common2.utils.animationSettings;
                const emptySliderMarkerText = _common2.consts.emptySliderMarkerText;

                function buildRectPoints(left, top, right, bottom) {
                    return [left, top, right, top, right, bottom, left, bottom]
                }

                function isLess(a, b) {
                    return a < b
                }

                function isGreater(a, b) {
                    return a > b
                }

                function selectClosestValue(target, values) {
                    let start = 0;
                    let end = values ? values.length - 1 : 0;
                    let middle;
                    let val = target;
                    while (end - start > 1) {
                        middle = start + end >> 1;
                        val = values[middle];
                        if (val === target) {
                            return target
                        } else if (target < val) {
                            end = middle
                        } else {
                            start = middle
                        }
                    }
                    if (values) {
                        val = values[target - values[start] <= values[end] - target ? start : end]
                    }
                    return val
                }

                function dummyProcessSelectionChanged() {
                    this._lastSelectedRange = this.getSelectedRange();
                    delete this._processSelectionChanged
                }

                function SlidersController(params) {
                    const sliderParams = {
                        renderer: params.renderer,
                        root: params.root,
                        trackersGroup: params.trackersGroup,
                        translator: params.translator
                    };
                    this._params = params;
                    this._areaTracker = params.renderer.path(null, "area").attr({
                        class: "area-tracker",
                        fill: "#000000",
                        opacity: 1e-4
                    }).append(params.trackersGroup);
                    this._selectedAreaTracker = params.renderer.path(null, "area").attr({
                        class: "selected-area-tracker",
                        fill: "#000000",
                        opacity: 1e-4
                    }).append(params.trackersGroup);
                    this._shutter = params.renderer.path(null, "area").append(params.root);
                    this._sliders = [new _slider.default(sliderParams, 0), new _slider.default(sliderParams, 1)];
                    this._processSelectionChanged = dummyProcessSelectionChanged
                }
                SlidersController.prototype = {
                    constructor: SlidersController,
                    dispose: function() {
                        this._sliders[0].dispose();
                        this._sliders[1].dispose()
                    },
                    getTrackerTargets: function() {
                        return {
                            area: this._areaTracker,
                            selectedArea: this._selectedAreaTracker,
                            sliders: this._sliders
                        }
                    },
                    _processSelectionChanged: function(e) {
                        const that = this;
                        const selectedRange = that.getSelectedRange();
                        if (!(0, _utils.rangesAreEqual)(selectedRange, that._lastSelectedRange)) {
                            that._params.updateSelectedRange(selectedRange, that._lastSelectedRange, e);
                            that._lastSelectedRange = selectedRange
                        }
                    },
                    update: function(verticalRange, behavior, isCompactMode, sliderHandleOptions, sliderMarkerOptions, shutterOptions, rangeBounds, fullTicks, selectedRangeColor) {
                        const screenRange = this._params.translator.getScreenRange();
                        this._verticalRange = verticalRange;
                        this._minRange = rangeBounds.minRange;
                        this._maxRange = rangeBounds.maxRange;
                        this._animationEnabled = behavior.animationEnabled && this._params.renderer.animationEnabled();
                        this._allowSlidersSwap = behavior.allowSlidersSwap;
                        this._sliders[0].update(verticalRange, sliderHandleOptions, sliderMarkerOptions);
                        this._sliders[1].update(verticalRange, sliderHandleOptions, sliderMarkerOptions);
                        this._sliders[0]._position = this._sliders[1]._position = screenRange[0];
                        this._values = !this._params.translator.isValueProlonged && behavior.snapToTicks ? fullTicks : null;
                        this._areaTracker.attr({
                            points: buildRectPoints(screenRange[0], verticalRange[0], screenRange[1], verticalRange[1])
                        });
                        this._isCompactMode = isCompactMode;
                        this._shutterOffset = sliderHandleOptions.width / 2;
                        this._updateSelectedView(shutterOptions, selectedRangeColor);
                        this._isOnMoving = "onhandlemove" === (0, _utils.normalizeEnum)(behavior.valueChangeMode) || "onmoving" === (0, _utils.normalizeEnum)(behavior.callValueChanged);
                        this._updateSelectedRange();
                        this._applyTotalPosition(false)
                    },
                    _updateSelectedView: function(shutterOptions, selectedRangeColor) {
                        const settings = {
                            fill: null,
                            "fill-opacity": null,
                            stroke: null,
                            "stroke-width": null
                        };
                        if (this._isCompactMode) {
                            settings.stroke = selectedRangeColor;
                            settings["stroke-width"] = 3;
                            settings.sharp = "v"
                        } else {
                            settings.fill = shutterOptions.color;
                            settings["fill-opacity"] = shutterOptions.opacity
                        }
                        this._shutter.attr(settings)
                    },
                    _updateSelectedRange: function() {
                        const that = this;
                        const sliders = that._sliders;
                        sliders[0].cancelAnimation();
                        sliders[1].cancelAnimation();
                        that._shutter.stopAnimation();
                        if (that._params.translator.getBusinessRange().isEmpty()) {
                            sliders[0]._setText(emptySliderMarkerText);
                            sliders[1]._setText(emptySliderMarkerText);
                            sliders[0]._value = sliders[1]._value = void 0;
                            sliders[0]._position = that._params.translator.getScreenRange()[0];
                            sliders[1]._position = that._params.translator.getScreenRange()[1];
                            that._applyTotalPosition(false);
                            ! function(controller) {
                                controller.setSelectedRange = _common.noop;
                                if (controller._processSelectionChanged === dummyProcessSelectionChanged) {
                                    controller._processSelectionChanged()
                                }
                            }(that)
                        } else {
                            controller = that, void delete controller.setSelectedRange
                        }
                        var controller
                    },
                    _applyTotalPosition: function(isAnimated) {
                        const sliders = this._sliders;
                        isAnimated = this._animationEnabled && isAnimated;
                        sliders[0].applyPosition(isAnimated);
                        sliders[1].applyPosition(isAnimated);
                        const areOverlapped = sliders[0].getCloudBorder() > sliders[1].getCloudBorder();
                        sliders[0].setOverlapped(areOverlapped);
                        sliders[1].setOverlapped(areOverlapped);
                        this._applyAreaTrackersPosition();
                        this._applySelectedRangePosition(isAnimated)
                    },
                    _applyAreaTrackersPosition: function() {
                        const position1 = this._sliders[0].getPosition();
                        const position2 = this._sliders[1].getPosition();
                        this._selectedAreaTracker.attr({
                            points: buildRectPoints(position1, this._verticalRange[0], position2, this._verticalRange[1])
                        }).css({
                            cursor: Math.abs(this._params.translator.getScreenRange()[1] - this._params.translator.getScreenRange()[0] - position2 + position1) < .001 ? "default" : "pointer"
                        })
                    },
                    _applySelectedRangePosition: function(isAnimated) {
                        const that = this;
                        const verticalRange = that._verticalRange;
                        const pos1 = that._sliders[0].getPosition();
                        const pos2 = that._sliders[1].getPosition();
                        let screenRange;
                        let points;
                        if (that._isCompactMode) {
                            points = [pos1 + Math.ceil(that._shutterOffset), (verticalRange[0] + verticalRange[1]) / 2, pos2 - Math.floor(that._shutterOffset), (verticalRange[0] + verticalRange[1]) / 2]
                        } else {
                            screenRange = that._params.axis.getVisibleArea();
                            points = [buildRectPoints(screenRange[0], verticalRange[0], Math.max(pos1 - Math.floor(that._shutterOffset), screenRange[0]), verticalRange[1]), buildRectPoints(screenRange[1], verticalRange[0], Math.min(pos2 + Math.ceil(that._shutterOffset), screenRange[1]), verticalRange[1])]
                        }
                        if (isAnimated) {
                            that._shutter.animate({
                                points: points
                            }, animationSettings)
                        } else {
                            that._shutter.attr({
                                points: points
                            })
                        }
                    },
                    getSelectedRange: function() {
                        return {
                            startValue: this._sliders[0].getValue(),
                            endValue: this._sliders[1].getValue()
                        }
                    },
                    setSelectedRange: function(visualRange, e) {
                        visualRange = visualRange || {};
                        const translator = this._params.translator;
                        const businessRange = translator.getBusinessRange();
                        const compare = "discrete" === businessRange.axisType ? function(a, b) {
                            return a < b
                        } : function(a, b) {
                            return a <= b
                        };
                        let {
                            startValue: startValue,
                            endValue: endValue
                        } = (0, _utils.adjustVisualRange)({
                            dataType: businessRange.dataType,
                            axisType: businessRange.axisType,
                            base: businessRange.base
                        }, {
                            startValue: translator.isValid(visualRange.startValue) ? translator.getCorrectValue(visualRange.startValue, 1) : void 0,
                            endValue: translator.isValid(visualRange.endValue) ? translator.getCorrectValue(visualRange.endValue, -1) : void 0,
                            length: visualRange.length
                        }, {
                            min: businessRange.minVisible,
                            max: businessRange.maxVisible,
                            categories: businessRange.categories
                        });
                        startValue = (0, _type.isNumeric)(startValue) ? (0, _math.adjust)(startValue) : startValue;
                        endValue = (0, _type.isNumeric)(endValue) ? (0, _math.adjust)(endValue) : endValue;
                        const values = compare(translator.to(startValue, -1), translator.to(endValue, 1)) ? [startValue, endValue] : [endValue, startValue];
                        this._sliders[0].setDisplayValue(values[0]);
                        this._sliders[1].setDisplayValue(values[1]);
                        this._sliders[0]._position = translator.to(values[0], -1);
                        this._sliders[1]._position = translator.to(values[1], 1);
                        this._applyTotalPosition(true);
                        this._processSelectionChanged(e)
                    },
                    beginSelectedAreaMoving: function(initialPosition) {
                        const that = this;
                        const sliders = that._sliders;
                        const offset = (sliders[0].getPosition() + sliders[1].getPosition()) / 2 - initialPosition;
                        let currentPosition = initialPosition;
                        move.complete = function(e) {
                            that._dockSelectedArea(e)
                        };
                        return move;

                        function move(position, e) {
                            if (position !== currentPosition && position > currentPosition === position > (sliders[0].getPosition() + sliders[1].getPosition()) / 2 - offset) {
                                that._moveSelectedArea(position + offset, false, e)
                            }
                            currentPosition = position
                        }
                    },
                    _dockSelectedArea: function(e) {
                        const translator = this._params.translator;
                        const sliders = this._sliders;
                        sliders[0]._position = translator.to(sliders[0].getValue(), -1);
                        sliders[1]._position = translator.to(sliders[1].getValue(), 1);
                        this._applyTotalPosition(true);
                        this._processSelectionChanged(e)
                    },
                    moveSelectedArea: function(screenPosition, e) {
                        this._moveSelectedArea(screenPosition, true, e);
                        this._dockSelectedArea(e)
                    },
                    _moveSelectedArea: function(screenPosition, isAnimated, e) {
                        const that = this;
                        const translator = that._params.translator;
                        const sliders = that._sliders;
                        const interval = sliders[1].getPosition() - sliders[0].getPosition();
                        let startPosition = screenPosition - interval / 2;
                        let endPosition = screenPosition + interval / 2;
                        if (startPosition < translator.getScreenRange()[0]) {
                            startPosition = translator.getScreenRange()[0];
                            endPosition = startPosition + interval
                        }
                        if (endPosition > translator.getScreenRange()[1]) {
                            endPosition = translator.getScreenRange()[1];
                            startPosition = endPosition - interval
                        }
                        const startValue = selectClosestValue(translator.from(startPosition, -1), that._values);
                        sliders[0].setDisplayValue(startValue);
                        sliders[1].setDisplayValue(selectClosestValue(translator.from(translator.to(startValue, -1) + interval, 1), that._values));
                        sliders[0]._position = startPosition;
                        sliders[1]._position = endPosition;
                        that._applyTotalPosition(isAnimated);
                        if (that._isOnMoving) {
                            that._processSelectionChanged(e)
                        }
                    },
                    placeSliderAndBeginMoving: function(firstPosition, secondPosition, e) {
                        const that = this;
                        const translator = that._params.translator;
                        const sliders = that._sliders;
                        const index = firstPosition < secondPosition ? 0 : 1;
                        const dir = index > 0 ? 1 : -1;
                        const compare = index > 0 ? isGreater : isLess;
                        const antiCompare = index > 0 ? isLess : isGreater;
                        let thresholdPosition;
                        const positions = [];
                        const values = [];
                        values[index] = translator.from(firstPosition, dir);
                        values[1 - index] = translator.from(secondPosition, -dir);
                        positions[1 - index] = secondPosition;
                        if (translator.isValueProlonged) {
                            if (compare(firstPosition, translator.to(values[index], dir))) {
                                values[index] = translator.from(firstPosition, -dir)
                            }
                            if (compare(secondPosition, translator.to(values[index], -dir))) {
                                values[1 - index] = values[index]
                            }
                        }
                        if (that._minRange) {
                            thresholdPosition = translator.to(translator.add(selectClosestValue(values[index], that._values), that._minRange, -dir), -dir);
                            if (compare(secondPosition, thresholdPosition)) {
                                values[1 - index] = translator.add(values[index], that._minRange, -dir)
                            }
                            thresholdPosition = translator.to(translator.add(translator.getRange()[1 - index], that._minRange, dir), -dir);
                            if (antiCompare(firstPosition, thresholdPosition)) {
                                values[1 - index] = translator.getRange()[1 - index];
                                values[index] = translator.add(values[1 - index], that._minRange, dir);
                                positions[1 - index] = firstPosition
                            }
                        }
                        values[0] = selectClosestValue(values[0], that._values);
                        values[1] = selectClosestValue(values[1], that._values);
                        positions[index] = translator.to(values[index], dir);
                        sliders[0].setDisplayValue(values[0]);
                        sliders[1].setDisplayValue(values[1]);
                        sliders[0]._position = positions[0];
                        sliders[1]._position = positions[1];
                        that._applyTotalPosition(true);
                        if (that._isOnMoving) {
                            that._processSelectionChanged(e)
                        }
                        const handler = that.beginSliderMoving(1 - index, secondPosition);
                        sliders[1 - index]._sliderGroup.stopAnimation();
                        that._shutter.stopAnimation();
                        handler(secondPosition);
                        return handler
                    },
                    beginSliderMoving: function(initialIndex, initialPosition) {
                        const that = this;
                        const translator = that._params.translator;
                        const sliders = that._sliders;
                        const minPosition = translator.getScreenRange()[0];
                        const maxPosition = translator.getScreenRange()[1];
                        let index = initialIndex;
                        const staticPosition = sliders[1 - index].getPosition();
                        let currentPosition = initialPosition;
                        let dir = index > 0 ? 1 : -1;
                        let compareMin = index > 0 ? isLess : isGreater;
                        let compareMax = index > 0 ? isGreater : isLess;
                        let moveOffset = sliders[index].getPosition() - initialPosition;
                        let swapOffset = compareMin(sliders[index].getPosition(), initialPosition) ? -moveOffset : moveOffset;
                        move.complete = function(e) {
                            sliders[index]._setValid(true);
                            that._dockSelectedArea(e)
                        };
                        return move;

                        function move(position, e) {
                            let isValid;
                            let temp;
                            let pos;
                            let slider;
                            let value;
                            if (position !== currentPosition) {
                                if (compareMin(position + swapOffset, staticPosition)) {
                                    isValid = that._allowSlidersSwap;
                                    if (isValid && !translator.isValueProlonged && that._minRange) {
                                        isValid = translator.isValid(translator.add(sliders[1 - index].getValue(), that._minRange, -dir))
                                    }
                                    if (isValid) {
                                        that._changeMovingSlider(index);
                                        index = 1 - index;
                                        dir = -dir;
                                        temp = compareMin;
                                        compareMin = compareMax;
                                        compareMax = temp;
                                        moveOffset = -dir * Math.abs(moveOffset);
                                        swapOffset = -moveOffset
                                    }
                                }
                                if (compareMax(position + moveOffset, staticPosition)) {
                                    slider = sliders[index];
                                    value = sliders[1 - index].getValue();
                                    pos = Math.max(Math.min(position + moveOffset, maxPosition), minPosition);
                                    isValid = translator.isValueProlonged ? !compareMin(pos, translator.to(value, dir)) : true;
                                    let invalidStateValue;
                                    if (isValid && that._minRange) {
                                        isValid = !compareMin(pos, translator.to(translator.add(value, that._minRange, dir), dir));
                                        if (!isValid) {
                                            invalidStateValue = translator.add(value, that._minRange, dir)
                                        }
                                    }
                                    if (isValid && that._maxRange) {
                                        isValid = !compareMax(pos, translator.to(translator.add(value, that._maxRange, dir), dir));
                                        if (!isValid) {
                                            invalidStateValue = translator.add(value, that._maxRange, dir)
                                        }
                                    }
                                    slider._setValid(isValid);
                                    slider.setDisplayValue(isValid ? selectClosestValue(translator.from(pos, dir), that._values) : (0, _type.isDefined)(invalidStateValue) ? invalidStateValue : slider.getValue());
                                    slider._position = pos;
                                    that._applyTotalPosition(false);
                                    slider.toForeground();
                                    if (that._isOnMoving) {
                                        that._processSelectionChanged(e)
                                    }
                                }
                            }
                            currentPosition = position
                        }
                    },
                    _changeMovingSlider: function(index) {
                        const that = this;
                        const translator = that._params.translator;
                        const sliders = that._sliders;
                        const position = sliders[1 - index].getPosition();
                        const dir = index > 0 ? 1 : -1;
                        let newValue;
                        sliders[index].setDisplayValue(selectClosestValue(translator.from(position, dir), that._values));
                        newValue = translator.from(position, -dir);
                        if (translator.isValueProlonged) {
                            newValue = translator.from(position, dir)
                        } else if (that._minRange) {
                            newValue = translator.add(newValue, that._minRange, -dir)
                        }
                        sliders[1 - index].setDisplayValue(selectClosestValue(newValue, that._values));
                        sliders[index]._setValid(true);
                        sliders[index]._marker._update();
                        sliders[0]._position = sliders[1]._position = position
                    },
                    foregroundSlider: function(index) {
                        this._sliders[index].toForeground()
                    }
                }
            },
        43695:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/range_selector/tracker.js ***!
              \***************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Tracker = Tracker;
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../events/pointer */ 93786));
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _support = __webpack_require__( /*! ../../core/utils/support */ 60137);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const window = (0, _window.getWindow)();

                function isLeftButtonPressed(event) {
                    const e = event || window.event;
                    const originalEvent = e.originalEvent;
                    const touches = e.touches;
                    const pointerType = originalEvent ? originalEvent.pointerType : false;
                    const eventTouches = originalEvent ? originalEvent.touches : false;
                    const isMSPointerLeftClick = originalEvent && void 0 !== pointerType && (pointerType === (originalEvent.MSPOINTER_TYPE_TOUCH || "touch") || pointerType === (originalEvent.MSPOINTER_TYPE_MOUSE || "mouse") && 1 === originalEvent.buttons);
                    const isTouches = touches && touches.length > 0 || eventTouches && eventTouches.length > 0;
                    return 1 === e.which || isMSPointerLeftClick || isTouches
                }

                function isMultiTouches(event) {
                    const originalEvent = event.originalEvent;
                    const touches = event.touches;
                    const eventTouches = originalEvent && originalEvent.touches;
                    return touches && touches.length > 1 || eventTouches && eventTouches.length > 1 || null
                }

                function preventDefault(e) {
                    if (!isMultiTouches(e)) {
                        e.preventDefault()
                    }
                }

                function stopPropagationAndPreventDefault(e) {
                    if (!isMultiTouches(e)) {
                        e.stopPropagation();
                        e.preventDefault()
                    }
                }

                function isTouchEventArgs(e) {
                    return e && e.type && 0 === e.type.indexOf("touch")
                }

                function getEventPageX(event) {
                    const originalEvent = event.originalEvent;
                    let result = 0;
                    if (event.pageX) {
                        result = event.pageX
                    } else if (originalEvent && originalEvent.pageX) {
                        result = originalEvent.pageX
                    }
                    if (originalEvent && originalEvent.touches) {
                        if (originalEvent.touches.length > 0) {
                            result = originalEvent.touches[0].pageX
                        } else if (originalEvent.changedTouches.length > 0) {
                            result = originalEvent.changedTouches[0].pageX
                        }
                    }
                    return result
                }

                function initializeAreaEvents(controller, area, state, getRootOffsetLeft) {
                    let isTouchEvent;
                    let isActive = false;
                    let initialPosition;
                    let movingHandler = null;
                    const docEvents = {
                        [_pointer.default.move](e) {
                            let position;
                            let offset;
                            if (isTouchEvent !== isTouchEventArgs(e)) {
                                return
                            }
                            if (!isLeftButtonPressed(e)) {
                                cancel(e)
                            }
                            if (isActive) {
                                position = getEventPageX(e);
                                offset = getRootOffsetLeft();
                                if (movingHandler) {
                                    movingHandler(position - offset, e)
                                } else if (state.manualRangeSelectionEnabled && Math.abs(initialPosition - position) >= 10) {
                                    movingHandler = controller.placeSliderAndBeginMoving(initialPosition - offset, position - offset, e)
                                }
                            }
                        },
                        [_pointer.default.up](e) {
                            let position;
                            if (isActive) {
                                position = getEventPageX(e);
                                if (!movingHandler && state.moveSelectedRangeByClick && Math.abs(initialPosition - position) < 10) {
                                    controller.moveSelectedArea(position - getRootOffsetLeft(), e)
                                }
                                cancel(e)
                            }
                        }
                    };

                    function cancel(e) {
                        if (isActive) {
                            isActive = false;
                            if (movingHandler) {
                                movingHandler.complete(e);
                                movingHandler = null
                            }
                        }
                    }
                    area.on(_pointer.default.down, (function(e) {
                        if (!state.enabled || !isLeftButtonPressed(e) || isActive) {
                            return
                        }
                        isActive = true;
                        isTouchEvent = isTouchEventArgs(e);
                        initialPosition = getEventPageX(e)
                    }));
                    return docEvents
                }

                function initializeSelectedAreaEvents(controller, area, state, getRootOffsetLeft) {
                    let isTouchEvent;
                    let isActive = false;
                    let movingHandler = null;
                    const docEvents = {
                        [_pointer.default.move](e) {
                            if (isTouchEvent !== isTouchEventArgs(e)) {
                                return
                            }
                            if (!isLeftButtonPressed(e)) {
                                cancel(e)
                            }
                            if (isActive) {
                                preventDefault(e);
                                movingHandler(getEventPageX(e) - getRootOffsetLeft(), e)
                            }
                        },
                        [_pointer.default.up]: cancel
                    };

                    function cancel(e) {
                        if (isActive) {
                            isActive = false;
                            movingHandler.complete(e);
                            movingHandler = null
                        }
                    }
                    area.on(_pointer.default.down, (function(e) {
                        if (!state.enabled || !isLeftButtonPressed(e) || isActive) {
                            return
                        }
                        isActive = true;
                        isTouchEvent = isTouchEventArgs(e);
                        movingHandler = controller.beginSelectedAreaMoving(getEventPageX(e) - getRootOffsetLeft());
                        stopPropagationAndPreventDefault(e)
                    }));
                    return docEvents
                }

                function initializeSliderEvents(controller, sliders, state, getRootOffsetLeft) {
                    let isTouchEvent;
                    let isActive = false;
                    let movingHandler = null;
                    const docEvents = {
                        [_pointer.default.move](e) {
                            if (isTouchEvent !== isTouchEventArgs(e)) {
                                return
                            }
                            if (!isLeftButtonPressed(e)) {
                                cancel(e)
                            }
                            if (isActive) {
                                preventDefault(e);
                                movingHandler(getEventPageX(e) - getRootOffsetLeft(), e)
                            }
                        },
                        [_pointer.default.up]: cancel
                    };
                    (0, _iterator.each)(sliders, (function(i, slider) {
                        slider.on({
                            [_pointer.default.down](e) {
                                if (!state.enabled || !isLeftButtonPressed(e) || isActive) {
                                    return
                                }
                                isActive = true;
                                isTouchEvent = isTouchEventArgs(e);
                                movingHandler = controller.beginSliderMoving(i, getEventPageX(e) - getRootOffsetLeft());
                                stopPropagationAndPreventDefault(e)
                            },
                            [_pointer.default.move]() {
                                if (!movingHandler) {
                                    controller.foregroundSlider(i)
                                }
                            }
                        })
                    }));

                    function cancel(e) {
                        if (isActive) {
                            isActive = false;
                            movingHandler.complete(e);
                            movingHandler = null
                        }
                    }
                    return docEvents
                }

                function Tracker(params) {
                    const state = this._state = {};
                    const targets = params.controller.getTrackerTargets();
                    if (_support.pointerEvents) {
                        params.renderer.root.css({
                            msTouchAction: "pinch-zoom"
                        })
                    }
                    this._docEvents = [initializeSelectedAreaEvents(params.controller, targets.selectedArea, state, getRootOffsetLeft), initializeAreaEvents(params.controller, targets.area, state, getRootOffsetLeft), initializeSliderEvents(params.controller, targets.sliders, state, getRootOffsetLeft)];
                    (0, _iterator.each)(this._docEvents, (function(_, events) {
                        _events_engine.default.on(_dom_adapter.default.getDocument(), events)
                    }));

                    function getRootOffsetLeft() {
                        return params.renderer.getRootOffset().left
                    }
                }
                Tracker.prototype = {
                    constructor: Tracker,
                    dispose: function() {
                        (0, _iterator.each)(this._docEvents, (function(_, events) {
                            _events_engine.default.off(_dom_adapter.default.getDocument(), events)
                        }))
                    },
                    update: function(enabled, behavior) {
                        const state = this._state;
                        state.enabled = enabled;
                        state.moveSelectedRangeByClick = behavior.moveSelectedRangeByClick;
                        state.manualRangeSelectionEnabled = behavior.manualRangeSelectionEnabled
                    }
                }
            },
        34377:
            /*!***********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/sankey.js ***!
              \***********************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _sankey = (obj = __webpack_require__( /*! ./sankey/sankey */ 66422), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _tooltip = __webpack_require__( /*! ./sankey/tooltip */ 38516);
                var _export = __webpack_require__( /*! ./core/export */ 82454);
                var _title = __webpack_require__( /*! ./core/title */ 17384);
                var _tracker = __webpack_require__( /*! ./sankey/tracker */ 29823);
                var _tooltip2 = __webpack_require__( /*! ./core/tooltip */ 14371);
                var _loading_indicator = __webpack_require__( /*! ./core/loading_indicator */ 64758);
                _sankey.default.addPlugin(_export.plugin);
                _sankey.default.addPlugin(_title.plugin);
                _sankey.default.addPlugin(_tracker.plugin);
                _sankey.default.addPlugin(_loading_indicator.plugin);
                _sankey.default.addPlugin(_tooltip2.plugin);
                (0, _tooltip.setTooltipCustomOptions)(_sankey.default);
                var _default = _sankey.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        74878:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/sankey/constants.js ***!
              \*********************************************************************/
            function(__unused_webpack_module, exports) {
                exports.COLOR_MODE_TARGET = exports.COLOR_MODE_SOURCE = exports.COLOR_MODE_NONE = exports.COLOR_MODE_GRADIENT = void 0;
                exports.COLOR_MODE_GRADIENT = "gradient";
                exports.COLOR_MODE_SOURCE = "source";
                exports.COLOR_MODE_TARGET = "target";
                exports.COLOR_MODE_NONE = "none"
            },
        86547:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/sankey/data_validator.js ***!
              \**************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _graph = (obj = __webpack_require__( /*! ./graph */ 65538), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const validator = {
                    validate: function(data, incidentOccurred) {
                        let result = null;
                        if (this._hasCycle(data)) {
                            result = "E2006";
                            incidentOccurred("E2006")
                        }
                        return result
                    },
                    _hasCycle: function(data) {
                        return _graph.default.struct.hasCycle(data)
                    }
                };
                var _default = validator;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        65538:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/sankey/graph.js ***!
              \*****************************************************************/
            function(module, exports) {
                exports.default = void 0;
                const routines = {
                    maxOfArray: function(arr, callback) {
                        let m = 0;
                        let callback_function = v => v;
                        if (callback) {
                            callback_function = callback
                        }
                        for (let i = 0; i < arr.length; i++) {
                            if (callback_function(arr[i]) > m) {
                                m = callback_function(arr[i])
                            }
                        }
                        return m
                    }
                };
                const getVertices = function(links) {
                    const vert = [];
                    links.forEach(link => {
                        if (-1 === vert.indexOf(link[0])) {
                            vert.push(link[0])
                        }
                        if (-1 === vert.indexOf(link[1])) {
                            vert.push(link[1])
                        }
                    });
                    return vert
                };
                const getAdjacentVertices = function(links, vertex) {
                    const avert = [];
                    links.forEach(link => {
                        if (link[0] === vertex && -1 === avert.indexOf(link[1])) {
                            avert.push(link[1])
                        }
                    });
                    return avert
                };
                const getReverseAdjacentVertices = function(links, vertex) {
                    const avert = [];
                    links.forEach(link => {
                        if (link[1] === vertex && -1 === avert.indexOf(link[0])) {
                            avert.push(link[0])
                        }
                    });
                    return avert
                };
                const struct = {
                    _hasCycle: false,
                    _sortedList: [],
                    hasCycle: function(links) {
                        this._hasCycle = false;
                        this._sortedList = [];
                        const vertices = {};
                        const allVertices = getVertices(links);
                        allVertices.forEach(vertex => {
                            vertices[vertex] = {
                                color: "white"
                            }
                        });
                        allVertices.forEach(vertex => {
                            if ("white" === vertices[vertex].color) {
                                this._depthFirstSearch(links, vertices, vertex)
                            }
                        });
                        this._sortedList.reverse();
                        return this._hasCycle
                    },
                    _depthFirstSearch: function(links, vertices, vertex) {
                        vertices[vertex].color = "gray";
                        const averts = getAdjacentVertices(links, vertex);
                        for (let a = 0; a < averts.length; a++) {
                            if ("white" === vertices[averts[a]].color) {
                                this._depthFirstSearch(links, vertices, averts[a])
                            } else if ("gray" === vertices[averts[a]].color) {
                                this._hasCycle = true
                            }
                        }
                        this._sortedList.push({
                            name: vertex,
                            lp: null,
                            incoming: getReverseAdjacentVertices(links, vertex),
                            outgoing: getAdjacentVertices(links, vertex)
                        });
                        vertices[vertex].color = "black"
                    },
                    computeLongestPaths(links) {
                        const sortedVertices = this._sortedList;
                        sortedVertices.forEach(vertex => {
                            const averts = getReverseAdjacentVertices(links, vertex.name);
                            if (0 === averts.length) {
                                vertex.lp = 0
                            } else {
                                const maxLP = [];
                                averts.forEach(adjacentVertex => {
                                    maxLP.push(sortedVertices.filter(sv => sv.name === adjacentVertex)[0].lp)
                                });
                                vertex.lp = routines.maxOfArray(maxLP) + 1
                            }
                        });
                        return this._sortedList
                    }
                };
                var _default = {
                    struct: struct,
                    routines: routines,
                    getVertices: getVertices,
                    getAdjacentVertices: getAdjacentVertices,
                    getReverseAdjacentVertices: getReverseAdjacentVertices
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        68856:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/sankey/layout.js ***!
              \******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.layout = void 0;
                var _graph = _interopRequireDefault(__webpack_require__( /*! ./graph */ 65538));
                var _data_validator = _interopRequireDefault(__webpack_require__( /*! ./data_validator */ 86547));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const layout = {
                    _weightPerPixel: null,
                    _getCascadeIdx: function(nodeTitle, cascadesConfig) {
                        const nodeInfo = cascadesConfig.filter(c => c.name === nodeTitle)[0];
                        if (nodeInfo.outgoing.length > 0) {
                            return nodeInfo.lp
                        } else {
                            return _graph.default.routines.maxOfArray(cascadesConfig.map(c => c.lp))
                        }
                    },
                    _getInWeightForNode: function(nodeTitle, links) {
                        let w = 0;
                        links.forEach(link => {
                            if (link[1] === nodeTitle) {
                                w += link[2]
                            }
                        });
                        return w
                    },
                    _getOutWeightForNode: function(nodeTitle, links) {
                        let w = 0;
                        links.forEach(link => {
                            if (link[0] === nodeTitle) {
                                w += link[2]
                            }
                        });
                        return w
                    },
                    _computeCascades: function(links) {
                        const cascadesConfig = _graph.default.struct.computeLongestPaths(links);
                        const maxCascade = _graph.default.routines.maxOfArray(cascadesConfig.map(c => c.lp));
                        const cascades = [];
                        for (let i = 0; i < maxCascade + 1; i++) {
                            cascades.push({})
                        }
                        links.forEach(link => {
                            let cascade = cascades[this._getCascadeIdx(link[0], cascadesConfig)];
                            if (!cascade[link[0]]) {
                                cascade[link[0]] = {
                                    nodeTitle: link[0]
                                }
                            }
                            cascade = cascades[this._getCascadeIdx(link[1], cascadesConfig)];
                            if (!cascade[link[1]]) {
                                cascade[link[1]] = {
                                    nodeTitle: link[1]
                                }
                            }
                        });
                        cascades.forEach(cascade => {
                            Object.keys(cascade).forEach(nodeTitle => {
                                const node = cascade[nodeTitle];
                                node.inWeight = this._getInWeightForNode(node.nodeTitle, links);
                                node.outWeight = this._getOutWeightForNode(node.nodeTitle, links);
                                node.maxWeight = Math.max(node.inWeight, node.outWeight)
                            })
                        });
                        return cascades
                    },
                    _getWeightForCascade: function(cascades, cascadeIdx) {
                        let wMax = 0;
                        const cascade = cascades[cascadeIdx];
                        Object.keys(cascade).forEach(nodeTitle => {
                            wMax += Math.max(cascade[nodeTitle].inWeight, cascade[nodeTitle].outWeight)
                        });
                        return wMax
                    },
                    _getMaxWeightThroughCascades: function(cascades) {
                        const max = [];
                        cascades.forEach(cascade => {
                            let mW = 0;
                            Object.keys(cascade).forEach(nodeTitle => {
                                const node = cascade[nodeTitle];
                                mW += Math.max(node.inWeight, node.outWeight)
                            });
                            max.push(mW)
                        });
                        return _graph.default.routines.maxOfArray(max)
                    },
                    _computeNodes: function(cascades, options) {
                        const rects = [];
                        const maxWeight = this._getMaxWeightThroughCascades(cascades);
                        const maxNodeNum = _graph.default.routines.maxOfArray(cascades.map(nodesInCascade => Object.keys(nodesInCascade).length));
                        let nodePadding = options.nodePadding;
                        let heightAvailable = options.height - nodePadding * (maxNodeNum - 1);
                        if (heightAvailable < 0) {
                            nodePadding = 0;
                            heightAvailable = options.height - nodePadding * (maxNodeNum - 1)
                        }
                        this._weightPerPixel = maxWeight / heightAvailable;
                        let cascadeIdx = 0;
                        cascades.forEach(cascade => {
                            const cascadeRects = [];
                            let y = 0;
                            const nodesInCascade = Object.keys(cascade).length;
                            const cascadeHeight = this._getWeightForCascade(cascades, cascadeIdx) / this._weightPerPixel + nodePadding * (nodesInCascade - 1);
                            let cascadeAlign;
                            if (Array.isArray(options.nodeAlign)) {
                                cascadeAlign = cascadeIdx < options.nodeAlign.length ? options.nodeAlign[cascadeIdx] : "center"
                            } else {
                                cascadeAlign = options.nodeAlign
                            }
                            if ("bottom" === cascadeAlign) {
                                y = options.height - cascadeHeight
                            } else if ("center" === cascadeAlign) {
                                y = .5 * (options.height - cascadeHeight)
                            }
                            y = Math.round(y);
                            Object.keys(cascade).forEach(nodeTitle => {
                                cascade[nodeTitle].sort = this._sort && Object.prototype.hasOwnProperty.call(this._sort, nodeTitle) ? this._sort[nodeTitle] : 1
                            });
                            Object.keys(cascade).sort((a, b) => cascade[a].sort - cascade[b].sort).forEach(nodeTitle => {
                                const node = cascade[nodeTitle];
                                const height = Math.floor(heightAvailable * node.maxWeight / maxWeight);
                                const x = Math.round(cascadeIdx * options.width / (cascades.length - 1)) - (0 === cascadeIdx ? 0 : options.nodeWidth);
                                const rect = {};
                                rect._name = nodeTitle;
                                rect.width = options.nodeWidth;
                                rect.height = height;
                                rect.x = x + options.x;
                                rect.y = y + options.y;
                                y += height + nodePadding;
                                cascadeRects.push(rect)
                            });
                            cascadeIdx++;
                            rects.push(cascadeRects)
                        });
                        return rects
                    },
                    _findRectByName: function(rects, name) {
                        for (let c = 0; c < rects.length; c++) {
                            for (let r = 0; r < rects[c].length; r++) {
                                if (name === rects[c][r]._name) {
                                    return rects[c][r]
                                }
                            }
                        }
                        return null
                    },
                    _findIndexByName: function(rects, nodeTitle) {
                        let index = 0;
                        for (let c = 0; c < rects.length; c++) {
                            for (let r = 0; r < rects[c].length; r++) {
                                if (nodeTitle === rects[c][r]._name) {
                                    return index
                                }
                                index++
                            }
                        }
                        return null
                    },
                    _computeLinks: function(links, rects, cascades) {
                        const yOffsets = {};
                        const paths = [];
                        const result = [];
                        cascades.forEach(cascade => {
                            Object.keys(cascade).forEach(nodeTitle => {
                                yOffsets[nodeTitle] = {
                                    in: 0,
                                    out: 0
                                }
                            })
                        });
                        rects.forEach(rectsOfCascade => {
                            rectsOfCascade.forEach(nodeRect => {
                                const nodeTitle = nodeRect._name;
                                const rectFrom = this._findRectByName(rects, nodeTitle);
                                const linksFromNode = links.filter(link => link[0] === nodeTitle);
                                linksFromNode.forEach(link => {
                                    link.sort = this._findIndexByName(rects, link[1])
                                });
                                linksFromNode.sort((a, b) => a.sort - b.sort).forEach(link => {
                                    const rectTo = this._findRectByName(rects, link[1]);
                                    const height = Math.round(link[2] / this._weightPerPixel);
                                    const yOffsetFrom = yOffsets[link[0]].out;
                                    const yOffsetTo = yOffsets[link[1]].in;
                                    const heightFrom = yOffsets[link[0]].out + height > rectFrom.height ? rectFrom.height - yOffsets[link[0]].out : height;
                                    const heightTo = yOffsets[link[1]].in + height > rectTo.height ? rectTo.height - yOffsets[link[1]].in : height;
                                    paths.push({
                                        from: {
                                            x: rectFrom.x,
                                            y: rectFrom.y + yOffsetFrom,
                                            width: rectFrom.width,
                                            height: heightFrom,
                                            node: rectFrom,
                                            weight: link[2]
                                        },
                                        to: {
                                            x: rectTo.x,
                                            y: rectTo.y + yOffsetTo,
                                            width: rectTo.width,
                                            height: heightTo,
                                            node: rectTo
                                        }
                                    });
                                    yOffsets[link[0]].out += height;
                                    yOffsets[link[1]].in += height
                                })
                            })
                        });
                        paths.forEach(link => {
                            const path = {
                                d: this._spline(link.from, link.to),
                                _boundingRect: {
                                    x: link.from.x + link.from.width,
                                    y: Math.min(link.from.y, link.to.y),
                                    width: link.to.x - (link.from.x + link.from.width),
                                    height: Math.max(link.from.x + link.from.height, link.to.y + link.to.height) - Math.min(link.from.y, link.to.y)
                                },
                                _weight: link.from.weight,
                                _from: link.from.node,
                                _to: link.to.node
                            };
                            result.push(path)
                        });
                        this._fitAllNodesHeight(rects, paths);
                        return result
                    },
                    _fitNodeHeight: function(nodeName, nodeRects, paths) {
                        const targetRect = this._findRectByName(nodeRects, nodeName);
                        let heightOfLinksSummaryIn = 0;
                        let heightOfLinksSummaryOut = 0;
                        paths.forEach((function(path) {
                            if (path.from.node._name === nodeName) {
                                heightOfLinksSummaryOut += path.from.height
                            }
                            if (path.to.node._name === nodeName) {
                                heightOfLinksSummaryIn += path.to.height
                            }
                        }));
                        targetRect.height = Math.max(heightOfLinksSummaryIn, heightOfLinksSummaryOut)
                    },
                    _fitAllNodesHeight: function(nodeRects, paths) {
                        for (let c = 0; c < nodeRects.length; c++) {
                            for (let r = 0; r < nodeRects[c].length; r++) {
                                this._fitNodeHeight(nodeRects[c][r]._name, nodeRects, paths)
                            }
                        }
                    },
                    _spline: function(rectLeft, rectRight) {
                        const p_UpLeft = {
                            x: rectLeft.x + rectLeft.width,
                            y: rectLeft.y
                        };
                        const p_DownLeft = {
                            x: rectLeft.x + rectLeft.width,
                            y: rectLeft.y + rectLeft.height
                        };
                        const p_UpRight = {
                            x: rectRight.x,
                            y: rectRight.y
                        };
                        const p_DownRight = {
                            x: rectRight.x,
                            y: rectRight.y + rectRight.height
                        };
                        const curve_width = .3 * (p_UpRight.x - p_UpLeft.x);
                        const result = "M ".concat(p_UpLeft.x, " ").concat(p_UpLeft.y, " C ").concat(p_UpLeft.x + curve_width, " ").concat(p_UpLeft.y, " ").concat(p_UpRight.x - curve_width, " ").concat(p_UpRight.y, " ").concat(p_UpRight.x, " ").concat(p_UpRight.y, " L ").concat(p_DownRight.x, " ").concat(p_DownRight.y, " C ").concat(p_DownRight.x - curve_width, " ").concat(p_DownRight.y, " ").concat(p_DownLeft.x + curve_width, " ").concat(p_DownLeft.y, " ").concat(p_DownLeft.x, " ").concat(p_DownLeft.y, " Z");
                        return result
                    },
                    computeLayout: function(linksData, sortData, options, incidentOccurred) {
                        this._sort = sortData;
                        const result = {};
                        const validateResult = _data_validator.default.validate(linksData, incidentOccurred);
                        if (!validateResult) {
                            result.cascades = this._computeCascades(linksData);
                            result.nodes = this._computeNodes(result.cascades, {
                                width: options.availableRect.width,
                                height: options.availableRect.height,
                                x: options.availableRect.x,
                                y: options.availableRect.y,
                                nodePadding: options.nodePadding,
                                nodeWidth: options.nodeWidth,
                                nodeAlign: options.nodeAlign
                            });
                            result.links = this._computeLinks(linksData, result.nodes, result.cascades)
                        } else {
                            result.error = validateResult
                        }
                        return result
                    },
                    overlap: function(box1, box2) {
                        return !(box2.x > box1.x + box1.width || box2.x + box2.width < box1.x || box2.y >= box1.y + box1.height || box2.y + box2.height <= box1.y)
                    }
                };
                exports.layout = layout
            },
        18170:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/sankey/link_item.js ***!
              \*********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _constants = __webpack_require__( /*! ./constants */ 74878);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                const states = ["normal", "adjacentNodeHover", "hover"];

                function compileAttrs(color, itemOptions, itemBaseOptions, gradient) {
                    const border = itemOptions.border;
                    const baseBorder = itemBaseOptions.border;
                    const borderVisible = (0, _type.isDefined)(border.visible) ? border.visible : baseBorder.visible;
                    const borderWidth = (0, _type.isDefined)(border.width) ? border.width : baseBorder.width;
                    const borderOpacity = (0, _type.isDefined)(border.opacity) ? border.opacity : (0, _type.isDefined)(baseBorder.opacity) ? baseBorder.opacity : 1;
                    const opacity = (0, _type.isDefined)(itemOptions.opacity) ? itemOptions.opacity : (0, _type.isDefined)(itemBaseOptions.opacity) ? itemBaseOptions.opacity : 1;
                    let fill = itemOptions.color || color;
                    if (itemBaseOptions.colorMode === _constants.COLOR_MODE_TARGET || itemBaseOptions.colorMode === _constants.COLOR_MODE_SOURCE) {
                        fill = color
                    } else if (itemBaseOptions.colorMode === _constants.COLOR_MODE_GRADIENT && gradient && (0, _type.isDefined)(gradient.id)) {
                        fill = gradient.id
                    }
                    return {
                        fill: fill,
                        "stroke-width": borderVisible ? borderWidth : 0,
                        stroke: itemOptions.border.color || itemBaseOptions.border.color,
                        "stroke-opacity": borderOpacity,
                        opacity: opacity,
                        hatching: itemOptions.hatching
                    }
                }

                function Link(widget, params) {
                    const widgetOffset = widget._renderer.getRootOffset();
                    this.code = 0;
                    this.widget = widget;
                    this.color = params.color;
                    this.connection = params.connection;
                    this.d = params.d;
                    this.options = params.options;
                    this.boundingRect = params.boundingRect, this.coords = {
                        x: params.boundingRect.x + params.boundingRect.width / 2 + widgetOffset.left,
                        y: params.boundingRect.y + params.boundingRect.height / 2 + widgetOffset.top
                    };
                    this.states = {
                        normal: compileAttrs(this.color, this.options, this.options, params.gradient),
                        adjacentNodeHover: compileAttrs(this.color, {
                            opacity: 0,
                            border: {}
                        }, this.options, params.gradient),
                        hover: compileAttrs(this.color, {
                            opacity: 0,
                            border: {}
                        }, this.options, params.gradient)
                    };
                    this.overlayStates = {
                        normal: compileAttrs(this.color, {
                            opacity: 0,
                            border: {}
                        }, this.options),
                        adjacentNodeHover: compileAttrs(this.color, this.options.hoverStyle, this.options),
                        hover: compileAttrs(this.color, this.options.hoverStyle, this.options)
                    }
                }
                Link.prototype = {
                    getState: function() {
                        return states[this.code]
                    },
                    isHovered: function() {
                        return 2 === this.code
                    },
                    isAdjacentNodeHovered: function() {
                        return 1 === this.code
                    },
                    setState: function(code, state) {
                        if (state) {
                            this.code = code
                        } else {
                            this.code = 0;
                            this.hideTooltip()
                        }
                        this.widget._applyLinksAppearance()
                    },
                    setHover: function() {
                        this.hover(true)
                    },
                    hover: function(state) {
                        if (!this.widget._getOption("hoverEnabled", true) || state === this.isHovered()) {
                            return
                        }
                        this.widget._suspend();
                        state && this.widget.clearHover();
                        this.setState(2, state);
                        this.widget._eventTrigger("linkHoverChanged", {
                            target: this
                        });
                        this.widget._resume()
                    },
                    adjacentNodeHover: function(state) {
                        if (!this.widget._getOption("hoverEnabled", true) || state === this.isAdjacentNodeHovered()) {
                            return
                        }
                        this.widget._suspend();
                        this.setState(1, state);
                        this.widget._resume()
                    },
                    setAdjacentNodeHover: function() {
                        this.adjacentNodeHover(true)
                    },
                    showTooltip: function(coords) {
                        this.widget._getOption("hoverEnabled", true) && this.widget._tooltip && this.widget._tooltip.show({
                            type: "link",
                            info: {
                                source: this.connection.source,
                                target: this.connection.target,
                                weight: this.connection.weight
                            }
                        }, "undefined" !== typeof coords ? {
                            x: coords[0],
                            y: coords[1]
                        } : this.coords)
                    },
                    hideTooltip: function() {
                        this.widget._tooltip && this.widget._tooltip.hide()
                    }
                };
                var _default = Link;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        47248:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/sankey/node_item.js ***!
              \*********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                const states = ["normal", "hover"];

                function compileAttrs(color, itemOptions, itemBaseOptions) {
                    const border = itemOptions.border;
                    const baseBorder = itemBaseOptions.border;
                    const borderVisible = (0, _type.isDefined)(border.visible) ? border.visible : baseBorder.visible;
                    const borderWidth = (0, _type.isDefined)(border.width) ? border.width : baseBorder.width;
                    const borderOpacity = (0, _type.isDefined)(border.opacity) ? border.opacity : (0, _type.isDefined)(baseBorder.opacity) ? baseBorder.opacity : 1;
                    const opacity = (0, _type.isDefined)(itemOptions.opacity) ? itemOptions.opacity : (0, _type.isDefined)(itemBaseOptions.opacity) ? itemBaseOptions.opacity : 1;
                    return {
                        fill: itemOptions.color || color,
                        "stroke-width": borderVisible ? borderWidth : 0,
                        stroke: itemOptions.border.color || itemBaseOptions.border.color,
                        "stroke-opacity": borderOpacity,
                        opacity: opacity,
                        hatching: itemOptions.hatching
                    }
                }

                function Node(widget, params) {
                    const widgetOffset = widget._renderer.getRootOffset();
                    this.code = 0;
                    this.widget = widget;
                    this.color = params.color;
                    this.options = params.options;
                    this.rect = params.rect;
                    this.label = this.title = params.rect._name;
                    this.coords = {
                        x: params.rect.x + params.rect.width / 2 + widgetOffset.left,
                        y: params.rect.y + params.rect.height / 2 + widgetOffset.top
                    };
                    this.id = params.id;
                    this.linksIn = params.linksIn;
                    this.linksOut = params.linksOut;
                    this.states = {
                        normal: compileAttrs(this.color, this.options, this.options),
                        hover: compileAttrs(this.color, this.options.hoverStyle, this.options)
                    }
                }
                Node.prototype = {
                    compileAttrs: function() {
                        return compileAttrs(this.color, this.options)
                    },
                    getState: function() {
                        return states[this.code]
                    },
                    isHovered: function() {
                        return !!(1 & this.code)
                    },
                    setState: function(code, state) {
                        if (state) {
                            this.code |= code
                        } else {
                            this.code &= ~code
                        }
                        if (state) {
                            this.linksIn.concat(this.linksOut).forEach(adjacentLink => {
                                this.widget._links[adjacentLink.index].setAdjacentNodeHover(true)
                            })
                        } else {
                            this.widget._links.forEach((function(link) {
                                link.isAdjacentNodeHovered() && link.adjacentNodeHover(false)
                            }));
                            this.hideTooltip()
                        }
                        this.widget._applyNodesAppearance();
                        this.widget._applyLinksAppearance()
                    },
                    hover: function(state) {
                        if (!this.widget._getOption("hoverEnabled", true) || state === this.isHovered()) {
                            return
                        }
                        this.widget._suspend();
                        state && this.widget.clearHover();
                        this.setState(1, state);
                        this.widget._eventTrigger("nodeHoverChanged", {
                            target: this
                        });
                        this.widget._resume()
                    },
                    setHover: function() {
                        this.hover(true)
                    },
                    showTooltip: function(coords) {
                        this.widget._getOption("hoverEnabled", true) && this.widget._tooltip && this.widget._tooltip.show({
                            type: "node",
                            info: {
                                label: this.label,
                                title: this.label,
                                weightIn: this.linksIn.reduce((function(previousValue, currentValue) {
                                    return previousValue + currentValue.weight
                                }), 0),
                                weightOut: this.linksOut.reduce((function(previousValue, currentValue) {
                                    return previousValue + currentValue.weight
                                }), 0)
                            }
                        }, "undefined" !== typeof coords ? {
                            x: coords[0],
                            y: coords[1]
                        } : this.coords)
                    },
                    hideTooltip: function() {
                        this.widget._tooltip && this.widget._tooltip.hide()
                    },
                    getLabelAttributes: function(labelSettings, filter) {
                        return function(labelOptions, filter, node) {
                            const _patchFontOptions = _utils.patchFontOptions;
                            if (labelOptions.useNodeColors) {
                                labelOptions.font.color = node.color
                            }
                            const borderVisible = (0, _type.isDefined)(labelOptions.border.visible) ? labelOptions.border.visible : false;
                            const borderWidth = (0, _type.isDefined)(labelOptions.border.width) ? labelOptions.border.width : 0;
                            const borderColor = (0, _type.isDefined)(labelOptions.border.color) ? labelOptions.border.color : labelOptions.font.color;
                            const borderOpacity = (0, _type.isDefined)(labelOptions.border.opacity) ? labelOptions.border.opacity : 1;
                            const attr = {
                                filter: filter
                            };
                            if (borderVisible && borderWidth) {
                                attr.stroke = borderColor;
                                attr["stroke-width"] = borderVisible ? borderWidth : 0;
                                attr["stroke-opacity"] = borderOpacity
                            }
                            return {
                                attr: attr,
                                css: _patchFontOptions(labelOptions.font)
                            }
                        }(labelSettings, filter, this)
                    }
                };
                var _default = Node;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        66422:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/sankey/sankey.js ***!
              \******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _constants = __webpack_require__( /*! ./constants */ 74878);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _node_item = _interopRequireDefault(__webpack_require__( /*! ./node_item */ 47248));
                var _link_item = _interopRequireDefault(__webpack_require__( /*! ./link_item */ 18170));
                var _layout = __webpack_require__( /*! ./layout */ 68856);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _m_base_widget = _interopRequireDefault(__webpack_require__( /*! ../../__internal/viz/core/m_base_widget */ 55845));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _data_source = __webpack_require__( /*! ../core/data_source */ 1539);

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

                function getConnectedLinks(layout, nodeName, linkType) {
                    const result = [];
                    const attrName = "in" === linkType ? "_to" : "_from";
                    const invertedAttrName = "in" === linkType ? "_from" : "_to";
                    layout.links.map(link => link[attrName]._name === nodeName).forEach((connected, idx) => {
                        connected && result.push({
                            index: idx,
                            weight: layout.links[idx]._weight,
                            node: layout.links[idx][invertedAttrName]._name
                        })
                    });
                    return result
                }
                const dxSankey = _m_base_widget.default.inherit({
                    _rootClass: "dxs-sankey",
                    _rootClassPrefix: "dxs",
                    _proxyData: [],
                    _optionChangesMap: {
                        dataSource: "DATA_SOURCE",
                        sortData: "DATA_SOURCE",
                        alignment: "DATA_SOURCE",
                        node: "BUILD_LAYOUT",
                        link: "BUILD_LAYOUT",
                        palette: "BUILD_LAYOUT",
                        paletteExtensionMode: "BUILD_LAYOUT"
                    },
                    _themeDependentChanges: ["BUILD_LAYOUT"],
                    _getDefaultSize: function() {
                        return {
                            width: 400,
                            height: 400
                        }
                    },
                    _themeSection: "sankey",
                    _fontFields: ["label.font"],
                    _optionChangesOrder: ["DATA_SOURCE"],
                    _initialChanges: ["DATA_SOURCE"],
                    _initCore: function() {
                        this._groupLinks = this._renderer.g().append(this._renderer.root);
                        this._groupNodes = this._renderer.g().append(this._renderer.root);
                        this._groupLabels = this._renderer.g().attr({
                            class: this._rootClassPrefix + "-labels"
                        }).append(this._renderer.root);
                        this._drawLabels = true;
                        this._nodes = [];
                        this._links = [];
                        this._gradients = []
                    },
                    _disposeCore: _common.noop,
                    _applySize: function(rect) {
                        this._rect = rect.slice();
                        const adaptiveLayout = this._getOption("adaptiveLayout");
                        if (adaptiveLayout.keepLabels || this._rect[2] - this._rect[0] > adaptiveLayout.width) {
                            this._drawLabels = true
                        } else {
                            this._drawLabels = false
                        }
                        this._change(["BUILD_LAYOUT"]);
                        return this._rect
                    },
                    _eventsMap: {
                        onNodeHoverChanged: {
                            name: "nodeHoverChanged"
                        },
                        onLinkHoverChanged: {
                            name: "linkHoverChanged"
                        }
                    },
                    _customChangesOrder: ["BUILD_LAYOUT", "NODES_DRAW", "LINKS_DRAW", "LABELS", "DRAWN"],
                    _dataSourceChangedHandler: function() {
                        this._requestChange(["BUILD_LAYOUT"])
                    },
                    _change_DRAWN: function() {
                        this._drawn()
                    },
                    _change_DATA_SOURCE: function() {
                        this._change(["DRAWN"]);
                        this._updateDataSource()
                    },
                    _change_LABELS: function() {
                        this._applyLabelsAppearance()
                    },
                    _change_BUILD_LAYOUT: function() {
                        this._groupNodes.clear();
                        this._groupLinks.clear();
                        this._groupLabels.clear();
                        this._buildLayout()
                    },
                    _change_NODES_DRAW: function() {
                        const that = this;
                        const nodes = that._nodes;
                        nodes.forEach((function(node, index) {
                            const element = that._renderer.rect().attr(node.rect).append(that._groupNodes);
                            node.element = element
                        }));
                        this._applyNodesAppearance()
                    },
                    _change_LINKS_DRAW: function() {
                        const that = this;
                        const links = that._links;
                        links.forEach((function(link, index) {
                            const group = that._renderer.g().attr({
                                class: "link",
                                "data-link-idx": index
                            }).append(that._groupLinks);
                            link.overlayElement = that._renderer.path([], "area").attr({
                                d: link.d
                            }).append(group);
                            link.element = that._renderer.path([], "area").attr({
                                d: link.d
                            }).append(group)
                        }));
                        this._applyLinksAppearance()
                    },
                    _suspend: function() {
                        if (!this._applyingChanges) {
                            this._suspendChanges()
                        }
                    },
                    _resume: function() {
                        if (!this._applyingChanges) {
                            this._resumeChanges()
                        }
                    },
                    _showTooltip: _common.noop,
                    hideTooltip: _common.noop,
                    clearHover: function() {
                        this._suspend();
                        this._nodes.forEach((function(node) {
                            node.isHovered() && node.hover(false)
                        }));
                        this._links.forEach((function(link) {
                            link.isHovered() && link.hover(false);
                            link.isAdjacentNodeHovered() && link.adjacentNodeHover(false)
                        }));
                        this._resume()
                    },
                    _applyNodesAppearance: function() {
                        this._nodes.forEach((function(node) {
                            const state = node.getState();
                            node.element.smartAttr(node.states[state])
                        }))
                    },
                    _applyLinksAppearance: function() {
                        this._links.forEach((function(link) {
                            const state = link.getState();
                            link.element.smartAttr(link.states[state]);
                            link.overlayElement.smartAttr(link.overlayStates[state])
                        }))
                    },
                    _hitTestTargets: function(x, y) {
                        const that = this;
                        let data;
                        this._proxyData.some((function(callback) {
                            data = callback.call(that, x, y);
                            if (data) {
                                return true
                            }
                        }));
                        return data
                    },
                    _getData: function() {
                        const that = this;
                        const data = that._dataSourceItems() || [];
                        const sourceField = that._getOption("sourceField", true);
                        const targetField = that._getOption("targetField", true);
                        const weightField = that._getOption("weightField", true);
                        const processedData = [];
                        data.forEach((function(item) {
                            const hasItemOwnProperty = Object.prototype.hasOwnProperty.bind(item);
                            if (!hasItemOwnProperty(sourceField)) {
                                that._incidentOccurred("E2007", sourceField)
                            } else if (!hasItemOwnProperty(targetField)) {
                                that._incidentOccurred("E2007", targetField)
                            } else if (!hasItemOwnProperty(weightField)) {
                                that._incidentOccurred("E2007", weightField)
                            } else if (!(0, _type.isString)(item[sourceField])) {
                                that._incidentOccurred("E2008", sourceField)
                            } else if (!(0, _type.isString)(item[targetField])) {
                                that._incidentOccurred("E2008", targetField)
                            } else if (!(0, _type.isNumeric)(item[weightField]) || item[weightField] <= 0) {
                                that._incidentOccurred("E2009", weightField)
                            } else {
                                processedData.push([item[sourceField], item[targetField], item[weightField]])
                            }
                        }));
                        return processedData
                    },
                    _buildLayout: function() {
                        const that = this;
                        const data = that._getData();
                        const availableRect = this._rect;
                        const nodeOptions = that._getOption("node");
                        const sortData = that._getOption("sortData");
                        const layoutBuilder = that._getOption("layoutBuilder", true) || _layout.layout;
                        const rect = {
                            x: availableRect[0],
                            y: availableRect[1],
                            width: availableRect[2] - availableRect[0],
                            height: availableRect[3] - availableRect[1]
                        };
                        const layout = layoutBuilder.computeLayout(data, sortData, {
                            availableRect: rect,
                            nodePadding: nodeOptions.padding,
                            nodeWidth: nodeOptions.width,
                            nodeAlign: that._getOption("alignment", true)
                        }, that._incidentOccurred);
                        that._layoutMap = layout;
                        if (!Object.prototype.hasOwnProperty.call(layout, "error")) {
                            const nodeColors = {};
                            let nodeIdx = 0;
                            const linkOptions = that._getOption("link");
                            const totalNodesNum = layout.nodes.map(item => item.length).reduce((previousValue, currentValue) => previousValue + currentValue, 0);
                            const palette = that._themeManager.createPalette(that._getOption("palette", true), {
                                useHighlight: true,
                                extensionMode: that._getOption("paletteExtensionMode", true),
                                count: totalNodesNum
                            });
                            that._nodes = [];
                            that._links = [];
                            that._gradients.forEach(gradient => {
                                gradient.dispose()
                            });
                            that._gradients = [];
                            that._shadowFilter && that._shadowFilter.dispose();
                            layout.nodes.forEach(cascadeNodes => {
                                cascadeNodes.forEach(node => {
                                    const color = nodeOptions.color || palette.getNextColor();
                                    const nodeItem = new _node_item.default(that, {
                                        id: nodeIdx,
                                        color: color,
                                        rect: node,
                                        options: nodeOptions,
                                        linksIn: getConnectedLinks(layout, node._name, "in"),
                                        linksOut: getConnectedLinks(layout, node._name, "out")
                                    });
                                    that._nodes.push(nodeItem);
                                    nodeIdx++;
                                    nodeColors[node._name] = color
                                })
                            });
                            layout.links.forEach(link => {
                                let gradient = null;
                                if (linkOptions.colorMode === _constants.COLOR_MODE_GRADIENT) {
                                    gradient = that._renderer.linearGradient([{
                                        offset: "0%",
                                        "stop-color": nodeColors[link._from._name]
                                    }, {
                                        offset: "100%",
                                        "stop-color": nodeColors[link._to._name]
                                    }]);
                                    this._gradients.push(gradient)
                                }
                                let color = linkOptions.color;
                                if (linkOptions.colorMode === _constants.COLOR_MODE_SOURCE) {
                                    color = nodeColors[link._from._name]
                                } else if (linkOptions.colorMode === _constants.COLOR_MODE_TARGET) {
                                    color = nodeColors[link._to._name]
                                }
                                const linkItem = new _link_item.default(that, {
                                    d: link.d,
                                    boundingRect: link._boundingRect,
                                    color: color,
                                    options: linkOptions,
                                    connection: {
                                        source: link._from._name,
                                        target: link._to._name,
                                        weight: link._weight
                                    },
                                    gradient: gradient
                                });
                                that._links.push(linkItem)
                            });
                            that._renderer.initDefsElements();
                            that._change(["NODES_DRAW", "LINKS_DRAW", "LABELS"])
                        }
                        that._change(["DRAWN"])
                    },
                    _applyLabelsAppearance: function() {
                        const that = this;
                        const labelOptions = that._getOption("label");
                        const availableWidth = that._rect[2] - that._rect[0];
                        const nodeOptions = that._getOption("node");
                        that._shadowFilter = that._renderer.shadowFilter("-50%", "-50%", "200%", "200%").attr(labelOptions.shadow);
                        that._groupLabels.clear();
                        if (that._drawLabels && labelOptions.visible) {
                            const availableLabelWidth = (availableWidth - (nodeOptions.width + labelOptions.horizontalOffset) - that._layoutMap.cascades.length * nodeOptions.width) / (that._layoutMap.cascades.length - 1) - labelOptions.horizontalOffset;
                            that._nodes.forEach((function(node) {
                                that._createLabel(node, labelOptions, that._shadowFilter.id);
                                ! function(node, labelOptions, availableLabelWidth, rect) {
                                    if (node._label.getBBox().width > availableLabelWidth) {
                                        node.labelText.applyEllipsis(availableLabelWidth)
                                    }
                                    const bBox = node._label.getBBox();
                                    const verticalOffset = labelOptions.verticalOffset;
                                    const horizontalOffset = labelOptions.horizontalOffset;
                                    let labelOffsetY = Math.round(node.rect.y + node.rect.height / 2 - bBox.y - bBox.height / 2) + verticalOffset;
                                    let labelOffsetX = node.rect.x + horizontalOffset + node.rect.width - bBox.x;
                                    if (labelOffsetX + bBox.width >= rect[2] - rect[0]) {
                                        labelOffsetX = node.rect.x - horizontalOffset - bBox.x - bBox.width
                                    }
                                    if (labelOffsetY >= rect[3]) {
                                        labelOffsetY = rect[3]
                                    }
                                    if (labelOffsetY - bBox.height < rect[1]) {
                                        labelOffsetY = node.rect.y - bBox.y + verticalOffset
                                    }
                                    node.labelText.attr({
                                        translateX: labelOffsetX,
                                        translateY: labelOffsetY
                                    })
                                }(node, labelOptions, availableLabelWidth, that._rect)
                            }));
                            if ("none" !== labelOptions.overlappingBehavior) {
                                that._nodes.forEach((function(thisNode) {
                                    const thisBox = thisNode._label.getBBox();
                                    that._nodes.forEach((function(otherNode) {
                                        const otherBox = otherNode._label.getBBox();
                                        if (thisNode.id !== otherNode.id && _layout.layout.overlap(thisBox, otherBox)) {
                                            if ("ellipsis" === labelOptions.overlappingBehavior) {
                                                thisNode.labelText.applyEllipsis(otherBox.x - thisBox.x)
                                            } else if ("hide" === labelOptions.overlappingBehavior) {
                                                thisNode.labelText.remove()
                                            }
                                        }
                                    }))
                                }))
                            }
                        }
                    },
                    _createLabel: function(node, labelOptions, filter) {
                        const textData = labelOptions.customizeText(node);
                        const settings = node.getLabelAttributes(labelOptions, filter);
                        if (textData) {
                            node._label = this._renderer.g().append(this._groupLabels);
                            node.labelText = this._renderer.text(textData).attr(settings.attr).css(settings.css);
                            node.labelText.append(node._label)
                        }
                    },
                    _getMinSize: function() {
                        const adaptiveLayout = this._getOption("adaptiveLayout");
                        return [adaptiveLayout.width, adaptiveLayout.height]
                    },
                    getAllNodes: function() {
                        return this._nodes.slice()
                    },
                    getAllLinks: function() {
                        return this._links.slice()
                    }
                });
                (0, _component_registrator.default)("dxSankey", dxSankey);
                var _default = dxSankey;
                exports.default = _default;
                dxSankey.addPlugin(_data_source.plugin);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        38516:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/sankey/tooltip.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.setTooltipCustomOptions = function(sankey) {
                    sankey.prototype._setTooltipOptions = function() {
                        const tooltip = this._tooltip;
                        const options = tooltip && this._getOption("tooltip");
                        let linkTemplate;
                        let nodeTemplate;
                        if (options.linkTooltipTemplate) {
                            linkTemplate = this._getTemplate(options.linkTooltipTemplate)
                        }
                        if (options.nodeTooltipTemplate) {
                            nodeTemplate = this._getTemplate(options.nodeTooltipTemplate)
                        }
                        tooltip && tooltip.update((0, _extend2.extend)({}, options, {
                            customizeTooltip: function(args) {
                                if (!(linkTemplate && "link" === args.type || nodeTemplate && "node" === args.type)) {
                                    args.skipTemplate = true
                                }
                                const formatter = value => tooltip.formatValue(value);
                                if ("node" === args.type) {
                                    return generateCustomCallback(options.customizeNodeTooltip, (formatter => function(info) {
                                        return {
                                            html: "<strong>".concat(info.label, "</strong><br/>Incoming weight: ").concat(formatter(info.weightIn), "<br/>Outgoing weight: ").concat(formatter(info.weightOut))
                                        }
                                    })(formatter))(args.info)
                                } else if ("link" === args.type) {
                                    return generateCustomCallback(options.customizeLinkTooltip, (formatter => function(info) {
                                        return {
                                            html: "<strong>".concat(info.source, " > ").concat(info.target, "</strong><br/>Weight: ").concat(formatter(info.weight))
                                        }
                                    })(formatter))(args.info)
                                }
                                return {}
                            },
                            contentTemplate(arg, div) {
                                const templateArgs = {
                                    model: arg.info,
                                    container: div
                                };
                                if (linkTemplate && "link" === arg.type) {
                                    return linkTemplate.render(templateArgs)
                                }
                                if (nodeTemplate && "node" === arg.type) {
                                    return nodeTemplate.render(templateArgs)
                                }
                            },
                            enabled: options.enabled
                        }))
                    };
                    sankey.prototype.hideTooltip = function() {
                        this._tooltip && this._tooltip.hide()
                    }
                };
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                const generateCustomCallback = function(customCallback, defaultCallback) {
                    return function(objectInfo) {
                        let res = (0, _type.isFunction)(customCallback) ? customCallback.call(objectInfo, objectInfo) : {};
                        const hasOwnProperty = Object.prototype.hasOwnProperty.bind(res);
                        if (!hasOwnProperty("html") && !hasOwnProperty("text")) {
                            res = (0, _extend2.extend)(res, defaultCallback.call(objectInfo, objectInfo))
                        }
                        return res
                    }
                }
            },
        29823:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/sankey/tracker.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.plugin = void 0;
                var _sankey = (obj = __webpack_require__( /*! ./sankey */ 66422), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _tracker = __webpack_require__( /*! ../components/tracker */ 88997);
                const proto = _sankey.default.prototype;
                let dataKeyModifier = 0;
                proto._eventsMap.onNodeClick = {
                    name: "nodeClick"
                };
                proto._eventsMap.onLinkClick = {
                    name: "linkClick"
                };
                const plugin = {
                    name: "tracker",
                    init: function() {
                        const that = this;
                        const dataKey = "__sankey_data_" + dataKeyModifier++;
                        that._tracker = new _tracker.Tracker({
                            widget: that,
                            root: that._renderer.root,
                            getData: function(e) {
                                const target = e.target;
                                return target[dataKey]
                            },
                            getNode: function(index) {
                                if (index < that._nodes.length) {
                                    return that._nodes[index]
                                } else {
                                    return that._links[index - that._nodes.length]
                                }
                            },
                            click: function(e) {
                                const eventName = this.getData(e.event) < that._nodes.length ? "nodeClick" : "linkClick";
                                that._eventTrigger(eventName, {
                                    target: e.node,
                                    event: e.event
                                })
                            }
                        });
                        this._dataKey = dataKey
                    },
                    dispose: function() {
                        this._tracker.dispose()
                    },
                    extenders: {
                        _change_LINKS_DRAW: function() {
                            const dataKey = this._dataKey;
                            this._nodes.concat(this._links).forEach((function(item, index) {
                                item.element.data(dataKey, index)
                            }))
                        }
                    }
                };
                exports.plugin = plugin
            },
        90048:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/area_series.js ***!
              \***********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.polar = exports.chart = void 0;
                var _object = __webpack_require__( /*! ../../core/utils/object */ 48013);
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _scatter_series = __webpack_require__( /*! ./scatter_series */ 21667);
                var _line_series = __webpack_require__( /*! ./line_series */ 7222);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                const chartLineSeries = _line_series.chart.line;
                const polarLineSeries = _line_series.polar.line;
                const _extend = _extend2.extend;
                const calculateBezierPoints = _line_series.chart.spline._calculateBezierPoints;
                const chart = {};
                exports.chart = chart;
                const polar = {};
                exports.polar = polar;
                const baseAreaMethods = {
                    _createBorderElement: chartLineSeries._createMainElement,
                    _createLegendState: function(styleOptions, defaultColor) {
                        return {
                            fill: (0, _utils.extractColor)(styleOptions.color) || defaultColor,
                            opacity: styleOptions.opacity,
                            hatching: styleOptions.hatching,
                            filter: styleOptions.highlight
                        }
                    },
                    _getColorId: function(options) {
                        var _options$color;
                        return null === (_options$color = options.color) || void 0 === _options$color ? void 0 : _options$color.fillId
                    },
                    getValueRangeInitialValue: function() {
                        if ("logarithmic" !== this.valueAxisType && "datetime" !== this.valueType && false !== this.showZero) {
                            return 0
                        } else {
                            return _scatter_series.chart.getValueRangeInitialValue.call(this)
                        }
                    },
                    _getDefaultSegment: function(segment) {
                        const defaultSegment = chartLineSeries._getDefaultSegment(segment);
                        defaultSegment.area = defaultSegment.line.concat(defaultSegment.line.slice().reverse());
                        return defaultSegment
                    },
                    _updateElement: function(element, segment, animate, complete) {
                        const lineParams = {
                            points: segment.line
                        };
                        const areaParams = {
                            points: segment.area
                        };
                        const borderElement = element.line;
                        if (animate) {
                            borderElement && borderElement.animate(lineParams);
                            element.area.animate(areaParams, {}, complete)
                        } else {
                            borderElement && borderElement.attr(lineParams);
                            element.area.attr(areaParams)
                        }
                    },
                    _removeElement: function(element) {
                        element.line && element.line.remove();
                        element.area.remove()
                    },
                    _drawElement: function(segment) {
                        return {
                            line: this._bordersGroup && this._createBorderElement(segment.line, {
                                "stroke-width": this._styles.normal.border["stroke-width"]
                            }).append(this._bordersGroup),
                            area: this._createMainElement(segment.area).append(this._elementsGroup)
                        }
                    },
                    _applyStyle: function(style) {
                        this._elementsGroup && this._elementsGroup.smartAttr(style.elements);
                        this._bordersGroup && this._bordersGroup.attr(style.border);
                        (this._graphics || []).forEach((function(graphic) {
                            graphic.line && graphic.line.attr({
                                "stroke-width": style.border["stroke-width"]
                            }).sharp()
                        }))
                    },
                    _parseStyle: function(options, defaultColor, defaultBorderColor) {
                        var _options$highlight;
                        const borderOptions = options.border || {};
                        const borderStyle = chartLineSeries._parseLineOptions(borderOptions, defaultBorderColor);
                        borderStyle.stroke = borderOptions.visible && borderStyle["stroke-width"] ? borderStyle.stroke : "none";
                        borderStyle["stroke-width"] = borderStyle["stroke-width"] || 1;
                        return {
                            border: borderStyle,
                            elements: {
                                stroke: "none",
                                fill: (0, _utils.extractColor)(options.color) || defaultColor,
                                hatching: options.hatching,
                                opacity: options.opacity,
                                filter: null !== (_options$highlight = options.highlight) && void 0 !== _options$highlight ? _options$highlight : null
                            }
                        }
                    },
                    _areBordersVisible: function() {
                        const options = this._options;
                        return options.border.visible || options.hoverStyle.border.visible || options.selectionStyle.border.visible
                    },
                    _createMainElement: function(points, settings) {
                        return this._renderer.path(points, "area").attr(settings)
                    },
                    _getTrackerSettings: function(segment) {
                        return {
                            "stroke-width": segment.singlePointSegment ? this._defaultTrackerWidth : 0
                        }
                    },
                    _getMainPointsFromSegment: function(segment) {
                        return segment.area
                    }
                };
                const areaSeries = chart.area = _extend({}, chartLineSeries, baseAreaMethods, {
                    _prepareSegment(points, rotated) {
                        const processedPoints = this._processSinglePointsAreaSegment(points, rotated);
                        const areaPoints = function(points) {
                            return (0, _utils.map)(points, (function(pt) {
                                return pt.getCoords()
                            })).concat((0, _utils.map)(points.slice().reverse(), (function(pt) {
                                return pt.getCoords(true)
                            })))
                        }(processedPoints);
                        const argAxis = this.getArgumentAxis();
                        if (argAxis.getAxisPosition) {
                            const argAxisPosition = argAxis.getAxisPosition();
                            const axisOptions = argAxis.getOptions();
                            const edgeOffset = (!rotated ? -1 : 1) * Math.round(axisOptions.width / 2);
                            if (axisOptions.visible) {
                                areaPoints.forEach((p, i) => {
                                    if (p) {
                                        const index = 1 === points.length ? 0 : i < points.length ? i : areaPoints.length - 1 - i;
                                        rotated && p.x === points[index].defaultX && p.x === argAxisPosition - argAxis.getAxisShift() && (p.x += edgeOffset);
                                        !rotated && p.y === points[index].defaultY && p.y === argAxisPosition - argAxis.getAxisShift() && (p.y += edgeOffset)
                                    }
                                })
                            }
                        }
                        return {
                            line: processedPoints,
                            area: areaPoints,
                            singlePointSegment: processedPoints !== points
                        }
                    },
                    _processSinglePointsAreaSegment: function(points, rotated) {
                        if (points && 1 === points.length) {
                            const p = points[0];
                            const p1 = (0, _object.clone)(p);
                            p1[rotated ? "y" : "x"] += 1;
                            p1.argument = null;
                            return [p, p1]
                        }
                        return points
                    }
                });
                polar.area = _extend({}, polarLineSeries, baseAreaMethods, {
                    _prepareSegment: function(points, rotated, lastSegment) {
                        lastSegment && polarLineSeries._closeSegment.call(this, points);
                        return areaSeries._prepareSegment.call(this, points)
                    },
                    _processSinglePointsAreaSegment: function(points) {
                        return _line_series.polar.line._prepareSegment.call(this, points).line
                    }
                });
                chart.steparea = _extend({}, areaSeries, {
                    _prepareSegment: function(points, rotated) {
                        const stepLineSeries = _line_series.chart.stepline;
                        points = areaSeries._processSinglePointsAreaSegment(points, rotated);
                        return areaSeries._prepareSegment.call(this, stepLineSeries._calculateStepLinePoints.call(this, points), rotated)
                    },
                    getSeriesPairCoord: _line_series.chart.stepline.getSeriesPairCoord
                });
                chart.splinearea = _extend({}, areaSeries, {
                    _areaPointsToSplineAreaPoints: function(areaPoints) {
                        const previousMiddlePoint = areaPoints[areaPoints.length / 2 - 1];
                        const middlePoint = areaPoints[areaPoints.length / 2];
                        areaPoints.splice(areaPoints.length / 2, 0, {
                            x: previousMiddlePoint.x,
                            y: previousMiddlePoint.y
                        }, {
                            x: middlePoint.x,
                            y: middlePoint.y
                        })
                    },
                    _prepareSegment: function(points, rotated) {
                        const processedPoints = areaSeries._processSinglePointsAreaSegment(points, rotated);
                        const areaSegment = areaSeries._prepareSegment.call(this, calculateBezierPoints(processedPoints, rotated));
                        this._areaPointsToSplineAreaPoints(areaSegment.area);
                        areaSegment.singlePointSegment = processedPoints !== points;
                        return areaSegment
                    },
                    _getDefaultSegment: function(segment) {
                        const areaDefaultSegment = areaSeries._getDefaultSegment(segment);
                        this._areaPointsToSplineAreaPoints(areaDefaultSegment.area);
                        return areaDefaultSegment
                    },
                    _createMainElement: function(points, settings) {
                        return this._renderer.path(points, "bezierarea").attr(settings)
                    },
                    _createBorderElement: _line_series.chart.spline._createMainElement,
                    getSeriesPairCoord: _line_series.chart.spline.getSeriesPairCoord,
                    _getNearestPoints: _line_series.chart.spline._getNearestPoints,
                    _getBezierPoints: _line_series.chart.spline._getBezierPoints,
                    obtainCubicBezierTCoef: _line_series.chart.spline.obtainCubicBezierTCoef
                })
            },
        58821:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/bar_series.js ***!
              \**********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.polar = exports.chart = void 0;
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var scatterSeries = function(obj, nodeInterop) {
                    if (!nodeInterop && obj && obj.__esModule) {
                        return obj
                    }
                    if (null === obj || "object" !== typeof obj && "function" !== typeof obj) {
                        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 ("default" !== key && 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
                }(__webpack_require__( /*! ./scatter_series */ 21667));
                var _area_series = __webpack_require__( /*! ./area_series */ 90048);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);

                function _getRequireWildcardCache(nodeInterop) {
                    if ("function" !== typeof WeakMap) {
                        return null
                    }
                    var cacheBabelInterop = new WeakMap;
                    var cacheNodeInterop = new WeakMap;
                    return (_getRequireWildcardCache = function(nodeInterop) {
                        return nodeInterop ? cacheNodeInterop : cacheBabelInterop
                    })(nodeInterop)
                }
                const areaSeries = _area_series.chart.area;
                const chartSeries = scatterSeries.chart;
                const polarSeries = scatterSeries.polar;
                const _extend = _extend2.extend;
                const _each = _iterator.each;
                const chart = {};
                exports.chart = chart;
                const polar = {};
                exports.polar = polar;
                const baseBarSeriesMethods = {
                    _createLegendState: function(styleOptions, defaultColor) {
                        return {
                            fill: (0, _utils.extractColor)(styleOptions.color) || defaultColor,
                            hatching: styleOptions.hatching,
                            filter: styleOptions.highlight
                        }
                    },
                    _getColorId: areaSeries._getColorId,
                    _parsePointStyle: function(style, defaultColor, defaultBorderColor) {
                        const color = (0, _utils.extractColor)(style.color) || defaultColor;
                        const base = chartSeries._parsePointStyle.call(this, style, color, defaultBorderColor);
                        base.fill = color;
                        base.hatching = style.hatching;
                        base.filter = style.highlight;
                        base.dashStyle = style.border && style.border.dashStyle || "solid";
                        delete base.r;
                        return base
                    },
                    _applyMarkerClipRect: function(settings) {
                        settings["clip-path"] = null
                    },
                    _setGroupsSettings: function(animationEnabled, firstDrawing) {
                        const that = this;
                        let settings = {};
                        chartSeries._setGroupsSettings.apply(that, arguments);
                        if (animationEnabled && firstDrawing) {
                            settings = this._getAffineCoordOptions()
                        } else if (!animationEnabled) {
                            settings = {
                                scaleX: 1,
                                scaleY: 1,
                                translateX: 0,
                                translateY: 0
                            }
                        }
                        that._markersGroup.attr(settings)
                    },
                    _drawPoint: function(options) {
                        options.hasAnimation = options.hasAnimation && !options.firstDrawing;
                        options.firstDrawing = false;
                        chartSeries._drawPoint.call(this, options)
                    },
                    _getMainColor: function() {
                        return this._options.mainSeriesColor
                    },
                    _createPointStyles: function(pointOptions) {
                        var _pointOptions$color;
                        const that = this;
                        const mainColor = (0, _utils.extractColor)(pointOptions.color, true) || that._getMainColor();
                        const colorId = null === (_pointOptions$color = pointOptions.color) || void 0 === _pointOptions$color ? void 0 : _pointOptions$color.fillId;
                        const hoverStyle = pointOptions.hoverStyle || {};
                        const selectionStyle = pointOptions.selectionStyle || {};
                        if (colorId) {
                            that._turnOffHatching(hoverStyle, selectionStyle)
                        }
                        return {
                            labelColor: mainColor,
                            normal: that._parsePointStyle(pointOptions, mainColor, mainColor),
                            hover: that._parsePointStyle(hoverStyle, colorId || mainColor, mainColor),
                            selection: that._parsePointStyle(selectionStyle, colorId || mainColor, mainColor)
                        }
                    },
                    _updatePointsVisibility: function() {
                        const visibility = this._options.visible;
                        (0, _iterator.each)(this._points, (function(_, point) {
                            point._options.visible = visibility
                        }))
                    },
                    _getOptionsForPoint: function() {
                        return this._options
                    },
                    _animate: function(firstDrawing) {
                        const that = this;
                        that._animatePoints(firstDrawing, (function() {
                            that._animateComplete()
                        }), (function(drawnPoints, complete) {
                            const lastPointIndex = drawnPoints.length - 1;
                            _each(drawnPoints || [], (function(i, point) {
                                point.animate(i === lastPointIndex ? complete : void 0, point.getMarkerCoords())
                            }))
                        }))
                    },
                    getValueRangeInitialValue: areaSeries.getValueRangeInitialValue,
                    _patchMarginOptions: function(options) {
                        var _this$getArgumentAxis;
                        options.checkInterval = !this.useAggregation() || (null === (_this$getArgumentAxis = this.getArgumentAxis()) || void 0 === _this$getArgumentAxis ? void 0 : _this$getArgumentAxis.aggregatedPointBetweenTicks());
                        return options
                    },
                    _defaultAggregator: "sum",
                    _defineDrawingState() {},
                    usePointsToDefineAutoHiding: () => false
                };
                chart.bar = _extend({}, chartSeries, baseBarSeriesMethods, {
                    _getAffineCoordOptions: function() {
                        const rotated = this._options.rotated;
                        const direction = rotated ? "X" : "Y";
                        const settings = {
                            scaleX: rotated ? .001 : 1,
                            scaleY: rotated ? 1 : .001
                        };
                        settings["translate" + direction] = this.getValueAxis().getTranslator().translate("canvas_position_default");
                        return settings
                    },
                    _animatePoints: function(firstDrawing, complete, animateFunc) {
                        const that = this;
                        that._markersGroup.animate({
                            scaleX: 1,
                            scaleY: 1,
                            translateY: 0,
                            translateX: 0
                        }, void 0, complete);
                        if (!firstDrawing) {
                            animateFunc(that._drawnPoints, complete)
                        }
                    },
                    checkSeriesViewportCoord(axis, coord) {
                        if (!chartSeries.checkSeriesViewportCoord.call(this)) {
                            return false
                        }
                        if (axis.isArgumentAxis) {
                            return true
                        }
                        const translator = axis.getTranslator();
                        const range = this.getViewport();
                        const min = translator.translate(range.categories ? range.categories[0] : range.min);
                        const max = translator.translate(range.categories ? range.categories[range.categories.length - 1] : range.max);
                        const rotated = this.getOptions().rotated;
                        const inverted = axis.getOptions().inverted;
                        return rotated && !inverted || !rotated && inverted ? coord >= min && coord <= max : coord >= max && coord <= min
                    },
                    getSeriesPairCoord(coord, isArgument) {
                        let oppositeCoord = null;
                        const {
                            rotated: rotated
                        } = this._options;
                        const isOpposite = !isArgument && !rotated || isArgument && rotated;
                        const coordName = isOpposite ? "vy" : "vx";
                        const oppositeCoordName = isOpposite ? "vx" : "vy";
                        const points = this.getPoints();
                        for (let i = 0; i < points.length; i++) {
                            const p = points[i];
                            let tmpCoord;
                            if (isArgument) {
                                tmpCoord = p.getCenterCoord()[coordName[1]] === coord ? p[oppositeCoordName] : void 0
                            } else {
                                tmpCoord = p[coordName] === coord ? p[oppositeCoordName] : void 0
                            }
                            if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {
                                oppositeCoord = tmpCoord;
                                break
                            }
                        }
                        return oppositeCoord
                    }
                });
                polar.bar = _extend({}, polarSeries, baseBarSeriesMethods, {
                    _animatePoints: function(firstDrawing, complete, animateFunc) {
                        animateFunc(this._drawnPoints, complete)
                    },
                    _setGroupsSettings: chartSeries._setGroupsSettings,
                    _drawPoint: function(point, groups, animationEnabled) {
                        chartSeries._drawPoint.call(this, point, groups, animationEnabled)
                    },
                    _parsePointStyle: function(style) {
                        const base = baseBarSeriesMethods._parsePointStyle.apply(this, arguments);
                        base.opacity = style.opacity;
                        return base
                    },
                    _createGroups: chartSeries._createGroups,
                    _setMarkerGroupSettings: function() {
                        const markersSettings = this._createPointStyles(this._getMarkerGroupOptions()).normal;
                        markersSettings.class = "dxc-markers";
                        this._applyMarkerClipRect(markersSettings);
                        const groupSettings = _extend({}, markersSettings);
                        delete groupSettings.opacity;
                        this._markersGroup.attr(groupSettings)
                    },
                    getSeriesPairCoord(params, isArgument) {
                        let coords = null;
                        const paramName = isArgument ? "argument" : "radius";
                        const points = this.getVisiblePoints();
                        const argAxis = this.getArgumentAxis();
                        const startAngle = argAxis.getAngles()[0];
                        for (let i = 0; i < points.length; i++) {
                            const p = points[i];
                            const tmpPoint = (0, _type.isDefined)(p[paramName]) && (0, _type.isDefined)(params[paramName]) && p[paramName].valueOf() === params[paramName].valueOf() ? (0, _utils.convertPolarToXY)(argAxis.getCenter(), startAngle, -argAxis.getTranslatedAngle(p.angle), p.radius) : void 0;
                            if ((0, _type.isDefined)(tmpPoint)) {
                                coords = tmpPoint;
                                break
                            }
                        }
                        return coords
                    },
                    _createLegendState: areaSeries._createLegendState
                })
            },
        54932:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/base_series.js ***!
              \***********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Series = Series;
                exports.mixins = void 0;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _base_point = __webpack_require__( /*! ./points/base_point */ 54497);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _consts = _interopRequireDefault(__webpack_require__( /*! ../components/consts */ 32410));
                var _range_data_calculator = _interopRequireDefault(__webpack_require__( /*! ./helpers/range_data_calculator */ 63407));
                var scatterSeries = _interopRequireWildcard(__webpack_require__( /*! ./scatter_series */ 21667));
                var lineSeries = _interopRequireWildcard(__webpack_require__( /*! ./line_series */ 7222));
                var areaSeries = _interopRequireWildcard(__webpack_require__( /*! ./area_series */ 90048));
                var barSeries = _interopRequireWildcard(__webpack_require__( /*! ./bar_series */ 58821));
                var _range_series = __webpack_require__( /*! ./range_series */ 57402);
                var _bubble_series = __webpack_require__( /*! ./bubble_series */ 64216);
                var pieSeries = _interopRequireWildcard(__webpack_require__( /*! ./pie_series */ 80610));
                var financialSeries = _interopRequireWildcard(__webpack_require__( /*! ./financial_series */ 29788));
                var stackedSeries = _interopRequireWildcard(__webpack_require__( /*! ./stacked_series */ 92057));

                function _getRequireWildcardCache(nodeInterop) {
                    if ("function" !== typeof WeakMap) {
                        return null
                    }
                    var cacheBabelInterop = new WeakMap;
                    var cacheNodeInterop = new WeakMap;
                    return (_getRequireWildcardCache = function(nodeInterop) {
                        return nodeInterop ? cacheNodeInterop : cacheBabelInterop
                    })(nodeInterop)
                }

                function _interopRequireWildcard(obj, nodeInterop) {
                    if (!nodeInterop && obj && obj.__esModule) {
                        return obj
                    }
                    if (null === obj || "object" !== typeof obj && "function" !== typeof obj) {
                        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 ("default" !== key && 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
                    }
                }
                const seriesNS = {};
                const states = _consts.default.states;
                const SELECTED_STATE = states.selectedMark;
                const HOVER_STATE = states.hoverMark;
                const HOVER = states.hover;
                const NORMAL = states.normal;
                const SELECTION = states.selection;
                const APPLY_SELECTED = states.applySelected;
                const APPLY_HOVER = states.applyHover;
                const RESET_ITEM = states.resetItem;

                function triggerEvent(element, event, point) {
                    element && element.trigger(event, point)
                }
                seriesNS.mixins = {
                    chart: {},
                    pie: {},
                    polar: {}
                };
                seriesNS.mixins.chart.scatter = scatterSeries.chart;
                seriesNS.mixins.polar.scatter = scatterSeries.polar;
                (0, _extend2.extend)(seriesNS.mixins.pie, pieSeries);
                (0, _extend2.extend)(seriesNS.mixins.chart, lineSeries.chart, areaSeries.chart, barSeries.chart, _range_series.chart, _bubble_series.chart, financialSeries, stackedSeries.chart);
                (0, _extend2.extend)(seriesNS.mixins.polar, lineSeries.polar, areaSeries.polar, barSeries.polar, stackedSeries.polar);

                function includePointsMode(mode) {
                    mode = (0, _utils.normalizeEnum)(mode);
                    return "includepoints" === mode || "allseriespoints" === mode
                }

                function mergePointOptionsCore(base, extra) {
                    const options = (0, _extend2.extend)({}, base, extra);
                    options.border = (0, _extend2.extend)({}, base && base.border, extra && extra.border);
                    return options
                }

                function Series(settings, options) {
                    this.fullState = 0;
                    this._extGroups = settings;
                    this._renderer = settings.renderer;
                    this._group = settings.renderer.g().attr({
                        class: "dxc-series"
                    });
                    this._eventTrigger = settings.eventTrigger;
                    this._eventPipe = settings.eventPipe;
                    this._incidentOccurred = settings.incidentOccurred;
                    this._legendCallback = _common.noop;
                    this.updateOptions(options, settings)
                }

                function getData(pointData) {
                    return pointData.data
                }

                function getValueChecker(axisType, axis) {
                    if (!axis || "logarithmic" !== axisType || false !== axis.getOptions().allowNegatives) {
                        return () => true
                    } else {
                        return value => value > 0
                    }
                }
                Series.prototype = {
                    constructor: Series,
                    _createLegendState: _common.noop,
                    getLegendStyles: function() {
                        return this._styles.legendStyles
                    },
                    _createStyles: function(options) {
                        const that = this;
                        const mainSeriesColor = options.mainSeriesColor;
                        const colorId = this._getColorId(options);
                        const hoverStyle = options.hoverStyle || {};
                        const selectionStyle = options.selectionStyle || {};
                        if (colorId) {
                            that._turnOffHatching(hoverStyle, selectionStyle)
                        }
                        that._styles = {
                            labelColor: mainSeriesColor,
                            normal: that._parseStyle(options, mainSeriesColor, mainSeriesColor),
                            hover: that._parseStyle(hoverStyle, colorId || mainSeriesColor, mainSeriesColor),
                            selection: that._parseStyle(selectionStyle, colorId || mainSeriesColor, mainSeriesColor),
                            legendStyles: {
                                normal: that._createLegendState(options, colorId || mainSeriesColor),
                                hover: that._createLegendState(hoverStyle, colorId || mainSeriesColor),
                                selection: that._createLegendState(selectionStyle, colorId || mainSeriesColor)
                            }
                        }
                    },
                    setClippingParams(baseId, wideId, forceClipping) {
                        let clipLabels = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : true;
                        this._paneClipRectID = baseId;
                        this._widePaneClipRectID = wideId;
                        this._forceClipping = forceClipping;
                        this._clipLabels = clipLabels
                    },
                    applyClip: function() {
                        this._group.attr({
                            "clip-path": this._paneClipRectID
                        })
                    },
                    resetClip: function() {
                        this._group.attr({
                            "clip-path": null
                        })
                    },
                    getTagField: function() {
                        return this._options.tagField || "tag"
                    },
                    getValueFields: _common.noop,
                    getSizeField: _common.noop,
                    getArgumentField: _common.noop,
                    getPoints: function() {
                        return this._points
                    },
                    getPointsInViewPort: function() {
                        return _range_data_calculator.default.getPointsInViewPort(this)
                    },
                    _createPoint: function(data, index, oldPoint) {
                        data.index = index;
                        const that = this;
                        const pointsByArgument = that.pointsByArgument;
                        const options = that._getCreatingPointOptions(data);
                        const arg = data.argument.valueOf();
                        let point = oldPoint;
                        if (point) {
                            point.update(data, options)
                        } else {
                            point = new _base_point.Point(that, data, options);
                            if (that.isSelected() && includePointsMode(that.lastSelectionMode)) {
                                point.setView(SELECTION)
                            }
                        }
                        const pointByArgument = pointsByArgument[arg];
                        if (pointByArgument) {
                            pointByArgument.push(point)
                        } else {
                            pointsByArgument[arg] = [point]
                        }
                        if (point.hasValue()) {
                            that.customizePoint(point, data)
                        }
                        return point
                    },
                    getRangeData: function() {
                        return this._visible ? this._getRangeData() : {
                            arg: {},
                            val: {}
                        }
                    },
                    getArgumentRange: function() {
                        return this._visible ? _range_data_calculator.default.getArgumentRange(this) : {
                            arg: {},
                            val: {}
                        }
                    },
                    getViewport: function() {
                        return _range_data_calculator.default.getViewport(this)
                    },
                    _deleteGroup: function(groupName) {
                        const group = this[groupName];
                        if (group) {
                            group.dispose();
                            this[groupName] = null
                        }
                    },
                    updateOptions(newOptions, settings) {
                        const that = this;
                        const widgetType = newOptions.widgetType;
                        const oldType = that.type;
                        const newType = newOptions.type;
                        that.type = newType && (0, _utils.normalizeEnum)(newType.toString());
                        if (!that._checkType(widgetType) || that._checkPolarBarType(widgetType, newOptions)) {
                            that.dispose();
                            that.isUpdated = false;
                            return
                        }
                        if (oldType !== that.type) {
                            that._firstDrawing = true;
                            that._resetType(oldType, widgetType);
                            that._setType(that.type, widgetType)
                        } else {
                            that._defineDrawingState()
                        }
                        that._options = newOptions;
                        that._pointOptions = null;
                        that.name = newOptions.name;
                        that.pane = newOptions.pane;
                        that.tag = newOptions.tag;
                        if (settings) {
                            that._seriesModes = settings.commonSeriesModes || that._seriesModes;
                            that._valueAxis = settings.valueAxis || that._valueAxis;
                            that.axis = that._valueAxis && that._valueAxis.name;
                            that._argumentAxis = settings.argumentAxis || that._argumentAxis
                        }
                        that._createStyles(newOptions);
                        that._stackName = null;
                        that._updateOptions(newOptions);
                        that._visible = newOptions.visible;
                        that.isUpdated = true;
                        that.stack = newOptions.stack;
                        that.barOverlapGroup = newOptions.barOverlapGroup;
                        that._createGroups();
                        that._processEmptyValue = newOptions.ignoreEmptyPoints ? x => null === x ? void 0 : x : x => x
                    },
                    _defineDrawingState() {
                        this._firstDrawing = true
                    },
                    _disposePoints: function(points) {
                        (0, _iterator.each)(points || [], (function(_, p) {
                            p.dispose()
                        }))
                    },
                    updateDataType: function(settings) {
                        this.argumentType = settings.argumentType;
                        this.valueType = settings.valueType;
                        this.argumentAxisType = settings.argumentAxisType;
                        this.valueAxisType = settings.valueAxisType;
                        this.showZero = settings.showZero;
                        this._argumentChecker = getValueChecker(settings.argumentAxisType, this.getArgumentAxis());
                        this._valueChecker = getValueChecker(settings.valueAxisType, this.getValueAxis());
                        return this
                    },
                    _argumentChecker: function() {
                        return true
                    },
                    _valueChecker: function() {
                        return true
                    },
                    getOptions: function() {
                        return this._options
                    },
                    _getOldPoint: function(data, oldPointsByArgument, index) {
                        const arg = data.argument && data.argument.valueOf();
                        const point = (oldPointsByArgument[arg] || [])[0];
                        if (point) {
                            oldPointsByArgument[arg].splice(0, 1)
                        }
                        return point
                    },
                    updateData: function(data) {
                        const that = this;
                        const options = that._options;
                        const nameField = options.nameField;
                        data = data || [];
                        if (data.length) {
                            that._canRenderCompleteHandle = true
                        }
                        const dataSelector = this._getPointDataSelector();
                        let itemsWithoutArgument = 0;
                        that._data = data.reduce((data, dataItem, index) => {
                            const pointDataItem = dataSelector(dataItem);
                            if ((0, _type.isDefined)(pointDataItem.argument)) {
                                if (!nameField || dataItem[nameField] === options.nameFieldValue) {
                                    pointDataItem.index = index;
                                    data.push(pointDataItem)
                                }
                            } else {
                                itemsWithoutArgument++
                            }
                            return data
                        }, []);
                        if (itemsWithoutArgument && itemsWithoutArgument === data.length) {
                            that._incidentOccurred("W2002", [that.name, that.getArgumentField()])
                        }
                        that._endUpdateData()
                    },
                    _getData() {
                        let data = this._data || [];
                        if (this.useAggregation()) {
                            const argumentRange = "discrete" !== this.argumentAxisType ? this.getArgumentRange() : {};
                            const aggregationInfo = this.getArgumentAxis().getAggregationInfo(this._useAllAggregatedPoints, argumentRange);
                            data = this._resample(aggregationInfo, data)
                        }
                        return data
                    },
                    useAggregation: function() {
                        const aggregation = this.getOptions().aggregation;
                        return aggregation && aggregation.enabled
                    },
                    autoHidePointMarkersEnabled: _common.noop,
                    usePointsToDefineAutoHiding: _common.noop,
                    createPoints(useAllAggregatedPoints) {
                        this._normalizeUsingAllAggregatedPoints(useAllAggregatedPoints);
                        this._createPoints()
                    },
                    _normalizeUsingAllAggregatedPoints: function(useAllAggregatedPoints) {
                        this._useAllAggregatedPoints = this.useAggregation() && ("discrete" === this.argumentAxisType || (this._data || []).length > 1 && !!useAllAggregatedPoints)
                    },
                    _createPoints: function() {
                        const that = this;
                        const oldPointsByArgument = that.pointsByArgument || {};
                        const data = that._getData();
                        that.pointsByArgument = {};
                        that._calculateErrorBars(data);
                        const skippedFields = {};
                        const points = data.reduce((points, pointDataItem) => {
                            if (that._checkData(pointDataItem, skippedFields)) {
                                const pointIndex = points.length;
                                const oldPoint = that._getOldPoint(pointDataItem, oldPointsByArgument, pointIndex);
                                const point = that._createPoint(pointDataItem, pointIndex, oldPoint);
                                points.push(point)
                            }
                            return points
                        }, []);
                        for (const field in skippedFields) {
                            if (skippedFields[field] === data.length) {
                                that._incidentOccurred("W2002", [that.name, field])
                            }
                        }
                        Object.keys(oldPointsByArgument).forEach(key => that._disposePoints(oldPointsByArgument[key]));
                        that._points = points
                    },
                    _removeOldSegments: function() {
                        const that = this;
                        const startIndex = that._segments.length;
                        (0, _iterator.each)(that._graphics.splice(startIndex, that._graphics.length) || [], (function(_, elem) {
                            that._removeElement(elem)
                        }));
                        if (that._trackers) {
                            (0, _iterator.each)(that._trackers.splice(startIndex, that._trackers.length) || [], (function(_, elem) {
                                elem.remove()
                            }))
                        }
                    },
                    _prepareSegmentsPosition() {
                        const points = this._points || [];
                        const isCloseSegment = points[0] && points[0].hasValue() && this._options.closed;
                        const segments = points.reduce((function(segments, p) {
                            const segment = segments.at(-1);
                            if (!p.translated) {
                                p.setDefaultCoords()
                            }
                            if (p.hasValue() && p.hasCoords()) {
                                segment.push(p)
                            } else if (!p.hasValue() && segment.length) {
                                segments.push([])
                            }
                            return segments
                        }), [
                            []
                        ]);
                        this._drawSegments(segments, isCloseSegment, false)
                    },
                    _drawElements(animationEnabled, firstDrawing) {
                        const that = this;
                        const points = that._points || [];
                        const isCloseSegment = points[0] && points[0].hasValue() && that._options.closed;
                        const groupForPoint = {
                            markers: that._markersGroup,
                            errorBars: that._errorBarGroup
                        };
                        that._drawnPoints = [];
                        that._graphics = that._graphics || [];
                        that._segments = [];
                        const segments = points.reduce((function(segments, p) {
                            const segment = segments.at(-1);
                            if (p.hasValue() && p.hasCoords()) {
                                that._drawPoint({
                                    point: p,
                                    groups: groupForPoint,
                                    hasAnimation: animationEnabled,
                                    firstDrawing: firstDrawing
                                });
                                segment.push(p)
                            } else if (!p.hasValue()) {
                                segment.length && segments.push([])
                            } else {
                                p.setInvisibility()
                            }
                            return segments
                        }), [
                            []
                        ]);
                        that._drawSegments(segments, isCloseSegment, animationEnabled);
                        that._firstDrawing = !points.length;
                        that._removeOldSegments();
                        animationEnabled && that._animate(firstDrawing)
                    },
                    _drawSegments(segments, closeSegment, animationEnabled) {
                        segments.forEach((segment, index) => {
                            if (segment.length) {
                                const lastSegment = closeSegment && index === segments.length - 1;
                                this._drawSegment(segment, animationEnabled, index, lastSegment)
                            }
                        })
                    },
                    draw(animationEnabled, hideLayoutLabels, legendCallback) {
                        const that = this;
                        const firstDrawing = that._firstDrawing;
                        that._legendCallback = legendCallback || that._legendCallback;
                        if (!that._visible) {
                            that._group.remove();
                            return
                        }
                        that._appendInGroup();
                        if (!that._isAllPointsTranslated) {
                            that.prepareCoordinatesForPoints()
                        }
                        that._setGroupsSettings(animationEnabled, firstDrawing);
                        !firstDrawing && !that._resetApplyingAnimation && that._prepareSegmentsPosition();
                        that._drawElements(animationEnabled, firstDrawing);
                        hideLayoutLabels && that.hideLabels();
                        if (that.isSelected()) {
                            that._changeStyle(that.lastSelectionMode, void 0, true)
                        } else if (that.isHovered()) {
                            that._changeStyle(that.lastHoverMode, void 0, true)
                        } else {
                            that._applyStyle(that._styles.normal)
                        }
                        that._isAllPointsTranslated = false;
                        that._resetApplyingAnimation = false
                    },
                    _translatePoints() {
                        var _this$_points;
                        const points = null !== (_this$_points = this._points) && void 0 !== _this$_points ? _this$_points : [];
                        points.forEach(p => {
                            p.translate()
                        })
                    },
                    prepareCoordinatesForPoints() {
                        this._applyVisibleArea();
                        this._translatePoints();
                        this._isAllPointsTranslated = true
                    },
                    _setLabelGroupSettings: function(animationEnabled) {
                        const settings = {
                            class: "dxc-labels",
                            "pointer-events": "none"
                        };
                        this._clipLabels && this._applyElementsClipRect(settings);
                        this._applyClearingSettings(settings);
                        animationEnabled && (settings.opacity = .001);
                        this._labelsGroup.attr(settings).append(this._extGroups.labelsGroup)
                    },
                    _checkType: function(widgetType) {
                        return !!seriesNS.mixins[widgetType][this.type]
                    },
                    _checkPolarBarType: function(widgetType, options) {
                        return "polar" === widgetType && options.spiderWidget && -1 !== this.type.indexOf("bar")
                    },
                    _resetType: function(seriesType, widgetType) {
                        let methodName;
                        let methods;
                        if (seriesType) {
                            methods = seriesNS.mixins[widgetType][seriesType];
                            for (methodName in methods) {
                                delete this[methodName]
                            }
                        }
                    },
                    _setType: function(seriesType, widgetType) {
                        let methodName;
                        const methods = seriesNS.mixins[widgetType][seriesType];
                        for (methodName in methods) {
                            this[methodName] = methods[methodName]
                        }
                    },
                    _setPointsView: function(view, target) {
                        this.getPoints().forEach((function(point) {
                            if (target !== point) {
                                point.setView(view)
                            }
                        }))
                    },
                    _resetPointsView: function(view, target) {
                        this.getPoints().forEach((function(point) {
                            if (target !== point) {
                                point.resetView(view)
                            }
                        }))
                    },
                    _resetNearestPoint: function() {
                        this._nearestPoint && null !== this._nearestPoint.series && this._nearestPoint.resetView(HOVER);
                        this._nearestPoint = null
                    },
                    _setSelectedState: function(mode) {
                        const that = this;
                        that.lastSelectionMode = (0, _utils.normalizeEnum)(mode || that._options.selectionMode);
                        that.fullState = that.fullState | SELECTED_STATE;
                        that._resetNearestPoint();
                        that._changeStyle(that.lastSelectionMode);
                        if ("none" !== that.lastSelectionMode && that.isHovered() && includePointsMode(that.lastHoverMode)) {
                            that._resetPointsView(HOVER)
                        }
                    },
                    _releaseSelectedState: function() {
                        const that = this;
                        that.fullState = that.fullState & ~SELECTED_STATE;
                        that._changeStyle(that.lastSelectionMode, SELECTION);
                        if ("none" !== that.lastSelectionMode && that.isHovered() && includePointsMode(that.lastHoverMode)) {
                            that._setPointsView(HOVER)
                        }
                    },
                    isFullStackedSeries: function() {
                        return 0 === this.type.indexOf("fullstacked")
                    },
                    isStackedSeries: function() {
                        return 0 === this.type.indexOf("stacked")
                    },
                    resetApplyingAnimation: function(isFirstDrawing) {
                        this._resetApplyingAnimation = true;
                        if (isFirstDrawing) {
                            this._firstDrawing = true
                        }
                    },
                    isFinancialSeries: function() {
                        return "stock" === this.type || "candlestick" === this.type
                    },
                    _canChangeView: function() {
                        return !this.isSelected() && "none" !== (0, _utils.normalizeEnum)(this._options.hoverMode)
                    },
                    _changeStyle: function(mode, resetView, skipPoints) {
                        const that = this;
                        let state = that.fullState;
                        const styles = [NORMAL, HOVER, SELECTION, SELECTION];
                        if ("none" === that.lastHoverMode) {
                            state &= ~HOVER_STATE
                        }
                        if ("none" === that.lastSelectionMode) {
                            state &= ~SELECTED_STATE
                        }
                        if (includePointsMode(mode) && !skipPoints) {
                            if (!resetView) {
                                that._setPointsView(styles[state])
                            } else {
                                that._resetPointsView(resetView)
                            }
                        }
                        that._legendCallback([RESET_ITEM, APPLY_HOVER, APPLY_SELECTED, APPLY_SELECTED][state]);
                        that._applyStyle(that._styles[styles[state]])
                    },
                    updateHover: function(x, y) {
                        const that = this;
                        const currentNearestPoint = that._nearestPoint;
                        const point = that.isHovered() && "nearestpoint" === that.lastHoverMode && that.getNeighborPoint(x, y);
                        if (point !== currentNearestPoint && !(that.isSelected() && "none" !== that.lastSelectionMode)) {
                            that._resetNearestPoint();
                            if (point) {
                                point.setView(HOVER);
                                that._nearestPoint = point
                            }
                        }
                    },
                    _getMainAxisName: function() {
                        return this._options.rotated ? "X" : "Y"
                    },
                    areLabelsVisible: function() {
                        return !(0, _type.isDefined)(this._options.maxLabelCount) || this._points.length <= this._options.maxLabelCount
                    },
                    getLabelVisibility: function() {
                        return this.areLabelsVisible() && this._options.label && this._options.label.visible
                    },
                    customizePoint: function(point, pointData) {
                        const that = this;
                        const options = that._options;
                        const customizePoint = options.customizePoint;
                        let customizeObject;
                        let pointOptions;
                        let customLabelOptions;
                        let customOptions;
                        const customizeLabel = options.customizeLabel;
                        let useLabelCustomOptions;
                        let usePointCustomOptions;
                        if (customizeLabel && customizeLabel.call) {
                            customizeObject = (0, _extend2.extend)({
                                seriesName: that.name
                            }, pointData);
                            customizeObject.series = that;
                            customLabelOptions = customizeLabel.call(customizeObject, customizeObject);
                            useLabelCustomOptions = customLabelOptions && !(0, _type.isEmptyObject)(customLabelOptions);
                            customLabelOptions = useLabelCustomOptions ? (0, _extend2.extend)(true, {}, options.label, customLabelOptions) : null
                        }
                        if (customizePoint && customizePoint.call) {
                            customizeObject = customizeObject || (0, _extend2.extend)({
                                seriesName: that.name
                            }, pointData);
                            customizeObject.series = that;
                            customOptions = customizePoint.call(customizeObject, customizeObject);
                            usePointCustomOptions = customOptions && !(0, _type.isEmptyObject)(customOptions)
                        }
                        if (useLabelCustomOptions || usePointCustomOptions) {
                            pointOptions = that._parsePointOptions(that._preparePointOptions(customOptions), customLabelOptions || options.label, pointData, point);
                            pointOptions.styles.useLabelCustomOptions = useLabelCustomOptions;
                            pointOptions.styles.usePointCustomOptions = usePointCustomOptions;
                            point.updateOptions(pointOptions)
                        }
                    },
                    show: function() {
                        if (!this._visible) {
                            this._changeVisibility(true)
                        }
                    },
                    hide: function() {
                        if (this._visible) {
                            this._changeVisibility(false)
                        }
                    },
                    _changeVisibility: function(visibility) {
                        this._visible = this._options.visible = visibility;
                        this._updatePointsVisibility();
                        this.hidePointTooltip();
                        this._options.visibilityChanged(this)
                    },
                    _updatePointsVisibility: _common.noop,
                    hideLabels: function() {
                        (0, _iterator.each)(this._points, (function(_, point) {
                            point._label.draw(false)
                        }))
                    },
                    _turnOffHatching(hoverStyle, selectionStyle) {
                        if (hoverStyle.hatching) {
                            hoverStyle.hatching.direction = "none"
                        }
                        if (selectionStyle.hatching) {
                            selectionStyle.hatching.direction = "none"
                        }
                    },
                    _parsePointOptions: function(pointOptions, labelOptions, data, point) {
                        const options = this._options;
                        const styles = this._createPointStyles(pointOptions, data, point);
                        const parsedOptions = (0, _extend2.extend)({}, pointOptions, {
                            type: options.type,
                            rotated: options.rotated,
                            styles: styles,
                            widgetType: options.widgetType,
                            visibilityChanged: options.visibilityChanged
                        });
                        parsedOptions.label = function(labelOptions, defaultColor) {
                            const opt = labelOptions || {};
                            const labelFont = (0, _extend2.extend)({}, opt.font) || {};
                            const labelBorder = opt.border || {};
                            const labelConnector = opt.connector || {};
                            const backgroundAttr = {
                                fill: opt.backgroundColor || defaultColor,
                                "stroke-width": labelBorder.visible ? labelBorder.width || 0 : 0,
                                stroke: labelBorder.visible && labelBorder.width ? labelBorder.color : "none",
                                dashStyle: labelBorder.dashStyle
                            };
                            const connectorAttr = {
                                stroke: labelConnector.visible && labelConnector.width ? labelConnector.color || defaultColor : "none",
                                "stroke-width": labelConnector.visible ? labelConnector.width || 0 : 0
                            };
                            labelFont.color = "none" === opt.backgroundColor && "#ffffff" === (0, _utils.normalizeEnum)(labelFont.color) && "inside" !== opt.position ? defaultColor : labelFont.color;
                            return {
                                alignment: opt.alignment,
                                format: opt.format,
                                argumentFormat: opt.argumentFormat,
                                customizeText: (0, _type.isFunction)(opt.customizeText) ? opt.customizeText : void 0,
                                attributes: {
                                    font: labelFont
                                },
                                visible: 0 !== labelFont.size ? opt.visible : false,
                                showForZeroValues: opt.showForZeroValues,
                                horizontalOffset: opt.horizontalOffset,
                                verticalOffset: opt.verticalOffset,
                                radialOffset: opt.radialOffset,
                                background: backgroundAttr,
                                position: opt.position,
                                connector: connectorAttr,
                                rotationAngle: opt.rotationAngle,
                                wordWrap: opt.wordWrap,
                                textOverflow: opt.textOverflow,
                                cssClass: opt.cssClass,
                                displayFormat: opt.displayFormat
                            }
                        }(labelOptions, styles.labelColor);
                        if (this.areErrorBarsVisible()) {
                            parsedOptions.errorBars = options.valueErrorBar
                        }
                        return parsedOptions
                    },
                    _preparePointOptions: function(customOptions) {
                        const pointOptions = this._getOptionsForPoint();
                        return customOptions ? function(base, extra) {
                            const options = mergePointOptionsCore(base, extra);
                            options.image = (0, _extend2.extend)(true, {}, base.image, extra.image);
                            options.selectionStyle = mergePointOptionsCore(base.selectionStyle, extra.selectionStyle);
                            options.hoverStyle = mergePointOptionsCore(base.hoverStyle, extra.hoverStyle);
                            return options
                        }(pointOptions, customOptions) : pointOptions
                    },
                    _getMarkerGroupOptions: function() {
                        return (0, _extend2.extend)(false, {}, this._getOptionsForPoint(), {
                            hoverStyle: {},
                            selectionStyle: {}
                        })
                    },
                    _getAggregationMethod: function(isDiscrete, aggregateByCategory) {
                        const options = this.getOptions().aggregation;
                        const method = (0, _utils.normalizeEnum)(options.method);
                        const customAggregator = "custom" === method && options.calculate;
                        let aggregator;
                        if (isDiscrete && !aggregateByCategory) {
                            aggregator = _ref => {
                                let {
                                    data: data
                                } = _ref;
                                return data[0]
                            }
                        } else {
                            aggregator = this._aggregators[method] || this._aggregators[this._defaultAggregator]
                        }
                        return customAggregator || aggregator
                    },
                    _resample(_ref2, data) {
                        let {
                            interval: interval,
                            ticks: ticks,
                            aggregateByCategory: aggregateByCategory
                        } = _ref2;
                        const that = this;
                        const isDiscrete = "discrete" === that.argumentAxisType || "discrete" === that.valueAxisType;
                        let dataIndex = 0;
                        const dataSelector = this._getPointDataSelector();
                        const options = that.getOptions();
                        const addAggregatedData = (target, data, aggregationInfo) => {
                            if (!data) {
                                return
                            }
                            const processData = d => {
                                const pointData = d && dataSelector(d, options);
                                if (pointData && that._checkData(pointData)) {
                                    pointData.aggregationInfo = aggregationInfo;
                                    target.push(pointData)
                                }
                            };
                            if (Array.isArray(data)) {
                                data.forEach(processData)
                            } else {
                                processData(data)
                            }
                        };
                        const aggregationMethod = this._getAggregationMethod(isDiscrete, aggregateByCategory);
                        if (isDiscrete) {
                            if (aggregateByCategory) {
                                const categories = this.getArgumentAxis().getTranslator().getBusinessRange().categories;
                                const groups = categories.reduce((g, category) => {
                                    g[category.valueOf()] = [];
                                    return g
                                }, {});
                                data.forEach(dataItem => {
                                    groups[dataItem.argument.valueOf()].push(dataItem)
                                });
                                return categories.reduce((result, c) => {
                                    addAggregatedData(result, aggregationMethod({
                                        aggregationInterval: null,
                                        intervalStart: c,
                                        intervalEnd: c,
                                        data: groups[c.valueOf()].map(getData)
                                    }, that));
                                    return result
                                }, [])
                            } else {
                                return data.reduce((result, dataItem, index, data) => {
                                    result[1].push(dataItem);
                                    if (index === data.length - 1 || (index + 1) % interval === 0) {
                                        const dataInInterval = result[1];
                                        const aggregationInfo = {
                                            aggregationInterval: interval,
                                            data: dataInInterval.map(getData)
                                        };
                                        addAggregatedData(result[0], aggregationMethod(aggregationInfo, that));
                                        result[1] = []
                                    }
                                    return result
                                }, [
                                    [],
                                    []
                                ])[0]
                            }
                        }
                        const aggregatedData = [];
                        if (1 === ticks.length) {
                            const aggregationInfo = {
                                intervalStart: ticks[0],
                                intervalEnd: ticks[0],
                                aggregationInterval: null,
                                data: data.map(getData)
                            };
                            addAggregatedData(aggregatedData, aggregationMethod(aggregationInfo, that), aggregationInfo)
                        } else {
                            for (let i = 1; i < ticks.length; i++) {
                                const intervalEnd = ticks[i];
                                const intervalStart = ticks[i - 1];
                                const dataInInterval = [];
                                while (data[dataIndex] && data[dataIndex].argument < intervalEnd) {
                                    if (data[dataIndex].argument >= intervalStart) {
                                        dataInInterval.push(data[dataIndex])
                                    }
                                    dataIndex++
                                }
                                const aggregationInfo = {
                                    intervalStart: intervalStart,
                                    intervalEnd: intervalEnd,
                                    aggregationInterval: interval,
                                    data: dataInInterval.map(getData)
                                };
                                addAggregatedData(aggregatedData, aggregationMethod(aggregationInfo, that), aggregationInfo)
                            }
                        }
                        that._endUpdateData();
                        return aggregatedData
                    },
                    canRenderCompleteHandle: function() {
                        const result = this._canRenderCompleteHandle;
                        delete this._canRenderCompleteHandle;
                        return !!result
                    },
                    isHovered: function() {
                        return !!(1 & this.fullState)
                    },
                    isSelected: function() {
                        return !!(2 & this.fullState)
                    },
                    isVisible: function() {
                        return this._visible
                    },
                    getAllPoints: function() {
                        this._createAllAggregatedPoints();
                        return (this._points || []).slice()
                    },
                    getPointByPos: function(pos) {
                        this._createAllAggregatedPoints();
                        return (this._points || [])[pos]
                    },
                    getVisiblePoints: function() {
                        return (this._drawnPoints || []).slice()
                    },
                    selectPoint: function(point) {
                        if (!point.isSelected()) {
                            ! function(point, legendCallback) {
                                point.fullState |= SELECTED_STATE;
                                point.applyView(legendCallback)
                            }(point, this._legendCallback);
                            this._eventPipe({
                                action: "pointSelect",
                                target: point
                            });
                            this._eventTrigger("pointSelectionChanged", {
                                target: point
                            })
                        }
                    },
                    deselectPoint: function(point) {
                        if (point.isSelected()) {
                            ! function(point, legendCallback) {
                                point.fullState &= ~SELECTED_STATE;
                                point.applyView(legendCallback)
                            }(point, this._legendCallback);
                            this._eventPipe({
                                action: "pointDeselect",
                                target: point
                            });
                            this._eventTrigger("pointSelectionChanged", {
                                target: point
                            })
                        }
                    },
                    hover: function(mode) {
                        const eventTrigger = this._eventTrigger;
                        if (this.isHovered()) {
                            return
                        }
                        this.lastHoverMode = (0, _utils.normalizeEnum)(mode || this._options.hoverMode);
                        this.fullState = this.fullState | HOVER_STATE;
                        this._changeStyle(this.lastHoverMode, void 0, this.isSelected() && "none" !== this.lastSelectionMode);
                        eventTrigger("seriesHoverChanged", {
                            target: this
                        })
                    },
                    clearHover: function() {
                        const eventTrigger = this._eventTrigger;
                        if (!this.isHovered()) {
                            return
                        }
                        this._resetNearestPoint();
                        this.fullState = this.fullState & ~HOVER_STATE;
                        this._changeStyle(this.lastHoverMode, HOVER, this.isSelected() && "none" !== this.lastSelectionMode);
                        eventTrigger("seriesHoverChanged", {
                            target: this
                        })
                    },
                    hoverPoint: function(point) {
                        const that = this;
                        if (!point.isHovered()) {
                            point.clearHover();
                            ! function(point, legendCallback) {
                                point.fullState |= HOVER_STATE;
                                point.applyView(legendCallback)
                            }(point, that._legendCallback);
                            that._canChangeView() && that._applyStyle(that._styles.hover);
                            that._eventPipe({
                                action: "pointHover",
                                target: point
                            });
                            that._eventTrigger("pointHoverChanged", {
                                target: point
                            })
                        }
                    },
                    clearPointHover: function() {
                        const that = this;
                        that.getPoints().some((function(currentPoint) {
                            if (currentPoint.isHovered()) {
                                ! function(point, legendCallback) {
                                    point.fullState &= ~HOVER_STATE;
                                    point.applyView(legendCallback);
                                    point.releaseHoverState()
                                }(currentPoint, that._legendCallback);
                                that._canChangeView() && that._applyStyle(that._styles.normal);
                                that._eventPipe({
                                    action: "clearPointHover",
                                    target: currentPoint
                                });
                                that._eventTrigger("pointHoverChanged", {
                                    target: currentPoint
                                });
                                return true
                            }
                            return false
                        }))
                    },
                    showPointTooltip: function(point) {
                        triggerEvent(this._extGroups.seriesGroup, "showpointtooltip", point)
                    },
                    hidePointTooltip: function(point) {
                        triggerEvent(this._extGroups.seriesGroup, "hidepointtooltip", point)
                    },
                    select: function() {
                        const that = this;
                        if (!that.isSelected()) {
                            that._setSelectedState(that._options.selectionMode);
                            that._eventPipe({
                                action: "seriesSelect",
                                target: that
                            });
                            that._group.toForeground();
                            that._eventTrigger("seriesSelectionChanged", {
                                target: that
                            })
                        }
                    },
                    clearSelection: function() {
                        const that = this;
                        if (that.isSelected()) {
                            that._releaseSelectedState();
                            that._eventTrigger("seriesSelectionChanged", {
                                target: that
                            })
                        }
                    },
                    getPointsByArg: function(arg, skipPointsCreation) {
                        const that = this;
                        const argValue = arg.valueOf();
                        let points = that.pointsByArgument[argValue];
                        if (!points && !skipPointsCreation && that._createAllAggregatedPoints()) {
                            points = that.pointsByArgument[argValue]
                        }
                        return points || []
                    },
                    _createAllAggregatedPoints: function() {
                        if (this.useAggregation() && !this._useAllAggregatedPoints) {
                            this.createPoints(true);
                            return true
                        }
                        return false
                    },
                    getPointsByKeys: function(arg) {
                        return this.getPointsByArg(arg)
                    },
                    notify: function(data) {
                        const that = this;
                        const action = data.action;
                        const seriesModes = that._seriesModes;
                        const target = data.target;
                        const targetOptions = target.getOptions();
                        const pointHoverMode = (0, _utils.normalizeEnum)(targetOptions.hoverMode);
                        const selectionModeOfPoint = (0, _utils.normalizeEnum)(targetOptions.selectionMode);
                        if ("pointHover" === action) {
                            that._hoverPointHandler(target, pointHoverMode, data.notifyLegend)
                        } else if ("clearPointHover" === action) {
                            that._clearPointHoverHandler(target, pointHoverMode, data.notifyLegend)
                        } else if ("seriesSelect" === action) {
                            target !== that && "single" === seriesModes.seriesSelectionMode && that.clearSelection()
                        } else if ("pointSelect" === action) {
                            if ("single" === seriesModes.pointSelectionMode) {
                                that.getPoints().some((function(currentPoint) {
                                    if (currentPoint !== target && currentPoint.isSelected()) {
                                        that.deselectPoint(currentPoint);
                                        return true
                                    }
                                    return false
                                }))
                            }
                            that._selectPointHandler(target, selectionModeOfPoint)
                        } else if ("pointDeselect" === action) {
                            that._deselectPointHandler(target, selectionModeOfPoint)
                        }
                    },
                    _selectPointHandler: function(target, mode) {
                        const that = this;
                        if ("allseriespoints" === mode) {
                            target.series === that && that._setPointsView(SELECTION, target)
                        } else if ("allargumentpoints" === mode) {
                            that.getPointsByKeys(target.argument, target.argumentIndex).forEach((function(currentPoint) {
                                currentPoint !== target && currentPoint.setView(SELECTION)
                            }))
                        }
                    },
                    _deselectPointHandler: function(target, mode) {
                        if ("allseriespoints" === mode) {
                            target.series === this && this._resetPointsView(SELECTION, target)
                        } else if ("allargumentpoints" === mode) {
                            this.getPointsByKeys(target.argument, target.argumentIndex).forEach((function(currentPoint) {
                                currentPoint !== target && currentPoint.resetView(SELECTION)
                            }))
                        }
                    },
                    _hoverPointHandler: function(target, mode, notifyLegend) {
                        const that = this;
                        if (target.series !== that && "allargumentpoints" === mode) {
                            that.getPointsByKeys(target.argument, target.argumentIndex).forEach((function(currentPoint) {
                                currentPoint.setView(HOVER)
                            }));
                            notifyLegend && that._legendCallback(target)
                        } else if ("allseriespoints" === mode && target.series === that) {
                            that._setPointsView(HOVER, target)
                        }
                    },
                    _clearPointHoverHandler: function(target, mode, notifyLegend) {
                        const that = this;
                        if ("allargumentpoints" === mode) {
                            target.series !== that && that.getPointsByKeys(target.argument, target.argumentIndex).forEach((function(currentPoint) {
                                currentPoint.resetView(HOVER)
                            }));
                            notifyLegend && that._legendCallback(target)
                        } else if ("allseriespoints" === mode && target.series === that) {
                            that._resetPointsView(HOVER, target)
                        }
                    },
                    _deletePoints: function() {
                        this._disposePoints(this._points);
                        this._points = this._drawnPoints = null
                    },
                    _deleteTrackers: function() {
                        (0, _iterator.each)(this._trackers || [], (function(_, tracker) {
                            tracker.remove()
                        }));
                        this._trackersGroup && this._trackersGroup.dispose();
                        this._trackers = this._trackersGroup = null
                    },
                    dispose: function() {
                        this._deletePoints();
                        this._group.dispose();
                        this._labelsGroup && this._labelsGroup.dispose();
                        this._errorBarGroup && this._errorBarGroup.dispose();
                        this._deleteTrackers();
                        this._group = this._extGroups = this._markersGroup = this._elementsGroup = this._bordersGroup = this._labelsGroup = this._errorBarGroup = this._graphics = this._rangeData = this._renderer = this._styles = this._options = this._pointOptions = this._drawnPoints = this.pointsByArgument = this._segments = this._prevSeries = null
                    },
                    correctPosition: _common.noop,
                    drawTrackers: _common.noop,
                    getNeighborPoint: _common.noop,
                    areErrorBarsVisible: _common.noop,
                    _getColorId: _common.noop,
                    getMarginOptions: function() {
                        return this._patchMarginOptions({
                            percentStick: this.isFullStackedSeries()
                        })
                    },
                    getColor: function() {
                        return this.getLegendStyles().normal.fill
                    },
                    getOpacity: function() {
                        return this._options.opacity
                    },
                    getStackName: function() {
                        return this._stackName
                    },
                    getBarOverlapGroup: function() {
                        return this._options.barOverlapGroup
                    },
                    getPointByCoord: function(x, y) {
                        const point = this.getNeighborPoint(x, y);
                        return null !== point && void 0 !== point && point.coordsIn(x, y) ? point : null
                    },
                    getValueAxis: function() {
                        return this._valueAxis
                    },
                    getArgumentAxis: function() {
                        return this._argumentAxis
                    },
                    getMarkersGroup() {
                        return this._markersGroup
                    },
                    getRenderer() {
                        return this._renderer
                    },
                    removePointElements() {
                        if (this._markersGroup) {
                            (0, _iterator.each)(this._points, (_, p) => p.deleteMarker());
                            this._markersGroup.dispose();
                            this._markersGroup = null
                        }
                    },
                    removeGraphicElements() {
                        const that = this;
                        if (that._elementsGroup) {
                            that._elementsGroup.dispose();
                            that._elementsGroup = null
                        }(0, _iterator.each)(that._graphics || [], (_, elem) => {
                            that._removeElement(elem)
                        });
                        that._graphics = null
                    },
                    removeBordersGroup() {
                        if (this._bordersGroup) {
                            this._bordersGroup.dispose();
                            this._bordersGroup = null
                        }
                    }
                };
                const mixins = seriesNS.mixins;
                exports.mixins = mixins
            },
        64216:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/bubble_series.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.chart = void 0;
                var _line_series = __webpack_require__( /*! ./line_series */ 7222);
                var _scatter_series = __webpack_require__( /*! ./scatter_series */ 21667);
                var _area_series = __webpack_require__( /*! ./area_series */ 90048);
                var _bar_series = __webpack_require__( /*! ./bar_series */ 58821);
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                const lineSeries = _line_series.chart.line;
                const areaSeries = _area_series.chart.area;
                const chartBarSeries = _bar_series.chart.bar;
                const polarBarSeries = _bar_series.polar.bar;
                const _extend = _extend2.extend;
                const _each = _iterator.each;
                const _noop = _common.noop;
                const chart = {};
                exports.chart = chart;
                chart.bubble = _extend({}, _scatter_series.chart, {
                    _calculateErrorBars: _noop,
                    _getMainColor: chartBarSeries._getMainColor,
                    _createPointStyles: chartBarSeries._createPointStyles,
                    _updatePointsVisibility: chartBarSeries._updatePointsVisibility,
                    _getOptionsForPoint: chartBarSeries._getOptionsForPoint,
                    _applyMarkerClipRect: lineSeries._applyElementsClipRect,
                    _parsePointStyle: polarBarSeries._parsePointStyle,
                    _createLegendState: areaSeries._createLegendState,
                    _getColorId: areaSeries._getColorId,
                    _setMarkerGroupSettings: polarBarSeries._setMarkerGroupSettings,
                    areErrorBarsVisible: _noop,
                    _createErrorBarGroup: _noop,
                    _checkData: function(data, skippedFields) {
                        return _scatter_series.chart._checkData.call(this, data, skippedFields, {
                            value: this.getValueFields()[0],
                            size: this.getSizeField()
                        })
                    },
                    _getPointDataSelector: function(data, options) {
                        const sizeField = this.getSizeField();
                        const baseGetter = _scatter_series.chart._getPointDataSelector.call(this);
                        return data => {
                            const pointData = baseGetter(data);
                            pointData.size = data[sizeField];
                            return pointData
                        }
                    },
                    _aggregators: {
                        avg(_ref, series) {
                            let {
                                data: data,
                                intervalStart: intervalStart,
                                intervalEnd: intervalEnd
                            } = _ref;
                            if (!data.length) {
                                return
                            }
                            const valueField = series.getValueFields()[0];
                            const sizeField = series.getSizeField();
                            const aggregate = data.reduce((result, item) => {
                                result[0] += item[valueField];
                                result[1] += item[sizeField];
                                result[2]++;
                                return result
                            }, [0, 0, 0]);
                            return {
                                [valueField]: aggregate[0] / aggregate[2],
                                [sizeField]: aggregate[1] / aggregate[2],
                                [series.getArgumentField()]: series._getIntervalCenter(intervalStart, intervalEnd)
                            }
                        }
                    },
                    getValueFields: function() {
                        return [this._options.valueField || "val"]
                    },
                    getSizeField: function() {
                        return this._options.sizeField || "size"
                    },
                    _animate: function() {
                        const that = this;
                        const lastPointIndex = that._drawnPoints.length - 1;
                        const labelsGroup = that._labelsGroup;
                        const labelAnimFunc = function() {
                            labelsGroup && labelsGroup.animate({
                                opacity: 1
                            }, {
                                duration: that._defaultDuration
                            })
                        };
                        _each(that._drawnPoints || [], (function(i, p) {
                            p.animate(i === lastPointIndex ? labelAnimFunc : void 0, {
                                r: p.bubbleSize,
                                translateX: p.x,
                                translateY: p.y
                            })
                        }))
                    },
                    _patchMarginOptions: function(options) {
                        options.processBubbleSize = true;
                        return options
                    }
                })
            },
        29788:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/financial_series.js ***!
              \****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.stock = exports.candlestick = void 0;
                var _scatter_series = __webpack_require__( /*! ./scatter_series */ 21667);
                var _bar_series = __webpack_require__( /*! ./bar_series */ 58821);
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                const barSeries = _bar_series.chart.bar;
                const stock = (0, _extend2.extend)({}, _scatter_series.chart, {
                    _animate: _common.noop,
                    _applyMarkerClipRect: function(settings) {
                        settings["clip-path"] = this._forceClipping ? this._paneClipRectID : this._widePaneClipRectID
                    },
                    _updatePointsVisibility: barSeries._updatePointsVisibility,
                    _getOptionsForPoint: barSeries._getOptionsForPoint,
                    _createErrorBarGroup: _common.noop,
                    areErrorBarsVisible: _common.noop,
                    _createGroups: _scatter_series.chart._createGroups,
                    _setMarkerGroupSettings: function() {
                        const markersGroup = this._markersGroup;
                        const styles = this._createPointStyles(this._getMarkerGroupOptions());
                        const defaultStyle = (0, _extend2.extend)(styles.normal, {
                            class: "default-markers"
                        });
                        const defaultPositiveStyle = (0, _extend2.extend)(styles.positive.normal, {
                            class: "default-positive-markers"
                        });
                        const reductionStyle = (0, _extend2.extend)(styles.reduction.normal, {
                            class: "reduction-markers"
                        });
                        const reductionPositiveStyle = (0, _extend2.extend)(styles.reductionPositive.normal, {
                            class: "reduction-positive-markers"
                        });
                        const markerSettings = {
                            class: "dxc-markers"
                        };
                        this._applyMarkerClipRect(markerSettings);
                        markersGroup.attr(markerSettings);
                        this._createGroup("defaultMarkersGroup", markersGroup, markersGroup, defaultStyle);
                        this._createGroup("reductionMarkersGroup", markersGroup, markersGroup, reductionStyle);
                        this._createGroup("defaultPositiveMarkersGroup", markersGroup, markersGroup, defaultPositiveStyle);
                        this._createGroup("reductionPositiveMarkersGroup", markersGroup, markersGroup, reductionPositiveStyle)
                    },
                    _setGroupsSettings: function() {
                        _scatter_series.chart._setGroupsSettings.call(this, false)
                    },
                    _getCreatingPointOptions: function() {
                        const that = this;
                        let defaultPointOptions;
                        let creatingPointOptions = that._predefinedPointOptions;
                        if (!creatingPointOptions) {
                            defaultPointOptions = this._getPointOptions();
                            that._predefinedPointOptions = creatingPointOptions = (0, _extend2.extend)(true, {
                                styles: {}
                            }, defaultPointOptions);
                            creatingPointOptions.styles.normal = creatingPointOptions.styles.positive.normal = creatingPointOptions.styles.reduction.normal = creatingPointOptions.styles.reductionPositive.normal = {
                                "stroke-width": defaultPointOptions.styles && defaultPointOptions.styles.normal && defaultPointOptions.styles.normal["stroke-width"]
                            }
                        }
                        return creatingPointOptions
                    },
                    _checkData: function(data, skippedFields) {
                        const valueFields = this.getValueFields();
                        return _scatter_series.chart._checkData.call(this, data, skippedFields, {
                            openValue: valueFields[0],
                            highValue: valueFields[1],
                            lowValue: valueFields[2],
                            closeValue: valueFields[3]
                        }) && data.highValue === data.highValue && data.lowValue === data.lowValue
                    },
                    _getPointDataSelector: function(data, options) {
                        const that = this;
                        let level;
                        const valueFields = that.getValueFields();
                        const argumentField = that.getArgumentField();
                        const openValueField = valueFields[0];
                        const highValueField = valueFields[1];
                        const lowValueField = valueFields[2];
                        const closeValueField = valueFields[3];
                        that.level = that._options.reduction.level;
                        switch ((0, _utils.normalizeEnum)(that.level)) {
                            case "open":
                                level = openValueField;
                                break;
                            case "high":
                                level = highValueField;
                                break;
                            case "low":
                                level = lowValueField;
                                break;
                            default:
                                level = closeValueField;
                                that.level = "close"
                        }
                        let prevLevelValue;
                        return data => {
                            const reductionValue = data[level];
                            let isReduction = false;
                            if ((0, _type.isDefined)(reductionValue)) {
                                if ((0, _type.isDefined)(prevLevelValue)) {
                                    isReduction = reductionValue < prevLevelValue
                                }
                                prevLevelValue = reductionValue
                            }
                            return {
                                argument: data[argumentField],
                                highValue: this._processEmptyValue(data[highValueField]),
                                lowValue: this._processEmptyValue(data[lowValueField]),
                                closeValue: this._processEmptyValue(data[closeValueField]),
                                openValue: this._processEmptyValue(data[openValueField]),
                                reductionValue: reductionValue,
                                tag: data[that.getTagField()],
                                isReduction: isReduction,
                                data: data
                            }
                        }
                    },
                    _parsePointStyle: function(style, defaultColor, innerColor) {
                        const color = (0, _utils.extractColor)(style.color, true);
                        return {
                            stroke: color || defaultColor,
                            "stroke-width": style.width,
                            fill: color || innerColor
                        }
                    },
                    _getDefaultStyle: function(options) {
                        const mainPointColor = (0, _utils.extractColor)(options.color, true) || this._options.mainSeriesColor;
                        return {
                            normal: this._parsePointStyle(options, mainPointColor, mainPointColor),
                            hover: this._parsePointStyle(options.hoverStyle, mainPointColor, mainPointColor),
                            selection: this._parsePointStyle(options.selectionStyle, mainPointColor, mainPointColor)
                        }
                    },
                    _getReductionStyle: function(options) {
                        const reductionColor = options.reduction.color;
                        return {
                            normal: this._parsePointStyle({
                                color: reductionColor,
                                width: options.width,
                                hatching: options.hatching
                            }, reductionColor, reductionColor),
                            hover: this._parsePointStyle(options.hoverStyle, reductionColor, reductionColor),
                            selection: this._parsePointStyle(options.selectionStyle, reductionColor, reductionColor)
                        }
                    },
                    _createPointStyles: function(pointOptions) {
                        const innerColor = this._options.innerColor;
                        const styles = this._getDefaultStyle(pointOptions);
                        const positiveStyle = (0, _extend2.extend)(true, {}, styles);
                        const reductionStyle = this._getReductionStyle(pointOptions);
                        const reductionPositiveStyle = (0, _extend2.extend)(true, {}, reductionStyle);
                        positiveStyle.normal.fill = positiveStyle.hover.fill = positiveStyle.selection.fill = innerColor;
                        reductionPositiveStyle.normal.fill = reductionPositiveStyle.hover.fill = reductionPositiveStyle.selection.fill = innerColor;
                        styles.positive = positiveStyle;
                        styles.reduction = reductionStyle;
                        styles.reductionPositive = reductionPositiveStyle;
                        styles.labelColor = this._options.mainSeriesColor;
                        return styles
                    },
                    _endUpdateData: function() {
                        delete this._predefinedPointOptions
                    },
                    _defaultAggregator: "ohlc",
                    _aggregators: {
                        ohlc: (_ref, series) => {
                            let {
                                intervalStart: intervalStart,
                                intervalEnd: intervalEnd,
                                data: data
                            } = _ref;
                            if (!data.length) {
                                return
                            }
                            let result = {};
                            const valueFields = series.getValueFields();
                            const highValueField = valueFields[1];
                            const lowValueField = valueFields[2];
                            result[highValueField] = -1 / 0;
                            result[lowValueField] = 1 / 0;
                            result = data.reduce((function(result, item) {
                                if (null !== item[highValueField]) {
                                    result[highValueField] = Math.max(result[highValueField], item[highValueField])
                                }
                                if (null !== item[lowValueField]) {
                                    result[lowValueField] = Math.min(result[lowValueField], item[lowValueField])
                                }
                                return result
                            }), result);
                            result[valueFields[0]] = data[0][valueFields[0]];
                            result[valueFields[3]] = data[data.length - 1][valueFields[3]];
                            if (!isFinite(result[highValueField])) {
                                result[highValueField] = null
                            }
                            if (!isFinite(result[lowValueField])) {
                                result[lowValueField] = null
                            }
                            result[series.getArgumentField()] = series._getIntervalCenter(intervalStart, intervalEnd);
                            return result
                        }
                    },
                    getValueFields: function() {
                        const options = this._options;
                        return [options.openValueField || "open", options.highValueField || "high", options.lowValueField || "low", options.closeValueField || "close"]
                    },
                    getArgumentField: function() {
                        return this._options.argumentField || "date"
                    },
                    _patchMarginOptions: function(options) {
                        const pointOptions = this._getCreatingPointOptions();
                        const styles = pointOptions.styles;
                        const border = [styles.normal, styles.hover, styles.selection].reduce((function(max, style) {
                            return Math.max(max, style["stroke-width"])
                        }), 0);
                        options.size = 10 + border;
                        options.sizePointNormalState = 10;
                        return options
                    },
                    getSeriesPairCoord(coord, isArgument) {
                        let oppositeCoord = null;
                        const points = this.getVisiblePoints();
                        for (let i = 0; i < points.length; i++) {
                            const p = points[i];
                            let tmpCoord;
                            if (isArgument) {
                                tmpCoord = p.vx === coord ? (p.openY + p.closeY) / 2 : void 0
                            } else {
                                const coords = [Math.min(p.lowY, p.highY), Math.max(p.lowY, p.highY)];
                                tmpCoord = coord >= coords[0] && coord <= coords[1] ? p.vx : void 0
                            }
                            if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {
                                oppositeCoord = tmpCoord;
                                break
                            }
                        }
                        return oppositeCoord
                    },
                    usePointsToDefineAutoHiding: () => false
                });
                exports.stock = stock;
                const candlestick = (0, _extend2.extend)({}, stock, {
                    _parsePointStyle: function(style, defaultColor, innerColor) {
                        const color = (0, _utils.extractColor)(style.color, true) || innerColor;
                        const base = stock._parsePointStyle.call(this, style, defaultColor, color);
                        base.fill = color;
                        base.hatching = style.hatching;
                        return base
                    }
                });
                exports.candlestick = candlestick
            },
        10656:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/helpers/display_format_parser.js ***!
              \*****************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.processDisplayFormat = function(displayFormat, pointInfo) {
                    let actualText = displayFormat;
                    let continueProcess = true;
                    while (continueProcess) {
                        const startBracketIndex = actualText.indexOf("{");
                        const endBracketIndex = actualText.indexOf("}");
                        if (startBracketIndex >= 0 && endBracketIndex > 0) {
                            const placeHolder = actualText.substring(startBracketIndex + 1, endBracketIndex);
                            const value = getValueByPlaceHolder(placeHolder, pointInfo);
                            actualText = actualText.substr(0, startBracketIndex) + value + actualText.substr(endBracketIndex + 1)
                        } else {
                            continueProcess = false
                        }
                    }
                    return actualText
                };
                var _localization = __webpack_require__( /*! ../../../localization */ 94484);

                function getValueByPlaceHolder(placeHolder, pointInfo) {
                    let customFormat = "";
                    const customFormatIndex = placeHolder.indexOf(":");
                    if (customFormatIndex > 0) {
                        customFormat = placeHolder.substr(customFormatIndex + 1);
                        placeHolder = placeHolder.substr(0, customFormatIndex)
                    }
                    return function(value, format) {
                        if (format) {
                            if (value instanceof Date) {
                                return (0, _localization.formatDate)(value, format)
                            }
                            if ("number" === typeof value) {
                                return (0, _localization.formatNumber)(value, format)
                            }
                        }
                        return value
                    }(pointInfo[placeHolder], customFormat)
                }
            },
        63407:
            /*!*****************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/helpers/range_data_calculator.js ***!
              \*****************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _utils = __webpack_require__( /*! ../../core/utils */ 19157);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 20576);
                const {
                    abs: abs,
                    floor: floor,
                    ceil: ceil,
                    min: min
                } = Math;

                function continuousRangeCalculator(range, minValue, maxValue) {
                    range.min = range.min < minValue ? range.min : minValue;
                    range.max = range.max > maxValue ? range.max : maxValue
                }

                function createGetLogFunction(axisType, axis) {
                    if ("logarithmic" !== axisType) {
                        return null
                    }
                    const base = axis.getOptions().logarithmBase;
                    return value => {
                        const log = (0, _utils.getLog)(abs(value), base);
                        const round = log < 0 ? floor : ceil;
                        return round(log)
                    }
                }

                function getRangeCalculator(axisType, axis, getLog) {
                    let rangeCalculator = continuousRangeCalculator;
                    if ("discrete" === axisType) {
                        rangeCalculator = function(range, minValue, maxValue) {
                            if (minValue !== maxValue) {
                                range.categories.push(maxValue)
                            }
                            range.categories.push(minValue)
                        }
                    } else if (axis) {
                        rangeCalculator = function(range, value) {
                            const interval = axis.calculateInterval(value, range.prevValue);
                            const minInterval = range.interval;
                            range.interval = (minInterval < interval ? minInterval : interval) || minInterval;
                            range.prevValue = value;
                            continuousRangeCalculator(range, value, value)
                        }
                    }
                    if (getLog) {
                        return (range, minValue, maxValue) => {
                            const minArgs = [];
                            rangeCalculator(range, minValue, maxValue);
                            0 !== minValue && minArgs.push(getLog(minValue));
                            0 !== maxValue && minArgs.push(getLog(maxValue));
                            const linearThreshold = min.apply(null, minArgs);
                            range.linearThreshold = range.linearThreshold < linearThreshold ? range.linearThreshold : linearThreshold
                        }
                    }
                    return rangeCalculator
                }

                function getInitialRange(axisType, dataType, firstValue) {
                    const range = {
                        axisType: axisType,
                        dataType: dataType
                    };
                    if ("discrete" === axisType) {
                        range.categories = []
                    } else {
                        range.min = (0, _type.isObject)(firstValue) ? firstValue.min : firstValue;
                        range.max = (0, _type.isObject)(firstValue) ? firstValue.max : firstValue
                    }
                    return range
                }

                function processCategories(range) {
                    if (range.categories) {
                        range.categories = (0, _utils.unique)(range.categories)
                    }
                    return range
                }

                function calculateRangeBetweenPoints(rangeCalculator, range, point, prevPoint, bound) {
                    const value = function(point, extraPoint, x, range) {
                        if (extraPoint && (0, _type.isDefined)(extraPoint.value)) {
                            const y1 = point.value;
                            const y2 = extraPoint.value;
                            const x1 = point.argument;
                            const x2 = extraPoint.argument;
                            const r = (x - x1) * (y2 - y1) / (x2 - x1) + y1.valueOf();
                            return "datetime" === range.dataType ? new Date(r) : r
                        } else {
                            return point.value
                        }
                    }(point, prevPoint, bound, range);
                    rangeCalculator(range, value, value)
                }

                function isLineSeries(series) {
                    return series.type.toLowerCase().indexOf("line") >= 0 || series.type.toLowerCase().indexOf("area") >= 0
                }

                function getViewportReducer(series) {
                    const rangeCalculator = getRangeCalculator(series.valueAxisType);
                    const argumentAxis = series.getArgumentAxis();
                    const viewport = argumentAxis && series.getArgumentAxis().visualRange() || {};
                    const calculatePointBetweenPoints = isLineSeries(series) ? calculateRangeBetweenPoints : _common.noop;
                    if (argumentAxis && argumentAxis.getMarginOptions().checkInterval) {
                        const range = series.getArgumentAxis().getTranslator().getBusinessRange();
                        const add = (0, _utils.getAddFunction)(range, false);
                        const interval = range.interval;
                        if (isFinite(interval) && (0, _type.isDefined)(viewport.startValue) && (0, _type.isDefined)(viewport.endValue)) {
                            viewport.startValue = add(viewport.startValue, interval, -1);
                            viewport.endValue = add(viewport.endValue, interval)
                        }
                    }
                    const viewportFilter = getViewPortFilter(viewport);
                    return function(range, point, index, points) {
                        const argument = point.argument;
                        if (!point.hasValue()) {
                            return range
                        }
                        if (viewportFilter(argument)) {
                            if (!range.startCalc) {
                                range.startCalc = true;
                                calculatePointBetweenPoints(rangeCalculator, range, point, points[index - 1], viewport.startValue)
                            }
                            rangeCalculator(range, point.getMinValue(), point.getMaxValue())
                        } else if (!viewport.categories && (0, _type.isDefined)(viewport.startValue) && argument > viewport.startValue) {
                            if (!range.startCalc) {
                                calculatePointBetweenPoints(rangeCalculator, range, point, points[index - 1], viewport.startValue)
                            }
                            range.endCalc = true;
                            calculatePointBetweenPoints(rangeCalculator, range, point, points[index - 1], viewport.endValue)
                        }
                        return range
                    }
                }

                function getViewPortFilter(viewport) {
                    if (viewport.categories) {
                        const dictionary = viewport.categories.reduce((result, category) => {
                            result[category.valueOf()] = true;
                            return result
                        }, {});
                        return argument => (0, _type.isDefined)(argument) && dictionary[argument.valueOf()]
                    }
                    if (!(0, _type.isDefined)(viewport.startValue) && !(0, _type.isDefined)(viewport.endValue)) {
                        return () => true
                    }
                    if (!(0, _type.isDefined)(viewport.endValue)) {
                        return argument => argument >= viewport.startValue
                    }
                    if (!(0, _type.isDefined)(viewport.startValue)) {
                        return argument => argument <= viewport.endValue
                    }
                    return argument => argument >= viewport.startValue && argument <= viewport.endValue
                }
                var _default = {
                    getViewPortFilter: getViewPortFilter,
                    getArgumentRange: function(series) {
                        const data = series._data || [];
                        let range = {};
                        if (data.length) {
                            if ("discrete" === series.argumentAxisType) {
                                range = {
                                    categories: data.map(item => item.argument)
                                }
                            } else {
                                let interval;
                                if (data.length > 1) {
                                    const i1 = series.getArgumentAxis().calculateInterval(data[0].argument, data[1].argument);
                                    const i2 = series.getArgumentAxis().calculateInterval(data[data.length - 1].argument, data[data.length - 2].argument);
                                    interval = min(i1, i2)
                                }
                                range = {
                                    min: data[0].argument,
                                    max: data[data.length - 1].argument,
                                    interval: interval
                                }
                            }
                        }
                        return processCategories(range)
                    },
                    getRangeData: function(series) {
                        const points = series.getPoints();
                        const useAggregation = series.useAggregation();
                        const argumentAxis = series.getArgumentAxis();
                        const argumentCalculator = getRangeCalculator(series.argumentAxisType, points.length > 1 && argumentAxis, createGetLogFunction(series.argumentAxisType, argumentAxis));
                        const valueRangeCalculator = getRangeCalculator(series.valueAxisType, null, createGetLogFunction(series.valueAxisType, series.getValueAxis()));
                        const viewportReducer = getViewportReducer(series);
                        const range = points.reduce((function(range, point, index, points) {
                            const argument = point.argument;
                            if (!point.isArgumentCorrect()) {
                                return range
                            }
                            argumentCalculator(range.arg, argument, argument);
                            if (point.hasValue()) {
                                valueRangeCalculator(range.val, point.getMinValue(), point.getMaxValue());
                                viewportReducer(range.viewport, point, index, points)
                            }
                            return range
                        }), {
                            arg: getInitialRange(series.argumentAxisType, series.argumentType, null !== argumentAxis && void 0 !== argumentAxis && argumentAxis.aggregatedPointBetweenTicks() ? void 0 : series.getArgumentRangeInitialValue()),
                            val: getInitialRange(series.valueAxisType, series.valueType, points.length ? series.getValueRangeInitialValue() : void 0),
                            viewport: getInitialRange(series.valueAxisType, series.valueType, points.length ? series.getValueRangeInitialValue() : void 0)
                        });
                        if (useAggregation) {
                            const argumentRange = this.getArgumentRange(series);
                            if ("discrete" === series.argumentAxisType) {
                                range.arg = argumentRange
                            } else {
                                const viewport = argumentAxis.getViewport();
                                if ((0, _type.isDefined)(viewport.startValue) || (0, _type.isDefined)(viewport.length)) {
                                    argumentCalculator(range.arg, argumentRange.min, argumentRange.min)
                                }
                                if ((0, _type.isDefined)(viewport.endValue) || (0, _type.isDefined)(viewport.length) && (0, _type.isDefined)(viewport.startValue)) {
                                    argumentCalculator(range.arg, argumentRange.max, argumentRange.max)
                                }
                            }
                        }
                        processCategories(range.arg);
                        processCategories(range.val);
                        return range
                    },
                    getViewport: function(series) {
                        const points = series.getPoints();
                        let range = {};
                        const reducer = getViewportReducer(series);
                        range = getInitialRange(series.valueAxisType, series.valueType, points.length ? series.getValueRangeInitialValue() : void 0);
                        points.some((function(point, index) {
                            reducer(range, point, index, points);
                            return range.endCalc
                        }));
                        return range
                    },
                    getPointsInViewPort: function(series) {
                        const argumentViewPortFilter = getViewPortFilter(series.getArgumentAxis().visualRange() || {});
                        const valueViewPort = series.getValueAxis().visualRange() || {};
                        const valueViewPortFilter = getViewPortFilter(valueViewPort);
                        const points = series.getPoints();
                        const addValue = function(values, point, isEdge) {
                            const minValue = point.getMinValue();
                            const maxValue = point.getMaxValue();
                            const isMinValueInViewPort = valueViewPortFilter(minValue);
                            const isMaxValueInViewPort = valueViewPortFilter(maxValue);
                            if (isMinValueInViewPort) {
                                values.push(minValue)
                            }
                            if (maxValue !== minValue && isMaxValueInViewPort) {
                                values.push(maxValue)
                            }
                            if (isEdge && !isMinValueInViewPort && !isMaxValueInViewPort) {
                                if (!values.length) {
                                    values.push(valueViewPort.startValue)
                                } else {
                                    values.push(valueViewPort.endValue)
                                }
                            }
                        };
                        const addEdgePoints = isLineSeries(series) ? function(result, points, index) {
                            const point = points[index];
                            const prevPoint = points[index - 1];
                            const nextPoint = points[index + 1];
                            if (nextPoint && argumentViewPortFilter(nextPoint.argument)) {
                                addValue(result[1], point, true)
                            }
                            if (prevPoint && argumentViewPortFilter(prevPoint.argument)) {
                                addValue(result[1], point, true)
                            }
                        } : _common.noop;
                        return points.reduce((function(result, point, index) {
                            if (argumentViewPortFilter(point.argument)) {
                                addValue(result[0], point)
                            } else {
                                addEdgePoints(result, points, index)
                            }
                            return result
                        }), [
                            [],
                            []
                        ])
                    }
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        7222:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/line_series.js ***!
              \***********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.polar = exports.chart = void 0;
                var _scatter_series = __webpack_require__( /*! ./scatter_series */ 21667);
                var _object = __webpack_require__( /*! ../../core/utils/object */ 48013);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _math = __webpack_require__( /*! ../../core/utils/math */ 60810);
                const {
                    round: round,
                    sqrt: sqrt,
                    pow: pow,
                    min: min,
                    max: max,
                    abs: abs
                } = Math;
                const chart = {};
                exports.chart = chart;
                const polar = {};
                exports.polar = polar;

                function clonePoint(point, newX, newY, newAngle) {
                    const p = (0, _object.clone)(point);
                    p.x = newX;
                    p.y = newY;
                    p.angle = newAngle;
                    return p
                }

                function getTangentPoint(point, prevPoint, centerPoint, tan, nextStepAngle) {
                    const correctAngle = point.angle + nextStepAngle;
                    const cosSin = (0, _utils.getCosAndSin)(correctAngle);
                    const x = centerPoint.x + (point.radius + tan * nextStepAngle) * cosSin.cos;
                    const y = centerPoint.y - (point.radius + tan * nextStepAngle) * cosSin.sin;
                    return clonePoint(prevPoint, x, y, correctAngle)
                }

                function obtainCubicBezierTCoef(p, p0, p1, p2, p3) {
                    const d = p0 - p;
                    const c = 3 * p1 - 3 * p0;
                    const b = 3 * p2 - 6 * p1 + 3 * p0;
                    const a = p3 - 3 * p2 + 3 * p1 - p0;
                    return (0, _math.solveCubicEquation)(a, b, c, d)
                }
                const lineMethods = {
                    autoHidePointMarkersEnabled: () => true,
                    _applyGroupSettings: function(style, settings, group) {
                        settings = (0, _extend.extend)(settings, style);
                        this._applyElementsClipRect(settings);
                        group.attr(settings)
                    },
                    _setGroupsSettings: function(animationEnabled) {
                        const style = this._styles.normal;
                        this._applyGroupSettings(style.elements, {
                            class: "dxc-elements"
                        }, this._elementsGroup);
                        this._bordersGroup && this._applyGroupSettings(style.border, {
                            class: "dxc-borders"
                        }, this._bordersGroup);
                        _scatter_series.chart._setGroupsSettings.call(this, animationEnabled);
                        animationEnabled && this._markersGroup && this._markersGroup.attr({
                            opacity: .001
                        })
                    },
                    _createGroups: function() {
                        this._createGroup("_elementsGroup", this, this._group);
                        this._areBordersVisible() && this._createGroup("_bordersGroup", this, this._group);
                        _scatter_series.chart._createGroups.call(this)
                    },
                    _areBordersVisible: function() {
                        return false
                    },
                    _getDefaultSegment: function(segment) {
                        return {
                            line: (0, _utils.map)(segment.line || [], (function(pt) {
                                return pt.getDefaultCoords()
                            }))
                        }
                    },
                    _prepareSegment: function(points) {
                        return {
                            line: points
                        }
                    },
                    _parseLineOptions: function(options, defaultColor) {
                        return {
                            stroke: (0, _utils.extractColor)(options.color, true) || defaultColor,
                            "stroke-width": options.width,
                            dashStyle: options.dashStyle || "solid"
                        }
                    },
                    _parseStyle: function(options, defaultColor) {
                        return {
                            elements: this._parseLineOptions(options, defaultColor)
                        }
                    },
                    _applyStyle: function(style) {
                        this._elementsGroup && this._elementsGroup.attr(style.elements);
                        (0, _iterator.each)(this._graphics || [], (function(_, graphic) {
                            graphic.line && graphic.line.attr({
                                "stroke-width": style.elements["stroke-width"]
                            }).sharp()
                        }))
                    },
                    _drawElement: function(segment, group) {
                        return {
                            line: this._createMainElement(segment.line, {
                                "stroke-width": this._styles.normal.elements["stroke-width"]
                            }).append(group)
                        }
                    },
                    _removeElement: function(element) {
                        element.line.remove()
                    },
                    _updateElement: function(element, segment, animate, animationComplete) {
                        const params = {
                            points: segment.line
                        };
                        const lineElement = element.line;
                        animate ? lineElement.animate(params, {}, animationComplete) : lineElement.attr(params)
                    },
                    _animateComplete: function() {
                        _scatter_series.chart._animateComplete.call(this);
                        this._markersGroup && this._markersGroup.animate({
                            opacity: 1
                        }, {
                            duration: this._defaultDuration
                        })
                    },
                    _animate: function() {
                        const that = this;
                        const lastIndex = that._graphics.length - 1;
                        (0, _iterator.each)(that._graphics || [], (function(i, elem) {
                            let complete;
                            if (i === lastIndex) {
                                complete = function() {
                                    that._animateComplete()
                                }
                            }
                            that._updateElement(elem, that._segments[i], true, complete)
                        }))
                    },
                    _drawPoint: function(options) {
                        _scatter_series.chart._drawPoint.call(this, {
                            point: options.point,
                            groups: options.groups
                        })
                    },
                    _createMainElement: function(points, settings) {
                        return this._renderer.path(points, "line").attr(settings)
                    },
                    _sortPoints: function(points, rotated) {
                        return rotated ? points.sort((function(p1, p2) {
                            return p2.y - p1.y
                        })) : points.sort((function(p1, p2) {
                            return p1.x - p2.x
                        }))
                    },
                    _drawSegment: function(points, animationEnabled, segmentCount, lastSegment) {
                        const that = this;
                        const rotated = that._options.rotated;
                        const segment = that._prepareSegment(points, rotated, lastSegment);
                        that._segments.push(segment);
                        if (!that._graphics[segmentCount]) {
                            that._graphics[segmentCount] = that._drawElement(animationEnabled ? that._getDefaultSegment(segment) : segment, that._elementsGroup)
                        } else if (!animationEnabled) {
                            that._updateElement(that._graphics[segmentCount], segment)
                        }
                    },
                    _getTrackerSettings: function() {
                        const defaultTrackerWidth = this._defaultTrackerWidth;
                        const strokeWidthFromElements = this._styles.normal.elements["stroke-width"];
                        return {
                            "stroke-width": strokeWidthFromElements > defaultTrackerWidth ? strokeWidthFromElements : defaultTrackerWidth,
                            fill: "none"
                        }
                    },
                    _getMainPointsFromSegment: function(segment) {
                        return segment.line
                    },
                    _drawTrackerElement: function(segment) {
                        return this._createMainElement(this._getMainPointsFromSegment(segment), this._getTrackerSettings(segment))
                    },
                    _updateTrackerElement: function(segment, element) {
                        const settings = this._getTrackerSettings(segment);
                        settings.points = this._getMainPointsFromSegment(segment);
                        element.attr(settings)
                    },
                    checkSeriesViewportCoord(axis, coord) {
                        if (!_scatter_series.chart.checkSeriesViewportCoord.call(this)) {
                            return false
                        }
                        const range = axis.isArgumentAxis ? this.getArgumentRange() : this.getViewport();
                        const min = axis.getTranslator().translate(range.categories ? range.categories[0] : range.min);
                        const max = axis.getTranslator().translate(range.categories ? range.categories[range.categories.length - 1] : range.max);
                        const rotated = this.getOptions().rotated;
                        const inverted = axis.getOptions().inverted;
                        return axis.isArgumentAxis && (!rotated && !inverted || rotated && inverted) || !axis.isArgumentAxis && (rotated && !inverted || !rotated && inverted) ? coord >= min && coord <= max : coord >= max && coord <= min
                    }
                };
                const lineSeries = chart.line = (0, _extend.extend)({}, _scatter_series.chart, lineMethods, {
                    getPointCenterByArg(arg) {
                        const value = this.getArgumentAxis().getTranslator().translate(arg);
                        return {
                            x: value,
                            y: value
                        }
                    },
                    getSeriesPairCoord(coord, isArgument) {
                        let oppositeCoord = null;
                        const nearestPoints = this._getNearestPointsByCoord(coord, isArgument);
                        const needValueCoord = isArgument && !this._options.rotated || !isArgument && this._options.rotated;
                        for (let i = 0; i < nearestPoints.length; i++) {
                            const p = nearestPoints[i];
                            const k = (p[1].vy - p[0].vy) / (p[1].vx - p[0].vx);
                            const b = p[0].vy - p[0].vx * k;
                            let tmpCoord;
                            if (p[1].vx - p[0].vx === 0) {
                                tmpCoord = needValueCoord ? p[0].vy : p[0].vx
                            } else {
                                tmpCoord = needValueCoord ? k * coord + b : (coord - b) / k
                            }
                            if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {
                                oppositeCoord = tmpCoord;
                                break
                            }
                        }
                        return oppositeCoord
                    }
                });
                chart.stepline = (0, _extend.extend)({}, lineSeries, {
                    _calculateStepLinePoints(points) {
                        const segment = [];
                        const coordName = this._options.rotated ? "x" : "y";
                        (0, _iterator.each)(points, (function(i, pt) {
                            let point;
                            if (!i) {
                                segment.push(pt);
                                return
                            }
                            const step = segment[segment.length - 1][coordName];
                            if (step !== pt[coordName]) {
                                point = (0, _object.clone)(pt);
                                point[coordName] = step;
                                segment.push(point)
                            }
                            segment.push(pt)
                        }));
                        return segment
                    },
                    _prepareSegment: function(points) {
                        return lineSeries._prepareSegment(this._calculateStepLinePoints(points))
                    },
                    getSeriesPairCoord(coord, isArgument) {
                        let oppositeCoord;
                        const rotated = this._options.rotated;
                        const isOpposite = !isArgument && !rotated || isArgument && rotated;
                        const coordName = !isOpposite ? "vx" : "vy";
                        const oppositeCoordName = !isOpposite ? "vy" : "vx";
                        const nearestPoints = this._getNearestPointsByCoord(coord, isArgument);
                        for (let i = 0; i < nearestPoints.length; i++) {
                            const p = nearestPoints[i];
                            let tmpCoord;
                            if (isArgument) {
                                tmpCoord = coord !== p[1][coordName] ? p[0][oppositeCoordName] : p[1][oppositeCoordName]
                            } else {
                                tmpCoord = coord === p[0][coordName] ? p[0][oppositeCoordName] : p[1][oppositeCoordName]
                            }
                            if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {
                                oppositeCoord = tmpCoord;
                                break
                            }
                        }
                        return oppositeCoord
                    }
                });
                chart.spline = (0, _extend.extend)({}, lineSeries, {
                    _calculateBezierPoints: function(src, rotated) {
                        const bezierPoints = [];
                        const pointsCopy = src;
                        const checkExtremum = function(otherPointCoord, pointCoord, controlCoord) {
                            return otherPointCoord > pointCoord && controlCoord > otherPointCoord || otherPointCoord < pointCoord && controlCoord < otherPointCoord ? otherPointCoord : controlCoord
                        };
                        if (1 !== pointsCopy.length) {
                            pointsCopy.forEach((function(curPoint, i) {
                                let leftControlX;
                                let leftControlY;
                                let rightControlX;
                                let rightControlY;
                                const prevPoint = pointsCopy[i - 1];
                                const nextPoint = pointsCopy[i + 1];
                                let x1;
                                let x2;
                                let y1;
                                let y2;
                                let a;
                                let b;
                                let c;
                                let xc;
                                let yc;
                                let shift;
                                if (!i || i === pointsCopy.length - 1) {
                                    bezierPoints.push(curPoint, curPoint);
                                    return
                                }
                                const xCur = curPoint.x;
                                const yCur = curPoint.y;
                                x1 = prevPoint.x;
                                x2 = nextPoint.x;
                                y1 = prevPoint.y;
                                y2 = nextPoint.y;
                                const curIsExtremum = !!(!rotated && (yCur <= prevPoint.y && yCur <= nextPoint.y || yCur >= prevPoint.y && yCur >= nextPoint.y) || rotated && (xCur <= prevPoint.x && xCur <= nextPoint.x || xCur >= prevPoint.x && xCur >= nextPoint.x));
                                if (curIsExtremum) {
                                    if (!rotated) {
                                        rightControlY = leftControlY = yCur;
                                        rightControlX = (xCur + nextPoint.x) / 2;
                                        leftControlX = (xCur + prevPoint.x) / 2
                                    } else {
                                        rightControlX = leftControlX = xCur;
                                        rightControlY = (yCur + nextPoint.y) / 2;
                                        leftControlY = (yCur + prevPoint.y) / 2
                                    }
                                } else {
                                    a = y2 - y1;
                                    b = x1 - x2;
                                    c = y1 * x2 - x1 * y2;
                                    if (!rotated) {
                                        if (!b) {
                                            bezierPoints.push(curPoint, curPoint, curPoint);
                                            return
                                        }
                                        xc = xCur;
                                        yc = -1 * (a * xc + c) / b;
                                        shift = yc - yCur;
                                        y1 -= shift;
                                        y2 -= shift
                                    } else {
                                        if (!a) {
                                            bezierPoints.push(curPoint, curPoint, curPoint);
                                            return
                                        }
                                        yc = yCur;
                                        xc = -1 * (b * yc + c) / a;
                                        shift = xc - xCur;
                                        x1 -= shift;
                                        x2 -= shift
                                    }
                                    rightControlX = (xCur + .5 * x2) / 1.5;
                                    rightControlY = (yCur + .5 * y2) / 1.5;
                                    leftControlX = (xCur + .5 * x1) / 1.5;
                                    leftControlY = (yCur + .5 * y1) / 1.5
                                }
                                if (!rotated) {
                                    leftControlY = checkExtremum(prevPoint.y, yCur, leftControlY);
                                    rightControlY = checkExtremum(nextPoint.y, yCur, rightControlY)
                                } else {
                                    leftControlX = checkExtremum(prevPoint.x, xCur, leftControlX);
                                    rightControlX = checkExtremum(nextPoint.x, xCur, rightControlX)
                                }
                                const leftPoint = clonePoint(curPoint, leftControlX, leftControlY);
                                const rightPoint = clonePoint(curPoint, rightControlX, rightControlY);
                                bezierPoints.push(leftPoint, curPoint, rightPoint)
                            }))
                        } else {
                            bezierPoints.push(pointsCopy[0])
                        }
                        return bezierPoints
                    },
                    _prepareSegment: function(points, rotated) {
                        return lineSeries._prepareSegment(this._calculateBezierPoints(points, rotated))
                    },
                    _createMainElement: function(points, settings) {
                        return this._renderer.path(points, "bezier").attr(settings)
                    },
                    getSeriesPairCoord(coord, isArgument) {
                        let oppositeCoord = null;
                        const isOpposite = !isArgument && !this._options.rotated || isArgument && this._options.rotated;
                        const coordName = !isOpposite ? "vx" : "vy";
                        const bezierCoordName = !isOpposite ? "x" : "y";
                        const oppositeCoordName = !isOpposite ? "vy" : "vx";
                        const bezierOppositeCoordName = !isOpposite ? "y" : "x";
                        const axis = !isArgument ? this.getArgumentAxis() : this.getValueAxis();
                        const visibleArea = axis.getVisibleArea();
                        const nearestPoints = this._getNearestPointsByCoord(coord, isArgument);
                        for (let i = 0; i < nearestPoints.length; i++) {
                            const p = nearestPoints[i];
                            if (1 === p.length) {
                                visibleArea[0] <= p[0][oppositeCoordName] && visibleArea[1] >= p[0][oppositeCoordName] && (oppositeCoord = p[0][oppositeCoordName])
                            } else {
                                const ts = obtainCubicBezierTCoef(coord, p[0][coordName], p[1][bezierCoordName], p[2][bezierCoordName], p[3][coordName]);
                                ts.forEach(t => {
                                    if (t >= 0 && t <= 1) {
                                        const tmpCoord = Math.pow(1 - t, 3) * p[0][oppositeCoordName] + 3 * Math.pow(1 - t, 2) * t * p[1][bezierOppositeCoordName] + 3 * (1 - t) * t * t * p[2][bezierOppositeCoordName] + t * t * t * p[3][oppositeCoordName];
                                        if (visibleArea[0] <= tmpCoord && visibleArea[1] >= tmpCoord) {
                                            oppositeCoord = tmpCoord
                                        }
                                    }
                                })
                            }
                            if (null !== oppositeCoord) {
                                break
                            }
                        }
                        return oppositeCoord
                    },
                    _getNearestPoints(point, nextPoint, bezierPoints) {
                        const index = bezierPoints.indexOf(point);
                        return [point, bezierPoints[index + 1], bezierPoints[index + 2], nextPoint]
                    },
                    _getBezierPoints() {
                        return this._segments.length > 0 ? this._segments.reduce((a, seg) => a.concat(seg.line), []) : []
                    }
                });
                polar.line = (0, _extend.extend)({}, _scatter_series.polar, lineMethods, {
                    _sortPoints: function(points) {
                        return points
                    },
                    _prepareSegment: function(points, rotated, lastSegment) {
                        let preparedPoints = [];
                        const centerPoint = this.getValueAxis().getCenter();
                        let i;
                        lastSegment && this._closeSegment(points);
                        if ("discrete" !== this.argumentAxisType && "discrete" !== this.valueAxisType) {
                            for (i = 1; i < points.length; i++) {
                                preparedPoints = preparedPoints.concat(this._getTangentPoints(points[i], points[i - 1], centerPoint, i === points.length - 1))
                            }
                            if (!preparedPoints.length) {
                                preparedPoints = points
                            }
                        } else {
                            return lineSeries._prepareSegment.call(this, points)
                        }
                        return {
                            line: preparedPoints
                        }
                    },
                    _getRemainingAngle: function(angle) {
                        const normAngle = (0, _utils.normalizeAngle)(angle);
                        return angle >= 0 ? 360 - normAngle : -normAngle
                    },
                    _closeSegment(points) {
                        const point = this._segments.length ? this._segments[0].line[0] : points[0];
                        let newPoint = clonePoint(point, point.x, point.y, point.angle);
                        newPoint = this._modifyReflectedPoint(newPoint, points.at(-1));
                        if (newPoint) {
                            points.push(newPoint)
                        }
                    },
                    _modifyReflectedPoint(point, lastPoint) {
                        if (lastPoint.angle === point.angle) {
                            return
                        }
                        if ((0, _utils.normalizeAngle)(round(lastPoint.angle)) === (0, _utils.normalizeAngle)(round(point.angle))) {
                            point.angle = lastPoint.angle
                        } else {
                            const differenceAngle = lastPoint.angle - point.angle;
                            point.angle = lastPoint.angle + this._getRemainingAngle(differenceAngle)
                        }
                        return point
                    },
                    _getTangentPoints: function(point, prevPoint, centerPoint, isLastSegment) {
                        let tangentPoints = [];
                        const betweenAngle = Math.round(prevPoint.angle - point.angle);
                        const tan = (prevPoint.radius - point.radius) / betweenAngle;
                        let i;
                        if (0 === betweenAngle) {
                            tangentPoints = [prevPoint, point]
                        } else if (betweenAngle > 0) {
                            const angle = isLastSegment ? betweenAngle : betweenAngle - 1;
                            for (i = angle; i >= 0; i--) {
                                tangentPoints.push(getTangentPoint(point, prevPoint, centerPoint, tan, i))
                            }
                        } else {
                            const angle = isLastSegment ? betweenAngle : betweenAngle + 1;
                            for (i = 0; i >= angle; i--) {
                                tangentPoints.push(getTangentPoint(point, prevPoint, centerPoint, tan, betweenAngle - i))
                            }
                        }
                        return tangentPoints
                    },
                    getSeriesPairCoord(params, isArgument) {
                        const that = this;
                        const argAxis = that.getArgumentAxis();
                        const paramName = isArgument ? "angle" : "radius";
                        const coordParam = params[paramName];
                        const centerPoint = argAxis.getCenter();
                        const isInsideInterval = (prevPoint, point, _ref) => {
                            let {
                                x: x,
                                y: y
                            } = _ref;
                            return (p1 = {
                                x: x,
                                y: y
                            }, p2 = centerPoint, sqrt(pow(p1.x - p2.x, 2) + pow(p1.y - p2.y, 2))) <= argAxis.getRadius() && min(prevPoint.x, point.x) <= x && max(prevPoint.x, point.x) >= x && min(prevPoint.y, point.y) <= y && max(prevPoint.y, point.y) >= y;
                            var p1, p2
                        };
                        let coords;
                        const neighborPoints = that.getNeighborPoints(coordParam, paramName);
                        if (1 === neighborPoints.length) {
                            coords = neighborPoints[0]
                        } else if (neighborPoints.length > 1) {
                            const prevPoint = neighborPoints[0];
                            const point = neighborPoints[1];
                            if ("discrete" !== that.argumentAxisType && "discrete" !== that.valueAxisType) {
                                let tan;
                                let stepAngle;
                                if (isArgument) {
                                    tan = (prevPoint.radius - point.radius) / (prevPoint.angle - point.angle);
                                    stepAngle = coordParam - point.angle
                                } else {
                                    tan = (prevPoint.radius - point.radius) / (prevPoint.angle - point.angle);
                                    stepAngle = (coordParam - point.radius) / tan
                                }
                                coords = getTangentPoint(point, prevPoint, centerPoint, tan, stepAngle)
                            } else if (isArgument) {
                                const cosSin = (0, _utils.getCosAndSin)(-coordParam);
                                const k1 = (point.y - prevPoint.y) / (point.x - prevPoint.x);
                                const b1 = prevPoint.y - prevPoint.x * k1;
                                const k2 = cosSin.sin / cosSin.cos;
                                const b2 = centerPoint.y - k2 * centerPoint.x;
                                const x = (b2 - b1) / (k1 - k2);
                                const y = k1 * x + b1;
                                if (isInsideInterval(prevPoint, point, {
                                        x: x,
                                        y: y
                                    })) {
                                    const quarter = abs((0, _math.trunc)((360 + coordParam) / 90) % 4);
                                    if (0 === quarter && x >= centerPoint.x && y <= centerPoint.y || 1 === quarter && x <= centerPoint.x && y <= centerPoint.y || 2 === quarter && x <= centerPoint.x && y >= centerPoint.y || 3 === quarter && x >= centerPoint.x && y >= centerPoint.y) {
                                        coords = {
                                            x: x,
                                            y: y
                                        }
                                    }
                                }
                            } else {
                                const k = (point.y - prevPoint.y) / (point.x - prevPoint.x);
                                const y0 = prevPoint.y - prevPoint.x * k;
                                const a = 1 + k * k;
                                const b = -2 * centerPoint.x + 2 * k * y0 - 2 * k * centerPoint.y;
                                const c = -pow(coordParam, 2) + pow(y0 - centerPoint.y, 2) + pow(centerPoint.x, 2);
                                const d = b * b - 4 * a * c;
                                if (d >= 0) {
                                    const x1 = (-b - sqrt(d)) / (2 * a);
                                    const x2 = (-b + sqrt(d)) / (2 * a);
                                    const y1 = k * x1 + y0;
                                    const y2 = k * x2 + y0;
                                    coords = isInsideInterval(prevPoint, point, {
                                        x: x1,
                                        y: y1
                                    }) ? {
                                        x: x1,
                                        y: y1
                                    } : isInsideInterval(prevPoint, point, {
                                        x: x2,
                                        y: y2
                                    }) ? {
                                        x: x2,
                                        y: y2
                                    } : void 0
                                }
                            }
                        }
                        return coords
                    },
                    getNeighborPoints(param, paramName) {
                        let points = this.getPoints();
                        const neighborPoints = [];
                        if (this.getOptions().closed) {
                            points = (0, _extend.extend)(true, [], points);
                            const lastPoint = points[points.length - 1];
                            const firstPointCopy = clonePoint(points[0], points[0].x, points[0].y, points[0].angle);
                            const lastPointCopy = clonePoint(lastPoint, lastPoint.x, lastPoint.y, lastPoint.angle);
                            const rearwardRefPoint = this._modifyReflectedPoint(firstPointCopy, lastPoint);
                            const forwardRefPoint = this._modifyReflectedPoint(lastPointCopy, points[0]);
                            if (forwardRefPoint) {
                                points.unshift(forwardRefPoint)
                            }
                            if (rearwardRefPoint) {
                                points.push(rearwardRefPoint)
                            }
                        }
                        for (let i = 1; i < points.length; i++) {
                            if (points[i - 1][paramName] === param) {
                                neighborPoints.push(points[i - 1])
                            } else if (points[i][paramName] === param) {
                                neighborPoints.push(points[i])
                            } else if (points[i][paramName] > param && points[i - 1][paramName] < param || points[i - 1][paramName] > param && points[i][paramName] < param) {
                                neighborPoints.push(points[i - 1]);
                                neighborPoints.push(points[i])
                            }
                            if (neighborPoints.length > 0) {
                                break
                            }
                        }
                        return neighborPoints
                    }
                })
            },
        80610:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/pie_series.js ***!
              \**********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.pie = exports.doughnut = exports.donut = void 0;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _scatter_series = __webpack_require__( /*! ./scatter_series */ 21667);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _bar_series = __webpack_require__( /*! ./bar_series */ 58821);
                const chartScatterSeries = _scatter_series.chart;
                const barSeries = _bar_series.chart.bar;
                const _extend = _extend2.extend;
                const _each = _iterator.each;
                const _noop = _common.noop;
                const _map = _utils.map;
                const _isFinite = isFinite;
                const _max = Math.max;
                const pie = _extend({}, barSeries, {
                    _setGroupsSettings: function() {
                        chartScatterSeries._setGroupsSettings.apply(this, arguments);
                        this._labelsGroup.attr({
                            "pointer-events": null
                        })
                    },
                    _createErrorBarGroup: _noop,
                    _drawPoint: function(options) {
                        const point = options.point;
                        const legendCallback = this._legendCallback;
                        chartScatterSeries._drawPoint.call(this, options);
                        !point.isVisible() && point.setInvisibility();
                        point.isSelected() && legendCallback()
                    },
                    _getOldPoint: function(data, oldPointsByArgument, index) {
                        const point = (this._points || [])[index];
                        if (point) {
                            oldPointsByArgument[point.argument.valueOf()] = oldPointsByArgument[point.argument.valueOf()].filter(p => p !== point)
                        }
                        return point
                    },
                    adjustLabels: function(moveLabelsFromCenter) {
                        return (this._points || []).reduce((r, p) => {
                            if (p._label.isVisible()) {
                                p.setLabelTrackerData();
                                r = p.applyWordWrap(moveLabelsFromCenter) || r;
                                p.updateLabelCoord(moveLabelsFromCenter);
                                return r
                            }
                        }, false)
                    },
                    _applyElementsClipRect: _noop,
                    getColor: _noop,
                    areErrorBarsVisible: _noop,
                    drawLabelsWOPoints: function() {
                        if ("inside" === this._options.label.position) {
                            return false
                        }
                        this._labelsGroup.append(this._extGroups.labelsGroup);
                        (this._points || []).forEach((function(point) {
                            point.drawLabel()
                        }));
                        return true
                    },
                    getPointsCount: function() {
                        return this._data.filter(d => this._checkData(d)).length
                    },
                    setMaxPointsCount: function(count) {
                        this._pointsCount = count
                    },
                    _getCreatingPointOptions: function(data, dataIndex) {
                        return this._getPointOptions(data, dataIndex)
                    },
                    _updateOptions: function(options) {
                        this.labelSpace = 0;
                        this.innerRadius = "pie" === this.type ? 0 : options.innerRadius
                    },
                    _checkData: function(data, skippedFields) {
                        const base = barSeries._checkData.call(this, data, skippedFields, {
                            value: this.getValueFields()[0]
                        });
                        return this._options.paintNullPoints ? base : base && null !== data.value
                    },
                    _createGroups: chartScatterSeries._createGroups,
                    _setMarkerGroupSettings: function() {
                        this._markersGroup.attr({
                            class: "dxc-markers"
                        })
                    },
                    _getMainColor(data, point) {
                        const pointsByArg = this.getPointsByArg(data.argument);
                        const argumentIndex = point ? pointsByArg.indexOf(point) : pointsByArg.length;
                        return this._options.mainSeriesColor(data.argument, argumentIndex, this._pointsCount)
                    },
                    _getPointOptions: function(data) {
                        return this._parsePointOptions(this._preparePointOptions(), this._options.label, data)
                    },
                    _getRangeData: function() {
                        return this._rangeData
                    },
                    _createPointStyles: function(pointOptions, data, point) {
                        var _pointOptions$color;
                        const that = this;
                        const mainColor = (0, _utils.extractColor)(pointOptions.color, true) || that._getMainColor(data, point);
                        const colorId = null === (_pointOptions$color = pointOptions.color) || void 0 === _pointOptions$color ? void 0 : _pointOptions$color.fillId;
                        const hoverStyle = pointOptions.hoverStyle || {};
                        const selectionStyle = pointOptions.selectionStyle || {};
                        if (colorId) {
                            that._turnOffHatching(hoverStyle, selectionStyle)
                        }
                        return {
                            labelColor: mainColor,
                            normal: that._parsePointStyle(pointOptions, mainColor, mainColor),
                            hover: that._parsePointStyle(hoverStyle, colorId || mainColor, mainColor),
                            selection: that._parsePointStyle(selectionStyle, colorId || mainColor, mainColor),
                            legendStyles: {
                                normal: that._createLegendState(pointOptions, mainColor),
                                hover: that._createLegendState(hoverStyle, colorId || mainColor),
                                selection: that._createLegendState(selectionStyle, colorId || mainColor)
                            }
                        }
                    },
                    _getArrangeMinShownValue: function(points, total) {
                        const minSegmentSize = this._options.minSegmentSize;
                        let totalMinSegmentSize = 0;
                        let totalNotMinValues = 0;
                        total = total || points.length;
                        _each(points, (function(_, point) {
                            if (point.isVisible()) {
                                if (point.normalInitialValue < minSegmentSize * total / 360) {
                                    totalMinSegmentSize += minSegmentSize
                                } else {
                                    totalNotMinValues += point.normalInitialValue
                                }
                            }
                        }));
                        return totalMinSegmentSize < 360 ? minSegmentSize * totalNotMinValues / (360 - totalMinSegmentSize) : 0
                    },
                    _applyArrangeCorrection: function(points, minShownValue, total) {
                        const options = this._options;
                        const isClockWise = "anticlockwise" !== options.segmentsDirection;
                        const shiftedAngle = _isFinite(options.startAngle) ? (0, _utils.normalizeAngle)(options.startAngle) : 0;
                        const minSegmentSize = options.minSegmentSize;
                        let percent;
                        let correction = 0;
                        let zeroTotalCorrection = 0;
                        if (0 === total) {
                            total = points.filter((function(el) {
                                return el.isVisible()
                            })).length;
                            zeroTotalCorrection = 1
                        }
                        _each(isClockWise ? points : points.concat([]).reverse(), (function(_, point) {
                            const val = point.isVisible() ? zeroTotalCorrection || point.normalInitialValue : 0;
                            let updatedZeroValue;
                            if (minSegmentSize && point.isVisible() && val < minShownValue) {
                                updatedZeroValue = minShownValue
                            }
                            percent = val / total;
                            point.correctValue(correction, percent, zeroTotalCorrection + (updatedZeroValue || 0));
                            point.shiftedAngle = shiftedAngle;
                            correction += updatedZeroValue || val
                        }));
                        this._rangeData = {
                            val: {
                                min: 0,
                                max: correction
                            }
                        }
                    },
                    _removePoint: function(point) {
                        const points = this.getPointsByArg(point.argument);
                        points.splice(points.indexOf(point), 1);
                        point.dispose()
                    },
                    arrangePoints: function() {
                        const that = this;
                        const originalPoints = that._points || [];
                        const minSegmentSize = that._options.minSegmentSize;
                        let minShownValue;
                        let isAllPointsNegative = true;
                        let i = 0;
                        const len = originalPoints.length;
                        while (i < len && isAllPointsNegative) {
                            isAllPointsNegative = originalPoints[i].value <= 0;
                            i++
                        }
                        const points = that._points = _map(originalPoints, (function(point) {
                            if (null === point.value || !isAllPointsNegative && point.value < 0) {
                                that._removePoint(point);
                                return null
                            } else {
                                return point
                            }
                        }));
                        const maxValue = points.reduce((function(max, p) {
                            return _max(max, Math.abs(p.initialValue))
                        }), 0);
                        points.forEach((function(p) {
                            p.normalInitialValue = p.initialValue / (0 !== maxValue ? maxValue : 1)
                        }));
                        const total = points.reduce((function(total, point) {
                            return total + (point.isVisible() ? point.normalInitialValue : 0)
                        }), 0);
                        if (minSegmentSize) {
                            minShownValue = this._getArrangeMinShownValue(points, total)
                        }
                        that._applyArrangeCorrection(points, minShownValue, total)
                    },
                    correctPosition: function(correction, canvas) {
                        _each(this._points, (function(_, point) {
                            point.correctPosition(correction)
                        }));
                        this.setVisibleArea(canvas)
                    },
                    correctRadius: function(correction) {
                        this._points.forEach((function(point) {
                            point.correctRadius(correction)
                        }))
                    },
                    correctLabelRadius: function(labelRadius) {
                        this._points.forEach((function(point) {
                            point.correctLabelRadius(labelRadius)
                        }))
                    },
                    setVisibleArea: function(canvas) {
                        this._visibleArea = {
                            minX: canvas.left,
                            maxX: canvas.width - canvas.right,
                            minY: canvas.top,
                            maxY: canvas.height - canvas.bottom
                        }
                    },
                    _applyVisibleArea: _noop,
                    _animate: function(firstDrawing) {
                        const that = this;
                        const points = that._points;
                        const pointsCount = points && points.length;
                        const completeFunc = function() {
                            that._animateComplete()
                        };
                        let animatePoint;
                        if (firstDrawing) {
                            animatePoint = function(p, i) {
                                p.animate(i === pointsCount - 1 ? completeFunc : void 0, .7, (1 - .7) * i / (pointsCount - 1))
                            }
                        } else {
                            animatePoint = function(p, i) {
                                p.animate(i === pointsCount - 1 ? completeFunc : void 0)
                            }
                        }
                        points.forEach(animatePoint)
                    },
                    getVisiblePoints: function() {
                        return _map(this._points, (function(p) {
                            return p.isVisible() ? p : null
                        }))
                    },
                    getPointsByKeys: function(arg, argumentIndex) {
                        const pointsByArg = this.getPointsByArg(arg);
                        return pointsByArg[argumentIndex] && [pointsByArg[argumentIndex]] || []
                    }
                });
                exports.pie = pie;
                const doughnut = pie;
                exports.doughnut = doughnut;
                const donut = pie;
                exports.donut = donut
            },
        27428:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/points/bar_point.js ***!
              \****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _extend2 = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _symbol_point = (obj = __webpack_require__( /*! ./symbol_point */ 24894), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const _extend = _extend2.extend;
                const _math = Math;
                const _floor = _math.floor;
                const _abs = _math.abs;

                function getLabelOrientation(point) {
                    const initialValue = point.initialValue;
                    const invert = point._getValTranslator().getBusinessRange().invert;
                    const isDiscreteValue = "discrete" === point.series.valueAxisType;
                    const isFullStacked = point.series.isFullStackedSeries();
                    const notAxisInverted = !isDiscreteValue && (initialValue >= 0 && !invert || initialValue < 0 && invert) || isDiscreteValue && !invert || isFullStacked;
                    return notAxisInverted ? "top" : "bottom"
                }
                var _default = _extend({}, _symbol_point.default, {
                    correctCoordinates(correctOptions) {
                        const that = this;
                        const correction = _floor(correctOptions.offset - correctOptions.width / 2);
                        if (that._options.rotated) {
                            that.height = correctOptions.width;
                            that.yCorrection = correction;
                            that.xCorrection = null
                        } else {
                            that.width = correctOptions.width;
                            that.xCorrection = correction;
                            that.yCorrection = null
                        }
                    },
                    _calculateVisibility: function(x, y, width, height) {
                        const {
                            minX: minX,
                            maxX: maxX,
                            minY: minY,
                            maxY: maxY
                        } = this._getVisibleArea();
                        this.inVisibleArea = minX <= x + width && maxX >= x && minY <= y + height && maxY >= y
                    },
                    _cacheVisibility: function(x, y, minY, rotated) {
                        const size = Math.abs(y - minY);
                        y = Math.min(y, minY);
                        if (rotated) {
                            this._calculateVisibility(y, x, size, this.height)
                        } else {
                            this._calculateVisibility(x, y, this.width, size)
                        }
                    },
                    _getGraphicBBox: function(location) {
                        const bBox = {
                            x: this.x,
                            y: this.y,
                            width: this.width,
                            height: this.height
                        };
                        if (location) {
                            const isTop = "top" === location;
                            if (!this._options.rotated) {
                                bBox.y = isTop ? bBox.y : bBox.y + bBox.height;
                                bBox.height = 0
                            } else {
                                bBox.x = isTop ? bBox.x + bBox.width : bBox.x;
                                bBox.width = 0
                            }
                        }
                        return bBox
                    },
                    _getLabelConnector: function(location) {
                        return this._getGraphicBBox(location)
                    },
                    _getLabelPosition: function() {
                        let position = getLabelOrientation(this);
                        if (this._options.rotated) {
                            position = "top" === position ? "right" : "left"
                        }
                        return position
                    },
                    _getLabelCoords: function(label) {
                        const that = this;
                        let coords;
                        if (0 === that.initialValue && that.series.isFullStackedSeries()) {
                            if (!this._options.rotated) {
                                coords = that._getLabelCoordOfPosition(label, "top")
                            } else {
                                coords = that._getLabelCoordOfPosition(label, "right")
                            }
                        } else if ("inside" === label.getLayoutOptions().position) {
                            coords = that._getLabelCoordOfPosition(label, "inside")
                        } else {
                            coords = _symbol_point.default._getLabelCoords.call(this, label)
                        }
                        return coords
                    },
                    _drawLabel: function() {
                        this._label.pointPosition = "inside" !== this._label.getLayoutOptions().position && getLabelOrientation(this);
                        _symbol_point.default._drawLabel.call(this)
                    },
                    hideInsideLabel: function(label, coord) {
                        const graphicBBox = this._getGraphicBBox();
                        const labelBBox = label.getBoundingRect();
                        if (this._options.resolveLabelsOverlapping) {
                            if ((coord.y <= graphicBBox.y && coord.y + labelBBox.height >= graphicBBox.y + graphicBBox.height || coord.x <= graphicBBox.x && coord.x + labelBBox.width >= graphicBBox.x + graphicBBox.width) && !(coord.y > graphicBBox.y + graphicBBox.height || coord.y + labelBBox.height < graphicBBox.y || coord.x > graphicBBox.x + graphicBBox.width || coord.x + labelBBox.width < graphicBBox.x)) {
                                label.draw(false);
                                return true
                            }
                        }
                        return false
                    },
                    _showForZeroValues: function() {
                        return this._options.label.showForZeroValues || this.initialValue
                    },
                    _drawMarker(renderer, group, animationEnabled) {
                        const that = this;
                        const style = that._getStyle();
                        const r = that._options.cornerRadius;
                        const rotated = that._options.rotated;
                        let {
                            x: x,
                            y: y,
                            width: width,
                            height: height
                        } = that.getMarkerCoords();
                        if (animationEnabled) {
                            if (rotated) {
                                width = 0;
                                x = that.defaultX
                            } else {
                                height = 0;
                                y = that.defaultY
                            }
                        }
                        that.graphic = renderer.rect(x, y, width, height).attr({
                            rx: r,
                            ry: r
                        }).smartAttr(style).data({
                            "chart-data-point": that
                        }).append(group)
                    },
                    _getSettingsForTracker: function() {
                        let y = this.y;
                        let height = this.height;
                        let x = this.x;
                        let width = this.width;
                        if (this._options.rotated) {
                            if (1 === width) {
                                width = 9;
                                x -= 4
                            }
                        } else if (1 === height) {
                            height = 9;
                            y -= 4
                        }
                        return {
                            x: x,
                            y: y,
                            width: width,
                            height: height
                        }
                    },
                    getGraphicSettings: function() {
                        const graphic = this.graphic;
                        return {
                            x: graphic.attr("x"),
                            y: graphic.attr("y"),
                            height: graphic.attr("height"),
                            width: graphic.attr("width")
                        }
                    },
                    _getEdgeTooltipParams() {
                        const isPositive = this.value >= 0;
                        let xCoord;
                        let yCoord;
                        const invertedBusinessRange = this._getValTranslator().getBusinessRange().invert;
                        const {
                            x: x,
                            y: y,
                            width: width,
                            height: height
                        } = this;
                        if (this._options.rotated) {
                            yCoord = y + height / 2;
                            if (invertedBusinessRange) {
                                xCoord = isPositive ? x : x + width
                            } else {
                                xCoord = isPositive ? x + width : x
                            }
                        } else {
                            xCoord = x + width / 2;
                            if (invertedBusinessRange) {
                                yCoord = isPositive ? y + height : y
                            } else {
                                yCoord = isPositive ? y : y + height
                            }
                        }
                        return {
                            x: xCoord,
                            y: yCoord,
                            offset: 0
                        }
                    },
                    getTooltipParams: function(location) {
                        if ("edge" === location) {
                            return this._getEdgeTooltipParams()
                        }
                        const center = this.getCenterCoord();
                        center.offset = 0;
                        return center
                    },
                    getCenterCoord() {
                        const {
                            width: width,
                            height: height,
                            x: x,
                            y: y
                        } = this;
                        return {
                            x: x + width / 2,
                            y: y + height / 2
                        }
                    },
                    _truncateCoord: function(coord, bounds) {
                        if (null === coord) {
                            return coord
                        }
                        if (coord < bounds[0]) {
                            return bounds[0]
                        }
                        if (coord > bounds[1]) {
                            return bounds[1]
                        }
                        return coord
                    },
                    _getErrorBarBaseEdgeLength() {
                        return this._options.rotated ? this.height : this.width
                    },
                    _translateErrorBars: function(argVisibleArea) {
                        _symbol_point.default._translateErrorBars.call(this);
                        if (this._errorBarPos < argVisibleArea[0] || this._errorBarPos > argVisibleArea[1]) {
                            this._errorBarPos = void 0
                        }
                    },
                    _translate: function() {
                        const that = this;
                        const rotated = that._options.rotated;
                        const valAxis = rotated ? "x" : "y";
                        const argAxis = rotated ? "y" : "x";
                        const valIntervalName = rotated ? "width" : "height";
                        const argIntervalName = rotated ? "height" : "width";
                        const argTranslator = that._getArgTranslator();
                        const valTranslator = that._getValTranslator();
                        const argVisibleArea = that.series.getArgumentAxis().getVisibleArea();
                        const valVisibleArea = that.series.getValueAxis().getVisibleArea();
                        let arg = argTranslator.translate(that.argument);
                        let val = valTranslator.translate(that.value, 1);
                        let minVal = valTranslator.translate(that.minValue, -1);
                        that[argAxis] = arg = null === arg ? arg : arg + (that[argAxis + "Correction"] || 0);
                        that["v" + valAxis] = val;
                        that["v" + argAxis] = arg + that[argIntervalName] / 2;
                        this._cacheVisibility(arg, val, minVal, rotated);
                        val = that._truncateCoord(val, valVisibleArea);
                        minVal = that._truncateCoord(minVal, valVisibleArea);
                        that[valIntervalName] = _abs(val - minVal);
                        val = val < minVal ? val : minVal;
                        that[valAxis] = null === val ? val : val + (that[valAxis + "Correction"] || 0);
                        that["min" + valAxis.toUpperCase()] = null === minVal ? minVal : minVal + (that[valAxis + "Correction"] || 0);
                        that["default" + valAxis.toUpperCase()] = valTranslator.translate("canvas_position_default");
                        that._translateErrorBars(argVisibleArea);
                        if (that.inVisibleArea && null !== that[argAxis]) {
                            if (that[argAxis] < argVisibleArea[0]) {
                                that[argIntervalName] = that[argIntervalName] - (argVisibleArea[0] - that[argAxis]);
                                that[argAxis] = argVisibleArea[0]
                            }
                            if (that[argAxis] + that[argIntervalName] > argVisibleArea[1]) {
                                that[argIntervalName] = argVisibleArea[1] - that[argAxis]
                            }
                        }
                    },
                    _updateMarker: function(animationEnabled, style) {
                        this.graphic.smartAttr(_extend({}, style, !animationEnabled ? this.getMarkerCoords() : {}))
                    },
                    getMarkerCoords: function() {
                        const that = this;
                        let x = that.x;
                        const y = that.y;
                        let width = that.width;
                        let height = that.height;
                        const argAxis = that.series.getArgumentAxis();
                        const rotated = that._options.rotated;
                        if (argAxis.getAxisPosition) {
                            const axisOptions = argAxis.getOptions();
                            const edgeOffset = Math.round(axisOptions.width / 2);
                            const argAxisPosition = argAxis.getAxisPosition();
                            if (axisOptions.visible) {
                                if (!rotated) {
                                    height -= that.minY === that.defaultY && that.minY === argAxisPosition - argAxis.getAxisShift() ? edgeOffset : 0;
                                    height < 0 && (height = 0)
                                } else {
                                    const isStartFromAxis = that.minX === that.defaultX && that.minX === argAxisPosition - argAxis.getAxisShift();
                                    x += isStartFromAxis ? edgeOffset : 0;
                                    width -= isStartFromAxis ? edgeOffset : 0;
                                    width < 0 && (width = 0)
                                }
                            }
                        }
                        return {
                            x: x,
                            y: y,
                            width: width,
                            height: height
                        }
                    },
                    coordsIn: function(x, y) {
                        return x >= this.x && x <= this.x + this.width && y >= this.y && y <= this.y + this.height
                    }
                });
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        54497:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/points/base_point.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Point = Point;
                var _consts = _interopRequireDefault(__webpack_require__( /*! ../../components/consts */ 32410));
                var _symbol_point = _interopRequireDefault(__webpack_require__( /*! ./symbol_point */ 24894));
                var _bar_point = _interopRequireDefault(__webpack_require__( /*! ./bar_point */ 27428));
                var _bubble_point = _interopRequireDefault(__webpack_require__( /*! ./bubble_point */ 37440));
                var _pie_point = _interopRequireDefault(__webpack_require__( /*! ./pie_point */ 85912));
                var _range_symbol_point = _interopRequireDefault(__webpack_require__( /*! ./range_symbol_point */ 97319));
                var _range_bar_point = _interopRequireDefault(__webpack_require__( /*! ./range_bar_point */ 73206));
                var _candlestick_point = _interopRequireDefault(__webpack_require__( /*! ./candlestick_point */ 69297));
                var _stock_point = _interopRequireDefault(__webpack_require__( /*! ./stock_point */ 71678));
                var _polar_point = __webpack_require__( /*! ./polar_point */ 38234);
                var _utils = __webpack_require__( /*! ../../core/utils */ 19157);
                var _extend2 = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 20576);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const mixins = {};
                const _extend = _extend2.extend;
                const statesConsts = _consts.default.states;
                const SELECTED_STATE = statesConsts.selectedMark;
                const HOVER_STATE = statesConsts.hoverMark;
                const NORMAL_STATE = statesConsts.normalMark;
                const HOVER = statesConsts.hover;
                const NORMAL = statesConsts.normal;
                const SELECTION = statesConsts.selection;
                const pointTypes = {
                    chart: {
                        scatter: "symbolPoint",
                        line: "symbolPoint",
                        spline: "symbolPoint",
                        stepline: "symbolPoint",
                        stackedline: "symbolPoint",
                        fullstackedline: "symbolPoint",
                        stackedspline: "symbolPoint",
                        fullstackedspline: "symbolPoint",
                        stackedsplinearea: "symbolPoint",
                        fullstackedsplinearea: "symbolPoint",
                        area: "symbolPoint",
                        splinearea: "symbolPoint",
                        steparea: "symbolPoint",
                        stackedarea: "symbolPoint",
                        fullstackedarea: "symbolPoint",
                        rangearea: "rangeSymbolPoint",
                        bar: "barPoint",
                        stackedbar: "barPoint",
                        fullstackedbar: "barPoint",
                        rangebar: "rangeBarPoint",
                        bubble: "bubblePoint",
                        stock: "stockPoint",
                        candlestick: "candlestickPoint"
                    },
                    pie: {
                        pie: "piePoint",
                        doughnut: "piePoint",
                        donut: "piePoint"
                    },
                    polar: {
                        scatter: "polarSymbolPoint",
                        line: "polarSymbolPoint",
                        area: "polarSymbolPoint",
                        bar: "polarBarPoint",
                        stackedbar: "polarBarPoint"
                    }
                };

                function isNoneMode(mode) {
                    return "none" === (0, _utils.normalizeEnum)(mode)
                }

                function Point(series, dataItem, options) {
                    this.fullState = NORMAL_STATE;
                    this.series = series;
                    this.update(dataItem, options);
                    this._viewCounters = {
                        hover: 0,
                        selection: 0
                    };
                    this._emptySettings = {
                        fill: null,
                        stroke: null,
                        dashStyle: null,
                        filter: null
                    }
                }
                mixins.symbolPoint = _symbol_point.default;
                mixins.barPoint = _bar_point.default;
                mixins.bubblePoint = _bubble_point.default;
                mixins.piePoint = _pie_point.default;
                mixins.rangeSymbolPoint = _range_symbol_point.default;
                mixins.rangeBarPoint = _range_bar_point.default;
                mixins.candlestickPoint = _candlestick_point.default;
                mixins.stockPoint = _stock_point.default;
                mixins.polarSymbolPoint = _polar_point.polarSymbolPoint;
                mixins.polarBarPoint = _polar_point.polarBarPoint;
                Point.prototype = {
                    constructor: Point,
                    getColor: function() {
                        if (!this.hasValue() && !this._styles.usePointCustomOptions) {
                            this.series.customizePoint(this, this._dataItem)
                        }
                        return this._styles.normal.fill || this.series.getColor()
                    },
                    _getStyle: function() {
                        return this._styles[this._currentStyle || "normal"]
                    },
                    update: function(dataItem, options) {
                        this.updateOptions(options);
                        this.updateData(dataItem)
                    },
                    updateData: function(dataItem) {
                        const argumentWasChanged = this.argument !== dataItem.argument;
                        this.argument = this.initialArgument = this.originalArgument = dataItem.argument;
                        this.tag = dataItem.tag;
                        this.index = dataItem.index;
                        this._dataItem = dataItem;
                        this.data = dataItem.data;
                        this.lowError = dataItem.lowError;
                        this.highError = dataItem.highError;
                        this.aggregationInfo = dataItem.aggregationInfo;
                        this._updateData(dataItem, argumentWasChanged);
                        !this.hasValue() && this.setInvisibility();
                        this._fillStyle();
                        this._updateLabelData()
                    },
                    deleteMarker: function() {
                        const that = this;
                        if (that.graphic) {
                            that.graphic.dispose()
                        }
                        that.graphic = null
                    },
                    draw: function(renderer, groups, animationEnabled, firstDrawing) {
                        const that = this;
                        if (that._needDeletingOnDraw || that.series.autoHidePointMarkers && !that.isSelected()) {
                            that.deleteMarker();
                            that._needDeletingOnDraw = false
                        }
                        if (that._needClearingOnDraw) {
                            that.clearMarker();
                            that._needClearingOnDraw = false
                        }
                        if (!that._hasGraphic()) {
                            that.getMarkerVisibility() && !that.series.autoHidePointMarkers && that._drawMarker(renderer, groups.markers, animationEnabled, firstDrawing)
                        } else {
                            that._updateMarker(animationEnabled, this._getStyle(), groups.markers)
                        }
                        that._drawLabel();
                        that._drawErrorBar(renderer, groups.errorBars, animationEnabled);
                        return that
                    },
                    _getViewStyle: function() {
                        let state = NORMAL_STATE;
                        let fullState = this.fullState;
                        const styles = [NORMAL, HOVER, SELECTION, SELECTION];
                        if (this._viewCounters.hover) {
                            state |= HOVER_STATE
                        }
                        if (this._viewCounters.selection) {
                            state |= SELECTED_STATE
                        }
                        if (isNoneMode(this.getOptions().selectionMode)) {
                            fullState &= ~SELECTED_STATE
                        }
                        if (isNoneMode(this.getOptions().hoverMode)) {
                            fullState &= ~HOVER_STATE
                        }
                        state |= fullState;
                        return styles[state]
                    },
                    applyView: function(legendCallback) {
                        const that = this;
                        const style = that._getViewStyle();
                        that._currentStyle = style;
                        if (!that.graphic && that.getMarkerVisibility() && that.series.autoHidePointMarkers && (style === SELECTION || style === HOVER)) {
                            that._drawMarker(that.series.getRenderer(), that.series.getMarkersGroup())
                        }
                        if (that.graphic) {
                            if (that.series.autoHidePointMarkers && style !== SELECTION && style !== HOVER) {
                                that.deleteMarker()
                            } else {
                                if ("normal" === style) {
                                    that.clearMarker()
                                } else {
                                    that.graphic.toForeground()
                                }
                                that._updateMarker(true, that._styles[style], void 0, legendCallback)
                            }
                        }
                    },
                    setView: function(style) {
                        this._viewCounters[style]++;
                        this.applyView()
                    },
                    resetView: function(style) {
                        const viewCounters = this._viewCounters;
                        --viewCounters[style];
                        if (viewCounters[style] < 0) {
                            viewCounters[style] = 0
                        }
                        this.applyView()
                    },
                    releaseHoverState: function() {
                        const that = this;
                        if (that.graphic && !that.isSelected()) {
                            that.graphic.toBackground()
                        }
                    },
                    select: function() {
                        this.series.selectPoint(this)
                    },
                    clearSelection: function() {
                        this.series.deselectPoint(this)
                    },
                    hover: function() {
                        this.series.hoverPoint(this)
                    },
                    clearHover: function() {
                        this.series.clearPointHover()
                    },
                    showTooltip: function() {
                        this.series.showPointTooltip(this)
                    },
                    hideTooltip: function() {
                        this.series.hidePointTooltip(this)
                    },
                    _checkLabelsChanging: function(oldType, newType) {
                        const isNewRange = ~newType.indexOf("range");
                        const isOldRange = ~oldType.indexOf("range");
                        return isOldRange && !isNewRange || !isOldRange && isNewRange
                    },
                    updateOptions: function(newOptions) {
                        if (!newOptions) {
                            return
                        }
                        const that = this;
                        const oldOptions = that._options;
                        const widgetType = newOptions.widgetType;
                        const oldType = oldOptions && oldOptions.type;
                        const newType = newOptions.type;
                        const newPointTypeMixin = pointTypes[widgetType][newType];
                        if (oldType !== newType) {
                            that._needDeletingOnDraw = true;
                            that._needClearingOnDraw = false;
                            if (oldType) {
                                that._checkLabelsChanging(oldType, newType) && that.deleteLabel();
                                that._resetType(mixins[pointTypes[oldType]])
                            }
                            that._setType(mixins[newPointTypeMixin])
                        } else {
                            that._needDeletingOnDraw = that._checkSymbol(oldOptions, newOptions);
                            that._needClearingOnDraw = that._checkCustomize(oldOptions, newOptions)
                        }
                        that._options = newOptions;
                        that._fillStyle();
                        that._updateLabelOptions(newPointTypeMixin)
                    },
                    translate: function() {
                        if (this.hasValue()) {
                            this._translate();
                            this.translated = true
                        }
                    },
                    _checkCustomize: function(oldOptions, newOptions) {
                        return oldOptions.styles.usePointCustomOptions && !newOptions.styles.usePointCustomOptions
                    },
                    _getCustomLabelVisibility: function() {
                        return this._styles.useLabelCustomOptions ? !!this._options.label.visible : null
                    },
                    getBoundingRect: function() {
                        return this._getGraphicBBox()
                    },
                    _resetType: function(methods) {
                        for (const methodName in methods) {
                            delete this[methodName]
                        }
                    },
                    _setType: function(methods) {
                        for (const methodName in methods) {
                            this[methodName] = methods[methodName]
                        }
                    },
                    isInVisibleArea: function() {
                        return this.inVisibleArea
                    },
                    isSelected: function() {
                        return !!(this.fullState & SELECTED_STATE)
                    },
                    isHovered: function() {
                        return !!(this.fullState & HOVER_STATE)
                    },
                    getOptions: function() {
                        return this._options
                    },
                    animate: function(complete, settings, partitionDuration) {
                        if (!this.graphic) {
                            complete && complete();
                            return
                        }
                        this.graphic.animate(settings, {
                            partitionDuration: partitionDuration
                        }, complete)
                    },
                    getCoords: function(min) {
                        const that = this;
                        if (!min) {
                            return {
                                x: that.x,
                                y: that.y
                            }
                        }
                        if (!that._options.rotated) {
                            return {
                                x: that.x,
                                y: that.minY + (that.y - that.minY ? 0 : 1)
                            }
                        }
                        return {
                            x: that.minX - (that.x - that.minX ? 0 : 1),
                            y: that.y
                        }
                    },
                    getDefaultCoords: function() {
                        return !this._options.rotated ? {
                            x: this.x,
                            y: this.defaultY
                        } : {
                            x: this.defaultX,
                            y: this.y
                        }
                    },
                    setDefaultCoords() {
                        const coords = this.getDefaultCoords();
                        this.x = coords.x;
                        this.y = coords.y
                    },
                    _getVisibleArea: function() {
                        return this.series.getVisibleArea()
                    },
                    _getArgTranslator: function() {
                        return this.series.getArgumentAxis().getTranslator()
                    },
                    _getValTranslator: function() {
                        return this.series.getValueAxis().getTranslator()
                    },
                    isArgumentCorrect() {
                        return this.series._argumentChecker(this.argument)
                    },
                    isValueCorrect() {
                        const valueChecker = this.series._valueChecker;
                        return valueChecker(this.getMinValue()) && valueChecker(this.getMaxValue())
                    },
                    hasValue: function() {
                        return null !== this.value && null !== this.minValue && this.isArgumentCorrect() && this.isValueCorrect()
                    },
                    hasCoords: _common.noop,
                    correctPosition: _common.noop,
                    correctRadius: _common.noop,
                    correctLabelRadius: _common.noop,
                    getCrosshairData: _common.noop,
                    getPointRadius: _common.noop,
                    _populatePointShape: _common.noop,
                    _checkSymbol: _common.noop,
                    getMarkerCoords: _common.noop,
                    hide: _common.noop,
                    show: _common.noop,
                    hideMarker: _common.noop,
                    setInvisibility: _common.noop,
                    clearVisibility: _common.noop,
                    isVisible: _common.noop,
                    resetCorrection: _common.noop,
                    correctValue: _common.noop,
                    resetValue: _common.noop,
                    setPercentValue: _common.noop,
                    correctCoordinates: _common.noop,
                    coordsIn: _common.noop,
                    getTooltipParams: _common.noop,
                    applyWordWrap: _common.noop,
                    setLabelTrackerData: _common.noop,
                    updateLabelCoord: _common.noop,
                    drawLabel: _common.noop,
                    correctLabelPosition: _common.noop,
                    getMinValue: _common.noop,
                    getMaxValue: _common.noop,
                    _drawErrorBar: _common.noop,
                    getMarkerVisibility: _common.noop,
                    dispose: function() {
                        this.deleteMarker();
                        this.deleteLabel();
                        this._errorBar && this._errorBar.dispose();
                        this._options = this._styles = this.series = this._errorBar = null
                    },
                    getTooltipFormatObject: function(tooltip, stackPoints) {
                        const that = this;
                        const tooltipFormatObject = that._getFormatObject(tooltip);
                        const sharedTooltipValuesArray = [];
                        const tooltipStackPointsFormatObject = [];
                        if (stackPoints) {
                            stackPoints.forEach(point => {
                                if (!point.isVisible()) {
                                    return
                                }
                                const formatObject = point._getFormatObject(tooltip);
                                tooltipStackPointsFormatObject.push(formatObject);
                                sharedTooltipValuesArray.push(formatObject.seriesName + ": " + formatObject.valueText)
                            });
                            _extend(tooltipFormatObject, {
                                points: tooltipStackPointsFormatObject,
                                valueText: sharedTooltipValuesArray.join("\n"),
                                stackName: that.series.getStackName() || null
                            })
                        }
                        const aggregationInfo = that.aggregationInfo;
                        if (aggregationInfo) {
                            const axis = that.series.getArgumentAxis();
                            const rangeText = axis.formatRange(aggregationInfo.intervalStart, aggregationInfo.intervalEnd, aggregationInfo.aggregationInterval, tooltip.getOptions().argumentFormat);
                            if (rangeText) {
                                tooltipFormatObject.valueText += "\n".concat(rangeText)
                            }
                        }
                        return tooltipFormatObject
                    },
                    setHole: function(holeValue, position) {
                        const that = this;
                        const minValue = isFinite(that.minValue) ? that.minValue : 0;
                        if ((0, _type.isDefined)(holeValue)) {
                            if ("left" === position) {
                                that.leftHole = that.value - holeValue;
                                that.minLeftHole = minValue - holeValue
                            } else {
                                that.rightHole = that.value - holeValue;
                                that.minRightHole = minValue - holeValue
                            }
                        }
                    },
                    resetHoles: function() {
                        this.leftHole = null;
                        this.minLeftHole = null;
                        this.rightHole = null;
                        this.minRightHole = null
                    },
                    getLabel: function() {
                        return this._label
                    },
                    getLabels: function() {
                        return [this._label]
                    },
                    getCenterCoord() {
                        return {
                            x: this.x,
                            y: this.y
                        }
                    }
                }
            },
        37440:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/points/bubble_point.js ***!
              \*******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _extend2 = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _symbol_point = (obj = __webpack_require__( /*! ./symbol_point */ 24894), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const _extend = _extend2.extend;
                var _default = _extend({}, _symbol_point.default, {
                    correctCoordinates: function(diameter) {
                        this.bubbleSize = diameter / 2
                    },
                    _drawMarker: function(renderer, group, animationEnabled) {
                        const attr = _extend({
                            translateX: this.x,
                            translateY: this.y
                        }, this._getStyle());
                        this.graphic = renderer.circle(0, 0, animationEnabled ? 0 : this.bubbleSize).smartAttr(attr).data({
                            "chart-data-point": this
                        }).append(group)
                    },
                    getTooltipParams: function(location) {
                        const graphic = this.graphic;
                        if (!graphic) {
                            return
                        }
                        const height = graphic.getBBox().height;
                        return {
                            x: this.x,
                            y: this.y,
                            offset: height < 20 || "edge" === location ? height / 2 : 0
                        }
                    },
                    _getLabelFormatObject: function() {
                        const formatObject = _symbol_point.default._getLabelFormatObject.call(this);
                        formatObject.size = this.initialSize;
                        return formatObject
                    },
                    _updateData: function(data) {
                        _symbol_point.default._updateData.call(this, data);
                        this.size = this.initialSize = data.size
                    },
                    _getGraphicBBox: function() {
                        return this._getSymbolBBox(this.x, this.y, this.bubbleSize)
                    },
                    _updateMarker: function(animationEnabled, style) {
                        const that = this;
                        if (!animationEnabled) {
                            style = _extend({
                                r: that.bubbleSize,
                                translateX: that.x,
                                translateY: that.y
                            }, style)
                        }
                        that.graphic.smartAttr(style)
                    },
                    _getFormatObject: function(tooltip) {
                        const formatObject = _symbol_point.default._getFormatObject.call(this, tooltip);
                        formatObject.sizeText = tooltip.formatValue(this.initialSize);
                        return formatObject
                    },
                    _storeTrackerR: function() {
                        return this.bubbleSize
                    },
                    _getLabelCoords: function(label) {
                        let coords;
                        if ("inside" === label.getLayoutOptions().position) {
                            coords = this._getLabelCoordOfPosition(label, "inside")
                        } else {
                            coords = _symbol_point.default._getLabelCoords.call(this, label)
                        }
                        return coords
                    }
                });
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        69297:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/points/candlestick_point.js ***!
              \************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _extend2 = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _symbol_point = _interopRequireDefault(__webpack_require__( /*! ./symbol_point */ 24894));
                var _bar_point = _interopRequireDefault(__webpack_require__( /*! ./bar_point */ 27428));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const _math = Math;
                const _abs = _math.abs;
                const _min = _math.min;
                const _max = _math.max;
                const _round = _math.round;
                var _default = (0, _extend2.extend)({}, _bar_point.default, {
                    _calculateVisibility: _symbol_point.default._calculateVisibility,
                    _getContinuousPoints: function(openCoord, closeCoord) {
                        const that = this;
                        const x = that.x;
                        const createPoint = that._options.rotated ? function(x, y) {
                            return [y, x]
                        } : function(x, y) {
                            return [x, y]
                        };
                        const width = that.width;
                        const highCoord = that.highY;
                        const max = _abs(highCoord - openCoord) < _abs(highCoord - closeCoord) ? openCoord : closeCoord;
                        const min = max === closeCoord ? openCoord : closeCoord;
                        let points;
                        if (min === max) {
                            points = [].concat(createPoint(x, that.highY)).concat(createPoint(x, that.lowY)).concat(createPoint(x, that.closeY)).concat(createPoint(x - width / 2, that.closeY)).concat(createPoint(x + width / 2, that.closeY)).concat(createPoint(x, that.closeY))
                        } else {
                            points = [].concat(createPoint(x, that.highY)).concat(createPoint(x, max)).concat(createPoint(x + width / 2, max)).concat(createPoint(x + width / 2, min)).concat(createPoint(x, min)).concat(createPoint(x, that.lowY)).concat(createPoint(x, min)).concat(createPoint(x - width / 2, min)).concat(createPoint(x - width / 2, max)).concat(createPoint(x, max))
                        }
                        return points
                    },
                    _getCrockPoints: function(y) {
                        const x = this.x;
                        const createPoint = this._options.rotated ? function(x, y) {
                            return [y, x]
                        } : function(x, y) {
                            return [x, y]
                        };
                        return [].concat(createPoint(x, this.highY)).concat(createPoint(x, this.lowY)).concat(createPoint(x, y)).concat(createPoint(x - this.width / 2, y)).concat(createPoint(x + this.width / 2, y)).concat(createPoint(x, y))
                    },
                    _getPoints: function() {
                        const that = this;
                        let points;
                        const closeCoord = that.closeY;
                        const openCoord = that.openY;
                        if (null !== closeCoord && null !== openCoord) {
                            points = that._getContinuousPoints(openCoord, closeCoord)
                        } else if (openCoord === closeCoord) {
                            points = [that.x, that.highY, that.x, that.lowY]
                        } else {
                            points = that._getCrockPoints(null !== openCoord ? openCoord : closeCoord)
                        }
                        return points
                    },
                    getColor: function() {
                        return this._isReduction ? this._options.reduction.color : this._styles.normal.stroke || this.series.getColor()
                    },
                    _drawMarkerInGroup: function(group, attributes, renderer) {
                        this.graphic = renderer.path(this._getPoints(), "area").attr({
                            "stroke-linecap": "square"
                        }).attr(attributes).data({
                            "chart-data-point": this
                        }).sharp().append(group)
                    },
                    _fillStyle: function() {
                        const that = this;
                        const styles = that._options.styles;
                        if (that._isReduction && that._isPositive) {
                            that._styles = styles.reductionPositive
                        } else if (that._isReduction) {
                            that._styles = styles.reduction
                        } else if (that._isPositive) {
                            that._styles = styles.positive
                        } else {
                            that._styles = styles
                        }
                    },
                    _getMinTrackerWidth: function() {
                        return 2 + 2 * this._styles.normal["stroke-width"]
                    },
                    correctCoordinates: function(correctOptions) {
                        const minWidth = this._getMinTrackerWidth();
                        let width = correctOptions.width;
                        width = width < minWidth ? minWidth : width > 10 ? 10 : width;
                        this.width = width + width % 2;
                        this.xCorrection = correctOptions.offset
                    },
                    _getMarkerGroup: function(group) {
                        let markerGroup;
                        if (this._isReduction && this._isPositive) {
                            markerGroup = group.reductionPositiveMarkersGroup
                        } else if (this._isReduction) {
                            markerGroup = group.reductionMarkersGroup
                        } else if (this._isPositive) {
                            markerGroup = group.defaultPositiveMarkersGroup
                        } else {
                            markerGroup = group.defaultMarkersGroup
                        }
                        return markerGroup
                    },
                    _drawMarker: function(renderer, group) {
                        this._drawMarkerInGroup(this._getMarkerGroup(group), this._getStyle(), renderer)
                    },
                    _getSettingsForTracker: function() {
                        const that = this;
                        let highY = that.highY;
                        let lowY = that.lowY;
                        const rotated = that._options.rotated;
                        let x;
                        let y;
                        let width;
                        let height;
                        if (highY === lowY) {
                            highY = rotated ? highY + 2 : highY - 2;
                            lowY = rotated ? lowY - 2 : lowY + 2
                        }
                        if (rotated) {
                            x = _min(lowY, highY);
                            y = that.x - that.width / 2;
                            width = _abs(lowY - highY);
                            height = that.width
                        } else {
                            x = that.x - that.width / 2;
                            y = _min(lowY, highY);
                            width = that.width;
                            height = _abs(lowY - highY)
                        }
                        return {
                            x: x,
                            y: y,
                            width: width,
                            height: height
                        }
                    },
                    _getGraphicBBox: function(location) {
                        const that = this;
                        const rotated = that._options.rotated;
                        const x = that.x;
                        const width = that.width;
                        let lowY = that.lowY;
                        let highY = that.highY;
                        if (location) {
                            const valVisibleArea = that.series.getValueAxis().getVisibleArea();
                            highY = that._truncateCoord(highY, valVisibleArea);
                            lowY = that._truncateCoord(lowY, valVisibleArea)
                        }
                        const bBox = {
                            x: !rotated ? x - _round(width / 2) : lowY,
                            y: !rotated ? highY : x - _round(width / 2),
                            width: !rotated ? width : highY - lowY,
                            height: !rotated ? lowY - highY : width
                        };
                        if (location) {
                            const isTop = "top" === location;
                            if (!this._options.rotated) {
                                bBox.y = isTop ? bBox.y : bBox.y + bBox.height;
                                bBox.height = 0
                            } else {
                                bBox.x = isTop ? bBox.x + bBox.width : bBox.x;
                                bBox.width = 0
                            }
                        }
                        return bBox
                    },
                    getTooltipParams: function(location) {
                        const that = this;
                        if (that.graphic) {
                            const minValue = _min(that.lowY, that.highY);
                            const maxValue = _max(that.lowY, that.highY);
                            const visibleArea = that._getVisibleArea();
                            const rotated = that._options.rotated;
                            const minVisible = rotated ? visibleArea.minX : visibleArea.minY;
                            const maxVisible = rotated ? visibleArea.maxX : visibleArea.maxY;
                            const min = _max(minVisible, minValue);
                            const max = _min(maxVisible, maxValue);
                            const centerCoord = that.getCenterCoord();
                            if ("edge" === location) {
                                centerCoord[rotated ? "x" : "y"] = rotated ? max : min
                            }
                            centerCoord.offset = 0;
                            return centerCoord
                        }
                    },
                    getCenterCoord() {
                        if (this.graphic) {
                            const that = this;
                            let x;
                            let y;
                            const minValue = _min(that.lowY, that.highY);
                            const maxValue = _max(that.lowY, that.highY);
                            const visibleArea = that._getVisibleArea();
                            const rotated = that._options.rotated;
                            const minVisible = rotated ? visibleArea.minX : visibleArea.minY;
                            const maxVisible = rotated ? visibleArea.maxX : visibleArea.maxY;
                            const min = _max(minVisible, minValue);
                            const max = _min(maxVisible, maxValue);
                            const center = min + (max - min) / 2;
                            if (rotated) {
                                y = that.x;
                                x = center
                            } else {
                                x = that.x;
                                y = center
                            }
                            return {
                                x: x,
                                y: y
                            }
                        }
                    },
                    hasValue: function() {
                        return null !== this.highValue && null !== this.lowValue
                    },
                    hasCoords: function() {
                        return null !== this.x && null !== this.lowY && null !== this.highY
                    },
                    _translate: function() {
                        const rotated = this._options.rotated;
                        const valTranslator = this._getValTranslator();
                        const x = this._getArgTranslator().translate(this.argument);
                        this.vx = this.vy = this.x = null === x ? x : x + (this.xCorrection || 0);
                        this.openY = null !== this.openValue ? valTranslator.translate(this.openValue) : null;
                        this.highY = valTranslator.translate(this.highValue);
                        this.lowY = valTranslator.translate(this.lowValue);
                        this.closeY = null !== this.closeValue ? valTranslator.translate(this.closeValue) : null;
                        const centerValue = _min(this.lowY, this.highY) + _abs(this.lowY - this.highY) / 2;
                        this._calculateVisibility(!rotated ? this.x : centerValue, !rotated ? centerValue : this.x)
                    },
                    getCrosshairData: function(x, y) {
                        const that = this;
                        const rotated = that._options.rotated;
                        const origY = rotated ? x : y;
                        let yValue;
                        const argument = that.argument;
                        let coords;
                        let coord = "low";
                        if (_abs(that.lowY - origY) < _abs(that.closeY - origY)) {
                            yValue = that.lowY
                        } else {
                            yValue = that.closeY;
                            coord = "close"
                        }
                        if (_abs(yValue - origY) >= _abs(that.openY - origY)) {
                            yValue = that.openY;
                            coord = "open"
                        }
                        if (_abs(yValue - origY) >= _abs(that.highY - origY)) {
                            yValue = that.highY;
                            coord = "high"
                        }
                        if (rotated) {
                            coords = {
                                y: that.vy,
                                x: yValue,
                                xValue: that[coord + "Value"],
                                yValue: argument
                            }
                        } else {
                            coords = {
                                x: that.vx,
                                y: yValue,
                                xValue: argument,
                                yValue: that[coord + "Value"]
                            }
                        }
                        coords.axis = that.series.axis;
                        return coords
                    },
                    _updateData: function(data) {
                        const label = this._label;
                        const reductionColor = this._options.reduction.color;
                        this.value = this.initialValue = data.reductionValue;
                        this.originalValue = data.value;
                        this.lowValue = this.originalLowValue = data.lowValue;
                        this.highValue = this.originalHighValue = data.highValue;
                        this.openValue = this.originalOpenValue = data.openValue;
                        this.closeValue = this.originalCloseValue = data.closeValue;
                        this._isPositive = data.openValue < data.closeValue;
                        this._isReduction = data.isReduction;
                        if (this._isReduction) {
                            label.setColor(reductionColor)
                        }
                    },
                    _updateMarker: function(animationEnabled, style, group) {
                        const graphic = this.graphic;
                        graphic.attr({
                            points: this._getPoints()
                        }).smartAttr(style).sharp();
                        group && graphic.append(this._getMarkerGroup(group))
                    },
                    _getLabelFormatObject: function() {
                        return {
                            openValue: this.openValue,
                            highValue: this.highValue,
                            lowValue: this.lowValue,
                            closeValue: this.closeValue,
                            reductionValue: this.initialValue,
                            argument: this.initialArgument,
                            value: this.initialValue,
                            seriesName: this.series.name,
                            originalOpenValue: this.originalOpenValue,
                            originalCloseValue: this.originalCloseValue,
                            originalLowValue: this.originalLowValue,
                            originalHighValue: this.originalHighValue,
                            originalArgument: this.originalArgument,
                            point: this
                        }
                    },
                    _getFormatObject: function(tooltip) {
                        const highValue = tooltip.formatValue(this.highValue);
                        const openValue = tooltip.formatValue(this.openValue);
                        const closeValue = tooltip.formatValue(this.closeValue);
                        const lowValue = tooltip.formatValue(this.lowValue);
                        const symbolMethods = _symbol_point.default;
                        const formatObject = symbolMethods._getFormatObject.call(this, tooltip);
                        return (0, _extend2.extend)({}, formatObject, {
                            valueText: "h: " + highValue + ("" !== openValue ? " o: " + openValue : "") + ("" !== closeValue ? " c: " + closeValue : "") + " l: " + lowValue,
                            highValueText: highValue,
                            openValueText: openValue,
                            closeValueText: closeValue,
                            lowValueText: lowValue
                        })
                    },
                    getMaxValue: function() {
                        return this.highValue
                    },
                    getMinValue: function() {
                        return this.lowValue
                    }
                });
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        28318:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/points/label.js ***!
              \************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Label = Label;
                var _format_helper = (obj = __webpack_require__( /*! ../../../format_helper */ 30343), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _utils = __webpack_require__( /*! ../../core/utils */ 19157);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 95479);
                var _extend = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _display_format_parser = __webpack_require__( /*! ../helpers/display_format_parser */ 10656);
                const _format = _format_helper.default.format;
                const _math = Math;
                const _round = _math.round;
                const _floor = _math.floor;
                const _abs = _math.abs;

                function getClosestCoord(point, coords) {
                    let closestDistance = 1 / 0;
                    let closestCoord;
                    (0, _iterator.each)(coords, (function(_, coord) {
                        const x = point[0] - coord[0];
                        const y = point[1] - coord[1];
                        const distance = x * x + y * y;
                        if (distance < closestDistance) {
                            closestDistance = distance;
                            closestCoord = coord
                        }
                    }));
                    return [_floor(closestCoord[0]), _floor(closestCoord[1])]
                }

                function getCrossCoord(rect, coord, indexOffset) {
                    return (coord - rect[0 + indexOffset]) / (rect[2 + indexOffset] - rect[0 + indexOffset]) * (rect[3 - indexOffset] - rect[1 - indexOffset]) + rect[1 - indexOffset]
                }
                const barPointStrategy = {
                    isLabelInside: function(labelPoint, figure) {
                        const xc = labelPoint.x + labelPoint.width / 2;
                        const yc = labelPoint.y + labelPoint.height / 2;
                        return figure.x <= xc && xc <= figure.x + figure.width && figure.y <= yc && yc <= figure.y + figure.height
                    },
                    prepareLabelPoints: function(bBox, rotatedBBox, isHorizontal, angle, figureCenter) {
                        const x1 = rotatedBBox.x;
                        const xc = x1 + rotatedBBox.width / 2;
                        const x2 = x1 + rotatedBBox.width - 1;
                        const y1 = rotatedBBox.y;
                        const yc = y1 + rotatedBBox.height / 2;
                        const y2 = y1 + rotatedBBox.height - 1;
                        let labelPoints;
                        const isRectangular = _abs(angle) % 90 === 0;
                        if (figureCenter[0] > x1 && figureCenter[0] < x2) {
                            if (isRectangular) {
                                labelPoints = [
                                    [figureCenter[0], _abs(figureCenter[1] - y1) < _abs(figureCenter[1] - y2) ? y1 : y2]
                                ]
                            } else {
                                labelPoints = [
                                    [figureCenter[0], getCrossCoord([x1, y1, x2, y2], figureCenter[0], 0)]
                                ]
                            }
                        } else if (figureCenter[1] > y1 && figureCenter[1] < y2) {
                            if (isRectangular) {
                                labelPoints = [
                                    [_abs(figureCenter[0] - x1) < _abs(figureCenter[0] - x2) ? x1 : x2, figureCenter[1]]
                                ]
                            } else {
                                labelPoints = [
                                    [getCrossCoord([x1, y1, x2, y2], figureCenter[1], 1), figureCenter[1]]
                                ]
                            }
                        } else if (isRectangular) {
                            labelPoints = [
                                [x1, y1],
                                [isHorizontal ? x1 : xc, isHorizontal ? yc : y1],
                                [x2, y1],
                                [x1, y2],
                                [isHorizontal ? x2 : xc, isHorizontal ? yc : y2],
                                [x2, y2]
                            ]
                        } else {
                            labelPoints = [
                                [xc, yc]
                            ]
                        }
                        return labelPoints
                    },
                    isHorizontal: function(bBox, figure) {
                        return bBox.x > figure.x + figure.width || bBox.x + bBox.width < figure.x
                    },
                    getFigureCenter: function(figure) {
                        return [_floor(figure.x + figure.width / 2), _floor(figure.y + figure.height / 2)]
                    },
                    findFigurePoint: function(figure, labelPoint) {
                        const figureCenter = barPointStrategy.getFigureCenter(figure);
                        const point = getClosestCoord(labelPoint, [
                            [figure.x, figureCenter[1]],
                            [figureCenter[0], figure.y + figure.height],
                            [figure.x + figure.width, figureCenter[1]],
                            [figureCenter[0], figure.y]
                        ]);
                        return point
                    },
                    adjustPoints: function(points) {
                        const lineIsVertical = _abs(points[1] - points[3]) <= 1;
                        const lineIsHorizontal = _abs(points[0] - points[2]) <= 1;
                        if (lineIsHorizontal) {
                            points[0] = points[2]
                        }
                        if (lineIsVertical) {
                            points[1] = points[3]
                        }
                        return points
                    }
                };
                const symbolPointStrategy = {
                    isLabelInside: function() {
                        return false
                    },
                    prepareLabelPoints: barPointStrategy.prepareLabelPoints,
                    isHorizontal: function(bBox, figure) {
                        return bBox.x > figure.x + figure.r || bBox.x + bBox.width < figure.x - figure.r
                    },
                    getFigureCenter: function(figure) {
                        return [figure.x, figure.y]
                    },
                    findFigurePoint: function(figure, labelPoint) {
                        const angle = Math.atan2(figure.y - labelPoint[1], labelPoint[0] - figure.x);
                        return [_round(figure.x + figure.r * Math.cos(angle)), _round(figure.y - figure.r * Math.sin(angle))]
                    },
                    adjustPoints: barPointStrategy.adjustPoints
                };
                const piePointStrategy = {
                    isLabelInside: function(_0, _1, isOutside) {
                        return !isOutside
                    },
                    prepareLabelPoints: function(bBox, rotatedBBox, isHorizontal, angle) {
                        const xl = bBox.x;
                        const xr = xl + bBox.width;
                        const xc = xl + _round(bBox.width / 2);
                        const yt = bBox.y;
                        const yb = yt + bBox.height;
                        const yc = yt + _round(bBox.height / 2);
                        let points = [
                            [
                                [xl, yt],
                                [xr, yt]
                            ],
                            [
                                [xr, yt],
                                [xr, yb]
                            ],
                            [
                                [xr, yb],
                                [xl, yb]
                            ],
                            [
                                [xl, yb],
                                [xl, yt]
                            ]
                        ];
                        const cosSin = (0, _utils.getCosAndSin)(angle);
                        if (0 === angle) {
                            points = isHorizontal ? [
                                [xl, yc],
                                [xr, yc]
                            ] : [
                                [xc, yt],
                                [xc, yb]
                            ]
                        } else {
                            points = points.map((function(pair) {
                                return pair.map((function(point) {
                                    return [_round((point[0] - xc) * cosSin.cos + (point[1] - yc) * cosSin.sin + xc), _round(-(point[0] - xc) * cosSin.sin + (point[1] - yc) * cosSin.cos + yc)]
                                }))
                            })).reduce((function(r, pair) {
                                const point1x = pair[0][0];
                                const point1y = pair[0][1];
                                const point2x = pair[1][0];
                                const point2y = pair[1][1];
                                if (isHorizontal) {
                                    if (point1y >= yc && yc >= point2y || point1y <= yc && yc <= point2y) {
                                        r.push([(yc - point1y) * (point2x - point1x) / (point2y - point1y) + point1x, yc])
                                    }
                                } else if (point1x >= xc && xc >= point2x || point1x <= xc && xc <= point2x) {
                                    r.push([xc, (xc - point1x) * (point2y - point1y) / (point2x - point1x) + point1y])
                                }
                                return r
                            }), [])
                        }
                        return points
                    },
                    isHorizontal: function(bBox, figure) {
                        return bBox.x > figure.x || figure.x > bBox.x + bBox.width
                    },
                    getFigureCenter: symbolPointStrategy.getFigureCenter,
                    findFigurePoint: function(figure, labelPoint, isHorizontal) {
                        if (!isHorizontal) {
                            return [figure.x, figure.y]
                        }
                        const labelX = labelPoint[0];
                        const x = _round(figure.x + (figure.y - labelPoint[1]) / Math.tan((0, _utils.degreesToRadians)(figure.angle)));
                        let points = [figure.x, figure.y, x, labelPoint[1]];
                        if (!(figure.x <= x && x <= labelX) && !(labelX <= x && x <= figure.x)) {
                            if (_abs(figure.x - labelX) < 12) {
                                points = [figure.x, figure.y]
                            } else if (figure.x <= labelX) {
                                points[2] = figure.x + 12
                            } else {
                                points[2] = figure.x - 12
                            }
                        }
                        return points
                    },
                    adjustPoints: function(points) {
                        return points
                    }
                };

                function selectStrategy(figure) {
                    return void 0 !== figure.angle && piePointStrategy || void 0 !== figure.r && symbolPointStrategy || barPointStrategy
                }

                function disposeItem(obj, field) {
                    obj[field] && obj[field].dispose();
                    obj[field] = null
                }

                function checkBackground(background) {
                    return background && (background.fill && "none" !== background.fill || background["stroke-width"] > 0 && background.stroke && "none" !== background.stroke)
                }

                function checkConnector(connector) {
                    return connector && connector["stroke-width"] > 0 && connector.stroke && "none" !== connector.stroke
                }

                function Label(renderSettings) {
                    this._renderer = renderSettings.renderer;
                    this._container = renderSettings.labelsGroup;
                    this._point = renderSettings.point;
                    this._strategy = renderSettings.strategy;
                    this._rowCount = 1
                }
                Label.prototype = {
                    constructor: Label,
                    setColor: function(color) {
                        this._color = color
                    },
                    setOptions: function(options) {
                        this._options = options
                    },
                    setData: function(data) {
                        this._data = data
                    },
                    setDataField: function(fieldName, fieldValue) {
                        this._data = this._data || {};
                        this._data[fieldName] = fieldValue
                    },
                    getData: function() {
                        return this._data
                    },
                    setFigureToDrawConnector: function(figure) {
                        this._figure = figure
                    },
                    dispose: function() {
                        disposeItem(this, "_group");
                        this._data = this._options = this._textContent = this._visible = this._insideGroup = this._text = this._background = this._connector = this._figure = null
                    },
                    _setVisibility: function(value, state) {
                        this._group && this._group.attr({
                            visibility: value
                        });
                        this._visible = state
                    },
                    isVisible: function() {
                        return this._visible
                    },
                    hide: function(holdInvisible) {
                        this._holdVisibility = !!holdInvisible;
                        this._hide()
                    },
                    _hide: function() {
                        this._setVisibility("hidden", false)
                    },
                    show: function(holdVisible) {
                        const correctPosition = !this._drawn;
                        if (this._point.hasValue()) {
                            this._holdVisibility = !!holdVisible;
                            this._show();
                            correctPosition && this._point.correctLabelPosition(this)
                        }
                    },
                    _show: function() {
                        const that = this;
                        const renderer = that._renderer;
                        const container = that._container;
                        const options = that._options || {};
                        const text = that._textContent = function(data, options) {
                            const format = options.format;
                            data.valueText = _format(data.value, format);
                            data.argumentText = _format(data.argument, options.argumentFormat);
                            if (void 0 !== data.percent) {
                                data.percentText = _format(data.percent, {
                                    type: "percent",
                                    precision: format && format.percentPrecision
                                })
                            }
                            if (void 0 !== data.total) {
                                data.totalText = _format(data.total, format)
                            }
                            if (void 0 !== data.openValue) {
                                data.openValueText = _format(data.openValue, format)
                            }
                            if (void 0 !== data.closeValue) {
                                data.closeValueText = _format(data.closeValue, format)
                            }
                            if (void 0 !== data.lowValue) {
                                data.lowValueText = _format(data.lowValue, format)
                            }
                            if (void 0 !== data.highValue) {
                                data.highValueText = _format(data.highValue, format)
                            }
                            if (void 0 !== data.reductionValue) {
                                data.reductionValueText = _format(data.reductionValue, format)
                            }
                            return options.customizeText ? options.customizeText.call(data, data) : options.displayFormat ? (0, _display_format_parser.processDisplayFormat)(options.displayFormat, data) : data.valueText
                        }(that._data, options) || null;
                        if (text) {
                            if (!that._group) {
                                that._group = renderer.g().append(container);
                                that._insideGroup = renderer.g().append(that._group);
                                that._text = renderer.text("", 0, 0).append(that._insideGroup)
                            }
                            that._text.css(options.attributes ? (0, _utils.patchFontOptions)(options.attributes.font) : {});
                            if (checkBackground(options.background)) {
                                that._background = that._background || renderer.rect().append(that._insideGroup).toBackground();
                                that._background.attr(options.background);
                                that._color && that._background.attr({
                                    fill: that._color
                                })
                            } else {
                                disposeItem(that, "_background")
                            }
                            if (checkConnector(options.connector)) {
                                that._connector = that._connector || renderer.path([], "line").sharp().append(that._group).toBackground();
                                that._connector.attr(options.connector);
                                that._color && that._connector.attr({
                                    stroke: that._color
                                })
                            } else {
                                disposeItem(that, "_connector")
                            }
                            that._text.attr({
                                text: text,
                                align: options.textAlignment,
                                class: options.cssClass
                            });
                            that._updateBackground(that._text.getBBox());
                            that._setVisibility("visible", true);
                            that._drawn = true
                        } else {
                            that._hide()
                        }
                    },
                    _getLabelVisibility: function(isVisible) {
                        return this._holdVisibility ? this.isVisible() : isVisible
                    },
                    draw: function(isVisible) {
                        if (this._getLabelVisibility(isVisible)) {
                            this._show();
                            this._point && this._point.correctLabelPosition(this)
                        } else {
                            this._drawn = false;
                            this._hide()
                        }
                        return this
                    },
                    _updateBackground: function(bBox) {
                        const that = this;
                        if (that._background) {
                            bBox.x -= 8;
                            bBox.y -= 4;
                            bBox.width += 16;
                            bBox.height += 8;
                            that._background.attr(bBox)
                        }
                        that._bBoxWithoutRotation = (0, _extend.extend)({}, bBox);
                        const rotationAngle = that._options.rotationAngle || 0;
                        that._insideGroup.rotate(rotationAngle, bBox.x + bBox.width / 2, bBox.y + bBox.height / 2);
                        bBox = (0, _utils.rotateBBox)(bBox, [bBox.x + bBox.width / 2, bBox.y + bBox.height / 2], -rotationAngle);
                        that._bBox = bBox
                    },
                    getFigureCenter() {
                        const figure = this._figure;
                        const strategy = this._strategy || selectStrategy(figure);
                        return strategy.getFigureCenter(figure)
                    },
                    _getConnectorPoints: function() {
                        const that = this;
                        const figure = that._figure;
                        const options = that._options;
                        const strategy = that._strategy || selectStrategy(figure);
                        const bBox = that._shiftBBox(that._bBoxWithoutRotation);
                        const rotatedBBox = that.getBoundingRect();
                        let labelPoint;
                        let points = [];
                        let isHorizontal;
                        if (!strategy.isLabelInside(bBox, figure, "inside" !== options.position)) {
                            isHorizontal = strategy.isHorizontal(bBox, figure);
                            const figureCenter = that.getFigureCenter();
                            points = strategy.prepareLabelPoints(bBox, rotatedBBox, isHorizontal, -options.rotationAngle || 0, figureCenter);
                            labelPoint = getClosestCoord(figureCenter, points);
                            points = strategy.findFigurePoint(figure, labelPoint, isHorizontal);
                            points = points.concat(labelPoint)
                        }
                        return strategy.adjustPoints(points)
                    },
                    fit: function(maxWidth) {
                        const padding = this._background ? 16 : 0;
                        let rowCountChanged = false;
                        if (this._text) {
                            const result = this._text.setMaxSize(maxWidth - padding, void 0, this._options);
                            let rowCount = result.rowCount;
                            if (0 === rowCount) {
                                rowCount = 1
                            }
                            if (rowCount !== this._rowCount) {
                                rowCountChanged = true;
                                this._rowCount = rowCount
                            }
                            result.textIsEmpty && disposeItem(this, "_background")
                        }
                        this._updateBackground(this._text.getBBox());
                        return rowCountChanged
                    },
                    resetEllipsis: function() {
                        this._text && this._text.restoreText();
                        this._updateBackground(this._text.getBBox())
                    },
                    setTrackerData: function(point) {
                        this._text.data({
                            "chart-data-point": point
                        });
                        this._background && this._background.data({
                            "chart-data-point": point
                        })
                    },
                    hideInsideLabel: function(coords) {
                        return this._point.hideInsideLabel(this, coords)
                    },
                    getPoint() {
                        return this._point
                    },
                    shift: function(x, y) {
                        const that = this;
                        if (that._textContent) {
                            that._insideGroup.attr({
                                translateX: that._x = _round(x - that._bBox.x),
                                translateY: that._y = _round(y - that._bBox.y)
                            });
                            if (that._connector) {
                                that._connector.attr({
                                    points: that._getConnectorPoints()
                                })
                            }
                        }
                        return that
                    },
                    getBoundingRect: function() {
                        return this._shiftBBox(this._bBox)
                    },
                    _shiftBBox: function(bBox) {
                        return this._textContent ? {
                            x: bBox.x + this._x,
                            y: bBox.y + this._y,
                            width: bBox.width,
                            height: bBox.height
                        } : {}
                    },
                    getLayoutOptions: function() {
                        const options = this._options;
                        return {
                            alignment: options.alignment,
                            background: checkBackground(options.background),
                            horizontalOffset: options.horizontalOffset,
                            verticalOffset: options.verticalOffset,
                            radialOffset: options.radialOffset,
                            position: options.position,
                            connectorOffset: (checkConnector(options.connector) ? 12 : 0) + (checkBackground(options.background) ? 8 : 0)
                        }
                    }
                }
            },
        85912:
            /*!****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/points/pie_point.js ***!
              \****************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _extend2 = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _symbol_point = _interopRequireDefault(__webpack_require__( /*! ./symbol_point */ 24894));
                var _utils = __webpack_require__( /*! ../../core/utils */ 19157);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _consts = _interopRequireDefault(__webpack_require__( /*! ../../components/consts */ 32410));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const _extend = _extend2.extend;
                const _round = Math.round;
                const _sqrt = Math.sqrt;
                const _acos = Math.acos;
                const DEG = 180 / Math.PI;
                const _abs = Math.abs;
                const RADIAL_LABEL_INDENT = _consts.default.radialLabelIndent;
                var _default = _extend({}, _symbol_point.default, {
                    _updateData: function(data, argumentChanged) {
                        const that = this;
                        _symbol_point.default._updateData.call(this, data);
                        if (argumentChanged || !(0, _type.isDefined)(that._visible)) {
                            that._visible = true
                        }
                        that.minValue = that.initialMinValue = that.originalMinValue = (0, _type.isDefined)(data.minValue) ? data.minValue : 0
                    },
                    animate: function(complete, duration, delay) {
                        this.graphic.animate({
                            x: this.centerX,
                            y: this.centerY,
                            outerRadius: this.radiusOuter,
                            innerRadius: this.radiusInner,
                            startAngle: this.toAngle,
                            endAngle: this.fromAngle
                        }, {
                            delay: delay,
                            partitionDuration: duration
                        }, complete)
                    },
                    correctPosition: function(correction) {
                        this.correctRadius(correction);
                        this.correctLabelRadius(correction.radiusOuter + RADIAL_LABEL_INDENT);
                        this.centerX = correction.centerX;
                        this.centerY = correction.centerY
                    },
                    correctRadius: function(correction) {
                        this.radiusInner = correction.radiusInner;
                        this.radiusOuter = correction.radiusOuter
                    },
                    correctLabelRadius: function(radiusLabels) {
                        this.radiusLabels = radiusLabels
                    },
                    correctValue: function(correction, percent, base) {
                        this.value = (base || this.normalInitialValue) + correction;
                        this.minValue = correction;
                        this.percent = percent;
                        this._label.setDataField("percent", percent)
                    },
                    _updateLabelData: function() {
                        this._label.setData(this._getLabelFormatObject())
                    },
                    _getShiftLabelCoords: function() {
                        const that = this;
                        const bBox = that._label.getBoundingRect();
                        const coord = that._getLabelCoords(that._label);
                        const visibleArea = that._getVisibleArea();
                        if (that._isLabelDrawingWithoutPoints) {
                            return that._checkLabelPosition(coord, bBox, visibleArea)
                        } else {
                            return that._getLabelExtraCoord(coord, that._checkVerticalLabelPosition(coord, bBox, visibleArea), bBox)
                        }
                    },
                    _getLabelPosition: function(options) {
                        return options.position
                    },
                    getAnnotationCoords: function(location) {
                        return this._getElementCoords("edge" !== location ? "inside" : "outside", this.radiusOuter, 0)
                    },
                    _getElementCoords: function(position, elementRadius, radialOffset) {
                        let bBox = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {
                            x: 0,
                            y: 0,
                            width: 0,
                            height: 0
                        };
                        const that = this;
                        const angleFunctions = (0, _utils.getCosAndSin)(that.middleAngle);
                        const radiusInner = that.radiusInner;
                        const radiusOuter = that.radiusOuter;
                        const columnsPosition = "columns" === position;
                        let rad;
                        let x;
                        if ("inside" === position) {
                            rad = radiusInner + (radiusOuter - radiusInner) / 2 + radialOffset;
                            x = that.centerX + rad * angleFunctions.cos - bBox.width / 2
                        } else {
                            rad = elementRadius + radialOffset;
                            if (angleFunctions.cos > .1 || columnsPosition && angleFunctions.cos >= 0) {
                                x = that.centerX + rad * angleFunctions.cos
                            } else if (angleFunctions.cos < -.1 || columnsPosition && angleFunctions.cos < 0) {
                                x = that.centerX + rad * angleFunctions.cos - bBox.width
                            } else {
                                x = that.centerX + rad * angleFunctions.cos - bBox.width / 2
                            }
                        }
                        return {
                            x: x,
                            y: _round(that.centerY - rad * angleFunctions.sin - bBox.height / 2)
                        }
                    },
                    _getLabelCoords: function(label) {
                        const bBox = label.getBoundingRect();
                        const options = label.getLayoutOptions();
                        const position = this._getLabelPosition(options);
                        return this._getElementCoords(position, this.radiusLabels, options.radialOffset, bBox)
                    },
                    _correctLabelCoord: function(coord, moveLabelsFromCenter) {
                        const label = this._label;
                        const bBox = label.getBoundingRect();
                        const labelWidth = bBox.width;
                        const options = label.getLayoutOptions();
                        const visibleArea = this._getVisibleArea();
                        const rightBorderX = visibleArea.maxX - labelWidth;
                        const leftBorderX = visibleArea.minX;
                        const angleOfPoint = (0, _utils.normalizeAngle)(this.middleAngle);
                        const centerX = this.centerX;
                        const connectorOffset = options.connectorOffset;
                        let x = coord.x;
                        if ("columns" === options.position) {
                            if (angleOfPoint <= 90 || angleOfPoint >= 270) {
                                x = rightBorderX
                            } else {
                                x = leftBorderX
                            }
                            coord.x = x
                        } else if ("inside" !== options.position && moveLabelsFromCenter) {
                            if (angleOfPoint <= 90 || angleOfPoint >= 270) {
                                if (x - connectorOffset < centerX) {
                                    x = centerX + connectorOffset
                                }
                            } else if (x + labelWidth + connectorOffset > centerX) {
                                x = centerX - labelWidth - connectorOffset
                            }
                            coord.x = x
                        }
                        return coord
                    },
                    drawLabel: function() {
                        this.translate();
                        this._isLabelDrawingWithoutPoints = true;
                        this._drawLabel();
                        this._isLabelDrawingWithoutPoints = false
                    },
                    updateLabelCoord: function(moveLabelsFromCenter) {
                        const bBox = this._label.getBoundingRect();
                        let coord = this._correctLabelCoord(bBox, moveLabelsFromCenter);
                        coord = this._checkHorizontalLabelPosition(coord, bBox, this._getVisibleArea());
                        this._label.shift(_round(coord.x), _round(bBox.y))
                    },
                    _checkVerticalLabelPosition: function(coord, box, visibleArea) {
                        const x = coord.x;
                        let y = coord.y;
                        if (coord.y + box.height > visibleArea.maxY) {
                            y = visibleArea.maxY - box.height
                        } else if (coord.y < visibleArea.minY) {
                            y = visibleArea.minY
                        }
                        return {
                            x: x,
                            y: y
                        }
                    },
                    _getLabelExtraCoord: function(coord, shiftCoord, box) {
                        return coord.y !== shiftCoord.y ? (0, _utils.getVerticallyShiftedAngularCoords)({
                            x: coord.x,
                            y: coord.y,
                            width: box.width,
                            height: box.height
                        }, shiftCoord.y - coord.y, {
                            x: this.centerX,
                            y: this.centerY
                        }) : coord
                    },
                    _checkHorizontalLabelPosition: function(coord, box, visibleArea) {
                        let x = coord.x;
                        const y = coord.y;
                        if (coord.x + box.width > visibleArea.maxX) {
                            x = visibleArea.maxX - box.width
                        } else if (coord.x < visibleArea.minX) {
                            x = visibleArea.minX
                        }
                        return {
                            x: x,
                            y: y
                        }
                    },
                    applyWordWrap: function(moveLabelsFromCenter) {
                        const that = this;
                        const label = that._label;
                        const box = label.getBoundingRect();
                        const visibleArea = that._getVisibleArea();
                        const position = label.getLayoutOptions().position;
                        let width = box.width;
                        let rowCountChanged = false;
                        if ("columns" === position && that.series.index > 0) {
                            width = visibleArea.maxX - that.centerX - that.radiusLabels
                        } else if ("inside" === position) {
                            if (width > visibleArea.maxX - visibleArea.minX) {
                                width = visibleArea.maxX - visibleArea.minX
                            }
                        } else if (moveLabelsFromCenter && box.x < that.centerX && box.width + box.x > that.centerX) {
                            width = Math.floor((visibleArea.maxX - visibleArea.minX) / 2)
                        } else if (box.x + width > visibleArea.maxX) {
                            width = visibleArea.maxX - box.x
                        } else if (box.x < visibleArea.minX) {
                            width = box.x + width - visibleArea.minX
                        }
                        if (width < box.width) {
                            rowCountChanged = label.fit(width)
                        }
                        return rowCountChanged
                    },
                    setLabelTrackerData: function() {
                        this._label.setTrackerData(this)
                    },
                    _checkLabelPosition: function(coord, bBox, visibleArea) {
                        coord = this._checkHorizontalLabelPosition(coord, bBox, visibleArea);
                        return this._checkVerticalLabelPosition(coord, bBox, visibleArea)
                    },
                    _getLabelConnector: function() {
                        const rad = this.radiusOuter;
                        const seriesStyle = this._options.styles.normal;
                        const strokeWidthBy2 = seriesStyle["stroke-width"] / 2;
                        const borderWidth = this.series.getOptions().containerBackgroundColor === seriesStyle.stroke ? _round(strokeWidthBy2) : _round(-strokeWidthBy2);
                        const angleFunctions = (0, _utils.getCosAndSin)(_round(this.middleAngle));
                        return {
                            x: _round(this.centerX + (rad - borderWidth) * angleFunctions.cos),
                            y: _round(this.centerY - (rad - borderWidth) * angleFunctions.sin),
                            angle: this.middleAngle
                        }
                    },
                    _drawMarker: function(renderer, group, animationEnabled, firstDrawing) {
                        const that = this;
                        let radiusOuter = that.radiusOuter;
                        let radiusInner = that.radiusInner;
                        let fromAngle = that.fromAngle;
                        let toAngle = that.toAngle;
                        if (animationEnabled) {
                            radiusInner = radiusOuter = 0;
                            if (!firstDrawing) {
                                fromAngle = toAngle = that.shiftedAngle
                            }
                        }
                        that.graphic = renderer.arc(that.centerX, that.centerY, radiusInner, radiusOuter, toAngle, fromAngle).attr({
                            "stroke-linejoin": "round"
                        }).smartAttr(that._getStyle()).data({
                            "chart-data-point": that
                        }).sharp().append(group)
                    },
                    getTooltipParams: function() {
                        const angleFunctions = (0, _utils.getCosAndSin)(this.middleAngle);
                        const radiusInner = this.radiusInner;
                        const radiusOuter = this.radiusOuter;
                        return {
                            x: this.centerX + (radiusInner + (radiusOuter - radiusInner) / 2) * angleFunctions.cos,
                            y: this.centerY - (radiusInner + (radiusOuter - radiusInner) / 2) * angleFunctions.sin,
                            offset: 0
                        }
                    },
                    _translate: function() {
                        const that = this;
                        const angle = that.shiftedAngle || 0;
                        const value = that.value;
                        const minValue = that.minValue;
                        const translator = that._getValTranslator();
                        that.fromAngle = translator.translate(minValue) + angle;
                        that.toAngle = translator.translate(value) + angle;
                        that.middleAngle = translator.translate((value - minValue) / 2 + minValue) + angle;
                        if (!that.isVisible()) {
                            that.middleAngle = that.toAngle = that.fromAngle = that.fromAngle || angle
                        }
                    },
                    getMarkerVisibility: function() {
                        return true
                    },
                    _updateMarker: function(animationEnabled, style, _, callback) {
                        const that = this;
                        if (!animationEnabled) {
                            style = _extend({
                                x: that.centerX,
                                y: that.centerY,
                                outerRadius: that.radiusOuter,
                                innerRadius: that.radiusInner,
                                startAngle: that.toAngle,
                                endAngle: that.fromAngle
                            }, style)
                        }
                        that.graphic.smartAttr(style).sharp();
                        callback && callback()
                    },
                    getLegendStyles: function() {
                        return this._styles.legendStyles
                    },
                    isInVisibleArea: function() {
                        return true
                    },
                    hide: function() {
                        const that = this;
                        if (that._visible) {
                            that._visible = false;
                            that.hideTooltip();
                            that._options.visibilityChanged()
                        }
                    },
                    show: function() {
                        const that = this;
                        if (!that._visible) {
                            that._visible = true;
                            that._options.visibilityChanged()
                        }
                    },
                    setInvisibility: function() {
                        this._label.draw(false)
                    },
                    isVisible: function() {
                        return this._visible
                    },
                    _getFormatObject: function(tooltip) {
                        const formatObject = _symbol_point.default._getFormatObject.call(this, tooltip);
                        const percent = this.percent;
                        formatObject.percent = percent;
                        formatObject.percentText = tooltip.formatValue(percent, "percent");
                        return formatObject
                    },
                    getColor: function() {
                        return this._styles.normal.fill
                    },
                    coordsIn: function(x, y) {
                        const lx = x - this.centerX;
                        const ly = y - this.centerY;
                        const r = _sqrt(lx * lx + ly * ly);
                        const fromAngle = this.fromAngle % 360;
                        const toAngle = this.toAngle % 360;
                        let angle;
                        if (r < this.radiusInner || r > this.radiusOuter || 0 === r) {
                            return false
                        }
                        angle = _acos(lx / r) * DEG * (ly > 0 ? -1 : 1);
                        if (angle < 0) {
                            angle += 360
                        }
                        if (fromAngle === toAngle && _abs(this.toAngle - this.fromAngle) > 1e-4) {
                            return true
                        } else {
                            return fromAngle >= toAngle ? angle <= fromAngle && angle >= toAngle : !(angle >= fromAngle && angle <= toAngle)
                        }
                    }
                });
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        38234:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/points/polar_point.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.polarSymbolPoint = exports.polarBarPoint = void 0;
                var _extend2 = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _symbol_point = _interopRequireDefault(__webpack_require__( /*! ./symbol_point */ 24894));
                var _bar_point = _interopRequireDefault(__webpack_require__( /*! ./bar_point */ 27428));
                var _pie_point = _interopRequireDefault(__webpack_require__( /*! ./pie_point */ 85912));
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _utils = __webpack_require__( /*! ../../core/utils */ 19157);
                var _consts = _interopRequireDefault(__webpack_require__( /*! ../../components/consts */ 32410));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const _extend = _extend2.extend;
                const _math = Math;
                const _max = _math.max;
                const RADIAL_LABEL_INDENT = _consts.default.radialLabelIndent;
                const polarSymbolPoint = _extend({}, _symbol_point.default, {
                    _getLabelCoords: _pie_point.default._getLabelCoords,
                    _getElementCoords: _pie_point.default._getElementCoords,
                    _moveLabelOnCanvas: function(coord, visibleArea, labelBBox) {
                        let x = coord.x;
                        let y = coord.y;
                        if (visibleArea.minX > x) {
                            x = visibleArea.minX
                        }
                        if (visibleArea.maxX < x + labelBBox.width) {
                            x = visibleArea.maxX - labelBBox.width
                        }
                        if (visibleArea.minY > y) {
                            y = visibleArea.minY
                        }
                        if (visibleArea.maxY < y + labelBBox.height) {
                            y = visibleArea.maxY - labelBBox.height
                        }
                        return {
                            x: x,
                            y: y
                        }
                    },
                    _getLabelPosition: function() {
                        return "outside"
                    },
                    _getCoords: function(argument, value) {
                        const axis = this.series.getValueAxis();
                        const startAngle = axis.getAngles()[0];
                        const angle = this._getArgTranslator().translate(argument);
                        const radius = this._getValTranslator().translate(value);
                        const coords = (0, _utils.convertPolarToXY)(axis.getCenter(), axis.getAngles()[0], angle, radius);
                        coords.angle = angle + startAngle - 90, coords.radius = radius;
                        return coords
                    },
                    _translate() {
                        const center = this.series.getValueAxis().getCenter();
                        const coord = this._getCoords(this.argument, this.value);
                        const translator = this._getValTranslator();
                        const maxRadius = translator.isInverted() ? translator.translate("canvas_position_start") : translator.translate("canvas_position_end");
                        const normalizedRadius = (0, _type.isDefined)(coord.radius) && coord.radius >= 0 ? coord.radius : null;
                        this.vx = (0, _utils.normalizeAngle)(coord.angle);
                        this.vy = this.radiusOuter = this.radiusLabels = normalizedRadius;
                        this.radiusLabels += RADIAL_LABEL_INDENT;
                        this.radius = normalizedRadius;
                        this.middleAngle = -coord.angle;
                        this.angle = -coord.angle;
                        this.x = coord.x;
                        this.y = coord.y;
                        this.defaultX = this.centerX = center.x;
                        this.defaultY = this.centerY = center.y;
                        this._translateErrorBars();
                        this.inVisibleArea = this._checkRadiusForVisibleArea(normalizedRadius, maxRadius)
                    },
                    _checkRadiusForVisibleArea: (radius, maxRadius) => (0, _type.isDefined)(radius) && radius <= maxRadius,
                    _translateErrorBars: function() {
                        const errorBars = this._options.errorBars;
                        const translator = this._getValTranslator();
                        if (!errorBars) {
                            return
                        }(0, _type.isDefined)(this.lowError) && (this._lowErrorCoord = this.centerY - translator.translate(this.lowError));
                        (0, _type.isDefined)(this.highError) && (this._highErrorCoord = this.centerY - translator.translate(this.highError));
                        this._errorBarPos = this.centerX;
                        this._baseErrorBarPos = "stdDeviation" === errorBars.type ? this._lowErrorCoord + (this._highErrorCoord - this._lowErrorCoord) / 2 : this.centerY - this.radius
                    },
                    _getTranslates: function(animationEnabled) {
                        return animationEnabled ? this.getDefaultCoords() : {
                            x: this.x,
                            y: this.y
                        }
                    },
                    getDefaultCoords: function() {
                        const cosSin = (0, _utils.getCosAndSin)(-this.angle);
                        const radius = this._getValTranslator().translate("canvas_position_default");
                        const x = this.defaultX + radius * cosSin.cos;
                        const y = this.defaultY + radius * cosSin.sin;
                        return {
                            x: x,
                            y: y
                        }
                    },
                    _addLabelAlignmentAndOffset: function(label, coord) {
                        return coord
                    },
                    _checkLabelPosition: function(label, coord) {
                        const that = this;
                        const visibleArea = that._getVisibleArea();
                        const graphicBBox = that._getGraphicBBox();
                        if (that._isPointInVisibleArea(visibleArea, graphicBBox)) {
                            coord = that._moveLabelOnCanvas(coord, visibleArea, label.getBoundingRect())
                        }
                        return coord
                    },
                    _getErrorBarSettings: function(errorBarOptions, animationEnabled) {
                        const settings = _symbol_point.default._getErrorBarSettings.call(this, errorBarOptions, animationEnabled);
                        settings.rotate = 90 - this.angle;
                        settings.rotateX = this.centerX;
                        settings.rotateY = this.centerY;
                        return settings
                    },
                    getCoords: function(min) {
                        return min ? this.getDefaultCoords() : {
                            x: this.x,
                            y: this.y
                        }
                    }
                });
                exports.polarSymbolPoint = polarSymbolPoint;
                const polarBarPoint = _extend({}, _bar_point.default, {
                    _translateErrorBars: polarSymbolPoint._translateErrorBars,
                    _getErrorBarSettings: polarSymbolPoint._getErrorBarSettings,
                    _moveLabelOnCanvas: polarSymbolPoint._moveLabelOnCanvas,
                    _getLabelCoords: _pie_point.default._getLabelCoords,
                    _getElementCoords: _pie_point.default._getElementCoords,
                    _getLabelConnector: _pie_point.default._getLabelConnector,
                    getTooltipParams: _pie_point.default.getTooltipParams,
                    _getLabelPosition: _pie_point.default._getLabelPosition,
                    _getCoords: polarSymbolPoint._getCoords,
                    _translate() {
                        const that = this;
                        const translator = that._getValTranslator();
                        const businessRange = translator.getBusinessRange();
                        const maxRadius = translator.isInverted() ? translator.translate("canvas_position_start") : translator.translate("canvas_position_end");
                        that.radiusInner = translator.translate(that.minValue);
                        polarSymbolPoint._translate.call(that);
                        if (null === that.radiusInner) {
                            that.radiusInner = that.radius = maxRadius
                        } else if (null === that.radius) {
                            that.radius = that.value >= businessRange.minVisible ? maxRadius : 0
                        } else if (that.radius > maxRadius) {
                            that.radius = maxRadius
                        }
                        that.radiusOuter = that.radiusLabels = _max(that.radiusInner, that.radius);
                        that.radiusLabels += RADIAL_LABEL_INDENT;
                        that.radiusInner = that.defaultRadius = _math.min(that.radiusInner, that.radius);
                        that.middleAngle = that.angle = -(0, _utils.normalizeAngle)(that.middleAngleCorrection - that.angle)
                    },
                    _checkRadiusForVisibleArea(radius) {
                        return (0, _type.isDefined)(radius) || this._getValTranslator().translate(this.minValue) > 0
                    },
                    _getErrorBarBaseEdgeLength() {
                        const coord = this.getMarkerCoords();
                        return _math.PI * coord.outerRadius * _math.abs(coord.startAngle - coord.endAngle) / 180
                    },
                    getMarkerCoords: function() {
                        return {
                            x: this.centerX,
                            y: this.centerY,
                            outerRadius: this.radiusOuter,
                            innerRadius: this.defaultRadius,
                            startAngle: this.middleAngle - this.interval / 2,
                            endAngle: this.middleAngle + this.interval / 2
                        }
                    },
                    _drawMarker: function(renderer, group, animationEnabled) {
                        const styles = this._getStyle();
                        const coords = this.getMarkerCoords();
                        let innerRadius = coords.innerRadius;
                        let outerRadius = coords.outerRadius;
                        const start = this._getCoords(this.argument, "canvas_position_default");
                        let x = coords.x;
                        let y = coords.y;
                        if (animationEnabled) {
                            innerRadius = 0;
                            outerRadius = 0;
                            x = start.x;
                            y = start.y
                        }
                        this.graphic = renderer.arc(x, y, innerRadius, outerRadius, coords.startAngle, coords.endAngle).attr(styles).data({
                            "chart-data-point": this
                        }).append(group)
                    },
                    _checkLabelPosition: function(label, coord) {
                        const that = this;
                        const visibleArea = that._getVisibleArea();
                        const angleFunctions = (0, _utils.getCosAndSin)(that.middleAngle);
                        const x = that.centerX + that.defaultRadius * angleFunctions.cos;
                        const y = that.centerY - that.defaultRadius * angleFunctions.sin;
                        if (x > visibleArea.minX && x < visibleArea.maxX && y > visibleArea.minY && y < visibleArea.maxY) {
                            coord = that._moveLabelOnCanvas(coord, visibleArea, label.getBoundingRect())
                        }
                        return coord
                    },
                    _addLabelAlignmentAndOffset: function(label, coord) {
                        return coord
                    },
                    correctCoordinates: function(correctOptions) {
                        this.middleAngleCorrection = correctOptions.offset;
                        this.interval = correctOptions.width
                    },
                    coordsIn: function(x, y) {
                        const val = (0, _utils.convertXYToPolar)(this.series.getValueAxis().getCenter(), x, y);
                        const coords = this.getMarkerCoords();
                        const isBetweenAngles = coords.startAngle < coords.endAngle ? -val.phi >= coords.startAngle && -val.phi <= coords.endAngle : -val.phi <= coords.startAngle && -val.phi >= coords.endAngle;
                        return val.r >= coords.innerRadius && val.r <= coords.outerRadius && isBetweenAngles
                    }
                });
                exports.polarBarPoint = polarBarPoint
            },
        73206:
            /*!**********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/points/range_bar_point.js ***!
              \**********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 20576);
                var _extend2 = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _bar_point = _interopRequireDefault(__webpack_require__( /*! ./bar_point */ 27428));
                var _range_symbol_point = _interopRequireDefault(__webpack_require__( /*! ./range_symbol_point */ 97319));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const _extend = _extend2.extend;
                var _default = _extend({}, _bar_point.default, {
                    deleteLabel: _range_symbol_point.default.deleteLabel,
                    _getFormatObject: _range_symbol_point.default._getFormatObject,
                    clearVisibility: function() {
                        const graphic = this.graphic;
                        if (graphic && graphic.attr("visibility")) {
                            graphic.attr({
                                visibility: null
                            })
                        }
                    },
                    setInvisibility: function() {
                        const graphic = this.graphic;
                        if (graphic && "hidden" !== graphic.attr("visibility")) {
                            graphic.attr({
                                visibility: "hidden"
                            })
                        }
                        this._topLabel.draw(false);
                        this._bottomLabel.draw(false)
                    },
                    getTooltipParams: function(location) {
                        const that = this;
                        const edgeLocation = "edge" === location;
                        let x;
                        let y;
                        if (that._options.rotated) {
                            x = edgeLocation ? that.x + that.width : that.x + that.width / 2;
                            y = that.y + that.height / 2
                        } else {
                            x = that.x + that.width / 2;
                            y = edgeLocation ? that.y : that.y + that.height / 2
                        }
                        return {
                            x: x,
                            y: y,
                            offset: 0
                        }
                    },
                    _translate: function() {
                        const that = this;
                        const barMethods = _bar_point.default;
                        barMethods._translate.call(that);
                        if (that._options.rotated) {
                            that.width = that.width || 1
                        } else {
                            that.height = that.height || 1
                        }
                    },
                    hasCoords: _range_symbol_point.default.hasCoords,
                    _updateData: _range_symbol_point.default._updateData,
                    _getLabelPosition: _range_symbol_point.default._getLabelPosition,
                    _getLabelMinFormatObject: _range_symbol_point.default._getLabelMinFormatObject,
                    _updateLabelData: _range_symbol_point.default._updateLabelData,
                    _updateLabelOptions: _range_symbol_point.default._updateLabelOptions,
                    getCrosshairData: _range_symbol_point.default.getCrosshairData,
                    _createLabel: _range_symbol_point.default._createLabel,
                    _checkOverlay: _range_symbol_point.default._checkOverlay,
                    _checkLabelsOverlay: _range_symbol_point.default._checkLabelsOverlay,
                    _getOverlayCorrections: _range_symbol_point.default._getOverlayCorrections,
                    _drawLabel: _range_symbol_point.default._drawLabel,
                    _getLabelCoords: _range_symbol_point.default._getLabelCoords,
                    getLabel: _range_symbol_point.default.getLabel,
                    getLabels: _range_symbol_point.default.getLabels,
                    getBoundingRect: _common.noop,
                    getMinValue: _range_symbol_point.default.getMinValue,
                    getMaxValue: _range_symbol_point.default.getMaxValue
                });
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        97319:
            /*!*************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/points/range_symbol_point.js ***!
              \*************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 95479);
                var _extend2 = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 20576);
                var _label = __webpack_require__( /*! ./label */ 28318);
                var _symbol_point = (obj = __webpack_require__( /*! ./symbol_point */ 24894), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                const _extend = _extend2.extend;
                const _math = Math;
                const _abs = _math.abs;
                const _min = _math.min;
                const _max = _math.max;
                const _round = _math.round;
                var _default = _extend({}, _symbol_point.default, {
                    deleteLabel: function() {
                        this._topLabel.dispose();
                        this._topLabel = null;
                        this._bottomLabel.dispose();
                        this._bottomLabel = null
                    },
                    hideMarker: function(type) {
                        const graphic = this.graphic;
                        const marker = graphic && graphic[type + "Marker"];
                        const label = this["_" + type + "Label"];
                        if (marker && "hidden" !== marker.attr("visibility")) {
                            marker.attr({
                                visibility: "hidden"
                            })
                        }
                        label.draw(false)
                    },
                    setInvisibility: function() {
                        this.hideMarker("top");
                        this.hideMarker("bottom")
                    },
                    clearVisibility: function() {
                        const graphic = this.graphic;
                        const topMarker = graphic && graphic.topMarker;
                        const bottomMarker = graphic && graphic.bottomMarker;
                        if (topMarker && topMarker.attr("visibility")) {
                            topMarker.attr({
                                visibility: null
                            })
                        }
                        if (bottomMarker && bottomMarker.attr("visibility")) {
                            bottomMarker.attr({
                                visibility: null
                            })
                        }
                    },
                    clearMarker: function() {
                        const graphic = this.graphic;
                        const topMarker = graphic && graphic.topMarker;
                        const bottomMarker = graphic && graphic.bottomMarker;
                        const emptySettings = this._emptySettings;
                        topMarker && topMarker.attr(emptySettings);
                        bottomMarker && bottomMarker.attr(emptySettings)
                    },
                    _getLabelPosition: function(markerType) {
                        let position;
                        const labelsInside = "inside" === this._options.label.position;
                        if (!this._options.rotated) {
                            position = "top" === markerType ^ labelsInside ? "top" : "bottom"
                        } else {
                            position = "top" === markerType ^ labelsInside ? "right" : "left"
                        }
                        return position
                    },
                    _getLabelMinFormatObject: function() {
                        return {
                            index: 0,
                            argument: this.initialArgument,
                            value: this.initialMinValue,
                            seriesName: this.series.name,
                            originalValue: this.originalMinValue,
                            originalArgument: this.originalArgument,
                            point: this
                        }
                    },
                    _updateLabelData: function() {
                        const maxFormatObject = this._getLabelFormatObject();
                        maxFormatObject.index = 1;
                        this._topLabel.setData(maxFormatObject);
                        this._bottomLabel.setData(this._getLabelMinFormatObject())
                    },
                    _updateLabelOptions: function() {
                        const options = this._options.label;
                        (!this._topLabel || !this._bottomLabel) && this._createLabel();
                        this._topLabel.setOptions(options);
                        this._bottomLabel.setOptions(options)
                    },
                    _createLabel: function() {
                        const options = {
                            renderer: this.series._renderer,
                            labelsGroup: this.series._labelsGroup,
                            point: this
                        };
                        this._topLabel = new _label.Label(options);
                        this._bottomLabel = new _label.Label(options)
                    },
                    _getGraphicBBox: function(location) {
                        const options = this._options;
                        const images = this._getImage(options.image);
                        const image = "top" === location ? this._checkImage(images.top) : this._checkImage(images.bottom);
                        let bBox;
                        const coord = this._getPositionFromLocation(location);
                        if (options.visible) {
                            bBox = image ? this._getImageBBox(coord.x, coord.y) : this._getSymbolBBox(coord.x, coord.y, options.styles.normal.r)
                        } else {
                            bBox = {
                                x: coord.x,
                                y: coord.y,
                                width: 0,
                                height: 0
                            }
                        }
                        return bBox
                    },
                    _getPositionFromLocation: function(location) {
                        let x;
                        let y;
                        const isTop = "top" === location;
                        if (!this._options.rotated) {
                            x = this.x;
                            y = isTop ? _min(this.y, this.minY) : _max(this.y, this.minY)
                        } else {
                            x = isTop ? _max(this.x, this.minX) : _min(this.x, this.minX);
                            y = this.y
                        }
                        return {
                            x: x,
                            y: y
                        }
                    },
                    _checkOverlay: function(bottomCoord, topCoord, topValue) {
                        return bottomCoord < topCoord + topValue
                    },
                    _getOverlayCorrections: function(topCoords, bottomCoords) {
                        const rotated = this._options.rotated;
                        const coordSelector = !rotated ? "y" : "x";
                        const valueSelector = !rotated ? "height" : "width";
                        const visibleArea = this.series.getValueAxis().getVisibleArea();
                        const minBound = visibleArea[0];
                        const maxBound = visibleArea[1];
                        let delta = _round((topCoords[coordSelector] + topCoords[valueSelector] - bottomCoords[coordSelector]) / 2);
                        let coord1 = topCoords[coordSelector] - delta;
                        let coord2 = bottomCoords[coordSelector] + delta;
                        if (coord1 < minBound) {
                            delta = minBound - coord1;
                            coord1 += delta;
                            coord2 += delta
                        } else if (coord2 + bottomCoords[valueSelector] > maxBound) {
                            delta = maxBound - coord2 - bottomCoords[valueSelector];
                            coord1 += delta;
                            coord2 += delta
                        }
                        return {
                            coord1: coord1,
                            coord2: coord2
                        }
                    },
                    _checkLabelsOverlay: function(topLocation) {
                        const that = this;
                        const topCoords = that._topLabel.getBoundingRect();
                        const bottomCoords = that._bottomLabel.getBoundingRect();
                        let corrections = {};
                        if (!that._options.rotated) {
                            if ("top" === topLocation) {
                                if (this._checkOverlay(bottomCoords.y, topCoords.y, topCoords.height)) {
                                    corrections = this._getOverlayCorrections(topCoords, bottomCoords);
                                    that._topLabel.shift(topCoords.x, corrections.coord1);
                                    that._bottomLabel.shift(bottomCoords.x, corrections.coord2)
                                }
                            } else if (this._checkOverlay(topCoords.y, bottomCoords.y, bottomCoords.height)) {
                                corrections = this._getOverlayCorrections(bottomCoords, topCoords);
                                that._topLabel.shift(topCoords.x, corrections.coord2);
                                that._bottomLabel.shift(bottomCoords.x, corrections.coord1)
                            }
                        } else if ("top" === topLocation) {
                            if (this._checkOverlay(topCoords.x, bottomCoords.x, bottomCoords.width)) {
                                corrections = this._getOverlayCorrections(bottomCoords, topCoords);
                                that._topLabel.shift(corrections.coord2, topCoords.y);
                                that._bottomLabel.shift(corrections.coord1, bottomCoords.y)
                            }
                        } else if (this._checkOverlay(bottomCoords.x, topCoords.x, topCoords.width)) {
                            corrections = this._getOverlayCorrections(topCoords, bottomCoords);
                            that._topLabel.shift(corrections.coord1, topCoords.y);
                            that._bottomLabel.shift(corrections.coord2, bottomCoords.y)
                        }
                    },
                    _drawLabel: function() {
                        const that = this;
                        const labels = [];
                        const notInverted = that._options.rotated ? that.x >= that.minX : that.y < that.minY;
                        const customVisibility = that._getCustomLabelVisibility();
                        const topLabel = that._topLabel;
                        const bottomLabel = that._bottomLabel;
                        topLabel.pointPosition = notInverted ? "top" : "bottom";
                        bottomLabel.pointPosition = notInverted ? "bottom" : "top";
                        if ((that.series.getLabelVisibility() || customVisibility) && that.hasValue() && false !== customVisibility) {
                            false !== that.visibleTopMarker && labels.push(topLabel);
                            false !== that.visibleBottomMarker && labels.push(bottomLabel);
                            (0, _iterator.each)(labels, (function(_, label) {
                                label.draw(true)
                            }));
                            that._checkLabelsOverlay(that._topLabel.pointPosition)
                        } else {
                            topLabel.draw(false);
                            bottomLabel.draw(false)
                        }
                    },
                    _getImage: function(imageOption) {
                        const image = {};
                        if ((0, _type.isDefined)(imageOption)) {
                            if ("string" === typeof imageOption) {
                                image.top = image.bottom = imageOption
                            } else {
                                image.top = {
                                    url: "string" === typeof imageOption.url ? imageOption.url : imageOption.url && imageOption.url.rangeMaxPoint,
                                    width: "number" === typeof imageOption.width ? imageOption.width : imageOption.width && imageOption.width.rangeMaxPoint,
                                    height: "number" === typeof imageOption.height ? imageOption.height : imageOption.height && imageOption.height.rangeMaxPoint
                                };
                                image.bottom = {
                                    url: "string" === typeof imageOption.url ? imageOption.url : imageOption.url && imageOption.url.rangeMinPoint,
                                    width: "number" === typeof imageOption.width ? imageOption.width : imageOption.width && imageOption.width.rangeMinPoint,
                                    height: "number" === typeof imageOption.height ? imageOption.height : imageOption.height && imageOption.height.rangeMinPoint
                                }
                            }
                        }
                        return image
                    },
                    _checkSymbol: function(oldOptions, newOptions) {
                        const oldSymbol = oldOptions.symbol;
                        const newSymbol = newOptions.symbol;
                        const symbolChanged = "circle" === oldSymbol && "circle" !== newSymbol || "circle" !== oldSymbol && "circle" === newSymbol;
                        const oldImages = this._getImage(oldOptions.image);
                        const newImages = this._getImage(newOptions.image);
                        const topImageChanged = this._checkImage(oldImages.top) !== this._checkImage(newImages.top);
                        const bottomImageChanged = this._checkImage(oldImages.bottom) !== this._checkImage(newImages.bottom);
                        return symbolChanged || topImageChanged || bottomImageChanged
                    },
                    _getSettingsForTwoMarkers: function(style) {
                        const options = this._options;
                        const settings = {};
                        const x = options.rotated ? _min(this.x, this.minX) : this.x;
                        const y = options.rotated ? this.y : _min(this.y, this.minY);
                        const radius = style.r;
                        const points = this._populatePointShape(options.symbol, radius);
                        settings.top = _extend({
                            translateX: x + this.width,
                            translateY: y,
                            r: radius
                        }, style);
                        settings.bottom = _extend({
                            translateX: x,
                            translateY: y + this.height,
                            r: radius
                        }, style);
                        if (points) {
                            settings.top.points = settings.bottom.points = points
                        }
                        return settings
                    },
                    _hasGraphic: function() {
                        return this.graphic && this.graphic.topMarker && this.graphic.bottomMarker
                    },
                    _drawOneMarker: function(renderer, markerType, imageSettings, settings) {
                        const that = this;
                        const graphic = that.graphic;
                        if (graphic[markerType]) {
                            that._updateOneMarker(markerType, settings)
                        } else {
                            graphic[markerType] = that._createMarker(renderer, graphic, imageSettings, settings)
                        }
                    },
                    _drawMarker: function(renderer, group, animationEnabled, firstDrawing, style) {
                        const that = this;
                        const settings = that._getSettingsForTwoMarkers(style || that._getStyle());
                        const image = that._getImage(that._options.image);
                        if (that._checkImage(image.top)) {
                            settings.top = that._getImageSettings(settings.top, image.top)
                        }
                        if (that._checkImage(image.bottom)) {
                            settings.bottom = that._getImageSettings(settings.bottom, image.bottom)
                        }
                        that.graphic = that.graphic || renderer.g().append(group);
                        that.visibleTopMarker && that._drawOneMarker(renderer, "topMarker", image.top, settings.top);
                        that.visibleBottomMarker && that._drawOneMarker(renderer, "bottomMarker", image.bottom, settings.bottom)
                    },
                    _getSettingsForTracker: function(radius) {
                        const rotated = this._options.rotated;
                        return {
                            translateX: rotated ? _min(this.x, this.minX) - radius : this.x - radius,
                            translateY: rotated ? this.y - radius : _min(this.y, this.minY) - radius,
                            width: this.width + 2 * radius,
                            height: this.height + 2 * radius
                        }
                    },
                    isInVisibleArea: function() {
                        const rotated = this._options.rotated;
                        const argument = !rotated ? this.x : this.y;
                        const maxValue = !rotated ? _max(this.minY, this.y) : _max(this.minX, this.x);
                        const minValue = !rotated ? _min(this.minY, this.y) : _min(this.minX, this.x);
                        let tmp;
                        let visibleTopMarker;
                        let visibleBottomMarker;
                        let visibleRangeArea = true;
                        const visibleArgArea = this.series.getArgumentAxis().getVisibleArea();
                        const visibleValArea = this.series.getValueAxis().getVisibleArea();
                        const notVisibleByArg = visibleArgArea[1] < argument || visibleArgArea[0] > argument;
                        const notVisibleByVal = visibleValArea[0] > minValue && visibleValArea[0] > maxValue || visibleValArea[1] < minValue && visibleValArea[1] < maxValue;
                        if (notVisibleByArg || notVisibleByVal) {
                            visibleTopMarker = visibleBottomMarker = visibleRangeArea = false
                        } else {
                            visibleTopMarker = visibleValArea[0] <= minValue && visibleValArea[1] > minValue;
                            visibleBottomMarker = visibleValArea[0] < maxValue && visibleValArea[1] >= maxValue;
                            if (rotated) {
                                tmp = visibleTopMarker;
                                visibleTopMarker = visibleBottomMarker;
                                visibleBottomMarker = tmp
                            }
                        }
                        this.visibleTopMarker = visibleTopMarker;
                        this.visibleBottomMarker = visibleBottomMarker;
                        return visibleRangeArea
                    },
                    getTooltipParams: function() {
                        const that = this;
                        let x;
                        let y;
                        const rotated = that._options.rotated;
                        const minValue = !rotated ? _min(that.y, that.minY) : _min(that.x, that.minX);
                        const side = !rotated ? "height" : "width";
                        const visibleArea = that._getVisibleArea();
                        const minVisible = rotated ? visibleArea.minX : visibleArea.minY;
                        const maxVisible = rotated ? visibleArea.maxX : visibleArea.maxY;
                        const min = _max(minVisible, minValue);
                        const max = _min(maxVisible, minValue + that[side]);
                        if (!rotated) {
                            x = that.x;
                            y = min + (max - min) / 2
                        } else {
                            y = that.y;
                            x = min + (max - min) / 2
                        }
                        return {
                            x: x,
                            y: y,
                            offset: 0
                        }
                    },
                    _translate: function() {
                        const rotated = this._options.rotated;
                        _symbol_point.default._translate.call(this);
                        this.height = rotated ? 0 : _abs(this.minY - this.y);
                        this.width = rotated ? _abs(this.x - this.minX) : 0
                    },
                    hasCoords: function() {
                        return _symbol_point.default.hasCoords.call(this) && !(null === this.minX || null === this.minY)
                    },
                    _updateData: function(data) {
                        _symbol_point.default._updateData.call(this, data);
                        this.minValue = this.initialMinValue = this.originalMinValue = data.minValue
                    },
                    _getImageSettings: function(settings, image) {
                        return {
                            href: image.url || image.toString(),
                            width: image.width || 20,
                            height: image.height || 20,
                            translateX: settings.translateX,
                            translateY: settings.translateY
                        }
                    },
                    getCrosshairData: function(x, y) {
                        const rotated = this._options.rotated;
                        const minX = this.minX;
                        const minY = this.minY;
                        const vx = this.vx;
                        const vy = this.vy;
                        const value = this.value;
                        const minValue = this.minValue;
                        const argument = this.argument;
                        const coords = {
                            axis: this.series.axis,
                            x: vx,
                            y: vy,
                            yValue: value,
                            xValue: argument
                        };
                        if (rotated) {
                            coords.yValue = argument;
                            if (_abs(vx - x) < _abs(minX - x)) {
                                coords.xValue = value
                            } else {
                                coords.x = minX;
                                coords.xValue = minValue
                            }
                        } else if (_abs(vy - y) >= _abs(minY - y)) {
                            coords.y = minY;
                            coords.yValue = minValue
                        }
                        return coords
                    },
                    _updateOneMarker: function(markerType, settings) {
                        this.graphic && this.graphic[markerType] && this.graphic[markerType].attr(settings)
                    },
                    _updateMarker: function(animationEnabled, style) {
                        this._drawMarker(void 0, void 0, false, false, style)
                    },
                    _getFormatObject: function(tooltip) {
                        const initialMinValue = this.initialMinValue;
                        const initialValue = this.initialValue;
                        const initialArgument = this.initialArgument;
                        const minValue = tooltip.formatValue(initialMinValue);
                        const value = tooltip.formatValue(initialValue);
                        return {
                            argument: initialArgument,
                            argumentText: tooltip.formatValue(initialArgument, "argument"),
                            valueText: minValue + " - " + value,
                            rangeValue1Text: minValue,
                            rangeValue2Text: value,
                            rangeValue1: initialMinValue,
                            rangeValue2: initialValue,
                            seriesName: this.series.name,
                            point: this,
                            originalMinValue: this.originalMinValue,
                            originalValue: this.originalValue,
                            originalArgument: this.originalArgument
                        }
                    },
                    getLabel: function() {
                        return [this._topLabel, this._bottomLabel]
                    },
                    getLabels: function() {
                        return [this._topLabel, this._bottomLabel]
                    },
                    getBoundingRect: _common.noop,
                    coordsIn: function(x, y) {
                        const trackerRadius = this._storeTrackerR();
                        const xCond = x >= this.x - trackerRadius && x <= this.x + trackerRadius;
                        const yCond = y >= this.y - trackerRadius && y <= this.y + trackerRadius;
                        if (this._options.rotated) {
                            return yCond && (xCond || x >= this.minX - trackerRadius && x <= this.minX + trackerRadius)
                        } else {
                            return xCond && (yCond || y >= this.minY - trackerRadius && y <= this.minY + trackerRadius)
                        }
                    },
                    getMaxValue: function() {
                        if ("discrete" !== this.series.valueAxisType) {
                            return this.minValue > this.value ? this.minValue : this.value
                        }
                        return this.value
                    },
                    getMinValue: function() {
                        if ("discrete" !== this.series.valueAxisType) {
                            return this.minValue < this.value ? this.minValue : this.value
                        }
                        return this.minValue
                    }
                });
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        71678:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/points/stock_point.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _extend2 = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _candlestick_point = (obj = __webpack_require__( /*! ./candlestick_point */ 69297), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const _extend = _extend2.extend;
                const _isNumeric = _type.isNumeric;
                var _default = _extend({}, _candlestick_point.default, {
                    _getPoints: function() {
                        const createPoint = this._options.rotated ? function(x, y) {
                            return [y, x]
                        } : function(x, y) {
                            return [x, y]
                        };
                        const openYExist = _isNumeric(this.openY);
                        const closeYExist = _isNumeric(this.closeY);
                        const x = this.x;
                        const width = this.width;
                        let points = [].concat(createPoint(x, this.highY));
                        openYExist && (points = points.concat(createPoint(x, this.openY)));
                        openYExist && (points = points.concat(createPoint(x - width / 2, this.openY)));
                        openYExist && (points = points.concat(createPoint(x, this.openY)));
                        closeYExist && (points = points.concat(createPoint(x, this.closeY)));
                        closeYExist && (points = points.concat(createPoint(x + width / 2, this.closeY)));
                        closeYExist && (points = points.concat(createPoint(x, this.closeY)));
                        points = points.concat(createPoint(x, this.lowY));
                        return points
                    },
                    _drawMarkerInGroup: function(group, attributes, renderer) {
                        this.graphic = renderer.path(this._getPoints(), "line").attr({
                            "stroke-linecap": "square"
                        }).attr(attributes).data({
                            "chart-data-point": this
                        }).sharp().append(group)
                    },
                    _getMinTrackerWidth: function() {
                        const width = 2 + this._styles.normal["stroke-width"];
                        return width + width % 2
                    }
                });
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        24894:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/points/symbol_point.js ***!
              \*******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _extend2 = __webpack_require__( /*! ../../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../../core/utils/iterator */ 95479);
                var _common = __webpack_require__( /*! ../../../core/utils/common */ 20576);
                var _window = __webpack_require__( /*! ../../../core/utils/window */ 58201);
                var _label = __webpack_require__( /*! ./label */ 28318);
                var _type = __webpack_require__( /*! ../../../core/utils/type */ 35922);
                var _utils = __webpack_require__( /*! ../../core/utils */ 19157);
                const window = (0, _window.getWindow)();
                const _extend = _extend2.extend;
                const _math = Math;
                const _round = _math.round;
                const _floor = _math.floor;
                const _ceil = _math.ceil;
                var _default = {
                    deleteLabel: function() {
                        this._label.dispose();
                        this._label = null
                    },
                    _hasGraphic: function() {
                        return this.graphic
                    },
                    clearVisibility: function() {
                        const graphic = this.graphic;
                        if (graphic && graphic.attr("visibility")) {
                            graphic.attr({
                                visibility: null
                            })
                        }
                    },
                    isVisible: function() {
                        return this.inVisibleArea && this.series.isVisible()
                    },
                    setInvisibility: function() {
                        const graphic = this.graphic;
                        if (graphic && "hidden" !== graphic.attr("visibility")) {
                            graphic.attr({
                                visibility: "hidden"
                            })
                        }
                        this._errorBar && this._errorBar.attr({
                            visibility: "hidden"
                        });
                        this._label.draw(false)
                    },
                    clearMarker: function() {
                        const graphic = this.graphic;
                        graphic && graphic.attr(this._emptySettings)
                    },
                    _createLabel: function() {
                        this._label = new _label.Label({
                            renderer: this.series._renderer,
                            labelsGroup: this.series._labelsGroup,
                            point: this
                        })
                    },
                    _calculateVisibility: function(x, y) {
                        const {
                            minX: minX,
                            maxX: maxX,
                            minY: minY,
                            maxY: maxY
                        } = this._getVisibleArea();
                        this.inVisibleArea = minX <= x && maxX >= x && minY <= y && maxY >= y
                    },
                    _updateLabelData: function() {
                        this._label.setData(this._getLabelFormatObject())
                    },
                    _updateLabelOptions: function() {
                        !this._label && this._createLabel();
                        this._label.setOptions(this._options.label)
                    },
                    _checkImage: function(image) {
                        return (0, _type.isDefined)(image) && ("string" === typeof image || (0, _type.isDefined)(image.url))
                    },
                    _fillStyle: function() {
                        this._styles = this._options.styles
                    },
                    _checkSymbol: function(oldOptions, newOptions) {
                        const oldSymbol = oldOptions.symbol;
                        const newSymbol = newOptions.symbol;
                        const symbolChanged = "circle" === oldSymbol && "circle" !== newSymbol || "circle" !== oldSymbol && "circle" === newSymbol;
                        const imageChanged = this._checkImage(oldOptions.image) !== this._checkImage(newOptions.image);
                        return !!(symbolChanged || imageChanged)
                    },
                    _populatePointShape: function(symbol, radius) {
                        switch (symbol) {
                            case "square":
                                return function(radius) {
                                    return [-radius, -radius, radius, -radius, radius, radius, -radius, radius, -radius, -radius]
                                }(radius);
                            case "polygon":
                                return function(radius) {
                                    const r = _ceil(radius);
                                    return [-r, 0, 0, -r, r, 0, 0, r, -r, 0]
                                }(radius);
                            case "triangle":
                            case "triangleDown":
                                return function(radius) {
                                    return [-radius, -radius, radius, -radius, 0, radius, -radius, -radius]
                                }(radius);
                            case "triangleUp":
                                return function(radius) {
                                    return [-radius, radius, radius, radius, 0, -radius, -radius, radius]
                                }(radius);
                            case "cross":
                                return function(radius) {
                                    const r = _ceil(radius);
                                    const floorHalfRadius = _floor(r / 2);
                                    const ceilHalfRadius = _ceil(r / 2);
                                    return [-r, -floorHalfRadius, -floorHalfRadius, -r, 0, -ceilHalfRadius, floorHalfRadius, -r, r, -floorHalfRadius, ceilHalfRadius, 0, r, floorHalfRadius, floorHalfRadius, r, 0, ceilHalfRadius, -floorHalfRadius, r, -r, floorHalfRadius, -ceilHalfRadius, 0]
                                }(radius)
                        }
                    },
                    hasCoords: function() {
                        return null !== this.x && null !== this.y
                    },
                    correctValue: function(correction) {
                        const that = this;
                        const axis = that.series.getValueAxis();
                        if (that.hasValue()) {
                            that.value = that.properValue = axis.validateUnit(that.initialValue.valueOf() + correction.valueOf());
                            that.minValue = axis.validateUnit(correction)
                        }
                    },
                    resetCorrection: function() {
                        this.value = this.properValue = this.initialValue;
                        this.minValue = "canvas_position_default"
                    },
                    resetValue: function() {
                        const that = this;
                        if (that.hasValue()) {
                            that.value = that.properValue = that.initialValue = 0;
                            that.minValue = 0;
                            that._label.setDataField("value", that.value)
                        }
                    },
                    _getTranslates: function(animationEnabled) {
                        let translateX = this.x;
                        let translateY = this.y;
                        if (animationEnabled) {
                            if (this._options.rotated) {
                                translateX = this.defaultX
                            } else {
                                translateY = this.defaultY
                            }
                        }
                        return {
                            x: translateX,
                            y: translateY
                        }
                    },
                    _createImageMarker: function(renderer, settings, options) {
                        const width = options.width || 20;
                        const height = options.height || 20;
                        return renderer.image(-_round(.5 * width), -_round(.5 * height), width, height, options.url ? options.url.toString() : options.toString(), "center").attr({
                            translateX: settings.translateX,
                            translateY: settings.translateY,
                            visibility: settings.visibility
                        })
                    },
                    _createSymbolMarker: function(renderer, pointSettings) {
                        let marker;
                        const symbol = this._options.symbol;
                        if ("circle" === symbol) {
                            delete pointSettings.points;
                            marker = renderer.circle().attr(pointSettings)
                        } else if ("square" === symbol || "polygon" === symbol || "triangle" === symbol || "triangleDown" === symbol || "triangleUp" === symbol || "cross" === symbol) {
                            marker = renderer.path([], "area").attr(pointSettings).sharp()
                        }
                        return marker
                    },
                    _createMarker: function(renderer, group, image, settings) {
                        const that = this;
                        const marker = that._checkImage(image) ? that._createImageMarker(renderer, settings, image) : that._createSymbolMarker(renderer, settings);
                        if (marker) {
                            marker.data({
                                "chart-data-point": that
                            }).append(group)
                        }
                        return marker
                    },
                    _getSymbolBBox: function(x, y, r) {
                        return {
                            x: x - r,
                            y: y - r,
                            width: 2 * r,
                            height: 2 * r
                        }
                    },
                    _getImageBBox: function(x, y) {
                        const image = this._options.image;
                        const width = image.width || 20;
                        const height = image.height || 20;
                        return {
                            x: x - _round(width / 2),
                            y: y - _round(height / 2),
                            width: width,
                            height: height
                        }
                    },
                    _getGraphicBBox: function() {
                        const that = this;
                        const options = that._options;
                        const x = that.x;
                        const y = that.y;
                        let bBox;
                        if (options.visible) {
                            bBox = that._checkImage(options.image) ? that._getImageBBox(x, y) : that._getSymbolBBox(x, y, options.styles.normal.r)
                        } else {
                            bBox = {
                                x: x,
                                y: y,
                                width: 0,
                                height: 0
                            }
                        }
                        return bBox
                    },
                    hideInsideLabel: _common.noop,
                    _getShiftLabelCoords: function(label) {
                        const coord = this._addLabelAlignmentAndOffset(label, this._getLabelCoords(label));
                        return this._checkLabelPosition(label, coord)
                    },
                    _drawLabel: function() {
                        const customVisibility = this._getCustomLabelVisibility();
                        const label = this._label;
                        const isVisible = this._showForZeroValues() && this.hasValue() && false !== customVisibility && (this.series.getLabelVisibility() || customVisibility);
                        label.draw(!!isVisible)
                    },
                    correctLabelPosition: function(label) {
                        const that = this;
                        const coord = that._getShiftLabelCoords(label);
                        if (!that.hideInsideLabel(label, coord)) {
                            label.setFigureToDrawConnector(that._getLabelConnector(label.pointPosition));
                            label.shift(_round(coord.x), _round(coord.y))
                        }
                    },
                    _showForZeroValues: function() {
                        return true
                    },
                    _getLabelConnector: function(pointPosition) {
                        const bBox = this._getGraphicBBox(pointPosition);
                        const w2 = bBox.width / 2;
                        const h2 = bBox.height / 2;
                        return {
                            x: bBox.x + w2,
                            y: bBox.y + h2,
                            r: this._options.visible ? Math.max(w2, h2) : 0
                        }
                    },
                    _getPositionFromLocation: function() {
                        return {
                            x: this.x,
                            y: this.y
                        }
                    },
                    _isPointInVisibleArea: function(visibleArea, graphicBBox) {
                        return visibleArea.minX <= graphicBBox.x + graphicBBox.width && visibleArea.maxX >= graphicBBox.x && visibleArea.minY <= graphicBBox.y + graphicBBox.height && visibleArea.maxY >= graphicBBox.y
                    },
                    _checkLabelPosition: function(label, coord) {
                        const that = this;
                        const visibleArea = that._getVisibleArea();
                        const labelBBox = label.getBoundingRect();
                        const graphicBBox = that._getGraphicBBox(label.pointPosition);
                        const fullGraphicBBox = that._getGraphicBBox();
                        const isInside = "inside" === label.getLayoutOptions().position;
                        if (that._isPointInVisibleArea(visibleArea, fullGraphicBBox)) {
                            if (!that._options.rotated) {
                                if (visibleArea.minX > coord.x) {
                                    coord.x = visibleArea.minX
                                }
                                if (visibleArea.maxX < coord.x + labelBBox.width) {
                                    coord.x = visibleArea.maxX - labelBBox.width
                                }
                                if (visibleArea.minY > coord.y) {
                                    coord.y = isInside ? visibleArea.minY : graphicBBox.y + graphicBBox.height + 10
                                }
                                if (visibleArea.maxY < coord.y + labelBBox.height) {
                                    coord.y = isInside ? visibleArea.maxY - labelBBox.height : graphicBBox.y - labelBBox.height - 10
                                }
                            } else {
                                if (visibleArea.minX > coord.x) {
                                    coord.x = isInside ? visibleArea.minX : graphicBBox.x + graphicBBox.width + 10
                                }
                                if (visibleArea.maxX < coord.x + labelBBox.width) {
                                    coord.x = isInside ? visibleArea.maxX - labelBBox.width : graphicBBox.x - 10 - labelBBox.width
                                }
                                if (visibleArea.minY > coord.y) {
                                    coord.y = visibleArea.minY
                                }
                                if (visibleArea.maxY < coord.y + labelBBox.height) {
                                    coord.y = visibleArea.maxY - labelBBox.height
                                }
                            }
                        }
                        return coord
                    },
                    _addLabelAlignmentAndOffset: function(label, coord) {
                        const labelBBox = label.getBoundingRect();
                        const labelOptions = label.getLayoutOptions();
                        if (!this._options.rotated) {
                            if ("left" === labelOptions.alignment) {
                                coord.x += labelBBox.width / 2
                            } else if ("right" === labelOptions.alignment) {
                                coord.x -= labelBBox.width / 2
                            }
                        }
                        coord.x += labelOptions.horizontalOffset;
                        coord.y += labelOptions.verticalOffset;
                        return coord
                    },
                    _getLabelCoords: function(label) {
                        return this._getLabelCoordOfPosition(label, this._getLabelPosition(label.pointPosition))
                    },
                    _getLabelCoordOfPosition: function(label, position) {
                        const labelBBox = label.getBoundingRect();
                        const graphicBBox = this._getGraphicBBox(label.pointPosition);
                        const centerY = graphicBBox.height / 2 - labelBBox.height / 2;
                        const centerX = graphicBBox.width / 2 - labelBBox.width / 2;
                        let x = graphicBBox.x;
                        let y = graphicBBox.y;
                        switch (position) {
                            case "left":
                                x -= labelBBox.width + 10;
                                y += centerY;
                                break;
                            case "right":
                                x += graphicBBox.width + 10;
                                y += centerY;
                                break;
                            case "top":
                                x += centerX;
                                y -= labelBBox.height + 10;
                                break;
                            case "bottom":
                                x += centerX;
                                y += graphicBBox.height + 10;
                                break;
                            case "inside":
                                x += centerX;
                                y += centerY
                        }
                        return {
                            x: x,
                            y: y
                        }
                    },
                    _drawMarker: function(renderer, group, animationEnabled) {
                        const options = this._options;
                        const translates = this._getTranslates(animationEnabled);
                        const style = this._getStyle();
                        this.graphic = this._createMarker(renderer, group, options.image, _extend({
                            translateX: translates.x,
                            translateY: translates.y,
                            points: this._populatePointShape(options.symbol, style.r)
                        }, style))
                    },
                    _getErrorBarSettings: function() {
                        return {
                            visibility: "visible"
                        }
                    },
                    _getErrorBarBaseEdgeLength() {
                        return 2 * this.getPointRadius()
                    },
                    _drawErrorBar: function(renderer, group) {
                        if (!this._options.errorBars) {
                            return
                        }
                        const that = this;
                        const options = that._options;
                        const errorBarOptions = options.errorBars;
                        const points = [];
                        let settings;
                        const pos = that._errorBarPos;
                        let high = that._highErrorCoord;
                        let low = that._lowErrorCoord;
                        const displayMode = (0, _utils.normalizeEnum)(errorBarOptions.displayMode);
                        const isHighDisplayMode = "high" === displayMode;
                        const isLowDisplayMode = "low" === displayMode;
                        const highErrorOnly = (isHighDisplayMode || !(0, _type.isDefined)(low)) && (0, _type.isDefined)(high) && !isLowDisplayMode;
                        const lowErrorOnly = (isLowDisplayMode || !(0, _type.isDefined)(high)) && (0, _type.isDefined)(low) && !isHighDisplayMode;
                        let edgeLength = errorBarOptions.edgeLength;
                        if (edgeLength <= 1 && edgeLength > 0) {
                            edgeLength = this._getErrorBarBaseEdgeLength() * errorBarOptions.edgeLength
                        }
                        edgeLength = _floor(parseInt(edgeLength) / 2);
                        highErrorOnly && (low = that._baseErrorBarPos);
                        lowErrorOnly && (high = that._baseErrorBarPos);
                        if ("none" !== displayMode && (0, _type.isDefined)(high) && (0, _type.isDefined)(low) && (0, _type.isDefined)(pos)) {
                            !lowErrorOnly && points.push([pos - edgeLength, high, pos + edgeLength, high]);
                            points.push([pos, high, pos, low]);
                            !highErrorOnly && points.push([pos + edgeLength, low, pos - edgeLength, low]);
                            options.rotated && (0, _iterator.each)(points, (function(_, p) {
                                p.reverse()
                            }));
                            settings = that._getErrorBarSettings(errorBarOptions);
                            if (!that._errorBar) {
                                that._errorBar = renderer.path(points, "line").attr(settings).append(group)
                            } else {
                                settings.points = points;
                                that._errorBar.attr(settings)
                            }
                        } else {
                            that._errorBar && that._errorBar.attr({
                                visibility: "hidden"
                            })
                        }
                    },
                    getTooltipParams: function() {
                        const graphic = this.graphic;
                        return {
                            x: this.x,
                            y: this.y,
                            offset: graphic ? graphic.getBBox().height / 2 : 0
                        }
                    },
                    setPercentValue: function(absTotal, total, leftHoleTotal, rightHoleTotal) {
                        const that = this;
                        const valuePercent = that.value / absTotal || 0;
                        const minValuePercent = that.minValue / absTotal || 0;
                        const percent = valuePercent - minValuePercent;
                        that._label.setDataField("percent", percent);
                        that._label.setDataField("total", total);
                        if (that.series.isFullStackedSeries() && that.hasValue()) {
                            if (that.leftHole) {
                                that.leftHole /= absTotal - leftHoleTotal;
                                that.minLeftHole /= absTotal - leftHoleTotal
                            }
                            if (that.rightHole) {
                                that.rightHole /= absTotal - rightHoleTotal;
                                that.minRightHole /= absTotal - rightHoleTotal
                            }
                            that.value = that.properValue = valuePercent;
                            that.minValue = !minValuePercent ? that.minValue : minValuePercent
                        }
                    },
                    _storeTrackerR: function() {
                        let navigator = window.navigator;
                        const r = this._options.styles.normal.r;
                        const minTrackerSize = (0, _window.hasProperty)("ontouchstart") || navigator.msPointerEnabled && navigator.msMaxTouchPoints || navigator.pointerEnabled && navigator.maxTouchPoints ? 20 : 6;
                        this._options.trackerR = r < minTrackerSize ? minTrackerSize : r;
                        return this._options.trackerR
                    },
                    _translateErrorBars: function() {
                        const options = this._options;
                        const rotated = options.rotated;
                        const errorBars = options.errorBars;
                        const translator = this._getValTranslator();
                        if (!errorBars) {
                            return
                        }(0, _type.isDefined)(this.lowError) && (this._lowErrorCoord = translator.translate(this.lowError));
                        (0, _type.isDefined)(this.highError) && (this._highErrorCoord = translator.translate(this.highError));
                        this._errorBarPos = _floor(rotated ? this.vy : this.vx);
                        this._baseErrorBarPos = "stdDeviation" === errorBars.type ? this._lowErrorCoord + (this._highErrorCoord - this._lowErrorCoord) / 2 : rotated ? this.vx : this.vy
                    },
                    _translate: function() {
                        const that = this;
                        const valTranslator = that._getValTranslator();
                        const argTranslator = that._getArgTranslator();
                        if (that._options.rotated) {
                            that.vx = that.x = valTranslator.translate(that.value, void 0, true);
                            that.vy = that.y = argTranslator.translate(that.argument, void 0, true);
                            that.minX = valTranslator.translate(that.minValue, void 0, true);
                            that.defaultX = valTranslator.translate("canvas_position_default")
                        } else {
                            that.vy = that.y = valTranslator.translate(that.value, void 0, true);
                            that.vx = that.x = argTranslator.translate(that.argument, void 0, true);
                            that.minY = valTranslator.translate(that.minValue, void 0, true);
                            that.defaultY = valTranslator.translate("canvas_position_default")
                        }
                        that._translateErrorBars();
                        that._calculateVisibility(that.x, that.y)
                    },
                    _updateData: function(data) {
                        this.value = this.properValue = this.initialValue = this.originalValue = data.value;
                        this.minValue = this.initialMinValue = this.originalMinValue = (0, _type.isDefined)(data.minValue) ? data.minValue : "canvas_position_default"
                    },
                    _getImageSettings: function(image) {
                        return {
                            href: image.url || image.toString(),
                            width: image.width || 20,
                            height: image.height || 20
                        }
                    },
                    getCrosshairData: function() {
                        const r = this._options.rotated;
                        const value = this.properValue;
                        const argument = this.argument;
                        return {
                            x: this.vx,
                            y: this.vy,
                            xValue: r ? value : argument,
                            yValue: r ? argument : value,
                            axis: this.series.axis
                        }
                    },
                    getPointRadius: function() {
                        const style = this._getStyle();
                        const options = this._options;
                        const r = style.r;
                        let extraSpace;
                        const symbol = options.symbol;
                        const isSquare = "square" === symbol;
                        const isTriangle = "triangle" === symbol || "triangleDown" === symbol || "triangleUp" === symbol;
                        if (options.visible && !options.image && r) {
                            extraSpace = style["stroke-width"] / 2;
                            return (isSquare || isTriangle ? 1.4 * r : r) + extraSpace
                        }
                        return 0
                    },
                    _updateMarker: function(animationEnabled, style) {
                        const that = this;
                        const options = that._options;
                        let settings;
                        const image = options.image;
                        const visibility = !that.isVisible() ? {
                            visibility: "hidden"
                        } : {};
                        if (that._checkImage(image)) {
                            settings = _extend({}, {
                                visibility: style.visibility
                            }, visibility, that._getImageSettings(image))
                        } else {
                            settings = _extend({}, style, visibility, {
                                points: that._populatePointShape(options.symbol, style.r)
                            })
                        }
                        if (!animationEnabled) {
                            settings.translateX = that.x;
                            settings.translateY = that.y
                        }
                        that.graphic.attr(settings).sharp()
                    },
                    _getLabelFormatObject: function() {
                        return {
                            argument: this.initialArgument,
                            value: this.initialValue,
                            originalArgument: this.originalArgument,
                            originalValue: this.originalValue,
                            seriesName: this.series.name,
                            lowErrorValue: this.lowError,
                            highErrorValue: this.highError,
                            point: this
                        }
                    },
                    _getLabelPosition: function() {
                        const rotated = this._options.rotated;
                        if (this.initialValue > 0) {
                            return rotated ? "right" : "top"
                        } else {
                            return rotated ? "left" : "bottom"
                        }
                    },
                    _getFormatObject: function(tooltip) {
                        const labelFormatObject = this._label.getData();
                        return _extend({}, labelFormatObject, {
                            argumentText: tooltip.formatValue(this.initialArgument, "argument"),
                            valueText: tooltip.formatValue(this.initialValue)
                        }, (0, _type.isDefined)(labelFormatObject.percent) ? {
                            percentText: tooltip.formatValue(labelFormatObject.percent, "percent")
                        } : {}, (0, _type.isDefined)(labelFormatObject.total) ? {
                            totalText: tooltip.formatValue(labelFormatObject.total)
                        } : {})
                    },
                    getMarkerVisibility: function() {
                        return this._options.visible
                    },
                    coordsIn: function(x, y) {
                        const trackerRadius = this._storeTrackerR();
                        return x >= this.x - trackerRadius && x <= this.x + trackerRadius && y >= this.y - trackerRadius && y <= this.y + trackerRadius
                    },
                    getMinValue: function(noErrorBar) {
                        const errorBarOptions = this._options.errorBars;
                        if (errorBarOptions && !noErrorBar) {
                            const displayMode = errorBarOptions.displayMode;
                            const lowValue = "high" !== displayMode && (0, _type.isDefined)(this.lowError) ? this.lowError : this.value;
                            const highValue = "low" !== displayMode && (0, _type.isDefined)(this.highError) ? this.highError : this.value;
                            return lowValue < highValue ? lowValue : highValue
                        } else {
                            return this.value
                        }
                    },
                    getMaxValue: function(noErrorBar) {
                        const errorBarOptions = this._options.errorBars;
                        if (errorBarOptions && !noErrorBar) {
                            const displayMode = errorBarOptions.displayMode;
                            const lowValue = "high" !== displayMode && (0, _type.isDefined)(this.lowError) ? this.lowError : this.value;
                            const highValue = "low" !== displayMode && (0, _type.isDefined)(this.highError) ? this.highError : this.value;
                            return lowValue > highValue ? lowValue : highValue
                        } else {
                            return this.value
                        }
                    }
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        57402:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/range_series.js ***!
              \************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.chart = void 0;
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _scatter_series = __webpack_require__( /*! ./scatter_series */ 21667);
                var _bar_series = __webpack_require__( /*! ./bar_series */ 58821);
                var _area_series = __webpack_require__( /*! ./area_series */ 90048);
                const _extend = _extend2.extend;
                const barSeries = _bar_series.chart.bar;
                const areaSeries = _area_series.chart.area;
                const chart = {};
                exports.chart = chart;
                const baseRangeSeries = {
                    areErrorBarsVisible: _common.noop,
                    _createErrorBarGroup: _common.noop,
                    _checkData: function(data, skippedFields) {
                        const valueFields = this.getValueFields();
                        return _scatter_series.chart._checkData.call(this, data, skippedFields, {
                            minValue: valueFields[0],
                            value: valueFields[1]
                        }) && data.minValue === data.minValue
                    },
                    getValueRangeInitialValue: _scatter_series.chart.getValueRangeInitialValue,
                    _getPointDataSelector: function(data) {
                        const valueFields = this.getValueFields();
                        const val1Field = valueFields[0];
                        const val2Field = valueFields[1];
                        const tagField = this.getTagField();
                        const argumentField = this.getArgumentField();
                        return data => ({
                            tag: data[tagField],
                            minValue: this._processEmptyValue(data[val1Field]),
                            value: this._processEmptyValue(data[val2Field]),
                            argument: data[argumentField],
                            data: data
                        })
                    },
                    _defaultAggregator: "range",
                    _aggregators: {
                        range(_ref, series) {
                            let {
                                intervalStart: intervalStart,
                                intervalEnd: intervalEnd,
                                data: data
                            } = _ref;
                            if (!data.length) {
                                return
                            }
                            const valueFields = series.getValueFields();
                            const val1Field = valueFields[0];
                            const val2Field = valueFields[1];
                            const result = data.reduce((result, item) => {
                                const val1 = item[val1Field];
                                const val2 = item[val2Field];
                                if (!(0, _type.isDefined)(val1) || !(0, _type.isDefined)(val2)) {
                                    return result
                                }
                                result[val1Field] = Math.min(result[val1Field], Math.min(val1, val2));
                                result[val2Field] = Math.max(result[val2Field], Math.max(val1, val2));
                                return result
                            }, {
                                [val1Field]: 1 / 0,
                                [val2Field]: -1 / 0,
                                [series.getArgumentField()]: series._getIntervalCenter(intervalStart, intervalEnd)
                            });
                            if (!isFinite(result[val1Field]) || !isFinite(result[val2Field])) {
                                if (data.filter(i => null === i[val1Field] && null === i[val2Field]).length === data.length) {
                                    result[val1Field] = result[val2Field] = null
                                } else {
                                    return
                                }
                            }
                            return result
                        }
                    },
                    getValueFields: function() {
                        return [this._options.rangeValue1Field || "val1", this._options.rangeValue2Field || "val2"]
                    },
                    getSeriesPairCoord(coord, isArgument) {
                        let oppositeCoord = null;
                        const {
                            rotated: rotated
                        } = this._options;
                        const isOpposite = !isArgument && !rotated || isArgument && rotated;
                        const coordName = isOpposite ? "vy" : "vx";
                        const minCoordName = rotated ? "minX" : "minY";
                        const oppositeCoordName = isOpposite ? "vx" : "vy";
                        const points = this.getPoints();
                        for (let i = 0; i < points.length; i++) {
                            const p = points[i];
                            let tmpCoord;
                            if (isArgument) {
                                tmpCoord = p.getCenterCoord()[coordName[1]] === coord ? p[oppositeCoordName] : void 0
                            } else {
                                const coords = [Math.min(p[coordName], p[minCoordName]), Math.max(p[coordName], p[minCoordName])];
                                tmpCoord = coord >= coords[0] && coord <= coords[1] ? p[oppositeCoordName] : void 0
                            }
                            if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {
                                oppositeCoord = tmpCoord;
                                break
                            }
                        }
                        return oppositeCoord
                    }
                };
                chart.rangebar = _extend({}, barSeries, baseRangeSeries);
                chart.rangearea = _extend({}, areaSeries, {
                    _drawPoint: function(options) {
                        const point = options.point;
                        if (point.isInVisibleArea()) {
                            point.clearVisibility();
                            point.draw(this._renderer, options.groups);
                            this._drawnPoints.push(point);
                            if (!point.visibleTopMarker) {
                                point.hideMarker("top")
                            }
                            if (!point.visibleBottomMarker) {
                                point.hideMarker("bottom")
                            }
                        } else {
                            point.setInvisibility()
                        }
                    },
                    _prepareSegment: function(points, rotated) {
                        const processedPoints = this._processSinglePointsAreaSegment(points, rotated);
                        const processedMinPointsCoords = (0, _utils.map)(processedPoints, (function(pt) {
                            return pt.getCoords(true)
                        }));
                        return {
                            line: processedPoints,
                            bottomLine: processedMinPointsCoords,
                            area: (0, _utils.map)(processedPoints, (function(pt) {
                                return pt.getCoords()
                            })).concat(processedMinPointsCoords.slice().reverse()),
                            singlePointSegment: processedPoints !== points
                        }
                    },
                    _getDefaultSegment: function(segment) {
                        const defaultSegment = areaSeries._getDefaultSegment.call(this, segment);
                        defaultSegment.bottomLine = defaultSegment.line;
                        return defaultSegment
                    },
                    _removeElement: function(element) {
                        areaSeries._removeElement.call(this, element);
                        element.bottomLine && element.bottomLine.remove()
                    },
                    _drawElement: function(segment, group) {
                        const drawnElement = areaSeries._drawElement.call(this, segment, group);
                        drawnElement.bottomLine = this._bordersGroup && this._createBorderElement(segment.bottomLine, {
                            "stroke-width": this._styles.normal.border["stroke-width"]
                        }).append(this._bordersGroup);
                        return drawnElement
                    },
                    _applyStyle: function(style) {
                        const elementsGroup = this._elementsGroup;
                        const bordersGroup = this._bordersGroup;
                        elementsGroup && elementsGroup.smartAttr(style.elements);
                        bordersGroup && bordersGroup.attr(style.border);
                        (this._graphics || []).forEach((function(graphic) {
                            graphic.line && graphic.line.attr({
                                "stroke-width": style.border["stroke-width"]
                            });
                            graphic.bottomLine && graphic.bottomLine.attr({
                                "stroke-width": style.border["stroke-width"]
                            })
                        }))
                    },
                    _updateElement: function(element, segment, animate, complete) {
                        const bottomLineParams = {
                            points: segment.bottomLine
                        };
                        const bottomBorderElement = element.bottomLine;
                        areaSeries._updateElement.apply(this, arguments);
                        if (bottomBorderElement) {
                            animate ? bottomBorderElement.animate(bottomLineParams) : bottomBorderElement.attr(bottomLineParams)
                        }
                    }
                }, baseRangeSeries)
            },
        21667:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/scatter_series.js ***!
              \**************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.polar = exports.chart = void 0;
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _range_data_calculator = (obj = __webpack_require__( /*! ./helpers/range_data_calculator */ 63407), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                const math = Math;
                const _abs = math.abs;
                const _sqrt = math.sqrt;
                const _max = math.max;
                const VARIANCE = "variance";
                const STANDARD_DEVIATION = "stddeviation";
                const STANDARD_ERROR = "stderror";
                const PERCENT = "percent";
                const FIXED = "fixed";
                let chart = {};
                exports.chart = chart;
                let polar = {};
                exports.polar = polar;

                function sum(array) {
                    let result = 0;
                    (0, _iterator.each)(array, (function(_, value) {
                        result += value
                    }));
                    return result
                }

                function variance(array, expectedValue) {
                    return sum((0, _utils.map)(array, (function(value) {
                        return (value - expectedValue) * (value - expectedValue)
                    }))) / array.length
                }

                function getMinMaxAggregator(compare) {
                    return (_ref, series) => {
                        let {
                            intervalStart: intervalStart,
                            intervalEnd: intervalEnd,
                            data: data
                        } = _ref;
                        const valueField = series.getValueFields()[0];
                        let targetData = data[0];
                        targetData = data.reduce((result, item) => {
                            const value = item[valueField];
                            if (null === result[valueField]) {
                                result = item
                            }
                            if (null !== value && compare(value, result[valueField])) {
                                return item
                            }
                            return result
                        }, targetData);
                        return (0, _extend2.extend)({}, targetData, {
                            [series.getArgumentField()]: series._getIntervalCenter(intervalStart, intervalEnd)
                        })
                    }
                }
                const baseScatterMethods = {
                    _defaultDuration: 400,
                    _defaultTrackerWidth: 12,
                    _applyStyle: _common.noop,
                    _updateOptions: _common.noop,
                    _parseStyle: _common.noop,
                    _prepareSegment: _common.noop,
                    _drawSegment: _common.noop,
                    _appendInGroup: function() {
                        this._group.append(this._extGroups.seriesGroup)
                    },
                    _createLegendState: function(styleOptions, defaultColor) {
                        return {
                            fill: (0, _utils.extractColor)(styleOptions.color, true) || defaultColor,
                            hatching: styleOptions.hatching ? (0, _extend2.extend)({}, styleOptions.hatching, {
                                direction: "right"
                            }) : void 0
                        }
                    },
                    _getColorId: _common.noop,
                    _applyElementsClipRect: function(settings) {
                        settings["clip-path"] = this._paneClipRectID
                    },
                    _applyMarkerClipRect: function(settings) {
                        settings["clip-path"] = this._forceClipping ? this._paneClipRectID : null
                    },
                    _createGroup: function(groupName, parent, target, settings) {
                        const group = parent[groupName] = parent[groupName] || this._renderer.g();
                        target && group.append(target);
                        settings && group.attr(settings)
                    },
                    _applyClearingSettings: function(settings) {
                        settings.opacity = null;
                        settings.scale = null;
                        if (this._options.rotated) {
                            settings.translateX = null
                        } else {
                            settings.translateY = null
                        }
                    },
                    _createGroups: function() {
                        this._createGroup("_markersGroup", this, this._group);
                        this._createGroup("_labelsGroup", this)
                    },
                    _setMarkerGroupSettings: function() {
                        const settings = this._createPointStyles(this._getMarkerGroupOptions()).normal;
                        settings.class = "dxc-markers";
                        settings.opacity = 1;
                        this._applyMarkerClipRect(settings);
                        this._markersGroup.attr(settings)
                    },
                    getVisibleArea: function() {
                        return this._visibleArea
                    },
                    areErrorBarsVisible: function() {
                        const errorBarOptions = this._options.valueErrorBar;
                        return errorBarOptions && this._errorBarsEnabled() && "none" !== errorBarOptions.displayMode && ((type = (0, _utils.normalizeEnum)(errorBarOptions.type), [FIXED, PERCENT, VARIANCE, STANDARD_DEVIATION, STANDARD_ERROR].includes(type)) || (0, _type.isDefined)(errorBarOptions.lowValueField) || (0, _type.isDefined)(errorBarOptions.highValueField));
                        var type
                    },
                    groupPointsByCoords(rotated) {
                        const cat = [];
                        (0, _iterator.each)(this.getVisiblePoints(), (function(_, p) {
                            const pointCoord = parseInt(rotated ? p.vy : p.vx);
                            if (!cat[pointCoord]) {
                                cat[pointCoord] = p
                            } else {
                                Array.isArray(cat[pointCoord]) ? cat[pointCoord].push(p) : cat[pointCoord] = [cat[pointCoord], p]
                            }
                        }));
                        return cat
                    },
                    _createErrorBarGroup: function(animationEnabled) {
                        const that = this;
                        const errorBarOptions = that._options.valueErrorBar;
                        let settings;
                        if (that.areErrorBarsVisible()) {
                            settings = {
                                class: "dxc-error-bars",
                                stroke: errorBarOptions.color,
                                "stroke-width": errorBarOptions.lineWidth,
                                opacity: animationEnabled ? .001 : errorBarOptions.opacity || 1,
                                "stroke-linecap": "square",
                                sharp: true,
                                "clip-path": that._forceClipping ? that._paneClipRectID : that._widePaneClipRectID
                            };
                            that._createGroup("_errorBarGroup", that, that._group, settings)
                        }
                    },
                    _setGroupsSettings: function(animationEnabled) {
                        this._setMarkerGroupSettings();
                        this._setLabelGroupSettings(animationEnabled);
                        this._createErrorBarGroup(animationEnabled)
                    },
                    _getCreatingPointOptions: function() {
                        const that = this;
                        let defaultPointOptions;
                        let creatingPointOptions = that._predefinedPointOptions;
                        let normalStyle;
                        if (!creatingPointOptions) {
                            defaultPointOptions = that._getPointOptions();
                            that._predefinedPointOptions = creatingPointOptions = (0, _extend2.extend)(true, {
                                styles: {}
                            }, defaultPointOptions);
                            normalStyle = defaultPointOptions.styles && defaultPointOptions.styles.normal || {};
                            creatingPointOptions.styles = creatingPointOptions.styles || {};
                            creatingPointOptions.styles.normal = {
                                "stroke-width": normalStyle["stroke-width"],
                                r: normalStyle.r,
                                opacity: normalStyle.opacity
                            }
                        }
                        return creatingPointOptions
                    },
                    _getPointOptions: function() {
                        return this._parsePointOptions(this._preparePointOptions(), this._options.label)
                    },
                    _getOptionsForPoint: function() {
                        return this._options.point
                    },
                    _parsePointStyle: function(style, defaultColor, defaultBorderColor, defaultSize) {
                        const border = style.border || {};
                        const sizeValue = void 0 !== style.size ? style.size : defaultSize;
                        return {
                            fill: (0, _utils.extractColor)(style.color, true) || defaultColor,
                            stroke: border.color || defaultBorderColor,
                            "stroke-width": border.visible ? border.width : 0,
                            r: sizeValue / 2 + (border.visible && 0 !== sizeValue ? ~~(border.width / 2) || 0 : 0)
                        }
                    },
                    _createPointStyles: function(pointOptions) {
                        const mainPointColor = (0, _utils.extractColor)(pointOptions.color, true) || this._options.mainSeriesColor;
                        const containerColor = this._options.containerBackgroundColor;
                        const normalStyle = this._parsePointStyle(pointOptions, mainPointColor, mainPointColor);
                        normalStyle.visibility = pointOptions.visible ? "visible" : "hidden";
                        return {
                            labelColor: mainPointColor,
                            normal: normalStyle,
                            hover: this._parsePointStyle(pointOptions.hoverStyle, containerColor, mainPointColor, pointOptions.size),
                            selection: this._parsePointStyle(pointOptions.selectionStyle, containerColor, mainPointColor, pointOptions.size)
                        }
                    },
                    _checkData: function(data, skippedFields, fieldsToCheck) {
                        fieldsToCheck = fieldsToCheck || {
                            value: this.getValueFields()[0]
                        };
                        fieldsToCheck.argument = this.getArgumentField();
                        return function(data, fieldsToCheck, skippedFields) {
                            let allFieldsIsValid = true;
                            for (const field in fieldsToCheck) {
                                const isArgument = "argument" === field;
                                if (isArgument || "size" === field ? !(0, _type.isDefined)(data[field]) : void 0 === data[field]) {
                                    const selector = fieldsToCheck[field];
                                    if (!isArgument) {
                                        skippedFields[selector] = (skippedFields[selector] || 0) + 1
                                    }
                                    allFieldsIsValid = false
                                }
                            }
                            return allFieldsIsValid
                        }(data, fieldsToCheck, skippedFields || {}) && data.value === data.value
                    },
                    getArgumentRangeInitialValue() {
                        const points = this.getPoints();
                        if (this.useAggregation() && points.length) {
                            var _points$0$aggregation, _points$aggregationIn;
                            return {
                                min: null === (_points$0$aggregation = points[0].aggregationInfo) || void 0 === _points$0$aggregation ? void 0 : _points$0$aggregation.intervalStart,
                                max: null === (_points$aggregationIn = points[points.length - 1].aggregationInfo) || void 0 === _points$aggregationIn ? void 0 : _points$aggregationIn.intervalEnd
                            }
                        }
                        return
                    },
                    getValueRangeInitialValue: function() {
                        return
                    },
                    _getRangeData: function() {
                        return _range_data_calculator.default.getRangeData(this)
                    },
                    _getPointDataSelector: function() {
                        const valueField = this.getValueFields()[0];
                        const argumentField = this.getArgumentField();
                        const tagField = this.getTagField();
                        const areErrorBarsVisible = this.areErrorBarsVisible();
                        let lowValueField;
                        let highValueField;
                        if (areErrorBarsVisible) {
                            const errorBarOptions = this._options.valueErrorBar;
                            lowValueField = errorBarOptions.lowValueField || "lowError";
                            highValueField = errorBarOptions.highValueField || "highError"
                        }
                        return data => {
                            const pointData = {
                                value: this._processEmptyValue(data[valueField]),
                                argument: data[argumentField],
                                tag: data[tagField],
                                data: data
                            };
                            if (areErrorBarsVisible) {
                                pointData.lowError = data[lowValueField];
                                pointData.highError = data[highValueField]
                            }
                            return pointData
                        }
                    },
                    _errorBarsEnabled: function() {
                        return "discrete" !== this.valueAxisType && "logarithmic" !== this.valueAxisType && "datetime" !== this.valueType
                    },
                    _drawPoint: function(options) {
                        const point = options.point;
                        if (point.isInVisibleArea()) {
                            point.clearVisibility();
                            point.draw(this._renderer, options.groups, options.hasAnimation, options.firstDrawing);
                            this._drawnPoints.push(point)
                        } else {
                            point.setInvisibility()
                        }
                    },
                    _animateComplete: function() {
                        const animationSettings = {
                            duration: this._defaultDuration
                        };
                        this._labelsGroup && this._labelsGroup.animate({
                            opacity: 1
                        }, animationSettings);
                        this._errorBarGroup && this._errorBarGroup.animate({
                            opacity: this._options.valueErrorBar.opacity || 1
                        }, animationSettings)
                    },
                    _animate: function() {
                        const that = this;
                        const lastPointIndex = that._drawnPoints.length - 1;
                        (0, _iterator.each)(that._drawnPoints || [], (function(i, p) {
                            p.animate(i === lastPointIndex ? function() {
                                that._animateComplete()
                            } : void 0, {
                                translateX: p.x,
                                translateY: p.y
                            })
                        }))
                    },
                    _getIntervalCenter(intervalStart, intervalEnd) {
                        const argAxis = this.getArgumentAxis();
                        const axisOptions = argAxis.getOptions();
                        if (argAxis.aggregatedPointBetweenTicks()) {
                            return intervalStart
                        }
                        return "discrete" !== axisOptions.type ? argAxis.getVisualRangeCenter({
                            minVisible: intervalStart,
                            maxVisible: intervalEnd
                        }, true) : intervalStart
                    },
                    _defaultAggregator: "avg",
                    _aggregators: {
                        avg(_ref2, series) {
                            let {
                                data: data,
                                intervalStart: intervalStart,
                                intervalEnd: intervalEnd
                            } = _ref2;
                            if (!data.length) {
                                return
                            }
                            const valueField = series.getValueFields()[0];
                            const aggregationResult = data.reduce((result, item) => {
                                const value = item[valueField];
                                if ((0, _type.isDefined)(value)) {
                                    result[0] += value;
                                    result[1]++
                                } else if (null === value) {
                                    result[2]++
                                }
                                return result
                            }, [0, 0, 0]);
                            return function(result, data, series) {
                                const errorBarsOptions = series.getOptions().valueErrorBar;
                                const valueField = series.getValueFields()[0];
                                const lowValueField = errorBarsOptions.lowValueField || "lowError";
                                const highValueField = errorBarsOptions.highValueField || "highError";
                                if (series.areErrorBarsVisible() && void 0 === errorBarsOptions.type) {
                                    const fusionData = data.reduce((function(result, item) {
                                        if ((0, _type.isDefined)(item[lowValueField])) {
                                            result[0] += item[valueField] - item[lowValueField];
                                            result[1]++
                                        }
                                        if ((0, _type.isDefined)(item[highValueField])) {
                                            result[2] += item[highValueField] - item[valueField];
                                            result[3]++
                                        }
                                        return result
                                    }), [0, 0, 0, 0]);
                                    if (fusionData[1]) {
                                        result[lowValueField] = result[valueField] - fusionData[0] / fusionData[1]
                                    }
                                    if (fusionData[2]) {
                                        result[highValueField] = result[valueField] + fusionData[2] / fusionData[3]
                                    }
                                }
                                return result
                            }({
                                [valueField]: aggregationResult[2] === data.length ? null : aggregationResult[0] / aggregationResult[1],
                                [series.getArgumentField()]: series._getIntervalCenter(intervalStart, intervalEnd)
                            }, data, series)
                        },
                        sum(_ref3, series) {
                            let {
                                intervalStart: intervalStart,
                                intervalEnd: intervalEnd,
                                data: data
                            } = _ref3;
                            if (!data.length) {
                                return
                            }
                            const valueField = series.getValueFields()[0];
                            const aggregationResult = data.reduce((result, item) => {
                                const value = item[valueField];
                                if (void 0 !== value) {
                                    result[0] += value
                                }
                                if (null === value) {
                                    result[1]++
                                } else if (void 0 === value) {
                                    result[2]++
                                }
                                return result
                            }, [0, 0, 0]);
                            let value = aggregationResult[0];
                            if (aggregationResult[1] === data.length) {
                                value = null
                            }
                            if (aggregationResult[2] === data.length) {
                                return
                            }
                            return function(result, data, series) {
                                const errorBarsOptions = series.getOptions().valueErrorBar;
                                const lowValueField = errorBarsOptions.lowValueField || "lowError";
                                const highValueField = errorBarsOptions.highValueField || "highError";
                                if (series.areErrorBarsVisible() && void 0 === errorBarsOptions.type) {
                                    result[lowValueField] = 0;
                                    result[highValueField] = 0;
                                    result = data.reduce((function(result, item) {
                                        result[lowValueField] += item[lowValueField];
                                        result[highValueField] += item[highValueField];
                                        return result
                                    }), result)
                                }
                                return result
                            }({
                                [valueField]: value,
                                [series.getArgumentField()]: series._getIntervalCenter(intervalStart, intervalEnd)
                            }, data, series)
                        },
                        count(_ref4, series) {
                            let {
                                data: data,
                                intervalStart: intervalStart,
                                intervalEnd: intervalEnd
                            } = _ref4;
                            const valueField = series.getValueFields()[0];
                            return {
                                [series.getArgumentField()]: series._getIntervalCenter(intervalStart, intervalEnd),
                                [valueField]: data.filter(i => void 0 !== i[valueField]).length
                            }
                        },
                        min: getMinMaxAggregator((a, b) => a < b),
                        max: getMinMaxAggregator((a, b) => a > b)
                    },
                    _endUpdateData: function() {
                        delete this._predefinedPointOptions
                    },
                    getArgumentField: function() {
                        return this._options.argumentField || "arg"
                    },
                    getValueFields: function() {
                        const options = this._options;
                        const errorBarsOptions = options.valueErrorBar;
                        const valueFields = [options.valueField || "val"];
                        let lowValueField;
                        let highValueField;
                        if (errorBarsOptions) {
                            lowValueField = errorBarsOptions.lowValueField;
                            highValueField = errorBarsOptions.highValueField;
                            (0, _type.isString)(lowValueField) && valueFields.push(lowValueField);
                            (0, _type.isString)(highValueField) && valueFields.push(highValueField)
                        }
                        return valueFields
                    },
                    _calculateErrorBars: function(data) {
                        if (!this.areErrorBarsVisible()) {
                            return
                        }
                        const options = this._options;
                        const errorBarsOptions = options.valueErrorBar;
                        const errorBarType = (0, _utils.normalizeEnum)(errorBarsOptions.type);
                        let floatErrorValue = parseFloat(errorBarsOptions.value);
                        const valueField = this.getValueFields()[0];
                        let value;
                        const lowValueField = errorBarsOptions.lowValueField || "lowError";
                        const highValueField = errorBarsOptions.highValueField || "highError";
                        let valueArray;
                        let valueArrayLength;
                        let meanValue;
                        let processDataItem;
                        const addSubError = function(_i, item) {
                            value = item.value;
                            item.lowError = value - floatErrorValue;
                            item.highError = value + floatErrorValue
                        };
                        switch (errorBarType) {
                            case FIXED:
                                processDataItem = addSubError;
                                break;
                            case PERCENT:
                                processDataItem = function(_, item) {
                                    value = item.value;
                                    const error = value * floatErrorValue / 100;
                                    item.lowError = value - error;
                                    item.highError = value + error
                                };
                                break;
                            case "undefined":
                                processDataItem = function(_, item) {
                                    item.lowError = item.data[lowValueField];
                                    item.highError = item.data[highValueField]
                                };
                                break;
                            default:
                                valueArray = (0, _utils.map)(data, (function(item) {
                                    return (0, _type.isDefined)(item.data[valueField]) ? item.data[valueField] : null
                                }));
                                valueArrayLength = valueArray.length;
                                floatErrorValue = floatErrorValue || 1;
                                switch (errorBarType) {
                                    case VARIANCE:
                                        floatErrorValue = variance(valueArray, sum(valueArray) / valueArrayLength) * floatErrorValue;
                                        processDataItem = addSubError;
                                        break;
                                    case STANDARD_DEVIATION:
                                        meanValue = sum(valueArray) / valueArrayLength;
                                        floatErrorValue = _sqrt(variance(valueArray, meanValue)) * floatErrorValue;
                                        processDataItem = function(_, item) {
                                            item.lowError = meanValue - floatErrorValue;
                                            item.highError = meanValue + floatErrorValue
                                        };
                                        break;
                                    case STANDARD_ERROR:
                                        floatErrorValue = _sqrt(variance(valueArray, sum(valueArray) / valueArrayLength) / valueArrayLength) * floatErrorValue;
                                        processDataItem = addSubError
                                }
                        }
                        processDataItem && (0, _iterator.each)(data, processDataItem)
                    },
                    _patchMarginOptions: function(options) {
                        const pointOptions = this._getCreatingPointOptions();
                        const styles = pointOptions.styles;
                        const maxSize = [styles.normal, styles.hover, styles.selection].reduce((function(max, style) {
                            return _max(max, 2 * style.r + style["stroke-width"])
                        }), 0);
                        options.size = pointOptions.visible ? maxSize : 0;
                        options.sizePointNormalState = pointOptions.visible ? 2 * styles.normal.r + styles.normal["stroke-width"] : 2;
                        return options
                    },
                    usePointsToDefineAutoHiding: () => true
                };
                exports.chart = chart = (0, _extend2.extend)({}, baseScatterMethods, {
                    drawTrackers: function() {
                        const that = this;
                        let trackers;
                        let trackersGroup;
                        const segments = that._segments || [];
                        const rotated = that._options.rotated;
                        if (!that.isVisible()) {
                            return
                        }
                        if (segments.length) {
                            trackers = that._trackers = that._trackers || [];
                            trackersGroup = that._trackersGroup = (that._trackersGroup || that._renderer.g().attr({
                                fill: "gray",
                                opacity: .001,
                                stroke: "gray",
                                class: "dxc-trackers"
                            })).attr({
                                "clip-path": this._paneClipRectID || null
                            }).append(that._group);
                            (0, _iterator.each)(segments, (function(i, segment) {
                                if (!trackers[i]) {
                                    trackers[i] = that._drawTrackerElement(segment).data({
                                        "chart-data-series": that
                                    }).append(trackersGroup)
                                } else {
                                    that._updateTrackerElement(segment, trackers[i])
                                }
                            }))
                        }
                        that._trackersTranslator = that.groupPointsByCoords(rotated)
                    },
                    _checkAxisVisibleAreaCoord(isArgument, coord) {
                        const axis = isArgument ? this.getArgumentAxis() : this.getValueAxis();
                        const visibleArea = axis.getVisibleArea();
                        return (0, _type.isDefined)(coord) && visibleArea[0] <= coord && visibleArea[1] >= coord
                    },
                    checkSeriesViewportCoord(axis, coord) {
                        return this.getPoints().length && this.isVisible()
                    },
                    getSeriesPairCoord(coord, isArgument) {
                        let oppositeCoord = null;
                        const isOpposite = !isArgument && !this._options.rotated || isArgument && this._options.rotated;
                        const coordName = !isOpposite ? "vx" : "vy";
                        const oppositeCoordName = !isOpposite ? "vy" : "vx";
                        const points = this.getVisiblePoints();
                        for (let i = 0; i < points.length; i++) {
                            const p = points[i];
                            const tmpCoord = p[coordName] === coord ? p[oppositeCoordName] : void 0;
                            if (this._checkAxisVisibleAreaCoord(!isArgument, tmpCoord)) {
                                oppositeCoord = tmpCoord;
                                break
                            }
                        }
                        return oppositeCoord
                    },
                    _getNearestPoints: (point, nextPoint) => [point, nextPoint],
                    _getBezierPoints: () => [],
                    _getNearestPointsByCoord(coord, isArgument) {
                        const that = this;
                        const rotated = that.getOptions().rotated;
                        const isOpposite = !isArgument && !rotated || isArgument && rotated;
                        const coordName = isOpposite ? "vy" : "vx";
                        const allPoints = that.getPoints();
                        const bezierPoints = that._getBezierPoints();
                        const nearestPoints = [];
                        if (allPoints.length > 1) {
                            allPoints.forEach((point, i) => {
                                const nextPoint = allPoints[i + 1];
                                if (nextPoint && (point[coordName] <= coord && nextPoint[coordName] >= coord || point[coordName] >= coord && nextPoint[coordName] <= coord)) {
                                    nearestPoints.push(that._getNearestPoints(point, nextPoint, bezierPoints))
                                }
                            })
                        } else {
                            nearestPoints.push([allPoints[0], allPoints[0]])
                        }
                        return nearestPoints
                    },
                    getNeighborPoint: function(x, y) {
                        let pCoord = this._options.rotated ? y : x;
                        let nCoord = pCoord;
                        const cat = this._trackersTranslator;
                        let point = null;
                        let minDistance;
                        const oppositeCoord = this._options.rotated ? x : y;
                        const oppositeCoordName = this._options.rotated ? "vx" : "vy";
                        if (this.isVisible() && cat) {
                            point = cat[pCoord];
                            do {
                                point = cat[nCoord] || cat[pCoord];
                                pCoord--;
                                nCoord++
                            } while ((pCoord >= 0 || nCoord < cat.length) && !point);
                            if (Array.isArray(point)) {
                                minDistance = _abs(point[0][oppositeCoordName] - oppositeCoord);
                                (0, _iterator.each)(point, (function(i, p) {
                                    const distance = _abs(p[oppositeCoordName] - oppositeCoord);
                                    if (minDistance >= distance) {
                                        minDistance = distance;
                                        point = p
                                    }
                                }))
                            }
                        }
                        return point
                    },
                    _applyVisibleArea: function() {
                        const rotated = this._options.rotated;
                        const visibleX = (rotated ? this.getValueAxis() : this.getArgumentAxis()).getVisibleArea();
                        const visibleY = (rotated ? this.getArgumentAxis() : this.getValueAxis()).getVisibleArea();
                        this._visibleArea = {
                            minX: visibleX[0],
                            maxX: visibleX[1],
                            minY: visibleY[0],
                            maxY: visibleY[1]
                        }
                    },
                    getPointCenterByArg(arg) {
                        const point = this.getPointsByArg(arg)[0];
                        return point ? point.getCenterCoord() : void 0
                    }
                });
                exports.polar = polar = (0, _extend2.extend)({}, baseScatterMethods, {
                    drawTrackers: function() {
                        chart.drawTrackers.call(this);
                        const cat = this._trackersTranslator;
                        let index;
                        if (!this.isVisible()) {
                            return
                        }(0, _iterator.each)(cat, (function(i, category) {
                            if (category) {
                                index = i;
                                return false
                            }
                        }));
                        cat[index + 360] = cat[index]
                    },
                    getNeighborPoint: function(x, y) {
                        const pos = (0, _utils.convertXYToPolar)(this.getValueAxis().getCenter(), x, y);
                        return chart.getNeighborPoint.call(this, pos.phi, pos.r)
                    },
                    _applyVisibleArea: function() {
                        const canvas = this.getValueAxis().getCanvas();
                        this._visibleArea = {
                            minX: canvas.left,
                            maxX: canvas.width - canvas.right,
                            minY: canvas.top,
                            maxY: canvas.height - canvas.bottom
                        }
                    },
                    getSeriesPairCoord(params, isArgument) {
                        let coords = null;
                        const paramName = isArgument ? "argument" : "radius";
                        const points = this.getVisiblePoints();
                        for (let i = 0; i < points.length; i++) {
                            const p = points[i];
                            const tmpPoint = (0, _type.isDefined)(p[paramName]) && (0, _type.isDefined)(params[paramName]) && p[paramName].valueOf() === params[paramName].valueOf() ? {
                                x: p.x,
                                y: p.y
                            } : void 0;
                            if ((0, _type.isDefined)(tmpPoint)) {
                                coords = tmpPoint;
                                break
                            }
                        }
                        return coords
                    }
                })
            },
        92057:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/series/stacked_series.js ***!
              \**************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.polar = exports.chart = void 0;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _area_series = __webpack_require__( /*! ./area_series */ 90048);
                var _bar_series = __webpack_require__( /*! ./bar_series */ 58821);
                var _line_series = __webpack_require__( /*! ./line_series */ 7222);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _object = __webpack_require__( /*! ../../core/utils/object */ 48013);
                const chartAreaSeries = _area_series.chart.area;
                const chartBarSeries = _bar_series.chart.bar;
                const baseStackedSeries = {
                    _calculateErrorBars: _common.noop,
                    _updateOptions: function(options) {
                        this._stackName = "axis_" + (options.axis || "default")
                    }
                };
                const chart = {};
                exports.chart = chart;
                const polar = {};
                exports.polar = polar;
                chart.stackedline = (0, _extend2.extend)({}, _line_series.chart.line, baseStackedSeries, {});
                chart.stackedspline = (0, _extend2.extend)({}, _line_series.chart.spline, baseStackedSeries, {});
                chart.fullstackedline = (0, _extend2.extend)({}, _line_series.chart.line, baseStackedSeries, {
                    getValueRangeInitialValue: _area_series.chart.area.getValueRangeInitialValue
                });
                chart.fullstackedspline = (0, _extend2.extend)({}, _line_series.chart.spline, baseStackedSeries, {
                    getValueRangeInitialValue: _area_series.chart.area.getValueRangeInitialValue
                });
                const stackedBar = chart.stackedbar = (0, _extend2.extend)({}, chartBarSeries, baseStackedSeries, {
                    _updateOptions: function(options) {
                        baseStackedSeries._updateOptions.call(this, options);
                        this._stackName = this._stackName + "_stack_" + (options.stack || "default")
                    }
                });
                chart.fullstackedbar = (0, _extend2.extend)({}, chartBarSeries, baseStackedSeries, {
                    _updateOptions: stackedBar._updateOptions
                });

                function clonePoint(point, value, minValue, position) {
                    point = (0, _object.clone)(point);
                    point.value = value;
                    point.minValue = minValue;
                    point.translate();
                    point.argument = point.argument + position;
                    return point
                }

                function preparePointsForStackedAreaSegment(points) {
                    let i = 0;
                    let p;
                    const result = [];
                    let array;
                    const len = points.length;
                    while (i < len) {
                        p = points[i];
                        array = [p];
                        if (p.leftHole) {
                            array = [clonePoint(p, p.leftHole, p.minLeftHole, "left"), p]
                        }
                        if (p.rightHole) {
                            array.push(clonePoint(p, p.rightHole, p.minRightHole, "right"))
                        }
                        result.push(array);
                        i++
                    }
                    return [].concat.apply([], result)
                }
                chart.stackedarea = (0, _extend2.extend)({}, chartAreaSeries, baseStackedSeries, {
                    _prepareSegment: function(points, rotated) {
                        return chartAreaSeries._prepareSegment.call(this, preparePointsForStackedAreaSegment(points), rotated)
                    },
                    _appendInGroup: function() {
                        this._group.append(this._extGroups.seriesGroup).toBackground()
                    }
                });
                chart.stackedsplinearea = (0, _extend2.extend)({}, _area_series.chart.splinearea, baseStackedSeries, {
                    _prepareSegment: function(points, rotated) {
                        const that = this;
                        let areaSegment;
                        points = preparePointsForStackedAreaSegment(points);
                        if (!this._prevSeries || 1 === points.length) {
                            areaSegment = _area_series.chart.splinearea._prepareSegment.call(this, points, rotated)
                        } else {
                            const forwardPoints = _line_series.chart.spline._calculateBezierPoints(points, rotated);
                            let backwardPoints = (0, _utils.map)(points, (function(p) {
                                const point = p.getCoords(true);
                                point.argument = p.argument;
                                return point
                            }));
                            let prevSeriesForwardPoints = [];
                            const pointByArg = {};
                            let i = 0;
                            const len = that._prevSeries._segments.length;
                            while (i < len) {
                                prevSeriesForwardPoints = prevSeriesForwardPoints.concat(that._prevSeries._segments[i].line);
                                i++
                            }(0, _iterator.each)(prevSeriesForwardPoints, (function(_, p) {
                                if (null !== p.argument) {
                                    const argument = p.argument.valueOf();
                                    if (!pointByArg[argument]) {
                                        pointByArg[argument] = [p]
                                    } else {
                                        pointByArg[argument].push(p)
                                    }
                                }
                            }));
                            that._prevSeries._segmentByArg = pointByArg;
                            backwardPoints = _line_series.chart.spline._calculateBezierPoints(backwardPoints, rotated);
                            (0, _iterator.each)(backwardPoints, (function(i, p) {
                                const argument = p.argument.valueOf();
                                let prevSeriesPoints;
                                if (i % 3 === 0) {
                                    prevSeriesPoints = pointByArg[argument] || function(prevSeries, argument) {
                                        let result;
                                        while (!result && prevSeries) {
                                            result = prevSeries._segmentByArg && prevSeries._segmentByArg[argument];
                                            prevSeries = prevSeries._prevSeries
                                        }
                                        return result
                                    }(that._prevSeries, argument);
                                    if (prevSeriesPoints) {
                                        backwardPoints[i - 1] && prevSeriesPoints[0] && (backwardPoints[i - 1] = prevSeriesPoints[0]);
                                        backwardPoints[i + 1] && (backwardPoints[i + 1] = prevSeriesPoints[2] || p)
                                    }
                                }
                            }));
                            areaSegment = {
                                line: forwardPoints,
                                area: forwardPoints.concat(backwardPoints.reverse())
                            };
                            that._areaPointsToSplineAreaPoints(areaSegment.area)
                        }
                        return areaSegment
                    },
                    _appendInGroup: chart.stackedarea._appendInGroup
                });
                chart.fullstackedarea = (0, _extend2.extend)({}, chartAreaSeries, baseStackedSeries, {
                    _prepareSegment: chart.stackedarea._prepareSegment,
                    _appendInGroup: chart.stackedarea._appendInGroup
                });
                chart.fullstackedsplinearea = (0, _extend2.extend)({}, _area_series.chart.splinearea, baseStackedSeries, {
                    _prepareSegment: chart.stackedsplinearea._prepareSegment,
                    _appendInGroup: chart.stackedarea._appendInGroup
                });
                polar.stackedbar = (0, _extend2.extend)({}, _bar_series.polar.bar, baseStackedSeries, {})
            },
        43759:
            /*!**************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/sparkline.js ***!
              \**************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _sparkline = (obj = __webpack_require__( /*! ./sparklines/sparkline */ 51876), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _sparkline.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        55628:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/sparklines/base_sparkline.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _m_base_widget = _interopRequireDefault(__webpack_require__( /*! ../../__internal/viz/core/m_base_widget */ 55845));
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _pointer = _interopRequireDefault(__webpack_require__( /*! ../../events/pointer */ 93786));
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _renderer = _interopRequireDefault(__webpack_require__( /*! ../../core/renderer */ 68374));
                var _translator2d = __webpack_require__( /*! ../translators/translator2d */ 87276);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _tooltip = __webpack_require__( /*! ../core/tooltip */ 14371);
                var _export = __webpack_require__( /*! ../core/export */ 82454);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const EVENT_NS = "sparkline-tooltip";
                const POINTER_ACTION = (0, _index.addNamespace)([_pointer.default.down, _pointer.default.move], EVENT_NS);
                const _extend = _extend2.extend;
                const _floor = Math.floor;

                function pointerHandler(_ref2) {
                    let {
                        data: data
                    } = _ref2;
                    const that = data.widget;
                    that._enableOutHandler();
                    that._showTooltip()
                }

                function createAxis(isHorizontal) {
                    const translator = new _translator2d.Translator2D({}, {}, {
                        shiftZeroValue: !isHorizontal,
                        isHorizontal: !!isHorizontal
                    });
                    return {
                        getTranslator: function() {
                            return translator
                        },
                        update: function(range, canvas, options) {
                            translator.update(range, canvas, options)
                        },
                        getVisibleArea() {
                            const visibleArea = translator.getCanvasVisibleArea();
                            return [visibleArea.min, visibleArea.max]
                        },
                        visualRange: _common.noop,
                        calculateInterval: _common.noop,
                        getMarginOptions: () => ({}),
                        aggregatedPointBetweenTicks: () => false
                    }
                }
                let _initTooltip;
                const BaseSparkline = _m_base_widget.default.inherit({
                    _getLayoutItems: _common.noop,
                    _useLinks: false,
                    _themeDependentChanges: ["OPTIONS"],
                    _initCore: function() {
                        this._tooltipTracker = this._renderer.root;
                        this._tooltipTracker.attr({
                            "pointer-events": "visible"
                        });
                        this._createHtmlElements();
                        this._initTooltipEvents();
                        this._argumentAxis = createAxis(true);
                        this._valueAxis = createAxis()
                    },
                    _getDefaultSize: function() {
                        return this._defaultSize
                    },
                    _disposeCore: function() {
                        this._disposeWidgetElements();
                        this._disposeTooltipEvents();
                        this._ranges = null
                    },
                    _optionChangesOrder: ["OPTIONS"],
                    _change_OPTIONS: function() {
                        this._prepareOptions();
                        this._change(["UPDATE"])
                    },
                    _customChangesOrder: ["UPDATE"],
                    _change_UPDATE: function() {
                        this._update()
                    },
                    _update: function() {
                        const that = this;
                        if (that._tooltipShown) {
                            that._tooltipShown = false;
                            that._tooltip.hide()
                        }
                        that._cleanWidgetElements();
                        that._updateWidgetElements();
                        that._drawWidgetElements()
                    },
                    _updateWidgetElements: function() {
                        const canvas = this._getCorrectCanvas();
                        this._updateRange();
                        this._argumentAxis.update(this._ranges.arg, canvas, this._getStick());
                        this._valueAxis.update(this._ranges.val, canvas)
                    },
                    _getStick: function() {},
                    _applySize: function(rect) {
                        this._allOptions.size = {
                            width: rect[2] - rect[0],
                            height: rect[3] - rect[1]
                        };
                        this._change(["UPDATE"])
                    },
                    _setupResizeHandler: _common.noop,
                    _prepareOptions: function() {
                        return _extend(true, {}, this._themeManager.theme(), this.option())
                    },
                    _getTooltipCoords: function() {
                        const canvas = this._canvas;
                        const rootOffset = this._renderer.getRootOffset();
                        return {
                            x: canvas.width / 2 + rootOffset.left,
                            y: canvas.height / 2 + rootOffset.top
                        }
                    },
                    _initTooltipEvents() {
                        const data = {
                            widget: this
                        };
                        this._renderer.root.off("." + EVENT_NS).on(POINTER_ACTION, data, pointerHandler)
                    },
                    _showTooltip() {
                        const that = this;
                        let tooltip;
                        if (!that._tooltipShown) {
                            that._tooltipShown = true;
                            tooltip = that._getTooltip();
                            tooltip.isEnabled() && that._tooltip.show(that._getTooltipData(), that._getTooltipCoords(), {})
                        }
                    },
                    _hideTooltip() {
                        if (this._tooltipShown) {
                            this._tooltipShown = false;
                            this._tooltip.hide()
                        }
                    },
                    _stopCurrentHandling() {
                        this._hideTooltip()
                    },
                    _enableOutHandler() {
                        const that = this;
                        if (that._outHandler) {
                            return
                        }
                        const handler = _ref5 => {
                            let {
                                pageX: pageX,
                                pageY: pageY
                            } = _ref5;
                            const {
                                left: left,
                                top: top
                            } = that._renderer.getRootOffset();
                            const x = _floor(pageX - left);
                            const y = _floor(pageY - top);
                            if (! function(_ref, x, y) {
                                    let {
                                        width: width,
                                        height: height
                                    } = _ref;
                                    return (0, _utils.pointInCanvas)({
                                        left: 0,
                                        top: 0,
                                        right: width,
                                        bottom: height,
                                        width: width,
                                        height: height
                                    }, x, y)
                                }(that._canvas, x, y)) {
                                that._hideTooltip();
                                that._disableOutHandler()
                            }
                        };
                        _events_engine.default.on(_dom_adapter.default.getDocument(), POINTER_ACTION, handler);
                        this._outHandler = handler
                    },
                    _disableOutHandler() {
                        this._outHandler && _events_engine.default.off(_dom_adapter.default.getDocument(), POINTER_ACTION, this._outHandler);
                        this._outHandler = null
                    },
                    _disposeTooltipEvents: function() {
                        this._tooltipTracker.off();
                        this._disableOutHandler();
                        this._renderer.root.off("." + EVENT_NS)
                    },
                    _getTooltip: function() {
                        const that = this;
                        if (!that._tooltip) {
                            _initTooltip.apply(this, arguments);
                            that._setTooltipRendererOptions(that._tooltipRendererOptions);
                            that._tooltipRendererOptions = null;
                            that._setTooltipOptions()
                        }
                        return that._tooltip
                    }
                });
                var _default = BaseSparkline;
                exports.default = _default;
                BaseSparkline.addPlugin(_tooltip.plugin);
                _initTooltip = BaseSparkline.prototype._initTooltip;
                BaseSparkline.prototype._initTooltip = _common.noop;
                const _disposeTooltip = BaseSparkline.prototype._disposeTooltip;
                BaseSparkline.prototype._disposeTooltip = function() {
                    if (this._tooltip) {
                        _disposeTooltip.apply(this, arguments)
                    }
                };
                BaseSparkline.prototype._setTooltipRendererOptions = function() {
                    const options = this._getRendererOptions();
                    if (this._tooltip) {
                        this._tooltip.setRendererOptions(options)
                    } else {
                        this._tooltipRendererOptions = options
                    }
                };
                BaseSparkline.prototype._setTooltipOptions = function() {
                    if (this._tooltip) {
                        const options = this._getOption("tooltip");
                        const defaultContentTemplate = this._getDefaultTooltipTemplate(options);
                        const contentTemplateOptions = defaultContentTemplate ? {
                            contentTemplate: defaultContentTemplate
                        } : {};
                        const optionsToUpdate = _extend(contentTemplateOptions, options, {
                            enabled: options.enabled && this._isTooltipEnabled()
                        });
                        this._tooltip.update(optionsToUpdate)
                    }
                };
                BaseSparkline.prototype._getDefaultTooltipTemplate = function(options) {
                    let defaultTemplateNeeded = true;
                    const textAlign = this.option("rtlEnabled") ? "left" : "right";
                    if ((0, _type.isFunction)(options.customizeTooltip)) {
                        var _options$customizeToo;
                        this._tooltip.update(options);
                        const formatObject = this._getTooltipData();
                        const customizeResult = null !== (_options$customizeToo = options.customizeTooltip.call(formatObject, formatObject)) && void 0 !== _options$customizeToo ? _options$customizeToo : {};
                        defaultTemplateNeeded = !("html" in customizeResult) && !("text" in customizeResult)
                    }
                    return defaultTemplateNeeded && function(_ref3, textAlign) {
                        let {
                            lineSpacing: lineSpacing,
                            size: size
                        } = _ref3;
                        const lineHeight = "".concat((null !== lineSpacing && void 0 !== lineSpacing ? lineSpacing : 2) + size, "px");
                        return function(_ref4, container) {
                            let {
                                valueText: valueText
                            } = _ref4;
                            const table = (0, _renderer.default)("<table>").css({
                                borderSpacing: 0,
                                lineHeight: lineHeight
                            });
                            for (let i = 0; i < valueText.length; i += 2) {
                                const tr = (0, _renderer.default)("<tr>");
                                (0, _renderer.default)("<td>").text(valueText[i]).appendTo(tr);
                                (0, _renderer.default)("<td>").css({
                                    width: 15
                                }).appendTo(tr);
                                (0, _renderer.default)("<td>").css({
                                    textAlign: textAlign
                                }).text(valueText[i + 1]).appendTo(tr);
                                table.append(tr)
                            }
                            container.append(table)
                        }
                    }(options.font, textAlign)
                };
                const exportPlugin = (0, _extend2.extend)(true, {}, _export.plugin, {
                    init: _common.noop,
                    dispose: _common.noop,
                    customize: null,
                    members: {
                        _getExportMenuOptions: null
                    }
                });
                BaseSparkline.addPlugin(exportPlugin);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        59989:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/sparklines/bullet.js ***!
              \**********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _base_sparkline = _interopRequireDefault(__webpack_require__( /*! ./base_sparkline */ 55628));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const _Number = Number;
                const _isFinite = isFinite;
                const dxBullet = _base_sparkline.default.inherit({
                    _rootClassPrefix: "dxb",
                    _rootClass: "dxb-bullet",
                    _themeSection: "bullet",
                    _defaultSize: {
                        width: 300,
                        height: 30,
                        left: 1,
                        right: 1,
                        top: 2,
                        bottom: 2
                    },
                    _disposeWidgetElements: function() {
                        delete this._zeroLevelPath;
                        delete this._targetPath;
                        delete this._barValuePath
                    },
                    _cleanWidgetElements: function() {
                        this._zeroLevelPath.remove();
                        this._targetPath.remove();
                        this._barValuePath.remove()
                    },
                    _drawWidgetElements: function() {
                        this._drawBullet();
                        this._drawn()
                    },
                    _createHtmlElements: function() {
                        const renderer = this._renderer;
                        this._zeroLevelPath = renderer.path(void 0, "line").attr({
                            class: "dxb-zero-level",
                            "stroke-linecap": "square"
                        });
                        this._targetPath = renderer.path(void 0, "line").attr({
                            class: "dxb-target",
                            "stroke-linecap": "square"
                        });
                        this._barValuePath = renderer.path(void 0, "line").attr({
                            class: "dxb-bar-value",
                            "stroke-linecap": "square"
                        })
                    },
                    _prepareOptions: function() {
                        const that = this;
                        let options;
                        let startScaleValue;
                        let endScaleValue;
                        let level;
                        let value;
                        let target;
                        that._allOptions = options = that.callBase();
                        const isValueUndefined = void 0 === that._allOptions.value;
                        const isTargetUndefined = void 0 === that._allOptions.target;
                        that._tooltipEnabled = !(isValueUndefined && isTargetUndefined);
                        if (isValueUndefined) {
                            that._allOptions.value = 0
                        }
                        if (isTargetUndefined) {
                            that._allOptions.target = 0
                        }
                        options.value = value = _Number(options.value);
                        options.target = target = _Number(options.target);
                        if (void 0 === that._allOptions.startScaleValue) {
                            that._allOptions.startScaleValue = target < value ? target : value;
                            that._allOptions.startScaleValue = that._allOptions.startScaleValue < 0 ? that._allOptions.startScaleValue : 0
                        }
                        if (void 0 === that._allOptions.endScaleValue) {
                            that._allOptions.endScaleValue = target > value ? target : value
                        }
                        options.startScaleValue = startScaleValue = _Number(options.startScaleValue);
                        options.endScaleValue = endScaleValue = _Number(options.endScaleValue);
                        if (endScaleValue < startScaleValue) {
                            level = endScaleValue;
                            that._allOptions.endScaleValue = startScaleValue;
                            that._allOptions.startScaleValue = level;
                            that._allOptions.inverted = true
                        }
                    },
                    _updateRange: function() {
                        const options = this._allOptions;
                        this._ranges = {
                            arg: {
                                invert: options.rtlEnabled ? !options.inverted : options.inverted,
                                min: options.startScaleValue,
                                max: options.endScaleValue,
                                axisType: "continuous",
                                dataType: "numeric"
                            },
                            val: {
                                min: 0,
                                max: 1,
                                axisType: "continuous",
                                dataType: "numeric"
                            }
                        }
                    },
                    _drawBullet: function() {
                        const options = this._allOptions;
                        const isValidBounds = options.startScaleValue !== options.endScaleValue;
                        const isValidMin = _isFinite(options.startScaleValue);
                        const isValidMax = _isFinite(options.endScaleValue);
                        const isValidValue = _isFinite(options.value);
                        const isValidTarget = _isFinite(options.target);
                        if (isValidBounds && isValidMax && isValidMin && isValidTarget && isValidValue) {
                            this._drawBarValue();
                            this._drawTarget();
                            this._drawZeroLevel()
                        }
                    },
                    _getTargetParams: function() {
                        const options = this._allOptions;
                        const translatorY = this._valueAxis.getTranslator();
                        const x = this._argumentAxis.getTranslator().translate(options.target);
                        return {
                            points: [x, translatorY.translate(.02), x, translatorY.translate(.98)],
                            stroke: options.targetColor,
                            "stroke-width": options.targetWidth
                        }
                    },
                    _getBarValueParams: function() {
                        const options = this._allOptions;
                        const translatorX = this._argumentAxis.getTranslator();
                        const translatorY = this._valueAxis.getTranslator();
                        const startLevel = options.startScaleValue;
                        const endLevel = options.endScaleValue;
                        const value = options.value;
                        const y2 = translatorY.translate(.1);
                        const y1 = translatorY.translate(.9);
                        let x1;
                        let x2;
                        if (value > 0) {
                            x1 = startLevel <= 0 ? 0 : startLevel;
                            x2 = value >= endLevel ? endLevel : value < x1 ? x1 : value
                        } else {
                            x1 = endLevel >= 0 ? 0 : endLevel;
                            x2 = value < startLevel ? startLevel : value > x1 ? x1 : value
                        }
                        x1 = translatorX.translate(x1);
                        x2 = translatorX.translate(x2);
                        return {
                            points: [x1, y1, x2, y1, x2, y2, x1, y2],
                            fill: options.color
                        }
                    },
                    _getCorrectCanvas: function() {
                        return this._canvas
                    },
                    _getZeroLevelParams: function() {
                        const translatorY = this._valueAxis.getTranslator();
                        const x = this._argumentAxis.getTranslator().translate(0);
                        return {
                            points: [x, translatorY.translate(.02), x, translatorY.translate(.98)],
                            stroke: this._allOptions.targetColor,
                            "stroke-width": 1
                        }
                    },
                    _drawZeroLevel: function() {
                        const options = this._allOptions;
                        if (0 > options.endScaleValue || 0 < options.startScaleValue || !options.showZeroLevel) {
                            return
                        }
                        this._zeroLevelPath.attr(this._getZeroLevelParams()).sharp().append(this._renderer.root)
                    },
                    _drawTarget: function() {
                        const options = this._allOptions;
                        const target = options.target;
                        if (target > options.endScaleValue || target < options.startScaleValue || !options.showTarget) {
                            return
                        }
                        this._targetPath.attr(this._getTargetParams()).sharp().append(this._renderer.root)
                    },
                    _drawBarValue: function() {
                        this._barValuePath.attr(this._getBarValueParams()).append(this._renderer.root)
                    },
                    _getTooltipCoords: function() {
                        const canvas = this._canvas;
                        const rootOffset = this._renderer.getRootOffset();
                        const bBox = this._barValuePath.getBBox();
                        return {
                            x: bBox.x + bBox.width / 2 + rootOffset.left,
                            y: canvas.height / 2 + rootOffset.top
                        }
                    },
                    _getTooltipData: function() {
                        const tooltip = this._tooltip;
                        const options = this._allOptions;
                        const value = options.value;
                        const target = options.target;
                        const valueText = tooltip.formatValue(value);
                        const targetText = tooltip.formatValue(target);
                        return {
                            originalValue: value,
                            originalTarget: target,
                            value: valueText,
                            target: targetText,
                            valueText: ["Actual Value:", valueText, "Target Value:", targetText]
                        }
                    },
                    _isTooltipEnabled: function() {
                        return this._tooltipEnabled
                    }
                });
                (0, _iterator.each)(["color", "targetColor", "targetWidth", "showTarget", "showZeroLevel", "value", "target", "startScaleValue", "endScaleValue"], (function(_, name) {
                    dxBullet.prototype._optionChangesMap[name] = "OPTIONS"
                }));
                (0, _component_registrator.default)("dxBullet", dxBullet);
                var _default = dxBullet;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        51876:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/sparklines/sparkline.js ***!
              \*************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _base_sparkline = _interopRequireDefault(__webpack_require__( /*! ./base_sparkline */ 55628));
                var _data_validator = __webpack_require__( /*! ../components/data_validator */ 45865);
                var _base_series = __webpack_require__( /*! ../series/base_series */ 54932);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _data_source = __webpack_require__( /*! ../core/data_source */ 1539);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const ALLOWED_TYPES = {
                    line: true,
                    spline: true,
                    stepline: true,
                    area: true,
                    steparea: true,
                    splinearea: true,
                    bar: true,
                    winloss: true
                };
                const _math = Math;
                const _abs = _math.abs;
                const _round = _math.round;
                const _max = _math.max;
                const _min = _math.min;
                const _isFinite = isFinite;
                const _Number = Number;
                const _String = String;

                function selectPointColor(color, options, index, pointIndexes) {
                    if (index === pointIndexes.first || index === pointIndexes.last) {
                        color = options.firstLastColor
                    }
                    if ((pointIndexes.min || []).indexOf(index) >= 0) {
                        color = options.minColor
                    }
                    if ((pointIndexes.max || []).indexOf(index) >= 0) {
                        color = options.maxColor
                    }
                    return color
                }
                const dxSparkline = _base_sparkline.default.inherit({
                    _rootClassPrefix: "dxsl",
                    _rootClass: "dxsl-sparkline",
                    _themeSection: "sparkline",
                    _defaultSize: {
                        width: 250,
                        height: 30
                    },
                    _initCore: function() {
                        this.callBase();
                        this._createSeries()
                    },
                    _initialChanges: ["DATA_SOURCE"],
                    _dataSourceChangedHandler: function() {
                        this._requestChange(["UPDATE"])
                    },
                    _updateWidgetElements: function() {
                        this._updateSeries();
                        this.callBase()
                    },
                    _disposeWidgetElements: function() {
                        this._series && this._series.dispose();
                        this._series = this._seriesGroup = this._seriesLabelGroup = null
                    },
                    _cleanWidgetElements: function() {
                        this._seriesGroup.remove();
                        this._seriesLabelGroup.remove();
                        this._seriesGroup.clear();
                        this._seriesLabelGroup.clear();
                        this._series.removeGraphicElements();
                        this._series.removePointElements();
                        this._series.removeBordersGroup()
                    },
                    _drawWidgetElements: function() {
                        if (this._dataIsLoaded()) {
                            this._drawSeries();
                            this._drawn()
                        }
                    },
                    _getCorrectCanvas: function() {
                        const options = this._allOptions;
                        const canvas = this._canvas;
                        const halfPointSize = options.pointSize && Math.ceil(options.pointSize / 2) + 2;
                        const type = options.type;
                        if ("bar" !== type && "winloss" !== type && (options.showFirstLast || options.showMinMax)) {
                            return {
                                width: canvas.width,
                                height: canvas.height,
                                left: canvas.left + halfPointSize,
                                right: canvas.right + halfPointSize,
                                top: canvas.top + halfPointSize,
                                bottom: canvas.bottom + halfPointSize
                            }
                        }
                        return canvas
                    },
                    _prepareOptions: function() {
                        const that = this;
                        that._allOptions = that.callBase();
                        that._allOptions.type = (0, _utils.normalizeEnum)(that._allOptions.type);
                        if (!ALLOWED_TYPES[that._allOptions.type]) {
                            that._allOptions.type = "line"
                        }
                    },
                    _createHtmlElements: function() {
                        this._seriesGroup = this._renderer.g().attr({
                            class: "dxsl-series"
                        });
                        this._seriesLabelGroup = this._renderer.g().attr({
                            class: "dxsl-series-labels"
                        })
                    },
                    _createSeries: function() {
                        this._series = new _base_series.Series({
                            renderer: this._renderer,
                            seriesGroup: this._seriesGroup,
                            labelsGroup: this._seriesLabelGroup,
                            argumentAxis: this._argumentAxis,
                            valueAxis: this._valueAxis,
                            incidentOccurred: this._incidentOccurred
                        }, {
                            widgetType: "chart",
                            type: "line"
                        })
                    },
                    _updateSeries: function() {
                        const singleSeries = this._series;
                        this._prepareDataSource();
                        const seriesOptions = this._prepareSeriesOptions();
                        singleSeries.updateOptions(seriesOptions);
                        const groupsData = {
                            groups: [{
                                series: [singleSeries]
                            }]
                        };
                        groupsData.argumentOptions = {
                            type: "bar" === seriesOptions.type ? "discrete" : void 0
                        };
                        this._simpleDataSource = (0, _data_validator.validateData)(this._simpleDataSource, groupsData, this._incidentOccurred, {
                            checkTypeForAllData: false,
                            convertToAxisDataType: true,
                            sortingMethod: true
                        })[singleSeries.getArgumentField()];
                        seriesOptions.customizePoint = this._getCustomizeFunction();
                        singleSeries.updateData(this._simpleDataSource);
                        singleSeries.createPoints();
                        this._groupsDataCategories = groupsData.categories
                    },
                    _optionChangesMap: {
                        dataSource: "DATA_SOURCE"
                    },
                    _optionChangesOrder: ["DATA_SOURCE"],
                    _change_DATA_SOURCE: function() {
                        this._updateDataSource()
                    },
                    _prepareDataSource: function() {
                        const that = this;
                        const options = that._allOptions;
                        const argField = options.argumentField;
                        const valField = options.valueField;
                        const dataSource = that._dataSourceItems() || [];
                        const data = function(data, argField, valField, ignoreEmptyPoints) {
                            return (0, _utils.map)(data, (function(dataItem, index) {
                                let item = null;
                                let isDataNumber;
                                let value;
                                if (void 0 !== dataItem) {
                                    item = {};
                                    isDataNumber = _isFinite(dataItem);
                                    item[argField] = isDataNumber ? _String(index) : dataItem[argField];
                                    value = isDataNumber ? dataItem : dataItem[valField];
                                    item[valField] = null === value ? ignoreEmptyPoints ? void 0 : value : _Number(value);
                                    item = void 0 !== item[argField] && void 0 !== item[valField] ? item : null
                                }
                                return item
                            }))
                        }(dataSource, argField, valField, that.option("ignoreEmptyPoints"));
                        if ("winloss" === options.type) {
                            that._winlossDataSource = data;
                            that._simpleDataSource = function(data, argField, valField, target) {
                                return (0, _utils.map)(data, (function(dataItem) {
                                    const item = {};
                                    item[argField] = dataItem[argField];
                                    if (_abs(dataItem[valField] - target) < 1e-4) {
                                        item[valField] = 0
                                    } else if (dataItem[valField] > target) {
                                        item[valField] = 1
                                    } else {
                                        item[valField] = -1
                                    }
                                    return item
                                }))
                            }(data, argField, valField, options.winlossThreshold)
                        } else {
                            that._simpleDataSource = data
                        }
                    },
                    _prepareSeriesOptions: function() {
                        const options = this._allOptions;
                        const type = "winloss" === options.type ? "bar" : options.type;
                        return {
                            visible: true,
                            argumentField: options.argumentField,
                            valueField: options.valueField,
                            color: options.lineColor,
                            width: options.lineWidth,
                            widgetType: "chart",
                            name: "",
                            type: type,
                            opacity: -1 !== type.indexOf("area") ? this._allOptions.areaOpacity : void 0,
                            point: {
                                size: options.pointSize,
                                symbol: options.pointSymbol,
                                border: {
                                    visible: true,
                                    width: 2
                                },
                                color: options.pointColor,
                                visible: false,
                                hoverStyle: {
                                    border: {}
                                },
                                selectionStyle: {
                                    border: {}
                                }
                            },
                            border: {
                                color: options.lineColor,
                                width: options.lineWidth,
                                visible: "bar" !== type
                            }
                        }
                    },
                    _getCustomizeFunction: function() {
                        const that = this;
                        const options = that._allOptions;
                        const dataSource = that._winlossDataSource || that._simpleDataSource;
                        const drawnPointIndexes = that._getExtremumPointsIndexes(dataSource);
                        let customizeFunction;
                        if ("winloss" === options.type || "bar" === options.type) {
                            customizeFunction = function(pointIndexes, options, winlossData) {
                                return function() {
                                    const index = this.index;
                                    const isWinloss = "winloss" === options.type;
                                    const target = isWinloss ? options.winlossThreshold : 0;
                                    const value = isWinloss ? winlossData[index][options.valueField] : this.value;
                                    const positiveColor = isWinloss ? options.winColor : options.barPositiveColor;
                                    const negativeColor = isWinloss ? options.lossColor : options.barNegativeColor;
                                    return {
                                        color: selectPointColor(value >= target ? positiveColor : negativeColor, options, index, pointIndexes)
                                    }
                                }
                            }(drawnPointIndexes, options, that._winlossDataSource)
                        } else {
                            customizeFunction = function(pointIndexes, options) {
                                return function() {
                                    const color = selectPointColor(void 0, options, this.index, pointIndexes);
                                    return color ? {
                                        visible: true,
                                        border: {
                                            color: color
                                        }
                                    } : {}
                                }
                            }(drawnPointIndexes, options)
                        }
                        return customizeFunction
                    },
                    _getExtremumPointsIndexes: function(data) {
                        const that = this;
                        const options = that._allOptions;
                        const lastIndex = data.length - 1;
                        const indexes = {};
                        that._minMaxIndexes = function(data, valField) {
                            const firstItem = data[0] || {};
                            const firstValue = firstItem[valField] || 0;
                            let min = firstValue;
                            let max = firstValue;
                            let minIndexes = [0];
                            let maxIndexes = [0];
                            const dataLength = data.length;
                            let value;
                            let i;
                            for (i = 1; i < dataLength; i++) {
                                value = data[i][valField];
                                if (value < min) {
                                    min = value;
                                    minIndexes = [i]
                                } else if (value === min) {
                                    minIndexes.push(i)
                                }
                                if (value > max) {
                                    max = value;
                                    maxIndexes = [i]
                                } else if (value === max) {
                                    maxIndexes.push(i)
                                }
                            }
                            if (max === min) {
                                minIndexes = maxIndexes = []
                            }
                            return {
                                minIndexes: minIndexes,
                                maxIndexes: maxIndexes
                            }
                        }(data, options.valueField);
                        if (options.showFirstLast) {
                            indexes.first = 0;
                            indexes.last = lastIndex
                        }
                        if (options.showMinMax) {
                            indexes.min = that._minMaxIndexes.minIndexes;
                            indexes.max = that._minMaxIndexes.maxIndexes
                        }
                        return indexes
                    },
                    _getStick: function() {
                        return {
                            stick: "bar" !== this._series.type
                        }
                    },
                    _updateRange: function() {
                        const series = this._series;
                        const type = series.type;
                        const isBarType = "bar" === type;
                        const isWinlossType = "winloss" === type;
                        const rangeData = series.getRangeData();
                        const minValue = this._allOptions.minValue;
                        const hasMinY = (0, _type.isDefined)(minValue) && _isFinite(minValue);
                        const maxValue = this._allOptions.maxValue;
                        const hasMaxY = (0, _type.isDefined)(maxValue) && _isFinite(maxValue);
                        let argCoef;
                        const valCoef = .15 * (rangeData.val.max - rangeData.val.min);
                        if (isBarType || isWinlossType || "area" === type) {
                            if (0 !== rangeData.val.min) {
                                rangeData.val.min -= valCoef
                            }
                            if (0 !== rangeData.val.max) {
                                rangeData.val.max += valCoef
                            }
                        } else {
                            rangeData.val.min -= valCoef;
                            rangeData.val.max += valCoef
                        }
                        if (hasMinY || hasMaxY) {
                            if (hasMinY && hasMaxY) {
                                rangeData.val.minVisible = _min(minValue, maxValue);
                                rangeData.val.maxVisible = _max(minValue, maxValue)
                            } else {
                                rangeData.val.minVisible = hasMinY ? _Number(minValue) : void 0;
                                rangeData.val.maxVisible = hasMaxY ? _Number(maxValue) : void 0
                            }
                            if (isWinlossType) {
                                rangeData.val.minVisible = hasMinY ? _max(rangeData.val.minVisible, -1) : void 0;
                                rangeData.val.maxVisible = hasMaxY ? _min(rangeData.val.maxVisible, 1) : void 0
                            }
                        }
                        if (series.getPoints().length > 1) {
                            if (isBarType) {
                                argCoef = .1 * (rangeData.arg.max - rangeData.arg.min);
                                rangeData.arg.min = rangeData.arg.min - argCoef;
                                rangeData.arg.max = rangeData.arg.max + argCoef
                            }
                        }
                        rangeData.arg.categories = this._groupsDataCategories;
                        this._ranges = rangeData
                    },
                    _getBarWidth: function(pointsCount) {
                        const canvas = this._canvas;
                        const intervalWidth = 4 * pointsCount;
                        const rangeWidth = canvas.width - canvas.left - canvas.right - intervalWidth;
                        let width = _round(rangeWidth / pointsCount);
                        if (width < 1) {
                            width = 1
                        }
                        if (width > 50) {
                            width = 50
                        }
                        return width
                    },
                    _correctPoints: function() {
                        const that = this;
                        const seriesType = that._allOptions.type;
                        const seriesPoints = that._series.getPoints();
                        const pointsLength = seriesPoints.length;
                        let barWidth;
                        let i;
                        if ("bar" === seriesType || "winloss" === seriesType) {
                            barWidth = that._getBarWidth(pointsLength);
                            for (i = 0; i < pointsLength; i++) {
                                seriesPoints[i].correctCoordinates({
                                    width: barWidth,
                                    offset: 0
                                })
                            }
                        }
                    },
                    _drawSeries: function() {
                        const that = this;
                        if (that._simpleDataSource.length > 0) {
                            that._correctPoints();
                            that._series.draw();
                            that._seriesGroup.append(that._renderer.root)
                        }
                    },
                    _isTooltipEnabled: function() {
                        return !!this._simpleDataSource.length
                    },
                    _getTooltipData: function() {
                        const options = this._allOptions;
                        const dataSource = this._winlossDataSource || this._simpleDataSource;
                        const tooltip = this._tooltip;
                        if (0 === dataSource.length) {
                            return {}
                        }
                        const minMax = this._minMaxIndexes;
                        const valueField = options.valueField;
                        const first = dataSource[0][valueField];
                        const last = dataSource[dataSource.length - 1][valueField];
                        const min = (0, _type.isDefined)(minMax.minIndexes[0]) ? dataSource[minMax.minIndexes[0]][valueField] : first;
                        const max = (0, _type.isDefined)(minMax.maxIndexes[0]) ? dataSource[minMax.maxIndexes[0]][valueField] : first;
                        const formattedFirst = tooltip.formatValue(first);
                        const formattedLast = tooltip.formatValue(last);
                        const formattedMin = tooltip.formatValue(min);
                        const formattedMax = tooltip.formatValue(max);
                        const customizeObject = {
                            firstValue: formattedFirst,
                            lastValue: formattedLast,
                            minValue: formattedMin,
                            maxValue: formattedMax,
                            originalFirstValue: first,
                            originalLastValue: last,
                            originalMinValue: min,
                            originalMaxValue: max,
                            valueText: ["Start:", formattedFirst, "End:", formattedLast, "Min:", formattedMin, "Max:", formattedMax]
                        };
                        if ("winloss" === options.type) {
                            customizeObject.originalThresholdValue = options.winlossThreshold;
                            customizeObject.thresholdValue = tooltip.formatValue(options.winlossThreshold)
                        }
                        return customizeObject
                    }
                });
                (0, _utils.map)(["lineColor", "lineWidth", "areaOpacity", "minColor", "maxColor", "barPositiveColor", "barNegativeColor", "winColor", "lessColor", "firstLastColor", "pointSymbol", "pointColor", "pointSize", "type", "argumentField", "valueField", "winlossThreshold", "showFirstLast", "showMinMax", "ignoreEmptyPoints", "minValue", "maxValue"], (function(name) {
                    dxSparkline.prototype._optionChangesMap[name] = "OPTIONS"
                }));
                (0, _component_registrator.default)("dxSparkline", dxSparkline);
                var _default = dxSparkline;
                exports.default = _default;
                dxSparkline.addPlugin(_data_source.plugin);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        86231:
            /*!***********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/themes.js ***!
              \***********************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.addCacheItem = function(target) {
                    const cacheUid = ++nextCacheUid;
                    target._cache = cacheUid;
                    widgetsCache[cacheUid] = target
                };
                exports.currentTheme = currentTheme;
                exports.getTheme = getTheme;
                exports.refreshTheme = function() {
                    _each(widgetsCache, (function() {
                        this.refresh()
                    }));
                    return this
                };
                exports.registerTheme = registerTheme;
                exports.registerThemeSchemeAlias = function(from, to) {
                    themesSchemeMapping[from] = to
                };
                exports.removeCacheItem = function(target) {
                    delete widgetsCache[target._cache]
                };
                var _extend2 = __webpack_require__( /*! ../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);
                var _utils = __webpack_require__( /*! ./core/utils */ 19157);
                var _themes = __webpack_require__( /*! ../ui/themes */ 75811);
                var _type = __webpack_require__( /*! ../core/utils/type */ 35922);
                var _generic = _interopRequireDefault(__webpack_require__( /*! ./core/themes/generic.light */ 8839));
                var _generic2 = _interopRequireDefault(__webpack_require__( /*! ./core/themes/generic.carmine */ 39726));
                var _generic3 = _interopRequireDefault(__webpack_require__( /*! ./core/themes/generic.dark */ 17374));
                var _generic4 = _interopRequireDefault(__webpack_require__( /*! ./core/themes/generic.contrast */ 14870));
                var _generic5 = _interopRequireDefault(__webpack_require__( /*! ./core/themes/generic.darkmoon */ 83313));
                var _generic6 = _interopRequireDefault(__webpack_require__( /*! ./core/themes/generic.darkviolet */ 25257));
                var _generic7 = _interopRequireDefault(__webpack_require__( /*! ./core/themes/generic.greenmist */ 84253));
                var _generic8 = _interopRequireDefault(__webpack_require__( /*! ./core/themes/generic.softblue */ 60350));
                var _material = _interopRequireDefault(__webpack_require__( /*! ./core/themes/material */ 11239));
                var _fluent = _interopRequireDefault(__webpack_require__( /*! ./core/themes/fluent */ 31987));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const themes = {};
                const themesMapping = {};
                const themesSchemeMapping = {};
                const _extend = _extend2.extend;
                const _each = _iterator.each;
                let currentThemeName = null;
                let defaultTheme;
                let nextCacheUid = 0;
                const widgetsCache = {};

                function getTheme(themeName) {
                    const name = (0, _utils.normalizeEnum)(themeName);
                    return themes[name] || themes[themesMapping[name] || currentTheme()]
                }

                function findThemeNameByName(name, scheme) {
                    return themesMapping[name + "." + scheme] || themesSchemeMapping[name + "." + scheme] || themesMapping[name]
                }

                function findThemeNameByPlatform(platform, version, scheme) {
                    return findThemeNameByName(platform + version, scheme) || findThemeNameByName(platform, scheme)
                }

                function currentTheme(themeName, colorScheme) {
                    if (!arguments.length) {
                        return currentThemeName || findThemeNameByName((0, _themes.current)()) || defaultTheme
                    }
                    const scheme = (0, _utils.normalizeEnum)(colorScheme);
                    currentThemeName = (themeName && themeName.platform ? findThemeNameByPlatform((0, _utils.normalizeEnum)(themeName.platform), themeName.version, scheme) : findThemeNameByName((0, _utils.normalizeEnum)(themeName), scheme)) || currentThemeName;
                    return this
                }

                function registerTheme(theme, baseThemeName) {
                    const themeName = (0, _utils.normalizeEnum)(theme && theme.name);
                    if (themeName) {
                        theme.isDefault && (defaultTheme = themeName);
                        ! function(themeName, targetThemeName) {
                            const themeInfo = function(themeName, splitter) {
                                const k = themeName.indexOf(splitter);
                                return k > 0 ? {
                                    name: themeName.substring(0, k),
                                    scheme: themeName.substring(k + 1)
                                } : null
                            }(themeName, ".") || {
                                name: themeName
                            };
                            const name = themeInfo.name;
                            const scheme = themeInfo.scheme;
                            if (scheme) {
                                themesMapping[name] = themesMapping[name] || targetThemeName;
                                themesMapping[name + "." + scheme] = targetThemeName
                            } else {
                                themesMapping[name] = targetThemeName
                            }
                        }(themeName, themeName);
                        themes[themeName] = _extend(true, {}, getTheme(baseThemeName), function(theme) {
                            theme = _extend(true, {
                                loadingIndicator: {
                                    font: {}
                                },
                                export: {
                                    font: {}
                                },
                                legend: {
                                    font: {},
                                    border: {}
                                },
                                title: {
                                    font: {}
                                },
                                tooltip: {
                                    font: {}
                                },
                                "chart:common": {},
                                "chart:common:axis": {
                                    grid: {},
                                    minorGrid: {},
                                    tick: {},
                                    minorTick: {},
                                    title: {
                                        font: {}
                                    },
                                    label: {
                                        font: {}
                                    }
                                },
                                "chart:common:annotation": {
                                    font: {},
                                    border: {}
                                },
                                chart: {
                                    commonSeriesSettings: {
                                        candlestick: {}
                                    }
                                },
                                pie: {},
                                polar: {},
                                gauge: {
                                    scale: {
                                        tick: {},
                                        minorTick: {},
                                        label: {
                                            font: {}
                                        }
                                    }
                                },
                                barGauge: {},
                                funnel: {},
                                sankey: {},
                                map: {
                                    background: {}
                                },
                                treeMap: {
                                    tile: {
                                        selectionStyle: {
                                            border: {}
                                        }
                                    },
                                    group: {
                                        border: {},
                                        selectionStyle: {
                                            border: {}
                                        },
                                        label: {
                                            font: {}
                                        }
                                    }
                                },
                                rangeSelector: {
                                    scale: {
                                        tick: {},
                                        minorTick: {},
                                        label: {
                                            font: {}
                                        }
                                    },
                                    chart: {}
                                },
                                sparkline: {},
                                bullet: {}
                            }, theme);
                            mergeScalar(theme.loadingIndicator, "backgroundColor", theme);
                            mergeScalar(theme.chart.commonSeriesSettings.candlestick, "innerColor", null, theme.backgroundColor);
                            mergeScalar(theme.map.background, "color", null, theme.backgroundColor);
                            mergeScalar(theme.title.font, "color", null, theme.primaryTitleColor);
                            mergeObject(theme.title, "subtitle", null, theme.title);
                            mergeScalar(theme.legend.font, "color", null, theme.secondaryTitleColor);
                            mergeScalar(theme.legend.border, "color", null, theme.gridColor);
                            ! function(theme) {
                                const commonAxisSettings = theme["chart:common:axis"];
                                _each([commonAxisSettings.grid, commonAxisSettings.minorGrid], (function(_, obj) {
                                    mergeScalar(obj, "color", null, theme.gridColor)
                                }));
                                _each([commonAxisSettings, commonAxisSettings.tick, commonAxisSettings.minorTick, commonAxisSettings.label.font], (function(_, obj) {
                                    mergeScalar(obj, "color", null, theme.axisColor)
                                }));
                                mergeScalar(commonAxisSettings.title.font, "color", null, theme.secondaryTitleColor);
                                mergeScalar(theme.gauge.scale.label.font, "color", null, theme.axisColor);
                                mergeScalar(theme.gauge.scale.tick, "color", null, theme.backgroundColor);
                                mergeScalar(theme.gauge.scale.minorTick, "color", null, theme.backgroundColor);
                                mergeScalar(theme.rangeSelector.scale.label.font, "color", null, theme.axisColor)
                            }(theme);
                            _each(["chart", "pie", "polar", "gauge", "barGauge", "map", "treeMap", "funnel", "rangeSelector", "sparkline", "bullet", "sankey"], (function(_, section) {
                                mergeScalar(theme[section], "redrawOnResize", theme);
                                mergeScalar(theme[section], "containerBackgroundColor", null, theme.backgroundColor);
                                mergeObject(theme[section], "tooltip", theme);
                                mergeObject(theme[section], "export", theme)
                            }));
                            _each(["chart", "pie", "polar", "gauge", "barGauge", "map", "treeMap", "funnel", "rangeSelector", "sankey"], (function(_, section) {
                                mergeObject(theme[section], "loadingIndicator", theme);
                                mergeObject(theme[section], "legend", theme);
                                mergeObject(theme[section], "title", theme)
                            }));
                            _each(["chart", "pie", "polar"], (function(_, section) {
                                mergeObject(theme, section, null, theme["chart:common"])
                            }));
                            _each(["chart", "polar"], (function(_, section) {
                                theme[section] = theme[section] || {};
                                mergeObject(theme[section], "commonAxisSettings", null, theme["chart:common:axis"])
                            }));
                            _each(["chart", "polar", "map", "pie"], (function(_, section) {
                                theme[section] = theme[section] || {};
                                mergeObject(theme[section], "commonAnnotationSettings", null, theme["chart:common:annotation"])
                            }));
                            mergeObject(theme.rangeSelector.chart, "commonSeriesSettings", theme.chart);
                            mergeObject(theme.rangeSelector.chart, "dataPrepareSettings", theme.chart);
                            mergeScalar(theme.treeMap.group.border, "color", null, theme.gridColor);
                            mergeScalar(theme.treeMap.tile.selectionStyle.border, "color", null, theme.primaryTitleColor);
                            mergeScalar(theme.treeMap.group.selectionStyle.border, "color", null, theme.primaryTitleColor);
                            mergeScalar(theme.map.legend, "backgroundColor", theme);
                            ! function(theme) {
                                const map = theme.map;
                                _each(["area", "line", "marker"], (function(_, section) {
                                    mergeObject(map, "layer:" + section, null, map.layer)
                                }));
                                _each(["dot", "bubble", "pie", "image"], (function(_, section) {
                                    mergeObject(map, "layer:marker:" + section, null, map["layer:marker"])
                                }))
                            }(theme);
                            return theme
                        }(theme))
                    }
                }

                function mergeScalar(target, field, source, sourceValue) {
                    const _value = source ? source[field] : sourceValue;
                    if (void 0 !== _value && void 0 === target[field]) {
                        target[field] = _value
                    }
                }

                function mergeObject(target, field, source, sourceValue) {
                    const _value = source ? source[field] : sourceValue;
                    if (void 0 !== _value) {
                        target[field] = _extend(true, {}, _value, target[field])
                    }
                }
                if ((0, _type.isEmptyObject)(themes) && (0, _type.isEmptyObject)(themesMapping) && !defaultTheme) {
                    [].concat(_generic.default, _generic2.default, _generic3.default, _generic4.default, _generic5.default, _generic6.default, _generic7.default, _generic8.default, _material.default, _fluent.default).forEach(t => {
                        registerTheme(t.theme, t.baseThemeName)
                    })
                }
            },
        46163:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/translators/category_translator.js ***!
              \************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _math = __webpack_require__( /*! ../../core/utils/math */ 60810);
                const round = Math.round;

                function getValue(value) {
                    return value
                }
                var _default = {
                    translate: function(category, directionOffset) {
                        const canvasOptions = this._canvasOptions;
                        const categoryIndex = this._categoriesToPoints[null === category || void 0 === category ? void 0 : category.valueOf()];
                        const specialValue = this.translateSpecialCase(category);
                        const startPointIndex = canvasOptions.startPointIndex || 0;
                        const stickInterval = this._options.stick ? 0 : .5;
                        if ((0, _type.isDefined)(specialValue)) {
                            return round(specialValue)
                        }
                        if (!categoryIndex && 0 !== categoryIndex) {
                            return null
                        }
                        directionOffset = directionOffset || 0;
                        const stickDelta = categoryIndex + stickInterval - startPointIndex + .5 * directionOffset;
                        return round(this._calculateProjection(canvasOptions.interval * stickDelta))
                    },
                    getInterval: function() {
                        return this._canvasOptions.interval
                    },
                    getEventScale: function(zoomEvent) {
                        const scale = zoomEvent.deltaScale || 1;
                        return 1 - (1 - scale) / (.75 + this.visibleCategories.length / this._categories.length)
                    },
                    zoom: function(translate, scale) {
                        const categories = this._categories;
                        const canvasOptions = this._canvasOptions;
                        const stick = this._options.stick;
                        const invert = canvasOptions.invert;
                        const interval = canvasOptions.interval * scale;
                        const translateCategories = translate / interval;
                        const visibleCount = (this.visibleCategories || []).length;
                        let startCategoryIndex = parseInt((canvasOptions.startPointIndex || 0) + translateCategories + .5);
                        const categoriesLength = parseInt((0, _math.adjust)(canvasOptions.canvasLength / interval) + (stick ? 1 : 0)) || 1;
                        let endCategoryIndex;
                        if (invert) {
                            startCategoryIndex = parseInt((canvasOptions.startPointIndex || 0) + visibleCount - translateCategories + .5) - categoriesLength
                        }
                        if (startCategoryIndex < 0) {
                            startCategoryIndex = 0
                        }
                        endCategoryIndex = startCategoryIndex + categoriesLength;
                        if (endCategoryIndex > categories.length) {
                            endCategoryIndex = categories.length;
                            startCategoryIndex = endCategoryIndex - categoriesLength;
                            if (startCategoryIndex < 0) {
                                startCategoryIndex = 0
                            }
                        }
                        const newVisibleCategories = categories.slice(parseInt(startCategoryIndex), parseInt(endCategoryIndex));
                        const newInterval = this._getDiscreteInterval(newVisibleCategories.length, canvasOptions);
                        scale = newInterval / canvasOptions.interval;
                        translate = this.translate(!invert ? newVisibleCategories[0] : newVisibleCategories[newVisibleCategories.length - 1]) * scale - (canvasOptions.startPoint + (stick ? 0 : newInterval / 2));
                        return {
                            min: newVisibleCategories[0],
                            max: newVisibleCategories[newVisibleCategories.length - 1],
                            translate: translate,
                            scale: scale
                        }
                    },
                    getMinScale: function(zoom) {
                        const canvasOptions = this._canvasOptions;
                        let categoriesLength = (this.visibleCategories || this._categories).length;
                        categoriesLength += (parseInt(.1 * categoriesLength) || 1) * (zoom ? -2 : 2);
                        return canvasOptions.canvasLength / (Math.max(categoriesLength, 1) * canvasOptions.interval)
                    },
                    getScale: function(min, max) {
                        const canvasOptions = this._canvasOptions;
                        const visibleArea = this.getCanvasVisibleArea();
                        const stickOffset = !this._options.stick && 1;
                        let minPoint = (0, _type.isDefined)(min) ? this.translate(min, -stickOffset) : null;
                        let maxPoint = (0, _type.isDefined)(max) ? this.translate(max, +stickOffset) : null;
                        if (null === minPoint) {
                            minPoint = canvasOptions.invert ? visibleArea.max : visibleArea.min
                        }
                        if (null === maxPoint) {
                            maxPoint = canvasOptions.invert ? visibleArea.min : visibleArea.max
                        }
                        return this.canvasLength / Math.abs(maxPoint - minPoint)
                    },
                    isValid: function(value) {
                        return (0, _type.isDefined)(value) ? this._categoriesToPoints[value.valueOf()] >= 0 : false
                    },
                    getCorrectValue: getValue,
                    to: function(value, direction) {
                        const canvasOptions = this._canvasOptions;
                        const categoryIndex = this._categoriesToPoints[null === value || void 0 === value ? void 0 : value.valueOf()];
                        const startPointIndex = canvasOptions.startPointIndex || 0;
                        const stickDelta = categoryIndex + (this._options.stick ? 0 : .5) - startPointIndex + (this._businessRange.invert ? -1 : 1) * direction * .5;
                        return round(this._calculateProjection(canvasOptions.interval * stickDelta))
                    },
                    from: function(position) {
                        let direction = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;
                        const canvasOptions = this._canvasOptions;
                        const startPoint = canvasOptions.startPoint;
                        const categories = this.visibleCategories || this._categories;
                        const categoriesLength = categories.length;
                        const stickInterval = this._options.stick ? .5 : 0;
                        let result = round((position - startPoint) / canvasOptions.interval + stickInterval - .5 - .5 * direction);
                        if (result >= categoriesLength) {
                            result = categoriesLength - 1
                        }
                        if (result < 0) {
                            result = 0
                        }
                        if (canvasOptions.invert) {
                            result = categoriesLength - result - 1
                        }
                        return categories[result]
                    },
                    _add: function() {
                        return NaN
                    },
                    toValue: getValue,
                    isValueProlonged: true,
                    getRangeByMinZoomValue(minZoom, visualRange) {
                        const categories = this._categories;
                        const minVisibleIndex = categories.indexOf(visualRange.minVisible);
                        const maxVisibleIndex = categories.indexOf(visualRange.maxVisible);
                        const startIndex = minVisibleIndex + minZoom - 1;
                        const endIndex = maxVisibleIndex - minZoom + 1;
                        if (categories[startIndex]) {
                            return [visualRange.minVisible, categories[startIndex]]
                        } else {
                            return [categories[endIndex], visualRange.maxVisible]
                        }
                    }
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        75480:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/translators/datetime_translator.js ***!
              \************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _date = (obj = __webpack_require__( /*! ../../core/utils/date */ 91198), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;

                function parse(value) {
                    return null !== value ? new Date(value) : value
                }
                var _default = {
                    fromValue: parse,
                    toValue: parse,
                    _add: _date.default.addDateInterval,
                    convert: _date.default.dateToMilliseconds
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        93175:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/translators/interval_translator.js ***!
              \************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _date = (obj = __webpack_require__( /*! ../../core/utils/date */ 91198), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _math = __webpack_require__( /*! ../../core/utils/math */ 60810);
                const floor = Math.floor;
                var _default = {
                    _intervalize: function(value, interval) {
                        if (!(0, _type.isDefined)(value)) {
                            return
                        }
                        if ("datetime" === this._businessRange.dataType) {
                            if ((0, _type.isNumeric)(value)) {
                                value = new Date(value)
                            } else {
                                value = new Date(value.getTime())
                            }
                            value = _date.default.correctDateWithUnitBeginning(value, interval, null, this._options.firstDayOfWeek)
                        } else {
                            value = (0, _math.adjust)(floor((0, _math.adjust)(value / interval)) * interval, interval)
                        }
                        return value
                    },
                    translate: function(bp, direction, interval) {
                        const specialValue = this.translateSpecialCase(bp);
                        if ((0, _type.isDefined)(specialValue)) {
                            return Math.round(specialValue)
                        }
                        interval = interval || this._options.interval;
                        if (!this.isValid(bp, interval)) {
                            return null
                        }
                        return this.to(bp, direction, interval)
                    },
                    getInterval: function() {
                        return Math.round(this._canvasOptions.ratioOfCanvasRange * (this._businessRange.interval || Math.abs(this._canvasOptions.rangeMax - this._canvasOptions.rangeMin)))
                    },
                    zoom: function() {},
                    getMinScale: function() {},
                    getScale: function() {},
                    _parse: function(value) {
                        return "datetime" === this._businessRange.dataType ? new Date(value) : Number(value)
                    },
                    fromValue: function(value) {
                        return this._parse(value)
                    },
                    toValue: function(value) {
                        return this._parse(value)
                    },
                    isValid: function(value, interval) {
                        const that = this;
                        const co = that._canvasOptions;
                        let rangeMin = co.rangeMin;
                        let rangeMax = co.rangeMax;
                        interval = interval || that._options.interval;
                        if (null === value || isNaN(value)) {
                            return false
                        }
                        value = "datetime" === that._businessRange.dataType && (0, _type.isNumeric)(value) ? new Date(value) : value;
                        if (interval !== that._options.interval) {
                            rangeMin = that._intervalize(rangeMin, interval);
                            rangeMax = that._intervalize(rangeMax, interval)
                        }
                        if (value.valueOf() < rangeMin || value.valueOf() >= _date.default.addInterval(rangeMax, interval)) {
                            return false
                        }
                        return true
                    },
                    to: function(bp, direction, interval) {
                        interval = interval || this._options.interval;
                        const v1 = this._intervalize(bp, interval);
                        const v2 = _date.default.addInterval(v1, interval);
                        let res = this._to(v1);
                        const p2 = this._to(v2);
                        if (!direction) {
                            res = floor((res + p2) / 2)
                        } else if (direction > 0) {
                            res = p2
                        }
                        return res
                    },
                    _to: function(value) {
                        const co = this._canvasOptions;
                        const rMin = co.rangeMinVisible;
                        const rMax = co.rangeMaxVisible;
                        let offset = value - rMin;
                        if (value < rMin) {
                            offset = 0
                        } else if (value > rMax) {
                            offset = _date.default.addInterval(rMax, this._options.interval) - rMin
                        }
                        return this._conversionValue(this._calculateProjection(offset * this._canvasOptions.ratioOfCanvasRange))
                    },
                    from: function(position, direction) {
                        const origInterval = this._options.interval;
                        let interval = origInterval;
                        const co = this._canvasOptions;
                        const rMin = co.rangeMinVisible;
                        const rMax = co.rangeMaxVisible;
                        let value;
                        if ("datetime" === this._businessRange.dataType) {
                            interval = _date.default.dateToMilliseconds(origInterval)
                        }
                        value = this._calculateUnProjection((position - this._canvasOptions.startPoint) / this._canvasOptions.ratioOfCanvasRange);
                        value = this._intervalize(_date.default.addInterval(value, interval / 2, direction > 0), origInterval);
                        if (value < rMin) {
                            value = rMin
                        } else if (value > rMax) {
                            value = rMax
                        }
                        return value
                    },
                    _add: function() {
                        return NaN
                    },
                    isValueProlonged: true
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        1804:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/translators/logarithmic_translator.js ***!
              \***************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _default = {
                    fromValue: function(value) {
                        return null !== value ? (0, _utils.getLogExt)(value, this._canvasOptions.base, this._businessRange.allowNegatives, this._businessRange.linearThreshold) : value
                    },
                    toValue: function(value) {
                        return null !== value ? (0, _utils.raiseToExt)(value, this._canvasOptions.base, this._businessRange.allowNegatives, this._businessRange.linearThreshold) : value
                    },
                    getMinBarSize: function(minBarSize) {
                        const visibleArea = this.getCanvasVisibleArea();
                        const minValue = this.from(visibleArea.min + minBarSize);
                        const canvasOptions = this._canvasOptions;
                        const startValue = this.fromValue(this.from(visibleArea.min));
                        const endValue = this.fromValue(null !== minValue && void 0 !== minValue ? minValue : this.from(visibleArea.max));
                        const value = Math.abs(startValue - endValue);
                        return Math.pow(canvasOptions.base, value)
                    },
                    checkMinBarSize: function(initialValue, minShownValue, stackValue) {
                        const canvasOptions = this._canvasOptions;
                        const prevValue = stackValue ? stackValue - initialValue : 0;
                        const baseMethod = this.constructor.prototype.checkMinBarSize;
                        let minBarSize;
                        let updateValue;
                        if ((0, _type.isDefined)(minShownValue) && prevValue > 0) {
                            minBarSize = baseMethod(this.fromValue(stackValue / prevValue), this.fromValue(minShownValue) - canvasOptions.rangeMinVisible);
                            updateValue = Math.pow(canvasOptions.base, this.fromValue(prevValue) + minBarSize) - prevValue
                        } else {
                            updateValue = baseMethod(initialValue, minShownValue)
                        }
                        return updateValue
                    }
                };
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        21177:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/translators/range.js ***!
              \**********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Range = void 0;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                const _isDefined = _type.isDefined;
                const _isDate = _type.isDate;
                const _isFunction = _type.isFunction;

                function otherLessThan(thisValue, otherValue) {
                    return otherValue < thisValue
                }

                function otherGreaterThan(thisValue, otherValue) {
                    return otherValue > thisValue
                }

                function compareAndReplace(thisValue, otherValue, setValue, compare) {
                    const otherValueDefined = _isDefined(otherValue);
                    if (_isDefined(thisValue)) {
                        if (otherValueDefined && compare(thisValue, otherValue)) {
                            setValue(otherValue)
                        }
                    } else if (otherValueDefined) {
                        setValue(otherValue)
                    }
                }
                const Range = function(range) {
                    range && (0, _extend.extend)(this, range)
                };
                exports.Range = Range;
                const _Range = Range;
                _Range.prototype = {
                    constructor: _Range,
                    addRange: function(otherRange) {
                        const that = this;
                        const categories = that.categories;
                        const otherCategories = otherRange.categories;
                        const isDiscrete = "discrete" === that.axisType;
                        const compareAndReplaceByField = function(field, compare) {
                            compareAndReplace(that[field], otherRange[field], (function(value) {
                                that[field] = value
                            }), compare)
                        };
                        const controlValuesByVisibleBounds = function(valueField, visibleValueField, compare) {
                            compareAndReplace(that[valueField], that[visibleValueField], (function(value) {
                                _isDefined(that[valueField]) && (that[valueField] = value)
                            }), compare)
                        };
                        const checkField = function(field) {
                            that[field] = that[field] || otherRange[field]
                        };
                        checkField("invert");
                        checkField("containsConstantLine");
                        checkField("axisType");
                        checkField("dataType");
                        checkField("isSpacedMargin");
                        if ("logarithmic" === that.axisType) {
                            checkField("base")
                        } else {
                            that.base = void 0
                        }
                        compareAndReplaceByField("min", otherLessThan);
                        compareAndReplaceByField("max", otherGreaterThan);
                        if (isDiscrete) {
                            checkField("minVisible");
                            checkField("maxVisible")
                        } else {
                            compareAndReplaceByField("minVisible", otherLessThan);
                            compareAndReplaceByField("maxVisible", otherGreaterThan)
                        }
                        compareAndReplaceByField("interval", otherLessThan);
                        if (!isDiscrete) {
                            controlValuesByVisibleBounds("min", "minVisible", otherLessThan);
                            controlValuesByVisibleBounds("min", "maxVisible", otherLessThan);
                            controlValuesByVisibleBounds("max", "maxVisible", otherGreaterThan);
                            controlValuesByVisibleBounds("max", "minVisible", otherGreaterThan)
                        }
                        if (void 0 === categories) {
                            that.categories = otherCategories
                        } else {
                            that.categories = otherCategories ? (0, _utils.unique)(categories.concat(otherCategories)) : categories
                        }
                        if ("logarithmic" === that.axisType) {
                            checkField("allowNegatives");
                            compareAndReplaceByField("linearThreshold", otherLessThan)
                        }
                        return that
                    },
                    isEmpty: function() {
                        return (!_isDefined(this.min) || !_isDefined(this.max)) && (!this.categories || 0 === this.categories.length)
                    },
                    correctValueZeroLevel: function() {
                        const that = this;
                        if (_isDate(that.max) || _isDate(that.min)) {
                            return that
                        }

                        function setZeroLevel(min, max) {
                            that[min] < 0 && that[max] < 0 && (that[max] = 0);
                            that[min] > 0 && that[max] > 0 && (that[min] = 0)
                        }
                        setZeroLevel("min", "max");
                        setZeroLevel("minVisible", "maxVisible");
                        return that
                    },
                    sortCategories(sort) {
                        if (false === sort || !this.categories) {
                            return
                        }
                        if (Array.isArray(sort)) {
                            const sortValues = sort.map(item => item.valueOf());
                            const filteredSeriesCategories = this.categories.filter(item => -1 === sortValues.indexOf(item.valueOf()));
                            this.categories = sort.concat(filteredSeriesCategories)
                        } else {
                            const notAFunction = !_isFunction(sort);
                            if (notAFunction && "string" !== this.dataType) {
                                sort = (a, b) => a.valueOf() - b.valueOf()
                            } else if (notAFunction) {
                                sort = false
                            }
                            sort && this.categories.sort(sort)
                        }
                    }
                }
            },
        17953:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/translators/translator1d.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.Translator1D = Translator1D;
                const _Number = Number;

                function Translator1D() {
                    this.setDomain(arguments[0], arguments[1]).setCodomain(arguments[2], arguments[3]).setInverted(false)
                }
                Translator1D.prototype = {
                    constructor: Translator1D,
                    setDomain: function(domain1, domain2) {
                        this._domain1 = _Number(domain1);
                        this._domain2 = _Number(domain2);
                        this._domainDelta = this._domain2 - this._domain1;
                        return this
                    },
                    setCodomain: function(codomain1, codomain2) {
                        this._codomain1 = _Number(codomain1);
                        this._codomain2 = _Number(codomain2);
                        this._codomainDelta = this._codomain2 - this._codomain1;
                        return this
                    },
                    setInverted(state) {
                        this.inverted = state
                    },
                    getDomain: function() {
                        return [this._domain1, this._domain2]
                    },
                    getCodomain: function() {
                        return [this._codomain1, this._codomain2]
                    },
                    getDomainStart: function() {
                        return this._domain1
                    },
                    getDomainEnd: function() {
                        return this._domain2
                    },
                    getCodomainStart: function() {
                        return this._codomain1
                    },
                    getCodomainEnd: function() {
                        return this._codomain2
                    },
                    getDomainRange: function() {
                        return this._domainDelta
                    },
                    getCodomainRange: function() {
                        return this._codomainDelta
                    },
                    translate: function(value) {
                        let ratio = (_Number(value) - this._domain1) / this._domainDelta;
                        this.inverted && (ratio = 1 - ratio);
                        return 0 <= ratio && ratio <= 1 ? this._codomain1 + ratio * this._codomainDelta : NaN
                    },
                    adjust: function(value) {
                        const ratio = (_Number(value) - this._domain1) / this._domainDelta;
                        let result = NaN;
                        if (ratio < 0) {
                            result = this._domain1
                        } else if (ratio > 1) {
                            result = this._domain2
                        } else if (0 <= ratio && ratio <= 1) {
                            result = _Number(value)
                        }
                        return result
                    }
                }
            },
        87276:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/translators/translator2d.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Translator2D = void 0;
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _range = __webpack_require__( /*! ./range */ 21177);
                var _category_translator = _interopRequireDefault(__webpack_require__( /*! ./category_translator */ 46163));
                var _interval_translator = _interopRequireDefault(__webpack_require__( /*! ./interval_translator */ 93175));
                var _datetime_translator = _interopRequireDefault(__webpack_require__( /*! ./datetime_translator */ 75480));
                var _logarithmic_translator = _interopRequireDefault(__webpack_require__( /*! ./logarithmic_translator */ 1804));
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _math = __webpack_require__( /*! ../../core/utils/math */ 60810);
                var _date = _interopRequireDefault(__webpack_require__( /*! ../../core/utils/date */ 91198));

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const _abs = Math.abs;
                const CANVAS_PROP = ["width", "height", "left", "top", "bottom", "right"];
                const dummyTranslator = {
                    to(value) {
                        const coord = this._canvasOptions.startPoint + (this._options.conversionValue ? value : Math.round(value));
                        return coord > this._canvasOptions.endPoint ? this._canvasOptions.endPoint : coord
                    },
                    from(value) {
                        return value - this._canvasOptions.startPoint
                    }
                };
                const validateCanvas = function(canvas) {
                    (0, _iterator.each)(CANVAS_PROP, (function(_, prop) {
                        canvas[prop] = parseInt(canvas[prop]) || 0
                    }));
                    return canvas
                };

                function getCheckingMethodsAboutBreaks(inverted) {
                    return {
                        isStartSide: !inverted ? function(pos, breaks, start, end) {
                            return pos < breaks[0][start]
                        } : function(pos, breaks, start, end) {
                            return pos <= breaks[breaks.length - 1][end]
                        },
                        isEndSide: !inverted ? function(pos, breaks, start, end) {
                            return pos >= breaks[breaks.length - 1][end]
                        } : function(pos, breaks, start, end) {
                            return pos > breaks[0][start]
                        },
                        isInBreak: !inverted ? function(pos, br, start, end) {
                            return pos >= br[start] && pos < br[end]
                        } : function(pos, br, start, end) {
                            return pos > br[end] && pos <= br[start]
                        },
                        isBetweenBreaks: !inverted ? function(pos, br, prevBreak, start, end) {
                            return pos < br[start] && pos >= prevBreak[end]
                        } : function(pos, br, prevBreak, start, end) {
                            return pos >= br[end] && pos < prevBreak[start]
                        },
                        getLength: !inverted ? function(br) {
                            return br.length
                        } : function(br, lastBreak) {
                            return lastBreak.length - br.length
                        },
                        getBreaksSize: !inverted ? function(br) {
                            return br.cumulativeWidth
                        } : function(br, lastBreak) {
                            return lastBreak.cumulativeWidth - br.cumulativeWidth
                        }
                    }
                }
                const _Translator2d = function(businessRange, canvas, options) {
                    this.update(businessRange, canvas, options)
                };
                exports.Translator2D = _Translator2d;
                _Translator2d.prototype = {
                    constructor: _Translator2d,
                    reinit: function() {
                        const that = this;
                        const options = that._options;
                        const range = that._businessRange;
                        const categories = range.categories || [];
                        let script = {};
                        const canvasOptions = that._prepareCanvasOptions();
                        const visibleCategories = (0, _utils.getCategoriesInfo)(categories, range.minVisible, range.maxVisible).categories;
                        const categoriesLength = visibleCategories.length;
                        if (range.isEmpty()) {
                            script = dummyTranslator
                        } else {
                            switch (range.axisType) {
                                case "logarithmic":
                                    script = _logarithmic_translator.default;
                                    break;
                                case "semidiscrete":
                                    script = _interval_translator.default;
                                    canvasOptions.ratioOfCanvasRange = canvasOptions.canvasLength / (_date.default.addInterval(canvasOptions.rangeMaxVisible, options.interval) - canvasOptions.rangeMinVisible);
                                    break;
                                case "discrete":
                                    script = _category_translator.default;
                                    that._categories = categories;
                                    canvasOptions.interval = that._getDiscreteInterval(options.addSpiderCategory ? categoriesLength + 1 : categoriesLength, canvasOptions);
                                    that._categoriesToPoints = function(categories) {
                                        const categoriesToPoints = {};
                                        categories.forEach((function(item, i) {
                                            categoriesToPoints[item.valueOf()] = i
                                        }));
                                        return categoriesToPoints
                                    }(categories);
                                    if (categoriesLength) {
                                        canvasOptions.startPointIndex = that._categoriesToPoints[visibleCategories[0].valueOf()];
                                        that.visibleCategories = visibleCategories
                                    }
                                    break;
                                default:
                                    if ("datetime" === range.dataType) {
                                        script = _datetime_translator.default
                                    }
                            }
                        }(that._oldMethods || []).forEach((function(methodName) {
                            delete that[methodName]
                        }));
                        that._oldMethods = Object.keys(script);
                        (0, _extend.extend)(that, script);
                        that._conversionValue = options.conversionValue ? value => value : (value, skipRound) => skipRound ? value : Math.round(value);
                        that.sc = {};
                        that._checkingMethodsAboutBreaks = [getCheckingMethodsAboutBreaks(false), getCheckingMethodsAboutBreaks(that.isInverted())];
                        that._translateBreaks();
                        that._calculateSpecialValues()
                    },
                    _translateBreaks: function() {
                        const breaks = this._breaks;
                        const size = this._options.breaksSize;
                        let i;
                        let b;
                        let end;
                        let length;
                        if (void 0 === breaks) {
                            return
                        }
                        for (i = 0, length = breaks.length; i < length; i++) {
                            b = breaks[i];
                            end = this.translate(b.to);
                            b.end = end;
                            b.start = !b.gapSize ? !this.isInverted() ? end - size : end + size : end
                        }
                    },
                    _checkValueAboutBreaks: function(breaks, pos, start, end, methods) {
                        let i;
                        let length;
                        let prop = {
                            length: 0,
                            breaksSize: void 0,
                            inBreak: false
                        };
                        let br;
                        let prevBreak;
                        const lastBreak = breaks[breaks.length - 1];
                        if (methods.isStartSide(pos, breaks, start, end)) {
                            return prop
                        } else if (methods.isEndSide(pos, breaks, start, end)) {
                            return {
                                length: lastBreak.length,
                                breaksSize: lastBreak.cumulativeWidth,
                                inBreak: false
                            }
                        }
                        for (i = 0, length = breaks.length; i < length; i++) {
                            br = breaks[i];
                            prevBreak = breaks[i - 1];
                            if (methods.isInBreak(pos, br, start, end)) {
                                prop.inBreak = true;
                                prop.break = br;
                                break
                            }
                            if (prevBreak && methods.isBetweenBreaks(pos, br, prevBreak, start, end)) {
                                prop = {
                                    length: methods.getLength(prevBreak, lastBreak),
                                    breaksSize: methods.getBreaksSize(prevBreak, lastBreak),
                                    inBreak: false
                                };
                                break
                            }
                        }
                        return prop
                    },
                    isInverted: function() {
                        return !(this._options.isHorizontal ^ this._businessRange.invert)
                    },
                    _getDiscreteInterval: function(categoriesLength, canvasOptions) {
                        const correctedCategoriesCount = categoriesLength - (this._options.stick ? 1 : 0);
                        return correctedCategoriesCount > 0 ? canvasOptions.canvasLength / correctedCategoriesCount : canvasOptions.canvasLength
                    },
                    _prepareCanvasOptions() {
                        const businessRange = this._businessRange;
                        const canvasOptions = this._canvasOptions = function(range) {
                            let min = range.min;
                            let max = range.max;
                            let minVisible = range.minVisible;
                            let maxVisible = range.maxVisible;
                            const isLogarithmic = "logarithmic" === range.axisType;
                            if (isLogarithmic) {
                                maxVisible = (0, _utils.getLogExt)(maxVisible, range.base, range.allowNegatives, range.linearThreshold);
                                minVisible = (0, _utils.getLogExt)(minVisible, range.base, range.allowNegatives, range.linearThreshold);
                                min = (0, _utils.getLogExt)(min, range.base, range.allowNegatives, range.linearThreshold);
                                max = (0, _utils.getLogExt)(max, range.base, range.allowNegatives, range.linearThreshold)
                            }
                            return {
                                base: range.base,
                                rangeMin: min,
                                rangeMax: max,
                                rangeMinVisible: minVisible,
                                rangeMaxVisible: maxVisible
                            }
                        }(businessRange);
                        const canvas = this._canvas;
                        const breaks = this._breaks;
                        let length;
                        canvasOptions.startPadding = canvas.startPadding || 0;
                        canvasOptions.endPadding = canvas.endPadding || 0;
                        if (this._options.isHorizontal) {
                            canvasOptions.startPoint = canvas.left + canvasOptions.startPadding;
                            length = canvas.width;
                            canvasOptions.endPoint = canvas.width - canvas.right - canvasOptions.endPadding;
                            canvasOptions.invert = businessRange.invert
                        } else {
                            canvasOptions.startPoint = canvas.top + canvasOptions.startPadding;
                            length = canvas.height;
                            canvasOptions.endPoint = canvas.height - canvas.bottom - canvasOptions.endPadding;
                            canvasOptions.invert = !businessRange.invert
                        }
                        this.canvasLength = canvasOptions.canvasLength = canvasOptions.endPoint - canvasOptions.startPoint;
                        canvasOptions.rangeDoubleError = Math.pow(10, (0, _utils.getPower)(canvasOptions.rangeMax - canvasOptions.rangeMin) - (0, _utils.getPower)(length) - 2);
                        canvasOptions.ratioOfCanvasRange = canvasOptions.canvasLength / (canvasOptions.rangeMaxVisible - canvasOptions.rangeMinVisible);
                        if (void 0 !== breaks) {
                            canvasOptions.ratioOfCanvasRange = (canvasOptions.canvasLength - breaks[breaks.length - 1].cumulativeWidth) / (canvasOptions.rangeMaxVisible - canvasOptions.rangeMinVisible - breaks[breaks.length - 1].length)
                        }
                        return canvasOptions
                    },
                    updateCanvas: function(canvas) {
                        this._canvas = validateCanvas(canvas);
                        this.reinit()
                    },
                    updateBusinessRange: function(businessRange) {
                        const breaks = businessRange.breaks || [];
                        this._userBreaks = businessRange.userBreaks || [];
                        this._businessRange = function(businessRange) {
                            if (!(businessRange instanceof _range.Range)) {
                                businessRange = new _range.Range(businessRange)
                            }

                            function validate(valueSelector, baseValueSelector) {
                                if (!(0, _type.isDefined)(businessRange[valueSelector]) && (0, _type.isDefined)(businessRange[baseValueSelector])) {
                                    businessRange[valueSelector] = businessRange[baseValueSelector]
                                }
                            }
                            validate("minVisible", "min");
                            validate("maxVisible", "max");
                            return businessRange
                        }(businessRange);
                        this._breaks = breaks.length ? function(breaks, range) {
                            const transform = "logarithmic" === range.axisType ? function(value) {
                                return (0, _utils.getLogExt)(value, range.base)
                            } : function(value) {
                                return value
                            };
                            const array = [];
                            let br;
                            let transformFrom;
                            let transformTo;
                            let i;
                            const length = breaks.length;
                            let sum = 0;
                            for (i = 0; i < length; i++) {
                                br = breaks[i];
                                transformFrom = transform(br.from);
                                transformTo = transform(br.to);
                                sum += transformTo - transformFrom;
                                array.push({
                                    trFrom: transformFrom,
                                    trTo: transformTo,
                                    from: br.from,
                                    to: br.to,
                                    length: sum,
                                    cumulativeWidth: br.cumulativeWidth
                                })
                            }
                            return array
                        }(breaks, this._businessRange) : void 0;
                        this.reinit()
                    },
                    update: function(businessRange, canvas, options) {
                        this._options = (0, _extend.extend)(this._options || {}, options);
                        this._canvas = validateCanvas(canvas);
                        this.updateBusinessRange(businessRange)
                    },
                    getBusinessRange: function() {
                        return this._businessRange
                    },
                    getEventScale: function(zoomEvent) {
                        return zoomEvent.deltaScale || 1
                    },
                    getCanvasVisibleArea: function() {
                        return {
                            min: this._canvasOptions.startPoint,
                            max: this._canvasOptions.endPoint
                        }
                    },
                    _calculateSpecialValues: function() {
                        const that = this;
                        const canvasOptions = that._canvasOptions;
                        const startPoint = canvasOptions.startPoint - canvasOptions.startPadding;
                        const endPoint = canvasOptions.endPoint + canvasOptions.endPadding;
                        const range = that._businessRange;
                        const minVisible = range.minVisible;
                        const maxVisible = range.maxVisible;
                        const canvas_position_center_middle = startPoint + canvasOptions.canvasLength / 2;
                        let canvas_position_default;
                        if (minVisible < 0 && maxVisible > 0 && minVisible !== maxVisible) {
                            canvas_position_default = that.translate(0, 1)
                        }
                        if (!(0, _type.isDefined)(canvas_position_default)) {
                            const invert = range.invert ^ (minVisible < 0 && maxVisible <= 0);
                            if (that._options.isHorizontal) {
                                canvas_position_default = invert ? endPoint : startPoint
                            } else {
                                canvas_position_default = invert ? startPoint : endPoint
                            }
                        }
                        that.sc = {
                            canvas_position_default: canvas_position_default,
                            canvas_position_left: startPoint,
                            canvas_position_top: startPoint,
                            canvas_position_center: canvas_position_center_middle,
                            canvas_position_middle: canvas_position_center_middle,
                            canvas_position_right: endPoint,
                            canvas_position_bottom: endPoint,
                            canvas_position_start: canvasOptions.invert ? endPoint : startPoint,
                            canvas_position_end: canvasOptions.invert ? startPoint : endPoint
                        }
                    },
                    translateSpecialCase(value) {
                        return this.sc[value]
                    },
                    _calculateProjection: function(distance) {
                        const canvasOptions = this._canvasOptions;
                        return canvasOptions.invert ? canvasOptions.endPoint - distance : canvasOptions.startPoint + distance
                    },
                    _calculateUnProjection: function(distance) {
                        const canvasOptions = this._canvasOptions;
                        "datetime" === this._businessRange.dataType && (distance = Math.round(distance));
                        return canvasOptions.invert ? canvasOptions.rangeMaxVisible.valueOf() - distance : canvasOptions.rangeMinVisible.valueOf() + distance
                    },
                    getMinBarSize: function(minBarSize) {
                        const visibleArea = this.getCanvasVisibleArea();
                        const minValue = this.from(visibleArea.min + minBarSize);
                        return _abs(this.from(visibleArea.min) - (!(0, _type.isDefined)(minValue) ? this.from(visibleArea.max) : minValue))
                    },
                    checkMinBarSize: function(value, minShownValue) {
                        return _abs(value) < minShownValue ? value >= 0 ? minShownValue : -minShownValue : value
                    },
                    translate(bp, direction, skipRound) {
                        const specialValue = this.translateSpecialCase(bp);
                        if ((0, _type.isDefined)(specialValue)) {
                            return Math.round(specialValue)
                        }
                        if (isNaN(bp)) {
                            return null
                        }
                        return this.to(bp, direction, skipRound)
                    },
                    getInterval: function(interval) {
                        var _interval;
                        const canvasOptions = this._canvasOptions;
                        interval = null !== (_interval = interval) && void 0 !== _interval ? _interval : this._businessRange.interval;
                        if (interval) {
                            return Math.round(canvasOptions.ratioOfCanvasRange * interval)
                        }
                        return Math.round(canvasOptions.endPoint - canvasOptions.startPoint)
                    },
                    zoom(translate, scale, wholeRange) {
                        const canvasOptions = this._canvasOptions;
                        if (canvasOptions.rangeMinVisible.valueOf() === canvasOptions.rangeMaxVisible.valueOf() && 0 !== translate) {
                            return this.zoomZeroLengthRange(translate, scale)
                        }
                        const startPoint = canvasOptions.startPoint;
                        const endPoint = canvasOptions.endPoint;
                        const isInverted = this.isInverted();
                        let newStart = (startPoint + translate) / scale;
                        let newEnd = (endPoint + translate) / scale;
                        wholeRange = wholeRange || {};
                        const minPoint = this.to(isInverted ? wholeRange.endValue : wholeRange.startValue);
                        const maxPoint = this.to(isInverted ? wholeRange.startValue : wholeRange.endValue);
                        let min;
                        let max;
                        if (minPoint > newStart) {
                            newEnd -= newStart - minPoint;
                            newStart = minPoint;
                            min = isInverted ? wholeRange.endValue : wholeRange.startValue
                        }
                        if (maxPoint < newEnd) {
                            newStart -= newEnd - maxPoint;
                            newEnd = maxPoint;
                            max = isInverted ? wholeRange.startValue : wholeRange.endValue
                        }
                        if (maxPoint - minPoint < newEnd - newStart) {
                            newStart = minPoint;
                            newEnd = maxPoint
                        }
                        translate = (endPoint - startPoint) * newStart / (newEnd - newStart) - startPoint;
                        scale = (startPoint + translate) / newStart || 1;
                        min = (0, _type.isDefined)(min) ? min : (0, _math.adjust)(this.from(newStart, 1));
                        max = (0, _type.isDefined)(max) ? max : (0, _math.adjust)(this.from(newEnd, -1));
                        if (scale <= 1) {
                            min = this._correctValueAboutBreaks(min, 1 === scale ? translate : -1);
                            max = this._correctValueAboutBreaks(max, 1 === scale ? translate : 1)
                        }
                        if (min > max) {
                            min = min > wholeRange.endValue ? wholeRange.endValue : min;
                            max = max < wholeRange.startValue ? wholeRange.startValue : max
                        } else {
                            min = min < wholeRange.startValue ? wholeRange.startValue : min;
                            max = max > wholeRange.endValue ? wholeRange.endValue : max
                        }
                        return {
                            min: min,
                            max: max,
                            translate: (0, _math.adjust)(translate),
                            scale: (0, _math.adjust)(scale)
                        }
                    },
                    _correctValueAboutBreaks(value, direction) {
                        const br = this._userBreaks.filter(br => value >= br.from && value <= br.to);
                        if (br.length) {
                            return direction > 0 ? br[0].to : br[0].from
                        } else {
                            return value
                        }
                    },
                    zoomZeroLengthRange(translate, scale) {
                        const canvasOptions = this._canvasOptions;
                        const min = canvasOptions.rangeMin;
                        const max = canvasOptions.rangeMax;
                        const correction = (max.valueOf() !== min.valueOf() ? max.valueOf() - min.valueOf() : _abs(canvasOptions.rangeMinVisible.valueOf() - min.valueOf())) / canvasOptions.canvasLength;
                        const isDateTime = (0, _type.isDate)(max) || (0, _type.isDate)(min);
                        const isLogarithmic = "logarithmic" === this._businessRange.axisType;
                        let newMin = canvasOptions.rangeMinVisible.valueOf() - correction;
                        let newMax = canvasOptions.rangeMaxVisible.valueOf() + correction;
                        newMin = isLogarithmic ? (0, _math.adjust)((0, _utils.raiseToExt)(newMin, canvasOptions.base)) : isDateTime ? new Date(newMin) : newMin;
                        newMax = isLogarithmic ? (0, _math.adjust)((0, _utils.raiseToExt)(newMax, canvasOptions.base)) : isDateTime ? new Date(newMax) : newMax;
                        return {
                            min: newMin,
                            max: newMax,
                            translate: translate,
                            scale: scale
                        }
                    },
                    getMinScale: function(zoom) {
                        const {
                            dataType: dataType,
                            interval: interval
                        } = this._businessRange;
                        if ("datetime" === dataType && 1 === interval) {
                            return this.getDateTimeMinScale(zoom)
                        }
                        return zoom ? 1.1 : .9
                    },
                    getDateTimeMinScale(zoom) {
                        const canvasOptions = this._canvasOptions;
                        let length = canvasOptions.canvasLength / canvasOptions.ratioOfCanvasRange;
                        length += (parseInt(.1 * length) || 1) * (zoom ? -2 : 2);
                        return canvasOptions.canvasLength / (Math.max(length, 1) * canvasOptions.ratioOfCanvasRange)
                    },
                    getScale: function(val1, val2) {
                        const canvasOptions = this._canvasOptions;
                        if (canvasOptions.rangeMax === canvasOptions.rangeMin) {
                            return 1
                        }
                        val1 = (0, _type.isDefined)(val1) ? this.fromValue(val1) : canvasOptions.rangeMin;
                        val2 = (0, _type.isDefined)(val2) ? this.fromValue(val2) : canvasOptions.rangeMax;
                        return (canvasOptions.rangeMax - canvasOptions.rangeMin) / Math.abs(val1 - val2)
                    },
                    isValid: function(value) {
                        const co = this._canvasOptions;
                        value = this.fromValue(value);
                        return null !== value && !isNaN(value) && value.valueOf() + co.rangeDoubleError >= co.rangeMin && value.valueOf() - co.rangeDoubleError <= co.rangeMax
                    },
                    getCorrectValue: function(value, direction) {
                        const that = this;
                        const breaks = that._breaks;
                        let prop;
                        value = that.fromValue(value);
                        if (that._breaks) {
                            prop = that._checkValueAboutBreaks(breaks, value, "trFrom", "trTo", that._checkingMethodsAboutBreaks[0]);
                            if (true === prop.inBreak) {
                                return that.toValue(direction > 0 ? prop.break.trTo : prop.break.trFrom)
                            }
                        }
                        return that.toValue(value)
                    },
                    to: function(bp, direction, skipRound) {
                        const range = this.getBusinessRange();
                        if ((0, _type.isDefined)(range.maxVisible) && (0, _type.isDefined)(range.minVisible) && range.maxVisible.valueOf() === range.minVisible.valueOf()) {
                            if (!(0, _type.isDefined)(bp) || range.maxVisible.valueOf() !== bp.valueOf()) {
                                return null
                            }
                            return this.translateSpecialCase(0 === bp && this._options.shiftZeroValue ? "canvas_position_default" : "canvas_position_middle")
                        }
                        bp = this.fromValue(bp);
                        const that = this;
                        const canvasOptions = that._canvasOptions;
                        const breaks = that._breaks;
                        let prop = {
                            length: 0
                        };
                        let commonBreakSize = 0;
                        if (void 0 !== breaks) {
                            prop = that._checkValueAboutBreaks(breaks, bp, "trFrom", "trTo", that._checkingMethodsAboutBreaks[0]);
                            commonBreakSize = (0, _type.isDefined)(prop.breaksSize) ? prop.breaksSize : 0
                        }
                        if (true === prop.inBreak) {
                            if (direction > 0) {
                                return prop.break.start
                            } else if (direction < 0) {
                                return prop.break.end
                            } else {
                                return null
                            }
                        }
                        return that._conversionValue(that._calculateProjection((bp - canvasOptions.rangeMinVisible - prop.length) * canvasOptions.ratioOfCanvasRange + commonBreakSize), skipRound)
                    },
                    from: function(pos, direction) {
                        const that = this;
                        const breaks = that._breaks;
                        let prop = {
                            length: 0
                        };
                        const canvasOptions = that._canvasOptions;
                        const startPoint = canvasOptions.startPoint;
                        let commonBreakSize = 0;
                        if (void 0 !== breaks) {
                            prop = that._checkValueAboutBreaks(breaks, pos, "start", "end", that._checkingMethodsAboutBreaks[1]);
                            commonBreakSize = (0, _type.isDefined)(prop.breaksSize) ? prop.breaksSize : 0
                        }
                        if (true === prop.inBreak) {
                            if (direction > 0) {
                                return that.toValue(prop.break.trTo)
                            } else if (direction < 0) {
                                return that.toValue(prop.break.trFrom)
                            } else {
                                return null
                            }
                        }
                        return that.toValue(that._calculateUnProjection((pos - startPoint - commonBreakSize) / canvasOptions.ratioOfCanvasRange + prop.length))
                    },
                    isValueProlonged: false,
                    getRange: function() {
                        return [this.toValue(this._canvasOptions.rangeMin), this.toValue(this._canvasOptions.rangeMax)]
                    },
                    getScreenRange: function() {
                        return [this._canvasOptions.startPoint, this._canvasOptions.endPoint]
                    },
                    add: function(value, diff, dir) {
                        return this._add(value, diff, (this._businessRange.invert ? -1 : 1) * dir)
                    },
                    _add: function(value, diff, coeff) {
                        return this.toValue(this.fromValue(value) + diff * coeff)
                    },
                    fromValue: function(value) {
                        return null !== value ? Number(value) : null
                    },
                    toValue: function(value) {
                        return null !== value ? Number(value) : null
                    },
                    ratioOfCanvasRange() {
                        return this._canvasOptions.ratioOfCanvasRange
                    },
                    convert: value => value,
                    getRangeByMinZoomValue(minZoom, visualRange) {
                        if (visualRange.minVisible + minZoom <= this._businessRange.max) {
                            return [visualRange.minVisible, visualRange.minVisible + minZoom]
                        } else {
                            return [visualRange.maxVisible - minZoom, visualRange.maxVisible]
                        }
                    }
                }
            },
        15584:
            /*!*************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map.js ***!
              \*************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _tree_map = (obj = __webpack_require__( /*! ./tree_map/tree_map */ 4080), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _tree_map.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        4815:
            /*!*****************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/api.js ***!
              \*****************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _tree_map = _interopRequireDefault(__webpack_require__( /*! ./tree_map.base */ 49983));
                var _node = _interopRequireDefault(__webpack_require__( /*! ./node */ 21168));
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const proto = _tree_map.default.prototype;
                const nodeProto = _node.default.prototype;
                proto._eventsMap.onNodesInitialized = {
                    name: "nodesInitialized"
                };
                proto._eventsMap.onNodesRendering = {
                    name: "nodesRendering"
                };
                proto._createProxyType = function() {
                    const that = this;
                    let nodes;
                    Proxy.prototype = {
                        constructor: Proxy,
                        getParent: function() {
                            return nodes[this._id].parent.proxy || null
                        },
                        getChild: function(index) {
                            const _nodes = nodes[this._id].nodes;
                            return _nodes ? _nodes[index].proxy : null
                        },
                        getChildrenCount: function() {
                            const _nodes = nodes[this._id].nodes;
                            return _nodes ? _nodes.length : 0
                        },
                        getAllChildren: function() {
                            const _nodes = nodes[this._id].nodes;
                            let i;
                            const ii = _nodes && _nodes.length;
                            const list = [];
                            for (i = 0; i < ii; ++i) {
                                list.push(_nodes[i].proxy)
                            }
                            return list
                        },
                        getAllNodes: function() {
                            const list = [];
                            ! function collectNodes(node, list) {
                                const nodes = node.nodes;
                                let i;
                                const ii = nodes && nodes.length;
                                for (i = 0; i < ii; ++i) {
                                    list.push(nodes[i].proxy);
                                    collectNodes(nodes[i], list)
                                }
                            }(nodes[this._id], list);
                            return list
                        },
                        isLeaf: function() {
                            return !nodes[this._id].isNode()
                        },
                        isActive: function() {
                            return nodes[this._id].isActive()
                        },
                        value: function(arg) {
                            const node = nodes[this._id];
                            let result;
                            if (void 0 !== arg) {
                                ! function(node, value) {
                                    const delta = value - node.value;
                                    while (node) {
                                        node.value += delta;
                                        node = node.parent
                                    }
                                }(node, arg > 0 ? Number(arg) : 0);
                                change(node, ["TILING"]);
                                result = this
                            } else {
                                result = node.value
                            }
                            return result
                        },
                        label: function(arg) {
                            const node = nodes[this._id];
                            let result;
                            if (void 0 !== arg) {
                                node.customLabel = arg ? String(arg) : null;
                                change(node, ["LABELS"]);
                                result = this
                            } else {
                                result = node.customLabel || node.label
                            }
                            return result
                        },
                        customize: function(settings) {
                            const node = nodes[this._id];
                            if (settings) {
                                node._custom = node._custom || {};
                                (0, _extend2.extend)(true, node._custom, settings);
                                node._partialState = node._partialLabelState = null
                            }
                            change(node, ["TILES", "LABELS"]);
                            return this
                        },
                        resetCustomization: function() {
                            const node = nodes[this._id];
                            node._custom = node._partialState = node._partialLabelState = null;
                            change(node, ["TILES", "LABELS"]);
                            return this
                        }
                    };
                    that._extendProxyType(Proxy.prototype);

                    function Proxy(node) {
                        node.proxy = this;
                        this._id = node._id;
                        this.level = node.level;
                        this.index = node.index;
                        this.data = node.data
                    }
                    that._handlers.beginBuildNodes = function() {
                        nodes = that._nodes;
                        new Proxy(that._root)
                    };
                    that._handlers.buildNode = function(node) {
                        new Proxy(node)
                    };
                    that._handlers.endBuildNodes = function() {
                        that._eventTrigger("nodesInitialized", {
                            root: that._root.proxy
                        })
                    }
                };

                function change(node, codes) {
                    const ctx = node.ctx;
                    ctx.suspend();
                    ctx.change(codes);
                    ctx.resume()
                }
                proto._extendProxyType = _common.noop;
                const _resetNodes = proto._resetNodes;
                proto._resetNodes = function() {
                    _resetNodes.call(this);
                    this._eventTrigger("nodesRendering", {
                        node: this._topNode.proxy
                    })
                };
                const _updateStyles = nodeProto.updateStyles;
                nodeProto.updateStyles = function() {
                    const that = this;
                    _updateStyles.call(that);
                    if (that._custom) {
                        that._partialState = !that.ctx.forceReset && that._partialState || that.ctx.calculateState(that._custom);
                        (0, _extend2.extend)(true, that.state, that._partialState)
                    }
                };
                const _updateLabelStyle = nodeProto.updateLabelStyle;
                nodeProto.updateLabelStyle = function() {
                    const that = this;
                    const custom = that._custom;
                    _updateLabelStyle.call(that);
                    if (custom && custom.label) {
                        that._partialLabelState = !that.ctx.forceReset && that._partialLabelState || function(node, settings) {
                            const state = node.ctx.calculateLabelState(settings);
                            if ("visible" in settings) {
                                state.visible = !!settings.visible
                            }
                            return state
                        }(that, custom.label);
                        that.labelState = (0, _extend2.extend)(true, {}, that.labelState, that._partialLabelState)
                    }
                };
                proto.getRootNode = function() {
                    return this._root.proxy
                };
                proto.resetNodes = function() {
                    const context = this._context;
                    context.suspend();
                    context.change(["NODES_CREATE"]);
                    context.resume();
                    return this
                }
            },
        66831:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/colorizing.discrete.js ***!
              \*********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _colorizing = __webpack_require__( /*! ./colorizing */ 19910);

                function discreteColorizer(options, themeManager, root) {
                    const palette = themeManager.createPalette(options.palette, {
                        useHighlight: true,
                        extensionMode: options.paletteExtensionMode,
                        count: options.colorizeGroups ? getNodesCount(root) : getLeafsCount(root)
                    });
                    return (options.colorizeGroups ? discreteGroupColorizer : discreteLeafColorizer)(palette, root)
                }

                function getLeafsCount(root) {
                    const allNodes = root.nodes.slice();
                    let i;
                    const ii = allNodes.length;
                    let count = 0;
                    let node;
                    for (i = 0; i < ii; ++i) {
                        node = allNodes[i];
                        if (node.isNode()) {
                            count = Math.max(count, getLeafsCount(node))
                        } else {
                            count += 1
                        }
                    }
                    return count
                }

                function discreteLeafColorizer(palette) {
                    const colors = palette.generateColors();
                    return function(node) {
                        return colors[node.index]
                    }
                }

                function getNodesCount(root) {
                    const allNodes = root.nodes.slice();
                    let i;
                    const ii = allNodes.length;
                    let count = 0;
                    let node;
                    for (i = 0; i < ii; ++i) {
                        node = allNodes[i];
                        if (node.isNode()) {
                            count += getNodesCount(node) + 1
                        }
                    }
                    return count
                }

                function discreteGroupColorizer(palette, root) {
                    const colors = function(palette, root) {
                        const colors = {};
                        let allNodes = root.nodes.slice();
                        let i;
                        let ii = allNodes.length;
                        let node;
                        for (i = 0; i < ii; ++i) {
                            node = allNodes[i];
                            if (node.isNode()) {
                                allNodes = allNodes.concat(node.nodes);
                                ii = allNodes.length
                            } else if (!colors[node.parent._id]) {
                                colors[node.parent._id] = palette.getNextColor()
                            }
                        }
                        return colors
                    }(palette, root);
                    return function(node) {
                        return colors[node._id]
                    }
                }(0, _colorizing.addColorizer)("discrete", discreteColorizer);
                var _default = discreteColorizer;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        13652:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/colorizing.gradient.js ***!
              \*********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _colorizing = __webpack_require__( /*! ./colorizing */ 19910);
                const _min = Math.min;
                const _max = Math.max;

                function getRangeData(range) {
                    return [Number(range[0]) || 0, range[1] - range[0] || 1]
                }

                function createGuessingColorizer(getColor, getValue) {
                    const ranges = {};
                    return function(node) {
                        const parent = node.parent;
                        return getColor(node, ranges[parent._id] || (ranges[parent._id] = function(nodes, getValue) {
                            let i;
                            const ii = nodes.length;
                            const codes = [];
                            let code;
                            for (i = 0; i < ii; ++i) {
                                code = getValue(nodes[i]);
                                if (isFinite(code)) {
                                    codes.push(code)
                                }
                            }
                            return getRangeData([_min.apply(null, codes), _max.apply(null, codes)])
                        }(parent.nodes, getValue)))
                    }
                }

                function gradientColorizer(options, themeManager) {
                    const palette = themeManager.createGradientPalette(options.palette);
                    const getValue = (0, _colorizing.createColorCodeGetter)(options);
                    return "range" in options ? function(getColor, range) {
                        return function(node) {
                            return getColor(node, range)
                        }
                    }(getColor, getRangeData(options.range || [])) : createGuessingColorizer(getColor, getValue);

                    function getColor(node, arg) {
                        return palette.getColor((getValue(node) - arg[0]) / arg[1])
                    }
                }(0, _colorizing.addColorizer)("gradient", gradientColorizer);
                var _default = gradientColorizer;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        19910:
            /*!************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/colorizing.js ***!
              \************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.addColorizer = function(name, colorizer) {
                    colorizers[name] = colorizer
                };
                exports.createColorCodeGetter = function(options) {
                    return options.colorCodeField ? (colorCodeField = options.colorCodeField, function(node) {
                        return Number(node.data[colorCodeField])
                    }) : getValueAsColorCode;
                    var colorCodeField
                };
                exports.getColorizer = function(options, themeManager, root) {
                    const type = (0, _utils.normalizeEnum)(options.type || defaultColorizerName);
                    const colorizer = colorizers[type] && colorizers[type](options, themeManager, root);
                    return colorizer ? (options.colorizeGroups ? wrapGroupColorGetter : wrapLeafColorGetter)(colorizer) : _common.noop
                };
                exports.setDefaultColorizer = function(name) {
                    defaultColorizerName = name
                };
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                const colorizers = {};
                let defaultColorizerName;

                function wrapLeafColorGetter(getter) {
                    return function(node) {
                        return !node.isNode() ? getter(node) : void 0
                    }
                }

                function wrapGroupColorGetter(getter) {
                    return function(node) {
                        const parent = !node.isNode() && node.parent;
                        return parent ? parent._groupColor = parent._groupColor || getter(parent) : void 0
                    }
                }

                function getValueAsColorCode(node) {
                    return node.value
                }
            },
        73675:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/colorizing.range.js ***!
              \******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _colorizing = __webpack_require__( /*! ./colorizing */ 19910);

                function rangeColorizer(options, themeManager) {
                    const range = options.range || [];
                    const palette = themeManager.createDiscretePalette(options.palette, range.length - 1);
                    const getValue = (0, _colorizing.createColorCodeGetter)(options);
                    return function(node) {
                        return palette.getColor(function(value, items) {
                            let start = 0;
                            let end = items.length - 1;
                            let index = -1;
                            let middle;
                            if (items[start] <= value && value <= items[end]) {
                                if (value === items[end]) {
                                    index = end - 1
                                } else {
                                    while (end - start > 1) {
                                        middle = start + end >> 1;
                                        if (value < items[middle]) {
                                            end = middle
                                        } else {
                                            start = middle
                                        }
                                    }
                                    index = start
                                }
                            }
                            return index
                        }(getValue(node), range))
                    }
                }(0, _colorizing.addColorizer)("range", rangeColorizer);
                var _default = rangeColorizer;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        77707:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/common.js ***!
              \********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.buildRectAppearance = function(option) {
                    const border = option.border || {};
                    return {
                        fill: option.color,
                        opacity: option.opacity,
                        stroke: border.color,
                        "stroke-width": border.width,
                        "stroke-opacity": border.opacity,
                        hatching: option.hatching
                    }
                };
                exports.buildTextAppearance = function(options, filter) {
                    return {
                        attr: {
                            filter: filter
                        },
                        css: (0, _utils.patchFontOptions)(options.font)
                    }
                };
                var _utils = __webpack_require__( /*! ../core/utils */ 19157)
            },
        61104:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/drilldown.js ***!
              \***********************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _tree_map = (obj = __webpack_require__( /*! ./tree_map.base */ 49983), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _helpers = __webpack_require__( /*! ../core/helpers */ 3603);
                __webpack_require__( /*! ./api */ 4815);
                const proto = _tree_map.default.prototype;
                proto._eventsMap.onDrill = {
                    name: "drill"
                };
                (0, _helpers.expand)(proto, "_extendProxyType", (function(proto) {
                    const that = this;
                    proto.drillDown = function() {
                        that._drillToNode(this._id)
                    }
                }));
                (0, _helpers.expand)(proto, "_onNodesCreated", (function() {
                    this._drilldownIndex = -1
                }));
                proto._drillToNode = function(index) {
                    const that = this;
                    let node;
                    if (that._drilldownIndex !== index) {
                        node = that._nodes[index] || that._root;
                        if (node.nodes) {
                            that._drilldownIndex = index;
                            that._topNode = node;
                            that._context.suspend();
                            that._context.change(["MAX_DEPTH", "NODES_RESET"]);
                            that._context.resume();
                            that._eventTrigger("drill", {
                                node: node.proxy
                            })
                        }
                    }
                };
                proto.resetDrillDown = function() {
                    this._drillToNode(-1);
                    return this
                };
                proto.drillUp = function() {
                    this._drillToNode(this._topNode.parent._id || -1);
                    return this
                };
                proto.getCurrentNode = function() {
                    return this._topNode.proxy
                }
            },
        9888:
            /*!*******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/hover.js ***!
              \*******************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _tree_map = _interopRequireDefault(__webpack_require__( /*! ./tree_map.base */ 49983));
                var _node = _interopRequireDefault(__webpack_require__( /*! ./node */ 21168));
                var _helpers = __webpack_require__( /*! ../core/helpers */ 3603);
                var _common = __webpack_require__( /*! ./common */ 77707);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                __webpack_require__( /*! ./api */ 4815);
                __webpack_require__( /*! ./states */ 83469);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const proto = _tree_map.default.prototype;
                const nodeProto = _node.default.prototype;
                proto._eventsMap.onHoverChanged = {
                    name: "hoverChanged"
                };
                (0, _helpers.expand)(proto._handlers, "calculateAdditionalStates", (function(states, options) {
                    states[1] = options.hoverStyle ? (0, _common.buildRectAppearance)(options.hoverStyle) : {}
                }));
                _tree_map.default.addChange({
                    code: "HOVER_ENABLED",
                    handler: function() {
                        const hoverEnabled = (0, _utils.parseScalar)(this._getOption("hoverEnabled", true), true);
                        if (!hoverEnabled) {
                            this.clearHover()
                        }
                        this._hoverEnabled = hoverEnabled
                    },
                    isThemeDependent: true,
                    isOptionChange: true,
                    option: "hoverEnabled"
                });
                nodeProto.statesMap[1] = 1;
                nodeProto.additionalStates.push(1);
                (0, _helpers.expand)(proto, "_extendProxyType", (function(proto) {
                    const that = this;
                    proto.setHover = function() {
                        that._hoverNode(this._id)
                    };
                    proto.isHovered = function() {
                        return that._hoverIndex === this._id
                    }
                }));
                (0, _helpers.expand)(proto, "_onNodesCreated", (function() {
                    this._hoverIndex = -1
                }));
                (0, _helpers.expand)(proto, "_changeGroupSettings", (function() {
                    const that = this;
                    that._groupHoverEnabled = (0, _utils.parseScalar)(that._getOption("group").hoverEnabled, true);
                    if (!that._groupHoverEnabled) {
                        that.clearHover()
                    }
                }));
                proto._applyHoverState = function(index, state) {
                    ! function setNodeStateRecursive(node, code, state) {
                        const nodes = node.isNode() && node.nodes;
                        let i;
                        const ii = nodes && nodes.length;
                        node.setState(code, state);
                        for (i = 0; i < ii; ++i) {
                            setNodeStateRecursive(nodes[i], code, state)
                        }
                    }(this._nodes[index], 1, state);
                    this._eventTrigger("hoverChanged", {
                        node: this._nodes[index].proxy
                    })
                };
                proto._hoverNode = function(index) {
                    const that = this;
                    const currentIndex = that._hoverIndex;
                    if (that._hoverEnabled && currentIndex !== index) {
                        if (!that._groupHoverEnabled && index >= 0 && that._nodes[index].isNode()) {
                            that.clearHover();
                            return
                        }
                        that._context.suspend();
                        that._hoverIndex = -1;
                        if (currentIndex >= 0) {
                            that._applyHoverState(currentIndex, false)
                        }
                        that._hoverIndex = index;
                        if (index >= 0) {
                            that._applyHoverState(index, true)
                        }
                        that._context.resume()
                    }
                };
                proto.clearHover = function() {
                    this._hoverNode(-1)
                }
            },
        21168:
            /*!******************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/node.js ***!
              \******************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 13306);

                function Node() {}
                const updateTile = [function(content, attrs) {
                    content.smartAttr(attrs)
                }, function(content, attrs) {
                    content.outer.attr({
                        stroke: attrs.stroke,
                        "stroke-width": attrs["stroke-width"],
                        "stroke-opacity": attrs["stroke-opacity"]
                    });
                    content.inner.smartAttr({
                        fill: attrs.fill,
                        opacity: attrs.opacity,
                        hatching: attrs.hatching
                    })
                }];
                (0, _extend2.extend)(Node.prototype, {
                    value: 0,
                    isNode: function() {
                        return !!(this.nodes && this.level < this.ctx.maxLevel)
                    },
                    isActive: function() {
                        const ctx = this.ctx;
                        return this.level >= ctx.minLevel && this.level <= ctx.maxLevel
                    },
                    updateStyles: function() {
                        const isNode = Number(this.isNode());
                        this.state = this._buildState(this.ctx.settings[isNode].state, !isNode && this.color && {
                            fill: this.color
                        })
                    },
                    _buildState: function(state, extra) {
                        const base = (0, _extend2.extend)({}, state);
                        return extra ? (0, _extend2.extend)(base, extra) : base
                    },
                    updateLabelStyle: function() {
                        const settings = this.ctx.settings[Number(this.isNode())];
                        this.labelState = settings.labelState;
                        this.labelParams = settings.labelParams
                    },
                    _getState: function() {
                        return this.state
                    },
                    applyState: function() {
                        updateTile[Number(this.isNode())](this.tile, this._getState())
                    }
                });
                var _default = Node;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        74958:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/plain_data_source.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _tree_map = (obj = __webpack_require__( /*! ./tree_map.base */ 49983), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const proto = _tree_map.default.prototype;
                proto._optionChangesMap.idField = proto._optionChangesMap.parentField = "NODES_CREATE";
                proto._processDataSourceItems = function(items) {
                    let i;
                    const struct = {};
                    let currentItem;
                    const idField = this._getOption("idField", true);
                    const parentField = this._getOption("parentField", true);
                    let parentId;
                    const rootNodes = [];
                    let tmpItems;
                    let item;
                    if (!idField || !parentField || 0 === items.length) {
                        return {
                            items: items,
                            isPlain: false
                        }
                    }
                    for (i = 0; i < items.length; i++) {
                        currentItem = items[i];
                        parentId = currentItem[parentField];
                        if (parentId) {
                            struct[parentId] = struct[parentId] || {
                                items: []
                            };
                            tmpItems = struct[parentId].items
                        } else {
                            tmpItems = rootNodes
                        }
                        tmpItems.push(currentItem)
                    }! function treeFiller(context, items) {
                        let currentItem;
                        let i;
                        const struct = context.struct;
                        let id;
                        for (i = 0; i < items.length; i++) {
                            currentItem = items[i];
                            id = currentItem[context.idField];
                            if (struct[id]) {
                                currentItem.items = struct[id].items;
                                struct[id] = null;
                                treeFiller(context, currentItem.items)
                            }
                        }
                    }({
                        struct: struct,
                        idField: idField
                    }, rootNodes);
                    for (item in struct) {
                        struct[item] && rootNodes.push(struct[item])
                    }
                    return {
                        items: rootNodes,
                        isPlain: true
                    }
                }
            },
        13099:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/selection.js ***!
              \***********************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _tree_map = _interopRequireDefault(__webpack_require__( /*! ./tree_map.base */ 49983));
                var _node = _interopRequireDefault(__webpack_require__( /*! ./node */ 21168));
                var _helpers = __webpack_require__( /*! ../core/helpers */ 3603);
                var _common = __webpack_require__( /*! ./common */ 77707);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                __webpack_require__( /*! ./api */ 4815);
                __webpack_require__( /*! ./states */ 83469);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const proto = _tree_map.default.prototype;
                const nodeProto = _node.default.prototype;
                proto._eventsMap.onSelectionChanged = {
                    name: "selectionChanged"
                };
                (0, _helpers.expand)(proto._handlers, "calculateAdditionalStates", (function(states, options) {
                    states[2] = options.selectionStyle ? (0, _common.buildRectAppearance)(options.selectionStyle) : {}
                }));
                nodeProto.statesMap[2] = nodeProto.statesMap[3] = 2;
                nodeProto.additionalStates.push(2);
                (0, _helpers.expand)(proto, "_onNodesCreated", (function() {
                    this._selectionList.length = 0
                }));
                (0, _helpers.expand)(proto, "_extendProxyType", (function(proto) {
                    const that = this;
                    proto.select = function(state) {
                        that._selectNode(this._id, !!state)
                    };
                    proto.isSelected = function() {
                        return that._selectionList.includes(this._id)
                    };
                    that._selectionList = []
                }));
                _tree_map.default.addChange({
                    code: "SELECTION_MODE",
                    handler: function() {
                        const that = this;
                        const option = (0, _utils.normalizeEnum)(that._getOption("selectionMode", true));
                        const selectionList = that._selectionList;
                        let tmp;
                        const mode = "none" === option ? 0 : "multiple" === option ? 2 : 1;
                        if (1 === mode && selectionList.length > 1) {
                            tmp = selectionList.pop();
                            that.clearSelection();
                            selectionList.push(tmp)
                        } else if (0 === mode) {
                            that.clearSelection()
                        }
                        that._selectionMode = mode
                    },
                    isThemeDependent: true,
                    isOptionChange: true,
                    option: "selectionMode"
                });
                (0, _helpers.expand)(proto, "_applyTilesAppearance", (function() {
                    if (this._selectionList.length) {
                        ! function(nodes, selectionList) {
                            let i;
                            const ii = selectionList.length;
                            let node;
                            for (i = 0; i < ii; ++i) {
                                node = nodes[selectionList[i]];
                                tileToFront[Number(node.isNode())](node.tile)
                            }
                        }(this._nodes, this._selectionList)
                    }
                }));
                const tileToFront = [function(content) {
                    content.toForeground()
                }, function(content) {
                    content.outer.toForeground();
                    content.inner.toForeground()
                }];
                proto._applySelectionState = function(index, state) {
                    const node = this._nodes[index];
                    node.setState(2, state);
                    this._eventTrigger("selectionChanged", {
                        node: node.proxy
                    })
                };
                proto._selectNode = function(index, state) {
                    const that = this;
                    let selectionList;
                    let k;
                    let tmp;
                    if (0 !== that._selectionMode) {
                        that._context.suspend();
                        selectionList = that._selectionList;
                        k = selectionList.indexOf(index);
                        if (state && -1 === k) {
                            if (1 === that._selectionMode) {
                                if (selectionList.length) {
                                    tmp = selectionList.pop();
                                    that._applySelectionState(tmp, false)
                                }
                            }
                            selectionList.push(index);
                            that._applySelectionState(index, true)
                        } else if (!state && k >= 0) {
                            selectionList.splice(k, 1);
                            that._applySelectionState(index, false)
                        }
                        that._context.resume()
                    }
                };
                proto.clearSelection = function() {
                    const that = this;
                    const selectionList = that._selectionList;
                    let i;
                    const ii = selectionList.length;
                    if (0 !== that._selectionMode) {
                        that._context.suspend();
                        for (i = 0; i < ii; ++i) {
                            that._applySelectionState(selectionList[i], false)
                        }
                        selectionList.length = 0;
                        that._context.resume()
                    }
                }
            },
        83469:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/states.js ***!
              \********************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _tree_map = _interopRequireDefault(__webpack_require__( /*! ./tree_map.base */ 49983));
                var _node = _interopRequireDefault(__webpack_require__( /*! ./node */ 21168));
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 13306);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const proto = _tree_map.default.prototype;
                const nodeProto = _node.default.prototype;
                const handlers = proto._handlers;
                const _calculateState = handlers.calculateState;
                const _buildState = nodeProto._buildState;
                handlers.calculateState = function(options) {
                    const states = {
                        0: _calculateState(options)
                    };
                    handlers.calculateAdditionalStates(states, options);
                    return states
                };
                handlers.calculateAdditionalStates = _common.noop;
                nodeProto.code = 0;
                nodeProto.statesMap = {
                    0: 0
                };
                nodeProto.additionalStates = [];
                nodeProto._buildState = function(state, extra) {
                    const states = {
                        0: _buildState(state[0], extra)
                    };
                    if (this.additionalStates.length) {
                        ! function(states, base, source, list) {
                            let i;
                            const ii = list.length;
                            for (i = 0; i < ii; ++i) {
                                states[list[i]] = (0, _extend2.extend)({}, base, source[list[i]])
                            }
                        }(states, states[0], state, this.additionalStates)
                    }
                    return states
                };
                nodeProto._getState = function() {
                    return this.state[this.statesMap[this.code]]
                };
                nodeProto.setState = function(code, state) {
                    if (state) {
                        this.code |= code
                    } else {
                        this.code &= ~code
                    }
                    this.ctx.change(["TILES"])
                }
            },
        60642:
            /*!********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/tiling.js ***!
              \********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.addAlgorithm = function(name, callback) {
                    algorithms[name] = callback
                };
                exports.buildSidesData = function(rect, directions, _staticSideIndex) {
                    const staticSideIndex = void 0 !== _staticSideIndex ? _staticSideIndex : getStaticSideIndex(rect);
                    const variedSideIndex = 1 - staticSideIndex;
                    const staticSideDirection = directions[staticSideIndex];
                    const variedSideDirection = directions[variedSideIndex];
                    const staticSideIndexOffsets = directionToIndexOffsets[staticSideDirection];
                    const variedSideIndexOffsets = directionToIndexOffsets[variedSideDirection];
                    return {
                        staticSide: rect[2 + staticSideIndex] - rect[staticSideIndex],
                        variedSide: rect[2 + variedSideIndex] - rect[variedSideIndex],
                        static1: staticSideIndex + staticSideIndexOffsets[0],
                        static2: staticSideIndex + staticSideIndexOffsets[1],
                        varied1: variedSideIndex + variedSideIndexOffsets[0],
                        varied2: variedSideIndex + variedSideIndexOffsets[1],
                        staticDir: staticSideDirection,
                        variedDir: variedSideDirection
                    }
                };
                exports.calculateRectangles = function(nodes, head, totalRect, sidesData, rowData) {
                    let i;
                    let ii;
                    const variedSidePart = [0, 0, 0, 0];
                    const static1 = sidesData.static1;
                    const static2 = sidesData.static2;
                    let position = totalRect[static1];
                    const dir = sidesData.staticDir;
                    let side = sidesData.staticSide;
                    let sum = rowData.sum;
                    let rect;
                    let delta;
                    variedSidePart[sidesData.varied1] = totalRect[sidesData.varied1];
                    variedSidePart[sidesData.varied2] = totalRect[sidesData.varied1] + sidesData.variedDir * rowData.side;
                    for (i = head, ii = head + rowData.count; i < ii; ++i) {
                        rect = variedSidePart.slice();
                        rect[static1] = position;
                        delta = _round(side * nodes[i].value / sum) || 0;
                        sum -= nodes[i].value;
                        side -= delta;
                        position += dir * delta;
                        rect[static2] = position;
                        nodes[i].rect = rect
                    }
                    totalRect[sidesData.varied1] = variedSidePart[sidesData.varied2]
                };
                exports.getAlgorithm = function(value) {
                    return algorithms[(0, _utils.normalizeEnum)(value)] || (0, _type.isFunction)(value) && value || defaultAlgorithm
                };
                exports.getStaticSideIndex = void 0;
                exports.setDefaultAlgorithm = function(name) {
                    defaultAlgorithm = algorithms[name]
                };
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                const _round = Math.round;
                const algorithms = {};
                let defaultAlgorithm;
                const directionToIndexOffsets = {};
                directionToIndexOffsets[-1] = [2, 0];
                directionToIndexOffsets[1] = [0, 2];
                const getStaticSideIndex = function(rect) {
                    return rect[2] - rect[0] < rect[3] - rect[1] ? 0 : 1
                };
                exports.getStaticSideIndex = getStaticSideIndex
            },
        36061:
            /*!*******************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/tiling.rotated_slice_and_dice.js ***!
              \*******************************************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _tiling = __webpack_require__( /*! ./tiling */ 60642);
                const sliceAndDiceAlgorithm = (0, _tiling.getAlgorithm)("sliceanddice");
                (0, _tiling.addAlgorithm)("rotatedsliceanddice", (function(data) {
                    data.isRotated = !data.isRotated;
                    return sliceAndDiceAlgorithm.call(this, data)
                }))
            },
        56369:
            /*!***********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/tiling.slice_and_dice.js ***!
              \***********************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _tiling = __webpack_require__( /*! ./tiling */ 60642);

                function sliceAndDice(data) {
                    const items = data.items;
                    const sidesData = (0, _tiling.buildSidesData)(data.rect, data.directions, data.isRotated ? 1 : 0);
                    (0, _tiling.calculateRectangles)(items, 0, data.rect, sidesData, {
                        sum: data.sum,
                        count: items.length,
                        side: sidesData.variedSide
                    })
                }(0, _tiling.addAlgorithm)("sliceanddice", sliceAndDice);
                var _default = sliceAndDice;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        57200:
            /*!************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/tiling.squarified.base.js ***!
              \************************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = function(data, accumulate, isFixedStaticSide) {
                    const items = data.items;
                    const ii = items.length;
                    let i;
                    const context = {
                        sum: data.sum,
                        rect: data.rect,
                        directions: data.directions,
                        accumulate: accumulate
                    };
                    if (isFixedStaticSide) {
                        context.staticSideIndex = (0, _tiling.getStaticSideIndex)(context.rect)
                    }
                    items.sort(compare);
                    for (i = 0; i < ii;) {
                        i = doStep(items, i, context)
                    }
                };
                var _tiling = __webpack_require__( /*! ./tiling */ 60642);
                const _max = Math.max;
                const _round = Math.round;

                function compare(a, b) {
                    return b.value - a.value
                }

                function doStep(nodes, head, context) {
                    const sidesData = (0, _tiling.buildSidesData)(context.rect, context.directions, context.staticSideIndex);
                    const area = (rect = context.rect, (rect[2] - rect[0]) * (rect[3] - rect[1]));
                    var rect;
                    const rowData = area > 0 ? function(nodes, head, context) {
                        let bestAspectRatio = 1 / 0;
                        let nextAspectRatio;
                        let sum = 0;
                        let nextSum;
                        let i;
                        let j;
                        const ii = nodes.length;
                        const coeff = context.areaToValue / context.staticSide;
                        let totalAspectRatio;
                        for (i = head; i < ii;) {
                            nextSum = sum + nodes[i].value;
                            totalAspectRatio = context.staticSide / coeff / nextSum;
                            nextAspectRatio = 0;
                            for (j = head; j <= i; ++j) {
                                nextAspectRatio = context.accumulate(nextAspectRatio, (value = totalAspectRatio * nodes[j].value / nextSum, _max(value, 1 / value)), j - head + 1)
                            }
                            if (nextAspectRatio < bestAspectRatio) {
                                bestAspectRatio = nextAspectRatio;
                                sum = nextSum;
                                ++i
                            } else {
                                break
                            }
                        }
                        var value;
                        return {
                            sum: sum,
                            count: i - head,
                            side: _round(coeff * sum)
                        }
                    }(nodes, head, {
                        areaToValue: area / context.sum,
                        accumulate: context.accumulate,
                        staticSide: sidesData.staticSide
                    }) : {
                        sum: 1,
                        side: sidesData.variedSide,
                        count: nodes.length - head
                    };
                    (0, _tiling.calculateRectangles)(nodes, head, context.rect, sidesData, rowData);
                    context.sum -= rowData.sum;
                    return head + rowData.count
                }
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        46576:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/tiling.squarified.js ***!
              \*******************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _tilingSquarified = (obj = __webpack_require__( /*! ./tiling.squarified.base */ 57200), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _tiling = __webpack_require__( /*! ./tiling */ 60642);
                const _max = Math.max;

                function accumulate(total, current) {
                    return _max(total, current)
                }

                function squarified(data) {
                    return (0, _tilingSquarified.default)(data, accumulate, false)
                }(0, _tiling.addAlgorithm)("squarified", squarified);
                var _default = squarified;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        20957:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/tiling.strip.js ***!
              \**************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _tilingSquarified = (obj = __webpack_require__( /*! ./tiling.squarified.base */ 57200), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _tiling = __webpack_require__( /*! ./tiling */ 60642);

                function accumulate(total, current, count) {
                    return ((count - 1) * total + current) / count
                }

                function strip(data) {
                    return (0, _tilingSquarified.default)(data, accumulate, true)
                }(0, _tiling.addAlgorithm)("strip", strip);
                var _default = strip;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        2322:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/tooltip.js ***!
              \*********************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _helpers = __webpack_require__( /*! ../core/helpers */ 3603);
                var _tree_map = (obj = __webpack_require__( /*! ./tree_map.base */ 49983), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                __webpack_require__( /*! ./api */ 4815);
                var _tooltip = __webpack_require__( /*! ../core/tooltip */ 14371);
                const proto = _tree_map.default.prototype;
                (0, _helpers.expand)(proto, "_extendProxyType", (function(proto) {
                    const that = this;
                    proto.showTooltip = function(coords) {
                        that._showTooltip(this._id, coords)
                    }
                }));
                (0, _helpers.expand)(proto, "_onNodesCreated", (function() {
                    if (this._tooltipIndex >= 0) {
                        this._tooltip.hide()
                    }
                    this._tooltipIndex = -1
                }));
                (0, _helpers.expand)(proto, "_onTilingPerformed", (function() {
                    if (this._tooltipIndex >= 0) {
                        this._moveTooltip(this._nodes[this._tooltipIndex])
                    }
                }));

                function getCoords(coords, rect, renderer) {
                    const offset = renderer.getRootOffset();
                    return coords || rect && [(rect[0] + rect[2]) / 2 + offset.left, (rect[1] + rect[3]) / 2 + offset.top] || [-1e3, -1e3]
                }
                proto._showTooltip = function(index, coords) {
                    const that = this;
                    const tooltip = that._tooltip;
                    const node = that._nodes[index];
                    if (that._tooltipIndex === index) {
                        that._moveTooltip(node, coords);
                        return
                    }
                    const callback = result => {
                        if (void 0 === result) {
                            return
                        }
                        if (!result) {
                            tooltip.hide()
                        }
                        that._tooltipIndex = result ? index : -1
                    };
                    const xy = getCoords(coords, node.rect, this._renderer);
                    callback(tooltip.show({
                        value: node.value,
                        valueText: tooltip.formatValue(node.value),
                        node: node.proxy
                    }, {
                        x: xy[0],
                        y: xy[1],
                        offset: 0
                    }, {
                        node: node.proxy
                    }, void 0, callback))
                };
                proto._moveTooltip = function(node, coords) {
                    const xy = getCoords(coords, node.rect, this._renderer);
                    this._tooltip.move(xy[0], xy[1], 0)
                };
                proto.hideTooltip = function() {
                    if (this._tooltipIndex >= 0) {
                        this._tooltipIndex = -1;
                        this._tooltip.hide()
                    }
                };
                _tree_map.default.addPlugin(_tooltip.plugin)
            },
        66681:
            /*!*********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/tracker.js ***!
              \*********************************************************************/
            function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
                var _tree_map = (obj = __webpack_require__( /*! ./tree_map.base */ 49983), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _tracker = __webpack_require__( /*! ../components/tracker */ 88997);
                var _helpers = __webpack_require__( /*! ../core/helpers */ 3603);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                __webpack_require__( /*! ./api */ 4815);
                __webpack_require__( /*! ./hover */ 9888);
                __webpack_require__( /*! ./tooltip */ 2322);
                let dataKeyModifier = 0;
                const proto = _tree_map.default.prototype;
                proto._eventsMap.onClick = {
                    name: "click"
                };
                (0, _helpers.expand)(proto, "_initCore", (function() {
                    const that = this;
                    const dataKey = function() {
                        const dataKey = "__treemap_data_" + dataKeyModifier++;
                        return dataKey
                    }();
                    const getProxy = function(index) {
                        return that._nodes[index].proxy
                    };
                    that._tracker = new _tracker.Tracker({
                        widget: that,
                        root: that._renderer.root,
                        getNode: function(id) {
                            const proxy = getProxy(id);
                            const interactWithGroup = (0, _utils.parseScalar)(that._getOption("interactWithGroup", true));
                            return interactWithGroup && proxy.isLeaf() && proxy.getParent().isActive() ? proxy.getParent() : proxy
                        },
                        getData: function(e) {
                            const target = e.target;
                            return ("tspan" === target.tagName ? target.parentNode : target)[dataKey]
                        },
                        getProxy: getProxy,
                        click: function(e) {
                            that._eventTrigger("click", e)
                        }
                    });
                    that._handlers.setTrackerData = function(node, element) {
                        element.data(dataKey, node._id)
                    }
                }));
                (0, _helpers.expand)(proto, "_disposeCore", (function() {
                    this._tracker.dispose()
                }))
            },
        49983:
            /*!***************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/tree_map.base.js ***!
              \***************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _common = __webpack_require__( /*! ./common */ 77707);
                var _node = _interopRequireDefault(__webpack_require__( /*! ./node */ 21168));
                var _tiling = __webpack_require__( /*! ./tiling */ 60642);
                var _colorizing = __webpack_require__( /*! ./colorizing */ 19910);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _common2 = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _m_base_widget = _interopRequireDefault(__webpack_require__( /*! ../../__internal/viz/core/m_base_widget */ 55845));
                __webpack_require__( /*! ./tiling.squarified */ 46576);
                __webpack_require__( /*! ./colorizing.discrete */ 66831);
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _data_source = __webpack_require__( /*! ../core/data_source */ 1539);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const _max = Math.max;
                const directions = {
                    lefttoprightbottom: [1, 1],
                    leftbottomrighttop: [1, -1],
                    righttopleftbottom: [-1, 1],
                    rightbottomlefttop: [-1, -1]
                };
                (0, _tiling.setDefaultAlgorithm)("squarified");
                (0, _colorizing.setDefaultColorizer)("discrete");

                function pickPositiveInteger(val) {
                    return val > 0 ? Math.round(val) : 0
                }
                const dxTreeMap = _m_base_widget.default.inherit({
                    _handlers: {
                        beginBuildNodes: _common2.noop,
                        buildNode: _common2.noop,
                        endBuildNodes: _common2.noop,
                        setTrackerData: _common2.noop,
                        calculateState: function(options) {
                            return (0, _common.buildRectAppearance)(options)
                        }
                    },
                    _rootClass: "dxtm-tree-map",
                    _rootClassPrefix: "dxtm",
                    _getDefaultSize: function() {
                        return {
                            width: 400,
                            height: 400
                        }
                    },
                    _themeSection: "treeMap",
                    _fontFields: ["tile.label.font", "group.label.font"],
                    _init: function() {
                        const that = this;
                        that._rectOffsets = {};
                        that._handlers = Object.create(that._handlers);
                        that._context = {
                            suspend: function() {
                                if (!that._applyingChanges) {
                                    that._suspendChanges()
                                }
                            },
                            resume: function() {
                                if (!that._applyingChanges) {
                                    that._resumeChanges()
                                }
                            },
                            change: function(codes) {
                                that._change(codes)
                            },
                            settings: [{}, {}],
                            calculateState: that._handlers.calculateState,
                            calculateLabelState: _common.buildTextAppearance
                        };
                        that._root = that._topNode = {
                            nodes: []
                        };
                        that.callBase.apply(that, arguments)
                    },
                    _initialChanges: ["DATA_SOURCE"],
                    _initCore: function() {
                        const renderer = this._renderer;
                        this._createProxyType();
                        this._tilesGroup = renderer.g().linkOn(renderer.root, "tiles").linkAppend();
                        this._labelsGroup = renderer.g().linkOn(renderer.root, "labels").linkAppend()
                    },
                    _createProxyType: _common2.noop,
                    _disposeCore: function() {
                        this._filter && this._filter.dispose();
                        this._labelsGroup.linkOff();
                        this._tilesGroup.linkOff()
                    },
                    _applySize: function(rect) {
                        this._tilingRect = rect.slice();
                        this._change(["TILING"])
                    },
                    _optionChangesMap: {
                        dataSource: "DATA_SOURCE",
                        valueField: "NODES_CREATE",
                        childrenField: "NODES_CREATE",
                        colorField: "TILES",
                        colorizer: "TILES",
                        labelField: "LABELS",
                        tile: "TILE_SETTINGS",
                        group: "GROUP_SETTINGS",
                        maxDepth: "MAX_DEPTH",
                        layoutAlgorithm: "TILING",
                        layoutDirection: "TILING"
                    },
                    _themeDependentChanges: ["TILE_SETTINGS", "GROUP_SETTINGS", "MAX_DEPTH"],
                    _changeDataSource: function() {
                        const that = this;
                        that._isDataExpected = that._isSyncData = true;
                        that._updateDataSource();
                        that._isSyncData = false;
                        if (that._isDataExpected) {
                            that._suspendChanges()
                        }
                    },
                    _dataSourceChangedHandler: function() {
                        const that = this;
                        if (that._isDataExpected) {
                            that._isDataExpected = false;
                            that._change(["NODES_CREATE"]);
                            if (!that._isSyncData) {
                                that._resumeChanges()
                            }
                        } else {
                            that._requestChange(["NODES_CREATE"])
                        }
                    },
                    _optionChangesOrder: ["DATA_SOURCE", "TILE_SETTINGS", "GROUP_SETTINGS", "MAX_DEPTH"],
                    _change_DATA_SOURCE: function() {
                        this._changeDataSource()
                    },
                    _change_TILE_SETTINGS: function() {
                        this._changeTileSettings()
                    },
                    _change_GROUP_SETTINGS: function() {
                        this._changeGroupSettings()
                    },
                    _change_MAX_DEPTH: function() {
                        this._changeMaxDepth()
                    },
                    _customChangesOrder: ["NODES_CREATE", "NODES_RESET", "TILES", "LABELS", "TILING", "LABELS_LAYOUT"],
                    _change_NODES_CREATE: function() {
                        this._buildNodes()
                    },
                    _change_NODES_RESET: function() {
                        this._resetNodes()
                    },
                    _change_TILES: function() {
                        this._applyTilesAppearance()
                    },
                    _change_LABELS: function() {
                        this._applyLabelsAppearance()
                    },
                    _change_TILING: function() {
                        this._performTiling()
                    },
                    _change_LABELS_LAYOUT: function() {
                        this._performLabelsLayout()
                    },
                    _applyChanges: function() {
                        const that = this;
                        that.callBase.apply(that, arguments);
                        if (!that._isDataExpected) {
                            that._drawn()
                        }
                        that._context.forceReset = false
                    },
                    _buildNodes: function() {
                        const root = this._root = this._topNode = new _node.default;
                        root._id = 0;
                        root.parent = {};
                        root.data = {};
                        root.level = root.index = -1;
                        root.ctx = this._context;
                        root.label = null;
                        this._nodes = [root];
                        this._handlers.beginBuildNodes();
                        const processedData = this._processDataSourceItems(this._dataSourceItems() || []);
                        ! function traverseDataItems(root, dataItems, level, params) {
                            const nodes = [];
                            const allNodes = params.nodes;
                            let node;
                            let i;
                            const ii = dataItems.length;
                            let dataItem;
                            let totalValue = 0;
                            let items;
                            for (i = 0; i < ii; ++i) {
                                var _items;
                                dataItem = dataItems[i];
                                node = new _node.default;
                                node._id = allNodes.length;
                                node.ctx = params.ctx;
                                node.parent = root;
                                node.level = level;
                                node.index = nodes.length;
                                node.data = dataItem;
                                params.buildNode(node);
                                allNodes.push(node);
                                nodes.push(node);
                                items = dataItem[params.itemsField];
                                if (null !== (_items = items) && void 0 !== _items && _items.length) {
                                    traverseDataItems(node, items, level + 1, params)
                                }
                                if (dataItem[params.valueField] > 0) {
                                    node.value = Number(dataItem[params.valueField])
                                }
                                totalValue += node.value
                            }
                            root.nodes = nodes;
                            root.value = totalValue
                        }(root, processedData.items, 0, {
                            itemsField: !processedData.isPlain && this._getOption("childrenField", true) || "items",
                            valueField: this._getOption("valueField", true) || "value",
                            buildNode: this._handlers.buildNode,
                            ctx: this._context,
                            nodes: this._nodes
                        });
                        this._onNodesCreated();
                        this._handlers.endBuildNodes();
                        this._change(["NODES_RESET"])
                    },
                    _onNodesCreated: _common2.noop,
                    _processDataSourceItems: function(items) {
                        return {
                            items: items,
                            isPlain: false
                        }
                    },
                    _changeTileSettings: function() {
                        const that = this;
                        const options = that._getOption("tile");
                        const offsets = that._rectOffsets;
                        const borderWidth = pickPositiveInteger(options.border.width);
                        const edgeOffset = borderWidth / 2;
                        const innerOffset = 1 & borderWidth ? .5 : 0;
                        const labelOptions = options.label;
                        const settings = that._context.settings[0];
                        that._change(["TILES", "LABELS"]);
                        settings.state = that._handlers.calculateState(options);
                        that._filter = that._filter || that._renderer.shadowFilter("-50%", "-50%", "200%", "200%");
                        that._filter.attr(labelOptions.shadow);
                        that._calculateLabelSettings(settings, labelOptions, that._filter.id);
                        if (offsets.tileEdge !== edgeOffset || offsets.tileInner !== innerOffset) {
                            offsets.tileEdge = edgeOffset;
                            offsets.tileInner = innerOffset;
                            that._change(["TILING"])
                        }
                    },
                    _changeGroupSettings: function() {
                        const that = this;
                        const options = that._getOption("group");
                        const labelOptions = options.label;
                        const offsets = that._rectOffsets;
                        const borderWidth = pickPositiveInteger(options.border.width);
                        const edgeOffset = borderWidth / 2;
                        const innerOffset = 1 & borderWidth ? .5 : 0;
                        let headerHeight = 0;
                        const groupPadding = pickPositiveInteger(options.padding);
                        const settings = that._context.settings[1];
                        that._change(["TILES", "LABELS"]);
                        settings.state = that._handlers.calculateState(options);
                        that._calculateLabelSettings(settings, labelOptions);
                        if (options.headerHeight >= 0) {
                            headerHeight = pickPositiveInteger(options.headerHeight)
                        } else {
                            headerHeight = settings.labelParams.height + 2 * pickPositiveInteger(labelOptions.paddingTopBottom)
                        }
                        if (that._headerHeight !== headerHeight) {
                            that._headerHeight = headerHeight;
                            that._change(["TILING"])
                        }
                        if (that._groupPadding !== groupPadding) {
                            that._groupPadding = groupPadding;
                            that._change(["TILING"])
                        }
                        if (offsets.headerEdge !== edgeOffset || offsets.headerInner !== innerOffset) {
                            offsets.headerEdge = edgeOffset;
                            offsets.headerInner = innerOffset;
                            that._change(["TILING"])
                        }
                    },
                    _calculateLabelSettings: function(settings, options, filter) {
                        const bBox = this._getTextBBox(options.font);
                        const paddingLeftRight = pickPositiveInteger(options.paddingLeftRight);
                        const paddingTopBottom = pickPositiveInteger(options.paddingTopBottom);
                        const tileLabelOptions = this._getOption("tile.label");
                        const groupLabelOptions = this._getOption("group.label");
                        settings.labelState = (0, _common.buildTextAppearance)(options, filter);
                        settings.labelState.visible = !("visible" in options) || !!options.visible;
                        settings.labelParams = {
                            height: bBox.height,
                            rtlEnabled: this._getOption("rtlEnabled", true),
                            paddingTopBottom: paddingTopBottom,
                            paddingLeftRight: paddingLeftRight,
                            tileLabelWordWrap: tileLabelOptions.wordWrap,
                            tileLabelOverflow: tileLabelOptions.textOverflow,
                            groupLabelOverflow: groupLabelOptions.textOverflow
                        }
                    },
                    _changeMaxDepth: function() {
                        let maxDepth = this._getOption("maxDepth", true);
                        maxDepth = maxDepth >= 1 ? Math.round(maxDepth) : 1 / 0;
                        if (this._maxDepth !== maxDepth) {
                            this._maxDepth = maxDepth;
                            this._change(["NODES_RESET"])
                        }
                    },
                    _resetNodes: function() {
                        this._tilesGroup.clear();
                        this._renderer.initDefsElements();
                        this._context.forceReset = true;
                        this._context.minLevel = this._topNode.level + 1;
                        this._context.maxLevel = this._context.minLevel + this._maxDepth - 1;
                        this._change(["TILES", "LABELS", "TILING"])
                    },
                    _processNodes: function(context, process) {
                        ! function processNodes(context, root, process) {
                            const nodes = root.nodes;
                            let node;
                            let i;
                            const ii = nodes.length;
                            for (i = 0; i < ii; ++i) {
                                node = nodes[i];
                                process(context, node);
                                if (node.isNode()) {
                                    processNodes(context, node, process)
                                }
                            }
                        }(context, this._topNode, process)
                    },
                    _applyTilesAppearance: function() {
                        const colorizer = (0, _colorizing.getColorizer)(this._getOption("colorizer"), this._themeManager, this._topNode);
                        this._processNodes({
                            renderer: this._renderer,
                            group: this._tilesGroup,
                            setTrackerData: this._handlers.setTrackerData,
                            colorField: this._getOption("colorField", true) || "color",
                            getColor: colorizer
                        }, processTileAppearance)
                    },
                    _applyLabelsAppearance: function() {
                        this._labelsGroup.clear();
                        this._processNodes({
                            renderer: this._renderer,
                            group: this._labelsGroup,
                            setTrackerData: this._handlers.setTrackerData,
                            labelField: this._getOption("labelField", true) || "name"
                        }, processLabelAppearance);
                        this._change(["LABELS_LAYOUT"])
                    },
                    _performTiling: function() {
                        const context = {
                            algorithm: (0, _tiling.getAlgorithm)(this._getOption("layoutAlgorithm", true)),
                            directions: directions[String(this._getOption("layoutDirection", true)).toLowerCase()] || directions.lefttoprightbottom,
                            headerHeight: this._headerHeight,
                            groupPadding: this._groupPadding,
                            rectOffsets: this._rectOffsets
                        };
                        this._topNode.innerRect = this._tilingRect;
                        calculateRects(context, this._topNode);
                        this._processNodes(context, processTiling);
                        this._change(["LABELS_LAYOUT"]);
                        this._onTilingPerformed()
                    },
                    _onTilingPerformed: _common2.noop,
                    _performLabelsLayout: function() {
                        this._processNodes(null, processLabelsLayout)
                    },
                    _getTextBBox: function(fontOptions) {
                        const renderer = this._renderer;
                        const text = this._textForCalculations || renderer.text("0", 0, 0);
                        this._textForCalculations = text;
                        text.css((0, _utils.patchFontOptions)(fontOptions)).append(renderer.root);
                        const bBox = text.getBBox();
                        text.remove();
                        return bBox
                    }
                });
                const createTile = [function(context, node) {
                    const tile = context.renderer.simpleRect().append(context.group);
                    context.setTrackerData(node, tile);
                    return tile
                }, function(context, node) {
                    const outer = context.renderer.simpleRect().append(context.group);
                    const inner = context.renderer.simpleRect().append(context.group);
                    context.setTrackerData(node, inner);
                    return {
                        outer: outer,
                        inner: inner
                    }
                }];

                function processTileAppearance(context, node) {
                    node.color = node.data[context.colorField] || context.getColor(node) || node.parent.color;
                    node.updateStyles();
                    node.tile = !node.ctx.forceReset && node.tile || createTile[Number(node.isNode())](context, node);
                    node.applyState()
                }

                function processLabelAppearance(context, node) {
                    node.updateLabelStyle();
                    if (node.labelState.visible) {
                        ! function(context, currentNode, settings, params) {
                            let textData = currentNode.data[context.labelField];
                            currentNode.label = textData ? String(textData) : null;
                            textData = currentNode.customLabel || currentNode.label;
                            if (textData) {
                                currentNode.text = context.renderer.text(textData).attr(settings.attr).css(settings.css).append(context.group);
                                context.setTrackerData(currentNode, currentNode.text)
                            }
                        }(context, node, node.labelState, node.labelParams)
                    }
                }
                const emptyRect = [0, 0, 0, 0];

                function calculateRects(context, root) {
                    const nodes = root.nodes;
                    const items = [];
                    const rects = [];
                    let sum = 0;
                    let i;
                    const ii = items.length = rects.length = nodes.length;
                    for (i = 0; i < ii; ++i) {
                        sum += nodes[i].value;
                        items[i] = {
                            value: nodes[i].value,
                            i: i
                        }
                    }
                    if (sum > 0) {
                        context.algorithm({
                            items: items.slice(),
                            sum: sum,
                            rect: root.innerRect.slice(),
                            isRotated: 1 & nodes[0].level,
                            directions: context.directions
                        })
                    }
                    for (i = 0; i < ii; ++i) {
                        rects[i] = items[i].rect || emptyRect
                    }
                    root.rects = rects
                }

                function processTiling(context, node) {
                    let rect = node.parent.rects[node.index];
                    const rectOffsets = context.rectOffsets;
                    let headerHeight;
                    if (node.isNode()) {
                        setRectAttrs(node.tile.outer, buildTileRect(rect, node.parent.innerRect, rectOffsets.headerEdge, rectOffsets.headerInner));
                        rect = marginateRect(rect, context.groupPadding);
                        headerHeight = Math.min(context.headerHeight, rect[3] - rect[1]);
                        node.rect = [rect[0], rect[1], rect[2], rect[1] + headerHeight];
                        setRectAttrs(node.tile.inner, marginateRect(node.rect, rectOffsets.headerEdge));
                        rect[1] += headerHeight;
                        node.innerRect = rect;
                        calculateRects(context, node)
                    } else {
                        node.rect = rect;
                        setRectAttrs(node.tile, buildTileRect(rect, node.parent.innerRect, rectOffsets.tileEdge, rectOffsets.tileInner))
                    }
                }

                function marginateRect(rect, margin) {
                    return [rect[0] + margin, rect[1] + margin, rect[2] - margin, rect[3] - margin]
                }

                function buildTileRect(rect, outer, edgeOffset, innerOffset) {
                    return [rect[0] + (rect[0] === outer[0] ? edgeOffset : +innerOffset), rect[1] + (rect[1] === outer[1] ? edgeOffset : +innerOffset), rect[2] - (rect[2] === outer[2] ? edgeOffset : -innerOffset), rect[3] - (rect[3] === outer[3] ? edgeOffset : -innerOffset)]
                }

                function setRectAttrs(element, rect) {
                    element.attr({
                        x: rect[0],
                        y: rect[1],
                        width: _max(rect[2] - rect[0], 0),
                        height: _max(rect[3] - rect[1], 0)
                    })
                }

                function processLabelsLayout(context, node) {
                    if (node.text && node.labelState.visible) {
                        ! function(node, params) {
                            const rect = node.rect;
                            const text = node.text;
                            const bBox = text.getBBox();
                            const paddingLeftRight = params.paddingLeftRight;
                            const paddingTopBottom = params.paddingTopBottom;
                            const effectiveWidth = rect[2] - rect[0] - 2 * paddingLeftRight;
                            text.setMaxSize(effectiveWidth, rect[3] - rect[1] - paddingTopBottom, node.isNode() ? {
                                textOverflow: params.groupLabelOverflow,
                                wordWrap: "none"
                            } : {
                                textOverflow: params.tileLabelOverflow,
                                wordWrap: params.tileLabelWordWrap,
                                hideOverflowEllipsis: true
                            });
                            text.move(params.rtlEnabled ? rect[2] - paddingLeftRight - bBox.x - bBox.width : rect[0] + paddingLeftRight - bBox.x, rect[1] + paddingTopBottom - bBox.y)
                        }(node, node.labelParams)
                    }
                }(0, _component_registrator.default)("dxTreeMap", dxTreeMap);
                var _default = dxTreeMap;
                exports.default = _default;
                dxTreeMap.addPlugin(_data_source.plugin);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        4080:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/tree_map/tree_map.js ***!
              \**********************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _tree_map = (obj = __webpack_require__( /*! ./tree_map.base */ 49983), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                __webpack_require__( /*! ./tiling.squarified */ 46576);
                __webpack_require__( /*! ./tiling.strip */ 20957);
                __webpack_require__( /*! ./tiling.slice_and_dice */ 56369);
                __webpack_require__( /*! ./tiling.rotated_slice_and_dice */ 36061);
                __webpack_require__( /*! ./colorizing.discrete */ 66831);
                __webpack_require__( /*! ./colorizing.gradient */ 13652);
                __webpack_require__( /*! ./colorizing.range */ 73675);
                __webpack_require__( /*! ./api */ 4815);
                __webpack_require__( /*! ./hover */ 9888);
                __webpack_require__( /*! ./selection */ 13099);
                __webpack_require__( /*! ./tooltip */ 2322);
                __webpack_require__( /*! ./tracker */ 66681);
                __webpack_require__( /*! ./drilldown */ 61104);
                __webpack_require__( /*! ./plain_data_source */ 74958);
                var _export = __webpack_require__( /*! ../core/export */ 82454);
                var _title = __webpack_require__( /*! ../core/title */ 17384);
                var _loading_indicator = __webpack_require__( /*! ../core/loading_indicator */ 64758);
                var _default = _tree_map.default;
                exports.default = _default;
                _tree_map.default.addPlugin(_export.plugin);
                _tree_map.default.addPlugin(_title.plugin);
                _tree_map.default.addPlugin(_loading_indicator.plugin);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        34434:
            /*!**********************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/utils.js ***!
              \**********************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.prepareSegmentRectPoints = exports.floorCanvasDimensions = exports.areCanvasesDifferent = void 0;
                Object.defineProperty(exports, "refreshPaths", {
                    enumerable: true,
                    get: function() {
                        return _renderer.refreshPaths
                    }
                });
                var _renderer = __webpack_require__( /*! ./core/renderers/renderer */ 56453);
                var _iterator = __webpack_require__( /*! ../core/utils/iterator */ 95479);

                function _extends() {
                    _extends = Object.assign ? Object.assign.bind() : function(target) {
                        for (var i = 1; i < arguments.length; i++) {
                            var source = arguments[i];
                            for (var key in source) {
                                if (Object.prototype.hasOwnProperty.call(source, key)) {
                                    target[key] = source[key]
                                }
                            }
                        }
                        return target
                    };
                    return _extends.apply(this, arguments)
                }
                const {
                    floor: floor
                } = Math;
                exports.prepareSegmentRectPoints = function(left, top, width, height, borderOptions) {
                    const maxSW = ~~((width < height ? width : height) / 2);
                    const sw = borderOptions.width || 0;
                    const newSW = sw < maxSW ? sw : maxSW;
                    left += newSW / 2;
                    top += newSW / 2;
                    width -= newSW;
                    height -= newSW;
                    const right = left + width;
                    const bottom = top + height;
                    let points = [];
                    let segments = [];
                    let segmentSequence;
                    let visiblyOpt = 0;
                    let prevSegmentVisibility = 0;
                    const allSegment = {
                        top: [
                            [left, top],
                            [right, top]
                        ],
                        right: [
                            [right, top],
                            [right, bottom]
                        ],
                        bottom: [
                            [right, bottom],
                            [left, bottom]
                        ],
                        left: [
                            [left, bottom],
                            [left, top]
                        ]
                    };
                    (0, _iterator.each)(allSegment, (function(seg) {
                        const visibility = !!borderOptions[seg];
                        visiblyOpt = 2 * visiblyOpt + ~~visibility
                    }));
                    switch (visiblyOpt) {
                        case 13:
                        case 9:
                            segmentSequence = ["left", "top", "right", "bottom"];
                            break;
                        case 11:
                            segmentSequence = ["bottom", "left", "top", "right"];
                            break;
                        default:
                            segmentSequence = ["top", "right", "bottom", "left"]
                    }(0, _iterator.each)(segmentSequence, (function(_, seg) {
                        const segmentVisibility = !!borderOptions[seg];
                        if (!prevSegmentVisibility && segments.length) {
                            points.push(segments);
                            segments = []
                        }
                        if (segmentVisibility) {
                            (0, _iterator.each)(allSegment[seg].slice(prevSegmentVisibility), (function(_, segment) {
                                segments = segments.concat(segment)
                            }))
                        }
                        prevSegmentVisibility = ~~segmentVisibility
                    }));
                    segments.length && points.push(segments);
                    1 === points.length && (points = points[0]);
                    return {
                        points: points,
                        pathType: 15 === visiblyOpt ? "area" : "line"
                    }
                };
                exports.areCanvasesDifferent = function(canvas1, canvas2) {
                    const sizeLessThreshold = ["width", "height"].every(key => Math.abs(canvas1[key] - canvas2[key]) < 1);
                    const canvasCoordsIsEqual = ["left", "right", "top", "bottom"].every(key => canvas1[key] === canvas2[key]);
                    return !(sizeLessThreshold && canvasCoordsIsEqual)
                };
                exports.floorCanvasDimensions = function(canvas) {
                    return _extends({}, canvas, {
                        height: floor(canvas.height),
                        width: floor(canvas.width)
                    })
                }
            },
        81849:
            /*!***************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/vector_map.js ***!
              \***************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _vector_map = (obj = __webpack_require__( /*! ./vector_map/vector_map */ 13711), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _default = _vector_map.default;
                exports.default = _default;
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        17323:
            /*!***************************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/vector_map/control_bar/control_bar.js ***!
              \***************************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.ControlBar = ControlBar;
                var _utils = __webpack_require__( /*! ../../core/utils */ 19157);
                var _utils2 = __webpack_require__( /*! ./utils */ 77891);
                const _math = Math;
                const _min = _math.min;
                const _max = _math.max;
                const _round = _math.round;
                const _floor = _math.floor;
                const _sqrt = _math.sqrt;
                const parseHorizontalAlignment = (0, _utils.enumParser)(["left", "center", "right"]);
                const parseVerticalAlignment = (0, _utils.enumParser)(["top", "bottom"]);
                const SIZE_OPTIONS = {
                    bigCircleSize: 58,
                    smallCircleSize: 28,
                    buttonSize: 10,
                    arrowButtonOffset: 20,
                    incDecButtonSize: 11,
                    incButtonOffset: 66,
                    decButtonOffset: 227,
                    sliderLineStartOffset: 88.5,
                    sliderLineEndOffset: 205.5,
                    sliderLength: 20,
                    sliderWidth: 8,
                    trackerGap: 4
                };
                let COMMAND_TO_TYPE_MAP = {};
                COMMAND_TO_TYPE_MAP["command-reset"] = ResetCommand;
                COMMAND_TO_TYPE_MAP["command-move-up"] = COMMAND_TO_TYPE_MAP["command-move-right"] = COMMAND_TO_TYPE_MAP["command-move-down"] = COMMAND_TO_TYPE_MAP["command-move-left"] = MoveCommand;
                COMMAND_TO_TYPE_MAP["command-zoom-in"] = COMMAND_TO_TYPE_MAP["command-zoom-out"] = ZoomCommand;
                COMMAND_TO_TYPE_MAP["command-zoom-drag"] = ZoomDragCommand;

                function ControlBar(parameters) {
                    this._params = parameters;
                    this._createElements(parameters.renderer, parameters.container, parameters.dataKey);
                    parameters.layoutControl.addItem(this);
                    this._subscribeToProjection(parameters.projection);
                    this._subscribeToTracker(parameters.tracker);
                    this._createCallbacks(parameters.projection)
                }
                ControlBar.prototype = {
                    constructor: ControlBar,
                    _flags: 0,
                    dispose: function() {
                        this._params.layoutControl.removeItem(this);
                        this._root.linkRemove().linkOff();
                        this._offProjection();
                        this._offTracker();
                        this._params = this._root = this._offProjection = this._offTracker = this._callbacks = null
                    },
                    _subscribeToProjection: function(projection) {
                        const that = this;
                        that._offProjection = projection.on({
                            engine: function() {
                                that._update()
                            },
                            zoom: updateZoom,
                            "max-zoom": function() {
                                that._zoomPartition = projection.getZoomScalePartition();
                                that._sliderUnitLength = that._sliderLineLength / that._zoomPartition;
                                updateZoom()
                            }
                        });

                        function updateZoom() {
                            that._adjustZoom(projection.getScaledZoom())
                        }
                    },
                    _subscribeToTracker: function(tracker) {
                        const that = this;
                        let isActive = false;
                        that._offTracker = tracker.on({
                            start: function(arg) {
                                isActive = "control-bar" === arg.data.name;
                                if (isActive) {
                                    that._processStart(arg.data.index, arg)
                                }
                            },
                            move: function(arg) {
                                if (isActive) {
                                    that._processMove(arg.data.index, arg)
                                }
                            },
                            end: function() {
                                if (isActive) {
                                    that._processEnd();
                                    isActive = false
                                }
                            }
                        })
                    },
                    _createCallbacks: function(projection) {
                        this._callbacks = {
                            reset: function(isCenter, isZoom) {
                                if (isCenter) {
                                    projection.setCenter(null)
                                }
                                if (isZoom) {
                                    projection.setZoom(null)
                                }
                            },
                            beginMove: function() {
                                projection.beginMoveCenter()
                            },
                            endMove: function() {
                                projection.endMoveCenter()
                            },
                            move: function(shift) {
                                projection.moveCenter(shift)
                            },
                            zoom: function(zoom) {
                                projection.setScaledZoom(zoom)
                            }
                        }
                    },
                    _createElements: function(renderer, container, dataKey) {
                        this._root = renderer.g().attr({
                            class: "dxm-control-bar"
                        }).linkOn(container, "control-bar");
                        const panControl = this._panControl = (0, _utils2.createVisibilityGroup)(renderer, this._root, "dxm-pan-control");
                        const zoomBar = this._zoomBar = (0, _utils2.createVisibilityGroup)(renderer, this._root, "dxm-zoom-bar");
                        const trackersPan = this._trackersPan = (0, _utils2.createTracker)(renderer, this._root);
                        const trackersZoom = this._trackersZoom = (0, _utils2.createTracker)(renderer, this._root);
                        this._createTrackersPan(renderer, dataKey, trackersPan);
                        this._createTrackersZoom(renderer, dataKey, trackersZoom);
                        this._createPanControl(renderer, dataKey, panControl);
                        this._createZoomBar(renderer, dataKey, zoomBar)
                    },
                    _createPanControl: function(renderer, dataKey, group) {
                        const options = SIZE_OPTIONS;
                        const size = options.buttonSize / 2;
                        const offset1 = options.arrowButtonOffset - size;
                        const offset2 = options.arrowButtonOffset;
                        const directionOptions = {
                            "stroke-linecap": "square",
                            fill: "none"
                        };
                        renderer.circle(0, 0, options.bigCircleSize / 2).append(group);
                        renderer.circle(0, 0, size).attr({
                            fill: "none"
                        }).append(group);
                        renderer.path([-size, -offset1, 0, -offset2, size, -offset1], "line").attr(directionOptions).append(group);
                        renderer.path([offset1, -size, offset2, 0, offset1, size], "line").attr(directionOptions).append(group);
                        renderer.path([size, offset1, 0, offset2, -size, offset1], "line").attr(directionOptions).append(group);
                        renderer.path([-offset1, size, -offset2, 0, -offset1, -size], "line").attr(directionOptions).append(group)
                    },
                    _createZoomBar: function(renderer, dataKey, group) {
                        const options = SIZE_OPTIONS;
                        const incDecButtonSize = options.incDecButtonSize / 2;
                        renderer.circle(0, options.incButtonOffset, options.smallCircleSize / 2).append(group);
                        renderer.path([
                            [-incDecButtonSize, options.incButtonOffset, incDecButtonSize, options.incButtonOffset],
                            [0, options.incButtonOffset - incDecButtonSize, 0, options.incButtonOffset + incDecButtonSize]
                        ], "area").append(group);
                        renderer.circle(0, options.decButtonOffset, options.smallCircleSize / 2).append(group);
                        renderer.path([-incDecButtonSize, options.decButtonOffset, incDecButtonSize, options.decButtonOffset], "area").append(group);
                        this._zoomLine = renderer.path([], "line").append(group);
                        this._zoomDrag = renderer.rect(_floor(-options.sliderLength / 2), _floor(options.sliderLineEndOffset - options.sliderWidth / 2), options.sliderLength, options.sliderWidth).append(group);
                        this._sliderLineLength = options.sliderLineEndOffset - options.sliderLineStartOffset
                    },
                    _createTrackersPan: function(renderer, dataKey, group) {
                        const options = SIZE_OPTIONS;
                        const size = _round((options.arrowButtonOffset - options.trackerGap) / 2);
                        const offset1 = options.arrowButtonOffset - size;
                        const offset2 = _round(_sqrt(options.bigCircleSize * options.bigCircleSize / 4 - size * size));
                        const size2 = offset2 - offset1;
                        renderer.rect(-size, -size, 2 * size, 2 * size).data(dataKey, {
                            index: "command-reset",
                            name: "control-bar"
                        }).append(group);
                        renderer.rect(-size, -offset2, 2 * size, size2).data(dataKey, {
                            index: "command-move-up",
                            name: "control-bar"
                        }).append(group);
                        renderer.rect(offset1, -size, size2, 2 * size).data(dataKey, {
                            index: "command-move-right",
                            name: "control-bar"
                        }).append(group);
                        renderer.rect(-size, offset1, 2 * size, size2).data(dataKey, {
                            index: "command-move-down",
                            name: "control-bar"
                        }).append(group);
                        renderer.rect(-offset2, -size, size2, 2 * size).data(dataKey, {
                            index: "command-move-left",
                            name: "control-bar"
                        }).append(group)
                    },
                    _createTrackersZoom: function(renderer, dataKey, group) {
                        const options = SIZE_OPTIONS;
                        renderer.circle(0, options.incButtonOffset, options.smallCircleSize / 2).data(dataKey, {
                            index: "command-zoom-in",
                            name: "control-bar"
                        }).append(group);
                        renderer.circle(0, options.decButtonOffset, options.smallCircleSize / 2).data(dataKey, {
                            index: "command-zoom-out",
                            name: "control-bar"
                        }).append(group);
                        renderer.rect(-2, options.sliderLineStartOffset - 2, 4, options.sliderLineEndOffset - options.sliderLineStartOffset + 4).css({
                            cursor: "default"
                        }).data(dataKey, {
                            index: "command-zoom-drag-line",
                            name: "control-bar"
                        }).append(group);
                        this._zoomDragTracker = renderer.rect(-options.sliderLength / 2, options.sliderLineEndOffset - options.sliderWidth / 2, options.sliderLength, options.sliderWidth).data(dataKey, {
                            index: "command-zoom-drag",
                            name: "control-bar"
                        }).append(group)
                    },
                    resize: function(size) {
                        if (this._isActive) {
                            this._root.attr({
                                visibility: null !== size ? null : "hidden"
                            })
                        }
                    },
                    getLayoutOptions: function() {
                        return this._isActive ? this._layoutOptions : null
                    },
                    locate: function(x, y) {
                        this._root.attr({
                            translateX: x + this._margin + 30.5,
                            translateY: y + this._margin + 30.5
                        })
                    },
                    _update: function() {
                        const that = this;
                        that._isActive = that._isEnabled && that._flags && that._params.projection.isInvertible();
                        const groupPan = [that._panControl, that._trackersPan];
                        const groupZoom = [that._zoomBar, that._trackersZoom];
                        if (that._isActive) {
                            that._root.linkAppend();
                            (0, _utils2.toggleDisplay)(groupPan, that._isPanVisible);
                            (0, _utils2.toggleDisplay)(groupZoom, that._isZoomVisible)
                        } else {
                            that._root.linkRemove()
                        }
                        that._processEnd();
                        that.updateLayout()
                    },
                    setInteraction: function(interaction) {
                        const that = this;
                        if ((0, _utils.parseScalar)(interaction.centeringEnabled, true)) {
                            that._flags |= 1
                        } else {
                            that._flags &= -2
                        }
                        if ((0, _utils.parseScalar)(interaction.zoomingEnabled, true)) {
                            that._flags |= 2
                        } else {
                            that._flags &= -3
                        }
                        that._update()
                    },
                    setOptions: function(options) {
                        const styleSvg = {
                            "stroke-width": options.borderWidth,
                            stroke: options.borderColor,
                            fill: options.color,
                            "fill-opacity": options.opacity
                        };
                        this._isEnabled = !!(0, _utils.parseScalar)(options.enabled, true);
                        this._margin = options.margin || 0;
                        this._layoutOptions = {
                            width: 2 * this._margin + 61,
                            height: 2 * this._margin + 274,
                            horizontalAlignment: parseHorizontalAlignment(options.horizontalAlignment, "left"),
                            verticalAlignment: parseVerticalAlignment(options.verticalAlignment, "top")
                        };
                        this._isPanVisible = !!(0, _utils.parseScalar)(options.panVisible, true);
                        this._isZoomVisible = !!(0, _utils.parseScalar)(options.zoomVisible, true);
                        this._panControl.attr(styleSvg);
                        this._zoomBar.attr(styleSvg);
                        this._update()
                    },
                    _adjustZoom: function(zoom) {
                        const start = SIZE_OPTIONS.sliderLineStartOffset;
                        const end = SIZE_OPTIONS.sliderLineEndOffset;
                        const h = SIZE_OPTIONS.sliderWidth;
                        this._zoomFactor = _max(_min(_round(zoom), this._zoomPartition), 0);
                        const transform = {
                            translateY: -_round(this._zoomFactor * this._sliderUnitLength)
                        };
                        const y = end - h / 2 + transform.translateY;
                        this._zoomLine.attr({
                            points: [
                                [0, start, 0, _max(start, y)],
                                [0, _min(end, y + h), 0, end]
                            ]
                        });
                        this._zoomDrag.attr(transform);
                        this._zoomDragTracker.attr(transform)
                    },
                    _applyZoom: function() {
                        this._callbacks.zoom(this._zoomFactor)
                    },
                    _processStart: function(command, arg) {
                        let commandType;
                        if (this._isActive) {
                            commandType = COMMAND_TO_TYPE_MAP[command];
                            this._command = commandType && commandType.flags & this._flags ? new commandType(this, command, arg) : null
                        }
                    },
                    _processMove: function(command, arg) {
                        this._command && this._command.update(command, arg)
                    },
                    _processEnd: function() {
                        this._command && this._command.finish();
                        this._command = null
                    }
                };

                function disposeCommand(command) {
                    delete command._owner;
                    command.update = function() {};
                    command.finish = function() {}
                }

                function ResetCommand(owner, command) {
                    this._owner = owner;
                    this._command = command
                }
                ResetCommand.flags = 3;
                ResetCommand.prototype.update = function(command) {
                    command !== this._command && disposeCommand(this)
                };
                ResetCommand.prototype.finish = function() {
                    const flags = this._owner._flags;
                    this._owner._callbacks.reset(!!(1 & flags), !!(2 & flags));
                    disposeCommand(this)
                };

                function MoveCommand(owner, command, arg) {
                    this._command = command;
                    let timeout = null;
                    let dx = 0;
                    let dy = 0;
                    switch (this._command) {
                        case "command-move-up":
                            dy = -10;
                            break;
                        case "command-move-right":
                            dx = 10;
                            break;
                        case "command-move-down":
                            dy = 10;
                            break;
                        case "command-move-left":
                            dx = -10
                    }
                    this._stop = function() {
                        clearTimeout(timeout);
                        owner._callbacks.endMove();
                        this._stop = owner = null;
                        return this
                    };
                    null;
                    owner._callbacks.beginMove();
                    ! function callback() {
                        owner._callbacks.move([dx, dy]);
                        timeout = setTimeout(callback, 100)
                    }()
                }
                MoveCommand.flags = 1;
                MoveCommand.prototype.update = function(command) {
                    this._command !== command && this.finish()
                };
                MoveCommand.prototype.finish = function() {
                    disposeCommand(this._stop())
                };

                function ZoomCommand(owner, command) {
                    this._owner = owner;
                    this._command = command;
                    let timeout = null;
                    const dZoom = "command-zoom-in" === this._command ? 1 : -1;
                    this._stop = function() {
                        clearTimeout(timeout);
                        this._stop = owner = null;
                        return this
                    };
                    ! function callback() {
                        owner._adjustZoom(owner._zoomFactor + dZoom);
                        timeout = setTimeout(callback, 150)
                    }()
                }
                ZoomCommand.flags = 2;
                ZoomCommand.prototype.update = function(command) {
                    this._command !== command && this.finish()
                };
                ZoomCommand.prototype.finish = function() {
                    this._owner._applyZoom();
                    disposeCommand(this._stop())
                };

                function ZoomDragCommand(owner, command, arg) {
                    this._owner = owner;
                    this._zoomFactor = owner._zoomFactor;
                    this._pos = arg.y
                }
                ZoomDragCommand.flags = 2;
                ZoomDragCommand.prototype.update = function(command, arg) {
                    const owner = this._owner;
                    owner._adjustZoom(this._zoomFactor + owner._zoomPartition * (this._pos - arg.y) / owner._sliderLineLength)
                };
                ZoomDragCommand.prototype.finish = function() {
                    this._owner._applyZoom();
                    disposeCommand(this)
                }
            },
        77891:
            /*!*********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/vector_map/control_bar/utils.js ***!
              \*********************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.toggleDisplay = exports.createVisibilityGroup = exports.createTracker = void 0;
                exports.createTracker = (renderer, root) => renderer.g().attr({
                    stroke: "none",
                    "stroke-width": 0,
                    fill: "#000000",
                    opacity: 1e-4
                }).css({
                    cursor: "pointer"
                }).append(root);
                exports.createVisibilityGroup = function(renderer, root) {
                    let className = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : "";
                    return renderer.g().attr({
                        class: className
                    }).append(root)
                };
                exports.toggleDisplay = (blocks, isVisible) => {
                    const style = isVisible ? {
                        display: "block"
                    } : {
                        display: "none"
                    };
                    blocks.map(item => item.css(style))
                }
            },
        93699:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/vector_map/data_exchanger.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.DataExchanger = DataExchanger;
                var _callbacks = (obj = __webpack_require__( /*! ../../core/utils/callbacks */ 44504), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;

                function DataExchanger() {
                    this._store = {}
                }
                DataExchanger.prototype = {
                    constructor: DataExchanger,
                    dispose: function() {
                        this._store = null;
                        return this
                    },
                    _get: function(category, name) {
                        const store = this._store[category] || (this._store[category] = {});
                        return store[name] || (store[name] = {
                            callbacks: (0, _callbacks.default)()
                        })
                    },
                    set: function(category, name, data) {
                        const item = this._get(category, name);
                        item.data = data;
                        item.callbacks.fire(data);
                        return this
                    },
                    bind: function(category, name, callback) {
                        const item = this._get(category, name);
                        item.callbacks.add(callback);
                        item.data && callback(item.data);
                        return this
                    },
                    unbind: function(category, name, callback) {
                        const item = this._get(category, name);
                        item.callbacks.remove(callback);
                        return this
                    }
                }
            },
        63832:
            /*!*****************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/vector_map/event_emitter.js ***!
              \*****************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.makeEventEmitter = function(target) {
                    const proto = target.prototype;
                    let name;
                    for (name in eventEmitterMethods) {
                        proto[name] = eventEmitterMethods[name]
                    }
                };
                var _callbacks = (obj = __webpack_require__( /*! ../../core/utils/callbacks */ 44504), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                const eventEmitterMethods = {
                    _initEvents: function() {
                        const names = this._eventNames;
                        let i;
                        const ii = names.length;
                        const events = this._events = {};
                        for (i = 0; i < ii; ++i) {
                            events[names[i]] = (0, _callbacks.default)()
                        }
                    },
                    _disposeEvents: function() {
                        const events = this._events;
                        let name;
                        for (name in events) {
                            events[name].empty()
                        }
                        this._events = null
                    },
                    on: function(handlers) {
                        const events = this._events;
                        let name;
                        for (name in handlers) {
                            events[name].add(handlers[name])
                        }
                        return function() {
                            for (name in handlers) {
                                events[name].remove(handlers[name])
                            }
                        }
                    },
                    _fire: function(name, arg) {
                        this._events[name].fire(arg)
                    }
                }
            },
        3797:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/vector_map/gesture_handler.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.GestureHandler = GestureHandler;
                const _ln = Math.log;
                const _LN2 = Math.LN2;

                function GestureHandler(params) {
                    this._projection = params.projection;
                    this._renderer = params.renderer;
                    this._x = this._y = 0;
                    this._subscribeToTracker(params.tracker)
                }
                GestureHandler.prototype = {
                    constructor: GestureHandler,
                    dispose: function() {
                        this._offTracker();
                        this._offTracker = null
                    },
                    _subscribeToTracker: function(tracker) {
                        const that = this;
                        let isActive = false;
                        that._offTracker = tracker.on({
                            start: function(arg) {
                                isActive = "control-bar" !== arg.data.name;
                                if (isActive) {
                                    that._processStart(arg)
                                }
                            },
                            move: function(arg) {
                                if (isActive) {
                                    that._processMove(arg)
                                }
                            },
                            end: function() {
                                if (isActive) {
                                    that._processEnd()
                                }
                            },
                            zoom: function(arg) {
                                that._processZoom(arg)
                            }
                        })
                    },
                    setInteraction: function(options) {
                        this._processEnd();
                        this._centeringEnabled = options.centeringEnabled;
                        this._zoomingEnabled = options.zoomingEnabled
                    },
                    _processStart: function(arg) {
                        if (this._centeringEnabled) {
                            this._x = arg.x;
                            this._y = arg.y;
                            this._projection.beginMoveCenter()
                        }
                    },
                    _processMove: function(arg) {
                        const that = this;
                        if (that._centeringEnabled) {
                            that._renderer.root.attr({
                                cursor: "move"
                            });
                            that._projection.moveCenter([that._x - arg.x, that._y - arg.y]);
                            that._x = arg.x;
                            that._y = arg.y
                        }
                    },
                    _processEnd: function() {
                        if (this._centeringEnabled) {
                            this._renderer.root.attr({
                                cursor: "default"
                            });
                            this._projection.endMoveCenter()
                        }
                    },
                    _processZoom: function(arg) {
                        const that = this;
                        let delta;
                        let screenPosition;
                        let coords;
                        if (that._zoomingEnabled) {
                            if (arg.delta) {
                                delta = arg.delta
                            } else if (arg.ratio) {
                                delta = _ln(arg.ratio) / _LN2
                            }
                            if (that._centeringEnabled) {
                                screenPosition = that._renderer.getRootOffset();
                                screenPosition = [arg.x - screenPosition.left, arg.y - screenPosition.top];
                                coords = that._projection.fromScreenPoint(screenPosition)
                            }
                            that._projection.changeScaledZoom(delta);
                            if (that._centeringEnabled) {
                                that._projection.setCenterByPoint(coords, screenPosition)
                            }
                        }
                    }
                }
            },
        39378:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/vector_map/layout.js ***!
              \**********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.LayoutControl = LayoutControl;
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                const _round = Math.round;
                const _min = Math.min;
                const _max = Math.max;
                const _each = _iterator.each;
                const horizontalAlignmentMap = {
                    left: 0,
                    center: 1,
                    right: 2
                };
                const verticalAlignmentMap = {
                    top: 0,
                    bottom: 1
                };

                function createCells(canvas, items) {
                    const hStep = (canvas.right - canvas.left) / 3;
                    const vStep = (canvas.bottom - canvas.top) / 2;
                    const h1 = canvas.left;
                    const h2 = _round(h1 + hStep);
                    const h3 = _round(h1 + hStep + hStep);
                    const h4 = canvas.right;
                    const v1 = canvas.top;
                    const v2 = _round(v1 + vStep);
                    const v3 = canvas.bottom;
                    const cells = [{
                        rect: [h1, v1, h2, v2]
                    }, {
                        rect: [h2, v1, h3, v2],
                        center: true
                    }, {
                        rect: [h3, v1, h4, v2],
                        horInversion: true
                    }, {
                        rect: [h1, v2, h2, v3],
                        verInversion: true
                    }, {
                        rect: [h2, v2, h3, v3],
                        center: true,
                        verInversion: true
                    }, {
                        rect: [h3, v2, h4, v3],
                        horInversion: true,
                        verInversion: true
                    }];
                    const itemsList = [
                        [],
                        [],
                        [],
                        [],
                        [],
                        []
                    ];
                    _each(items, (function(_, item) {
                        const options = item.getLayoutOptions();
                        if (options) {
                            itemsList[function(options) {
                                return 3 * verticalAlignmentMap[options.verticalAlignment] + horizontalAlignmentMap[options.horizontalAlignment]
                            }(options)].push({
                                item: item,
                                width: options.width,
                                height: options.height
                            })
                        }
                    }));
                    _each(cells, (function(i, cell) {
                        if (itemsList[i].length) {
                            cell.items = itemsList[i]
                        } else {
                            if (cell.center) {
                                cell.rect[0] = cell.rect[2] = (cell.rect[0] + cell.rect[2]) / 2
                            } else {
                                cell.rect[cell.horInversion ? 0 : 2] = cell.rect[cell.horInversion ? 2 : 0]
                            }
                            cell.rect[cell.verInversion ? 1 : 3] = cell.rect[cell.verInversion ? 3 : 1]
                        }
                    }));
                    return cells
                }

                function adjustCellsAndApplyLayout(cells, forceMode) {
                    let hasHiddenItems = false;
                    ! function(cells) {
                        _each([0, 1, 2, 3, 4, 5], (function(_, index) {
                            const cell = cells[index];
                            const otherCell = cells[(index + 3) % 6];
                            if (cell.items) {
                                if (!otherCell.items) {
                                    cell.rect[1] = _min(cell.rect[1], otherCell.rect[3]);
                                    cell.rect[3] = _max(cell.rect[3], otherCell.rect[1])
                                }
                            }
                        }));
                        _each([1, 4], (function(_, index) {
                            const cell = cells[index];
                            const otherCell1 = cells[index - 1];
                            const otherCell2 = cells[index + 1];
                            let size1;
                            let size2;
                            if (cell.items) {
                                if (!otherCell1.items && !otherCell2.items) {
                                    size1 = cell.rect[0] - otherCell1.rect[2];
                                    size2 = otherCell2.rect[0] - cell.rect[2];
                                    if (size1 > size2) {
                                        if (size1 / size2 >= 2) {
                                            cell.rect[0] -= size1;
                                            cell.right = true
                                        } else {
                                            cell.rect[0] -= size2;
                                            cell.rect[2] += size2
                                        }
                                    } else if (size2 / size1 >= 2) {
                                        cell.rect[2] += size2;
                                        cell.center = null
                                    } else {
                                        cell.rect[0] -= size1;
                                        cell.rect[2] += size1
                                    }
                                }
                            } else {
                                if (otherCell1.items) {
                                    otherCell1.rect[2] = (cell.rect[0] + cell.rect[2]) / 2
                                }
                                if (otherCell2.items) {
                                    otherCell2.rect[0] = (cell.rect[0] + cell.rect[2]) / 2
                                }
                            }
                        }))
                    }(cells);
                    _each(cells, (function(_, cell) {
                        if (cell.items) {
                            hasHiddenItems = function(cell, forceMode) {
                                const cellRect = cell.rect;
                                const cellWidth = cellRect[2] - cellRect[0];
                                const cellHeight = cellRect[3] - cellRect[1];
                                let xOffset = 0;
                                let yOffset = 0;
                                let currentHeight = 0;
                                let totalL = cellRect[2];
                                let totalT = cellRect[3];
                                let totalR = cellRect[0];
                                let totalB = cellRect[1];
                                const moves = [];
                                let hasHiddenItems = false;
                                _each(cell.items, (function(_, item) {
                                    if (item.width > cellWidth || item.height > cellHeight) {
                                        moves.push(null);
                                        hasHiddenItems = true;
                                        return forceMode || false
                                    }
                                    if (xOffset + item.width > cellWidth) {
                                        yOffset += currentHeight;
                                        xOffset = currentHeight = 0
                                    }
                                    if (yOffset + item.height > cellHeight) {
                                        moves.push(null);
                                        hasHiddenItems = true;
                                        return forceMode || false
                                    }
                                    currentHeight = _max(currentHeight, item.height);
                                    const dx = cell.horInversion ? cellRect[2] - item.width - xOffset : cellRect[0] + xOffset;
                                    const dy = cell.verInversion ? cellRect[3] - item.height - yOffset : cellRect[1] + yOffset;
                                    xOffset += item.width;
                                    totalL = _min(totalL, dx);
                                    totalT = _min(totalT, dy);
                                    totalR = _max(totalR, dx + item.width);
                                    totalB = _max(totalB, dy + item.height);
                                    moves.push([dx, dy])
                                }));
                                if (forceMode || !hasHiddenItems) {
                                    xOffset = 0;
                                    if (cell.right) {
                                        xOffset = cellRect[2] - cellRect[0] - totalR + totalL
                                    } else if (cell.center) {
                                        xOffset = _round((cellRect[2] - cellRect[0] - totalR + totalL) / 2)
                                    }
                                    _each(cell.items, (function(i, item) {
                                        const move = moves[i];
                                        if (move) {
                                            item.item.locate(move[0] + xOffset, move[1])
                                        } else {
                                            item.item.resize(null)
                                        }
                                    }));
                                    cell.rect = [totalL, totalT, totalR, totalB];
                                    cell.items = null
                                }
                                return hasHiddenItems
                            }(cell, forceMode) || hasHiddenItems
                        }
                    }));
                    return hasHiddenItems
                }

                function LayoutControl(widget) {
                    const that = this;
                    that._items = [];
                    that._suspended = 0;
                    that._widget = widget;
                    that._updateLayout = function() {
                        that._update()
                    }
                }
                LayoutControl.prototype = {
                    constructor: LayoutControl,
                    dispose: function() {
                        this._items = this._updateLayout = null
                    },
                    setSize: function(canvas) {
                        this._canvas = canvas;
                        this._update()
                    },
                    suspend: function() {
                        ++this._suspended
                    },
                    resume: function() {
                        if (0 === --this._suspended) {
                            this._update()
                        }
                    },
                    addItem: function(item) {
                        this._items.push(item);
                        item.updateLayout = this._updateLayout
                    },
                    removeItem: function(item) {
                        const index = this._items.indexOf(item);
                        this._items.splice(index, 1);
                        item.updateLayout = null
                    },
                    _update: function() {
                        let canvas;
                        if (0 === this._suspended) {
                            canvas = this._canvas;
                            _each(this._items, (function(_, item) {
                                item.resize(canvas)
                            }));
                            this._widget.resolveItemsDeferred(this._items.filter(el => el.getTemplatesGroups && el.getTemplatesDef));
                            ! function(canvas, items) {
                                const cells = createCells(canvas, items);
                                if (adjustCellsAndApplyLayout(cells)) {
                                    adjustCellsAndApplyLayout(cells, true)
                                }
                            }({
                                left: canvas.left,
                                top: canvas.top,
                                right: canvas.width + canvas.left,
                                bottom: canvas.height + canvas.top
                            }, this._items)
                        }
                    }
                }
            },
        7291:
            /*!**********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/vector_map/legend.js ***!
              \**********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.LegendsControl = LegendsControl;
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _object = __webpack_require__( /*! ../../core/utils/object */ 48013);
                var _legend = __webpack_require__( /*! ../components/legend */ 16342);
                const _extend = _extend2.extend;
                const _each = _iterator.each;
                const unknownSource = {
                    category: "UNKNOWN",
                    name: "UNKNOWN"
                };
                let Legend = function(parameters) {
                    const that = this;
                    that._params = parameters;
                    that._root = parameters.renderer.g().attr({
                        class: "dxm-legend"
                    }).linkOn(parameters.container, {
                        name: "legend",
                        after: "legend-base"
                    }).enableLinks().linkAppend();
                    parameters.layoutControl.addItem(that);
                    _legend.Legend.call(that, {
                        renderer: parameters.renderer,
                        widget: parameters.widget,
                        group: that._root,
                        backgroundClass: null,
                        itemsGroupClass: null,
                        textField: "text",
                        getFormatObject: function(data) {
                            return data
                        }
                    });
                    that._onDataChanged = function(data) {
                        that._updateData(data)
                    }
                };
                Legend.prototype = _extend((0, _object.clone)(_legend.Legend.prototype), {
                    constructor: Legend,
                    dispose: function() {
                        const that = this;
                        that._params.layoutControl.removeItem(that);
                        that._unbindData();
                        that._root.linkRemove().linkOff();
                        that._params = that._root = that._onDataChanged = null;
                        return _legend.Legend.prototype.dispose.apply(that, arguments)
                    },
                    resize: function(size) {
                        this._params.notifyDirty();
                        if (null === size) {
                            this.erase()
                        } else {
                            this.draw(size.width, size.height)
                        }
                        this._params.notifyReady()
                    },
                    locate: _legend.Legend.prototype.shift,
                    _updateData: function(data) {
                        this._options.defaultColor = data && data.defaultColor;
                        this.update(data ? function(partition, values, field) {
                            let i;
                            const ii = values.length;
                            const list = [];
                            let item;
                            for (i = 0; i < ii; ++i) {
                                list[i] = item = {
                                    start: partition[i],
                                    end: partition[i + 1],
                                    index: i
                                };
                                item[field] = values[i];
                                item.states = {
                                    normal: {
                                        fill: item.color
                                    }
                                };
                                item.visible = true
                            }
                            return list
                        }(data.partition, data.values, this._dataName) : [], this._options, this._params.themeManager.theme("legend").title);
                        this.updateLayout()
                    },
                    _unbindData: function() {
                        if (this._dataCategory) {
                            this._params.dataExchanger.unbind(this._dataCategory, this._dataName, this._onDataChanged)
                        }
                    },
                    _bindData: function(arg) {
                        this._params.dataExchanger.bind(this._dataCategory = arg.category, this._dataName = arg.name, this._onDataChanged)
                    },
                    setOptions: function(options) {
                        this.update(this._data, options, this._params.themeManager.theme("legend").title);
                        this._unbindData();
                        const source = options.source;
                        this._bindData(source ? {
                            category: source.layer,
                            name: source.grouping
                        } : unknownSource);
                        this.updateLayout();
                        return this
                    }
                });

                function LegendsControl(parameters) {
                    this._params = parameters;
                    this._items = [];
                    parameters.container.virtualLink("legend-base")
                }
                LegendsControl.prototype = {
                    constructor: LegendsControl,
                    dispose: function() {
                        _each(this._items, (function(_, item) {
                            item.dispose()
                        }));
                        this._params = this._items = null
                    },
                    setOptions: function(options) {
                        const optionList = options && options.length ? options : [];
                        const items = this._items;
                        let i;
                        const ii = optionList.length;
                        const params = this._params;
                        const theme = params.themeManager.theme("legend");
                        for (i = items.length; i < ii; ++i) {
                            items[i] = new Legend(params)
                        }
                        for (i = items.length - 1; i >= ii; --i) {
                            items[i].dispose();
                            items.splice(i, 1)
                        }
                        params.layoutControl.suspend();
                        for (i = 0; i < ii; ++i) {
                            items[i].setOptions(_extend(true, {}, theme, optionList[i]))
                        }
                        params.layoutControl.resume()
                    }
                }
            },
        15151:
            /*!*************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/vector_map/map_layer.js ***!
              \*************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.MapLayerCollection = MapLayerCollection;
                exports.getMaxBound = getMaxBound;
                var _common = __webpack_require__( /*! ../../core/utils/common */ 20576);
                var _extend2 = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _iterator = __webpack_require__( /*! ../../core/utils/iterator */ 95479);
                var _data_helper = (obj = __webpack_require__( /*! ../../data_helper */ 53305), obj && obj.__esModule ? obj : {
                    default: obj
                });
                var obj;
                var _type = __webpack_require__( /*! ../../core/utils/type */ 35922);
                var _deferred = __webpack_require__( /*! ../../core/utils/deferred */ 62754);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                const _noop = _common.noop;
                const _extend = _extend2.extend;
                const _each = _iterator.each;
                const _concat = Array.prototype.concat;
                const STATE_TO_INDEX = [0, 1, 2, 2];
                const SELECTIONS = {
                    none: null,
                    single: -1,
                    multiple: NaN
                };
                const _isArray = Array.isArray;
                const _Number = Number;
                const _String = String;
                const _abs = Math.abs;
                const _round = Math.round;
                const _min = Math.min;
                const _max = Math.max;
                const _sqrt = Math.sqrt;

                function getMaxBound(arr) {
                    return arr.reduce((a, c) => c ? [_min(a[0], c[0]), _min(a[1], c[1]), _max(a[2], c[2]), _max(a[3], c[3])] : a, arr[0])
                }

                function getName(opt, index) {
                    return (opt[index] || {}).name
                }

                function EmptySource() {}
                EmptySource.prototype.count = function() {
                    return 0
                };

                function ArraySource(raw) {
                    this.raw = raw
                }
                ArraySource.prototype = {
                    constructor: ArraySource,
                    count: function() {
                        return this.raw.length
                    },
                    item: function(index) {
                        return this.raw[index]
                    },
                    geometry: function(item) {
                        return {
                            coordinates: item.coordinates
                        }
                    },
                    attributes: function(item) {
                        return item.attributes
                    },
                    getBBox: function(index) {
                        return 0 === arguments.length ? void 0 : this.raw[index].bbox
                    }
                };

                function GeoJsonSource(raw) {
                    this.raw = raw
                }
                GeoJsonSource.prototype = {
                    constructor: GeoJsonSource,
                    count: function() {
                        return this.raw.features.length
                    },
                    item: function(index) {
                        return this.raw.features[index]
                    },
                    geometry: function(item) {
                        return item.geometry
                    },
                    attributes: function(item) {
                        return item.properties
                    },
                    getBBox: function(index) {
                        return 0 === arguments.length ? this.raw.bbox : this.raw.features[index].bbox
                    }
                };

                function isGeoJsonObject(obj) {
                    return _isArray(obj.features)
                }

                function setAreaLabelVisibility(label) {
                    label.text.attr({
                        visibility: label.size[0] / label.spaceSize[0] < 1 && label.size[1] / label.spaceSize[1] < 1 ? null : "hidden"
                    })
                }

                function setLineLabelVisibility(label) {
                    label.text.attr({
                        visibility: label.size[0] / label.spaceSize[0] < 1 || label.size[1] / label.spaceSize[1] < 1 ? null : "hidden"
                    })
                }

                function getDataValue(proxy, dataField) {
                    return proxy.attribute(dataField)
                }
                const TYPE_TO_TYPE_MAP = {
                    Point: "marker",
                    MultiPoint: "line",
                    LineString: "line",
                    MultiLineString: "line",
                    Polygon: "area",
                    MultiPolygon: "area"
                };

                function pick(a, b) {
                    return void 0 !== a ? a : b
                }
                const emptyStrategy = {
                    setup: _noop,
                    reset: _noop,
                    arrange: _noop,
                    updateGrouping: _noop,
                    getDefaultColor: _noop
                };
                const strategiesByType = {};
                const strategiesByGeometry = {};
                const strategiesByElementType = {};
                let groupByColor;
                let groupBySize;
                let selectStrategy = function(options, data) {
                    let type = (0, _utils.normalizeEnum)(options.type);
                    let elementType = (0, _utils.normalizeEnum)(options.elementType);
                    let sample;
                    const strategy = _extend({}, emptyStrategy);
                    if (data.count() > 0) {
                        sample = data.geometry(data.item(0));
                        type = strategiesByType[type] ? type : function(sample) {
                            let type = TYPE_TO_TYPE_MAP[sample.type];
                            const coordinates = sample.coordinates;
                            if (!type) {
                                if ("number" === typeof coordinates[0]) {
                                    type = "marker"
                                } else if ("number" === typeof coordinates[0][0]) {
                                    type = "line"
                                } else {
                                    type = "area"
                                }
                            }
                            return type
                        }(sample);
                        _extend(strategy, strategiesByType[type]);
                        strategy.fullType = strategy.type = type;
                        if (strategiesByGeometry[type]) {
                            _extend(strategy, strategiesByGeometry[type](sample))
                        }
                        if (strategiesByElementType[type]) {
                            elementType = strategiesByElementType[type][elementType] ? elementType : strategiesByElementType[type]._default;
                            _extend(strategy, strategiesByElementType[type][elementType]);
                            strategy.elementType = elementType;
                            strategy.fullType += ":" + elementType
                        }
                    }
                    return strategy
                };

                function applyElementState(figure, styles, state, field) {
                    figure[field].attr(styles[field][state])
                }
                strategiesByType.area = {
                    projectLabel: function(coordinates) {
                        let i;
                        const ii = coordinates.length;
                        let centroid;
                        let resultCentroid;
                        let maxArea = 0;
                        for (i = 0; i < ii; ++i) {
                            centroid = calculatePolygonCentroid(coordinates[i]);
                            if (centroid.area > maxArea) {
                                maxArea = centroid.area;
                                resultCentroid = centroid
                            }
                        }
                        return resultCentroid ? [resultCentroid.center, [_sqrt(resultCentroid.area), _sqrt(resultCentroid.area)]] : [
                            [],
                            []
                        ]
                    },
                    transform: transformPointList,
                    transformLabel: function(label, projection, coordinates) {
                        const data = projection.transform(coordinates[0]);
                        label.spaceSize = projection.getSquareSize(coordinates[1]);
                        label.text.attr({
                            translateX: data[0],
                            translateY: data[1]
                        });
                        setAreaLabelVisibility(label)
                    },
                    draw: function(context, figure, data) {
                        figure.root = context.renderer.path([], "area").data(context.dataKey, data)
                    },
                    refresh: _noop,
                    getLabelOffset: function(label) {
                        setAreaLabelVisibility(label);
                        return [0, 0]
                    },
                    getStyles: function(settings) {
                        const color = settings.color || null;
                        const borderColor = settings.borderColor || null;
                        const borderWidth = pick(settings.borderWidth, null);
                        const opacity = pick(settings.opacity, null);
                        return {
                            root: [{
                                class: "dxm-area",
                                stroke: borderColor,
                                "stroke-width": borderWidth,
                                fill: color,
                                opacity: opacity
                            }, {
                                class: "dxm-area dxm-area-hovered",
                                stroke: settings.hoveredBorderColor || borderColor,
                                "stroke-width": pick(settings.hoveredBorderWidth, borderWidth),
                                fill: settings.hoveredColor || color,
                                opacity: pick(settings.hoveredOpacity, opacity)
                            }, {
                                class: "dxm-area dxm-area-selected",
                                stroke: settings.selectedBorderColor || borderColor,
                                "stroke-width": pick(settings.selectedBorderWidth, borderWidth),
                                fill: settings.selectedColor || color,
                                opacity: pick(settings.selectedOpacity, opacity)
                            }]
                        }
                    },
                    setState: function(figure, styles, state) {
                        applyElementState(figure, styles, state, "root")
                    },
                    hasLabelsGroup: true,
                    updateGrouping: function(context) {
                        groupByColor(context)
                    },
                    getDefaultColor: _noop
                };
                strategiesByType.line = {
                    projectLabel: function(coordinates) {
                        let i;
                        const ii = coordinates.length;
                        let maxLength = 0;
                        let data;
                        let resultData;
                        for (i = 0; i < ii; ++i) {
                            data = calculateLineStringData(coordinates[i]);
                            if (data[2] > maxLength) {
                                maxLength = data[2];
                                resultData = data
                            }
                        }
                        return resultData || [
                            [],
                            []
                        ]
                    },
                    transform: transformPointList,
                    transformLabel: function(label, projection, coordinates) {
                        const data = projection.transform(coordinates[0]);
                        label.spaceSize = projection.getSquareSize(coordinates[1]);
                        label.text.attr({
                            translateX: data[0],
                            translateY: data[1]
                        });
                        setLineLabelVisibility(label)
                    },
                    draw: function(context, figure, data) {
                        figure.root = context.renderer.path([], "line").data(context.dataKey, data)
                    },
                    refresh: _noop,
                    getLabelOffset: function(label) {
                        setLineLabelVisibility(label);
                        return [0, 0]
                    },
                    getStyles: function(settings) {
                        const color = settings.color || settings.borderColor || null;
                        const width = pick(settings.borderWidth, null);
                        const opacity = pick(settings.opacity, null);
                        return {
                            root: [{
                                class: "dxm-line",
                                stroke: color,
                                "stroke-width": width,
                                opacity: opacity
                            }, {
                                class: "dxm-line dxm-line-hovered",
                                stroke: settings.hoveredColor || settings.hoveredBorderColor || color,
                                "stroke-width": pick(settings.hoveredBorderWidth, width),
                                opacity: pick(settings.hoveredOpacity, opacity)
                            }, {
                                class: "dxm-line dxm-line-selected",
                                stroke: settings.selectedColor || settings.selectedBorderColor || color,
                                "stroke-width": pick(settings.selectedBorderWidth, width),
                                opacity: pick(settings.selectedOpacity, opacity)
                            }]
                        }
                    },
                    setState: function(figure, styles, state) {
                        applyElementState(figure, styles, state, "root")
                    },
                    hasLabelsGroup: true,
                    updateGrouping: function(context) {
                        groupByColor(context)
                    },
                    getDefaultColor: _noop
                };
                strategiesByType.marker = {
                    project: function(projection, coordinates) {
                        return projection.project(coordinates)
                    },
                    transform: function(content, projection, coordinates) {
                        const data = projection.transform(coordinates);
                        content.root.attr({
                            translateX: data[0],
                            translateY: data[1]
                        })
                    },
                    draw: function(context, figure, data) {
                        figure.root = context.renderer.g();
                        this._draw(context, figure, data)
                    },
                    refresh: _noop,
                    hasLabelsGroup: false,
                    getLabelOffset: function(label, settings) {
                        return [_round((label.size[0] + _max(settings.size || 0, 0)) / 2) + 2, 0]
                    },
                    getStyles: function(settings) {
                        const styles = {
                            root: [{
                                class: "dxm-marker"
                            }, {
                                class: "dxm-marker dxm-marker-hovered"
                            }, {
                                class: "dxm-marker dxm-marker-selected"
                            }]
                        };
                        this._getStyles(styles, settings);
                        return styles
                    },
                    setState: function(figure, styles, state) {
                        applyElementState(figure, styles, state, "root");
                        this._setState(figure, styles, state)
                    },
                    updateGrouping: function(context) {
                        groupByColor(context);
                        groupBySize(context)
                    },
                    getDefaultColor: function(ctx, palette) {
                        return ctx.params.themeManager.getAccentColor(palette)
                    }
                };
                strategiesByGeometry.area = function(sample) {
                    return {
                        project: (projection, coordinates) => coordinates[0] && coordinates[0][0] && coordinates[0][0][0] && "number" === typeof coordinates[0][0][0][0] ? function(projection, coordinates) {
                            const output = [];
                            let i;
                            const ii = output.length = coordinates.length;
                            for (i = 0; i < ii; ++i) {
                                output[i] = projectPolygon(projection, coordinates[i])
                            }
                            return _concat.apply([], output)
                        }(projection, coordinates) : projectPolygon(projection, coordinates)
                    }
                };
                strategiesByGeometry.line = function(sample) {
                    const coordinates = sample.coordinates;
                    return {
                        project: coordinates[0] && coordinates[0][0] && "number" === typeof coordinates[0][0][0] ? projectPolygon : projectLineString
                    }
                };
                strategiesByElementType.marker = {
                    _default: "dot",
                    dot: {
                        setup: function(context) {
                            context.filter = context.renderer.shadowFilter("-40%", "-40%", "180%", "200%", 0, 1, 1, "#000000", .2)
                        },
                        reset: function(context) {
                            context.filter.dispose();
                            context.filter = null
                        },
                        _draw: function(ctx, figure, data) {
                            figure.back = ctx.renderer.circle().sharp().data(ctx.dataKey, data).append(figure.root);
                            figure.dot = ctx.renderer.circle().sharp().data(ctx.dataKey, data).append(figure.root)
                        },
                        refresh: function(ctx, figure, data, proxy, settings) {
                            figure.dot.attr({
                                filter: settings.shadow ? ctx.filter.id : null
                            })
                        },
                        _getStyles: function(styles, style) {
                            const size = style.size > 0 ? _Number(style.size) : 0;
                            const hoveredSize = size;
                            const selectedSize = size + (style.selectedStep > 0 ? _Number(style.selectedStep) : 0);
                            const hoveredBackSize = hoveredSize + (style.backStep > 0 ? _Number(style.backStep) : 0);
                            const selectedBackSize = selectedSize + (style.backStep > 0 ? _Number(style.backStep) : 0);
                            const color = style.color || null;
                            const borderColor = style.borderColor || null;
                            const borderWidth = pick(style.borderWidth, null);
                            const opacity = pick(style.opacity, null);
                            const backColor = style.backColor || null;
                            const backOpacity = pick(style.backOpacity, null);
                            styles.dot = [{
                                r: size / 2,
                                stroke: borderColor,
                                "stroke-width": borderWidth,
                                fill: color,
                                opacity: opacity
                            }, {
                                r: hoveredSize / 2,
                                stroke: style.hoveredBorderColor || borderColor,
                                "stroke-width": pick(style.hoveredBorderWidth, borderWidth),
                                fill: style.hoveredColor || color,
                                opacity: pick(style.hoveredOpacity, opacity)
                            }, {
                                r: selectedSize / 2,
                                stroke: style.selectedBorderColor || borderColor,
                                "stroke-width": pick(style.selectedBorderWidth, borderWidth),
                                fill: style.selectedColor || color,
                                opacity: pick(style.selectedOpacity, opacity)
                            }];
                            styles.back = [{
                                r: size / 2,
                                stroke: "none",
                                "stroke-width": 0,
                                fill: backColor,
                                opacity: backOpacity
                            }, {
                                r: hoveredBackSize / 2,
                                stroke: "none",
                                "stroke-width": 0,
                                fill: backColor,
                                opacity: backOpacity
                            }, {
                                r: selectedBackSize / 2,
                                stroke: "none",
                                "stroke-width": 0,
                                fill: backColor,
                                opacity: backOpacity
                            }]
                        },
                        _setState: function(figure, styles, state) {
                            applyElementState(figure, styles, state, "dot");
                            applyElementState(figure, styles, state, "back")
                        }
                    },
                    bubble: {
                        _draw: function(ctx, figure, data) {
                            figure.bubble = ctx.renderer.circle().sharp().data(ctx.dataKey, data).append(figure.root)
                        },
                        refresh: function(ctx, figure, data, proxy, settings) {
                            figure.bubble.attr({
                                r: settings.size / 2
                            })
                        },
                        _getStyles: function(styles, style) {
                            const color = style.color || null;
                            const borderColor = style.borderColor || null;
                            const borderWidth = pick(style.borderWidth, null);
                            const opacity = pick(style.opacity, null);
                            styles.bubble = [{
                                stroke: borderColor,
                                "stroke-width": borderWidth,
                                fill: color,
                                opacity: opacity
                            }, {
                                stroke: style.hoveredBorderColor || borderColor,
                                "stroke-width": pick(style.hoveredBorderWidth, borderWidth),
                                fill: style.hoveredColor || style.color,
                                opacity: pick(style.hoveredOpacity, opacity)
                            }, {
                                stroke: style.selectedBorderColor || borderColor,
                                "stroke-width": pick(style.selectedBorderWidth, borderWidth),
                                fill: style.selectedColor || style.color,
                                opacity: pick(style.selectedOpacity, opacity)
                            }]
                        },
                        _setState: function(figure, styles, state) {
                            applyElementState(figure, styles, state, "bubble")
                        },
                        arrange: function(context, handles) {
                            const values = [];
                            let i;
                            const ii = values.length = handles.length;
                            const settings = context.settings;
                            const dataField = settings.dataField;
                            const minSize = settings.minSize > 0 ? _Number(settings.minSize) : 0;
                            const maxSize = settings.maxSize > minSize ? _Number(settings.maxSize) : minSize;
                            if (settings.sizeGroups) {
                                return
                            }
                            for (i = 0; i < ii; ++i) {
                                values[i] = _max(getDataValue(handles[i].proxy, dataField) || 0, 0)
                            }
                            const minValue = _min.apply(null, values);
                            const maxValue = _max.apply(null, values);
                            const deltaValue = maxValue - minValue || 1;
                            const deltaSize = maxSize - minSize;
                            for (i = 0; i < ii; ++i) {
                                handles[i]._settings.size = minSize + deltaSize * (values[i] - minValue) / deltaValue
                            }
                        },
                        updateGrouping: function(context) {
                            const dataField = context.settings.dataField;
                            strategiesByType.marker.updateGrouping(context);
                            groupBySize(context, (function(proxy) {
                                return getDataValue(proxy, dataField)
                            }))
                        }
                    },
                    pie: {
                        _draw: function(ctx, figure, data) {
                            figure.pie = ctx.renderer.g().append(figure.root);
                            figure.border = ctx.renderer.circle().sharp().data(ctx.dataKey, data).append(figure.root)
                        },
                        refresh: function(ctx, figure, data, proxy, settings) {
                            const values = getDataValue(proxy, ctx.settings.dataField) || [];
                            const colors = settings._colors;
                            let sum = 0;
                            const pie = figure.pie;
                            const renderer = ctx.renderer;
                            const dataKey = ctx.dataKey;
                            const r = (settings.size > 0 ? _Number(settings.size) : 0) / 2;
                            let start = 90;
                            let end = start;
                            let zeroSum = false;
                            sum = values.reduce((function(total, item) {
                                return total + (item || 0)
                            }), 0);
                            if (0 === sum) {
                                zeroSum = true;
                                sum = 360 / values.length
                            }
                            values.forEach((function(item, i) {
                                start = end;
                                end += zeroSum ? sum : (item || 0) / sum * 360;
                                renderer.arc(0, 0, 0, r, start, end).attr({
                                    "stroke-linejoin": "round",
                                    fill: colors[i]
                                }).data(dataKey, data).append(pie)
                            }));
                            figure.border.attr({
                                r: r
                            })
                        },
                        _getStyles: function(styles, style) {
                            const opacity = pick(style.opacity, null);
                            const borderColor = style.borderColor || null;
                            const borderWidth = pick(style.borderWidth, null);
                            styles.pie = [{
                                opacity: opacity
                            }, {
                                opacity: pick(style.hoveredOpacity, opacity)
                            }, {
                                opacity: pick(style.selectedOpacity, opacity)
                            }];
                            styles.border = [{
                                stroke: borderColor,
                                "stroke-width": borderWidth
                            }, {
                                stroke: style.hoveredBorderColor || borderColor,
                                "stroke-width": pick(style.hoveredBorderWidth, borderWidth)
                            }, {
                                stroke: style.selectedBorderColor || borderColor,
                                "stroke-width": pick(style.selectedBorderWidth, borderWidth)
                            }]
                        },
                        _setState: function(figure, styles, state) {
                            applyElementState(figure, styles, state, "pie");
                            applyElementState(figure, styles, state, "border")
                        },
                        arrange: function(context, handles) {
                            let i;
                            const ii = handles.length;
                            const dataField = context.settings.dataField;
                            let values;
                            let count = 0;
                            let palette;
                            for (i = 0; i < ii; ++i) {
                                values = getDataValue(handles[i].proxy, dataField);
                                if (values && values.length > count) {
                                    count = values.length
                                }
                            }
                            if (count > 0) {
                                palette = context.params.themeManager.createPalette(context.settings.palette, {
                                    useHighlight: true,
                                    extensionMode: "alternate"
                                });
                                values = palette.generateColors(count);
                                context.settings._colors = values;
                                context.grouping.color = {
                                    callback: _noop,
                                    field: "",
                                    partition: [],
                                    values: []
                                };
                                context.params.dataExchanger.set(context.name, "color", {
                                    partition: [],
                                    values: values
                                })
                            }
                        }
                    },
                    image: {
                        _draw: function(ctx, figure, data) {
                            figure.image = ctx.renderer.image(null, null, null, null, null, "center").attr({
                                "pointer-events": "visible"
                            }).data(ctx.dataKey, data).append(figure.root)
                        },
                        refresh: function(ctx, figure, data, proxy) {
                            figure.image.attr({
                                href: getDataValue(proxy, ctx.settings.dataField)
                            })
                        },
                        _getStyles: function(styles, style) {
                            const size = style.size > 0 ? _Number(style.size) : 0;
                            const hoveredSize = size + (style.hoveredStep > 0 ? _Number(style.hoveredStep) : 0);
                            const selectedSize = size + (style.selectedStep > 0 ? _Number(style.selectedStep) : 0);
                            const opacity = pick(style.opacity, null);
                            styles.image = [{
                                x: -size / 2,
                                y: -size / 2,
                                width: size,
                                height: size,
                                opacity: opacity
                            }, {
                                x: -hoveredSize / 2,
                                y: -hoveredSize / 2,
                                width: hoveredSize,
                                height: hoveredSize,
                                opacity: pick(style.hoveredOpacity, opacity)
                            }, {
                                x: -selectedSize / 2,
                                y: -selectedSize / 2,
                                width: selectedSize,
                                height: selectedSize,
                                opacity: pick(style.selectedOpacity, opacity)
                            }]
                        },
                        _setState: function(figure, styles, state) {
                            applyElementState(figure, styles, state, "image")
                        }
                    }
                };

                function projectPointList(projection, coordinates) {
                    const output = [];
                    let i;
                    const ii = output.length = coordinates.length;
                    for (i = 0; i < ii; ++i) {
                        output[i] = projection.project(coordinates[i])
                    }
                    return output
                }

                function projectLineString(projection, coordinates) {
                    return [projectPointList(projection, coordinates)]
                }

                function projectPolygon(projection, coordinates) {
                    const output = [];
                    let i;
                    const ii = output.length = coordinates.length;
                    for (i = 0; i < ii; ++i) {
                        output[i] = projectPointList(projection, coordinates[i])
                    }
                    return output
                }

                function transformList(projection, coordinates) {
                    const output = [];
                    let i;
                    const ii = coordinates.length;
                    let item;
                    let k = 0;
                    output.length = 2 * ii;
                    for (i = 0; i < ii; ++i) {
                        item = projection.transform(coordinates[i]);
                        output[k++] = item[0];
                        output[k++] = item[1]
                    }
                    return output
                }

                function transformPointList(content, projection, coordinates) {
                    const output = [];
                    let i;
                    const ii = output.length = coordinates.length;
                    for (i = 0; i < ii; ++i) {
                        output[i] = transformList(projection, coordinates[i])
                    }
                    content.root.attr({
                        points: output
                    })
                }

                function getItemSettings(context, proxy, settings) {
                    const result = combineSettings(context.settings, settings);
                    ! function(grouping, proxy, settings) {
                        _each(grouping, (function(name, data) {
                            const index = findGroupingIndex(data.callback(proxy, data.field), data.partition);
                            if (index >= 0) {
                                settings[name] = data.values[index]
                            }
                        }))
                    }(context.grouping, proxy, result);
                    if (void 0 === settings.color && settings.paletteIndex >= 0) {
                        result.color = result._colors[settings.paletteIndex]
                    }
                    return result
                }

                function findGroupingIndex(value, partition) {
                    let start = 0;
                    let end = partition.length - 1;
                    let index = -1;
                    let middle;
                    if (partition[start] <= value && value <= partition[end]) {
                        if (value === partition[end]) {
                            index = end - 1
                        } else {
                            while (end - start > 1) {
                                middle = start + end >> 1;
                                if (value < partition[middle]) {
                                    end = middle
                                } else {
                                    start = middle
                                }
                            }
                            index = start
                        }
                    }
                    return index
                }

                function raiseChanged(context, handle, state, name) {
                    context.params.eventTrigger(name, {
                        target: handle.proxy,
                        state: state
                    })
                }

                function combineSettings(common, partial) {
                    const obj = _extend({}, common, partial);
                    obj.label = _extend({}, common.label, obj.label);
                    obj.label.font = _extend({}, common.label.font, obj.label.font);
                    return obj
                }

                function valueCallback(proxy, dataField) {
                    return proxy.attribute(dataField)
                }
                let performGrouping = function(context, partition, settingField, dataField, valuesCallback) {
                    let values;
                    if (dataField && partition && partition.length > 1) {
                        values = valuesCallback(partition.length - 1);
                        context.grouping[settingField] = {
                            callback: (0, _type.isFunction)(dataField) ? dataField : valueCallback,
                            field: dataField,
                            partition: partition,
                            values: values
                        };
                        context.params.dataExchanger.set(context.name, settingField, {
                            partition: partition,
                            values: values,
                            defaultColor: context.settings.color
                        })
                    }
                };

                function dropGrouping(context) {
                    const name = context.name;
                    const dataExchanger = context.params.dataExchanger;
                    _each(context.grouping, (function(field) {
                        dataExchanger.set(name, field, null)
                    }));
                    context.grouping = {}
                }
                groupByColor = function(context) {
                    performGrouping(context, context.settings.colorGroups, "color", context.settings.colorGroupingField, (function(count) {
                        const _palette = context.params.themeManager.createDiscretePalette(context.settings.palette, count);
                        let i;
                        const list = [];
                        for (i = 0; i < count; ++i) {
                            list.push(_palette.getColor(i))
                        }
                        return list
                    }))
                };
                groupBySize = function(context, valueCallback) {
                    const settings = context.settings;
                    performGrouping(context, settings.sizeGroups, "size", valueCallback || settings.sizeGroupingField, (function(count) {
                        const minSize = settings.minSize > 0 ? _Number(settings.minSize) : 0;
                        const maxSize = settings.maxSize >= minSize ? _Number(settings.maxSize) : 0;
                        let i = 0;
                        const sizes = [];
                        if (count > 1) {
                            for (i = 0; i < count; ++i) {
                                sizes.push((minSize * (count - i - 1) + maxSize * i) / (count - 1))
                            }
                        } else if (1 === count) {
                            sizes.push((minSize + maxSize) / 2)
                        }
                        return sizes
                    }))
                };

                function setFlag(flags, flag, state) {
                    if (state) {
                        flags |= flag
                    } else {
                        flags &= ~flag
                    }
                    return flags
                }

                function hasFlag(flags, flag) {
                    return !!(flags & flag)
                }
                let MapLayerElement;
                let MapLayer = function(params, container, name, index) {
                    this._params = params;
                    this._onProjection();
                    this.proxy = function(layer, name, index) {
                        const proxy = {
                            index: index,
                            name: name,
                            getElements: function() {
                                return layer.getProxies()
                            },
                            clearSelection: function(_noEvent) {
                                layer.clearSelection(_noEvent);
                                return proxy
                            },
                            getDataSource: function() {
                                return layer.getDataSource()
                            },
                            getBounds: () => layer.getBounds()
                        };
                        return proxy
                    }(this, name, index);
                    this._context = {
                        name: name,
                        layer: this.proxy,
                        renderer: params.renderer,
                        projection: params.projection,
                        params: params,
                        dataKey: params.dataKey,
                        str: emptyStrategy,
                        hover: false,
                        selection: null,
                        grouping: {},
                        root: params.renderer.g().attr({
                            class: "dxm-layer"
                        }).linkOn(container, name).linkAppend()
                    };
                    this._container = container;
                    this._options = {};
                    this._handles = [];
                    this._data = new EmptySource;
                    this._dataSourceLoaded = null
                };
                MapLayer.prototype = _extend({
                    constructor: MapLayer,
                    getDataReadyCallback() {
                        return this._dataSourceLoaded
                    },
                    _onProjection: function() {
                        const that = this;
                        that._removeHandlers = that._params.projection.on({
                            engine: function() {
                                that._project()
                            },
                            screen: function() {
                                that._transform()
                            },
                            center: function() {
                                that._transformCore()
                            },
                            zoom: function() {
                                that._transform()
                            }
                        })
                    },
                    getData() {
                        return this._data
                    },
                    _dataSourceLoadErrorHandler: function() {
                        this._dataSourceChangedHandler()
                    },
                    _dataSourceChangedHandler: function() {
                        this._data = function(source) {
                            let sourceType;
                            if (source) {
                                if (isGeoJsonObject(source)) {
                                    sourceType = GeoJsonSource
                                } else if (1 === source.length && source[0] && isGeoJsonObject(source[0])) {
                                    sourceType = GeoJsonSource;
                                    source = source[0]
                                } else if (_isArray(source)) {
                                    sourceType = ArraySource
                                }
                            }
                            sourceType = sourceType || EmptySource;
                            return new sourceType(source)
                        }(this._dataSource && this._dataSource.items());
                        this._update(true)
                    },
                    _dataSourceOptions: function() {
                        return {
                            paginate: false
                        }
                    },
                    _getSpecificDataSourceOption: function() {
                        return this._specificDataSourceOption
                    },
                    _normalizeDataSource: function(dataSource) {
                        const store = dataSource.store();
                        if ("raw" === store._loadMode) {
                            store._loadMode = void 0
                        }
                        return dataSource
                    },
                    _offProjection: function() {
                        this._removeHandlers();
                        this._removeHandlers = null
                    },
                    dispose: function() {
                        this._disposeDataSource();
                        this._destroyHandles();
                        dropGrouping(this._context);
                        this._context.root.linkRemove().linkOff();
                        this._context.labelRoot && this._context.labelRoot.linkRemove().linkOff();
                        this._context.str.reset(this._context);
                        this._offProjection();
                        this._params = this._container = this._context = this.proxy = null;
                        return this
                    },
                    setOptions: function(options) {
                        const that = this;
                        options = that._options = options || {};
                        that._dataSourceLoaded = new _deferred.Deferred;
                        if ("dataSource" in options && options.dataSource !== that._options_dataSource) {
                            that._options_dataSource = options.dataSource;
                            that._params.notifyDirty();
                            that._specificDataSourceOption = (option = options.dataSource, option ? isGeoJsonObject(option) ? [option] : option : []);
                            that._refreshDataSource()
                        } else if (that._data.count() > 0) {
                            that._params.notifyDirty();
                            that._update(void 0 !== options.type && options.type !== that._context.str.type || void 0 !== options.elementType && options.elementType !== that._context.str.elementType)
                        }
                        var option;
                        that._transformCore()
                    },
                    _update: function(isContextChanged) {
                        const that = this;
                        const context = that._context;
                        if (isContextChanged) {
                            context.str.reset(context);
                            context.root.clear();
                            context.labelRoot && context.labelRoot.clear();
                            that._params.tracker.reset();
                            that._destroyHandles();
                            context.str = selectStrategy(that._options, that._data);
                            context.str.setup(context);
                            that.proxy.type = context.str.type;
                            that.proxy.elementType = context.str.elementType
                        }
                        context.settings = function(context, options) {
                            const themeManager = context.params.themeManager;
                            const strategy = context.str;
                            const settings = combineSettings(_extend({
                                label: {},
                                color: strategy.getDefaultColor(context, options.palette)
                            }, themeManager.theme("layer:" + strategy.fullType)), options);
                            let colors;
                            let i;
                            let palette;
                            if (settings.paletteSize > 0) {
                                palette = themeManager.createDiscretePalette(settings.palette, settings.paletteSize);
                                for (i = 0, colors = []; i < settings.paletteSize; ++i) {
                                    colors.push(palette.getColor(i))
                                }
                                settings._colors = colors
                            }
                            return settings
                        }(context, that._options);
                        context.hasSeparateLabel = !!(context.settings.label.enabled && context.str.hasLabelsGroup);
                        context.hover = !!(0, _utils.parseScalar)(context.settings.hoverEnabled, true);
                        if (context.selection) {
                            _each(context.selection.state, (function(_, handle) {
                                handle && handle.resetSelected()
                            }))
                        }
                        context.selection = function(selectionMode) {
                            let selection = (0, _utils.normalizeEnum)(selectionMode);
                            selection = selection in SELECTIONS ? SELECTIONS[selection] : SELECTIONS.single;
                            if (null !== selection) {
                                selection = {
                                    state: {},
                                    single: selection
                                }
                            }
                            return selection
                        }(context.settings.selectionMode);
                        if (context.hasSeparateLabel) {
                            if (!context.labelRoot) {
                                context.labelRoot = context.renderer.g().attr({
                                    class: "dxm-layer-labels"
                                }).linkOn(that._container, {
                                    name: context.name + "-labels",
                                    after: context.name
                                }).linkAppend();
                                that._transformCore()
                            }
                        } else if (context.labelRoot) {
                            context.labelRoot.linkRemove().linkOff();
                            context.labelRoot = null
                        }
                        if (isContextChanged) {
                            that._createHandles()
                        }
                        dropGrouping(context);
                        context.str.arrange(context, that._handles);
                        context.str.updateGrouping(context);
                        that._updateHandles();
                        that._params.notifyReady();
                        if (that._dataSourceLoaded) {
                            that._dataSourceLoaded.resolve();
                            that._dataSourceLoaded = null
                        } else {
                            that._params.dataReady()
                        }
                    },
                    getBounds() {
                        return getMaxBound(this._handles.map(_ref => {
                            let {
                                proxy: proxy
                            } = _ref;
                            return proxy.coordinates().map(coords => {
                                if (!_isArray(coords)) {
                                    return
                                }
                                const coordsToBoundsSearch = _isArray(coords[0][0]) ? coords.reduce((ac, val) => ac.concat(val), []) : coords;
                                const initValue = coordsToBoundsSearch[0];
                                return coordsToBoundsSearch.reduce((min, c) => [_min(min[0], c[0]), _min(min[1], c[1]), _max(min[2], c[0]), _max(min[3], c[1])], [initValue[0], initValue[1], initValue[0], initValue[1]])
                            })
                        }).map(getMaxBound))
                    },
                    _destroyHandles() {
                        this._handles.forEach(h => h.dispose());
                        if (this._context.selection) {
                            this._context.selection.state = {}
                        }
                        this._handles = []
                    },
                    _createHandles: function() {
                        const handles = this._handles = [];
                        const data = this._data;
                        let i;
                        const ii = handles.length = data.count();
                        const context = this._context;
                        const geometry = data.geometry;
                        const attributes = data.attributes;
                        let handle;
                        let dataItem;
                        for (i = 0; i < ii; ++i) {
                            dataItem = data.item(i);
                            handles[i] = new MapLayerElement(context, i, geometry(dataItem), attributes(dataItem))
                        }(0, _type.isFunction)(this._options.customize) && (proxies = this.getProxies(), callback = this._options.customize, widget = this._params.widget, void callback.call(widget, proxies));
                        var proxies, callback, widget;
                        for (i = 0; i < ii; ++i) {
                            handle = handles[i];
                            handle.project();
                            handle.draw();
                            handle.transform()
                        }
                        if (context.selection) {
                            _each(context.selection.state, (function(_, handle) {
                                handle && handle.restoreSelected()
                            }))
                        }
                    },
                    _updateHandles: function() {
                        const handles = this._handles;
                        let i;
                        const ii = handles.length;
                        for (i = 0; i < ii; ++i) {
                            handles[i].refresh()
                        }
                        if (this._context.settings.label.enabled) {
                            for (i = 0; i < ii; ++i) {
                                handles[i].measureLabel()
                            }
                            for (i = 0; i < ii; ++i) {
                                handles[i].adjustLabel()
                            }
                        }
                    },
                    _transformCore: function() {
                        const transform = this._params.projection.getTransform();
                        this._context.root.attr(transform);
                        this._context.labelRoot && this._context.labelRoot.attr(transform)
                    },
                    _project: function() {
                        const handles = this._handles;
                        let i;
                        const ii = handles.length;
                        for (i = 0; i < ii; ++i) {
                            handles[i].project()
                        }
                    },
                    _transform: function() {
                        const handles = this._handles;
                        let i;
                        const ii = handles.length;
                        this._transformCore();
                        for (i = 0; i < ii; ++i) {
                            handles[i].transform()
                        }
                    },
                    getProxies() {
                        return this._handles.map(p => p.proxy)
                    },
                    getProxy: function(index) {
                        return this._handles[index].proxy
                    },
                    raiseClick: function(i, dxEvent) {
                        this._params.eventTrigger("click", {
                            target: this._handles[i].proxy,
                            event: dxEvent
                        })
                    },
                    hoverItem: function(i, state) {
                        this._handles[i].setHovered(state)
                    },
                    selectItem: function(i, state, _noEvent) {
                        this._handles[i].setSelected(state, _noEvent)
                    },
                    clearSelection: function() {
                        const selection = this._context.selection;
                        if (selection) {
                            _each(selection.state, (function(_, handle) {
                                handle && handle.setSelected(false)
                            }));
                            selection.state = {}
                        }
                    }
                }, _data_helper.default);
                MapLayerElement = function(context, index, geometry, attributes) {
                    const proxy = this.proxy = function(handle, coords, attrs) {
                        const proxy = {
                            coordinates: function() {
                                return coords
                            },
                            attribute: function(name, value) {
                                if (arguments.length > 1) {
                                    attrs[name] = value;
                                    return proxy
                                } else {
                                    return arguments.length > 0 ? attrs[name] : attrs
                                }
                            },
                            selected: function(state, _noEvent) {
                                if (arguments.length > 0) {
                                    handle.setSelected(state, _noEvent);
                                    return proxy
                                } else {
                                    return handle.isSelected()
                                }
                            },
                            applySettings: function(settings) {
                                handle.update(settings);
                                return proxy
                            }
                        };
                        return proxy
                    }(this, geometry.coordinates, _extend({}, attributes));
                    this._ctx = context;
                    this._index = index;
                    this._fig = this._label = null;
                    this._state = 0;
                    this._coordinates = geometry.coordinates;
                    this._settings = {
                        label: {}
                    };
                    proxy.index = index;
                    proxy.layer = context.layer;
                    this._data = {
                        name: context.name,
                        index: index
                    }
                };
                MapLayerElement.prototype = {
                    constructor: MapLayerElement,
                    dispose: function() {
                        this._ctx = this.proxy = this._settings = this._fig = this._label = this.data = null;
                        return this
                    },
                    project: function() {
                        const context = this._ctx;
                        this._projection = context.str.project(context.projection, this._coordinates);
                        if (context.hasSeparateLabel && this._label) {
                            this._projectLabel()
                        }
                    },
                    _projectLabel: function() {
                        this._labelProjection = this._ctx.str.projectLabel(this._projection)
                    },
                    draw: function() {
                        const context = this._ctx;
                        context.str.draw(context, this._fig = {}, this._data);
                        this._fig.root.append(context.root)
                    },
                    transform: function() {
                        const that = this;
                        const context = that._ctx;
                        context.str.transform(that._fig, context.projection, that._projection);
                        if (context.hasSeparateLabel && that._label) {
                            that._transformLabel()
                        }
                    },
                    _transformLabel: function() {
                        this._ctx.str.transformLabel(this._label, this._ctx.projection, this._labelProjection)
                    },
                    refresh: function() {
                        const strategy = this._ctx.str;
                        const settings = getItemSettings(this._ctx, this.proxy, this._settings);
                        this._styles = strategy.getStyles(settings);
                        strategy.refresh(this._ctx, this._fig, this._data, this.proxy, settings);
                        this._refreshLabel(settings);
                        this._setState()
                    },
                    _refreshLabel: function(settings) {
                        const that = this;
                        const context = that._ctx;
                        const labelSettings = settings.label;
                        let label = that._label;
                        if (context.settings.label.enabled) {
                            if (!label) {
                                label = that._label = {
                                    root: context.labelRoot || that._fig.root,
                                    text: context.renderer.text().attr({
                                        class: "dxm-label"
                                    }),
                                    size: [0, 0]
                                };
                                if (context.hasSeparateLabel) {
                                    that._projectLabel();
                                    that._transformLabel()
                                }
                            }
                            label.value = _String(that.proxy.text || that.proxy.attribute(labelSettings.dataField) || "");
                            if (label.value) {
                                label.text.attr({
                                    text: label.value,
                                    x: 0,
                                    y: 0
                                }).css((0, _utils.patchFontOptions)(labelSettings.font)).attr({
                                    align: "center",
                                    stroke: labelSettings.stroke,
                                    "stroke-width": labelSettings["stroke-width"],
                                    "stroke-opacity": labelSettings["stroke-opacity"]
                                }).data(context.dataKey, that._data).append(label.root);
                                label.settings = settings
                            }
                        } else if (label) {
                            label.text.remove();
                            that._label = null
                        }
                    },
                    measureLabel: function() {
                        const label = this._label;
                        let bBox;
                        if (label.value) {
                            bBox = label.text.getBBox();
                            label.size = [bBox.width, bBox.height, -bBox.y - bBox.height / 2]
                        }
                    },
                    adjustLabel: function() {
                        const label = this._label;
                        let offset;
                        if (label.value) {
                            offset = this._ctx.str.getLabelOffset(label, label.settings);
                            label.settings = null;
                            label.text.attr({
                                x: offset[0],
                                y: offset[1] + label.size[2]
                            })
                        }
                    },
                    update: function(settings) {
                        const that = this;
                        that._settings = combineSettings(that._settings, settings);
                        if (that._fig) {
                            that.refresh();
                            if (that._label && that._label.value) {
                                that.measureLabel();
                                that.adjustLabel()
                            }
                        }
                    },
                    _setState: function() {
                        this._ctx.str.setState(this._fig, this._styles, STATE_TO_INDEX[this._state])
                    },
                    _setForeground: function() {
                        const root = this._fig.root;
                        this._state ? root.toForeground() : root.toBackground()
                    },
                    setHovered: function(state) {
                        const that = this;
                        const currentState = hasFlag(that._state, 1);
                        const newState = !!state;
                        if (that._ctx.hover && currentState !== newState) {
                            that._state = setFlag(that._state, 1, newState);
                            that._setState();
                            that._setForeground();
                            raiseChanged(that._ctx, that, newState, "hoverChanged")
                        }
                        return that
                    },
                    setSelected: function(state, _noEvent) {
                        const that = this;
                        const currentState = hasFlag(that._state, 2);
                        const newState = !!state;
                        const selection = that._ctx.selection;
                        let tmp;
                        if (selection && currentState !== newState) {
                            that._state = setFlag(that._state, 2, newState);
                            tmp = selection.state[selection.single];
                            selection.state[selection.single] = null;
                            if (tmp) {
                                tmp.setSelected(false)
                            }
                            selection.state[selection.single || that._index] = state ? that : null;
                            if (that._fig) {
                                that._setState();
                                that._setForeground();
                                if (!_noEvent) {
                                    raiseChanged(that._ctx, that, newState, "selectionChanged")
                                }
                            }
                        }
                    },
                    isSelected: function() {
                        return hasFlag(this._state, 2)
                    },
                    resetSelected: function() {
                        this._state = setFlag(this._state, 2, false)
                    },
                    restoreSelected: function() {
                        this._fig.root.toForeground()
                    }
                };

                function calculatePolygonCentroid(coordinates) {
                    let i;
                    const length = coordinates.length;
                    let v1;
                    let v2 = coordinates[length - 1];
                    let cross;
                    let cx = 0;
                    let cy = 0;
                    let area = 0;
                    let minX = 1 / 0;
                    let maxX = -1 / 0;
                    let minY = 1 / 0;
                    let maxY = -1 / 0;
                    for (i = 0; i < length; ++i) {
                        v1 = v2;
                        v2 = coordinates[i];
                        cross = v1[0] * v2[1] - v2[0] * v1[1];
                        area += cross;
                        cx += (v1[0] + v2[0]) * cross;
                        cy += (v1[1] + v2[1]) * cross;
                        minX = _min(minX, v2[0]);
                        maxX = _max(maxX, v2[0]);
                        minY = _min(minY, v2[1]);
                        maxY = _max(maxY, v2[1])
                    }
                    return {
                        area: _abs(area) / 2,
                        center: [2 * cx / 3 / area - (minX + maxX) / 2, 2 * cy / 3 / area - (minY + maxY) / 2]
                    }
                }

                function calculateLineStringData(coordinates) {
                    let i;
                    const ii = coordinates.length;
                    let v1;
                    let v2 = coordinates[0] || [];
                    let totalLength = 0;
                    const items = [0];
                    let min0 = v2[0];
                    let max0 = v2[0];
                    let min1 = v2[1];
                    let max1 = v2[1];
                    for (i = 1; i < ii; ++i) {
                        v1 = v2;
                        v2 = coordinates[i];
                        totalLength += _sqrt((v1[0] - v2[0]) * (v1[0] - v2[0]) + (v1[1] - v2[1]) * (v1[1] - v2[1]));
                        items[i] = totalLength;
                        min0 = _min(min0, v2[0]);
                        max0 = _max(max0, v2[0]);
                        min1 = _min(min1, v2[1]);
                        max1 = _max(max1, v2[1])
                    }
                    i = findGroupingIndex(totalLength / 2, items);
                    v1 = coordinates[i];
                    v2 = coordinates[i + 1];
                    const t = (totalLength / 2 - items[i]) / (items[i + 1] - items[i]);
                    return ii ? [
                        [v1[0] * (1 - t) + v2[0] * t, v1[1] * (1 - t) + v2[1] * t],
                        [max0 - min0, max1 - min1], totalLength
                    ] : []
                }

                function MapLayerCollection(params) {
                    const renderer = params.renderer;
                    this._params = params;
                    this._layers = [];
                    this._layerByName = {};
                    this._rect = [0, 0, 0, 0];
                    this._clip = renderer.clipRect();
                    this._background = renderer.rect().attr({
                        class: "dxm-background"
                    }).data(params.dataKey, {
                        name: "background"
                    }).append(renderer.root);
                    this._container = renderer.g().attr({
                        class: "dxm-layers",
                        "clip-path": this._clip.id
                    }).append(renderer.root).enableLinks();
                    this._subscribeToTracker(params.tracker, renderer, params.eventTrigger);
                    this._dataReady = params.dataReady
                }
                MapLayerCollection.prototype = {
                    constructor: MapLayerCollection,
                    dispose: function() {
                        this._clip.dispose();
                        this._layers.forEach(l => l.dispose());
                        this._offTracker();
                        this._params = this._offTracker = this._layers = this._layerByName = this._clip = this._background = this._container = null
                    },
                    _subscribeToTracker: function(tracker, renderer, eventTrigger) {
                        const that = this;
                        that._offTracker = tracker.on({
                            click: function(arg) {
                                const offset = renderer.getRootOffset();
                                const layer = that.byName(arg.data.name);
                                arg.$event.x = arg.x - offset.left;
                                arg.$event.y = arg.y - offset.top;
                                if (layer) {
                                    layer.raiseClick(arg.data.index, arg.$event)
                                } else if ("background" === arg.data.name) {
                                    eventTrigger("click", {
                                        event: arg.$event
                                    })
                                }
                            },
                            "hover-on": function(arg) {
                                const layer = that.byName(arg.data.name);
                                if (layer) {
                                    layer.hoverItem(arg.data.index, true)
                                }
                            },
                            "hover-off": function(arg) {
                                const layer = that.byName(arg.data.name);
                                if (layer) {
                                    layer.hoverItem(arg.data.index, false)
                                }
                            }
                        })
                    },
                    setOptions(options) {
                        const that = this;
                        const optionList = options ? _isArray(options) ? options : [options] : [];
                        let layers = that._layers;
                        let readyCallbacks = [];
                        const needToCreateLayers = optionList.length !== layers.length || layers.some((l, i) => {
                            const name = getName(optionList, i);
                            return (0, _type.isDefined)(name) && name !== l.proxy.name
                        });
                        if (needToCreateLayers) {
                            that._params.tracker.reset();
                            that._layers.forEach(l => l.dispose());
                            const layerByName = that._layerByName = {};
                            that._layers = layers = [];
                            for (let i = 0, ii = optionList.length; i < ii; ++i) {
                                const name = getName(optionList, i) || "map-layer-" + i;
                                const layer = layers[i] = new MapLayer(that._params, that._container, name, i);
                                layerByName[name] = layer
                            }
                        }
                        layers.forEach((l, i) => {
                            l.setOptions(optionList[i])
                        });
                        readyCallbacks = layers.map(l => l.getDataReadyCallback());
                        readyCallbacks.length && _deferred.when.apply(void 0, readyCallbacks).done(that._dataReady)
                    },
                    _updateClip: function() {
                        const rect = this._rect;
                        const bw = this._borderWidth;
                        this._clip.attr({
                            x: rect[0] + bw,
                            y: rect[1] + bw,
                            width: _max(rect[2] - 2 * bw, 0),
                            height: _max(rect[3] - 2 * bw, 0)
                        })
                    },
                    setBackgroundOptions: function(options) {
                        this._background.attr({
                            stroke: options.borderColor,
                            "stroke-width": options.borderWidth,
                            fill: options.color
                        });
                        this._borderWidth = _max(options.borderWidth, 0);
                        this._updateClip()
                    },
                    setRect: function(rect) {
                        this._rect = rect;
                        this._background.attr({
                            x: rect[0],
                            y: rect[1],
                            width: rect[2],
                            height: rect[3]
                        });
                        this._updateClip()
                    },
                    byIndex: function(index) {
                        return this._layers[index]
                    },
                    byName: function(name) {
                        return this._layerByName[name]
                    },
                    items: function() {
                        return this._layers
                    }
                }
            },
        102:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/vector_map/projection.js ***!
              \**************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                Object.defineProperty(exports, "projection", {
                    enumerable: true,
                    get: function() {
                        return _projection.projection
                    }
                });
                var _projection = __webpack_require__( /*! ./projection.main */ 14316);
                const _min = Math.min;
                const _max = Math.max;
                const _sin = Math.sin;
                const _asin = Math.asin;
                const _tan = Math.tan;
                const _atan = Math.atan;
                const _exp = Math.exp;
                const _log = Math.log;
                const PI = Math.PI;
                const PI_DIV_4 = PI / 4;
                const RADIANS = PI / 180;
                const MERCATOR_LAT_BOUND = (2 * _atan(_exp(PI)) - PI / 2) / RADIANS;
                const MILLER_LAT_BOUND = (2.5 * _atan(_exp(.8 * PI)) - .625 * PI) / RADIANS;

                function clamp(value, threshold) {
                    return _max(_min(value, +threshold), -threshold)
                }
                _projection.projection.add("mercator", (0, _projection.projection)({
                    aspectRatio: 1,
                    to: function(coordinates) {
                        return [coordinates[0] / 180, _log(_tan(PI_DIV_4 + clamp(coordinates[1], MERCATOR_LAT_BOUND) * RADIANS / 2)) / PI]
                    },
                    from: function(coordinates) {
                        return [180 * coordinates[0], (2 * _atan(_exp(coordinates[1] * PI)) - PI / 2) / RADIANS]
                    }
                }));
                _projection.projection.add("equirectangular", (0, _projection.projection)({
                    aspectRatio: 2,
                    to: function(coordinates) {
                        return [coordinates[0] / 180, coordinates[1] / 90]
                    },
                    from: function(coordinates) {
                        return [180 * coordinates[0], 90 * coordinates[1]]
                    }
                }));
                _projection.projection.add("lambert", (0, _projection.projection)({
                    aspectRatio: 2,
                    to: function(coordinates) {
                        return [coordinates[0] / 180, _sin(clamp(coordinates[1], 90) * RADIANS)]
                    },
                    from: function(coordinates) {
                        return [180 * coordinates[0], _asin(clamp(coordinates[1], 1)) / RADIANS]
                    }
                }));
                _projection.projection.add("miller", (0, _projection.projection)({
                    aspectRatio: 1,
                    to: function(coordinates) {
                        return [coordinates[0] / 180, 1.25 * _log(_tan(PI_DIV_4 + clamp(coordinates[1], MILLER_LAT_BOUND) * RADIANS * .4)) / PI]
                    },
                    from: function(coordinates) {
                        return [180 * coordinates[0], (2.5 * _atan(_exp(.8 * coordinates[1] * PI)) - .625 * PI) / RADIANS]
                    }
                }))
            },
        14316:
            /*!*******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/vector_map/projection.main.js ***!
              \*******************************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.projection = exports.Projection = void 0;
                var _extend = __webpack_require__( /*! ../../core/utils/extend */ 13306);
                var _event_emitter = __webpack_require__( /*! ./event_emitter */ 63832);
                const _Number = Number;
                const _min = Math.min;
                const _max = Math.max;
                const _abs = Math.abs;
                const _round = Math.round;
                const _ln = Math.log;
                const _pow = Math.pow;
                const TWO_TO_LN2 = 2 / Math.LN2;
                const DEFAULT_CENTER = [NaN, NaN];

                function floatsEqual(f1, f2) {
                    return _abs(f1 - f2) < 1e-8
                }

                function arraysEqual(a1, a2) {
                    return floatsEqual(a1[0], a2[0]) && floatsEqual(a1[1], a2[1])
                }

                function parseAndClamp(value, minValue, maxValue, defaultValue) {
                    const val = _Number(value);
                    return isFinite(val) ? _min(_max(val, minValue), maxValue) : defaultValue
                }

                function parseAndClampArray(value, minValue, maxValue, defaultValue) {
                    return [parseAndClamp(value[0], minValue[0], maxValue[0], defaultValue[0]), parseAndClamp(value[1], minValue[1], maxValue[1], defaultValue[1])]
                }

                function getEngine(engine) {
                    return engine instanceof Engine && engine || projection.get(engine) || projection(engine) || projection.get("mercator")
                }
                const Projection = function(parameters) {
                    this._initEvents();
                    this._params = parameters;
                    this._engine = getEngine();
                    this._center = this._engine.center();
                    this._adjustCenter()
                };
                exports.Projection = Projection;
                Projection.prototype = {
                    constructor: Projection,
                    _minZoom: 1,
                    _maxZoom: 256,
                    _zoom: 1,
                    _center: DEFAULT_CENTER,
                    _canvas: {},
                    _scale: [],
                    dispose: function() {
                        this._disposeEvents()
                    },
                    setEngine: function(value) {
                        const that = this;
                        const engine = getEngine(value);
                        if (that._engine !== engine) {
                            that._engine = engine;
                            that._fire("engine");
                            if (that._changeCenter(engine.center())) {
                                that._triggerCenterChanged()
                            }
                            if (that._changeZoom(that._minZoom)) {
                                that._triggerZoomChanged()
                            }
                            that._adjustCenter();
                            that._setupScreen()
                        }
                    },
                    setBounds: function(bounds) {
                        if (void 0 !== bounds) {
                            this.setEngine(this._engine.original().bounds(bounds))
                        }
                    },
                    _setupScreen: function() {
                        const that = this;
                        const canvas = that._canvas;
                        const width = canvas.width;
                        const height = canvas.height;
                        const engine = that._engine;
                        const aspectRatio = engine.ar();
                        that._x0 = canvas.left + width / 2;
                        that._y0 = canvas.top + height / 2;
                        const min = [that.project([engine.min()[0], 0])[0], that.project([0, engine.min()[1]])[1]];
                        const max = [that.project([engine.max()[0], 0])[0], that.project([0, engine.max()[1]])[1]];
                        const screenAR = width / height;
                        const boundsAR = _abs(max[0] - min[0]) / _abs(max[1] - min[1]);
                        let correction;
                        if (isNaN(boundsAR) || 0 === boundsAR || _min(screenAR, aspectRatio) <= aspectRatio * boundsAR && aspectRatio * boundsAR <= _max(screenAR, aspectRatio)) {
                            correction = 1
                        } else {
                            correction = boundsAR > 1 ? boundsAR : 1 / boundsAR
                        }
                        if (aspectRatio * boundsAR >= screenAR) {
                            that._xRadius = width / 2 / correction;
                            that._yRadius = width / 2 / (aspectRatio * correction)
                        } else {
                            that._xRadius = height / 2 * (aspectRatio / correction);
                            that._yRadius = height / 2 / correction
                        }
                        that._fire("screen")
                    },
                    setSize: function(canvas) {
                        this._canvas = canvas;
                        this._setupScreen()
                    },
                    getCanvas: function() {
                        return this._canvas
                    },
                    _toScreen: function(coordinates) {
                        return [this._x0 + this._xRadius * coordinates[0], this._y0 + this._yRadius * coordinates[1]]
                    },
                    _fromScreen: function(coordinates) {
                        return [(coordinates[0] - this._x0) / this._xRadius, (coordinates[1] - this._y0) / this._yRadius]
                    },
                    _toTransformed: function(coordinates) {
                        return [coordinates[0] * this._zoom + this._xCenter, coordinates[1] * this._zoom + this._yCenter]
                    },
                    _toTransformedFast: function(coordinates) {
                        return [coordinates[0] * this._zoom, coordinates[1] * this._zoom]
                    },
                    _fromTransformed: function(coordinates) {
                        return [(coordinates[0] - this._xCenter) / this._zoom, (coordinates[1] - this._yCenter) / this._zoom]
                    },
                    _adjustCenter: function() {
                        const center = this._engine.project(this._center);
                        this._xCenter = -center[0] * this._zoom || 0;
                        this._yCenter = -center[1] * this._zoom || 0
                    },
                    project: function(coordinates) {
                        return this._engine.project(coordinates)
                    },
                    transform: function(coordinates) {
                        return this._toScreen(this._toTransformedFast(coordinates))
                    },
                    isInvertible: function() {
                        return this._engine.isInvertible()
                    },
                    getSquareSize: function(size) {
                        return [size[0] * this._zoom * this._xRadius, size[1] * this._zoom * this._yRadius]
                    },
                    getZoom: function() {
                        return this._zoom
                    },
                    _changeZoom: function(value) {
                        const that = this;
                        const oldZoom = that._zoom;
                        const newZoom = that._zoom = parseAndClamp(value, that._minZoom, that._maxZoom, that._minZoom);
                        const isChanged = !floatsEqual(oldZoom, newZoom);
                        if (isChanged) {
                            that._adjustCenter();
                            that._fire("zoom")
                        }
                        return isChanged
                    },
                    setZoom: function(value) {
                        if (this._engine.isInvertible() && this._changeZoom(value)) {
                            this._triggerZoomChanged()
                        }
                    },
                    getScaledZoom: function() {
                        return _round((this._scale.length - 1) * _ln(this._zoom) / _ln(this._maxZoom))
                    },
                    setScaledZoom: function(scaledZoom) {
                        this.setZoom(this._scale[_round(scaledZoom)])
                    },
                    changeScaledZoom: function(deltaZoom) {
                        this.setZoom(this._scale[_max(_min(_round(this.getScaledZoom() + deltaZoom), this._scale.length - 1), 0)])
                    },
                    getZoomScalePartition: function() {
                        return this._scale.length - 1
                    },
                    _setupScaling: function() {
                        const that = this;
                        const k = _max(_round(TWO_TO_LN2 * _ln(that._maxZoom)), 4);
                        const step = _pow(that._maxZoom, 1 / k);
                        let zoom = that._minZoom;
                        that._scale = [zoom];
                        for (let i = 1; i <= k; ++i) {
                            that._scale.push(zoom *= step)
                        }
                    },
                    setMaxZoom: function(maxZoom) {
                        const that = this;
                        that._minZoom = 1;
                        that._maxZoom = parseAndClamp(maxZoom, that._minZoom, _Number.MAX_VALUE, 256);
                        that._setupScaling();
                        if (that._zoom > that._maxZoom) {
                            that.setZoom(that._maxZoom)
                        }
                        that._fire("max-zoom")
                    },
                    getCenter: function() {
                        return this._center.slice()
                    },
                    setCenter: function(value) {
                        if (this._engine.isInvertible() && this._changeCenter(value || [])) {
                            this._triggerCenterChanged()
                        }
                    },
                    _changeCenter: function(value) {
                        const that = this;
                        const engine = that._engine;
                        const oldCenter = that._center;
                        const newCenter = that._center = parseAndClampArray(value, engine.min(), engine.max(), engine.center());
                        const isChanged = !arraysEqual(oldCenter, newCenter);
                        if (isChanged) {
                            that._adjustCenter();
                            that._fire("center")
                        }
                        return isChanged
                    },
                    _triggerCenterChanged: function() {
                        this._params.centerChanged(this.getCenter())
                    },
                    _triggerZoomChanged: function() {
                        this._params.zoomChanged(this.getZoom())
                    },
                    setCenterByPoint: function(coordinates, screenPosition) {
                        const p = this._engine.project(coordinates);
                        const q = this._fromScreen(screenPosition);
                        this.setCenter(this._engine.unproject([-q[0] / this._zoom + p[0], -q[1] / this._zoom + p[1]]))
                    },
                    beginMoveCenter: function() {
                        if (this._engine.isInvertible()) {
                            this._moveCenter = this._center
                        }
                    },
                    endMoveCenter: function() {
                        const that = this;
                        if (that._moveCenter) {
                            if (!arraysEqual(that._moveCenter, that._center)) {
                                that._triggerCenterChanged()
                            }
                            that._moveCenter = null
                        }
                    },
                    moveCenter: function(shift) {
                        const that = this;
                        if (that._moveCenter) {
                            const current = that.toScreenPoint(that._center);
                            that._changeCenter(that.fromScreenPoint([current[0] + shift[0], current[1] + shift[1]]))
                        }
                    },
                    getViewport: function() {
                        const unproject = this._engine.unproject;
                        const lt = unproject(this._fromTransformed([-1, -1]));
                        const lb = unproject(this._fromTransformed([-1, 1]));
                        const rt = unproject(this._fromTransformed([1, -1]));
                        const rb = unproject(this._fromTransformed([1, 1]));
                        const minMax = findMinMax([selectFarthestPoint(lt[0], lb[0], rt[0], rb[0]), selectFarthestPoint(lt[1], rt[1], lb[1], rb[1])], [selectFarthestPoint(rt[0], rb[0], lt[0], lb[0]), selectFarthestPoint(lb[1], rb[1], lt[1], rt[1])]);
                        return [].concat(minMax.min, minMax.max)
                    },
                    setViewport: function(viewport) {
                        const engine = this._engine;
                        const data = viewport ? function(project, unproject, viewport) {
                            const lt = project([viewport[0], viewport[3]]);
                            const lb = project([viewport[0], viewport[1]]);
                            const rt = project([viewport[2], viewport[3]]);
                            const rb = project([viewport[2], viewport[1]]);
                            const l = selectClosestPoint(lt[0], lb[0], rt[0], rb[0]);
                            const r = selectClosestPoint(rt[0], rb[0], lt[0], lb[0]);
                            const t = selectClosestPoint(lt[1], rt[1], lb[1], rb[1]);
                            const b = selectClosestPoint(lb[1], rb[1], lt[1], rt[1]);
                            return [2 / _max(_abs(l - r), _abs(t - b)), unproject([(l + r) / 2, (t + b) / 2])]
                        }(engine.project, engine.unproject, viewport) : [this._minZoom, engine.center()];
                        this.setZoom(data[0]);
                        this.setCenter(data[1])
                    },
                    getTransform: function() {
                        return {
                            translateX: this._xCenter * this._xRadius,
                            translateY: this._yCenter * this._yRadius
                        }
                    },
                    fromScreenPoint: function(coordinates) {
                        return this._engine.unproject(this._fromTransformed(this._fromScreen(coordinates)))
                    },
                    toScreenPoint: function(coordinates) {
                        return this._toScreen(this._toTransformed(this._engine.project(coordinates)))
                    },
                    _eventNames: ["engine", "screen", "center", "zoom", "max-zoom"]
                };
                (0, _event_emitter.makeEventEmitter)(Projection);

                function selectFarthestPoint(point1, point2, basePoint1, basePoint2) {
                    const basePoint = (basePoint1 + basePoint2) / 2;
                    return _abs(point1 - basePoint) > _abs(point2 - basePoint) ? point1 : point2
                }

                function selectClosestPoint(point1, point2, basePoint1, basePoint2) {
                    const basePoint = (basePoint1 + basePoint2) / 2;
                    return _abs(point1 - basePoint) < _abs(point2 - basePoint) ? point1 : point2
                }

                function setMinMax(engine, p1, p2) {
                    const {
                        min: min,
                        max: max
                    } = findMinMax(p1, p2);
                    engine.min = returnArray(min);
                    engine.max = returnArray(max)
                }
                const Engine = function() {
                    function Engine(parameters) {
                        const project = (method = parameters.to, arg => invertVerticalAxis(method(arg)));
                        var method;
                        const unproject = parameters.from ? function(method) {
                            return arg => method(invertVerticalAxis(arg))
                        }(parameters.from) : returnValue(DEFAULT_CENTER);
                        this.project = project;
                        this.unproject = unproject;
                        this.original = returnValue(this);
                        this.source = function() {
                            return (0, _extend.extend)({}, parameters)
                        };
                        this.isInvertible = returnValue(!!parameters.from);
                        this.ar = returnValue(parameters.aspectRatio > 0 ? _Number(parameters.aspectRatio) : 1);
                        this.center = returnArray(unproject([0, 0]));
                        setMinMax(this, [unproject([-1, 0])[0], unproject([0, 1])[1]], [unproject([1, 0])[0], unproject([0, -1])[1]])
                    }
                    var _proto = Engine.prototype;
                    _proto.aspectRatio = function(_aspectRatio) {
                        const engine = new Engine((0, _extend.extend)(this.source(), {
                            aspectRatio: _aspectRatio
                        }));
                        engine.original = this.original;
                        engine.min = this.min;
                        engine.max = this.max;
                        return engine
                    };
                    _proto.bounds = function(_bounds) {
                        _bounds = _bounds || [];
                        const parameters = this.source();
                        const min = this.min();
                        const max = this.max();
                        const b1 = parseAndClampArray([_bounds[0], _bounds[1]], min, max, min);
                        const b2 = parseAndClampArray([_bounds[2], _bounds[3]], min, max, max);
                        const p1 = parameters.to(b1);
                        const p2 = parameters.to(b2);
                        const delta = _min(_abs(p2[0] - p1[0]) > 1 / 3600 / 180 / 10 ? _abs(p2[0] - p1[0]) : 2, _abs(p2[1] - p1[1]) > 1 / 3600 / 180 / 10 ? _abs(p2[1] - p1[1]) : 2);
                        if (delta < 2) {
                            (0, _extend.extend)(parameters, function(project, unproject, p1, p2, delta) {
                                const x0 = (p1[0] + p2[0]) / 2 - delta / 2;
                                const y0 = (p1[1] + p2[1]) / 2 - delta / 2;
                                const k = 2 / delta;
                                return {
                                    to: function(coordinates) {
                                        const [p0, p1] = project(coordinates);
                                        return [(p0 - x0) * k - 1, (p1 - y0) * k - 1]
                                    },
                                    from: function(coordinates) {
                                        return unproject([x0 + (coordinates[0] + 1) / k, y0 + (coordinates[1] + 1) / k])
                                    }
                                }
                            }(parameters.to, parameters.from, p1, p2, delta))
                        }
                        const engine = new Engine(parameters);
                        engine.original = this.original;
                        setMinMax(engine, b1, b2);
                        return engine
                    };
                    return Engine
                }();

                function invertVerticalAxis(pair) {
                    return [pair[0], -pair[1]]
                }

                function returnValue(value) {
                    return () => value
                }

                function returnArray(value) {
                    return () => value.slice()
                }

                function findMinMax(p1, p2) {
                    return {
                        min: [_min(p1[0], p2[0]), _min(p1[1], p2[1])],
                        max: [_max(p1[0], p2[0]), _max(p1[1], p2[1])]
                    }
                }
                const projection = function(parameters) {
                    return parameters && parameters.to ? new Engine(parameters) : null
                };
                exports.projection = projection;
                const projectionsCache = {};
                projection.get = function(name) {
                    return projectionsCache[name] || null
                };
                projection.add = function(name, engine) {
                    engine = engine instanceof Engine && engine || projection(engine);
                    if (!projectionsCache[name] && engine) {
                        projectionsCache[name] = engine
                    }
                    return projection
                }
            },
        8068:
            /*!******************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/vector_map/tooltip_viewer.js ***!
              \******************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.TooltipViewer = TooltipViewer;

                function TooltipViewer(params) {
                    this._subscribeToTracker(params.tracker, params.tooltip, params.layerCollection)
                }
                TooltipViewer.prototype = {
                    constructor: TooltipViewer,
                    dispose: function() {
                        this._offTracker();
                        this._offTracker = null
                    },
                    _subscribeToTracker: function(tracker, tooltip, layerCollection) {
                        this._offTracker = tracker.on({
                            "focus-on": function(arg) {
                                let layer;
                                let proxy;
                                if (tooltip.isEnabled()) {
                                    layer = layerCollection.byName(arg.data.name);
                                    proxy = layer && layer.getProxy(arg.data.index);
                                    const callback = result => {
                                        result && arg.done(result)
                                    };
                                    proxy && callback(tooltip.show(proxy, {
                                        x: arg.x,
                                        y: arg.y,
                                        offset: 12
                                    }, {
                                        target: proxy
                                    }, void 0, callback))
                                }
                            },
                            "focus-move": function(arg) {
                                tooltip.move(arg.x, arg.y, 12)
                            },
                            "focus-off": function() {
                                tooltip.hide()
                            }
                        })
                    }
                }
            },
        49497:
            /*!***********************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/vector_map/tracker.js ***!
              \***********************************************************************/
            function(__unused_webpack_module, exports, __webpack_require__) {
                exports.Tracker = Tracker;
                var _events_engine = _interopRequireDefault(__webpack_require__( /*! ../../events/core/events_engine */ 55994));
                var _window = __webpack_require__( /*! ../../core/utils/window */ 58201);
                var _dom_adapter = _interopRequireDefault(__webpack_require__( /*! ../../core/dom_adapter */ 73349));
                var _event_emitter = __webpack_require__( /*! ./event_emitter */ 63832);
                var _index = __webpack_require__( /*! ../../events/utils/index */ 39611);
                var _wheel = __webpack_require__( /*! ../../events/core/wheel */ 765);
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const navigator = (0, _window.getNavigator)();
                const _math = Math;
                const _abs = _math.abs;
                const _sqrt = _math.sqrt;
                const _round = _math.round;
                const _addNamespace = _index.addNamespace;
                const _NAME = "dxVectorMap";
                let EVENTS;
                let Focus;
                ! function() {
                    let flags = [navigator.pointerEnabled, navigator.msPointerEnabled, (0, _window.hasProperty)("ontouchstart")];
                    EVENTS = {
                        start: selectItem(flags, ["pointerdown", "MSPointerDown", "touchstart mousedown", "mousedown"]),
                        move: selectItem(flags, ["pointermove", "MSPointerMove", "touchmove mousemove", "mousemove"]),
                        end: selectItem(flags, ["pointerup", "MSPointerUp", "touchend mouseup", "mouseup"]),
                        wheel: _addNamespace(_wheel.name, _NAME)
                    }
                }();

                function Tracker(parameters) {
                    const that = this;
                    that._root = parameters.root;
                    that._createEventHandlers(parameters.dataKey);
                    that._createProjectionHandlers(parameters.projection);
                    that._initEvents();
                    that._focus = new Focus((function(name, arg) {
                        that._fire(name, arg)
                    }));
                    that._attachHandlers()
                }
                Tracker.prototype = {
                    constructor: Tracker,
                    dispose: function() {
                        this._detachHandlers();
                        this._disposeEvents();
                        this._focus.dispose();
                        this._root = this._focus = this._docHandlers = this._rootHandlers = null
                    },
                    _eventNames: ["start", "move", "end", "zoom", "click", "hover-on", "hover-off", "focus-on", "focus-off", "focus-move"],
                    _startClick: function(event, data) {
                        if (!data) {
                            return
                        }
                        const coords = getEventCoords(event);
                        this._clickState = {
                            x: coords.x,
                            y: coords.y,
                            threshold: isTouchEvent(event) ? 20 : 5,
                            time: Date.now()
                        }
                    },
                    _endClick: function(event, data) {
                        const state = this._clickState;
                        let threshold;
                        let coords;
                        if (!state) {
                            return
                        }
                        if (data && Date.now() - state.time <= 500) {
                            threshold = state.threshold;
                            coords = getEventCoords(event);
                            if (_abs(coords.x - state.x) <= threshold && _abs(coords.y - state.y) <= threshold) {
                                this._fire("click", {
                                    data: data,
                                    x: coords.x,
                                    y: coords.y,
                                    $event: event
                                })
                            }
                        }
                        this._clickState = null
                    },
                    _startDrag: function(event, data) {
                        if (!data) {
                            return
                        }
                        const coords = getEventCoords(event);
                        const state = this._dragState = {
                            x: coords.x,
                            y: coords.y,
                            data: data
                        };
                        this._fire("start", {
                            x: state.x,
                            y: state.y,
                            data: state.data
                        })
                    },
                    _moveDrag: function(event, data) {
                        const state = this._dragState;
                        if (!state) {
                            return
                        }
                        const coords = getEventCoords(event);
                        const threshold = isTouchEvent(event) ? 10 : 5;
                        if (state.active || _abs(coords.x - state.x) > threshold || _abs(coords.y - state.y) > threshold) {
                            state.x = coords.x;
                            state.y = coords.y;
                            state.active = true;
                            state.data = data || {};
                            this._fire("move", {
                                x: state.x,
                                y: state.y,
                                data: state.data
                            })
                        }
                    },
                    _endDrag: function() {
                        const state = this._dragState;
                        if (!state) {
                            return
                        }
                        this._dragState = null;
                        this._fire("end", {
                            x: state.x,
                            y: state.y,
                            data: state.data
                        })
                    },
                    _wheelZoom: function(event, data) {
                        if (!data) {
                            return
                        }
                        const lock = this._wheelLock;
                        const time = Date.now();
                        if (time - lock.time <= 50) {
                            return
                        }
                        if (time - lock.dirTime > 300) {
                            lock.dir = 0
                        }
                        const delta = function(delta, lock) {
                            if (0 === delta) {
                                return 0
                            }
                            let _delta = _abs(delta);
                            const sign = _round(delta / _delta);
                            if (lock.dir && sign !== lock.dir) {
                                return 0
                            }
                            lock.dir = sign;
                            if (_delta < .1) {
                                _delta = 0
                            } else if (_delta < 1) {
                                _delta = 1
                            } else if (_delta > 4) {
                                _delta = 4
                            } else {
                                _delta = _round(_delta)
                            }
                            return sign * _delta
                        }(event.delta / 120 || 0, lock);
                        if (0 === delta) {
                            return
                        }
                        const coords = getEventCoords(event);
                        this._fire("zoom", {
                            delta: delta,
                            x: coords.x,
                            y: coords.y
                        });
                        lock.time = lock.dirTime = time
                    },
                    _startZoom: function(event, data) {
                        if (!isTouchEvent(event) || !data) {
                            return
                        }
                        const state = this._zoomState = this._zoomState || {};
                        let coords;
                        let pointer2;
                        if (state.pointer1 && state.pointer2) {
                            return
                        }
                        if (void 0 === state.pointer1) {
                            state.pointer1 = getPointerId(event) || 0;
                            coords = getMultitouchEventCoords(event, state.pointer1);
                            state.x1 = state.x1_0 = coords.x;
                            state.y1 = state.y1_0 = coords.y
                        }
                        if (void 0 === state.pointer2) {
                            pointer2 = getPointerId(event) || 1;
                            if (pointer2 !== state.pointer1) {
                                coords = getMultitouchEventCoords(event, pointer2);
                                if (coords) {
                                    state.x2 = state.x2_0 = coords.x;
                                    state.y2 = state.y2_0 = coords.y;
                                    state.pointer2 = pointer2;
                                    state.ready = true;
                                    this._endDrag()
                                }
                            }
                        }
                    },
                    _moveZoom: function(event) {
                        const state = this._zoomState;
                        let coords;
                        if (!state || !isTouchEvent(event)) {
                            return
                        }
                        if (void 0 !== state.pointer1) {
                            coords = getMultitouchEventCoords(event, state.pointer1);
                            if (coords) {
                                state.x1 = coords.x;
                                state.y1 = coords.y
                            }
                        }
                        if (void 0 !== state.pointer2) {
                            coords = getMultitouchEventCoords(event, state.pointer2);
                            if (coords) {
                                state.x2 = coords.x;
                                state.y2 = coords.y
                            }
                        }
                    },
                    _endZoom: function(event) {
                        const state = this._zoomState;
                        let startDistance;
                        let currentDistance;
                        if (!state || !isTouchEvent(event)) {
                            return
                        }
                        if (state.ready) {
                            startDistance = getDistance(state.x1_0, state.y1_0, state.x2_0, state.y2_0);
                            currentDistance = getDistance(state.x1, state.y1, state.x2, state.y2);
                            this._fire("zoom", {
                                ratio: currentDistance / startDistance,
                                x: (state.x1_0 + state.x2_0) / 2,
                                y: (state.y1_0 + state.y2_0) / 2
                            })
                        }
                        this._zoomState = null
                    },
                    _startHover: function(event, data) {
                        this._doHover(event, data, true)
                    },
                    _moveHover: function(event, data) {
                        this._doHover(event, data, false)
                    },
                    _doHover: function(event, data, isTouch) {
                        const that = this;
                        if (that._dragState && that._dragState.active || that._zoomState && that._zoomState.ready) {
                            that._cancelHover();
                            return
                        }
                        if (isTouchEvent(event) !== isTouch || that._hoverTarget === event.target || that._hoverState && that._hoverState.data === data) {
                            return
                        }
                        that._cancelHover();
                        if (data) {
                            that._hoverState = {
                                data: data
                            };
                            that._fire("hover-on", {
                                data: data
                            })
                        }
                        that._hoverTarget = event.target
                    },
                    _cancelHover: function() {
                        const state = this._hoverState;
                        this._hoverState = this._hoverTarget = null;
                        if (state) {
                            this._fire("hover-off", {
                                data: state.data
                            })
                        }
                    },
                    _startFocus: function(event, data) {
                        this._doFocus(event, data, true)
                    },
                    _moveFocus: function(event, data) {
                        this._doFocus(event, data, false)
                    },
                    _doFocus: function(event, data, isTouch) {
                        const that = this;
                        if (that._dragState && that._dragState.active || that._zoomState && that._zoomState.ready) {
                            that._cancelFocus();
                            return
                        }
                        if (isTouchEvent(event) !== isTouch) {
                            return
                        }
                        that._focus.turnOff();
                        data && that._focus.turnOn(data, getEventCoords(event))
                    },
                    _cancelFocus: function() {
                        this._focus.cancel()
                    },
                    _createEventHandlers: function(DATA_KEY) {
                        const that = this;
                        that._docHandlers = {};
                        that._rootHandlers = {};
                        that._docHandlers[EVENTS.start] = function(event) {
                            const isTouch = isTouchEvent(event);
                            const data = getData(event);
                            if (isTouch && !that._isTouchEnabled) {
                                return
                            }
                            if (data) {
                                event.preventDefault()
                            }
                            that._startClick(event, data);
                            that._startDrag(event, data);
                            that._startZoom(event, data);
                            that._startHover(event, data);
                            that._startFocus(event, data)
                        };
                        that._docHandlers[EVENTS.move] = function(event) {
                            const isTouch = isTouchEvent(event);
                            const data = getData(event);
                            if (isTouch && !that._isTouchEnabled) {
                                return
                            }
                            that._moveDrag(event, data);
                            that._moveZoom(event, data);
                            that._moveHover(event, data);
                            that._moveFocus(event, data)
                        };
                        that._docHandlers[EVENTS.end] = function(event) {
                            const isTouch = isTouchEvent(event);
                            const data = getData(event);
                            if (isTouch && !that._isTouchEnabled) {
                                return
                            }
                            that._endClick(event, data);
                            that._endDrag(event, data);
                            that._endZoom(event, data)
                        };
                        that._rootHandlers[EVENTS.wheel] = function(event) {
                            that._cancelFocus();
                            if (!that._isWheelEnabled) {
                                return
                            }
                            const data = getData(event);
                            if (data) {
                                event.preventDefault();
                                event.stopPropagation();
                                that._wheelZoom(event, data)
                            }
                        };
                        that._wheelLock = {
                            dir: 0
                        };

                        function getData(event) {
                            const target = event.target;
                            return ("tspan" === target.tagName ? target.parentNode : target)[DATA_KEY]
                        }
                    },
                    _createProjectionHandlers: function(projection) {
                        const that = this;
                        projection.on({
                            center: handler,
                            zoom: handler
                        });

                        function handler() {
                            that._cancelFocus()
                        }
                    },
                    reset: function() {
                        this._clickState = null;
                        this._endDrag();
                        this._cancelHover();
                        this._cancelFocus()
                    },
                    setOptions: function(options) {
                        this.reset();
                        this._detachHandlers();
                        this._isTouchEnabled = !!(0, _utils.parseScalar)(options.touchEnabled, true);
                        this._isWheelEnabled = !!(0, _utils.parseScalar)(options.wheelEnabled, true);
                        this._attachHandlers()
                    },
                    _detachHandlers: function() {
                        const that = this;
                        if (that._isTouchEnabled) {
                            that._root.css({
                                "touch-action": "",
                                "-webkit-user-select": ""
                            }).off(_addNamespace("MSHoldVisual", _NAME)).off(_addNamespace("contextmenu", _NAME))
                        }
                        _events_engine.default.off(_dom_adapter.default.getDocument(), that._docHandlers);
                        that._root.off(that._rootHandlers)
                    },
                    _attachHandlers: function() {
                        const that = this;
                        if (that._isTouchEnabled) {
                            that._root.css({
                                "touch-action": "none",
                                "-webkit-user-select": "none"
                            }).on(_addNamespace("MSHoldVisual", _NAME), (function(event) {
                                event.preventDefault()
                            })).on(_addNamespace("contextmenu", _NAME), (function(event) {
                                isTouchEvent(event) && event.preventDefault()
                            }))
                        }
                        _events_engine.default.on(_dom_adapter.default.getDocument(), that._docHandlers);
                        that._root.on(that._rootHandlers)
                    }
                };
                Focus = function(fire) {
                    let that = this;
                    let _activeData = null;
                    let _data = null;
                    let _disabled = false;
                    let _offTimer = null;
                    let _x;
                    let _y;
                    that.dispose = function() {
                        clearTimeout(_offTimer);
                        that.turnOn = that.turnOff = that.cancel = that.dispose = that = fire = _activeData = _data = _offTimer = null
                    };
                    that.turnOn = function(data, coords) {
                        if (data === _data && _disabled) {
                            return
                        }
                        _disabled = false;
                        _data = data;
                        if (_activeData) {
                            _x = coords.x;
                            _y = coords.y;
                            if (_data === _activeData) {
                                fire("focus-move", {
                                    data: _data,
                                    x: _x,
                                    y: _y
                                });
                                onCheck(true)
                            } else {
                                fire("focus-on", {
                                    data: _data,
                                    x: _x,
                                    y: _y,
                                    done: onCheck
                                })
                            }
                        } else {
                            _x = coords.x;
                            _y = coords.y;
                            fire("focus-on", {
                                data: _data,
                                x: _x,
                                y: _y,
                                done: onCheck
                            })
                        }

                        function onCheck(result) {
                            _disabled = !result;
                            if (result) {
                                _activeData = _data;
                                clearTimeout(_offTimer);
                                _offTimer = null
                            }
                        }
                    };
                    that.turnOff = function() {
                        _data = null;
                        if (_activeData && !_disabled) {
                            _offTimer = _offTimer || setTimeout((function() {
                                _offTimer = null;
                                fire("focus-off", {
                                    data: _activeData
                                });
                                _activeData = null
                            }), 100)
                        }
                    };
                    that.cancel = function() {
                        clearTimeout(_offTimer);
                        if (_activeData) {
                            fire("focus-off", {
                                data: _activeData
                            })
                        }
                        _activeData = _data = _offTimer = null
                    }
                };
                (0, _event_emitter.makeEventEmitter)(Tracker);

                function getDistance(x1, y1, x2, y2) {
                    return _sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2))
                }

                function isTouchEvent(event) {
                    const type = event.originalEvent.type;
                    const pointerType = event.originalEvent.pointerType;
                    return /^touch/.test(type) || /^MSPointer/.test(type) && 4 !== pointerType || /^pointer/.test(type) && "mouse" !== pointerType
                }

                function selectItem(flags, items) {
                    let i = 0;
                    const ii = flags.length;
                    let item;
                    for (; i < ii; ++i) {
                        if (flags[i]) {
                            item = items[i];
                            break
                        }
                    }
                    return _addNamespace(item || items[i], _NAME)
                }

                function getEventCoords(event) {
                    const originalEvent = event.originalEvent;
                    const touch = originalEvent.touches && originalEvent.touches[0] || {};
                    return {
                        x: touch.pageX || originalEvent.pageX || event.pageX,
                        y: touch.pageY || originalEvent.pageY || event.pageY
                    }
                }

                function getPointerId(event) {
                    return event.originalEvent.pointerId
                }

                function getMultitouchEventCoords(event, pointerId) {
                    let originalEvent = event.originalEvent;
                    if (void 0 !== originalEvent.pointerId) {
                        originalEvent = originalEvent.pointerId === pointerId ? originalEvent : null
                    } else {
                        originalEvent = originalEvent.touches[pointerId]
                    }
                    return originalEvent ? {
                        x: originalEvent.pageX || event.pageX,
                        y: originalEvent.pageY || event.pageY
                    } : null
                }
            },
        13711:
            /*!**************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/vector_map/vector_map.js ***!
              \**************************************************************************/
            function(module, exports, __webpack_require__) {
                exports.default = void 0;
                var _utils = __webpack_require__( /*! ../core/utils */ 19157);
                var _projection = __webpack_require__( /*! ./projection.main */ 14316);
                var _control_bar = __webpack_require__( /*! ./control_bar/control_bar */ 17323);
                var _gesture_handler = __webpack_require__( /*! ./gesture_handler */ 3797);
                var _tracker = __webpack_require__( /*! ./tracker */ 49497);
                var _data_exchanger = __webpack_require__( /*! ./data_exchanger */ 93699);
                var _legend = __webpack_require__( /*! ./legend */ 7291);
                var _layout = __webpack_require__( /*! ./layout */ 39378);
                var _map_layer = __webpack_require__( /*! ./map_layer */ 15151);
                var _tooltip_viewer = __webpack_require__( /*! ./tooltip_viewer */ 8068);
                var _vector_map = __webpack_require__( /*! ./vector_map.utils */ 56145);
                __webpack_require__( /*! ./projection */ 102);
                var _m_base_widget = _interopRequireDefault(__webpack_require__( /*! ../../__internal/viz/core/m_base_widget */ 55845));
                var _component_registrator = _interopRequireDefault(__webpack_require__( /*! ../../core/component_registrator */ 99393));
                var _export = __webpack_require__( /*! ../core/export */ 82454);
                var _title = __webpack_require__( /*! ../core/title */ 17384);
                var _tooltip = __webpack_require__( /*! ../core/tooltip */ 14371);
                var _loading_indicator = __webpack_require__( /*! ../core/loading_indicator */ 64758);
                var _annotations = __webpack_require__( /*! ../core/annotations */ 77129);

                function _interopRequireDefault(obj) {
                    return obj && obj.__esModule ? obj : {
                        default: obj
                    }
                }
                const RE_STARTS_LAYERS = /^layers/;
                const RE_ENDS_DATA_SOURCE = /\.dataSource$/;

                function mergeBounds(sumBounds, dataBounds) {
                    return dataBounds ? [Math.min(dataBounds[0], dataBounds[2], sumBounds[0]), Math.min(dataBounds[1], dataBounds[3], sumBounds[3]), Math.max(dataBounds[0], dataBounds[2], sumBounds[2]), Math.max(dataBounds[1], dataBounds[3], sumBounds[1])] : sumBounds
                }
                const dxVectorMap = _m_base_widget.default.inherit({
                    _eventsMap: {
                        onClick: {
                            name: "click"
                        },
                        onCenterChanged: {
                            name: "centerChanged"
                        },
                        onZoomFactorChanged: {
                            name: "zoomFactorChanged"
                        },
                        onHoverChanged: {
                            name: "hoverChanged"
                        },
                        onSelectionChanged: {
                            name: "selectionChanged"
                        }
                    },
                    _rootClassPrefix: "dxm",
                    _rootClass: "dxm-vector-map",
                    _themeSection: "map",
                    _fontFields: ["layer:area.label.font", "layer:marker:dot.label.font", "layer:marker:bubble.label.font", "layer:marker:pie.label.font", "layer:marker:image.label.font", "legend.font", "legend.title.font", "legend.title.subtitle.font"],
                    _initLayerCollection: function(dataKey) {
                        const that = this;
                        that._layerCollection = new _map_layer.MapLayerCollection({
                            renderer: that._renderer,
                            projection: that._projection,
                            themeManager: that._themeManager,
                            tracker: that._tracker,
                            dataKey: dataKey,
                            eventTrigger: that._eventTrigger,
                            dataExchanger: that._dataExchanger,
                            tooltip: that._tooltip,
                            notifyDirty: that._notifyDirty,
                            notifyReady: that._notifyReady,
                            dataReady() {
                                let bounds;
                                if (that.option("getBoundsFromData") && !that.option("bounds")) {
                                    that._preventProjectionEvents();
                                    bounds = that._getBoundsFromData();
                                    that._projection.setBounds(bounds);
                                    that._allowProjectionEvents()
                                }
                                if (!that.option("projection")) {
                                    bounds = bounds || that._getBoundsFromData();
                                    if (Math.ceil(bounds[0]) < -180 || Math.ceil(bounds[3]) < -90 || Math.floor(bounds[2]) > 180 || Math.floor(bounds[1]) > 90) {
                                        const longitudeLength = bounds[2] - bounds[0];
                                        const latitudeLength = bounds[1] - bounds[3];
                                        that._projection.setEngine({
                                            to: coordinates => [2 * (coordinates[0] - bounds[0]) / longitudeLength - 1, 2 * (coordinates[1] - bounds[3]) / latitudeLength - 1],
                                            from: coordinates => [(coordinates[0] + 1) * longitudeLength / 2 + bounds[0], (coordinates[1] + 1) * latitudeLength / 2 + bounds[3]]
                                        })
                                    }
                                }
                            }
                        })
                    },
                    _getBoundsFromData() {
                        let bounds = this._getBoundingBoxFromDataSource();
                        if (!bounds) {
                            const layersBounds = this.getLayers().map(l => l.getBounds()).filter(x => void 0 !== x);
                            const boundsByData = (0, _map_layer.getMaxBound)(layersBounds);
                            if (boundsByData) {
                                bounds = boundsByData
                            }
                        }
                        bounds = bounds || [];
                        bounds = [bounds[0], bounds[3], bounds[2], bounds[1]];
                        return bounds
                    },
                    _initLegendsControl: function() {
                        this._legendsControl = new _legend.LegendsControl({
                            renderer: this._renderer,
                            container: this._root,
                            widget: this,
                            layoutControl: this._layoutControl,
                            themeManager: this._themeManager,
                            dataExchanger: this._dataExchanger,
                            notifyDirty: this._notifyDirty,
                            notifyReady: this._notifyReady
                        })
                    },
                    _initControlBar: function(dataKey) {
                        this._controlBar = new _control_bar.ControlBar({
                            renderer: this._renderer,
                            container: this._root,
                            layoutControl: this._layoutControl,
                            projection: this._projection,
                            tracker: this._tracker,
                            dataKey: dataKey
                        })
                    },
                    _initElements: function() {
                        const that = this;
                        const dataKey = (0, _vector_map.generateDataKey)();
                        let notifyCounter = 0;
                        let preventProjectionEvents;
                        that._preventProjectionEvents = function() {
                            preventProjectionEvents = true
                        };
                        that._allowProjectionEvents = function() {
                            preventProjectionEvents = false
                        };
                        that._notifyDirty = function() {
                            that._resetIsReady();
                            ++notifyCounter
                        };
                        that._notifyReady = function() {
                            that._allowProjectionEvents();
                            if (0 === --notifyCounter) {
                                that._drawn()
                            }
                        };
                        that._preventProjectionEvents();
                        that._dataExchanger = new _data_exchanger.DataExchanger;
                        that._projection = new _projection.Projection({
                            centerChanged: function(value) {
                                if (!preventProjectionEvents) {
                                    that._eventTrigger("centerChanged", {
                                        center: value
                                    })
                                }
                            },
                            zoomChanged: function(value) {
                                if (!preventProjectionEvents) {
                                    that._eventTrigger("zoomFactorChanged", {
                                        zoomFactor: value
                                    })
                                }
                            }
                        });
                        that._tracker = new _tracker.Tracker({
                            root: that._root,
                            projection: that._projection,
                            dataKey: dataKey
                        });
                        that._gestureHandler = new _gesture_handler.GestureHandler({
                            projection: that._projection,
                            renderer: that._renderer,
                            tracker: that._tracker
                        });
                        that._layoutControl = new _layout.LayoutControl(that);
                        that._layoutControl.suspend();
                        that._initLayerCollection(dataKey);
                        that._createHtmlStructure();
                        that._initControlBar(dataKey);
                        that._initLegendsControl();
                        that._prepareExtraElements();
                        that._tooltipViewer = new _tooltip_viewer.TooltipViewer({
                            tracker: that._tracker,
                            tooltip: that._tooltip,
                            layerCollection: that._layerCollection
                        })
                    },
                    _change_RESUME_LAYOUT: function() {
                        this._layoutControl.resume()
                    },
                    _initialChanges: ["PROJECTION", "RESUME_LAYOUT", "LAYOUT_INIT", "BOUNDS", "MAX_ZOOM_FACTOR", "ZOOM_FACTOR", "CENTER"],
                    _layoutChangesOrder: ["RESUME_LAYOUT", "LAYERS"],
                    _customChangesOrder: ["EXTRA_ELEMENTS"],
                    _initCore: function() {
                        this._root = this._renderer.root.attr({
                            align: "center",
                            cursor: "default"
                        });
                        this._initElements()
                    },
                    _disposeCore: function() {
                        this._controlBar.dispose();
                        this._gestureHandler.dispose();
                        this._tracker.dispose();
                        this._legendsControl.dispose();
                        this._layerCollection.dispose();
                        this._layoutControl.dispose();
                        this._tooltipViewer.dispose();
                        this._dataExchanger.dispose();
                        this._projection.dispose();
                        this._dataExchanger = this._gestureHandler = this._projection = this._tracker = this._layoutControl = this._root = this._layerCollection = this._controlBar = this._legendsControl = null
                    },
                    _setupInteraction: function() {
                        const options = {
                            centeringEnabled: !!(0, _utils.parseScalar)(this._getOption("panningEnabled", true), true),
                            zoomingEnabled: !!(0, _utils.parseScalar)(this._getOption("zoomingEnabled", true), true)
                        };
                        this._gestureHandler.setInteraction(options);
                        this._controlBar.setInteraction(options)
                    },
                    _getDefaultSize: function() {
                        return {
                            width: 800,
                            height: 400
                        }
                    },
                    _applySize: function(rect) {
                        const layout = {
                            left: rect[0],
                            top: rect[1],
                            width: rect[2] - rect[0],
                            height: rect[3] - rect[1],
                            right: 0,
                            bottom: 0
                        };
                        this._projection.setSize(layout);
                        this._layoutControl.setSize(layout);
                        this._layerCollection.setRect([layout.left, layout.top, layout.width, layout.height]);
                        this._requestChange(["EXTRA_ELEMENTS"])
                    },
                    _optionChanging: function(name, currentValue, nextValue) {
                        if (currentValue && nextValue) {
                            if (RE_STARTS_LAYERS.test(name)) {
                                if (currentValue.dataSource && nextValue.dataSource && currentValue !== nextValue) {
                                    currentValue.dataSource = null
                                } else if (RE_ENDS_DATA_SOURCE.test(name)) {
                                    this.option(name, null)
                                }
                            }
                        }
                    },
                    _applyChanges: function() {
                        this._notifyDirty();
                        this.callBase.apply(this, arguments);
                        this._notifyReady()
                    },
                    _optionChangesMap: {
                        background: "BACKGROUND",
                        layers: "LAYERS",
                        extraElements: "EXTRA_ELEMENTS",
                        controlBar: "CONTROL_BAR",
                        legends: "LEGENDS",
                        touchEnabled: "TRACKER",
                        wheelEnabled: "TRACKER",
                        panningEnabled: "INTERACTION",
                        zoomingEnabled: "INTERACTION",
                        projection: "PROJECTION",
                        bounds: "BOUNDS",
                        maxZoomFactor: "MAX_ZOOM_FACTOR",
                        zoomFactor: "ZOOM_FACTOR",
                        center: "CENTER"
                    },
                    _optionChangesOrder: ["PROJECTION", "BOUNDS", "MAX_ZOOM_FACTOR", "ZOOM_FACTOR", "CENTER", "BACKGROUND", "CONTROL_BAR", "LEGENDS", "TRACKER", "INTERACTION"],
                    _change_PROJECTION: function() {
                        this._setProjection()
                    },
                    _change_BOUNDS: function() {
                        this._setBounds()
                    },
                    _change_MAX_ZOOM_FACTOR: function() {
                        this._setMaxZoom()
                    },
                    _change_ZOOM_FACTOR: function() {
                        this._setZoom()
                    },
                    _change_CENTER: function() {
                        this._setCenter()
                    },
                    _change_BACKGROUND: function() {
                        this._setBackgroundOptions()
                    },
                    _change_LAYERS: function() {
                        this._setLayerCollectionOptions()
                    },
                    _change_CONTROL_BAR: function() {
                        this._setControlBarOptions()
                    },
                    _change_EXTRA_ELEMENTS: function() {
                        this._renderExtraElements()
                    },
                    _change_LEGENDS: function() {
                        this._setLegendsOptions()
                    },
                    _change_TRACKER: function() {
                        this._setTrackerOptions()
                    },
                    _change_INTERACTION: function() {
                        this._setupInteraction()
                    },
                    _themeDependentChanges: ["BACKGROUND", "LAYERS", "CONTROL_BAR", "LEGENDS", "TRACKER", "INTERACTION"],
                    _setProjection: function() {
                        this._projection.setEngine(this.option("projection"))
                    },
                    _setBounds: function() {
                        this._projection.setBounds(this.option("bounds"))
                    },
                    _setMaxZoom: function() {
                        this._projection.setMaxZoom(this.option("maxZoomFactor"))
                    },
                    _setZoom: function() {
                        this._projection.setZoom(this.option("zoomFactor"))
                    },
                    _setCenter: function() {
                        this._projection.setCenter(this.option("center"))
                    },
                    _setBackgroundOptions: function() {
                        this._layerCollection.setBackgroundOptions(this._getOption("background"))
                    },
                    _setLayerCollectionOptions: function() {
                        this._layerCollection.setOptions(this.option("layers"))
                    },
                    _getBoundingBoxFromDataSource() {
                        const layers = this._layerCollection.items();
                        const infinityBounds = [1 / 0, -1 / 0, -1 / 0, 1 / 0];
                        const resultBBox = layers && layers.length ? layers.reduce((sumBBox, l) => {
                            const layerData = l.getData();
                            const itemCount = layerData.count();
                            if (itemCount > 0) {
                                const rootBBox = layerData.getBBox();
                                if (rootBBox) {
                                    sumBBox = mergeBounds(sumBBox, rootBBox)
                                } else {
                                    for (let i = 0; i < itemCount; i++) {
                                        sumBBox = mergeBounds(sumBBox, layerData.getBBox(i))
                                    }
                                }
                            }
                            return sumBBox
                        }, infinityBounds) : void 0;
                        return resultBBox === infinityBounds ? void 0 : resultBBox
                    },
                    _setControlBarOptions: function() {
                        this._controlBar.setOptions(this._getOption("controlBar"))
                    },
                    _setLegendsOptions: function() {
                        this._legendsControl.setOptions(this.option("legends"))
                    },
                    _setTrackerOptions: function() {
                        this._tracker.setOptions({
                            touchEnabled: this._getOption("touchEnabled", true),
                            wheelEnabled: this._getOption("wheelEnabled", true)
                        })
                    },
                    getLayers() {
                        return this._layerCollection.items().map(l => l.proxy)
                    },
                    getLayerByIndex: function(index) {
                        const layer = this._layerCollection.byIndex(index);
                        return layer ? layer.proxy : null
                    },
                    getLayerByName: function(name) {
                        const layer = this._layerCollection.byName(name);
                        return layer ? layer.proxy : null
                    },
                    clearSelection: function(_noEvent) {
                        const layers = this._layerCollection.items();
                        let i;
                        const ii = layers.length;
                        for (i = 0; i < ii; ++i) {
                            layers[i].clearSelection(_noEvent)
                        }
                        return this
                    },
                    center: function(value) {
                        const that = this;
                        if (void 0 === value) {
                            return that._projection.getCenter()
                        } else {
                            that._projection.setCenter(value);
                            return that
                        }
                    },
                    zoomFactor: function(value) {
                        const that = this;
                        if (void 0 === value) {
                            return that._projection.getZoom()
                        } else {
                            that._projection.setZoom(value);
                            return that
                        }
                    },
                    viewport: function(value) {
                        const that = this;
                        if (void 0 === value) {
                            return that._projection.getViewport()
                        } else {
                            that._projection.setViewport(value);
                            return that
                        }
                    },
                    convertCoordinates: function(coordinates) {
                        coordinates = coordinates && coordinates.length ? coordinates : [arguments[0], arguments[1]];
                        return this.convertToGeo(coordinates[0], coordinates[1])
                    },
                    convertToGeo: function(x, y) {
                        return this._projection.fromScreenPoint([x, y])
                    },
                    convertToXY: function(longitude, latitude) {
                        return this._projection.toScreenPoint([longitude, latitude])
                    }
                });
                (0, _component_registrator.default)("dxVectorMap", dxVectorMap);
                var _default = dxVectorMap;
                exports.default = _default;
                dxVectorMap.addPlugin(_export.plugin);
                dxVectorMap.addPlugin(_title.plugin);
                dxVectorMap.addPlugin(_tooltip.plugin);
                dxVectorMap.addPlugin(_loading_indicator.plugin);
                dxVectorMap.addPlugin(_annotations.plugins.core);
                dxVectorMap.addPlugin(_annotations.plugins.vectorMap);
                module.exports = exports.default;
                module.exports.default = exports.default
            },
        56145:
            /*!********************************************************************************!*\
              !*** ./artifacts/transpiled-renovation-npm/viz/vector_map/vector_map.utils.js ***!
              \********************************************************************************/
            function(__unused_webpack_module, exports) {
                exports.generateDataKey = function() {
                    return "vectormap-data-" + nextDataKey++
                };
                let nextDataKey = 1
            },
        27353:
            /*!******************************************!*\
              !*** external "window.DevExpress.Gantt" ***!
              \******************************************/
            function(module) {
                module.exports = window.DevExpress.Gantt
            },
        9549:
            /*!******************************************!*\
              !*** external "window.DevExpress.Quill" ***!
              \******************************************/
            function(module) {
                module.exports = window.DevExpress.Quill
            },
        63472:
            /*!********************************************!*\
              !*** external "window.DevExpress.diagram" ***!
              \********************************************/
            function(module) {
                module.exports = window.DevExpress.diagram
            },
        71272:
            /*!***********************************!*\
              !*** external "window.Globalize" ***!
              \***********************************/
            function(module) {
                module.exports = window.Globalize
            },
        97405:
            /*!*******************************!*\
              !*** external "window.JSZip" ***!
              \*******************************/
            function(module) {
                module.exports = window.JSZip
            },
        42552:
            /*!*****************************************!*\
              !*** external "window.TurndownService" ***!
              \*****************************************/
            function(module) {
                module.exports = window.TurndownService
            },
        62387:
            /*!*********************************!*\
              !*** external "window.angular" ***!
              \*********************************/
            function(module) {
                module.exports = window.angular
            },
        96073:
            /*!********************************!*\
              !*** external "window.jQuery" ***!
              \********************************/
            function(module) {
                module.exports = window.jQuery
            },
        76130:
            /*!****************************!*\
              !*** external "window.ko" ***!
              \****************************/
            function(module) {
                module.exports = window.ko
            },
        4848:
            /*!**********************************!*\
              !*** external "window.showdown" ***!
              \**********************************/
            function(module) {
                module.exports = window.showdown
            }
    };
    var __webpack_module_cache__ = {};

    function __webpack_require__(moduleId) {
        var cachedModule = __webpack_module_cache__[moduleId];
        if (void 0 !== cachedModule) {
            return cachedModule.exports
        }
        var module = __webpack_module_cache__[moduleId] = {
            exports: {}
        };
        __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
        return module.exports
    }!void(__webpack_require__.d = function(exports, definition) {
        for (var key in definition) {
            if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
                Object.defineProperty(exports, key, {
                    enumerable: true,
                    get: definition[key]
                })
            }
        }
    });
    !void(__webpack_require__.o = function(obj, prop) {
        return Object.prototype.hasOwnProperty.call(obj, prop)
    });
    !void(__webpack_require__.r = function(exports) {
        if ("undefined" !== typeof Symbol && Symbol.toStringTag) {
            Object.defineProperty(exports, Symbol.toStringTag, {
                value: "Module"
            })
        }
        Object.defineProperty(exports, "__esModule", {
            value: true
        })
    });
    __webpack_require__(16354)
}();

/*!
* DevExtreme (dx.aspnet.mvc.js)
* Version: 23.2.4
* Build date: Mon Jan 29 2024
*
* Copyright (c) 2012 - 2024 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
! function(factory) {
    if ("function" === typeof define && define.amd) {
        define((function(require, exports, module) {
            module.exports = factory(require("jquery"), require("./core/templates/template_engine_registry").setTemplateEngine, require("./core/templates/template_base").renderedCallbacks, require("./core/guid"), require("./ui/validation_engine"), require("./core/utils/iterator"), require("./core/utils/dom").extractTemplateMarkup, require("./core/utils/string").encodeHtml, require("./core/utils/ajax"))
        }))
    } else {
        DevExpress.aspnet = factory(window.jQuery, DevExpress.setTemplateEngine, DevExpress.templateRendered, DevExpress.data.Guid, DevExpress.validationEngine, DevExpress.utils.iterator, DevExpress.utils.dom.extractTemplateMarkup, DevExpress.utils.string.encodeHtml, DevExpress.utils.ajax)
    }
}((function($, setTemplateEngine, templateRendered, Guid, validationEngine, iteratorUtils, extractTemplateMarkup, encodeHtml, ajax) {
    var templateCompiler = function() {
        var EXTENDED_OPEN_TAG = /[<[]%/g,
            EXTENDED_CLOSE_TAG = /%[>\]]/g;

        function acceptText(bag, text) {
            if (text) {
                bag.push("_.push(", JSON.stringify(text), ");")
            }
        }

        function acceptCode(bag, code) {
            var encode = "-" === code.charAt(0),
                value = code.substr(1),
                interpolate = "=" === code.charAt(0);
            if (encode || interpolate) {
                bag.push("_.push(");
                var expression = value;
                if (encode) {
                    expression = "encodeHtml((" + value + " !== null && " + value + " !== undefined) ? " + value + ' : "")';
                    if (/^\s*$/.test(value)) {
                        expression = "encodeHtml(" + value + ")"
                    }
                }
                bag.push(expression);
                bag.push(");")
            } else {
                bag.push(code + "\n")
            }
        }
        return function(element) {
            var text = extractTemplateMarkup(element);
            var bag = ["var _ = [];", "with(obj||{}) {"],
                chunks = text.split(EXTENDED_OPEN_TAG);
            acceptText(bag, chunks.shift());
            for (var i = 0; i < chunks.length; i++) {
                var tmp = chunks[i].split(EXTENDED_CLOSE_TAG);
                if (2 !== tmp.length) {
                    throw "Template syntax error"
                }
                acceptCode(bag, tmp[0]);
                acceptText(bag, tmp[1])
            }
            bag.push("}", "return _.join('')");
            var code = bag.join("");
            try {
                return new Function("obj", "encodeHtml", code)
            } catch (e) {
                var src = element[0];
                if ("SCRIPT" === src.tagName) {
                    var funcName = src.id.replaceAll("-", "");
                    var func = "function " + funcName + "(obj,encodeHtml){\n" + code + "\n}";
                    $.globalEval(func, src, window.document);
                    return funcName
                } else {
                    return text
                }
            }
        }
    }();
    var pendingCreateComponentRoutines = [];

    function createComponent(name, options, id, validatorOptions) {
        var selector = "#" + String(id).replace(/[^\w-]/g, "\\$&");
        pendingCreateComponentRoutines.push((function() {
            var $element = $(selector);
            if ($element.length) {
                var $component = $(selector)[name](options);
                if ($.isPlainObject(validatorOptions)) {
                    $component.dxValidator(validatorOptions)
                }
                return true
            }
            return false
        }))
    }
    templateRendered.add((function() {
        var snapshot = pendingCreateComponentRoutines.slice();
        var leftover = [];
        pendingCreateComponentRoutines = [];
        snapshot.forEach((function(func) {
            if (!func()) {
                leftover.push(func)
            }
        }));
        pendingCreateComponentRoutines = pendingCreateComponentRoutines.concat(leftover)
    }));
    return {
        createComponent: createComponent,
        renderComponent: function(name, options, id, validatorOptions) {
            id = id || "dx-" + new Guid;
            createComponent(name, options, id, validatorOptions);
            return '<div id="' + id + '"></div>'
        },
        getEditorValue: function(inputName) {
            var $widget = $("input[name='" + inputName + "']").closest(".dx-widget");
            if ($widget.length) {
                var dxComponents = $widget.data("dxComponents"),
                    widget = $widget.data(dxComponents[0]);
                if (widget) {
                    return widget.option("value")
                }
            }
        },
        setTemplateEngine: function() {
            if (setTemplateEngine) {
                setTemplateEngine({
                    compile: function(element) {
                        return templateCompiler(element)
                    },
                    render: function(template, data) {
                        if (template instanceof Function) {
                            var html = template(data, encodeHtml);
                            var dxMvcExtensionsObj = window.MVCx;
                            if (dxMvcExtensionsObj && !dxMvcExtensionsObj.isDXScriptInitializedOnLoad) {
                                html = html.replace(/(<script[^>]+)id="dxss_.+?"/g, "$1")
                            }
                            return html
                        } else if (window[template] instanceof Function) {
                            return window[template](data, encodeHtml)
                        } else if ("string" === typeof template) {
                            return template
                        } else {
                            throw "Unknown template type"
                        }
                    }
                })
            }
        },
        createValidationSummaryItems: function(validationGroup, editorNames) {
            var groupConfig, items, summary = function(validationGroup) {
                var result;
                $(".dx-validationsummary").each((function(_, element) {
                    var summary = $(element).data("dxValidationSummary");
                    if (summary && summary.option("validationGroup") === validationGroup) {
                        result = summary;
                        return false
                    }
                }));
                return result
            }(validationGroup);
            if (summary) {
                groupConfig = validationEngine.getGroupConfig(validationGroup);
                if (groupConfig) {
                    items = function(validators, editorNames) {
                        var items = [];
                        iteratorUtils.each(validators, (function(_, validator) {
                            var widget = validator.$element().data("dx-validation-target");
                            if (widget && $.inArray(widget.option("name"), editorNames) > -1) {
                                items.push({
                                    text: widget.option("validationError.message"),
                                    validator: validator
                                })
                            }
                        }));
                        return items
                    }(groupConfig.validators, editorNames);
                    items.length && summary.option("items", items)
                }
            }
        },
        sendValidationRequest: function(propertyName, propertyValue, url, method) {
            var d = $.Deferred();
            var data = {};
            data[propertyName] = propertyValue;
            ajax.sendRequest({
                url: url,
                dataType: "json",
                method: method || "GET",
                data: data
            }).then((function(response) {
                if ("string" === typeof response) {
                    d.resolve({
                        isValid: false,
                        message: response
                    })
                } else {
                    d.resolve(response)
                }
            }), (function(xhr) {
                d.reject({
                    isValid: false,
                    message: xhr.responseText
                })
            }));
            return d.promise()
        }
    }
}));

// Version: 3.0.0
// https://github.com/DevExpress/DevExtreme.AspNet.Data
// Copyright (c) Developer Express Inc.

/* global DevExpress:false, jQuery:false */

(function(factory) {
    "use strict";

    function unwrapESModule(module) {
        return module && module.__esModule && module.default ? module.default : module;
    }

    if(typeof define === "function" && define.amd) {
        define(function(require, exports, module) {
            module.exports = factory(
                unwrapESModule(require("devextreme/core/utils/ajax")),
                require("jquery").Deferred,
                require("jquery").extend,
                unwrapESModule(require("devextreme/data/custom_store")),
                unwrapESModule(require("devextreme/data/utils"))
            );
        });
    } else if (typeof module === "object" && module.exports) {
        module.exports = factory(
            unwrapESModule(require("devextreme/core/utils/ajax")),
            require("jquery").Deferred,
            require("jquery").extend,
            unwrapESModule(require("devextreme/data/custom_store")),
            unwrapESModule(require("devextreme/data/utils"))
        );
    } else {
        DevExpress.data.AspNet = factory(
            DevExpress.utils.ajax || { sendRequest: jQuery.ajax },
            jQuery.Deferred,
            jQuery.extend,
            DevExpress.data.CustomStore,
            DevExpress.data.utils
        );
    }

})(function(ajaxUtility, Deferred, extend, CustomStore, dataUtils) {
    "use strict";

    var CUSTOM_STORE_OPTIONS = [
        "onLoading", "onLoaded",
        "onInserting", "onInserted",
        "onUpdating", "onUpdated",
        "onRemoving", "onRemoved",
        "onModifying", "onModified",
        "onPush",
        "loadMode", "cacheRawData",
        "errorHandler"
    ];

    function createStoreConfig(options) {
        var keyExpr = options.key,
            loadUrl = options.loadUrl,
            loadMethod = options.loadMethod || "GET",
            loadParams = options.loadParams,
            isRawLoadMode = options.loadMode === "raw",
            updateUrl = options.updateUrl,
            insertUrl = options.insertUrl,
            deleteUrl = options.deleteUrl,
            onBeforeSend = options.onBeforeSend,
            onAjaxError = options.onAjaxError;

        function send(operation, requiresKey, ajaxSettings, customSuccessHandler) {
            var d = Deferred(),
                thenable,
                beforeSendResult;

            function sendCore() {
                ajaxUtility.sendRequest(ajaxSettings).then(
                    function(res, textStatus, xhr) {
                        if(customSuccessHandler)
                            customSuccessHandler(d, res, xhr);
                        else
                            d.resolve();
                    },
                    function(xhr, textStatus) {
                        var error = getErrorMessageFromXhr(xhr);

                        if(onAjaxError) {
                            var e = { xhr: xhr, error: error };
                            onAjaxError(e);
                            error = e.error;
                        }

                        if(error)
                            d.reject(error);
                        else
                            d.reject(xhr, textStatus);
                    }
                );
            }

            if(requiresKey && !keyExpr) {
                d.reject(new Error("Primary key is not specified (operation: '" + operation + "', url: '" + ajaxSettings.url + "')"));
            } else {
                if(operation === "load") {
                    ajaxSettings.cache = false;
                    ajaxSettings.dataType = "json";
                } else {
                    ajaxSettings.dataType = "text";
                }

                if(onBeforeSend) {
                    beforeSendResult = onBeforeSend(operation, ajaxSettings);
                    if(beforeSendResult && typeof beforeSendResult.then === "function")
                        thenable = beforeSendResult;
                }

                if(thenable)
                    thenable.then(sendCore, function(error) { d.reject(error); });
                else
                    sendCore();
            }

            return d.promise();
        }

        function filterByKey(keyValue) {
            if(!Array.isArray(keyExpr))
                return [keyExpr, keyValue];

            return keyExpr.map(function(i) {
                return [i, keyValue[i]];
            });
        }

        function loadOptionsToActionParams(options, isCountQuery) {
            var result = {};

            if(isCountQuery)
                result.isCountQuery = isCountQuery;

            if(options) {

                ["skip", "take", "requireTotalCount", "requireGroupCount"].forEach(function(i) {
                    if(options[i] !== undefined)
                        result[i] = options[i];
                });

                var normalizeSorting = dataUtils.normalizeSortingInfo,
                    group = options.group,
                    filter = options.filter,
                    select = options.select;

                if(options.sort)
                    result.sort = JSON.stringify(normalizeSorting(options.sort));

                if(group) {
                    if(!isAdvancedGrouping(group))
                        group = normalizeSorting(group);
                    result.group = JSON.stringify(group);
                }

                if(Array.isArray(filter)) {
                    filter = extend(true, [], filter);
                    stringifyDatesInFilter(filter);
                    result.filter = JSON.stringify(filter);
                }

                if(options.totalSummary)
                    result.totalSummary = JSON.stringify(options.totalSummary);

                if(options.groupSummary)
                    result.groupSummary = JSON.stringify(options.groupSummary);

                if(select) {
                    if(!Array.isArray(select))
                        select = [ select ];
                    result.select = JSON.stringify(select);
                }
            }

            extend(result, loadParams);

            return result;
        }

        function handleInsertUpdateSuccess(d, res, xhr) {
            var mime = xhr.getResponseHeader("Content-Type"),
                isJSON = mime && mime.indexOf("application/json") > -1;
            d.resolve(isJSON ? JSON.parse(res) : res);
        }

        var result = {
            key: keyExpr,
            useDefaultSearch: true,

            load: function(loadOptions) {
                return send(
                    "load",
                    false,
                    {
                        url: loadUrl,
                        method: loadMethod,
                        data: loadOptionsToActionParams(loadOptions)
                    },
                    function(d, res) {
                        processLoadResponse(d, res, function(res) {
                            return [ res.data, createLoadExtra(res) ];
                        });
                    }
                );
            },

            totalCount: !isRawLoadMode && function(loadOptions) {
                return send(
                    "load",
                    false,
                    {
                        url: loadUrl,
                        method: loadMethod,
                        data: loadOptionsToActionParams(loadOptions, true)
                    },
                    function(d, res) {
                        processLoadResponse(d, res, function(res) {
                            return [ res.totalCount ];
                        });
                    }
                );
            },

            byKey: !isRawLoadMode && function(key) {
                return send(
                    "load",
                    true,
                    {
                        url: loadUrl,
                        method: loadMethod,
                        data: loadOptionsToActionParams({ filter: filterByKey(key) })
                    },
                    function(d, res) {
                        processLoadResponse(d, res, function(res) {
                            return [ res.data[0] ];
                        });
                    }
                );
            },

            update: updateUrl && function(key, values) {
                return send(
                    "update",
                    true,
                    {
                        url: updateUrl,
                        method: options.updateMethod || "PUT",
                        data: {
                            key: serializeKey(key),
                            values: JSON.stringify(values)
                        }
                    },
                    handleInsertUpdateSuccess
                );
            },

            insert: insertUrl && function(values) {
                return send(
                    "insert",
                    true,
                    {
                        url: insertUrl,
                        method: options.insertMethod || "POST",
                        data: { values: JSON.stringify(values) }
                    },
                    handleInsertUpdateSuccess
                );
            },

            remove: deleteUrl && function(key) {
                return send("delete", true, {
                    url: deleteUrl,
                    method: options.deleteMethod || "DELETE",
                    data: { key: serializeKey(key) }
                });
            }

        };

        CUSTOM_STORE_OPTIONS.forEach(function(name) {
            var value = options[name];
            if(value !== undefined)
                result[name] = value;
        });

        return result;
    }

    function processLoadResponse(d, res, getResolveArgs) {
        res = expandLoadResponse(res);

        if(!res || typeof res !== "object")
            d.reject(new Error("Unexpected response received"));
        else
            d.resolve.apply(d, getResolveArgs(res));
    }

    function expandLoadResponse(value) {
        if(Array.isArray(value))
            return { data: value };

        if(typeof value === "number")
            return { totalCount: value };

        return value;
    }

    function createLoadExtra(res) {
        return {
            totalCount: "totalCount" in res ? res.totalCount : -1,
            groupCount: "groupCount" in res ? res.groupCount : -1,
            summary: res.summary || null
        };
    }

    function serializeKey(key) {
        if(typeof key === "object")
            return JSON.stringify(key);

        return key;
    }

    function serializeDate(date) {

        function zpad(text, len) {
            text = String(text);
            while(text.length < len)
                text = "0" + text;
            return text;
        }

        var builder = [1 + date.getMonth(), "/", date.getDate(), "/", date.getFullYear()],
            h = date.getHours(),
            m = date.getMinutes(),
            s = date.getSeconds(),
            f = date.getMilliseconds();

        if(h + m + s + f > 0)
            builder.push(" ", zpad(h, 2), ":", zpad(m, 2), ":", zpad(s, 2), ".", zpad(f, 3));

        return builder.join("");
    }

    function stringifyDatesInFilter(crit) {
        crit.forEach(function(v, k) {
            if(Array.isArray(v)) {
                stringifyDatesInFilter(v);
            } else if(Object.prototype.toString.call(v) === "[object Date]") {
                crit[k] = serializeDate(v);
            }
        });
    }

    function isAdvancedGrouping(expr) {
        if(!Array.isArray(expr))
            return false;

        for(var i = 0; i < expr.length; i++) {
            if("groupInterval" in expr[i] || "isExpanded" in expr[i])
                return true;
        }

        return false;
    }

    function getErrorMessageFromXhr(xhr) {
        var mime = xhr.getResponseHeader("Content-Type"),
            responseText = xhr.responseText,
            candidate;

        if(!mime)
            return null;

        if(mime.indexOf("text/plain") === 0)
            return responseText;

        if(mime.indexOf("application/json") === 0) {
            var jsonObj = safeParseJSON(responseText);

            if(typeof jsonObj === "string")
                return jsonObj;

            if(typeof jsonObj === "object") {
                for(var key in jsonObj) {
                    if(typeof jsonObj[key] === "string")
                        return jsonObj[key];
                }
            }

            return responseText;
        }

        if(mime.indexOf("application/problem+json") === 0) {
            var jsonObj = safeParseJSON(responseText);

            var candidate;
            if(typeof jsonObj === "object") {
                candidate = jsonObj.title;
                if(isNonEmptyString(candidate))
                    return candidate;

                candidate = jsonObj.detail;
                if(isNonEmptyString(candidate))
                    return candidate;
            }

            return responseText;
        }

        return null;
    }

    function safeParseJSON(json) {
        try {
            return JSON.parse(json);
        } catch(x) {
            return null;
        }
    }

    function isNonEmptyString(value) {
        return typeof value === "string" && value.length > 0;
    }

    return {
        createStore: function(options) {
            return new CustomStore(createStoreConfig(options));
        }
    };
});

